DirectDraw 排他モード

[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayer、IMFMediaEngine、Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayerIMFMediaEngineAudio/Video Capture を使用することを強くお勧めします。 Microsoft は、レガシ API を使用する既存のコードを、可能であれば新しい API を使用するように書き換えるよう提案しています。]

注意

このトピックは VMR-7 にのみ適用されます。 VMR-9 では、独自の排他モード アロケーター 発表者を指定して排他モードを有効にします。 IVMRSurfaceAllocatorNotify9::AllocateSurfaceHelper メソッドを使用する場合、これは比較的簡単です。 VMR9Allocator サンプルは、カスタム アロケーター 発表者を実装する方法を示しています。

 

DirectDraw 排他モードでは、アプリケーションはグラフィックス ハードウェアを排他的に制御します。 これは、ゲームなどのアプリケーションや、おそらく全画面表示のビデオ アプリケーションに役立ちます。 通常、VMR は DirectDraw オブジェクトを作成し、協調レベルを標準に設定します。 ただし、DirectDraw 排他モードで VMR を実行するには、アプリケーション自体で DirectDraw オブジェクトとプライマリ サーフェスを作成し、 SetCooperativeLevel を呼び出して排他モードを指定する必要があります。

VMR には、DirectDraw 排他モードで実行できる特別なアロケーター 発表者があります。 このアロケーター 発表者を使用するように VMR を構成するには:

  1. フィルター グラフを作成し、 IFilterGraph::AddFilter メソッドを使用して VMR を追加します。 コード例については、「 VMR ウィンドウレス モード」を参照してください。

  2. 排他モード アロケーター 発表者を作成します。

    IVMRImagePresenterExclModeConfig* pExclModeConfig;
    CoCreateInstance(
            CLSID_AllocPresenterDDXclMode,
            NULL,
            CLSCTX_INPROC_SERVER,
            IID_IVMRImagePresenterExclModeConfig,
            (void**)&pExclModeConfig
            );
    
  3. 新しいアロケーター 発表者を構成します。

    pExclModeConfig->SetXlcModeDDObjAndPrimarySurface(...);
    
  4. 新しいアロケーター 発表者を VMR に接続します。

  5. 通常の方法でフィルター グラフの残りの部分を作成します。

VMR の操作モード