From c00516901e6b67e398396b14fe7682d0376f8643 Mon Sep 17 00:00:00 2001 From: Rob Mensching Date: Thu, 22 Apr 2021 05:46:03 -0700 Subject: Move balutil into API/burn --- .../burn/bextutil/inc/BextBaseBundleExtension.h | 120 +++++++++++++++++++++ 1 file changed, 120 insertions(+) create mode 100644 src/api/burn/bextutil/inc/BextBaseBundleExtension.h (limited to 'src/api/burn/bextutil/inc/BextBaseBundleExtension.h') diff --git a/src/api/burn/bextutil/inc/BextBaseBundleExtension.h b/src/api/burn/bextutil/inc/BextBaseBundleExtension.h new file mode 100644 index 00000000..69c338e4 --- /dev/null +++ b/src/api/burn/bextutil/inc/BextBaseBundleExtension.h @@ -0,0 +1,120 @@ +// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. + +#include + +#include "BundleExtensionEngine.h" +#include "BundleExtension.h" +#include "IBundleExtensionEngine.h" +#include "IBundleExtension.h" + +#include "bextutil.h" + +class CBextBaseBundleExtension : public IBundleExtension +{ +public: // IUnknown + virtual STDMETHODIMP QueryInterface( + __in REFIID riid, + __out LPVOID *ppvObject + ) + { + if (!ppvObject) + { + return E_INVALIDARG; + } + + *ppvObject = NULL; + + if (::IsEqualIID(__uuidof(IBundleExtension), riid)) + { + *ppvObject = static_cast(this); + } + else if (::IsEqualIID(IID_IUnknown, riid)) + { + *ppvObject = static_cast(this); + } + else // no interface for requested iid + { + return E_NOINTERFACE; + } + + AddRef(); + return S_OK; + } + + virtual STDMETHODIMP_(ULONG) AddRef() + { + return ::InterlockedIncrement(&this->m_cReferences); + } + + virtual STDMETHODIMP_(ULONG) Release() + { + long l = ::InterlockedDecrement(&this->m_cReferences); + if (0 < l) + { + return l; + } + + delete this; + return 0; + } + +public: // IBundleExtension + virtual STDMETHODIMP Search( + __in LPCWSTR /*wzId*/, + __in LPCWSTR /*wzVariable*/ + ) + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP BundleExtensionProc( + __in BUNDLE_EXTENSION_MESSAGE /*message*/, + __in const LPVOID /*pvArgs*/, + __inout LPVOID /*pvResults*/, + __in_opt LPVOID /*pvContext*/ + ) + { + return E_NOTIMPL; + } + +public: //CBextBaseBundleExtension + virtual STDMETHODIMP Initialize( + __in const BUNDLE_EXTENSION_CREATE_ARGS* pCreateArgs + ) + { + HRESULT hr = S_OK; + + hr = StrAllocString(&m_sczBundleExtensionDataPath, pCreateArgs->wzBundleExtensionDataPath, 0); + ExitOnFailure(hr, "Failed to copy BundleExtensionDataPath."); + + LExit: + return hr; + } + +protected: + + CBextBaseBundleExtension( + __in IBundleExtensionEngine* pEngine + ) + { + m_cReferences = 1; + + pEngine->AddRef(); + m_pEngine = pEngine; + + m_sczBundleExtensionDataPath = NULL; + } + + virtual ~CBextBaseBundleExtension() + { + ReleaseNullObject(m_pEngine); + ReleaseStr(m_sczBundleExtensionDataPath); + } + +protected: + IBundleExtensionEngine* m_pEngine; + LPWSTR m_sczBundleExtensionDataPath; + +private: + long m_cReferences; +}; -- cgit v1.2.3-55-g6feb