Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die MRxLowIOSubmit[LOWIO_OP_UNLOCK_MULTIPLE] -Routine wird von RDBSS aufgerufen, um anzufordern, dass der Netzwerkminiumleitungsor mehrere Sperren entfernt, die für ein Dateiobjekt gespeichert sind.
Syntax
PMRX_CALLDOWN MRxLowIOSubmit[LOWIO_OP_UNLOCK_MULTIPLE];
NTSTATUS MRxLowIOSubmit[LOWIO_OP_UNLOCK_MULTIPLE](
_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_UNLOCK_MULTIPLE] gibt STATUS_SUCCESS nach 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_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_UNLOCK_MULTIPLE] als Reaktion auf den Empfang einer IRP_MJ_LOCK_CONTROL-Anforderung mit dem Nebencode IRP_MN_UNLOCK_ALL oder IRP_MN_UNLOCK_ALL_BY_KEY auf.
Vor dem Aufrufen von MRxLowIOSubmit[LOWIO_OP_UNLOCK_MULTIPLE]ändert RDBSS die folgenden Member in der RX_CONTEXT Struktur, auf die der RxContext-Parameter verweist:
Der LowIoContext.Operation-Member ist auf LOWIO_OP_UNLOCK_MULTIPLE festgelegt.
Der LowIoContext.ResourceThreadId-Member ist auf den Thread des Prozesses festgelegt, der den Vorgang in RDBSS initiiert hat.
Der LowIoContext.ParamsFor.Locks.LockList-Member ist auf eine Liste von LOWIO_LOCK_LIST Elementen festgelegt. Jedes Element gibt einen Bereich an, der entsperrt werden soll.
Die zu entsperrenden Bytebereiche werden im Member LowIoContext.ParamsFor.Locks.LockList der RX_CONTEXT-Struktur angegeben. Die LOWIO_LOCK_LIST-Struktur lautet wie folgt:
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;
Der LowIoContext.Operation-Member von RX_CONTEXT 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_UNLOCK_MULTIPLE] -Routine lange dauern kann, sollte der Netzwerkminiumleitungstreiber die FCB-Struktur freigeben, bevor die Netzwerkkommunikation gestartet wird. Die FCB-Struktur kann durch Aufrufen von RxReleaseFcbResourceForThreadInMRx freigegeben werden. Während die MRxLowIOSubmit[LOWIO_OP_UNLOCK_MULTIPLE] -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-Mitglied von RX_CONTEXT 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_SHAREDLOCK]
MRxLowIOSubmit[LOWIO_OP_UNLOCK]