亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

C++中QueryInterface函數怎么用

c++
小億
102
2023-11-13 20:49:31
欄目: 編程語言

在C++中,QueryInterface函數主要用于實現COM接口的查詢功能。它通常用于在一個對象中查詢指定的接口是否存在,并獲取該接口的指針。

接口的定義類似于以下形式:

class IInterface
{
public:
    virtual HRESULT queryInterface(REFIID riid, void** ppv) = 0;
    // 其他接口方法...
};

其中,queryInterface函數需要傳入一個REFIID參數,表示要查詢的接口的唯一標識符。另外,還需要傳入一個void** ppv參數,表示用于接收查詢到的接口指針的地址。

在類的實現中,queryInterface函數實現如下:

HRESULT MyClass::queryInterface(REFIID riid, void** ppv)
{
    if (riid == IID_IInterface) // IID_IInterface為待查詢接口的唯一標識符
    {
        *ppv = static_cast<IInterface*>(this);
        AddRef(); // 如果查詢成功,需要增加引用計數
        return S_OK; // 返回成功標志
    }
    else
    {
        *ppv = nullptr; // 如果查詢失敗,將接口指針置為空
        return E_NOINTERFACE; // 返回接口不存在的錯誤代碼
    }
}

在使用QueryInterface函數時,可以通過類的指針調用該函數,并傳入待查詢接口的唯一標識符和接收接口指針的地址。如果查詢成功,QueryInterface函數會返回S_OK,同時將接口指針賦值給ppv所指向的地址;如果查詢失敗,QueryInterface函數會返回E_NOINTERFACE,并將接口指針置為空。

示例代碼如下:

IInterface* pInterface = nullptr;
HRESULT hr = myObject->queryInterface(IID_IInterface, reinterpret_cast<void**>(&pInterface));
if (SUCCEEDED(hr))
{
    // 成功獲取接口指針,可以使用pInterface調用接口方法
}
else
{
    // 查詢接口失敗
}

0
始兴县| 新营市| 北海市| 金乡县| 内江市| 石嘴山市| 电白县| 蚌埠市| 珠海市| 邵阳县| 迁西县| 聂拉木县| 宁陕县| 新河县| 宜春市| 淳化县| 澄江县| 云龙县| 类乌齐县| 荆州市| 泰宁县| 纳雍县| 尼玛县| 天柱县| 合山市| 麟游县| 武城县| 虎林市| 平山县| 中江县| 平湖市| 长治县| 忻州市| 剑阁县| 庐江县| 陕西省| 桐庐县| 石阡县| 九龙城区| 遂宁市| 屏东县|