Fonction IoAllocateErrorLogEntry (wdm.h)
La routine IoAllocateErrorLogEntry alloue une entrée de journal des erreurs et retourne un pointeur vers le paquet que l’appelant utilise pour fournir des informations sur une erreur d’E/S.
Syntaxe
PVOID IoAllocateErrorLogEntry(
[in] PVOID IoObject,
[in] UCHAR EntrySize
);
Paramètres
[in] IoObject
Pointeur vers un objet d’appareil représentant l’appareil sur lequel une erreur d’E/S s’est produite, ou vers un objet pilote représentant le pilote qui a trouvé une erreur.
[in] EntrySize
Spécifie la taille, en octets, de l’entrée du journal des erreurs à allouer. Cette valeur ne peut pas dépasser ERROR_LOG_MAXIMUM_SIZE.
Avertissement
EntrySize est une valeur UCHAR . Si vous spécifiez une valeur plus élevée, le compilateur tronque en mode silencieux cette valeur en un UCHAR (incorrect).
Valeur retournée
IoAllocateErrorLogEntry retourne un pointeur vers l’entrée du journal des erreurs ou NULL si une entrée de journal n’a pas pu être allouée.
Remarques
Le pilote doit d’abord renseigner le paquet avec des informations sur l’erreur, puis appeler IoWriteErrorLogEntry pour publier l’entrée dans le journal des erreurs. La mémoire tampon d’entrée du journal des erreurs est automatiquement libérée une fois l’entrée du journal enregistrée. Les mémoires tampons d’entrée qui ne seront pas écrites dans le journal peuvent être libérées à l’aide de IoFreeErrorLogEntry.
Une entrée de journal d’erreurs se compose d’une structure de IO_ERROR_LOG_PACKET de longueur variable, éventuellement suivie d’une ou plusieurs chaînes Unicode sans compte. Le observateur d'événements insère ces chaînes dans le message d’erreur qu’il affiche pour l’entrée. IO_ERROR_LOG_PACKET contient un membre de longueur variable, le membre DumpData . Par conséquent, la valeur d’EntrySize doit être sizeof(IO_ERROR_LOG_PACKET) + taille du membre DumpData + taille combinée de toutes les chaînes d’insertion fournies par le pilote.
Les pilotes doivent case activée que la valeur d’EntrySize est inférieure à ERROR_LOG_MAXIMUM_SIZE avant d’appeler IoAllocateErrorLogEntry. Étant donné que EntrySize est déclaré en tant que UCHAR et que le compilateur tronque silencieusement toute valeur trop grande pour tenir dans un UCHAR, la routine elle-même ne peut pas détecter de manière fiable si la valeur passée est trop grande.
Les pilotes ne doivent pas traiter IoAllocateErrorLogEntry qui retourne null comme une erreur irrécupérable. Le pilote doit continuer à fonctionner normalement, qu’il puisse ou non enregistrer des erreurs.
Configuration requise
Condition requise | Valeur |
---|---|
Plateforme cible | Universal |
En-tête | wdm.h (inclure Wdm.h, Ntddk.h, Ntifs.h) |
Bibliothèque | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | IRQL <= DISPATCH_LEVEL |