IoCheckEaBufferValidity-Funktion (ntifs.h)

Die IoCheckEaBufferValidity-Routine überprüft, ob der angegebene EA-Puffer (Extended Attribute) gültig ist.

Syntax

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

Parameter

[in] EaBuffer

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

[in] EaLength

Länge von EaBuffer in Bytes.

[out] ErrorOffset

Zeiger auf eine Variable, die den Offset des beleidigenden 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.

Hinweise

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 in den Puffer fallen.

  • Der Wert von EaName muss ein Null-Endzeichenarray sein.

  • Der Wert von EaNameLength muss mit der Länge in Bytes des EaName-Arrays übereinstimmen (ohne den Zero-Abschlussator).

  • Für alle Einträge mit Ausnahme des letzten muss der Wert von NextEntryOffset größer als 0 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 nichtegativ.

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 von EaBuffer nicht asynchron ändert. Wenn eine Anwendung im Benutzermodus 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 Er IoCheckEaBufferValidity aufruft. 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 Universell
Header ntifs.h (include Ntifs.h)
Bibliothek NtosKrnl.lib
DLL NtosKrnl.exe
IRQL < DISPATCH_LEVEL

Weitere Informationen

FILE_FULL_EA_INFORMATION

IRP_MJ_QUERY_EA

IRP_MJ_SET_EA