EVT_UCX_ENDPOINT_STATIC_STREAMS_ADD Rückruffunktion (ucxendpoint.h)

Die Implementierung des Clienttreibers, die UCX aufruft, um statische Streams 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 für ein UCXENDPOINT-Objekt, das den Endpunkt darstellt.

[in] NumberOfStreams

Die Anzahl der nicht standardmäßig zu erstellenden Streams.

[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 status Wert zurückgeben, für den NT_SUCCESS(status) true entspricht. Andernfalls muss ein status Wert zurückgegeben werden, für den NT_SUCCESS(status) false entspricht.

Hinweise

Der UCX-Clienttreiber registriert diese Rückruffunktion bei der USB-Hostcontrollererweiterung (UCX), indem er die UcxEndpointCreate-Methode aufruft .

Diese Rückruffunktion erstellt ein statisches UCX-Streams-Objekt, indem die UcxStaticStreamsCreate-Methode aufgerufen wird . Nur ein statisches UCX-Streams-Objekt kann einem einzelnen Endpunkt zugeordnet werden. Der Treiber ruft dann UcxStaticStreamsSetStreamInfo einmal pro Stream auf, um eine Warteschlange für jeden Stream zu erstellen.

Ein statisches Streamsobjekt wird 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 Windows
KMDF-Mindestversion 1.0
UMDF-Mindestversion 2.0
Kopfzeile ucxendpoint.h (include Ucxclass.h, Ucxendpoint.h)
IRQL PASSIVE_LEVEL