EVT_UFX_DEVICE_DEFAULT_ENDPOINT_ADD función de devolución de llamada (ufxclient.h)

Implementación del controlador de cliente para crear un punto de conexión de control predeterminado.

Sintaxis

EVT_UFX_DEVICE_DEFAULT_ENDPOINT_ADD EvtUfxDeviceDefaultEndpointAdd;

void EvtUfxDeviceDefaultEndpointAdd(
  [in]      UFXDEVICE unnamedParam1,
  [in]      USHORT unnamedParam2,
  [in, out] PUFXENDPOINT_INIT unnamedParam3
)
{...}

Parámetros

[in] unnamedParam1

Identificador de un objeto de dispositivo USB que el controlador cliente recibió en una llamada anterior a UfxDeviceCreate.

[in] unnamedParam2

Tamaño de paquete máximo predeterminado que se puede enviar desde o a este punto de conexión.

[in, out] unnamedParam3

Puntero a una estructura UFXENDPOINT_INIT opaca que contiene el descriptor de punto de conexión necesario para crear un objeto de punto de conexión.

Valor devuelto

None

Observaciones

El controlador de cliente para el controlador host de función registra su implementación de EVT_UFX_DEVICE_DEFAULT_ENDPOINT_ADD con la extensión de clase de función USB (UFX) llamando al método UfxDeviceCreate .

Para crear el punto de conexión, se espera que el controlador de cliente inicialice los atributos de las colas de comandos y transferencia del punto de conexión y, a continuación, llame a UfxEndpointCreate para crear el punto de conexión. Una vez creado el punto de conexión de control predeterminado, UFX está listo para procesar paquetes de instalación y otros paquetes de transferencia de control desde el host.

El controlador cliente indica la finalización de este evento llamando al método UfxDeviceEventComplete .

Ejemplos


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();
}

Requisitos

Requisito Value
Plataforma de destino Windows
Versión mínima de KMDF 1.0
Versión mínima de UMDF 2.0
Encabezado ufxclient.h
IRQL PASSIVE_LEVEL

Consulte también

UfxDeviceCreate

UfxDeviceEventComplete