@@ -28,37 +28,67 @@ HRESULT ClassLoad::Initialize(IUnknown* pICorProfilerInfoUnk)
2828
2929HRESULT ClassLoad::ClassLoadStarted (ClassID classId)
3030{
31- _classLoadStartedCount++;
31+ SHUTDOWNGUARD ();
32+
33+ // Increment only UnloadLibrary.TestClass classes
34+ std::wstring className = GetClassIDName (classId).ToCStr ();
35+ if (className.find (L" UnloadLibrary.TestClass" ) != std::wstring::npos)
36+ {
37+ wprintf (L" ClassLoadStarted: %ls\n " , className.c_str ());
38+ _classLoadStartedCount++;
39+ }
40+
3241 return S_OK;
3342}
3443
3544HRESULT ClassLoad::ClassLoadFinished (ClassID classId, HRESULT hrStatus)
3645{
37- _classLoadFinishedCount++;
46+ SHUTDOWNGUARD ();
47+
48+ // Increment only UnloadLibrary.TestClass classes
49+ std::wstring className = GetClassIDName (classId).ToCStr ();
50+ if (className.find (L" UnloadLibrary.TestClass" ) != std::wstring::npos)
51+ {
52+ _classLoadFinishedCount++;
53+ }
54+
3855 return S_OK;
3956}
4057
4158HRESULT ClassLoad::ClassUnloadStarted (ClassID classId)
4259{
43- _classUnloadStartedCount++;
44- wprintf (L" ClassUnloadStarted: %s\n " , GetClassIDName (classId).ToCStr ());
60+ SHUTDOWNGUARD ();
61+
62+ // Increment only UnloadLibrary.TestClass classes
63+ std::wstring className = GetClassIDName (classId).ToCStr ();
64+ if (className.find (L" UnloadLibrary.TestClass" ) != std::wstring::npos)
65+ {
66+ wprintf (L" ClassUnloadStarted: %ls\n " , className.c_str ());
67+ _classUnloadStartedCount++;
68+ }
4569
4670 return S_OK;
4771}
4872
4973HRESULT ClassLoad::ClassUnloadFinished (ClassID classID, HRESULT hrStatus)
5074{
51- _classUnloadFinishedCount++;
75+ SHUTDOWNGUARD ();
76+
77+ // Increment only UnloadLibrary.TestClass classes
78+ std::wstring className = GetClassIDName (classID).ToCStr ();
79+ if (className.find (L" UnloadLibrary.TestClass" ) != std::wstring::npos)
80+ {
81+ _classUnloadFinishedCount++;
82+ }
83+
5284 return S_OK;
5385}
5486
55-
5687HRESULT ClassLoad::Shutdown ()
5788{
5889 Profiler::Shutdown ();
5990
6091 if (_failures == 0
61- && (_classLoadStartedCount != 0 )
6292 // Expect unloading of UnloadLibrary.TestClass and
6393 // List<UnloadLibrary.TestClass> with all its base classes with everything used in List constructor:
6494 // - UnloadLibrary.TestClass
@@ -67,10 +97,11 @@ HRESULT ClassLoad::Shutdown()
6797 // - System.Collections.Generic.IReadOnlyCollection`1<UnloadLibrary.TestClass>
6898 // - System.Collections.Generic.IReadOnlyList`1<UnloadLibrary.TestClass>
6999 // - System.Collections.Generic.List`1<UnloadLibrary.TestClass>
70- // - System.Collections.Generic.ICollection`1<UnloadLibrary.TestClass>
71- && (_classUnloadStartedCount == 7 )
100+ // - System.Collections.Generic.ICollection`1<UnloadLibrary.TestClass>
72101 && (_classLoadStartedCount == _classLoadFinishedCount)
73- && (_classUnloadStartedCount == _classUnloadFinishedCount))
102+ && (_classLoadStartedCount == 7 )
103+ && (_classUnloadStartedCount == _classUnloadFinishedCount)
104+ && (_classUnloadStartedCount == 7 ))
74105 {
75106 printf (" PROFILER TEST PASSES\n " );
76107 }
0 commit comments