Rutinitas MRxLowIOSubmit[LOWIO_OP_UNLOCK_MULTIPLE]
Rutinitas MRxLowIOSubmit[LOWIO_OP_UNLOCK_MULTIPLE] dipanggil oleh RDBSS untuk meminta agar pengalih mini jaringan menghapus beberapa kunci yang disimpan pada objek file.
Sintaks
PMRX_CALLDOWN MRxLowIOSubmit[LOWIO_OP_UNLOCK_MULTIPLE];
NTSTATUS MRxLowIOSubmit[LOWIO_OP_UNLOCK_MULTIPLE](
_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_MULTIPLE] mengembalikan STATUS_SUCCESS 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_MULTIPLE] sebagai tanggapan untuk menerima permintaan IRP_MJ_LOCK_CONTROL dengan kode kecil IRP_MN_UNLOCK_ALL atau IRP_MN_UNLOCK_ALL_BY_KEY.
Sebelum memanggil MRxLowIOSubmit[LOWIO_OP_UNLOCK_MULTIPLE], RDBSS memodifikasi anggota berikut dalam struktur RX_CONTEXT yang ditujukkan oleh parameter RxContext :
Anggota LowIoContext.Operation diatur ke LOWIO_OP_UNLOCK_MULTIPLE.
Anggota LowIoContext.ResourceThreadId diatur ke utas proses yang memulai operasi di RDBSS.
Anggota LowIoContext.ParamsFor.Locks.LockList diatur ke daftar elemen LOWIO_LOCK_LIST. Setiap elemen menentukan rentang yang akan dibuka kuncinya.
Rentang byte yang akan dibuka kuncinya ditentukan dalam anggota LowIoContext.ParamsFor.Locks.LockList dari struktur RX_CONTEXT. Struktur LOWIO_LOCK_LIST adalah sebagai berikut:
typedef struct _LOWIO_LOCK_LIST {
struct _LOWIO_LOCK_LIST *Next;
ULONG LockNumber;
RXVBO ByteOffset;
LONGLONG Length;
ULONG Key;
BOOLEAN ExclusiveLock;
} LOWIO_LOCK_LIST, *PLOWIO_LOCK_LIST;
Anggota LowIoContext.Operation RX_CONTEXT menentukan operasi I/O rendah untuk dilakukan. Dimungkinkan bagi beberapa rutinitas I/O rendah untuk menunjuk ke rutinitas yang sama dalam pengalihan mini jaringan karena anggota LowIoContext.Operation 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 mini-redirector 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_MULTIPLE] 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_MULTIPLE] 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]