Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
[De functie die is gekoppeld aan deze pagina, DirectShow, is een verouderde functie. Het is vervangen door MediaPlayer, IMFMediaEngineen Audio/Video Capture in Media Foundation. Deze functies zijn geoptimaliseerd voor Windows 10 en Windows 11. Microsoft raadt ten zeerste aan om nieuwe code te gebruiken MediaPlayer, IMFMediaEngine en Audio/Video Capture in Media Foundation in plaats van DirectShow, indien mogelijk. Microsoft stelt voor dat bestaande code die gebruikmaakt van de verouderde API's, indien mogelijk opnieuw worden geschreven om de nieuwe API's te gebruiken.]
De DirectShow Base Classes verschillende macro's bieden voor het weergeven van foutopsporingsgegevens.
| Functie | Beschrijving |
|---|---|
| DbgCheckModuleLevel | Controleert of logboekregistratie is ingeschakeld voor de opgegeven berichttypen en het opgegeven niveau. |
| DbgDumpObjectRegister | Geeft informatie weer over actieve objecten. |
| DbgInitialise- | Initialiseert de foutopsporingsbibliotheek. |
| DbgLog- | Hiermee wordt een tekenreeks verzonden naar de uitvoerlocatie voor foutopsporing als logboekregistratie is ingeschakeld voor het opgegeven type en niveau. |
| DbgOutString- | Hiermee wordt een tekenreeks verzonden naar de uitvoerlocatie voor foutopsporing. |
| DbgSetModuleLevel | Hiermee stelt u het logboekregistratieniveau in voor een of meer berichttypen. |
| DbgTerminate- | Hiermee wordt de foutopsporingsbibliotheek opgeschoond. |
| DisplayType- | Hiermee wordt informatie over een mediatype verzonden naar de uitvoerlocatie voor foutopsporing. |
| DumpGraph- | Hiermee wordt informatie over een filtergrafiek verzonden naar de uitvoerlocatie voor foutopsporing. |
| GuidNames- | Globale matrix die tekenreeksen bevat die de GUID's vertegenwoordigen die zijn gedefinieerd in Uuids.h. |
| NAAM | Hiermee wordt een tekenreeks met alleen foutopsporing gegenereerd. |
| Hiermee wordt een tekenreeks verzonden naar de uitvoerlocatie voor foutopsporing. | |
| HERINNEREN aan | Hiermee wordt een herinnering gegenereerd tijdens het compileren. |
registersleutels
De uitvoerfunctie voor foutopsporing in DirectShow gebruikt een set registersleutels. De locatie van deze registersleutels is afhankelijk van de versie van Windows.
Vóór Windows Vistabevinden de foutopsporingssleutels zich onder het volgende pad:
HKEY_LOCAL_MACHINE\SOFTWARE\Foutopsporing
In Windows Vista of hoger bevinden ze zich onder het volgende pad:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DirectShow\Debug
Voor filters van derden is de locatie afhankelijk van de versie van de DirectShow Base Classes is gebruikt om het filter te bouwen. De versie die is opgenomen in de Windows SDK voor Windows Vista maakt gebruik van het nieuwere pad. In eerdere versies is het oudere pad gebruikt.
In de volgende opmerkingen wordt het label <DebugRoot> gebruikt om deze twee paden aan te geven. Vervang het juiste pad, afhankelijk van de versie van Windows of de versie van de basisklassen.
Logboekregistratie voor foutopsporing
DirectShow definieert verschillende berichttypen, weergegeven in de volgende tabel.
| Waarde | Beschrijving |
|---|---|
| LOG_ERROR | Foutmelding. |
| LOG_LOCKING | Vergrendelen en ontgrendelen van kritieke secties. |
| LOG_MEMORY | Geheugentoewijzing en het maken en vernietigen van objecten. |
| LOG_TIMING | Tijdsinstellingen en prestatiemetingen. |
| LOG_TRACE | Algemene oproeptracering. |
| CUSTOM1 via CUSTOM5 | Beschikbaar voor aangepaste foutopsporingsberichten |
Elk van de directShow-functies voor foutopsporing geeft een berichttype en een logboekniveau op. Het foutopsporingsbericht wordt alleen weergegeven wanneer het huidige foutopsporingsniveau voor dat berichttype gelijk is aan of groter is dan het niveau dat is opgegeven in de functie logboekregistratie. Anders wordt het bericht genegeerd.
Met de volgende code wordt bijvoorbeeld de tekenreeks 'Dit is een foutopsporingsbericht' uitgevoerd als het LOG_TRACE niveau 3 of hoger is:
DbgLog((LOG_TRACE, 3, TEXT("This is a debug message")));
Elke module kan voor elk berichttype een eigen foutopsporingsniveau instellen. (Een module is een DLL of uitvoerbaar bestand dat kan worden geladen met behulp van de functie LoadLibrary.) De foutopsporingsniveaus van een module worden weergegeven in het register onder de volgende sleutel:
HKEY_LOCAL_MACHINE\<DebugRoot>\<ModuleName>\<MessageType>
waarbij <berichttype> het berichttype is minus de eerste "LOG_"; Bijvoorbeeld vergrendelen voor LOG_LOCKING berichten. Wanneer een module wordt geladen, vindt de foutopsporingsbibliotheek de logboekregistratieniveaus van de module in het register. Als de registersleutels niet bestaan, worden deze door de bibliotheek voor foutopsporing gemaakt.
Een module kan ook zijn eigen niveaus tijdens runtime instellen met behulp van de functie DbgSetModuleLevel. Als u een bericht wilt verzenden naar de uitvoer van foutopsporing, roept u de DbgLog- macro aan. In het volgende voorbeeld wordt een bericht op niveau 3 van het type LOG_TRACE gemaakt:
U kunt ook globale logboekregistratieniveaus opgeven met de volgende registersleutel:
\HKEY_LOCAL_MACHINE\<DebugRoot>\GLOBAL\<Message Type>
De foutopsporingsbibliotheek maakt gebruik van het niveau hoger, het globale niveau of het moduleniveau.
Debug Output Location
De uitvoerlocatie voor foutopsporing wordt bepaald door een andere registersleutel:
HKEY_LOCAL_MACHINE\<DebugRoot>\<Naam wijzigen>\LogToFile-
Als de waarde van deze sleutel Consoleis, wordt de uitvoer naar het consolevenster verplaatst. Als de waarde is Deb, Debug, Debuggerof een lege tekenreeks, wordt de uitvoer naar het foutopsporingsprogrammavenster verplaatst. Anders wordt de uitvoer naar een bestand geschreven dat is opgegeven door de registersleutel.
Voordat een uitvoerbaar bestand gebruikmaakt van de DirectShow-foutopsporingsbibliotheek, moet deze de De functie DbgInitialise aanroepen. Daarna moet de functie DbgTerminate worden aangeroepen. DLL's hoeven deze functies niet aan te roepen, omdat het DLL-toegangspunt (gedefinieerd in de basisklassebibliotheek) ze automatisch aanroept.
Verwante onderwerpen