Поделиться через


функция обратного вызова 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, содержащую дескриптор конечной точки, необходимый для создания объекта конечной точки.

Возвращаемое значение

Никакой

Замечания

Драйвер клиента для контроллера узла функции регистрирует свою реализацию 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();
}

Требования

Требование Ценность
целевая платформа Виндоус
минимальная версия KMDF 1.0
минимальная версия UMDF 2.0
заголовка ufxclient.h
IRQL PASSIVE_LEVEL

См. также

UfxDeviceCreate

UfxDeviceEventComplete