Files
QSfera/Desktop/src/plugins/vfs/cfapi/shellext/cfapishellintegrationclassfactory.h
T
Курнат Андрей 2315f25754 Initial QSfera import
2026-06-07 10:20:04 +03:00

41 lines
1.0 KiB
C++

/*
* SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: GPL-2.0-or-later
*/
#pragma once
#include <unknwn.h>
namespace VfsShellExtensions {
using PFNCREATEINSTANCE = HRESULT (*)(REFIID riid, void **ppvObject);
struct ClassObjectInit
{
const CLSID *clsid;
PFNCREATEINSTANCE pfnCreate;
};
class CfApiShellIntegrationClassFactory : public IClassFactory
{
public:
CfApiShellIntegrationClassFactory(PFNCREATEINSTANCE pfnCreate);
IFACEMETHODIMP_(ULONG) AddRef();
IFACEMETHODIMP CreateInstance(IUnknown *pUnkOuter, REFIID riid, void **ppv);
static HRESULT CreateInstance(REFCLSID clsid, const ClassObjectInit *classObjectInits, size_t classObjectInitsCount, REFIID riid, void **ppv);
IFACEMETHODIMP LockServer(BOOL fLock);
IFACEMETHODIMP QueryInterface(REFIID riid, void **ppv);
IFACEMETHODIMP_(ULONG) Release();
protected:
~CfApiShellIntegrationClassFactory();
private:
long _referenceCount;
PFNCREATEINSTANCE _pfnCreate;
};
}