Freigeben über


PMRX_CALLDOWN Rückruffunktion (mrx.h)

Dieser Rückruf wird von RDBSS aufgerufen, um anzufordern, dass der Netzwerkminiumleitungsor eine Aktion basierend auf dem angegebenen IRP ausführt.

Syntax

PMRX_CALLDOWN PmrxCalldown;

NTSTATUS PmrxCalldown(
  [in, out] IN OUT PRX_CONTEXT RxContext
)
{...}

Parameter

[in, out] RxContext

Ein Zeiger auf die RX_CONTEXT-Struktur. Dieser Parameter enthält die IRP, die den Vorgang anfordert.

Rückgabewert

Dieser Rückruf gibt STATUS_SUCCESS bei Erfolg oder einen entsprechenden NTSTATUS-Wert zurück, z. B. den folgenden:

Rückgabecode Beschreibung
STATUS_ACCESS_DENIED Es wurde eine Anforderung gestellt, den Netzwerk-Miniumleitungsor zu beenden oder zu starten, aber dem Aufrufer fehlte die richtige Sicherheit für diesen Vorgang.
STATUS_BUFFER_OVERFLOW Der Puffer zum Empfangen der erweiterten Attributinformationen war zu klein. Dieser Rückgabewert sollte als erfolgreich betrachtet werden, und so viele gültige Daten wie möglich sollten im Info.Buffer-Member der RX_CONTEXT Struktur zurückgegeben werden, auf die der RxContext-Parameter verweist.
STATUS_BUFFER_TOO_SMALL Der Puffer ist zu klein, um die angeforderten Daten zu empfangen. Wenn dieser Wert zurückgegeben wird, sollte das InformationToReturn-Element der RX_CONTEXT Struktur, auf die der RxContext-Parameter verweist, auf die Mindestgröße des erwarteten Puffers festgelegt werden, damit der Aufruf erfolgreich ist.
STATUS_CONNECTION_DISCONNECTED Die Verbindung wurde getrennt.
STATUS_EA_CORRUPT_ERROR Vom Remoteserver wurden ungültige erweiterte Attributinformationen empfangen.
STATUS_EA_TOO_LARGE Die übergebenen erweiterten Attributinformationen sind größer als die Größe, die von der Remotefreigabe unterstützt wird.
STATUS_FILE_CLOSED Die FCB-Struktur wurde erworben, aber die zugehörige SRV_OPEN Struktur wurde geschlossen.
STATUS_INSUFFICIENT_RESOURCES Es waren nicht genügend Ressourcen vorhanden, um den Vorgang abzuschließen.
STATUS_INTERNAL_ERROR Im Netzwerkminiumleitungsor ist ein interner Fehler aufgetreten.
STATUS_INVALID_BUFFER_SIZE Die angeforderte Puffergröße war zu groß.
STATUS_INVALID_DEVICE_REQUEST Eine ungültige Geräteanforderung wurde an den Netzwerk-Mini-Redirector gesendet.
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_MORE_PROCESSING_REQUIRED Ein Netzwerkminiumleitungsor gibt diesen Wert zurück, um das Zusammenbrechen dieser offenen Anforderung zu deaktivieren.
STATUS_NETWORK_ACCESS_DENIED Der Netzwerkzugriff wurde verweigert. Dieser Fehler kann zurückgegeben werden, wenn der Netzwerkminiumleitungsor aufgefordert wurde, eine neue Datei in einer schreibgeschützten Freigabe zu öffnen.
STATUS_NETWORK_NAME_DELETED Ein Netzwerkname wurde gelöscht.
STATUS_NONEXISTENT_EA_ENTRY Es gibt keine erweiterten Attribute für das Dateiobjekt, und der Benutzer hat einen erweiterten Attributindex angegeben.
STATUS_NOT_IMPLEMENTED Ein angefordertes Feature, z. B. Remotestart oder eine Remoteseitendatei, wird nicht implementiert.
STATUS_NOT_SUPPORTED Ein angefordertes Feature, z. B. erweiterte Attribute, wird nicht unterstützt.
STATUS_OBJECT_NAME_COLLISION Der Netzwerkmini-Redirector wurde aufgefordert, eine Datei zu erstellen, die bereits vorhanden ist.
STATUS_OBJECT_NAME_NOT_FOUND Der Objektname wurde nicht gefunden. Dieser Fehler kann zurückgegeben werden, wenn der Netzwerkminiumleitungsor aufgefordert wurde, eine datei zu öffnen, die nicht vorhanden ist.
STATUS_OBJECT_PATH_NOT_FOUND Der Objektpfad wurde nicht gefunden. Dieser Fehler kann zurückgegeben werden, wenn ein NTFS-Streamobjekt angefordert wurde und das Remotedateisystem keine Streams unterstützt.
STATUS_ONLY_IF_CONNECTED Die SRV_OPEN-Struktur ist nicht verbunden.
STATUS_REDIRECTOR_HAS_OPEN_HANDLES Dies war eine Anforderung zum Beenden des Netzwerkminiumleitungs, aber der Redirector verfügt über geöffnete Handles, die verhindern, dass er zu diesem Zeitpunkt angehalten wird.
STATUS_REDIRECTOR_NOT_STARTED Dies war eine Anforderung, den Netzwerkminiumleitungsor zu beenden, aber der Umleitungsor wurde nicht gestartet.
STATUS_REDIRECTOR_STARTED Dies war eine Anforderung zum Starten des Netzwerkminiumleitungs, aber der Umleitungsor wurde bereits gestartet.
STATUS_REPARSE Eine Analyse ist erforderlich, um eine symbolische Verknüpfung zu behandeln.
STATUS_REQUEST_ABORTED Die Netzwerkanforderung wurde abgebrochen.
STATUS_RETRY Der Vorgang sollte wiederholt werden. Dieser Fehler kann zurückgegeben werden, wenn beim Netzwerk-Mini-Redirector eine Freigabeverletzung oder ein Zugriff verweigerter Fehler aufgetreten ist.
STATUS_SHARING_VIOLATION Es ist eine Freigabeverletzung aufgetreten.
STATUS_UNSUCCESSFUL Der Aufruf war nicht erfolgreich.

Hinweise

Die MRxCloseSrvOpen-Routine wird von RDBSS aufgerufen, um anzufordern, dass der Netzwerkminiumleitungsor eine SRV_OPEN-Struktur schließt.

MRxCloseSrvOpen wird von RDBSS im Rahmen von Bereinigungs- und Schließenvorgängen für ein Dateiobjekt aufgerufen. Es wird davon ausgegangen, dass der Netzwerk-Mini-Redirector eine Datei im gesamten Netzwerk schließt.

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

MajorFunction ist auf IRP_MJ_CLOSE festgelegt

pFcb ist auf die FCB-Struktur festgelegt, für die eine enge Verarbeitung initiiert werden soll.

pFobx ist auf die FOBX-Struktur festgelegt, für die eine enge Verarbeitung initiiert werden soll.

RDBSS und ein Netzwerk-Mini-Redirector schließen nicht unbedingt die SRV_OPEN Strukturen, wenn der Benutzer eine Datei schließt. Um die Leistung in einigen Fällen zu verbessern, versucht ein Netzwerk-Mini-Redirector möglicherweise, die SRV_OPEN und die zwischengespeicherten Daten ohne Kontakt mit dem Server wiederzuverwenden. Einige Microsoft Windows-Anwendungen weisen ein Verhalten auf, das eine Datei öffnet, liest und schließt und dann die gleiche Datei schnell wieder öffnet. In diesen Fällen kann die Wiederverwendung der SRV_OPEN Strukturen die Leistung verbessern.

RDBSS ruft MRxCloseSrvOpen für verzögerte Close-Verarbeitung beim Aufräumen einer FOBX-Struktur auf. Dies geschieht, wenn die enge Verarbeitung in Erwartung einer offenen Anforderung verzögert wurde und keine offenen Anforderungen antraten.

MRxCloseSrvOpen kann keinen Wert von STATUS_RETRY zurückgeben, der angibt, dass der Aufruf wiederholt werden soll. Wenn eine Wiederholungsschleife erforderlich ist, muss sie intern in der MRxCloseSrvOpen-Routine vom Netzwerk-Mini-Redirector verarbeitet werden.

Die MRxCollapseOpen-Routine wird von RDBSS aufgerufen, um anzufordern, dass der Netzwerk-Mini-Redirector eine offene Dateisystemanforderung auf eine vorhandene SRV_OPEN-Struktur reduziert.

MRxCollapseOpen wird von RDBSS aufgerufen, um eine SRV_OPEN Struktur lokal zu reduzieren. Der Netzwerk-Mini-Redirector wird konsultiert, um festzustellen, ob ein Zusammenbruch möglich ist, sodass es keinen Grund gibt, den Netzwerk-Mini-Redirector zweimal aufzurufen. Wenn der Netzwerk-Mini-Redirector beschließt, die SRV_OPEN-Struktur zu reduzieren, wird dies der Fall sein und ein rückgabefähiges status zurückgegeben. Ein Rückgabewert von STATUS_SUCCESS ist ein endender Rückgabewert. Ein anderer Rückgabewert, z. B. STATUS_MORE_PROCESSING_REQUIRED, wird als nicht beendender Rückgabewert betrachtet.

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

pRelevantSrvOpen wird auf die SRV_OPEN-Struktur festgelegt, die reduziert werden soll.

Create.pSrvCall wird auf die SRV_CALL-Struktur festgelegt, die dem SRV_OPEN zugeordnet ist.

Wenn der Netzwerkminiumleitungsor beschließt, die SRV_OPEN-Struktur zu reduzieren, muss der SrvOpen-Member der RX_CONTEXT-Struktur auf die reduzierte SRV_OPEN-Struktur festgelegt werden.

DieMRxCreate-Routine wird von RDBSS aufgerufen, um anzufordern, dass der Netzwerkminiumleitungsor ein Dateisystemobjekt erstellt.

MRxCreate wird von RDBSS aufgerufen, um anzufordern, dass der Netzwerk-Mini-Redirector ein Dateisystemobjekt über das Netzwerk öffnet. Dieser Aufruf wird von RDBSS als Reaktion auf den Empfang einer IRP_MJ_CREATE-Anforderung ausgegeben.

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

pRelevantSrvOpen wird auf die SRV_OPEN-Struktur festgelegt.

Create.pSrvCall ist auf die SRV_CALL-Struktur festgelegt.

Create.NtCreateParameters wird auf die angeforderte NT_CREATE_PARAMETERS festgelegt.

Im Kontext eines Netzwerk-Mini-Redirectors bezieht sich ein Dateiobjekt auf die zugeordneten Strukturen des Dateikontrollblocks (FILE Control Block, FCB) und der Dateiobjekterweiterung (FOBX). Es gibt eine 1:1-Korrespondenz zwischen Dateiobjekten und FOBXs. Viele Dateiobjekte verweisen auf denselben FCB, der eine einzelne Datei auf einem Remoteserver darstellt. Ein Client kann mehrere unterschiedliche offene Anforderungen (NtCreateFile-Anforderungen) auf demselben FCB haben, und jede dieser Anforderungen erstellt ein neues Dateiobjekt. RDBSS- und Netzwerk-Miniumleitungen können auswählen, dass weniger MRxCreate-Anforderungen als die empfangenen NtCreateFile-Anforderungen gesendet werden sollen. Dabei wird eine SRV_OPEN-Struktur zwischen mehreren FOBX-Instanzen gemeinsam genutzt.

Wenn die MRxCreate-Anforderung für eine Dateiüberschreibung galt und MRxCreate STATUS_SUCCESS zurückgegeben wurde, ruft RDBSS die E/A-Ressource für Paging ab und schneidet die Datei ab. Wenn die Datei vom Cache-Manager zwischengespeichert wird, aktualisiert RDBSS die Größen des Cache-Managers mit denen, die soeben vom Server empfangen wurden.

Vor der Rückgabe muss MRxCreate den CurrentIrp-IoStatus.Information-Member> der RX_CONTEXT-Struktur festlegen, auf die der RxContext-Parameter verweist.

Die MRxDevFcbXXXControlFile-Routine wird von RDBSS aufgerufen, um eine FCB-Steuerungsanforderung des Geräts (eine IOCTL- oder FSCTL-Anforderung) an den Mini-Umleitungsnetzwerk zu übergeben.

MRxDevFcbXXXControlFile verarbeitet IOCTL- und FSCTL-Anforderungen im Zusammenhang mit dem FCB des Geräts, die an den Netzwerk-Mini-Redirector gesendet werden.

Vor dem Aufrufen von MRxDevFcbXXXControlFile ändert RDBSS den folgenden Member in der RX_CONTEXT Struktur, auf die der RxContext-Parameter verweist:

MajorFunction ist auf die Hauptfunktion des IRP festgelegt.

Wenn es sich um eine IRP_MJ_FILE_SYSTEM_CONTROL Anforderung handelt, ändert RDBSS die folgenden Member in der RX_CONTEXT-Struktur, auf die der RxContext-Parameter verweist:

LowIoContext.ParamsFor.FsCtl.MinorFunction ist auf den Nebenfunktionscode für den FSCTL-Code festgelegt.

LowIoContext.ParamsFor.FsCtl.FsControlCode ist auf den FSCTL-Code für das IRP festgelegt.

Wenn es sich um eine IRP_MJ_DEVICE_CONTROL- oder IRP_MJ_INTERNAL_DEVICE_CONTROL-Anforderung handelt, ändert RDBSS den folgenden Member in der RX_CONTEXT-Struktur, auf die der RxContext-Parameter verweist:

LowIoContext.ParamsFor.FsCtl.FsControlCode ist auf den Steuercode für das IRP festgelegt.

Wenn MRxDevFcbXXXControlFile STATUS_SUCCESS zurückgibt, war die Routine erfolgreich. Jeder andere Rückgabewert gibt an, dass ein Fehler aufgetreten ist.

Die MRxFlush-Routine wird von RDBSS aufgerufen, um anzufordern, dass ein Netzwerk-Mini-Redirector den Inhalt eines Dateisystemobjekts in den Speicher schreibt. RDBSS gibt diesen Aufruf als Reaktion auf den Empfang einer IRP_MJ_FLUSH_BUFFERS-Anforderung aus.

MRxFlush verarbeitet Netzwerkanforderungen für die Dateileerung.

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

RDBSS ruft MRxLowIOSubmit[LOWIO_OP_EXCLUSIVELOCK] 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 festgelegt ist.

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

Der LowIoContext.Operation-Member ist auf LOWIO_OP_EXCLUSIVELOCK festgelegt.

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

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

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

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

Der LowIoContext.ParamsFor.Locks.Length-Member wird 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 niedrigem E/A-Wert an. Es ist möglich, dass mehrere der niedrigen E/A-Routinen auf dieselbe Routine in einem Netzwerk-Mini-Redirector verweisen, da dieser LowIoContext.Operation-Member verwendet werden kann, um den angeforderten E/A-Low-Vorgang zu unterscheiden. Beispielsweise könnten alle E/A-Aufrufe im Zusammenhang mit Dateisperren dieselbe niedrige E/A-Routine im Netzwerk-Miniumleitungsmodus aufrufen, und diese Routine könnte den LowIoContext.Operation-Member verwenden, um zwischen dem angeforderten Sperr- und Entsperrvorgang zu unterscheiden.

Wenn die Ausführung der MRxLowIOSubmit[LOWIO_OP_EXCLUSIVELOCK] -Routine sehr lange dauern kann, sollte der Netzwerk-Miniumleitungstreiber 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_EXCLUSIVELOCK] -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 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.

Die Routine MRxLowIOSubmit[LOWIO_OP_FSCTL] wird von RDBSS aufgerufen, um anzufordern, dass ein Netzwerk-Mini-Redirector eine Dateisystemsteuerungsanforderung für die Remotedatei ausgibt.

RDBSS ruft MRxLowIOSubmit[LOWIO_OP_FSCTL] als Reaktion auf den Empfang einer IRP_MJ_FILE_SYSTEM_CONTROL-Anforderung auf.

Bevor MRxLowIOSubmit[LOWIO_OP_FSCTL] aufgerufen wird, ändert RDBSS die folgenden Member in der RX_CONTEXT Struktur, auf die der RxContext-Parameter verweist:

Der LowIoContext.Operation-Member ist auf LOWIO_OP_FSCTL festgelegt.

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

Der LowIoContext.ParamsFor.FsCtl.FsControlCode-Member ist auf den FSCTL-Hauptkontrollcode festgelegt.

Der LowIoContext.ParamsFor.FsCtl.MinorFunction-Member ist auf den FSCTL-Nebensteuerelementcode festgelegt.

Der LowIoContext.ParamsFor.FsCtl.pInputBuffer-Member ist auf den Eingabepuffer festgelegt.

Der LowIoContext.ParamsFor.FsCtl.InputBufferLength-Member wird auf die Eingabepufferlänge festgelegt.

Der LowIoContext.ParamsFor.FsCtl.pOutputBuffer-Member ist auf den Ausgabepuffer festgelegt.

Der LowIoContext.ParamsFor.FsCtl.OutputBufferLength-Member ist auf die Ausgabepufferlänge festgelegt.

Die anforderungen des Dateisystemkontrollcodes (FSCTL), die von einem Netzwerk-Mini-Redirector verarbeitet werden, können in eine von mehreren Kategorien eingeteilt werden:

  • FSCTLs, die von RDBSS und dem Netzwerk-Miniumleitung implementiert und verwendet werden

  • FSCTLs, die nur vom Netzwerk-Mini-Redirector implementiert und verwendet werden

  • FSCTLs, die vom Netzwerk-Mini-Redirector nie angezeigt werden sollten. Diese FSCTLs sind ausschließlich als Debughilfe gedacht.

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

Die MRxLowIOSubmit[LOWIO_OP_IOCTL] -Routine wird von RDBSS aufgerufen, um eine E/A-Systemsteuerungsanforderung an den Mini-Umleitungsnetzwerk ausstellen zu können.

RDBSS ruft MRxLowIOSubmit[LOWIO_OP_IOCTL] als Reaktion auf den Empfang einer IRP_MJ_DEVICE_CONTROL oder IRP_MJ_INTERNAL_DEVICE_CONTROL-Anforderungen auf.

Bevor MRxLowIOSubmit[LOWIO_OP_IOCTL] aufgerufen wird, ändert RDBSS die folgenden Member in der RX_CONTEXT Struktur, auf die der RxContext-Parameter verweist:

Der LowIoContext.Operation-Member ist auf LOWIO_OP_IOCTL festgelegt.

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

Der LowIoContext.ParamsFor.IoCtl.IoControlCode-Member ist auf den IOCTL-Steuerelementcode festgelegt.

Der LowIoContext.ParamsFor.IoCtl.pInputBuffer-Member ist auf den Eingabepuffer festgelegt.

Der LowIoContext.ParamsFor.IoCtl.InputBufferLength-Member wird auf die Eingabepufferlänge festgelegt.

Der LowIoContext.ParamsFor.IoCtl.pOutputBuffer-Member ist auf den Ausgabepuffer festgelegt.

Der LowIoContext.ParamsFor.IoCtl.OutputBufferLength-Member wird auf die Ausgabepufferlänge festgelegt.

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

Die MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY] -Routine wird von RDBSS aufgerufen, um eine Anforderung an den Netzwerkminiumleitungs-Miniumleitungsvorgang für einen Benachrichtigungsvorgang für Verzeichnisänderungen ausstellen zu können.

RDBSS ruft MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY] als Reaktion auf den Empfang einer IRP_MJ_DIRECTORY_CONTROL-Anforderung auf.

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

Der LowIoContext.Operation-Member ist auf LOWIO_OP_NOTIFY_CHANGE_DIRECTORY festgelegt.

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

Das LowIoContext.ParamsFor.NotifyChangeDirectory.WatchTree-Element wird auf TRUE festgelegt, wenn für IrpSp-Flags> das SL_WATCH_TREE Bit festgelegt ist.

Der LowIoContext.ParamsFor.NotifyChangeDirectory.CompletionFilter-Member wird auf den Wert von IrpSp-Parameters.NotifyDirectory.CompletionFilter> festgelegt.

Das LowIoContext.ParamsFor.NotifyChangeDirectory.NotificationBufferLength-Element wird auf den Wert von IrpSp-Parameters.NotifyDirectory.Length> festgelegt.

Der LowIoContext.ParamsFor.NotifyChangeDirectory.pNotificationBuffer-Member wird auf den Wert festgelegt, der durch Aufrufen von MmGetSystemAddressForMdlSafe zurückgegeben wird, indem Irp-MdlAddress> und NormalPagePriority übergeben werden. Der Benutzerpuffer wird ebenfalls auf Schreibzugriff untersucht und gesperrt.

Ein Verzeichnisänderungsbenachrichtigungsvorgang wird normalerweise von einem Netzwerk-Miniumleitungsvorgang als asynchroner Vorgang implementiert, da er viel Zeit in Anspruch nehmen kann. Der Vorgang besteht in der Regel aus dem Senden einer Netzwerkanforderung an den Remoteserver, der eine Änderungsbenachrichtigung anfordert. Die Antwort wird abgerufen, wenn die gewünschte Änderung auf dem Server betroffen ist. Dies ist ein Beispiel für einen Vorgang, für den der Netzwerkminiumleitungsor möglicherweise einen eindeutigen Kontextwert für die Behandlung lokal initiierter Abbrüche registrieren muss.

Während die MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY] -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 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.

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

RDBSS ruft MRxLowIOSubmit[LOWIO_OP_READ] als Reaktion auf den Empfang einer IRP_MJ_READ-Anforderung auf.

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

Der LowIoContext.Operation-Member ist auf LOWIO_OP_READ festgelegt.

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

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

Das ParamsFor.ReadWrite.Flags-Element hat 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 IoReadAccess gesperrt ist.

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

Eine Leseanforderung wird normalerweise von einem Netzwerkminiumleitungsor 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 Leseanforderung auf dem Server abgeschlossen ist. Dies ist ein Beispiel für einen Vorgang, für den der Netzwerkminiumleitungsor möglicherweise einen Kontext für die Behandlung lokal initiierter Abbrüche registrieren muss.

Während die MRxLowIOSubmit[LOWIO_OP_READ] -Routine verarbeitet, 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 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.

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

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.

Die MRxLowIOSubmit[LOWIO_OP_UNLOCK] -Routine wird von RDBSS aufgerufen, um anzufordern, dass ein Netzwerkminiumleitungsor eine einzelne Sperre für ein Dateiobjekt entfernt.

RDBSS ruft MRxLowIOSubmit[LOWIO_OP_UNLOCK] als Reaktion auf den Empfang einer IRP_MJ_LOCK_CONTROL-Anforderung mit dem Nebencode IRP_MN_UNLOCK_SINGLE auf.

Vor dem Aufrufen von MRxLowIOSubmit[LOWIO_OP_UNLOCK]ä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 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.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 einem Netzwerk-Mini-Redirector verweisen, da dieser LowIoContext.Operation-Member verwendet werden kann, um den angeforderten Vorgang mit niedrigen E/A-Vorgängen 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] -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] -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-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.

Die MRxLowIOSubmit[LOWIO_OP_UNLOCK_MULTIPLE] -Routine wird von RDBSS aufgerufen, um anzufordern, dass der Netzwerkminiumleitungsor mehrere Sperren für ein Dateiobjekt entfernt.

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.

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

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 ist auf den Thread des Prozesses festgelegt, der den Vorgang in RDBSS initiiert hat.

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

Das ParamsFor.ReadWrite.Flags-Element hat 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 ist auf den Wert von IrpSp-Parameters.Write.Length> festgelegt.

Eine Schreibanforderung wird normalerweise von einem Netzwerkminiumleitungsor 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 Netzwerkminiumleitungsor 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 das LowIoContext.ResourceThreadId-Mitglied von RX_CONTEXT garantiert den Thread des Prozesses an, der den Vorgang in RDBSS initiiert hat. Das LowIoContext.ResourceThreadId-Member 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.

Die MRxQueryDirectory-Routine wird von RDBSS aufgerufen, um anzufordern, dass ein Netzwerk-Mini-Redirector Informationen für ein Dateiverzeichnis abfragt.

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

Das Info.FileInformationClass-Element ist auf IrpSp-Parameters.QueryDirectory.FileInformationClass> festgelegt.

Das Info.Buffer-Element ist auf Benutzerpuffer aus E/A-Anforderungspaket festgelegt. Dieser Puffer wurde bei Bedarf bereits von RDBSS gesperrt.

Der Info.LengthRemaining-Member ist auf IrpSp-Parameters.QueryDirectory.Length> festgelegt.

Das QueryDirectory.FileIndex-Element ist auf IrpSp-Parameters.QueryDirectory.FileIndex> festgelegt.

Der QueryDirectory.RestartScan-Member ist auf nonzero festgelegt, wenn IrpSp-Flags> das SL_RESTART_SCAN Bit aktiviert hat.

Der QueryDirectory.ReturnSingleEntry-Member ist auf nonzero festgelegt, wenn IrpSp-Flags> das SL_RETURN_SINGLE_ENTRY Bit aktiviert hat.

Das QueryDirectory.IndexSpecified-Element ist auf nonzero festgelegt, wenn IrpSp-Flags> das SL_INDEX_SPECIFIED Bit aktiviert hat.

Das QueryDirectory.InitialQuery-Element wird auf ungleich null festgelegt, wenn das UnicodeQueryTemplate.Buffer-Element des zugeordneten FOBX-Elements NULL ist und das Flags-Element des FOBX nicht das FOBX_FLAG_MATCH_ALL Bit aktiviert hat.

Bei einer wilden Karte Abfrage ("." beispielsweise legt RDBSS den UnicodeQueryTemplate.Buffer-Member des zugeordneten FOBX auf den wilden Karte übergebenen Abfrage fest.

Wenn das PostRequest-Element der RX_CONTEXT-Struktur bei Rückgabe von MRxQueryDirectoryTRUE ist, ruft RDBSS RxFsdPostRequest auf und übergibt die RX_CONTEXT-Struktur an eine Workerwarteschlange zur Verarbeitung durch den Dateisystemprozess (FSP).

Die MRxQueryEaInfo-Routine wird von RDBSS aufgerufen, um anzufordern, dass ein Netzwerk-Miniumleitung erweiterte Attributinformationen für ein Dateisystemobjekt abfragt.

RDBSS ruft MRxQueryEaInfo als Reaktion auf den Empfang einer IRP_MJ_QUERY_EA-Anforderung auf.

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

Das Info.Buffer-Element ist auf den Benutzerpuffer aus E/A-Anforderungspaket festgelegt. Dieser Puffer wurde bei Bedarf bereits von RDBSS gesperrt.

Der Info.LengthRemaining-Member ist auf IrpSp-Parameters.QueryEa.Length> festgelegt.

Das QueryEa.UserEaList-Element ist auf IrpSp-Parameters.QueryEa.EaList> festgelegt.

Das QueryEa.UserEaListLength-Element ist auf IrpSp-Parameters.QueryEa.EaListLength> festgelegt.

Das QueryEa.UserEaIndex-Element ist auf IrpSp-Parameters.QueryEa.EaIndex> festgelegt.

Das QueryEa.RestartScan-Element wird auf ungleich null festgelegt, wenn IrpSp-Flags> das SL_RESTART_SCAN Bit aktiviert hat.

Das QueryEa.ReturnSingleEntry-Element ist auf ungleich null festgelegt, wenn IrpSp-Flags> das SL_RETURN_SINGLE_ENTRY Bit aktiviert hat.

Das QueryEa.IndexSpecified-Element ist auf ungleich null festgelegt, wenn IrpSp-Flags> das SL_INDEX_SPECIFIED Bit aktiviert hat.

Bei Erfolg sollte MRxQueryEaInfo den Info.LengthRemaining-Member der RX_CONTEXT-Struktur auf die Länge der zurückgegebenen erweiterten Attributinformationen festlegen und außerdem das Fobx-OffsetOfNextEaToReturn-Element> aktualisieren. Wenn der Aufruf von MRxQueryEaInfo erfolgreich war, legt RDBSS den IoStatus.Information-Member des IRP auf IrpSp-Parameters.QueryEa.Length> minus dem Info.LengthRemaining-Member von RX_CONTEXT fest.

Die MRxQueryFileInfo-Routine wird von RDBSS aufgerufen, um anzufordern, dass ein Netzwerk-Mini-Redirector Dateiinformationen für ein Dateisystemobjekt abfragt.

RDBSS gibt einen Aufruf von MRxQueryFileInfo als Reaktion auf den Empfang einer IRP_MJ_QUERY_INFORMATION-Anforderung aus.

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

Das Info.FileInformationClass-Element ist auf IrpSp-Parameters.QueryFile.FileInformationClass> festgelegt, der angeforderte FILE_INFORMATION_CLASS Wert.

Der Info.Buffer-Member wird auf den Benutzerpuffer aus dem E/A-Anforderungspaket festgelegt.

Das Info.LengthRemaining-Element ist auf IrpSp-Parameters.QueryFile.Length> festgelegt.

Das QueryDirectory.FileIndex-Element ist auf IrpSp-Parameters.QueryDirectory.FileIndex> festgelegt.

Das QueryDirectory.RestartScan-Element wird festgelegt, wenn IrpSp-Flags> das SL_RESTART_SCAN Bit festgelegt hat.

Das QueryDirectory.ReturnSingleEntry-Element wird festgelegt, wenn IrpSp-Flags> SL_RETURN_SINGLE_ENTRY Bit festgelegt hat.

Das QueryDirectory.InitialQuery-Element wird festgelegt, wenn Fobx-UnicodeQueryTemplate.Buffer> NULL ist und Fobx-Flags> das FOBX_FLAG_MATCH_ALL Bit nicht festgelegt ist.

Bei Erfolgreicher Ausführung sollte der Netzwerkminiumleitungsor den Info.LengthRemaining-Member der RX_CONTEXT-Struktur auf Info.Length-Member abzüglich der Länge der zurückgegebenen Dateiinformationen festlegen. Wenn der Aufruf von MRxQueryFileInfo erfolgreich war, legt RDBSS den IoStatus.Information-Member des IRP auf IrpSp-Parameters.QueryFile.Length> minus Das Info.LengthRemaining-Element von RX_CONTEXT fest.

RDBSS unterstützt keine Anforderungen mit dem SL_INDEX_SPECIFIED Bit der IrpSp-Flags> festgelegt. Ein Netzwerk-Mini-Redirector empfängt keine Aufrufe von MRxQueryFileInfo, wobei das SL_INDEX_SPECIFIED Bit von IrpSp-Flags> festgelegt ist.

Die MRxQueryQuotaInfo-Routine wird von RDBSS aufgerufen, um anzufordern, dass ein Netzwerk-Mini-Redirector Kontingentinformationen für ein Dateisystemobjekt abfragt.

RDBSS ruft MRxQueryQuotaInfo als Reaktion auf den Empfang einer IRP_MJ_QUERY_QUOTA-Anforderung auf.

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

Das Info.Buffer-Element ist auf benutzerpuffer aus E/A-Anforderungspaket festgelegt. Dieser Puffer wurde bei Bedarf bereits von RDBSS gesperrt.

Das Info.LengthRemaining-Element ist auf IrpSp-Parameters.QueryQuota.Length> festgelegt.

Das QueryQuota.SidList-Element ist auf IrpSp-Parameters.QueryQuota.SidList> festgelegt.

Das QueryQuota.SidListLength-Element ist auf IrpSp-Parameters.QueryQuota.SidListLength> festgelegt.

Das QueryQuota.StartSid-Element ist auf IrpSp-Parameters.QueryQuota.StartSid> festgelegt.

Der QueryQuota.Length-Member ist auf IrpSp-Parameters.QueryQuota.Length> festgelegt.

Das QueryQuota.RestartScan-Element wird auf ungleich null festgelegt, wenn für IrpSp-Flags> das SL_RESTART_SCAN Bit festgelegt ist.

Das QueryQuota.ReturnSingleEntry-Element ist auf ungleich null festgelegt, wenn für IrpSp-Flags> das SL_RETURN_SINGLE_ENTRY Bit festgelegt ist.

Das QueryQuota.IndexSpecified-Element wird auf ungleich null festgelegt, wenn für IrpSp-Flags> das SL_INDEX_SPECIFIED Bit festgelegt ist.

Bei Erfolg sollte der Netzwerkminiumleitungs-Umleitungselement info.LengthRemaining der RX_CONTEXT-Struktur auf die Länge der zurückzugebenden Kontingentinformationen festlegen. Wenn der Aufruf von MRxQueryQuotaInfo erfolgreich war, legt RDBSS den IoStatus.Information-Member des IRP auf den Info.LengthRemaining-Member von RX_CONTEXT fest.

Wenn der Aufruf von MRxQueryQuotaInfo erfolgreich ist, sollte das InformationToReturn-Element der RX_CONTEXT-Struktur auf die Länge der zurückgegebenen Kontingentinformationen festgelegt werden. Wenn der Aufruf nicht erfolgreich ist, sollte der InformationToReturn-Member von RX_CONTEXT auf 0 (null) festgelegt werden.

Die MRxQuerySdInfo-Routine wird von RDBSS aufgerufen, um anzufordern, dass ein Netzwerk-Mini-Redirector Sicherheitsbeschreibungsinformationen für ein Dateisystemobjekt abfragt.

RDBSS gibt einen Aufruf von MRxQuerySdInfo als Reaktion auf den Empfang einer IRP_MJ_QUERY_SECURITY-Anforderung aus.

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

Das QuerySecurity.SecurityInformation-Element ist auf IrpSp-Parameters.QuerySecurity.SecurityInformation> festgelegt.

Das Info.Buffer-Element ist auf benutzerpuffer aus E/A-Anforderungspaket festgelegt. Dieser Puffer wurde bei Bedarf bereits von RDBSS gesperrt.

Der Info.LengthRemaining-Member ist auf IrpSp-Parameters.QuerySecurity.Length> festgelegt.

Bei Erfolg sollte der Netzwerkmini-Redirector das InformationToReturn-Element der RX_CONTEXT-Struktur auf die Länge der zurückgegebenen Sicherheitsinformationen festlegen. Wenn der Aufruf von MRxQuerySdInfo erfolgreich war, legt RDBSS den IoStatus.Information-Member des IRP auf den InformationToReturn-Member von RX_CONTEXT fest.

Die MRxQueryVolumeInfo-Routine wird von RDBSS aufgerufen, um anzufordern, dass ein Netzwerk-Mini-Redirector Volumeinformationen abfragt.

RDBSS ruft MRxQueryVolumeInfo in einem der folgenden Fälle auf:

Bevor MRxQueryVolumeInfo im Fall einer IRP_MJ_QUERY_VOLUME_INFORMATION-Anforderung aufgerufen wird, ändert RDBSS die folgenden Member in der RX_CONTEXT Struktur, auf die der RxContext-Parameter verweist:

Das Info.FsInformationClass-Element ist auf IrpSp-Parameters.QueryVolume.FsInformationClass> festgelegt.

Der Info.Buffer-Member ist auf Irp-AssociatedIrp.SystemBuffer> festgelegt.

Der Info.LengthRemaining-Member ist auf IrpSp-Parameters.QueryVolume.Length> festgelegt.

Wenn für eine IRP_MJ_QUERY_VOLUME_INFORMATION-Anforderung das PostRequest-Element der RX_CONTEXT-Struktur bei Rückgabe von MRxQueryVolumeInfoTRUE ist, ruft RDBSS RxFsdPostRequest auf, um die Anforderung zu posten. In diesem Fall übergibt die IRP_MJ_QUERY_VOLUME_INFORMATION-Anforderung die RX_CONTEXT-Struktur, um RX_CONTEXT an eine Workerwarteschlange zur Verarbeitung durch den Dateisystemprozess (File System Process, FSP) in die Warteschlange zu stellen.

Wenn der PostRequest-Member der RX_CONTEXT-Struktur bei der Rückgabe von MRxQueryVolumeInfoFALSE ist, muss der Netzwerkmini-Redirector den Info.LengthRemaining-Member der RX_CONTEXT-Struktur auf die Länge der zurückgegebenen Volumeinformationen festlegen. RDBSS legt den IoStatus.Information-Member des IRP auf IrpSp-Parameters.QueryVolume.Length> abzüglich des Info.LengthRemaining-Elements der RX_CONTEXT-Struktur fest.

Wenn der Aufruf von MRxQueryVolumeInfo erfolgreich ist, sollte der Netzwerkminiumor den Info.LengthRemaining-Member der RX_CONTEXT-Struktur auf den Info.Length-Member abzüglich der Länge der zurückgegebenen Volumeinformationen festlegen. Wenn der Aufruf von MRxQueryVolumeInfo erfolgreich war, legt RDBSS den IoStatus.Information-Member des IRP auf IrpSp-Parameters.QueryVolume.Length> abzüglich des Info.LengthRemaining-Elements der RX_CONTEXT-Struktur fest.

Bei einer IRP_MJ_QUERY_VOLUME_INFORMATION Anforderung, bei der das Info.FsInformationClass-Element auf FileFsDeviceInformation festgelegt ist, gibt der Netzwerkminiumleitungsor die folgenden Informationen in der RX_CONTEXT-Struktur zurück, auf die der RxContext-Parameter verweist:

Das Info.Buffer-Element enthält eine FILE_FS_DEVICE_INFORMATION-Struktur.

Der Info.Buffer.Characteristics-Member ist auf die Merkmale des Volumes festgelegt, das FILE_REMOTE_DEVICE als eine der Optionen enthalten muss.

Das Info.Buffer.DeviceType-Element wird auf das DeviceType-Element der zugeordneten NET_ROOT-Struktur festgelegt. Wenn das Type-Element des zugeordneten NET_ROOT NET_ROOT_PIPE ist, wird das Info.Buffer.DeviceType-Element auf FILE_DEVICE_NAMED_PIPE festgelegt.

Bei einer IRP_MJ_QUERY_VOLUME_INFORMATION Anforderung, bei der das Info.FsInformationClass-Element auf FileFsVolumeInformation festgelegt ist, gibt der Netzwerkminiumor die folgenden Informationen in der RX_CONTEXT-Struktur zurück, auf die der RxContext-Parameter verweist:

Das Info.Buffer-Element enthält eine FILE_FS_VOLUME_INFORMATION-Struktur.

Das Info.Buffer-Element wird auf das VolumeInfo-Element der zugeordneten NET_ROOT-Struktur festgelegt.

Das Info.LengthRemaining-Element wird auf das VolumeInfoLength-Element der zugeordneten NET_ROOT-Struktur festgelegt.

Ein MRxQueryVolumeInfo-Aufruf von RDBSS für IRP_MJ_FILE_SYSTEM_CONTROL ist eine Anforderung für die Linknachverfolgungsinformationen. Bevor MRxQueryVolumeInfo für IRP_MJ_FILE_SYSTEM_CONTROL aufgerufen wird, ändert RDBSS die folgenden Member in der RX_CONTEXT Struktur, auf die der RxContext-Parameter verweist:

Das Info.FsInformationClass-Element ist auf FileFsObjectIdInformation festgelegt.

Das Info.Buffer-Element wird auf eine FILE_FS_OBJECTID_INFORMATION-Struktur festgelegt.

Das Info.LengthRemaining-Element ist auf sizeof(FILE_FS_OBJECTID_INFORMATION) festgelegt.

In diesem Fall einer IRP_MJ_FILE_SYSTEM_CONTROL-Anforderung verweist der AssociatedIrp.SystemBuffer-Member des IRP auf eine LINK_TRACKING_INFORMATION-Struktur.

Wenn eine Anforderung als IRP_MJ_FILE_SYSTEM_CONTROL an MRxQueryVolumeInfo mit dem Rückgabewert STATUS_SUCCESS oder STATUS_BUFFER_OVERFLOW initiiert wird, kopiert RDBSS das ObjectId-Element der FILE_FS_OBJECTID_INFORMATION-Struktur, die im Info.Buffer-Element der RX_CONTEXT-Struktur übergeben wird, in den NetRoot-DiskParameters.VolumeId-Member der FCB-Struktur> und in das AssociatedIrp.SystemBuffer.VolumeId-Element des IRP. Wenn der Aufruf von MRxQueryVolumeInfo erfolgreich war, legt RDBSS den Type-Member der LINK_TRACKING_INFORMATION-Struktur fest. Wenn für das NetRoot-Flags-Element der FCB-Struktur> das NETROOT_FLAG_DFS_AWARE_NETROOT Bit festgelegt ist, wird das Type-Element von RDBSS auf DfsLinkTrackingInformation festgelegt. Wenn für das NetRoot-Flags-Member der FCB-Struktur> nicht das NETROOT_FLAG_DFS_AWARE_NETROOT Bit festgelegt ist, wird das Type-Element von RDBSS auf NtfsLinkTrackingInformation festgelegt. Bei Erfolg legt RDBSS den IoStatus.Information-Member des IRP auf die Größe einer LINK_TRACKING_INFORMATION-Struktur fest.

Die MRxSetEaInfo-Routine wird von RDBSS aufgerufen, um anzufordern, dass ein Netzwerk-Mini-Redirector erweiterte Attributinformationen für ein Dateisystemobjekt festgelegt.

RDBSS ruft MRxSetEaInfo als Reaktion auf den Empfang einer IRP_MJ_SET_EA-Anforderung auf.

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

Das Info.Buffer-Element ist auf den Benutzerpuffer aus E/A-Anforderungspaket festgelegt. Dieser Puffer wurde bei Bedarf bereits von RDBSS gesperrt.

Der Info.LengthRemaining-Member ist auf IrpSp-Parameters.QueryEa.Length> festgelegt.

Die MRxSetFileInfo-Routine wird von RDBSS aufgerufen, um anzufordern, dass ein Netzwerk-Mini-Redirector Dateiinformationen für ein Dateisystemobjekt festgelegt.

RDBSS ruft MRxSetFileInfo als Reaktion auf den Empfang einer IRP_MJ_SET_INFORMATION-Anforderung auf.

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

Das Info.FileInformationClass-Element ist auf IrpSp-Parameters.SetFile.FileInformationClass> festgelegt, der angegebene FILE_INFORMATION_CLASS Wert.

Der Info.Buffer-Member ist auf Irp-AssociatedIrp.SystemBuffer> festgelegt.

Das Info.Length-Element ist auf IrpSp-Parameters.SetFile.Length> festgelegt.

Die MRxSetFileInfoAtCleanup-Routine wird von RDBSS aufgerufen, um anzufordern, dass ein Netzwerk-Mini-Redirector Dateiinformationen für ein Dateisystemobjekt bei der Bereinigung festgelegt.

RDBSS gibt während der Bereinigung einen Aufruf von MRxSetFileInfoAtCleanup aus, wenn das letzte Handle für ein Dateiobjekt geschlossen wird. Dies unterscheidet sich von dem Schließen-Vorgang, der aufgerufen wird, wenn der letzte Verweis auf ein Dateiobjekt gelöscht wird.

MRxSetFileInfoAtCleanup wird von RDBSS aufgerufen, wenn sich die Zeitstempel für eine Datei oder die Größe einer Datei geändert haben. Die Aufrufe von MRxSetFileInfoAtCleanup von RDBSS werden für jede dieser Änderungen separat ausgeführt. Wenn sich sowohl die Dateigröße als auch die Zeitstempel geändert haben, führt RDBSS zwei Aufrufe von MRxSetFileInfoAtCleanup durch.

Vor dem Aufrufen von MRxSetFileInfoAtCleanup ändert RDBSS die folgenden Member in der RX_CONTEXT-Struktur, auf die der RxContext-Parameter verweist, wenn sich die Zeitstempel für eine Datei geändert haben:

Das Info.FileInformationClass-Element ist auf den FILE_INFORMATION_CLASS Wert FileBasicInformation festgelegt.

Das Info.Buffer-Element wird auf eine FILE_BASIC_INFORMATION-Struktur festgelegt, die dem Stapel zugeordnet ist.

Der Info.Length-Member wird auf die Größe einer FILE_BASIC_INFORMATION-Struktur festgelegt.

Vor dem Aufrufen von MRxSetFileInfoAtCleanup ändert RDBSS die folgenden Member in der RX_CONTEXT Struktur, auf die der RxContext-Parameter verweist, wenn sich die Größe einer Datei geändert hat:

Das Info.FileInformationClass-Element ist auf den FILE_INFORMATION_CLASS Wert FileEndOfFileInformation festgelegt.

Das Info.Buffer-Element wird auf eine FILE_END_OF_FILE_INFORMATION-Struktur festgelegt, die dem Stapel zugeordnet ist.

Der Info.Length-Member ist auf sizeof(FILE_END_OF_FILE_INFORMATION) festgelegt.

RDBSS ignoriert den Rückgabewert von MRxSetFileInfoAtCleanup.

Ein Netzwerk-Mini-Redirector kann in dieser Routine nichts tun und STATUS_SUCCESS zurückgeben. Alle Änderungen an der Dateigröße oder zeitstempel werden während des Bereinigungsvorgangs behandelt.

Die MRxSetQuotaInfo-Routine wird von RDBSS aufgerufen, um anzufordern, dass ein Netzwerk-Mini-Redirector Kontingentinformationen für ein Dateisystemobjekt festgelegt.

RDBSS ruft MRxSetQuotaInfo als Reaktion auf den Empfang einer IRP_MJ_SET_QUOTA-Anforderung auf.

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

Das Info.Buffer-Element ist auf den Benutzerpuffer aus E/A-Anforderungspaket festgelegt. Dieser Puffer wurde bei Bedarf bereits von RDBSS gesperrt.

Das Info.LengthRemaining-Element ist auf IrpSp-Parameters.SetQuota.Length> festgelegt.

Die MRxSetSdInfo-Routine wird von RDBSS aufgerufen, um anzufordern, dass ein Netzwerk-Mini-Redirector Sicherheitsbeschreibungsinformationen für ein Dateisystemobjekt festgelegt.

RDBSS ruft MRxSetSdInfo als Reaktion auf den Empfang einer IRP_MJ_SET_SECURITY-Anforderung auf.

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

Das SetSecurity.SecurityInformation-Element ist auf IrpSp-Parameters.SetSecurity.SecurityInformation> festgelegt.

Das SetSecurity.SecurityDescriptor-Element ist auf IrpSp-Parameters.SetSecurity.SecurityDescriptor> festgelegt.

Die MRxSetVolumeInfo-Routine wird von RDBSS aufgerufen, um anzufordern, dass ein Netzwerk-Mini-Redirector Volumeinformationen festgelegt.

RDBSS ruft MRxSetVolumeInfo als Reaktion auf den Empfang einer IRP_MJ_SET_VOLUME_INFORMATION-Anforderung auf.

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

Das Info.FsInformationClass-Element ist auf IrpSp-Parameters.SetVolume.FsInformationClass> festgelegt.

Der Info.Buffer-Member ist auf Irp-AssociatedIrp.SystemBuffer> festgelegt.

Der Info.LengthRemaining-Member ist auf IrpSp-Parameters.SetVolume.Length> festgelegt.

Die MRxShouldTryToCollapseThisOpen-Routine wird von RDBSS aufgerufen, um anzufordern, dass ein Netzwerk-Mini-Redirector angibt, ob RDBSS versuchen soll, eine offene Anforderung an ein vorhandenes Dateisystemobjekt zu reduzieren.

MRxShouldTryToCollapseThisOpen wird aufgerufen, um zu bestimmen, ob eine offene Anforderung nicht reduziert werden soll.

Vor dem Aufrufen von MRxShouldTryToCollapseThisOpen ändert RDBSS den folgenden Member in der RX_CONTEXT Struktur, auf die der RxContext-Parameter verweist:

Das pRelevantSrvOpen-Element wird auf die SRV_OPEN festgelegt.

Der Aufruf von MRxShouldTryToCollapseThisOpen kann eine Änderungsbenachrichtigungsanforderung für ein Verzeichnis sein. Aus diesem Grund lässt der Netzwerk-Mini-Redirector das Reduzieren von offenen Anforderungen möglicherweise nicht zu, damit die Änderungsbenachrichtigung ordnungsgemäß funktioniert.

RDBSS lässt das Reduzieren nicht zu, wenn für das Create.NtCreateParameters.CreateOptions-Element der RX_CONTEXT-Struktur die Option FILE_OPEN_FOR_BACKUP_INTENT oder die option FILE_DELETE_ON_CLOSE festgelegt ist.

Die MRxTruncate-Routine wird von RDBSS aufgerufen, um anzufordern, dass ein Netzwerk-Mini-Redirector den Inhalt eines Dateisystemobjekts abschneidet.

MRxTruncate wird als Teil von Bereinigungsvorgängen aufgerufen, wenn beide der folgenden Bedingungen zutreffen:

  • Das Dateiobjekt entspricht einer Datenträgerdatei oder einem Verzeichnis.

  • Dies ist der letzte Bereinigungsaufruf, und das Dateiobjekt wurde zum Abschneiden markiert.

Das Dateiobjekt wird zum Abschneiden markiert, wenn für das fcbstate-Element der FCB-Struktur das FCB_STATE_TRUNCATE_ON_CLOSE Bit festgelegt ist. RDBSS wird die Cachezuordnung zu einem späteren Zeitpunkt initialisieren.

Auf einen Aufruf von MRxTruncate folgt ein Aufruf von MRxCleanupFobx im Rahmen des Bereinigungsvorgangs.

RDBSS ignoriert den Rückgabewert von MRxTruncate.

Die MRxZeroExtend-Routine wird von RDBSS aufgerufen, um anzufordern, dass ein Netzwerk-Mini-Redirector den Inhalt eines Dateisystemobjekts abschneidet.

MRxZeroExtend wird als Teil von Bereinigungsvorgängen aufgerufen, wenn das Dateiobjekt nicht zum Löschen markiert wurde und das Dateiobjekt keine Auslagerungsdatei ist. MRxZeroExtend wird aufgerufen, um sicherzustellen, dass der Teil zwischen der gültigen Datenlänge und der Dateigröße null erweitert ist. Nach dem Aufrufen von MRxZeroExtend legt RDBSS das Header.ValidDataLength.QuadPart-Element der Struktur einer FCB-Struktur fest, die dem Header.FileSize.QuadPart-Member der FCB-Struktur entspricht.

Auf einen Aufruf von MRxZeroExtend folgt ein Aufruf von MRxCleanupFobx im Rahmen des Bereinigungsvorgangs.

RDBSS ignoriert den Rückgabewert von MRxZeroExtend.

Die MRxCleanupFobx-Routine wird von RDBSS aufgerufen, um den Netzwerk-Mini-Redirector anzufordern, eine Dateisystemobjekterweiterung zu schließen. RDBSS gibt diesen Aufruf als Reaktion auf den Empfang einer IRP_MJ_CLEANUP-Anforderung für ein Dateiobjekt aus.

MRxCleanupFobx wird von RDBSS im Rahmen von Bereinigungs- und Schließenvorgängen für ein Dateiobjekt aufgerufen.

MRxCleanupFobx kann keinen Wert von STATUS_RETRY zurückgeben, der angibt, dass der Aufruf wiederholt werden soll. Wenn eine Wiederholungsschleife erforderlich ist, muss sie intern in der MRxCleanupFobx-Routine vom Netzwerk-Mini-Redirector verarbeitet werden.

Anforderungen

Anforderung Wert
Zielplattform Desktop
Kopfzeile mrx.h (mrx.h einschließen)

Weitere Informationen

MRxAreFilesAliased

MRxCleanupFobx

MRxCollapseOpen

MRxErstellen

MRxDeallocateForFobx

MRxDeallocateForFobx

MRxExtendForCache

MRxExtendForNonCache

MRxFlush

MRxForceClosed

MRxIsLockRealizable

MRxShouldTryToCollapseThisOpen

MRxTruncate

MRxZeroExtend

RxFinalizeNetFCB