WdfInterruptSynchronize 函式 (wdfinterrupt.h)
[適用於 KMDF 和 UMDF]
WdfInterruptSynchronize 方法會在裝置的 DIRQL 上執行指定的回呼函式,同時按住中斷物件的微調鎖定。
對於被動層級中斷對象,這個方法會在被動層級執行指定的回呼函式,同時保留中斷物件的被動層級中斷鎖定。
語法
BOOLEAN WdfInterruptSynchronize(
[in] WDFINTERRUPT Interrupt,
[in] PFN_WDF_INTERRUPT_SYNCHRONIZE Callback,
[in] WDFCONTEXT Context
);
參數
[in] Interrupt
架構中斷物件的句柄。
[in] Callback
EvtInterruptSynchronize 回呼函式的指標。
[in] Context
驅動程式提供的不具型別指標,架構會傳遞至 EvtInterruptSynchronize 回 呼函式。
傳回值
WdfInterruptSynchronize 會傳回 EvtInterruptSynchronize 回呼函式傳回的布爾值。
如果驅動程式提供無效的物件句柄,就會發生錯誤檢查。
備註
如果您想要讓驅動程式執行必須執行的程式代碼,而不需先佔,並有效停用裝置中斷服務,您應該將該程式代碼放在 EvtInterruptSynchronize 回 呼函式中。 若要排程回呼函式的執行,您的驅動程式必須呼叫 WdfInterruptSynchronize。
WdfInterruptSynchronize 方法會在 EvtInterruptSynchronize 回呼函式完成執行之後傳回。
驅動程式可以呼叫 WdfInterruptAcquireLock 和 WdfInterruptReleaseLock,而不是呼叫 WdfInterruptSynchronize。
如需 WdfInterruptSynchronize 方法的詳細資訊,請參閱 同步處理中斷程序代碼。
如需在架構型驅動程式中處理中斷的詳細資訊,請參閱 處理硬體中斷。
對於被動層級中斷,驅動程序必須在 IRQL = PASSIVE_LEVEL 呼叫 WdfInterruptSynchronize 。
請勿從任意線程內容呼叫 WdfInterruptSynchronize ,例如 要求處理程式。
範例
下列程式代碼範例示範如何呼叫 WdfInterruptSynchronize 以排程 EvtInterruptSynchronize 回呼函式的執行。
BOOLEAN synchronizeReturnValue;
synchronizeReturnValue = WdfInterruptSynchronize(
WdfInterrupt,
MyEvtInterruptSynchronize,
CallbackContext
);
規格需求
需求 | 值 |
---|---|
目標平台 | Universal |
最低 KMDF 版本 | 1.0 |
最低UMDF版本 | 2.0 |
標頭 | wdfinterrupt.h (包含 Wdf.h) |
程式庫 | Wdf01000.sys (KMDF) ;WUDFx02000.dll (UMDF) |
IRQL | <=DISPATCH_LEVEL |
DDI 合規性規則 | DriverCreate (kmdf) 、 KmdfIrql (kmdf) 、 KmdfIrql2 (kmdf) 、 KmdfIrqlExplicit (kmdf) |