RxPrepareToReparseSymbolicLink, fonction (rxprocs.h)

RxPrepareToReparseSymbolicLink configure le nom de l’objet de fichier pour faciliter une analyse. Cette routine est utilisée par les mini-redirecteurs réseau pour parcourir les liens symboliques.

Syntaxe

NTSTATUS RxPrepareToReparseSymbolicLink(
  PRX_CONTEXT     RxContext,
  BOOLEAN         SymbolicLinkEmbeddedInOldPath,
  PUNICODE_STRING NewPath,
  BOOLEAN         NewPathIsAbsolute,
  PBOOLEAN        ReparseRequired
);

Paramètres

RxContext

Pointeur vers la structure RX_CONTEXT.

SymbolicLinkEmbeddedInOldPath

Valeur booléenne qui indique qu’un lien symbolique a été rencontré. Si la valeur est TRUE, un lien symbolique a été rencontré dans le cadre de la traversée de l’ancien chemin.

NewPath

Pointeur vers une chaîne Unicode qui contient le nouveau nom de chemin d’accès à parcourir.

NewPathIsAbsolute

Valeur booléenne qui indique si le nouveau chemin est absolu. Si cette valeur est FALSE, \Device\Mup doit être ajouté à NewPath. Si cette valeur est TRUE, le paramètre NewPath est le chemin d’accès complet à réécrire. Dans ce cas, la mémoire tampon qui contient NewPath est utilisée directement, au lieu d’allouer une nouvelle mémoire tampon.

ReparseRequired

Pointeur vers une valeur booléenne qui indique si une analyse est requise. Si cette valeur est TRUE, une analyse est requise.

Valeur retournée

RxPrepareToReparseSymbolicLink retourne STATUS_SUCCESS en cas de réussite ou l’une des valeurs d’erreur suivantes en cas d’échec :

Code de retour Description
STATUS_ACCESS_DENIED
Une demande de suppression a échoué.
STATUS_INSUFFICIENT_RESOURCES
Les ressources disponibles étaient insuffisantes.
STATUS_INVALID_PARAMETER
Un paramètre non valide a été passé à la routine. Cette erreur est retournée si le membre MajorFunction de RxContext n’est pas IRP_MJ_CREATE.

Remarques

La routine RxPrepareToReparseSymbolicLink ne serait utilisée que par un mini-redirecteur réseau qui prend en charge les liens symboliques et utilise des points d’analyse pour implémenter des liens symboliques. La routine RxPrepareToReparseSymbolicLink est normalement appelée par un mini-redirecteur réseau à partir de sa routine de rappel MrxCreate .

Le paramètre SymbolicLinkEmbeddedInOldPath passé à cette routine est très important. Pour conserver la sémantique correcte, elle doit être utilisée avec soin. Par exemple, considérez l’ancien chemin \A\B\C\D où C est un lien symbolique. Dans ce cas, le lien symbolique est incorporé dans le chemin et SymbolicLinkEmbeddedInOldPath doit avoir la valeur TRUE. En revanche, cela est très différent du cas où D se trouve être un lien symbolique. Dans le premier cas, l’analyse constitue une étape intermédiaire. Dans le deuxième exemple, l’analyse constitue l’étape finale de la résolution de noms et SymbolicLinkEmbeddedInOldPath doit avoir la valeur FALSE.

Si l’accès DELETE est spécifié, l’opération d’ouverture ou de création est refusée pour tous les cas où le lien symbolique n’est pas incorporé. Il est possible que si l’accès DELETE était le seul spécifié, la tentative d’ouverture doit réussir sans effectuer d’analyse. Cela est conforme à la sémantique des liens symboliques UNIX.

Dans le cadre de cette routine, RxContext est également étiqueté de manière appropriée. Cela garantit que la valeur de retour peut être vérifiée avec l’appel de cette routine. Une fois RxPrepareToReparseSymbolicLink appelé, le mini redirecteur réseau doit retourner STATUS_REPARSE.

La valeur du paramètre ReparseRequired n’est importante que si STATUS_SUCCESS est retourné à partir de cette routine. Si ReparseRequired a la valeur FALSE, cela signifie qu’aucune tentative d’analyse n’est requise et que le fichier de liaison symbolique lui-même doit être manipulé par opposition à la cible du lien. Si ReparseRequired a la valeur TRUE, cela signifie qu’une tentative d’analyse a été correctement configurée. Dans ce cas, il est impératif que le mini redirecteur réseau retourne STATUS_REPARSE pour l’appel MRxCreate associé. RDBSS lance une case activée pour cette condition.

Configuration requise

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

Voir aussi

MRxCreate