//==- llvm/Support/Windows/COM.inc - Windows COM Implementation -*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // // This file implements the Windows portion of COM support. // //===----------------------------------------------------------------------===// //===----------------------------------------------------------------------===// //=== WARNING: Implementation here must contain only Windows code. //===----------------------------------------------------------------------===// #include namespace llvm { namespace sys { InitializeCOMRAII::InitializeCOMRAII(COMThreadingMode Threading, bool SpeedOverMemory) { DWORD Coinit = 0; if (Threading == COMThreadingMode::SingleThreaded) Coinit |= COINIT_APARTMENTTHREADED; else Coinit |= COINIT_MULTITHREADED; if (SpeedOverMemory) Coinit |= COINIT_SPEED_OVER_MEMORY; ::CoInitializeEx(nullptr, Coinit); } InitializeCOMRAII::~InitializeCOMRAII() { ::CoUninitialize(); } } }