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 結尾的前置詞字串。 此函式最多會使用此字串的前三個字元做為檔案名的前置詞。 此字串必須包含 OEM 定義字元集中的字元。

[in] uUnique

要用來建立暫存檔案名的不帶正負號整數。 如需詳細資訊,請參閱<備註>。

如果 uUnique 為零,函式會嘗試使用目前的系統時間來形成唯一的檔案名。 如果檔案已經存在,數位就會增加一個,而且函式會測試此檔案是否已經存在。 這會繼續直到找到唯一的檔案名為止;函式會依該名稱建立檔案,並加以關閉。 請注意,當 uUnique 為非零時,函式不會嘗試驗證檔案名的唯一性。

[out] lpTempFileName

接收暫存檔案名之緩衝區的指標。 此緩衝區應 MAX_PATH 字元,以容納路徑加上終止的 Null 字元。

傳回值

如果函式成功,傳回值會指定暫存檔案名中使用的唯一數值。 如果 uUnique 參數為非零值,則傳回值會指定相同的數位。

如果此函式失敗,則傳回值為零。 若要取得擴充的錯誤資訊,請呼叫 GetLastError

以下是可能的傳回值。

傳回值 描述
ERROR_BUFFER_OVERFLOW
lpPathName參數所指向的字串長度超過MAX_PATH–14 個字元。

備註

GetTempFileName函式會建立下列格式的暫存檔案名:

< 路徑 >\< 前置 >< uuuu >。Tmp

下表描述檔案名語法。

元件 意義
<路徑> 由 lpPathName參數指定的路徑
<pre> lpPrefixString字串的前三個字母
<uuuu> uUnique的十六進位值
 

如果 uUnique 為零, GetTempFileName 會建立空的檔案並加以關閉。 如果 uUnique 不是零,您必須自行建立檔案。 只會建立檔案名,因為 GetTempFileName 無法保證檔案名是唯一的。

只會使用 uUnique 參數的較低 16 位。 如果lpPathNamelpPrefixString參數維持不變,這會將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 標頭會將 GetTempFileName 定義為別名,根據 UNICODE 預處理器常數的定義,自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程式碼,可能會導致編譯或執行時間錯誤不符。 如需詳細資訊,請參閱 函式原型的慣例

需求

   
最低支援的用戶端 Windows XP [傳統型應用程式 |UWP 應用程式]
最低支援的伺服器 Windows Server 2003 [傳統型應用程式 |UWP 應用程式]
目標平台 Windows
標頭 fileapi.h (包含 Windows.h)
程式庫 Kernel32.lib
DLL Kernel32.dll

另請參閱

CreateFile

DeleteFile

檔案管理功能

GetTempPath

命名檔案、路徑和命名空間