2 This is a free version of the file ntifs.h, release 58.
3 The purpose of this include file is to build file system and
4 file system filter drivers for Windows.
5 Copyright (C) 1999-2015 Bo Brantén.
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
14 You should have received a copy of the GNU General Public License
15 along with this program; if not, write to the Free Software
16 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 The GNU General Public License is also available from:
19 http://www.gnu.org/copyleft/gpl.html
21 Windows and Windows NT are either registered trademarks or trademarks of
22 Microsoft Corporation in the United States and/or other countries.
24 DISCLAIMER: I do not encourage anyone to use this include file to build
25 drivers used in production. Some of the information in this file may not
26 be available in other publications intended for similar use. Some of the
27 information in this file may have different names than in other
28 publications even though they describe the same thing.
30 NOTE: This file should be used with the Microsoft® Windows® Driver
31 Development Kit (DDK) while the file wdkundoc.h is a subset of this
32 file that should be used with the Microsoft Windows Driver Kit (WDK).
34 Please send comments, corrections and contributions to bosse@acc.umu.se.
36 The most recent version of this file is available from:
37 http://www.acc.umu.se/~bosse/ntifs.h
39 The most recent version of the file wdkundoc.h is available from:
40 http://www.acc.umu.se/~bosse/wdkundoc.h
43 Andrey Shedel, Luigi Mori, Louis Joubert, Itai Shaham, David Welch,
44 Emanuele Aliberti, Anton Altaparmakov, Dan Partelly, Mamaich, Yossi
45 Yaffe, Gunnar André Dalsnes, Vadim V Vorobev, Ashot Oganesyan K,
46 Oleg Nikityenko, Matt Wu, Tomas Olsson, Raaf, Anthony Choi, Alexey
47 Logachyov, Marc-Antoine Ruel, Vyacheslav I. Levtchenko, Yuri Polyakov,
48 Bruno Milot, Alex Vlasov, Dan Fulger, Petr Semerad, Sobame La Garompa,
49 Jérôme Hodé and Darja Isaksson.
56 PsInitialSystemProcess
57 HalPrivateDispatchTable
88 ExWindowStationObjectType
89 IoDeviceHandlerObjectType
93 TmEnlistmentObjectType
94 TmResourceManagerObjectType
95 TmTransactionManagerObjectType
96 TmTransactionObjectType
98 IoDeviceHandlerObjectSize
105 ObGetObjectPointerCount
108 FsRtlTeardownPerFileContexts
109 FsRtlTeardownPerStreamContexts
114 FSRTL_COMMON_FCB_HEADER
120 FSRTL_ADVANCED_FCB_HEADER
122 FsRtlSetupAdvancedHeader
129 SEP_AUDIT_POLICY_VISTA
130 SID_AND_ATTRIBUTES_HASH
134 EXTENDED_IO_STACK_LOCATION
141 RtlSecondsSince1980ToTime
142 RtlTimeToSecondsSince1980
161 IoAttachDeviceToDeviceStackSafe
162 IoCheckQuerySetFileInformation
163 IoCheckQuerySetVolumeInformation
164 IoCreateFileSpecifyDeviceObjectHint
165 IoCreateStreamFileObjectEx
166 IoEnumerateDeviceObjectList
167 IoGetDeviceAttachmentBaseRef
168 IoGetDiskDeviceObject
169 IoGetLowerDeviceObject
171 IoQueryFileDosDeviceName
174 KeAcquireQueuedSpinLock
178 KeReleaseQueuedSpinLock
179 KeSetIdealProcessorThread
180 KeSetKernelStackSwapEnable
181 KeTryToAcquireQueuedSpinLock
183 ObDereferenceSecurityDescriptor
184 ObLogSecurityDescriptor
185 ObReferenceSecurityDescriptor
186 PoQueueShutdownWorkItem
187 RtlxUnicodeStringToAnsiSize
188 SeAuditHardLinkCreation
189 SeAuditingHardLinkEvents
199 OBJECT_TYPE_INITIALIZER
208 ACTIVATION_CONTEXT_STACK
214 OBJECT_CREATE_INFORMATION
217 OBJECT_DIRECTORY_ITEM
219 OBJECT_HANDLE_DB_LIST
225 RTL_ACTIVATION_CONTEXT_STACK_FRAME
227 TEB_ACTIVE_FRAME_CONTEXT
230 FsRtlAcquireFileExclusive
233 FsRtlDoesDbcsContainWildCards
234 FsRtlIsDbcsInExpression
238 FsRtlIsTotalDeviceFailure
240 FsRtlPostPagingFileStackOverflow
241 FsRtlPostStackOverflow
242 FsRtlPrepareMdlWriteDev
248 THREAD_BASIC_INFORMATION
250 ZwQueryInformationThread
254 SYSTEM_PROCESSES_INFORMATION
265 SERVICE_DESCRIPTOR_TABLE
268 TOKEN_SESSION_NOT_REFERENCED
270 TOKEN_HAS_IMPERSONATE_PRIVILEGE
273 RtlOemStringToCountedUnicodeSize
274 RtlOemStringToUnicodeSize
275 RtlOemStringToUnicodeString
276 RtlUnicodeStringToOemSize
277 RtlUnicodeStringToOemString
278 RtlxOemStringToUnicodeSize
279 RtlxUnicodeStringToOemSize
284 InbvAcquireDisplayOwnership
285 InbvCheckDisplayOwnership
288 InbvEnableDisplayString
289 InbvInstallDisplayStringFilter
290 InbvIsBootDriverInstalled
291 InbvNotifyDisplayOwnershipLost
304 FsRtlLookupLastMcbEntry
306 FsRtlNotifyFilterChangeDirectory
307 FsRtlNotifyFilterReportChange
308 FsRtlNumberOfRunsInMcb
315 SYSTEM_CACHE_INFORMATION
316 SYSTEM_INFORMATION_CLASS
319 SYSTEM_XXX_INFORMATION
325 PsDereferenceImpersonationToken
326 PsDereferencePrimaryToken
328 PsReferencePrimaryToken
334 PsAssignImpersonationToken
335 PsChargeProcessNonPagedPoolQuota
336 PsChargeProcessPagedPoolQuota
337 PsChargeProcessPoolQuota
338 PsDisableImpersonation
341 PsRestoreImpersonation
351 FSRTL_FLAG_ADVANCED_HEADER
352 FSRTL_FLAG2_SUPPORTS_FILTER_CONTEXTS
353 FSRTL_FLAG2_PURGE_WHEN_MAPPED
355 FILE_ID_BOTH_DIR_INFORMATION
356 FILE_ID_FULL_DIR_INFORMATION
363 FsRtlAddLargeMcbEntry
364 FsRtlGetNextLargeMcbEntry
365 FsRtlInitializeLargeMcb
366 FsRtlLookupLargeMcbEntry
367 FsRtlLookupLastLargeMcbEntry
368 FsRtlLookupLastLargeMcbEntryAndIndex
369 FsRtlNumberOfRunsInLargeMcb
370 FsRtlRemoveLargeMcbEntry
373 FsRtlTruncateLargeMcb
374 FsRtlUninitializeLargeMcb
379 FILE_READ_ONLY_VOLUME
381 FsRtlAllocateResource
382 FsRtlIncrementCcFastReadNotPossible
383 FsRtlIncrementCcFastReadNoWait
384 FsRtlIncrementCcFastReadResourceMiss
385 FsRtlIncrementCcFastReadWait
388 KeRevertToUserAffinityThread
390 PsGetCurrentProcessSessionId
391 PsGetCurrentThreadPreviousMode
392 PsGetCurrentThreadStackBase
393 PsGetCurrentThreadStackLimit
397 Uppdated for Windows XP:
404 PRIVATE_CACHE_MAP_FLAGS
417 SE_AUDIT_PROCESS_CREATION_INFO
423 FILE_FS_FULL_SIZE_INFORMATION
434 CcWaitForCurrentLazyWriterActivity
436 FsRtlCurrentBatchOplock
437 FsRtlDeregisterUncProvider
438 FsRtlInitializeOplock
440 FsRtlOplockIsFastIoPossible
441 FsRtlRegisterUncProvider
442 FsRtlUninitializeOplock
447 RtlDecompressFragment
449 RtlGetCompressionWorkSpaceSize
455 Changed the use of _WIN32_WINNT to VER_PRODUCTBUILD since _WIN32_WINNT
456 is incorrectly defined in the Windows 2000 build environment included
457 in the Windows XP DDK.
462 PsDereferenceImpersonationToken
463 PsDereferencePrimaryToken
467 ObReferenceObjectByName
468 FILE_FS_OBJECT_ID_INFORMATION
469 FILE_OBJECTID_INFORMATION
482 FILE_TRACKING_INFORMATION
485 SeEnableAccessToExports
489 QueryQuota in EXTENDED_IO_STACK_LOCATION
495 FsRtlFastUnlockAllByKey
496 FsRtlFastUnlockSingle
497 FsRtlInitializeFileLock
503 SeImpersonateClientEx
514 CcGetFlushedValidData
517 ExDisableResourceBoostLite
519 FsRtlAllocateFileLock
520 FsRtlAreThereCurrentFileLocks
524 IoCheckEaBufferValidity
525 IoCheckFunctionAccess
526 IoCheckQuotaBufferValidity
527 IoCreateStreamFileObjectLite
528 IoFastQueryNetworkAttributes
529 IoGetRequestorProcessId
530 IoIsFileOpenedExclusively
532 IoIsValidNameGraftingBuffer
533 IoSynchronousPageWrite
541 MmSetAddressRangeModified
542 ObGetObjectPointerCount
543 ObMakeTemporaryObject
544 ObQueryObjectAuditingByHandle
549 SeAuditingFileOrGlobalEvents
550 SeCreateClientSecurity
551 SeCreateClientSecurityFromSubjectContext
552 SeDeleteClientSecurity
553 SeDeleteObjectAuditAlarm
556 SeOpenObjectAuditAlarm
557 SeOpenObjectForDeleteAuditAlarm
559 SeQueryAuthenticationIdToken
560 SeQuerySecurityDescriptorInfo
561 SeQuerySessionIdToken
562 SeSetAccessStateGenericMapping
563 SeSetSecurityDescriptorInfo
564 SeSetSecurityDescriptorInfoEx
568 SeUnlockSubjectContext
579 CreateMailslot in EXTENDED_IO_STACK_LOCATION
580 CreatePipe in EXTENDED_IO_STACK_LOCATION
581 QueryQuota in EXTENDED_IO_STACK_LOCATION
582 MAILSLOT_CREATE_PARAMETERS
584 NAMED_PIPE_CREATE_PARAMETERS
585 PRIVATE_CACHE_MAP_FLAGS
587 SECURITY_CLIENT_CONTEXT
591 HalQueryRealTimeClock
594 PsIsThreadTerminating
595 PsLookupProcessThreadByCid
596 PsLookupThreadByThreadId
597 SeQueryAuthenticationIdToken
599 KeServiceDescriptorTable
608 FsRtlNotifyChangeDirectory
609 FsRtlNotifyReportChange
610 FsRtlNotifyVolumeEvent
615 FsRtlNotifyInitializeSync
616 FsRtlNotifyUninitializeSync
617 SeImpersonateClientEx
618 SeReleaseSubjectContext
624 FsRtlNormalizeNtstatus
625 RtlSecondsSince1970ToTime
626 RtlTimeToSecondsSince1970
627 SeQueryInformationToken
633 FILE_SHARED_LOCK_ENTRY
634 FILE_EXCLUSIVE_LOCK_ENTRY
636 FsRtlCheckLockForReadAccess
637 FsRtlCheckLockForWriteAccess
639 FsRtlFastUnlockAllByKey
640 FsRtlFastUnlockSingle
643 FsRtlInitializeFileLock
646 FsRtlUninitializeFileLock
647 IoUnregisterFsRegistrationChange
648 PsLookupProcessByProcessId
649 SeQuerySubjectContextToken
659 FsRtlAddToTunnelCache
660 FsRtlDeleteKeyFromTunnelCache
661 FsRtlDeleteTunnelCache
662 FsRtlFindInTunnelCache
663 FsRtlInitializeTunnelCache
667 SeQueryInformationToken
678 DIRECTORY_BASIC_INFORMATION
680 OBJECT_HANDLE_ATTRIBUTE_INFO
681 PROCESS_PRIORITY_CLASS
682 SECTION_BASIC_INFORMATION
683 SECTION_IMAGE_INFORMATION
684 SECTION_INFORMATION_CLASS
686 RtlSecondsSince1970ToTime
687 RtlTimeToSecondsSince1970
688 ZwAdjustPrivilegesToken
690 ZwAccessCheckAndAuditAlarm
692 ZwCloseObjectAuditAlarm
694 ZwCreateSymbolicLinkObject
696 ZwFlushInstructionCache
698 ZwInitiatePowerAction
705 ZwQueryDefaultUILanguage
706 ZwQueryInformationProcess
707 ZwQueryInstallUILanguage
714 ZwSetDefaultUILanguage
716 ZwSetInformationObject
717 ZwSetInformationProcess
722 ZwWaitForSingleObject
723 ZwWaitForMultipleObjects
725 Removed functions that is not exported in kernel mode:
727 RtlAllocateAndInitializeSid
729 ZwCompleteConnectPort
735 ZwImpersonateClientOfPort
738 ZwNotifyChangeDirectoryFile
739 ZwQueryInformationPort
742 ZwReplyWaitReceivePort
753 QueryEa in EXTENDED_IO_STACK_LOCATION
756 Some more flags for FileSystemAttributes
758 EXCEPTION_REGISTRATION_RECORD
759 FILE_FS_FULL_SIZE_INFORMATION
760 FILE_FS_OBJECT_ID_INFORMATION
763 PS_IMPERSONATION_INFORMATION
764 SetEa and SetQuota in EXTENDED_IO_STACK_LOCATION
768 KeUnstackDetachProcess
770 RtlSelfRelativeToAbsoluteSD
775 FSCTL_GET_VOLUME_INFORMATION
776 FSCTL_READ_MFT_RECORD
813 SERVICE_DESCRIPTOR_TABLE
823 ObReferenceObjectByName
826 Removed a name from credits since the person want to be anonymous.
830 PsReferenceImpersonationToken
837 FSCTL_GET_VOLUME_INFORMATION
838 FSCTL_READ_MFT_RECORD
842 PORT_INFORMATION_CLASS
847 GET_RETRIEVAL_DESCRIPTOR
851 InitializeMessageHeader
854 ZwCompleteConnectPort
858 ZwImpersonateClientOfPort
860 ZwQueryInformationPort
863 ZwReplyWaitReceivePort
866 ZwRequestWaitReplyPort
873 SeCreateClientSecurity
880 FILE_STORAGE_TYPE_XXX
882 IO_CHECK_CREATE_PARAMETERS
887 IO_COMPLETION_INFORMATION_CLASS
889 SYSTEM_INFORMATION_CLASS
891 IO_COMPLETION_BASIC_INFORMATION
894 OBJECT_PROTECTION_INFO
896 OBJECT_ALL_TYPES_INFO
897 SYSTEM_CACHE_INFORMATION
900 FsRtlAllocatePoolWithQuota
901 FsRtlAllocatePoolWithQuotaTag
902 FsRtlAllocatePoolWithTag
904 FsRtlFastCheckLockForRead
905 FsRtlFastCheckLockForWrite
907 FsRtlMdlWriteComplete
908 FsRtlNormalizeNtstatus
915 ZwQuerySystemInformation
916 ZwSetSystemInformation
920 Renamed IoQueryFileVolumeInformation to IoQueryVolumeInformation
928 #if (_WIN32_WINNT < 0x0500)/#endif around stuff that is included in
929 the Windows 2000 DDK but is missing in the Windows NT 4.0 DDK.
934 PsReferenceImpersonationToken
936 RtlAllocateAndInitializeSid
940 FILE_COMPRESSION_INFORMATION
943 ACCESS_ALLOWED_ACE_TYPE
944 ACCESS_DENIED_ACE_TYPE
945 SYSTEM_AUDIT_ACE_TYPE
946 SYSTEM_ALARM_ACE_TYPE
951 FILE_OPBATCH_BREAK_UNDERWAY
952 SECURITY_WORLD_SID_AUTHORITY
957 FILE_COMPLETION_INFORMATION
958 FILE_COPY_ON_WRITE_INFORMATION
959 FILE_FS_CONTROL_INFORMATION
960 FILE_GET_EA_INFORMATION
961 FILE_GET_QUOTA_INFORMATION
962 FILE_OBJECTID_INFORMATION
963 FILE_OLE_CLASSID_INFORMATION
964 FILE_OLE_ALL_INFORMATION
965 FILE_OLE_DIR_INFORMATION
967 FILE_OLE_STATE_BITS_INFORMATION
968 FILE_QUOTA_INFORMATION
972 IoGetRequestorProcess
975 RtlAbsoluteToSelfRelativeSD
976 RtlGetDaclSecurityDescriptor
977 RtlGetGroupSecurityDescriptor
978 RtlGetOwnerSecurityDescriptor
980 RtlSetGroupSecurityDescriptor
981 RtlSetOwnerSecurityDescriptor
982 RtlSetSaclSecurityDescriptor
985 ZwQueryDirectoryObject
993 RtlAllocateAndInitializeSid
997 RtlIsNameLegalDOS8Dot3
1000 RtlNtStatusToDosError
1001 RtlSubAuthorityCountSid
1007 RtlConvertSidToUnicodeString
1010 FsRtlLegalAnsiCharacterArray
1013 FSRTL_WILD_CHARACTER
1015 FsRtlIsUnicodeCharacterWild
1017 FILE_ACCESS_INFORMATION
1018 FILE_MODE_INFORMATION
1019 GENERATE_NAME_CONTEXT
1020 Function prototypes:
1021 FsRtlDoesNameContainWildCards
1022 FsRtlIsNameInExpression
1024 RtlGenerate8dot3Name
1025 ZwQuerySecurityObject
1029 EXTENDED_IO_STACK_LOCATION
1030 QueryDirectory in EXTENDED_IO_STACK_LOCATION
1035 Function prototypes:
1036 ZwQuerySymbolicLinkObject
1044 FILE_OPLOCK_BROKEN_TO_LEVEL_2
1045 FILE_OPLOCK_BROKEN_TO_NONE
1046 FILE_CASE_SENSITIVE_SEARCH
1047 FILE_CASE_PRESERVED_NAMES
1048 FILE_UNICODE_ON_DISK
1049 FILE_PERSISTENT_ACLS
1050 FILE_FILE_COMPRESSION
1051 FILE_VOLUME_IS_COMPRESSED
1052 FSRTL_FLAG_ACQUIRE_MAIN_RSRC_EX
1053 FSRTL_FLAG_ACQUIRE_MAIN_RSRC_SH
1054 IOCTL_REDIR_QUERY_PATH
1056 FILE_FS_LABEL_INFORMATION
1058 In IO_STACK_LOCATION:
1062 Function prototypes:
1069 defines for TOKEN_XXX
1071 TOKEN_INFORMATION_CLASS
1073 FILE_FS_ATTRIBUTE_INFORMATION
1074 FILE_FS_SIZE_INFORMATION
1075 SID_IDENTIFIER_AUTHORITY
1089 IoGetBaseFileSystemDeviceObject
1090 PsReferenceImpersonationToken
1091 PsReferencePrimaryToken
1092 RtlConvertSidToUnicodeString
1093 SeCaptureSubjectContext
1094 SeMarkLogonSessionForTerminationNotification
1095 SeRegisterLogonSessionTerminatedRoutine
1096 SeUnregisterLogonSessionTerminatedRoutine
1099 ZwQueryInformationToken
1102 Corrected declarations of Zw functions.
1109 ZwNotifyChangeDirectoryFile
1113 ZwSetVolumeInformationFile
1118 defines for FILE_ACTION_XXX and FILE_NOTIFY_XXX
1119 FILE_FS_VOLUME_INFORMATION
1120 RETRIEVAL_POINTERS_BUFFER
1121 STARTING_VCN_INPUT_BUFFER
1122 FsRtlNotifyFullReportChange
1132 defines for MAP_XXX, MEM_XXX and SEC_XXX
1133 FILE_BOTH_DIR_INFORMATION
1134 FILE_DIRECTORY_INFORMATION
1135 FILE_FULL_DIR_INFORMATION
1136 FILE_NAMES_INFORMATION
1137 FILE_NOTIFY_INFORMATION
1144 ZwDeviceIoControlFile
1147 ZwOpenDirectoryObject
1149 ZwOpenSymbolicLinkObject
1150 ZwQueryDirectoryFile
1155 FILE_COMPRESSION_INFORMATION
1156 FILE_STREAM_INFORMATION
1157 FILE_LINK_INFORMATION
1158 FILE_RENAME_INFORMATION
1159 EXTENDED_IO_STACK_LOCATION
1160 IoQueryFileInformation
1161 IoQueryFileVolumeInformation
1162 ZwQueryVolumeInformationFile
1163 Moved include of ntddk.h to inside extern "C" block.
1180 // Available in Windows NT 3.1 and later versions.
1181 // Documented in the WDK.
1182 extern PEPROCESS PsInitialSystemProcess
;
1184 // Available in Windows NT 3.5 and later versions.
1185 typedef struct _HAL_PRIVATE_DISPATCH
*PHAL_PRIVATE_DISPATCH
;
1186 extern PHAL_PRIVATE_DISPATCH HalPrivateDispatchTable
;
1188 // Available in Windows NT 3.5 and later versions.
1189 typedef struct _LOADER_PARAMETER_BLOCK
*PLOADER_PARAMETER_BLOCK
;
1190 extern PLOADER_PARAMETER_BLOCK KeLoaderBlock
;
1192 // Available in Windows NT 3.5 and later versions.
1193 typedef struct _SERVICE_DESCRIPTOR_TABLE
*PSERVICE_DESCRIPTOR_TABLE
;
1194 extern PSERVICE_DESCRIPTOR_TABLE KeServiceDescriptorTable
;
1196 // Available in Windows NT 3.5 and later versions.
1197 extern PSHORT NtBuildNumber
;
1198 extern PULONG KeI386MachineType
;
1200 // Available in Windows NT 4.0 and later versions.
1201 extern ULONG KiBugCheckData
[5];
1203 // Available in Windows 2000 and later versions.
1204 extern PULONG InitSafeBootMode
;
1206 // Available from Windows 2000 untill Windows Server 2003.
1207 extern PULONG KiEnableTimerWatchdog
;
1209 // Available in Windows NT 3.5 and later versions.
1211 // Set by the kernel debugger on the target system to the address of the
1212 // serial port used to communicate with the host.
1214 extern PUCHAR
*KdComPortInUse
;
1216 // Available in Windows 2000 and later versions.
1217 extern PULONG KdEnteredDebugger
;
1219 // Available in Windows Vista and later versions.
1220 // Documented in the WDK.
1221 extern PVOID MmBadPointer
;
1223 // Available in Windows NT 3.5 and later versions.
1224 // Documented in the WDK.
1225 extern PUCHAR
*FsRtlLegalAnsiCharacterArray
;
1227 // Available in Windows NT 3.5 and later versions.
1228 extern PUSHORT
*NlsLeadByteInfo
;
1229 extern PUSHORT
*NlsOemLeadByteInfo
;
1230 extern PBOOLEAN NlsMbCodePageTag
;
1231 extern PBOOLEAN NlsMbOemCodePageTag
;
1233 // Available in Windows NT 4.0 and later versions.
1234 extern PUSHORT NlsAnsiCodePage
;
1236 // Available in Windows 2000 and later versions.
1237 extern PUSHORT NlsOemCodePage
;
1239 // Available in Windows NT 3.5 and later versions.
1240 // SeExports is documented in the WDK.
1241 typedef struct _SE_EXPORTS
*PSE_EXPORTS
;
1242 extern PSE_EXPORTS SeExports
;
1243 extern PACL SePublicDefaultDacl
;
1244 extern PACL SeSystemDefaultDacl
;
1246 // Available in Windows NT 3.5 and later versions.
1247 // Documented in the WDK.
1248 extern KSPIN_LOCK IoStatisticsLock
;
1249 extern ULONG IoReadOperationCount
;
1250 extern ULONG IoWriteOperationCount
;
1251 extern LARGE_INTEGER IoReadTransferCount
;
1252 extern LARGE_INTEGER IoWriteTransferCount
;
1254 // Available from Windows NT 3.5 untill Windows XP.
1255 extern ULONG KeDcacheFlushCount
;
1256 extern ULONG KeIcacheFlushCount
;
1258 // Available in Windows NT 4.0 and later versions.
1259 // Documented in the WDK.
1260 extern ULONG CcFastMdlReadWait
;
1261 // Available from Windows NT 4.0 untill Windows Server 2003.
1262 extern ULONG CcFastReadNotPossible
;
1263 extern ULONG CcFastReadWait
;
1265 // The ExEventObjectType, ExSemaphoreObjectType and IoFileObjectType is
1266 // documented in the DDK and the WDK.
1268 // The CmKeyObjectType, SeTokenObjectType, PsProcessType, PsThreadType,
1269 // TmEnlistmentObjectType, TmResourceManagerObjectType,
1270 // TmTransactionManagerObjectType and TmTransactionObjectType
1271 // is documented in the WDK.
1273 // Available in Windows NT 3.5 and later versions.
1274 extern POBJECT_TYPE
*IoAdapterObjectType
;
1275 extern POBJECT_TYPE
*IoDeviceObjectType
;
1276 extern POBJECT_TYPE
*IoDriverObjectType
;
1277 extern POBJECT_TYPE
*MmSectionObjectType
;
1278 extern POBJECT_TYPE
*PsProcessType
;
1279 extern POBJECT_TYPE
*PsThreadType
;
1280 // Available in Windows NT 4.0 and later versions.
1281 extern POBJECT_TYPE
*ExDesktopObjectType
;
1282 extern POBJECT_TYPE
*ExWindowStationObjectType
;
1283 extern POBJECT_TYPE
*IoDeviceHandlerObjectType
;
1284 // Available in Windows 2000 and later versions.
1285 extern POBJECT_TYPE
*LpcPortObjectType
;
1286 extern POBJECT_TYPE
*PsJobType
;
1287 // Available in Windows XP and later versions.
1288 extern POBJECT_TYPE
*SeTokenObjectType
;
1289 // Available in Windows Vista and later versions.
1290 extern POBJECT_TYPE
*TmEnlistmentObjectType
;
1291 extern POBJECT_TYPE
*TmResourceManagerObjectType
;
1292 extern POBJECT_TYPE
*TmTransactionManagerObjectType
;
1293 extern POBJECT_TYPE
*TmTransactionObjectType
;
1294 // Available in Windows 7 and later versions.
1295 extern POBJECT_TYPE
*CmKeyObjectType
;
1297 // Available in Windows NT 4.0 and later versions.
1298 extern PULONG IoDeviceHandlerObjectSize
;
1300 // Available in Windows Vista and later versions.
1301 extern PVOID POGOBuffer
;
1302 extern PVOID psMUITest
;
1303 extern PVOID PsUILanguageComitted
;
1305 #define ACCESS_ALLOWED_ACE_TYPE (0x0)
1306 #define ACCESS_DENIED_ACE_TYPE (0x1)
1307 #define SYSTEM_AUDIT_ACE_TYPE (0x2)
1308 #define SYSTEM_ALARM_ACE_TYPE (0x3)
1310 #define ANSI_DOS_STAR ('<')
1311 #define ANSI_DOS_QM ('>')
1312 #define ANSI_DOS_DOT ('"')
1314 #define DOS_STAR (L'<')
1315 #define DOS_QM (L'>')
1316 #define DOS_DOT (L'"')
1318 #define COMPRESSION_FORMAT_NONE (0x0000)
1319 #define COMPRESSION_FORMAT_DEFAULT (0x0001)
1320 #define COMPRESSION_FORMAT_LZNT1 (0x0002)
1321 #define COMPRESSION_ENGINE_STANDARD (0x0000)
1322 #define COMPRESSION_ENGINE_MAXIMUM (0x0100)
1323 #define COMPRESSION_ENGINE_HIBER (0x0200)
1325 #define FILE_ACTION_ADDED 0x00000001
1326 #define FILE_ACTION_REMOVED 0x00000002
1327 #define FILE_ACTION_MODIFIED 0x00000003
1328 #define FILE_ACTION_RENAMED_OLD_NAME 0x00000004
1329 #define FILE_ACTION_RENAMED_NEW_NAME 0x00000005
1330 #define FILE_ACTION_ADDED_STREAM 0x00000006
1331 #define FILE_ACTION_REMOVED_STREAM 0x00000007
1332 #define FILE_ACTION_MODIFIED_STREAM 0x00000008
1333 #define FILE_ACTION_REMOVED_BY_DELETE 0x00000009
1334 #define FILE_ACTION_ID_NOT_TUNNELLED 0x0000000A
1335 #define FILE_ACTION_TUNNELLED_ID_COLLISION 0x0000000B
1337 #define FILE_EA_TYPE_BINARY 0xfffe
1338 #define FILE_EA_TYPE_ASCII 0xfffd
1339 #define FILE_EA_TYPE_BITMAP 0xfffb
1340 #define FILE_EA_TYPE_METAFILE 0xfffa
1341 #define FILE_EA_TYPE_ICON 0xfff9
1342 #define FILE_EA_TYPE_EA 0xffee
1343 #define FILE_EA_TYPE_MVMT 0xffdf
1344 #define FILE_EA_TYPE_MVST 0xffde
1345 #define FILE_EA_TYPE_ASN1 0xffdd
1346 #define FILE_EA_TYPE_FAMILY_IDS 0xff01
1348 #define FILE_NEED_EA 0x00000080
1350 #define FILE_NOTIFY_CHANGE_FILE_NAME 0x00000001
1351 #define FILE_NOTIFY_CHANGE_DIR_NAME 0x00000002
1352 #define FILE_NOTIFY_CHANGE_NAME 0x00000003
1353 #define FILE_NOTIFY_CHANGE_ATTRIBUTES 0x00000004
1354 #define FILE_NOTIFY_CHANGE_SIZE 0x00000008
1355 #define FILE_NOTIFY_CHANGE_LAST_WRITE 0x00000010
1356 #define FILE_NOTIFY_CHANGE_LAST_ACCESS 0x00000020
1357 #define FILE_NOTIFY_CHANGE_CREATION 0x00000040
1358 #define FILE_NOTIFY_CHANGE_EA 0x00000080
1359 #define FILE_NOTIFY_CHANGE_SECURITY 0x00000100
1360 #define FILE_NOTIFY_CHANGE_STREAM_NAME 0x00000200
1361 #define FILE_NOTIFY_CHANGE_STREAM_SIZE 0x00000400
1362 #define FILE_NOTIFY_CHANGE_STREAM_WRITE 0x00000800
1363 #define FILE_NOTIFY_VALID_MASK 0x00000fff
1365 #define FILE_OPLOCK_BROKEN_TO_LEVEL_2 0x00000007
1366 #define FILE_OPLOCK_BROKEN_TO_NONE 0x00000008
1368 #define FILE_OPBATCH_BREAK_UNDERWAY 0x00000009
1370 #define FILE_CASE_SENSITIVE_SEARCH 0x00000001
1371 #define FILE_CASE_PRESERVED_NAMES 0x00000002
1372 #define FILE_UNICODE_ON_DISK 0x00000004
1373 #define FILE_PERSISTENT_ACLS 0x00000008
1374 #define FILE_FILE_COMPRESSION 0x00000010
1375 #define FILE_VOLUME_QUOTAS 0x00000020
1376 #define FILE_SUPPORTS_SPARSE_FILES 0x00000040
1377 #define FILE_SUPPORTS_REPARSE_POINTS 0x00000080
1378 #define FILE_SUPPORTS_REMOTE_STORAGE 0x00000100
1379 #define FS_LFN_APIS 0x00004000
1380 #define FILE_VOLUME_IS_COMPRESSED 0x00008000
1381 #define FILE_SUPPORTS_OBJECT_IDS 0x00010000
1382 #define FILE_SUPPORTS_ENCRYPTION 0x00020000
1383 #define FILE_NAMED_STREAMS 0x00040000
1384 #define FILE_READ_ONLY_VOLUME 0x00080000
1386 #define FILE_PIPE_BYTE_STREAM_TYPE 0x00000000
1387 #define FILE_PIPE_MESSAGE_TYPE 0x00000001
1389 #define FILE_PIPE_BYTE_STREAM_MODE 0x00000000
1390 #define FILE_PIPE_MESSAGE_MODE 0x00000001
1392 #define FILE_PIPE_QUEUE_OPERATION 0x00000000
1393 #define FILE_PIPE_COMPLETE_OPERATION 0x00000001
1395 #define FILE_PIPE_INBOUND 0x00000000
1396 #define FILE_PIPE_OUTBOUND 0x00000001
1397 #define FILE_PIPE_FULL_DUPLEX 0x00000002
1399 #define FILE_PIPE_DISCONNECTED_STATE 0x00000001
1400 #define FILE_PIPE_LISTENING_STATE 0x00000002
1401 #define FILE_PIPE_CONNECTED_STATE 0x00000003
1402 #define FILE_PIPE_CLOSING_STATE 0x00000004
1404 #define FILE_PIPE_CLIENT_END 0x00000000
1405 #define FILE_PIPE_SERVER_END 0x00000001
1407 #define FILE_PIPE_READ_DATA 0x00000000
1408 #define FILE_PIPE_WRITE_SPACE 0x00000001
1410 #define FILE_STORAGE_TYPE_SPECIFIED 0x00000041 // FILE_DIRECTORY_FILE | FILE_NON_DIRECTORY_FILE
1411 #define FILE_STORAGE_TYPE_DEFAULT (StorageTypeDefault << FILE_STORAGE_TYPE_SHIFT)
1412 #define FILE_STORAGE_TYPE_DIRECTORY (StorageTypeDirectory << FILE_STORAGE_TYPE_SHIFT)
1413 #define FILE_STORAGE_TYPE_FILE (StorageTypeFile << FILE_STORAGE_TYPE_SHIFT)
1414 #define FILE_STORAGE_TYPE_DOCFILE (StorageTypeDocfile << FILE_STORAGE_TYPE_SHIFT)
1415 #define FILE_STORAGE_TYPE_JUNCTION_POINT (StorageTypeJunctionPoint << FILE_STORAGE_TYPE_SHIFT)
1416 #define FILE_STORAGE_TYPE_CATALOG (StorageTypeCatalog << FILE_STORAGE_TYPE_SHIFT)
1417 #define FILE_STORAGE_TYPE_STRUCTURED_STORAGE (StorageTypeStructuredStorage << FILE_STORAGE_TYPE_SHIFT)
1418 #define FILE_STORAGE_TYPE_EMBEDDING (StorageTypeEmbedding << FILE_STORAGE_TYPE_SHIFT)
1419 #define FILE_STORAGE_TYPE_STREAM (StorageTypeStream << FILE_STORAGE_TYPE_SHIFT)
1420 #define FILE_MINIMUM_STORAGE_TYPE FILE_STORAGE_TYPE_DEFAULT
1421 #define FILE_MAXIMUM_STORAGE_TYPE FILE_STORAGE_TYPE_STREAM
1422 #define FILE_STORAGE_TYPE_MASK 0x000f0000
1423 #define FILE_STORAGE_TYPE_SHIFT 16
1425 #define FILE_VC_QUOTA_NONE 0x00000000
1426 #define FILE_VC_QUOTA_TRACK 0x00000001
1427 #define FILE_VC_QUOTA_ENFORCE 0x00000002
1428 #define FILE_VC_QUOTA_MASK 0x00000003
1430 #define FILE_VC_QUOTAS_LOG_VIOLATIONS 0x00000004
1431 #define FILE_VC_CONTENT_INDEX_DISABLED 0x00000008
1433 #define FILE_VC_LOG_QUOTA_THRESHOLD 0x00000010
1434 #define FILE_VC_LOG_QUOTA_LIMIT 0x00000020
1435 #define FILE_VC_LOG_VOLUME_THRESHOLD 0x00000040
1436 #define FILE_VC_LOG_VOLUME_LIMIT 0x00000080
1438 #define FILE_VC_QUOTAS_INCOMPLETE 0x00000100
1439 #define FILE_VC_QUOTAS_REBUILDING 0x00000200
1441 #define FILE_VC_VALID_MASK 0x000003ff
1443 #define FSRTL_FCB_HEADER_V0 (0x00)
1444 #define FSRTL_FCB_HEADER_V1 (0x01)
1446 #define FSRTL_FLAG_FILE_MODIFIED (0x01)
1447 #define FSRTL_FLAG_FILE_LENGTH_CHANGED (0x02)
1448 #define FSRTL_FLAG_LIMIT_MODIFIED_PAGES (0x04)
1449 #define FSRTL_FLAG_ACQUIRE_MAIN_RSRC_EX (0x08)
1450 #define FSRTL_FLAG_ACQUIRE_MAIN_RSRC_SH (0x10)
1451 #define FSRTL_FLAG_USER_MAPPED_FILE (0x20)
1452 #define FSRTL_FLAG_ADVANCED_HEADER (0x40)
1453 #define FSRTL_FLAG_EOF_ADVANCE_ACTIVE (0x80)
1455 #define FSRTL_FLAG2_DO_MODIFIED_WRITE (0x01)
1456 #define FSRTL_FLAG2_SUPPORTS_FILTER_CONTEXTS (0x02)
1457 #define FSRTL_FLAG2_PURGE_WHEN_MAPPED (0x04)
1458 #define FSRTL_FLAG2_IS_PAGING_FILE (0x08)
1460 #define FSRTL_FSP_TOP_LEVEL_IRP (0x01)
1461 #define FSRTL_CACHE_TOP_LEVEL_IRP (0x02)
1462 #define FSRTL_MOD_WRITE_TOP_LEVEL_IRP (0x03)
1463 #define FSRTL_FAST_IO_TOP_LEVEL_IRP (0x04)
1464 #define FSRTL_MAX_TOP_LEVEL_IRP_FLAG (0x04)
1466 #define FSRTL_VOLUME_DISMOUNT 1
1467 #define FSRTL_VOLUME_DISMOUNT_FAILED 2
1468 #define FSRTL_VOLUME_LOCK 3
1469 #define FSRTL_VOLUME_LOCK_FAILED 4
1470 #define FSRTL_VOLUME_UNLOCK 5
1471 #define FSRTL_VOLUME_MOUNT 6
1473 #define FSRTL_WILD_CHARACTER 0x08
1476 #define HARDWARE_PTE HARDWARE_PTE_X86
1477 #define PHARDWARE_PTE PHARDWARE_PTE_X86
1479 #define HARDWARE_PTE ULONG
1480 #define PHARDWARE_PTE PULONG
1483 #define IO_CHECK_CREATE_PARAMETERS 0x0200
1484 #define IO_ATTACH_DEVICE 0x0400
1486 #define IO_ATTACH_DEVICE_API 0x80000000
1488 #define IO_COMPLETION_QUERY_STATE 0x0001
1489 #define IO_COMPLETION_MODIFY_STATE 0x0002
1490 #define IO_COMPLETION_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3)
1492 #define IO_FILE_OBJECT_NON_PAGED_POOL_CHARGE 64
1493 #define IO_FILE_OBJECT_PAGED_POOL_CHARGE 1024
1495 #define IO_REPARSE_TAG_RESERVED_ZERO (0)
1496 #define IO_REPARSE_TAG_RESERVED_ONE (1)
1498 #define IO_TYPE_APC 18
1499 #define IO_TYPE_DPC 19
1500 #define IO_TYPE_DEVICE_QUEUE 20
1501 #define IO_TYPE_EVENT_PAIR 21
1502 #define IO_TYPE_INTERRUPT 22
1503 #define IO_TYPE_PROFILE 23
1505 #define IRP_BEING_VERIFIED 0x10
1507 #define MAILSLOT_CLASS_FIRSTCLASS 1
1508 #define MAILSLOT_CLASS_SECONDCLASS 2
1510 #define MAILSLOT_SIZE_AUTO 0
1512 #define MAP_PROCESS 1L
1513 #define MAP_SYSTEM 2L
1515 #define MEM_DOS_LIM 0x40000000
1516 #define MEM_IMAGE SEC_IMAGE
1518 #define OB_FLAG_CREATE_INFO 0x01 /* Object header has OBJECT_CREATE_INFO */
1519 #define OB_FLAG_KERNEL_MODE 0x02 /* Created by kernel */
1520 #define OB_FLAG_CREATOR_INFO 0x04 /* Object header has OBJECT_CREATOR_INFO */
1521 #define OB_FLAG_EXCLUSIVE 0x08 /* OBJ_EXCLUSIVE */
1522 #define OB_FLAG_PERMAMENT 0x10 /* OBJ_PERMAMENT */
1523 #define OB_FLAG_SECURITY 0x20 /* Object header has SecurityDescriptor != NULL */
1524 #define OB_FLAG_SINGLE_PROCESS 0x40 /* absent HandleDBList */
1526 #define OB_SECURITY_CHARGE 0x00000800
1528 #define OB_TYPE_TYPE 1
1529 #define OB_TYPE_DIRECTORY 2
1530 #define OB_TYPE_SYMBOLIC_LINK 3
1531 #define OB_TYPE_TOKEN 4
1532 #define OB_TYPE_PROCESS 5
1533 #define OB_TYPE_THREAD 6
1534 #define OB_TYPE_EVENT 7
1535 #define OB_TYPE_EVENT_PAIR 8
1536 #define OB_TYPE_MUTANT 9
1537 #define OB_TYPE_SEMAPHORE 10
1538 #define OB_TYPE_TIMER 11
1539 #define OB_TYPE_PROFILE 12
1540 #define OB_TYPE_WINDOW_STATION 13
1541 #define OB_TYPE_DESKTOP 14
1542 #define OB_TYPE_SECTION 15
1543 #define OB_TYPE_KEY 16
1544 #define OB_TYPE_PORT 17
1545 #define OB_TYPE_ADAPTER 18
1546 #define OB_TYPE_CONTROLLER 19
1547 #define OB_TYPE_DEVICE 20
1548 #define OB_TYPE_DRIVER 21
1549 #define OB_TYPE_IO_COMPLETION 22
1550 #define OB_TYPE_FILE 23
1552 #define PIN_WAIT (1)
1553 #define PIN_EXCLUSIVE (2)
1554 #define PIN_NO_READ (4)
1555 #define PIN_IF_BCB (8)
1557 #define MAP_WAIT (1)
1558 #define MAP_NO_READ (16)
1560 #define PORT_CONNECT 0x0001
1561 #define PORT_ALL_ACCESS (STANDARD_RIGHTS_ALL |\
1564 #define SEC_BASED 0x00200000
1565 #define SEC_NO_CHANGE 0x00400000
1566 #define SEC_FILE 0x00800000
1567 #define SEC_IMAGE 0x01000000
1568 #define SEC_COMMIT 0x08000000
1569 #define SEC_NOCACHE 0x10000000
1571 #define SECURITY_WORLD_SID_AUTHORITY {0,0,0,0,0,1}
1572 #define SECURITY_WORLD_RID (0x00000000L)
1574 #define SID_REVISION 1
1576 #define THREAD_STATE_INITIALIZED 0
1577 #define THREAD_STATE_READY 1
1578 #define THREAD_STATE_RUNNING 2
1579 #define THREAD_STATE_STANDBY 3
1580 #define THREAD_STATE_TERMINATED 4
1581 #define THREAD_STATE_WAIT 5
1582 #define THREAD_STATE_TRANSITION 6
1583 #define THREAD_STATE_UNKNOWN 7
1585 #define TOKEN_ASSIGN_PRIMARY (0x0001)
1586 #define TOKEN_DUPLICATE (0x0002)
1587 #define TOKEN_IMPERSONATE (0x0004)
1588 #define TOKEN_QUERY (0x0008)
1589 #define TOKEN_QUERY_SOURCE (0x0010)
1590 #define TOKEN_ADJUST_PRIVILEGES (0x0020)
1591 #define TOKEN_ADJUST_GROUPS (0x0040)
1592 #define TOKEN_ADJUST_DEFAULT (0x0080)
1594 #define TOKEN_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED |\
1595 TOKEN_ASSIGN_PRIMARY |\
1597 TOKEN_IMPERSONATE |\
1599 TOKEN_QUERY_SOURCE |\
1600 TOKEN_ADJUST_PRIVILEGES |\
1601 TOKEN_ADJUST_GROUPS |\
1602 TOKEN_ADJUST_DEFAULT)
1604 #define TOKEN_READ (STANDARD_RIGHTS_READ |\
1607 #define TOKEN_WRITE (STANDARD_RIGHTS_WRITE |\
1608 TOKEN_ADJUST_PRIVILEGES |\
1609 TOKEN_ADJUST_GROUPS |\
1610 TOKEN_ADJUST_DEFAULT)
1612 #define TOKEN_EXECUTE (STANDARD_RIGHTS_EXECUTE)
1614 #define TOKEN_SOURCE_LENGTH 8
1616 #define TOKEN_HAS_TRAVERSE_PRIVILEGE 0x01
1617 #define TOKEN_HAS_BACKUP_PRIVILEGE 0x02
1618 #define TOKEN_HAS_RESTORE_PRIVILEGE 0x04
1619 #define TOKEN_HAS_ADMIN_GROUP 0x08
1620 #define TOKEN_IS_RESTRICTED 0x10
1621 #define TOKEN_SESSION_NOT_REFERENCED 0x20
1622 #define TOKEN_SANDBOX_INERT 0x40
1623 #define TOKEN_HAS_IMPERSONATE_PRIVILEGE 0x80
1625 #define VACB_MAPPING_GRANULARITY (0x40000)
1626 #define VACB_OFFSET_SHIFT (18)
1628 #define FSCTL_REQUEST_OPLOCK_LEVEL_1 CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 0, METHOD_BUFFERED, FILE_ANY_ACCESS)
1629 #define FSCTL_REQUEST_OPLOCK_LEVEL_2 CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 1, METHOD_BUFFERED, FILE_ANY_ACCESS)
1630 #define FSCTL_REQUEST_BATCH_OPLOCK CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 2, METHOD_BUFFERED, FILE_ANY_ACCESS)
1631 #define FSCTL_OPLOCK_BREAK_ACKNOWLEDGE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 3, METHOD_BUFFERED, FILE_ANY_ACCESS)
1632 #define FSCTL_OPBATCH_ACK_CLOSE_PENDING CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 4, METHOD_BUFFERED, FILE_ANY_ACCESS)
1633 #define FSCTL_OPLOCK_BREAK_NOTIFY CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 5, METHOD_BUFFERED, FILE_ANY_ACCESS)
1634 #define FSCTL_LOCK_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 6, METHOD_BUFFERED, FILE_ANY_ACCESS)
1635 #define FSCTL_UNLOCK_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 7, METHOD_BUFFERED, FILE_ANY_ACCESS)
1636 #define FSCTL_DISMOUNT_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 8, METHOD_BUFFERED, FILE_ANY_ACCESS)
1638 #define FSCTL_IS_VOLUME_MOUNTED CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 10, METHOD_BUFFERED, FILE_ANY_ACCESS)
1639 #define FSCTL_IS_PATHNAME_VALID CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 11, METHOD_BUFFERED, FILE_ANY_ACCESS)
1640 #define FSCTL_MARK_VOLUME_DIRTY CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 12, METHOD_BUFFERED, FILE_ANY_ACCESS)
1642 #define FSCTL_QUERY_RETRIEVAL_POINTERS CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 14, METHOD_NEITHER, FILE_ANY_ACCESS)
1643 #define FSCTL_GET_COMPRESSION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 15, METHOD_BUFFERED, FILE_ANY_ACCESS)
1644 #define FSCTL_SET_COMPRESSION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 16, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
1647 #define FSCTL_MARK_AS_SYSTEM_HIVE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 19, METHOD_NEITHER, FILE_ANY_ACCESS)
1648 #define FSCTL_OPLOCK_BREAK_ACK_NO_2 CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 20, METHOD_BUFFERED, FILE_ANY_ACCESS)
1649 #define FSCTL_INVALIDATE_VOLUMES CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 21, METHOD_BUFFERED, FILE_ANY_ACCESS)
1650 #define FSCTL_QUERY_FAT_BPB CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 22, METHOD_BUFFERED, FILE_ANY_ACCESS)
1651 #define FSCTL_REQUEST_FILTER_OPLOCK CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 23, METHOD_BUFFERED, FILE_ANY_ACCESS)
1652 #define FSCTL_FILESYSTEM_GET_STATISTICS CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 24, METHOD_BUFFERED, FILE_ANY_ACCESS)
1654 #if (VER_PRODUCTBUILD >= 1381)
1656 #define FSCTL_GET_NTFS_VOLUME_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 25, METHOD_BUFFERED, FILE_ANY_ACCESS)
1657 #define FSCTL_GET_NTFS_FILE_RECORD CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 26, METHOD_BUFFERED, FILE_ANY_ACCESS)
1658 #define FSCTL_GET_VOLUME_BITMAP CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 27, METHOD_NEITHER, FILE_ANY_ACCESS)
1659 #define FSCTL_GET_RETRIEVAL_POINTERS CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 28, METHOD_NEITHER, FILE_ANY_ACCESS)
1660 #define FSCTL_MOVE_FILE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 29, METHOD_BUFFERED, FILE_ANY_ACCESS)
1661 #define FSCTL_IS_VOLUME_DIRTY CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 30, METHOD_BUFFERED, FILE_ANY_ACCESS)
1662 #define FSCTL_GET_HFS_INFORMATION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 31, METHOD_BUFFERED, FILE_ANY_ACCESS)
1663 #define FSCTL_ALLOW_EXTENDED_DASD_IO CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 32, METHOD_NEITHER, FILE_ANY_ACCESS)
1665 #endif // (VER_PRODUCTBUILD >= 1381)
1667 #if (VER_PRODUCTBUILD >= 2195)
1669 #define FSCTL_READ_PROPERTY_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 33, METHOD_NEITHER, FILE_ANY_ACCESS)
1670 #define FSCTL_WRITE_PROPERTY_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 34, METHOD_NEITHER, FILE_ANY_ACCESS)
1671 #define FSCTL_FIND_FILES_BY_SID CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 35, METHOD_NEITHER, FILE_ANY_ACCESS)
1673 #define FSCTL_DUMP_PROPERTY_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 37, METHOD_NEITHER, FILE_ANY_ACCESS)
1674 #define FSCTL_SET_OBJECT_ID CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 38, METHOD_BUFFERED, FILE_WRITE_DATA)
1675 #define FSCTL_GET_OBJECT_ID CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 39, METHOD_BUFFERED, FILE_ANY_ACCESS)
1676 #define FSCTL_DELETE_OBJECT_ID CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 40, METHOD_BUFFERED, FILE_WRITE_DATA)
1677 #define FSCTL_SET_REPARSE_POINT CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 41, METHOD_BUFFERED, FILE_WRITE_DATA)
1678 #define FSCTL_GET_REPARSE_POINT CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 42, METHOD_BUFFERED, FILE_ANY_ACCESS)
1679 #define FSCTL_DELETE_REPARSE_POINT CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 43, METHOD_BUFFERED, FILE_WRITE_DATA)
1680 #define FSCTL_ENUM_USN_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 44, METHOD_NEITHER, FILE_READ_DATA)
1681 #define FSCTL_SECURITY_ID_CHECK CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 45, METHOD_NEITHER, FILE_READ_DATA)
1682 #define FSCTL_READ_USN_JOURNAL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 46, METHOD_NEITHER, FILE_READ_DATA)
1683 #define FSCTL_SET_OBJECT_ID_EXTENDED CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 47, METHOD_BUFFERED, FILE_WRITE_DATA)
1684 #define FSCTL_CREATE_OR_GET_OBJECT_ID CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 48, METHOD_BUFFERED, FILE_ANY_ACCESS)
1685 #define FSCTL_SET_SPARSE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 49, METHOD_BUFFERED, FILE_SPECIAL_ACCESS)
1686 #define FSCTL_SET_ZERO_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 50, METHOD_BUFFERED, FILE_WRITE_DATA)
1687 #define FSCTL_QUERY_ALLOCATED_RANGES CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 51, METHOD_NEITHER, FILE_READ_DATA)
1688 #define FSCTL_ENABLE_UPGRADE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 52, METHOD_BUFFERED, FILE_WRITE_DATA)
1689 #define FSCTL_SET_ENCRYPTION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 53, METHOD_BUFFERED, FILE_ANY_ACCESS)
1690 #define FSCTL_ENCRYPTION_FSCTL_IO CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 54, METHOD_NEITHER, FILE_ANY_ACCESS)
1691 #define FSCTL_WRITE_RAW_ENCRYPTED CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 55, METHOD_NEITHER, FILE_ANY_ACCESS)
1692 #define FSCTL_READ_RAW_ENCRYPTED CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 56, METHOD_NEITHER, FILE_ANY_ACCESS)
1693 #define FSCTL_CREATE_USN_JOURNAL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 57, METHOD_NEITHER, FILE_READ_DATA)
1694 #define FSCTL_READ_FILE_USN_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 58, METHOD_NEITHER, FILE_READ_DATA)
1695 #define FSCTL_WRITE_USN_CLOSE_RECORD CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 59, METHOD_NEITHER, FILE_READ_DATA)
1696 #define FSCTL_EXTEND_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 60, METHOD_BUFFERED, FILE_ANY_ACCESS)
1697 #define FSCTL_QUERY_USN_JOURNAL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 61, METHOD_BUFFERED, FILE_ANY_ACCESS)
1698 #define FSCTL_DELETE_USN_JOURNAL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 62, METHOD_BUFFERED, FILE_ANY_ACCESS)
1699 #define FSCTL_MARK_HANDLE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 63, METHOD_BUFFERED, FILE_ANY_ACCESS)
1700 #define FSCTL_SIS_COPYFILE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 64, METHOD_BUFFERED, FILE_ANY_ACCESS)
1701 #define FSCTL_SIS_LINK_FILES CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 65, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
1702 #define FSCTL_HSM_MSG CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 66, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
1703 #define FSCTL_NSS_CONTROL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 67, METHOD_BUFFERED, FILE_WRITE_DATA)
1704 #define FSCTL_HSM_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 68, METHOD_NEITHER, FILE_READ_DATA | FILE_WRITE_DATA)
1705 #define FSCTL_RECALL_FILE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 69, METHOD_NEITHER, FILE_ANY_ACCESS)
1706 #define FSCTL_NSS_RCONTROL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 70, METHOD_BUFFERED, FILE_READ_DATA)
1707 #define FSCTL_READ_FROM_PLEX CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 71, METHOD_OUT_DIRECT, FILE_READ_DATA)
1708 #define FSCTL_FILE_PREFETCH CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 72, METHOD_BUFFERED, FILE_SPECIAL_ACCESS)
1710 #endif // (VER_PRODUCTBUILD >= 2195)
1712 #define FSCTL_MAILSLOT_PEEK CTL_CODE(FILE_DEVICE_MAILSLOT, 0, METHOD_NEITHER, FILE_READ_DATA)
1714 #define FSCTL_NETWORK_SET_CONFIGURATION_INFO CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 102, METHOD_IN_DIRECT, FILE_ANY_ACCESS)
1715 #define FSCTL_NETWORK_GET_CONFIGURATION_INFO CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 103, METHOD_OUT_DIRECT, FILE_ANY_ACCESS)
1716 #define FSCTL_NETWORK_GET_CONNECTION_INFO CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 104, METHOD_NEITHER, FILE_ANY_ACCESS)
1717 #define FSCTL_NETWORK_ENUMERATE_CONNECTIONS CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 105, METHOD_NEITHER, FILE_ANY_ACCESS)
1718 #define FSCTL_NETWORK_DELETE_CONNECTION CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 107, METHOD_BUFFERED, FILE_ANY_ACCESS)
1719 #define FSCTL_NETWORK_GET_STATISTICS CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 116, METHOD_BUFFERED, FILE_ANY_ACCESS)
1720 #define FSCTL_NETWORK_SET_DOMAIN_NAME CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 120, METHOD_BUFFERED, FILE_ANY_ACCESS)
1721 #define FSCTL_NETWORK_REMOTE_BOOT_INIT_SCRT CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 250, METHOD_BUFFERED, FILE_ANY_ACCESS)
1723 #define FSCTL_PIPE_ASSIGN_EVENT CTL_CODE(FILE_DEVICE_NAMED_PIPE, 0, METHOD_BUFFERED, FILE_ANY_ACCESS)
1724 #define FSCTL_PIPE_DISCONNECT CTL_CODE(FILE_DEVICE_NAMED_PIPE, 1, METHOD_BUFFERED, FILE_ANY_ACCESS)
1725 #define FSCTL_PIPE_LISTEN CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2, METHOD_BUFFERED, FILE_ANY_ACCESS)
1726 #define FSCTL_PIPE_PEEK CTL_CODE(FILE_DEVICE_NAMED_PIPE, 3, METHOD_BUFFERED, FILE_READ_DATA)
1727 #define FSCTL_PIPE_QUERY_EVENT CTL_CODE(FILE_DEVICE_NAMED_PIPE, 4, METHOD_BUFFERED, FILE_ANY_ACCESS)
1728 #define FSCTL_PIPE_TRANSCEIVE CTL_CODE(FILE_DEVICE_NAMED_PIPE, 5, METHOD_NEITHER, FILE_READ_DATA | FILE_WRITE_DATA)
1729 #define FSCTL_PIPE_WAIT CTL_CODE(FILE_DEVICE_NAMED_PIPE, 6, METHOD_BUFFERED, FILE_ANY_ACCESS)
1730 #define FSCTL_PIPE_IMPERSONATE CTL_CODE(FILE_DEVICE_NAMED_PIPE, 7, METHOD_BUFFERED, FILE_ANY_ACCESS)
1731 #define FSCTL_PIPE_SET_CLIENT_PROCESS CTL_CODE(FILE_DEVICE_NAMED_PIPE, 8, METHOD_BUFFERED, FILE_ANY_ACCESS)
1732 #define FSCTL_PIPE_QUERY_CLIENT_PROCESS CTL_CODE(FILE_DEVICE_NAMED_PIPE, 9, METHOD_BUFFERED, FILE_ANY_ACCESS)
1733 #define FSCTL_PIPE_INTERNAL_READ CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2045, METHOD_BUFFERED, FILE_READ_DATA)
1734 #define FSCTL_PIPE_INTERNAL_WRITE CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2046, METHOD_BUFFERED, FILE_WRITE_DATA)
1735 #define FSCTL_PIPE_INTERNAL_TRANSCEIVE CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2047, METHOD_NEITHER, FILE_READ_DATA | FILE_WRITE_DATA)
1736 #define FSCTL_PIPE_INTERNAL_READ_OVFLOW CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2048, METHOD_BUFFERED, FILE_READ_DATA)
1738 #define IOCTL_REDIR_QUERY_PATH CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 99, METHOD_NEITHER, FILE_ANY_ACCESS)
1740 typedef PVOID PEJOB
;
1741 typedef PVOID PNOTIFY_SYNC
;
1742 typedef PVOID OPLOCK
, *POPLOCK
;
1743 typedef PVOID PWOW64_PROCESS
;
1751 typedef struct _CACHE_MANAGER_CALLBACKS
*PCACHE_MANAGER_CALLBACKS
;
1752 typedef struct _EPROCESS_QUOTA_BLOCK
*PEPROCESS_QUOTA_BLOCK
;
1753 typedef struct _FILE_GET_QUOTA_INFORMATION
*PFILE_GET_QUOTA_INFORMATION
;
1754 typedef struct _HANDLE_TABLE
*PHANDLE_TABLE
;
1755 typedef struct _KEVENT_PAIR
*PKEVENT_PAIR
;
1756 typedef struct _KPROCESS
*PKPROCESS
;
1757 typedef struct _KQUEUE
*PKQUEUE
;
1758 typedef struct _KTRAP_FRAME
*PKTRAP_FRAME
;
1759 typedef struct _LPC_MESSAGE
*PLPC_MESSAGE
;
1760 typedef struct _MAILSLOT_CREATE_PARAMETERS
*PMAILSLOT_CREATE_PARAMETERS
;
1761 typedef struct _MMWSL
*PMMWSL
;
1762 typedef struct _NAMED_PIPE_CREATE_PARAMETERS
*PNAMED_PIPE_CREATE_PARAMETERS
;
1763 typedef struct _OBJECT_DIRECTORY
*POBJECT_DIRECTORY
;
1764 typedef struct _PAGEFAULT_HISTORY
*PPAGEFAULT_HISTORY
;
1765 typedef struct _PEB
*PPEB
;
1766 typedef struct _PS_IMPERSONATION_INFORMATION
*PPS_IMPERSONATION_INFORMATION
;
1767 typedef struct _SECTION_OBJECT
*PSECTION_OBJECT
;
1768 typedef struct _SERVICE_DESCRIPTOR_TABLE
*PSERVICE_DESCRIPTOR_TABLE
;
1769 typedef struct _SHARED_CACHE_MAP
*PSHARED_CACHE_MAP
;
1770 typedef struct _TERMINATION_PORT
*PTERMINATION_PORT
;
1771 typedef struct _VACB
*PVACB
;
1772 typedef struct _VAD_HEADER
*PVAD_HEADER
;
1774 #if (VER_PRODUCTBUILD < 2195)
1775 typedef ULONG SIZE_T
, *PSIZE_T
;
1778 typedef enum _FAST_IO_POSSIBLE
{
1779 FastIoIsNotPossible
,
1781 FastIoIsQuestionable
1784 typedef enum _FILE_STORAGE_TYPE
{
1785 StorageTypeDefault
= 1,
1786 StorageTypeDirectory
,
1788 StorageTypeJunctionPoint
,
1790 StorageTypeStructuredStorage
,
1791 StorageTypeEmbedding
,
1793 } FILE_STORAGE_TYPE
;
1795 typedef enum _IO_COMPLETION_INFORMATION_CLASS
{
1796 IoCompletionBasicInformation
1797 } IO_COMPLETION_INFORMATION_CLASS
;
1799 #if (VER_PRODUCTBUILD == 2195)
1801 typedef enum _KSPIN_LOCK_QUEUE_NUMBER
{
1802 LockQueueDispatcherLock
,
1803 LockQueueContextSwapLock
,
1805 LockQueueSystemSpaceLock
,
1807 LockQueueMasterLock
,
1808 LockQueueNonPagedPoolLock
,
1809 LockQueueIoCancelLock
,
1810 LockQueueWorkQueueLock
,
1812 LockQueueIoDatabaseLock
,
1813 LockQueueIoCompletionLock
,
1814 LockQueueNtfsStructLock
,
1815 LockQueueAfdWorkQueueLock
,
1817 LockQueueMaximumLock
1818 } KSPIN_LOCK_QUEUE_NUMBER
;
1820 #endif // (VER_PRODUCTBUILD == 2195)
1822 typedef enum _LPC_TYPE
{
1833 LPC_CONNECTION_REQUEST
1836 typedef enum _MMFLUSH_TYPE
{
1841 typedef enum _OBJECT_INFO_CLASS
{
1846 ObjectProtectionInfo
1847 } OBJECT_INFO_CLASS
;
1849 typedef enum _PORT_INFORMATION_CLASS
{
1851 } PORT_INFORMATION_CLASS
;
1853 typedef enum _SECTION_INFORMATION_CLASS
{
1854 SectionBasicInformation
,
1855 SectionImageInformation
1856 } SECTION_INFORMATION_CLASS
;
1858 typedef enum _SID_NAME_USE
{
1863 SidTypeWellKnownGroup
,
1864 SidTypeDeletedAccount
,
1869 typedef enum _SYSTEM_INFORMATION_CLASS
{
1870 SystemBasicInformation
,
1871 SystemProcessorInformation
,
1872 SystemPerformanceInformation
,
1873 SystemTimeOfDayInformation
,
1874 SystemNotImplemented1
,
1875 SystemProcessesAndThreadsInformation
,
1877 SystemConfigurationInformation
,
1878 SystemProcessorTimes
,
1880 SystemNotImplemented2
,
1881 SystemModuleInformation
,
1882 SystemLockInformation
,
1883 SystemNotImplemented3
,
1884 SystemNotImplemented4
,
1885 SystemNotImplemented5
,
1886 SystemHandleInformation
,
1887 SystemObjectInformation
,
1888 SystemPagefileInformation
,
1889 SystemInstructionEmulationCounts
,
1890 SystemInvalidInfoClass1
,
1891 SystemCacheInformation
,
1892 SystemPoolTagInformation
,
1893 SystemProcessorStatistics
,
1894 SystemDpcInformation
,
1895 SystemNotImplemented6
,
1898 SystemTimeAdjustment
,
1899 SystemNotImplemented7
,
1900 SystemNotImplemented8
,
1901 SystemNotImplemented9
,
1902 SystemCrashDumpInformation
,
1903 SystemExceptionInformation
,
1904 SystemCrashDumpStateInformation
,
1905 SystemKernelDebuggerInformation
,
1906 SystemContextSwitchInformation
,
1907 SystemRegistryQuotaInformation
,
1908 SystemLoadAndCallImage
,
1909 SystemPrioritySeparation
,
1910 SystemNotImplemented10
,
1911 SystemNotImplemented11
,
1912 SystemInvalidInfoClass2
,
1913 SystemInvalidInfoClass3
,
1914 SystemTimeZoneInformation
,
1915 SystemLookasideInformation
,
1916 SystemSetTimeSlipEvent
,
1917 SystemCreateSession
,
1918 SystemDeleteSession
,
1919 SystemInvalidInfoClass4
,
1920 SystemRangeStartInformation
,
1921 SystemVerifierInformation
,
1923 SystemSessionProcessesInformation
1924 } SYSTEM_INFORMATION_CLASS
;
1926 typedef enum _THREAD_STATE
{
1937 typedef enum _TOKEN_INFORMATION_CLASS
{
1946 TokenImpersonationLevel
,
1949 } TOKEN_INFORMATION_CLASS
;
1951 typedef enum _TOKEN_TYPE
{
1956 typedef struct _HARDWARE_PTE_X86
{
1960 ULONG WriteThrough
: 1;
1961 ULONG CacheDisable
: 1;
1964 ULONG LargePage
: 1;
1966 ULONG CopyOnWrite
: 1;
1967 ULONG Prototype
: 1;
1969 ULONG PageFrameNumber
: 20;
1970 } HARDWARE_PTE_X86
, *PHARDWARE_PTE_X86
;
1972 typedef struct _KAPC_STATE
{
1973 LIST_ENTRY ApcListHead
[2];
1975 BOOLEAN KernelApcInProgress
;
1976 BOOLEAN KernelApcPending
;
1977 BOOLEAN UserApcPending
;
1978 } KAPC_STATE
, *PKAPC_STATE
;
1980 typedef struct _KGDTENTRY
{
1997 ULONG Reserved_0
: 1;
1998 ULONG Default_Big
: 1;
1999 ULONG Granularity
: 1;
2003 } KGDTENTRY
, *PKGDTENTRY
;
2005 typedef struct _KIDTENTRY
{
2009 USHORT ExtendedOffset
;
2010 } KIDTENTRY
, *PKIDTENTRY
;
2012 #if (VER_PRODUCTBUILD >= 2600)
2014 typedef struct _KPROCESS
{
2015 DISPATCHER_HEADER Header
;
2016 LIST_ENTRY ProfileListHead
;
2017 ULONG DirectoryTableBase
[2];
2018 KGDTENTRY LdtDescriptor
;
2019 KIDTENTRY Int21Descriptor
;
2023 ULONG ActiveProcessors
;
2026 LIST_ENTRY ReadyListHead
;
2027 SINGLE_LIST_ENTRY SwapListEntry
;
2028 PVOID VdmTrapcHandler
;
2029 LIST_ENTRY ThreadListHead
;
2030 KSPIN_LOCK ProcessLock
;
2035 BOOLEAN AutoAlignment
;
2038 BOOLEAN DisableBoost
;
2040 BOOLEAN DisableQuantum
;
2043 } KPROCESS
, *PKPROCESS
;
2047 typedef struct _KPROCESS
{
2048 DISPATCHER_HEADER Header
;
2049 LIST_ENTRY ProfileListHead
;
2050 ULONG DirectoryTableBase
[2];
2051 KGDTENTRY LdtDescriptor
;
2052 KIDTENTRY Int21Descriptor
;
2056 ULONG ActiveProcessors
;
2059 LIST_ENTRY ReadyListHead
;
2060 SINGLE_LIST_ENTRY SwapListEntry
;
2062 LIST_ENTRY ThreadListHead
;
2063 KSPIN_LOCK ProcessLock
;
2067 UCHAR ThreadQuantum
;
2068 BOOLEAN AutoAlignment
;
2071 BOOLEAN DisableBoost
;
2072 #if (VER_PRODUCTBUILD >= 2195)
2074 BOOLEAN DisableQuantum
;
2077 #endif // (VER_PRODUCTBUILD >= 2195)
2078 } KPROCESS
, *PKPROCESS
;
2082 #if (VER_PRODUCTBUILD >= 3790)
2084 typedef struct _KTHREAD
{
2085 DISPATCHER_HEADER Header
;
2086 LIST_ENTRY MutantListHead
; // 0x10
2087 PVOID InitialStack
; // 0x18
2088 PVOID StackLimit
; // 0x1c
2089 PVOID KernelStack
; // 0x20
2090 ULONG ThreadLock
; // 0x24
2091 ULONG ContextSwitches
; // 0x28
2092 UCHAR State
; // 0x2c
2093 UCHAR NpxState
; // 0x2d
2094 UCHAR WaitIrql
; // 0x2e
2095 CHAR WaitMode
; // 0x2f
2096 struct _TEB
*Teb
; // 0x30
2097 KAPC_STATE ApcState
; // 0x34
2098 KSPIN_LOCK ApcQueueLock
; // 0x4c
2099 NTSTATUS WaitStatus
; // 0x50
2100 PKWAIT_BLOCK WaitBlockList
; // 0x54
2101 BOOLEAN Alertable
; // 0x58
2102 UCHAR WaitNext
; // 0x59
2103 UCHAR WaitReason
; // 0x5a
2104 CHAR Priority
; // 0x5b
2105 BOOLEAN EnableStackSwap
; // 0x5c
2106 BOOLEAN SwapBusy
; // 0x5d
2107 UCHAR Alerted
[2]; // 0x5e
2109 LIST_ENTRY WaitListEntry
; // 0x60
2110 SINGLE_LIST_ENTRY SwapListEntry
; // 0x60
2112 PKQUEUE Queue
; // 0x68
2113 ULONG WaitTime
; // 0x6c
2116 USHORT KernelApcDisable
; // 0x70
2117 USHORT SpecialApcDisable
; // 0x72
2119 USHORT CombinedApcDisable
; // 0x70
2121 KTIMER Timer
; // 0x78
2122 KWAIT_BLOCK WaitBlock
[4]; // 0xa0
2123 LIST_ENTRY QueueListEntry
; // 0x100
2124 UCHAR ApcStateIndex
; // 0x108
2125 BOOLEAN ApcQueueable
; // 0x109
2126 BOOLEAN Preempted
; // 0x10a
2127 BOOLEAN ProcessReadyQueue
; // 0x10b
2128 BOOLEAN KernelStackResident
; // 0x10c
2129 CHAR Saturation
; // 0x10d
2130 UCHAR IdealProcessor
; // 0x10e
2131 UCHAR NextProcessor
; // 0x10f
2132 CHAR BasePriority
; // 0x110
2133 UCHAR Spare4
; // 0x111
2134 CHAR PriorityDecrement
; // 0x112
2135 CHAR Quantum
; // 0x113
2136 BOOLEAN SystemAffinityActive
; // 0x114
2137 CHAR PreviousMode
; // 0x115
2138 UCHAR ResourceIndex
; // 0x116
2139 BOOLEAN DisableBoost
; // 0x117
2140 ULONG UserAffinity
; // 0x118
2141 PKPROCESS Process
; // 0x11c
2142 ULONG Affinity
; // 0x120
2143 PSERVICE_DESCRIPTOR_TABLE ServiceTable
; // 0x124
2144 PKAPC_STATE ApcStatePointer
[2]; // 0x128
2145 KAPC_STATE SavedApcState
; // 0x130
2146 PVOID CallbackStack
; // 0x148
2147 PVOID Win32Thread
; // 0x14c
2148 PKTRAP_FRAME TrapFrame
; // 0x150
2149 ULONG KernelTime
; // 0x154
2150 ULONG UserTime
; // 0x158
2151 PVOID StackBase
; // 0x15c
2152 KAPC SuspendApc
; // 0x160
2153 KSEMAPHORE SuspendSemaphore
; // 0x190
2154 PVOID TlsArray
; // 0x1a4
2155 PVOID LegoData
; // 0x1a8
2156 LIST_ENTRY ThreadListEntry
; // 0x1ac
2157 BOOLEAN LargeStack
; // 0x1b4
2158 UCHAR PowerState
; // 0x1b5
2159 UCHAR NpxIrql
; // 0x1b6
2160 UCHAR Spare5
; // 0x1b7
2161 BOOLEAN AutoAlignment
; // 0x1b8
2162 UCHAR Iopl
; // 0x1b9
2163 CHAR FreezeCount
; // 0x1ba
2164 CHAR SuspendCount
; // 0x1bb
2165 UCHAR Spare0
[1]; // 0x1bc
2166 UCHAR UserIdealProcessor
; // 0x1bd
2167 UCHAR DeferredProcessor
; // 0x1be
2168 UCHAR AdjustReason
; // 0x1bf
2169 CHAR AdjustIncrement
; // 0x1c0
2170 UCHAR Spare2
[3]; // 0x1c1
2171 } KTHREAD
, *PKTHREAD
;
2173 #elif (VER_PRODUCTBUILD >= 2600)
2175 typedef struct _KTHREAD
{
2176 DISPATCHER_HEADER Header
;
2177 LIST_ENTRY MutantListHead
;
2183 BOOLEAN DebugActive
;
2190 KAPC_STATE ApcState
;
2191 ULONG ContextSwitches
;
2192 UCHAR IdleSwapBlock
;
2194 NTSTATUS WaitStatus
;
2199 PKWAIT_BLOCK WaitBlockList
;
2201 LIST_ENTRY WaitListEntry
;
2202 SINGLE_LIST_ENTRY SwapListEntry
;
2206 UCHAR DecrementCount
;
2207 CHAR PriorityDecrement
;
2209 KWAIT_BLOCK WaitBlock
[4];
2211 ULONG KernelApcDisable
;
2213 BOOLEAN SystemAffinityActive
;
2217 PSERVICE_DESCRIPTOR_TABLE ServiceTable
;
2219 KSPIN_LOCK ApcQueueLock
;
2221 LIST_ENTRY QueueListEntry
;
2225 BOOLEAN ProcessReadyQueue
;
2226 BOOLEAN KernelStackResident
;
2227 UCHAR NextProcessor
;
2228 PVOID CallbackStack
;
2230 PKTRAP_FRAME TrapFrame
;
2231 PKAPC_STATE ApcStatePointer
[2];
2233 BOOLEAN EnableStackSwap
;
2235 UCHAR ResourceIndex
;
2238 KAPC_STATE SavedApcState
;
2240 UCHAR ApcStateIndex
;
2241 BOOLEAN ApcQueueable
;
2242 BOOLEAN AutoAlignment
;
2245 KSEMAPHORE SuspendSemaphore
;
2246 LIST_ENTRY ThreadListEntry
;
2249 UCHAR IdealProcessor
;
2250 BOOLEAN DisableBoost
;
2251 } KTHREAD
, *PKTHREAD
;
2255 typedef struct _KTHREAD
{
2256 DISPATCHER_HEADER Header
;
2257 LIST_ENTRY MutantListHead
;
2263 BOOLEAN DebugActive
;
2270 KAPC_STATE ApcState
;
2271 ULONG ContextSwitches
;
2272 NTSTATUS WaitStatus
;
2277 PKWAIT_BLOCK WaitBlockList
;
2278 LIST_ENTRY WaitListEntry
;
2281 UCHAR DecrementCount
;
2282 UCHAR PriorityDecrement
;
2284 KWAIT_BLOCK WaitBlock
[4];
2286 ULONG KernelApcDisable
;
2288 BOOLEAN SystemAffinityActive
;
2289 #if (VER_PRODUCTBUILD < 2195)
2291 #else // (VER_PRODUCTBUILD >= 2195)
2295 #endif // (VER_PRODUCTBUILD >= 2195)
2296 PSERVICE_DESCRIPTOR_TABLE ServiceDescriptorTable
;
2298 KSPIN_LOCK ApcQueueLock
;
2300 LIST_ENTRY QueueListEntry
;
2303 BOOLEAN ProcessReadyQueue
;
2304 BOOLEAN KernelStackResident
;
2305 UCHAR NextProcessor
;
2306 PVOID CallbackStack
;
2308 PKTRAP_FRAME TrapFrame
;
2309 PKAPC_STATE ApcStatePointer
[2];
2310 #if (VER_PRODUCTBUILD >= 2195)
2312 #endif // (VER_PRODUCTBUILD >= 2195)
2313 BOOLEAN EnableStackSwap
;
2315 UCHAR ResourceIndex
;
2316 #if (VER_PRODUCTBUILD < 2195)
2318 #endif // (VER_PRODUCTBUILD < 2195)
2321 KAPC_STATE SavedApcState
;
2323 UCHAR ApcStateIndex
;
2324 BOOLEAN ApcQueueable
;
2325 BOOLEAN AutoAlignment
;
2328 KSEMAPHORE SuspendSemaphore
;
2329 LIST_ENTRY ThreadListEntry
;
2332 UCHAR IdealProcessor
;
2333 BOOLEAN DisableBoost
;
2334 } KTHREAD
, *PKTHREAD
;
2338 #if (VER_PRODUCTBUILD >= 3790)
2340 typedef struct _MMSUPPORT_FLAGS
{
2341 ULONG SessionSpace
: 1;
2342 ULONG BeingTrimmed
: 1;
2343 ULONG SessionLeader
: 1;
2345 ULONG MaximumWorkingSetHard
: 1;
2346 ULONG ForceTrim
: 1;
2347 ULONG MinimumWorkingSetHard
: 1;
2348 ULONG Available0
: 1;
2349 ULONG MemoryPriority
: 8;
2350 ULONG GrowWsleHash
: 1;
2351 ULONG AcquiredUnsafe
: 1;
2352 ULONG Available
: 14;
2353 } MMSUPPORT_FLAGS
, *PMMSUPPORT_FLAGS
;
2355 #elif (VER_PRODUCTBUILD >= 2600)
2357 typedef struct _MMSUPPORT_FLAGS
{
2358 ULONG SessionSpace
: 1;
2359 ULONG BeingTrimmed
: 1;
2360 ULONG SessionLeader
: 1;
2362 ULONG WorkingSetHard
: 1;
2363 ULONG AddressSpaceBeingDeleted
: 1;
2364 ULONG Available
: 10;
2365 ULONG AllowWorkingSetAdjustment
: 8;
2366 ULONG MemoryPriority
: 8;
2367 } MMSUPPORT_FLAGS
, *PMMSUPPORT_FLAGS
;
2371 typedef struct _MMSUPPORT_FLAGS
{
2372 ULONG SessionSpace
: 1;
2373 ULONG BeingTrimmed
: 1;
2374 ULONG ProcessInSession
: 1;
2375 ULONG SessionLeader
: 1;
2377 ULONG WorkingSetHard
: 1;
2378 ULONG WriteWatch
: 1;
2380 } MMSUPPORT_FLAGS
, *PMMSUPPORT_FLAGS
;
2384 #if (VER_PRODUCTBUILD >= 3790)
2386 typedef struct _KGUARDED_MUTEX {
2388 PKTHREAD Owner; // 0x4
2389 ULONG Contention; // 0x8
2390 KEVENT Event; // 0xc
2393 USHORT KernelApcDisable; // 0x1c
2394 USHORT SpecialApcDisable; // 0x1e
2396 USHORT CombinedApcDisable; // 0x1c
2398 } KGUARDED_MUTEX, *PKGUARDED_MUTEX;
2400 typedef struct _MMSUPPORT
{
2401 LIST_ENTRY WorkingSetExpansionLinks
;
2402 LARGE_INTEGER LastTrimTime
; // 0x8
2403 MMSUPPORT_FLAGS Flags
; // 0x10
2404 ULONG PageFaultCount
; // 0x14
2405 ULONG PeakWorkingSetSize
; // 0x18
2406 ULONG GrowthSinceLastEstimate
; // 0x1c
2407 ULONG MinimumWorkingSetSize
; // 0x20
2408 ULONG MaximumWorkingSetSize
; // 0x24
2409 PMMWSL VmWorkingSetList
; // 0x28
2410 ULONG Claim
; // 0x2c
2411 ULONG NextEstimationSlot
; // 0x30
2412 ULONG NextAgingSlot
; // 0x34
2413 ULONG EstimatedAvailable
; // 0x38
2414 ULONG WorkingSetSize
; //0x3c
2415 KGUARDED_MUTEX Mutex
; // 0x40
2416 } MMSUPPORT
, *PMMSUPPORT
;
2418 #elif (VER_PRODUCTBUILD >= 2600)
2420 typedef struct _MMSUPPORT
{
2421 LARGE_INTEGER LastTrimTime
;
2422 MMSUPPORT_FLAGS Flags
;
2423 ULONG PageFaultCount
;
2424 ULONG PeakWorkingSetSize
;
2425 ULONG WorkingSetSize
;
2426 ULONG MinimumWorkingSetSize
;
2427 ULONG MaximumWorkingSetSize
;
2428 PMMWSL VmWorkingSetList
;
2429 LIST_ENTRY WorkingSetExpansionLinks
;
2431 ULONG NextEstimationSlot
;
2432 ULONG NextAgingSlot
;
2433 ULONG EstimatedAvailable
;
2434 ULONG GrowthSinceLastEstimate
;
2435 } MMSUPPORT
, *PMMSUPPORT
;
2439 typedef struct _MMSUPPORT
{
2440 LARGE_INTEGER LastTrimTime
;
2441 ULONG LastTrimFaultCount
;
2442 ULONG PageFaultCount
;
2443 ULONG PeakWorkingSetSize
;
2444 ULONG WorkingSetSize
;
2445 ULONG MinimumWorkingSetSize
;
2446 ULONG MaximumWorkingSetSize
;
2447 PMMWSL VmWorkingSetList
;
2448 LIST_ENTRY WorkingSetExpansionLinks
;
2449 BOOLEAN AllowWorkingSetAdjustment
;
2450 BOOLEAN AddressSpaceBeingDeleted
;
2451 UCHAR ForegroundSwitchCount
;
2452 UCHAR MemoryPriority
;
2453 #if (VER_PRODUCTBUILD >= 2195)
2456 MMSUPPORT_FLAGS Flags
;
2459 ULONG NextEstimationSlot
;
2460 ULONG NextAgingSlot
;
2461 ULONG EstimatedAvailable
;
2462 ULONG GrowthSinceLastEstimate
;
2463 #endif // (VER_PRODUCTBUILD >= 2195)
2464 } MMSUPPORT
, *PMMSUPPORT
;
2468 typedef struct _SE_AUDIT_PROCESS_CREATION_INFO
{
2469 POBJECT_NAME_INFORMATION ImageFileName
;
2470 } SE_AUDIT_PROCESS_CREATION_INFO
, *PSE_AUDIT_PROCESS_CREATION_INFO
;
2472 typedef struct _SID_IDENTIFIER_AUTHORITY
{
2474 } SID_IDENTIFIER_AUTHORITY
, *PSID_IDENTIFIER_AUTHORITY
;
2476 typedef struct _SID
{
2478 UCHAR SubAuthorityCount
;
2479 SID_IDENTIFIER_AUTHORITY IdentifierAuthority
;
2480 ULONG SubAuthority
[1];
2483 typedef struct _BITMAP_DESCRIPTOR
{
2485 ULONGLONG ClustersToEndOfVol
;
2487 } BITMAP_DESCRIPTOR
, *PBITMAP_DESCRIPTOR
;
2489 typedef struct _BITMAP_RANGE
{
2491 LARGE_INTEGER BasePage
;
2492 ULONG FirstDirtyPage
;
2493 ULONG LastDirtyPage
;
2496 } BITMAP_RANGE
, *PBITMAP_RANGE
;
2498 typedef struct _CACHE_UNINITIALIZE_EVENT
{
2499 struct _CACHE_UNINITIALIZE_EVENT
*Next
;
2501 } CACHE_UNINITIALIZE_EVENT
, *PCACHE_UNINITIALIZE_EVENT
;
2503 typedef struct _CC_FILE_SIZES
{
2504 LARGE_INTEGER AllocationSize
;
2505 LARGE_INTEGER FileSize
;
2506 LARGE_INTEGER ValidDataLength
;
2507 } CC_FILE_SIZES
, *PCC_FILE_SIZES
;
2509 typedef struct _COMPRESSED_DATA_INFO
{
2510 USHORT CompressionFormatAndEngine
;
2511 UCHAR CompressionUnitShift
;
2515 USHORT NumberOfChunks
;
2516 ULONG CompressedChunkSizes
[ANYSIZE_ARRAY
];
2517 } COMPRESSED_DATA_INFO
, *PCOMPRESSED_DATA_INFO
;
2519 typedef struct _DEVICE_MAP
{
2520 POBJECT_DIRECTORY DosDevicesDirectory
;
2521 POBJECT_DIRECTORY GlobalDosDevicesDirectory
;
2522 ULONG ReferenceCount
;
2524 UCHAR DriveType
[32];
2525 } DEVICE_MAP
, *PDEVICE_MAP
;
2527 typedef struct _DIRECTORY_BASIC_INFORMATION
{
2528 UNICODE_STRING ObjectName
;
2529 UNICODE_STRING ObjectTypeName
;
2530 } DIRECTORY_BASIC_INFORMATION
, *PDIRECTORY_BASIC_INFORMATION
;
2532 #if (VER_PRODUCTBUILD >= 2600)
2534 typedef struct _EX_FAST_REF
{
2540 } EX_FAST_REF
, *PEX_FAST_REF
;
2542 typedef struct _EX_PUSH_LOCK
{
2546 ULONG Exclusive
: 1;
2552 } EX_PUSH_LOCK
, *PEX_PUSH_LOCK
;
2554 #endif // (VER_PRODUCTBUILD >= 2600)
2556 #if (VER_PRODUCTBUILD == 2600)
2558 typedef struct _EX_RUNDOWN_REF
{
2563 } EX_RUNDOWN_REF
, *PEX_RUNDOWN_REF
;
2565 #endif // (VER_PRODUCTBUILD == 2600)
2567 #if (VER_PRODUCTBUILD >= 3790)
2569 typedef struct _MM_ADDRESS_NODE
{
2572 struct _MM_ADDRESS_NODE
*Parent
; // lower 2 bits of Parent are Balance and must be zeroed to obtain Parent
2574 struct _MM_ADDRESS_NODE
*LeftChild
;
2575 struct _MM_ADDRESS_NODE
*RightChild
;
2576 ULONG_PTR StartingVpn
;
2577 ULONG_PTR EndingVpn
;
2578 } MMADDRESS_NODE
, *PMMADDRESS_NODE
;
2580 typedef struct _MM_AVL_TABLE
{
2581 MMADDRESS_NODE BalancedRoot
; // Vadroot; incorrectly represents the NULL pages (EndingVpn should be 0xf, etc.)
2582 ULONG DepthOfTree
: 5; // 0x14
2584 ULONG NumberGenericTableElements
: 24; // total number of nodes
2585 PVOID NodeHint
; // 0x18 (0x270 in _EPROCESS)
2586 PVOID NodeFreeHint
; // 0x1c
2587 } MM_AVL_TABLE
, *PMM_AVL_TABLE
;
2589 typedef struct _EPROCESS
{
2590 KPROCESS Pcb
; // +0x000
2591 EX_PUSH_LOCK ProcessLock
; // +0x06c
2592 LARGE_INTEGER CreateTime
; // +0x070
2593 LARGE_INTEGER ExitTime
; // +0x078
2594 EX_RUNDOWN_REF RundownProtect
; // +0x080
2595 ULONG UniqueProcessId
; // +0x084
2596 LIST_ENTRY ActiveProcessLinks
; // +0x088
2597 ULONG QuotaUsage
[3]; // +0x090
2598 ULONG QuotaPeak
[3]; // +0x09c
2599 ULONG CommitCharge
; // +0x0a8
2600 ULONG PeakVirtualSize
; // +0x0ac
2601 ULONG VirtualSize
; // +0x0b0
2602 LIST_ENTRY SessionProcessLinks
; // +0x0b4
2603 PVOID DebugPort
; // +0x0bc
2604 PVOID ExceptionPort
; // +0x0c0
2605 PHANDLE_TABLE ObjectTable
; // +0x0c4
2606 EX_FAST_REF Token
; // +0x0c8
2607 ULONG WorkingSetPage
; // +0x0cc
2608 KGUARDED_MUTEX AddressCreationLock
; // +0x0d0
2609 ULONG HyperSpaceLock
; // +0x0f0
2610 PETHREAD ForkInProgress
; // +0x0f4
2611 ULONG HardwareTrigger
; // +0x0f8
2612 PMM_AVL_TABLE PhysicalVadRoot
; // +0x0fc
2613 PVOID CloneRoot
; // +0x100
2614 ULONG NumberOfPrivatePages
; // +0x104
2615 ULONG NumberOfLockedPages
; // +0x108
2616 PVOID Win32Process
; // +0x10c
2617 PEJOB Job
; // +0x110
2618 PVOID SectionObject
; // +0x114
2619 PVOID SectionBaseAddress
; // +0x118
2620 PEPROCESS_QUOTA_BLOCK QuotaBlock
; // +0x11c
2621 PPAGEFAULT_HISTORY WorkingSetWatch
; // +0x120
2622 PVOID Win32WindowStation
; // +0x124
2623 ULONG InheritedFromUniqueProcessId
; // +0x128
2624 PVOID LdtInformation
; // +0x12c
2625 PVOID VadFreeHint
; // +0x130
2626 PVOID VdmObjects
; // +0x134
2627 PVOID DeviceMap
; // +0x138
2628 PVOID Spare0
[3]; // +0x13c
2630 HARDWARE_PTE PageDirectoryPte
; // +0x148
2631 UINT64 Filler
; // +0x148
2633 PVOID Session
; // +0x150
2634 UCHAR ImageFileName
[16]; // +0x154
2635 LIST_ENTRY JobLinks
; // +0x164
2636 PVOID LockedPagesList
; // +0x16c
2637 LIST_ENTRY ThreadListHead
; // +0x170
2638 PVOID SecurityPort
; // +0x178
2639 PVOID PaeTop
; // +0x17c
2640 ULONG ActiveThreads
; // +0x180
2641 ULONG GrantedAccess
; // +0x184
2642 ULONG DefaultHardErrorProcessing
; // +0x188
2643 SHORT LastThreadExitStatus
; // +0x18c
2645 EX_FAST_REF PrefetchTrace
; // +0x194
2646 LARGE_INTEGER ReadOperationCount
; // +0x198
2647 LARGE_INTEGER WriteOperationCount
; // +0x1a0
2648 LARGE_INTEGER OtherOperationCount
; // +0x1a8
2649 LARGE_INTEGER ReadTransferCount
; // +0x1b0
2650 LARGE_INTEGER WriteTransferCount
; // +0x1b8
2651 LARGE_INTEGER OtherTransferCount
; // +0x1c0
2652 ULONG CommitChargeLimit
; // +0x1c8
2653 ULONG CommitChargePeak
; // +0x1cc
2654 PVOID AweInfo
; // +0x1d0
2655 SE_AUDIT_PROCESS_CREATION_INFO SeAuditProcessCreationInfo
; // +0x1d4
2656 MMSUPPORT Vm
; // +0x1d8
2657 LIST_ENTRY MmProcessLinks
; // +0x238
2658 ULONG ModifiedPageCount
; // +0x240
2659 ULONG JobStatus
; // +0x244
2661 ULONG Flags
; // 0x248
2663 ULONG CreateReported
: 1;
2664 ULONG NoDebugInherit
: 1;
2665 ULONG ProcessExiting
: 1;
2666 ULONG ProcessDelete
: 1;
2667 ULONG Wow64SplitPages
: 1;
2668 ULONG VmDeleted
: 1;
2669 ULONG OutswapEnabled
: 1;
2670 ULONG Outswapped
: 1;
2671 ULONG ForkFailed
: 1;
2672 ULONG Wow64VaSpace4Gb
: 1;
2673 ULONG AddressSpaceInitialized
: 2;
2674 ULONG SetTimerResolution
: 1;
2675 ULONG BreakOnTermination
: 1;
2676 ULONG SessionCreationUnderway
: 1;
2677 ULONG WriteWatch
: 1;
2678 ULONG ProcessInSession
: 1;
2679 ULONG OverrideAddressSpace
: 1;
2680 ULONG HasAddressSpace
: 1;
2681 ULONG LaunchPrefetched
: 1;
2682 ULONG InjectInpageErrors
: 1;
2683 ULONG VmTopDown
: 1;
2684 ULONG ImageNotifyDone
: 1;
2685 ULONG PdeUpdateNeeded
: 1;
2686 ULONG VdmAllowed
: 1;
2690 NTSTATUS ExitStatus
; // +0x24c
2691 USHORT NextPageColor
; // +0x250
2694 UCHAR SubSystemMinorVersion
; // +0x252
2695 UCHAR SubSystemMajorVersion
; // +0x253
2697 USHORT SubSystemVersion
; // +0x252
2699 UCHAR PriorityClass
; // +0x254
2700 MM_AVL_TABLE VadRoot
; // +0x258
2701 } EPROCESS
, *PEPROCESS
; // 0x278 in total
2703 #elif (VER_PRODUCTBUILD >= 2600)
2705 typedef struct _EPROCESS
{
2707 EX_PUSH_LOCK ProcessLock
;
2708 LARGE_INTEGER CreateTime
;
2709 LARGE_INTEGER ExitTime
;
2710 EX_RUNDOWN_REF RundownProtect
;
2711 ULONG UniqueProcessId
;
2712 LIST_ENTRY ActiveProcessLinks
;
2713 ULONG QuotaUsage
[3];
2716 ULONG PeakVirtualSize
;
2718 LIST_ENTRY SessionProcessLinks
;
2720 PVOID ExceptionPort
;
2721 PHANDLE_TABLE ObjectTable
;
2723 FAST_MUTEX WorkingSetLock
;
2724 ULONG WorkingSetPage
;
2725 FAST_MUTEX AddressCreationLock
;
2726 KSPIN_LOCK HyperSpaceLock
;
2727 PETHREAD ForkInProgress
;
2728 ULONG HardwareTrigger
;
2732 ULONG NumberOfPrivatePages
;
2733 ULONG NumberOfLockedPages
;
2736 PSECTION_OBJECT SectionObject
;
2737 PVOID SectionBaseAddress
;
2738 PEPROCESS_QUOTA_BLOCK QuotaBlock
;
2739 PPAGEFAULT_HISTORY WorkingSetWatch
;
2740 PVOID Win32WindowStation
;
2741 PVOID InheritedFromUniqueProcessId
;
2742 PVOID LdtInformation
;
2745 PDEVICE_MAP DeviceMap
;
2746 LIST_ENTRY PhysicalVadList
;
2748 HARDWARE_PTE PageDirectoryPte
;
2752 UCHAR ImageFileName
[16];
2753 LIST_ENTRY JobLinks
;
2754 PVOID LockedPageList
;
2755 LIST_ENTRY ThreadListHead
;
2758 ULONG ActiveThreads
;
2759 ULONG GrantedAccess
;
2760 ULONG DefaultHardErrorProcessing
;
2761 NTSTATUS LastThreadExitStatus
;
2763 EX_FAST_REF PrefetchTrace
;
2764 LARGE_INTEGER ReadOperationCount
;
2765 LARGE_INTEGER WriteOperationCount
;
2766 LARGE_INTEGER OtherOperationCount
;
2767 LARGE_INTEGER ReadTransferCount
;
2768 LARGE_INTEGER WriteTransferCount
;
2769 LARGE_INTEGER OtherTransferCount
;
2770 ULONG CommitChargeLimit
;
2771 ULONG CommitChargePeek
;
2773 SE_AUDIT_PROCESS_CREATION_INFO SeAuditProcessCreationInfo
;
2775 ULONG LastFaultCount
;
2776 ULONG ModifiedPageCount
;
2782 ULONG CreateReported
: 1;
2783 ULONG NoDebugInherit
: 1;
2784 ULONG ProcessExiting
: 1;
2785 ULONG ProcessDelete
: 1;
2786 ULONG Wow64SplitPages
: 1;
2787 ULONG VmDeleted
: 1;
2788 ULONG OutswapEnabled
: 1;
2789 ULONG Outswapped
: 1;
2790 ULONG ForkFailed
: 1;
2791 ULONG HasPhysicalVad
: 1;
2792 ULONG AddressSpaceInitialized
: 2;
2793 ULONG SetTimerResolution
: 1;
2794 ULONG BreakOnTermination
: 1;
2795 ULONG SessionCreationUnderway
: 1;
2796 ULONG WriteWatch
: 1;
2797 ULONG ProcessInSession
: 1;
2798 ULONG OverrideAddressSpace
: 1;
2799 ULONG HasAddressSpace
: 1;
2800 ULONG LaunchPrefetched
: 1;
2801 ULONG InjectInpageErrors
: 1;
2805 NTSTATUS ExitStatus
;
2806 USHORT NextPageColor
;
2809 UCHAR SubSystemMinorVersion
;
2810 UCHAR SubSystemMajorVersion
;
2812 USHORT SubSystemVersion
;
2814 UCHAR PriorityClass
;
2815 BOOLEAN WorkingSetAcquiredUnsafe
;
2816 } EPROCESS
, *PEPROCESS
;
2820 typedef struct _EPROCESS
{
2822 NTSTATUS ExitStatus
;
2825 LARGE_INTEGER CreateTime
;
2826 LARGE_INTEGER ExitTime
;
2828 ULONG UniqueProcessId
;
2829 LIST_ENTRY ActiveProcessLinks
;
2830 ULONGLONG QuotaPeakPoolUsage
;
2831 ULONGLONG QuotaPoolUsage
;
2832 ULONG PagefileUsage
;
2834 ULONG PeakPagefileUsage
;
2835 ULONG PeakVirtualSize
;
2836 ULONGLONG VirtualSize
;
2838 #if (VER_PRODUCTBUILD < 2195)
2839 ULONG LastProtoPteFault
;
2840 #else // (VER_PRODUCTBUILD >= 2195)
2841 LIST_ENTRY SessionProcessLinks
;
2842 #endif // (VER_PRODUCTBUILD >= 2195)
2844 ULONG ExceptionPort
;
2845 PHANDLE_TABLE ObjectTable
;
2846 PACCESS_TOKEN Token
;
2847 FAST_MUTEX WorkingSetLock
;
2848 ULONG WorkingSetPage
;
2849 BOOLEAN ProcessOutswapEnabled
;
2850 BOOLEAN ProcessOutswapped
;
2851 BOOLEAN AddressSpaceInitialized
;
2852 BOOLEAN AddressSpaceDeleted
;
2853 FAST_MUTEX AddressCreationLock
;
2854 KSPIN_LOCK HyperSpaceLock
;
2855 PETHREAD ForkInProgress
;
2857 BOOLEAN ForkWasSuccessful
;
2858 UCHAR MmAgressiveWsTrimMask
;
2859 PKEVENT VmOperationEvent
;
2860 #if (VER_PRODUCTBUILD < 2195)
2861 HARDWARE_PTE PageDirectoryPte
;
2862 #else // (VER_PRODUCTBUILD >= 2195)
2864 #endif // (VER_PRODUCTBUILD >= 2195)
2865 ULONG LastFaultCount
;
2866 ULONG ModifiedPageCount
;
2870 ULONG NumberOfPrivatePages
;
2871 ULONG NumberOfLockedPages
;
2872 USHORT NextPageColor
;
2873 BOOLEAN ExitProcessCalled
;
2874 BOOLEAN CreateProcessReported
;
2875 HANDLE SectionHandle
;
2877 PVOID SectionBaseAddress
;
2878 PEPROCESS_QUOTA_BLOCK QuotaBlock
;
2879 NTSTATUS LastThreadExitStatus
;
2880 PPROCESS_WS_WATCH_INFORMATION WorkingSetWatch
;
2881 HANDLE Win32WindowStation
;
2882 HANDLE InheritedFromUniqueProcessId
;
2883 ACCESS_MASK GrantedAccess
;
2884 ULONG DefaultHardErrorProcessing
;
2885 PVOID LdtInformation
;
2888 #if (VER_PRODUCTBUILD < 2195)
2889 KMUTANT ProcessMutant
;
2890 #else // (VER_PRODUCTBUILD >= 2195)
2891 PDEVICE_MAP DeviceMap
;
2893 LIST_ENTRY PhysicalVadList
;
2894 HARDWARE_PTE PageDirectoryPte
;
2896 ULONG PaePageDirectoryPage
;
2897 #endif // (VER_PRODUCTBUILD >= 2195)
2898 UCHAR ImageFileName
[16];
2899 ULONG VmTrimFaultValue
;
2900 UCHAR SetTimerResolution
;
2901 UCHAR PriorityClass
;
2904 UCHAR SubSystemMinorVersion
;
2905 UCHAR SubSystemMajorVersion
;
2907 USHORT SubSystemVersion
;
2910 #if (VER_PRODUCTBUILD >= 2195)
2913 LIST_ENTRY JobLinks
;
2914 PVOID LockedPageList
;
2916 PWOW64_PROCESS Wow64Process
;
2917 LARGE_INTEGER ReadOperationCount
;
2918 LARGE_INTEGER WriteOperationCount
;
2919 LARGE_INTEGER OtherOperationCount
;
2920 LARGE_INTEGER ReadTransferCount
;
2921 LARGE_INTEGER WriteTransferCount
;
2922 LARGE_INTEGER OtherTransferCount
;
2923 ULONG CommitChargeLimit
;
2924 ULONG CommitChargePeek
;
2925 LIST_ENTRY ThreadListHead
;
2926 PRTL_BITMAP VadPhysicalPagesBitMap
;
2927 ULONG VadPhysicalPages
;
2929 #endif // (VER_PRODUCTBUILD >= 2195)
2930 } EPROCESS
, *PEPROCESS
;
2934 #if (VER_PRODUCTBUILD >= 2600)
2936 typedef struct _ETHREAD
{
2939 LARGE_INTEGER CreateTime
;
2941 ULONG NestedFaultCount
: 2;
2942 ULONG ApcNeeded
: 1;
2946 LARGE_INTEGER ExitTime
;
2947 LIST_ENTRY LpcReplyChain
;
2948 LIST_ENTRY KeyedWaitChain
;
2951 NTSTATUS ExitStatus
;
2954 LIST_ENTRY PostBlockList
;
2956 PTERMINATION_PORT TerminationPort
;
2957 PETHREAD ReaperLink
;
2958 PVOID KeyedWaitValue
;
2960 KSPIN_LOCK ActiveTimerListLock
;
2961 LIST_ENTRY ActiveTimerListHead
;
2964 KSEMAPHORE LpcReplySemaphore
;
2965 KSEMAPHORE KeyedWaitSemaphore
;
2968 PLPC_MESSAGE LpcReplyMessage
;
2969 PVOID LpcWaitingOnPort
;
2971 PPS_IMPERSONATION_INFORMATION ImpersonationInfo
;
2974 PDEVICE_OBJECT DeviceToVerify
;
2975 PEPROCESS ThreadsProcess
;
2976 PKSTART_ROUTINE StartAddress
;
2978 PVOID Win32StartAddress
;
2979 ULONG LpcReceivedMessageId
;
2981 LIST_ENTRY ThreadListEntry
;
2982 EX_RUNDOWN_REF RundownProtect
;
2983 EX_PUSH_LOCK ThreadLock
;
2984 ULONG LpcReplyMessageId
;
2985 ULONG ReadClusterSize
;
2986 ACCESS_MASK GrantedAccess
;
2988 ULONG CrossThreadFlags
;
2990 ULONG Terminated
: 1;
2991 ULONG DeadThread
: 1;
2992 ULONG HideFromDebugger
: 1;
2993 ULONG ActiveImpersonationInfo
: 1;
2994 ULONG SystemThread
: 1;
2995 ULONG HardErrorsAreDisabled
: 1;
2996 ULONG BreakOnTermination
: 1;
2997 ULONG SkipCreationMsg
: 1;
2998 ULONG SkipTerminationMsg
: 1;
3002 ULONG SameThreadPassiveFlags
;
3004 ULONG ActiveExWorker
: 1;
3005 ULONG ExWorkerCanWaitUser
: 1;
3006 ULONG MemoryMaker
: 1;
3007 ULONG KeyedEventInUse
: 1;
3011 ULONG SameThreadApcFlags
;
3013 BOOLEAN LpcReceivedMsgIdValid
: 1;
3014 BOOLEAN LpcExitThreadCalled
: 1;
3015 BOOLEAN AddressSpaceOwner
: 1;
3018 BOOLEAN ForwardClusterOnly
;
3019 BOOLEAN DisablePageFaultClustering
;
3020 } ETHREAD
, *PETHREAD
;
3024 typedef struct _ETHREAD
{
3026 LARGE_INTEGER CreateTime
;
3028 LARGE_INTEGER ExitTime
;
3029 LIST_ENTRY LpcReplyChain
;
3032 NTSTATUS ExitStatus
;
3035 LIST_ENTRY PostBlockList
;
3036 LIST_ENTRY TerminationPortList
;
3037 KSPIN_LOCK ActiveTimerListLock
;
3038 LIST_ENTRY ActiveTimerListHead
;
3040 KSEMAPHORE LpcReplySemaphore
;
3041 PLPC_MESSAGE LpcReplyMessage
;
3042 ULONG LpcReplyMessageId
;
3043 ULONG PerformanceCountLow
;
3044 PPS_IMPERSONATION_INFORMATION ImpersonationInfo
;
3047 PDEVICE_OBJECT DeviceToVerify
;
3048 ULONG ReadClusterSize
;
3049 BOOLEAN ForwardClusterOnly
;
3050 BOOLEAN DisablePageFaultClustering
;
3052 #if (VER_PRODUCTBUILD >= 2195)
3053 BOOLEAN HideFromDebugger
;
3054 #endif // (VER_PRODUCTBUILD >= 2195)
3055 #if (VER_PRODUCTBUILD < 2195)
3056 BOOLEAN HasTerminated
;
3057 #else // (VER_PRODUCTBUILD >= 2195)
3058 ULONG HasTerminated
;
3059 #endif // (VER_PRODUCTBUILD >= 2195)
3060 #if (VER_PRODUCTBUILD < 2195)
3061 PKEVENT_PAIR EventPair
;
3062 #endif // (VER_PRODUCTBUILD < 2195)
3063 ACCESS_MASK GrantedAccess
;
3064 PEPROCESS ThreadsProcess
;
3065 PKSTART_ROUTINE StartAddress
;
3067 PVOID Win32StartAddress
;
3068 ULONG LpcReceivedMessageId
;
3070 BOOLEAN LpcExitThreadCalled
;
3071 BOOLEAN HardErrorsAreDisabled
;
3072 BOOLEAN LpcReceivedMsgIdValid
;
3073 BOOLEAN ActiveImpersonationInfo
;
3074 ULONG PerformanceCountHigh
;
3075 #if (VER_PRODUCTBUILD >= 2195)
3076 LIST_ENTRY ThreadListEntry
;
3077 #endif // (VER_PRODUCTBUILD >= 2195)
3078 } ETHREAD
, *PETHREAD
;
3082 typedef struct _EPROCESS_QUOTA_ENTRY
{
3087 } EPROCESS_QUOTA_ENTRY
, *PEPROCESS_QUOTA_ENTRY
;
3089 typedef struct _EPROCESS_QUOTA_BLOCK
{
3090 EPROCESS_QUOTA_ENTRY QuotaEntry
[3];
3091 LIST_ENTRY QuotaList
;
3092 ULONG ReferenceCount
;
3094 } EPROCESS_QUOTA_BLOCK
, *PEPROCESS_QUOTA_BLOCK
;
3096 typedef struct _EXCEPTION_REGISTRATION_RECORD
{
3097 struct _EXCEPTION_REGISTRATION_RECORD
*Next
;
3099 } EXCEPTION_REGISTRATION_RECORD
, *PEXCEPTION_REGISTRATION_RECORD
;
3102 * When needing these parameters cast your PIO_STACK_LOCATION to
3103 * PEXTENDED_IO_STACK_LOCATION
3105 #if !defined(_ALPHA_) && !defined(_AMD64_) && !defined(_IA64_)
3106 #include <pshpack4.h>
3108 typedef struct _EXTENDED_IO_STACK_LOCATION
{
3110 /* Included for padding */
3111 UCHAR MajorFunction
;
3112 UCHAR MinorFunction
;
3119 PIO_SECURITY_CONTEXT SecurityContext
;
3123 PMAILSLOT_CREATE_PARAMETERS Parameters
;
3127 PIO_SECURITY_CONTEXT SecurityContext
;
3131 PNAMED_PIPE_CREATE_PARAMETERS Parameters
;
3135 ULONG OutputBufferLength
;
3136 ULONG InputBufferLength
;
3137 ULONG FsControlCode
;
3138 PVOID Type3InputBuffer
;
3139 } FileSystemControl
;
3142 PLARGE_INTEGER Length
;
3144 LARGE_INTEGER ByteOffset
;
3149 ULONG CompletionFilter
;
3154 PUNICODE_STRING FileName
;
3155 FILE_INFORMATION_CLASS FileInformationClass
;
3169 PFILE_GET_QUOTA_INFORMATION SidList
;
3170 ULONG SidListLength
;
3183 FS_INFORMATION_CLASS FsInformationClass
;
3188 } EXTENDED_IO_STACK_LOCATION
, *PEXTENDED_IO_STACK_LOCATION
;
3189 #if !defined(_ALPHA_) && !defined(_AMD64_) && !defined(_IA64_)
3190 #include <poppack.h>
3193 typedef struct _FILE_ACCESS_INFORMATION
{
3194 ACCESS_MASK AccessFlags
;
3195 } FILE_ACCESS_INFORMATION
, *PFILE_ACCESS_INFORMATION
;
3197 typedef struct _FILE_ALLOCATION_INFORMATION
{
3198 LARGE_INTEGER AllocationSize
;
3199 } FILE_ALLOCATION_INFORMATION
, *PFILE_ALLOCATION_INFORMATION
;
3201 typedef struct _FILE_BOTH_DIR_INFORMATION
{
3202 ULONG NextEntryOffset
;
3204 LARGE_INTEGER CreationTime
;
3205 LARGE_INTEGER LastAccessTime
;
3206 LARGE_INTEGER LastWriteTime
;
3207 LARGE_INTEGER ChangeTime
;
3208 LARGE_INTEGER EndOfFile
;
3209 LARGE_INTEGER AllocationSize
;
3210 ULONG FileAttributes
;
3211 ULONG FileNameLength
;
3213 CCHAR ShortNameLength
;
3214 WCHAR ShortName
[12];
3216 } FILE_BOTH_DIR_INFORMATION
, *PFILE_BOTH_DIR_INFORMATION
;
3218 typedef struct _FILE_COMPLETION_INFORMATION
{
3221 } FILE_COMPLETION_INFORMATION
, *PFILE_COMPLETION_INFORMATION
;
3223 typedef struct _FILE_COMPRESSION_INFORMATION
{
3224 LARGE_INTEGER CompressedFileSize
;
3225 USHORT CompressionFormat
;
3226 UCHAR CompressionUnitShift
;
3230 } FILE_COMPRESSION_INFORMATION
, *PFILE_COMPRESSION_INFORMATION
;
3232 typedef struct _FILE_COPY_ON_WRITE_INFORMATION
{
3233 BOOLEAN ReplaceIfExists
;
3234 HANDLE RootDirectory
;
3235 ULONG FileNameLength
;
3237 } FILE_COPY_ON_WRITE_INFORMATION
, *PFILE_COPY_ON_WRITE_INFORMATION
;
3239 typedef struct _FILE_DIRECTORY_INFORMATION
{
3240 ULONG NextEntryOffset
;
3242 LARGE_INTEGER CreationTime
;
3243 LARGE_INTEGER LastAccessTime
;
3244 LARGE_INTEGER LastWriteTime
;
3245 LARGE_INTEGER ChangeTime
;
3246 LARGE_INTEGER EndOfFile
;
3247 LARGE_INTEGER AllocationSize
;
3248 ULONG FileAttributes
;
3249 ULONG FileNameLength
;
3251 } FILE_DIRECTORY_INFORMATION
, *PFILE_DIRECTORY_INFORMATION
;
3253 typedef struct _FILE_EA_INFORMATION
{
3255 } FILE_EA_INFORMATION
, *PFILE_EA_INFORMATION
;
3257 typedef struct _FILE_FS_ATTRIBUTE_INFORMATION
{
3258 ULONG FileSystemAttributes
;
3259 ULONG MaximumComponentNameLength
;
3260 ULONG FileSystemNameLength
;
3261 WCHAR FileSystemName
[1];
3262 } FILE_FS_ATTRIBUTE_INFORMATION
, *PFILE_FS_ATTRIBUTE_INFORMATION
;
3264 typedef struct _FILE_FS_CONTROL_INFORMATION
{
3265 LARGE_INTEGER FreeSpaceStartFiltering
;
3266 LARGE_INTEGER FreeSpaceThreshold
;
3267 LARGE_INTEGER FreeSpaceStopFiltering
;
3268 LARGE_INTEGER DefaultQuotaThreshold
;
3269 LARGE_INTEGER DefaultQuotaLimit
;
3270 ULONG FileSystemControlFlags
;
3271 } FILE_FS_CONTROL_INFORMATION
, *PFILE_FS_CONTROL_INFORMATION
;
3273 typedef struct _FILE_FS_FULL_SIZE_INFORMATION
{
3274 LARGE_INTEGER TotalAllocationUnits
;
3275 LARGE_INTEGER CallerAvailableAllocationUnits
;
3276 LARGE_INTEGER ActualAvailableAllocationUnits
;
3277 ULONG SectorsPerAllocationUnit
;
3278 ULONG BytesPerSector
;
3279 } FILE_FS_FULL_SIZE_INFORMATION
, *PFILE_FS_FULL_SIZE_INFORMATION
;
3281 typedef struct _FILE_FS_LABEL_INFORMATION
{
3282 ULONG VolumeLabelLength
;
3283 WCHAR VolumeLabel
[1];
3284 } FILE_FS_LABEL_INFORMATION
, *PFILE_FS_LABEL_INFORMATION
;
3286 #if (VER_PRODUCTBUILD >= 2195)
3288 typedef struct _FILE_FS_OBJECT_ID_INFORMATION
{
3290 UCHAR ExtendedInfo
[48];
3291 } FILE_FS_OBJECT_ID_INFORMATION
, *PFILE_FS_OBJECT_ID_INFORMATION
;
3293 #endif // (VER_PRODUCTBUILD >= 2195)
3295 typedef struct _FILE_FS_SIZE_INFORMATION
{
3296 LARGE_INTEGER TotalAllocationUnits
;
3297 LARGE_INTEGER AvailableAllocationUnits
;
3298 ULONG SectorsPerAllocationUnit
;
3299 ULONG BytesPerSector
;
3300 } FILE_FS_SIZE_INFORMATION
, *PFILE_FS_SIZE_INFORMATION
;
3302 typedef struct _FILE_FS_VOLUME_INFORMATION
{
3303 LARGE_INTEGER VolumeCreationTime
;
3304 ULONG VolumeSerialNumber
;
3305 ULONG VolumeLabelLength
;
3306 BOOLEAN SupportsObjects
;
3307 WCHAR VolumeLabel
[1];
3308 } FILE_FS_VOLUME_INFORMATION
, *PFILE_FS_VOLUME_INFORMATION
;
3310 typedef struct _FILE_FULL_DIR_INFORMATION
{
3311 ULONG NextEntryOffset
;
3313 LARGE_INTEGER CreationTime
;
3314 LARGE_INTEGER LastAccessTime
;
3315 LARGE_INTEGER LastWriteTime
;
3316 LARGE_INTEGER ChangeTime
;
3317 LARGE_INTEGER EndOfFile
;
3318 LARGE_INTEGER AllocationSize
;
3319 ULONG FileAttributes
;
3320 ULONG FileNameLength
;
3323 } FILE_FULL_DIR_INFORMATION
, *PFILE_FULL_DIR_INFORMATION
;
3325 typedef struct _FILE_GET_EA_INFORMATION
{
3326 ULONG NextEntryOffset
;
3329 } FILE_GET_EA_INFORMATION
, *PFILE_GET_EA_INFORMATION
;
3331 typedef struct _FILE_GET_QUOTA_INFORMATION
{
3332 ULONG NextEntryOffset
;
3335 } FILE_GET_QUOTA_INFORMATION
, *PFILE_GET_QUOTA_INFORMATION
;
3337 typedef struct _FILE_ID_BOTH_DIR_INFORMATION
{
3338 ULONG NextEntryOffset
;
3340 LARGE_INTEGER CreationTime
;
3341 LARGE_INTEGER LastAccessTime
;
3342 LARGE_INTEGER LastWriteTime
;
3343 LARGE_INTEGER ChangeTime
;
3344 LARGE_INTEGER EndOfFile
;
3345 LARGE_INTEGER AllocationSize
;
3346 ULONG FileAttributes
;
3347 ULONG FileNameLength
;
3349 CCHAR ShortNameLength
;
3350 WCHAR ShortName
[12];
3351 LARGE_INTEGER FileId
;
3353 } FILE_ID_BOTH_DIR_INFORMATION
, *PFILE_ID_BOTH_DIR_INFORMATION
;
3355 typedef struct _FILE_ID_FULL_DIR_INFORMATION
{
3356 ULONG NextEntryOffset
;
3358 LARGE_INTEGER CreationTime
;
3359 LARGE_INTEGER LastAccessTime
;
3360 LARGE_INTEGER LastWriteTime
;
3361 LARGE_INTEGER ChangeTime
;
3362 LARGE_INTEGER EndOfFile
;
3363 LARGE_INTEGER AllocationSize
;
3364 ULONG FileAttributes
;
3365 ULONG FileNameLength
;
3367 LARGE_INTEGER FileId
;
3369 } FILE_ID_FULL_DIR_INFORMATION
, *PFILE_ID_FULL_DIR_INFORMATION
;
3371 typedef struct _FILE_INTERNAL_INFORMATION
{
3372 LARGE_INTEGER IndexNumber
;
3373 } FILE_INTERNAL_INFORMATION
, *PFILE_INTERNAL_INFORMATION
;
3375 typedef struct _FILE_LINK_INFORMATION
{
3376 BOOLEAN ReplaceIfExists
;
3377 HANDLE RootDirectory
;
3378 ULONG FileNameLength
;
3380 } FILE_LINK_INFORMATION
, *PFILE_LINK_INFORMATION
;
3382 typedef struct _FILE_LOCK_INFO
{
3383 LARGE_INTEGER StartingByte
;
3384 LARGE_INTEGER Length
;
3385 BOOLEAN ExclusiveLock
;
3387 PFILE_OBJECT FileObject
;
3389 LARGE_INTEGER EndingByte
;
3390 } FILE_LOCK_INFO
, *PFILE_LOCK_INFO
;
3392 // raw internal file lock struct returned from FsRtlGetNextFileLock
3393 typedef struct _FILE_SHARED_LOCK_ENTRY
{
3396 FILE_LOCK_INFO FileLock
;
3397 } FILE_SHARED_LOCK_ENTRY
, *PFILE_SHARED_LOCK_ENTRY
;
3399 // raw internal file lock struct returned from FsRtlGetNextFileLock
3400 typedef struct _FILE_EXCLUSIVE_LOCK_ENTRY
{
3401 LIST_ENTRY ListEntry
;
3404 FILE_LOCK_INFO FileLock
;
3405 } FILE_EXCLUSIVE_LOCK_ENTRY
, *PFILE_EXCLUSIVE_LOCK_ENTRY
;
3407 typedef NTSTATUS (*PCOMPLETE_LOCK_IRP_ROUTINE
) (
3412 typedef VOID (*PUNLOCK_ROUTINE
) (
3414 IN PFILE_LOCK_INFO FileLockInfo
3417 typedef struct _FILE_LOCK
{
3418 PCOMPLETE_LOCK_IRP_ROUTINE CompleteLockIrpRoutine
;
3419 PUNLOCK_ROUTINE UnlockRoutine
;
3420 BOOLEAN FastIoIsQuestionable
;
3422 PVOID LockInformation
;
3423 FILE_LOCK_INFO LastReturnedLockInfo
;
3424 PVOID LastReturnedLock
;
3425 } FILE_LOCK
, *PFILE_LOCK
;
3427 typedef struct _FILE_MAILSLOT_PEEK_BUFFER
{
3428 ULONG ReadDataAvailable
;
3429 ULONG NumberOfMessages
;
3430 ULONG MessageLength
;
3431 } FILE_MAILSLOT_PEEK_BUFFER
, *PFILE_MAILSLOT_PEEK_BUFFER
;
3433 typedef struct _FILE_MAILSLOT_QUERY_INFORMATION
{
3434 ULONG MaximumMessageSize
;
3435 ULONG MailslotQuota
;
3436 ULONG NextMessageSize
;
3437 ULONG MessagesAvailable
;
3438 LARGE_INTEGER ReadTimeout
;
3439 } FILE_MAILSLOT_QUERY_INFORMATION
, *PFILE_MAILSLOT_QUERY_INFORMATION
;
3441 typedef struct _FILE_MAILSLOT_SET_INFORMATION
{
3442 PLARGE_INTEGER ReadTimeout
;
3443 } FILE_MAILSLOT_SET_INFORMATION
, *PFILE_MAILSLOT_SET_INFORMATION
;
3445 typedef struct _FILE_MODE_INFORMATION
{
3447 } FILE_MODE_INFORMATION
, *PFILE_MODE_INFORMATION
;
3449 // This structure is included in the Windows 2000 DDK but is missing in the
3450 // Windows NT 4.0 DDK
3451 #if (VER_PRODUCTBUILD < 2195)
3452 typedef struct _FILE_NAME_INFORMATION
{
3453 ULONG FileNameLength
;
3455 } FILE_NAME_INFORMATION
, *PFILE_NAME_INFORMATION
;
3456 #endif // (VER_PRODUCTBUILD < 2195)
3458 typedef struct _FILE_ALL_INFORMATION
{
3459 FILE_BASIC_INFORMATION BasicInformation
;
3460 FILE_STANDARD_INFORMATION StandardInformation
;
3461 FILE_INTERNAL_INFORMATION InternalInformation
;
3462 FILE_EA_INFORMATION EaInformation
;
3463 FILE_ACCESS_INFORMATION AccessInformation
;
3464 FILE_POSITION_INFORMATION PositionInformation
;
3465 FILE_MODE_INFORMATION ModeInformation
;
3466 FILE_ALIGNMENT_INFORMATION AlignmentInformation
;
3467 FILE_NAME_INFORMATION NameInformation
;
3468 } FILE_ALL_INFORMATION
, *PFILE_ALL_INFORMATION
;
3470 typedef struct _FILE_NAMES_INFORMATION
{
3471 ULONG NextEntryOffset
;
3473 ULONG FileNameLength
;
3475 } FILE_NAMES_INFORMATION
, *PFILE_NAMES_INFORMATION
;
3477 typedef struct _FILE_NOTIFY_INFORMATION
{
3478 ULONG NextEntryOffset
;
3480 ULONG FileNameLength
;
3482 } FILE_NOTIFY_INFORMATION
, *PFILE_NOTIFY_INFORMATION
;
3484 typedef struct _FILE_OBJECTID_INFORMATION
{
3485 LONGLONG FileReference
;
3489 UCHAR BirthVolumeId
[16];
3490 UCHAR BirthObjectId
[16];
3493 UCHAR ExtendedInfo
[48];
3495 } FILE_OBJECTID_INFORMATION
, *PFILE_OBJECTID_INFORMATION
;
3497 typedef struct _FILE_OLE_CLASSID_INFORMATION
{
3499 } FILE_OLE_CLASSID_INFORMATION
, *PFILE_OLE_CLASSID_INFORMATION
;
3501 typedef struct _FILE_OLE_ALL_INFORMATION
{
3502 FILE_BASIC_INFORMATION BasicInformation
;
3503 FILE_STANDARD_INFORMATION StandardInformation
;
3504 FILE_INTERNAL_INFORMATION InternalInformation
;
3505 FILE_EA_INFORMATION EaInformation
;
3506 FILE_ACCESS_INFORMATION AccessInformation
;
3507 FILE_POSITION_INFORMATION PositionInformation
;
3508 FILE_MODE_INFORMATION ModeInformation
;
3509 FILE_ALIGNMENT_INFORMATION AlignmentInformation
;
3512 LARGE_INTEGER SecurityChangeTime
;
3513 FILE_OLE_CLASSID_INFORMATION OleClassIdInformation
;
3514 FILE_OBJECTID_INFORMATION ObjectIdInformation
;
3515 FILE_STORAGE_TYPE StorageType
;
3518 ULONG NumberOfStreamReferences
;
3521 BOOLEAN ContentIndexDisable
;
3522 BOOLEAN InheritContentIndexDisable
;
3523 FILE_NAME_INFORMATION NameInformation
;
3524 } FILE_OLE_ALL_INFORMATION
, *PFILE_OLE_ALL_INFORMATION
;
3526 typedef struct _FILE_OLE_DIR_INFORMATION
{
3527 ULONG NextEntryOffset
;
3529 LARGE_INTEGER CreationTime
;
3530 LARGE_INTEGER LastAccessTime
;
3531 LARGE_INTEGER LastWriteTime
;
3532 LARGE_INTEGER ChangeTime
;
3533 LARGE_INTEGER EndOfFile
;
3534 LARGE_INTEGER AllocationSize
;
3535 ULONG FileAttributes
;
3536 ULONG FileNameLength
;
3537 FILE_STORAGE_TYPE StorageType
;
3540 BOOLEAN ContentIndexDisable
;
3541 BOOLEAN InheritContentIndexDisable
;
3543 } FILE_OLE_DIR_INFORMATION
, *PFILE_OLE_DIR_INFORMATION
;
3545 typedef struct _FILE_OLE_INFORMATION
{
3546 LARGE_INTEGER SecurityChangeTime
;
3547 FILE_OLE_CLASSID_INFORMATION OleClassIdInformation
;
3548 FILE_OBJECTID_INFORMATION ObjectIdInformation
;
3549 FILE_STORAGE_TYPE StorageType
;
3551 BOOLEAN ContentIndexDisable
;
3552 BOOLEAN InheritContentIndexDisable
;
3553 } FILE_OLE_INFORMATION
, *PFILE_OLE_INFORMATION
;
3555 typedef struct _FILE_OLE_STATE_BITS_INFORMATION
{
3557 ULONG StateBitsMask
;
3558 } FILE_OLE_STATE_BITS_INFORMATION
, *PFILE_OLE_STATE_BITS_INFORMATION
;
3560 typedef struct _FILE_PIPE_ASSIGN_EVENT_BUFFER
{
3563 } FILE_PIPE_ASSIGN_EVENT_BUFFER
, *PFILE_PIPE_ASSIGN_EVENT_BUFFER
;
3565 typedef struct _FILE_PIPE_CLIENT_PROCESS_BUFFER
{
3566 PVOID ClientSession
;
3567 PVOID ClientProcess
;
3568 } FILE_PIPE_CLIENT_PROCESS_BUFFER
, *PFILE_PIPE_CLIENT_PROCESS_BUFFER
;
3570 typedef struct _FILE_PIPE_EVENT_BUFFER
{
3571 ULONG NamedPipeState
;
3575 ULONG NumberRequests
;
3576 } FILE_PIPE_EVENT_BUFFER
, *PFILE_PIPE_EVENT_BUFFER
;
3578 typedef struct _FILE_PIPE_INFORMATION
{
3580 ULONG CompletionMode
;
3581 } FILE_PIPE_INFORMATION
, *PFILE_PIPE_INFORMATION
;
3583 typedef struct _FILE_PIPE_LOCAL_INFORMATION
{
3584 ULONG NamedPipeType
;
3585 ULONG NamedPipeConfiguration
;
3586 ULONG MaximumInstances
;
3587 ULONG CurrentInstances
;
3589 ULONG ReadDataAvailable
;
3590 ULONG OutboundQuota
;
3591 ULONG WriteQuotaAvailable
;
3592 ULONG NamedPipeState
;
3594 } FILE_PIPE_LOCAL_INFORMATION
, *PFILE_PIPE_LOCAL_INFORMATION
;
3596 typedef struct _FILE_PIPE_PEEK_BUFFER
{
3597 ULONG NamedPipeState
;
3598 ULONG ReadDataAvailable
;
3599 ULONG NumberOfMessages
;
3600 ULONG MessageLength
;
3602 } FILE_PIPE_PEEK_BUFFER
, *PFILE_PIPE_PEEK_BUFFER
;
3604 typedef struct _FILE_PIPE_REMOTE_INFORMATION
{
3605 LARGE_INTEGER CollectDataTime
;
3606 ULONG MaximumCollectionCount
;
3607 } FILE_PIPE_REMOTE_INFORMATION
, *PFILE_PIPE_REMOTE_INFORMATION
;
3609 typedef struct _FILE_PIPE_WAIT_FOR_BUFFER
{
3610 LARGE_INTEGER Timeout
;
3612 BOOLEAN TimeoutSpecified
;
3614 } FILE_PIPE_WAIT_FOR_BUFFER
, *PFILE_PIPE_WAIT_FOR_BUFFER
;
3616 typedef struct _FILE_QUOTA_INFORMATION
{
3617 ULONG NextEntryOffset
;
3619 LARGE_INTEGER ChangeTime
;
3620 LARGE_INTEGER QuotaUsed
;
3621 LARGE_INTEGER QuotaThreshold
;
3622 LARGE_INTEGER QuotaLimit
;
3624 } FILE_QUOTA_INFORMATION
, *PFILE_QUOTA_INFORMATION
;
3626 typedef struct _FILE_RENAME_INFORMATION
{
3627 BOOLEAN ReplaceIfExists
;
3628 HANDLE RootDirectory
;
3629 ULONG FileNameLength
;
3631 } FILE_RENAME_INFORMATION
, *PFILE_RENAME_INFORMATION
;
3633 typedef struct _FILE_STREAM_INFORMATION
{
3634 ULONG NextEntryOffset
;
3635 ULONG StreamNameLength
;
3636 LARGE_INTEGER StreamSize
;
3637 LARGE_INTEGER StreamAllocationSize
;
3638 WCHAR StreamName
[1];
3639 } FILE_STREAM_INFORMATION
, *PFILE_STREAM_INFORMATION
;
3641 typedef struct _FILE_TRACKING_INFORMATION
{
3642 HANDLE DestinationFile
;
3643 ULONG ObjectInformationLength
;
3644 CHAR ObjectInformation
[1];
3645 } FILE_TRACKING_INFORMATION
, *PFILE_TRACKING_INFORMATION
;
3647 typedef struct _FSRTL_COMMON_FCB_HEADER
{
3648 CSHORT NodeTypeCode
;
3649 CSHORT NodeByteSize
;
3651 UCHAR IsFastIoPossible
;
3652 #if (VER_PRODUCTBUILD >= 1381)
3656 #endif // (VER_PRODUCTBUILD >= 1381)
3657 PERESOURCE Resource
;
3658 PERESOURCE PagingIoResource
;
3659 LARGE_INTEGER AllocationSize
;
3660 LARGE_INTEGER FileSize
;
3661 LARGE_INTEGER ValidDataLength
;
3662 } FSRTL_COMMON_FCB_HEADER
, *PFSRTL_COMMON_FCB_HEADER
;
3664 #if (VER_PRODUCTBUILD >= 2600)
3667 typedef struct _FSRTL_ADVANCED_FCB_HEADER
:FSRTL_COMMON_FCB_HEADER
{
3668 #else // __cplusplus
3669 typedef struct _FSRTL_ADVANCED_FCB_HEADER
{
3670 FSRTL_COMMON_FCB_HEADER
;
3671 #endif // __cplusplus
3672 PFAST_MUTEX FastMutex
;
3673 LIST_ENTRY FilterContexts
;
3674 EX_PUSH_LOCK PushLock
;
3675 PVOID
*FileContextSupportPointer
;
3676 } FSRTL_ADVANCED_FCB_HEADER
, *PFSRTL_ADVANCED_FCB_HEADER
;
3678 #endif // (VER_PRODUCTBUILD >= 2600)
3680 typedef struct _GENERATE_NAME_CONTEXT
{
3682 BOOLEAN CheckSumInserted
;
3684 WCHAR NameBuffer
[8];
3685 ULONG ExtensionLength
;
3686 WCHAR ExtensionBuffer
[4];
3687 ULONG LastIndexValue
;
3688 } GENERATE_NAME_CONTEXT
, *PGENERATE_NAME_CONTEXT
;
3690 typedef struct _HANDLE_INFO
{ // Information about open handles
3692 PEPROCESS Process
; // Pointer to PEPROCESS owning the Handle
3693 ULONG Count
; // Count of HANDLE_INFO structures following this structure
3696 } HANDLE_INFO
, *PHANDLE_INFO
;
3698 typedef struct _HANDLE_TABLE_ENTRY_INFO
{
3700 } HANDLE_TABLE_ENTRY_INFO
, *PHANDLE_TABLE_ENTRY_INFO
;
3702 typedef struct _HANDLE_TABLE_ENTRY
{
3706 PHANDLE_TABLE_ENTRY_INFO InfoTable
;
3710 ULONG GrantedAccess
;
3711 USHORT GrantedAccessIndex
;
3712 LONG NextFreeTableEntry
;
3714 USHORT CreatorBackTraceIndex
;
3715 } HANDLE_TABLE_ENTRY
, *PHANDLE_TABLE_ENTRY
;
3717 typedef struct _MAPPING_PAIR
{
3720 } MAPPING_PAIR
, *PMAPPING_PAIR
;
3722 typedef struct _GET_RETRIEVAL_DESCRIPTOR
{
3723 ULONG NumberOfPairs
;
3725 MAPPING_PAIR Pair
[1];
3726 } GET_RETRIEVAL_DESCRIPTOR
, *PGET_RETRIEVAL_DESCRIPTOR
;
3728 typedef struct _INITIAL_TEB
{
3734 } INITIAL_TEB
, *PINITIAL_TEB
;
3736 typedef struct _IO_CLIENT_EXTENSION
{
3737 struct _IO_CLIENT_EXTENSION
*NextExtension
;
3738 PVOID ClientIdentificationAddress
;
3739 } IO_CLIENT_EXTENSION
, *PIO_CLIENT_EXTENSION
;
3741 typedef struct _IO_COMPLETION_BASIC_INFORMATION
{
3743 } IO_COMPLETION_BASIC_INFORMATION
, *PIO_COMPLETION_BASIC_INFORMATION
;
3745 typedef struct _KEVENT_PAIR
{
3750 } KEVENT_PAIR
, *PKEVENT_PAIR
;
3752 typedef struct _KINTERRUPT
{
3755 LIST_ENTRY InterruptListEntry
;
3756 PKSERVICE_ROUTINE ServiceRoutine
;
3757 PVOID ServiceContext
;
3758 KSPIN_LOCK SpinLock
;
3760 PKSPIN_LOCK ActualLock
;
3761 PVOID DispatchAddress
;
3764 KIRQL SynchronizeIrql
;
3765 BOOLEAN FloatingSave
;
3769 KINTERRUPT_MODE Mode
;
3771 ULONG DispatchCount
;
3772 ULONG DispatchCode
[106];
3773 } KINTERRUPT
, *PKINTERRUPT
;
3775 typedef struct _KQUEUE
{
3776 DISPATCHER_HEADER Header
;
3777 LIST_ENTRY EntryListHead
;
3780 LIST_ENTRY ThreadListHead
;
3781 } KQUEUE
, *PKQUEUE
, *RESTRICTED_POINTER PRKQUEUE
;
3783 typedef struct _LARGE_MCB
{
3784 PFAST_MUTEX FastMutex
;
3785 ULONG MaximumPairCount
;
3789 } LARGE_MCB
, *PLARGE_MCB
;
3791 typedef struct _LPC_MESSAGE
{
3795 USHORT VirtualRangesOffset
;
3800 } LPC_MESSAGE
, *PLPC_MESSAGE
;
3802 typedef struct _LPC_SECTION_READ
{
3806 } LPC_SECTION_READ
, *PLPC_SECTION_READ
;
3808 typedef struct _LPC_SECTION_WRITE
{
3810 HANDLE SectionHandle
;
3811 ULONG SectionOffset
;
3814 PVOID TargetViewBase
;
3815 } LPC_SECTION_WRITE
, *PLPC_SECTION_WRITE
;
3817 typedef struct _MAILSLOT_CREATE_PARAMETERS
{
3818 ULONG MailslotQuota
;
3819 ULONG MaximumMessageSize
;
3820 LARGE_INTEGER ReadTimeout
;
3821 BOOLEAN TimeoutSpecified
;
3822 } MAILSLOT_CREATE_PARAMETERS
, *PMAILSLOT_CREATE_PARAMETERS
;
3824 typedef struct _MBCB
{
3825 CSHORT NodeTypeCode
;
3826 CSHORT NodeIsInZone
;
3830 LIST_ENTRY BitmapRanges
;
3831 LONGLONG ResumeWritePage
;
3832 BITMAP_RANGE BitmapRange1
;
3833 BITMAP_RANGE BitmapRange2
;
3834 BITMAP_RANGE BitmapRange3
;
3837 typedef struct _MCB
{
3841 typedef struct _MOVEFILE_DESCRIPTOR
{
3844 LARGE_INTEGER StartVcn
;
3845 LARGE_INTEGER TargetLcn
;
3848 } MOVEFILE_DESCRIPTOR
, *PMOVEFILE_DESCRIPTOR
;
3850 typedef struct _NAMED_PIPE_CREATE_PARAMETERS
{
3851 ULONG NamedPipeType
;
3853 ULONG CompletionMode
;
3854 ULONG MaximumInstances
;
3856 ULONG OutboundQuota
;
3857 LARGE_INTEGER DefaultTimeout
;
3858 BOOLEAN TimeoutSpecified
;
3859 } NAMED_PIPE_CREATE_PARAMETERS
, *PNAMED_PIPE_CREATE_PARAMETERS
;
3861 typedef struct _QUOTA_BLOCK
{
3862 KSPIN_LOCK QuotaLock
;
3863 ULONG ReferenceCount
; // Number of processes using this block
3864 ULONG PeakNonPagedPoolUsage
;
3865 ULONG PeakPagedPoolUsage
;
3866 ULONG NonPagedpoolUsage
;
3867 ULONG PagedPoolUsage
;
3868 ULONG NonPagedPoolLimit
;
3869 ULONG PagedPoolLimit
;
3870 ULONG PeakPagefileUsage
;
3871 ULONG PagefileUsage
;
3872 ULONG PageFileLimit
;
3873 } QUOTA_BLOCK
, *PQUOTA_BLOCK
;
3875 typedef struct _OBJECT_BASIC_INFO
{
3877 ACCESS_MASK GrantedAccess
;
3879 ULONG ReferenceCount
;
3880 ULONG PagedPoolUsage
;
3881 ULONG NonPagedPoolUsage
;
3883 ULONG NameInformationLength
;
3884 ULONG TypeInformationLength
;
3885 ULONG SecurityDescriptorLength
;
3886 LARGE_INTEGER CreateTime
;
3887 } OBJECT_BASIC_INFO
, *POBJECT_BASIC_INFO
;
3889 typedef struct _OBJECT_CREATE_INFORMATION
{
3891 HANDLE RootDirectory
; // 0x4
3892 PVOID ParseContext
; // 0x8
3893 KPROCESSOR_MODE ProbeMode
; // 0xc
3894 ULONG PagedPoolCharge
; // 0x10
3895 ULONG NonPagedPoolCharge
; // 0x14
3896 ULONG SecurityDescriptorCharge
; // 0x18
3897 PSECURITY_DESCRIPTOR SecurityDescriptor
; // 0x1c
3898 PSECURITY_QUALITY_OF_SERVICE SecurityQos
; // 0x20
3899 SECURITY_QUALITY_OF_SERVICE SecurityQualityOfService
; // 0x24
3900 } OBJECT_CREATE_INFORMATION
, *POBJECT_CREATE_INFORMATION
;
3902 typedef struct _OBJECT_CREATOR_INFO
{
3904 ULONG UniqueProcessId
; // Creator's Process ID
3905 ULONG Reserved
; // Alignment
3906 } OBJECT_CREATOR_INFO
, *POBJECT_CREATOR_INFO
;
3908 typedef struct _OBJECT_DIRECTORY_ITEM
{
3909 struct _OBJECT_DIRECTORY_ITEM
*Next
;
3911 } OBJECT_DIRECTORY_ITEM
, *POBJECT_DIRECTORY_ITEM
;
3913 typedef struct _OBJECT_DIRECTORY
{
3914 POBJECT_DIRECTORY_ITEM HashEntries
[0x25];
3915 POBJECT_DIRECTORY_ITEM LastHashAccess
;
3916 ULONG LastHashResult
;
3917 } OBJECT_DIRECTORY
, *POBJECT_DIRECTORY
;
3919 typedef struct _OBJECT_HANDLE_ATTRIBUTE_INFO
{
3921 BOOLEAN ProtectFromClose
;
3922 } OBJECT_HANDLE_ATTRIBUTE_INFO
, *POBJECT_HANDLE_ATTRIBUTE_INFO
;
3924 typedef struct _OBJECT_HANDLE_DB
{
3926 struct _EPROCESS
*Process
;
3927 struct _OBJECT_HANDLE_DB_LIST
*HandleDBList
;
3930 } OBJECT_HANDLE_DB
, *POBJECT_HANDLE_DB
;
3932 typedef struct _OBJECT_HANDLE_DB_LIST
{
3934 OBJECT_HANDLE_DB Entries
[1];
3935 } OBJECT_HANDLE_DB_LIST
, *POBJECT_HANDLE_DB_LIST
;
3937 typedef struct _OBJECT_HEADER_FLAGS
{
3938 ULONG NameInfoOffset
: 8;
3939 ULONG HandleInfoOffset
: 8;
3940 ULONG QuotaInfoOffset
: 8;
3941 ULONG QuotaBlock
: 1; // QuotaBlock/ObjectInfo
3942 ULONG KernelMode
: 1; // UserMode/KernelMode
3943 ULONG CreatorInfo
: 1;
3944 ULONG Exclusive
: 1;
3945 ULONG Permanent
: 1;
3946 ULONG SecurityDescriptor
: 1;
3947 ULONG HandleInfo
: 1;
3949 } OBJECT_HEADER_FLAGS
, *POBJECT_HEADER_FLAGS
;
3951 typedef struct _OBJECT_HEADER
{
3952 ULONG ReferenceCount
;
3955 PSINGLE_LIST_ENTRY NextToFree
;
3957 POBJECT_TYPE ObjectType
; // 0x8
3958 OBJECT_HEADER_FLAGS Flags
; // 0xc
3960 POBJECT_CREATE_INFORMATION ObjectCreateInfo
;
3961 PQUOTA_BLOCK QuotaBlock
;
3963 PSECURITY_DESCRIPTOR SecurityDescriptor
; // 0x14
3965 } OBJECT_HEADER
, *POBJECT_HEADER
;
3967 typedef struct _OBJECT_NAME
{
3968 POBJECT_DIRECTORY Directory
;
3969 UNICODE_STRING ObjectName
;
3971 } OBJECT_NAME
, *POBJECT_NAME
;
3973 typedef struct _OBJECT_NAME_INFO
{
3974 UNICODE_STRING ObjectName
;
3975 WCHAR ObjectNameBuffer
[1];
3976 } OBJECT_NAME_INFO
, *POBJECT_NAME_INFO
;
3978 typedef struct _OBJECT_PROTECTION_INFO
{
3980 BOOLEAN ProtectHandle
;
3981 } OBJECT_PROTECTION_INFO
, *POBJECT_PROTECTION_INFO
;
3983 typedef struct _OBJECT_QUOTA_CHARGES
{
3984 ULONG PagedPoolCharge
;
3985 ULONG NonPagedPoolCharge
;
3986 ULONG SecurityCharge
;
3988 } OBJECT_QUOTA_CHARGES
, *POBJECT_QUOTA_CHARGES
;
3990 typedef struct _OBJECT_QUOTA_INFO
{
3991 ULONG PagedPoolQuota
;
3992 ULONG NonPagedPoolQuota
;
3993 ULONG QuotaInformationSize
;
3994 PEPROCESS Process
; // Owning process
3995 } OBJECT_QUOTA_INFO
, *POBJECT_QUOTA_INFO
;
3997 typedef struct _OBJECT_TYPE_INITIALIZER
{
3999 BOOLEAN UseDefaultObject
;
4001 ULONG InvalidAttributes
;
4002 GENERIC_MAPPING GenericMapping
;
4003 ACCESS_MASK ValidAccessMask
;
4004 BOOLEAN SecurityRequired
;
4005 BOOLEAN MaintainHandleCount
; /* OBJECT_HANDLE_DB */
4006 BOOLEAN MaintainTypeList
; /* OBJECT_CREATOR_INFO */
4009 ULONG DefaultPagedPoolCharge
;
4010 ULONG DefaultNonPagedPoolCharge
;
4011 PVOID DumpProcedure
;
4012 PVOID OpenProcedure
;
4013 PVOID CloseProcedure
;
4014 PVOID DeleteProcedure
;
4015 PVOID ParseProcedure
;
4016 PVOID SecurityProcedure
; /* SeDefaultObjectMethod */
4017 PVOID QueryNameProcedure
;
4018 PVOID OkayToCloseProcedure
;
4019 } OBJECT_TYPE_INITIALIZER
, *POBJECT_TYPE_INITIALIZER
;
4021 typedef struct _OBJECT_TYPE
{
4023 LIST_ENTRY ObjectListHead
; /* OBJECT_CREATOR_INFO */
4024 UNICODE_STRING ObjectTypeName
;
4026 PVOID DefaultObject
; /* ObpDefaultObject */
4027 ULONG Code
; /* File: 5C, WaitablePort: A0 */
4029 ULONG ObjectTypeIndex
; /* OB_TYPE_INDEX_* */
4032 ULONG PeakObjectCount
;
4033 ULONG PeakHandleCount
;
4034 OBJECT_TYPE_INITIALIZER TypeInfo
;
4035 ULONG ObjectTypeTag
; /* OB_TYPE_TAG_* */
4036 } OBJECT_TYPE
, *POBJECT_TYPE
;
4038 typedef struct _OBJECT_TYPE_INFO
{
4039 UNICODE_STRING ObjectTypeName
;
4040 UCHAR Unknown
[0x58];
4041 WCHAR ObjectTypeNameBuffer
[1];
4042 } OBJECT_TYPE_INFO
, *POBJECT_TYPE_INFO
;
4044 typedef struct _OBJECT_ALL_TYPES_INFO
{
4045 ULONG NumberOfObjectTypes
;
4046 OBJECT_TYPE_INFO ObjectsTypeInfo
[1];
4047 } OBJECT_ALL_TYPES_INFO
, *POBJECT_ALL_TYPES_INFO
;
4049 typedef struct _PAGEFAULT_HISTORY
{
4052 KSPIN_LOCK SpinLock
;
4054 PROCESS_WS_WATCH_INFORMATION WatchInfo
[1];
4055 } PAGEFAULT_HISTORY
, *PPAGEFAULT_HISTORY
;
4057 typedef struct _PATHNAME_BUFFER
{
4058 ULONG PathNameLength
;
4060 } PATHNAME_BUFFER
, *PPATHNAME_BUFFER
;
4062 #if (VER_PRODUCTBUILD >= 2600)
4064 typedef struct _PRIVATE_CACHE_MAP_FLAGS
{
4066 ULONG ReadAheadActive
: 1;
4067 ULONG ReadAheadEnabled
: 1;
4068 ULONG Available
: 14;
4069 } PRIVATE_CACHE_MAP_FLAGS
, *PPRIVATE_CACHE_MAP_FLAGS
;
4071 typedef struct _PRIVATE_CACHE_MAP
{
4073 CSHORT NodeTypeCode
;
4074 PRIVATE_CACHE_MAP_FLAGS Flags
;
4077 ULONG ReadAheadMask
;
4078 PFILE_OBJECT FileObject
;
4079 LARGE_INTEGER FileOffset1
;
4080 LARGE_INTEGER BeyondLastByte1
;
4081 LARGE_INTEGER FileOffset2
;
4082 LARGE_INTEGER BeyondLastByte2
;
4083 LARGE_INTEGER ReadAheadOffset
[2];
4084 ULONG ReadAheadLength
[2];
4085 KSPIN_LOCK ReadAheadSpinLock
;
4086 LIST_ENTRY PrivateLinks
;
4087 } PRIVATE_CACHE_MAP
, *PPRIVATE_CACHE_MAP
;
4091 typedef struct _PROCESS_PRIORITY_CLASS
{
4093 UCHAR PriorityClass
;
4094 } PROCESS_PRIORITY_CLASS
, *PPROCESS_PRIORITY_CLASS
;
4096 typedef struct _PS_IMPERSONATION_INFORMATION
{
4097 PACCESS_TOKEN Token
;
4099 BOOLEAN EffectiveOnly
;
4100 SECURITY_IMPERSONATION_LEVEL ImpersonationLevel
;
4101 } PS_IMPERSONATION_INFORMATION
, *PPS_IMPERSONATION_INFORMATION
;
4103 typedef struct _PUBLIC_BCB
{
4104 CSHORT NodeTypeCode
;
4105 CSHORT NodeByteSize
;
4107 LARGE_INTEGER MappedFileOffset
;
4108 } PUBLIC_BCB
, *PPUBLIC_BCB
;
4110 typedef struct _QUERY_PATH_REQUEST
{
4111 ULONG PathNameLength
;
4112 PIO_SECURITY_CONTEXT SecurityContext
;
4113 WCHAR FilePathName
[1];
4114 } QUERY_PATH_REQUEST
, *PQUERY_PATH_REQUEST
;
4116 typedef struct _QUERY_PATH_RESPONSE
{
4117 ULONG LengthAccepted
;
4118 } QUERY_PATH_RESPONSE
, *PQUERY_PATH_RESPONSE
;
4120 #if (VER_PRODUCTBUILD >= 2600)
4122 typedef struct _READ_LIST
{
4123 PFILE_OBJECT FileObject
;
4124 ULONG NumberOfEntries
;
4126 FILE_SEGMENT_ELEMENT List
[ANYSIZE_ARRAY
];
4127 } READ_LIST
, *PREAD_LIST
;
4129 #endif // (VER_PRODUCTBUILD >= 2600)
4131 typedef struct _REPARSE_DATA_BUFFER
{
4134 USHORT ReparseDataLength
;
4140 USHORT SubstituteNameOffset
;
4141 USHORT SubstituteNameLength
;
4142 USHORT PrintNameOffset
;
4143 USHORT PrintNameLength
;
4144 WCHAR PathBuffer
[1];
4145 } SymbolicLinkReparseBuffer
;
4148 USHORT SubstituteNameOffset
;
4149 USHORT SubstituteNameLength
;
4150 USHORT PrintNameOffset
;
4151 USHORT PrintNameLength
;
4152 WCHAR PathBuffer
[1];
4153 } MountPointReparseBuffer
;
4156 UCHAR DataBuffer
[1];
4157 } GenericReparseBuffer
;
4160 } REPARSE_DATA_BUFFER
, *PREPARSE_DATA_BUFFER
;
4162 typedef struct _RETRIEVAL_POINTERS_BUFFER
{
4164 LARGE_INTEGER StartingVcn
;
4166 LARGE_INTEGER NextVcn
;
4169 } RETRIEVAL_POINTERS_BUFFER
, *PRETRIEVAL_POINTERS_BUFFER
;
4171 typedef struct _RTL_SPLAY_LINKS
{
4172 struct _RTL_SPLAY_LINKS
*Parent
;
4173 struct _RTL_SPLAY_LINKS
*LeftChild
;
4174 struct _RTL_SPLAY_LINKS
*RightChild
;
4175 } RTL_SPLAY_LINKS
, *PRTL_SPLAY_LINKS
;
4177 typedef struct _SE_EXPORTS
{
4179 LUID SeCreateTokenPrivilege
;
4180 LUID SeAssignPrimaryTokenPrivilege
;
4181 LUID SeLockMemoryPrivilege
;
4182 LUID SeIncreaseQuotaPrivilege
;
4183 LUID SeUnsolicitedInputPrivilege
;
4184 LUID SeTcbPrivilege
;
4185 LUID SeSecurityPrivilege
;
4186 LUID SeTakeOwnershipPrivilege
;
4187 LUID SeLoadDriverPrivilege
;
4188 LUID SeCreatePagefilePrivilege
;
4189 LUID SeIncreaseBasePriorityPrivilege
;
4190 LUID SeSystemProfilePrivilege
;
4191 LUID SeSystemtimePrivilege
;
4192 LUID SeProfileSingleProcessPrivilege
;
4193 LUID SeCreatePermanentPrivilege
;
4194 LUID SeBackupPrivilege
;
4195 LUID SeRestorePrivilege
;
4196 LUID SeShutdownPrivilege
;
4197 LUID SeDebugPrivilege
;
4198 LUID SeAuditPrivilege
;
4199 LUID SeSystemEnvironmentPrivilege
;
4200 LUID SeChangeNotifyPrivilege
;
4201 LUID SeRemoteShutdownPrivilege
;
4206 PSID SeCreatorOwnerSid
;
4207 PSID SeCreatorGroupSid
;
4209 PSID SeNtAuthoritySid
;
4213 PSID SeInteractiveSid
;
4214 PSID SeLocalSystemSid
;
4215 PSID SeAliasAdminsSid
;
4216 PSID SeAliasUsersSid
;
4217 PSID SeAliasGuestsSid
;
4218 PSID SeAliasPowerUsersSid
;
4219 PSID SeAliasAccountOpsSid
;
4220 PSID SeAliasSystemOpsSid
;
4221 PSID SeAliasPrintOpsSid
;
4222 PSID SeAliasBackupOpsSid
;
4224 PSID SeAuthenticatedUsersSid
;
4226 PSID SeRestrictedSid
;
4227 PSID SeAnonymousLogonSid
;
4229 LUID SeUndockPrivilege
;
4230 LUID SeSyncAgentPrivilege
;
4231 LUID SeEnableDelegationPrivilege
;
4233 } SE_EXPORTS
, *PSE_EXPORTS
;
4235 typedef struct _SECTION_BASIC_INFORMATION
{
4239 } SECTION_BASIC_INFORMATION
, *PSECTION_BASIC_INFORMATION
;
4241 typedef struct _SECTION_IMAGE_INFORMATION
{
4247 USHORT MinorSubsystemVersion
;
4248 USHORT MajorSubsystemVersion
;
4250 ULONG Characteristics
;
4255 } SECTION_IMAGE_INFORMATION
, *PSECTION_IMAGE_INFORMATION
;
4257 typedef struct _SECTION_OBJECT
{
4260 struct _SECTION_OBJECT
*Parent
;
4261 struct _SECTION_OBJECT
*LeftChild
;
4262 struct _SECTION_OBJECT
*RightChild
;
4264 } SECTION_OBJECT
, *PSECTION_OBJECT
;
4266 typedef struct _SEP_AUDIT_POLICY
{
4267 // _SEP_AUDIT_POLICY_CATEGORIES
4268 ULONGLONG System
: 4;
4269 ULONGLONG Logon
: 4;
4270 ULONGLONG ObjectAccess
: 4;
4271 ULONGLONG PrivilegeUse
: 4;
4272 ULONGLONG DetailedTracking
: 4;
4273 ULONGLONG PolicyChange
: 4;
4274 ULONGLONG AccountManagement
: 4;
4275 ULONGLONG DirectoryServiceAccess
: 4;
4276 ULONGLONG AccountLogon
: 4;
4277 // _SEP_AUDIT_POLICY_OVERLAY
4278 ULONGLONG SetBit
: 1;
4279 } SEP_AUDIT_POLICY
, *PSEP_AUDIT_POLICY
;
4282 typedef struct _SEP_AUDIT_POLICY_VISTA
{
4283 UCHAR PerUserPolicy
[25]; /* +0x000 */
4284 UCHAR PolicySetStatus
; /* +0x019 */
4285 USHORT Alignment
; /* +0x01A */
4286 } SEP_AUDIT_POLICY_VISTA
, *PSEP_AUDIT_POLICY_VISTA
;
4288 typedef struct _SERVICE_DESCRIPTOR_TABLE
{
4290 * Table containing cServices elements of pointers to service handler
4291 * functions, indexed by service ID.
4293 PVOID
*ServiceTable
;
4295 * Table that counts how many times each service is used. This table
4296 * is only updated in checked builds.
4298 PULONG CounterTable
;
4300 * Number of services contained in this table.
4304 * Table containing the number of bytes of parameters the handler
4307 PUCHAR ArgumentTable
;
4308 } SERVICE_DESCRIPTOR_TABLE
, *PSERVICE_DESCRIPTOR_TABLE
;
4310 #if (VER_PRODUCTBUILD >= 2600)
4312 typedef struct _SHARED_CACHE_MAP
{
4313 CSHORT NodeTypeCode
;
4314 CSHORT NodeByteSize
;
4316 LARGE_INTEGER FileSize
;
4318 LARGE_INTEGER SectionSize
;
4319 LARGE_INTEGER ValidDataLength
;
4320 LARGE_INTEGER ValidDataGoal
;
4321 PVACB InitialVacbs
[4];
4323 PFILE_OBJECT FileObject
;
4327 ULONG NeedToZeroPage
;
4328 KSPIN_LOCK ActiveVacbSpinLock
;
4329 ULONG VacbActiveCount
;
4331 LIST_ENTRY SharedCacheMapLinks
;
4336 PKEVENT CreateEvent
;
4337 PKEVENT WaitOnActiveCount
;
4339 LONGLONG BeyondLastFlush
;
4340 PCACHE_MANAGER_CALLBACKS Callbacks
;
4341 PVOID LazyWriteContext
;
4342 LIST_ENTRY PrivateList
;
4344 PVOID FlushToLsnRoutine
;
4345 ULONG DirtyPageThreshold
;
4346 ULONG LazyWritePassCount
;
4347 PCACHE_UNINITIALIZE_EVENT UninitializeEvent
;
4348 PVACB NeedToZeroVacb
;
4349 KSPIN_LOCK BcbSpinLock
;
4352 EX_PUSH_LOCK VacbPushLock
;
4353 PRIVATE_CACHE_MAP PrivateCacheMap
;
4354 } SHARED_CACHE_MAP
, *PSHARED_CACHE_MAP
;
4358 typedef struct _SID_AND_ATTRIBUTES
{
4361 } SID_AND_ATTRIBUTES
, *PSID_AND_ATTRIBUTES
;
4363 typedef struct _SID_AND_ATTRIBUTES_HASH
{
4364 ULONG SidCount
; /* +0x000 */
4365 PSID_AND_ATTRIBUTES SidAttr
; /* +0x004 */
4366 ULONG Hash
[32]; /* +0x008 */
4367 } SID_AND_ATTRIBUTES_HASH
, *PSID_AND_ATTRIBUTES_HASH
;
4369 typedef struct _STARTING_VCN_INPUT_BUFFER
{
4370 LARGE_INTEGER StartingVcn
;
4371 } STARTING_VCN_INPUT_BUFFER
, *PSTARTING_VCN_INPUT_BUFFER
;
4373 // SystemBasicInformation
4374 typedef struct _SYSTEM_BASIC_INFORMATION
{
4376 ULONG MaximumIncrement
;
4377 ULONG PhysicalPageSize
;
4378 ULONG NumberOfPhysicalPages
;
4379 ULONG LowestPhysicalPage
;
4380 ULONG HighestPhysicalPage
;
4381 ULONG AllocationGranularity
;
4382 ULONG LowestUserAddress
;
4383 ULONG HighestUserAddress
;
4384 ULONG ActiveProcessors
;
4385 UCHAR NumberProcessors
;
4386 } SYSTEM_BASIC_INFORMATION
, *PSYSTEM_BASIC_INFORMATION
;
4388 // SystemProcessorInformation
4389 typedef struct _SYSTEM_PROCESSOR_INFORMATION
{
4390 USHORT ProcessorArchitecture
;
4391 USHORT ProcessorLevel
;
4392 USHORT ProcessorRevision
;
4395 } SYSTEM_PROCESSOR_INFORMATION
, *PSYSTEM_PROCESSOR_INFORMATION
;
4397 // SystemPerformanceInformation
4398 typedef struct _SYSTEM_PERFORMANCE_INFORMATION
{
4399 LARGE_INTEGER IdleTime
;
4400 LARGE_INTEGER ReadTransferCount
;
4401 LARGE_INTEGER WriteTransferCount
;
4402 LARGE_INTEGER OtherTransferCount
;
4403 ULONG ReadOperationCount
;
4404 ULONG WriteOperationCount
;
4405 ULONG OtherOperationCount
;
4406 ULONG AvailablePages
;
4407 ULONG TotalCommittedPages
;
4408 ULONG TotalCommitLimit
;
4409 ULONG PeakCommitment
;
4411 ULONG WriteCopyFaults
;
4412 ULONG TransistionFaults
;
4414 ULONG DemandZeroFaults
;
4418 ULONG PagefilePagesWritten
;
4419 ULONG PagefilePageWriteIos
;
4420 ULONG MappedFilePagesWritten
;
4421 ULONG MappedFilePageWriteIos
;
4422 ULONG PagedPoolUsage
;
4423 ULONG NonPagedPoolUsage
;
4424 ULONG PagedPoolAllocs
;
4425 ULONG PagedPoolFrees
;
4426 ULONG NonPagedPoolAllocs
;
4427 ULONG NonPagedPoolFrees
;
4428 ULONG TotalFreeSystemPtes
;
4429 ULONG SystemCodePage
;
4430 ULONG TotalSystemDriverPages
;
4431 ULONG TotalSystemCodePages
;
4432 ULONG SmallNonPagedLookasideListAllocateHits
;
4433 ULONG SmallPagedLookasideListAllocateHits
;
4435 ULONG MmSystemCachePage
;
4436 ULONG PagedPoolPage
;
4437 ULONG SystemDriverPage
;
4438 ULONG FastReadNoWait
;
4440 ULONG FastReadResourceMiss
;
4441 ULONG FastReadNotPossible
;
4442 ULONG FastMdlReadNoWait
;
4443 ULONG FastMdlReadWait
;
4444 ULONG FastMdlReadResourceMiss
;
4445 ULONG FastMdlReadNotPossible
;
4446 ULONG MapDataNoWait
;
4448 ULONG MapDataNoWaitMiss
;
4449 ULONG MapDataWaitMiss
;
4450 ULONG PinMappedDataCount
;
4451 ULONG PinReadNoWait
;
4453 ULONG PinReadNoWaitMiss
;
4454 ULONG PinReadWaitMiss
;
4455 ULONG CopyReadNoWait
;
4457 ULONG CopyReadNoWaitMiss
;
4458 ULONG CopyReadWaitMiss
;
4459 ULONG MdlReadNoWait
;
4461 ULONG MdlReadNoWaitMiss
;
4462 ULONG MdlReadWaitMiss
;
4465 ULONG LazyWritePages
;
4468 ULONG ContextSwitches
;
4469 ULONG FirstLevelTbFills
;
4470 ULONG SecondLevelTbFills
;
4472 } SYSTEM_PERFORMANCE_INFORMATION
, *PSYSTEM_PERFORMANCE_INFORMATION
;
4474 // SystemTimeOfDayInformation
4475 typedef struct _SYSTEM_TIME_OF_DAY_INFORMATION
{
4476 LARGE_INTEGER BootTime
;
4477 LARGE_INTEGER CurrentTime
;
4478 LARGE_INTEGER TimeZoneBias
;
4479 ULONG CurrentTimeZoneId
;
4480 } SYSTEM_TIME_OF_DAY_INFORMATION
, *PSYSTEM_TIME_OF_DAY_INFORMATION
;
4482 typedef struct _SYSTEM_THREADS_INFORMATION
{
4483 LARGE_INTEGER KernelTime
;
4484 LARGE_INTEGER UserTime
;
4485 LARGE_INTEGER CreateTime
;
4490 KPRIORITY BasePriority
;
4491 ULONG ContextSwitchCount
;
4493 KWAIT_REASON WaitReason
;
4494 } SYSTEM_THREADS_INFORMATION
, *PSYSTEM_THREADS_INFORMATION
;
4496 // SystemProcessesAndThreadsInformation
4497 typedef struct _SYSTEM_PROCESSES_INFORMATION
{
4498 ULONG NextEntryDelta
;
4501 LARGE_INTEGER CreateTime
;
4502 LARGE_INTEGER UserTime
;
4503 LARGE_INTEGER KernelTime
;
4504 UNICODE_STRING ProcessName
;
4505 KPRIORITY BasePriority
;
4507 ULONG InheritedFromProcessId
;
4511 VM_COUNTERS VmCounters
;
4512 #if (VER_PRODUCTBUILD >= 2195)
4513 IO_COUNTERS IoCounters
;
4514 #endif // (VER_PRODUCTBUILD >= 2195)
4515 SYSTEM_THREADS_INFORMATION Threads
[1];
4516 } SYSTEM_PROCESSES_INFORMATION
, *PSYSTEM_PROCESSES_INFORMATION
;
4519 typedef struct _SYSTEM_CALL_COUNTS
{
4521 ULONG NumberOfDescriptorTables
;
4522 ULONG NumberOfRoutinesInTable
[1];
4523 // On checked build this is followed by a ULONG CallCounts[1] variable length array.
4524 } SYSTEM_CALL_COUNTS
, *PSYSTEM_CALL_COUNTS
;
4526 // SystemConfigurationInformation
4527 typedef struct _SYSTEM_CONFIGURATION_INFORMATION
{
4533 ULONG ParallelCount
;
4534 } SYSTEM_CONFIGURATION_INFORMATION
, *PSYSTEM_CONFIGURATION_INFORMATION
;
4536 // SystemProcessorTimes
4537 typedef struct _SYSTEM_PROCESSOR_TIMES
{
4538 LARGE_INTEGER IdleTime
;
4539 LARGE_INTEGER KernelTime
;
4540 LARGE_INTEGER UserTime
;
4541 LARGE_INTEGER DpcTime
;
4542 LARGE_INTEGER InterruptTime
;
4543 ULONG InterruptCount
;
4544 } SYSTEM_PROCESSOR_TIMES
, *PSYSTEM_PROCESSOR_TIMES
;
4547 typedef struct _SYSTEM_GLOBAL_FLAG
{
4549 } SYSTEM_GLOBAL_FLAG
, *PSYSTEM_GLOBAL_FLAG
;
4551 // SystemModuleInformation
4552 typedef struct _SYSTEM_MODULE_INFORMATION
{
4560 USHORT ModuleNameOffset
;
4561 CHAR ImageName
[256];
4562 } SYSTEM_MODULE_INFORMATION
, *PSYSTEM_MODULE_INFORMATION
;
4564 // SystemLockInformation
4565 typedef struct _SYSTEM_LOCK_INFORMATION
{
4569 ULONG ExclusiveOwnerThreadId
;
4571 ULONG ContentionCount
;
4573 ULONG NumberOfSharedWaiters
;
4574 ULONG NumberOfExclusiveWaiters
;
4575 } SYSTEM_LOCK_INFORMATION
, *PSYSTEM_LOCK_INFORMATION
;
4577 // SystemHandleInformation
4578 typedef struct _SYSTEM_HANDLE_INFORMATION
{
4580 UCHAR ObjectTypeNumber
;
4584 ACCESS_MASK GrantedAccess
;
4585 } SYSTEM_HANDLE_INFORMATION
, *PSYSTEM_HANDLE_INFORMATION
;
4587 // SystemObjectInformation
4588 typedef struct _SYSTEM_OBJECT_TYPE_INFORMATION
{
4589 ULONG NextEntryOffset
;
4593 ULONG InvalidAttributes
;
4594 GENERIC_MAPPING GenericMapping
;
4595 ACCESS_MASK ValidAccessMask
;
4598 UNICODE_STRING Name
;
4599 } SYSTEM_OBJECT_TYPE_INFORMATION
, *PSYSTEM_OBJECT_TYPE_INFORMATION
;
4601 typedef struct _SYSTEM_OBJECT_INFORMATION
{
4602 ULONG NextEntryOffset
;
4604 ULONG CreatorProcessId
;
4609 ULONG PagedPoolUsage
;
4610 ULONG NonPagedPoolUsage
;
4611 ULONG ExclusiveProcessId
;
4612 PSECURITY_DESCRIPTOR SecurityDescriptor
;
4613 UNICODE_STRING Name
;
4614 } SYSTEM_OBJECT_INFORMATION
, *PSYSTEM_OBJECT_INFORMATION
;
4616 // SystemPagefileInformation
4617 typedef struct _SYSTEM_PAGEFILE_INFORMATION
{
4618 ULONG NextEntryOffset
;
4622 UNICODE_STRING FileName
;
4623 } SYSTEM_PAGEFILE_INFORMATION
, *PSYSTEM_PAGEFILE_INFORMATION
;
4625 // SystemInstructionEmulationCounts
4626 typedef struct _SYSTEM_INSTRUCTION_EMULATION_COUNTS
{
4627 ULONG GenericInvalidOpcode
;
4628 ULONG TwoByteOpcode
;
4646 ULONG FloatingPointOpcode
;
4661 } SYSTEM_INSTRUCTION_EMULATION_COUNTS
, *PSYSTEM_INSTRUCTION_EMULATION_COUNTS
;
4663 // SystemCacheInformation
4664 typedef struct _SYSTEM_CACHE_INFORMATION
{
4665 ULONG SystemCacheWsSize
;
4666 ULONG SystemCacheWsPeakSize
;
4667 ULONG SystemCacheWsFaults
;
4668 ULONG SystemCacheWsMinimum
;
4669 ULONG SystemCacheWsMaximum
;
4670 ULONG TransitionSharedPages
;
4671 ULONG TransitionSharedPagesPeak
;
4673 } SYSTEM_CACHE_INFORMATION
, *PSYSTEM_CACHE_INFORMATION
;
4675 // SystemPoolTagInformation
4676 typedef struct _SYSTEM_POOL_TAG_INFORMATION
{
4678 ULONG PagedPoolAllocs
;
4679 ULONG PagedPoolFrees
;
4680 ULONG PagedPoolUsage
;
4681 ULONG NonPagedPoolAllocs
;
4682 ULONG NonPagedPoolFrees
;
4683 ULONG NonPagedPoolUsage
;
4684 } SYSTEM_POOL_TAG_INFORMATION
, *PSYSTEM_POOL_TAG_INFORMATION
;
4686 // SystemProcessorStatistics
4687 typedef struct _SYSTEM_PROCESSOR_STATISTICS
{
4688 ULONG ContextSwitches
;
4690 ULONG DpcRequestRate
;
4691 ULONG TimeIncrement
;
4692 ULONG DpcBypassCount
;
4693 ULONG ApcBypassCount
;
4694 } SYSTEM_PROCESSOR_STATISTICS
, *PSYSTEM_PROCESSOR_STATISTICS
;
4696 // SystemDpcInformation
4697 typedef struct _SYSTEM_DPC_INFORMATION
{
4699 ULONG MaximumDpcQueueDepth
;
4700 ULONG MinimumDpcRate
;
4701 ULONG AdjustDpcThreshold
;
4703 } SYSTEM_DPC_INFORMATION
, *PSYSTEM_DPC_INFORMATION
;
4706 typedef struct _SYSTEM_LOAD_IMAGE
{
4707 UNICODE_STRING ModuleName
;
4711 PVOID ExportDirectory
;
4712 } SYSTEM_LOAD_IMAGE
, *PSYSTEM_LOAD_IMAGE
;
4714 // SystemUnloadImage
4715 typedef struct _SYSTEM_UNLOAD_IMAGE
{
4717 } SYSTEM_UNLOAD_IMAGE
, *PSYSTEM_UNLOAD_IMAGE
;
4719 // SystemTimeAdjustment
4720 typedef struct _SYSTEM_QUERY_TIME_ADJUSTMENT
{
4721 ULONG TimeAdjustment
;
4722 ULONG MaximumIncrement
;
4723 BOOLEAN TimeSynchronization
;
4724 } SYSTEM_QUERY_TIME_ADJUSTMENT
, *PSYSTEM_QUERY_TIME_ADJUSTMENT
;
4726 // SystemTimeAdjustment
4727 typedef struct _SYSTEM_SET_TIME_ADJUSTMENT
{
4728 ULONG TimeAdjustment
;
4729 BOOLEAN TimeSynchronization
;
4730 } SYSTEM_SET_TIME_ADJUSTMENT
, *PSYSTEM_SET_TIME_ADJUSTMENT
;
4732 // SystemCrashDumpInformation
4733 typedef struct _SYSTEM_CRASH_DUMP_INFORMATION
{
4734 HANDLE CrashDumpSectionHandle
;
4735 #if (VER_PRODUCTBUILD >= 2195)
4737 #endif // (VER_PRODUCTBUILD >= 2195)
4738 } SYSTEM_CRASH_DUMP_INFORMATION
, *PSYSTEM_CRASH_DUMP_INFORMATION
;
4740 // SystemExceptionInformation
4741 typedef struct _SYSTEM_EXCEPTION_INFORMATION
{
4742 ULONG AlignmentFixupCount
;
4743 ULONG ExceptionDispatchCount
;
4744 ULONG FloatingEmulationCount
;
4746 } SYSTEM_EXCEPTION_INFORMATION
, *PSYSTEM_EXCEPTION_INFORMATION
;
4748 // SystemCrashDumpStateInformation
4749 typedef struct _SYSTEM_CRASH_DUMP_STATE_INFORMATION
{
4750 ULONG ValidCrashDump
;
4751 #if (VER_PRODUCTBUILD >= 2195)
4753 #endif // (VER_PRODUCTBUILD >= 2195)
4754 } SYSTEM_CRASH_DUMP_STATE_INFORMATION
, *PSYSTEM_CRASH_DUMP_STATE_INFORMATION
;
4756 // SystemKernelDebuggerInformation
4757 typedef struct _SYSTEM_KERNEL_DEBUGGER_INFORMATION
{
4758 BOOLEAN DebuggerEnabled
;
4759 BOOLEAN DebuggerNotPresent
;
4760 } SYSTEM_KERNEL_DEBUGGER_INFORMATION
, *PSYSTEM_KERNEL_DEBUGGER_INFORMATION
;
4762 // SystemContextSwitchInformation
4763 typedef struct _SYSTEM_CONTEXT_SWITCH_INFORMATION
{
4764 ULONG ContextSwitches
;
4765 ULONG ContextSwitchCounters
[11];
4766 } SYSTEM_CONTEXT_SWITCH_INFORMATION
, *PSYSTEM_CONTEXT_SWITCH_INFORMATION
;
4768 // SystemRegistryQuotaInformation
4769 typedef struct _SYSTEM_REGISTRY_QUOTA_INFORMATION
{
4770 ULONG RegistryQuota
;
4771 ULONG RegistryQuotaInUse
;
4772 ULONG PagedPoolSize
;
4773 } SYSTEM_REGISTRY_QUOTA_INFORMATION
, *PSYSTEM_REGISTRY_QUOTA_INFORMATION
;
4775 // SystemLoadAndCallImage
4776 typedef struct _SYSTEM_LOAD_AND_CALL_IMAGE
{
4777 UNICODE_STRING ModuleName
;
4778 } SYSTEM_LOAD_AND_CALL_IMAGE
, *PSYSTEM_LOAD_AND_CALL_IMAGE
;
4780 // SystemPrioritySeparation
4781 typedef struct _SYSTEM_PRIORITY_SEPARATION
{
4782 ULONG PrioritySeparation
;
4783 } SYSTEM_PRIORITY_SEPARATION
, *PSYSTEM_PRIORITY_SEPARATION
;
4785 // SystemTimeZoneInformation
4786 typedef struct _SYSTEM_TIME_ZONE_INFORMATION
{
4788 WCHAR StandardName
[32];
4789 TIME_FIELDS StandardDate
;
4791 WCHAR DaylightName
[32];
4792 TIME_FIELDS DaylightDate
;
4794 } SYSTEM_TIME_ZONE_INFORMATION
, *PSYSTEM_TIME_ZONE_INFORMATION
;
4796 // SystemLookasideInformation
4797 typedef struct _SYSTEM_LOOKASIDE_INFORMATION
{
4799 USHORT MaximumDepth
;
4800 ULONG TotalAllocates
;
4801 ULONG AllocateMisses
;
4807 } SYSTEM_LOOKASIDE_INFORMATION
, *PSYSTEM_LOOKASIDE_INFORMATION
;
4809 // SystemSetTimeSlipEvent
4810 typedef struct _SYSTEM_SET_TIME_SLIP_EVENT
{
4811 HANDLE TimeSlipEvent
;
4812 } SYSTEM_SET_TIME_SLIP_EVENT
, *PSYSTEM_SET_TIME_SLIP_EVENT
;
4814 // SystemCreateSession
4815 typedef struct _SYSTEM_CREATE_SESSION
{
4817 } SYSTEM_CREATE_SESSION
, *PSYSTEM_CREATE_SESSION
;
4819 // SystemDeleteSession
4820 typedef struct _SYSTEM_DELETE_SESSION
{
4822 } SYSTEM_DELETE_SESSION
, *PSYSTEM_DELETE_SESSION
;
4824 // SystemRangeStartInformation
4825 typedef struct _SYSTEM_RANGE_START_INFORMATION
{
4826 PVOID SystemRangeStart
;
4827 } SYSTEM_RANGE_START_INFORMATION
, *PSYSTEM_RANGE_START_INFORMATION
;
4829 // SystemSessionProcessesInformation
4830 typedef struct _SYSTEM_SESSION_PROCESS_INFORMATION
{
4834 } SYSTEM_SESSION_PROCESS_INFORMATION
, *PSYSTEM_SESSION_PROCESS_INFORMATION
;
4836 typedef struct _GDI_TEB_BATCH
{
4839 ULONG Buffer
[(VER_PRODUCTBUILD
>= 2195) ? 0x133 : 0x136];
4840 } GDI_TEB_BATCH
, *PGDI_TEB_BATCH
;
4842 #if (VER_PRODUCTBUILD >= 2600)
4844 typedef struct _RTL_ACTIVATION_CONTEXT_STACK_FRAME
{
4845 struct _RTL_ACTIVATION_CONTEXT_STACK_FRAME
* Previous
;
4846 struct _ACTIVATION_CONTEXT
* ActivationContext
; // 0x4
4848 } RTL_ACTIVATION_CONTEXT_STACK_FRAME
, *PRTL_ACTIVATION_CONTEXT_STACK_FRAME
;
4850 typedef struct _ACTIVATION_CONTEXT_STACK
{
4852 ULONG NextCookieSequenceNumber
;
4853 PRTL_ACTIVATION_CONTEXT_STACK_FRAME ActiveFrame
; // 0x8
4854 LIST_ENTRY FrameListCache
; // 0xc
4855 } ACTIVATION_CONTEXT_STACK
, *PACTIVATION_CONTEXT_STACK
;
4857 #endif // (VER_PRODUCTBUILD >= 2600)
4859 typedef struct _Wx86ThreadState
{
4861 PVOID DeallocationCpu
;
4862 UCHAR UseKnownWx86Dll
; // 0x8
4863 UCHAR OleStubInvoked
; // 0x9
4864 } Wx86ThreadState
, *PWx86ThreadState
;
4866 typedef struct _TEB_ACTIVE_FRAME_CONTEXT
{
4869 } TEB_ACTIVE_FRAME_CONTEXT
, *PTEB_ACTIVE_FRAME_CONTEXT
;
4871 typedef struct _TEB_ACTIVE_FRAME
{
4873 struct _TEB_ACTIVE_FRAME
*Previous
;
4874 PTEB_ACTIVE_FRAME_CONTEXT Context
;
4875 } TEB_ACTIVE_FRAME
, *PTEB_ACTIVE_FRAME
;
4877 typedef struct _TEB
// from Reactos, Native API; checked and corrected for 2003 and nt 4.0
4878 // should also work on XP and 2000
4879 // the reactos version was probably from NT 3.51 SP3
4881 NT_TIB Tib
; /* 00h */
4882 PVOID EnvironmentPointer
; /* 1Ch */
4883 CLIENT_ID Cid
; /* 20h */
4884 HANDLE RpcHandle
; /* 28h */
4885 PVOID
*ThreadLocalStorage
; /* 2Ch */
4887 ULONG LastErrorValue
; /* 34h */
4888 ULONG CountOfOwnedCriticalSections
; /* 38h */
4889 PVOID CsrClientThread
; /* 3Ch */
4890 struct _W32THREAD
* Win32ThreadInfo
; /* 40h */
4891 ULONG User32Reserved
[26]; /* 44h */
4892 ULONG UserReserved
[5]; /* ACh */
4893 PVOID WOW32Reserved
; /* C0h */
4894 LCID CurrentLocale
; /* C4h */
4895 ULONG FpSoftwareStatusRegister
; /* C8h */
4896 PVOID SystemReserved1
[0x36]; /* CCh */
4897 #if (VER_PRODUCTBUILD <= 1381)
4898 PVOID Spare1
; /* 1A4h */
4900 LONG ExceptionCode
; /* 1A4h */
4901 #if (VER_PRODUCTBUILD >= 2600)
4902 ACTIVATION_CONTEXT_STACK
4903 ActivationContextStack
; /* 1A8h */
4904 UCHAR SpareBytes1
[24]; /* 1BCh */
4905 #elif (VER_PRODUCTBUILD >= 2195)
4906 UCHAR SpareBytes1
[0x2c]; /* 1A8h */
4908 ULONG SpareBytes1
[0x14]; /* 1ACh */
4910 GDI_TEB_BATCH GdiTebBatch
; /* 1D4h */ /* 1FC for nt 4.0 */
4911 ULONG gdiRgn
; /* 6A8h */ /* 6DCh for nt 4.0 */
4912 ULONG gdiPen
; /* 6ACh */
4913 ULONG gdiBrush
; /* 6B0h */
4914 CLIENT_ID RealClientId
; /* 6B4h */ /* 6E8h for nt 4.0 */
4915 PVOID GdiCachedProcessHandle
; /* 6BCh */
4916 ULONG GdiClientPID
; /* 6C0h */
4917 ULONG GdiClientTID
; /* 6C4h */
4918 PVOID GdiThreadLocaleInfo
; /* 6C8h */
4919 #if (VER_PRODUCTBUILD == 1381)
4920 PVOID Win32ClientInfo
[5]; /* 700h */
4921 PVOID glDispatchTable
[0x118]; /* 714h */
4922 ULONG glReserved1
[0x1a]; /* B74h */
4924 PVOID Win32ClientInfo
[0x3e]; /* 6CCh */
4925 PVOID glDispatchTable
[0xe9]; /* 7C4h */
4926 ULONG glReserved1
[0x1d]; /* B68h */
4928 PVOID glReserved2
; /* BDCh */
4929 PVOID glSectionInfo
; /* BE0h */
4930 PVOID glSection
; /* BE4h */
4931 PVOID glTable
; /* BE8h */
4932 PVOID glCurrentRC
; /* BECh */
4933 PVOID glContext
; /* BF0h */
4934 NTSTATUS LastStatusValue
; /* BF4h */
4935 UNICODE_STRING StaticUnicodeString
; /* BF8h */
4936 WCHAR StaticUnicodeBuffer
[0x105]; /* C00h */
4937 PVOID DeallocationStack
; /* E0Ch */
4938 PVOID TlsSlots
[0x40]; /* E10h */
4939 LIST_ENTRY TlsLinks
; /* F10h */
4940 PVOID Vdm
; /* F18h */
4941 PVOID ReservedForNtRpc
; /* F1Ch */
4942 PVOID DbgSsReserved
[0x2]; /* F20h */
4943 ULONG HardErrorDisabled
; /* F28h */
4944 PVOID Instrumentation
[0x10]; /* F2Ch */
4945 PVOID WinSockData
; /* F6Ch */
4946 ULONG GdiBatchCount
; /* F70h */
4947 BOOLEAN InDbgPrint
; /* F74h */
4948 BOOLEAN FreeStackOnTermination
; /* F75h */
4949 BOOLEAN HasFiberData
; /* F76h */
4950 UCHAR IdealProcessor
; /* F77h */
4951 ULONG Spare3
; /* F78h */
4952 ULONG ReservedForPerf
; /* F7Ch */
4953 PVOID ReservedForOle
; /* F80h */
4954 ULONG WaitingOnLoaderLock
; /* F84h */
4955 #if (VER_PRODUCTBUILD >= 2195)
4956 Wx86ThreadState Wx86Thread
; /* F88h */
4957 PVOID
* TlsExpansionSlots
; /* F94h */
4958 ULONG ImpersonationLocale
; /* F98h */
4959 ULONG IsImpersonating
; /* F9Ch */
4960 PVOID NlsCache
; /* FA0h */
4961 PVOID pShimData
; /* FA4h */
4962 ULONG HeapVirtualAffinity
; /* FA8h */
4963 PVOID CurrentTransactionHandle
; /* FACh */
4964 PTEB_ACTIVE_FRAME ActiveFrame
; /* FB0h*/
4965 PVOID FlsSlots
; /* FB4h */
4969 typedef struct _TERMINATION_PORT
{
4970 struct _TERMINATION_PORT
* Next
;
4972 } TERMINATION_PORT
, *PTERMINATION_PORT
;
4974 typedef struct _THREAD_BASIC_INFORMATION
{
4975 NTSTATUS ExitStatus
;
4976 PVOID TebBaseAddress
;
4977 ULONG UniqueProcessId
;
4978 ULONG UniqueThreadId
;
4979 KAFFINITY AffinityMask
;
4980 KPRIORITY BasePriority
;
4981 ULONG DiffProcessPriority
;
4982 } THREAD_BASIC_INFORMATION
, *PTHREAD_BASIC_INFORMATION
;
4984 typedef struct _TOKEN_SOURCE
{
4985 CCHAR SourceName
[TOKEN_SOURCE_LENGTH
];
4986 LUID SourceIdentifier
;
4987 } TOKEN_SOURCE
, *PTOKEN_SOURCE
;
4989 typedef struct _TOKEN_CONTROL
{
4991 LUID AuthenticationId
;
4993 TOKEN_SOURCE TokenSource
;
4994 } TOKEN_CONTROL
, *PTOKEN_CONTROL
;
4996 typedef struct _TOKEN_DEFAULT_DACL
{
4998 } TOKEN_DEFAULT_DACL
, *PTOKEN_DEFAULT_DACL
;
5000 typedef struct _TOKEN_GROUPS
{
5002 SID_AND_ATTRIBUTES Groups
[1];
5003 } TOKEN_GROUPS
, *PTOKEN_GROUPS
;
5005 /* XP SP2 has same TOKEN_OBJECT structure as Windows Server 2003 (stucture K23 in union). */
5006 #include <pshpack1.h>
5011 TOKEN_SOURCE TokenSource
; /* 0x0: CHAR SourceName[8] = "*SYSTEM*" | "User32 " + LUID SourceIdentifier = 0x10, *SYSTEM* id == 0 */
5012 LUID TokenId
; /* 0x10: */
5013 LUID AuthenticationId
; /* 0x18: */
5014 LARGE_INTEGER ExpirationTime
; /* 0x20: -1 no expired. *SYSTEM* has expired? */
5015 LUID ModifiedId
; /* 0x28: */
5016 ULONG UserAndGroupCount
; /* 0x30: 3 */
5017 ULONG PrivilegeCount
; /* 0x34: 14 */
5018 ULONG VariableLength
; /* 0x38: 0x37C */
5019 ULONG DynamicCharged
; /* 0x3C: 0x1F4 */
5020 ULONG DynamicAvailable
; /* 0x40: 0x1A4 */
5021 ULONG DefaultOwnerIndex
; /* 0x44: 1 */
5022 PSID_AND_ATTRIBUTES UserAndGroups
;/* 0x48: TOKEN_USER Owners [UserAndGroupCount] DefaultOwnerIndex */
5023 PSID PrimaryGroup
; /* 0x4C: */
5024 PLUID_AND_ATTRIBUTES Privileges
;/* 0x50: */
5025 PULONG DynamicPart
; /* 0x54: */
5026 PACL DefaultDacl
; /* 0x58: */
5027 TOKEN_TYPE TokenType
; /* 0x5C: TokenPrimary | TokenImpersonation */
5028 SECURITY_IMPERSONATION_LEVEL ImpersonationLevel
;/* 0x60: 0 */
5029 UCHAR TokenFlags
; /* 0x64: 1 */
5030 BOOLEAN TokenInUse
; /* 0x65: 1 */
5031 USHORT Alignment
; /* 0x66: 0 */
5032 PVOID ProxyData
; /* 0x68: 0 */
5033 PVOID AuditData
; /* 0x6C: 0 */
5034 ULONG VariablePart
; /* 0x70: */
5038 TOKEN_SOURCE TokenSource
; /* 0x0: CHAR SourceName[8] = "*SYSTEM*" | "User32 " + LUID SourceIdentifier = 0x10 */
5039 LUID TokenId
; /* 0x10: */
5040 LUID AuthenticationId
; /* 0x18: */
5041 LUID ParentTokenId
; /* 0x20: 0 */
5042 LARGE_INTEGER ExpirationTime
; /* 0x28: -1 no expired */
5043 LUID ModifiedId
; /* 0x30: */
5044 ULONG SessionId
; /* 0x38: 0 */
5045 ULONG UserAndGroupCount
; /* 0x3C: 9 */
5046 ULONG RestrictedSidCount
; /*+0x40: 0 */
5047 ULONG PrivilegeCount
; /* 0x44: 11 */
5048 ULONG VariableLength
; /* 0x48: 0x1F0 */
5049 ULONG DynamicCharged
; /* 0x4C: 0x1F4 */
5050 ULONG DynamicAvailable
; /* 0x50: 0x1A4 */
5051 ULONG DefaultOwnerIndex
; /* 0x54: 3 */
5052 PSID_AND_ATTRIBUTES UserAndGroups
; /* 0x58: TOKEN_USER Owners [UserAndGroupCount] DefaultOwnerIndex */
5053 PSID_AND_ATTRIBUTES RestrictedSids
;/* 0x5C: 0 */
5054 PSID PrimaryGroup
; /* 0x60: */
5055 PLUID_AND_ATTRIBUTES Privileges
;/* 0x64: */
5056 PULONG DynamicPart
; /* 0x68: */
5057 PACL DefaultDacl
; /* 0x6C: */
5058 TOKEN_TYPE TokenType
; /* 0x70: TokenPrimary | TokenImpersonation */
5059 SECURITY_IMPERSONATION_LEVEL ImpersonationLevel
;/* 0x74: 0 */
5060 UCHAR TokenFlags
; /* 0x78: 9 */
5061 BOOLEAN TokenInUse
; /* 0x79: 1 */
5062 USHORT Alignment
; /* 0x7A: 0 */
5063 PVOID ProxyData
; /* 0x7C: 0 */
5064 PVOID AuditData
; /* 0x80: 0 */
5065 ULONG VariablePart
; /* 0x84: */
5069 TOKEN_SOURCE TokenSource
; /* 0x0: CHAR SourceName[8] = "*SYSTEM*" | "User32 " + LUID SourceIdentifier = 0x10 */
5070 LUID TokenId
; /* 0x10: 0x6F68 */
5071 LUID AuthenticationId
; /* 0x18: */
5072 LUID ParentTokenId
; /* 0x20: 0 */
5073 LARGE_INTEGER ExpirationTime
; /* 0x28: -1 no expired */
5074 PERESOURCE TokenLock
; /*+0x30: 0x8xxxxxxxx */
5075 LUID ModifiedId
; /* 0x34: */
5076 ULONG SessionId
; /* 0x3C: 0x6F6A */
5077 ULONG UserAndGroupCount
; /* 0x40: 4 */
5078 ULONG RestrictedSidCount
; /*+0x44: 0 */
5079 ULONG VariableLength
; /* 0x48: 0x160 */
5080 ULONG DynamicCharged
; /* 0x4C: 0x164 */
5081 ULONG DynamicAvailable
; /* 0x50: 0x1F4 */
5082 ULONG PrivilegeCount
; /* 0x54: 0 */
5083 ULONG DefaultOwnerIndex
; /* 0x58: 1 */
5084 PSID_AND_ATTRIBUTES UserAndGroups
; /* 0x5C: TOKEN_USER Owners [UserAndGroupCount] DefaultOwnerIndex */
5085 PSID_AND_ATTRIBUTES RestrictedSids
;/* 0x60: 0 */
5086 PSID PrimaryGroup
; /* 0x64: */
5087 PLUID_AND_ATTRIBUTES Privileges
;/* 0x68: */
5088 PULONG DynamicPart
; /* 0x6C: */
5089 PACL DefaultDacl
; /* 0x70: */
5090 TOKEN_TYPE TokenType
; /* 0x74: TokenPrimary | TokenImpersonation */
5091 SECURITY_IMPERSONATION_LEVEL ImpersonationLevel
;/* 0x78: 0 */
5092 UCHAR TokenFlags
; /* 0x7C: 9 */
5093 BOOLEAN TokenInUse
; /* 0x7D: 1 */
5094 USHORT Alignment
; /* 0x7E: 4BB4 */
5095 PVOID ProxyData
; /* 0x80: 0 */
5096 PVOID AuditData
; /* 0x84: 0 */
5097 ULONG VariablePart
; /* 0x88: */
5101 TOKEN_SOURCE TokenSource
; /* 0x0: CHAR SourceName[8] = "*SYSTEM*" | "User32 " + LUID SourceIdentifier = 0x10 */
5102 LUID TokenId
; /* 0x10: 0x6F68 */
5103 LUID AuthenticationId
; /* 0x18: */
5104 LUID ParentTokenId
; /* 0x20: 0 */
5105 LARGE_INTEGER ExpirationTime
; /* 0x28: -1 no expired */
5106 PERESOURCE TokenLock
; /*+0x30: 0x8xxxxxxxx */
5107 ULONG Padding64
; /*+0x34: 0xXxxxxxxxx */
5108 SEP_AUDIT_POLICY AuditPolicy
; /*+0x38: */
5109 LUID ModifiedId
; /*+0x040: 0x6F6A */
5110 ULONG SessionId
; /*+0x048: */
5111 ULONG UserAndGroupCount
; /* 0x4C: 4 */
5112 ULONG RestrictedSidCount
; /*+0x50: 0 */
5113 ULONG VariableLength
; /* 0x54: 0x18 */
5114 ULONG DynamicCharged
; /* 0x58: 0x17C */
5115 ULONG DynamicAvailable
; /* 0x5C: 0x1F4 */
5116 ULONG PrivilegeCount
; /* 0x60: 0 */
5117 ULONG DefaultOwnerIndex
; /* 0x64: 1 */
5118 PSID_AND_ATTRIBUTES UserAndGroups
; /* 0x68: TOKEN_USER Owners [UserAndGroupCount] DefaultOwnerIndex */
5119 PSID_AND_ATTRIBUTES RestrictedSids
;/* 0x6C: 0 */
5120 PSID PrimaryGroup
; /* 0x70: */
5121 PLUID_AND_ATTRIBUTES Privileges
;/* 0x74: */
5122 PULONG DynamicPart
; /* 0x78: */
5123 PACL DefaultDacl
; /* 0x7C: */
5124 TOKEN_TYPE TokenType
; /* 0x80: TokenPrimary | TokenImpersonation */
5125 SECURITY_IMPERSONATION_LEVEL ImpersonationLevel
;/* 0x84: 0 */
5126 UCHAR TokenFlags
; /* 0x88: 9 */
5127 BOOLEAN TokenInUse
; /* 0x89: 1 */
5128 USHORT Alignment
; /* 0x8A: 4BB4 */
5129 PVOID ProxyData
; /* 0x8C: 0x8xxxxxxxx */
5130 PVOID AuditData
; /* 0x90: 0 */
5131 ULONG VariablePart
; /* 0x94: */
5135 TOKEN_SOURCE TokenSource
; /* +0x0: CHAR SourceName[8] = "*SYSTEM*" | "User32 " + LUID SourceIdentifier = 0x10 */
5136 LUID TokenId
; /* +0x10: 0x6F68 */
5137 LUID AuthenticationId
; /* +0x18: */
5138 LUID ParentTokenId
; /* +0x20: 0 */
5139 LARGE_INTEGER ExpirationTime
; /* +0x28: -1 no expired */
5140 PERESOURCE TokenLock
; /* +0x30: 0x8xxxxxxxx */
5141 ULONG Padding64
; /* +0x34: 0xXxxxxxxxx */
5142 SEP_AUDIT_POLICY AuditPolicy
; /* +0x38: */
5143 LUID ModifiedId
; /* +0x040: 0x6F6A */
5144 ULONG SessionId
; /* +0x048: */
5145 ULONG UserAndGroupCount
; /* +0x04c: 4 */
5146 ULONG RestrictedSidCount
; /* +0x050: 0 */
5147 ULONG PrivilegeCount
; /* +0x054: 0x18 */
5148 ULONG VariableLength
; /* +0x058: 0x17C */
5149 ULONG DynamicCharged
; /* +0x05c: 0x1F4 */
5150 ULONG DynamicAvailable
; /* +0x060: 0 */
5151 ULONG DefaultOwnerIndex
; /* +0x064: 1 */
5152 PSID_AND_ATTRIBUTES UserAndGroups
; /* +0x68: TOKEN_USER Owners [UserAndGroupCount] DefaultOwnerIndex */
5153 PSID_AND_ATTRIBUTES RestrictedSids
; /* +0x6C: 0 */
5154 PSID PrimaryGroup
; /* +0x70: */
5155 PLUID_AND_ATTRIBUTES Privileges
; /* +0x74: */
5156 PULONG DynamicPart
; /* +0x78: */
5157 PACL DefaultDacl
; /* +0x7C: */
5158 TOKEN_TYPE TokenType
; /* +0x80: TokenPrimary | TokenImpersonation */
5159 SECURITY_IMPERSONATION_LEVEL ImpersonationLevel
;/* +0x84: 0 */
5160 UCHAR TokenFlags
; /* +0x88: 9 */
5161 BOOLEAN TokenInUse
; /* +0x89: 1 */
5162 USHORT Alignment
; /* +0x8A: 4BB4 */
5163 PVOID ProxyData
; /* +0x8C: 0x8xxxxxxxx */
5164 PVOID AuditData
; /* +0x90: 0 */
5165 PVOID LogonSession
; /* +0x94: */
5166 LUID OriginatingLogonSession
;/* +0x98: */
5167 ULONG VariablePart
; /* +0xa0: */
5171 TOKEN_SOURCE TokenSource
; /* +0x000 */
5172 LUID TokenId
; /* +0x010 */
5173 LUID AuthenticationId
; /* +0x018 */
5174 LUID ParentTokenId
; /* +0x020 */
5175 LARGE_INTEGER ExpirationTime
; /* +0x028 */
5176 PERESOURCE TokenLock
; /* +0x030 */
5177 LUID ModifiedId
; /* +0x034 */
5178 SEP_AUDIT_POLICY_VISTA AuditPolicy
; /* +0x03c */
5179 ULONG SessionId
; /* +0x058 */
5180 ULONG UserAndGroupCount
; /* +0x05c */
5181 ULONG RestrictedSidCount
; /* +0x060 */
5182 ULONG PrivilegeCount
; /* +0x064 */
5183 ULONG VariableLength
; /* +0x068 */
5184 ULONG DynamicCharged
; /* +0x06c */
5185 ULONG DynamicAvailable
; /* +0x070 */
5186 ULONG DefaultOwnerIndex
; /* +0x074 */
5187 PSID_AND_ATTRIBUTES UserAndGroups
; /* +0x078 */
5188 PSID_AND_ATTRIBUTES RestrictedSids
; /* +0x07c */
5189 PSID PrimaryGroup
; /* +0x080 */
5190 PLUID_AND_ATTRIBUTES Privileges
; /* +0x084 */
5191 PULONG DynamicPart
; /* +0x088 */
5192 PACL DefaultDacl
; /* +0x08c */
5193 TOKEN_TYPE TokenType
; /* +0x090 */
5194 SECURITY_IMPERSONATION_LEVEL ImpersonationLevel
;/* +0x094 */
5195 ULONG TokenFlags
; /* +0x098 */
5196 BOOLEAN TokenInUse
; /* +0x09c */
5197 BOOLEAN WriterPresent
; /* +0x09d */
5198 USHORT Alignment
; /* +0x09e */
5199 ULONG IntegrityLevelIndex
; /* +0x0a0 */
5200 ULONG DesktopIntegrityLevelIndex
;/* +0x0a4 */
5201 ULONG MandatoryPolicy
; /* +0x0a8 */
5202 PVOID ProxyData
; /* +0x0ac */
5203 PVOID AuditData
; /* +0x0b0 */
5204 PVOID LogonSession
; /* +0x0b4 */
5205 LUID OriginatingLogonSession
;/* +0x0b8 */
5206 SID_AND_ATTRIBUTES_HASH SidHash
; /* +0x0c0 */
5207 SID_AND_ATTRIBUTES_HASH RestrictedSidHash
;/* +0x148 */
5208 ULONG VariablePart
; /* +0x1d0 */
5212 TOKEN_SOURCE TokenSource
; /* +0x000 */
5213 LUID TokenId
; /* +0x010 */
5214 LUID AuthenticationId
; /* +0x018 */
5215 LUID ParentTokenId
; /* +0x020 */
5216 LARGE_INTEGER ExpirationTime
; /* +0x028 */
5217 PERESOURCE TokenLock
; /* +0x030 */
5218 SEP_AUDIT_POLICY AuditPolicy
; /* +0x038 */
5219 LUID ModifiedId
; /* +0x040 */
5220 ULONG SessionId
; /* +0x048 */
5221 ULONG UserAndGroupCount
; /* +0x04c */
5222 ULONG RestrictedSidCount
; /* +0x050 */
5223 ULONG PrivilegeCount
; /* +0x054 */
5224 ULONG VariableLength
; /* +0x058 */
5225 ULONG DynamicCharged
; /* +0x05c */
5226 ULONG DynamicAvailable
; /* +0x060 */
5227 ULONG DefaultOwnerIndex
; /* +0x064 */
5228 PSID_AND_ATTRIBUTES UserAndGroups
; /* +0x068 */
5229 PSID_AND_ATTRIBUTES RestrictedSids
; /* +0x070 */
5230 PSID PrimaryGroup
; /* +0x078 */
5231 PLUID_AND_ATTRIBUTES Privileges
; /* +0x080 */
5232 PULONG DynamicPart
; /* +0x088 */
5233 PACL DefaultDacl
; /* +0x090 */
5234 TOKEN_TYPE TokenType
; /* +0x098 */
5235 SECURITY_IMPERSONATION_LEVEL ImpersonationLevel
; /* +0x09c */
5236 UCHAR TokenFlags
; /* +0x0a0 */
5237 BOOLEAN TokenInUse
; /* +0x0a1 */
5238 UCHAR Padding64
[6]; /* +0x0a2 */
5239 PVOID ProxyData
; /* +0x0a8 */
5240 PVOID AuditData
; /* +0x0b0 */
5241 PVOID LogonSession
; /* +0x0b8 */
5242 LUID OriginatingLogonSession
;/* +0x0c0 */
5243 ULONG VariablePart
; /* +0x0c8 */
5244 } XP64
; /* equial 2K3SP1x64 */
5246 } TOKEN_OBJECT
, *PTOKEN_OBJECT
;
5247 #include <poppack.h>
5249 typedef struct _TOKEN_OWNER
{
5251 } TOKEN_OWNER
, *PTOKEN_OWNER
;
5253 typedef struct _TOKEN_PRIMARY_GROUP
{
5255 } TOKEN_PRIMARY_GROUP
, *PTOKEN_PRIMARY_GROUP
;
5257 typedef struct _TOKEN_PRIVILEGES
{
5258 ULONG PrivilegeCount
;
5259 LUID_AND_ATTRIBUTES Privileges
[1];
5260 } TOKEN_PRIVILEGES
, *PTOKEN_PRIVILEGES
;
5262 typedef struct _TOKEN_STATISTICS
{
5264 LUID AuthenticationId
;
5265 LARGE_INTEGER ExpirationTime
;
5266 TOKEN_TYPE TokenType
;
5267 SECURITY_IMPERSONATION_LEVEL ImpersonationLevel
;
5268 ULONG DynamicCharged
;
5269 ULONG DynamicAvailable
;
5271 ULONG PrivilegeCount
;
5273 } TOKEN_STATISTICS
, *PTOKEN_STATISTICS
;
5275 typedef struct _TOKEN_USER
{
5276 SID_AND_ATTRIBUTES User
;
5277 } TOKEN_USER
, *PTOKEN_USER
;
5279 typedef struct _SECURITY_CLIENT_CONTEXT
{
5280 SECURITY_QUALITY_OF_SERVICE SecurityQos
;
5281 PACCESS_TOKEN ClientToken
;
5282 BOOLEAN DirectlyAccessClientToken
;
5283 BOOLEAN DirectAccessEffectiveOnly
;
5284 BOOLEAN ServerIsRemote
;
5285 TOKEN_CONTROL ClientTokenControl
;
5286 } SECURITY_CLIENT_CONTEXT
, *PSECURITY_CLIENT_CONTEXT
;
5288 typedef struct _TUNNEL
{
5290 PRTL_SPLAY_LINKS Cache
;
5291 LIST_ENTRY TimerQueue
;
5295 typedef struct _VACB
{
5297 PSHARED_CACHE_MAP SharedCacheMap
;
5299 LARGE_INTEGER FileOffset
;
5305 typedef struct _VAD_HEADER
{
5308 PVAD_HEADER ParentLink
;
5309 PVAD_HEADER LeftLink
;
5310 PVAD_HEADER RightLink
;
5311 ULONG Flags
; // LSB = CommitCharge
5313 PVOID FirstProtoPte
;
5317 } VAD_HEADER
, *PVAD_HEADER
;
5322 IN PFILE_OBJECT FileObject
,
5323 IN ULONG BytesToWrite
,
5331 IN PFILE_OBJECT FileObject
,
5332 IN PLARGE_INTEGER FileOffset
,
5336 OUT PIO_STATUS_BLOCK IoStatus
5342 IN PFILE_OBJECT FileObject
,
5343 IN PLARGE_INTEGER FileOffset
,
5349 #define CcCopyWriteWontFlush(FO, FOFF, LEN) ((LEN) <= 0x10000)
5351 typedef VOID (*PCC_POST_DEFERRED_WRITE
) (
5359 IN PFILE_OBJECT FileObject
,
5360 IN PCC_POST_DEFERRED_WRITE PostRoutine
,
5363 IN ULONG BytesToWrite
,
5370 IN PFILE_OBJECT FileObject
,
5371 IN ULONG FileOffset
,
5375 OUT PIO_STATUS_BLOCK IoStatus
5381 IN PFILE_OBJECT FileObject
,
5382 IN ULONG FileOffset
,
5390 IN PSECTION_OBJECT_POINTERS SectionObjectPointer
,
5391 IN PLARGE_INTEGER FileOffset OPTIONAL
,
5393 OUT PIO_STATUS_BLOCK IoStatus OPTIONAL
5396 typedef VOID (*PDIRTY_PAGE_ROUTINE
) (
5397 IN PFILE_OBJECT FileObject
,
5398 IN PLARGE_INTEGER FileOffset
,
5400 IN PLARGE_INTEGER OldestLsn
,
5401 IN PLARGE_INTEGER NewestLsn
,
5410 IN PDIRTY_PAGE_ROUTINE DirtyPageRoutine
,
5417 CcGetFileObjectFromBcb (
5423 CcGetFileObjectFromSectionPtrs (
5424 IN PSECTION_OBJECT_POINTERS SectionObjectPointer
5427 #define CcGetFileSizePointer(FO) ( \
5428 ((PLARGE_INTEGER)((FO)->SectionObjectPointer->SharedCacheMap) + 1) \
5431 #if (VER_PRODUCTBUILD >= 2195)
5435 CcGetFlushedValidData (
5436 IN PSECTION_OBJECT_POINTERS SectionObjectPointer
,
5437 IN BOOLEAN BcbListHeld
5440 #endif // (VER_PRODUCTBUILD >= 2195)
5444 CcGetLsnForFileObject (
5445 IN PFILE_OBJECT FileObject
,
5446 OUT PLARGE_INTEGER OldestLsn OPTIONAL
5449 typedef BOOLEAN (*PACQUIRE_FOR_LAZY_WRITE
) (
5454 typedef VOID (*PRELEASE_FROM_LAZY_WRITE
) (
5458 typedef BOOLEAN (*PACQUIRE_FOR_READ_AHEAD
) (
5463 typedef VOID (*PRELEASE_FROM_READ_AHEAD
) (
5467 typedef struct _CACHE_MANAGER_CALLBACKS
{
5468 PACQUIRE_FOR_LAZY_WRITE AcquireForLazyWrite
;
5469 PRELEASE_FROM_LAZY_WRITE ReleaseFromLazyWrite
;
5470 PACQUIRE_FOR_READ_AHEAD AcquireForReadAhead
;
5471 PRELEASE_FROM_READ_AHEAD ReleaseFromReadAhead
;
5472 } CACHE_MANAGER_CALLBACKS
, *PCACHE_MANAGER_CALLBACKS
;
5476 CcInitializeCacheMap (
5477 IN PFILE_OBJECT FileObject
,
5478 IN PCC_FILE_SIZES FileSizes
,
5479 IN BOOLEAN PinAccess
,
5480 IN PCACHE_MANAGER_CALLBACKS Callbacks
,
5481 IN PVOID LazyWriteContext
5484 #define CcIsFileCached(FO) ( \
5485 ((FO)->SectionObjectPointer != NULL) && \
5486 (((PSECTION_OBJECT_POINTERS)(FO)->SectionObjectPointer)->SharedCacheMap != NULL) \
5491 CcIsThereDirtyData (
5498 IN PFILE_OBJECT FileObject
,
5499 IN PLARGE_INTEGER FileOffset
,
5501 #if (VER_PRODUCTBUILD >= 2600)
5513 IN PFILE_OBJECT FileObject
,
5514 IN PLARGE_INTEGER FileOffset
,
5517 OUT PIO_STATUS_BLOCK IoStatus
5523 IN PFILE_OBJECT FileObject
,
5527 #if (VER_PRODUCTBUILD >= 2600)
5532 IN PFILE_OBJECT FileObject
,
5540 CcMdlWriteComplete (
5541 IN PFILE_OBJECT FileObject
,
5542 IN PLARGE_INTEGER FileOffset
,
5549 IN PFILE_OBJECT FileObject
,
5550 IN PLARGE_INTEGER FileOffset
,
5552 #if (VER_PRODUCTBUILD >= 2195)
5563 IN PFILE_OBJECT FileObject
,
5564 IN PLARGE_INTEGER FileOffset
,
5566 #if (VER_PRODUCTBUILD >= 2195)
5578 IN PFILE_OBJECT FileObject
,
5579 IN PLARGE_INTEGER FileOffset
,
5582 OUT PIO_STATUS_BLOCK IoStatus
5588 IN PFILE_OBJECT FileObject
,
5589 IN PLARGE_INTEGER FileOffset
,
5592 #if (VER_PRODUCTBUILD >= 2195)
5603 CcPurgeCacheSection (
5604 IN PSECTION_OBJECT_POINTERS SectionObjectPointer
,
5605 IN PLARGE_INTEGER FileOffset OPTIONAL
,
5607 IN BOOLEAN UninitializeCacheMaps
5610 #define CcReadAhead(FO, FOFF, LEN) ( \
5611 if ((LEN) >= 256) { \
5612 CcScheduleReadAhead((FO), (FOFF), (LEN)); \
5616 #if (VER_PRODUCTBUILD >= 2195)
5624 #endif // (VER_PRODUCTBUILD >= 2195)
5634 CcScheduleReadAhead (
5635 IN PFILE_OBJECT FileObject
,
5636 IN PLARGE_INTEGER FileOffset
,
5642 CcSetAdditionalCacheAttributes (
5643 IN PFILE_OBJECT FileObject
,
5644 IN BOOLEAN DisableReadAhead
,
5645 IN BOOLEAN DisableWriteBehind
5650 CcSetBcbOwnerPointer (
5652 IN PVOID OwnerPointer
5657 CcSetDirtyPageThreshold (
5658 IN PFILE_OBJECT FileObject
,
5659 IN ULONG DirtyPageThreshold
5664 CcSetDirtyPinnedData (
5666 IN PLARGE_INTEGER Lsn OPTIONAL
5672 IN PFILE_OBJECT FileObject
,
5673 IN PCC_FILE_SIZES FileSizes
5676 typedef VOID (*PFLUSH_TO_LSN
) (
5678 IN PLARGE_INTEGER Lsn
5683 CcSetLogHandleForFile (
5684 IN PFILE_OBJECT FileObject
,
5686 IN PFLUSH_TO_LSN FlushToLsnRoutine
5691 CcSetReadAheadGranularity (
5692 IN PFILE_OBJECT FileObject
,
5693 IN ULONG Granularity
// default: PAGE_SIZE
5694 // allowed: 2^n * PAGE_SIZE
5699 CcUninitializeCacheMap (
5700 IN PFILE_OBJECT FileObject
,
5701 IN PLARGE_INTEGER TruncateSize OPTIONAL
,
5702 IN PCACHE_UNINITIALIZE_EVENT UninitializeCompleteEvent OPTIONAL
5713 CcUnpinDataForThread (
5715 IN ERESOURCE_THREAD ResourceThreadId
5720 CcUnpinRepinnedBcb (
5722 IN BOOLEAN WriteThrough
,
5723 OUT PIO_STATUS_BLOCK IoStatus
5726 #if (VER_PRODUCTBUILD >= 2195)
5730 CcWaitForCurrentLazyWriterActivity (
5734 #endif // (VER_PRODUCTBUILD >= 2195)
5739 IN PFILE_OBJECT FileObject
,
5740 IN PLARGE_INTEGER StartOffset
,
5741 IN PLARGE_INTEGER EndOffset
,
5747 ExDisableResourceBoostLite (
5748 IN PERESOURCE Resource
5753 ExQueryPoolBlockSize (
5755 OUT PBOOLEAN QuotaCharged
5758 #define FlagOn(x, f) ((x) & (f))
5760 #if (VER_PRODUCTBUILD >= 2195)
5764 FsRtlAcquireFileExclusive (
5765 IN PFILE_OBJECT FileObject
5768 #endif // (VER_PRODUCTBUILD >= 2195)
5772 FsRtlAddLargeMcbEntry (
5776 IN LONGLONG SectorCount
5785 IN ULONG SectorCount
5790 FsRtlAddToTunnelCache (
5792 IN ULONGLONG DirectoryKey
,
5793 IN PUNICODE_STRING ShortName
,
5794 IN PUNICODE_STRING LongName
,
5795 IN BOOLEAN KeyByShortName
,
5796 IN ULONG DataLength
,
5800 #if (VER_PRODUCTBUILD >= 2195)
5803 FsRtlAllocateFileLock (
5804 IN PCOMPLETE_LOCK_IRP_ROUTINE CompleteLockIrpRoutine OPTIONAL
,
5805 IN PUNLOCK_ROUTINE UnlockRoutine OPTIONAL
5808 #endif // (VER_PRODUCTBUILD >= 2195)
5813 IN POOL_TYPE PoolType
,
5814 IN ULONG NumberOfBytes
5819 FsRtlAllocatePoolWithQuota (
5820 IN POOL_TYPE PoolType
,
5821 IN ULONG NumberOfBytes
5826 FsRtlAllocatePoolWithQuotaTag (
5827 IN POOL_TYPE PoolType
,
5828 IN ULONG NumberOfBytes
,
5834 FsRtlAllocatePoolWithTag (
5835 IN POOL_TYPE PoolType
,
5836 IN ULONG NumberOfBytes
,
5842 FsRtlAllocateResource (
5848 FsRtlAreNamesEqual (
5849 IN PUNICODE_STRING Name1
,
5850 IN PUNICODE_STRING Name2
,
5851 IN BOOLEAN IgnoreCase
,
5852 IN PWCHAR UpcaseTable OPTIONAL
5855 #define FsRtlAreThereCurrentFileLocks(FL) ( \
5856 ((FL)->FastIoIsQuestionable) \
5862 IN PDEVICE_OBJECT TargetDevice
5866 FsRtlCheckLockForReadAccess:
5868 All this really does is pick out the lock parameters from the irp (io stack
5869 location?), get IoGetRequestorProcess, and pass values on to
5870 FsRtlFastCheckLockForRead.
5874 FsRtlCheckLockForReadAccess (
5875 IN PFILE_LOCK FileLock
,
5880 FsRtlCheckLockForWriteAccess:
5882 All this really does is pick out the lock parameters from the irp (io stack
5883 location?), get IoGetRequestorProcess, and pass values on to
5884 FsRtlFastCheckLockForWrite.
5888 FsRtlCheckLockForWriteAccess (
5889 IN PFILE_LOCK FileLock
,
5895 (*POPLOCK_WAIT_COMPLETE_ROUTINE
) (
5902 (*POPLOCK_FS_PREPOST_IRP
) (
5913 IN POPLOCK_WAIT_COMPLETE_ROUTINE CompletionRoutine OPTIONAL
,
5914 IN POPLOCK_FS_PREPOST_IRP PostIrpRoutine OPTIONAL
5920 IN PFILE_OBJECT FileObject
,
5921 IN PLARGE_INTEGER FileOffset
,
5926 OUT PIO_STATUS_BLOCK IoStatus
,
5927 IN PDEVICE_OBJECT DeviceObject
5933 IN PFILE_OBJECT FileObject
,
5934 IN PLARGE_INTEGER FileOffset
,
5939 OUT PIO_STATUS_BLOCK IoStatus
,
5940 IN PDEVICE_OBJECT DeviceObject
5945 FsRtlCurrentBatchOplock (
5951 FsRtlDeleteKeyFromTunnelCache (
5953 IN ULONGLONG DirectoryKey
5958 FsRtlDeleteTunnelCache (
5964 FsRtlDeregisterUncProvider (
5971 IN ANSI_STRING InputName
,
5972 OUT PANSI_STRING FirstPart
,
5973 OUT PANSI_STRING RemainingPart
5979 IN UNICODE_STRING Path
,
5980 OUT PUNICODE_STRING FirstName
,
5981 OUT PUNICODE_STRING RemainingName
5986 FsRtlDoesDbcsContainWildCards (
5987 IN PANSI_STRING Name
5992 FsRtlDoesNameContainWildCards (
5993 IN PUNICODE_STRING Name
5996 #define FsRtlEnterFileSystem KeEnterCriticalRegion
5998 #define FsRtlExitFileSystem KeLeaveCriticalRegion
6002 FsRtlFastCheckLockForRead (
6003 IN PFILE_LOCK FileLock
,
6004 IN PLARGE_INTEGER FileOffset
,
6005 IN PLARGE_INTEGER Length
,
6007 IN PFILE_OBJECT FileObject
,
6008 IN PEPROCESS Process
6013 FsRtlFastCheckLockForWrite (
6014 IN PFILE_LOCK FileLock
,
6015 IN PLARGE_INTEGER FileOffset
,
6016 IN PLARGE_INTEGER Length
,
6018 IN PFILE_OBJECT FileObject
,
6019 IN PEPROCESS Process
6022 #define FsRtlFastLock(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11) ( \
6023 FsRtlPrivateLock(A1, A2, A3, A4, A5, A6, A7, A8, A9, NULL, A10, A11) \
6028 FsRtlFastUnlockAll (
6029 IN PFILE_LOCK FileLock
,
6030 IN PFILE_OBJECT FileObject
,
6031 IN PEPROCESS Process
,
6032 IN PVOID Context OPTIONAL
6034 //ret: STATUS_RANGE_NOT_LOCKED
6038 FsRtlFastUnlockAllByKey (
6039 IN PFILE_LOCK FileLock
,
6040 IN PFILE_OBJECT FileObject
,
6041 IN PEPROCESS Process
,
6043 IN PVOID Context OPTIONAL
6045 //ret: STATUS_RANGE_NOT_LOCKED
6049 FsRtlFastUnlockSingle (
6050 IN PFILE_LOCK FileLock
,
6051 IN PFILE_OBJECT FileObject
,
6052 IN PLARGE_INTEGER FileOffset
,
6053 IN PLARGE_INTEGER Length
,
6054 IN PEPROCESS Process
,
6056 IN PVOID Context OPTIONAL
,
6057 IN BOOLEAN AlreadySynchronized
6059 //ret: STATUS_RANGE_NOT_LOCKED
6063 FsRtlFindInTunnelCache (
6065 IN ULONGLONG DirectoryKey
,
6066 IN PUNICODE_STRING Name
,
6067 OUT PUNICODE_STRING ShortName
,
6068 OUT PUNICODE_STRING LongName
,
6069 IN OUT PULONG DataLength
,
6073 #if (VER_PRODUCTBUILD >= 2195)
6077 IN PFILE_LOCK FileLock
6080 #endif // (VER_PRODUCTBUILD >= 2195)
6085 IN PFILE_OBJECT FileObject
,
6086 IN OUT PLARGE_INTEGER FileSize
6090 FsRtlGetNextFileLock:
6092 ret: NULL if no more locks
6095 FsRtlGetNextFileLock uses FileLock->LastReturnedLockInfo and
6096 FileLock->LastReturnedLock as storage.
6097 LastReturnedLock is a pointer to the 'raw' lock inkl. double linked
6098 list, and FsRtlGetNextFileLock needs this to get next lock on subsequent
6099 calls with Restart = FALSE.
6103 FsRtlGetNextFileLock (
6104 IN PFILE_LOCK FileLock
,
6110 FsRtlGetNextLargeMcbEntry (
6115 OUT PLONGLONG SectorCount
6120 FsRtlGetNextMcbEntry (
6125 OUT PULONG SectorCount
6128 #if (VER_PRODUCTBUILD >= 2600)
6132 FsRtlIncrementCcFastReadNotPossible (
6138 FsRtlIncrementCcFastReadNoWait (
6144 FsRtlIncrementCcFastReadResourceMiss (
6150 FsRtlIncrementCcFastReadWait (
6154 #endif // (VER_PRODUCTBUILD >= 2600)
6158 FsRtlInitializeFileLock (
6159 IN PFILE_LOCK FileLock
,
6160 IN PCOMPLETE_LOCK_IRP_ROUTINE CompleteLockIrpRoutine OPTIONAL
,
6161 IN PUNLOCK_ROUTINE UnlockRoutine OPTIONAL
6166 FsRtlInitializeLargeMcb (
6168 IN POOL_TYPE PoolType
6173 FsRtlInitializeMcb (
6175 IN POOL_TYPE PoolType
6180 FsRtlInitializeOplock (
6181 IN OUT POPLOCK Oplock
6186 FsRtlInitializeTunnelCache (
6192 FsRtlIsDbcsInExpression (
6193 IN PANSI_STRING Expression
,
6194 IN PANSI_STRING Name
6199 FsRtlIsFatDbcsLegal (
6200 IN ANSI_STRING DbcsName
,
6201 IN BOOLEAN WildCardsPermissible
,
6202 IN BOOLEAN PathNamePermissible
,
6203 IN BOOLEAN LeadingBackslashPermissible
6208 FsRtlIsHpfsDbcsLegal (
6209 IN ANSI_STRING DbcsName
,
6210 IN BOOLEAN WildCardsPermissible
,
6211 IN BOOLEAN PathNamePermissible
,
6212 IN BOOLEAN LeadingBackslashPermissible
6217 FsRtlIsNameInExpression (
6218 IN PUNICODE_STRING Expression
,
6219 IN PUNICODE_STRING Name
,
6220 IN BOOLEAN IgnoreCase
,
6221 IN PWCHAR UpcaseTable OPTIONAL
6226 FsRtlIsNtstatusExpected (
6227 IN NTSTATUS Ntstatus
6230 #if (VER_PRODUCTBUILD >= 2600)
6235 IN PFILE_OBJECT FileObject
6238 #endif // (VER_PRODUCTBUILD >= 2600)
6242 FsRtlIsTotalDeviceFailure (
6246 #define FsRtlIsUnicodeCharacterWild(C) ( \
6249 FlagOn((*FsRtlLegalAnsiCharacterArray)[(C)], FSRTL_WILD_CHARACTER )) \
6254 FsRtlLookupLargeMcbEntry (
6257 OUT PLONGLONG Lbn OPTIONAL
,
6258 OUT PLONGLONG SectorCountFromLbn OPTIONAL
,
6259 OUT PLONGLONG StartingLbn OPTIONAL
,
6260 OUT PLONGLONG SectorCountFromStartingLbn OPTIONAL
,
6261 OUT PULONG Index OPTIONAL
6266 FsRtlLookupLastLargeMcbEntry (
6272 #if (VER_PRODUCTBUILD >= 2195)
6276 FsRtlLookupLastLargeMcbEntryAndIndex (
6277 IN PLARGE_MCB OpaqueMcb
,
6278 OUT PLONGLONG LargeVbn
,
6279 OUT PLONGLONG LargeLbn
,
6283 #endif // (VER_PRODUCTBUILD >= 2195)
6287 FsRtlLookupLastMcbEntry (
6295 FsRtlLookupMcbEntry (
6299 OUT PULONG SectorCount OPTIONAL
,
6305 FsRtlMdlReadComplete (
6306 IN PFILE_OBJECT FileObject
,
6312 FsRtlMdlReadCompleteDev (
6313 IN PFILE_OBJECT FileObject
,
6315 IN PDEVICE_OBJECT DeviceObject
6318 #if (VER_PRODUCTBUILD >= 1381)
6323 IN PFILE_OBJECT FileObject
,
6324 IN PLARGE_INTEGER FileOffset
,
6328 OUT PIO_STATUS_BLOCK IoStatus
,
6329 IN PDEVICE_OBJECT DeviceObject
6332 #endif // (VER_PRODUCTBUILD >= 1381)
6336 FsRtlMdlWriteComplete (
6337 IN PFILE_OBJECT FileObject
,
6338 IN PLARGE_INTEGER FileOffset
,
6344 FsRtlMdlWriteCompleteDev (
6345 IN PFILE_OBJECT FileObject
,
6346 IN PLARGE_INTEGER FileOffset
,
6348 IN PDEVICE_OBJECT DeviceObject
6353 FsRtlNormalizeNtstatus (
6354 IN NTSTATUS Exception
,
6355 IN NTSTATUS GenericException
6360 FsRtlNotifyChangeDirectory (
6361 IN PNOTIFY_SYNC NotifySync
,
6363 IN PSTRING FullDirectoryName
,
6364 IN PLIST_ENTRY NotifyList
,
6365 IN BOOLEAN WatchTree
,
6366 IN ULONG CompletionFilter
,
6372 FsRtlNotifyCleanup (
6373 IN PNOTIFY_SYNC NotifySync
,
6374 IN PLIST_ENTRY NotifyList
,
6378 typedef BOOLEAN (*PCHECK_FOR_TRAVERSE_ACCESS
) (
6379 IN PVOID NotifyContext
,
6380 IN PVOID TargetContext
,
6381 IN PSECURITY_SUBJECT_CONTEXT SubjectContext
6384 #if (VER_PRODUCTBUILD >= 2600)
6386 typedef BOOLEAN (*PFILTER_REPORT_CHANGE
) (
6387 IN PVOID NotifyContext
,
6388 IN PVOID FilterContext
6393 FsRtlNotifyFilterChangeDirectory (
6394 IN PNOTIFY_SYNC NotifySync
,
6395 IN PLIST_ENTRY NotifyList
,
6397 IN PSTRING FullDirectoryName
,
6398 IN BOOLEAN WatchTree
,
6399 IN BOOLEAN IgnoreBuffer
,
6400 IN ULONG CompletionFilter
,
6402 IN PCHECK_FOR_TRAVERSE_ACCESS TraverseCallback OPTIONAL
,
6403 IN PSECURITY_SUBJECT_CONTEXT SubjectContext OPTIONAL
,
6404 IN PFILTER_REPORT_CHANGE FilterCallback OPTIONAL
6409 FsRtlNotifyFilterReportChange (
6410 IN PNOTIFY_SYNC NotifySync
,
6411 IN PLIST_ENTRY NotifyList
,
6412 IN PSTRING FullTargetName
,
6413 IN USHORT TargetNameOffset
,
6414 IN PSTRING StreamName OPTIONAL
,
6415 IN PSTRING NormalizedParentName OPTIONAL
,
6416 IN ULONG FilterMatch
,
6418 IN PVOID TargetContext
,
6419 IN PVOID FilterContext
6422 #endif // (VER_PRODUCTBUILD >= 2600)
6426 FsRtlNotifyFullChangeDirectory (
6427 IN PNOTIFY_SYNC NotifySync
,
6428 IN PLIST_ENTRY NotifyList
,
6430 IN PSTRING FullDirectoryName
,
6431 IN BOOLEAN WatchTree
,
6432 IN BOOLEAN IgnoreBuffer
,
6433 IN ULONG CompletionFilter
,
6435 IN PCHECK_FOR_TRAVERSE_ACCESS TraverseCallback OPTIONAL
,
6436 IN PSECURITY_SUBJECT_CONTEXT SubjectContext OPTIONAL
6441 FsRtlNotifyFullReportChange (
6442 IN PNOTIFY_SYNC NotifySync
,
6443 IN PLIST_ENTRY NotifyList
,
6444 IN PSTRING FullTargetName
,
6445 IN USHORT TargetNameOffset
,
6446 IN PSTRING StreamName OPTIONAL
,
6447 IN PSTRING NormalizedParentName OPTIONAL
,
6448 IN ULONG FilterMatch
,
6450 IN PVOID TargetContext
6455 FsRtlNotifyInitializeSync (
6456 IN PNOTIFY_SYNC
*NotifySync
6461 FsRtlNotifyReportChange (
6462 IN PNOTIFY_SYNC NotifySync
,
6463 IN PLIST_ENTRY NotifyList
,
6464 IN PSTRING FullTargetName
,
6465 IN PUSHORT FileNamePartLength
,
6466 IN ULONG FilterMatch
6471 FsRtlNotifyUninitializeSync (
6472 IN PNOTIFY_SYNC
*NotifySync
6475 #if (VER_PRODUCTBUILD >= 2195)
6479 FsRtlNotifyVolumeEvent (
6480 IN PFILE_OBJECT FileObject
,
6484 #endif // (VER_PRODUCTBUILD >= 2195)
6488 FsRtlNumberOfRunsInLargeMcb (
6494 FsRtlNumberOfRunsInMcb (
6508 FsRtlOplockIsFastIoPossible (
6514 (*PFSRTL_STACK_OVERFLOW_ROUTINE
) (
6521 FsRtlPostPagingFileStackOverflow (
6524 IN PFSRTL_STACK_OVERFLOW_ROUTINE StackOverflowRoutine
6529 FsRtlPostStackOverflow (
6532 IN PFSRTL_STACK_OVERFLOW_ROUTINE StackOverflowRoutine
6535 #if (VER_PRODUCTBUILD >= 1381)
6539 FsRtlPrepareMdlWriteDev (
6540 IN PFILE_OBJECT FileObject
,
6541 IN PLARGE_INTEGER FileOffset
,
6545 OUT PIO_STATUS_BLOCK IoStatus
,
6546 IN PDEVICE_OBJECT DeviceObject
6549 #endif // (VER_PRODUCTBUILD >= 1381)
6554 ret: IoStatus->Status: STATUS_PENDING, STATUS_LOCK_NOT_GRANTED
6557 -Calls IoCompleteRequest if Irp
6558 -Uses exception handling / ExRaiseStatus with STATUS_INSUFFICIENT_RESOURCES
6563 IN PFILE_LOCK FileLock
,
6564 IN PFILE_OBJECT FileObject
,
6565 IN PLARGE_INTEGER FileOffset
,
6566 IN PLARGE_INTEGER Length
,
6567 IN PEPROCESS Process
,
6569 IN BOOLEAN FailImmediately
,
6570 IN BOOLEAN ExclusiveLock
,
6571 OUT PIO_STATUS_BLOCK IoStatus
,
6572 IN PIRP Irp OPTIONAL
,
6574 IN BOOLEAN AlreadySynchronized
6578 FsRtlProcessFileLock:
6581 -STATUS_INVALID_DEVICE_REQUEST
6582 -STATUS_RANGE_NOT_LOCKED from unlock routines.
6583 -STATUS_PENDING, STATUS_LOCK_NOT_GRANTED from FsRtlPrivateLock
6584 (redirected IoStatus->Status).
6587 -switch ( Irp->CurrentStackLocation->MinorFunction )
6588 lock: return FsRtlPrivateLock;
6589 unlocksingle: return FsRtlFastUnlockSingle;
6590 unlockall: return FsRtlFastUnlockAll;
6591 unlockallbykey: return FsRtlFastUnlockAllByKey;
6592 default: IofCompleteRequest with STATUS_INVALID_DEVICE_REQUEST;
6593 return STATUS_INVALID_DEVICE_REQUEST;
6595 -'AllwaysZero' is passed thru as 'AllwaysZero' to lock / unlock routines.
6596 -'Irp' is passet thru as 'Irp' to FsRtlPrivateLock.
6600 FsRtlProcessFileLock (
6601 IN PFILE_LOCK FileLock
,
6603 IN PVOID Context OPTIONAL
6608 FsRtlRegisterUncProvider (
6609 IN OUT PHANDLE MupHandle
,
6610 IN PUNICODE_STRING RedirectorDeviceName
,
6611 IN BOOLEAN MailslotsSupported
6614 #if (VER_PRODUCTBUILD >= 2195)
6619 IN PFILE_OBJECT FileObject
6622 #endif // (VER_PRODUCTBUILD >= 2195)
6626 FsRtlRemoveLargeMcbEntry (
6629 IN LONGLONG SectorCount
6634 FsRtlRemoveMcbEntry (
6637 IN ULONG SectorCount
6640 #if (VER_PRODUCTBUILD >= 2195)
6644 FsRtlResetLargeMcb (
6646 IN BOOLEAN SelfSynchronized
6649 #endif // (VER_PRODUCTBUILD >= 2195)
6651 #if (VER_PRODUCTBUILD >= 2600)
6653 #define FsRtlSetupAdvancedHeader( _advhdr, _fmutx ) \
6655 SetFlag( (_advhdr)->Flags, FSRTL_FLAG_ADVANCED_HEADER ); \
6656 SetFlag( (_advhdr)->Flags2, FSRTL_FLAG2_SUPPORTS_FILTER_CONTEXTS ); \
6657 (_advhdr)->Version = FSRTL_FCB_HEADER_V1; \
6658 InitializeListHead( &(_advhdr)->FilterContexts ); \
6659 if ((_fmutx) != NULL) { \
6660 (_advhdr)->FastMutex = (_fmutx); \
6662 *((PULONG_PTR)(&(_advhdr)->PushLock)) = 0; \
6663 (_advhdr)->FileContextSupportPointer = NULL; \
6666 #endif // (VER_PRODUCTBUILD >= 2600)
6670 FsRtlSplitLargeMcb (
6676 #if (VER_PRODUCTBUILD >= 2600)
6680 FsRtlTeardownPerFileContexts (
6681 IN PVOID
*PerFileContextPointer
6686 FsRtlTeardownPerStreamContexts (
6687 IN PFSRTL_ADVANCED_FCB_HEADER AdvancedHeader
6690 #endif // (VER_PRODUCTBUILD >= 2600)
6694 FsRtlTruncateLargeMcb (
6708 FsRtlUninitializeFileLock (
6709 IN PFILE_LOCK FileLock
6714 FsRtlUninitializeLargeMcb (
6720 FsRtlUninitializeMcb (
6726 FsRtlUninitializeOplock (
6727 IN OUT POPLOCK Oplock
6731 // If using HalDisplayString during boot on Windows 2000 or later you must
6732 // first call InbvEnableDisplayString.
6744 HalQueryRealTimeClock (
6745 IN OUT PTIME_FIELDS TimeFields
6751 HalSetRealTimeClock (
6752 IN PTIME_FIELDS TimeFields
6755 #if (VER_PRODUCTBUILD >= 2195)
6759 InbvAcquireDisplayOwnership (
6765 InbvCheckDisplayOwnership (
6777 InbvEnableBootDriver (
6783 InbvEnableDisplayString (
6789 InbvInstallDisplayStringFilter (
6795 InbvIsBootDriverInstalled (
6801 InbvNotifyDisplayOwnershipLost (
6813 InbvSetScrollRegion (
6828 InbvSolidColorFill (
6836 #endif // (VER_PRODUCTBUILD >= 2195)
6838 #define InitializeMessageHeader(m, l, t) { \
6839 (m)->Length = (USHORT)(l); \
6840 (m)->DataLength = (USHORT)(l - sizeof( LPC_MESSAGE )); \
6841 (m)->MessageType = (USHORT)(t); \
6842 (m)->DataInfoOffset = 0; \
6847 IoAcquireVpbSpinLock (
6851 #if (VER_PRODUCTBUILD >= 2600)
6855 IoAttachDeviceToDeviceStackSafe (
6856 IN PDEVICE_OBJECT SourceDevice
,
6857 IN PDEVICE_OBJECT TargetDevice
,
6858 OUT PDEVICE_OBJECT
*AttachedToDeviceObject
6861 #endif // (VER_PRODUCTBUILD >= 2600)
6865 IoCheckDesiredAccess (
6866 IN OUT PACCESS_MASK DesiredAccess
,
6867 IN ACCESS_MASK GrantedAccess
6872 IoCheckEaBufferValidity (
6873 IN PFILE_FULL_EA_INFORMATION EaBuffer
,
6875 OUT PULONG ErrorOffset
6880 IoCheckFunctionAccess (
6881 IN ACCESS_MASK GrantedAccess
,
6882 IN UCHAR MajorFunction
,
6883 IN UCHAR MinorFunction
,
6884 IN ULONG IoControlCode
,
6885 IN PFILE_INFORMATION_CLASS FileInformationClass OPTIONAL
,
6886 IN PFS_INFORMATION_CLASS FsInformationClass OPTIONAL
6889 #if (VER_PRODUCTBUILD >= 2195)
6893 IoCheckQuerySetFileInformation (
6894 IN FILE_INFORMATION_CLASS FileInformationClass
,
6896 IN BOOLEAN SetOperation
6901 IoCheckQuerySetVolumeInformation (
6902 IN FS_INFORMATION_CLASS FsInformationClass
,
6904 IN BOOLEAN SetOperation
6909 IoCheckQuotaBufferValidity (
6910 IN PFILE_QUOTA_INFORMATION QuotaBuffer
,
6911 IN ULONG QuotaLength
,
6912 OUT PULONG ErrorOffset
6915 #endif // (VER_PRODUCTBUILD >= 2195)
6917 #if (VER_PRODUCTBUILD >= 2600)
6921 IoCreateFileSpecifyDeviceObjectHint (
6922 OUT PHANDLE FileHandle
,
6923 IN ACCESS_MASK DesiredAccess
,
6924 IN POBJECT_ATTRIBUTES ObjectAttributes
,
6925 OUT PIO_STATUS_BLOCK IoStatusBlock
,
6926 IN PLARGE_INTEGER AllocationSize OPTIONAL
,
6927 IN ULONG FileAttributes
,
6928 IN ULONG ShareAccess
,
6929 IN ULONG Disposition
,
6930 IN ULONG CreateOptions
,
6931 IN PVOID EaBuffer OPTIONAL
,
6933 IN CREATE_FILE_TYPE CreateFileType
,
6934 IN PVOID ExtraCreateParameters OPTIONAL
,
6936 IN PVOID DeviceObject
6939 #endif // (VER_PRODUCTBUILD >= 2600)
6943 IoCreateStreamFileObject (
6944 IN PFILE_OBJECT FileObject OPTIONAL
,
6945 IN PDEVICE_OBJECT DeviceObject OPTIONAL
6948 #if (VER_PRODUCTBUILD >= 2600)
6952 IoCreateStreamFileObjectEx (
6953 IN PFILE_OBJECT FileObject OPTIONAL
,
6954 IN PDEVICE_OBJECT DeviceObject OPTIONAL
,
6955 OUT PHANDLE FileObjectHandle OPTIONAL
6958 #endif // (VER_PRODUCTBUILD >= 2600)
6960 #if (VER_PRODUCTBUILD >= 2195)
6964 IoCreateStreamFileObjectLite (
6965 IN PFILE_OBJECT FileObject OPTIONAL
,
6966 IN PDEVICE_OBJECT DeviceObject OPTIONAL
6969 #endif // (VER_PRODUCTBUILD >= 2195)
6971 #if (VER_PRODUCTBUILD >= 2600)
6975 IoEnumerateDeviceObjectList (
6976 IN PDRIVER_OBJECT DriverObject
,
6977 IN PDEVICE_OBJECT
*DeviceObjectList
,
6978 IN ULONG DeviceObjectListSize
,
6979 OUT PULONG ActualNumberDeviceObjects
6982 #endif // (VER_PRODUCTBUILD >= 2600)
6986 IoFastQueryNetworkAttributes (
6987 IN POBJECT_ATTRIBUTES ObjectAttributes
,
6988 IN ACCESS_MASK DesiredAccess
,
6989 IN ULONG OpenOptions
,
6990 OUT PIO_STATUS_BLOCK IoStatus
,
6991 OUT PFILE_NETWORK_OPEN_INFORMATION Buffer
6996 IoGetAttachedDevice (
6997 IN PDEVICE_OBJECT DeviceObject
7002 IoGetBaseFileSystemDeviceObject (
7003 IN PFILE_OBJECT FileObject
7006 #if (VER_PRODUCTBUILD >= 2600)
7010 IoGetDeviceAttachmentBaseRef (
7011 IN PDEVICE_OBJECT DeviceObject
7016 IoGetDiskDeviceObject (
7017 IN PDEVICE_OBJECT FileSystemDeviceObject
,
7018 OUT PDEVICE_OBJECT
*DiskDeviceObject
7023 IoGetLowerDeviceObject (
7024 IN PDEVICE_OBJECT DeviceObject
7027 #endif // (VER_PRODUCTBUILD >= 2600)
7031 IoGetRequestorProcess (
7035 #if (VER_PRODUCTBUILD >= 2195)
7039 IoGetRequestorProcessId (
7043 #endif // (VER_PRODUCTBUILD >= 2195)
7051 #define IoIsFileOpenedExclusively(FileObject) ( \
7053 (FileObject)->SharedRead || \
7054 (FileObject)->SharedWrite || \
7055 (FileObject)->SharedDelete \
7059 #if (VER_PRODUCTBUILD >= 2195)
7063 IoIsFileOriginRemote (
7064 IN PFILE_OBJECT FileObject
7067 #endif // (VER_PRODUCTBUILD >= 2195)
7071 IoIsOperationSynchronous (
7081 #if (VER_PRODUCTBUILD >= 2195)
7085 IoIsValidNameGraftingBuffer (
7087 IN PREPARSE_DATA_BUFFER ReparseBuffer
7090 #endif // (VER_PRODUCTBUILD >= 2195)
7095 IN PFILE_OBJECT FileObject
,
7097 IN PLARGE_INTEGER Offset
,
7099 OUT PIO_STATUS_BLOCK IoStatusBlock
7102 #if (VER_PRODUCTBUILD >= 2600)
7106 IoQueryFileDosDeviceName (
7107 IN PFILE_OBJECT FileObject
,
7108 OUT POBJECT_NAME_INFORMATION
*ObjectNameInformation
7111 #endif // (VER_PRODUCTBUILD >= 2600)
7115 IoQueryFileInformation (
7116 IN PFILE_OBJECT FileObject
,
7117 IN FILE_INFORMATION_CLASS FileInformationClass
,
7119 OUT PVOID FileInformation
,
7120 OUT PULONG ReturnedLength
7125 IoQueryVolumeInformation (
7126 IN PFILE_OBJECT FileObject
,
7127 IN FS_INFORMATION_CLASS FsInformationClass
,
7129 OUT PVOID FsInformation
,
7130 OUT PULONG ReturnedLength
7133 #if (VER_PRODUCTBUILD >= 1381)
7141 #endif // (VER_PRODUCTBUILD >= 1381)
7145 IoRegisterFileSystem (
7146 IN OUT PDEVICE_OBJECT DeviceObject
7149 #if (VER_PRODUCTBUILD >= 1381)
7151 typedef VOID (*PDRIVER_FS_NOTIFICATION
) (
7152 IN PDEVICE_OBJECT DeviceObject
,
7153 IN BOOLEAN DriverActive
7158 IoRegisterFsRegistrationChange (
7159 IN PDRIVER_OBJECT DriverObject
,
7160 IN PDRIVER_FS_NOTIFICATION DriverNotificationRoutine
7163 #endif // (VER_PRODUCTBUILD >= 1381)
7167 IoReleaseVpbSpinLock (
7173 IoSetDeviceToVerify (
7175 IN PDEVICE_OBJECT DeviceObject
7178 #if (VER_PRODUCTBUILD >= 2195)
7183 IN PFILE_OBJECT FileObject
,
7187 #endif // (VER_PRODUCTBUILD >= 2195)
7192 IN PFILE_OBJECT FileObject
,
7193 IN FILE_INFORMATION_CLASS FileInformationClass
,
7195 IN PVOID FileInformation
7206 IoSynchronousPageWrite (
7207 IN PFILE_OBJECT FileObject
,
7209 IN PLARGE_INTEGER FileOffset
,
7211 OUT PIO_STATUS_BLOCK IoStatusBlock
7222 IoUnregisterFileSystem (
7223 IN OUT PDEVICE_OBJECT DeviceObject
7226 #if (VER_PRODUCTBUILD >= 1381)
7230 IoUnregisterFsRegistrationChange (
7231 IN PDRIVER_OBJECT DriverObject
,
7232 IN PDRIVER_FS_NOTIFICATION DriverNotificationRoutine
7235 #endif // (VER_PRODUCTBUILD >= 1381)
7240 IN PDEVICE_OBJECT DeviceObject
,
7241 IN BOOLEAN AllowRawMount
7244 #if (VER_PRODUCTBUILD >= 2195)
7249 KeAcquireQueuedSpinLock (
7250 IN KSPIN_LOCK_QUEUE_NUMBER Number
7253 #endif // (VER_PRODUCTBUILD >= 2195)
7258 IN PEPROCESS Process
7273 PKKERNEL_ROUTINE KernelRoutine
,
7274 PKRUNDOWN_ROUTINE RundownRoutine
,
7275 PKNORMAL_ROUTINE NormalRoutine
,
7276 KPROCESSOR_MODE ApcMode
,
7282 KeInitializeMutant (
7283 IN PRKMUTANT Mutant
,
7284 IN BOOLEAN InitialOwner
7291 IN ULONG Count OPTIONAL
7298 IN PLIST_ENTRY Entry
7305 IN PLIST_ENTRY Entry
7312 IN PVOID SystemArgument1
,
7313 IN PVOID SystemArgument2
,
7314 IN KPRIORITY Increment
7317 #if (VER_PRODUCTBUILD >= 2600)
7321 KeIsAttachedProcess (
7325 #endif // (VER_PRODUCTBUILD >= 2600)
7348 IN PRKMUTANT Mutant
,
7349 IN KPRIORITY Increment
,
7350 IN BOOLEAN Abandoned
,
7354 #if (VER_PRODUCTBUILD >= 2195)
7359 KeReleaseQueuedSpinLock (
7360 IN KSPIN_LOCK_QUEUE_NUMBER Number
,
7364 #endif // (VER_PRODUCTBUILD >= 2195)
7370 IN KPROCESSOR_MODE WaitMode
,
7371 IN PLARGE_INTEGER Timeout OPTIONAL
7374 #if (VER_PRODUCTBUILD >= 2195)
7378 KeRevertToUserAffinityThread (
7382 #endif // (VER_PRODUCTBUILD >= 2195)
7390 #if (VER_PRODUCTBUILD >= 1381)
7394 KeSetIdealProcessorThread (
7401 KeSetKernelStackSwapEnable (
7405 #endif // (VER_PRODUCTBUILD >= 1381)
7407 #if (VER_PRODUCTBUILD >= 2195)
7411 KeStackAttachProcess (
7412 IN PKPROCESS Process
,
7413 OUT PKAPC_STATE ApcState
7419 KeTryToAcquireQueuedSpinLock (
7420 IN KSPIN_LOCK_QUEUE_NUMBER Number
,
7426 KeUnstackDetachProcess (
7427 IN PKAPC_STATE ApcState
7430 #endif // (VER_PRODUCTBUILD >= 2195)
7434 KeUpdateSystemTime (
7440 MmCanFileBeTruncated (
7441 IN PSECTION_OBJECT_POINTERS SectionObjectPointer
,
7442 IN PLARGE_INTEGER NewFileSize
7448 OUT PVOID
*SectionObject
,
7449 IN ACCESS_MASK DesiredAccess
,
7450 IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL
,
7451 IN PLARGE_INTEGER MaximumSize
,
7452 IN ULONG SectionPageProtection
,
7453 IN ULONG AllocationAttributes
,
7454 IN HANDLE FileHandle OPTIONAL
,
7455 IN PFILE_OBJECT FileObject OPTIONAL
7460 MmFlushImageSection (
7461 IN PSECTION_OBJECT_POINTERS SectionObjectPointer
,
7462 IN MMFLUSH_TYPE FlushType
7467 MmForceSectionClosed (
7468 IN PSECTION_OBJECT_POINTERS SectionObjectPointer
,
7469 IN BOOLEAN DelayClose
7472 #if (VER_PRODUCTBUILD >= 1381)
7476 MmIsRecursiveIoFault (
7482 #define MmIsRecursiveIoFault() ( \
7483 (PsGetCurrentThread()->DisablePageFaultClustering) | \
7484 (PsGetCurrentThread()->ForwardClusterOnly) \
7491 MmMapViewOfSection (
7492 IN PVOID SectionObject
,
7493 IN PEPROCESS Process
,
7494 IN OUT PVOID
*BaseAddress
,
7496 IN ULONG CommitSize
,
7497 IN OUT PLARGE_INTEGER SectionOffset OPTIONAL
,
7498 IN OUT PULONG ViewSize
,
7499 IN SECTION_INHERIT InheritDisposition
,
7500 IN ULONG AllocationType
,
7504 #if (VER_PRODUCTBUILD >= 2600)
7509 IN ULONG NumberOfLists
,
7510 IN PREAD_LIST
*ReadLists
7513 #endif // (VER_PRODUCTBUILD >= 2600)
7517 MmSetAddressRangeModified (
7525 IN KPROCESSOR_MODE ObjectAttributesAccessMode OPTIONAL
,
7526 IN POBJECT_TYPE ObjectType
,
7527 IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL
,
7528 IN KPROCESSOR_MODE AccessMode
,
7529 IN OUT PVOID ParseContext OPTIONAL
,
7530 IN ULONG ObjectSize
,
7531 IN ULONG PagedPoolCharge OPTIONAL
,
7532 IN ULONG NonPagedPoolCharge OPTIONAL
,
7536 #if (VER_PRODUCTBUILD >= 2600)
7540 ObDereferenceSecurityDescriptor (
7541 IN PSECURITY_DESCRIPTOR SecurityDescriptor
,
7545 #endif // (VER_PRODUCTBUILD >= 2600)
7547 #if (VER_PRODUCTBUILD <= 2195)
7551 ObGetObjectPointerCount (
7555 #endif // (VER_PRODUCTBUILD <= 2195)
7561 IN PACCESS_STATE PassedAccessState OPTIONAL
,
7562 IN ACCESS_MASK DesiredAccess
,
7563 IN ULONG AdditionalReferences
,
7564 OUT PVOID
*ReferencedObject OPTIONAL
,
7568 #if (VER_PRODUCTBUILD >= 2600)
7572 ObLogSecurityDescriptor (
7573 IN PSECURITY_DESCRIPTOR InputSecurityDescriptor
,
7574 OUT PSECURITY_DESCRIPTOR
*OutputSecurityDescriptor
,
7578 #endif // (VER_PRODUCTBUILD >= 2600)
7582 ObMakeTemporaryObject (
7588 ObOpenObjectByPointer (
7590 IN ULONG HandleAttributes
,
7591 IN PACCESS_STATE PassedAccessState OPTIONAL
,
7592 IN ACCESS_MASK DesiredAccess OPTIONAL
,
7593 IN POBJECT_TYPE ObjectType OPTIONAL
,
7594 IN KPROCESSOR_MODE AccessMode
,
7602 OUT POBJECT_NAME_INFORMATION ObjectNameInfo
,
7604 OUT PULONG ReturnLength
7609 ObQueryObjectAuditingByHandle (
7611 OUT PBOOLEAN GenerateOnClose
7616 ObReferenceObjectByName (
7617 IN PUNICODE_STRING ObjectName
,
7618 IN ULONG Attributes
,
7619 IN PACCESS_STATE PassedAccessState OPTIONAL
,
7620 IN ACCESS_MASK DesiredAccess OPTIONAL
,
7621 IN POBJECT_TYPE ObjectType
,
7622 IN KPROCESSOR_MODE AccessMode
,
7623 IN OUT PVOID ParseContext OPTIONAL
,
7627 #if (VER_PRODUCTBUILD >= 2600)
7631 ObReferenceSecurityDescriptor (
7632 IN PSECURITY_DESCRIPTOR SecurityDescriptor
,
7638 PoQueueShutdownWorkItem (
7639 IN PWORK_QUEUE_ITEM WorkItem
7642 #endif // (VER_PRODUCTBUILD >= 2600)
7646 PsAssignImpersonationToken (
7654 IN PEPROCESS Process
,
7655 IN POOL_TYPE PoolType
,
7659 #if (VER_PRODUCTBUILD >= 2600)
7663 PsChargeProcessNonPagedPoolQuota (
7664 IN PEPROCESS Process
,
7670 PsChargeProcessPagedPoolQuota (
7671 IN PEPROCESS Process
,
7677 PsChargeProcessPoolQuota (
7678 IN PEPROCESS Process
,
7679 IN POOL_TYPE PoolType
,
7683 #endif // (VER_PRODUCTBUILD >= 2600)
7685 #if (VER_PRODUCTBUILD >= 2600)
7689 PsDereferenceImpersonationToken (
7690 IN PACCESS_TOKEN ImpersonationToken
7695 PsDereferencePrimaryToken (
7696 IN PACCESS_TOKEN PrimaryToken
7701 #define PsDereferenceImpersonationToken(T) \
7702 {if (ARGUMENT_PRESENT(T)) { \
7703 (ObDereferenceObject((T))); \
7709 #define PsDereferencePrimaryToken(T) (ObDereferenceObject((T)))
7713 #if (VER_PRODUCTBUILD >= 2195)
7717 PsDisableImpersonation (
7719 IN PSE_IMPERSONATION_STATE ImpersonationState
7722 #endif // (VER_PRODUCTBUILD >= 2195)
7724 #if (VER_PRODUCTBUILD >= 2600)
7728 PsGetCurrentProcessSessionId (
7734 PsGetCurrentThreadPreviousMode (
7740 PsGetCurrentThreadStackBase (
7746 PsGetCurrentThreadStackLimit (
7750 #endif // (VER_PRODUCTBUILD >= 2600)
7754 PsGetProcessExitTime (
7760 PsImpersonateClient (
7762 IN PACCESS_TOKEN Token
,
7763 IN BOOLEAN CopyOnOpen
,
7764 IN BOOLEAN EffectiveOnly
,
7765 IN SECURITY_IMPERSONATION_LEVEL ImpersonationLevel
7768 #if (VER_PRODUCTBUILD >= 2600)
7776 #endif // (VER_PRODUCTBUILD >= 2600)
7780 PsIsThreadTerminating (
7785 // PsLookupProcessByProcessId returns a referenced pointer to the process
7786 // that should be dereferenced after use with a call to ObDereferenceObject.
7790 PsLookupProcessByProcessId (
7792 OUT PEPROCESS
*Process
7797 PsLookupProcessThreadByCid (
7799 OUT PEPROCESS
*Process OPTIONAL
,
7800 OUT PETHREAD
*Thread
7805 PsLookupThreadByThreadId (
7806 IN PVOID UniqueThreadId
,
7807 OUT PETHREAD
*Thread
7812 PsReferenceImpersonationToken (
7814 OUT PBOOLEAN CopyOnOpen
,
7815 OUT PBOOLEAN EffectiveOnly
,
7816 OUT PSECURITY_IMPERSONATION_LEVEL ImpersonationLevel
7821 PsReferencePrimaryToken (
7822 IN PEPROCESS Process
7825 #if (VER_PRODUCTBUILD >= 2195)
7829 PsRestoreImpersonation (
7831 IN PSE_IMPERSONATION_STATE ImpersonationState
7834 #endif // (VER_PRODUCTBUILD >= 2195)
7839 IN PEPROCESS Process
,
7840 IN POOL_TYPE PoolType
,
7844 #if (VER_PRODUCTBUILD >= 1381)
7852 #endif // (VER_PRODUCTBUILD >= 1381)
7857 RtlAbsoluteToSelfRelativeSD (
7858 IN PSECURITY_DESCRIPTOR AbsoluteSecurityDescriptor
,
7859 IN OUT PSECURITY_DESCRIPTOR SelfRelativeSecurityDescriptor
,
7860 IN PULONG BufferLength
7867 IN HANDLE HeapHandle
,
7876 IN USHORT CompressionFormatAndEngine
,
7877 IN PUCHAR UncompressedBuffer
,
7878 IN ULONG UncompressedBufferSize
,
7879 OUT PUCHAR CompressedBuffer
,
7880 IN ULONG CompressedBufferSize
,
7881 IN ULONG UncompressedChunkSize
,
7882 OUT PULONG FinalCompressedSize
,
7890 IN PUCHAR UncompressedBuffer
,
7891 IN ULONG UncompressedBufferSize
,
7892 OUT PUCHAR CompressedBuffer
,
7893 IN ULONG CompressedBufferSize
,
7894 IN OUT PCOMPRESSED_DATA_INFO CompressedDataInfo
,
7895 IN ULONG CompressedDataInfoLength
,
7902 RtlConvertSidToUnicodeString (
7903 OUT PUNICODE_STRING DestinationString
,
7905 IN BOOLEAN AllocateDestinationString
7913 IN PSID Destination
,
7926 IN PVOID RtlHeapParams
7932 RtlDecompressBuffer (
7933 IN USHORT CompressionFormat
,
7934 OUT PUCHAR UncompressedBuffer
,
7935 IN ULONG UncompressedBufferSize
,
7936 IN PUCHAR CompressedBuffer
,
7937 IN ULONG CompressedBufferSize
,
7938 OUT PULONG FinalUncompressedSize
7944 RtlDecompressChunks (
7945 OUT PUCHAR UncompressedBuffer
,
7946 IN ULONG UncompressedBufferSize
,
7947 IN PUCHAR CompressedBuffer
,
7948 IN ULONG CompressedBufferSize
,
7949 IN PUCHAR CompressedTail
,
7950 IN ULONG CompressedTailSize
,
7951 IN PCOMPRESSED_DATA_INFO CompressedDataInfo
7957 RtlDecompressFragment (
7958 IN USHORT CompressionFormat
,
7959 OUT PUCHAR UncompressedFragment
,
7960 IN ULONG UncompressedFragmentSize
,
7961 IN PUCHAR CompressedBuffer
,
7962 IN ULONG CompressedBufferSize
,
7963 IN ULONG FragmentOffset
,
7964 OUT PULONG FinalUncompressedSize
,
7972 IN USHORT CompressionFormat
,
7973 IN OUT PUCHAR
*CompressedBuffer
,
7974 IN PUCHAR EndOfCompressedBufferPlus1
,
7975 OUT PUCHAR
*ChunkBuffer
,
7976 OUT PULONG ChunkSize
7983 IN HANDLE HeapHandle
7997 RtlFillMemoryUlong (
7998 IN PVOID Destination
,
8007 IN HANDLE HeapHandle
,
8015 RtlGenerate8dot3Name (
8016 IN PUNICODE_STRING Name
,
8017 IN BOOLEAN AllowExtendedCharacters
,
8018 IN OUT PGENERATE_NAME_CONTEXT Context
,
8019 OUT PUNICODE_STRING Name8dot3
8025 RtlGetCompressionWorkSpaceSize (
8026 IN USHORT CompressionFormatAndEngine
,
8027 OUT PULONG CompressBufferWorkSpaceSize
,
8028 OUT PULONG CompressFragmentWorkSpaceSize
8034 RtlGetDaclSecurityDescriptor (
8035 IN PSECURITY_DESCRIPTOR SecurityDescriptor
,
8036 OUT PBOOLEAN DaclPresent
,
8038 OUT PBOOLEAN DaclDefaulted
8044 RtlGetGroupSecurityDescriptor (
8045 IN PSECURITY_DESCRIPTOR SecurityDescriptor
,
8047 OUT PBOOLEAN GroupDefaulted
8050 #if (VER_PRODUCTBUILD >= 2195)
8055 RtlGetNtGlobalFlags (
8059 #endif // (VER_PRODUCTBUILD >= 2195)
8064 RtlGetOwnerSecurityDescriptor (
8065 IN PSECURITY_DESCRIPTOR SecurityDescriptor
,
8067 OUT PBOOLEAN OwnerDefaulted
8071 // This function returns a PIMAGE_NT_HEADERS,
8072 // see the standard include file winnt.h
8078 IN PVOID BaseAddress
8086 IN PSID_IDENTIFIER_AUTHORITY IdentifierAuthority
,
8087 IN UCHAR SubAuthorityCount
8093 RtlIsNameLegalDOS8Dot3 (
8094 IN PUNICODE_STRING UnicodeName
,
8095 IN PANSI_STRING AnsiName
,
8102 RtlLengthRequiredSid (
8103 IN UCHAR SubAuthorityCount
8116 RtlNtStatusToDosError (
8120 #define RtlOemStringToCountedUnicodeSize(STRING) ( \
8121 (ULONG)(RtlOemStringToUnicodeSize(STRING) - sizeof(UNICODE_NULL)) \
8124 #define RtlOemStringToUnicodeSize(STRING) ( \
8125 NLS_MB_OEM_CODE_PAGE_TAG ? \
8126 RtlxOemStringToUnicodeSize(STRING) : \
8127 ((STRING)->Length + sizeof(ANSI_NULL)) * sizeof(WCHAR) \
8133 RtlOemStringToUnicodeString (
8134 OUT PUNICODE_STRING DestinationString
,
8135 IN POEM_STRING SourceString
,
8136 IN BOOLEAN AllocateDestinationString
8146 #if (VER_PRODUCTBUILD >= 2600)
8155 #endif // (VER_PRODUCTBUILD >= 2600)
8161 IN USHORT CompressionFormat
,
8162 IN OUT PUCHAR
*CompressedBuffer
,
8163 IN PUCHAR EndOfCompressedBufferPlus1
,
8164 OUT PUCHAR
*ChunkBuffer
,
8171 RtlSecondsSince1970ToTime (
8172 IN ULONG SecondsSince1970
,
8173 OUT PLARGE_INTEGER Time
8179 RtlSecondsSince1980ToTime (
8180 IN ULONG SecondsSince1980
,
8181 OUT PLARGE_INTEGER Time
8184 #if (VER_PRODUCTBUILD >= 2195)
8189 RtlSelfRelativeToAbsoluteSD (
8190 IN PSECURITY_DESCRIPTOR SelfRelativeSD
,
8191 OUT PSECURITY_DESCRIPTOR AbsoluteSD
,
8192 IN PULONG AbsoluteSDSize
,
8198 IN PULONG OwnerSize
,
8199 IN PSID PrimaryGroup
,
8200 IN PULONG PrimaryGroupSize
8203 #endif // (VER_PRODUCTBUILD >= 2195)
8208 RtlSetGroupSecurityDescriptor (
8209 IN OUT PSECURITY_DESCRIPTOR SecurityDescriptor
,
8211 IN BOOLEAN GroupDefaulted
8217 RtlSetOwnerSecurityDescriptor (
8218 IN OUT PSECURITY_DESCRIPTOR SecurityDescriptor
,
8220 IN BOOLEAN OwnerDefaulted
8226 RtlSetSaclSecurityDescriptor (
8227 IN OUT PSECURITY_DESCRIPTOR SecurityDescriptor
,
8228 IN BOOLEAN SaclPresent
,
8230 IN BOOLEAN SaclDefaulted
8236 RtlSubAuthorityCountSid (
8243 RtlSubAuthoritySid (
8245 IN ULONG SubAuthority
8251 RtlTimeToSecondsSince1970 (
8252 IN PLARGE_INTEGER Time
,
8253 OUT PULONG SecondsSince1970
8259 RtlTimeToSecondsSince1980 (
8260 IN PLARGE_INTEGER Time
,
8261 OUT PULONG SecondsSince1980
8264 #define RtlUnicodeStringToOemSize(STRING) ( \
8265 NLS_MB_OEM_CODE_PAGE_TAG ? \
8266 RtlxUnicodeStringToOemSize(STRING) : \
8267 ((STRING)->Length + sizeof(UNICODE_NULL)) / sizeof(WCHAR) \
8273 RtlUnicodeStringToOemString (
8274 OUT POEM_STRING DestinationString
,
8275 IN PUNICODE_STRING SourceString
,
8276 IN BOOLEAN AllocateDestinationString
8289 RtlxOemStringToUnicodeSize (
8290 IN POEM_STRING OemString
8296 RtlxUnicodeStringToAnsiSize (
8297 IN PUNICODE_STRING UnicodeString
8303 RtlxUnicodeStringToOemSize (
8304 IN PUNICODE_STRING UnicodeString
8309 SeAppendPrivileges (
8310 PACCESS_STATE AccessState
,
8311 PPRIVILEGE_SET Privileges
8314 #if (VER_PRODUCTBUILD >= 2195)
8318 SeAuditHardLinkCreation (
8319 IN PUNICODE_STRING FileName
,
8320 IN PUNICODE_STRING LinkName
,
8324 #endif // (VER_PRODUCTBUILD >= 2195)
8328 SeAuditingFileEvents (
8329 IN BOOLEAN AccessGranted
,
8330 IN PSECURITY_DESCRIPTOR SecurityDescriptor
8335 SeAuditingFileOrGlobalEvents (
8336 IN BOOLEAN AccessGranted
,
8337 IN PSECURITY_DESCRIPTOR SecurityDescriptor
,
8338 IN PSECURITY_SUBJECT_CONTEXT SubjectContext
8341 #if (VER_PRODUCTBUILD >= 2195)
8345 SeAuditingHardLinkEvents (
8346 IN BOOLEAN AccessGranted
,
8347 IN PSECURITY_DESCRIPTOR SecurityDescriptor
8350 #endif // (VER_PRODUCTBUILD >= 2195)
8354 SeCaptureSubjectContext (
8355 OUT PSECURITY_SUBJECT_CONTEXT SubjectContext
8360 SeCreateAccessState (
8361 OUT PACCESS_STATE AccessState
,
8363 IN ACCESS_MASK AccessMask
,
8364 IN PGENERIC_MAPPING Mapping
8369 SeCreateClientSecurity (
8371 IN PSECURITY_QUALITY_OF_SERVICE QualityOfService
,
8372 IN BOOLEAN RemoteClient
,
8373 OUT PSECURITY_CLIENT_CONTEXT ClientContext
8376 #if (VER_PRODUCTBUILD >= 2195)
8380 SeCreateClientSecurityFromSubjectContext (
8381 IN PSECURITY_SUBJECT_CONTEXT SubjectContext
,
8382 IN PSECURITY_QUALITY_OF_SERVICE QualityOfService
,
8383 IN BOOLEAN ServerIsRemote
,
8384 OUT PSECURITY_CLIENT_CONTEXT ClientContext
8387 #endif // (VER_PRODUCTBUILD >= 2195)
8391 SeDeleteAccessState (
8392 IN PACCESS_STATE AccessState
8395 #define SeDeleteClientSecurity(C) { \
8396 if (SeTokenType((C)->ClientToken) == TokenPrimary) { \
8397 PsDereferencePrimaryToken( (C)->ClientToken ); \
8399 PsDereferenceImpersonationToken( (C)->ClientToken ); \
8405 SeDeleteObjectAuditAlarm (
8410 #define SeEnableAccessToExports() SeExports = *(PSE_EXPORTS *)SeExports;
8412 #if (VER_PRODUCTBUILD >= 2600)
8417 IN PACCESS_TOKEN ExistingToken
,
8419 IN PTOKEN_GROUPS SidsToDisable OPTIONAL
,
8420 IN PTOKEN_PRIVILEGES PrivilegesToDelete OPTIONAL
,
8421 IN PTOKEN_GROUPS RestrictedSids OPTIONAL
,
8422 OUT PACCESS_TOKEN
*FilteredToken
8425 #endif // (VER_PRODUCTBUILD >= 2600)
8430 IN PPRIVILEGE_SET Privileges
8435 SeImpersonateClient (
8436 IN PSECURITY_CLIENT_CONTEXT ClientContext
,
8437 IN PETHREAD ServerThread OPTIONAL
8440 #if (VER_PRODUCTBUILD >= 2195)
8444 SeImpersonateClientEx (
8445 IN PSECURITY_CLIENT_CONTEXT ClientContext
,
8446 IN PETHREAD ServerThread OPTIONAL
8449 #endif // (VER_PRODUCTBUILD >= 2195)
8453 SeLockSubjectContext (
8454 IN PSECURITY_SUBJECT_CONTEXT SubjectContext
8459 SeMarkLogonSessionForTerminationNotification (
8465 SeOpenObjectAuditAlarm (
8466 IN PUNICODE_STRING ObjectTypeName
,
8467 IN PVOID Object OPTIONAL
,
8468 IN PUNICODE_STRING AbsoluteObjectName OPTIONAL
,
8469 IN PSECURITY_DESCRIPTOR SecurityDescriptor
,
8470 IN PACCESS_STATE AccessState
,
8471 IN BOOLEAN ObjectCreated
,
8472 IN BOOLEAN AccessGranted
,
8473 IN KPROCESSOR_MODE AccessMode
,
8474 OUT PBOOLEAN GenerateOnClose
8479 SeOpenObjectForDeleteAuditAlarm (
8480 IN PUNICODE_STRING ObjectTypeName
,
8481 IN PVOID Object OPTIONAL
,
8482 IN PUNICODE_STRING AbsoluteObjectName OPTIONAL
,
8483 IN PSECURITY_DESCRIPTOR SecurityDescriptor
,
8484 IN PACCESS_STATE AccessState
,
8485 IN BOOLEAN ObjectCreated
,
8486 IN BOOLEAN AccessGranted
,
8487 IN KPROCESSOR_MODE AccessMode
,
8488 OUT PBOOLEAN GenerateOnClose
8494 IN OUT PPRIVILEGE_SET RequiredPrivileges
,
8495 IN PSECURITY_SUBJECT_CONTEXT SubjectContext
,
8496 IN KPROCESSOR_MODE AccessMode
8501 SeQueryAuthenticationIdToken (
8502 IN PACCESS_TOKEN Token
,
8506 #if (VER_PRODUCTBUILD >= 2195)
8510 SeQueryInformationToken (
8511 IN PACCESS_TOKEN Token
,
8512 IN TOKEN_INFORMATION_CLASS TokenInformationClass
,
8513 OUT PVOID
*TokenInformation
8516 #endif // (VER_PRODUCTBUILD >= 2195)
8520 SeQuerySecurityDescriptorInfo (
8521 IN PSECURITY_INFORMATION SecurityInformation
,
8522 OUT PSECURITY_DESCRIPTOR SecurityDescriptor
,
8523 IN OUT PULONG Length
,
8524 IN PSECURITY_DESCRIPTOR
*ObjectsSecurityDescriptor
8527 #if (VER_PRODUCTBUILD >= 2195)
8531 SeQuerySessionIdToken (
8532 IN PACCESS_TOKEN Token
,
8536 #endif // (VER_PRODUCTBUILD >= 2195)
8538 #define SeQuerySubjectContextToken( SubjectContext ) \
8539 ( ARGUMENT_PRESENT( \
8540 ((PSECURITY_SUBJECT_CONTEXT) SubjectContext)->ClientToken \
8542 ((PSECURITY_SUBJECT_CONTEXT) SubjectContext)->ClientToken : \
8543 ((PSECURITY_SUBJECT_CONTEXT) SubjectContext)->PrimaryToken )
8545 typedef NTSTATUS (*PSE_LOGON_SESSION_TERMINATED_ROUTINE
) (
8551 SeRegisterLogonSessionTerminatedRoutine (
8552 IN PSE_LOGON_SESSION_TERMINATED_ROUTINE CallbackRoutine
8557 SeReleaseSubjectContext (
8558 IN PSECURITY_SUBJECT_CONTEXT SubjectContext
8563 SeSetAccessStateGenericMapping (
8564 PACCESS_STATE AccessState
,
8565 PGENERIC_MAPPING GenericMapping
8570 SeSetSecurityDescriptorInfo (
8571 IN PVOID Object OPTIONAL
,
8572 IN PSECURITY_INFORMATION SecurityInformation
,
8573 IN PSECURITY_DESCRIPTOR SecurityDescriptor
,
8574 IN OUT PSECURITY_DESCRIPTOR
*ObjectsSecurityDescriptor
,
8575 IN POOL_TYPE PoolType
,
8576 IN PGENERIC_MAPPING GenericMapping
8579 #if (VER_PRODUCTBUILD >= 2195)
8583 SeSetSecurityDescriptorInfoEx (
8584 IN PVOID Object OPTIONAL
,
8585 IN PSECURITY_INFORMATION SecurityInformation
,
8586 IN PSECURITY_DESCRIPTOR ModificationDescriptor
,
8587 IN OUT PSECURITY_DESCRIPTOR
*ObjectsSecurityDescriptor
,
8588 IN ULONG AutoInheritFlags
,
8589 IN POOL_TYPE PoolType
,
8590 IN PGENERIC_MAPPING GenericMapping
8596 IN PACCESS_TOKEN Token
8601 SeTokenIsRestricted (
8602 IN PACCESS_TOKEN Token
8605 #endif // (VER_PRODUCTBUILD >= 2195)
8610 IN PACCESS_TOKEN Token
8615 SeUnlockSubjectContext (
8616 IN PSECURITY_SUBJECT_CONTEXT SubjectContext
8621 SeUnregisterLogonSessionTerminatedRoutine (
8622 IN PSE_LOGON_SESSION_TERMINATED_ROUTINE CallbackRoutine
8625 #if (VER_PRODUCTBUILD >= 2195)
8630 ZwAdjustPrivilegesToken (
8631 IN HANDLE TokenHandle
,
8632 IN BOOLEAN DisableAllPrivileges
,
8633 IN PTOKEN_PRIVILEGES NewState
,
8634 IN ULONG BufferLength
,
8635 OUT PTOKEN_PRIVILEGES PreviousState OPTIONAL
,
8636 OUT PULONG ReturnLength
8639 #endif // (VER_PRODUCTBUILD >= 2195)
8645 IN HANDLE ThreadHandle
8651 ZwAllocateVirtualMemory (
8652 IN HANDLE ProcessHandle
,
8653 IN OUT PVOID
*BaseAddress
,
8655 IN OUT PSIZE_T RegionSize
,
8656 IN ULONG AllocationType
,
8663 ZwAccessCheckAndAuditAlarm (
8664 IN PUNICODE_STRING SubsystemName
,
8666 IN PUNICODE_STRING ObjectTypeName
,
8667 IN PUNICODE_STRING ObjectName
,
8668 IN PSECURITY_DESCRIPTOR SecurityDescriptor
,
8669 IN ACCESS_MASK DesiredAccess
,
8670 IN PGENERIC_MAPPING GenericMapping
,
8671 IN BOOLEAN ObjectCreation
,
8672 OUT PACCESS_MASK GrantedAccess
,
8673 OUT PBOOLEAN AccessStatus
,
8674 OUT PBOOLEAN GenerateOnClose
8677 #if (VER_PRODUCTBUILD >= 2195)
8683 IN HANDLE FileHandle
,
8684 OUT PIO_STATUS_BLOCK IoStatusBlock
8687 #endif // (VER_PRODUCTBUILD >= 2195)
8693 IN HANDLE EventHandle
8700 OUT PHANDLE ClientPortHandle
,
8701 IN PUNICODE_STRING ServerPortName
,
8702 IN PSECURITY_QUALITY_OF_SERVICE SecurityQos
,
8703 IN OUT PLPC_SECTION_WRITE ClientSharedMemory OPTIONAL
,
8704 IN OUT PLPC_SECTION_READ ServerSharedMemory OPTIONAL
,
8705 OUT PULONG MaximumMessageLength OPTIONAL
,
8706 IN OUT PVOID ConnectionInfo OPTIONAL
,
8707 IN OUT PULONG ConnectionInfoLength OPTIONAL
8713 ZwCloseObjectAuditAlarm (
8714 IN PUNICODE_STRING SubsystemName
,
8716 IN BOOLEAN GenerateOnClose
8723 OUT PHANDLE EventHandle
,
8724 IN ACCESS_MASK DesiredAccess
,
8725 IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL
,
8726 IN EVENT_TYPE EventType
,
8727 IN BOOLEAN InitialState
8734 OUT PHANDLE SectionHandle
,
8735 IN ACCESS_MASK DesiredAccess
,
8736 IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL
,
8737 IN PLARGE_INTEGER MaximumSize OPTIONAL
,
8738 IN ULONG SectionPageProtection
,
8739 IN ULONG AllocationAttributes
,
8740 IN HANDLE FileHandle OPTIONAL
8746 ZwCreateSymbolicLinkObject (
8747 OUT PHANDLE SymbolicLinkHandle
,
8748 IN ACCESS_MASK DesiredAccess
,
8749 IN POBJECT_ATTRIBUTES ObjectAttributes
,
8750 IN PUNICODE_STRING TargetName
8757 IN POBJECT_ATTRIBUTES ObjectAttributes
8765 IN PUNICODE_STRING Name
8771 ZwDeviceIoControlFile (
8772 IN HANDLE FileHandle
,
8773 IN HANDLE Event OPTIONAL
,
8774 IN PIO_APC_ROUTINE ApcRoutine OPTIONAL
,
8775 IN PVOID ApcContext OPTIONAL
,
8776 OUT PIO_STATUS_BLOCK IoStatusBlock
,
8777 IN ULONG IoControlCode
,
8778 IN PVOID InputBuffer OPTIONAL
,
8779 IN ULONG InputBufferLength
,
8780 OUT PVOID OutputBuffer OPTIONAL
,
8781 IN ULONG OutputBufferLength
8785 // If using ZwDisplayString during boot on Windows 2000 or later you must
8786 // first call InbvEnableDisplayString.
8792 IN PUNICODE_STRING String
8799 IN HANDLE SourceProcessHandle
,
8800 IN HANDLE SourceHandle
,
8801 IN HANDLE TargetProcessHandle OPTIONAL
,
8802 OUT PHANDLE TargetHandle OPTIONAL
,
8803 IN ACCESS_MASK DesiredAccess
,
8804 IN ULONG HandleAttributes
,
8812 IN HANDLE ExistingTokenHandle
,
8813 IN ACCESS_MASK DesiredAccess
,
8814 IN POBJECT_ATTRIBUTES ObjectAttributes
,
8815 IN BOOLEAN EffectiveOnly
,
8816 IN TOKEN_TYPE TokenType
,
8817 OUT PHANDLE NewTokenHandle
8823 ZwFlushInstructionCache (
8824 IN HANDLE ProcessHandle
,
8825 IN PVOID BaseAddress OPTIONAL
,
8829 #if (VER_PRODUCTBUILD >= 2195)
8834 ZwFlushVirtualMemory (
8835 IN HANDLE ProcessHandle
,
8836 IN OUT PVOID
*BaseAddress
,
8837 IN OUT PSIZE_T RegionSize
,
8838 OUT PIO_STATUS_BLOCK IoStatusBlock
8841 #endif // (VER_PRODUCTBUILD >= 2195)
8846 ZwFreeVirtualMemory (
8847 IN HANDLE ProcessHandle
,
8848 IN OUT PVOID
*BaseAddress
,
8849 IN OUT PSIZE_T RegionSize
,
8857 IN HANDLE FileHandle
,
8858 IN HANDLE Event OPTIONAL
,
8859 IN PIO_APC_ROUTINE ApcRoutine OPTIONAL
,
8860 IN PVOID ApcContext OPTIONAL
,
8861 OUT PIO_STATUS_BLOCK IoStatusBlock
,
8862 IN ULONG FsControlCode
,
8863 IN PVOID InputBuffer OPTIONAL
,
8864 IN ULONG InputBufferLength
,
8865 OUT PVOID OutputBuffer OPTIONAL
,
8866 IN ULONG OutputBufferLength
8869 #if (VER_PRODUCTBUILD >= 2195)
8874 ZwInitiatePowerAction (
8875 IN POWER_ACTION SystemAction
,
8876 IN SYSTEM_POWER_STATE MinSystemState
,
8878 IN BOOLEAN Asynchronous
8881 #endif // (VER_PRODUCTBUILD >= 2195)
8887 // "\\Registry\\Machine\\System\\CurrentControlSet\\Services\\<DriverName>"
8888 IN PUNICODE_STRING RegistryPath
8895 IN POBJECT_ATTRIBUTES KeyObjectAttributes
,
8896 IN POBJECT_ATTRIBUTES FileObjectAttributes
8903 IN HANDLE KeyHandle
,
8904 IN HANDLE EventHandle OPTIONAL
,
8905 IN PIO_APC_ROUTINE ApcRoutine OPTIONAL
,
8906 IN PVOID ApcContext OPTIONAL
,
8907 OUT PIO_STATUS_BLOCK IoStatusBlock
,
8908 IN ULONG NotifyFilter
,
8909 IN BOOLEAN WatchSubtree
,
8911 IN ULONG BufferLength
,
8912 IN BOOLEAN Asynchronous
8918 ZwOpenDirectoryObject (
8919 OUT PHANDLE DirectoryHandle
,
8920 IN ACCESS_MASK DesiredAccess
,
8921 IN POBJECT_ATTRIBUTES ObjectAttributes
8928 OUT PHANDLE EventHandle
,
8929 IN ACCESS_MASK DesiredAccess
,
8930 IN POBJECT_ATTRIBUTES ObjectAttributes
8937 OUT PHANDLE ProcessHandle
,
8938 IN ACCESS_MASK DesiredAccess
,
8939 IN POBJECT_ATTRIBUTES ObjectAttributes
,
8940 IN PCLIENT_ID ClientId OPTIONAL
8946 ZwOpenProcessToken (
8947 IN HANDLE ProcessHandle
,
8948 IN ACCESS_MASK DesiredAccess
,
8949 OUT PHANDLE TokenHandle
8952 #if (VER_PRODUCTBUILD >= 2600)
8957 ZwOpenProcessTokenEx (
8958 IN HANDLE ProcessHandle
,
8959 IN ACCESS_MASK DesiredAccess
,
8960 IN ULONG HandleAttributes
,
8961 OUT PHANDLE TokenHandle
8964 #endif // (VER_PRODUCTBUILD >= 2600)
8970 OUT PHANDLE ThreadHandle
,
8971 IN ACCESS_MASK DesiredAccess
,
8972 IN POBJECT_ATTRIBUTES ObjectAttributes
,
8973 IN PCLIENT_ID ClientId
8980 IN HANDLE ThreadHandle
,
8981 IN ACCESS_MASK DesiredAccess
,
8982 IN BOOLEAN OpenAsSelf
,
8983 OUT PHANDLE TokenHandle
8986 #if (VER_PRODUCTBUILD >= 2600)
8991 ZwOpenThreadTokenEx (
8992 IN HANDLE ThreadHandle
,
8993 IN ACCESS_MASK DesiredAccess
,
8994 IN BOOLEAN OpenAsSelf
,
8995 IN ULONG HandleAttributes
,
8996 OUT PHANDLE TokenHandle
8999 #endif // (VER_PRODUCTBUILD >= 2600)
9001 #if (VER_PRODUCTBUILD >= 2195)
9006 ZwPowerInformation (
9007 IN POWER_INFORMATION_LEVEL PowerInformationLevel
,
9008 IN PVOID InputBuffer OPTIONAL
,
9009 IN ULONG InputBufferLength
,
9010 OUT PVOID OutputBuffer OPTIONAL
,
9011 IN ULONG OutputBufferLength
9014 #endif // (VER_PRODUCTBUILD >= 2195)
9020 IN HANDLE EventHandle
,
9021 OUT PULONG PreviousState OPTIONAL
9027 ZwQueryDefaultLocale (
9028 IN BOOLEAN ThreadOrSystem
,
9032 #if (VER_PRODUCTBUILD >= 2195)
9037 ZwQueryDefaultUILanguage (
9038 OUT LANGID
*LanguageId
9041 #endif // (VER_PRODUCTBUILD >= 2195)
9046 ZwQueryDirectoryFile (
9047 IN HANDLE FileHandle
,
9048 IN HANDLE Event OPTIONAL
,
9049 IN PIO_APC_ROUTINE ApcRoutine OPTIONAL
,
9050 IN PVOID ApcContext OPTIONAL
,
9051 OUT PIO_STATUS_BLOCK IoStatusBlock
,
9052 OUT PVOID FileInformation
,
9054 IN FILE_INFORMATION_CLASS FileInformationClass
,
9055 IN BOOLEAN ReturnSingleEntry
,
9056 IN PUNICODE_STRING FileName OPTIONAL
,
9057 IN BOOLEAN RestartScan
9060 #if (VER_PRODUCTBUILD >= 2195)
9065 ZwQueryDirectoryObject (
9066 IN HANDLE DirectoryHandle
,
9069 IN BOOLEAN ReturnSingleEntry
,
9070 IN BOOLEAN RestartScan
,
9071 IN OUT PULONG Context
,
9072 OUT PULONG ReturnLength OPTIONAL
9079 IN HANDLE FileHandle
,
9080 OUT PIO_STATUS_BLOCK IoStatusBlock
,
9083 IN BOOLEAN ReturnSingleEntry
,
9084 IN PVOID EaList OPTIONAL
,
9085 IN ULONG EaListLength
,
9086 IN PULONG EaIndex OPTIONAL
,
9087 IN BOOLEAN RestartScan
9090 #endif // (VER_PRODUCTBUILD >= 2195)
9095 ZwQueryInformationProcess (
9096 IN HANDLE ProcessHandle
,
9097 IN PROCESSINFOCLASS ProcessInformationClass
,
9098 OUT PVOID ProcessInformation
,
9099 IN ULONG ProcessInformationLength
,
9100 OUT PULONG ReturnLength OPTIONAL
9103 #if (VER_PRODUCTBUILD >= 2600)
9108 ZwQueryInformationThread (
9109 IN HANDLE ThreadHandle
,
9110 IN THREADINFOCLASS ThreadInformationClass
,
9111 OUT PVOID ThreadInformation
,
9112 IN ULONG ThreadInformationLength
,
9113 OUT PULONG ReturnLength OPTIONAL
9116 #endif // (VER_PRODUCTBUILD >= 2600)
9121 ZwQueryInformationToken (
9122 IN HANDLE TokenHandle
,
9123 IN TOKEN_INFORMATION_CLASS TokenInformationClass
,
9124 OUT PVOID TokenInformation
,
9125 IN ULONG TokenInformationLength
,
9126 OUT PULONG ReturnLength
9129 #if (VER_PRODUCTBUILD >= 2195)
9134 ZwQueryInstallUILanguage (
9135 OUT LANGID
*LanguageId
9138 #endif // (VER_PRODUCTBUILD >= 2195)
9144 IN HANDLE ObjectHandle
,
9145 IN OBJECT_INFO_CLASS ObjectInformationClass
,
9146 OUT PVOID ObjectInformation
,
9148 OUT PULONG ResultLength
9155 IN HANDLE SectionHandle
,
9156 IN SECTION_INFORMATION_CLASS SectionInformationClass
,
9157 OUT PVOID SectionInformation
,
9158 IN ULONG SectionInformationLength
,
9159 OUT PULONG ResultLength OPTIONAL
9165 ZwQuerySecurityObject (
9166 IN HANDLE FileHandle
,
9167 IN SECURITY_INFORMATION SecurityInformation
,
9168 OUT PSECURITY_DESCRIPTOR SecurityDescriptor
,
9170 OUT PULONG ResultLength
9176 ZwQuerySystemInformation (
9177 IN SYSTEM_INFORMATION_CLASS SystemInformationClass
,
9178 OUT PVOID SystemInformation
,
9180 OUT PULONG ReturnLength
9186 ZwQueryVolumeInformationFile (
9187 IN HANDLE FileHandle
,
9188 OUT PIO_STATUS_BLOCK IoStatusBlock
,
9189 OUT PVOID FsInformation
,
9191 IN FS_INFORMATION_CLASS FsInformationClass
9198 IN POBJECT_ATTRIBUTES NewFileObjectAttributes
,
9199 IN HANDLE KeyHandle
,
9200 IN POBJECT_ATTRIBUTES OldFileObjectAttributes
9206 ZwRequestWaitReplyPort (
9207 IN HANDLE PortHandle
,
9208 IN PLPC_MESSAGE Request
,
9209 OUT PLPC_MESSAGE Reply
9216 IN HANDLE EventHandle
,
9217 OUT PULONG PreviousState OPTIONAL
9220 #if (VER_PRODUCTBUILD >= 2195)
9226 IN HANDLE KeyHandle
,
9227 IN HANDLE FileHandle
,
9231 #endif // (VER_PRODUCTBUILD >= 2195)
9237 IN HANDLE KeyHandle
,
9238 IN HANDLE FileHandle
9244 ZwSetDefaultLocale (
9245 IN BOOLEAN ThreadOrSystem
,
9249 #if (VER_PRODUCTBUILD >= 2195)
9254 ZwSetDefaultUILanguage (
9255 IN LANGID LanguageId
9262 IN HANDLE FileHandle
,
9263 OUT PIO_STATUS_BLOCK IoStatusBlock
,
9268 #endif // (VER_PRODUCTBUILD >= 2195)
9274 IN HANDLE EventHandle
,
9275 OUT PULONG PreviousState OPTIONAL
9281 ZwSetInformationObject (
9282 IN HANDLE ObjectHandle
,
9283 IN OBJECT_INFO_CLASS ObjectInformationClass
,
9284 IN PVOID ObjectInformation
,
9285 IN ULONG ObjectInformationLength
9291 ZwSetInformationProcess (
9292 IN HANDLE ProcessHandle
,
9293 IN PROCESSINFOCLASS ProcessInformationClass
,
9294 IN PVOID ProcessInformation
,
9295 IN ULONG ProcessInformationLength
9298 #if (VER_PRODUCTBUILD >= 2195)
9303 ZwSetSecurityObject (
9305 IN SECURITY_INFORMATION SecurityInformation
,
9306 IN PSECURITY_DESCRIPTOR SecurityDescriptor
9309 #endif // (VER_PRODUCTBUILD >= 2195)
9314 ZwSetSystemInformation (
9315 IN SYSTEM_INFORMATION_CLASS SystemInformationClass
,
9316 IN PVOID SystemInformation
,
9324 IN PLARGE_INTEGER NewTime
,
9325 OUT PLARGE_INTEGER OldTime OPTIONAL
9328 #if (VER_PRODUCTBUILD >= 2195)
9333 ZwSetVolumeInformationFile (
9334 IN HANDLE FileHandle
,
9335 OUT PIO_STATUS_BLOCK IoStatusBlock
,
9336 IN PVOID FsInformation
,
9338 IN FS_INFORMATION_CLASS FsInformationClass
9341 #endif // (VER_PRODUCTBUILD >= 2195)
9346 ZwTerminateProcess (
9347 IN HANDLE ProcessHandle OPTIONAL
,
9348 IN NTSTATUS ExitStatus
9355 // "\\Registry\\Machine\\System\\CurrentControlSet\\Services\\<DriverName>"
9356 IN PUNICODE_STRING RegistryPath
9363 IN POBJECT_ATTRIBUTES KeyObjectAttributes
9369 ZwWaitForSingleObject (
9371 IN BOOLEAN Alertable
,
9372 IN PLARGE_INTEGER Timeout OPTIONAL
9378 ZwWaitForMultipleObjects (
9379 IN ULONG HandleCount
,
9381 IN WAIT_TYPE WaitType
,
9382 IN BOOLEAN Alertable
,
9383 IN PLARGE_INTEGER Timeout OPTIONAL
9394 // Below is stuff that is included in the Windows 2000 DDK but is missing in
9395 // the Windows NT 4.0 DDK
9398 #if (VER_PRODUCTBUILD < 2195)
9407 #ifndef IoCopyCurrentIrpStackLocationToNext
9408 #define IoCopyCurrentIrpStackLocationToNext( Irp ) { \
9409 PIO_STACK_LOCATION irpSp; \
9410 PIO_STACK_LOCATION nextIrpSp; \
9411 irpSp = IoGetCurrentIrpStackLocation( (Irp) ); \
9412 nextIrpSp = IoGetNextIrpStackLocation( (Irp) ); \
9416 FIELD_OFFSET(IO_STACK_LOCATION, CompletionRoutine) \
9418 nextIrpSp->Control = 0; }
9424 OUT PHANDLE FileHandle
,
9425 IN ACCESS_MASK DesiredAccess
,
9426 IN POBJECT_ATTRIBUTES ObjectAttributes
,
9427 OUT PIO_STATUS_BLOCK IoStatusBlock
,
9428 IN PLARGE_INTEGER AllocationSize OPTIONAL
,
9429 IN ULONG FileAttributes
,
9430 IN ULONG ShareAccess
,
9431 IN ULONG CreateDisposition
,
9432 IN ULONG CreateOptions
,
9433 IN PVOID EaBuffer OPTIONAL
,
9435 IN CREATE_FILE_TYPE CreateFileType
,
9436 IN PVOID ExtraCreateParameters
,
9440 #ifndef IoSkipCurrentIrpStackLocation
9441 #define IoSkipCurrentIrpStackLocation( Irp ) \
9442 (Irp)->CurrentLocation++; \
9443 (Irp)->Tail.Overlay.CurrentStackLocation++;
9459 OUT PHANDLE FileHandle
,
9460 IN ACCESS_MASK DesiredAccess
,
9461 IN POBJECT_ATTRIBUTES ObjectAttributes
,
9462 OUT PIO_STATUS_BLOCK IoStatusBlock
,
9463 IN ULONG ShareAccess
,
9464 IN ULONG OpenOptions
9470 ZwOpenSymbolicLinkObject (
9471 OUT PHANDLE SymbolicLinkHandle
,
9472 IN ACCESS_MASK DesiredAccess
,
9473 IN POBJECT_ATTRIBUTES ObjectAttributes
9479 ZwQuerySymbolicLinkObject (
9480 IN HANDLE LinkHandle
,
9481 IN OUT PUNICODE_STRING LinkTarget
,
9482 OUT PULONG ReturnedLength OPTIONAL
9485 #endif // (VER_PRODUCTBUILD < 2195)