Bagikan melalui


Fungsi IoEnumerateRegisteredFiltersList (ntifs.h)

Rutinitas IoEnumerateRegisteredFiltersList menghitung driver filter sistem file yang telah terdaftar di sistem.

Sintaks

NTSTATUS IoEnumerateRegisteredFiltersList(
  [out] PDRIVER_OBJECT *DriverObjectList,
  [in]  ULONG          DriverObjectListSize,
  [out] PULONG         ActualNumberDriverObjects
);

Parameter

[out] DriverObjectList

Penunjuk ke array yang dialokasikan penelepon yang menerima penunjuk objek driver. Parameter ini bersifat opsional dan dapat berupa NULL. (Lihat bagian Keterangan berikut.)

[in] DriverObjectListSize

Ukuran, dalam byte, dari array DriverObjectList . Bisa nol. (Lihat bagian Keterangan berikut.)

[out] ActualNumberDriverObjects

Jumlah aktual objek driver yang ditemukan. Perhatikan bahwa jika array di DriverObjectList terlalu kecil, jumlah penunjuk objek driver yang disalin ke dalam array akan kurang dari ActualNumberDriverObjects.

Nilai kembali

IoEnumerateRegisteredFiltersList dapat mengembalikan salah satu hal berikut:

Menampilkan kode Deskripsi
STATUS_SUCCESS Panggilan ke IoEnumerateRegisteredFiltersList berhasil.
STATUS_BUFFER_TOO_SMALL Array di DriverObjectList terlalu kecil untuk menyimpan seluruh daftar objek driver. Dalam hal ini, IoEnumerateRegisteredFiltersList menyalin penunjuk objek driver sebanyak mungkin ke dalam array.

Keterangan

Driver filter sistem file memanggil IoEnumerateRegisteredFiltersList untuk mendapatkan array penunjuk ke objek driver untuk semua driver filter sistem file yang telah disebut IoRegisterFsRegistrationChange.

Driver filter dijumlahkan dalam urutan penurunan jarak dari sistem file dasar. Elemen pertama (indeks nol) dalam array DriverObjectList mewakili filter yang terlampir paling jauh dari sistem file. Entri kedua adalah untuk filter terjauh berikutnya, dan sebagainya. Entri terakhir dalam array adalah untuk filter yang paling dekat dengan sistem file dasar.

IoEnumerateRegisteredFiltersList hanya menghitung driver filter warisan; itu tidak menghitung minifilter. Untuk menghitung filter minifilter dan warisan, atau hanya minifilter, panggil FltEnumerateFilterInformation.

Driver filter biasanya memanggil IoEnumerateRegisteredFiltersList dua kali: sekali untuk mendapatkan jumlah objek driver dalam daftar, dan sekali untuk mendapatkan daftar objek driver itu sendiri. Pada panggilan pertama, pemanggil harus mengatur parameter DriverObjectList ke NULL dan DriverObjectListSize ke nol. Dalam panggilan kedua, DriverObjectList harus berisi penunjuk ke array penunjuk berukuran tepat, dan DriverObjectListSize harus berisi ukuran, dalam byte, dari array tersebut.

IoEnumerateRegisteredFiltersList menambah jumlah referensi pada setiap objek driver dalam daftar yang ditunjukkan oleh DriverObjectList. Dengan demikian setiap panggilan yang berhasil ke IoEnumerateRegisteredFiltersList harus dicocokkan dengan panggilan berikutnya ke ObDereferenceObject untuk setiap objek driver dalam daftar. Kegagalan untuk melakukannya mencegah sistem membebaskan atau menghapus objek driver ini karena jumlah referensi yang luar biasa.

Minifilter harus memanggil FltEnumerateFilterInformation atau FltEnumerateFilters alih-alih IoEnumerateRegisteredFiltersList.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Pembaruan Rollup untuk Windows 2000 SP4; Windows Server 2003 SP1
Target Platform Universal
Header ntifs.h (termasuk Ntifs.h)
Pustaka NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

Lihat juga

FltEnumerateFilterInformation

FltEnumerateFilters

IoRegisterFsRegistrationChange

ObDereferenceObject