Definizione di nuovi valori NTSTATUS
I driver possono definire costanti personalizzate IO_ERR_XXX da usare come valori ErrorCode durante la registrazione degli errori. Le coppie di driver scritte insieme possono anche definire valori personalizzati STATUS_XXX per le richieste di IRP_MJ_INTERNAL_DEVICE_CONTROL .
Il diagramma seguente mostra i campi di bit in un valore NTSTATUS a 32 bit.
Il campo Sev illustrato nel diagramma precedente indica il codice di gravità, che deve essere uno dei valori definiti dal sistema seguenti:
STATUS_SEVERITY_SUCCESS
Indica un valore NTSTATUS riuscito, ad esempio STATUS_SUCCESS, o il valore IO_ERR_RETRY_SUCCEEDED nei pacchetti del log degli errori.
STATUS_SEVERITY_INFORMATIONAL
Indica un valore NTSTATUS informativo, ad esempio STATUS_SERIAL_MORE_WRITES.
STATUS_SEVERITY_WARNING
Indica un valore NTSTATUS di avviso, ad esempio STATUS_DEVICE_PAPER_EMPTY.
STATUS_SEVERITY_ERROR
Indica un valore NTSTATUS di errore, ad esempio STATUS_INSUFFICIENT_RESOURCES per un valore FinalStatus o IO_ERR_CONFIGURATION_ERROR per un valore ErrorCode nei pacchetti del log degli errori.
La maggior parte delle costanti IO_ERR_XXX pubbliche appartiene alla categoria STATUS_SEVERITY_ERROR.
Il codice della struttura specifica la funzionalità che ha generato l'errore. Per i nuovi valori IO_ERR_XXX , i driver specificano il valore FACILITY_IO_ERROR_CODE per Facility. Per i valori personalizzati STATUS_XXX , il significato di valori diversi per Facility è definito dal driver.
Il bit C specifica se il valore è definito dal cliente o definito da Microsoft. Il bit viene impostato per i valori definiti dal cliente e cancella per i valori definiti da Microsoft.
I driver possono definire nuovi valori IO_ERR_XXX per identificare i messaggi di errore personalizzati nel registro eventi di sistema. Per una descrizione di come definire i valori NTSTATUS e i messaggi di errore identificati, vedere Definizione di tipi di errore personalizzati.
Le coppie di driver possono definire valori STATUS_XXX specifici del driver per comunicare informazioni sulle richieste definite privatamente IRP_MJ_INTERNAL_DEVICE_CONTROL dal driver inferiore al driver superiore della coppia.
Il driver di classe deve eseguire il mapping di qualsiasi valore privato STATUS_XXX a un valore NTSTATUS definito dal sistema quando completa un IRP se potrebbe essere chiamata una routine IoCompletion del driver di livello superiore esistente per tale IRP.
Per i driver di visualizzazione e miniport video abbinati, il driver della porta video esegue il mapping tra i valori pubblici STATUS_XXX e le costanti definite da Win32 restituite dai driver miniport video. Per altre informazioni, vedere Video Miniport Drivers in the Windows 2000 Display Driver Model .For more information, see Video Miniport Drivers in the Windows 2000 Display Driver Model.For more information, see Video Miniport Drivers in the Windows 2000 Display Driver Model.
I driver non possono usare valori NTSTATUS personalizzati per i provider di integrazione che possono essere ricevuti in modalità utente, perché solo i valori definiti dal sistema possono essere convertiti in codici di errore Win32.