функция обратного вызова 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
Дескриптор объекта USB-устройства, который драйвер клиента получил при предыдущем вызове UfxDeviceCreate.
[in] unnamedParam2
Максимальный размер пакета по умолчанию, который можно отправить из этой конечной точки или в нее.
[in, out] unnamedParam3
Указатель на UFXENDPOINT_INIT непрозрачную структуру, содержащую дескриптор конечной точки, необходимый для создания объекта конечной точки.
Возвращаемое значение
None
Remarks
Драйвер клиента для контроллера узла функции регистрирует свою реализацию EVT_UFX_DEVICE_DEFAULT_ENDPOINT_ADD с расширением класса функций USB (UFX), вызывая метод UfxDeviceCreate .
Чтобы создать конечную точку, драйвер клиента должен инициализировать атрибуты очереди передачи и команд конечной точки, а затем вызвать 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 |