aboutsummaryrefslogtreecommitdiff
path: root/src/engine/payload.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/engine/payload.cpp')
-rw-r--r--src/engine/payload.cpp46
1 files changed, 6 insertions, 40 deletions
diff --git a/src/engine/payload.cpp b/src/engine/payload.cpp
index f29fa2bd..72eb3476 100644
--- a/src/engine/payload.cpp
+++ b/src/engine/payload.cpp
@@ -190,9 +190,8 @@ extern "C" void PayloadsUninitialize(
190 memset(pPayloads, 0, sizeof(BURN_PAYLOADS)); 190 memset(pPayloads, 0, sizeof(BURN_PAYLOADS));
191} 191}
192 192
193extern "C" HRESULT PayloadExtractFromContainer( 193extern "C" HRESULT PayloadExtractUXContainer(
194 __in BURN_PAYLOADS* pPayloads, 194 __in BURN_PAYLOADS* pPayloads,
195 __in_opt BURN_CONTAINER* pContainer,
196 __in BURN_CONTAINER_CONTEXT* pContainerContext, 195 __in BURN_CONTAINER_CONTEXT* pContainerContext,
197 __in_z LPCWSTR wzTargetDir 196 __in_z LPCWSTR wzTargetDir
198 ) 197 )
@@ -215,7 +214,7 @@ extern "C" HRESULT PayloadExtractFromContainer(
215 ExitOnFailure(hr, "Failed to get next stream."); 214 ExitOnFailure(hr, "Failed to get next stream.");
216 215
217 // find payload by stream name 216 // find payload by stream name
218 hr = FindEmbeddedBySourcePath(pPayloads, pContainer, sczStreamName, &pPayload); 217 hr = PayloadFindEmbeddedBySourcePath(pPayloads, sczStreamName, &pPayload);
219 ExitOnFailure(hr, "Failed to find embedded payload: %ls", sczStreamName); 218 ExitOnFailure(hr, "Failed to find embedded payload: %ls", sczStreamName);
220 219
221 // make file path 220 // make file path
@@ -241,15 +240,11 @@ extern "C" HRESULT PayloadExtractFromContainer(
241 { 240 {
242 pPayload = &pPayloads->rgPayloads[i]; 241 pPayload = &pPayloads->rgPayloads[i];
243 242
244 // if the payload is part of the container 243 // if the payload has not been acquired
245 if (!pContainer || pPayload->pContainer == pContainer) 244 if (BURN_PAYLOAD_STATE_ACQUIRED > pPayload->state)
246 { 245 {
247 // if the payload has not been acquired 246 hr = E_INVALIDDATA;
248 if (BURN_PAYLOAD_STATE_ACQUIRED > pPayload->state) 247 ExitOnRootFailure(hr, "Payload was not found in container: %ls", pPayload->sczKey);
249 {
250 hr = E_INVALIDDATA;
251 ExitOnRootFailure(hr, "Payload was not found in container: %ls", pPayload->sczKey);
252 }
253 } 248 }
254 } 249 }
255 250
@@ -317,32 +312,3 @@ LExit:
317 312
318 313
319// internal function definitions 314// internal function definitions
320
321static HRESULT FindEmbeddedBySourcePath(
322 __in BURN_PAYLOADS* pPayloads,
323 __in_opt BURN_CONTAINER* pContainer,
324 __in_z LPCWSTR wzStreamName,
325 __out BURN_PAYLOAD** ppPayload
326 )
327{
328 HRESULT hr = S_OK;
329
330 for (DWORD i = 0; i < pPayloads->cPayloads; ++i)
331 {
332 BURN_PAYLOAD* pPayload = &pPayloads->rgPayloads[i];
333
334 if (BURN_PAYLOAD_PACKAGING_EMBEDDED == pPayload->packaging && (!pContainer || pPayload->pContainer == pContainer))
335 {
336 if (CSTR_EQUAL == ::CompareStringW(LOCALE_INVARIANT, 0, pPayload->sczSourcePath, -1, wzStreamName, -1))
337 {
338 *ppPayload = pPayload;
339 ExitFunction1(hr = S_OK);
340 }
341 }
342 }
343
344 hr = E_NOTFOUND;
345
346LExit:
347 return hr;
348}