Megosztás a következőn keresztül:


Kimeneti függvények hibakeresése

[A laphoz társított funkció, DirectShowegy régi funkció. MediaPlayer, IMFMediaEngineés Audio/Video Capture a Media Foundation. Ezek a funkciók Windows 10-hez és Windows 11-hez lettek optimalizálva. A Microsoft határozottan javasolja, hogy az új kód MediaPlayer, IMFMediaEngine és Audio/Video Capture eszközt használja a Media FoundationDirectShowhelyett, ha lehetséges. A Microsoft javasolja, hogy az örökölt API-kat használó meglévő kódot át kell írni az új API-k használatára, ha lehetséges.]

A DirectShow alaposztályai számos makrót biztosítanak a hibakeresési információk megjelenítéséhez.

Funkció Leírás
DbgCheckModuleLevel Ellenőrzi, hogy a naplózás engedélyezve van-e az adott üzenettípusokhoz és -szintekhez.
DbgDumpObjectRegister Az aktív objektumokra vonatkozó információkat jeleníti meg.
DbgInitialise Inicializálja a hibakeresési kódtárat.
DbgLog Sztringet küld a hibakeresési kimeneti helyre, ha a naplózás engedélyezve van a megadott típushoz és szinthez.
DbgOutString Sztringet küld a hibakeresési kimeneti helyre.
DbgSetModuleLevel Beállítja egy vagy több üzenettípus naplózási szintjét.
DbgTerminate Törli a hibakeresési kódtárat.
DisplayType Információt küld egy médiatípusról a hibakeresési kimeneti helyre.
DumpGraph A szűrőgráf adatainak elküldése a hibakeresési kimeneti helyre.
GuidNames Globális tömb, amely az Uuids.h fájlban definiált GRAFIKUS GUID-ket képviselő sztringeket tartalmazza.
NAME Csak hibakeresési sztringet hoz létre.
MEGJEGYZÉS Sztringet küld a hibakeresési kimeneti helyre.
REMIND Emlékeztetőt készít fordításkor.

 

beállításkulcsok

A DirectShow kimeneti hibakeresési függvénye beállításkulcsok készletét használja. A beállításkulcsok helye a Windows verziójától függ.

Windows Vistaelőtt a hibakeresési kulcsok a következő útvonalon találhatók:

HKEY_LOCAL_MACHINE\szoftveres\hibakeresési

A Windows Vista vagy újabb verziókban a következő útvonalon találhatók:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DirectShow\Hibakeresési

Külső szűrők esetén a hely attól függ, hogy a DirectShow alaposztályainak melyik verzióját használták a szűrő létrehozásához. A Windows Vista Rendszerhez készült Windows SDK-ban található verzió az újabb elérési utat használja. A korábbi verziók a régebbi elérési utat használták.

Az alábbi megjegyzésekben a debugRoot><címke jelzi ezt a két útvonalat. Cserélje le a megfelelő elérési utat a Windows vagy az alaposztályok verziójától függően.

Hibakeresési naplózási

A DirectShow több üzenettípust határoz meg, amelyek az alábbi táblázatban láthatók.

Érték Leírás
LOG_ERROR Hibaértesítés.
LOG_LOCKING Kritikus szakaszok zárolása és zárolásának feloldása.
LOG_MEMORY Memóriafoglalás, objektumlétrehozás és -megsemmisítés.
LOG_TIMING Időzítés- és teljesítménymérések.
LOG_TRACE Általános híváskövetés.
CUSTOM1 through CUSTOM5 Egyéni hibakeresési üzenetekhez érhető el

 

A DirectShow hibakeresési naplózási függvényei egy üzenettípust és egy naplószintet határoznak meg. A hibakeresési üzenet csak akkor jelenik meg, ha az üzenettípus aktuális hibakeresési szintje egyenlő vagy nagyobb, mint a naplózási függvényben megadott szint. Ellenkező esetben a rendszer figyelmen kívül hagyja az üzenetet.

A következő kód például az "Ez hibakeresési üzenet" sztringet adja ki, ha a LOG_TRACE szint 3 vagy magasabb:

DbgLog((LOG_TRACE, 3, TEXT("This is a debug message")));

Minden modul beállíthatja a saját hibakeresési szintjét az egyes üzenettípusokhoz. (A modul olyan DLL vagy végrehajtható, amely a LoadLibrary függvénnyel tölthető be.) A modul hibakeresési szintjei az alábbi kulcs alatt jelennek meg a beállításjegyzékben:

HKEY_LOCAL_MACHINE\<DebugRoot>\<ModuleName>\<MessageType>

ahol <üzenettípus> az üzenettípus, a kezdeti "LOG_" nélkül; például LOCKING LOG_LOCKING üzenetekhez. Amikor betölt egy modult, a hibakeresési kódtár megkeresi a modul naplózási szintjét a beállításjegyzékben. Ha a beállításkulcsok nem léteznek, a hibakeresési kódtár létrehozza őket.

A modul futásidőben saját szinteket is beállíthat a DbgSetModuleLevel függvény használatával. Ha üzenetet szeretne küldeni a hibakeresési kimenetnek, hívja meg a DbgLog makrót. Az alábbi példa egy LOG_TRACE típusú 3. szintű üzenetet hoz létre:

A globális naplózási szinteket a következő beállításkulcs használatával is megadhatja:

\HKEY_LOCAL_MACHINE\<DebugRoot>\GLOBAL\<Message Type>

A hibakeresési kódtár azt használja, amelyik magasabb, a globális vagy a modulszintet.

Kimeneti hely hibakeresése

A hibakeresési kimeneti helyet egy másik beállításkulcs határozza meg:

HKEY_LOCAL_MACHINE\<DebugRoot>\<Modile Name>\LogToFile

Ha a kulcs értéke Console, a kimenet a konzolablakba kerül. Ha az érték Deb, Debug, Debuggervagy üres sztring, a kimenet a hibakereső ablakba kerül. Ellenkező esetben a rendszer a kimenetet a beállításkulcs által megadott fájlba írja.

Mielőtt egy végrehajtható a DirectShow hibakeresési kódtárat használ, meg kell hívnia a DbgInitialise függvényt. Ezután meg kell hívnia a DbgTerminate függvényt. A DLL-eknek nem kell meghívni ezeket a függvényeket, mert a DLL belépési pont (az alaposztálytárban definiálva) automatikusan meghívja őket.

segédprogramok hibakeresése