调试打印的MS标志中的奇怪值

Bra*_* Ds 1 c c++ flags

我在Microsoft驱动程序代码示例中看到调试跟踪标志:

#define DEBUG_TRACE_ERROR                           0x00000001  // Errors - whenever we return a failure code
#define DEBUG_TRACE_LOAD_UNLOAD                     0x00000002  // Loading/unloading of the filter
#define DEBUG_TRACE_INSTANCES                       0x00000004  // Attach / detatch of instances

#define DEBUG_TRACE_METADATA_OPERATIONS             0x00000008  // Operation to access / modify in memory metadata

#define DEBUG_TRACE_ALL_IO                          0x00000010  // All IO operations tracked by this filter

#define DEBUG_TRACE_INFO                            0x00000020  // Misc. information

#define DEBUG_TRACE_ALL                             0xFFFFFFFF  // All flags
Run Code Online (Sandbox Code Playgroud)

据我所知,标志应该是2的功率(如1,2,4,8,16,32)不相交.但是为什么DEBUG_TRACE_ALL_IO是10而DEBUG_TRACE_INFO 是20而不是16&32?

And*_*ovs 6

因为此代码中的值是十六进制.0x10 = 16.