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 기능 보고서를 얻으려면 HID 원본 드라이버가 이 콜백 함수를 구현하고 등록해야 합니다. 드라이버는 보고서 설명자가 선언하는 경우에만 기능 보고서를 가져올 수 있습니다.

EvtVhfAsyncOperationSetFeature

선택 사항입니다. EvtVhfAsyncOperation 콜백에 대한 포인터입니다. HID 소스 드라이버는 최상위 컬렉션 과 연결된 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 원본 드라이버 작성