eliminate GCC warning about initialization order
[reactos.git] / reactos / include / ndk / ketypes.h
1 /*++ NDK Version: 0095
2
3 Copyright (c) Alex Ionescu. All rights reserved.
4
5 Header Name:
6
7 lpctypes.h
8
9 Abstract:
10
11 Type definitions for the Loader.
12
13 Author:
14
15 Alex Ionescu (alex.ionescu@reactos.com) 06-Oct-2004
16
17 --*/
18
19 #ifndef _KETYPES_H
20 #define _KETYPES_H
21
22 //
23 // Dependencies
24 //
25 #include <umtypes.h>
26 #ifndef NTOS_MODE_USER
27 #include <arc/arc.h>
28 #include <haltypes.h>
29 #include <potypes.h>
30 #include <ifssupp.h>
31 #endif
32
33 //
34 // Context Record Flags
35 //
36 #define CONTEXT_DEBUGGER (CONTEXT_FULL | CONTEXT_FLOATING_POINT)
37
38 //
39 // Maximum System Descriptor Table Entries
40 //
41 #define SSDT_MAX_ENTRIES 4
42
43 #ifdef NTOS_MODE_USER
44
45 //
46 // KPROCESSOR_MODE Type
47 //
48 typedef CCHAR KPROCESSOR_MODE;
49
50 //
51 // Dereferencable pointer to KUSER_SHARED_DATA in User-Mode
52 //
53 #define SharedUserData ((KUSER_SHARED_DATA *CONST)USER_SHARED_DATA)
54
55 //
56 // Maximum WOW64 Entries in KUSER_SHARED_DATA
57 //
58 #define MAX_WOW64_SHARED_ENTRIES 16
59
60 //
61 // Maximum Processor Features supported in KUSER_SHARED_DATA
62 //
63 #define PROCESSOR_FEATURE_MAX 64
64
65 //
66 // Event Types
67 //
68 typedef enum _EVENT_TYPE
69 {
70 NotificationEvent,
71 SynchronizationEvent
72 } EVENT_TYPE;
73
74 //
75 // Timer Types
76 //
77 typedef enum _TIMER_TYPE
78 {
79 NotificationTimer,
80 SynchronizationTimer
81 } TIMER_TYPE;
82
83 //
84 // Wait Types
85 //
86 typedef enum _WAIT_TYPE
87 {
88 WaitAll,
89 WaitAny
90 } WAIT_TYPE;
91
92 //
93 // Processor Execution Modes
94 //
95 typedef enum _MODE
96 {
97 KernelMode,
98 UserMode,
99 MaximumMode
100 } MODE;
101
102 //
103 // Wait Reasons
104 //
105 typedef enum _KWAIT_REASON
106 {
107 Executive,
108 FreePage,
109 PageIn,
110 PoolAllocation,
111 DelayExecution,
112 Suspended,
113 UserRequest,
114 WrExecutive,
115 WrFreePage,
116 WrPageIn,
117 WrPoolAllocation,
118 WrDelayExecution,
119 WrSuspended,
120 WrUserRequest,
121 WrEventPair,
122 WrQueue,
123 WrLpcReceive,
124 WrLpcReply,
125 WrVirtualMemory,
126 WrPageOut,
127 WrRendezvous,
128 Spare2,
129 WrGuardedMutex,
130 Spare4,
131 Spare5,
132 Spare6,
133 WrKernel,
134 WrResource,
135 WrPushLock,
136 WrMutex,
137 WrQuantumEnd,
138 WrDispatchInt,
139 WrPreempted,
140 WrYieldExecution,
141 MaximumWaitReason
142 } KWAIT_REASON;
143
144 //
145 // Profiling Sources
146 //
147 typedef enum _KPROFILE_SOURCE
148 {
149 ProfileTime,
150 ProfileAlignmentFixup,
151 ProfileTotalIssues,
152 ProfilePipelineDry,
153 ProfileLoadInstructions,
154 ProfilePipelineFrozen,
155 ProfileBranchInstructions,
156 ProfileTotalNonissues,
157 ProfileDcacheMisses,
158 ProfileIcacheMisses,
159 ProfileCacheMisses,
160 ProfileBranchMispredictions,
161 ProfileStoreInstructions,
162 ProfileFpInstructions,
163 ProfileIntegerInstructions,
164 Profile2Issue,
165 Profile3Issue,
166 Profile4Issue,
167 ProfileSpecialInstructions,
168 ProfileTotalCycles,
169 ProfileIcacheIssues,
170 ProfileDcacheAccesses,
171 ProfileMemoryBarrierCycles,
172 ProfileLoadLinkedIssues,
173 ProfileMaximum
174 } KPROFILE_SOURCE;
175
176 //
177 // NT Product and Architecture Types
178 //
179 typedef enum _NT_PRODUCT_TYPE
180 {
181 NtProductWinNt = 1,
182 NtProductLanManNt,
183 NtProductServer
184 } NT_PRODUCT_TYPE, *PNT_PRODUCT_TYPE;
185
186 typedef enum _ALTERNATIVE_ARCHITECTURE_TYPE
187 {
188 StandardDesign,
189 NEC98x86,
190 EndAlternatives
191 } ALTERNATIVE_ARCHITECTURE_TYPE;
192
193 #endif
194
195 //
196 // Thread States
197 //
198 typedef enum _KTHREAD_STATE
199 {
200 Initialized,
201 Ready,
202 Running,
203 Standby,
204 Terminated,
205 Waiting,
206 Transition,
207 DeferredReady,
208 } KTHREAD_STATE, *PKTHREAD_STATE;
209
210 //
211 // Process States
212 //
213 typedef enum _KPROCESS_STATE
214 {
215 ProcessInMemory,
216 ProcessOutOfMemory,
217 ProcessInTransition,
218 } KPROCESS_STATE, *PKPROCESS_STATE;
219
220 #ifdef NTOS_MODE_USER
221
222 //
223 // APC Normal Routine
224 //
225 typedef VOID
226 (NTAPI *PKNORMAL_ROUTINE)(
227 IN PVOID NormalContext,
228 IN PVOID SystemArgument1,
229 IN PVOID SystemArgument2
230 );
231
232 //
233 // Timer Routine
234 //
235 typedef VOID
236 (NTAPI *PTIMER_APC_ROUTINE)(
237 IN PVOID TimerContext,
238 IN ULONG TimerLowValue,
239 IN LONG TimerHighValue
240 );
241
242 //
243 // System Time Structure
244 //
245 typedef struct _KSYSTEM_TIME
246 {
247 ULONG LowPart;
248 LONG High1Time;
249 LONG High2Time;
250 } KSYSTEM_TIME, *PKSYSTEM_TIME;
251
252 //
253 // Shared Kernel User Data
254 //
255 typedef struct _KUSER_SHARED_DATA
256 {
257 ULONG TickCountLowDeprecated;
258 ULONG TickCountMultiplier;
259 volatile KSYSTEM_TIME InterruptTime;
260 volatile KSYSTEM_TIME SystemTime;
261 volatile KSYSTEM_TIME TimeZoneBias;
262 USHORT ImageNumberLow;
263 USHORT ImageNumberHigh;
264 WCHAR NtSystemRoot[260];
265 ULONG MaxStackTraceDepth;
266 ULONG CryptoExponent;
267 ULONG TimeZoneId;
268 ULONG LargePageMinimum;
269 ULONG Reserved2[7];
270 NT_PRODUCT_TYPE NtProductType;
271 BOOLEAN ProductTypeIsValid;
272 ULONG NtMajorVersion;
273 ULONG NtMinorVersion;
274 BOOLEAN ProcessorFeatures[PROCESSOR_FEATURE_MAX];
275 ULONG Reserved1;
276 ULONG Reserved3;
277 volatile ULONG TimeSlip;
278 ALTERNATIVE_ARCHITECTURE_TYPE AlternativeArchitecture;
279 LARGE_INTEGER SystemExpirationDate;
280 ULONG SuiteMask;
281 BOOLEAN KdDebuggerEnabled;
282 volatile ULONG ActiveConsoleId;
283 volatile ULONG DismountCount;
284 ULONG ComPlusPackage;
285 ULONG LastSystemRITEventTickCount;
286 ULONG NumberOfPhysicalPages;
287 BOOLEAN SafeBootMode;
288 ULONG TraceLogging;
289 ULONG Fill0;
290 ULONGLONG TestRetInstruction;
291 ULONG SystemCall;
292 ULONG SystemCallReturn;
293 ULONGLONG SystemCallPad[3];
294 union {
295 volatile KSYSTEM_TIME TickCount;
296 volatile ULONG64 TickCountQuad;
297 };
298 ULONG Cookie;
299 LONGLONG ConsoleSessionForegroundProcessId;
300 ULONG Wow64SharedInformation[MAX_WOW64_SHARED_ENTRIES];
301 ULONG UserModeGlobalLogging;
302 } KUSER_SHARED_DATA, *PKUSER_SHARED_DATA;
303
304 #else
305
306 //
307 // APC Environment Types
308 //
309 typedef enum _KAPC_ENVIRONMENT
310 {
311 OriginalApcEnvironment,
312 AttachedApcEnvironment,
313 CurrentApcEnvironment
314 } KAPC_ENVIRONMENT;
315
316 //
317 // PRCB DPC Data
318 //
319 typedef struct _KDPC_DATA
320 {
321 LIST_ENTRY DpcListHead;
322 ULONG DpcLock;
323 ULONG DpcQueueDepth;
324 ULONG DpcCount;
325 } KDPC_DATA, *PKDPC_DATA;
326
327 //
328 // Per-Processor Lookaside List
329 //
330 typedef struct _PP_LOOKASIDE_LIST
331 {
332 struct _GENERAL_LOOKASIDE *P;
333 struct _GENERAL_LOOKASIDE *L;
334 } PP_LOOKASIDE_LIST, *PPP_LOOKASIDE_LIST;
335
336 //
337 // Architectural Types
338 //
339 #include <arch/ketypes.h>
340
341 //
342 // Kernel Memory Node
343 //
344 typedef struct _KNODE
345 {
346 SLIST_HEADER DeadStackList;
347 SLIST_HEADER PfnDereferenceSListHead;
348 ULONG ProcessorMask;
349 ULONG Color;
350 UCHAR Seed;
351 UCHAR NodeNumber;
352 ULONG Flags;
353 ULONG MmShiftedColor;
354 ULONG FreeCount[2];
355 struct _SINGLE_LIST_ENTRY *PfnDeferredList;
356 } KNODE, *PKNODE;
357
358 //
359 // Kernel Profile Object
360 //
361 typedef struct _KPROFILE
362 {
363 CSHORT Type;
364 CSHORT Size;
365 LIST_ENTRY ProfileListEntry;
366 struct _KPROCESS *Process;
367 PVOID RangeBase;
368 PVOID RangeLimit;
369 ULONG BucketShift;
370 PVOID Buffer;
371 ULONG Segment;
372 KAFFINITY Affinity;
373 KPROFILE_SOURCE Source;
374 BOOLEAN Started;
375 } KPROFILE, *PKPROFILE;
376
377 //
378 // Kernel Interrupt Object
379 //
380 typedef struct _KINTERRUPT
381 {
382 CSHORT Type;
383 CSHORT Size;
384 LIST_ENTRY InterruptListEntry;
385 PKSERVICE_ROUTINE ServiceRoutine;
386 PVOID ServiceContext;
387 KSPIN_LOCK SpinLock;
388 ULONG TickCount;
389 PKSPIN_LOCK ActualLock;
390 PVOID DispatchAddress;
391 ULONG Vector;
392 KIRQL Irql;
393 KIRQL SynchronizeIrql;
394 BOOLEAN FloatingSave;
395 BOOLEAN Connected;
396 CHAR Number;
397 UCHAR ShareVector;
398 KINTERRUPT_MODE Mode;
399 ULONG ServiceCount;
400 ULONG DispatchCount;
401 ULONG DispatchCode[106];
402 } KINTERRUPT, *PKINTERRUPT;
403
404 //
405 // Kernel Event Pair Object
406 //
407 typedef struct _KEVENT_PAIR
408 {
409 CSHORT Type;
410 CSHORT Size;
411 KEVENT LowEvent;
412 KEVENT HighEvent;
413 } KEVENT_PAIR, *PKEVENT_PAIR;
414
415 //
416 // Kernel No Execute Options
417 //
418 typedef struct _KEXECUTE_OPTIONS
419 {
420 UCHAR ExecuteDisable:1;
421 UCHAR ExecuteEnable:1;
422 UCHAR DisableThunkEmulation:1;
423 UCHAR Permanent:1;
424 UCHAR ExecuteDispatchEnable:1;
425 UCHAR ImageDispatchEnable:1;
426 UCHAR Spare:2;
427 } KEXECUTE_OPTIONS, *PKEXECUTE_OPTIONS;
428
429 //
430 // Kernel Object Types
431 //
432 typedef enum _KOBJECTS
433 {
434 EventNotificationObject = 0,
435 EventSynchronizationObject = 1,
436 MutantObject = 2,
437 ProcessObject = 3,
438 QueueObject = 4,
439 SemaphoreObject = 5,
440 ThreadObject = 6,
441 GateObject = 7,
442 TimerNotificationObject = 8,
443 TimerSynchronizationObject = 9,
444 Spare2Object = 10,
445 Spare3Object = 11,
446 Spare4Object = 12,
447 Spare5Object = 13,
448 Spare6Object = 14,
449 Spare7Object = 15,
450 Spare8Object = 16,
451 Spare9Object = 17,
452 ApcObject = 18,
453 DpcObject = 19,
454 DeviceQueueObject = 20,
455 EventPairObject = 21,
456 InterruptObject = 22,
457 ProfileObject = 23,
458 ThreadedDpcObject = 24,
459 MaximumKernelObject = 25
460 } KOBJECTS;
461
462 //
463 // Kernel Thread (KTHREAD)
464 //
465 #include <pshpack1.h>
466 typedef struct _KTHREAD
467 {
468 DISPATCHER_HEADER DispatcherHeader; /* 00 */
469 LIST_ENTRY MutantListHead; /* 10 */
470 PVOID InitialStack; /* 18 */
471 ULONG_PTR StackLimit; /* 1C */
472 PVOID KernelStack; /* 20 */
473 KSPIN_LOCK ThreadLock; /* 24 */
474 union /* 28 */
475 { /* 28 */
476 KAPC_STATE ApcState; /* 34 */
477 struct /* 28 */
478 { /* 28 */
479 UCHAR ApcStateFill[23]; /* 34 */
480 UCHAR ApcQueueable; /* 3F */
481 }; /* 3F */
482 }; /* 3F */
483 UCHAR NextProcessor; /* 40 */
484 UCHAR DeferredProcessor; /* 41 */
485 UCHAR AdjustReason; /* 42 */
486 UCHAR AdjustIncrement; /* 43 */
487 KSPIN_LOCK ApcQueueLock; /* 44 */
488 ULONG ContextSwitches; /* 48 */
489 UCHAR State; /* 4C */
490 UCHAR NpxState; /* 4D */
491 UCHAR WaitIrql; /* 4E */
492 UCHAR WaitMode; /* 4F */
493 LONG WaitStatus; /* 50 */
494 union /* 54 */
495 { /* 54 */
496 PKWAIT_BLOCK WaitBlockList; /* 54 */
497 PKGATE GateObject; /* 54 */
498 }; /* 54 */
499 UCHAR Alertable; /* 58 */
500 UCHAR WaitNext; /* 59 */
501 UCHAR WaitReason; /* 5A */
502 UCHAR Priority; /* 5B */
503 UCHAR EnableStackSwap; /* 5C */
504 UCHAR SwapBusy; /* 5D */
505 UCHAR Alerted[2]; /* 5E */
506 union /* 60 */
507 { /* 60 */
508 LIST_ENTRY WaitListEntry; /* 60 */
509 SINGLE_LIST_ENTRY SwapListEntry; /* 60 */
510 }; /* 68 */
511 PKQUEUE Queue; /* 68 */
512 ULONG WaitTime; /* 6C */
513 union /* 70 */
514 { /* 70 */
515 struct /* 70 */
516 { /* 70 */
517 USHORT KernelApcDisable; /* 70 */
518 USHORT SpecialApcDisable; /* 72 */
519 }; /* 70 */
520 ULONG CombinedApcDisable; /* 70 */
521 }; /* 74 */
522 struct _TEB *Teb; /* 74 */
523 union /* 78 */
524 { /* 78 */
525 KTIMER Timer; /* 78 */
526 UCHAR TimerFill[40]; /* 78 */
527 }; /* 78 */
528 union /* A0 */
529 { /* A0 */
530 struct /* A0 */
531 { /* A0 */
532 LONG AutoAlignment:1; /* A0 */
533 LONG DisableBoost:1; /* A0 */
534 LONG ReservedFlags:30; /* A0 */
535 }; /* A0 */
536 LONG ThreadFlags; /* A0 */
537 }; /* A0 */
538 PVOID Padding; /* A4 */
539 union /* A8 */
540 { /* A8 */
541 KWAIT_BLOCK WaitBlock[4]; /* A8 */
542 union /* A8 */
543 { /* A8 */
544 struct /* A8 */
545 { /* A8 */
546 UCHAR WaitBlockFill0[23]; /* A8 */
547 UCHAR SystemAffinityActive; /* BF */
548 }; /* A8 */
549 struct /* A8 */
550 { /* A8 */
551 UCHAR WaitBlockFill1[47]; /* A8 */
552 UCHAR PreviousMode; /* D7 */
553 }; /* A8 */
554 struct /* A8 */
555 { /* A8 */
556 UCHAR WaitBlockFill2[71]; /* A8 */
557 UCHAR ResourceIndex; /* EF */
558 }; /* A8 */
559 struct /* A8 */
560 { /* A8 */
561 UCHAR WaitBlockFill3[95]; /* A8 */
562 UCHAR LargeStack; /* 107 */
563 }; /* A8 */
564 }; /* A8 */
565 }; /* A8 */
566 LIST_ENTRY QueueListEntry; /* 108 */
567 PKTRAP_FRAME TrapFrame; /* 110 */
568 PVOID CallbackStack; /* 114 */
569 PVOID ServiceTable; /* 118 */
570 UCHAR ApcStateIndex; /* 11C */
571 UCHAR IdealProcessor; /* 11D */
572 UCHAR Preempted; /* 11E */
573 UCHAR ProcessReadyQueue; /* 11F */
574 UCHAR KernelStackResident; /* 120 */
575 CHAR BasePriority; /* 121 */
576 CHAR PriorityDecrement; /* 122 */
577 CHAR Saturation; /* 123 */
578 KAFFINITY UserAffinity; /* 124 */
579 struct _KPROCESS *Process; /* 128 */
580 KAFFINITY Affinity; /* 12C */
581 PKAPC_STATE ApcStatePointer[2]; /* 130 */
582 union /* 138 */
583 { /* 138 */
584 KAPC_STATE SavedApcState; /* 138 */
585 union /* 138 */
586 { /* 138 */
587 UCHAR SavedApcStateFill[23]; /* 138 */
588 CHAR FreezeCount; /* 14F */
589 }; /* 138 */
590 }; /* 138 */
591 CHAR SuspendCount; /* 150 */
592 UCHAR UserIdealProcessor; /* 151 */
593 UCHAR CalloutActive; /* 152 */
594 UCHAR Iopl; /* 153 */
595 PVOID Win32Thread; /* 154 */
596 PVOID StackBase; /* 158 */
597 union /* 15C */
598 { /* 15C */
599 KAPC SuspendApc; /* 15C */
600 union /* 15C */
601 { /* 15C */
602 UCHAR SuspendApcFill0[1]; /* 15C */
603 CHAR Quantum; /* 15D */
604 }; /* 15C */
605 union /* 15C */
606 { /* 15C */
607 UCHAR SuspendApcFill1[3]; /* 15C */
608 UCHAR QuantumReset; /* 15F */
609 }; /* 15C */
610 union /* 15C */
611 { /* 15C */
612 UCHAR SuspendApcFill2[4]; /* 15C */
613 ULONG KernelTime; /* 160 */
614 }; /* 15C */
615 union /* 15C */
616 { /* 15C */
617 UCHAR SuspendApcFill3[36]; /* 15C */
618 PVOID TlsArray; /* 180 */
619 }; /* 15C */
620 union /* 15C */
621 { /* 15C */
622 UCHAR SuspendApcFill4[40]; /* 15C */
623 PVOID LegoData; /* 184 */
624 }; /* 15C */
625 union /* 15C */
626 { /* 15C */
627 UCHAR SuspendApcFill5[47]; /* 15C */
628 UCHAR PowerState; /* 18B */
629 }; /* 15C */
630 }; /* 15C */
631 ULONG UserTime; /* 18C */
632 union /* 190 */
633 { /* 190 */
634 KSEMAPHORE SuspendSemaphore; /* 190 */
635 UCHAR SuspendSemaphorefill[20]; /* 190 */
636 }; /* 190 */
637 ULONG SListFaultCount; /* 1A4 */
638 LIST_ENTRY ThreadListEntry; /* 1A8 */
639 PVOID SListFaultAddress; /* 1B0 */
640 } KTHREAD; /* sizeof: 1B4 */
641 #include <poppack.h>
642
643 //
644 // Kernel Process (KPROCESS)
645 //
646 typedef struct _KPROCESS
647 {
648 DISPATCHER_HEADER Header; /* 000 */
649 LIST_ENTRY ProfileListHead; /* 010 */
650 PHYSICAL_ADDRESS DirectoryTableBase; /* 018 */
651 #if defined(_M_IX86)
652 KGDTENTRY LdtDescriptor; /* 020 */
653 KIDTENTRY Int21Descriptor; /* 028 */
654 USHORT IopmOffset; /* 030 */
655 UCHAR Iopl; /* 032 */
656 UCHAR Unused; /* 033 */
657 #endif
658 ULONG ActiveProcessors; /* 034 */
659 ULONG KernelTime; /* 038 */
660 ULONG UserTime; /* 03C */
661 LIST_ENTRY ReadyListHead; /* 040 */
662 LIST_ENTRY SwapListEntry; /* 048 */
663 PVOID VdmTrapcHandler; /* 04C */
664 LIST_ENTRY ThreadListHead; /* 050 */
665 KSPIN_LOCK ProcessLock; /* 058 */
666 KAFFINITY Affinity; /* 05C */
667 union
668 {
669 struct
670 {
671 ULONG AutoAlignment:1; /* 060.0 */
672 ULONG DisableBoost:1; /* 060.1 */
673 ULONG DisableQuantum:1; /* 060.2 */
674 ULONG ReservedFlags:29; /* 060.3 */
675 };
676 ULONG ProcessFlags; /* 060 */
677 };
678 CHAR BasePriority; /* 064 */
679 CHAR QuantumReset; /* 065 */
680 UCHAR State; /* 066 */
681 UCHAR ThreadSeed; /* 067 */
682 UCHAR PowerState; /* 068 */
683 UCHAR IdealNode; /* 069 */
684 UCHAR Visited; /* 06A */
685 KEXECUTE_OPTIONS Flags; /* 06B */
686 ULONG StackCount; /* 06C */
687 LIST_ENTRY ProcessListEntry; /* 070 */
688 } KPROCESS, *PKPROCESS;
689
690 //
691 // System Service Table Descriptor
692 //
693 typedef struct _KSERVICE_TABLE_DESCRIPTOR
694 {
695 PULONG_PTR Base;
696 PULONG Count;
697 ULONG Limit;
698 #if defined(_IA64_)
699 LONG TableBaseGpOffset;
700 #endif
701 PUCHAR Number;
702 } KSERVICE_TABLE_DESCRIPTOR, *PKSERVICE_TABLE_DESCRIPTOR;
703
704 //
705 // Exported Loader Parameter Block
706 //
707 #ifdef _REACTOS_
708 extern LOADER_PARAMETER_BLOCK NTSYSAPI KeLoaderBlock;
709 #else
710 extern PLOADER_PARAMETER_BLOCK NTSYSAPI KeLoaderBlock;
711 #endif
712
713 //
714 // Exported Hardware Data
715 //
716 extern KAFFINITY NTSYSAPI KeActiveProcessors;
717 extern CHAR NTSYSAPI KeNumberProcessors;
718 extern ULONG NTSYSAPI KiDmaIoCoherency;
719 extern ULONG NTSYSAPI KeMaximumIncrement;
720 extern ULONG NTSYSAPI KeMinimumIncrement;
721 extern ULONG NTSYSAPI KeDcacheFlushCount;
722 extern ULONG NTSYSAPI KeIcacheFlushCount;
723
724 //
725 // Exported System Service Descriptor Tables
726 //
727 extern KSERVICE_TABLE_DESCRIPTOR NTSYSAPI KeServiceDescriptorTable[SSDT_MAX_ENTRIES];
728 extern KSERVICE_TABLE_DESCRIPTOR NTSYSAPI KeServiceDescriptorTableShadow[SSDT_MAX_ENTRIES];
729
730 #endif // !NTOS_MODE_USER
731
732 #endif // _KETYPES_H