如何在C#中将LPCWSTR编组为String?

时间:2010-06-03 20:47:50

标签: c# winapi pinvoke

我正在尝试为以下方法定义P / Invoke签名(在propsys.h中定义)

PSSTDAPI PSRegisterPropertySchema(
    __in PCWSTR pszPath);

我在WinNT.h上看到PCWSTRLPCWSTR的别名

typedef __nullterminated CONST WCHAR *LPCWSTR, *PCWSTR;

PSSTDAPIHRESULT

的别名

那么PSRegisterPropertySchema方法的P / Invoke签名应该如何?

1 个答案:

答案 0 :(得分:8)

CharSet值设置为CharSet.Unicode后,确实有效。

[DllImport("Propsys.dll", CharSet=CharSet.Unicode)]
static internal extern int PSRegisterPropertySchema(String pszPath);

如果没有指定CharSet,则函数返回0x80070057 E_INVALIDARG