HW_MESSAGE_SIGNALED_INTERRUPT_ROUTINE回呼函式 (storport.h)
HwMSInterruptRoutine 例程會處理已發出訊號中斷的訊息(MSI)。
語法
HW_MESSAGE_SIGNALED_INTERRUPT_ROUTINE HwMessageSignaledInterruptRoutine;
BOOLEAN HwMessageSignaledInterruptRoutine(
IN PVOID HwDeviceExtension,
IN ULONG MessageId
)
{...}
參數
HwDeviceExtension
主機總線適配卡 (HBA) 的硬體裝置擴充功能指標。
MessageId
訊息的標識碼。
傳回值
HwMSInterruptRoutine 會傳回 true true,如果它判斷 HBA 產生 MSI。 如果 HBA 未產生 MSI,HwMSInterruptRoutine 會傳回 FALSE 。
言論
迷你埠驅動程式的 HwMSInterruptRoutine 例程會處理 HBA 所產生的信號中斷(MSI) 訊息。 迷你埠驅動程式表示其 HBA 會藉由將 HwMSInterruptRoutinePORT_CONFIGURATION_INFORMATION 結構的成員設定為指向 HwMSInterruptRoutine 例程,以產生 MSI。 如果 HBA 不會產生 MSI,迷你連接埠驅動程式應該將 HwMSInterruptRoutine 設定為 NULL。
如果 InterruptSynchronizationModePORT_CONFIGURATION_INFORMATION 結構的成員設定為 InterruptSynchronizeAll,Storport 驅動程式會同步處理其管理之配接器或聯機到配接器之裝置的所有 MSIS。 發生中斷時,Storport 驅動程式會在取得中斷微調鎖定之後,於 DIRQL 呼叫迷你埠驅動程式的 HwMSInterruptRoutine 例程。
如果 PORT_CONFIGURATION_INFORMATION 結構的 InterruptSynchronizationMode 成員設定為 InterruptSynchronizePerMessage,Storport 驅動程式會在 IRQL = DIRQL 呼叫 miniport 驅動程式的 HwMSInterruptRoutine 例程, 保留與 messageID 參數中所指示之訊息識別碼 (ID) 相對應的中斷微調鎖定。 HBA 可以中斷 HwMSInterruptRoutine 例程來中斷其他訊息識別符,因此 Storport 驅動程式可能會對 HwMSInterruptRoutine進行巢狀呼叫,或在不同的處理器上同時執行 HwMSInterruptRoutine 的不同實例。 若要同步處理 HwMSInterruptRoutine的不同實例對敏感數據的存取,迷你埠必須呼叫 StorPortAcquireMSISpinLock 和 StorPortReleaseMSISpinLock 例程,以取得和釋放 MessageID中標識符以外的訊息標識符微調鎖定。
迷你埠驅動程式可以呼叫 StorPortGetMSIInfo 例程來擷取訊息的其他資訊。
它不應該從 HwMSInterruptRoutine 例程內呼叫 StorPortGetMSIInfo 例程。
HwMSInterruptRoutine 的名稱只是佔位符。 此例程的實際原型定義於 storport.h ,如下所示:
typedef
BOOLEAN
HW_MESSAGE_SIGNALED_INTERRUPT_ROUTINE (
_In_ PVOID HwDeviceExtension,
_In_ ULONG MessageId
);
例子
若要定義 HwMSInterruptRoutine 回呼函式,您必須先提供函式宣告,以識別您要定義的回呼函式類型。 Windows 提供一組驅動程式的回呼函式類型。 使用回呼函式類型宣告函式有助於 驅動程式的程式代碼分析、靜態驅動程式驗證器 (SDV)和其他驗證工具尋找錯誤,而且是撰寫 Windows作系統驅動程式的需求。
例如,若要定義名為 MyHwMSIRoutineHwMSInterruptRoutine 回呼例程,請使用 HW_MESSAGE_SIGNALED_INTERRUPT_ROUTINE 類型,如下列程式代碼範例所示:
HW_MESSAGE_SIGNALED_INTERRUPT_ROUTINE MyHwMSIRoutine;
然後,實作回呼例程,如下所示:
_Use_decl_annotations_
BOOLEAN
MyHwMSIRoutine (
_In_ PVOID DeviceExtension,
_In_ ULONG MessageId
);
{
...
}
HW_MESSAGE_SIGNALED_INTERRUPT_ROUTINE 函式類型定義於 Storport.h 頭檔中。 若要在執行程式代碼分析工具時更準確地識別錯誤,請務必將 Use_decl_annotations 批註新增至函式定義。 Use_decl_annotations 批注可確保會使用套用至頭檔中 HW_MESSAGE_SIGNALED_INTERRUPT_ROUTINE 函式類型的批注。 如需函式宣告需求的詳細資訊,請參閱 使用 Storport 驅動程式的函式角色類型來宣告函式。 如需 Use_decl_annotations的相關信息,請參閱 批注函式行為。
要求
要求 | 價值 |
---|---|
目標平臺 | 普遍 |
標頭 | storport.h (包括 Storport.h) |
IRQL | DIRQL |