EVT_UFX_DEVICE_DEFAULT_ENDPOINT_ADD回调函数 (ufxclient.h)
用于创建默认控制终结点的客户端驱动程序实现。
语法
EVT_UFX_DEVICE_DEFAULT_ENDPOINT_ADD EvtUfxDeviceDefaultEndpointAdd;
void EvtUfxDeviceDefaultEndpointAdd(
[in] UFXDEVICE unnamedParam1,
[in] USHORT unnamedParam2,
[in, out] PUFXENDPOINT_INIT unnamedParam3
)
{...}
参数
[in] unnamedParam1
客户端驱动程序在上一次调用 UfxDeviceCreate 时收到的 USB 设备对象的句柄。
[in] unnamedParam2
可以从或发送到此终结点的默认最大数据包大小。
[in, out] unnamedParam3
指向UFXENDPOINT_INIT不透明结构的指针,该结构包含创建终结点对象所需的终结点描述符。
返回值
无
备注
函数主机控制器的客户端驱动程序通过调用 UfxDeviceCreate 方法向 UFX) (USB 函数类扩展注册其EVT_UFX_DEVICE_DEFAULT_ENDPOINT_ADD实现。
若要创建终结点,客户端驱动程序应初始化终结点的传输和命令队列的属性,然后调用 UfxEndpointCreate 来创建终结点。 创建默认控制终结点后,UFX 即可处理来自主机的设置数据包和其他控制传输数据包。
客户端驱动程序通过调用 UfxDeviceEventComplete 方法指示此事件的完成。
示例
EVT_UFX_DEVICE_DEFAULT_ENDPOINT_ADD UfxDevice_EvtDeviceDefaultEndpointAdd;
VOID
UfxDevice_EvtDeviceDefaultEndpointAdd (
_In_ UFXDEVICE UfxDevice,
_In_ USHORT MaxPacketSize,
_Inout_ PUFXENDPOINT_INIT EndpointInit
)
/*++
Routine Description:
EvtDeviceDefaultEndpointAdd handler for the UFXDEVICE object.
Creates UFXENDPOINT object corresponding to the default endpoint of the
device.
Arguments:
UfxDevice - UFXDEVICE object representing the device.
MaxPacketSize - Max packet size of the device's default endpoint.
EndpointInit - Pointer to the Opaque UFXENDPOINT_INIT object
--*/
{
NTSTATUS Status;
USB_ENDPOINT_DESCRIPTOR Descriptor;
PAGED_CODE();
TraceEntry();
Descriptor.bDescriptorType = USB_ENDPOINT_DESCRIPTOR_TYPE;
Descriptor.bEndpointAddress = 0;
Descriptor.bInterval = 0;
Descriptor.bLength = sizeof(USB_ENDPOINT_DESCRIPTOR);
Descriptor.bmAttributes = USB_ENDPOINT_TYPE_CONTROL;
Descriptor.wMaxPacketSize = MaxPacketSize;
// #### TODO: Insert code to add the endpoint.
// See code example for EVT_UFX_DEVICE_ENDPOINT_ADD ####
End:
UfxDeviceEventComplete(UfxDevice, Status);
TraceExit();
}
要求
要求 | 值 |
---|---|
目标平台 | Windows |
最低 KMDF 版本 | 1.0 |
最低 UMDF 版本 | 2.0 |
标头 | ufxclient.h |
IRQL | PASSIVE_LEVEL |