Share via


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 範囲内の文字のみを含める必要がある場合は、0x20 (スペース) から0x7f (DEL) までの範囲で FALSE に設定します。

[in, out] Context

RtlGenerate8dot3Name で使用する呼び出し元によって割り当てられたバッファーへのポインター。 RtlGenerate8dot3Name を初めて呼び出して指定された長いファイル名を変換する前に、呼び出し元はバッファーにゼロを入力する必要があります。

[in, out] Name8dot3

生成された短いファイル名を受け取る呼び出し元によって割り当てられたバッファーへのポインター。 このバッファーのサイズは、少なくとも 24 バイト (12 Unicode 文字) である必要があります。

戻り値

このルーチンは、短い名前が正常に生成された場合にSTATUS_SUCCESSを返します。 システムが特定のファイルの一意の短い名前を生成できない場合は、STATUS_FILE_SYSTEM_LIMITATIONを返します。 このエラーは、指定された 1 つの長い名前に対して 100 万回再試行した後に返されます。

注釈

RtlGenerate8dot3Name は、生成された短い名前を最大 8 文字で返し、その直後にピリオドと最大 3 文字を返します。

RtlGenerate8dot3Name は 繰り返し呼び出すことができます。 たとえば、最初に生成された短い名前が既存のファイル名の重複である場合、呼び出し元は同じパラメーターを RtlGenerate8dot3Name に再度渡すことができます。 この場合、 Context のバッファーをゼロで再初期化しないでください。 このバッファーは、指定された長い名前を変換する最初の呼び出しの場合にのみゼロにする必要があります。 同じ長い名前を繰り返し呼び出す 場合、RtlGenerate8dot3Name は、名前の競合を防ぐために、このバッファーにプライベート コンテキスト情報を格納します。

同じ名前コンテキストを使用して RtlGenerate8dot3Name を 2 回呼び出しても、同じ結果が返される保証はありません。 呼び出し元は、長い名前と短い名前のマッピングが非決定的であると想定する必要があります。

RtlGenerate8dot3Name は 、現在のシステム コード ページを使用して指定された長い名前を変換し、入力長い名前の無効または余分な文字を破棄します。 AllowExtendedCharacters が TRUE に設定されている場合、大文字の OEM 文字にマップされる ANSI 文字または 2 バイト文字セット (DBCS) 文字は、返される短い名前の一部になる可能性があります。

RtlGenerate8dot3Name は 、大文字のアルファベットの短いファイル名を返します。 指定された長い名前で検出された次のいずれかの文字について、生成された短い名前のアンダースコアを返します。

  • コロンとセミコロン
  • コンマ
  • プラス記号と等号
  • 角かっこ

その他の文字列処理ルーチンの詳細については、「 ランタイム ライブラリ (RTL) ルーチン」を参照してください。

要件

要件
対象プラットフォーム ユニバーサル
Header ntifs.h (Ntifs.h を含む)
Library NtosKrnl.lib
[DLL] NtosKrnl.exe
IRQL < DISPATCH_LEVEL

こちらもご覧ください

RtlIsNameLegalDOS8Dot3

RtlIsValidOemCharacter

UNICODE_STRING