IUnknown

IUnknownインターフェイスは、Component Object Model (COM) において基盤となる抽象型である。COMの仕様では、すべてのCOMオブジェクトはIUnknownインターフェイスを実装していなければならないとされている。すなわち、IUnknownは、COMにおけるルートクラスである。また、すべてのCOMインターフェイスはIUnknownの派生型である。

メソッド

IUnknownには、QueryInerface、AddRef、Releaseの3つのメソッドがある[1]。QueryInterfaceは、ほかに実装しているインタフェースを問い合わせ、取得するメソッドである。AddRefとReleaseは、それぞれ参照カウントの増減を行う。

  • QueryInterfaceはインタフェースを識別するGUID (通常インタフェースID (IID) と呼ぶ) に基づいて、他のインタフェースへのポインタを得るために用いる。対象のCOMオブジェクトが実装していないインタフェースを要求された場合には、エラー値としてE_NOINTERFACEを返す。
    • なお、すべてのCOMオブジェクトはIUnknownを実装しているという性質上、IUnknownのIIDを引数に指定してのQueryInterfaceは必ず成功する。
  • AddRefはクライアントがこのCOMオブジェクトの参照を始めることを伝えるために用いる。
  • ReleaseはクライアントがこのCOMオブジェクトの使用を終了することを伝えるために用いる。

AddRefとReleaseの戻り値は現在の参照カウントの値であるが、あくまでテスト用を目的としている。

interface IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void **ppvObject) = 0;
    virtual ULONG STDMETHODCALLTYPE AddRef(void) = 0;
    virtual ULONG STDMETHODCALLTYPE Release(void) = 0;
};

なお、IUnknownのインタフェースIDは、{00000000-0000-0000-C000-000000000046}と定義されている。

C++

COMの仕様にはないが、旧Platform SDK・現Windows SDKに用意されているヘッダファイルをC++で用いると、テンプレートによって型安全性を向上させた次のようなQueryInterfaceが定義される[2]

template<class Q>
HRESULT STDMETHODCALLTYPE QueryInterface(Q** pp)
{
    return QueryInterface(__uuidof(Q), (void **)pp);
}

なお、__uuidof(Q)は、型Qに関連付けられたGUIDを取得するVisual C++の拡張である。こちらを用いると、インタフェースへのポインタと異なるインタフェースIDを指定するという誤りを避けることが可能である。

役割

前述のように、IUnknownは実装しているほかのインタフェースの問い合わせ・取得(QueryInterface)と参照カウントの管理を行うメソッドを持っているのみである。そして、すべてのCOMインタフェースはIUnknownから派生(直接に、またはIUnknownから派生したインタフェースから派生することによって間接的に)しているため、すべてのCOMインタフェースで必ずこれらのメソッドが呼び出し可能であることが保証される。

逆に、IUnknownを直接扱う有用な例は少ない。

2つの異なるインタフェースを指すポインタが同じCOMオブジェクトであるか否かを調べるには、IUnknownのIIDを指定してのQueryInterfaceの呼び出しを双方で行い、得られたインタフェースへのポインタが一致するか否かを調べるとよい。これは、あるCOMオブジェクトに対し、IUnknownのIIDを指定してのQueryInterfaceの呼び出しで得られるポインタは、かならず(どのインタフェースでQueryInterfaceを呼んでも)同じポインタ値となる保証がある(逆に言えば、実装者はそのように実装する必要がある)ためである。

bool EqualObject(IUnknown* lhs, IUnknown* rhs)
{
    bool ret = false;
    IUnknown* lhsUnk;
    if (SUCCEEDED(lhs->QueryInterface(&lhsUnk)))
    {
        IUnknown* rhsUnk;
        if (SUCCEEDED(rhs->QueryInterface(&rhsUnk)))
        {
            ret = (lhsUnk == rhsUnk);
            rhsUnk->Release();
        }
        lhsUnk->Release();
    }
    return ret;
}

脚注

  1. ^ IUnknown Interface (COM)” (英語). MSDN ライブラリ. マイクロソフト (2009年7月9日). 2009年9月19日閲覧。
  2. ^ Visual Studio 2005付属Windows SDK 5.0 Unknwn.h 121–125行目から引用した。

Read other articles:

Radio station in Alpine, Texas KVLFAlpine, TexasBroadcast areaMarathon, TexasFort Davis, TexasMarfa, TexasFrequency1240 kHzBranding98.7 KVLFProgrammingFormatClassic hitsOwnershipOwnerMartin and Patricia Benevich(Alpine Radio, LLC)Sister stationsKALPHistoryFirst air date1947Call sign meaningVoice of the Last FrontierTechnical informationFacility ID5216ClassCPower1,000 wattsTranslator(s)98.7 K254CW (Alpine)LinksWebcastListen LiveWebsitewww.bigbendradio.com KVLF is a radio station at 1240 AM in ...

Diprotodontia[1] Periode 28–0 jtyl PreЄ Є O S D C P T J K Pg N Oligosen Akhir - Sekarang Diprotodontia Seekor diprotodon, Walabi Agile (Macropus agilis)TaksonomiKerajaanAnimaliaFilumChordataKelasMammaliaOrdoDiprotodontia Owen, 1866 SubordoVombatiformesPhalangeriformesMacropodiformesDistribusiEndemikAustralasia lbs Diprotodontia (pengucapan bahasa Inggris: [daɪ.proʊ.toʊ.dɑːn.ʃiːə]; Yunani, berarti dua gigi depan) adalah ordo besar dari sekitar 120 mamalia marsupia...

Dalam artikel ini, nama keluarganya adalah Park. Park Myung-hoonLahir28 Mei 1975 (umur 48)Korea SelatanPekerjaanAktorTahun aktif1999-sekarangNama KoreaHangul박명훈 Alih AksaraBak Myeong-hunMcCune–ReischauerPak Myŏnghun Park Myung-hoon (bahasa Korea: 박명훈; lahir 28 Mei 1975), adalah pemeran Korea Selatan. Ia memulai debutnya sebagai aktor panggung dalam lakon tahun 1999 Class.[1] Ia dikenal secara internasional untuk perannya sebagai Geun-sae dalam film pemenan...

سفارة السويد في لبنان السويد لبنان الإحداثيات 33°54′01″N 35°30′09″E / 33.9004°N 35.5026°E / 33.9004; 35.5026  البلد لبنان  المكان بيروت  الموقع الالكتروني الموقع الرسمي  تعديل مصدري - تعديل   سفارة السويد في لبنان هي أرفع تمثيل دبلوماسي[1] لدولة السويد لدى لبنان.[2...

DreamSampul digitalLagu oleh Suzy dan BaekhyunDirilis7 Januari 2016Direkam2015Genre K-pop R&B Jazz Durasi3:42Label JYP SM MYSTIC Choongang ICS LOEN [1][2]Pencipta Kim Eana Park Geun-tae Choi Jin-seok Video musikDream di YouTube Dream adalah lagu dari penyanyi asal Korea Selatan, Suzy dan Baekhyun, yang masing-masing merupakan anggota dari Miss A dan Exo. Lagu ini dirilis secara digital pada tanggal 7 Januari dan kemudian secara fisiknya pada tanggal 14 Januari 2016 oleh JY...

هذه المقالة يتيمة إذ تصل إليها مقالات أخرى قليلة جدًا. فضلًا، ساعد بإضافة وصلة إليها في مقالات متعلقة بها. (مايو 2021) شو، ويلتشير   الاسم الرسمي Shaw الإحداثيات 51°23′24″N 2°09′43″W / 51.390°N 2.162°W / 51.390; -2.162 تقسيم إداري  البلد المملكة المتحدة[1]  رمز الهاتف 01225 

У Вікіпедії є статті про інші географічні об’єкти з назвою Брюл. Переписна місцевість Брюлангл. Brule Координати 46°33′ пн. ш. 91°34′ зх. д. / 46.550° пн. ш. 91.567° зх. д. / 46.550; -91.567Координати: 46°33′ пн. ш. 91°34′ зх. д. / 46.550° пн. ш. 91....

Pour les articles homonymes, voir Sarr. Cet article est une ébauche concernant une localité sénégalaise. Vous pouvez partager vos connaissances en l’améliorant (comment ?) selon les recommandations des projets correspondants. Keur Momar Sarr Administration Pays Sénégal Région Louga Département Louga Maire Mandat Dioumorou Kâ 2022 - 2027 Démographie Population 1 774 hab. (2003) Géographie Coordonnées 15° 55′ 00″ nord, 15° 58′ 00″...

Genus of flowering plants This article is an orphan, as no other articles link to it. Please introduce links to this page from related articles; try the Find link tool for suggestions. (January 2020) Clinogyne is a former genus of monocotyledonous plants, which have been moved to other genera. Its species included the following:[1] C. canniformis, renamed Donax canniformis C. azurea, renamed Halopegia azurea C. blumei, renamed Halopegia blumei C. virgata, renamed Indianthus virgatus C...

Vườn quốc gia Bald RockIUCN loại II (Vườn quốc gia)Tọa độ28°51′23″N 152°03′27″Đ / 28,85639°N 152,0575°Đ / -28.85639; 152.05750Diện tích88,83 km²Thành lập12.11.1971Cơ quan quản lýNew South Wales National Parks and Wildlife ServiceWebsite chính thứcBald Rock National Park Cảnh nhìn xa hẹp từ đỉnh Bald Rock Vườn quốc gia Bald Rock là một vườn quốc gia ở miền bắc bang New South Wales, Úc, ngay phía...

Philippine television series This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: Sine Novela – news · newspapers · books · scholar · JSTOR (October 2012) (Learn how and when to remove this template message) Sine NovelaTitle card from May 2007 to February 2010GenreDramaCountry of originPhilippinesOriginal languag...

State prison near Soledad, California Correctional Training Facility (CTF)LocationSoledad, Monterey County, California, U.S.Coordinates36°28′09″N 121°23′00″W / 36.46917°N 121.38333°W / 36.46917; -121.38333StatusOperationalSecurity classMinimum–mediumCapacity2,800Population3,927 (140.3% capacity) (as of January 31, 2023[1])Opened1946Managed byCalifornia Department of Corrections and RehabilitationWardenCraig Koenig[2] Correctional Train...

Village in Sikkim, IndiaThangu ValleyvillageThangu ValleyLocation in Sikkim, IndiaShow map of SikkimThangu ValleyThangu Valley (India)Show map of IndiaCoordinates: 27°53′42″N 88°32′13″E / 27.895°N 88.537°E / 27.895; 88.537Country IndiaStateSikkimDistrictMangan DistrictElevation3,900 m (12,800 ft)Time zoneUTC+5:30 (IST)Vehicle registrationSK Thangu Valley or Thangu-Chopta Valley is a town located in Mangan District in Sikkim, India.[1]...

1972 filmThe Sicilian CheckmateDirected byFlorestano VanciniProduced byDino De LaurentiisStarringEnrico Maria SalernoCinematographyAntonio SecchiMusic byEnnio MorriconeRelease date1972LanguageItalian The Sicilian Checkmate (Italian: La violenza: quinto potere) is a 1972 Italian crime-drama film directed by Florestano Vancini.[1][2][3] Plot The construction of a dam in Sicily triggers unspeakable interests and appetites that find immediate repercussions in a feud betwee...

Region of active deformation between colliding tectonic plates Simplified diagram of a convergent boundary A convergent boundary (also known as a destructive boundary) is an area on Earth where two or more lithospheric plates collide. One plate eventually slides beneath the other, a process known as subduction. The subduction zone can be defined by a plane where many earthquakes occur, called the Wadati–Benioff zone.[1] These collisions happen on scales of millions to tens of millio...

NBC affiliate in Palm Springs, California This article includes a list of general references, but it lacks sufficient corresponding inline citations. Please help to improve this article by introducing more precise citations. (May 2019) (Learn how and when to remove this template message) KMIR-TVPalm Springs, CaliforniaUnited StatesChannelsDigital: 26 (UHF)Virtual: 36BrandingNBC Palm SpringsMeTV Palm Springs (on DT2)ProgrammingAffiliations36.1: NBCfor others, see § SubchannelsOwnershipOw...

Voce principale: Club Voleibol Melilla. Club Voleibol MelillaStagione 2015-2016Sport pallavolo SquadraClub Voleibol Melilla Allenatore Salim Abdelkader All. in seconda Morad Ahmed Presidente Abdel-Ilak Mohamed Superliga6ª Coppa del ReQuarti di finale Miglior marcatoreCampionato: Gonçalves (349) 2016-17 Questa voce raccoglie le informazioni riguardanti il Club Voleibol Melilla nelle competizioni ufficiali della stagione 2015-2016. Indice 1 Stagione 2 Organigramma societario 3 Rosa 4 Mercato ...

ألان وانغا معلومات شخصية الاسم الكامل Allan Wetende Wanga[1] الميلاد 26 نوفمبر 1985 (العمر 38 سنة)كيزيمو، كينيا الطول 1.86 م (6 قدم 1 بوصة) مركز اللعب مهاجم الجنسية كينيا  معلومات النادي النادي الحالي Kakamega Homeboyz F.C. [الإنجليزية]‏(player & sporting director) مسيرة الشباب سنوات فريق FIFA...

Kawasaki Ki-96 adalah tempur berat Jepang kursi tunggal, bermesin ganda dari Perang Dunia II. Hal itu dimaksudkan untuk menggantikan Kawasaki Ki-45 Angkatan Udara Kekaisaran Jepang. Namun, itu tidak diadopsi dan hanya tiga prototipe dibangun. Referensi Francillon, Ph.D., René J. Japanese Aircraft of the Pacific War. London: Putnam & Company Ltd., 1970 (2nd edition 1979). ISBN 0-370-30251-6. Green, William. Warplanes of the Second World War, Volume Three: Fighters. London: Macdonald &...

NGC 2344   الكوكبة الوشق[1]  رمز الفهرس NGC 2344 (الفهرس العام الجديد)2MASX J07122870+4710004 (Two Micron All Sky Survey, Extended source catalogue)IRAS F07087+4715 (IRAS)MCG+08-13-103 (فهرس المجرات الموروفولوجي)PGC 20395 (فهرس المجرات الرئيسية)UGC 3734 (فهرس أوبسالا العام)Z 234-100 (فهرس المجرات وعناقيد المجرات)Z 0708.7+4715 (فهرس المجرات وع...