Routine MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY]

La routine MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY] viene chiamata da RDBSS per inviare una richiesta al mini redirector di rete per un'operazione di notifica delle modifiche della directory.

Sintassi

PMRX_CALLDOWN MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY];

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

Parametri

RxContext [in, out]
Puntatore alla struttura RX_CONTEXT. Questo parametro contiene l'IRP che richiede l'operazione.

Valore restituito

MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY] restituisce STATUS_SUCCESS in caso di esito positivo o di un valore NTSTATUS appropriato, ad esempio uno dei seguenti:

Codice restituito Descrizione
STATUS_FILE_CLOSED

La struttura FCB è stata acquisita, ma la struttura SRV_OPEN associata è stata chiusa.

STATUS_INSUFFICIENT_RESOURCES

Risorse insufficienti per completare la richiesta.

STATUS_INVALID_DEVICE_REQUEST

È stata specificata una richiesta di dispositivo non valida.

STATUS_INVALID_PARAMETER

È stato specificato un parametro non valido in RxContext.

STATUS_NOT_IMPLEMENTED

Questa routine non è implementata.

STATUS_NOT_SUPPORTED

La richiesta specificata non è supportata dal mini-redirector di rete.

Commenti

RDBSS chiama MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY] in risposta alla ricezione di una richiesta di IRP_MJ_DIRECTORY_CONTROL .

Prima di chiamare MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY], RDBSS modifica i membri seguenti nella struttura RX_CONTEXT a cui punta il parametro RxContext :

Il membro LowIoContext.Operation è impostato su LOWIO_OP_NOTIFY_CHANGE_DIRECTORY.

Il membro LowIoContext.ResourceThreadId è impostato sul thread del processo che ha avviato l'operazione in RDBSS.

Il membro LowIoContext.ParamsFor.NotifyChangeDirectory.WatchTree è impostato su TRUE se il SL_WATCH_TREE bit è impostato su IrpSp-Flags>.

Il membro LowIoContext.ParamsFor.NotifyChangeDirectory.CompletionFilter è impostato sul valore di IrpSp-Parameters.NotifyDirectory.CompletionFilter>.

Il membro LowIoContext.ParamsFor.NotifyChangeDirectory.NotificationBufferLength è impostato sul valore di IrpSp-Parameters.NotifyDirectory.Length>.

Il membro LowIoContext.ParamsFor.NotifyChangeDirectory.pNotificationBuffer viene impostato sul valore restituito chiamando MmGetSystemAddressForMdlSafe passando Irp-MdlAddress> e NormalPagePriority. Il buffer utente viene anche probed e bloccato per l'accesso in scrittura.

Un'operazione di notifica di modifica della directory viene in genere implementata da un mini redirector di rete come operazione asincrona perché può richiedere molto tempo. L'operazione consiste in genere nell'inviare una richiesta di rete al server remoto che richiede una notifica di modifica. La risposta viene ottenuta quando la modifica desiderata è interessata nel server. Questo è un esempio di operazione per cui il mini-reindirizzamento di rete potrebbe dover registrare un valore di contesto univoco per la gestione degli annullamenti avviati localmente.

Durante l'elaborazione della routine MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY] , il membro LowIoContext.ResourceThreadId di RX_CONTEXT è garantito indicare il thread del processo che ha avviato l'operazione in RDBSS. Il membro LowIoContext.ResourceThreadId può essere usato per rilasciare la struttura FCB per conto di un altro thread. Al termine di una routine asincrona, è possibile rilasciare la struttura FCB acquisita dal thread iniziale. La struttura FCB può essere rilasciata chiamando RxReleaseFcbResourceForThreadInMRx.

Requisiti

Piattaforma di destinazione

Desktop

Intestazione

Mrx.h (include Mrx.h)

Vedi anche

MRxLowIOSubmit[LOWIO_OP_EXCLUSIVELOCK]

MRxLowIOSubmit[LOWIO_OP_FSCTL]

MRxLowIOSubmit[LOWIO_OP_IOCTL]

MRxLowIOSubmit[LOWIO_OP_READ]

MRxLowIOSubmit[LOWIO_OP_SHAREDLOCK]

MRxLowIOSubmit[LOWIO_OP_UNLOCK]

MRxLowIOSubmit[LOWIO_OP_UNLOCK_MULTIPLE]

MRxLowIOSubmit[LOWIO_OP_WRITE]

RxReleaseFcbResourceForThreadInMRx