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 |
---|---|
|
Falha na solicitação de exclusão. |
|
Não havia recursos suficientes disponíveis. |
|
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 |