Неожиданное поведение при поиске доступных каналов - PullRequest
2 голосов
/ 05 ноября 2019

Мы используем подход GetFiles из этого вопроса следующим образом:

var pipePrefix = "Test_";
Directory.GetFiles("\\.\pipe\", pipePrefix + "*");

И мы ищем каналы типа "Test_1", "Test_2", "Test_3". Мы знаем, что это приложение имеет некоторые проблемы , но мы не смогли найти объяснение нашего поведения.

До сих пор мы тестировали его на трех машинах с Windows 10 и одной с Windows 7. Вкл. В Windows 10 все работает как положено (насколько мы можем судить). Мы находим все трубы каждый раз. На машине с Windows 7 у нас есть некоторые проблемы:

С кодом выше мы не находим никаких каналов вообще. Но если мы будем искать по

Directory.GetFiles("\\.\pipe\", "*");

, мы найдем все трубы, но у нас будет еще один шаг, чтобы выбрать наши трубы. И мы попробовали еще несколько запросов:

Directory.GetFiles("\\.\pipe\", "*");           //We find our pipes
Directory.GetFiles("\\.\pipe\", "T" + "*");     //We find our pipes
Directory.GetFiles("\\.\pipe\", "Te" + "*");    //We don't find our pipes
Directory.GetFiles("\\.\pipe\", "Tes" + "*");   //We don't find our pipes
Directory.GetFiles("\\.\pipe\", "Test" + "*");  //We don't find our pipes
Directory.GetFiles("\\.\pipe\", "Test_" + "*"); //We don't find our pipes

Мы не находим никаких скрытых символов и не выдается никаких исключений.

Пока мы не знаем, является ли проблема Windows 7.

Обновление 07.11.19: Мы установили новый Windows 7 и новый компьютер с Windows 10 и попробовали несколько букв не только T. В Windows 7 мы иногда находим каналы с одной буквой, например Tили U и иногда с двумя, например, Te или Ug. Но мы всегда находим каналы в Windows 10. Мы , а не настраивали наше программное обеспечение на этих машинах, мы просто искали существующие каналы с помощью консольного приложения. Так что с нашей точки зрения это выглядит так, как будто это проблема в Windows 7, а не в нашем приложении.

Поэтому мой вопрос не в том, как мы можем обойти эту проблему. Я уверен, что мы могли бы использовать другой шаблон и фильтр впоследствии или использовать совершенно другой подход, который не основан на GetFiles / EnumerateFiles (лучший вариант, я думаю). Мой вопрос:

Почему поведение отличается в зависимости от ввода и, возможно, также от ОС?

...