WDK-KMD警告C4100未参考形式参数VS2015

时间:2016-01-19 14:28:20

标签: c device-driver wdk windows-kernel

我正在使用一本书学习Windows的驱动程序开发。 他们给出了以下例子:

error C2220: warning treated as error - no 'object' file generated
warning C4100: pDriverObject and RegPath: unreferenced formal parameter.

每当我尝试编译时,我都会收到这些错误和警告:

WeatherEntry

我查看了stackoveflow的解决方案,但在这种情况下它们似乎不起作用。 我已经尝试过禁用编译器警告,但仍然没有运气。

任何人都可以解释一下吗?

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

禁用警告的一种方法是删除参数的名称。然后很明显(对编译器)你不能使用它。所以你不会忘记。

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

void Unload(PDRIVER_OBJECT /* pDriverObject */) {
    DbgPrint("Driver unloading...\n");
    return;
}

答案 2 :(得分:0)

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

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

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

    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);
    }