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