共用方式為


監視熱插即用外掛程式偵測

此頁面的資訊適用于使用 WDDM 2.2 版舊版實作的圖形驅動程式。

顯示器介面卡上的視訊輸出會被視為顯示器介面卡的子裝置。 連接到輸出的監視器或其他外部顯示裝置不會被視為子裝置。 在初始化期間,顯示迷你埠驅動程式的 DxgkDdiQueryChildRelations 函式會為每個子裝置指派一個類型和 HPD 感知值。 此類型是其中一個 DXGK_CHILD_DEVICE_TYPE 列舉值:

  • TypeVideoOutput

  • TypeOther

HPD 感知值是其中一個 DXGK_CHILD_DEVICE_HPD_AWARENESS 列舉值:

  • HpdAwarenessAlwaysConnected

  • HpdAwarenessInterruptible

  • HpdAwarenessPolled

具有 TypeVideoOutput 類型的子裝置,以及 HpdAwarenessAlwaysConnected 以外的任何 HPD 感知值,稱為 影片輸出連接器

如果顯示迷你埠驅動程式無法判斷監視器是否連線到視訊輸出,驅動程式應該模擬可中斷裝置的行為,並將 HPD 感知值設定為 HpdAwarenessInterruptible。 如果顯示迷你埠驅動程式必須指出可中斷的監視器應該連接到視訊輸出,例如當使用者輸入鍵盤快速鍵以切換至電視檢視時,驅動程式應該使用ChildStatus呼叫DxgkCbIndicateChildStatus函式。HotPlug連線設定為TRUE

在某些情況下,作業系統會要求顯示迷你埠驅動程式報告所有具有 HpdAwarenessPolled HPD感知值的視訊輸出連接器狀態。 沒有定期輪詢間隔;相反地,當有特定需要更新可用顯示器裝置和模式清單時,就會提出要求。 例如,當膝上型電腦停駐時,作業系統必須知道監視器是否連線到停駐站上的視訊輸出。 作業系統會針對每個具有HpdAwarenessPolled HPD 感知值的子裝置呼叫顯示迷你埠驅動程式的DxgkDdiQueryChildStatus函式,以提出要求。

對於具有 HpdAwarenessInterruptible之 HPD 感知值的視訊輸出連接器,每當外部顯示器裝置處於熱插即用或未插入狀態時,顯示器迷你埠驅動程式會負責通知作業系統。 顯示迷你埠驅動程式的中斷處理常式代碼會呼叫顯示埠驅動程式的 DxgkCbIndicateChildStatus 函式,以報告外部顯示器裝置已連線到或中斷與特定視訊輸出的連線。 當膝上型電腦停駐時,顯示器迷你埠驅動程式的 DxgkDdiNotifyAcpiEvent 函式必須針對停駐站上的每一個視訊輸出呼叫 DxgkCbIndicateChildStatus ,該埠驅動程式具有 HpdAwarenessInterruptible的 HPD 感知值。

如果 HPD 感知值為 HpdAwarenessPolled 的連接器變成無法使用 (,當膝上型電腦停駐時會遮蔽) ,則顯示迷你埠驅動程式的 DxgkDdiNotifyAcpiEvent 函式必須呼叫 DxgkCbIndicateChildStatus 來回報連接器已中斷連線。

與可攜式電腦上整合式顯示面板相關聯的視訊輸出是不尋常的情況。 作業系統必須知道可攜式電腦是否開啟或關閉,因此連線的概念是用來表示開啟,而未連線的概念是用來表示關閉。 與可攜式電腦上整合式顯示器相關聯的視訊輸出具有 HpdAwarenessInterruptible 的 HPD感知值。 不過,這並不表示顯示介面卡會在開啟或關閉蓋子時產生中斷。 相反地,ACPI BIOS 會在開啟或關閉 Lid 時產生中斷。 該中斷會導致呼叫顯示迷你埠驅動程式的 DxgkDdiNotifyAcpiEvent 函式,它會呼叫 DxgkCbIndicateChildStatus 來報告狀態 (開啟或關閉的 lid) 。 顯示迷你埠驅動程式會藉由將DXGK_CHILD_STATUS結構的HotPlug.Connected成員設定為TRUE,將 (開啟) 或FALSE (關閉) ,並將DXGK_CHILD_STATUS結構傳遞至DxgkCbIndicateChildStatus,以報告 lid 狀態。

下列清單說明當監視器連線到 HD15 連接器時所遵循的步驟,假設連接器具有 HpdAwarenessPolled 的 HPD感知值。

  1. 監視器會連線到顯示器介面卡上的 HD15 連接器。 顯示配接器不會偵測到此為熱插即用事件。

  2. 在未來,使用者模式應用程式會要求顯示裝置的清單。

  3. 對於具有 HpdAwarenessPolled HPD 感知值的顯示器介面卡上的每個視訊輸出連接器,VidPN 管理員會呼叫顯示迷你埠驅動程式的 DxgkDdiQueryChildStatus 函式,以判斷外部顯示裝置是否已連線。 當針對 HD15 連接器呼叫 DxgkDdiQueryChildStatus 時,它會報告外部監視器確實已連線。

下列清單說明當監視器連線到 DVI 連接器時所遵循的步驟,假設連接器具有 HpdAwarenessInterruptible的 HPD 感知值。

  1. 平面面板會連接到顯示介面卡上的 DVI 連接器。

  2. 顯示配接器會偵測熱插即用事件並產生中斷。

  3. 中斷是由顯示迷你埠驅動程式的 DxgkDdiInterruptRoutine 函式處理,此函式會排程延遲的程式調用 (DPC) 。 接著會呼叫顯示迷你埠驅動程式的 DPC 回呼函式。

  4. DPC 回呼函式會將DXGK_CHILD_STATUS結構傳遞至顯示埠驅動程式的 DxgkCbIndicateChildStatus 函式,以報告 DVI 連接器的狀態。 DXGK_CHILD_STATUS 結構的 ChildUid 成員會識別 DVI 連接器,而 HotPlug.Connected 成員 (在此案例中設定為 TRUE ,) 表示外部顯示裝置已連線。

假設 DVI 連接器支援具有三個分支的連接器:DVI、HD15 和 S-video。 在此情況下,顯示器迷你埠驅動程式先前會列舉與一個實體 DVI 連接器相關聯的三個子裝置:DVI-on-DVI、HD15-on-DVI 和 S-video-on-DVI。 每個子裝置都有 TypeVideoOutput 類型,以及 HpdAwarenessInterruptible 的 HPD感知值。 下列清單描述當監視器連線到子系的 HD15 分支時所遵循的步驟。

  1. 顯示配接器會偵測熱插即用事件並產生中斷。

  2. 中斷是由顯示迷你埠驅動程式的 DxgkDdiInterruptRoutine 函式處理,此函式會排程延遲的程式調用 (DPC) 。 接著會呼叫顯示迷你埠驅動程式的 DPC 回呼函式。

  3. DPC 回呼函式會判斷熱插即用事件位於 hdle (HD15-on-DVI) 的 HD15 分支上。

  4. DPC 回呼函式會將DXGK_CHILD_STATUS結構傳遞至 DxgkCbIndicateChildStatus ,以報告 HD15-on-DVI 視訊輸出的狀態。 DXGK_CHILD_STATUS 結構的 ChildUid 成員會識別視訊輸出,而 HotPlug.Connected 成員 (在此案例中設定為 TRUE ,) 表示外部顯示裝置已連線。

下列清單說明在膝上型電腦關閉蓋子時所遵循的步驟。

  1. 在可攜式電腦上關閉此蓋子,這會產生 ACPI 事件。 接著會呼叫顯示迷你埠驅動程式的 DxgkDdiNotifyAcpiEvent 函式。

  2. DxgkDdiNotifyAcpiEvent 會將DXGK_CHILD_STATUS結構傳遞至顯示埠驅動程式的 DxgkCbIndicateChildStatus 函式,以報告與內建顯示面板相關聯的子裝置狀態。 具體而言, DxgkDdiNotifyAcpiEvent 會將 DXGK_CHILD_STATUS 結構的 HotPlug.Connected 成員設定為 FALSE