Condividi tramite


EVT_UCX_ENDPOINT_STATIC_STREAMS_ADD funzione di callback (ucxendpoint.h)

Implementazione del driver client che UCX chiama per creare flussi statici.

Sintassi

EVT_UCX_ENDPOINT_STATIC_STREAMS_ADD EvtUcxEndpointStaticStreamsAdd;

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

Parametri

[in] UcxEndpoint

Handle per un oggetto UCXENDPOINT che rappresenta l'endpoint.

[in] NumberOfStreams

Numero di flussi non predefiniti da creare.

[in] UcxStaticStreamsInit

Puntatore a una struttura opaca contenente informazioni di inizializzazione. Questa struttura è gestita da UCX.

Valore restituito

Se l'operazione ha esito positivo, la funzione di callback deve restituire STATUS_SUCCESS o un altro valore di stato per cui NT_SUCCESS(status) è TRUE. In caso contrario, deve restituire un valore di stato per il quale NT_SUCCESS(status) è uguale a FALSE.

Osservazioni

Il driver client UCX registra questa funzione di callback con l'estensione del controller host USB (UCX) chiamando il metodo UcxEndpointCreate.

Questa funzione di callback crea un oggetto flussi statici UCX chiamando il metodo UcxStaticStreamsCreate. A un singolo endpoint può essere associato un solo oggetto flussi statici UCX. Il driver chiama quindi UcxStaticStreamsSetStreamInfo una volta per ogni flusso per creare una coda per ogni flusso.

Un oggetto flussi statici non è abilitato fino a quando UCX non chiama la funzione di callback EVT_UCX_ENDPOINT_STATIC_STREAMS_ENABLE del driver client.

Esempi

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

Fabbisogno

Requisito Valore
piattaforma di destinazione Finestre
versione minima di KMDF 1.0
versione minima di UMDF 2.0
intestazione ucxendpoint.h (include Ucxclass.h, Ucxendpoint.h)
IRQL PASSIVE_LEVEL