KeSynchronizeExecution 函式 (wdm.h)

KeSynchronizeExecution常式會將指定常式的執行與指派給一或多個中斷物件的 ISR (ISR) 同步處理。

語法

BOOLEAN KeSynchronizeExecution(
  [in, out]      PKINTERRUPT            Interrupt,
  [in]           PKSYNCHRONIZE_ROUTINE  SynchronizeRoutine,
  [in, optional] __drv_aliasesMem PVOID SynchronizeContext
);

參數

[in, out] Interrupt

一組中斷物件的指標。 呼叫端從 IoConnectInterruptIoConnectInterruptEx 常式取得此指標。

[in] SynchronizeRoutine

指定呼叫端提供的 SynchCritSection 常式,其執行會與指派給中斷物件的 ISR 執行同步。

[in, optional] SynchronizeContext

呼叫時要傳遞至 SynchCritSection 常式 之呼叫端提供之內容值的指標。

傳回值

如果作業成功,KeSynchronizeExecution會傳回TRUE。 否則會傳回 FALSE

備註

呼叫此常式時,會發生下列情況:

  1. IRQL 會引發至呼叫 IoConnectInterruptIoConnectInterruptEx中指定的SynchronizeIrql值。
  2. 在PASSIVE_LEVEL) 執行的 ISR 時,會取得相關聯的中斷物件微調鎖定 (或系統事件物件,以同步處理 SynchronizeCoNtext 的存取權與指派的 ISR。
  3. 指定的 SynchCritSection 常式會使用 SynchronizeCoNtext 值作為其參數來呼叫。
如果 ISR 在 DIRQL >= DISPATCH_LEVEL 執行, SynchCritSection 常式會在相同的 DIRQL 上執行,因此必須盡可能短暫地執行,以避免延遲其他高優先順序的工作。

KeSynchronizeExecution的呼叫端必須在 IRQL < = DIRQL 上執行;也就是說,在 IRQL 中,小於或等於呼叫者向IoConnectInterrupt 或 IoConnectInterruptEx註冊 ISR 時所指定的SynchronizeIrql值值。

從 Windows 8 開始,驅動程式可以呼叫KeSynchronizeExecution,以同步處理 SynchCritSection常式的執行與在 IRQL = PASSIVE_LEVEL執行的 ISR。 在舊版的 Windows 中, KeSynchronizeExecution 只能與在 IRQL > = DISPATCH_LEVEL 執行的 ISR 同步處理執行。 如需詳細資訊,請參閱 使用Passive-Level插斷服務常式

規格需求

   
最低支援的用戶端 從 Windows 2000 開始提供。
目標平臺 環球
標頭 wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h)
程式庫 NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= DIRQL (請參閱一節)

另請參閱

IoConnectInterrupt

IoConnectInterruptEx