DirectX 9.0 ÀÇ ¼Ò°³ DirectX SDK ÀÇ »ç¿ë¹ý C ¶Ç´Â C++ ¿¡ ÀÇÇÑ DirectX ÇÁ·Î±×·¡¹Ö COM ÀÇ »ç¿ë¹ý COM ÀÎÅÍÆäÀ̽ºÀÇ »ç¿ë¹ý   [¸ñÂ÷¿­¶÷] [ÁÖ¼Òº¹»ç] [½½·Ôºñ¿ì±â]
COM ÀÎÅÍÆäÀ̽ºÀÇ »ç¿ë¹ý
 
Microsoft DirectX 9.0

COM ÀÎÅÍÆäÀ̽ºÀÇ »ç¿ë¹ý


±¸¼º ¿ä¼Ò °³Ã¼ ¸ðµ¨ (COM) °³Ã¼¸¦ »ý¼º Çϸé, »ý¼º ¸Þ¼­µå°¡ ÀÎÅÍÆäÀ̽º Æ÷ÀÎÅ͸¦ µ¹·ÁÁØ´Ù. ÀÌ Æ÷ÀÎÅ͸¦ »ç¿ëÇØ, ±× ÀÎÅÍÆäÀ̽ºÀÇ ÀÓÀÇÀÇ ¸Þ¼­µå¿¡ ¾×¼¼½º ÇÒ ¼ö ÀÖ´Ù. ÀÌ Æ÷ÀÎÅÍÀÇ ±¸¹®Àº, C++ ÀÇ ¸Þ¼­µåÀÇ °æ¿ì¿Í °°´Ù. ´ÙÀ½ ÄÚµå´Â, ÀüÀÇ ÁÖÁ¦·Î °¡¸®Å² ¿¹ÀÇ È®ÀåÀÌ´Ù. ÀÌ ¿¹¿¡¼­´Â,IDirectPlay8Peer °³Ã¼ÀÇ »ý¼º ÈÄ,CoCreateInstance °¡ µ¹·ÁÁØ IDirectPlay8Peer ÀÎÅÍÆäÀ̽º Æ÷ÀÎÅ͸¦ »ç¿ëÇØ IDirectPlay8Peer::Initialize ¸Þ¼­µå¸¦ È£ÃâÇØ, °³Ã¼¸¦ ÃʱâÈ­Çϰí ÀÖ´Ù. ¾Ë±â ½±°Ô, ¿¡·¯ Á¤Á¤ ÄÚµå´Â »ý·« µÇ¾î ÀÖ´Ù.

IDirectPlay8Peer*  g_pDP = NULL;
...
CoInitialize( NULL );
...
hr = CoCreateInstance( CLSID_DirectPlay8Peer, NULL, CLSCTX_INPROC_SERVER,
                         IID_IDirectPlay8Peer, (LPVOID*) &g_pDP );

hr = g_pDP->Initialize( NULL, DirectPlayMessageHandler, 0 );

Ãß°¡ÀÇ ÀÎÅÍÆäÀ̽ºÀÇ ¿ä±¸

º¸ÅëÀº, »ý¼º ¸Þ¼­µå·ÎºÎÅÍ ¹Þ´Â ÀÎÅÍÆäÀ̽º Æ÷ÀÎÅ͸¸À¸·Î ¿ë¹«´Â ÃæºÐÇÏ´Ù. ½ÇÁ¦, °³Ã¼°¡ °ø°³ÇÏ´Â ÀÎÅÍÆäÀ̽º°¡ IUnknown À̿ܿ¡´Â 1 °³ »ÓÀÎ Àϵµ ¸¹´Ù. ±×·¯³ª, ¸¹Àº °³Ã¼´Â º¹¼öÀÇ ÀÎÅÍÆäÀ̽º¸¦ °ø°³ÇÑ´Ù. ÀÌ ¶§¹®¿¡, º¹¼öÀÇ ÀÎÅÍÆäÀ̽ºÀÇ Æ÷ÀÎÅͰ¡ ÇÊ¿äÇÏ°Ô µÇ´Â °æ¿ìµµ ÀÖ´Ù. »ý¼º ¸Þ¼­µå°¡ µ¹·ÁÁÖ´Â ÀÎÅÍÆäÀ̽º ¿Ü¿¡µµ ÀÎÅÍÆäÀ̽º°¡ ÇÊ¿äÇÑ °æ¿ì, »õ·Î¿î °³Ã¼¸¦ »ý¼º ÇÒ ÇÊ¿ä´Â ¾ø´Ù. °³Ã¼ÀÇ IUnknown::QueryInterface ¸Þ¼­µå¸¦ »ç¿ëÇØ ´Ù¸¥ ÀÎÅÍÆäÀ̽º Æ÷ÀÎÅ͸¦ ¿ä±¸ÇÒ ¼ö ÀÖ´Ù.

CoCreateInstance ·Î °³Ã¼¸¦ »ý¼º ÇßÀ» °æ¿ì´Â,IUnknown ÀÎÅÍÆäÀ̽º Æ÷ÀÎÅ͸¦ ¿ä±¸ÇÑ ÈÄ,IUnknown::QueryInterface ¸¦ È£ÃâÇÏ´Â °Í¿¡ ÀÇÇØ, ÇÊ¿äÇÑ ¸ðµç ÀÎÅÍÆäÀ̽º¸¦ ¿ä±¸ÇÒ ¼ö ÀÖ´Ù. ´Ù¸¸, ÀÌ ¹æ¹ýÀº, ÇÊ¿äÇÑ ÀÎÅÍÆäÀ̽º°¡ 1 °³¸¸ÀÇ °æ¿ì´Â ºÒÆíÇÏ´Ù. ¶Ç, µ¹·ÁÁÖ´Â ÀÎÅÍÆäÀ̽º Æ÷ÀÎÅ͸¦ ÁöÁ¤ÇÒ ¼ö ¾ø´Â °³Ã¼ »ý¼º ¸Þ¼­µå¸¦ »ç¿ëÇÏ´Â °æ¿ì´Â, ÀüÇô µµ¿òÀÌ µÇÁö ¾Ê´Â´Ù. ½ÇÁ¦·Î´Â, ¸ðµç COM ÀÎÅÍÆäÀ̽º´Â IUnknown ÀÎÅÍÆäÀ̽º¸¦ È®ÀåÇϹǷÎ, º¸ÅëÀº, ¸í½ÃÀûÀÎ IUnknown Æ÷ÀÎÅ͸¦ ¾ò¾î¿Â´Ù ÇÊ¿ä´Â ¾ø´Ù.

ÀÎÅÍÆäÀ̽ºÀÇ È®ÀåÀº, C++ ÀÇ Å¬·¡½ºÀÇ °è½Â°ú À¯»çÇÏ´Ù. ¾ÆÀÌ ÀÎÅÍÆäÀ̽º´Â, Ä£ÀÎÅÍÆäÀ̽ºÀÇ ¸ðµç ¸Þ¼­µå¿Í ¾ÆÀÌ µ¶ÀÚÀûÀÎ ¸Þ¼­µå¸¦ 1 °³ ÀÌ»ó °ø°³ÇÑ´Ù. ½ÇÁ¦, ¡¸È®À塹´ë½Å¿¡ ¡¸°è½Â¡¹À̶ó°í Çϴ ǥÇöÀ» »ç¿ëÇÏ´Â Àϵµ ¸¹´Ù. ´Ù¸¸, °è½ÂÀº °³Ã¼ ³»ºÎ¿¡¼­ ÇàÇØÁö´Â °ÍÀÌ´Ù. ¾ÖÇø®ÄÉÀ̼ÇÀÌ °³Ã¼ÀÇ ÀÎÅÍÆäÀ̽º¸¦ °è½Â ¶Ç´Â È®ÀåÇÒ ¼ö ¾ø´Ù. ±×·¯³ª, ¾ÆÀÌ ÀÎÅÍÆäÀ̽º¸¦ »ç¿ëÇÏ¸é ¾ÆÀÌ ¶Ç´Â Ä£ÀÎÅÍÆäÀ̽ºÀÇ ÀÓÀÇÀÇ ¸Þ¼­µå¸¦ È£ÃâÇÒ ¼ö ÀÖ´Ù.

¸ðµç ÀÎÅÍÆäÀ̽º´Â IUnknown ÀÇ ¾ÆÀÌÀÌ´Ù. ÀÌ ¶§¹®¿¡, °³Ã¼¿¡ ´ëÇØ¼­ ÃëµæÇÑ ¾î´À ÀÎÅÍÆäÀ̽º Æ÷ÀÎÅ͸¦ »ç¿ëÇØµµ,QueryInterface ¸¦ È£ÃâÇÒ ¼ö ÀÖ´Ù. ±× °æ¿ì´Â, ¿ä±¸ÇÏ´Â ÀÎÅÍÆäÀ̽ºÀÇ ÀÎÅÍÆäÀ̽º ½Äº°ÀÚ (IID)¿Í ÀÎÅÍÆäÀ̽º Æ÷ÀÎÅÍÀÇ ÁÖ¼Ò¸¦ ÁöÁ¤ÇÒ Çʿ䰡 ÀÖ´Ù. ¸Þ¼­µå°¡ µ¹¾Æ¿Ã ¶§, ÀÌ Æ÷ÀÎÅÍ¿¡ ÀÎÅÍÆäÀ̽º Æ÷ÀÎÅͰ¡ ÀúÀå µÈ´Ù. ¿¹¸¦ µé¾î, ´ÙÀ½ ÄÚµå´Â IDirectSound9::CreateSoundBuffer ¸¦ È£ÃâÇØ,1Â÷ ¹öÆÛ °³Ã¼¸¦ »ý¼º Çϰí ÀÖ´Ù. ÀÌ °³Ã¼´Â, º¹¼öÀÇ ÀÎÅÍÆäÀ̽º¸¦ °ø°³ÇÑ´Ù. CreateSoundBuffer ¸Þ¼­µå´Â IDirectSoundBuffer9 ÀÎÅÍÆäÀ̽º¸¦ µ¹·ÁÁØ´Ù. ´ÙÀ½ Äڵ忡¼­´Â,IDirectSoundBuffer9 ÀÎÅÍÆäÀ̽º¸¦ »ç¿ëÇØ QueryInterface ¸¦ È£ÃâÇÏ´Â °Í¿¡ ÀÇÇØ,IDirectSound3DListener9 ÀÎÅÍÆäÀ̽º¸¦ ¿ä±¸Çϰí ÀÖ´Ù.

IDirectSoundBuffer9* pDSBPrimary = NULL;
IDirectSound3DListener9* pDSListener;
...
if(FAILED(hr = g_pDS->CreateSoundBuffer( &dsbd, &pDSBPrimary, NULL )))
  return hr;

if(FAILED(hr = pDSBPrimary->QueryInterface(IID_IDirectSound3DListener9,
                                           (LPVOID *) &pDSListener)))
  return hr;


© 2002 Microsoft Corporation. All rights reserved.
¡èTOP