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, de 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 trouvée. Cette variable est valide uniquement si une erreur se produit.
Valeur de retour
IoCheckEaBufferValidity retourne STATUS_SUCCESS si la mémoire tampon EA est valide ; sinon, elle 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 vous assurer que les conditions suivantes sont remplies :
L’entrée entière doit se trouver dans la mémoire tampon.
La valeur de EaName doit être un tableau de caractères terminé par null.
La valeur de EaNameLength doit correspondre à la longueur en octets du tableau EaName (sans inclure le point 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 tomber sur une limite ULONG.
En outre, IoCheckEaBufferValidity vérifie la mémoire tampon EA pour vous 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 est non négative.
Pour être valide, la mémoire tampon EA doit respecter toutes ces conditions.
IoCheckEaBufferValidity n’effectue aucune synchronisation pour vous assurer que le contenu de 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 alors que IoCheckEaBufferValidity est en cours d’exécution. Cette modification peut entraîner le retour d’informations incorrectes de 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, et non la mémoire tampon d’origine.
Exigences
Exigence | Valeur |
---|---|
plateforme cible | Universel |
d’en-tête | ntifs.h (include Ntifs.h) |
bibliothèque | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | < DISPATCH_LEVEL |