IOCTL_HID_GET_INDEXED_STRING IOCTL (hidclass.h)
IOCTL_HID_GET_INDEXED_STRING要求會從 最上層集合取得指定的內嵌字串。 擷取的字串是以人類可讀取的格式,以 NULL 終止的寬字元字串。
如需 HIDClass 裝置的一般資訊,請參閱 HID 集合。
主要程序代碼
輸入緩衝區
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) |