Share via


Interfaz IInterruptSync (portcls.h)

La IInterruptSync interfaz representa un objeto de sincronización de interrupciones que sincroniza la ejecución de una lista de rutinas de servicio de interrupción (ISR) con rutinas que no son ISR. El controlador del sistema PortCls implementa esta interfaz y la expone al controlador del adaptador. Un controlador de minipuerto obtiene una referencia a un IInterruptSync objeto llamando a la función PortCls PcNewInterruptSync, que crea un nuevo IInterruptSync objeto que se conecta a un recurso de interrupción. IInterruptSync hereda de la interfaz IUnknown .

El método IInterruptSync::RegisterServiceRoutine asocia un ISR a un objeto de sincronización. Se puede asociar más de un ISR a un único objeto de sincronización. Cuando se produce la interrupción, el objeto de sincronización ejecuta los ISR en la lista en un orden especificado y de acuerdo con el parámetro Mode de la función PcNewInterruptSync.

Otra faceta de IInterruptSync es su capacidad de sincronizar la ejecución de ISR con otras rutinas que no son ISR. Una vez que se pasa una rutina que no es ISR a IInterruptSync::CallSynchronizedRoutine y comienza a ejecutarse, se garantiza que la ejecución de cualquier ISR registrada con el objeto de sincronización se mantenga desactivada hasta que esa rutina haya terminado de ejecutarse.

Los métodos RegisterServiceRoutine y CallSynchronizedRoutine aceptan punteros de función de tipo PINTERRUPTSYNCROUTINE, que se define de la siguiente manera:

  typedef NTSTATUS (*PINTERRUPTSYNCROUTINE)
  (
      IN  struct IInterruptSync *InterruptSync,
      IN  PVOID                  DynamicContext
  );

El miembro InterruptSync es un puntero al objeto de sincronización. El miembro DynamicContext contiene un valor de contexto que se pasa a la rutina cuando se llama a .

Para obtener más información, vea Interrumpir objetos de sincronización.

Herencia

La interfaz IInterruptSync hereda de la interfaz IUnknown.

Métodos

La interfaz IInterruptSync tiene estos métodos.

 
IInterruptSync::CallSynchronizedRoutine

El método CallSynchronizedRoutine llama a una rutina que no es una rutina de servicio de interrupción (ISR), pero cuya ejecución debe sincronizarse con ISR.
IInterruptSync::Connect

El método Connect conecta el objeto de sincronización a la interrupción.
IInterruptSync::D isconnect

El método Disconnect desconecta el objeto de sincronización de la interrupción.
IInterruptSync::GetKInterrupt

El método GetKInterrupt obtiene un objeto de interrupción de WDM de un objeto de sincronización de clase de puerto.
IInterruptSync::RegisterServiceRoutine

El método RegisterServiceRoutine registra una rutina de servicio de interrupción (ISR) a la que se va a llamar cuando se produce una interrupción.

Requisitos

Requisito Value
Plataforma de destino Windows
Encabezado portcls.h