2015-12-02 65 views
1
HRESULT WINAPI RegisterDeviceWithManagement(
    _In_ LPCWSTR ppszMDMServiceUri, 
    _In_ LPCWSTR pszUPN, 
    _In_ LPCWSTR ppzsAccessToken 
); 

我想將其轉換爲Dllimport c#簽名。 任何幫助,將不勝感激P/Invoke:將此簽名轉換爲託管c#

回答

4

這很簡單,只要它涉及:

  • HRESULT類型是無符號32位整數,所以uint。您可以使用int,因爲簽名類型更容易在託管代碼中使用。但是,由於您不可能在HRESULT上執行算術運算,因此我認爲您可以使用uint
  • WINAPI宏擴展爲stdcall調用約定,這恰好是默認的,所以我們可以省略調用約定。如果您更願意明確說明,請包括CallingConvention = CallingConvention.Stdcall
  • 這些字符串都是Unicode字符串,所以我們使用CharSet.Unicode

所以翻譯:

[DllImport(dllname, CharSet = CharSet.Unicode)] 
static extern uint RegisterDeviceWithManagement(
    string ppszMDMServiceUri, 
    string pszUPN, 
    string ppzsAccessToken 
); 

顯然,你需要填寫的DLL的名稱。

+0

非常感謝 – CodeR