使用QueryInterface方法的目的是什么? (的Direct3D)

时间:2015-08-05 00:59:00

标签: c++ direct3d

我理解QueryInterface方法实际上做了什么 - 它只返回指向特定接口的指针。但我的问题是,为什么我要使用这种方法?

我的意思是,

之间有什么区别

QueryInterface(__uuidof(IDXGIResource), (void**)&Resource)

IDXGIResource * Resource

这些几乎不一样吗?如果是这样,为什么我甚至需要使用该方法?我应该使用它的原因是什么?

1 个答案:

答案 0 :(得分:4)

COM假设单个对象将提供多个接口,即接口将是细粒度的,并且您希望一次使用多个接口。 QueryInterface是指向对象上其他接口的指针。

您的示例不完整。第一个没有显示从现有接口调用QueryInterface,第二个没有向指针分配任何值(它是一个未初始化的指针)。一个实际的例子将两者结合起来:

IDXGIResource * Resource = NULL;
pInterface->QueryInterface(__uuidof(IDXGIResource), (void **)&Resource);

为了保持健壮,您应该在尝试使用指针之前确保QueryInterface调用succeeded

if (SUCCEEDED(pInterface->QueryInterface(__uuidof(IDXGIResource), (void **)&Resource))
    Resource->DoSomething();