Fungsi IoCheckEaBufferValidity (ntifs.h)
Rutinitas IoCheckEaBufferValidity memeriksa apakah buffer atribut yang diperluas (EA) yang ditentukan valid.
Sintaks
NTSTATUS IoCheckEaBufferValidity(
[in] PFILE_FULL_EA_INFORMATION EaBuffer,
[in] ULONG EaLength,
[out] PULONG ErrorOffset
);
Parameter
[in] EaBuffer
Arahkan ke buffer yang berisi EA yang akan diperiksa.
[in] EaLength
Panjang, dalam byte, dari EaBuffer.
[out] ErrorOffset
Penunjuk ke variabel yang menerima offset entri yang menyinggung dalam buffer EA jika kesalahan ditemukan. Variabel ini hanya valid jika terjadi kesalahan.
Nilai kembali
IoCheckEaBufferValidity mengembalikan STATUS_SUCCESS jika buffer EA valid; jika tidak, ia mengembalikan STATUS_EA_LIST_INCONSISTENT.
Keterangan
IoCheckEaBufferValidity memeriksa setiap entri FILE_FULL_EA_INFORMATION dalam buffer EA yang ditentukan untuk memastikan bahwa kondisi berikut terpenuhi:
Seluruh entri harus berada dalam buffer.
Nilai EaName harus berupa array karakter yang dihentikan null.
Nilai EaNameLength harus cocok dengan panjang dalam byte array EaName (tidak termasuk zero-terminator).
Untuk semua entri kecuali yang terakhir, nilai NextEntryOffset harus lebih besar dari nol dan harus jatuh pada batas ULONG.
Selain itu, IoCheckEaBufferValidity memeriksa buffer EA untuk memastikan bahwa kondisi berikut terpenuhi:
Panjang yang diteruskan di EaLength cocok dengan panjang buffer yang sebenarnya.
Panjang buffer aktual tidak bersifat nonnegatif.
Agar valid, buffer EA harus memenuhi semua kondisi ini.
IoCheckEaBufferValidity tidak melakukan sinkronisasi apa pun untuk memastikan bahwa konten EaBuffer tidak berubah secara asinkron. Jika aplikasi mode pengguna dapat mengakses buffer di utas lain, aplikasi dapat mengubah buffer saat IoCheckEaBufferValidity berjalan. Perubahan ini dapat menyebabkan rutinitas mengembalikan informasi yang salah. Untuk menghindari skenario ini, driver harus menyalin buffer sebelum memanggil IoCheckEaBufferValidity. Setelah buffer divalidasi, pemanggil hanya boleh menggunakan salinan yang divalidasi, bukan buffer asli.
Persyaratan
Persyaratan | Nilai |
---|---|
Target Platform | Universal |
Header | ntifs.h (termasuk Ntifs.h) |
Pustaka | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | < DISPATCH_LEVEL |