簡體   English   中英

C#中GUID的pInvoke方法

[英]pInvoke method for GUID in C#

我是C#和USB編程的新手。 我有幾個問題。 我無法與它通信。這就是我如何聲明GUID獲取GUID。 我正在創建一個新的GUID實例,然后調用HidGuid來獲取Guid.Below是它的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 Guids轉換為C#guids。 您可以像這樣調用您的pinvoke功能

[DllImport("hid.dll", EntryPoint="HidD_GetHidGuid", SetLastError=true)]
static extern void HidD_GetHidGuid(out Guid hidGuid);

然后,您將能夠使用托管的C#Guid類並與之進行比較。

看看網站pinvoke.net ,他們有許多Windows API調用的預制簽名。

設備GUID與設備類接口GUID不同。 對於HID設備類,pInvoke應返回以下內容:

GUID_DEVINTERFACE_HID {4D1E55B2-F16F-11CF-88CB-001111000030}

MSDN上更有趣的GUID的位置

本指南適用於HID編程入門: 鏈接 來源也可用。

你真的需要使用PInvoke來生成GUID嗎? 為什么不使用System命名空間中的Guid.NewGuid()方法?

http://msdn.microsoft.com/en-us/library/system.guid.newguid.aspx

你好Scott Chamberlain,GUID由“HidD_GetHidGuid”返回,它與系統類GUID不同。 讓我知道

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM