// Copyright 2017 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef BASE_WIN_CORE_WINRT_UTIL_H_ #define BASE_WIN_CORE_WINRT_UTIL_H_ #include #include #include #include #include "base/base_export.h" #include "base/strings/string16.h" #include "base/win/scoped_hstring.h" namespace base { namespace win { // Provides access to Core WinRT functions which may not be available on // Windows 7. Loads functions dynamically at runtime to prevent library // dependencies. BASE_EXPORT bool ResolveCoreWinRTDelayload(); // The following stubs are provided for when component build is enabled, in // order to avoid the propagation of delay-loading CoreWinRT to other modules. BASE_EXPORT HRESULT RoInitialize(RO_INIT_TYPE init_type); BASE_EXPORT void RoUninitialize(); BASE_EXPORT HRESULT RoGetActivationFactory(HSTRING class_id, const IID& iid, void** out_factory); BASE_EXPORT HRESULT RoActivateInstance(HSTRING class_id, IInspectable** instance); // Retrieves an activation factory for the type specified. template HRESULT GetActivationFactory(InterfaceType** factory) { ScopedHString class_id_hstring = ScopedHString::Create(runtime_class_id); if (!class_id_hstring.is_valid()) return E_FAIL; return base::win::RoGetActivationFactory(class_id_hstring.get(), IID_PPV_ARGS(factory)); } } // namespace win } // namespace base #endif // BASE_WIN_CORE_WINRT_UTIL_H_