Skip to content

Commit 47df40b

Browse files
committed
bump
1 parent e656fb4 commit 47df40b

36 files changed

+50897
-0
lines changed

ntbcd.h

+2,133
Large diffs are not rendered by default.

ntdbg.h

+380
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,380 @@
1+
/*
2+
* Debugger support functions
3+
*
4+
* This file is part of System Informer.
5+
*/
6+
7+
#ifndef _NTDBG_H
8+
#define _NTDBG_H
9+
10+
// Debugging
11+
12+
NTSYSAPI
13+
VOID
14+
NTAPI
15+
DbgUserBreakPoint(
16+
VOID
17+
);
18+
19+
NTSYSAPI
20+
VOID
21+
NTAPI
22+
DbgBreakPoint(
23+
VOID
24+
);
25+
26+
NTSYSAPI
27+
VOID
28+
NTAPI
29+
DbgBreakPointWithStatus(
30+
_In_ ULONG Status
31+
);
32+
33+
#define DBG_STATUS_CONTROL_C 1
34+
#define DBG_STATUS_SYSRQ 2
35+
#define DBG_STATUS_BUGCHECK_FIRST 3
36+
#define DBG_STATUS_BUGCHECK_SECOND 4
37+
#define DBG_STATUS_FATAL 5
38+
#define DBG_STATUS_DEBUG_CONTROL 6
39+
#define DBG_STATUS_WORKER 7
40+
41+
NTSYSAPI
42+
ULONG
43+
STDAPIVCALLTYPE
44+
DbgPrint(
45+
_In_z_ _Printf_format_string_ PCSTR Format,
46+
...
47+
);
48+
49+
NTSYSAPI
50+
ULONG
51+
STDAPIVCALLTYPE
52+
DbgPrintEx(
53+
_In_ ULONG ComponentId,
54+
_In_ ULONG Level,
55+
_In_z_ _Printf_format_string_ PCSTR Format,
56+
...
57+
);
58+
59+
NTSYSAPI
60+
ULONG
61+
NTAPI
62+
vDbgPrintEx(
63+
_In_ ULONG ComponentId,
64+
_In_ ULONG Level,
65+
_In_z_ PCCH Format,
66+
_In_ va_list arglist
67+
);
68+
69+
NTSYSAPI
70+
ULONG
71+
NTAPI
72+
vDbgPrintExWithPrefix(
73+
_In_z_ PCCH Prefix,
74+
_In_ ULONG ComponentId,
75+
_In_ ULONG Level,
76+
_In_z_ PCCH Format,
77+
_In_ va_list arglist
78+
);
79+
80+
NTSYSAPI
81+
NTSTATUS
82+
NTAPI
83+
DbgQueryDebugFilterState(
84+
_In_ ULONG ComponentId,
85+
_In_ ULONG Level
86+
);
87+
88+
NTSYSAPI
89+
NTSTATUS
90+
NTAPI
91+
DbgSetDebugFilterState(
92+
_In_ ULONG ComponentId,
93+
_In_ ULONG Level,
94+
_In_ BOOLEAN State
95+
);
96+
97+
NTSYSAPI
98+
ULONG
99+
NTAPI
100+
DbgPrompt(
101+
_In_ PCCH Prompt,
102+
_Out_writes_bytes_(Length) PCH Response,
103+
_In_ ULONG Length
104+
);
105+
106+
// Definitions
107+
108+
typedef struct _DBGKM_EXCEPTION
109+
{
110+
EXCEPTION_RECORD ExceptionRecord;
111+
ULONG FirstChance;
112+
} DBGKM_EXCEPTION, *PDBGKM_EXCEPTION;
113+
114+
typedef struct _DBGKM_CREATE_THREAD
115+
{
116+
ULONG SubSystemKey;
117+
PVOID StartAddress;
118+
} DBGKM_CREATE_THREAD, *PDBGKM_CREATE_THREAD;
119+
120+
typedef struct _DBGKM_CREATE_PROCESS
121+
{
122+
ULONG SubSystemKey;
123+
HANDLE FileHandle;
124+
PVOID BaseOfImage;
125+
ULONG DebugInfoFileOffset;
126+
ULONG DebugInfoSize;
127+
DBGKM_CREATE_THREAD InitialThread;
128+
} DBGKM_CREATE_PROCESS, *PDBGKM_CREATE_PROCESS;
129+
130+
typedef struct _DBGKM_EXIT_THREAD
131+
{
132+
NTSTATUS ExitStatus;
133+
} DBGKM_EXIT_THREAD, *PDBGKM_EXIT_THREAD;
134+
135+
typedef struct _DBGKM_EXIT_PROCESS
136+
{
137+
NTSTATUS ExitStatus;
138+
} DBGKM_EXIT_PROCESS, *PDBGKM_EXIT_PROCESS;
139+
140+
typedef struct _DBGKM_LOAD_DLL
141+
{
142+
HANDLE FileHandle;
143+
PVOID BaseOfDll;
144+
ULONG DebugInfoFileOffset;
145+
ULONG DebugInfoSize;
146+
PVOID NamePointer;
147+
} DBGKM_LOAD_DLL, *PDBGKM_LOAD_DLL;
148+
149+
typedef struct _DBGKM_UNLOAD_DLL
150+
{
151+
PVOID BaseAddress;
152+
} DBGKM_UNLOAD_DLL, *PDBGKM_UNLOAD_DLL;
153+
154+
typedef enum _DBG_STATE
155+
{
156+
DbgIdle,
157+
DbgReplyPending,
158+
DbgCreateThreadStateChange,
159+
DbgCreateProcessStateChange,
160+
DbgExitThreadStateChange,
161+
DbgExitProcessStateChange,
162+
DbgExceptionStateChange,
163+
DbgBreakpointStateChange,
164+
DbgSingleStepStateChange,
165+
DbgLoadDllStateChange,
166+
DbgUnloadDllStateChange
167+
} DBG_STATE, *PDBG_STATE;
168+
169+
typedef struct _DBGUI_CREATE_THREAD
170+
{
171+
HANDLE HandleToThread;
172+
DBGKM_CREATE_THREAD NewThread;
173+
} DBGUI_CREATE_THREAD, *PDBGUI_CREATE_THREAD;
174+
175+
typedef struct _DBGUI_CREATE_PROCESS
176+
{
177+
HANDLE HandleToProcess;
178+
HANDLE HandleToThread;
179+
DBGKM_CREATE_PROCESS NewProcess;
180+
} DBGUI_CREATE_PROCESS, *PDBGUI_CREATE_PROCESS;
181+
182+
typedef struct _DBGUI_WAIT_STATE_CHANGE
183+
{
184+
DBG_STATE NewState;
185+
CLIENT_ID AppClientId;
186+
union
187+
{
188+
DBGKM_EXCEPTION Exception;
189+
DBGUI_CREATE_THREAD CreateThread;
190+
DBGUI_CREATE_PROCESS CreateProcessInfo;
191+
DBGKM_EXIT_THREAD ExitThread;
192+
DBGKM_EXIT_PROCESS ExitProcess;
193+
DBGKM_LOAD_DLL LoadDll;
194+
DBGKM_UNLOAD_DLL UnloadDll;
195+
} StateInfo;
196+
} DBGUI_WAIT_STATE_CHANGE, *PDBGUI_WAIT_STATE_CHANGE;
197+
198+
#define DEBUG_READ_EVENT 0x0001
199+
#define DEBUG_PROCESS_ASSIGN 0x0002
200+
#define DEBUG_SET_INFORMATION 0x0004
201+
#define DEBUG_QUERY_INFORMATION 0x0008
202+
#define DEBUG_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | \
203+
DEBUG_READ_EVENT | DEBUG_PROCESS_ASSIGN | DEBUG_SET_INFORMATION | \
204+
DEBUG_QUERY_INFORMATION)
205+
206+
#define DEBUG_KILL_ON_CLOSE 0x1
207+
208+
typedef enum _DEBUGOBJECTINFOCLASS
209+
{
210+
DebugObjectUnusedInformation,
211+
DebugObjectKillProcessOnExitInformation, // s: ULONG
212+
MaxDebugObjectInfoClass
213+
} DEBUGOBJECTINFOCLASS, *PDEBUGOBJECTINFOCLASS;
214+
215+
// System calls
216+
217+
NTSYSCALLAPI
218+
NTSTATUS
219+
NTAPI
220+
NtCreateDebugObject(
221+
_Out_ PHANDLE DebugObjectHandle,
222+
_In_ ACCESS_MASK DesiredAccess,
223+
_In_opt_ POBJECT_ATTRIBUTES ObjectAttributes,
224+
_In_ ULONG Flags
225+
);
226+
227+
NTSYSCALLAPI
228+
NTSTATUS
229+
NTAPI
230+
NtDebugActiveProcess(
231+
_In_ HANDLE ProcessHandle,
232+
_In_ HANDLE DebugObjectHandle
233+
);
234+
235+
NTSYSCALLAPI
236+
NTSTATUS
237+
NTAPI
238+
NtDebugContinue(
239+
_In_ HANDLE DebugObjectHandle,
240+
_In_ PCLIENT_ID ClientId,
241+
_In_ NTSTATUS ContinueStatus
242+
);
243+
244+
NTSYSCALLAPI
245+
NTSTATUS
246+
NTAPI
247+
NtRemoveProcessDebug(
248+
_In_ HANDLE ProcessHandle,
249+
_In_ HANDLE DebugObjectHandle
250+
);
251+
252+
NTSYSCALLAPI
253+
NTSTATUS
254+
NTAPI
255+
NtSetInformationDebugObject(
256+
_In_ HANDLE DebugObjectHandle,
257+
_In_ DEBUGOBJECTINFOCLASS DebugObjectInformationClass,
258+
_In_ PVOID DebugInformation,
259+
_In_ ULONG DebugInformationLength,
260+
_Out_opt_ PULONG ReturnLength
261+
);
262+
263+
NTSYSCALLAPI
264+
NTSTATUS
265+
NTAPI
266+
NtWaitForDebugEvent(
267+
_In_ HANDLE DebugObjectHandle,
268+
_In_ BOOLEAN Alertable,
269+
_In_opt_ PLARGE_INTEGER Timeout,
270+
_Out_ PDBGUI_WAIT_STATE_CHANGE WaitStateChange
271+
);
272+
273+
// Debugging UI
274+
275+
NTSYSAPI
276+
NTSTATUS
277+
NTAPI
278+
DbgUiConnectToDbg(
279+
VOID
280+
);
281+
282+
NTSYSAPI
283+
HANDLE
284+
NTAPI
285+
DbgUiGetThreadDebugObject(
286+
VOID
287+
);
288+
289+
NTSYSAPI
290+
VOID
291+
NTAPI
292+
DbgUiSetThreadDebugObject(
293+
_In_ HANDLE DebugObject
294+
);
295+
296+
NTSYSAPI
297+
NTSTATUS
298+
NTAPI
299+
DbgUiWaitStateChange(
300+
_Out_ PDBGUI_WAIT_STATE_CHANGE StateChange,
301+
_In_opt_ PLARGE_INTEGER Timeout
302+
);
303+
304+
NTSYSAPI
305+
NTSTATUS
306+
NTAPI
307+
DbgUiContinue(
308+
_In_ PCLIENT_ID AppClientId,
309+
_In_ NTSTATUS ContinueStatus
310+
);
311+
312+
NTSYSAPI
313+
NTSTATUS
314+
NTAPI
315+
DbgUiStopDebugging(
316+
_In_ HANDLE Process
317+
);
318+
319+
NTSYSAPI
320+
NTSTATUS
321+
NTAPI
322+
DbgUiDebugActiveProcess(
323+
_In_ HANDLE Process
324+
);
325+
326+
NTSYSAPI
327+
VOID
328+
NTAPI
329+
DbgUiRemoteBreakin(
330+
_In_ PVOID Context
331+
);
332+
333+
NTSYSAPI
334+
NTSTATUS
335+
NTAPI
336+
DbgUiIssueRemoteBreakin(
337+
_In_ HANDLE Process
338+
);
339+
340+
NTSYSAPI
341+
NTSTATUS
342+
NTAPI
343+
DbgUiConvertStateChangeStructure(
344+
_In_ PDBGUI_WAIT_STATE_CHANGE StateChange,
345+
_Out_ LPDEBUG_EVENT DebugEvent
346+
);
347+
348+
NTSYSAPI
349+
NTSTATUS
350+
NTAPI
351+
DbgUiConvertStateChangeStructureEx(
352+
_In_ PDBGUI_WAIT_STATE_CHANGE StateChange,
353+
_Out_ LPDEBUG_EVENT DebugEvent
354+
);
355+
356+
typedef struct _EVENT_FILTER_DESCRIPTOR *PEVENT_FILTER_DESCRIPTOR;
357+
358+
typedef VOID (NTAPI *PENABLECALLBACK)(
359+
_In_ LPCGUID SourceId,
360+
_In_ ULONG IsEnabled,
361+
_In_ UCHAR Level,
362+
_In_ ULONGLONG MatchAnyKeyword,
363+
_In_ ULONGLONG MatchAllKeyword,
364+
_In_opt_ PEVENT_FILTER_DESCRIPTOR FilterData,
365+
_Inout_opt_ PVOID CallbackContext
366+
);
367+
368+
typedef ULONGLONG REGHANDLE, *PREGHANDLE;
369+
370+
NTSYSAPI
371+
NTSTATUS
372+
NTAPI
373+
EtwEventRegister(
374+
_In_ LPCGUID ProviderId,
375+
_In_opt_ PENABLECALLBACK EnableCallback,
376+
_In_opt_ PVOID CallbackContext,
377+
_Out_ PREGHANDLE RegHandle
378+
);
379+
380+
#endif

0 commit comments

Comments
 (0)