IInterruptSync 介面 (portcls.h)
IInterruptSync
介面代表中斷同步處理物件,該物件會同步處理中斷服務例程清單與非ISR例程的執行。 PortCls 系統驅動程式會實作此介面,並將其公開給配接器驅動程式。 迷你埠驅動程式會呼叫 PortCls 函式 PcNewInterruptSync來取得 IInterruptSync
對象的參考,這會建立連線到中斷資源的新 IInterruptSync
物件。
IInterruptSync
繼承自 IUnknown 介面。
IInterruptSync::RegisterServiceRoutine 方法會將 ISR 與同步對象產生關聯。 多個ISR可以與單一同步對象相關聯。 當中斷發生時,同步處理物件會根據 PcNewInterruptSync 函式的 Mode 參數,以指定的順序和方式執行清單中的 ISR。
IInterruptSync
的另一個 Facet 是能夠同步處理 ISR 的執行與其他不是 ISR 的例程。 一旦將非ISR例程傳遞至 IInterruptSync::CallSynchronizedRoutine 並開始執行,就保證會保留任何向同步物件註冊的ISR,直到該例程完成執行為止。
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 |