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 會將私人內容資訊儲存在此緩衝區中,以防止名稱衝突。

不保證會傳回相同 NameContextRtlGenerate8dot3Name 呼叫。 呼叫端應該假設長名稱與簡短名稱的對應不具決定性。

RtlGenerate8dot3Name 會使用目前的系統代碼頁來轉譯指定的長名稱,捨棄輸入長名稱中任何無效或多餘的字元。 當 AllowExtendedCharacters 設定為 TRUE 時,ANSI 或雙位元組字元集 (DBCS) 對應至大寫 OEM 字元的字元可能會成為傳回簡短名稱的一部分。

RtlGenerate8dot3Name 會傳回具有大寫字母字元的簡短檔名。 它會針對在指定長名稱中遇到的下列任何字元,傳回產生的簡短名稱中的底線:

  • 冒號和分號
  • 逗號
  • 加號和等號
  • 方括弧

如需其他字串處理例程的資訊,請參閱 Run-Time Library (RTL) 例程

規格需求

需求
目標平台 Universal
標頭 ntifs.h (包含 Ntifs.h)
程式庫 NtosKrnl.lib
Dll NtosKrnl.exe
IRQL < DISPATCH_LEVEL

另請參閱

RtlIsNameLegalDOS8Dot3

RtlIsValidOemCharacter

UNICODE_STRING