Routine MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY]
La routine MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY] est appelée par RDBSS pour émettre une demande au mini-redirecteur réseau pour une opération de notification de changement d’annuaire.
Syntaxe
PMRX_CALLDOWN MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY];
NTSTATUS MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY](
_Inout_ PRX_CONTEXT RxContext
)
{ ... }
Paramètres
RxContext [in, out]
Pointeur vers la structure RX_CONTEXT. Ce paramètre contient l’IRP qui demande l’opération.
Valeur retournée
MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY] retourne STATUS_SUCCESS sur la réussite ou une valeur NTSTATUS appropriée, par exemple :
Code de retour | Description |
---|---|
STATUS_FILE_CLOSED | La structure FCB a été acquise, mais la structure SRV_OPEN associée a été fermée. |
STATUS_INSUFFICIENT_RESOURCES | Les ressources étaient insuffisantes pour effectuer la demande. |
STATUS_INVALID_DEVICE_REQUEST | Une demande d’appareil non valide a été spécifiée. |
STATUS_INVALID_PARAMETER | Un paramètre non valide a été spécifié dans RxContext. |
STATUS_NOT_IMPLEMENTED | Cette routine n’est pas implémentée. |
STATUS_NOT_SUPPORTED | La requête spécifiée n’est pas prise en charge par le mini-redirecteur réseau. |
Remarques
RDBSS appelle MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY] en réponse à la réception d’une demande de IRP_MJ_DIRECTORY_CONTROL .
Avant d’appeler MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY], RDBSS modifie les membres suivants dans la structure RX_CONTEXT pointée vers le paramètre RxContext :
Le membre LowIoContext.Operation est défini sur LOWIO_OP_NOTIFY_CHANGE_DIRECTORY.
Le membre LowIoContext.ResourceThreadId est défini sur le thread du processus qui a lancé l’opération dans RDBSS.
Le membre LowIoContext.ParamsFor.NotifyChangeDirectory.WatchTree a la valeur TRUE si les indicateurs IrpSp-Flags> ont le SL_WATCH_TREE bit défini.
Le membre LowIoContext.ParamsFor.NotifyChangeDirectory.CompletionFilter a la valeur IrpSp-Parameters.NotifyDirectory.CompletionFilter>.
Le membre LowIoContext.ParamsFor.NotifyChangeDirectory.NotificationBufferLength est défini sur la valeur IrpSp-Parameters.NotifyDirectory.Length>.
Le membre LowIoContext.ParamsFor.NotifyChangeDirectory.pNotificationBuffer est défini sur la valeur retournée en appelant MmGetSystemAddressForMdlSafe en passant par Irp-MdlAddress> et NormalPagePriority. La mémoire tampon utilisateur est également sondée et verrouillée pour l’accès en écriture.
Une opération de notification de changement d’annuaire est normalement implémentée par un mini-redirecteur réseau en tant qu’opération asynchrone, car elle peut prendre beaucoup de temps. L’opération consiste généralement à envoyer une demande réseau au serveur distant demandant une notification de modification. La réponse est obtenue lorsque la modification souhaitée est affectée sur le serveur. Il s’agit d’un exemple d’opération pour laquelle le mini-redirecteur réseau peut avoir besoin d’inscrire une valeur de contexte unique pour gérer les annulations lancées localement.
Pendant le traitement de la routine MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY], le membre LowIoContext.ResourceThreadId de RX_CONTEXT est garanti pour indiquer le thread du processus qui a lancé l’opération dans RDBSS. Le membre LowIoContext.ResourceThreadId peut être utilisé pour libérer la structure FCB pour le compte d’un autre thread. Lorsqu’une routine asynchrone se termine, la structure FCB acquise à partir du thread initial peut être libérée. La structure FCB peut être libérée en appelant RxReleaseFcbResourceForThreadInMRx.
Configuration requise
Plateforme cible |
Desktop (Expérience utilisateur) |
En-tête |
Mrx.h (inclure Mrx.h) |
Voir aussi
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]