Share via


EVT_UFX_DEVICE_DEFAULT_ENDPOINT_ADD fonction de rappel (ufxclient.h)

Implémentation du pilote client pour créer un point de terminaison de contrôle par défaut.

Syntaxe

EVT_UFX_DEVICE_DEFAULT_ENDPOINT_ADD EvtUfxDeviceDefaultEndpointAdd;

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

Paramètres

[in] unnamedParam1

Handle d’un objet de périphérique USB que le pilote client a reçu lors d’un appel précédent à l’UfxDeviceCreate.

[in] unnamedParam2

Taille de paquet maximale par défaut qui peut être envoyée à partir de ou à ce point de terminaison.

[in, out] unnamedParam3

Pointeur vers une structure opaque UFXENDPOINT_INIT qui contient le descripteur de point de terminaison requis pour créer un objet de point de terminaison.

Valeur de retour

None

Remarques

Le pilote client du contrôleur hôte de fonction inscrit son implémentation EVT_UFX_DEVICE_DEFAULT_ENDPOINT_ADD avec l’extension de classe de fonction USB (UFX) en appelant la méthode UfxDeviceCreate .

Pour créer le point de terminaison, le pilote client est censé initialiser les attributs des files d’attente de transfert et de commande du point de terminaison, puis appeler UfxEndpointCreate pour créer le point de terminaison. Une fois le point de terminaison de contrôle par défaut créé, UFX est prêt à traiter les paquets d’installation et d’autres paquets de transfert de contrôle à partir de l’hôte.

Le pilote client indique la fin de cet événement en appelant la méthode UfxDeviceEventComplete .

Exemples


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

Configuration requise

Condition requise Valeur
Plateforme cible Windows
Version KMDF minimale 1.0
Version UMDF minimale 2.0
En-tête ufxclient.h
IRQL PASSIVE_LEVEL

Voir aussi

UfxDeviceCreate

UfxDeviceEventComplete