C语言 封装CoCreateInstance方法
时间: 2023-08-09 16:09:34 浏览: 124
C#中Activator.CreateInstance()方法用法分析
CoCreateInstance 是 Windows 平台下用于创建 COM 组件实例的方法,它有多个参数,其中最重要的是 CLSID 和 IID,分别对应组件的类标识符和接口标识符。在 C 语言中,可以通过以下方式封装 CoCreateInstance 方法:
```c
#include <windows.h>
HRESULT CreateInstance(REFCLSID rclsid, REFIID riid, LPVOID *ppv)
{
HRESULT hr;
IUnknown *pUnk = NULL;
hr = CoCreateInstance(rclsid, NULL, CLSCTX_INPROC_SERVER, riid, (LPVOID *)&pUnk);
if (SUCCEEDED(hr))
{
hr = pUnk->lpVtbl->QueryInterface(pUnk, riid, ppv);
pUnk->lpVtbl->Release(pUnk);
}
return hr;
}
```
其中,REFCLSID 和 REFIID 是指向 CLSID 和 IID 的常量指针,LPVOID *ppv 是一个二级指针,用于返回创建的组件实例的指针。函数内部先通过 CoCreateInstance 方法创建一个 IUnknown 接口的指针,然后再通过 QueryInterface 方法获取实际需要的接口指针,并释放 IUnknown 接口指针。最后返回创建结果。
阅读全文