in src/vswhere/Program.cpp [133:164]
void GetEnumerator(_In_ const CommandArgs& args, _In_ ISetupConfigurationPtr& query, _In_ IEnumSetupInstancesPtr& e)
{
if (!query)
{
return;
}
// If all instances are requested, try to get the proper enumerator; otherwise, fall back to original enumerator.
if (args.get_All())
{
ISetupConfiguration2Ptr query2;
auto hr = query->QueryInterface(&query2);
if (SUCCEEDED(hr))
{
hr = query2->EnumAllInstances(&e);
if (FAILED(hr))
{
throw win32_error(hr);
}
}
}
if (!e)
{
auto hr = query->EnumInstances(&e);
if (FAILED(hr))
{
throw win32_error(hr);
}
}
}