Fonction IoCheckEaBufferValidity (ntifs.h)
La routine IoCheckEaBufferValidity vérifie si la mémoire tampon d’attribut étendu (EA) spécifiée est valide.
Syntaxe
NTSTATUS IoCheckEaBufferValidity(
[in] PFILE_FULL_EA_INFORMATION EaBuffer,
[in] ULONG EaLength,
[out] PULONG ErrorOffset
);
Paramètres
[in] EaBuffer
Pointeur vers la mémoire tampon contenant les EA à vérifier.
[in] EaLength
Longueur, en octets, d’EaBuffer.
[out] ErrorOffset
Pointeur vers une variable qui reçoit le décalage de l’entrée incriminée dans la mémoire tampon EA si une erreur est détectée. Cette variable est valide uniquement si une erreur se produit.
Valeur retournée
IoCheckEaBufferValidity retourne STATUS_SUCCESS si la mémoire tampon EA est valide ; sinon, il retourne STATUS_EA_LIST_INCONSISTENT.
Remarques
IoCheckEaBufferValidity vérifie chaque entrée FILE_FULL_EA_INFORMATION dans la mémoire tampon EA spécifiée pour s’assurer que les conditions suivantes sont remplies :
L’entrée entière doit se trouver dans la mémoire tampon.
La valeur d’EaName doit être un tableau de caractères avec fin null.
La valeur de EaNameLength doit correspondre à la longueur en octets du tableau EaName (à l’absence de terminaison zéro).
Pour toutes les entrées à l’exception de la dernière, la valeur de NextEntryOffset doit être supérieure à zéro et doit se situer sur une limite ULONG.
En outre, IoCheckEaBufferValidity vérifie la mémoire tampon EA pour s’assurer que les conditions suivantes sont remplies :
La longueur passée dans EaLength correspond à la longueur réelle de la mémoire tampon.
La longueur réelle de la mémoire tampon n’est pas négative.
Pour être valide, la mémoire tampon EA doit remplir toutes ces conditions.
IoCheckEaBufferValidity n’effectue aucune synchronisation pour s’assurer que le contenu d’EaBuffer ne change pas de manière asynchrone. Si une application en mode utilisateur peut accéder à la mémoire tampon dans un autre thread, l’application peut modifier la mémoire tampon pendant l’exécution de IoCheckEaBufferValidity . Cette modification peut entraîner le renvoi d’informations incorrectes par la routine. Pour éviter ce scénario, le pilote doit copier la mémoire tampon avant d’appeler IoCheckEaBufferValidity. Une fois la mémoire tampon validée, l’appelant doit utiliser uniquement la copie validée, pas la mémoire tampon d’origine.
Configuration requise
Condition requise | Valeur |
---|---|
Plateforme cible | Universal |
En-tête | ntifs.h (inclure Ntifs.h) |
Bibliothèque | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | < DISPATCH_LEVEL |