InterfaceSupportsErrorInfo: как узнать идентификатор интерфейса? - PullRequest
0 голосов
/ 29 февраля 2020

Я хочу использовать InterfaceSupportsErrorInfo, чтобы проверить, поддерживает ли COM-объект IErrorInfo. Я не могу понять, откуда мне взять параметр riid.

Я получаю CComPtr следующим образом:

CoInitialize(NULL);
CComPtr<IDispatch> pCOM;
pCOM.CoCreateInstance(L"<ClassName>", NULL, CLSCTX_ALL);

Затем я получаю сбой HRESULT из вызова pCOM-> InvokeN. Я знаю, что объект поддерживает IErrorInfo, потому что GetErrorInfo возвращает его успешно, но я хотел бы знать, как формально проверить, поддерживается ли интерфейс.

Я пытался

CComQIPtr<ISupportErrorInfo, &IID_ISupportErrorInfo> pSupportErrorInfo(pCOM);
pSupportErrorInfo->InterfaceSupportsErrorInfo(IID_IDispatch);

, но возвращает S_FALSE .

...