MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY] Routine
Die MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY] -Routine wird von RDBSS aufgerufen, um eine Anforderung an den Netzwerkminiumleitungsor für einen Verzeichnisänderungsbenachrichtigungsvorgang ausstellen zu können.
Syntax
PMRX_CALLDOWN MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY];
NTSTATUS MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY](
_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_NOTIFY_CHANGE_DIRECTORY] gibt STATUS_SUCCESS nach Erfolg oder einen entsprechenden 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 waren nicht genügend Ressourcen vorhanden, 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 wird nicht implementiert. |
STATUS_NOT_SUPPORTED | Die angegebene Anforderung wird vom Netzwerkminiumleitungsor nicht unterstützt. |
Hinweise
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 ist auf den Thread des Prozesses festgelegt, der den Vorgang in RDBSS initiiert hat.
Das LowIoContext.ParamsFor.NotifyChangeDirectory.WatchTree-Member wird auf TRUE festgelegt, wenn für IrpSp-Flags> das SL_WATCH_TREE Bit festgelegt ist.
Der LowIoContext.ParamsFor.NotifyChangeDirectory.CompletionFilter-Member ist auf den Wert von IrpSp-Parameters.NotifyDirectory.CompletionFilter> festgelegt.
Der LowIoContext.ParamsFor.NotifyChangeDirectory.NotificationBufferLength-Member ist 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, das in Irp-MdlAddress> und NormalPagePriority übergeben wird. Der Benutzerpuffer wird ebenfalls auf Schreibzugriff untersucht und gesperrt.
Ein Verzeichnisänderungsbenachrichtigungsvorgang wird normalerweise von einem Netzwerk-Mini-Redirector 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 Änderungsbenachrichtigungen 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.
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_SHAREDLOCK]
MRxLowIOSubmit[LOWIO_OP_UNLOCK]
MRxLowIOSubmit[LOWIO_OP_UNLOCK_MULTIPLE]