Função RxPrepareToReparseSymbolicLink (rxprocs.h)

RxPrepareToReparseSymbolicLink configura o nome do objeto de arquivo para facilitar uma nova análise. Essa rotina é usada pelos minidiretórios de rede para percorrer links simbólicos.

Sintaxe

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

Parâmetros

RxContext

Um ponteiro para a estrutura RX_CONTEXT.

SymbolicLinkEmbeddedInOldPath

Um valor booliano que indica que um link simbólico foi encontrado. Se o valor for TRUE, um link simbólico foi encontrado como parte da passagem do caminho antigo.

NewPath

Um ponteiro para uma cadeia de caracteres Unicode que contém o novo nome de caminho a ser percorrido.

NewPathIsAbsolute

Um valor booliano que indica se o novo caminho é absoluto. Se esse valor for FALSE, \Device\Mup deverá ser anexado ao NewPath. Se esse valor for TRUE, o parâmetro NewPath será o caminho completo a ser reparso. Nesse caso, o buffer que contém NewPath é usado diretamente, em vez de alocar um novo buffer.

ReparseRequired

Um ponteiro para um valor booliano que indica se uma nova análise é necessária. Se esse valor for TRUE, uma nova análise será necessária.

Retornar valor

RxPrepareToReparseSymbolicLink retorna STATUS_SUCCESS com êxito ou um dos seguintes valores de erro em caso de falha:

Código de retorno Descrição
STATUS_ACCESS_DENIED
Falha na solicitação de exclusão.
STATUS_INSUFFICIENT_RESOURCES
Não havia recursos suficientes disponíveis.
STATUS_INVALID_PARAMETER
Um parâmetro inválido foi passado para a rotina. Esse erro será retornado se o membro MajorFunction de RxContext não for IRP_MJ_CREATE.

Comentários

A rotina RxPrepareToReparseSymbolicLink só seria usada por um minidiretório de rede que dá suporte a links simbólicos e usa pontos de nova análise para implementar links simbólicos. A rotina RxPrepareToReparseSymbolicLink normalmente seria chamada por um minidiretório de rede de sua rotina de retorno de chamada MrxCreate .

O parâmetro SymbolicLinkEmbeddedInOldPath passado para essa rotina é muito importante. Para preservar a semântica correta, ela deve ser usada com cuidado. Por exemplo, considere o caminho antigo \A\B\C\D em que C é um link simbólico. Nesse caso, o link simbólico é inserido no caminho e SymbolicLinkEmbeddedInOldPath deve ser definido como TRUE. Por outro lado, isso é muito diferente do caso em que D é um link simbólico. No primeiro caso, a nova análise constitui uma etapa intermediária. No segundo exemplo, a nova análise constitui a etapa final da resolução de nomes e SymbolicLinkEmbeddedInOldPath deve ser definida como FALSE.

Se o acesso DELETE for especificado, a operação de abertura ou criação será negada para todos os casos em que o link simbólico não está inserido. É possível que, se o acesso DELETE fosse o único especificado, a tentativa aberta deverá ter êxito sem nova análise. Isso está em conformidade com a semântica de link simbólico UNIX.

Como parte dessa rotina, RxContext também é marcado adequadamente. Isso garante que o valor retornado possa ser verificado com a invocação dessa rotina. Depois que RxPrepareToReparseSymbolicLink for invocado, o minidiretório de rede precisará retornar STATUS_REPARSE.

O valor do parâmetro ReparseRequired pressupõe significância somente se STATUS_SUCCESS for retornado dessa rotina. Se ReparseRequired for FALSE, isso implica que nenhuma tentativa de nova análise é necessária e o próprio arquivo de link simbólico deve ser manipulado em vez do destino do link. Se ReparseRequired for TRUE, isso implicará que uma tentativa de nova análise foi configurada com êxito. Nesses casos, é imperativo que o minidiretório de rede retorne STATUS_REPARSE para a chamada MRxCreate associada. O RDBSS iniciará uma marcar para essa condição.

Requisitos

Requisito Valor
Plataforma de Destino Área de Trabalho
Cabeçalho rxprocs.h (include Rxprocs.h)
IRQL <= APC_LEVEL

Confira também

MRxCreate