Compartir a través de


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.
Normalmente, el controlador de miniporte llama a 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 Notifyy 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

Consulte también

IMXF::P utMessage

IMiniportDMus::Init

IMiniportDMus::NewStream

IPortDMus

IPortDMus::RegisterServiceGroup

IServiceGroup