Freigeben über


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
Verwenden Sie zum Festlegen des aktuellen Verzeichnisses die SetCurrentDirectory-Funktion .

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

Siehe auch

CreateDirectory

Verzeichnisverwaltungsfunktionen

GetSystemDirectory

GetWindowsDirectory

RemoveDirectory

SetCurrentDirectory