首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WDK-KMD警告C4100未引用的形参VS2015

WDK-KMD警告C4100未引用的形参VS2015
EN

Stack Overflow用户
提问于 2016-01-19 22:28:20
回答 3查看 631关注 0票数 2

我正在通过一本书学习windows的驱动程序开发。他们举了下面的例子:

代码语言:javascript
复制
#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);

}

每当我尝试编译这段代码时,我都会收到以下错误和警告:

代码语言:javascript
复制
error C2220: warning treated as error - no 'object' file generated
warning C4100: pDriverObject and RegPath: unreferenced formal parameter.

我已经在stackoveflow周围寻找了解决方案,但它们在这种情况下似乎不起作用。我已经尝试禁用编译器警告,仍然没有成功。

有没有人能说点什么?

EN

回答 3

Stack Overflow用户

发布于 2016-01-23 08:56:36

将警告保持在最高级别是最健康的做法。除了已经建议的解决方案之外,还有一个WDK宏,您可以在函数体中使用它来指示未使用该参数- UNREFERENCED_PARAMETER(param)

票数 3
EN

Stack Overflow用户

发布于 2016-01-19 23:18:40

禁用警告的一种方法是删除参数的名称。那么(对编译器而言)很明显你不能使用它。所以你不只是忘了。

如果您以后可能会使用它,或者想要将其名称保留为文档,您可以将其注释掉:

代码语言:javascript
复制
void Unload(PDRIVER_OBJECT /* pDriverObject */) {
    DbgPrint("Driver unloading...\n");
    return;
}
票数 1
EN

Stack Overflow用户

发布于 2016-01-19 22:38:24

编译器会警告您没有使用某些函数参数。您的项目还具有将警告视为错误的设置。

有几种方法可以解决这个问题。

  1. 更改项目设置,以便警告不会被视为错误。
  2. 添加一些使用参数的代码。

使用参数的示例:

代码语言:javascript
复制
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);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34879367

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档