aboutsummaryrefslogtreecommitdiff
path: root/src/engine/burnextension.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/engine/burnextension.cpp')
-rw-r--r--src/engine/burnextension.cpp49
1 files changed, 49 insertions, 0 deletions
diff --git a/src/engine/burnextension.cpp b/src/engine/burnextension.cpp
index 99673cd9..68d34123 100644
--- a/src/engine/burnextension.cpp
+++ b/src/engine/burnextension.cpp
@@ -182,3 +182,52 @@ EXTERN_C void BurnExtensionUnload(
182 } 182 }
183 } 183 }
184} 184}
185
186EXTERN_C HRESULT BurnExtensionFindById(
187 __in BURN_EXTENSIONS* pBurnExtensions,
188 __in_z LPCWSTR wzId,
189 __out BURN_EXTENSION** ppExtension
190 )
191{
192 HRESULT hr = S_OK;
193 BURN_EXTENSION* pExtension = NULL;
194
195 for (DWORD i = 0; i < pBurnExtensions->cExtensions; ++i)
196 {
197 pExtension = &pBurnExtensions->rgExtensions[i];
198
199 if (CSTR_EQUAL == ::CompareStringW(LOCALE_INVARIANT, 0, pExtension->sczId, -1, wzId, -1))
200 {
201 *ppExtension = pExtension;
202 ExitFunction1(hr = S_OK);
203 }
204 }
205
206 hr = E_NOTFOUND;
207
208LExit:
209 return hr;
210}
211
212EXTERN_C BEEAPI BurnExtensionPerformSearch(
213 __in BURN_EXTENSION* pExtension,
214 __in LPWSTR wzSearchId,
215 __in LPWSTR wzVariable
216 )
217{
218 HRESULT hr = S_OK;
219 BUNDLE_EXTENSION_SEARCH_ARGS args = { };
220 BUNDLE_EXTENSION_SEARCH_RESULTS results = { };
221
222 args.cbSize = sizeof(args);
223 args.wzId = wzSearchId;
224 args.wzVariable = wzVariable;
225
226 results.cbSize = sizeof(results);
227
228 hr = pExtension->pfnBurnExtensionProc(BUNDLE_EXTENSION_MESSAGE_SEARCH, &args, &results, pExtension->pvBurnExtensionProcContext);
229 ExitOnFailure(hr, "BundleExtension '%ls' Search '%ls' failed.", pExtension->sczId, wzSearchId);
230
231LExit:
232 return hr;
233}