Thread e sezioni critiche

[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.

Questa sezione descrive il threading nei filtri DirectShow e i passaggi da eseguire per evitare arresti anomali o deadlock in un filtro personalizzato.

Gli esempi in questa sezione usano pseudocode per illustrare il codice che sarà necessario scrivere. Si presuppone che un filtro personalizzato usi classi derivate dalle classi di base DirectShow, come indicato di seguito:

  • CMyInputPin: derivato da CBaseInputPin.
  • CMyOutputPin: derivato da CBaseOutputPin.
  • CMyFilter: derivato da CBaseFilter.
  • CMyInputAllocator: allocatore del pin di input, derivato da CMemAllocator. Non tutti i filtri hanno bisogno di un allocatore personalizzato. Per molti filtri, la classe CMemAllocator è sufficiente.

In questa sezione vengono trattati gli argomenti seguenti.

Flusso di dati per sviluppatori di filtri

Scrittura di filtri DirectShow