Guest User

Untitled

a guest
Oct 17th, 2017
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 225.78 KB | None | 0 0
  1. // Licensed to the .NET Foundation under one or more agreements.
  2. // The .NET Foundation licenses this file to you under the MIT license.
  3. // See the LICENSE file in the project root for more information.
  4.  
  5. /******************************************************************
  6.  
  7. DO NOT MODIFY. AUTOGENERATED FILE.
  8. This file is generated using the logic from <root>/src/scripts/genEventPipe.py
  9.  
  10. ******************************************************************/
  11.  
  12. #include "/home/nate/coreclr/src/vm/common.h"
  13. #include "/home/nate/coreclr/src/vm/eventpipeprovider.h"
  14. #include "/home/nate/coreclr/src/vm/eventpipeevent.h"
  15. #include "/home/nate/coreclr/src/vm/eventpipe.h"
  16.  
  17. bool ResizeBuffer(char *&buffer, unsigned int& size, unsigned int currLen, unsigned int newSize, bool &fixedBuffer);
  18. bool WriteToBuffer(PCWSTR str, char *&buffer, unsigned int& offset, unsigned int& size, bool &fixedBuffer);
  19. bool WriteToBuffer(const char *str, char *&buffer, unsigned int& offset, unsigned int& size, bool &fixedBuffer);
  20. bool WriteToBuffer(const BYTE *src, unsigned int len, char *&buffer, unsigned int& offset, unsigned int& size, bool &fixedBuffer);
  21.  
  22. template <typename T>
  23. bool WriteToBuffer(const T &value, char *&buffer, unsigned int& offset, unsigned int& size, bool &fixedBuffer)
  24. {
  25. if (sizeof(T) + offset > size)
  26. {
  27. if (!ResizeBuffer(buffer, size, offset, size + sizeof(T), fixedBuffer))
  28. return false;
  29. }
  30.  
  31. *(T *)(buffer + offset) = value;
  32. offset += sizeof(T);
  33. return true;
  34. }
  35.  
  36. const WCHAR* DotNETRuntimeName = W("Microsoft-Windows-DotNETRuntime");
  37. EventPipeProvider *EventPipeProviderDotNETRuntime = nullptr;
  38. EventPipeEvent *EventPipeEventGCStart = nullptr;
  39. EventPipeEvent *EventPipeEventGCStart_V1 = nullptr;
  40. EventPipeEvent *EventPipeEventGCStart_V2 = nullptr;
  41. EventPipeEvent *EventPipeEventGCEnd = nullptr;
  42. EventPipeEvent *EventPipeEventGCEnd_V1 = nullptr;
  43. EventPipeEvent *EventPipeEventGCRestartEEEnd = nullptr;
  44. EventPipeEvent *EventPipeEventGCRestartEEEnd_V1 = nullptr;
  45. EventPipeEvent *EventPipeEventGCHeapStats = nullptr;
  46. EventPipeEvent *EventPipeEventGCHeapStats_V1 = nullptr;
  47. EventPipeEvent *EventPipeEventGCCreateSegment = nullptr;
  48. EventPipeEvent *EventPipeEventGCCreateSegment_V1 = nullptr;
  49. EventPipeEvent *EventPipeEventGCFreeSegment = nullptr;
  50. EventPipeEvent *EventPipeEventGCFreeSegment_V1 = nullptr;
  51. EventPipeEvent *EventPipeEventGCRestartEEBegin = nullptr;
  52. EventPipeEvent *EventPipeEventGCRestartEEBegin_V1 = nullptr;
  53. EventPipeEvent *EventPipeEventGCSuspendEEEnd = nullptr;
  54. EventPipeEvent *EventPipeEventGCSuspendEEEnd_V1 = nullptr;
  55. EventPipeEvent *EventPipeEventGCSuspendEEBegin = nullptr;
  56. EventPipeEvent *EventPipeEventGCSuspendEEBegin_V1 = nullptr;
  57. EventPipeEvent *EventPipeEventGCAllocationTick = nullptr;
  58. EventPipeEvent *EventPipeEventGCAllocationTick_V1 = nullptr;
  59. EventPipeEvent *EventPipeEventGCAllocationTick_V2 = nullptr;
  60. EventPipeEvent *EventPipeEventGCAllocationTick_V3 = nullptr;
  61. EventPipeEvent *EventPipeEventGCCreateConcurrentThread = nullptr;
  62. EventPipeEvent *EventPipeEventGCCreateConcurrentThread_V1 = nullptr;
  63. EventPipeEvent *EventPipeEventGCTerminateConcurrentThread = nullptr;
  64. EventPipeEvent *EventPipeEventGCTerminateConcurrentThread_V1 = nullptr;
  65. EventPipeEvent *EventPipeEventGCFinalizersEnd = nullptr;
  66. EventPipeEvent *EventPipeEventGCFinalizersEnd_V1 = nullptr;
  67. EventPipeEvent *EventPipeEventGCFinalizersBegin = nullptr;
  68. EventPipeEvent *EventPipeEventGCFinalizersBegin_V1 = nullptr;
  69. EventPipeEvent *EventPipeEventBulkType = nullptr;
  70. EventPipeEvent *EventPipeEventGCBulkRootEdge = nullptr;
  71. EventPipeEvent *EventPipeEventGCBulkRootConditionalWeakTableElementEdge = nullptr;
  72. EventPipeEvent *EventPipeEventGCBulkNode = nullptr;
  73. EventPipeEvent *EventPipeEventGCBulkEdge = nullptr;
  74. EventPipeEvent *EventPipeEventGCSampledObjectAllocationHigh = nullptr;
  75. EventPipeEvent *EventPipeEventGCBulkSurvivingObjectRanges = nullptr;
  76. EventPipeEvent *EventPipeEventGCBulkMovedObjectRanges = nullptr;
  77. EventPipeEvent *EventPipeEventGCGenerationRange = nullptr;
  78. EventPipeEvent *EventPipeEventGCMarkStackRoots = nullptr;
  79. EventPipeEvent *EventPipeEventGCMarkFinalizeQueueRoots = nullptr;
  80. EventPipeEvent *EventPipeEventGCMarkHandles = nullptr;
  81. EventPipeEvent *EventPipeEventGCMarkOlderGenerationRoots = nullptr;
  82. EventPipeEvent *EventPipeEventFinalizeObject = nullptr;
  83. EventPipeEvent *EventPipeEventSetGCHandle = nullptr;
  84. EventPipeEvent *EventPipeEventDestroyGCHandle = nullptr;
  85. EventPipeEvent *EventPipeEventGCSampledObjectAllocationLow = nullptr;
  86. EventPipeEvent *EventPipeEventPinObjectAtGCTime = nullptr;
  87. EventPipeEvent *EventPipeEventGCTriggered = nullptr;
  88. EventPipeEvent *EventPipeEventGCBulkRootCCW = nullptr;
  89. EventPipeEvent *EventPipeEventGCBulkRCW = nullptr;
  90. EventPipeEvent *EventPipeEventGCBulkRootStaticVar = nullptr;
  91. EventPipeEvent *EventPipeEventWorkerThreadCreate = nullptr;
  92. EventPipeEvent *EventPipeEventWorkerThreadTerminate = nullptr;
  93. EventPipeEvent *EventPipeEventWorkerThreadRetire = nullptr;
  94. EventPipeEvent *EventPipeEventWorkerThreadUnretire = nullptr;
  95. EventPipeEvent *EventPipeEventIOThreadCreate = nullptr;
  96. EventPipeEvent *EventPipeEventIOThreadCreate_V1 = nullptr;
  97. EventPipeEvent *EventPipeEventIOThreadTerminate = nullptr;
  98. EventPipeEvent *EventPipeEventIOThreadTerminate_V1 = nullptr;
  99. EventPipeEvent *EventPipeEventIOThreadRetire = nullptr;
  100. EventPipeEvent *EventPipeEventIOThreadRetire_V1 = nullptr;
  101. EventPipeEvent *EventPipeEventIOThreadUnretire = nullptr;
  102. EventPipeEvent *EventPipeEventIOThreadUnretire_V1 = nullptr;
  103. EventPipeEvent *EventPipeEventThreadpoolSuspensionSuspendThread = nullptr;
  104. EventPipeEvent *EventPipeEventThreadpoolSuspensionResumeThread = nullptr;
  105. EventPipeEvent *EventPipeEventThreadPoolWorkerThreadStart = nullptr;
  106. EventPipeEvent *EventPipeEventThreadPoolWorkerThreadStop = nullptr;
  107. EventPipeEvent *EventPipeEventThreadPoolWorkerThreadRetirementStart = nullptr;
  108. EventPipeEvent *EventPipeEventThreadPoolWorkerThreadRetirementStop = nullptr;
  109. EventPipeEvent *EventPipeEventThreadPoolWorkerThreadAdjustmentSample = nullptr;
  110. EventPipeEvent *EventPipeEventThreadPoolWorkerThreadAdjustmentAdjustment = nullptr;
  111. EventPipeEvent *EventPipeEventThreadPoolWorkerThreadAdjustmentStats = nullptr;
  112. EventPipeEvent *EventPipeEventThreadPoolWorkerThreadWait = nullptr;
  113. EventPipeEvent *EventPipeEventThreadPoolWorkingThreadCount = nullptr;
  114. EventPipeEvent *EventPipeEventThreadPoolEnqueue = nullptr;
  115. EventPipeEvent *EventPipeEventThreadPoolDequeue = nullptr;
  116. EventPipeEvent *EventPipeEventThreadPoolIOEnqueue = nullptr;
  117. EventPipeEvent *EventPipeEventThreadPoolIODequeue = nullptr;
  118. EventPipeEvent *EventPipeEventThreadPoolIOPack = nullptr;
  119. EventPipeEvent *EventPipeEventThreadCreating = nullptr;
  120. EventPipeEvent *EventPipeEventThreadRunning = nullptr;
  121. EventPipeEvent *EventPipeEventExceptionThrown = nullptr;
  122. EventPipeEvent *EventPipeEventExceptionThrown_V1 = nullptr;
  123. EventPipeEvent *EventPipeEventExceptionCatchStart = nullptr;
  124. EventPipeEvent *EventPipeEventExceptionCatchStop = nullptr;
  125. EventPipeEvent *EventPipeEventExceptionFinallyStart = nullptr;
  126. EventPipeEvent *EventPipeEventExceptionFinallyStop = nullptr;
  127. EventPipeEvent *EventPipeEventExceptionFilterStart = nullptr;
  128. EventPipeEvent *EventPipeEventExceptionFilterStop = nullptr;
  129. EventPipeEvent *EventPipeEventExceptionThrownStop = nullptr;
  130. EventPipeEvent *EventPipeEventContention = nullptr;
  131. EventPipeEvent *EventPipeEventContentionStart_V1 = nullptr;
  132. EventPipeEvent *EventPipeEventContentionStop = nullptr;
  133. EventPipeEvent *EventPipeEventCLRStackWalk = nullptr;
  134. EventPipeEvent *EventPipeEventAppDomainMemAllocated = nullptr;
  135. EventPipeEvent *EventPipeEventAppDomainMemSurvived = nullptr;
  136. EventPipeEvent *EventPipeEventThreadCreated = nullptr;
  137. EventPipeEvent *EventPipeEventThreadTerminated = nullptr;
  138. EventPipeEvent *EventPipeEventThreadDomainEnter = nullptr;
  139. EventPipeEvent *EventPipeEventILStubGenerated = nullptr;
  140. EventPipeEvent *EventPipeEventILStubCacheHit = nullptr;
  141. EventPipeEvent *EventPipeEventDCStartCompleteV2 = nullptr;
  142. EventPipeEvent *EventPipeEventDCEndCompleteV2 = nullptr;
  143. EventPipeEvent *EventPipeEventMethodDCStartV2 = nullptr;
  144. EventPipeEvent *EventPipeEventMethodDCEndV2 = nullptr;
  145. EventPipeEvent *EventPipeEventMethodDCStartVerboseV2 = nullptr;
  146. EventPipeEvent *EventPipeEventMethodDCEndVerboseV2 = nullptr;
  147. EventPipeEvent *EventPipeEventMethodLoad = nullptr;
  148. EventPipeEvent *EventPipeEventMethodLoad_V1 = nullptr;
  149. EventPipeEvent *EventPipeEventMethodLoad_V2 = nullptr;
  150. EventPipeEvent *EventPipeEventMethodUnload = nullptr;
  151. EventPipeEvent *EventPipeEventMethodUnload_V1 = nullptr;
  152. EventPipeEvent *EventPipeEventMethodUnload_V2 = nullptr;
  153. EventPipeEvent *EventPipeEventMethodLoadVerbose = nullptr;
  154. EventPipeEvent *EventPipeEventMethodLoadVerbose_V1 = nullptr;
  155. EventPipeEvent *EventPipeEventMethodLoadVerbose_V2 = nullptr;
  156. EventPipeEvent *EventPipeEventMethodUnloadVerbose = nullptr;
  157. EventPipeEvent *EventPipeEventMethodUnloadVerbose_V1 = nullptr;
  158. EventPipeEvent *EventPipeEventMethodUnloadVerbose_V2 = nullptr;
  159. EventPipeEvent *EventPipeEventMethodJittingStarted = nullptr;
  160. EventPipeEvent *EventPipeEventMethodJittingStarted_V1 = nullptr;
  161. EventPipeEvent *EventPipeEventMethodJitInliningSucceeded = nullptr;
  162. EventPipeEvent *EventPipeEventMethodJitInliningFailed = nullptr;
  163. EventPipeEvent *EventPipeEventMethodJitTailCallSucceeded = nullptr;
  164. EventPipeEvent *EventPipeEventMethodJitTailCallFailed = nullptr;
  165. EventPipeEvent *EventPipeEventMethodILToNativeMap = nullptr;
  166. EventPipeEvent *EventPipeEventModuleDCStartV2 = nullptr;
  167. EventPipeEvent *EventPipeEventModuleDCEndV2 = nullptr;
  168. EventPipeEvent *EventPipeEventDomainModuleLoad = nullptr;
  169. EventPipeEvent *EventPipeEventDomainModuleLoad_V1 = nullptr;
  170. EventPipeEvent *EventPipeEventModuleLoad = nullptr;
  171. EventPipeEvent *EventPipeEventModuleLoad_V1 = nullptr;
  172. EventPipeEvent *EventPipeEventModuleLoad_V2 = nullptr;
  173. EventPipeEvent *EventPipeEventModuleUnload = nullptr;
  174. EventPipeEvent *EventPipeEventModuleUnload_V1 = nullptr;
  175. EventPipeEvent *EventPipeEventModuleUnload_V2 = nullptr;
  176. EventPipeEvent *EventPipeEventAssemblyLoad = nullptr;
  177. EventPipeEvent *EventPipeEventAssemblyLoad_V1 = nullptr;
  178. EventPipeEvent *EventPipeEventAssemblyUnload = nullptr;
  179. EventPipeEvent *EventPipeEventAssemblyUnload_V1 = nullptr;
  180. EventPipeEvent *EventPipeEventAppDomainLoad = nullptr;
  181. EventPipeEvent *EventPipeEventAppDomainLoad_V1 = nullptr;
  182. EventPipeEvent *EventPipeEventAppDomainUnload = nullptr;
  183. EventPipeEvent *EventPipeEventAppDomainUnload_V1 = nullptr;
  184. EventPipeEvent *EventPipeEventModuleRangeLoad = nullptr;
  185. EventPipeEvent *EventPipeEventStrongNameVerificationStart = nullptr;
  186. EventPipeEvent *EventPipeEventStrongNameVerificationStart_V1 = nullptr;
  187. EventPipeEvent *EventPipeEventStrongNameVerificationStop = nullptr;
  188. EventPipeEvent *EventPipeEventStrongNameVerificationStop_V1 = nullptr;
  189. EventPipeEvent *EventPipeEventAuthenticodeVerificationStart = nullptr;
  190. EventPipeEvent *EventPipeEventAuthenticodeVerificationStart_V1 = nullptr;
  191. EventPipeEvent *EventPipeEventAuthenticodeVerificationStop = nullptr;
  192. EventPipeEvent *EventPipeEventAuthenticodeVerificationStop_V1 = nullptr;
  193. EventPipeEvent *EventPipeEventRuntimeInformationStart = nullptr;
  194. EventPipeEvent *EventPipeEventIncreaseMemoryPressure = nullptr;
  195. EventPipeEvent *EventPipeEventDecreaseMemoryPressure = nullptr;
  196. EventPipeEvent *EventPipeEventGCMarkWithType = nullptr;
  197. EventPipeEvent *EventPipeEventGCJoin_V2 = nullptr;
  198. EventPipeEvent *EventPipeEventGCPerHeapHistory_V3 = nullptr;
  199. EventPipeEvent *EventPipeEventGCGlobalHeapHistory_V2 = nullptr;
  200. EventPipeEvent *EventPipeEventDebugIPCEventStart = nullptr;
  201. EventPipeEvent *EventPipeEventDebugIPCEventEnd = nullptr;
  202. EventPipeEvent *EventPipeEventDebugExceptionProcessingStart = nullptr;
  203. EventPipeEvent *EventPipeEventDebugExceptionProcessingEnd = nullptr;
  204. EventPipeEvent *EventPipeEventCodeSymbols = nullptr;
  205. EventPipeEvent *EventPipeEventEventSource = nullptr;
  206. bool EventPipeEventEnabledGCStart()
  207. {
  208. return EventPipeEventGCStart->IsEnabled();
  209. }
  210.  
  211. extern "C" ULONG EventPipeWriteEventGCStart(
  212. const unsigned int Count,
  213. const unsigned int Reason)
  214. {
  215. if (!EventPipeEventEnabledGCStart())
  216. return ERROR_SUCCESS;
  217.  
  218. char stackBuffer[32];
  219. char *buffer = stackBuffer;
  220. unsigned int offset = 0;
  221. unsigned int size = 32;
  222. bool fixedBuffer = true;
  223.  
  224. bool success = true;
  225. success &= WriteToBuffer(Count, buffer, offset, size, fixedBuffer);
  226. success &= WriteToBuffer(Reason, buffer, offset, size, fixedBuffer);
  227.  
  228. if (!success)
  229. {
  230. if (!fixedBuffer)
  231. delete[] buffer;
  232. return ERROR_WRITE_FAULT;
  233. }
  234.  
  235. EventPipe::WriteEvent(*EventPipeEventGCStart, (BYTE *)buffer, offset);
  236.  
  237. if (!fixedBuffer)
  238. delete[] buffer;
  239.  
  240. return ERROR_SUCCESS;
  241. }
  242.  
  243. bool EventPipeEventEnabledGCStart_V1()
  244. {
  245. return EventPipeEventGCStart_V1->IsEnabled();
  246. }
  247.  
  248. extern "C" ULONG EventPipeWriteEventGCStart_V1(
  249. const unsigned int Count,
  250. const unsigned int Depth,
  251. const unsigned int Reason,
  252. const unsigned int Type,
  253. const unsigned short ClrInstanceID)
  254. {
  255. if (!EventPipeEventEnabledGCStart_V1())
  256. return ERROR_SUCCESS;
  257.  
  258. char stackBuffer[32];
  259. char *buffer = stackBuffer;
  260. unsigned int offset = 0;
  261. unsigned int size = 32;
  262. bool fixedBuffer = true;
  263.  
  264. bool success = true;
  265. success &= WriteToBuffer(Count, buffer, offset, size, fixedBuffer);
  266. success &= WriteToBuffer(Depth, buffer, offset, size, fixedBuffer);
  267. success &= WriteToBuffer(Reason, buffer, offset, size, fixedBuffer);
  268. success &= WriteToBuffer(Type, buffer, offset, size, fixedBuffer);
  269. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  270.  
  271. if (!success)
  272. {
  273. if (!fixedBuffer)
  274. delete[] buffer;
  275. return ERROR_WRITE_FAULT;
  276. }
  277.  
  278. EventPipe::WriteEvent(*EventPipeEventGCStart_V1, (BYTE *)buffer, offset);
  279.  
  280. if (!fixedBuffer)
  281. delete[] buffer;
  282.  
  283. return ERROR_SUCCESS;
  284. }
  285.  
  286. bool EventPipeEventEnabledGCStart_V2()
  287. {
  288. return EventPipeEventGCStart_V2->IsEnabled();
  289. }
  290.  
  291. extern "C" ULONG EventPipeWriteEventGCStart_V2(
  292. const unsigned int Count,
  293. const unsigned int Depth,
  294. const unsigned int Reason,
  295. const unsigned int Type,
  296. const unsigned short ClrInstanceID,
  297. const unsigned __int64 ClientSequenceNumber)
  298. {
  299. if (!EventPipeEventEnabledGCStart_V2())
  300. return ERROR_SUCCESS;
  301.  
  302. char stackBuffer[32];
  303. char *buffer = stackBuffer;
  304. unsigned int offset = 0;
  305. unsigned int size = 32;
  306. bool fixedBuffer = true;
  307.  
  308. bool success = true;
  309. success &= WriteToBuffer(Count, buffer, offset, size, fixedBuffer);
  310. success &= WriteToBuffer(Depth, buffer, offset, size, fixedBuffer);
  311. success &= WriteToBuffer(Reason, buffer, offset, size, fixedBuffer);
  312. success &= WriteToBuffer(Type, buffer, offset, size, fixedBuffer);
  313. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  314. success &= WriteToBuffer(ClientSequenceNumber, buffer, offset, size, fixedBuffer);
  315.  
  316. if (!success)
  317. {
  318. if (!fixedBuffer)
  319. delete[] buffer;
  320. return ERROR_WRITE_FAULT;
  321. }
  322.  
  323. EventPipe::WriteEvent(*EventPipeEventGCStart_V2, (BYTE *)buffer, offset);
  324.  
  325. if (!fixedBuffer)
  326. delete[] buffer;
  327.  
  328. return ERROR_SUCCESS;
  329. }
  330.  
  331. bool EventPipeEventEnabledGCEnd()
  332. {
  333. return EventPipeEventGCEnd->IsEnabled();
  334. }
  335.  
  336. extern "C" ULONG EventPipeWriteEventGCEnd(
  337. const unsigned int Count,
  338. const unsigned short Depth)
  339. {
  340. if (!EventPipeEventEnabledGCEnd())
  341. return ERROR_SUCCESS;
  342.  
  343. char stackBuffer[32];
  344. char *buffer = stackBuffer;
  345. unsigned int offset = 0;
  346. unsigned int size = 32;
  347. bool fixedBuffer = true;
  348.  
  349. bool success = true;
  350. success &= WriteToBuffer(Count, buffer, offset, size, fixedBuffer);
  351. success &= WriteToBuffer(Depth, buffer, offset, size, fixedBuffer);
  352.  
  353. if (!success)
  354. {
  355. if (!fixedBuffer)
  356. delete[] buffer;
  357. return ERROR_WRITE_FAULT;
  358. }
  359.  
  360. EventPipe::WriteEvent(*EventPipeEventGCEnd, (BYTE *)buffer, offset);
  361.  
  362. if (!fixedBuffer)
  363. delete[] buffer;
  364.  
  365. return ERROR_SUCCESS;
  366. }
  367.  
  368. bool EventPipeEventEnabledGCEnd_V1()
  369. {
  370. return EventPipeEventGCEnd_V1->IsEnabled();
  371. }
  372.  
  373. extern "C" ULONG EventPipeWriteEventGCEnd_V1(
  374. const unsigned int Count,
  375. const unsigned int Depth,
  376. const unsigned short ClrInstanceID)
  377. {
  378. if (!EventPipeEventEnabledGCEnd_V1())
  379. return ERROR_SUCCESS;
  380.  
  381. char stackBuffer[32];
  382. char *buffer = stackBuffer;
  383. unsigned int offset = 0;
  384. unsigned int size = 32;
  385. bool fixedBuffer = true;
  386.  
  387. bool success = true;
  388. success &= WriteToBuffer(Count, buffer, offset, size, fixedBuffer);
  389. success &= WriteToBuffer(Depth, buffer, offset, size, fixedBuffer);
  390. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  391.  
  392. if (!success)
  393. {
  394. if (!fixedBuffer)
  395. delete[] buffer;
  396. return ERROR_WRITE_FAULT;
  397. }
  398.  
  399. EventPipe::WriteEvent(*EventPipeEventGCEnd_V1, (BYTE *)buffer, offset);
  400.  
  401. if (!fixedBuffer)
  402. delete[] buffer;
  403.  
  404. return ERROR_SUCCESS;
  405. }
  406.  
  407. bool EventPipeEventEnabledGCRestartEEEnd()
  408. {
  409. return EventPipeEventGCRestartEEEnd->IsEnabled();
  410. }
  411.  
  412. extern "C" ULONG EventPipeWriteEventGCRestartEEEnd(
  413. )
  414. {
  415. if (!EventPipeEventEnabledGCRestartEEEnd())
  416. return ERROR_SUCCESS;
  417. EventPipe::WriteEvent(*EventPipeEventGCRestartEEEnd, (BYTE*) nullptr, 0);
  418.  
  419. return ERROR_SUCCESS;
  420. }
  421.  
  422. bool EventPipeEventEnabledGCRestartEEEnd_V1()
  423. {
  424. return EventPipeEventGCRestartEEEnd_V1->IsEnabled();
  425. }
  426.  
  427. extern "C" ULONG EventPipeWriteEventGCRestartEEEnd_V1(
  428. const unsigned short ClrInstanceID)
  429. {
  430. if (!EventPipeEventEnabledGCRestartEEEnd_V1())
  431. return ERROR_SUCCESS;
  432.  
  433. char stackBuffer[32];
  434. char *buffer = stackBuffer;
  435. unsigned int offset = 0;
  436. unsigned int size = 32;
  437. bool fixedBuffer = true;
  438.  
  439. bool success = true;
  440. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  441.  
  442. if (!success)
  443. {
  444. if (!fixedBuffer)
  445. delete[] buffer;
  446. return ERROR_WRITE_FAULT;
  447. }
  448.  
  449. EventPipe::WriteEvent(*EventPipeEventGCRestartEEEnd_V1, (BYTE *)buffer, offset);
  450.  
  451. if (!fixedBuffer)
  452. delete[] buffer;
  453.  
  454. return ERROR_SUCCESS;
  455. }
  456.  
  457. bool EventPipeEventEnabledGCHeapStats()
  458. {
  459. return EventPipeEventGCHeapStats->IsEnabled();
  460. }
  461.  
  462. extern "C" ULONG EventPipeWriteEventGCHeapStats(
  463. const unsigned __int64 GenerationSize0,
  464. const unsigned __int64 TotalPromotedSize0,
  465. const unsigned __int64 GenerationSize1,
  466. const unsigned __int64 TotalPromotedSize1,
  467. const unsigned __int64 GenerationSize2,
  468. const unsigned __int64 TotalPromotedSize2,
  469. const unsigned __int64 GenerationSize3,
  470. const unsigned __int64 TotalPromotedSize3,
  471. const unsigned __int64 FinalizationPromotedSize,
  472. const unsigned __int64 FinalizationPromotedCount,
  473. const unsigned int PinnedObjectCount,
  474. const unsigned int SinkBlockCount,
  475. const unsigned int GCHandleCount)
  476. {
  477. if (!EventPipeEventEnabledGCHeapStats())
  478. return ERROR_SUCCESS;
  479.  
  480. char stackBuffer[92];
  481. char *buffer = stackBuffer;
  482. unsigned int offset = 0;
  483. unsigned int size = 92;
  484. bool fixedBuffer = true;
  485.  
  486. bool success = true;
  487. success &= WriteToBuffer(GenerationSize0, buffer, offset, size, fixedBuffer);
  488. success &= WriteToBuffer(TotalPromotedSize0, buffer, offset, size, fixedBuffer);
  489. success &= WriteToBuffer(GenerationSize1, buffer, offset, size, fixedBuffer);
  490. success &= WriteToBuffer(TotalPromotedSize1, buffer, offset, size, fixedBuffer);
  491. success &= WriteToBuffer(GenerationSize2, buffer, offset, size, fixedBuffer);
  492. success &= WriteToBuffer(TotalPromotedSize2, buffer, offset, size, fixedBuffer);
  493. success &= WriteToBuffer(GenerationSize3, buffer, offset, size, fixedBuffer);
  494. success &= WriteToBuffer(TotalPromotedSize3, buffer, offset, size, fixedBuffer);
  495. success &= WriteToBuffer(FinalizationPromotedSize, buffer, offset, size, fixedBuffer);
  496. success &= WriteToBuffer(FinalizationPromotedCount, buffer, offset, size, fixedBuffer);
  497. success &= WriteToBuffer(PinnedObjectCount, buffer, offset, size, fixedBuffer);
  498. success &= WriteToBuffer(SinkBlockCount, buffer, offset, size, fixedBuffer);
  499. success &= WriteToBuffer(GCHandleCount, buffer, offset, size, fixedBuffer);
  500.  
  501. if (!success)
  502. {
  503. if (!fixedBuffer)
  504. delete[] buffer;
  505. return ERROR_WRITE_FAULT;
  506. }
  507.  
  508. EventPipe::WriteEvent(*EventPipeEventGCHeapStats, (BYTE *)buffer, offset);
  509.  
  510. if (!fixedBuffer)
  511. delete[] buffer;
  512.  
  513. return ERROR_SUCCESS;
  514. }
  515.  
  516. bool EventPipeEventEnabledGCHeapStats_V1()
  517. {
  518. return EventPipeEventGCHeapStats_V1->IsEnabled();
  519. }
  520.  
  521. extern "C" ULONG EventPipeWriteEventGCHeapStats_V1(
  522. const unsigned __int64 GenerationSize0,
  523. const unsigned __int64 TotalPromotedSize0,
  524. const unsigned __int64 GenerationSize1,
  525. const unsigned __int64 TotalPromotedSize1,
  526. const unsigned __int64 GenerationSize2,
  527. const unsigned __int64 TotalPromotedSize2,
  528. const unsigned __int64 GenerationSize3,
  529. const unsigned __int64 TotalPromotedSize3,
  530. const unsigned __int64 FinalizationPromotedSize,
  531. const unsigned __int64 FinalizationPromotedCount,
  532. const unsigned int PinnedObjectCount,
  533. const unsigned int SinkBlockCount,
  534. const unsigned int GCHandleCount,
  535. const unsigned short ClrInstanceID)
  536. {
  537. if (!EventPipeEventEnabledGCHeapStats_V1())
  538. return ERROR_SUCCESS;
  539.  
  540. char stackBuffer[94];
  541. char *buffer = stackBuffer;
  542. unsigned int offset = 0;
  543. unsigned int size = 94;
  544. bool fixedBuffer = true;
  545.  
  546. bool success = true;
  547. success &= WriteToBuffer(GenerationSize0, buffer, offset, size, fixedBuffer);
  548. success &= WriteToBuffer(TotalPromotedSize0, buffer, offset, size, fixedBuffer);
  549. success &= WriteToBuffer(GenerationSize1, buffer, offset, size, fixedBuffer);
  550. success &= WriteToBuffer(TotalPromotedSize1, buffer, offset, size, fixedBuffer);
  551. success &= WriteToBuffer(GenerationSize2, buffer, offset, size, fixedBuffer);
  552. success &= WriteToBuffer(TotalPromotedSize2, buffer, offset, size, fixedBuffer);
  553. success &= WriteToBuffer(GenerationSize3, buffer, offset, size, fixedBuffer);
  554. success &= WriteToBuffer(TotalPromotedSize3, buffer, offset, size, fixedBuffer);
  555. success &= WriteToBuffer(FinalizationPromotedSize, buffer, offset, size, fixedBuffer);
  556. success &= WriteToBuffer(FinalizationPromotedCount, buffer, offset, size, fixedBuffer);
  557. success &= WriteToBuffer(PinnedObjectCount, buffer, offset, size, fixedBuffer);
  558. success &= WriteToBuffer(SinkBlockCount, buffer, offset, size, fixedBuffer);
  559. success &= WriteToBuffer(GCHandleCount, buffer, offset, size, fixedBuffer);
  560. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  561.  
  562. if (!success)
  563. {
  564. if (!fixedBuffer)
  565. delete[] buffer;
  566. return ERROR_WRITE_FAULT;
  567. }
  568.  
  569. EventPipe::WriteEvent(*EventPipeEventGCHeapStats_V1, (BYTE *)buffer, offset);
  570.  
  571. if (!fixedBuffer)
  572. delete[] buffer;
  573.  
  574. return ERROR_SUCCESS;
  575. }
  576.  
  577. bool EventPipeEventEnabledGCCreateSegment()
  578. {
  579. return EventPipeEventGCCreateSegment->IsEnabled();
  580. }
  581.  
  582. extern "C" ULONG EventPipeWriteEventGCCreateSegment(
  583. const unsigned __int64 Address,
  584. const unsigned __int64 Size,
  585. const unsigned int Type)
  586. {
  587. if (!EventPipeEventEnabledGCCreateSegment())
  588. return ERROR_SUCCESS;
  589.  
  590. char stackBuffer[32];
  591. char *buffer = stackBuffer;
  592. unsigned int offset = 0;
  593. unsigned int size = 32;
  594. bool fixedBuffer = true;
  595.  
  596. bool success = true;
  597. success &= WriteToBuffer(Address, buffer, offset, size, fixedBuffer);
  598. success &= WriteToBuffer(Size, buffer, offset, size, fixedBuffer);
  599. success &= WriteToBuffer(Type, buffer, offset, size, fixedBuffer);
  600.  
  601. if (!success)
  602. {
  603. if (!fixedBuffer)
  604. delete[] buffer;
  605. return ERROR_WRITE_FAULT;
  606. }
  607.  
  608. EventPipe::WriteEvent(*EventPipeEventGCCreateSegment, (BYTE *)buffer, offset);
  609.  
  610. if (!fixedBuffer)
  611. delete[] buffer;
  612.  
  613. return ERROR_SUCCESS;
  614. }
  615.  
  616. bool EventPipeEventEnabledGCCreateSegment_V1()
  617. {
  618. return EventPipeEventGCCreateSegment_V1->IsEnabled();
  619. }
  620.  
  621. extern "C" ULONG EventPipeWriteEventGCCreateSegment_V1(
  622. const unsigned __int64 Address,
  623. const unsigned __int64 Size,
  624. const unsigned int Type,
  625. const unsigned short ClrInstanceID)
  626. {
  627. if (!EventPipeEventEnabledGCCreateSegment_V1())
  628. return ERROR_SUCCESS;
  629.  
  630. char stackBuffer[32];
  631. char *buffer = stackBuffer;
  632. unsigned int offset = 0;
  633. unsigned int size = 32;
  634. bool fixedBuffer = true;
  635.  
  636. bool success = true;
  637. success &= WriteToBuffer(Address, buffer, offset, size, fixedBuffer);
  638. success &= WriteToBuffer(Size, buffer, offset, size, fixedBuffer);
  639. success &= WriteToBuffer(Type, buffer, offset, size, fixedBuffer);
  640. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  641.  
  642. if (!success)
  643. {
  644. if (!fixedBuffer)
  645. delete[] buffer;
  646. return ERROR_WRITE_FAULT;
  647. }
  648.  
  649. EventPipe::WriteEvent(*EventPipeEventGCCreateSegment_V1, (BYTE *)buffer, offset);
  650.  
  651. if (!fixedBuffer)
  652. delete[] buffer;
  653.  
  654. return ERROR_SUCCESS;
  655. }
  656.  
  657. bool EventPipeEventEnabledGCFreeSegment()
  658. {
  659. return EventPipeEventGCFreeSegment->IsEnabled();
  660. }
  661.  
  662. extern "C" ULONG EventPipeWriteEventGCFreeSegment(
  663. const unsigned __int64 Address)
  664. {
  665. if (!EventPipeEventEnabledGCFreeSegment())
  666. return ERROR_SUCCESS;
  667.  
  668. char stackBuffer[32];
  669. char *buffer = stackBuffer;
  670. unsigned int offset = 0;
  671. unsigned int size = 32;
  672. bool fixedBuffer = true;
  673.  
  674. bool success = true;
  675. success &= WriteToBuffer(Address, buffer, offset, size, fixedBuffer);
  676.  
  677. if (!success)
  678. {
  679. if (!fixedBuffer)
  680. delete[] buffer;
  681. return ERROR_WRITE_FAULT;
  682. }
  683.  
  684. EventPipe::WriteEvent(*EventPipeEventGCFreeSegment, (BYTE *)buffer, offset);
  685.  
  686. if (!fixedBuffer)
  687. delete[] buffer;
  688.  
  689. return ERROR_SUCCESS;
  690. }
  691.  
  692. bool EventPipeEventEnabledGCFreeSegment_V1()
  693. {
  694. return EventPipeEventGCFreeSegment_V1->IsEnabled();
  695. }
  696.  
  697. extern "C" ULONG EventPipeWriteEventGCFreeSegment_V1(
  698. const unsigned __int64 Address,
  699. const unsigned short ClrInstanceID)
  700. {
  701. if (!EventPipeEventEnabledGCFreeSegment_V1())
  702. return ERROR_SUCCESS;
  703.  
  704. char stackBuffer[32];
  705. char *buffer = stackBuffer;
  706. unsigned int offset = 0;
  707. unsigned int size = 32;
  708. bool fixedBuffer = true;
  709.  
  710. bool success = true;
  711. success &= WriteToBuffer(Address, buffer, offset, size, fixedBuffer);
  712. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  713.  
  714. if (!success)
  715. {
  716. if (!fixedBuffer)
  717. delete[] buffer;
  718. return ERROR_WRITE_FAULT;
  719. }
  720.  
  721. EventPipe::WriteEvent(*EventPipeEventGCFreeSegment_V1, (BYTE *)buffer, offset);
  722.  
  723. if (!fixedBuffer)
  724. delete[] buffer;
  725.  
  726. return ERROR_SUCCESS;
  727. }
  728.  
  729. bool EventPipeEventEnabledGCRestartEEBegin()
  730. {
  731. return EventPipeEventGCRestartEEBegin->IsEnabled();
  732. }
  733.  
  734. extern "C" ULONG EventPipeWriteEventGCRestartEEBegin(
  735. )
  736. {
  737. if (!EventPipeEventEnabledGCRestartEEBegin())
  738. return ERROR_SUCCESS;
  739. EventPipe::WriteEvent(*EventPipeEventGCRestartEEBegin, (BYTE*) nullptr, 0);
  740.  
  741. return ERROR_SUCCESS;
  742. }
  743.  
  744. bool EventPipeEventEnabledGCRestartEEBegin_V1()
  745. {
  746. return EventPipeEventGCRestartEEBegin_V1->IsEnabled();
  747. }
  748.  
  749. extern "C" ULONG EventPipeWriteEventGCRestartEEBegin_V1(
  750. const unsigned short ClrInstanceID)
  751. {
  752. if (!EventPipeEventEnabledGCRestartEEBegin_V1())
  753. return ERROR_SUCCESS;
  754.  
  755. char stackBuffer[32];
  756. char *buffer = stackBuffer;
  757. unsigned int offset = 0;
  758. unsigned int size = 32;
  759. bool fixedBuffer = true;
  760.  
  761. bool success = true;
  762. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  763.  
  764. if (!success)
  765. {
  766. if (!fixedBuffer)
  767. delete[] buffer;
  768. return ERROR_WRITE_FAULT;
  769. }
  770.  
  771. EventPipe::WriteEvent(*EventPipeEventGCRestartEEBegin_V1, (BYTE *)buffer, offset);
  772.  
  773. if (!fixedBuffer)
  774. delete[] buffer;
  775.  
  776. return ERROR_SUCCESS;
  777. }
  778.  
  779. bool EventPipeEventEnabledGCSuspendEEEnd()
  780. {
  781. return EventPipeEventGCSuspendEEEnd->IsEnabled();
  782. }
  783.  
  784. extern "C" ULONG EventPipeWriteEventGCSuspendEEEnd(
  785. )
  786. {
  787. if (!EventPipeEventEnabledGCSuspendEEEnd())
  788. return ERROR_SUCCESS;
  789. EventPipe::WriteEvent(*EventPipeEventGCSuspendEEEnd, (BYTE*) nullptr, 0);
  790.  
  791. return ERROR_SUCCESS;
  792. }
  793.  
  794. bool EventPipeEventEnabledGCSuspendEEEnd_V1()
  795. {
  796. return EventPipeEventGCSuspendEEEnd_V1->IsEnabled();
  797. }
  798.  
  799. extern "C" ULONG EventPipeWriteEventGCSuspendEEEnd_V1(
  800. const unsigned short ClrInstanceID)
  801. {
  802. if (!EventPipeEventEnabledGCSuspendEEEnd_V1())
  803. return ERROR_SUCCESS;
  804.  
  805. char stackBuffer[32];
  806. char *buffer = stackBuffer;
  807. unsigned int offset = 0;
  808. unsigned int size = 32;
  809. bool fixedBuffer = true;
  810.  
  811. bool success = true;
  812. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  813.  
  814. if (!success)
  815. {
  816. if (!fixedBuffer)
  817. delete[] buffer;
  818. return ERROR_WRITE_FAULT;
  819. }
  820.  
  821. EventPipe::WriteEvent(*EventPipeEventGCSuspendEEEnd_V1, (BYTE *)buffer, offset);
  822.  
  823. if (!fixedBuffer)
  824. delete[] buffer;
  825.  
  826. return ERROR_SUCCESS;
  827. }
  828.  
  829. bool EventPipeEventEnabledGCSuspendEEBegin()
  830. {
  831. return EventPipeEventGCSuspendEEBegin->IsEnabled();
  832. }
  833.  
  834. extern "C" ULONG EventPipeWriteEventGCSuspendEEBegin(
  835. const unsigned short Reason)
  836. {
  837. if (!EventPipeEventEnabledGCSuspendEEBegin())
  838. return ERROR_SUCCESS;
  839.  
  840. char stackBuffer[32];
  841. char *buffer = stackBuffer;
  842. unsigned int offset = 0;
  843. unsigned int size = 32;
  844. bool fixedBuffer = true;
  845.  
  846. bool success = true;
  847. success &= WriteToBuffer(Reason, buffer, offset, size, fixedBuffer);
  848.  
  849. if (!success)
  850. {
  851. if (!fixedBuffer)
  852. delete[] buffer;
  853. return ERROR_WRITE_FAULT;
  854. }
  855.  
  856. EventPipe::WriteEvent(*EventPipeEventGCSuspendEEBegin, (BYTE *)buffer, offset);
  857.  
  858. if (!fixedBuffer)
  859. delete[] buffer;
  860.  
  861. return ERROR_SUCCESS;
  862. }
  863.  
  864. bool EventPipeEventEnabledGCSuspendEEBegin_V1()
  865. {
  866. return EventPipeEventGCSuspendEEBegin_V1->IsEnabled();
  867. }
  868.  
  869. extern "C" ULONG EventPipeWriteEventGCSuspendEEBegin_V1(
  870. const unsigned int Reason,
  871. const unsigned int Count,
  872. const unsigned short ClrInstanceID)
  873. {
  874. if (!EventPipeEventEnabledGCSuspendEEBegin_V1())
  875. return ERROR_SUCCESS;
  876.  
  877. char stackBuffer[32];
  878. char *buffer = stackBuffer;
  879. unsigned int offset = 0;
  880. unsigned int size = 32;
  881. bool fixedBuffer = true;
  882.  
  883. bool success = true;
  884. success &= WriteToBuffer(Reason, buffer, offset, size, fixedBuffer);
  885. success &= WriteToBuffer(Count, buffer, offset, size, fixedBuffer);
  886. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  887.  
  888. if (!success)
  889. {
  890. if (!fixedBuffer)
  891. delete[] buffer;
  892. return ERROR_WRITE_FAULT;
  893. }
  894.  
  895. EventPipe::WriteEvent(*EventPipeEventGCSuspendEEBegin_V1, (BYTE *)buffer, offset);
  896.  
  897. if (!fixedBuffer)
  898. delete[] buffer;
  899.  
  900. return ERROR_SUCCESS;
  901. }
  902.  
  903. bool EventPipeEventEnabledGCAllocationTick()
  904. {
  905. return EventPipeEventGCAllocationTick->IsEnabled();
  906. }
  907.  
  908. extern "C" ULONG EventPipeWriteEventGCAllocationTick(
  909. const unsigned int AllocationAmount,
  910. const unsigned int AllocationKind)
  911. {
  912. if (!EventPipeEventEnabledGCAllocationTick())
  913. return ERROR_SUCCESS;
  914.  
  915. char stackBuffer[32];
  916. char *buffer = stackBuffer;
  917. unsigned int offset = 0;
  918. unsigned int size = 32;
  919. bool fixedBuffer = true;
  920.  
  921. bool success = true;
  922. success &= WriteToBuffer(AllocationAmount, buffer, offset, size, fixedBuffer);
  923. success &= WriteToBuffer(AllocationKind, buffer, offset, size, fixedBuffer);
  924.  
  925. if (!success)
  926. {
  927. if (!fixedBuffer)
  928. delete[] buffer;
  929. return ERROR_WRITE_FAULT;
  930. }
  931.  
  932. EventPipe::WriteEvent(*EventPipeEventGCAllocationTick, (BYTE *)buffer, offset);
  933.  
  934. if (!fixedBuffer)
  935. delete[] buffer;
  936.  
  937. return ERROR_SUCCESS;
  938. }
  939.  
  940. bool EventPipeEventEnabledGCAllocationTick_V1()
  941. {
  942. return EventPipeEventGCAllocationTick_V1->IsEnabled();
  943. }
  944.  
  945. extern "C" ULONG EventPipeWriteEventGCAllocationTick_V1(
  946. const unsigned int AllocationAmount,
  947. const unsigned int AllocationKind,
  948. const unsigned short ClrInstanceID)
  949. {
  950. if (!EventPipeEventEnabledGCAllocationTick_V1())
  951. return ERROR_SUCCESS;
  952.  
  953. char stackBuffer[32];
  954. char *buffer = stackBuffer;
  955. unsigned int offset = 0;
  956. unsigned int size = 32;
  957. bool fixedBuffer = true;
  958.  
  959. bool success = true;
  960. success &= WriteToBuffer(AllocationAmount, buffer, offset, size, fixedBuffer);
  961. success &= WriteToBuffer(AllocationKind, buffer, offset, size, fixedBuffer);
  962. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  963.  
  964. if (!success)
  965. {
  966. if (!fixedBuffer)
  967. delete[] buffer;
  968. return ERROR_WRITE_FAULT;
  969. }
  970.  
  971. EventPipe::WriteEvent(*EventPipeEventGCAllocationTick_V1, (BYTE *)buffer, offset);
  972.  
  973. if (!fixedBuffer)
  974. delete[] buffer;
  975.  
  976. return ERROR_SUCCESS;
  977. }
  978.  
  979. bool EventPipeEventEnabledGCAllocationTick_V2()
  980. {
  981. return EventPipeEventGCAllocationTick_V2->IsEnabled();
  982. }
  983.  
  984. extern "C" ULONG EventPipeWriteEventGCAllocationTick_V2(
  985. const unsigned int AllocationAmount,
  986. const unsigned int AllocationKind,
  987. const unsigned short ClrInstanceID,
  988. const unsigned __int64 AllocationAmount64,
  989. const void* TypeID,
  990. PCWSTR TypeName,
  991. const unsigned int HeapIndex)
  992. {
  993. if (!EventPipeEventEnabledGCAllocationTick_V2())
  994. return ERROR_SUCCESS;
  995.  
  996. char stackBuffer[94];
  997. char *buffer = stackBuffer;
  998. unsigned int offset = 0;
  999. unsigned int size = 94;
  1000. bool fixedBuffer = true;
  1001.  
  1002. bool success = true;
  1003. success &= WriteToBuffer(AllocationAmount, buffer, offset, size, fixedBuffer);
  1004. success &= WriteToBuffer(AllocationKind, buffer, offset, size, fixedBuffer);
  1005. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  1006. success &= WriteToBuffer(AllocationAmount64, buffer, offset, size, fixedBuffer);
  1007. success &= WriteToBuffer(TypeID, buffer, offset, size, fixedBuffer);
  1008. success &= WriteToBuffer(TypeName, buffer, offset, size, fixedBuffer);
  1009. success &= WriteToBuffer(HeapIndex, buffer, offset, size, fixedBuffer);
  1010.  
  1011. if (!success)
  1012. {
  1013. if (!fixedBuffer)
  1014. delete[] buffer;
  1015. return ERROR_WRITE_FAULT;
  1016. }
  1017.  
  1018. EventPipe::WriteEvent(*EventPipeEventGCAllocationTick_V2, (BYTE *)buffer, offset);
  1019.  
  1020. if (!fixedBuffer)
  1021. delete[] buffer;
  1022.  
  1023. return ERROR_SUCCESS;
  1024. }
  1025.  
  1026. bool EventPipeEventEnabledGCAllocationTick_V3()
  1027. {
  1028. return EventPipeEventGCAllocationTick_V3->IsEnabled();
  1029. }
  1030.  
  1031. extern "C" ULONG EventPipeWriteEventGCAllocationTick_V3(
  1032. const unsigned int AllocationAmount,
  1033. const unsigned int AllocationKind,
  1034. const unsigned short ClrInstanceID,
  1035. const unsigned __int64 AllocationAmount64,
  1036. const void* TypeID,
  1037. PCWSTR TypeName,
  1038. const unsigned int HeapIndex,
  1039. const void* Address)
  1040. {
  1041. if (!EventPipeEventEnabledGCAllocationTick_V3())
  1042. return ERROR_SUCCESS;
  1043.  
  1044. char stackBuffer[102];
  1045. char *buffer = stackBuffer;
  1046. unsigned int offset = 0;
  1047. unsigned int size = 102;
  1048. bool fixedBuffer = true;
  1049.  
  1050. bool success = true;
  1051. success &= WriteToBuffer(AllocationAmount, buffer, offset, size, fixedBuffer);
  1052. success &= WriteToBuffer(AllocationKind, buffer, offset, size, fixedBuffer);
  1053. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  1054. success &= WriteToBuffer(AllocationAmount64, buffer, offset, size, fixedBuffer);
  1055. success &= WriteToBuffer(TypeID, buffer, offset, size, fixedBuffer);
  1056. success &= WriteToBuffer(TypeName, buffer, offset, size, fixedBuffer);
  1057. success &= WriteToBuffer(HeapIndex, buffer, offset, size, fixedBuffer);
  1058. success &= WriteToBuffer(Address, buffer, offset, size, fixedBuffer);
  1059.  
  1060. if (!success)
  1061. {
  1062. if (!fixedBuffer)
  1063. delete[] buffer;
  1064. return ERROR_WRITE_FAULT;
  1065. }
  1066.  
  1067. EventPipe::WriteEvent(*EventPipeEventGCAllocationTick_V3, (BYTE *)buffer, offset);
  1068.  
  1069. if (!fixedBuffer)
  1070. delete[] buffer;
  1071.  
  1072. return ERROR_SUCCESS;
  1073. }
  1074.  
  1075. bool EventPipeEventEnabledGCCreateConcurrentThread()
  1076. {
  1077. return EventPipeEventGCCreateConcurrentThread->IsEnabled();
  1078. }
  1079.  
  1080. extern "C" ULONG EventPipeWriteEventGCCreateConcurrentThread(
  1081. )
  1082. {
  1083. if (!EventPipeEventEnabledGCCreateConcurrentThread())
  1084. return ERROR_SUCCESS;
  1085. EventPipe::WriteEvent(*EventPipeEventGCCreateConcurrentThread, (BYTE*) nullptr, 0);
  1086.  
  1087. return ERROR_SUCCESS;
  1088. }
  1089.  
  1090. bool EventPipeEventEnabledGCCreateConcurrentThread_V1()
  1091. {
  1092. return EventPipeEventGCCreateConcurrentThread_V1->IsEnabled();
  1093. }
  1094.  
  1095. extern "C" ULONG EventPipeWriteEventGCCreateConcurrentThread_V1(
  1096. const unsigned short ClrInstanceID)
  1097. {
  1098. if (!EventPipeEventEnabledGCCreateConcurrentThread_V1())
  1099. return ERROR_SUCCESS;
  1100.  
  1101. char stackBuffer[32];
  1102. char *buffer = stackBuffer;
  1103. unsigned int offset = 0;
  1104. unsigned int size = 32;
  1105. bool fixedBuffer = true;
  1106.  
  1107. bool success = true;
  1108. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  1109.  
  1110. if (!success)
  1111. {
  1112. if (!fixedBuffer)
  1113. delete[] buffer;
  1114. return ERROR_WRITE_FAULT;
  1115. }
  1116.  
  1117. EventPipe::WriteEvent(*EventPipeEventGCCreateConcurrentThread_V1, (BYTE *)buffer, offset);
  1118.  
  1119. if (!fixedBuffer)
  1120. delete[] buffer;
  1121.  
  1122. return ERROR_SUCCESS;
  1123. }
  1124.  
  1125. bool EventPipeEventEnabledGCTerminateConcurrentThread()
  1126. {
  1127. return EventPipeEventGCTerminateConcurrentThread->IsEnabled();
  1128. }
  1129.  
  1130. extern "C" ULONG EventPipeWriteEventGCTerminateConcurrentThread(
  1131. )
  1132. {
  1133. if (!EventPipeEventEnabledGCTerminateConcurrentThread())
  1134. return ERROR_SUCCESS;
  1135. EventPipe::WriteEvent(*EventPipeEventGCTerminateConcurrentThread, (BYTE*) nullptr, 0);
  1136.  
  1137. return ERROR_SUCCESS;
  1138. }
  1139.  
  1140. bool EventPipeEventEnabledGCTerminateConcurrentThread_V1()
  1141. {
  1142. return EventPipeEventGCTerminateConcurrentThread_V1->IsEnabled();
  1143. }
  1144.  
  1145. extern "C" ULONG EventPipeWriteEventGCTerminateConcurrentThread_V1(
  1146. const unsigned short ClrInstanceID)
  1147. {
  1148. if (!EventPipeEventEnabledGCTerminateConcurrentThread_V1())
  1149. return ERROR_SUCCESS;
  1150.  
  1151. char stackBuffer[32];
  1152. char *buffer = stackBuffer;
  1153. unsigned int offset = 0;
  1154. unsigned int size = 32;
  1155. bool fixedBuffer = true;
  1156.  
  1157. bool success = true;
  1158. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  1159.  
  1160. if (!success)
  1161. {
  1162. if (!fixedBuffer)
  1163. delete[] buffer;
  1164. return ERROR_WRITE_FAULT;
  1165. }
  1166.  
  1167. EventPipe::WriteEvent(*EventPipeEventGCTerminateConcurrentThread_V1, (BYTE *)buffer, offset);
  1168.  
  1169. if (!fixedBuffer)
  1170. delete[] buffer;
  1171.  
  1172. return ERROR_SUCCESS;
  1173. }
  1174.  
  1175. bool EventPipeEventEnabledGCFinalizersEnd()
  1176. {
  1177. return EventPipeEventGCFinalizersEnd->IsEnabled();
  1178. }
  1179.  
  1180. extern "C" ULONG EventPipeWriteEventGCFinalizersEnd(
  1181. const unsigned int Count)
  1182. {
  1183. if (!EventPipeEventEnabledGCFinalizersEnd())
  1184. return ERROR_SUCCESS;
  1185.  
  1186. char stackBuffer[32];
  1187. char *buffer = stackBuffer;
  1188. unsigned int offset = 0;
  1189. unsigned int size = 32;
  1190. bool fixedBuffer = true;
  1191.  
  1192. bool success = true;
  1193. success &= WriteToBuffer(Count, buffer, offset, size, fixedBuffer);
  1194.  
  1195. if (!success)
  1196. {
  1197. if (!fixedBuffer)
  1198. delete[] buffer;
  1199. return ERROR_WRITE_FAULT;
  1200. }
  1201.  
  1202. EventPipe::WriteEvent(*EventPipeEventGCFinalizersEnd, (BYTE *)buffer, offset);
  1203.  
  1204. if (!fixedBuffer)
  1205. delete[] buffer;
  1206.  
  1207. return ERROR_SUCCESS;
  1208. }
  1209.  
  1210. bool EventPipeEventEnabledGCFinalizersEnd_V1()
  1211. {
  1212. return EventPipeEventGCFinalizersEnd_V1->IsEnabled();
  1213. }
  1214.  
  1215. extern "C" ULONG EventPipeWriteEventGCFinalizersEnd_V1(
  1216. const unsigned int Count,
  1217. const unsigned short ClrInstanceID)
  1218. {
  1219. if (!EventPipeEventEnabledGCFinalizersEnd_V1())
  1220. return ERROR_SUCCESS;
  1221.  
  1222. char stackBuffer[32];
  1223. char *buffer = stackBuffer;
  1224. unsigned int offset = 0;
  1225. unsigned int size = 32;
  1226. bool fixedBuffer = true;
  1227.  
  1228. bool success = true;
  1229. success &= WriteToBuffer(Count, buffer, offset, size, fixedBuffer);
  1230. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  1231.  
  1232. if (!success)
  1233. {
  1234. if (!fixedBuffer)
  1235. delete[] buffer;
  1236. return ERROR_WRITE_FAULT;
  1237. }
  1238.  
  1239. EventPipe::WriteEvent(*EventPipeEventGCFinalizersEnd_V1, (BYTE *)buffer, offset);
  1240.  
  1241. if (!fixedBuffer)
  1242. delete[] buffer;
  1243.  
  1244. return ERROR_SUCCESS;
  1245. }
  1246.  
  1247. bool EventPipeEventEnabledGCFinalizersBegin()
  1248. {
  1249. return EventPipeEventGCFinalizersBegin->IsEnabled();
  1250. }
  1251.  
  1252. extern "C" ULONG EventPipeWriteEventGCFinalizersBegin(
  1253. )
  1254. {
  1255. if (!EventPipeEventEnabledGCFinalizersBegin())
  1256. return ERROR_SUCCESS;
  1257. EventPipe::WriteEvent(*EventPipeEventGCFinalizersBegin, (BYTE*) nullptr, 0);
  1258.  
  1259. return ERROR_SUCCESS;
  1260. }
  1261.  
  1262. bool EventPipeEventEnabledGCFinalizersBegin_V1()
  1263. {
  1264. return EventPipeEventGCFinalizersBegin_V1->IsEnabled();
  1265. }
  1266.  
  1267. extern "C" ULONG EventPipeWriteEventGCFinalizersBegin_V1(
  1268. const unsigned short ClrInstanceID)
  1269. {
  1270. if (!EventPipeEventEnabledGCFinalizersBegin_V1())
  1271. return ERROR_SUCCESS;
  1272.  
  1273. char stackBuffer[32];
  1274. char *buffer = stackBuffer;
  1275. unsigned int offset = 0;
  1276. unsigned int size = 32;
  1277. bool fixedBuffer = true;
  1278.  
  1279. bool success = true;
  1280. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  1281.  
  1282. if (!success)
  1283. {
  1284. if (!fixedBuffer)
  1285. delete[] buffer;
  1286. return ERROR_WRITE_FAULT;
  1287. }
  1288.  
  1289. EventPipe::WriteEvent(*EventPipeEventGCFinalizersBegin_V1, (BYTE *)buffer, offset);
  1290.  
  1291. if (!fixedBuffer)
  1292. delete[] buffer;
  1293.  
  1294. return ERROR_SUCCESS;
  1295. }
  1296.  
  1297. bool EventPipeEventEnabledBulkType()
  1298. {
  1299. return EventPipeEventBulkType->IsEnabled();
  1300. }
  1301.  
  1302. extern "C" ULONG EventPipeWriteEventBulkType(
  1303. const unsigned int Count,
  1304. const unsigned short ClrInstanceID,
  1305. int Values_ElementSize,
  1306. const void* Values)
  1307. {
  1308. if (!EventPipeEventEnabledBulkType())
  1309. return ERROR_SUCCESS;
  1310.  
  1311. char stackBuffer[38];
  1312. char *buffer = stackBuffer;
  1313. unsigned int offset = 0;
  1314. unsigned int size = 38;
  1315. bool fixedBuffer = true;
  1316.  
  1317. bool success = true;
  1318. success &= WriteToBuffer(Count, buffer, offset, size, fixedBuffer);
  1319. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  1320. success &= WriteToBuffer((const BYTE *)Values, (int)(Values_ElementSize), buffer, offset, size, fixedBuffer);
  1321.  
  1322. if (!success)
  1323. {
  1324. if (!fixedBuffer)
  1325. delete[] buffer;
  1326. return ERROR_WRITE_FAULT;
  1327. }
  1328.  
  1329. EventPipe::WriteEvent(*EventPipeEventBulkType, (BYTE *)buffer, offset);
  1330.  
  1331. if (!fixedBuffer)
  1332. delete[] buffer;
  1333.  
  1334. return ERROR_SUCCESS;
  1335. }
  1336.  
  1337. bool EventPipeEventEnabledGCBulkRootEdge()
  1338. {
  1339. return EventPipeEventGCBulkRootEdge->IsEnabled();
  1340. }
  1341.  
  1342. extern "C" ULONG EventPipeWriteEventGCBulkRootEdge(
  1343. const unsigned int Index,
  1344. const unsigned int Count,
  1345. const unsigned short ClrInstanceID,
  1346. int Values_ElementSize,
  1347. const void* Values)
  1348. {
  1349. if (!EventPipeEventEnabledGCBulkRootEdge())
  1350. return ERROR_SUCCESS;
  1351.  
  1352. char stackBuffer[42];
  1353. char *buffer = stackBuffer;
  1354. unsigned int offset = 0;
  1355. unsigned int size = 42;
  1356. bool fixedBuffer = true;
  1357.  
  1358. bool success = true;
  1359. success &= WriteToBuffer(Index, buffer, offset, size, fixedBuffer);
  1360. success &= WriteToBuffer(Count, buffer, offset, size, fixedBuffer);
  1361. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  1362. success &= WriteToBuffer((const BYTE *)Values, (int)Values_ElementSize * (int)Count, buffer, offset, size, fixedBuffer);
  1363.  
  1364. if (!success)
  1365. {
  1366. if (!fixedBuffer)
  1367. delete[] buffer;
  1368. return ERROR_WRITE_FAULT;
  1369. }
  1370.  
  1371. EventPipe::WriteEvent(*EventPipeEventGCBulkRootEdge, (BYTE *)buffer, offset);
  1372.  
  1373. if (!fixedBuffer)
  1374. delete[] buffer;
  1375.  
  1376. return ERROR_SUCCESS;
  1377. }
  1378.  
  1379. bool EventPipeEventEnabledGCBulkRootConditionalWeakTableElementEdge()
  1380. {
  1381. return EventPipeEventGCBulkRootConditionalWeakTableElementEdge->IsEnabled();
  1382. }
  1383.  
  1384. extern "C" ULONG EventPipeWriteEventGCBulkRootConditionalWeakTableElementEdge(
  1385. const unsigned int Index,
  1386. const unsigned int Count,
  1387. const unsigned short ClrInstanceID,
  1388. int Values_ElementSize,
  1389. const void* Values)
  1390. {
  1391. if (!EventPipeEventEnabledGCBulkRootConditionalWeakTableElementEdge())
  1392. return ERROR_SUCCESS;
  1393.  
  1394. char stackBuffer[42];
  1395. char *buffer = stackBuffer;
  1396. unsigned int offset = 0;
  1397. unsigned int size = 42;
  1398. bool fixedBuffer = true;
  1399.  
  1400. bool success = true;
  1401. success &= WriteToBuffer(Index, buffer, offset, size, fixedBuffer);
  1402. success &= WriteToBuffer(Count, buffer, offset, size, fixedBuffer);
  1403. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  1404. success &= WriteToBuffer((const BYTE *)Values, (int)Values_ElementSize * (int)Count, buffer, offset, size, fixedBuffer);
  1405.  
  1406. if (!success)
  1407. {
  1408. if (!fixedBuffer)
  1409. delete[] buffer;
  1410. return ERROR_WRITE_FAULT;
  1411. }
  1412.  
  1413. EventPipe::WriteEvent(*EventPipeEventGCBulkRootConditionalWeakTableElementEdge, (BYTE *)buffer, offset);
  1414.  
  1415. if (!fixedBuffer)
  1416. delete[] buffer;
  1417.  
  1418. return ERROR_SUCCESS;
  1419. }
  1420.  
  1421. bool EventPipeEventEnabledGCBulkNode()
  1422. {
  1423. return EventPipeEventGCBulkNode->IsEnabled();
  1424. }
  1425.  
  1426. extern "C" ULONG EventPipeWriteEventGCBulkNode(
  1427. const unsigned int Index,
  1428. const unsigned int Count,
  1429. const unsigned short ClrInstanceID,
  1430. int Values_ElementSize,
  1431. const void* Values)
  1432. {
  1433. if (!EventPipeEventEnabledGCBulkNode())
  1434. return ERROR_SUCCESS;
  1435.  
  1436. char stackBuffer[42];
  1437. char *buffer = stackBuffer;
  1438. unsigned int offset = 0;
  1439. unsigned int size = 42;
  1440. bool fixedBuffer = true;
  1441.  
  1442. bool success = true;
  1443. success &= WriteToBuffer(Index, buffer, offset, size, fixedBuffer);
  1444. success &= WriteToBuffer(Count, buffer, offset, size, fixedBuffer);
  1445. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  1446. success &= WriteToBuffer((const BYTE *)Values, (int)Values_ElementSize * (int)Count, buffer, offset, size, fixedBuffer);
  1447.  
  1448. if (!success)
  1449. {
  1450. if (!fixedBuffer)
  1451. delete[] buffer;
  1452. return ERROR_WRITE_FAULT;
  1453. }
  1454.  
  1455. EventPipe::WriteEvent(*EventPipeEventGCBulkNode, (BYTE *)buffer, offset);
  1456.  
  1457. if (!fixedBuffer)
  1458. delete[] buffer;
  1459.  
  1460. return ERROR_SUCCESS;
  1461. }
  1462.  
  1463. bool EventPipeEventEnabledGCBulkEdge()
  1464. {
  1465. return EventPipeEventGCBulkEdge->IsEnabled();
  1466. }
  1467.  
  1468. extern "C" ULONG EventPipeWriteEventGCBulkEdge(
  1469. const unsigned int Index,
  1470. const unsigned int Count,
  1471. const unsigned short ClrInstanceID,
  1472. int Values_ElementSize,
  1473. const void* Values)
  1474. {
  1475. if (!EventPipeEventEnabledGCBulkEdge())
  1476. return ERROR_SUCCESS;
  1477.  
  1478. char stackBuffer[42];
  1479. char *buffer = stackBuffer;
  1480. unsigned int offset = 0;
  1481. unsigned int size = 42;
  1482. bool fixedBuffer = true;
  1483.  
  1484. bool success = true;
  1485. success &= WriteToBuffer(Index, buffer, offset, size, fixedBuffer);
  1486. success &= WriteToBuffer(Count, buffer, offset, size, fixedBuffer);
  1487. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  1488. success &= WriteToBuffer((const BYTE *)Values, (int)Values_ElementSize * (int)Count, buffer, offset, size, fixedBuffer);
  1489.  
  1490. if (!success)
  1491. {
  1492. if (!fixedBuffer)
  1493. delete[] buffer;
  1494. return ERROR_WRITE_FAULT;
  1495. }
  1496.  
  1497. EventPipe::WriteEvent(*EventPipeEventGCBulkEdge, (BYTE *)buffer, offset);
  1498.  
  1499. if (!fixedBuffer)
  1500. delete[] buffer;
  1501.  
  1502. return ERROR_SUCCESS;
  1503. }
  1504.  
  1505. bool EventPipeEventEnabledGCSampledObjectAllocationHigh()
  1506. {
  1507. return EventPipeEventGCSampledObjectAllocationHigh->IsEnabled();
  1508. }
  1509.  
  1510. extern "C" ULONG EventPipeWriteEventGCSampledObjectAllocationHigh(
  1511. const void* Address,
  1512. const void* TypeID,
  1513. const unsigned int ObjectCountForTypeSample,
  1514. const unsigned __int64 TotalSizeForTypeSample,
  1515. const unsigned short ClrInstanceID)
  1516. {
  1517. if (!EventPipeEventEnabledGCSampledObjectAllocationHigh())
  1518. return ERROR_SUCCESS;
  1519.  
  1520. char stackBuffer[32];
  1521. char *buffer = stackBuffer;
  1522. unsigned int offset = 0;
  1523. unsigned int size = 32;
  1524. bool fixedBuffer = true;
  1525.  
  1526. bool success = true;
  1527. success &= WriteToBuffer(Address, buffer, offset, size, fixedBuffer);
  1528. success &= WriteToBuffer(TypeID, buffer, offset, size, fixedBuffer);
  1529. success &= WriteToBuffer(ObjectCountForTypeSample, buffer, offset, size, fixedBuffer);
  1530. success &= WriteToBuffer(TotalSizeForTypeSample, buffer, offset, size, fixedBuffer);
  1531. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  1532.  
  1533. if (!success)
  1534. {
  1535. if (!fixedBuffer)
  1536. delete[] buffer;
  1537. return ERROR_WRITE_FAULT;
  1538. }
  1539.  
  1540. EventPipe::WriteEvent(*EventPipeEventGCSampledObjectAllocationHigh, (BYTE *)buffer, offset);
  1541.  
  1542. if (!fixedBuffer)
  1543. delete[] buffer;
  1544.  
  1545. return ERROR_SUCCESS;
  1546. }
  1547.  
  1548. bool EventPipeEventEnabledGCBulkSurvivingObjectRanges()
  1549. {
  1550. return EventPipeEventGCBulkSurvivingObjectRanges->IsEnabled();
  1551. }
  1552.  
  1553. extern "C" ULONG EventPipeWriteEventGCBulkSurvivingObjectRanges(
  1554. const unsigned int Index,
  1555. const unsigned int Count,
  1556. const unsigned short ClrInstanceID,
  1557. int Values_ElementSize,
  1558. const void* Values)
  1559. {
  1560. if (!EventPipeEventEnabledGCBulkSurvivingObjectRanges())
  1561. return ERROR_SUCCESS;
  1562.  
  1563. char stackBuffer[42];
  1564. char *buffer = stackBuffer;
  1565. unsigned int offset = 0;
  1566. unsigned int size = 42;
  1567. bool fixedBuffer = true;
  1568.  
  1569. bool success = true;
  1570. success &= WriteToBuffer(Index, buffer, offset, size, fixedBuffer);
  1571. success &= WriteToBuffer(Count, buffer, offset, size, fixedBuffer);
  1572. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  1573. success &= WriteToBuffer((const BYTE *)Values, (int)Values_ElementSize * (int)Count, buffer, offset, size, fixedBuffer);
  1574.  
  1575. if (!success)
  1576. {
  1577. if (!fixedBuffer)
  1578. delete[] buffer;
  1579. return ERROR_WRITE_FAULT;
  1580. }
  1581.  
  1582. EventPipe::WriteEvent(*EventPipeEventGCBulkSurvivingObjectRanges, (BYTE *)buffer, offset);
  1583.  
  1584. if (!fixedBuffer)
  1585. delete[] buffer;
  1586.  
  1587. return ERROR_SUCCESS;
  1588. }
  1589.  
  1590. bool EventPipeEventEnabledGCBulkMovedObjectRanges()
  1591. {
  1592. return EventPipeEventGCBulkMovedObjectRanges->IsEnabled();
  1593. }
  1594.  
  1595. extern "C" ULONG EventPipeWriteEventGCBulkMovedObjectRanges(
  1596. const unsigned int Index,
  1597. const unsigned int Count,
  1598. const unsigned short ClrInstanceID,
  1599. int Values_ElementSize,
  1600. const void* Values)
  1601. {
  1602. if (!EventPipeEventEnabledGCBulkMovedObjectRanges())
  1603. return ERROR_SUCCESS;
  1604.  
  1605. char stackBuffer[42];
  1606. char *buffer = stackBuffer;
  1607. unsigned int offset = 0;
  1608. unsigned int size = 42;
  1609. bool fixedBuffer = true;
  1610.  
  1611. bool success = true;
  1612. success &= WriteToBuffer(Index, buffer, offset, size, fixedBuffer);
  1613. success &= WriteToBuffer(Count, buffer, offset, size, fixedBuffer);
  1614. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  1615. success &= WriteToBuffer((const BYTE *)Values, (int)Values_ElementSize * (int)Count, buffer, offset, size, fixedBuffer);
  1616.  
  1617. if (!success)
  1618. {
  1619. if (!fixedBuffer)
  1620. delete[] buffer;
  1621. return ERROR_WRITE_FAULT;
  1622. }
  1623.  
  1624. EventPipe::WriteEvent(*EventPipeEventGCBulkMovedObjectRanges, (BYTE *)buffer, offset);
  1625.  
  1626. if (!fixedBuffer)
  1627. delete[] buffer;
  1628.  
  1629. return ERROR_SUCCESS;
  1630. }
  1631.  
  1632. bool EventPipeEventEnabledGCGenerationRange()
  1633. {
  1634. return EventPipeEventGCGenerationRange->IsEnabled();
  1635. }
  1636.  
  1637. extern "C" ULONG EventPipeWriteEventGCGenerationRange(
  1638. const unsigned char Generation,
  1639. const void* RangeStart,
  1640. const unsigned __int64 RangeUsedLength,
  1641. const unsigned __int64 RangeReservedLength,
  1642. const unsigned short ClrInstanceID)
  1643. {
  1644. if (!EventPipeEventEnabledGCGenerationRange())
  1645. return ERROR_SUCCESS;
  1646.  
  1647. char stackBuffer[32];
  1648. char *buffer = stackBuffer;
  1649. unsigned int offset = 0;
  1650. unsigned int size = 32;
  1651. bool fixedBuffer = true;
  1652.  
  1653. bool success = true;
  1654. success &= WriteToBuffer(Generation, buffer, offset, size, fixedBuffer);
  1655. success &= WriteToBuffer(RangeStart, buffer, offset, size, fixedBuffer);
  1656. success &= WriteToBuffer(RangeUsedLength, buffer, offset, size, fixedBuffer);
  1657. success &= WriteToBuffer(RangeReservedLength, buffer, offset, size, fixedBuffer);
  1658. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  1659.  
  1660. if (!success)
  1661. {
  1662. if (!fixedBuffer)
  1663. delete[] buffer;
  1664. return ERROR_WRITE_FAULT;
  1665. }
  1666.  
  1667. EventPipe::WriteEvent(*EventPipeEventGCGenerationRange, (BYTE *)buffer, offset);
  1668.  
  1669. if (!fixedBuffer)
  1670. delete[] buffer;
  1671.  
  1672. return ERROR_SUCCESS;
  1673. }
  1674.  
  1675. bool EventPipeEventEnabledGCMarkStackRoots()
  1676. {
  1677. return EventPipeEventGCMarkStackRoots->IsEnabled();
  1678. }
  1679.  
  1680. extern "C" ULONG EventPipeWriteEventGCMarkStackRoots(
  1681. const unsigned int HeapNum,
  1682. const unsigned short ClrInstanceID)
  1683. {
  1684. if (!EventPipeEventEnabledGCMarkStackRoots())
  1685. return ERROR_SUCCESS;
  1686.  
  1687. char stackBuffer[32];
  1688. char *buffer = stackBuffer;
  1689. unsigned int offset = 0;
  1690. unsigned int size = 32;
  1691. bool fixedBuffer = true;
  1692.  
  1693. bool success = true;
  1694. success &= WriteToBuffer(HeapNum, buffer, offset, size, fixedBuffer);
  1695. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  1696.  
  1697. if (!success)
  1698. {
  1699. if (!fixedBuffer)
  1700. delete[] buffer;
  1701. return ERROR_WRITE_FAULT;
  1702. }
  1703.  
  1704. EventPipe::WriteEvent(*EventPipeEventGCMarkStackRoots, (BYTE *)buffer, offset);
  1705.  
  1706. if (!fixedBuffer)
  1707. delete[] buffer;
  1708.  
  1709. return ERROR_SUCCESS;
  1710. }
  1711.  
  1712. bool EventPipeEventEnabledGCMarkFinalizeQueueRoots()
  1713. {
  1714. return EventPipeEventGCMarkFinalizeQueueRoots->IsEnabled();
  1715. }
  1716.  
  1717. extern "C" ULONG EventPipeWriteEventGCMarkFinalizeQueueRoots(
  1718. const unsigned int HeapNum,
  1719. const unsigned short ClrInstanceID)
  1720. {
  1721. if (!EventPipeEventEnabledGCMarkFinalizeQueueRoots())
  1722. return ERROR_SUCCESS;
  1723.  
  1724. char stackBuffer[32];
  1725. char *buffer = stackBuffer;
  1726. unsigned int offset = 0;
  1727. unsigned int size = 32;
  1728. bool fixedBuffer = true;
  1729.  
  1730. bool success = true;
  1731. success &= WriteToBuffer(HeapNum, buffer, offset, size, fixedBuffer);
  1732. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  1733.  
  1734. if (!success)
  1735. {
  1736. if (!fixedBuffer)
  1737. delete[] buffer;
  1738. return ERROR_WRITE_FAULT;
  1739. }
  1740.  
  1741. EventPipe::WriteEvent(*EventPipeEventGCMarkFinalizeQueueRoots, (BYTE *)buffer, offset);
  1742.  
  1743. if (!fixedBuffer)
  1744. delete[] buffer;
  1745.  
  1746. return ERROR_SUCCESS;
  1747. }
  1748.  
  1749. bool EventPipeEventEnabledGCMarkHandles()
  1750. {
  1751. return EventPipeEventGCMarkHandles->IsEnabled();
  1752. }
  1753.  
  1754. extern "C" ULONG EventPipeWriteEventGCMarkHandles(
  1755. const unsigned int HeapNum,
  1756. const unsigned short ClrInstanceID)
  1757. {
  1758. if (!EventPipeEventEnabledGCMarkHandles())
  1759. return ERROR_SUCCESS;
  1760.  
  1761. char stackBuffer[32];
  1762. char *buffer = stackBuffer;
  1763. unsigned int offset = 0;
  1764. unsigned int size = 32;
  1765. bool fixedBuffer = true;
  1766.  
  1767. bool success = true;
  1768. success &= WriteToBuffer(HeapNum, buffer, offset, size, fixedBuffer);
  1769. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  1770.  
  1771. if (!success)
  1772. {
  1773. if (!fixedBuffer)
  1774. delete[] buffer;
  1775. return ERROR_WRITE_FAULT;
  1776. }
  1777.  
  1778. EventPipe::WriteEvent(*EventPipeEventGCMarkHandles, (BYTE *)buffer, offset);
  1779.  
  1780. if (!fixedBuffer)
  1781. delete[] buffer;
  1782.  
  1783. return ERROR_SUCCESS;
  1784. }
  1785.  
  1786. bool EventPipeEventEnabledGCMarkOlderGenerationRoots()
  1787. {
  1788. return EventPipeEventGCMarkOlderGenerationRoots->IsEnabled();
  1789. }
  1790.  
  1791. extern "C" ULONG EventPipeWriteEventGCMarkOlderGenerationRoots(
  1792. const unsigned int HeapNum,
  1793. const unsigned short ClrInstanceID)
  1794. {
  1795. if (!EventPipeEventEnabledGCMarkOlderGenerationRoots())
  1796. return ERROR_SUCCESS;
  1797.  
  1798. char stackBuffer[32];
  1799. char *buffer = stackBuffer;
  1800. unsigned int offset = 0;
  1801. unsigned int size = 32;
  1802. bool fixedBuffer = true;
  1803.  
  1804. bool success = true;
  1805. success &= WriteToBuffer(HeapNum, buffer, offset, size, fixedBuffer);
  1806. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  1807.  
  1808. if (!success)
  1809. {
  1810. if (!fixedBuffer)
  1811. delete[] buffer;
  1812. return ERROR_WRITE_FAULT;
  1813. }
  1814.  
  1815. EventPipe::WriteEvent(*EventPipeEventGCMarkOlderGenerationRoots, (BYTE *)buffer, offset);
  1816.  
  1817. if (!fixedBuffer)
  1818. delete[] buffer;
  1819.  
  1820. return ERROR_SUCCESS;
  1821. }
  1822.  
  1823. bool EventPipeEventEnabledFinalizeObject()
  1824. {
  1825. return EventPipeEventFinalizeObject->IsEnabled();
  1826. }
  1827.  
  1828. extern "C" ULONG EventPipeWriteEventFinalizeObject(
  1829. const void* TypeID,
  1830. const void* ObjectID,
  1831. const unsigned short ClrInstanceID)
  1832. {
  1833. if (!EventPipeEventEnabledFinalizeObject())
  1834. return ERROR_SUCCESS;
  1835.  
  1836. char stackBuffer[32];
  1837. char *buffer = stackBuffer;
  1838. unsigned int offset = 0;
  1839. unsigned int size = 32;
  1840. bool fixedBuffer = true;
  1841.  
  1842. bool success = true;
  1843. success &= WriteToBuffer(TypeID, buffer, offset, size, fixedBuffer);
  1844. success &= WriteToBuffer(ObjectID, buffer, offset, size, fixedBuffer);
  1845. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  1846.  
  1847. if (!success)
  1848. {
  1849. if (!fixedBuffer)
  1850. delete[] buffer;
  1851. return ERROR_WRITE_FAULT;
  1852. }
  1853.  
  1854. EventPipe::WriteEvent(*EventPipeEventFinalizeObject, (BYTE *)buffer, offset);
  1855.  
  1856. if (!fixedBuffer)
  1857. delete[] buffer;
  1858.  
  1859. return ERROR_SUCCESS;
  1860. }
  1861.  
  1862. bool EventPipeEventEnabledSetGCHandle()
  1863. {
  1864. return EventPipeEventSetGCHandle->IsEnabled();
  1865. }
  1866.  
  1867. extern "C" ULONG EventPipeWriteEventSetGCHandle(
  1868. const void* HandleID,
  1869. const void* ObjectID,
  1870. const unsigned int Kind,
  1871. const unsigned int Generation,
  1872. const unsigned __int64 AppDomainID,
  1873. const unsigned short ClrInstanceID)
  1874. {
  1875. if (!EventPipeEventEnabledSetGCHandle())
  1876. return ERROR_SUCCESS;
  1877.  
  1878. char stackBuffer[34];
  1879. char *buffer = stackBuffer;
  1880. unsigned int offset = 0;
  1881. unsigned int size = 34;
  1882. bool fixedBuffer = true;
  1883.  
  1884. bool success = true;
  1885. success &= WriteToBuffer(HandleID, buffer, offset, size, fixedBuffer);
  1886. success &= WriteToBuffer(ObjectID, buffer, offset, size, fixedBuffer);
  1887. success &= WriteToBuffer(Kind, buffer, offset, size, fixedBuffer);
  1888. success &= WriteToBuffer(Generation, buffer, offset, size, fixedBuffer);
  1889. success &= WriteToBuffer(AppDomainID, buffer, offset, size, fixedBuffer);
  1890. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  1891.  
  1892. if (!success)
  1893. {
  1894. if (!fixedBuffer)
  1895. delete[] buffer;
  1896. return ERROR_WRITE_FAULT;
  1897. }
  1898.  
  1899. EventPipe::WriteEvent(*EventPipeEventSetGCHandle, (BYTE *)buffer, offset);
  1900.  
  1901. if (!fixedBuffer)
  1902. delete[] buffer;
  1903.  
  1904. return ERROR_SUCCESS;
  1905. }
  1906.  
  1907. bool EventPipeEventEnabledDestroyGCHandle()
  1908. {
  1909. return EventPipeEventDestroyGCHandle->IsEnabled();
  1910. }
  1911.  
  1912. extern "C" ULONG EventPipeWriteEventDestroyGCHandle(
  1913. const void* HandleID,
  1914. const unsigned short ClrInstanceID)
  1915. {
  1916. if (!EventPipeEventEnabledDestroyGCHandle())
  1917. return ERROR_SUCCESS;
  1918.  
  1919. char stackBuffer[32];
  1920. char *buffer = stackBuffer;
  1921. unsigned int offset = 0;
  1922. unsigned int size = 32;
  1923. bool fixedBuffer = true;
  1924.  
  1925. bool success = true;
  1926. success &= WriteToBuffer(HandleID, buffer, offset, size, fixedBuffer);
  1927. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  1928.  
  1929. if (!success)
  1930. {
  1931. if (!fixedBuffer)
  1932. delete[] buffer;
  1933. return ERROR_WRITE_FAULT;
  1934. }
  1935.  
  1936. EventPipe::WriteEvent(*EventPipeEventDestroyGCHandle, (BYTE *)buffer, offset);
  1937.  
  1938. if (!fixedBuffer)
  1939. delete[] buffer;
  1940.  
  1941. return ERROR_SUCCESS;
  1942. }
  1943.  
  1944. bool EventPipeEventEnabledGCSampledObjectAllocationLow()
  1945. {
  1946. return EventPipeEventGCSampledObjectAllocationLow->IsEnabled();
  1947. }
  1948.  
  1949. extern "C" ULONG EventPipeWriteEventGCSampledObjectAllocationLow(
  1950. const void* Address,
  1951. const void* TypeID,
  1952. const unsigned int ObjectCountForTypeSample,
  1953. const unsigned __int64 TotalSizeForTypeSample,
  1954. const unsigned short ClrInstanceID)
  1955. {
  1956. if (!EventPipeEventEnabledGCSampledObjectAllocationLow())
  1957. return ERROR_SUCCESS;
  1958.  
  1959. char stackBuffer[32];
  1960. char *buffer = stackBuffer;
  1961. unsigned int offset = 0;
  1962. unsigned int size = 32;
  1963. bool fixedBuffer = true;
  1964.  
  1965. bool success = true;
  1966. success &= WriteToBuffer(Address, buffer, offset, size, fixedBuffer);
  1967. success &= WriteToBuffer(TypeID, buffer, offset, size, fixedBuffer);
  1968. success &= WriteToBuffer(ObjectCountForTypeSample, buffer, offset, size, fixedBuffer);
  1969. success &= WriteToBuffer(TotalSizeForTypeSample, buffer, offset, size, fixedBuffer);
  1970. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  1971.  
  1972. if (!success)
  1973. {
  1974. if (!fixedBuffer)
  1975. delete[] buffer;
  1976. return ERROR_WRITE_FAULT;
  1977. }
  1978.  
  1979. EventPipe::WriteEvent(*EventPipeEventGCSampledObjectAllocationLow, (BYTE *)buffer, offset);
  1980.  
  1981. if (!fixedBuffer)
  1982. delete[] buffer;
  1983.  
  1984. return ERROR_SUCCESS;
  1985. }
  1986.  
  1987. bool EventPipeEventEnabledPinObjectAtGCTime()
  1988. {
  1989. return EventPipeEventPinObjectAtGCTime->IsEnabled();
  1990. }
  1991.  
  1992. extern "C" ULONG EventPipeWriteEventPinObjectAtGCTime(
  1993. const void* HandleID,
  1994. const void* ObjectID,
  1995. const unsigned __int64 ObjectSize,
  1996. PCWSTR TypeName,
  1997. const unsigned short ClrInstanceID)
  1998. {
  1999. if (!EventPipeEventEnabledPinObjectAtGCTime())
  2000. return ERROR_SUCCESS;
  2001.  
  2002. char stackBuffer[90];
  2003. char *buffer = stackBuffer;
  2004. unsigned int offset = 0;
  2005. unsigned int size = 90;
  2006. bool fixedBuffer = true;
  2007.  
  2008. bool success = true;
  2009. success &= WriteToBuffer(HandleID, buffer, offset, size, fixedBuffer);
  2010. success &= WriteToBuffer(ObjectID, buffer, offset, size, fixedBuffer);
  2011. success &= WriteToBuffer(ObjectSize, buffer, offset, size, fixedBuffer);
  2012. success &= WriteToBuffer(TypeName, buffer, offset, size, fixedBuffer);
  2013. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  2014.  
  2015. if (!success)
  2016. {
  2017. if (!fixedBuffer)
  2018. delete[] buffer;
  2019. return ERROR_WRITE_FAULT;
  2020. }
  2021.  
  2022. EventPipe::WriteEvent(*EventPipeEventPinObjectAtGCTime, (BYTE *)buffer, offset);
  2023.  
  2024. if (!fixedBuffer)
  2025. delete[] buffer;
  2026.  
  2027. return ERROR_SUCCESS;
  2028. }
  2029.  
  2030. bool EventPipeEventEnabledGCTriggered()
  2031. {
  2032. return EventPipeEventGCTriggered->IsEnabled();
  2033. }
  2034.  
  2035. extern "C" ULONG EventPipeWriteEventGCTriggered(
  2036. const unsigned int Reason,
  2037. const unsigned short ClrInstanceID)
  2038. {
  2039. if (!EventPipeEventEnabledGCTriggered())
  2040. return ERROR_SUCCESS;
  2041.  
  2042. char stackBuffer[32];
  2043. char *buffer = stackBuffer;
  2044. unsigned int offset = 0;
  2045. unsigned int size = 32;
  2046. bool fixedBuffer = true;
  2047.  
  2048. bool success = true;
  2049. success &= WriteToBuffer(Reason, buffer, offset, size, fixedBuffer);
  2050. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  2051.  
  2052. if (!success)
  2053. {
  2054. if (!fixedBuffer)
  2055. delete[] buffer;
  2056. return ERROR_WRITE_FAULT;
  2057. }
  2058.  
  2059. EventPipe::WriteEvent(*EventPipeEventGCTriggered, (BYTE *)buffer, offset);
  2060.  
  2061. if (!fixedBuffer)
  2062. delete[] buffer;
  2063.  
  2064. return ERROR_SUCCESS;
  2065. }
  2066.  
  2067. bool EventPipeEventEnabledGCBulkRootCCW()
  2068. {
  2069. return EventPipeEventGCBulkRootCCW->IsEnabled();
  2070. }
  2071.  
  2072. extern "C" ULONG EventPipeWriteEventGCBulkRootCCW(
  2073. const unsigned int Count,
  2074. const unsigned short ClrInstanceID,
  2075. int Values_ElementSize,
  2076. const void* Values)
  2077. {
  2078. if (!EventPipeEventEnabledGCBulkRootCCW())
  2079. return ERROR_SUCCESS;
  2080.  
  2081. char stackBuffer[38];
  2082. char *buffer = stackBuffer;
  2083. unsigned int offset = 0;
  2084. unsigned int size = 38;
  2085. bool fixedBuffer = true;
  2086.  
  2087. bool success = true;
  2088. success &= WriteToBuffer(Count, buffer, offset, size, fixedBuffer);
  2089. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  2090. success &= WriteToBuffer((const BYTE *)Values, (int)(Values_ElementSize), buffer, offset, size, fixedBuffer);
  2091.  
  2092. if (!success)
  2093. {
  2094. if (!fixedBuffer)
  2095. delete[] buffer;
  2096. return ERROR_WRITE_FAULT;
  2097. }
  2098.  
  2099. EventPipe::WriteEvent(*EventPipeEventGCBulkRootCCW, (BYTE *)buffer, offset);
  2100.  
  2101. if (!fixedBuffer)
  2102. delete[] buffer;
  2103.  
  2104. return ERROR_SUCCESS;
  2105. }
  2106.  
  2107. bool EventPipeEventEnabledGCBulkRCW()
  2108. {
  2109. return EventPipeEventGCBulkRCW->IsEnabled();
  2110. }
  2111.  
  2112. extern "C" ULONG EventPipeWriteEventGCBulkRCW(
  2113. const unsigned int Count,
  2114. const unsigned short ClrInstanceID,
  2115. int Values_ElementSize,
  2116. const void* Values)
  2117. {
  2118. if (!EventPipeEventEnabledGCBulkRCW())
  2119. return ERROR_SUCCESS;
  2120.  
  2121. char stackBuffer[38];
  2122. char *buffer = stackBuffer;
  2123. unsigned int offset = 0;
  2124. unsigned int size = 38;
  2125. bool fixedBuffer = true;
  2126.  
  2127. bool success = true;
  2128. success &= WriteToBuffer(Count, buffer, offset, size, fixedBuffer);
  2129. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  2130. success &= WriteToBuffer((const BYTE *)Values, (int)(Values_ElementSize), buffer, offset, size, fixedBuffer);
  2131.  
  2132. if (!success)
  2133. {
  2134. if (!fixedBuffer)
  2135. delete[] buffer;
  2136. return ERROR_WRITE_FAULT;
  2137. }
  2138.  
  2139. EventPipe::WriteEvent(*EventPipeEventGCBulkRCW, (BYTE *)buffer, offset);
  2140.  
  2141. if (!fixedBuffer)
  2142. delete[] buffer;
  2143.  
  2144. return ERROR_SUCCESS;
  2145. }
  2146.  
  2147. bool EventPipeEventEnabledGCBulkRootStaticVar()
  2148. {
  2149. return EventPipeEventGCBulkRootStaticVar->IsEnabled();
  2150. }
  2151.  
  2152. extern "C" ULONG EventPipeWriteEventGCBulkRootStaticVar(
  2153. const unsigned int Count,
  2154. const unsigned __int64 AppDomainID,
  2155. const unsigned short ClrInstanceID,
  2156. int Values_ElementSize,
  2157. const void* Values)
  2158. {
  2159. if (!EventPipeEventEnabledGCBulkRootStaticVar())
  2160. return ERROR_SUCCESS;
  2161.  
  2162. char stackBuffer[46];
  2163. char *buffer = stackBuffer;
  2164. unsigned int offset = 0;
  2165. unsigned int size = 46;
  2166. bool fixedBuffer = true;
  2167.  
  2168. bool success = true;
  2169. success &= WriteToBuffer(Count, buffer, offset, size, fixedBuffer);
  2170. success &= WriteToBuffer(AppDomainID, buffer, offset, size, fixedBuffer);
  2171. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  2172. success &= WriteToBuffer((const BYTE *)Values, (int)(Values_ElementSize), buffer, offset, size, fixedBuffer);
  2173.  
  2174. if (!success)
  2175. {
  2176. if (!fixedBuffer)
  2177. delete[] buffer;
  2178. return ERROR_WRITE_FAULT;
  2179. }
  2180.  
  2181. EventPipe::WriteEvent(*EventPipeEventGCBulkRootStaticVar, (BYTE *)buffer, offset);
  2182.  
  2183. if (!fixedBuffer)
  2184. delete[] buffer;
  2185.  
  2186. return ERROR_SUCCESS;
  2187. }
  2188.  
  2189. bool EventPipeEventEnabledWorkerThreadCreate()
  2190. {
  2191. return EventPipeEventWorkerThreadCreate->IsEnabled();
  2192. }
  2193.  
  2194. extern "C" ULONG EventPipeWriteEventWorkerThreadCreate(
  2195. const unsigned int WorkerThreadCount,
  2196. const unsigned int RetiredWorkerThreads)
  2197. {
  2198. if (!EventPipeEventEnabledWorkerThreadCreate())
  2199. return ERROR_SUCCESS;
  2200.  
  2201. char stackBuffer[32];
  2202. char *buffer = stackBuffer;
  2203. unsigned int offset = 0;
  2204. unsigned int size = 32;
  2205. bool fixedBuffer = true;
  2206.  
  2207. bool success = true;
  2208. success &= WriteToBuffer(WorkerThreadCount, buffer, offset, size, fixedBuffer);
  2209. success &= WriteToBuffer(RetiredWorkerThreads, buffer, offset, size, fixedBuffer);
  2210.  
  2211. if (!success)
  2212. {
  2213. if (!fixedBuffer)
  2214. delete[] buffer;
  2215. return ERROR_WRITE_FAULT;
  2216. }
  2217.  
  2218. EventPipe::WriteEvent(*EventPipeEventWorkerThreadCreate, (BYTE *)buffer, offset);
  2219.  
  2220. if (!fixedBuffer)
  2221. delete[] buffer;
  2222.  
  2223. return ERROR_SUCCESS;
  2224. }
  2225.  
  2226. bool EventPipeEventEnabledWorkerThreadTerminate()
  2227. {
  2228. return EventPipeEventWorkerThreadTerminate->IsEnabled();
  2229. }
  2230.  
  2231. extern "C" ULONG EventPipeWriteEventWorkerThreadTerminate(
  2232. const unsigned int WorkerThreadCount,
  2233. const unsigned int RetiredWorkerThreads)
  2234. {
  2235. if (!EventPipeEventEnabledWorkerThreadTerminate())
  2236. return ERROR_SUCCESS;
  2237.  
  2238. char stackBuffer[32];
  2239. char *buffer = stackBuffer;
  2240. unsigned int offset = 0;
  2241. unsigned int size = 32;
  2242. bool fixedBuffer = true;
  2243.  
  2244. bool success = true;
  2245. success &= WriteToBuffer(WorkerThreadCount, buffer, offset, size, fixedBuffer);
  2246. success &= WriteToBuffer(RetiredWorkerThreads, buffer, offset, size, fixedBuffer);
  2247.  
  2248. if (!success)
  2249. {
  2250. if (!fixedBuffer)
  2251. delete[] buffer;
  2252. return ERROR_WRITE_FAULT;
  2253. }
  2254.  
  2255. EventPipe::WriteEvent(*EventPipeEventWorkerThreadTerminate, (BYTE *)buffer, offset);
  2256.  
  2257. if (!fixedBuffer)
  2258. delete[] buffer;
  2259.  
  2260. return ERROR_SUCCESS;
  2261. }
  2262.  
  2263. bool EventPipeEventEnabledWorkerThreadRetire()
  2264. {
  2265. return EventPipeEventWorkerThreadRetire->IsEnabled();
  2266. }
  2267.  
  2268. extern "C" ULONG EventPipeWriteEventWorkerThreadRetire(
  2269. const unsigned int WorkerThreadCount,
  2270. const unsigned int RetiredWorkerThreads)
  2271. {
  2272. if (!EventPipeEventEnabledWorkerThreadRetire())
  2273. return ERROR_SUCCESS;
  2274.  
  2275. char stackBuffer[32];
  2276. char *buffer = stackBuffer;
  2277. unsigned int offset = 0;
  2278. unsigned int size = 32;
  2279. bool fixedBuffer = true;
  2280.  
  2281. bool success = true;
  2282. success &= WriteToBuffer(WorkerThreadCount, buffer, offset, size, fixedBuffer);
  2283. success &= WriteToBuffer(RetiredWorkerThreads, buffer, offset, size, fixedBuffer);
  2284.  
  2285. if (!success)
  2286. {
  2287. if (!fixedBuffer)
  2288. delete[] buffer;
  2289. return ERROR_WRITE_FAULT;
  2290. }
  2291.  
  2292. EventPipe::WriteEvent(*EventPipeEventWorkerThreadRetire, (BYTE *)buffer, offset);
  2293.  
  2294. if (!fixedBuffer)
  2295. delete[] buffer;
  2296.  
  2297. return ERROR_SUCCESS;
  2298. }
  2299.  
  2300. bool EventPipeEventEnabledWorkerThreadUnretire()
  2301. {
  2302. return EventPipeEventWorkerThreadUnretire->IsEnabled();
  2303. }
  2304.  
  2305. extern "C" ULONG EventPipeWriteEventWorkerThreadUnretire(
  2306. const unsigned int WorkerThreadCount,
  2307. const unsigned int RetiredWorkerThreads)
  2308. {
  2309. if (!EventPipeEventEnabledWorkerThreadUnretire())
  2310. return ERROR_SUCCESS;
  2311.  
  2312. char stackBuffer[32];
  2313. char *buffer = stackBuffer;
  2314. unsigned int offset = 0;
  2315. unsigned int size = 32;
  2316. bool fixedBuffer = true;
  2317.  
  2318. bool success = true;
  2319. success &= WriteToBuffer(WorkerThreadCount, buffer, offset, size, fixedBuffer);
  2320. success &= WriteToBuffer(RetiredWorkerThreads, buffer, offset, size, fixedBuffer);
  2321.  
  2322. if (!success)
  2323. {
  2324. if (!fixedBuffer)
  2325. delete[] buffer;
  2326. return ERROR_WRITE_FAULT;
  2327. }
  2328.  
  2329. EventPipe::WriteEvent(*EventPipeEventWorkerThreadUnretire, (BYTE *)buffer, offset);
  2330.  
  2331. if (!fixedBuffer)
  2332. delete[] buffer;
  2333.  
  2334. return ERROR_SUCCESS;
  2335. }
  2336.  
  2337. bool EventPipeEventEnabledIOThreadCreate()
  2338. {
  2339. return EventPipeEventIOThreadCreate->IsEnabled();
  2340. }
  2341.  
  2342. extern "C" ULONG EventPipeWriteEventIOThreadCreate(
  2343. const unsigned int IOThreadCount,
  2344. const unsigned int RetiredIOThreads)
  2345. {
  2346. if (!EventPipeEventEnabledIOThreadCreate())
  2347. return ERROR_SUCCESS;
  2348.  
  2349. char stackBuffer[32];
  2350. char *buffer = stackBuffer;
  2351. unsigned int offset = 0;
  2352. unsigned int size = 32;
  2353. bool fixedBuffer = true;
  2354.  
  2355. bool success = true;
  2356. success &= WriteToBuffer(IOThreadCount, buffer, offset, size, fixedBuffer);
  2357. success &= WriteToBuffer(RetiredIOThreads, buffer, offset, size, fixedBuffer);
  2358.  
  2359. if (!success)
  2360. {
  2361. if (!fixedBuffer)
  2362. delete[] buffer;
  2363. return ERROR_WRITE_FAULT;
  2364. }
  2365.  
  2366. EventPipe::WriteEvent(*EventPipeEventIOThreadCreate, (BYTE *)buffer, offset);
  2367.  
  2368. if (!fixedBuffer)
  2369. delete[] buffer;
  2370.  
  2371. return ERROR_SUCCESS;
  2372. }
  2373.  
  2374. bool EventPipeEventEnabledIOThreadCreate_V1()
  2375. {
  2376. return EventPipeEventIOThreadCreate_V1->IsEnabled();
  2377. }
  2378.  
  2379. extern "C" ULONG EventPipeWriteEventIOThreadCreate_V1(
  2380. const unsigned int IOThreadCount,
  2381. const unsigned int RetiredIOThreads,
  2382. const unsigned short ClrInstanceID)
  2383. {
  2384. if (!EventPipeEventEnabledIOThreadCreate_V1())
  2385. return ERROR_SUCCESS;
  2386.  
  2387. char stackBuffer[32];
  2388. char *buffer = stackBuffer;
  2389. unsigned int offset = 0;
  2390. unsigned int size = 32;
  2391. bool fixedBuffer = true;
  2392.  
  2393. bool success = true;
  2394. success &= WriteToBuffer(IOThreadCount, buffer, offset, size, fixedBuffer);
  2395. success &= WriteToBuffer(RetiredIOThreads, buffer, offset, size, fixedBuffer);
  2396. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  2397.  
  2398. if (!success)
  2399. {
  2400. if (!fixedBuffer)
  2401. delete[] buffer;
  2402. return ERROR_WRITE_FAULT;
  2403. }
  2404.  
  2405. EventPipe::WriteEvent(*EventPipeEventIOThreadCreate_V1, (BYTE *)buffer, offset);
  2406.  
  2407. if (!fixedBuffer)
  2408. delete[] buffer;
  2409.  
  2410. return ERROR_SUCCESS;
  2411. }
  2412.  
  2413. bool EventPipeEventEnabledIOThreadTerminate()
  2414. {
  2415. return EventPipeEventIOThreadTerminate->IsEnabled();
  2416. }
  2417.  
  2418. extern "C" ULONG EventPipeWriteEventIOThreadTerminate(
  2419. const unsigned int IOThreadCount,
  2420. const unsigned int RetiredIOThreads)
  2421. {
  2422. if (!EventPipeEventEnabledIOThreadTerminate())
  2423. return ERROR_SUCCESS;
  2424.  
  2425. char stackBuffer[32];
  2426. char *buffer = stackBuffer;
  2427. unsigned int offset = 0;
  2428. unsigned int size = 32;
  2429. bool fixedBuffer = true;
  2430.  
  2431. bool success = true;
  2432. success &= WriteToBuffer(IOThreadCount, buffer, offset, size, fixedBuffer);
  2433. success &= WriteToBuffer(RetiredIOThreads, buffer, offset, size, fixedBuffer);
  2434.  
  2435. if (!success)
  2436. {
  2437. if (!fixedBuffer)
  2438. delete[] buffer;
  2439. return ERROR_WRITE_FAULT;
  2440. }
  2441.  
  2442. EventPipe::WriteEvent(*EventPipeEventIOThreadTerminate, (BYTE *)buffer, offset);
  2443.  
  2444. if (!fixedBuffer)
  2445. delete[] buffer;
  2446.  
  2447. return ERROR_SUCCESS;
  2448. }
  2449.  
  2450. bool EventPipeEventEnabledIOThreadTerminate_V1()
  2451. {
  2452. return EventPipeEventIOThreadTerminate_V1->IsEnabled();
  2453. }
  2454.  
  2455. extern "C" ULONG EventPipeWriteEventIOThreadTerminate_V1(
  2456. const unsigned int IOThreadCount,
  2457. const unsigned int RetiredIOThreads,
  2458. const unsigned short ClrInstanceID)
  2459. {
  2460. if (!EventPipeEventEnabledIOThreadTerminate_V1())
  2461. return ERROR_SUCCESS;
  2462.  
  2463. char stackBuffer[32];
  2464. char *buffer = stackBuffer;
  2465. unsigned int offset = 0;
  2466. unsigned int size = 32;
  2467. bool fixedBuffer = true;
  2468.  
  2469. bool success = true;
  2470. success &= WriteToBuffer(IOThreadCount, buffer, offset, size, fixedBuffer);
  2471. success &= WriteToBuffer(RetiredIOThreads, buffer, offset, size, fixedBuffer);
  2472. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  2473.  
  2474. if (!success)
  2475. {
  2476. if (!fixedBuffer)
  2477. delete[] buffer;
  2478. return ERROR_WRITE_FAULT;
  2479. }
  2480.  
  2481. EventPipe::WriteEvent(*EventPipeEventIOThreadTerminate_V1, (BYTE *)buffer, offset);
  2482.  
  2483. if (!fixedBuffer)
  2484. delete[] buffer;
  2485.  
  2486. return ERROR_SUCCESS;
  2487. }
  2488.  
  2489. bool EventPipeEventEnabledIOThreadRetire()
  2490. {
  2491. return EventPipeEventIOThreadRetire->IsEnabled();
  2492. }
  2493.  
  2494. extern "C" ULONG EventPipeWriteEventIOThreadRetire(
  2495. const unsigned int IOThreadCount,
  2496. const unsigned int RetiredIOThreads)
  2497. {
  2498. if (!EventPipeEventEnabledIOThreadRetire())
  2499. return ERROR_SUCCESS;
  2500.  
  2501. char stackBuffer[32];
  2502. char *buffer = stackBuffer;
  2503. unsigned int offset = 0;
  2504. unsigned int size = 32;
  2505. bool fixedBuffer = true;
  2506.  
  2507. bool success = true;
  2508. success &= WriteToBuffer(IOThreadCount, buffer, offset, size, fixedBuffer);
  2509. success &= WriteToBuffer(RetiredIOThreads, buffer, offset, size, fixedBuffer);
  2510.  
  2511. if (!success)
  2512. {
  2513. if (!fixedBuffer)
  2514. delete[] buffer;
  2515. return ERROR_WRITE_FAULT;
  2516. }
  2517.  
  2518. EventPipe::WriteEvent(*EventPipeEventIOThreadRetire, (BYTE *)buffer, offset);
  2519.  
  2520. if (!fixedBuffer)
  2521. delete[] buffer;
  2522.  
  2523. return ERROR_SUCCESS;
  2524. }
  2525.  
  2526. bool EventPipeEventEnabledIOThreadRetire_V1()
  2527. {
  2528. return EventPipeEventIOThreadRetire_V1->IsEnabled();
  2529. }
  2530.  
  2531. extern "C" ULONG EventPipeWriteEventIOThreadRetire_V1(
  2532. const unsigned int IOThreadCount,
  2533. const unsigned int RetiredIOThreads,
  2534. const unsigned short ClrInstanceID)
  2535. {
  2536. if (!EventPipeEventEnabledIOThreadRetire_V1())
  2537. return ERROR_SUCCESS;
  2538.  
  2539. char stackBuffer[32];
  2540. char *buffer = stackBuffer;
  2541. unsigned int offset = 0;
  2542. unsigned int size = 32;
  2543. bool fixedBuffer = true;
  2544.  
  2545. bool success = true;
  2546. success &= WriteToBuffer(IOThreadCount, buffer, offset, size, fixedBuffer);
  2547. success &= WriteToBuffer(RetiredIOThreads, buffer, offset, size, fixedBuffer);
  2548. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  2549.  
  2550. if (!success)
  2551. {
  2552. if (!fixedBuffer)
  2553. delete[] buffer;
  2554. return ERROR_WRITE_FAULT;
  2555. }
  2556.  
  2557. EventPipe::WriteEvent(*EventPipeEventIOThreadRetire_V1, (BYTE *)buffer, offset);
  2558.  
  2559. if (!fixedBuffer)
  2560. delete[] buffer;
  2561.  
  2562. return ERROR_SUCCESS;
  2563. }
  2564.  
  2565. bool EventPipeEventEnabledIOThreadUnretire()
  2566. {
  2567. return EventPipeEventIOThreadUnretire->IsEnabled();
  2568. }
  2569.  
  2570. extern "C" ULONG EventPipeWriteEventIOThreadUnretire(
  2571. const unsigned int IOThreadCount,
  2572. const unsigned int RetiredIOThreads)
  2573. {
  2574. if (!EventPipeEventEnabledIOThreadUnretire())
  2575. return ERROR_SUCCESS;
  2576.  
  2577. char stackBuffer[32];
  2578. char *buffer = stackBuffer;
  2579. unsigned int offset = 0;
  2580. unsigned int size = 32;
  2581. bool fixedBuffer = true;
  2582.  
  2583. bool success = true;
  2584. success &= WriteToBuffer(IOThreadCount, buffer, offset, size, fixedBuffer);
  2585. success &= WriteToBuffer(RetiredIOThreads, buffer, offset, size, fixedBuffer);
  2586.  
  2587. if (!success)
  2588. {
  2589. if (!fixedBuffer)
  2590. delete[] buffer;
  2591. return ERROR_WRITE_FAULT;
  2592. }
  2593.  
  2594. EventPipe::WriteEvent(*EventPipeEventIOThreadUnretire, (BYTE *)buffer, offset);
  2595.  
  2596. if (!fixedBuffer)
  2597. delete[] buffer;
  2598.  
  2599. return ERROR_SUCCESS;
  2600. }
  2601.  
  2602. bool EventPipeEventEnabledIOThreadUnretire_V1()
  2603. {
  2604. return EventPipeEventIOThreadUnretire_V1->IsEnabled();
  2605. }
  2606.  
  2607. extern "C" ULONG EventPipeWriteEventIOThreadUnretire_V1(
  2608. const unsigned int IOThreadCount,
  2609. const unsigned int RetiredIOThreads,
  2610. const unsigned short ClrInstanceID)
  2611. {
  2612. if (!EventPipeEventEnabledIOThreadUnretire_V1())
  2613. return ERROR_SUCCESS;
  2614.  
  2615. char stackBuffer[32];
  2616. char *buffer = stackBuffer;
  2617. unsigned int offset = 0;
  2618. unsigned int size = 32;
  2619. bool fixedBuffer = true;
  2620.  
  2621. bool success = true;
  2622. success &= WriteToBuffer(IOThreadCount, buffer, offset, size, fixedBuffer);
  2623. success &= WriteToBuffer(RetiredIOThreads, buffer, offset, size, fixedBuffer);
  2624. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  2625.  
  2626. if (!success)
  2627. {
  2628. if (!fixedBuffer)
  2629. delete[] buffer;
  2630. return ERROR_WRITE_FAULT;
  2631. }
  2632.  
  2633. EventPipe::WriteEvent(*EventPipeEventIOThreadUnretire_V1, (BYTE *)buffer, offset);
  2634.  
  2635. if (!fixedBuffer)
  2636. delete[] buffer;
  2637.  
  2638. return ERROR_SUCCESS;
  2639. }
  2640.  
  2641. bool EventPipeEventEnabledThreadpoolSuspensionSuspendThread()
  2642. {
  2643. return EventPipeEventThreadpoolSuspensionSuspendThread->IsEnabled();
  2644. }
  2645.  
  2646. extern "C" ULONG EventPipeWriteEventThreadpoolSuspensionSuspendThread(
  2647. const unsigned int ClrThreadID,
  2648. const unsigned int CpuUtilization)
  2649. {
  2650. if (!EventPipeEventEnabledThreadpoolSuspensionSuspendThread())
  2651. return ERROR_SUCCESS;
  2652.  
  2653. char stackBuffer[32];
  2654. char *buffer = stackBuffer;
  2655. unsigned int offset = 0;
  2656. unsigned int size = 32;
  2657. bool fixedBuffer = true;
  2658.  
  2659. bool success = true;
  2660. success &= WriteToBuffer(ClrThreadID, buffer, offset, size, fixedBuffer);
  2661. success &= WriteToBuffer(CpuUtilization, buffer, offset, size, fixedBuffer);
  2662.  
  2663. if (!success)
  2664. {
  2665. if (!fixedBuffer)
  2666. delete[] buffer;
  2667. return ERROR_WRITE_FAULT;
  2668. }
  2669.  
  2670. EventPipe::WriteEvent(*EventPipeEventThreadpoolSuspensionSuspendThread, (BYTE *)buffer, offset);
  2671.  
  2672. if (!fixedBuffer)
  2673. delete[] buffer;
  2674.  
  2675. return ERROR_SUCCESS;
  2676. }
  2677.  
  2678. bool EventPipeEventEnabledThreadpoolSuspensionResumeThread()
  2679. {
  2680. return EventPipeEventThreadpoolSuspensionResumeThread->IsEnabled();
  2681. }
  2682.  
  2683. extern "C" ULONG EventPipeWriteEventThreadpoolSuspensionResumeThread(
  2684. const unsigned int ClrThreadID,
  2685. const unsigned int CpuUtilization)
  2686. {
  2687. if (!EventPipeEventEnabledThreadpoolSuspensionResumeThread())
  2688. return ERROR_SUCCESS;
  2689.  
  2690. char stackBuffer[32];
  2691. char *buffer = stackBuffer;
  2692. unsigned int offset = 0;
  2693. unsigned int size = 32;
  2694. bool fixedBuffer = true;
  2695.  
  2696. bool success = true;
  2697. success &= WriteToBuffer(ClrThreadID, buffer, offset, size, fixedBuffer);
  2698. success &= WriteToBuffer(CpuUtilization, buffer, offset, size, fixedBuffer);
  2699.  
  2700. if (!success)
  2701. {
  2702. if (!fixedBuffer)
  2703. delete[] buffer;
  2704. return ERROR_WRITE_FAULT;
  2705. }
  2706.  
  2707. EventPipe::WriteEvent(*EventPipeEventThreadpoolSuspensionResumeThread, (BYTE *)buffer, offset);
  2708.  
  2709. if (!fixedBuffer)
  2710. delete[] buffer;
  2711.  
  2712. return ERROR_SUCCESS;
  2713. }
  2714.  
  2715. bool EventPipeEventEnabledThreadPoolWorkerThreadStart()
  2716. {
  2717. return EventPipeEventThreadPoolWorkerThreadStart->IsEnabled();
  2718. }
  2719.  
  2720. extern "C" ULONG EventPipeWriteEventThreadPoolWorkerThreadStart(
  2721. const unsigned int ActiveWorkerThreadCount,
  2722. const unsigned int RetiredWorkerThreadCount,
  2723. const unsigned short ClrInstanceID)
  2724. {
  2725. if (!EventPipeEventEnabledThreadPoolWorkerThreadStart())
  2726. return ERROR_SUCCESS;
  2727.  
  2728. char stackBuffer[32];
  2729. char *buffer = stackBuffer;
  2730. unsigned int offset = 0;
  2731. unsigned int size = 32;
  2732. bool fixedBuffer = true;
  2733.  
  2734. bool success = true;
  2735. success &= WriteToBuffer(ActiveWorkerThreadCount, buffer, offset, size, fixedBuffer);
  2736. success &= WriteToBuffer(RetiredWorkerThreadCount, buffer, offset, size, fixedBuffer);
  2737. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  2738.  
  2739. if (!success)
  2740. {
  2741. if (!fixedBuffer)
  2742. delete[] buffer;
  2743. return ERROR_WRITE_FAULT;
  2744. }
  2745.  
  2746. EventPipe::WriteEvent(*EventPipeEventThreadPoolWorkerThreadStart, (BYTE *)buffer, offset);
  2747.  
  2748. if (!fixedBuffer)
  2749. delete[] buffer;
  2750.  
  2751. return ERROR_SUCCESS;
  2752. }
  2753.  
  2754. bool EventPipeEventEnabledThreadPoolWorkerThreadStop()
  2755. {
  2756. return EventPipeEventThreadPoolWorkerThreadStop->IsEnabled();
  2757. }
  2758.  
  2759. extern "C" ULONG EventPipeWriteEventThreadPoolWorkerThreadStop(
  2760. const unsigned int ActiveWorkerThreadCount,
  2761. const unsigned int RetiredWorkerThreadCount,
  2762. const unsigned short ClrInstanceID)
  2763. {
  2764. if (!EventPipeEventEnabledThreadPoolWorkerThreadStop())
  2765. return ERROR_SUCCESS;
  2766.  
  2767. char stackBuffer[32];
  2768. char *buffer = stackBuffer;
  2769. unsigned int offset = 0;
  2770. unsigned int size = 32;
  2771. bool fixedBuffer = true;
  2772.  
  2773. bool success = true;
  2774. success &= WriteToBuffer(ActiveWorkerThreadCount, buffer, offset, size, fixedBuffer);
  2775. success &= WriteToBuffer(RetiredWorkerThreadCount, buffer, offset, size, fixedBuffer);
  2776. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  2777.  
  2778. if (!success)
  2779. {
  2780. if (!fixedBuffer)
  2781. delete[] buffer;
  2782. return ERROR_WRITE_FAULT;
  2783. }
  2784.  
  2785. EventPipe::WriteEvent(*EventPipeEventThreadPoolWorkerThreadStop, (BYTE *)buffer, offset);
  2786.  
  2787. if (!fixedBuffer)
  2788. delete[] buffer;
  2789.  
  2790. return ERROR_SUCCESS;
  2791. }
  2792.  
  2793. bool EventPipeEventEnabledThreadPoolWorkerThreadRetirementStart()
  2794. {
  2795. return EventPipeEventThreadPoolWorkerThreadRetirementStart->IsEnabled();
  2796. }
  2797.  
  2798. extern "C" ULONG EventPipeWriteEventThreadPoolWorkerThreadRetirementStart(
  2799. const unsigned int ActiveWorkerThreadCount,
  2800. const unsigned int RetiredWorkerThreadCount,
  2801. const unsigned short ClrInstanceID)
  2802. {
  2803. if (!EventPipeEventEnabledThreadPoolWorkerThreadRetirementStart())
  2804. return ERROR_SUCCESS;
  2805.  
  2806. char stackBuffer[32];
  2807. char *buffer = stackBuffer;
  2808. unsigned int offset = 0;
  2809. unsigned int size = 32;
  2810. bool fixedBuffer = true;
  2811.  
  2812. bool success = true;
  2813. success &= WriteToBuffer(ActiveWorkerThreadCount, buffer, offset, size, fixedBuffer);
  2814. success &= WriteToBuffer(RetiredWorkerThreadCount, buffer, offset, size, fixedBuffer);
  2815. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  2816.  
  2817. if (!success)
  2818. {
  2819. if (!fixedBuffer)
  2820. delete[] buffer;
  2821. return ERROR_WRITE_FAULT;
  2822. }
  2823.  
  2824. EventPipe::WriteEvent(*EventPipeEventThreadPoolWorkerThreadRetirementStart, (BYTE *)buffer, offset);
  2825.  
  2826. if (!fixedBuffer)
  2827. delete[] buffer;
  2828.  
  2829. return ERROR_SUCCESS;
  2830. }
  2831.  
  2832. bool EventPipeEventEnabledThreadPoolWorkerThreadRetirementStop()
  2833. {
  2834. return EventPipeEventThreadPoolWorkerThreadRetirementStop->IsEnabled();
  2835. }
  2836.  
  2837. extern "C" ULONG EventPipeWriteEventThreadPoolWorkerThreadRetirementStop(
  2838. const unsigned int ActiveWorkerThreadCount,
  2839. const unsigned int RetiredWorkerThreadCount,
  2840. const unsigned short ClrInstanceID)
  2841. {
  2842. if (!EventPipeEventEnabledThreadPoolWorkerThreadRetirementStop())
  2843. return ERROR_SUCCESS;
  2844.  
  2845. char stackBuffer[32];
  2846. char *buffer = stackBuffer;
  2847. unsigned int offset = 0;
  2848. unsigned int size = 32;
  2849. bool fixedBuffer = true;
  2850.  
  2851. bool success = true;
  2852. success &= WriteToBuffer(ActiveWorkerThreadCount, buffer, offset, size, fixedBuffer);
  2853. success &= WriteToBuffer(RetiredWorkerThreadCount, buffer, offset, size, fixedBuffer);
  2854. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  2855.  
  2856. if (!success)
  2857. {
  2858. if (!fixedBuffer)
  2859. delete[] buffer;
  2860. return ERROR_WRITE_FAULT;
  2861. }
  2862.  
  2863. EventPipe::WriteEvent(*EventPipeEventThreadPoolWorkerThreadRetirementStop, (BYTE *)buffer, offset);
  2864.  
  2865. if (!fixedBuffer)
  2866. delete[] buffer;
  2867.  
  2868. return ERROR_SUCCESS;
  2869. }
  2870.  
  2871. bool EventPipeEventEnabledThreadPoolWorkerThreadAdjustmentSample()
  2872. {
  2873. return EventPipeEventThreadPoolWorkerThreadAdjustmentSample->IsEnabled();
  2874. }
  2875.  
  2876. extern "C" ULONG EventPipeWriteEventThreadPoolWorkerThreadAdjustmentSample(
  2877. const double Throughput,
  2878. const unsigned short ClrInstanceID)
  2879. {
  2880. if (!EventPipeEventEnabledThreadPoolWorkerThreadAdjustmentSample())
  2881. return ERROR_SUCCESS;
  2882.  
  2883. char stackBuffer[32];
  2884. char *buffer = stackBuffer;
  2885. unsigned int offset = 0;
  2886. unsigned int size = 32;
  2887. bool fixedBuffer = true;
  2888.  
  2889. bool success = true;
  2890. success &= WriteToBuffer(Throughput, buffer, offset, size, fixedBuffer);
  2891. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  2892.  
  2893. if (!success)
  2894. {
  2895. if (!fixedBuffer)
  2896. delete[] buffer;
  2897. return ERROR_WRITE_FAULT;
  2898. }
  2899.  
  2900. EventPipe::WriteEvent(*EventPipeEventThreadPoolWorkerThreadAdjustmentSample, (BYTE *)buffer, offset);
  2901.  
  2902. if (!fixedBuffer)
  2903. delete[] buffer;
  2904.  
  2905. return ERROR_SUCCESS;
  2906. }
  2907.  
  2908. bool EventPipeEventEnabledThreadPoolWorkerThreadAdjustmentAdjustment()
  2909. {
  2910. return EventPipeEventThreadPoolWorkerThreadAdjustmentAdjustment->IsEnabled();
  2911. }
  2912.  
  2913. extern "C" ULONG EventPipeWriteEventThreadPoolWorkerThreadAdjustmentAdjustment(
  2914. const double AverageThroughput,
  2915. const unsigned int NewWorkerThreadCount,
  2916. const unsigned int Reason,
  2917. const unsigned short ClrInstanceID)
  2918. {
  2919. if (!EventPipeEventEnabledThreadPoolWorkerThreadAdjustmentAdjustment())
  2920. return ERROR_SUCCESS;
  2921.  
  2922. char stackBuffer[32];
  2923. char *buffer = stackBuffer;
  2924. unsigned int offset = 0;
  2925. unsigned int size = 32;
  2926. bool fixedBuffer = true;
  2927.  
  2928. bool success = true;
  2929. success &= WriteToBuffer(AverageThroughput, buffer, offset, size, fixedBuffer);
  2930. success &= WriteToBuffer(NewWorkerThreadCount, buffer, offset, size, fixedBuffer);
  2931. success &= WriteToBuffer(Reason, buffer, offset, size, fixedBuffer);
  2932. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  2933.  
  2934. if (!success)
  2935. {
  2936. if (!fixedBuffer)
  2937. delete[] buffer;
  2938. return ERROR_WRITE_FAULT;
  2939. }
  2940.  
  2941. EventPipe::WriteEvent(*EventPipeEventThreadPoolWorkerThreadAdjustmentAdjustment, (BYTE *)buffer, offset);
  2942.  
  2943. if (!fixedBuffer)
  2944. delete[] buffer;
  2945.  
  2946. return ERROR_SUCCESS;
  2947. }
  2948.  
  2949. bool EventPipeEventEnabledThreadPoolWorkerThreadAdjustmentStats()
  2950. {
  2951. return EventPipeEventThreadPoolWorkerThreadAdjustmentStats->IsEnabled();
  2952. }
  2953.  
  2954. extern "C" ULONG EventPipeWriteEventThreadPoolWorkerThreadAdjustmentStats(
  2955. const double Duration,
  2956. const double Throughput,
  2957. const double ThreadWave,
  2958. const double ThroughputWave,
  2959. const double ThroughputErrorEstimate,
  2960. const double AverageThroughputErrorEstimate,
  2961. const double ThroughputRatio,
  2962. const double Confidence,
  2963. const double NewControlSetting,
  2964. const unsigned short NewThreadWaveMagnitude,
  2965. const unsigned short ClrInstanceID)
  2966. {
  2967. if (!EventPipeEventEnabledThreadPoolWorkerThreadAdjustmentStats())
  2968. return ERROR_SUCCESS;
  2969.  
  2970. char stackBuffer[76];
  2971. char *buffer = stackBuffer;
  2972. unsigned int offset = 0;
  2973. unsigned int size = 76;
  2974. bool fixedBuffer = true;
  2975.  
  2976. bool success = true;
  2977. success &= WriteToBuffer(Duration, buffer, offset, size, fixedBuffer);
  2978. success &= WriteToBuffer(Throughput, buffer, offset, size, fixedBuffer);
  2979. success &= WriteToBuffer(ThreadWave, buffer, offset, size, fixedBuffer);
  2980. success &= WriteToBuffer(ThroughputWave, buffer, offset, size, fixedBuffer);
  2981. success &= WriteToBuffer(ThroughputErrorEstimate, buffer, offset, size, fixedBuffer);
  2982. success &= WriteToBuffer(AverageThroughputErrorEstimate, buffer, offset, size, fixedBuffer);
  2983. success &= WriteToBuffer(ThroughputRatio, buffer, offset, size, fixedBuffer);
  2984. success &= WriteToBuffer(Confidence, buffer, offset, size, fixedBuffer);
  2985. success &= WriteToBuffer(NewControlSetting, buffer, offset, size, fixedBuffer);
  2986. success &= WriteToBuffer(NewThreadWaveMagnitude, buffer, offset, size, fixedBuffer);
  2987. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  2988.  
  2989. if (!success)
  2990. {
  2991. if (!fixedBuffer)
  2992. delete[] buffer;
  2993. return ERROR_WRITE_FAULT;
  2994. }
  2995.  
  2996. EventPipe::WriteEvent(*EventPipeEventThreadPoolWorkerThreadAdjustmentStats, (BYTE *)buffer, offset);
  2997.  
  2998. if (!fixedBuffer)
  2999. delete[] buffer;
  3000.  
  3001. return ERROR_SUCCESS;
  3002. }
  3003.  
  3004. bool EventPipeEventEnabledThreadPoolWorkerThreadWait()
  3005. {
  3006. return EventPipeEventThreadPoolWorkerThreadWait->IsEnabled();
  3007. }
  3008.  
  3009. extern "C" ULONG EventPipeWriteEventThreadPoolWorkerThreadWait(
  3010. const unsigned int ActiveWorkerThreadCount,
  3011. const unsigned int RetiredWorkerThreadCount,
  3012. const unsigned short ClrInstanceID)
  3013. {
  3014. if (!EventPipeEventEnabledThreadPoolWorkerThreadWait())
  3015. return ERROR_SUCCESS;
  3016.  
  3017. char stackBuffer[32];
  3018. char *buffer = stackBuffer;
  3019. unsigned int offset = 0;
  3020. unsigned int size = 32;
  3021. bool fixedBuffer = true;
  3022.  
  3023. bool success = true;
  3024. success &= WriteToBuffer(ActiveWorkerThreadCount, buffer, offset, size, fixedBuffer);
  3025. success &= WriteToBuffer(RetiredWorkerThreadCount, buffer, offset, size, fixedBuffer);
  3026. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  3027.  
  3028. if (!success)
  3029. {
  3030. if (!fixedBuffer)
  3031. delete[] buffer;
  3032. return ERROR_WRITE_FAULT;
  3033. }
  3034.  
  3035. EventPipe::WriteEvent(*EventPipeEventThreadPoolWorkerThreadWait, (BYTE *)buffer, offset);
  3036.  
  3037. if (!fixedBuffer)
  3038. delete[] buffer;
  3039.  
  3040. return ERROR_SUCCESS;
  3041. }
  3042.  
  3043. bool EventPipeEventEnabledThreadPoolWorkingThreadCount()
  3044. {
  3045. return EventPipeEventThreadPoolWorkingThreadCount->IsEnabled();
  3046. }
  3047.  
  3048. extern "C" ULONG EventPipeWriteEventThreadPoolWorkingThreadCount(
  3049. const unsigned int Count,
  3050. const unsigned short ClrInstanceID)
  3051. {
  3052. if (!EventPipeEventEnabledThreadPoolWorkingThreadCount())
  3053. return ERROR_SUCCESS;
  3054.  
  3055. char stackBuffer[32];
  3056. char *buffer = stackBuffer;
  3057. unsigned int offset = 0;
  3058. unsigned int size = 32;
  3059. bool fixedBuffer = true;
  3060.  
  3061. bool success = true;
  3062. success &= WriteToBuffer(Count, buffer, offset, size, fixedBuffer);
  3063. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  3064.  
  3065. if (!success)
  3066. {
  3067. if (!fixedBuffer)
  3068. delete[] buffer;
  3069. return ERROR_WRITE_FAULT;
  3070. }
  3071.  
  3072. EventPipe::WriteEvent(*EventPipeEventThreadPoolWorkingThreadCount, (BYTE *)buffer, offset);
  3073.  
  3074. if (!fixedBuffer)
  3075. delete[] buffer;
  3076.  
  3077. return ERROR_SUCCESS;
  3078. }
  3079.  
  3080. bool EventPipeEventEnabledThreadPoolEnqueue()
  3081. {
  3082. return EventPipeEventThreadPoolEnqueue->IsEnabled();
  3083. }
  3084.  
  3085. extern "C" ULONG EventPipeWriteEventThreadPoolEnqueue(
  3086. const void* WorkID,
  3087. const unsigned short ClrInstanceID)
  3088. {
  3089. if (!EventPipeEventEnabledThreadPoolEnqueue())
  3090. return ERROR_SUCCESS;
  3091.  
  3092. char stackBuffer[32];
  3093. char *buffer = stackBuffer;
  3094. unsigned int offset = 0;
  3095. unsigned int size = 32;
  3096. bool fixedBuffer = true;
  3097.  
  3098. bool success = true;
  3099. success &= WriteToBuffer(WorkID, buffer, offset, size, fixedBuffer);
  3100. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  3101.  
  3102. if (!success)
  3103. {
  3104. if (!fixedBuffer)
  3105. delete[] buffer;
  3106. return ERROR_WRITE_FAULT;
  3107. }
  3108.  
  3109. EventPipe::WriteEvent(*EventPipeEventThreadPoolEnqueue, (BYTE *)buffer, offset);
  3110.  
  3111. if (!fixedBuffer)
  3112. delete[] buffer;
  3113.  
  3114. return ERROR_SUCCESS;
  3115. }
  3116.  
  3117. bool EventPipeEventEnabledThreadPoolDequeue()
  3118. {
  3119. return EventPipeEventThreadPoolDequeue->IsEnabled();
  3120. }
  3121.  
  3122. extern "C" ULONG EventPipeWriteEventThreadPoolDequeue(
  3123. const void* WorkID,
  3124. const unsigned short ClrInstanceID)
  3125. {
  3126. if (!EventPipeEventEnabledThreadPoolDequeue())
  3127. return ERROR_SUCCESS;
  3128.  
  3129. char stackBuffer[32];
  3130. char *buffer = stackBuffer;
  3131. unsigned int offset = 0;
  3132. unsigned int size = 32;
  3133. bool fixedBuffer = true;
  3134.  
  3135. bool success = true;
  3136. success &= WriteToBuffer(WorkID, buffer, offset, size, fixedBuffer);
  3137. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  3138.  
  3139. if (!success)
  3140. {
  3141. if (!fixedBuffer)
  3142. delete[] buffer;
  3143. return ERROR_WRITE_FAULT;
  3144. }
  3145.  
  3146. EventPipe::WriteEvent(*EventPipeEventThreadPoolDequeue, (BYTE *)buffer, offset);
  3147.  
  3148. if (!fixedBuffer)
  3149. delete[] buffer;
  3150.  
  3151. return ERROR_SUCCESS;
  3152. }
  3153.  
  3154. bool EventPipeEventEnabledThreadPoolIOEnqueue()
  3155. {
  3156. return EventPipeEventThreadPoolIOEnqueue->IsEnabled();
  3157. }
  3158.  
  3159. extern "C" ULONG EventPipeWriteEventThreadPoolIOEnqueue(
  3160. const void* NativeOverlapped,
  3161. const void* Overlapped,
  3162. const BOOL MultiDequeues,
  3163. const unsigned short ClrInstanceID)
  3164. {
  3165. if (!EventPipeEventEnabledThreadPoolIOEnqueue())
  3166. return ERROR_SUCCESS;
  3167.  
  3168. char stackBuffer[32];
  3169. char *buffer = stackBuffer;
  3170. unsigned int offset = 0;
  3171. unsigned int size = 32;
  3172. bool fixedBuffer = true;
  3173.  
  3174. bool success = true;
  3175. success &= WriteToBuffer(NativeOverlapped, buffer, offset, size, fixedBuffer);
  3176. success &= WriteToBuffer(Overlapped, buffer, offset, size, fixedBuffer);
  3177. success &= WriteToBuffer(MultiDequeues, buffer, offset, size, fixedBuffer);
  3178. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  3179.  
  3180. if (!success)
  3181. {
  3182. if (!fixedBuffer)
  3183. delete[] buffer;
  3184. return ERROR_WRITE_FAULT;
  3185. }
  3186.  
  3187. EventPipe::WriteEvent(*EventPipeEventThreadPoolIOEnqueue, (BYTE *)buffer, offset);
  3188.  
  3189. if (!fixedBuffer)
  3190. delete[] buffer;
  3191.  
  3192. return ERROR_SUCCESS;
  3193. }
  3194.  
  3195. bool EventPipeEventEnabledThreadPoolIODequeue()
  3196. {
  3197. return EventPipeEventThreadPoolIODequeue->IsEnabled();
  3198. }
  3199.  
  3200. extern "C" ULONG EventPipeWriteEventThreadPoolIODequeue(
  3201. const void* NativeOverlapped,
  3202. const void* Overlapped,
  3203. const unsigned short ClrInstanceID)
  3204. {
  3205. if (!EventPipeEventEnabledThreadPoolIODequeue())
  3206. return ERROR_SUCCESS;
  3207.  
  3208. char stackBuffer[32];
  3209. char *buffer = stackBuffer;
  3210. unsigned int offset = 0;
  3211. unsigned int size = 32;
  3212. bool fixedBuffer = true;
  3213.  
  3214. bool success = true;
  3215. success &= WriteToBuffer(NativeOverlapped, buffer, offset, size, fixedBuffer);
  3216. success &= WriteToBuffer(Overlapped, buffer, offset, size, fixedBuffer);
  3217. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  3218.  
  3219. if (!success)
  3220. {
  3221. if (!fixedBuffer)
  3222. delete[] buffer;
  3223. return ERROR_WRITE_FAULT;
  3224. }
  3225.  
  3226. EventPipe::WriteEvent(*EventPipeEventThreadPoolIODequeue, (BYTE *)buffer, offset);
  3227.  
  3228. if (!fixedBuffer)
  3229. delete[] buffer;
  3230.  
  3231. return ERROR_SUCCESS;
  3232. }
  3233.  
  3234. bool EventPipeEventEnabledThreadPoolIOPack()
  3235. {
  3236. return EventPipeEventThreadPoolIOPack->IsEnabled();
  3237. }
  3238.  
  3239. extern "C" ULONG EventPipeWriteEventThreadPoolIOPack(
  3240. const void* NativeOverlapped,
  3241. const void* Overlapped,
  3242. const unsigned short ClrInstanceID)
  3243. {
  3244. if (!EventPipeEventEnabledThreadPoolIOPack())
  3245. return ERROR_SUCCESS;
  3246.  
  3247. char stackBuffer[32];
  3248. char *buffer = stackBuffer;
  3249. unsigned int offset = 0;
  3250. unsigned int size = 32;
  3251. bool fixedBuffer = true;
  3252.  
  3253. bool success = true;
  3254. success &= WriteToBuffer(NativeOverlapped, buffer, offset, size, fixedBuffer);
  3255. success &= WriteToBuffer(Overlapped, buffer, offset, size, fixedBuffer);
  3256. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  3257.  
  3258. if (!success)
  3259. {
  3260. if (!fixedBuffer)
  3261. delete[] buffer;
  3262. return ERROR_WRITE_FAULT;
  3263. }
  3264.  
  3265. EventPipe::WriteEvent(*EventPipeEventThreadPoolIOPack, (BYTE *)buffer, offset);
  3266.  
  3267. if (!fixedBuffer)
  3268. delete[] buffer;
  3269.  
  3270. return ERROR_SUCCESS;
  3271. }
  3272.  
  3273. bool EventPipeEventEnabledThreadCreating()
  3274. {
  3275. return EventPipeEventThreadCreating->IsEnabled();
  3276. }
  3277.  
  3278. extern "C" ULONG EventPipeWriteEventThreadCreating(
  3279. const void* ID,
  3280. const unsigned short ClrInstanceID)
  3281. {
  3282. if (!EventPipeEventEnabledThreadCreating())
  3283. return ERROR_SUCCESS;
  3284.  
  3285. char stackBuffer[32];
  3286. char *buffer = stackBuffer;
  3287. unsigned int offset = 0;
  3288. unsigned int size = 32;
  3289. bool fixedBuffer = true;
  3290.  
  3291. bool success = true;
  3292. success &= WriteToBuffer(ID, buffer, offset, size, fixedBuffer);
  3293. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  3294.  
  3295. if (!success)
  3296. {
  3297. if (!fixedBuffer)
  3298. delete[] buffer;
  3299. return ERROR_WRITE_FAULT;
  3300. }
  3301.  
  3302. EventPipe::WriteEvent(*EventPipeEventThreadCreating, (BYTE *)buffer, offset);
  3303.  
  3304. if (!fixedBuffer)
  3305. delete[] buffer;
  3306.  
  3307. return ERROR_SUCCESS;
  3308. }
  3309.  
  3310. bool EventPipeEventEnabledThreadRunning()
  3311. {
  3312. return EventPipeEventThreadRunning->IsEnabled();
  3313. }
  3314.  
  3315. extern "C" ULONG EventPipeWriteEventThreadRunning(
  3316. const void* ID,
  3317. const unsigned short ClrInstanceID)
  3318. {
  3319. if (!EventPipeEventEnabledThreadRunning())
  3320. return ERROR_SUCCESS;
  3321.  
  3322. char stackBuffer[32];
  3323. char *buffer = stackBuffer;
  3324. unsigned int offset = 0;
  3325. unsigned int size = 32;
  3326. bool fixedBuffer = true;
  3327.  
  3328. bool success = true;
  3329. success &= WriteToBuffer(ID, buffer, offset, size, fixedBuffer);
  3330. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  3331.  
  3332. if (!success)
  3333. {
  3334. if (!fixedBuffer)
  3335. delete[] buffer;
  3336. return ERROR_WRITE_FAULT;
  3337. }
  3338.  
  3339. EventPipe::WriteEvent(*EventPipeEventThreadRunning, (BYTE *)buffer, offset);
  3340.  
  3341. if (!fixedBuffer)
  3342. delete[] buffer;
  3343.  
  3344. return ERROR_SUCCESS;
  3345. }
  3346.  
  3347. bool EventPipeEventEnabledExceptionThrown()
  3348. {
  3349. return EventPipeEventExceptionThrown->IsEnabled();
  3350. }
  3351.  
  3352. extern "C" ULONG EventPipeWriteEventExceptionThrown(
  3353. )
  3354. {
  3355. if (!EventPipeEventEnabledExceptionThrown())
  3356. return ERROR_SUCCESS;
  3357. EventPipe::WriteEvent(*EventPipeEventExceptionThrown, (BYTE*) nullptr, 0);
  3358.  
  3359. return ERROR_SUCCESS;
  3360. }
  3361.  
  3362. bool EventPipeEventEnabledExceptionThrown_V1()
  3363. {
  3364. return EventPipeEventExceptionThrown_V1->IsEnabled();
  3365. }
  3366.  
  3367. extern "C" ULONG EventPipeWriteEventExceptionThrown_V1(
  3368. PCWSTR ExceptionType,
  3369. PCWSTR ExceptionMessage,
  3370. const void* ExceptionEIP,
  3371. const unsigned int ExceptionHRESULT,
  3372. const unsigned short ExceptionFlags,
  3373. const unsigned short ClrInstanceID)
  3374. {
  3375. if (!EventPipeEventEnabledExceptionThrown_V1())
  3376. return ERROR_SUCCESS;
  3377.  
  3378. char stackBuffer[144];
  3379. char *buffer = stackBuffer;
  3380. unsigned int offset = 0;
  3381. unsigned int size = 144;
  3382. bool fixedBuffer = true;
  3383.  
  3384. bool success = true;
  3385. success &= WriteToBuffer(ExceptionType, buffer, offset, size, fixedBuffer);
  3386. success &= WriteToBuffer(ExceptionMessage, buffer, offset, size, fixedBuffer);
  3387. success &= WriteToBuffer(ExceptionEIP, buffer, offset, size, fixedBuffer);
  3388. success &= WriteToBuffer(ExceptionHRESULT, buffer, offset, size, fixedBuffer);
  3389. success &= WriteToBuffer(ExceptionFlags, buffer, offset, size, fixedBuffer);
  3390. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  3391.  
  3392. if (!success)
  3393. {
  3394. if (!fixedBuffer)
  3395. delete[] buffer;
  3396. return ERROR_WRITE_FAULT;
  3397. }
  3398.  
  3399. EventPipe::WriteEvent(*EventPipeEventExceptionThrown_V1, (BYTE *)buffer, offset);
  3400.  
  3401. if (!fixedBuffer)
  3402. delete[] buffer;
  3403.  
  3404. return ERROR_SUCCESS;
  3405. }
  3406.  
  3407. bool EventPipeEventEnabledExceptionCatchStart()
  3408. {
  3409. return EventPipeEventExceptionCatchStart->IsEnabled();
  3410. }
  3411.  
  3412. extern "C" ULONG EventPipeWriteEventExceptionCatchStart(
  3413. const unsigned __int64 EntryEIP,
  3414. const unsigned __int64 MethodID,
  3415. PCWSTR MethodName,
  3416. const unsigned short ClrInstanceID)
  3417. {
  3418. if (!EventPipeEventEnabledExceptionCatchStart())
  3419. return ERROR_SUCCESS;
  3420.  
  3421. char stackBuffer[82];
  3422. char *buffer = stackBuffer;
  3423. unsigned int offset = 0;
  3424. unsigned int size = 82;
  3425. bool fixedBuffer = true;
  3426.  
  3427. bool success = true;
  3428. success &= WriteToBuffer(EntryEIP, buffer, offset, size, fixedBuffer);
  3429. success &= WriteToBuffer(MethodID, buffer, offset, size, fixedBuffer);
  3430. success &= WriteToBuffer(MethodName, buffer, offset, size, fixedBuffer);
  3431. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  3432.  
  3433. if (!success)
  3434. {
  3435. if (!fixedBuffer)
  3436. delete[] buffer;
  3437. return ERROR_WRITE_FAULT;
  3438. }
  3439.  
  3440. EventPipe::WriteEvent(*EventPipeEventExceptionCatchStart, (BYTE *)buffer, offset);
  3441.  
  3442. if (!fixedBuffer)
  3443. delete[] buffer;
  3444.  
  3445. return ERROR_SUCCESS;
  3446. }
  3447.  
  3448. bool EventPipeEventEnabledExceptionCatchStop()
  3449. {
  3450. return EventPipeEventExceptionCatchStop->IsEnabled();
  3451. }
  3452.  
  3453. extern "C" ULONG EventPipeWriteEventExceptionCatchStop(
  3454. )
  3455. {
  3456. if (!EventPipeEventEnabledExceptionCatchStop())
  3457. return ERROR_SUCCESS;
  3458. EventPipe::WriteEvent(*EventPipeEventExceptionCatchStop, (BYTE*) nullptr, 0);
  3459.  
  3460. return ERROR_SUCCESS;
  3461. }
  3462.  
  3463. bool EventPipeEventEnabledExceptionFinallyStart()
  3464. {
  3465. return EventPipeEventExceptionFinallyStart->IsEnabled();
  3466. }
  3467.  
  3468. extern "C" ULONG EventPipeWriteEventExceptionFinallyStart(
  3469. const unsigned __int64 EntryEIP,
  3470. const unsigned __int64 MethodID,
  3471. PCWSTR MethodName,
  3472. const unsigned short ClrInstanceID)
  3473. {
  3474. if (!EventPipeEventEnabledExceptionFinallyStart())
  3475. return ERROR_SUCCESS;
  3476.  
  3477. char stackBuffer[82];
  3478. char *buffer = stackBuffer;
  3479. unsigned int offset = 0;
  3480. unsigned int size = 82;
  3481. bool fixedBuffer = true;
  3482.  
  3483. bool success = true;
  3484. success &= WriteToBuffer(EntryEIP, buffer, offset, size, fixedBuffer);
  3485. success &= WriteToBuffer(MethodID, buffer, offset, size, fixedBuffer);
  3486. success &= WriteToBuffer(MethodName, buffer, offset, size, fixedBuffer);
  3487. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  3488.  
  3489. if (!success)
  3490. {
  3491. if (!fixedBuffer)
  3492. delete[] buffer;
  3493. return ERROR_WRITE_FAULT;
  3494. }
  3495.  
  3496. EventPipe::WriteEvent(*EventPipeEventExceptionFinallyStart, (BYTE *)buffer, offset);
  3497.  
  3498. if (!fixedBuffer)
  3499. delete[] buffer;
  3500.  
  3501. return ERROR_SUCCESS;
  3502. }
  3503.  
  3504. bool EventPipeEventEnabledExceptionFinallyStop()
  3505. {
  3506. return EventPipeEventExceptionFinallyStop->IsEnabled();
  3507. }
  3508.  
  3509. extern "C" ULONG EventPipeWriteEventExceptionFinallyStop(
  3510. )
  3511. {
  3512. if (!EventPipeEventEnabledExceptionFinallyStop())
  3513. return ERROR_SUCCESS;
  3514. EventPipe::WriteEvent(*EventPipeEventExceptionFinallyStop, (BYTE*) nullptr, 0);
  3515.  
  3516. return ERROR_SUCCESS;
  3517. }
  3518.  
  3519. bool EventPipeEventEnabledExceptionFilterStart()
  3520. {
  3521. return EventPipeEventExceptionFilterStart->IsEnabled();
  3522. }
  3523.  
  3524. extern "C" ULONG EventPipeWriteEventExceptionFilterStart(
  3525. const unsigned __int64 EntryEIP,
  3526. const unsigned __int64 MethodID,
  3527. PCWSTR MethodName,
  3528. const unsigned short ClrInstanceID)
  3529. {
  3530. if (!EventPipeEventEnabledExceptionFilterStart())
  3531. return ERROR_SUCCESS;
  3532.  
  3533. char stackBuffer[82];
  3534. char *buffer = stackBuffer;
  3535. unsigned int offset = 0;
  3536. unsigned int size = 82;
  3537. bool fixedBuffer = true;
  3538.  
  3539. bool success = true;
  3540. success &= WriteToBuffer(EntryEIP, buffer, offset, size, fixedBuffer);
  3541. success &= WriteToBuffer(MethodID, buffer, offset, size, fixedBuffer);
  3542. success &= WriteToBuffer(MethodName, buffer, offset, size, fixedBuffer);
  3543. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  3544.  
  3545. if (!success)
  3546. {
  3547. if (!fixedBuffer)
  3548. delete[] buffer;
  3549. return ERROR_WRITE_FAULT;
  3550. }
  3551.  
  3552. EventPipe::WriteEvent(*EventPipeEventExceptionFilterStart, (BYTE *)buffer, offset);
  3553.  
  3554. if (!fixedBuffer)
  3555. delete[] buffer;
  3556.  
  3557. return ERROR_SUCCESS;
  3558. }
  3559.  
  3560. bool EventPipeEventEnabledExceptionFilterStop()
  3561. {
  3562. return EventPipeEventExceptionFilterStop->IsEnabled();
  3563. }
  3564.  
  3565. extern "C" ULONG EventPipeWriteEventExceptionFilterStop(
  3566. )
  3567. {
  3568. if (!EventPipeEventEnabledExceptionFilterStop())
  3569. return ERROR_SUCCESS;
  3570. EventPipe::WriteEvent(*EventPipeEventExceptionFilterStop, (BYTE*) nullptr, 0);
  3571.  
  3572. return ERROR_SUCCESS;
  3573. }
  3574.  
  3575. bool EventPipeEventEnabledExceptionThrownStop()
  3576. {
  3577. return EventPipeEventExceptionThrownStop->IsEnabled();
  3578. }
  3579.  
  3580. extern "C" ULONG EventPipeWriteEventExceptionThrownStop(
  3581. )
  3582. {
  3583. if (!EventPipeEventEnabledExceptionThrownStop())
  3584. return ERROR_SUCCESS;
  3585. EventPipe::WriteEvent(*EventPipeEventExceptionThrownStop, (BYTE*) nullptr, 0);
  3586.  
  3587. return ERROR_SUCCESS;
  3588. }
  3589.  
  3590. bool EventPipeEventEnabledContention()
  3591. {
  3592. return EventPipeEventContention->IsEnabled();
  3593. }
  3594.  
  3595. extern "C" ULONG EventPipeWriteEventContention(
  3596. )
  3597. {
  3598. if (!EventPipeEventEnabledContention())
  3599. return ERROR_SUCCESS;
  3600. EventPipe::WriteEvent(*EventPipeEventContention, (BYTE*) nullptr, 0);
  3601.  
  3602. return ERROR_SUCCESS;
  3603. }
  3604.  
  3605. bool EventPipeEventEnabledContentionStart_V1()
  3606. {
  3607. return EventPipeEventContentionStart_V1->IsEnabled();
  3608. }
  3609.  
  3610. extern "C" ULONG EventPipeWriteEventContentionStart_V1(
  3611. const unsigned char ContentionFlags,
  3612. const unsigned short ClrInstanceID)
  3613. {
  3614. if (!EventPipeEventEnabledContentionStart_V1())
  3615. return ERROR_SUCCESS;
  3616.  
  3617. char stackBuffer[32];
  3618. char *buffer = stackBuffer;
  3619. unsigned int offset = 0;
  3620. unsigned int size = 32;
  3621. bool fixedBuffer = true;
  3622.  
  3623. bool success = true;
  3624. success &= WriteToBuffer(ContentionFlags, buffer, offset, size, fixedBuffer);
  3625. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  3626.  
  3627. if (!success)
  3628. {
  3629. if (!fixedBuffer)
  3630. delete[] buffer;
  3631. return ERROR_WRITE_FAULT;
  3632. }
  3633.  
  3634. EventPipe::WriteEvent(*EventPipeEventContentionStart_V1, (BYTE *)buffer, offset);
  3635.  
  3636. if (!fixedBuffer)
  3637. delete[] buffer;
  3638.  
  3639. return ERROR_SUCCESS;
  3640. }
  3641.  
  3642. bool EventPipeEventEnabledContentionStop()
  3643. {
  3644. return EventPipeEventContentionStop->IsEnabled();
  3645. }
  3646.  
  3647. extern "C" ULONG EventPipeWriteEventContentionStop(
  3648. const unsigned char ContentionFlags,
  3649. const unsigned short ClrInstanceID)
  3650. {
  3651. if (!EventPipeEventEnabledContentionStop())
  3652. return ERROR_SUCCESS;
  3653.  
  3654. char stackBuffer[32];
  3655. char *buffer = stackBuffer;
  3656. unsigned int offset = 0;
  3657. unsigned int size = 32;
  3658. bool fixedBuffer = true;
  3659.  
  3660. bool success = true;
  3661. success &= WriteToBuffer(ContentionFlags, buffer, offset, size, fixedBuffer);
  3662. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  3663.  
  3664. if (!success)
  3665. {
  3666. if (!fixedBuffer)
  3667. delete[] buffer;
  3668. return ERROR_WRITE_FAULT;
  3669. }
  3670.  
  3671. EventPipe::WriteEvent(*EventPipeEventContentionStop, (BYTE *)buffer, offset);
  3672.  
  3673. if (!fixedBuffer)
  3674. delete[] buffer;
  3675.  
  3676. return ERROR_SUCCESS;
  3677. }
  3678.  
  3679. bool EventPipeEventEnabledCLRStackWalk()
  3680. {
  3681. return EventPipeEventCLRStackWalk->IsEnabled();
  3682. }
  3683.  
  3684. extern "C" ULONG EventPipeWriteEventCLRStackWalk(
  3685. const unsigned short ClrInstanceID,
  3686. const unsigned char Reserved1,
  3687. const unsigned char Reserved2,
  3688. const unsigned int FrameCount,
  3689. const void** Stack)
  3690. {
  3691. if (!EventPipeEventEnabledCLRStackWalk())
  3692. return ERROR_SUCCESS;
  3693.  
  3694. char stackBuffer[32];
  3695. char *buffer = stackBuffer;
  3696. unsigned int offset = 0;
  3697. unsigned int size = 32;
  3698. bool fixedBuffer = true;
  3699.  
  3700. bool success = true;
  3701. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  3702. success &= WriteToBuffer(Reserved1, buffer, offset, size, fixedBuffer);
  3703. success &= WriteToBuffer(Reserved2, buffer, offset, size, fixedBuffer);
  3704. success &= WriteToBuffer(FrameCount, buffer, offset, size, fixedBuffer);
  3705. success &= WriteToBuffer(Stack, buffer, offset, size, fixedBuffer);
  3706.  
  3707. if (!success)
  3708. {
  3709. if (!fixedBuffer)
  3710. delete[] buffer;
  3711. return ERROR_WRITE_FAULT;
  3712. }
  3713.  
  3714. EventPipe::WriteEvent(*EventPipeEventCLRStackWalk, (BYTE *)buffer, offset);
  3715.  
  3716. if (!fixedBuffer)
  3717. delete[] buffer;
  3718.  
  3719. return ERROR_SUCCESS;
  3720. }
  3721.  
  3722. bool EventPipeEventEnabledAppDomainMemAllocated()
  3723. {
  3724. return EventPipeEventAppDomainMemAllocated->IsEnabled();
  3725. }
  3726.  
  3727. extern "C" ULONG EventPipeWriteEventAppDomainMemAllocated(
  3728. const unsigned __int64 AppDomainID,
  3729. const unsigned __int64 Allocated,
  3730. const unsigned short ClrInstanceID)
  3731. {
  3732. if (!EventPipeEventEnabledAppDomainMemAllocated())
  3733. return ERROR_SUCCESS;
  3734.  
  3735. char stackBuffer[32];
  3736. char *buffer = stackBuffer;
  3737. unsigned int offset = 0;
  3738. unsigned int size = 32;
  3739. bool fixedBuffer = true;
  3740.  
  3741. bool success = true;
  3742. success &= WriteToBuffer(AppDomainID, buffer, offset, size, fixedBuffer);
  3743. success &= WriteToBuffer(Allocated, buffer, offset, size, fixedBuffer);
  3744. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  3745.  
  3746. if (!success)
  3747. {
  3748. if (!fixedBuffer)
  3749. delete[] buffer;
  3750. return ERROR_WRITE_FAULT;
  3751. }
  3752.  
  3753. EventPipe::WriteEvent(*EventPipeEventAppDomainMemAllocated, (BYTE *)buffer, offset);
  3754.  
  3755. if (!fixedBuffer)
  3756. delete[] buffer;
  3757.  
  3758. return ERROR_SUCCESS;
  3759. }
  3760.  
  3761. bool EventPipeEventEnabledAppDomainMemSurvived()
  3762. {
  3763. return EventPipeEventAppDomainMemSurvived->IsEnabled();
  3764. }
  3765.  
  3766. extern "C" ULONG EventPipeWriteEventAppDomainMemSurvived(
  3767. const unsigned __int64 AppDomainID,
  3768. const unsigned __int64 Survived,
  3769. const unsigned __int64 ProcessSurvived,
  3770. const unsigned short ClrInstanceID)
  3771. {
  3772. if (!EventPipeEventEnabledAppDomainMemSurvived())
  3773. return ERROR_SUCCESS;
  3774.  
  3775. char stackBuffer[32];
  3776. char *buffer = stackBuffer;
  3777. unsigned int offset = 0;
  3778. unsigned int size = 32;
  3779. bool fixedBuffer = true;
  3780.  
  3781. bool success = true;
  3782. success &= WriteToBuffer(AppDomainID, buffer, offset, size, fixedBuffer);
  3783. success &= WriteToBuffer(Survived, buffer, offset, size, fixedBuffer);
  3784. success &= WriteToBuffer(ProcessSurvived, buffer, offset, size, fixedBuffer);
  3785. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  3786.  
  3787. if (!success)
  3788. {
  3789. if (!fixedBuffer)
  3790. delete[] buffer;
  3791. return ERROR_WRITE_FAULT;
  3792. }
  3793.  
  3794. EventPipe::WriteEvent(*EventPipeEventAppDomainMemSurvived, (BYTE *)buffer, offset);
  3795.  
  3796. if (!fixedBuffer)
  3797. delete[] buffer;
  3798.  
  3799. return ERROR_SUCCESS;
  3800. }
  3801.  
  3802. bool EventPipeEventEnabledThreadCreated()
  3803. {
  3804. return EventPipeEventThreadCreated->IsEnabled();
  3805. }
  3806.  
  3807. extern "C" ULONG EventPipeWriteEventThreadCreated(
  3808. const unsigned __int64 ManagedThreadID,
  3809. const unsigned __int64 AppDomainID,
  3810. const unsigned int Flags,
  3811. const unsigned int ManagedThreadIndex,
  3812. const unsigned int OSThreadID,
  3813. const unsigned short ClrInstanceID)
  3814. {
  3815. if (!EventPipeEventEnabledThreadCreated())
  3816. return ERROR_SUCCESS;
  3817.  
  3818. char stackBuffer[32];
  3819. char *buffer = stackBuffer;
  3820. unsigned int offset = 0;
  3821. unsigned int size = 32;
  3822. bool fixedBuffer = true;
  3823.  
  3824. bool success = true;
  3825. success &= WriteToBuffer(ManagedThreadID, buffer, offset, size, fixedBuffer);
  3826. success &= WriteToBuffer(AppDomainID, buffer, offset, size, fixedBuffer);
  3827. success &= WriteToBuffer(Flags, buffer, offset, size, fixedBuffer);
  3828. success &= WriteToBuffer(ManagedThreadIndex, buffer, offset, size, fixedBuffer);
  3829. success &= WriteToBuffer(OSThreadID, buffer, offset, size, fixedBuffer);
  3830. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  3831.  
  3832. if (!success)
  3833. {
  3834. if (!fixedBuffer)
  3835. delete[] buffer;
  3836. return ERROR_WRITE_FAULT;
  3837. }
  3838.  
  3839. EventPipe::WriteEvent(*EventPipeEventThreadCreated, (BYTE *)buffer, offset);
  3840.  
  3841. if (!fixedBuffer)
  3842. delete[] buffer;
  3843.  
  3844. return ERROR_SUCCESS;
  3845. }
  3846.  
  3847. bool EventPipeEventEnabledThreadTerminated()
  3848. {
  3849. return EventPipeEventThreadTerminated->IsEnabled();
  3850. }
  3851.  
  3852. extern "C" ULONG EventPipeWriteEventThreadTerminated(
  3853. const unsigned __int64 ManagedThreadID,
  3854. const unsigned __int64 AppDomainID,
  3855. const unsigned short ClrInstanceID)
  3856. {
  3857. if (!EventPipeEventEnabledThreadTerminated())
  3858. return ERROR_SUCCESS;
  3859.  
  3860. char stackBuffer[32];
  3861. char *buffer = stackBuffer;
  3862. unsigned int offset = 0;
  3863. unsigned int size = 32;
  3864. bool fixedBuffer = true;
  3865.  
  3866. bool success = true;
  3867. success &= WriteToBuffer(ManagedThreadID, buffer, offset, size, fixedBuffer);
  3868. success &= WriteToBuffer(AppDomainID, buffer, offset, size, fixedBuffer);
  3869. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  3870.  
  3871. if (!success)
  3872. {
  3873. if (!fixedBuffer)
  3874. delete[] buffer;
  3875. return ERROR_WRITE_FAULT;
  3876. }
  3877.  
  3878. EventPipe::WriteEvent(*EventPipeEventThreadTerminated, (BYTE *)buffer, offset);
  3879.  
  3880. if (!fixedBuffer)
  3881. delete[] buffer;
  3882.  
  3883. return ERROR_SUCCESS;
  3884. }
  3885.  
  3886. bool EventPipeEventEnabledThreadDomainEnter()
  3887. {
  3888. return EventPipeEventThreadDomainEnter->IsEnabled();
  3889. }
  3890.  
  3891. extern "C" ULONG EventPipeWriteEventThreadDomainEnter(
  3892. const unsigned __int64 ManagedThreadID,
  3893. const unsigned __int64 AppDomainID,
  3894. const unsigned short ClrInstanceID)
  3895. {
  3896. if (!EventPipeEventEnabledThreadDomainEnter())
  3897. return ERROR_SUCCESS;
  3898.  
  3899. char stackBuffer[32];
  3900. char *buffer = stackBuffer;
  3901. unsigned int offset = 0;
  3902. unsigned int size = 32;
  3903. bool fixedBuffer = true;
  3904.  
  3905. bool success = true;
  3906. success &= WriteToBuffer(ManagedThreadID, buffer, offset, size, fixedBuffer);
  3907. success &= WriteToBuffer(AppDomainID, buffer, offset, size, fixedBuffer);
  3908. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  3909.  
  3910. if (!success)
  3911. {
  3912. if (!fixedBuffer)
  3913. delete[] buffer;
  3914. return ERROR_WRITE_FAULT;
  3915. }
  3916.  
  3917. EventPipe::WriteEvent(*EventPipeEventThreadDomainEnter, (BYTE *)buffer, offset);
  3918.  
  3919. if (!fixedBuffer)
  3920. delete[] buffer;
  3921.  
  3922. return ERROR_SUCCESS;
  3923. }
  3924.  
  3925. bool EventPipeEventEnabledILStubGenerated()
  3926. {
  3927. return EventPipeEventILStubGenerated->IsEnabled();
  3928. }
  3929.  
  3930. extern "C" ULONG EventPipeWriteEventILStubGenerated(
  3931. const unsigned short ClrInstanceID,
  3932. const unsigned __int64 ModuleID,
  3933. const unsigned __int64 StubMethodID,
  3934. const unsigned int StubFlags,
  3935. const unsigned int ManagedInteropMethodToken,
  3936. PCWSTR ManagedInteropMethodNamespace,
  3937. PCWSTR ManagedInteropMethodName,
  3938. PCWSTR ManagedInteropMethodSignature,
  3939. PCWSTR NativeMethodSignature,
  3940. PCWSTR StubMethodSignature,
  3941. PCWSTR StubMethodILCode)
  3942. {
  3943. if (!EventPipeEventEnabledILStubGenerated())
  3944. return ERROR_SUCCESS;
  3945.  
  3946. char stackBuffer[410];
  3947. char *buffer = stackBuffer;
  3948. unsigned int offset = 0;
  3949. unsigned int size = 410;
  3950. bool fixedBuffer = true;
  3951.  
  3952. bool success = true;
  3953. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  3954. success &= WriteToBuffer(ModuleID, buffer, offset, size, fixedBuffer);
  3955. success &= WriteToBuffer(StubMethodID, buffer, offset, size, fixedBuffer);
  3956. success &= WriteToBuffer(StubFlags, buffer, offset, size, fixedBuffer);
  3957. success &= WriteToBuffer(ManagedInteropMethodToken, buffer, offset, size, fixedBuffer);
  3958. success &= WriteToBuffer(ManagedInteropMethodNamespace, buffer, offset, size, fixedBuffer);
  3959. success &= WriteToBuffer(ManagedInteropMethodName, buffer, offset, size, fixedBuffer);
  3960. success &= WriteToBuffer(ManagedInteropMethodSignature, buffer, offset, size, fixedBuffer);
  3961. success &= WriteToBuffer(NativeMethodSignature, buffer, offset, size, fixedBuffer);
  3962. success &= WriteToBuffer(StubMethodSignature, buffer, offset, size, fixedBuffer);
  3963. success &= WriteToBuffer(StubMethodILCode, buffer, offset, size, fixedBuffer);
  3964.  
  3965. if (!success)
  3966. {
  3967. if (!fixedBuffer)
  3968. delete[] buffer;
  3969. return ERROR_WRITE_FAULT;
  3970. }
  3971.  
  3972. EventPipe::WriteEvent(*EventPipeEventILStubGenerated, (BYTE *)buffer, offset);
  3973.  
  3974. if (!fixedBuffer)
  3975. delete[] buffer;
  3976.  
  3977. return ERROR_SUCCESS;
  3978. }
  3979.  
  3980. bool EventPipeEventEnabledILStubCacheHit()
  3981. {
  3982. return EventPipeEventILStubCacheHit->IsEnabled();
  3983. }
  3984.  
  3985. extern "C" ULONG EventPipeWriteEventILStubCacheHit(
  3986. const unsigned short ClrInstanceID,
  3987. const unsigned __int64 ModuleID,
  3988. const unsigned __int64 StubMethodID,
  3989. const unsigned int ManagedInteropMethodToken,
  3990. PCWSTR ManagedInteropMethodNamespace,
  3991. PCWSTR ManagedInteropMethodName,
  3992. PCWSTR ManagedInteropMethodSignature)
  3993. {
  3994. if (!EventPipeEventEnabledILStubCacheHit())
  3995. return ERROR_SUCCESS;
  3996.  
  3997. char stackBuffer[214];
  3998. char *buffer = stackBuffer;
  3999. unsigned int offset = 0;
  4000. unsigned int size = 214;
  4001. bool fixedBuffer = true;
  4002.  
  4003. bool success = true;
  4004. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  4005. success &= WriteToBuffer(ModuleID, buffer, offset, size, fixedBuffer);
  4006. success &= WriteToBuffer(StubMethodID, buffer, offset, size, fixedBuffer);
  4007. success &= WriteToBuffer(ManagedInteropMethodToken, buffer, offset, size, fixedBuffer);
  4008. success &= WriteToBuffer(ManagedInteropMethodNamespace, buffer, offset, size, fixedBuffer);
  4009. success &= WriteToBuffer(ManagedInteropMethodName, buffer, offset, size, fixedBuffer);
  4010. success &= WriteToBuffer(ManagedInteropMethodSignature, buffer, offset, size, fixedBuffer);
  4011.  
  4012. if (!success)
  4013. {
  4014. if (!fixedBuffer)
  4015. delete[] buffer;
  4016. return ERROR_WRITE_FAULT;
  4017. }
  4018.  
  4019. EventPipe::WriteEvent(*EventPipeEventILStubCacheHit, (BYTE *)buffer, offset);
  4020.  
  4021. if (!fixedBuffer)
  4022. delete[] buffer;
  4023.  
  4024. return ERROR_SUCCESS;
  4025. }
  4026.  
  4027. bool EventPipeEventEnabledDCStartCompleteV2()
  4028. {
  4029. return EventPipeEventDCStartCompleteV2->IsEnabled();
  4030. }
  4031.  
  4032. extern "C" ULONG EventPipeWriteEventDCStartCompleteV2(
  4033. )
  4034. {
  4035. if (!EventPipeEventEnabledDCStartCompleteV2())
  4036. return ERROR_SUCCESS;
  4037. EventPipe::WriteEvent(*EventPipeEventDCStartCompleteV2, (BYTE*) nullptr, 0);
  4038.  
  4039. return ERROR_SUCCESS;
  4040. }
  4041.  
  4042. bool EventPipeEventEnabledDCEndCompleteV2()
  4043. {
  4044. return EventPipeEventDCEndCompleteV2->IsEnabled();
  4045. }
  4046.  
  4047. extern "C" ULONG EventPipeWriteEventDCEndCompleteV2(
  4048. )
  4049. {
  4050. if (!EventPipeEventEnabledDCEndCompleteV2())
  4051. return ERROR_SUCCESS;
  4052. EventPipe::WriteEvent(*EventPipeEventDCEndCompleteV2, (BYTE*) nullptr, 0);
  4053.  
  4054. return ERROR_SUCCESS;
  4055. }
  4056.  
  4057. bool EventPipeEventEnabledMethodDCStartV2()
  4058. {
  4059. return EventPipeEventMethodDCStartV2->IsEnabled();
  4060. }
  4061.  
  4062. extern "C" ULONG EventPipeWriteEventMethodDCStartV2(
  4063. const unsigned __int64 MethodID,
  4064. const unsigned __int64 ModuleID,
  4065. const unsigned __int64 MethodStartAddress,
  4066. const unsigned int MethodSize,
  4067. const unsigned int MethodToken,
  4068. const unsigned int MethodFlags)
  4069. {
  4070. if (!EventPipeEventEnabledMethodDCStartV2())
  4071. return ERROR_SUCCESS;
  4072.  
  4073. char stackBuffer[36];
  4074. char *buffer = stackBuffer;
  4075. unsigned int offset = 0;
  4076. unsigned int size = 36;
  4077. bool fixedBuffer = true;
  4078.  
  4079. bool success = true;
  4080. success &= WriteToBuffer(MethodID, buffer, offset, size, fixedBuffer);
  4081. success &= WriteToBuffer(ModuleID, buffer, offset, size, fixedBuffer);
  4082. success &= WriteToBuffer(MethodStartAddress, buffer, offset, size, fixedBuffer);
  4083. success &= WriteToBuffer(MethodSize, buffer, offset, size, fixedBuffer);
  4084. success &= WriteToBuffer(MethodToken, buffer, offset, size, fixedBuffer);
  4085. success &= WriteToBuffer(MethodFlags, buffer, offset, size, fixedBuffer);
  4086.  
  4087. if (!success)
  4088. {
  4089. if (!fixedBuffer)
  4090. delete[] buffer;
  4091. return ERROR_WRITE_FAULT;
  4092. }
  4093.  
  4094. EventPipe::WriteEvent(*EventPipeEventMethodDCStartV2, (BYTE *)buffer, offset);
  4095.  
  4096. if (!fixedBuffer)
  4097. delete[] buffer;
  4098.  
  4099. return ERROR_SUCCESS;
  4100. }
  4101.  
  4102. bool EventPipeEventEnabledMethodDCEndV2()
  4103. {
  4104. return EventPipeEventMethodDCEndV2->IsEnabled();
  4105. }
  4106.  
  4107. extern "C" ULONG EventPipeWriteEventMethodDCEndV2(
  4108. const unsigned __int64 MethodID,
  4109. const unsigned __int64 ModuleID,
  4110. const unsigned __int64 MethodStartAddress,
  4111. const unsigned int MethodSize,
  4112. const unsigned int MethodToken,
  4113. const unsigned int MethodFlags)
  4114. {
  4115. if (!EventPipeEventEnabledMethodDCEndV2())
  4116. return ERROR_SUCCESS;
  4117.  
  4118. char stackBuffer[36];
  4119. char *buffer = stackBuffer;
  4120. unsigned int offset = 0;
  4121. unsigned int size = 36;
  4122. bool fixedBuffer = true;
  4123.  
  4124. bool success = true;
  4125. success &= WriteToBuffer(MethodID, buffer, offset, size, fixedBuffer);
  4126. success &= WriteToBuffer(ModuleID, buffer, offset, size, fixedBuffer);
  4127. success &= WriteToBuffer(MethodStartAddress, buffer, offset, size, fixedBuffer);
  4128. success &= WriteToBuffer(MethodSize, buffer, offset, size, fixedBuffer);
  4129. success &= WriteToBuffer(MethodToken, buffer, offset, size, fixedBuffer);
  4130. success &= WriteToBuffer(MethodFlags, buffer, offset, size, fixedBuffer);
  4131.  
  4132. if (!success)
  4133. {
  4134. if (!fixedBuffer)
  4135. delete[] buffer;
  4136. return ERROR_WRITE_FAULT;
  4137. }
  4138.  
  4139. EventPipe::WriteEvent(*EventPipeEventMethodDCEndV2, (BYTE *)buffer, offset);
  4140.  
  4141. if (!fixedBuffer)
  4142. delete[] buffer;
  4143.  
  4144. return ERROR_SUCCESS;
  4145. }
  4146.  
  4147. bool EventPipeEventEnabledMethodDCStartVerboseV2()
  4148. {
  4149. return EventPipeEventMethodDCStartVerboseV2->IsEnabled();
  4150. }
  4151.  
  4152. extern "C" ULONG EventPipeWriteEventMethodDCStartVerboseV2(
  4153. const unsigned __int64 MethodID,
  4154. const unsigned __int64 ModuleID,
  4155. const unsigned __int64 MethodStartAddress,
  4156. const unsigned int MethodSize,
  4157. const unsigned int MethodToken,
  4158. const unsigned int MethodFlags,
  4159. PCWSTR MethodNamespace,
  4160. PCWSTR MethodName,
  4161. PCWSTR MethodSignature)
  4162. {
  4163. if (!EventPipeEventEnabledMethodDCStartVerboseV2())
  4164. return ERROR_SUCCESS;
  4165.  
  4166. char stackBuffer[228];
  4167. char *buffer = stackBuffer;
  4168. unsigned int offset = 0;
  4169. unsigned int size = 228;
  4170. bool fixedBuffer = true;
  4171.  
  4172. bool success = true;
  4173. success &= WriteToBuffer(MethodID, buffer, offset, size, fixedBuffer);
  4174. success &= WriteToBuffer(ModuleID, buffer, offset, size, fixedBuffer);
  4175. success &= WriteToBuffer(MethodStartAddress, buffer, offset, size, fixedBuffer);
  4176. success &= WriteToBuffer(MethodSize, buffer, offset, size, fixedBuffer);
  4177. success &= WriteToBuffer(MethodToken, buffer, offset, size, fixedBuffer);
  4178. success &= WriteToBuffer(MethodFlags, buffer, offset, size, fixedBuffer);
  4179. success &= WriteToBuffer(MethodNamespace, buffer, offset, size, fixedBuffer);
  4180. success &= WriteToBuffer(MethodName, buffer, offset, size, fixedBuffer);
  4181. success &= WriteToBuffer(MethodSignature, buffer, offset, size, fixedBuffer);
  4182.  
  4183. if (!success)
  4184. {
  4185. if (!fixedBuffer)
  4186. delete[] buffer;
  4187. return ERROR_WRITE_FAULT;
  4188. }
  4189.  
  4190. EventPipe::WriteEvent(*EventPipeEventMethodDCStartVerboseV2, (BYTE *)buffer, offset);
  4191.  
  4192. if (!fixedBuffer)
  4193. delete[] buffer;
  4194.  
  4195. return ERROR_SUCCESS;
  4196. }
  4197.  
  4198. bool EventPipeEventEnabledMethodDCEndVerboseV2()
  4199. {
  4200. return EventPipeEventMethodDCEndVerboseV2->IsEnabled();
  4201. }
  4202.  
  4203. extern "C" ULONG EventPipeWriteEventMethodDCEndVerboseV2(
  4204. const unsigned __int64 MethodID,
  4205. const unsigned __int64 ModuleID,
  4206. const unsigned __int64 MethodStartAddress,
  4207. const unsigned int MethodSize,
  4208. const unsigned int MethodToken,
  4209. const unsigned int MethodFlags,
  4210. PCWSTR MethodNamespace,
  4211. PCWSTR MethodName,
  4212. PCWSTR MethodSignature)
  4213. {
  4214. if (!EventPipeEventEnabledMethodDCEndVerboseV2())
  4215. return ERROR_SUCCESS;
  4216.  
  4217. char stackBuffer[228];
  4218. char *buffer = stackBuffer;
  4219. unsigned int offset = 0;
  4220. unsigned int size = 228;
  4221. bool fixedBuffer = true;
  4222.  
  4223. bool success = true;
  4224. success &= WriteToBuffer(MethodID, buffer, offset, size, fixedBuffer);
  4225. success &= WriteToBuffer(ModuleID, buffer, offset, size, fixedBuffer);
  4226. success &= WriteToBuffer(MethodStartAddress, buffer, offset, size, fixedBuffer);
  4227. success &= WriteToBuffer(MethodSize, buffer, offset, size, fixedBuffer);
  4228. success &= WriteToBuffer(MethodToken, buffer, offset, size, fixedBuffer);
  4229. success &= WriteToBuffer(MethodFlags, buffer, offset, size, fixedBuffer);
  4230. success &= WriteToBuffer(MethodNamespace, buffer, offset, size, fixedBuffer);
  4231. success &= WriteToBuffer(MethodName, buffer, offset, size, fixedBuffer);
  4232. success &= WriteToBuffer(MethodSignature, buffer, offset, size, fixedBuffer);
  4233.  
  4234. if (!success)
  4235. {
  4236. if (!fixedBuffer)
  4237. delete[] buffer;
  4238. return ERROR_WRITE_FAULT;
  4239. }
  4240.  
  4241. EventPipe::WriteEvent(*EventPipeEventMethodDCEndVerboseV2, (BYTE *)buffer, offset);
  4242.  
  4243. if (!fixedBuffer)
  4244. delete[] buffer;
  4245.  
  4246. return ERROR_SUCCESS;
  4247. }
  4248.  
  4249. bool EventPipeEventEnabledMethodLoad()
  4250. {
  4251. return EventPipeEventMethodLoad->IsEnabled();
  4252. }
  4253.  
  4254. extern "C" ULONG EventPipeWriteEventMethodLoad(
  4255. const unsigned __int64 MethodID,
  4256. const unsigned __int64 ModuleID,
  4257. const unsigned __int64 MethodStartAddress,
  4258. const unsigned int MethodSize,
  4259. const unsigned int MethodToken,
  4260. const unsigned int MethodFlags)
  4261. {
  4262. if (!EventPipeEventEnabledMethodLoad())
  4263. return ERROR_SUCCESS;
  4264.  
  4265. char stackBuffer[36];
  4266. char *buffer = stackBuffer;
  4267. unsigned int offset = 0;
  4268. unsigned int size = 36;
  4269. bool fixedBuffer = true;
  4270.  
  4271. bool success = true;
  4272. success &= WriteToBuffer(MethodID, buffer, offset, size, fixedBuffer);
  4273. success &= WriteToBuffer(ModuleID, buffer, offset, size, fixedBuffer);
  4274. success &= WriteToBuffer(MethodStartAddress, buffer, offset, size, fixedBuffer);
  4275. success &= WriteToBuffer(MethodSize, buffer, offset, size, fixedBuffer);
  4276. success &= WriteToBuffer(MethodToken, buffer, offset, size, fixedBuffer);
  4277. success &= WriteToBuffer(MethodFlags, buffer, offset, size, fixedBuffer);
  4278.  
  4279. if (!success)
  4280. {
  4281. if (!fixedBuffer)
  4282. delete[] buffer;
  4283. return ERROR_WRITE_FAULT;
  4284. }
  4285.  
  4286. EventPipe::WriteEvent(*EventPipeEventMethodLoad, (BYTE *)buffer, offset);
  4287.  
  4288. if (!fixedBuffer)
  4289. delete[] buffer;
  4290.  
  4291. return ERROR_SUCCESS;
  4292. }
  4293.  
  4294. bool EventPipeEventEnabledMethodLoad_V1()
  4295. {
  4296. return EventPipeEventMethodLoad_V1->IsEnabled();
  4297. }
  4298.  
  4299. extern "C" ULONG EventPipeWriteEventMethodLoad_V1(
  4300. const unsigned __int64 MethodID,
  4301. const unsigned __int64 ModuleID,
  4302. const unsigned __int64 MethodStartAddress,
  4303. const unsigned int MethodSize,
  4304. const unsigned int MethodToken,
  4305. const unsigned int MethodFlags,
  4306. const unsigned short ClrInstanceID)
  4307. {
  4308. if (!EventPipeEventEnabledMethodLoad_V1())
  4309. return ERROR_SUCCESS;
  4310.  
  4311. char stackBuffer[38];
  4312. char *buffer = stackBuffer;
  4313. unsigned int offset = 0;
  4314. unsigned int size = 38;
  4315. bool fixedBuffer = true;
  4316.  
  4317. bool success = true;
  4318. success &= WriteToBuffer(MethodID, buffer, offset, size, fixedBuffer);
  4319. success &= WriteToBuffer(ModuleID, buffer, offset, size, fixedBuffer);
  4320. success &= WriteToBuffer(MethodStartAddress, buffer, offset, size, fixedBuffer);
  4321. success &= WriteToBuffer(MethodSize, buffer, offset, size, fixedBuffer);
  4322. success &= WriteToBuffer(MethodToken, buffer, offset, size, fixedBuffer);
  4323. success &= WriteToBuffer(MethodFlags, buffer, offset, size, fixedBuffer);
  4324. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  4325.  
  4326. if (!success)
  4327. {
  4328. if (!fixedBuffer)
  4329. delete[] buffer;
  4330. return ERROR_WRITE_FAULT;
  4331. }
  4332.  
  4333. EventPipe::WriteEvent(*EventPipeEventMethodLoad_V1, (BYTE *)buffer, offset);
  4334.  
  4335. if (!fixedBuffer)
  4336. delete[] buffer;
  4337.  
  4338. return ERROR_SUCCESS;
  4339. }
  4340.  
  4341. bool EventPipeEventEnabledMethodLoad_V2()
  4342. {
  4343. return EventPipeEventMethodLoad_V2->IsEnabled();
  4344. }
  4345.  
  4346. extern "C" ULONG EventPipeWriteEventMethodLoad_V2(
  4347. const unsigned __int64 MethodID,
  4348. const unsigned __int64 ModuleID,
  4349. const unsigned __int64 MethodStartAddress,
  4350. const unsigned int MethodSize,
  4351. const unsigned int MethodToken,
  4352. const unsigned int MethodFlags,
  4353. const unsigned short ClrInstanceID,
  4354. const unsigned __int64 ReJITID)
  4355. {
  4356. if (!EventPipeEventEnabledMethodLoad_V2())
  4357. return ERROR_SUCCESS;
  4358.  
  4359. char stackBuffer[46];
  4360. char *buffer = stackBuffer;
  4361. unsigned int offset = 0;
  4362. unsigned int size = 46;
  4363. bool fixedBuffer = true;
  4364.  
  4365. bool success = true;
  4366. success &= WriteToBuffer(MethodID, buffer, offset, size, fixedBuffer);
  4367. success &= WriteToBuffer(ModuleID, buffer, offset, size, fixedBuffer);
  4368. success &= WriteToBuffer(MethodStartAddress, buffer, offset, size, fixedBuffer);
  4369. success &= WriteToBuffer(MethodSize, buffer, offset, size, fixedBuffer);
  4370. success &= WriteToBuffer(MethodToken, buffer, offset, size, fixedBuffer);
  4371. success &= WriteToBuffer(MethodFlags, buffer, offset, size, fixedBuffer);
  4372. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  4373. success &= WriteToBuffer(ReJITID, buffer, offset, size, fixedBuffer);
  4374.  
  4375. if (!success)
  4376. {
  4377. if (!fixedBuffer)
  4378. delete[] buffer;
  4379. return ERROR_WRITE_FAULT;
  4380. }
  4381.  
  4382. EventPipe::WriteEvent(*EventPipeEventMethodLoad_V2, (BYTE *)buffer, offset);
  4383.  
  4384. if (!fixedBuffer)
  4385. delete[] buffer;
  4386.  
  4387. return ERROR_SUCCESS;
  4388. }
  4389.  
  4390. bool EventPipeEventEnabledMethodUnload()
  4391. {
  4392. return EventPipeEventMethodUnload->IsEnabled();
  4393. }
  4394.  
  4395. extern "C" ULONG EventPipeWriteEventMethodUnload(
  4396. const unsigned __int64 MethodID,
  4397. const unsigned __int64 ModuleID,
  4398. const unsigned __int64 MethodStartAddress,
  4399. const unsigned int MethodSize,
  4400. const unsigned int MethodToken,
  4401. const unsigned int MethodFlags)
  4402. {
  4403. if (!EventPipeEventEnabledMethodUnload())
  4404. return ERROR_SUCCESS;
  4405.  
  4406. char stackBuffer[36];
  4407. char *buffer = stackBuffer;
  4408. unsigned int offset = 0;
  4409. unsigned int size = 36;
  4410. bool fixedBuffer = true;
  4411.  
  4412. bool success = true;
  4413. success &= WriteToBuffer(MethodID, buffer, offset, size, fixedBuffer);
  4414. success &= WriteToBuffer(ModuleID, buffer, offset, size, fixedBuffer);
  4415. success &= WriteToBuffer(MethodStartAddress, buffer, offset, size, fixedBuffer);
  4416. success &= WriteToBuffer(MethodSize, buffer, offset, size, fixedBuffer);
  4417. success &= WriteToBuffer(MethodToken, buffer, offset, size, fixedBuffer);
  4418. success &= WriteToBuffer(MethodFlags, buffer, offset, size, fixedBuffer);
  4419.  
  4420. if (!success)
  4421. {
  4422. if (!fixedBuffer)
  4423. delete[] buffer;
  4424. return ERROR_WRITE_FAULT;
  4425. }
  4426.  
  4427. EventPipe::WriteEvent(*EventPipeEventMethodUnload, (BYTE *)buffer, offset);
  4428.  
  4429. if (!fixedBuffer)
  4430. delete[] buffer;
  4431.  
  4432. return ERROR_SUCCESS;
  4433. }
  4434.  
  4435. bool EventPipeEventEnabledMethodUnload_V1()
  4436. {
  4437. return EventPipeEventMethodUnload_V1->IsEnabled();
  4438. }
  4439.  
  4440. extern "C" ULONG EventPipeWriteEventMethodUnload_V1(
  4441. const unsigned __int64 MethodID,
  4442. const unsigned __int64 ModuleID,
  4443. const unsigned __int64 MethodStartAddress,
  4444. const unsigned int MethodSize,
  4445. const unsigned int MethodToken,
  4446. const unsigned int MethodFlags,
  4447. const unsigned short ClrInstanceID)
  4448. {
  4449. if (!EventPipeEventEnabledMethodUnload_V1())
  4450. return ERROR_SUCCESS;
  4451.  
  4452. char stackBuffer[38];
  4453. char *buffer = stackBuffer;
  4454. unsigned int offset = 0;
  4455. unsigned int size = 38;
  4456. bool fixedBuffer = true;
  4457.  
  4458. bool success = true;
  4459. success &= WriteToBuffer(MethodID, buffer, offset, size, fixedBuffer);
  4460. success &= WriteToBuffer(ModuleID, buffer, offset, size, fixedBuffer);
  4461. success &= WriteToBuffer(MethodStartAddress, buffer, offset, size, fixedBuffer);
  4462. success &= WriteToBuffer(MethodSize, buffer, offset, size, fixedBuffer);
  4463. success &= WriteToBuffer(MethodToken, buffer, offset, size, fixedBuffer);
  4464. success &= WriteToBuffer(MethodFlags, buffer, offset, size, fixedBuffer);
  4465. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  4466.  
  4467. if (!success)
  4468. {
  4469. if (!fixedBuffer)
  4470. delete[] buffer;
  4471. return ERROR_WRITE_FAULT;
  4472. }
  4473.  
  4474. EventPipe::WriteEvent(*EventPipeEventMethodUnload_V1, (BYTE *)buffer, offset);
  4475.  
  4476. if (!fixedBuffer)
  4477. delete[] buffer;
  4478.  
  4479. return ERROR_SUCCESS;
  4480. }
  4481.  
  4482. bool EventPipeEventEnabledMethodUnload_V2()
  4483. {
  4484. return EventPipeEventMethodUnload_V2->IsEnabled();
  4485. }
  4486.  
  4487. extern "C" ULONG EventPipeWriteEventMethodUnload_V2(
  4488. const unsigned __int64 MethodID,
  4489. const unsigned __int64 ModuleID,
  4490. const unsigned __int64 MethodStartAddress,
  4491. const unsigned int MethodSize,
  4492. const unsigned int MethodToken,
  4493. const unsigned int MethodFlags,
  4494. const unsigned short ClrInstanceID,
  4495. const unsigned __int64 ReJITID)
  4496. {
  4497. if (!EventPipeEventEnabledMethodUnload_V2())
  4498. return ERROR_SUCCESS;
  4499.  
  4500. char stackBuffer[46];
  4501. char *buffer = stackBuffer;
  4502. unsigned int offset = 0;
  4503. unsigned int size = 46;
  4504. bool fixedBuffer = true;
  4505.  
  4506. bool success = true;
  4507. success &= WriteToBuffer(MethodID, buffer, offset, size, fixedBuffer);
  4508. success &= WriteToBuffer(ModuleID, buffer, offset, size, fixedBuffer);
  4509. success &= WriteToBuffer(MethodStartAddress, buffer, offset, size, fixedBuffer);
  4510. success &= WriteToBuffer(MethodSize, buffer, offset, size, fixedBuffer);
  4511. success &= WriteToBuffer(MethodToken, buffer, offset, size, fixedBuffer);
  4512. success &= WriteToBuffer(MethodFlags, buffer, offset, size, fixedBuffer);
  4513. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  4514. success &= WriteToBuffer(ReJITID, buffer, offset, size, fixedBuffer);
  4515.  
  4516. if (!success)
  4517. {
  4518. if (!fixedBuffer)
  4519. delete[] buffer;
  4520. return ERROR_WRITE_FAULT;
  4521. }
  4522.  
  4523. EventPipe::WriteEvent(*EventPipeEventMethodUnload_V2, (BYTE *)buffer, offset);
  4524.  
  4525. if (!fixedBuffer)
  4526. delete[] buffer;
  4527.  
  4528. return ERROR_SUCCESS;
  4529. }
  4530.  
  4531. bool EventPipeEventEnabledMethodLoadVerbose()
  4532. {
  4533. return EventPipeEventMethodLoadVerbose->IsEnabled();
  4534. }
  4535.  
  4536. extern "C" ULONG EventPipeWriteEventMethodLoadVerbose(
  4537. const unsigned __int64 MethodID,
  4538. const unsigned __int64 ModuleID,
  4539. const unsigned __int64 MethodStartAddress,
  4540. const unsigned int MethodSize,
  4541. const unsigned int MethodToken,
  4542. const unsigned int MethodFlags,
  4543. PCWSTR MethodNamespace,
  4544. PCWSTR MethodName,
  4545. PCWSTR MethodSignature)
  4546. {
  4547. if (!EventPipeEventEnabledMethodLoadVerbose())
  4548. return ERROR_SUCCESS;
  4549.  
  4550. char stackBuffer[228];
  4551. char *buffer = stackBuffer;
  4552. unsigned int offset = 0;
  4553. unsigned int size = 228;
  4554. bool fixedBuffer = true;
  4555.  
  4556. bool success = true;
  4557. success &= WriteToBuffer(MethodID, buffer, offset, size, fixedBuffer);
  4558. success &= WriteToBuffer(ModuleID, buffer, offset, size, fixedBuffer);
  4559. success &= WriteToBuffer(MethodStartAddress, buffer, offset, size, fixedBuffer);
  4560. success &= WriteToBuffer(MethodSize, buffer, offset, size, fixedBuffer);
  4561. success &= WriteToBuffer(MethodToken, buffer, offset, size, fixedBuffer);
  4562. success &= WriteToBuffer(MethodFlags, buffer, offset, size, fixedBuffer);
  4563. success &= WriteToBuffer(MethodNamespace, buffer, offset, size, fixedBuffer);
  4564. success &= WriteToBuffer(MethodName, buffer, offset, size, fixedBuffer);
  4565. success &= WriteToBuffer(MethodSignature, buffer, offset, size, fixedBuffer);
  4566.  
  4567. if (!success)
  4568. {
  4569. if (!fixedBuffer)
  4570. delete[] buffer;
  4571. return ERROR_WRITE_FAULT;
  4572. }
  4573.  
  4574. EventPipe::WriteEvent(*EventPipeEventMethodLoadVerbose, (BYTE *)buffer, offset);
  4575.  
  4576. if (!fixedBuffer)
  4577. delete[] buffer;
  4578.  
  4579. return ERROR_SUCCESS;
  4580. }
  4581.  
  4582. bool EventPipeEventEnabledMethodLoadVerbose_V1()
  4583. {
  4584. return EventPipeEventMethodLoadVerbose_V1->IsEnabled();
  4585. }
  4586.  
  4587. extern "C" ULONG EventPipeWriteEventMethodLoadVerbose_V1(
  4588. const unsigned __int64 MethodID,
  4589. const unsigned __int64 ModuleID,
  4590. const unsigned __int64 MethodStartAddress,
  4591. const unsigned int MethodSize,
  4592. const unsigned int MethodToken,
  4593. const unsigned int MethodFlags,
  4594. PCWSTR MethodNamespace,
  4595. PCWSTR MethodName,
  4596. PCWSTR MethodSignature,
  4597. const unsigned short ClrInstanceID)
  4598. {
  4599. if (!EventPipeEventEnabledMethodLoadVerbose_V1())
  4600. return ERROR_SUCCESS;
  4601.  
  4602. char stackBuffer[230];
  4603. char *buffer = stackBuffer;
  4604. unsigned int offset = 0;
  4605. unsigned int size = 230;
  4606. bool fixedBuffer = true;
  4607.  
  4608. bool success = true;
  4609. success &= WriteToBuffer(MethodID, buffer, offset, size, fixedBuffer);
  4610. success &= WriteToBuffer(ModuleID, buffer, offset, size, fixedBuffer);
  4611. success &= WriteToBuffer(MethodStartAddress, buffer, offset, size, fixedBuffer);
  4612. success &= WriteToBuffer(MethodSize, buffer, offset, size, fixedBuffer);
  4613. success &= WriteToBuffer(MethodToken, buffer, offset, size, fixedBuffer);
  4614. success &= WriteToBuffer(MethodFlags, buffer, offset, size, fixedBuffer);
  4615. success &= WriteToBuffer(MethodNamespace, buffer, offset, size, fixedBuffer);
  4616. success &= WriteToBuffer(MethodName, buffer, offset, size, fixedBuffer);
  4617. success &= WriteToBuffer(MethodSignature, buffer, offset, size, fixedBuffer);
  4618. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  4619.  
  4620. if (!success)
  4621. {
  4622. if (!fixedBuffer)
  4623. delete[] buffer;
  4624. return ERROR_WRITE_FAULT;
  4625. }
  4626.  
  4627. EventPipe::WriteEvent(*EventPipeEventMethodLoadVerbose_V1, (BYTE *)buffer, offset);
  4628.  
  4629. if (!fixedBuffer)
  4630. delete[] buffer;
  4631.  
  4632. return ERROR_SUCCESS;
  4633. }
  4634.  
  4635. bool EventPipeEventEnabledMethodLoadVerbose_V2()
  4636. {
  4637. return EventPipeEventMethodLoadVerbose_V2->IsEnabled();
  4638. }
  4639.  
  4640. extern "C" ULONG EventPipeWriteEventMethodLoadVerbose_V2(
  4641. const unsigned __int64 MethodID,
  4642. const unsigned __int64 ModuleID,
  4643. const unsigned __int64 MethodStartAddress,
  4644. const unsigned int MethodSize,
  4645. const unsigned int MethodToken,
  4646. const unsigned int MethodFlags,
  4647. PCWSTR MethodNamespace,
  4648. PCWSTR MethodName,
  4649. PCWSTR MethodSignature,
  4650. const unsigned short ClrInstanceID,
  4651. const unsigned __int64 ReJITID)
  4652. {
  4653. if (!EventPipeEventEnabledMethodLoadVerbose_V2())
  4654. return ERROR_SUCCESS;
  4655.  
  4656. char stackBuffer[238];
  4657. char *buffer = stackBuffer;
  4658. unsigned int offset = 0;
  4659. unsigned int size = 238;
  4660. bool fixedBuffer = true;
  4661.  
  4662. bool success = true;
  4663. success &= WriteToBuffer(MethodID, buffer, offset, size, fixedBuffer);
  4664. success &= WriteToBuffer(ModuleID, buffer, offset, size, fixedBuffer);
  4665. success &= WriteToBuffer(MethodStartAddress, buffer, offset, size, fixedBuffer);
  4666. success &= WriteToBuffer(MethodSize, buffer, offset, size, fixedBuffer);
  4667. success &= WriteToBuffer(MethodToken, buffer, offset, size, fixedBuffer);
  4668. success &= WriteToBuffer(MethodFlags, buffer, offset, size, fixedBuffer);
  4669. success &= WriteToBuffer(MethodNamespace, buffer, offset, size, fixedBuffer);
  4670. success &= WriteToBuffer(MethodName, buffer, offset, size, fixedBuffer);
  4671. success &= WriteToBuffer(MethodSignature, buffer, offset, size, fixedBuffer);
  4672. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  4673. success &= WriteToBuffer(ReJITID, buffer, offset, size, fixedBuffer);
  4674.  
  4675. if (!success)
  4676. {
  4677. if (!fixedBuffer)
  4678. delete[] buffer;
  4679. return ERROR_WRITE_FAULT;
  4680. }
  4681.  
  4682. EventPipe::WriteEvent(*EventPipeEventMethodLoadVerbose_V2, (BYTE *)buffer, offset);
  4683.  
  4684. if (!fixedBuffer)
  4685. delete[] buffer;
  4686.  
  4687. return ERROR_SUCCESS;
  4688. }
  4689.  
  4690. bool EventPipeEventEnabledMethodUnloadVerbose()
  4691. {
  4692. return EventPipeEventMethodUnloadVerbose->IsEnabled();
  4693. }
  4694.  
  4695. extern "C" ULONG EventPipeWriteEventMethodUnloadVerbose(
  4696. const unsigned __int64 MethodID,
  4697. const unsigned __int64 ModuleID,
  4698. const unsigned __int64 MethodStartAddress,
  4699. const unsigned int MethodSize,
  4700. const unsigned int MethodToken,
  4701. const unsigned int MethodFlags,
  4702. PCWSTR MethodNamespace,
  4703. PCWSTR MethodName,
  4704. PCWSTR MethodSignature)
  4705. {
  4706. if (!EventPipeEventEnabledMethodUnloadVerbose())
  4707. return ERROR_SUCCESS;
  4708.  
  4709. char stackBuffer[228];
  4710. char *buffer = stackBuffer;
  4711. unsigned int offset = 0;
  4712. unsigned int size = 228;
  4713. bool fixedBuffer = true;
  4714.  
  4715. bool success = true;
  4716. success &= WriteToBuffer(MethodID, buffer, offset, size, fixedBuffer);
  4717. success &= WriteToBuffer(ModuleID, buffer, offset, size, fixedBuffer);
  4718. success &= WriteToBuffer(MethodStartAddress, buffer, offset, size, fixedBuffer);
  4719. success &= WriteToBuffer(MethodSize, buffer, offset, size, fixedBuffer);
  4720. success &= WriteToBuffer(MethodToken, buffer, offset, size, fixedBuffer);
  4721. success &= WriteToBuffer(MethodFlags, buffer, offset, size, fixedBuffer);
  4722. success &= WriteToBuffer(MethodNamespace, buffer, offset, size, fixedBuffer);
  4723. success &= WriteToBuffer(MethodName, buffer, offset, size, fixedBuffer);
  4724. success &= WriteToBuffer(MethodSignature, buffer, offset, size, fixedBuffer);
  4725.  
  4726. if (!success)
  4727. {
  4728. if (!fixedBuffer)
  4729. delete[] buffer;
  4730. return ERROR_WRITE_FAULT;
  4731. }
  4732.  
  4733. EventPipe::WriteEvent(*EventPipeEventMethodUnloadVerbose, (BYTE *)buffer, offset);
  4734.  
  4735. if (!fixedBuffer)
  4736. delete[] buffer;
  4737.  
  4738. return ERROR_SUCCESS;
  4739. }
  4740.  
  4741. bool EventPipeEventEnabledMethodUnloadVerbose_V1()
  4742. {
  4743. return EventPipeEventMethodUnloadVerbose_V1->IsEnabled();
  4744. }
  4745.  
  4746. extern "C" ULONG EventPipeWriteEventMethodUnloadVerbose_V1(
  4747. const unsigned __int64 MethodID,
  4748. const unsigned __int64 ModuleID,
  4749. const unsigned __int64 MethodStartAddress,
  4750. const unsigned int MethodSize,
  4751. const unsigned int MethodToken,
  4752. const unsigned int MethodFlags,
  4753. PCWSTR MethodNamespace,
  4754. PCWSTR MethodName,
  4755. PCWSTR MethodSignature,
  4756. const unsigned short ClrInstanceID)
  4757. {
  4758. if (!EventPipeEventEnabledMethodUnloadVerbose_V1())
  4759. return ERROR_SUCCESS;
  4760.  
  4761. char stackBuffer[230];
  4762. char *buffer = stackBuffer;
  4763. unsigned int offset = 0;
  4764. unsigned int size = 230;
  4765. bool fixedBuffer = true;
  4766.  
  4767. bool success = true;
  4768. success &= WriteToBuffer(MethodID, buffer, offset, size, fixedBuffer);
  4769. success &= WriteToBuffer(ModuleID, buffer, offset, size, fixedBuffer);
  4770. success &= WriteToBuffer(MethodStartAddress, buffer, offset, size, fixedBuffer);
  4771. success &= WriteToBuffer(MethodSize, buffer, offset, size, fixedBuffer);
  4772. success &= WriteToBuffer(MethodToken, buffer, offset, size, fixedBuffer);
  4773. success &= WriteToBuffer(MethodFlags, buffer, offset, size, fixedBuffer);
  4774. success &= WriteToBuffer(MethodNamespace, buffer, offset, size, fixedBuffer);
  4775. success &= WriteToBuffer(MethodName, buffer, offset, size, fixedBuffer);
  4776. success &= WriteToBuffer(MethodSignature, buffer, offset, size, fixedBuffer);
  4777. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  4778.  
  4779. if (!success)
  4780. {
  4781. if (!fixedBuffer)
  4782. delete[] buffer;
  4783. return ERROR_WRITE_FAULT;
  4784. }
  4785.  
  4786. EventPipe::WriteEvent(*EventPipeEventMethodUnloadVerbose_V1, (BYTE *)buffer, offset);
  4787.  
  4788. if (!fixedBuffer)
  4789. delete[] buffer;
  4790.  
  4791. return ERROR_SUCCESS;
  4792. }
  4793.  
  4794. bool EventPipeEventEnabledMethodUnloadVerbose_V2()
  4795. {
  4796. return EventPipeEventMethodUnloadVerbose_V2->IsEnabled();
  4797. }
  4798.  
  4799. extern "C" ULONG EventPipeWriteEventMethodUnloadVerbose_V2(
  4800. const unsigned __int64 MethodID,
  4801. const unsigned __int64 ModuleID,
  4802. const unsigned __int64 MethodStartAddress,
  4803. const unsigned int MethodSize,
  4804. const unsigned int MethodToken,
  4805. const unsigned int MethodFlags,
  4806. PCWSTR MethodNamespace,
  4807. PCWSTR MethodName,
  4808. PCWSTR MethodSignature,
  4809. const unsigned short ClrInstanceID,
  4810. const unsigned __int64 ReJITID)
  4811. {
  4812. if (!EventPipeEventEnabledMethodUnloadVerbose_V2())
  4813. return ERROR_SUCCESS;
  4814.  
  4815. char stackBuffer[238];
  4816. char *buffer = stackBuffer;
  4817. unsigned int offset = 0;
  4818. unsigned int size = 238;
  4819. bool fixedBuffer = true;
  4820.  
  4821. bool success = true;
  4822. success &= WriteToBuffer(MethodID, buffer, offset, size, fixedBuffer);
  4823. success &= WriteToBuffer(ModuleID, buffer, offset, size, fixedBuffer);
  4824. success &= WriteToBuffer(MethodStartAddress, buffer, offset, size, fixedBuffer);
  4825. success &= WriteToBuffer(MethodSize, buffer, offset, size, fixedBuffer);
  4826. success &= WriteToBuffer(MethodToken, buffer, offset, size, fixedBuffer);
  4827. success &= WriteToBuffer(MethodFlags, buffer, offset, size, fixedBuffer);
  4828. success &= WriteToBuffer(MethodNamespace, buffer, offset, size, fixedBuffer);
  4829. success &= WriteToBuffer(MethodName, buffer, offset, size, fixedBuffer);
  4830. success &= WriteToBuffer(MethodSignature, buffer, offset, size, fixedBuffer);
  4831. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  4832. success &= WriteToBuffer(ReJITID, buffer, offset, size, fixedBuffer);
  4833.  
  4834. if (!success)
  4835. {
  4836. if (!fixedBuffer)
  4837. delete[] buffer;
  4838. return ERROR_WRITE_FAULT;
  4839. }
  4840.  
  4841. EventPipe::WriteEvent(*EventPipeEventMethodUnloadVerbose_V2, (BYTE *)buffer, offset);
  4842.  
  4843. if (!fixedBuffer)
  4844. delete[] buffer;
  4845.  
  4846. return ERROR_SUCCESS;
  4847. }
  4848.  
  4849. bool EventPipeEventEnabledMethodJittingStarted()
  4850. {
  4851. return EventPipeEventMethodJittingStarted->IsEnabled();
  4852. }
  4853.  
  4854. extern "C" ULONG EventPipeWriteEventMethodJittingStarted(
  4855. const unsigned __int64 MethodID,
  4856. const unsigned __int64 ModuleID,
  4857. const unsigned int MethodToken,
  4858. const unsigned int MethodILSize,
  4859. PCWSTR MethodNamespace,
  4860. PCWSTR MethodName,
  4861. PCWSTR MethodSignature)
  4862. {
  4863. if (!EventPipeEventEnabledMethodJittingStarted())
  4864. return ERROR_SUCCESS;
  4865.  
  4866. char stackBuffer[216];
  4867. char *buffer = stackBuffer;
  4868. unsigned int offset = 0;
  4869. unsigned int size = 216;
  4870. bool fixedBuffer = true;
  4871.  
  4872. bool success = true;
  4873. success &= WriteToBuffer(MethodID, buffer, offset, size, fixedBuffer);
  4874. success &= WriteToBuffer(ModuleID, buffer, offset, size, fixedBuffer);
  4875. success &= WriteToBuffer(MethodToken, buffer, offset, size, fixedBuffer);
  4876. success &= WriteToBuffer(MethodILSize, buffer, offset, size, fixedBuffer);
  4877. success &= WriteToBuffer(MethodNamespace, buffer, offset, size, fixedBuffer);
  4878. success &= WriteToBuffer(MethodName, buffer, offset, size, fixedBuffer);
  4879. success &= WriteToBuffer(MethodSignature, buffer, offset, size, fixedBuffer);
  4880.  
  4881. if (!success)
  4882. {
  4883. if (!fixedBuffer)
  4884. delete[] buffer;
  4885. return ERROR_WRITE_FAULT;
  4886. }
  4887.  
  4888. EventPipe::WriteEvent(*EventPipeEventMethodJittingStarted, (BYTE *)buffer, offset);
  4889.  
  4890. if (!fixedBuffer)
  4891. delete[] buffer;
  4892.  
  4893. return ERROR_SUCCESS;
  4894. }
  4895.  
  4896. bool EventPipeEventEnabledMethodJittingStarted_V1()
  4897. {
  4898. return EventPipeEventMethodJittingStarted_V1->IsEnabled();
  4899. }
  4900.  
  4901. extern "C" ULONG EventPipeWriteEventMethodJittingStarted_V1(
  4902. const unsigned __int64 MethodID,
  4903. const unsigned __int64 ModuleID,
  4904. const unsigned int MethodToken,
  4905. const unsigned int MethodILSize,
  4906. PCWSTR MethodNamespace,
  4907. PCWSTR MethodName,
  4908. PCWSTR MethodSignature,
  4909. const unsigned short ClrInstanceID)
  4910. {
  4911. if (!EventPipeEventEnabledMethodJittingStarted_V1())
  4912. return ERROR_SUCCESS;
  4913.  
  4914. char stackBuffer[218];
  4915. char *buffer = stackBuffer;
  4916. unsigned int offset = 0;
  4917. unsigned int size = 218;
  4918. bool fixedBuffer = true;
  4919.  
  4920. bool success = true;
  4921. success &= WriteToBuffer(MethodID, buffer, offset, size, fixedBuffer);
  4922. success &= WriteToBuffer(ModuleID, buffer, offset, size, fixedBuffer);
  4923. success &= WriteToBuffer(MethodToken, buffer, offset, size, fixedBuffer);
  4924. success &= WriteToBuffer(MethodILSize, buffer, offset, size, fixedBuffer);
  4925. success &= WriteToBuffer(MethodNamespace, buffer, offset, size, fixedBuffer);
  4926. success &= WriteToBuffer(MethodName, buffer, offset, size, fixedBuffer);
  4927. success &= WriteToBuffer(MethodSignature, buffer, offset, size, fixedBuffer);
  4928. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  4929.  
  4930. if (!success)
  4931. {
  4932. if (!fixedBuffer)
  4933. delete[] buffer;
  4934. return ERROR_WRITE_FAULT;
  4935. }
  4936.  
  4937. EventPipe::WriteEvent(*EventPipeEventMethodJittingStarted_V1, (BYTE *)buffer, offset);
  4938.  
  4939. if (!fixedBuffer)
  4940. delete[] buffer;
  4941.  
  4942. return ERROR_SUCCESS;
  4943. }
  4944.  
  4945. bool EventPipeEventEnabledMethodJitInliningSucceeded()
  4946. {
  4947. return EventPipeEventMethodJitInliningSucceeded->IsEnabled();
  4948. }
  4949.  
  4950. extern "C" ULONG EventPipeWriteEventMethodJitInliningSucceeded(
  4951. PCWSTR MethodBeingCompiledNamespace,
  4952. PCWSTR MethodBeingCompiledName,
  4953. PCWSTR MethodBeingCompiledNameSignature,
  4954. PCWSTR InlinerNamespace,
  4955. PCWSTR InlinerName,
  4956. PCWSTR InlinerNameSignature,
  4957. PCWSTR InlineeNamespace,
  4958. PCWSTR InlineeName,
  4959. PCWSTR InlineeNameSignature,
  4960. const unsigned short ClrInstanceID)
  4961. {
  4962. if (!EventPipeEventEnabledMethodJitInliningSucceeded())
  4963. return ERROR_SUCCESS;
  4964.  
  4965. char stackBuffer[578];
  4966. char *buffer = stackBuffer;
  4967. unsigned int offset = 0;
  4968. unsigned int size = 578;
  4969. bool fixedBuffer = true;
  4970.  
  4971. bool success = true;
  4972. success &= WriteToBuffer(MethodBeingCompiledNamespace, buffer, offset, size, fixedBuffer);
  4973. success &= WriteToBuffer(MethodBeingCompiledName, buffer, offset, size, fixedBuffer);
  4974. success &= WriteToBuffer(MethodBeingCompiledNameSignature, buffer, offset, size, fixedBuffer);
  4975. success &= WriteToBuffer(InlinerNamespace, buffer, offset, size, fixedBuffer);
  4976. success &= WriteToBuffer(InlinerName, buffer, offset, size, fixedBuffer);
  4977. success &= WriteToBuffer(InlinerNameSignature, buffer, offset, size, fixedBuffer);
  4978. success &= WriteToBuffer(InlineeNamespace, buffer, offset, size, fixedBuffer);
  4979. success &= WriteToBuffer(InlineeName, buffer, offset, size, fixedBuffer);
  4980. success &= WriteToBuffer(InlineeNameSignature, buffer, offset, size, fixedBuffer);
  4981. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  4982.  
  4983. if (!success)
  4984. {
  4985. if (!fixedBuffer)
  4986. delete[] buffer;
  4987. return ERROR_WRITE_FAULT;
  4988. }
  4989.  
  4990. EventPipe::WriteEvent(*EventPipeEventMethodJitInliningSucceeded, (BYTE *)buffer, offset);
  4991.  
  4992. if (!fixedBuffer)
  4993. delete[] buffer;
  4994.  
  4995. return ERROR_SUCCESS;
  4996. }
  4997.  
  4998. bool EventPipeEventEnabledMethodJitInliningFailed()
  4999. {
  5000. return EventPipeEventMethodJitInliningFailed->IsEnabled();
  5001. }
  5002.  
  5003. extern "C" ULONG EventPipeWriteEventMethodJitInliningFailed(
  5004. PCWSTR MethodBeingCompiledNamespace,
  5005. PCWSTR MethodBeingCompiledName,
  5006. PCWSTR MethodBeingCompiledNameSignature,
  5007. PCWSTR InlinerNamespace,
  5008. PCWSTR InlinerName,
  5009. PCWSTR InlinerNameSignature,
  5010. PCWSTR InlineeNamespace,
  5011. PCWSTR InlineeName,
  5012. PCWSTR InlineeNameSignature,
  5013. const BOOL FailAlways,
  5014. LPCSTR FailReason,
  5015. const unsigned short ClrInstanceID)
  5016. {
  5017. if (!EventPipeEventEnabledMethodJitInliningFailed())
  5018. return ERROR_SUCCESS;
  5019.  
  5020. char stackBuffer[614];
  5021. char *buffer = stackBuffer;
  5022. unsigned int offset = 0;
  5023. unsigned int size = 614;
  5024. bool fixedBuffer = true;
  5025.  
  5026. bool success = true;
  5027. success &= WriteToBuffer(MethodBeingCompiledNamespace, buffer, offset, size, fixedBuffer);
  5028. success &= WriteToBuffer(MethodBeingCompiledName, buffer, offset, size, fixedBuffer);
  5029. success &= WriteToBuffer(MethodBeingCompiledNameSignature, buffer, offset, size, fixedBuffer);
  5030. success &= WriteToBuffer(InlinerNamespace, buffer, offset, size, fixedBuffer);
  5031. success &= WriteToBuffer(InlinerName, buffer, offset, size, fixedBuffer);
  5032. success &= WriteToBuffer(InlinerNameSignature, buffer, offset, size, fixedBuffer);
  5033. success &= WriteToBuffer(InlineeNamespace, buffer, offset, size, fixedBuffer);
  5034. success &= WriteToBuffer(InlineeName, buffer, offset, size, fixedBuffer);
  5035. success &= WriteToBuffer(InlineeNameSignature, buffer, offset, size, fixedBuffer);
  5036. success &= WriteToBuffer(FailAlways, buffer, offset, size, fixedBuffer);
  5037. success &= WriteToBuffer(FailReason, buffer, offset, size, fixedBuffer);
  5038. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  5039.  
  5040. if (!success)
  5041. {
  5042. if (!fixedBuffer)
  5043. delete[] buffer;
  5044. return ERROR_WRITE_FAULT;
  5045. }
  5046.  
  5047. EventPipe::WriteEvent(*EventPipeEventMethodJitInliningFailed, (BYTE *)buffer, offset);
  5048.  
  5049. if (!fixedBuffer)
  5050. delete[] buffer;
  5051.  
  5052. return ERROR_SUCCESS;
  5053. }
  5054.  
  5055. bool EventPipeEventEnabledMethodJitTailCallSucceeded()
  5056. {
  5057. return EventPipeEventMethodJitTailCallSucceeded->IsEnabled();
  5058. }
  5059.  
  5060. extern "C" ULONG EventPipeWriteEventMethodJitTailCallSucceeded(
  5061. PCWSTR MethodBeingCompiledNamespace,
  5062. PCWSTR MethodBeingCompiledName,
  5063. PCWSTR MethodBeingCompiledNameSignature,
  5064. PCWSTR CallerNamespace,
  5065. PCWSTR CallerName,
  5066. PCWSTR CallerNameSignature,
  5067. PCWSTR CalleeNamespace,
  5068. PCWSTR CalleeName,
  5069. PCWSTR CalleeNameSignature,
  5070. const BOOL TailPrefix,
  5071. const unsigned int TailCallType,
  5072. const unsigned short ClrInstanceID)
  5073. {
  5074. if (!EventPipeEventEnabledMethodJitTailCallSucceeded())
  5075. return ERROR_SUCCESS;
  5076.  
  5077. char stackBuffer[586];
  5078. char *buffer = stackBuffer;
  5079. unsigned int offset = 0;
  5080. unsigned int size = 586;
  5081. bool fixedBuffer = true;
  5082.  
  5083. bool success = true;
  5084. success &= WriteToBuffer(MethodBeingCompiledNamespace, buffer, offset, size, fixedBuffer);
  5085. success &= WriteToBuffer(MethodBeingCompiledName, buffer, offset, size, fixedBuffer);
  5086. success &= WriteToBuffer(MethodBeingCompiledNameSignature, buffer, offset, size, fixedBuffer);
  5087. success &= WriteToBuffer(CallerNamespace, buffer, offset, size, fixedBuffer);
  5088. success &= WriteToBuffer(CallerName, buffer, offset, size, fixedBuffer);
  5089. success &= WriteToBuffer(CallerNameSignature, buffer, offset, size, fixedBuffer);
  5090. success &= WriteToBuffer(CalleeNamespace, buffer, offset, size, fixedBuffer);
  5091. success &= WriteToBuffer(CalleeName, buffer, offset, size, fixedBuffer);
  5092. success &= WriteToBuffer(CalleeNameSignature, buffer, offset, size, fixedBuffer);
  5093. success &= WriteToBuffer(TailPrefix, buffer, offset, size, fixedBuffer);
  5094. success &= WriteToBuffer(TailCallType, buffer, offset, size, fixedBuffer);
  5095. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  5096.  
  5097. if (!success)
  5098. {
  5099. if (!fixedBuffer)
  5100. delete[] buffer;
  5101. return ERROR_WRITE_FAULT;
  5102. }
  5103.  
  5104. EventPipe::WriteEvent(*EventPipeEventMethodJitTailCallSucceeded, (BYTE *)buffer, offset);
  5105.  
  5106. if (!fixedBuffer)
  5107. delete[] buffer;
  5108.  
  5109. return ERROR_SUCCESS;
  5110. }
  5111.  
  5112. bool EventPipeEventEnabledMethodJitTailCallFailed()
  5113. {
  5114. return EventPipeEventMethodJitTailCallFailed->IsEnabled();
  5115. }
  5116.  
  5117. extern "C" ULONG EventPipeWriteEventMethodJitTailCallFailed(
  5118. PCWSTR MethodBeingCompiledNamespace,
  5119. PCWSTR MethodBeingCompiledName,
  5120. PCWSTR MethodBeingCompiledNameSignature,
  5121. PCWSTR CallerNamespace,
  5122. PCWSTR CallerName,
  5123. PCWSTR CallerNameSignature,
  5124. PCWSTR CalleeNamespace,
  5125. PCWSTR CalleeName,
  5126. PCWSTR CalleeNameSignature,
  5127. const BOOL TailPrefix,
  5128. LPCSTR FailReason,
  5129. const unsigned short ClrInstanceID)
  5130. {
  5131. if (!EventPipeEventEnabledMethodJitTailCallFailed())
  5132. return ERROR_SUCCESS;
  5133.  
  5134. char stackBuffer[614];
  5135. char *buffer = stackBuffer;
  5136. unsigned int offset = 0;
  5137. unsigned int size = 614;
  5138. bool fixedBuffer = true;
  5139.  
  5140. bool success = true;
  5141. success &= WriteToBuffer(MethodBeingCompiledNamespace, buffer, offset, size, fixedBuffer);
  5142. success &= WriteToBuffer(MethodBeingCompiledName, buffer, offset, size, fixedBuffer);
  5143. success &= WriteToBuffer(MethodBeingCompiledNameSignature, buffer, offset, size, fixedBuffer);
  5144. success &= WriteToBuffer(CallerNamespace, buffer, offset, size, fixedBuffer);
  5145. success &= WriteToBuffer(CallerName, buffer, offset, size, fixedBuffer);
  5146. success &= WriteToBuffer(CallerNameSignature, buffer, offset, size, fixedBuffer);
  5147. success &= WriteToBuffer(CalleeNamespace, buffer, offset, size, fixedBuffer);
  5148. success &= WriteToBuffer(CalleeName, buffer, offset, size, fixedBuffer);
  5149. success &= WriteToBuffer(CalleeNameSignature, buffer, offset, size, fixedBuffer);
  5150. success &= WriteToBuffer(TailPrefix, buffer, offset, size, fixedBuffer);
  5151. success &= WriteToBuffer(FailReason, buffer, offset, size, fixedBuffer);
  5152. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  5153.  
  5154. if (!success)
  5155. {
  5156. if (!fixedBuffer)
  5157. delete[] buffer;
  5158. return ERROR_WRITE_FAULT;
  5159. }
  5160.  
  5161. EventPipe::WriteEvent(*EventPipeEventMethodJitTailCallFailed, (BYTE *)buffer, offset);
  5162.  
  5163. if (!fixedBuffer)
  5164. delete[] buffer;
  5165.  
  5166. return ERROR_SUCCESS;
  5167. }
  5168.  
  5169. bool EventPipeEventEnabledMethodILToNativeMap()
  5170. {
  5171. return EventPipeEventMethodILToNativeMap->IsEnabled();
  5172. }
  5173.  
  5174. extern "C" ULONG EventPipeWriteEventMethodILToNativeMap(
  5175. const unsigned __int64 MethodID,
  5176. const unsigned __int64 ReJITID,
  5177. const unsigned char MethodExtent,
  5178. const unsigned short CountOfMapEntries,
  5179. const unsigned int* ILOffsets,
  5180. const unsigned int* NativeOffsets,
  5181. const unsigned short ClrInstanceID)
  5182. {
  5183. if (!EventPipeEventEnabledMethodILToNativeMap())
  5184. return ERROR_SUCCESS;
  5185.  
  5186. char stackBuffer[32];
  5187. char *buffer = stackBuffer;
  5188. unsigned int offset = 0;
  5189. unsigned int size = 32;
  5190. bool fixedBuffer = true;
  5191.  
  5192. bool success = true;
  5193. success &= WriteToBuffer(MethodID, buffer, offset, size, fixedBuffer);
  5194. success &= WriteToBuffer(ReJITID, buffer, offset, size, fixedBuffer);
  5195. success &= WriteToBuffer(MethodExtent, buffer, offset, size, fixedBuffer);
  5196. success &= WriteToBuffer(CountOfMapEntries, buffer, offset, size, fixedBuffer);
  5197. success &= WriteToBuffer((const BYTE *)ILOffsets, sizeof(const unsigned int) * (int)CountOfMapEntries, buffer, offset, size, fixedBuffer);
  5198. success &= WriteToBuffer((const BYTE *)NativeOffsets, sizeof(const unsigned int) * (int)CountOfMapEntries, buffer, offset, size, fixedBuffer);
  5199. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  5200.  
  5201. if (!success)
  5202. {
  5203. if (!fixedBuffer)
  5204. delete[] buffer;
  5205. return ERROR_WRITE_FAULT;
  5206. }
  5207.  
  5208. EventPipe::WriteEvent(*EventPipeEventMethodILToNativeMap, (BYTE *)buffer, offset);
  5209.  
  5210. if (!fixedBuffer)
  5211. delete[] buffer;
  5212.  
  5213. return ERROR_SUCCESS;
  5214. }
  5215.  
  5216. bool EventPipeEventEnabledModuleDCStartV2()
  5217. {
  5218. return EventPipeEventModuleDCStartV2->IsEnabled();
  5219. }
  5220.  
  5221. extern "C" ULONG EventPipeWriteEventModuleDCStartV2(
  5222. const unsigned __int64 ModuleID,
  5223. const unsigned __int64 AssemblyID,
  5224. const unsigned int ModuleFlags,
  5225. const unsigned int Reserved1,
  5226. PCWSTR ModuleILPath,
  5227. PCWSTR ModuleNativePath)
  5228. {
  5229. if (!EventPipeEventEnabledModuleDCStartV2())
  5230. return ERROR_SUCCESS;
  5231.  
  5232. char stackBuffer[152];
  5233. char *buffer = stackBuffer;
  5234. unsigned int offset = 0;
  5235. unsigned int size = 152;
  5236. bool fixedBuffer = true;
  5237.  
  5238. bool success = true;
  5239. success &= WriteToBuffer(ModuleID, buffer, offset, size, fixedBuffer);
  5240. success &= WriteToBuffer(AssemblyID, buffer, offset, size, fixedBuffer);
  5241. success &= WriteToBuffer(ModuleFlags, buffer, offset, size, fixedBuffer);
  5242. success &= WriteToBuffer(Reserved1, buffer, offset, size, fixedBuffer);
  5243. success &= WriteToBuffer(ModuleILPath, buffer, offset, size, fixedBuffer);
  5244. success &= WriteToBuffer(ModuleNativePath, buffer, offset, size, fixedBuffer);
  5245.  
  5246. if (!success)
  5247. {
  5248. if (!fixedBuffer)
  5249. delete[] buffer;
  5250. return ERROR_WRITE_FAULT;
  5251. }
  5252.  
  5253. EventPipe::WriteEvent(*EventPipeEventModuleDCStartV2, (BYTE *)buffer, offset);
  5254.  
  5255. if (!fixedBuffer)
  5256. delete[] buffer;
  5257.  
  5258. return ERROR_SUCCESS;
  5259. }
  5260.  
  5261. bool EventPipeEventEnabledModuleDCEndV2()
  5262. {
  5263. return EventPipeEventModuleDCEndV2->IsEnabled();
  5264. }
  5265.  
  5266. extern "C" ULONG EventPipeWriteEventModuleDCEndV2(
  5267. const unsigned __int64 ModuleID,
  5268. const unsigned __int64 AssemblyID,
  5269. const unsigned int ModuleFlags,
  5270. const unsigned int Reserved1,
  5271. PCWSTR ModuleILPath,
  5272. PCWSTR ModuleNativePath)
  5273. {
  5274. if (!EventPipeEventEnabledModuleDCEndV2())
  5275. return ERROR_SUCCESS;
  5276.  
  5277. char stackBuffer[152];
  5278. char *buffer = stackBuffer;
  5279. unsigned int offset = 0;
  5280. unsigned int size = 152;
  5281. bool fixedBuffer = true;
  5282.  
  5283. bool success = true;
  5284. success &= WriteToBuffer(ModuleID, buffer, offset, size, fixedBuffer);
  5285. success &= WriteToBuffer(AssemblyID, buffer, offset, size, fixedBuffer);
  5286. success &= WriteToBuffer(ModuleFlags, buffer, offset, size, fixedBuffer);
  5287. success &= WriteToBuffer(Reserved1, buffer, offset, size, fixedBuffer);
  5288. success &= WriteToBuffer(ModuleILPath, buffer, offset, size, fixedBuffer);
  5289. success &= WriteToBuffer(ModuleNativePath, buffer, offset, size, fixedBuffer);
  5290.  
  5291. if (!success)
  5292. {
  5293. if (!fixedBuffer)
  5294. delete[] buffer;
  5295. return ERROR_WRITE_FAULT;
  5296. }
  5297.  
  5298. EventPipe::WriteEvent(*EventPipeEventModuleDCEndV2, (BYTE *)buffer, offset);
  5299.  
  5300. if (!fixedBuffer)
  5301. delete[] buffer;
  5302.  
  5303. return ERROR_SUCCESS;
  5304. }
  5305.  
  5306. bool EventPipeEventEnabledDomainModuleLoad()
  5307. {
  5308. return EventPipeEventDomainModuleLoad->IsEnabled();
  5309. }
  5310.  
  5311. extern "C" ULONG EventPipeWriteEventDomainModuleLoad(
  5312. const unsigned __int64 ModuleID,
  5313. const unsigned __int64 AssemblyID,
  5314. const unsigned __int64 AppDomainID,
  5315. const unsigned int ModuleFlags,
  5316. const unsigned int Reserved1,
  5317. PCWSTR ModuleILPath,
  5318. PCWSTR ModuleNativePath)
  5319. {
  5320. if (!EventPipeEventEnabledDomainModuleLoad())
  5321. return ERROR_SUCCESS;
  5322.  
  5323. char stackBuffer[160];
  5324. char *buffer = stackBuffer;
  5325. unsigned int offset = 0;
  5326. unsigned int size = 160;
  5327. bool fixedBuffer = true;
  5328.  
  5329. bool success = true;
  5330. success &= WriteToBuffer(ModuleID, buffer, offset, size, fixedBuffer);
  5331. success &= WriteToBuffer(AssemblyID, buffer, offset, size, fixedBuffer);
  5332. success &= WriteToBuffer(AppDomainID, buffer, offset, size, fixedBuffer);
  5333. success &= WriteToBuffer(ModuleFlags, buffer, offset, size, fixedBuffer);
  5334. success &= WriteToBuffer(Reserved1, buffer, offset, size, fixedBuffer);
  5335. success &= WriteToBuffer(ModuleILPath, buffer, offset, size, fixedBuffer);
  5336. success &= WriteToBuffer(ModuleNativePath, buffer, offset, size, fixedBuffer);
  5337.  
  5338. if (!success)
  5339. {
  5340. if (!fixedBuffer)
  5341. delete[] buffer;
  5342. return ERROR_WRITE_FAULT;
  5343. }
  5344.  
  5345. EventPipe::WriteEvent(*EventPipeEventDomainModuleLoad, (BYTE *)buffer, offset);
  5346.  
  5347. if (!fixedBuffer)
  5348. delete[] buffer;
  5349.  
  5350. return ERROR_SUCCESS;
  5351. }
  5352.  
  5353. bool EventPipeEventEnabledDomainModuleLoad_V1()
  5354. {
  5355. return EventPipeEventDomainModuleLoad_V1->IsEnabled();
  5356. }
  5357.  
  5358. extern "C" ULONG EventPipeWriteEventDomainModuleLoad_V1(
  5359. const unsigned __int64 ModuleID,
  5360. const unsigned __int64 AssemblyID,
  5361. const unsigned __int64 AppDomainID,
  5362. const unsigned int ModuleFlags,
  5363. const unsigned int Reserved1,
  5364. PCWSTR ModuleILPath,
  5365. PCWSTR ModuleNativePath,
  5366. const unsigned short ClrInstanceID)
  5367. {
  5368. if (!EventPipeEventEnabledDomainModuleLoad_V1())
  5369. return ERROR_SUCCESS;
  5370.  
  5371. char stackBuffer[162];
  5372. char *buffer = stackBuffer;
  5373. unsigned int offset = 0;
  5374. unsigned int size = 162;
  5375. bool fixedBuffer = true;
  5376.  
  5377. bool success = true;
  5378. success &= WriteToBuffer(ModuleID, buffer, offset, size, fixedBuffer);
  5379. success &= WriteToBuffer(AssemblyID, buffer, offset, size, fixedBuffer);
  5380. success &= WriteToBuffer(AppDomainID, buffer, offset, size, fixedBuffer);
  5381. success &= WriteToBuffer(ModuleFlags, buffer, offset, size, fixedBuffer);
  5382. success &= WriteToBuffer(Reserved1, buffer, offset, size, fixedBuffer);
  5383. success &= WriteToBuffer(ModuleILPath, buffer, offset, size, fixedBuffer);
  5384. success &= WriteToBuffer(ModuleNativePath, buffer, offset, size, fixedBuffer);
  5385. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  5386.  
  5387. if (!success)
  5388. {
  5389. if (!fixedBuffer)
  5390. delete[] buffer;
  5391. return ERROR_WRITE_FAULT;
  5392. }
  5393.  
  5394. EventPipe::WriteEvent(*EventPipeEventDomainModuleLoad_V1, (BYTE *)buffer, offset);
  5395.  
  5396. if (!fixedBuffer)
  5397. delete[] buffer;
  5398.  
  5399. return ERROR_SUCCESS;
  5400. }
  5401.  
  5402. bool EventPipeEventEnabledModuleLoad()
  5403. {
  5404. return EventPipeEventModuleLoad->IsEnabled();
  5405. }
  5406.  
  5407. extern "C" ULONG EventPipeWriteEventModuleLoad(
  5408. const unsigned __int64 ModuleID,
  5409. const unsigned __int64 AssemblyID,
  5410. const unsigned int ModuleFlags,
  5411. const unsigned int Reserved1,
  5412. PCWSTR ModuleILPath,
  5413. PCWSTR ModuleNativePath)
  5414. {
  5415. if (!EventPipeEventEnabledModuleLoad())
  5416. return ERROR_SUCCESS;
  5417.  
  5418. char stackBuffer[152];
  5419. char *buffer = stackBuffer;
  5420. unsigned int offset = 0;
  5421. unsigned int size = 152;
  5422. bool fixedBuffer = true;
  5423.  
  5424. bool success = true;
  5425. success &= WriteToBuffer(ModuleID, buffer, offset, size, fixedBuffer);
  5426. success &= WriteToBuffer(AssemblyID, buffer, offset, size, fixedBuffer);
  5427. success &= WriteToBuffer(ModuleFlags, buffer, offset, size, fixedBuffer);
  5428. success &= WriteToBuffer(Reserved1, buffer, offset, size, fixedBuffer);
  5429. success &= WriteToBuffer(ModuleILPath, buffer, offset, size, fixedBuffer);
  5430. success &= WriteToBuffer(ModuleNativePath, buffer, offset, size, fixedBuffer);
  5431.  
  5432. if (!success)
  5433. {
  5434. if (!fixedBuffer)
  5435. delete[] buffer;
  5436. return ERROR_WRITE_FAULT;
  5437. }
  5438.  
  5439. EventPipe::WriteEvent(*EventPipeEventModuleLoad, (BYTE *)buffer, offset);
  5440.  
  5441. if (!fixedBuffer)
  5442. delete[] buffer;
  5443.  
  5444. return ERROR_SUCCESS;
  5445. }
  5446.  
  5447. bool EventPipeEventEnabledModuleLoad_V1()
  5448. {
  5449. return EventPipeEventModuleLoad_V1->IsEnabled();
  5450. }
  5451.  
  5452. extern "C" ULONG EventPipeWriteEventModuleLoad_V1(
  5453. const unsigned __int64 ModuleID,
  5454. const unsigned __int64 AssemblyID,
  5455. const unsigned int ModuleFlags,
  5456. const unsigned int Reserved1,
  5457. PCWSTR ModuleILPath,
  5458. PCWSTR ModuleNativePath,
  5459. const unsigned short ClrInstanceID)
  5460. {
  5461. if (!EventPipeEventEnabledModuleLoad_V1())
  5462. return ERROR_SUCCESS;
  5463.  
  5464. char stackBuffer[154];
  5465. char *buffer = stackBuffer;
  5466. unsigned int offset = 0;
  5467. unsigned int size = 154;
  5468. bool fixedBuffer = true;
  5469.  
  5470. bool success = true;
  5471. success &= WriteToBuffer(ModuleID, buffer, offset, size, fixedBuffer);
  5472. success &= WriteToBuffer(AssemblyID, buffer, offset, size, fixedBuffer);
  5473. success &= WriteToBuffer(ModuleFlags, buffer, offset, size, fixedBuffer);
  5474. success &= WriteToBuffer(Reserved1, buffer, offset, size, fixedBuffer);
  5475. success &= WriteToBuffer(ModuleILPath, buffer, offset, size, fixedBuffer);
  5476. success &= WriteToBuffer(ModuleNativePath, buffer, offset, size, fixedBuffer);
  5477. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  5478.  
  5479. if (!success)
  5480. {
  5481. if (!fixedBuffer)
  5482. delete[] buffer;
  5483. return ERROR_WRITE_FAULT;
  5484. }
  5485.  
  5486. EventPipe::WriteEvent(*EventPipeEventModuleLoad_V1, (BYTE *)buffer, offset);
  5487.  
  5488. if (!fixedBuffer)
  5489. delete[] buffer;
  5490.  
  5491. return ERROR_SUCCESS;
  5492. }
  5493.  
  5494. bool EventPipeEventEnabledModuleLoad_V2()
  5495. {
  5496. return EventPipeEventModuleLoad_V2->IsEnabled();
  5497. }
  5498.  
  5499. extern "C" ULONG EventPipeWriteEventModuleLoad_V2(
  5500. const unsigned __int64 ModuleID,
  5501. const unsigned __int64 AssemblyID,
  5502. const unsigned int ModuleFlags,
  5503. const unsigned int Reserved1,
  5504. PCWSTR ModuleILPath,
  5505. PCWSTR ModuleNativePath,
  5506. const unsigned short ClrInstanceID,
  5507. const GUID* ManagedPdbSignature,
  5508. const unsigned int ManagedPdbAge,
  5509. PCWSTR ManagedPdbBuildPath,
  5510. const GUID* NativePdbSignature,
  5511. const unsigned int NativePdbAge,
  5512. PCWSTR NativePdbBuildPath)
  5513. {
  5514. if (!EventPipeEventEnabledModuleLoad_V2())
  5515. return ERROR_SUCCESS;
  5516.  
  5517. char stackBuffer[290];
  5518. char *buffer = stackBuffer;
  5519. unsigned int offset = 0;
  5520. unsigned int size = 290;
  5521. bool fixedBuffer = true;
  5522.  
  5523. bool success = true;
  5524. success &= WriteToBuffer(ModuleID, buffer, offset, size, fixedBuffer);
  5525. success &= WriteToBuffer(AssemblyID, buffer, offset, size, fixedBuffer);
  5526. success &= WriteToBuffer(ModuleFlags, buffer, offset, size, fixedBuffer);
  5527. success &= WriteToBuffer(Reserved1, buffer, offset, size, fixedBuffer);
  5528. success &= WriteToBuffer(ModuleILPath, buffer, offset, size, fixedBuffer);
  5529. success &= WriteToBuffer(ModuleNativePath, buffer, offset, size, fixedBuffer);
  5530. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  5531. success &= WriteToBuffer(*ManagedPdbSignature, buffer, offset, size, fixedBuffer);
  5532. success &= WriteToBuffer(ManagedPdbAge, buffer, offset, size, fixedBuffer);
  5533. success &= WriteToBuffer(ManagedPdbBuildPath, buffer, offset, size, fixedBuffer);
  5534. success &= WriteToBuffer(*NativePdbSignature, buffer, offset, size, fixedBuffer);
  5535. success &= WriteToBuffer(NativePdbAge, buffer, offset, size, fixedBuffer);
  5536. success &= WriteToBuffer(NativePdbBuildPath, buffer, offset, size, fixedBuffer);
  5537.  
  5538. if (!success)
  5539. {
  5540. if (!fixedBuffer)
  5541. delete[] buffer;
  5542. return ERROR_WRITE_FAULT;
  5543. }
  5544.  
  5545. EventPipe::WriteEvent(*EventPipeEventModuleLoad_V2, (BYTE *)buffer, offset);
  5546.  
  5547. if (!fixedBuffer)
  5548. delete[] buffer;
  5549.  
  5550. return ERROR_SUCCESS;
  5551. }
  5552.  
  5553. bool EventPipeEventEnabledModuleUnload()
  5554. {
  5555. return EventPipeEventModuleUnload->IsEnabled();
  5556. }
  5557.  
  5558. extern "C" ULONG EventPipeWriteEventModuleUnload(
  5559. const unsigned __int64 ModuleID,
  5560. const unsigned __int64 AssemblyID,
  5561. const unsigned int ModuleFlags,
  5562. const unsigned int Reserved1,
  5563. PCWSTR ModuleILPath,
  5564. PCWSTR ModuleNativePath)
  5565. {
  5566. if (!EventPipeEventEnabledModuleUnload())
  5567. return ERROR_SUCCESS;
  5568.  
  5569. char stackBuffer[152];
  5570. char *buffer = stackBuffer;
  5571. unsigned int offset = 0;
  5572. unsigned int size = 152;
  5573. bool fixedBuffer = true;
  5574.  
  5575. bool success = true;
  5576. success &= WriteToBuffer(ModuleID, buffer, offset, size, fixedBuffer);
  5577. success &= WriteToBuffer(AssemblyID, buffer, offset, size, fixedBuffer);
  5578. success &= WriteToBuffer(ModuleFlags, buffer, offset, size, fixedBuffer);
  5579. success &= WriteToBuffer(Reserved1, buffer, offset, size, fixedBuffer);
  5580. success &= WriteToBuffer(ModuleILPath, buffer, offset, size, fixedBuffer);
  5581. success &= WriteToBuffer(ModuleNativePath, buffer, offset, size, fixedBuffer);
  5582.  
  5583. if (!success)
  5584. {
  5585. if (!fixedBuffer)
  5586. delete[] buffer;
  5587. return ERROR_WRITE_FAULT;
  5588. }
  5589.  
  5590. EventPipe::WriteEvent(*EventPipeEventModuleUnload, (BYTE *)buffer, offset);
  5591.  
  5592. if (!fixedBuffer)
  5593. delete[] buffer;
  5594.  
  5595. return ERROR_SUCCESS;
  5596. }
  5597.  
  5598. bool EventPipeEventEnabledModuleUnload_V1()
  5599. {
  5600. return EventPipeEventModuleUnload_V1->IsEnabled();
  5601. }
  5602.  
  5603. extern "C" ULONG EventPipeWriteEventModuleUnload_V1(
  5604. const unsigned __int64 ModuleID,
  5605. const unsigned __int64 AssemblyID,
  5606. const unsigned int ModuleFlags,
  5607. const unsigned int Reserved1,
  5608. PCWSTR ModuleILPath,
  5609. PCWSTR ModuleNativePath,
  5610. const unsigned short ClrInstanceID)
  5611. {
  5612. if (!EventPipeEventEnabledModuleUnload_V1())
  5613. return ERROR_SUCCESS;
  5614.  
  5615. char stackBuffer[154];
  5616. char *buffer = stackBuffer;
  5617. unsigned int offset = 0;
  5618. unsigned int size = 154;
  5619. bool fixedBuffer = true;
  5620.  
  5621. bool success = true;
  5622. success &= WriteToBuffer(ModuleID, buffer, offset, size, fixedBuffer);
  5623. success &= WriteToBuffer(AssemblyID, buffer, offset, size, fixedBuffer);
  5624. success &= WriteToBuffer(ModuleFlags, buffer, offset, size, fixedBuffer);
  5625. success &= WriteToBuffer(Reserved1, buffer, offset, size, fixedBuffer);
  5626. success &= WriteToBuffer(ModuleILPath, buffer, offset, size, fixedBuffer);
  5627. success &= WriteToBuffer(ModuleNativePath, buffer, offset, size, fixedBuffer);
  5628. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  5629.  
  5630. if (!success)
  5631. {
  5632. if (!fixedBuffer)
  5633. delete[] buffer;
  5634. return ERROR_WRITE_FAULT;
  5635. }
  5636.  
  5637. EventPipe::WriteEvent(*EventPipeEventModuleUnload_V1, (BYTE *)buffer, offset);
  5638.  
  5639. if (!fixedBuffer)
  5640. delete[] buffer;
  5641.  
  5642. return ERROR_SUCCESS;
  5643. }
  5644.  
  5645. bool EventPipeEventEnabledModuleUnload_V2()
  5646. {
  5647. return EventPipeEventModuleUnload_V2->IsEnabled();
  5648. }
  5649.  
  5650. extern "C" ULONG EventPipeWriteEventModuleUnload_V2(
  5651. const unsigned __int64 ModuleID,
  5652. const unsigned __int64 AssemblyID,
  5653. const unsigned int ModuleFlags,
  5654. const unsigned int Reserved1,
  5655. PCWSTR ModuleILPath,
  5656. PCWSTR ModuleNativePath,
  5657. const unsigned short ClrInstanceID,
  5658. const GUID* ManagedPdbSignature,
  5659. const unsigned int ManagedPdbAge,
  5660. PCWSTR ManagedPdbBuildPath,
  5661. const GUID* NativePdbSignature,
  5662. const unsigned int NativePdbAge,
  5663. PCWSTR NativePdbBuildPath)
  5664. {
  5665. if (!EventPipeEventEnabledModuleUnload_V2())
  5666. return ERROR_SUCCESS;
  5667.  
  5668. char stackBuffer[290];
  5669. char *buffer = stackBuffer;
  5670. unsigned int offset = 0;
  5671. unsigned int size = 290;
  5672. bool fixedBuffer = true;
  5673.  
  5674. bool success = true;
  5675. success &= WriteToBuffer(ModuleID, buffer, offset, size, fixedBuffer);
  5676. success &= WriteToBuffer(AssemblyID, buffer, offset, size, fixedBuffer);
  5677. success &= WriteToBuffer(ModuleFlags, buffer, offset, size, fixedBuffer);
  5678. success &= WriteToBuffer(Reserved1, buffer, offset, size, fixedBuffer);
  5679. success &= WriteToBuffer(ModuleILPath, buffer, offset, size, fixedBuffer);
  5680. success &= WriteToBuffer(ModuleNativePath, buffer, offset, size, fixedBuffer);
  5681. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  5682. success &= WriteToBuffer(*ManagedPdbSignature, buffer, offset, size, fixedBuffer);
  5683. success &= WriteToBuffer(ManagedPdbAge, buffer, offset, size, fixedBuffer);
  5684. success &= WriteToBuffer(ManagedPdbBuildPath, buffer, offset, size, fixedBuffer);
  5685. success &= WriteToBuffer(*NativePdbSignature, buffer, offset, size, fixedBuffer);
  5686. success &= WriteToBuffer(NativePdbAge, buffer, offset, size, fixedBuffer);
  5687. success &= WriteToBuffer(NativePdbBuildPath, buffer, offset, size, fixedBuffer);
  5688.  
  5689. if (!success)
  5690. {
  5691. if (!fixedBuffer)
  5692. delete[] buffer;
  5693. return ERROR_WRITE_FAULT;
  5694. }
  5695.  
  5696. EventPipe::WriteEvent(*EventPipeEventModuleUnload_V2, (BYTE *)buffer, offset);
  5697.  
  5698. if (!fixedBuffer)
  5699. delete[] buffer;
  5700.  
  5701. return ERROR_SUCCESS;
  5702. }
  5703.  
  5704. bool EventPipeEventEnabledAssemblyLoad()
  5705. {
  5706. return EventPipeEventAssemblyLoad->IsEnabled();
  5707. }
  5708.  
  5709. extern "C" ULONG EventPipeWriteEventAssemblyLoad(
  5710. const unsigned __int64 AssemblyID,
  5711. const unsigned __int64 AppDomainID,
  5712. const unsigned int AssemblyFlags,
  5713. PCWSTR FullyQualifiedAssemblyName)
  5714. {
  5715. if (!EventPipeEventEnabledAssemblyLoad())
  5716. return ERROR_SUCCESS;
  5717.  
  5718. char stackBuffer[84];
  5719. char *buffer = stackBuffer;
  5720. unsigned int offset = 0;
  5721. unsigned int size = 84;
  5722. bool fixedBuffer = true;
  5723.  
  5724. bool success = true;
  5725. success &= WriteToBuffer(AssemblyID, buffer, offset, size, fixedBuffer);
  5726. success &= WriteToBuffer(AppDomainID, buffer, offset, size, fixedBuffer);
  5727. success &= WriteToBuffer(AssemblyFlags, buffer, offset, size, fixedBuffer);
  5728. success &= WriteToBuffer(FullyQualifiedAssemblyName, buffer, offset, size, fixedBuffer);
  5729.  
  5730. if (!success)
  5731. {
  5732. if (!fixedBuffer)
  5733. delete[] buffer;
  5734. return ERROR_WRITE_FAULT;
  5735. }
  5736.  
  5737. EventPipe::WriteEvent(*EventPipeEventAssemblyLoad, (BYTE *)buffer, offset);
  5738.  
  5739. if (!fixedBuffer)
  5740. delete[] buffer;
  5741.  
  5742. return ERROR_SUCCESS;
  5743. }
  5744.  
  5745. bool EventPipeEventEnabledAssemblyLoad_V1()
  5746. {
  5747. return EventPipeEventAssemblyLoad_V1->IsEnabled();
  5748. }
  5749.  
  5750. extern "C" ULONG EventPipeWriteEventAssemblyLoad_V1(
  5751. const unsigned __int64 AssemblyID,
  5752. const unsigned __int64 AppDomainID,
  5753. const unsigned __int64 BindingID,
  5754. const unsigned int AssemblyFlags,
  5755. PCWSTR FullyQualifiedAssemblyName,
  5756. const unsigned short ClrInstanceID)
  5757. {
  5758. if (!EventPipeEventEnabledAssemblyLoad_V1())
  5759. return ERROR_SUCCESS;
  5760.  
  5761. char stackBuffer[94];
  5762. char *buffer = stackBuffer;
  5763. unsigned int offset = 0;
  5764. unsigned int size = 94;
  5765. bool fixedBuffer = true;
  5766.  
  5767. bool success = true;
  5768. success &= WriteToBuffer(AssemblyID, buffer, offset, size, fixedBuffer);
  5769. success &= WriteToBuffer(AppDomainID, buffer, offset, size, fixedBuffer);
  5770. success &= WriteToBuffer(BindingID, buffer, offset, size, fixedBuffer);
  5771. success &= WriteToBuffer(AssemblyFlags, buffer, offset, size, fixedBuffer);
  5772. success &= WriteToBuffer(FullyQualifiedAssemblyName, buffer, offset, size, fixedBuffer);
  5773. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  5774.  
  5775. if (!success)
  5776. {
  5777. if (!fixedBuffer)
  5778. delete[] buffer;
  5779. return ERROR_WRITE_FAULT;
  5780. }
  5781.  
  5782. EventPipe::WriteEvent(*EventPipeEventAssemblyLoad_V1, (BYTE *)buffer, offset);
  5783.  
  5784. if (!fixedBuffer)
  5785. delete[] buffer;
  5786.  
  5787. return ERROR_SUCCESS;
  5788. }
  5789.  
  5790. bool EventPipeEventEnabledAssemblyUnload()
  5791. {
  5792. return EventPipeEventAssemblyUnload->IsEnabled();
  5793. }
  5794.  
  5795. extern "C" ULONG EventPipeWriteEventAssemblyUnload(
  5796. const unsigned __int64 AssemblyID,
  5797. const unsigned __int64 AppDomainID,
  5798. const unsigned int AssemblyFlags,
  5799. PCWSTR FullyQualifiedAssemblyName)
  5800. {
  5801. if (!EventPipeEventEnabledAssemblyUnload())
  5802. return ERROR_SUCCESS;
  5803.  
  5804. char stackBuffer[84];
  5805. char *buffer = stackBuffer;
  5806. unsigned int offset = 0;
  5807. unsigned int size = 84;
  5808. bool fixedBuffer = true;
  5809.  
  5810. bool success = true;
  5811. success &= WriteToBuffer(AssemblyID, buffer, offset, size, fixedBuffer);
  5812. success &= WriteToBuffer(AppDomainID, buffer, offset, size, fixedBuffer);
  5813. success &= WriteToBuffer(AssemblyFlags, buffer, offset, size, fixedBuffer);
  5814. success &= WriteToBuffer(FullyQualifiedAssemblyName, buffer, offset, size, fixedBuffer);
  5815.  
  5816. if (!success)
  5817. {
  5818. if (!fixedBuffer)
  5819. delete[] buffer;
  5820. return ERROR_WRITE_FAULT;
  5821. }
  5822.  
  5823. EventPipe::WriteEvent(*EventPipeEventAssemblyUnload, (BYTE *)buffer, offset);
  5824.  
  5825. if (!fixedBuffer)
  5826. delete[] buffer;
  5827.  
  5828. return ERROR_SUCCESS;
  5829. }
  5830.  
  5831. bool EventPipeEventEnabledAssemblyUnload_V1()
  5832. {
  5833. return EventPipeEventAssemblyUnload_V1->IsEnabled();
  5834. }
  5835.  
  5836. extern "C" ULONG EventPipeWriteEventAssemblyUnload_V1(
  5837. const unsigned __int64 AssemblyID,
  5838. const unsigned __int64 AppDomainID,
  5839. const unsigned __int64 BindingID,
  5840. const unsigned int AssemblyFlags,
  5841. PCWSTR FullyQualifiedAssemblyName,
  5842. const unsigned short ClrInstanceID)
  5843. {
  5844. if (!EventPipeEventEnabledAssemblyUnload_V1())
  5845. return ERROR_SUCCESS;
  5846.  
  5847. char stackBuffer[94];
  5848. char *buffer = stackBuffer;
  5849. unsigned int offset = 0;
  5850. unsigned int size = 94;
  5851. bool fixedBuffer = true;
  5852.  
  5853. bool success = true;
  5854. success &= WriteToBuffer(AssemblyID, buffer, offset, size, fixedBuffer);
  5855. success &= WriteToBuffer(AppDomainID, buffer, offset, size, fixedBuffer);
  5856. success &= WriteToBuffer(BindingID, buffer, offset, size, fixedBuffer);
  5857. success &= WriteToBuffer(AssemblyFlags, buffer, offset, size, fixedBuffer);
  5858. success &= WriteToBuffer(FullyQualifiedAssemblyName, buffer, offset, size, fixedBuffer);
  5859. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  5860.  
  5861. if (!success)
  5862. {
  5863. if (!fixedBuffer)
  5864. delete[] buffer;
  5865. return ERROR_WRITE_FAULT;
  5866. }
  5867.  
  5868. EventPipe::WriteEvent(*EventPipeEventAssemblyUnload_V1, (BYTE *)buffer, offset);
  5869.  
  5870. if (!fixedBuffer)
  5871. delete[] buffer;
  5872.  
  5873. return ERROR_SUCCESS;
  5874. }
  5875.  
  5876. bool EventPipeEventEnabledAppDomainLoad()
  5877. {
  5878. return EventPipeEventAppDomainLoad->IsEnabled();
  5879. }
  5880.  
  5881. extern "C" ULONG EventPipeWriteEventAppDomainLoad(
  5882. const unsigned __int64 AppDomainID,
  5883. const unsigned int AppDomainFlags,
  5884. PCWSTR AppDomainName)
  5885. {
  5886. if (!EventPipeEventEnabledAppDomainLoad())
  5887. return ERROR_SUCCESS;
  5888.  
  5889. char stackBuffer[76];
  5890. char *buffer = stackBuffer;
  5891. unsigned int offset = 0;
  5892. unsigned int size = 76;
  5893. bool fixedBuffer = true;
  5894.  
  5895. bool success = true;
  5896. success &= WriteToBuffer(AppDomainID, buffer, offset, size, fixedBuffer);
  5897. success &= WriteToBuffer(AppDomainFlags, buffer, offset, size, fixedBuffer);
  5898. success &= WriteToBuffer(AppDomainName, buffer, offset, size, fixedBuffer);
  5899.  
  5900. if (!success)
  5901. {
  5902. if (!fixedBuffer)
  5903. delete[] buffer;
  5904. return ERROR_WRITE_FAULT;
  5905. }
  5906.  
  5907. EventPipe::WriteEvent(*EventPipeEventAppDomainLoad, (BYTE *)buffer, offset);
  5908.  
  5909. if (!fixedBuffer)
  5910. delete[] buffer;
  5911.  
  5912. return ERROR_SUCCESS;
  5913. }
  5914.  
  5915. bool EventPipeEventEnabledAppDomainLoad_V1()
  5916. {
  5917. return EventPipeEventAppDomainLoad_V1->IsEnabled();
  5918. }
  5919.  
  5920. extern "C" ULONG EventPipeWriteEventAppDomainLoad_V1(
  5921. const unsigned __int64 AppDomainID,
  5922. const unsigned int AppDomainFlags,
  5923. PCWSTR AppDomainName,
  5924. const unsigned int AppDomainIndex,
  5925. const unsigned short ClrInstanceID)
  5926. {
  5927. if (!EventPipeEventEnabledAppDomainLoad_V1())
  5928. return ERROR_SUCCESS;
  5929.  
  5930. char stackBuffer[82];
  5931. char *buffer = stackBuffer;
  5932. unsigned int offset = 0;
  5933. unsigned int size = 82;
  5934. bool fixedBuffer = true;
  5935.  
  5936. bool success = true;
  5937. success &= WriteToBuffer(AppDomainID, buffer, offset, size, fixedBuffer);
  5938. success &= WriteToBuffer(AppDomainFlags, buffer, offset, size, fixedBuffer);
  5939. success &= WriteToBuffer(AppDomainName, buffer, offset, size, fixedBuffer);
  5940. success &= WriteToBuffer(AppDomainIndex, buffer, offset, size, fixedBuffer);
  5941. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  5942.  
  5943. if (!success)
  5944. {
  5945. if (!fixedBuffer)
  5946. delete[] buffer;
  5947. return ERROR_WRITE_FAULT;
  5948. }
  5949.  
  5950. EventPipe::WriteEvent(*EventPipeEventAppDomainLoad_V1, (BYTE *)buffer, offset);
  5951.  
  5952. if (!fixedBuffer)
  5953. delete[] buffer;
  5954.  
  5955. return ERROR_SUCCESS;
  5956. }
  5957.  
  5958. bool EventPipeEventEnabledAppDomainUnload()
  5959. {
  5960. return EventPipeEventAppDomainUnload->IsEnabled();
  5961. }
  5962.  
  5963. extern "C" ULONG EventPipeWriteEventAppDomainUnload(
  5964. const unsigned __int64 AppDomainID,
  5965. const unsigned int AppDomainFlags,
  5966. PCWSTR AppDomainName)
  5967. {
  5968. if (!EventPipeEventEnabledAppDomainUnload())
  5969. return ERROR_SUCCESS;
  5970.  
  5971. char stackBuffer[76];
  5972. char *buffer = stackBuffer;
  5973. unsigned int offset = 0;
  5974. unsigned int size = 76;
  5975. bool fixedBuffer = true;
  5976.  
  5977. bool success = true;
  5978. success &= WriteToBuffer(AppDomainID, buffer, offset, size, fixedBuffer);
  5979. success &= WriteToBuffer(AppDomainFlags, buffer, offset, size, fixedBuffer);
  5980. success &= WriteToBuffer(AppDomainName, buffer, offset, size, fixedBuffer);
  5981.  
  5982. if (!success)
  5983. {
  5984. if (!fixedBuffer)
  5985. delete[] buffer;
  5986. return ERROR_WRITE_FAULT;
  5987. }
  5988.  
  5989. EventPipe::WriteEvent(*EventPipeEventAppDomainUnload, (BYTE *)buffer, offset);
  5990.  
  5991. if (!fixedBuffer)
  5992. delete[] buffer;
  5993.  
  5994. return ERROR_SUCCESS;
  5995. }
  5996.  
  5997. bool EventPipeEventEnabledAppDomainUnload_V1()
  5998. {
  5999. return EventPipeEventAppDomainUnload_V1->IsEnabled();
  6000. }
  6001.  
  6002. extern "C" ULONG EventPipeWriteEventAppDomainUnload_V1(
  6003. const unsigned __int64 AppDomainID,
  6004. const unsigned int AppDomainFlags,
  6005. PCWSTR AppDomainName,
  6006. const unsigned int AppDomainIndex,
  6007. const unsigned short ClrInstanceID)
  6008. {
  6009. if (!EventPipeEventEnabledAppDomainUnload_V1())
  6010. return ERROR_SUCCESS;
  6011.  
  6012. char stackBuffer[82];
  6013. char *buffer = stackBuffer;
  6014. unsigned int offset = 0;
  6015. unsigned int size = 82;
  6016. bool fixedBuffer = true;
  6017.  
  6018. bool success = true;
  6019. success &= WriteToBuffer(AppDomainID, buffer, offset, size, fixedBuffer);
  6020. success &= WriteToBuffer(AppDomainFlags, buffer, offset, size, fixedBuffer);
  6021. success &= WriteToBuffer(AppDomainName, buffer, offset, size, fixedBuffer);
  6022. success &= WriteToBuffer(AppDomainIndex, buffer, offset, size, fixedBuffer);
  6023. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  6024.  
  6025. if (!success)
  6026. {
  6027. if (!fixedBuffer)
  6028. delete[] buffer;
  6029. return ERROR_WRITE_FAULT;
  6030. }
  6031.  
  6032. EventPipe::WriteEvent(*EventPipeEventAppDomainUnload_V1, (BYTE *)buffer, offset);
  6033.  
  6034. if (!fixedBuffer)
  6035. delete[] buffer;
  6036.  
  6037. return ERROR_SUCCESS;
  6038. }
  6039.  
  6040. bool EventPipeEventEnabledModuleRangeLoad()
  6041. {
  6042. return EventPipeEventModuleRangeLoad->IsEnabled();
  6043. }
  6044.  
  6045. extern "C" ULONG EventPipeWriteEventModuleRangeLoad(
  6046. const unsigned short ClrInstanceID,
  6047. const unsigned __int64 ModuleID,
  6048. const unsigned int RangeBegin,
  6049. const unsigned int RangeSize,
  6050. const unsigned char RangeType)
  6051. {
  6052. if (!EventPipeEventEnabledModuleRangeLoad())
  6053. return ERROR_SUCCESS;
  6054.  
  6055. char stackBuffer[32];
  6056. char *buffer = stackBuffer;
  6057. unsigned int offset = 0;
  6058. unsigned int size = 32;
  6059. bool fixedBuffer = true;
  6060.  
  6061. bool success = true;
  6062. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  6063. success &= WriteToBuffer(ModuleID, buffer, offset, size, fixedBuffer);
  6064. success &= WriteToBuffer(RangeBegin, buffer, offset, size, fixedBuffer);
  6065. success &= WriteToBuffer(RangeSize, buffer, offset, size, fixedBuffer);
  6066. success &= WriteToBuffer(RangeType, buffer, offset, size, fixedBuffer);
  6067.  
  6068. if (!success)
  6069. {
  6070. if (!fixedBuffer)
  6071. delete[] buffer;
  6072. return ERROR_WRITE_FAULT;
  6073. }
  6074.  
  6075. EventPipe::WriteEvent(*EventPipeEventModuleRangeLoad, (BYTE *)buffer, offset);
  6076.  
  6077. if (!fixedBuffer)
  6078. delete[] buffer;
  6079.  
  6080. return ERROR_SUCCESS;
  6081. }
  6082.  
  6083. bool EventPipeEventEnabledStrongNameVerificationStart()
  6084. {
  6085. return EventPipeEventStrongNameVerificationStart->IsEnabled();
  6086. }
  6087.  
  6088. extern "C" ULONG EventPipeWriteEventStrongNameVerificationStart(
  6089. const unsigned int VerificationFlags,
  6090. const unsigned int ErrorCode,
  6091. PCWSTR FullyQualifiedAssemblyName)
  6092. {
  6093. if (!EventPipeEventEnabledStrongNameVerificationStart())
  6094. return ERROR_SUCCESS;
  6095.  
  6096. char stackBuffer[72];
  6097. char *buffer = stackBuffer;
  6098. unsigned int offset = 0;
  6099. unsigned int size = 72;
  6100. bool fixedBuffer = true;
  6101.  
  6102. bool success = true;
  6103. success &= WriteToBuffer(VerificationFlags, buffer, offset, size, fixedBuffer);
  6104. success &= WriteToBuffer(ErrorCode, buffer, offset, size, fixedBuffer);
  6105. success &= WriteToBuffer(FullyQualifiedAssemblyName, buffer, offset, size, fixedBuffer);
  6106.  
  6107. if (!success)
  6108. {
  6109. if (!fixedBuffer)
  6110. delete[] buffer;
  6111. return ERROR_WRITE_FAULT;
  6112. }
  6113.  
  6114. EventPipe::WriteEvent(*EventPipeEventStrongNameVerificationStart, (BYTE *)buffer, offset);
  6115.  
  6116. if (!fixedBuffer)
  6117. delete[] buffer;
  6118.  
  6119. return ERROR_SUCCESS;
  6120. }
  6121.  
  6122. bool EventPipeEventEnabledStrongNameVerificationStart_V1()
  6123. {
  6124. return EventPipeEventStrongNameVerificationStart_V1->IsEnabled();
  6125. }
  6126.  
  6127. extern "C" ULONG EventPipeWriteEventStrongNameVerificationStart_V1(
  6128. const unsigned int VerificationFlags,
  6129. const unsigned int ErrorCode,
  6130. PCWSTR FullyQualifiedAssemblyName,
  6131. const unsigned short ClrInstanceID)
  6132. {
  6133. if (!EventPipeEventEnabledStrongNameVerificationStart_V1())
  6134. return ERROR_SUCCESS;
  6135.  
  6136. char stackBuffer[74];
  6137. char *buffer = stackBuffer;
  6138. unsigned int offset = 0;
  6139. unsigned int size = 74;
  6140. bool fixedBuffer = true;
  6141.  
  6142. bool success = true;
  6143. success &= WriteToBuffer(VerificationFlags, buffer, offset, size, fixedBuffer);
  6144. success &= WriteToBuffer(ErrorCode, buffer, offset, size, fixedBuffer);
  6145. success &= WriteToBuffer(FullyQualifiedAssemblyName, buffer, offset, size, fixedBuffer);
  6146. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  6147.  
  6148. if (!success)
  6149. {
  6150. if (!fixedBuffer)
  6151. delete[] buffer;
  6152. return ERROR_WRITE_FAULT;
  6153. }
  6154.  
  6155. EventPipe::WriteEvent(*EventPipeEventStrongNameVerificationStart_V1, (BYTE *)buffer, offset);
  6156.  
  6157. if (!fixedBuffer)
  6158. delete[] buffer;
  6159.  
  6160. return ERROR_SUCCESS;
  6161. }
  6162.  
  6163. bool EventPipeEventEnabledStrongNameVerificationStop()
  6164. {
  6165. return EventPipeEventStrongNameVerificationStop->IsEnabled();
  6166. }
  6167.  
  6168. extern "C" ULONG EventPipeWriteEventStrongNameVerificationStop(
  6169. const unsigned int VerificationFlags,
  6170. const unsigned int ErrorCode,
  6171. PCWSTR FullyQualifiedAssemblyName)
  6172. {
  6173. if (!EventPipeEventEnabledStrongNameVerificationStop())
  6174. return ERROR_SUCCESS;
  6175.  
  6176. char stackBuffer[72];
  6177. char *buffer = stackBuffer;
  6178. unsigned int offset = 0;
  6179. unsigned int size = 72;
  6180. bool fixedBuffer = true;
  6181.  
  6182. bool success = true;
  6183. success &= WriteToBuffer(VerificationFlags, buffer, offset, size, fixedBuffer);
  6184. success &= WriteToBuffer(ErrorCode, buffer, offset, size, fixedBuffer);
  6185. success &= WriteToBuffer(FullyQualifiedAssemblyName, buffer, offset, size, fixedBuffer);
  6186.  
  6187. if (!success)
  6188. {
  6189. if (!fixedBuffer)
  6190. delete[] buffer;
  6191. return ERROR_WRITE_FAULT;
  6192. }
  6193.  
  6194. EventPipe::WriteEvent(*EventPipeEventStrongNameVerificationStop, (BYTE *)buffer, offset);
  6195.  
  6196. if (!fixedBuffer)
  6197. delete[] buffer;
  6198.  
  6199. return ERROR_SUCCESS;
  6200. }
  6201.  
  6202. bool EventPipeEventEnabledStrongNameVerificationStop_V1()
  6203. {
  6204. return EventPipeEventStrongNameVerificationStop_V1->IsEnabled();
  6205. }
  6206.  
  6207. extern "C" ULONG EventPipeWriteEventStrongNameVerificationStop_V1(
  6208. const unsigned int VerificationFlags,
  6209. const unsigned int ErrorCode,
  6210. PCWSTR FullyQualifiedAssemblyName,
  6211. const unsigned short ClrInstanceID)
  6212. {
  6213. if (!EventPipeEventEnabledStrongNameVerificationStop_V1())
  6214. return ERROR_SUCCESS;
  6215.  
  6216. char stackBuffer[74];
  6217. char *buffer = stackBuffer;
  6218. unsigned int offset = 0;
  6219. unsigned int size = 74;
  6220. bool fixedBuffer = true;
  6221.  
  6222. bool success = true;
  6223. success &= WriteToBuffer(VerificationFlags, buffer, offset, size, fixedBuffer);
  6224. success &= WriteToBuffer(ErrorCode, buffer, offset, size, fixedBuffer);
  6225. success &= WriteToBuffer(FullyQualifiedAssemblyName, buffer, offset, size, fixedBuffer);
  6226. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  6227.  
  6228. if (!success)
  6229. {
  6230. if (!fixedBuffer)
  6231. delete[] buffer;
  6232. return ERROR_WRITE_FAULT;
  6233. }
  6234.  
  6235. EventPipe::WriteEvent(*EventPipeEventStrongNameVerificationStop_V1, (BYTE *)buffer, offset);
  6236.  
  6237. if (!fixedBuffer)
  6238. delete[] buffer;
  6239.  
  6240. return ERROR_SUCCESS;
  6241. }
  6242.  
  6243. bool EventPipeEventEnabledAuthenticodeVerificationStart()
  6244. {
  6245. return EventPipeEventAuthenticodeVerificationStart->IsEnabled();
  6246. }
  6247.  
  6248. extern "C" ULONG EventPipeWriteEventAuthenticodeVerificationStart(
  6249. const unsigned int VerificationFlags,
  6250. const unsigned int ErrorCode,
  6251. PCWSTR ModulePath)
  6252. {
  6253. if (!EventPipeEventEnabledAuthenticodeVerificationStart())
  6254. return ERROR_SUCCESS;
  6255.  
  6256. char stackBuffer[72];
  6257. char *buffer = stackBuffer;
  6258. unsigned int offset = 0;
  6259. unsigned int size = 72;
  6260. bool fixedBuffer = true;
  6261.  
  6262. bool success = true;
  6263. success &= WriteToBuffer(VerificationFlags, buffer, offset, size, fixedBuffer);
  6264. success &= WriteToBuffer(ErrorCode, buffer, offset, size, fixedBuffer);
  6265. success &= WriteToBuffer(ModulePath, buffer, offset, size, fixedBuffer);
  6266.  
  6267. if (!success)
  6268. {
  6269. if (!fixedBuffer)
  6270. delete[] buffer;
  6271. return ERROR_WRITE_FAULT;
  6272. }
  6273.  
  6274. EventPipe::WriteEvent(*EventPipeEventAuthenticodeVerificationStart, (BYTE *)buffer, offset);
  6275.  
  6276. if (!fixedBuffer)
  6277. delete[] buffer;
  6278.  
  6279. return ERROR_SUCCESS;
  6280. }
  6281.  
  6282. bool EventPipeEventEnabledAuthenticodeVerificationStart_V1()
  6283. {
  6284. return EventPipeEventAuthenticodeVerificationStart_V1->IsEnabled();
  6285. }
  6286.  
  6287. extern "C" ULONG EventPipeWriteEventAuthenticodeVerificationStart_V1(
  6288. const unsigned int VerificationFlags,
  6289. const unsigned int ErrorCode,
  6290. PCWSTR ModulePath,
  6291. const unsigned short ClrInstanceID)
  6292. {
  6293. if (!EventPipeEventEnabledAuthenticodeVerificationStart_V1())
  6294. return ERROR_SUCCESS;
  6295.  
  6296. char stackBuffer[74];
  6297. char *buffer = stackBuffer;
  6298. unsigned int offset = 0;
  6299. unsigned int size = 74;
  6300. bool fixedBuffer = true;
  6301.  
  6302. bool success = true;
  6303. success &= WriteToBuffer(VerificationFlags, buffer, offset, size, fixedBuffer);
  6304. success &= WriteToBuffer(ErrorCode, buffer, offset, size, fixedBuffer);
  6305. success &= WriteToBuffer(ModulePath, buffer, offset, size, fixedBuffer);
  6306. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  6307.  
  6308. if (!success)
  6309. {
  6310. if (!fixedBuffer)
  6311. delete[] buffer;
  6312. return ERROR_WRITE_FAULT;
  6313. }
  6314.  
  6315. EventPipe::WriteEvent(*EventPipeEventAuthenticodeVerificationStart_V1, (BYTE *)buffer, offset);
  6316.  
  6317. if (!fixedBuffer)
  6318. delete[] buffer;
  6319.  
  6320. return ERROR_SUCCESS;
  6321. }
  6322.  
  6323. bool EventPipeEventEnabledAuthenticodeVerificationStop()
  6324. {
  6325. return EventPipeEventAuthenticodeVerificationStop->IsEnabled();
  6326. }
  6327.  
  6328. extern "C" ULONG EventPipeWriteEventAuthenticodeVerificationStop(
  6329. const unsigned int VerificationFlags,
  6330. const unsigned int ErrorCode,
  6331. PCWSTR ModulePath)
  6332. {
  6333. if (!EventPipeEventEnabledAuthenticodeVerificationStop())
  6334. return ERROR_SUCCESS;
  6335.  
  6336. char stackBuffer[72];
  6337. char *buffer = stackBuffer;
  6338. unsigned int offset = 0;
  6339. unsigned int size = 72;
  6340. bool fixedBuffer = true;
  6341.  
  6342. bool success = true;
  6343. success &= WriteToBuffer(VerificationFlags, buffer, offset, size, fixedBuffer);
  6344. success &= WriteToBuffer(ErrorCode, buffer, offset, size, fixedBuffer);
  6345. success &= WriteToBuffer(ModulePath, buffer, offset, size, fixedBuffer);
  6346.  
  6347. if (!success)
  6348. {
  6349. if (!fixedBuffer)
  6350. delete[] buffer;
  6351. return ERROR_WRITE_FAULT;
  6352. }
  6353.  
  6354. EventPipe::WriteEvent(*EventPipeEventAuthenticodeVerificationStop, (BYTE *)buffer, offset);
  6355.  
  6356. if (!fixedBuffer)
  6357. delete[] buffer;
  6358.  
  6359. return ERROR_SUCCESS;
  6360. }
  6361.  
  6362. bool EventPipeEventEnabledAuthenticodeVerificationStop_V1()
  6363. {
  6364. return EventPipeEventAuthenticodeVerificationStop_V1->IsEnabled();
  6365. }
  6366.  
  6367. extern "C" ULONG EventPipeWriteEventAuthenticodeVerificationStop_V1(
  6368. const unsigned int VerificationFlags,
  6369. const unsigned int ErrorCode,
  6370. PCWSTR ModulePath,
  6371. const unsigned short ClrInstanceID)
  6372. {
  6373. if (!EventPipeEventEnabledAuthenticodeVerificationStop_V1())
  6374. return ERROR_SUCCESS;
  6375.  
  6376. char stackBuffer[74];
  6377. char *buffer = stackBuffer;
  6378. unsigned int offset = 0;
  6379. unsigned int size = 74;
  6380. bool fixedBuffer = true;
  6381.  
  6382. bool success = true;
  6383. success &= WriteToBuffer(VerificationFlags, buffer, offset, size, fixedBuffer);
  6384. success &= WriteToBuffer(ErrorCode, buffer, offset, size, fixedBuffer);
  6385. success &= WriteToBuffer(ModulePath, buffer, offset, size, fixedBuffer);
  6386. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  6387.  
  6388. if (!success)
  6389. {
  6390. if (!fixedBuffer)
  6391. delete[] buffer;
  6392. return ERROR_WRITE_FAULT;
  6393. }
  6394.  
  6395. EventPipe::WriteEvent(*EventPipeEventAuthenticodeVerificationStop_V1, (BYTE *)buffer, offset);
  6396.  
  6397. if (!fixedBuffer)
  6398. delete[] buffer;
  6399.  
  6400. return ERROR_SUCCESS;
  6401. }
  6402.  
  6403. bool EventPipeEventEnabledRuntimeInformationStart()
  6404. {
  6405. return EventPipeEventRuntimeInformationStart->IsEnabled();
  6406. }
  6407.  
  6408. extern "C" ULONG EventPipeWriteEventRuntimeInformationStart(
  6409. const unsigned short ClrInstanceID,
  6410. const unsigned short Sku,
  6411. const unsigned short BclMajorVersion,
  6412. const unsigned short BclMinorVersion,
  6413. const unsigned short BclBuildNumber,
  6414. const unsigned short BclQfeNumber,
  6415. const unsigned short VMMajorVersion,
  6416. const unsigned short VMMinorVersion,
  6417. const unsigned short VMBuildNumber,
  6418. const unsigned short VMQfeNumber,
  6419. const unsigned int StartupFlags,
  6420. const unsigned char StartupMode,
  6421. PCWSTR CommandLine,
  6422. const GUID* ComObjectGuid,
  6423. PCWSTR RuntimeDllPath)
  6424. {
  6425. if (!EventPipeEventEnabledRuntimeInformationStart())
  6426. return ERROR_SUCCESS;
  6427.  
  6428. char stackBuffer[153];
  6429. char *buffer = stackBuffer;
  6430. unsigned int offset = 0;
  6431. unsigned int size = 153;
  6432. bool fixedBuffer = true;
  6433.  
  6434. bool success = true;
  6435. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  6436. success &= WriteToBuffer(Sku, buffer, offset, size, fixedBuffer);
  6437. success &= WriteToBuffer(BclMajorVersion, buffer, offset, size, fixedBuffer);
  6438. success &= WriteToBuffer(BclMinorVersion, buffer, offset, size, fixedBuffer);
  6439. success &= WriteToBuffer(BclBuildNumber, buffer, offset, size, fixedBuffer);
  6440. success &= WriteToBuffer(BclQfeNumber, buffer, offset, size, fixedBuffer);
  6441. success &= WriteToBuffer(VMMajorVersion, buffer, offset, size, fixedBuffer);
  6442. success &= WriteToBuffer(VMMinorVersion, buffer, offset, size, fixedBuffer);
  6443. success &= WriteToBuffer(VMBuildNumber, buffer, offset, size, fixedBuffer);
  6444. success &= WriteToBuffer(VMQfeNumber, buffer, offset, size, fixedBuffer);
  6445. success &= WriteToBuffer(StartupFlags, buffer, offset, size, fixedBuffer);
  6446. success &= WriteToBuffer(StartupMode, buffer, offset, size, fixedBuffer);
  6447. success &= WriteToBuffer(CommandLine, buffer, offset, size, fixedBuffer);
  6448. success &= WriteToBuffer(*ComObjectGuid, buffer, offset, size, fixedBuffer);
  6449. success &= WriteToBuffer(RuntimeDllPath, buffer, offset, size, fixedBuffer);
  6450.  
  6451. if (!success)
  6452. {
  6453. if (!fixedBuffer)
  6454. delete[] buffer;
  6455. return ERROR_WRITE_FAULT;
  6456. }
  6457.  
  6458. EventPipe::WriteEvent(*EventPipeEventRuntimeInformationStart, (BYTE *)buffer, offset);
  6459.  
  6460. if (!fixedBuffer)
  6461. delete[] buffer;
  6462.  
  6463. return ERROR_SUCCESS;
  6464. }
  6465.  
  6466. bool EventPipeEventEnabledIncreaseMemoryPressure()
  6467. {
  6468. return EventPipeEventIncreaseMemoryPressure->IsEnabled();
  6469. }
  6470.  
  6471. extern "C" ULONG EventPipeWriteEventIncreaseMemoryPressure(
  6472. const unsigned __int64 BytesAllocated,
  6473. const unsigned short ClrInstanceID)
  6474. {
  6475. if (!EventPipeEventEnabledIncreaseMemoryPressure())
  6476. return ERROR_SUCCESS;
  6477.  
  6478. char stackBuffer[32];
  6479. char *buffer = stackBuffer;
  6480. unsigned int offset = 0;
  6481. unsigned int size = 32;
  6482. bool fixedBuffer = true;
  6483.  
  6484. bool success = true;
  6485. success &= WriteToBuffer(BytesAllocated, buffer, offset, size, fixedBuffer);
  6486. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  6487.  
  6488. if (!success)
  6489. {
  6490. if (!fixedBuffer)
  6491. delete[] buffer;
  6492. return ERROR_WRITE_FAULT;
  6493. }
  6494.  
  6495. EventPipe::WriteEvent(*EventPipeEventIncreaseMemoryPressure, (BYTE *)buffer, offset);
  6496.  
  6497. if (!fixedBuffer)
  6498. delete[] buffer;
  6499.  
  6500. return ERROR_SUCCESS;
  6501. }
  6502.  
  6503. bool EventPipeEventEnabledDecreaseMemoryPressure()
  6504. {
  6505. return EventPipeEventDecreaseMemoryPressure->IsEnabled();
  6506. }
  6507.  
  6508. extern "C" ULONG EventPipeWriteEventDecreaseMemoryPressure(
  6509. const unsigned __int64 BytesFreed,
  6510. const unsigned short ClrInstanceID)
  6511. {
  6512. if (!EventPipeEventEnabledDecreaseMemoryPressure())
  6513. return ERROR_SUCCESS;
  6514.  
  6515. char stackBuffer[32];
  6516. char *buffer = stackBuffer;
  6517. unsigned int offset = 0;
  6518. unsigned int size = 32;
  6519. bool fixedBuffer = true;
  6520.  
  6521. bool success = true;
  6522. success &= WriteToBuffer(BytesFreed, buffer, offset, size, fixedBuffer);
  6523. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  6524.  
  6525. if (!success)
  6526. {
  6527. if (!fixedBuffer)
  6528. delete[] buffer;
  6529. return ERROR_WRITE_FAULT;
  6530. }
  6531.  
  6532. EventPipe::WriteEvent(*EventPipeEventDecreaseMemoryPressure, (BYTE *)buffer, offset);
  6533.  
  6534. if (!fixedBuffer)
  6535. delete[] buffer;
  6536.  
  6537. return ERROR_SUCCESS;
  6538. }
  6539.  
  6540. bool EventPipeEventEnabledGCMarkWithType()
  6541. {
  6542. return EventPipeEventGCMarkWithType->IsEnabled();
  6543. }
  6544.  
  6545. extern "C" ULONG EventPipeWriteEventGCMarkWithType(
  6546. const unsigned int HeapNum,
  6547. const unsigned short ClrInstanceID,
  6548. const unsigned int Type,
  6549. const unsigned __int64 Bytes)
  6550. {
  6551. if (!EventPipeEventEnabledGCMarkWithType())
  6552. return ERROR_SUCCESS;
  6553.  
  6554. char stackBuffer[32];
  6555. char *buffer = stackBuffer;
  6556. unsigned int offset = 0;
  6557. unsigned int size = 32;
  6558. bool fixedBuffer = true;
  6559.  
  6560. bool success = true;
  6561. success &= WriteToBuffer(HeapNum, buffer, offset, size, fixedBuffer);
  6562. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  6563. success &= WriteToBuffer(Type, buffer, offset, size, fixedBuffer);
  6564. success &= WriteToBuffer(Bytes, buffer, offset, size, fixedBuffer);
  6565.  
  6566. if (!success)
  6567. {
  6568. if (!fixedBuffer)
  6569. delete[] buffer;
  6570. return ERROR_WRITE_FAULT;
  6571. }
  6572.  
  6573. EventPipe::WriteEvent(*EventPipeEventGCMarkWithType, (BYTE *)buffer, offset);
  6574.  
  6575. if (!fixedBuffer)
  6576. delete[] buffer;
  6577.  
  6578. return ERROR_SUCCESS;
  6579. }
  6580.  
  6581. bool EventPipeEventEnabledGCJoin_V2()
  6582. {
  6583. return EventPipeEventGCJoin_V2->IsEnabled();
  6584. }
  6585.  
  6586. extern "C" ULONG EventPipeWriteEventGCJoin_V2(
  6587. const unsigned int Heap,
  6588. const unsigned int JoinTime,
  6589. const unsigned int JoinType,
  6590. const unsigned short ClrInstanceID,
  6591. const unsigned int JoinID)
  6592. {
  6593. if (!EventPipeEventEnabledGCJoin_V2())
  6594. return ERROR_SUCCESS;
  6595.  
  6596. char stackBuffer[32];
  6597. char *buffer = stackBuffer;
  6598. unsigned int offset = 0;
  6599. unsigned int size = 32;
  6600. bool fixedBuffer = true;
  6601.  
  6602. bool success = true;
  6603. success &= WriteToBuffer(Heap, buffer, offset, size, fixedBuffer);
  6604. success &= WriteToBuffer(JoinTime, buffer, offset, size, fixedBuffer);
  6605. success &= WriteToBuffer(JoinType, buffer, offset, size, fixedBuffer);
  6606. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  6607. success &= WriteToBuffer(JoinID, buffer, offset, size, fixedBuffer);
  6608.  
  6609. if (!success)
  6610. {
  6611. if (!fixedBuffer)
  6612. delete[] buffer;
  6613. return ERROR_WRITE_FAULT;
  6614. }
  6615.  
  6616. EventPipe::WriteEvent(*EventPipeEventGCJoin_V2, (BYTE *)buffer, offset);
  6617.  
  6618. if (!fixedBuffer)
  6619. delete[] buffer;
  6620.  
  6621. return ERROR_SUCCESS;
  6622. }
  6623.  
  6624. bool EventPipeEventEnabledGCPerHeapHistory_V3()
  6625. {
  6626. return EventPipeEventGCPerHeapHistory_V3->IsEnabled();
  6627. }
  6628.  
  6629. extern "C" ULONG EventPipeWriteEventGCPerHeapHistory_V3(
  6630. const unsigned short ClrInstanceID,
  6631. const void* FreeListAllocated,
  6632. const void* FreeListRejected,
  6633. const void* EndOfSegAllocated,
  6634. const void* CondemnedAllocated,
  6635. const void* PinnedAllocated,
  6636. const void* PinnedAllocatedAdvance,
  6637. const unsigned int RunningFreeListEfficiency,
  6638. const unsigned int CondemnReasons0,
  6639. const unsigned int CondemnReasons1,
  6640. const unsigned int CompactMechanisms,
  6641. const unsigned int ExpandMechanisms,
  6642. const unsigned int HeapIndex,
  6643. const void* ExtraGen0Commit,
  6644. const unsigned int Count,
  6645. int Values_ElementSize,
  6646. const void* Values)
  6647. {
  6648. if (!EventPipeEventEnabledGCPerHeapHistory_V3())
  6649. return ERROR_SUCCESS;
  6650.  
  6651. char stackBuffer[118];
  6652. char *buffer = stackBuffer;
  6653. unsigned int offset = 0;
  6654. unsigned int size = 118;
  6655. bool fixedBuffer = true;
  6656.  
  6657. bool success = true;
  6658. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  6659. success &= WriteToBuffer(FreeListAllocated, buffer, offset, size, fixedBuffer);
  6660. success &= WriteToBuffer(FreeListRejected, buffer, offset, size, fixedBuffer);
  6661. success &= WriteToBuffer(EndOfSegAllocated, buffer, offset, size, fixedBuffer);
  6662. success &= WriteToBuffer(CondemnedAllocated, buffer, offset, size, fixedBuffer);
  6663. success &= WriteToBuffer(PinnedAllocated, buffer, offset, size, fixedBuffer);
  6664. success &= WriteToBuffer(PinnedAllocatedAdvance, buffer, offset, size, fixedBuffer);
  6665. success &= WriteToBuffer(RunningFreeListEfficiency, buffer, offset, size, fixedBuffer);
  6666. success &= WriteToBuffer(CondemnReasons0, buffer, offset, size, fixedBuffer);
  6667. success &= WriteToBuffer(CondemnReasons1, buffer, offset, size, fixedBuffer);
  6668. success &= WriteToBuffer(CompactMechanisms, buffer, offset, size, fixedBuffer);
  6669. success &= WriteToBuffer(ExpandMechanisms, buffer, offset, size, fixedBuffer);
  6670. success &= WriteToBuffer(HeapIndex, buffer, offset, size, fixedBuffer);
  6671. success &= WriteToBuffer(ExtraGen0Commit, buffer, offset, size, fixedBuffer);
  6672. success &= WriteToBuffer(Count, buffer, offset, size, fixedBuffer);
  6673. success &= WriteToBuffer((const BYTE *)Values, (int)Values_ElementSize * (int)Count, buffer, offset, size, fixedBuffer);
  6674.  
  6675. if (!success)
  6676. {
  6677. if (!fixedBuffer)
  6678. delete[] buffer;
  6679. return ERROR_WRITE_FAULT;
  6680. }
  6681.  
  6682. EventPipe::WriteEvent(*EventPipeEventGCPerHeapHistory_V3, (BYTE *)buffer, offset);
  6683.  
  6684. if (!fixedBuffer)
  6685. delete[] buffer;
  6686.  
  6687. return ERROR_SUCCESS;
  6688. }
  6689.  
  6690. bool EventPipeEventEnabledGCGlobalHeapHistory_V2()
  6691. {
  6692. return EventPipeEventGCGlobalHeapHistory_V2->IsEnabled();
  6693. }
  6694.  
  6695. extern "C" ULONG EventPipeWriteEventGCGlobalHeapHistory_V2(
  6696. const unsigned __int64 FinalYoungestDesired,
  6697. const signed int NumHeaps,
  6698. const unsigned int CondemnedGeneration,
  6699. const unsigned int Gen0ReductionCount,
  6700. const unsigned int Reason,
  6701. const unsigned int GlobalMechanisms,
  6702. const unsigned short ClrInstanceID,
  6703. const unsigned int PauseMode,
  6704. const unsigned int MemoryPressure)
  6705. {
  6706. if (!EventPipeEventEnabledGCGlobalHeapHistory_V2())
  6707. return ERROR_SUCCESS;
  6708.  
  6709. char stackBuffer[38];
  6710. char *buffer = stackBuffer;
  6711. unsigned int offset = 0;
  6712. unsigned int size = 38;
  6713. bool fixedBuffer = true;
  6714.  
  6715. bool success = true;
  6716. success &= WriteToBuffer(FinalYoungestDesired, buffer, offset, size, fixedBuffer);
  6717. success &= WriteToBuffer(NumHeaps, buffer, offset, size, fixedBuffer);
  6718. success &= WriteToBuffer(CondemnedGeneration, buffer, offset, size, fixedBuffer);
  6719. success &= WriteToBuffer(Gen0ReductionCount, buffer, offset, size, fixedBuffer);
  6720. success &= WriteToBuffer(Reason, buffer, offset, size, fixedBuffer);
  6721. success &= WriteToBuffer(GlobalMechanisms, buffer, offset, size, fixedBuffer);
  6722. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  6723. success &= WriteToBuffer(PauseMode, buffer, offset, size, fixedBuffer);
  6724. success &= WriteToBuffer(MemoryPressure, buffer, offset, size, fixedBuffer);
  6725.  
  6726. if (!success)
  6727. {
  6728. if (!fixedBuffer)
  6729. delete[] buffer;
  6730. return ERROR_WRITE_FAULT;
  6731. }
  6732.  
  6733. EventPipe::WriteEvent(*EventPipeEventGCGlobalHeapHistory_V2, (BYTE *)buffer, offset);
  6734.  
  6735. if (!fixedBuffer)
  6736. delete[] buffer;
  6737.  
  6738. return ERROR_SUCCESS;
  6739. }
  6740.  
  6741. bool EventPipeEventEnabledDebugIPCEventStart()
  6742. {
  6743. return EventPipeEventDebugIPCEventStart->IsEnabled();
  6744. }
  6745.  
  6746. extern "C" ULONG EventPipeWriteEventDebugIPCEventStart(
  6747. )
  6748. {
  6749. if (!EventPipeEventEnabledDebugIPCEventStart())
  6750. return ERROR_SUCCESS;
  6751. EventPipe::WriteEvent(*EventPipeEventDebugIPCEventStart, (BYTE*) nullptr, 0);
  6752.  
  6753. return ERROR_SUCCESS;
  6754. }
  6755.  
  6756. bool EventPipeEventEnabledDebugIPCEventEnd()
  6757. {
  6758. return EventPipeEventDebugIPCEventEnd->IsEnabled();
  6759. }
  6760.  
  6761. extern "C" ULONG EventPipeWriteEventDebugIPCEventEnd(
  6762. )
  6763. {
  6764. if (!EventPipeEventEnabledDebugIPCEventEnd())
  6765. return ERROR_SUCCESS;
  6766. EventPipe::WriteEvent(*EventPipeEventDebugIPCEventEnd, (BYTE*) nullptr, 0);
  6767.  
  6768. return ERROR_SUCCESS;
  6769. }
  6770.  
  6771. bool EventPipeEventEnabledDebugExceptionProcessingStart()
  6772. {
  6773. return EventPipeEventDebugExceptionProcessingStart->IsEnabled();
  6774. }
  6775.  
  6776. extern "C" ULONG EventPipeWriteEventDebugExceptionProcessingStart(
  6777. )
  6778. {
  6779. if (!EventPipeEventEnabledDebugExceptionProcessingStart())
  6780. return ERROR_SUCCESS;
  6781. EventPipe::WriteEvent(*EventPipeEventDebugExceptionProcessingStart, (BYTE*) nullptr, 0);
  6782.  
  6783. return ERROR_SUCCESS;
  6784. }
  6785.  
  6786. bool EventPipeEventEnabledDebugExceptionProcessingEnd()
  6787. {
  6788. return EventPipeEventDebugExceptionProcessingEnd->IsEnabled();
  6789. }
  6790.  
  6791. extern "C" ULONG EventPipeWriteEventDebugExceptionProcessingEnd(
  6792. )
  6793. {
  6794. if (!EventPipeEventEnabledDebugExceptionProcessingEnd())
  6795. return ERROR_SUCCESS;
  6796. EventPipe::WriteEvent(*EventPipeEventDebugExceptionProcessingEnd, (BYTE*) nullptr, 0);
  6797.  
  6798. return ERROR_SUCCESS;
  6799. }
  6800.  
  6801. bool EventPipeEventEnabledCodeSymbols()
  6802. {
  6803. return EventPipeEventCodeSymbols->IsEnabled();
  6804. }
  6805.  
  6806. extern "C" ULONG EventPipeWriteEventCodeSymbols(
  6807. const unsigned __int64 ModuleId,
  6808. const unsigned short TotalChunks,
  6809. const unsigned short ChunkNumber,
  6810. const unsigned int ChunkLength,
  6811. const BYTE* Chunk,
  6812. const unsigned short ClrInstanceID)
  6813. {
  6814. if (!EventPipeEventEnabledCodeSymbols())
  6815. return ERROR_SUCCESS;
  6816.  
  6817. char stackBuffer[32];
  6818. char *buffer = stackBuffer;
  6819. unsigned int offset = 0;
  6820. unsigned int size = 32;
  6821. bool fixedBuffer = true;
  6822.  
  6823. bool success = true;
  6824. success &= WriteToBuffer(ModuleId, buffer, offset, size, fixedBuffer);
  6825. success &= WriteToBuffer(TotalChunks, buffer, offset, size, fixedBuffer);
  6826. success &= WriteToBuffer(ChunkNumber, buffer, offset, size, fixedBuffer);
  6827. success &= WriteToBuffer(ChunkLength, buffer, offset, size, fixedBuffer);
  6828. success &= WriteToBuffer((const BYTE *)Chunk, sizeof(const BYTE) * (int)ChunkLength, buffer, offset, size, fixedBuffer);
  6829. success &= WriteToBuffer(ClrInstanceID, buffer, offset, size, fixedBuffer);
  6830.  
  6831. if (!success)
  6832. {
  6833. if (!fixedBuffer)
  6834. delete[] buffer;
  6835. return ERROR_WRITE_FAULT;
  6836. }
  6837.  
  6838. EventPipe::WriteEvent(*EventPipeEventCodeSymbols, (BYTE *)buffer, offset);
  6839.  
  6840. if (!fixedBuffer)
  6841. delete[] buffer;
  6842.  
  6843. return ERROR_SUCCESS;
  6844. }
  6845.  
  6846. bool EventPipeEventEnabledEventSource()
  6847. {
  6848. return EventPipeEventEventSource->IsEnabled();
  6849. }
  6850.  
  6851. extern "C" ULONG EventPipeWriteEventEventSource(
  6852. const signed int EventID,
  6853. PCWSTR EventName,
  6854. PCWSTR EventSourceName,
  6855. PCWSTR Payload)
  6856. {
  6857. if (!EventPipeEventEnabledEventSource())
  6858. return ERROR_SUCCESS;
  6859.  
  6860. char stackBuffer[196];
  6861. char *buffer = stackBuffer;
  6862. unsigned int offset = 0;
  6863. unsigned int size = 196;
  6864. bool fixedBuffer = true;
  6865.  
  6866. bool success = true;
  6867. success &= WriteToBuffer(EventID, buffer, offset, size, fixedBuffer);
  6868. success &= WriteToBuffer(EventName, buffer, offset, size, fixedBuffer);
  6869. success &= WriteToBuffer(EventSourceName, buffer, offset, size, fixedBuffer);
  6870. success &= WriteToBuffer(Payload, buffer, offset, size, fixedBuffer);
  6871.  
  6872. if (!success)
  6873. {
  6874. if (!fixedBuffer)
  6875. delete[] buffer;
  6876. return ERROR_WRITE_FAULT;
  6877. }
  6878.  
  6879. EventPipe::WriteEvent(*EventPipeEventEventSource, (BYTE *)buffer, offset);
  6880.  
  6881. if (!fixedBuffer)
  6882. delete[] buffer;
  6883.  
  6884. return ERROR_SUCCESS;
  6885. }
  6886.  
  6887. extern "C" void InitDotNETRuntime()
  6888. {
  6889. EventPipeProviderDotNETRuntime = EventPipe::CreateProvider(SL(DotNETRuntimeName));
  6890. EventPipeEventGCStart = EventPipeProviderDotNETRuntime->AddEvent(1,1,0,EventPipeEventLevel::Informational);
  6891. EventPipeEventGCStart_V1 = EventPipeProviderDotNETRuntime->AddEvent(1,1,1,EventPipeEventLevel::Informational);
  6892. EventPipeEventGCStart_V2 = EventPipeProviderDotNETRuntime->AddEvent(1,1,2,EventPipeEventLevel::Informational);
  6893. EventPipeEventGCEnd = EventPipeProviderDotNETRuntime->AddEvent(2,1,0,EventPipeEventLevel::Informational);
  6894. EventPipeEventGCEnd_V1 = EventPipeProviderDotNETRuntime->AddEvent(2,1,1,EventPipeEventLevel::Informational);
  6895. EventPipeEventGCRestartEEEnd = EventPipeProviderDotNETRuntime->AddEvent(3,1,0,EventPipeEventLevel::Informational);
  6896. EventPipeEventGCRestartEEEnd_V1 = EventPipeProviderDotNETRuntime->AddEvent(3,1,1,EventPipeEventLevel::Informational);
  6897. EventPipeEventGCHeapStats = EventPipeProviderDotNETRuntime->AddEvent(4,1,0,EventPipeEventLevel::Informational);
  6898. EventPipeEventGCHeapStats_V1 = EventPipeProviderDotNETRuntime->AddEvent(4,1,1,EventPipeEventLevel::Informational);
  6899. EventPipeEventGCCreateSegment = EventPipeProviderDotNETRuntime->AddEvent(5,1,0,EventPipeEventLevel::Informational);
  6900. EventPipeEventGCCreateSegment_V1 = EventPipeProviderDotNETRuntime->AddEvent(5,1,1,EventPipeEventLevel::Informational);
  6901. EventPipeEventGCFreeSegment = EventPipeProviderDotNETRuntime->AddEvent(6,1,0,EventPipeEventLevel::Informational);
  6902. EventPipeEventGCFreeSegment_V1 = EventPipeProviderDotNETRuntime->AddEvent(6,1,1,EventPipeEventLevel::Informational);
  6903. EventPipeEventGCRestartEEBegin = EventPipeProviderDotNETRuntime->AddEvent(7,1,0,EventPipeEventLevel::Informational);
  6904. EventPipeEventGCRestartEEBegin_V1 = EventPipeProviderDotNETRuntime->AddEvent(7,1,1,EventPipeEventLevel::Informational);
  6905. EventPipeEventGCSuspendEEEnd = EventPipeProviderDotNETRuntime->AddEvent(8,1,0,EventPipeEventLevel::Informational);
  6906. EventPipeEventGCSuspendEEEnd_V1 = EventPipeProviderDotNETRuntime->AddEvent(8,1,1,EventPipeEventLevel::Informational);
  6907. EventPipeEventGCSuspendEEBegin = EventPipeProviderDotNETRuntime->AddEvent(9,1,0,EventPipeEventLevel::Informational);
  6908. EventPipeEventGCSuspendEEBegin_V1 = EventPipeProviderDotNETRuntime->AddEvent(9,1,1,EventPipeEventLevel::Informational);
  6909. EventPipeEventGCAllocationTick = EventPipeProviderDotNETRuntime->AddEvent(10,1,0,EventPipeEventLevel::Verbose);
  6910. EventPipeEventGCAllocationTick_V1 = EventPipeProviderDotNETRuntime->AddEvent(10,1,1,EventPipeEventLevel::Verbose);
  6911. EventPipeEventGCAllocationTick_V2 = EventPipeProviderDotNETRuntime->AddEvent(10,1,2,EventPipeEventLevel::Verbose);
  6912. EventPipeEventGCAllocationTick_V3 = EventPipeProviderDotNETRuntime->AddEvent(10,1,3,EventPipeEventLevel::Verbose);
  6913. EventPipeEventGCCreateConcurrentThread = EventPipeProviderDotNETRuntime->AddEvent(11,1,0,EventPipeEventLevel::Informational);
  6914. EventPipeEventGCCreateConcurrentThread_V1 = EventPipeProviderDotNETRuntime->AddEvent(11,65537,1,EventPipeEventLevel::Informational);
  6915. EventPipeEventGCTerminateConcurrentThread = EventPipeProviderDotNETRuntime->AddEvent(12,1,0,EventPipeEventLevel::Informational);
  6916. EventPipeEventGCTerminateConcurrentThread_V1 = EventPipeProviderDotNETRuntime->AddEvent(12,65537,1,EventPipeEventLevel::Informational);
  6917. EventPipeEventGCFinalizersEnd = EventPipeProviderDotNETRuntime->AddEvent(13,1,0,EventPipeEventLevel::Informational);
  6918. EventPipeEventGCFinalizersEnd_V1 = EventPipeProviderDotNETRuntime->AddEvent(13,1,1,EventPipeEventLevel::Informational);
  6919. EventPipeEventGCFinalizersBegin = EventPipeProviderDotNETRuntime->AddEvent(14,1,0,EventPipeEventLevel::Informational);
  6920. EventPipeEventGCFinalizersBegin_V1 = EventPipeProviderDotNETRuntime->AddEvent(14,1,1,EventPipeEventLevel::Informational);
  6921. EventPipeEventBulkType = EventPipeProviderDotNETRuntime->AddEvent(15,524288,0,EventPipeEventLevel::Informational);
  6922. EventPipeEventGCBulkRootEdge = EventPipeProviderDotNETRuntime->AddEvent(16,1048576,0,EventPipeEventLevel::Informational);
  6923. EventPipeEventGCBulkRootConditionalWeakTableElementEdge = EventPipeProviderDotNETRuntime->AddEvent(17,1048576,0,EventPipeEventLevel::Informational);
  6924. EventPipeEventGCBulkNode = EventPipeProviderDotNETRuntime->AddEvent(18,1048576,0,EventPipeEventLevel::Informational);
  6925. EventPipeEventGCBulkEdge = EventPipeProviderDotNETRuntime->AddEvent(19,1048576,0,EventPipeEventLevel::Informational);
  6926. EventPipeEventGCSampledObjectAllocationHigh = EventPipeProviderDotNETRuntime->AddEvent(20,2097152,0,EventPipeEventLevel::Informational);
  6927. EventPipeEventGCBulkSurvivingObjectRanges = EventPipeProviderDotNETRuntime->AddEvent(21,4194304,0,EventPipeEventLevel::Informational);
  6928. EventPipeEventGCBulkMovedObjectRanges = EventPipeProviderDotNETRuntime->AddEvent(22,4194304,0,EventPipeEventLevel::Informational);
  6929. EventPipeEventGCGenerationRange = EventPipeProviderDotNETRuntime->AddEvent(23,4194304,0,EventPipeEventLevel::Informational);
  6930. EventPipeEventGCMarkStackRoots = EventPipeProviderDotNETRuntime->AddEvent(25,1,0,EventPipeEventLevel::Informational);
  6931. EventPipeEventGCMarkFinalizeQueueRoots = EventPipeProviderDotNETRuntime->AddEvent(26,1,0,EventPipeEventLevel::Informational);
  6932. EventPipeEventGCMarkHandles = EventPipeProviderDotNETRuntime->AddEvent(27,1,0,EventPipeEventLevel::Informational);
  6933. EventPipeEventGCMarkOlderGenerationRoots = EventPipeProviderDotNETRuntime->AddEvent(28,1,0,EventPipeEventLevel::Informational);
  6934. EventPipeEventFinalizeObject = EventPipeProviderDotNETRuntime->AddEvent(29,1,0,EventPipeEventLevel::Verbose);
  6935. EventPipeEventSetGCHandle = EventPipeProviderDotNETRuntime->AddEvent(30,2,0,EventPipeEventLevel::Informational);
  6936. EventPipeEventDestroyGCHandle = EventPipeProviderDotNETRuntime->AddEvent(31,2,0,EventPipeEventLevel::Informational);
  6937. EventPipeEventGCSampledObjectAllocationLow = EventPipeProviderDotNETRuntime->AddEvent(32,33554432,0,EventPipeEventLevel::Informational);
  6938. EventPipeEventPinObjectAtGCTime = EventPipeProviderDotNETRuntime->AddEvent(33,1,0,EventPipeEventLevel::Verbose);
  6939. EventPipeEventGCTriggered = EventPipeProviderDotNETRuntime->AddEvent(35,1,0,EventPipeEventLevel::Informational);
  6940. EventPipeEventGCBulkRootCCW = EventPipeProviderDotNETRuntime->AddEvent(36,1048576,0,EventPipeEventLevel::Informational);
  6941. EventPipeEventGCBulkRCW = EventPipeProviderDotNETRuntime->AddEvent(37,1048576,0,EventPipeEventLevel::Informational);
  6942. EventPipeEventGCBulkRootStaticVar = EventPipeProviderDotNETRuntime->AddEvent(38,1048576,0,EventPipeEventLevel::Informational);
  6943. EventPipeEventWorkerThreadCreate = EventPipeProviderDotNETRuntime->AddEvent(40,65536,0,EventPipeEventLevel::Informational);
  6944. EventPipeEventWorkerThreadTerminate = EventPipeProviderDotNETRuntime->AddEvent(41,65536,0,EventPipeEventLevel::Informational);
  6945. EventPipeEventWorkerThreadRetire = EventPipeProviderDotNETRuntime->AddEvent(42,65536,0,EventPipeEventLevel::Informational);
  6946. EventPipeEventWorkerThreadUnretire = EventPipeProviderDotNETRuntime->AddEvent(43,65536,0,EventPipeEventLevel::Informational);
  6947. EventPipeEventIOThreadCreate = EventPipeProviderDotNETRuntime->AddEvent(44,65536,0,EventPipeEventLevel::Informational);
  6948. EventPipeEventIOThreadCreate_V1 = EventPipeProviderDotNETRuntime->AddEvent(44,65536,1,EventPipeEventLevel::Informational);
  6949. EventPipeEventIOThreadTerminate = EventPipeProviderDotNETRuntime->AddEvent(45,65536,0,EventPipeEventLevel::Informational);
  6950. EventPipeEventIOThreadTerminate_V1 = EventPipeProviderDotNETRuntime->AddEvent(45,65536,1,EventPipeEventLevel::Informational);
  6951. EventPipeEventIOThreadRetire = EventPipeProviderDotNETRuntime->AddEvent(46,65536,0,EventPipeEventLevel::Informational);
  6952. EventPipeEventIOThreadRetire_V1 = EventPipeProviderDotNETRuntime->AddEvent(46,65536,1,EventPipeEventLevel::Informational);
  6953. EventPipeEventIOThreadUnretire = EventPipeProviderDotNETRuntime->AddEvent(47,65536,0,EventPipeEventLevel::Informational);
  6954. EventPipeEventIOThreadUnretire_V1 = EventPipeProviderDotNETRuntime->AddEvent(47,65536,1,EventPipeEventLevel::Informational);
  6955. EventPipeEventThreadpoolSuspensionSuspendThread = EventPipeProviderDotNETRuntime->AddEvent(48,65536,0,EventPipeEventLevel::Informational);
  6956. EventPipeEventThreadpoolSuspensionResumeThread = EventPipeProviderDotNETRuntime->AddEvent(49,65536,0,EventPipeEventLevel::Informational);
  6957. EventPipeEventThreadPoolWorkerThreadStart = EventPipeProviderDotNETRuntime->AddEvent(50,65536,0,EventPipeEventLevel::Informational);
  6958. EventPipeEventThreadPoolWorkerThreadStop = EventPipeProviderDotNETRuntime->AddEvent(51,65536,0,EventPipeEventLevel::Informational);
  6959. EventPipeEventThreadPoolWorkerThreadRetirementStart = EventPipeProviderDotNETRuntime->AddEvent(52,65536,0,EventPipeEventLevel::Informational);
  6960. EventPipeEventThreadPoolWorkerThreadRetirementStop = EventPipeProviderDotNETRuntime->AddEvent(53,65536,0,EventPipeEventLevel::Informational);
  6961. EventPipeEventThreadPoolWorkerThreadAdjustmentSample = EventPipeProviderDotNETRuntime->AddEvent(54,65536,0,EventPipeEventLevel::Informational);
  6962. EventPipeEventThreadPoolWorkerThreadAdjustmentAdjustment = EventPipeProviderDotNETRuntime->AddEvent(55,65536,0,EventPipeEventLevel::Informational);
  6963. EventPipeEventThreadPoolWorkerThreadAdjustmentStats = EventPipeProviderDotNETRuntime->AddEvent(56,65536,0,EventPipeEventLevel::Verbose);
  6964. EventPipeEventThreadPoolWorkerThreadWait = EventPipeProviderDotNETRuntime->AddEvent(57,65536,0,EventPipeEventLevel::Informational);
  6965. EventPipeEventThreadPoolWorkingThreadCount = EventPipeProviderDotNETRuntime->AddEvent(60,65536,0,EventPipeEventLevel::Verbose);
  6966. EventPipeEventThreadPoolEnqueue = EventPipeProviderDotNETRuntime->AddEvent(61,2147549184,0,EventPipeEventLevel::Verbose);
  6967. EventPipeEventThreadPoolDequeue = EventPipeProviderDotNETRuntime->AddEvent(62,2147549184,0,EventPipeEventLevel::Verbose);
  6968. EventPipeEventThreadPoolIOEnqueue = EventPipeProviderDotNETRuntime->AddEvent(63,2147549184,0,EventPipeEventLevel::Verbose);
  6969. EventPipeEventThreadPoolIODequeue = EventPipeProviderDotNETRuntime->AddEvent(64,2147549184,0,EventPipeEventLevel::Verbose);
  6970. EventPipeEventThreadPoolIOPack = EventPipeProviderDotNETRuntime->AddEvent(65,65536,0,EventPipeEventLevel::Verbose);
  6971. EventPipeEventThreadCreating = EventPipeProviderDotNETRuntime->AddEvent(70,2147549184,0,EventPipeEventLevel::Informational);
  6972. EventPipeEventThreadRunning = EventPipeProviderDotNETRuntime->AddEvent(71,2147549184,0,EventPipeEventLevel::Informational);
  6973. EventPipeEventExceptionThrown = EventPipeProviderDotNETRuntime->AddEvent(80,0,0,EventPipeEventLevel::Informational);
  6974. EventPipeEventExceptionThrown_V1 = EventPipeProviderDotNETRuntime->AddEvent(80,8589967360,1,EventPipeEventLevel::Error);
  6975. EventPipeEventExceptionCatchStart = EventPipeProviderDotNETRuntime->AddEvent(250,32768,0,EventPipeEventLevel::Informational);
  6976. EventPipeEventExceptionCatchStop = EventPipeProviderDotNETRuntime->AddEvent(251,32768,0,EventPipeEventLevel::Informational);
  6977. EventPipeEventExceptionFinallyStart = EventPipeProviderDotNETRuntime->AddEvent(252,32768,0,EventPipeEventLevel::Informational);
  6978. EventPipeEventExceptionFinallyStop = EventPipeProviderDotNETRuntime->AddEvent(253,32768,0,EventPipeEventLevel::Informational);
  6979. EventPipeEventExceptionFilterStart = EventPipeProviderDotNETRuntime->AddEvent(254,32768,0,EventPipeEventLevel::Informational);
  6980. EventPipeEventExceptionFilterStop = EventPipeProviderDotNETRuntime->AddEvent(255,32768,0,EventPipeEventLevel::Informational);
  6981. EventPipeEventExceptionThrownStop = EventPipeProviderDotNETRuntime->AddEvent(256,32768,0,EventPipeEventLevel::Informational);
  6982. EventPipeEventContention = EventPipeProviderDotNETRuntime->AddEvent(81,0,0,EventPipeEventLevel::Informational);
  6983. EventPipeEventContentionStart_V1 = EventPipeProviderDotNETRuntime->AddEvent(81,16384,1,EventPipeEventLevel::Informational);
  6984. EventPipeEventContentionStop = EventPipeProviderDotNETRuntime->AddEvent(91,16384,0,EventPipeEventLevel::Informational);
  6985. EventPipeEventCLRStackWalk = EventPipeProviderDotNETRuntime->AddEvent(82,1073741824,0,EventPipeEventLevel::LogAlways);
  6986. EventPipeEventAppDomainMemAllocated = EventPipeProviderDotNETRuntime->AddEvent(83,2048,0,EventPipeEventLevel::Informational);
  6987. EventPipeEventAppDomainMemSurvived = EventPipeProviderDotNETRuntime->AddEvent(84,2048,0,EventPipeEventLevel::Informational);
  6988. EventPipeEventThreadCreated = EventPipeProviderDotNETRuntime->AddEvent(85,67584,0,EventPipeEventLevel::Informational);
  6989. EventPipeEventThreadTerminated = EventPipeProviderDotNETRuntime->AddEvent(86,67584,0,EventPipeEventLevel::Informational);
  6990. EventPipeEventThreadDomainEnter = EventPipeProviderDotNETRuntime->AddEvent(87,67584,0,EventPipeEventLevel::Informational);
  6991. EventPipeEventILStubGenerated = EventPipeProviderDotNETRuntime->AddEvent(88,8192,0,EventPipeEventLevel::Informational);
  6992. EventPipeEventILStubCacheHit = EventPipeProviderDotNETRuntime->AddEvent(89,8192,0,EventPipeEventLevel::Informational);
  6993. EventPipeEventDCStartCompleteV2 = EventPipeProviderDotNETRuntime->AddEvent(135,48,0,EventPipeEventLevel::Informational);
  6994. EventPipeEventDCEndCompleteV2 = EventPipeProviderDotNETRuntime->AddEvent(136,48,0,EventPipeEventLevel::Informational);
  6995. EventPipeEventMethodDCStartV2 = EventPipeProviderDotNETRuntime->AddEvent(137,48,0,EventPipeEventLevel::Informational);
  6996. EventPipeEventMethodDCEndV2 = EventPipeProviderDotNETRuntime->AddEvent(138,48,0,EventPipeEventLevel::Informational);
  6997. EventPipeEventMethodDCStartVerboseV2 = EventPipeProviderDotNETRuntime->AddEvent(139,48,0,EventPipeEventLevel::Informational);
  6998. EventPipeEventMethodDCEndVerboseV2 = EventPipeProviderDotNETRuntime->AddEvent(140,48,0,EventPipeEventLevel::Informational);
  6999. EventPipeEventMethodLoad = EventPipeProviderDotNETRuntime->AddEvent(141,48,0,EventPipeEventLevel::Informational);
  7000. EventPipeEventMethodLoad_V1 = EventPipeProviderDotNETRuntime->AddEvent(141,48,1,EventPipeEventLevel::Informational);
  7001. EventPipeEventMethodLoad_V2 = EventPipeProviderDotNETRuntime->AddEvent(141,48,2,EventPipeEventLevel::Informational);
  7002. EventPipeEventMethodUnload = EventPipeProviderDotNETRuntime->AddEvent(142,48,0,EventPipeEventLevel::Informational);
  7003. EventPipeEventMethodUnload_V1 = EventPipeProviderDotNETRuntime->AddEvent(142,48,1,EventPipeEventLevel::Informational);
  7004. EventPipeEventMethodUnload_V2 = EventPipeProviderDotNETRuntime->AddEvent(142,48,2,EventPipeEventLevel::Informational);
  7005. EventPipeEventMethodLoadVerbose = EventPipeProviderDotNETRuntime->AddEvent(143,48,0,EventPipeEventLevel::Informational);
  7006. EventPipeEventMethodLoadVerbose_V1 = EventPipeProviderDotNETRuntime->AddEvent(143,48,1,EventPipeEventLevel::Informational);
  7007. EventPipeEventMethodLoadVerbose_V2 = EventPipeProviderDotNETRuntime->AddEvent(143,48,2,EventPipeEventLevel::Informational);
  7008. EventPipeEventMethodUnloadVerbose = EventPipeProviderDotNETRuntime->AddEvent(144,48,0,EventPipeEventLevel::Informational);
  7009. EventPipeEventMethodUnloadVerbose_V1 = EventPipeProviderDotNETRuntime->AddEvent(144,48,1,EventPipeEventLevel::Informational);
  7010. EventPipeEventMethodUnloadVerbose_V2 = EventPipeProviderDotNETRuntime->AddEvent(144,48,2,EventPipeEventLevel::Informational);
  7011. EventPipeEventMethodJittingStarted = EventPipeProviderDotNETRuntime->AddEvent(145,16,0,EventPipeEventLevel::Verbose);
  7012. EventPipeEventMethodJittingStarted_V1 = EventPipeProviderDotNETRuntime->AddEvent(145,16,1,EventPipeEventLevel::Verbose);
  7013. EventPipeEventMethodJitInliningSucceeded = EventPipeProviderDotNETRuntime->AddEvent(185,4096,0,EventPipeEventLevel::Verbose);
  7014. EventPipeEventMethodJitInliningFailed = EventPipeProviderDotNETRuntime->AddEvent(186,4096,0,EventPipeEventLevel::Verbose);
  7015. EventPipeEventMethodJitTailCallSucceeded = EventPipeProviderDotNETRuntime->AddEvent(188,4096,0,EventPipeEventLevel::Verbose);
  7016. EventPipeEventMethodJitTailCallFailed = EventPipeProviderDotNETRuntime->AddEvent(189,4096,0,EventPipeEventLevel::Verbose);
  7017. EventPipeEventMethodILToNativeMap = EventPipeProviderDotNETRuntime->AddEvent(190,131072,0,EventPipeEventLevel::Verbose);
  7018. EventPipeEventModuleDCStartV2 = EventPipeProviderDotNETRuntime->AddEvent(149,8,0,EventPipeEventLevel::Informational);
  7019. EventPipeEventModuleDCEndV2 = EventPipeProviderDotNETRuntime->AddEvent(150,8,0,EventPipeEventLevel::Informational);
  7020. EventPipeEventDomainModuleLoad = EventPipeProviderDotNETRuntime->AddEvent(151,8,0,EventPipeEventLevel::Informational);
  7021. EventPipeEventDomainModuleLoad_V1 = EventPipeProviderDotNETRuntime->AddEvent(151,8,1,EventPipeEventLevel::Informational);
  7022. EventPipeEventModuleLoad = EventPipeProviderDotNETRuntime->AddEvent(152,8,0,EventPipeEventLevel::Informational);
  7023. EventPipeEventModuleLoad_V1 = EventPipeProviderDotNETRuntime->AddEvent(152,536870920,1,EventPipeEventLevel::Informational);
  7024. EventPipeEventModuleLoad_V2 = EventPipeProviderDotNETRuntime->AddEvent(152,536870920,2,EventPipeEventLevel::Informational);
  7025. EventPipeEventModuleUnload = EventPipeProviderDotNETRuntime->AddEvent(153,8,0,EventPipeEventLevel::Informational);
  7026. EventPipeEventModuleUnload_V1 = EventPipeProviderDotNETRuntime->AddEvent(153,536870920,1,EventPipeEventLevel::Informational);
  7027. EventPipeEventModuleUnload_V2 = EventPipeProviderDotNETRuntime->AddEvent(153,536870920,2,EventPipeEventLevel::Informational);
  7028. EventPipeEventAssemblyLoad = EventPipeProviderDotNETRuntime->AddEvent(154,8,0,EventPipeEventLevel::Informational);
  7029. EventPipeEventAssemblyLoad_V1 = EventPipeProviderDotNETRuntime->AddEvent(154,8,1,EventPipeEventLevel::Informational);
  7030. EventPipeEventAssemblyUnload = EventPipeProviderDotNETRuntime->AddEvent(155,8,0,EventPipeEventLevel::Informational);
  7031. EventPipeEventAssemblyUnload_V1 = EventPipeProviderDotNETRuntime->AddEvent(155,8,1,EventPipeEventLevel::Informational);
  7032. EventPipeEventAppDomainLoad = EventPipeProviderDotNETRuntime->AddEvent(156,8,0,EventPipeEventLevel::Informational);
  7033. EventPipeEventAppDomainLoad_V1 = EventPipeProviderDotNETRuntime->AddEvent(156,8,1,EventPipeEventLevel::Informational);
  7034. EventPipeEventAppDomainUnload = EventPipeProviderDotNETRuntime->AddEvent(157,8,0,EventPipeEventLevel::Informational);
  7035. EventPipeEventAppDomainUnload_V1 = EventPipeProviderDotNETRuntime->AddEvent(157,8,1,EventPipeEventLevel::Informational);
  7036. EventPipeEventModuleRangeLoad = EventPipeProviderDotNETRuntime->AddEvent(158,536870912,0,EventPipeEventLevel::Informational);
  7037. EventPipeEventStrongNameVerificationStart = EventPipeProviderDotNETRuntime->AddEvent(181,1024,0,EventPipeEventLevel::Verbose);
  7038. EventPipeEventStrongNameVerificationStart_V1 = EventPipeProviderDotNETRuntime->AddEvent(181,1024,1,EventPipeEventLevel::Verbose);
  7039. EventPipeEventStrongNameVerificationStop = EventPipeProviderDotNETRuntime->AddEvent(182,1024,0,EventPipeEventLevel::Informational);
  7040. EventPipeEventStrongNameVerificationStop_V1 = EventPipeProviderDotNETRuntime->AddEvent(182,1024,1,EventPipeEventLevel::Informational);
  7041. EventPipeEventAuthenticodeVerificationStart = EventPipeProviderDotNETRuntime->AddEvent(183,1024,0,EventPipeEventLevel::Verbose);
  7042. EventPipeEventAuthenticodeVerificationStart_V1 = EventPipeProviderDotNETRuntime->AddEvent(183,1024,1,EventPipeEventLevel::Verbose);
  7043. EventPipeEventAuthenticodeVerificationStop = EventPipeProviderDotNETRuntime->AddEvent(184,1024,0,EventPipeEventLevel::Informational);
  7044. EventPipeEventAuthenticodeVerificationStop_V1 = EventPipeProviderDotNETRuntime->AddEvent(184,1024,1,EventPipeEventLevel::Informational);
  7045. EventPipeEventRuntimeInformationStart = EventPipeProviderDotNETRuntime->AddEvent(187,0,0,EventPipeEventLevel::Informational);
  7046. EventPipeEventIncreaseMemoryPressure = EventPipeProviderDotNETRuntime->AddEvent(200,1,0,EventPipeEventLevel::Verbose);
  7047. EventPipeEventDecreaseMemoryPressure = EventPipeProviderDotNETRuntime->AddEvent(201,1,0,EventPipeEventLevel::Verbose);
  7048. EventPipeEventGCMarkWithType = EventPipeProviderDotNETRuntime->AddEvent(202,1,0,EventPipeEventLevel::Informational);
  7049. EventPipeEventGCJoin_V2 = EventPipeProviderDotNETRuntime->AddEvent(203,1,2,EventPipeEventLevel::Verbose);
  7050. EventPipeEventGCPerHeapHistory_V3 = EventPipeProviderDotNETRuntime->AddEvent(204,1,3,EventPipeEventLevel::Informational);
  7051. EventPipeEventGCGlobalHeapHistory_V2 = EventPipeProviderDotNETRuntime->AddEvent(205,1,2,EventPipeEventLevel::Informational);
  7052. EventPipeEventDebugIPCEventStart = EventPipeProviderDotNETRuntime->AddEvent(240,4294967296,0,EventPipeEventLevel::Informational);
  7053. EventPipeEventDebugIPCEventEnd = EventPipeProviderDotNETRuntime->AddEvent(241,4294967296,0,EventPipeEventLevel::Informational);
  7054. EventPipeEventDebugExceptionProcessingStart = EventPipeProviderDotNETRuntime->AddEvent(242,4294967296,0,EventPipeEventLevel::Informational);
  7055. EventPipeEventDebugExceptionProcessingEnd = EventPipeProviderDotNETRuntime->AddEvent(243,4294967296,0,EventPipeEventLevel::Informational);
  7056. EventPipeEventCodeSymbols = EventPipeProviderDotNETRuntime->AddEvent(260,17179869184,0,EventPipeEventLevel::Verbose);
  7057. EventPipeEventEventSource = EventPipeProviderDotNETRuntime->AddEvent(270,0,0,EventPipeEventLevel::Informational);
  7058. }
Add Comment
Please, Sign In to add comment