Condividi tramite


Dichiarazione del modello factory

[La funzionalità associata a questa pagina, DirectShow, è una funzionalità legacy. È stata sostituita da MediaPlayer, FMMediaEngine e Audio/Video Capture in Media Foundation. Queste funzionalità sono state ottimizzate per Windows 10 e Windows 11. Microsoft consiglia vivamente che il nuovo codice usi MediaPlayer, FMMediaEngine e Audio/Video Capture 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.

Il passaggio successivo consiste nel dichiarare il modello di factory per il filtro. Un modello di factory è una classe C++ che contiene informazioni per la class factory. Nella DLL dichiarare una matrice globale di oggetti CFactoryTemplate , uno per ogni filtro o componente COM nella DLL. La matrice deve essere denominata g_Templates. Per altre informazioni sui modelli di factory, vedere Come creare una DLL del filtro DirectShow.

Il m_pAMovieSetup_Filter membro del modello factory è un puntatore alla struttura AMOVIESETUP_FILTER descritta in precedenza. Nell'esempio seguente viene illustrato un modello factory usando la struttura specificata nell'esempio precedente:

CFactoryTemplate g_Templates[] = {
    {
        g_wszName,                      // Name.
        &CLSID_SomeFilter,              // CLSID.
        CSomeFilter::CreateInstance,    // Creation function.
        NULL,
        &sudFilterReg                   // Pointer to filter information.
    }
};
int g_cTemplates = sizeof(g_Templates) / sizeof(g_Templates[0]);

Se non sono state dichiarate informazioni sul filtro, m_pAMoveSetup_Filter può essere NULL.

Come registrare filtri DirectShow