#include <ntoskrnl.h>
#include <debug.h>
Go to the source code of this file.
|
VOID NTAPI | PspQueueApcSpecialApc (IN PKAPC Apc, IN OUT PKNORMAL_ROUTINE *NormalRoutine, IN OUT PVOID *NormalContext, IN OUT PVOID *SystemArgument1, IN OUT PVOID *SystemArgument2) |
|
NTSTATUS NTAPI | PsResumeThread (IN PETHREAD Thread, OUT PULONG PreviousCount OPTIONAL) |
|
NTSTATUS NTAPI | PsSuspendThread (IN PETHREAD Thread, OUT PULONG PreviousCount OPTIONAL) |
|
NTSTATUS NTAPI | PsResumeProcess (IN PEPROCESS Process) |
|
NTSTATUS NTAPI | PsSuspendProcess (IN PEPROCESS Process) |
|
NTSTATUS NTAPI | NtAlertThread (IN HANDLE ThreadHandle) |
|
NTSTATUS NTAPI | NtAlertResumeThread (IN HANDLE ThreadHandle, OUT PULONG SuspendCount) |
|
NTSTATUS NTAPI | NtResumeThread (IN HANDLE ThreadHandle, OUT PULONG SuspendCount OPTIONAL) |
|
NTSTATUS NTAPI | NtSuspendThread (IN HANDLE ThreadHandle, OUT PULONG PreviousSuspendCount OPTIONAL) |
|
NTSTATUS NTAPI | NtSuspendProcess (IN HANDLE ProcessHandle) |
|
NTSTATUS NTAPI | NtResumeProcess (IN HANDLE ProcessHandle) |
|
NTSTATUS NTAPI | NtTestAlert (VOID) |
|
NTSTATUS NTAPI | NtQueueApcThreadEx (IN HANDLE ThreadHandle, IN OPTIONAL HANDLE UserApcReserveHandle, IN PKNORMAL_ROUTINE ApcRoutine, IN PVOID NormalContext, IN OPTIONAL PVOID SystemArgument1, IN OPTIONAL PVOID SystemArgument2) |
|
NTSTATUS NTAPI | NtQueueApcThread (IN HANDLE ThreadHandle, IN PKNORMAL_ROUTINE ApcRoutine, IN PVOID NormalContext, IN PVOID SystemArgument1, IN PVOID SystemArgument2) |
|
◆ NDEBUG
◆ NtAlertResumeThread()
Definition at line 226 of file state.c.
228{
233
234
236 {
237
239 {
240
242 }
244 {
245
247 }
249 }
250
251
259 {
260
262
263
265
266
267 if (SuspendCount)
268 {
269
271 {
272
274 }
276 {
277
279 }
281 }
282 }
283
284
286}
#define NT_SUCCESS(StatCode)
#define ExGetPreviousMode
_In_opt_ PFILE_OBJECT _In_opt_ PETHREAD Thread
#define EXCEPTION_EXECUTE_HANDLER
#define THREAD_SUSPEND_RESUME
ULONG NTAPI KeAlertResumeThread(IN PKTHREAD Thread)
POBJECT_TYPE PsThreadType
NTSTATUS NTAPI ObReferenceObjectByHandle(IN HANDLE Handle, IN ACCESS_MASK DesiredAccess, IN POBJECT_TYPE ObjectType, IN KPROCESSOR_MODE AccessMode, OUT PVOID *Object, OUT POBJECT_HANDLE_INFORMATION HandleInformation OPTIONAL)
#define _SEH2_GetExceptionCode()
#define _SEH2_EXCEPT(...)
#define _SEH2_YIELD(__stmt)
#define ProbeForWriteUlong(Ptr)
_In_ WDF_POWER_DEVICE_STATE PreviousState
#define ObDereferenceObject
_In_ KPROCESSOR_MODE PreviousMode
◆ NtAlertThread()
Definition at line 193 of file state.c.
194{
198
199
207 {
208
209
210
211
212
213
215
216
218 }
219
220
222}
BOOLEAN NTAPI KeAlertThread(IN PKTHREAD Thread, IN KPROCESSOR_MODE AlertMode)
◆ NtQueueApcThread()
Definition at line 600 of file state.c.
605{
607}
_In_opt_ HANDLE _In_opt_ PIO_APC_ROUTINE ApcRoutine
NTSTATUS NTAPI NtQueueApcThreadEx(IN HANDLE ThreadHandle, IN OPTIONAL HANDLE UserApcReserveHandle, IN PKNORMAL_ROUTINE ApcRoutine, IN PVOID NormalContext, IN OPTIONAL PVOID SystemArgument1, IN OPTIONAL PVOID SystemArgument2)
_In_opt_ PVOID _In_opt_ PVOID SystemArgument1
_In_opt_ PVOID _In_opt_ PVOID _In_opt_ PVOID SystemArgument2
Referenced by QueueUserAPC(), RtlpQueueIoWorkerThread(), RtlpQueueWorkerThread(), and RtlQueueApcWow64Thread().
◆ NtQueueApcThreadEx()
Definition at line 504 of file state.c.
510{
515
516
524
525
527 {
528
530 goto Quit;
531 }
532
533
538 if (!Apc)
539 {
540
542 goto Quit;
543 }
544
545
553 NormalContext);
554
555
560 {
561
564 }
565
566
567Quit:
570}
#define STATUS_INVALID_HANDLE
#define THREAD_SET_CONTEXT
BOOLEAN NTAPI KeInsertQueueApc(IN PKAPC Apc, IN PVOID SystemArgument1, IN PVOID SystemArgument2, IN KPRIORITY PriorityBoost)
VOID NTAPI KeInitializeApc(IN PKAPC Apc, IN PKTHREAD Thread, IN KAPC_ENVIRONMENT TargetEnvironment, IN PKKERNEL_ROUTINE KernelRoutine, IN PKRUNDOWN_ROUTINE RundownRoutine OPTIONAL, IN PKNORMAL_ROUTINE NormalRoutine, IN KPROCESSOR_MODE Mode, IN PVOID Context)
VOID NTAPI PspQueueApcSpecialApc(IN PKAPC Apc, IN OUT PKNORMAL_ROUTINE *NormalRoutine, IN OUT PVOID *NormalContext, IN OUT PVOID *SystemArgument1, IN OUT PVOID *SystemArgument2)
#define STATUS_UNSUCCESSFUL
#define ExAllocatePoolWithQuotaTag(a, b, c)
#define POOL_QUOTA_FAIL_INSTEAD_OF_RAISE
Referenced by NtQueueApcThread().
◆ NtResumeProcess()
Definition at line 438 of file state.c.
439{
444
445
453 {
454
457 }
458
459
461}
_Must_inspect_result_ _In_ PLARGE_INTEGER _In_ PLARGE_INTEGER _In_ ULONG _In_ PFILE_OBJECT _In_ PVOID Process
#define PROCESS_SUSPEND_RESUME
_In_ HANDLE ProcessHandle
POBJECT_TYPE PsProcessType
NTSTATUS NTAPI PsResumeProcess(IN PEPROCESS Process)
◆ NtResumeThread()
Definition at line 290 of file state.c.
292{
298
299
301 {
302
304 {
305
307 }
309 {
310
312 }
314 }
315
316
324
325
327
328
329 if (SuspendCount)
330 {
331
333 {
334
335 *SuspendCount = Prev;
336 }
338 {
339
341 }
343 }
344
345
348}
NTSTATUS NTAPI PsResumeThread(IN PETHREAD Thread, OUT PULONG PreviousCount OPTIONAL)
Referenced by CreateProcessInternalW(), CreateRemoteThread(), CsrApiPortInitialize(), CsrpCheckRequestThreads(), CsrSbApiPortInitialize(), CsrSbCreateSession(), EnableUserModePnpManager(), GuiInit(), ResumeThread(), RtlCreateTimerQueue(), RtlpStartWorkerThread(), SmpExecuteImage(), SmpExecuteInitialCommand(), SmpLoadSubSystem(), SmpSbCreateSession(), and test_NtSuspendProcess().
◆ NtSuspendProcess()
Definition at line 411 of file state.c.
412{
417
418
426 {
427
430 }
431
432
434}
NTSTATUS NTAPI PsSuspendProcess(IN PEPROCESS Process)
◆ NtSuspendThread()
Definition at line 352 of file state.c.
354{
360
361
363 {
364
366 {
367
369 }
371 {
372
374 }
376 }
377
378
386
387
391
392
394 {
395
396 if (PreviousSuspendCount) *PreviousSuspendCount = Prev;
397 }
399 {
400
402 }
404
405
407}
NTSTATUS NTAPI PsSuspendThread(IN PETHREAD Thread, OUT PULONG PreviousCount OPTIONAL)
Referenced by DisableUserModePnpManager(), and SuspendThread().
◆ NtTestAlert()
Definition at line 465 of file state.c.
466{
467
470}
BOOLEAN NTAPI KeTestAlertThread(IN KPROCESSOR_MODE AlertMode)
Referenced by LdrpInit().
◆ PspQueueApcSpecialApc()
◆ PsResumeProcess()
Definition at line 128 of file state.c.
129{
132
133
135 {
136
138 }
139
140
143 {
144
146
147
149 }
150
151
154}
#define ExReleaseRundownProtection
#define ExAcquireRundownProtection
ULONG NTAPI KeResumeThread(IN PKTHREAD Thread)
#define STATUS_PROCESS_IS_TERMINATING
PETHREAD NTAPI PsGetNextProcessThread(IN PEPROCESS Process, IN PETHREAD Thread OPTIONAL)
Referenced by NtResumeProcess().
◆ PsResumeThread()
◆ PsSuspendProcess()
Definition at line 158 of file state.c.
159{
162
163
165 {
166
168 }
169
170
173 {
174
176
177
179 }
180
181
184}
Referenced by NtSuspendProcess().
◆ PsSuspendThread()
Definition at line 48 of file state.c.
51{
55
56
58
59
61 {
62
64 {
65
67 }
69 {
70
72 }
74 }
75 else
76 {
77
79 {
80
82 {
83
85 }
86 else
87 {
88
90 {
91
93 }
95 {
96
98 }
100
101
103 {
104
107 OldCount = 0;
108 }
109 }
110
111
113 }
114 else
115 {
116
118 }
119 }
120
121
122 if (PreviousCount) *PreviousCount = OldCount;
124}
#define PsGetCurrentThread()
ULONG NTAPI KeForceResumeThread(IN PKTHREAD Thread)
ULONG NTAPI KeSuspendThread(PKTHREAD Thread)
#define STATUS_THREAD_IS_TERMINATING
#define STATUS_SUSPEND_COUNT_EXCEEDED
EX_RUNDOWN_REF RundownProtect
Referenced by DbgkpPostFakeThreadMessages(), NtSuspendThread(), and PsSuspendProcess().