IPortDMus::Notify 方法 (dmusicks.h)
發生硬體中斷時,應該從迷你埠驅動程式的中斷服務例程 (ISR) 呼叫 Notify
方法。 此呼叫會要求埠驅動程式使用延後過程調用 (DPC) 來呼叫迷你埠驅動程式,而迷你埠驅動程式會處理中斷。
語法
void Notify(
[in, optional] PSERVICEGROUP ServiceGroup
);
參數
[in, optional] ServiceGroup
IServiceGroup 物件的指標。 這個參數是選擇性的,而且可以指定為 NULL 。 如需詳細資訊,請參閱下列一節。
傳回值
沒有
言論
Notify
方法會將通知傳送至迷你埠驅動程式的服務群組:
-
如果 pServiceGroup 參數 非NULL,
Notify
方法會在此參數指向的 IServiceGroup 物件上呼叫 RequestService 方法。 - 如果 pServiceGroup NULL:
-
Notify
方法會呼叫 miniport 驅動程式 IServiceGroup 物件上的 RequestService 方法。 這是 IMiniportDMus::Init 呼叫期間迷你埠驅動程序輸出的 IServiceGroup 物件。 迷你埠驅動程式可能也早點註冊此物件(也就是早於從 Init傳回 ),方法是呼叫 IPortDMus::RegisterServiceGroup。 -
Notify
方法也會在屬於每個迷你埠驅動程序數據流的 IServiceGroup 物件上呼叫 RequestService 方法。 這是 IMiniportDMus::NewStream 方法輸出的 IServiceGroup 物件。
-
Notify
,以通知埠驅動程式音訊裝置已產生硬體中斷。 例如,當中斷訊號顯示某些緩存器需要讀取時,迷你埠驅動程式的ISR無法在提升許可權的IRQL存取MXF (MIDI轉換篩選器) 圖形。 相反地,迷你埠驅動程式可以從緩存器儲存輸入數據(例如MIDI數據的位元組),呼叫 Notify
,並等候埠驅動程式使用 DPC 返回。
當迷你埠驅動程式的ISR呼叫 Notify
時,埠驅動程式會在提升許可權的硬體中斷 IRQL 收到通知,並將 DPC 放在佇列中。 當 IRQL 卸除至DISPATCH_LEVEL時,埠驅動程式的 DPC 會引發並服務迷你埠驅動程式。
在 DPC 內,埠驅動程式會呼叫迷你埠驅動程式輸入數據流上的 IMXF::P utMessage,並使用 NULL 參數來表示迷你埠驅動程式現在可以將先前儲存的 MIDI 訊息放入 MXF 圖形中,因為 IRQL 已捨棄回DISPATCH_LEVEL。
這個方法對於精確的計時至關重要。 大部分的迷你埠會在清除中斷來源之後,呼叫此方法以回應通知中斷。 雖然迷你埠驅動程式可以自由使用其他方法來判斷何時呼叫此方法,但精確計時很重要,而且應該維護。
當配接器驅動程式安裝 ISR 時,它會提交 ServiceContext 參數以及 ISR 的進入點(如需詳細資訊,請參閱 提供 ISR 內容資訊)。 當中斷發生時,作系統會呼叫ISR,並將 ServiceContext 當做ISR的呼叫參數傳遞。 雖然只有驅動程式開發人員才知道 ServiceContext 參數的意義,但它通常是迷你埠物件的指標。 ISR 會使用此指標來存取迷你埠物件的相關信息。
pServiceGroup 參數會遵循 COM 物件的 參考計數慣例,。
要求
要求 | 價值 |
---|---|
目標平臺 | 桌面 |
標頭 | dmusicks.h (包括 Dmusicks.h) |
IRQL | 任何層級 |