다음을 통해 공유


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 원본 드라이버 작성