1 #ifndef __INCLUDE_DDK_ZWTYPES_H
2 #define __INCLUDE_DDK_ZWTYPES_H
4 #define MAX_MESSAGE_DATA (0x130)
6 #define UNUSED_MSG_TYPE (0x0)
7 #define LPC_REQUEST (0x1)
8 #define LPC_REPLY (0x2)
9 #define LPC_DATAGRAM (0x3)
10 #define LPC_LOST_REPLY (0x4)
11 #define LPC_PORT_CLOSED (0x5)
12 #define LPC_CLIENT_DIED (0x6)
13 #define LPC_EXCEPTION (0x7)
14 #define LPC_DEBUG_EVENT (0x8)
15 #define LPC_ERROR_EVENT (0x9)
16 #define LPC_CONNECTION_REQUEST (0xa)
17 #define LPC_CONNECTION_REFUSED (0xb)
19 typedef struct _LPCSECTIONINFO
25 DWORD ClientBaseAddress
;
26 DWORD ServerBaseAddress
;
27 } LPCSECTION
, *PLPCSECTIONINFO
;
29 typedef struct _LPCSECTIONMAPINFO
33 DWORD ServerBaseAddress
;
34 } LPCSECTIONMAPINFO
, *PLPCSECTIONMAPINFO
;
36 typedef struct _LPCMESSAGE
38 WORD ActualMessageLength
;
39 WORD TotalMessageLength
;
41 DWORD ClientProcessId
;
44 DWORD SharedSectionSize
;
45 BYTE MessageData
[MAX_MESSAGE_DATA
];
46 } LPCMESSAGE
, *PLPCMESSAGE
;
49 #define NtCurrentProcess() ( (HANDLE) 0xFFFFFFFF )
50 #define NtCurrentThread() ( (HANDLE) 0xFFFFFFFE )
56 #define EVENT_READ_ACCESS 1
57 #define EVENT_WRITE_ACCESS 2
60 // file disposition values
63 #define FILE_SUPERSEDE 0x0000
64 #define FILE_OPEN 0x0001
65 #define FILE_CREATE 0x0002
66 #define FILE_OPEN_IF 0x0003
67 #define FILE_OVERWRITE 0x0004
68 #define FILE_OVERWRITE_IF 0x0005
69 #define FILE_MAXIMUM_DISPOSITION 0x0005
71 //process query / set information class
73 #define ProcessBasicInformation 0
74 #define ProcessQuotaLimits 1
75 #define ProcessIoCounters 2
76 #define ProcessVmCounters 3
77 #define ProcessTimes 4
78 #define ProcessBasePriority 5
79 #define ProcessRaisePriority 6
80 #define ProcessDebugPort 7
81 #define ProcessExceptionPort 8
82 #define ProcessAccessToken 9
83 #define ProcessLdtInformation 10
84 #define ProcessLdtSize 11
85 #define ProcessDefaultHardErrorMode 12
86 #define ProcessIoPortHandlers 13
87 #define ProcessPooledUsageAndLimits 14
88 #define ProcessWorkingSetWatch 15
89 #define ProcessUserModeIOPL 16
90 #define ProcessEnableAlignmentFaultFixup 17
91 #define ProcessPriorityClass 18
92 #define ProcessWx86Information 19
93 #define ProcessHandleCount 20
94 #define ProcessAffinityMask 21
95 #define MaxProcessInfoClass 22
97 // thread query / set information class
98 #define ThreadBasicInformation 0
100 #define ThreadPriority 2
101 #define ThreadBasePriority 3
102 #define ThreadAffinityMask 4
103 #define ThreadImpersonationToken 5
104 #define ThreadDescriptorTableEntry 6
105 #define ThreadEnableAlignmentFaultFixup 7
106 #define ThreadEventPair 8
107 #define ThreadQuerySetWin32StartAddress 9
108 #define ThreadZeroTlsCell 10
109 #define ThreadPerformanceCount 11
110 #define ThreadAmILastThread 12
111 #define ThreadIdealProcessor 13
112 #define ThreadPriorityBoost 14
113 #define MaxThreadInfoClass 15
115 // object handle information
117 #define ObjectBasicInformation 0
118 #define ObjectNameInformation 1
119 #define ObjectTypeInformation 2
120 #define ObjectAllInformation 3
121 #define ObjectDataInformation 4
123 // semaphore information
125 #define SemaphoreBasicInformation 0
129 #define EventBasicInformation 0
131 // system information
133 #define SystemInformation0 0
134 #define SystemInformation1 1
135 #define SystemPerformanceInformation 2
136 #define SystemTimeInformation 3
137 #define SystemProcessInformation 5
138 #define SystemGlobalFlagInformation 9
139 #define SystemDriverInformation 11
140 #define SystemPageFileInformation 18
141 #define SystemCacheInformation 21
142 #define SystemPoolTagStatsInformation 22
143 #define SystemTimeAdjustmentInformation 28
144 #define SystemTimeZoneInformation 44
146 // memory information
148 #define MemoryBasicInformation 0
152 typedef enum SHUTDOWN_ACTION_TAG
{
163 // number of wait objects
165 #define THREAD_WAIT_OBJECTS 3
166 //#define MAXIMUM_WAIT_OBJECTS 64
170 #define REG_WHOLE_HIVE_VOLATILE 1
171 #define REG_REFRESH_HIVE 2
173 // object type access rights
175 #define OBJECT_TYPE_CREATE 0x0001
176 #define OBJECT_TYPE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0x1)
178 // directory access rights
180 #define DIRECTORY_QUERY 0x0001
181 #define DIRECTORY_TRAVERSE 0x0002
182 #define DIRECTORY_CREATE_OBJECT 0x0004
183 #define DIRECTORY_CREATE_SUBDIRECTORY 0x0008
185 #define DIRECTORY_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0xF)
187 // symbolic link access rights
189 #define SYMBOLIC_LINK_QUERY 0x0001
190 #define SYMBOLIC_LINK_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0x1)
192 typedef struct _PROCESS_WS_WATCH_INFORMATION
196 } PROCESS_WS_WATCH_INFORMATION
, *PPROCESS_WS_WATCH_INFORMATION
;
198 typedef struct _PROCESS_BASIC_INFORMATION
202 KAFFINITY AffinityMask
;
203 KPRIORITY BasePriority
;
204 ULONG UniqueProcessId
;
205 ULONG InheritedFromUniqueProcessId
;
206 } PROCESS_BASIC_INFORMATION
, *PPROCESS_BASIC_INFORMATION
;
208 typedef struct _QUOTA_LIMITS
210 ULONG PagedPoolLimit
;
211 ULONG NonPagedPoolLimit
;
212 ULONG MinimumWorkingSetSize
;
213 ULONG MaximumWorkingSetSize
;
216 } QUOTA_LIMITS
, *PQUOTA_LIMITS
;
218 typedef struct _IO_COUNTERS
220 ULONG ReadOperationCount
;
221 ULONG WriteOperationCount
;
222 ULONG OtherOperationCount
;
223 LARGE_INTEGER ReadTransferCount
;
224 LARGE_INTEGER WriteTransferCount
;
225 LARGE_INTEGER OtherTransferCount
;
226 } IO_COUNTERS
, *PIO_COUNTERS
;
229 typedef struct _VM_COUNTERS_
231 ULONG PeakVirtualSize
;
233 ULONG PageFaultCount
;
234 ULONG PeakWorkingSetSize
;
235 ULONG WorkingSetSize
;
236 ULONG QuotaPeakPagedPoolUsage
;
237 ULONG QuotaPagedPoolUsage
;
238 ULONG QuotaPeakNonPagedPoolUsage
;
239 ULONG QuotaNonPagedPoolUsage
;
241 ULONG PeakPagefileUsage
;
242 } VM_COUNTERS
, *PVM_COUNTERS
;
245 typedef struct _POOLED_USAGE_AND_LIMITS_
247 ULONG PeakPagedPoolUsage
;
248 ULONG PagedPoolUsage
;
249 ULONG PagedPoolLimit
;
250 ULONG PeakNonPagedPoolUsage
;
251 ULONG NonPagedPoolUsage
;
252 ULONG NonPagedPoolLimit
;
253 ULONG PeakPagefileUsage
;
256 } POOLED_USAGE_AND_LIMITS
, *PPOOLED_USAGE_AND_LIMITS
;
259 typedef struct _PROCESS_ACCESS_TOKEN
263 } PROCESS_ACCESS_TOKEN
, *PPROCESS_ACCESS_TOKEN
;
265 typedef struct _KERNEL_USER_TIMES
272 typedef KERNEL_USER_TIMES
*PKERNEL_USER_TIMES
;
274 // thread information
276 // incompatible with MS NT
278 typedef struct _THREAD_BASIC_INFORMATION
281 PVOID TebBaseAddress
;
282 KAFFINITY AffinityMask
;
283 KPRIORITY BasePriority
;
284 ULONG UniqueThreadId
;
285 } THREAD_BASIC_INFORMATION
, *PTHREAD_BASIC_INFORMATION
;
287 // object information
289 typedef struct _OBJECT_NAME_INFORMATION
292 } OBJECT_NAME_INFORMATION
, *POBJECT_NAME_INFORMATION
;
296 typedef struct _OBJECT_DATA_INFORMATION
298 BOOLEAN bInheritHandle
;
299 BOOLEAN bProtectFromClose
;
300 } OBJECT_DATA_INFORMATION
, *POBJECT_DATA_INFORMATION
;
303 typedef struct _OBJECT_TYPE_INFORMATION
308 ULONG ReferenceCount
;
309 } OBJECT_TYPE_INFORMATION
, *POBJECT_TYPE_INFORMATION
;
311 // system information
315 typedef struct _SYSTEM_THREAD_INFORMATION
317 FILETIME ftCreationTime
;
319 PVOID dwStartAddress
;
322 DWORD dwCurrentPriority
;
323 DWORD dwBasePriority
;
324 DWORD dwContextSwitches
;
327 DWORD dwUnknown2
[ 5 ];
330 } SYSTEM_THREAD_INFORMATION
, * PSYSTEM_THREAD_INFORMATION
;
333 typedef struct _SYSTEM_PROCESS_INFORMATION
337 DWORD dwUnknown1
[6];
338 FILETIME ftCreationTime
;
339 DWORD dwUnknown2
[5];
340 WCHAR
* pszProcessName
;
341 DWORD dwBasePriority
;
343 DWORD dwParentProcessID
;
347 DWORD dwVirtualBytesPeak
;
348 DWORD dwVirtualBytes
;
350 DWORD dwWorkingSetPeak
;
355 DWORD dwNonPagedPool
;
356 DWORD dwPageFileBytesPeak
;
357 DWORD dwPrivateBytes
;
358 DWORD dwPageFileBytes
;
359 DWORD dwUnknown7
[4];
360 SYSTEM_THREAD_INFORMATION Threads
[1];
362 } SYSTEM_PROCESS_INFORMATION
, * PSYSTEM_PROCESS_INFORMATION
;
365 typedef struct _SYSTEM_TIME_INFO
367 LARGE_INTEGER BootTime
;
368 LARGE_INTEGER SystemTime
;
369 LARGE_INTEGER TimeZoneBias
;
372 } SYSTEM_TIME_INFO
, *PSYSTEM_TIME_INFO
;
374 typedef struct _SYSTEM_GLOBAL_FLAGS_INFO
378 } SYSTEM_GLOBAL_FLAGS_INFO
, * PSYSTEM_GLOBAL_FLAGS_INFO
;
382 typedef struct _SYSTEM_DRIVER_INFO
389 CHAR DriverName
[256];
391 } SYSTEM_DRIVER_INFO
, * PSYSTEM_DRIVER_INFO
;
394 typedef struct _SYSTEM_DRIVERS_INFO
397 SYSTEM_DRIVER_INFO DriverInfo
[1];
398 } SYSTEM_DRIVERS_INFO
, *PSYSTEM_DRIVERS_INFO
;
401 typedef struct _SYSTEM_TIME_ADJUSTMENT
404 BOOL TimeAdjustmentDisabled
;
406 } SYSTEM_TIME_ADJUSTMENT
, *PSYSTEM_TIME_ADJUSTMENT
;
408 typedef struct _SYSTEM_CONFIGURATION_INFO
{
412 WORD ProcessorArchitecture
;
417 PVOID MinimumApplicationAddress
;
418 PVOID MaximumApplicationAddress
;
419 ULONG ActiveProcessorMask
;
420 ULONG NumberOfProcessors
;
422 ULONG AllocationGranularity
;
424 WORD ProcessorRevision
;
425 } SYSTEM_CONFIGURATION_INFO
, *PSYSTEM_CONFIGURATION_INFO
;
428 typedef struct _SYSTEM_PAGEFILE_INFORMATION
431 WCHAR PagefileName
[16];
433 } SYSTEM_PAGEFILE_INFORMATION
, * PSYSTEM_PAGEFILE_INFORMATION
;
436 typedef struct _SYSTEM_CACHE_INFORMATION
440 ULONG PageFaultCount
;
441 ULONG MinimumWorkingSet
;
442 ULONG MaximumWorkingSet
;
444 } SYSTEM_CACHE_INFORMATION
;
447 /* SYSTEM_POOL_ENTRY_INFO, SYSTEM_POOL_INFORMATION
448 * found by Klaus P. Gerlicher */
450 struct _SYSTEM_POOL_ENTRY_INFO
460 } SYSTEM_POOL_ENTRY_INFO
, * PSYSTEM_POOL_ENTRY_INFO
;
464 struct _SYSTEM_POOL_INFORMATION
467 SYSTEM_POOL_ENTRY_INFO PoolEntry
[1];
469 } SYSTEM_POOL_INFORMATION
, *PSYSTEM_POOL_INFORMATION
;
475 typedef struct _FILE_BASIC_INFORMATION
481 ULONG FileAttributes
;
482 } FILE_BASIC_INFORMATION
, *PFILE_BASIC_INFORMATION
;
484 typedef struct _FILE_STANDARD_INFORMATION
486 LARGE_INTEGER AllocationSize
;
487 LARGE_INTEGER EndOfFile
;
489 BOOLEAN DeletePending
;
491 } FILE_STANDARD_INFORMATION
, *PFILE_STANDARD_INFORMATION
;
493 typedef struct _FILE_POSITION_INFORMATION
495 LARGE_INTEGER CurrentByteOffset
;
496 } FILE_POSITION_INFORMATION
, *PFILE_POSITION_INFORMATION
;
498 typedef struct _FILE_ALIGNMENT_INFORMATION
500 ULONG AlignmentRequirement
;
501 } FILE_ALIGNMENT_INFORMATION
, *PFILE_ALIGNMENT_INFORMATION
;
503 typedef struct _FILE_DISPOSITION_INFORMATION
506 } FILE_DISPOSITION_INFORMATION
, *PFILE_DISPOSITION_INFORMATION
;
508 typedef struct _FILE_END_OF_FILE_INFORMATION
510 LARGE_INTEGER EndOfFile
;
511 } FILE_END_OF_FILE_INFORMATION
, *PFILE_END_OF_FILE_INFORMATION
;
513 typedef struct _FILE_NETWORK_OPEN_INFORMATION
519 LARGE_INTEGER AllocationSize
;
520 LARGE_INTEGER EndOfFile
;
521 ULONG FileAttributes
;
522 } FILE_NETWORK_OPEN_INFORMATION
, *PFILE_NETWORK_OPEN_INFORMATION
;
524 typedef struct _FILE_FULL_EA_INFORMATION
526 ULONG NextEntryOffset
;
529 USHORT EaValueLength
;
531 } FILE_FULL_EA_INFORMATION
, *PFILE_FULL_EA_INFORMATION
;
534 typedef struct _FILE_EA_INFORMATION
{
536 } FILE_EA_INFORMATION
, *PFILE_EA_INFORMATION
;
539 typedef struct _FILE_GET_EA_INFORMATION
{
540 ULONG NextEntryOffset
;
543 } FILE_GET_EA_INFORMATION
, *PFILE_GET_EA_INFORMATION
;
545 typedef struct _FILE_STREAM_INFORMATION
{
546 ULONG NextEntryOffset
;
547 ULONG StreamNameLength
;
548 LARGE_INTEGER StreamSize
;
549 LARGE_INTEGER StreamAllocationSize
;
551 } FILE_STREAM_INFORMATION
, *PFILE_STREAM_INFORMATION
;
553 typedef struct _FILE_ALLOCATION_INFORMATION
{
554 LARGE_INTEGER AllocationSize
;
555 } FILE_ALLOCATION_INFORMATION
, *PFILE_ALLOCATION_INFORMATION
;
557 typedef struct _FILE_NAME_INFORMATION
{
558 ULONG FileNameLength
;
560 } FILE_NAME_INFORMATION
, *PFILE_NAME_INFORMATION
;
562 typedef struct _FILE_NAMES_INFORMATION
564 ULONG NextEntryOffset
;
566 ULONG FileNameLength
;
568 } FILE_NAMES_INFORMATION
, *PFILE_NAMES_INFORMATION
;
571 typedef struct _FILE_RENAME_INFORMATION
{
574 ULONG FileNameLength
;
576 } FILE_RENAME_INFORMATION
, *PFILE_RENAME_INFORMATION
;
579 typedef struct _FILE_INTERNAL_INFORMATION
{
580 LARGE_INTEGER IndexNumber
;
581 } FILE_INTERNAL_INFORMATION
, *PFILE_INTERNAL_INFORMATION
;
583 typedef struct _FILE_ACCESS_INFORMATION
{
584 ACCESS_MASK AccessFlags
;
585 } FILE_ACCESS_INFORMATION
, *PFILE_ACCESS_INFORMATION
;
588 typedef struct _FILE_MODE_INFORMATION
{
590 } FILE_MODE_INFORMATION
, *PFILE_MODE_INFORMATION
;
592 typedef struct _FILE_COMPRESSION_INFORMATION
{
593 LARGE_INTEGER CompressedFileSize
;
594 USHORT CompressionFormat
;
595 UCHAR CompressionUnitShift
;
599 } FILE_COMPRESSION_INFORMATION
, *PFILE_COMPRESSION_INFORMATION
;
601 typedef struct _FILE_ALL_INFORMATION
{
602 FILE_BASIC_INFORMATION BasicInformation
;
603 FILE_STANDARD_INFORMATION StandardInformation
;
604 FILE_INTERNAL_INFORMATION InternalInformation
;
605 FILE_EA_INFORMATION EaInformation
;
606 FILE_ACCESS_INFORMATION AccessInformation
;
607 FILE_POSITION_INFORMATION PositionInformation
;
608 FILE_MODE_INFORMATION ModeInformation
;
609 FILE_ALIGNMENT_INFORMATION AlignmentInformation
;
610 FILE_NAME_INFORMATION NameInformation
;
611 } FILE_ALL_INFORMATION
, *PFILE_ALL_INFORMATION
;
613 // file system information structures
615 typedef struct _FILE_FS_DEVICE_INFORMATION
{
616 DEVICE_TYPE DeviceType
;
617 ULONG Characteristics
;
618 } FILE_FS_DEVICE_INFORMATION
, *PFILE_FS_DEVICE_INFORMATION
;
621 typedef struct _FILE_FS_VOLUME_INFORMATION
{
622 TIME VolumeCreationTime
;
623 ULONG VolumeSerialNumber
;
624 ULONG VolumeLabelLength
;
625 BOOLEAN SupportsObjects
;
626 WCHAR VolumeLabel
[0];
627 } FILE_FS_VOLUME_INFORMATION
, *PFILE_FS_VOLUME_INFORMATION
;
629 typedef struct _FILE_FS_SIZE_INFORMATION
{
630 LARGE_INTEGER TotalAllocationUnits
;
631 LARGE_INTEGER AvailableAllocationUnits
;
632 ULONG SectorsPerAllocationUnit
;
633 ULONG BytesPerSector
;
634 } FILE_FS_SIZE_INFORMATION
, *PFILE_FS_SIZE_INFORMATION
;
636 typedef struct _FILE_FS_ATTRIBUTE_INFORMATION
{
637 ULONG FileSystemAttributes
;
638 LONG MaximumComponentNameLength
;
639 ULONG FileSystemNameLength
;
640 WCHAR FileSystemName
[0];
641 } FILE_FS_ATTRIBUTE_INFORMATION
, *PFILE_FS_ATTRIBUTE_INFORMATION
;
644 FileSystemAttributes is one of the following values:
646 FILE_CASE_SENSITIVE_SEARCH 0x00000001
647 FILE_CASE_PRESERVED_NAMES 0x00000002
648 FILE_UNICODE_ON_DISK 0x00000004
649 FILE_PERSISTENT_ACLS 0x00000008
650 FILE_FILE_COMPRESSION 0x00000010
651 FILE_VOLUME_QUOTAS 0x00000020
652 FILE_VOLUME_IS_COMPRESSED 0x00008000
654 typedef struct _FILE_FS_LABEL_INFORMATION
{
655 ULONG VolumeLabelLength
;
656 WCHAR VolumeLabel
[0];
657 } FILE_FS_LABEL_INFORMATION
, *PFILE_FS_LABEL_INFORMATION
;
659 // read file scatter / write file scatter
660 //FIXME I am a win32 struct aswell
662 typedef union _FILE_SEGMENT_ELEMENT
{
665 }FILE_SEGMENT_ELEMENT
, *PFILE_SEGMENT_ELEMENT
;
667 // directory information
669 typedef struct _OBJDIR_INFORMATION
{
670 UNICODE_STRING ObjectName
;
671 UNICODE_STRING ObjectTypeName
; // Directory, Device ...
673 } OBJDIR_INFORMATION
, *POBJDIR_INFORMATION
;
676 typedef struct _FILE_DIRECTORY_INFORMATION
{
677 ULONG NextEntryOffset
;
683 LARGE_INTEGER EndOfFile
;
684 LARGE_INTEGER AllocationSize
;
685 ULONG FileAttributes
;
686 ULONG FileNameLength
;
688 } FILE_DIRECTORY_INFORMATION
, *PFILE_DIRECTORY_INFORMATION
;
690 typedef struct _FILE_FULL_DIRECTORY_INFORMATION
{
691 ULONG NextEntryOffset
;
697 LARGE_INTEGER EndOfFile
;
698 LARGE_INTEGER AllocationSize
;
699 ULONG FileAttributes
;
700 ULONG FileNameLength
;
702 WCHAR FileName
[0]; // variable size
703 } FILE_FULL_DIRECTORY_INFORMATION
, *PFILE_FULL_DIRECTORY_INFORMATION
,
704 FILE_FULL_DIR_INFORMATION
, *PFILE_FULL_DIR_INFORMATION
;
707 typedef struct _FILE_BOTH_DIRECTORY_INFORMATION
{
708 ULONG NextEntryOffset
;
714 LARGE_INTEGER EndOfFile
;
715 LARGE_INTEGER AllocationSize
;
716 ULONG FileAttributes
;
717 ULONG FileNameLength
;
719 CHAR ShortNameLength
;
720 WCHAR ShortName
[12]; // 8.3 name
722 } FILE_BOTH_DIRECTORY_INFORMATION
, *PFILE_BOTH_DIRECTORY_INFORMATION
,
723 FILE_BOTH_DIR_INFORMATION
, *PFILE_BOTH_DIR_INFORMATION
;
727 NotifyFilter / CompletionFilter:
729 FILE_NOTIFY_CHANGE_FILE_NAME 0x00000001
730 FILE_NOTIFY_CHANGE_DIR_NAME 0x00000002
731 FILE_NOTIFY_CHANGE_NAME 0x00000003
732 FILE_NOTIFY_CHANGE_ATTRIBUTES 0x00000004
733 FILE_NOTIFY_CHANGE_SIZE 0x00000008
734 FILE_NOTIFY_CHANGE_LAST_WRITE 0x00000010
735 FILE_NOTIFY_CHANGE_LAST_ACCESS 0x00000020
736 FILE_NOTIFY_CHANGE_CREATION 0x00000040
737 FILE_NOTIFY_CHANGE_EA 0x00000080
738 FILE_NOTIFY_CHANGE_SECURITY 0x00000100
739 FILE_NOTIFY_CHANGE_STREAM_NAME 0x00000200
740 FILE_NOTIFY_CHANGE_STREAM_SIZE 0x00000400
741 FILE_NOTIFY_CHANGE_STREAM_WRITE 0x00000800
744 typedef struct _FILE_NOTIFY_INFORMATION
{
746 ULONG FileNameLength
;
748 } FILE_NOTIFY_INFORMATION
;
752 Action is one of the following values:
754 FILE_ACTION_ADDED 0x00000001
755 FILE_ACTION_REMOVED 0x00000002
756 FILE_ACTION_MODIFIED 0x00000003
757 FILE_ACTION_RENAMED_OLD_NAME 0x00000004
758 FILE_ACTION_RENAMED_NEW_NAME 0x00000005
759 FILE_ACTION_ADDED_STREAM 0x00000006
760 FILE_ACTION_REMOVED_STREAM 0x00000007
761 FILE_ACTION_MODIFIED_STREAM 0x00000008
766 //FIXME: I am a win32 object
770 LPVOID lpArgToCompletionRoutine
,
771 DWORD dwTimerLowValue
,
772 DWORD dwTimerHighValue
776 // File System Control commands ( related to defragging )
778 #define FSCTL_READ_MFT_RECORD 0x90068 // NTFS only
779 #define FSCTL_GET_VOLUME_BITMAP 0x9006F
780 #define FSCTL_GET_RETRIEVAL_POINTERS 0x90073
781 #define FSCTL_MOVE_FILE 0x90074
783 typedef struct _MAPPING_PAIR
787 } MAPPING_PAIR
, *PMAPPING_PAIR
;
789 typedef struct _GET_RETRIEVAL_DESCRIPTOR
793 MAPPING_PAIR Pair
[0]; // variable size
794 } GET_RETRIEVAL_DESCRIPTOR
, *PGET_RETRIEVAL_DESCRIPTOR
;
796 typedef struct _BITMAP_DESCRIPTOR
799 ULONGLONG ClustersToEndOfVol
;
800 BYTE Map
[0]; // variable size
801 } BITMAP_DESCRIPTOR
, *PBITMAP_DESCRIPTOR
;
803 typedef struct _MOVEFILE_DESCRIPTOR
807 LARGE_INTEGER StartVcn
;
808 LARGE_INTEGER TargetLcn
;
811 } MOVEFILE_DESCRIPTOR
, *PMOVEFILE_DESCRIPTOR
;
814 // semaphore information
816 typedef struct _SEMAPHORE_BASIC_INFORMATION
820 } SEMAPHORE_BASIC_INFORMATION
, *PSEMAPHORE_BASIC_INFORMATION
;
824 typedef struct _EVENT_BASIC_INFORMATION
828 } EVENT_BASIC_INFORMATION
, *PEVENT_INFORMATION
;
830 //typedef enum _TIMER_TYPE
832 // NotificationTimer,
833 // SynchronizationTimer
837 struct _LPC_PORT_BASIC_INFORMATION
854 } LPC_PORT_BASIC_INFORMATION
, * PLPC_PORT_BASIC_INFORMATION
;