Freigeben über


MRxLowIOSubmit[LOWIO_OP_SHAREDLOCK] Routine

Die MRxLowIOSubmit[LOWIO_OP_SHAREDLOCK] -Routine wird von RDBSS aufgerufen, um anzufordern, dass ein Netzwerkumleitungsor eine freigegebene Sperre für ein Dateiobjekt öffnet.

Syntax

PMRX_CALLDOWN MRxLowIOSubmit[LOWIO_OP_SHAREDLOCK];

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

Parameter

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

Rückgabewert

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

Rückgabecode Beschreibung
STATUS_CONNECTION_DISCONNECTED

Die Verbindung wurde getrennt.

STATUS_INSUFFICIENT_RESOURCES

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

STATUS_INVALID_BUFFER_SIZE

Die angeforderte Puffergröße war zu groß.

STATUS_INVALID_NETWORK_RESPONSE

Vom Remoteserver wurde eine ungültige Antwort empfangen.

STATUS_INVALID_PARAMETER

In RxContext wurde ein ungültiger Parameter angegeben.

STATUS_LINK_FAILED

Der Versuch, die Verbindung mit einem Remoteserver wiederherzustellen, um die Anforderung abzuschließen, ist fehlgeschlagen.

STATUS_NOT_IMPLEMENTED

Diese Routine wird nicht implementiert.

STATUS_SHARING_VIOLATION

Es ist eine Freigabeverletzung aufgetreten.

STATUS_UNSUCCESSFUL

Der Aufruf war nicht erfolgreich.

Hinweise

RDBSS ruft MRxLowIOSubmit[LOWIO_OP_SHAREDLOCK] als Reaktion auf den Empfang einer IRP_MJ_LOCK_CONTROL-Anforderung mit dem Nebencode IRP_MN_LOCK auf, wenn für IrpSp-Flags> das SL_EXCLUSIVE_LOCK Bit nicht festgelegt ist.

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

Der LowIoContext.Operation-Member ist auf LOWIO_OP_SHAREDLOCK festgelegt.

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

Der LowIoContext.ParamsFor.Locks.ByteOffset-Member ist auf den Wert von IrpSp-Parameters.LockControl.ByteOffset.QuadPart> festgelegt.

Der LowIoContext.ParamsFor.Locks.Key-Member ist auf den Wert von IrpSp-Parameters.LockControl.Key> festgelegt.

Der LowIoContext.ParamsFor.Locks.Flags-Member ist auf den Wert von IrpSp-Flags> festgelegt.

Der LowIoContext.ParamsFor.Locks.Length-Member ist auf den Wert von IrpSp-Parameters.LockControl.Length.QuadPart> festgelegt.

Der LowIoContext.Operation-Member der RX_CONTEXT-Struktur gibt den auszuführenden E/A-Vorgang mit geringem E/A-Wert an. Es ist möglich, dass mehrere der niedrigen E/A-Routinen auf dieselbe Routine in einer Netzwerkminiumleitung verweisen, da der LowIoContext.Operation-Member verwendet werden kann, um den angeforderten E/A-Vorgang mit geringem E/A-Wert zu unterscheiden. Beispielsweise könnten alle E/A-Aufrufe im Zusammenhang mit Dateisperren dieselbe niedrige E/A-Routine im Netzwerkminiumleitungsor aufrufen, und diese Routine könnte den LowIoContext.Operation-Member verwenden, um zwischen dem angeforderten Sperr- und Entsperrvorgang zu unterscheiden.

Wenn die MRxLowIOSubmit[LOWIO_OP_SHAREDLOCK] -Routine lange dauern kann, sollte der Netzwerkminiumleitungstreiber die FCB-Struktur freigeben, bevor die Netzwerkkommunikation initiiert wird. Die FCB-Struktur kann durch Aufrufen von RxReleaseFcbResourceForThreadInMRx freigegeben werden. Während die MRxLowIOSubmit[LOWIO_OP_SHAREDLOCK] -Routine verarbeitet wird, gibt das LowIoContext.ResourceThreadId-Mitglied von RX_CONTEXT garantiert den Thread des Prozesses an, der den Vorgang in RDBSS initiiert hat.

Das LowIoContext.ResourceThreadId-Member der RX_CONTEXT-Struktur 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.

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

MRxLowIOSubmit[LOWIO_OP_UNLOCK_MULTIPLE]

MRxLowIOSubmit[LOWIO_OP_WRITE]

RxReleaseFcbResourceForThreadInMRx