GetCurrentDirectory, fonction (winbase.h)

Récupère le répertoire actif pour le processus en cours.

Syntaxe

DWORD GetCurrentDirectory(
  [in]  DWORD  nBufferLength,
  [out] LPTSTR lpBuffer
);

Paramètres

[in] nBufferLength

Longueur de la mémoire tampon pour la chaîne de répertoire active, en TCHAR. La longueur de la mémoire tampon doit inclure de l’espace pour un caractère null de fin.

[out] lpBuffer

Pointeur vers la mémoire tampon qui reçoit la chaîne de répertoire active. Cette chaîne terminée par un caractère Null spécifie le chemin absolu du répertoire actif.

Pour déterminer la taille de mémoire tampon requise, définissez ce paramètre sur NULL et le paramètre nBufferLength sur 0.

Valeur retournée

Si la fonction réussit, la valeur de retour spécifie le nombre de caractères écrits dans la mémoire tampon, sans inclure le caractère null de fin.

Si la fonction échoue, la valeur de retour est égale à zéro. Pour obtenir des informations détaillées sur l’erreur, appelez GetLastError.

Si la mémoire tampon pointée par lpBuffer n’est pas suffisamment grande, la valeur de retour spécifie la taille requise de la mémoire tampon, en caractères, y compris le caractère de fin null.

Remarques

Chaque processus a un répertoire actif unique qui se compose de deux parties :

  • Un désignateur de disque qui est une lettre de lecteur suivie d’un deux-points, ou un nom de serveur suivi d’un nom de partage (\\servername\sharename)
  • Répertoire sur le désignateur de disque
Pour définir le répertoire actif, utilisez la fonction SetCurrentDirectory .

Les applications multithreads et le code de bibliothèque partagée ne doivent pas utiliser le
GetCurrentDirectory et doivent éviter d’utiliser des noms de chemin d’accès relatifs. L’état du répertoire actuel écrit par la fonction SetCurrentDirectory est stocké en tant que variable globale dans chaque processus. Par conséquent, les applications multithread ne peuvent pas utiliser cette valeur de manière fiable sans altération possible des données provenant d’autres threads qui peuvent également lire ou définir cette valeur. Cette limitation s’applique également aux fonctions SetCurrentDirectory et GetFullPathName . L’exception étant lorsque l’application est garantie d’être exécutée dans un thread unique, par exemple l’analyse des noms de fichiers à partir de la chaîne d’argument de ligne de commande dans le thread main avant de créer des threads supplémentaires. L’utilisation de noms de chemin d’accès relatifs dans des applications multithread ou du code de bibliothèque partagée peut produire des résultats imprévisibles et n’est pas prise en charge.

Dans Windows 8 et Windows Server 2012, cette fonction est prise en charge par les technologies suivantes.

Technologie Prise en charge
Protocole Server Message Block (SMB) 3.0 Oui
Basculement transparent SMB 3.0 (TFO) Oui
SMB 3.0 avec partages de fichiers avec montée en puissance parallèle (SO) Oui
Système de fichiers du volume partagé de cluster (CsvFS) Oui
Système de fichiers résilient (ReFS) Oui
 

Exemples

Pour obtenir un exemple, consultez Modification du répertoire actif.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows XP [applications de bureau | applications UWP]
Serveur minimal pris en charge Windows Server 2003 [applications de bureau | applications UWP]
Plateforme cible Windows
En-tête winbase.h (inclure Windows.h)
Bibliothèque Kernel32.lib
DLL Kernel32.dll

Voir aussi

CreateDirectory

Fonctions de gestion des répertoires

GetSystemDirectory

GetWindowsDirectory

RemoveDirectory

SetCurrentDirectory