Condividi tramite


Modalità esclusiva DirectDraw

[La funzionalità associata a questa pagina, DirectShow, è una funzionalità legacy. È stata sostituita da MediaPlayer, IMFMediaEnginee Acquisizione audio/video in Media Foundation. Queste funzionalità sono state ottimizzate per Windows 10 e Windows 11. Microsoft consiglia vivamente di usare un nuovo codice MediaPlayer, IMFMediaEngine e Acquisizione audio/video in Media Foundation anziché DirectShow, quando possibile. Microsoft suggerisce che il codice esistente che usa le API legacy venga riscritto per usare le nuove API, se possibile.

Nota

Questo argomento si applica solo a VMR-7. In VMR-9 si abilita la modalità esclusiva fornendo il proprio allocatore-relatore in modalità esclusiva. Questa operazione è relativamente semplice se si usa il metodo IVMRSurfaceAllocatorNotify9::AllocateSurfaceHelper. L'esempio VMR9Allocator illustra come implementare un allocatore-relatore personalizzato.

 

In modalità esclusiva DirectDraw, un'applicazione assume il controllo esclusivo dell'hardware grafico. Ciò è utile per applicazioni come giochi o applicazioni video a schermo intero. In genere, vmR crea gli oggetti DirectDraw e imposta il livello cooperativo su normale. Tuttavia, per eseguire VMR in modalità esclusiva DirectDraw, l'applicazione stessa deve creare l'oggetto DirectDraw e la superficie primaria e chiamare SetCooperativeLevel per specificare la modalità esclusiva.

VmR ha un allocatore-relatore speciale che consente l'esecuzione in modalità esclusiva DirectDraw. Per configurare vmR per l'uso di questo allocatore-relatore:

  1. Creare il grafico del filtro e aggiungervi la macchina virtuale virtuale usando il metodo IFilterGraph::AddFilter. Per un esempio di codice, vedere modalità senza finestra di VMR.

  2. Creare l'allocatore-relatore in modalità esclusiva:

    IVMRImagePresenterExclModeConfig* pExclModeConfig;
    CoCreateInstance(
            CLSID_AllocPresenterDDXclMode,
            NULL,
            CLSCTX_INPROC_SERVER,
            IID_IVMRImagePresenterExclModeConfig,
            (void**)&pExclModeConfig
            );
    
  3. Configurare il nuovo allocatore-relatore:

    pExclModeConfig->SetXlcModeDDObjAndPrimarySurface(...);
    
  4. Collegare il nuovo allocatore-relatore alla macchina virtuale.

  5. Compilare il resto del grafico del filtro nei modi consueti.

modalità vmr dell'operazione