IoAllocateErrorLogEntry, fonction (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 de périphérique représentant l’appareil sur lequel une erreur d’E/S s’est produite ou vers un objet de 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 grande, le compilateur tronque silencieusement cette valeur à un (incorrect) UCHAR.
Valeur de retour
IoAllocateErrorLogEntry retourne un pointeur vers l’entrée du journal des erreurs, ou NULL si aucune entrée de journal n’a 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 que l’entrée du journal est 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 des erreurs se compose d’une structure IO_ERROR_LOG_PACKET de longueur variable, éventuellement suivie d’une ou plusieurs chaînes Unicode comptées à zéro. L’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 de EntrySize doit être taille de(IO_ERROR_LOG_PACKET) + taille du membre DumpData membre + taille combinée de toutes les chaînes d’insertion fournies par le pilote.
Les pilotes doivent vérifier que la valeur de EntrySize est inférieure à ERROR_LOG_MAXIMUM_SIZE avant d’appeler IoAllocateErrorLogEntry. Étant donné que EntrySize est déclaré en tant qu’UCHAR, et le compilateur tronque silencieusement toute valeur trop importante pour s’adapter à 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 renvoyant NULL comme une erreur irrécupérable. Le pilote doit continuer à fonctionner normalement, qu’il puisse consigner les erreurs.
Exigences
Exigence | Valeur |
---|---|
plateforme cible | Universel |
d’en-tête | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
bibliothèque | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | IRQL <= DISPATCH_LEVEL |