共用方式為


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 實例對敏感數據的存取,迷你埠必須呼叫 StorPortAcquireMSISpinLockStorPortReleaseMSISpinLock 例程,以取得和釋放 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的詳細資訊,請參閱 標註函式行為

規格需求

需求
目標平台 Universal
標頭 storport.h (包含 Storport.h)
IRQL DIRQL

另請參閱

PORT_CONFIGURATION_INFORMATION

StorPortAcquireMSISpinLock

StorPortGetMSIInfo

StorPortReleaseMSISpinLock