1

私は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

4 に答える 4

2

P / Invokeレイヤーは、CガイドをC#ガイドに変換します。あなたはそのようにあなたのpinvoke関数を呼び出すことができます

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

これで、マネージドC#Guidクラスを使用して、それと比較できるようになります。

サイトpinvoke.netをチェックしてください。多くのWindowsAPI呼び出し用に事前に作成された署名があります。

于 2012-10-02T15:34:59.560 に答える
1

デバイスGUIDは、デバイスクラスインターフェイスGUIDと同じではありません。HIDデバイスクラスの場合、pInvokeは次を返す必要があります。

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

ここでmsdnのより興味深いGUID 。

このガイドは、HIDプログラミングを開始するのに役立ちます:link。ソースも利用できます。

于 2012-12-20T20:34:51.220 に答える
0

GUIDを生成するために本当にPInvokeを使用する必要がありますか?System名前空間のGuid.NewGuid()メソッドを使用しないのはなぜですか?

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

于 2012-10-02T15:33:11.993 に答える
0

こんにちはスコットチェンバレン、「HidD_GetHidGuid」によって返されるGUIDは、システムクラスGUIDとは異なります。お知らせ下さい

于 2012-10-02T18:08:55.517 に答える