Freigeben über


IoCheckEaBufferValidity-Funktion (ntifs.h)

Die IoCheckEaBufferValidity Routine überprüft, ob der angegebene erweiterte Attributpuffer (EXTENDED Attribute, EA) gültig ist.

Syntax

NTSTATUS IoCheckEaBufferValidity(
  [in]  PFILE_FULL_EA_INFORMATION EaBuffer,
  [in]  ULONG                     EaLength,
  [out] PULONG                    ErrorOffset
);

Parameter

[in] EaBuffer

Zeigen Sie auf den Puffer, der die zu überprüfenden EAs enthält.

[in] EaLength

Länge in Byte von EaBuffer.

[out] ErrorOffset

Zeigen Sie auf eine Variable, die den Offset des fehlerhaften Eintrags im EA-Puffer empfängt, wenn ein Fehler gefunden wird. Diese Variable ist nur gültig, wenn ein Fehler auftritt.

Rückgabewert

IoCheckEaBufferValidity- gibt STATUS_SUCCESS zurück, wenn der EA-Puffer gültig ist; andernfalls wird STATUS_EA_LIST_INCONSISTENT zurückgegeben.

Bemerkungen

IoCheckEaBufferValidity überprüft jeden FILE_FULL_EA_INFORMATION Eintrag im angegebenen EA-Puffer, um sicherzustellen, dass die folgenden Bedingungen erfüllt sind:

  • Der gesamte Eintrag muss innerhalb des Puffers liegen.

  • Der Wert EaName- muss ein Null-beendetes Zeichenarray sein.

  • Der Wert EaNameLength- muss mit der Länge in Byte des EaName Arrays übereinstimmen (nicht einschließlich des Null-Terminators).

  • Bei allen Einträgen außer dem letzten muss der Wert NextEntryOffset größer als Null sein und auf eine ULONG-Grenze fallen.

Darüber hinaus überprüft IoCheckEaBufferValidity den EA-Puffer, um sicherzustellen, dass die folgenden Bedingungen erfüllt sind:

  • Die in EaLength übergebene Länge entspricht der tatsächlichen Länge des Puffers.

  • Die tatsächliche Pufferlänge ist nicht negativ.

Um gültig zu sein, muss der EA-Puffer alle diese Bedingungen erfüllen.

IoCheckEaBufferValidity führt keine Synchronisierung durch, um sicherzustellen, dass sich der Inhalt EaBuffer nicht asynchron ändern. Wenn eine Benutzermodusanwendung auf den Puffer in einem anderen Thread zugreifen kann, kann die Anwendung den Puffer ändern, während IoCheckEaBufferValidity ausgeführt wird. Diese Änderung kann dazu führen, dass die Routine falsche Informationen zurückgibt. Um dieses Szenario zu vermeiden, sollte der Treiber den Puffer kopieren, bevor IoCheckEaBufferValidityaufgerufen wird. Nachdem der Puffer überprüft wurde, sollte der Aufrufer nur die überprüfte Kopie und nicht den ursprünglichen Puffer verwenden.

Anforderungen

Anforderung Wert
Zielplattform- Universal
Header- ntifs.h (einschließlich Ntifs.h)
Library NtosKrnl.lib
DLL- NtosKrnl.exe
IRQL- < DISPATCH_LEVEL

Siehe auch

FILE_FULL_EA_INFORMATION

IRP_MJ_QUERY_EA

IRP_MJ_SET_EA