When you are debugging a program and you hover over a GUID variable, MSVC retrieves both the variable name (e.g. CLSID_FilterGraph) and the human name (e.g. Filter Graph Object).
It does the second by looking at HKCR\CLSID\GUID - but where does it get the variable name from?? It's not in the registry.
Any ideas?
The debugging info in the .pdb, probably. It just needs to iterate the CLSIDs defined in the mumble_i.c file generated by MIDL. No problem matching them, they are after all globally unique :)