Selon MSDN,Les noms de tuyaux nommés peuvent-ils avoir des barres obliques inverses?
[Le nom du canal] doit avoir la forme suivante:
\\.\pipe\pipename
La partie pipename du nom peut inclure tout caractère autre qu'une barre oblique inverse , y compris les chiffres et caractères spéciaux. La chaîne de caractères peut contenir jusqu'à 256 caractères. Les noms de tuyaux ne sont pas sensibles à la casse.
Mais il y a beaucoup d'exemples où j'ai vu des noms de tuyaux nommés avec des barres obliques inverses. Par exemple, le nom de canal standard pour SQL Server est \\.\pipe\sql\query
.
Exécution PipeList de SysInternals révèle beaucoup de tuyaux sur ma machine où le nom comprend un backslash. Par conséquent, un nom de canal peut-il contenir une barre oblique inverse ou non?
Je demande parce que je créais un service avec plusieurs tuyaux avec des noms comme celui-ci:
\\.\pipe\MyApp
\\.\pipe\MyApp\0
\\.\pipe\MyApp\1
\\.\pipe\MyApp\2
Après la première conduite a été créé, ce qui crée les autres tuyaux échouerait avec Windows erreur 123 (de ERROR_INVALID_NAME). Si je sautais en créant le premier tuyau, tous les autres, avec le caractère backslash dans le nom, fonctionneraient très bien. Il semble que les canaux sont hiérarchiques comme le système de fichiers et si vous avez un canal avec un nom particulier, ce nom ne peut plus être utilisé comme "dossier" ou conteneur pour d'autres canaux. En essayant de comprendre cela, je suis tombé sur l'article MSDN et je me demande maintenant si je devrais utiliser des anti-slash du tout.
Un conseil?