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,或在失敗時傳回下列其中一個錯誤值:

傳回碼 Description
STATUS_ACCESS_DENIED
刪除的要求失敗。
STATUS_INSUFFICIENT_RESOURCES
資源不足。
STATUS_INVALID_PARAMETER
無效的參數已傳遞至例程。 如果未IRP_MJ_CREATE RxContext MajorFunction 成員,就會傳回此錯誤。

備註

RxPrepareToReparseSymbolicLink 例程只能由支援符號連結的網路迷你重新導向器使用,並使用重新分析點來實作符號連結。 RxPrepareToReparseSymbolicLink 例程通常會由其 MrxCreate 回呼例程的網路迷你重新導向器呼叫。

傳遞至此例程的 SymbolicLinkEmbeddedInOldPath 參數非常重要。 若要保留正確的語意,應謹慎使用。 例如,假設 C 是符號連結的舊路徑 \A\B\C\D。 在此情況下,符號連結會內嵌在路徑中, 而 SymbolicLinkEmbeddedInOldPath 應該設定為 TRUE。 相反地,這與 D 發生符號鏈接的情況非常不同。 在先前的案例中,重新分析構成中繼步驟。 第二個範例中,重新分析構成名稱解析的最後一個步驟, 而 SymbolicLinkEmbeddedInOldPath 應設定為 FALSE

如果指定了 DELETE 存取,表示未內嵌符號連結的所有案例都會拒絕開啟或建立作業。 如果 DELETE 存取是唯一指定的存取,則開啟嘗試必須成功,而不需重新分析。 這符合 UNIX 符號連結語意。

在此例程中,也會適當地標記 RxContext 。 這可確保傳回值可以使用這個例程的調用進行交叉檢查。 叫用 RxPrepareToReparseSymbolicLink 之後,網路迷你重新導向器必須傳回STATUS_REPARSE。

只有在從這個例程傳回STATUS_SUCCESS時, ReparseRequired 參數的值才會假設重要性。 如果 ReparseRequiredFALSE,這表示不需要重新分析嘗試,而且應該操作符號連結檔案本身,而不是鏈接的目標。 如果 ReparseRequiredTRUE,這表示已成功設定重新分析嘗試。 在這種情況下,網路迷你重新導向器必須針對相關聯的 MRxCreate 呼叫傳回STATUS_REPARSE。 RDBSS 會起始此條件的檢查。

規格需求

需求
目標平台 桌面
標頭 rxprocs.h (包含 Rxprocs.h)
IRQL <= APC_LEVEL

另請參閱

MRxCreate