Funzione IoCheckEaBuffer Validità (ntifs.h)

La routine IoCheckEaBuffer Validità verifica se il buffer dell'attributo esteso specificato (EA) è valido.

Sintassi

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

Parametri

[in] EaBuffer

Puntatore al buffer contenente gli EAs da controllare.

[in] EaLength

Lunghezza, in byte, di EaBuffer.

[out] ErrorOffset

Puntatore a una variabile che riceve l'offset della voce offensiva nel buffer EA se viene trovato un errore. Questa variabile è valida solo se si verifica un errore.

Valore restituito

IoCheckEaBuffer Validità restituisce STATUS_SUCCESS se il buffer EA è valido; in caso contrario, restituisce STATUS_EA_LIST_INCONSISTENT.

Commenti

IoCheckEaBuffer Validità controlla ogni FILE_FULL_EA_INFORMATION voce nel buffer EA specificato per assicurarsi che vengano soddisfatte le condizioni seguenti:

  • L'intera voce deve rientrare nel buffer.

  • Il valore di EaName deve essere una matrice di caratteri con terminazione null.

  • Il valore di EaNameLength deve corrispondere alla lunghezza in byte della matrice EaName (non incluso il terminatore zero).

  • Per tutte le voci tranne l'ultimo, il valore di NextEntryOffset deve essere maggiore di zero e deve cadere su un limite ULONG.

Inoltre, IoCheckEaBuffer Validità controlla il buffer EA per assicurarsi che vengano soddisfatte le condizioni seguenti:

  • La lunghezza passata in EaLength corrisponde alla lunghezza effettiva del buffer.

  • La lunghezza effettiva del buffer non è effettiva.

Per essere valido, il buffer EA deve soddisfare tutte queste condizioni.

IoCheckEaBuffer Validità non esegue alcuna sincronizzazione per assicurarsi che il contenuto di EaBuffer non cambi in modo asincrono. Se un'applicazione in modalità utente può accedere al buffer in un altro thread, l'applicazione potrebbe modificare il buffer durante l'esecuzione di IoCheckEaBuffer Validità . Questa modifica potrebbe causare la restituzione di informazioni non corrette dalla routine. Per evitare questo scenario, il driver deve copiare il buffer prima di chiamare IoCheckEaBuffer Validità. Dopo aver convalidato il buffer, il chiamante deve usare solo la copia convalidata, non il buffer originale.

Requisiti

Requisito Valore
Piattaforma di destinazione Universale
Intestazione ntifs.h (include Ntifs.h)
Libreria NtosKrnl.lib
DLL NtosKrnl.exe
IRQL < DISPATCH_LEVEL

Vedi anche

FILE_FULL_EA_INFORMATION

IRP_MJ_QUERY_EA

IRP_MJ_SET_EA