如何在 C# 中将 LPCWSTR 编组为字符串?

发布于 2024-09-04 03:25:59 字数 443 浏览 3 评论 0原文

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

PSSTDAPI PSRegisterPropertySchema(
    __in PCWSTR pszPath);

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

typedef __nullterminated CONST WCHAR *LPCWSTR, *PCWSTR;

PSSTDAPIHRESULT 的别名

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

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

typedef __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?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

梦魇绽荼蘼 2024-09-11 03:25:59

CharSet 值设置为 CharSet.Unicode 后,它就起作用了。

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

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

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文