Obtención de un objeto DDI de HDAUDIO_BUS_INTERFACE_BDL
Como se explicó anteriormente, el controlador de función para un códec de audio o módem obtiene una referencia contada a un objeto con un DDI de audio HD enviando un IRP_MN_QUERY_INTERFACE IOCTL al controlador de bus de audio HD.
En la tabla siguiente se muestran los valores de parámetro de entrada que el controlador de función escribe en el IOCTL para obtener una estructura HDAUDIO_BUS_INTERFACE_BDL y un objeto de contexto para la versión de la DDI de audio HD que define esta estructura.
Parámetro | Value |
---|---|
GUID CONST *InterfaceType |
GUID_HDAUDIO_BUS_INTERFACE_BDL |
Tamaño de USHORT |
sizeof(HDAUDIO_BUS_INTERFACE_BDL) |
Versión de USHORT |
0x0100 |
Interfaz PINTERFACE |
Puntero a HDAUDIO_BUS_INTERFACE_BDL estructura |
PvOID InterfaceSpecificData |
NULL |
El controlador de función asigna el almacenamiento para la estructura de HDAUDIO_BUS_INTERFACE_BDL e incluye un puntero a esta estructura en el IOCTL. En la tabla anterior, el puntero a la estructura HDAUDIO_BUS_INTERFACE_BDL se convierte en el tipo PINTERFACE, que es un puntero a una estructura de tipo INTERFACE. Los nombres y tipos de los cinco primeros miembros de HDAUDIO_BUS_INTERFACE_BDL coinciden con los de los cinco miembros de INTERFACE. HDAUDIO_BUS_INTERFACE_BDL contiene miembros adicionales que son punteros de función a las rutinas DDI. En respuesta a la recepción del IOCTL del controlador de función, el controlador del bus de audio HD rellena toda la estructura de HDAUDIO_BUS_INTERFACE_BDL .
En la tabla siguiente se muestran los valores que escribe el controlador del bus de audio HD en los cinco primeros miembros de la estructura HDAUDIO_BUS_INTERFACE_BDL .
Miembro | Valor |
---|---|
Tamaño de USHORT |
sizeof(HDAUDIO_BUS_INTERFACE_BDL) |
Versión de USHORT |
0x0100 |
Contexto PVOID |
Información de contexto que debe pasarse como primer parámetro de llamada a cada rutina DDI |
PINTERFACE_REFERENCE InterfaceReference |
Puntero a una rutina que incrementa el recuento de referencias del objeto de contexto |
PINTERFACE_DEREFERENCE InterfaceDereference |
Puntero a una rutina que disminuye el recuento de referencias del objeto de contexto |
En la tabla anterior, el miembro Context apunta a un objeto de contexto que contiene información específica de la instancia concreta de la versión HDAUDIO_BUS_INTERFACE_BDL de la DDI que obtiene el cliente del IOCTL. Como se explicó anteriormente, al llamar a cualquiera de las rutinas de DDI, el controlador de funciones cliente siempre debe especificar el valor del puntero Context como primer parámetro de llamada.