c - 什么是 WINVER 0x501?没有它的 RegisterDeviceNotification 错误

标签 c windows winapi usb device-driver

我在代码中使用了 RegisterDeviceNotification API。如果我不使用 #define WINVER 0x501,它就不起作用(出现链接器错误)。

1) 当我查看窗口 Winuser.h 时,RegisterDeviceNotificationA 定义在 #if(WINVER >= 0x0500) 下。这是什么原因?

2) 为了使 RegisterDeviceNotificationA 正常工作,我在自己的 .h 文件中声明了所有声明,但没有 #if(WINVER >= 0x0500)。这是正确的方法吗?

3) 我的另一个问题是在没有 winver 的情况下声明 RegisterDeviceNotificationA 有什么问题吗? Winver有什么用?请详细解释一下。

最佳答案

WINVER 等定义的主要目的是用最新的编译器编译旧代码。

如果您正在编写新代码,则需要在您的 cpp 文件或项目文件中定义此变量以及可能的其他几个变量。该值是您要定位的 Windows 版本。 Microsoft 就是这样设计的。

将系统定义复制到您的代码中是极坏的做法

关于c - 什么是 WINVER 0x501?没有它的 RegisterDeviceNotification 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11519926/

相关文章:

c++ - 如何使用 C/C++ 获取 .ini 文件中的键数

c - 如何使用系统调用Read?段错误(核心转储)错误

c - 为什么我的程序在提供输入后无法运行?

c - 使用指针操作打印输入的字符串

windows - 直接控制 ATA 命令

编译 Windows PostgreSQL 9.5 64 位 C 语言函数

windows - NTFS 文件系统时间

C++/Win32 最小可能的 MessageBox ("Hello") app exe?

c++ - 如何调试意外终止的 win32 进程?

c++ - 内存 DC 上的 SelectObject