Freigeben über


MRxLowIOSubmit[LOWIO_OP_WRITE] Routine

Die MRxLowIOSubmit[LOWIO_OP_WRITE] -Routine wird von RDBSS aufgerufen, um eine Schreibanforderung an den Netzwerkminiumleitungsor ausstellen zu können.

Syntax

PMRX_CALLDOWN MRxLowIOSubmit[LOWIO_OP_WRITE];

NTSTATUS MRxLowIOSubmit[LOWIO_OP_WRITE](
  _Inout_ PRX_CONTEXT RxContext
)
{ ... }

Parameter

RxContext [in, out]
Ein Zeiger auf die RX_CONTEXT-Struktur. Dieser Parameter enthält das IRP, das den Vorgang anfordert.

Rückgabewert

MRxLowIOSubmit[LOWIO_OP_WRITE] gibt STATUS_SUCCESS bei Erfolg oder einen geeigneten NTSTATUS-Wert zurück, z. B. einen der folgenden:

Rückgabecode Beschreibung
STATUS_FILE_CLOSED

Die FCB-Struktur wurde erworben, aber die zugehörige SRV_OPEN Struktur wurde geschlossen.

STATUS_INSUFFICIENT_RESOURCES

Es gab nicht genügend Ressourcen, um die Anforderung abzuschließen.

STATUS_INVALID_DEVICE_REQUEST

Es wurde eine ungültige Geräteanforderung angegeben.

STATUS_INVALID_PARAMETER

In RxContext wurde ein ungültiger Parameter angegeben.

STATUS_NOT_IMPLEMENTED

Diese Routine ist nicht implementiert.

STATUS_NOT_SUPPORTED

Die angegebene Anforderung wird vom Netzwerk-Miniumleitungsor nicht unterstützt.

Hinweise

RDBSS ruft MRxLowIOSubmit[LOWIO_OP_WRITE] als Reaktion auf den Empfang einer IRP_MJ_WRITE-Anforderung auf.

Vor dem Aufrufen von MRxLowIOSubmit[LOWIO_OP_WRITE] ändert RDBSS die folgenden Member in der RX_CONTEXT Struktur, auf die der RxContext-Parameter verweist:

Der LowIoContext.Operation-Member ist auf LOWIO_OP_WRITE festgelegt.

Der LowIoContext.ResourceThreadId-Member wird auf den Thread des Prozesses festgelegt, der den Vorgang in RDBSS initiiert hat.

Der LowIoContext.ParamsFor.ReadWrite.Key-Member wird auf den Wert von IrpSp-Parameters.Read.Key> festgelegt.

Der ParamsFor.ReadWrite.Flags-Member verfügt über das LOWIO_READWRITEFLAG_PAGING_IO Bit ist auf festgelegt, wenn Irp-Flags> das IRP_PAGING_IO Bit aktiviert hat.

Der ParamsFor.ReadWrite.Buffer-Member ist auf den Benutzerpuffer festgelegt, der für IoWriteAccess gesperrt ist.

Der LowIoContext.ParamsFor.ReadWrite.ByteCount-Member wird auf den Wert von IrpSp-Parameters.Write.Length> festgelegt.

Eine Schreibanforderung wird normalerweise von einem Netzwerk-Mini-Redirector als asynchroner Vorgang implementiert, da sie viel Zeit in Anspruch nehmen kann. Der Vorgang besteht in der Regel aus dem Senden einer Netzwerkanforderung an den Remoteserver. Die Antwort wird abgerufen, wenn die Schreibanforderung auf dem Server abgeschlossen ist. Dies ist ein Beispiel für einen Vorgang, für den der Netzwerk-Miniumleitungsor möglicherweise einen Kontext für die Behandlung lokal initiierter Abbrüche registrieren muss.

Während die MRxLowIOSubmit[LOWIO_OP_WRITE] -Routine verarbeitet wird, gibt der LowIoContext.ResourceThreadId-Member von RX_CONTEXT garantiert den Thread des Prozesses an, der den Vorgang in RDBSS initiiert hat. Das LowIoContext.ResourceThreadId-Element kann verwendet werden, um die FCB-Struktur im Namen eines anderen Threads freizugeben. Wenn eine asynchrone Routine abgeschlossen ist, kann die FCB-Struktur, die aus dem anfänglichen Thread abgerufen wurde, freigegeben werden. Die FCB-Struktur kann durch Aufrufen von RxReleaseFcbResourceForThreadInMRx freigegeben werden.

Anforderungen

Zielplattform

Desktop

Header

Mrx.h (einschließlich Mrx.h)

Weitere Informationen

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