From c09b52bf0142c7d416ba60961d394f0388177bf4 Mon Sep 17 00:00:00 2001 From: Alex Ionescu Date: Sat, 18 Jun 2005 23:33:40 +0000 Subject: [PATCH] Add NDK 1.00-pre. Needs some TLC in umtypes.h and a lot of fixes. Not used anywhere yet. svn path=/trunk/; revision=16066 --- reactos/include/ndk/cctypes.h | 25 + reactos/include/ndk/extypes.h | 49 + reactos/include/ndk/halfuncs.h | 149 + reactos/include/ndk/haltypes.h | 72 + reactos/include/ndk/i386/floatsave.h | 11 + reactos/include/ndk/i386/segment.h | 12 + reactos/include/ndk/inbvfuncs.h | 105 + reactos/include/ndk/iofuncs.h | 20 + reactos/include/ndk/iotypes.h | 68 + reactos/include/ndk/kdfuncs.h | 94 + reactos/include/ndk/kdtypes.h | 29 + reactos/include/ndk/kefuncs.h | 280 ++ reactos/include/ndk/ketypes.h | 129 + reactos/include/ndk/ldrfuncs.h | 37 + reactos/include/ndk/ldrtypes.h | 76 + reactos/include/ndk/lpctypes.h | 78 + reactos/include/ndk/mmtypes.h | 37 + reactos/include/ndk/ntndk.h | 49 + reactos/include/ndk/obfuncs.h | 96 + reactos/include/ndk/obtypes.h | 50 + reactos/include/ndk/potypes.h | 92 + reactos/include/ndk/psfuncs.h | 69 + reactos/include/ndk/pstypes.h | 186 ++ reactos/include/ndk/rtlfuncs.h | 956 ++++++ reactos/include/ndk/rtltypes.h | 208 ++ reactos/include/ndk/sefuncs.h | 24 + reactos/include/ndk/setypes.h | 86 + reactos/include/ndk/umtypes.h | 1116 +++++++ reactos/include/ndk/zwfuncs.h | 4075 ++++++++++++++++++++++++++ reactos/include/ndk/zwtypes.h | 983 +++++++ 30 files changed, 9261 insertions(+) create mode 100644 reactos/include/ndk/cctypes.h create mode 100644 reactos/include/ndk/extypes.h create mode 100644 reactos/include/ndk/halfuncs.h create mode 100644 reactos/include/ndk/haltypes.h create mode 100644 reactos/include/ndk/i386/floatsave.h create mode 100644 reactos/include/ndk/i386/segment.h create mode 100644 reactos/include/ndk/inbvfuncs.h create mode 100644 reactos/include/ndk/iofuncs.h create mode 100644 reactos/include/ndk/iotypes.h create mode 100644 reactos/include/ndk/kdfuncs.h create mode 100644 reactos/include/ndk/kdtypes.h create mode 100644 reactos/include/ndk/kefuncs.h create mode 100644 reactos/include/ndk/ketypes.h create mode 100644 reactos/include/ndk/ldrfuncs.h create mode 100644 reactos/include/ndk/ldrtypes.h create mode 100644 reactos/include/ndk/lpctypes.h create mode 100644 reactos/include/ndk/mmtypes.h create mode 100644 reactos/include/ndk/ntndk.h create mode 100644 reactos/include/ndk/obfuncs.h create mode 100644 reactos/include/ndk/obtypes.h create mode 100644 reactos/include/ndk/potypes.h create mode 100644 reactos/include/ndk/psfuncs.h create mode 100644 reactos/include/ndk/pstypes.h create mode 100644 reactos/include/ndk/rtlfuncs.h create mode 100644 reactos/include/ndk/rtltypes.h create mode 100644 reactos/include/ndk/sefuncs.h create mode 100644 reactos/include/ndk/setypes.h create mode 100644 reactos/include/ndk/umtypes.h create mode 100644 reactos/include/ndk/zwfuncs.h create mode 100644 reactos/include/ndk/zwtypes.h diff --git a/reactos/include/ndk/cctypes.h b/reactos/include/ndk/cctypes.h new file mode 100644 index 00000000000..283bd17b822 --- /dev/null +++ b/reactos/include/ndk/cctypes.h @@ -0,0 +1,25 @@ +/* + * PROJECT: ReactOS Native Headers + * FILE: include/ndk/cctypes.h + * PURPOSE: Definitions for exported Cache Manager Types not defined in DDK/IFS + * PROGRAMMER: Alex Ionescu (alex@relsoft.net) + * UPDATE HISTORY: + * Created 06/10/04 + */ + +#ifndef _CCTYPES_H +#define _CCTYPES_H + +/* DEPENDENCIES **************************************************************/ + +/* EXPORTED DATA *************************************************************/ +extern ULONG NTOSAPI CcFastMdlReadWait; +extern ULONG NTOSAPI CcFastReadNotPossible; +extern ULONG NTOSAPI CcFastReadWait; + +/* ENUMERATIONS **************************************************************/ + +/* TYPES *********************************************************************/ + +#endif + diff --git a/reactos/include/ndk/extypes.h b/reactos/include/ndk/extypes.h new file mode 100644 index 00000000000..145ad62cfdf --- /dev/null +++ b/reactos/include/ndk/extypes.h @@ -0,0 +1,49 @@ +/* + * PROJECT: ReactOS Native Headers + * FILE: include/ndk/extypes.h + * PURPOSE: Definitions for exported Executive Functions not defined in DDK/IFS + * PROGRAMMER: Alex Ionescu (alex@relsoft.net) + * UPDATE HISTORY: + * Created 06/10/04 + */ + +#ifndef _EXTYPES_H +#define _EXTYPES_H + +/* DEPENDENCIES **************************************************************/ + +/* EXPORTED DATA *************************************************************/ +extern POBJECT_TYPE NTOSAPI ExIoCompletionType; + +/* CONSTANTS *****************************************************************/ + +/* ENUMERATIONS **************************************************************/ + +typedef enum _HARDERROR_RESPONSE_OPTION +{ + OptionAbortRetryIgnore, + OptionOk, + OptionOkCancel, + OptionRetryCancel, + OptionYesNo, + OptionYesNoCancel, + OptionShutdownSystem +} HARDERROR_RESPONSE_OPTION, *PHARDERROR_RESPONSE_OPTION; + +typedef enum _HARDERROR_RESPONSE +{ + ResponseReturnToCaller, + ResponseNotHandled, + ResponseAbort, + ResponseCancel, + ResponseIgnore, + ResponseNo, + ResponseOk, + ResponseRetry, + ResponseYes +} HARDERROR_RESPONSE, *PHARDERROR_RESPONSE; + +/* TYPES *********************************************************************/ + +#endif + diff --git a/reactos/include/ndk/halfuncs.h b/reactos/include/ndk/halfuncs.h new file mode 100644 index 00000000000..435dfaf472c --- /dev/null +++ b/reactos/include/ndk/halfuncs.h @@ -0,0 +1,149 @@ +/* + * PROJECT: ReactOS Native Headers + * FILE: include/ndk/halfuncs.h + * PURPOSE: Prototypes for exported HAL Functions not defined in DDK/IFS + * PROGRAMMER: Alex Ionescu (alex@relsoft.net) + * UPDATE HISTORY: + * Created 06/10/04 + */ +#ifndef _HALFUNCS_H +#define _HALFUNCS_H + +/* DEPENDENCIES **************************************************************/ +#include "haltypes.h" + +/* FUNCTION TYPES ************************************************************/ + +/* PROTOTYPES ****************************************************************/ + +VOID +STDCALL +HalAcquireDisplayOwnership( + IN PHAL_RESET_DISPLAY_PARAMETERS ResetDisplayParameters +); + +BOOLEAN +STDCALL +HalAllProcessorsStarted(VOID); + +NTSTATUS +STDCALL +HalAllocateAdapterChannel( + IN PADAPTER_OBJECT AdapterObject, + IN PWAIT_CONTEXT_BLOCK WaitContextBlock, + IN ULONG NumberOfMapRegisters, + IN PDRIVER_CONTROL ExecutionRoutine +); + +BOOLEAN +STDCALL +HalBeginSystemInterrupt( + ULONG Vector, + KIRQL Irql, + PKIRQL OldIrql +); + +BOOLEAN +STDCALL +HalDisableSystemInterrupt( + ULONG Vector, + KIRQL Irql +); + +VOID +STDCALL +HalDisplayString ( + IN PCHAR String +); + +BOOLEAN +STDCALL +HalEnableSystemInterrupt( + ULONG Vector, + KIRQL Irql, + KINTERRUPT_MODE InterruptMode +); + +VOID +STDCALL +HalEndSystemInterrupt( + KIRQL Irql, + ULONG Vector +); + +BOOLEAN +STDCALL +HalGetEnvironmentVariable( + PCH Name, + PCH Value, + USHORT ValueLength +); + +VOID +STDCALL +HalInitializeProcessor( + ULONG ProcessorNumber, + PVOID ProcessorStack +); + +BOOLEAN +STDCALL +HalInitSystem( + ULONG BootPhase, + PLOADER_PARAMETER_BLOCK LoaderBlock +); + +BOOLEAN +STDCALL +HalQueryDisplayOwnership(VOID); + +VOID +STDCALL +HalReportResourceUsage(VOID); + +VOID +FASTCALL +HalRequestSoftwareInterrupt( + KIRQL SoftwareInterruptRequested +); + +VOID +STDCALL +HalReleaseDisplayOwnership(VOID); + +VOID +STDCALL +HalReturnToFirmware( + FIRMWARE_ENTRY Action +); + +VOID +STDCALL +HalRequestIpi( + ULONG Unknown +); + +BOOLEAN +STDCALL +HalSetEnvironmentVariable( + IN PCH Name, + IN PCH Value +); + +BOOLEAN +STDCALL +HalStartNextProcessor( + ULONG Unknown1, + ULONG Unknown2 +); + +VOID +STDCALL +IoAssignDriveLetters( + struct _LOADER_PARAMETER_BLOCK *LoaderBlock, + PSTRING NtDeviceName, + PUCHAR NtSystemPath, + PSTRING NtSystemPathString +); + +#endif diff --git a/reactos/include/ndk/haltypes.h b/reactos/include/ndk/haltypes.h new file mode 100644 index 00000000000..220a4a8ad77 --- /dev/null +++ b/reactos/include/ndk/haltypes.h @@ -0,0 +1,72 @@ +/* + * PROJECT: ReactOS Native Headers + * FILE: include/ndk/haltypes.h + * PURPOSE: Definitions for HAL/BLDR types not defined in DDK/IFS + * PROGRAMMER: Alex Ionescu (alex@relsoft.net) + * UPDATE HISTORY: + * Created 06/10/04 + */ +#ifndef _HALTYPES_H +#define _HALTYPES_H + +/* DEPENDENCIES **************************************************************/ +#include + +/* EXPORTED DATA *************************************************************/ +extern ULONG NTOSAPI KdComPortInUse; + +/* CONSTANTS *****************************************************************/ + +/* Boot Flags */ +#define MB_FLAGS_MEM_INFO (0x1) +#define MB_FLAGS_BOOT_DEVICE (0x2) +#define MB_FLAGS_COMMAND_LINE (0x4) +#define MB_FLAGS_MODULE_INFO (0x8) +#define MB_FLAGS_AOUT_SYMS (0x10) +#define MB_FLAGS_ELF_SYMS (0x20) +#define MB_FLAGS_MMAP_INFO (0x40) +#define MB_FLAGS_DRIVES_INFO (0x80) +#define MB_FLAGS_CONFIG_TABLE (0x100) +#define MB_FLAGS_BOOT_LOADER_NAME (0x200) +#define MB_FLAGS_APM_TABLE (0x400) +#define MB_FLAGS_GRAPHICS_TABLE (0x800) + +/* ENUMERATIONS **************************************************************/ + +/* TYPES *********************************************************************/ + +typedef struct _LOADER_MODULE +{ + ULONG ModStart; + ULONG ModEnd; + ULONG String; + ULONG Reserved; +} LOADER_MODULE, *PLOADER_MODULE; + +typedef struct _LOADER_PARAMETER_BLOCK +{ + ULONG Flags; + ULONG MemLower; + ULONG MemHigher; + ULONG BootDevice; + ULONG CommandLine; + ULONG ModsCount; + ULONG ModsAddr; + UCHAR Syms[12]; + ULONG MmapLength; + ULONG MmapAddr; + ULONG DrivesCount; + ULONG DrivesAddr; + ULONG ConfigTable; + ULONG BootLoaderName; +} LOADER_PARAMETER_BLOCK, *PLOADER_PARAMETER_BLOCK; + +typedef struct _DRIVE_LAYOUT_INFORMATION +{ + DWORD PartitionCount; + DWORD Signature; + PARTITION_INFORMATION PartitionEntry[1]; +} DRIVE_LAYOUT_INFORMATION; + +#endif + diff --git a/reactos/include/ndk/i386/floatsave.h b/reactos/include/ndk/i386/floatsave.h new file mode 100644 index 00000000000..878c22eaa92 --- /dev/null +++ b/reactos/include/ndk/i386/floatsave.h @@ -0,0 +1,11 @@ +#ifndef __NAPI_I386_FLOATSAVE_H__ +#define __NAPI_I386_FLOATSAVE_H__ + +#define FLOAT_SAVE_CONTROL (0xFFFF037F) +#define FLOAT_SAVE_STATUS (0xFFFF0000) +#define FLOAT_SAVE_TAG (0xFFFFFFFF) +#define FLOAT_SAVE_DATA (0xFFFF0000) + +#endif /* __NAPI_I386_FLOATSAVE_H__ */ + +/* EOF */ diff --git a/reactos/include/ndk/i386/segment.h b/reactos/include/ndk/i386/segment.h new file mode 100644 index 00000000000..0c460a851d8 --- /dev/null +++ b/reactos/include/ndk/i386/segment.h @@ -0,0 +1,12 @@ +#ifndef _ASM_SEGMENT_H +#define _ASM_SEGMENT_H + +#define KERNEL_CS (0x8) +#define KERNEL_DS (0x10) +#define USER_CS (0x18 + 0x3) +#define USER_DS (0x20 + 0x3) +#define RESERVED_FOR_TSS (0x28) +#define PCR_SELECTOR (0x30) +#define TEB_SELECTOR (0x38 + 0x3) + +#endif /* _ASM_SEGMENT_H */ diff --git a/reactos/include/ndk/inbvfuncs.h b/reactos/include/ndk/inbvfuncs.h new file mode 100644 index 00000000000..925b0e2c75d --- /dev/null +++ b/reactos/include/ndk/inbvfuncs.h @@ -0,0 +1,105 @@ +/* + * PROJECT: ReactOS Native Headers + * FILE: include/ndk/haltypes.h + * PURPOSE: Prototypes for Boot Video Driver not defined in DDK/IFS + * PROGRAMMER: Alex Ionescu (alex@relsoft.net) + * UPDATE HISTORY: + * Created 06/10/04 + */ +#ifndef _INBVFUNCS_H +#define _INBVFUNCS_H + +/* DEPENDENCIES **************************************************************/ + +/* FUNCTION TYPES ************************************************************/ + +/* PROTOTYPES ****************************************************************/ + +VOID +STDCALL +InbvAcquireDisplayOwnership(VOID); + +BOOLEAN +STDCALL +InbvCheckDisplayOwnership(VOID); + +BOOLEAN +STDCALL +InbvDisplayString( + IN PCHAR String +); + +VOID +STDCALL +InbvEnableBootDriver( + IN BOOLEAN Enable +); + +BOOLEAN +STDCALL +InbvEnableDisplayString( + IN BOOLEAN Enable +); + +VOID +STDCALL +InbvInstallDisplayStringFilter( + IN PVOID Unknown +); + +BOOLEAN +STDCALL +InbvIsBootDriverInstalled(VOID); + +VOID +STDCALL +InbvNotifyDisplayOwnershipLost( + IN PVOID Callback +); + +BOOLEAN +STDCALL +InbvResetDisplay(VOID); + +VOID +STDCALL +InbvSetScrollRegion( + IN ULONG Left, + IN ULONG Top, + IN ULONG Width, + IN ULONG Height +); + +VOID +STDCALL +InbvSetTextColor( + IN ULONG Color +); + +VOID +STDCALL +InbvSolidColorFill( + IN ULONG Left, + IN ULONG Top, + IN ULONG Width, + IN ULONG Height, + IN ULONG Color +); + +VOID +STDCALL +VidCleanUp(VOID); + +BOOLEAN +STDCALL +VidInitialize(VOID); + +BOOLEAN +STDCALL +VidResetDisplay(VOID); + +BOOLEAN +STDCALL +VidIsBootDriverInstalled(VOID); + +#endif diff --git a/reactos/include/ndk/iofuncs.h b/reactos/include/ndk/iofuncs.h new file mode 100644 index 00000000000..d9a45d28cbe --- /dev/null +++ b/reactos/include/ndk/iofuncs.h @@ -0,0 +1,20 @@ +/* + * PROJECT: ReactOS Native Headers + * FILE: include/ndk/iofuncs.h + * PURPOSE: Definitions for exported I/O Manager Functions not defined in DDK/IFS + * PROGRAMMER: Alex Ionescu (alex@relsoft.net) + * UPDATE HISTORY: + * Created 06/10/04 + */ + +#ifndef _IOFUNCS_H +#define _IOFUNCS_H + +/* DEPENDENCIES **************************************************************/ + +/* FUNCTION TYPES ************************************************************/ + +/* PROTOTYPES ****************************************************************/ + +#endif + diff --git a/reactos/include/ndk/iotypes.h b/reactos/include/ndk/iotypes.h new file mode 100644 index 00000000000..42e4b76f849 --- /dev/null +++ b/reactos/include/ndk/iotypes.h @@ -0,0 +1,68 @@ +/* + * PROJECT: ReactOS Native Headers + * FILE: include/ndk/iotypes.h + * PURPOSE: Definitions for exported I/O Manager Types not defined in DDK/IFS + * PROGRAMMER: Alex Ionescu (alex@relsoft.net) + * UPDATE HISTORY: + * Created 06/10/04 + */ + +#ifndef _IOTYPES_H +#define _IOTYPES_H + +/* DEPENDENCIES **************************************************************/ + +/* EXPORTED DATA *************************************************************/ +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; +extern ULONG NTOSAPI IoReadOperationCount; +extern ULONGLONG NTOSAPI IoReadTransferCount; +extern ULONG NTOSAPI IoWriteOperationCount; +extern ULONGLONG NTOSAPI IoWriteTransferCount; +extern KSPIN_LOCK NTOSAPI IoStatisticsLock; + +/* CONSTANTS *****************************************************************/ + +/* I/O Types */ +#define IO_TYPE_DRIVER 4L +#define IO_TYPE_TIMER 9L + +/* ENUMERATIONS **************************************************************/ + +/* TYPES *********************************************************************/ + +typedef struct _MAILSLOT_CREATE_PARAMETERS +{ + ULONG MailslotQuota; + ULONG MaximumMessageSize; + LARGE_INTEGER ReadTimeout; + BOOLEAN TimeoutSpecified; +} MAILSLOT_CREATE_PARAMETERS, *PMAILSLOT_CREATE_PARAMETERS; + +typedef struct _NAMED_PIPE_CREATE_PARAMETERS +{ + ULONG NamedPipeType; + ULONG ReadMode; + ULONG CompletionMode; + ULONG MaximumInstances; + ULONG InboundQuota; + ULONG OutboundQuota; + LARGE_INTEGER DefaultTimeout; + BOOLEAN TimeoutSpecified; +} NAMED_PIPE_CREATE_PARAMETERS, *PNAMED_PIPE_CREATE_PARAMETERS; + +typedef struct _IO_TIMER +{ + USHORT Type; + USHORT TimerEnabled; + LIST_ENTRY IoTimerList; + PIO_TIMER_ROUTINE TimerRoutine; + PVOID Context; + PDEVICE_OBJECT DeviceObject; +} IO_TIMER, *PIO_TIMER; + +#endif + diff --git a/reactos/include/ndk/kdfuncs.h b/reactos/include/ndk/kdfuncs.h new file mode 100644 index 00000000000..187e53fbcfe --- /dev/null +++ b/reactos/include/ndk/kdfuncs.h @@ -0,0 +1,94 @@ +/* + * PROJECT: ReactOS Native Headers + * FILE: include/ndk/kdfuncs.h + * PURPOSE: Prototypes for Kernel Debugger Functions not defined in DDK/IFS + * PROGRAMMER: Alex Ionescu (alex@relsoft.net) + * UPDATE HISTORY: + * Created 06/10/04 + */ +#ifndef _KDFUNCS_H +#define _KDFUNCS_H + +/* DEPENDENCIES **************************************************************/ +#include "kdtypes.h" + +/* FUNCTION TYPES ************************************************************/ + +/* PROTOTYPES ****************************************************************/ + +BYTE +STDCALL +KdPollBreakIn(VOID); + +BOOLEAN +STDCALL +KdPortInitialize( + PKD_PORT_INFORMATION PortInformation, + DWORD Unknown1, + DWORD Unknown2 +); + +BOOLEAN +STDCALL +KdPortInitializeEx( + PKD_PORT_INFORMATION PortInformation, + DWORD Unknown1, + DWORD Unknown2 +); + +BOOLEAN +STDCALL +KdPortGetByte( + PUCHAR ByteRecieved +); + +BOOLEAN +STDCALL +KdPortGetByteEx( + PKD_PORT_INFORMATION PortInformation, + PUCHAR ByteRecieved +); + +BOOLEAN +STDCALL +KdPortPollByte( + PUCHAR ByteRecieved +); + +BOOLEAN +STDCALL +KdPortPollByteEx( + PKD_PORT_INFORMATION PortInformation, + PUCHAR ByteRecieved +); + +VOID +STDCALL +KdPortPutByte( + UCHAR ByteToSend +); + +VOID +STDCALL +KdPortPutByteEx( + PKD_PORT_INFORMATION PortInformation, + UCHAR ByteToSend +); + +VOID +STDCALL +KdPortRestore(VOID); + +VOID +STDCALL +KdPortSave (VOID); + +BOOLEAN +STDCALL +KdPortDisableInterrupts(VOID); + +BOOLEAN +STDCALL +KdPortEnableInterrupts(VOID); + +#endif diff --git a/reactos/include/ndk/kdtypes.h b/reactos/include/ndk/kdtypes.h new file mode 100644 index 00000000000..65a6d8fa6cf --- /dev/null +++ b/reactos/include/ndk/kdtypes.h @@ -0,0 +1,29 @@ +/* + * PROJECT: ReactOS Native Headers + * FILE: include/ndk/kdtypes.h + * PURPOSE: Definitions for Kernel Debugger Types not defined in DDK/IFS + * PROGRAMMER: Alex Ionescu (alex@relsoft.net) + * UPDATE HISTORY: + * Created 06/10/04 + */ +#ifndef _KDTYPES_H +#define _KDTYPES_H + +/* DEPENDENCIES **************************************************************/ + +/* EXPORTED DATA *************************************************************/ + +/* CONSTANTS *****************************************************************/ + +/* ENUMERATIONS **************************************************************/ + +/* TYPES *********************************************************************/ + +typedef struct _KD_PORT_INFORMATION +{ + ULONG ComPort; + ULONG BaudRate; + ULONG BaseAddress; +} KD_PORT_INFORMATION, *PKD_PORT_INFORMATION; + +#endif diff --git a/reactos/include/ndk/kefuncs.h b/reactos/include/ndk/kefuncs.h new file mode 100644 index 00000000000..384e4730146 --- /dev/null +++ b/reactos/include/ndk/kefuncs.h @@ -0,0 +1,280 @@ +/* + * PROJECT: ReactOS Native Headers + * FILE: include/ndk/kefuncs.h + * PURPOSE: Prototypes for Kernel Functions not defined in DDK/IFS + * PROGRAMMER: Alex Ionescu (alex@relsoft.net) + * UPDATE HISTORY: + * Created 06/10/04 + */ +#ifndef _KEFUNCS_H +#define _KEFUNCS_H + +/* DEPENDENCIES **************************************************************/ +#include "ketypes.h" + +/* FUNCTION TYPES ************************************************************/ + +/* PROTOTYPES ****************************************************************/ + +VOID +STDCALL +KeInitializeApc( + IN PKAPC Apc, + IN PKTHREAD Thread, + IN KAPC_ENVIRONMENT TargetEnvironment, + IN PKKERNEL_ROUTINE KernelRoutine, + IN PKRUNDOWN_ROUTINE RundownRoutine OPTIONAL, + IN PKNORMAL_ROUTINE NormalRoutine, + IN KPROCESSOR_MODE Mode, + IN PVOID Context +); + +VOID +STDCALL +KeEnterKernelDebugger(VOID); + +VOID +FASTCALL +KiAcquireSpinLock( + PKSPIN_LOCK SpinLock +); + +VOID +FASTCALL +KiReleaseSpinLock( + PKSPIN_LOCK SpinLock +); + +VOID +STDCALL +KiDeliverApc( + IN KPROCESSOR_MODE PreviousMode, + IN PVOID Reserved, + IN PKTRAP_FRAME TrapFrame +); + +VOID +STDCALL +KiDispatchInterrupt(VOID); + + +BOOLEAN +STDCALL +KeAreApcsDisabled( + VOID + ); + +VOID +STDCALL +KeFlushQueuedDpcs( + VOID + ); + +ULONG +STDCALL +KeGetRecommendedSharedDataAlignment( + VOID + ); + +ULONG +STDCALL +KeQueryRuntimeThread( + IN PKTHREAD Thread, + OUT PULONG UserTime + ); + +BOOLEAN +STDCALL +KeSetKernelStackSwapEnable( + IN BOOLEAN Enable + ); + +BOOLEAN +STDCALL +KeDeregisterBugCheckReasonCallback( + IN PKBUGCHECK_REASON_CALLBACK_RECORD CallbackRecord + ); + +BOOLEAN +STDCALL +KeRegisterBugCheckReasonCallback( + IN PKBUGCHECK_REASON_CALLBACK_RECORD CallbackRecord, + IN PKBUGCHECK_REASON_CALLBACK_ROUTINE CallbackRoutine, + IN KBUGCHECK_CALLBACK_REASON Reason, + IN PUCHAR Component + ); + +VOID +STDCALL +KeTerminateThread( + IN KPRIORITY Increment +); + +BOOLEAN +STDCALL +KeIsExecutingDpc( + VOID +); + +VOID +STDCALL +KeSetEventBoostPriority( + IN PKEVENT Event, + IN PKTHREAD *Thread OPTIONAL +); + +PVOID +STDCALL +KeFindConfigurationEntry( + IN PVOID Unknown, + IN ULONG Class, + IN CONFIGURATION_TYPE Type, + IN PULONG RegKey +); + +PVOID +STDCALL +KeFindConfigurationNextEntry( + IN PVOID Unknown, + IN ULONG Class, + IN CONFIGURATION_TYPE Type, + IN PULONG RegKey, + IN PVOID *NextLink +); + +VOID +STDCALL +KeFlushEntireTb( + IN BOOLEAN Unknown, + IN BOOLEAN CurrentCpuOnly +); + +VOID +STDCALL +KeRevertToUserAffinityThread( + VOID +); + +VOID +STDCALL +KiCoprocessorError( + VOID +); + +VOID +STDCALL +KiUnexpectedInterrupt( + VOID +); + +VOID +STDCALL +KeSetDmaIoCoherency( + IN ULONG Coherency +); + +VOID +STDCALL +KeSetProfileIrql( + IN KIRQL ProfileIrql +); + +NTSTATUS +STDCALL +KeSetAffinityThread( + PKTHREAD Thread, + KAFFINITY Affinity +); + +VOID +STDCALL +KeSetSystemAffinityThread( + IN KAFFINITY Affinity +); + +NTSTATUS +STDCALL +KeUserModeCallback( + IN ULONG FunctionID, + IN PVOID InputBuffer, + IN ULONG InputLength, + OUT PVOID *OutputBuffer, + OUT PULONG OutputLength +); + +VOID +STDCALL +KeSetTimeIncrement( + IN ULONG MaxIncrement, + IN ULONG MinIncrement +); + +VOID +STDCALL +KeInitializeInterrupt( + PKINTERRUPT InterruptObject, + PKSERVICE_ROUTINE ServiceRoutine, + PVOID ServiceContext, + PKSPIN_LOCK SpinLock, + ULONG Vector, + KIRQL Irql, + KIRQL SynchronizeIrql, + KINTERRUPT_MODE InterruptMode, + BOOLEAN ShareVector, + CHAR ProcessorNumber, + BOOLEAN FloatingSave +); + +BOOLEAN +STDCALL +KeConnectInterrupt( + PKINTERRUPT InterruptObject +); + +VOID +STDCALL +KeDisconnectInterrupt( + PKINTERRUPT InterruptObject +); + +struct _KPROCESS* +KeGetCurrentProcess( + VOID +); + +VOID +KeSetGdtSelector( + ULONG Entry, + ULONG Value1, + ULONG Value2 +); + +LONG +STDCALL +KeReadStateMutant( + IN PKMUTANT Mutant +); + +VOID +STDCALL +KeInitializeMutant( + IN PKMUTANT Mutant, + IN BOOLEAN InitialOwner +); + +LONG +STDCALL +KeReleaseMutant( + IN PKMUTANT Mutant, + IN KPRIORITY Increment, + IN BOOLEAN Abandon, + IN BOOLEAN Wait +); + +NTSTATUS +STDCALL +KeRaiseUserException( + IN NTSTATUS ExceptionCode + ); + +#endif diff --git a/reactos/include/ndk/ketypes.h b/reactos/include/ndk/ketypes.h new file mode 100644 index 00000000000..bf159f3230c --- /dev/null +++ b/reactos/include/ndk/ketypes.h @@ -0,0 +1,129 @@ +/* + * PROJECT: ReactOS Native Headers + * FILE: include/ndk/ketypes.h + * PURPOSE: Definitions for Kernel Types not defined in DDK/IFS + * PROGRAMMER: Alex Ionescu (alex@relsoft.net) + * UPDATE HISTORY: + * Created 06/10/04 + */ +#ifndef _KETYPES_H +#define _KETYPES_H + +/* DEPENDENCIES **************************************************************/ +#include "haltypes.h" + +/* EXPORTED DATA *************************************************************/ +extern CHAR NTOSAPI KeNumberProcessors; +extern LOADER_PARAMETER_BLOCK NTOSAPI KeLoaderBlock; +extern ULONG NTOSAPI KeDcacheFlushCount; +extern ULONG NTOSAPI KeIcacheFlushCount; +extern KAFFINITY NTOSAPI KeActiveProcessors; +extern ULONG NTOSAPI KiDmaIoCoherency; /* RISC Architectures only */ +extern ULONG NTOSAPI KeMaximumIncrement; +extern ULONG NTOSAPI KeMinimumIncrement; +extern SSDT_ENTRY NTOSAPI KeServiceDescriptorTable[SSDT_MAX_ENTRIES]; +extern SSDT_ENTRY NTOSAPI KeServiceDescriptorTableShadow[SSDT_MAX_ENTRIES]; + +/* CONSTANTS *****************************************************************/ +#define SSDT_MAX_ENTRIES 4 +#define PROCESSOR_FEATURE_MAX 64 + +/* ENUMERATIONS **************************************************************/ + +/* TYPES *********************************************************************/ + +typedef enum _KAPC_ENVIRONMENT +{ + OriginalApcEnvironment, + AttachedApcEnvironment, + CurrentApcEnvironment +} KAPC_ENVIRONMENT; + +typedef struct _KDPC_DATA +{ + LIST_ENTRY DpcListHead; + ULONG DpcLock; + ULONG DpcQueueDepth; + ULONG DpcCount; +} KDPC_DATA, *PKDPC_DATA; + +typedef struct _KTRAP_FRAME +{ + PVOID DebugEbp; + PVOID DebugEip; + PVOID DebugArgMark; + PVOID DebugPointer; + PVOID TempCs; + PVOID TempEip; + ULONG Dr0; + ULONG Dr1; + ULONG Dr2; + ULONG Dr3; + ULONG Dr6; + ULONG Dr7; + USHORT Gs; + USHORT Reserved1; + USHORT Es; + USHORT Reserved2; + USHORT Ds; + USHORT Reserved3; + ULONG Edx; + ULONG Ecx; + ULONG Eax; + ULONG PreviousMode; + PVOID ExceptionList; + USHORT Fs; + USHORT Reserved4; + ULONG Edi; + ULONG Esi; + ULONG Ebx; + ULONG Ebp; + ULONG ErrorCode; + ULONG Eip; + ULONG Cs; + ULONG Eflags; + ULONG Esp; + USHORT Ss; + USHORT Reserved5; + USHORT V86_Es; + USHORT Reserved6; + USHORT V86_Ds; + USHORT Reserved7; + USHORT V86_Fs; + USHORT Reserved8; + USHORT V86_Gs; + USHORT Reserved9; +} KTRAP_FRAME, *PKTRAP_FRAME; + +/* i386 Doesn't have Exception Frames */ +typedef struct _KEXCEPTION_FRAME { + +} KEXCEPTION_FRAME, *PKEXCEPTION_FRAME; + +typedef struct _KINTERRUPT +{ + CSHORT Type; + CSHORT Size; + LIST_ENTRY InterruptListEntry; + PKSERVICE_ROUTINE ServiceRoutine; + PVOID ServiceContext; + KSPIN_LOCK SpinLock; + ULONG TickCount; + PKSPIN_LOCK ActualLock; + PVOID DispatchAddress; + ULONG Vector; + KIRQL Irql; + KIRQL SynchronizeIrql; + BOOLEAN FloatingSave; + BOOLEAN Connected; + CHAR Number; + UCHAR ShareVector; + KINTERRUPT_MODE Mode; + ULONG ServiceCount; + ULONG DispatchCount; + ULONG DispatchCode[106]; +} KINTERRUPT, *PKINTERRUPT; + +/* FIXME: Add KOBJECTS Here */ + +#endif diff --git a/reactos/include/ndk/ldrfuncs.h b/reactos/include/ndk/ldrfuncs.h new file mode 100644 index 00000000000..d74d249d9e2 --- /dev/null +++ b/reactos/include/ndk/ldrfuncs.h @@ -0,0 +1,37 @@ +/* + * PROJECT: ReactOS Native Headers + * FILE: include/ndk/ldrfuncs.h + * PURPOSE: Defintions for Loader Functions not defined in DDK/IFS + * PROGRAMMER: Alex Ionescu (alex@relsoft.net) + * UPDATE HISTORY: + * Created 06/10/04 + */ +#ifndef _LDRFUNCS_H +#define _LDRFUNCS_H + +/* DEPENDENCIES **************************************************************/ +#include "ldrtypes.h" + +/* FUNCTION TYPES ************************************************************/ + +/* PROTOTYPES ****************************************************************/ + +NTSTATUS +STDCALL +LdrAccessResource( + IN PVOID BaseAddress, + IN PIMAGE_RESOURCE_DATA_ENTRY ResourceDataEntry, + OUT PVOID *Resource OPTIONAL, + OUT PULONG Size OPTIONAL +); + +NTSTATUS +STDCALL +LdrFindResource_U( + IN PVOID BaseAddress, + IN PLDR_RESOURCE_INFO ResourceInfo, + IN ULONG Level, + OUT PIMAGE_RESOURCE_DATA_ENTRY *ResourceDataEntry +); + +#endif diff --git a/reactos/include/ndk/ldrtypes.h b/reactos/include/ndk/ldrtypes.h new file mode 100644 index 00000000000..cac405763a7 --- /dev/null +++ b/reactos/include/ndk/ldrtypes.h @@ -0,0 +1,76 @@ +/* + * PROJECT: ReactOS Native Headers + * FILE: include/ndk/ldrtypes.h + * PURPOSE: Definitions for Loader Types not defined in DDK/IFS + * PROGRAMMER: Alex Ionescu (alex@relsoft.net) + * UPDATE HISTORY: + * Created 06/10/04 + */ +#ifndef _LDRTYPES_H +#define _LDRTYPES_H + +/* DEPENDENCIES **************************************************************/ + +/* EXPORTED DATA *************************************************************/ + +/* CONSTANTS *****************************************************************/ +#define IMAGE_SCN_TYPE_REG 0x00000000 +#define IMAGE_SCN_TYPE_DSECT 0x00000001 +#define IMAGE_SCN_TYPE_NOLOAD 0x00000002 +#define IMAGE_SCN_TYPE_GROUP 0x00000004 +#define IMAGE_SCN_TYPE_COPY 0x00000010 + +#define IMAGE_FILE_MACHINE_ARM 0x000001C0 +#define IMAGE_FILE_MACHINE_IA64 0x00000200 +#define IMAGE_FILE_MACHINE_ALPHA64 0x00000284 +#define IMAGE_FILE_MACHINE_AMD64 0x00008664 +#define IMAGE_FILE_MACHINE_M32R 0x00009041 +#define IMAGE_FILE_MACHINE_AXP64 IMAGE_FILE_MACHINE_ALPHA64 + +#define RESOURCE_TYPE_LEVEL 0 +#define RESOURCE_NAME_LEVEL 1 +#define RESOURCE_LANGUAGE_LEVEL 2 +#define RESOURCE_DATA_LEVEL 3 + +/* ENUMERATIONS **************************************************************/ + +/* TYPES *********************************************************************/ +/* FIXME: Update with _LDR_DATA_TABLE_ENTRY and LDR_ flags */ +typedef struct _PEB_LDR_DATA +{ + ULONG Length; + BOOLEAN Initialized; + PVOID SsHandle; + LIST_ENTRY InLoadOrderModuleList; + LIST_ENTRY InMemoryOrderModuleList; + LIST_ENTRY InInitializationOrderModuleList; + PVOID EntryInProgress; +} PEB_LDR_DATA, *PPEB_LDR_DATA; + +/* FIXME: Update with _LDR_DATA_TABLE_ENTRY and LDR_ flags */ +typedef struct _LDR_MODULE +{ + LIST_ENTRY InLoadOrderModuleList; + LIST_ENTRY InMemoryOrderModuleList; + LIST_ENTRY InInitializationOrderModuleList; + void* BaseAddress; + void* EntryPoint; + ULONG SizeOfImage; + UNICODE_STRING FullDllName; + UNICODE_STRING BaseDllName; + ULONG Flags; + SHORT LoadCount; + SHORT TlsIndex; + HANDLE SectionHandle; + ULONG CheckSum; + ULONG TimeDateStamp; +} LDR_MODULE, *PLDR_MODULE; + +typedef struct _LDR_RESOURCE_INFO +{ + ULONG Type; + ULONG Name; + ULONG Language; +} LDR_RESOURCE_INFO, *PLDR_RESOURCE_INFO; + +#endif diff --git a/reactos/include/ndk/lpctypes.h b/reactos/include/ndk/lpctypes.h new file mode 100644 index 00000000000..54a6dbaf8f5 --- /dev/null +++ b/reactos/include/ndk/lpctypes.h @@ -0,0 +1,78 @@ +/* + * PROJECT: ReactOS Native Headers + * FILE: include/ndk/lpctypes.h + * PURPOSE: Definitions for Local Procedure Call Types not defined in DDK/IFS + * PROGRAMMER: Alex Ionescu (alex@relsoft.net) + * UPDATE HISTORY: + * Created 06/10/04 + */ +#ifndef _LPCTYPES_H +#define _LPCTYPES_H + +/* DEPENDENCIES **************************************************************/ + +/* EXPORTED DATA *************************************************************/ + +/* CONSTANTS *****************************************************************/ +#define LPC_MESSAGE_BASE_SIZE 4 +#define MAX_MESSAGE_DATA (0x130) + +/* ENUMERATIONS **************************************************************/ + +typedef enum _LPC_TYPE +{ + LPC_NEW_MESSAGE, + LPC_REQUEST, + LPC_REPLY, + LPC_DATAGRAM, + LPC_LOST_REPLY, + LPC_PORT_CLOSED, + LPC_CLIENT_DIED, + LPC_EXCEPTION, + LPC_DEBUG_EVENT, + LPC_ERROR_EVENT, + LPC_CONNECTION_REQUEST, + LPC_CONNECTION_REFUSED, + LPC_MAXIMUM +} LPC_TYPE; + +/* TYPES *********************************************************************/ + +/* FIXME: USE REAL DEFINITION */ +typedef struct _LPC_MESSAGE { + USHORT DataSize; + USHORT MessageSize; + USHORT MessageType; + USHORT VirtualRangesOffset; + CLIENT_ID ClientId; + ULONG MessageId; + ULONG SectionSize; +} LPC_MESSAGE, *PLPC_MESSAGE; + +/* FIXME: USE REAL DEFINITION */ +typedef struct _LPC_SECTION_WRITE +{ + ULONG Length; + HANDLE SectionHandle; + ULONG SectionOffset; + ULONG ViewSize; + PVOID ViewBase; + PVOID TargetViewBase; +} LPC_SECTION_WRITE, *PLPC_SECTION_WRITE; + +/* FIXME: USE REAL DEFINITION */ +typedef struct _LPC_SECTION_READ +{ + ULONG Length; + ULONG ViewSize; + PVOID ViewBase; +} LPC_SECTION_READ, *PLPC_SECTION_READ; + +/* FIXME: USE REAL DEFINITION */ +typedef struct _LPC_MAX_MESSAGE +{ + LPC_MESSAGE Header; + BYTE Data[MAX_MESSAGE_DATA]; +} LPC_MAX_MESSAGE, *PLPC_MAX_MESSAGE; + +#endif diff --git a/reactos/include/ndk/mmtypes.h b/reactos/include/ndk/mmtypes.h new file mode 100644 index 00000000000..3bb8e02d31f --- /dev/null +++ b/reactos/include/ndk/mmtypes.h @@ -0,0 +1,37 @@ +/* + * PROJECT: ReactOS Native Headers + * FILE: include/ndk/mmtypes.h + * PURPOSE: Definitions for Memory Manager Types not defined in DDK/IFS + * PROGRAMMER: Alex Ionescu (alex@relsoft.net) + * UPDATE HISTORY: + * Created 06/10/04 + */ +#ifndef _MMTYPES_H +#define _MMTYPES_H + +/* DEPENDENCIES **************************************************************/ + +/* EXPORTED DATA *************************************************************/ + +/* CONSTANTS *****************************************************************/ + +/* ENUMERATIONS **************************************************************/ + +/* TYPES *********************************************************************/ + +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; + ULONG BaseAddrHigh; + ULONG LengthLow; + ULONG LengthHigh; + ULONG Type; +} ADDRESS_RANGE, *PADDRESS_RANGE; + +#endif diff --git a/reactos/include/ndk/ntndk.h b/reactos/include/ndk/ntndk.h new file mode 100644 index 00000000000..e9365e258ed --- /dev/null +++ b/reactos/include/ndk/ntndk.h @@ -0,0 +1,49 @@ +/* + * PROJECT: ReactOS Native Headers + * FILE: include/ndk/ntndk.h + * PURPOSE: Main Native Development Kit Header file to include all others. + * PROGRAMMER: Alex Ionescu (alex@relsoft.net) + * UPDATE HISTORY: + * Created 06/10/04 + */ +#ifndef _NT_NDK_ +#define _NT_NDK_ + +#ifndef NTOS_MODE_USER + /* Kernel-Mode NDK */ + #include "kdtypes.h" /* Kernel Debugger Types */ + #include "kdfuncs.h" /* Kernel Debugger Functions */ + #include "cctypes.h" /* Cache Manager 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 "ldrfuncs.h" /* Loader Functions */ + #include "lpctypes.h" /* Local Procedure Call Types */ + #include "mmtypes.h" /* Memory Manager Types */ + #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 */ +#endif + +/* Shared NDK */ +#include "ldrtypes.h" /* Loader Types */ +#include "pstypes.h" /* Process Manager Types */ +#include "rtltypes.h" /* Runtime Library Types */ +#include "rtlfuncs.h" /* Runtime Library Functions */ +#include "zwtypes.h" /* Native Types */ +#include "zwfuncs.h" /* Native Functions (System Calls) */ +#include "i386/floatsave.h" /* Floating Point Save Area Definitions for i386 */ +#include "i386/segment.h" /* Kernel CPU Segment Definitions for i386 */ + +#endif diff --git a/reactos/include/ndk/obfuncs.h b/reactos/include/ndk/obfuncs.h new file mode 100644 index 00000000000..e583239cd49 --- /dev/null +++ b/reactos/include/ndk/obfuncs.h @@ -0,0 +1,96 @@ +/* + * PROJECT: ReactOS Native Headers + * FILE: include/ndk/obfuncs.h + * PURPOSE: Protoypes for OBject Manager Functions not defined in DDK/IFS + * PROGRAMMER: Alex Ionescu (alex@relsoft.net) + * UPDATE HISTORY: + * Created 06/10/04 + */ +#ifndef _OBFUNCS_H +#define _OBFUNCS_H + +/* DEPENDENCIES **************************************************************/ + +/* FUNCTION TYPES ************************************************************/ + +/* PROTOTYPES ****************************************************************/ + +NTSTATUS +STDCALL +ObCreateObject ( + IN KPROCESSOR_MODE ObjectAttributesAccessMode OPTIONAL, + IN POBJECT_TYPE ObjectType, + IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, + IN KPROCESSOR_MODE AccessMode, + IN OUT PVOID ParseContext OPTIONAL, + IN ULONG ObjectSize, + IN ULONG PagedPoolCharge OPTIONAL, + IN ULONG NonPagedPoolCharge OPTIONAL, + OUT PVOID *Object +); + +ULONG +STDCALL +ObGetObjectPointerCount ( + IN PVOID Object +); + +NTSTATUS +STDCALL +ObInsertObject ( + IN PVOID Object, + IN PACCESS_STATE PassedAccessState OPTIONAL, + IN ACCESS_MASK DesiredAccess, + IN ULONG AdditionalReferences, + OUT PVOID *ReferencedObject OPTIONAL, + OUT PHANDLE Handle +); + +VOID +STDCALL +ObMakeTemporaryObject ( + IN PVOID Object +); + +NTSTATUS +STDCALL +ObOpenObjectByPointer ( + IN PVOID Object, + IN ULONG HandleAttributes, + IN PACCESS_STATE PassedAccessState OPTIONAL, + IN ACCESS_MASK DesiredAccess OPTIONAL, + IN POBJECT_TYPE ObjectType OPTIONAL, + IN KPROCESSOR_MODE AccessMode, + OUT PHANDLE Handle +); + +NTSTATUS +STDCALL +ObQueryNameString ( + IN PVOID Object, + OUT POBJECT_NAME_INFORMATION ObjectNameInfo, + IN ULONG Length, + OUT PULONG ReturnLength +); + +NTSTATUS +STDCALL +ObQueryObjectAuditingByHandle ( + IN HANDLE Handle, + OUT PBOOLEAN GenerateOnClose +); + +NTSTATUS +STDCALL +ObReferenceObjectByName ( + IN PUNICODE_STRING ObjectName, + IN ULONG Attributes, + IN PACCESS_STATE PassedAccessState OPTIONAL, + IN ACCESS_MASK DesiredAccess OPTIONAL, + IN POBJECT_TYPE ObjectType, + IN KPROCESSOR_MODE AccessMode, + IN OUT PVOID ParseContext OPTIONAL, + OUT PVOID *Object +); + +#endif diff --git a/reactos/include/ndk/obtypes.h b/reactos/include/ndk/obtypes.h new file mode 100644 index 00000000000..7ab778230e0 --- /dev/null +++ b/reactos/include/ndk/obtypes.h @@ -0,0 +1,50 @@ +/* + * PROJECT: ReactOS Native Headers + * FILE: include/ndk/obtypes.h + * PURPOSE: Defintions for Object Manager Types not defined in DDK/IFS + * PROGRAMMER: Alex Ionescu (alex@relsoft.net) + * UPDATE HISTORY: + * Created 06/10/04 + */ +#ifndef _OBTYPES_H +#define _OBTYPES_H + +/* DEPENDENCIES **************************************************************/ + +/* EXPORTED DATA *************************************************************/ +extern NTOSAPI POBJECT_TYPE ObDirectoryType; +extern NTOSAPI struct DEVICE_MAP* ObSystemDeviceMap; + +/* CONSTANTS *****************************************************************/ + +/* Values for DosDeviceDriveType */ +#define DOSDEVICE_DRIVE_UNKNOWN 0 +#define DOSDEVICE_DRIVE_CALCULATE 1 +#define DOSDEVICE_DRIVE_REMOVABLE 2 +#define DOSDEVICE_DRIVE_FIXED 3 +#define DOSDEVICE_DRIVE_REMOTE 4 +#define DOSDEVICE_DRIVE_CDROM 5 +#define DOSDEVICE_DRIVE_RAMDISK 6 + +/* ENUMERATIONS **************************************************************/ + +/* TYPES *********************************************************************/ + +typedef struct _OBJECT_BASIC_INFORMATION +{ + ULONG Attributes; + ACCESS_MASK GrantedAccess; + ULONG HandleCount; + ULONG PointerCount; + ULONG PagedPoolUsage; + ULONG NonPagedPoolUsage; + ULONG Reserved[3]; + ULONG NameInformationLength; + ULONG TypeInformationLength; + ULONG SecurityDescriptorLength; + LARGE_INTEGER CreateTime; +} OBJECT_BASIC_INFORMATION, *POBJECT_BASIC_INFORMATION; + +/* FIXME: Add Object Structures Here */ + +#endif diff --git a/reactos/include/ndk/potypes.h b/reactos/include/ndk/potypes.h new file mode 100644 index 00000000000..bbaf5a9b2de --- /dev/null +++ b/reactos/include/ndk/potypes.h @@ -0,0 +1,92 @@ +/* + * PROJECT: ReactOS Native Headers + * FILE: include/ndk/potypes.h + * PURPOSE: Defintions for Power Manager Types not documented in DDK/IFS. + * PROGRAMMER: Alex Ionescu (alex@relsoft.net) + * UPDATE HISTORY: + * Created 06/10/04 + */ +#ifndef _POTYPES_H +#define _POTYPES_H + +/* DEPENDENCIES **************************************************************/ + +/* EXPORTED DATA *************************************************************/ + +/* CONSTANTS *****************************************************************/ + +/* ENUMERATIONS **************************************************************/ + +/* TYPES *********************************************************************/ + +typedef struct _PROCESSOR_IDLE_TIMES +{ + ULONGLONG StartTime; + ULONGLONG EndTime; + ULONG IdleHandlerReserved[4]; +} PROCESSOR_IDLE_TIMES, *PPROCESSOR_IDLE_TIMES; + +typedef struct _PROCESSOR_PERF_STATE +{ + UCHAR PercentFrequency; + UCHAR MinCapacity; + USHORT Power; + UCHAR IncreaseLevel; + UCHAR DecreaseLevel; + USHORT Flags; + ULONG IncreaseTime; + ULONG DecreaseTime; + ULONG IncreaseCount; + ULONG DecreaseCount; + ULONGLONG PerformanceTime; +} PROCESSOR_PERF_STATE, *PPROCESSOR_PERF_STATE; + +typedef struct _PROCESSOR_POWER_STATE +{ + PVOID IdleFunction; + ULONG Idle0KernelTimeLimit; + ULONG Idle0LastTime; + PVOID IdleHandlers; + PVOID IdleState; + ULONG IdleHandlersCount; + ULONGLONG LastCheck; + PROCESSOR_IDLE_TIMES IdleTimes; + ULONG IdleTime1; + ULONG PromotionCheck; + ULONG IdleTime2; + UCHAR CurrentThrottle; + UCHAR ThermalThrottleLimit; + UCHAR CurrentThrottleIndex; + UCHAR ThermalThrottleIndex; + ULONG LastKernelUserTime; + ULONG PerfIdleTime; + ULONG DebugDelta; + ULONG DebugCount; + ULONG LastSysTime; + ULONG TotalIdleStateTime[3]; + ULONG TotalIdleTransitions[3]; + ULONGLONG PreviousC3StateTime; + UCHAR KneeThrottleIndex; + UCHAR ThrottleLimitIndex; + UCHAR PerfStatesCount; + UCHAR ProcessorMinThrottle; + UCHAR ProcessorMaxThrottle; + UCHAR LastBusyPercentage; + UCHAR LastC3Percentage; + UCHAR LastAdjustedBusyPercentage; + ULONG PromotionCount; + ULONG DemotionCount; + ULONG ErrorCount; + ULONG RetryCount; + ULONG Flags; + LARGE_INTEGER PerfCounterFrequency; + ULONG PerfTickCount; + KTIMER PerfTimer; + KDPC PerfDpc; + PROCESSOR_PERF_STATE *PerfStates; + PVOID PerfSetThrottle; + ULONG LastC3KernelUserTime; + ULONG Spare1[1]; +} PROCESSOR_POWER_STATE, *PPROCESSOR_POWER_STATE; + +#endif diff --git a/reactos/include/ndk/psfuncs.h b/reactos/include/ndk/psfuncs.h new file mode 100644 index 00000000000..3d82721c4ea --- /dev/null +++ b/reactos/include/ndk/psfuncs.h @@ -0,0 +1,69 @@ +/* $Id: pstypes.h,v 1.1.2.1 2004/10/25 01:24:07 ion Exp $ + * + * ReactOS Headers + * Copyright (C) 1998-2004 ReactOS Team + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ +/* + * PROJECT: ReactOS Native Headers + * FILE: include/ndk/psfuncs.h + * PURPOSE: Defintions for Process Manager Functions not documented in DDK/IFS. + * PROGRAMMER: Alex Ionescu (alex@relsoft.net) + * UPDATE HISTORY: + * Created 06/10/04 + */ +#ifndef _PSFUNCS_H +#define _PSFUNCS_H + +/* DEPENDENCIES **************************************************************/ + +/* FUNCTION TYPES ************************************************************/ +typedef VOID (STDCALL *PPEBLOCKROUTINE)(PVOID); + +typedef NTSTATUS +(STDCALL *PW32_PROCESS_CALLBACK)( + struct _EPROCESS *Process, + BOOLEAN Create +); + +typedef NTSTATUS +(STDCALL *PW32_THREAD_CALLBACK)( + struct _ETHREAD *Thread, + BOOLEAN Create +); + + +/* PROTOTYPES ****************************************************************/ + +VOID +STDCALL +PsRevertThreadToSelf( + IN struct _ETHREAD* Thread +); + +struct _W32THREAD* +STDCALL +PsGetWin32Thread( + VOID +); + +struct _W32PROCESS* +STDCALL +PsGetWin32Process( + VOID +); + +#endif diff --git a/reactos/include/ndk/pstypes.h b/reactos/include/ndk/pstypes.h new file mode 100644 index 00000000000..e0cafd95ced --- /dev/null +++ b/reactos/include/ndk/pstypes.h @@ -0,0 +1,186 @@ +/* + * PROJECT: ReactOS Native Headers + * FILE: include/ndk/pstypes.h + * PURPOSE: Defintions for Process Manager Types not documented in DDK/IFS. + * PROGRAMMER: Alex Ionescu (alex@relsoft.net) + * UPDATE HISTORY: + * Created 06/10/04 + */ +#ifndef _PSTYPES_H +#define _PSTYPES_H + +/* DEPENDENCIES **************************************************************/ +#include "ldrtypes.h" +#include "rtltypes.h" + +/* EXPORTED DATA *************************************************************/ + +extern NTOSAPI struct _EPROCESS* PsInitialSystemProcess; +extern NTOSAPI POBJECT_TYPE PsProcessType; +extern NTOSAPI POBJECT_TYPE PsThreadType; + +/* CONSTANTS *****************************************************************/ + +/* These are not exposed to drivers normally */ +#ifndef _NTOS_MODE_USER + #define JOB_OBJECT_ASSIGN_PROCESS (1) + #define JOB_OBJECT_SET_ATTRIBUTES (2) + #define JOB_OBJECT_QUERY (4) + #define JOB_OBJECT_TERMINATE (8) + #define JOB_OBJECT_SET_SECURITY_ATTRIBUTES (16) + #define JOB_OBJECT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|31) +#endif + +/* FIXME: This was changed in XP... Ask ThomasW about it */ +#define PROCESS_SET_PORT 0x800 + +#define THREAD_ALERT 0x4 + +#define USER_SHARED_DATA (0x7FFE0000) + +/* ENUMERATIONS **************************************************************/ + +/* TYPES *********************************************************************/ + +struct _ETHREAD; + +typedef struct _CURDIR +{ + UNICODE_STRING DosPath; + PVOID Handle; +} CURDIR, *PCURDIR; + +typedef struct _PEB_FREE_BLOCK +{ + struct _PEB_FREE_BLOCK* Next; + ULONG Size; +} PEB_FREE_BLOCK, *PPEB_FREE_BLOCK; + +typedef struct _PEB +{ + UCHAR InheritedAddressSpace; /* 00h */ + UCHAR ReadImageFileExecOptions; /* 01h */ + UCHAR BeingDebugged; /* 02h */ + UCHAR Spare; /* 03h */ + PVOID Mutant; /* 04h */ + PVOID ImageBaseAddress; /* 08h */ + PPEB_LDR_DATA Ldr; /* 0Ch */ + PRTL_USER_PROCESS_PARAMETERS ProcessParameters; /* 10h */ + PVOID SubSystemData; /* 14h */ + PVOID ProcessHeap; /* 18h */ + PVOID FastPebLock; /* 1Ch */ + PPEBLOCKROUTINE FastPebLockRoutine; /* 20h */ + PPEBLOCKROUTINE FastPebUnlockRoutine; /* 24h */ + ULONG EnvironmentUpdateCount; /* 28h */ + PVOID* KernelCallbackTable; /* 2Ch */ + PVOID EventLogSection; /* 30h */ + PVOID EventLog; /* 34h */ + PPEB_FREE_BLOCK FreeList; /* 38h */ + ULONG TlsExpansionCounter; /* 3Ch */ + PVOID TlsBitmap; /* 40h */ + ULONG TlsBitmapBits[0x2]; /* 44h */ + PVOID ReadOnlySharedMemoryBase; /* 4Ch */ + PVOID ReadOnlySharedMemoryHeap; /* 50h */ + PVOID* ReadOnlyStaticServerData; /* 54h */ + PVOID AnsiCodePageData; /* 58h */ + PVOID OemCodePageData; /* 5Ch */ + PVOID UnicodeCaseTableData; /* 60h */ + ULONG NumberOfProcessors; /* 64h */ + ULONG NtGlobalFlag; /* 68h */ + UCHAR Spare2[0x4]; /* 6Ch */ + LARGE_INTEGER CriticalSectionTimeout; /* 70h */ + ULONG HeapSegmentReserve; /* 78h */ + ULONG HeapSegmentCommit; /* 7Ch */ + ULONG HeapDeCommitTotalFreeThreshold; /* 80h */ + ULONG HeapDeCommitFreeBlockThreshold; /* 84h */ + ULONG NumberOfHeaps; /* 88h */ + ULONG MaximumNumberOfHeaps; /* 8Ch */ + PVOID** ProcessHeaps; /* 90h */ + PVOID GdiSharedHandleTable; /* 94h */ + PVOID ProcessStarterHelper; /* 98h */ + PVOID GdiDCAttributeList; /* 9Ch */ + PVOID LoaderLock; /* A0h */ + ULONG OSMajorVersion; /* A4h */ + ULONG OSMinorVersion; /* A8h */ + USHORT OSBuildNumber; /* ACh */ + UCHAR SPMajorVersion; /* AEh */ + UCHAR SPMinorVersion; /* AFh */ + ULONG OSPlatformId; /* B0h */ + ULONG ImageSubSystem; /* B4h */ + ULONG ImageSubSystemMajorVersion; /* B8h */ + ULONG ImageSubSystemMinorVersion; /* C0h */ + ULONG GdiHandleBuffer[0x22]; /* C4h */ +} PEB; + +typedef struct _GDI_TEB_BATCH +{ + ULONG Offset; + ULONG HDC; + ULONG Buffer[0x136]; +} GDI_TEB_BATCH, *PGDI_TEB_BATCH; + +typedef struct _TEB +{ + NT_TIB Tib; /* 00h */ + PVOID EnvironmentPointer; /* 1Ch */ + CLIENT_ID Cid; /* 20h */ + PVOID ActiveRpcInfo; /* 28h */ + PVOID ThreadLocalStoragePointer; /* 2Ch */ + PPEB Peb; /* 30h */ + ULONG LastErrorValue; /* 34h */ + ULONG CountOfOwnedCriticalSections; /* 38h */ + PVOID CsrClientThread; /* 3Ch */ + struct _W32THREAD* Win32ThreadInfo; /* 40h */ + ULONG Win32ClientInfo[0x1F]; /* 44h */ + PVOID WOW32Reserved; /* C0h */ + LCID CurrentLocale; /* C4h */ + ULONG FpSoftwareStatusRegister; /* C8h */ + PVOID SystemReserved1[0x36]; /* CCh */ + PVOID Spare1; /* 1A4h */ + LONG ExceptionCode; /* 1A8h */ + UCHAR SpareBytes1[0x28]; /* 1ACh */ + PVOID SystemReserved2[0xA]; /* 1D4h */ + GDI_TEB_BATCH GdiTebBatch; /* 1FCh */ + ULONG gdiRgn; /* 6DCh */ + ULONG gdiPen; /* 6E0h */ + ULONG gdiBrush; /* 6E4h */ + CLIENT_ID RealClientId; /* 6E8h */ + PVOID GdiCachedProcessHandle; /* 6F0h */ + ULONG GdiClientPID; /* 6F4h */ + ULONG GdiClientTID; /* 6F8h */ + PVOID GdiThreadLocaleInfo; /* 6FCh */ + PVOID UserReserved[5]; /* 700h */ + PVOID glDispatchTable[0x118]; /* 714h */ + ULONG glReserved1[0x1A]; /* B74h */ + PVOID glReserved2; /* BDCh */ + PVOID glSectionInfo; /* BE0h */ + PVOID glSection; /* BE4h */ + PVOID glTable; /* BE8h */ + PVOID glCurrentRC; /* BECh */ + PVOID glContext; /* BF0h */ + NTSTATUS LastStatusValue; /* BF4h */ + UNICODE_STRING StaticUnicodeString; /* BF8h */ + WCHAR StaticUnicodeBuffer[0x105]; /* C00h */ + PVOID DeallocationStack; /* E0Ch */ + PVOID TlsSlots[0x40]; /* E10h */ + LIST_ENTRY TlsLinks; /* F10h */ + PVOID Vdm; /* F18h */ + PVOID ReservedForNtRpc; /* F1Ch */ + PVOID DbgSsReserved[0x2]; /* F20h */ + ULONG HardErrorDisabled; /* F28h */ + PVOID Instrumentation[0x10]; /* F2Ch */ + PVOID WinSockData; /* F6Ch */ + ULONG GdiBatchCount; /* F70h */ + USHORT Spare2; /* F74h */ + BOOLEAN IsFiber; /* F76h */ + UCHAR Spare3; /* F77h */ + ULONG Spare4; /* F78h */ + ULONG Spare5; /* F7Ch */ + PVOID ReservedForOle; /* F80h */ + ULONG WaitingOnLoaderLock; /* F84h */ + ULONG Unknown[11]; /* F88h */ + PVOID FlsSlots; /* FB4h */ + PVOID WineDebugInfo; /* Needed for WINE DLL's */ +} TEB, *PTEB; + +#endif diff --git a/reactos/include/ndk/rtlfuncs.h b/reactos/include/ndk/rtlfuncs.h new file mode 100644 index 00000000000..a70d19391f6 --- /dev/null +++ b/reactos/include/ndk/rtlfuncs.h @@ -0,0 +1,956 @@ +/* $Id: rtlfuncs.h,v 1.1.2.2 2004/10/25 02:57:20 ion Exp $ + * + * ReactOS Headers + * Copyright (C) 1998-2004 ReactOS Team + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ +/* + * PROJECT: ReactOS Native Headers + * FILE: include/ndk/rtlfuncs.h + * PURPOSE: Prototypes for Runtime Library Functions not defined in DDK/IFS + * PROGRAMMER: Alex Ionescu (alex@relsoft.net) + * UPDATE HISTORY: + * Created 06/10/04 + */ +#ifndef _RTLFUNCS_H +#define _RTLFUNCS_H + +#include + +/*FIXME: REORGANIZE THIS */ +/* FIXME: SOME FUNCTIONS MUST BE PROTECTED AGAINST DDK/IFS. */ + +typedef NTSTATUS +(*PHEAP_ENUMERATION_ROUTINE)(IN PVOID HeapHandle, + IN PVOID UserParam); + +typedef EXCEPTION_DISPOSITION +(*PEXCEPTION_HANDLER)(struct _EXCEPTION_RECORD*, + PVOID, + struct _CONTEXT*, + PVOID); + + +#define RtlGetProcessHeap() (NtCurrentPeb()->ProcessHeap) + +#define InsertAscendingListFIFO(ListHead, Type, ListEntryField, NewEntry, SortField)\ +{\ + PLIST_ENTRY current;\ +\ + current = (ListHead)->Flink;\ + while (current != (ListHead))\ + {\ + if (CONTAINING_RECORD(current, Type, ListEntryField)->SortField >\ + (NewEntry)->SortField)\ + {\ + break;\ + }\ + current = current->Flink;\ + }\ +\ + InsertTailList(current, &((NewEntry)->ListEntryField));\ +} + + +#define InsertDescendingListFIFO(ListHead, Type, ListEntryField, NewEntry, SortField)\ +{\ + PLIST_ENTRY current;\ +\ + current = (ListHead)->Flink;\ + while (current != (ListHead))\ + {\ + if (CONTAINING_RECORD(current, Type, ListEntryField)->SortField <\ + (NewEntry)->SortField)\ + {\ + break;\ + }\ + current = current->Flink;\ + }\ +\ + InsertTailList(current, &((NewEntry)->ListEntryField));\ +} + + +#define InsertAscendingList(ListHead, Type, ListEntryField, NewEntry, SortField)\ +{\ + PLIST_ENTRY current;\ +\ + current = (ListHead)->Flink;\ + while (current != (ListHead))\ + {\ + if (CONTAINING_RECORD(current, Type, ListEntryField)->SortField >=\ + (NewEntry)->SortField)\ + {\ + break;\ + }\ + current = current->Flink;\ + }\ +\ + InsertTailList(current, &((NewEntry)->ListEntryField));\ +} + + +#define InsertDescendingList(ListHead, Type, ListEntryField, NewEntry, SortField)\ +{\ + PLIST_ENTRY current;\ +\ + current = (ListHead)->Flink;\ + while (current != (ListHead))\ + {\ + if (CONTAINING_RECORD(current, Type, ListEntryField)->SortField <=\ + (NewEntry)->SortField)\ + {\ + break;\ + }\ + current = current->Flink;\ + }\ +\ + InsertTailList(current, &((NewEntry)->ListEntryField));\ +} + +ULONG +STDCALL +DbgPrint( + IN PCH Format, + IN ...); + +VOID +STDCALL +DbgBreakPoint(VOID); + +NTSTATUS +STDCALL +RtlAbsoluteToSelfRelativeSD ( + IN PSECURITY_DESCRIPTOR AbsoluteSecurityDescriptor, + IN OUT PSECURITY_DESCRIPTOR_RELATIVE SelfRelativeSecurityDescriptor, + IN PULONG BufferLength +); + +NTSTATUS +STDCALL +RtlAddAccessAllowedAce ( + PACL Acl, + ULONG Revision, + ACCESS_MASK AccessMask, + PSID Sid +); + +PVOID +STDCALL +RtlAllocateHeap ( + IN HANDLE HeapHandle, + IN ULONG Flags, + IN ULONG Size +); + +NTSTATUS +STDCALL +RtlAppendUnicodeToString ( + PUNICODE_STRING Destination, + PCWSTR Source +); + +NTSTATUS +STDCALL +RtlAppendUnicodeStringToString ( + PUNICODE_STRING Destination, + PUNICODE_STRING Source +); + +NTSTATUS +STDCALL +RtlAddAtomToAtomTable ( + IN PRTL_ATOM_TABLE AtomTable, + IN PWSTR AtomName, + OUT PRTL_ATOM Atom +); + +VOID +STDCALL +RtlCopyLuid( + IN PLUID LuidDest, + IN PLUID LuidSrc +); + +VOID +STDCALL +RtlCopyLuidAndAttributesArray( + ULONG Count, + PLUID_AND_ATTRIBUTES Src, + PLUID_AND_ATTRIBUTES Dest +); + +NTSTATUS +STDCALL +RtlCopySidAndAttributesArray( + ULONG Count, + PSID_AND_ATTRIBUTES Src, + ULONG SidAreaSize, + PSID_AND_ATTRIBUTES Dest, + PVOID SidArea, + PVOID* RemainingSidArea, + PULONG RemainingSidAreaSize +); + +SIZE_T +STDCALL +RtlCompareMemory(IN const VOID *Source1, + IN const VOID *Source2, + IN SIZE_T Length); + +LONG +STDCALL +RtlCompareUnicodeString ( + PUNICODE_STRING String1, + PUNICODE_STRING String2, + BOOLEAN CaseInsensitive +); + +BOOLEAN +STDCALL +RtlEqualUnicodeString ( + PUNICODE_STRING String1, + PUNICODE_STRING String2, + BOOLEAN CaseInsensitive +); + +VOID +STDCALL +RtlAcquirePebLock ( + VOID + ); + +VOID +STDCALL +RtlReleasePebLock ( + VOID + ); + +NTSTATUS +STDCALL +RtlCompressBuffer ( + IN USHORT CompressionFormatAndEngine, + IN PUCHAR UncompressedBuffer, + IN ULONG UncompressedBufferSize, + OUT PUCHAR CompressedBuffer, + IN ULONG CompressedBufferSize, + IN ULONG UncompressedChunkSize, + OUT PULONG FinalCompressedSize, + IN PVOID WorkSpace +); + +NTSTATUS +STDCALL +RtlConvertSidToUnicodeString ( + OUT PUNICODE_STRING DestinationString, + IN PSID Sid, + IN BOOLEAN AllocateDestinationString +); + +NTSTATUS +STDCALL +RtlCopySid ( + IN ULONG Length, + IN PSID Destination, + IN PSID Source +); + +NTSTATUS +STDCALL +RtlCreateAcl( + PACL Acl, + ULONG AclSize, + ULONG AclRevision +); + +NTSTATUS +STDCALL +RtlCreateAtomTable( + IN ULONG TableSize, + IN OUT PRTL_ATOM_TABLE *AtomTable +); + +NTSTATUS +STDCALL +RtlCreateUserThread ( + IN HANDLE ProcessHandle, + IN PSECURITY_DESCRIPTOR SecurityDescriptor, + IN BOOLEAN CreateSuspended, + IN LONG StackZeroBits, + IN OUT PULONG StackReserve, + IN OUT PULONG StackCommit, + IN PTHREAD_START_ROUTINE StartAddress, + IN PVOID Parameter, + IN OUT PHANDLE ThreadHandle, + IN OUT PCLIENT_ID ClientId +); + +BOOLEAN +STDCALL +RtlCreateUnicodeString( + OUT PUNICODE_STRING DestinationString, + IN PCWSTR SourceString +); + +NTSTATUS +STDCALL +RtlDecompressBuffer ( + IN USHORT CompressionFormat, + OUT PUCHAR UncompressedBuffer, + IN ULONG UncompressedBufferSize, + IN PUCHAR CompressedBuffer, + IN ULONG CompressedBufferSize, + OUT PULONG FinalUncompressedSize +); + +NTSTATUS +STDCALL +RtlExpandEnvironmentStrings_U ( + PWSTR Environment, + PUNICODE_STRING Source, + PUNICODE_STRING Destination, + PULONG Length +); + +PRTL_USER_PROCESS_PARAMETERS +STDCALL +RtlDeNormalizeProcessParams ( + IN PRTL_USER_PROCESS_PARAMETERS ProcessParameters +); + +PRTL_USER_PROCESS_PARAMETERS +STDCALL +RtlNormalizeProcessParams ( + IN PRTL_USER_PROCESS_PARAMETERS ProcessParameters +); + +NTSTATUS +STDCALL +RtlDeleteAtomFromAtomTable ( + IN PRTL_ATOM_TABLE AtomTable, + IN RTL_ATOM Atom +); + +NTSTATUS +STDCALL +RtlDeleteCriticalSection ( + PRTL_CRITICAL_SECTION CriticalSection +); + +NTSTATUS +STDCALL +RtlDestroyAtomTable ( + IN PRTL_ATOM_TABLE AtomTable +); + +NTSTATUS +STDCALL +RtlEnterCriticalSection ( + PRTL_CRITICAL_SECTION CriticalSection +); + +NTSTATUS +STDCALL +RtlInitializeCriticalSection ( + PRTL_CRITICAL_SECTION CriticalSection +); + +NTSTATUS +STDCALL +RtlLeaveCriticalSection ( + PRTL_CRITICAL_SECTION CriticalSection +); + +VOID +STDCALL +RtlInitializeBitMap( + IN PRTL_BITMAP BitMapHeader, + IN PULONG BitMapBuffer, + IN ULONG SizeOfBitMap); + +BOOLEAN +STDCALL +RtlAreBitsClear( + IN PRTL_BITMAP BitMapHeader, + IN ULONG StartingIndex, + IN ULONG Length); + +BOOLEAN +STDCALL +RtlAreBitsSet( + IN PRTL_BITMAP BitMapHeader, + IN ULONG StartingIndex, + IN ULONG Length); + +NTSTATUS +STDCALL +RtlMultiByteToUnicodeN ( + PWCHAR UnicodeString, + ULONG UnicodeSize, + PULONG ResultSize, + const PCHAR MbString, + ULONG MbSize +); + +NTSTATUS +STDCALL +RtlMultiByteToUnicodeSize ( + PULONG UnicodeSize, + PCHAR MbString, + ULONG MbSize +); + +CHAR STDCALL +RtlUpperChar (CHAR Source); + +WCHAR +STDCALL +RtlUpcaseUnicodeChar ( + WCHAR Source + ); + +NTSTATUS +STDCALL +RtlAnsiStringToUnicodeString ( + PUNICODE_STRING DestinationString, + PANSI_STRING SourceString, + BOOLEAN AllocateDestinationString + ); + +NTSTATUS +STDCALL +RtlUnicodeToMultiByteN ( + PCHAR MbString, + ULONG MbSize, + PULONG ResultSize, + PWCHAR UnicodeString, + ULONG UnicodeSize + ); + +ULONG +STDCALL +RtlOemStringToUnicodeSize ( + POEM_STRING AnsiString + ); + +WCHAR STDCALL +RtlDowncaseUnicodeChar(IN WCHAR Source); + +NTSTATUS +STDCALL +RtlUpcaseUnicodeToMultiByteN ( + PCHAR MbString, + ULONG MbSize, + PULONG ResultSize, + PWCHAR UnicodeString, + ULONG UnicodeSize + ); + +NTSTATUS +STDCALL +RtlUnicodeToMultiByteSize ( + PULONG MbSize, + PWCHAR UnicodeString, + ULONG UnicodeSize + ); + +NTSTATUS +STDCALL +RtlOemToUnicodeN( + PWSTR UnicodeString, + ULONG MaxBytesInUnicodeString, + PULONG BytesInUnicodeString, + IN PCHAR OemString, + ULONG BytesInOemString + ); + +NTSTATUS +STDCALL +RtlUnicodeToOemN ( + PCHAR OemString, + ULONG OemSize, + PULONG ResultSize, + PWCHAR UnicodeString, + ULONG UnicodeSize + ); + +NTSTATUS +STDCALL +RtlUpcaseUnicodeStringToOemString ( + IN OUT POEM_STRING DestinationString, + IN PUNICODE_STRING SourceString, + IN BOOLEAN AllocateDestinationString + ); + +ULONG +STDCALL +RtlUnicodeStringToAnsiSize ( + IN PUNICODE_STRING UnicodeString + ); + +#ifndef _NTIFS_ +BOOLEAN +STDCALL +RtlEqualSid ( + IN PSID Sid1, + IN PSID Sid2 +); + +VOID +STDCALL +RtlFillMemoryUlong ( + IN PVOID Destination, + IN ULONG Length, + IN ULONG Fill +); + +#endif + +NTSTATUS +STDCALL +RtlFindMessage ( + IN PVOID BaseAddress, + IN ULONG Type, + IN ULONG Language, + IN ULONG MessageId, + OUT PRTL_MESSAGE_RESOURCE_ENTRY *MessageResourceEntry + ); + +BOOLEAN +STDCALL +RtlFreeHeap ( + IN HANDLE HeapHandle, + IN ULONG Flags, + IN PVOID P +); + +VOID +STDCALL +RtlFreeUnicodeString( + IN PUNICODE_STRING UnicodeString); + +VOID +STDCALL +RtlFreeOemString( + IN POEM_STRING OemString +); + +NTSTATUS +STDCALL +RtlGetCompressionWorkSpaceSize ( + IN USHORT CompressionFormatAndEngine, + OUT PULONG CompressBufferWorkSpaceSize, + OUT PULONG CompressFragmentWorkSpaceSize +); + +NTSTATUS +STDCALL +RtlGetDaclSecurityDescriptor ( + IN PSECURITY_DESCRIPTOR SecurityDescriptor, + OUT PBOOLEAN DaclPresent, + OUT PACL *Dacl, + OUT PBOOLEAN DaclDefaulted +); + +NTSTATUS +STDCALL +RtlGetGroupSecurityDescriptor ( + IN PSECURITY_DESCRIPTOR SecurityDescriptor, + OUT PSID *Group, + OUT PBOOLEAN GroupDefaulted +); + +NTSTATUS +STDCALL +RtlGetOwnerSecurityDescriptor ( + IN PSECURITY_DESCRIPTOR SecurityDescriptor, + OUT PSID *Owner, + OUT PBOOLEAN OwnerDefaulted +); + +ULONG +STDCALL +RtlImageRvaToVa ( + PIMAGE_NT_HEADERS NtHeader, + PVOID BaseAddress, + ULONG Rva, + PIMAGE_SECTION_HEADER *SectionHeader +); + +PIMAGE_NT_HEADERS +STDCALL +RtlImageNtHeader ( + IN PVOID BaseAddress +); + +PIMAGE_SECTION_HEADER +STDCALL +RtlImageRvaToSection ( + PIMAGE_NT_HEADERS NtHeader, + PVOID BaseAddress, + ULONG Rva +); + +NTSTATUS +STDCALL +RtlInitializeSid ( + IN OUT PSID Sid, + IN PSID_IDENTIFIER_AUTHORITY IdentifierAuthority, + IN UCHAR SubAuthorityCount +); + +VOID +STDCALL +RtlInitNlsTables ( + IN PUSHORT AnsiTableBase, + IN PUSHORT OemTableBase, + IN PUSHORT CaseTableBase, + OUT PNLSTABLEINFO NlsTable +); + +NTSTATUS +STDCALL +RtlGetSaclSecurityDescriptor ( + PSECURITY_DESCRIPTOR SecurityDescriptor, + PBOOLEAN SaclPresent, + PACL* Sacl, + PBOOLEAN SaclDefaulted +); + +NTSTATUS +STDCALL +RtlQueryAtomInAtomTable ( + IN PRTL_ATOM_TABLE AtomTable, + IN RTL_ATOM Atom, + IN OUT PULONG RefCount OPTIONAL, + IN OUT PULONG PinCount OPTIONAL, + IN OUT PWSTR AtomName OPTIONAL, + IN OUT PULONG NameLength OPTIONAL +); + +NTSTATUS +STDCALL +RtlLookupAtomInAtomTable ( + IN PRTL_ATOM_TABLE AtomTable, + IN PWSTR AtomName, + OUT PRTL_ATOM Atom +); + +VOID +STDCALL +RtlResetRtlTranslations ( + IN PNLSTABLEINFO NlsTable +); + +VOID +STDCALL +RtlRaiseException ( + IN PEXCEPTION_RECORD ExceptionRecord +); + +VOID +STDCALL +RtlInitUnicodeString( + IN OUT PUNICODE_STRING DestinationString, + IN PCWSTR SourceString); + + +BOOLEAN +STDCALL +RtlIsNameLegalDOS8Dot3 ( + IN PUNICODE_STRING UnicodeName, + IN PANSI_STRING AnsiName, + PBOOLEAN Unknown +); + +ULONG +STDCALL +RtlLengthRequiredSid ( + IN UCHAR SubAuthorityCount +); + +ULONG +STDCALL +RtlLengthSid ( + IN PSID Sid +); + +ULONG +STDCALL +RtlNtStatusToDosError ( + IN NTSTATUS Status +); + +NTSTATUS STDCALL +RtlFormatCurrentUserKeyPath (IN OUT PUNICODE_STRING KeyPath); + +NTSTATUS +STDCALL +RtlQueryEnvironmentVariable_U ( + PWSTR Environment, + PUNICODE_STRING Name, + PUNICODE_STRING Value + ); + +NTSTATUS +STDCALL +RtlQueryTimeZoneInformation ( + IN OUT PTIME_ZONE_INFORMATION TimeZoneInformation +); + +VOID STDCALL RtlRaiseStatus(NTSTATUS Status); + +VOID +STDCALL +RtlSecondsSince1970ToTime ( + IN ULONG SecondsSince1970, + OUT PLARGE_INTEGER Time +); + +VOID +STDCALL +RtlSetBits ( + PRTL_BITMAP BitMapHeader, + ULONG StartingIndex, + ULONG NumberToSet +); + +#if (VER_PRODUCTBUILD >= 2195) + +NTSTATUS +STDCALL +RtlSelfRelativeToAbsoluteSD ( + IN PSECURITY_DESCRIPTOR SelfRelativeSD, + OUT PSECURITY_DESCRIPTOR AbsoluteSD, + IN PULONG AbsoluteSDSize, + IN PACL Dacl, + IN PULONG DaclSize, + IN PACL Sacl, + IN PULONG SaclSize, + IN PSID Owner, + IN PULONG OwnerSize, + IN PSID PrimaryGroup, + IN PULONG PrimaryGroupSize +); + +#endif /* (VER_PRODUCTBUILD >= 2195) */ + +NTSTATUS +STDCALL +RtlSetGroupSecurityDescriptor ( + IN OUT PSECURITY_DESCRIPTOR SecurityDescriptor, + IN PSID Group, + IN BOOLEAN GroupDefaulted +); + +NTSTATUS +STDCALL +RtlSetOwnerSecurityDescriptor ( + IN OUT PSECURITY_DESCRIPTOR SecurityDescriptor, + IN PSID Owner, + IN BOOLEAN OwnerDefaulted +); + +NTSTATUS +STDCALL +RtlSetSaclSecurityDescriptor ( + IN OUT PSECURITY_DESCRIPTOR SecurityDescriptor, + IN BOOLEAN SaclPresent, + IN PACL Sacl, + IN BOOLEAN SaclDefaulted +); + +PUCHAR +STDCALL +RtlSubAuthorityCountSid ( + IN PSID Sid +); + +PULONG +STDCALL +RtlSubAuthoritySid ( + IN PSID Sid, + IN ULONG SubAuthority +); + +NTSTATUS +STDCALL +RtlUpcaseUnicodeStringToCountedOemString ( + IN OUT POEM_STRING DestinationString, + IN PUNICODE_STRING SourceString, + IN BOOLEAN AllocateDestinationString + ); + +NTSTATUS +STDCALL +RtlUnicodeStringToOemString ( + IN OUT POEM_STRING DestinationString, + IN PUNICODE_STRING SourceString, + IN BOOLEAN AllocateDestinationString + ); + +NTSTATUS +STDCALL +RtlUpcaseUnicodeToOemN ( + PCHAR OemString, + ULONG OemSize, + PULONG ResultSize, + PWCHAR UnicodeString, + ULONG UnicodeSize + ); + + +NTSTATUS STDCALL +RtlLargeIntegerToChar ( + IN PLARGE_INTEGER Value, + IN ULONG Base, + IN ULONG Length, + IN OUT PCHAR String + ); + +BOOLEAN +STDCALL +RtlCreateUnicodeStringFromAsciiz (OUT PUNICODE_STRING Destination, + IN PCSZ Source); + + +BOOLEAN +STDCALL +RtlTimeFieldsToTime ( + PTIME_FIELDS TimeFields, + PLARGE_INTEGER Time +); + +VOID +STDCALL +RtlTimeToTimeFields ( + PLARGE_INTEGER Time, + PTIME_FIELDS TimeFields +); + +NTSTATUS +STDCALL +RtlQueryRegistryValues ( + IN ULONG RelativeTo, + IN PCWSTR Path, + IN PRTL_QUERY_REGISTRY_TABLE QueryTable, + IN PVOID Context, + IN PVOID Environment +); + +NTSTATUS +STDCALL +RtlWriteRegistryValue ( + ULONG RelativeTo, + PCWSTR Path, + PCWSTR ValueName, + ULONG ValueType, + PVOID ValueData, + ULONG ValueLength +); + +VOID +STDCALL +RtlUnwind ( + PEXCEPTION_REGISTRATION RegistrationFrame, + PVOID ReturnAddress, + PEXCEPTION_RECORD ExceptionRecord, + DWORD EaxValue +); + +BOOLEAN +STDCALL +RtlValidSid ( + IN PSID Sid +); + +BOOLEAN +STDCALL +RtlValidAcl ( + PACL Acl +); + +/* functions exported from NTOSKRNL.EXE which are considered RTL */ +char *_itoa (int value, char *string, int radix); +wchar_t *_itow (int value, wchar_t *string, int radix); +int _snprintf(char * buf, size_t cnt, const char *fmt, ...); +int _snwprintf(wchar_t *buf, size_t cnt, const wchar_t *fmt, ...); +int _stricmp(const char *s1, const char *s2); +char * _strlwr(char *x); +int _strnicmp(const char *s1, const char *s2, size_t n); +char * _strnset(char* szToFill, int szFill, size_t sizeMaxFill); +char * _strrev(char *s); +char * _strset(char* szToFill, int szFill); +char * _strupr(char *x); +int _vsnprintf(char *buf, size_t cnt, const char *fmt, va_list args); +int _wcsicmp (const wchar_t* cs, const wchar_t* ct); +wchar_t * _wcslwr (wchar_t *x); +int _wcsnicmp (const wchar_t * cs,const wchar_t * ct,size_t count); +wchar_t* _wcsnset (wchar_t* wsToFill, wchar_t wcFill, size_t sizeMaxFill); +wchar_t * _wcsrev(wchar_t *s); +wchar_t *_wcsupr(wchar_t *x); + +int atoi(const char *str); +long atol(const char *str); +int isdigit(int c); +int islower(int c); +int isprint(int c); +int isspace(int c); +int isupper(int c); +int isxdigit(int c); +size_t mbstowcs (wchar_t *wcstr, const char *mbstr, size_t count); +int mbtowc (wchar_t *wchar, const char *mbchar, size_t count); +void * memchr(const void *s, int c, size_t n); +void * memcpy(void *to, const void *from, size_t count); +void * memmove(void *dest,const void *src, size_t count); +void * memset(void *src, int val, size_t count); + +int rand(void); +int sprintf(char * buf, const char *fmt, ...); +void srand(unsigned seed); +char * strcat(char *s, const char *append); +char * strchr(const char *s, int c); +int strcmp(const char *s1, const char *s2); +char * strcpy(char *to, const char *from); +size_t strlen(const char *str); +char * strncat(char *dst, const char *src, size_t n); +int strncmp(const char *s1, const char *s2, size_t n); +char *strncpy(char *dst, const char *src, size_t n); +char *strrchr(const char *s, int c); +size_t strspn(const char *s1, const char *s2); +char *strstr(const char *s, const char *find); +int swprintf(wchar_t *buf, const wchar_t *fmt, ...); +int tolower(int c); +int toupper(int c); +wchar_t towlower(wchar_t c); +wchar_t towupper(wchar_t c); +int vsprintf(char *buf, const char *fmt, va_list args); +wchar_t * wcscat(wchar_t *dest, const wchar_t *src); +wchar_t * wcschr(const wchar_t *str, wchar_t ch); +int wcscmp(const wchar_t *cs, const wchar_t *ct); +wchar_t* wcscpy(wchar_t* str1, const wchar_t* str2); +size_t wcscspn(const wchar_t *str,const wchar_t *reject); +size_t wcslen(const wchar_t *s); +wchar_t * wcsncat(wchar_t *dest, const wchar_t *src, size_t count); +int wcsncmp(const wchar_t *cs, const wchar_t *ct, size_t count); +wchar_t * wcsncpy(wchar_t *dest, const wchar_t *src, size_t count); +wchar_t * wcsrchr(const wchar_t *str, wchar_t ch); +size_t wcsspn(const wchar_t *str,const wchar_t *accept); +wchar_t *wcsstr(const wchar_t *s,const wchar_t *b); +size_t wcstombs (char *mbstr, const wchar_t *wcstr, size_t count); +int wctomb (char *mbchar, wchar_t wchar); + +#endif diff --git a/reactos/include/ndk/rtltypes.h b/reactos/include/ndk/rtltypes.h new file mode 100644 index 00000000000..624279b11d2 --- /dev/null +++ b/reactos/include/ndk/rtltypes.h @@ -0,0 +1,208 @@ +/* + * PROJECT: ReactOS Native Headers + * FILE: include/ndk/rtltypes.h + * PURPOSE: Defintions for Runtime Library Types not defined in DDK/IFS + * PROGRAMMER: Alex Ionescu (alex@relsoft.net) + * UPDATE HISTORY: + * Created 06/10/04 + */ +#ifndef _RTLTYPES_H +#define _RTLTYPES_H + +/* DEPENDENCIES **************************************************************/ +#include "zwtypes.h" + +/* EXPORTED DATA *************************************************************/ + +/* CONSTANTS *****************************************************************/ +#define MAXIMUM_LEADBYTES 12 + +#define PPF_NORMALIZED (1) + +#define PEB_BASE (0x7FFDF000) + +#define EXCEPTION_UNWINDING 0x02 +#define EXCEPTION_EXIT_UNWIND 0x04 +#define EXCEPTION_STACK_INVALID 0x8 +#define EXCEPTION_NESTED_CALL 0x10 +#define EXCEPTION_TARGET_UNWIND 0x20 +#define EXCEPTION_COLLIDED_UNWIND 0x20 + +#define EH_NONCONTINUABLE 0x01 +#define EH_UNWINDING 0x02 +#define EH_EXIT_UNWIND 0x04 +#define EH_STACK_INVALID 0x08 +#define EH_NESTED_CALL 0x10 + +/* ENUMERATIONS **************************************************************/ + +typedef enum +{ + ExceptionContinueExecution, + ExceptionContinueSearch, + ExceptionNestedException, + ExceptionCollidedUnwind +} EXCEPTION_DISPOSITION; + +/* TYPES *********************************************************************/ + +typedef unsigned short RTL_ATOM; +typedef unsigned short *PRTL_ATOM; + +typedef struct _ACE +{ + ACE_HEADER Header; + ACCESS_MASK AccessMask; +} ACE, *PACE; + +typedef struct _EXCEPTION_REGISTRATION +{ + struct _EXCEPTION_REGISTRATION* prev; + PEXCEPTION_HANDLER handler; +} EXCEPTION_REGISTRATION, *PEXCEPTION_REGISTRATION; + +typedef EXCEPTION_REGISTRATION EXCEPTION_REGISTRATION_RECORD; +typedef PEXCEPTION_REGISTRATION PEXCEPTION_REGISTRATION_RECORD; + +typedef struct RTL_DRIVE_LETTER_CURDIR +{ + USHORT Flags; + USHORT Length; + ULONG TimeStamp; + UNICODE_STRING DosPath; +} RTL_DRIVE_LETTER_CURDIR, *PRTL_DRIVE_LETTER_CURDIR; + +typedef struct _RTL_HEAP_DEFINITION +{ + ULONG Length; + ULONG Unknown[11]; +} RTL_HEAP_DEFINITION, *PRTL_HEAP_DEFINITION; + +typedef struct _RTL_MESSAGE_RESOURCE_ENTRY +{ + USHORT Length; + USHORT Flags; + UCHAR Text[1]; +} RTL_MESSAGE_RESOURCE_ENTRY, *PRTL_MESSAGE_RESOURCE_ENTRY; + +typedef struct _RTL_MESSAGE_RESOURCE_BLOCK +{ + ULONG LowId; + ULONG HighId; + ULONG OffsetToEntries; +} RTL_MESSAGE_RESOURCE_BLOCK, *PRTL_MESSAGE_RESOURCE_BLOCK; + +typedef struct _RTL_MESSAGE_RESOURCE_DATA +{ + ULONG NumberOfBlocks; + RTL_MESSAGE_RESOURCE_BLOCK Blocks[1]; +} RTL_MESSAGE_RESOURCE_DATA, *PRTL_MESSAGE_RESOURCE_DATA; + +typedef struct _NLS_FILE_HEADER +{ + USHORT HeaderSize; + USHORT CodePage; + USHORT MaximumCharacterSize; /* SBCS = 1, DBCS = 2 */ + USHORT DefaultChar; + USHORT UniDefaultChar; + USHORT TransDefaultChar; + USHORT TransUniDefaultChar; + USHORT DBCSCodePage; + UCHAR LeadByte[MAXIMUM_LEADBYTES]; +} NLS_FILE_HEADER, *PNLS_FILE_HEADER; + +typedef struct _RTL_USER_PROCESS_PARAMETERS +{ + ULONG AllocationSize; + ULONG Size; + ULONG Flags; + ULONG DebugFlags; + HANDLE hConsole; + ULONG ProcessGroup; + HANDLE hStdInput; + HANDLE hStdOutput; + HANDLE hStdError; + UNICODE_STRING CurrentDirectoryName; + HANDLE CurrentDirectoryHandle; + UNICODE_STRING DllPath; + UNICODE_STRING ImagePathName; + UNICODE_STRING CommandLine; + PWSTR Environment; + ULONG dwX; + ULONG dwY; + ULONG dwXSize; + ULONG dwYSize; + ULONG dwXCountChars; + ULONG dwYCountChars; + ULONG dwFillAttribute; + ULONG dwFlags; + ULONG wShowWindow; + UNICODE_STRING WindowTitle; + UNICODE_STRING DesktopInfo; + UNICODE_STRING ShellInfo; + UNICODE_STRING RuntimeInfo; +} RTL_USER_PROCESS_PARAMETERS, *PRTL_USER_PROCESS_PARAMETERS; + +typedef struct _RTL_PROCESS_INFO +{ + ULONG Size; + HANDLE ProcessHandle; + HANDLE ThreadHandle; + CLIENT_ID ClientId; + SECTION_IMAGE_INFORMATION ImageInfo; +} RTL_PROCESS_INFO, *PRTL_PROCESS_INFO; + +typedef struct _RTL_BITMAP +{ + ULONG SizeOfBitMap; + PULONG Buffer; +} RTL_BITMAP; +typedef RTL_BITMAP *PRTL_BITMAP; + +typedef struct _RTL_BITMAP_RUN +{ + ULONG StartingIndex; + ULONG NumberOfBits; +} RTL_BITMAP_RUN; +typedef RTL_BITMAP_RUN *PRTL_BITMAP_RUN; + +/* FIXME: This is a Windows Type which which we are not implementing properly + The type below however is our own implementation. We will eventually use Windows' */ +typedef struct _RTL_ATOM_TABLE +{ + ULONG TableSize; + ULONG NumberOfAtoms; + PVOID Lock; /* fast mutex (kernel mode)/ critical section (user mode) */ + PVOID HandleTable; + LIST_ENTRY Slot[0]; +} RTL_ATOM_TABLE, *PRTL_ATOM_TABLE; + +/* Let Kernel Drivers use this */ +#ifndef _WINBASE_H + typedef struct _SYSTEMTIME + { + WORD wYear; + WORD wMonth; + WORD wDayOfWeek; + WORD wDay; + WORD wHour; + WORD wMinute; + WORD wSecond; + WORD wMilliseconds; + } SYSTEMTIME, *PSYSTEMTIME, *LPSYSTEMTIME; + + typedef struct _TIME_ZONE_INFORMATION + { + LONG Bias; + WCHAR StandardName[32]; + SYSTEMTIME StandardDate; + LONG StandardBias; + WCHAR DaylightName[32]; + SYSTEMTIME DaylightDate; + LONG DaylightBias; + } TIME_ZONE_INFORMATION, *PTIME_ZONE_INFORMATION, *LPTIME_ZONE_INFORMATION; +#endif + +typedef LPTIME_ZONE_INFORMATION PTIME_ZONE_INFORMATION; + +#endif diff --git a/reactos/include/ndk/sefuncs.h b/reactos/include/ndk/sefuncs.h new file mode 100644 index 00000000000..1fa3bc9ee59 --- /dev/null +++ b/reactos/include/ndk/sefuncs.h @@ -0,0 +1,24 @@ +/* + * PROJECT: ReactOS Native Headers + * FILE: include/ndk/sefuncs.h + * PURPOSE: Defintions for Security Subsystem Functions not defined in DDK/IFS + * PROGRAMMER: Alex Ionescu (alex@relsoft.net) + * UPDATE HISTORY: + * Created 06/10/04 + */ +#ifndef _SEFUNCS_H +#define _SEFUNCS_H + +/* DEPENDENCIES **************************************************************/ + +/* FUNCTION TYPES ************************************************************/ + +/* PROTOTYPES ****************************************************************/ + +SECURITY_IMPERSONATION_LEVEL +STDCALL +SeTokenImpersonationLevel( + IN PACCESS_TOKEN Token +); + +#endif diff --git a/reactos/include/ndk/setypes.h b/reactos/include/ndk/setypes.h new file mode 100644 index 00000000000..0efaaa56bd7 --- /dev/null +++ b/reactos/include/ndk/setypes.h @@ -0,0 +1,86 @@ +/* + * PROJECT: ReactOS Native Headers + * FILE: include/ndk/setypes.h + * PURPOSE: Defintions for Security Subsystem Types not defined in DDK/IFS + * PROGRAMMER: Alex Ionescu (alex@relsoft.net) + * UPDATE HISTORY: + * Created 06/10/04 + */ +#ifndef _SETYPES_H +#define _SETYPES_H + +/* DEPENDENCIES **************************************************************/ + +/* EXPORTED DATA *************************************************************/ + +/* CONSTANTS *****************************************************************/ + +/* ENUMERATIONS **************************************************************/ + +/* TYPES *********************************************************************/ + +typedef struct _SEP_AUDIT_POLICY_CATEGORIES +{ + UCHAR System:4; + UCHAR Logon:4; + UCHAR ObjectAccess:4; + UCHAR PrivilegeUse:4; + UCHAR DetailedTracking:4; + UCHAR PolicyChange:4; + UCHAR AccountManagement:4; + UCHAR DirectoryServiceAccess:4; + UCHAR AccountLogon:4; +} SEP_AUDIT_POLICY_CATEGORIES, *PSEP_AUDIT_POLICY_CATEGORIES; + +typedef struct _SEP_AUDIT_POLICY_OVERLAY +{ + ULONGLONG PolicyBits:36; + UCHAR SetBit:1; +} SEP_AUDIT_POLICY_OVERLAY, *PSEP_AUDIT_POLICY_OVERLAY; + +typedef struct _SEP_AUDIT_POLICY +{ + union + { + SEP_AUDIT_POLICY_CATEGORIES PolicyElements; + SEP_AUDIT_POLICY_OVERLAY PolicyOverlay; + ULONGLONG Overlay; + }; +} SEP_AUDIT_POLICY, *PSEP_AUDIT_POLICY; + +typedef struct _TOKEN +{ + TOKEN_SOURCE TokenSource; /* 0x00 */ + LUID TokenId; /* 0x10 */ + LUID AuthenticationId; /* 0x18 */ + LUID ParentTokenId; /* 0x20 */ + LARGE_INTEGER ExpirationTime; /* 0x28 */ + struct _ERESOURCE *TokenLock; /* 0x30 */ + ULONG Padding; /* 0x34 */ + SEP_AUDIT_POLICY AuditPolicy; /* 0x38 */ + LUID ModifiedId; /* 0x40 */ + ULONG SessionId; /* 0x48 */ + ULONG UserAndGroupCount; /* 0x4C */ + ULONG RestrictedSidCount; /* 0x50 */ + ULONG PrivilegeCount; /* 0x54 */ + ULONG VariableLength; /* 0x58 */ + ULONG DynamicCharged; /* 0x5C */ + ULONG DynamicAvailable; /* 0x60 */ + ULONG DefaultOwnerIndex; /* 0x64 */ + PSID_AND_ATTRIBUTES UserAndGroups; /* 0x68 */ + PSID_AND_ATTRIBUTES RestrictedSids; /* 0x6C */ + PSID PrimaryGroup; /* 0x70 */ + PLUID_AND_ATTRIBUTES Privileges; /* 0x74 */ + PULONG DynamicPart; /* 0x78 */ + PACL DefaultDacl; /* 0x7C */ + TOKEN_TYPE TokenType; /* 0x80 */ + SECURITY_IMPERSONATION_LEVEL ImpersonationLevel; /* 0x84 */ + ULONG TokenFlags; /* 0x88 */ + ULONG TokenInUse; /* 0x8C */ + PVOID ProxyData; /* 0x90 */ + PVOID AuditData; /* 0x94 */ + LUID OriginatingLogonSession; /* 0x98 */ + UCHAR VariablePart[1]; /* 0xA0 */ +} TOKEN, *PTOKEN; + +#endif diff --git a/reactos/include/ndk/umtypes.h b/reactos/include/ndk/umtypes.h new file mode 100644 index 00000000000..944e1765884 --- /dev/null +++ b/reactos/include/ndk/umtypes.h @@ -0,0 +1,1116 @@ +/* + * PROJECT: ReactOS Native Headers + * FILE: include/ndk/umtypes.h + * PURPOSE: Definitions needed for Native Headers if target is not Kernel-Mode. + * PROGRAMMER: Alex Ionescu (alex@relsoft.net) + * UPDATE HISTORY: + * Created 06/10/04 + */ + +#ifndef _UMTYPES_H +#define _UMTYPES_H + +/*FIXME: REORGANIZE!!!*/ + +#define NTAPI __stdcall +#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; \ +} +#ifndef NT_SUCCESS +#define NT_SUCCESS(x) ((x)>=0) +#define STATUS_SUCCESS ((NTSTATUS)0) +#endif +#define NT_WARNING(x) ((ULONG)(x)>>30==2) +#define NT_ERROR(x) ((ULONG)(x)>>30==3) +#define PAGE_SIZE 0x1000 +#define PAGE_SHIFT 12L +#define SharedUserData ((KUSER_SHARED_DATA * CONST) KI_USER_SHARED_DATA) +#include +typedef struct _OBJECT_TYPE *POBJECT_TYPE; + +#ifdef DBG + +#define ASSERT(exp) \ + ((!(exp)) ? \ + (RtlAssert( #exp, __FILE__, __LINE__, NULL ), FALSE) : TRUE) + +#define ASSERTMSG(msg, exp) \ + ((!(exp)) ? \ + (RtlAssert( #exp, __FILE__, __LINE__, msg ), FALSE) : TRUE) + +#define RTL_SOFT_ASSERT(exp) \ + ((!(_exp)) ? \ + (DbgPrint("%s(%d): Soft assertion failed\n Expression: %s\n", __FILE__, __LINE__, #exp), FALSE) : TRUE) + +#define RTL_SOFT_ASSERTMSG(msg, exp) \ + ((!(exp)) ? \ + (DbgPrint("%s(%d): Soft assertion failed\n Expression: %s\n Message: %s\n", __FILE__, __LINE__, #exp, (msg)), FALSE) : TRUE) + +#define RTL_VERIFY(exp) ASSERT(exp) +#define RTL_VERIFYMSG(msg, exp) ASSERT(msg, exp) + +#define RTL_SOFT_VERIFY(exp) RTL_SOFT_ASSERT(exp) +#define RTL_SOFT_VERIFYMSG(msg, exp) RTL_SOFT_ASSERTMSG(msg, exp) + +#else /* !DBG */ + +#define ASSERT(exp) ((VOID) 0) +#define ASSERTMSG(msg, exp) ((VOID) 0) + +#define RTL_SOFT_ASSERT(exp) ((VOID) 0) +#define RTL_SOFT_ASSERTMSG(msg, exp) ((VOID) 0) + +#define RTL_VERIFY(exp) ((exp) ? TRUE : FALSE) +#define RTL_VERIFYMSG(msg, exp) ((exp) ? TRUE : FALSE) + +#define RTL_SOFT_VERIFY(exp) ((exp) ? TRUE : FALSE) +#define RTL_SOFT_VERIFYMSG(msg, exp) ((exp) ? TRUE : FALSE) + +#endif /* DBG */ + +#define FILE_ANY_ACCESS 0 +#define FILE_SPECIAL_ACCESS FILE_ANY_ACCESS +#define FILE_READ_ACCESS 1 +#define FILE_WRITE_ACCESS 2 + +#define METHOD_BUFFERED 0 +#define METHOD_IN_DIRECT 1 +#define METHOD_OUT_DIRECT 2 +#define METHOD_NEITHER 3 + +#define DEVICE_TYPE ULONG + +#define FILE_DEVICE_BEEP 0x00000001 +#define FILE_DEVICE_CD_ROM 0x00000002 +#define FILE_DEVICE_CD_ROM_FILE_SYSTEM 0x00000003 +#define FILE_DEVICE_CONTROLLER 0x00000004 +#define FILE_DEVICE_DATALINK 0x00000005 +#define FILE_DEVICE_DFS 0x00000006 +#define FILE_DEVICE_DISK 0x00000007 +#define FILE_DEVICE_DISK_FILE_SYSTEM 0x00000008 +#define FILE_DEVICE_FILE_SYSTEM 0x00000009 +#define FILE_DEVICE_INPORT_PORT 0x0000000a +#define FILE_DEVICE_KEYBOARD 0x0000000b +#define FILE_DEVICE_MAILSLOT 0x0000000c +#define FILE_DEVICE_MIDI_IN 0x0000000d +#define FILE_DEVICE_MIDI_OUT 0x0000000e +#define FILE_DEVICE_MOUSE 0x0000000f +#define FILE_DEVICE_MULTI_UNC_PROVIDER 0x00000010 +#define FILE_DEVICE_NAMED_PIPE 0x00000011 +#define FILE_DEVICE_NETWORK 0x00000012 +#define FILE_DEVICE_NETWORK_BROWSER 0x00000013 +#define FILE_DEVICE_NETWORK_FILE_SYSTEM 0x00000014 +#define FILE_DEVICE_NULL 0x00000015 +#define FILE_DEVICE_PARALLEL_PORT 0x00000016 +#define FILE_DEVICE_PHYSICAL_NETCARD 0x00000017 +#define FILE_DEVICE_PRINTER 0x00000018 +#define FILE_DEVICE_SCANNER 0x00000019 +#define FILE_DEVICE_SERIAL_MOUSE_PORT 0x0000001a +#define FILE_DEVICE_SERIAL_PORT 0x0000001b +#define FILE_DEVICE_SCREEN 0x0000001c +#define FILE_DEVICE_SOUND 0x0000001d +#define FILE_DEVICE_STREAMS 0x0000001e +#define FILE_DEVICE_TAPE 0x0000001f +#define FILE_DEVICE_TAPE_FILE_SYSTEM 0x00000020 +#define FILE_DEVICE_TRANSPORT 0x00000021 +#define FILE_DEVICE_UNKNOWN 0x00000022 +#define FILE_DEVICE_VIDEO 0x00000023 +#define FILE_DEVICE_VIRTUAL_DISK 0x00000024 +#define FILE_DEVICE_WAVE_IN 0x00000025 +#define FILE_DEVICE_WAVE_OUT 0x00000026 +#define FILE_DEVICE_8042_PORT 0x00000027 +#define FILE_DEVICE_NETWORK_REDIRECTOR 0x00000028 +#define FILE_DEVICE_BATTERY 0x00000029 +#define FILE_DEVICE_BUS_EXTENDER 0x0000002a +#define FILE_DEVICE_MODEM 0x0000002b +#define FILE_DEVICE_VDM 0x0000002c +#define FILE_DEVICE_MASS_STORAGE 0x0000002d +#define FILE_DEVICE_SMB 0x0000002e +#define FILE_DEVICE_KS 0x0000002f +#define FILE_DEVICE_CHANGER 0x00000030 +#define FILE_DEVICE_SMARTCARD 0x00000031 +#define FILE_DEVICE_ACPI 0x00000032 +#define FILE_DEVICE_DVD 0x00000033 +#define FILE_DEVICE_FULLSCREEN_VIDEO 0x00000034 +#define FILE_DEVICE_DFS_FILE_SYSTEM 0x00000035 +#define FILE_DEVICE_DFS_VOLUME 0x00000036 +#define FILE_DEVICE_SERENUM 0x00000037 +#define FILE_DEVICE_TERMSRV 0x00000038 +#define FILE_DEVICE_KSEC 0x00000039 +#define FILE_DEVICE_FIPS 0x0000003a +#define CTL_CODE(DeviceType, Function, Method, Access)( \ + ((DeviceType) << 16) | ((Access) << 14) | ((Function) << 2) | (Method)) +#define FSCTL_REQUEST_OPLOCK_LEVEL_1 CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 0, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_REQUEST_OPLOCK_LEVEL_2 CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 1, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_REQUEST_BATCH_OPLOCK CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 2, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_OPLOCK_BREAK_ACKNOWLEDGE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 3, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_OPBATCH_ACK_CLOSE_PENDING CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 4, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_OPLOCK_BREAK_NOTIFY CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 5, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_LOCK_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 6, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_UNLOCK_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 7, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_DISMOUNT_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 8, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define FSCTL_IS_VOLUME_MOUNTED CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 10, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_IS_PATHNAME_VALID CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 11, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_MARK_VOLUME_DIRTY CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 12, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define FSCTL_QUERY_RETRIEVAL_POINTERS CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 14, METHOD_NEITHER, FILE_ANY_ACCESS) +#define FSCTL_GET_COMPRESSION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 15, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_SET_COMPRESSION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 16, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA) + + +#define FSCTL_MARK_AS_SYSTEM_HIVE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 19, METHOD_NEITHER, FILE_ANY_ACCESS) +#define FSCTL_OPLOCK_BREAK_ACK_NO_2 CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 20, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_INVALIDATE_VOLUMES CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 21, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_QUERY_FAT_BPB CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 22, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_REQUEST_FILTER_OPLOCK CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 23, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_FILESYSTEM_GET_STATISTICS CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 24, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_GET_NTFS_VOLUME_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 25, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_GET_NTFS_FILE_RECORD CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 26, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_GET_VOLUME_BITMAP CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 27, METHOD_NEITHER, FILE_ANY_ACCESS) +#define FSCTL_GET_RETRIEVAL_POINTERS CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 28, METHOD_NEITHER, FILE_ANY_ACCESS) +#define FSCTL_MOVE_FILE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 29, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_IS_VOLUME_DIRTY CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 30, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_GET_HFS_INFORMATION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 31, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_ALLOW_EXTENDED_DASD_IO CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 32, METHOD_NEITHER, FILE_ANY_ACCESS) +#define FSCTL_READ_PROPERTY_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 33, METHOD_NEITHER, FILE_ANY_ACCESS) +#define FSCTL_WRITE_PROPERTY_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 34, METHOD_NEITHER, FILE_ANY_ACCESS) +#define FSCTL_FIND_FILES_BY_SID CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 35, METHOD_NEITHER, FILE_ANY_ACCESS) +#define FSCTL_DUMP_PROPERTY_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 37, METHOD_NEITHER, FILE_ANY_ACCESS) +#define FSCTL_SET_OBJECT_ID CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 38, METHOD_BUFFERED, FILE_WRITE_DATA) +#define FSCTL_GET_OBJECT_ID CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 39, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_DELETE_OBJECT_ID CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 40, METHOD_BUFFERED, FILE_WRITE_DATA) +#define FSCTL_SET_REPARSE_POINT CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 41, METHOD_BUFFERED, FILE_WRITE_DATA) +#define FSCTL_GET_REPARSE_POINT CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 42, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_DELETE_REPARSE_POINT CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 43, METHOD_BUFFERED, FILE_WRITE_DATA) +#define FSCTL_ENUM_USN_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 44, METHOD_NEITHER, FILE_READ_DATA) +#define FSCTL_SECURITY_ID_CHECK CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 45, METHOD_NEITHER, FILE_READ_DATA) +#define FSCTL_READ_USN_JOURNAL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 46, METHOD_NEITHER, FILE_READ_DATA) +#define FSCTL_SET_OBJECT_ID_EXTENDED CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 47, METHOD_BUFFERED, FILE_WRITE_DATA) +#define FSCTL_CREATE_OR_GET_OBJECT_ID CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 48, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_SET_SPARSE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 49, METHOD_BUFFERED, FILE_WRITE_DATA) +#define FSCTL_SET_ZERO_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 50, METHOD_BUFFERED, FILE_WRITE_DATA) +#define FSCTL_QUERY_ALLOCATED_RANGES CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 51, METHOD_NEITHER, FILE_READ_DATA) +#define FSCTL_ENABLE_UPGRADE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 52, METHOD_BUFFERED, FILE_WRITE_DATA) +#define FSCTL_SET_ENCRYPTION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 53, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_ENCRYPTION_FSCTL_IO CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 54, METHOD_NEITHER, FILE_ANY_ACCESS) +#define FSCTL_WRITE_RAW_ENCRYPTED CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 55, METHOD_NEITHER, FILE_ANY_ACCESS) +#define FSCTL_READ_RAW_ENCRYPTED CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 56, METHOD_NEITHER, FILE_ANY_ACCESS) +#define FSCTL_CREATE_USN_JOURNAL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 57, METHOD_NEITHER, FILE_READ_DATA) +#define FSCTL_READ_FILE_USN_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 58, METHOD_NEITHER, FILE_READ_DATA) +#define FSCTL_WRITE_USN_CLOSE_RECORD CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 59, METHOD_NEITHER, FILE_READ_DATA) +#define FSCTL_EXTEND_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 60, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_QUERY_USN_JOURNAL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 61, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_DELETE_USN_JOURNAL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 62, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_MARK_HANDLE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 63, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_SIS_COPYFILE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 64, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_SIS_LINK_FILES CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 65, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA) +#define FSCTL_HSM_MSG CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 66, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA) +#define FSCTL_NSS_CONTROL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 67, METHOD_BUFFERED, FILE_WRITE_DATA) +#define FSCTL_HSM_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 68, METHOD_NEITHER, FILE_READ_DATA | FILE_WRITE_DATA) +#define FSCTL_RECALL_FILE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 69, METHOD_NEITHER, FILE_ANY_ACCESS) +#define FSCTL_NSS_RCONTROL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 70, METHOD_BUFFERED, FILE_READ_DATA) +#define FSCTL_READ_FROM_PLEX CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 71, METHOD_OUT_DIRECT, FILE_READ_DATA) +#define FSCTL_FILE_PREFETCH CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 72, METHOD_BUFFERED, FILE_SPECIAL_ACCESS) + + +#define FSCTL_MAILSLOT_PEEK CTL_CODE(FILE_DEVICE_MAILSLOT, 0, METHOD_NEITHER, FILE_READ_DATA) + +#define FSCTL_NETWORK_SET_CONFIGURATION_INFO CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 102, METHOD_IN_DIRECT, FILE_ANY_ACCESS) +#define FSCTL_NETWORK_GET_CONFIGURATION_INFO CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 103, METHOD_OUT_DIRECT, FILE_ANY_ACCESS) +#define FSCTL_NETWORK_GET_CONNECTION_INFO CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 104, METHOD_NEITHER, FILE_ANY_ACCESS) +#define FSCTL_NETWORK_ENUMERATE_CONNECTIONS CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 105, METHOD_NEITHER, FILE_ANY_ACCESS) +#define FSCTL_NETWORK_DELETE_CONNECTION CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 107, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_NETWORK_GET_STATISTICS CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 116, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_NETWORK_SET_DOMAIN_NAME CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 120, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_NETWORK_REMOTE_BOOT_INIT_SCRT CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 250, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#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) + +#define IOCTL_REDIR_QUERY_PATH CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 99, METHOD_NEITHER, FILE_ANY_ACCESS) + +#define IOCTL_DISK_BASE FILE_DEVICE_DISK +#define IOCTL_DISK_GET_DRIVE_GEOMETRY \ + CTL_CODE(IOCTL_DISK_BASE, 0x0000, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_DISK_GET_PARTITION_INFO \ + CTL_CODE(IOCTL_DISK_BASE, 0x0001, METHOD_BUFFERED, FILE_READ_ACCESS) + +#define NtCurrentProcess() ( (HANDLE)(LONG_PTR) -1 ) +#define ZwCurrentProcess() NtCurrentProcess() +#define NtCurrentThread() ( (HANDLE)(LONG_PTR) -2 ) +#define ZwCurrentThread() NtCurrentThread() + +typedef struct _KTHREAD *PKTHREAD, *PRKTHREAD; + +typedef CONST int CINT; +typedef LONG KPRIORITY; +typedef LONG NTSTATUS, *PNTSTATUS; +typedef UCHAR KIRQL, *PKIRQL; +typedef ULONG_PTR KSPIN_LOCK, *PKSPIN_LOCK; +typedef ULONG WAIT_TYPE; +typedef struct _PEB *PPEB; +typedef CONST char *PCSZ; +typedef ULONG KPROCESSOR_MODE; +typedef PVOID PTHREAD_START_ROUTINE; +typedef short CSHORT; +typedef CSHORT *PCSHORT; +#define STATIC static + +typedef enum _MODE +{ + KernelMode, + UserMode, + MaximumMode +} MODE; + +typedef struct _UNICODE_STRING { + USHORT Length; + USHORT MaximumLength; + PWSTR Buffer; +} UNICODE_STRING, *PUNICODE_STRING; + +typedef const UNICODE_STRING* PCUNICODE_STRING; + +typedef struct _STRING { + USHORT Length; + USHORT MaximumLength; + PCHAR Buffer; +} STRING, *PSTRING; + +typedef STRING ANSI_STRING; +typedef PSTRING PANSI_STRING; +typedef STRING OEM_STRING; +typedef PSTRING POEM_STRING; +typedef LARGE_INTEGER PHYSICAL_ADDRESS, *PPHYSICAL_ADDRESS; + +typedef enum _SECTION_INHERIT { + ViewShare = 1, + ViewUnmap = 2 +} SECTION_INHERIT; + +typedef struct _OBJECT_ATTRIBUTES { + ULONG Length; + HANDLE RootDirectory; + PUNICODE_STRING ObjectName; + ULONG Attributes; + PVOID SecurityDescriptor; + PVOID SecurityQualityOfService; +} OBJECT_ATTRIBUTES, *POBJECT_ATTRIBUTES; + +typedef ULONG KAFFINITY, *PKAFFINITY; + +typedef struct _CLIENT_ID { + HANDLE UniqueProcess; + HANDLE UniqueThread; +} CLIENT_ID, *PCLIENT_ID; + +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 _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; + +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 _IO_STATUS_BLOCK { + _ANONYMOUS_UNION union { + NTSTATUS Status; + PVOID Pointer; + } DUMMYUNIONNAME; + 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 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_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 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; + +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); + +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 struct _KEY_VALUE_ENTRY { + PUNICODE_STRING ValueName; + ULONG DataLength; + ULONG DataOffset; + ULONG Type; +} KEY_VALUE_ENTRY, *PKEY_VALUE_ENTRY; + +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; + +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 _FILE_ZERO_DATA_INFORMATION { + LARGE_INTEGER FileOffset; + LARGE_INTEGER BeyondFinalZero; +} FILE_ZERO_DATA_INFORMATION, *PFILE_ZERO_DATA_INFORMATION; + +typedef struct FILE_ALLOCATED_RANGE_BUFFER { + LARGE_INTEGER FileOffset; + LARGE_INTEGER Length; +} FILE_ALLOCATED_RANGE_BUFFER, *PFILE_ALLOCATED_RANGE_BUFFER; + +typedef struct _DISPATCHER_HEADER { + UCHAR Type; + UCHAR Absolute; + UCHAR Size; + UCHAR Inserted; + LONG SignalState; + LIST_ENTRY WaitListHead; +} DISPATCHER_HEADER, *PDISPATCHER_HEADER; + +typedef struct _KEVENT { + DISPATCHER_HEADER Header; +} KEVENT, *PKEVENT; + +typedef struct _KSEMAPHORE { + DISPATCHER_HEADER Header; + LONG Limit; +} KSEMAPHORE, *PKSEMAPHORE; + +typedef struct _FAST_MUTEX { + LONG Count; + struct _KTHREAD *Owner; + ULONG Contention; + KEVENT Event; + ULONG OldIrql; +} FAST_MUTEX, *PFAST_MUTEX; + +typedef struct _KTIMER { + DISPATCHER_HEADER Header; + ULARGE_INTEGER DueTime; + LIST_ENTRY TimerListEntry; + struct _KDPC *Dpc; + LONG Period; +} KTIMER, *PKTIMER; + +typedef struct _KMUTANT { + DISPATCHER_HEADER Header; + LIST_ENTRY MutantListEntry; + struct _KTHREAD *OwnerThread; + BOOLEAN Abandoned; + UCHAR ApcDisable; +} KMUTANT, *PKMUTANT, KMUTEX, *PKMUTEX; + +typedef struct _PROCESS_BASIC_INFORMATION +{ + NTSTATUS ExitStatus; + PPEB PebBaseAddress; + KAFFINITY AffinityMask; + KPRIORITY BasePriority; + ULONG UniqueProcessId; + ULONG InheritedFromUniqueProcessId; +} PROCESS_BASIC_INFORMATION, *PPROCESS_BASIC_INFORMATION; + +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, + Spare3, + Spare4, + Spare5, + Spare6, + WrKernel, + MaximumWaitReason +} KWAIT_REASON; + +#define PROCESSOR_FEATURE_MAX 64 +#define KI_USER_SHARED_DATA 0xffdf0000 + +typedef struct _KSYSTEM_TIME { + ULONG LowPart; + LONG High1Time; + LONG High2Time; +} KSYSTEM_TIME, *PKSYSTEM_TIME; + +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; + +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; + +#define MAXIMUM_LEADBYTES 12 + +typedef struct _CPTABLEINFO +{ + USHORT CodePage; + USHORT MaximumCharacterSize; + USHORT DefaultChar; + USHORT UniDefaultChar; + USHORT TransDefaultChar; + USHORT TransUniDefaultChar; + USHORT DBCSCodePage; + UCHAR LeadByte[MAXIMUM_LEADBYTES]; + PUSHORT MultiByteTable; + PVOID WideCharTable; + PUSHORT DBCSRanges; + PUSHORT DBCSOffsets; +} CPTABLEINFO, *PCPTABLEINFO; + +typedef struct _NLSTABLEINFO +{ + CPTABLEINFO OemTableInfo; + CPTABLEINFO AnsiTableInfo; + PUSHORT UpperCaseTable; + PUSHORT LowerCaseTable; +} NLSTABLEINFO, *PNLSTABLEINFO; + +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; +typedef 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; +typedef VM_COUNTERS_EX *PVM_COUNTERS_EX; + +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; +typedef RTL_SPLAY_LINKS *PRTL_SPLAY_LINKS; + +struct _RTL_AVL_TABLE; +struct _RTL_GENERIC_TABLE; + +typedef enum _TABLE_SEARCH_RESULT{ + TableEmptyTree, + TableFoundNode, + TableInsertAsLeft, + TableInsertAsRight +} TABLE_SEARCH_RESULT; + +typedef +NTSTATUS STDCALL (*PRTL_AVL_MATCH_FUNCTION)( + struct _RTL_AVL_TABLE *Table, + PVOID UserData, + PVOID MatchData +); + +typedef enum _RTL_GENERIC_COMPARE_RESULTS +{ + GenericLessThan, + GenericGreaterThan, + GenericEqual +} RTL_GENERIC_COMPARE_RESULTS; + +typedef +RTL_GENERIC_COMPARE_RESULTS STDCALL +(*PRTL_AVL_COMPARE_ROUTINE) ( + struct _RTL_AVL_TABLE *Table, + PVOID FirstStruct, + PVOID SecondStruct +); + +typedef +RTL_GENERIC_COMPARE_RESULTS STDCALL +(*PRTL_GENERIC_COMPARE_ROUTINE)( + struct _RTL_GENERIC_TABLE *Table, + PVOID FirstStruct, + PVOID SecondStruct +); + +typedef +PVOID STDCALL +(*PRTL_GENERIC_ALLOCATE_ROUTINE) ( + struct _RTL_GENERIC_TABLE *Table, + LONG ByteSize +); + +typedef +VOID STDCALL +(*PRTL_GENERIC_FREE_ROUTINE) ( + struct _RTL_GENERIC_TABLE *Table, + PVOID Buffer +); + +typedef +VOID STDCALL +(*PRTL_AVL_ALLOCATE_ROUTINE) ( + struct _RTL_AVL_TABLE *Table, + LONG ByteSize +); + +typedef +VOID STDCALL +(*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; +typedef 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; +typedef 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; +typedef RTL_AVL_TABLE *PRTL_AVL_TABLE; + +#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 + +typedef NTSTATUS STDCALL +(*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 _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; + +#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 + +#define SID_MAX_SUB_AUTHORITIES 15 + +typedef struct _TIME_FIELDS +{ + CSHORT Year; + CSHORT Month; + CSHORT Day; + CSHORT Hour; + CSHORT Minute; + CSHORT Second; + CSHORT Milliseconds; + CSHORT Weekday; +} TIME_FIELDS; +typedef TIME_FIELDS *PTIME_FIELDS; + +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; +typedef 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; +typedef UNICODE_PREFIX_TABLE *PUNICODE_PREFIX_TABLE; + +#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 + +typedef LPOSVERSIONINFOW PRTL_OSVERSIONINFOW; +typedef OSVERSIONINFOEXW RTL_OSVERSIONINFOEXW; +typedef LPOSVERSIONINFOEXW PRTL_OSVERSIONINFOEXW; + +typedef enum _MEDIA_TYPE { + Unknown, + F5_1Pt2_512, + F3_1Pt44_512, + F3_2Pt88_512, + F3_20Pt8_512, + F3_720_512, + F5_360_512, + F5_320_512, + F5_320_1024, + F5_180_512, + F5_160_512, + RemovableMedia, + FixedMedia, + F3_120M_512, + F3_640_512, + F5_640_512, + F5_720_512, + F3_1Pt2_512, + F3_1Pt23_1024, + F5_1Pt23_1024, + F3_128Mb_512, + F3_230Mb_512, + F8_256_128 +} MEDIA_TYPE, *PMEDIA_TYPE; + +typedef struct _PARTITION_INFORMATION { + LARGE_INTEGER StartingOffset; + LARGE_INTEGER PartitionLength; + DWORD HiddenSectors; + DWORD PartitionNumber; + BYTE PartitionType; + BOOLEAN BootIndicator; + BOOLEAN RecognizedPartition; + BOOLEAN RewritePartition; +} PARTITION_INFORMATION, *PPARTITION_INFORMATION; + +typedef struct _DISK_GEOMETRY { + LARGE_INTEGER Cylinders; + MEDIA_TYPE MediaType; + ULONG TracksPerCylinder; + ULONG SectorsPerTrack; + ULONG BytesPerSector; +} DISK_GEOMETRY, *PDISK_GEOMETRY; +#endif + diff --git a/reactos/include/ndk/zwfuncs.h b/reactos/include/ndk/zwfuncs.h new file mode 100644 index 00000000000..a75a6c46829 --- /dev/null +++ b/reactos/include/ndk/zwfuncs.h @@ -0,0 +1,4075 @@ +/* + * PROJECT: ReactOS Native Headers + * FILE: include/ndk/zwfuncs.h + * PURPOSE: Defintions for Native Functions not defined in DDK/IFS + * PROGRAMMER: Alex Ionescu (alex@relsoft.net) + * UPDATE HISTORY: + * Created 06/10/04 + */ +#ifndef _ZWFUNCS_H +#define _ZWFUNCS_H + +/* DEPENDENCIES **************************************************************/ +#include "lpctypes.h" +#include "zwtypes.h" + +/* FUNCTION TYPES ************************************************************/ + +/* PROTOTYPES ****************************************************************/ + +/* FIXME: FILE NEEDS CLEANUP */ +NTSTATUS +STDCALL +NtAcceptConnectPort( + PHANDLE PortHandle, + HANDLE NamedPortHandle, + PLPC_MESSAGE ServerReply, + BOOLEAN AcceptIt, + PLPC_SECTION_WRITE WriteMap, + PLPC_SECTION_READ ReadMap +); + +NTSTATUS +STDCALL +NtAddBootEntry( + IN PUNICODE_STRING EntryName, + IN PUNICODE_STRING EntryValue +); + +NTSTATUS +STDCALL +ZwAddBootEntry( + IN PUNICODE_STRING EntryName, + IN PUNICODE_STRING EntryValue +); + +NTSTATUS +STDCALL +NtAdjustGroupsToken( + IN HANDLE TokenHandle, + IN BOOLEAN ResetToDefault, + IN PTOKEN_GROUPS NewState, + IN ULONG BufferLength, + OUT PTOKEN_GROUPS PreviousState OPTIONAL, + OUT PULONG ReturnLength +); + +NTSTATUS +STDCALL +ZwAdjustGroupsToken( + IN HANDLE TokenHandle, + IN BOOLEAN ResetToDefault, + IN PTOKEN_GROUPS NewState, + IN ULONG BufferLength, + OUT PTOKEN_GROUPS PreviousState, + OUT PULONG ReturnLength +); + +NTSTATUS +STDCALL +NtAdjustPrivilegesToken( + IN HANDLE TokenHandle, + IN BOOLEAN DisableAllPrivileges, + IN PTOKEN_PRIVILEGES NewState, + IN ULONG BufferLength, + OUT PTOKEN_PRIVILEGES PreviousState, + OUT PULONG ReturnLength +); + +NTSTATUS +STDCALL +ZwAdjustPrivilegesToken( + IN HANDLE TokenHandle, + IN BOOLEAN DisableAllPrivileges, + IN PTOKEN_PRIVILEGES NewState, + IN ULONG BufferLength, + OUT PTOKEN_PRIVILEGES PreviousState, + OUT PULONG ReturnLength +); + +NTSTATUS +STDCALL +NtAlertResumeThread( + IN HANDLE ThreadHandle, + OUT PULONG SuspendCount +); + +NTSTATUS +STDCALL +ZwAlertResumeThread( + IN HANDLE ThreadHandle, + OUT PULONG SuspendCount +); + +NTSTATUS +STDCALL +NtAlertThread( + IN HANDLE ThreadHandle +); + +NTSTATUS +STDCALL +ZwAlertThread( + IN HANDLE ThreadHandle +); + +NTSTATUS +STDCALL +NtAllocateLocallyUniqueId( + OUT LUID *LocallyUniqueId +); + +NTSTATUS +STDCALL +ZwAllocateLocallyUniqueId( + OUT PLUID Luid +); + +NTSTATUS +STDCALL +NtAllocateVirtualMemory ( + IN HANDLE ProcessHandle, + IN OUT PVOID *BaseAddress, + IN ULONG ZeroBits, + IN OUT PULONG RegionSize, + IN ULONG AllocationType, + IN ULONG Protect +); + +NTSTATUS +STDCALL +ZwAllocateVirtualMemory ( + IN HANDLE ProcessHandle, + IN OUT PVOID *BaseAddress, + IN ULONG ZeroBits, + IN OUT PULONG RegionSize, + IN ULONG AllocationType, + IN ULONG Protect +); + +NTSTATUS +STDCALL +NtAssignProcessToJobObject( + HANDLE JobHandle, + HANDLE ProcessHandle) +; + +NTSTATUS +STDCALL +ZwAssignProcessToJobObject( + HANDLE JobHandle, + HANDLE ProcessHandle +); + +NTSTATUS +STDCALL +NtCallbackReturn( + PVOID Result, + ULONG ResultLength, + NTSTATUS Status +); + +NTSTATUS +STDCALL +ZwCallbackReturn( + PVOID Result, + ULONG ResultLength, + NTSTATUS Status +); + +NTSTATUS +STDCALL +NtCancelIoFile( + IN HANDLE FileHandle, + OUT PIO_STATUS_BLOCK IoStatusBlock +); + +NTSTATUS +STDCALL +ZwCancelIoFile( + IN HANDLE FileHandle, + OUT PIO_STATUS_BLOCK IoStatusBlock +); + +NTSTATUS +STDCALL +NtClearEvent( + IN HANDLE EventHandle +); + +NTSTATUS +STDCALL +ZwClearEvent( + IN HANDLE EventHandle +); + +NTSTATUS +STDCALL +NtCreateJobObject( + PHANDLE JobHandle, + ACCESS_MASK DesiredAccess, + POBJECT_ATTRIBUTES ObjectAttributes +); + +NTSTATUS +STDCALL +ZwCreateJobObject( + PHANDLE JobHandle, + ACCESS_MASK DesiredAccess, + POBJECT_ATTRIBUTES ObjectAttributes +); + +NTSTATUS +STDCALL +NtClose( + IN HANDLE Handle +); + +NTSTATUS +STDCALL +ZwClose( + IN HANDLE Handle +); + +NTSTATUS +STDCALL +NtCloseObjectAuditAlarm( + IN PUNICODE_STRING SubsystemName, + IN PVOID HandleId, + IN BOOLEAN GenerateOnClose +); + +NTSTATUS +STDCALL +ZwCloseObjectAuditAlarm( + IN PUNICODE_STRING SubsystemName, + IN PVOID HandleId, + IN BOOLEAN GenerateOnClose +); + +NTSTATUS +STDCALL +NtCompleteConnectPort( + HANDLE PortHandle +); + +NTSTATUS +STDCALL +ZwCompleteConnectPort( + HANDLE PortHandle +); + +NTSTATUS +STDCALL +NtConnectPort( + PHANDLE PortHandle, + PUNICODE_STRING PortName, + PSECURITY_QUALITY_OF_SERVICE SecurityQos, + PLPC_SECTION_WRITE SectionInfo, + PLPC_SECTION_READ MapInfo, + PULONG MaxMessageSize, + PVOID ConnectInfo, + PULONG ConnectInfoLength +); + +NTSTATUS +STDCALL +ZwConnectPort( + PHANDLE PortHandle, + PUNICODE_STRING PortName, + PSECURITY_QUALITY_OF_SERVICE SecurityQos, + PLPC_SECTION_WRITE SectionInfo, + PLPC_SECTION_READ MapInfo, + PULONG MaxMessageSize, + PVOID ConnectInfo, + PULONG ConnectInfoLength +); + +NTSTATUS +STDCALL +NtCreateDirectoryObject( + OUT PHANDLE DirectoryHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes +); + +NTSTATUS +STDCALL +ZwCreateDirectoryObject( + OUT PHANDLE DirectoryHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes +); + +NTSTATUS +STDCALL +NtCreateEvent( + OUT PHANDLE EventHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes, + IN EVENT_TYPE EventType, + IN BOOLEAN InitialState +); + +NTSTATUS +STDCALL +ZwCreateEvent( + OUT PHANDLE EventHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes, + IN EVENT_TYPE EventType, + IN BOOLEAN InitialState +); + +NTSTATUS +STDCALL +NtCreateEventPair( + OUT PHANDLE EventPairHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes +); + +NTSTATUS +STDCALL +ZwCreateEventPair( + OUT PHANDLE EventPairHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes +); + +NTSTATUS +STDCALL +NtCreateFile( + OUT PHANDLE FileHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN PLARGE_INTEGER AllocationSize OPTIONAL, + IN ULONG FileAttributes, + IN ULONG ShareAccess, + IN ULONG CreateDisposition, + IN ULONG CreateOptions, + IN PVOID EaBuffer OPTIONAL, + IN ULONG EaLength +); + +NTSTATUS +STDCALL +ZwCreateFile( + OUT PHANDLE FileHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN PLARGE_INTEGER AllocationSize OPTIONAL, + IN ULONG FileAttributes, + IN ULONG ShareAccess, + IN ULONG CreateDisposition, + IN ULONG CreateOptions, + IN PVOID EaBuffer OPTIONAL, + IN ULONG EaLength +); + +NTSTATUS +STDCALL +NtCreateIoCompletion( + OUT PHANDLE IoCompletionHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes, + IN ULONG NumberOfConcurrentThreads + ); + +NTSTATUS +STDCALL +ZwCreateIoCompletion( + OUT PHANDLE IoCompletionHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes, + IN ULONG NumberOfConcurrentThreads + ); + +NTSTATUS +STDCALL +NtCreateKey( + OUT PHANDLE KeyHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes, + IN ULONG TitleIndex, + IN PUNICODE_STRING Class OPTIONAL, + IN ULONG CreateOptions, + IN PULONG Disposition OPTIONAL +); + +NTSTATUS +STDCALL +ZwCreateKey( + OUT PHANDLE KeyHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes, + IN ULONG TitleIndex, + IN PUNICODE_STRING Class OPTIONAL, + IN ULONG CreateOptions, + IN PULONG Disposition OPTIONAL +); + +NTSTATUS +STDCALL +NtCreateMailslotFile( + OUT PHANDLE MailSlotFileHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN ULONG FileAttributes, + IN ULONG ShareAccess, + IN ULONG MaxMessageSize, + IN PLARGE_INTEGER TimeOut +); + +NTSTATUS +STDCALL +ZwCreateMailslotFile( + OUT PHANDLE MailSlotFileHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN ULONG FileAttributes, + IN ULONG ShareAccess, + IN ULONG MaxMessageSize, + IN PLARGE_INTEGER TimeOut +); + +NTSTATUS +STDCALL +NtCreateMutant( + OUT PHANDLE MutantHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes, + IN BOOLEAN InitialOwner +); + +NTSTATUS +STDCALL +ZwCreateMutant( + OUT PHANDLE MutantHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes, + IN BOOLEAN InitialOwner +); + +NTSTATUS +STDCALL +NtCreateNamedPipeFile( + OUT PHANDLE NamedPipeFileHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN ULONG ShareAccess, + IN ULONG CreateDisposition, + IN ULONG CreateOptions, + IN ULONG WriteModeMessage, + IN ULONG ReadModeMessage, + IN ULONG NonBlocking, + IN ULONG MaxInstances, + IN ULONG InBufferSize, + IN ULONG OutBufferSize, + IN PLARGE_INTEGER DefaultTimeOut +); + +NTSTATUS +STDCALL +ZwCreateNamedPipeFile( + OUT PHANDLE NamedPipeFileHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN ULONG ShareAccess, + IN ULONG CreateDisposition, + IN ULONG CreateOptions, + IN ULONG WriteModeMessage, + IN ULONG ReadModeMessage, + IN ULONG NonBlocking, + IN ULONG MaxInstances, + IN ULONG InBufferSize, + IN ULONG OutBufferSize, + IN PLARGE_INTEGER DefaultTimeOut +); + +NTSTATUS +STDCALL +NtCreatePort( + PHANDLE PortHandle, + POBJECT_ATTRIBUTES ObjectAttributes, + ULONG MaxConnectInfoLength, + ULONG MaxDataLength, + ULONG NPMessageQueueSize OPTIONAL +); + +NTSTATUS +STDCALL +NtCreatePort( + PHANDLE PortHandle, + POBJECT_ATTRIBUTES ObjectAttributes, + ULONG MaxConnectInfoLength, + ULONG MaxDataLength, + ULONG NPMessageQueueSize OPTIONAL +); + +NTSTATUS +STDCALL +NtCreateProcess( + OUT PHANDLE ProcessHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, + IN HANDLE ParentProcess, + IN BOOLEAN InheritObjectTable, + IN HANDLE SectionHandle OPTIONAL, + IN HANDLE DebugPort OPTIONAL, + IN HANDLE ExceptionPort OPTIONAL +); + +NTSTATUS +STDCALL +ZwCreateProcess( + OUT PHANDLE ProcessHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, + IN HANDLE ParentProcess, + IN BOOLEAN InheritObjectTable, + IN HANDLE SectionHandle OPTIONAL, + IN HANDLE DebugPort OPTIONAL, + IN HANDLE ExceptionPort OPTIONAL +); + +NTSTATUS +STDCALL +NtCreateSection( + OUT PHANDLE SectionHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, + IN PLARGE_INTEGER MaximumSize OPTIONAL, + IN ULONG SectionPageProtection OPTIONAL, + IN ULONG AllocationAttributes, + IN HANDLE FileHandle OPTIONAL +); + +NTSTATUS +STDCALL +ZwCreateSection( + OUT PHANDLE SectionHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, + IN PLARGE_INTEGER MaximumSize OPTIONAL, + IN ULONG SectionPageProtection OPTIONAL, + IN ULONG AllocationAttributes, + IN HANDLE FileHandle OPTIONAL +); + +NTSTATUS +STDCALL +NtCreateSemaphore( + OUT PHANDLE SemaphoreHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, + IN LONG InitialCount, + IN LONG MaximumCount +); + +NTSTATUS +STDCALL +ZwCreateSemaphore( + OUT PHANDLE SemaphoreHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, + IN LONG InitialCount, + IN LONG MaximumCount +); + +NTSTATUS +STDCALL +NtCreateSymbolicLinkObject( + OUT PHANDLE SymbolicLinkHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes, + IN PUNICODE_STRING Name +); + +NTSTATUS +STDCALL +ZwCreateSymbolicLinkObject( + OUT PHANDLE SymbolicLinkHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes, + IN PUNICODE_STRING Name +); + +NTSTATUS +STDCALL +NtCreateTimer( + OUT PHANDLE TimerHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, + IN TIMER_TYPE TimerType +); + +NTSTATUS +STDCALL +ZwCreateTimer( + OUT PHANDLE TimerHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, + IN TIMER_TYPE TimerType +); + +NTSTATUS +STDCALL +NtCreateToken( + OUT PHANDLE TokenHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes, + IN TOKEN_TYPE TokenType, + IN PLUID AuthenticationId, + IN PLARGE_INTEGER ExpirationTime, + IN PTOKEN_USER TokenUser, + IN PTOKEN_GROUPS TokenGroups, + IN PTOKEN_PRIVILEGES TokenPrivileges, + IN PTOKEN_OWNER TokenOwner, + IN PTOKEN_PRIMARY_GROUP TokenPrimaryGroup, + IN PTOKEN_DEFAULT_DACL TokenDefaultDacl, + IN PTOKEN_SOURCE TokenSource +); + +NTSTATUS +STDCALL +ZwCreateToken( + OUT PHANDLE TokenHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes, + IN TOKEN_TYPE TokenType, + IN PLUID AuthenticationId, + IN PLARGE_INTEGER ExpirationTime, + IN PTOKEN_USER TokenUser, + IN PTOKEN_GROUPS TokenGroups, + IN PTOKEN_PRIVILEGES TokenPrivileges, + IN PTOKEN_OWNER TokenOwner, + IN PTOKEN_PRIMARY_GROUP TokenPrimaryGroup, + IN PTOKEN_DEFAULT_DACL TokenDefaultDacl, + IN PTOKEN_SOURCE TokenSource +); + +NTSTATUS +STDCALL +NtCreateWaitablePort( + PHANDLE PortHandle, + POBJECT_ATTRIBUTES ObjectAttributes, + ULONG MaxConnectInfoLength, + ULONG MaxDataLength, + ULONG NPMessageQueueSize OPTIONAL +); + +NTSTATUS +STDCALL +ZwCreateWaitablePort( + PHANDLE PortHandle, + POBJECT_ATTRIBUTES ObjectAttributes, + ULONG MaxConnectInfoLength, + ULONG MaxDataLength, + ULONG NPMessageQueueSize OPTIONAL +); + +NTSTATUS +STDCALL +NtDeleteAtom( + IN RTL_ATOM Atom +); + +NTSTATUS +STDCALL +ZwDeleteAtom( + IN RTL_ATOM Atom +); + +NTSTATUS +STDCALL +NtDeleteBootEntry( + IN PUNICODE_STRING EntryName, + IN PUNICODE_STRING EntryValue +); + +NTSTATUS +STDCALL +ZwDeleteBootEntry( + IN PUNICODE_STRING EntryName, + IN PUNICODE_STRING EntryValue +); + +NTSTATUS +STDCALL +NtDeleteFile( + IN POBJECT_ATTRIBUTES ObjectAttributes +); + +NTSTATUS +STDCALL +ZwDeleteFile( + IN POBJECT_ATTRIBUTES ObjectAttributes +); + +NTSTATUS +STDCALL +NtDeleteKey( + IN HANDLE KeyHandle +); + +NTSTATUS +STDCALL +ZwDeleteKey( + IN HANDLE KeyHandle +); + +NTSTATUS +STDCALL +NtDeleteObjectAuditAlarm( + IN PUNICODE_STRING SubsystemName, + IN PVOID HandleId, + IN BOOLEAN GenerateOnClose +); + +NTSTATUS +STDCALL +ZwDeleteObjectAuditAlarm( + IN PUNICODE_STRING SubsystemName, + IN PVOID HandleId, + IN BOOLEAN GenerateOnClose +); + +NTSTATUS +STDCALL +NtDeleteValueKey( + IN HANDLE KeyHandle, + IN PUNICODE_STRING ValueName +); + +NTSTATUS +STDCALL +ZwDeleteValueKey( + IN HANDLE KeyHandle, + IN PUNICODE_STRING ValueName +); + +NTSTATUS +STDCALL +NtDeviceIoControlFile( + IN HANDLE DeviceHandle, + IN HANDLE Event OPTIONAL, + IN PIO_APC_ROUTINE UserApcRoutine OPTIONAL, + IN PVOID UserApcContext OPTIONAL, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN ULONG IoControlCode, + IN PVOID InputBuffer, + IN ULONG InputBufferSize, + OUT PVOID OutputBuffer, + IN ULONG OutputBufferSize +); + +NTSTATUS +STDCALL +ZwDeviceIoControlFile( + IN HANDLE DeviceHandle, + IN HANDLE Event OPTIONAL, + IN PIO_APC_ROUTINE UserApcRoutine OPTIONAL, + IN PVOID UserApcContext OPTIONAL, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN ULONG IoControlCode, + IN PVOID InputBuffer, + IN ULONG InputBufferSize, + OUT PVOID OutputBuffer, + IN ULONG OutputBufferSize +); + +NTSTATUS +STDCALL +NtDisplayString( + IN PUNICODE_STRING DisplayString +); + +NTSTATUS +STDCALL +ZwDisplayString( + IN PUNICODE_STRING DisplayString +); + +NTSTATUS +STDCALL +NtEnumerateBootEntries( + IN ULONG Unknown1, + IN ULONG Unknown2 +); + +NTSTATUS +STDCALL +ZwEnumerateBootEntries( + IN ULONG Unknown1, + IN ULONG Unknown2 +); + +NTSTATUS +STDCALL +NtEnumerateKey( + IN HANDLE KeyHandle, + IN ULONG Index, + IN KEY_INFORMATION_CLASS KeyInformationClass, + OUT PVOID KeyInformation, + IN ULONG Length, + OUT PULONG ResultLength +); + +NTSTATUS +STDCALL +ZwEnumerateKey( + IN HANDLE KeyHandle, + IN ULONG Index, + IN KEY_INFORMATION_CLASS KeyInformationClass, + OUT PVOID KeyInformation, + IN ULONG Length, + OUT PULONG ResultLength +); +NTSTATUS +STDCALL +NtEnumerateValueKey( + IN HANDLE KeyHandle, + IN ULONG Index, + IN KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass, + OUT PVOID KeyValueInformation, + IN ULONG Length, + OUT PULONG ResultLength +); + +NTSTATUS +STDCALL +ZwEnumerateValueKey( + IN HANDLE KeyHandle, + IN ULONG Index, + IN KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass, + OUT PVOID KeyValueInformation, + IN ULONG Length, + OUT PULONG ResultLength +); + +NTSTATUS +STDCALL +NtFlushBuffersFile( + IN HANDLE FileHandle, + OUT PIO_STATUS_BLOCK IoStatusBlock +); + +NTSTATUS +STDCALL +ZwFlushBuffersFile( + IN HANDLE FileHandle, + OUT PIO_STATUS_BLOCK IoStatusBlock +); + +NTSTATUS +STDCALL +NtFlushKey( + IN HANDLE KeyHandle +); + +NTSTATUS +STDCALL +ZwFlushKey( + IN HANDLE KeyHandle +); + +NTSTATUS +STDCALL +NtFlushWriteBuffer(VOID); + +NTSTATUS +STDCALL +ZwFlushWriteBuffer(VOID); + +NTSTATUS +STDCALL +NtFreeVirtualMemory( + IN HANDLE ProcessHandle, + IN PVOID *BaseAddress, + IN PULONG RegionSize, + IN ULONG FreeType +); + +NTSTATUS +STDCALL +ZwFreeVirtualMemory( + IN HANDLE ProcessHandle, + IN PVOID *BaseAddress, + IN PULONG RegionSize, + IN ULONG FreeType +); + +NTSTATUS +STDCALL +NtFsControlFile( + IN HANDLE DeviceHandle, + IN HANDLE Event OPTIONAL, + IN PIO_APC_ROUTINE ApcRoutine OPTIONAL, + IN PVOID ApcContext OPTIONAL, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN ULONG IoControlCode, + IN PVOID InputBuffer, + IN ULONG InputBufferSize, + OUT PVOID OutputBuffer, + IN ULONG OutputBufferSize +); + +NTSTATUS +STDCALL +ZwFsControlFile( + IN HANDLE DeviceHandle, + IN HANDLE Event OPTIONAL, + IN PIO_APC_ROUTINE ApcRoutine OPTIONAL, + IN PVOID ApcContext OPTIONAL, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN ULONG IoControlCode, + IN PVOID InputBuffer, + IN ULONG InputBufferSize, + OUT PVOID OutputBuffer, + IN ULONG OutputBufferSize +); + +NTSTATUS +STDCALL +NtGetContextThread( + IN HANDLE ThreadHandle, + OUT PCONTEXT Context +); + +NTSTATUS +STDCALL +ZwGetContextThread( + IN HANDLE ThreadHandle, + OUT PCONTEXT Context +); + +NTSTATUS +STDCALL +NtImpersonateClientOfPort( + HANDLE PortHandle, + PLPC_MESSAGE ClientMessage +); + +NTSTATUS +STDCALL +ZwImpersonateClientOfPort( + HANDLE PortHandle, + PLPC_MESSAGE ClientMessage +); + +NTSTATUS +STDCALL +NtImpersonateThread( + IN HANDLE ThreadHandle, + IN HANDLE ThreadToImpersonate, + IN PSECURITY_QUALITY_OF_SERVICE SecurityQualityOfService +); + +NTSTATUS +STDCALL +ZwImpersonateThread( + IN HANDLE ThreadHandle, + IN HANDLE ThreadToImpersonate, + IN PSECURITY_QUALITY_OF_SERVICE SecurityQualityOfService +); + +NTSTATUS +STDCALL +NtInitiatePowerAction( + POWER_ACTION SystemAction, + SYSTEM_POWER_STATE MinSystemState, + ULONG Flags, + BOOLEAN Asynchronous +); + +NTSTATUS +STDCALL +ZwInitiatePowerAction( + POWER_ACTION SystemAction, + SYSTEM_POWER_STATE MinSystemState, + ULONG Flags, + BOOLEAN Asynchronous +); + +NTSTATUS +STDCALL +NtInitializeRegistry( + BOOLEAN SetUpBoot +); + +NTSTATUS +STDCALL +ZwInitializeRegistry( + BOOLEAN SetUpBoot +); + +NTSTATUS +STDCALL +NtIsProcessInJob( + IN HANDLE ProcessHandle, + IN HANDLE JobHandle OPTIONAL +); + +NTSTATUS +STDCALL +ZwIsProcessInJob( + IN HANDLE ProcessHandle, + IN HANDLE JobHandle OPTIONAL +); + +NTSTATUS +STDCALL +NtListenPort(HANDLE PortHandle, + PLPC_MESSAGE LpcMessage +); + +NTSTATUS +STDCALL +ZwListenPort(HANDLE PortHandle, + PLPC_MESSAGE LpcMessage +); + +STDCALL +NtLoadDriver( + IN PUNICODE_STRING DriverServiceName +); + +NTSTATUS +STDCALL +ZwLoadDriver( + IN PUNICODE_STRING DriverServiceName +); + +NTSTATUS +STDCALL +NtLockFile( + IN HANDLE FileHandle, + IN HANDLE Event OPTIONAL, + IN PIO_APC_ROUTINE ApcRoutine OPTIONAL, + IN PVOID ApcContext OPTIONAL, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN PLARGE_INTEGER ByteOffset, + IN PLARGE_INTEGER Length, + IN PULONG Key, + IN BOOLEAN FailImmediatedly, + IN BOOLEAN ExclusiveLock +); + +NTSTATUS +STDCALL +ZwLockFile( + IN HANDLE FileHandle, + IN HANDLE Event OPTIONAL, + IN PIO_APC_ROUTINE ApcRoutine OPTIONAL, + IN PVOID ApcContext OPTIONAL, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN PLARGE_INTEGER ByteOffset, + IN PLARGE_INTEGER Length, + IN PULONG Key, + IN BOOLEAN FailImmediatedly, + IN BOOLEAN ExclusiveLock +); + +NTSTATUS +STDCALL +NtMakePermanentObject( + IN HANDLE Object +); + +NTSTATUS +STDCALL +ZwMakePermanentObject( + IN HANDLE Object +); + +NTSTATUS +STDCALL +NtMakeTemporaryObject( + IN HANDLE Handle +); + +NTSTATUS +STDCALL +ZwMakeTemporaryObject( + IN HANDLE Handle +); + +NTSTATUS +STDCALL +NtMapViewOfSection( + IN HANDLE SectionHandle, + IN HANDLE ProcessHandle, + IN OUT PVOID *BaseAddress, + IN ULONG ZeroBits, + IN ULONG CommitSize, + IN OUT PLARGE_INTEGER SectionOffset OPTIONAL, + IN OUT PULONG ViewSize, + IN SECTION_INHERIT InheritDisposition, + IN ULONG AllocationType, + IN ULONG AccessProtection +); + +NTSTATUS +STDCALL +ZwMapViewOfSection( + IN HANDLE SectionHandle, + IN HANDLE ProcessHandle, + IN OUT PVOID *BaseAddress, + IN ULONG ZeroBits, + IN ULONG CommitSize, + IN OUT PLARGE_INTEGER SectionOffset OPTIONAL, + IN OUT PULONG ViewSize, + IN SECTION_INHERIT InheritDisposition, + IN ULONG AllocationType, + IN ULONG AccessProtection +); + +NTSTATUS +STDCALL +NtNotifyChangeDirectoryFile( + IN HANDLE FileHandle, + IN HANDLE Event OPTIONAL, + IN PIO_APC_ROUTINE ApcRoutine OPTIONAL, + IN PVOID ApcContext OPTIONAL, + OUT PIO_STATUS_BLOCK IoStatusBlock, + OUT PVOID Buffer, + IN ULONG BufferSize, + IN ULONG CompletionFilter, + IN BOOLEAN WatchTree +); + +NTSTATUS +STDCALL +ZwNotifyChangeDirectoryFile( + IN HANDLE FileHandle, + IN HANDLE Event OPTIONAL, + IN PIO_APC_ROUTINE ApcRoutine OPTIONAL, + IN PVOID ApcContext OPTIONAL, + OUT PIO_STATUS_BLOCK IoStatusBlock, + OUT PVOID Buffer, + IN ULONG BufferSize, + IN ULONG CompletionFilter, + IN BOOLEAN WatchTree +); + +NTSTATUS +STDCALL +NtNotifyChangeKey( + IN HANDLE KeyHandle, + IN HANDLE Event, + IN PIO_APC_ROUTINE ApcRoutine OPTIONAL, + IN PVOID ApcContext OPTIONAL, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN ULONG CompletionFilter, + IN BOOLEAN Asynchroneous, + OUT PVOID ChangeBuffer, + IN ULONG Length, + IN BOOLEAN WatchSubtree +); + +NTSTATUS +STDCALL +ZwNotifyChangeKey( + IN HANDLE KeyHandle, + IN HANDLE Event, + IN PIO_APC_ROUTINE ApcRoutine OPTIONAL, + IN PVOID ApcContext OPTIONAL, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN ULONG CompletionFilter, + IN BOOLEAN Asynchroneous, + OUT PVOID ChangeBuffer, + IN ULONG Length, + IN BOOLEAN WatchSubtree +); + +NTSTATUS +STDCALL +NtOpenDirectoryObject( + OUT PHANDLE FileHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes +); + +NTSTATUS +STDCALL +ZwOpenDirectoryObject( + OUT PHANDLE FileHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes +); + +NTSTATUS +STDCALL +NtOpenEvent( + OUT PHANDLE EventHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes +); + +NTSTATUS +STDCALL +ZwOpenEvent( + OUT PHANDLE EventHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes +); + +NTSTATUS +STDCALL +NtOpenEventPair( + OUT PHANDLE EventPairHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes +); + +NTSTATUS +STDCALL +ZwOpenEventPair( + OUT PHANDLE EventPairHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes +); + +NTSTATUS +STDCALL +NtOpenFile( + OUT PHANDLE FileHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN ULONG ShareAccess, + IN ULONG OpenOptions +); + +NTSTATUS +STDCALL +ZwOpenFile( + OUT PHANDLE FileHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN ULONG ShareAccess, + IN ULONG OpenOptions +); + +NTSTATUS +STDCALL +NtOpenIoCompletion( + OUT PHANDLE CompetionPort, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes +); + +NTSTATUS +STDCALL +ZwOpenIoCompletion( + OUT PHANDLE CompetionPort, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes +); + +NTSTATUS +STDCALL +NtOpenJobObject( + PHANDLE JobHandle, + ACCESS_MASK DesiredAccess, + POBJECT_ATTRIBUTES ObjectAttributes +); + +NTSTATUS +STDCALL +ZwOpenJobObject( + PHANDLE JobHandle, + ACCESS_MASK DesiredAccess, + POBJECT_ATTRIBUTES ObjectAttributes +); + +NTSTATUS +STDCALL +NtOpenKey( + OUT PHANDLE KeyHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes +); + +NTSTATUS +STDCALL +ZwOpenKey( + OUT PHANDLE KeyHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes +); + +NTSTATUS +STDCALL +NtOpenMutant( + OUT PHANDLE MutantHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes +); + +NTSTATUS +STDCALL +ZwOpenMutant( + OUT PHANDLE MutantHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes +); + +NTSTATUS +STDCALL +NtOpenProcess( + OUT PHANDLE ProcessHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes, + IN PCLIENT_ID ClientId +); + +NTSTATUS +STDCALL +ZwOpenProcess( + OUT PHANDLE ProcessHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes, + IN PCLIENT_ID ClientId +); + +NTSTATUS +STDCALL +NtOpenProcessToken( + IN HANDLE ProcessHandle, + IN ACCESS_MASK DesiredAccess, + OUT PHANDLE TokenHandle +); + +NTSTATUS +STDCALL +ZwOpenProcessToken( + IN HANDLE ProcessHandle, + IN ACCESS_MASK DesiredAccess, + OUT PHANDLE TokenHandle +); + +NTSTATUS +STDCALL +NtOpenProcessTokenEx( + IN HANDLE ProcessHandle, + IN ACCESS_MASK DesiredAccess, + IN ULONG HandleAttributes, + OUT PHANDLE TokenHandle +); + +NTSTATUS +STDCALL +ZwOpenProcessTokenEx( + IN HANDLE ProcessHandle, + IN ACCESS_MASK DesiredAccess, + IN ULONG HandleAttributes, + OUT PHANDLE TokenHandle +); + +NTSTATUS +STDCALL +NtOpenSection( + OUT PHANDLE SectionHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes +); + +NTSTATUS +STDCALL +ZwOpenSection( + OUT PHANDLE SectionHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes +); + +NTSTATUS +STDCALL +NtOpenSemaphore( + IN HANDLE SemaphoreHandle, + IN ACCESS_MASK DesiredAcces, + IN POBJECT_ATTRIBUTES ObjectAttributes +); + +NTSTATUS +STDCALL +ZwOpenSemaphore( + IN HANDLE SemaphoreHandle, + IN ACCESS_MASK DesiredAcces, + IN POBJECT_ATTRIBUTES ObjectAttributes +); + +NTSTATUS +STDCALL +NtOpenSymbolicLinkObject( + OUT PHANDLE SymbolicLinkHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes +); + +NTSTATUS +STDCALL +ZwOpenSymbolicLinkObject( + OUT PHANDLE SymbolicLinkHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes +); + +NTSTATUS +STDCALL +NtOpenThread( + OUT PHANDLE ThreadHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes, + IN PCLIENT_ID ClientId +); + +NTSTATUS +STDCALL +ZwOpenThread( + OUT PHANDLE ThreadHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes, + IN PCLIENT_ID ClientId +); + +NTSTATUS +STDCALL +NtOpenThreadToken( + IN HANDLE ThreadHandle, + IN ACCESS_MASK DesiredAccess, + IN BOOLEAN OpenAsSelf, + OUT PHANDLE TokenHandle +); + +NTSTATUS +STDCALL +ZwOpenThreadToken( + IN HANDLE ThreadHandle, + IN ACCESS_MASK DesiredAccess, + IN BOOLEAN OpenAsSelf, + OUT PHANDLE TokenHandle +); + +NTSTATUS +STDCALL +NtOpenThreadTokenEx( + IN HANDLE ThreadHandle, + IN ACCESS_MASK DesiredAccess, + IN BOOLEAN OpenAsSelf, + IN ULONG HandleAttributes, + OUT PHANDLE TokenHandle +); + +NTSTATUS +STDCALL +ZwOpenThreadTokenEx( + IN HANDLE ThreadHandle, + IN ACCESS_MASK DesiredAccess, + IN BOOLEAN OpenAsSelf, + IN ULONG HandleAttributes, + OUT PHANDLE TokenHandle +); + +NTSTATUS +STDCALL +NtOpenTimer( + OUT PHANDLE TimerHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes +); +NTSTATUS +STDCALL +ZwOpenTimer( + OUT PHANDLE TimerHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes +); + +NTSTATUS +STDCALL +NtPowerInformation( + POWER_INFORMATION_LEVEL PowerInformationLevel, + PVOID InputBuffer, + ULONG InputBufferLength, + PVOID OutputBuffer, + ULONG OutputBufferLength +); + +NTSTATUS +STDCALL +ZwPowerInformation( + POWER_INFORMATION_LEVEL PowerInformationLevel, + PVOID InputBuffer, + ULONG InputBufferLength, + PVOID OutputBuffer, + ULONG OutputBufferLength +); + +NTSTATUS +STDCALL +NtPrivilegeCheck( + IN HANDLE ClientToken, + IN PPRIVILEGE_SET RequiredPrivileges, + IN PBOOLEAN Result +); + +NTSTATUS +STDCALL +ZwPrivilegeCheck( + IN HANDLE ClientToken, + IN PPRIVILEGE_SET RequiredPrivileges, + IN PBOOLEAN Result +); + +NTSTATUS +STDCALL +NtPrivilegedServiceAuditAlarm( + IN PUNICODE_STRING SubsystemName, + IN PUNICODE_STRING ServiceName, + IN HANDLE ClientToken, + IN PPRIVILEGE_SET Privileges, + IN BOOLEAN AccessGranted +); + +NTSTATUS +STDCALL +ZwPrivilegedServiceAuditAlarm( + IN PUNICODE_STRING SubsystemName, + IN PUNICODE_STRING ServiceName, + IN HANDLE ClientToken, + IN PPRIVILEGE_SET Privileges, + IN BOOLEAN AccessGranted +); + +NTSTATUS +STDCALL +NtPrivilegeObjectAuditAlarm( + IN PUNICODE_STRING SubsystemName, + IN PVOID HandleId, + IN HANDLE ClientToken, + IN ULONG DesiredAccess, + IN PPRIVILEGE_SET Privileges, + IN BOOLEAN AccessGranted +); + +NTSTATUS +STDCALL +ZwPrivilegeObjectAuditAlarm( + IN PUNICODE_STRING SubsystemName, + IN PVOID HandleId, + IN HANDLE ClientToken, + IN ULONG DesiredAccess, + IN PPRIVILEGE_SET Privileges, + IN BOOLEAN AccessGranted +); + +NTSTATUS +STDCALL +NtPulseEvent( + IN HANDLE EventHandle, + IN PLONG PulseCount OPTIONAL +); + +NTSTATUS +STDCALL +ZwPulseEvent( + IN HANDLE EventHandle, + IN PLONG PulseCount OPTIONAL +); + +NTSTATUS +STDCALL +NtQueryAttributesFile( + IN POBJECT_ATTRIBUTES ObjectAttributes, + OUT PFILE_BASIC_INFORMATION FileInformation +); + +NTSTATUS +STDCALL +ZwQueryAttributesFile( + IN POBJECT_ATTRIBUTES ObjectAttributes, + OUT PFILE_BASIC_INFORMATION FileInformation +); + + +NTSTATUS +STDCALL +NtQueryBootEntryOrder( + IN ULONG Unknown1, + IN ULONG Unknown2 +); + +NTSTATUS +STDCALL +ZwQueryBootEntryOrder( + IN ULONG Unknown1, + IN ULONG Unknown2 +); + +NTSTATUS +STDCALL +NtQueryBootOptions( + IN ULONG Unknown1, + IN ULONG Unknown2 +); + +NTSTATUS +STDCALL +ZwQueryBootOptions( + IN ULONG Unknown1, + IN ULONG Unknown2 +); +NTSTATUS +STDCALL +NtQueryDefaultLocale( + IN BOOLEAN UserProfile, + OUT PLCID DefaultLocaleId +); + +NTSTATUS +STDCALL +ZwQueryDefaultLocale( + IN BOOLEAN UserProfile, + OUT PLCID DefaultLocaleId +); + +NTSTATUS +STDCALL +NtQueryDefaultUILanguage( + PLANGID LanguageId +); + +NTSTATUS +STDCALL +ZwQueryDefaultUILanguage( + PLANGID LanguageId +); + +NTSTATUS +STDCALL +NtQueryDirectoryFile( + IN HANDLE FileHandle, + IN HANDLE Event OPTIONAL, + IN PIO_APC_ROUTINE ApcRoutine OPTIONAL, + IN PVOID ApcContext OPTIONAL, + OUT PIO_STATUS_BLOCK IoStatusBlock, + OUT PVOID FileInformation, + IN ULONG Length, + IN FILE_INFORMATION_CLASS FileInformationClass, + IN BOOLEAN ReturnSingleEntry, + IN PUNICODE_STRING FileName OPTIONAL, + IN BOOLEAN RestartScan +); + +NTSTATUS +STDCALL +ZwQueryDirectoryFile( + IN HANDLE FileHandle, + IN HANDLE Event OPTIONAL, + IN PIO_APC_ROUTINE ApcRoutine OPTIONAL, + IN PVOID ApcContext OPTIONAL, + OUT PIO_STATUS_BLOCK IoStatusBlock, + OUT PVOID FileInformation, + IN ULONG Length, + IN FILE_INFORMATION_CLASS FileInformationClass, + IN BOOLEAN ReturnSingleEntry, + IN PUNICODE_STRING FileName OPTIONAL, + IN BOOLEAN RestartScan +); + +NTSTATUS +STDCALL +NtQueryEaFile( + IN HANDLE FileHandle, + OUT PIO_STATUS_BLOCK IoStatusBlock, + OUT PVOID Buffer, + IN ULONG Length, + IN BOOLEAN ReturnSingleEntry, + IN PVOID EaList OPTIONAL, + IN ULONG EaListLength, + IN PULONG EaIndex OPTIONAL, + IN BOOLEAN RestartScan +); + +NTSTATUS +STDCALL +ZwQueryEaFile( + IN HANDLE FileHandle, + OUT PIO_STATUS_BLOCK IoStatusBlock, + OUT PVOID Buffer, + IN ULONG Length, + IN BOOLEAN ReturnSingleEntry, + IN PVOID EaList OPTIONAL, + IN ULONG EaListLength, + IN PULONG EaIndex OPTIONAL, + IN BOOLEAN RestartScan +); + +NTSTATUS +STDCALL +NtQueryEvent( + IN HANDLE EventHandle, + IN EVENT_INFORMATION_CLASS EventInformationClass, + OUT PVOID EventInformation, + IN ULONG EventInformationLength, + OUT PULONG ReturnLength +); +NTSTATUS +STDCALL +ZwQueryEvent( + IN HANDLE EventHandle, + IN EVENT_INFORMATION_CLASS EventInformationClass, + OUT PVOID EventInformation, + IN ULONG EventInformationLength, + OUT PULONG ReturnLength +); + +NTSTATUS +STDCALL +NtQueryFullAttributesFile( + IN POBJECT_ATTRIBUTES ObjectAttributes, + OUT PFILE_NETWORK_OPEN_INFORMATION FileInformation +); + +NTSTATUS +STDCALL +ZwQueryFullAttributesFile( + IN POBJECT_ATTRIBUTES ObjectAttributes, + OUT PFILE_NETWORK_OPEN_INFORMATION FileInformation +); + +NTSTATUS +STDCALL +NtQueryInformationFile( + IN HANDLE FileHandle, + OUT PIO_STATUS_BLOCK IoStatusBlock, + OUT PVOID FileInformation, + IN ULONG Length, + IN FILE_INFORMATION_CLASS FileInformationClass +); + +NTSTATUS +STDCALL +ZwQueryInformationFile( + HANDLE FileHandle, + PIO_STATUS_BLOCK IoStatusBlock, + PVOID FileInformation, + ULONG Length, + FILE_INFORMATION_CLASS FileInformationClass +); + +NTSTATUS +STDCALL +NtQueryInformationJobObject( + HANDLE JobHandle, + JOBOBJECTINFOCLASS JobInformationClass, + PVOID JobInformation, + ULONG JobInformationLength, + PULONG ReturnLength +); + +NTSTATUS +STDCALL +ZwQueryInformationJobObject( + HANDLE JobHandle, + JOBOBJECTINFOCLASS JobInformationClass, + PVOID JobInformation, + ULONG JobInformationLength, + PULONG ReturnLength +); + +NTSTATUS +STDCALL +NtQueryInformationPort( + HANDLE PortHandle, + CINT PortInformationClass, + PVOID PortInformation, + ULONG PortInformationLength, + PULONG ReturnLength +); + +NTSTATUS +STDCALL +ZwQueryInformationPort( + HANDLE PortHandle, + CINT PortInformationClass, + PVOID PortInformation, + ULONG PortInformationLength, + PULONG ReturnLength +); + +#ifndef _NTDDK_ +NTSTATUS +STDCALL +NtQueryInformationProcess( + IN HANDLE ProcessHandle, + IN PROCESSINFOCLASS ProcessInformationClass, + OUT PVOID ProcessInformation, + IN ULONG ProcessInformationLength, + OUT PULONG ReturnLength OPTIONAL +); + +NTSTATUS +STDCALL +ZwQueryInformationProcess( + IN HANDLE ProcessHandle, + IN PROCESSINFOCLASS ProcessInformationClass, + OUT PVOID ProcessInformation, + IN ULONG ProcessInformationLength, + OUT PULONG ReturnLength OPTIONAL +); +#endif + +NTSTATUS +STDCALL +NtQueryInformationThread( + IN HANDLE ThreadHandle, + IN THREADINFOCLASS ThreadInformationClass, + OUT PVOID ThreadInformation, + IN ULONG ThreadInformationLength, + OUT PULONG ReturnLength +); + +NTSTATUS +STDCALL +ZwQueryInformationThread( + IN HANDLE ThreadHandle, + IN THREADINFOCLASS ThreadInformationClass, + OUT PVOID ThreadInformation, + IN ULONG ThreadInformationLength, + OUT PULONG ReturnLength +); + +NTSTATUS +STDCALL +NtQueryInformationToken( + IN HANDLE TokenHandle, + IN TOKEN_INFORMATION_CLASS TokenInformationClass, + OUT PVOID TokenInformation, + IN ULONG TokenInformationLength, + OUT PULONG ReturnLength +); + +NTSTATUS +STDCALL +ZwQueryInformationToken( + IN HANDLE TokenHandle, + IN TOKEN_INFORMATION_CLASS TokenInformationClass, + OUT PVOID TokenInformation, + IN ULONG TokenInformationLength, + OUT PULONG ReturnLength +); + +NTSTATUS +STDCALL +NtQueryInstallUILanguage( + PLANGID LanguageId +); + +NTSTATUS +STDCALL +ZwQueryInstallUILanguage( + PLANGID LanguageId +); + +NTSTATUS +STDCALL +NtQueryIoCompletion( + IN HANDLE IoCompletionHandle, + IN IO_COMPLETION_INFORMATION_CLASS IoCompletionInformationClass, + OUT PVOID IoCompletionInformation, + IN ULONG IoCompletionInformationLength, + OUT PULONG ResultLength OPTIONAL +); + +NTSTATUS +STDCALL +ZwQueryIoCompletion( + IN HANDLE IoCompletionHandle, + IN IO_COMPLETION_INFORMATION_CLASS IoCompletionInformationClass, + OUT PVOID IoCompletionInformation, + IN ULONG IoCompletionInformationLength, + OUT PULONG ResultLength OPTIONAL +); + +NTSTATUS +STDCALL +NtQueryKey( + IN HANDLE KeyHandle, + IN KEY_INFORMATION_CLASS KeyInformationClass, + OUT PVOID KeyInformation, + IN ULONG Length, + OUT PULONG ResultLength +); + +NTSTATUS +STDCALL +ZwQueryKey( + IN HANDLE KeyHandle, + IN KEY_INFORMATION_CLASS KeyInformationClass, + OUT PVOID KeyInformation, + IN ULONG Length, + OUT PULONG ResultLength +); + +NTSTATUS +STDCALL +NtQueryQuotaInformationFile( + IN HANDLE FileHandle, + OUT PIO_STATUS_BLOCK IoStatusBlock, + OUT PVOID Buffer, + IN ULONG Length, + IN BOOLEAN ReturnSingleEntry, + IN PVOID SidList OPTIONAL, + IN ULONG SidListLength, + IN PSID StartSid OPTIONAL, + IN BOOLEAN RestartScan +); + + +NTSTATUS +STDCALL +ZwQueryQuotaInformationFile( + IN HANDLE FileHandle, + OUT PIO_STATUS_BLOCK IoStatusBlock, + OUT PVOID Buffer, + IN ULONG Length, + IN BOOLEAN ReturnSingleEntry, + IN PVOID SidList OPTIONAL, + IN ULONG SidListLength, + IN PSID StartSid OPTIONAL, + IN BOOLEAN RestartScan +); + +NTSTATUS +STDCALL +NtQueryMultipleValueKey( + IN HANDLE KeyHandle, + IN OUT PKEY_VALUE_ENTRY ValueList, + IN ULONG NumberOfValues, + OUT PVOID Buffer, + IN OUT PULONG Length, + OUT PULONG ReturnLength +); + +NTSTATUS +STDCALL +ZwQueryMultipleValueKey( + IN HANDLE KeyHandle, + IN OUT PKEY_VALUE_ENTRY ValueList, + IN ULONG NumberOfValues, + OUT PVOID Buffer, + IN OUT PULONG Length, + OUT PULONG ReturnLength +); + +NTSTATUS +STDCALL +NtQueryMutant( + IN HANDLE MutantHandle, + IN MUTANT_INFORMATION_CLASS MutantInformationClass, + OUT PVOID MutantInformation, + IN ULONG Length, + OUT PULONG ResultLength +); + +NTSTATUS +STDCALL +ZwQueryMutant( + IN HANDLE MutantHandle, + IN MUTANT_INFORMATION_CLASS MutantInformationClass, + OUT PVOID MutantInformation, + IN ULONG Length, + OUT PULONG ResultLength +); + +NTSTATUS +STDCALL +NtQueryPerformanceCounter( + IN PLARGE_INTEGER Counter, + IN PLARGE_INTEGER Frequency +); + +NTSTATUS +STDCALL +ZwQueryPerformanceCounter( + IN PLARGE_INTEGER Counter, + IN PLARGE_INTEGER Frequency +); + +NTSTATUS +STDCALL +NtQuerySemaphore( + IN HANDLE SemaphoreHandle, + IN SEMAPHORE_INFORMATION_CLASS SemaphoreInformationClass, + OUT PVOID SemaphoreInformation, + IN ULONG Length, + OUT PULONG ReturnLength +); + +NTSTATUS +STDCALL +ZwQuerySemaphore( + IN HANDLE SemaphoreHandle, + IN SEMAPHORE_INFORMATION_CLASS SemaphoreInformationClass, + OUT PVOID SemaphoreInformation, + IN ULONG Length, + OUT PULONG ReturnLength +); + +NTSTATUS +STDCALL +NtQuerySymbolicLinkObject( + IN HANDLE SymLinkObjHandle, + OUT PUNICODE_STRING LinkTarget, + OUT PULONG DataWritten OPTIONAL +); + +NTSTATUS +STDCALL +ZwQuerySymbolicLinkObject( + IN HANDLE SymLinkObjHandle, + OUT PUNICODE_STRING LinkName, + OUT PULONG DataWritten OPTIONAL +); + +NTSTATUS +STDCALL +NtQuerySystemEnvironmentValue( + IN PUNICODE_STRING Name, + OUT PVOID Value, + ULONG Length, + PULONG ReturnLength +); + +NTSTATUS +STDCALL +ZwQuerySystemEnvironmentValue( + IN PUNICODE_STRING Name, + OUT PVOID Value, + ULONG Length, + PULONG ReturnLength +); + +NTSTATUS +STDCALL +NtQuerySystemInformation( + IN SYSTEM_INFORMATION_CLASS SystemInformationClass, + OUT PVOID SystemInformation, + IN ULONG Length, + OUT PULONG ResultLength +); + +NTSTATUS +STDCALL +ZwQuerySystemInformation( + IN SYSTEM_INFORMATION_CLASS SystemInformationClass, + OUT PVOID SystemInformation, + IN ULONG Length, + OUT PULONG ResultLength +); + +NTSTATUS +STDCALL +NtQuerySystemTime ( + OUT PLARGE_INTEGER CurrentTime +); + +NTSTATUS +STDCALL +NtQueryTimer( + IN HANDLE TimerHandle, + IN TIMER_INFORMATION_CLASS TimerInformationClass, + OUT PVOID TimerInformation, + IN ULONG Length, + OUT PULONG ResultLength +); +NTSTATUS +STDCALL +ZwQueryTimer( + IN HANDLE TimerHandle, + IN TIMER_INFORMATION_CLASS TimerInformationClass, + OUT PVOID TimerInformation, + IN ULONG Length, + OUT PULONG ResultLength +); + +NTSTATUS +STDCALL +NtQueryTimerResolution ( + OUT PULONG MinimumResolution, + OUT PULONG MaximumResolution, + OUT PULONG ActualResolution +); + +NTSTATUS +STDCALL +ZwQueryTimerResolution ( + OUT PULONG MinimumResolution, + OUT PULONG MaximumResolution, + OUT PULONG ActualResolution +); + +NTSTATUS +STDCALL +NtQueryValueKey( + IN HANDLE KeyHandle, + IN PUNICODE_STRING ValueName, + IN KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass, + OUT PVOID KeyValueInformation, + IN ULONG Length, + OUT PULONG ResultLength +); + +NTSTATUS +STDCALL +ZwQueryValueKey( + IN HANDLE KeyHandle, + IN PUNICODE_STRING ValueName, + IN KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass, + OUT PVOID KeyValueInformation, + IN ULONG Length, + OUT PULONG ResultLength +); + +NTSTATUS +STDCALL +NtQueryVolumeInformationFile( + IN HANDLE FileHandle, + OUT PIO_STATUS_BLOCK IoStatusBlock, + OUT PVOID FsInformation, + IN ULONG Length, + IN FS_INFORMATION_CLASS FsInformationClass +); + +NTSTATUS +STDCALL +ZwQueryVolumeInformationFile( + IN HANDLE FileHandle, + OUT PIO_STATUS_BLOCK IoStatusBlock, + OUT PVOID FsInformation, + IN ULONG Length, + IN FS_INFORMATION_CLASS FsInformationClass +); + +NTSTATUS +STDCALL +NtQueueApcThread( + HANDLE ThreadHandle, + PKNORMAL_ROUTINE ApcRoutine, + PVOID NormalContext, + PVOID SystemArgument1, + PVOID SystemArgument2 +); + +NTSTATUS +STDCALL +ZwQueueApcThread( + HANDLE ThreadHandle, + PKNORMAL_ROUTINE ApcRoutine, + PVOID NormalContext, + PVOID SystemArgument1, + PVOID SystemArgument2 +); + +NTSTATUS +STDCALL +NtRaiseException( + IN PEXCEPTION_RECORD ExceptionRecord, + IN PCONTEXT Context, + IN BOOLEAN SearchFrames +); + +NTSTATUS +STDCALL +ZwRaiseException( + IN PEXCEPTION_RECORD ExceptionRecord, + IN PCONTEXT Context, + IN BOOLEAN SearchFrames +); + +NTSTATUS +STDCALL +NtReadFile( + IN HANDLE FileHandle, + IN HANDLE Event OPTIONAL, + IN PIO_APC_ROUTINE UserApcRoutine OPTIONAL, + IN PVOID UserApcContext OPTIONAL, + OUT PIO_STATUS_BLOCK IoStatusBlock, + OUT PVOID Buffer, + IN ULONG BufferLength, + IN PLARGE_INTEGER ByteOffset OPTIONAL, + IN PULONG Key OPTIONAL +); + +NTSTATUS +STDCALL +ZwReadFile( + IN HANDLE FileHandle, + IN HANDLE Event OPTIONAL, + IN PIO_APC_ROUTINE UserApcRoutine OPTIONAL, + IN PVOID UserApcContext OPTIONAL, + OUT PIO_STATUS_BLOCK IoStatusBlock, + OUT PVOID Buffer, + IN ULONG BufferLength, + IN PLARGE_INTEGER ByteOffset OPTIONAL, + IN PULONG Key OPTIONAL +); + +NTSTATUS +STDCALL +NtReadFileScatter( + IN HANDLE FileHandle, + IN HANDLE Event OPTIONAL, + IN PIO_APC_ROUTINE UserApcRoutine OPTIONAL, + IN PVOID UserApcContext OPTIONAL, + OUT PIO_STATUS_BLOCK UserIoStatusBlock, + IN FILE_SEGMENT_ELEMENT BufferDescription[], + IN ULONG BufferLength, + IN PLARGE_INTEGER ByteOffset, + IN PULONG Key OPTIONAL +); + +NTSTATUS +STDCALL +ZwReadFileScatter( + IN HANDLE FileHandle, + IN HANDLE Event OPTIONAL, + IN PIO_APC_ROUTINE UserApcRoutine OPTIONAL, + IN PVOID UserApcContext OPTIONAL, + OUT PIO_STATUS_BLOCK UserIoStatusBlock, + IN FILE_SEGMENT_ELEMENT BufferDescription[], + IN ULONG BufferLength, + IN PLARGE_INTEGER ByteOffset, + IN PULONG Key OPTIONAL +); + +NTSTATUS +STDCALL +NtReadRequestData( + HANDLE PortHandle, + PLPC_MESSAGE Message, + ULONG Index, + PVOID Buffer, + ULONG BufferLength, + PULONG ReturnLength +); + +NTSTATUS +STDCALL +ZwReadRequestData( + HANDLE PortHandle, + PLPC_MESSAGE Message, + ULONG Index, + PVOID Buffer, + ULONG BufferLength, + PULONG ReturnLength +); + +NTSTATUS +STDCALL +NtReadVirtualMemory( + IN HANDLE ProcessHandle, + IN PVOID BaseAddress, + OUT PVOID Buffer, + IN ULONG NumberOfBytesToRead, + OUT PULONG NumberOfBytesRead +); +NTSTATUS +STDCALL +ZwReadVirtualMemory( + IN HANDLE ProcessHandle, + IN PVOID BaseAddress, + OUT PVOID Buffer, + IN ULONG NumberOfBytesToRead, + OUT PULONG NumberOfBytesRead +); + +NTSTATUS +STDCALL +NtRegisterThreadTerminatePort( + HANDLE TerminationPort +); + +NTSTATUS +STDCALL +ZwRegisterThreadTerminatePort( + HANDLE TerminationPort +); + +NTSTATUS +STDCALL +NtReleaseMutant( + IN HANDLE MutantHandle, + IN PLONG ReleaseCount OPTIONAL +); + +NTSTATUS +STDCALL +ZwReleaseMutant( + IN HANDLE MutantHandle, + IN PLONG ReleaseCount OPTIONAL +); + +NTSTATUS +STDCALL +NtReleaseSemaphore( + IN HANDLE SemaphoreHandle, + IN LONG ReleaseCount, + OUT PLONG PreviousCount +); + +NTSTATUS +STDCALL +ZwReleaseSemaphore( + IN HANDLE SemaphoreHandle, + IN LONG ReleaseCount, + OUT PLONG PreviousCount +); + +NTSTATUS +STDCALL +NtRemoveIoCompletion( + IN HANDLE IoCompletionHandle, + OUT PVOID *CompletionKey, + OUT PVOID *CompletionContext, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN PLARGE_INTEGER Timeout OPTIONAL +); + +NTSTATUS +STDCALL +ZwRemoveIoCompletion( + IN HANDLE IoCompletionHandle, + OUT PVOID *CompletionKey, + OUT PVOID *CompletionContext, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN PLARGE_INTEGER Timeout OPTIONAL +); + +NTSTATUS +STDCALL +NtReplaceKey( + IN POBJECT_ATTRIBUTES ObjectAttributes, + IN HANDLE Key, + IN POBJECT_ATTRIBUTES ReplacedObjectAttributes +); +NTSTATUS +STDCALL +ZwReplaceKey( + IN POBJECT_ATTRIBUTES ObjectAttributes, + IN HANDLE Key, + IN POBJECT_ATTRIBUTES ReplacedObjectAttributes +); + +NTSTATUS +STDCALL +NtReplyPort( + HANDLE PortHandle, + PLPC_MESSAGE LpcReply +); + +NTSTATUS +STDCALL +ZwReplyPort( + HANDLE PortHandle, + PLPC_MESSAGE LpcReply +); + +NTSTATUS +STDCALL +NtReplyWaitReceivePort( + HANDLE PortHandle, + PULONG PortId, + PLPC_MESSAGE MessageReply, + PLPC_MESSAGE MessageRequest +); + +NTSTATUS +STDCALL +ZwReplyWaitReceivePort( + HANDLE PortHandle, + PULONG PortId, + PLPC_MESSAGE MessageReply, + PLPC_MESSAGE MessageRequest +); + +NTSTATUS +STDCALL +NtReplyWaitReplyPort( + HANDLE PortHandle, + PLPC_MESSAGE ReplyMessage +); + +NTSTATUS +STDCALL +ZwReplyWaitReplyPort( + HANDLE PortHandle, + PLPC_MESSAGE ReplyMessage +); + +NTSTATUS +STDCALL +NtRequestPort( + HANDLE PortHandle, + PLPC_MESSAGE LpcMessage); + +NTSTATUS +STDCALL +ZwRequestPort( + HANDLE PortHandle, + PLPC_MESSAGE LpcMessage +); + +NTSTATUS +STDCALL +NtRequestWaitReplyPort( + HANDLE PortHandle, + PLPC_MESSAGE LpcReply, + PLPC_MESSAGE LpcRequest +); + +NTSTATUS +STDCALL +ZwRequestWaitReplyPort( + HANDLE PortHandle, + PLPC_MESSAGE LpcReply, + PLPC_MESSAGE LpcRequest +); + +NTSTATUS +STDCALL +NtResetEvent( + HANDLE EventHandle, + PLONG NumberOfWaitingThreads OPTIONAL +); + +NTSTATUS +STDCALL +ZwResetEvent( + HANDLE EventHandle, + PLONG NumberOfWaitingThreads OPTIONAL +); + +NTSTATUS +STDCALL +NtRestoreKey( + HANDLE KeyHandle, + HANDLE FileHandle, + ULONG RestoreFlags +); + +NTSTATUS +STDCALL +ZwRestoreKey( + HANDLE KeyHandle, + HANDLE FileHandle, + ULONG RestoreFlags +); + +NTSTATUS +STDCALL +NtResumeThread( + IN HANDLE ThreadHandle, + OUT PULONG SuspendCount +); + +NTSTATUS +STDCALL +ZwResumeThread( + IN HANDLE ThreadHandle, + OUT PULONG SuspendCount +); + +NTSTATUS +STDCALL +NtSaveKey( + IN HANDLE KeyHandle, + IN HANDLE FileHandle +); +NTSTATUS +STDCALL +ZwSaveKey( + IN HANDLE KeyHandle, + IN HANDLE FileHandle +); + +NTSTATUS +STDCALL +NtSaveKeyEx( + IN HANDLE KeyHandle, + IN HANDLE FileHandle, + IN ULONG Flags +); + +NTSTATUS +STDCALL +ZwSaveKeyEx( + IN HANDLE KeyHandle, + IN HANDLE FileHandle, + IN ULONG Flags +); + +NTSTATUS +STDCALL +NtSetBootEntryOrder( + IN ULONG Unknown1, + IN ULONG Unknown2 +); + +NTSTATUS +STDCALL +ZwSetBootEntryOrder( + IN ULONG Unknown1, + IN ULONG Unknown2 +); + +NTSTATUS +STDCALL +NtSetBootOptions( + ULONG Unknown1, + ULONG Unknown2 +); + +NTSTATUS +STDCALL +ZwSetBootOptions( + ULONG Unknown1, + ULONG Unknown2 +); + +NTSTATUS +STDCALL +NtSetContextThread( + IN HANDLE ThreadHandle, + IN PCONTEXT Context +); +NTSTATUS +STDCALL +ZwSetContextThread( + IN HANDLE ThreadHandle, + IN PCONTEXT Context +); + +NTSTATUS +STDCALL +NtSetDefaultLocale( + IN BOOLEAN UserProfile, + IN LCID DefaultLocaleId +); + +NTSTATUS +STDCALL +ZwSetDefaultLocale( + IN BOOLEAN UserProfile, + IN LCID DefaultLocaleId +); + +NTSTATUS +STDCALL +NtSetDefaultUILanguage( + LANGID LanguageId +); + +NTSTATUS +STDCALL +ZwSetDefaultUILanguage( + LANGID LanguageId +); +NTSTATUS +STDCALL +NtSetDefaultHardErrorPort( + IN HANDLE PortHandle +); +NTSTATUS +STDCALL +ZwSetDefaultHardErrorPort( + IN HANDLE PortHandle +); + +NTSTATUS +STDCALL +NtSetEaFile( + IN HANDLE FileHandle, + IN PIO_STATUS_BLOCK IoStatusBlock, + PVOID EaBuffer, + ULONG EaBufferSize +); + +NTSTATUS +STDCALL +ZwSetEaFile( + IN HANDLE FileHandle, + IN PIO_STATUS_BLOCK IoStatusBlock, + PVOID EaBuffer, + ULONG EaBufferSize +); + +NTSTATUS +STDCALL +NtSetEvent( + IN HANDLE EventHandle, + OUT PLONG PreviousState OPTIONAL +); + +NTSTATUS +STDCALL +ZwSetEvent( + IN HANDLE EventHandle, + OUT PLONG PreviousState OPTIONAL +); + +NTSTATUS +STDCALL +NtSetHighEventPair( + IN HANDLE EventPairHandle +); + +NTSTATUS +STDCALL +ZwSetHighEventPair( + IN HANDLE EventPairHandle +); +NTSTATUS +STDCALL +NtSetHighWaitLowEventPair( + IN HANDLE EventPairHandle +); +NTSTATUS +STDCALL +ZwSetHighWaitLowEventPair( + IN HANDLE EventPairHandle +); + +NTSTATUS +STDCALL +NtSetInformationFile( + IN HANDLE FileHandle, + IN PIO_STATUS_BLOCK IoStatusBlock, + IN PVOID FileInformation, + IN ULONG Length, + IN FILE_INFORMATION_CLASS FileInformationClass +); + +NTSTATUS +STDCALL +ZwSetInformationFile( + IN HANDLE FileHandle, + IN PIO_STATUS_BLOCK IoStatusBlock, + IN PVOID FileInformation, + IN ULONG Length, + IN FILE_INFORMATION_CLASS FileInformationClass +); + +NTSTATUS +STDCALL +NtSetInformationJobObject( + HANDLE JobHandle, + JOBOBJECTINFOCLASS JobInformationClass, + PVOID JobInformation, + ULONG JobInformationLength +); + +NTSTATUS +STDCALL +ZwSetInformationJobObject( + HANDLE JobHandle, + JOBOBJECTINFOCLASS JobInformationClass, + PVOID JobInformation, + ULONG JobInformationLength +); + +NTSTATUS +STDCALL +NtSetInformationThread( + IN HANDLE ThreadHandle, + IN THREADINFOCLASS ThreadInformationClass, + IN PVOID ThreadInformation, + IN ULONG ThreadInformationLength +); +NTSTATUS +STDCALL +ZwSetInformationThread( + IN HANDLE ThreadHandle, + IN THREADINFOCLASS ThreadInformationClass, + IN PVOID ThreadInformation, + IN ULONG ThreadInformationLength +); + +NTSTATUS +STDCALL +NtSetInformationToken( + IN HANDLE TokenHandle, + IN TOKEN_INFORMATION_CLASS TokenInformationClass, + OUT PVOID TokenInformation, + IN ULONG TokenInformationLength +); + +NTSTATUS +STDCALL +ZwSetInformationToken( + IN HANDLE TokenHandle, + IN TOKEN_INFORMATION_CLASS TokenInformationClass, + OUT PVOID TokenInformation, + IN ULONG TokenInformationLength +); + +NTSTATUS +STDCALL +NtSetIoCompletion( + IN HANDLE IoCompletionPortHandle, + IN PVOID CompletionKey, + IN PVOID CompletionContext, + IN NTSTATUS CompletionStatus, + IN ULONG CompletionInformation +); + +NTSTATUS +STDCALL +ZwSetIoCompletion( + IN HANDLE IoCompletionPortHandle, + IN PVOID CompletionKey, + IN PVOID CompletionContext, + IN NTSTATUS CompletionStatus, + IN ULONG CompletionInformation +); + +NTSTATUS +STDCALL +NtSetIntervalProfile( + ULONG Interval, + KPROFILE_SOURCE ClockSource +); + +NTSTATUS +STDCALL +ZwSetIntervalProfile( + ULONG Interval, + KPROFILE_SOURCE ClockSource +); + +NTSTATUS +STDCALL +NtSetLowEventPair( + HANDLE EventPair +); + +NTSTATUS +STDCALL +ZwSetLowEventPair( + HANDLE EventPair +); + +NTSTATUS +STDCALL +NtSetLowWaitHighEventPair( + HANDLE EventPair +); + +NTSTATUS +STDCALL +ZwSetLowWaitHighEventPair( + HANDLE EventPair +); + +NTSTATUS +STDCALL +NtSetQuotaInformationFile( + HANDLE FileHandle, + PIO_STATUS_BLOCK IoStatusBlock, + PFILE_USER_QUOTA_INFORMATION Buffer, + ULONG BufferLength +); + +NTSTATUS +STDCALL +ZwSetQuotaInformationFile( + HANDLE FileHandle, + PIO_STATUS_BLOCK IoStatusBlock, + PFILE_USER_QUOTA_INFORMATION Buffer, + ULONG BufferLength +); + +NTSTATUS +STDCALL +NtSetSecurityObject( + IN HANDLE Handle, + IN SECURITY_INFORMATION SecurityInformation, + IN PSECURITY_DESCRIPTOR SecurityDescriptor +); + +NTSTATUS +STDCALL +ZwSetSecurityObject( + IN HANDLE Handle, + IN SECURITY_INFORMATION SecurityInformation, + IN PSECURITY_DESCRIPTOR SecurityDescriptor +); + +NTSTATUS +STDCALL +NtSetSystemEnvironmentValue( + IN PUNICODE_STRING VariableName, + IN PUNICODE_STRING Value +); +NTSTATUS +STDCALL +ZwSetSystemEnvironmentValue( + IN PUNICODE_STRING VariableName, + IN PUNICODE_STRING Value +); + +NTSTATUS +STDCALL +NtSetSystemInformation( + IN SYSTEM_INFORMATION_CLASS SystemInformationClass, + IN PVOID SystemInformation, + IN ULONG SystemInformationLength +); + +NTSTATUS +STDCALL +ZwSetSystemInformation( + IN SYSTEM_INFORMATION_CLASS SystemInformationClass, + IN PVOID SystemInformation, + IN ULONG SystemInformationLength +); + +NTSTATUS +STDCALL +NtSetSystemTime( + IN PLARGE_INTEGER SystemTime, + IN PLARGE_INTEGER NewSystemTime OPTIONAL +); + +NTSTATUS +STDCALL +ZwSetSystemTime( + IN PLARGE_INTEGER SystemTime, + IN PLARGE_INTEGER NewSystemTime OPTIONAL +); + +NTSTATUS +STDCALL +NtSetTimerResolution( + IN ULONG RequestedResolution, + IN BOOLEAN SetOrUnset, + OUT PULONG ActualResolution +); + +NTSTATUS +STDCALL +ZwSetTimerResolution( + IN ULONG RequestedResolution, + IN BOOLEAN SetOrUnset, + OUT PULONG ActualResolution +); + +NTSTATUS +STDCALL +NtSetUuidSeed( + IN PUCHAR UuidSeed +); + +NTSTATUS +STDCALL +ZwSetUuidSeed( + IN PUCHAR UuidSeed +); + +NTSTATUS +STDCALL +NtSetValueKey( + IN HANDLE KeyHandle, + IN PUNICODE_STRING ValueName, + IN ULONG TitleIndex OPTIONAL, + IN ULONG Type, + IN PVOID Data, + IN ULONG DataSize +); + +NTSTATUS +STDCALL +ZwSetValueKey( + IN HANDLE KeyHandle, + IN PUNICODE_STRING ValueName, + IN ULONG TitleIndex OPTIONAL, + IN ULONG Type, + IN PVOID Data, + IN ULONG DataSize +); + +NTSTATUS +STDCALL +NtSetVolumeInformationFile( + IN HANDLE FileHandle, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN PVOID FsInformation, + IN ULONG Length, + IN FS_INFORMATION_CLASS FsInformationClass +); + +NTSTATUS +STDCALL +ZwSetVolumeInformationFile( + IN HANDLE FileHandle, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN PVOID FsInformation, + IN ULONG Length, + IN FS_INFORMATION_CLASS FsInformationClass +); + +NTSTATUS +STDCALL +NtShutdownSystem( + IN SHUTDOWN_ACTION Action +); + +NTSTATUS +STDCALL +ZwShutdownSystem( + IN SHUTDOWN_ACTION Action +); + +NTSTATUS +STDCALL +NtSignalAndWaitForSingleObject( + IN HANDLE SignalObject, + IN HANDLE WaitObject, + IN BOOLEAN Alertable, + IN PLARGE_INTEGER Time +); + +NTSTATUS +STDCALL +ZwSignalAndWaitForSingleObject( + IN HANDLE SignalObject, + IN HANDLE WaitObject, + IN BOOLEAN Alertable, + IN PLARGE_INTEGER Time +); + +NTSTATUS +STDCALL +NtStartProfile( + HANDLE ProfileHandle +); + +NTSTATUS +STDCALL +ZwStartProfile( + HANDLE ProfileHandle +); + +NTSTATUS +STDCALL +NtStopProfile( + HANDLE ProfileHandle +); + +NTSTATUS +STDCALL +ZwStopProfile( + HANDLE ProfileHandle +); + +NTSTATUS +STDCALL +NtTerminateProcess( + IN HANDLE ProcessHandle, + IN NTSTATUS ExitStatus +); + +NTSTATUS +STDCALL +ZwTerminateProcess( + IN HANDLE ProcessHandle, + IN NTSTATUS ExitStatus +); + +NTSTATUS +STDCALL +NtTerminateJobObject( + HANDLE JobHandle, + NTSTATUS ExitStatus +); + +NTSTATUS +STDCALL +ZwTerminateJobObject( + HANDLE JobHandle, + NTSTATUS ExitStatus +); + +NTSTATUS +STDCALL +NtTraceEvent( + IN ULONG TraceHandle, + IN ULONG Flags, + IN ULONG TraceHeaderLength, + IN struct _EVENT_TRACE_HEADER* TraceHeader +); + +NTSTATUS +STDCALL +ZwTraceEvent( + IN ULONG TraceHandle, + IN ULONG Flags, + IN ULONG TraceHeaderLength, + IN struct _EVENT_TRACE_HEADER* TraceHeader +); + +NTSTATUS +STDCALL +NtTranslateFilePath( + ULONG Unknown1, + ULONG Unknown2, + ULONG Unknown3 +); + +NTSTATUS +STDCALL +ZwTranslateFilePath( + ULONG Unknown1, + ULONG Unknown2, + ULONG Unknown3 +); + +NTSTATUS +STDCALL +NtUnloadDriver( + IN PUNICODE_STRING DriverServiceName +); + +NTSTATUS +STDCALL +ZwUnloadDriver( + IN PUNICODE_STRING DriverServiceName +); + +NTSTATUS +STDCALL +NtUnmapViewOfSection( + IN HANDLE ProcessHandle, + IN PVOID BaseAddress +); + +NTSTATUS +STDCALL +ZwUnmapViewOfSection( + IN HANDLE ProcessHandle, + IN PVOID BaseAddress +); + +NTSTATUS +STDCALL +NtWriteRequestData( + HANDLE PortHandle, + PLPC_MESSAGE Message, + ULONG Index, + PVOID Buffer, + ULONG BufferLength, + PULONG ReturnLength +); + +NTSTATUS +STDCALL +ZwWriteRequestData( + HANDLE PortHandle, + PLPC_MESSAGE Message, + ULONG Index, + PVOID Buffer, + ULONG BufferLength, + PULONG ReturnLength +); + +NTSTATUS +STDCALL +NtWriteVirtualMemory( + IN HANDLE ProcessHandle, + IN PVOID BaseAddress, + IN PVOID Buffer, + IN ULONG NumberOfBytesToWrite, + OUT PULONG NumberOfBytesWritten +); + +NTSTATUS +STDCALL +ZwWriteVirtualMemory( + IN HANDLE ProcessHandle, + IN PVOID BaseAddress, + IN PVOID Buffer, + IN ULONG NumberOfBytesToWrite, + OUT PULONG NumberOfBytesWritten +); + + +NTSTATUS +STDCALL +NtWaitForSingleObject ( + IN HANDLE Object, + IN BOOLEAN Alertable, + IN PLARGE_INTEGER Time +); + +NTSTATUS +STDCALL +ZwWaitForSingleObject ( + IN HANDLE Object, + IN BOOLEAN Alertable, + IN PLARGE_INTEGER Time +); + + +NTSTATUS +STDCALL +NtWaitHighEventPair( + IN HANDLE EventPairHandle +); + +NTSTATUS +STDCALL +ZwWaitHighEventPair( + IN HANDLE EventPairHandle +); + +NTSTATUS +STDCALL +NtWaitLowEventPair( + IN HANDLE EventPairHandle +); + +NTSTATUS +STDCALL +ZwWaitLowEventPair( + IN HANDLE EventPairHandle +); + +NTSTATUS +STDCALL +NtUnlockFile( + IN HANDLE FileHandle, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN PLARGE_INTEGER ByteOffset, + IN PLARGE_INTEGER Lenght, + OUT PULONG Key OPTIONAL +); +NTSTATUS +STDCALL +ZwUnlockFile( + IN HANDLE FileHandle, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN PLARGE_INTEGER ByteOffset, + IN PLARGE_INTEGER Lenght, + OUT PULONG Key OPTIONAL +); + + +NTSTATUS +STDCALL +NtWriteFile( + IN HANDLE FileHandle, + IN HANDLE Event OPTIONAL, + IN PIO_APC_ROUTINE ApcRoutine OPTIONAL, + IN PVOID ApcContext OPTIONAL, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN PVOID Buffer, + IN ULONG Length, + IN PLARGE_INTEGER ByteOffset, + IN PULONG Key OPTIONAL +); + +NTSTATUS +STDCALL +ZwWriteFile( + IN HANDLE FileHandle, + IN HANDLE Event OPTIONAL, + IN PIO_APC_ROUTINE ApcRoutine OPTIONAL, + IN PVOID ApcContext OPTIONAL, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN PVOID Buffer, + IN ULONG Length, + IN PLARGE_INTEGER ByteOffset , + IN PULONG Key OPTIONAL +); + +NTSTATUS +STDCALL +NtWriteFileGather( + IN HANDLE FileHandle, + IN HANDLE Event OPTIONAL, + IN PIO_APC_ROUTINE ApcRoutine OPTIONAL, + IN PVOID ApcContext OPTIONAL, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN FILE_SEGMENT_ELEMENT BufferDescription[], + IN ULONG BufferLength, + IN PLARGE_INTEGER ByteOffset, + IN PULONG Key OPTIONAL +); + +NTSTATUS +STDCALL +ZwWriteFileGather( + IN HANDLE FileHandle, + IN HANDLE Event OPTIONAL, + IN PIO_APC_ROUTINE ApcRoutine OPTIONAL, + IN PVOID ApcContext OPTIONAL, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN FILE_SEGMENT_ELEMENT BufferDescription[], + IN ULONG BufferLength, + IN PLARGE_INTEGER ByteOffset, + IN PULONG Key OPTIONAL +); + +NTSTATUS +STDCALL +NtSuspendThread( + IN HANDLE ThreadHandle, + IN PULONG PreviousSuspendCount +); + +NTSTATUS +STDCALL +ZwSuspendThread( + IN HANDLE ThreadHandle, + IN PULONG PreviousSuspendCount +); + +NTSTATUS +STDCALL +NtTerminateThread( + IN HANDLE ThreadHandle , + IN NTSTATUS ExitStatus +); +NTSTATUS +STDCALL +ZwTerminateThread( + IN HANDLE ThreadHandle , + IN NTSTATUS ExitStatus +); + +NTSTATUS +STDCALL +NtTestAlert( + VOID +); +NTSTATUS +STDCALL +ZwTestAlert( + VOID +); + +NTSTATUS +STDCALL +NtYieldExecution( + VOID +); + +NTSTATUS +STDCALL +ZwYieldExecution( + VOID +); + +NTSTATUS +STDCALL +NtPlugPlayControl( + DWORD Unknown1, + DWORD Unknown2, + DWORD Unknown3 +); + +NTSTATUS +STDCALL +NtGetPlugPlayEvent( + ULONG Reserved1, + ULONG Reserved2, + PVOID Buffer, + ULONG BufferLength +); + +NTSTATUS +STDCALL +NtSetSystemPowerState( + IN POWER_ACTION SystemAction, + IN SYSTEM_POWER_STATE MinSystemState, + IN ULONG Flags +); + +NTSTATUS +STDCALL +NtSystemDebugControl( + DEBUG_CONTROL_CODE ControlCode, + PVOID InputBuffer, + ULONG InputBufferLength, + PVOID OutputBuffer, + ULONG OutputBufferLength, + PULONG ReturnLength +); + +NTSTATUS +STDCALL +NtVdmControl( + ULONG ControlCode, + PVOID ControlData +); + +NTSTATUS +STDCALL +NtW32Call( + IN ULONG RoutineIndex, + IN PVOID Argument, + IN ULONG ArgumentLength, + OUT PVOID* Result OPTIONAL, + OUT PULONG ResultLength OPTIONAL +); + +NTSTATUS +STDCALL +NtCreateChannel( + VOID +); + +NTSTATUS +STDCALL +NtListenChannel( + VOID +); + +NTSTATUS +STDCALL +NtOpenChannel( + VOID +); + +NTSTATUS +STDCALL +NtReplyWaitSendChannel( + VOID +); + +NTSTATUS +STDCALL +NtSendWaitReplyChannel( + VOID +); + +NTSTATUS +STDCALL +NtSetContextChannel( + VOID +); + +NTSTATUS +STDCALL +NtSetLdtEntries( + ULONG Selector1, + LDT_ENTRY LdtEntry1, + ULONG Selector2, + LDT_ENTRY LdtEntry2 +); + +NTSTATUS +STDCALL +NtQueryOleDirectoryFile( + VOID +); + +NTSTATUS +STDCALL +NtAccessCheck( + IN PSECURITY_DESCRIPTOR SecurityDescriptor, + IN HANDLE ClientToken, + IN ACCESS_MASK DesiredAcces, + IN PGENERIC_MAPPING GenericMapping, + OUT PPRIVILEGE_SET PrivilegeSet, + OUT PULONG ReturnLength, + OUT PACCESS_MASK GrantedAccess, + OUT PNTSTATUS AccessStatus +); + +NTSTATUS +STDCALL +ZwAccessCheck( + IN PSECURITY_DESCRIPTOR SecurityDescriptor, + IN HANDLE ClientToken, + IN ACCESS_MASK DesiredAcces, + IN PGENERIC_MAPPING GenericMapping, + OUT PPRIVILEGE_SET PrivilegeSet, + OUT PULONG ReturnLength, + OUT PACCESS_MASK GrantedAccess, + OUT PNTSTATUS AccessStatus +); + +NTSTATUS +STDCALL +NtAccessCheckAndAuditAlarm( + IN PUNICODE_STRING SubsystemName, + IN PHANDLE ObjectHandle, + IN PUNICODE_STRING ObjectTypeName, + IN PUNICODE_STRING ObjectName, + IN PSECURITY_DESCRIPTOR SecurityDescriptor, + IN ACCESS_MASK DesiredAccess, + IN PGENERIC_MAPPING GenericMapping, + IN BOOLEAN ObjectCreation, + OUT PACCESS_MASK GrantedAccess, + OUT PNTSTATUS AccessStatus, + OUT PBOOLEAN GenerateOnClose +); + +NTSTATUS +STDCALL +NtCancelTimer( + IN HANDLE TimerHandle, + OUT PBOOLEAN CurrentState OPTIONAL +); + + +NTSTATUS +STDCALL +NtContinue( + IN PCONTEXT Context, + IN BOOLEAN TestAlert +); + +NTSTATUS +STDCALL +NtCreatePagingFile( + IN PUNICODE_STRING FileName, + IN PLARGE_INTEGER InitialSize, + IN PLARGE_INTEGER MaxiumSize, + IN ULONG Reserved +); + +NTSTATUS +STDCALL +NtCreateProfile( + OUT PHANDLE ProfileHandle, + IN HANDLE ProcessHandle, + IN PVOID ImageBase, + IN ULONG ImageSize, + IN ULONG Granularity, + OUT PVOID Buffer, + IN ULONG ProfilingSize, + IN KPROFILE_SOURCE Source, + IN KAFFINITY ProcessorMask +); + +NTSTATUS +STDCALL +NtCreateThread( + OUT PHANDLE ThreadHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, + IN HANDLE ProcessHandle, + OUT PCLIENT_ID ClientId, + IN PCONTEXT ThreadContext, + IN PINITIAL_TEB UserStack, + IN BOOLEAN CreateSuspended +); + +NTSTATUS +STDCALL +NtDelayExecution( + IN ULONG Alertable, + IN LARGE_INTEGER *Interval +); + +NTSTATUS +STDCALL +NtExtendSection( + IN HANDLE SectionHandle, + IN PLARGE_INTEGER NewMaximumSize +); + +NTSTATUS +STDCALL +NtFlushInstructionCache( + IN HANDLE ProcessHandle, + IN PVOID BaseAddress, + IN UINT NumberOfBytesToFlush +); + +NTSTATUS +STDCALL +NtFlushVirtualMemory( + IN HANDLE ProcessHandle, + IN PVOID BaseAddress, + IN ULONG NumberOfBytesToFlush, + OUT PULONG NumberOfBytesFlushed OPTIONAL +); + +ULONG +STDCALL +NtGetTickCount( + VOID +); + +NTSTATUS +STDCALL +NtLoadKey( + IN POBJECT_ATTRIBUTES KeyObjectAttributes, + IN POBJECT_ATTRIBUTES FileObjectAttributes +); + + +NTSTATUS +STDCALL +NtLockVirtualMemory( + HANDLE ProcessHandle, + PVOID BaseAddress, + ULONG NumberOfBytesToLock, + PULONG NumberOfBytesLocked +); + +NTSTATUS +STDCALL +NtOpenObjectAuditAlarm( + IN PUNICODE_STRING SubsystemName, + IN PVOID HandleId, + IN PUNICODE_STRING ObjectTypeName, + IN PUNICODE_STRING ObjectName, + IN PSECURITY_DESCRIPTOR SecurityDescriptor, + IN HANDLE ClientToken, + IN ULONG DesiredAccess, + IN ULONG GrantedAccess, + IN PPRIVILEGE_SET Privileges, + IN BOOLEAN ObjectCreation, + IN BOOLEAN AccessGranted, + OUT PBOOLEAN GenerateOnClose +); + +NTSTATUS +STDCALL +NtProtectVirtualMemory( + IN HANDLE ProcessHandle, + IN PVOID *BaseAddress, + IN ULONG *NumberOfBytesToProtect, + IN ULONG NewAccessProtection, + OUT PULONG OldAccessProtection +); + +NTSTATUS +STDCALL +NtQueryDirectoryObject( + IN HANDLE DirectoryHandle, + OUT PVOID Buffer, + IN ULONG BufferLength, + IN BOOLEAN ReturnSingleEntry, + IN BOOLEAN RestartScan, + IN OUT PULONG Context, + OUT PULONG ReturnLength OPTIONAL +); + +NTSTATUS +STDCALL +NtQueryIntervalProfile( + IN KPROFILE_SOURCE ProfileSource, + OUT PULONG Interval +); + +NTSTATUS +STDCALL +NtQuerySection( + IN HANDLE SectionHandle, + IN CINT SectionInformationClass, + OUT PVOID SectionInformation, + IN ULONG Length, + OUT PULONG ResultLength +); + +NTSTATUS +STDCALL +NtQueryVirtualMemory( + IN HANDLE ProcessHandle, + IN PVOID Address, + IN IN CINT VirtualMemoryInformationClass, + OUT PVOID VirtualMemoryInformation, + IN ULONG Length, + OUT PULONG ResultLength +); + +NTSTATUS +STDCALL +NtRaiseHardError( + IN NTSTATUS Status, + ULONG Unknown2, + ULONG Unknown3, + ULONG Unknown4, + ULONG Unknown5, + ULONG Unknown6 +); + +NTSTATUS +STDCALL +NtSetInformationKey( + IN HANDLE KeyHandle, + IN KEY_SET_INFORMATION_CLASS KeyInformationClass, + IN PVOID KeyInformation, + IN ULONG KeyInformationLength +); + +NTSTATUS +STDCALL +NtSetInformationObject( + IN HANDLE ObjectHandle, + IN OBJECT_INFORMATION_CLASS ObjectInformationClass, + IN PVOID ObjectInformation, + IN ULONG Length +); + +NTSTATUS +STDCALL +NtSetTimer( + IN HANDLE TimerHandle, + IN PLARGE_INTEGER DueTime, + IN PTIMER_APC_ROUTINE TimerApcRoutine, + IN PVOID TimerContext, + IN BOOLEAN WakeTimer, + IN LONG Period OPTIONAL, + OUT PBOOLEAN PreviousState OPTIONAL +); + +NTSTATUS +STDCALL +NtUnloadKey( + IN POBJECT_ATTRIBUTES KeyObjectAttributes +); + +NTSTATUS +STDCALL +NtUnlockVirtualMemory( + IN HANDLE ProcessHandle, + IN PVOID BaseAddress, + IN ULONG NumberOfBytesToUnlock, + OUT PULONG NumberOfBytesUnlocked OPTIONAL +); + +NTSTATUS +STDCALL +NtWaitForMultipleObjects( + IN ULONG Count, + IN HANDLE Object[], + IN WAIT_TYPE WaitType, + IN BOOLEAN Alertable, + IN PLARGE_INTEGER Time +); + +NTSTATUS +STDCALL +ZwContinue( + IN PCONTEXT Context, + IN CINT IrqLevel +); + +NTSTATUS +STDCALL +ZwQuerySystemTime ( + OUT PLARGE_INTEGER CurrentTime +); + + +NTSTATUS +STDCALL +NtDuplicateObject( + IN HANDLE SourceProcessHandle, + IN HANDLE SourceHandle, + IN HANDLE TargetProcessHandle, + OUT PHANDLE TargetHandle, + IN ACCESS_MASK DesiredAccess, + IN BOOLEAN InheritHandle, + IN ULONG Options +); + +NTSTATUS +STDCALL +ZwDuplicateObject( + IN HANDLE SourceProcessHandle, + IN HANDLE SourceHandle, + IN HANDLE TargetProcessHandle, + OUT PHANDLE TargetHandle, + IN ACCESS_MASK DesiredAccess, + IN BOOLEAN InheritHandle, + IN ULONG Options +); + +NTSTATUS +STDCALL +NtAddAtom( + IN PWSTR AtomName, + IN ULONG AtomNameLength, + IN OUT PRTL_ATOM Atom +); + +NTSTATUS +STDCALL +ZwAddAtom( + IN PWSTR AtomName, + IN ULONG AtomNameLength, + IN OUT PRTL_ATOM Atom +); + +NTSTATUS +STDCALL +NtAllocateUuids( + PULARGE_INTEGER Time, + PULONG Range, + PULONG Sequence, + PUCHAR Seed +); + +NTSTATUS +STDCALL +ZwAllocateUuids( + PULARGE_INTEGER Time, + PULONG Range, + PULONG Sequence, + PUCHAR Seed +); + +NTSTATUS +STDCALL +ZwCreatePagingFile( + IN PUNICODE_STRING FileName, + IN PLARGE_INTEGER InitialSize, + IN PLARGE_INTEGER MaxiumSize, + IN ULONG Reserved +); + +NTSTATUS +STDCALL +ZwCreateThread( + OUT PHANDLE ThreadHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, + IN HANDLE ProcessHandle, + OUT PCLIENT_ID ClientId, + IN PCONTEXT ThreadContext, + IN PINITIAL_TEB UserStack, + IN BOOLEAN CreateSuspended +); + +NTSTATUS +STDCALL +NtDuplicateToken( + IN HANDLE ExistingTokenHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, + IN BOOLEAN EffectiveOnly, + IN TOKEN_TYPE TokenType, + OUT PHANDLE NewTokenHandle +); + +NTSTATUS +STDCALL +NtFindAtom( + IN PWSTR AtomName, + IN ULONG AtomNameLength, + OUT PRTL_ATOM Atom OPTIONAL +); + +NTSTATUS +STDCALL +ZwFindAtom( + IN PWSTR AtomName, + IN ULONG AtomNameLength, + OUT PRTL_ATOM Atom OPTIONAL +); + +ULONG +STDCALL +ZwGetTickCount( + VOID +); + +NTSTATUS +STDCALL +ZwLoadKey( + IN POBJECT_ATTRIBUTES KeyObjectAttributes, + IN POBJECT_ATTRIBUTES FileObjectAttributes +); + +NTSTATUS +STDCALL +ZwLockVirtualMemory( + HANDLE ProcessHandle, + PVOID BaseAddress, + ULONG NumberOfBytesToLock, + PULONG NumberOfBytesLocked +); + +NTSTATUS +STDCALL +ZwOpenObjectAuditAlarm( + IN PUNICODE_STRING SubsystemName, + IN PVOID HandleId, + IN PUNICODE_STRING ObjectTypeName, + IN PUNICODE_STRING ObjectName, + IN PSECURITY_DESCRIPTOR SecurityDescriptor, + IN HANDLE ClientToken, + IN ULONG DesiredAccess, + IN ULONG GrantedAccess, + IN PPRIVILEGE_SET Privileges, + IN BOOLEAN ObjectCreation, + IN BOOLEAN AccessGranted, + OUT PBOOLEAN GenerateOnClose +); + +NTSTATUS +STDCALL +ZwProtectVirtualMemory( + IN HANDLE ProcessHandle, + IN PVOID *BaseAddress, + IN ULONG *NumberOfBytesToProtect, + IN ULONG NewAccessProtection, + OUT PULONG OldAccessProtection +); + +NTSTATUS +STDCALL +NtQueryInformationAtom( + IN RTL_ATOM Atom, + IN ATOM_INFORMATION_CLASS AtomInformationClass, + OUT PVOID AtomInformation, + IN ULONG AtomInformationLength, + OUT PULONG ReturnLength OPTIONAL +); + +NTSTATUS +STDCALL +ZwQueryInformationAtom( + IN RTL_ATOM Atom, + IN ATOM_INFORMATION_CLASS AtomInformationClass, + OUT PVOID AtomInformation, + IN ULONG AtomInformationLength, + OUT PULONG ReturnLength OPTIONAL +); + +NTSTATUS +STDCALL +ZwQueryDirectoryObject( + IN HANDLE DirectoryHandle, + OUT PVOID Buffer, + IN ULONG BufferLength, + IN BOOLEAN ReturnSingleEntry, + IN BOOLEAN RestartScan, + IN OUT PULONG Context, + OUT PULONG ReturnLength OPTIONAL +); + +NTSTATUS +STDCALL +ZwQueryIntervalProfile( + OUT PULONG Interval, + OUT KPROFILE_SOURCE ClockSource +); + +NTSTATUS +STDCALL +ZwQueryObject( + IN HANDLE ObjectHandle, + IN OBJECT_INFORMATION_CLASS ObjectInformationClass, + OUT PVOID ObjectInformation, + IN ULONG Length, + OUT PULONG ResultLength OPTIONAL +); + +NTSTATUS +STDCALL +NtQuerySecurityObject( + IN HANDLE Handle, + IN SECURITY_INFORMATION SecurityInformation, + OUT PSECURITY_DESCRIPTOR SecurityDescriptor, + IN ULONG Length, + OUT PULONG ResultLength +); + +NTSTATUS +STDCALL +ZwQuerySecurityObject( + IN HANDLE Handle, + IN SECURITY_INFORMATION SecurityInformation, + OUT PSECURITY_DESCRIPTOR SecurityDescriptor, + IN ULONG Length, + OUT PULONG ResultLength +); + + +NTSTATUS +STDCALL +ZwQueryVirtualMemory( + IN HANDLE ProcessHandle, + IN PVOID Address, + IN IN CINT VirtualMemoryInformationClass, + OUT PVOID VirtualMemoryInformation, + IN ULONG Length, + OUT PULONG ResultLength +); + +NTSTATUS +STDCALL +ZwRaiseHardError( + IN NTSTATUS Status, + ULONG Unknown2, + ULONG Unknown3, + ULONG Unknown4, + ULONG Unknown5, + ULONG Unknown6 +); + +NTSTATUS +STDCALL +ZwSetInformationKey( + IN HANDLE KeyHandle, + IN KEY_SET_INFORMATION_CLASS KeyInformationClass, + IN PVOID KeyInformation, + IN ULONG KeyInformationLength +); + +NTSTATUS +STDCALL +ZwSetInformationObject( + IN HANDLE ObjectHandle, + IN OBJECT_INFORMATION_CLASS ObjectInformationClass, + IN PVOID ObjectInformation, + IN ULONG Length +); + +NTSTATUS +STDCALL +NtSetInformationProcess( + IN HANDLE ProcessHandle, + IN PROCESSINFOCLASS ProcessInformationClass, + IN PVOID ProcessInformation, + IN ULONG ProcessInformationLength +); + +NTSTATUS +STDCALL +ZwUnloadKey( + IN POBJECT_ATTRIBUTES KeyObjectAttributes +); + +NTSTATUS +STDCALL +ZwUnlockVirtualMemory( + IN HANDLE ProcessHandle, + IN PVOID BaseAddress, + IN ULONG NumberOfBytesToUnlock, + OUT PULONG NumberOfBytesUnlocked OPTIONAL +); + +NTSTATUS +STDCALL +ZwWaitForMultipleObjects ( + IN ULONG Count, + IN HANDLE Object[], + IN WAIT_TYPE WaitType, + IN BOOLEAN Alertable, + IN PLARGE_INTEGER Time +); + +NTSTATUS +STDCALL +ZwCreateProfile( + OUT PHANDLE ProfileHandle, + IN POBJECT_ATTRIBUTES ObjectAttributes, + IN ULONG ImageBase, + IN ULONG ImageSize, + IN ULONG Granularity, + OUT PVOID Buffer, + IN ULONG ProfilingSize, + IN ULONG ClockSource, + IN ULONG ProcessorMask +); + +NTSTATUS +STDCALL +ZwDelayExecution( + IN BOOLEAN Alertable, + IN LARGE_INTEGER *Interval +); + +NTSTATUS +STDCALL +ZwExtendSection( + IN HANDLE SectionHandle, + IN PLARGE_INTEGER NewMaximumSize +); + +NTSTATUS +STDCALL +ZwQuerySection( + IN HANDLE SectionHandle, + IN CINT SectionInformationClass, + OUT PVOID SectionInformation, + IN ULONG Length, + OUT PULONG ResultLength +); + +NTSTATUS +STDCALL +NtLoadKey2( + IN POBJECT_ATTRIBUTES KeyObjectAttributes, + IN POBJECT_ATTRIBUTES FileObjectAttributes, + IN ULONG Flags +); + +NTSTATUS +STDCALL +ZwLoadKey2( + IN POBJECT_ATTRIBUTES KeyObjectAttributes, + IN POBJECT_ATTRIBUTES FileObjectAttributes, + IN ULONG Flags +); + +NTSTATUS +STDCALL +NtQuerySystemTime ( + OUT PLARGE_INTEGER CurrentTime +); + +NTSTATUS +STDCALL +NtQueryObject( + IN HANDLE ObjectHandle, + IN OBJECT_INFORMATION_CLASS ObjectInformationClass, + OUT PVOID ObjectInformation, + IN ULONG Length, + OUT PULONG ResultLength OPTIONAL +); + +static inline struct _PEB * NtCurrentPeb(void) +{ + struct _PEB * pPeb; + +#if defined(__GNUC__) + + __asm__ __volatile__ + ( + "movl %%fs:0x30, %0\n" /* fs:30h == Teb->Peb */ + : "=r" (pPeb) /* can't have two memory operands */ + : /* no inputs */ + ); + +#elif defined(_MSC_VER) + + __asm mov eax, fs:0x30; + __asm mov pPeb, eax + +#else +#error Unknown compiler for inline assembler +#endif + + return pPeb; +} +#endif diff --git a/reactos/include/ndk/zwtypes.h b/reactos/include/ndk/zwtypes.h new file mode 100644 index 00000000000..26fe844476d --- /dev/null +++ b/reactos/include/ndk/zwtypes.h @@ -0,0 +1,983 @@ +/* + * PROJECT: ReactOS Native Headers + * FILE: include/ndk/zwtypes.h + * PURPOSE: Defintions for Native Types not defined in DDK/IFS + * PROGRAMMER: Alex Ionescu (alex@relsoft.net) + * UPDATE HISTORY: + * Created 06/10/04 + */ +#ifndef _ZWTYPES_H +#define _ZWTYPES_H + +/* DEPENDENCIES **************************************************************/ +#include "rtltypes.h" + +/* EXPORTED DATA *************************************************************/ + +/* CONSTANTS *****************************************************************/ + +/* ENUMERATIONS **************************************************************/ + +typedef enum _PLUGPLAY_BUS_CLASS +{ + SystemBus, + PlugPlayVirtualBus, + MaxPlugPlayBusClass +} PLUGPLAY_BUS_CLASS, *PPLUGPLAY_BUS_CLASS; + +typedef enum _PLUGPLAY_VIRTUAL_BUS_TYPE +{ + Root, + MaxPlugPlayVirtualBusType +} PLUGPLAY_VIRTUAL_BUS_TYPE, *PPLUGPLAY_VIRTUAL_BUS_TYPE; + +/**** Information Classes ****/ +/* + * System + */ +typedef enum _SYSTEM_INFORMATION_CLASS +{ + SystemBasicInformation, + SystemProcessorInformation, + SystemPerformanceInformation, + SystemTimeOfDayInformation, + SystemPathInformation, /* OBSOLETE: USE KUSER_SHARED_DATA */ + SystemProcessInformation, + SystemCallCountInformation, + SystemDeviceInformation, + SystemProcessorPerformanceInformation, + SystemFlagsInformation, + SystemCallTimeInformation, + SystemModuleInformation, + SystemLocksInformation, + SystemStackTraceInformation, + SystemPagedPoolInformation, + SystemNonPagedPoolInformation, + SystemHandleInformation, + SystemObjectInformation, + SystemPageFileInformation, + SystemVdmInstemulInformation, + SystemVdmBopInformation, + SystemFileCacheInformation, + SystemPoolTagInformation, + SystemInterruptInformation, + SystemDpcBehaviorInformation, + SystemFullMemoryInformation, + SystemLoadGdiDriverInformation, + SystemUnloadGdiDriverInformation, + SystemTimeAdjustmentInformation, + SystemSummaryMemoryInformation, + SystemNextEventIdInformation, + SystemEventIdsInformation, + SystemCrashDumpInformation, + SystemExceptionInformation, + SystemCrashDumpStateInformation, + SystemKernelDebuggerInformation, + SystemContextSwitchInformation, + SystemRegistryQuotaInformation, + SystemExtendServiceTableInformation, + SystemPrioritySeperation, + SystemPlugPlayBusInformation, + SystemDockInformation, + SystemPowerInformation, + SystemProcessorSpeedInformation, + SystemCurrentTimeZoneInformation, + SystemLookasideInformation, + SystemTimeSlipNotification, + SystemSessionCreate, + SystemSessionDetach, + SystemSessionInformation, + SystemRangeStartInformation, + SystemVerifierInformation, + SystemAddVerifier, + SystemSessionProcessesInformation, + SystemInformationClassMax +} SYSTEM_INFORMATION_CLASS; + +/* + * Object + */ +typedef enum _OBJECT_INFORMATION_CLASS +{ + ObjectBasicInformation, + ObjectNameInformation, + ObjectTypeInformation, + ObjectAllTypesInformation, + ObjectHandleInformation +} OBJECT_INFORMATION_CLASS; + +/* + * Memory + */ +typedef enum _MEMORY_INFORMATION_CLASS +{ + MemoryBasicInformation, + MemoryWorkingSetList, + MemorySectionName, + MemoryBasicVlmInformation +} MEMORY_INFORMATION_CLASS; + +/* + * Mutant + */ +typedef enum _MUTANT_INFORMATION_CLASS +{ + MutantBasicInformation +} MUTANT_INFORMATION_CLASS; + +/* + * Atom + */ +typedef enum _ATOM_INFORMATION_CLASS +{ + AtomBasicInformation, + AtomTableInformation, +} ATOM_INFORMATION_CLASS; + +/* + * Section + */ +typedef enum _SECTION_INFORMATION_CLASS +{ + SectionBasicInformation, + SectionImageInformation, +} SECTION_INFORMATION_CLASS; + +/* + * Timer + */ +typedef enum _TIMER_INFORMATION_CLASS { + TimerBasicInformation +} TIMER_INFORMATION_CLASS; + +/* + * Semaphore + */ +typedef enum _SEMAPHORE_INFORMATION_CLASS +{ + SemaphoreBasicInformation +} SEMAPHORE_INFORMATION_CLASS; + +/* + * Event + */ +typedef enum _EVENT_INFORMATION_CLASS +{ + EventBasicInformation +} EVENT_INFORMATION_CLASS; + +/* + * I/O Completion + */ +typedef enum _IO_COMPLETION_INFORMATION_CLASS +{ + IoCompletionBasicInformation +} IO_COMPLETION_INFORMATION_CLASS; + +/* TYPES *********************************************************************/ + +typedef unsigned short LANGID; +typedef LANGID *PLANGID; + +/**** Information Structures ****/ +/* + * Mutant + */ + +/* Class 0 */ +typedef struct _MUTANT_BASIC_INFORMATION +{ + LONG CurrentCount; + BOOLEAN OwnedbyCalled; + BOOLEAN AbandonedState; +} MUTANT_BASIC_INFORMATION, *PMUTANT_BASIC_INFORMATION; + +/* + * Thread + */ + +/* Class 0 */ +typedef struct _THREAD_BASIC_INFORMATION +{ + NTSTATUS ExitStatus; + PVOID TebBaseAddress; + CLIENT_ID ClientId; + KAFFINITY AffinityMask; + KPRIORITY Priority; + KPRIORITY BasePriority; +} THREAD_BASIC_INFORMATION, *PTHREAD_BASIC_INFORMATION; + +/* + * Atom + */ + +/* Class 0 */ +typedef struct _ATOM_BASIC_INFORMATION { + USHORT UsageCount; + USHORT Flags; + USHORT NameLength; + WCHAR Name[1]; +} ATOM_BASIC_INFORMATION, *PATOM_BASIC_INFORMATION; + +/* Class 1 */ +typedef struct _ATOM_TABLE_INFORMATION +{ + ULONG NumberOfAtoms; + USHORT Atoms[1]; +} ATOM_TABLE_INFORMATION, *PATOM_TABLE_INFORMATION; + +/* + * Memory + */ + + /* Class 1 */ +typedef struct _MEMORY_WORKING_SET_LIST +{ + ULONG NumberOfPages; + ULONG WorkingSetList[1]; +} MEMORY_WORKING_SET_LIST, *PMEMORY_WORKING_SET_LIST; + +/* Class 2 */ +typedef struct { + UNICODE_STRING SectionFileName; + WCHAR NameBuffer[ANYSIZE_ARRAY]; +} MEMORY_SECTION_NAME, *PMEMORY_SECTION_NAME; + +/* + * Section + */ + +/* Class 0 */ +typedef struct _SECTION_BASIC_INFORMATION +{ + PVOID BaseAddress; + ULONG Attributes; + LARGE_INTEGER Size; +} SECTION_BASIC_INFORMATION, *PSECTION_BASIC_INFORMATION; + +/* Class 1 */ +typedef struct _SECTION_IMAGE_INFORMATION +{ + ULONG EntryPoint; + ULONG Unknown1; + ULONG_PTR StackReserve; + ULONG_PTR StackCommit; + ULONG Subsystem; + USHORT MinorSubsystemVersion; + USHORT MajorSubsystemVersion; + ULONG Unknown2; + ULONG Characteristics; + USHORT ImageNumber; + BOOLEAN Executable; + UCHAR Unknown3; + ULONG Unknown4[3]; +} SECTION_IMAGE_INFORMATION, *PSECTION_IMAGE_INFORMATION; + +/* + * Object + */ + +/* Class 4 */ +typedef struct _OBJECT_HANDLE_ATTRIBUTE_INFORMATION +{ + BOOLEAN Inherit; + BOOLEAN ProtectFromClose; +} OBJECT_HANDLE_ATTRIBUTE_INFORMATION, *POBJECT_HANDLE_ATTRIBUTE_INFORMATION; + +/* + * Timer + */ + +/* Class 0 */ +typedef struct _TIMER_BASIC_INFORMATION +{ + LARGE_INTEGER TimeRemaining; + BOOLEAN SignalState; +} TIMER_BASIC_INFORMATION, *PTIMER_BASIC_INFORMATION; + +/* + * Semaphore + */ + +/* Class 0 */ +typedef struct _SEMAPHORE_BASIC_INFORMATION { + LONG CurrentCount; + LONG MaximumCount; +} SEMAPHORE_BASIC_INFORMATION, *PSEMAPHORE_BASIC_INFORMATION; + +/* + * Event + * +/* Class 0 */ +typedef struct _EVENT_BASIC_INFORMATION +{ + EVENT_TYPE EventType; + LONG EventState; +} EVENT_BASIC_INFORMATION, *PEVENT_BASIC_INFORMATION; + +/* + * System + */ + +/* Class 0 */ +typedef struct _SYSTEM_BASIC_INFORMATION +{ + ULONG Reserved; + ULONG TimerResolution; + ULONG PageSize; + ULONG NumberOfPhysicalPages; + ULONG LowestPhysicalPageNumber; + ULONG HighestPhysicalPageNumber; + ULONG AllocationGranularity; + ULONG MinimumUserModeAddress; + ULONG MaximumUserModeAddress; + KAFFINITY ActiveProcessorsAffinityMask; + CCHAR NumberOfProcessors; +} SYSTEM_BASIC_INFORMATION, *PSYSTEM_BASIC_INFORMATION; + +/* Class 1 */ +typedef struct _SYSTEM_PROCESSOR_INFORMATION { + USHORT ProcessorArchitecture; + USHORT ProcessorLevel; + USHORT ProcessorRevision; + USHORT Reserved; + ULONG ProcessorFeatureBits; +} SYSTEM_PROCESSOR_INFORMATION, *PSYSTEM_PROCESSOR_INFORMATION; + +/* Class 2 */ +typedef struct _SYSTEM_PERFORMANCE_INFORMATION +{ + LARGE_INTEGER IdleProcessTime; + LARGE_INTEGER IoReadTransferCount; + LARGE_INTEGER IoWriteTransferCount; + LARGE_INTEGER IoOtherTransferCount; + ULONG IoReadOperationCount; + ULONG IoWriteOperationCount; + ULONG IoOtherOperationCount; + ULONG AvailablePages; + ULONG CommittedPages; + ULONG CommitLimit; + ULONG PeakCommitment; + ULONG PageFaultCount; + ULONG CopyOnWriteCount; + ULONG TransitionCount; + ULONG CacheTransitionCount; + ULONG DemandZeroCount; + ULONG PageReadCount; + ULONG PageReadIoCount; + ULONG CacheReadCount; + ULONG CacheIoCount; + ULONG DirtyPagesWriteCount; + ULONG DirtyWriteIoCount; + ULONG MappedPagesWriteCount; + ULONG MappedWriteIoCount; + ULONG PagedPoolPages; + ULONG NonPagedPoolPages; + ULONG PagedPoolAllocs; + ULONG PagedPoolFrees; + ULONG NonPagedPoolAllocs; + ULONG NonPagedPoolFrees; + ULONG FreeSystemPtes; + ULONG ResidentSystemCodePage; + ULONG TotalSystemDriverPages; + ULONG TotalSystemCodePages; + ULONG NonPagedPoolLookasideHits; + ULONG PagedPoolLookasideHits; + ULONG Spare3Count; + ULONG ResidentSystemCachePage; + ULONG ResidentPagedPoolPage; + ULONG ResidentSystemDriverPage; + ULONG CcFastReadNoWait; + ULONG CcFastReadWait; + ULONG CcFastReadResourceMiss; + ULONG CcFastReadNotPossible; + ULONG CcFastMdlReadNoWait; + ULONG CcFastMdlReadWait; + ULONG CcFastMdlReadResourceMiss; + ULONG CcFastMdlReadNotPossible; + ULONG CcMapDataNoWait; + ULONG CcMapDataWait; + ULONG CcMapDataNoWaitMiss; + ULONG CcMapDataWaitMiss; + ULONG CcPinMappedDataCount; + ULONG CcPinReadNoWait; + ULONG CcPinReadWait; + ULONG CcPinReadNoWaitMiss; + ULONG CcPinReadWaitMiss; + ULONG CcCopyReadNoWait; + ULONG CcCopyReadWait; + ULONG CcCopyReadNoWaitMiss; + ULONG CcCopyReadWaitMiss; + ULONG CcMdlReadNoWait; + ULONG CcMdlReadWait; + ULONG CcMdlReadNoWaitMiss; + ULONG CcMdlReadWaitMiss; + ULONG CcReadAheadIos; + ULONG CcLazyWriteIos; + ULONG CcLazyWritePages; + ULONG CcDataFlushes; + ULONG CcDataPages; + ULONG ContextSwitches; + ULONG FirstLevelTbFills; + ULONG SecondLevelTbFills; + ULONG SystemCalls; +} SYSTEM_PERFORMANCE_INFORMATION, *PSYSTEM_PERFORMANCE_INFORMATION; + +/* Class 3 */ +typedef struct _SYSTEM_TIMEOFDAY_INFORMATION { + LARGE_INTEGER BootTime; + LARGE_INTEGER CurrentTime; + LARGE_INTEGER TimeZoneBias; + ULONG TimeZoneId; + ULONG Reserved; +} SYSTEM_TIMEOFDAY_INFORMATION, *PSYSTEM_TIMEOFDAY_INFORMATION; + +/* Class 4 */ +/* This class is obsoleted, please use KUSER_SHARED_DATA instead */ + +/* Class 5 */ +typedef struct _SYSTEM_THREAD_INFORMATION +{ + LARGE_INTEGER KernelTime; + LARGE_INTEGER UserTime; + LARGE_INTEGER CreateTime; + ULONG WaitTime; + PVOID StartAddress; + CLIENT_ID ClientId; + KPRIORITY Priority; + LONG BasePriority; + ULONG ContextSwitches; + ULONG ThreadState; + ULONG WaitReason; +} SYSTEM_THREAD_INFORMATION, *PSYSTEM_THREAD_INFORMATION; +typedef struct _SYSTEM_PROCESS_INFORMATION +{ + ULONG NextEntryOffset; + ULONG NumberOfThreads; + LARGE_INTEGER SpareLi1; + LARGE_INTEGER SpareLi2; + LARGE_INTEGER SpareLi3; + LARGE_INTEGER CreateTime; + LARGE_INTEGER UserTime; + LARGE_INTEGER KernelTime; + UNICODE_STRING ImageName; + KPRIORITY BasePriority; + HANDLE UniqueProcessId; + HANDLE InheritedFromUniqueProcessId; + ULONG HandleCount; + ULONG SessionId; + ULONG PageDirectoryFrame; + + /* + * This part corresponds to VM_COUNTERS_EX. + * NOTE: *NOT* THE SAME AS VM_COUNTERS! + */ + ULONG PeakVirtualSize; + ULONG VirtualSize; + ULONG PageFaultCount; + ULONG PeakWorkingSetSize; + ULONG WorkingSetSize; + ULONG QuotaPeakPagedPoolUsage; + ULONG QuotaPagedPoolUsage; + ULONG QuotaPeakNonPagedPoolUsage; + ULONG QuotaNonPagedPoolUsage; + ULONG PagefileUsage; + ULONG PeakPagefileUsage; + ULONG PrivateUsage; + + /* This part corresponds to IO_COUNTERS */ + LARGE_INTEGER ReadOperationCount; + LARGE_INTEGER WriteOperationCount; + LARGE_INTEGER OtherOperationCount; + LARGE_INTEGER ReadTransferCount; + LARGE_INTEGER WriteTransferCount; + LARGE_INTEGER OtherTransferCount; + + /* Finally, the array of Threads */ + SYSTEM_THREAD_INFORMATION TH[1]; +} SYSTEM_PROCESS_INFORMATION, *PSYSTEM_PROCESS_INFORMATION; + +/* Class 6 */ +typedef struct _SYSTEM_CALL_COUNT_INFORMATION +{ + ULONG Length; + ULONG NumberOfTables; +} SYSTEM_CALL_COUNT_INFORMATION, *PSYSTEM_CALL_COUNT_INFORMATION; + +/* Class 7 */ +typedef struct _SYSTEM_DEVICE_INFORMATION { + ULONG NumberOfDisks; + ULONG NumberOfFloppies; + ULONG NumberOfCdRoms; + ULONG NumberOfTapes; + ULONG NumberOfSerialPorts; + ULONG NumberOfParallelPorts; +} SYSTEM_DEVICE_INFORMATION, *PSYSTEM_DEVICE_INFORMATION; + +/* Class 8 */ +typedef struct _SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION +{ + LARGE_INTEGER IdleTime; + LARGE_INTEGER KernelTime; + LARGE_INTEGER UserTime; + LARGE_INTEGER DpcTime; + LARGE_INTEGER InterruptTime; + ULONG InterruptCount; +} SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION, + +/* Class 9 */ +typedef struct _SYSTEM_FLAGS_INFORMATION +{ + ULONG Flags; +} SYSTEM_FLAGS_INFORMATION, *PSYSTEM_FLAGS_INFORMATION; + +/* Class 10 */ +typedef struct _SYSTEM_CALL_TIME_INFORMATION +{ + ULONG Length; + ULONG TotalCalls; + LARGE_INTEGER TimeOfCalls[1]; +} SYSTEM_CALL_TIME_INFORMATION, *PSYSTEM_CALL_TIME_INFORMATION; + +/* Class 11 */ +typedef struct _SYSTEM_MODULE_INFORMATION_ENTRY +{ + ULONG Unknown1; + ULONG Unknown2; + PVOID Base; + ULONG Size; + ULONG Flags; + USHORT Index; + USHORT NameLength; + USHORT LoadCount; + USHORT PathLength; + CHAR ImageName[256]; +} SYSTEM_MODULE_INFORMATION_ENTRY, *PSYSTEM_MODULE_INFORMATION_ENTRY; +typedef struct _SYSTEM_MODULE_INFORMATION +{ + ULONG Count; + SYSTEM_MODULE_INFORMATION_ENTRY Module[1]; +} SYSTEM_MODULE_INFORMATION, *PSYSTEM_MODULE_INFORMATION; + +/* Class 12 */ +typedef struct _SYSTEM_RESOURCE_LOCK_ENTRY +{ + ULONG ResourceAddress; + ULONG Always1; + ULONG Unknown; + ULONG ActiveCount; + ULONG ContentionCount; + ULONG Unused[2]; + ULONG NumberOfSharedWaiters; + ULONG NumberOfExclusiveWaiters; +} SYSTEM_RESOURCE_LOCK_ENTRY, *PSYSTEM_RESOURCE_LOCK_ENTRY; +typedef struct _SYSTEM_RESOURCE_LOCK_INFO +{ + ULONG Count; + SYSTEM_RESOURCE_LOCK_ENTRY Lock[1]; +} SYSTEM_RESOURCE_LOCK_INFO, *PSYSTEM_RESOURCE_LOCK_INFO; + +/* Class 13 */ +typedef struct _SYSTEM_BACKTRACE_INFORMATION_ENTRY +{ + /* FIXME */ +} SYSTEM_BACKTRACE_INFORMATION_ENTRY, *PSYSTEM_BACKTRACE_INFORMATION_ENTRY; +typedef struct _SYSTEM_BACKTRACE_INFORMATION +{ + /* FIXME */ + ULONG Unknown[4] + ULONG Count; + SYSTEM_BACKTRACE_INFORMATION_ENTRY Trace[1]; +} SYSTEM_BACKTRACE_INFORMATION, *PSYSTEM_BACKTRACE_INFORMATION; + +/* Class 14 - 15 */ +typedef struct _SYSTEM_POOL_ENTRY +{ + BOOLEAN Allocated; + BOOLEAN Spare0; + USHORT AllocatorBackTraceIndex; + ULONG Size; + union { + UCHAR Tag[4]; + ULONG TagUlong; + PVOID ProcessChargedQuota; + }; +} SYSTEM_POOL_ENTRY, *PSYSTEM_POOL_ENTRY; +typedef struct _SYSTEM_POOL_INFORMATION +{ + ULONG TotalSize; + PVOID FirstEntry; + USHORT EntryOverhead; + BOOLEAN PoolTagPresent; + BOOLEAN Spare0; + ULONG NumberOfEntries; + SYSTEM_POOL_ENTRY Entries[1]; +} SYSTEM_POOL_INFORMATION, *PSYSTEM_POOL_INFORMATION; + +/* Class 16 */ +typedef struct _SYSTEM_HANDLE_TABLE_ENTRY_INFO +{ + USHORT UniqueProcessId; + USHORT CreatorBackTraceIndex; + UCHAR ObjectTypeIndex; + UCHAR HandleAttributes; + USHORT HandleValue; + PVOID Object; + ULONG GrantedAccess; +} SYSTEM_HANDLE_TABLE_ENTRY_INFO, *PSYSTEM_HANDLE_TABLE_ENTRY_INFO; +typedef struct _SYSTEM_HANDLE_INFORMATION +{ + ULONG NumberOfHandles; + SYSTEM_HANDLE_TABLE_ENTRY_INFO Handles[1]; +} SYSTEM_HANDLE_INFORMATION, *PSYSTEM_HANDLE_INFORMATION; + +/* Class 17 */ +typedef struct _SYSTEM_OBJECTTYPE_INFORMATION +{ + ULONG NextEntryOffset; + ULONG NumberOfObjects; + ULONG NumberOfHandles; + ULONG TypeIndex; + ULONG InvalidAttributes; + GENERIC_MAPPING GenericMapping; + ULONG ValidAccessMask; + ULONG PoolType; + BOOLEAN SecurityRequired; + BOOLEAN WaitableObject; + UNICODE_STRING TypeName; +} SYSTEM_OBJECTTYPE_INFORMATION, *PSYSTEM_OBJECTTYPE_INFORMATION; +typedef struct _SYSTEM_OBJECT_INFORMATION +{ + ULONG NextEntryOffset; + PVOID Object; + HANDLE CreatorUniqueProcess; + USHORT CreatorBackTraceIndex; + USHORT Flags; + LONG PointerCount; + LONG HandleCount; + ULONG PagedPoolCharge; + ULONG NonPagedPoolCharge; + HANDLE ExclusiveProcessId; + PVOID SecurityDescriptor; + OBJECT_NAME_INFORMATION NameInfo; +} SYSTEM_OBJECT_INFORMATION, *PSYSTEM_OBJECT_INFORMATION; + +/* Class 18 */ +typedef struct _SYSTEM_PAGEFILE_INFORMATION +{ + ULONG NextEntryOffset; + ULONG TotalSize; + ULONG TotalInUse; + ULONG PeakUsage; + UNICODE_STRING PageFileName; +} SYSTEM_PAGEFILE_INFORMATION, *PSYSTEM_PAGEFILE_INFORMATION; + +/* Class 19 */ +typedef struct _SYSTEM_VDM_INSTEMUL_INFO +{ + ULONG SegmentNotPresent; + ULONG VdmOpcode0F; + ULONG OpcodeESPrefix; + ULONG OpcodeCSPrefix; + ULONG OpcodeSSPrefix; + ULONG OpcodeDSPrefix; + ULONG OpcodeFSPrefix; + ULONG OpcodeGSPrefix; + ULONG OpcodeOPER32Prefix; + ULONG OpcodeADDR32Prefix; + ULONG OpcodeINSB; + ULONG OpcodeINSW; + ULONG OpcodeOUTSB; + ULONG OpcodeOUTSW; + ULONG OpcodePUSHF; + ULONG OpcodePOPF; + ULONG OpcodeINTnn; + ULONG OpcodeINTO; + ULONG OpcodeIRET; + ULONG OpcodeINBimm; + ULONG OpcodeINWimm; + ULONG OpcodeOUTBimm; + ULONG OpcodeOUTWimm ; + ULONG OpcodeINB; + ULONG OpcodeINW; + ULONG OpcodeOUTB; + ULONG OpcodeOUTW; + ULONG OpcodeLOCKPrefix; + ULONG OpcodeREPNEPrefix; + ULONG OpcodeREPPrefix; + ULONG OpcodeHLT; + ULONG OpcodeCLI; + ULONG OpcodeSTI; + ULONG BopCount; +} SYSTEM_VDM_INSTEMUL_INFO, *PSYSTEM_VDM_INSTEMUL_INFO; + +/* Class 20 */ +typedef struct _SYSTEM_VDM_BOP_INFO +{ + /* FIXME */ +} + +/* Class 21 */ +typedef struct _SYSTEM_CACHE_INFORMATION +{ + ULONG CurrentSize; + ULONG PeakSize; + ULONG PageFaultCount; + ULONG MinimumWorkingSet; + ULONG MaximumWorkingSet; + ULONG CurrentSizeIncludingTransitionInPages; + ULONG PeakSizeIncludingTransitionInPages; + ULONG Unused[2]; +} SYSTEM_CACHE_INFORMATION; + +/* Class 22 */ +typedef struct _SYSTEM_POOLTAG +{ + union + { + UCHAR Tag[4]; + ULONG TagUlong; + }; + ULONG PagedAllocs; + ULONG PagedFrees; + ULONG PagedUsed; + ULONG NonPagedAllocs; + ULONG NonPagedFrees; + ULONG NonPagedUsed; +} SYSTEM_POOLTAG, *PSYSTEM_POOLTAG; +typedef struct _SYSTEM_POOLTAG_INFORMATION +{ + ULONG Count; + SYSTEM_POOLTAG TagInfo[1]; +} SYSTEM_POOLTAG_INFORMATION, *PSYSTEM_POOLTAG_INFORMATION; + +/* Class 23 */ +typedef struct _SYSTEM_INTERRUPT_INFORMATION +{ + ULONG ContextSwitches; + ULONG DpcCount; + ULONG DpcRate; + ULONG TimeIncrement; + ULONG DpcBypassCount; + ULONG ApcBypassCount; +} SYSTEM_INTERRUPT_INFORMATION, *PSYSTEM_INTERRUPT_INFORMATION; + +/* Class 24 */ +typedef struct _SYSTEM_DPC_BEHAVIOR_INFORMATION +{ + ULONG Spare; + ULONG DpcQueueDepth; + ULONG MinimumDpcRate; + ULONG AdjustDpcThreshold; + ULONG IdealDpcRate; +} SYSTEM_DPC_BEHAVIOR_INFORMATION, *PSYSTEM_DPC_BEHAVIOR_INFORMATION; + +/* Class 25 */ +typedef struct _SYSTEM_MEMORY_INFO +{ + PUCHAR StringOffset; + USHORT ValidCount; + USHORT TransitionCount; + USHORT ModifiedCount; + USHORT PageTableCount; +} SYSTEM_MEMORY_INFO, *PSYSTEM_MEMORY_INFO; +typedef struct _SYSTEM_MEMORY_INFORMATION +{ + ULONG InfoSize; + ULONG StringStart; + SYSTEM_MEMORY_INFO Memory[1]; +} SYSTEM_MEMORY_INFORMATION, *PSYSTEM_MEMORY_INFORMATION; + +/* Class 26 */ +typedef struct _SYSTEM_GDI_DRIVER_INFORMATION { + UNICODE_STRING DriverName; + PVOID ImageAddress; + PVOID SectionPointer; + PVOID EntryPoint; + PIMAGE_EXPORT_DIRECTORY ExportSectionPointer; +} SYSTEM_GDI_DRIVER_INFORMATION, *PSYSTEM_GDI_DRIVER_INFORMATION; + +/* Class 27 */ +/* Not an actuall class, simply a PVOID to the ImageAddress */ + +/* Class 28 */ +typedef struct _SYSTEM_QUERY_TIME_ADJUST_INFORMATION +{ + ULONG TimeAdjustment; + ULONG TimeIncrement; + BOOLEAN Enable; +} SYSTEM_QUERY_TIME_ADJUST_INFORMATION, *PSYSTEM_QUERY_TIME_ADJUST_INFORMATION; +typedef struct _SYSTEM_SET_TIME_ADJUST_INFORMATION +{ + ULONG TimeAdjustment; + BOOLEAN Enable; +} SYSTEM_SET_TIME_ADJUST_INFORMATION, *PSYSTEM_SET_TIME_ADJUST_INFORMATION; + +/* Class 29 - Same as 25 */ + +/* Class 30 - 31 */ +/* FIXME */ + +/* Class 32 */ +typedef struct _SYSTEM_CRASH_DUMP_INFORMATION +{ + HANDLE CrashDumpSection; +} SYSTEM_CRASH_DUMP_INFORMATION, *PSYSTEM_CRASH_DUMP_INFORMATION; + +/* Class 33 */ +typedef struct _SYSTEM_EXCEPTION_INFORMATION +{ + ULONG AlignmentFixupCount; + ULONG ExceptionDispatchCount; + ULONG FloatingEmulationCount; + ULONG ByteWordEmulationCount; +} SYSTEM_EXCEPTION_INFORMATION, *PSYSTEM_EXCEPTION_INFORMATION; + +/* Class 34 */ +typedef struct _SYSTEM_CRASH_STATE_INFORMATION +{ + ULONG ValidCrashDump; +} SYSTEM_CRASH_STATE_INFORMATION, *PSYSTEM_CRASH_STATE_INFORMATION; + +/* Class 35 */ +typedef struct _SYSTEM_KERNEL_DEBUGGER_INFORMATION +{ + BOOLEAN KernelDebuggerEnabled; + BOOLEAN KernelDebuggerNotPresent; +} SYSTEM_KERNEL_DEBUGGER_INFORMATION, *PSYSTEM_KERNEL_DEBUGGER_INFORMATION; + +/* Class 36 */ +typedef struct _SYSTEM_CONTEXT_SWITCH_INFORMATION { + ULONG ContextSwitches; + ULONG FindAny; + ULONG FindLast; + ULONG FindIdeal; + ULONG IdleAny; + ULONG IdleCurrent; + ULONG IdleLast; + ULONG IdleIdeal; + ULONG PreemptAny; + ULONG PreemptCurrent; + ULONG PreemptLast; + ULONG SwitchToIdle; +} SYSTEM_CONTEXT_SWITCH_INFORMATION, *PSYSTEM_CONTEXT_SWITCH_INFORMATION; + +/* Class 37 */ +typedef struct _SYSTEM_REGISTRY_QUOTA_INFORMATION +{ + ULONG RegistryQuotaAllowed; + ULONG RegistryQuotaUsed; + ULONG PagedPoolSize; +} SYSTEM_REGISTRY_QUOTA_INFORMATION, *PSYSTEM_REGISTRY_QUOTA_INFORMATION; + +/* Class 38 */ +/* Not a structure, simply send the UNICODE_STRING */ + +/* Class 39 */ +/* Not a structure, simply send a ULONG containing the new separation */ + +/* Class 40 */ +typedef struct _PLUGPLAY_BUS_TYPE +{ + PLUGPLAY_BUS_CLASS BusClass; + union + { + INTERFACE_TYPE SystemBusType; + PLUGPLAY_VIRTUAL_BUS_TYPE PlugPlayVirtualBusType; + }; +} PLUGPLAY_BUS_TYPE, *PPLUGPLAY_BUS_TYPE; +typedef struct _PLUGPLAY_BUS_INSTANCE +{ + PLUGPLAY_BUS_TYPE BusType; + ULONG BusNumber; + WCHAR BusName[MAX_BUS_NAME]; +} PLUGPLAY_BUS_INSTANCE, *PPLUGPLAY_BUS_INSTANCE; +typedef struct _SYSTEM_PLUGPLAY_BUS_INFORMATION +{ + ULONG BusCount; + PLUGPLAY_BUS_INSTANCE BusInstance[1]; +} SYSTEM_PLUGPLAY_BUS_INFORMATION, *PSYSTEM_PLUGPLAY_BUS_INFORMATION; + +/* Class 41 */ +typedef struct _SYSTEM_DOCK_INFORMATION +{ + SYSTEM_DOCK_STATE DockState; + INTERFACE_TYPE DeviceBusType; + ULONG DeviceBusNumber; + ULONG SlotNumber; +} SYSTEM_DOCK_INFORMATION, *PSYSTEM_DOCK_INFORMATION; + +/* Class 42 */ +typedef struct _SYSTEM_POWER_INFORMATION +{ + BOOLEAN SystemSuspendSupported; + BOOLEAN SystemHibernateSupported; + BOOLEAN ResumeTimerSupportsSuspend; + BOOLEAN ResumeTimerSupportsHibernate; + BOOLEAN LidSupported; + BOOLEAN TurboSettingSupported; + BOOLEAN TurboMode; + BOOLEAN SystemAcOrDc; + BOOLEAN PowerDownDisabled; + LARGE_INTEGER SpindownDrives; +} SYSTEM_POWER_INFORMATION, *PSYSTEM_POWER_INFORMATION; + +/* Class 43 */ +typedef struct _SYSTEM_LEGACY_DRIVER_INFORMATION +{ + PNP_VETO_TYPE VetoType; + UNCODE_STRING VetoDriver; + /* Buffer Follows */ +} SYSTEM_PROCESSOR_SPEED_INFORMATION, *PSYSTEM_PROCESSOR_SPEED_INFORMATION; + +/* Class 44 */ +typedef TIME_ZONE_INFORMATION RTL_TIME_ZONE_INFORMATION; + +/* Class 45 */ +typedef struct _SYSTEM_LOOKASIDE_INFORMATION +{ + USHORT CurrentDepth; + USHORT MaximumDepth; + ULONG TotalAllocates; + ULONG AllocateMisses; + ULONG TotalFrees; + ULONG FreeMisses; + ULONG Type; + ULONG Tag; + ULONG Size; +} SYSTEM_LOOKASIDE_INFORMATION, *PSYSTEM_LOOKASIDE_INFORMATION; + +/* Class 46 */ +/* Not a structure. Only a HANDLE for the SlipEvent; + +/* Class 47 */ +/* Not a structure. Only a ULONG for the SessionId; + +/* Class 48 */ +/* Not a structure. Only a ULONG for the SessionId; + +/* Class 49 */ +/* FIXME */ + +/* Class 50 */ +/* Not a structure. Only a ULONG_PTR for the SystemRangeStart */ + +/* Class 51 */ +/* FIXME. Based on MM_DRIVER_VERIFIER_DATA */ + +/* Class 52 */ +/* FIXME */ + +/* Class 53 */ +typedef struct _SYSTEM_SESSION_PROCESSES_INFORMATION +{ + ULONG SessionId; + ULONG BufferSize; + PVOID Buffer; /* same format as in SystemProcessInformation */ +} SYSTEM_SESSION_PROCESSES_INFORMATION, * PSYSTEM_SESSION_PROCESSES_INFORMATION; + +/* Class 54-81 */ +/* FIXME */ + + +#endif -- 2.17.1