From IDispatch::GetTypeInfoCount
IDispatch::GetTypeInfoCount
The return value obtained from the returned HRESULT is one of the following: [S_OK → Success], [E_NOTIMPL → Failed]
And the sample below returns E_INVALIDARGand NOERROR.
E_INVALIDARG
NOERROR
As far as I understand, E_INVALIDARGnot S_OKas well as NOERROR, so what are you doing? Are you checking for invalid pointers or not?
S_OK
COM seems to be the basis for everything, and I cannot find one good source of information about the correct behavior of a simple one IDispatch. How do you deal with such inconsistencies in your production code?
IDispatch
COM , , . FAILED SUCCEEDED, , . .
HRESULT hr = ...; if (FAILED(hr)) { ...
COM- , . . , (in-process, out-of-process, DCOM), COM- .
NOERROR , S_OK. , E_POINTER.
E_POINTER
NOERROR/S_OK E_NOTIMPL , , , , , E_POINTER.
E_NOTIMPL
, SUCCEEDED/FAILED.
SUCCEEDED
FAILED
Source: https://habr.com/ru/post/1790704/More articles:can we make websphere portal CSA and spring MVC3 work together? - websphere-portalForcing the latest version of gcc with cmake - gccWorking with Python databases without ORM - pythonIncluding DB function calls in python MySQLdb executemany () - functionarithmetic overflow hardware interrupt? - mathReading a cache file previously written by the same application - androidMS Office Word 2007/2010 - how to view editing an existing SELECT inline merge? - sqlClojure - How do I check for prompt types in protocols? - clojureWinApp form loads too much data during a load event - c #Download a Windows form with over 200 controls - multithreadingAll Articles