VHF_CONFIG 구조체(vhf.h)
가상 HID 디바이스를 만들기 위해 VhfCreate 호출할 때 HID 원본 드라이버에서 제공하는 초기 구성 정보를 포함합니다.
통사론
typedef struct _VHF_CONFIG {
ULONG Size;
PVOID VhfClientContext;
ULONG OperationContextSize;
#ifdef _KERNEL_MODE
PDEVICE_OBJECT DeviceObject;
#else
HANDLE FileHandle;
#endif
USHORT VendorID;
USHORT ProductID;
USHORT VersionNumber;
GUID ContainerID;
USHORT InstanceIDLength;
_Field_size_bytes_full_(InstanceIDLength)
PWSTR InstanceID;
USHORT ReportDescriptorLength;
_Field_size_full_(ReportDescriptorLength)
PUCHAR ReportDescriptor;
PEVT_VHF_READY_FOR_NEXT_READ_REPORT EvtVhfReadyForNextReadReport;
PEVT_VHF_ASYNC_OPERATION EvtVhfAsyncOperationGetFeature;
PEVT_VHF_ASYNC_OPERATION EvtVhfAsyncOperationSetFeature;
PEVT_VHF_ASYNC_OPERATION EvtVhfAsyncOperationWriteReport;
PEVT_VHF_ASYNC_OPERATION EvtVhfAsyncOperationGetInputReport;
PEVT_VHF_CLEANUP EvtVhfCleanup;
USHORT HardwareIDsLength;
_Field_size_bytes_full_(HardwareIDsLength)
PWSTR HardwareIDs;
} VHF_CONFIG, *PVHF_CONFIG;
회원
Size
필수. VHF_CONFIG_INIT초기화된 이 구조체의 크기입니다.
VhfClientContext
선택적. VHF(Virtual HID Framework)가 해당 콜백 함수를 호출할 때 전달하는 HID 원본 드라이버 할당 메모리에 대한 불투명 포인터입니다.
OperationContextSize
선택적. EvtVhfAsyncOperation시작한 비동기 작업에 대해 VHF가 할당해야 하는 버퍼의 크기입니다. 0이 아닌 경우 VHF는 이 크기의 버퍼를 할당하고 새 작업을 시작하기 위해 EvtVhfAsyncOperation 호출할 때마다 VhfOperationContext 매개 변수의 해당 버퍼에 포인터를 전달합니다.
DeviceObject
커널 모드 드라이버에 필요합니다. HID 소스 드라이버의 DEVICE_OBJECT 구조체에 대한 포인터입니다. WdfDeviceWdmGetDeviceObject 호출하고 WdfDeviceCreate 호출에서 드라이버가 받은 WDFDEVICE 핸들을 전달하여 해당 포인터를 가져옵니다.
FileHandle
사용자 모드 드라이버에 필요합니다. WdfIoTargetWdmGetTargetFileHandle호출하여 가져온 파일 핸들입니다. WDFIOTARGET을 열려면 UMDF(사용자 모드) VHF 원본 드라이버가 OpenParams.TypeWdfIoTargetOpenLocalTargetByFile설정된 WdfIoTargetOpen 호출해야 합니다.
VendorID
선택적. 만들 가상 HID 디바이스의 공급업체 ID입니다.
ProductID
선택적. 만들 가상 HID 디바이스의 제품 ID입니다.
VersionNumber
선택적. 만들 가상 HID 디바이스의 버전 번호입니다.
ContainerID
선택적. 만들 가상 HID 디바이스의 컨테이너 ID입니다.
InstanceIDLength
InstanceID
ReportDescriptorLength
필수. ReportDescriptor가리키는 버퍼에 포함된 HID 보고서 설명자의 길이입니다.
ReportDescriptor
필수. HID 보고서 설명자를 포함하는 HID 원본 드라이버 할당 버퍼에 대한 포인터입니다.
EvtVhfReadyForNextReadReport
선택적. EvtVhfReadyForNextReadReport 콜백에 대한 포인터입니다. HID 원본 드라이버는 HID 입력 보고서를 제출하기 위한 버퍼링 정책을 처리하려는 경우 이 콜백 함수를 구현하고 등록해야 합니다. 이 콜백을 지정하면 VHF는 해당 보고서를 버퍼링하지 않습니다. HID 원본 드라이버는 VHF가 EvtVhfReadyForNextReadReport호출할 때마다 VhfReadReportSubmit호출하여 하나의 보고서를 제출해야 합니다.
EvtVhfAsyncOperationGetFeature
선택적. EvtVhfAsyncOperation 콜백에 대한 포인터입니다. HID 소스 드라이버는 HID 클래스 드라이버 쌍에서 Top-Level 컬렉션 연결된 HID 기능 보고서를 얻으려면 이 콜백 함수를 구현하고 등록해야 합니다. 드라이버는 보고서 설명자가 선언하는 경우에만 기능 보고서를 가져올 수 있습니다.
EvtVhfAsyncOperationSetFeature
선택적. EvtVhfAsyncOperation 콜백에 대한 포인터입니다. HID 소스 드라이버는 Top-Level 컬렉션 연결된 HID 기능 보고서를 HID 클래스 드라이버 쌍에 보내려면 이 콜백 함수를 구현하고 등록해야 합니다. 드라이버는 보고서 설명자가 선언하는 경우에만 기능 보고서를 설정할 수 있습니다.
EvtVhfAsyncOperationWriteReport
선택적. EvtVhfAsyncOperation 콜백에 대한 포인터입니다. HID 소스 드라이버는 HID 출력 보고서를 지원하고 HID 클래스 드라이버 쌍으로 보내려면 이 콜백 함수를 구현하고 등록해야 합니다.
EvtVhfAsyncOperationGetInputReport
선택적. EvtVhfAsyncOperation 콜백에 대한 포인터입니다. HID 원본 드라이버는 입력 보고서에 대한 주문형 쿼리를 지원하려는 경우 이 콜백 함수를 구현하고 등록해야 합니다.
EvtVhfCleanup
선택적. EvtVhfCleanup 콜백에 대한 포인터입니다. HID 원본 드라이버는 가상 HID 디바이스에 할당된 리소스를 해제하려는 경우 이 콜백 함수를 구현하고 등록할 수 있습니다.
HardwareIDsLength
HardwareIDs
요구 사항
요구 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 10 |
지원되는 최소 서버 | 지원되지 않는 항목 |
헤더 | vhf.h |
참고 항목
VHF(Virtual HID Framework) 사용하여 HID 원본 드라이버 작성