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 |
---|---|
|
刪除的要求失敗。 |
|
資源不足。 |
|
無效的參數已傳遞至例程。 如果未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 參數的值才會假設重要性。 如果 ReparseRequired 為 FALSE,這表示不需要重新分析嘗試,而且應該操作符號連結檔案本身,而不是鏈接的目標。 如果 ReparseRequired 為 TRUE,這表示已成功設定重新分析嘗試。 在這種情況下,網路迷你重新導向器必須針對相關聯的 MRxCreate 呼叫傳回STATUS_REPARSE。 RDBSS 會起始此條件的檢查。
規格需求
需求 | 值 |
---|---|
目標平台 | 桌面 |
標頭 | rxprocs.h (包含 Rxprocs.h) |
IRQL | <= APC_LEVEL |