in src/vswhere.lib/Formatter.cpp [331:355]
void Formatter::WritePackages(_In_ ISetupInstance* pInstance)
{
ISetupInstance2Ptr instance2;
LPSAFEARRAY psaPackages;
auto hr = pInstance->QueryInterface(&instance2);
if (SUCCEEDED(hr))
{
hr = instance2->GetPackages(&psaPackages);
if (SUCCEEDED(hr) && psaPackages->rgsabound[0].cElements)
{
StartArray(L"packages");
SafeArray<ISetupPackageReference*> saPackages(psaPackages);
const auto packages = saPackages.Elements();
for (const auto& package : packages)
{
WritePackage(package);
}
EndArray();
}
}
}