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を返し、失敗した場合は次のいずれかのエラー値を返します。
リターン コード | 説明 |
---|---|
|
削除要求が失敗しました。 |
|
使用可能なリソースが不足していました。 |
|
無効なパラメーターがルーチンに渡されました。 RxContext の MajorFunction メンバーがIRP_MJ_CREATEされていない場合、このエラーが返されます。 |
注釈
RxPrepareToReparseSymbolicLink ルーチンは、シンボリック リンクをサポートし、再解析ポイントを使用してシンボリック リンクを実装するネットワーク ミニ リダイレクターによってのみ使用されます。 RxPrepareToReparseSymbolicLink ルーチンは、通常、MrxCreate コールバック ルーチンからネットワーク ミニ リダイレクターによって呼び出されます。
このルーチン に渡される SymbolicLinkEmbeddedInOldPath パラメーターは非常に重要です。 正しいセマンティクスを保持するには、慎重に使用する必要があります。 たとえば、C がシンボリック リンクである古いパス \A\B\C\D を考えてみましょう。 この場合、シンボリック リンクはパスに埋め込まれており、 SymbolicLinkEmbeddedInOldPath は TRUE に設定する必要があります。 これに対し、これは、D がシンボリック リンクである場合とは大きく異なります。 前者の場合、再解析は中間工程を構成する。 2 番目の例では、再解析が名前解決の最後のステップを構成し、 SymbolicLinkEmbeddedInOldPath を FALSE に設定する必要があります。
DELETE アクセスが指定されている場合、シンボリック・リンクが組み込まれていないすべてのケースについて、オープン操作または作成操作は拒否されます。 DELETE アクセスが指定された唯一のアクセスである場合、開いている試行は再解析なしで成功する必要があります。 これは UNIX シンボリック リンク セマンティクスに準拠しています。
このルーチンの一部として、 RxContext も適切にタグ付けされます。 これにより、戻り値をこのルーチンの呼び出しとクロスチェックできるようになります。 RxPrepareToReparseSymbolicLink が呼び出されると、ネットワーク ミニ リダイレクターはSTATUS_REPARSEを返す必要があります。
ReparseRequired パラメーターの値は、このルーチンからSTATUS_SUCCESSが返された場合にのみ、有意性を前提としています。 ReparseRequired が FALSE の場合、これは再解析の試行が不要であり、リンクのターゲットとは対照的にシンボリック リンク ファイル自体を操作する必要があることを意味します。 ReparseRequired が TRUE の場合、これは再解析の試行が正常にセットアップされたことを意味します。 このような場合、ネットワーク ミニ リダイレクターは、関連付けられている MRxCreate 呼び出しのSTATUS_REPARSEを返す必要があります。 RDBSS は、この条件のチェックを開始します。
要件
要件 | 値 |
---|---|
対象プラットフォーム | デスクトップ |
Header | rxprocs.h (Rxprocs.h を含む) |
IRQL | <= APC_LEVEL |