Share via


Função AcxRtStreamCreate (acxstreams.h)

AcxRtStreamCreate cria um fluxo de áudio ACX RTStream que é usado pelo sistema operacional para transmitir dados de áudio.

Sintaxe

NTSTATUS AcxRtStreamCreate(
  WDFDEVICE              Device,
  ACXCIRCUIT             Circuit,
  PWDF_OBJECT_ATTRIBUTES Attributes,
  PACXSTREAM_INIT        *Config,
  ACXSTREAM              *Stream
);

Parâmetros

Device

Um objeto WDFDEVICE (descrito em Resumo de Objetos de Estrutura) associado ao ACXCIRCUIT especificado e seu fluxo.

Circuit

O ACXCIRCUIT ao qual esse fluxo será associado.

Attributes

Atributos adicionais definidos usando um WDF_OBJECT_ATTRIBUTES que são usados para definir os valores de vários objetos: limpar e destruir retornos de chamada, tipo de contexto e especificar seu objeto pai.

Config

Uma estrutura ACXSTREAM_INIT que define os parâmetros de inicialização do fluxo. Para obter mais informações sobre objetos ACX, consulte ACX – Resumo de objetos ACX.

Stream

Um ponteiro para um local que recebe um identificador para o novo objeto ACXSTREAM.

Um objeto ACXSTREAM representa um fluxo de áudio criado por um circuito. Para obter mais informações, consulte ACX – Resumo de objetos ACX.

Retornar valor

Retorna STATUS_SUCCESS se a chamada foi bem-sucedida. Caso contrário, ele retornará um código de erro apropriado. Para obter mais informações, consulte Usando valores NTSTATUS.

Comentários

Depois que o ACXSTREAM tiver sido criado, o driver poderá adicionar um ou mais elementos ACX ao fluxo. Por padrão, os elementos ACX são conectados na mesma ordem do assembly. Um ACXSTREAM está associado a apenas um ACXCIRCUIT. O ACX dá suporte a dois tipos de fluxos: objetos de fluxo ACX básicos usados por circuitos que não são de streaming e objetos de fluxo ACX RealTime (RT) usados por circuitos de streaming.

O ACXSTREAM criado por AcxRtStreamCreate permitirá que o driver receba sinais de controle e alterações de estado associadas a um fluxo. O ACXSTREAM também dará suporte ao streaming de dados de áudio de ou para o sistema operacional. Um driver que dá suporte a dados de áudio de streaming deve usar AcxRtStreamCreate para criar um ACXSTREAM com suporte para streaming.

Para um ponto de extremidade que é feito de vários ACXCIRCUITs em vários drivers, o ACXCIRCUIT que hospeda o pino de streaming criaria um ACX RT Stream enquanto os outros ACXCIRCUITs no ponto de extremidade criariam fluxos ACX não RT.

Exemplo

A criação de fluxo rt de exemplo é mostrada abaixo.

    //
    // Init streaming callbacks.
    //
    ACX_STREAM_CALLBACKS streamCallbacks;
    ACX_STREAM_CALLBACKS_INIT(&streamCallbacks);
    streamCallbacks.EvtAcxStreamPrepareHardware     = EvtStreamPrepareHardware;
    streamCallbacks.EvtAcxStreamReleaseHardware     = EvtStreamReleaseHardware;
    streamCallbacks.EvtAcxStreamRun                 = EvtStreamRun;
    streamCallbacks.EvtAcxStreamPause               = EvtStreamPause;
    streamCallbacks.EvtAcxStreamAssignDrmContentId  = EvtStreamAssignDrmContentId;

    status = AcxStreamInitAssignAcxStreamCallbacks(StreamInit, &streamCallbacks);

    //
    // Init RT Streaming callbacks.
    //
    ACX_RT_STREAM_CALLBACKS rtCallbacks;
    ACX_RT_STREAM_CALLBACKS_INIT(&rtCallbacks);
    rtCallbacks.EvtAcxStreamGetHwLatency = EvtStreamGetHwLatency;
    rtCallbacks.EvtAcxStreamAllocateRtPackets = EvtStreamAllocateRtPackets;
    rtCallbacks.EvtAcxStreamFreeRtPackets = EvtStreamFreeRtPackets;
    rtCallbacks.EvtAcxStreamSetRenderPacket = EvtStreamSetRenderPacket;
    rtCallbacks.EvtAcxStreamGetCurrentPacket = EvtStreamGetCurrentPacket;
    rtCallbacks.EvtAcxStreamGetPresentationPosition = EvtStreamGetPresentationPosition;

    status = AcxStreamInitAssignAcxRtStreamCallbacks(StreamInit, &rtCallbacks);

    //
    // Create the stream.
    //
    WDF_OBJECT_ATTRIBUTES attributes;
    ACXSTREAM stream;
    WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(&attributes, STREAM_CONTEXT);
    attributes.EvtCleanupCallback = EvtStreamContextCleanup;
    attributes.EvtDestroyCallback = EvtStreamDestroy;
    status = AcxRtStreamCreate(Device, Circuit, &attributes, &StreamInit, &stream);

Requisitos do ACX

Versão mínima do ACX: 1.0

Para obter mais informações sobre versões do ACX, consulte Visão geral da versão do ACX.

Requisitos

Requisito Valor
Cabeçalho acxstreams.h
IRQL PASSIVE_LEVEL

Confira também