이중 인터페이스: IAccessible 및 IDispatch

서버 개발자는 액세스 가능한 개체에 대해 표준 COM(구성 요소 개체 모델) 인터페이스 IDispatch 를 제공해야 합니다. IDispatch 인터페이스를 사용하면 Microsoft Visual Basic 및 다양한 스크립팅 언어로 작성된 클라이언트 애플리케이션이 IAccessible에서 노출하는 메서드 및 속성을 사용할 수 있습니다. 액세스 가능한 개체는 IDispatch::Invoke 를 통해 간접적으로 또는 IAccessible을 사용하여 직접 개체에 대한 액세스를 제공하므로 이중 인터페이스가 있다고 합니다.

C/C++ 클라이언트가 IDispatch 인터페이스 포인터를 다시 가져올 때 클라이언트는 QueryInterface 를 호출하여 IDispatch 인터페이스 포인터를 IAccessible 인터페이스 포인터로 변환할 수 있습니다. IAccessible 메서드를 간접적으로 호출하기 위해 C/C++ 클라이언트는 IDispatch::Invoke를 호출합니다. 성능 향상을 위해 IAccessible 메서드를 호출하여 개체를 직접 사용합니다.

IDispatchIAccessible 메서드 및 속성을 식별하는 데 사용하는 DISPID(디스패치 ID) 목록은 부록 C: IAccessible DISPID를 참조하세요.

참고

Microsoft Active Accessibility 버전 2.0 이상에서 서버는 IDispatch 메서드를 완전히 구현할 필요는 없지만 다음 예제와 같이 out 매개 변수를 초기화한 후 E_NOTIMPL 반환할 수 있습니다.

 

HRESULT STDMETHODCALLTYPE AccServer::GetTypeInfoCount(UINT* pctinfo)
{
    *pctinfo = 0;
    return E_NOTIMPL;
};