Windows Kits
В любой известной операционной системе, помимо встроенных пользовательских приложений и настроек имеются определенные службы и инструменты, которые позволяют выполнять определенные действия для тонкой настройки. Начиная с версии Windows Vista, в ОС от компании Майкрософт появился набор инструментов Windows Kits (полное название Windows Automated Installation Kit). Попробуем досконально разобраться в вопросах: что представляет собой этот пакет, его функциональные возможности и где его можно отыскать.
Сразу стоит отметить, что в еще одном инструменте разработки SDK, непосредственно в политике комплектов ARM имеется такая вещь, как Microsoft-Windows-Kits-Secure-Boot-Policy.p7b. Из этого можно сделать определенный вывод: Windows Kits – относится к системным инструментам разработки, то есть с ее помощью можно изменять внутренние функции ОС. Исходя из вышесказанного стоит также отметить, что этот пакет вряд ли слишком много требует ресурсов, что положительно сказывается на производительности.
Windows Kits устанавливается в директорию C:\Program Files (x86)\Windows Kits (для 32-битных версий путь будет C:\Program Files\Windows Kits). При этом, досконально изучая диспетчер задач, а точнее перечень запущенных процессов, можно отыскать несколько, которые также запускаются с этой папки. Данный пакет, судя по назначению связан непосредственно с Visual Studio.
Главное окно установочного пакета выглядит следующим образом.
При этом, помимо Windows Kits здесь имеется масса и других средств разработки.
Изучая тематические форумы и сайт разработчика Майкрософт, можно сделать вывод, что этот инструмент применяется не для установленной операционной системы, а для образа Windows, который впоследствии можно записать на диск или съемный накопитель в виде установочного носителя. Это необходимо для того, чтобы отключить определенные службы, исключить некоторые стандартные приложения, то есть убрать некоторые инструменты непосредственно из установочного пакета Windows. По большому счету, этот набор инструментов пригодится тем, кто занимается созданием собственных сборок операционных систем. Например, в стандартном инсталляционном пакете Windows могут быть в наличии некоторые игры и встроенные приложения, такие, как Paint, калькулятор и т.п. При работе с Windows Kits, их можно исключить из установочного пакета и они не будут инсталлированы.
И если до этого мы говорили лишь о том, чтобы убрать какие-то функции или приложения, то следует помнить, что в образ Windows можно и добавлять те программы, которые по идее будут регулярно использоваться после переустановки. Например, сейчас можно встретить массу сборок, в которую может быть включен пакет программ для последующей установки. Этот шаг невозможно осуществить без Windows Automated Installation Kit.
Windows Kits что это?
Всем привет
Сегодня мы поговорим с вами о такой штуке как Windows Kit, которая имеет полное название такое: Windows Automated Installation Kit. Я расскажу что это, для чего используется и все такое. Ну так вот ребята, знаете что это такое? Это коллекция инструментов для развертывания Windows. Вот честно говоря я пока еще точно не могу понять что это. Первая версия Windows Kit была уже в глючной Висте.
Так, стоп ребята, Windows Kit и Windows Kits это одно и тоже или все такие разное? Я думаю что одно и тоже, просто Windows Kits идет в множественном числе, ну то есть тут инструменты именно, а не один инструмент. Ведь если посмотреть в интернете, то там так и написано, что Windows Kit это НАБОР инструментов
Так, вот что я узнал еще ребята, в Windows 8.1 есть пакет разработки SDK, ну вот в этот пакет включена политика комплектов ARM, и потом еще указывается такое как Microsoft-Windows-Kits-Secure-Boot-Policy.p7b, я не знаю что это, но видимо все в ту сторону идет, ну то есть системное что-то, виндовское.. Сразу скажу что это вряд ли грузит винду.
Я также узнал что Windows Kits может стоять в этой папке:
C:\Program Files (x86)\Windows Kits
C:\Program Files\Windows Kits
И узнал что у вас в диспетчере задач может быть запущен какой-то процесс из этой папки, это нормально. И есть такая штука не только в Windows 8, но и в Windows 10, а может даже и в Windows 7. Windows Kits имеет какую-то связь с Visual Studio.
Смотрите, вот окно Welcome to Windows Automated Installation Kit, видимо это окно инсталляции и как я вижу то это для Windows 7:
Но что такое развертывание Windows? Вот и мне стало интересно, я нашел инфу! В общем в этом плане Windows Kit позволяет изменить состав винды, то есть можно и оформление изменить, и настройки сразу задать и программы установить. Это все я имею ввиду работать с ДИСКОМ ВИНДЫ, ну то есть образом! Не с установленной виндой, а именно с установщиком! Ну короче Windows Kit это инструмент чтобы создать винду по себя и потом ее установить. Ладно, напишу еще проще, благодаря Windows Kit можно делать всякие свои сборки
Ну что ребята, более-менее понятно вам? Надеюсь что да, ну а если что не так, то вы уж извините. Удачи вам
Что такое Windows Kits и как они работают?
В старые времена при разработке проекта C ++ для Windows в Visual Studio ваша версия Visual Studio имела бы собственную версию библиотек C и C ++, а ваш проект ссылался на конкретную версию Windows SDK, чтобы получить доступ к заголовкам для доступа. на платформу Win32. Если у вас было установлено несколько версий Windows SDK, существовала сложная система, включающая переменные среды, которая позволяла вам выбрать, какую версию Windows SDK Visual Studio будет использовать по умолчанию.
Это было не здорово, и чтобы заставить его работать должным образом, нужно было немного покопаться, но это было просто работа.
Я только что перешел с VS2012 на VS2015, и мне кажется, что то, чем была заменена эта система, либо полностью сломано, либо я просто не понимаю этого.
Обновление простого консольного приложения VS2012 C ++, которое включает conio.h до VS2015, без ошибок. Зачем? conio.h больше не находится в библиотеках Visual Studio C / C ++ и вместо этого теперь живет в Windows Kit 10, обновление проекта не соответствует используемому SDK (как и следовало ожидать).
Создавая новое приложение Hello World C ++ в VS2015, проект C ++ включает каталоги, унаследованные от $ (VC_IncludePath) и $ (WindowsSDK_IncludePath). $ (WindowsSDK_IncludePath) извлекает заголовки из C: \ Program Files (x86) \ Windows Kits \ 8.1, а $ (VC_IncludePath) извлекает заголовки из C: \ Program Files (x86) \ Windows Kits \ 10.
Таким образом, простые обновления проекта завершаются неудачно, и об этом не сообщается об ошибке. Очистите новые консольные проекты, извлекая заголовки из 2 различных установок Windows Kit, и теперь у меня есть записи для 8.1 и 10 в C: \ Program Files (x86) \ Microsoft SDK и C: \ Program Files (x86) \ Windows Kits. Windows Kit 8.1 содержит заголовки Win32 и WinRt, а Windows Kit 10 содержит заголовки C / C ++.
У меня неправильно настроенная или поврежденная установка, или это беспорядок, как это должно быть?
Если этот беспорядок такой, каким он должен быть, как он должен работать? Я пытался найти в MSDN информацию о Windows Kits, но ничего не нашел, кроме информации о Windows Driver Kit, которая раньше была чем-то совершенно другим, но я не знаю, так ли это до сих пор.
Есть ли какая-то документация, которую я пропустил, которая объясняет обоснование этой конфигурации библиотеки и как она предназначена для использования?
Решение
Сейчас я несколько раз сталкивался с несколькими различными вариантами этой проблемы, с проблемами, решающими как заголовочные файлы, так и зависимости библиотек в проектах, обновленных с VS2012 до VS2015.
Комментарий Ханса в ответ на мой вопрос действительно исправляет проблему для заголовков, но после того, как я столкнулся с той же проблемой для библиотечных зависимостей, у меня есть то, что может быть более простым решением, которое работает и для неудачного разрешения библиотечных зависимостей.
При открытии проекта VS2012 в VS2015 автоматическое обновление не выполняется. Открытие свойств проекта и изменение General -> Platform Toolset на Visual Studio 2015 (v140), скорее всего, воспроизведет либо вариант ошибки разрешения заголовка, описанный в моем исходном вопросе, либо другую ошибку разрешения зависимостей библиотеки.
Я нашел самый простой способ исправить это, открыть свойства проекта и перейти в каталоги VC ++ -> Включить каталоги. Среди любых путей, которые вы, возможно, добавили в свой проект самостоятельно, вы, вероятно, найдете $ (VCInstallDir) \ include; $ (VCInstallDir \ atlmfc \ include; $ (WindowsSDK_IncludePath)
Щелкните путь, чтобы отобразить раскрывающийся список, и нажмите кнопку «Изменить». Откроется диалоговое окно с тремя разделами сверху вниз, явно определенными путями, оцененными путями и унаследованными путями. В самом низу находится флажок «Наследовать от родительского или проекта по умолчанию», который я всегда находил изначально непроверенным.
Из явно определенных путей включения удалите записи $ (VCInstallDir) \ include; $ (VCInstallDir \ atlmfc \ include; $ (WindowsSDK_IncludePath), описанные выше, и выберите параметр «Наследовать от родителя или по умолчанию проекта». Это должно разрешить любую зависимость файла заголовка проблемы.
Если у вас также есть проблемы со ссылками на библиотеку, сделайте то же самое с записями в каталоге библиотеки, отредактируйте настройки, удалите явные записи платформы и выберите «Наследовать от родительского или проекта по умолчанию». (Это может быть хорошей идеей, даже если вы не видите ошибок компоновщика, в противном случае вы можете использовать опцию компилятора набора инструментов платформы для VS2015 при подключении к библиотекам для VS2012).
Я не знаю, почему это облажалось для меня, когда я не сталкивался с кем-то, кто сталкивался с подобными проблемами, у меня не было проблем с обновлением решений Visual Studio.
Я также не выяснил, почему некоторые версии Windows Kits теперь содержат либо заголовки платформы Windows, либо заголовки библиотеки C ++, когда ранее SDK всегда содержал заголовки платформы, в то время как заголовки C ++ всегда были частью или установкой Visual Studio. Похоже, что подобное изменение должно иметь где-то блог разработчика или какую-то другую документацию. Но пока это работает, мне все равно.
Path to SignTool.exe or “Windows Kits” directory when using Visual Studio 2012
How do you get the path to SignTool.exe when using Visual Studio 2012?
In Visual Studio 2010, you could use
Where $(FrameworkSDKDir) is
But in Visual Studio 2012, $(FrameworkSDKDir) is
and SignTool is in
Is there a way of getting the path to this directory other than hard coding (I’ve tried FrameworkSDKDir and WindowsSDKDir , but both point to the v8.0A directory).
(I am aware of the SignFile MSBuild task, but I can’t use that as it doesn’t accept certificate passwords.)
7 Answers 7
I just ran into the same issue. Running the build from a Visual Studio 2012 Command Prompt worked, but it was failing in the IDE. Looking for a detailed or diagnostic log led me to What is the default location for MSBuild logs?, which told me that Visual Studio can’t give the diagnostic information I really needed.
Here’s what I finally did to fix it.
Open a normal Command Prompt (not the Visual Studio Command Prompt), and run msbuild from that by fully-qualifying the path to MSBuild (%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe). This finally gave me the same error message (error code 9009) that I had been receiving in Visual Studio 2012.
Then, run the same build using «diagnostic» logging (which shows all property and item values) by appending the /v:diag switch.
From this output, I learned that it does have some new properties that I could use to get the location of signtool.exe (excerpt below):
So, my solution to this problem was to add the following to my *.targets file:
Hope this helps you, too. I included the preamble of how I got to this point because there are other properties available that may be better suited for your purposes.
Program files x86 windows kits
Лучший отвечающий
Вопрос
Скажите, пожалуйста, что делать, если у меня вот такая проблема. Я скачал Windows Kits c https://msdn.microsoft.com/en-us/windows/hardware/gg454513.aspx. Но при этом я не могу откомпилировать драйвер, код которого приведён здесь: http://habrahabr.ru/post/40466/. Проблема в том, что я не могу найти в скаченном пакете заголовочный файл ntddk.h, который нужно включить. А ещё проблема в том, что не найду build environment, с помощью чего компилируется драйвер. Я звонил по телефону 8 495 916 71 71. Там мне посоветовали обратиться на сайт msdn.microsoft.com (поэтому я и зашёл на данный форум), а также на форум https://technet.microsoft.com/ru-ru/.
Сразу уточню, что операционная система у меня Windows 10.
Ответы
Оказывается, я отстал от жизни 🙂
Времена сборки драйверов из командной строки уже прошли. Теперь сборка выполняется исключительно из Visual Studio.
- Visual Studio 2015 Community или выше с поддержкой разработки универсальных приложений Windows и языка C++ (по умолчанию в программе установки ВЫКЛЮЧЕНЫ)
- Windows Driver Kit (WDK) версии 10
После этого в шаблонах VS (для языка С++) появляются новые типы проектов — драйверов и сопутствующих компонентов.
Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!
Что касается Visual, моя версия Visual не предлагает такие проекты, как драйверы. У меня установлена Visual Studio Enterprise 2015 версии 14.0.24720.00 Update 1. Также есть у меня WDK версии 10.
Типы проектов появятся после установки WDK. Убедитесь также, что у Вас установлены следующие компоненты VS:
Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!
Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!
Все ответы
Лучше спросите у самого человека, который написал данный код на хабре.
Если Вам помог чей-либо ответ, пожалуйста, не забывайте жать на кнопку «Предложить как ответ» или «Проголосовать за полезное сообщение» Мнения, высказанные здесь, являются отражение моих личных взглядов, а не позиции корпорации Microsoft. Вся информация предоставляется «как есть» без каких-либо гарантий.
Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!
Сборка драйвера должна производиться из командной строки, которая откроется запуском одного из этих ярлыков.
Ярлыков там много. Какой именно ярлык нужно запустить, чтобы открыть командную строку, из которой «сборка драйвера должна производиться»?
А где взять документацию по WDK? И какие «книги на русском языке, посвященные этому вопросу» Вы могли бы порекомендовать мне?
Ярлыков много, потому что вариантов сборки может быть несколько. Во-первых, целевая платформа (x86, x64, ARM), во-вторых, конфигурация (Release, Debug). У меня сейчас WDK не установлен, поэтому точно назвать не могу. Если перечислите названия ярлыков и укажете свою систему и разрядность — скажу точно.
Документация либо ставится вместе с WDK, либо интегрируется в документацию Visual Studio. В крайнем случае есть MSDN Library в Интернете.
Пару книг назову завтра, когда доберусь до рабочего места.
Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!
Целевая платформа — 64-разрядная ОС Windows 10. Конфигурация Debug.
Вы ответили только на второй мой вопрос. Как насчет названий ярлыков? И о какой конфигурации Вы пишете? У Вас разве установлена отладочная версия Windows?
- Солдатов В.П. Программирование драйверов Windows — хорошая книга для новичка в разработке драйверов
- П. Орвик, Г. Смит. Windows Driver Foundation: разработка драйверов — книга подробно описывает относительно новую модель Microsoft для построения драйвера в современных версиях Windows
Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!
Спасибо за книги. Я имею в виду конфигурацию, которую я хотел бы получить при компиляции драйвера. Я хотел бы его откомпилировать в Debug-версии. Я пользуюсь Notebook’ом Lenovo с установленной Windows 10 x64. А вот установлена ли у меня отладочная версия Windows или нет, не знаю. Ярлыков в Windows Kits много в разных подпапках. Всё перечислить крайне сложно. Проще переслать Вам скришноты меню «Пуск», где перечислены ярлыки из папки «Windows Kits». Я хотел было прислать Вам скриншоты. Но у меня не получается вставить в текст сообщения изображения.
я смогу Вам помочь со вставкой вашего скриншота.
- Изменено Иван4500 22 января 2016 г. 21:31 Небольшая правка
- Изменено Жук MVP, Moderator 23 января 2016 г. 3:02 дополнение
Воспользуйтесь разделом Q9 справки, для загрузки ваших скриншотов, скопируйте и вручную введите адрес в своё сообщение.
О верификации аккаунта, внимательно изучите аналогичный вопрос
Да, я Жук, три пары лапок и фасеточные глаза :))
- Изменено Жук MVP, Moderator 23 января 2016 г. 2:59
Оказывается, я отстал от жизни 🙂
Времена сборки драйверов из командной строки уже прошли. Теперь сборка выполняется исключительно из Visual Studio.
- Visual Studio 2015 Community или выше с поддержкой разработки универсальных приложений Windows и языка C++ (по умолчанию в программе установки ВЫКЛЮЧЕНЫ)
- Windows Driver Kit (WDK) версии 10
После этого в шаблонах VS (для языка С++) появляются новые типы проектов — драйверов и сопутствующих компонентов.
Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!
Насчёт скриншотов, всё равно не получается. Возникает сообщение, где говорится, что мои сообщения не могут содержать ссылки и изображения, пока я учётная запись не пройдёт проверку.
Что касается Visual, моя версия Visual не предлагает такие проекты, как драйверы. У меня установлена Visual Studio Enterprise 2015 версии 14.0.24720.00 Update 1. Также есть у меня WDK версии 10.
И так, по порядку. Для того чтобы собрать драйвер из указанного Вами примера, создаем проект при помощи данного шаблона:
Проект создается почти пустым (исходников нет, один только «недоделанный» INF-файл, который нужен для установки драйвера встроенными средствами Windows).
Добавляем новый файл в проект и вводим исходный код Вашего примера:
Добавленные строки требуются для того чтобы компилятор не «ругался» по поводу неиспользуемых параметров.
Далее, для успешной сборки драйвера, требуется скорректировать имеющийся INF-файл:
И, наконец, выбираем требуемую конфигурацию и разрядность драйвера:
Собираем проект и наблюдаем в выходном каталоге файлы драйвера:
Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!
- Предложено в качестве ответа Maksim Marinov Microsoft contingent staff, Moderator 25 января 2016 г. 12:20
Что касается Visual, моя версия Visual не предлагает такие проекты, как драйверы. У меня установлена Visual Studio Enterprise 2015 версии 14.0.24720.00 Update 1. Также есть у меня WDK версии 10.
Типы проектов появятся после установки WDK. Убедитесь также, что у Вас установлены следующие компоненты VS:
Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!
Спасибо за ответ. Создать проект получилось. Проблема только в том, что Visual не находит файлы, прописанные в include. Подозреваю, что дело здесь вот в чём. Они лежат в папке: C:\Program Files (x86)\Windows Kits\10\Include\10.0.10586.0\km. Видимо, Visual ищет include-файлы где-то в другом месте. Я, конечно, могу явно прописать: #include . Но тогда он находит ошибку в самом файле ntddk.h, та как данный содержит в себе вот что:
#include
#include
#include
#include
#include
#include
Visual не находит эти файлы, хотя они лежат в той же самой папке, то в C:\Program Files (x86)\Windows Kits\10\Include\10.0.10586.0\km.
Поэтому, не собирается драйвер.
Начинается какая-то «сказка про белого бычка» 🙂 Про включаемые файлы WDK я Вам уже говорил еще в самом начале данной темы: вариант включаемого файла выбирается автоматически в соответствии с архитектурой целевой системы драйвера.
Я написал Вам полную инструкцию в картинках, Вы можете ее повторить (без каких-либо изменений)? Если нет, значит есть какая-то ошибка в Ваших действиях.
Приведите, пожалуйста, ПОЛНЫЙ текст окна вывода после запуска сборки драйвера. Именно полный (скопируйте его целиком из окна вывода и поместите в текст сообщения).
Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!
Я прекрасно понял Вашу инструкцию в картинках. Именно это я и сделал. Вот результат:
1>—— Rebuild All started: Project: TestDriver, Configuration: Debug Win32 ——
1>C:\Program Files (x86)\Windows Kits\10\build\WindowsDriver.common.targets(181,5): error : An SDK corresponding to WDK version ‘8.1’ was not found. Please install the SDK before building.
========== Rebuild All: 0 succeeded, 1 failed, 0 skipped ==========
И это при том, что WDK я скачал из Интернета и УСТАНОВИЛ.
Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!
Попытка запустить установку с диска не приводит к успеху. Возникает сообщение о том, что установка заблокирована, так как Visual уже установлен. При этом мне не предлагают установку каких-то дополнительных компонентов.
Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!
Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!
возникает сообщение: «Подождите, пока завершится удаление или изменение программы». И больше ничего не происходит.
Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!
Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!
Мне УДАЛОСЬ установить нужные компоненты. Вот какой теперь результат сборки драйвера: