USB 驅動程式中的選擇性暫停 (WDF)
USB 函式驅動程式藉由實作 USB 選擇性暫停,支援運行時間閒置偵測。 以下是驅動程式開發人員的內容,說明如何在以 Windows® Driver Foundation (WDF) 為基礎的 USB 驅動程式中實作選擇性暫停。
關於選擇性暫停
選擇性暫停是能夠關閉電源,稍後再繼續閑置的USB裝置,而連接它的電腦仍處於工作狀態, (S0) 。 針對有能源效率的作業,特別是在行動計算機上,所有 USB 裝置和驅動程式都應該支援選擇性暫停。 閑置時關閉裝置電源,但當系統維持 S0 狀態時,具有下列顯著優點:
- 選擇性暫停可節省電源。
- 選擇性暫停有助於降低環境因素,例如熱負載和雜訊。
如果您的裝置硬體可以在閑置時關閉電源,驅動程式應該支援此功能。 以 Windows® Driver Foundation (WDF 為基礎的 USB 驅動程式選擇性暫停支援,) 最多需要一些額外的回呼,超過基本 隨插即用 支援所需的額外回呼。
USB 裝置的每個函式驅動程式都應該實作積極電源管理,以在系統執行時暫停閑置的裝置。 本主題描述如何在 WDF 型驅動程式中實作選擇性暫停。 如果您不熟悉 WDF,請參閱 Windows 驅動程式套件 (WDK) 和使用 Windows Driver Foundation 開發驅動程式。
USB 裝置透過USB選擇性暫停支援運行時間閒置偵測。 選擇性暫停可讓閑置裝置進入暫停狀態,而不會影響連線到相同中樞的其他裝置,或在多重功能裝置的情況下,不會影響裝置中的其他功能。 當所有裝置或功能都暫停時,整個中樞或多功能裝置都可以關閉電源。
從硬體的觀點來看,選擇性暫停是USB埠上的實體狀態。 當附加至埠的所有函式都處於閑置狀態時,埠可以進入選擇性暫停。
若要符合 USB 規格,所有 USB 裝置都必須支援選擇性暫停。 當 USB 總線閒置時,裝置必須能夠關閉電源。 Microsoft 提供的 USB 中樞驅動程式會在硬體層級實作選擇性暫停。
USB 函式驅動程式應該透過 WDF 為其個別裝置函式實作選擇性暫停,其會與總線驅動程式通訊,並管理暫停和繼續裝置功能的裝置 I/O 控制要求。 WDF 可讓內核模式和使用者模式驅動程式支援選擇性暫停。
函式驅動程式 USB 選擇性暫停程式代碼的詳細資料取決於驅動程式是在使用者模式或核心模式中執行。 請考慮下列指導方針:
- 使用使用者模式驅動程式架構 (UMDF) 盡可能實作 USB 驅動程式。 使用者模式驅動程式不太可能損毀系統數據,而且比內核模式驅動程式更容易偵錯。
- 只有在驅動程式透過連續端點串流數據,或需要其他只能在核心模式中使用的功能或資源時,才能使用核心模式驅動程序架構 (KMDF) 。
電源原則擁有權、I/O 佇列和選擇性暫停
裝置堆疊的電源原則擁有者 (PPO) 是驅動程式,可決定裝置在任何指定時間應該進入的電源狀態。 每個裝置堆疊中只有一個驅動程式可以是 PPO。 函式驅動程式通常是其裝置的 PPO。
如果您的 USB 驅動程式支援選擇性暫停,且分層在裝置堆疊中的 PPO 上方,驅動程式不得使用受電源管理的佇列。 這適用於UMDF和 KMDF 驅動程式。 如果要求在裝置暫停時抵達電源管理的佇列,整個裝置堆疊可能會停止。
圖 1 顯示透過其 I/O 佇列將 I/O 要求流向 USB 驅動程式的流程。
在圖中,要求會送達USB驅動程式。 架構會將要求新增至適當的佇列。
如果佇列沒有電源管理,架構會根據針對佇列設定的分派類型向驅動程式提出要求, (循序、平行或手動) 。 然後,驅動程式會處理要求。
如果佇列受到電源管理,且裝置未暫停,架構會根據設定的分派類型向驅動程式提出要求。
不過,如果裝置暫停,架構的動作取決於驅動程式是否為裝置堆疊的 PPO。 如果驅動程式是 PPO,架構會與 USB 父驅動程式通訊,以啟動裝置。 裝置繼續之後,架構會將要求呈現給驅動程式。
如果驅動程式不是 PPO,架構就不會採取任何進一步的動作,因為只有 PPO 可以繼續裝置。 要求會保留在佇列中。 如果 PPO 未收到導致裝置繼續的任何要求,裝置堆疊就會停止。
本節內容
主題 | 描述 |
---|---|
UMDF 驅動程式中的選擇性暫停 | 本主題描述 UMDF 函式驅動程式如何支援 USB 選擇性暫停。 |
USB KMDF 函式驅動程式中的選擇性暫停 | 本主題描述 KMDF 函式驅動程式如何支援 USB 選擇性暫停。 |