Partager via


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) avec le MUP (Multiple UNC Provider) 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 de l’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 lors du retour si la demande doit être publiée pour un traitement ultérieur par le processus du système de fichiers.

Valeur de retour

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

Retourner le code 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 de 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 un 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 SDRDR. Certaines des demandes peuvent être annulées alors que les demandes restantes doivent être traitées jusqu’à la fin.

Il existe un certain nombre de stratégies qui peuvent être utilisées pour fermer le SDRDR. 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 conservée jusqu’à ce que les requêtes restantes s’exécutent jusqu’à la fin.

Le service RDBSS RxStopMinirdr est généralement appelé suite à 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 d’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 transmises au mini-redirecteur réseau sont des demandes pour les paquets de demandes d’E/S suivants :

  • IRP_MJ_CLEANUP
  • IRP_MJ_CLOSE

La séquence d’arrêt pour RDBSS et le mini-redirecteur réseau doivent être terminés dans le contexte du processus de 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 un traitement ultérieur et STATUS_PENDING sera retournée. Dans ce cas, l’ID utilisateur effectif (l’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 a la valeur TRUE. Lorsque STATUS_PENDING est retourné, RxStopMinirdr sera 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 (le paramètre Controls à RxRegisterMinirdr), puis RxStopMinirdr essaiera d’essayer de désinscrire l'DeviceName du mini-redirecteur réseau en tant que fournisseur UNC avec MUP (appelle FsRtlDeregisterUncProvider pour le compte du mini-redirecteur réseau). RxStopMinirdr désinscrit également le 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 le mini-redirecteur réseau MrxStop routine de rappel si cette routine est implémentée. S’il n’y a pas de bases de données actives restantes, STATUS_SUCCESS est retournée. S’il existe des bases de données actives restantes, STATUS_REDIRECTOR_HAS_OPEN_HANDLES est retournée. Dans les deux cas, le répartiteur RDBSS pour le redirecteur est mis en panne et l’état interne du mini-redirecteur réseau dans RDBSS est défini sur RDBSS_STARTABLE.

Exigences

Exigence Valeur
plateforme cible Bureau
d’en-tête mrx.h (inclure Mrx.h)
IRQL <= APC_LEVEL

Voir aussi

FsRtlDeregisterUncProvider

IoUnregisterFileSystem

RxRegisterMinirdr

RxStartMiniRdr

RxUnregisterMinirdr

RxpUnregisterMinirdr