共用方式為


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的不同實例對敏感數據的存取,迷你埠必須呼叫 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的相關信息,請參閱 批注函式行為

要求

要求 價值
目標平臺 普遍
標頭 storport.h (包括 Storport.h)
IRQL DIRQL

另請參閱

PORT_CONFIGURATION_INFORMATION

StorPortAcquireMSISpinLock

StorPortGetMSIInfo

StorPortReleaseMSISpinLock