6

The Rich Header was presumably introduced by Microsoft in a previous version of Visual Studio. What was its original purpose and how does it achieve this? Is DanS the designer, similar to MZ?

2
  • 1
    Quite interesting topic, but isn't that header still part of today's build chain and wouldn't it thus serve still the same purpose (of identifying components used) as when invented?
    – Raffzahn
    Apr 19, 2023 at 13:14
  • @Raffzahn agree, I did not know this previously. Potentially the Rich header has remained unchanged since its inception. Apr 23, 2023 at 19:09

1 Answer 1

10

The Rich header is described in detail in this article by Daniel Pistelli. It contains identifiers for all the (Microsoft) compilers and related tools used to build the object files which end up in the executable, with a count of object files for each. It goes at least as far back as Visual C++ 6 (1998) and is placed in executables (including DLLs) by the Microsoft linker.

Its purpose isn’t documented; presumably it was introduced so that an object file’s producer could be determined after the fact, e.g. to debug build problems which aren’t immediately apparent, or track changes in object output back to their origin.

DanS might be the designer; a candidate is Dan Ruder, who wrote an article on dynamic linking published in the 1993 MSDN Library, but others disagree, suggesting instead Richard Shupak and Dan Spalding.

See also the Rich Header Research repository.

1
  • Great links. In the Daniel Pistelli article do you know what advantages a kernel debugger would give over a user mode one when it was used on LINK.exe? In the same article Riched32.lib was looked at, which seems to be a library for Rich Edit Controls, part of Windows Controls. The reason for choosing this library was probably the "Rich" part of the name and is unrelated to the name "Rich header" (fairly obvious but took two readings to understand this!), other libraries could have been chosen. Apr 23, 2023 at 19:54

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .