Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
A rotina de FreeDmaBuffer libera um buffer de DMA que foi alocado anteriormente por uma chamada para AllocateDmaBuffer.
O tipo de ponteiro de função para uma rotina de FreeDmaBuffer é definido da seguinte maneira.
Sintaxe
PFREE_DMA_BUFFER PfreeDmaBuffer;
NTSTATUS PfreeDmaBuffer(
[in] PVOID _context,
[in] HANDLE Handle
)
{...}
Parâmetros
[in] _context
Especifica o valor de contexto do Context membro do HDAUDIO_BUS_INTERFACE ou da estrutura HDAUDIO_BUS_INTERFACE_V2.
[in] Handle
Manipule a identificação do mecanismo de DMA. Esse valor de identificador foi obtido de uma chamada anterior para AllocateCaptureDmaEngine ou AllocateRenderDmaEngine.
Valor de retorno
FreeDmaBuffer retornará STATUS_SUCCESS se a chamada for bem-sucedida. Caso contrário, a rotina retornará um código de erro apropriado. A tabela a seguir mostra alguns dos possíveis códigos de status de retorno.
| Código de retorno | Descrição |
|---|---|
|
Indica que o chamador está em execução em um IRQL que é muito alto. |
|
Indica que o valor do parâmetro de identificador é inválido. |
|
Indica que o fluxo não está no estado de redefinição ou que nenhum buffer está alocado no momento para o mecanismo de DMA. |
Observações
A rotina de FreeDmaBuffer é usada em conjunto com a rotina de AllocateDmaBuffer. Essas duas rotinas estão disponíveis apenas na versão HDAUDIO_BUS_INTERFACE da DDI de áudio HD. Essa DDI não inclui o AllocateContiguousDmaBuffer, SetupDmaEngineWithBdle rotinas de FreeContiguousDmaBuffer, que nunca são usadas em conjunto com e FreeDmaBufferAllocateDmaBuffer. Ao contrário de SetupDmaEngineWithBdl, que configura o mecanismo DMA para usar um buffer DMA alocado anteriormente, AllocateDmaBuffer aloca um buffer DMA e configura o mecanismo DMA para usar o buffer.
A rotina falha e retorna o código de erro STATUS_INVALID_DEVICE_REQUEST em qualquer uma das seguintes circunstâncias:
-
O cliente chama
FreeDmaBufferquando nenhum buffer está alocado no momento para o mecanismo de DMA. - O fluxo está em um estado diferente de redefinição.
Requisitos
| Requisito | Valor |
|---|---|
| da Plataforma de Destino | Área de trabalho |
| cabeçalho | hdaudio.h (inclua Hdaudio.h) |
| IRQL | PASSIVE_LEVEL |