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.

Avviso

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

Valore restituito

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

Commenti

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

Una voce del log degli errori è costituita da una struttura di IO_ERROR_LOG_PACKET a lunghezza variabile, possibilmente 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, il membro DumpData . Pertanto, il valore di 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 di 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 può rilevare in modo affidabile se il valore passato è troppo grande.

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

Requisiti

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

Vedi anche

IO_ERROR_LOG_PACKET

IoFreeErrorLogEntry

IoWriteErrorLogEntry