DirectX 9.0 의 소개 DirectX SDK 의 사용법 C 또는 C++ 에 의한 DirectX 프로그래밍 COM 의 사용법 C 에 의한 COM 개체에의 액세스   [목차열람] [주소복사] [슬롯비우기]
C 에 의한 COM 개체에의 액세스
 
Microsoft DirectX 9.0

C 에 의한 COM 개체에의 액세스


구성 요소 개체 모델 (COM) 프로그래밍으로 가장 일반적으로 사용되고 있는 언어는 C++ 이지만, C 를 사용해도 COM 개체에 액세스 할 수 있다. COM 를 사용하는 방법은, 조작은 비교적 알기 쉽지만, 복잡한 구문이 필요하게 된다.

모든 COM 개체에는 각각 vtable 가 있어, 이 안에는, 그 개체가 공개하는 메서드의 포인터 리스트가 포함되어 있다. 인터페이스 포인터는 vtable 내의 장소를 나타내고 있다. 거기에는, 불려 간 메서드의 포인터가 저장 되고 있다. 이 문서의 다른 장소에서는, vtable 에 대해서는 설명되지 않다. 이것은, C++ 에서는, vtable 는 기본적으로 불가시이기 때문에 있다. 다만, C 로 COM 메서드를 호출하는 경우는, 간접 호출의 레벨을 1 개 추가해, vtable 를 명시적으로 참조할 필요가 있다.

다음 코드는, C++ 에서의 호출해 규칙을 사용해 IDirectPlay8Peer::Initialize 메서드를 호출하는 방법을 나타내고 있다.

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

C 로 같은 메서드를 호출하려면 , 다음의 구문을 사용한다. vtable 포인터의 이름은 lpVtbl 와 표기된다.

g_pDP->lpVtbl->Initialize(g_pDP, NULL, DirectPlayMessageHandler, 0);

구성 요소에 따라서는, 헤더 파일에, 호출용의 올바른 표기로 변환하는 매크로가 정의되고 있는 경우도 있다. 더 자세한 정보는, 「매크로에 의한 DirectX COM 메서드의 호출」을 참조할것.



© 2002 Microsoft Corporation. All rights reserved.
↑TOP