次の方法で共有


RxPrepareToReparseSymbolicLink 関数 (rxprocs.h)

RxPrepareToReparseSymbolicLink は、再解析を容易にするためにファイル オブジェクト名を設定します。 このルーチンは、シンボリック リンクを走査するためにネットワーク ミニ リダイレクターによって使用されます。

構文

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

パラメーター

RxContext

RX_CONTEXT構造体へのポインター。

SymbolicLinkEmbeddedInOldPath

シンボリック リンクが検出されたことを示すブール値。 値が TRUE の場合、古いパスのトラバーサルの一部としてシンボリック リンクが検出されました。

NewPath

走査する新しいパス名を含む Unicode 文字列へのポインター。

NewPathIsAbsolute

新しいパスが絶対パスかどうかを示すブール値。 この値が FALSE の場合は、\Device\Mup を NewPath の前に追加する必要があります。 この値が TRUE の場合、 NewPath パラメーターは再解析の完全パスです。 この場合、 NewPath を含むバッファーは、新しいバッファーを割り当てるのではなく、直接使用されます。

ReparseRequired

再解析が必要かどうかを示すブール値へのポインター。 この値が TRUE の場合は、再解析が必要です。

戻り値

RxPrepareToReparseSymbolicLink は、成功した場合はSTATUS_SUCCESSを返し、失敗した場合は次のいずれかのエラー値を返します。

リターン コード 説明
STATUS_ACCESS_DENIED
削除要求が失敗しました。
STATUS_INSUFFICIENT_RESOURCES
使用可能なリソースが不足していました。
STATUS_INVALID_PARAMETER
無効なパラメーターがルーチンに渡されました。 RxContext MajorFunction メンバーがIRP_MJ_CREATEされていない場合、このエラーが返されます。

注釈

RxPrepareToReparseSymbolicLink ルーチンは、シンボリック リンクをサポートし、再解析ポイントを使用してシンボリック リンクを実装するネットワーク ミニ リダイレクターによってのみ使用されます。 RxPrepareToReparseSymbolicLink ルーチンは、通常、MrxCreate コールバック ルーチンからネットワーク ミニ リダイレクターによって呼び出されます。

このルーチン に渡される SymbolicLinkEmbeddedInOldPath パラメーターは非常に重要です。 正しいセマンティクスを保持するには、慎重に使用する必要があります。 たとえば、C がシンボリック リンクである古いパス \A\B\C\D を考えてみましょう。 この場合、シンボリック リンクはパスに埋め込まれており、 SymbolicLinkEmbeddedInOldPathTRUE に設定する必要があります。 これに対し、これは、D がシンボリック リンクである場合とは大きく異なります。 前者の場合、再解析は中間工程を構成する。 2 番目の例では、再解析が名前解決の最後のステップを構成し、 SymbolicLinkEmbeddedInOldPathFALSE に設定する必要があります。

DELETE アクセスが指定されている場合、シンボリック・リンクが組み込まれていないすべてのケースについて、オープン操作または作成操作は拒否されます。 DELETE アクセスが指定された唯一のアクセスである場合、開いている試行は再解析なしで成功する必要があります。 これは UNIX シンボリック リンク セマンティクスに準拠しています。

このルーチンの一部として、 RxContext も適切にタグ付けされます。 これにより、戻り値をこのルーチンの呼び出しとクロスチェックできるようになります。 RxPrepareToReparseSymbolicLink が呼び出されると、ネットワーク ミニ リダイレクターはSTATUS_REPARSEを返す必要があります。

ReparseRequired パラメーターの値は、このルーチンからSTATUS_SUCCESSが返された場合にのみ、有意性を前提としています。 ReparseRequiredFALSE の場合、これは再解析の試行が不要であり、リンクのターゲットとは対照的にシンボリック リンク ファイル自体を操作する必要があることを意味します。 ReparseRequiredTRUE の場合、これは再解析の試行が正常にセットアップされたことを意味します。 このような場合、ネットワーク ミニ リダイレクターは、関連付けられている MRxCreate 呼び出しのSTATUS_REPARSEを返す必要があります。 RDBSS は、この条件のチェックを開始します。

要件

要件
対象プラットフォーム デスクトップ
Header rxprocs.h (Rxprocs.h を含む)
IRQL <= APC_LEVEL

こちらもご覧ください

MRxCreate