IOCTL_HID_GET_STRING IOCTL(hidport.h)
IOCTL_HID_GET_STRING 요청은 최상위 컬렉션에 대한 제조업체 ID, 제품 ID 또는 일련 번호를 가져옵니다. 검색된 문자열은 사람이 읽을 수 있는 형식의 NULL로 끝나는 와이드 문자열입니다.
HIDClass 디바이스에 대한 일반적인 내용은 HID 컬렉션을 참조하세요.
주 코드
입력 버퍼
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
이러한 세 상수를 ID의 실제 문자열 인덱스와 혼동하지 않는 것이 중요합니다. 이러한 상수는 해당 문자열 인덱스를 찾을 수 있는 디바이스 설명자의 오프셋을 나타냅니다.
예를 들어 HID_STRING_ID_IMANUFACTURER 제조업체 ID의 인덱스가 있는 디바이스 설명자의 위치를 나타냅니다. 이 인덱스는 제조업체 ID의 사람이 읽을 수 있는 형식이 있는 문자열 설명자에 대한 오프셋 역할을 합니다.
입력 버퍼 길이
OutputBufferLength의 크기와 Type3InputBuffer의 크기입니다.
출력 버퍼
HID 미니드라이버가 Irp-UserBuffer>의 버퍼를 요청된 문자열(NULL로 끝나는 와이드 문자열)로 채웁니다.
출력 버퍼 길이
UserBuffer의 크기입니다.
상태 블록
디바이스에 대한 I/O를 수행하는 HID 미니 드라이버는 Irp-IoStatus>의 다음 필드를 설정합니다.
- 정보는 디바이스에서 전송된 바이트 수로 설정됩니다.
- 전송이 오류 없이 완료된 경우 상태가 STATUS_SUCCESS 설정됩니다. 그렇지 않으면 적절한 NTSTATUS 오류 코드로 설정됩니다.
요구 사항
요구 사항 | 값 |
---|---|
헤더 | hidport.h(Hidport.h 포함) |