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

P/Invoke:将此签名转换为托管c#,c#,pinvoke,unmanaged,managed,C#,Pinvoke,Unmanaged,Managed,我想把它转换成Dllimport c#签名。 任何帮助都将不胜感激这很简单: HRESULT类型是一个无符号32位整数,因此uint。您可以合理地使用int,因为在托管代码中使用有符号类型更容易。但是,由于您不太可能在HRESULT上执行算术,因此我认为您也可以使用uint WINAPI宏扩展为stdcall调用约定,这恰好是默认的,因此我们可以省略调用约定。如果您喜欢显式,请包括CallingConvention=CallingConvention.Stdcall 字符串都是Unicode字

我想把它转换成Dllimport c#签名。
任何帮助都将不胜感激

这很简单:

  • HRESULT
    类型是一个无符号32位整数,因此
    uint
    。您可以合理地使用
    int
    ,因为在托管代码中使用有符号类型更容易。但是,由于您不太可能在
    HRESULT
    上执行算术,因此我认为您也可以使用
    uint
  • WINAPI
    宏扩展为
    stdcall
    调用约定,这恰好是默认的,因此我们可以省略调用约定。如果您喜欢显式,请包括
    CallingConvention=CallingConvention.Stdcall
  • 字符串都是Unicode字符串,因此我们使用
    CharSet.Unicode
因此,翻译如下:

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

显然,您需要填写DLL的名称。

这很简单:

  • HRESULT
    类型是一个无符号32位整数,因此
    uint
    。您可以合理地使用
    int
    ,因为在托管代码中使用有符号类型更容易。但是,由于您不太可能在
    HRESULT
    上执行算术,因此我认为您也可以使用
    uint
  • WINAPI
    宏扩展为
    stdcall
    调用约定,这恰好是默认的,因此我们可以省略调用约定。如果您喜欢显式,请包括
    CallingConvention=CallingConvention.Stdcall
  • 字符串都是Unicode字符串,因此我们使用
    CharSet.Unicode
因此,翻译如下:

HRESULT WINAPI RegisterDeviceWithManagement(
  _In_ LPCWSTR ppszMDMServiceUri,
  _In_ LPCWSTR pszUPN,
  _In_ LPCWSTR ppzsAccessToken
);
显然,您需要填写DLL的名称