in src/fc_activation_context.c [301:355]
HRESULT GetConfigurationPackageNames(FC_ACTIVATION_CONTEXT_HANDLE fc_activation_context_handle,
/* [retval][out] */ IFabricStringListResult** names)
{
HRESULT result;
if (
(fc_activation_context_handle == NULL) ||
(names == NULL)
)
{
LogError("invalid argument (FC_ACTIVATION_CONTEXT_HANDLE fc_activation_context_handle=%p, IFabricStringListResult * *names=%p",
fc_activation_context_handle, names);
result = E_INVALIDARG;
}
else
{
const wchar_t** allnames = malloc_2(fc_activation_context_handle->nFabricConfigurationPackages, sizeof(wchar_t*));
if (allnames == NULL)
{
LogError("failure in amlloc_2");
result = E_FAIL;
}
else
{
for (ULONG i = 0; i < fc_activation_context_handle->nFabricConfigurationPackages; i++)
{
IFabricConfigurationPackage* fabricConfigurationPackage = fc_activation_context_handle->iFabricConfigurationPackages[i]; /*shortcut*/
allnames[i] = fabricConfigurationPackage->lpVtbl->get_Description(fabricConfigurationPackage)->Name; /*fabric_string_list_result_create copies, we don't have to*/
}
FABRIC_STRING_LIST_RESULT_HANDLE fabric_string_list_result = fabric_string_list_result_create(fc_activation_context_handle->nFabricConfigurationPackages, allnames);
if (fabric_string_list_result == NULL)
{
LogError("failure in fabric_string_list_result_create");
result = E_FAIL;
}
else
{
*names = COM_WRAPPER_CREATE(FABRIC_STRING_LIST_RESULT_HANDLE, IFabricStringListResult, fabric_string_list_result, fabric_string_list_result_destroy);
if (*names == NULL)
{
LogError("failure in COM_WRAPPER_CREATE");
result = E_FAIL;
}
else
{
result = S_OK;
}
}
free((void*)allnames);
}
}
return result;
}