Método IPortDMus::Notify (dmusicks.h)
Se Notify
debe llamar al método desde la rutina de servicio de interrupción (ISR) del controlador de miniporte cuando se ha producido una interrupción de hardware. Esta llamada solicita que el controlador de puerto llame al controlador de minipuerto con una llamada de procedimiento diferido (DPC) mientras el controlador de minipuerto 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 sección Comentarios que se muestra más adelante.
Valor devuelto
None
Observaciones
El Notify
método envía una notificación al grupo de servicios del controlador de miniporte:
-
Si el parámetro pServiceGroup no es NULL, el
Notify
método llama al método RequestService en el objeto IServiceGroup al que apunta este parámetro. - Si pServiceGroup es NULL:
- El
Notify
método llama al método RequestService en el objeto IServiceGroup del controlador de miniport. Este es el objeto IServiceGroup que genera el controlador de miniporte durante la llamada A IMiniportDMus::Init . El controlador de minipuerto también podría haber registrado este objeto al principio (es decir, antes del retorno de Init) llamando a IPortDMus::RegisterServiceGroup. - El
Notify
método también llama al método RequestService en el objeto IServiceGroup que pertenece a cada una de las secuencias del controlador de miniport. Este es el objeto IServiceGroup que genera el método IMiniportDMus::NewStream .
- El
Notify
a 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 minipuerto 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 miniporte llama Notify
a , 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 del puerto se activa y atiende al controlador de minipuerto.
En DPC, el controlador de puerto llama a IMXF::P utMessage en el flujo de entrada del controlador de miniporte con un parámetro NULL para indicar que el controlador de miniporte ahora puede colocar el mensaje MIDI almacenado anteriormente en el gráfico MXF porque IRQL 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 minipuerto 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 obtener acceso a información sobre el objeto miniport.
El parámetro pServiceGroup sigue las convenciones de recuento de referencias para objetos COM.
Requisitos
Requisito | Value |
---|---|
Plataforma de destino | Escritorio |
Encabezado | dmusicks.h (incluye Dmusicks.h) |
IRQL | Cualquier nivel |