包含 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 源驱动程序应调用 WdfIoTargetOpen,OpenParams.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 源驱动程序