代码之家  ›  专栏  ›  技术社区  ›  CARLOS LOTH

如何将lpcwstr马歇尔为C_中的字符串?

  •  5
  • CARLOS LOTH  · 技术社区  · 16 年前

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

    PSSTDAPI PSRegisterPropertySchema(
        __in PCWSTR pszPath);
    

    我看过 WinNT.h 那个 PCWSTR 是一个别名 LPCWSTR 作为

    typedef __nullterminated CONST WCHAR *LPCWSTR, *PCWSTR;
    

    以及 PSSTDAPI 是一个别名 HRESULT

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

    1 回复  |  直到 16 年前
        1
  •  8
  •   CARLOS LOTH    16 年前

    设置后 CharSet 价值到 CharSet.Unicode 它奏效了。

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

    未指定字符集,函数将返回 0x80070057 哪个是 E_INVALIDARG .