Using ObjBase.h from the latest SDK, VA seems to have difficulties with some of the defines there:
e.g.: CoUninitialize() - this function is shown in black and red underlined. Now, when I click on the function, the function seems to be unknown; definition bar is empty, no tooltips, no info in the HCB.
When I go to the definition of CoInitialize(), which is defined in the line before CoUninitialize(), VAX immediately knows about CoUninitialize too, and all occurences are shown with (almost) its proper definition.
Going through the definitions:
I am using it like:
struct InitOle
{
InitOle() { ::CoInitialize( 0 ); }
~InitOle() { ::CoUninitialize(); }
} _init_InitOle_;
Here CoUninitialize is unknown. Opening ObjBase.h makes the symbol known to VA. Typing anything in the file where I'm using the symbol, makes VA forget about the symbol again; switching to ObjBase.h and back, brings back VA's memories too.
Lets look at the definitions:
objbase.h(443):
WINOLEAPI CoInitialize(IN LPVOID pvReserved);
WINOLEAPI_(void) CoUninitialize(void);
The tooltip for CoInitialize shows: CoInitialize(IN LPVOID pvReserved) /* init/uninit */ (see the missing return type?)
The definition bar shows the correct definition.
The tooltip for CoUninitialize shows: EXTERN_C void STDAPICALLTYPE CoUninitialize (void)
The definition bar shows the same (interpreted) definition.
Going on to the WINOLEAPI... definitions -
hovering over WINOLEAPI shows the definition as #define STDAPI
Hovering over WINOLEAPI_ shows #define _(type) STDAPI_(type) - which is pretty wrong.
In both cases the definition bar shows the proper values, but the HCB remains mute.