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