HRESULT GetConfigurationPackage()

in src/fc_activation_context.c [377:421]


HRESULT GetConfigurationPackage(FC_ACTIVATION_CONTEXT_HANDLE fc_activation_context_handle,
    /* [in] */ LPCWSTR configPackageName,
    /* [retval][out] */ IFabricConfigurationPackage** configPackage)
{
    HRESULT result;
    if (
        (fc_activation_context_handle == NULL) ||
        (configPackageName == NULL) ||
        (configPackage == NULL)
        )
    {
        LogError("invalid argument FC_ACTIVATION_CONTEXT_HANDLE fc_activation_context_handle=%p, LPCWSTR configPackageName=%ls, IFabricConfigurationPackage * *configPackage=%p",
            fc_activation_context_handle,
            MU_WP_OR_NULL(configPackageName),
            configPackage);
        result = E_INVALIDARG;
    }
    else
    {
        uint32_t i;
        IFabricConfigurationPackage* fc_package = NULL;
        for (i = 0; i < fc_activation_context_handle->nFabricConfigurationPackages; i++)
        {
            fc_package = fc_activation_context_handle->iFabricConfigurationPackages[i];
            if (wcscmp(fc_package->lpVtbl->get_Description(fc_package)->Name, configPackageName) == 0)
            {
                break;
            }
        }

        if (i == fc_activation_context_handle->nFabricConfigurationPackages)
        {
            LogError("could not find the package named %ls", configPackageName);
            result = E_NOT_SET;
        }
        else
        {
            fc_package->lpVtbl->AddRef(fc_package);
            *configPackage = fc_package;

            result = S_OK;
        }
    }
    return result;
}