GetCurrentDirectory-Funktion (winbase.h)
Hiermit wird das aktuelle Verzeichnis für den aktuellen Prozess abgerufen.
Syntax
DWORD GetCurrentDirectory(
[in] DWORD nBufferLength,
[out] LPTSTR lpBuffer
);
Parameter
[in] nBufferLength
Die Länge des Puffers für die aktuelle Verzeichniszeichenfolge in TCHARs. Die Pufferlänge muss Platz für ein abschließendes NULL-Zeichen enthalten.
[out] lpBuffer
Ein Zeiger auf den Puffer, der die aktuelle Verzeichniszeichenfolge empfängt. Diese null-endende Zeichenfolge gibt den absoluten Pfad zum aktuellen Verzeichnis an.
Um die erforderliche Puffergröße zu bestimmen, legen Sie diesen Parameter auf NULL und den Parameter nBufferLength auf 0 fest.
Rückgabewert
Wenn die Funktion erfolgreich ist, gibt der Rückgabewert die Anzahl der Zeichen an, die in den Puffer geschrieben werden, ohne das abschließende NULL-Zeichen.
Wenn die Funktion fehlerhaft ist, ist der Rückgabewert null. Um erweiterte Fehlerinformationen zu erhalten, rufen Sie GetLastError auf.
Wenn der Puffer, auf den von lpBuffer verwiesen wird, nicht groß genug ist, gibt der Rückgabewert die erforderliche Größe des Puffers in Zeichen an, einschließlich des Nullabschlusszeichens.
Hinweise
Jeder Prozess verfügt über ein einzelnes aktuelles Verzeichnis, das aus zwei Teilen besteht:
- Ein Datenträgerdesignator, der entweder ein Laufwerkbuchstabe gefolgt von einem Doppelpunkt oder ein Servername gefolgt von einem Freigabenamen (\\Servername\Freigabename) ist.
- Ein Verzeichnis auf dem Datenträger-Designator
Multithreadanwendungen und freigegebener Bibliothekscode sollten nicht die
GetCurrentDirectory-Funktion und sollte die Verwendung relativer Pfadnamen vermeiden. Der aktuelle Verzeichniszustand, der von der SetCurrentDirectory-Funktion geschrieben wird, wird in jedem Prozess als globale Variable gespeichert. Daher können Multithreadanwendungen diesen Wert nicht zuverlässig verwenden, ohne datenbeschädigungen von anderen Threads, die diesen Wert möglicherweise auch lesen oder festlegen. Diese Einschränkung gilt auch für die Funktionen SetCurrentDirectory und GetFullPathName . Die Ausnahme ist, wenn die Anwendung garantiert in einem einzelnen Thread ausgeführt wird, z. B. die Analyse von Dateinamen aus der Befehlszeilenargumentzeichenfolge im Standard Thread vor dem Erstellen zusätzlicher Threads. Die Verwendung relativer Pfadnamen in Multithreadanwendungen oder freigegebenem Bibliothekscode kann zu unvorhersehbaren Ergebnissen führen und wird nicht unterstützt.
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 Ändern des aktuellen Verzeichnisses.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows XP [Desktop-Apps | UWP-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2003 [Desktop-Apps | UWP-Apps] |
Zielplattform | Windows |
Kopfzeile | winbase.h (Windows.h einschließen) |
Bibliothek | Kernel32.lib |
DLL | Kernel32.dll |