Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu arabirim, bir ifade değerlendiricinin (EE) bir özelliğin değerini gereken biçimde görüntülemesini sağlar.
Sözdizimi
IDebugCustomViewer : IUknown
Uygulayıcılar için Notlar
EE, bir özelliğin değerini özel biçimde görüntülemek için bu arabirimi uygular.
Arayanlar İçin Notlar
COM CoCreateInstance işlevinin çağrısı bu arabirimin örneğini oluşturur. geçirilen CLSID CoCreateInstance kayıt defterinden alınır. GetCustomViewerList çağrısı, kayıt defterindeki konumu alır. Ayrıntılar ve Örnek için açıklamalar bölümüne bakın.
Vtable Sırasına Göre Yöntemler
Bu arabirim aşağıdaki yöntemi uygular:
| Metot | Açıklama |
|---|---|
| DisplayValue | Belirli bir değeri görüntülemek için gereken her şeyi yapar. |
Açıklamalar
Bu arabirim, bir özelliğin değeri normal yollarla görüntülenemediğinde (örneğin, bir veri tablosu veya başka bir karmaşık özellik türüyle) kullanılır. Arabirim tarafından IDebugCustomViewer temsil edilen özel görüntüleyici, EE'den bağımsız olarak belirli bir türdeki verileri görüntülemek için bir dış program olan tür görselleştiricisinden farklıdır. EE, o EE'ye özgü özel bir görüntüleyici uygular. Kullanıcı, tür görselleştiricisi veya özel görüntüleyici olsun, kullanılacak görselleştirici türünü seçer. Bu işlemle ilgili ayrıntılar için bkz . Verileri Görselleştirme ve Görüntüleme.
Özel görüntüleyici, EE ile aynı şekilde kaydedilir ve bu nedenle dil GUID'sini ve satıcı GUID'sini gerektirir. Tam ölçüm (veya kayıt defteri girdi adı) yalnızca EE tarafından bilinir. Bu ölçüm DEBUG_CUSTOM_VIEWER yapısında döndürülür ve bu da GetCustomViewerList çağrısı tarafından döndürülür. Ölçümde depolanan değer, COM CoCreateInstance işlevine geçirilen değerdir CLSID (Örnğe bakın).
Hata Ayıklama için SDK Yardımcıları işlevi, SetEEMetricözel bir görüntüleyici kaydetmek için kullanılabilir. Özel bir görüntüleyicinin ihtiyaç duyduğu belirli kayıt defteri anahtarları için "İfade Değerlendiricileri" kayıt defteri bölümüne Debugging SDK Helpers bakın. Özel görüntüleyicinin yalnızca bir ölçüme (EE uygulayıcısı tarafından tanımlanır) ihtiyacı olduğunu, bir ifade değerlendiricisinin ise önceden tanımlanmış birkaç ölçüm gerektirdiğini unutmayın.
Normalde, DisplayValue'ya sağlanan IDebugProperty3 arabiriminin özelliğin değerini dize olarak değiştirme yöntemi olmadığından, özel görüntüleyici verilerin salt okunur bir görünümünü sağlar. EE, rastgele veri bloklarının değiştirilmesini desteklemek için arabirimi uygulayan aynı nesneye özel bir arabirim uygular IDebugProperty3 . Bu özel arabirim daha sonra rastgele bir veri bloğunu değiştirmek için gereken yöntemleri sağlar.
Gereksinimler
Üst bilgi: msdbg.h
Ad Alanı: Microsoft.VisualStudio.Debugger.Interop
Derleme: Microsoft.VisualStudio.Debugger.Interop.dll
Örnek
Bu örnekte, özelliğin özel görüntüleyicileri varsa bir özellikten ilk özel görüntüleyicinin nasıl alındığı gösterilir.
IDebugCustomViewer *GetFirstCustomViewer(IDebugProperty2 *pProperty)
{
// This string is typically defined globally. For this example, it
// is defined here.
static const WCHAR strRegistrationRoot[] = L"Software\\Microsoft\\VisualStudio\\8.0Exp";
IDebugCustomViewer *pViewer = NULL;
if (pProperty != NULL) {
CComQIPtr<IDebugProperty3> pProperty3(pProperty);
if (pProperty3 != NULL) {
HRESULT hr;
ULONG viewerCount = 0;
hr = pProperty3->GetCustomViewerCount(&viewerCount);
if (viewerCount > 0) {
ULONG viewersFetched = 0;
DEBUG_CUSTOM_VIEWER viewerInfo = { 0 };
hr = pProperty3->GetCustomViewerList(0,
1,
&viewerInfo,
&viewersFetched);
if (viewersFetched == 1) {
CLSID clsidViewer = { 0 };
CComPtr<IDebugCustomViewer> spCustomViewer;
// Get the viewer's CLSID from the registry.
::GetEEMetric(viewerInfo.guidLang,
viewerInfo.guidVendor,
viewerInfo.bstrMetric,
&clsidViewer,
strRegistrationRoot);
if (!IsEqualGUID(clsidViewer,GUID_NULL)) {
// Instantiate the custom viewer.
spCustomViewer.CoCreateInstance(clsidViewer);
if (spCustomViewer != NULL) {
pViewer = spCustomViewer.Detach();
}
}
}
}
}
}
return(pViewer);
}