以下是 IID_PPV_ARGS 宏的基本定义:
#define IID_PPV_ARGS(ppType) __uuidof(**(ppType)), IID_PPV_ARGS_Helper(ppType)
这个宏在 C++ 代码中经常用于简化 QueryInterface 的调用,使代码更加清晰和简洁。
示例用法:
#include <Windows.h>
#include <Combaseapi.h>
int main() {
// 初始化COM库
CoInitialize(NULL);
// 创建一个对象
IUnknown *pUnknown = nullptr;
CoCreateInstance(CLSID_MyObject, nullptr, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&pUnknown));
if (pUnknown) {
// 在这里可以使用pUnknown进行其他操作
// 释放对象
pUnknown->Release();
}
// 反初始化COM库
CoUninitialize();
return 0;
}
在这个示例中,IID_PPV_ARGS 宏用于将 &pUnknown 转换为请求的接口的 IID,然后调用 CoCreateInstance 创建对象并获取接口指针。这样,不需要显式地指定 IID,使代码更加简洁。
注意:IID_PPV_ARGS 宏通常在使用 C++ 编写的 COM 代码中使用,不是在标准的 Win32 API 中定义的。
转载请注明出处:http://www.zyzy.cn/article/detail/24600/Win32 API/Combaseapi.h/IID_PPV_ARGS