64位Windows API:C / C ++“DWORD”的大小是多less?

我只安装了32位Windows,所以我无法自己validation。

如果我理解正确,那么在Microsoft API的各个地方使用的DWORD是参考原来的16位字,而与当前的硬件架构无​​关?

因此,即使当我最终编译并链接我的应用程序以在64位Windows中运行时,似乎是32位的DWORD也将保持32位? 或者将DWORD变成128位宽?

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

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

哦,上帝,这是另一个合理的问题… 🙂

它总是32位,因为在x86中“word”被认为是16位。 如果大小改变,程序将会中断。

如果您需要一个原生大小的DWORD ,请尝试DWORD_PTR

( 不要问 DWORD_PTRULONG_PTRUINT_PTRsize_t之间的区别是什么; 我不知道微软在发明前三个时候在想什么…)

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

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

在x86处理器上,即使在64位Windows上,DWORD也是32位。 看这个维基百科的文章 。

我甚至会比x86拱门更进一步。 一般来说,WORD可以被认为是16位。 层次传统上是BYTE(8位),WORD(16位),所以DWORD(如果D被认为是双宽WORD)将是32位。 这并不一定与特定的平台或语言有关,BYTE已经是8位,而WORD已经有16位可以回溯到旧的8位计算机时代,甚至在x86之前。 存在