Welcome to mirror list, hosted at ThFree Co, Russian Federation.

referencetrackertypes.hpp « interop « coreclr « src - github.com/dotnet/runtime.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: a5887df802dc2602b64b3341277387daeda9e2d1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.

#ifndef _INTEROP_REFERENCETRACKERTYPES_H_
#define _INTEROP_REFERENCETRACKERTYPES_H_

#include <unknwn.h>

// Documentation found at https://docs.microsoft.com/windows/win32/api/windows.ui.xaml.hosting.referencetracker/

class DECLSPEC_UUID("64bd43f8-bfee-4ec4-b7eb-2935158dae21") IReferenceTrackerTarget : public IUnknown
{
public:
    STDMETHOD_(ULONG, AddRefFromReferenceTracker)() = 0;
    STDMETHOD_(ULONG, ReleaseFromReferenceTracker)() = 0;
    STDMETHOD(Peg)() = 0;
    STDMETHOD(Unpeg)() = 0;
};

class DECLSPEC_UUID("29a71c6a-3c42-4416-a39d-e2825a07a773") IReferenceTrackerHost : public IUnknown
{
public:
    STDMETHOD(DisconnectUnusedReferenceSources)(_In_ DWORD dwFlags) = 0;
    STDMETHOD(ReleaseDisconnectedReferenceSources)() = 0;
    STDMETHOD(NotifyEndOfReferenceTrackingOnThread)() = 0;
    STDMETHOD(GetTrackerTarget)(_In_ IUnknown* obj, _Outptr_ IReferenceTrackerTarget** ppNewReference) = 0;
    STDMETHOD(AddMemoryPressure)(_In_ UINT64 bytesAllocated) = 0;
    STDMETHOD(RemoveMemoryPressure)(_In_ UINT64 bytesAllocated) = 0;
};

class DECLSPEC_UUID("3cf184b4-7ccb-4dda-8455-7e6ce99a3298") IReferenceTrackerManager : public IUnknown
{
public:
    STDMETHOD(ReferenceTrackingStarted)() = 0;
    STDMETHOD(FindTrackerTargetsCompleted)(_In_ BOOL bWalkFailed) = 0;
    STDMETHOD(ReferenceTrackingCompleted)() = 0;
    STDMETHOD(SetReferenceTrackerHost)(_In_ IReferenceTrackerHost *pCLRServices) = 0;
};

class DECLSPEC_UUID("04b3486c-4687-4229-8d14-505ab584dd88") IFindReferenceTargetsCallback : public IUnknown
{
public:
    STDMETHOD(FoundTrackerTarget)(_In_ IReferenceTrackerTarget* target) = 0;
};

class DECLSPEC_UUID("11d3b13a-180e-4789-a8be-7712882893e6") IReferenceTracker : public IUnknown
{
public:
    STDMETHOD(ConnectFromTrackerSource)() = 0;
    STDMETHOD(DisconnectFromTrackerSource)() = 0;
    STDMETHOD(FindTrackerTargets)(_In_ IFindReferenceTargetsCallback *pCallback) = 0;
    STDMETHOD(GetReferenceTrackerManager)(_Outptr_ IReferenceTrackerManager **ppTrackerManager) = 0;
    STDMETHOD(AddRefFromTrackerSource)() = 0;
    STDMETHOD(ReleaseFromTrackerSource)() = 0;
    STDMETHOD(PegFromTrackerSource)() = 0;
};

#endif // _INTEROP_REFERENCETRACKERTYPES_H_