本帖最后由 一只耳朵怪 于 2018-6-1 11:17 编辑
最近在研究USB HID协议。hid.dll文件里有一个函数,可以获取到一个GUID,函数声明如下:
VOID HidD_GetHidGuid(OUT LPGUID HidGuid);
其实就是返回一个字符串。
下面是一个C#的小例子
class Program
{
[DllImport("hid.dll")]
private static extern void HidD_GetHidGuid(ref Guid HidGuid);
static void Main(string[] args)
{
//产生一个新的GUID并输出
Console.WriteLine(System.Guid.NewGuid());
Guid HIDGUID = Guid.Empty;
HidD_GetHidGuid(ref HIDGUID);
Console.WriteLine(HIDGUID);
Console.ReadKey();
}
}
返回是:
8603E4CD-18D3-4D4A-8403-F4545C473374
4D1E55B2-F16F-11CF-88CB-001111000030
但是我在labview中用调用库函数节点去试这个函数时,传递ref Guid HidGuid时我直接配置成C字符串指针,可以获取到一个返回的字符串:0xB255 1E4D 6FF1 CF11 88CB
很明显和C#得到的GUID完全不一致。应该是ref参数传递的问题。
但是我试了其他的参数配置,运行后都会导致labview崩溃。
不知道这里传递ref引用该如何配置?
更多回帖