How does it work?

MagNumDB is a database that contains about 350,000 items. These items are constants, names, values all extracted from more than 6,000 header files (.h, .hxx, .hpp, .idl, etc.) provided by standard Windows and Visual Studio SDKs and WDKs.

Some values have been extracted from the very special uuid.lib file that contains the value of thousands of guids and property keys, not present anywhere else in header files. This can explain some duplicates (because names in uuid.lib are not always exactly the same as names in .h parsed files...).

It also contains around 36,0000 undocumented guids that we found ... meeeeep ...

 "C2P5"

To build this database, we have tried many existing parsers, things like CLANG or other fine tools, but they just don't suit our needs. They can't handle thousands of files that don't compile together, they can't handle some specific (or just very old) Microsoft constructs or annotations, they don't remember the stack of #define directives that led to a definition, they only give you a final AST, not a partial one, etc.

So, in the end, we have written a C/C++ parser named C2P5 (for C/CPP/PreProcessor/Parser), tailored specifically for computing constants. C2P5 is capable of preprocessing, parsing and partially evaluating all header files as if they were included in a one big virtual project (that of course, does not compile) on a 32G RAM machine. It currently supports the following preprocessor and C/C++ constructs:

  • #define preprocessor that define constants
  • #define preprocessor that define expression to compute constants
  • C and C++ constants, strings and enum definitions, and some level of pointerness
  • Special GUID constructs like DECLSPEC_UUID, DEFINE_GUIDSTRUCT, MIDL_INTERFACE, you name it
  • PROPERTYKEY constructs
  • Some IDL constructs
  • Etc.

The parser remembers dynamic preprocessor definitions (#if, #ifdef, etc.) that are conditions for constants definitions and expression computation. All parsed items are saved in the database, as well as the associated conditions. There may be more than one item corresponding to a given name, if there are differences in their associated conditions stack.

C2P5 supports the following types of constants, regardless of the way they are defined in source files:

  • integer, signed or unsigned, from 8-bit to 128-bit
  • floating point number, single (32-bit) or double (64-bit)
  • globally unique identifier, or guid, uuid, CLSID, IID, etc.
  • string, in narrow, wide, or utf-8/16/32 formats
  • character, in narrow, wide, or utf-8/16/32 formats
  • pointer, a constant cast as a pointer
  • property key, or PROPERTYKEY, or PKEY, a combination of a guid (fmtid) and a 32-bit integer (id).

 Powered by

C2P5 and this MagNumDB web site are written in C# and use a Lucene database as a full-text search engine. C2P5 uses a custom ANTLR4cs C grammar for expression parsing, not for preprocessor parsing.

 

 Frequently Asked Questions

  • Q: Can I run custom queries?
    A: Yes. You can use Lucene's query syntax. Note the Database is case insensitive. Check out the list of columns with their corresponding database column names:

    • Index: the item's index.
    • Name: the item's name, or title. For enum values, it's prefixed with the enum's name.
      Corresponding database field: title.
    • Type: the item's type, expressed in a specific, universal system.
      Corresponding database's field: valuetype, but use the value of the Storage type column for queries on items type.
    • Value: the item's value. For string values, it's displayed as is w/o quotes nor escaping.
      Corresponding database field: value. There is also a typedvalue field that can contain database's Int32, Int64, Float, Double or String typed values.
    • Hex Value: the item's hexadecimal value, only valid for integer types.
      There is no corresponding database field.
    • Signed Value: the item's signed value, only valid for integer and double types. Useful when you found a unsigned number and want to get the corresponding signed value (uint -> int for example).
      There is no corresponding database field.
    • Source lines(s): the source lines from which the item was extracted. Comments and characters such as TAB, CR are preserved.
      Corresponding database field: source.
    • File path: the file path from which the item was extracted, terminated by the line index.
      Corresponding database field: filepath. There are also directory and filename fields. filename is useful to query for values in a given file.
    • Score: Database's score value. Items are returned sorted by score.
    • Guid formats: a utility columns that proposes all possible guid formats. Only valid for guid types.
      There is no corresponding database field
    • Char type: the character encoding (narrow, wide, etc.). Only valid for char and string values.
      Corresponding database field: chartype.
    • Storage type: the exact storage type in the database. Only used for specific queries.
      Corresponding database field: valuetype.
    • Conditions: the list of preprocessor conditions for a given item. If a condition is surrounded with a REVERSE function, it means the reverse condition of what's surrounded was the condition.
      Corresponding database field: conditions. There may be multiple conditions fields for one item.

    Some important points to note:

    • If you search for a negative number (like error codes expressed using signed integers), you can surround the search with double quotes, for example searching for "-2147009290" is equivalent to searching for 0x80073CF6, 80073CF6 (or even 3CF6 in this specific case). If you don't surround negative numbers with double quotes, the system will search for signed and unsigned corresponding values.
    • The full-text search uses items' name, value, hex value, guid formats, source lines, etc. so refine your search if you get back too many items.
    • You can search for guid binary values using just a part of their full definition. For example, if you search for '79eac9c5', it will get you 3 guid entries
    • Leading wild card search (*whatever) is allowed, but it may slow down the search significantly.

    Here are some example or custom queries:

    title:wm_user returns the WM_USER Windows message item, not all items that reference the WM_USER token.

    title:wm_u* returns all items (Windows messages probably) whose name starts with WM_U*.

    value:1024 AND title:wm_* returns all items (Windows messages probably) whose name starts with WM_U* and value is 1024. Note AND must be UPPERCASE for database to understand it as an AND operator.

    value:"00000002-0000-0000-C000-000000000046" returns the IMalloc IID guid value.

  • Q: I always get back 400 items at most. Why?
    A: The MagNumDb site currently limits the number of returned items to this value by design. This should be enough for most real search scenarios (like enums with a big list of values).

  • Q: Some values are empty. Why?
    A: The expression evaluator cannot always compute the final value, because it sometimes require contextual information (custom defines, compiler architecture, etc.) that the parser doesn't have at parsing time. You can enable the Source line(s) column to check what's the corresponding source and try to work it out by yourself. The origin file path and line number is also included.

  • Q: Can I get all values for a given enum?
    A: Sure. For example, __VSHPROPID is the name of an enum, and a query like this: parent:__VSHPROPID will get all the enum's values (66 entries).

  • Q: I sometimes get back items whose name starts with "__magnumdb__enum_". Why?
    A: C allows unnamed enums. The MagNumDb parser just gives them a name, using the defining file name and a counter.

  • Q: I sometimes get back the same item/name twice or more with different values. For example:  TARGET_IS_NT60_OR_LATER. Why?
    A: This can be the case with defines. Their value may be different if they were surrounded by # directives (#if, #else, etc.) in the original source code. You can enable the Condition(s) column to check what are the corresponding conditions for a given item.
    Note: if a condition is surrounded with a funny REVERSE function token, it means the reverse condition of what's surrounded.

 Database Metrics

  • Last update date: Thursday May 13, 2020
  • Items count: 340878
  • Parsed files count: 8447
  • Windows SDK version: 10.0.19041.0
  • NetFx SDK version: 4.8
  • MSVC Tools version: 14.25.28610

 

 Contact

We welcome feedback.
Seen anything missing? A bug? A wrong value? Do you have any suggestion for improvements? Do you have an idea for a cool new feature?

Please contact us here

 About MagNumDB

MagNumDB  2017-2020 Simon Mourier V1.3.2. All rights reserved.

Profile for Simon Mourier at Stack Overflow, Q&A for professional and enthusiast programmers


All product names, logos, and brands are property of their respective owners. All company, product and service names used in this website are for identification purposes only.

All values, names, source code fragments displayed here have been extracted from files that are property of their respective owners.

THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND OTHER THAN AS SPECIFICALLY SET FORTH IN THE LICENSE AGREEMENT, INCLUDING WITHOUT LIMITATION WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Index Score Name Type Value Hex value Signed value Guid formats Char type Storage type Source line(s) File path Condition(s)
Index Score Name Type Value Hex value Signed value Guid formats Char type Storage type Source line(s) File path Condition(s)
1 4.46436 Behavior Int32 266 0x0000010A 266 System.Int32
static const int Behavior = 266;
%ProgramFiles(x86)%\Microsoft Visual Studio\2019\Professional\VSSDK\VisualStudioIntegration\Common\Inc\KnownImageIds.h(326,0)
2 3.280621 TEXTMODE Enum
typedef enum tagTextMode
{
	TM_PLAINTEXT			= 1,
	TM_RICHTEXT 			= 2,	// Default behavior 
	TM_SINGLELEVELUNDO		= 4,
	TM_MULTILEVELUNDO		= 8,	// Default behavior 
	TM_SINGLECODEPAGE		= 16,
	TM_MULTICODEPAGE		= 32	// Default behavior 
} TEXTMODE;
%ProgramFiles(x86)%\Windows Kits\10\Include\10.0.19041.0\um\Richedit.h(144,0)
  • If WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
3 3.156779 CRYPTUI_ENABLE_REVOCATION_CHECK_CHAIN_EXCLUDE_ROOT Int32 2048 0x00000800 2048 System.Int32
#define CRYPTUI_ENABLE_REVOCATION_CHECK_CHAIN_EXCLUDE_ROOT CRYPTUI_ENABLE_REVOCATION_CHECKING // Changed the default behavior
%ProgramFiles(x86)%\Windows Kits\10\Include\10.0.19041.0\um\cryptuiapi.h(635,0)
  • If WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
4 3.156779 INSTALLTYPE::INSTALLTYPE_DEFAULT Int32 0 0x00000000 0 System.Int32
INSTALLTYPE_DEFAULT            =    0,   // set to indicate default behavior
%ProgramFiles(x86)%\Windows Kits\10\Include\10.0.19041.0\um\Msi.h(448,0)
  • If WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
5 3.156779 TEXTMODE::TM_RICHTEXT Int32 2 0x00000002 2 System.Int32
TM_RICHTEXT 			= 2,	// Default behavior
%ProgramFiles(x86)%\Windows Kits\10\Include\10.0.19041.0\um\Richedit.h(147,0)
  • If WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
6 3.156779 TEXTMODE::TM_MULTILEVELUNDO Int32 8 0x00000008 8 System.Int32
TM_MULTILEVELUNDO		= 8,	// Default behavior
%ProgramFiles(x86)%\Windows Kits\10\Include\10.0.19041.0\um\Richedit.h(149,0)
  • If WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
7 3.156779 TEXTMODE::TM_MULTICODEPAGE Int32 32 0x00000020 32 System.Int32
TM_MULTICODEPAGE		= 32	// Default behavior
%ProgramFiles(x86)%\Windows Kits\10\Include\10.0.19041.0\um\Richedit.h(151,0)
  • If WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
8 2.678616 NTDSSETTINGS_OPT_FORCE_KCC_WHISTLER_BEHAVIOR Int32 64 0x00000040 64 System.Int32
#define NTDSSETTINGS_OPT_FORCE_KCC_WHISTLER_BEHAVIOR   ( 1 << 6 ) /* force KCC to operate in Whistler behavior mode */
#define NTDSSETTINGS_OPT_FORCE_KCC_WHISTLER_BEHAVIOR   ( 1 << 6 ) /* force KCC to operate in Whistler behavior mode */
%ProgramFiles(x86)%\Windows Kits\10\Include\10.0.19041.0\um\NtDsAPI.h(726,0)
  • If WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_PKG_WINMGMT)
9 2.525424 LOCALE_SSORTLOCALE Int32 123 0x0000007B 123 System.Int32
#define LOCALE_SSORTLOCALE            0x0000007b   // Name of locale to use for sorting/collation/casing behavior.
%ProgramFiles(x86)%\Windows Kits\10\Include\10.0.19041.0\um\winnls.h(720,0)
  • Ifndef NONLS
  • If WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES)
  • If (WINVER >= _WIN32_WINNT_WIN7)
10 2.525424 MUI_CONSOLE_FILTER Int32 256 0x00000100 256 System.Int32
#define MUI_CONSOLE_FILTER                  0x100    // SetThreadPreferredUILanguages takes on console specific behavior
%ProgramFiles(x86)%\Windows Kits\10\Include\10.0.19041.0\um\winnls.h(1003,0)
  • Ifndef NONLS
  • If WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES)
  • If (WINVER >= 0x0600)
11 2.525424 MUI_COMPLEX_SCRIPT_FILTER Int32 512 0x00000200 512 System.Int32
#define MUI_COMPLEX_SCRIPT_FILTER           0x200    // SetThreadPreferredUILanguages takes on complex script specific behavior
%ProgramFiles(x86)%\Windows Kits\10\Include\10.0.19041.0\um\winnls.h(1004,0)
  • Ifndef NONLS
  • If WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES)
  • If (WINVER >= 0x0600)
12 2.525424 IDN_ALLOW_UNASSIGNED Int32 1 0x00000001 1 System.Int32
#define IDN_ALLOW_UNASSIGNED        0x01  // Allow unassigned "query" behavior per RFC 3454
%ProgramFiles(x86)%\Windows Kits\10\Include\10.0.19041.0\um\winnls.h(1359,0)
  • Ifndef NONLS
  • If WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
  • If (WINVER >= 0x0600)
13 2.525424 IDN_EMAIL_ADDRESS Int32 4 0x00000004 4 System.Int32
#define IDN_EMAIL_ADDRESS           0x04  // Enable EAI algorithmic fallback for email local parts behavior
%ProgramFiles(x86)%\Windows Kits\10\Include\10.0.19041.0\um\winnls.h(1361,0)
  • Ifndef NONLS
  • If WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
  • If (WINVER >= 0x0600)
14 2.525424 FOF_ALLOWUNDO Int32 64 0x00000040 64 System.Int32
#define FOF_ALLOWUNDO              0x0040  // enable undo including Recycle behavior for IFileOperation::Delete()
%ProgramFiles(x86)%\Windows Kits\10\Include\10.0.19041.0\um\shellapi.h(257,0)
  • If WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
  • If (WINVER >= 0x0400)
15 2.525424 SEE_MASK_FLAG_DDEWAIT Int32 256 0x00000100 256 System.Int32
#define SEE_MASK_FLAG_DDEWAIT      SEE_MASK_NOASYNC // Use SEE_MASK_NOASYNC instead of SEE_MASK_FLAG_DDEWAIT as it more accuratly describes the behavior
%ProgramFiles(x86)%\Windows Kits\10\Include\10.0.19041.0\um\shellapi.h(397,0)
  • If WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
  • If (WINVER >= 0x0400)
16 2.525424 SHI1005_FLAGS_RESTRICT_EXCLUSIVE_OPENS Int32 256 0x00000100 256 System.Int32
#define SHI1005_FLAGS_RESTRICT_EXCLUSIVE_OPENS  0x00100          // Used to disallow read-deny read behavior
%ProgramFiles(x86)%\Windows Kits\10\Include\10.0.19041.0\um\lmshare.h(368,0)
  • If WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
17 2.525424 ARCONTENT_PHASE_UNKNOWN Int32 0 0x00000000 0 System.Int32
#define ARCONTENT_PHASE_UNKNOWN          0x00000000   // We can be in any phase.  This is XP behavior.
%ProgramFiles(x86)%\Windows Kits\10\Include\10.0.19041.0\um\shobjidl_core.h(12411,0)
  • If WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
  • If (NTDDI_VERSION >= NTDDI_VISTA)
18 2.525424 PROGDLG_NORMAL Int32 0 0x00000000 0 System.Int32
#define PROGDLG_NORMAL          0x00000000      // default normal progress dlg behavior
%ProgramFiles(x86)%\Windows Kits\10\Include\10.0.19041.0\um\shlobj_core.h(1414,0)
  • If WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
19 2.525424 _TASKDIALOG_FLAGS::TDF_SIZE_TO_CONTENT Int32 16777216 0x01000000 16777216 System.Int32
TDF_SIZE_TO_CONTENT                 = 0x01000000  // used by ShellMessageBox to emulate MessageBox sizing behavior
%ProgramFiles(x86)%\Windows Kits\10\Include\10.0.19041.0\um\commctrl.h(7649,0)
  • If WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
  • Ifndef NOUSER
  • Ifndef NOTASKDIALOG
  • If (NTDDI_VERSION >= NTDDI_VISTA)
20 2.525424 COPYFLG_FORCE_FILE_IN_USE Int32 8 0x00000008 8 System.Int32
#define COPYFLG_FORCE_FILE_IN_USE       0x00000008  // force file-in-use behavior
%ProgramFiles(x86)%\Windows Kits\10\Include\10.0.19041.0\um\setupapi.h(473,0)
  • If WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
21 2.525424 SP_COPY_FORCE_IN_USE Int32 512 0x00000200 512 System.Int32
#define SP_COPY_FORCE_IN_USE        0x0000200   // Force target-in-use behavior
%ProgramFiles(x86)%\Windows Kits\10\Include\10.0.19041.0\um\setupapi.h(3219,0)
  • If WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
22 2.525424 AIF_FORCE_FILE_IN_USE Int32 8 0x00000008 8 System.Int32
#define AIF_FORCE_FILE_IN_USE   0x00000008              // force file-in-use behavior
%ProgramFiles(x86)%\Windows Kits\10\Include\10.0.19041.0\um\advpub.h(418,0)
  • If WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
23 2.525424 CSF_EXPLORER Int32 8 0x00000008 8 System.Int32
#define CSF_EXPLORER                    0x00000008L // IN: use new OFN_EXPLORER custom template behavior
%ProgramFiles(x86)%\Windows Kits\10\Include\10.0.19041.0\um\OleDlg.h(1142,0)
  • If WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
  • Ifndef RC_INVOKED
24 2.525424 JET_bitConfigStoreReadControlDefault Int32 0 0x00000000 0 System.Int32
#define JET_bitConfigStoreReadControlDefault                     0x0        //  Use default ESE behavior.
%ProgramFiles(x86)%\Windows Kits\10\Include\10.0.19041.0\um\esent.h(219,0)
  • If !defined(_JET_INCLUDED)
25 2.209746 ECppCoreCheckWarningCodes::WARNING_LEFTSHIFT_NEGATIVE_SIGNED_NUMBER Int32 26453 0x00006755 26453 System.Int32
WARNING_LEFTSHIFT_NEGATIVE_SIGNED_NUMBER = 26453,                   // Arithmetic overflow: Left shift of a negative signed number is undefined behavior (io.4).
%ProgramFiles(x86)%\Microsoft Visual Studio\2019\Professional\VC\Auxiliary\VS\include\CppCoreCheck\warnings.h(54,0)
26 2.209746 BSOS_OPTIONS::BSOS_DEFAULT Int32 0 0x00000000 0 System.Int32
BSOS_DEFAULT = 0,             // when creating a byte seeker over a stream, base randomaccessstream behavior on the STGM mode from IStream::Stat.
%ProgramFiles(x86)%\Windows Kits\10\Include\10.0.19041.0\winrt\shcore.h(18,0)
  • If (NTDDI_VERSION >= NTDDI_WIN8)
  • If WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
27 1.894068 TileOptions::CopyOnDeployment Int32 4 0x00000004 4 System.Int32
[deprecated("TileOptions.CopyOnDeployment may be altered or unavailable for releases after Windows Phone 8.1. Instead, use SecondaryTile.RoamingEnabled to control roaming behavior.", deprecate, Windows.Foundation.UniversalApiContract, 1.0)]
                CopyOnDeployment   = 0x4
%ProgramFiles(x86)%\Windows Kits\10\Include\10.0.19041.0\winrt\windows.ui.startscreen.idl(247,0)
28 1.894068 ECppCoreCheckWarningCodes::WARNING_SHIFT_COUNT_NEGATIVE_OR_TOO_BIG Int32 26452 0x00006754 26452 System.Int32
WARNING_SHIFT_COUNT_NEGATIVE_OR_TOO_BIG = 26452,                    // Arithmetic overflow: Left shift count is negative or greater than or equal to the operand size which is undefined behavior (io.3).
%ProgramFiles(x86)%\Microsoft Visual Studio\2019\Professional\VC\Auxiliary\VS\include\CppCoreCheck\warnings.h(53,0)
29 1.894068 INSTALLTYPE Enum
typedef enum tagINSTALLTYPE
{
	INSTALLTYPE_DEFAULT            =    0,   // set to indicate default behavior
	INSTALLTYPE_NETWORK_IMAGE      =    1,   // set to indicate network install
	INSTALLTYPE_SINGLE_INSTANCE    =    2,   // set to indicate a particular instance 
}INSTALLTYPE;
%ProgramFiles(x86)%\Windows Kits\10\Include\10.0.19041.0\um\Msi.h(446,0)
  • If WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
30 1.894068 JET_bitCreateHintAppendSequential Int32 2 0x00000002 2 System.Int32
#define JET_bitCreateHintAppendSequential           0x00000002  //  This bit will enable Append split behavior to grow according to the growth dynamics of the table (set by cbMinExtent, ulGrowth, cbMaxExtent).
%ProgramFiles(x86)%\Windows Kits\10\Include\10.0.19041.0\um\esent.h(2489,0)
  • If !defined(_JET_INCLUDED)
  • If ( JET_VERSION >= 0x0601 )
31 1.894068 JET_bitCreateHintHotpointSequential Int32 4 0x00000004 4 System.Int32
#define JET_bitCreateHintHotpointSequential         0x00000004  //  This bit will enable Hotpoint split behavior to grow according to the growth dynamics of the table (set by cbMinExtent, ulGrowth, cbMaxExtent).
%ProgramFiles(x86)%\Windows Kits\10\Include\10.0.19041.0\um\esent.h(2490,0)
  • If !defined(_JET_INCLUDED)
  • If ( JET_VERSION >= 0x0601 )
32 1.894068 BSOS_OPTIONS Enum
typedef enum
{
    BSOS_DEFAULT = 0,             // when creating a byte seeker over a stream, base randomaccessstream behavior on the STGM mode from IStream::Stat.
    BSOS_PREFERDESTINATIONSTREAM  // in addition, utilize IDestinationStreamFactory::GetDestinationStream.
} BSOS_OPTIONS;
%ProgramFiles(x86)%\Windows Kits\10\Include\10.0.19041.0\winrt\shcore.h(16,0)
  • If (NTDDI_VERSION >= NTDDI_WIN8)
  • If WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
33 1.339308 JET_bitSetContiguousLV Int32 262144 0x00040000 262144 System.Int32
#define JET_bitSetContiguousLV              0x00040000 /* Allocates the long-value across contiguous pages (at potentialy space saving costs) for better IO behavior. Valid only with JET_bitSetSeparateLV. Invalid (or not implemented) with certain long-value operations such as replace, and certain column options such as compression. Use across many varying LVs sizes may cause space fragmentation / allocation issues. */
#define JET_bitSetContiguousLV              0x00040000 /* Allocates the long-value across contiguous pages (at potentialy space saving costs) for better IO behavior. Valid only with JET_bitSetSeparateLV. Invalid (or not implemented) with certain long-value operations such as replace, and certain column options such as compression. Use across many varying LVs sizes may cause space fragmentation / allocation issues. */
%ProgramFiles(x86)%\Windows Kits\10\Include\10.0.19041.0\um\esent.h(2478,0)
  • If !defined(_JET_INCLUDED)
  • If ( JET_VERSION >= 0x0601 )
  • If ( JET_VERSION >= 0x0A01 )
34 1.262712 _TASKDIALOG_FLAGS Enum
enum _TASKDIALOG_FLAGS
{
    TDF_ENABLE_HYPERLINKS               = 0x0001,
    TDF_USE_HICON_MAIN                  = 0x0002,
    TDF_USE_HICON_FOOTER                = 0x0004,
    TDF_ALLOW_DIALOG_CANCELLATION       = 0x0008,
    TDF_USE_COMMAND_LINKS               = 0x0010,
    TDF_USE_COMMAND_LINKS_NO_ICON       = 0x0020,
    TDF_EXPAND_FOOTER_AREA              = 0x0040,
    TDF_EXPANDED_BY_DEFAULT             = 0x0080,
    TDF_VERIFICATION_FLAG_CHECKED       = 0x0100,
    TDF_SHOW_PROGRESS_BAR               = 0x0200,
    TDF_SHOW_MARQUEE_PROGRESS_BAR       = 0x0400,
    TDF_CALLBACK_TIMER                  = 0x0800,
    TDF_POSITION_RELATIVE_TO_WINDOW     = 0x1000,
    TDF_RTL_LAYOUT                      = 0x2000,
    TDF_NO_DEFAULT_RADIO_BUTTON         = 0x4000,
    TDF_CAN_BE_MINIMIZED                = 0x8000,
    TDF_NO_SET_FOREGROUND               = 0x00010000, // Don't call SetForegroundWindow() when activating the dialog
    TDF_SIZE_TO_CONTENT                 = 0x01000000  // used by ShellMessageBox to emulate MessageBox sizing behavior
};
%ProgramFiles(x86)%\Windows Kits\10\Include\10.0.19041.0\um\commctrl.h(7628,0)
  • If WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
  • Ifndef NOUSER
  • Ifndef NOTASKDIALOG
  • If (NTDDI_VERSION >= NTDDI_VISTA)
  • If (NTDDI_VERSION >= NTDDI_WIN8)
35 1.104873 TileOptions Enum
enum TileOptions
            {
                [deprecated("TileOptions.None may be altered or unavailable for release after Windows Phone 8.1.", deprecate, Windows.Foundation.UniversalApiContract, 1.0)]
                None               = 0x0,
                [deprecated("TileOptions.ShowNameOnLogo may be altered or unavailable for releases after Windows Phone 8.1. Instead, use SecondaryTile.VisualElements.ShowNameOnSquare150x150Logo.", deprecate, Windows.Foundation.UniversalApiContract, 1.0)]
                ShowNameOnLogo     = 0x1,
                [deprecated("TileOptions.ShowNameWideOnLogo may be altered or unavailable for releases after Windows Phone 8.1. Instead, use SecondaryTile.VisualElements.ShowNameOnWide310x150Logo.", deprecate, Windows.Foundation.UniversalApiContract, 1.0)]
                ShowNameOnWideLogo = 0x2,
                [deprecated("TileOptions.CopyOnDeployment may be altered or unavailable for releases after Windows Phone 8.1. Instead, use SecondaryTile.RoamingEnabled to control roaming behavior.", deprecate, Windows.Foundation.UniversalApiContract, 1.0)]
                CopyOnDeployment   = 0x4
            };
%ProgramFiles(x86)%\Windows Kits\10\Include\10.0.19041.0\winrt\windows.ui.startscreen.idl(239,0)
36 0.9470338 URegexpFlag Enum
typedef enum URegexpFlag{

    /**  Enable case insensitive matching.  @stable ICU 2.4 */
    /**  Enable case insensitive matching.  @stable ICU 2.4 */
    UREGEX_CASE_INSENSITIVE = 2,

    /**  Allow white space and comments within patterns  @stable ICU 2.4 */
    /**  Allow white space and comments within patterns  @stable ICU 2.4 */
    UREGEX_COMMENTS         = 4,

    /**  If set, '.' matches line terminators,  otherwise '.' matching stops at line end.
      *  @stable ICU 2.4 */
    UREGEX_DOTALL           = 32,
    
    /**  If set, treat the entire pattern as a literal string.  
      */
    UREGEX_LITERAL = 16,

    /**   Control behavior of "$" and "^"
      *   @stable ICU 2.4 */
    UREGEX_MULTILINE        = 8,
    
    /**   Unix-only line endings.
      */
    UREGEX_UNIX_LINES = 1,

    /**  Unicode word boundaries.
      */
    UREGEX_UWORD            = 256,

     /**  Error on Unrecognized backslash escapes.
       */
     UREGEX_ERROR_ON_UNKNOWN_ESCAPES = 512

}  URegexpFlag;
%ProgramFiles(x86)%\Windows Kits\10\Include\10.0.19041.0\um\icu.h(37154,0)
  • If (NTDDI_VERSION >= NTDDI_WIN10_RS3)
  • If !UCONFIG_NO_REGULAR_EXPRESSIONS
  • If (NTDDI_VERSION >= NTDDI_WIN10_RS2)
37 0.3906315 ECppCoreCheckWarningCodes Enum
enum ECppCoreCheckWarningCodes
{
    WARNING_NO_RAW_POINTER_ASSIGNMENT = 26400,                          // Do not assign the result of an allocation or a function call with an owner<T> return value to a raw pointer, use owner<T> instead (i.11).
    WARNING_DONT_DELETE_NON_OWNER = 26401,                              // Do not delete a raw pointer that is not an owner<T> (i.11).
    WARNING_DONT_HEAP_ALLOCATE_MOVABLE_RESULT = 26402,                  // Return a scoped object instead of a heap-allocated if it has a move constructor (r.3).
    WARNING_RESET_OR_DELETE_OWNER = 26403,                              // Reset or explicitly delete an owner<T> pointer '%1$s' (r.3).
    WARNING_DONT_DELETE_INVALID = 26404,                                // Do not delete an owner<T> which may be in invalid state (r.3).
    WARNING_DONT_ASSIGN_TO_VALID = 26405,                               // Do not assign to an owner<T> which may be in valid state (r.3).
    WARNING_DONT_ASSIGN_RAW_TO_OWNER = 26406,                           // Do not assign a raw pointer to an owner<T> (r.3).
    WARNING_DONT_HEAP_ALLOCATE_UNNECESSARILY = 26407,                   // Prefer scoped objects, don't heap-allocate unnecessarily (r.5).
    WARNING_NO_MALLOC_FREE = 26408,                                     // Avoid malloc() and free(), prefer the nothrow version of new with delete (r.10).
    WARNING_NO_NEW_DELETE = 26409,                                      // Avoid calling new and delete explicitly, use std::make_unique<T> instead (r.11).
    WARNING_NO_REF_TO_CONST_UNIQUE_PTR = 26410,                         // The parameter '%1$s' is a reference to const unique pointer, use const T* or const T& instead (r.32).
    WARNING_NO_REF_TO_UNIQUE_PTR = 26411,                               // The parameter '%1$s' is a reference to unique pointer and it is never reassigned or reset, use T* or T& instead (r.33).
    WARNING_RESET_LOCAL_SMART_PTR = 26414,                              // Move, copy, reassign or reset a local smart pointer '%1$s' (r.5).
    WARNING_SMART_PTR_NOT_NEEDED = 26415,                               // Smart pointer parameter '%1$s' is used only to access contained pointer. Use T* or T& instead (r.30).
    WARNING_NO_RVALUE_REF_SHARED_PTR = 26416,                           // Shared pointer parameter '%1$s' is passed by rvalue reference. Pass by value instead (r.34).
    WARNING_NO_LVALUE_REF_SHARED_PTR = 26417,                           // Shared pointer parameter '%1$s' is passed by reference and not reset or reassigned. Use T* or T& instead (r.35).
    WARNING_NO_VALUE_OR_CONST_REF_SHARED_PTR = 26418,                   // Shared pointer parameter '%1$s' is not copied or moved. Use T* or T& instead (r.36).
    WARNING_NO_GLOBAL_INIT_CALLS = 26426,                               // Global initializer calls a non-constexpr function '%1$s' (i.22).
    WARNING_NO_GLOBAL_INIT_EXTERNS = 26427,                             // Global initializer accesses extern object '%1$s' (i.22).
    WARNING_USE_NOTNULL = 26429,                                        // Symbol '%1$s' is never tested for nullness, it can be marked as not_null (f.23).
    WARNING_TEST_ON_ALL_PATHS = 26430,                                  // Symbol '%1$s' is not tested for nullness on all paths (f.23).
    WARNING_DONT_TEST_NOTNULL = 26431,                                  // The type of expression '%1$s' is already gsl::not_null. Do not test it for nullness (f.23).
    WARNING_DEFINE_OR_DELETE_SPECIAL_OPS = 26432,                       // If you define or delete any default operation in the type '%1$s', define or delete them all (c.21).
    WARNING_OVERRIDE_EXPLICITLY = 26433,                                // Function '%1$s' should be marked with 'override' (c.128).
    WARNING_DONT_HIDE_METHODS = 26434,                                  // Function '%1$s' hides a non-virtual function '%2$s' (c.128).
    WARNING_SINGLE_VIRTUAL_SPECIFICATION = 26435,                       // Function '%1$s' should specify exactly one of 'virtual', 'override', or 'final' (c.128).
    WARNING_NEED_VIRTUAL_DTOR = 26436,                                  // The type '%1$s' with a virtual function needs either public virtual or protected non-virtual destructor (c.35).
    WARNING_DONT_SLICE = 26437,                                         // Do not slice (es.63).
    WARNING_NO_GOTO = 26438,                                            // Avoid 'goto' (es.76).
    WARNING_SPECIAL_NOEXCEPT = 26439,                                   // This kind of function may not throw. Declare it 'noexcept' (f.6).
    WARNING_DECLARE_NOEXCEPT = 26440,                                   // Function '%1$s' can be declared 'noexcept' (f.6).
    WARNING_NO_UNNAMED_GUARDS = 26441,                                  // Guard objects must be named (cp.44).
    WARNING_NO_EXPLICIT_DTOR_OVERRIDE = 26443,                          // Overriding destructor should not use explicit 'override' or 'virtual' specifiers (c.128).
    WARNING_NO_UNNAMED_RAII_OBJECTS = 26444,                            // Avoid unnamed objects with custom construction and destruction (es.84).
    WARNING_NO_SPAN_REF = 26445,                                        // A reference to gsl::span or std::string_view may be an indication of a lifetime issue (gsl.view).
    WARNING_USE_GSL_AT = 26446,                                         // Prefer to use gsl::at() instead of unchecked subscript operator (bounds.4).
    WARNING_DONT_THROW_IN_NOEXCEPT = 26447,                             // The function is declared 'noexcept' but calls function '%1$s()' which may throw exceptions (f.6).
    WARNING_USE_GSL_FINALLY = 26448,                                    // Consider using gsl::finally if final action is intended (gsl.util).
    WARNING_NO_SPAN_FROM_TEMPORARY = 26449,                             // gsl::span or std::string_view created from a temporary will be invalid when the temporary is invalidated (gsl.view).
    WARNING_RESULT_OF_ARITHMETIC_OPERATION_PROVABLY_LOSSY = 26450,      // Arithmetic overflow: '%1$s' operation causes overflow at compile time. Use a wider type to store the operands (io.1).
    WARNING_RESULT_OF_ARITHMETIC_OPERATION_CAST_TO_LARGER_SIZE = 26451, // Arithmetic overflow: Using operator '%1$s' on a %2$d byte value and then casting the result to a %3$d byte value. Cast the value to the wider type before calling operator '%1$s' to avoid overflow (io.2).
    WARNING_SHIFT_COUNT_NEGATIVE_OR_TOO_BIG = 26452,                    // Arithmetic overflow: Left shift count is negative or greater than or equal to the operand size which is undefined behavior (io.3).
    WARNING_LEFTSHIFT_NEGATIVE_SIGNED_NUMBER = 26453,                   // Arithmetic overflow: Left shift of a negative signed number is undefined behavior (io.4).
    WARNING_RESULT_OF_ARITHMETIC_OPERATION_NEGATIVE_UNSIGNED = 26454,   // Arithmetic overflow: '%1$s' operation produces a negative unsigned result at compile time (io.5).
    WARNING_DEFAULT_CTOR_NOEXCEPT = 26455,                              // Default constructor may not throw. Declare it 'noexcept' (f.6).
    WARNING_DONT_HIDE_OPERATORS = 26456,                                // Operator '%1$s' hides a non-virtual operator '%2$s' (c.128).
    WARNING_NO_RAW_POINTER_IN_STL_RANGE_CHECKED = 26459,                // You called an STL function '%s' with a raw pointer parameter at position '%d' that may be unsafe - this relies on the caller to check that the passed values are correct. Consider wrapping your range in a gsl::span and pass as a span iterator (stl.1).
    WARNING_USE_CONST_REFERENCE_ARGUMENTS = 26460,                      // The reference argument '%s' for function '%s' can be marked as const (con.3).
    WARNING_USE_CONST_POINTER_ARGUMENTS = 26461,                        // The pointer argument '%s' for function '%s' can be marked as a pointer to const (con.3).
    WARNING_USE_CONST_POINTER_FOR_VARIABLE = 26462,                     // The value pointed to by '%1$s' is assigned only once, mark it as a pointer to const (con.4).
    WARNING_USE_CONST_FOR_ELEMENTS = 26463,                             // The elements of array '%1$s' are assigned only once, mark elements const (con.4).
    WARNING_USE_CONST_POINTER_FOR_ELEMENTS = 26464,                     // The values pointed to by elements of array '%1$s' are assigned only once, mark elements as pointer to const (con.4).
    WARNING_NO_CONST_CAST_UNNECESSARY = 26465,                          // Don't use const_cast to cast away const or volatile. const_cast is not required; constness or volatility is not being removed by this conversion (type.3).
    WARNING_NO_STATIC_DOWNCAST_POLYMORPHIC = 26466,                     // Don't use static_cast downcasts. A cast from a polymorphic type should use dynamic_cast (type.2).
    WARNING_NO_REINTERPRET_CAST_FROM_VOID_PTR = 26471,                  // Don't use reinterpret_cast. A cast from void* can use static_cast (type.1).
    WARNING_NO_CASTS_FOR_ARITHMETIC_CONVERSION = 26472,                 // Don't use a static_cast for arithmetic conversions. Use brace initialization, gsl::narrow_cast or gsl::narrow (type.1).
    WARNING_NO_IDENTITY_CAST = 26473,                                   // Don't cast between pointer types where the source type and the target type are the same (type.1).
    WARNING_NO_IMPLICIT_CAST = 26474,                                   // Don't cast between pointer types when the conversion could be implicit (type.1).
    WARNING_NO_FUNCTION_STYLE_CASTS = 26475,                            // Do not use function style C-casts (es.49).
    WARNING_USE_VARIANT = 26476,                                        // Expression/symbol '%s' uses a naked union '%s' with multiple type pointers: Use variant instead (type.7).
    WARNING_USE_NULLPTR_NOT_CONSTANT = 26477,                           // Use 'nullptr' rather than 0 or NULL (es.47).
    WARNING_NO_MOVE_OP_ON_CONST = 26478,                                // Don't use std::move on constant variables. (es.56).
    WARNING_NO_POINTER_ARITHMETIC = 26481,                              // Don't use pointer arithmetic. Use span instead (bounds.1).
    WARNING_NO_DYNAMIC_ARRAY_INDEXING = 26482,                          // Only index into arrays using constant expressions (bounds.2).
    WARNING_STATIC_INDEX_OUT_OF_RANGE = 26483,                          // Value %1$lld is outside the bounds (0, %2$lld) of variable '%3$s'. Only index into arrays using constant expressions that are within bounds of the array (bounds.2).
    WARNING_NO_ARRAY_TO_POINTER_DECAY = 26485,                          // Expression '%1$s': No array to pointer decay (bounds.3).
    WARNING_LIFETIMES_FUNCTION_PRECONDITION_VIOLATION = 26486,          // Don't pass a pointer that may be invalid to a function. Parameter %1$d '%2$s' in call to '%3$s' may be invalid (lifetime.3).
    WARNING_LIFETIMES_FUNCTION_POSTCONDITION_VIOLATION = 26487,         // Don't return a pointer '%1$s' that may be invalid (lifetime.4).
    WARNING_LIFETIMES_DEREF_NULL_POINTER = 26488,                       // Do not dereference a potentially null pointer: '%1$s'. '%2$s' was null at line %3$u (lifetime.1).
    WARNING_LIFETIMES_DEREF_INVALID_POINTER = 26489,                    // Don't dereference a pointer that may be invalid: '%1$s'. '%2$s' may have been invalidated at line %3$u (lifetime.1).
    WARNING_NO_REINTERPRET_CAST = 26490,                                // Don't use reinterpret_cast (type.1).
    WARNING_NO_STATIC_DOWNCAST = 26491,                                 // Don't use static_cast downcasts (type.2).
    WARNING_NO_CONST_CAST = 26492,                                      // Don't use const_cast to cast away const or volatile (type.3).
    WARNING_NO_CSTYLE_CAST = 26493,                                     // Don't use C-style casts (type.4).
    WARNING_VAR_USE_BEFORE_INIT = 26494,                                // Variable '%1$s' is uninitialized. Always initialize an object (type.5).
    WARNING_MEMBER_UNINIT = 26495,                                      // Variable '%1$s' is uninitialized. Always initialize a member variable (type.6).
    WARNING_USE_CONST_FOR_VARIABLE = 26496,                             // The variable '%1$s' is assigned only once, mark it as const (con.4).
    WARNING_USE_CONSTEXPR_FOR_FUNCTION = 26497,                         // The function '%1$s' could be marked constexpr if compile-time evaluation is desired (f.4).
    WARNING_USE_CONSTEXPR_FOR_FUNCTIONCALL = 26498,                     // The function '%1$s' is constexpr, mark variable '%2$s' constexpr if compile-time evaluation is desired (con.5).
    WARNING_USE_OF_A_MOVED_FROM_OBJECT = 26800,                         // Use of a moved from object: ''%1$s'' (lifetime.1).
    WARNING_COROUTINES_USE_AFTER_FREE_CAPTURE = 26810,                  // Lifetime of captured variable ''%1$s'' might end by the time the coroutine is resumed (lifetime.1).
    WARNING_COROUTINES_USE_AFTER_FREE_PARAM = 26811,                    // Lifetime of the memory referenced by parameter ''%1$s'' might end by the time the coroutine is resumed (lifetime.1).
    WARNING_USE_ENUM_CLASS_INSTEAD_OF_ENUM = 26812,                     // The enum type '%1$s' is unscoped. Prefer 'enum class' over 'enum' (Enum.3).
    WARNING_USE_CONSTEXPR_RATHER_THAN_CONST = 26814,                    // The const variable '%1$s' can be computed at compile-time. Consider using constexpr (con.5).
};
%ProgramFiles(x86)%\Microsoft Visual Studio\2019\Professional\VC\Auxiliary\VS\include\CppCoreCheck\warnings.h(10,0)