#ifndef _SUBPROCESSTAG_H #define _SUBPROCESSTAG_H // Subprocess tag information typedef enum _TAG_INFO_LEVEL { eTagInfoLevelNameFromTag = 1, // TAG_INFO_NAME_FROM_TAG eTagInfoLevelNamesReferencingModule, // TAG_INFO_NAMES_REFERENCING_MODULE eTagInfoLevelNameTagMapping, // TAG_INFO_NAME_TAG_MAPPING eTagInfoLevelMax } TAG_INFO_LEVEL; typedef enum _TAG_TYPE { eTagTypeService = 1, eTagTypeMax } TAG_TYPE; typedef struct _TAG_INFO_NAME_FROM_TAG_IN_PARAMS { DWORD dwPid; DWORD dwTag; } TAG_INFO_NAME_FROM_TAG_IN_PARAMS, *PTAG_INFO_NAME_FROM_TAG_IN_PARAMS; typedef struct _TAG_INFO_NAME_FROM_TAG_OUT_PARAMS { DWORD eTagType; LPWSTR pszName; } TAG_INFO_NAME_FROM_TAG_OUT_PARAMS, *PTAG_INFO_NAME_FROM_TAG_OUT_PARAMS; typedef struct _TAG_INFO_NAME_FROM_TAG { TAG_INFO_NAME_FROM_TAG_IN_PARAMS InParams; TAG_INFO_NAME_FROM_TAG_OUT_PARAMS OutParams; } TAG_INFO_NAME_FROM_TAG, *PTAG_INFO_NAME_FROM_TAG; typedef struct _TAG_INFO_NAMES_REFERENCING_MODULE_IN_PARAMS { DWORD dwPid; LPWSTR pszModule; } TAG_INFO_NAMES_REFERENCING_MODULE_IN_PARAMS, *PTAG_INFO_NAMES_REFERENCING_MODULE_IN_PARAMS; typedef struct _TAG_INFO_NAMES_REFERENCING_MODULE_OUT_PARAMS { DWORD eTagType; LPWSTR pmszNames; } TAG_INFO_NAMES_REFERENCING_MODULE_OUT_PARAMS, *PTAG_INFO_NAMES_REFERENCING_MODULE_OUT_PARAMS; typedef struct _TAG_INFO_NAMES_REFERENCING_MODULE { TAG_INFO_NAMES_REFERENCING_MODULE_IN_PARAMS InParams; TAG_INFO_NAMES_REFERENCING_MODULE_OUT_PARAMS OutParams; } TAG_INFO_NAMES_REFERENCING_MODULE, *PTAG_INFO_NAMES_REFERENCING_MODULE; typedef struct _TAG_INFO_NAME_TAG_MAPPING_IN_PARAMS { DWORD dwPid; } TAG_INFO_NAME_TAG_MAPPING_IN_PARAMS, *PTAG_INFO_NAME_TAG_MAPPING_IN_PARAMS; typedef struct _TAG_INFO_NAME_TAG_MAPPING_ELEMENT { DWORD eTagType; DWORD dwTag; LPWSTR pszName; LPWSTR pszGroupName; } TAG_INFO_NAME_TAG_MAPPING_ELEMENT, *PTAG_INFO_NAME_TAG_MAPPING_ELEMENT; typedef struct _TAG_INFO_NAME_TAG_MAPPING_OUT_PARAMS { DWORD cElements; PTAG_INFO_NAME_TAG_MAPPING_ELEMENT pNameTagMappingElements; } TAG_INFO_NAME_TAG_MAPPING_OUT_PARAMS, *PTAG_INFO_NAME_TAG_MAPPING_OUT_PARAMS; typedef struct _TAG_INFO_NAME_TAG_MAPPING { TAG_INFO_NAME_TAG_MAPPING_IN_PARAMS InParams; PTAG_INFO_NAME_TAG_MAPPING_OUT_PARAMS pOutParams; } TAG_INFO_NAME_TAG_MAPPING, *PTAG_INFO_NAME_TAG_MAPPING; _Must_inspect_result_ DWORD WINAPI I_QueryTagInformation( _In_opt_ LPCWSTR pszMachineName, _In_ TAG_INFO_LEVEL eInfoLevel, _Inout_ PVOID pTagInfo ); typedef DWORD (WINAPI *PQUERY_TAG_INFORMATION)( _In_opt_ LPCWSTR pszMachineName, _In_ TAG_INFO_LEVEL eInfoLevel, _Inout_ PVOID pTagInfo ); #endif