Compartilhar via


Obtendo um objeto DDI HDAUDIO_BUS_INTERFACE

A tabela a seguir mostra os valores de parâmetro de entrada que o driver de função grava na IRP_MN_QUERY_INTERFACE IOCTL para obter uma estrutura HDAUDIO_BUS_INTERFACE 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

Tamanho do USHORT

sizeof(HDAUDIO_BUS_INTERFACE)

Versão do USHORT

0x0100

Interface PINTERFACE

Ponteiro para HDAUDIO_BUS_INTERFACE estrutura

InterfaceSpecificData do PVOID

NULL

O driver de função aloca o armazenamento para a estrutura HDAUDIO_BUS_INTERFACE e inclui um ponteiro para essa estrutura no IOCTL. Na tabela anterior, o ponteiro para a estrutura HDAUDIO_BUS_INTERFACE é 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 correspondem aos dos cinco membros da INTERFACE. HDAUDIO_BUS_INTERFACE 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 .

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 .

Membro Valor

Tamanho do USHORT

sizeof(HDAUDIO_BUS_INTERFACE)

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 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 DDI de áudio HD de linha de base que o cliente obtém do IOCTL. Ao chamar qualquer uma das rotinas na DDI, o driver de função do cliente sempre deve especificar o valor do ponteiro de contexto como o primeiro parâmetro de chamada. As informações de contexto são opacas para o cliente. O driver do 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 necessário, um cliente pode criar referências adicionais ao objeto chamando a rotina InterfaceReference , mas o cliente é responsável por liberar essas referências quando elas não exigem mais.