templatelt; Ŭ·¡½ºThreadModel(&L) gt;
CComObjectRootEx Ŭ·¡½º: °ø¿ë CComObjectRootBase(&G)
¸Å°³ º¯¼ö
ThreadModel
¿øÇÏ´Â ½º·¹µù ¸ðµ¨À» ±¸Çö ÇÏ´Â ´©±¸ÀÇ ¸Þ¼µå Ŭ·¡½ºÀÔ´Ï´Ù. CComSingleThreadModel, CComMultiThreadModel, ¶Ç´Â CComMultiThreadModelNoCS ThreadModel ¸¦ ¼³Á¤ ÇÏ ¿© ½º·¹µù ¸ðµ¨À» ¸í½ÃÀûÀ¸·Î ¼±ÅÃÇÒ ¼ö ÀÖ½À´Ï´Ù. CComObjectThreadModel ¶Ç´Â CComGlobalsThreadModel À» ThreadModel ·Î ¼³Á¤ ÇÏ ¿© ¼¹öÀÇ ±âº» ½º·¹µå ¸ðµ¨À» ¹Þ¾ÆµéÀÏ ¼ö ÀÖ½À´Ï´Ù.
CComObjectRootEx Å×À̺íÀÎ ¹× Áý°è °³Ã¼¿¡ ´ë ÇÑ °³Ã¼ ÂüÁ¶ °³¼ö °ü¸®¸¦ ó¸®ÇÕ´Ï´Ù. °³Ã¼°¡ Áý°è µÇÁö °³Ã¼¸¦ Áý°è ÇÏ´Â °æ¿ì¿¡ ¿ÜºÎ ¾Ë ¼ö ¾ø´Â Æ÷ÀÎÅ͸¦ º¸À¯ ÇÏ °í ÇÏ´Â °æ¿ì °³Ã¼ ÂüÁ¶ Ä«¿îÆ®¸¦ º¸À¯ ÇϰíÀÖ´Ù. Áý°è °³Ã¼¿¡ ´ë ÇÑ CComObjectRootEx ¹æ¹ýÀº ±¸¼º, ÇÏ °í ³»ºÎ ÀÎÅÍÆäÀ̽º¸¦ ¸±¸®½º ¶Ç´Â ³»ºÎ °³Ã¼¸¦ »èÁ¦ÇÒ ¶§ »èÁ¦¿¡¼ ¿ÜºÎ °³Ã¼¸¦ º¸È£ Çϱâ À§ÇØ ³»ºÎ °³Ã¼ÀÇ ¿À·ù 󸮸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
CComObjectRootEx ¶Ç´Â CComObjectRoot ¿¡¼ »ó¼Ó ÇØ¾ß ÇÏ´Â COM ¼¹ö¸¦ ±¸Çö Çϴ Ŭ·¡½º¡£
ATL CComPolyObjectlt;ÀÇ ÀνºÅϽº¸¦ ¸¸µé°í Ŭ·¡½º Á¤ÀÇ DECLARE_POLY_AGGREGATABLE ¸ÅÅ©·Î ÁöÁ¤ ÇÏ´Â °æ¿ìCYourClass > IClassFactory::CreateInstance ¶ó°í ÇÕ´Ï´Ù. »ý¼º ÇÏ´Â µ¿¾È ¿ÜºÎ ¾Ë ¼ö ¾ø´Â °ª üũ. NULLÀÎ °æ¿ì IUnknown Å×À̺íÀÎµÈ °³Ã¼¿¡ ´ëÇØ ±¸Çö µË´Ï´Ù. Áý°è °³Ã¼¿¡ ´ë ÇÑ IUnknown ±¸Çö ¿ÜºÎ ¾Ë NULLÀÌ ¾Æ´Ñ °æ¿ì¡£
ATL CComObjectlt;ÀÇ ÀνºÅϽº¸¦ ¸¸µé°í Ŭ·¡½º´Â DECLARE_POLY_AGGREGATABLE ¸ÅÅ©·Î ÁöÁ¤ ÇÏÁö ¾ÊÀ¸¸é,CYourClass > Å×À̺íÀÎ °³Ã¼ CComAggObject <CYourClass> ÀÇ ÀνºÅϽº ¶Ç´Â Áý°è °³Ã¼¿¡ ´ë ÇÑ¡£
CComPolyObject »ç¿ëÀÇ ÀåÁ¡Àº CComAggObject ¹× CComObject Áý°è ¹× Å×À̺íÀÎ °æ¿ì¸¦ ó¸® Çϱâ À§ÇØ ¸ðµâ¿¡ ÇÊ¿ä ÇÏÁö ¾Ê´Â. ´ÜÀÏ CComPolyObject °³Ã¼´Â µÎ °æ¿ì¸¦ ó¸®ÇÕ´Ï´Ù. µû¶ó¼ ÇØ´ç vtableÀÇ º¹»çº» Çϳª¸¸ ¹× ÇϳªÀÇ º¹»çº»ÀÇ ±â´É ¸ðµâ¿¡ Á¸Àç ÇÕ´Ï´Ù. ±ÍÇÏÀÇ vtable Å« °æ¿ìÀÌ ½ÇÁúÀûÀ¸·Î ¸ðµâ Å©±â¸¦ ÁÙÀÏ ¼ö ÀÖ½À´Ï´Ù. ±×·¯³ª, ±ÍÇÏÀÇ vtable ÀÛÀº °æ¿ì CComPolyObject ¸¦ »ç¿ë ÇÏ ¿© ¹ß»ýÇÒ ¼ö ÀÖ½À´Ï´Ù ¾à°£ ´õ Å« ¸ðµâ Å©±â´Â Áý°è ¶Ç´Â Å×À̺íÀÎ °³Ã¼¿¡ ´ë ÇÑ ÃÖÀûÈ µÇÁö ¾ÊÀº ¶§¹®¿¡ CComObject , CComAggObject ±×¸®°í¡£
DECLARE_POLY_AGGREGATABLE ¸ÅÅ©·Î ÀÚµ¿À¸·Î Ãß°¡ Ŭ·¡½º Á¤ÀÇ¿¡ ATL °³Ã¼ ¸¶¹ý»ç¿¡¼ ¸ðµç ±ÇÇÑ ¶Ç´Â Internet Explorer ÄÁÆ®·ÑÀ» ¸¸µé ¶§¡£
°³Ã¼°¡ Áý°è ÇÏ´Â °æ¿ì IUnknown CComAggObject ¶Ç´Â CComPolyObject±¸Çö µË´Ï´Ù. ÀÌ·¯ÇÑ Å¬·¡½º, CComObjectRootEx OuterQueryInterface, OuterAddRef¹× OuterRelease ¿ÜºÎ ¾ËÀ» Àü´Þ Çϵµ·Ï QueryInterface, AddRef¹× Release È£ÃâÀ» À§ÀÓ ÇÕ´Ï´Ù. ¸ðµç Áý°è °³Ã¼¸¦ ¸¸µå´Â Ŭ·¡½º¿¡ CComObjectRootEx::FinalConstruct ¸¦ ¹«½Ã ÇÏ °í CComObjectRootEx::FinalRelease Áý°è ¸ðµç °³Ã¼¸¦ ¹«½Ã ÇÏ´Â ÀϹÝÀûÀ¸·Î¡£
°³Ã¼°¡ Áý°è µÇÁö IUnknown CComObject ¶Ç´Â CComPolyObject±¸Çö µË´Ï´Ù. ÀÌ °æ¿ì QueryInterface, AddRef¹× Release ¸¦ È£Ãâ À§ÀÓ CComObjectRootEx InternalQueryInterface, InternalAddRef¹× InternalRelease ¸¦ ½ÇÁ¦ ÀÛ¾÷À» ¼öÇà ÇÏ¡£
# include lt;atlcom.h>
Âü°í Ç׸ñnbsp;CComAggObject, CComObject, CComPolyObject(&N)