ADSI 확장을 사용하여 COM 집계 규칙 다시 방문
다음은 COM 집계 및 ADSI 확장 규칙에 대한 간략한 검토입니다.
CreateInstance 메서드는 다음과 같이 집계에 함수 호출을 위임하지 않는 IUnknown 인터페이스에 대한 포인터를 반환합니다.
IUnknown::QueryInterface 메서드는 지원하는 인터페이스에 대한 포인터와 지원하지 않는 인터페이스에 대한 오류를 반환합니다.
IUnknown::AddRef 메서드는 집계된 확장 개체 자체에 대한 참조 수를 증가합니다.
IUnkown::Release 메서드는 집계된 확장 개체 자체의 참조 수를 감소시키고 참조 수가 0이면 자체를 삭제합니다.
확장 개체는 CreateInstance 메서드를 구현하는 동안 집계의 IUnknown 포인터(예: m_pOuterUnknown)를 저장해야 합니다.
IADsExtension을 포함하여 확장 개체에서 지원하는 모든 인터페이스는 모든 함수 호출을 집계에 다시 위임하는 IUnknown에서 상속되어야 합니다.
- IUnknown::QueryInterface 는 "m_pOuterUnknown-QueryInterface>"를 호출합니다.
- IUnknown::AddRef 는 "m_pOuterUnknown-AddRef>"를 호출합니다.
- IUnkown::Release 는 "m_pOuterUnknown-Release>"를 호출합니다.
확장 작성기는 표준 COM 집계 규칙을 준수하는 한 원하는 내부 구현을 선택할 수 있습니다. 확장 개체는 독립 실행형 개체로 작동할 필요가 없습니다. 확장은 집계로 작동하도록 설계되었습니다. 그러나 독립 실행형 개체와 집계로 모두 작동하도록 확장을 작성할 수 있습니다.
표준 COM 집계 지원 외에도 확장 개체는 고급 기능을 위해 IADsExtension 을 지원할 수 있습니다. 지연 바인딩이 지원되는 경우 확장은 다음을 수행해야 합니다.
- IDispatch에 대한 함수를 집계에 다시 위임합니다.
- IADsExtension에서 IDispatch 인터페이스를 구현합니다.