aboutsummaryrefslogtreecommitdiff
path: root/src/api/burn/balutil/balinfo.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/api/burn/balutil/balinfo.cpp')
-rw-r--r--src/api/burn/balutil/balinfo.cpp43
1 files changed, 42 insertions, 1 deletions
diff --git a/src/api/burn/balutil/balinfo.cpp b/src/api/burn/balutil/balinfo.cpp
index 2746f49e..d9cc9b76 100644
--- a/src/api/burn/balutil/balinfo.cpp
+++ b/src/api/burn/balutil/balinfo.cpp
@@ -166,7 +166,7 @@ LExit:
166 166
167DAPI_(HRESULT) BalInfoAddRelatedBundleAsPackage( 167DAPI_(HRESULT) BalInfoAddRelatedBundleAsPackage(
168 __in BAL_INFO_PACKAGES* pPackages, 168 __in BAL_INFO_PACKAGES* pPackages,
169 __in LPCWSTR wzId, 169 __in_z LPCWSTR wzId,
170 __in BOOTSTRAPPER_RELATION_TYPE relationType, 170 __in BOOTSTRAPPER_RELATION_TYPE relationType,
171 __in BOOL /*fPerMachine*/, 171 __in BOOL /*fPerMachine*/,
172 __out_opt BAL_INFO_PACKAGE** ppPackage 172 __out_opt BAL_INFO_PACKAGE** ppPackage
@@ -228,6 +228,47 @@ LExit:
228} 228}
229 229
230 230
231DAPI_(HRESULT) BalInfoAddUpdateBundleAsPackage(
232 __in BAL_INFO_PACKAGES* pPackages,
233 __in_z LPCWSTR wzId,
234 __in_z LPCWSTR /*wzPreviousId*/,
235 __out_opt BAL_INFO_PACKAGE** ppPackage
236 )
237{
238 HRESULT hr = S_OK;
239 BAL_INFO_PACKAGE* pPackage = NULL;
240
241 // Check to see if the bundle is already in the list of packages.
242 for (DWORD i = 0; i < pPackages->cPackages; ++i)
243 {
244 if (CSTR_EQUAL == ::CompareStringW(LOCALE_NEUTRAL, 0, wzId, -1, pPackages->rgPackages[i].sczId, -1))
245 {
246 ExitFunction1(hr = HRESULT_FROM_WIN32(ERROR_ALREADY_EXISTS));
247 }
248 }
249
250 // Add the update bundle as a package.
251 hr = MemEnsureArraySize(reinterpret_cast<LPVOID*>(&pPackages->rgPackages), pPackages->cPackages + 1, sizeof(BAL_INFO_PACKAGE), 2);
252 ExitOnFailure(hr, "Failed to allocate memory for update bundle package information.");
253
254 pPackage = pPackages->rgPackages + pPackages->cPackages;
255 ++pPackages->cPackages;
256
257 hr = StrAllocString(&pPackage->sczId, wzId, 0);
258 ExitOnFailure(hr, "Failed to copy update bundle package id.");
259
260 pPackage->type = BAL_INFO_PACKAGE_TYPE_BUNDLE_UPDATE;
261
262 if (ppPackage)
263 {
264 *ppPackage = pPackage;
265 }
266
267LExit:
268 return hr;
269}
270
271
231DAPI_(HRESULT) BalInfoFindPackageById( 272DAPI_(HRESULT) BalInfoFindPackageById(
232 __in BAL_INFO_PACKAGES* pPackages, 273 __in BAL_INFO_PACKAGES* pPackages,
233 __in LPCWSTR wzId, 274 __in LPCWSTR wzId,