Bagikan melalui


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

Lihat juga

FS_FILTER_CALLBACK_DATA

FsRtlRegisterFileSystemFilterCallbacks