我正在通过一本书学习windows的驱动程序开发。他们举了下面的例子:
#include "ntddk.h"
void Unload(PDRIVER_OBJECT pDriverObject) {
DbgPrint("Driver unloading...\n");
return;
}
NTSTATUS DriverEntry(PDRIVER_OBJECT pDriverObject, PUNICODE_STRING RegPath) {
pDriverObject->DriverUnload=Unload;
DbgPrint("Driver has been loaded..");
return (STATUS_SUCCESS);
}每当我尝试编译这段代码时,我都会收到以下错误和警告:
error C2220: warning treated as error - no 'object' file generated
warning C4100: pDriverObject and RegPath: unreferenced formal parameter.我已经在stackoveflow周围寻找了解决方案,但它们在这种情况下似乎不起作用。我已经尝试禁用编译器警告,仍然没有成功。
有没有人能说点什么?
发布于 2016-01-23 08:56:36
将警告保持在最高级别是最健康的做法。除了已经建议的解决方案之外,还有一个WDK宏,您可以在函数体中使用它来指示未使用该参数- UNREFERENCED_PARAMETER(param)。
发布于 2016-01-19 23:18:40
禁用警告的一种方法是删除参数的名称。那么(对编译器而言)很明显你不能使用它。所以你不只是忘了。
如果您以后可能会使用它,或者想要将其名称保留为文档,您可以将其注释掉:
void Unload(PDRIVER_OBJECT /* pDriverObject */) {
DbgPrint("Driver unloading...\n");
return;
}发布于 2016-01-19 22:38:24
编译器会警告您没有使用某些函数参数。您的项目还具有将警告视为错误的设置。
有几种方法可以解决这个问题。
使用参数的示例:
void Unload(PDRIVER_OBJECT pDriverObject) {
DbgPrint("Driver of type %d unloading...\n", pDriverObject->Type);
return;
}
NTSTATUS DriverEntry(PDRIVER_OBJECT pDriverObject, PUNICODE_STRING RegPath) {
pDriverObject->DriverUnload=Unload;
DbgPrint("Driver has been loaded... (RegPath pointer=%p)\n", RegPath);
return (STATUS_SUCCESS);
}https://stackoverflow.com/questions/34879367
复制相似问题