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
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 |