struktur FS_FILTER_CALLBACKS (ntifs.h)
Struktur FS_FILTER_CALLBACKS berisi titik masuk rutinitas panggilan balik pemberitahuan yang disediakan pemanggil.
Sintaks
typedef struct _FS_FILTER_CALLBACKS {
ULONG SizeOfFsFilterCallbacks;
ULONG Reserved;
PFS_FILTER_CALLBACK PreAcquireForSectionSynchronization;
PFS_FILTER_COMPLETION_CALLBACK PostAcquireForSectionSynchronization;
PFS_FILTER_CALLBACK PreReleaseForSectionSynchronization;
PFS_FILTER_COMPLETION_CALLBACK PostReleaseForSectionSynchronization;
PFS_FILTER_CALLBACK PreAcquireForCcFlush;
PFS_FILTER_COMPLETION_CALLBACK PostAcquireForCcFlush;
PFS_FILTER_CALLBACK PreReleaseForCcFlush;
PFS_FILTER_COMPLETION_CALLBACK PostReleaseForCcFlush;
PFS_FILTER_CALLBACK PreAcquireForModifiedPageWriter;
PFS_FILTER_COMPLETION_CALLBACK PostAcquireForModifiedPageWriter;
PFS_FILTER_CALLBACK PreReleaseForModifiedPageWriter;
PFS_FILTER_COMPLETION_CALLBACK PostReleaseForModifiedPageWriter;
PFS_FILTER_CALLBACK PreQueryOpen;
PFS_FILTER_COMPLETION_CALLBACK PostQueryOpen;
} FS_FILTER_CALLBACKS, *PFS_FILTER_CALLBACKS;
Anggota
SizeOfFsFilterCallbacks
Ukuran struktur ini, dalam byte. Atur ke sizeof(FS_FILTER_CALLBACKS)
. SizeOfFsFilterCallbacks tidak boleh diatur ke nol.
Reserved
Dicadangkan. Jangan gunakan.
PreAcquireForSectionSynchronization
Penunjuk ke rutinitas FS_FILTER_CALLBACK PreAcquireForSectionSynchronization .
PostAcquireForSectionSynchronization
Arahkan ke rutinitas FS_FILTER_CALLBACK PostAcquireForSectionSynchronization .
PreReleaseForSectionSynchronization
Penunjuk ke rutinitas PreReleaseForSectionSynchronization FS_FILTER_CALLBACK.
PostReleaseForSectionSynchronization
Penunjuk ke rutinitas FS_FILTER_CALLBACK PostReleaseForSectionSynchronization .
PreAcquireForCcFlush
Penunjuk ke rutinitas PreAcquireForCcFlush FS_FILTER_CALLBACK.
PostAcquireForCcFlush
Arahkan ke FS_FILTER_CALLBACK rutinitas PostAcquireForCcFlush .
PreReleaseForCcFlush
Penunjuk ke rutinitas PreReleaseForCcFlush FS_FILTER_CALLBACK.
PostReleaseForCcFlush
Arahkan ke rutinitas FS_FILTER_CALLBACK PostReleaseForCcFlush .
PreAcquireForModifiedPageWriter
Penunjuk ke rutinitas PreAcquireForModifiedPageWriter FS_FILTER_CALLBACK.
PostAcquireForModifiedPageWriter
Arahkan ke rutinitas FS_FILTER_CALLBACK PostAcquireForModifiedPageWriter .
PreReleaseForModifiedPageWriter
Penunjuk ke rutinitas PreReleaseForModifiedPageWriter FS_FILTER_CALLBACK.
PostReleaseForModifiedPageWriter
Arahkan ke rutinitas FS_FILTER_CALLBACK PostReleaseForModifiedPageWriter .
PreQueryOpen
Penunjuk ke rutinitas FS_FILTER_CALLBACK PreQueryOpen .
PostQueryOpen
Penunjuk ke FS_FILTER_CALLBACK PostQueryBuka rutinitas.
Keterangan
Driver filter sistem file dan sistem file memanggil rutinitas FsRtlRegisterFileSystemFilterCallbacks untuk mendaftarkan rutinitas panggilan balik pemberitahuan untuk dipanggil ketika sistem file yang mendasarinya melakukan operasi tertentu.
Semua titik masuk panggilan balik bersifat opsional dan dapat berupa NULL.
Rutinitas panggilan balik filter FS_FILTER_CALLBACK dan parameternya didefinisikan sebagai berikut:
typedef
NTSTATUS (*PFS_FILTER_CALLBACK) (
IN PFS_FILTER_CALLBACK_DATA Data,
OUT PVOID *CompletionContext
);
Parameter | Makna |
---|---|
Data | Arahkan ke struktur FS_FILTER_CALLBACK_DATA untuk operasi ini. |
CompletionContext | Informasi konteks yang akan diteruskan ke rutinitas panggilan balik penyelesaian filter. Atur ke NULL jika tidak ada informasi konteks yang akan diteruskan atau jika tidak ada rutinitas panggilan balik penyelesaian filter yang sesuai. |
Rutinitas panggilan balik penyelesaian filter FS_FILTER_COMPLETION_CALLBACK dan parameternya didefinisikan sebagai berikut:
typedef
VOID (*PFS_FILTER_COMPLETION_CALLBACK) (
IN PFS_FILTER_CALLBACK_DATA Data,
IN NTSTATUS OperationStatus,
IN PVOID CompletionContext
);
Parameter | Makna |
---|---|
Data | Arahkan ke struktur FS_FILTER_CALLBACK_DATA untuk operasi ini. |
OperationStatus | Status operasi. Jika sistem file berhasil melakukan operasi, parameter ini diatur ke STATUS_SUCCESS. Jika tidak, ini diatur ke nilai status kesalahan yang sesuai. |
CompletionContext | Informasi konteks yang diatur dalam rutinitas panggilan balik filter. Ini diatur ke NULL jika tidak ada informasi yang diteruskan atau jika tidak ada rutinitas panggilan balik filter yang sesuai. |
Rutinitas panggilan balik didefinisikan untuk operasi berikut:
Operasi | Rutinitas panggilan balik pemberitahuan |
---|---|
Manajer memori memperoleh file secara eksklusif sebelum membuat bagian yang dipetakan memori untuk sebagian file. Untuk operasi ini, SyncType diatur ke SyncTypeCreateSection. | PreAcquireForSectionSynchronization, PostAcquireForSectionSynchronization |
Manajer memori merilis file setelah membuat bagian yang dipetakan memori untuk sebagian file. | PreReleaseForSectionSynchronization, PostReleaseForSectionSynchronization |
Komponen kernel (seperti manajer cache) memperoleh file secara eksklusif sebelum menonaktifkan pembuatan bagian untuk sementara waktu untuk sebagian file. Untuk operasi ini, SyncType diatur ke SyncTypeOther. | PreAcquireForSectionSynchronization, PostAcquireForSectionSynchronization. PreAcquireForSectionSynchronization harus selalu mengembalikan kode status keberhasilan (seperti STATUS_SUCCESS) untuk operasi ini. |
Komponen kernel (seperti manajer cache) merilis file setelah menonaktifkan pembuatan bagian untuk sementara waktu untuk sebagian file. | PreReleaseForSectionSynchronization, PostReleaseForSectionSynchronization |
Manajer cache memperoleh file secara eksklusif sebelum membersihkan sebagian file dari cache. | PreAcquireForCcFlush, PostAcquireForCcFlush |
Manajer cache merilis file setelah membersihkan sebagian file dari cache. | PreReleaseForCcFlush, PostReleaseForCcFlush |
Penulis halaman yang dimodifikasi memperoleh file secara eksklusif sebelum menulis sebagian file ke disk. | PreAcquireForModifiedPageWriter, PostAcquireForModifiedPageWriter |
Penulis halaman yang dimodifikasi merilis file setelah menulis sebagian file ke disk. | PreReleaseForModifiedPageWriter, PostReleaseForModifiedPageWriter |
Kueri komponen untuk informasi file berdasarkan nama tanpa membuka file. Pengalih tidak akan pernah dipanggil dengan kueri ini, dan dengan demikian tidak perlu menerapkan panggilan balik PreQueryOpen atau PostQueryOpen. | PreQueryBuka, PostQueryBuka |
Rutinitas panggilan balik pemberitahuan filter dipanggil sebelum permintaan operasi diteruskan ke driver filter tingkat bawah dan sistem file yang mendasar. Dalam rutinitas panggilan balik, driver filter harus melakukan pemrosesan yang diperlukan dan segera mengembalikan STATUS_SUCCESS. Jika rutinitas panggilan balik driver filter mengembalikan nilai status selain STATUS_SUCCESS, ini menyebabkan permintaan operasi gagal. Kegagalan berulang permintaan tertentu, seperti mengunci permintaan, dapat menghentikan kemajuan sistem. Dengan demikian, driver filter harus gagal seperti permintaan hanya ketika benar-benar diperlukan. Saat gagal dalam permintaan ini, driver filter harus mengembalikan nilai status kesalahan yang menjelaskan kesalahan seutuhnya dan seakurat mungkin.
Catatan
Rutinitas panggilan balik pemberitahuan driver filter tidak dapat gagal dalam permintaan untuk merilis sumber daya sistem file. Jika driver filter mengembalikan nilai status selain STATUS_SUCCESS dari salah satu rutinitas panggilan balik pemberitahuan berikut, nilai status diabaikan.
- PreReleaseForSectionSynchronization
- PreReleaseForCcFlush
- PreReleaseForModifiedPageWriter
Rutinitas panggilan balik penyelesaian filter dipanggil setelah permintaan operasi diteruskan ke driver filter tingkat bawah dan sistem file yang mendasar. Dalam rutinitas panggilan balik penyelesaian, driver filter harus melakukan pemrosesan yang diperlukan dan segera kembali.
Persyaratan
Persyaratan | Nilai |
---|---|
Header | ntifs.h |