Интерфейс IInterruptSync (portcls.h)
Интерфейс IInterruptSync
представляет объект синхронизации прерываний, который синхронизирует выполнение списка подпрограмм службы прерываний (ISR) с подпрограммами, отличными от ISR. Системный драйвер PortCls реализует этот интерфейс и предоставляет его драйверу адаптера. Мини-драйвер получает ссылку на объект IInterruptSync
путем вызова функции PortCls PcNewInterruptSync, которая создает новый объект IInterruptSync
, который подключается к ресурсу прерывания.
IInterruptSync
наследует от интерфейса IUnknown.
Метод IInterruptSync::RegisterServiceRoutine связывает ISR с объектом синхронизации. Несколько isR могут быть связаны с одним объектом синхронизации. При прерывании объект синхронизации выполняет isR в списке в указанном порядке и способом в соответствии с параметром PcNewInterruptSync режима режима.
Еще одним аспектом IInterruptSync
является возможность синхронизации выполнения isR с другими подпрограммами, которые не являются ISR. После прохождения подпрограммы, отличной от ISR, в IInterruptSync::CallSynchronizedRoutine и начинается, выполнение всех поставщиков ПАРАМЕТРОВ, зарегистрированных в объекте синхронизации, гарантированно будет отложено до завершения выполнения этой подпрограммы.
Методы RegisterServiceRoutine и CallSynchronizedRoutine принимают указатели функций типа PINTERRUPTSYNCROUTINE, который определяется следующим образом:
typedef NTSTATUS (*PINTERRUPTSYNCROUTINE)
(
IN struct IInterruptSync *InterruptSync,
IN PVOID DynamicContext
);
Элемент InterruptSync является указателем на объект синхронизации. Элемент DynamicContext содержит значение контекста, передаваемое в подпрограмму при вызове.
Дополнительные сведения см. в объектов синхронизации прерываний.
Наследство
Интерфейс IInterruptSync наследует от интерфейса IUnknown.
Методика
Интерфейс IInterruptSync имеет эти методы.
IInterruptSync::CallSynchronizedRoutine Метод CallSynchronizedRoutine вызывает подпрограмму, которая не является подпрограммой службы прерываний (ISR), но выполнение которой необходимо синхронизировать с ISR. |
IInterruptSync::Connect Метод Connect подключает объект синхронизации к прерыванию. |
IInterruptSync::D isconnect Метод Disconnect отключает объект синхронизации от прерывания. |
IInterruptSync::GetKInterrupt Метод GetKInterrupt получает объект прерывания WDM из объекта синхронизации класса порта. |
IInterruptSync::RegisterServiceRoutine Метод RegisterServiceRoutine регистрирует подпрограмму службы прерываний (ISR), которая должна вызываться при прерывании. |
Требования
Требование | Ценность |
---|---|
целевая платформа | Виндоус |
заголовка | portcls.h |