Кіріспе

HRESULT – компьютерлік бағдарламалау дерек типі, функцияның орындалу нәтижесін көрсететін дерек типі. Ол Microsoft Windows және ескі IBM/Microsoft OS/2 операциялық жүйелері үшін жасалған қосымшалардың бастапқы кодында қолданылады, бірақ оның құрылымы оны осы орталармен ғана шектемейді; 32 биттік бүтін сандарды қолдайтын кез келген жүйеде пайдалануға болады. HRESULT-тың бастапқы мақсаты – OS/2 операциялық жүйесінің әртүрлі подсистемаларындағы мәртебе кодтарының қайталануын болдырмау үшін, мемлекеттік және Microsoft ішкі қолданысы үшін мәртебе кодтарының диапазондарын анықтау болды. HRESULT бір уақытта қарапайым сандық мән және ауырлық деңгейін, категориясын және мәртебе кодын көрсететін өрістер жиынтығы ретінде қарастырылады. HRESULT ең көп COM бағдарламалауда қолданылады, онда ол стандартталған қателіктерді өңдеу механизмінің негізін құрайды, бірақ оның қолданылуы COM-мен ғана шектелмейді. Мысалы, оны дәстүрлі бульдік нәтижеге (сәтті орындалды/орындалмады) қарағанда балама ретінде қолдануға болады.

IErrorInfo (Қосымша қате)

HRESULT бастапқыда IBM/Microsoft OS/2 операциялық жүйесінде жалпы мақсаттағы қате қайтарғыш коды ретінде анықталды, және кейіннен Windows NT-де қабылданды. Microsoft Visual Basic HRESULT қателіктерін хабарлау механизмдерін HRESULT-пен байланысты IErrorInfo нысанын және оның (көрсеткішін) жиекке орналасқан жергілікті сақтау құралында сақтау арқылы едәуір жетілдірді. IErrorInfo механизмі бағдарламаларға нақты HRESULT қатесімен байланысты кең ауқымды ақпаратты қоса беруге мүмкіндік береді: қате тудырған нысанның класы, қате тудырған нысанның интерфейсі, қате туралы мәтін және анықтамалық файлдағы анықтамалық тақырыпқа сілтеме. Сонымен қатар, HRESULT қатесін алғандар қате туралы хабарламаның локализацияланған мәтінін қажет болғанда ала алады. Кейіннен HRESULT және байланысты IErrorInfo механизмі COM-да қате туралы хабарлаудың стандартты механизмі ретінде пайдаланылды. Windows-та IErrorInfo механизміне қолдау біркелкі емес. Ескі Windows API-лары оны мүлдем қолдамайды, HRESULT-ті IErrorInfo деректерісіз қайтарады. Ал, қазіргі заманғы Windows COM жүйелері көбінесе IErrorInfo нысанының хабарлама сипаттамасында кең қате туралы ақпаратты ұсынады. IErrorInfo қателік механизмдерінің кеңейтілген мүмкіндіктері – анықтамалық сілтемелер және қажет болғанда локализациялау – сирек қолданылады. .NET Framework-та HRESULT/IErrorInfo қате кодтары түпнұсқа кодтан басқарылатын кодқа ауысқанда CLR ерекшеліктеріне түрлендіріледі; ал CLR ерекшеліктері басқарылатын кодтан түпнұсқа COM кодына ауысқанда HRESULT/IErrorInfo қате кодтарына түрлендіріледі.

Атаудың шығу тегі

HRESULT атауы "нәтиже тұтқасы" дегенді білдіреді, себебі көптеген басқа Windows түрлері H әрпін тұтқаны білдіру үшін қолданады. Мысалы, HMODULE – модуль тұтқасы, яғни HMODULE мәні модуль ресурсына сілтеме жасайды. Дегенмен, HRESULT мәні ресурсқа сілтеме жасамайды, сондықтан ол тұтқа емес. Реймонд Ченнің сөзіне сәйкес, "бұрын ол бай қате туралы ақпаратты қамтитын объектінің тұтқасы болған. COM командасы шығын мен пайданы салыстырып, бұл тиімді емес деп шешті, соның салдарынан HRESULT қарапайым санға айналды. Бірақ атауы өзгерген жоқ."