summaryrefslogtreecommitdiff
path: root/src/win32ctl/include/wmistr.h
blob: 5fceb2f0b2dd3bf555a79527e88d8fbe0ca55674 (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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
/**
 * This file has no copyright assigned and is placed in the Public Domain.
 * This file is part of the w64 mingw-runtime package.
 * No warranty is given; refer to the file DISCLAIMER.PD within this package.
 */
#ifndef _WMISTR_
#define _WMISTR_

/* --- start added by kenj */
#undef __MINGW_EXTENSION
#if defined(__GNUC__) || defined(__GNUG__)
#define __MINGW_EXTENSION	__extension__
#else
#define __MINGW_EXTENSION
#endif

#ifndef __C89_NAMELESS
#define __C89_NAMELESS __MINGW_EXTENSION

#define __C89_NAMELESSSTRUCTNAME
#define __C89_NAMELESSUNIONNAME
#endif
/* --- end added by kenj */

typedef struct _WNODE_HEADER {
  ULONG BufferSize;
  ULONG ProviderId;
  __C89_NAMELESS union {
    ULONG64 HistoricalContext;
    __C89_NAMELESS struct {
      ULONG Version;
      ULONG Linkage;
    };
  };
  __C89_NAMELESS union {
    ULONG CountLost;
    HANDLE KernelHandle;
    LARGE_INTEGER TimeStamp;
  };
  GUID Guid;
  ULONG ClientContext;
  ULONG Flags;
} WNODE_HEADER,*PWNODE_HEADER;

#define WNODE_FLAG_ALL_DATA 0x00000001
#define WNODE_FLAG_SINGLE_INSTANCE 0x00000002
#define WNODE_FLAG_SINGLE_ITEM 0x00000004
#define WNODE_FLAG_EVENT_ITEM 0x00000008
#define WNODE_FLAG_FIXED_INSTANCE_SIZE 0x00000010
#define WNODE_FLAG_TOO_SMALL 0x00000020
#define WNODE_FLAG_INSTANCES_SAME 0x00000040
#define WNODE_FLAG_STATIC_INSTANCE_NAMES 0x00000080
#define WNODE_FLAG_INTERNAL 0x00000100
#define WNODE_FLAG_USE_TIMESTAMP 0x00000200
#define WNODE_FLAG_PERSIST_EVENT 0x00000400
#define WNODE_FLAG_EVENT_REFERENCE 0x00002000
#define WNODE_FLAG_ANSI_INSTANCENAMES 0x00004000
#define WNODE_FLAG_METHOD_ITEM 0x00008000
#define WNODE_FLAG_PDO_INSTANCE_NAMES 0x00010000
#define WNODE_FLAG_TRACED_GUID 0x00020000
#define WNODE_FLAG_LOG_WNODE 0x00040000
#define WNODE_FLAG_USE_GUID_PTR 0x00080000
#define WNODE_FLAG_USE_MOF_PTR 0x00100000
#define WNODE_FLAG_NO_HEADER 0x00200000
#define WNODE_FLAG_SEVERITY_MASK 0xff000000

typedef struct {
  ULONG OffsetInstanceData;
  ULONG LengthInstanceData;
} OFFSETINSTANCEDATAANDLENGTH,*POFFSETINSTANCEDATAANDLENGTH;

typedef struct tagWNODE_ALL_DATA {
  struct _WNODE_HEADER WnodeHeader;
  ULONG DataBlockOffset;
  ULONG InstanceCount;
  ULONG OffsetInstanceNameOffsets;
  __C89_NAMELESS union {
    ULONG FixedInstanceSize;
    OFFSETINSTANCEDATAANDLENGTH OffsetInstanceDataAndLength[1];
  };
} WNODE_ALL_DATA,*PWNODE_ALL_DATA;

typedef struct tagWNODE_SINGLE_INSTANCE {
  struct _WNODE_HEADER WnodeHeader;
  ULONG OffsetInstanceName;
  ULONG InstanceIndex;
  ULONG DataBlockOffset;
  ULONG SizeDataBlock;
  UCHAR VariableData[];
} WNODE_SINGLE_INSTANCE,*PWNODE_SINGLE_INSTANCE;

typedef struct tagWNODE_SINGLE_ITEM {
  struct _WNODE_HEADER WnodeHeader;
  ULONG OffsetInstanceName;
  ULONG InstanceIndex;
  ULONG ItemId;
  ULONG DataBlockOffset;
  ULONG SizeDataItem;
  UCHAR VariableData[];
} WNODE_SINGLE_ITEM,*PWNODE_SINGLE_ITEM;

typedef struct tagWNODE_METHOD_ITEM {
  struct _WNODE_HEADER WnodeHeader;
  ULONG OffsetInstanceName;
  ULONG InstanceIndex;
  ULONG MethodId;
  ULONG DataBlockOffset;
  ULONG SizeDataBlock;
  UCHAR VariableData[];
} WNODE_METHOD_ITEM,*PWNODE_METHOD_ITEM;

typedef struct tagWNODE_EVENT_ITEM {
  struct _WNODE_HEADER WnodeHeader;
} WNODE_EVENT_ITEM,*PWNODE_EVENT_ITEM;

typedef struct tagWNODE_EVENT_REFERENCE {
  struct _WNODE_HEADER WnodeHeader;
  GUID TargetGuid;
  ULONG TargetDataBlockSize;
  __C89_NAMELESS union {
    ULONG TargetInstanceIndex;
    WCHAR TargetInstanceName[1];
  };
} WNODE_EVENT_REFERENCE,*PWNODE_EVENT_REFERENCE;

typedef struct tagWNODE_TOO_SMALL {
  struct _WNODE_HEADER WnodeHeader;
  ULONG SizeNeeded;
} WNODE_TOO_SMALL,*PWNODE_TOO_SMALL;

typedef struct {
  GUID Guid;
  ULONG Flags;
  ULONG InstanceCount;
  __C89_NAMELESS union {
    ULONG InstanceNameList;
    ULONG BaseNameOffset;
    ULONG_PTR Pdo;
    ULONG_PTR InstanceInfo;
  };
} WMIREGGUIDW,*PWMIREGGUIDW;

typedef WMIREGGUIDW WMIREGGUID;
typedef PWMIREGGUIDW PWMIREGGUID;

#define WMIREG_FLAG_EXPENSIVE 0x00000001
#define WMIREG_FLAG_INSTANCE_LIST 0x00000004
#define WMIREG_FLAG_INSTANCE_BASENAME 0x00000008
#define WMIREG_FLAG_INSTANCE_PDO 0x00000020
#define WMIREG_FLAG_REMOVE_GUID 0x00010000
#define WMIREG_FLAG_RESERVED1 0x00020000
#define WMIREG_FLAG_RESERVED2 0x00040000
#define WMIREG_FLAG_TRACED_GUID 0x00080000
#define WMIREG_FLAG_TRACE_CONTROL_GUID 0x00001000
#define WMIREG_FLAG_EVENT_ONLY_GUID 0x00000040

typedef struct {
  ULONG BufferSize;
  ULONG NextWmiRegInfo;
  ULONG RegistryPath;
  ULONG MofResourceName;
  ULONG GuidCount;
  WMIREGGUIDW WmiRegGuid[];
} WMIREGINFOW,*PWMIREGINFOW;

typedef WMIREGINFOW WMIREGINFO;
typedef PWMIREGINFOW PWMIREGINFO;

typedef enum {
  WMI_GET_ALL_DATA = 0,WMI_GET_SINGLE_INSTANCE = 1,WMI_SET_SINGLE_INSTANCE = 2,WMI_SET_SINGLE_ITEM = 3,WMI_ENABLE_EVENTS = 4,WMI_DISABLE_EVENTS = 5,
  WMI_ENABLE_COLLECTION = 6,WMI_DISABLE_COLLECTION = 7,WMI_REGINFO = 8,WMI_EXECUTE_METHOD = 9
} WMIDPREQUESTCODE;

#if defined(_WINNT_) || defined(WINNT)

#define WMI_GUIDTYPE_TRACECONTROL 0
#define WMI_GUIDTYPE_TRACE 1
#define WMI_GUIDTYPE_DATA 2
#define WMI_GUIDTYPE_EVENT 3

#define WMIGUID_QUERY 0x0001
#define WMIGUID_SET 0x0002
#define WMIGUID_NOTIFICATION 0x0004
#define WMIGUID_READ_DESCRIPTION 0x0008
#define WMIGUID_EXECUTE 0x0010
#define TRACELOG_CREATE_REALTIME 0x0020
#define TRACELOG_CREATE_ONDISK 0x0040
#define TRACELOG_GUID_ENABLE 0x0080
#define TRACELOG_ACCESS_KERNEL_LOGGER 0x0100
#define TRACELOG_CREATE_INPROC 0x0200
#define TRACELOG_ACCESS_REALTIME 0x0400
#define TRACELOG_REGISTER_GUIDS 0x0800

#define WMIGUID_ALL_ACCESS (STANDARD_RIGHTS_READ | SYNCHRONIZE | WMIGUID_QUERY | WMIGUID_SET | WMIGUID_NOTIFICATION | WMIGUID_READ_DESCRIPTION | WMIGUID_EXECUTE | TRACELOG_CREATE_REALTIME | TRACELOG_CREATE_ONDISK | TRACELOG_GUID_ENABLE | TRACELOG_ACCESS_KERNEL_LOGGER | TRACELOG_CREATE_INPROC | TRACELOG_ACCESS_REALTIME | TRACELOG_REGISTER_GUIDS)

#define WMI_GLOBAL_LOGGER_ID 0x0001
#endif
#endif