Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Limite chemin à 256 car ?

13 réponses
Avatar
Pierre Goiffon
Bonjour,
Je ne trouve nulle part d'info à ce sujet...
Il semble que l'on ne puisse pas créer sous Windows 2000, XP et précédent de
fichier dont le chemin complet fasse plus de 256 car. C'est facile à tester
avec une ligne de commande :

mkdir 0123456789
cd 0123456789
..

Est-ce que quelqu'un aurait le pourquoi du comment ?

10 réponses

1 2
Avatar
GG
> Est-ce que quelqu'un aurait le pourquoi du comment ?



Dans WINNT.H
la constante MAX_PATH est défini a 256
#define MAX_PATH 256

By design comme dirait MS.

--
Cordialement
GG.
Avatar
Pierre Goiffon
"GG" a écrit dans le message de
news:
Est-ce que quelqu'un aurait le pourquoi du comment ?



Dans WINNT.H
la constante MAX_PATH est défini a 256
#define MAX_PATH 256

By design comme dirait MS.



?? Winnt.h ????
Avatar
Eric Rossé
Le Tue, 16 Nov 2004 16:12:06 +0100, Pierre Goiffon écrivait:

Je ne trouve nulle part d'info à ce sujet...



Pourtant, chez Microsoft...

Il semble que l'on ne puisse pas créer sous Windows 2000, XP et précédent de
fichier dont le chemin complet fasse plus de 256 car.



La limite est en fait 260 caractères:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/base/naming_a_file.asp

Est-ce que quelqu'un aurait le pourquoi du comment ?



Il faut bien une limite...
Avatar
Patrick D.
On Tue, 16 Nov 2004 17:14:55 +0100, GG wrote:



Est-ce que quelqu'un aurait le pourquoi du comment ?



Dans WINNT.H
la constante MAX_PATH est défini a 256
#define MAX_PATH 256

By design comme dirait MS.




c'est une fonctionnalité, donc ...

--
* enlevez '.don't.spam' et '.invalid' de mon adresse eMail si vous voulez
m'écrire *
* Donne un poisson à un homme, il aura à manger pour un jour
* Apprends-lui à pêcher, il aura à manger pour tous les jours de sa vie *
Avatar
Patrick D.
On Tue, 16 Nov 2004 18:16:54 +0100, Pierre Goiffon
wrote:

"GG" a écrit dans le message de
news:
Est-ce que quelqu'un aurait le pourquoi du comment ?



Dans WINNT.H
la constante MAX_PATH est défini a 256
#define MAX_PATH 256

By design comme dirait MS.



?? Winnt.h ????




à la compilation de windows

un fichier .h est une fichier de variables, de constantes et autres choses
infâmes dans un programme en C ou C++ ou jenesaisquoidautre, incorporé
dans le programme

donc, sauf à avoir la totalité du code-source de windows et le compilateur
qui va bien ...

--
* enlevez '.don't.spam' et '.invalid' de mon adresse eMail si vous voulez
m'écrire *
* Donne un poisson à un homme, il aura à manger pour un jour
* Apprends-lui à pêcher, il aura à manger pour tous les jours de sa vie *
Avatar
Patrick 'Zener' Brunet
Bonsoir.

"Eric Rossé" a écrit dans le message de news:

Le Tue, 16 Nov 2004 16:12:06 +0100, Pierre Goiffon écrivait:

>Je ne trouve nulle part d'info à ce sujet...

Pourtant, chez Microsoft...

>Il semble que l'on ne puisse pas créer sous Windows 2000, XP et précédent


de
>fichier dont le chemin complet fasse plus de 256 car.

La limite est en fait 260 caractères:



http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/base
/naming_a_file.asp

>Est-ce que quelqu'un aurait le pourquoi du comment ?

Il faut bien une limite...



L'article ci-dessus spécifie 256 + spécification d'unité + terminateur NUL,
sous la forme :
D:<<<<256 max>>>>NUL
donc un buffer de 3+256+1&0 octets pour 256 caractères utiles de chemin
pour une unité donnée.

En lisant le deuxième paragraphe de la section "Maximum Path Length" de
l'article, j'imagine que pour les noms simples, il doit être alloué un
buffer dont la taille utile est codée sur un octet, donc 256 maxi.
Les noms UNC pourraient alors occuper plusieurs buffers de ce type, jusqu'à
256 buffers, mais avec la contrainte pour un segment de nom (répertoire ou
nom local de fichier) de tenir dans un seul buffer.

C'est de l'optimisation plus ou moins discutable, mais un codage un mantisse
illimitée nécessite toujours une analyse plus ou moins intelligente qui
pénalise les performances.

Cordialement,

--

/**************************************************************
* Patrick BRUNET @ ZenerTopia
* E-mail: lien sur http://zener131.free.fr/ContactMe
**************************************************************/
<8#--X--< filtré par Avast! 4 Home
Avatar
Pierre Goiffon
"Eric Rossé" a écrit dans le message de
news:
Il semble que l'on ne puisse pas créer sous Windows 2000, XP et
précédent de fichier dont le chemin complet fasse plus de 256 car.



La limite est en fait 260 caractères:



http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/base/naming_a_file.asp

Super, parfait, génial ! Merci 8)
Avatar
Pierre Goiffon
"Patrick D." <patrickr.dubois.don' a écrit dans le
message de news:
Dans WINNT.H
la constante MAX_PATH est défini a 256
#define MAX_PATH 256







?? Winnt.h ????





à la compilation de windows

un fichier .h est une fichier de variables (...)



Je suis développeur et ai pratiqué C, je n'était pas étonné par le .h
Mais plutôt me demandait d'où sortait ce winnt.h, et me le demande toujours
?
Avatar
Dominique Vaufreydaz
Bonjour,

?? Winnt.h ????


à la compilation de windows


Je suis développeur et ai pratiqué C, je n'était pas étonné par le .h
Mais plutôt me demandait d'où sortait ce winnt.h, et me le demande
toujours ?



Du repertoire d'include de Visual Studio. Doit etre inclus par
les afxmachin ou windows.h en fonction de WINVER (pas le temps
de verifier exactement).

Voila. Doms.
--
Impose ta chance, serre ton bonheur et va vers ton risque.
A te regarder, ils s'habitueront.
René Char, Les Matinaux.
----
http://Dominique.Vaufreydaz.free.fr/
http://TitchKaRa.free.fr/
http://logiciels.ntfaqfr.com/
Avatar
Eric Rossé
Le Tue, 16 Nov 2004 23:08:56 +0100, Patrick 'Zener' Brunet écrivait:


L'article ci-dessus spécifie 256 + spécification d'unité + terminateur NUL,
sous la forme :
D:<<<<256 max>>>>NUL
donc un buffer de 3+256+1&0 octets pour 256 caractères utiles de chemin
pour une unité donnée.



Oui, j'aurai pu préciser; mais comme j'ai donné la référence chez Microsoft...
Ne pas oublier également de compter les antislashs séparateurs de niveau.
A noter que les versions récentes de sdk ont défini la constante MAX_PATH
dans le fichier WinDef.h, et aussi quelques autres, mais plus dans winnt.h.
1 2