GetTempFileName

https://msdn.microsoft.com/ja-jp/library/cc428944.aspx

一時ファイルのファイル名を作成します。このファイル名は、指定されたパスと指定された接頭辞の文字列、および指定された整数に基づいて形成された 16 進文字列、さらに .tmp 拡張子を連結したものです。

整数として 0 以外の値を指定することもできますが、この場合はこの関数はファイル名を作成するだけで実際のファイルを作成しません。整数として 0 を指定すると、この関数は一意のファイル名を作成し、指定されたディレクトリ内に実際のファイルを作成します。

UINT GetTempFileName(
  LPCTSTR lpPathName,      // ディレクトリ名
  LPCTSTR lpPrefixString,  // ファイル名の接頭辞
  UINT uUnique,            // 整数
  LPTSTR lpTempFileName    // ファイル名を格納するバッファ
);

パラメータ

lpPathName
一時ファイルのパス名を保持している、NULL で終わる ANSI 文字列へのポインタを指定します。通常、カレントディレクトリを示すピリオドか、GetTempPath 関数の実行結果を指定します。NULL を指定すると、この関数は失敗します。
lpPrefixString
ファイル名の接頭辞を保持している、NULL で終わる ANSI 文字列へのポインタを指定します。この関数は、この接頭辞の最初の 3 文字を一時ファイルの最初の文字として使います。
uUnique
符号なし整数を指定します。この関数は、この整数を変換して、一時ファイルの名前を形成する 16 進文字列を作成します。

0 以外の値を指定すると、lpPrefixString パラメータで指定した接頭辞に、uUnique の値に相当する 16 進表記を連結して一時ファイル名を形成します。この場合、この関数は実際のファイルを作成しませんし、このファイル名が一意かどうかをテストしません。

0 を指定すると、この関数は、lpPrefixString パラメータで指定した接頭辞に、システム時刻に基づいて生成された 16 進文字列を連結します。この場合、一時ファイルの一意の名前が得られるまで、この関数は毎回異なった値を使います。また、lpPrefixString が指すディレクトリに、一時ファイルを実際に作成します。

lpTempFileName
1 個のバッファへのポインタを指定します。関数から制御が返ると、このバッファに、一時ファイルの名前が格納されます。このファイル名は、ANSI 文字セットで形成された、NULL で終わる文字列です。このバッファの長さは、MAX_PATH 文字以上にしてください。

戻り値

関数が成功すると、一時ファイルの名前を作成するために使われた一意の数数が返ります。uUnique パラメータが 0 ではない場合、uUnique パラメータと同じ値が返ります。

関数が失敗すると、0 が返ります。拡張エラー情報を取得するには、 関数を使います。

解説

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

path\preuuuu.TMP

次の表は、ファイル名の構文を説明します。

コンポーネント意味
pathlpPathName パラメータで指定したパス
prelpPrefixString で指定した文字列の最初の 3 文字
uuuuuUnique 値で指定した 16 進表記、またはシステム時刻に基づいて生成された 16 進文字

この関数を使って作成した一時ファイルは、Windows のシャットダウン時に自動的に削除されることはありません。

ANSI 文字列を Windows 文字列へ変換するときに起こる問題を避けるため、アプリケーションは CreateFile 関数を使って一時ファイルを作成するべきです。

uUnique パラメータで 0 を指定した場合、GetTempFileName 関数は現在のシステム時刻に基づいて一意の数値を生成しようとします。この結果 1 つの名前が得られますが、同じ名前のファイルが既に存在している場合、数値の値を 1 増やして同様に名前の作成と一意かどうかのテストを行います。一意のファイル名が見つかるまで、この関数は作成とテストを繰り返します。そして、一意のファイル名を使ってファイルを作成し、そのファイルを閉じます。uUnique で 0 以外の値を指定した場合、この関数はファイル名が一意かどうかテストすることはありませんし、ファイルを実際に作成せず、ファイルを開くこともありません。

MAPI:詳細については、MSDN ライブラリの「」を参照してください。

対応情報

Windows NT/2000:Windows NT 3.1 以降
Windows 95/98:Windows 95 以降
ヘッダー:Winbase.h 内で宣言、Windows.h をインクルード
インポートライブラリ:Kernel32.lib を使用
Unicode:Windows NT/2000 は Unicode 版と ANSI 版を実装

参照

CreateFile, GetTempPath

表示: