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#ifndef __DACCESS_GCINTERFACE_DAC_H__
5#define __DACCESS_GCINTERFACE_DAC_H__
6
7#include "../../gc/gcinterface.dac.h"
8
9// The following six function prototypes are for functions that are used by the DAC
10// to inspect the handle table in detail. The semantics of these functions MUST be
11// versioned along with the rest of this interface - any changes in semantics
12// must be accompanied with a major versino bump.
13//
14// Please do not add any additional functions to this list; we'd like to keep it
15// to an absolute minimum.
16#ifdef DACCESS_COMPILE
17// for DAC builds, OBJECTHANDLE is a uintptr_t.
18GC_DAC_VISIBLE
19OBJECTREF GetDependentHandleSecondary(OBJECTHANDLE handle);
20
21GC_DAC_VISIBLE_NO_MANGLE
22void HndScanHandlesForGC(
23 DPTR(dac_handle_table) hTable,
24 HANDLESCANPROC scanProc,
25 uintptr_t param1,
26 uintptr_t param2,
27 const uint32_t *types,
28 uint32_t typeCount,
29 uint32_t condemned,
30 uint32_t maxGen,
31 uint32_t flags);
32
33GC_DAC_VISIBLE_NO_MANGLE
34void HndEnumHandles(
35 DPTR(dac_handle_table) hTable,
36 const uint32_t *puType,
37 uint32_t uTypeCount,
38 HANDLESCANPROC pfnEnum,
39 uintptr_t lParam1,
40 uintptr_t lParam2,
41 bool fAsync);
42
43GC_DAC_VISIBLE
44OBJECTREF HndFetchHandle(OBJECTHANDLE handle);
45
46GC_DAC_VISIBLE
47struct ADIndex HndGetHandleADIndex(OBJECTHANDLE handle);
48
49GC_DAC_VISIBLE
50uintptr_t HndGetHandleExtraInfo(OBJECTHANDLE handle);
51
52#endif // DACCESS_COMPILE
53
54#endif // __DACCESS_GCINTERFACE_DAC_H__
55