Udostępnij za pośrednictwem


Tryb wykluczania DirectDraw

[Funkcja skojarzona z tą stroną, DirectShow, jest starszą funkcją. Został zastąpiony przez MediaPlayer, IMFMediaEnginei Audio/Video Capture w Media Foundation. Te funkcje zostały zoptymalizowane pod kątem systemów Windows 10 i Windows 11. Firma Microsoft zdecydowanie zaleca, aby nowy kod używał MediaPlayer, IMFMediaEngine i Audio/Video Capture w programie Media Foundation zamiast DirectShow, jeśli to możliwe. Firma Microsoft sugeruje, że istniejący kod, który używa starszych interfejsów API, należy przepisać go do korzystania z nowych interfejsów API, jeśli to możliwe.]

Nuta

Ten temat dotyczy tylko maszyny wirtualnej VMR-7. W maszynie wirtualnej VMR-9 włącz tryb wyłączny, podając własny alokator-prezenter trybu wyłącznego. Jest to stosunkowo proste, jeśli używasz metody IVMRSurfaceAllocatorNotify9::AllocateSurfaceHelper. Przykład VMR9Allocator pokazuje, jak zaimplementować niestandardowy prezenter alokatora.

 

W trybie wyłączności DirectDraw aplikacja przejmuje wyłączną kontrolę nad sprzętem graficznym. Jest to przydatne w przypadku aplikacji, takich jak gry, lub aplikacje wideo pełnoekranowe. Zwykle maszyna wirtualna tworzy obiekty DirectDraw i ustawia poziom współpracy na normalny. Jednak aby uruchomić maszynę wirtualną VMR w trybie wyłączności DirectDraw, aplikacja musi utworzyć obiekt DirectDraw i powierzchnię podstawową, a następnie wywołać SetCooperativeLevel, aby określić tryb wyłączności.

Maszyna wirtualna ma specjalny prezenter alokatora, który umożliwia jego uruchamianie w trybie wyłącznym DirectDraw. Aby skonfigurować maszynę wirtualną do używania tego alokatora-prezentera:

  1. Utwórz wykres filtru i dodaj do niego maszynę wirtualną przy użyciu metody IFilterGraph::AddFilter. Aby zapoznać się z przykładem kodu, zobacz tryb bez okien maszyny wirtualnej.

  2. Utwórz alokator-prezenter trybu wyłącznego:

    IVMRImagePresenterExclModeConfig* pExclModeConfig;
    CoCreateInstance(
            CLSID_AllocPresenterDDXclMode,
            NULL,
            CLSCTX_INPROC_SERVER,
            IID_IVMRImagePresenterExclModeConfig,
            (void**)&pExclModeConfig
            );
    
  3. Skonfiguruj nowy prezenter alokatora:

    pExclModeConfig->SetXlcModeDDObjAndPrimarySurface(...);
    
  4. Podłącz nowy prezenter alokatora do maszyny wirtualnej.

  5. Skompiluj resztę wykresu filtru w zwykły sposób.

tryby vmR operacji