Compartilhar via


EVT_UCX_ENDPOINT_STATIC_STREAMS_ADD função de retorno de chamada (ucxendpoint.h)

A implementação do driver cliente que o UCX chama para criar fluxos estáticos.

Sintaxe

EVT_UCX_ENDPOINT_STATIC_STREAMS_ADD EvtUcxEndpointStaticStreamsAdd;

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

Parâmetros

[in] UcxEndpoint

Um identificador para um objeto UCXENDPOINT que representa o ponto de extremidade.

[in] NumberOfStreams

O número de fluxos não padrão a serem criados.

[in] UcxStaticStreamsInit

Um ponteiro para uma estrutura opaca que contém informações de inicialização. Essa estrutura é gerenciada pelo UCX.

Retornar valor

Se a operação for bem-sucedida, a função de retorno de chamada deverá retornar STATUS_SUCCESS ou outro valor status para o qual NT_SUCCESS(status) é igual a TRUE. Caso contrário, ele deverá retornar um valor status para o qual NT_SUCCESS(status) é igual a FALSE.

Comentários

O driver cliente UCX registra essa função de retorno de chamada com a UCX (extensão do controlador de host USB) chamando o método UcxEndpointCreate .

Essa função de retorno de chamada cria um objeto de fluxos estáticos UCX chamando o método UcxStaticStreamsCreate . Somente um objeto de fluxos estáticos UCX pode ser associado a um único ponto de extremidade. Em seguida, o driver chama UcxStaticStreamsSetStreamInfo uma vez por fluxo para criar uma fila para cada fluxo.

Um objeto de fluxos estáticos não está habilitado até que o UCX chame a função de retorno de chamada EVT_UCX_ENDPOINT_STATIC_STREAMS_ENABLE do driver cliente.

Exemplos

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

Requisitos

Requisito Valor
Plataforma de Destino Windows
Versão mínima do KMDF 1.0
Versão mínima do UMDF 2,0
Cabeçalho ucxendpoint.h (inclua Ucxclass.h, Ucxendpoint.h)
IRQL PASSIVE_LEVEL