, . , RESULT. COM- , , RPC- . RESULT 32- , , ( , , ). , ( , Visual Basic, Java), HRESULT- (programmatic exceptions).
. 2.2, HRESULT- : (severity bit), . , , , HRESULT, . SDK (software development kit - ) , HRESULT:
#define SUCCEEDED(hr) (long(hr) >= 0) #def1ne FAILED(hr) (long(hr) < 0)
, RESULT .
SDK HRESULT. HRESULT , HRESULT, :
<facility>_<severity>_<information>
, HRESULT STG_S_CONVERTED , FACILITY_STORAGE. , (Structured Storage) (Persistence). SEVERITY_SUCCESS. , . CONVERTED , . HRESULT- , , FACILITY_NULL, . HRESULT- FACILITY_NULL:
S_OK - S_FALSE - false E_FAIL - E_NOTIMPL - E_UNEXPECTED -
FACILITY_ITF HRESULT- HRESULT, . FACILITY_ITF . MAKE_HRESULT HRESULT :
const HRESULT CALC_E_IAMHOSED = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0 200 + 15);
HRESULT , 0 200, , HRESULT- . , , . , HRESULT , API FormatMessage. HRESULT, , , , .
, HRESULT- , IDL retval. retval , , , . IDL- :
HRESULT Method2([in] short arg1, [out, retval] short *parg2);
Java :
public short Method2(short arg1);
Visual Basic :
Function Method2(arg1 as Integer) As Integer
C++ - , Microsoft C++ :
virtual HRESULT _stdcall Method2(short arg1, short *parg2) = 0;
, C++:
short sum = 10; short s; HRESULT hr = pItf->Method2(20, &s); if (FAILED(hr)) throw hr; sum += s;
Java- :
short sum == 10; short s = Itf.Method2(20); sum += s;
HRESULT, , , Java Virtual Machine HRESULT Java. C++ HRESULT, , .