P/Invoke : 将此签名转换为托管 C#

P/Invoke : converting this signature to Managed c#

HRESULT WINAPI RegisterDeviceWithManagement(
  _In_ LPCWSTR ppszMDMServiceUri,
  _In_ LPCWSTR pszUPN,
  _In_ LPCWSTR ppzsAccessToken
);

我想将其转换为 Dllimport c# 签名。 任何帮助将不胜感激

这很简单:

  • 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的名字