Как стать автором
Обновить
14
0

Пользователь

Отправить сообщение
Угу… а ещё у него сын гей!
Обтянуть «кожей» и будет «красиво». Например, как тут:

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

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

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

Браво Microsoft! :)
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!
Да, спасибо. Не заметил.
Вот только небольшое уточнение — в посте говорится о том, что при совпадении дат разработки драйверов дальше он выбирает не по номеру версии, а по дате создания файла, а уж если и они совпадают, тогда уже сравниваются «номера версии».
Всем драйверам во всех версиях Windows присваивается стандартная дата, которая соответствует дате выхода Vista RTM. Эта фиксированная дата не зависит от версии драйвера или реальной даты создания файла. В то же время обновляется номер версии драйвера — это следующий фактор, который учитывается при выборе драйвера, после даты создания файла.
Или под «датой создания файла» Ализар имел в виду всю ту же «дату разработки». Хз.

Так или иначе, ума не приложу как этот PnP может сравнивать что-нибудь вида «6.1.7600.16385» с чем-нибудь типа «6.1-rc2».
Судя по КДПВ они там интернет-трафик считают в… веб-страницах. Прикольно.
Скорее всего, потому что поле «Дата разработки» не может быть ни чем иным кроме как числом, которые вне зависимости от его значения всё-равно «воспринимается» как дата.
Например, «поставив» туда «0» или даже ничего не поставив, вы всё-равно получите какую-то дату (скорее всего начало «Unix Epoch» — 01.01.1970).
Поэтому «пометить» можно только числом-датой, что и сделали — «пометили» датой 21.06.2006.
Тем, что мы «делаем» дату разработки встроенного драйвера заведомо наименьшей среди всех возможных вариантов этих дат, среди всех производителей. Ведь вполне возможна ситуация когда производитель переписал свой драйвер для XP под Висту, изменил версию, а дату не изменил, оставив какое-нибудь прежнее значение вроде 01.02.2003. Или драйвер был разработан в день выхода Висты, т.е. дата та же — 21.06.2006 (хрен знает как PnP отрабатывает эту ситуацию и как выбирает драйвер «посвежее»).
При этом мы имеем возможность «сохранить» истинную дату разработки драйвера (на всякий случай), «закодировав» её этим прибавлением 1000 лет к возрасту, что позволяет путём нехитрых преобразований всё-таки извлечь её. И всё это делается достаточно прозрачным и непротиворечивым для механизмов системы Plug and Play способом. PnP пофигу на то, что драйвер датирован 11 веком, он просто старше и всё. Вне системы PnP ясно же, что это бред и это своего рода «сигнал» для того, чтобы прибавить заранее оговоренные 1000 лет и получить-таки «нормальную» дату разработки встроенного драйвера.
Более функциональный костыль :)
А нельзя было бы для «своих», встроенных драйверов устанавливать их дату разработки, например как:
ДатаРазработки - 1000 лет
Никто из нормальных производителей не укажет 11 век в качестве даты разработки своего драйвера.
А для того чтобы эта дата нормально отображалась для пользователя вместо «21.06.2006», добавить условие вида:
Если ДатаРазработки < 01.01.1900 Тогда
ДатаРазработки = ДатаРазработки + 1000 лет

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

Либо как вариант, вообще не отдавать пользователю «костыльную» «заниженную» дату разработки встроенных драйверов (кому она вообще нужна).
Ну, скорее всего «в среде творческих людей» к терминологии всегда относились не так строго как в науке и инженерном деле. Вполне даже вероятно, что некоторую путаницу и недопонимание допускал, например, и великий Пикассо, что возможно привело к возникновению целого направления в изобразительном искусстве :)
Но всё-таки, на мой взгляд, к терминологии надо относится аккуратнее, а не валить всё в кучу для «красного словца» как товарищ Шумахер (хотя желание стать родоначальником стиля и тем самым войти в Вечность историю вполне понятно)
При чем, подозреваю, не понимаете, что красивую картинку нарисовать и Заказчику на уши присесть гораздо проще, чем реализовать ее согласно законам техники и нормативов.
А вы-то сами пробовали, что утверждаете о том, что это легче? Я имею в виду «на уши Заказчику присесть с картинкой»? :)
А про «автоматизировано» — это вы совсем позабавили. Лично я бы очень хотел увидеть как будет автоматизировано решение задачи, единственным критерием выполнения которой является хрень вида «ОК_мне_нравится_строим / Не_чёт_не_то_давайте_ещё_порисуем» :)
Знаете, некоторые люди с высшим архитектурным образованием и несколькими годами опыта, но, что называется «технари в душе» даже из профессии уходят из-за таких вот «чётких» критериев оценки завершённости и качества их труда.
Говоря о решении задач по оптимизации, лично я подразумевал безусловно оптимизацию «математическую», которая как раз-таки наоборот является понятием куда более объемлющим, чем такие частные вещи как параметрическое моделирование в САПР («параметризация») или, например, какая-нибудь инверсная кинематика («родственная» задача).
Параметризм (который, кстати, «в оригинале» вообще «Parametricism») — это не технология, не инструмент и даже не методология. Это всё-таки просто архитектурный стиль, со своими авторами, последователями, манифестами и произведениями искусства, и ничего более. На мой взгляд, приписывать этому явлению что-либо большее — бессмысленно и даже вредно. Да хотя бы из-за возникновения банальной путаницы в головах :)

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность