VRAM 擷取屬性

以針腳為中心的 AVStream 迷你驅動程式必須支援數個屬性,才能擷取至 VRAM。 本節描述迷你驅動程式在 VRAM 處理之前和期間收到的要求順序。

在起始擷取之前,KS Proxy 會傳送 KSPROPERTY_PREFERRED_CAPTURE_SURFACE get-property 要求。 迷你驅動程式應該根據驅動程式擷取至系統記憶體或 VRAM,傳回不同的值。

擷取至系統記憶體

若要擷取至系統記憶體,請傳回KS_CAPTURE_ALLOC_SYSTEM_AGP。

擷取驅動程式接著會收到具有系統記憶體數值型別的 KSPROPERTY_CURRENT_CAPTURE_SURFACE set-property 要求。 擷取驅動程式現在可作為匯流排主機 DMA 裝置,並將資料直接放在系統記憶體中。

在此模式中,擷取驅動程式會在輸出針腳的 AVStrMiniPinProcess 回呼函式中接收系統記憶體緩衝區。

如需如何在釘選進程回呼中實作 DMA 的相關資訊,請參閱 AVStream 中的封包型 DMA

若要擷取多個輸出釘選 (,例如個別的視訊、音訊和 VBI 針腳) ,每個針腳都應該支援 VRAM 屬性和處理,如先前所述。 Proxy 會為每個針腳產生個別的執行緒。

擷取至 VRAM

如果您的驅動程式支援 VRAM 擷取,請傳回 KS_CAPTURE_ALLOC_VRAM 以回應KSPROPERTY_PREFERRED_CAPTURE_SURFACE。

minidriver 接下來會收到 KSPROPERTY_DISPLAY_ADAPTER_GUID get-property 要求,查詢顯示配接器的 GUID。

從廠商提供的圖形迷你埠驅動程式取得介面卡 GUID。 DXGK_INTERFACESPECIFICDATA結構包含要傳回屬性要求中的配接器 GUID。 此結構是由 DirectX 圖形核心 (DXGK) 子系統產生,並在初始化配接器時傳遞至迷你埠驅動程式。

如果針腳支援 VRAM 傳輸,以及顯示器介面卡和下游篩選準則相符的 GUID,則會選取 KS Proxy 模組作為配置器。 Proxy 會使用擷取的介面類別型來設定擷取類型的 KSPROPERTY_CURRENT_CAPTURE_SURFACE 屬性,以通知擷取針腳之間的 VRAM 表面傳輸選取。

如果針腳收到KS_CAPTURE_ALLOC_VRAM,則會接收 VRAM 處理要求。

VRAM 處理要求包含兩個部分。 首先,擷取驅動程式會收到 KSPROPERTY_MAP_CAPTURE_HANDLE_TO_VRAM_ADDRESS的 get 要求。 get 處理常式會收到包含核心模式 VRAM 介面控制碼的 IRP。

擷取驅動程式或顯示迷你埠驅動程式應該將 VRAM 表面控點對應到實際的 VRAM 實體位址。 VRAM 介面控點 不保持有效;請勿 快取以供稍後使用。

傳回屬性要求中提供 之VRAM_SURFACE_INFO_PROPERTY_S 中的對應位址。 擷取驅動程式可以發出 IOCTL,以向顯示迷你埠驅動程式要求對應。

其次,擷取篩選器的 AVStrMiniPinProcess 會在釘選有資料要處理時呼叫。

迷你驅動程式現在應該呼叫 KsPinGetLeadingEdgeStreamPointer ,以取得並鎖定此針腳的前置邊緣資料流程指標。 此函式會傳回 KSSTREAM_POINTER 結構的指標。

此資料流程指標結構包含 KSSTREAM_HEADER的指標。

在資料流程標頭的 [資料 ] 成員中,尋找 VRAM_SURFACE_INFO 結構的指標。

此結構包含傳回的實體位址,以回應KSPROPERTY_MAP_CAPTURE_HANDLE_TO_VRAM_ADDRESS。 代表控制碼的 hSurface 成員為 Null

擷取驅動程式應該:

  • 使用 VRAM 實體位址來設計擷取硬體的程式。

  • 處理視訊畫面完成。

  • 填入 VRAM_SURFACE_INFO的 cbCaptured 成員,並將複製到 VRAM 介面的位元組數目。 請勿使用擷取的位元組數目來設定 KSSTREAM_HEADER 的 DataUsed 成員。 相反地,請將 DataUsed 設定為 sizeof (VRAM_SURFACE_INFO) 。

  • 如果您的擷取驅動程式執行時間戳記,請設定 PresentationTimeDuration,以及相關的 OptionsFlags KSSTREAM_HEADER。

  • 呼叫 KsStreamPointerAdvanceOffsets 以繼續處理或刪除所有複製專案,並藉由呼叫 KsStreamPointerDelete來完成要求。

AVStream 模擬硬體範例驅動程式的Capture.cpp檔案中的CCapturePin::P rocessD3DSurface方法, (Windows 驅動程式套件中的 AVSHwS) (WDK) 範例顯示實作此回呼的一種方式,以用於 VRAM 支援。