다음을 통해 공유


IOCTL_HID_GET_STRING IOCTL(hidport.h)

IOCTL_HID_GET_STRING 요청은 최상위 컬렉션에 대한 제조업체 ID, 제품 ID 또는 일련 번호를 가져옵니다. 검색된 문자열은 사람이 읽을 수 있는 형식의 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에는 복합 값이 포함됩니다. 가장 중요한 두 바이트에는 검색할 문자열의 언어 ID가 포함됩니다. 가장 중요하지 않은 두 바이트는 다음 세 가지 상수 값 중 하나를 포함합니다.

  • HID_STRING_ID_IMANUFACTURER
  • HID_STRING_ID_IPRODUCT
  • HID_STRING_ID_ISERIALNUMBER
HID 미니드라이버에서는 이러한 세 상수 중 입력 버퍼의 하위 2바이트에 있는 상수를 확인한 다음 디바이스 설명자에서 해당 문자열 인덱스를 검색해야 합니다. 디바이스 설명자 정보는 디바이스와 연결된 최상위 컬렉션의 디바이스 확장에 저장됩니다.

이러한 세 상수를 ID의 실제 문자열 인덱스와 혼동하지 않는 것이 중요합니다. 이러한 상수는 해당 문자열 인덱스를 찾을 수 있는 디바이스 설명자의 오프셋을 나타냅니다.

예를 들어 HID_STRING_ID_IMANUFACTURER 제조업체 ID의 인덱스가 있는 디바이스 설명자의 위치를 나타냅니다. 이 인덱스는 제조업체 ID의 사람이 읽을 수 있는 형식이 있는 문자열 설명자에 대한 오프셋 역할을 합니다.

입력 버퍼 길이

OutputBufferLength의 크기와 Type3InputBuffer의 크기입니다.

출력 버퍼

HID 미니드라이버가 Irp-UserBuffer>의 버퍼를 요청된 문자열(NULL로 끝나는 와이드 문자열)로 채웁니다.

출력 버퍼 길이

UserBuffer의 크기입니다.

상태 블록

디바이스에 대한 I/O를 수행하는 HID 미니 드라이버는 Irp-IoStatus>의 다음 필드를 설정합니다.

  • 정보는 디바이스에서 전송된 바이트 수로 설정됩니다.
  • 전송이 오류 없이 완료된 경우 상태가 STATUS_SUCCESS 설정됩니다. 그렇지 않으면 적절한 NTSTATUS 오류 코드로 설정됩니다.
I/O를 디바이스로 수행하기 위해 이 IOCTL을 사용하여 다른 드라이버를 호출하는 HID 미니드라이버에서는 상태 블록의 정보 필드가 올바른지 확인하고 상태 필드의 내용을 변경하지 않아야 합니다.

요구 사항

요구 사항
헤더 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