RtlGenerate8dot3Name 函式 (ntifs.h)
RtlGenerate8dot3Name 例程會產生指定之長檔名的簡短 (8.3) 名稱。
語法
NTSYSAPI NTSTATUS RtlGenerate8dot3Name(
[in] PCUNICODE_STRING Name,
[in] BOOLEAN AllowExtendedCharacters,
[in, out] PGENERATE_NAME_CONTEXT Context,
[in, out] PUNICODE_STRING Name8dot3
);
參數
[in] Name
Unicode 字串的指標,其中包含檔案的長名稱。 此檔名中的任何前置句點會在產生對應的簡短名稱期間略過。
[in] AllowExtendedCharacters
如果產生的簡短檔名可以包含擴充字元,請將 設定為TRUE。 如果產生的簡短檔名必須只包含目前代碼頁 ANSI 或 OEM 範圍內的字元,請設定為 FALSE,從0x20 (空间) 到 0X7F (DEL) 。
[in, out] Context
呼叫端配置的緩衝區指標,以供 RtlGenerate8dot3Name 使用。 第一次呼叫 RtlGenerate8dot3Name 以轉譯指定的長檔名之前,呼叫端會負責以零填滿緩衝區。
[in, out] Name8dot3
呼叫端配置的緩衝區指標,以接收產生的簡短檔名。 此緩衝區的大小必須至少為 24 個字節, (12 個 Unicode 字元) 。
傳回值
如果成功產生簡短名稱,此例程會傳回STATUS_SUCCESS。 如果系統無法為指定的檔案產生唯一的簡短名稱,則會傳回STATUS_FILE_SYSTEM_LIMITATION。 它會在單一指定長名稱的1百萬次重試嘗試之後傳回此錯誤。
備註
RtlGenerate8dot3Name 會傳回最多八個字元的產生簡短名稱,後面緊接著句號,最多三個字元。
您可以重複呼叫 RtlGenerate8dot3Name。 例如,如果最初產生的簡短名稱是現有檔名的重複專案,則呼叫端可以再次將相同的參數傳遞至 RtlGenerate8dot3Name 。 在此情況下, Context 上的緩衝區不應以零重新初始化。 這個緩衝區應該只針對初始呼叫進行零,以轉譯指定的長名稱。 針對相同長名稱的重複呼叫, RtlGenerate8dot3Name 會將私人內容資訊儲存在此緩衝區中,以防止名稱衝突。
不保證會傳回相同 Name 和 Context 的 RtlGenerate8dot3Name 呼叫。 呼叫端應該假設長名稱與簡短名稱的對應不具決定性。
RtlGenerate8dot3Name 會使用目前的系統代碼頁來轉譯指定的長名稱,捨棄輸入長名稱中任何無效或多餘的字元。 當 AllowExtendedCharacters 設定為 TRUE 時,ANSI 或雙位元組字元集 (DBCS) 對應至大寫 OEM 字元的字元可能會成為傳回簡短名稱的一部分。
RtlGenerate8dot3Name 會傳回具有大寫字母字元的簡短檔名。 它會針對在指定長名稱中遇到的下列任何字元,傳回產生的簡短名稱中的底線:
- 冒號和分號
- 逗號
- 加號和等號
- 方括弧
如需其他字串處理例程的資訊,請參閱 Run-Time Library (RTL) 例程。
規格需求
需求 | 值 |
---|---|
目標平台 | Universal |
標頭 | ntifs.h (包含 Ntifs.h) |
程式庫 | NtosKrnl.lib |
Dll | NtosKrnl.exe |
IRQL | < DISPATCH_LEVEL |