Definiera nya NTSTATUS-värden

Drivrutiner kan definiera anpassade IO_ERR_XXX- konstanter som ska användas som ErrorCode- värden vid loggningsfel. Par med drivrutiner som skrivs tillsammans kan också definiera anpassade STATUS_XXX- värden för IRP_MJ_INTERNAL_DEVICE_CONTROL begäranden.

Följande diagram visar bitfälten i ett 32-bitars NTSTATUS-värde.

diagram som illustrerar bitfälten i ett ntstatus-värde.

Fältet Sev som visas i föregående diagram anger allvarlighetsgradskoden, som måste vara något av följande systemdefinierade värden:

STATUS_SEVERITY_SUCCESS
Anger ett lyckat NTSTATUS-värde, till exempel STATUS_SUCCESS, eller värdet IO_ERR_RETRY_SUCCEEDED i felloggpaket.

STATUS_SEVERITY_INFORMATIONAL
Anger ett informationsvärde för NTSTATUS, till exempel STATUS_SERIAL_MORE_WRITES.

STATUS_SEVERITY_WARNING
Anger ett varningsvärde för NTSTATUS, till exempel STATUS_DEVICE_PAPER_EMPTY.

STATUS_SVÅRIGHET_FEL
Anger ett NTSTATUS-felvärde, till exempel STATUS_INSUFFICIENT_RESOURCES för ett FinalStatus--värde eller IO_ERR_CONFIGURATION_ERROR för ett ErrorCode- värde i felloggpaket.

De flesta offentliga IO_ERR_XXX konstanter tillhör kategorin STATUS_SEVERITY_ERROR.

Koden Facility anger den anläggning som genererade felet. För nya IO_ERR_XXX- värden anger drivrutinerna värdet FACILITY_IO_ERROR_CODE för Facility. För anpassade STATUS_XXX- värden är innebörden av olika värden för Facility drivrutinsdefinierad.

Den C- bit anger om värdet är kunddefinierat eller Microsoft-definierat. Biten anges för kunddefinierade värden och rensas för Microsoft-definierade värden.

Drivrutiner kan definiera nya IO_ERR_XXX- värden för att identifiera anpassade felmeddelanden i systemhändelseloggen. En beskrivning av hur du definierar NTSTATUS-värdena och de felmeddelanden som de identifierar finns i Definiera anpassade feltyper.

Par med drivrutiner kan definiera drivrutinsspecifika STATUS_XXX- värden för att kommunicera information om privat definierade IRP_MJ_INTERNAL_DEVICE_CONTROL begäranden från den lägre till den högre drivrutinen för paret.

Klassdrivrutinen måste mappa varje privat STATUS_XXX-värde till ett systemdefinierat NTSTATUS-värde när det slutför ett IRP, om en befintlig högre nivå drivrutins IoCompletion-rutin kan anropas för den IRP:en.

För parade videominiport- och videodisplaydrivrutiner utför videoportdrivrutinen mappningen mellan offentliga STATUS_XXX--värden och de Win32-definierade konstanterna som returneras av videominiportdrivrutinerna. Mer information finns i Videominiportdrivrutiner i Windows 2000 Display Driver Model.

Drivrutiner kan inte använda anpassade NTSTATUS-värden för IRP:er som kan tas emot i användarläge, eftersom endast de systemdefinierade värdena kan översättas till Win32-felkoder.