我正在嘗試爲Go的Windows MMDevice API創建一個薄包裝,並且我遇到了有關Windows數據類型字符串的問題。 據IMMDevice::GetId method的文檔,需要以下參數:syscall - 如何在Go中使用LPWSTR?
HRESULT GetId(
[out] LPWSTR *ppstrId
);
這裏是對應於以上方法我Go代碼。 (github.com/moutend/ywca/immdevice_windows.go:13)
func getId(mmd *IMMDevice, strId *uint16) (err error) {
hr, _, _ := syscall.Syscall(
mmd.VTable().GetId,
2,
uintptr(unsafe.Pointer(mmd)),
uintptr(unsafe.Pointer(strId)),
0)
// ...
}
我明白的是,LPWSTR是指針UINT16值的陣列,但它會導致無效的指針誤差。 在這種情況下我應該使用什麼類型?謝謝。
混亂的原因是我對指針值的誤解。謝謝你的回答。 – moutend