RxStopMinirdr, fonction (mrx.h)

RxStopMinirdr est appelé pour arrêter un mini-redirecteur réseau qui a déjà été démarré. Dans le cadre de RxStopMinirdr, RDBSS désinscrira également le pilote de mini-redirecteur réseau en tant que fournisseur UNC (Universal Naming Convention) auprès du multiple fournisseur UNC (MUP) si le pilote indique la prise en charge des noms UNC.

Syntaxe

NTSTATUS RxStopMinirdr(
  [in]  IN PRX_CONTEXT RxContext,
  [out] OUT PBOOLEAN   PostToFsp
);

Paramètres

[in] RxContext

Pointeur vers la structure RX_CONTEXT à utiliser pour obtenir l’objet d’appareil et déterminer s’il s’agit d’un processus de système de fichiers.

[out] PostToFsp

Pointeur vers une valeur logique définie sur TRUE au retour si la demande doit être publiée pour un traitement ultérieur par le processus du système de fichiers.

Valeur retournée

RxStopMinirdr retourne STATUS_SUCCESS si la séquence d’arrêt a réussi ou l’une des valeurs d’erreur suivantes :

Code de retour Description
STATUS_PENDING La séquence d’arrêt pour rdbsS et les mini-redirecteurs réseau doit être effectuée dans le contexte du processus du système de fichiers. Si l’appel à RxStopMinirdr provient d’un autre processus (une demande en mode utilisateur, par exemple), la demande sera publiée pour traitement ultérieur et STATUS_PENDING sera retournée. Cette erreur peut également être retournée si certains verrous RDBSS internes ne peuvent pas être acquis sans attendre.
STATUS_REDIRECTOR_HAS_OPEN_HANDLES Le mini-redirecteur réseau a des handles ouverts et ne peut pas être arrêté pour l’instant.
STATUS_REDIRECTOR_STOPPED Le mini-redirecteur réseau a déjà été arrêté.

Remarques

Lorsqu’une demande d’arrêt est émise à RDBSS, il peut y avoir des demandes en cours dans le RDBSS. Certaines des demandes peuvent être annulées tandis que les demandes restantes doivent être traitées jusqu’à l’achèvement.

Il existe un certain nombre de stratégies qui peuvent être employées pour fermer le SDR. Actuellement, l’approche la plus conservatrice est employée. L’annulation de ces opérations qui peuvent être annulées et l’opération d’arrêt est retardée jusqu’à ce que les demandes restantes soient exécutées jusqu’à l’achèvement.

Le RxStopMinirdr RDBSS est généralement appelé à la suite d’une demande FSCTL ou IOCTL d’une application ou d’un service en mode utilisateur pour arrêter le mini-redirecteur réseau, bien que cet appel puisse également être effectué à partir du mini-redirecteur réseau ou dans le cadre du traitement de l’arrêt par le système d’exploitation.

Une fois qu’un appel à RxStopMinirdr est émis, les seules opérations autorisées par RDBSS et passées au mini-redirecteur réseau sont des demandes pour les paquets de demande d’E/S suivants :

  • IRP_MJ_CLEANUP
  • IRP_MJ_CLOSE

La séquence d’arrêt pour RDBSS et le mini-redirecteur réseau doit être effectuée dans le contexte du processus du système de fichiers. Si l’appel à RxStopMinirdr provient d’un autre processus (une demande en mode utilisateur, par exemple), la demande doit être publiée pour traitement ultérieur et STATUS_PENDING sera retournée. Dans ce cas, l’ID d’utilisateur effectif (ID d’ouverture de session) de l’appelant est enregistré dans le membre FsdUid du paramètre RxContext . En outre, si certains verrous RDBSS internes ne peuvent pas être obtenus sans attendre, STATUS_PENDING est retourné et PostToFsp est défini sur TRUE. Lorsque STATUS_PENDING est retourné, RxStopMinirdr est publié pour traitement ultérieur par un processus de système de fichiers et terminé.

Si un mini-redirecteur réseau indique la prise en charge d’UNC lors de l’inscription auprès de RDBSS (paramètre Controls sur RxRegisterMinirdr), RxStopMinirdr tente d’annuler l’inscription de DeviceName du mini-redirecteur réseau en tant que fournisseur UNC avec MUP (appelle FsRtlDeregisterUncProvider pour le compte du mini-redirecteur réseau). RxStopMinirdr annule également l’inscription du système de fichiers auprès du gestionnaire d’E/S (appelle IoUnregisterFileSystem) pour le compte du mini-redirecteur réseau).

La routine RxStopMinirdr appelle ensuite la routine de rappel du mini-redirecteur réseau MrxStop si cette routine est implémentée. S’il n’y a pas de bases de données actives, STATUS_SUCCESS est retourné. S’il reste des bases de données actives, STATUS_REDIRECTOR_HAS_OPEN_HANDLES est retournée. Dans les deux cas, le répartiteur RDBSS pour le redrector est désactivé et l’état interne du mini-redirecteur réseau dans RDBSS est défini sur RDBSS_STARTABLE.

Configuration requise

Condition requise Valeur
Plateforme cible Desktop (Expérience utilisateur)
En-tête mrx.h (inclure Mrx.h)
IRQL <= APC_LEVEL

Voir aussi

FsRtlDeregisterUncProvider

IoUnregisterFileSystem

RxRegisterMinirdr

RxStartMiniRdr

RxUnregisterMinirdr

RxpUnregisterMinirdr