Reputation: 11908
I'm trying to create a simplest "hello world" driver in Visual Studio 2012 with WDK. The code of Device.c file is this:
#include <ntddk.h>
NTSTATUS DriverEntry(PDRIVER_OBJECT DriverObject, PUNICODE_STRING RegistryPath)
{
DbgPrint("Hello, World");
return STATUS_SUCCESS;
}
When building there's an error:
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 Kits\8.0\build\WindowsDriver8.0.common.targets(1347,5): error MSB3030: Could not copy the file "Path\To\Projects\SimpleDriver\x64\Win7Debug\KMDFSmall.sys" because it was not found.
What causes these errors?
Upvotes: 2
Views: 3398
Reputation: 8992
The WDK has "Treat warning as error" activated, and unused parameters trigger a warning.
So if you change your code to :
NTSTATUS DriverEntry(PDRIVER_OBJECT /*DriverObject*/, PUNICODE_STRING /*RegistryPath*/)
{
DbgPrint("Hello, World");
return STATUS_SUCCESS;
}
it should compile.
Upvotes: 5
Reputation: 78
A shorter way to do t is by using IN:
#include <ntddk.h>
NTSTATUS DriverEntry(IN PDRIVER_OBJECT theDriverObject, IN PUNICODE_STRING theRegistryPath) {
DbgPrint("Hello World!\n");
return STATUS_SUCCESS;
}
Source: Subverting the Windows Kernel: Rootkits by Greg Hoglund & James Butler
Upvotes: 1
Reputation: 53326
More recommended way is using UNREFERENCED_PARAMETER()
macro, so your function can be changed to:
NTSTATUS DriverEntry(PDRIVER_OBJECT DriverObject, PUNICODE_STRING RegistryPath)
{
UNREFERENCED_PARAMETER(DriverObject);
UNREFERENCED_PARAMETER(RegistryPath);
DbgPrint("Hello, World");
return STATUS_SUCCESS;
}
Upvotes: 7