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

自选。 指向虚拟 HID 框架(VHF)在调用这些回调函数时传递的 HID 源驱动程序分配内存的不透明指针。

OperationContextSize

自选。 VHF 必须为 EvtVhfAsyncOperation启动的异步作分配的缓冲区的大小。 如果为非零,则 VHF 会分配此大小的缓冲区,并在每次调用 EvtVhfAsyncOperation 时,将指针传递给 VhfOperationContext 中的该缓冲区以启动新作。

DeviceObject

内核模式驱动程序是必需的。 指向 HID 源驱动程序 DEVICE_OBJECT 结构的指针。 通过调用 WdfDeviceWdmGetDeviceObject 并传递驱动程序在 WdfDeviceCreate 调用中收到的 WDFDEVICE 句柄来获取该指针。

FileHandle

用户模式驱动程序是必需的。 通过调用 WdfIoTargetWdmGetTargetFileHandle获取的文件句柄。 若要打开 WDFIOTARGET,用户模式 (UMDF) VHF 源驱动程序应调用 WdfIoTargetOpenOpenParams.Type 设置为 WdfIoTargetOpenLocalTargetByFile

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 源驱动程序应通过调用 VhfReadReportSubmit提交一个报告,每次 VHF 调用 EvtVhfReadyForNextReadReport

EvtVhfAsyncOperationGetFeature

自选。 指向 EvtVhfAsyncOperation 回调的指针。 如果 HID 源驱动程序想要从 HID 类驱动程序对获取与 Top-Level 集合关联的 HID 功能报告,则 HID 源驱动程序必须实现并注册此回调函数。 仅当报表描述符声明功能报告时,驱动程序才能获取功能报告。

EvtVhfAsyncOperationSetFeature

自选。 指向 EvtVhfAsyncOperation 回调的指针。 如果 HID 源驱动程序想要向 HID 类驱动程序对发送与 Top-Level 集合关联的 HID 功能报告,则必须实现并注册此回调函数。 仅当报表描述符声明功能报告时,驱动程序才能设置功能报告。

EvtVhfAsyncOperationWriteReport

自选。 指向 EvtVhfAsyncOperation 回调的指针。 如果 HID 源驱动程序想要支持 HID 输出报告并将其发送到 HID 类驱动程序对,则必须实现并注册此回调函数。

EvtVhfAsyncOperationGetInputReport

自选。 指向 EvtVhfAsyncOperation 回调的指针。 如果 HID 源驱动程序想要支持输入报表的按需查询,则必须实现并注册此回调函数。

EvtVhfCleanup

自选。 指向 EvtVhfCleanup 回调的指针。 如果 HID 源驱动程序想要释放虚拟 HID 设备的已分配资源,则可以实现并注册此回调函数。

HardwareIDsLength

HardwareIDs

要求

要求 价值
最低支持的客户端 Windows 10
支持的最低服务器 不支持
标头 vhf.h

另请参阅

使用虚拟 HID 框架(VHF) 编写 HID 源驱动程序