我正在使用一本书学习Windows的驱动程序开发。 他们给出了以下例子:
error C2220: warning treated as error - no 'object' file generated
warning C4100: pDriverObject and RegPath: unreferenced formal parameter.
每当我尝试编译时,我都会收到这些错误和警告:
WeatherEntry
我查看了stackoveflow的解决方案,但在这种情况下它们似乎不起作用。 我已经尝试过禁用编译器警告,但仍然没有运气。
任何人都可以解释一下吗?
答案 0 :(得分:2)
将警告保持在最高水平是最健康的做法。除了已经建议的解决方案之外,还有一个WDK宏,您可以在函数体内使用它来指示未使用该参数 - UNREFERENCED_PARAMETER(param)
。
答案 1 :(得分:1)
禁用警告的一种方法是删除参数的名称。然后很明显(对编译器)你不能使用它。所以你不会忘记。
如果您以后可能会使用它,或者想将该名称保留为文档,您可以将其注释掉:
void Unload(PDRIVER_OBJECT /* pDriverObject */) {
DbgPrint("Driver unloading...\n");
return;
}
答案 2 :(得分:0)
编译器警告您不要使用某些函数参数。您的项目还具有将警告视为错误的设置。
有几种方法可以解决这个问题。
使用参数的示例:
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);
}