struttura IO_ERROR_LOG_PACKET (wdm.h)
La struttura IO_ERROR_LOG_PACKET funge da intestazione per una voce del log degli errori.
Sintassi
typedef struct _IO_ERROR_LOG_PACKET {
UCHAR MajorFunctionCode;
UCHAR RetryCount;
USHORT DumpDataSize;
USHORT NumberOfStrings;
USHORT StringOffset;
USHORT EventCategory;
NTSTATUS ErrorCode;
ULONG UniqueErrorValue;
NTSTATUS FinalStatus;
ULONG SequenceNumber;
ULONG IoControlCode;
LARGE_INTEGER DeviceOffset;
ULONG DumpData[1];
} IO_ERROR_LOG_PACKET, *PIO_ERROR_LOG_PACKET;
Members
MajorFunctionCode
Indica il codice di funzione principale IRP_MJ_XXX del driver gestito dal driver quando si è verificato l'errore. L'impostazione di questo valore è facoltativa.
RetryCount
Indica il numero di tentativi di ripetizione dell'operazione da parte del driver e di questo errore. Usare zero per indicare che il driver ha tentato l'operazione una sola volta o aggiungerne uno per ogni tentativo oltre il tentativo iniziale.
DumpDataSize
Indica le dimensioni, in byte, del membro DumpData a lunghezza variabile di questa struttura. Il valore specificato deve essere un multiplo di sizeof(ULONG).
NumberOfStrings
Indica il numero di stringhe di inserimento che il driver fornirà con questa voce del log degli errori. I driver impostano questo valore su zero per gli errori che non richiedono stringhe di inserimento. Il Visualizzatore eventi usa queste stringhe per inserire le voci "%2" e "%n" nel modello di stringa per questo codice di errore.
Le stringhe Unicode con terminazione Null seguono la struttura IO_ERROR_LOG_PACKET in memoria.
StringOffset
Indica l'offset, in byte, dall'inizio della struttura, in corrispondenza del quale iniziano i dati della stringa di inserimento forniti dal driver. In genere si tratta di sizeof(IO_ERROR_LOG_PACKET) più il valore del membro DumpDataSize . Se non sono presenti stringhe di inserimento fornite dal driver, StringOffset può essere zero.
EventCategory
Specifica la categoria di eventi per l'errore. Un driver specifica le categorie di eventi supportate e le stringhe descrittive corrispondenti nel relativo catalogo messaggi. Il Visualizzatore eventi visualizza la stringa descrittiva come valore category per l'errore.
ErrorCode
Specifica il tipo di errore. Il Visualizzatore eventi usa il codice di errore per determinare quale stringa visualizzare come valore description per l'errore. Il Visualizzatore eventi accetta il modello stringa per l'errore fornito nel catalogo messaggi del driver, sostituisce "%1" nel modello con il nome dell'oggetto dispositivo del driver e sostituisce "%2" con "%n" con le stringhe di inserimento fornite con la voce del log degli errori.
ErrorCode è una costante definita dal sistema o definita dal driver; per altre informazioni, vedere Registrazione degli errori .
UniqueErrorValue
Valore specifico del driver che indica dove è stato rilevato l'errore nel driver. L'impostazione di questo valore è facoltativa.
FinalStatus
Specifica il valore NTSTATUS da restituire per l'operazione che ha attivato l'errore. L'impostazione di questo valore è facoltativa.
SequenceNumber
Specifica un numero di sequenza assegnato dal driver per l'IRP corrente, che deve essere costante per la durata di una determinata richiesta. L'impostazione di questo valore è facoltativa.
IoControlCode
Per un IRP_MJ_DEVICE_CONTROL o IRP_MJ_INTERNAL_DEVICE_CONTROL IRP, questo membro specifica il codice di controllo di I/O per la richiesta che ha risolto l'errore. In caso contrario, questo valore è zero. L'impostazione di questo valore è facoltativa.
DeviceOffset
Specifica l'offset specificato dal driver nel dispositivo in cui si è verificato l'errore. L'impostazione di questo valore è facoltativa.
DumpData[1]
Matrice di dimensioni variabili che può essere usata per archiviare dati binari specifici del driver, ad esempio i valori di registro o qualsiasi altra informazione utile per identificare la causa dell'errore. I driver devono specificare le dimensioni, in byte, della matrice nel membro DumpDataSize di questa struttura.
Commenti
I driver usano la routine IoAllocateErrorLogEntry per allocare una voce del log degli errori. La struttura IO_ERROR_LOG_PACKET funge da intestazione per il buffer restituito. Viene seguito in memoria da qualsiasi stringa di inserimento per la voce di log.
Si noti che il gestore di I/O inserisce alcune informazioni nel log degli errori di sistema, ad esempio il nome del dispositivo e del driver. Il gestore di I/O riserva 80 byte per contenere queste informazioni. Se le dimensioni di queste informazioni superano 80 byte, il gestore di I/O tronca le stringhe di inserimento del driver in base alle esigenze.
Per altre informazioni su come usare questa struttura, vedere Registrazione degli errori.
Requisiti
Requisito | Valore |
---|---|
Intestazione | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |