Rutinitas MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY]
Rutinitas MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY] dipanggil oleh RDBSS untuk mengeluarkan permintaan ke pengalih mini jaringan untuk operasi pemberitahuan perubahan direktori.
Sintaks
PMRX_CALLDOWN MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY];
NTSTATUS MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY](
_Inout_ PRX_CONTEXT RxContext
)
{ ... }
Parameter
RxContext [masuk, keluar]
Penunjuk ke struktur RX_CONTEXT. Parameter ini berisi IRP yang meminta operasi.
Mengembalikan nilai
MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY] mengembalikan STATUS_SUCCESS pada keberhasilan atau nilai NTSTATUS yang sesuai, seperti salah satu hal berikut ini:
Menampilkan kode | Deskripsi |
---|---|
STATUS_FILE_CLOSED | Struktur FCB diperoleh, tetapi struktur SRV_OPEN terkait telah ditutup. |
STATUS_INSUFFICIENT_RESOURCES | Tidak ada cukup sumber daya untuk menyelesaikan permintaan. |
STATUS_INVALID_DEVICE_REQUEST | Permintaan perangkat yang tidak valid ditentukan. |
STATUS_INVALID_PARAMETER | Parameter yang tidak valid ditentukan dalam RxContext. |
STATUS_NOT_IMPLEMENTED | Rutinitas ini tidak diimplementasikan. |
STATUS_NOT_SUPPORTED | Permintaan yang ditentukan tidak didukung oleh pengalih mini jaringan. |
Keterangan
RDBSS memanggil MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY] sebagai tanggapan untuk menerima permintaan IRP_MJ_DIRECTORY_CONTROL .
Sebelum memanggil MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY], RDBSS memodifikasi anggota berikut dalam struktur RX_CONTEXT yang ditunjukkan oleh parameter RxContext :
Anggota LowIoContext.Operation diatur ke LOWIO_OP_NOTIFY_CHANGE_DIRECTORY.
Anggota LowIoContext.ResourceThreadId diatur ke utas proses yang memulai operasi di RDBSS.
Anggota LowIoContext.ParamsFor.NotifyChangeDirectory.WatchTree diatur ke TRUE jika IrpSp-Flags> memiliki set bit SL_WATCH_TREE.
Anggota LowIoContext.ParamsFor.NotifyChangeDirectory.CompletionFilter diatur ke nilai IrpSp-Parameters.NotifyDirectory.CompletionFilter>.
Anggota LowIoContext.ParamsFor.NotifyChangeDirectory.NotificationBufferLength diatur ke nilai IrpSp-Parameters.NotifyDirectory.Length>.
Anggota LowIoContext.ParamsFor.NotifyChangeDirectory.pNotificationBuffer diatur ke nilai yang dikembalikan dengan memanggil MmGetSystemAddressForMdlSafe yang melewati Irp-MdlAddress> dan NormalPagePriority. Buffer pengguna juga diselimuti dan dikunci untuk akses tulis.
Operasi pemberitahuan perubahan direktori biasanya diterapkan oleh pengalih mini jaringan sebagai operasi asinkron karena dapat memakan waktu yang cukup lama. Operasi ini biasanya terdiri dari pengiriman permintaan jaringan ke server jarak jauh yang meminta pemberitahuan perubahan. Respons diperoleh ketika perubahan yang diinginkan terpengaruh pada server. Ini adalah contoh operasi di mana pengalih mini jaringan mungkin perlu mendaftarkan nilai konteks unik untuk menangani pembatalan yang dimulai secara lokal.
Sementara rutinitas MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY] sedang diproses, anggota lowIoContext.ResourceThreadId dari RX_CONTEXT dijamin menunjukkan utas proses yang memulai operasi di RDBSS. Anggota LowIoContext.ResourceThreadId dapat digunakan untuk merilis struktur FCB atas nama utas lain. Ketika rutinitas asinkron selesai, struktur FCB yang diperoleh dari utas awal dapat dirilis. Struktur FCB dapat dirilis dengan memanggil RxReleaseFcbResourceForThreadInMRx.
Persyaratan
Platform target |
Desktop |
Header |
Mrx.h (termasuk Mrx.h) |
Lihat juga
MRxLowIOSubmit[LOWIO_OP_EXCLUSIVELOCK]
MRxLowIOSubmit[LOWIO_OP_FSCTL]
MRxLowIOSubmit[LOWIO_OP_IOCTL]
MRxLowIOSubmit[LOWIO_OP_SHAREDLOCK]
MRxLowIOSubmit[LOWIO_OP_UNLOCK]
MRxLowIOSubmit[LOWIO_OP_UNLOCK_MULTIPLE]