18

我只安装了 32 位 Windows,所以我无法自己验证这一点。

如果我理解正确的话,微软API中各个地方使用的DWORD是指原始的16位字,与当前的硬件架构无​​关?

因此,即使我最终编译并链接我的应用程序以在 64 位 Windows 中运行,看起来 32 位的 DWORD 仍将保持 32 位?或者 DWORD 会变成 128 位宽吗?

4

5 回答 5

22

唯一在 32 和 64 之间改变大小的是指针。所以 DWORD 保持 32 位宽。

有些东西不是立即明显的指针,例如 HANDLE、LPARAM、WPARAM。但是这三个改变宽度,因为它们实际上持有指针。

于 2011-02-14T08:03:11.533 回答
3

DWORD 始终为 32 位(无符号)。QWORD 始终为 64 位(无符号)。然后是 32 位和 64 位的 DWORD32 和 DWORD64。不要问我他们为什么在那里:-)

http://msdn.microsoft.com/en-us/library/cc230318(v=PROT.10).aspx

http://msdn.microsoft.com/en-us/library/cc230362(v=PROT.10).aspx

总的来说

http://msdn.microsoft.com/en-us/library/cc230309(v=PROT.10).aspx

于 2011-02-14T08:03:17.207 回答
2

哦,上帝,这是另一个合理的问题...... :)

它始终是 32 位,因为“字”在 x86 中被认为是 16 位。如果大小改变,程序就会中断。

如果您需要 native-size DWORD,请尝试DWORD_PTR.

不要问DWORD_PTR, ULONG_PTR,UINT_PTR和之间有什么区别size_t我不知道微软在发明前三个时在想什么......)

于 2011-02-14T08:00:37.020 回答
0

在 x86 处理器上,DWORD 是 32 位,即使在 64 位 Windows 上也是如此。请参阅此维基百科文章

于 2011-02-14T08:02:58.817 回答
0

我什至会比 x86 架构更进一步。并且一般来说,一个WORD可以被认为是16位。传统的层次结构是 BYTE(8 位)、WORD(16 位),因此 DWORD(如果 D 被视为双宽 WORD)将是 32 位。这不一定与特定的平台或语言有关,一个 BYTE 是 8 位,一个 WORD 是 16 位,可以追溯到旧的 8 位计算机时代,甚至在 x86 架构之前。存在

于 2011-07-08T14:31:06.780 回答