我有以下C++方法的签名。最后一个参数应该以2字节的unicode字符串返回设备名称。如何使用PInvoke将Unicode字符串从C++转换为C#
int GetDeviceIdentifier(DWORD deviceIndex, WCHAR** ppDeviceName);
我用以下签名包装到C#中。它的作品,但我得到的字符串很奇怪。难道我做错了什么?
[DllImportAttribute("StclDevices.dll", EntryPoint = "GetDeviceIdentifier", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode)]
public static extern int GetDeviceIdentifier(uint deviceIndex, StringBuilder ppDeviceName);
现在我知道为什么我不喜欢C++。所有这些指针......感谢您的帮助。这工作绝对好。我使用了容量为128的StringBuilder,之前导致了错误的结果。 – Matthias