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
, Debugger
vagy ü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.
Kapcsolódó témakörök