Files
2025-03-02 04:57:27 +00:00

24 lines
523 B
C++

// com_utils.h
#pragma once
#include <Windows.h>
#include <comdef.h>
#include <atlbase.h>
class COMAutoRelease {
public:
COMAutoRelease() { CoInitialize(nullptr); }
~COMAutoRelease() { CoUninitialize(); }
};
template<typename T>
class COMPtr {
CComPtr<T> ptr;
public:
COMPtr() = default;
COMPtr(const COMPtr&) = delete;
COMPtr& operator=(const COMPtr&) = delete;
T** operator&() { return &ptr; }
T* operator->() { return ptr; }
operator T* () { return ptr; }
};