2
让我们选择以下运API调用作为一个例子:P /调用在32位和64位系统
BOOL MessageBeep(UINT uType); // from User32.dll
输入参数是UINT指定蜂鸣类型,它是既可以是32位和64位整数,这取决于我们称之为的哪个Windows版本(或我错了吗?)。
如果我想P /从C#调用信息提示音,所以我申请了的DllImport声明:
[DllImport("User32.dll")]
static extern Boolean MessageBeep(UInt32 beepType);
威尔的Windows 64下的这段代码C#的工作?
- 如果是的话,为什么可以调用一个32位整数,而期望一个64位整数(假设我对此是正确的)?
- 如果否,那么适当的平台不可知的P/Invoke声明应该如何在C#中看起来像?
为什么DWORD比特性依赖,而UINT不是?这看起来与我阅读的C数据类型文档相反。 Windows数据类型页上的MSDN: http://msdn.microsoft.com/en-us/library/aa383751(VS.85).aspx DWORD:typedef unsigned long DWORD; UINT:typedef unsigned int UINT; – user256890 2010-03-15 13:58:27
你是对的;我的意思是“手柄”。 – SLaks 2010-03-15 14:03:27
为了扩展您的答案,我在32位/ 64位安全编码上找到了以下MSDN建议: http://msdn.microsoft.com/en-us/library/aa384242(VS.85).aspx – user256890 2010-03-15 14:20:12