IOCTL_HID_GET_COLLECTION_DESCRIPTOR IOCTL(hidclass.h)
IOCTL_HID_GET_COLLECTION_DESCRIPTOR 요청은 디바이스 초기화 중에 실제 디바이스의 보고서 설명자에서 추출된 HID 클래스 드라이버가 최상위 컬렉션의 준비 데이터를 가져옵니다.
HIDClass 디바이스에 대한 일반적인 내용은 HID 컬렉션을 참조하세요.
주 코드
입력 버퍼
IRP의 I/O 스택 위치에 있는 Parameters.DeviceIoControl.OutputBufferLength는 Irp-UserBuffer에서 지정한 출력 버퍼의 크기(바이트)>를 나타냅니다.
출력 버퍼
Irp->UserBuffer 는 HID 클래스 드라이버가 가변 길이 _HIDP_PREPARSED_DATA 구조를 반환하는 데 사용하는 요청자가 할당한 버퍼에 대한 PVOID 포인터입니다. 이 버퍼는 페이지가 없는 풀에서 할당해야 합니다.
출력 버퍼 길이
준비한 데이터 구조의 크기(바이트)는 IOCTL_HID_GET_COLLECTION_INFORMATION 사용하여 가져옵니다.
상태 블록
HID 클래스 드라이버는 Irp-IoStatus>의 다음 필드를 설정합니다.
- 정보는 준비 데이터의 크기(바이트)로 설정됩니다.
- 준비한 데이터가 오류 없이 검색된 경우 상태는 STATUS_SUCCESS 설정됩니다. 그렇지 않으면 적절한 NTSTATUS 오류 코드로 설정됩니다. 요청자가 제공한 출력 버퍼가 준비한 데이터를 저장할 만큼 크지 않으면 상태 STATUS_INVALID_BUFFER_SIZE 설정됩니다.
설명
_HIDP_PREPARSED_DATA 구조에는 최상위 컬렉션의준비 데이터가 포함됩니다.
typedef struct _HIDP_PREPARSED_DATA * PHIDP_PREPARSED_DATA;
사용자 모드 애플리케이션은 HidD_GetPreparsedData 호출하여 가변 길이 _HIDP_PREPARSED_DATA 구조로 최상위 컬렉션의 준비 데이터를 가져옵니다.
커널 모드 드라이버는 IOCTL_HID_GET_COLLECTION_DESCRIPTOR 요청을 사용하여 최상위 컬렉션의 준비 데이터에 대한 포인터를 가져옵니다.
_HIDP_PREPARSED_DATA 구조체의 내부 구조는 내부 시스템 사용을 위해 예약되어 있습니다.
요구 사항
요구 사항 | 값 |
---|---|
헤더 | hidclass.h(Hidclass.h 포함) |