GetTempFileNameW-Funktion (fileapi.h)
Erstellt einen Namen für eine temporäre Datei. Beim Generieren eines eindeutigen Dateinamens wird eine leere Datei erstellt, und das zugehörige Handle wird freigegeben. Andernfalls wird nur ein Dateiname generiert.
Syntax
UINT GetTempFileNameW(
[in] LPCWSTR lpPathName,
[in] LPCWSTR lpPrefixString,
[in] UINT uUnique,
[out] LPWSTR lpTempFileName
);
Parameter
[in] lpPathName
Der Verzeichnispfad für den Dateinamen. Anwendungen geben in der Regel einen Punkt (.) für das aktuelle Verzeichnis oder das Ergebnis der GetTempPath-Funktion an. Die Zeichenfolge darf nicht länger als MAX_PATH bis 14 Zeichen sein, oder GetTempFileName schlägt fehl. Wenn dieser Parameter NULL ist, schlägt die Funktion fehl.
[in] lpPrefixString
Die Null-endende Präfixzeichenfolge. Die Funktion verwendet bis zu den ersten drei Zeichen dieser Zeichenfolge als Präfix des Dateinamens. Diese Zeichenfolge muss aus Zeichen im OEM-definierten Zeichensatz bestehen.
[in] uUnique
Eine ganze Zahl ohne Vorzeichen, die beim Erstellen des temporären Dateinamens verwendet werden soll. Weitere Informationen finden Sie in den Hinweisen.
Wenn uUnique null ist, versucht die Funktion, mithilfe der aktuellen Systemzeit einen eindeutigen Dateinamen zu bilden. Wenn die Datei bereits vorhanden ist, wird die Anzahl um eins erhöht, und die Funktion testet, ob diese Datei bereits vorhanden ist. Dies wird so lange fortgesetzt, bis ein eindeutiger Dateiname gefunden wird. Die Funktion erstellt eine Datei mit diesem Namen und schließt sie. Beachten Sie, dass die Funktion nicht versucht, die Eindeutigkeit des Dateinamens zu überprüfen, wenn uUnique ungleich null ist.
[out] lpTempFileName
Ein Zeiger auf den Puffer, der den temporären Dateinamen empfängt. Dieser Puffer sollte MAX_PATH Zeichen enthalten, um den Pfad und das abschließende NULL-Zeichen aufzunehmen.
Rückgabewert
Wenn die Funktion erfolgreich ist, gibt der Rückgabewert den eindeutigen numerischen Wert an, der im temporären Dateinamen verwendet wird. Wenn der uUnique-Parameter ungleich null ist, gibt der Rückgabewert dieselbe Zahl an.
Wenn die Funktion fehlerhaft ist, ist der Rückgabewert null. Um erweiterte Fehlerinformationen zu erhalten, rufen Sie GetLastError auf.
Im Folgenden ist ein möglicher Rückgabewert aufgeführt.
Rückgabewert | BESCHREIBUNG |
---|---|
|
Die Länge der Zeichenfolge, auf die der lpPathName-Parameter verweist, ist mehr als MAX_PATH bis 14 Zeichen. |
Hinweise
Die GetTempFileName-Funktion erstellt einen temporären Dateinamen in der folgenden Form:
<path>\<pre><uuuu>. TMP
In der folgenden Tabelle wird die Dateinamensyntax beschrieben.
Komponente | Bedeutung |
---|---|
<Pfad> | Pfad, der durch den lpPathName-Parameter angegeben wird |
<pre> | Erste drei Buchstaben der lpPrefixString-Zeichenfolge |
<uuuu> | Hexadezimalwert von uUnique |
Wenn uUnique null ist, erstellt GetTempFileName eine leere Datei und schließt sie. Wenn uUnique nicht null ist, müssen Sie die Datei selbst erstellen. Es wird nur ein Dateiname erstellt, da GetTempFileName nicht garantieren kann, dass der Dateiname eindeutig ist.
Es werden nur die unteren 16 Bits des uUnique-Parameters verwendet. Dadurch wird GetTempFileName auf maximal 65.535 eindeutige Dateinamen beschränkt, wenn die Parameter lpPathName und lpPrefixString gleich bleiben.
Aufgrund des Algorithmus, der zum Generieren von Dateinamen verwendet wird, kann GetTempFileName beim Erstellen einer großen Anzahl von Dateien mit demselben Präfix eine schlechte Leistung erzielen. In solchen Fällen wird empfohlen, eindeutige Dateinamen basierend auf GUIDszu erstellen.
Temporäre Dateien, deren Namen von dieser Funktion erstellt wurden, werden nicht automatisch gelöscht. Um diese Dateien zu löschen, rufen Sie DeleteFile auf.
Um Probleme beim Konvertieren einer ANSI-Zeichenfolge zu vermeiden, sollte eine Anwendung die CreateFile-Funktion aufrufen, um eine temporäre Datei zu erstellen.
Unter Windows 8 und Windows Server 2012 wird diese Funktion von den folgenden Technologien unterstützt.
Technologie | Unterstützt |
---|---|
SMB 3.0-Protokoll (Server Message Block) | Ja |
SMB 3.0 Transparent Failover (TFO) | Ja |
SMB 3.0 mit Dateifreigaben mit horizontaler Skalierung (SO) | Ja |
Dateisystem mit freigegebenen Clustervolumes (CsvFS) | Ja |
Robustes Dateisystem (Resilient File System, ReFS) | Ja |
Beispiele
Ein Beispiel finden Sie unter Erstellen und Verwenden einer temporären Datei.
Hinweis
Der Fileapi.h-Header definiert GetTempFileName als Alias, der die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante automatisch auswählt. Das Mischen der Verwendung des codierungsneutralen Alias mit Code, der nicht Codierungsneutral ist, kann zu Nichtübereinstimmungen führen, die zu Kompilierungs- oder Laufzeitfehlern führen. Weitere Informationen finden Sie unter Konventionen für Funktionsprototypen.
Anforderungen
Unterstützte Mindestversion (Client) | Windows XP [Desktop-Apps | UWP-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2003 [Desktop-Apps | UWP-Apps] |
Zielplattform | Windows |
Kopfzeile | fileapi.h (Einschließen von Windows.h) |
Bibliothek | Kernel32.lib |
DLL | Kernel32.dll |