Geoff Chappell, Software Analyst
In the context of working with Shim Database (SDB) files, a TAG is Microsoft’s name for the first 16 bits of any one item in the file. Each item comprises the TAG, an optional size of data to follow, and then this amount of data. The high 4 bits of the TAG give its type. For some types, the size of data is implied by the type, such that the TAG is followed immediately by the implied amount of data. For others, the size is explicitly a dword immediately after the TAG and thus before the data.
Tag Type | Symbolic Name | Size of Data | Specific Interpretation of Data |
---|---|---|---|
0x1000 | TAG_TYPE_NULL | implicit: 0 bytes | |
0x2000 | TAG_TYPE_BYTE | implicit: 1 byte | |
0x3000 | TAG_TYPE_WORD | implicit: 2 bytes | |
0x4000 | TAG_TYPE_DWORD | implicit: 4 bytes | |
0x5000 | TAG_TYPE_QWORD | implicit: 8 bytes | |
0x6000 | TAG_TYPE_STRINGREF | implicit: 4 bytes | data is reference to string-table item |
0x7000 | TAG_TYPE_LIST | explicit | data is list of items |
0x8000 | TAG_TYPE_STRING | explicit | data is null-terminated Unicode string |
0x9000 | TAG_TYPE_BINARY | explicit |
Formally, a TAG is just a USHORT. What matters are the numerous possible values and the APPHELP versions for which these values are expected—and, from there, what any of them mean to whoever acts on them. This last part is not obviously well-defined, there being potentially many modules that interpret SDB files for potentially many different purposes. For the tables that follow, a TAG is regarded as defined for some APPHELP version if that version’s implementation of the SdbTagToString function produces a non-trivial string that doesn’t dismiss the tag as invalid. Version 1.0 refers to the SDBAPIU.DLL from Windows 2000 SP3 and SP4, which is the first known support for SDB files and is here taken as an APPHELP precursor.
For all the possible TAG values that were defined in this sense for Windows Vista, the symbolic names that Microsoft uses in its programming are known from contemporaneous documentation of the TAG. For all these values, what Microsoft documents as the programmatic name is TAG_name, where name is the tag-to-string conversion by the Windows Vista implementation of SdbTagToString. Extrapolation of this correspondence to later versions gives at least a reasonable guess at Microsoft’s names for the many values that Microsoft has since defined but not documented. Be aware, though, that this relationship is inferred by observation, not deduced by inspection. It cannot have been true before version 6.0 since in these earlier versions some tag-to-string conversions contain spaces or other characters that are invalid in C-language identifiers. The view taken here is that the symbolic name that Microsoft documented for version 6.0 was the symbolic name all along and that the tag-to-string conversions were changed for version 6.0 as deliberate tidying up. These cases are noted in the Remarks column.
As a quirk of version 6.2, the tables show two very different symbolic names as valid in that version for each of the three tags 0x4034, 0x6025 and 0x7020. This is because the table that the SdbTagToString implementation works from has two entries for each of these tags. Though the function can return a name only from one entry for each tag, it seems that both names are meaningful. Whether their assignment to the same numerical value was by design or oversight is not known, and they anyway get disambiguated in version 6.3.
Beware that this article’s measure of a tag’s validity in any version cannot be definitive. That a tag gets converted by the SdbTagToString function in some APPHELP version does not mean the tag actually does get used in that version, of APPHELP or of anything else from the same Windows version, though at least in such a case the tag evidently is defined. More difficult for enumerating the defined values is that a tag could be meaningful, even to APPHELP, yet somehow have got missed when preparing APPHELP’s tag-to-string conversions. Tracking down all cases would be impractical if not impossible, but one case is known. Though tag 0x4029 does not get a tag-to-string conversion from APPHELP until Windows 7, the APPHELP from Windows Vista knows it for other purposes, e.g., for its implementation of SdbReadApphelpDetailsData.
If tags 0x4028 and 0x4029 actually were defined for Windows Vista without having tag-to-string conversions, then Microsoft documented all the values that were defined for Windows Vista but has documented absolutely none that have been added since. Whether the reason that Microsoft ever documented any of the tags (or functions that work with them) truly did go away after Windows Vista is not known. Indeed, no reason is yet clear that Microsoft ever documented any values at all, even just for Windows Vista. It does seem fair to say, however, that Microsoft’s documentation was at best half-hearted, if not grudging. Conspicuously, the documentation’s definitions are not reproduced in any header from any known development kit. As usual at this website, the undocumented values are highlighted yellow.
Tags whose high 4 bits are 0 are followed by no data. In effect, they are boolean, with nothing to say beyond being present or absent.
Tag | Symbolic Name | Versions | Remarks |
---|---|---|---|
0x1001 | TAG_INCLUDE | 1.0 and higher | |
0x1002 | TAG_GENERAL | 1.0 and higher | |
0x1003 | TAG_MATCH_LOGIC_NOT | 1.0 and higher | |
0x1004 | TAG_APPLY_ALL_SHIMS | 1.0 and higher | |
0x1005 | TAG_USE_SERVICE_PACK_FILES | 5.1 from Windows XP SP1, and higher | |
0x1006 | TAG_MITIGATION_OS | 6.0 and higher | |
0x1007 | TAG_BLOCK_UPGRADE | 6.0 to 6.1 | next as 0x7029 |
TAG_TRACE_PCA | 6.2 and higher | ||
0x1008 | TAG_INCLUDEEXCLUDEDLL | 6.0 and higher | |
0x1009 | TAG_RAC_EVENT_OFF | 6.1 and higher | |
0x100A | TAG_TELEMETRY_OFF | 6.1 and higher | |
0x100B | TAG_SHIM_ENGINE_OFF | 6.1 and higher | |
0x100C | TAG_LAYER_PROPAGATION_OFF | 6.1 and higher | |
0x100D | TAG_REINSTALL_UPGRADE | 6.1 only | next as 0x7027 |
TAG_FORCE_CACHE | 6.2 and higher | ||
0x100E | TAG_MONITORING_OFF | 6.2 and higher | |
0x100F | TAG_QUIRK_OFF | 6.3 and higher | |
0x1010 | TAG_ELEVATED_PROP_OFF | 6.3 and higher | |
0x1011 | TAG_UPGRADE_ACTION_BLOCK_WEBSETUP | 6.3 from Windows 8.1 With Update, and higher | |
0x1012 | TAG_UPGRADE_ACTION_PROCEED_TO_MEDIASETUP | 6.3 from Windows 8.1 With Update, and higher |
See that two of these NULL tags change for Windows 8 from one extreme to the other, i.e., from carrying no data to having so many attributes, potentially, that they are made into List tags instead. Meanwhile, their old numerical values are reused, with completely different interpretations. It is not known whether these (and similar) redefinitions have caused any real-world problem from having the APPHELP from one Windows version read an SDB file that was prepared for a different Windows version. Though such mixing may be rare in whatever real-world practice Microsoft intends, defence against it certainly is not reliable. For instance, in advancing from Windows 7 to Windows 8, the implementation of the exported SdbQueryBlockUpgrade function simply changes from looking for TAG_BLOCK_UPGRADE as the NULL tag 0x1007 to looking for it as the List tag 0x7029.
Tags whose high 4 bits are 2 introduce one byte of data—and, in a database whose major version is 2 or higher, a byte of padding so that whatever tag follows is word-aligned. However, no BYTE tags are known to be defined.
Tags whose high 4 bits are 3 introduce one 2-byte word of data.
Tag | Symbolic Name | Versions |
---|---|---|
0x3001 | TAG_MATCH_MODE | 1.0 and higher |
0x3002 | TAG_QUIRK_COMPONENT_CODE_ID | 6.3 and higher |
0x3003 | TAG_QUIRK_CODE_ID | 6.3 and higher |
WORD tags have always had a second series in which the low 12 bits restart at 0x0801:
Tag | Symbolic Name | Versions |
---|---|---|
0x3801 | TAG_TAG | 1.0 and higher |
0x3802 | TAG_INDEX_TAG | 1.0 and higher |
0x3803 | TAG_INDEX_KEY | 1.0 and higher |
It seems to be merely conventional that the tags in such second series have special meaning to the large-scale structure of an SDB file and are plausibly the tags that are generated automatically when compiling an SDB file from XML input.
Tags whose high 4 bits are 4 introduce one 4-byte dword of data. Very many such tags are defined.
Tag | Symbolic Name | Versions | Remarks |
---|---|---|---|
0x4001 | TAG_SIZE | 1.0 and higher | |
0x4002 | TAG_OFFSET | 1.0 and higher | |
0x4003 | TAG_CHECKSUM | 1.0 and higher | |
0x4004 | TAG_SHIM_TAGID | 1.0 and higher | |
0x4005 | TAG_PATCH_TAGID | 1.0 and higher | |
0x4006 | TAG_MODULE_TYPE | 1.0 and higher | |
0x4007 | TAG_VERDATEHI | 1.0 and higher | string before 6.0 is VERFILEDATEHI |
0x4008 | TAG_VERDATELO | 1.0 and higher | string before 6.0 is VERFILEDATELO |
0x4009 | TAG_VERFILEOS | 1.0 and higher | |
0x400A | TAG_VERFILETYPE | 1.0 and higher | |
0x400B | TAG_PE_CHECKSUM | 1.0 and higher | |
0x400C | TAG_PREVOSMAJORVER | 1.0 and higher | string before 6.0 is PREVOSMAJORVERSION |
0x400D | TAG_PREVOSMINORVER | 1.0 and higher | string before 6.0 is PREVOSMINORVERSION |
0x400E | TAG_PREVOSPLATFORMID | 1.0 and higher | |
0x400F | TAG_PREVOSBUILDNO | 1.0 and higher | |
0x4010 | TAG_PROBLEMSEVERITY | 1.0 and higher | string before 6.0 is PROBLEM_SEVERITY |
0x4011 | TAG_LANGID | 1.0 and higher | string before 6.0 is APPHELP_LANGID |
0x4012 | TAG_VER_LANGUAGE | 1.0 and higher | |
0x4014 | TAG_ENGINE | 1.0 and higher | |
0x4015 | TAG_HTMLHELPID | 1.0 and higher | |
0x4016 | TAG_INDEX_FLAGS | 1.0 and higher | string before 6.0 is INDEXFLAGS |
0x4017 | TAG_FLAGS | 1.0 and higher | |
0x4018 | TAG_DATA_VALUETYPE | 1.0 and higher | string before 6.0 is VALUETYPE |
0x4019 | TAG_DATA_DWORD | 1.0 and higher | |
0x401A | TAG_LAYER_TAGID | 1.0 and higher | |
0x401B | TAG_MSI_TRANSFORM_TAGID | 1.0 and higher | |
0x401C | TAG_LINKER_VERSION | 1.0 and higher | |
0x401D | TAG_LINK_DATE | 1.0 and higher | |
0x401E | TAG_UPTO_LINK_DATE | 1.0 and higher | |
0x401F | TAG_OS_SERVICE_PACK | 1.0 and higher | |
0x4020 | TAG_FLAG_TAGID | 1.0 and higher | |
0x4021 | TAG_RUNTIME_PLATFORM | 1.0 and higher | |
0x4022 | TAG_OS_SKU | 5.1 from Windows XP SP1, and higher | |
0x4023 | TAG_OS_PLATFORM | 5.2 from Windows Server 2003 SP1 to 6.3 | |
TAG_DEPRECATED_OS_PLATFORM | 10.0 and higher | ||
0x4024 | TAG_APP_NAME_RC_ID | 6.0 and higher | |
0x4025 | TAG_VENDOR_NAME_RC_ID | 6.0 and higher | |
0x4026 | TAG_SUMMARY_MSG_RC_ID | 6.0 and higher | |
0x4027 | TAG_VISTA_SKU | 6.0 to 6.2 | |
0x4028 | TAG_DESCRIPTION_RC_ID | 6.1 and higher | |
0x4029 | TAG_PARAMETER1_RC_ID | 6.1 and higher | |
0x4030 | TAG_CONTEXT_TAGID | 6.1 and higher | |
0x4031 | TAG_EXE_WRAPPER | 6.1 and higher | |
0x4032 | TAG_URL_ID | 6.1 from Windows 7 SP1 only | next as 0x4034 |
TAG_EXE_TYPE | 6.2 and higher | ||
0x4033 | TAG_FROM_LINK_DATE | 6.2 and higher | |
0x4034 | TAG_URL_ID | 6.2 only | previously 0x4032; next as 0x404B |
TAG_REVISION_EQ | 6.2 and higher | ||
0x4035 | TAG_REVISION_LE | 6.2 and higher | |
0x4036 | TAG_REVISION_GE | 6.2 and higher | |
0x4037 | TAG_DATE_EQ | 6.2 and higher | |
0x4038 | TAG_DATE_LE | 6.2 and higher | |
0x4039 | TAG_DATE_GE | 6.2 and higher | |
0x403A | TAG_CPU_MODEL_EQ | 6.2 and higher | |
0x403B | TAG_CPU_MODEL_LE | 6.2 and higher | |
0x403C | TAG_CPU_MODEL_GE | 6.2 and higher | |
0x403D | TAG_CPU_FAMILY_EQ | 6.2 and higher | |
0x403E | TAG_CPU_FAMILY_LE | 6.2 and higher | |
0x403F | TAG_CPU_FAMILY_GE | 6.2 and higher | |
0x4040 | TAG_CREATOR_REVISION_EQ | 6.2 and higher | |
0x4041 | TAG_CREATOR_REVISION_LE | 6.2 and higher | |
0x4042 | TAG_CREATOR_REVISION_GE | 6.2 and higher | |
0x4043 | TAG_SIZE_OF_IMAGE | 6.2 and higher | |
0x4044 | TAG_SHIM_CLASS | 6.3 and higher | |
0x4045 | TAG_PACKAGEID_ARCHITECTURE | 6.2 and higher | |
0x4046 | TAG_REINSTALL_UPGRADE_TYPE | 6.2 and higher | |
0x4047 | TAG_BLOCK_UPGRADE_TYPE | 6.2 and higher | |
0x4048 | TAG_ROUTING_MODE | 6.2 and higher | |
0x4049 | TAG_OS_VERSION_VALUE | 6.2 and higher | |
0x404A | TAG_CRC_CHECKSUM | 6.2 and higher | |
0x404B | TAG_URL_ID | 6.3 and higher | previously 0x4034 |
0x404C | TAG_QUIRK_TAGID | 6.3 and higher | |
0x404E | TAG_MIGRATION_DATA_TYPE | 6.3 and higher | |
0x404F | TAG_UPGRADE_DATA | 6.3 and higher | |
0x4050 | TAG_MIGRATION_DATA_TAGID | 6.3 and higher | |
0x4051 | TAG_REG_VALUE_TYPE | 6.3 and higher | |
0x4052 | TAG_REG_VALUE_DATA_DWORD | 6.3 and higher | |
0x4053 | TAG_TEXT_ENCODING | 6.3 and higher | |
0x4054 | TAG_UX_BLOCKTYPE_OVERRIDE | 10.0 and higher | |
0x4055 | TAG_EDITION | 10.0 and higher | |
0x4056 | TAG_FW_LINK_ID | 10.0 and higher | |
0x4057 | TAG_KB_ARTICLE_ID | 10.0 and higher | |
0x4058 | TAG_UPGRADE_MODE | 10.0 and higher |
DWORD tags also have a second series:
Tag | Symbolic Name | Versions |
---|---|---|
0x4801 | TAG_TAGID | 1.0 and higher |
Tags whose high 4 bits are 5 introduce one 8-byte qword of data.
Tag | Symbolic Name | Versions | Remarks |
---|---|---|---|
0x5001 | TAG_TIME | 1.0 and higher | |
0x5002 | TAG_BIN_FILE_VERSION | 1.0 and higher | |
0x5003 | TAG_BIN_PRODUCT_VERSION | 1.0 and higher | |
0x5004 | TAG_MODTIME | 1.0 and higher | |
0x5005 | TAG_FLAG_MASK_KERNEL | 1.0 and higher | |
0x5006 | TAG_UPTO_BIN_PRODUCT_VERSION | 1.0 and higher | |
0x5007 | TAG_DATA_QWORD | 1.0 and higher | |
0x5008 | TAG_FLAG_MASK_USER | 1.0 and higher | |
0x5009 | TAG_FLAGS_NTVDM1 | 1.0 and higher | |
0x500A | TAG_FLAGS_NTVDM2 | 1.0 and higher | |
0x500B | TAG_FLAGS_NTVDM3 | 1.0 and higher | |
0x500C | TAG_FLAG_MASK_SHELL | 1.0 and higher | |
0x500D | TAG_UPTO_BIN_FILE_VERSION | 1.0 and higher | |
0x500E | TAG_FLAG_MASK_FUSION | 5.2 and higher | |
0x500F | TAG_FLAG_PROCESSPARAM | 5.2 from Windows Server 2003 SP1, and higher | string before 6.0 is FLAGS_PROCESSPARAM |
0x5010 | TAG_FLAG_LUA | 6.0 and higher | |
0x5011 | TAG_FLAG_INSTALL | 6.0 and higher | |
0x5012 | TAG_FROM_BIN_PRODUCT_VERSION | 6.2 and higher | |
0x5013 | TAG_FROM_BIN_FILE_VERSION | 6.2 and higher | |
0x5014 | TAG_PACKAGEID_VERSION | 6.2 and higher | |
0x5015 | TAG_FROM_PACKAGEID_VERSION | 6.2 and higher | |
0x5016 | TAG_UPTO_PACKAGEID_VERSION | 6.2 and higher | |
0x5017 | TAG_OSMAXVERSIONTESTED | 6.2 and higher | |
0x5018 | TAG_FROM_OSMAXVERSIONTESTED | 6.2 and higher | |
0x5019 | TAG_UPTO_OSMAXVERSIONTESTED | 6.2 and higher | |
0x501A | TAG_FLAG_MASK_WINRT | 6.3 and higher | |
0x501B | TAG_REG_VALUE_DATA_QWORD | 6.3 and higher | |
0x501C | TAG_QUIRK_ENABLED_UPTO_VERSION | 6.3 and higher | |
TAG_QUIRK_ENABLED_VERSION_LT | 10.0 and higher | ||
0x501D | TAG_SOURCE_OS | 10.0 and higher | |
0x501E | TAG_SOURCE_OS_LTE | 10.0 and higher | |
0x501F | TAG_SOURCE_OS_GTE | 10.0 and higher |
Tags whose high 4 bits are 6 are followed by 4-byte dword of data that has a very particular interpretation as referring to a string in the database’s string table. Specifically, the dword is the offset, in bytes, from the beginning of the string table (tag 0x7801) to a string item (tag 0x8801).
Tag | Symbolic Name | Versions | Remarks |
---|---|---|---|
0x6001 | TAG_NAME | 1.0 and higher | |
0x6002 | TAG_DESCRIPTION | 1.0 and higher | |
0x6003 | TAG_MODULE | 1.0 and higher | |
0x6004 | TAG_API | 1.0 and higher | |
0x6005 | TAG_VENDOR | 1.0 and higher | |
0x6006 | TAG_APP_NAME | 1.0 and higher | |
0x6008 | TAG_COMMAND_LINE | 1.0 and higher | |
0x6009 | TAG_COMPANY_NAME | 1.0 and higher | |
0x600A | TAG_DLLFILE | 1.0 and higher | |
0x600B | TAG_WILDCARD_NAME | 1.0 and higher | |
0x6010 | TAG_PRODUCT_NAME | 1.0 and higher | |
0x6011 | TAG_PRODUCT_VERSION | 1.0 and higher | |
0x6012 | TAG_FILE_DESCRIPTION | 1.0 and higher | |
0x6013 | TAG_FILE_VERSION | 1.0 and higher | |
0x6014 | TAG_ORIGINAL_FILENAME | 1.0 and higher | |
0x6015 | TAG_INTERNAL_NAME | 1.0 and higher | |
0x6016 | TAG_LEGAL_COPYRIGHT | 1.0 and higher | |
0x6017 | TAG_16BIT_DESCRIPTION | 1.0 and higher | string before 6.0 is S16BIT_DESCRIPTION |
0x6018 | TAG_APPHELP_DETAILS | 1.0 and higher | string before 6.0 is PROBLEM_DETAILS |
0x6019 | TAG_LINK_URL | 1.0 and higher | |
0x601A | TAG_LINK_TEXT | 1.0 and higher | |
0x601B | TAG_APPHELP_TITLE | 1.0 and higher | |
0x601C | TAG_APPHELP_CONTACT | 1.0 and higher | |
0x601D | TAG_SXS_MANIFEST | 1.0 and higher | |
0x601E | TAG_DATA_STRING | 1.0 and higher | |
0x601F | TAG_MSI_TRANSFORM_FILE | 1.0 and higher | |
0x6020 | TAG_16BIT_MODULE_NAME | 1.0 and higher | string before 6.0 is S16BIT_MODULE_NAME |
0x6021 | TAG_LAYER_DISPLAYNAME | 1.0 and higher | |
0x6022 | TAG_COMPILER_VERSION | 1.0 and higher | |
0x6023 | TAG_ACTION_TYPE | 5.1 from Windows XP SP1, and higher | |
0x6024 | TAG_EXPORT_NAME | 6.0 and higher | |
0x6025 | TAG_URL | 6.1 from Windows 7 SP1 to 6.2 | next as 0x602C |
TAG_VENDOR_ID | 6.2 and higher | ||
0x6026 | TAG_DEVICE_ID | 6.2 and higher | |
0x6027 | TAG_SUB_VENDOR_ID | 6.2 and higher | |
0x6028 | TAG_SUB_SYSTEM_ID | 6.2 and higher | |
0x6029 | TAG_PACKAGEID_NAME | 6.2 and higher | |
0x602A | TAG_PACKAGEID_PUBLISHER | 6.2 and higher | |
0x602B | TAG_PACKAGEID_LANGUAGE | 6.2 and higher | |
0x602C | TAG_URL | 6.3 and higher | previously 0x6025 |
0x602D | TAG_MANUFACTURER | 6.3 and higher | |
0x602E | TAG_MODEL | 6.3 and higher | |
0x602F | TAG_DATE | 6.3 and higher | |
0x6030 | TAG_REG_VALUE_NAME | 6.3 and higher | |
0x6031 | TAG_REG_VALUE_DATA_SZ | 6.3 and higher | |
0x6032 | TAG_MIGRATION_DATA_TEXT | 6.3 and higher | |
0x6033 | TAG_APP_STORE_PRODUCT_ID | 10.0 and higher | |
0x6034 | TAG_MORE_INFO_URL | 10.0 and higher |
Tags whose high 4 bits are 7 are followed by a 4-byte dword and some variable amount of data. The dword is the size, in bytes, of the data. In turn, the data is a list of child tags.
Tag | Symbolic Name | Versions | Remarks |
---|---|---|---|
0x7001 | TAG_DATABASE | 1.0 and higher | |
0x7002 | TAG_LIBRARY | 1.0 and higher | |
0x7003 | TAG_INEXCLUDE | 1.0 and higher | |
0x7004 | TAG_SHIM | 1.0 and higher | |
0x7005 | TAG_PATCH | 1.0 and higher | |
0x7006 | TAG_APP | 1.0 and higher | |
0x7007 | TAG_EXE | 1.0 and higher | |
0x7008 | TAG_MATCHING_FILE | 1.0 and higher | |
0x7009 | TAG_SHIM_REF | 1.0 and higher | |
0x700A | TAG_PATCH_REF | 1.0 and higher | |
0x700B | TAG_LAYER | 1.0 and higher | |
0x700C | TAG_FILE | 1.0 and higher | |
0x700D | TAG_APPHELP | 1.0 and higher | |
0x700E | TAG_LINK | 1.0 and higher | |
0x700F | TAG_DATA | 1.0 and higher | |
0x7010 | TAG_MSI_TRANSFORM | 1.0 and higher | string before 6.0 is “MSI TRANSFORM” |
0x7011 | TAG_MSI_TRANSFORM_REF | 1.0 and higher | string before 6.0 is “MSI TRANSFORM REF” |
0x7012 | TAG_MSI_PACKAGE | 1.0 and higher | string before 6.0 is “MSI PACKAGE” |
0x7013 | TAG_FLAG | 1.0 and higher | |
0x7014 | TAG_MSI_CUSTOM_ACTION | 1.0 and higher | string before 6.0 is “MSI CUSTOM ACTION” |
0x7015 | TAG_FLAG_REF | 1.0 and higher | |
0x7016 | TAG_ACTION | 5.1 from Windows XP SP1, and higher | |
0x7017 | TAG_LOOKUP | 6.0 and higher | |
0x7018 | TAG_CONTEXT | 6.1 and higher | |
0x7019 | TAG_CONTEXT_REF | 6.1 and higher | |
0x701A | TAG_KDEVICE | 6.2 and higher | |
0x701C | TAG_KDRIVER | 6.2 and higher | |
0x701E | TAG_DEVICE | 6.2 only | |
TAG_MATCHING_DEVICE | 6.3 and higher | ||
0x701F | TAG_ACPI | 6.2 and higher | |
0x7020 | TAG_SPC | 6.1 from Windows 7 SP1 to 6.2 | next as 0x702A |
TAG_BIOS | 6.2 and higher | ||
0x7021 | TAG_CPU | 6.2 and higher | |
0x7022 | TAG_OEM | 6.2 and higher | |
0x7023 | TAG_KFLAG | 6.2 and higher | |
0x7024 | TAG_KFLAG_REF | 6.2 and higher | |
0x7025 | TAG_KSHIM | 6.2 and higher | |
0x7026 | TAG_KSHIM_REF | 6.2 and higher | |
0x7027 | TAG_REINSTALL_UPGRADE | 6.2 and higher | previously 0x100D |
0x7028 | TAG_KDATA | 6.2 and higher | |
0x7029 | TAG_BLOCK_UPGRADE | 6.2 and higher | previously 0x1007 |
0x702A | TAG_SPC | 6.3 and higher | previously 0x7020 |
0x702B | TAG_QUIRK | 6.3 and higher | |
0x702C | TAG_QUIRK_REF | 6.3 and higher | |
0x702D | TAG_BIOS_BLOCK | 6.3 and higher | |
0x702E | TAG_MATCHING_INFO_BLOCK | 6.3 and higher | |
0x702F | TAG_DEVICE_BLOCK | 6.3 and higher | |
0x7030 | TAG_MIGRATION_DATA | 6.3 and higher | |
0x7031 | TAG_MIGRATION_DATA_REF | 6.3 and higher | |
0x7032 | TAG_MATCHING_REG | 6.3 and higher | |
0x7033 | TAG_MATCHING_TEXT | 6.3 and higher | |
0x7034 | TAG_MACHINE_BLOCK | 6.3 and higher | |
0x7035 | TAG_OS_UPGRADE | 6.3 and higher | |
0x7036 | TAG_PACKAGE | 6.3 and higher | |
0x7037 | TAG_PICK_ONE | 10.0 and higher | |
0x7038 | TAG_MATCH_PLUGIN | 10.0 and higher | |
0x7039 | TAG_MIGRATION_SHIM | 10.0 and higher | |
0x703A | TAG_UPGRADE_DRIVER_BLOCK | 10.0 and higher | |
0x703C | TAG_MIGRATION_SHIM_REF | 10.0 and higher | |
0x703D | TAG_CONTAINS_FILE | 10.0 and higher | |
0x703E | TAG_CONTAINS_HWID | 10.0 and higher | |
0x703F | TAG_DRIVER_PACKAGE_BLOCK | 10.0 and higher |
This sequence has gaps at 0x701B and 0x701D. It may be that these were planned to be TAG_KDEVICE_WILD and TAG_KDRIVER_WILD, which are known from error messages in the Compatibility Administrator, compatadmin.exe.
List tags have a second series:
Tag | Symbolic Name | Versions |
---|---|---|
0x7801 | TAG_STRINGTABLE | 1.0 and higher |
0x7802 | TAG_INDEXES | 1.0 and higher |
0x7803 | TAG_INDEX | 1.0 and higher |
Tags whose high 4 bits are 8 are followed by a 4-byte dword and some variable amount of data. The dword gives the size, in bytes, of the data. In turn, the data is a null-terminated Unicode string.
Tag | Symbolic Name | Versions | Remarks |
---|---|---|---|
0x8801 | TAG_STRINGTABLE_ITEM | 1.0 and higher | string before 6.0 is STRTAB_ITEM |
Tags whose high 4 bits are 9 are followed by a 4-byte dword and some variable amount of data—and, in a database whose major version is 2 or higher, a byte of padding so that whatever tag follows is word-aligned. The dword gives the size, in bytes, of the data.
Tag | Symbolic Name | Versions | Remarks |
---|---|---|---|
0x9002 | TAG_PATCH_BITS | 1.0 and higher | |
0x9003 | TAG_FILE_BITS | 1.0 and higher | |
0x9004 | TAG_EXE_ID | 1.0 and higher | string before 6.0 is “EXE_ID(GUID)” |
0x9005 | TAG_DATA_BITS | 1.0 and higher | |
0x9006 | TAG_MSI_PACKAGE_ID | 1.0 and higher | string before 6.0 is “MSI_PACKAGE_ID(GUID)” |
0x9007 | TAG_DATABASE_ID | 1.0 and higher | string before 6.0 is “DATABASE_ID(GUID)” |
0x9008 | TAG_CONTEXT_PLATFORM_ID | 6.1 and higher | |
0x9009 | TAG_CONTEXT_BRANCH_ID | 6.1 and higher | |
0x9010 | TAG_FIX_ID | 6.1 and higher | |
0x9011 | TAG_APP_ID | 6.1 and higher | |
0x9012 | TAG_REG_VALUE_DATA_BINARY | 6.3 and higher | |
0x9013 | TAG_TEXT | 6.3 and higher |
Binary tags have a second series:
Tag | Symbolic Name | Versions |
---|---|---|
0x9801 | TAG_INDEX_BITS | 1.0 and higher |