Драйвер Hello World не будет правильно скомпилирован - PullRequest
0 голосов
/ 19 мая 2019

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

Код выглядит так:

#include <ntddk.h>
#include <wdf.h>

#define UNREFERENCED_PARAMETER(P) (P)
VOID DriverUnload(PDRIVER_OBJECT driver)
{
    DbgPrint("first:HelloWorld End!");
}

NTSTATUS DriverEntry(PDRIVER_OBJECT pDriverObject, PUNICODE_STRING pUnicodeString)
{
    DbgPrint("first:HelloWorld Begin!");
    pDriverObject->DriverUnload = DriverUnload;
    return STATUS_SUCCESS;
}

Вместо компиляции я получаю очень забавную ошибку:

Error   C2220   warning treated as error - no 'object' file generated   MyHelloWorldDriver  C:\Users\****\source\repos\MyHelloWorldDriver\MyHelloWorldDriver\main.c 7   

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

Я пользуюсь Visual Studio 2019, чего мне, видимо, не хватает ??

PS

Предупреждения, которые я получаю, выглядят так

Error (active)  E1097   unknown attribute "no_init_all" MyHelloWorldDriver  C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\km\ntddk.h  372 
Error (active)  E1097   unknown attribute "no_init_all" MyHelloWorldDriver  C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\km\ntddk.h  1093    
Warning MSB8038 Spectre mitigation is enabled but Spectre mitigated libraries are not found.  Verify that the Visual Studio Workload includes the Spectre mitigated libraries.  See https://aka.ms/Ofhn4c for more information. MyHelloWorldDriver  C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Microsoft\VC\v160\Microsoft.CppBuild.targets 422 
Error   C2220   warning treated as error - no 'object' file generated   MyHelloWorldDriver  C:\Users\***\source\repos\MyHelloWorldDriver\MyHelloWorldDriver\main.c  7   
Warning C4566   character represented by universal-character-name '\uFF01' cannot be represented in the current code page (1252)    MyHelloWorldDriver  C:\Users\***\source\repos\MyHelloWorldDriver\MyHelloWorldDriver\main.c  7   
Warning C4100   'driver': unreferenced formal parameter MyHelloWorldDriver  C:\Users\***\source\repos\MyHelloWorldDriver\MyHelloWorldDriver\main.c  5   
Warning C4566   character represented by universal-character-name '\uFF01' cannot be represented in the current code page (1252)    MyHelloWorldDriver  C:\Users\***\source\repos\MyHelloWorldDriver\MyHelloWorldDriver\main.c  12  
Warning C4100   'pUnicodeString': unreferenced formal parameter MyHelloWorldDriver  C:\Users\***\source\repos\MyHelloWorldDriver\MyHelloWorldDriver\main.c  10  

1 Ответ

0 голосов
/ 05 июня 2019

Похоже, проблема с Visual Studio: https://developercommunity.visualstudio.com/content/problem/549389/intellisense-error-e1097-because-intellisense-does.html

Вот копия этой ссылки:

С Visual C ++ 2017 версии 15.8 (версия компилятора 19.15.26726.0) новый недокументированныйОпция компилятора / d1initall и новый атрибут __declspec (no_init_all) были добавлены в компилятор.Intellisense (VS17 и 19) не распознает этот атрибут и сообщает, что он неизвестен.

Проблема в том, что Intellisense не знает о существовании атрибута no_init_all.

Этот атрибут используется в официальной WindowsЗаголовочные файлы SDK и WDK 10.0.18362.0. Это означает, что Intellisense отображает эту ошибку для всех проектов, в которые входят Windows Kits \ 10 \ Include \ 10.0.18362.0 \ um \ winnt.h (Строка 588 и 1093) или Windows Kits \ 10 \ Include \10.0.18362.0 \ km \ ntddk.h (Строка 7597).

Вы также можете воспроизвести ошибку, просто определив структуру с атрибутом __declspec (no_init_all),

__ declspec (no_init_all) struct A{};Это прекрасно компилируется без каких-либо предупреждений / ошибок, но Intellisense говорит, что это неправильно.


Исправлено 29 апреля 2019 года.

...