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_SHAREDLOCK]
MRxLowIOSubmit[LOWIO_OP_UNLOCK]
MRxLowIOSubmit[LOWIO_OP_UNLOCK_MULTIPLE]