Função AcxStreamCreate (acxstreams.h)
AcxStreamCreate cria um Fluxo ACX que pode ser usado para controlar o comportamento de streaming.
Sintaxe
NTSTATUS AcxStreamCreate(
WDFDEVICE Device,
ACXCIRCUIT Circuit,
PWDF_OBJECT_ATTRIBUTES Attributes,
PACXSTREAM_INIT *Config,
ACXSTREAM *Stream
);
Parâmetros
Device
Um objeto WDFDEVICE (descrito em Resumo de Objetos da 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 dos 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 dos objetos ACX.
Valor de retorno
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.
Observações
Depois que o ACXSTREAM for 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 pelo AcxStreamCreate permitirá que o driver receba sinais de controle e alterações de estado associadas a um fluxo. No entanto, o ACXSTREAM não 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 feito de vários ACXCIRCUITs em vários drivers, o ACXCIRCUIT que hospeda o pino de streaming criaria um fluxo ACX RT, enquanto os outros ACXCIRCUITs no ponto de extremidade criariam fluxos ACX não RT.
Exemplo
A criação de fluxo 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);
//
// 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 = AcxStreamCreate(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 |