windows - 获取 CTL_CODE 宏的“无法识别的符号”错误
问题描述
我正在尝试定义一个自定义 CTL_CODE 并将其隐藏在另一个宏下(如下所示)。该预处理器代码位于我的驱动程序的 CPP 文件中。可能需要注意的是,我的客户和司机都在同一个解决方案下,但是是两个独立的项目。驱动程序是一个空的 wdm 驱动程序,客户端是一个 Windows 控制台桌面应用程序。
#define PRIORITY_BOOSTER_DEVICE 0x8000
#define IOCTL_PRIORITY_BOOSTER_SET_PRIORITY CTL_CODE(PRIORITY_BOOSTER_DEVICE, \0x800, METHOD_NEITHER, FILE_ANY_ACCESS)
但是,在我的客户端中,当我尝试对 DeviceIoControl 调用使用“IOCTL_PRIORITY_BOOSTER_SET_PRIORITY”时,出现“无法识别的令牌”错误。我在下面粘贴了我的 DeviceIoControl 调用。经过一些试验,Visual Studio 将错误指向“CTL_CODE”宏本身。我很傻眼,因为这在驱动程序项目中没有问题,但在客户端项目中却有。此外,我不知道为什么问题出在 CTL_CODE 宏本身。我假设宏是在我必须安装的 WDK 依赖项中定义的。任何帮助将不胜感激,因为我已经在这个问题上苦苦挣扎了很长一段时间,并且在其他地方没有找到太多的报道,如果有的话。
BOOL success = DeviceIoControl(hDevice,
IOCTL_PRIORITY_BOOSTER_SET_PRIORITY,
&data,
sizeof(data),
nullptr,
0,
&returned,
nullptr);
很高兴根据要求添加更多信息。
解决方案
推荐阅读
- java - 如何从“没有时区的时间戳”字段收集到没有时区的 Java 时间戳
- matlab - 禁用 Matlab 符号有理逼近
- javascript - 我可以在 HTML 中播放 JS 生成的音频吗
- android - 无法从下载文件夹访问图像
- python - 在 Mac 上使用终端安装 Matplotlib,但在 Python 中使用 ModuleNotFoundError
- android - 发现具有不同 Items 的 List 中的特定项目不为空
- typescript - 如何以打字稿表示法解决 addEventListener 上的错误
- c# - 为什么我的 RunWorkerCompletedEventHandler 能够并行多次调用主线程?
- windows - 如何在 Windows 命令行中运行命令集
- docker - Docker 映像 jenkins/jenkins:lts-alpine DNS 问题