| Server IP : 209.209.40.120 / Your IP : 216.73.217.112 Web Server : Microsoft-IIS/10.0 System : Windows NT NEWWWW 10.0 build 17763 (Windows Server 2019) i586 User : NEWWWW$ ( 0) PHP Version : 8.3.30 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /Program Files (x86)/Windows Kits/10/Include/10.0.19041.0/um/ |
Upload File : |
cpp_quote("//=--------------------------------------------------------------------------=")
cpp_quote("// ActivProf.h")
cpp_quote("//=--------------------------------------------------------------------------=")
cpp_quote("// (C) Copyright 2000 Microsoft Corporation. All Rights Reserved.")
cpp_quote("//")
cpp_quote("// THIS CODE AND INFORMATION IS PROVIDED \"AS IS\" WITHOUT WARRANTY OF")
cpp_quote("// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO")
cpp_quote("// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A")
cpp_quote("// PARTICULAR PURPOSE.")
cpp_quote("//=--------------------------------------------------------------------------=")
cpp_quote("//")
cpp_quote("#include <winapifamily.h>")
#pragma region Desktop Family
cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)")
cpp_quote("// Disable /W4 compiler warning C4201: nameless struct/union")
cpp_quote("#pragma warning(push)")
cpp_quote("#pragma warning(disable:4201) // Disable C4201: nameless struct/union")
cpp_quote(" ") // Blank space
cpp_quote("#pragma comment(lib,\"uuid.lib\")")
cpp_quote("//")
cpp_quote("// Declarations for ActiveX Scripting profiling.")
cpp_quote("//")
cpp_quote("")
cpp_quote("const HRESULT ACTIVPROF_E_PROFILER_PRESENT = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0200);")
cpp_quote("const HRESULT ACTIVPROF_E_PROFILER_ABSENT = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0201);")
cpp_quote("const HRESULT ACTIVPROF_E_UNABLE_TO_APPLY_ACTION = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0202);")
cpp_quote("const ULONG PROFILER_HEAP_OBJECT_NAME_ID_UNAVAILABLE=(ULONG)-1;")
cpp_quote("")
cpp_quote("#ifndef __ActivProf_h")
cpp_quote("#define __ActivProf_h")
cpp_quote("")
import "unknwn.idl";
cpp_quote("/* GUIDs")
cpp_quote(" ********/")
cpp_quote("")
cpp_quote("#ifndef _NO_SCRIPT_GUIDS")
cpp_quote("// {32E4694E-0D37-419B-B93D-FA20DED6E8EA}")
cpp_quote("DEFINE_GUID(IID_IActiveScriptProfilerHeapEnum, 0x32e4694e, 0xd37, 0x419b, 0xb9, 0x3d, 0xfa, 0x20, 0xde, 0xd6, 0xe8, 0xea);")
cpp_quote("// {0B403015-F381-4023-A5D0-6FED076DE716}")
cpp_quote("DEFINE_GUID(IID_IActiveScriptProfilerControl3, 0xb403015, 0xf381, 0x4023, 0xa5, 0xd0, 0x6f, 0xed, 0x7, 0x6d, 0xe7, 0x16);")
cpp_quote("#endif // _NO_SCRIPT_GUIDS")
cpp_quote("")
typedef enum {
PROFILER_SCRIPT_TYPE_USER,
PROFILER_SCRIPT_TYPE_DYNAMIC,
PROFILER_SCRIPT_TYPE_NATIVE,
PROFILER_SCRIPT_TYPE_DOM
} PROFILER_SCRIPT_TYPE;
typedef enum {
PROFILER_EVENT_MASK_TRACE_SCRIPT_FUNCTION_CALL = 0x00000001,
PROFILER_EVENT_MASK_TRACE_NATIVE_FUNCTION_CALL = 0x00000002,
PROFILER_EVENT_MASK_TRACE_DOM_FUNCTION_CALL = 0x00000004,
PROFILER_EVENT_MASK_TRACE_ALL = PROFILER_EVENT_MASK_TRACE_SCRIPT_FUNCTION_CALL |
PROFILER_EVENT_MASK_TRACE_NATIVE_FUNCTION_CALL,
PROFILER_EVENT_MASK_TRACE_ALL_WITH_DOM = PROFILER_EVENT_MASK_TRACE_ALL |
PROFILER_EVENT_MASK_TRACE_DOM_FUNCTION_CALL
} PROFILER_EVENT_MASK;
typedef LONG PROFILER_TOKEN;
[
object,
uuid(784b5ff0-69b0-47d1-a7dc-2518f4230e90),
pointer_default(unique)
]
interface IActiveScriptProfilerControl : IUnknown
{
HRESULT StartProfiling([in] REFCLSID clsidProfilerObject,
[in] DWORD dwEventMask,
[in] DWORD dwContext);
HRESULT SetProfilerEventMask([in] DWORD dwEventMask);
HRESULT StopProfiling([in] HRESULT hrShutdownReason);
}
[
object,
uuid(47810165-498F-40be-94F1-653557E9E7DA),
pointer_default(unique)
]
interface IActiveScriptProfilerControl2 : IActiveScriptProfilerControl
{
HRESULT CompleteProfilerStart();
HRESULT PrepareProfilerStop();
}
typedef DWORD_PTR PROFILER_HEAP_OBJECT_ID;
typedef UINT PROFILER_HEAP_OBJECT_NAME_ID;
typedef void* PROFILER_EXTERNAL_OBJECT_ADDRESS;
typedef [v1_enum] enum {
PROFILER_HEAP_OBJECT_FLAGS_NEW_OBJECT = 0x00000001,
PROFILER_HEAP_OBJECT_FLAGS_IS_ROOT = 0x00000002,
PROFILER_HEAP_OBJECT_FLAGS_SITE_CLOSED = 0x00000004,
PROFILER_HEAP_OBJECT_FLAGS_EXTERNAL = 0x00000008,
PROFILER_HEAP_OBJECT_FLAGS_EXTERNAL_UNKNOWN = 0x00000010,
PROFILER_HEAP_OBJECT_FLAGS_EXTERNAL_DISPATCH = 0x00000020,
PROFILER_HEAP_OBJECT_FLAGS_SIZE_APPROXIMATE = 0x00000040,
PROFILER_HEAP_OBJECT_FLAGS_SIZE_UNAVAILABLE = 0x00000080,
PROFILER_HEAP_OBJECT_FLAGS_NEW_STATE_UNAVAILABLE = 0x00000100,
PROFILER_HEAP_OBJECT_FLAGS_WINRT_INSTANCE = 0x00000200,
PROFILER_HEAP_OBJECT_FLAGS_WINRT_RUNTIMECLASS = 0x00000400,
PROFILER_HEAP_OBJECT_FLAGS_WINRT_DELEGATE = 0x00000800,
PROFILER_HEAP_OBJECT_FLAGS_WINRT_NAMESPACE = 0x00001000,
} PROFILER_HEAP_OBJECT_FLAGS;
typedef [v1_enum] enum {
PROFILER_HEAP_OBJECT_OPTIONAL_INFO_PROTOTYPE = 0x00000001,
PROFILER_HEAP_OBJECT_OPTIONAL_INFO_FUNCTION_NAME = 0x00000002,
PROFILER_HEAP_OBJECT_OPTIONAL_INFO_SCOPE_LIST = 0x00000003,
PROFILER_HEAP_OBJECT_OPTIONAL_INFO_INTERNAL_PROPERTY = 0x00000004,
PROFILER_HEAP_OBJECT_OPTIONAL_INFO_NAME_PROPERTIES = 0x00000005,
PROFILER_HEAP_OBJECT_OPTIONAL_INFO_INDEX_PROPERTIES = 0x00000006,
PROFILER_HEAP_OBJECT_OPTIONAL_INFO_ELEMENT_ATTRIBUTES_SIZE = 0x00000007,
PROFILER_HEAP_OBJECT_OPTIONAL_INFO_ELEMENT_TEXT_CHILDREN_SIZE = 0x00000008,
PROFILER_HEAP_OBJECT_OPTIONAL_INFO_RELATIONSHIPS = 0x00000009,
PROFILER_HEAP_OBJECT_OPTIONAL_INFO_WINRTEVENTS = 0x0000000A,
PROFILER_HEAP_OBJECT_OPTIONAL_INFO_WEAKMAP_COLLECTION_LIST = 0x0000000B,
PROFILER_HEAP_OBJECT_OPTIONAL_INFO_MAP_COLLECTION_LIST = 0x0000000C,
PROFILER_HEAP_OBJECT_OPTIONAL_INFO_SET_COLLECTION_LIST = 0x0000000D,
PROFILER_HEAP_OBJECT_OPTIONAL_INFO_MAX_VALUE = PROFILER_HEAP_OBJECT_OPTIONAL_INFO_SET_COLLECTION_LIST
} PROFILER_HEAP_OBJECT_OPTIONAL_INFO_TYPE;
typedef [v1_enum] enum {
PROFILER_HEAP_OBJECT_RELATIONSHIP_FLAGS_NONE = 0x00000000,
PROFILER_HEAP_OBJECT_RELATIONSHIP_FLAGS_IS_GET_ACCESSOR = 0x00010000,
PROFILER_HEAP_OBJECT_RELATIONSHIP_FLAGS_IS_SET_ACCESSOR = 0x00020000,
PROFILER_HEAP_OBJECT_RELATIONSHIP_FLAGS_LET_VARIABLE = 0x00040000,
PROFILER_HEAP_OBJECT_RELATIONSHIP_FLAGS_CONST_VARIABLE = 0x00080000,
} PROFILER_HEAP_OBJECT_RELATIONSHIP_FLAGS;
typedef [v1_enum] enum {
// Default enumeration behavior.
PROFILER_HEAP_ENUM_FLAGS_NONE = 0x00000000,
// Enables functionality where PROFILER_HEAP_OBJECT_RELATIONSHIP_FLAGS are stored in the high
// 16 bits of the PROFILER_HEAP_OBJECT_RELATIONSHIP.relationshipInfo member.
PROFILER_HEAP_ENUM_FLAGS_STORE_RELATIONSHIP_FLAGS = 0x00000001,
// Used to display substring correctly
PROFILER_HEAP_ENUM_FLAGS_SUBSTRINGS = 0x00000002,
PROFILER_HEAP_ENUM_FLAGS_RELATIONSHIP_SUBSTRINGS = PROFILER_HEAP_ENUM_FLAGS_STORE_RELATIONSHIP_FLAGS |
PROFILER_HEAP_ENUM_FLAGS_SUBSTRINGS,
} PROFILER_HEAP_ENUM_FLAGS;
// PROFILER_HEAP_OBJECT_SCOPE_LIST is associated with function objects only. The scope list represents
// the closure for the function as a list scopes where each scope is a heap object with associated property list
// representing variables in each given scope.
// Note: In some cases, the names of objects in that scope might not be available, only their ids.
typedef struct _PROFILER_HEAP_OBJECT_SCOPE_LIST
{
UINT count;
[size_is(count)] PROFILER_HEAP_OBJECT_ID scopes[];
} PROFILER_HEAP_OBJECT_SCOPE_LIST;
typedef [v1_enum] enum {
PROFILER_PROPERTY_TYPE_NUMBER = 0x01,
PROFILER_PROPERTY_TYPE_STRING = 0x02,
PROFILER_PROPERTY_TYPE_HEAP_OBJECT = 0x03,
PROFILER_PROPERTY_TYPE_EXTERNAL_OBJECT = 0x04,
PROFILER_PROPERTY_TYPE_BSTR = 0x5,
PROFILER_PROPERTY_TYPE_SUBSTRING = 0x06,
} PROFILER_RELATIONSHIP_INFO;
typedef struct _PROFILER_PROPERTY_TYPE_SUBSTRING_INFO
{
UINT length;
LPCWSTR value;
} PROFILER_PROPERTY_TYPE_SUBSTRING_INFO;
typedef struct _PROFILER_HEAP_OBJECT_RELATIONSHIP
{
PROFILER_HEAP_OBJECT_NAME_ID relationshipId;
PROFILER_RELATIONSHIP_INFO relationshipInfo;
[switch_type(PROFILER_RELATIONSHIP_INFO), switch_is(relationshipInfo)] union
{
[case(PROFILER_PROPERTY_TYPE_NUMBER)] double numberValue;
[case(PROFILER_PROPERTY_TYPE_STRING)] LPCWSTR stringValue;
[case(PROFILER_PROPERTY_TYPE_BSTR)] BSTR bstrValue;
[case(PROFILER_PROPERTY_TYPE_HEAP_OBJECT)] PROFILER_HEAP_OBJECT_ID objectId;
[case(PROFILER_PROPERTY_TYPE_EXTERNAL_OBJECT)] PROFILER_EXTERNAL_OBJECT_ADDRESS externalObjectAddress;
[case(PROFILER_PROPERTY_TYPE_SUBSTRING)] PROFILER_PROPERTY_TYPE_SUBSTRING_INFO* subString;
};
} PROFILER_HEAP_OBJECT_RELATIONSHIP;
typedef struct _PROFILER_HEAP_OBJECT_RELATIONSHIP_LIST
{
UINT count;
[size_is(count)] PROFILER_HEAP_OBJECT_RELATIONSHIP elements[];
} PROFILER_HEAP_OBJECT_RELATIONSHIP_LIST;
typedef struct _PROFILER_HEAP_OBJECT_OPTIONAL_INFO
{
PROFILER_HEAP_OBJECT_OPTIONAL_INFO_TYPE infoType;
[switch_type(PROFILER_HEAP_OBJECT_OPTIONAL_INFO_TYPE), switch_is(infoType)] union
{
[case(PROFILER_HEAP_OBJECT_OPTIONAL_INFO_PROTOTYPE)] PROFILER_HEAP_OBJECT_ID prototype;
[case(PROFILER_HEAP_OBJECT_OPTIONAL_INFO_FUNCTION_NAME)] LPCWSTR functionName;
[case(PROFILER_HEAP_OBJECT_OPTIONAL_INFO_ELEMENT_ATTRIBUTES_SIZE)] UINT elementAttributesSize;
[case(PROFILER_HEAP_OBJECT_OPTIONAL_INFO_ELEMENT_TEXT_CHILDREN_SIZE)] UINT elementTextChildrenSize;
[case(PROFILER_HEAP_OBJECT_OPTIONAL_INFO_SCOPE_LIST)] PROFILER_HEAP_OBJECT_SCOPE_LIST* scopeList;
[case(PROFILER_HEAP_OBJECT_OPTIONAL_INFO_INTERNAL_PROPERTY)] PROFILER_HEAP_OBJECT_RELATIONSHIP* internalProperty;
[case(PROFILER_HEAP_OBJECT_OPTIONAL_INFO_NAME_PROPERTIES)] PROFILER_HEAP_OBJECT_RELATIONSHIP_LIST* namePropertyList;
[case(PROFILER_HEAP_OBJECT_OPTIONAL_INFO_INDEX_PROPERTIES)] PROFILER_HEAP_OBJECT_RELATIONSHIP_LIST* indexPropertyList;
[case(PROFILER_HEAP_OBJECT_OPTIONAL_INFO_RELATIONSHIPS)] PROFILER_HEAP_OBJECT_RELATIONSHIP_LIST* relationshipList;
[case(PROFILER_HEAP_OBJECT_OPTIONAL_INFO_WINRTEVENTS)] PROFILER_HEAP_OBJECT_RELATIONSHIP_LIST* eventList;
[case(PROFILER_HEAP_OBJECT_OPTIONAL_INFO_WEAKMAP_COLLECTION_LIST)] PROFILER_HEAP_OBJECT_RELATIONSHIP_LIST* weakMapCollectionList;
[case(PROFILER_HEAP_OBJECT_OPTIONAL_INFO_MAP_COLLECTION_LIST)] PROFILER_HEAP_OBJECT_RELATIONSHIP_LIST* mapCollectionList;
[case(PROFILER_HEAP_OBJECT_OPTIONAL_INFO_SET_COLLECTION_LIST)] PROFILER_HEAP_OBJECT_RELATIONSHIP_LIST* setCollectionList;
};
} PROFILER_HEAP_OBJECT_OPTIONAL_INFO;
/*
* Represents one object in the GC heap
*/
typedef struct _PROFILER_HEAP_OBJECT
{
UINT size;
union {
PROFILER_HEAP_OBJECT_ID objectId;
PROFILER_EXTERNAL_OBJECT_ADDRESS externalObjectAddress;
};
PROFILER_HEAP_OBJECT_NAME_ID typeNameId;
ULONG flags; // PROFILER_HEAP_OBJECT_FLAGS
USHORT unused;
USHORT optionalInfoCount;
} PROFILER_HEAP_OBJECT;
[
object,
uuid(32E4694E-0D37-419B-B93D-FA20DED6E8EA),
local,
pointer_default(unique)
]
interface IActiveScriptProfilerHeapEnum : IUnknown {
// Note: Caller should not free the returned memory assigned to each array element. Rather, should call
// IActiveScriptProfilerHeapEnum:FreeObjectAndOptionalInfo
HRESULT Next (
[in] ULONG celt,
[out, size_is(celt), length_is(*pceltFetched)] PROFILER_HEAP_OBJECT** heapObjects,
[out] ULONG *pceltFetched);
// Note: Caller should not free the returned memory assigned to each array element. Rather, should call
// IActiveScriptProfilerHeapEnum:FreeObjectAndOptionalInfo
HRESULT GetOptionalInfo (
[in] PROFILER_HEAP_OBJECT* heapObject,
[in] ULONG celt,
[out, size_is(celt)] PROFILER_HEAP_OBJECT_OPTIONAL_INFO* optionalInfo);
HRESULT FreeObjectAndOptionalInfo (
[in] ULONG celt,
[in, size_is(celt)] PROFILER_HEAP_OBJECT** heapObjects);
// Note: The returned embedded pointers are not CoTaskMemAllocated. Caller should not
// explicitly free them.
HRESULT GetNameIdMap (
[out, size_is(,*pcelt)] LPCWSTR* pNameList[],
[out] UINT *pcelt);
};
[
object,
uuid(0B403015-F381-4023-A5D0-6FED076DE716),
pointer_default(unique)
]
interface IActiveScriptProfilerControl3 : IActiveScriptProfilerControl2
{
HRESULT EnumHeap([out] IActiveScriptProfilerHeapEnum** ppEnum);
}
typedef [v1_enum] enum {
PROFILER_HEAP_SUMMARY_VERSION_1 = 0x00000001,
} PROFILER_HEAP_SUMMARY_VERSION;
typedef struct _PROFILER_HEAP_SUMMARY
{
PROFILER_HEAP_SUMMARY_VERSION version;
UINT totalHeapSize;
} PROFILER_HEAP_SUMMARY;
[
object,
uuid(160F94FD-9DBC-40D4-9EAC-2B71DB3132F4),
pointer_default(unique)
]
interface IActiveScriptProfilerControl4 : IActiveScriptProfilerControl3
{
HRESULT SummarizeHeap([in, out] PROFILER_HEAP_SUMMARY* heapSummary);
}
[
object,
uuid(1C01A2D1-8F0F-46A5-9720-0D7ED2C62F0A),
pointer_default(unique)
]
interface IActiveScriptProfilerControl5 : IActiveScriptProfilerControl4
{
HRESULT EnumHeap2([in] PROFILER_HEAP_ENUM_FLAGS enumFlags, [out] IActiveScriptProfilerHeapEnum** ppEnum);
}
[
object,
uuid(740eca23-7d9d-42e5-ba9d-f8b24b1c7a9b),
pointer_default(unique)
]
interface IActiveScriptProfilerCallback : IUnknown
{
HRESULT Initialize([in] DWORD dwContext);
HRESULT Shutdown([in] HRESULT hrReason);
HRESULT ScriptCompiled([in] PROFILER_TOKEN scriptId,
[in] PROFILER_SCRIPT_TYPE type,
[in] IUnknown *pIDebugDocumentContext);
HRESULT FunctionCompiled([in] PROFILER_TOKEN functionId,
[in] PROFILER_TOKEN scriptId,
[in] [string] const WCHAR *pwszFunctionName,
[in] [string] const WCHAR *pwszFunctionNameHint,
[in] IUnknown *pIDebugDocumentContext);
HRESULT OnFunctionEnter([in] PROFILER_TOKEN scriptId,
[in] PROFILER_TOKEN functionId);
HRESULT OnFunctionExit([in] PROFILER_TOKEN scriptId,
[in] PROFILER_TOKEN functionId);
};
[
object,
uuid(31B7F8AD-A637-409C-B22F-040995B6103D),
pointer_default(unique)
]
interface IActiveScriptProfilerCallback2 : IActiveScriptProfilerCallback
{
HRESULT OnFunctionEnterByName([in] [string] const WCHAR *pwszFunctionName,
[in] PROFILER_SCRIPT_TYPE type);
HRESULT OnFunctionExitByName([in] [string] const WCHAR *pwszFunctionName,
[in] PROFILER_SCRIPT_TYPE type);
};
[
object,
uuid(6ac5ad25-2037-4687-91df-b59979d93d73),
pointer_default(unique)
]
interface IActiveScriptProfilerCallback3 : IActiveScriptProfilerCallback2
{
HRESULT SetWebWorkerId([in] DWORD webWorkerId);
};
cpp_quote("")
cpp_quote("#endif // __ActivProf_h")
cpp_quote("")
//
// Restore the previous setting for C4201 compiler warning
//
cpp_quote("// Restore the previous setting for C4201 compiler warning")
cpp_quote("#pragma warning(pop)")
cpp_quote("#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */")
#pragma endregion