Freigeben über


EVT_UCX_ENDPOINT_STATIC_STREAMS_ADD Rückruffunktion (ucxendpoint.h)

Die Implementierung des Clienttreibers, die UCX aufruft, um statische Datenströme zu erstellen.

Syntax

EVT_UCX_ENDPOINT_STATIC_STREAMS_ADD EvtUcxEndpointStaticStreamsAdd;

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

Parameter

[in] UcxEndpoint

Ein Handle zu einem UCXENDPOINT-Objekt, das den Endpunkt darstellt.

[in] NumberOfStreams

Die Anzahl der zu erstellenden nicht standardmäßigen Datenströme.

[in] UcxStaticStreamsInit

Ein Zeiger auf eine undurchsichtige Struktur, die Initialisierungsinformationen enthält. Diese Struktur wird von UCX verwaltet.

Rückgabewert

Wenn der Vorgang erfolgreich ist, muss die Rückruffunktion STATUS_SUCCESS oder einen anderen Statuswert zurückgeben, für den NT_SUCCESS(Status) WAHR ist. Andernfalls muss ein Statuswert zurückgegeben werden, für den NT_SUCCESS(Status) FALSE entspricht.

Bemerkungen

Der UCX-Clienttreiber registriert diese Rückruffunktion mit der USB-Hostcontrollererweiterung (UCX), indem die UcxEndpointCreate-Methode aufgerufen wird.

Diese Rückruffunktion erstellt ein UCX Static Streams-Objekt durch Aufrufen der UcxStaticStreamsCreate-Methode. Einem einzelnen Endpunkt kann nur ein statisches UCX-Datenstromobjekt zugeordnet werden. Anschließend ruft der Treiber UcxStaticStreamsSetStreamInfo einmal pro Datenstrom auf, um eine Warteschlange für jeden Datenstrom zu erstellen.

Ein statisches Streams-Objekt ist erst aktiviert, wenn UCX die EVT_UCX_ENDPOINT_STATIC_STREAMS_ENABLE Rückruffunktion des Clienttreibers aufruft.

Beispiele

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

Anforderungen

Anforderung Wert
Zielplattform- Fenster
Minimale KMDF-Version 1.0
Mindest-UMDF-Version 2.0
Header- ucxendpoint.h (include Ucxclass.h, Ucxendpoint.h)
IRQL- PASSIVE_LEVEL