A fix in the SYSTEM_HANDLE_INFORMATION structure.
[reactos.git] / reactos / include / ddk / zwtypes.h
1 #ifndef __INCLUDE_DDK_ZWTYPES_H
2 #define __INCLUDE_DDK_ZWTYPES_H
3
4 #define NtCurrentProcess() ( (HANDLE) 0xFFFFFFFF )
5 #define NtCurrentThread() ( (HANDLE) 0xFFFFFFFE )
6
7
8
9 // event access mask
10
11 #define EVENT_READ_ACCESS 1
12 #define EVENT_WRITE_ACCESS 2
13
14
15 // file disposition values
16
17
18 #define FILE_SUPERSEDE 0x0000
19 #define FILE_OPEN 0x0001
20 #define FILE_CREATE 0x0002
21 #define FILE_OPEN_IF 0x0003
22 #define FILE_OVERWRITE 0x0004
23 #define FILE_OVERWRITE_IF 0x0005
24 #define FILE_MAXIMUM_DISPOSITION 0x0005
25
26 //process query / set information class
27
28 #define ProcessBasicInformation 0
29 #define ProcessQuotaLimits 1
30 #define ProcessIoCounters 2
31 #define ProcessVmCounters 3
32 #define ProcessTimes 4
33 #define ProcessBasePriority 5
34 #define ProcessRaisePriority 6
35 #define ProcessDebugPort 7
36 #define ProcessExceptionPort 8
37 #define ProcessAccessToken 9
38 #define ProcessLdtInformation 10
39 #define ProcessLdtSize 11
40 #define ProcessDefaultHardErrorMode 12
41 #define ProcessIoPortHandlers 13
42 #define ProcessPooledUsageAndLimits 14
43 #define ProcessWorkingSetWatch 15
44 #define ProcessUserModeIOPL 16
45 #define ProcessEnableAlignmentFaultFixup 17
46 #define ProcessPriorityClass 18
47 #define ProcessWx86Information 19
48 #define ProcessHandleCount 20
49 #define ProcessAffinityMask 21
50 #define ProcessImageFileName 22
51 #define MaxProcessInfoClass 23
52
53 // thread query / set information class
54 #define ThreadBasicInformation 0
55 #define ThreadTimes 1
56 #define ThreadPriority 2
57 #define ThreadBasePriority 3
58 #define ThreadAffinityMask 4
59 #define ThreadImpersonationToken 5
60 #define ThreadDescriptorTableEntry 6
61 #define ThreadEnableAlignmentFaultFixup 7
62 #define ThreadEventPair 8
63 #define ThreadQuerySetWin32StartAddress 9
64 #define ThreadZeroTlsCell 10
65 #define ThreadPerformanceCount 11
66 #define ThreadAmILastThread 12
67 #define ThreadIdealProcessor 13
68 #define ThreadPriorityBoost 14
69 #define MaxThreadInfoClass 15
70
71 // object handle information
72
73 #define ObjectBasicInformation 0
74 #define ObjectNameInformation 1
75 #define ObjectTypeInformation 2
76 #define ObjectAllInformation 3
77 #define ObjectDataInformation 4
78
79 // semaphore information
80
81 #define SemaphoreBasicInformation 0
82
83 // event information
84
85 #define EventBasicInformation 0
86
87 // system information
88 // {Nt|Zw}{Query|Set}SystemInformation
89
90 typedef
91 enum _SYSTEM_INFORMATION_CLASS
92 {
93 SystemInformationClassMin = 0,
94 SystemBasicInformation = 0, /* Q */
95 SystemProcessorInformation = 1, /* Q */
96 SystemPerformanceInformation = 2, /* Q */
97 SystemTimeInformation = 3, /* Q */
98 SystemPathInformation = 4,
99 SystemProcessInformation = 5, /* Q */
100 SystemServiceDescriptorTableInfo = 6, /* Q */
101 SystemIoConfigInformation = 7, /* Q */
102 SystemProcessorTimeInformation = 8, /* Q */
103 SystemNtGlobalFlagInformation = 9, /* QS */
104 SystemInformation10 = 10,
105 SystemModuleInformation = 11, /* Q */
106 SystemResourceLockInformation = 12, /* Q */
107 SystemInformation13 = 13,
108 SystemInformation14 = 14,
109 SystemInformation15 = 15,
110 SystemHandleInformation = 16, /* Q */
111 SystemObjectInformation = 17, /* Q */
112 SystemPageFileInformation = 18, /* Q */
113 SystemInstructionEmulationInfo = 19, /* Q */
114 SystemInformation20 = 20,
115 SystemCacheInformation = 21, /* QS */
116 SystemPoolTagInformation = 22, /* Q (checked build only) */
117 SystemProcessorScheduleInfo = 23, /* Q */
118 SystemDpcInformation = 24, /* QS */
119 SystemInformation25 = 25,
120 SystemLoadImage = 26, /* S (callable) */
121 SystemUnloadImage = 27, /* S (callable) */
122 SystemTimeAdjustmentInformation = 28, /* QS */
123 SystemInformation29 = 29,
124 SystemInformation30 = 30,
125 SystemInformation31 = 31,
126 SystemCrashDumpSectionInfo = 32, /* Q */
127 SystemProcessorFaultCountInfo = 33, /* Q */
128 SystemCrashDumpStateInfo = 34, /* Q */
129 SystemDebuggerInformation = 35, /* Q */
130 SystemThreadSwitchCountersInfo = 36, /* Q */
131 SystemQuotaInformation = 37, /* QS */
132 SystemLoadDriver = 38, /* S */
133 SystemPrioritySeparationInfo = 39, /* S */
134 SystemInformation40 = 40,
135 SystemInformation41 = 41,
136 SystemInformation42 = 42,
137 SystemInformation43 = 43,
138 SystemTimeZoneInformation = 44, /* QS */
139 SystemLookasideInformation = 45, /* Q */
140 SystemInformationClassMax
141
142 } SYSTEM_INFORMATION_CLASS;
143
144 // SystemBasicInformation (0)
145 typedef
146 struct _SYSTEM_BASIC_INFORMATION
147 {
148 DWORD AlwaysZero;
149 ULONG KeMaximumIncrement;
150 ULONG MmPageSize;
151 ULONG MmNumberOfPhysicalPages;
152 ULONG MmLowestPhysicalPage;
153 ULONG MmHighestPhysicalPage;
154 PVOID MmLowestUserAddress;
155 PVOID MmLowestUserAddress1;
156 PVOID MmHighestUserAddress;
157 DWORD KeActiveProcessors;
158 USHORT KeNumberProcessors;
159
160 } SYSTEM_BASIC_INFORMATION, *PSYSTEM_BASIC_INFORMATION;
161
162 // SystemProcessorInformation (1)
163 typedef
164 struct _SYSTEM_PROCESSOR_INFORMATION
165 {
166 USHORT KeProcessorArchitecture;
167 USHORT KeProcessorLevel;
168 USHORT KeProcessorRevision;
169 USHORT AlwaysZero;
170 DWORD KeFeatureBits;
171
172 } SYSTEM_PROCESSOR_INFORMATION, *PSYSTEM_PROCESSOR_INFORMATION;
173
174 // SystemPerformanceInfo (2)
175 typedef
176 struct _SYSTEM_PERFORMANCE_INFO
177 {
178 LARGE_INTEGER TotalProcessorTime;
179 LARGE_INTEGER IoReadTransferCount;
180 LARGE_INTEGER IoWriteTransferCount;
181 LARGE_INTEGER IoOtherTransferCount;
182 ULONG IoReadOperationCount;
183 ULONG IoWriteOperationCount;
184 ULONG IoOtherOperationCount;
185 ULONG MmAvailablePages;
186 ULONG MmTotalCommitedPages;
187 ULONG MmTotalCommitLimit;
188 ULONG MmPeakLimit;
189 ULONG PageFaults;
190 ULONG WriteCopies;
191 ULONG TransitionFaults;
192 ULONG Unknown1;
193 ULONG DemandZeroFaults;
194 ULONG PagesInput;
195 ULONG PagesRead;
196 ULONG Unknown2;
197 ULONG Unknown3;
198 ULONG PagesOutput;
199 ULONG PageWrites;
200 ULONG Unknown4;
201 ULONG Unknown5;
202 ULONG PoolPagedBytes;
203 ULONG PoolNonPagedBytes;
204 ULONG Unknown6;
205 ULONG Unknown7;
206 ULONG Unknown8;
207 ULONG Unknown9;
208 ULONG MmTotalSystemFreePtes;
209 ULONG MmSystemCodepage;
210 ULONG MmTotalSystemDriverPages;
211 ULONG MmTotalSystemCodePages;
212 ULONG Unknown10;
213 ULONG Unknown11;
214 ULONG Unknown12;
215 ULONG MmSystemCachePage;
216 ULONG MmPagedPoolPage;
217 ULONG MmSystemDriverPage;
218 ULONG CcFastReadNoWait;
219 ULONG CcFastReadWait;
220 ULONG CcFastReadResourceMiss;
221 ULONG CcFastReadNotPossible;
222 ULONG CcFastMdlReadNoWait;
223 ULONG CcFastMdlReadWait;
224 ULONG CcFastMdlReadResourceMiss;
225 ULONG CcFastMdlReadNotPossible;
226 ULONG CcMapDataNoWait;
227 ULONG CcMapDataWait;
228 ULONG CcMapDataNoWaitMiss;
229 ULONG CcMapDataWaitMiss;
230 ULONG CcPinMappedDataCount;
231 ULONG CcPinReadNoWait;
232 ULONG CcPinReadWait;
233 ULONG CcPinReadNoWaitMiss;
234 ULONG CcPinReadWaitMiss;
235 ULONG CcCopyReadNoWait;
236 ULONG CcCopyReadWait;
237 ULONG CcCopyReadNoWaitMiss;
238 ULONG CcCopyReadWaitMiss;
239 ULONG CcMdlReadNoWait;
240 ULONG CcMdlReadWait;
241 ULONG CcMdlReadNoWaitMiss;
242 ULONG CcMdlReadWaitMiss;
243 ULONG CcReadaheadIos;
244 ULONG CcLazyWriteIos;
245 ULONG CcLazyWritePages;
246 ULONG CcDataFlushes;
247 ULONG CcDataPages;
248 ULONG ContextSwitches;
249 ULONG Unknown13;
250 ULONG Unknown14;
251 ULONG SystemCalls;
252
253 } SYSTEM_PERFORMANCE_INFO, *PSYSTEM_PERFORMANCE_INFO;
254
255 // SystemTimeInformation (3)
256 typedef
257 struct _SYSTEM_TIME_INFORMATION
258 {
259 TIME KeBootTime;
260 TIME KeSystemTime;
261 TIME ExpTimeZoneBias;
262 ULONG ExpTimeZoneId;
263 ULONG Unused;
264
265 } SYSTEM_TIME_INFORMATION, *PSYSTEM_TIME_INFORMATION;
266
267 // SystemPathInformation (4)
268 // IT DOES NOT WORK
269 typedef
270 struct _SYSTEM_PATH_INFORMATION
271 {
272 PVOID Dummy;
273
274 } SYSTEM_PATH_INFORMATION, * PSYSTEM_PATH_INFORMATION;
275
276 // SystemProcessThreadInfo (5)
277 typedef
278 struct _SYSTEM_THREAD_INFORMATION
279 {
280 TIME KernelTime;
281 TIME UserTime;
282 TIME CreateTime;
283 ULONG TickCount;
284 ULONG StartEIP;
285 CLIENT_ID ClientId;
286 ULONG DynamicPriority;
287 ULONG BasePriority;
288 ULONG nSwitches;
289 DWORD State;
290 KWAIT_REASON WaitReason;
291
292 } SYSTEM_THREAD_INFORMATION, *PSYSTEM_THREAD_INFORMATION;
293
294 typedef
295 struct SYSTEM_PROCESS_INFORMATION
296 {
297 ULONG RelativeOffset;
298 ULONG ThreadCount;
299 ULONG Unused1 [6];
300 TIME CreateTime;
301 TIME UserTime;
302 TIME KernelTime;
303 UNICODE_STRING Name;
304 ULONG BasePriority;
305 ULONG ProcessId;
306 ULONG ParentProcessId;
307 ULONG HandleCount;
308 ULONG Unused2[2];
309 ULONG PeakVirtualSizeBytes;
310 ULONG TotalVirtualSizeBytes;
311 ULONG PageFaultCount;
312 ULONG PeakWorkingSetSizeBytes;
313 ULONG TotalWorkingSetSizeBytes;
314 ULONG PeakPagedPoolUsagePages;
315 ULONG TotalPagedPoolUsagePages;
316 ULONG PeakNonPagedPoolUsagePages;
317 ULONG TotalNonPagedPoolUsagePages;
318 ULONG TotalPageFileUsageBytes;
319 ULONG PeakPageFileUsageBytes;
320 ULONG TotalPrivateBytes;
321 SYSTEM_THREAD_INFORMATION ThreadSysInfo [1];
322
323 } SYSTEM_PROCESS_INFORMATION, *PSYSTEM_PROCESS_INFORMATION;
324
325 // SystemServiceDescriptorTableInfo (6)
326 typedef
327 struct _SYSTEM_SDT_INFORMATION
328 {
329 ULONG BufferLength;
330 ULONG NumberOfSystemServiceTables;
331 ULONG NumberOfServices [1];
332 ULONG ServiceCounters [1];
333
334 } SYSTEM_SDT_INFORMATION, *PSYSTEM_SDT_INFORMATION;
335
336 // SystemIoConfigInformation (7)
337 typedef
338 struct _SYSTEM_IOCONFIG_INFORMATION
339 {
340 ULONG DiskCount;
341 ULONG FloppyCount;
342 ULONG CdRomCount;
343 ULONG TapeCount;
344 ULONG SerialCount;
345 ULONG ParallelCount;
346
347 } SYSTEM_IOCONFIG_INFORMATION, *PSYSTEM_IOCONFIG_INFORMATION;
348
349 // SystemProcessorTimeInformation (8)
350 typedef
351 struct _SYSTEM_PROCESSORTIME_INFO
352 {
353 TIME TotalProcessorRunTime;
354 TIME TotalProcessorTime;
355 TIME TotalProcessorUserTime;
356 TIME TotalDPCTime;
357 TIME TotalInterruptTime;
358 ULONG TotalInterrupts;
359 ULONG Unused;
360
361 } SYSTEM_PROCESSORTIME_INFO, *PSYSTEM_PROCESSORTIME_INFO;
362
363 // SystemNtGlobalFlagInformation (9)
364 typedef
365 struct _SYSTEM_GLOBAL_FLAG_INFO
366 {
367 ULONG NtGlobalFlag;
368
369 } SYSTEM_GLOBAL_FLAG_INFO, * PSYSTEM_GLOBAL_FLAG_INFO;
370
371 // SystemInformation10 (10)
372 // UNKNOWN
373
374 // SystemModuleInformation (11)
375 typedef
376 struct _SYSTEM_MODULE_ENTRY
377 {
378 ULONG Unused;
379 ULONG Always0;
380 ULONG ModuleBaseAddress;
381 ULONG ModuleSize;
382 ULONG Unknown;
383 ULONG ModuleEntryIndex;
384 USHORT ModuleNameLength; /* Length of module name not including the path, this field contains valid value only for NTOSKRNL module*/
385 USHORT ModulePathLength; /* Length of 'directory path' part of modulename*/
386 CHAR ModuleName [256];
387
388 } SYSTEM_MODULE_ENTRY, * PSYSTEM_MODULE_ENTRY;
389
390 typedef
391 struct _SYSTEM_MODULE_INFORMATION
392 {
393 ULONG Count;
394 SYSTEM_MODULE_ENTRY Module [1];
395
396 } SYSTEM_MODULE_INFORMATION, *PSYSTEM_MODULE_INFORMATION;
397
398 // SystemResourceLockInformation (12)
399 typedef
400 struct _SYSTEM_RESOURCE_LOCK_ENTRY
401 {
402 ULONG ResourceAddress;
403 ULONG Always1;
404 ULONG Unknown;
405 ULONG ActiveCount;
406 ULONG ContentionCount;
407 ULONG Unused[2];
408 ULONG NumberOfSharedWaiters;
409 ULONG NumberOfExclusiveWaiters;
410
411 } SYSTEM_RESOURCE_LOCK_ENTRY, *PSYSTEM_RESOURCE_LOCK_ENTRY;
412
413 typedef
414 struct _SYSTEM_RESOURCE_LOCK_INFO
415 {
416 ULONG Count;
417 SYSTEM_RESOURCE_LOCK_ENTRY Lock [1];
418
419 } SYSTEM_RESOURCE_LOCK_INFO, *PSYSTEM_RESOURCE_LOCK_INFO;
420
421 // SystemInformation13 (13)
422 // UNKNOWN
423
424 // SystemInformation14 (14)
425 // UNKNOWN
426
427 // SystemInformation15 (15)
428 // UNKNOWN
429
430 // SystemHandleInformation (16)
431 #if 0
432 #define OBJECT_TYPE_0 0
433 #define OBJECT_TYPE_1 1
434 #define OBJECT_TYPE_OBJDIRECTORY 2
435 #define OBJECT_TYPE_SYMLINK 3
436 #define OBJECT_TYPE_TOKEN 4
437 #define OBJECT_TYPE_PROCESS 5
438 #define OBJECT_TYPE_THREAD 6
439 #define OBJECT_TYPE_EVENT 7
440 #define OBJECT_TYPE_8 8
441 #define OBJECT_TYPE_MUTANT 9
442 #define OBJECT_TYPE_SEMAPHORE 10
443 #define OBJECT_TYPE_TIMER 11
444 #define OBJECT_TYPE_12 12
445 #define OBJECT_TYPE_WINSTATION 13
446 #define OBJECT_TYPE_DESKTOP 14
447 #define OBJECT_TYPE_SECTION 15
448 #define OBJECT_TYPE_KEY 16
449 #define OBJECT_TYPE_PORT 17
450 #define OBJECT_TYPE_18 18
451 #define OBJECT_TYPE_19 19
452 #define OBJECT_TYPE_20 20
453 #define OBJECT_TYPE_21 21
454 #define OBJECT_TYPE_IOCOMPLETION 22
455 #define OBJECT_TYPE_FILE 23
456 #endif
457 typedef
458 struct _SYSTEM_HANDLE_ENTRY
459 {
460 ULONG OwnerPid;
461 BYTE ObjectType;
462 BYTE HandleFlags;
463 USHORT HandleValue;
464 PVOID ObjectPointer;
465 ULONG AccessMask;
466
467 } SYSTEM_HANDLE_ENTRY, *PSYSTEM_HANDLE_ENTRY;
468
469 typedef
470 struct _SYSTEM_HANDLE_INFORMATION
471 {
472 ULONG Count;
473 SYSTEM_HANDLE_ENTRY Handle [1];
474
475 } SYSTEM_HANDLE_INFORMATION, *PSYSTEM_HANDLE_INFORMATION;
476
477 // SystemObjectInformation (17)
478 // UNKNOWN
479 typedef
480 struct _SYSTEM_OBJECT_INFORMATION
481 {
482 DWORD Unknown;
483 /* FIXME */
484 } SYSTEM_OBJECT_INFORMATION, *PSYSTEM_OBJECT_INFORMATION;
485
486 // SystemPageFileInformation (18)
487 typedef
488 struct _SYSTEM_PAGEFILE_INFORMATION
489 {
490 ULONG RelativeOffset;
491 ULONG CurrentSizePages;
492 ULONG TotalUsedPages;
493 ULONG PeakUsedPages;
494 UNICODE_STRING PagefileFileName;
495
496 } SYSTEM_PAGEFILE_INFORMATION, *PSYSTEM_PAGEFILE_INFORMATION;
497
498 // SystemInstructionEmulationInfo (19)
499 typedef
500 struct _SYSTEM_VDM_INFORMATION
501 {
502 ULONG VdmSegmentNotPresentCount;
503 ULONG VdmINSWCount;
504 ULONG VdmESPREFIXCount;
505 ULONG VdmCSPREFIXCount;
506 ULONG VdmSSPREFIXCount;
507 ULONG VdmDSPREFIXCount;
508 ULONG VdmFSPREFIXCount;
509 ULONG VdmGSPREFIXCount;
510 ULONG VdmOPER32PREFIXCount;
511 ULONG VdmADDR32PREFIXCount;
512 ULONG VdmINSBCount;
513 ULONG VdmINSWV86Count;
514 ULONG VdmOUTSBCount;
515 ULONG VdmOUTSWCount;
516 ULONG VdmPUSHFCount;
517 ULONG VdmPOPFCount;
518 ULONG VdmINTNNCount;
519 ULONG VdmINTOCount;
520 ULONG VdmIRETCount;
521 ULONG VdmINBIMMCount;
522 ULONG VdmINWIMMCount;
523 ULONG VdmOUTBIMMCount;
524 ULONG VdmOUTWIMMCount;
525 ULONG VdmINBCount;
526 ULONG VdmINWCount;
527 ULONG VdmOUTBCount;
528 ULONG VdmOUTWCount;
529 ULONG VdmLOCKPREFIXCount;
530 ULONG VdmREPNEPREFIXCount;
531 ULONG VdmREPPREFIXCount;
532 ULONG VdmHLTCount;
533 ULONG VdmCLICount;
534 ULONG VdmSTICount;
535 ULONG VdmBopCount;
536
537 } SYSTEM_VDM_INFORMATION, *PSYSTEM_VDM_INFORMATION;
538
539 // SystemInformation20 (20)
540 // UNKNOWN
541
542 // SystemCacheInformation (21)
543 typedef
544 struct _SYSTEM_CACHE_INFORMATION
545 {
546 ULONG CurrentSize;
547 ULONG PeakSize;
548 ULONG PageFaultCount;
549 ULONG MinimumWorkingSet;
550 ULONG MaximumWorkingSet;
551 ULONG Unused[4];
552
553 } SYSTEM_CACHE_INFORMATION;
554
555 // SystemPoolTagInformation (22)
556 // found by Klaus P. Gerlicher
557 // (implemented only in checked builds)
558 typedef
559 struct _POOL_TAG_STATS
560 {
561 ULONG AllocationCount;
562 ULONG FreeCount;
563 ULONG SizeBytes;
564
565 } POOL_TAG_STATS;
566
567 typedef
568 struct _SYSTEM_POOL_TAG_ENTRY
569 {
570 ULONG Tag;
571 POOL_TAG_STATS Paged;
572 POOL_TAG_STATS NonPaged;
573
574 } SYSTEM_POOL_TAG_ENTRY, * PSYSTEM_POOL_TAG_ENTRY;
575
576 typedef
577 struct _SYSTEM_POOL_TAG_INFO
578 {
579 ULONG Count;
580 SYSTEM_POOL_TAG_ENTRY PoolEntry [1];
581
582 } SYSTEM_POOL_TAG_INFO, *PSYSTEM_POOL_TAG_INFO;
583
584 // SystemProcessorScheduleInfo (23)
585 typedef
586 struct _SYSTEM_PROCESSOR_SCHEDULE_INFO
587 {
588 ULONG nContextSwitches;
589 ULONG nDPCQueued;
590 ULONG nDPCRate;
591 ULONG TimerResolution;
592 ULONG nDPCBypasses;
593 ULONG nAPCBypasses;
594
595 } SYSTEM_PROCESSOR_SCHEDULE_INFO, *PSYSTEM_PROCESSOR_SCHEDULE_INFO;
596
597 // SystemDpcInformation (24)
598 typedef
599 struct _SYSTEM_DPC_INFORMATION
600 {
601 ULONG Unused;
602 ULONG KiMaximumDpcQueueDepth;
603 ULONG KiMinimumDpcRate;
604 ULONG KiAdjustDpcThreshold;
605 ULONG KiIdealDpcRate;
606
607 } SYSTEM_DPC_INFORMATION, *PSYSTEM_DPC_INFORMATION;
608
609 // SystemInformation25 (25)
610 // UNKNOWN
611
612 // SystemLoadImage (26)
613 typedef
614 struct _SYSTEM_IMAGE_LOAD
615 {
616 UNICODE_STRING ModuleFileName IN;
617 PVOID BaseAddress OUT;
618 PVOID Section OUT;
619 PVOID EntryPoint OUT;
620 PVOID ExportDirectory OUT;
621
622 } SYSTEM_IMAGE_LOAD, *PSYSTEM_IMAGE_LOAD;
623
624 // SystemUnloadImage (27)
625 typedef
626 struct _SYSTEM_IMAGE_UNLOAD
627 {
628 PVOID Section IN; /* see SYSTEM_IMAGE_LOAD.ModuleSection */
629
630 } SYSTEM_IMAGE_UNLOAD, *PSYSTEM_IMAGE_UNLOAD;
631
632
633 // SystemTimeAdjustmentInformation (28)
634 // (what is the right one?)
635 #if 0
636 typedef
637 struct _SYSTEM_TIME_ADJUSTMENT_INFO
638 {
639 TIME TimeAdjustment;
640 BOOL TimeAdjustmentDisabled;
641
642 } SYSTEM_TIME_ADJUSTMENT_INFO, *PSYSTEM_TIME_ADJUSTMENT_INFO;
643 #else
644 typedef
645 struct _SYSTEM_TIME_ADJUSTMENT_INFO
646 {
647 ULONG KeTimeAdjustment;
648 ULONG KeMaximumIncrement;
649 BOOLEAN KeTimeSynchronization;
650
651 } SYSTEM_TIME_ADJUSTMENT_INFO, *PSYSTEM_TIME_ADJUSTMENT_INFO;
652 #endif
653
654 // SystemProcessorFaultCountInfo (33)
655 typedef
656 struct _SYSTEM_PROCESSOR_FAULT_INFO
657 {
658 ULONG nAlignmentFixup;
659 ULONG nExceptionDispatches;
660 ULONG nFloatingEmulation;
661 ULONG Unknown;
662
663 } SYSTEM_PROCESSOR_FAULT_INFO, *PSYSTEM_PROCESSOR_FAULT_INFO;
664
665 // SystemCrashDumpStateInfo (34)
666 //
667
668 // SystemDebuggerInformation (35)
669 typedef
670 struct _SYSTEM_DEBUGGER_INFO
671 {
672 BOOLEAN KdDebuggerEnabled;
673 BOOLEAN KdDebuggerPresent;
674
675 } SYSTEM_DEBUGGER_INFO, *PSYSTEM_DEBUGGER_INFO;
676
677 // SystemInformation36 (36)
678 // UNKNOWN
679
680 // SystemQuotaInformation (37)
681 typedef
682 struct _SYSTEM_QUOTA_INFORMATION
683 {
684 ULONG CmpGlobalQuota;
685 ULONG CmpGlobalQuotaUsed;
686 ULONG MmSizeofPagedPoolInBytes;
687
688 } SYSTEM_QUOTA_INFORMATION, *PSYSTEM_QUOTA_INFORMATION;
689
690 // SystemLoadDriver (38)
691 typedef
692 struct _SYSTEM_DRIVER_LOAD
693 {
694 UNICODE_STRING DriverRegistryEntry;
695
696 } SYSTEM_DRIVER_LOAD, *PSYSTEM_DRIVER_LOAD;
697
698
699
700 // memory information
701
702 #define MemoryBasicInformation 0
703
704 // shutdown action
705
706 typedef enum SHUTDOWN_ACTION_TAG {
707 ShutdownNoReboot,
708 ShutdownReboot,
709 ShutdownPowerOff
710 } SHUTDOWN_ACTION;
711
712 // wait type
713
714 #define WaitAll 0
715 #define WaitAny 1
716
717 // number of wait objects
718
719 #define THREAD_WAIT_OBJECTS 3
720 //#define MAXIMUM_WAIT_OBJECTS 64
721
722 // key restore flags
723
724 #define REG_WHOLE_HIVE_VOLATILE 1
725 #define REG_REFRESH_HIVE 2
726
727 // object type access rights
728
729 #define OBJECT_TYPE_CREATE 0x0001
730 #define OBJECT_TYPE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0x1)
731
732 // directory access rights
733
734 #define DIRECTORY_QUERY 0x0001
735 #define DIRECTORY_TRAVERSE 0x0002
736 #define DIRECTORY_CREATE_OBJECT 0x0004
737 #define DIRECTORY_CREATE_SUBDIRECTORY 0x0008
738
739 #define DIRECTORY_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0xF)
740
741 // symbolic link access rights
742
743 #define SYMBOLIC_LINK_QUERY 0x0001
744 #define SYMBOLIC_LINK_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0x1)
745
746 typedef struct _PROCESS_WS_WATCH_INFORMATION
747 {
748 PVOID FaultingPc;
749 PVOID FaultingVa;
750 } PROCESS_WS_WATCH_INFORMATION, *PPROCESS_WS_WATCH_INFORMATION;
751
752 typedef struct _PROCESS_BASIC_INFORMATION
753 {
754 NTSTATUS ExitStatus;
755 PPEB PebBaseAddress;
756 KAFFINITY AffinityMask;
757 KPRIORITY BasePriority;
758 ULONG UniqueProcessId;
759 ULONG InheritedFromUniqueProcessId;
760 } PROCESS_BASIC_INFORMATION, *PPROCESS_BASIC_INFORMATION;
761
762 typedef struct _QUOTA_LIMITS
763 {
764 ULONG PagedPoolLimit;
765 ULONG NonPagedPoolLimit;
766 ULONG MinimumWorkingSetSize;
767 ULONG MaximumWorkingSetSize;
768 ULONG PagefileLimit;
769 TIME TimeLimit;
770 } QUOTA_LIMITS, *PQUOTA_LIMITS;
771
772 typedef struct _IO_COUNTERS
773 {
774 ULONG ReadOperationCount;
775 ULONG WriteOperationCount;
776 ULONG OtherOperationCount;
777 LARGE_INTEGER ReadTransferCount;
778 LARGE_INTEGER WriteTransferCount;
779 LARGE_INTEGER OtherTransferCount;
780 } IO_COUNTERS, *PIO_COUNTERS;
781
782
783 typedef struct _VM_COUNTERS_
784 {
785 ULONG PeakVirtualSize;
786 ULONG VirtualSize;
787 ULONG PageFaultCount;
788 ULONG PeakWorkingSetSize;
789 ULONG WorkingSetSize;
790 ULONG QuotaPeakPagedPoolUsage;
791 ULONG QuotaPagedPoolUsage;
792 ULONG QuotaPeakNonPagedPoolUsage;
793 ULONG QuotaNonPagedPoolUsage;
794 ULONG PagefileUsage;
795 ULONG PeakPagefileUsage;
796 } VM_COUNTERS, *PVM_COUNTERS;
797
798
799 typedef struct _POOLED_USAGE_AND_LIMITS_
800 {
801 ULONG PeakPagedPoolUsage;
802 ULONG PagedPoolUsage;
803 ULONG PagedPoolLimit;
804 ULONG PeakNonPagedPoolUsage;
805 ULONG NonPagedPoolUsage;
806 ULONG NonPagedPoolLimit;
807 ULONG PeakPagefileUsage;
808 ULONG PagefileUsage;
809 ULONG PagefileLimit;
810 } POOLED_USAGE_AND_LIMITS, *PPOOLED_USAGE_AND_LIMITS;
811
812
813 typedef struct _PROCESS_ACCESS_TOKEN
814 {
815 HANDLE Token;
816 HANDLE Thread;
817 } PROCESS_ACCESS_TOKEN, *PPROCESS_ACCESS_TOKEN;
818
819 typedef struct _KERNEL_USER_TIMES
820 {
821 TIME CreateTime;
822 TIME ExitTime;
823 TIME KernelTime;
824 TIME UserTime;
825 } KERNEL_USER_TIMES;
826 typedef KERNEL_USER_TIMES *PKERNEL_USER_TIMES;
827
828 // thread information
829
830 // incompatible with MS NT
831
832 typedef struct _THREAD_BASIC_INFORMATION
833 {
834 NTSTATUS ExitStatus;
835 PVOID TebBaseAddress;
836 KAFFINITY AffinityMask;
837 KPRIORITY BasePriority;
838 ULONG UniqueThreadId;
839 } THREAD_BASIC_INFORMATION, *PTHREAD_BASIC_INFORMATION;
840
841 // object information
842
843 typedef struct _OBJECT_NAME_INFORMATION
844 {
845 UNICODE_STRING Name;
846 } OBJECT_NAME_INFORMATION, *POBJECT_NAME_INFORMATION;
847
848
849
850 typedef struct _OBJECT_DATA_INFORMATION
851 {
852 BOOLEAN bInheritHandle;
853 BOOLEAN bProtectFromClose;
854 } OBJECT_DATA_INFORMATION, *POBJECT_DATA_INFORMATION;
855
856
857 typedef struct _OBJECT_TYPE_INFORMATION
858 {
859 UNICODE_STRING Name;
860 UNICODE_STRING Type;
861 ULONG TotalHandles;
862 ULONG ReferenceCount;
863 } OBJECT_TYPE_INFORMATION, *POBJECT_TYPE_INFORMATION;
864
865 // file information
866
867 typedef struct _FILE_BASIC_INFORMATION
868 {
869 TIME CreationTime;
870 TIME LastAccessTime;
871 TIME LastWriteTime;
872 TIME ChangeTime;
873 ULONG FileAttributes;
874 } FILE_BASIC_INFORMATION, *PFILE_BASIC_INFORMATION;
875
876 typedef struct _FILE_STANDARD_INFORMATION
877 {
878 LARGE_INTEGER AllocationSize;
879 LARGE_INTEGER EndOfFile;
880 ULONG NumberOfLinks;
881 BOOLEAN DeletePending;
882 BOOLEAN Directory;
883 } FILE_STANDARD_INFORMATION, *PFILE_STANDARD_INFORMATION;
884
885 typedef struct _FILE_POSITION_INFORMATION
886 {
887 LARGE_INTEGER CurrentByteOffset;
888 } FILE_POSITION_INFORMATION, *PFILE_POSITION_INFORMATION;
889
890 typedef struct _FILE_ALIGNMENT_INFORMATION
891 {
892 ULONG AlignmentRequirement;
893 } FILE_ALIGNMENT_INFORMATION, *PFILE_ALIGNMENT_INFORMATION;
894
895 typedef struct _FILE_DISPOSITION_INFORMATION
896 {
897 BOOLEAN DeleteFile;
898 } FILE_DISPOSITION_INFORMATION, *PFILE_DISPOSITION_INFORMATION;
899
900 typedef struct _FILE_END_OF_FILE_INFORMATION
901 {
902 LARGE_INTEGER EndOfFile;
903 } FILE_END_OF_FILE_INFORMATION, *PFILE_END_OF_FILE_INFORMATION;
904
905 typedef struct _FILE_NETWORK_OPEN_INFORMATION
906 {
907 TIME CreationTime;
908 TIME LastAccessTime;
909 TIME LastWriteTime;
910 TIME ChangeTime;
911 LARGE_INTEGER AllocationSize;
912 LARGE_INTEGER EndOfFile;
913 ULONG FileAttributes;
914 } FILE_NETWORK_OPEN_INFORMATION, *PFILE_NETWORK_OPEN_INFORMATION;
915
916 typedef struct _FILE_FULL_EA_INFORMATION
917 {
918 ULONG NextEntryOffset;
919 UCHAR Flags;
920 UCHAR EaNameLength;
921 USHORT EaValueLength;
922 CHAR EaName[0];
923 } FILE_FULL_EA_INFORMATION, *PFILE_FULL_EA_INFORMATION;
924
925
926 typedef struct _FILE_EA_INFORMATION {
927 ULONG EaSize;
928 } FILE_EA_INFORMATION, *PFILE_EA_INFORMATION;
929
930
931 typedef struct _FILE_GET_EA_INFORMATION {
932 ULONG NextEntryOffset;
933 UCHAR EaNameLength;
934 CHAR EaName[0];
935 } FILE_GET_EA_INFORMATION, *PFILE_GET_EA_INFORMATION;
936
937 typedef struct _FILE_STREAM_INFORMATION {
938 ULONG NextEntryOffset;
939 ULONG StreamNameLength;
940 LARGE_INTEGER StreamSize;
941 LARGE_INTEGER StreamAllocationSize;
942 WCHAR StreamName[0];
943 } FILE_STREAM_INFORMATION, *PFILE_STREAM_INFORMATION;
944
945 typedef struct _FILE_ALLOCATION_INFORMATION {
946 LARGE_INTEGER AllocationSize;
947 } FILE_ALLOCATION_INFORMATION, *PFILE_ALLOCATION_INFORMATION;
948
949 typedef struct _FILE_NAME_INFORMATION {
950 ULONG FileNameLength;
951 WCHAR FileName[0];
952 } FILE_NAME_INFORMATION, *PFILE_NAME_INFORMATION;
953
954 typedef struct _FILE_NAMES_INFORMATION
955 {
956 ULONG NextEntryOffset;
957 ULONG FileIndex;
958 ULONG FileNameLength;
959 WCHAR FileName[0];
960 } FILE_NAMES_INFORMATION, *PFILE_NAMES_INFORMATION;
961
962
963 typedef struct _FILE_RENAME_INFORMATION {
964 BOOLEAN Replace;
965 HANDLE RootDir;
966 ULONG FileNameLength;
967 WCHAR FileName[0];
968 } FILE_RENAME_INFORMATION, *PFILE_RENAME_INFORMATION;
969
970
971 typedef struct _FILE_INTERNAL_INFORMATION {
972 LARGE_INTEGER IndexNumber;
973 } FILE_INTERNAL_INFORMATION, *PFILE_INTERNAL_INFORMATION;
974
975 typedef struct _FILE_ACCESS_INFORMATION {
976 ACCESS_MASK AccessFlags;
977 } FILE_ACCESS_INFORMATION, *PFILE_ACCESS_INFORMATION;
978
979
980 typedef struct _FILE_MODE_INFORMATION {
981 ULONG Mode;
982 } FILE_MODE_INFORMATION, *PFILE_MODE_INFORMATION;
983
984 typedef struct _FILE_COMPRESSION_INFORMATION {
985 LARGE_INTEGER CompressedFileSize;
986 USHORT CompressionFormat;
987 UCHAR CompressionUnitShift;
988 UCHAR ChunkShift;
989 UCHAR ClusterShift;
990 UCHAR Reserved[3];
991 } FILE_COMPRESSION_INFORMATION, *PFILE_COMPRESSION_INFORMATION;
992
993 typedef struct _FILE_ALL_INFORMATION {
994 FILE_BASIC_INFORMATION BasicInformation;
995 FILE_STANDARD_INFORMATION StandardInformation;
996 FILE_INTERNAL_INFORMATION InternalInformation;
997 FILE_EA_INFORMATION EaInformation;
998 FILE_ACCESS_INFORMATION AccessInformation;
999 FILE_POSITION_INFORMATION PositionInformation;
1000 FILE_MODE_INFORMATION ModeInformation;
1001 FILE_ALIGNMENT_INFORMATION AlignmentInformation;
1002 FILE_NAME_INFORMATION NameInformation;
1003 } FILE_ALL_INFORMATION, *PFILE_ALL_INFORMATION;
1004
1005 // file system information structures
1006
1007 typedef struct _FILE_FS_DEVICE_INFORMATION {
1008 DEVICE_TYPE DeviceType;
1009 ULONG Characteristics;
1010 } FILE_FS_DEVICE_INFORMATION, *PFILE_FS_DEVICE_INFORMATION;
1011
1012
1013 typedef struct _FILE_FS_VOLUME_INFORMATION {
1014 TIME VolumeCreationTime;
1015 ULONG VolumeSerialNumber;
1016 ULONG VolumeLabelLength;
1017 BOOLEAN SupportsObjects;
1018 WCHAR VolumeLabel[0];
1019 } FILE_FS_VOLUME_INFORMATION, *PFILE_FS_VOLUME_INFORMATION;
1020
1021 typedef struct _FILE_FS_SIZE_INFORMATION {
1022 LARGE_INTEGER TotalAllocationUnits;
1023 LARGE_INTEGER AvailableAllocationUnits;
1024 ULONG SectorsPerAllocationUnit;
1025 ULONG BytesPerSector;
1026 } FILE_FS_SIZE_INFORMATION, *PFILE_FS_SIZE_INFORMATION;
1027
1028 typedef struct _FILE_FS_ATTRIBUTE_INFORMATION {
1029 ULONG FileSystemAttributes;
1030 LONG MaximumComponentNameLength;
1031 ULONG FileSystemNameLength;
1032 WCHAR FileSystemName[0];
1033 } FILE_FS_ATTRIBUTE_INFORMATION, *PFILE_FS_ATTRIBUTE_INFORMATION;
1034
1035 /*
1036 FileSystemAttributes is one of the following values:
1037
1038 FILE_CASE_SENSITIVE_SEARCH 0x00000001
1039 FILE_CASE_PRESERVED_NAMES 0x00000002
1040 FILE_UNICODE_ON_DISK 0x00000004
1041 FILE_PERSISTENT_ACLS 0x00000008
1042 FILE_FILE_COMPRESSION 0x00000010
1043 FILE_VOLUME_QUOTAS 0x00000020
1044 FILE_VOLUME_IS_COMPRESSED 0x00008000
1045 */
1046 typedef struct _FILE_FS_LABEL_INFORMATION {
1047 ULONG VolumeLabelLength;
1048 WCHAR VolumeLabel[0];
1049 } FILE_FS_LABEL_INFORMATION, *PFILE_FS_LABEL_INFORMATION;
1050
1051 // read file scatter / write file scatter
1052 //FIXME I am a win32 struct aswell
1053
1054 typedef union _FILE_SEGMENT_ELEMENT {
1055 PVOID Buffer;
1056 ULONG Alignment;
1057 }FILE_SEGMENT_ELEMENT, *PFILE_SEGMENT_ELEMENT;
1058
1059 // directory information
1060
1061 typedef struct _OBJDIR_INFORMATION {
1062 UNICODE_STRING ObjectName;
1063 UNICODE_STRING ObjectTypeName; // Directory, Device ...
1064 UCHAR Data[0];
1065 } OBJDIR_INFORMATION, *POBJDIR_INFORMATION;
1066
1067
1068 typedef struct _FILE_DIRECTORY_INFORMATION {
1069 ULONG NextEntryOffset;
1070 ULONG FileIndex;
1071 TIME CreationTime;
1072 TIME LastAccessTime;
1073 TIME LastWriteTime;
1074 TIME ChangeTime;
1075 LARGE_INTEGER EndOfFile;
1076 LARGE_INTEGER AllocationSize;
1077 ULONG FileAttributes;
1078 ULONG FileNameLength;
1079 WCHAR FileName[0];
1080 } FILE_DIRECTORY_INFORMATION, *PFILE_DIRECTORY_INFORMATION;
1081
1082 typedef struct _FILE_FULL_DIRECTORY_INFORMATION {
1083 ULONG NextEntryOffset;
1084 ULONG FileIndex;
1085 TIME CreationTime;
1086 TIME LastAccessTime;
1087 TIME LastWriteTime;
1088 TIME ChangeTime;
1089 LARGE_INTEGER EndOfFile;
1090 LARGE_INTEGER AllocationSize;
1091 ULONG FileAttributes;
1092 ULONG FileNameLength;
1093 ULONG EaSize;
1094 WCHAR FileName[0]; // variable size
1095 } FILE_FULL_DIRECTORY_INFORMATION, *PFILE_FULL_DIRECTORY_INFORMATION,
1096 FILE_FULL_DIR_INFORMATION, *PFILE_FULL_DIR_INFORMATION;
1097
1098
1099 typedef struct _FILE_BOTH_DIRECTORY_INFORMATION {
1100 ULONG NextEntryOffset;
1101 ULONG FileIndex;
1102 TIME CreationTime;
1103 TIME LastAccessTime;
1104 TIME LastWriteTime;
1105 TIME ChangeTime;
1106 LARGE_INTEGER EndOfFile;
1107 LARGE_INTEGER AllocationSize;
1108 ULONG FileAttributes;
1109 ULONG FileNameLength;
1110 ULONG EaSize;
1111 CHAR ShortNameLength;
1112 WCHAR ShortName[12]; // 8.3 name
1113 WCHAR FileName[0];
1114 } FILE_BOTH_DIRECTORY_INFORMATION, *PFILE_BOTH_DIRECTORY_INFORMATION,
1115 FILE_BOTH_DIR_INFORMATION, *PFILE_BOTH_DIR_INFORMATION;
1116
1117
1118 /*
1119 NotifyFilter / CompletionFilter:
1120
1121 FILE_NOTIFY_CHANGE_FILE_NAME 0x00000001
1122 FILE_NOTIFY_CHANGE_DIR_NAME 0x00000002
1123 FILE_NOTIFY_CHANGE_NAME 0x00000003
1124 FILE_NOTIFY_CHANGE_ATTRIBUTES 0x00000004
1125 FILE_NOTIFY_CHANGE_SIZE 0x00000008
1126 FILE_NOTIFY_CHANGE_LAST_WRITE 0x00000010
1127 FILE_NOTIFY_CHANGE_LAST_ACCESS 0x00000020
1128 FILE_NOTIFY_CHANGE_CREATION 0x00000040
1129 FILE_NOTIFY_CHANGE_EA 0x00000080
1130 FILE_NOTIFY_CHANGE_SECURITY 0x00000100
1131 FILE_NOTIFY_CHANGE_STREAM_NAME 0x00000200
1132 FILE_NOTIFY_CHANGE_STREAM_SIZE 0x00000400
1133 FILE_NOTIFY_CHANGE_STREAM_WRITE 0x00000800
1134 */
1135
1136 typedef struct _FILE_NOTIFY_INFORMATION {
1137 ULONG Action;
1138 ULONG FileNameLength;
1139 WCHAR FileName[0];
1140 } FILE_NOTIFY_INFORMATION;
1141
1142
1143 /*
1144 Action is one of the following values:
1145
1146 FILE_ACTION_ADDED 0x00000001
1147 FILE_ACTION_REMOVED 0x00000002
1148 FILE_ACTION_MODIFIED 0x00000003
1149 FILE_ACTION_RENAMED_OLD_NAME 0x00000004
1150 FILE_ACTION_RENAMED_NEW_NAME 0x00000005
1151 FILE_ACTION_ADDED_STREAM 0x00000006
1152 FILE_ACTION_REMOVED_STREAM 0x00000007
1153 FILE_ACTION_MODIFIED_STREAM 0x00000008
1154
1155 */
1156
1157
1158 //FIXME: I am a win32 object
1159 typedef
1160 VOID
1161 (*PTIMERAPCROUTINE)(
1162 LPVOID lpArgToCompletionRoutine,
1163 DWORD dwTimerLowValue,
1164 DWORD dwTimerHighValue
1165 );
1166
1167
1168 // File System Control commands ( related to defragging )
1169
1170 #define FSCTL_READ_MFT_RECORD 0x90068 // NTFS only
1171 #define FSCTL_GET_VOLUME_BITMAP 0x9006F
1172 #define FSCTL_GET_RETRIEVAL_POINTERS 0x90073
1173 #define FSCTL_MOVE_FILE 0x90074
1174
1175 typedef struct _MAPPING_PAIR
1176 {
1177 ULONGLONG Vcn;
1178 ULONGLONG Lcn;
1179 } MAPPING_PAIR, *PMAPPING_PAIR;
1180
1181 typedef struct _GET_RETRIEVAL_DESCRIPTOR
1182 {
1183 ULONG NumberOfPairs;
1184 ULONGLONG StartVcn;
1185 MAPPING_PAIR Pair[0]; // variable size
1186 } GET_RETRIEVAL_DESCRIPTOR, *PGET_RETRIEVAL_DESCRIPTOR;
1187
1188 typedef struct _BITMAP_DESCRIPTOR
1189 {
1190 ULONGLONG StartLcn;
1191 ULONGLONG ClustersToEndOfVol;
1192 BYTE Map[0]; // variable size
1193 } BITMAP_DESCRIPTOR, *PBITMAP_DESCRIPTOR;
1194
1195 typedef struct _MOVEFILE_DESCRIPTOR
1196 {
1197 HANDLE FileHandle;
1198 ULONG Reserved;
1199 LARGE_INTEGER StartVcn;
1200 LARGE_INTEGER TargetLcn;
1201 ULONG NumVcns;
1202 ULONG Reserved1;
1203 } MOVEFILE_DESCRIPTOR, *PMOVEFILE_DESCRIPTOR;
1204
1205
1206 // semaphore information
1207
1208 typedef struct _SEMAPHORE_BASIC_INFORMATION
1209 {
1210 ULONG CurrentCount;
1211 ULONG MaximumCount;
1212 } SEMAPHORE_BASIC_INFORMATION, *PSEMAPHORE_BASIC_INFORMATION;
1213
1214 // event information
1215
1216 typedef struct _EVENT_BASIC_INFORMATION
1217 {
1218 BOOL AutomaticReset;
1219 BOOL Signaled;
1220 } EVENT_BASIC_INFORMATION, *PEVENT_INFORMATION;
1221
1222 //typedef enum _TIMER_TYPE
1223 //{
1224 // NotificationTimer,
1225 // SynchronizationTimer
1226 //} TIMER_TYPE;
1227
1228 typedef
1229 struct _LPC_PORT_BASIC_INFORMATION
1230 {
1231 DWORD Unknown0;
1232 DWORD Unknown1;
1233 DWORD Unknown2;
1234 DWORD Unknown3;
1235 DWORD Unknown4;
1236 DWORD Unknown5;
1237 DWORD Unknown6;
1238 DWORD Unknown7;
1239 DWORD Unknown8;
1240 DWORD Unknown9;
1241 DWORD Unknown10;
1242 DWORD Unknown11;
1243 DWORD Unknown12;
1244 DWORD Unknown13;
1245
1246 } LPC_PORT_BASIC_INFORMATION, * PLPC_PORT_BASIC_INFORMATION;
1247
1248 #endif