Add NDK 1.00-pre. Needs some TLC in umtypes.h and a lot of fixes. Not used anywhere...
[reactos.git] / reactos / include / ndk / zwtypes.h
1 /*
2 * PROJECT: ReactOS Native Headers
3 * FILE: include/ndk/zwtypes.h
4 * PURPOSE: Defintions for Native Types not defined in DDK/IFS
5 * PROGRAMMER: Alex Ionescu (alex@relsoft.net)
6 * UPDATE HISTORY:
7 * Created 06/10/04
8 */
9 #ifndef _ZWTYPES_H
10 #define _ZWTYPES_H
11
12 /* DEPENDENCIES **************************************************************/
13 #include "rtltypes.h"
14
15 /* EXPORTED DATA *************************************************************/
16
17 /* CONSTANTS *****************************************************************/
18
19 /* ENUMERATIONS **************************************************************/
20
21 typedef enum _PLUGPLAY_BUS_CLASS
22 {
23 SystemBus,
24 PlugPlayVirtualBus,
25 MaxPlugPlayBusClass
26 } PLUGPLAY_BUS_CLASS, *PPLUGPLAY_BUS_CLASS;
27
28 typedef enum _PLUGPLAY_VIRTUAL_BUS_TYPE
29 {
30 Root,
31 MaxPlugPlayVirtualBusType
32 } PLUGPLAY_VIRTUAL_BUS_TYPE, *PPLUGPLAY_VIRTUAL_BUS_TYPE;
33
34 /**** Information Classes ****/
35 /*
36 * System
37 */
38 typedef enum _SYSTEM_INFORMATION_CLASS
39 {
40 SystemBasicInformation,
41 SystemProcessorInformation,
42 SystemPerformanceInformation,
43 SystemTimeOfDayInformation,
44 SystemPathInformation, /* OBSOLETE: USE KUSER_SHARED_DATA */
45 SystemProcessInformation,
46 SystemCallCountInformation,
47 SystemDeviceInformation,
48 SystemProcessorPerformanceInformation,
49 SystemFlagsInformation,
50 SystemCallTimeInformation,
51 SystemModuleInformation,
52 SystemLocksInformation,
53 SystemStackTraceInformation,
54 SystemPagedPoolInformation,
55 SystemNonPagedPoolInformation,
56 SystemHandleInformation,
57 SystemObjectInformation,
58 SystemPageFileInformation,
59 SystemVdmInstemulInformation,
60 SystemVdmBopInformation,
61 SystemFileCacheInformation,
62 SystemPoolTagInformation,
63 SystemInterruptInformation,
64 SystemDpcBehaviorInformation,
65 SystemFullMemoryInformation,
66 SystemLoadGdiDriverInformation,
67 SystemUnloadGdiDriverInformation,
68 SystemTimeAdjustmentInformation,
69 SystemSummaryMemoryInformation,
70 SystemNextEventIdInformation,
71 SystemEventIdsInformation,
72 SystemCrashDumpInformation,
73 SystemExceptionInformation,
74 SystemCrashDumpStateInformation,
75 SystemKernelDebuggerInformation,
76 SystemContextSwitchInformation,
77 SystemRegistryQuotaInformation,
78 SystemExtendServiceTableInformation,
79 SystemPrioritySeperation,
80 SystemPlugPlayBusInformation,
81 SystemDockInformation,
82 SystemPowerInformation,
83 SystemProcessorSpeedInformation,
84 SystemCurrentTimeZoneInformation,
85 SystemLookasideInformation,
86 SystemTimeSlipNotification,
87 SystemSessionCreate,
88 SystemSessionDetach,
89 SystemSessionInformation,
90 SystemRangeStartInformation,
91 SystemVerifierInformation,
92 SystemAddVerifier,
93 SystemSessionProcessesInformation,
94 SystemInformationClassMax
95 } SYSTEM_INFORMATION_CLASS;
96
97 /*
98 * Object
99 */
100 typedef enum _OBJECT_INFORMATION_CLASS
101 {
102 ObjectBasicInformation,
103 ObjectNameInformation,
104 ObjectTypeInformation,
105 ObjectAllTypesInformation,
106 ObjectHandleInformation
107 } OBJECT_INFORMATION_CLASS;
108
109 /*
110 * Memory
111 */
112 typedef enum _MEMORY_INFORMATION_CLASS
113 {
114 MemoryBasicInformation,
115 MemoryWorkingSetList,
116 MemorySectionName,
117 MemoryBasicVlmInformation
118 } MEMORY_INFORMATION_CLASS;
119
120 /*
121 * Mutant
122 */
123 typedef enum _MUTANT_INFORMATION_CLASS
124 {
125 MutantBasicInformation
126 } MUTANT_INFORMATION_CLASS;
127
128 /*
129 * Atom
130 */
131 typedef enum _ATOM_INFORMATION_CLASS
132 {
133 AtomBasicInformation,
134 AtomTableInformation,
135 } ATOM_INFORMATION_CLASS;
136
137 /*
138 * Section
139 */
140 typedef enum _SECTION_INFORMATION_CLASS
141 {
142 SectionBasicInformation,
143 SectionImageInformation,
144 } SECTION_INFORMATION_CLASS;
145
146 /*
147 * Timer
148 */
149 typedef enum _TIMER_INFORMATION_CLASS {
150 TimerBasicInformation
151 } TIMER_INFORMATION_CLASS;
152
153 /*
154 * Semaphore
155 */
156 typedef enum _SEMAPHORE_INFORMATION_CLASS
157 {
158 SemaphoreBasicInformation
159 } SEMAPHORE_INFORMATION_CLASS;
160
161 /*
162 * Event
163 */
164 typedef enum _EVENT_INFORMATION_CLASS
165 {
166 EventBasicInformation
167 } EVENT_INFORMATION_CLASS;
168
169 /*
170 * I/O Completion
171 */
172 typedef enum _IO_COMPLETION_INFORMATION_CLASS
173 {
174 IoCompletionBasicInformation
175 } IO_COMPLETION_INFORMATION_CLASS;
176
177 /* TYPES *********************************************************************/
178
179 typedef unsigned short LANGID;
180 typedef LANGID *PLANGID;
181
182 /**** Information Structures ****/
183 /*
184 * Mutant
185 */
186
187 /* Class 0 */
188 typedef struct _MUTANT_BASIC_INFORMATION
189 {
190 LONG CurrentCount;
191 BOOLEAN OwnedbyCalled;
192 BOOLEAN AbandonedState;
193 } MUTANT_BASIC_INFORMATION, *PMUTANT_BASIC_INFORMATION;
194
195 /*
196 * Thread
197 */
198
199 /* Class 0 */
200 typedef struct _THREAD_BASIC_INFORMATION
201 {
202 NTSTATUS ExitStatus;
203 PVOID TebBaseAddress;
204 CLIENT_ID ClientId;
205 KAFFINITY AffinityMask;
206 KPRIORITY Priority;
207 KPRIORITY BasePriority;
208 } THREAD_BASIC_INFORMATION, *PTHREAD_BASIC_INFORMATION;
209
210 /*
211 * Atom
212 */
213
214 /* Class 0 */
215 typedef struct _ATOM_BASIC_INFORMATION {
216 USHORT UsageCount;
217 USHORT Flags;
218 USHORT NameLength;
219 WCHAR Name[1];
220 } ATOM_BASIC_INFORMATION, *PATOM_BASIC_INFORMATION;
221
222 /* Class 1 */
223 typedef struct _ATOM_TABLE_INFORMATION
224 {
225 ULONG NumberOfAtoms;
226 USHORT Atoms[1];
227 } ATOM_TABLE_INFORMATION, *PATOM_TABLE_INFORMATION;
228
229 /*
230 * Memory
231 */
232
233 /* Class 1 */
234 typedef struct _MEMORY_WORKING_SET_LIST
235 {
236 ULONG NumberOfPages;
237 ULONG WorkingSetList[1];
238 } MEMORY_WORKING_SET_LIST, *PMEMORY_WORKING_SET_LIST;
239
240 /* Class 2 */
241 typedef struct {
242 UNICODE_STRING SectionFileName;
243 WCHAR NameBuffer[ANYSIZE_ARRAY];
244 } MEMORY_SECTION_NAME, *PMEMORY_SECTION_NAME;
245
246 /*
247 * Section
248 */
249
250 /* Class 0 */
251 typedef struct _SECTION_BASIC_INFORMATION
252 {
253 PVOID BaseAddress;
254 ULONG Attributes;
255 LARGE_INTEGER Size;
256 } SECTION_BASIC_INFORMATION, *PSECTION_BASIC_INFORMATION;
257
258 /* Class 1 */
259 typedef struct _SECTION_IMAGE_INFORMATION
260 {
261 ULONG EntryPoint;
262 ULONG Unknown1;
263 ULONG_PTR StackReserve;
264 ULONG_PTR StackCommit;
265 ULONG Subsystem;
266 USHORT MinorSubsystemVersion;
267 USHORT MajorSubsystemVersion;
268 ULONG Unknown2;
269 ULONG Characteristics;
270 USHORT ImageNumber;
271 BOOLEAN Executable;
272 UCHAR Unknown3;
273 ULONG Unknown4[3];
274 } SECTION_IMAGE_INFORMATION, *PSECTION_IMAGE_INFORMATION;
275
276 /*
277 * Object
278 */
279
280 /* Class 4 */
281 typedef struct _OBJECT_HANDLE_ATTRIBUTE_INFORMATION
282 {
283 BOOLEAN Inherit;
284 BOOLEAN ProtectFromClose;
285 } OBJECT_HANDLE_ATTRIBUTE_INFORMATION, *POBJECT_HANDLE_ATTRIBUTE_INFORMATION;
286
287 /*
288 * Timer
289 */
290
291 /* Class 0 */
292 typedef struct _TIMER_BASIC_INFORMATION
293 {
294 LARGE_INTEGER TimeRemaining;
295 BOOLEAN SignalState;
296 } TIMER_BASIC_INFORMATION, *PTIMER_BASIC_INFORMATION;
297
298 /*
299 * Semaphore
300 */
301
302 /* Class 0 */
303 typedef struct _SEMAPHORE_BASIC_INFORMATION {
304 LONG CurrentCount;
305 LONG MaximumCount;
306 } SEMAPHORE_BASIC_INFORMATION, *PSEMAPHORE_BASIC_INFORMATION;
307
308 /*
309 * Event
310 *
311 /* Class 0 */
312 typedef struct _EVENT_BASIC_INFORMATION
313 {
314 EVENT_TYPE EventType;
315 LONG EventState;
316 } EVENT_BASIC_INFORMATION, *PEVENT_BASIC_INFORMATION;
317
318 /*
319 * System
320 */
321
322 /* Class 0 */
323 typedef struct _SYSTEM_BASIC_INFORMATION
324 {
325 ULONG Reserved;
326 ULONG TimerResolution;
327 ULONG PageSize;
328 ULONG NumberOfPhysicalPages;
329 ULONG LowestPhysicalPageNumber;
330 ULONG HighestPhysicalPageNumber;
331 ULONG AllocationGranularity;
332 ULONG MinimumUserModeAddress;
333 ULONG MaximumUserModeAddress;
334 KAFFINITY ActiveProcessorsAffinityMask;
335 CCHAR NumberOfProcessors;
336 } SYSTEM_BASIC_INFORMATION, *PSYSTEM_BASIC_INFORMATION;
337
338 /* Class 1 */
339 typedef struct _SYSTEM_PROCESSOR_INFORMATION {
340 USHORT ProcessorArchitecture;
341 USHORT ProcessorLevel;
342 USHORT ProcessorRevision;
343 USHORT Reserved;
344 ULONG ProcessorFeatureBits;
345 } SYSTEM_PROCESSOR_INFORMATION, *PSYSTEM_PROCESSOR_INFORMATION;
346
347 /* Class 2 */
348 typedef struct _SYSTEM_PERFORMANCE_INFORMATION
349 {
350 LARGE_INTEGER IdleProcessTime;
351 LARGE_INTEGER IoReadTransferCount;
352 LARGE_INTEGER IoWriteTransferCount;
353 LARGE_INTEGER IoOtherTransferCount;
354 ULONG IoReadOperationCount;
355 ULONG IoWriteOperationCount;
356 ULONG IoOtherOperationCount;
357 ULONG AvailablePages;
358 ULONG CommittedPages;
359 ULONG CommitLimit;
360 ULONG PeakCommitment;
361 ULONG PageFaultCount;
362 ULONG CopyOnWriteCount;
363 ULONG TransitionCount;
364 ULONG CacheTransitionCount;
365 ULONG DemandZeroCount;
366 ULONG PageReadCount;
367 ULONG PageReadIoCount;
368 ULONG CacheReadCount;
369 ULONG CacheIoCount;
370 ULONG DirtyPagesWriteCount;
371 ULONG DirtyWriteIoCount;
372 ULONG MappedPagesWriteCount;
373 ULONG MappedWriteIoCount;
374 ULONG PagedPoolPages;
375 ULONG NonPagedPoolPages;
376 ULONG PagedPoolAllocs;
377 ULONG PagedPoolFrees;
378 ULONG NonPagedPoolAllocs;
379 ULONG NonPagedPoolFrees;
380 ULONG FreeSystemPtes;
381 ULONG ResidentSystemCodePage;
382 ULONG TotalSystemDriverPages;
383 ULONG TotalSystemCodePages;
384 ULONG NonPagedPoolLookasideHits;
385 ULONG PagedPoolLookasideHits;
386 ULONG Spare3Count;
387 ULONG ResidentSystemCachePage;
388 ULONG ResidentPagedPoolPage;
389 ULONG ResidentSystemDriverPage;
390 ULONG CcFastReadNoWait;
391 ULONG CcFastReadWait;
392 ULONG CcFastReadResourceMiss;
393 ULONG CcFastReadNotPossible;
394 ULONG CcFastMdlReadNoWait;
395 ULONG CcFastMdlReadWait;
396 ULONG CcFastMdlReadResourceMiss;
397 ULONG CcFastMdlReadNotPossible;
398 ULONG CcMapDataNoWait;
399 ULONG CcMapDataWait;
400 ULONG CcMapDataNoWaitMiss;
401 ULONG CcMapDataWaitMiss;
402 ULONG CcPinMappedDataCount;
403 ULONG CcPinReadNoWait;
404 ULONG CcPinReadWait;
405 ULONG CcPinReadNoWaitMiss;
406 ULONG CcPinReadWaitMiss;
407 ULONG CcCopyReadNoWait;
408 ULONG CcCopyReadWait;
409 ULONG CcCopyReadNoWaitMiss;
410 ULONG CcCopyReadWaitMiss;
411 ULONG CcMdlReadNoWait;
412 ULONG CcMdlReadWait;
413 ULONG CcMdlReadNoWaitMiss;
414 ULONG CcMdlReadWaitMiss;
415 ULONG CcReadAheadIos;
416 ULONG CcLazyWriteIos;
417 ULONG CcLazyWritePages;
418 ULONG CcDataFlushes;
419 ULONG CcDataPages;
420 ULONG ContextSwitches;
421 ULONG FirstLevelTbFills;
422 ULONG SecondLevelTbFills;
423 ULONG SystemCalls;
424 } SYSTEM_PERFORMANCE_INFORMATION, *PSYSTEM_PERFORMANCE_INFORMATION;
425
426 /* Class 3 */
427 typedef struct _SYSTEM_TIMEOFDAY_INFORMATION {
428 LARGE_INTEGER BootTime;
429 LARGE_INTEGER CurrentTime;
430 LARGE_INTEGER TimeZoneBias;
431 ULONG TimeZoneId;
432 ULONG Reserved;
433 } SYSTEM_TIMEOFDAY_INFORMATION, *PSYSTEM_TIMEOFDAY_INFORMATION;
434
435 /* Class 4 */
436 /* This class is obsoleted, please use KUSER_SHARED_DATA instead */
437
438 /* Class 5 */
439 typedef struct _SYSTEM_THREAD_INFORMATION
440 {
441 LARGE_INTEGER KernelTime;
442 LARGE_INTEGER UserTime;
443 LARGE_INTEGER CreateTime;
444 ULONG WaitTime;
445 PVOID StartAddress;
446 CLIENT_ID ClientId;
447 KPRIORITY Priority;
448 LONG BasePriority;
449 ULONG ContextSwitches;
450 ULONG ThreadState;
451 ULONG WaitReason;
452 } SYSTEM_THREAD_INFORMATION, *PSYSTEM_THREAD_INFORMATION;
453 typedef struct _SYSTEM_PROCESS_INFORMATION
454 {
455 ULONG NextEntryOffset;
456 ULONG NumberOfThreads;
457 LARGE_INTEGER SpareLi1;
458 LARGE_INTEGER SpareLi2;
459 LARGE_INTEGER SpareLi3;
460 LARGE_INTEGER CreateTime;
461 LARGE_INTEGER UserTime;
462 LARGE_INTEGER KernelTime;
463 UNICODE_STRING ImageName;
464 KPRIORITY BasePriority;
465 HANDLE UniqueProcessId;
466 HANDLE InheritedFromUniqueProcessId;
467 ULONG HandleCount;
468 ULONG SessionId;
469 ULONG PageDirectoryFrame;
470
471 /*
472 * This part corresponds to VM_COUNTERS_EX.
473 * NOTE: *NOT* THE SAME AS VM_COUNTERS!
474 */
475 ULONG PeakVirtualSize;
476 ULONG VirtualSize;
477 ULONG PageFaultCount;
478 ULONG PeakWorkingSetSize;
479 ULONG WorkingSetSize;
480 ULONG QuotaPeakPagedPoolUsage;
481 ULONG QuotaPagedPoolUsage;
482 ULONG QuotaPeakNonPagedPoolUsage;
483 ULONG QuotaNonPagedPoolUsage;
484 ULONG PagefileUsage;
485 ULONG PeakPagefileUsage;
486 ULONG PrivateUsage;
487
488 /* This part corresponds to IO_COUNTERS */
489 LARGE_INTEGER ReadOperationCount;
490 LARGE_INTEGER WriteOperationCount;
491 LARGE_INTEGER OtherOperationCount;
492 LARGE_INTEGER ReadTransferCount;
493 LARGE_INTEGER WriteTransferCount;
494 LARGE_INTEGER OtherTransferCount;
495
496 /* Finally, the array of Threads */
497 SYSTEM_THREAD_INFORMATION TH[1];
498 } SYSTEM_PROCESS_INFORMATION, *PSYSTEM_PROCESS_INFORMATION;
499
500 /* Class 6 */
501 typedef struct _SYSTEM_CALL_COUNT_INFORMATION
502 {
503 ULONG Length;
504 ULONG NumberOfTables;
505 } SYSTEM_CALL_COUNT_INFORMATION, *PSYSTEM_CALL_COUNT_INFORMATION;
506
507 /* Class 7 */
508 typedef struct _SYSTEM_DEVICE_INFORMATION {
509 ULONG NumberOfDisks;
510 ULONG NumberOfFloppies;
511 ULONG NumberOfCdRoms;
512 ULONG NumberOfTapes;
513 ULONG NumberOfSerialPorts;
514 ULONG NumberOfParallelPorts;
515 } SYSTEM_DEVICE_INFORMATION, *PSYSTEM_DEVICE_INFORMATION;
516
517 /* Class 8 */
518 typedef struct _SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION
519 {
520 LARGE_INTEGER IdleTime;
521 LARGE_INTEGER KernelTime;
522 LARGE_INTEGER UserTime;
523 LARGE_INTEGER DpcTime;
524 LARGE_INTEGER InterruptTime;
525 ULONG InterruptCount;
526 } SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION,
527
528 /* Class 9 */
529 typedef struct _SYSTEM_FLAGS_INFORMATION
530 {
531 ULONG Flags;
532 } SYSTEM_FLAGS_INFORMATION, *PSYSTEM_FLAGS_INFORMATION;
533
534 /* Class 10 */
535 typedef struct _SYSTEM_CALL_TIME_INFORMATION
536 {
537 ULONG Length;
538 ULONG TotalCalls;
539 LARGE_INTEGER TimeOfCalls[1];
540 } SYSTEM_CALL_TIME_INFORMATION, *PSYSTEM_CALL_TIME_INFORMATION;
541
542 /* Class 11 */
543 typedef struct _SYSTEM_MODULE_INFORMATION_ENTRY
544 {
545 ULONG Unknown1;
546 ULONG Unknown2;
547 PVOID Base;
548 ULONG Size;
549 ULONG Flags;
550 USHORT Index;
551 USHORT NameLength;
552 USHORT LoadCount;
553 USHORT PathLength;
554 CHAR ImageName[256];
555 } SYSTEM_MODULE_INFORMATION_ENTRY, *PSYSTEM_MODULE_INFORMATION_ENTRY;
556 typedef struct _SYSTEM_MODULE_INFORMATION
557 {
558 ULONG Count;
559 SYSTEM_MODULE_INFORMATION_ENTRY Module[1];
560 } SYSTEM_MODULE_INFORMATION, *PSYSTEM_MODULE_INFORMATION;
561
562 /* Class 12 */
563 typedef struct _SYSTEM_RESOURCE_LOCK_ENTRY
564 {
565 ULONG ResourceAddress;
566 ULONG Always1;
567 ULONG Unknown;
568 ULONG ActiveCount;
569 ULONG ContentionCount;
570 ULONG Unused[2];
571 ULONG NumberOfSharedWaiters;
572 ULONG NumberOfExclusiveWaiters;
573 } SYSTEM_RESOURCE_LOCK_ENTRY, *PSYSTEM_RESOURCE_LOCK_ENTRY;
574 typedef struct _SYSTEM_RESOURCE_LOCK_INFO
575 {
576 ULONG Count;
577 SYSTEM_RESOURCE_LOCK_ENTRY Lock[1];
578 } SYSTEM_RESOURCE_LOCK_INFO, *PSYSTEM_RESOURCE_LOCK_INFO;
579
580 /* Class 13 */
581 typedef struct _SYSTEM_BACKTRACE_INFORMATION_ENTRY
582 {
583 /* FIXME */
584 } SYSTEM_BACKTRACE_INFORMATION_ENTRY, *PSYSTEM_BACKTRACE_INFORMATION_ENTRY;
585 typedef struct _SYSTEM_BACKTRACE_INFORMATION
586 {
587 /* FIXME */
588 ULONG Unknown[4]
589 ULONG Count;
590 SYSTEM_BACKTRACE_INFORMATION_ENTRY Trace[1];
591 } SYSTEM_BACKTRACE_INFORMATION, *PSYSTEM_BACKTRACE_INFORMATION;
592
593 /* Class 14 - 15 */
594 typedef struct _SYSTEM_POOL_ENTRY
595 {
596 BOOLEAN Allocated;
597 BOOLEAN Spare0;
598 USHORT AllocatorBackTraceIndex;
599 ULONG Size;
600 union {
601 UCHAR Tag[4];
602 ULONG TagUlong;
603 PVOID ProcessChargedQuota;
604 };
605 } SYSTEM_POOL_ENTRY, *PSYSTEM_POOL_ENTRY;
606 typedef struct _SYSTEM_POOL_INFORMATION
607 {
608 ULONG TotalSize;
609 PVOID FirstEntry;
610 USHORT EntryOverhead;
611 BOOLEAN PoolTagPresent;
612 BOOLEAN Spare0;
613 ULONG NumberOfEntries;
614 SYSTEM_POOL_ENTRY Entries[1];
615 } SYSTEM_POOL_INFORMATION, *PSYSTEM_POOL_INFORMATION;
616
617 /* Class 16 */
618 typedef struct _SYSTEM_HANDLE_TABLE_ENTRY_INFO
619 {
620 USHORT UniqueProcessId;
621 USHORT CreatorBackTraceIndex;
622 UCHAR ObjectTypeIndex;
623 UCHAR HandleAttributes;
624 USHORT HandleValue;
625 PVOID Object;
626 ULONG GrantedAccess;
627 } SYSTEM_HANDLE_TABLE_ENTRY_INFO, *PSYSTEM_HANDLE_TABLE_ENTRY_INFO;
628 typedef struct _SYSTEM_HANDLE_INFORMATION
629 {
630 ULONG NumberOfHandles;
631 SYSTEM_HANDLE_TABLE_ENTRY_INFO Handles[1];
632 } SYSTEM_HANDLE_INFORMATION, *PSYSTEM_HANDLE_INFORMATION;
633
634 /* Class 17 */
635 typedef struct _SYSTEM_OBJECTTYPE_INFORMATION
636 {
637 ULONG NextEntryOffset;
638 ULONG NumberOfObjects;
639 ULONG NumberOfHandles;
640 ULONG TypeIndex;
641 ULONG InvalidAttributes;
642 GENERIC_MAPPING GenericMapping;
643 ULONG ValidAccessMask;
644 ULONG PoolType;
645 BOOLEAN SecurityRequired;
646 BOOLEAN WaitableObject;
647 UNICODE_STRING TypeName;
648 } SYSTEM_OBJECTTYPE_INFORMATION, *PSYSTEM_OBJECTTYPE_INFORMATION;
649 typedef struct _SYSTEM_OBJECT_INFORMATION
650 {
651 ULONG NextEntryOffset;
652 PVOID Object;
653 HANDLE CreatorUniqueProcess;
654 USHORT CreatorBackTraceIndex;
655 USHORT Flags;
656 LONG PointerCount;
657 LONG HandleCount;
658 ULONG PagedPoolCharge;
659 ULONG NonPagedPoolCharge;
660 HANDLE ExclusiveProcessId;
661 PVOID SecurityDescriptor;
662 OBJECT_NAME_INFORMATION NameInfo;
663 } SYSTEM_OBJECT_INFORMATION, *PSYSTEM_OBJECT_INFORMATION;
664
665 /* Class 18 */
666 typedef struct _SYSTEM_PAGEFILE_INFORMATION
667 {
668 ULONG NextEntryOffset;
669 ULONG TotalSize;
670 ULONG TotalInUse;
671 ULONG PeakUsage;
672 UNICODE_STRING PageFileName;
673 } SYSTEM_PAGEFILE_INFORMATION, *PSYSTEM_PAGEFILE_INFORMATION;
674
675 /* Class 19 */
676 typedef struct _SYSTEM_VDM_INSTEMUL_INFO
677 {
678 ULONG SegmentNotPresent;
679 ULONG VdmOpcode0F;
680 ULONG OpcodeESPrefix;
681 ULONG OpcodeCSPrefix;
682 ULONG OpcodeSSPrefix;
683 ULONG OpcodeDSPrefix;
684 ULONG OpcodeFSPrefix;
685 ULONG OpcodeGSPrefix;
686 ULONG OpcodeOPER32Prefix;
687 ULONG OpcodeADDR32Prefix;
688 ULONG OpcodeINSB;
689 ULONG OpcodeINSW;
690 ULONG OpcodeOUTSB;
691 ULONG OpcodeOUTSW;
692 ULONG OpcodePUSHF;
693 ULONG OpcodePOPF;
694 ULONG OpcodeINTnn;
695 ULONG OpcodeINTO;
696 ULONG OpcodeIRET;
697 ULONG OpcodeINBimm;
698 ULONG OpcodeINWimm;
699 ULONG OpcodeOUTBimm;
700 ULONG OpcodeOUTWimm ;
701 ULONG OpcodeINB;
702 ULONG OpcodeINW;
703 ULONG OpcodeOUTB;
704 ULONG OpcodeOUTW;
705 ULONG OpcodeLOCKPrefix;
706 ULONG OpcodeREPNEPrefix;
707 ULONG OpcodeREPPrefix;
708 ULONG OpcodeHLT;
709 ULONG OpcodeCLI;
710 ULONG OpcodeSTI;
711 ULONG BopCount;
712 } SYSTEM_VDM_INSTEMUL_INFO, *PSYSTEM_VDM_INSTEMUL_INFO;
713
714 /* Class 20 */
715 typedef struct _SYSTEM_VDM_BOP_INFO
716 {
717 /* FIXME */
718 }
719
720 /* Class 21 */
721 typedef struct _SYSTEM_CACHE_INFORMATION
722 {
723 ULONG CurrentSize;
724 ULONG PeakSize;
725 ULONG PageFaultCount;
726 ULONG MinimumWorkingSet;
727 ULONG MaximumWorkingSet;
728 ULONG CurrentSizeIncludingTransitionInPages;
729 ULONG PeakSizeIncludingTransitionInPages;
730 ULONG Unused[2];
731 } SYSTEM_CACHE_INFORMATION;
732
733 /* Class 22 */
734 typedef struct _SYSTEM_POOLTAG
735 {
736 union
737 {
738 UCHAR Tag[4];
739 ULONG TagUlong;
740 };
741 ULONG PagedAllocs;
742 ULONG PagedFrees;
743 ULONG PagedUsed;
744 ULONG NonPagedAllocs;
745 ULONG NonPagedFrees;
746 ULONG NonPagedUsed;
747 } SYSTEM_POOLTAG, *PSYSTEM_POOLTAG;
748 typedef struct _SYSTEM_POOLTAG_INFORMATION
749 {
750 ULONG Count;
751 SYSTEM_POOLTAG TagInfo[1];
752 } SYSTEM_POOLTAG_INFORMATION, *PSYSTEM_POOLTAG_INFORMATION;
753
754 /* Class 23 */
755 typedef struct _SYSTEM_INTERRUPT_INFORMATION
756 {
757 ULONG ContextSwitches;
758 ULONG DpcCount;
759 ULONG DpcRate;
760 ULONG TimeIncrement;
761 ULONG DpcBypassCount;
762 ULONG ApcBypassCount;
763 } SYSTEM_INTERRUPT_INFORMATION, *PSYSTEM_INTERRUPT_INFORMATION;
764
765 /* Class 24 */
766 typedef struct _SYSTEM_DPC_BEHAVIOR_INFORMATION
767 {
768 ULONG Spare;
769 ULONG DpcQueueDepth;
770 ULONG MinimumDpcRate;
771 ULONG AdjustDpcThreshold;
772 ULONG IdealDpcRate;
773 } SYSTEM_DPC_BEHAVIOR_INFORMATION, *PSYSTEM_DPC_BEHAVIOR_INFORMATION;
774
775 /* Class 25 */
776 typedef struct _SYSTEM_MEMORY_INFO
777 {
778 PUCHAR StringOffset;
779 USHORT ValidCount;
780 USHORT TransitionCount;
781 USHORT ModifiedCount;
782 USHORT PageTableCount;
783 } SYSTEM_MEMORY_INFO, *PSYSTEM_MEMORY_INFO;
784 typedef struct _SYSTEM_MEMORY_INFORMATION
785 {
786 ULONG InfoSize;
787 ULONG StringStart;
788 SYSTEM_MEMORY_INFO Memory[1];
789 } SYSTEM_MEMORY_INFORMATION, *PSYSTEM_MEMORY_INFORMATION;
790
791 /* Class 26 */
792 typedef struct _SYSTEM_GDI_DRIVER_INFORMATION {
793 UNICODE_STRING DriverName;
794 PVOID ImageAddress;
795 PVOID SectionPointer;
796 PVOID EntryPoint;
797 PIMAGE_EXPORT_DIRECTORY ExportSectionPointer;
798 } SYSTEM_GDI_DRIVER_INFORMATION, *PSYSTEM_GDI_DRIVER_INFORMATION;
799
800 /* Class 27 */
801 /* Not an actuall class, simply a PVOID to the ImageAddress */
802
803 /* Class 28 */
804 typedef struct _SYSTEM_QUERY_TIME_ADJUST_INFORMATION
805 {
806 ULONG TimeAdjustment;
807 ULONG TimeIncrement;
808 BOOLEAN Enable;
809 } SYSTEM_QUERY_TIME_ADJUST_INFORMATION, *PSYSTEM_QUERY_TIME_ADJUST_INFORMATION;
810 typedef struct _SYSTEM_SET_TIME_ADJUST_INFORMATION
811 {
812 ULONG TimeAdjustment;
813 BOOLEAN Enable;
814 } SYSTEM_SET_TIME_ADJUST_INFORMATION, *PSYSTEM_SET_TIME_ADJUST_INFORMATION;
815
816 /* Class 29 - Same as 25 */
817
818 /* Class 30 - 31 */
819 /* FIXME */
820
821 /* Class 32 */
822 typedef struct _SYSTEM_CRASH_DUMP_INFORMATION
823 {
824 HANDLE CrashDumpSection;
825 } SYSTEM_CRASH_DUMP_INFORMATION, *PSYSTEM_CRASH_DUMP_INFORMATION;
826
827 /* Class 33 */
828 typedef struct _SYSTEM_EXCEPTION_INFORMATION
829 {
830 ULONG AlignmentFixupCount;
831 ULONG ExceptionDispatchCount;
832 ULONG FloatingEmulationCount;
833 ULONG ByteWordEmulationCount;
834 } SYSTEM_EXCEPTION_INFORMATION, *PSYSTEM_EXCEPTION_INFORMATION;
835
836 /* Class 34 */
837 typedef struct _SYSTEM_CRASH_STATE_INFORMATION
838 {
839 ULONG ValidCrashDump;
840 } SYSTEM_CRASH_STATE_INFORMATION, *PSYSTEM_CRASH_STATE_INFORMATION;
841
842 /* Class 35 */
843 typedef struct _SYSTEM_KERNEL_DEBUGGER_INFORMATION
844 {
845 BOOLEAN KernelDebuggerEnabled;
846 BOOLEAN KernelDebuggerNotPresent;
847 } SYSTEM_KERNEL_DEBUGGER_INFORMATION, *PSYSTEM_KERNEL_DEBUGGER_INFORMATION;
848
849 /* Class 36 */
850 typedef struct _SYSTEM_CONTEXT_SWITCH_INFORMATION {
851 ULONG ContextSwitches;
852 ULONG FindAny;
853 ULONG FindLast;
854 ULONG FindIdeal;
855 ULONG IdleAny;
856 ULONG IdleCurrent;
857 ULONG IdleLast;
858 ULONG IdleIdeal;
859 ULONG PreemptAny;
860 ULONG PreemptCurrent;
861 ULONG PreemptLast;
862 ULONG SwitchToIdle;
863 } SYSTEM_CONTEXT_SWITCH_INFORMATION, *PSYSTEM_CONTEXT_SWITCH_INFORMATION;
864
865 /* Class 37 */
866 typedef struct _SYSTEM_REGISTRY_QUOTA_INFORMATION
867 {
868 ULONG RegistryQuotaAllowed;
869 ULONG RegistryQuotaUsed;
870 ULONG PagedPoolSize;
871 } SYSTEM_REGISTRY_QUOTA_INFORMATION, *PSYSTEM_REGISTRY_QUOTA_INFORMATION;
872
873 /* Class 38 */
874 /* Not a structure, simply send the UNICODE_STRING */
875
876 /* Class 39 */
877 /* Not a structure, simply send a ULONG containing the new separation */
878
879 /* Class 40 */
880 typedef struct _PLUGPLAY_BUS_TYPE
881 {
882 PLUGPLAY_BUS_CLASS BusClass;
883 union
884 {
885 INTERFACE_TYPE SystemBusType;
886 PLUGPLAY_VIRTUAL_BUS_TYPE PlugPlayVirtualBusType;
887 };
888 } PLUGPLAY_BUS_TYPE, *PPLUGPLAY_BUS_TYPE;
889 typedef struct _PLUGPLAY_BUS_INSTANCE
890 {
891 PLUGPLAY_BUS_TYPE BusType;
892 ULONG BusNumber;
893 WCHAR BusName[MAX_BUS_NAME];
894 } PLUGPLAY_BUS_INSTANCE, *PPLUGPLAY_BUS_INSTANCE;
895 typedef struct _SYSTEM_PLUGPLAY_BUS_INFORMATION
896 {
897 ULONG BusCount;
898 PLUGPLAY_BUS_INSTANCE BusInstance[1];
899 } SYSTEM_PLUGPLAY_BUS_INFORMATION, *PSYSTEM_PLUGPLAY_BUS_INFORMATION;
900
901 /* Class 41 */
902 typedef struct _SYSTEM_DOCK_INFORMATION
903 {
904 SYSTEM_DOCK_STATE DockState;
905 INTERFACE_TYPE DeviceBusType;
906 ULONG DeviceBusNumber;
907 ULONG SlotNumber;
908 } SYSTEM_DOCK_INFORMATION, *PSYSTEM_DOCK_INFORMATION;
909
910 /* Class 42 */
911 typedef struct _SYSTEM_POWER_INFORMATION
912 {
913 BOOLEAN SystemSuspendSupported;
914 BOOLEAN SystemHibernateSupported;
915 BOOLEAN ResumeTimerSupportsSuspend;
916 BOOLEAN ResumeTimerSupportsHibernate;
917 BOOLEAN LidSupported;
918 BOOLEAN TurboSettingSupported;
919 BOOLEAN TurboMode;
920 BOOLEAN SystemAcOrDc;
921 BOOLEAN PowerDownDisabled;
922 LARGE_INTEGER SpindownDrives;
923 } SYSTEM_POWER_INFORMATION, *PSYSTEM_POWER_INFORMATION;
924
925 /* Class 43 */
926 typedef struct _SYSTEM_LEGACY_DRIVER_INFORMATION
927 {
928 PNP_VETO_TYPE VetoType;
929 UNCODE_STRING VetoDriver;
930 /* Buffer Follows */
931 } SYSTEM_PROCESSOR_SPEED_INFORMATION, *PSYSTEM_PROCESSOR_SPEED_INFORMATION;
932
933 /* Class 44 */
934 typedef TIME_ZONE_INFORMATION RTL_TIME_ZONE_INFORMATION;
935
936 /* Class 45 */
937 typedef struct _SYSTEM_LOOKASIDE_INFORMATION
938 {
939 USHORT CurrentDepth;
940 USHORT MaximumDepth;
941 ULONG TotalAllocates;
942 ULONG AllocateMisses;
943 ULONG TotalFrees;
944 ULONG FreeMisses;
945 ULONG Type;
946 ULONG Tag;
947 ULONG Size;
948 } SYSTEM_LOOKASIDE_INFORMATION, *PSYSTEM_LOOKASIDE_INFORMATION;
949
950 /* Class 46 */
951 /* Not a structure. Only a HANDLE for the SlipEvent;
952
953 /* Class 47 */
954 /* Not a structure. Only a ULONG for the SessionId;
955
956 /* Class 48 */
957 /* Not a structure. Only a ULONG for the SessionId;
958
959 /* Class 49 */
960 /* FIXME */
961
962 /* Class 50 */
963 /* Not a structure. Only a ULONG_PTR for the SystemRangeStart */
964
965 /* Class 51 */
966 /* FIXME. Based on MM_DRIVER_VERIFIER_DATA */
967
968 /* Class 52 */
969 /* FIXME */
970
971 /* Class 53 */
972 typedef struct _SYSTEM_SESSION_PROCESSES_INFORMATION
973 {
974 ULONG SessionId;
975 ULONG BufferSize;
976 PVOID Buffer; /* same format as in SystemProcessInformation */
977 } SYSTEM_SESSION_PROCESSES_INFORMATION, * PSYSTEM_SESSION_PROCESSES_INFORMATION;
978
979 /* Class 54-81 */
980 /* FIXME */
981
982
983 #endif