forked from winsiderss/systeminformer
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathappsup.h
More file actions
468 lines (401 loc) · 9.78 KB
/
Copy pathappsup.h
File metadata and controls
468 lines (401 loc) · 9.78 KB
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
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
#ifndef PH_APPSUP_H
#define PH_APPSUP_H
extern GUID XP_CONTEXT_GUID;
extern GUID VISTA_CONTEXT_GUID;
extern GUID WIN7_CONTEXT_GUID;
extern GUID WIN8_CONTEXT_GUID;
extern GUID WINBLUE_CONTEXT_GUID;
extern GUID WINTHRESHOLD_CONTEXT_GUID;
typedef struct PACKAGE_ID PACKAGE_ID;
// begin_phapppub
PHAPPAPI
BOOLEAN
NTAPI
PhGetProcessIsSuspended(
_In_ PSYSTEM_PROCESS_INFORMATION Process
);
// end_phapppub
NTSTATUS PhGetProcessSwitchContext(
_In_ HANDLE ProcessHandle,
_Out_ PGUID Guid
);
PPH_STRING PhGetProcessPackageFullName(
_In_ HANDLE ProcessHandle
);
PACKAGE_ID *PhPackageIdFromFullName(
_In_ PWSTR PackageFullName
);
PPH_STRING PhGetPackagePath(
_In_ PACKAGE_ID *PackageId
);
// begin_phapppub
typedef enum _PH_KNOWN_PROCESS_TYPE
{
UnknownProcessType,
SystemProcessType, // ntoskrnl/ntkrnlpa/...
SessionManagerProcessType, // smss
WindowsSubsystemProcessType, // csrss
WindowsStartupProcessType, // wininit
ServiceControlManagerProcessType, // services
LocalSecurityAuthorityProcessType, // lsass
LocalSessionManagerProcessType, // lsm
WindowsLogonProcessType, // winlogon
ServiceHostProcessType, // svchost
RunDllAsAppProcessType, // rundll32
ComSurrogateProcessType, // dllhost
TaskHostProcessType, // taskeng, taskhost, taskhostex
ExplorerProcessType, // explorer
UmdfHostProcessType, // wudfhost
MaximumProcessType,
KnownProcessTypeMask = 0xffff,
KnownProcessWow64 = 0x20000
} PH_KNOWN_PROCESS_TYPE;
PHAPPAPI
NTSTATUS
NTAPI
PhGetProcessKnownType(
_In_ HANDLE ProcessHandle,
_Out_ PH_KNOWN_PROCESS_TYPE *KnownProcessType
);
typedef union _PH_KNOWN_PROCESS_COMMAND_LINE
{
struct
{
PPH_STRING GroupName;
} ServiceHost;
struct
{
PPH_STRING FileName;
PPH_STRING ProcedureName;
} RunDllAsApp;
struct
{
GUID Guid;
PPH_STRING Name; // optional
PPH_STRING FileName; // optional
} ComSurrogate;
} PH_KNOWN_PROCESS_COMMAND_LINE, *PPH_KNOWN_PROCESS_COMMAND_LINE;
PHAPPAPI
BOOLEAN
NTAPI
PhaGetProcessKnownCommandLine(
_In_ PPH_STRING CommandLine,
_In_ PH_KNOWN_PROCESS_TYPE KnownProcessType,
_Out_ PPH_KNOWN_PROCESS_COMMAND_LINE KnownCommandLine
);
// end_phapppub
typedef BOOLEAN (CALLBACK *PH_CHILD_ENUM_CALLBACK)(
_In_ HWND WindowHandle,
_In_opt_ PVOID Context
);
VOID PhEnumChildWindows(
_In_opt_ HWND WindowHandle,
_In_ ULONG Limit,
_In_ PH_CHILD_ENUM_CALLBACK Callback,
_In_ PVOID Context
);
HWND PhGetProcessMainWindow(
_In_ HANDLE ProcessId,
_In_opt_ HANDLE ProcessHandle
);
HWND PhGetProcessMainWindowEx(
_In_ HANDLE ProcessId,
_In_opt_ HANDLE ProcessHandle,
_In_ BOOLEAN SkipInvisible
);
PPH_STRING PhGetServiceRelevantFileName(
_In_ PPH_STRINGREF ServiceName,
_In_ SC_HANDLE ServiceHandle
);
PPH_STRING PhEscapeStringForDelimiter(
_In_ PPH_STRING String,
_In_ WCHAR Delimiter
);
PPH_STRING PhUnescapeStringForDelimiter(
_In_ PPH_STRING String,
_In_ WCHAR Delimiter
);
// begin_phapppub
PHAPPAPI
VOID
NTAPI
PhSearchOnlineString(
_In_ HWND hWnd,
_In_ PWSTR String
);
PHAPPAPI
VOID
NTAPI
PhShellExecuteUserString(
_In_ HWND hWnd,
_In_ PWSTR Setting,
_In_ PWSTR String,
_In_ BOOLEAN UseShellExecute,
_In_opt_ PWSTR ErrorMessage
);
PHAPPAPI
VOID
NTAPI
PhLoadSymbolProviderOptions(
_Inout_ PPH_SYMBOL_PROVIDER SymbolProvider
);
// end_phapppub
PWSTR PhMakeContextAtom(
VOID
);
// begin_phapppub
PHAPPAPI
VOID
NTAPI
PhCopyListViewInfoTip(
_Inout_ LPNMLVGETINFOTIP GetInfoTip,
_In_ PPH_STRINGREF Tip
);
PHAPPAPI
VOID
NTAPI
PhCopyListView(
_In_ HWND ListViewHandle
);
PHAPPAPI
VOID
NTAPI
PhHandleListViewNotifyForCopy(
_In_ LPARAM lParam,
_In_ HWND ListViewHandle
);
// end_phapppub
#define PH_LIST_VIEW_CTRL_C_BEHAVIOR 0x1
#define PH_LIST_VIEW_CTRL_A_BEHAVIOR 0x2
#define PH_LIST_VIEW_DEFAULT_1_BEHAVIORS (PH_LIST_VIEW_CTRL_C_BEHAVIOR | PH_LIST_VIEW_CTRL_A_BEHAVIOR)
VOID PhHandleListViewNotifyBehaviors(
_In_ LPARAM lParam,
_In_ HWND ListViewHandle,
_In_ ULONG Behaviors
);
// begin_phapppub
PHAPPAPI
BOOLEAN
NTAPI
PhGetListViewContextMenuPoint(
_In_ HWND ListViewHandle,
_Out_ PPOINT Point
);
// end_phapppub
VOID PhSetWindowOpacity(
_In_ HWND WindowHandle,
_In_ ULONG OpacityPercent
);
#define PH_OPACITY_TO_ID(Opacity) (ID_OPACITY_10 + (10 - (Opacity) / 10) - 1)
#define PH_ID_TO_OPACITY(Id) (100 - (((Id) - ID_OPACITY_10) + 1) * 10)
// begin_phapppub
PHAPPAPI
PPH_STRING
NTAPI
PhGetPhVersion(
VOID
);
PHAPPAPI
VOID
NTAPI
PhGetPhVersionNumbers(
_Out_opt_ PULONG MajorVersion,
_Out_opt_ PULONG MinorVersion,
_Reserved_ PULONG Reserved,
_Out_opt_ PULONG RevisionNumber
);
PHAPPAPI
VOID
NTAPI
PhWritePhTextHeader(
_Inout_ PPH_FILE_STREAM FileStream
);
#define PH_SHELL_APP_PROPAGATE_PARAMETERS 0x1
#define PH_SHELL_APP_PROPAGATE_PARAMETERS_IGNORE_VISIBILITY 0x2
#define PH_SHELL_APP_PROPAGATE_PARAMETERS_FORCE_SETTINGS 0x4
PHAPPAPI
BOOLEAN
NTAPI
PhShellProcessHacker(
_In_opt_ HWND hWnd,
_In_opt_ PWSTR Parameters,
_In_ ULONG ShowWindowType,
_In_ ULONG Flags,
_In_ ULONG AppFlags,
_In_opt_ ULONG Timeout,
_Out_opt_ PHANDLE ProcessHandle
);
// end_phapppub
BOOLEAN PhShellProcessHackerEx(
_In_opt_ HWND hWnd,
_In_opt_ PWSTR FileName,
_In_opt_ PWSTR Parameters,
_In_ ULONG ShowWindowType,
_In_ ULONG Flags,
_In_ ULONG AppFlags,
_In_opt_ ULONG Timeout,
_Out_opt_ PHANDLE ProcessHandle
);
BOOLEAN PhCreateProcessIgnoreIfeoDebugger(
_In_ PWSTR FileName
);
// begin_phapppub
typedef struct _PH_TN_COLUMN_MENU_DATA
{
HWND TreeNewHandle;
PPH_TREENEW_HEADER_MOUSE_EVENT MouseEvent;
ULONG DefaultSortColumn;
PH_SORT_ORDER DefaultSortOrder;
struct _PH_EMENU_ITEM *Menu;
struct _PH_EMENU_ITEM *Selection;
ULONG ProcessedId;
} PH_TN_COLUMN_MENU_DATA, *PPH_TN_COLUMN_MENU_DATA;
#define PH_TN_COLUMN_MENU_HIDE_COLUMN_ID ((ULONG)-1)
#define PH_TN_COLUMN_MENU_CHOOSE_COLUMNS_ID ((ULONG)-2)
#define PH_TN_COLUMN_MENU_SIZE_COLUMN_TO_FIT_ID ((ULONG)-3)
#define PH_TN_COLUMN_MENU_SIZE_ALL_COLUMNS_TO_FIT_ID ((ULONG)-4)
#define PH_TN_COLUMN_MENU_RESET_SORT_ID ((ULONG)-5)
PHAPPAPI
VOID
NTAPI
PhInitializeTreeNewColumnMenu(
_Inout_ PPH_TN_COLUMN_MENU_DATA Data
);
// end_phapppub
#define PH_TN_COLUMN_MENU_NO_VISIBILITY 0x1
#define PH_TN_COLUMN_MENU_SHOW_RESET_SORT 0x2
VOID PhInitializeTreeNewColumnMenuEx(
_Inout_ PPH_TN_COLUMN_MENU_DATA Data,
_In_ ULONG Flags
);
// begin_phapppub
PHAPPAPI
BOOLEAN
NTAPI
PhHandleTreeNewColumnMenu(
_Inout_ PPH_TN_COLUMN_MENU_DATA Data
);
PHAPPAPI
VOID
NTAPI
PhDeleteTreeNewColumnMenu(
_In_ PPH_TN_COLUMN_MENU_DATA Data
);
typedef struct _PH_TN_FILTER_SUPPORT
{
PPH_LIST FilterList;
HWND TreeNewHandle;
PPH_LIST NodeList;
} PH_TN_FILTER_SUPPORT, *PPH_TN_FILTER_SUPPORT;
typedef BOOLEAN (NTAPI *PPH_TN_FILTER_FUNCTION)(
_In_ PPH_TREENEW_NODE Node,
_In_opt_ PVOID Context
);
typedef struct _PH_TN_FILTER_ENTRY
{
PPH_TN_FILTER_FUNCTION Filter;
PVOID Context;
} PH_TN_FILTER_ENTRY, *PPH_TN_FILTER_ENTRY;
PHAPPAPI
VOID
NTAPI
PhInitializeTreeNewFilterSupport(
_Out_ PPH_TN_FILTER_SUPPORT Support,
_In_ HWND TreeNewHandle,
_In_ PPH_LIST NodeList
);
PHAPPAPI
VOID
NTAPI
PhDeleteTreeNewFilterSupport(
_In_ PPH_TN_FILTER_SUPPORT Support
);
PHAPPAPI
PPH_TN_FILTER_ENTRY
NTAPI
PhAddTreeNewFilter(
_In_ PPH_TN_FILTER_SUPPORT Support,
_In_ PPH_TN_FILTER_FUNCTION Filter,
_In_opt_ PVOID Context
);
PHAPPAPI
VOID
NTAPI
PhRemoveTreeNewFilter(
_In_ PPH_TN_FILTER_SUPPORT Support,
_In_ PPH_TN_FILTER_ENTRY Entry
);
PHAPPAPI
BOOLEAN
NTAPI
PhApplyTreeNewFiltersToNode(
_In_ PPH_TN_FILTER_SUPPORT Support,
_In_ PPH_TREENEW_NODE Node
);
PHAPPAPI
VOID
NTAPI
PhApplyTreeNewFilters(
_In_ PPH_TN_FILTER_SUPPORT Support
);
// end_phapppub
typedef struct _PH_COPY_CELL_CONTEXT
{
HWND TreeNewHandle;
ULONG Id; // column ID
PPH_STRING MenuItemText;
} PH_COPY_CELL_CONTEXT, *PPH_COPY_CELL_CONTEXT;
BOOLEAN PhInsertCopyCellEMenuItem(
_In_ struct _PH_EMENU_ITEM *Menu,
_In_ ULONG InsertAfterId,
_In_ HWND TreeNewHandle,
_In_ PPH_TREENEW_COLUMN Column
);
BOOLEAN PhHandleCopyCellEMenuItem(
_In_ struct _PH_EMENU_ITEM *SelectedItem
);
BOOLEAN PhShellOpenKey2(
_In_ HWND hWnd,
_In_ PPH_STRING KeyName
);
PPH_STRING PhPcre2GetErrorMessage(
_In_ INT ErrorCode
);
#define PH_LOAD_SHARED_ICON_SMALL(BaseAddress, Name) PhLoadIcon(BaseAddress, (Name), PH_LOAD_ICON_SHARED | PH_LOAD_ICON_SIZE_SMALL, 0, 0) // phapppub
#define PH_LOAD_SHARED_ICON_LARGE(BaseAddress, Name) PhLoadIcon(BaseAddress, (Name), PH_LOAD_ICON_SHARED | PH_LOAD_ICON_SIZE_LARGE, 0, 0) // phapppub
FORCEINLINE PVOID PhpGenericPropertyPageHeader(
_In_ HWND hwndDlg,
_In_ UINT uMsg,
_In_ WPARAM wParam,
_In_ LPARAM lParam,
_In_ PWSTR ContextName
)
{
PVOID context;
switch (uMsg)
{
case WM_INITDIALOG:
{
LPPROPSHEETPAGE propSheetPage = (LPPROPSHEETPAGE)lParam;
context = (PVOID)propSheetPage->lParam;
SetProp(hwndDlg, ContextName, (HANDLE)context);
}
break;
case WM_DESTROY:
{
context = (PVOID)GetProp(hwndDlg, ContextName);
RemoveProp(hwndDlg, ContextName);
}
break;
default:
{
context = (PVOID)GetProp(hwndDlg, ContextName);
}
break;
}
return context;
}
#define SWP_NO_ACTIVATE_MOVE_SIZE_ZORDER (SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER)
#define SWP_SHOWWINDOW_ONLY (SWP_NO_ACTIVATE_MOVE_SIZE_ZORDER | SWP_SHOWWINDOW)
#define SWP_HIDEWINDOW_ONLY (SWP_NO_ACTIVATE_MOVE_SIZE_ZORDER | SWP_HIDEWINDOW)
#endif