IOCTL_HID_GET_COLLECTION_DESCRIPTOR IOCTL(hidclass.h)

IOCTL_HID_GET_COLLECTION_DESCRIPTOR 요청은 디바이스 초기화 중에 실제 디바이스의 보고서 설명자에서 추출된 HID 클래스 드라이버가 최상위 컬렉션의 준비 데이터를 가져옵니다.

HIDClass 디바이스에 대한 일반적인 내용은 HID 컬렉션을 참조하세요.

주 코드

IRP_MJ_DEVICE_CONTROL

입력 버퍼

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 포함)

추가 정보

HidD_FreePreparsedData

HidD_GetPreparsedData