Obtendo um objeto DDI HDAUDIO_BUS_INTERFACE_V2
A tabela a seguir mostra os valores de parâmetro de entrada que o driver de função grava no IRP_MN_QUERY_INTERFACE IOCTL para obter uma estrutura HDAUDIO_BUS_INTERFACE_V2 e um objeto de contexto para a versão da DDI de áudio HD definida por essa estrutura.
Parâmetro | Valor |
---|---|
CONST GUID *InterfaceType |
GUID_HDAUDIO_BUS_INTERFACE_V2 |
Tamanho do USHORT |
sizeof(HDAUDIO_BUS_INTERFACE_V2) |
Versão do USHORT |
0x0100 |
Interface PINTERFACE |
Ponteiro para HDAUDIO_BUS_INTERFACE_V2 estrutura |
Interface PVOIDSpecificData |
NULL |
O driver de função aloca o armazenamento para a estrutura HDAUDIO_BUS_INTERFACE_V2 e inclui um ponteiro para essa estrutura no IOCTL. Na tabela anterior, o ponteiro para a estrutura HDAUDIO_BUS_INTERFACE_V2 é 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_V2 correspondem aos dos cinco membros da INTERFACE. HDAUDIO_BUS_INTERFACE_V2 contém membros adicionais que são ponteiros de função para as rotinas DDI. Em resposta ao recebimento do IOCTL do driver de função, o driver de barramento de áudio HD preenche a estrutura HDAUDIO_BUS_INTERFACE_V2 .
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_V2 .
Membro | Valor |
---|---|
Tamanho do USHORT |
sizeof(HDAUDIO_BUS_INTERFACE_V2) |
Versão do USHORT |
0x0100 |
Contexto PVOID |
Informações de contexto que devem ser passadas como o primeiro parâmetro de chamada para cada rotina DDI. |
interface PINTERFACE_REFERENCE Reference |
Um ponteiro para uma rotina que incrementa a contagem de referência do objeto de contexto. |
InterfaceDereference PINTERFACE_DEREFERENCE |
Um 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 DDI de áudio HD de linha de base. O cliente obtém essa DDI de áudio HD de linha de base do IOCTL. Quando o driver de função do cliente chama qualquer uma das rotinas na DDI, ele sempre deve especificar o valor do membro Context como o primeiro parâmetro de chamada. As informações de contexto são opacas para o cliente. O driver de barramento de áudio HD cria um objeto de contexto diferente para cada cliente. Quando o objeto de contexto não é mais necessário, o cliente libera o objeto de contexto chamando a rotina InterfaceDereference mostrada na tabela anterior. Se for necessário, um cliente poderá criar referências adicionais ao objeto chamando a rotina InterfaceDereference , mas o cliente será responsável por liberar essas referências quando elas não forem mais necessárias.