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 |
---|---|
|
Le mode d’exécution du demandeur d’origine pour l’opération IRP envoyée à MUP n’était pas à partir du mode noyau. |
|
Une violation d’accès s’est produite lors de la tentative d’accès à l’appareil MUP. |
|
Il y a eu un mauvais alignement des données. |
|
Les ressources disponibles étaient insuffisantes pour allouer de la mémoire pour les mémoires tampons. |
|
Un paramètre non valide a été passé à MUP dans l’IRP. |
|
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) |