Obtendo um objeto DDI HDAUDIO_BUS_INTERFACE_BDL
Conforme explicado anteriormente, o driver de função de um codec de áudio ou modem obtém uma referência contada a um objeto com uma DDI de áudio HD enviando uma IRP_MN_QUERY_INTERFACE IOCTL para o driver do barramento de áudio HD.
A tabela a seguir mostra os valores de parâmetro de entrada que o driver de função grava no IOCTL para obter uma estrutura HDAUDIO_BUS_INTERFACE_BDL e um objeto de contexto para a versão da DDI de áudio HD que essa estrutura define.
Parâmetro | Valor |
---|---|
CONST GUID *InterfaceType |
GUID_HDAUDIO_BUS_INTERFACE_BDL |
Tamanho do USHORT |
sizeof(HDAUDIO_BUS_INTERFACE_BDL) |
Versão do USHORT |
0x0100 |
Interface PINTERFACE |
Ponteiro para HDAUDIO_BUS_INTERFACE_BDL estrutura |
InterfaceSpecificData do PVOID |
NULL |
O driver de função aloca o armazenamento para a estrutura HDAUDIO_BUS_INTERFACE_BDL e inclui um ponteiro para essa estrutura no IOCTL. Na tabela anterior, o ponteiro para a estrutura HDAUDIO_BUS_INTERFACE_BDL é convertido no tipo PINTERFACE, que é um ponteiro para uma estrutura do tipo INTERFACE. Os nomes e tipos dos cinco primeiros membros do HDAUDIO_BUS_INTERFACE_BDL correspondem aos dos cinco membros da INTERFACE. HDAUDIO_BUS_INTERFACE_BDL contém membros adicionais que são ponteiros de função para as rotinas de DDI. Em resposta ao recebimento do IOCTL do driver de função, o driver do barramento de áudio HD preenche toda a estrutura HDAUDIO_BUS_INTERFACE_BDL .
A tabela a seguir mostra os valores que o driver do barramento de áudio HD grava nos cinco primeiros membros da estrutura HDAUDIO_BUS_INTERFACE_BDL .
Membro | Valor |
---|---|
Tamanho do USHORT |
sizeof(HDAUDIO_BUS_INTERFACE_BDL) |
Versão do USHORT |
0x0100 |
Contexto PVOID |
Informações de contexto que precisam ser passadas como o primeiro parâmetro de chamada para cada rotina de DDI |
interface PINTERFACE_REFERENCE Reference |
Ponteiro para uma rotina que incrementa a contagem de referência do objeto de contexto |
PINTERFACE_DEREFERENCE InterfaceDereference |
Ponteiro para uma rotina que diminui a contagem de referência do objeto de contexto |
Na tabela anterior, o membro Context aponta para um objeto de contexto que contém informações específicas para a instância específica da versão HDAUDIO_BUS_INTERFACE_BDL da DDI que o cliente obtém do IOCTL. Conforme explicado anteriormente, ao chamar qualquer uma das rotinas na DDI, o driver de função do cliente deve sempre especificar o valor do ponteiro contextual como o primeiro parâmetro de chamada.