Search code examples
c++cflags

Strange values in MS flags for debug print


I see in the Microsoft driver code example debug trace flags:

#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

As I know flags should be 2 in the power (like 1, 2, 4, 8, 16, 32) to not intersect. But why DEBUG_TRACE_ALL_IO is 10 and DEBUG_TRACE_INFO is 20 and not 16 & 32?


Solution

  • Because values in this code are hex. 0x10 = 16.