我是 C# 和 USB 编程新手。我有几个问题。我无法与它通信。这是我声明 GUID 以获取 GUID 的方式。我正在创建一个新的 GUID 实例,然后调用 HidGuid 来获取 Guid。下面是它的 pInvoke 方法。但是如何验证我获得的 GUID 是否有效/正确。是否有任何方法可以将此结构转换为字符串。如果是这样,怎么办。让我知道。谢谢。
private GUID MYguid = new GUID();
HidGuid();
public unsafe void CT_HidGuid()
// 1.Data1 = 1293833650
//Data2 = 61807
//Data3 = 4559
//data4 = 136 203 0 17 17 0 0 48
// hex values 4d1e55b2 f16f 11cf 7be03c74ac80
{
HidD_GetHidGuid(ref MYguid);
}
[DllImport("hid.dll", SetLastError = true)]
static extern unsafe void HidD_GetHidGuid(ref GUID lpHidGuid);
public unsafe struct GUID
{
public int Data1;
public System.UInt16 Data2;.
public System.UInt16 Data3;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
public byte[] data4;
}
最佳答案
P/Invoke 层将为您将 C Guid 转换为 C# guid。你可以像这样调用你的 pinvoke 函数
[DllImport("hid.dll", EntryPoint="HidD_GetHidGuid", SetLastError=true)]
static extern void HidD_GetHidGuid(out Guid hidGuid);
然后您将能够仅使用托管 C# Guid class并与之比较。
查看网站 pinvoke.net ,他们为许多 Windows API 调用提供了预制签名。
关于c# - C# 中 GUID 的 pInvoke 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12693429/