【发布时间】:2017-02-21 02:32:43
【问题描述】:
我正在尝试为 Go 创建一个 Windows MMDevice API 的瘦包装器,但我遇到了关于字符串的 Windows 数据类型的问题。 根据IMMDevice::GetId method的文档,它采用以下参数:
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 值数组的指针,但它会导致无效指针错误。 在这种情况下我应该使用什么类型?谢谢。
【问题讨论】:
标签: windows go system-calls