in src/vswhere.lib/Formatter.cpp [540:564]
HRESULT Formatter::GetProductId(_In_ ISetupInstance* pInstance, _Out_ VARIANT* pvtProductId)
{
ISetupInstance2Ptr instance;
auto hr = pInstance->QueryInterface(&instance);
if (SUCCEEDED(hr))
{
ISetupPackageReferencePtr reference;
hr = instance->GetProduct(&reference);
if (SUCCEEDED(hr) && !!reference)
{
variant_t vt;
hr = reference->GetId(&vt.bstrVal);
if (SUCCEEDED(hr))
{
vt.vt = VT_BSTR;
*pvtProductId = vt.Detach();
}
}
}
return hr;
}