Partager via


EVT_UCX_ENDPOINT_STATIC_STREAMS_ADD fonction de rappel (ucxendpoint.h)

Implémentation du pilote client qu’UCX appelle pour créer des flux statiques.

Syntaxe

EVT_UCX_ENDPOINT_STATIC_STREAMS_ADD EvtUcxEndpointStaticStreamsAdd;

NTSTATUS EvtUcxEndpointStaticStreamsAdd(
  [in] UCXENDPOINT UcxEndpoint,
  [in] ULONG NumberOfStreams,
  [in] PUCXSSTREAMS_INIT UcxStaticStreamsInit
)
{...}

Paramètres

[in] UcxEndpoint

Handle d’un objet UCXENDPOINT qui représente le point de terminaison.

[in] NumberOfStreams

Nombre de flux non par défaut à créer.

[in] UcxStaticStreamsInit

Pointeur vers une structure opaque contenant des informations d’initialisation. Cette structure est gérée par UCX.

Valeur retournée

Si l’opération réussit, la fonction de rappel doit retourner STATUS_SUCCESS ou une autre valeur status pour laquelle NT_SUCCESS(status) est égal à TRUE. Sinon, il doit retourner une valeur status pour laquelle NT_SUCCESS(status) est false.

Remarques

Le pilote client UCX inscrit cette fonction de rappel auprès de l’extension du contrôleur hôte USB (UCX) en appelant la méthode UcxEndpointCreate .

Cette fonction de rappel crée un objet de flux statiques UCX en appelant la méthode UcxStaticStreamsCreate . Un seul objet de flux statiques UCX peut être associé à un seul point de terminaison. Le pilote appelle ensuite UcxStaticStreamsSetStreamInfo une fois par flux pour créer une file d’attente pour chaque flux.

Un objet de flux statique n’est pas activé tant qu’UCX n’appelle pas la fonction de rappel EVT_UCX_ENDPOINT_STATIC_STREAMS_ENABLE du pilote client.

Exemples

NTSTATUS
Endpoint_EvtEndpointStaticStreamsAdd(
    UCXENDPOINT         UcxEndpoint,
    ULONG               NumberOfStreams,
    PUCXSSTREAMS_INIT   UcxStaticStreamsInit
    )
{
    NTSTATUS                    status;
    WDF_OBJECT_ATTRIBUTES       wdfAttributes;
    UCXSSTREAMS                 ucxStaticStreams;
    STREAM_INFO                 streamInfo;
    ULONG                       streamId;

    TRY {

        WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(&wdfAttributes, STATIC_STREAMS_CONTEXT);

        status = UcxStaticStreamsCreate(UcxEndpoint,
                                        &UcxStaticStreamsInit,
                                        &wdfAttributes,
                                        &ucxStaticStreams);
        // … error handling …

        for (i = 0, streamId = 1; i < NumberOfStreams; i += 1, streamId += 1) {

            // … create WDF queue …

            STREAM_INFO_INIT(&streamInfo,
                             wdfQueue,
                             streamId);

            UcxStaticStreamsSetStreamInfo(ucxStaticStreams, &streamInfo);
        }

Configuration requise

Condition requise Valeur
Plateforme cible Windows
Version KMDF minimale 1.0
Version UMDF minimale 2.0
En-tête ucxendpoint.h (inclure Ucxclass.h, Ucxendpoint.h)
IRQL PASSIVE_LEVEL