Condividi tramite


Panoramica della registrazione degli errori

[La funzionalità associata a questa pagina, DirectShow, è una funzionalità legacy. È stata sostituita da MediaPlayer, IMFMediaEngine 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, IMFMediaEngine e Audio/Video Capture in Media Foundation invece di DirectShow, quando possibile. Microsoft suggerisce che il codice esistente che usa le API legacy venga riscritto per usare le nuove API, se possibile.

[Questa API non è supportata e potrebbe essere modificata o non disponibile in futuro.]

Per offrire alle applicazioni la massima flessibilità nella gestione degli errori, DirectShow Editing Services usa un meccanismo di callback. L'applicazione implementa un metodo per registrare un errore. In fase di esecuzione, se si verifica un errore, DES chiama il metodo specificato. Il metodo accetta parametri che descrivono l'errore. Che cosa fa il metodo con queste informazioni è l'utente. (Dovrebbe restituire il più rapidamente possibile, tuttavia, o potrebbe interferire con l'esecuzione del programma).

Il metodo di callback di registrazione degli errori è contenuto in un'interfaccia COM , IAMErrorLog. L'applicazione deve implementare questa interfaccia. Analogamente a tutte le interfacce COM, IAMErrorLog eredita l'interfaccia IUnknown , quindi l'applicazione deve implementarlo anche.

Sono disponibili diverse opzioni per l'implementazione di queste interfacce COM. È possibile usare Active Template Library (ATL), che fornisce implementazioni stock dei metodi IUnknown . DirectShow fornisce anche una classe di base C++, CUnknown, che semplifica l'implementazione di un'interfaccia COM. Per informazioni sull'uso di CUnknown, vedere Come implementare IUnknown.

Il codice di esempio in questo articolo definisce una classe C++ autonoma, che implementa sia IUnknown che IAMErrorLog. Il risultato non è un vero oggetto COM, perché non supporta CoCreateInstance. Tuttavia, questo approccio è adeguato ai fini dell'esempio.

Registrazione degli errori