IOCTL_HID_GET_STRING IOCTL (hidport.h)

IOCTL_HID_GET_STRING要求は、 最上位のコレクションの製造元 ID、製品 ID、またはシリアル番号を取得します。 取得した文字列は、人間が判読できる形式の NULL で終わるワイド文字列です。

HIDClass デバイスの一般的な情報については、「 HID コレクション」を参照してください。

メジャー コード

IRP_MJ_DEVICE_CONTROL

[入力バッファー]

IOCTL_HID_GET_STRINGでは、2 つの入力バッファーを使用します。

IRP の I/O スタック位置の Parameters.DeviceIoControl.OutputBufferLength は、Irp-UserBuffer> のロックダウン出力バッファーのサイズ (バイト単位) を示します。 出力バッファーが NULL で終わる埋め込み文字列全体を保持するのに十分な大きさでない場合、要求は出力バッファーに何も返しません。 埋め込み文字列で使用できる最大文字数は、デバイス固有です。 USB デバイスの場合、文字列の最大長は 126 文字です (終端の NULL 文字は含まれません)。

IRP の I/O スタックの場所にある Parameters.DeviceIoControl.Type3InputBuffer には、複合値が含まれています。 2 つの最も重要なバイトには、取得する文字列の言語 ID が含まれています。 2 つの最下位バイトには、次の 3 つの定数値のいずれかが含まれます。

  • HID_STRING_ID_IMANUFACTURER
  • HID_STRING_ID_IPRODUCT
  • HID_STRING_ID_ISERIALNUMBER
HID ミニドライバーは、これら 3 つの定数のうち、入力バッファーの下位 2 バイトに存在する定数を決定し、デバイス記述子から対応する文字列インデックスを取得する必要があります。 デバイス記述子情報は、デバイスに関連付けられている最上位のコレクションのデバイス拡張機能に格納されます。

これらの 3 つの定数を ID の実際の文字列インデックスと混同しないことが重要です。 これらの定数は、対応する文字列インデックスが見つかるデバイス記述子のオフセットを表します。

たとえば、HID_STRING_ID_IMANUFACTURERは、製造元 ID のインデックスが見つかったデバイス記述子内の場所を示します。 次に、このインデックスは、人間が判読できる形式の製造元 ID がある文字列記述子へのオフセットとして機能します。

入力バッファーの長さ

OutputBufferLength のサイズと Type3InputBuffer のサイズ。

出力バッファー

HID ミニドライバーは、要求された文字列 (NULL で終わるワイド文字列) を Irp-UserBuffer> のバッファーに入力します。

出力バッファーの長さ

UserBuffer のサイズ。

ステータス ブロック

デバイスへの I/O を実行する HID ミニドライバーは、Irp-IoStatus> の次のフィールドを設定します。

  • 情報 は、デバイスから転送されたバイト数に設定されます。
  • 転送 がエラーなしで完了した場合、状態はSTATUS_SUCCESSに設定されます。 それ以外の場合は、適切な NTSTATUS エラー コードに設定されます。
この IOCTL を使用して他のドライバーを呼び出してデバイスに I/O を実行する HID ミニドライバーは、状態ブロックの [情報 ] フィールドが正しいことを確認し、[ 状態] フィールドの内容を変更しないようにする必要があります。

要件

要件
Header hidport.h (Hidport.h を含む)

こちらもご覧ください

HidD_GetIndexedString

HidD_GetManufacturerString

HidD_GetProductString

HidD_GetSerialNumberString

IOCTL_HID_GET_INDEXED_STRING

IOCTL_HID_GET_MANUFACTURER_STRING

IOCTL_HID_GET_PRODUCT_STRING

IOCTL_HID_GET_SERIALNUMBER_STRING