Obtener un objeto DDI de HDAUDIO_BUS_INTERFACE
En la tabla siguiente se muestran los valores de parámetro de entrada que el controlador de función escribe en el IRP_MN_QUERY_INTERFACE IOCTL para obtener una estructura de HDAUDIO_BUS_INTERFACE y un objeto de contexto para la versión de la DDI de audio HD que define esta estructura.
Parámetro | Valor |
---|---|
GUID DE CONST *InterfaceType |
GUID_HDAUDIO_BUS_INTERFACE |
Tamaño de USHORT |
sizeof(HDAUDIO_BUS_INTERFACE) |
Versión de USHORT |
0x0100 |
Interfaz PINTERFACE |
Puntero a HDAUDIO_BUS_INTERFACE estructura |
Interfaz PVOIDSpecificData |
NULL |
El controlador de función asigna el almacenamiento para la estructura de HDAUDIO_BUS_INTERFACE e incluye un puntero a esta estructura en el IOCTL. En la tabla anterior, el puntero a la estructura HDAUDIO_BUS_INTERFACE 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 coinciden con los de los cinco miembros de INTERFACE. HDAUDIO_BUS_INTERFACE 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 de bus de audio HD rellena toda la estructura de HDAUDIO_BUS_INTERFACE .
En la tabla siguiente se muestran los valores que el controlador de HD Audio Bus escribe en los cinco primeros miembros de la estructura HDAUDIO_BUS_INTERFACE .
Miembro | Valor |
---|---|
Tamaño de USHORT |
sizeof(HDAUDIO_BUS_INTERFACE) |
Versión de USHORT |
0x0100 |
Contexto PVOID |
Información de contexto que se debe pasar como primer parámetro de llamada a cada rutina DDI |
Interfaz de PINTERFACE_REFERENCE Referencia |
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 DDI de audio HD de línea base que obtiene el cliente del IOCTL. Al llamar a cualquiera de las rutinas de DDI, el controlador de función cliente siempre debe especificar el valor del puntero Context como primer parámetro de llamada. La información de contexto es opaca para el cliente. El controlador hd Audio Bus crea un objeto de contexto diferente para cada cliente. Cuando el objeto de contexto ya no es necesario, el cliente libera el objeto de contexto llamando a la rutina InterfaceDereference que se muestra en la tabla anterior. Si es necesario, un cliente puede crear referencias adicionales al objeto llamando a la rutina InterfaceReference , pero el cliente es responsable de liberar estas referencias cuando ya no las requiera.