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

Lihat juga

FILE_FULL_EA_INFORMATION

IRP_MJ_QUERY_EA

IRP_MJ_SET_EA