Closed jerishC closed 2 years ago
"FILETIME" is a class, but why there is a "_" before FILETIME.
Because, in the Windows SDK, FILETIME
is a typedef. So one needs to use the name of the struct -- _FILETIME
.
From minwindef.h:
typedef struct _FILETIME {
DWORD dwLowDateTime;
DWORD dwHighDateTime;
} FILETIME, *PFILETIME, *LPFILETIME;
2.VisualizerId is generate by ourself, so can i regenerate it and replace it in CppCustomVisualizer.natvis and CppCustomVisualizer.vsdconfigxml? I replaced it and the project can not work correctlly.
The .natvis and the .vsdconfigxml files need to agree on the value. So if you update it in one place, you need to update it in the other.
If I want to add a new type "Struct A{ int a1; int b1;} and show a1 in debug window" ,How to modify the CppCustomVisualizer.natvis and CppCustomVisualizer.vsdconfigxml? if i add a Implements tag,the project will build failed ">CppCustomVisualizer.vsdconfigxml(44,8): error XAC1000:"
I am not sure if I understand your question. Your .natvis file is what associates a type name with a visualizer id. If you are trying to make one dll that visualizers multiple types, there are many ways to do this:
<VisualizerId RequiredValue="<guid-1>"/> <VisualizerId RequiredValue="<guid-2>"/>
in your Filter
.thanks, it seems there are some problems in my vs2019 enviroment, I change to vs2022.
then, I add a new type with same id and it works fine(watch a tagRECT type can call my CCppCustomVisualizerService func)
<Type Name="_FILETIME">
<!--NOTE: The 'VisualizerId' is also specified in the .vsdconfigxml to control which
implementation of IDkmCustomVisualizer is used.-->
<CustomVisualizer VisualizerId="8E723FD7-611E-40E7-98C0-624D8873F559"/>
</Type>
<Type Name="tagRECT">
<!--NOTE: The 'VisualizerId' is also specified in the .vsdconfigxml to control which
implementation of IDkmCustomVisualizer is used.-->
<CustomVisualizer VisualizerId="8E723FD7-611E-40E7-98C0-624D8873F559"/>
</Type>
howerver, if i add a new one like this, it did not work (GUID is created from "Tools-> Create GUID")
//CppCustomVisualizer.natvis
<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
<Type Name="_FILETIME">
<!--NOTE: The 'VisualizerId' is also specified in the .vsdconfigxml to control which
implementation of IDkmCustomVisualizer is used.-->
<CustomVisualizer VisualizerId="8E723FD7-611E-40E7-98C0-624D8873F559"/>
</Type>
<Type Name="tagRECT">
<!--NOTE: The 'VisualizerId' is also specified in the .vsdconfigxml to control which
implementation of IDkmCustomVisualizer is used.-->
<CustomVisualizer VisualizerId="28331DB7-43B1-470C-922E-023C72C59A07"/>
</Type>
</AutoVisualizer>
//CppCustomVisualizer.vsdconfigxml
<Implements>
<InterfaceGroup>
<Filter>
<!--NOTE: This VisualizerId is also used in the .natvis file.-->
<VisualizerId RequiredValue="8E723FD7-611E-40E7-98C0-624D8873F559"/>
<VisualizerId RequiredValue="28331DB7-43B1-470C-922E-023C72C59A07"/>
</Filter>
<Interface Name="IDkmCustomVisualizer"/>
</InterfaceGroup>
</Implements>
What do you see in the logs when you evaluate an expression that results in a successful evaluation of one of those types? Logging info: https://github.com/Microsoft/ConcordExtensibilitySamples/wiki/Getting-troubleshooting-logs
thanks,it finally works
hi,i have runned CppCustomVisualizer successfully and i have read the wiki. But I am still confused about VisualizerId in CppCustomVisualizer.natvis and can not add a new customvisualizer myself. hope to get answers for these following questions.
2.VisualizerId is generate by ourself, so can i regenerate it and replace it in CppCustomVisualizer.natvis and CppCustomVisualizer.vsdconfigxml? I replaced it and the project can not work correctlly.
3.If I want to add a new type "Struct A{ int a1; int b1;} and show a1 in debug window" ,How to modify the CppCustomVisualizer.natvis and CppCustomVisualizer.vsdconfigxml? if i add a Implements tag,the project will build failed ">CppCustomVisualizer.vsdconfigxml(44,8): error XAC1000:"
`
<NativeComponent ComponentId="{184B8704-E76C-454A-991F-351D9AB15CFC}" ComponentLevel="9991500" ModuleName="CppCustomVisualizer.dll">
`
thanks