Fonction FsRtlRegisterUncProvider (ntifs.h)

La routine FsRtlRegisterUncProvider enregistre un redirecteur réseau en tant que fournisseur UNC (Universal Naming Convention) auprès du système multi-fournisseur UNC (MUP).

Syntaxe

NTSTATUS FsRtlRegisterUncProvider(
  [out] PHANDLE          MupHandle,
        PCUNICODE_STRING RedirectorDeviceName,
  [in]  BOOLEAN          MailslotsSupported
);

Paramètres

[out] MupHandle

Pointeur vers un emplacement dans lequel retourner un handle MUP à utiliser lors de l’appel de FsRtlRegisterUncProvider pour désinscrire le redirecteur réseau. Le handle retourné est valide uniquement si FsRtlRegisterUncProvider retourne STATUS_SUCCESS.

RedirectorDeviceName

Pointeur vers une chaîne Unicode qui contient le nom de l’appareil du redirecteur réseau.

[in] MailslotsSupported

Définissez sur TRUE si le redirecteur réseau prend en charge les mailslots. Cette option est normalement réservée au redirecteur Microsoft SMB.

Valeur retournée

FsRtlRegisterUncProvider retourne STATUS_SUCCESS sur la réussite ou une valeur NTSTATUS appropriée, par exemple :

Code de retour Description
STATUS_ACCESS_DENIED
Le mode d’exécution du demandeur d’origine pour l’opération IRP envoyée à MUP n’était pas à partir du mode noyau.
STATUS_ACCESS_VIOLATION
Une violation d’accès s’est produite lors de la tentative d’accès à l’appareil MUP.
STATUS_DATATYPE_MISALIGNMENT
Il y a eu un mauvais alignement des données.
STATUS_INSUFFICIENT_RESOURCES
Les ressources disponibles étaient insuffisantes pour allouer de la mémoire pour les mémoires tampons.
STATUS_INVALID_HANDLE
Un paramètre non valide a été passé à MUP dans l’IRP.
STATUS_INVALID_USER_BUFFER
Un paramètre non valide a été passé dans le paramètre RedirDevName ou un arrêt anormal s’est produit.

Remarques

Un redirecteur réseau doit s’inscrire auprès du MUP pour gérer les noms UNC. MUP est un composant en mode noyau chargé de canaliser tous les accès au système de fichiers distants à l’aide d’un nom UNC (Universal Naming Convention) vers un redirecteur réseau (le fournisseur UNC) capable de gérer les demandes de système de fichiers distant. MUP est impliqué lorsqu’un chemin UNC est utilisé par une application, comme illustré dans l’exemple suivant, qui peut être exécuté à partir d’une ligne de commande :

notepad \\server\public\readme.txt

MUP n’est pas impliqué lors d’une opération qui crée une lettre de lecteur mappée (la commande « NET USE », par exemple). Cette opération est gérée par le routeur multi-fournisseur (MPR) et une DLL de fournisseur WNet en mode utilisateur pour le redirecteur réseau. Toutefois, une DLL de fournisseur WNet en mode utilisateur peut communiquer directement avec un pilote de redirecteur réseau en mode noyau pendant cette opération.

Sur Windows Server 2003, Windows XP et Windows 2000, les opérations de fichiers distants effectuées sur un lecteur mappé qui ne représente pas un lecteur de système de fichiers distribué (DFS) ne passent pas par MUP. Ces opérations vont directement au fournisseur réseau qui a géré le mappage de lettres de lecteur.

Pour les redirecteurs réseau conformes au modèle Windows Vistaredirecteur, MUP est impliqué même lorsqu’un lecteur réseau mappé est utilisé. Les opérations de fichier effectuées sur le lecteur mappé passent par MUP au redirecteur réseau. Notez que dans ce cas, MUP transmet simplement l’opération au redirecteur réseau impliqué.

Les redirecteurs réseau conformes au modèle de redirecteur Windows Vista doivent utiliser FsRtlRegisterUncProviderEx, et non FsRtlRegisterUncProvider.

FsRtlRegisterUncProvider envoie un contrôle de système de fichiers privé (FSCTL) à MUP pour effectuer l’inscription.

La valeur de Registre ProviderOrder détermine l’ordre dans lequel MUP émet des demandes de résolution de préfixe à des redirecteurs réseau individuels. Cette valeur de Registre se trouve sous la clé de Registre suivante :

HKLM\CurrentControlSet\Control\NetworkProvider\Order

Les modifications apportées à la valeur de Registre ProviderOrder nécessitent un redémarrage pour prendre effet dans MUP sur Windows Server 2003, Windows XP et Windows 2000.

Un seul fournisseur réseau sur un système peut prendre en charge les mailslots. Par conséquent, le paramètre MailslotsSupported est normalement défini uniquement sur TRUE pour le redirecteur Microsoft SMB.

Un pilote appelant IoCreateDevice pour créer un objet d’appareil pour un redirecteur réseau qui s’inscrit en tant que fournisseur UNC (pilote qui appelle FsRtlRegisterUncProvider) doit passer FILE_REMOTE_DEVICE comme l’une des options du paramètre DeviceCharacteristics passé à IoCreateDevice.

Pour désinscrire un fournisseur UNC, utilisez FsRtlDeregisterUncProvider et transmettez le paramètre MupHandle .

Si un pilote s’inscrit en tant que système de fichiers de disque local (appelle IoCreateDevice avec le paramètre DeviceType défini sur FILE_DEVICE_DISK_FILE_SYSTEM plutôt que sur FILE_NETWORK_FILE_SYSTEM, par exemple), le pilote ne doit pas appeler FsRtlRegisterUncProvider pour s’inscrire en tant que fournisseur UNC auprès de MUP.

Pour plus d’informations, consultez les sections suivantes du Guide de conception :

Prise en charge du nommage UNC et de la MUP

Modifications MUP dans Microsoft Windows Vista

Configuration requise

Condition requise Valeur
Plateforme cible Universal
En-tête ntifs.h (inclure Ntifs.h)
Bibliothèque NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
Règles de conformité DDI HwStorPortProhibitedDDIs(storport),PowerIrpDDis(wdm)

Voir aussi

FsRtlDeregisterUncProvider

FsRtlRegisterUncProviderEx

IOCTL_REDIR_QUERY_PATH_EX

IoCreateDevice