Bagikan melalui


Fungsi FsRtlNotifyFullChangeDirectory (ntifs.h)

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

Sintaks

void FsRtlNotifyFullChangeDirectory(
  [in]           PNOTIFY_SYNC               NotifySync,
  [in]           PLIST_ENTRY                NotifyList,
  [in]           PVOID                      FsContext,
  [in]           PSTRING                    FullDirectoryName,
  [in]           BOOLEAN                    WatchTree,
  [in]           BOOLEAN                    IgnoreBuffer,
  [in]           ULONG                      CompletionFilter,
  [in, optional] PIRP                       NotifyIrp,
  [in, optional] PCHECK_FOR_TRAVERSE_ACCESS TraverseCallback,
  [in, optional] PSECURITY_SUBJECT_CONTEXT  SubjectContext
);

Parameter

[in] NotifySync

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

[in] NotifyList

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

[in] FsContext

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.

[in] FullDirectoryName

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

[in] WatchTree

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

[in] IgnoreBuffer

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

[in] CompletionFilter

Bitmask bendera yang menentukan jenis perubahan pada file atau subdirektori yang harus menyebabkan antrean runtime integrasi yang tertunda selesai. Tabel berikut ini menjelaskan kemungkinan nilai bendera.

Bendera Makna
FILE_NOTIFY_CHANGE_FILE_NAME (0x0001) File telah ditambahkan, dihapus, atau diganti namanya dalam direktori ini.
FILE_NOTIFY_CHANGE_DIR_NAME (0x0002) Subdirektori telah dibuat, dihapus, atau diganti namanya.
FILE_NOTIFY_CHANGE_NAME (0x0003) Nama direktori ini telah berubah.
FILE_NOTIFY_CHANGE_ATTRIBUTES (0x0004) Nilai atribut file ini, seperti waktu akses terakhir, telah berubah.
FILE_NOTIFY_CHANGE_SIZE (0x0008) Ukuran file ini telah berubah.
FILE_NOTIFY_CHANGE_LAST_WRITE (0x0010) Waktu modifikasi terakhir file ini telah berubah.
FILE_NOTIFY_CHANGE_LAST_ACCESS (0x0020) Waktu akses terakhir file ini telah berubah.
FILE_NOTIFY_CHANGE_CREATION (0x0040) Waktu pembuatan file ini telah berubah.
FILE_NOTIFY_CHANGE_EA (0x0080) Atribut yang diperluas file ini telah dimodifikasi.
FILE_NOTIFY_CHANGE_SECURITY (0x0100) Informasi keamanan file ini telah berubah.
FILE_NOTIFY_CHANGE_STREAM_NAME (0x0200) Aliran file telah ditambahkan, dihapus, atau diganti namanya dalam direktori ini.
FILE_NOTIFY_CHANGE_STREAM_SIZE (0x0400) Ukuran aliran file ini telah berubah.
FILE_NOTIFY_CHANGE_STREAM_WRITE (0x0800) Data aliran file ini telah berubah.

CompletionFilter diabaikan jika NotifyIrp adalah NULL.

[in, optional] NotifyIrp

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

[in, optional] TraverseCallback

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.

[in, optional] SubjectContext

Penunjuk ke struktur SECURITY_SUBJECT_CONTEXT untuk diteruskan ke TraverseCallback. FsRtlNotifyFullChangeDirectory merilis konteks dan membebaskan struktur setelah menggunakannya. Diabaikan jika NotifyIrp ADALAH 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 NotifyIrp NULL, 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 ntifs.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