次の方法で共有


GetTempFileNameW 関数 (fileapi.h)

一時ファイルの名前を作成します。 一意のファイル名が生成されると、空のファイルが作成され、それに対するハンドルが解放されます。それ以外の場合は、ファイル名のみが生成されます。

構文

UINT GetTempFileNameW(
  [in]  LPCWSTR lpPathName,
  [in]  LPCWSTR lpPrefixString,
  [in]  UINT    uUnique,
  [out] LPWSTR  lpTempFileName
);

パラメーター

[in] lpPathName

ファイル名のディレクトリ パス。 通常、アプリケーションでは、現在のディレクトリの期間 (.) または GetTempPath2 関数の結果を指定します。 文字列を -14 文字 MAX_PATH長くすることはできません。または、GetTempFileName 失敗します。 このパラメーターが NULL場合、関数は失敗します。

[in] lpPrefixString

null で終わるプレフィックス文字列。 この関数は、ファイル名のプレフィックスとして、この文字列の最初の 3 文字まで使用します。 この文字列は、OEM で定義された文字セット内の文字で構成されている必要があります。

[in] uUnique

一時ファイル名の作成に使用する符号なし整数。 詳細については、「解説」を参照してください。

uUnique 0 の場合、関数は現在のシステム時刻を使用して一意のファイル名の形成を試みます。 ファイルが既に存在する場合、数は 1 ずつ増加し、関数はこのファイルが既に存在するかどうかをテストします。 これは、一意のファイル名が見つかるまで続行されます。関数はその名前でファイルを作成し、それを閉じます。 uUnique が 0 以外の場合、関数はファイル名の一意性を検証しようとしないことに注意してください。

[out] lpTempFileName

一時ファイル名を受け取るバッファーへのポインター。 パスと終端の null 文字を格納するには、このバッファーを MAX_PATH 文字にする必要があります。

戻り値

関数が成功した場合、戻り値は一時ファイル名で使用される一意の数値を指定します。 uUnique パラメーターが 0 以外の場合、戻り値はその同じ数値を指定します。

関数が失敗した場合、戻り値は 0 です。 拡張エラー情報を取得するには、GetLastError呼び出します。

可能な戻り値を次に示します。

戻り値 形容
ERROR_BUFFER_OVERFLOW
lpPathName パラメーターが指す文字列の長さは、MAX_PATH-14 文字を超えています。

備考

GetTempFileName 関数は、次の形式の一時ファイル名を作成します。

<パス>\<pre><uuuu>.TMP

次の表では、ファイル名の構文について説明します。

コンポーネント 意味
<パスの> lpPathName パラメーターで指定されたパス
事前する lpPrefixString 文字列の最初の 3 文字
<uuuu> uUnique 16 進数の値
 

uUnique が 0 の場合、GetTempFileName 空のファイルを作成して閉じます。 uUnique ゼロでない場合は、自分でファイルを作成する必要があります。 GetTempFileName ファイル名が一意であることを保証できないため、ファイル名のみが作成されます。

uUnique パラメーターの下位 16 ビットのみが使用されます。 これにより、lpPathName パラメーターと lpPrefixString パラメーターが変わらない場合、GetTempFileName 最大 65,535 個の一意のファイル名に制限されます。

ファイル名の生成に使用されるアルゴリズムにより、GetTempFileName は、同じプレフィックスを持つ多数のファイルを作成するときにパフォーマンスが低下する可能性があります。 このような場合は、GUIDに基づいて一意 ファイル名を作成することをお勧めします。

この関数によって作成された名前の一時ファイルは自動的には削除されません。 これらのファイルを削除するには、DeleteFile呼び出します。

ANSI 文字列を変換するときに発生する問題を回避するには、アプリケーションで CreateFile 関数を呼び出して一時ファイルを作成する必要があります。

Windows 8 および Windows Server 2012 では、この関数は次のテクノロジでサポートされています。

テクノロジー サポート
サーバー メッセージ ブロック (SMB) 3.0 プロトコル はい
SMB 3.0 透過的フェールオーバー (TFO) はい
SMB 3.0 とスケールアウト ファイル共有 (SO) はい
クラスター共有ボリューム ファイル システム (CsvFS) はい
回復性のあるファイル システム (ReFS) はい
 

例については、「一時ファイルの作成と使用」を参照してください。

手記

fileapi.h ヘッダーは、Unicode プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして GetTempFileName を定義します。 エンコードに依存しないエイリアスをエンコードに依存しないコードと組み合わせて使用すると、コンパイルエラーやランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「関数プロトタイプの 規則」を参照してください。

必要条件

要件 価値
サポートされる最小クライアント Windows XP [デスクトップ アプリ |UWP アプリ]
サポートされる最小サーバー Windows Server 2003 [デスクトップ アプリ |UWP アプリ]
ターゲット プラットフォーム の ウィンドウズ
ヘッダー fileapi.h (Windows.h を含む)
ライブラリ Kernel32.lib
DLL Kernel32.dll

関連項目

CreateFile の

DeleteFile の

ファイル管理機能の

GetTempPath2 を する

ファイル、パス、および名前空間の名前付け を する