Bagikan melalui


Rutinitas MRxLowIOSubmit[LOWIO_OP_WRITE]

Rutinitas MRxLowIOSubmit[LOWIO_OP_WRITE] dipanggil oleh RDBSS untuk mengeluarkan permintaan tulis ke pengalihan mini jaringan.

Sintaks

PMRX_CALLDOWN MRxLowIOSubmit[LOWIO_OP_WRITE];

NTSTATUS MRxLowIOSubmit[LOWIO_OP_WRITE](
  _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_WRITE] 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_WRITE] sebagai tanggapan untuk menerima permintaan IRP_MJ_WRITE .

Sebelum memanggil MRxLowIOSubmit[LOWIO_OP_WRITE], RDBSS memodifikasi anggota berikut dalam struktur RX_CONTEXT yang ditujukkan oleh parameter RxContext :

Anggota LowIoContext.Operation diatur ke LOWIO_OP_WRITE.

Anggota LowIoContext.ResourceThreadId diatur ke utas proses yang memulai operasi di RDBSS.

Anggota LowIoContext.ParamsFor.ReadWrite.Key diatur ke nilai IrpSp-Parameters.Read.Key>.

Anggota ParamsFor.ReadWrite.Flags memiliki bit LOWIO_READWRITEFLAG_PAGING_IO diatur jika Irp-Flags> memiliki bit IRP_PAGING_IO aktif.

Anggota ParamsFor.ReadWrite.Buffer diatur ke buffer pengguna yang dikunci untuk IoWriteAccess.

Anggota LowIoContext.ParamsFor.ReadWrite.ByteCount diatur ke nilai IrpSp-Parameters.Write.Length>.

Permintaan tulis biasanya diimplementasikan oleh pengalih mini jaringan sebagai operasi asinkron karena dapat memakan waktu cukup lama. Operasi ini biasanya terdiri dari pengiriman permintaan jaringan ke server jarak jauh. Respons diperoleh ketika permintaan tulis selesai di server. Ini adalah contoh operasi di mana pengalih mini jaringan mungkin perlu mendaftarkan konteks untuk menangani pembatalan yang dimulai secara lokal.

Sementara rutinitas MRxLowIOSubmit[LOWIO_OP_WRITE] sedang diproses, anggota lowIoContext.ResourceThreadId dari RX_CONTEXT dijamin untuk 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_NOTIFY_CHANGE_DIRECTORY]

MRxLowIOSubmit[LOWIO_OP_READ]

MRxLowIOSubmit[LOWIO_OP_SHAREDLOCK]

MRxLowIOSubmit[LOWIO_OP_UNLOCK]

MRxLowIOSubmit[LOWIO_OP_UNLOCK_MULTIPLE]

RxReleaseFcbResourceForThreadInMRx