Makro FsRtlNotifyFullChangeDirectory (rxprocs.h)

Rutinitas FsRtlNotifyFullChangeDirectory membuat struktur pemberitahuan untuk permintaan pemberitahuan dan menambahkannya ke daftar pemberitahuan yang ditentukan.

Sintaks

void FsRtlNotifyFullChangeDirectory(
   A1,
   A2,
   A3,
   A4,
   A5,
   A6,
   A7,
   A8,
   A9,
   A10
);

Parameter

A1

Penunjuk ke objek sinkronisasi buram untuk daftar pemberitahuan untuk volume saat ini.

A2

Penunjuk ke kepala daftar notifikasi. Setiap elemen dalam daftar adalah struktur pemberitahuan buram.

A3

Penunjuk ke nilai unik yang ditetapkan oleh sistem file untuk mengidentifikasi struktur pemberitahuan yang akan dibuat sebagai milik objek file tertentu. Jika rutinitas TraverseCallback disediakan, FsContext diteruskan sebagai parameter NotifyContext ke rutinitas tersebut.

A4

Penunjuk ke string ANSI atau Unicode yang berisi nama lengkap untuk direktori yang terkait dengan struktur pemberitahuan ini. Diabaikan jika NotifyIrpADALAH NULL.

A5

Atur ke TRUE jika semua subdirektori direktori ini juga harus diawasi. Atur ke FALSE jika hanya direktori itu sendiri yang akan diawasi. Diabaikan jika NotifyIrpADALAH NULL.

A6

Atur ke TRUE untuk mengabaikan buffer pengguna apa pun dan memaksa direktori untuk dihitung ulang. Tindakan ini mempercepat operasi. Diabaikan jika NotifyIrpADALAH NULL.

A7

Bitmask bendera yang menentukan jenis perubahan pada file atau subdirektori yang harus menyebabkan antrean runtime integrasi yang tertunda selesai. Nilai bendera yang mungkin dijelaskan berikut ini.

Bendera Makna

FILE_NOTIFY_CHANGE_FILE_NAME

File telah ditambahkan, dihapus, atau diganti namanya dalam direktori ini.

FILE_NOTIFY_CHANGE_DIR_NAME

Subdirektori telah dibuat, dihapus, atau diganti namanya.

FILE_NOTIFY_CHANGE_NAME

Nama direktori ini telah berubah.

FILE_NOTIFY_CHANGE_ATTRIBUTES

Nilai atribut file ini, seperti waktu akses terakhir, telah berubah.

FILE_NOTIFY_CHANGE_SIZE

Ukuran file ini telah berubah.

FILE_NOTIFY_CHANGE_LAST_WRITE

Waktu modifikasi terakhir file ini telah berubah.

FILE_NOTIFY_CHANGE_LAST_ACCESS

Waktu akses terakhir file ini telah berubah.

FILE_NOTIFY_CHANGE_CREATION

Waktu pembuatan file ini telah berubah.

FILE_NOTIFY_CHANGE_EA

Atribut yang diperluas file ini telah dimodifikasi.

FILE_NOTIFY_CHANGE_SECURITY

Informasi keamanan file ini telah berubah.

FILE_NOTIFY_CHANGE_STREAM_NAME

Aliran file telah ditambahkan, dihapus, atau diganti namanya dalam direktori ini.

FILE_NOTIFY_CHANGE_STREAM_SIZE

Ukuran aliran file ini telah berubah.

FILE_NOTIFY_CHANGE_STREAM_WRITE

Data aliran file ini telah berubah.

 

CompletionFilter diabaikan jika NotifyIrp adalah NULL.

A8

Penunjuk ke IRP untuk diselesaikan saat memberi tahu perubahan. Jika NotifyIrpADALAH NULL, ini berarti bahwa aliran file yang diwakili oleh objek file ini sedang dihapus.

A9

Penunjuk opsional ke rutinitas panggilan balik untuk dipanggil ketika perubahan terjadi pada subdirektori yang sedang diawasi di pohon direktori. Ini memungkinkan sistem file memeriksa apakah pengamat memiliki akses melintasi ke direktori tersebut. Rutinitas yang disediakan penelepon seperti itu dinyatakan sebagai berikut:

NTSTATUS
(*PCHECK_FOR_TRAVERSE_ACCESS) (
    IN PVOID NotifyContext,                     // FsContext
    IN PVOID TargetContext,                     // Context pointer
    IN PSECURITY_SUBJECT_CONTEXT SubjectContext // SubjectContext
    );

Untuk informasi selengkapnya tentang parameter TargetContext , lihat parameter TargetContextFsRtlNotifyFullReportChange. TraverseCallback diabaikan jika NotifyIrp ADALAH NULL.

A10

Penunjuk ke struktur konteks yang akan diteruskan ke TraverseCallback. FsRtlNotifyFullChangeDirectory merilis konteks dan membebaskan struktur setelah menggunakannya. Diabaikan jika NotifyIrpADALAH NULL. Jika rutinitas TraverseCallback disediakan, SubjectContext diteruskan sebagai parameter SubjectContext ke rutinitas tersebut.

Mengembalikan nilai

Tidak ada

Keterangan

FsRtlNotifyFullChangeDirectory dipanggil oleh sistem file yang telah menerima permintaan perubahan pemberitahuan. Permintaan ini diterima sebagai IRP dengan kode fungsi utama IRP_MJ_DIRECTORY_CONTROL, kode fungsi kecil IRP_MN_NOTIFY_CHANGE_DIRECTORY.

Jika NotifyIrpNULL, FsRtlNotifyFullChangeDirectory memeriksa apakah daftar pemberitahuan berisi IRP tertunda yang mengacu pada objek file ini dan, jika demikian, menyelesaikannya dengan STATUS_DELETE_PENDING.

Jika NotifyIrp bukan NULL, FsRtlNotifyFullChangeDirectory melakukan hal berikut:

  • Memeriksa apakah objek file telah menjalani pembersihan. Jika demikian, FsRtlNotifyFullChangeDirectory menyelesaikan pemberitahuan IRP dengan status STATUS_NOTIFY_CLEANUP.
  • Jika objek file belum menjalani pembersihan, FsRtlNotifyFullChangeDirectory memeriksa apakah daftar pemberitahuan untuk volume ini sudah berisi struktur pemberitahuan untuk perubahan ini. Jika demikian, FsRtlNotifyFullChangeDirectory menyelesaikan runtime integrasi yang tertunda. Jika tidak, FsRtlNotifyFullChangeDirectory menandai IRP sebagai tertunda, membuat struktur pemberitahuan, dan menyisipkannya ke dalam daftar.

Persyaratan

Persyaratan Nilai
Target Platform Universal
Header rxprocs.h (termasuk Ntifs.h)
Pustaka NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
Aturan kepatuhan DDI HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm)

Lihat juga

FsRtlNotifyFullReportChange

IRP_MJ_DIRECTORY_CONTROL

SECURITY_SUBJECT_CONTEXT