Rutinitas MRxLowIOSubmit[LOWIO_OP_UNLOCK]
Rutinitas MRxLowIOSubmit[LOWIO_OP_UNLOCK] dipanggil oleh RDBSS untuk meminta agar pengalih mini jaringan menghapus kunci tunggal pada objek file.
Sintaks
PMRX_CALLDOWN MRxLowIOSubmit[LOWIO_OP_UNLOCK];
NTSTATUS MRxLowIOSubmit[LOWIO_OP_UNLOCK](
_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_UNLOCK] mengembalikan STATUS_SUCCESS pada keberhasilan atau nilai NTSTATUS yang sesuai, seperti salah satu hal berikut ini:
Menampilkan kode | Deskripsi |
---|---|
STATUS_CONNECTION_DISCONNECTED | Sambungan terputus. |
STATUS_INSUFFICIENT_RESOURCES | Tidak ada cukup sumber daya untuk menyelesaikan permintaan. |
STATUS_INVALID_NETWORK_RESPONSE | Respons yang tidak valid diterima dari server jarak jauh. |
STATUS_INVALID_PARAMETER | Parameter yang tidak valid ditentukan dalam RxContext. |
STATUS_LINK_FAILED | Upaya untuk menyambungkan kembali ke server jarak jauh untuk menyelesaikan permintaan gagal. |
STATUS_NOT_IMPLEMENTED | Rutinitas ini tidak diimplementasikan. |
STATUS_SHARING_VIOLATION | Terjadi pelanggaran berbagi. |
STATUS_UNSUCCESSFUL | Panggilan tidak berhasil. |
Keterangan
RDBSS memanggil MRxLowIOSubmit[LOWIO_OP_UNLOCK] sebagai tanggapan untuk menerima permintaan IRP_MJ_LOCK_CONTROL dengan kode kecil IRP_MN_UNLOCK_SINGLE.
Sebelum memanggil MRxLowIOSubmit[LOWIO_OP_UNLOCK], RDBSS memodifikasi anggota berikut dalam struktur RX_CONTEXT yang ditunjukkan oleh parameter RxContext :
Anggota LowIoContext.Operation diatur ke LOWIO_OP_UNLOCK.
Anggota LowIoContext.ResourceThreadId diatur ke utas proses yang memulai operasi di RDBSS.
Anggota LowIoContext.ParamsFor.Locks.ByteOffset diatur ke nilai IrpSp-Parameters.LockControl.ByteOffset.QuadPart>.
Anggota LowIoContext.ParamsFor.Locks.Key diatur ke nilai IrpSp-Parameters.LockControl.Key>.
Anggota LowIoContext.ParamsFor.Locks.Length diatur ke nilai IrpSp-Parameters.LockControl.Length.QuadPart>.
Anggota LowIoContext.Operation dari struktur RX_CONTEXT menentukan operasi I/O rendah untuk dilakukan. Dimungkinkan bagi beberapa rutinitas I/O rendah untuk menunjuk ke rutinitas yang sama dalam mini-redirector jaringan karena anggota LowIoContext.Operation ini dapat digunakan untuk membedakan operasi I/O rendah yang diminta. Misalnya, semua panggilan I/O yang terkait dengan kunci file dapat memanggil rutinitas I/O rendah yang sama di pengalih mini jaringan dan rutinitas ini dapat menggunakan anggota LowIoContext.Operation untuk membedakan antara operasi kunci dan buka kunci yang diminta.
Jika rutinitas MRxLowIOSubmit[LOWIO_OP_UNLOCK] dapat memakan waktu lama untuk diselesaikan, driver pengalih mini jaringan harus merilis struktur FCB sebelum memulai komunikasi jaringan. Struktur FCB dapat dirilis dengan memanggil RxReleaseFcbResourceForThreadInMRx. Sementara rutinitas MRxLowIOSubmit[LOWIO_OP_UNLOCK] sedang diproses, anggota lowIoContext.ResourceThreadId dari RX_CONTEXT dijamin menunjukkan utas proses yang memulai operasi di RDBSS.
Anggota LowIoContext.ResourceThreadId dari RX_CONTEXT dapat digunakan untuk merilis struktur FCB atas nama utas lain. Ketika rutinitas asinkron selesai, struktur FCB yang diperoleh dari utas awal dapat dirilis.
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_NOTIFY_CHANGE_DIRECTORY]
MRxLowIOSubmit[LOWIO_OP_SHAREDLOCK]
MRxLowIOSubmit[LOWIO_OP_UNLOCK_MULTIPLE]