Condividi tramite


Funzione IoAllocateErrorLogEntry (wdm.h)

La routine IoAllocateErrorLogEntry alloca una voce del log degli errori e restituisce un puntatore al pacchetto utilizzato dal chiamante per fornire informazioni su un errore di I/O.

Sintassi

PVOID IoAllocateErrorLogEntry(
  [in] PVOID IoObject,
  [in] UCHAR EntrySize
);

Parametri

[in] IoObject

Puntatore a un oggetto dispositivo che rappresenta il dispositivo in cui si è verificato un errore di I/O o a un oggetto driver che rappresenta il driver che ha rilevato un errore.

[in] EntrySize

Specifica le dimensioni, in byte, della voce del log degli errori da allocare. Questo valore non può superare ERROR_LOG_MAXIMUM_SIZE.

Avvertimento

EntrySize è un valore di UCHAR. Se si specifica un valore maggiore, il compilatore tronca automaticamente tale valore a un UCHAR.

Valore restituito

IoAllocateErrorLogEntry restituisce un puntatore alla voce del log degli errori oppure null se non è stato possibile allocare una voce di log.

Osservazioni

Il driver deve prima compilare il pacchetto con informazioni sull'errore, quindi chiamare IoWriteErrorLogEntry per pubblicare la voce nel log degli errori. Il buffer delle voci del log degli errori viene automaticamente liberato dopo la registrazione della voce di log. I buffer di immissione che non verranno scritti nel log possono essere liberati usando IoFreeErrorLogEntry.

Una voce del log degli errori è costituita da una struttura a lunghezza variabile IO_ERROR_LOG_PACKET, probabilmente seguita da una o più stringhe Unicode con conteggio zero. Il Visualizzatore eventi inserisce queste stringhe nel messaggio di errore visualizzato per la voce. IO_ERROR_LOG_PACKET contiene un membro a lunghezza variabile, membro DumpData. Pertanto, il valore per EntrySize deve essere sizeof(IO_ERROR_LOG_PACKET) + dimensioni del membro dumpdata + dimensioni combinate di qualsiasi stringa di inserimento fornita dal driver.

I driver devono verificare che il valore per EntrySize sia minore di ERROR_LOG_MAXIMUM_SIZE prima di chiamare IoAllocateErrorLogEntry. Poiché EntrySize viene dichiarato come UCHAR e il compilatore tronca automaticamente qualsiasi valore troppo grande per adattarsi a un UCHAR, la routine stessa non riesce a rilevare in modo affidabile se il valore passato è troppo grande.

I driver non devono considerare IoAllocateErrorLogEntry restituendo NULL come errore irreversibile. Il driver deve continuare a funzionare normalmente, indipendentemente dal fatto che possa registrare errori.

Fabbisogno

Requisito Valore
piattaforma di destinazione Universale
intestazione wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
libreria NtosKrnl.lib
dll NtosKrnl.exe
IRQL IRQL <= DISPATCH_LEVEL

Vedere anche

IO_ERROR_LOG_PACKET

IoFreeErrorLogEntry

IoWriteErrorLogEntry