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 a 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(stato) equivale a TRUE. In caso contrario, deve restituire un valore di stato per il quale NT_SUCCESS(stato) equivale a FALSE.

Commenti

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 . È possibile associare un solo oggetto di flussi statici UCX a un singolo endpoint. Il driver chiama quindi UcxStaticStreamsSetStreamInfo una volta per ogni flusso per creare una coda per ogni flusso.

Un oggetto stream statico non è abilitato finché UCX chiama la funzione di callback del driver client EVT_UCX_ENDPOINT_STATIC_STREAMS_ENABLE .

Esempio

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

Requisiti

Requisito Valore
Piattaforma di destinazione Windows
Versione KMDF minima 1,0
Versione UMDF minima 2,0
Intestazione ucxendpoint.h (includere Ucxclass.h, Ucxendpoint.h)
IRQL PASSIVE_LEVEL