WDF_INTERRUPT_CONFIG結構 (wdfinterrupt.h)
[適用於 KMDF 和 UMDF]
WDF_INTERRUPT_CONFIG 結構包含裝置中斷的組態資訊。
語法
typedef struct _WDF_INTERRUPT_CONFIG {
ULONG Size;
WDFSPINLOCK SpinLock;
WDF_TRI_STATE ShareVector;
BOOLEAN FloatingSave;
BOOLEAN AutomaticSerialization;
PFN_WDF_INTERRUPT_ISR EvtInterruptIsr;
PFN_WDF_INTERRUPT_DPC EvtInterruptDpc;
PFN_WDF_INTERRUPT_ENABLE EvtInterruptEnable;
PFN_WDF_INTERRUPT_DISABLE EvtInterruptDisable;
PFN_WDF_INTERRUPT_WORKITEM EvtInterruptWorkItem;
PCM_PARTIAL_RESOURCE_DESCRIPTOR InterruptRaw;
PCM_PARTIAL_RESOURCE_DESCRIPTOR InterruptTranslated;
WDFWAITLOCK WaitLock;
BOOLEAN PassiveHandling;
WDF_TRI_STATE ReportInactiveOnPowerDown;
BOOLEAN CanWakeDevice;
} WDF_INTERRUPT_CONFIG, *PWDF_INTERRUPT_CONFIG;
成員
Size
這個 結構的大小,以位元組為單位。
SpinLock
架構微調鎖定物件的句柄,由先前呼叫 WdfSpinLockCreate 或 NULL所取得。 如果此參數 NULL,則架構會使用內部微調鎖定物件。 架構會在呼叫驅動程式的 EvtInterruptSynchronize 事件回呼函式,以及 驅動程式呼叫 WdfInterruptAcquireLock時,先取得微調鎖定。 針對被動層級中斷處理,請將 設定為 NULL。
從UMDF 2.0版開始,UMDF一律使用被動層級中斷處理。 在此情況下,請將這個成員設定為 NULL。
ShareVector
WDF_TRI_STATE型別值。 如果此值 WdfTrue,則可以共用插斷向量。 如果值 WdfFalse,則無法共用插斷向量。 如果值 WdfDefault,則 PnP 管理員會使用總線驅動程式的值。
FloatingSave
布爾值,如果 TRUE,表示當裝置中斷時,系統會儲存處理器的浮點和 MMX 狀態。 如果 FALSE,則系統不會儲存浮點和 MMX 狀態。 只有當驅動程式 EvtInterruptIsr 回呼函式必須使用浮點或 MMX 快取器時,驅動程式才應將此值設定為 TRUE。 如需儲存浮點和 MMX 狀態的詳細資訊,請參閱在 WDM 驅動程式中使用浮點或 MMX 。
從UMDF 2.0版開始,會忽略此成員。
AutomaticSerialization
布爾值,如果 TRUE,表示架構會同步執行中斷物件的 EvtInterruptDpc 或 EvtInterruptWorkItem 回呼函式,以及中斷父物件下其他物件的回呼函式。 如需詳細資訊,請參閱下列一節。
EvtInterruptIsr
驅動程式 EvtInterruptIsr 回呼函式的指標。 這個指標不能 NULL。
EvtInterruptDpc
驅動程式 EvtInterruptDpc 回呼函式的指標,或 NULL。 驅動程式可以提供 EvtInterruptWorkItem 或 EvtInterruptDpc,但不能同時提供兩者。
EvtInterruptEnable
驅動程式 EvtInterruptEnable 回呼函式的指標,或 NULL。
EvtInterruptDisable
驅動程式 EvtInterruptDisable 回呼函式的指標,或 NULL。
EvtInterruptWorkItem
驅動程式 EvtInterruptWorkItem 回呼函式的指標,或 NULL。 驅動程式可以提供 EvtInterruptWorkItem 或 EvtInterruptDpc,但不能同時提供兩者。 EvtInterruptWorkItem 成員可在 1.11 版和更新版本的 KMDF 中使用。
InterruptRaw
CM_PARTIAL_RESOURCE_DESCRIPTOR 結構的指標,描述系統指派給中斷 原始資源。 只有在 EvtDevicePrepareHardware 回呼中建立中斷時,才會使用此成員。 InterruptRaw 成員可在 1.11 版和更新版本的 KMDF 中使用。
InterruptTranslated
CM_PARTIAL_RESOURCE_DESCRIPTOR 結構的指標,描述系統指派給中斷 翻譯的資源。 只有在 EvtDevicePrepareHardware 回呼中建立中斷時,才會使用此成員。 InterruptTranslated 成員可在 1.11 版和更新版本的 KMDF 中使用。
WaitLock
架構等候鎖定物件的句柄,由先前呼叫 WdfWaitLockCreate 或 NULL取得。 如果 WaitLock 為非NULL,PassiveHandling 必須設定為 TRUE 。
WaitLock 成員可在 1.11 版和更新版本的 KMDF 中使用。 如需
PassiveHandling
設定為 FALSE,以在裝置的 IRQL (DIRQL) 進行中斷處理。 設定為 [TRUE,以進行被動層級中斷處理。 PassiveHandling 成員可在 1.11 版和更新版本的 KMDF 中使用。 從UMDF 2.0版開始,WDF_INTERRUPT_CONFIG_INIT 一律將此成員設定為TRUE。
ReportInactiveOnPowerDown
此成員僅適用於 KMDF。
只有在驅動程式尚未呼叫 WdfDeviceInitSetPowerNotPageable時,才會套用 WDF_TRI_STATE型別值。 此成員可以有下列其中一個值:
WdfTrue - KMDF 會在裝置轉換為低功率 (Dx) 狀態時報告中斷非作用中。 在 Windows 8 之前的作系統中,架構的行為符合 WdfFalse中所述的行為。
WdfFalse - 當裝置轉換為低功率 (Dx) 狀態時,KMDF 會中斷中斷。
WdfDefault - 以 ARM 為基礎的平臺上,架構的行為會比對 wdfTrue 所述。 在其他平臺上,架構的行為會比對 WdfFalse中所述。
ReportInactiveOnPowerDown 成員可在 1.11 版和更新版本的 KMDF 中使用。 UMDF 2.0 版無法使用。
如需報告中斷非使用中的詳細資訊,請參閱 讓ISR作用中或非使用中。
CanWakeDevice
布爾值,指出是否使用中斷從低電源狀態喚醒裝置。 如果 FALSE,則不會使用中斷來喚醒裝置。 如果 TRUE,則會使用中斷來喚醒裝置。 CanWakeDevice 成員可從 KMDF 1.13 版和 UMDF 2.0 版開始提供。
備註
WDF_INTERRUPT_CONFIG 結構會作為 WdfInterruptCreate的輸入。
若要初始化 WDF_INTERRUPT_CONFIG 結構,您的驅動程式必須先呼叫 WDF_INTERRUPT_CONFIG_INIT,然後填入 WDF_INTERRUPT_CONFIG_INIT 未初始化的結構成員。
如果 自動串行化 為 TRUE,則適用下列規則:
- 如果中斷的父對象執行層級是 WdfExecutionLevelPassive,則驅動程式可以在此組態結構中提供 EvtInterruptWorkItem,但不應該在此組態結構中提供 EvtInterruptDpc。
- 如果中斷的父對象執行層級是 WdfExecutionLevelDispatch,則驅動程式可以提供 EvtInterruptDpc,但不應該在此組態結構中提供 EvtInterruptWorkItem。 在第二個案例中,插斷物件本身仍然可以是被動的。
如需 自動串行化 和同步處理驅動程式回呼函式的詳細資訊,請參閱 DriversFramework-Based 同步處理技術。
根據預設,KMDF 函式驅動程式是可分頁的電源。 驅動程式會呼叫 WdfDeviceInitSetPowerNotPageable,以指定它是不可分頁的。
在 1.11 之前的 KMDF 版本中,當裝置轉換成低功率 (Dx) 狀態時,架構一律會中斷電源可分頁驅動程式的中斷。 從 KMDF 1.11 版開始,您可以藉由設定此結構的 ReportInactiveOnPowerDown 成員來變更此行為。 針對非電源可分頁驅動程式,當發生 Dx 狀態轉換時,中斷會維持連線,而不論 reportInactiveOnPowerDown 中所設定的值為何。
如果 UMDF 驅動程式設定 ReportInactiveOnPowerDown,則會忽略此值。
如需在架構型驅動程式中處理中斷的詳細資訊,請參閱 處理硬體中斷。
驅動程式可以使用此結構的 CanWakeDevice 成員來建立插斷,可用來將裝置從低功率 Dx 狀態帶回 D0。 驅動程式的 EvtInterruptIsr 回呼例程會排程在裝置進入 D0 之後於 IRQL = PASSIVE_LEVEL執行。
如需詳細資訊,請參閱 使用中斷來喚醒裝置。
需求
要求 | 價值 |
---|---|
最低 KMDF 版本 | 1.0 |
最低 UMDF 版本 | 2.0 |
標題 | wdfinterrupt.h (包括 Wdf.h) |