トラブルhid.dll APIを使用して、HIDデバイスからのメーカー文字列を読み込みます

StackOverflow https://stackoverflow.com/questions/2329572

  •  22-09-2019
  •  | 
  •  

質問

私は、HIDデバイスと通信することができます.NETアプリケーションを書いています。私は取得して、デバイスのファームウェアから文字列を製造工業解析できるようにしたいです。私はhid.dllにHidD_GetManufacturerStringと呼ばれる方法があることを知っています。次のようにMSDNには、この方法を説明します:

 BOOLEAN   HidD_GetManufacturerString(
     IN HANDLE  HidDeviceObject,
     OUT PVOID  Buffer,
     IN ULONG  BufferLength
     );

私はこのように、この方法のルックスのために使用していたラッパー...

[DllImport("hid.dll", SetLastError = true)]
        internal static extern Boolean HidD_GetManufacturerString(
            SafeFileHandle hFile,
            Byte[] SerialNumber,
            Int32 SerianNumberLength);

私は二つのことを知っておく必要があります。まず、どのように私はへのserialNumberバッファを初期化するためにどのようなサイズを知っていますか?私はHidD_GetAttributes()を使用して、デバイスの属性からの最大の特徴レポートの長さを取得することができますので、私はバッファを作るためにどのようなサイズGetFeatureReport Iのノウハウのような操作を行うと、残念ながら、この方法は私などメーカー文字列、シリアル番号文字列、製品名文字列の長さのいずれかの情報を与えるものではありません。

私の2番目の質問は、文字列に返されたバイト配列を解析するための正しい方法は何ですか?私が使用してみました。

System.Text.Encoding.ASCII.GetString(MfrBuffer)

が、私は奇妙な結果を得ます。 Dellがmanufacturered製品のように私の文字列に見えるこの「D \ 0E \ 0リットル\ 0リットル\ 0 \ 0 \ 0 \ 0 \ 0 ...」「\ 0」は、私が通過したことをバッファの最後に進みます。私は、「デル」にこれを解析する方法を教えてください。

役に立ちましたか?

解決

scroll top