共用方式為


IOCTL_HID_GET_INDEXED_STRING IOCTL (hidclass.h)

IOCTL_HID_GET_INDEXED_STRING要求會從 最上層集合取得指定的內嵌字串。 擷取的字串是以人類可讀取的格式,以 NULL 終止的寬字元字串。

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

主要程序代碼

IRP_MJ_DEVICE_CONTROL

輸入緩衝區

IRP I/O 堆棧位置中的 Parameters.DeviceIoControl.InputBufferLength 表示 Irp-AssociatedIrp.SystemBuffer> 所指向位置的輸入緩衝區大小以位元組為單位。

IRP I/O 堆疊位置中的 Parameters.DeviceIoControl.OutputBufferLength 表示輸出緩衝區的大小,以位元組為單位。 如果輸出緩衝區不夠大,無法容納整個NULL終止的內嵌字元串,則要求不會在輸出緩衝區中傳回任何內容。

迷你驅動程序處理:IOCTL_HID_GET_INDEXED_STRING使用兩個輸入緩衝區。

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

Parameters.DeviceIoControl.Type3InputBuffer 包含 INT 值,描述要擷取的字串。 INT 值最重要的兩個字節包含語言標識碼 (例如,值為 1033 表示英文) 。 INT 值最不重要的兩個字節包含字串索引。

輸入緩衝區長度

Parameters.DeviceIoControl.InputBufferLength 必須是 >= sizeof (ULONG) ,而且它應該包含要擷取的字串索引。

針對 Parameters.DeviceIoControl.OutputBufferLength,內嵌字串中可能的最大字元數是裝置特定的。 對於USB裝置,最大字串長度為126個字元, (不包含終止NULL字元) 。

輸出緩衝區

Irp->MdlAddress 指向緩衝區,以接收擷取的字串, (以 NULL 終止的寬字元字串) 。

迷你驅動程序處理Irp-MdlAddress> 指向緩衝區,以接收擷取的字串, (以 NULL 終止的寬字元字串) 。 請注意,不同於 HID 迷你驅動程式的大部分裝置控制 IRP,此 IRP 不會使用METHOD_NEITHER緩衝。 特別是,它必須與 Irp-UserBuffer> 識別其輸出緩衝區的IOCTL_HID_GET_STRING區別。

輸出緩衝區長度

擷取字串的長度 (以 NULL 結尾的寬字元字串) 。 提供的緩衝區必須是 <= 4093 個字節, (2^12 – 3) 。

狀態區塊

HID 類別驅動程式會設定下列 Irp-IoStatus> 字段:

  • 信息 會設定為從裝置傳輸的位元元組數目。

  • 如果 傳輸完成且沒有錯誤,狀態會設定為STATUS_SUCCESS。 否則,它會設定為適當的NTSTATUS錯誤碼。

規格需求

需求
標頭 hidclass.h (包含 Hidclass.h)

另請參閱

HidD_GetIndexedString

HidD_GetManufacturerString

HidD_GetPhysicalDescriptor

HidD_GetProductString

HidD_GetSerialNumberString

IOCTL_HID_GET_MANUFACTURER_STRING

IOCTL_HID_GET_PRODUCT_STRING

IOCTL_HID_GET_SERIALNUMBER_STRING