pInvoke метод для GUID в C#

Я новичок в программировании на 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; 
}

4 ответа

Решение

Вам действительно нужно использовать PInvoke для генерации GUID? Почему бы не использовать метод Guid.NewGuid() из пространства имен System?

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

Слой P/Invoke переведет C Guids в C# направляющие для вас. Вы можете вызвать функцию 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}

Более интересные GUID на MSDN здесь.

Это руководство полезно для начала работы с программированием HID: ссылка. Источник доступен тоже.

Здравствуйте, Скотт Чемберлен, GUID, возвращаемый HidD_GetHidGuid, отличается от GUID системного класса. Дай мне знать

Другие вопросы по тегам