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 |