c# - C# 中 GUID 的 pInvoke 方法

标签 c# pinvoke guid unsafe

我是 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/

相关文章:

mysql - 从文本/url 快速生成数字 id "SELECT"

c# - Guid 的默认值是多少?

c# - 如何将类元数据转换为 JSON 字符串

c# - 对字节数组中的每个元素求和

c# - 在 Visual Studio 中查看 LINQ 执行的 SQL 的方法?

f# p/invoke on GetClientRect with pointers works 但不适用于 OutAttribute

.net - .NET native GUID转换

c# - 用于验证数学方程式的正则表达式

c# - 在 IE 进程中查找 javascript 警告窗口

c# - 如何使用从托管代码通过 PInvoke 调用的 Win32 函数更改系统的音量