Поделиться через


Функция RxPrepareToReparseSymbolicLink (rxprocs.h)

RxPrepareToReparseSymbolicLink настраивает имя объекта файла для упрощения повторного анализа. Эта подпрограмма используется сетевыми мини-перенаправлениями для обхода символьных ссылок.

Синтаксис

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

Параметры

RxContext

Указатель на структуру RX_CONTEXT.

SymbolicLinkEmbeddedInOldPath

Логическое значение, указывающее, что обнаружена символьная ссылка. Если значение равно TRUE, символьная ссылка была обнаружена как часть обхода старого пути.

NewPath

Указатель на строку Юникода, содержащую новое имя пути для обхода.

NewPathIsAbsolute

Логическое значение, указывающее, является ли новый путь абсолютным. Если это значение равно FALSE, то для NewPathследует добавить \Device\Mup. Если это значение TRUE, параметр NewPath — полный путь для повторного выполнения. В этом случае буфер, содержащий NewPath, используется напрямую, а не выделение нового буфера.

ReparseRequired

Указатель на логическое значение, указывающее, требуется ли повторная аналитика. Если это значение TRUE, требуется повторная аналитика.

Возвращаемое значение

RxPrepareToReparseSymbolicLink возвращает STATUS_SUCCESS при успешном выполнении или одном из следующих значений ошибок при сбое:

Возвращаемый код Описание
STATUS_ACCESS_DENIED
Не удалось удалить запрос на удаление.
STATUS_INSUFFICIENT_RESOURCES
Недостаточно ресурсов.
STATUS_INVALID_PARAMETER
Недопустимый параметр был передан в подпрограмму. Эта ошибка будет возвращена, если MajorFunction член RxContext не IRP_MJ_CREATE.

Замечания

Подпрограмма RxPrepareToReparseSymbolicLink будет использоваться только мини-перенаправлением сети, поддерживающим символьные ссылки и использующий точки повторного анализа для реализации символьных ссылок. Обычно подпрограмма RxPrepareToReparseSymbolicLink будет вызываться мини-перенаправлением сети из его подпрограммы обратного вызова MrxCreate.

Параметр SymbolicLinkEmbedInOldPath, переданный этой подпрограмме, очень важен. Чтобы сохранить правильную семантику, ее следует тщательно использовать. Например, рассмотрим старый путь \A\B\C\D, где C будет символьной ссылкой. В этом случае символьная ссылка внедрена в путь, а СимвольнаяlinkEmbeddedInOldPath должна иметь значение TRUE. В отличие от этого, это очень отличается от случая, когда D случается символьная ссылка. В предыдущем случае репарс представляет собой промежуточный шаг. Во втором примере повторное преобразование представляет собой окончательный шаг разрешения имен и СимвольнаяlinkEmbedInOldPath должна иметь значение FALSE.

Если указан доступ DELETE, операция открытия или создания запрещена для всех случаев, в которых символьная ссылка не внедрена. Возможно, что если доступ DELETE был единственным заданным, то открытая попытка должна выполниться без повторного просмотра. Это соответствует семантике символьной связи UNIX.

В рамках этой процедуры RxContext также помечены соответствующим образом. Это гарантирует, что возвращаемое значение можно перекрестить с вызовом этой подпрограммы. После вызова RxPrepareToReparseSymbolicLink сетевой мини-перенаправление должен вернуть STATUS_REPARSE.

Значение параметра ReparseRequired предполагает значение, только если STATUS_SUCCESS возвращается из этой подпрограммы. Если ReparseRequiredfalse, это означает, что попытка повторного обработки не требуется, а сам файл символьной ссылки следует манипулировать в отличие от целевого объекта ссылки. Если ReparseRequiredTRUE, это означает, что попытка повторного выполнения была успешно настроена. В таких случаях необходимо, чтобы мини-перенаправление сети возвращал STATUS_REPARSE для связанного вызова MRxCreate. RDBSS инициирует проверку этого условия.

Требования

Требование Ценность
целевая платформа Настольный
заголовка rxprocs.h (include Rxprocs.h)
IRQL <= APC_LEVEL

См. также

MRxCreate