형식 시각화 도우미 및 사용자 지정 뷰어는 개발자에게 빠르게 의미 있는 방식으로 데이터를 제공합니다. EE(식 계산기)는 타사 형식 시각화 도우미를 지원하고 자체 사용자 지정 뷰어를 제공할 수 있습니다.
Visual Studio는 GetCustomViewerCount 메서드를 호출하여 개체의 형식과 연결된 형식 시각화 도우미 및 사용자 지정 뷰어 수를 결정합니다. 사용할 수 있는 형식 시각화 도우미 또는 사용자 지정 뷰어가 하나 이상 있는 경우 Visual Studio는 GetCustomViewerList 메서드를 호출하여 시각화 도우미 및 뷰어(실제로 시각화 도우미 및 뷰어를 구현하는 목록)의 목록을 검색하고 사용자에게 표시합니다.
형식 시각화기 지원
형식 시각화 도우미를 지원하기 위해 EE에서 구현해야 하는 여러 인터페이스가 있습니다. 이러한 인터페이스는 형식 시각화 도우미를 나열하는 인터페이스와 속성 데이터에 액세스하는 인터페이스의 두 가지 광범위한 범주로 나눌 수 있습니다.
형식 시각화 도구 리스트
EE는 IDebugProperty3::GetCustomViewerCount 및 IDebugProperty3::GetCustomViewerList의 구현에서 형식 시각화 도우미 목록을 지원합니다. 이러한 메서드는 해당 메서드 GetCustomViewerCount 및 GetCustomViewerList에 대한 호출을 전달합니다.
IEEVisualizerService는 CreateVisualizerService를 호출하여 가져옵니다. 이 메서드에는 EvaluateSync에 전달된 IDebugBinder 인터페이스에서 가져온 IDebugBinder3 인터페이스가 필요합니다.
IEEVisualizerServiceProvider::CreateVisualizerService에 전달된 IDebugSymbolProvider 및 IDebugParsedExpression::EvaluateSync 인터페이스도 필요합니다. 인터페이스를 만드는 IEEVisualizerService 데 필요한 마지막 인터페이스는 EE가 구현하는 IEEVisualizerDataProvider 인터페이스입니다. 이 인터페이스를 사용하면 시각화되는 속성을 변경할 수 있습니다. 모든 속성 데이터는 EE에서도 구현되는 IDebugObject 인터페이스에 캡슐화됩니다.
속성 데이터 액세스
속성 데이터에 액세스하는 작업은 IPropertyProxyEESide 인터페이스를 통해 수행됩니다. 이 인터페이스를 가져오기 위해 Visual Studio는 속성 개체에서 QueryInterface 를 호출하여 IPropertyProxyProvider 인터페이스( IDebugProperty3 인터페이스를 구현하는 동일한 개체에 구현됨)를 가져온 다음 GetPropertyProxy 메서드를 호출하여 인터페이스를 가져옵니다 IPropertyProxyEESide .
인터페이스를 들어오고 나가는 IPropertyProxyEESide 모든 데이터는 IEEDataStorage 인터페이스에 캡슐화됩니다. 이 인터페이스는 바이트 배열을 나타내며 Visual Studio와 EE 모두에서 구현됩니다. 속성의 데이터를 변경할 때 Visual Studio는 새 데이터를 보유하는 개체를 만들고 IEEDataStorage 해당 데이터 개체로 CreateReplacementObject를 호출하여 속성의 데이터를 업데이트하기 위해 IEEDataStorage에 전달되는 새 개체를 가져옵니다.
IPropertyProxyEESide::CreateReplacementObject 를 사용하면 EE가 인터페이스를 구현하는 자체 클래스를 인스턴스화할 수 있습니다 IEEDataStorage .
사용자 지정 뷰어 지원
플래그 DBG_ATTRIB_VALUE_CUSTOM_VIEWER 는 개체에 dwAttrib 연결된 사용자 지정 뷰어가 있음을 나타내기 위해 DEBUG_PROPERTY_INFO 구조체( GetPropertyInfo 호출에 의해 반환됨)의 필드에 설정됩니다. 이 플래그가 설정되면 Visual Studio는 QueryInterface를 사용하여 IDebugProperty2 인터페이스에서 IDebugProperty3 인터페이스를 가져옵니다.
사용자가 사용자 지정 뷰어를 선택하는 경우 Visual Studio는 메서드에서 제공하는 CLSID 뷰어를 사용하여 사용자 지정 뷰어를 IDebugProperty3::GetCustomViewerList 인스턴스화합니다. 그런 다음 Visual Studio는 DisplayValue 를 호출하여 사용자에게 값을 표시합니다.
일반적으로 IDebugCustomViewer::DisplayValue 데이터의 읽기 전용 보기를 제공합니다. 데이터 변경을 허용하려면 EE에서 속성 개체의 데이터 변경을 지원하는 사용자 지정 인터페이스를 구현해야 합니다. 이 메서드는 IDebugCustomViewer::DisplayValue 이 사용자 지정 인터페이스를 사용하여 데이터 변경을 지원합니다. 메서드는 pDebugProperty 인수로 전달된 IDebugProperty2 인터페이스에서 사용자 지정 인터페이스를 찾습니다.
형식 시각화 도우미와 사용자 지정 뷰어 모두 지원
EE는 GetCustomViewerCount 및 GetCustomViewerList 메서드에서 형식 시각화 도우미와 사용자 지정 뷰어를 모두 지원할 수 있습니다. 먼저 EE는 제공하는 사용자 지정 뷰어 수를 GetCustomViewerCount 메서드에서 반환된 값에 추가합니다. 둘째, EE는 CLSID 메서드에서 반환된 목록에 자체 사용자 지정 뷰어를 추가합니다.