Delen via


Schrijven naar het gebeurtenislogboek van het systeem

Fouten worden opgegeven door de NTSTATUS-waarde. Het systeem definieert bepaalde NTSTATUS-waarden die kunnen worden gebruikt door stuurprogramma's en schrijvers van stuurprogramma's kunnen aanvullende fouten definiëren. Houd er rekening mee dat alleen bepaalde NTSTATUS-waarden kunnen worden gebruikt bij het loggen van fouten.

Elke NTSTATUS-waarde die kan worden gebruikt bij logboekregistratiefouten heeft een gekoppeld foutbericht. Het stuurprogramma voor de parallelle poort gebruikt bijvoorbeeld de NTSTATUS-waarde PAR_INTERRUPT_CONFLICT om hardwareonderbrekerconflicten weer te geven, met berichttekst 'Conflict onderbreken gedetecteerd voor %1'.

De Gebeurtenissenviewer geeft de berichttekst weer in het Beschrijving tekstvak op het eigenschappenscherm van de logboekvermelding. Wanneer de tekenreeks van het bericht '%1' bevat, vervangt de Gebeurtenisviewer deze door de naam van het apparaat dat de gebeurtenis heeft geregistreerd. De berichttekst kan extra parameters van het formulier bevatten%2", "%3", enzovoort. Wanneer het stuurprogramma de fout registreert, kan deze tekenreekswaarden voor deze parameters opgeven. Deze tekenreekswaarden worden invoegtekenreeksen genoemd. De Gebeurtenissenviewer zal deze automatisch op de plaats van de procentwaarden invoegen.

Het stuurprogramma kan ook binaire gegevens bevatten in de logboekvermelding, ook wel dumpgegevensgenoemd. De Gebeurtenissenviewer toont de dumpgegevens in het tekstvak Data van het eigenschappenblad van de logboekvermelding.

U kunt het eigenschappenvenster voor een logboekrecord weergeven door op de vermelding te dubbelklikken in de Logboekviewer. De volgende schermafbeelding toont een voorbeeld van een logboekvermeldingseigenschappenblad.

schermafbeelding van een gebeurteniseigenschappenblad.

Stuurprogramma's gebruiken de IoAllocateErrorLogEntry routine om een vermelding in het foutenlogboek toe te wijzen. Logboekvermeldingen bestaan uit een IO_ERROR_LOG_PACKET koptekst met variabele lengte, gevolgd door invoegtekenreeksen.

In het volgende diagram ziet u de indeling van een vermelding in het foutenlogboek in het geheugen.

diagram met een indeling van een foutlogboekpakket in het geheugen.

De ErrorCode lid van IO_ERROR_LOG_PACKET geeft de NTSTATUS-waarde van de fout op. De DumpData lid geeft dumpgegevens op voor de logboekvermelding. DumpData is een matrix met variabele grootte, waarvan de grootte wordt opgegeven door het DumpDataSize-lid. Stuurprogramma's geven het begin van de eerste invoegstring op met het StringOffset element en het aantal strings van het NumberOfStrings element. Elke invoegreeks zelf is een Unicode-reeks die op een nulbyte eindigt.

Zodra het stuurprogramma de toegewezen vermelding voor het foutenlogboek heeft ingevuld, wordt de vermelding naar het foutenlogboek geschreven met behulp van IoWriteErrorLogEntry-. IoWriteErrorLogEntry maakt automatisch het geheugen vrij dat is toegewezen voor de logboekvermelding. Bestuurders kunnen IoFreeErrorLogEntry gebruiken om ongebruikte logboekvermeldingen vrij te maken.

Vooraf gedefinieerde foutcodes (van het formulier IO_ERR_XXX) worden gedefinieerd in het headerbestand ntiologc.h dat is opgenomen in de Windows Driver Kit (WDK). Het foutbericht dat aan elke foutcode is gekoppeld, vindt u in de opmerkingen voor ntiologc.h, naast de declaratie van de foutcode. Als u een vooraf gedefinieerde foutcode wilt gebruiken, moet het stuurprogramma het systeembestand registreren, iologmsg.dll, als de bron van de bijbehorende foutberichten. Zie Registreren als bron van foutberichtenvoor meer informatie.

Stuurprogramma's kunnen ook hun eigen aangepaste fouttypen en bijbehorende foutberichten definiëren. Zie Aangepaste fouttypen definiërenvoor meer informatie.