123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- // 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_SCOPED_WINRT_INITIALIZER_H_
- #define BASE_WIN_SCOPED_WINRT_INITIALIZER_H_
- #include <objbase.h>
- #include "base/base_export.h"
- #include "base/threading/thread_checker.h"
- #include "base/win/scoped_windows_thread_environment.h"
- namespace base {
- namespace win {
- // Initializes the Windows Runtime in the constructor and uninitalizes the
- // Windows Runtime in the destructor. As a side effect, COM is also initialized
- // as an MTA in the constructor and correspondingly uninitialized in the
- // destructor.
- //
- // Generally, you should only use this on Windows 8 or above. It is redundant
- // to use ScopedComInitializer in conjunction with ScopedWinrtInitializer.
- //
- // WARNING: This should only be used once per thread, ideally scoped to a
- // similar lifetime as the thread itself. You should not be using this in random
- // utility functions that make Windows Runtime calls -- instead ensure these
- // functions are running on a Windows Runtime supporting thread!
- class BASE_EXPORT ScopedWinrtInitializer
- : public ScopedWindowsThreadEnvironment {
- public:
- ScopedWinrtInitializer();
- ~ScopedWinrtInitializer() override;
- // ScopedWindowsThreadEnvironment:
- bool Succeeded() const override;
- private:
- const HRESULT hr_;
- THREAD_CHECKER(thread_checker_);
- DISALLOW_COPY_AND_ASSIGN(ScopedWinrtInitializer);
- };
- } // namespace win
- } // namespace base
- #endif // BASE_WIN_SCOPED_WINRT_INITIALIZER_H_
|