开发者

How to marshall a LPCWSTR to String in C#?

I'm trying to define a P/Invoke signature for the following method (defined in propsys.h)

PSSTDAPI PSRegisterPropertySchema(
    __in PCWSTR pszPath);

I've seen on the WinNT.h that PCWSTR is an alias to LPCWSTR as

type开发者_运维问答def __nullterminated CONST WCHAR *LPCWSTR, *PCWSTR;

And the PSSTDAPI is an alias for HRESULT

So how should be the P/Invoke signature for the PSRegisterPropertySchema method?


After set the CharSet value to CharSet.Unicode it worked.

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

Without specifing the CharSet the function was returning 0x80070057 which is E_INVALIDARG.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜