我有以下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