列舉顯示配接器的子裝置

下列步驟順序說明顯示埠驅動程式、顯示迷你埠驅動程式和影片如何呈現網路 (VidPN) 管理員在初始化階段共同作業,以列舉顯示介面卡的子裝置。

  1. 顯示埠驅動程式會呼叫 display miniport 驅動程式的 DxgkDdiStartDevice 函式。 DxgkDdiStartDevice 會傳回 NumberOfChildren 參數中的 (,) (裝置數目,或可能會因為顯示器介面卡的子系停駐) 而變成。 DxgkDdiStartDevice 也會傳回 NumberOfVideoPresentSources 參數中的 (,) 顯示配接器所支援的視訊顯示來源數目 N。 這些影片呈現來源後續會由數位 0、1、 ...N -1。

  2. 顯示埠驅動程式會呼叫顯示迷你埠驅動程式的 DxgkDdiQueryChildRelations 函式,它會列舉顯示介面卡的子裝置。 DxgkDdiQueryChildRelations 會填入 DXGK_CHILD_DESCRIPTOR 結構的陣列:每個子裝置都有一個。 請注意,顯示器介面卡的所有子裝置都是內建的:監視器和其他連接到顯示介面卡的外部裝置不會被視為子裝置。 如需詳細資訊,請參閱 顯示配接器的子裝置DxgkDdiQueryChildRelations 必須列舉潛在的子裝置,以及初始化時實際存在的子裝置。 例如,如果將膝上型電腦連線到停駐站會導致新的視訊輸出的外觀, 則 DxgkDdiQueryChildRelations 必須列舉該視訊輸出,而不論電腦是否在初始化時停駐。 此外,如果將配接器連接到視訊輸出連接器可讓數個監視器共用連接器, 則 DxgkDdiQueryChildRelations 必須列舉用戶端每個分支的子裝置,而不論用戶端是否在初始化時連線。

  3. 針對每個子裝置 (列舉,如步驟 1) 中所述,其中具有 HpdAwarenessInterruptibleHpdAwarenessPolled的 HPD 感知值,顯示埠驅動程式會呼叫顯示迷你埠驅動程式的 DxgkDdiQueryChildStatus 函式,以判斷子裝置是否具有與其連線的外部裝置。

  4. 顯示埠驅動程式會為每個符合下列其中一個條件的子裝置建立 PDO:

    • 子裝置具有 HpdAwarenessAlwaysConnected 的 HPD感知值。
    • 子裝置具有 HpdAwarenessPolledHpdAwarenessInterruptible的 HPD 感知值,而作業系統會從先前的查詢或通知得知子裝置已連線外部裝置。
  5. 顯示埠驅動程式會針對符合下列其中一個條件的每個子裝置呼叫 display miniport 驅動程式的 DxgkDdiQueryDeviceDescriptor 函式:

    • 已知子裝置已連接外部裝置。
    • 假設子裝置已連接外部裝置。
    • 子裝置的類型為 TypeOther

    如果連線的監視器 (或其他顯示裝置) 支援 EDID 描述元,DxgkDdiQueryDeviceDescriptor會傳回擴充顯示資訊資料 (EDID) 區塊。

    注意:在初始化期間,顯示埠驅動程式會呼叫每個監視器的 DxgkDdiQueryDeviceDescriptor ,以取得監視器 EDID 的第一個 128 位元組區塊。 這可讓顯示埠驅動程式在初始化時需要:PnP 硬體識別碼、實例識別碼、相容識別碼和裝置文字。 稍後,監視類別函式驅動程式 (Monitor.sys) 會為每個監視器呼叫 DxgkDdiQueryDeviceDescriptor ,以取得前一個 128 位元組 EDID 區塊和其他 128 位元組 EDID 擴充區塊。 這表示將會呼叫顯示迷你埠驅動程式兩次,以提供每個監視器 EDID 的前 128 個位元組區塊。

  6. VidPN 管理員會取得顯示配接器所支援之所有視訊呈現來源和視訊簡報目標的識別碼。 影片呈現來源是由數位 0、1、 ...N - 1,其中 N 是顯示迷你埠驅動程式的 DxgkDdiStartDevice 函式所傳回的來源數目。 影片呈現的目標具有先前由顯示迷你埠驅動程式在 DxgkDdiQueryChildRelations期間建立的唯一整數識別碼。 TypeVideoOutput類型的每個子裝置都會與影片呈現目標相關聯,而子裝置之DXGK_CHILD_DESCRIPTOR結構的ChildUid成員會用來做為影片呈現目標的識別碼。

  7. VidPN 管理員會使用下列程式來建置初始 VidPN。

    • 如果在登錄中記錄最後一個已知的良好 VidPN,請使用它作為初始 VidPN。

    • 否則,呼叫顯示迷你埠驅動程式的 DxgkDdiRecommendFunctionalVidPn 函式以取得初始 VidPN。

    • 如果 DxgkDdiRecommendFunctionalVidPn 無法傳回可接受的功能 VidPN,請建立包含一個影片簡報路徑的簡單 VidPN;也就是說,一個 (來源,目標) 組。 呼叫顯示迷你埠驅動程式的 DxgkDdiIsSupportedVidPn 函式,以確認建議的 VidPN 能夠運作。 如果 DxgkDdiIsSupportedVidPn 報告建議的 VidPN 將無法運作,請持續嘗試,直到找到適當的 VidPN 為止。

    • 呼叫顯示迷你埠驅動程式的 DxgkDdiEnumVidPnCofuncModality 函式,以判斷 VidPN 可用的來源和目標模式。