KSYNCHRONIZE_ROUTINE回呼函式 (wdm.h)
SynchCritSection 例程可用來存取與驅動程式的 InterruptService 例程共用的硬體資源或驅動程序數據。
語法
KSYNCHRONIZE_ROUTINE KsynchronizeRoutine;
BOOLEAN KsynchronizeRoutine(
[in] PVOID SynchronizeContext
)
{...}
參數
[in] SynchronizeContext
呼叫端提供的內容資訊,由驅動程式對 KeSynchronizeExecution 的呼叫所指定。
傳回值
如果例程的作業成功,例程應該會傳回 TRUE;否則,它應該會傳回 FALSE。 (此例程的成功和失敗是驅動程式定義的。) 指定的傳回值會變成 KeSynchronizeExecution的傳回值。
備註
驅動程式必須使用 SynchCritSection 例程來存取硬體資源或驅動程式數據,此數據也可由 InterruptService 例程 (ISR) 存取。
當驅動程式呼叫 KeSynchronizeExecution 時,系統會呼叫驅動程式的 SynchCritSection 例程。 當驅動程式呼叫 KeSynchronizeExecution 時,它會指定 SynchCritSection 例程的位址、例程的內容資訊,以及中斷對象指標。 KeSynchronizeExecution 例程會取得中斷物件的微調鎖定,然後呼叫 SynchCritSection 例程。
驅動程式的 SynchCritSection 例程會在與其相關聯的 ISR 相同的 IRQL 上執行。 具體而言,它會在一些系統指派 的 DIRQL 上執行,如 SynchronizeIrql 參數所指定的 IoConnectInterrupt。 (其他具有較高 DIRQL 值的裝置可能會中斷 SynchCritSection 例程.)
範例
若要定義 SynchCritSection 回呼例程,您必須先提供函式宣告來識別您要定義的回呼例程類型。 Windows 提供一組驅動程式的回呼函式類型。 使用回呼函式類型宣告函式有助於 驅動程式的程式代碼分析、 靜態驅動程式驗證器 (SDV) ,以及其他驗證工具會尋找錯誤,而且這是撰寫 Windows 操作系統驅動程式的需求。
例如,若要定義名為 MySynchCritSection
的 SynchCritSection 回呼例程,請使用 KSYNCHRONIZE_ROUTINE 類型,如下列程式代碼範例所示:
KSYNCHRONIZE_ROUTINE MySynchCritSection;
然後,實作回呼例程,如下所示:
_Use_decl_annotations_
BOOLEAN
MySynchCritSection(
PVOID SynchronizeContext
)
{
// Function body
}
KSYNCHRONIZE_ROUTINE函式類型定義於 Wdm.h 頭檔中。 若要在執行程式代碼分析工具時更精確地識別錯誤,請務必將 _Use_decl_annotations_
註釋新增至函式定義。 註釋 _Use_decl_annotations_
可確保使用頭檔中套用至KSYNCHRONIZE_ROUTINE函式類型的批註。 如需函式宣告需求的詳細資訊,請參閱 使用WDM驅動程式的函式角色類型來宣告函式。 如需 的相關信息 _Use_decl_annotations_
,請參閱 標註函式行為。
規格需求
需求 | 值 |
---|---|
目標平台 | 桌面 |
標頭 | wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h) |
IRQL | 在 DIRQL (呼叫,請參閱一節) 。 |