Почему в каждой новой версии Windows все драйверы датированы одним и тем же днём 21.06.2006 г.? Microsoft вообще когда-нибудь обновляет драйверы или они там собралась просто группа бездельников? Наконец-то мы узнали ответ на этот вопрос из заметки в неофициальном блоге The Old New Thing на сайте Microsoft.

Один из разработчиков компании Microsoft под ником zac_l объяснил, в чём дело. Сакральная дата 21.06.2006 распространяется даже на драйверы вроде Storage Spaces и современные процессоры, которые вообще не существовали десять лет назад, так что о лености разработчиков здесь речи не идёт. Причина в другом.

Для установки древней даты есть одна очень важная причина, которая не имеет никакого отношения к реальной дате выпуска драйвера.

Дело в том, что в Windows работает система Plug and Play (PnP), которая позволяет быстро определить и автоматически сконфигурировать устройства в компьютере. Она автоматически распознаёт наличие нового устройства, а потом подбирает драйверы, устанавливает их, так что всё функционирует нормально без установки и конфигурации вручную. Автоматичеcки распределяются ресурсы, порты ввода-вывода, карты распределения памяти устройств и прочее.

Так вот, когда система PnP в Windows выполняет ранжирование драйверов, она первым делом сверяет аппаратный идентификатор устройства и драйвера. Если же два драйвера имеют одинаковый идентификатор, то система должна выбрать один драйвер из двух. В этом случае главным фактором является дата драйвера.

Представим ситуацию, что даты файлов указаны реальные и соответствуют времени создания файла. Что получится? Предположим, что ваше устройство может использовать стандартный драйвер Windows, но вы установили фирменный специализированный драйвер для него. В этой ситуации при каждом новом обновлении Windows будет накатывать новый стандартный драйвер Windows вместо вашего фирменного драйвера, потому что в новой версии Windows у драйвера будет более свежая дата. Вам придётся вручную каждый раз возвращать нормальные драйверы обратно.

Чтобы избежать такого конфликта, было принято простое и эффективное решение. Всем драйверам во всех версиях Windows присваивается стандартная дата, которая соответствует дате выхода Vista RTM. Эта фиксированная дата не зависит от версии драйвера или реальной даты создания файла. В то же время обновляется номер версии драйвера — это следующий фактор, который учитывается при выборе драйвера, после даты создания файла.

По умолчанию система PnP будет всегда выбирать фирменные специализированные драйверы устройств в случае их присутствия. Если их нет, то будет устанавливаться встроенный драйвер от Microsoft, причём именно драйвер из самой последней версии ОС. У него будет наибольший номер версии, хотя такая же дата, как и у старых драйверов Microsoft.

С новыми версиями Windows совместимы только драйверы не старше, чем Vista. Сторонние драйверы времён Windows XP с ними обычно не совместимы, так что проблем с конфликтами дат не возникает.

Таким образом, система PnP работает без проблем, хотя ситуация и выглядит немножко смешно. До сих пор все драйверы установлены с датой 21.06.2006, и так будет продолжаться и дальше. Вышеупомянутый разработчик Зак из Microsoft сказал: «Это великолепный пример того, что на первый взгляд кажется глупым и незначительным, но в реальности имеет глубокую и основательную цель».

Как говорит народная мудрость: «Если что-то глупо, но работает, то это не глупо» (или по-прежнему глупо, но нам повезло).

Подобный механизм работы вряд ли можно назвать идеально грамотным программированием, потому что дата файлов — это атрибут, не предназначенный для сравнения драйверов. Но система де-факто работает, так почему нет? Да и как иначе решить проблему с корректным обновлением драйверов? Если у вас есть идеи на этот счёт, то у программистов Microsoft более простого и надёжного варианта не нашлось. Кто знает, может быть, над проблемой особо и не думали — и зафиксировать дату навечно было первой мыслью, которую тут же и реализовали? Может быть, проблему решили таким «фиксом» разработчики, у которых не было полномочий внедрять более грамотную систему, например, с проверкой издателя драйвера (если издателем является Microsoft — ставить драйверу наименьший приоритет).

Плохо, что данный механизм работы PnP долгие годы остаётся ещё одной недокументированной функцией Windows, а ведь это одна из главных причин, за которую критикуют данную операционную систему с закрытым исходным кодом — у неё слишком много недокументированных особенностей, о которых мы не знаем.

Такой механизм сверки дат вполне может работать и дальше, если свет увидят новые версии Windows. Нужно лишь следить, чтобы в фирменных драйверах случайно не была указана дата более старая, чем 21.06.2006, потому что в этом случае Windows будет постоянно накатывать свой драйвер общего назначения вместо фирменного драйвера, независимо от версии. Если что, в Windows 10 есть возможность временно отключить обновление драйверов для Windows Update.
Поделиться с друзьями
-->

Комментарии (215)


  1. IgorKh
    09.02.2017 15:29
    +64

    ага, а «простое и эффективное решение» в переводе с маркетологического — это «мерзкий костыль». Правильно я понимаю?


    1. shifttstas
      10.02.2017 00:35
      -4

      Костыль.NET


    1. logout
      13.02.2017 17:52

      ждем пояснительную статью почему и сегодня в винде нельзя создавать папки типа prn, con, lpt1 и com1


      1. sumanai
        13.02.2017 18:39

        Сарказм, про статью?


      1. mayorovp
        13.02.2017 19:27

        Хм, а у меня получилось создать их. ЧЯДНТ?


        1. DMGarikk
          13.02.2017 22:28

          а вы точно попробовали?

          P.S. Win10x64, нельзя (во всяком случае штатным способом)


          1. Taciturn
            13.02.2017 22:34
            +2

            cmd достаточно штатный способ?
            md \\?\C:\con


            1. DMGarikk
              14.02.2017 00:36

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


          1. mayorovp
            13.02.2017 22:43

            FAR Manager 2.0 — можно. Совершенно штатным способом (F7, "con", Enter). А вот удалять надо через Shift+Del — Корзина такую папку не принимает :)


            1. DCNick3
              16.02.2017 19:45

              Создать подобные папки/файлы невозможно из-за особенностей подсистемы WIN32, где эти имена зарезервированы для устройств ввода-вывода.
              Far же, насколько мне известно, использует API ядра windows для рвботы с файлами, поэтому плевать эму с высокой башни на эти особенности. Как-то так.


              1. mayorovp
                16.02.2017 19:59

                Есть еще как минимум два способа создавать такие файлы, помимо Native API.


                1. Использование путей вида \\?\... — их WinAPI передает системе без своей обработки.
                2. Использование флага FILE_FLAG_POSIX_SEMANTICS.


      1. UdAvSt
        15.02.2017 13:14

        win7x64 в far спокойно создаётся и удаляется, как и в cmd, вот в XP нельзя было, но тогда это был пережиток.


  1. nazarpc
    09.02.2017 15:42
    +31

    Я даже представить не мог что Windows на столько криво реализована внутри, а судя по отношению, это только цветочки.


    1. OldFisher
      09.02.2017 16:41
      +3

      Я мог представить с тех пор, как узнал о добавлении шрифтов для консоли.



    1. quwy
      10.02.2017 04:28
      +8

      То ли дело Linux, где дефолтный драйвер нужно банить ручками, и если новый по каким-либо причинам не заведется, то получить отвал устройства. Особенно весело бывает, когда это устройство — сетевуха, а доступ к серверу только по SSH.

      Лучше уж так.


      1. nazarpc
        10.02.2017 04:37
        +1

        А никто не говорит что Linux или любая другая ОС идеальна) Справедливости ради, для рядового пользователя подавляющее большинство оборудования в Linux просто работает из коробки, а костыли и странности есть везде.


        1. NoOne
          10.02.2017 09:07
          +9

          А про Windows — это не так что ли? :))


          1. ainoneko
            10.02.2017 09:50
            -5

            Когда я там часто бывал, было не так.
            Теперь уже не так важно. ^_^


        1. aquamakc
          10.02.2017 10:03
          +2

          У меня умерла убунта после замены видеокарты и установки драйверов на неё из репозитория. Перезагрузка — GRUB — выбираем Убунту — чёрный экран и мигающий курсор (просто мерцающий, ничего ввести нельзя). Победилось переустановкой убунты и установкой уже новых драйверов через пол-года(!).
          (Да, я не линуксоид, а вполне себе махровый виндузятник. Ставил линукс для «посмотреть»).


          1. webmasterx
            14.02.2017 13:55

            Подобное произошло месяц назад. В результате не стал возиться и разбираться, а поставил Archlinux.
            Проблема появилась после установки чистой убунты и установки дров нвидии


        1. binkaminka
          13.02.2017 18:58

          А никто не говорит что Linux или любая другая ОС идеальна) Справедливости ради, для рядового пользователя подавляющее большинство оборудования в Linux просто работает из коробки, а костыли и странности есть везде.


          Да ты че.
          Особенно видеодрайвера, да?
          И с нормальным таким ускорением?


          1. nazarpc
            13.02.2017 19:06

            Видеодрайвера Nvidia нужно ставить проприетарные, да. Скорость зависит от оптимизации игр, мне в те что играю с 4k разрешением вполне подходит.
            С AMD достаточно поставить как минимум последнюю версию Ubuntu/Fedora, а лучше обновиться до git версии mesa, там со скоростью в открытых драйверах всё очень даже не плохо.
            Иногда нужны дрова для некоторых железяк в самых новых ноутах, а в остальном да, для рядового пользователя без экзотического железа всё просто работает.


            1. binkaminka
              13.02.2017 20:25

              Иногда нужны дрова для некоторых железяк в самых новых ноутах, а в остальном да, для рядового пользователя без экзотического железа всё просто работает.


              Не работает в свежайшей Ubunte на моем ноутбуке (обычный, не экзотический)
              Wi-Fi и 3G модем крупнейшего оператора


              1. linux_art
                16.02.2017 09:02

                WIFI какой-нибудь насквозь проприетарный atheros или broadcom последнего поколения, а модем какой-нибудь Huawei который работает через ndis?


        1. s5656
          15.02.2017 11:17
          +1

          Справедливости ради, для рядового пользователя подавляющее большинство оборудования в Linux просто работает из коробки

          Это шутка такая что ли?
          Каждый раз, когда пробовал использовать десктопный Linux, постоянно возникали проблемы то с Wifi, то со звуком, то с видео.
          Не надо нам такого «работает из коробки»…


          1. linux_art
            16.02.2017 09:04

            Поменял недавно материнскую плату и видеокарту. Винда 7 после этого не только загружаться перестала, но и с установкой начались пляски. Linux просто продолжил работать. Вообще ничего менять не пришлось. Что я делаю не так? :)


            1. s5656
              16.02.2017 09:13

              Не знаю, я менял материнские платы и видеократы, все отлично работало.
              Хотя с другой стороны вы бы еще диск поменяли и спросили почему не загружается.


              1. linux_art
                16.02.2017 09:15

                Ну однако linux загрузился и ничего менять не потребовалось. Даже не смотря на то что это Gentoo и в ядре выпилена поддержка отсутствующих устройств :)


              1. linux_art
                16.02.2017 09:17

                Дальше больше кстати. Новая материнка оказалась с uefi и в legacy режиме Windows 7 завести так и не удалось. Пришлось ставить загрузчик с поддержкой uefi на Linux чтобы получить возможность хоть как-то запускать Windows 7


                1. s5656
                  16.02.2017 09:33

                  Я так понимаю, что у вас рядом лежали windows и linux?


                  1. linux_art
                    16.02.2017 09:34

                    Да, дуалбут на одном железе. Под каждую систему отдельный SSD.


        1. binkaminka
          15.02.2017 12:32
          +1

          для рядового пользователя подавляющее большинство оборудования в Linux просто работает из коробки


          Для рядового админа сервера — да, работает.
          Для пользователя — постоянные проблемы с каким-то оборудованием. В моем случае — Wi-Fi, видео, 3G-модем.

          В Linux драйвера запиханы в большом количестве в ядро, что производит впечатление, что нет проблем. Особенно на фоне надписей Windows «Идет установка драйвера».

          Но это не более чем иллюзия.


          1. linux_art
            16.02.2017 09:05

            Никто не мешает собирать драйверы модулями. Та же nvidia и broadcom так делают.


            1. s5656
              16.02.2017 09:21

              Мне вот нафиг не упало там че-то собирать, нужно, что бы воткнул и работало.


              1. linux_art
                16.02.2017 09:24

                Ну дык к чему тогда эти причитания про запиханные в ядро драйверы? Большинство железа с ними работает. Не работает только то железо, производители которого больны виндой головного мозга и не распространяют драйверы своего железа под другие системы. Но к счастью таких не очень много и большинство такого железа так или иначе поддерживается открытыми драйверами.


                1. s5656
                  16.02.2017 09:27

                  Какие причитания? У меня, например, постоянно очень часто были проблемы с wifi одного очень популярного производителя.
                  К тому же со звуком постоянно были проблемы, эти алсы и пульсы нифига не работали нормально, в винде вообще ни разу таких проблем не возникало… Вообще.


                  1. linux_art
                    16.02.2017 09:31

                    У меня есть старенький ноутбук Asus K43sj. В линуксе при втыкании наушников звук переключается на них. В Windows 7 не происходит никакой реакции :) Более того в Windows 7 даже руками не возможно выбрать вывод на наушнки. Выбираю в панели драйвера этот выход и ничего не происходит :) Драйверы обновлял, систему тоже. На десктопе стоит две звуковухи. Интеграшка intel-hda (на чипе realtec) и дискретка audigy первого поколения. Кроме того два монитора подключены по HDMI. Что бы я ни делал, но после перезагрузки винды звук всегда выходит через HDMI на динамики первого монитора. В Linux я как настроил вывод звука две материнских платы назад на нужную звуковуху, так он и работает :)


                    1. s5656
                      16.02.2017 09:40

                      Ну опять же, вообще ни разу не встречал подобных проблем со звуком на винде, при этом я говорю как минимум о десятке компьютеров разных конфигураций и разными версиями windows, и еще примерно о таком же количестве ноутбуков.
                      Единственные проблемы — это когда в ноутбуках пропадает звук или wifi из-за перегрева, но такое справедливо и для linux'а.
                      Хотя да, дискретный звук я видел последний раз лет 10 назад.

                      две материнских платы назад

                      Мне кажется вы делаете что-то не то…


                      1. linux_art
                        16.02.2017 09:43

                        Мне кажется вы делаете что-то не то…

                        Не переустанавливаю систему каждые пол года? :) Как поставил 12 лет назад так и обновляю просто :) Железо меняется, а система остается :)


                        1. s5656
                          16.02.2017 10:11

                          Ну начиная с win7 я тоже только обновляю ОС. Да для избежания возможных проблем, я переустанавливал их целиком и полностью.
                          Но это были совершенно разные ОС, с 10 обещают по сути только обновления, как и в линуксе.


                          1. linux_art
                            16.02.2017 10:14

                            Не вижу смысла обновляться выше Win 7. Использую ее только для пары игр и софтин от пары китайских станков, которые под Wine не работают.


                            1. s5656
                              16.02.2017 10:16

                              Ну для вас и линукс на десктопе — это норма =)


                              1. linux_art
                                16.02.2017 10:17

                                Сугубо потому, что он для меня проще, удобнее и не доставляет проблем :)


                    1. mayorovp
                      16.02.2017 09:51

                      Даже если отключить звуковуху на видеокарте через диспетчер устройств? (Не удалить — тогда винда ее найдет опять, а именно отключить)


                      1. linux_art
                        16.02.2017 09:55

                        Поясню ситуацию. Звук по HDMI идет через видеокарту. Отключить видеокарту вообще не вариант :) Отключить просто вывод звука через видеокарту — не нашел такой опции.


                        1. mayorovp
                          16.02.2017 10:09

                          "Звуковая" часть видеокарты обычно может отключаться независимо. Поищите ее в списке звуковых устройств.


                          1. linux_art
                            16.02.2017 10:10

                            Нет такой опции в диспетчере устройств. Если выключать через панель управления выводом звука — то при перезагрузке все само включается и повторяется описанная ситуация


                            1. mayorovp
                              16.02.2017 10:12

                              Забавно...


                              1. linux_art
                                16.02.2017 10:16

                                Причем что интересно на чистой свежеустановленной системе все в точности воспроизводится в этой конфигурации :) Пробовал интереса ради переустановить Win 7 в надежде что поможет.


                                1. mayorovp
                                  16.02.2017 10:36

                                  Ну еще бы. Проблема-то в драйверах видеокарты, куда звук не иначе как каким-то костылем завезли...


                                  1. linux_art
                                    16.02.2017 10:38

                                    Видюха обычный GeForce GTX 770 :)


      1. varnav
        13.02.2017 12:41

        Я как-то раз обновил CentOS с 5.x до 5.12 кажется. Крутилась она под Hyper-V, и в новом ядре был встроенный драйвер адаптера хранилища. Который не заводился.
        Хорошо что я снепшот сделал перед обновлением.


    1. VioletGiraffe
      10.02.2017 13:28
      +2

      Вот парадокс, реализована криво, а работает отлично.
      P. S. Я бы просто дал приоритет сторонним драйверам перед драйверами MS. Тогда автоматически исчезают проблемы с обновлениями дров от самой MS (их можно сверять по датам, как и все остальные дрова).


      1. tyomitch
        10.02.2017 16:06

        Вот парадокс, реализована криво, а работает отлично.

        В программных продуктах масштаба Windows такой «парадокс» — скорее правило, чем исключение.


        1. binkaminka
          13.02.2017 07:34

          https://geektimes.ru/post/285682/#comment_9878814

          У меня умерла убунта после замены видеокарты и установки драйверов на неё из репозитория. Перезагрузка — GRUB — выбираем Убунту — чёрный экран и мигающий курсор (просто мерцающий, ничего ввести нельзя). Победилось переустановкой убунты и установкой уже новых драйверов через пол-года(!).


          В любых программных продуктах


      1. ad1Dima
        12.02.2017 09:04

        С учётом того, что сторонние драйвера - основной источник бсодов…


      1. Alexeyslav
        12.02.2017 14:22

        Основная проблема в этом решении — как отличить сторонние драйвера от своих собственных?
        Ну оно понятно вроде этот драйвер наш, а этот чужой… но теперь как это объяснить машине?


        1. Taciturn
          12.02.2017 16:26

          Можно подписывать собственные драйверы одной цифровой подписью, а сторонние — другой. По сути ещё один вариант костыля, зато без лишних флагов и странных дат.


          1. sumanai
            12.02.2017 17:00
            +1

            И много хуже, так как закрытый ключ не вечен, и имеет срок действия.


            1. Taciturn
              12.02.2017 17:07

              Ключ не вечен, но одинаковый CN можно сохранять без малейших проблем.


            1. Taciturn
              12.02.2017 17:15

              Кстати, раз речь про встроенные драйверы, то срок действия не имеет вообще никакого значения. Ключ должен действовать на момент создания дистрибутива, а дальше пусть хоть сразу протухает — нет ничего сложного в том чтобы делать новый сертификат для каждого релиза каждой ОС.


              1. sumanai
                12.02.2017 20:55
                +1

                А обновления?


    1. safinaskar
      12.02.2017 06:55
      -1

      У меня есть мания отвечать большими постами на короткие комменты. Вот и щас: UNIX-подобные системы содержат кучу костылей. Крах «философии UNIX»


  1. aquamakc
    09.02.2017 15:44
    +2

    Еще в 2005 году во время своего визита в Индию глава Microsoft Билл Гейтс изрек перед 4000 индийских IT-специалистов: «Лучшие программисты Microsoft родом из Индии».

    А через год вышла Vista и был реализован этот костыль…


    1. bopoh13
      09.02.2017 20:46

      Побаяню на тему IE7
      image


      1. ChiginAV
        10.02.2017 12:23
        +3

        Девушка справа показывает 8


        1. Fagot63
          11.02.2017 11:37

          Так вот как тролли выглядят. :)


  1. nikitos_2002
    09.02.2017 15:46

    Меня это одного много лет удивляло? Особенно в восьмёрке.


    1. ns3230
      10.02.2017 03:59

      Ни разу не обращал внимания конкретно на месяц-число, но иногда возникал вопрос: «почему в семерке все дефолтные дрова датируются 2006 годом?». Она ведь в 2009 вышла, и не может же быть такого, что ничего не обновляли, а тупо с висты скопировали… Ведь, например, драйвер видео в 2006 и догадываться не мог, что через 7 лет у меня будет Radeon HD7770, с которым драйвер на удивление сможет работать (несмотря на то, что микроархитектуры GCN тогда и в помине не было еще).


  1. Conung_ViC
    09.02.2017 15:50
    -10

    Предположим, что ваше устройство может использовать стандартный драйвер Windows, но вы установили фирменный специализированный драйвер для него. В этой ситуации при каждом новом обновлении Windows будет накатывать новый стандартный драйвер Windows вместо вашего фирменного драйвера, потому что в новой версии Windows у драйвера будет более свежая дата. Вам придётся вручную каждый раз возвращать нормальные драйверы обратно.


    а что мешало учитывать дату, но драйвера отсортировать по дате в порядке убывания? (Новый — первый, старый — последний)?!


    1. mayorovp
      09.02.2017 15:55
      +4

      В том-то и проблема, что стандартный драйвер в новой версии Windows может оказаться новее, чем старый драйвер от производителя.


    1. binkaminka
      09.02.2017 15:56
      +5

      а что мешало учитывать дату, но драйвера отсортировать по дате в порядке убывания? (Новый — первый, старый — последний)?!


      Подумайте.


      1. neprog
        14.02.2017 11:35
        -1

        Предположим, что ваше устройство может использовать стандартный драйвер Windows, но вы установили фирменный специализированный драйвер для него. В этой ситуации при каждом новом обновлении Windows будет накатывать новый стандартный драйвер Windows вместо вашего фирменного драйвера, потому что в новой версии Windows у драйвера будет более свежая дата. Вам придётся вручную каждый раз возвращать нормальные драйверы обратно.


    1. Roma1020
      09.02.2017 18:27

      Есть устройства к которым был выпушил фирменный драйвер и все драйвер не обновляют вообще, так как он работает нормально и производитель считает что устройству не нужны более новые драйвера, за исключением обновления отдельных драйверов для корректной работы на новых системах. И получается что шиндус после обновления которое она любит делать чут ли не по 2 раза на дню, просто перекроет этот драйвер и все…


      1. 25080205
        09.02.2017 20:05
        +7

        Но логично было бы мелкософтовским драйверам присвоить флажок, который опускал бы их приоритет, т.е. используем это только если ничего более подходящего не нашлось. Использовать для этой задачи дату — костыльно…


        1. alsii
          09.02.2017 21:28
          -4

          Сущностей не стоит умножать без необходимости.


          1. Finesse
            10.02.2017 02:39
            +3

            Лучше сделать новую сущность, чем костыль, особенно в такой большой сложной системе как Windows.


          1. tmteam
            10.02.2017 07:05
            +5

            А потому давайте использовать в качестве приоритета дату, которая изредка будет иметь свой реальный в смысл, но в общем — это просто 64х битный приоритет. Окама, фигли!


        1. wych-elm
          10.02.2017 09:55

          Но это потребует добавления новой сущности, и при этом все равно нужно будет учитывать старые драйверы не имеющие такого дополнения.


        1. lo0p3r
          10.02.2017 09:55
          -2

          Фиксированная старая дата — как раз реализация того самого флажка приоритета.


        1. Alexeyslav
          10.02.2017 09:57
          -2

          И куда потом этот флажок? В свойства файла, который закрыт цифровой подписью? Это костыль, который потребует изменения логистики в драйверописании и видимо имел приоритет ниже среди рассматриваемых решений.


  1. booger_man
    09.02.2017 15:56
    +2

    а почему сразу не задействовали номер или версию драйвера? ведь какая разница специализированный он или нет, если он более поздний версией.


    1. mayorovp
      09.02.2017 16:03
      +8

      Потому что последовательность версий драйвера локальна для производителя. Если для одного и того же устройства есть драйвер версии 5.8.400.12378 от Microsoft и версии 0.9.63.377 от производителя — это еще не означает, что первый подойдет лучше.


      1. plm
        09.02.2017 20:53
        -5

        Ну, в таких условиях дата выпуска (не думаю, что это тупо дата создания файла) — это единственный способ определить, что новее — «5.8.400.12378 от Microsoft или 0.9.63.377 от производителя», и этот единственный способ Микрософт решила убить. Логично, чо.


        1. mayorovp
          09.02.2017 22:17
          +4

          Пожалуйста, прочитайте пост еще раз. Или комментарии к нему.


    1. DMGarikk
      09.02.2017 16:04
      +2

      Версии у сторонних производителей могут быть совершенно любых конфигураций
      я видел например (помоему у интела)
      Старая версия: 5.3.1765, новая версия 2.3.5.5.4765… и дальше уже идёт 2.3

      и такое очень часто встречается


    1. rubero
      09.02.2017 16:23

      Видимо потому что нумерация драйверов у каждого производителя разная и заставлять их переходить на общую не было возможности.


    1. DSolodukhin
      09.02.2017 16:23
      +2

      Видимо, потому, что Microsoft и производитель оборудования могут использовать различную нумерацию версий. Например, у вас есть два драйвера: Microsoft версии 2.3.45 и Uncle Lao версии 2010.02.15. Какой из них новее, если первый использует семантическое версионирование, а второй — дату в качестве версии?


  1. EighthMayer
    09.02.2017 15:56
    -14

    Целая статья из одного «забавного факта»? Серьёзно?


  1. tmin10
    09.02.2017 16:03
    +13

    Эм, странный костыль. Лучше бы учитывали вендора драйвера и если есть драйвер не от МС, предпочитали бы его…


    1. mayorovp
      09.02.2017 16:04
      +6

      Это бы помешало другим производителям делать "дефолтные" драйвера, а Microsoft — выпускать свое железо.


      1. tmin10
        09.02.2017 16:09
        -4

        Так если все драйвера будут древние, то любой сторонний сразу же перекроет драйвер от МС тоже.


      1. KodyWiremane
        10.02.2017 09:54
        +1

        Можно приоритизировать драйвера от Microsoft только для устройств с мелкомягким Vendor ID.


        1. dmitry_dvm
          13.02.2017 10:17
          -1

          А можно просто использовать трюк с датой, как они и сделали. Самый простой и понятный способ из всех, которые озвучили в каментах.


    1. Alexsandr_SE
      09.02.2017 17:30
      +1

      Даже на одно устройство могут подходить драйвера разных вендоров. Реальный зоопарк драйверов весьма не редкость. иногда версия совпадает и вендор тоже и язык, а драйвера разные. Иногда драйвер от МС предпочтительнее.


      1. Fagot63
        09.02.2017 23:04

        А иногда в более свежем драйвере что то сломали и приходится уговаривать шиндус, установить не подходящий по её скромному мнению.


        1. w1nterfell
          10.02.2017 18:25

          яркий тому пример — драйвера Broadcom для windows 10. в версии 6.хх соединение стабильно отваливается каждую пару минут, для нормальной работы приходится откатываться на старую 5.100.245


          1. foxmuldercp
            11.02.2017 00:41
            -1

            Не сыпьте соль. у меня на ноуте на 4м поколении интеля кор и 5 «вротком» стоит. После двух дней плясок и сваливания в 1 мегабит — плюнул и воткнул внешний длинк, года три свистит без проблем, все никак не переставлю внутренний


          1. Fagot63
            11.02.2017 11:40

            Ладно когда вообще работает. Может просто редкое сочетание желаза вызывает частичную несовместимость. У меня wi-fi свисток на двух последних версиях драйверов вообще не заводится. Как прошли тестирование не понятно(если оно было вообще).


    1. Sadler
      09.02.2017 22:05
      +1

      Достаточно было добавить флаг приоритета. По умолчанию у всех драйверов без флага приоритет = 0, у системных = -1. Ну, и позволить юзеру этот флаг менять, конечно.


  1. ivkomn
    09.02.2017 16:07
    -32

    На домашнем ноуте бубунта 16года LTS
    На рабочем виндоус и «код» пишу в виртуалке. Думаю и на рабочий поставить бубунту, если не уволюсь.

    Предмет статьи -, конечно, неТръу и ахтунг. По дате сортировать объекты...., набор полей
    version
    custom/native
    доступны только брахманам, но все разроботчике виндоус — вайшьи, видимо.


    1. evil_random
      09.02.2017 19:27
      +12

      Внимание, программист в посте!


    1. tyomitch
      10.02.2017 01:22
      +17

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


  1. nevergonnagiveyoup
    09.02.2017 16:24
    +2

    Это не баг, это фича!


  1. juniorCo
    09.02.2017 16:24
    -8

    Я не специалист по безопасности, но могу предположить, что это может сказаться на безопасности системы.


    1. Anarions
      09.02.2017 16:28
      +4

      Не вижу такого сценария.


      1. tmteam
        10.02.2017 07:06
        -1

        Важно другое — видит ли этот сценарий кто либо другой.


        1. Charg
          10.02.2017 15:30
          +1

          Ну так если кто видит — милости просим в комментарии.


          А то "уязвимость есть, но я вам о ней не скажу" можно говорить вообще о всём.


  1. zuborg
    09.02.2017 16:30
    +12

    Если стояла задача «использовать в первую очередь сторонние драйверы вместо встроенных», то решать её через сравнение дат — ну явный костыль. В конце концов — кому как не Майкрософту знать, что вот эти вот драйвера встроенные, значит нечего их использовать, если есть драйвера от производителя, вне зависимости от даты оных.


    1. nikitos_2002
      09.02.2017 17:04
      -1

      Это защита от попытки драйверов, написанный ранее 2006 года для Windows XP.


      1. Igor_34_rus
        14.02.2017 11:45

        Опять же ничего не мешает отсечь все драйверы ранее этой даты, а потом выбирать по признаку свой/чужой и в конце по дате.


        1. binkaminka
          15.02.2017 08:34

          Опять же ничего не мешает отсечь все драйверы ранее этой даты, а потом выбирать по признаку свой/чужой и в конце по дате.


          А зачем?


          1. Igor_34_rus
            16.02.2017 16:14

            Я писал ответ в ветке комментариев. Если не сложно поднять вверх гала можете найти ответ на свой вопрос.


    1. Alexeyslav
      09.02.2017 17:43

      И как же это знать когда не только они пишут «встроенные» драйвера, их много версий под разные системы. Кто будет актуализировать список «своих» драйверов, и какова гарантия отсутствия ошибок при составлении этих списков? Проще при обновлении присваивать файлам атрибут, который гарантировано есть на всех системах… и это даже не подпись файла и не какое-то там внутреннее свойство файла, которое могут забыть установить при компиляции файла а вполне стандартный атрибут, который можно применить безусловно и массово не нарушая цифровой подписи файла! Если привязаться к подписи файла, то в будущем она может сменится из-за просрочки или патентных войн и тогда гарантированы проблемы с драйверами для систем которые не в курсе смены подписей и т.д. и т.п. надо будет сначала обновить системы, потом драйвера к ним подсовывать чтобы чего такого не вышло.


      1. boblenin
        09.02.2017 18:27
        +3

        Зачем списки? Драйвера подписываются, по-подписи вполне можно понять что драйвера от M$.

        > Если привязаться к подписи файла, то в будущем она может сменится из-за просрочки или патентных войн и
        > тогда гарантированы проблемы с драйверами для систем которые не в курсе смены подписей и т.д. и т.п.
        > надо будет сначала обновить системы, потом драйвера к ним подсовывать чтобы чего такого не вышло.

        Не очень понятно о чем вы. Новая версия OS которая не знает о своих собственных драйверах?


        1. Kobalt_x
          09.02.2017 19:35
          +1

          Драйвера от Ms устройств отдельной подписью подписывать?


          1. boblenin
            09.02.2017 19:55

            Не понял вопроса. Я так понимаю из вашего вопроса, что вы предполагаете их подписывать теми же подписями, что есть у производителей железа, верно?


        1. Alexeyslav
          10.02.2017 10:59
          -1

          Конечно не знает. С чего бы операционке знать где её драйвера а где от производителя? Темболее что реальное происхождение драйвера может принимать очень причудливые формы.
          Операционка не делить драйвера на свои и чужие, более того до формирования установочного образа состав драйверов может быть неизвестен, в него могут быть включены драйвера от производителя, самописные и т.д.
          И что кстати делать с драйверами которые были написаны ДО ТОГО как было принято это решение?

          Можно, конечно, подписать все драйвера после того как они будут интегрированы в установочный образ и таким образом определять свой/чужой исключительно по подписи но этот метод ещё сильнее попахивает костылями и на корню дискредитирует всю систему цифровой подписи.


          1. boblenin
            10.02.2017 16:54

            > более того до формирования установочного образа состав драйверов может быть неизвестен, в него
            > могут быть включены драйвера от производителя, самописные и т.д.

            Вполне допускаю, что вы можете быть правы. И если это так, то отдел контроля качества занимается совершенно не понятно чем. Ну а вместе с этим отделом и отдел сертифицирования оборудования.

            > И что кстати делать с драйверами которые были написаны ДО ТОГО как было принято это решение?

            Не очень понятно какое «это» решение. Поясните пожалуйста.

            > Можно, конечно, подписать все драйвера после того как они будут интегрированы в установочный
            > образ

            Либо я либо вы что-то не улавливаем. Я не вижу сложности в том, что драйвер переподписывается либо на поздних этапах тестирования, либо сразу по получении от разработчика (своего сотрудника или разработчика работающего на производителя железа). Никак не пойму где вы нашли загвоздку.

            > и таким образом определять свой/чужой исключительно по подписи но этот метод ещё сильнее
            > попахивает костылями и на корню дискредитирует всю систему цифровой подписи.

            Почему? Я что-то разработал — подписываю. Кто-то другой это протестировал на совместимость — подписывают своей подписью. Получатель решает какой подписи доверять и в каком порядке. В чем костыль? В чем дискредитация?


            1. Alexeyslav
              12.02.2017 18:30

              Решение об изменении алгоритма приоритета драйверов.

              Подпись она вообще не для этих целей, из пушки по воробьям стрелять. И потом, что делать при необходимости отозвать подпись? А срок действия подписи закончится, что делать? Там если копнуть поглубже, можно и других проблем накопать, и кто знает сколько их там ещё возникнет.


              1. Taciturn
                12.02.2017 19:22

                Привязку можно делать не только к сертификату с каким-то определённым серийным номером, а к заданному CN. В этом случае никаких проблем с отзывом и перевыпуском не будет.


              1. boblenin
                12.02.2017 23:49

                > Решение об изменении алгоритма приоритета драйверов.

                Если речь о том менять то, что есть то я сторонник: «работает — не трогай». Но если речь о выборе альтернативы, то я считаю подпись — лучше.

                > Подпись она вообще не для этих целей, из пушки по воробьям стрелять.

                У вас очень хорошие эпитеты. Но никаких дополнительных сведений вы этими предложениями не сообщили. Самое главное вы делаете уже 4-е утверждение и никак не обосновываете. Можете ответить на вопрос «почему»?

                > А срок действия подписи закончится, что делать?

                Во-первых подписи для драйверов уже используются и сроки у них уже заканчиваются переодически. Мне кажется вы видите проблему там, где ее нет. OS — это не статически зафиксированый набор артефактов. Это еще и обновления.

                > Там если копнуть поглубже, можно и других проблем накопать, и кто знает сколько их там ещё
                > возникнет.

                Согласен с вами. Есть даже специальный термин для того, о чем вы говорите. Он не полностью соответствует описаной проблеме, но очень близок. Premature Optimization.


  1. leotsarev
    09.02.2017 16:40
    +2

    The old new thing — неофициальный блог.


    1. tyomitch
      10.02.2017 01:26

      Это вообще не «блог Microsoft», это личный блог одного конкретного сотрудника Microsoft, в котором он посты про «недокументированные особенности» Windows перемежает заметками о баскетбольных матчах, об оперных представлениях, и о проделках своих малышей.


  1. dkukushkin
    09.02.2017 16:50
    +2

    У них же есть источник драйверов — просто пометить все стандартные драйвера специальным флагом. При обновлении проверять установлен этот флаг или нет. Нафига дата?


    1. Zibx
      09.02.2017 16:59

      Сделать выбор вендора написавшего драйвер. Использовать самый новый от этого вендора. При установке стороннего драйвера спрашивать у пользователя: «Обнаружен новый драйвер запоминающего устройства Laodkuwauh, использовать его?»


    1. black_semargl
      10.02.2017 12:12

      Ну вот специальную фиксированную дату и использовали в качестве флага.


  1. FaceHoof
    09.02.2017 17:04
    +3

    Эта новость подняла мне самооценку. Благодаря ей я понял, что даже опытные программисты творят фигню и что мои велосипеды из костылей не самые страшные =)


    1. Hellsy22
      09.02.2017 20:19
      +1

      А в чем, собственно, фигня? Я не могу представить ни одного сценария, при котором это решение приводило бы к проблемам. Да, наверное потенциально лучше было бы завести отдельное поле, помечающее «дефолтные» драйвера. Однако, все познается в сравнении. В линуксе, к примеру, подобных костылей нет, потому что там предпочтения нового драйвера реализовано вручную — в смысле, старый модуль нужно ручками занести в блэклист.


      1. Dromok
        10.02.2017 07:21

        В том, что это откровенный костыль. Вот в чём фигня. А так да, всё ок.


        1. Hellsy22
          10.02.2017 07:38
          +1

          Обратная совместимость без костылей в крупных проектах не встречается, так что, полагаю, если «костыль» отлично работает и не доставляет проблем ни пользователям, ни разработчикам, то можно считать его «технологическим крепежом».


          1. FaceHoof
            10.02.2017 09:17

            если «костыль» отлично работает и не доставляет проблем ни пользователям, ни разработчикам, то можно считать его «технологическим крепежом».

            Очень интересная мысль. Я её запомню, благодарю =)


        1. Ckpyt
          10.02.2017 09:34

          http://ithappens.me/story/10498


  1. Jogger
    09.02.2017 17:06

    Главный вопрос — зачем в принципе автоматически обновлять драйвера? Это же маразм. Я не раз и не два сталкивался с ситуацией, когда более старый драйвер работает быстрее и стабильнее, чем более новый. Если драйвер работает хорошо и быстро — зачем его обновлять? Кроме ухудшения эта ситуация ничего не принесёт.
    Особенно это справедливо для драйверов, подходящим нескольким устройствам, там выпустили в серии новое устройство — обновили драйвер, то что он с самым старым устройстовом в линейке станет работать нестабильно — никто же не проверит.


    1. amarao
      09.02.2017 17:13
      +4

      Если только в драйвере нет уязвимости.


      1. Jogger
        09.02.2017 17:30

        Ну уязвимости да, патчить стоит. Но и в этом случае идеальным будет обвноление виндовс, которое будет проверять версию установленного драйвера, и обновлять только если она в списке уязвимых. То есть должно иметь место решение проблемы, а не обновление «на всякий случай, просто потому что новее».


        1. ioannes
          09.02.2017 18:28
          +1

          Древняя мудрость:
          Не обновляйте софт, если текущие баги вас устраивают.


      1. keydon2
        10.02.2017 09:58

        Так она и после обновления может появиться.
        Например предложение обновиться с 7 до 10 чем не уязвимость?


    1. BigD
      10.02.2017 10:09

      а откуда Вы знаете, что новый драйвер не будет работать, скажем быстрее?


  1. EugeneButrik
    09.02.2017 17:11
    -3

    А нельзя было бы для «своих», встроенных драйверов устанавливать их дату разработки, например как:
    ДатаРазработки - 1000 лет
    Никто из нормальных производителей не укажет 11 век в качестве даты разработки своего драйвера.
    А для того чтобы эта дата нормально отображалась для пользователя вместо «21.06.2006», добавить условие вида:
    Если ДатаРазработки < 01.01.1900 Тогда
    ДатаРазработки = ДатаРазработки + 1000 лет

    Конечно ещё худший говнокод, но хоть вопросов не вызывает :)

    Либо как вариант, вообще не отдавать пользователю «костыльную» «заниженную» дату разработки встроенных драйверов (кому она вообще нужна).


    1. ollisso
      09.02.2017 18:06
      +1

      Чем это отличается от текущего варианта, кроме разных усложнений?
      Ведь фактически, для виндовса Vista+, как раз таки 21.06.2006 является «началом эпохи». т.е. фактически, не может быть ни одного драйвера, который написан до 21.06.2006.


      1. EugeneButrik
        09.02.2017 18:25

        Тем, что мы «делаем» дату разработки встроенного драйвера заведомо наименьшей среди всех возможных вариантов этих дат, среди всех производителей. Ведь вполне возможна ситуация когда производитель переписал свой драйвер для XP под Висту, изменил версию, а дату не изменил, оставив какое-нибудь прежнее значение вроде 01.02.2003. Или драйвер был разработан в день выхода Висты, т.е. дата та же — 21.06.2006 (хрен знает как PnP отрабатывает эту ситуацию и как выбирает драйвер «посвежее»).
        При этом мы имеем возможность «сохранить» истинную дату разработки драйвера (на всякий случай), «закодировав» её этим прибавлением 1000 лет к возрасту, что позволяет путём нехитрых преобразований всё-таки извлечь её. И всё это делается достаточно прозрачным и непротиворечивым для механизмов системы Plug and Play способом. PnP пофигу на то, что драйвер датирован 11 веком, он просто старше и всё. Вне системы PnP ясно же, что это бред и это своего рода «сигнал» для того, чтобы прибавить заранее оговоренные 1000 лет и получить-таки «нормальную» дату разработки встроенного драйвера.
        Более функциональный костыль :)


        1. alan008
          09.02.2017 21:02
          +1

          Вы наверно удивитесь, но типы данных, в которых хранится дата, не всегда хорошо дружат с понятием «1000 лет». Тут на периоде 100 лет уже не раз были проблемы типа Y2K


          1. EugeneButrik
            10.02.2017 17:29

            Вы наверное удивитесь, но скорее всего след тянется к информации, содержащейся в INF-файле. То есть типом данных, в котором в данном конкретном случае хранится дата, является строка. А вы, как я полагаю, понимаете, что там можно написать хоть ерунду вида «1000 лун от сотворения мира» :)


            1. tyomitch
              10.02.2017 19:17
              +1

              То, что там дата хранится в виде строки, совершенно не означает, что там можно указать любую строку.
              Скорее всего, парсер INF-файлов не правили уже лет двадцать.


              1. EugeneButrik
                10.02.2017 19:24
                +1

                Ну как бы то, что бессмысленно указывать там какие-либо другие строки без изменений механизмов считывания этих самых строк системой Plug and Play — это, на мой взгляд, очевидно.


            1. alan008
              13.02.2017 11:24

              В INF-файле конечно можно что угодно написать. Но есть еще какой-то код, который эти файлы читает и пытается по датам сортировать. И либо надо учить этот код понимать, что «1000 лун от сотворения мира» это вот самая ранняя дата и есть, либо (если не трогать этот код) нужно эту «древнюю» дату представлять в формате, совместимом с форматом, с которым этот код уже умеет работать. И скорее всего данный код НЕ СМОЖЕТ одновременно хорошо работать с датами вида «01.01.1001» и «01.01.2001», т.к. форматы представления дат в памяти (не строковые) очень ограниченные «by design». Например, «в программах для хранения UNIX-времени используется целочисленный знаковый тип. 32-битные числа со знаком могут ссылаться на моменты времени от пятницы 13 декабря 1901 года 20:45:52 до вторника 19 января 2038 года 03:14:07 включительно». См. UNIX-время.


              1. mayorovp
                13.02.2017 11:37

                Вот только этот код — он один и он свой!


        1. tyomitch
          10.02.2017 01:28

          дата та же — 21.06.2006 (хрен знает как PnP отрабатывает эту ситуацию и как выбирает драйвер «посвежее»).

          В посте как раз и объяснено, как PnP отрабатывает эту ситуацию: выбирает по номеру версии.


          1. EugeneButrik
            10.02.2017 02:25

            Да, спасибо. Не заметил.
            Вот только небольшое уточнение — в посте говорится о том, что при совпадении дат разработки драйверов дальше он выбирает не по номеру версии, а по дате создания файла, а уж если и они совпадают, тогда уже сравниваются «номера версии».

            Всем драйверам во всех версиях Windows присваивается стандартная дата, которая соответствует дате выхода Vista RTM. Эта фиксированная дата не зависит от версии драйвера или реальной даты создания файла. В то же время обновляется номер версии драйвера — это следующий фактор, который учитывается при выборе драйвера, после даты создания файла.
            Или под «датой создания файла» Ализар имел в виду всю ту же «дату разработки». Хз.

            Так или иначе, ума не приложу как этот PnP может сравнивать что-нибудь вида «6.1.7600.16385» с чем-нибудь типа «6.1-rc2».


            1. tyomitch
              10.02.2017 02:35

              Или под «датой создания файла» Ализар имел в виду всю ту же «дату разработки». Хз.

              Если бы alizar не переврал переводимый текст, вот это была бы новость.
              В первоисточнике:
              My colleague Zac explains: When the system looks for a driver to use for a particular piece of hardware, it ranks them according to various criteria. If a driver provides a perfect match to the hardware ID, then it becomes a top candidate. And if more than one driver provides a perfect match, then the one with the most recent timestamp is chosen. If there is still a tie, then the one with the highest file version number is chosen.
              Т.е. учитываются три фактора: hardware ID, дата и версия.

              Так или иначе, ума не приложу как этот PnP может сравнивать что-нибудь вида «6.1.7600.16385» с чем-нибудь типа «6.1-rc2».

              Номера версий в Windows всегда состоят из четырёх числовых компонент, от 0 до 65535 каждая, и сравниваются просто как 64-битные числа.


              1. EugeneButrik
                10.02.2017 03:00
                -1

                And if more than one driver provides a perfect match, then the one with the most recent timestamp is chosen. If there is still a tie, then the one with the highest file version number is chosen.
                Что буквально означает то, что Windows плевать на то, что драйвер по своей версии может быть древним как говно мамонта, если дата создания его файла каким-либо образом оказалась свежее, чем дата создания другого драйвера.
                Браво, Microsoft!


                1. tyomitch
                  10.02.2017 03:18

                  Используется не дата создания его файла, а дата разработки, вшитая в INF-файл.
                  Её, конечно, тоже возможно отредактировать; но если у вас в системном каталоге могут неожиданно для вас редактироваться файлы, то возможность использования не самых свежих драйверов — это наименьшее, что должно вас волновать.


                  1. EugeneButrik
                    10.02.2017 03:49

                    Спасибо за разъяснения. То есть, если я правильно понял, то вся информация по которой PnP определяет какой драйвер применять содержится исключительно в полях INF-файла, который сопровождает каждый драйвер.
                    В таком случае вообще не понятно зачем надо было устраивать эти «изящные» танцы с датами (которые их уродуют), если можно было всё-таки сделать всё по-нормальному, добавив хотя бы в те же INF-файлы встроенных драйверов какое-нибудь специальное поле-метку для PnP.
                    А так всё равно остаётся ненулевая вероятность того, что какая-нибудь «фирма» выпустит драйвер у которого в INF-файле дата разработки будет 21.06.2006 (или ещё раньше), а в качестве версии число меньшее, чем число, обозначающее версию встроенного драйвера. Концепция «встроенные драйвера имеют меньший приоритет» в таком случае проваливается.
                    В итоге получается, что по факту версия драйвера понятие второстепенное относительно понятия даты его разработки (что мягко говоря не прибавляет ему смысла), сами эти даты разработки как минимум для встроенных драйверов — вообще фикция для работы костыля, а сам этот костыль определения системой PnP приоритета использования сторонних драйверов всё равно получается полурабочим.

                    Браво Microsoft! :)


                    1. qwerty1023
                      10.02.2017 09:37
                      +1

                      Я вот вообще не понимаю в чем проблема, как по мне хорошее решение ориентироваться на дату вшитую в инф-файл.

                      А так всё равно остаётся ненулевая вероятность того, что какая-нибудь «фирма» выпустит драйвер у которого в INF-файле дата разработки будет ...


                      Так же есть ненулевая вероятность неправильного прописывания любых идентификаторв, версии и т.п., но дата это имхо самое стандартное и очевидное поле, по которому можно хоть как-то ориентироваться в «свежести» драйверов. Объясните, в чем именно «костыльность» решения?


                      1. EugeneButrik
                        10.02.2017 12:13
                        +1

                        И как ориентироваться по «стандартному и очевидному полю», если оно может быть изменено / не изменено любой из «фирм» как её индусам заблагорассудится? Вон Microsoft, например, всем встроенным драйверам вне зависимости от их свежести / тухлости фигачит эту дату как одну и ту же — 21.06.2006. И всё для того чтобы они имели меньший приоритет при выборе системой PnP… дальше продолжите сами.
                        В чём заключается «костыльность»? Хм… я даже не знаю… может во всём?

                        Кстати, никакого «стандартного и вшитого поля» нет. Эта дата тире критерий отбора драйвера всего-лишь часть строки в текстовом файле с расширением *.inf, вида:

                        DriverVer=06/21/2006,10.0.14393.0
                        которая просто считывается PnP. То есть там скорее всего вообще никакой проблемы добавить какую угодно «метку встроенности» драйвера не было.


                        1. tyomitch
                          10.02.2017 13:18

                          melman701 ниже подвёл итог:

                          Ввод дополнительного поля приоритета решает проблему. <...> Но этот метод не имеет преимущества перед тем, что использует Microsoft, кроме того, что не выглядит костылем. При этом он требует дополнительное поле.


                          1. EugeneButrik
                            10.02.2017 13:29
                            +1

                            Ввод дополнительного поля приоритета решает проблему. <...> Но этот метод не имеет преимущества перед тем, что использует Microsoft, кроме того, что не выглядит костылем. При этом он требует дополнительное поле.
                            … что и требовалось доказать :)

                            Кстати, «не имеет преимущества, кроме...» = «имеет преимущество»


                            1. melman701
                              10.02.2017 14:28

                              Формулировка так себе, но сути это не меняет. Решение изящное по 3 причинам:
                              1) Решает поставленную задачу.
                              2) Не требует изменения устоявшихся стандартов и форматов файлов.
                              3) Позволяет делать разные хитрые штуки. Как в моем примере ниже.
                              А то что я, как разработчик, могу с легкостью заставить систему использовать мой драйвер, путем изменения даты — это +.


                              1. EugeneButrik
                                10.02.2017 17:40

                                2) Не требует изменения устоявшихся стандартов и форматов файлов.
                                Не сказал бы что там прям уж такие жёсткие и устоявшиеся стандарты и форматы файлов (например, у некоторых драйверов от Logitech версии состоят из 3, а не 4 частей и т.д.). Опять таки с той же датой разработки сама Microsoft «играется» как хочет.
                                3) Позволяет делать разные хитрые штуки. Как в моем примере ниже.
                                А то что я, как разработчик, могу с легкостью заставить систему использовать мой драйвер, путем изменения даты — это +.
                                Вот только «откатить» подобное «насилие» вы скорее всего уже не сможете. См. пример подобной «хитрой штуки» в моём комментарии ниже.


                        1. qwerty1023
                          10.02.2017 14:37
                          +1

                          И как ориентироваться по «стандартному и очевидному полю», если оно может быть изменено / не изменено любой из «фирм» как её индусам заблагорассудится?


                          Любое поле может быть изменено как заблагорассудится разработчику драйвера. Вот присваивать драйверу атибуты «встроенный» или сторонний — это точно костыль! А использование даты это принцип ранжирования всех доступных ОС драйверов (например при установке драйвера ОС натравили на папку, в которых их 10 штук, как тут выбрать лучший?). И сама ОС очень элегантно пользуется этой же системой ранжирования для установки рейтинга для своего драйвера.

                          У меня создается впечатление, что все злятся на Майкрософт за такое просто и элегантное решение, поэтому называют костылем :)


                          1. EugeneButrik
                            10.02.2017 17:13

                            Любое поле может быть изменено как заблагорассудится разработчику драйвера.
                            Вот именно. Поэтому логично что-либо менять исключительно в «своих», подконтрольных тебе же, как разработчику, драйверах (что Microsoft, впрочем, и сделала). То есть не использовать «общие» поля (тем более имеющие весьма косвенное отношение к приоритету использования этого драйвера), а маркировать уникальными метками, присущими только этим «обособляемым» драйверам.
                            Вот присваивать драйверу атибуты «встроенный» или сторонний — это точно костыль!
                            Хм… почему костыль-то? Эта прямое решение задачи, которую Microsoft себе же и поставила — пометить «встроенные» драйвера для понижения приоритета их использования.
                            … например при установке драйвера ОС натравили на папку, в которых их 10 штук, как тут выбрать лучший?
                            Ну, если завтра какой-либо производитель напишет драйвер и случайно в его INF-файле поставит что-нибудь вроде 11.02.3017 (ну вот дрогнула у хирурга рука :) ), то этот драйвер будет «лучшим» ближайшие 1000 лет и если в нём надо будет залатать что-нибудь, то можно хоть «запатчится» в доску, а толку будет ноль, пока не поставят новому драйверу дату, например, 12.02.3017, ну или 11.02.3017, но с более свежей версией (так и пойдёт эта ерунда дальше, уже не остановишь :) ) Элегантно.
                            У меня создается впечатление, что все злятся на Майкрософт...
                            А у меня создаётся впечатление, что многие опять зачем-то тащат сугубо технический вопрос в какую-то эмоциональную плоскость из разряда злятся / не злятся, любят / не любят, Microsoft / Apple и тому подобное :)


                            1. qwerty1023
                              10.02.2017 17:53
                              +1

                              Так главная «изюминка» информации — это принцип ранжирования всех доступных ОС драйверов, свой-чужой это только часть процесса, причем далеко не самая важная.

                              Ну, если завтра какой-либо производитель напишет драйвер и случайно в его INF-файле поставит что-нибудь вроде 11.02.3017...


                              И ничего не случится. Он не получит цифровую подпись драйвера от Майкрософт и все на этом. Такой драйвер не установится просто так. Вы упускаете из виду всю картину, а зациклились на «костыле» для «своих» драйверов. Если же пользователь на столько умный, что сможет установить такой драйвер без подписи, то все, о чем здесь пишут, просто не имеет никакого значения.


                              1. EugeneButrik
                                10.02.2017 18:11

                                Он не получит цифровую подпись драйвера от Майкрософт и все на этом.
                                Почему? Не получит на основании того, что дата разработки не соответствует действительности? ;)
                                А если я, как разработчик скажу, что это в свою очередь у меня уже такое элегантное решение назрело, которое даёт наивысший приоритет моему драйверу именно этой версии (ну хочется мне так)? Неужели Microsoft скажет что-нибудь вроде: «Вам, в отличие от нас, такие элегантные костыли решения делать низя и не спорьте»? :)


                            1. melman701
                              10.02.2017 21:15

                              Сегодня, ради интереса изменил дату в драйвере к девайсу. Плюсанул день. Попробовал накатить. Получилось. Драйвер обновился. Я еще плюсанул день и попробовал обновить, но ОС сказала, что более новая или такая же версия уже установлена. Следовательно, можно предположить, что система берет дату изменения файла.


                              1. tyomitch
                                11.02.2017 01:26

                                Такая экспериментальная методология сильно напоминает старый анекдот.


    1. sand14
      16.02.2017 10:40

      del.


  1. kroketmonster
    09.02.2017 17:19
    +5

    Ок, почему тогда нельзя заменить стандартную дату на пометку типа «этот драйвер от майкрософт»? Лучше уж совсем не видеть даты чем видеть торчащий костыль понятный только индусам из МС.


    1. EugeneButrik
      09.02.2017 19:13
      +1

      Скорее всего, потому что поле «Дата разработки» не может быть ни чем иным кроме как числом, которые вне зависимости от его значения всё-равно «воспринимается» как дата.
      Например, «поставив» туда «0» или даже ничего не поставив, вы всё-равно получите какую-то дату (скорее всего начало «Unix Epoch» — 01.01.1970).
      Поэтому «пометить» можно только числом-датой, что и сделали — «пометили» датой 21.06.2006.


      1. gisha
        10.02.2017 09:59
        +1

        Так в чем проблема «метить» двумя полями? Флагом с вендором и датой. Усё, никаких веселых костылей.


        1. black_semargl
          10.02.2017 12:16

          Непредсказуемо, как сторонний вендор заполнит это поле.


          1. mayorovp
            10.02.2017 12:32

            Сторонний вендор заполнит это поле так, чтобы их драйвер работал.


    1. tyomitch
      10.02.2017 01:35

      Лучше уж совсем не видеть даты чем видеть торчащий костыль

      До этой статьи вы хоть раз смотрели на «дату разработки драйвера»? Я — нет.
      Этот «торчащий костыль» на самом деле спрятан глубоко под капотом, куда не полезет никто, кроме «индусов», которые знают, в чём дело.


  1. Loki3000
    09.02.2017 17:58

    А почему нельзя явным образом указать используемый драйвер?


    1. evil_random
      09.02.2017 19:29

      Потому что PnP же.

      Plug and Play (сокр. PnP), дословно переводится как «включил и играй (работай)» — технология, предназначенная для быстрого определения и конфигурирования устройств в компьютере и других технических устройствах. Изначальная технология называлась NuBus и была разработана Western Digital. Шина NuBus позволяла добавлять устройства и настраивать их программными средствами. Технология PnP основана на использовании объектно-ориентированной архитектуры, её объектами являются внешние устройства и программы. Операционная система автоматически распознает объекты и вносит изменения в конфигурацию абонентской системы.


      Ваш капитан.


      1. Loki3000
        09.02.2017 21:08

        Это все понятно, но сейчас, по сути, выбирается рандомный драйвер. Так чем хуже будет вариант если пользователя спросят какой драйвер использовать? Или хотя бы намекнут, что их больше одного.


        1. tyomitch
          10.02.2017 01:39

          Для 99.9% пользователей Windows запрос «какой драйвер использовать?» — это клингонщина, и они точно так же бы тыкали наугад, только ещё бы и техподдержку донимали звонками «у меня тут что-то непонятное вылезло, помогите!»


  1. arthi7471
    09.02.2017 19:51
    +1

    Вин10 однажды раскалила мой пукан до температуры солнца. Прилетает обновление и автоматом устанавливается какой-то вимикро драйвер хотя у меня вообще А4 вебка. В результате камера отваливается. Снёс этот вимикро вернул всё в зад всё снова взыграло но! При каждом обновлении винда по прежнему настойчиво притягивает этот долбаный вимикро! Ну нет у меня в железе никакого вимикро!


    1. ZUZ
      09.02.2017 20:24

      Уууууу, этот вимикро — это отдельный видео сервер ддя аеб камеры — они поломали до половинв всех веюок! Была статья эпичная нп гигтаймс


      1. alexkunin
        09.02.2017 20:34
        +9

        Похоже, этот драйвер вам еще и клавиатуру поломал.


    1. grvelvet
      09.02.2017 20:30
      +1

      Можно поставить запрет на установку дров. Очевидно винда неверно идентифицирует камеру, следовательно и тащит чужой драйвер.


    1. Andrusha
      09.02.2017 23:58

      Держите, это должно помочь с охлаждением :)


  1. NikitaE
    10.02.2017 01:56
    -1

    Костыль святого Грааля, я наконец-то нашёл тебя!


    А вообще забавно, что Майкрософт не догадались решить проблему самым здравым способом — предоставить пользователю возможность выбора. Грубо говоря, при установке дров на устройство спрашивать "заменять драйвер на свежий, если такой появится в Windows update?"


    1. tyomitch
      10.02.2017 02:45
      +3

      Какой именно «возможности выбора» вам не хватает? После установки кастомного драйвера вам не хватает вопроса «снести этот драйвер при первой же возможности, когда в Windows Update обновится стандартный драйвер»?

      Напоминаю, что вы в любой момент можете зайти в Device Manager и выбрать вместо любого драйвера любой другой. Этой возможности выбора недостаточно?


      1. NikitaE
        12.02.2017 11:40

        Я хорошо знаком с этой возможностью и при необходимости ею пользуюсь. Но назвать ее интуитивной язык как-то не поворачивается. К тому же, Win10 имеет обыкновение самостоятельно заменять выбранный драйвер на свой.


        1. aikixd
          12.02.2017 14:19

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


          1. NikitaE
            12.02.2017 14:42

            Вы, безусловно, правы. И именно поэтому система должна не пытаться их перемудрить и самостоятельно заменять драйверы по какой-то нелинейной логике, а предлагать юзеру решать самому.


  1. Tomasina
    10.02.2017 02:37
    -2

    Костыль, возведенный в ранг идола.


  1. LonerD
    10.02.2017 09:52

    С датами заморочились, но не учли простой факт, что иногда лучше ставить старый стабильный драйвер, входящий в дистрибутив Windows, чем новый фирменный, работающий с багами.


    1. mayorovp
      10.02.2017 09:55
      +1

      "Новый фирменный" можно же просто не ставить :)


  1. DenomikoN
    10.02.2017 09:52

    Я тут подумал а смог бы я сделать лучше/проще/надежнее и понял что вряд ли. Много вариантов предложили в комментариях, но ни один не решает всех возможных проблем и сценариев, либо все так же скатывается к проверке даты.
    Семь раз отмерь — один отрежь.


  1. melman701
    10.02.2017 11:37
    +2

    Так все же костыль или изящное решение? Подытожим.
    Система работает так, что всегда будет использовать драйвер от производителя, если он есть.

    • На версию драйвера полагаться система не может, т.к. с версиями полная неразбериха даже у производителей.
    • Приоритет по поставщику драйвера выглядит правильным. Но такой подход не сработает, если в составе ОС идет драйвер, поставщиком которого является не Microsoft. Может быть такое или нет, я не знаю.
    • Ввод дополнительного поля приоритета решает проблему. Драйвера поставляемые с ОС имеют приоритет ниже, чем у драйверов производителя оборудования. Но этот метод не имеет преимущества перед тем, что использует Microsoft, кроме того, что не выглядит костылем. При этом он требует дополнительное поле.

    Таким образом, используемый Microsoft способ выглядит самым оптимальным. Я бы даже сказал, что он очень хорош!
    Рассмотрим пример:
    Вы установили ОС Windows и для некоторого оборудования, например, Wi-Fi был установлен драйвер из состава ОС.
    Далее вы устанавливаете драйвер от производителя Wi-FI датированный 16.02.2016. Система начинает использовать этот драйвер. Но в мае 2016 года в драйвере обнаружена серьезная уязвимость или проблема и производитель ее не закрывает. При этом драйвер из состава ОС либо не имеет этой проблемы, либо она закрыта в обновлении. Тогда Microsoft может изменить в своем драйвере дату на 17.02.2016. Система начнет использовать этот драйвер и проблема будет решена.
    Позже производитель может выпустить драйвер с исправлением, датированный позже, чем 17.02.2016.


    1. nnovichOK
      15.02.2017 21:41
      +1

      Способ хорош? Не имеет недостатков, кроме как плохо выглядит? Серьёзно? Вы, случаем не из MS? И этот комментарий заплюсован?

      Давайте я подскажу поверхностные проблемы этого подхода:

      • Крайне неожиданно, но юзер не может узнать дату релиза драйвера из предназначенного для этого меню. Удивительная логичность ситуации: пункт «Дата разработки» есть, а реальной даты нет. Не смущает?
      • Хуже того (и да, достойно отдельного пункта) «дата» вводит в заблуждение неподготовленного человека. Этот «атата» можно исправить независимо от предыдущего пункта, например, очередным костылем: видишь специальную дату, отображай «нет инфы» или что-нибудь поинтересней в соответствующем поле
      • Это решение очень плохо поддерживаемое. Разработчик не может довериться логике названия поля, нужно знать особенность системы: даты не просто так, а в них может крыться спец смысл. При смене поколений девелоперов, новый может быть не посвящен в эти таинства, в результате чего мы будем обсуждать очередную статью «свежие системные драйвера неожиданно имеют приоритет выше вендорских», а человек всего лишь сделал доброе дело и поставил наконец нормальную дату в описание нового драйвера


      Система может быть проста, последовательна и логична. Дата обозначает дату, флаг «системный» — источник драйвера. Я могу понять, когда программисты суют костыли по причине острой нехватки времени и/или квалификации, но вот людей, которые целенаправленно этот подход одобряют- увы, не в состоянии.

      Что вас останавливает от более широкой трактовки даты в таком случае? Почему бы четным годам до 2006 не поставить в соответствие, скажем, наличие в драйвере поддержки режима X, а месяцем «декабрь» отмечать те, что являются краткосрочными и будут скоро обновлены? А дату «29 февраля» интерпретировать как «заглушка драйвера с минимально возможным функционалом»? Красота такого решения, надо полагать, будет непревзойденной: ни одного лишнего флага вводить не придется.

      P.S. писать на GT через неделю после публикации сродни некропостинку, но я, как человек из sustain команды, проклинающий авторов подобного кода до 7 колена включительно, не могу смотреть на то, какой пример вы показываете детям оставляете будущим читателям.


      1. melman701
        15.02.2017 22:41
        -1

        Смешно :)
        1) Мне ни разу не было необходимости смотреть дату системного драйвера. Зачем она мне?
        2) С программистом вообще надуманная проблема.
        Вы упускаете суть.
        Во-первых, это не руководство как надо делать, а пример того как они вышли из сложившейся ситуации.
        Во-вторых, ОС, после нахождения лучшего совпадения железа, расставляет приоритет драйверов по дате. Так почему бы этим не воспользоваться?
        P.S. Костыль это или фича — вопрос чисто религиозных предпочтений.


        1. nnovichOK
          16.02.2017 01:58
          +1

          Мне ни разу не было необходимости смотреть дату системного драйвера. Зачем она мне?

          Ну раз вам не надо, то и никому не надо, очевидно же. Вот же майкрософтовцы, напридумывали полей пользователям отображать почем зря, но потом исправились и стали отображать их неверно. Очень правильный подход.

          Я вот еще раз переспрошу, ну, на всякий, вас точно не смущает, что окошко дату типа отображает, но делает это некорректно? Это модная фича? Разумный подход? Или зависит от религиозных предпочтений?

          С программистом вообще надуманная проблема.

          Да не говорите, работая в sustain ни разу не возникало трудностей с неожиданным и нетрадиционным использованием данных. А, нет, подождите, возникало. Вот недавно всплыл баг из-за того, что isPasswordEmpty неожиданно определял не только наличие пароля, но и предпочитаемый тип хеша для его сохранения, а дизайнер, который правил этот участок, особенностей кода не заметил. Нет бы флаг изначально добавить для этой функциональности, не было бы беды. Но на хак с датами драйверов ни капельки не похоже, да.

          Вообще, костыль является эталонным в том плане, что он на ровном месте делает логику программы неочевидной одновременно и пользователям и разработчикам. Обычно вредят только одной из сторон.


          1. melman701
            16.02.2017 10:20
            -1

            Расскажите, для чего вам реальная дата драйверов из состава ОС?

            что окошко дату типа отображает, но делает это некорректно

            Дата отображается корректно, но не та, которую вы, возможно, ожидаете увидеть.

            Ваш пример не корректен. Тут дата осталась датой, и не несет дополнительной информации о погоде в Редмонде.
            Если компания ставит на проект программиста, предварительно, не ознакомив его с соглашениями, принятыми в данном проекте, то это проблема чья угодно, но не программистов которые писали проект.

            Расскажите нам, как нужно было решить проблему с приоритетом?


            1. nnovichOK
              16.02.2017 21:10
              +1

              Расскажите, для чего вам реальная дата драйверов из состава ОС?

              Есть очень классный, естественный, а главное простой подход: информация не нужна — не показывай, показываешь — показывай корректно. Даже если считать дату релиза излишней (с чем я несогласен) текущий вариант ни разу не оправдан.

              Оффтопик: Почему несогласен? Дата релиза это быстрый способ оценить «насколько драйвер свежий». Если у меня глючит девайс, то глянуть инфу по использующемуся драйверу — один из естественных шагов сбора данных о проблеме. И, обнаружив в системе окаменелости 2006 года, я полезу вбивать в гугл «почему оно не обновляется», т.е. решать несуществующую проблему.

              Дата отображается корректно, но не та, которую вы, возможно, ожидаете увидеть.

              Я это в рамочку повешу. Смотришь в поле «Дата разработки» и видишь дату, которая не является датой разработки, но отображается, безусловно, корректно.

              Ваш пример не корректен. Тут дата осталась датой, и не несет дополнительной информации о погоде в Редмонде.
              Это, простите, как? Дата перестала быть датой релиза драйвера от слова совсем, а превратилась в метод назначения наименьшего приоритета. Хотя да, погоду в Редмонде туда пока не засунули.

              Если компания ставит на проект программиста, предварительно, не ознакомив его с соглашениями, принятыми в данном проекте, то это проблема чья угодно, но не программистов которые писали проект.

              Если программист пишет костыльный непродуманный связный неустойчивый плохо поддерживаемый код, который требуется разъяснять всем новоприбывшим (что, кстати, технически невозможно: в крупных проектах разъяснение ВСЕХ костылей займет времени заведомо больше времени жизни отдельно взятого разраба, что никак не оправдывает написание новых костылей), то это называется чудесным термином технический долг и является достаточно тяжелой ношей для кармы и совести программиста (при наличии последней, конечно же). У компании в этой ситуации, впрочем, тоже есть проблемы: организация сроков и метрик, вероятно, подталкивает к быстрым непродуманным фиксам, а практика code review недостаточно развита, чтобы настучать автору по рукам.

              Достаточно писать логичный самодокументированный код, в котором дата релиза это реально дата релиза, и никаких разъяснений новоприбывшим не потребуется, никаких потенциальных факапов не будет заложено, никаких статей на GK не будет выложено. Но да, для этого требуется и подумать подольше, и покодить побольше, что сложно.

              Расскажите нам, как нужно было решить проблему с приоритетом?

              Концепт без специфики. При установке драйвера есть некий источник (набор источников?), откуда система получает о нём информацию (версию, дату, whatever). Источник контролируется автором дров. Очевидно, в нём не хватает информации о приоритетности драйвера. Следовательно, формат этого источника необходимо расширить необязательным полем «low_priority_source». При отстутсвии такого поля или при значении false считать драйвер нормальным вендорским, в противном случае ставить как системный.


  1. Anzipex
    10.02.2017 11:58

    У некоторых есть мания обновлять драйвера через менеджеры установки драйверов типа DriverPack Solution, Snappy Driver Installer и им подобные. Или например в devid.info по id обарудования. Аргументируя установку тем, что новая версия чего-то там работает несравнимо лучше. Как следствие могут возникнуть проблемы несовместимости, BSOD'ы и т.д., хотя некоторые скажут, что у них всё нормально устанавливается и работает


    1. 4ecTHblu
      13.02.2017 09:28

      хотя некоторые скажут, что у них всё нормально устанавливается и работает

      Потому что так оно и есть. Однако много зависит от типа устройства, когда на ПК редко возникают ошибки, то на ноутбуках этот процент выше, а про планшеты и подавно.
      Эти утилиты призваны облегчить установку драйверов, но никак не «запустил и оно само дальше», чего многие не понимают. Хотя DriverPack Solution как раз пытается сделать всё само и предоставляет минимум возможностей для управления установкой. Да и принципы работы у нее в лучших традициях вредоносного ПО — установим чего ты хочешь(скорее всего), а еще программы «полезные» и в автозагрузку!..


  1. delvin-fil
    12.02.2017 03:48
    -1

    Прочел комментарии…
    В массе, «махровые» «виндоузятники»!
    Как вам такой пример: Ставим в две доступные PCI CM8737(да, не тридцать восемь)
    Windows «крашится» еще на стадии установки(думается МНЕ, что и установленный работать не будет, ибо ID на шину и устройство ОДИН)
    «Поднимаем» риск-диск линуха, и что видим: HW0 и HW1 устройства в наличии — можно «тупо» rmmod снести «неугодное».


    1. arthi7471
      12.02.2017 10:58

      Линь за последние пару лет в плане драйверов вообще не слабо так подтянулся.


      1. delvin-fil
        12.02.2017 11:03

        Я с 2004-ого «под линухом».
        Проблем драйверов не замечал.
        А, да, интегрированные ICH9-сетевухи порой «любят мозг». Поднять модуль ядра — дело нескольких секунд.(не про пересборку(на моем i3,4Gb уходит около сорока минут — сейчас 4.9.7))


        1. Hellsy22
          12.02.2017 21:40

          А я регулярно вижу проблемы с драйверами. Несчастный ath9k отваливается от обновления к обновлению. С mpt2sas порой творится что-то непотребное. Да что там, вот приехала китайская беспроводная мышка. Под виндой мгновенно и без проблем заработала. Под линуксом почему-то курсор реагирует на эту мышь с задержкой в секунду (и на xfce, и на kde).

          И эти бесконечные пляски с nvidia-drivers…

          В общем-то, я далек от мысли восхвалять лишь Win (или Linux), просто меня удивляют восторженные пользователи с обеих сторон, у которых мистическим образом абсолютно все и всегда работает. Понятно, что можно долго спорить, что лучше — глючный и тормозной центр обновления Windows или глючный и тормозной Portage, мейтейнеры которого считают зря прожитым день без добавленных в основное дерево конфликтов и кривых зависимостей, но зачем отрицать наличие проблем?

          Пожалуй, я бы сказал так: Linux создает больше проблем, но зато позволяет их решить.


          1. delvin-fil
            12.02.2017 23:37

            nvidia-drivers

            Даже не поспоришь!
            На ядро выше 4.4.4 не накатишь драйвер для старухи GT 9800, только nouveau. А оное убрали из дерева. Целая пачка сорок четвертой серии от 39 до 48 включительно, а 4.4.0 нету.
            китайская беспроводная мышка

            Нет windows — нечем проверить. С отечественным производителем(DEXP) «борюсь» xmodmap в ~/.xinputrc


          1. arthi7471
            13.02.2017 11:43

            Мыша же не от оболочки зависит вроде. У мя беспроводная jet-a вполне адекватно работает что под вин что под линь. Другое дело что вдруг, совершенно нормально взыграли драйвера невидии в гибридной графике. Что самое интересное умудряются показывать фпс чуть больше виндовых но при этом так и не победили тиринг.


  1. Fenyx_dml
    16.02.2017 15:14

    Это доказывает, что вся винда сделана через жопу, но странным образом всё же работает, а её код не открывают, чтобы весь программистский мир не стебался и не ржал над этой кривизной. Проще говоря, стыдно. В человеческом языке не зря есть понятие красоты и гармонии. Когда говорят о том что решение красиво (не только о коде), то это подразумевает нечто категорично отличное от «глупо но работает, значит это не глупо».


    1. sumanai
      16.02.2017 15:46

      вся винда сделана через жопу

      По одному аспекту судите о всём продукте? Ну-ну.


      1. Fenyx_dml
        16.02.2017 22:48

        Почему по одному? Были и другие примеры, а как всё устроено досконально — никто не знает — они ж не показывают! Не думаю что для высказывания своего мнения, я должен был приводить весь список «странностей» винды. Но если вы просите, вот на вскидку две. В локальной сети несколько десятков компьютеров и сервер. Все в одной рабочей группе. На сервере заведен унверсальный юзер с правами на чтение. Часть компов могут зайти на сервер с этой учеткой, у части вылетает отказ авторизации… хоть тресни!
        Еще одна — развернул архив с файлами, созжанными на маке. Файлы оказались «зашифрованными» — отображаются зеленым. Но никакого пароля не надо — открываются. Невозможно сменить атрибут шифрования! Владельцем числюсь я со всеми правами (и еще пару раз так и сяк менял владельца и назначал права) — не может убрать атрибут шифрования!
        И такое встречается регулярно. Вот и эта статья добавила шар на чашу весов.


        1. sumanai
          16.02.2017 23:20

          а как всё устроено досконально — никто не знает

          Даже сами разработчики винды? ))
          Можете скачать и посмотреть утекшие коды Win2000, и показать мне странные места. Они там конечно есть, даже немного мата в комментариях, но в общем и целом код в порядке, на мой непрофессиональный взгляд.
          И такое встречается регулярно.

          Как будто в других ОС такого нет. Везде свои приколы, пользовательские ОС сегодня такая сложная штука, что по определению содержат баги в огромном числе.


        1. Alexeyslav
          17.02.2017 14:06

          Это не странности, просто вы не прочли всю документацию до конца. Какой смысл снимать атрибут шифрования с файла который был однажды зашифрован? Его случайно зашифровали и теперь уже не надо? Если бы был простой способ снять этот атрибут(на самом деле должна быть целая процедура! это не один байт изменить, ведь потребуется расшифровать файл сначала, сохранить его в новом месте и удалить старый) то смысла в шифровании небыло бы НИКАКОГО. Щеколда на сейфе, ага. На само деле, в ваш профиль просто был скопирован ключ которым зашифрован файл, и его открытие происходит прозрачно. Если кто откроет этот файл извне операционки прямым доступом к диску он не сможет его прочитать — в этом смысл «шифрования» файла.
          Но есть простой способ расшифровать его — открыть в программе на редактирование и сохранить под другим именем уже без шифрования. Или для копирования использовать сторонние программы, которые не будут копировать шифрованный поток.


          1. mayorovp
            17.02.2017 14:42

            Да нет, это именно что странности. Какой смысл при распаковке файлов из архива автоматически делать их зашифрованными?


          1. Fenyx_dml
            17.02.2017 20:36

            Вот ты пытаешься что-то объяснить мне, когда сам не понимаешь сути! К твоему сведению процесс шифрования и аттрибут управляются в винде точно так же как и сжатие (слышал про сжатые папки?) и галка такая в свойствах папки есть. Т.е. поставил галку, нажал Ок — пошел процесс сжатия/шфровки/расшифровки. Что там и куда на новом месте сохранится, а что сотрется пользователю как раз параллельно. А теперь обрати внимание, что ты даже непрочитал (или не понял) что произошло. Файл этот взят с другого компа и если бы он был зашифрован на самом деле, то я бы его просто не смог открыть. Вернее не я, а программа, т.к. это не какие-нибудь картинки или тхт-шки, а файлы данных к программе в её собственном формате — мне их редактором открывать и менять не нужно и нельзя. Так вот они программой подхватываются без проблем (чего не должно быть, если бы файл был зашифрован), а атрибут сменить нельзя — возникает ошибка. Вот такая вот загадочная винда.


            1. Alexeyslav
              17.02.2017 22:31

              Я же и говорю, вы не разобрались до конца как работает система прав в виндовс.
              Файл остаётся зашифрованным на НОСИТЕЛЕ, но для программ выполняющихся из-под твоей учетки это абсолютно прозрачно — они видят его незашифрованным. Просто у вас есть права на этот файл, и вместе с ними ключ для дешифровки который привязан к учетке. Попробуйте файл вынести на FAT32 и всё это пропадёт к чертям.
              Все эти странности — лишь от непонимания как работает на самом деле система разграничения прав. Иногда нужно действительно нашаманить чтобы сделать так как требуется, но это лишь от непонимания как работает система прав.


              1. Fenyx_dml
                18.02.2017 12:16

                Хочется процитировать Задорнова. Ну очень! Откуда у меня права и ключ, когда файл создан на компьютере, не имеющего никакого отношения ко мне? И с какого черта функция шифровки не работает, а выдает ошибку? До -конечно от того что я идиот и не понимаю как работает винда! Гениально! Но пожалуйста, с такими «гениальными» поучениями не ко мне.