Когда я возвращаюсь к теме использования компилятора и компоновщика Visual Studio для создания драйверов Windows, мне приходят в голову две вещи:
Официально не поддерживается. Действительно, во всем Интернете существует единодушное мнение о том, что правильный способ создания драйверов Windows - это использование компилятора, компоновщика и инструмента BUILD, включенного в набор драйверов Windows.Однако Visual Studio 2008 включает параметр компоновщика / DRIVER, который описывается следующим образом: Use the /DRIVER linker option to build a Windows NT kernel mode driver.
Что он делает?Почему он был включен в Visual Studio, если использовать его для сборки драйверов не рекомендуется?
Это работает. Я почти боюсь сказать это вслух, чтобы янавлечь на себя гнев праведных разработчиков ядра, но правда в том, что драйверы, созданные с помощью Visual Studio, работают.Мы создавали их таким образом в течение многих лет на моем рабочем месте, созданные двоичные файлы были развернуты на сотнях машин, и никаких проблем не было.Тем не менее, я знаю, что отсутствие доказательств не является доказательством отсутствия и что отсутствие каких-либо проблем до сих пор не означает, что создание драйверов с VS безопасно.
Что меня действительно беспокоит, так это отсутствие информации.В Интернете есть несколько сообщений от людей, которые используют VS для создания своих драйверов, которые неизменно получают один и тот же ответ - он не поддерживается, не делайте этого, интегрируйте WDK с VS посредством проекта makefile, если вы действительно хотитеиспользуйте VSE IDE.Однако я не нашел ни одного ответа, который бы указывал на конкретную причину, по которой вам не следует создавать драйверы с VS.
Итак, кто-нибудь знает, что произойдет, если вы используете VS для создания своих драйверов?Что может пойти не так?При каких обстоятельствах?Я знаю, что вы должны установить все параметры компилятора и компоновщика самостоятельно, и это нормально, но что произойдет, если я установлю их неправильно?Будет ли драйвер не скомпилирован, или не скомпонован, или, если он будет работать нормально, он вылетит сразу или только при правильном расположении звезд?Зачем это делать, что вызывает это?Есть ли какая-либо причина, чтобы прекратить сборку наших драйверов с VS, который годами работал как чудо, кроме того факта, что он официально не поддерживается?Если это официально не поддерживается, зачем устанавливать переключатель / DRIVER в VS?