From e7d010c5dee9225102a317593c23b9bbd9578fd1 Mon Sep 17 00:00:00 2001 From: Alex Ionescu Date: Wed, 17 Aug 2005 07:06:59 +0000 Subject: [PATCH] Major cleanup of NDK. I've decided that it would be much cleaner to accumulate all types, regardless of their um/km availabilty, into each header. Thus, umtypes.h now only contains the equivalent of ntdef.h and is automatically not-included if the DDK is. Similary, I've removed all the NTIFS hacks and added a single ifssupp.h file, which is automatically removed if the IFS is added. That file will be deleted then the Longhorn WDK is made public (it contains the IFS/DDK). Nothing has changed on the includer-side, the same rules still apply svn path=/trunk/; revision=17420 --- .../drivers/storage/scsiport/scsiport_int.h | 4 + reactos/include/drivers/diskdump/diskdump.h | 2 +- reactos/include/ndk/arch/ketypes.h | 8 +- reactos/include/ndk/cmtypes.h | 129 ++ reactos/include/ndk/extypes.h | 28 +- reactos/include/ndk/fixmes.txt | 37 +- reactos/include/ndk/i386/mmtypes.h | 13 + reactos/include/ndk/ifssupp.h | 116 ++ reactos/include/ndk/iotypes.h | 519 +++++- reactos/include/ndk/kdfuncs.h | 2 - reactos/include/ndk/kefuncs.h | 2 - reactos/include/ndk/ketypes.h | 246 ++- reactos/include/ndk/lpctypes.h | 10 +- reactos/include/ndk/mmtypes.h | 70 +- reactos/include/ndk/ntndk.h | 60 +- reactos/include/ndk/obtypes.h | 43 +- reactos/include/ndk/pstypes.h | 120 +- reactos/include/ndk/rtlfuncs.h | 2 - reactos/include/ndk/rtltypes.h | 404 ++++- reactos/include/ndk/umfuncs.h | 4 +- reactos/include/ndk/umtypes.h | 1385 +---------------- reactos/include/ndk/zwfuncs.h | 3 - reactos/include/ndk/zwtypes.h | 5 +- reactos/w32api/include/basetsd.h | 3 + reactos/w32api/include/winnt.h | 1 + 25 files changed, 1615 insertions(+), 1601 deletions(-) create mode 100644 reactos/include/ndk/cmtypes.h create mode 100644 reactos/include/ndk/ifssupp.h diff --git a/reactos/drivers/storage/scsiport/scsiport_int.h b/reactos/drivers/storage/scsiport/scsiport_int.h index f98f2b72092..5091027ea93 100644 --- a/reactos/drivers/storage/scsiport/scsiport_int.h +++ b/reactos/drivers/storage/scsiport/scsiport_int.h @@ -7,8 +7,12 @@ #define VERSION "0.0.3" +#ifndef PAGE_ROUND_UP #define PAGE_ROUND_UP(x) ( (((ULONG_PTR)x)%PAGE_SIZE) ? ((((ULONG_PTR)x)&(~(PAGE_SIZE-1)))+PAGE_SIZE) : ((ULONG_PTR)x) ) +#endif +#ifndef ROUND_UP #define ROUND_UP(N, S) ((((N) + (S) - 1) / (S)) * (S)) +#endif #define TAG(A, B, C, D) (ULONG)(((A)<<0) + ((B)<<8) + ((C)<<16) + ((D)<<24)) diff --git a/reactos/include/drivers/diskdump/diskdump.h b/reactos/include/drivers/diskdump/diskdump.h index 1a686bc01a1..e22eaf1d0e2 100644 --- a/reactos/include/drivers/diskdump/diskdump.h +++ b/reactos/include/drivers/diskdump/diskdump.h @@ -2,7 +2,7 @@ #define __DISKDUMP_H #include -#include +#include #define MM_CORE_DUMP_HEADER_MAGIC (0xdeafbead) #define MM_CORE_DUMP_HEADER_VERSION (0x1) diff --git a/reactos/include/ndk/arch/ketypes.h b/reactos/include/ndk/arch/ketypes.h index 29ebd998da5..677629a6bda 100644 --- a/reactos/include/ndk/arch/ketypes.h +++ b/reactos/include/ndk/arch/ketypes.h @@ -9,7 +9,7 @@ #ifndef _ARCH_KETYPES_H #define _ARCH_KETYPES_H -/* Shared structure needed by Arch-specific headers */ +/* Shared structures needed by Arch-specific headers */ typedef struct _KDPC_DATA { LIST_ENTRY DpcListHead; @@ -18,6 +18,12 @@ typedef struct _KDPC_DATA ULONG DpcCount; } KDPC_DATA, *PKDPC_DATA; +typedef struct _PP_LOOKASIDE_LIST +{ + struct _GENERAL_LOOKASIDE *P; + struct _GENERAL_LOOKASIDE *L; +} PP_LOOKASIDE_LIST, *PPP_LOOKASIDE_LIST; + #ifdef _M_IX86 #include #else diff --git a/reactos/include/ndk/cmtypes.h b/reactos/include/ndk/cmtypes.h new file mode 100644 index 00000000000..062dd9a2b32 --- /dev/null +++ b/reactos/include/ndk/cmtypes.h @@ -0,0 +1,129 @@ +/* + * PROJECT: ReactOS Native Headers + * FILE: include/ndk/cmtypes.h + * PURPOSE: Definitions for Config Manager Types not defined in DDK/IFS + * PROGRAMMER: Alex Ionescu (alex@relsoft.net) + * UPDATE HISTORY: + * Created 06/10/04 + */ + +#ifndef _CMTYPES_H +#define _CMTYPES_H + +/* DEPENDENCIES **************************************************************/ + +/* EXPORTED DATA *************************************************************/ + +/* CONSTANTS *****************************************************************/ + +/* ENUMERATIONS **************************************************************/ + +#ifdef NTOS_MODE_USER +typedef enum _KEY_INFORMATION_CLASS +{ + KeyBasicInformation, + KeyNodeInformation, + KeyFullInformation, + KeyNameInformation, + KeyCachedInformation, + KeyFlagsInformation +} KEY_INFORMATION_CLASS; + +typedef enum _KEY_VALUE_INFORMATION_CLASS +{ + KeyValueBasicInformation, + KeyValueFullInformation, + KeyValuePartialInformation, + KeyValueFullInformationAlign64, + KeyValuePartialInformationAlign64 +} KEY_VALUE_INFORMATION_CLASS; + +typedef enum _KEY_SET_INFORMATION_CLASS +{ + KeyWriteTimeInformation, + KeyUserFlagsInformation, + MaxKeySetInfoClass +} KEY_SET_INFORMATION_CLASS; + +/* TYPES *********************************************************************/ + +typedef struct _KEY_WRITE_TIME_INFORMATION +{ + LARGE_INTEGER LastWriteTime; +} KEY_WRITE_TIME_INFORMATION, *PKEY_WRITE_TIME_INFORMATION; + +typedef struct _KEY_USER_FLAGS_INFORMATION +{ + ULONG UserFlags; +} KEY_USER_FLAGS_INFORMATION, *PKEY_USER_FLAGS_INFORMATION; + +typedef struct _KEY_FULL_INFORMATION +{ + LARGE_INTEGER LastWriteTime; + ULONG TitleIndex; + ULONG ClassOffset; + ULONG ClassLength; + ULONG SubKeys; + ULONG MaxNameLen; + ULONG MaxClassLen; + ULONG Values; + ULONG MaxValueNameLen; + ULONG MaxValueDataLen; + WCHAR Class[1]; +} KEY_FULL_INFORMATION, *PKEY_FULL_INFORMATION; + +typedef struct _KEY_NODE_INFORMATION +{ + LARGE_INTEGER LastWriteTime; + ULONG TitleIndex; + ULONG ClassOffset; + ULONG ClassLength; + ULONG NameLength; + WCHAR Name[1]; +} KEY_NODE_INFORMATION, *PKEY_NODE_INFORMATION; + +typedef struct _KEY_VALUE_ENTRY +{ + PUNICODE_STRING ValueName; + ULONG DataLength; + ULONG DataOffset; + ULONG Type; +} KEY_VALUE_ENTRY, *PKEY_VALUE_ENTRY; + +typedef struct _KEY_VALUE_PARTIAL_INFORMATION +{ + ULONG TitleIndex; + ULONG Type; + ULONG DataLength; + UCHAR Data[1]; +} KEY_VALUE_PARTIAL_INFORMATION, *PKEY_VALUE_PARTIAL_INFORMATION; + +typedef struct _KEY_VALUE_BASIC_INFORMATION +{ + ULONG TitleIndex; + ULONG Type; + ULONG NameLength; + WCHAR Name[1]; +} KEY_VALUE_BASIC_INFORMATION, *PKEY_VALUE_BASIC_INFORMATION; + +typedef struct _KEY_VALUE_FULL_INFORMATION +{ + ULONG TitleIndex; + ULONG Type; + ULONG DataOffset; + ULONG DataLength; + ULONG NameLength; + WCHAR Name[1]; +} KEY_VALUE_FULL_INFORMATION, *PKEY_VALUE_FULL_INFORMATION; + +typedef struct _KEY_BASIC_INFORMATION +{ + LARGE_INTEGER LastWriteTime; + ULONG TitleIndex; + ULONG NameLength; + WCHAR Name[1]; +} KEY_BASIC_INFORMATION, *PKEY_BASIC_INFORMATION; + +#endif +#endif + diff --git a/reactos/include/ndk/extypes.h b/reactos/include/ndk/extypes.h index d00125165c0..4433c70e087 100644 --- a/reactos/include/ndk/extypes.h +++ b/reactos/include/ndk/extypes.h @@ -11,36 +11,37 @@ #define _EXTYPES_H /* DEPENDENCIES **************************************************************/ -#include "ketypes.h" /* EXPORTED DATA *************************************************************/ +#ifndef NTOS_MODE_USER extern POBJECT_TYPE NTOSAPI ExIoCompletionType; extern NTOSAPI POBJECT_TYPE ExMutantObjectType; extern NTOSAPI POBJECT_TYPE ExTimerType; +#endif /* CONSTANTS *****************************************************************/ - +#ifndef NTOS_MODE_USER #define INVALID_HANDLE_VALUE (HANDLE)-1 +#endif /* Increments */ #define MUTANT_INCREMENT 1 -/* Callback Object Access Rights */ -#define CALLBACK_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x0001) -#define CALLBACK_EXECUTE (STANDARD_RIGHTS_EXECUTE|SYNCHRONIZE|0x0001) -#define CALLBACK_WRITE (STANDARD_RIGHTS_WRITE|SYNCHRONIZE|0x0001) -#define CALLBACK_READ (STANDARD_RIGHTS_READ|SYNCHRONIZE|0x0001) +/* Executive Object Access Rights */ +#define CALLBACK_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x0001) +#define CALLBACK_EXECUTE (STANDARD_RIGHTS_EXECUTE|SYNCHRONIZE|0x0001) +#define CALLBACK_WRITE (STANDARD_RIGHTS_WRITE|SYNCHRONIZE|0x0001) +#define CALLBACK_READ (STANDARD_RIGHTS_READ|SYNCHRONIZE|0x0001) +#ifdef NTOS_MODE_USER +#define EVENT_QUERY_STATE 0x0001 +#define SEMAPHORE_QUERY_STATE 0x0001 +#endif /* ENUMERATIONS **************************************************************/ /* TYPES *********************************************************************/ -/* You'll need the IFS for this, so use an equivalent version */ -#ifndef _NTIFS_ -typedef PVOID EX_RUNDOWN_REF; -typedef PVOID EX_PUSH_LOCK; -#endif - +#ifndef NTOS_MODE_USER typedef struct _EX_QUEUE_WORKER_INFO { UCHAR QueueDisabled:1; @@ -120,4 +121,5 @@ typedef struct _HANDLE_TABLE } HANDLE_TABLE, *PHANDLE_TABLE; #endif +#endif diff --git a/reactos/include/ndk/fixmes.txt b/reactos/include/ndk/fixmes.txt index b8714319228..dc1aff25f81 100644 --- a/reactos/include/ndk/fixmes.txt +++ b/reactos/include/ndk/fixmes.txt @@ -33,45 +33,10 @@ List: Priority 4: - FIXED: Kernel and Memory Types are not architecture-specific (Eric) [ketypes.h, mmtypes.h] - FIXED: Win32K Builds with windows.h (Filip) [extypes.h, ketypes.h] - - Move out stuff from umtypes.h into the actual header where they should go. Use ifdeffing - directly in that file to protect user-mode versus kernel-mode types. umtypes.h will only - end up containing the misc types that are needed for compatibility. This would create a - significant cleanup. + - FIXED: Modify design of NDK so that all the types are in their respective files (Alex) [*.h] Priority 5: - FIXED: LPC Types are totally wrong. (Alex) [lpctypes.h] - Missing System Info Classes [zwtypes.h] - FIXED: Process Priority Classes are messed up (Alex) [pstypes.h] -Generic Note: - One of the most difficult things is when certain structures require the IFS for some of their - members. Up until some time ago, the IFS was 1000$, so it was senseless to require it in order - to allow people to use the NDK. Recently, however, the IFS price went down to 100$. This is - still way too much. Even though the GNU NTIFS.H exists, I don't want to fallback on it. The - good news is that the WDK (Windows Driver Kit), which will supplant the DDK in about a year, - includes the IFS. At that point we can remove all the #ifndef/ifdef NTIFS hacks, since it'll - be OK to "force" IFS usage. - - UPDATE: - However, I'm giving serious consideration of making the IFS a requirement, and suggesting - usage of the GNU IFS for anyone that needs it. The problem, however, is that the official - GNU IFS is outdated and quite invalid in many ways, compared to the ReactOS IFS (which still - isn't perfect yet). Also, this would include many more definitions then needed. A third - option that I'm considering is creating a new header, until the WDK is out, which will be - called ifstypes. It would be the brother of umtypes, but for kernel mode. Only a small - number of types will need to be included, and hence they will be easy to locate in case - the official ones change (by the time they do, the WDK will be out however, so no worries). - It would reduce all the ifdeffing to a single file. - - UPDATE2: - No. This is a bad idea. I've just added a note to purge out large parts of umtypes.h into the - actual xxtypes.h files, and then use iffdefing. This is a direct contradiction to my idea of - generalizing all the IFS stuff together. - - UPDATE3: - No. This is different...the user-mode types will always be unavailable in kernel-mode, and - dissipating them into the real files is a good thing, because they will never move out and - they are much easier to maintain. However, once the WDK comes out, all #ifdef ntifs will - become obsolete, and they will have to be hunted down and removed. Having a single file that - is automatically added if the IFS is not detected is much easier to remove once the time - comes. diff --git a/reactos/include/ndk/i386/mmtypes.h b/reactos/include/ndk/i386/mmtypes.h index d39544a94b9..a08f7fb0d9b 100644 --- a/reactos/include/ndk/i386/mmtypes.h +++ b/reactos/include/ndk/i386/mmtypes.h @@ -9,4 +9,17 @@ #ifndef _I386_MMTYPES_H #define _I386_MMTYPES_H +/* DEPENDENCIES **************************************************************/ + +/* EXPORTED DATA *************************************************************/ + +/* CONSTANTS *****************************************************************/ + +#define PAGE_SIZE 0x1000 +#define PAGE_SHIFT 12L + +/* ENUMERATIONS **************************************************************/ + +/* TYPES *********************************************************************/ + #endif diff --git a/reactos/include/ndk/ifssupp.h b/reactos/include/ndk/ifssupp.h new file mode 100644 index 00000000000..3645bc2a878 --- /dev/null +++ b/reactos/include/ndk/ifssupp.h @@ -0,0 +1,116 @@ +/* + * PROJECT: ReactOS Native Headers + * FILE: include/ndk/ifssupp.h + * PURPOSE: Defintions present in IFS, required for NDK usage. + * PROGRAMMER: Alex Ionescu (alex@relsoft.net) + * UPDATE HISTORY: + * Created 08/16/05 + */ +#ifndef _NTIFS_ +#define _NTIFS_ + +/* DEPENDENCIES **************************************************************/ + +/* EXPORTED DATA *************************************************************/ + +/* CONSTANTS *****************************************************************/ + +/* TYPES *********************************************************************/ + +typedef PVOID PRTL_HEAP_PARAMETERS; + +#if defined(USE_LPC6432) +#define LPC_CLIENT_ID CLIENT_ID64 +#define LPC_SIZE_T ULONGLONG +#define LPC_PVOID ULONGLONG +#define LPC_HANDLE ULONGLONG +#else +#define LPC_CLIENT_ID CLIENT_ID +#define LPC_SIZE_T SIZE_T +#define LPC_PVOID PVOID +#define LPC_HANDLE HANDLE +#endif + +typedef struct _PORT_MESSAGE +{ + union + { + struct + { + CSHORT DataLength; + CSHORT TotalLength; + } s1; + ULONG Length; + } u1; + union + { + struct + { + CSHORT Type; + CSHORT DataInfoOffset; + } s2; + ULONG ZeroInit; + } u2; + union + { + LPC_CLIENT_ID ClientId; + double DoNotUseThisField; + }; + ULONG MessageId; + union + { + LPC_SIZE_T ClientViewSize; + ULONG CallbackId; + }; +} PORT_MESSAGE, *PPORT_MESSAGE; + +typedef struct _PORT_VIEW +{ + ULONG Length; + LPC_HANDLE SectionHandle; + ULONG SectionOffset; + LPC_SIZE_T ViewSize; + LPC_PVOID ViewBase; + LPC_PVOID ViewRemoteBase; +} PORT_VIEW, *PPORT_VIEW; + +typedef struct _REMOTE_PORT_VIEW +{ + ULONG Length; + LPC_SIZE_T ViewSize; + LPC_PVOID ViewBase; +} REMOTE_PORT_VIEW, *PREMOTE_PORT_VIEW; + +typedef struct _KAPC_STATE +{ + LIST_ENTRY ApcListHead[2]; + PKPROCESS Process; + BOOLEAN KernelApcInProgress; + BOOLEAN KernelApcPending; + BOOLEAN UserApcPending; +} KAPC_STATE, *PKAPC_STATE, *RESTRICTED_POINTER PRKAPC_STATE; + +typedef struct _KQUEUE +{ + DISPATCHER_HEADER Header; + LIST_ENTRY EntryListHead; + ULONG CurrentCount; + ULONG MaximumCount; + LIST_ENTRY ThreadListHead; +} KQUEUE, *PKQUEUE, *RESTRICTED_POINTER PRKQUEUE; + +typedef PVOID EX_RUNDOWN_REF; +typedef PVOID EX_PUSH_LOCK; + +typedef struct _SECURITY_CLIENT_CONTEXT +{ + SECURITY_QUALITY_OF_SERVICE SecurityQos; + PACCESS_TOKEN ClientToken; + BOOLEAN DirectlyAccessClientToken; + BOOLEAN DirectAccessEffectiveOnly; + BOOLEAN ServerIsRemote; + TOKEN_CONTROL ClientTokenControl; +} SECURITY_CLIENT_CONTEXT, *PSECURITY_CLIENT_CONTEXT; + +#endif + diff --git a/reactos/include/ndk/iotypes.h b/reactos/include/ndk/iotypes.h index 882981029a6..ad4283de8bb 100644 --- a/reactos/include/ndk/iotypes.h +++ b/reactos/include/ndk/iotypes.h @@ -11,17 +11,82 @@ #define _IOTYPES_H /* DEPENDENCIES **************************************************************/ -#include "potypes.h" /* EXPORTED DATA *************************************************************/ +#ifndef NTOS_MODE_USER extern POBJECT_TYPE NTOSAPI IoAdapterObjectType; extern POBJECT_TYPE NTOSAPI IoDeviceHandlerObjectType; extern POBJECT_TYPE NTOSAPI IoDeviceObjectType; extern POBJECT_TYPE NTOSAPI IoDriverObjectType; extern POBJECT_TYPE NTOSAPI IoFileObjectType; +#endif /* CONSTANTS *****************************************************************/ +#ifdef NTOS_MODE_USER +/* Object Access Rights */ +#define SYMBOLIC_LINK_QUERY 0x0001 +#define SYMBOLIC_LINK_ALL_ACCESS STANDARD_RIGHTS_REQUIRED | 0x0001 +#endif + +/* File Result Flags */ +#define FILE_SUPERSEDED 0x00000000 +#define FILE_OPENED 0x00000001 +#define FILE_CREATED 0x00000002 +#define FILE_OVERWRITTEN 0x00000003 +#define FILE_EXISTS 0x00000004 +#define FILE_DOES_NOT_EXIST 0x00000005 + +/* Pipe Flags */ +#define FILE_PIPE_BYTE_STREAM_MODE 0x00000000 +#define FILE_PIPE_MESSAGE_MODE 0x00000001 +#define FILE_PIPE_QUEUE_OPERATION 0x00000000 +#define FILE_PIPE_COMPLETE_OPERATION 0x00000001 +#define FILE_PIPE_INBOUND 0x00000000 +#define FILE_PIPE_OUTBOUND 0x00000001 +#define FILE_PIPE_FULL_DUPLEX 0x00000002 +#define FILE_PIPE_CLIENT_END 0x00000000 +#define FILE_PIPE_SERVER_END 0x00000001 + +/* File Attributes */ +#define FILE_ATTRIBUTE_VALID_FLAGS 0x00007fb7 +#define FILE_ATTRIBUTE_VALID_SET_FLAGS 0x000031a7 + +/* File Flags */ +#define FILE_SUPERSEDE 0x00000000 +#define FILE_OPEN 0x00000001 +#define FILE_CREATE 0x00000002 +#define FILE_OPEN_IF 0x00000003 +#define FILE_OVERWRITE 0x00000004 +#define FILE_OVERWRITE_IF 0x00000005 +#define FILE_MAXIMUM_DISPOSITION 0x00000005 + +/* File Types */ +#define FILE_DIRECTORY_FILE 0x00000001 +#define FILE_WRITE_THROUGH 0x00000002 +#define FILE_SEQUENTIAL_ONLY 0x00000004 +#define FILE_NO_INTERMEDIATE_BUFFERING 0x00000008 +#define FILE_SYNCHRONOUS_IO_ALERT 0x00000010 +#define FILE_SYNCHRONOUS_IO_NONALERT 0x00000020 +#define FILE_NON_DIRECTORY_FILE 0x00000040 +#define FILE_CREATE_TREE_CONNECTION 0x00000080 +#define FILE_COMPLETE_IF_OPLOCKED 0x00000100 +#define FILE_NO_EA_KNOWLEDGE 0x00000200 +#define FILE_OPEN_FOR_RECOVERY 0x00000400 +#define FILE_RANDOM_ACCESS 0x00000800 +#define FILE_DELETE_ON_CLOSE 0x00001000 +#define FILE_OPEN_BY_FILE_ID 0x00002000 +#define FILE_OPEN_FOR_BACKUP_INTENT 0x00004000 +#define FILE_NO_COMPRESSION 0x00008000 +#define FILE_RESERVE_OPFILTER 0x00100000 +#define FILE_OPEN_REPARSE_POINT 0x00200000 +#define FILE_OPEN_NO_RECALL 0x00400000 +#define FILE_OPEN_FOR_FREE_SPACE_QUERY 0x00800000 + +/* Device Charactertics */ +#define FILE_REMOVABLE_MEDIA 0x00000001 +#define FILE_REMOTE_DEVICE 0x00000010 + /* Device Object Extension Flags */ #define DOE_UNLOAD_PENDING 0x1 #define DOE_DELETE_PENDING 0x2 @@ -67,6 +132,90 @@ extern POBJECT_TYPE NTOSAPI IoFileObjectType; #define DNUF_NOT_DISABLEABLE 0x0008 /* ENUMERATIONS **************************************************************/ + +#ifdef NTOS_MODE_USER +typedef enum _INTERFACE_TYPE +{ + InterfaceTypeUndefined = -1, + Internal, + Isa, + Eisa, + MicroChannel, + TurboChannel, + PCIBus, + VMEBus, + NuBus, + PCMCIABus, + CBus, + MPIBus, + MPSABus, + ProcessorInternal, + InternalPowerBus, + PNPISABus, + PNPBus, + MaximumInterfaceType +}INTERFACE_TYPE, *PINTERFACE_TYPE; + +typedef enum _FILE_INFORMATION_CLASS +{ + FileDirectoryInformation = 1, + FileFullDirectoryInformation, + FileBothDirectoryInformation, + FileBasicInformation, + FileStandardInformation, + FileInternalInformation, + FileEaInformation, + FileAccessInformation, + FileNameInformation, + FileRenameInformation, + FileLinkInformation, + FileNamesInformation, + FileDispositionInformation, + FilePositionInformation, + FileFullEaInformation, + FileModeInformation, + FileAlignmentInformation, + FileAllInformation, + FileAllocationInformation, + FileEndOfFileInformation, + FileAlternateNameInformation, + FileStreamInformation, + FilePipeInformation, + FilePipeLocalInformation, + FilePipeRemoteInformation, + FileMailslotQueryInformation, + FileMailslotSetInformation, + FileCompressionInformation, + FileObjectIdInformation, + FileCompletionInformation, + FileMoveClusterInformation, + FileQuotaInformation, + FileReparsePointInformation, + FileNetworkOpenInformation, + FileAttributeTagInformation, + FileTrackingInformation, + FileIdBothDirectoryInformation, + FileIdFullDirectoryInformation, + FileValidDataLengthInformation, + FileShortNameInformation, + FileMaximumInformation +} FILE_INFORMATION_CLASS, *PFILE_INFORMATION_CLASS; + +typedef enum _FSINFOCLASS +{ + FileFsVolumeInformation = 1, + FileFsLabelInformation, + FileFsSizeInformation, + FileFsDeviceInformation, + FileFsAttributeInformation, + FileFsControlInformation, + FileFsFullSizeInformation, + FileFsObjectIdInformation, + FileFsDriverPathInformation, + FileFsMaximumInformation +} FS_INFORMATION_CLASS, *PFS_INFORMATION_CLASS; +#endif + typedef enum _PNP_DEVNODE_STATE { DeviceNodeUnspecified = 0x300, @@ -95,6 +244,279 @@ typedef enum _PNP_DEVNODE_STATE /* TYPES *********************************************************************/ +#ifdef NTOS_MODE_USER +typedef struct _FILE_BASIC_INFORMATION +{ + LARGE_INTEGER CreationTime; + LARGE_INTEGER LastAccessTime; + LARGE_INTEGER LastWriteTime; + LARGE_INTEGER ChangeTime; + ULONG FileAttributes; +} FILE_BASIC_INFORMATION, *PFILE_BASIC_INFORMATION; + +typedef struct _FILE_STANDARD_INFORMATION +{ + LARGE_INTEGER AllocationSize; + LARGE_INTEGER EndOfFile; + ULONG NumberOfLinks; + BOOLEAN DeletePending; + BOOLEAN Directory; +} FILE_STANDARD_INFORMATION, *PFILE_STANDARD_INFORMATION; + +typedef struct _FILE_NETWORK_OPEN_INFORMATION +{ + LARGE_INTEGER CreationTime; + LARGE_INTEGER LastAccessTime; + LARGE_INTEGER LastWriteTime; + LARGE_INTEGER ChangeTime; + LARGE_INTEGER AllocationSize; + LARGE_INTEGER EndOfFile; + ULONG FileAttributes; +} FILE_NETWORK_OPEN_INFORMATION, *PFILE_NETWORK_OPEN_INFORMATION; + +typedef struct _FILE_EA_INFORMATION +{ + ULONG EaSize; +} FILE_EA_INFORMATION, *PFILE_EA_INFORMATION; + +typedef struct _FILE_COMPRESSION_INFORMATION +{ + LARGE_INTEGER CompressedFileSize; + USHORT CompressionFormat; + UCHAR CompressionUnitShift; + UCHAR ChunkShift; + UCHAR ClusterShift; + UCHAR Reserved[3]; +} FILE_COMPRESSION_INFORMATION, *PFILE_COMPRESSION_INFORMATION; + +typedef struct _FILE_POSITION_INFORMATION +{ + LARGE_INTEGER CurrentByteOffset; +} FILE_POSITION_INFORMATION, *PFILE_POSITION_INFORMATION; + +typedef struct _FILE_DISPOSITION_INFORMATION +{ + BOOLEAN DeleteFile; +} FILE_DISPOSITION_INFORMATION, *PFILE_DISPOSITION_INFORMATION; + +typedef struct _FILE_FULL_EA_INFORMATION +{ + ULONG NextEntryOffset; + UCHAR Flags; + UCHAR EaNameLength; + USHORT EaValueLength; + CHAR EaName[1]; +} FILE_FULL_EA_INFORMATION, *PFILE_FULL_EA_INFORMATION; + +typedef struct _FILE_QUOTA_INFORMATION +{ + ULONG NextEntryOffset; + ULONG SidLength; + LARGE_INTEGER ChangeTime; + LARGE_INTEGER QuotaUsed; + LARGE_INTEGER QuotaThreshold; + LARGE_INTEGER QuotaLimit; + SID Sid; +} FILE_QUOTA_INFORMATION, *PFILE_QUOTA_INFORMATION; + +typedef struct _FILE_INTERNAL_INFORMATION +{ + LARGE_INTEGER IndexNumber; +} FILE_INTERNAL_INFORMATION, *PFILE_INTERNAL_INFORMATION; + +typedef struct _FILE_RENAME_INFORMATION +{ + BOOLEAN ReplaceIfExists; + HANDLE RootDirectory; + ULONG FileNameLength; + WCHAR FileName[1]; +} FILE_RENAME_INFORMATION, *PFILE_RENAME_INFORMATION; + +typedef struct _FILE_PIPE_INFORMATION +{ + ULONG ReadMode; + ULONG CompletionMode; +} FILE_PIPE_INFORMATION, *PFILE_PIPE_INFORMATION; + +typedef struct _FILE_PIPE_LOCAL_INFORMATION +{ + ULONG NamedPipeType; + ULONG NamedPipeConfiguration; + ULONG MaximumInstances; + ULONG CurrentInstances; + ULONG InboundQuota; + ULONG ReadDataAvailable; + ULONG OutboundQuota; + ULONG WriteQuotaAvailable; + ULONG NamedPipeState; + ULONG NamedPipeEnd; +} FILE_PIPE_LOCAL_INFORMATION, *PFILE_PIPE_LOCAL_INFORMATION; + +typedef struct _FILE_PIPE_REMOTE_INFORMATION +{ + LARGE_INTEGER CollectDataTime; + ULONG MaximumCollectionCount; +} FILE_PIPE_REMOTE_INFORMATION, *PFILE_PIPE_REMOTE_INFORMATION; + +typedef struct _FILE_MAILSLOT_QUERY_INFORMATION +{ + ULONG MaximumMessageSize; + ULONG MailslotQuota; + ULONG NextMessageSize; + ULONG MessagesAvailable; + LARGE_INTEGER ReadTimeout; +} FILE_MAILSLOT_QUERY_INFORMATION, *PFILE_MAILSLOT_QUERY_INFORMATION; + +typedef struct _FILE_MAILSLOT_SET_INFORMATION +{ + LARGE_INTEGER ReadTimeout; +} FILE_MAILSLOT_SET_INFORMATION, *PFILE_MAILSLOT_SET_INFORMATION; + +typedef struct _FILE_BOTH_DIR_INFORMATION +{ + ULONG NextEntryOffset; + ULONG FileIndex; + LARGE_INTEGER CreationTime; + LARGE_INTEGER LastAccessTime; + LARGE_INTEGER LastWriteTime; + LARGE_INTEGER ChangeTime; + LARGE_INTEGER EndOfFile; + LARGE_INTEGER AllocationSize; + ULONG FileAttributes; + ULONG FileNameLength; + ULONG EaSize; + CCHAR ShortNameLength; + WCHAR ShortName[12]; + WCHAR FileName[1]; +} FILE_BOTH_DIR_INFORMATION, *PFILE_BOTH_DIR_INFORMATION; + +typedef struct _FILE_COMPLETION_INFORMATION +{ + HANDLE Port; + PVOID Key; +} FILE_COMPLETION_INFORMATION, *PFILE_COMPLETION_INFORMATION; + +typedef struct _FILE_LINK_INFORMATION +{ + BOOLEAN ReplaceIfExists; + HANDLE RootDirectory; + ULONG FileNameLength; + WCHAR FileName[1]; +} FILE_LINK_INFORMATION, *PFILE_LINK_INFORMATION; + +typedef struct _FILE_NAME_INFORMATION +{ + ULONG FileNameLength; + WCHAR FileName[1]; +} FILE_NAME_INFORMATION, *PFILE_NAME_INFORMATION; + +typedef struct _FILE_ALLOCATION_INFORMATION +{ + LARGE_INTEGER AllocationSize; +} FILE_ALLOCATION_INFORMATION, *PFILE_ALLOCATION_INFORMATION; + +typedef struct _FILE_END_OF_FILE_INFORMATION +{ + LARGE_INTEGER EndOfFile; +} FILE_END_OF_FILE_INFORMATION, *PFILE_END_OF_FILE_INFORMATION; + +typedef struct _FILE_VALID_DATA_LENGTH_INFORMATION +{ + LARGE_INTEGER ValidDataLength; +} FILE_VALID_DATA_LENGTH_INFORMATION, *PFILE_VALID_DATA_LENGTH_INFORMATION; + +typedef struct _FILE_FS_DEVICE_INFORMATION +{ + DEVICE_TYPE DeviceType; + ULONG Characteristics; +} FILE_FS_DEVICE_INFORMATION, *PFILE_FS_DEVICE_INFORMATION; + +typedef struct _FILE_FS_ATTRIBUTE_INFORMATION +{ + ULONG FileSystemAttributes; + ULONG MaximumComponentNameLength; + ULONG FileSystemNameLength; + WCHAR FileSystemName[1]; +} FILE_FS_ATTRIBUTE_INFORMATION, *PFILE_FS_ATTRIBUTE_INFORMATION; + +typedef struct _FILE_FS_SIZE_INFORMATION +{ + LARGE_INTEGER TotalAllocationUnits; + LARGE_INTEGER AvailableAllocationUnits; + ULONG SectorsPerAllocationUnit; + ULONG BytesPerSector; +} FILE_FS_SIZE_INFORMATION, *PFILE_FS_SIZE_INFORMATION; + +typedef struct _FILE_FS_LABEL_INFORMATION +{ + ULONG VolumeLabelLength; + WCHAR VolumeLabel[1]; +} FILE_FS_LABEL_INFORMATION, *PFILE_FS_LABEL_INFORMATION; + +typedef struct _FILE_FS_VOLUME_INFORMATION +{ + LARGE_INTEGER VolumeCreationTime; + ULONG VolumeSerialNumber; + ULONG VolumeLabelLength; + BOOLEAN SupportsObjects; + WCHAR VolumeLabel[1]; +} FILE_FS_VOLUME_INFORMATION, *PFILE_FS_VOLUME_INFORMATION; + +typedef struct _FILE_PIPE_WAIT_FOR_BUFFER +{ + LARGE_INTEGER Timeout; + ULONG NameLength; + BOOLEAN TimeoutSpecified; + WCHAR Name[1]; +} FILE_PIPE_WAIT_FOR_BUFFER, *PFILE_PIPE_WAIT_FOR_BUFFER; + +typedef struct _FILE_PIPE_PEEK_BUFFER +{ + ULONG NamedPipeState; + ULONG ReadDataAvailable; + ULONG NumberOfMessages; + ULONG MessageLength; + CHAR Data[1]; +} FILE_PIPE_PEEK_BUFFER, *PFILE_PIPE_PEEK_BUFFER; + +typedef struct _IO_STATUS_BLOCK +{ + union + { + NTSTATUS Status; + PVOID Pointer; + }; + ULONG_PTR Information; +} IO_STATUS_BLOCK, *PIO_STATUS_BLOCK; + +typedef struct _IO_ERROR_LOG_PACKET +{ + UCHAR MajorFunctionCode; + UCHAR RetryCount; + USHORT DumpDataSize; + USHORT NumberOfStrings; + USHORT StringOffset; + USHORT EventCategory; + NTSTATUS ErrorCode; + ULONG UniqueErrorValue; + NTSTATUS FinalStatus; + ULONG SequenceNumber; + ULONG IoControlCode; + LARGE_INTEGER DeviceOffset; + ULONG DumpData[1]; +}IO_ERROR_LOG_PACKET, *PIO_ERROR_LOG_PACKET; + +typedef struct _IO_ERROR_LOG_MESSAGE +{ + USHORT Type; + USHORT Size; + USHORT DriverNameLength; + LARGE_INTEGER TimeStamp; + ULONG DriverNameOffset; + IO_ERROR_LOG_PACKET EntryData; +} IO_ERROR_LOG_MESSAGE, *PIO_ERROR_LOG_MESSAGE; +#endif + typedef struct _MAILSLOT_CREATE_PARAMETERS { ULONG MailslotQuota; @@ -115,6 +537,7 @@ typedef struct _NAMED_PIPE_CREATE_PARAMETERS BOOLEAN TimeoutSpecified; } NAMED_PIPE_CREATE_PARAMETERS, *PNAMED_PIPE_CREATE_PARAMETERS; +#ifndef NTOS_MODE_USER typedef struct _IO_TIMER { USHORT Type; @@ -127,52 +550,33 @@ typedef struct _IO_TIMER typedef struct _DEVICE_NODE { - /* A tree structure. */ struct _DEVICE_NODE *Parent; struct _DEVICE_NODE *PrevSibling; struct _DEVICE_NODE *NextSibling; struct _DEVICE_NODE *Child; - /* The level of deepness in the tree. */ UINT Level; - PPO_DEVICE_NOTIFY Notify; - /* State machine. */ + struct _PO_DEVICE_NOTIFY *Notify; PNP_DEVNODE_STATE State; PNP_DEVNODE_STATE PreviousState; PNP_DEVNODE_STATE StateHistory[20]; UINT StateHistoryEntry; - /* ? */ INT CompletionStatus; - /* ? */ PIRP PendingIrp; - /* See DNF_* flags below (WinDBG documentation has WRONG values) */ ULONG Flags; - /* See DNUF_* flags below (and IRP_MN_QUERY_PNP_DEVICE_STATE) */ ULONG UserFlags; - /* See CM_PROB_* values are defined in cfg.h */ ULONG Problem; - /* Pointer to the PDO corresponding to the device node. */ PDEVICE_OBJECT PhysicalDeviceObject; - /* Resource list as assigned by the PnP arbiter. See IRP_MN_START_DEVICE - and ARBITER_INTERFACE (not documented in DDK, but present in headers). */ PCM_RESOURCE_LIST ResourceList; - /* Resource list as assigned by the PnP arbiter (translated version). */ PCM_RESOURCE_LIST ResourceListTranslated; - /* Instance path relative to the Enum key in registry. */ UNICODE_STRING InstancePath; - /* Name of the driver service. */ UNICODE_STRING ServiceName; - /* ? */ PDEVICE_OBJECT DuplicatePDO; - /* See IRP_MN_QUERY_RESOURCE_REQUIREMENTS. */ PIO_RESOURCE_REQUIREMENTS_LIST ResourceRequirements; - /* Information about bus for bus drivers. */ INTERFACE_TYPE InterfaceType; ULONG BusNumber; - /* Information about underlying bus for child devices. */ INTERFACE_TYPE ChildInterfaceType; ULONG ChildBusNumber; USHORT ChildBusTypeIndex; - /* ? */ UCHAR RemovalPolicy; UCHAR HardwareRemovalPolicy; LIST_ENTRY TargetDeviceNotify; @@ -191,9 +595,7 @@ typedef struct _DEVICE_NODE { struct _DEVICE_NODE *NextResourceDeviceNode; } OverUsed2; - /* See IRP_MN_QUERY_RESOURCES/IRP_MN_FILTER_RESOURCES. */ PCM_RESOURCE_LIST BootResources; - /* See the bitfields in DEVICE_CAPABILITIES structure. */ ULONG CapabilityFlags; struct { @@ -245,6 +647,77 @@ typedef struct _PRIVATE_DRIVER_EXTENSIONS PVOID ClientIdentificationAddress; CHAR Extension[1]; } PRIVATE_DRIVER_EXTENSIONS, *PPRIVATE_DRIVER_EXTENSIONS; +#endif + +/* FUNCTION TYPES ************************************************************/ +typedef VOID +(NTAPI *PIO_APC_ROUTINE)( + IN PVOID ApcContext, + IN PIO_STATUS_BLOCK IoStatusBlock, + IN ULONG Reserved); + +/* I/O CONTROL CODES *********************************************************/ + +#ifdef NTOS_MODE_USER +/* Mailslots */ +#define FSCTL_MAILSLOT_PEEK \ + CTL_CODE(FILE_DEVICE_MAILSLOT, 0, METHOD_NEITHER, FILE_READ_DATA) + +/* Pipes */ +#define FSCTL_PIPE_ASSIGN_EVENT \ + CTL_CODE(FILE_DEVICE_NAMED_PIPE, 0, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_PIPE_DISCONNECT \ + CTL_CODE(FILE_DEVICE_NAMED_PIPE, 1, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_PIPE_LISTEN \ + CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_PIPE_PEEK \ + CTL_CODE(FILE_DEVICE_NAMED_PIPE, 3, METHOD_BUFFERED, FILE_READ_DATA) +#define FSCTL_PIPE_QUERY_EVENT \ + CTL_CODE(FILE_DEVICE_NAMED_PIPE, 4, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_PIPE_TRANSCEIVE \ + CTL_CODE(FILE_DEVICE_NAMED_PIPE, 5, METHOD_NEITHER, FILE_READ_DATA | FILE_WRITE_DATA) +#define FSCTL_PIPE_WAIT \ + CTL_CODE(FILE_DEVICE_NAMED_PIPE, 6, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_PIPE_IMPERSONATE \ + CTL_CODE(FILE_DEVICE_NAMED_PIPE, 7, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_PIPE_SET_CLIENT_PROCESS \ + CTL_CODE(FILE_DEVICE_NAMED_PIPE, 8, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_PIPE_QUERY_CLIENT_PROCESS \ + CTL_CODE(FILE_DEVICE_NAMED_PIPE, 9, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_PIPE_INTERNAL_READ \ + CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2045, METHOD_BUFFERED, FILE_READ_DATA) +#define FSCTL_PIPE_INTERNAL_WRITE \ + CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2046, METHOD_BUFFERED, FILE_WRITE_DATA) +#define FSCTL_PIPE_INTERNAL_TRANSCEIVE \ + CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2047, METHOD_NEITHER, FILE_READ_DATA | FILE_WRITE_DATA) +#define FSCTL_PIPE_INTERNAL_READ_OVFLOW \ + CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2048, METHOD_BUFFERED, FILE_READ_DATA) + +/* Tapes */ +#define IOCTL_TAPE_ERASE \ + CTL_CODE(FILE_DEVICE_TAPE, 0, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) +#define IOCTL_TAPE_PREPARE \ + CTL_CODE(FILE_DEVICE_TAPE, 1, METHOD_BUFFERED, FILE_READ_ACCESS) +#define IOCTL_TAPE_WRITE_MARKS \ + CTL_CODE(FILE_DEVICE_TAPE, 2, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) +#define IOCTL_TAPE_GET_POSITION \ + CTL_CODE(FILE_DEVICE_TAPE, 3, METHOD_BUFFERED, FILE_READ_ACCESS) +#define IOCTL_TAPE_SET_POSITION \ + CTL_CODE(FILE_DEVICE_TAPE, 4, METHOD_BUFFERED, FILE_READ_ACCESS) +#define IOCTL_TAPE_GET_DRIVE_PARAMS \ + CTL_CODE(FILE_DEVICE_TAPE, 5, METHOD_BUFFERED, FILE_READ_ACCESS) +#define IOCTL_TAPE_SET_DRIVE_PARAMS \ + CTL_CODE(FILE_DEVICE_TAPE, 6, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) +#define IOCTL_TAPE_GET_MEDIA_PARAMS \ + CTL_CODE(FILE_DEVICE_TAPE, 7, METHOD_BUFFERED, FILE_READ_ACCESS) +#define IOCTL_TAPE_SET_MEDIA_PARAMS \ + CTL_CODE(FILE_DEVICE_TAPE, 8, METHOD_BUFFERED, FILE_READ_ACCESS) +#define IOCTL_TAPE_GET_STATUS \ + CTL_CODE(FILE_DEVICE_TAPE, 9, METHOD_BUFFERED, FILE_READ_ACCESS) +#define IOCTL_TAPE_CREATE_PARTITION \ + CTL_CODE(FILE_DEVICE_TAPE, 10, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) + +#endif #endif diff --git a/reactos/include/ndk/kdfuncs.h b/reactos/include/ndk/kdfuncs.h index 187e53fbcfe..1fc0539310f 100644 --- a/reactos/include/ndk/kdfuncs.h +++ b/reactos/include/ndk/kdfuncs.h @@ -12,8 +12,6 @@ /* DEPENDENCIES **************************************************************/ #include "kdtypes.h" -/* FUNCTION TYPES ************************************************************/ - /* PROTOTYPES ****************************************************************/ BYTE diff --git a/reactos/include/ndk/kefuncs.h b/reactos/include/ndk/kefuncs.h index 6dd553c8c1a..d8ea0e5b16c 100644 --- a/reactos/include/ndk/kefuncs.h +++ b/reactos/include/ndk/kefuncs.h @@ -12,8 +12,6 @@ /* DEPENDENCIES **************************************************************/ #include "ketypes.h" -/* FUNCTION TYPES ************************************************************/ - /* PROTOTYPES ****************************************************************/ VOID diff --git a/reactos/include/ndk/ketypes.h b/reactos/include/ndk/ketypes.h index 005c3901088..2d52a22b03a 100644 --- a/reactos/include/ndk/ketypes.h +++ b/reactos/include/ndk/ketypes.h @@ -10,28 +10,24 @@ #define _KETYPES_H /* DEPENDENCIES **************************************************************/ -#include "haltypes.h" -#include "potypes.h" -#include "mmtypes.h" +#ifndef NTOS_MODE_USER #include - -/* - * Architecture-specific types - * NB: Although KPROCESS is Arch-Specific, - * only some members are different and we will use #ifdef - * directly in the structure to avoid dependency-hell - */ #include "arch/ketypes.h" +#endif /* CONSTANTS *****************************************************************/ #define SSDT_MAX_ENTRIES 4 #define PROCESSOR_FEATURE_MAX 64 - #define CONTEXT_DEBUGGER (CONTEXT_FULL | CONTEXT_FLOATING_POINT) - #define THREAD_WAIT_OBJECTS 4 +#define THREAD_ALERT 0x4 + +#ifdef NTOS_MODE_USER +#define SharedUserData ((KUSER_SHARED_DATA * CONST) USER_SHARED_DATA) +#endif /* EXPORTED DATA *************************************************************/ +#ifndef NTOS_MODE_USER extern CHAR NTOSAPI KeNumberProcessors; extern LOADER_PARAMETER_BLOCK NTOSAPI KeLoaderBlock; extern ULONG NTOSAPI KeDcacheFlushCount; @@ -43,11 +39,203 @@ extern ULONG NTOSAPI KeMinimumIncrement; extern ULONG NTOSAPI NtBuildNumber; extern SSDT_ENTRY NTOSAPI KeServiceDescriptorTable[SSDT_MAX_ENTRIES]; extern SSDT_ENTRY NTOSAPI KeServiceDescriptorTableShadow[SSDT_MAX_ENTRIES]; +#endif /* ENUMERATIONS **************************************************************/ +#ifdef NTOS_MODE_USER +typedef enum _EVENT_TYPE +{ + NotificationEvent, + SynchronizationEvent +} EVENT_TYPE; + +typedef enum _TIMER_TYPE +{ + NotificationTimer, + SynchronizationTimer +} TIMER_TYPE; + +typedef enum _WAIT_TYPE +{ + WaitAll, + WaitAny +} WAIT_TYPE; + +typedef enum _MODE +{ + KernelMode, + UserMode, + MaximumMode +} MODE; + +typedef enum _KWAIT_REASON +{ + Executive, + FreePage, + PageIn, + PoolAllocation, + DelayExecution, + Suspended, + UserRequest, + WrExecutive, + WrFreePage, + WrPageIn, + WrPoolAllocation, + WrDelayExecution, + WrSuspended, + WrUserRequest, + WrEventPair, + WrQueue, + WrLpcReceive, + WrLpcReply, + WrVirtualMemory, + WrPageOut, + WrRendezvous, + Spare2, + WrGuardedMutex, + Spare4, + Spare5, + Spare6, + WrKernel, + WrResource, + WrPushLock, + WrMutex, + WrQuantumEnd, + WrDispatchInt, + WrPreempted, + WrYieldExecution, + MaximumWaitReason +} KWAIT_REASON; + +typedef enum _KPROFILE_SOURCE +{ + ProfileTime, + ProfileAlignmentFixup, + ProfileTotalIssues, + ProfilePipelineDry, + ProfileLoadInstructions, + ProfilePipelineFrozen, + ProfileBranchInstructions, + ProfileTotalNonissues, + ProfileDcacheMisses, + ProfileIcacheMisses, + ProfileCacheMisses, + ProfileBranchMispredictions, + ProfileStoreInstructions, + ProfileFpInstructions, + ProfileIntegerInstructions, + Profile2Issue, + Profile3Issue, + Profile4Issue, + ProfileSpecialInstructions, + ProfileTotalCycles, + ProfileIcacheIssues, + ProfileDcacheAccesses, + ProfileMemoryBarrierCycles, + ProfileLoadLinkedIssues, + ProfileMaximum +} KPROFILE_SOURCE; + +typedef enum _NT_PRODUCT_TYPE +{ + NtProductWinNt = 1, + NtProductLanManNt, + NtProductServer +} NT_PRODUCT_TYPE, *PNT_PRODUCT_TYPE; + +typedef enum _ALTERNATIVE_ARCHITECTURE_TYPE +{ + StandardDesign, + NEC98x86, + EndAlternatives +} ALTERNATIVE_ARCHITECTURE_TYPE; +#endif + +typedef enum _KTHREAD_STATE +{ + Initialized, + Ready, + Running, + Standby, + Terminated, + Waiting, + Transition, + DeferredReady, +} KTHREAD_STATE, *PKTHREAD_STATE; + +/* FUNCTION TYPES ************************************************************/ + +typedef VOID +(NTAPI *PKNORMAL_ROUTINE)( + IN PVOID NormalContext, + IN PVOID SystemArgument1, + IN PVOID SystemArgument2); + +typedef VOID +(NTAPI *PTIMER_APC_ROUTINE)( + IN PVOID TimerContext, + IN ULONG TimerLowValue, + IN LONG TimerHighValue); + /* TYPES *********************************************************************/ +typedef LONG KPRIORITY; + +#ifdef NTOS_MODE_USER +typedef CCHAR KPROCESSOR_MODE; + +typedef struct _KSYSTEM_TIME +{ + ULONG LowPart; + LONG High1Time; + LONG High2Time; +} KSYSTEM_TIME, *PKSYSTEM_TIME; + +typedef struct _KUSER_SHARED_DATA +{ + ULONG TickCountLowDeprecated; + ULONG TickCountMultiplier; + volatile KSYSTEM_TIME InterruptTime; + volatile KSYSTEM_TIME SystemTime; + volatile KSYSTEM_TIME TimeZoneBias; + USHORT ImageNumberLow; + USHORT ImageNumberHigh; + WCHAR NtSystemRoot[260]; + ULONG MaxStackTraceDepth; + ULONG CryptoExponent; + ULONG TimeZoneId; + ULONG LargePageMinimum; + ULONG Reserved2[7]; + NT_PRODUCT_TYPE NtProductType; + BOOLEAN ProductTypeIsValid; + ULONG NtMajorVersion; + ULONG NtMinorVersion; + BOOLEAN ProcessorFeatures[PROCESSOR_FEATURE_MAX]; + ULONG Reserved1; + ULONG Reserved3; + volatile ULONG TimeSlip; + ALTERNATIVE_ARCHITECTURE_TYPE AlternativeArchitecture; + LARGE_INTEGER SystemExpirationDate; + ULONG SuiteMask; + BOOLEAN KdDebuggerEnabled; + volatile ULONG ActiveConsoleId; + volatile ULONG DismountCount; + ULONG ComPlusPackage; + ULONG LastSystemRITEventTickCount; + ULONG NumberOfPhysicalPages; + BOOLEAN SafeBootMode; + ULONG TraceLogging; + ULONGLONG Fill0; + ULONGLONG SystemCall[4]; + union { + volatile KSYSTEM_TIME TickCount; + volatile ULONG64 TickCountQuad; + }; +} KUSER_SHARED_DATA, *PKUSER_SHARED_DATA; +#endif + +#ifndef NTOS_MODE_USER typedef struct _CONFIGURATION_COMPONENT_DATA { struct _CONFIGURATION_COMPONENT_DATA *Parent; @@ -63,27 +251,6 @@ typedef enum _KAPC_ENVIRONMENT CurrentApcEnvironment } KAPC_ENVIRONMENT; -/* We don't want to force NTIFS usage only for two structures */ -#ifndef _NTIFS_ -typedef struct _KAPC_STATE -{ - LIST_ENTRY ApcListHead[2]; - PKPROCESS Process; - BOOLEAN KernelApcInProgress; - BOOLEAN KernelApcPending; - BOOLEAN UserApcPending; -} KAPC_STATE, *PKAPC_STATE, *RESTRICTED_POINTER PRKAPC_STATE; - -typedef struct _KQUEUE -{ - DISPATCHER_HEADER Header; - LIST_ENTRY EntryListHead; - ULONG CurrentCount; - ULONG MaximumCount; - LIST_ENTRY ThreadListHead; -} KQUEUE, *PKQUEUE, *RESTRICTED_POINTER PRKQUEUE; -#endif - typedef struct _KNODE { SLIST_HEADER DeadStackList; @@ -319,17 +486,6 @@ typedef struct _KPROCESS ULONG StackCount; /* 06C */ LIST_ENTRY ProcessListEntry; /* 070 */ } KPROCESS; - -typedef enum _KTHREAD_STATE -{ - Initialized, - Ready, - Running, - Standby, - Terminated, - Waiting, - Transition, - DeferredReady, -} KTHREAD_STATE, *PKTHREAD_STATE; +#endif /* !NTOS_MODE_USER */ #endif diff --git a/reactos/include/ndk/lpctypes.h b/reactos/include/ndk/lpctypes.h index f0b74cbddea..f27ed12bb8f 100644 --- a/reactos/include/ndk/lpctypes.h +++ b/reactos/include/ndk/lpctypes.h @@ -34,12 +34,7 @@ typedef enum _LPC_TYPE /* TYPES *********************************************************************/ -/* - * Native Structures in IFS. Duplicated here for user-mode. - * Also duplicated if the IFS is not present. Until the WDK is - * released, we should not force the usage of a 100$ kit. - */ -#if defined(NTOS_MODE_USER) || !(defined(_NTIFS_)) +#ifdef NTOS_MODE_USER #if defined(USE_LPC6432) #define LPC_CLIENT_ID CLIENT_ID64 @@ -130,7 +125,6 @@ typedef struct _LPCP_PORT_QUEUE LIST_ENTRY ReceiveHead; } LPCP_PORT_QUEUE, *PLPCP_PORT_QUEUE; -#ifdef _NTIFS_ typedef struct _LPCP_PORT_OBJECT { ULONG Length; @@ -177,8 +171,6 @@ typedef struct _LPCP_CONNECTION_MESSAGE } LPCP_CONNECTION_MESSAGE, *PLPCP_CONNECTION_MESSAGE; #endif -#endif - /* CONSTANTS *****************************************************************/ #define PORT_MAXIMUM_MESSAGE_LENGTH 256 diff --git a/reactos/include/ndk/mmtypes.h b/reactos/include/ndk/mmtypes.h index df4adf2984e..89baab83bfa 100644 --- a/reactos/include/ndk/mmtypes.h +++ b/reactos/include/ndk/mmtypes.h @@ -10,7 +10,6 @@ #define _MMTYPES_H /* DEPENDENCIES **************************************************************/ - #include "arch/mmtypes.h" /* EXPORTED DATA *************************************************************/ @@ -18,6 +17,34 @@ /* CONSTANTS *****************************************************************/ /* ENUMERATIONS **************************************************************/ + +#ifdef NTOS_MODE_USER +typedef enum _SECTION_INHERIT +{ + ViewShare = 1, + ViewUnmap = 2 +} SECTION_INHERIT; + +typedef enum _POOL_TYPE +{ + NonPagedPool, + PagedPool, + NonPagedPoolMustSucceed, + DontUseThisType, + NonPagedPoolCacheAligned, + PagedPoolCacheAligned, + NonPagedPoolCacheAlignedMustS, + MaxPoolType, + NonPagedPoolSession = 32, + PagedPoolSession, + NonPagedPoolMustSucceedSession, + DontUseThisTypeSession, + NonPagedPoolCacheAlignedSession, + PagedPoolCacheAlignedSession, + NonPagedPoolCacheAlignedMustSSession +} POOL_TYPE; +#endif + typedef enum _PP_NPAGED_LOOKASIDE_NUMBER { LookasideSmallIrpList = 0, @@ -32,6 +59,40 @@ typedef enum _PP_NPAGED_LOOKASIDE_NUMBER /* TYPES *********************************************************************/ +#ifdef NTOS_MODE_USER +typedef struct _VM_COUNTERS +{ + SIZE_T PeakVirtualSize; + SIZE_T VirtualSize; + ULONG PageFaultCount; + SIZE_T PeakWorkingSetSize; + SIZE_T WorkingSetSize; + SIZE_T QuotaPeakPagedPoolUsage; + SIZE_T QuotaPagedPoolUsage; + SIZE_T QuotaPeakNonPagedPoolUsage; + SIZE_T QuotaNonPagedPoolUsage; + SIZE_T PagefileUsage; + SIZE_T PeakPagefileUsage; +} VM_COUNTERS, *PVM_COUNTERS; + +typedef struct _VM_COUNTERS_EX +{ + SIZE_T PeakVirtualSize; + SIZE_T VirtualSize; + ULONG PageFaultCount; + SIZE_T PeakWorkingSetSize; + SIZE_T WorkingSetSize; + SIZE_T QuotaPeakPagedPoolUsage; + SIZE_T QuotaPagedPoolUsage; + SIZE_T QuotaPeakNonPagedPoolUsage; + SIZE_T QuotaNonPagedPoolUsage; + SIZE_T PagefileUsage; + SIZE_T PeakPagefileUsage; + SIZE_T PrivateUsage; +} VM_COUNTERS_EX, *PVM_COUNTERS_EX; +#endif + +#ifndef NTOS_MODE_USER /* FIXME: Forced to do this for now, because of EPROCESS, will go away before 0.3.0 */ typedef struct _MADDRESS_SPACE { @@ -43,12 +104,6 @@ typedef struct _MADDRESS_SPACE ULONG PageTableRefCountTableSize; } MADDRESS_SPACE, *PMADDRESS_SPACE; -typedef struct _PP_LOOKASIDE_LIST -{ - struct _GENERAL_LOOKASIDE *P; - struct _GENERAL_LOOKASIDE *L; -} PP_LOOKASIDE_LIST, *PPP_LOOKASIDE_LIST; - typedef struct _ADDRESS_RANGE { ULONG BaseAddrLow; @@ -161,3 +216,4 @@ typedef struct _MMSUPPORT } MMSUPPORT, *PMMSUPPORT; #endif +#endif diff --git a/reactos/include/ndk/ntndk.h b/reactos/include/ndk/ntndk.h index fb80f257e6d..ae9c78ed810 100644 --- a/reactos/include/ndk/ntndk.h +++ b/reactos/include/ndk/ntndk.h @@ -16,43 +16,45 @@ /* Helper Header */ #include +/* A version of ntdef.h to be used with PSDK headers. */ +#include "umtypes.h" + /* Kernel-Mode NDK */ #ifndef NTOS_MODE_USER - #include "kdtypes.h" /* Kernel Debugger Types */ - #include "kdfuncs.h" /* Kernel Debugger Functions */ - #include "cctypes.h" /* Cache Manager Types */ - #include "dbgktypes.h" /* User-Mode Kernel Debugging Types */ - #include "extypes.h" /* Executive Types */ - #include "haltypes.h" /* Hardware Abstraction Layer Types */ - #include "halfuncs.h" /* Hardware Abstraction Layer Functions */ - #include "inbvfuncs.h" /* Initialization Boot Video Functions */ - #include "iotypes.h" /* Input/Output Manager Types */ - #include "iofuncs.h" /* Input/Output Manager Functions */ - #include "ketypes.h" /* Kernel Types */ - #include "kefuncs.h" /* Kernel Functions */ - #include "mmtypes.h" /* Memory Manager Types */ - #include "mmfuncs.h" /* Memory Manager Functions */ - #include "obtypes.h" /* Object Manager Types */ - #include "obfuncs.h" /* Object Manager Functions */ - #include "potypes.h" /* Power Manager Types */ - #include "psfuncs.h" /* Process Manager Functions */ - #include "setypes.h" /* Security Subsystem Types */ - #include "sefuncs.h" /* Security Subsystem Functions */ -#else - /* User-Mode NDK */ - #include "umtypes.h" /* Native Types in DDK/IFS but not in PSDK */ - #include "umfuncs.h" /* User-Mode NT Library Functions */ -#endif +#include "ifssupp.h" /* IFS Support Header */ +#include "kdfuncs.h" /* Kernel Debugger Functions */ +#include "cctypes.h" /* Cache Manager Types */ +#include "potypes.h" /* Power Manager Types */ +#include "dbgktypes.h" /* User-Mode Kernel Debugging Types */ +#include "haltypes.h" /* Hardware Abstraction Layer Types */ +#include "halfuncs.h" /* Hardware Abstraction Layer Functions */ +#include "inbvfuncs.h" /* Initialization Boot Video Functions */ +#include "iofuncs.h" /* Input/Output Manager Functions */ +#include "kefuncs.h" /* Kernel Functions */ +#include "mmfuncs.h" /* Memory Manager Functions */ +#include "obfuncs.h" /* Object Manager Functions */ +#include "psfuncs.h" /* Process Manager Functions */ +#include "setypes.h" /* Security Subsystem Types */ +#include "sefuncs.h" /* Security Subsystem Functions */ +#endif /* !NTOS_MODE_USER */ /* Shared NDK */ -#include "ldrfuncs.h" /* Loader Functions */ +#include "extypes.h" /* Executive Types */ +#include "cmtypes.h" /* Configuration Manager Types */ +#include "kdtypes.h" /* Kernel Debugger Types */ +#include "ketypes.h" /* Kernel Types */ +#include "iotypes.h" /* Input/Output Manager Types */ #include "ldrtypes.h" /* Loader Types */ -#include "lpctypes.h" /* Local Procedure Call Types */ +#include "ldrfuncs.h" /* Loader Functions */ +#include "mmtypes.h" /* Memory Manager Types */ +#include "obtypes.h" /* Object Manager Types */ #include "pstypes.h" /* Process Manager Types */ -#include "rtltypes.h" /* Runtime Library Types */ -#include "rtlfuncs.h" /* Runtime Library Functions */ +#include "lpctypes.h" /* Local Procedure Call Types */ #include "zwtypes.h" /* Native Types */ #include "zwfuncs.h" /* Native Functions (System Calls) */ +#include "rtltypes.h" /* Runtime Library Types */ +#include "rtlfuncs.h" /* Runtime Library Functions */ +#include "umfuncs.h" /* User-Mode NT Library Functions */ #include "i386/floatsave.h" /* Floating Point Save Area Definitions for i386 */ #include "i386/segment.h" /* Kernel CPU Segment Definitions for i386 */ diff --git a/reactos/include/ndk/obtypes.h b/reactos/include/ndk/obtypes.h index c79a85e3bde..9ee664ee859 100644 --- a/reactos/include/ndk/obtypes.h +++ b/reactos/include/ndk/obtypes.h @@ -13,6 +13,35 @@ /* CONSTANTS *****************************************************************/ +#ifdef NTOS_MODE_USER +/* Definitions for Object Creation */ +#define OBJ_INHERIT 2L +#define OBJ_PERMANENT 16L +#define OBJ_EXCLUSIVE 32L +#define OBJ_CASE_INSENSITIVE 64L +#define OBJ_OPENIF 128L +#define OBJ_OPENLINK 256L +#define OBJ_VALID_ATTRIBUTES 498L +#define InitializeObjectAttributes(p,n,a,r,s) { \ + (p)->Length = sizeof(OBJECT_ATTRIBUTES); \ + (p)->RootDirectory = (r); \ + (p)->Attributes = (a); \ + (p)->ObjectName = (n); \ + (p)->SecurityDescriptor = (s); \ + (p)->SecurityQualityOfService = NULL; \ +} + +/* Directory Object Access Rights */ +#define DIRECTORY_QUERY 0x0001 +#define DIRECTORY_TRAVERSE 0x0002 +#define DIRECTORY_CREATE_OBJECT 0x0004 +#define DIRECTORY_CREATE_SUBDIRECTORY 0x0008 +#define DIRECTORY_ALL_ACCESS STANDARD_RIGHTS_REQUIRED | 0xF +#endif + +/* Duplication Flags */ +#define DUPLICATE_SAME_ATTRIBUTES 0x00000004 + /* Values for DosDeviceDriveType */ #define DOSDEVICE_DRIVE_UNKNOWN 0 #define DOSDEVICE_DRIVE_CALCULATE 1 @@ -22,6 +51,7 @@ #define DOSDEVICE_DRIVE_CDROM 5 #define DOSDEVICE_DRIVE_RAMDISK 6 +#ifndef NTOS_MODE_USER /* Object Flags */ #define OB_FLAG_CREATE_INFO 0x01 #define OB_FLAG_KERNEL_MODE 0x02 @@ -95,11 +125,10 @@ typedef PVOID ULONG Attributes ); - typedef NTSTATUS (STDCALL *OB_SECURITY_METHOD)( PVOID Object, - SECURITY_OPERATION_CODE OperationType, + SECURITY_OPERATION_CODE OperationType, SECURITY_INFORMATION SecurityInformation, PSECURITY_DESCRIPTOR NewSecurityDescriptor, PULONG ReturnLength, @@ -116,9 +145,18 @@ typedef NTSTATUS PWSTR RemainingPath, struct _OBJECT_ATTRIBUTES* ObjectAttributes ); +#endif /* TYPES *********************************************************************/ +#ifdef NTOS_MODE_USER +typedef struct _OBJECT_NAME_INFORMATION +{ + UNICODE_STRING Name; +} OBJECT_NAME_INFORMATION, *POBJECT_NAME_INFORMATION; +#endif + +#ifndef NTOS_MODE_USER typedef struct _OBJECT_BASIC_INFORMATION { ULONG Attributes; @@ -292,5 +330,6 @@ typedef struct _DEVICE_MAP extern NTOSAPI POBJECT_TYPE ObDirectoryType; extern NTOSAPI PDEVICE_MAP ObSystemDeviceMap; +#endif #endif diff --git a/reactos/include/ndk/pstypes.h b/reactos/include/ndk/pstypes.h index 4f1b41457a4..2d72cd1f14c 100644 --- a/reactos/include/ndk/pstypes.h +++ b/reactos/include/ndk/pstypes.h @@ -11,13 +11,20 @@ /* DEPENDENCIES **************************************************************/ #include "ldrtypes.h" -#include "rtltypes.h" +#include "mmtypes.h" +#include "obtypes.h" +#include "extypes.h" +#ifndef NTOS_MODE_USER +#include "setypes.h" +#endif /* EXPORTED DATA *************************************************************/ +#ifndef NTOS_MODE_USER extern NTOSAPI struct _EPROCESS* PsInitialSystemProcess; extern NTOSAPI POBJECT_TYPE PsProcessType; extern NTOSAPI POBJECT_TYPE PsThreadType; +#endif /* CONSTANTS *****************************************************************/ @@ -31,10 +38,16 @@ extern NTOSAPI POBJECT_TYPE PsThreadType; #define JOB_OBJECT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|31) #endif -#define THREAD_ALERT 0x4 - #define USER_SHARED_DATA (0x7FFE0000) +#ifdef NTOS_MODE_USER +/* Macros for current Process/Thread built-in 'special' ID */ +#define NtCurrentProcess() ((HANDLE)(LONG_PTR)-1) +#define ZwCurrentProcess() NtCurrentProcess() +#define NtCurrentThread() ((HANDLE)(LONG_PTR)-2) +#define ZwCurrentThread() NtCurrentThread() +#endif + /* Process priority classes */ #define PROCESS_PRIORITY_CLASS_INVALID 0 #define PROCESS_PRIORITY_CLASS_IDLE 1 @@ -75,9 +88,74 @@ extern NTOSAPI POBJECT_TYPE PsThreadType; /* ENUMERATIONS **************************************************************/ +#ifdef NTOS_MODE_USER +typedef enum _PROCESSINFOCLASS +{ + ProcessBasicInformation, + ProcessQuotaLimits, + ProcessIoCounters, + ProcessVmCounters, + ProcessTimes, + ProcessBasePriority, + ProcessRaisePriority, + ProcessDebugPort, + ProcessExceptionPort, + ProcessAccessToken, + ProcessLdtInformation, + ProcessLdtSize, + ProcessDefaultHardErrorMode, + ProcessIoPortHandlers, + ProcessPooledUsageAndLimits, + ProcessWorkingSetWatch, + ProcessUserModeIOPL, + ProcessEnableAlignmentFaultFixup, + ProcessPriorityClass, + ProcessWx86Information, + ProcessHandleCount, + ProcessAffinityMask, + ProcessPriorityBoost, + ProcessDeviceMap, + ProcessSessionInformation, + ProcessForegroundInformation, + ProcessWow64Information, + ProcessImageFileName, + ProcessLUIDDeviceMapsEnabled, + ProcessBreakOnTermination, + ProcessDebugObjectHandle, + ProcessDebugFlags, + ProcessHandleTracing, + MaxProcessInfoClass +} PROCESSINFOCLASS; + +typedef enum _THREADINFOCLASS +{ + ThreadBasicInformation, + ThreadTimes, + ThreadPriority, + ThreadBasePriority, + ThreadAffinityMask, + ThreadImpersonationToken, + ThreadDescriptorTableEntry, + ThreadEnableAlignmentFaultFixup, + ThreadEventPair_Reusable, + ThreadQuerySetWin32StartAddress, + ThreadZeroTlsCell, + ThreadPerformanceCount, + ThreadAmILastThread, + ThreadIdealProcessor, + ThreadPriorityBoost, + ThreadSetTlsArrayAddress, + ThreadIsIoPending, + ThreadHideFromDebugger, + ThreadBreakOnTermination, + MaxThreadInfoClass +} THREADINFOCLASS; +#endif + /* FUNCTION TYPES ************************************************************/ typedef VOID (NTAPI *PPEBLOCKROUTINE)(PVOID); +#ifndef NTOS_MODE_USER typedef NTSTATUS (NTAPI *PW32_PROCESS_CALLBACK)( struct _EPROCESS *Process, @@ -89,9 +167,18 @@ typedef NTSTATUS struct _ETHREAD *Thread, BOOLEAN Create ); +#endif /* TYPES *********************************************************************/ +#ifdef NTOS_MODE_USER +typedef struct _CLIENT_ID +{ + HANDLE UniqueProcess; + HANDLE UniqueThread; +} CLIENT_ID, *PCLIENT_ID; +#endif + struct _W32THREAD; struct _W32PROCESS; @@ -118,7 +205,7 @@ typedef struct _PEB HANDLE Mutant; /* 04h */ PVOID ImageBaseAddress; /* 08h */ PPEB_LDR_DATA Ldr; /* 0Ch */ - PRTL_USER_PROCESS_PARAMETERS ProcessParameters; /* 10h */ + struct _RTL_USER_PROCESS_PARAMETERS *ProcessParameters; /* 10h */ PVOID SubSystemData; /* 14h */ PVOID ProcessHeap; /* 18h */ PVOID FastPebLock; /* 1Ch */ @@ -168,7 +255,7 @@ typedef struct _PEB ULONG SessionId; /* 1D4h */ PVOID AppCompatInfo; /* 1D8h */ UNICODE_STRING CSDVersion; /* 1DCh */ -} PEB; +} PEB, *PPEB; typedef struct _GDI_TEB_BATCH { @@ -276,14 +363,7 @@ typedef struct _TEB PVOID WineDebugInfo; /* FBCh */ } TEB, *PTEB; -/* KERNEL MODE ONLY **********************************************************/ #ifndef NTOS_MODE_USER - -#include "mmtypes.h" -#include "obtypes.h" -#include "extypes.h" -#include "setypes.h" - /* FIXME: see note in mmtypes.h */ #ifdef _NTOSKRNL_ #include @@ -323,13 +403,6 @@ typedef struct _PS_IMPERSONATION_INFORMATION } PS_IMPERSONATION_INFORMATION, *PPS_IMPERSONATION_INFORMATION; #include -/* - * NAME: ETHREAD - * DESCRIPTION: Internal Executive Thread Structure. - * PORTABILITY: Architecture Independent. - * KERNEL VERSION: 5.2 - * DOCUMENTATION: http://reactos.com/wiki/index.php/ETHREAD - */ typedef struct _ETHREAD { KTHREAD Tcb; /* 1C0 */ @@ -373,7 +446,7 @@ typedef struct _ETHREAD PKSTART_ROUTINE StartAddress; /* 21C */ union { - PTHREAD_START_ROUTINE Win32StartAddress; /* 220 */ + PVOID Win32StartAddress; /* 220 */ ULONG LpcReceivedMessageId; /* 220 */ }; LIST_ENTRY ThreadListEntry; /* 224 */ @@ -431,13 +504,6 @@ typedef struct _ETHREAD UCHAR ActiveFaultCount; /* 24E */ } ETHREAD; -/* - * NAME: EPROCESS - * DESCRIPTION: Internal Executive Process Structure. - * PORTABILITY: Architecture Independent. - * KERNEL VERSION: 5.2 - * DOCUMENTATION: http://reactos.com/wiki/index.php/EPROCESS - */ typedef struct _EPROCESS { KPROCESS Pcb; /* 000 */ diff --git a/reactos/include/ndk/rtlfuncs.h b/reactos/include/ndk/rtlfuncs.h index ff11be2914e..e08685905f8 100644 --- a/reactos/include/ndk/rtlfuncs.h +++ b/reactos/include/ndk/rtlfuncs.h @@ -10,8 +10,6 @@ #define _RTLFUNCS_H /* DEPENDENCIES **************************************************************/ -#include "rtltypes.h" -#include "pstypes.h" #include /* PROTOTYPES ****************************************************************/ diff --git a/reactos/include/ndk/rtltypes.h b/reactos/include/ndk/rtltypes.h index 622c14e7b48..853800ef387 100644 --- a/reactos/include/ndk/rtltypes.h +++ b/reactos/include/ndk/rtltypes.h @@ -10,7 +10,6 @@ #define _RTLTYPES_H /* DEPENDENCIES **************************************************************/ -#include "zwtypes.h" #include "excpt.h" /* EXPORTED DATA *************************************************************/ @@ -52,6 +51,167 @@ #define RTL_RANGE_SHARED 0x01 #define RTL_RANGE_CONFLICT 0x02 +/* Run-Time Library (RTL) Registry Constants */ +#define RTL_REGISTRY_ABSOLUTE 0 +#define RTL_REGISTRY_SERVICES 1 +#define RTL_REGISTRY_CONTROL 2 +#define RTL_REGISTRY_WINDOWS_NT 3 +#define RTL_REGISTRY_DEVICEMAP 4 +#define RTL_REGISTRY_USER 5 +#define RTL_REGISTRY_MAXIMUM 6 +#define RTL_REGISTRY_HANDLE 0x40000000 +#define RTL_REGISTRY_OPTIONAL 0x80000000 +#define RTL_QUERY_REGISTRY_SUBKEY 0x00000001 +#define RTL_QUERY_REGISTRY_TOPKEY 0x00000002 +#define RTL_QUERY_REGISTRY_REQUIRED 0x00000004 +#define RTL_QUERY_REGISTRY_NOVALUE 0x00000008 +#define RTL_QUERY_REGISTRY_NOEXPAND 0x00000010 +#define RTL_QUERY_REGISTRY_DIRECT 0x00000020 +#define RTL_QUERY_REGISTRY_DELETE 0x00000040 + +/* Version Constants */ +#define VER_MINORVERSION 0x0000001 +#define VER_MAJORVERSION 0x0000002 +#define VER_BUILDNUMBER 0x0000004 +#define VER_PLATFORMID 0x0000008 +#define VER_SERVICEPACKMINOR 0x0000010 +#define VER_SERVICEPACKMAJOR 0x0000020 +#define VER_SUITENAME 0x0000040 +#define VER_PRODUCT_TYPE 0x0000080 +#define VER_PLATFORM_WIN32s 0 +#define VER_PLATFORM_WIN32_WINDOWS 1 +#define VER_PLATFORM_WIN32_NT 2 +#define VER_EQUAL 1 +#define VER_GREATER 2 +#define VER_GREATER_EQUAL 3 +#define VER_LESS 4 +#define VER_LESS_EQUAL 5 +#define VER_AND 6 +#define VER_OR 7 +#define VER_CONDITION_MASK 7 +#define VER_NUM_BITS_PER_CONDITION_MASK 3 + +/* RTL String Hash Algorithms */ +#define HASH_STRING_ALGORITHM_DEFAULT 0 +#define HASH_STRING_ALGORITHM_X65599 1 +#define HASH_STRING_ALGORITHM_INVALID 0xffffffff + +#ifdef NTOS_MODE_USER +/* List Macros */ +static __inline +VOID +InitializeListHead( + IN PLIST_ENTRY ListHead) +{ + ListHead->Flink = ListHead->Blink = ListHead; +} + +static __inline +VOID +InsertHeadList( + IN PLIST_ENTRY ListHead, + IN PLIST_ENTRY Entry) +{ + PLIST_ENTRY OldFlink; + OldFlink = ListHead->Flink; + Entry->Flink = OldFlink; + Entry->Blink = ListHead; + OldFlink->Blink = Entry; + ListHead->Flink = Entry; +} + +static __inline +VOID +InsertTailList( + IN PLIST_ENTRY ListHead, + IN PLIST_ENTRY Entry) +{ + PLIST_ENTRY OldBlink; + OldBlink = ListHead->Blink; + Entry->Flink = ListHead; + Entry->Blink = OldBlink; + OldBlink->Flink = Entry; + ListHead->Blink = Entry; +} + +#define IsListEmpty(ListHead) \ + ((ListHead)->Flink == (ListHead)) + +#define PopEntryList(ListHead) \ + (ListHead)->Next; \ + { \ + PSINGLE_LIST_ENTRY _FirstEntry; \ + _FirstEntry = (ListHead)->Next; \ + if (_FirstEntry != NULL) \ + (ListHead)->Next = _FirstEntry->Next; \ + } + +#define PushEntryList(_ListHead, _Entry) \ + (_Entry)->Next = (_ListHead)->Next; \ + (_ListHead)->Next = (_Entry); \ + +static __inline +BOOLEAN +RemoveEntryList( + IN PLIST_ENTRY Entry) +{ + PLIST_ENTRY OldFlink; + PLIST_ENTRY OldBlink; + + OldFlink = Entry->Flink; + OldBlink = Entry->Blink; + OldFlink->Blink = OldBlink; + OldBlink->Flink = OldFlink; + return (OldFlink == OldBlink); +} + +static __inline +PLIST_ENTRY +RemoveHeadList( + IN PLIST_ENTRY ListHead) +{ + PLIST_ENTRY Flink; + PLIST_ENTRY Entry; + + Entry = ListHead->Flink; + Flink = Entry->Flink; + ListHead->Flink = Flink; + Flink->Blink = ListHead; + return Entry; +} + +static __inline +PLIST_ENTRY +RemoveTailList( + IN PLIST_ENTRY ListHead) +{ + PLIST_ENTRY Blink; + PLIST_ENTRY Entry; + + Entry = ListHead->Blink; + Blink = Entry->Blink; + ListHead->Blink = Blink; + Blink->Flink = ListHead; + return Entry; +} + +#define IsFirstEntry(ListHead, Entry) \ + ((ListHead)->Flink == Entry) + +#define IsLastEntry(ListHead, Entry) \ + ((ListHead)->Blink == Entry) + +/* + * Constant String Macro + */ +#define RTL_CONSTANT_STRING(__SOURCE_STRING__) \ +{ \ + sizeof(__SOURCE_STRING__) - sizeof((__SOURCE_STRING__)[0]), \ + sizeof(__SOURCE_STRING__), \ + (__SOURCE_STRING__) \ +} +#endif + /* FIXME: Rename these */ #define PDI_MODULES 0x01 /* The loaded modules of the process */ #define PDI_BACKTRACE 0x02 /* The heap stack back traces */ @@ -68,6 +228,21 @@ /* ENUMERATIONS **************************************************************/ +typedef enum _TABLE_SEARCH_RESULT +{ + TableEmptyTree, + TableFoundNode, + TableInsertAsLeft, + TableInsertAsRight +} TABLE_SEARCH_RESULT; + +typedef enum _RTL_GENERIC_COMPARE_RESULTS +{ + GenericLessThan, + GenericGreaterThan, + GenericEqual +} RTL_GENERIC_COMPARE_RESULTS; + typedef enum { INVALID_PATH = 0, @@ -81,6 +256,10 @@ typedef enum } DOS_PATHNAME_TYPE; /* FUNCTION TYPES ************************************************************/ +struct _RTL_AVL_TABLE; +struct _RTL_GENERIC_TABLE; +struct _RTL_RANGE; + typedef NTSTATUS (*PHEAP_ENUMERATION_ROUTINE)( IN PVOID HeapHandle, @@ -109,18 +288,219 @@ typedef VOID PVOID Parameter ); +typedef NTSTATUS +(NTAPI *PRTL_AVL_MATCH_FUNCTION)( + struct _RTL_AVL_TABLE *Table, + PVOID UserData, + PVOID MatchData +); + +typedef RTL_GENERIC_COMPARE_RESULTS +(NTAPI *PRTL_AVL_COMPARE_ROUTINE) ( + struct _RTL_AVL_TABLE *Table, + PVOID FirstStruct, + PVOID SecondStruct +); + +typedef RTL_GENERIC_COMPARE_RESULTS +(NTAPI *PRTL_GENERIC_COMPARE_ROUTINE) ( + struct _RTL_GENERIC_TABLE *Table, + PVOID FirstStruct, + PVOID SecondStruct +); + +typedef PVOID +(NTAPI *PRTL_GENERIC_ALLOCATE_ROUTINE) ( + struct _RTL_GENERIC_TABLE *Table, + LONG ByteSize +); + +typedef VOID +(NTAPI *PRTL_GENERIC_FREE_ROUTINE) ( + struct _RTL_GENERIC_TABLE *Table, + PVOID Buffer +); + +typedef VOID +(NTAPI *PRTL_AVL_ALLOCATE_ROUTINE) ( + struct _RTL_AVL_TABLE *Table, + LONG ByteSize +); + +typedef VOID +(NTAPI *PRTL_AVL_FREE_ROUTINE) ( + struct _RTL_AVL_TABLE *Table, + PVOID Buffer +); + +typedef NTSTATUS +(NTAPI *PRTL_QUERY_REGISTRY_ROUTINE)( + IN PWSTR ValueName, + IN ULONG ValueType, + IN PVOID ValueData, + IN ULONG ValueLength, + IN PVOID Context, + IN PVOID EntryContext +); + +typedef NTSTATUS +(NTAPI * PRTL_HEAP_COMMIT_ROUTINE)( + IN PVOID Base, + IN OUT PVOID *CommitAddress, + IN OUT PSIZE_T CommitSize +); + +typedef BOOLEAN +(NTAPI *PRTL_CONFLICT_RANGE_CALLBACK) ( + PVOID Context, + struct _RTL_RANGE *Range +); /* TYPES *********************************************************************/ -typedef unsigned short RTL_ATOM; -typedef unsigned short *PRTL_ATOM; +#ifdef NTOS_MODE_USER +typedef OSVERSIONINFOW RTL_OSVERSIONINFOW; +typedef LPOSVERSIONINFOW PRTL_OSVERSIONINFOW; +typedef OSVERSIONINFOEXW RTL_OSVERSIONINFOEXW; +typedef LPOSVERSIONINFOEXW PRTL_OSVERSIONINFOEXW; -/* Once again, we don't want to force NTIFS for something like this */ -#if !defined(_NTIFS_) && !defined(NTOS_MODE_USER) -typedef PVOID PRTL_HEAP_PARAMETERS; -#endif +typedef struct _RTL_HEAP_PARAMETERS +{ + ULONG Length; + SIZE_T SegmentReserve; + SIZE_T SegmentCommit; + SIZE_T DeCommitFreeBlockThreshold; + SIZE_T DeCommitTotalFreeThreshold; + SIZE_T MaximumAllocationSize; + SIZE_T VirtualMemoryThreshold; + SIZE_T InitialCommit; + SIZE_T InitialReserve; + PRTL_HEAP_COMMIT_ROUTINE CommitRoutine; + SIZE_T Reserved[2]; +} RTL_HEAP_PARAMETERS, *PRTL_HEAP_PARAMETERS; + +typedef struct _RTL_BITMAP +{ + ULONG SizeOfBitMap; + PULONG Buffer; +} RTL_BITMAP, *PRTL_BITMAP; + +typedef struct _RTL_BITMAP_RUN +{ + ULONG StartingIndex; + ULONG NumberOfBits; +} RTL_BITMAP_RUN, *PRTL_BITMAP_RUN; + +typedef struct _COMPRESSED_DATA_INFO +{ + USHORT CompressionFormatAndEngine; + UCHAR CompressionUnitShift; + UCHAR ChunkShift; + UCHAR ClusterShift; + UCHAR Reserved; + USHORT NumberOfChunks; + ULONG CompressedChunkSizes[ANYSIZE_ARRAY]; +} COMPRESSED_DATA_INFO, *PCOMPRESSED_DATA_INFO; + +typedef struct _GENERATE_NAME_CONTEXT +{ + USHORT Checksum; + BOOLEAN CheckSumInserted; + UCHAR NameLength; + WCHAR NameBuffer[8]; + ULONG ExtensionLength; + WCHAR ExtensionBuffer[4]; + ULONG LastIndexValue; +} GENERATE_NAME_CONTEXT, *PGENERATE_NAME_CONTEXT; + +typedef struct _RTL_SPLAY_LINKS +{ + struct _RTL_SPLAY_LINKS *Parent; + struct _RTL_SPLAY_LINKS *LeftChild; + struct _RTL_SPLAY_LINKS *RightChild; +} RTL_SPLAY_LINKS, *PRTL_SPLAY_LINKS; typedef ACL_REVISION_INFORMATION *PACL_REVISION_INFORMATION; typedef ACL_SIZE_INFORMATION *PACL_SIZE_INFORMATION; + +typedef struct _RTL_GENERIC_TABLE +{ + PRTL_SPLAY_LINKS TableRoot; + LIST_ENTRY InsertOrderList; + PLIST_ENTRY OrderedPointer; + ULONG WhichOrderedElement; + ULONG NumberGenericTableElements; + PRTL_GENERIC_COMPARE_ROUTINE CompareRoutine; + PRTL_GENERIC_ALLOCATE_ROUTINE AllocateRoutine; + PRTL_GENERIC_FREE_ROUTINE FreeRoutine; + PVOID TableContext; +} RTL_GENERIC_TABLE, *PRTL_GENERIC_TABLE; + +typedef struct _RTL_BALANCED_LINKS +{ + struct _RTL_BALANCED_LINKS *Parent; + struct _RTL_BALANCED_LINKS *LeftChild; + struct _RTL_BALANCED_LINKS *RightChild; + CHAR Balance; + UCHAR Reserved[3]; +} RTL_BALANCED_LINKS, *PRTL_BALANCED_LINKS; + +typedef struct _RTL_AVL_TABLE +{ + RTL_BALANCED_LINKS BalancedRoot; + PVOID OrderedPointer; + ULONG WhichOrderedElement; + ULONG NumberGenericTableElements; + ULONG DepthOfTree; + PRTL_BALANCED_LINKS RestartKey; + ULONG DeleteCount; + PRTL_AVL_COMPARE_ROUTINE CompareRoutine; + PRTL_AVL_ALLOCATE_ROUTINE AllocateRoutine; + PRTL_AVL_FREE_ROUTINE FreeRoutine; + PVOID TableContext; +} RTL_AVL_TABLE, *PRTL_AVL_TABLE; + +typedef struct _RTL_QUERY_REGISTRY_TABLE +{ + PRTL_QUERY_REGISTRY_ROUTINE QueryRoutine; + ULONG Flags; + PWSTR Name; + PVOID EntryContext; + ULONG DefaultType; + PVOID DefaultData; + ULONG DefaultLength; +} RTL_QUERY_REGISTRY_TABLE, *PRTL_QUERY_REGISTRY_TABLE; + +typedef struct _UNICODE_PREFIX_TABLE_ENTRY +{ + CSHORT NodeTypeCode; + CSHORT NameLength; + struct _UNICODE_PREFIX_TABLE_ENTRY *NextPrefixTree; + struct _UNICODE_PREFIX_TABLE_ENTRY *CaseMatch; + RTL_SPLAY_LINKS Links; + PUNICODE_STRING Prefix; +} UNICODE_PREFIX_TABLE_ENTRY, *PUNICODE_PREFIX_TABLE_ENTRY; + +typedef struct _UNICODE_PREFIX_TABLE +{ + CSHORT NodeTypeCode; + CSHORT NameLength; + PUNICODE_PREFIX_TABLE_ENTRY NextPrefixTree; + PUNICODE_PREFIX_TABLE_ENTRY LastNextEntry; +} UNICODE_PREFIX_TABLE, *PUNICODE_PREFIX_TABLE; + +typedef struct _TIME_FIELDS +{ + CSHORT Year; + CSHORT Month; + CSHORT Day; + CSHORT Hour; + CSHORT Minute; + CSHORT Second; + CSHORT Milliseconds; + CSHORT Weekday; +} TIME_FIELDS, *PTIME_FIELDS; +#endif + typedef struct _ACE { ACE_HEADER Header; @@ -269,12 +649,6 @@ typedef struct _RTL_RANGE UCHAR Flags; /* RTL_RANGE_... flags */ } RTL_RANGE, *PRTL_RANGE; -typedef BOOLEAN -(NTAPI *PRTL_CONFLICT_RANGE_CALLBACK) ( - PVOID Context, - PRTL_RANGE Range -); - typedef struct _RTL_RESOURCE { RTL_CRITICAL_SECTION Lock; @@ -381,6 +755,10 @@ typedef struct _RTL_ATOM_TABLE_ENTRY WCHAR Name[1]; } RTL_ATOM_TABLE_ENTRY, *PRTL_ATOM_TABLE_ENTRY; +#ifdef NTOS_MODE_USER +typedef RTL_CRITICAL_SECTION FAST_MUTEX; +typedef RTL_HANDLE_TABLE HANDLE_TABLE, *PHANDLE_TABLE; +#endif typedef struct _RTL_ATOM_TABLE { ULONG Signature; diff --git a/reactos/include/ndk/umfuncs.h b/reactos/include/ndk/umfuncs.h index 74fadce1b75..c78e663558c 100644 --- a/reactos/include/ndk/umfuncs.h +++ b/reactos/include/ndk/umfuncs.h @@ -8,9 +8,6 @@ #define _UMFUNCS_H /* DEPENDENCIES **************************************************************/ -#include "ldrtypes.h" -#include "lpctypes.h" -#include "rtltypes.h" /* PROTOTYPES ****************************************************************/ @@ -28,6 +25,7 @@ CsrClientConnectToServer( PBOOLEAN ServerToServerCall ); +struct _CSR_API_MESSAGE; NTSTATUS STDCALL CsrClientCallServer( diff --git a/reactos/include/ndk/umtypes.h b/reactos/include/ndk/umtypes.h index 2e2a6273b1a..72105633cf5 100644 --- a/reactos/include/ndk/umtypes.h +++ b/reactos/include/ndk/umtypes.h @@ -7,8 +7,9 @@ * Created 06/10/04 */ -#ifndef _UMTYPES_H -#define _UMTYPES_H +#if !defined(_NTDEF_) && !defined(_NTDEF_H) +#define _NTDEF_ +#define _NTDEF_H /* DEPENDENCIES **************************************************************/ #include @@ -16,8 +17,6 @@ #include #define STATIC static -/* EXPORTED DATA *************************************************************/ - /* CONSTANTS *****************************************************************/ /* NTAPI/NTOSAPI Define */ @@ -26,675 +25,11 @@ #define FASTCALL __fastcall #define STDCALL __stdcall -/* Definitions for Object Creation -- winternl.h */ -#define OBJ_INHERIT 2L -#define OBJ_PERMANENT 16L -#define OBJ_EXCLUSIVE 32L -#define OBJ_CASE_INSENSITIVE 64L -#define OBJ_OPENIF 128L -#define OBJ_OPENLINK 256L -#define OBJ_VALID_ATTRIBUTES 498L -#define InitializeObjectAttributes(p,n,a,r,s) { \ - (p)->Length = sizeof(OBJECT_ATTRIBUTES); \ - (p)->RootDirectory = (r); \ - (p)->Attributes = (a); \ - (p)->ObjectName = (n); \ - (p)->SecurityDescriptor = (s); \ - (p)->SecurityQualityOfService = NULL; \ -} - /* Native API Return Value Macros */ #define NT_SUCCESS(x) ((x)>=0) #define NT_WARNING(x) ((ULONG)(x)>>30==2) #define NT_ERROR(x) ((ULONG)(x)>>30==3) -/* Object Access Rights */ -#define DIRECTORY_QUERY (0x0001) -#define DIRECTORY_TRAVERSE (0x0002) -#define DIRECTORY_CREATE_OBJECT (0x0004) -#define DIRECTORY_CREATE_SUBDIRECTORY (0x0008) -#define DIRECTORY_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0xF) -#define EVENT_QUERY_STATE (0x0001) -#define SEMAPHORE_QUERY_STATE (0x0001) -#define SYMBOLIC_LINK_QUERY 0x0001 -#define SYMBOLIC_LINK_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0x1) - -/* Duplication Flags */ -#define DUPLICATE_SAME_ATTRIBUTES 0x00000004 - -/* I/O Control Codes for communicating with Mailslots */ -#define FSCTL_MAILSLOT_PEEK \ - CTL_CODE(FILE_DEVICE_MAILSLOT, 0, METHOD_NEITHER, FILE_READ_DATA) - -/* I/O Control Codes for communicating with Pipes */ -#define FSCTL_PIPE_ASSIGN_EVENT \ - CTL_CODE(FILE_DEVICE_NAMED_PIPE, 0, METHOD_BUFFERED, FILE_ANY_ACCESS) -#define FSCTL_PIPE_DISCONNECT \ - CTL_CODE(FILE_DEVICE_NAMED_PIPE, 1, METHOD_BUFFERED, FILE_ANY_ACCESS) -#define FSCTL_PIPE_LISTEN \ - CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2, METHOD_BUFFERED, FILE_ANY_ACCESS) -#define FSCTL_PIPE_PEEK \ - CTL_CODE(FILE_DEVICE_NAMED_PIPE, 3, METHOD_BUFFERED, FILE_READ_DATA) -#define FSCTL_PIPE_QUERY_EVENT \ - CTL_CODE(FILE_DEVICE_NAMED_PIPE, 4, METHOD_BUFFERED, FILE_ANY_ACCESS) -#define FSCTL_PIPE_TRANSCEIVE \ - CTL_CODE(FILE_DEVICE_NAMED_PIPE, 5, METHOD_NEITHER, FILE_READ_DATA | FILE_WRITE_DATA) -#define FSCTL_PIPE_WAIT \ - CTL_CODE(FILE_DEVICE_NAMED_PIPE, 6, METHOD_BUFFERED, FILE_ANY_ACCESS) -#define FSCTL_PIPE_IMPERSONATE \ - CTL_CODE(FILE_DEVICE_NAMED_PIPE, 7, METHOD_BUFFERED, FILE_ANY_ACCESS) -#define FSCTL_PIPE_SET_CLIENT_PROCESS \ - CTL_CODE(FILE_DEVICE_NAMED_PIPE, 8, METHOD_BUFFERED, FILE_ANY_ACCESS) -#define FSCTL_PIPE_QUERY_CLIENT_PROCESS \ - CTL_CODE(FILE_DEVICE_NAMED_PIPE, 9, METHOD_BUFFERED, FILE_ANY_ACCESS) -#define FSCTL_PIPE_INTERNAL_READ \ - CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2045, METHOD_BUFFERED, FILE_READ_DATA) -#define FSCTL_PIPE_INTERNAL_WRITE \ - CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2046, METHOD_BUFFERED, FILE_WRITE_DATA) -#define FSCTL_PIPE_INTERNAL_TRANSCEIVE \ - CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2047, METHOD_NEITHER, FILE_READ_DATA | FILE_WRITE_DATA) -#define FSCTL_PIPE_INTERNAL_READ_OVFLOW \ - CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2048, METHOD_BUFFERED, FILE_READ_DATA) - -/* I/O Control Codes for Communicating with Tapes */ -#define IOCTL_TAPE_ERASE \ - CTL_CODE(FILE_DEVICE_TAPE, 0, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) -#define IOCTL_TAPE_PREPARE \ - CTL_CODE(FILE_DEVICE_TAPE, 1, METHOD_BUFFERED, FILE_READ_ACCESS) -#define IOCTL_TAPE_WRITE_MARKS \ - CTL_CODE(FILE_DEVICE_TAPE, 2, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) -#define IOCTL_TAPE_GET_POSITION \ - CTL_CODE(FILE_DEVICE_TAPE, 3, METHOD_BUFFERED, FILE_READ_ACCESS) -#define IOCTL_TAPE_SET_POSITION \ - CTL_CODE(FILE_DEVICE_TAPE, 4, METHOD_BUFFERED, FILE_READ_ACCESS) -#define IOCTL_TAPE_GET_DRIVE_PARAMS \ - CTL_CODE(FILE_DEVICE_TAPE, 5, METHOD_BUFFERED, FILE_READ_ACCESS) -#define IOCTL_TAPE_SET_DRIVE_PARAMS \ - CTL_CODE(FILE_DEVICE_TAPE, 6, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) -#define IOCTL_TAPE_GET_MEDIA_PARAMS \ - CTL_CODE(FILE_DEVICE_TAPE, 7, METHOD_BUFFERED, FILE_READ_ACCESS) -#define IOCTL_TAPE_SET_MEDIA_PARAMS \ - CTL_CODE(FILE_DEVICE_TAPE, 8, METHOD_BUFFERED, FILE_READ_ACCESS) -#define IOCTL_TAPE_GET_STATUS \ - CTL_CODE(FILE_DEVICE_TAPE, 9, METHOD_BUFFERED, FILE_READ_ACCESS) -#define IOCTL_TAPE_CREATE_PARTITION \ - CTL_CODE(FILE_DEVICE_TAPE, 10, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) - -/* Macros for current Process/Thread built-in 'special' ID */ -#define NtCurrentProcess() ( (HANDLE)(LONG_PTR) -1 ) -#define ZwCurrentProcess() NtCurrentProcess() -#define NtCurrentThread() ( (HANDLE)(LONG_PTR) -2 ) -#define ZwCurrentThread() NtCurrentThread() - -/* Kernel Shared Data Constants */ -#define PROCESSOR_FEATURE_MAX 64 -#define SharedUserData ((KUSER_SHARED_DATA * CONST) USER_SHARED_DATA) - -/* Paging Values on x86 */ -#define PAGE_SIZE 0x1000 -#define PAGE_SHIFT 12L - -/* Run-Time Library (RTL) Registry Constants */ -#define RTL_REGISTRY_ABSOLUTE 0 -#define RTL_REGISTRY_SERVICES 1 -#define RTL_REGISTRY_CONTROL 2 -#define RTL_REGISTRY_WINDOWS_NT 3 -#define RTL_REGISTRY_DEVICEMAP 4 -#define RTL_REGISTRY_USER 5 -#define RTL_REGISTRY_MAXIMUM 6 -#define RTL_REGISTRY_HANDLE 0x40000000 -#define RTL_REGISTRY_OPTIONAL 0x80000000 -#define RTL_QUERY_REGISTRY_SUBKEY 0x00000001 -#define RTL_QUERY_REGISTRY_TOPKEY 0x00000002 -#define RTL_QUERY_REGISTRY_REQUIRED 0x00000004 -#define RTL_QUERY_REGISTRY_NOVALUE 0x00000008 -#define RTL_QUERY_REGISTRY_NOEXPAND 0x00000010 -#define RTL_QUERY_REGISTRY_DIRECT 0x00000020 -#define RTL_QUERY_REGISTRY_DELETE 0x00000040 - -/* File Result Flags */ -#define FILE_SUPERSEDED 0x00000000 -#define FILE_OPENED 0x00000001 -#define FILE_CREATED 0x00000002 -#define FILE_OVERWRITTEN 0x00000003 -#define FILE_EXISTS 0x00000004 -#define FILE_DOES_NOT_EXIST 0x00000005 - -/* Pipe Flags */ -#define FILE_PIPE_BYTE_STREAM_MODE 0x00000000 -#define FILE_PIPE_MESSAGE_MODE 0x00000001 -#define FILE_PIPE_QUEUE_OPERATION 0x00000000 -#define FILE_PIPE_COMPLETE_OPERATION 0x00000001 -#define FILE_PIPE_INBOUND 0x00000000 -#define FILE_PIPE_OUTBOUND 0x00000001 -#define FILE_PIPE_FULL_DUPLEX 0x00000002 -#define FILE_PIPE_CLIENT_END 0x00000000 -#define FILE_PIPE_SERVER_END 0x00000001 - -/* File Attributes */ -#define FILE_ATTRIBUTE_VALID_FLAGS 0x00007fb7 -#define FILE_ATTRIBUTE_VALID_SET_FLAGS 0x000031a7 - -/* File Flags */ -#define FILE_SUPERSEDE 0x00000000 -#define FILE_OPEN 0x00000001 -#define FILE_CREATE 0x00000002 -#define FILE_OPEN_IF 0x00000003 -#define FILE_OVERWRITE 0x00000004 -#define FILE_OVERWRITE_IF 0x00000005 -#define FILE_MAXIMUM_DISPOSITION 0x00000005 - -/* File Types */ -#define FILE_DIRECTORY_FILE 0x00000001 -#define FILE_WRITE_THROUGH 0x00000002 -#define FILE_SEQUENTIAL_ONLY 0x00000004 -#define FILE_NO_INTERMEDIATE_BUFFERING 0x00000008 -#define FILE_SYNCHRONOUS_IO_ALERT 0x00000010 -#define FILE_SYNCHRONOUS_IO_NONALERT 0x00000020 -#define FILE_NON_DIRECTORY_FILE 0x00000040 -#define FILE_CREATE_TREE_CONNECTION 0x00000080 -#define FILE_COMPLETE_IF_OPLOCKED 0x00000100 -#define FILE_NO_EA_KNOWLEDGE 0x00000200 -#define FILE_OPEN_FOR_RECOVERY 0x00000400 -#define FILE_RANDOM_ACCESS 0x00000800 -#define FILE_DELETE_ON_CLOSE 0x00001000 -#define FILE_OPEN_BY_FILE_ID 0x00002000 -#define FILE_OPEN_FOR_BACKUP_INTENT 0x00004000 -#define FILE_NO_COMPRESSION 0x00008000 -#define FILE_RESERVE_OPFILTER 0x00100000 -#define FILE_OPEN_REPARSE_POINT 0x00200000 -#define FILE_OPEN_NO_RECALL 0x00400000 -#define FILE_OPEN_FOR_FREE_SPACE_QUERY 0x00800000 - -/* Device Charactertics */ -#define FILE_REMOVABLE_MEDIA 0x00000001 -#define FILE_REMOTE_DEVICE 0x00000010 - -/* Version Constants */ -#define VER_MINORVERSION 0x0000001 -#define VER_MAJORVERSION 0x0000002 -#define VER_BUILDNUMBER 0x0000004 -#define VER_PLATFORMID 0x0000008 -#define VER_SERVICEPACKMINOR 0x0000010 -#define VER_SERVICEPACKMAJOR 0x0000020 -#define VER_SUITENAME 0x0000040 -#define VER_PRODUCT_TYPE 0x0000080 -#define VER_PLATFORM_WIN32s 0 -#define VER_PLATFORM_WIN32_WINDOWS 1 -#define VER_PLATFORM_WIN32_NT 2 -#define VER_EQUAL 1 -#define VER_GREATER 2 -#define VER_GREATER_EQUAL 3 -#define VER_LESS 4 -#define VER_LESS_EQUAL 5 -#define VER_AND 6 -#define VER_OR 7 -#define VER_CONDITION_MASK 7 -#define VER_NUM_BITS_PER_CONDITION_MASK 3 - -/* RTL String Hash Algorithms */ -#define HASH_STRING_ALGORITHM_DEFAULT 0 -#define HASH_STRING_ALGORITHM_X65599 1 -#define HASH_STRING_ALGORITHM_INVALID 0xffffffff - -/* List Macros */ -static __inline -VOID -InitializeListHead( - IN PLIST_ENTRY ListHead) -{ - ListHead->Flink = ListHead->Blink = ListHead; -} - -static __inline -VOID -InsertHeadList( - IN PLIST_ENTRY ListHead, - IN PLIST_ENTRY Entry) -{ - PLIST_ENTRY OldFlink; - OldFlink = ListHead->Flink; - Entry->Flink = OldFlink; - Entry->Blink = ListHead; - OldFlink->Blink = Entry; - ListHead->Flink = Entry; -} - -static __inline -VOID -InsertTailList( - IN PLIST_ENTRY ListHead, - IN PLIST_ENTRY Entry) -{ - PLIST_ENTRY OldBlink; - OldBlink = ListHead->Blink; - Entry->Flink = ListHead; - Entry->Blink = OldBlink; - OldBlink->Flink = Entry; - ListHead->Blink = Entry; -} - -#define IsListEmpty(ListHead) \ - ((ListHead)->Flink == (ListHead)) - -#define PopEntryList(ListHead) \ - (ListHead)->Next; \ - { \ - PSINGLE_LIST_ENTRY _FirstEntry; \ - _FirstEntry = (ListHead)->Next; \ - if (_FirstEntry != NULL) \ - (ListHead)->Next = _FirstEntry->Next; \ - } - -#define PushEntryList(_ListHead, _Entry) \ - (_Entry)->Next = (_ListHead)->Next; \ - (_ListHead)->Next = (_Entry); \ - -static __inline -BOOLEAN -RemoveEntryList( - IN PLIST_ENTRY Entry) -{ - PLIST_ENTRY OldFlink; - PLIST_ENTRY OldBlink; - - OldFlink = Entry->Flink; - OldBlink = Entry->Blink; - OldFlink->Blink = OldBlink; - OldBlink->Flink = OldFlink; - return (OldFlink == OldBlink); -} - -static __inline -PLIST_ENTRY -RemoveHeadList( - IN PLIST_ENTRY ListHead) -{ - PLIST_ENTRY Flink; - PLIST_ENTRY Entry; - - Entry = ListHead->Flink; - Flink = Entry->Flink; - ListHead->Flink = Flink; - Flink->Blink = ListHead; - return Entry; -} - -static __inline -PLIST_ENTRY -RemoveTailList( - IN PLIST_ENTRY ListHead) -{ - PLIST_ENTRY Blink; - PLIST_ENTRY Entry; - - Entry = ListHead->Blink; - Blink = Entry->Blink; - ListHead->Blink = Blink; - Blink->Flink = ListHead; - return Entry; -} - -#define IsFirstEntry(ListHead, Entry) \ - ((ListHead)->Flink == Entry) - -#define IsLastEntry(ListHead, Entry) \ - ((ListHead)->Blink == Entry) - -/* - * Constant String Macro - */ -#define RTL_CONSTANT_STRING(__SOURCE_STRING__) \ -{ \ - sizeof(__SOURCE_STRING__) - sizeof((__SOURCE_STRING__)[0]), \ - sizeof(__SOURCE_STRING__), \ - (__SOURCE_STRING__) \ -} - -/* ENUMERATIONS **************************************************************/ - -/* Kernel Shared Data Values */ -typedef enum _NT_PRODUCT_TYPE -{ - NtProductWinNt = 1, - NtProductLanManNt, - NtProductServer -} NT_PRODUCT_TYPE, *PNT_PRODUCT_TYPE; - -typedef enum _ALTERNATIVE_ARCHITECTURE_TYPE -{ - StandardDesign, - NEC98x86, - EndAlternatives -} ALTERNATIVE_ARCHITECTURE_TYPE; - -/* Run-Time Library (RTL) Enumerations */ -typedef enum _TABLE_SEARCH_RESULT -{ - TableEmptyTree, - TableFoundNode, - TableInsertAsLeft, - TableInsertAsRight -} TABLE_SEARCH_RESULT; - -typedef enum _RTL_GENERIC_COMPARE_RESULTS -{ - GenericLessThan, - GenericGreaterThan, - GenericEqual -} RTL_GENERIC_COMPARE_RESULTS; - -/* Kernel or Native Enumerations used by Native API */ -typedef enum _SECTION_INHERIT -{ - ViewShare = 1, - ViewUnmap = 2 -} SECTION_INHERIT; - -typedef enum _POOL_TYPE -{ - NonPagedPool, - PagedPool, - NonPagedPoolMustSucceed, - DontUseThisType, - NonPagedPoolCacheAligned, - PagedPoolCacheAligned, - NonPagedPoolCacheAlignedMustS, - MaxPoolType, - NonPagedPoolSession = 32, - PagedPoolSession, - NonPagedPoolMustSucceedSession, - DontUseThisTypeSession, - NonPagedPoolCacheAlignedSession, - PagedPoolCacheAlignedSession, - NonPagedPoolCacheAlignedMustSSession -} POOL_TYPE; - -typedef enum _EVENT_TYPE -{ - NotificationEvent, - SynchronizationEvent -} EVENT_TYPE; - -typedef enum _TIMER_TYPE -{ - NotificationTimer, - SynchronizationTimer -} TIMER_TYPE; - -typedef enum _WAIT_TYPE -{ - WaitAll, - WaitAny -} WAIT_TYPE; - -typedef enum _INTERFACE_TYPE -{ - InterfaceTypeUndefined = -1, - Internal, - Isa, - Eisa, - MicroChannel, - TurboChannel, - PCIBus, - VMEBus, - NuBus, - PCMCIABus, - CBus, - MPIBus, - MPSABus, - ProcessorInternal, - InternalPowerBus, - PNPISABus, - PNPBus, - MaximumInterfaceType -}INTERFACE_TYPE, *PINTERFACE_TYPE; - -typedef enum _MODE -{ - KernelMode, - UserMode, - MaximumMode -} MODE; - -typedef enum _KWAIT_REASON -{ - Executive, - FreePage, - PageIn, - PoolAllocation, - DelayExecution, - Suspended, - UserRequest, - WrExecutive, - WrFreePage, - WrPageIn, - WrPoolAllocation, - WrDelayExecution, - WrSuspended, - WrUserRequest, - WrEventPair, - WrQueue, - WrLpcReceive, - WrLpcReply, - WrVirtualMemory, - WrPageOut, - WrRendezvous, - Spare2, - WrGuardedMutex, - Spare4, - Spare5, - Spare6, - WrKernel, - WrResource, - WrPushLock, - WrMutex, - WrQuantumEnd, - WrDispatchInt, - WrPreempted, - WrYieldExecution, - MaximumWaitReason -} KWAIT_REASON; - -typedef enum _KPROFILE_SOURCE -{ - ProfileTime, - ProfileAlignmentFixup, - ProfileTotalIssues, - ProfilePipelineDry, - ProfileLoadInstructions, - ProfilePipelineFrozen, - ProfileBranchInstructions, - ProfileTotalNonissues, - ProfileDcacheMisses, - ProfileIcacheMisses, - ProfileCacheMisses, - ProfileBranchMispredictions, - ProfileStoreInstructions, - ProfileFpInstructions, - ProfileIntegerInstructions, - Profile2Issue, - Profile3Issue, - Profile4Issue, - ProfileSpecialInstructions, - ProfileTotalCycles, - ProfileIcacheIssues, - ProfileDcacheAccesses, - ProfileMemoryBarrierCycles, - ProfileLoadLinkedIssues, - ProfileMaximum -} KPROFILE_SOURCE; - -/**** Information Classes ****/ - -/* - * File - */ -typedef enum _FILE_INFORMATION_CLASS -{ - FileDirectoryInformation = 1, - FileFullDirectoryInformation, - FileBothDirectoryInformation, - FileBasicInformation, - FileStandardInformation, - FileInternalInformation, - FileEaInformation, - FileAccessInformation, - FileNameInformation, - FileRenameInformation, - FileLinkInformation, - FileNamesInformation, - FileDispositionInformation, - FilePositionInformation, - FileFullEaInformation, - FileModeInformation, - FileAlignmentInformation, - FileAllInformation, - FileAllocationInformation, - FileEndOfFileInformation, - FileAlternateNameInformation, - FileStreamInformation, - FilePipeInformation, - FilePipeLocalInformation, - FilePipeRemoteInformation, - FileMailslotQueryInformation, - FileMailslotSetInformation, - FileCompressionInformation, - FileObjectIdInformation, - FileCompletionInformation, - FileMoveClusterInformation, - FileQuotaInformation, - FileReparsePointInformation, - FileNetworkOpenInformation, - FileAttributeTagInformation, - FileTrackingInformation, - FileIdBothDirectoryInformation, - FileIdFullDirectoryInformation, - FileValidDataLengthInformation, - FileShortNameInformation, - FileMaximumInformation -} FILE_INFORMATION_CLASS, *PFILE_INFORMATION_CLASS; - -/* - * File System - */ -typedef enum _FSINFOCLASS -{ - FileFsVolumeInformation = 1, - FileFsLabelInformation, - FileFsSizeInformation, - FileFsDeviceInformation, - FileFsAttributeInformation, - FileFsControlInformation, - FileFsFullSizeInformation, - FileFsObjectIdInformation, - FileFsDriverPathInformation, - FileFsMaximumInformation -} FS_INFORMATION_CLASS, *PFS_INFORMATION_CLASS; - -/* - * Registry Key - */ -typedef enum _KEY_INFORMATION_CLASS -{ - KeyBasicInformation, - KeyNodeInformation, - KeyFullInformation, - KeyNameInformation, - KeyCachedInformation, - KeyFlagsInformation -} KEY_INFORMATION_CLASS; - -/* - * Registry Key Value - */ -typedef enum _KEY_VALUE_INFORMATION_CLASS -{ - KeyValueBasicInformation, - KeyValueFullInformation, - KeyValuePartialInformation, - KeyValueFullInformationAlign64, - KeyValuePartialInformationAlign64 -} KEY_VALUE_INFORMATION_CLASS; - -/* - * Registry Key Set - */ -typedef enum _KEY_SET_INFORMATION_CLASS -{ - KeyWriteTimeInformation, - KeyUserFlagsInformation, - MaxKeySetInfoClass -} KEY_SET_INFORMATION_CLASS; - -/* - * Process - */ -typedef enum _PROCESSINFOCLASS -{ - ProcessBasicInformation, - ProcessQuotaLimits, - ProcessIoCounters, - ProcessVmCounters, - ProcessTimes, - ProcessBasePriority, - ProcessRaisePriority, - ProcessDebugPort, - ProcessExceptionPort, - ProcessAccessToken, - ProcessLdtInformation, - ProcessLdtSize, - ProcessDefaultHardErrorMode, - ProcessIoPortHandlers, - ProcessPooledUsageAndLimits, - ProcessWorkingSetWatch, - ProcessUserModeIOPL, - ProcessEnableAlignmentFaultFixup, - ProcessPriorityClass, - ProcessWx86Information, - ProcessHandleCount, - ProcessAffinityMask, - ProcessPriorityBoost, - ProcessDeviceMap, - ProcessSessionInformation, - ProcessForegroundInformation, - ProcessWow64Information, - ProcessImageFileName, - ProcessLUIDDeviceMapsEnabled, - ProcessBreakOnTermination, - ProcessDebugObjectHandle, - ProcessDebugFlags, - ProcessHandleTracing, - MaxProcessInfoClass -} PROCESSINFOCLASS; - -/* - * Thread - */ -typedef enum _THREADINFOCLASS -{ - ThreadBasicInformation, - ThreadTimes, - ThreadPriority, - ThreadBasePriority, - ThreadAffinityMask, - ThreadImpersonationToken, - ThreadDescriptorTableEntry, - ThreadEnableAlignmentFaultFixup, - ThreadEventPair_Reusable, - ThreadQuerySetWin32StartAddress, - ThreadZeroTlsCell, - ThreadPerformanceCount, - ThreadAmILastThread, - ThreadIdealProcessor, - ThreadPriorityBoost, - ThreadSetTlsArrayAddress, - ThreadIsIoPending, - ThreadHideFromDebugger, - ThreadBreakOnTermination, - MaxThreadInfoClass -} THREADINFOCLASS; - /* TYPES *********************************************************************/ /* Basic Types that aren't defined in User-Mode Headers */ @@ -703,19 +38,7 @@ typedef CONST char *PCSZ; typedef short CSHORT; typedef CSHORT *PCSHORT; typedef LARGE_INTEGER PHYSICAL_ADDRESS, *PPHYSICAL_ADDRESS; - -/* Kernel Types used by Native APIs */ -typedef LONG KPRIORITY; typedef LONG NTSTATUS, *PNTSTATUS; -typedef UCHAR KIRQL, *PKIRQL; -typedef ULONG KAFFINITY, *PKAFFINITY; -typedef ULONG_PTR KSPIN_LOCK, *PKSPIN_LOCK; -typedef struct _PEB *PPEB; -typedef ULONG KPROCESSOR_MODE; -typedef struct _OBJECT_TYPE *POBJECT_TYPE; -struct _ETHREAD; -struct _CSR_API_MESSAGE; -typedef ULONG EXECUTION_STATE; /* Basic NT Types */ #if !defined(_NTSECAPI_H) && !defined(_SUBAUTH_H) @@ -723,7 +46,7 @@ typedef struct _UNICODE_STRING { USHORT Length; USHORT MaximumLength; - PWSTR Buffer; + PWSTR Buffer; } UNICODE_STRING, *PUNICODE_STRING; typedef const UNICODE_STRING* PCUNICODE_STRING; @@ -731,7 +54,7 @@ typedef struct _STRING { USHORT Length; USHORT MaximumLength; - PCHAR Buffer; + PCHAR Buffer; } STRING, *PSTRING; typedef struct _OBJECT_ATTRIBUTES @@ -750,702 +73,4 @@ typedef PSTRING PANSI_STRING; typedef STRING OEM_STRING; typedef PSTRING POEM_STRING; -typedef struct _IO_STATUS_BLOCK -{ - union - { - NTSTATUS Status; - PVOID Pointer; - }; - ULONG_PTR Information; -} IO_STATUS_BLOCK, *PIO_STATUS_BLOCK; - -typedef VOID -(NTAPI *PIO_APC_ROUTINE)( - IN PVOID ApcContext, - IN PIO_STATUS_BLOCK IoStatusBlock, - IN ULONG Reserved); - -typedef VOID -(NTAPI *PKNORMAL_ROUTINE)( - IN PVOID NormalContext, - IN PVOID SystemArgument1, - IN PVOID SystemArgument2); - -typedef VOID -(NTAPI *PTIMER_APC_ROUTINE)( - IN PVOID TimerContext, - IN ULONG TimerLowValue, - IN LONG TimerHighValue); - -/* Kernel Types which are returned or used by Native API */ -typedef struct _OBJECT_NAME_INFORMATION -{ - UNICODE_STRING Name; -} OBJECT_NAME_INFORMATION, *POBJECT_NAME_INFORMATION; - -typedef struct _IO_ERROR_LOG_PACKET -{ - UCHAR MajorFunctionCode; - UCHAR RetryCount; - USHORT DumpDataSize; - USHORT NumberOfStrings; - USHORT StringOffset; - USHORT EventCategory; - NTSTATUS ErrorCode; - ULONG UniqueErrorValue; - NTSTATUS FinalStatus; - ULONG SequenceNumber; - ULONG IoControlCode; - LARGE_INTEGER DeviceOffset; - ULONG DumpData[1]; -}IO_ERROR_LOG_PACKET, *PIO_ERROR_LOG_PACKET; - -typedef struct _IO_ERROR_LOG_MESSAGE -{ - USHORT Type; - USHORT Size; - USHORT DriverNameLength; - LARGE_INTEGER TimeStamp; - ULONG DriverNameOffset; - IO_ERROR_LOG_PACKET EntryData; -} IO_ERROR_LOG_MESSAGE, *PIO_ERROR_LOG_MESSAGE; - -typedef struct _CLIENT_ID -{ - HANDLE UniqueProcess; - HANDLE UniqueThread; -} CLIENT_ID, *PCLIENT_ID; - -typedef struct _KSYSTEM_TIME -{ - ULONG LowPart; - LONG High1Time; - LONG High2Time; -} KSYSTEM_TIME, *PKSYSTEM_TIME; - -typedef struct _TIME_FIELDS -{ - CSHORT Year; - CSHORT Month; - CSHORT Day; - CSHORT Hour; - CSHORT Minute; - CSHORT Second; - CSHORT Milliseconds; - CSHORT Weekday; -} TIME_FIELDS, *PTIME_FIELDS; - -typedef struct _VM_COUNTERS -{ - SIZE_T PeakVirtualSize; - SIZE_T VirtualSize; - ULONG PageFaultCount; - SIZE_T PeakWorkingSetSize; - SIZE_T WorkingSetSize; - SIZE_T QuotaPeakPagedPoolUsage; - SIZE_T QuotaPagedPoolUsage; - SIZE_T QuotaPeakNonPagedPoolUsage; - SIZE_T QuotaNonPagedPoolUsage; - SIZE_T PagefileUsage; - SIZE_T PeakPagefileUsage; -} VM_COUNTERS, *PVM_COUNTERS; - -typedef struct _VM_COUNTERS_EX -{ - SIZE_T PeakVirtualSize; - SIZE_T VirtualSize; - ULONG PageFaultCount; - SIZE_T PeakWorkingSetSize; - SIZE_T WorkingSetSize; - SIZE_T QuotaPeakPagedPoolUsage; - SIZE_T QuotaPagedPoolUsage; - SIZE_T QuotaPeakNonPagedPoolUsage; - SIZE_T QuotaNonPagedPoolUsage; - SIZE_T PagefileUsage; - SIZE_T PeakPagefileUsage; - SIZE_T PrivateUsage; -} VM_COUNTERS_EX, *PVM_COUNTERS_EX; - -/**** Information Types ****/ - -/* - * Registry Key Set - */ - -/* Class 0 */ -typedef struct _KEY_WRITE_TIME_INFORMATION -{ - LARGE_INTEGER LastWriteTime; -} KEY_WRITE_TIME_INFORMATION, *PKEY_WRITE_TIME_INFORMATION; - -/* Class 1 */ -typedef struct _KEY_USER_FLAGS_INFORMATION -{ - ULONG UserFlags; -} KEY_USER_FLAGS_INFORMATION, *PKEY_USER_FLAGS_INFORMATION; - -typedef struct _KEY_FULL_INFORMATION -{ - LARGE_INTEGER LastWriteTime; - ULONG TitleIndex; - ULONG ClassOffset; - ULONG ClassLength; - ULONG SubKeys; - ULONG MaxNameLen; - ULONG MaxClassLen; - ULONG Values; - ULONG MaxValueNameLen; - ULONG MaxValueDataLen; - WCHAR Class[1]; -} KEY_FULL_INFORMATION, *PKEY_FULL_INFORMATION; - -typedef struct _KEY_NODE_INFORMATION -{ - LARGE_INTEGER LastWriteTime; - ULONG TitleIndex; - ULONG ClassOffset; - ULONG ClassLength; - ULONG NameLength; - WCHAR Name[1]; -} KEY_NODE_INFORMATION, *PKEY_NODE_INFORMATION; - -/* - * File - */ - -/* Class 1 */ -typedef struct _FILE_BASIC_INFORMATION -{ - LARGE_INTEGER CreationTime; - LARGE_INTEGER LastAccessTime; - LARGE_INTEGER LastWriteTime; - LARGE_INTEGER ChangeTime; - ULONG FileAttributes; -} FILE_BASIC_INFORMATION, *PFILE_BASIC_INFORMATION; - -/* Class 2 */ -typedef struct _FILE_STANDARD_INFORMATION -{ - LARGE_INTEGER AllocationSize; - LARGE_INTEGER EndOfFile; - ULONG NumberOfLinks; - BOOLEAN DeletePending; - BOOLEAN Directory; -} FILE_STANDARD_INFORMATION, *PFILE_STANDARD_INFORMATION; - -typedef struct _FILE_NETWORK_OPEN_INFORMATION -{ - LARGE_INTEGER CreationTime; - LARGE_INTEGER LastAccessTime; - LARGE_INTEGER LastWriteTime; - LARGE_INTEGER ChangeTime; - LARGE_INTEGER AllocationSize; - LARGE_INTEGER EndOfFile; - ULONG FileAttributes; -} FILE_NETWORK_OPEN_INFORMATION, *PFILE_NETWORK_OPEN_INFORMATION; - -typedef struct _FILE_EA_INFORMATION -{ - ULONG EaSize; -} FILE_EA_INFORMATION, *PFILE_EA_INFORMATION; - -typedef struct _FILE_COMPRESSION_INFORMATION -{ - LARGE_INTEGER CompressedFileSize; - USHORT CompressionFormat; - UCHAR CompressionUnitShift; - UCHAR ChunkShift; - UCHAR ClusterShift; - UCHAR Reserved[3]; -} FILE_COMPRESSION_INFORMATION, *PFILE_COMPRESSION_INFORMATION; - -typedef struct _FILE_POSITION_INFORMATION -{ - LARGE_INTEGER CurrentByteOffset; -} FILE_POSITION_INFORMATION, *PFILE_POSITION_INFORMATION; - -typedef struct _FILE_DISPOSITION_INFORMATION -{ - BOOLEAN DeleteFile; -} FILE_DISPOSITION_INFORMATION, *PFILE_DISPOSITION_INFORMATION; - -typedef struct _FILE_FULL_EA_INFORMATION -{ - ULONG NextEntryOffset; - UCHAR Flags; - UCHAR EaNameLength; - USHORT EaValueLength; - CHAR EaName[1]; -} FILE_FULL_EA_INFORMATION, *PFILE_FULL_EA_INFORMATION; - -typedef struct _FILE_QUOTA_INFORMATION -{ - ULONG NextEntryOffset; - ULONG SidLength; - LARGE_INTEGER ChangeTime; - LARGE_INTEGER QuotaUsed; - LARGE_INTEGER QuotaThreshold; - LARGE_INTEGER QuotaLimit; - SID Sid; -} FILE_QUOTA_INFORMATION, *PFILE_QUOTA_INFORMATION; - -typedef struct _FILE_INTERNAL_INFORMATION -{ - LARGE_INTEGER IndexNumber; -} FILE_INTERNAL_INFORMATION, *PFILE_INTERNAL_INFORMATION; - -typedef struct _FILE_RENAME_INFORMATION -{ - BOOLEAN ReplaceIfExists; - HANDLE RootDirectory; - ULONG FileNameLength; - WCHAR FileName[1]; -} FILE_RENAME_INFORMATION, *PFILE_RENAME_INFORMATION; - -typedef struct _FILE_PIPE_INFORMATION -{ - ULONG ReadMode; - ULONG CompletionMode; -} FILE_PIPE_INFORMATION, *PFILE_PIPE_INFORMATION; - -typedef struct _FILE_PIPE_LOCAL_INFORMATION -{ - ULONG NamedPipeType; - ULONG NamedPipeConfiguration; - ULONG MaximumInstances; - ULONG CurrentInstances; - ULONG InboundQuota; - ULONG ReadDataAvailable; - ULONG OutboundQuota; - ULONG WriteQuotaAvailable; - ULONG NamedPipeState; - ULONG NamedPipeEnd; -} FILE_PIPE_LOCAL_INFORMATION, *PFILE_PIPE_LOCAL_INFORMATION; - -typedef struct _FILE_PIPE_REMOTE_INFORMATION -{ - LARGE_INTEGER CollectDataTime; - ULONG MaximumCollectionCount; -} FILE_PIPE_REMOTE_INFORMATION, *PFILE_PIPE_REMOTE_INFORMATION; - -typedef struct _FILE_MAILSLOT_QUERY_INFORMATION -{ - ULONG MaximumMessageSize; - ULONG MailslotQuota; - ULONG NextMessageSize; - ULONG MessagesAvailable; - LARGE_INTEGER ReadTimeout; -} FILE_MAILSLOT_QUERY_INFORMATION, *PFILE_MAILSLOT_QUERY_INFORMATION; - -typedef struct _FILE_MAILSLOT_SET_INFORMATION -{ - LARGE_INTEGER ReadTimeout; -} FILE_MAILSLOT_SET_INFORMATION, *PFILE_MAILSLOT_SET_INFORMATION; - -typedef struct _FILE_BOTH_DIR_INFORMATION -{ - ULONG NextEntryOffset; - ULONG FileIndex; - LARGE_INTEGER CreationTime; - LARGE_INTEGER LastAccessTime; - LARGE_INTEGER LastWriteTime; - LARGE_INTEGER ChangeTime; - LARGE_INTEGER EndOfFile; - LARGE_INTEGER AllocationSize; - ULONG FileAttributes; - ULONG FileNameLength; - ULONG EaSize; - CCHAR ShortNameLength; - WCHAR ShortName[12]; - WCHAR FileName[1]; -} FILE_BOTH_DIR_INFORMATION, *PFILE_BOTH_DIR_INFORMATION; - -typedef struct _FILE_COMPLETION_INFORMATION -{ - HANDLE Port; - PVOID Key; -} FILE_COMPLETION_INFORMATION, *PFILE_COMPLETION_INFORMATION; - -typedef struct _FILE_LINK_INFORMATION -{ - BOOLEAN ReplaceIfExists; - HANDLE RootDirectory; - ULONG FileNameLength; - WCHAR FileName[1]; -} FILE_LINK_INFORMATION, *PFILE_LINK_INFORMATION; - -typedef struct _FILE_NAME_INFORMATION -{ - ULONG FileNameLength; - WCHAR FileName[1]; -} FILE_NAME_INFORMATION, *PFILE_NAME_INFORMATION; - -typedef struct _FILE_ALLOCATION_INFORMATION -{ - LARGE_INTEGER AllocationSize; -} FILE_ALLOCATION_INFORMATION, *PFILE_ALLOCATION_INFORMATION; - -typedef struct _FILE_END_OF_FILE_INFORMATION -{ - LARGE_INTEGER EndOfFile; -} FILE_END_OF_FILE_INFORMATION, *PFILE_END_OF_FILE_INFORMATION; - -typedef struct _FILE_VALID_DATA_LENGTH_INFORMATION -{ - LARGE_INTEGER ValidDataLength; -} FILE_VALID_DATA_LENGTH_INFORMATION, *PFILE_VALID_DATA_LENGTH_INFORMATION; - -/* - * File System - */ -typedef struct _FILE_FS_DEVICE_INFORMATION -{ - DEVICE_TYPE DeviceType; - ULONG Characteristics; -} FILE_FS_DEVICE_INFORMATION, *PFILE_FS_DEVICE_INFORMATION; - -typedef struct _FILE_FS_ATTRIBUTE_INFORMATION -{ - ULONG FileSystemAttributes; - ULONG MaximumComponentNameLength; - ULONG FileSystemNameLength; - WCHAR FileSystemName[1]; -} FILE_FS_ATTRIBUTE_INFORMATION, *PFILE_FS_ATTRIBUTE_INFORMATION; - -typedef struct _FILE_FS_SIZE_INFORMATION -{ - LARGE_INTEGER TotalAllocationUnits; - LARGE_INTEGER AvailableAllocationUnits; - ULONG SectorsPerAllocationUnit; - ULONG BytesPerSector; -} FILE_FS_SIZE_INFORMATION, *PFILE_FS_SIZE_INFORMATION; - -typedef struct _FILE_FS_LABEL_INFORMATION -{ - ULONG VolumeLabelLength; - WCHAR VolumeLabel[1]; -} FILE_FS_LABEL_INFORMATION, *PFILE_FS_LABEL_INFORMATION; - -typedef struct _FILE_FS_VOLUME_INFORMATION -{ - LARGE_INTEGER VolumeCreationTime; - ULONG VolumeSerialNumber; - ULONG VolumeLabelLength; - BOOLEAN SupportsObjects; - WCHAR VolumeLabel[1]; -} FILE_FS_VOLUME_INFORMATION, *PFILE_FS_VOLUME_INFORMATION; - -/* - * Registry Key Value - */ - -/* Class 0 */ -typedef struct _KEY_VALUE_ENTRY -{ - PUNICODE_STRING ValueName; - ULONG DataLength; - ULONG DataOffset; - ULONG Type; -} KEY_VALUE_ENTRY, *PKEY_VALUE_ENTRY; - -/* Class 1 */ -typedef struct _KEY_VALUE_PARTIAL_INFORMATION -{ - ULONG TitleIndex; - ULONG Type; - ULONG DataLength; - UCHAR Data[1]; -} KEY_VALUE_PARTIAL_INFORMATION, *PKEY_VALUE_PARTIAL_INFORMATION; - -/* Class 2 */ -typedef struct _KEY_VALUE_BASIC_INFORMATION -{ - ULONG TitleIndex; - ULONG Type; - ULONG NameLength; - WCHAR Name[1]; -} KEY_VALUE_BASIC_INFORMATION, *PKEY_VALUE_BASIC_INFORMATION; - -/* Class 3 */ -typedef struct _KEY_VALUE_FULL_INFORMATION -{ - ULONG TitleIndex; - ULONG Type; - ULONG DataOffset; - ULONG DataLength; - ULONG NameLength; - WCHAR Name[1]; -} KEY_VALUE_FULL_INFORMATION, *PKEY_VALUE_FULL_INFORMATION; - -/* - * Registry Key - */ - -/* Class 0 */ -typedef struct _KEY_BASIC_INFORMATION -{ - LARGE_INTEGER LastWriteTime; - ULONG TitleIndex; - ULONG NameLength; - WCHAR Name[1]; -} KEY_BASIC_INFORMATION, *PKEY_BASIC_INFORMATION; - -/* File Pipe Structures for the FSCTLs */ -typedef struct _FILE_PIPE_WAIT_FOR_BUFFER -{ - LARGE_INTEGER Timeout; - ULONG NameLength; - BOOLEAN TimeoutSpecified; - WCHAR Name[1]; -} FILE_PIPE_WAIT_FOR_BUFFER, *PFILE_PIPE_WAIT_FOR_BUFFER; - -typedef struct _FILE_PIPE_PEEK_BUFFER -{ - ULONG NamedPipeState; - ULONG ReadDataAvailable; - ULONG NumberOfMessages; - ULONG MessageLength; - CHAR Data[1]; -} FILE_PIPE_PEEK_BUFFER, *PFILE_PIPE_PEEK_BUFFER; - -/* The Kerner/User Shared Data Structure */ -typedef struct _KUSER_SHARED_DATA -{ - ULONG TickCountLowDeprecated; - ULONG TickCountMultiplier; - volatile KSYSTEM_TIME InterruptTime; - volatile KSYSTEM_TIME SystemTime; - volatile KSYSTEM_TIME TimeZoneBias; - USHORT ImageNumberLow; - USHORT ImageNumberHigh; - WCHAR NtSystemRoot[260]; - ULONG MaxStackTraceDepth; - ULONG CryptoExponent; - ULONG TimeZoneId; - ULONG LargePageMinimum; - ULONG Reserved2[7]; - NT_PRODUCT_TYPE NtProductType; - BOOLEAN ProductTypeIsValid; - ULONG NtMajorVersion; - ULONG NtMinorVersion; - BOOLEAN ProcessorFeatures[PROCESSOR_FEATURE_MAX]; - ULONG Reserved1; - ULONG Reserved3; - volatile ULONG TimeSlip; - ALTERNATIVE_ARCHITECTURE_TYPE AlternativeArchitecture; - LARGE_INTEGER SystemExpirationDate; - ULONG SuiteMask; - BOOLEAN KdDebuggerEnabled; - volatile ULONG ActiveConsoleId; - volatile ULONG DismountCount; - ULONG ComPlusPackage; - ULONG LastSystemRITEventTickCount; - ULONG NumberOfPhysicalPages; - BOOLEAN SafeBootMode; - ULONG TraceLogging; - ULONGLONG Fill0; - ULONGLONG SystemCall[4]; - union { - volatile KSYSTEM_TIME TickCount; - volatile ULONG64 TickCountQuad; - }; -} KUSER_SHARED_DATA, *PKUSER_SHARED_DATA; - -/* Run-Time Library (RTL) Types */ -typedef struct _RTL_BITMAP -{ - ULONG SizeOfBitMap; - PULONG Buffer; -} RTL_BITMAP, *PRTL_BITMAP; - -typedef struct _RTL_BITMAP_RUN -{ - ULONG StartingIndex; - ULONG NumberOfBits; -} RTL_BITMAP_RUN, *PRTL_BITMAP_RUN; - -typedef struct _COMPRESSED_DATA_INFO -{ - USHORT CompressionFormatAndEngine; - UCHAR CompressionUnitShift; - UCHAR ChunkShift; - UCHAR ClusterShift; - UCHAR Reserved; - USHORT NumberOfChunks; - ULONG CompressedChunkSizes[ANYSIZE_ARRAY]; -} COMPRESSED_DATA_INFO, *PCOMPRESSED_DATA_INFO; - -typedef struct _GENERATE_NAME_CONTEXT -{ - USHORT Checksum; - BOOLEAN CheckSumInserted; - UCHAR NameLength; - WCHAR NameBuffer[8]; - ULONG ExtensionLength; - WCHAR ExtensionBuffer[4]; - ULONG LastIndexValue; -} GENERATE_NAME_CONTEXT, *PGENERATE_NAME_CONTEXT; - -typedef struct _RTL_SPLAY_LINKS -{ - struct _RTL_SPLAY_LINKS *Parent; - struct _RTL_SPLAY_LINKS *LeftChild; - struct _RTL_SPLAY_LINKS *RightChild; -} RTL_SPLAY_LINKS, *PRTL_SPLAY_LINKS; - -struct _RTL_AVL_TABLE; -struct _RTL_GENERIC_TABLE; - -typedef NTSTATUS -(NTAPI *PRTL_AVL_MATCH_FUNCTION)( - struct _RTL_AVL_TABLE *Table, - PVOID UserData, - PVOID MatchData -); - -typedef RTL_GENERIC_COMPARE_RESULTS -(NTAPI *PRTL_AVL_COMPARE_ROUTINE) ( - struct _RTL_AVL_TABLE *Table, - PVOID FirstStruct, - PVOID SecondStruct -); - -typedef RTL_GENERIC_COMPARE_RESULTS -(NTAPI *PRTL_GENERIC_COMPARE_ROUTINE) ( - struct _RTL_GENERIC_TABLE *Table, - PVOID FirstStruct, - PVOID SecondStruct -); - -typedef PVOID -(NTAPI *PRTL_GENERIC_ALLOCATE_ROUTINE) ( - struct _RTL_GENERIC_TABLE *Table, - LONG ByteSize -); - -typedef VOID -(NTAPI *PRTL_GENERIC_FREE_ROUTINE) ( - struct _RTL_GENERIC_TABLE *Table, - PVOID Buffer -); - -typedef VOID -(NTAPI *PRTL_AVL_ALLOCATE_ROUTINE) ( - struct _RTL_AVL_TABLE *Table, - LONG ByteSize -); - -typedef VOID -(NTAPI *PRTL_AVL_FREE_ROUTINE) ( - struct _RTL_AVL_TABLE *Table, - PVOID Buffer -); - -typedef struct _RTL_GENERIC_TABLE -{ - PRTL_SPLAY_LINKS TableRoot; - LIST_ENTRY InsertOrderList; - PLIST_ENTRY OrderedPointer; - ULONG WhichOrderedElement; - ULONG NumberGenericTableElements; - PRTL_GENERIC_COMPARE_ROUTINE CompareRoutine; - PRTL_GENERIC_ALLOCATE_ROUTINE AllocateRoutine; - PRTL_GENERIC_FREE_ROUTINE FreeRoutine; - PVOID TableContext; -} RTL_GENERIC_TABLE, *PRTL_GENERIC_TABLE; - -typedef struct _RTL_BALANCED_LINKS -{ - struct _RTL_BALANCED_LINKS *Parent; - struct _RTL_BALANCED_LINKS *LeftChild; - struct _RTL_BALANCED_LINKS *RightChild; - CHAR Balance; - UCHAR Reserved[3]; -} RTL_BALANCED_LINKS, *PRTL_BALANCED_LINKS; - -typedef struct _RTL_AVL_TABLE -{ - RTL_BALANCED_LINKS BalancedRoot; - PVOID OrderedPointer; - ULONG WhichOrderedElement; - ULONG NumberGenericTableElements; - ULONG DepthOfTree; - PRTL_BALANCED_LINKS RestartKey; - ULONG DeleteCount; - PRTL_AVL_COMPARE_ROUTINE CompareRoutine; - PRTL_AVL_ALLOCATE_ROUTINE AllocateRoutine; - PRTL_AVL_FREE_ROUTINE FreeRoutine; - PVOID TableContext; -} RTL_AVL_TABLE, *PRTL_AVL_TABLE; - -typedef NTSTATUS -(NTAPI *PRTL_QUERY_REGISTRY_ROUTINE)( - IN PWSTR ValueName, - IN ULONG ValueType, - IN PVOID ValueData, - IN ULONG ValueLength, - IN PVOID Context, - IN PVOID EntryContext -); - -typedef struct _RTL_QUERY_REGISTRY_TABLE -{ - PRTL_QUERY_REGISTRY_ROUTINE QueryRoutine; - ULONG Flags; - PWSTR Name; - PVOID EntryContext; - ULONG DefaultType; - PVOID DefaultData; - ULONG DefaultLength; -} RTL_QUERY_REGISTRY_TABLE, *PRTL_QUERY_REGISTRY_TABLE; - -typedef struct _UNICODE_PREFIX_TABLE_ENTRY -{ - CSHORT NodeTypeCode; - CSHORT NameLength; - struct _UNICODE_PREFIX_TABLE_ENTRY *NextPrefixTree; - struct _UNICODE_PREFIX_TABLE_ENTRY *CaseMatch; - RTL_SPLAY_LINKS Links; - PUNICODE_STRING Prefix; -} UNICODE_PREFIX_TABLE_ENTRY, *PUNICODE_PREFIX_TABLE_ENTRY; - -typedef struct _UNICODE_PREFIX_TABLE -{ - CSHORT NodeTypeCode; - CSHORT NameLength; - PUNICODE_PREFIX_TABLE_ENTRY NextPrefixTree; - PUNICODE_PREFIX_TABLE_ENTRY LastNextEntry; -} UNICODE_PREFIX_TABLE, *PUNICODE_PREFIX_TABLE; - -typedef NTSTATUS -(NTAPI * PRTL_HEAP_COMMIT_ROUTINE)( - IN PVOID Base, - IN OUT PVOID *CommitAddress, - IN OUT PSIZE_T CommitSize -); - -typedef struct _RTL_HEAP_PARAMETERS -{ - ULONG Length; - SIZE_T SegmentReserve; - SIZE_T SegmentCommit; - SIZE_T DeCommitFreeBlockThreshold; - SIZE_T DeCommitTotalFreeThreshold; - SIZE_T MaximumAllocationSize; - SIZE_T VirtualMemoryThreshold; - SIZE_T InitialCommit; - SIZE_T InitialReserve; - PRTL_HEAP_COMMIT_ROUTINE CommitRoutine; - SIZE_T Reserved[2]; -} RTL_HEAP_PARAMETERS, *PRTL_HEAP_PARAMETERS; - -typedef void *FAST_MUTEX; -typedef void *PHANDLE_TABLE; - -typedef OSVERSIONINFOW RTL_OSVERSIONINFOW; -typedef LPOSVERSIONINFOW PRTL_OSVERSIONINFOW; -typedef OSVERSIONINFOEXW RTL_OSVERSIONINFOEXW; -typedef LPOSVERSIONINFOEXW PRTL_OSVERSIONINFOEXW; - #endif diff --git a/reactos/include/ndk/zwfuncs.h b/reactos/include/ndk/zwfuncs.h index f12369714de..8858f59c621 100644 --- a/reactos/include/ndk/zwfuncs.h +++ b/reactos/include/ndk/zwfuncs.h @@ -10,9 +10,6 @@ #define _ZWFUNCS_H /* DEPENDENCIES **************************************************************/ -#include "lpctypes.h" -#include "zwtypes.h" -#include "kdtypes.h" #define _WMIKM_ #include diff --git a/reactos/include/ndk/zwtypes.h b/reactos/include/ndk/zwtypes.h index dab53c5a4b8..b6284d66172 100644 --- a/reactos/include/ndk/zwtypes.h +++ b/reactos/include/ndk/zwtypes.h @@ -10,7 +10,6 @@ #define _ZWTYPES_H /* DEPENDENCIES **************************************************************/ -#include "rtltypes.h" #include /* EXPORTED DATA *************************************************************/ @@ -285,8 +284,8 @@ typedef enum _PLUGPLAY_CONTROL_CLASS /* TYPES *********************************************************************/ -typedef unsigned short LANGID; -typedef LANGID *PLANGID; +typedef USHORT LANGID, *PLANGID; +typedef USHORT RTL_ATOM, *PRTL_ATOM; typedef struct _PLUGPLAY_EVENT_BLOCK { diff --git a/reactos/w32api/include/basetsd.h b/reactos/w32api/include/basetsd.h index 14d029e966b..17996343c4b 100644 --- a/reactos/w32api/include/basetsd.h +++ b/reactos/w32api/include/basetsd.h @@ -115,6 +115,9 @@ typedef unsigned __int64 UINT64, *PUINT64; typedef signed short INT16, *PINT16; typedef unsigned short UINT16, *PUINT16; +typedef ULONG_PTR KAFFINITY; +typedef KAFFINITY *PKAFFINITY; + #ifdef __cplusplus } #endif diff --git a/reactos/w32api/include/winnt.h b/reactos/w32api/include/winnt.h index f26875bef28..55c72a89277 100644 --- a/reactos/w32api/include/winnt.h +++ b/reactos/w32api/include/winnt.h @@ -3338,6 +3338,7 @@ typedef struct _SYSTEM_BATTERY_STATE { ULONG DefaultAlert2; } SYSTEM_BATTERY_STATE, *PSYSTEM_BATTERY_STATE; +typedef DWORD EXECUTION_STATE; typedef enum _POWER_INFORMATION_LEVEL { SystemPowerPolicyAc, SystemPowerPolicyDc, -- 2.17.1