Condividi tramite


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)

Vedi anche

IRP_MJ_DEVICE_CONTROL

IRP_MJ_INTERNAL_DEVICE_CONTROL

IoAllocateErrorLogEntry

IoFreeErrorLogEntry

IoWriteErrorLogEntry