IU белгісіз - IUnknown

Жылы компьютерлік бағдарламалау, IU белгісіз интерфейс негізгі болып табылады интерфейс ішінде Компонент нысаны моделі (COM). COM сипаттамасы[1] COM объектілері осы интерфейсті іске асыруы керек деген мандаттар. Сонымен қатар, кез-келген басқа COM интерфейсі IUnknown-дан алынуы керек. IUnknown барлық COM нысандарының екі маңызды ерекшеліктерін ашады: объектіні өмір бойы басқару анықтамалық санау, және басқа арқылы объектінің функционалдығына қол жеткізу интерфейстер.

IUnknown (немесе IUnknown-туынды) интерфейсі a сілтегішінен тұрады виртуалды әдіс кестесі онда интерфейсте жарияланған функциялардың интерфейсінде көрсетілген ретімен орындалатын функцияларға сілтемелер тізімі бар. Процесстегі шақыру үстеме қоңыраулары C ++ тіліндегі виртуалды әдіс қоңырауларымен бірдей.[2]

Әдістер

IUnknown интерфейсі үшеуін ашады әдістер: QueryInterface, AddRef, және Босату:[3]

  • QueryInterface қоңырау шалушыға компонент іске асыратын интерфейстерге сілтемелер алуға мүмкіндік береді. Бұл ұқсас динамикалық_каст <> жылы C ++ немесе шығарады жылы Java және C #. Нақтырақ айтқанда, ол a алу үшін қолданылады көрсеткіш а берілген басқа интерфейске НҰСҚАУЛЫҚ сол интерфейсті бірегей анықтайтын (әдетте интерфейс идентификаторы, немесе IID). Егер COM нысаны бұл интерфейсті жүзеге асырмаса, оның орнына E_NOINTERFACE қатесі қайтарылады.
  • AddRef жаңа клиент объектіні иемденіп жатқан кезде анықтамалық санды көбейту үшін қолданылады. Ол жаңа анықтамалық санды қайтарады.
  • Босату клиенттер объектіні қолдануды аяқтаған кезде анықтамалық санды азайту үшін қолданылады. Ол жаңа анықтамалық санды қайтарады. Сілтеме саны нөлге жеткенде объект босату кезінде өзін жояды, демек қоңырау шалушы Release шақырғаннан кейін ешқашан интерфейсті қолданбауы керек.
интерфейс IU белгісіз {  виртуалды НӘТИЖЕ QueryInterface (СЕНІМ рид, жарамсыз **ppvObject) = 0;  виртуалды ҰЗАҚ   AddRef () = 0;  виртуалды ҰЗАҚ   Босату () = 0;};

The IU белгісіз интерфейс идентификаторы ретінде анықталады НҰСҚАУЛЫҚ {00000000-0000-0000-C000-000000000046} мәнімен.

Көрмені көрсету үшін COM компонентінің интерфейстері қажет рефлексивті, симметриялы және өтпелі қасиеттері. Рефлексивтік қасиет қабілеттілікке жатады QueryInterface интерфейстің бірдей данасын қайтару үшін интерфейстің идентификаторымен берілген интерфейсті шақыру. Симметриялы қасиет В интерфейсін А интерфейсінен шығарып алуды талап етеді QueryInterface, А интерфейсін В интерфейсінен алуға болады. Өтпелі қасиет егер B интерфейсі А интерфейсінен, ал C интерфейсі В интерфейсінен алынса, C интерфейсі А интерфейсінен алынуы керек.

Әр түрлі

  • Астында жасалған компоненттер ActiveX визуалды компонент стандарты, кем дегенде, IUnknown интерфейсін қолдануы керек.[4]
  • IUnknown үшін негіз болады Mac OS X Келіңіздер Негізгі қор CFPlugIn шеңберінде.[5]
  • Mozilla-да XPCOM компонент моделі, бұл интерфейс nsISupports деп те аталады.

Сондай-ақ қараңыз

Әдебиеттер тізімі

  1. ^ Құрамдас объект моделінің сипаттамасы, мұрағатталған түпнұсқа 2004-02-15
  2. ^ «Құрамдас нысан моделі». microsoft.com. Microsoft. 30 мамыр 2018 ж. Алынған 12 ақпан 2019.
  3. ^ I белгісіз анықтама кезінде microsoft.com Мұрағатталды 2013-07-11 сағ Wayback Machine; қол жеткізілді 18-қаңтар-2008
  4. ^ ActiveX басқару элементтері кезінде microsoft.com; қол жеткізілді 18-қаңтар-2008
  5. ^ Қосылатын модульдер кезінде apple.com; қол жеткізілді 18 қыркүйек-2011

Сыртқы сілтемелер