GetTempFileNameA 関数 (fileapi.h)
一時ファイル名を作成します。 一意のファイル名が生成されると、空のファイルが作成され、そこへのハンドルが解放されます。それ以外の場合は、ファイル名のみが生成されます。
構文
UINT GetTempFileNameA(
[in] LPCSTR lpPathName,
[in] LPCSTR lpPrefixString,
[in] UINT uUnique,
[out] LPSTR lpTempFileName
);
パラメーター
[in] lpPathName
ファイル名のディレクトリ パス。 通常、アプリケーションでは、現在のディレクトリまたは GetTempPath 関数の結果にピリオド (.) を指定します。 文字列を MAX_PATHから 14 文字以内にすることはできません。 または、GetTempFileName は失敗します。 このパラメーターが NULL の場合、関数は失敗します。
[in] lpPrefixString
null で終わるプレフィックス文字列。 関数は、この文字列の先頭の 3 文字までをファイル名のプレフィックスとして使用します。 この文字列は、OEM で定義された文字セット内の文字で構成されている必要があります。
[in] uUnique
一時ファイル名の作成に使用する符号なし整数。 詳細については、「解説」を参照してください。
uUnique が 0 の場合、関数は現在のシステム時刻を使用して一意のファイル名の形成を試みます。 ファイルが既に存在する場合、数は 1 ずつ増加し、関数はこのファイルが既に存在するかどうかをテストします。 これは、一意のファイル名が見つかるまで続きます。関数は、その名前でファイルを作成して閉じます。 uUnique が 0 以外の場合、関数はファイル名の一意性を検証しようとしないことに注意してください。
[out] lpTempFileName
一時ファイル名を受け取るバッファーへのポインター。 このバッファーは 、 パスと終端の null 文字を格納するために、MAX_PATH文字にする必要があります。
戻り値
関数が成功した場合、戻り値は一時ファイル名で使用される一意の数値を指定します。 uUnique パラメーターが 0 以外の場合、戻り値は同じ数値を指定します。
関数が失敗した場合は、0 を返します。 詳細なエラー情報を得るには、GetLastError を呼び出します。
可能な戻り値を次に示します。
戻り値 | 説明 |
---|---|
|
lpPathName パラメーターが指す文字列の長さは、MAX_PATHから 14 文字を超えています。 |
解説
GetTempFileName 関数は、次の形式の一時ファイル名を作成します。
<path>\<pre><uuuu>.Tmp
次の表では、ファイル名の構文について説明します。
コンポーネント | 意味 |
---|---|
<path> | lpPathName パラメーターで指定されたパス |
<pre> | lpPrefixString 文字列の最初の 3 文字 |
<uuuu> | uUnique の 16 進値 |
uUnique が 0 の場合、GetTempFileName は空のファイルを作成して閉じます。 uUnique が 0 でない場合は、ファイルを自分で作成する必要があります。 GetTempFileName ではファイル名が一意であることを保証できないため、ファイル名のみが作成されます。
uUnique パラメーターの下位 16 ビットのみが使用されます。 これにより、lpPathName パラメーターと lpPrefixString パラメーターが同じままである場合、GetTempFileName は最大 65,535 個の一意のファイル名に制限されます。
ファイル名の生成に使用されるアルゴリズムにより、同じプレフィックスを持つ多数のファイルを作成するときに 、GetTempFileName のパフォーマンスが低下する可能性があります。 このような場合は、 GUIDに基づいて一意のファイル名を作成することをお勧めします。
この関数によって作成された名前の一時ファイルは、自動的には削除されません。 これらのファイルを削除するには 、DeleteFile を呼び出します。
ANSI 文字列を変換するときに発生する問題を回避するには、アプリケーションで CreateFile 関数を呼び出して一時ファイルを作成する必要があります。
Windows 8 と Windows Server 2012 では、この関数は、次のテクノロジによってサポートされています。
テクノロジ | サポートされています |
---|---|
サーバー メッセージ ブロック (SMB) 3.0 プロトコル | はい |
SMB 3.0 Transparent Failover (TFO) | はい |
スケールアウト ファイル共有 (SO) を使う SMB 3.0 | はい |
クラスターの共有ボリューム ファイル システム (CsvFS) | はい |
Resilient File System (ReFS) | はい |
例
例については、「 一時ファイルの作成と使用」を参照してください。
注意
fileapi.h ヘッダーは、Unicode プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして GetTempFileName を定義します。 エンコードに依存しないエイリアスをエンコードニュートラルでないコードと組み合わせて使用すると、コンパイルまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。
要件
サポートされている最小のクライアント | Windows XP [デスクトップ アプリ | UWP アプリ] |
サポートされている最小のサーバー | Windows Server 2003 [デスクトップ アプリのみ | UWP アプリ] |
対象プラットフォーム | Windows |
ヘッダー | fileapi.h (Windows.h を含む) |
Library | Kernel32.lib |
[DLL] | Kernel32.dll |