IWDFDevice3::CreateInterrupt 方法 (wudfddi.h)
[警告: UMDF 2 是最新版的 UMDF,並取代 UMDF 1。 所有新的UMDF驅動程式都應該使用UMDF 2撰寫。 未將新功能新增至 UMDF 1,且較新版本的 #D2C271BCF946340C8BAE8931E9051AFA6 上,UMDF 1 的支援有限。 通用 Windows 驅動程式必須使用 UMDF 2。 如需詳細資訊,請參閱使用 UMDF 使用者入門。]
CreateInterrupt 方法會建立架構中斷物件。
語法
HRESULT CreateInterrupt(
[in] PWUDF_INTERRUPT_CONFIG Configuration,
[out] IWDFInterrupt **ppInterrupt
);
參數
[in] Configuration
呼叫WUDF_INTERRUPT_CONFIG_INIT宏所初始化之WUDF_INTERRUPT_CONFIG結構的指標。
[out] ppInterrupt
緩衝區的指標,接收新中斷物件的 IWDFInterrupt 介面指標。
傳回值
如果作業成功,方法會傳回S_OK。 否則,這個方法會傳回 Winerror.h 中定義的其中一個錯誤碼。
備註
您的驅動程式必須針對其裝置所需的每個插斷向量呼叫 CreateInterrupt 一次。 如果裝置支援訊息訊號中斷 (MSI) ,驅動程式必須為每個裝置可支援的訊息建立插斷物件。
驅動程式通常會從 OnDeviceAdd 回呼函式呼叫 CreateInterrupt 方法,但也可以從 IPnpCallbackHardware2::OnPrepareHardware 呼叫此方法。
隨插即用 (PnP) 管理員將系統資源指派給裝置之後,架構會將裝置指派中斷資源的相關信息儲存在驅動程式已建立的中斷物件中。 (不支援 隨插即用 驅動程式無法使用插斷物件。)
系統可能不會指派裝置可支援的所有中斷資源。 例如,驅動程式會為能夠支援八個 MSI 訊息的裝置建立八個中斷物件。 不過,系統可能只會將一則訊息指派給裝置。 在此情況下,將會使用七個中斷物件。
一般而言,您的驅動程式應該在中斷對象的內容空間中儲存插斷特定資訊,例如裝置插斷緩存器複製的內容。 驅動程式會呼叫 IWDFObject::AssignContext 來註冊內容,並在對象變成無效時要求通知。
UMDF 支援從 Windows 8 開始的層級觸發中斷。 如果 Windows 8 之前的操作系統上執行的驅動程式會在 OnDeviceAdd 中建立層級觸發的中斷,CreateInterrupt 會成功,因為操作系統尚未指派資源。 不過,當架構稍後嘗試連線中斷時,裝置將無法啟動。
如需在 UMDF 驅動程式中處理中斷的詳細資訊,請參閱 存取硬體和處理中斷。
範例
HRESULT hr;
IWDFInterrupt* pInterrupt;
WUDF_INTERRUPT_CONFIG interruptConfig;
WUDF_INTERRUPT_CONFIG_INIT(&interruptConfig,
MyInterruptIsr,
MyInterruptWorkItem);
hr = pDevice->Create(&interruptConfig,
&pInterrupt);
規格需求
需求 | 值 |
---|---|
終止支援 | 在 UMDF 2.0 和更新版本中無法使用。 |
目標平台 | 桌面 |
最低UMDF版本 | 1.11 |
標頭 | wudfddi.h |
Dll | WUDFx.dll |