共用方式為


IOCTL_HID_GET_INDEXED_STRING IOCTL (hidclass.h)

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

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

主要程序代碼

IRP_MJ_DEVICE_CONTROL

輸入緩衝區

參數.DeviceIoControl.InputBufferLength IRP 的 I/O 堆棧位置中,會指出 Irp->AssociatedIrp.SystemBuffer所指向位置的輸入緩衝區位元組大小。

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

Minidriver 處理:IOCTL_HID_GET_INDEXED_STRING使用兩個輸入緩衝區。

參數.DeviceIoControl.OutputBufferLength 在 IRP 的 I/O 堆棧位置,會指出 IRP 所指向位置的輸出緩衝區大小,以位元組為單位,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 終止的寬字元字串)。

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

輸出緩衝區長度

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

狀態區塊

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

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

  • 如果傳輸未發生錯誤,狀態 會設定為STATUS_SUCCESS。 否則,它會設定為適當的NTSTATUS錯誤碼。

要求

要求 價值
標頭 hidclass.h (include 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