Функция KeSynchronizeExecution (wdm.h)
Подпрограмма KeSynchronizeExecution синхронизирует выполнение указанной подпрограммы с подпрограммой службы прерываний (ISR), назначенной набору из одного или нескольких объектов прерывания.
Синтаксис
BOOLEAN KeSynchronizeExecution(
[in, out] PKINTERRUPT Interrupt,
[in] PKSYNCHRONIZE_ROUTINE SynchronizeRoutine,
[in, optional] __drv_aliasesMem PVOID SynchronizeContext
);
Параметры
[in, out] Interrupt
Указатель на набор объектов прерывания. Вызывающий объект получил этот указатель из подпрограммы IoConnectInterrupt или IoConnectInterruptEx .
[in] SynchronizeRoutine
Указывает предоставленную вызывающим абонентом подпрограмму SynchCritSection , выполнение которой должно синхронизироваться с выполнением ISR, назначенного объектам прерывания.
[in, optional] SynchronizeContext
Указатель на предоставленное вызывающим объектом значение контекста, которое передается подпрограмме SynchCritSection при ее вызове.
Возвращаемое значение
KeSynchronizeExecution возвращает значение TRUE , если операция завершается успешно. В противном случае возвращается значение FALSE.
Комментарии
При вызове этой подпрограммы происходит следующее:
- IrQL вызывается до значения SynchronizeIrql, указанного в вызове IoConnectInterrupt или IoConnectInterruptEx.
- Доступ к SynchronizeContext синхронизируется с назначенным ISR путем получения связанного объекта прерывания спин-блокировки (или объекта системного события, если isR выполняется на PASSIVE_LEVEL).
- Указанная подпрограмма SynchCritSection вызывается со значением SynchronizeContext в качестве параметра.
Вызывающие экземпляры KeSynchronizeExecution должны выполняться по адресу IRQL <= DIRQL, то есть в СРЕДЕ IRQL, которая меньше или равна значению SynchronizeIrql , заданному вызывающим объектом при регистрации isR в IoConnectInterrupt или IoConnectInterruptEx.
Начиная с Windows 8, драйвер может вызвать KeSynchronizeExecution для синхронизации выполнения подпрограммы SynchCritSection с ISR, которая выполняется в IRQL = PASSIVE_LEVEL. В более ранних версиях Windows KeSynchronizeExecution может синхронизировать выполнение только с ISR, который выполняется в IRQL >= DISPATCH_LEVEL. Дополнительные сведения см. в разделе Использование процедур службы прерывания Passive-Level.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Доступно начиная с Windows 2000. |
Целевая платформа | Универсальное |
Верхняя часть | wdm.h (включая Wdm.h, Ntddk.h, Ntifs.h) |
Библиотека | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= DIRQL (см. раздел "Примечания") |