explorer:
[reactos.git] / reactos / include / ndk / kefuncs.h
1 /*++ NDK Version: 0095
2
3 Copyright (c) Alex Ionescu. All rights reserved.
4
5 Header Name:
6
7 kefuncs.h
8
9 Abstract:
10
11 Functions definitions for the Kernel services.
12
13 Author:
14
15 Alex Ionescu (alex.ionescu@reactos.com) 06-Oct-2004
16
17 --*/
18
19 #ifndef _KEFUNCS_H
20 #define _KEFUNCS_H
21
22 //
23 // Dependencies
24 //
25 #include <umtypes.h>
26 #include <ketypes.h>
27
28 #ifndef NTOS_MODE_USER
29
30 //
31 // APC Functions
32 //
33 VOID
34 NTAPI
35 KeInitializeApc(
36 IN PKAPC Apc,
37 IN PKTHREAD Thread,
38 IN KAPC_ENVIRONMENT TargetEnvironment,
39 IN PKKERNEL_ROUTINE KernelRoutine,
40 IN PKRUNDOWN_ROUTINE RundownRoutine OPTIONAL,
41 IN PKNORMAL_ROUTINE NormalRoutine,
42 IN KPROCESSOR_MODE Mode,
43 IN PVOID Context
44 );
45
46 VOID
47 NTAPI
48 KiDeliverApc(
49 IN KPROCESSOR_MODE PreviousMode,
50 IN PVOID Reserved,
51 IN PKTRAP_FRAME TrapFrame
52 );
53
54 //
55 // Process/Thread Functions
56 //
57 VOID
58 NTAPI
59 KeTerminateThread(
60 IN KPRIORITY Increment
61 );
62
63 BOOLEAN
64 NTAPI
65 KeIsAttachedProcess(
66 VOID
67 );
68
69 VOID
70 NTAPI
71 KeSetEventBoostPriority(
72 IN PKEVENT Event,
73 IN PKTHREAD *Thread OPTIONAL
74 );
75
76 NTSTATUS
77 NTAPI
78 KeSetAffinityThread(
79 PKTHREAD Thread,
80 KAFFINITY Affinity
81 );
82
83 PKPROCESS
84 NTAPI
85 KeGetCurrentProcess(
86 VOID
87 );
88
89 BOOLEAN
90 NTAPI
91 KeAddSystemServiceTable(
92 PULONG_PTR Base,
93 PULONG Count OPTIONAL,
94 ULONG Limit,
95 PUCHAR Number,
96 ULONG Index
97 );
98
99 //
100 // Spinlock Functions
101 //
102 VOID
103 FASTCALL
104 KiAcquireSpinLock(
105 PKSPIN_LOCK SpinLock
106 );
107
108 VOID
109 FASTCALL
110 KiReleaseSpinLock(
111 PKSPIN_LOCK SpinLock
112 );
113
114 //
115 // Interrupt Functions
116 //
117 VOID
118 NTAPI
119 KeInitializeInterrupt(
120 PKINTERRUPT InterruptObject,
121 PKSERVICE_ROUTINE ServiceRoutine,
122 PVOID ServiceContext,
123 PKSPIN_LOCK SpinLock,
124 ULONG Vector,
125 KIRQL Irql,
126 KIRQL SynchronizeIrql,
127 KINTERRUPT_MODE InterruptMode,
128 BOOLEAN ShareVector,
129 CHAR ProcessorNumber,
130 BOOLEAN FloatingSave
131 );
132
133 BOOLEAN
134 NTAPI
135 KeConnectInterrupt(
136 PKINTERRUPT InterruptObject
137 );
138
139 BOOLEAN
140 NTAPI
141 KeDisconnectInterrupt(
142 PKINTERRUPT InterruptObject
143 );
144
145 VOID
146 NTAPI
147 KiDispatchInterrupt(
148 VOID
149 );
150
151 VOID
152 NTAPI
153 KiCoprocessorError(
154 VOID
155 );
156
157 VOID
158 NTAPI
159 KiUnexpectedInterrupt(
160 VOID
161 );
162
163 VOID
164 NTAPI
165 KeEnterKernelDebugger(
166 VOID
167 );
168
169 BOOLEAN
170 NTAPI
171 KeIsExecutingDpc(
172 VOID
173 );
174
175 //
176 // ARC Configuration Functions
177 //
178 PCONFIGURATION_COMPONENT_DATA
179 NTAPI
180 KeFindConfigurationNextEntry(
181 IN PCONFIGURATION_COMPONENT_DATA Child,
182 IN CONFIGURATION_CLASS Class,
183 IN CONFIGURATION_TYPE Type,
184 IN PULONG ComponentKey OPTIONAL,
185 IN PCONFIGURATION_COMPONENT_DATA *NextLink
186 );
187
188 PCONFIGURATION_COMPONENT_DATA
189 NTAPI
190 KeFindConfigurationEntry(
191 IN PCONFIGURATION_COMPONENT_DATA Child,
192 IN CONFIGURATION_CLASS Class,
193 IN CONFIGURATION_TYPE Type,
194 IN PULONG ComponentKey OPTIONAL
195 );
196
197 //
198 // Low-level Hardware/CPU Control Functions
199 //
200 VOID
201 NTAPI
202 KeFlushEntireTb(
203 IN BOOLEAN Unknown,
204 IN BOOLEAN CurrentCpuOnly
205 );
206
207 VOID
208 NTAPI
209 KeSetDmaIoCoherency(
210 IN ULONG Coherency
211 );
212
213 VOID
214 KeSetGdtSelector(
215 ULONG Entry,
216 ULONG Value1,
217 ULONG Value2
218 );
219
220 VOID
221 NTAPI
222 KeSetProfileIrql(
223 IN KIRQL ProfileIrql
224 );
225
226 VOID
227 NTAPI
228 KeSetTimeIncrement(
229 IN ULONG MaxIncrement,
230 IN ULONG MinIncrement
231 );
232
233 //
234 // Misc. Functions
235 //
236 NTSTATUS
237 NTAPI
238 KeUserModeCallback(
239 IN ULONG FunctionID,
240 IN PVOID InputBuffer,
241 IN ULONG InputLength,
242 OUT PVOID *OutputBuffer,
243 OUT PULONG OutputLength
244 );
245
246 NTSTATUS
247 NTAPI
248 KeRaiseUserException(
249 IN NTSTATUS ExceptionCode
250 );
251
252 #endif
253
254 //
255 // Native Calls
256 //
257 NTSTATUS
258 NTAPI
259 NtContinue(
260 IN PCONTEXT Context,
261 IN BOOLEAN TestAlert
262 );
263
264 NTSTATUS
265 NTAPI
266 NtCallbackReturn(
267 PVOID Result,
268 ULONG ResultLength,
269 NTSTATUS Status
270 );
271
272 NTSTATUS
273 NTAPI
274 NtCreateProfile(
275 OUT PHANDLE ProfileHandle,
276 IN HANDLE ProcessHandle,
277 IN PVOID ImageBase,
278 IN ULONG ImageSize,
279 IN ULONG Granularity,
280 OUT PVOID Buffer,
281 IN ULONG ProfilingSize,
282 IN KPROFILE_SOURCE Source,
283 IN KAFFINITY ProcessorMask
284 );
285
286 NTSTATUS
287 NTAPI
288 NtDelayExecution(
289 IN BOOLEAN Alertable,
290 IN LARGE_INTEGER *Interval
291 );
292
293 NTSTATUS
294 NTAPI
295 NtFlushInstructionCache(
296 IN HANDLE ProcessHandle,
297 IN PVOID BaseAddress,
298 IN ULONG NumberOfBytesToFlush
299 );
300
301 NTSTATUS
302 NTAPI
303 NtGetContextThread(
304 IN HANDLE ThreadHandle,
305 OUT PCONTEXT Context
306 );
307
308 ULONG
309 NTAPI
310 NtGetTickCount(
311 VOID
312 );
313
314 NTSTATUS
315 NTAPI
316 NtQueryIntervalProfile(
317 IN KPROFILE_SOURCE ProfileSource,
318 OUT PULONG Interval
319 );
320
321 NTSTATUS
322 NTAPI
323 NtQueryPerformanceCounter(
324 IN PLARGE_INTEGER Counter,
325 IN PLARGE_INTEGER Frequency
326 );
327
328 NTSTATUS
329 NTAPI
330 NtQuerySystemTime(
331 OUT PLARGE_INTEGER CurrentTime
332 );
333
334 NTSTATUS
335 NTAPI
336 NtQueryTimerResolution(
337 OUT PULONG MinimumResolution,
338 OUT PULONG MaximumResolution,
339 OUT PULONG ActualResolution
340 );
341
342 NTSTATUS
343 NTAPI
344 NtQueueApcThread(
345 HANDLE ThreadHandle,
346 PKNORMAL_ROUTINE ApcRoutine,
347 PVOID NormalContext,
348 PVOID SystemArgument1,
349 PVOID SystemArgument2
350 );
351
352 NTSTATUS
353 NTAPI
354 NtRaiseException(
355 IN PEXCEPTION_RECORD ExceptionRecord,
356 IN PCONTEXT Context,
357 IN BOOLEAN SearchFrames
358 );
359
360 NTSTATUS
361 NTAPI
362 NtSetContextThread(
363 IN HANDLE ThreadHandle,
364 IN PCONTEXT Context
365 );
366
367 NTSTATUS
368 NTAPI
369 NtSetIntervalProfile(
370 ULONG Interval,
371 KPROFILE_SOURCE ClockSource
372 );
373
374 NTSTATUS
375 NTAPI
376 NtSetLdtEntries(
377 ULONG Selector1,
378 LDT_ENTRY LdtEntry1,
379 ULONG Selector2,
380 LDT_ENTRY LdtEntry2
381 );
382
383 NTSTATUS
384 NTAPI
385 NtSetSystemTime(
386 IN PLARGE_INTEGER SystemTime,
387 IN PLARGE_INTEGER NewSystemTime OPTIONAL
388 );
389
390 NTSTATUS
391 NTAPI
392 NtSetTimerResolution(
393 IN ULONG RequestedResolution,
394 IN BOOLEAN SetOrUnset,
395 OUT PULONG ActualResolution
396 );
397
398 NTSTATUS
399 NTAPI
400 NtStartProfile(
401 IN HANDLE ProfileHandle
402 );
403
404 NTSTATUS
405 NTAPI
406 NtStopProfile(
407 IN HANDLE ProfileHandle
408 );
409
410 NTSTATUS
411 NTAPI
412 NtTestAlert(
413 VOID
414 );
415
416 NTSTATUS
417 NTAPI
418 NtVdmControl(
419 ULONG ControlCode,
420 PVOID ControlData
421 );
422
423 NTSTATUS
424 NTAPI
425 NtW32Call(
426 IN ULONG RoutineIndex,
427 IN PVOID Argument,
428 IN ULONG ArgumentLength,
429 OUT PVOID* Result OPTIONAL,
430 OUT PULONG ResultLength OPTIONAL
431 );
432
433 NTSTATUS
434 NTAPI
435 NtYieldExecution(
436 VOID
437 );
438
439 NTSTATUS
440 NTAPI
441 ZwContinue(
442 IN PCONTEXT Context,
443 IN BOOLEAN TestAlert
444 );
445
446 NTSTATUS
447 NTAPI
448 ZwCallbackReturn(
449 PVOID Result,
450 ULONG ResultLength,
451 NTSTATUS Status
452 );
453
454 NTSTATUS
455 NTAPI
456 ZwCreateProfile(
457 OUT PHANDLE ProfileHandle,
458 IN HANDLE ProcessHandle,
459 IN PVOID ImageBase,
460 IN ULONG ImageSize,
461 IN ULONG Granularity,
462 OUT PVOID Buffer,
463 IN ULONG ProfilingSize,
464 IN KPROFILE_SOURCE Source,
465 IN KAFFINITY ProcessorMask
466 );
467
468 NTSTATUS
469 NTAPI
470 ZwDelayExecution(
471 IN BOOLEAN Alertable,
472 IN LARGE_INTEGER *Interval
473 );
474
475 NTSTATUS
476 NTAPI
477 ZwFlushInstructionCache(
478 IN HANDLE ProcessHandle,
479 IN PVOID BaseAddress,
480 IN ULONG NumberOfBytesToFlush
481 );
482
483 NTSTATUS
484 NTAPI
485 ZwGetContextThread(
486 IN HANDLE ThreadHandle,
487 OUT PCONTEXT Context
488 );
489
490 ULONG
491 NTAPI
492 ZwGetTickCount(
493 VOID
494 );
495
496 NTSTATUS
497 NTAPI
498 ZwQueryIntervalProfile(
499 IN KPROFILE_SOURCE ProfileSource,
500 OUT PULONG Interval
501 );
502
503 NTSTATUS
504 NTAPI
505 ZwQueryPerformanceCounter(
506 IN PLARGE_INTEGER Counter,
507 IN PLARGE_INTEGER Frequency
508 );
509
510 NTSTATUS
511 NTAPI
512 ZwQuerySystemTime(
513 OUT PLARGE_INTEGER CurrentTime
514 );
515
516 NTSTATUS
517 NTAPI
518 ZwQueryTimerResolution(
519 OUT PULONG MinimumResolution,
520 OUT PULONG MaximumResolution,
521 OUT PULONG ActualResolution
522 );
523
524 NTSTATUS
525 NTAPI
526 ZwQueueApcThread(
527 HANDLE ThreadHandle,
528 PKNORMAL_ROUTINE ApcRoutine,
529 PVOID NormalContext,
530 PVOID SystemArgument1,
531 PVOID SystemArgument2
532 );
533
534 NTSTATUS
535 NTAPI
536 ZwRaiseException(
537 IN PEXCEPTION_RECORD ExceptionRecord,
538 IN PCONTEXT Context,
539 IN BOOLEAN SearchFrames
540 );
541
542 NTSTATUS
543 NTAPI
544 ZwSetContextThread(
545 IN HANDLE ThreadHandle,
546 IN PCONTEXT Context
547 );
548
549 NTSTATUS
550 NTAPI
551 ZwSetIntervalProfile(
552 ULONG Interval,
553 KPROFILE_SOURCE ClockSource
554 );
555
556 NTSTATUS
557 NTAPI
558 ZwSetLdtEntries(
559 ULONG Selector1,
560 LDT_ENTRY LdtEntry1,
561 ULONG Selector2,
562 LDT_ENTRY LdtEntry2
563 );
564
565 NTSTATUS
566 NTAPI
567 ZwSetSystemTime(
568 IN PLARGE_INTEGER SystemTime,
569 IN PLARGE_INTEGER NewSystemTime OPTIONAL
570 );
571
572 NTSTATUS
573 NTAPI
574 ZwSetTimerResolution(
575 IN ULONG RequestedResolution,
576 IN BOOLEAN SetOrUnset,
577 OUT PULONG ActualResolution
578 );
579
580 NTSTATUS
581 NTAPI
582 ZwStartProfile(
583 IN HANDLE ProfileHandle
584 );
585
586 NTSTATUS
587 NTAPI
588 ZwStopProfile(
589 IN HANDLE ProfileHandle
590 );
591
592 NTSTATUS
593 NTAPI
594 ZwTestAlert(
595 VOID
596 );
597
598 NTSTATUS
599 NTAPI
600 ZwVdmControl(
601 ULONG ControlCode,
602 PVOID ControlData
603 );
604
605 NTSTATUS
606 NTAPI
607 ZwW32Call(
608 IN ULONG RoutineIndex,
609 IN PVOID Argument,
610 IN ULONG ArgumentLength,
611 OUT PVOID* Result OPTIONAL,
612 OUT PULONG ResultLength OPTIONAL
613 );
614
615 NTSTATUS
616 NTAPI
617 ZwYieldExecution(
618 VOID
619 );
620 #endif