IOCTL_HID_GET_STRING IOCTL (hidport.h)

IOCTL_HID_GET_STRING要求會取得 最上層集合的製造商標識碼、產品標識碼或序號。 擷取的字串是以人類可讀取的格式,以 NULL 終止的寬字元字串。

如需 HIDClass 裝置的一般資訊,請參閱 HID 集合

主要程序代碼

IRP_MJ_DEVICE_CONTROL

輸入緩衝區

IOCTL_HID_GET_STRING會使用兩個輸入緩衝區。

IRP I/O 堆疊位置中的 Parameters.DeviceIoControl.OutputBufferLength 表示 Irp-UserBuffer> 鎖定輸出緩衝區的大小,以位元組為單位。 如果輸出緩衝區不夠大,無法容納整個NULL終止的內嵌字元串,則要求不會在輸出緩衝區中傳回任何內容。 內嵌字串中可能的最大字元數是裝置特定的。 對於USB裝置,最大字串長度為126個字元, (不包含終止NULL字元) 。

IRP 的 I/O 堆疊位置中的 Parameters.DeviceIoControl.Type3InputBuffer 包含複合值。 兩個最重要的位元組包含要擷取之字串的語言標識碼。 兩個最小有效位元組包含下列三個常數值之一:

  • HID_STRING_ID_IMANUFACTURER
  • HID_STRING_ID_IPRODUCT
  • HID_STRING_ID_ISERIALNUMBER
HID 迷你驅動程式會決定這三個常數中的哪一個存在於輸入緩衝區的較低兩個字節中,然後它必須從裝置描述項擷取對應的字元串索引。 裝置描述項資訊會儲存在與裝置相關聯之最上層集合的裝置延伸模組中。

請務必不要將這三個常數與標識符的實際字串索引混淆。 這些常數代表裝置描述元中可找到對應字串索引的位移。

例如,HID_STRING_ID_IMANUFACTURER指出找到製造商標識碼索引的裝置描述元中的位置。 接著,此索引會做為字串描述元的位移,而製造商標識碼的人類可讀取格式。

輸入緩衝區長度

OutputBufferLength 的大小和 Type3InputBuffer 的大小。

輸出緩衝區

HID 迷你驅動程式會將要求字串填入 Irp-UserBuffer> 的緩衝區, (以 NULL 終止的寬字元字串) 。

輸出緩衝區長度

UserBuffer 的大小。

狀態區塊

對裝置執行 I/O 的 HID 迷你驅動程式會設定下列 Irp-IoStatus> 字段:

  • 信息 會設定為從裝置傳輸的位元元組數目。
  • 如果 傳輸完成且沒有錯誤,狀態會設定為STATUS_SUCCESS。 否則,它會設定為適當的NTSTATUS錯誤碼。
使用這個 IOCTL 呼叫其他驅動程式的 HID 迷你驅動程式執行其裝置的 I/O,應該確保狀態區塊 的資訊欄位正確 無誤,且不會變更 [ 狀態 ] 欄位的內容。

規格需求

需求
標頭 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