Obtendo um objeto DDI HDAUDIO_BUS_INTERFACE_BDL

Como explicado anteriormente, o driver de função para um codec de áudio ou modem obtém uma referência com contagem a um objeto com um DDI de áudio HD ao enviar um IOCTL de IRP_MN_QUERY_INTERFACE para o driver de barramento de áudio HD.

A tabela a seguir apresenta os valores de parâmetros de entrada que o driver de função escreve no IOCTL, com o objetivo de obter uma estrutura de HDAUDIO_BUS_INTERFACE_BDL e um objeto de contexto correspondente à versão do HD Audio DDI que essa estrutura define.

Parâmetro Valor

GUID CONST *InterfaceType

GUID_HDAUDIO_BUS_INTERFACE_BDL

Tamanho do USHORT

tamanho da(HDAUDIO_BUS_INTERFACE_BDL)

USHORT Versão

0x0100

PINTERFACE Interface

Ponteiro para a estrutura HDAUDIO_BUS_INTERFACE_BDL

PVOID InterfaceSpecificData

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 para o tipo PINTERFACE, que é um ponteiro para uma estrutura do tipo INTERFACE. Os nomes e tipos dos cinco primeiros membros de HDAUDIO_BUS_INTERFACE_BDL correspondem aos dos cinco membros de INTERFACE. HDAUDIO_BUS_INTERFACE_BDL contém membros adicionais que servem como ponteiros de função para as rotinas DDI. Em resposta ao recebimento da IOCTL do driver de função, o driver do barramento HD Audio preenche toda a estrutura HDAUDIO_BUS_INTERFACE_BDL.

A tabela a seguir apresenta os valores que o controlador de barramento HD Audio escreve nos primeiros cinco elementos da estrutura HDAUDIO_BUS_INTERFACE_BDL.

Membro Valor

Tamanho do USHORT

tamanho da(HDAUDIO_BUS_INTERFACE_BDL)

USHORT Versão

0x0100

PVOID Contexto

Informações de contexto que precisam ser passadas como o primeiro parâmetro de chamada para cada rotina DDI

PINTERFACE_REFERENCE InterfaceReference

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 do DDI que o cliente obtém do IOCTL. Como explicado anteriormente, ao chamar qualquer uma das rotinas no DDI, o driver de função do cliente deve sempre especificar o Context valor do ponteiro como o primeiro parâmetro de chamada.