Partager via


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_READ]

MRxLowIOSubmit[LOWIO_OP_SHAREDLOCK]

MRxLowIOSubmit[LOWIO_OP_UNLOCK]

MRxLowIOSubmit[LOWIO_OP_UNLOCK_MULTIPLE]

MRxLowIOSubmit[LOWIO_OP_WRITE]

RxReleaseFcbResourceForThreadInMRx