共用方式為


IO_CONNECT_INTERRUPT_PARAMETERS結構 (wdm.h)

IO_CONNECT_INTERRUPT_PARAMETERS 結構包含驅動程式提供給 IoConnectInterruptEx 例程的參數,以 (在 ISR) 註冊中斷服務例程。

語法

typedef struct _IO_CONNECT_INTERRUPT_PARAMETERS {
  ULONG Version;
  union {
    IO_CONNECT_INTERRUPT_FULLY_SPECIFIED_PARAMETERS FullySpecified;
    IO_CONNECT_INTERRUPT_LINE_BASED_PARAMETERS      LineBased;
    IO_CONNECT_INTERRUPT_MESSAGE_BASED_PARAMETERS   MessageBased;
  };
} IO_CONNECT_INTERRUPT_PARAMETERS, *PIO_CONNECT_INTERRUPT_PARAMETERS;

成員

Version

在輸入時,指定要由 IoConnectInterruptEx執行的特定作業,如下所示。

版本值 IoConnectInterruptEx 作業
CONNECT_FULLY_SPECIFIED 使用 隨插即用 (PnP) 管理員所提供的資訊連接到特定的中斷。 使用 FullySpecified 成員來提供作業的其他參數。
CONNECT_LINE_BASED 為裝置的行型中斷註冊 InterruptService 例程。 使用 LineBased 成員提供作業的其他參數。
CONNECT_MESSAGE_BASED 為裝置的訊息訊號中斷註冊 InterruptMessageService 例程。 如果裝置只有以行為基礎的中斷,呼叫端也可以指定後援 InterruptService 例程。 使用 MessageBased 成員提供作業的其他參數。
 

傳回時,例程會提供作業的相關信息,如下所示。

版本值 描述
CONNECT_FULLY_SPECIFIED 在不支援它的平臺上,針對 Version 指定的呼叫端CONNECT_LINE_BASED或CONNECT_MESSAGE_BASED。 使用 CONNECT_FULLY_SPECIFIED 重試作業。
CONNECT_LINE_BASED 指定的呼叫端CONNECT_MESSAGE_BASED,且呼叫端的後援 InterruptService 例程已註冊。
CONNECT_MESSAGE_BASED 指定的呼叫端CONNECT_MESSAGE_BASED,而且呼叫端的 InterruptMessageService 例程已註冊。

FullySpecified

指定當 Version 的值為 CONNECT_FULLY_SPECIFIED (或 CONNECT_FULLY_SPECIFIED_GROUP 時,IoConnectInterruptEx 所要執行之作業的其他參數,如果群組成員是使用) 。 如需詳細資訊,請參閱 使用ioConnectInterruptEx CONNECT_FULLY_SPECIFIED版

PhysicalDeviceObject

裝置 PDO 的指標。

InterruptObject

接收裝置之中斷物件集指標的位置指標。

ServiceRoutine

要註冊為裝置中斷之ISR之 InterruptService 例程的指標。

ServiceContext

指定要當做 InterruptService 例程之 ServiceContext 參數傳遞的值。

SpinLock

微調鎖定的指標,做為中斷集的中斷微調鎖定,或 為 NULL。 如果 為 NULL,系統會配置微調鎖定作為中斷微調鎖定。 如果不是 NULL,您應該已使用 KeInitializeSpinLock 初始化微調鎖定。

SynchronizeIrql

指定ISR執行所在的 DIRQL。 如果ISR處理多個中斷向量,或驅動程式有多個ISR,這個值必須是一組中斷的最大 IRQL。 中斷的 IRQL 會在 cmResourceTypeInterrupt 資源中傳入CM_PARTIAL_RESOURCE_DESCRIPTORu.Interrupt.Level 成員。 否則, IrqlSynchronizeIrql 值完全相同。

FloatingSave

指定當中斷發生時,系統是否儲存處理器的浮點狀態。 如果 為 TRUE,則系統會儲存浮點狀態。

ShareVector

指定中斷向量是否可共用。 行型PCI中斷必須可共用。 針對訊息訊號 PCI 中斷,驅動程式寫入器可以選擇其中斷是否可共用,但應該選擇預設為可共用。

向量

指定在 CM_PARTIAL_RESOURCE_DESCRIPTOR u.Interrupt.Vector 成員的 CmResourceTypeInterrupt 資源中傳遞的插斷向量。

Irql

指定在 CM_PARTIAL_RESOURCE_DESCRIPTOR u.Interrupt.Level 成員的 CmResourceTypeInterrupt 資源中傳遞的 DIRQL。 從 Windows 8 開始,驅動程式可以註冊在被動層級執行的ISR,方法是將 IrqlSynchronizeIrql 設定為 PASSIVE_LEVEL,並將 SpinLock 設定為 NULL。 如需詳細資訊,請參閱 使用 Passive-Level 插斷服務例程

InterruptMode

指定KINTERRUPT_MODE,判斷插斷是 (InterruptModeLevelSensitive) 還是邊緣觸發 (InterruptMode = = Latched) 觸發。 若為PCI總線的共享中斷線,請指定 LevelSensitive。 針對PCI訊息訊號中斷,指定 [閂鎖]。

ProcessorEnableMask

指定 KAFFINITY 遮罩,代表裝置中斷可能發生的一組處理器。 此值會傳入位於 CM_PARTIAL_RESOURCE_DESCRIPTOR u.Interrupt.Affinity 成員的 CmResourceTypeInterrupt 資源中。

分組

指定組號,識別要傳遞中斷的處理器群組。 一般而言,驅動程式會在 IRP_MN_START_DEVICE 要求中包含的翻譯資源中接收其組號。 從 Windows 7 開始,如果IO_CONNECT_INTERRUPT_PARAMETERS結構的 Version 成員設定為 CONNECT_FULLY_SPECIFIED_GROUP,則會使用群組成員。 如果 Version 設定為 CONNECT_FULLY_SPECIFIED,則會忽略 Group 成員,在此情況下,中斷傳遞的群組編號一律為 0。

LineBased

指定當 Version 的值為 CONNECT_LINE_BASED 時,IoConnectInterruptEx 所要執行之作業的其他參數。 如需詳細資訊,請參閱 使用ioConnectInterruptEx CONNECT_LINE_BASED版本

PhysicalDeviceObject

實體裝置物件的指標, (裝置的 PDO) 。

InterruptObject

接收裝置之中斷物件集指標的位置指標。

ServiceRoutine

要註冊為裝置中斷之ISR之 InterruptService 例程的指標。

ServiceContext

指定要當做 InterruptService 例程之 ServiceContext 參數傳遞的值。

SpinLock

微調鎖定的指標,做為中斷集的中斷微調鎖定,或 為 NULL。 如果 為 NULL,系統會配置微調鎖定作為中斷微調鎖定。 如果不是 NULL,您應該已使用 KeInitializeSpinLock 初始化微調鎖定。

SynchronizeIrql

指定執行ISR的最小裝置 IRQL (DIRQL) 。 只有當此值大於一組中斷的最大 IRQL 時,系統才會使用此值;否則,系統會使用最大 IRQL。 驅動程序幾乎一律為 SynchronizeIrql 指定PASSIVE_LEVEL。 (只有在ISR必須在特定 IRQL.) 上執行時才指定PASSIVE_LEVEL以外的值,從 Windows 8 開始,指派給裝置的一組以行為基礎的中斷資源可以共用在 IRQL = PASSIVE_LEVEL執行的 ISR。 如果 SynchronizeIrql = PASSIVE_LEVEL,而且此一組中斷的最大 IRQL PASSIVE_LEVEL,則會在PASSIVE_LEVEL呼叫 InterruptService 例程。 如需詳細資訊,請參閱 使用 Passive-Level 插斷服務例程

FloatingSave

指定當中斷發生時,系統是否儲存處理器的浮點狀態。 如果 為 TRUE,則系統會儲存浮點狀態。 針對以 x86 為基礎的和 Itanium 型平臺,此值必須設定為 FALSE。 如需儲存浮點和MMX狀態的詳細資訊,請參閱 在WDM驅動程式中使用浮點或MMX

MessageBased

指定當 Version 值為 CONNECT_MESSAGE_BASED 時,IoConnectInterruptEx 所要執行的作業的其他參數。 如需詳細資訊,請參閱 使用ioConnectInterruptEx CONNECT_MESSAGE_BASED 版本

PhysicalDeviceObject

裝置 PDO 的指標。

ConnectionContext

接收連接內容指標的位置指標。 如果傳回 的 Version 值為 CONNECT_LINE_BASED,則例程會提供 KINTERRUPT 結構的指標。 如果傳回 的 Version 值為 CONNECT_MESSAGE_BASED,例程會提供 IO_INTERRUPT_MESSAGE_INFO 結構的指標。

為了將轉換降至最低, ConnectionContext 會定義為等位。 使用 ConnectionContext.Generic 將位置視為 PVOID。 使用 ConnectionContext.InterruptObjectConnectionContext.InterruptMessageTable 分別將位置視為 PKINTERRUPT 或PIO_INTERRUPT_MESSAGE_INFO變數。

泛型

IoConnectInterruptEx 例程寫入連接內容指標的 PVOID 變數指標。

InterruptMessageTable

PIO_INTERRUPT_MESSAGE_INFO變數的指標, IoConnectInterruptEx 例程會將指標寫入連接內容。

InterruptObject

IoConnectInterruptEx 例程寫入連接內容指標的 PKINTERRUPT 變數指標。

MessageServiceRoutine

為裝置中斷註冊為ISR的 InterruptMessageService 例程指標。

ServiceContext

指定要作為中斷之 InterruptMessageServiceInterruptService 例程之 ServiceContext 參數傳遞的值。

SpinLock

微調鎖定的指標,做為中斷集的中斷微調鎖定,或 NULL。 如果 為 NULL,系統會配置微調鎖定作為中斷微調鎖定。 如果不是 NULL,您應該已使用 KeInitializeSpinLock 初始化微調鎖定。

SynchronizeIrql

指定執行ISR的最小裝置 IRQL (DIRQL) 。 如果系統大於一組中斷的最大 IRQL,則系統只會使用此值;否則,系統會使用最大 IRQL。 驅動程序幾乎一律會指定 SynchronizeIrql 的PASSIVE_LEVEL。

FloatingSave

指定當中斷發生時,系統是否儲存處理器的浮點狀態。 如果 為 TRUE,則系統會儲存浮點狀態。

FallBackServiceRoutine

用於行型中斷之 ISR 的 InterruptService 例程指標。 如果裝置沒有訊息訊號中斷,但有行型中斷,則系統會註冊此例程來處理行型中斷。

備註

IoConnectInterruptEx 例程採用單一 Parameters 參數,指向包含作業所有參數的IO_CONNECT_INTERRUPT_PARAMETERS結構。

規格需求

需求
標頭 wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h)

另請參閱

IoConnectInterruptEx