如果我有两个COM接口(interface)指针(即ID3D11Texture2D),并且想检查它们是否是相同的基础类实例,是否可以直接比较两个指针是否相等?我已经看过代码,在比较完成之前将其转换为其他代码,因此想确认一下。
BOOL IsEqual (ID3D11Texture2D *pTexture1, ID3D11Texture2D *pTexture2)
{
if (pTexture1 == pTexture2)
{
return true;
}
else
{
return false;
}
}
谢谢。
最佳答案
正确的COM方法是使用IUnknown查询接口(interface)。 MSDN中的here注释引述:
所以正确的代码是
BOOL IsEqual (ID3D11Texture2D *pTexture1, ID3D11Texture2D *pTexture2)
{
IUnknown *u1, *u2;
pTexture1->QueryInterface(IID_IUnknown, &u1);
pTexture2->QueryInterface(IID_IUnknown, &u2);
BOOL areSame = u1 == u2;
u1->Release();
u2->Release();
return areSame;
}
更新