função de retorno de chamada EVT_ACX_STREAM_PAUSE (acxstreams.h)
O evento EvtAcxStreamPause informa ao driver para fazer a transição do estado do fluxo de Executar para Pausar.
Sintaxe
EVT_ACX_STREAM_PAUSE EvtAcxStreamPause;
NTSTATUS EvtAcxStreamPause(
ACXSTREAM Stream
)
{...}
Parâmetros
Stream
Um objeto ACXSTREAM representa um fluxo de áudio criado por um circuito. O fluxo é composto por uma lista de elementos criados com base nos elementos do circuito pai. 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
Um AcxStream dá suporte a estados diferentes. Esses estados indicam que quando o áudio está fluindo (estado RUN), o áudio não está fluindo, mas o hardware de áudio está preparado (estado PAUSE) ou o áudio não está fluindo e o hardware de áudio não está preparado (estado STOP).
O evento EvtAcxStreamPause fará a transição do estado do fluxo do estado Executar para o estado Pausar. Depois que o fluxo estiver no estado Pausar, o driver poderá receber o evento EvtAcxStreamRun para fazer a transição para o estado Executar ou o driver poderá receber o evento EvtAcxStreamReleaseHardware para fazer a transição para o estado Stop.
Durante a desligar e remover o dispositivo ACX, se os fluxos estiverem presentes, o ACX chamará o EvtAcxStreamPause para fazer a transição de fluxos para Pausar. Isso é Stream instância com escopo.
Os Eventos ACX são análogos aos estados KS, conforme descrito nesta tabela.
Estado de Início | Estado final | Evento do driver ACX chamado | Observações |
---|---|---|---|
STOP | ADQUIRIR | PrepareHardware | O driver executa alocações e preparações de hardware |
ADQUIRIR | PAUSE | (Sem chamada) | |
PAUSE | EXECUTAR | Executar | |
EXECUTAR | PAUSE | Pausar | |
PAUSE | ADQUIRIR | (Sem chamada) | |
ADQUIRIR | STOP | ReleaseHardware | O driver libera alocações de hardware |
Exemplo
O uso de exemplo é mostrado abaixo.
ACX_STREAM_CALLBACKS streamCallbacks;
ACX_STREAM_CALLBACKS_INIT(&streamCallbacks);
streamCallbacks.EvtAcxStreamPause = EvtStreamPause;
...
status = AcxStreamInitAssignAcxStreamCallbacks(StreamInit, &streamCallbacks);
#pragma code_seg("PAGE")
NTSTATUS
EvtStreamPause(
_In_ ACXSTREAM Stream
)
{
PSTREAM_CONTEXT ctx;
NTSTATUS status = STATUS_SUCCESS;
PAGED_CODE();
ctx = GetStreamContext(Stream);
status = TransitionStreamToPause(Stream);
ctx->StreamState = AcxStreamStatePause;
return status;
}
Requisitos do ACX
Versão mínima do ACX: 1.0
Para obter mais informações sobre as versões do ACX, consulte Visão geral da versão do ACX.
Requisitos
Requisito | Valor |
---|---|
Cabeçalho | acxstreams.h |
IRQL | PASSIVE_LEVEL |