Condividi tramite


Funzione IoCheckEaBufferValidity (ntifs.h)

La routine IoCheckEaBufferValidity verifica se il buffer EA (Extended Attribute) specificato è valido.

Sintassi

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

Parametri

[in] EaBuffer

Puntatore al buffer contenente gli EA da controllare.

[in] EaLength

Lunghezza, in byte, di EaBuffer.

[out] ErrorOffset

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

Valore restituito

IoCheckEaBufferValidity restituisce STATUS_SUCCESS se il buffer EA è valido; in caso contrario restituisce STATUS_EA_LIST_INCONSISTENT.

Osservazioni

IoCheckEaBufferValidity controlla ogni voce FILE_FULL_EA_INFORMATION nel buffer EA specificato per assicurarsi che siano 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 carattere di terminazione zero).

  • Per tutte le voci tranne l'ultima, il valore di NextEntryOffset deve essere maggiore di zero e deve essere compreso in un limite ULONG.

Inoltre, IoCheckEaBufferValidity controlla il buffer EA per assicurarsi che siano soddisfatte le condizioni seguenti:

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

  • La lunghezza effettiva del buffer non è negativo.

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

IoCheckEaBufferValidity non esegue alcuna sincronizzazione per assicurarsi che il contenuto di EaBuffer non venga modificato in modo asincrono. Se un'applicazione in modalità utente può accedere al buffer in un altro thread, l'applicazione potrebbe modificare il buffer mentre è in esecuzione IoCheckEaBufferValidity. Questa modifica potrebbe causare la restituzione di informazioni non corrette da parte della routine. Per evitare questo scenario, il driver deve copiare il buffer prima di chiamare IoCheckEaBufferValidity. Dopo la convalida del buffer, il chiamante deve usare solo la copia convalidata, non il buffer originale.

Fabbisogno

Requisito Valore
piattaforma di destinazione Universale
intestazione ntifs.h (include Ntifs.h)
libreria NtosKrnl.lib
dll NtosKrnl.exe
IRQL < DISPATCH_LEVEL

Vedere anche

FILE_FULL_EA_INFORMATION

IRP_MJ_QUERY_EA

IRP_MJ_SET_EA