Простейший драйвер с помощью Visual студии разработки
Я пытаюсь создать простейший драйвер "hello world" в Visual Studio 2012 с помощью WDK. Код устройства.файл c выглядит следующим образом:
#include <ntddk.h>
NTSTATUS DriverEntry(PDRIVER_OBJECT DriverObject, PUNICODE_STRING RegistryPath)
{
DbgPrint("Hello, World");
return STATUS_SUCCESS;
}
При построении возникает ошибка:
1>Driver.c(3): error C2220: warning treated as error - no 'object' file generated
1>Driver.c(3): warning C4100: 'RegistryPath' : unreferenced formal parameter
1>Driver.c(3): warning C4100: 'DriverObject' : unreferenced formal parameter
2>------ Build started: Project: KMDFSmall Package, Configuration: Win7 Debug x64 ------
2>C:Program Files (x86)Windows Kits8.0buildWindowsDriver8.0.common.targets(1347,5): error MSB3030: Could not copy the file "PathToProjectsSimpleDriverx64Win7DebugKMDFSmall.sys" because it was not found.
Что вызывает эти ошибки?
3 ответа:
В WDK активировано "рассматривать предупреждение как ошибку", а неиспользуемые параметры вызывают предупреждение.
Поэтому, если вы измените свой код на:
NTSTATUS DriverEntry(PDRIVER_OBJECT /*DriverObject*/, PUNICODE_STRING /*RegistryPath*/) { DbgPrint("Hello, World"); return STATUS_SUCCESS; }
Он должен компилироваться.
Более рекомендуемым способом является использование макроса
UNREFERENCED_PARAMETER()
, поэтому ваша функция может быть изменена на:NTSTATUS DriverEntry(PDRIVER_OBJECT DriverObject, PUNICODE_STRING RegistryPath) { UNREFERENCED_PARAMETER(DriverObject); UNREFERENCED_PARAMETER(RegistryPath); DbgPrint("Hello, World"); return STATUS_SUCCESS; }