共用方式為


GetTempFileNameW 函式 (fileapi.h)

建立暫存盤的名稱。 如果產生唯一的檔名,則會建立空的檔案,並釋放它的句柄;否則,只會產生檔名。

語法

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

參數

[in] lpPathName

檔名的目錄路徑。 應用程式通常會指定目前目錄的句號或 getTempPath2 函式 的結果。 字串不能超過 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 函式會建立下列格式的暫存檔名:

<路徑>\<預先><uuu>。TMP

下表描述檔名語法。

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

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

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

要求

要求 價值
最低支援的用戶端 Windows XP [傳統型應用程式 |UWP 應用程式]
支援的最低伺服器 Windows Server 2003 [傳統型應用程式 |UWP 應用程式]
目標平臺 窗戶
標頭 fileapi.h (包括 Windows.h)
連結庫 Kernel32.lib
DLL Kernel32.dll

另請參閱

CreateFile

DeleteFile

檔案管理功能

GetTempPath2

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