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 判斷 HBA 產生 MSI,則會傳回 TRUE 。 如果 HBA 未產生 MSI,HwMSInterruptRoutine 會傳回 FALSE。
備註
迷你埠驅動程式的 HwMSInterruptRoutine 例程會處理訊息信號中斷, (HBA 所產生的 MSIS) 。 迷你埠驅動程式指出其 HBA 會藉由設定PORT_CONFIGURATION_INFORMATION 結構的 HwMSInterruptRoutine 成員來指向 HwMSInterruptRoutine 例程來產生 MSIS。 如果 HBA 不會產生 MSIS,迷你埠驅動程式應該將 HwMSInterruptRoutine 設定為 NULL。
如果PORT_CONFIGURATION_INFORMATION結構的 InterruptSynchronizationMode 成員設定為 InterruptSynchronizeAll,Storport 驅動程式會同步處理它所管理之適配卡的所有 MSI,或是連接到適配卡的裝置。 發生中斷時,Storport 驅動程式會在取得中斷微調鎖定之後,於 DIRQL 呼叫迷你埠驅動程式的 HwMSInterruptRoutine 例程。
如果PORT_CONFIGURATION_INFORMATION結構的 InterruptSynchronizationMode 成員設定為 InterruptSynchronizePerMessage,Storport 驅動程式會在 IRQL = DIRQL 呼叫迷你埠驅動程式的 HwMSInterruptRoutine 例程,並保留對應至 MessageID 參數中所指出之訊息識別符的中斷微調鎖定 (標識符) 。 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 操作系統驅動程式的需求。
例如,若要定義名為 MyHwMSIRoutine 的 HwMSInterruptRoutine 回呼例程,請使用 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的詳細資訊,請參閱 標註函式行為。
規格需求
需求 | 值 |
---|---|
目標平台 | Universal |
標頭 | storport.h (包含 Storport.h) |
IRQL | DIRQL |