Método IPortDMus::Notify (dmusicks.h)
Se debe llamar al método Notify
desde la rutina de servicio de interrupción (ISR) del controlador de miniport cuando se ha producido una interrupción de hardware. Esta llamada solicita que el controlador de puerto llame al controlador de miniportar de nuevo con una llamada a procedimiento diferido (DPC) mientras el controlador de miniporta controla la interrupción.
Sintaxis
void Notify(
[in, optional] PSERVICEGROUP ServiceGroup
);
Parámetros
[in, optional] ServiceGroup
Puntero a un objeto IServiceGroup. Este parámetro es opcional y se puede especificar como NULL. Para obtener más información, vea la siguiente sección Comentarios.
Valor devuelto
Ninguno
Observaciones
El método Notify
envía una notificación al grupo de servicios del controlador de miniport:
-
Si el parámetro pServiceGroup no esNULL, el método
Notify
llama al método RequestService en el objeto IServiceGroup al que apunta este parámetro. - Si pServiceGroup es NULL:
- El método
Notify
llama al método RequestService del controlador de miniport objeto IServiceGroup. Este es el objeto IServiceGroup que genera el controlador de miniporte durante la llamada IMiniportDMus::In it. El controlador de miniport también podría haber registrado este objeto antes (es decir, antes del retorno de Init) llamando a IPortDMus::RegisterServiceGroup. - El método
Notify
también llama al método RequestService en el objeto IServiceGroup que pertenece a cada uno de los flujos del controlador de miniport. Este es el objeto IServiceGroup que genera el método IMiniportDMus::NewStream.
- El método
Notify
para notificar al controlador de puerto que el dispositivo de audio ha generado una interrupción de hardware. Cuando una interrupción indica, por ejemplo, que es necesario leer algún registro, el ISR del controlador de miniporte no puede acceder al gráfico MXF (filtro de transformación MIDI) en el IRQL con privilegios elevados. En su lugar, el controlador de miniporte puede almacenar los datos de entrada (un byte de datos MIDI, por ejemplo) desde el registro, llamar a Notify
y esperar a que el controlador de puerto vuelva a él con un DPC.
Cuando el ISR del controlador de miniporta llama a Notify
, el controlador de puerto recibe la notificación en el IRQL de interrupción de hardware con privilegios elevados y coloca un DPC en la cola. Cuando IRQL cae a la DISPATCH_LEVEL, el DPC del controlador de puerto se desencadena y el controlador de miniporta.
Dentro del DPC, el controlador de puerto llama a IMXF::P utMessage en el flujo de entrada del controlador de miniporte con un parámetro de NULL para indicar que el controlador de miniporte ahora puede colocar el mensaje MIDI previamente almacenado en el gráfico MXF porque IRQL se ha vuelto a DISPATCH_LEVEL.
Este método es fundamental para un tiempo preciso. La mayoría de los miniportes llamarán a este método en respuesta a una interrupción de notificación después de haber borrado el origen de la interrupción. Aunque el controlador de miniporte es libre de usar otros métodos para determinar cuándo llamar a este método, el tiempo preciso es importante y debe mantenerse.
Cuando un controlador de adaptador instala un ISR, envía un parámetro ServiceContext junto con el punto de entrada de ISR (para obtener más información, consulte Proporcionar información de contexto de ISR). Cuando se produce la interrupción, el sistema operativo llama al ISR y pasa ServiceContext como parámetro de llamada al ISR. Aunque el significado del parámetro ServiceContext solo se conoce para el desarrollador del controlador, normalmente es un puntero al objeto miniport. El ISR usa este puntero para tener acceso a información sobre el objeto miniport.
El parámetro pServiceGroup sigue las convenciones de recuento de referencias para objetos COM.
Requisitos
Requisito | Valor |
---|---|
de la plataforma de destino de | Escritorio |
encabezado de | dmusicks.h (incluye Dmusicks.h) |
irQL | Cualquier nivel |