Freigeben über


Übersicht über die Fehlerprotokollierung

[Das dieser Seite zugeordnete Feature DirectShow ist ein Legacyfeature. Es wurde durch MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation ersetzt. Diese Features wurden für Windows 10 und Windows 11 optimiert. Microsoft empfiehlt dringend, dass neuer Code nach Möglichkeit MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation anstelle von DirectShow verwendet. Microsoft schlägt vor, vorhandenen Code, der die Legacy-APIs verwendet, um nach Möglichkeit die neuen APIs zu verwenden.]

[Diese API wird nicht unterstützt und kann in Zukunft geändert oder nicht mehr verfügbar sein.]

Um Anwendungen maximale Flexibilität bei der Behandlung von Fehlern zu bieten, verwendet DirectShow Editing Services einen Rückrufmechanismus. Ihre Anwendung implementiert eine Methode zum Protokollieren eines Fehlers. Wenn zur Laufzeit ein Fehler auftritt, ruft DES die von Ihnen bereitgestellte Methode auf. Die -Methode akzeptiert Parameter, die den Fehler beschreiben. Was die Methode mit diesen Informationen macht, liegt bei Ihnen. (Es sollte jedoch so schnell wie möglich zurückgegeben werden, oder es kann die Ausführung des Programms beeinträchtigen.)

Die Rückrufmethode für die Fehlerprotokollierung ist in der COM-Schnittstelle IAMErrorLog enthalten. Ihre Anwendung muss diese Schnittstelle implementieren. Wie alle COM-Schnittstellen erbt IAMErrorLog die IUnknown-Schnittstelle , sodass Ihre Anwendung diese ebenfalls implementieren muss.

Sie haben mehrere Möglichkeiten, diese COM-Schnittstellen zu implementieren. Sie können die Active Template Library (ATL) verwenden, die Bestandsimplementierungen der IUnknown-Methoden bereitstellt. DirectShow bietet auch die C++-Basisklasse CUnknown, die die Implementierung einer COM-Schnittstelle vereinfacht. Informationen zur Verwendung von CUnknown finden Sie unter Implementieren von IUnknown.

Der Beispielcode in diesem Artikel definiert eine eigenständige C++-Klasse, die sowohl IUnknown als auch IAMErrorLog implementiert. Das Ergebnis ist kein echtes COM-Objekt, da es CoCreateInstance nicht unterstützt. Dieser Ansatz ist jedoch für den Zweck des Beispiels angemessen.

Protokollierungsfehler