Bagikan melalui


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_READ]

MRxLowIOSubmit[LOWIO_OP_SHAREDLOCK]

MRxLowIOSubmit[LOWIO_OP_UNLOCK]

MRxLowIOSubmit[LOWIO_OP_WRITE]

RxReleaseFcbResourceForThreadInMRx