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 системного класса. Дай мне знать