mirror of
https://github.com/reactos/reactos.git
synced 2025-08-06 11:32:56 +00:00
[HEADERS]
Say hello to the "XDK" (preliminary name). A set of headers from wich certain other headers (wdm, ntifs, ntddk, winnt) shall one day be autogenerated. I added a .bat file that autogenerates wdn.h from wdm.template.h and the headers. Others will follow. svn path=/branches/header-work/; revision=46157
This commit is contained in:
parent
de906c441a
commit
479c28b333
34 changed files with 11981 additions and 0 deletions
96
include/xdk/amd64/ke.h
Normal file
96
include/xdk/amd64/ke.h
Normal file
|
@ -0,0 +1,96 @@
|
||||||
|
$if (_WDMDDK_)
|
||||||
|
/** Kernel definitions for AMD64 **/
|
||||||
|
|
||||||
|
/* Interrupt request levels */
|
||||||
|
#define PASSIVE_LEVEL 0
|
||||||
|
#define LOW_LEVEL 0
|
||||||
|
#define APC_LEVEL 1
|
||||||
|
#define DISPATCH_LEVEL 2
|
||||||
|
#define CMCI_LEVEL 5
|
||||||
|
#define CLOCK_LEVEL 13
|
||||||
|
#define IPI_LEVEL 14
|
||||||
|
#define DRS_LEVEL 14
|
||||||
|
#define POWER_LEVEL 14
|
||||||
|
#define PROFILE_LEVEL 15
|
||||||
|
#define HIGH_LEVEL 15
|
||||||
|
|
||||||
|
#define PAGE_SIZE 0x1000
|
||||||
|
#define PAGE_SHIFT 12L
|
||||||
|
|
||||||
|
#define KI_USER_SHARED_DATA 0xFFFFF78000000000UI64
|
||||||
|
#define SharedUserData ((PKUSER_SHARED_DATA const)KI_USER_SHARED_DATA)
|
||||||
|
|
||||||
|
|
||||||
|
typedef struct _KFLOATING_SAVE {
|
||||||
|
ULONG Dummy;
|
||||||
|
} KFLOATING_SAVE, *PKFLOATING_SAVE;
|
||||||
|
|
||||||
|
typedef XSAVE_FORMAT XMM_SAVE_AREA32, *PXMM_SAVE_AREA32;
|
||||||
|
|
||||||
|
#define KeQueryInterruptTime() \
|
||||||
|
(*(volatile ULONG64*)SharedInterruptTime)
|
||||||
|
|
||||||
|
#define KeQuerySystemTime(CurrentCount) \
|
||||||
|
*(ULONG64*)(CurrentCount) = *(volatile ULONG64*)SharedSystemTime
|
||||||
|
|
||||||
|
#define KeQueryTickCount(CurrentCount) \
|
||||||
|
*(ULONG64*)(CurrentCount) = *(volatile ULONG64*)SharedTickCount
|
||||||
|
|
||||||
|
#define KeGetDcacheFillSize() 1L
|
||||||
|
|
||||||
|
#define YieldProcessor _mm_pause
|
||||||
|
|
||||||
|
FORCEINLINE
|
||||||
|
KIRQL
|
||||||
|
KeGetCurrentIrql(VOID)
|
||||||
|
{
|
||||||
|
return (KIRQL)__readcr8();
|
||||||
|
}
|
||||||
|
|
||||||
|
FORCEINLINE
|
||||||
|
VOID
|
||||||
|
KeLowerIrql(IN KIRQL NewIrql)
|
||||||
|
{
|
||||||
|
ASSERT(KeGetCurrentIrql() >= NewIrql);
|
||||||
|
__writecr8(NewIrql);
|
||||||
|
}
|
||||||
|
|
||||||
|
FORCEINLINE
|
||||||
|
KIRQL
|
||||||
|
KfRaiseIrql(IN KIRQL NewIrql)
|
||||||
|
{
|
||||||
|
KIRQL OldIrql;
|
||||||
|
|
||||||
|
OldIrql = __readcr8();
|
||||||
|
ASSERT(OldIrql <= NewIrql);
|
||||||
|
__writecr8(NewIrql);
|
||||||
|
return OldIrql;
|
||||||
|
}
|
||||||
|
#define KeRaiseIrql(a,b) *(b) = KfRaiseIrql(a)
|
||||||
|
|
||||||
|
FORCEINLINE
|
||||||
|
KIRQL
|
||||||
|
KeRaiseIrqlToDpcLevel(VOID)
|
||||||
|
{
|
||||||
|
return KfRaiseIrql(DISPATCH_LEVEL);
|
||||||
|
}
|
||||||
|
|
||||||
|
FORCEINLINE
|
||||||
|
KIRQL
|
||||||
|
KeRaiseIrqlToSynchLevel(VOID)
|
||||||
|
{
|
||||||
|
return KfRaiseIrql(12); // SYNCH_LEVEL = IPI_LEVEL - 2
|
||||||
|
}
|
||||||
|
|
||||||
|
FORCEINLINE
|
||||||
|
PKTHREAD
|
||||||
|
KeGetCurrentThread (
|
||||||
|
VOID)
|
||||||
|
{
|
||||||
|
return (struct _KTHREAD *)__readgsqword(0x188);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* x86 and x64 performs a 0x2C interrupt */
|
||||||
|
#define DbgRaiseAssertionFailure __int2c
|
||||||
|
$endif
|
||||||
|
|
3
include/xdk/arm/ke.h
Normal file
3
include/xdk/arm/ke.h
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
$if (_WDMDDK_)
|
||||||
|
#include <armddk.h>
|
||||||
|
$endif
|
23
include/xdk/cmfuncs.h
Normal file
23
include/xdk/cmfuncs.h
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
/******************************************************************************
|
||||||
|
* Configuration Manager Functions *
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
$if (_WDMDDK_)
|
||||||
|
#if (NTDDI_VERSION >= NTDDI_WINXP)
|
||||||
|
NTKERNELAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
CmRegisterCallback(
|
||||||
|
IN PEX_CALLBACK_FUNCTION Function,
|
||||||
|
IN PVOID Context OPTIONAL,
|
||||||
|
OUT PLARGE_INTEGER Cookie);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
CmUnRegisterCallback(
|
||||||
|
IN LARGE_INTEGER Cookie);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
$endif
|
||||||
|
|
703
include/xdk/cmtypes.h
Normal file
703
include/xdk/cmtypes.h
Normal file
|
@ -0,0 +1,703 @@
|
||||||
|
/******************************************************************************
|
||||||
|
* Configuration Manager Types *
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
$if (_WDMDDK_)
|
||||||
|
/* Resource list definitions */
|
||||||
|
typedef int CM_RESOURCE_TYPE;
|
||||||
|
|
||||||
|
#define CmResourceTypeNull 0
|
||||||
|
#define CmResourceTypePort 1
|
||||||
|
#define CmResourceTypeInterrupt 2
|
||||||
|
#define CmResourceTypeMemory 3
|
||||||
|
#define CmResourceTypeDma 4
|
||||||
|
#define CmResourceTypeDeviceSpecific 5
|
||||||
|
#define CmResourceTypeBusNumber 6
|
||||||
|
#define CmResourceTypeNonArbitrated 128
|
||||||
|
#define CmResourceTypeConfigData 128
|
||||||
|
#define CmResourceTypeDevicePrivate 129
|
||||||
|
#define CmResourceTypePcCardConfig 130
|
||||||
|
#define CmResourceTypeMfCardConfig 131
|
||||||
|
|
||||||
|
/* KEY_VALUE_Xxx.Type */
|
||||||
|
#define REG_NONE 0
|
||||||
|
#define REG_SZ 1
|
||||||
|
#define REG_EXPAND_SZ 2
|
||||||
|
#define REG_BINARY 3
|
||||||
|
#define REG_DWORD 4
|
||||||
|
#define REG_DWORD_LITTLE_ENDIAN 4
|
||||||
|
#define REG_DWORD_BIG_ENDIAN 5
|
||||||
|
#define REG_LINK 6
|
||||||
|
#define REG_MULTI_SZ 7
|
||||||
|
#define REG_RESOURCE_LIST 8
|
||||||
|
#define REG_FULL_RESOURCE_DESCRIPTOR 9
|
||||||
|
#define REG_RESOURCE_REQUIREMENTS_LIST 10
|
||||||
|
#define REG_QWORD 11
|
||||||
|
#define REG_QWORD_LITTLE_ENDIAN 11
|
||||||
|
|
||||||
|
/* Registry Access Rights */
|
||||||
|
#define KEY_QUERY_VALUE (0x0001)
|
||||||
|
#define KEY_SET_VALUE (0x0002)
|
||||||
|
#define KEY_CREATE_SUB_KEY (0x0004)
|
||||||
|
#define KEY_ENUMERATE_SUB_KEYS (0x0008)
|
||||||
|
#define KEY_NOTIFY (0x0010)
|
||||||
|
#define KEY_CREATE_LINK (0x0020)
|
||||||
|
#define KEY_WOW64_32KEY (0x0200)
|
||||||
|
#define KEY_WOW64_64KEY (0x0100)
|
||||||
|
#define KEY_WOW64_RES (0x0300)
|
||||||
|
|
||||||
|
#define KEY_READ ((STANDARD_RIGHTS_READ |\
|
||||||
|
KEY_QUERY_VALUE |\
|
||||||
|
KEY_ENUMERATE_SUB_KEYS |\
|
||||||
|
KEY_NOTIFY) \
|
||||||
|
& \
|
||||||
|
(~SYNCHRONIZE))
|
||||||
|
|
||||||
|
#define KEY_WRITE ((STANDARD_RIGHTS_WRITE |\
|
||||||
|
KEY_SET_VALUE |\
|
||||||
|
KEY_CREATE_SUB_KEY) \
|
||||||
|
& \
|
||||||
|
(~SYNCHRONIZE))
|
||||||
|
|
||||||
|
#define KEY_EXECUTE ((KEY_READ) \
|
||||||
|
& \
|
||||||
|
(~SYNCHRONIZE))
|
||||||
|
|
||||||
|
#define KEY_ALL_ACCESS ((STANDARD_RIGHTS_ALL |\
|
||||||
|
KEY_QUERY_VALUE |\
|
||||||
|
KEY_SET_VALUE |\
|
||||||
|
KEY_CREATE_SUB_KEY |\
|
||||||
|
KEY_ENUMERATE_SUB_KEYS |\
|
||||||
|
KEY_NOTIFY |\
|
||||||
|
KEY_CREATE_LINK) \
|
||||||
|
& \
|
||||||
|
(~SYNCHRONIZE))
|
||||||
|
|
||||||
|
/* Registry Open/Create Options */
|
||||||
|
#define REG_OPTION_RESERVED (0x00000000L)
|
||||||
|
#define REG_OPTION_NON_VOLATILE (0x00000000L)
|
||||||
|
#define REG_OPTION_VOLATILE (0x00000001L)
|
||||||
|
#define REG_OPTION_CREATE_LINK (0x00000002L)
|
||||||
|
#define REG_OPTION_BACKUP_RESTORE (0x00000004L)
|
||||||
|
#define REG_OPTION_OPEN_LINK (0x00000008L)
|
||||||
|
|
||||||
|
#define REG_LEGAL_OPTION \
|
||||||
|
(REG_OPTION_RESERVED |\
|
||||||
|
REG_OPTION_NON_VOLATILE |\
|
||||||
|
REG_OPTION_VOLATILE |\
|
||||||
|
REG_OPTION_CREATE_LINK |\
|
||||||
|
REG_OPTION_BACKUP_RESTORE |\
|
||||||
|
REG_OPTION_OPEN_LINK)
|
||||||
|
|
||||||
|
/* Key creation/open disposition */
|
||||||
|
#define REG_CREATED_NEW_KEY (0x00000001L)
|
||||||
|
#define REG_OPENED_EXISTING_KEY (0x00000002L)
|
||||||
|
|
||||||
|
/* Key restore & hive load flags */
|
||||||
|
#define REG_WHOLE_HIVE_VOLATILE (0x00000001L)
|
||||||
|
#define REG_REFRESH_HIVE (0x00000002L)
|
||||||
|
#define REG_NO_LAZY_FLUSH (0x00000004L)
|
||||||
|
#define REG_FORCE_RESTORE (0x00000008L)
|
||||||
|
#define REG_APP_HIVE (0x00000010L)
|
||||||
|
#define REG_PROCESS_PRIVATE (0x00000020L)
|
||||||
|
#define REG_START_JOURNAL (0x00000040L)
|
||||||
|
#define REG_HIVE_EXACT_FILE_GROWTH (0x00000080L)
|
||||||
|
#define REG_HIVE_NO_RM (0x00000100L)
|
||||||
|
#define REG_HIVE_SINGLE_LOG (0x00000200L)
|
||||||
|
|
||||||
|
/* Unload Flags */
|
||||||
|
#define REG_FORCE_UNLOAD 1
|
||||||
|
|
||||||
|
/* Notify Filter Values */
|
||||||
|
#define REG_NOTIFY_CHANGE_NAME (0x00000001L)
|
||||||
|
#define REG_NOTIFY_CHANGE_ATTRIBUTES (0x00000002L)
|
||||||
|
#define REG_NOTIFY_CHANGE_LAST_SET (0x00000004L)
|
||||||
|
#define REG_NOTIFY_CHANGE_SECURITY (0x00000008L)
|
||||||
|
|
||||||
|
#define REG_LEGAL_CHANGE_FILTER \
|
||||||
|
(REG_NOTIFY_CHANGE_NAME |\
|
||||||
|
REG_NOTIFY_CHANGE_ATTRIBUTES |\
|
||||||
|
REG_NOTIFY_CHANGE_LAST_SET |\
|
||||||
|
REG_NOTIFY_CHANGE_SECURITY)
|
||||||
|
|
||||||
|
typedef struct _CM_FLOPPY_DEVICE_DATA {
|
||||||
|
USHORT Version;
|
||||||
|
USHORT Revision;
|
||||||
|
CHAR Size[8];
|
||||||
|
ULONG MaxDensity;
|
||||||
|
ULONG MountDensity;
|
||||||
|
UCHAR StepRateHeadUnloadTime;
|
||||||
|
UCHAR HeadLoadTime;
|
||||||
|
UCHAR MotorOffTime;
|
||||||
|
UCHAR SectorLengthCode;
|
||||||
|
UCHAR SectorPerTrack;
|
||||||
|
UCHAR ReadWriteGapLength;
|
||||||
|
UCHAR DataTransferLength;
|
||||||
|
UCHAR FormatGapLength;
|
||||||
|
UCHAR FormatFillCharacter;
|
||||||
|
UCHAR HeadSettleTime;
|
||||||
|
UCHAR MotorSettleTime;
|
||||||
|
UCHAR MaximumTrackValue;
|
||||||
|
UCHAR DataTransferRate;
|
||||||
|
} CM_FLOPPY_DEVICE_DATA, *PCM_FLOPPY_DEVICE_DATA;
|
||||||
|
|
||||||
|
#include <pshpack4.h>
|
||||||
|
typedef struct _CM_PARTIAL_RESOURCE_DESCRIPTOR {
|
||||||
|
UCHAR Type;
|
||||||
|
UCHAR ShareDisposition;
|
||||||
|
USHORT Flags;
|
||||||
|
union {
|
||||||
|
struct {
|
||||||
|
PHYSICAL_ADDRESS Start;
|
||||||
|
ULONG Length;
|
||||||
|
} Generic;
|
||||||
|
struct {
|
||||||
|
PHYSICAL_ADDRESS Start;
|
||||||
|
ULONG Length;
|
||||||
|
} Port;
|
||||||
|
struct {
|
||||||
|
#if defined(NT_PROCESSOR_GROUPS)
|
||||||
|
USHORT Level;
|
||||||
|
USHORT Group;
|
||||||
|
#else
|
||||||
|
ULONG Level;
|
||||||
|
#endif
|
||||||
|
ULONG Vector;
|
||||||
|
KAFFINITY Affinity;
|
||||||
|
} Interrupt;
|
||||||
|
#if (NTDDI_VERSION >= NTDDI_LONGHORN)
|
||||||
|
struct {
|
||||||
|
__GNU_EXTENSION union {
|
||||||
|
struct {
|
||||||
|
#if defined(NT_PROCESSOR_GROUPS)
|
||||||
|
USHORT Group;
|
||||||
|
#else
|
||||||
|
USHORT Reserved;
|
||||||
|
#endif
|
||||||
|
USHORT MessageCount;
|
||||||
|
ULONG Vector;
|
||||||
|
KAFFINITY Affinity;
|
||||||
|
} Raw;
|
||||||
|
struct {
|
||||||
|
#if defined(NT_PROCESSOR_GROUPS)
|
||||||
|
USHORT Level;
|
||||||
|
USHORT Group;
|
||||||
|
#else
|
||||||
|
ULONG Level;
|
||||||
|
#endif
|
||||||
|
ULONG Vector;
|
||||||
|
KAFFINITY Affinity;
|
||||||
|
} Translated;
|
||||||
|
} DUMMYUNIONNAME;
|
||||||
|
} MessageInterrupt;
|
||||||
|
#endif
|
||||||
|
struct {
|
||||||
|
PHYSICAL_ADDRESS Start;
|
||||||
|
ULONG Length;
|
||||||
|
} Memory;
|
||||||
|
struct {
|
||||||
|
ULONG Channel;
|
||||||
|
ULONG Port;
|
||||||
|
ULONG Reserved1;
|
||||||
|
} Dma;
|
||||||
|
struct {
|
||||||
|
ULONG Data[3];
|
||||||
|
} DevicePrivate;
|
||||||
|
struct {
|
||||||
|
ULONG Start;
|
||||||
|
ULONG Length;
|
||||||
|
ULONG Reserved;
|
||||||
|
} BusNumber;
|
||||||
|
struct {
|
||||||
|
ULONG DataSize;
|
||||||
|
ULONG Reserved1;
|
||||||
|
ULONG Reserved2;
|
||||||
|
} DeviceSpecificData;
|
||||||
|
#if (NTDDI_VERSION >= NTDDI_LONGHORN)
|
||||||
|
struct {
|
||||||
|
PHYSICAL_ADDRESS Start;
|
||||||
|
ULONG Length40;
|
||||||
|
} Memory40;
|
||||||
|
struct {
|
||||||
|
PHYSICAL_ADDRESS Start;
|
||||||
|
ULONG Length48;
|
||||||
|
} Memory48;
|
||||||
|
struct {
|
||||||
|
PHYSICAL_ADDRESS Start;
|
||||||
|
ULONG Length64;
|
||||||
|
} Memory64;
|
||||||
|
#endif
|
||||||
|
} u;
|
||||||
|
} CM_PARTIAL_RESOURCE_DESCRIPTOR, *PCM_PARTIAL_RESOURCE_DESCRIPTOR;
|
||||||
|
#include <poppack.h>
|
||||||
|
|
||||||
|
/* CM_PARTIAL_RESOURCE_DESCRIPTOR.Type */
|
||||||
|
#define CmResourceTypeNull 0
|
||||||
|
#define CmResourceTypePort 1
|
||||||
|
#define CmResourceTypeInterrupt 2
|
||||||
|
#define CmResourceTypeMemory 3
|
||||||
|
#define CmResourceTypeDma 4
|
||||||
|
#define CmResourceTypeDeviceSpecific 5
|
||||||
|
#define CmResourceTypeBusNumber 6
|
||||||
|
#define CmResourceTypeMemoryLarge 7
|
||||||
|
#define CmResourceTypeNonArbitrated 128
|
||||||
|
#define CmResourceTypeConfigData 128
|
||||||
|
#define CmResourceTypeDevicePrivate 129
|
||||||
|
#define CmResourceTypePcCardConfig 130
|
||||||
|
#define CmResourceTypeMfCardConfig 131
|
||||||
|
|
||||||
|
/* CM_PARTIAL_RESOURCE_DESCRIPTOR.ShareDisposition */
|
||||||
|
typedef enum _CM_SHARE_DISPOSITION {
|
||||||
|
CmResourceShareUndetermined,
|
||||||
|
CmResourceShareDeviceExclusive,
|
||||||
|
CmResourceShareDriverExclusive,
|
||||||
|
CmResourceShareShared
|
||||||
|
} CM_SHARE_DISPOSITION;
|
||||||
|
|
||||||
|
/* CM_PARTIAL_RESOURCE_DESCRIPTOR.Flags if Type = CmResourceTypePort */
|
||||||
|
#define CM_RESOURCE_PORT_MEMORY 0x0000
|
||||||
|
#define CM_RESOURCE_PORT_IO 0x0001
|
||||||
|
#define CM_RESOURCE_PORT_10_BIT_DECODE 0x0004
|
||||||
|
#define CM_RESOURCE_PORT_12_BIT_DECODE 0x0008
|
||||||
|
#define CM_RESOURCE_PORT_16_BIT_DECODE 0x0010
|
||||||
|
#define CM_RESOURCE_PORT_POSITIVE_DECODE 0x0020
|
||||||
|
#define CM_RESOURCE_PORT_PASSIVE_DECODE 0x0040
|
||||||
|
#define CM_RESOURCE_PORT_WINDOW_DECODE 0x0080
|
||||||
|
#define CM_RESOURCE_PORT_BAR 0x0100
|
||||||
|
|
||||||
|
/* CM_PARTIAL_RESOURCE_DESCRIPTOR.Flags if Type = CmResourceTypeInterrupt */
|
||||||
|
#define CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE 0x0000
|
||||||
|
#define CM_RESOURCE_INTERRUPT_LATCHED 0x0001
|
||||||
|
#define CM_RESOURCE_INTERRUPT_MESSAGE 0x0002
|
||||||
|
#define CM_RESOURCE_INTERRUPT_POLICY_INCLUDED 0x0004
|
||||||
|
|
||||||
|
/* CM_PARTIAL_RESOURCE_DESCRIPTOR.Flags if Type = CmResourceTypeMemory */
|
||||||
|
#define CM_RESOURCE_MEMORY_READ_WRITE 0x0000
|
||||||
|
#define CM_RESOURCE_MEMORY_READ_ONLY 0x0001
|
||||||
|
#define CM_RESOURCE_MEMORY_WRITE_ONLY 0x0002
|
||||||
|
#define CM_RESOURCE_MEMORY_WRITEABILITY_MASK 0x0003
|
||||||
|
#define CM_RESOURCE_MEMORY_PREFETCHABLE 0x0004
|
||||||
|
#define CM_RESOURCE_MEMORY_COMBINEDWRITE 0x0008
|
||||||
|
#define CM_RESOURCE_MEMORY_24 0x0010
|
||||||
|
#define CM_RESOURCE_MEMORY_CACHEABLE 0x0020
|
||||||
|
#define CM_RESOURCE_MEMORY_WINDOW_DECODE 0x0040
|
||||||
|
#define CM_RESOURCE_MEMORY_BAR 0x0080
|
||||||
|
#define CM_RESOURCE_MEMORY_COMPAT_FOR_INACCESSIBLE_RANGE 0x0100
|
||||||
|
|
||||||
|
/* CM_PARTIAL_RESOURCE_DESCRIPTOR.Flags if Type = CmResourceTypeDma */
|
||||||
|
#define CM_RESOURCE_DMA_8 0x0000
|
||||||
|
#define CM_RESOURCE_DMA_16 0x0001
|
||||||
|
#define CM_RESOURCE_DMA_32 0x0002
|
||||||
|
#define CM_RESOURCE_DMA_8_AND_16 0x0004
|
||||||
|
#define CM_RESOURCE_DMA_BUS_MASTER 0x0008
|
||||||
|
#define CM_RESOURCE_DMA_TYPE_A 0x0010
|
||||||
|
#define CM_RESOURCE_DMA_TYPE_B 0x0020
|
||||||
|
#define CM_RESOURCE_DMA_TYPE_F 0x0040
|
||||||
|
|
||||||
|
typedef struct _CM_PARTIAL_RESOURCE_LIST {
|
||||||
|
USHORT Version;
|
||||||
|
USHORT Revision;
|
||||||
|
ULONG Count;
|
||||||
|
CM_PARTIAL_RESOURCE_DESCRIPTOR PartialDescriptors[1];
|
||||||
|
} CM_PARTIAL_RESOURCE_LIST, *PCM_PARTIAL_RESOURCE_LIST;
|
||||||
|
|
||||||
|
typedef struct _CM_FULL_RESOURCE_DESCRIPTOR {
|
||||||
|
INTERFACE_TYPE InterfaceType;
|
||||||
|
ULONG BusNumber;
|
||||||
|
CM_PARTIAL_RESOURCE_LIST PartialResourceList;
|
||||||
|
} CM_FULL_RESOURCE_DESCRIPTOR, *PCM_FULL_RESOURCE_DESCRIPTOR;
|
||||||
|
|
||||||
|
typedef struct _CM_RESOURCE_LIST {
|
||||||
|
ULONG Count;
|
||||||
|
CM_FULL_RESOURCE_DESCRIPTOR List[1];
|
||||||
|
} CM_RESOURCE_LIST, *PCM_RESOURCE_LIST;
|
||||||
|
|
||||||
|
#include <pshpack1.h>
|
||||||
|
typedef struct _CM_INT13_DRIVE_PARAMETER {
|
||||||
|
USHORT DriveSelect;
|
||||||
|
ULONG MaxCylinders;
|
||||||
|
USHORT SectorsPerTrack;
|
||||||
|
USHORT MaxHeads;
|
||||||
|
USHORT NumberDrives;
|
||||||
|
} CM_INT13_DRIVE_PARAMETER, *PCM_INT13_DRIVE_PARAMETER;
|
||||||
|
|
||||||
|
typedef struct _CM_PNP_BIOS_DEVICE_NODE {
|
||||||
|
USHORT Size;
|
||||||
|
UCHAR Node;
|
||||||
|
ULONG ProductId;
|
||||||
|
UCHAR DeviceType[3];
|
||||||
|
USHORT DeviceAttributes;
|
||||||
|
} CM_PNP_BIOS_DEVICE_NODE,*PCM_PNP_BIOS_DEVICE_NODE;
|
||||||
|
|
||||||
|
typedef struct _CM_PNP_BIOS_INSTALLATION_CHECK {
|
||||||
|
UCHAR Signature[4];
|
||||||
|
UCHAR Revision;
|
||||||
|
UCHAR Length;
|
||||||
|
USHORT ControlField;
|
||||||
|
UCHAR Checksum;
|
||||||
|
ULONG EventFlagAddress;
|
||||||
|
USHORT RealModeEntryOffset;
|
||||||
|
USHORT RealModeEntrySegment;
|
||||||
|
USHORT ProtectedModeEntryOffset;
|
||||||
|
ULONG ProtectedModeCodeBaseAddress;
|
||||||
|
ULONG OemDeviceId;
|
||||||
|
USHORT RealModeDataBaseAddress;
|
||||||
|
ULONG ProtectedModeDataBaseAddress;
|
||||||
|
} CM_PNP_BIOS_INSTALLATION_CHECK, *PCM_PNP_BIOS_INSTALLATION_CHECK;
|
||||||
|
#include <poppack.h>
|
||||||
|
|
||||||
|
typedef struct _CM_DISK_GEOMETRY_DEVICE_DATA {
|
||||||
|
ULONG BytesPerSector;
|
||||||
|
ULONG NumberOfCylinders;
|
||||||
|
ULONG SectorsPerTrack;
|
||||||
|
ULONG NumberOfHeads;
|
||||||
|
} CM_DISK_GEOMETRY_DEVICE_DATA, *PCM_DISK_GEOMETRY_DEVICE_DATA;
|
||||||
|
|
||||||
|
typedef struct _CM_KEYBOARD_DEVICE_DATA {
|
||||||
|
USHORT Version;
|
||||||
|
USHORT Revision;
|
||||||
|
UCHAR Type;
|
||||||
|
UCHAR Subtype;
|
||||||
|
USHORT KeyboardFlags;
|
||||||
|
} CM_KEYBOARD_DEVICE_DATA, *PCM_KEYBOARD_DEVICE_DATA;
|
||||||
|
|
||||||
|
typedef struct _CM_MCA_POS_DATA {
|
||||||
|
USHORT AdapterId;
|
||||||
|
UCHAR PosData1;
|
||||||
|
UCHAR PosData2;
|
||||||
|
UCHAR PosData3;
|
||||||
|
UCHAR PosData4;
|
||||||
|
} CM_MCA_POS_DATA, *PCM_MCA_POS_DATA;
|
||||||
|
|
||||||
|
#if (NTDDI_VERSION >= NTDDI_WINXP)
|
||||||
|
typedef struct CM_Power_Data_s {
|
||||||
|
ULONG PD_Size;
|
||||||
|
DEVICE_POWER_STATE PD_MostRecentPowerState;
|
||||||
|
ULONG PD_Capabilities;
|
||||||
|
ULONG PD_D1Latency;
|
||||||
|
ULONG PD_D2Latency;
|
||||||
|
ULONG PD_D3Latency;
|
||||||
|
DEVICE_POWER_STATE PD_PowerStateMapping[PowerSystemMaximum];
|
||||||
|
SYSTEM_POWER_STATE PD_DeepestSystemWake;
|
||||||
|
} CM_POWER_DATA, *PCM_POWER_DATA;
|
||||||
|
|
||||||
|
#define PDCAP_D0_SUPPORTED 0x00000001
|
||||||
|
#define PDCAP_D1_SUPPORTED 0x00000002
|
||||||
|
#define PDCAP_D2_SUPPORTED 0x00000004
|
||||||
|
#define PDCAP_D3_SUPPORTED 0x00000008
|
||||||
|
#define PDCAP_WAKE_FROM_D0_SUPPORTED 0x00000010
|
||||||
|
#define PDCAP_WAKE_FROM_D1_SUPPORTED 0x00000020
|
||||||
|
#define PDCAP_WAKE_FROM_D2_SUPPORTED 0x00000040
|
||||||
|
#define PDCAP_WAKE_FROM_D3_SUPPORTED 0x00000080
|
||||||
|
#define PDCAP_WARM_EJECT_SUPPORTED 0x00000100
|
||||||
|
|
||||||
|
#endif /* (NTDDI_VERSION >= NTDDI_WINXP) */
|
||||||
|
|
||||||
|
typedef struct _CM_SCSI_DEVICE_DATA {
|
||||||
|
USHORT Version;
|
||||||
|
USHORT Revision;
|
||||||
|
UCHAR HostIdentifier;
|
||||||
|
} CM_SCSI_DEVICE_DATA, *PCM_SCSI_DEVICE_DATA;
|
||||||
|
|
||||||
|
typedef struct _CM_SERIAL_DEVICE_DATA {
|
||||||
|
USHORT Version;
|
||||||
|
USHORT Revision;
|
||||||
|
ULONG BaudClock;
|
||||||
|
} CM_SERIAL_DEVICE_DATA, *PCM_SERIAL_DEVICE_DATA;
|
||||||
|
|
||||||
|
typedef enum _KEY_INFORMATION_CLASS {
|
||||||
|
KeyBasicInformation,
|
||||||
|
KeyNodeInformation,
|
||||||
|
KeyFullInformation,
|
||||||
|
KeyNameInformation,
|
||||||
|
KeyCachedInformation,
|
||||||
|
KeyFlagsInformation
|
||||||
|
} KEY_INFORMATION_CLASS;
|
||||||
|
|
||||||
|
typedef struct _KEY_BASIC_INFORMATION {
|
||||||
|
LARGE_INTEGER LastWriteTime;
|
||||||
|
ULONG TitleIndex;
|
||||||
|
ULONG NameLength;
|
||||||
|
WCHAR Name[1];
|
||||||
|
} KEY_BASIC_INFORMATION, *PKEY_BASIC_INFORMATION;
|
||||||
|
|
||||||
|
typedef struct _KEY_FULL_INFORMATION {
|
||||||
|
LARGE_INTEGER LastWriteTime;
|
||||||
|
ULONG TitleIndex;
|
||||||
|
ULONG ClassOffset;
|
||||||
|
ULONG ClassLength;
|
||||||
|
ULONG SubKeys;
|
||||||
|
ULONG MaxNameLen;
|
||||||
|
ULONG MaxClassLen;
|
||||||
|
ULONG Values;
|
||||||
|
ULONG MaxValueNameLen;
|
||||||
|
ULONG MaxValueDataLen;
|
||||||
|
WCHAR Class[1];
|
||||||
|
} KEY_FULL_INFORMATION, *PKEY_FULL_INFORMATION;
|
||||||
|
|
||||||
|
typedef struct _KEY_NODE_INFORMATION {
|
||||||
|
LARGE_INTEGER LastWriteTime;
|
||||||
|
ULONG TitleIndex;
|
||||||
|
ULONG ClassOffset;
|
||||||
|
ULONG ClassLength;
|
||||||
|
ULONG NameLength;
|
||||||
|
WCHAR Name[1];
|
||||||
|
} KEY_NODE_INFORMATION, *PKEY_NODE_INFORMATION;
|
||||||
|
|
||||||
|
typedef struct _KEY_VALUE_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_VALUE_PARTIAL_INFORMATION {
|
||||||
|
ULONG TitleIndex;
|
||||||
|
ULONG Type;
|
||||||
|
ULONG DataLength;
|
||||||
|
UCHAR Data[1];
|
||||||
|
} KEY_VALUE_PARTIAL_INFORMATION, *PKEY_VALUE_PARTIAL_INFORMATION;
|
||||||
|
|
||||||
|
typedef struct _KEY_VALUE_PARTIAL_INFORMATION_ALIGN64 {
|
||||||
|
ULONG Type;
|
||||||
|
ULONG DataLength;
|
||||||
|
UCHAR Data[1];
|
||||||
|
} KEY_VALUE_PARTIAL_INFORMATION_ALIGN64, *PKEY_VALUE_PARTIAL_INFORMATION_ALIGN64;
|
||||||
|
|
||||||
|
typedef struct _KEY_VALUE_ENTRY {
|
||||||
|
PUNICODE_STRING ValueName;
|
||||||
|
ULONG DataLength;
|
||||||
|
ULONG DataOffset;
|
||||||
|
ULONG Type;
|
||||||
|
} KEY_VALUE_ENTRY, *PKEY_VALUE_ENTRY;
|
||||||
|
|
||||||
|
typedef enum _KEY_VALUE_INFORMATION_CLASS {
|
||||||
|
KeyValueBasicInformation,
|
||||||
|
KeyValueFullInformation,
|
||||||
|
KeyValuePartialInformation,
|
||||||
|
KeyValueFullInformationAlign64,
|
||||||
|
KeyValuePartialInformationAlign64
|
||||||
|
} KEY_VALUE_INFORMATION_CLASS;
|
||||||
|
|
||||||
|
typedef struct _KEY_WRITE_TIME_INFORMATION {
|
||||||
|
LARGE_INTEGER LastWriteTime;
|
||||||
|
} KEY_WRITE_TIME_INFORMATION, *PKEY_WRITE_TIME_INFORMATION;
|
||||||
|
|
||||||
|
typedef enum _KEY_SET_INFORMATION_CLASS {
|
||||||
|
KeyWriteTimeInformation,
|
||||||
|
KeyWow64FlagsInformation,
|
||||||
|
KeyControlFlagsInformation,
|
||||||
|
KeySetVirtualizationInformation,
|
||||||
|
KeySetDebugInformation,
|
||||||
|
KeySetHandleTagsInformation,
|
||||||
|
MaxKeySetInfoClass
|
||||||
|
} KEY_SET_INFORMATION_CLASS;
|
||||||
|
|
||||||
|
typedef enum _REG_NOTIFY_CLASS {
|
||||||
|
RegNtDeleteKey,
|
||||||
|
RegNtPreDeleteKey = RegNtDeleteKey,
|
||||||
|
RegNtSetValueKey,
|
||||||
|
RegNtPreSetValueKey = RegNtSetValueKey,
|
||||||
|
RegNtDeleteValueKey,
|
||||||
|
RegNtPreDeleteValueKey = RegNtDeleteValueKey,
|
||||||
|
RegNtSetInformationKey,
|
||||||
|
RegNtPreSetInformationKey = RegNtSetInformationKey,
|
||||||
|
RegNtRenameKey,
|
||||||
|
RegNtPreRenameKey = RegNtRenameKey,
|
||||||
|
RegNtEnumerateKey,
|
||||||
|
RegNtPreEnumerateKey = RegNtEnumerateKey,
|
||||||
|
RegNtEnumerateValueKey,
|
||||||
|
RegNtPreEnumerateValueKey = RegNtEnumerateValueKey,
|
||||||
|
RegNtQueryKey,
|
||||||
|
RegNtPreQueryKey = RegNtQueryKey,
|
||||||
|
RegNtQueryValueKey,
|
||||||
|
RegNtPreQueryValueKey = RegNtQueryValueKey,
|
||||||
|
RegNtQueryMultipleValueKey,
|
||||||
|
RegNtPreQueryMultipleValueKey = RegNtQueryMultipleValueKey,
|
||||||
|
RegNtPreCreateKey,
|
||||||
|
RegNtPostCreateKey,
|
||||||
|
RegNtPreOpenKey,
|
||||||
|
RegNtPostOpenKey,
|
||||||
|
RegNtKeyHandleClose,
|
||||||
|
RegNtPreKeyHandleClose = RegNtKeyHandleClose,
|
||||||
|
RegNtPostDeleteKey,
|
||||||
|
RegNtPostSetValueKey,
|
||||||
|
RegNtPostDeleteValueKey,
|
||||||
|
RegNtPostSetInformationKey,
|
||||||
|
RegNtPostRenameKey,
|
||||||
|
RegNtPostEnumerateKey,
|
||||||
|
RegNtPostEnumerateValueKey,
|
||||||
|
RegNtPostQueryKey,
|
||||||
|
RegNtPostQueryValueKey,
|
||||||
|
RegNtPostQueryMultipleValueKey,
|
||||||
|
RegNtPostKeyHandleClose,
|
||||||
|
RegNtPreCreateKeyEx,
|
||||||
|
RegNtPostCreateKeyEx,
|
||||||
|
RegNtPreOpenKeyEx,
|
||||||
|
RegNtPostOpenKeyEx,
|
||||||
|
RegNtPreFlushKey,
|
||||||
|
RegNtPostFlushKey,
|
||||||
|
RegNtPreLoadKey,
|
||||||
|
RegNtPostLoadKey,
|
||||||
|
RegNtPreUnLoadKey,
|
||||||
|
RegNtPostUnLoadKey,
|
||||||
|
RegNtPreQueryKeySecurity,
|
||||||
|
RegNtPostQueryKeySecurity,
|
||||||
|
RegNtPreSetKeySecurity,
|
||||||
|
RegNtPostSetKeySecurity,
|
||||||
|
RegNtCallbackObjectContextCleanup,
|
||||||
|
RegNtPreRestoreKey,
|
||||||
|
RegNtPostRestoreKey,
|
||||||
|
RegNtPreSaveKey,
|
||||||
|
RegNtPostSaveKey,
|
||||||
|
RegNtPreReplaceKey,
|
||||||
|
RegNtPostReplaceKey,
|
||||||
|
MaxRegNtNotifyClass
|
||||||
|
} REG_NOTIFY_CLASS, *PREG_NOTIFY_CLASS;
|
||||||
|
|
||||||
|
typedef NTSTATUS
|
||||||
|
(NTAPI *PEX_CALLBACK_FUNCTION)(
|
||||||
|
IN PVOID CallbackContext,
|
||||||
|
IN PVOID Argument1,
|
||||||
|
IN PVOID Argument2
|
||||||
|
);
|
||||||
|
|
||||||
|
typedef struct _REG_DELETE_KEY_INFORMATION {
|
||||||
|
PVOID Object;
|
||||||
|
PVOID CallContext;
|
||||||
|
PVOID ObjectContext;
|
||||||
|
PVOID Reserved;
|
||||||
|
} REG_DELETE_KEY_INFORMATION, *PREG_DELETE_KEY_INFORMATION
|
||||||
|
#if (NTDDI_VERSION >= NTDDI_VISTA)
|
||||||
|
, REG_FLUSH_KEY_INFORMATION, *PREG_FLUSH_KEY_INFORMATION
|
||||||
|
#endif
|
||||||
|
;
|
||||||
|
|
||||||
|
typedef struct _REG_SET_VALUE_KEY_INFORMATION {
|
||||||
|
PVOID Object;
|
||||||
|
PUNICODE_STRING ValueName;
|
||||||
|
ULONG TitleIndex;
|
||||||
|
ULONG Type;
|
||||||
|
PVOID Data;
|
||||||
|
ULONG DataSize;
|
||||||
|
PVOID CallContext;
|
||||||
|
PVOID ObjectContext;
|
||||||
|
PVOID Reserved;
|
||||||
|
} REG_SET_VALUE_KEY_INFORMATION, *PREG_SET_VALUE_KEY_INFORMATION;
|
||||||
|
|
||||||
|
typedef struct _REG_DELETE_VALUE_KEY_INFORMATION {
|
||||||
|
PVOID Object;
|
||||||
|
PUNICODE_STRING ValueName;
|
||||||
|
PVOID CallContext;
|
||||||
|
PVOID ObjectContext;
|
||||||
|
PVOID Reserved;
|
||||||
|
} REG_DELETE_VALUE_KEY_INFORMATION, *PREG_DELETE_VALUE_KEY_INFORMATION;
|
||||||
|
|
||||||
|
typedef struct _REG_SET_INFORMATION_KEY_INFORMATION {
|
||||||
|
PVOID Object;
|
||||||
|
KEY_SET_INFORMATION_CLASS KeySetInformationClass;
|
||||||
|
PVOID KeySetInformation;
|
||||||
|
ULONG KeySetInformationLength;
|
||||||
|
PVOID CallContext;
|
||||||
|
PVOID ObjectContext;
|
||||||
|
PVOID Reserved;
|
||||||
|
} REG_SET_INFORMATION_KEY_INFORMATION, *PREG_SET_INFORMATION_KEY_INFORMATION;
|
||||||
|
|
||||||
|
typedef struct _REG_ENUMERATE_KEY_INFORMATION {
|
||||||
|
PVOID Object;
|
||||||
|
ULONG Index;
|
||||||
|
KEY_INFORMATION_CLASS KeyInformationClass;
|
||||||
|
PVOID KeyInformation;
|
||||||
|
ULONG Length;
|
||||||
|
PULONG ResultLength;
|
||||||
|
PVOID CallContext;
|
||||||
|
PVOID ObjectContext;
|
||||||
|
PVOID Reserved;
|
||||||
|
} REG_ENUMERATE_KEY_INFORMATION, *PREG_ENUMERATE_KEY_INFORMATION;
|
||||||
|
|
||||||
|
typedef struct _REG_ENUMERATE_VALUE_KEY_INFORMATION {
|
||||||
|
PVOID Object;
|
||||||
|
ULONG Index;
|
||||||
|
KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass;
|
||||||
|
PVOID KeyValueInformation;
|
||||||
|
ULONG Length;
|
||||||
|
PULONG ResultLength;
|
||||||
|
PVOID CallContext;
|
||||||
|
PVOID ObjectContext;
|
||||||
|
PVOID Reserved;
|
||||||
|
} REG_ENUMERATE_VALUE_KEY_INFORMATION, *PREG_ENUMERATE_VALUE_KEY_INFORMATION;
|
||||||
|
|
||||||
|
typedef struct _REG_QUERY_KEY_INFORMATION {
|
||||||
|
PVOID Object;
|
||||||
|
KEY_INFORMATION_CLASS KeyInformationClass;
|
||||||
|
PVOID KeyInformation;
|
||||||
|
ULONG Length;
|
||||||
|
PULONG ResultLength;
|
||||||
|
PVOID CallContext;
|
||||||
|
PVOID ObjectContext;
|
||||||
|
PVOID Reserved;
|
||||||
|
} REG_QUERY_KEY_INFORMATION, *PREG_QUERY_KEY_INFORMATION;
|
||||||
|
|
||||||
|
typedef struct _REG_QUERY_VALUE_KEY_INFORMATION {
|
||||||
|
PVOID Object;
|
||||||
|
PUNICODE_STRING ValueName;
|
||||||
|
KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass;
|
||||||
|
PVOID KeyValueInformation;
|
||||||
|
ULONG Length;
|
||||||
|
PULONG ResultLength;
|
||||||
|
PVOID CallContext;
|
||||||
|
PVOID ObjectContext;
|
||||||
|
PVOID Reserved;
|
||||||
|
} REG_QUERY_VALUE_KEY_INFORMATION, *PREG_QUERY_VALUE_KEY_INFORMATION;
|
||||||
|
|
||||||
|
typedef struct _REG_QUERY_MULTIPLE_VALUE_KEY_INFORMATION {
|
||||||
|
PVOID Object;
|
||||||
|
PKEY_VALUE_ENTRY ValueEntries;
|
||||||
|
ULONG EntryCount;
|
||||||
|
PVOID ValueBuffer;
|
||||||
|
PULONG BufferLength;
|
||||||
|
PULONG RequiredBufferLength;
|
||||||
|
PVOID CallContext;
|
||||||
|
PVOID ObjectContext;
|
||||||
|
PVOID Reserved;
|
||||||
|
} REG_QUERY_MULTIPLE_VALUE_KEY_INFORMATION, *PREG_QUERY_MULTIPLE_VALUE_KEY_INFORMATION;
|
||||||
|
|
||||||
|
typedef struct _REG_PRE_CREATE_KEY_INFORMATION {
|
||||||
|
PUNICODE_STRING CompleteName;
|
||||||
|
} REG_PRE_CREATE_KEY_INFORMATION, REG_PRE_OPEN_KEY_INFORMATION,*PREG_PRE_CREATE_KEY_INFORMATION, *PREG_PRE_OPEN_KEY_INFORMATION;;
|
||||||
|
|
||||||
|
typedef struct _REG_POST_CREATE_KEY_INFORMATION {
|
||||||
|
PUNICODE_STRING CompleteName;
|
||||||
|
PVOID Object;
|
||||||
|
NTSTATUS Status;
|
||||||
|
} REG_POST_CREATE_KEY_INFORMATION,REG_POST_OPEN_KEY_INFORMATION, *PREG_POST_CREATE_KEY_INFORMATION, *PREG_POST_OPEN_KEY_INFORMATION;
|
||||||
|
|
||||||
|
typedef struct _REG_POST_OPERATION_INFORMATION {
|
||||||
|
PVOID Object;
|
||||||
|
NTSTATUS Status;
|
||||||
|
PVOID PreInformation;
|
||||||
|
NTSTATUS ReturnStatus;
|
||||||
|
PVOID CallContext;
|
||||||
|
PVOID ObjectContext;
|
||||||
|
PVOID Reserved;
|
||||||
|
} REG_POST_OPERATION_INFORMATION,*PREG_POST_OPERATION_INFORMATION;
|
||||||
|
|
||||||
|
typedef struct _REG_KEY_HANDLE_CLOSE_INFORMATION {
|
||||||
|
PVOID Object;
|
||||||
|
PVOID CallContext;
|
||||||
|
PVOID ObjectContext;
|
||||||
|
PVOID Reserved;
|
||||||
|
} REG_KEY_HANDLE_CLOSE_INFORMATION, *PREG_KEY_HANDLE_CLOSE_INFORMATION;
|
||||||
|
|
||||||
|
$endif
|
||||||
|
|
||||||
|
|
695
include/xdk/exfuncs.h
Normal file
695
include/xdk/exfuncs.h
Normal file
|
@ -0,0 +1,695 @@
|
||||||
|
/******************************************************************************
|
||||||
|
* Executive Functions *
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
$if (_WDMDDK_)
|
||||||
|
#define ExInterlockedIncrementLong(Addend,Lock) Exfi386InterlockedIncrementLong(Addend)
|
||||||
|
#define ExInterlockedDecrementLong(Addend,Lock) Exfi386InterlockedDecrementLong(Addend)
|
||||||
|
#define ExInterlockedExchangeUlong(Target, Value, Lock) Exfi386InterlockedExchangeUlong(Target, Value)
|
||||||
|
|
||||||
|
#define ExAcquireSpinLock(Lock, OldIrql) KeAcquireSpinLock((Lock), (OldIrql))
|
||||||
|
#define ExReleaseSpinLock(Lock, OldIrql) KeReleaseSpinLock((Lock), (OldIrql))
|
||||||
|
#define ExAcquireSpinLockAtDpcLevel(Lock) KeAcquireSpinLockAtDpcLevel(Lock)
|
||||||
|
#define ExReleaseSpinLockFromDpcLevel(Lock) KeReleaseSpinLockFromDpcLevel(Lock)
|
||||||
|
|
||||||
|
#define ExInitializeSListHead InitializeSListHead
|
||||||
|
|
||||||
|
#if defined(_X86_)
|
||||||
|
#if defined(_NTHAL_)
|
||||||
|
#define ExAcquireFastMutex ExiAcquireFastMutex
|
||||||
|
#define ExReleaseFastMutex ExiReleaseFastMutex
|
||||||
|
#define ExTryToAcquireFastMutex ExiTryToAcquireFastMutex
|
||||||
|
#endif
|
||||||
|
#define ExInterlockedAddUlong ExfInterlockedAddUlong
|
||||||
|
#define ExInterlockedInsertHeadList ExfInterlockedInsertHeadList
|
||||||
|
#define ExInterlockedInsertTailList ExfInterlockedInsertTailList
|
||||||
|
#define ExInterlockedRemoveHeadList ExfInterlockedRemoveHeadList
|
||||||
|
#define ExInterlockedPopEntryList ExfInterlockedPopEntryList
|
||||||
|
#define ExInterlockedPushEntryList ExfInterlockedPushEntryList
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(_WIN64)
|
||||||
|
|
||||||
|
#if defined(_NTDRIVER_) || defined(_NTDDK_) || defined(_NTIFS_) || \
|
||||||
|
defined(_NTHAL_) || defined(_NTOSP_)
|
||||||
|
NTKERNELAPI
|
||||||
|
USHORT
|
||||||
|
ExQueryDepthSList(IN PSLIST_HEADER ListHead);
|
||||||
|
#else
|
||||||
|
FORCEINLINE
|
||||||
|
USHORT
|
||||||
|
ExQueryDepthSList(IN PSLIST_HEADER ListHead)
|
||||||
|
{
|
||||||
|
return (USHORT)(ListHead->Alignment & 0xffff);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
PSLIST_ENTRY
|
||||||
|
ExpInterlockedFlushSList(
|
||||||
|
PSLIST_HEADER ListHead);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
PSLIST_ENTRY
|
||||||
|
ExpInterlockedPopEntrySList(
|
||||||
|
PSLIST_HEADER ListHead);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
PSLIST_ENTRY
|
||||||
|
ExpInterlockedPushEntrySList(
|
||||||
|
PSLIST_HEADER ListHead,
|
||||||
|
PSLIST_ENTRY ListEntry);
|
||||||
|
|
||||||
|
#define ExInterlockedFlushSList(Head) \
|
||||||
|
ExpInterlockedFlushSList(Head)
|
||||||
|
#define ExInterlockedPopEntrySList(Head, Lock) \
|
||||||
|
ExpInterlockedPopEntrySList(Head)
|
||||||
|
#define ExInterlockedPushEntrySList(Head, Entry, Lock) \
|
||||||
|
ExpInterlockedPushEntrySList(Head, Entry)
|
||||||
|
|
||||||
|
#else // !defined(_WIN64)
|
||||||
|
|
||||||
|
#define ExQueryDepthSList(listhead) (listhead)->Depth
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
PSINGLE_LIST_ENTRY
|
||||||
|
FASTCALL
|
||||||
|
ExInterlockedFlushSList(
|
||||||
|
IN PSLIST_HEADER ListHead);
|
||||||
|
|
||||||
|
#if defined(_WIN2K_COMPAT_SLIST_USAGE) && defined(_X86_)
|
||||||
|
NTKERNELAPI
|
||||||
|
PSINGLE_LIST_ENTRY
|
||||||
|
FASTCALL
|
||||||
|
ExInterlockedPopEntrySList(
|
||||||
|
IN PSLIST_HEADER ListHead,
|
||||||
|
IN PKSPIN_LOCK Lock);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
PSINGLE_LIST_ENTRY
|
||||||
|
FASTCALL
|
||||||
|
ExInterlockedPushEntrySList(
|
||||||
|
IN PSLIST_HEADER ListHead,
|
||||||
|
IN PSINGLE_LIST_ENTRY ListEntry,
|
||||||
|
IN PKSPIN_LOCK Lock);
|
||||||
|
#else
|
||||||
|
#define ExInterlockedPopEntrySList(_ListHead, _Lock) \
|
||||||
|
InterlockedPopEntrySList(_ListHead)
|
||||||
|
#define ExInterlockedPushEntrySList(_ListHead, _ListEntry, _Lock) \
|
||||||
|
InterlockedPushEntrySList(_ListHead, _ListEntry)
|
||||||
|
#endif // _WIN2K_COMPAT_SLIST_USAGE
|
||||||
|
|
||||||
|
#endif // !defined(_WIN64)
|
||||||
|
|
||||||
|
/* ERESOURCE_THREAD
|
||||||
|
* ExGetCurrentResourceThread(
|
||||||
|
* VOID);
|
||||||
|
*/
|
||||||
|
#define ExGetCurrentResourceThread() ((ERESOURCE_THREAD)PsGetCurrentThread())
|
||||||
|
|
||||||
|
#define ExReleaseResource(R) (ExReleaseResourceLite(R))
|
||||||
|
|
||||||
|
/* VOID
|
||||||
|
* ExInitializeWorkItem(
|
||||||
|
* IN PWORK_QUEUE_ITEM Item,
|
||||||
|
* IN PWORKER_THREAD_ROUTINE Routine,
|
||||||
|
* IN PVOID Context)
|
||||||
|
*/
|
||||||
|
#define ExInitializeWorkItem(Item, Routine, Context) \
|
||||||
|
{ \
|
||||||
|
(Item)->WorkerRoutine = Routine; \
|
||||||
|
(Item)->Parameter = Context; \
|
||||||
|
(Item)->List.Flink = NULL; \
|
||||||
|
}
|
||||||
|
|
||||||
|
FORCEINLINE
|
||||||
|
VOID
|
||||||
|
ExInitializeFastMutex(
|
||||||
|
OUT PFAST_MUTEX FastMutex)
|
||||||
|
{
|
||||||
|
FastMutex->Count = FM_LOCK_BIT;
|
||||||
|
FastMutex->Owner = NULL;
|
||||||
|
FastMutex->Contention = 0;
|
||||||
|
KeInitializeEvent(&FastMutex->Event, SynchronizationEvent, FALSE);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
#if (NTDDI_VERSION >= NTDDI_WIN2K)
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
FASTCALL
|
||||||
|
ExAcquireFastMutex(
|
||||||
|
IN OUT PFAST_MUTEX FastMutex);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
FASTCALL
|
||||||
|
ExReleaseFastMutex(
|
||||||
|
IN OUT PFAST_MUTEX FastMutex);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
BOOLEAN
|
||||||
|
FASTCALL
|
||||||
|
ExTryToAcquireFastMutex(
|
||||||
|
IN OUT PFAST_MUTEX FastMutex);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
FASTCALL
|
||||||
|
ExAcquireFastMutexUnsafe(
|
||||||
|
IN OUT PFAST_MUTEX FastMutex);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
FASTCALL
|
||||||
|
ExReleaseFastMutexUnsafe(
|
||||||
|
IN OUT PFAST_MUTEX FastMutex);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
BOOLEAN
|
||||||
|
NTAPI
|
||||||
|
ExAcquireResourceExclusiveLite(
|
||||||
|
IN PERESOURCE Resource,
|
||||||
|
IN BOOLEAN Wait);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
BOOLEAN
|
||||||
|
NTAPI
|
||||||
|
ExAcquireResourceSharedLite(
|
||||||
|
IN PERESOURCE Resource,
|
||||||
|
IN BOOLEAN Wait);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
BOOLEAN
|
||||||
|
NTAPI
|
||||||
|
ExAcquireSharedStarveExclusive(
|
||||||
|
IN PERESOURCE Resource,
|
||||||
|
IN BOOLEAN Wait);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
BOOLEAN
|
||||||
|
NTAPI
|
||||||
|
ExAcquireSharedWaitForExclusive(
|
||||||
|
IN PERESOURCE Resource,
|
||||||
|
IN BOOLEAN Wait);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
PVOID
|
||||||
|
NTAPI
|
||||||
|
ExAllocatePool(
|
||||||
|
IN POOL_TYPE PoolType,
|
||||||
|
IN SIZE_T NumberOfBytes);
|
||||||
|
|
||||||
|
#ifdef POOL_TAGGING
|
||||||
|
#define ExAllocatePool(p,n) ExAllocatePoolWithTag(p,n,' kdD')
|
||||||
|
#endif /* POOL_TAGGING */
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
PVOID
|
||||||
|
NTAPI
|
||||||
|
ExAllocatePoolWithQuota(
|
||||||
|
IN POOL_TYPE PoolType,
|
||||||
|
IN SIZE_T NumberOfBytes);
|
||||||
|
|
||||||
|
#ifdef POOL_TAGGING
|
||||||
|
#define ExAllocatePoolWithQuota(p,n) ExAllocatePoolWithQuotaTag(p,n,' kdD')
|
||||||
|
#endif /* POOL_TAGGING */
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
PVOID
|
||||||
|
NTAPI
|
||||||
|
ExAllocatePoolWithQuotaTag(
|
||||||
|
IN POOL_TYPE PoolType,
|
||||||
|
IN SIZE_T NumberOfBytes,
|
||||||
|
IN ULONG Tag);
|
||||||
|
|
||||||
|
#ifndef POOL_TAGGING
|
||||||
|
#define ExAllocatePoolWithQuotaTag(a,b,c) ExAllocatePoolWithQuota(a,b)
|
||||||
|
#endif /* POOL_TAGGING */
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
PVOID
|
||||||
|
NTAPI
|
||||||
|
ExAllocatePoolWithTag(
|
||||||
|
IN POOL_TYPE PoolType,
|
||||||
|
IN SIZE_T NumberOfBytes,
|
||||||
|
IN ULONG Tag);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
PVOID
|
||||||
|
NTAPI
|
||||||
|
ExAllocatePoolWithTagPriority(
|
||||||
|
IN POOL_TYPE PoolType,
|
||||||
|
IN SIZE_T NumberOfBytes,
|
||||||
|
IN ULONG Tag,
|
||||||
|
IN EX_POOL_PRIORITY Priority);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
ExConvertExclusiveToSharedLite(
|
||||||
|
IN PERESOURCE Resource);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
ExCreateCallback(
|
||||||
|
OUT PCALLBACK_OBJECT *CallbackObject,
|
||||||
|
IN POBJECT_ATTRIBUTES ObjectAttributes,
|
||||||
|
IN BOOLEAN Create,
|
||||||
|
IN BOOLEAN AllowMultipleCallbacks);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
ExDeleteNPagedLookasideList(
|
||||||
|
IN PNPAGED_LOOKASIDE_LIST Lookaside);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
ExDeletePagedLookasideList(
|
||||||
|
IN PPAGED_LOOKASIDE_LIST Lookaside);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
ExDeleteResourceLite(
|
||||||
|
IN PERESOURCE Resource);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
ExFreePool(
|
||||||
|
IN PVOID P);
|
||||||
|
|
||||||
|
#ifdef POOL_TAGGING
|
||||||
|
#define ExFreePool(P) ExFreePoolWithTag(P, 0)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
ExFreePoolWithTag(
|
||||||
|
IN PVOID P,
|
||||||
|
IN ULONG Tag);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
ULONG
|
||||||
|
NTAPI
|
||||||
|
ExGetExclusiveWaiterCount(
|
||||||
|
IN PERESOURCE Resource);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
KPROCESSOR_MODE
|
||||||
|
NTAPI
|
||||||
|
ExGetPreviousMode(
|
||||||
|
VOID);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
ULONG
|
||||||
|
NTAPI
|
||||||
|
ExGetSharedWaiterCount(
|
||||||
|
IN PERESOURCE Resource);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
ExInitializeNPagedLookasideList(
|
||||||
|
IN PNPAGED_LOOKASIDE_LIST Lookaside,
|
||||||
|
IN PALLOCATE_FUNCTION Allocate OPTIONAL,
|
||||||
|
IN PFREE_FUNCTION Free OPTIONAL,
|
||||||
|
IN ULONG Flags,
|
||||||
|
IN SIZE_T Size,
|
||||||
|
IN ULONG Tag,
|
||||||
|
IN USHORT Depth);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
ExInitializePagedLookasideList(
|
||||||
|
IN PPAGED_LOOKASIDE_LIST Lookaside,
|
||||||
|
IN PALLOCATE_FUNCTION Allocate OPTIONAL,
|
||||||
|
IN PFREE_FUNCTION Free OPTIONAL,
|
||||||
|
IN ULONG Flags,
|
||||||
|
IN SIZE_T Size,
|
||||||
|
IN ULONG Tag,
|
||||||
|
IN USHORT Depth);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
ExInitializeResourceLite(
|
||||||
|
IN PERESOURCE Resource);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
LARGE_INTEGER
|
||||||
|
NTAPI
|
||||||
|
ExInterlockedAddLargeInteger(
|
||||||
|
IN PLARGE_INTEGER Addend,
|
||||||
|
IN LARGE_INTEGER Increment,
|
||||||
|
IN PKSPIN_LOCK Lock);
|
||||||
|
|
||||||
|
#if defined(_WIN64)
|
||||||
|
#define ExInterlockedAddLargeStatistic(Addend, Increment) \
|
||||||
|
(VOID)InterlockedAdd64(&(Addend)->QuadPart, Increment)
|
||||||
|
#else
|
||||||
|
#define ExInterlockedAddLargeStatistic(Addend, Increment) \
|
||||||
|
_InterlockedAddLargeStatistic((PLONGLONG)&(Addend)->QuadPart, Increment)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
ULONG
|
||||||
|
FASTCALL
|
||||||
|
ExInterlockedAddUlong(
|
||||||
|
IN PULONG Addend,
|
||||||
|
IN ULONG Increment,
|
||||||
|
PKSPIN_LOCK Lock);
|
||||||
|
|
||||||
|
#if defined(_AMD64_) || defined(_IA64_)
|
||||||
|
#define ExInterlockedCompareExchange64(Destination, Exchange, Comperand, Lock) \
|
||||||
|
InterlockedCompareExchange64(Destination, *(Exchange), *(Comperand))
|
||||||
|
#elif defined(_X86_)
|
||||||
|
NTKERNELAPI
|
||||||
|
LONGLONG
|
||||||
|
FASTCALL
|
||||||
|
ExfInterlockedCompareExchange64(
|
||||||
|
IN OUT LONGLONG volatile *Destination,
|
||||||
|
IN PLONGLONG Exchange,
|
||||||
|
IN PLONGLONG Comperand);
|
||||||
|
#define ExInterlockedCompareExchange64(Destination, Exchange, Comperand, Lock) \
|
||||||
|
ExfInterlockedCompareExchange64(Destination, Exchange, Comperand)
|
||||||
|
#else
|
||||||
|
NTKERNELAPI
|
||||||
|
LONGLONG
|
||||||
|
FASTCALL
|
||||||
|
ExInterlockedCompareExchange64(
|
||||||
|
IN OUT LONGLONG volatile *Destination,
|
||||||
|
IN PLONGLONG Exchange,
|
||||||
|
IN PLONGLONG Comparand,
|
||||||
|
IN PKSPIN_LOCK Lock);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
PLIST_ENTRY
|
||||||
|
FASTCALL
|
||||||
|
ExInterlockedInsertHeadList(
|
||||||
|
IN PLIST_ENTRY ListHead,
|
||||||
|
IN PLIST_ENTRY ListEntry,
|
||||||
|
IN PKSPIN_LOCK Lock);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
PLIST_ENTRY
|
||||||
|
FASTCALL
|
||||||
|
ExInterlockedInsertTailList(
|
||||||
|
IN PLIST_ENTRY ListHead,
|
||||||
|
IN PLIST_ENTRY ListEntry,
|
||||||
|
IN PKSPIN_LOCK Lock);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
PSINGLE_LIST_ENTRY
|
||||||
|
FASTCALL
|
||||||
|
ExInterlockedPopEntryList(
|
||||||
|
IN PSINGLE_LIST_ENTRY ListHead,
|
||||||
|
IN PKSPIN_LOCK Lock);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
PSINGLE_LIST_ENTRY
|
||||||
|
FASTCALL
|
||||||
|
ExInterlockedPushEntryList(
|
||||||
|
IN PSINGLE_LIST_ENTRY ListHead,
|
||||||
|
IN PSINGLE_LIST_ENTRY ListEntry,
|
||||||
|
IN PKSPIN_LOCK Lock);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
PLIST_ENTRY
|
||||||
|
FASTCALL
|
||||||
|
ExInterlockedRemoveHeadList(
|
||||||
|
IN PLIST_ENTRY ListHead,
|
||||||
|
IN PKSPIN_LOCK Lock);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
BOOLEAN
|
||||||
|
NTAPI
|
||||||
|
ExIsProcessorFeaturePresent(
|
||||||
|
IN ULONG ProcessorFeature);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
BOOLEAN
|
||||||
|
NTAPI
|
||||||
|
ExIsResourceAcquiredExclusiveLite(
|
||||||
|
IN PERESOURCE Resource);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
ULONG
|
||||||
|
NTAPI
|
||||||
|
ExIsResourceAcquiredSharedLite(
|
||||||
|
IN PERESOURCE Resource);
|
||||||
|
|
||||||
|
#define ExIsResourceAcquiredLite ExIsResourceAcquiredSharedLite
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
ExLocalTimeToSystemTime(
|
||||||
|
IN PLARGE_INTEGER LocalTime,
|
||||||
|
OUT PLARGE_INTEGER SystemTime);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
ExNotifyCallback(
|
||||||
|
IN PCALLBACK_OBJECT CallbackObject,
|
||||||
|
IN PVOID Argument1,
|
||||||
|
IN PVOID Argument2);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
ExQueueWorkItem(
|
||||||
|
IN PWORK_QUEUE_ITEM WorkItem,
|
||||||
|
IN WORK_QUEUE_TYPE QueueType);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
DECLSPEC_NORETURN
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
ExRaiseStatus(
|
||||||
|
IN NTSTATUS Status);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
PVOID
|
||||||
|
NTAPI
|
||||||
|
ExRegisterCallback(
|
||||||
|
IN PCALLBACK_OBJECT CallbackObject,
|
||||||
|
IN PCALLBACK_FUNCTION CallbackFunction,
|
||||||
|
IN PVOID CallbackContext);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
ExReinitializeResourceLite(
|
||||||
|
IN PERESOURCE Resource);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
ExReleaseResourceForThreadLite(
|
||||||
|
IN PERESOURCE Resource,
|
||||||
|
IN ERESOURCE_THREAD ResourceThreadId);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
FASTCALL
|
||||||
|
ExReleaseResourceLite(
|
||||||
|
IN PERESOURCE Resource);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
ExSetResourceOwnerPointer(
|
||||||
|
IN PERESOURCE Resource,
|
||||||
|
IN PVOID OwnerPointer);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
ULONG
|
||||||
|
NTAPI
|
||||||
|
ExSetTimerResolution(
|
||||||
|
IN ULONG DesiredTime,
|
||||||
|
IN BOOLEAN SetResolution);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
ExSystemTimeToLocalTime(
|
||||||
|
IN PLARGE_INTEGER SystemTime,
|
||||||
|
OUT PLARGE_INTEGER LocalTime);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
ExUnregisterCallback(
|
||||||
|
IN PVOID CbRegistration);
|
||||||
|
|
||||||
|
|
||||||
|
#endif // (NTDDI_VERSION >= NTDDI_WIN2K)
|
||||||
|
|
||||||
|
#if (NTDDI_VERSION >= NTDDI_WINXP)
|
||||||
|
NTKERNELAPI
|
||||||
|
BOOLEAN
|
||||||
|
FASTCALL
|
||||||
|
ExAcquireRundownProtection(
|
||||||
|
IN OUT PEX_RUNDOWN_REF RunRef);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
FASTCALL
|
||||||
|
ExInitializeRundownProtection(
|
||||||
|
OUT PEX_RUNDOWN_REF RunRef);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
FASTCALL
|
||||||
|
ExReInitializeRundownProtection(
|
||||||
|
OUT PEX_RUNDOWN_REF RunRef);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
FASTCALL
|
||||||
|
ExReleaseRundownProtection(
|
||||||
|
IN OUT PEX_RUNDOWN_REF RunRef);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
FASTCALL
|
||||||
|
ExRundownCompleted(
|
||||||
|
OUT PEX_RUNDOWN_REF RunRef);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
BOOLEAN
|
||||||
|
NTAPI
|
||||||
|
ExVerifySuite(
|
||||||
|
IN SUITE_TYPE SuiteType);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
FASTCALL
|
||||||
|
ExWaitForRundownProtectionRelease(
|
||||||
|
IN OUT PEX_RUNDOWN_REF RunRef);
|
||||||
|
|
||||||
|
#endif // (NTDDI_VERSION >= NTDDI_WINXP)
|
||||||
|
|
||||||
|
#if (NTDDI_VERSION >= NTDDI_WINXPSP2)
|
||||||
|
NTKERNELAPI
|
||||||
|
BOOLEAN
|
||||||
|
FASTCALL
|
||||||
|
ExAcquireRundownProtectionEx(
|
||||||
|
IN OUT PEX_RUNDOWN_REF RunRef,
|
||||||
|
IN ULONG Count);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
FASTCALL
|
||||||
|
ExReleaseRundownProtectionEx(
|
||||||
|
IN OUT PEX_RUNDOWN_REF RunRef,
|
||||||
|
IN ULONG Count);
|
||||||
|
#endif // (NTDDI_VERSION >= NTDDI_WINXPSP2)
|
||||||
|
|
||||||
|
#if (NTDDI_VERSION >= NTDDI_WS03SP1)
|
||||||
|
NTKERNELAPI
|
||||||
|
PEX_RUNDOWN_REF_CACHE_AWARE
|
||||||
|
NTAPI
|
||||||
|
ExAllocateCacheAwareRundownProtection(
|
||||||
|
IN POOL_TYPE PoolType,
|
||||||
|
IN ULONG PoolTag);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
SIZE_T
|
||||||
|
NTAPI
|
||||||
|
ExSizeOfRundownProtectionCacheAware(VOID);
|
||||||
|
#endif // (NTDDI_VERSION >= NTDDI_WS03SP1)
|
||||||
|
|
||||||
|
#if (NTDDI_VERSION >= NTDDI_VISTA)
|
||||||
|
NTKERNELAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
ExInitializeLookasideListEx(
|
||||||
|
OUT PLOOKASIDE_LIST_EX Lookaside,
|
||||||
|
IN PALLOCATE_FUNCTION_EX Allocate OPTIONAL,
|
||||||
|
IN PFREE_FUNCTION_EX Free OPTIONAL,
|
||||||
|
IN POOL_TYPE PoolType,
|
||||||
|
IN ULONG Flags,
|
||||||
|
IN SIZE_T Size,
|
||||||
|
IN ULONG Tag,
|
||||||
|
IN USHORT Depth);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !defined(MIDL_PASS)
|
||||||
|
|
||||||
|
static __inline PVOID
|
||||||
|
ExAllocateFromNPagedLookasideList(
|
||||||
|
IN PNPAGED_LOOKASIDE_LIST Lookaside)
|
||||||
|
{
|
||||||
|
PVOID Entry;
|
||||||
|
|
||||||
|
Lookaside->L.TotalAllocates++;
|
||||||
|
Entry = InterlockedPopEntrySList(&Lookaside->L.ListHead);
|
||||||
|
if (Entry == NULL) {
|
||||||
|
Lookaside->L.AllocateMisses++;
|
||||||
|
Entry = (Lookaside->L.Allocate)(Lookaside->L.Type,
|
||||||
|
Lookaside->L.Size,
|
||||||
|
Lookaside->L.Tag);
|
||||||
|
}
|
||||||
|
return Entry;
|
||||||
|
}
|
||||||
|
|
||||||
|
static __inline PVOID
|
||||||
|
ExAllocateFromPagedLookasideList(
|
||||||
|
IN PPAGED_LOOKASIDE_LIST Lookaside)
|
||||||
|
{
|
||||||
|
PVOID Entry;
|
||||||
|
|
||||||
|
Lookaside->L.TotalAllocates++;
|
||||||
|
Entry = InterlockedPopEntrySList(&Lookaside->L.ListHead);
|
||||||
|
if (Entry == NULL) {
|
||||||
|
Lookaside->L.AllocateMisses++;
|
||||||
|
Entry = (Lookaside->L.Allocate)(Lookaside->L.Type,
|
||||||
|
Lookaside->L.Size,
|
||||||
|
Lookaside->L.Tag);
|
||||||
|
}
|
||||||
|
return Entry;
|
||||||
|
}
|
||||||
|
|
||||||
|
static __inline VOID
|
||||||
|
ExFreeToNPagedLookasideList(
|
||||||
|
IN PNPAGED_LOOKASIDE_LIST Lookaside,
|
||||||
|
IN PVOID Entry)
|
||||||
|
{
|
||||||
|
Lookaside->L.TotalFrees++;
|
||||||
|
if (ExQueryDepthSList(&Lookaside->L.ListHead) >= Lookaside->L.Depth) {
|
||||||
|
Lookaside->L.FreeMisses++;
|
||||||
|
(Lookaside->L.Free)(Entry);
|
||||||
|
} else {
|
||||||
|
InterlockedPushEntrySList(&Lookaside->L.ListHead, (PSLIST_ENTRY)Entry);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static __inline VOID
|
||||||
|
ExFreeToPagedLookasideList(
|
||||||
|
IN PPAGED_LOOKASIDE_LIST Lookaside,
|
||||||
|
IN PVOID Entry)
|
||||||
|
{
|
||||||
|
Lookaside->L.TotalFrees++;
|
||||||
|
if (ExQueryDepthSList(&Lookaside->L.ListHead) >= Lookaside->L.Depth) {
|
||||||
|
Lookaside->L.FreeMisses++;
|
||||||
|
(Lookaside->L.Free)(Entry);
|
||||||
|
} else {
|
||||||
|
InterlockedPushEntrySList(&Lookaside->L.ListHead, (PSLIST_ENTRY)Entry);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // !defined(MIDL_PASS)
|
||||||
|
|
||||||
|
$endif
|
||||||
|
|
179
include/xdk/extypes.h
Normal file
179
include/xdk/extypes.h
Normal file
|
@ -0,0 +1,179 @@
|
||||||
|
/******************************************************************************
|
||||||
|
* Executive Types *
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
$if (_WDMDDK_)
|
||||||
|
#define EX_RUNDOWN_ACTIVE 0x1
|
||||||
|
#define EX_RUNDOWN_COUNT_SHIFT 0x1
|
||||||
|
#define EX_RUNDOWN_COUNT_INC (1 << EX_RUNDOWN_COUNT_SHIFT)
|
||||||
|
|
||||||
|
#ifdef _WIN64
|
||||||
|
#define PORT_MAXIMUM_MESSAGE_LENGTH 512
|
||||||
|
#else
|
||||||
|
#define PORT_MAXIMUM_MESSAGE_LENGTH 256
|
||||||
|
#endif
|
||||||
|
|
||||||
|
typedef struct _FAST_MUTEX {
|
||||||
|
volatile LONG Count;
|
||||||
|
PKTHREAD Owner;
|
||||||
|
ULONG Contention;
|
||||||
|
KEVENT Event;
|
||||||
|
ULONG OldIrql;
|
||||||
|
} FAST_MUTEX, *PFAST_MUTEX;
|
||||||
|
|
||||||
|
typedef enum _SUITE_TYPE {
|
||||||
|
SmallBusiness,
|
||||||
|
Enterprise,
|
||||||
|
BackOffice,
|
||||||
|
CommunicationServer,
|
||||||
|
TerminalServer,
|
||||||
|
SmallBusinessRestricted,
|
||||||
|
EmbeddedNT,
|
||||||
|
DataCenter,
|
||||||
|
SingleUserTS,
|
||||||
|
Personal,
|
||||||
|
Blade,
|
||||||
|
EmbeddedRestricted,
|
||||||
|
SecurityAppliance,
|
||||||
|
StorageServer,
|
||||||
|
ComputeServer,
|
||||||
|
WHServer,
|
||||||
|
MaxSuiteType
|
||||||
|
} SUITE_TYPE;
|
||||||
|
|
||||||
|
typedef enum _EX_POOL_PRIORITY {
|
||||||
|
LowPoolPriority,
|
||||||
|
LowPoolPrioritySpecialPoolOverrun = 8,
|
||||||
|
LowPoolPrioritySpecialPoolUnderrun = 9,
|
||||||
|
NormalPoolPriority = 16,
|
||||||
|
NormalPoolPrioritySpecialPoolOverrun = 24,
|
||||||
|
NormalPoolPrioritySpecialPoolUnderrun = 25,
|
||||||
|
HighPoolPriority = 32,
|
||||||
|
HighPoolPrioritySpecialPoolOverrun = 40,
|
||||||
|
HighPoolPrioritySpecialPoolUnderrun = 41
|
||||||
|
} EX_POOL_PRIORITY;
|
||||||
|
|
||||||
|
#if !defined(_WIN64) && (defined(_NTDDK_) || defined(_NTIFS_) || defined(_NDIS_))
|
||||||
|
#define LOOKASIDE_ALIGN
|
||||||
|
#else
|
||||||
|
#define LOOKASIDE_ALIGN /* FIXME: DECLSPEC_CACHEALIGN */
|
||||||
|
#endif
|
||||||
|
|
||||||
|
typedef struct _LOOKASIDE_LIST_EX *PLOOKASIDE_LIST_EX;
|
||||||
|
|
||||||
|
typedef PVOID
|
||||||
|
(DDKAPI *PALLOCATE_FUNCTION)(
|
||||||
|
IN POOL_TYPE PoolType,
|
||||||
|
IN SIZE_T NumberOfBytes,
|
||||||
|
IN ULONG Tag);
|
||||||
|
|
||||||
|
typedef PVOID
|
||||||
|
(DDKAPI *PALLOCATE_FUNCTION_EX)(
|
||||||
|
IN POOL_TYPE PoolType,
|
||||||
|
IN SIZE_T NumberOfBytes,
|
||||||
|
IN ULONG Tag,
|
||||||
|
IN OUT PLOOKASIDE_LIST_EX Lookaside);
|
||||||
|
|
||||||
|
typedef VOID
|
||||||
|
(DDKAPI *PFREE_FUNCTION)(
|
||||||
|
IN PVOID Buffer);
|
||||||
|
|
||||||
|
typedef VOID
|
||||||
|
(DDKAPI *PFREE_FUNCTION_EX)(
|
||||||
|
IN PVOID Buffer,
|
||||||
|
IN OUT PLOOKASIDE_LIST_EX Lookaside);
|
||||||
|
|
||||||
|
typedef VOID
|
||||||
|
(DDKAPI *PCALLBACK_FUNCTION)(
|
||||||
|
IN PVOID CallbackContext,
|
||||||
|
IN PVOID Argument1,
|
||||||
|
IN PVOID Argument2);
|
||||||
|
|
||||||
|
#define GENERAL_LOOKASIDE_LAYOUT \
|
||||||
|
union { \
|
||||||
|
SLIST_HEADER ListHead; \
|
||||||
|
SINGLE_LIST_ENTRY SingleListHead; \
|
||||||
|
} DUMMYUNIONNAME; \
|
||||||
|
USHORT Depth; \
|
||||||
|
USHORT MaximumDepth; \
|
||||||
|
ULONG TotalAllocates; \
|
||||||
|
union { \
|
||||||
|
ULONG AllocateMisses; \
|
||||||
|
ULONG AllocateHits; \
|
||||||
|
} DUMMYUNIONNAME2; \
|
||||||
|
\
|
||||||
|
ULONG TotalFrees; \
|
||||||
|
union { \
|
||||||
|
ULONG FreeMisses; \
|
||||||
|
ULONG FreeHits; \
|
||||||
|
} DUMMYUNIONNAME3; \
|
||||||
|
\
|
||||||
|
POOL_TYPE Type; \
|
||||||
|
ULONG Tag; \
|
||||||
|
ULONG Size; \
|
||||||
|
union { \
|
||||||
|
PALLOCATE_FUNCTION_EX AllocateEx; \
|
||||||
|
PALLOCATE_FUNCTION Allocate; \
|
||||||
|
} DUMMYUNIONNAME4; \
|
||||||
|
\
|
||||||
|
union { \
|
||||||
|
PFREE_FUNCTION_EX FreeEx; \
|
||||||
|
PFREE_FUNCTION Free; \
|
||||||
|
} DUMMYUNIONNAME5; \
|
||||||
|
\
|
||||||
|
LIST_ENTRY ListEntry; \
|
||||||
|
ULONG LastTotalAllocates; \
|
||||||
|
union { \
|
||||||
|
ULONG LastAllocateMisses; \
|
||||||
|
ULONG LastAllocateHits; \
|
||||||
|
} DUMMYUNIONNAME6; \
|
||||||
|
ULONG Future[2];
|
||||||
|
|
||||||
|
typedef struct LOOKASIDE_ALIGN _GENERAL_LOOKASIDE {
|
||||||
|
GENERAL_LOOKASIDE_LAYOUT
|
||||||
|
} GENERAL_LOOKASIDE, *PGENERAL_LOOKASIDE;
|
||||||
|
|
||||||
|
typedef struct _GENERAL_LOOKASIDE_POOL {
|
||||||
|
GENERAL_LOOKASIDE_LAYOUT
|
||||||
|
} GENERAL_LOOKASIDE_POOL, *PGENERAL_LOOKASIDE_POOL;
|
||||||
|
|
||||||
|
typedef struct _PAGED_LOOKASIDE_LIST {
|
||||||
|
GENERAL_LOOKASIDE L;
|
||||||
|
#if !defined(_AMD64_) && !defined(_IA64_)
|
||||||
|
FAST_MUTEX Lock__ObsoleteButDoNotDelete;
|
||||||
|
#endif
|
||||||
|
} PAGED_LOOKASIDE_LIST, *PPAGED_LOOKASIDE_LIST;
|
||||||
|
|
||||||
|
typedef struct LOOKASIDE_ALIGN _NPAGED_LOOKASIDE_LIST {
|
||||||
|
GENERAL_LOOKASIDE L;
|
||||||
|
#if !defined(_AMD64_) && !defined(_IA64_)
|
||||||
|
KSPIN_LOCK Lock__ObsoleteButDoNotDelete;
|
||||||
|
#endif
|
||||||
|
} NPAGED_LOOKASIDE_LIST, *PNPAGED_LOOKASIDE_LIST;
|
||||||
|
|
||||||
|
typedef struct _LOOKASIDE_LIST_EX {
|
||||||
|
GENERAL_LOOKASIDE_POOL L;
|
||||||
|
} LOOKASIDE_LIST_EX;
|
||||||
|
|
||||||
|
typedef struct _EX_RUNDOWN_REF {
|
||||||
|
__GNU_EXTENSION union {
|
||||||
|
volatile ULONG_PTR Count;
|
||||||
|
volatile PVOID Ptr;
|
||||||
|
};
|
||||||
|
} EX_RUNDOWN_REF, *PEX_RUNDOWN_REF;
|
||||||
|
|
||||||
|
typedef struct _EX_RUNDOWN_REF_CACHE_AWARE *PEX_RUNDOWN_REF_CACHE_AWARE;
|
||||||
|
|
||||||
|
typedef VOID
|
||||||
|
(DDKAPI *PWORKER_THREAD_ROUTINE)(
|
||||||
|
IN PVOID Parameter);
|
||||||
|
|
||||||
|
typedef struct _WORK_QUEUE_ITEM {
|
||||||
|
LIST_ENTRY List;
|
||||||
|
PWORKER_THREAD_ROUTINE WorkerRoutine;
|
||||||
|
volatile PVOID Parameter;
|
||||||
|
} WORK_QUEUE_ITEM, *PWORK_QUEUE_ITEM;
|
||||||
|
|
||||||
|
$endif
|
||||||
|
|
||||||
|
|
3
include/xdk/generate.bat
Normal file
3
include/xdk/generate.bat
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
|
||||||
|
|
||||||
|
..\..\output-i386\tools\hpp\hpp.exe wdm.template.h wdm.h
|
54
include/xdk/halfuncs.h
Normal file
54
include/xdk/halfuncs.h
Normal file
|
@ -0,0 +1,54 @@
|
||||||
|
|
||||||
|
#if defined(USE_DMA_MACROS) && !defined(_NTHAL_) && (defined(_NTDDK_) || defined(_NTDRIVER_)) || defined(_WDM_INCLUDED_)
|
||||||
|
FORCEINLINE
|
||||||
|
PVOID
|
||||||
|
NTAPI
|
||||||
|
HalAllocateCommonBuffer(
|
||||||
|
IN PDMA_ADAPTER DmaAdapter,
|
||||||
|
IN ULONG Length,
|
||||||
|
OUT PPHYSICAL_ADDRESS LogicalAddress,
|
||||||
|
IN BOOLEAN CacheEnabled)
|
||||||
|
{
|
||||||
|
PALLOCATE_COMMON_BUFFER allocateCommonBuffer;
|
||||||
|
PVOID commonBuffer;
|
||||||
|
|
||||||
|
allocateCommonBuffer = *(DmaAdapter)->DmaOperations->AllocateCommonBuffer;
|
||||||
|
ASSERT( allocateCommonBuffer != NULL );
|
||||||
|
commonBuffer = allocateCommonBuffer( DmaAdapter, Length, LogicalAddress, CacheEnabled );
|
||||||
|
return commonBuffer;
|
||||||
|
}
|
||||||
|
|
||||||
|
FORCEINLINE
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
HalFreeCommonBuffer(
|
||||||
|
IN PDMA_ADAPTER DmaAdapter,
|
||||||
|
IN ULONG Length,
|
||||||
|
IN PHYSICAL_ADDRESS LogicalAddress,
|
||||||
|
IN PVOID VirtualAddress,
|
||||||
|
IN BOOLEAN CacheEnabled)
|
||||||
|
{
|
||||||
|
PFREE_COMMON_BUFFER freeCommonBuffer;
|
||||||
|
|
||||||
|
freeCommonBuffer = *(DmaAdapter)->DmaOperations->FreeCommonBuffer;
|
||||||
|
ASSERT( freeCommonBuffer != NULL );
|
||||||
|
freeCommonBuffer( DmaAdapter, Length, LogicalAddress, VirtualAddress, CacheEnabled );
|
||||||
|
}
|
||||||
|
|
||||||
|
FORCEINLINE
|
||||||
|
ULONG
|
||||||
|
NTAPI
|
||||||
|
HalReadDmaCounter(
|
||||||
|
IN PDMA_ADAPTER DmaAdapter)
|
||||||
|
{
|
||||||
|
PREAD_DMA_COUNTER readDmaCounter;
|
||||||
|
ULONG counter;
|
||||||
|
|
||||||
|
readDmaCounter = *(DmaAdapter)->DmaOperations->ReadDmaCounter;
|
||||||
|
ASSERT( readDmaCounter != NULL );
|
||||||
|
counter = readDmaCounter( DmaAdapter );
|
||||||
|
return counter;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
37
include/xdk/ia64/ke.h
Normal file
37
include/xdk/ia64/ke.h
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
$if (_WDMDDK_)
|
||||||
|
/** Kernel definitions for IA64 **/
|
||||||
|
|
||||||
|
/* Interrupt request levels */
|
||||||
|
#define PASSIVE_LEVEL 0
|
||||||
|
#define LOW_LEVEL 0
|
||||||
|
#define APC_LEVEL 1
|
||||||
|
#define DISPATCH_LEVEL 2
|
||||||
|
#define CMC_LEVEL 3
|
||||||
|
#define DEVICE_LEVEL_BASE 4
|
||||||
|
#define PC_LEVEL 12
|
||||||
|
#define IPI_LEVEL 14
|
||||||
|
#define DRS_LEVEL 14
|
||||||
|
#define CLOCK_LEVEL 13
|
||||||
|
#define POWER_LEVEL 15
|
||||||
|
#define PROFILE_LEVEL 15
|
||||||
|
#define HIGH_LEVEL 15
|
||||||
|
|
||||||
|
#define KI_USER_SHARED_DATA ((ULONG_PTR)(KADDRESS_BASE + 0xFFFE0000))
|
||||||
|
extern volatile LARGE_INTEGER KeTickCount;
|
||||||
|
|
||||||
|
FORCEINLINE
|
||||||
|
VOID
|
||||||
|
KeFlushWriteBuffer(VOID)
|
||||||
|
{
|
||||||
|
__mf ();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
NTSYSAPI
|
||||||
|
PKTHREAD
|
||||||
|
NTAPI
|
||||||
|
KeGetCurrentThread(
|
||||||
|
VOID);
|
||||||
|
|
||||||
|
$endif
|
||||||
|
|
187
include/xdk/interlocked.h
Normal file
187
include/xdk/interlocked.h
Normal file
|
@ -0,0 +1,187 @@
|
||||||
|
/******************************************************************************
|
||||||
|
* INTERLOCKED Functions *
|
||||||
|
******************************************************************************/
|
||||||
|
//
|
||||||
|
// Intrinsics (note: taken from our winnt.h)
|
||||||
|
// FIXME: 64-bit
|
||||||
|
//
|
||||||
|
#if defined(__GNUC__)
|
||||||
|
|
||||||
|
static __inline__ BOOLEAN
|
||||||
|
InterlockedBitTestAndSet(IN LONG volatile *Base,
|
||||||
|
IN LONG Bit)
|
||||||
|
{
|
||||||
|
#if defined(_M_IX86)
|
||||||
|
LONG OldBit;
|
||||||
|
__asm__ __volatile__("lock "
|
||||||
|
"btsl %2,%1\n\t"
|
||||||
|
"sbbl %0,%0\n\t"
|
||||||
|
:"=r" (OldBit),"+m" (*Base)
|
||||||
|
:"Ir" (Bit)
|
||||||
|
: "memory");
|
||||||
|
return OldBit;
|
||||||
|
#else
|
||||||
|
return (_InterlockedOr(Base, 1 << Bit) >> Bit) & 1;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
static __inline__ BOOLEAN
|
||||||
|
InterlockedBitTestAndReset(IN LONG volatile *Base,
|
||||||
|
IN LONG Bit)
|
||||||
|
{
|
||||||
|
#if defined(_M_IX86)
|
||||||
|
LONG OldBit;
|
||||||
|
__asm__ __volatile__("lock "
|
||||||
|
"btrl %2,%1\n\t"
|
||||||
|
"sbbl %0,%0\n\t"
|
||||||
|
:"=r" (OldBit),"+m" (*Base)
|
||||||
|
:"Ir" (Bit)
|
||||||
|
: "memory");
|
||||||
|
return OldBit;
|
||||||
|
#else
|
||||||
|
return (_InterlockedAnd(Base, ~(1 << Bit)) >> Bit) & 1;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define BitScanForward _BitScanForward
|
||||||
|
#define BitScanReverse _BitScanReverse
|
||||||
|
#define BitTest _bittest
|
||||||
|
#define BitTestAndComplement _bittestandcomplement
|
||||||
|
#define BitTestAndSet _bittestandset
|
||||||
|
#define BitTestAndReset _bittestandreset
|
||||||
|
#define InterlockedBitTestAndSet _interlockedbittestandset
|
||||||
|
#define InterlockedBitTestAndReset _interlockedbittestandreset
|
||||||
|
|
||||||
|
#ifdef _M_AMD64
|
||||||
|
#define InterlockedBitTestAndSet64 _interlockedbittestandset64
|
||||||
|
#define InterlockedBitTestAndReset64 _interlockedbittestandreset64
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !defined(__INTERLOCKED_DECLARED)
|
||||||
|
#define __INTERLOCKED_DECLARED
|
||||||
|
|
||||||
|
#if defined (_X86_)
|
||||||
|
#if defined(NO_INTERLOCKED_INTRINSICS)
|
||||||
|
NTKERNELAPI
|
||||||
|
LONG
|
||||||
|
FASTCALL
|
||||||
|
InterlockedIncrement(
|
||||||
|
IN OUT LONG volatile *Addend);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
LONG
|
||||||
|
FASTCALL
|
||||||
|
InterlockedDecrement(
|
||||||
|
IN OUT LONG volatile *Addend);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
LONG
|
||||||
|
FASTCALL
|
||||||
|
InterlockedCompareExchange(
|
||||||
|
IN OUT LONG volatile *Destination,
|
||||||
|
IN LONG Exchange,
|
||||||
|
IN LONG Comparand);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
LONG
|
||||||
|
FASTCALL
|
||||||
|
InterlockedExchange(
|
||||||
|
IN OUT LONG volatile *Destination,
|
||||||
|
IN LONG Value);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
LONG
|
||||||
|
FASTCALL
|
||||||
|
InterlockedExchangeAdd(
|
||||||
|
IN OUT LONG volatile *Addend,
|
||||||
|
IN LONG Value);
|
||||||
|
|
||||||
|
#else // !defined(NO_INTERLOCKED_INTRINSICS)
|
||||||
|
|
||||||
|
#define InterlockedExchange _InterlockedExchange
|
||||||
|
#define InterlockedIncrement _InterlockedIncrement
|
||||||
|
#define InterlockedDecrement _InterlockedDecrement
|
||||||
|
#define InterlockedExchangeAdd _InterlockedExchangeAdd
|
||||||
|
#define InterlockedCompareExchange _InterlockedCompareExchange
|
||||||
|
#define InterlockedOr _InterlockedOr
|
||||||
|
#define InterlockedAnd _InterlockedAnd
|
||||||
|
#define InterlockedXor _InterlockedXor
|
||||||
|
|
||||||
|
#endif // !defined(NO_INTERLOCKED_INTRINSICS)
|
||||||
|
|
||||||
|
#endif // defined (_X86_)
|
||||||
|
|
||||||
|
#if !defined (_WIN64)
|
||||||
|
/*
|
||||||
|
* PVOID
|
||||||
|
* InterlockedExchangePointer(
|
||||||
|
* IN OUT PVOID volatile *Target,
|
||||||
|
* IN PVOID Value)
|
||||||
|
*/
|
||||||
|
#define InterlockedExchangePointer(Target, Value) \
|
||||||
|
((PVOID) InterlockedExchange((PLONG) Target, (LONG) Value))
|
||||||
|
|
||||||
|
/*
|
||||||
|
* PVOID
|
||||||
|
* InterlockedCompareExchangePointer(
|
||||||
|
* IN OUT PVOID *Destination,
|
||||||
|
* IN PVOID Exchange,
|
||||||
|
* IN PVOID Comparand)
|
||||||
|
*/
|
||||||
|
#define InterlockedCompareExchangePointer(Destination, Exchange, Comparand) \
|
||||||
|
((PVOID) InterlockedCompareExchange((PLONG) Destination, (LONG) Exchange, (LONG) Comparand))
|
||||||
|
|
||||||
|
#define InterlockedExchangeAddSizeT(a, b) InterlockedExchangeAdd((LONG *)a, b)
|
||||||
|
#define InterlockedIncrementSizeT(a) InterlockedIncrement((LONG *)a)
|
||||||
|
#define InterlockedDecrementSizeT(a) InterlockedDecrement((LONG *)a)
|
||||||
|
|
||||||
|
#endif // !defined (_WIN64)
|
||||||
|
|
||||||
|
#if defined (_M_AMD64)
|
||||||
|
|
||||||
|
#define InterlockedExchangeAddSizeT(a, b) InterlockedExchangeAdd64((LONGLONG *)a, (LONGLONG)b)
|
||||||
|
#define InterlockedIncrementSizeT(a) InterlockedIncrement64((LONGLONG *)a)
|
||||||
|
#define InterlockedDecrementSizeT(a) InterlockedDecrement64((LONGLONG *)a)
|
||||||
|
#define InterlockedAnd _InterlockedAnd
|
||||||
|
#define InterlockedOr _InterlockedOr
|
||||||
|
#define InterlockedXor _InterlockedXor
|
||||||
|
#define InterlockedIncrement _InterlockedIncrement
|
||||||
|
#define InterlockedDecrement _InterlockedDecrement
|
||||||
|
#define InterlockedAdd _InterlockedAdd
|
||||||
|
#define InterlockedExchange _InterlockedExchange
|
||||||
|
#define InterlockedExchangeAdd _InterlockedExchangeAdd
|
||||||
|
#define InterlockedCompareExchange _InterlockedCompareExchange
|
||||||
|
#define InterlockedAnd64 _InterlockedAnd64
|
||||||
|
#define InterlockedOr64 _InterlockedOr64
|
||||||
|
#define InterlockedXor64 _InterlockedXor64
|
||||||
|
#define InterlockedIncrement64 _InterlockedIncrement64
|
||||||
|
#define InterlockedDecrement64 _InterlockedDecrement64
|
||||||
|
#define InterlockedAdd64 _InterlockedAdd64
|
||||||
|
#define InterlockedExchange64 _InterlockedExchange64
|
||||||
|
#define InterlockedExchangeAdd64 _InterlockedExchangeAdd64
|
||||||
|
#define InterlockedCompareExchange64 _InterlockedCompareExchange64
|
||||||
|
#define InterlockedCompareExchangePointer _InterlockedCompareExchangePointer
|
||||||
|
#define InterlockedExchangePointer _InterlockedExchangePointer
|
||||||
|
#define InterlockedBitTestAndSet64 _interlockedbittestandset64
|
||||||
|
#define InterlockedBitTestAndReset64 _interlockedbittestandreset64
|
||||||
|
|
||||||
|
#endif // _M_AMD64
|
||||||
|
|
||||||
|
#if defined(_M_AMD64) && !defined(RC_INVOKED) && !defined(MIDL_PASS)
|
||||||
|
//#if !defined(_X86AMD64_) // FIXME: what's _X86AMD64_ used for?
|
||||||
|
FORCEINLINE
|
||||||
|
LONG64
|
||||||
|
InterlockedAdd64(
|
||||||
|
IN OUT LONG64 volatile *Addend,
|
||||||
|
IN LONG64 Value)
|
||||||
|
{
|
||||||
|
return InterlockedExchangeAdd64(Addend, Value) + Value;
|
||||||
|
}
|
||||||
|
//#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* !__INTERLOCKED_DECLARED */
|
||||||
|
|
||||||
|
|
1576
include/xdk/iofuncs.h
Normal file
1576
include/xdk/iofuncs.h
Normal file
File diff suppressed because it is too large
Load diff
2462
include/xdk/iotypes.h
Normal file
2462
include/xdk/iotypes.h
Normal file
File diff suppressed because it is too large
Load diff
167
include/xdk/kdfuncs.h
Normal file
167
include/xdk/kdfuncs.h
Normal file
|
@ -0,0 +1,167 @@
|
||||||
|
/******************************************************************************
|
||||||
|
* Kernel Debugger Functions *
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
#ifndef _DBGNT_
|
||||||
|
ULONG
|
||||||
|
DDKCDECLAPI
|
||||||
|
DbgPrint(
|
||||||
|
IN PCSTR Format,
|
||||||
|
IN ...);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if DBG
|
||||||
|
|
||||||
|
#define KdPrint(_x_) DbgPrint _x_
|
||||||
|
#define KdPrintEx(_x_) DbgPrintEx _x_
|
||||||
|
#define vKdPrintExWithPrefix(_x_) vDbgPrintExWithPrefix _x_
|
||||||
|
#define KdBreakPoint() DbgBreakPoint()
|
||||||
|
#define KdBreakPointWithStatus(s) DbgBreakPointWithStatus(s)
|
||||||
|
|
||||||
|
#else /* !DBG */
|
||||||
|
|
||||||
|
#define KdPrint(_x_)
|
||||||
|
#define KdPrintEx(_x_)
|
||||||
|
#define vKdPrintExWithPrefix(_x_)
|
||||||
|
#define KdBreakPoint()
|
||||||
|
#define KdBreakPointWithStatus(s)
|
||||||
|
|
||||||
|
#endif /* !DBG */
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
|
|
||||||
|
extern NTKERNELAPI BOOLEAN KdDebuggerNotPresent;
|
||||||
|
extern NTKERNELAPI BOOLEAN KdDebuggerEnabled;
|
||||||
|
#define KD_DEBUGGER_ENABLED KdDebuggerEnabled
|
||||||
|
#define KD_DEBUGGER_NOT_PRESENT KdDebuggerNotPresent
|
||||||
|
|
||||||
|
#elif defined(_NTDDK_) || defined(_NTIFS_) || defined(_NTHAL_) || defined(_WDMDDK_) || defined(_NTOSP_)
|
||||||
|
|
||||||
|
extern NTKERNELAPI PBOOLEAN KdDebuggerNotPresent;
|
||||||
|
extern NTKERNELAPI PBOOLEAN KdDebuggerEnabled;
|
||||||
|
#define KD_DEBUGGER_ENABLED *KdDebuggerEnabled
|
||||||
|
#define KD_DEBUGGER_NOT_PRESENT *KdDebuggerNotPresent
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
extern BOOLEAN KdDebuggerNotPresent;
|
||||||
|
extern BOOLEAN KdDebuggerEnabled;
|
||||||
|
#define KD_DEBUGGER_ENABLED KdDebuggerEnabled
|
||||||
|
#define KD_DEBUGGER_NOT_PRESENT KdDebuggerNotPresent
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef _VA_LIST_DEFINED
|
||||||
|
#if (NTDDI_VERSION >= NTDDI_WINXP)
|
||||||
|
|
||||||
|
NTSYSAPI
|
||||||
|
ULONG
|
||||||
|
NTAPI
|
||||||
|
vDbgPrintEx(
|
||||||
|
IN ULONG ComponentId,
|
||||||
|
IN ULONG Level,
|
||||||
|
IN PCCH Format,
|
||||||
|
IN va_list ap);
|
||||||
|
|
||||||
|
NTSYSAPI
|
||||||
|
ULONG
|
||||||
|
NTAPI
|
||||||
|
vDbgPrintExWithPrefix(
|
||||||
|
IN PCCH Prefix,
|
||||||
|
IN ULONG ComponentId,
|
||||||
|
IN ULONG Level,
|
||||||
|
IN PCCH Format,
|
||||||
|
IN va_list ap);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
#endif // _VA_LIST_DEFINED
|
||||||
|
|
||||||
|
#if (NTDDI_VERSION >= NTDDI_WIN2K)
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
KdDisableDebugger(
|
||||||
|
VOID);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
KdEnableDebugger(
|
||||||
|
VOID);
|
||||||
|
|
||||||
|
#if (_MSC_FULL_VER >= 150030729) && !defined(IMPORT_NATIVE_DBG_BREAK)
|
||||||
|
#define DbgBreakPoint __debugbreak
|
||||||
|
#else
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
DbgBreakPoint(
|
||||||
|
VOID);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
NTSYSAPI
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
DbgBreakPointWithStatus(
|
||||||
|
IN ULONG Status);
|
||||||
|
|
||||||
|
NTSYSAPI
|
||||||
|
ULONG
|
||||||
|
DDKCDECLAPI
|
||||||
|
DbgPrintReturnControlC(
|
||||||
|
IN PCCH Format,
|
||||||
|
IN ...);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if (NTDDI_VERSION >= NTDDI_WINXP)
|
||||||
|
|
||||||
|
NTSYSAPI
|
||||||
|
ULONG
|
||||||
|
DDKCDECLAPI
|
||||||
|
DbgPrintEx(
|
||||||
|
IN ULONG ComponentId,
|
||||||
|
IN ULONG Level,
|
||||||
|
IN PCSTR Format,
|
||||||
|
IN ...);
|
||||||
|
|
||||||
|
NTSYSAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
DbgQueryDebugFilterState(
|
||||||
|
IN ULONG ComponentId,
|
||||||
|
IN ULONG Level);
|
||||||
|
|
||||||
|
NTSYSAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
DbgSetDebugFilterState(
|
||||||
|
IN ULONG ComponentId,
|
||||||
|
IN ULONG Level,
|
||||||
|
IN BOOLEAN State);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if (NTDDI_VERSION >= NTDDI_WS03)
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
BOOLEAN
|
||||||
|
NTAPI
|
||||||
|
KdRefreshDebuggerNotPresent(
|
||||||
|
VOID
|
||||||
|
);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if (NTDDI_VERSION >= NTDDI_WS03SP1)
|
||||||
|
NTKERNELAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
KdChangeOption(
|
||||||
|
IN KD_OPTION Option,
|
||||||
|
IN ULONG InBufferBytes OPTIONAL,
|
||||||
|
IN PVOID InBuffer,
|
||||||
|
IN ULONG OutBufferBytes OPTIONAL,
|
||||||
|
OUT PVOID OutBuffer,
|
||||||
|
OUT PULONG OutBufferNeeded OPTIONAL);
|
||||||
|
#endif
|
834
include/xdk/kefuncs.h
Normal file
834
include/xdk/kefuncs.h
Normal file
|
@ -0,0 +1,834 @@
|
||||||
|
/******************************************************************************
|
||||||
|
* Kernel Functions *
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
NTHALAPI
|
||||||
|
KIRQL
|
||||||
|
NTAPI
|
||||||
|
KeGetCurrentIrql(
|
||||||
|
VOID);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
KeInitializeEvent(
|
||||||
|
OUT PRKEVENT Event,
|
||||||
|
IN EVENT_TYPE Type,
|
||||||
|
IN BOOLEAN State);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
KeClearEvent(
|
||||||
|
IN OUT PRKEVENT Event);
|
||||||
|
|
||||||
|
#if (NTDDI_VERSION >= NTDDI_WIN2K)
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
ProbeForRead(
|
||||||
|
IN CONST VOID *Address, /* CONST is added */
|
||||||
|
IN SIZE_T Length,
|
||||||
|
IN ULONG Alignment);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
ProbeForWrite(
|
||||||
|
IN PVOID Address,
|
||||||
|
IN SIZE_T Length,
|
||||||
|
IN ULONG Alignment);
|
||||||
|
|
||||||
|
#if defined(SINGLE_GROUP_LEGACY_API)
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
KeRevertToUserAffinityThread(VOID);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
KeSetSystemAffinityThread(
|
||||||
|
IN KAFFINITY Affinity);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
KeSetTargetProcessorDpc(
|
||||||
|
IN OUT PRKDPC Dpc,
|
||||||
|
IN CCHAR Number);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
KAFFINITY
|
||||||
|
NTAPI
|
||||||
|
KeQueryActiveProcessors(
|
||||||
|
VOID);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !defined(_M_AMD64)
|
||||||
|
NTKERNELAPI
|
||||||
|
ULONGLONG
|
||||||
|
NTAPI
|
||||||
|
KeQueryInterruptTime(
|
||||||
|
VOID);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
KeQuerySystemTime(
|
||||||
|
OUT PLARGE_INTEGER CurrentTime);
|
||||||
|
#endif /* !_M_AMD64 */
|
||||||
|
|
||||||
|
#if defined(_X86_) && (defined(_WDM_INCLUDED_) || defined(WIN9X_COMPAT_SPINLOCK))
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
KeInitializeSpinLock(
|
||||||
|
IN PKSPIN_LOCK SpinLock);
|
||||||
|
#else
|
||||||
|
FORCEINLINE
|
||||||
|
VOID
|
||||||
|
KeInitializeSpinLock(IN PKSPIN_LOCK SpinLock)
|
||||||
|
{
|
||||||
|
/* Clear the lock */
|
||||||
|
*SpinLock = 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
DECLSPEC_NORETURN
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
KeBugCheckEx(
|
||||||
|
IN ULONG BugCheckCode,
|
||||||
|
IN ULONG_PTR BugCheckParameter1,
|
||||||
|
IN ULONG_PTR BugCheckParameter2,
|
||||||
|
IN ULONG_PTR BugCheckParameter3,
|
||||||
|
IN ULONG_PTR BugCheckParameter4);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
BOOLEAN
|
||||||
|
NTAPI
|
||||||
|
KeCancelTimer(
|
||||||
|
IN OUT PKTIMER);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
KeDelayExecutionThread(
|
||||||
|
IN KPROCESSOR_MODE WaitMode,
|
||||||
|
IN BOOLEAN Alertable,
|
||||||
|
IN PLARGE_INTEGER Interval);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
BOOLEAN
|
||||||
|
NTAPI
|
||||||
|
KeDeregisterBugCheckCallback(
|
||||||
|
IN OUT PKBUGCHECK_CALLBACK_RECORD CallbackRecord);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
KeEnterCriticalRegion(VOID);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
KeInitializeDeviceQueue(
|
||||||
|
OUT PKDEVICE_QUEUE DeviceQueue);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
KeInitializeDpc(
|
||||||
|
OUT PRKDPC Dpc,
|
||||||
|
IN PKDEFERRED_ROUTINE DeferredRoutine,
|
||||||
|
IN PVOID DeferredContext OPTIONAL);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
KeInitializeMutex(
|
||||||
|
OUT PRKMUTEX Mutex,
|
||||||
|
IN ULONG Level);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
KeInitializeSemaphore(
|
||||||
|
OUT PRKSEMAPHORE Semaphore,
|
||||||
|
IN LONG Count,
|
||||||
|
IN LONG Limit);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
KeInitializeTimer(
|
||||||
|
OUT PKTIMER Timer);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
KeInitializeTimerEx(
|
||||||
|
OUT PKTIMER Timer,
|
||||||
|
IN TIMER_TYPE Type);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
BOOLEAN
|
||||||
|
NTAPI
|
||||||
|
KeInsertByKeyDeviceQueue(
|
||||||
|
IN OUT PKDEVICE_QUEUE DeviceQueue,
|
||||||
|
IN OUT PKDEVICE_QUEUE_ENTRY DeviceQueueEntry,
|
||||||
|
IN ULONG SortKey);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
BOOLEAN
|
||||||
|
NTAPI
|
||||||
|
KeInsertDeviceQueue(
|
||||||
|
IN OUT PKDEVICE_QUEUE DeviceQueue,
|
||||||
|
IN OUT PKDEVICE_QUEUE_ENTRY DeviceQueueEntry);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
BOOLEAN
|
||||||
|
NTAPI
|
||||||
|
KeInsertQueueDpc(
|
||||||
|
IN OUT PRKDPC Dpc,
|
||||||
|
IN PVOID SystemArgument1 OPTIONAL,
|
||||||
|
IN PVOID SystemArgument2 OPTIONAL);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
KeLeaveCriticalRegion(VOID);
|
||||||
|
|
||||||
|
NTHALAPI
|
||||||
|
LARGE_INTEGER
|
||||||
|
NTAPI
|
||||||
|
KeQueryPerformanceCounter(
|
||||||
|
OUT PLARGE_INTEGER PerformanceFrequency OPTIONAL);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
KPRIORITY
|
||||||
|
NTAPI
|
||||||
|
KeQueryPriorityThread(
|
||||||
|
IN PRKTHREAD Thread);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
ULONG
|
||||||
|
NTAPI
|
||||||
|
KeQueryTimeIncrement(
|
||||||
|
VOID);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
LONG
|
||||||
|
NTAPI
|
||||||
|
KeReadStateEvent(
|
||||||
|
IN PRKEVENT Event);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
LONG
|
||||||
|
NTAPI
|
||||||
|
KeReadStateMutex(
|
||||||
|
IN PRKMUTEX Mutex);
|
||||||
|
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
LONG
|
||||||
|
NTAPI
|
||||||
|
KeReadStateSemaphore(
|
||||||
|
IN PRKSEMAPHORE Semaphore);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
BOOLEAN
|
||||||
|
NTAPI
|
||||||
|
KeReadStateTimer(
|
||||||
|
IN PKTIMER Timer);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
BOOLEAN
|
||||||
|
NTAPI
|
||||||
|
KeRegisterBugCheckCallback(
|
||||||
|
OUT PKBUGCHECK_CALLBACK_RECORD CallbackRecord,
|
||||||
|
IN PKBUGCHECK_CALLBACK_ROUTINE CallbackRoutine,
|
||||||
|
IN PVOID Buffer,
|
||||||
|
IN ULONG Length,
|
||||||
|
IN PUCHAR Component);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
LONG
|
||||||
|
NTAPI
|
||||||
|
KeReleaseMutex(
|
||||||
|
IN OUT PRKMUTEX Mutex,
|
||||||
|
IN BOOLEAN Wait);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
LONG
|
||||||
|
NTAPI
|
||||||
|
KeReleaseSemaphore(
|
||||||
|
IN OUT PRKSEMAPHORE Semaphore,
|
||||||
|
IN KPRIORITY Increment,
|
||||||
|
IN LONG Adjustment,
|
||||||
|
IN BOOLEAN Wait);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
PKDEVICE_QUEUE_ENTRY
|
||||||
|
NTAPI
|
||||||
|
KeRemoveByKeyDeviceQueue(
|
||||||
|
IN OUT PKDEVICE_QUEUE DeviceQueue,
|
||||||
|
IN ULONG SortKey);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
PKDEVICE_QUEUE_ENTRY
|
||||||
|
NTAPI
|
||||||
|
KeRemoveDeviceQueue(
|
||||||
|
IN OUT PKDEVICE_QUEUE DeviceQueue);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
BOOLEAN
|
||||||
|
NTAPI
|
||||||
|
KeRemoveEntryDeviceQueue(
|
||||||
|
IN OUT PKDEVICE_QUEUE DeviceQueue,
|
||||||
|
IN OUT PKDEVICE_QUEUE_ENTRY DeviceQueueEntry);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
BOOLEAN
|
||||||
|
NTAPI
|
||||||
|
KeRemoveQueueDpc(
|
||||||
|
IN OUT PRKDPC Dpc);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
LONG
|
||||||
|
NTAPI
|
||||||
|
KeResetEvent(
|
||||||
|
IN OUT PRKEVENT Event);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
LONG
|
||||||
|
NTAPI
|
||||||
|
KeSetEvent(
|
||||||
|
IN OUT PRKEVENT Event,
|
||||||
|
IN KPRIORITY Increment,
|
||||||
|
IN BOOLEAN Wait);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
KeSetImportanceDpc(
|
||||||
|
IN OUT PRKDPC Dpc,
|
||||||
|
IN KDPC_IMPORTANCE Importance);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
KPRIORITY
|
||||||
|
NTAPI
|
||||||
|
KeSetPriorityThread(
|
||||||
|
IN OUT PKTHREAD Thread,
|
||||||
|
IN KPRIORITY Priority);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
BOOLEAN
|
||||||
|
NTAPI
|
||||||
|
KeSetTimer(
|
||||||
|
IN OUT PKTIMER Timer,
|
||||||
|
IN LARGE_INTEGER DueTime,
|
||||||
|
IN PKDPC Dpc OPTIONAL);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
BOOLEAN
|
||||||
|
NTAPI
|
||||||
|
KeSetTimerEx(
|
||||||
|
IN OUT PKTIMER Timer,
|
||||||
|
IN LARGE_INTEGER DueTime,
|
||||||
|
IN LONG Period OPTIONAL,
|
||||||
|
IN PKDPC Dpc OPTIONAL);
|
||||||
|
|
||||||
|
NTHALAPI
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
KeStallExecutionProcessor(
|
||||||
|
IN ULONG MicroSeconds);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
BOOLEAN
|
||||||
|
NTAPI
|
||||||
|
KeSynchronizeExecution(
|
||||||
|
IN OUT PKINTERRUPT Interrupt,
|
||||||
|
IN PKSYNCHRONIZE_ROUTINE SynchronizeRoutine,
|
||||||
|
IN PVOID SynchronizeContext OPTIONAL);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
KeWaitForMultipleObjects(
|
||||||
|
IN ULONG Count,
|
||||||
|
IN PVOID Object[],
|
||||||
|
IN WAIT_TYPE WaitType,
|
||||||
|
IN KWAIT_REASON WaitReason,
|
||||||
|
IN KPROCESSOR_MODE WaitMode,
|
||||||
|
IN BOOLEAN Alertable,
|
||||||
|
IN PLARGE_INTEGER Timeout OPTIONAL,
|
||||||
|
OUT PKWAIT_BLOCK WaitBlockArray OPTIONAL);
|
||||||
|
|
||||||
|
#define KeWaitForMutexObject KeWaitForSingleObject
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
KeWaitForSingleObject(
|
||||||
|
IN PVOID Object,
|
||||||
|
IN KWAIT_REASON WaitReason,
|
||||||
|
IN KPROCESSOR_MODE WaitMode,
|
||||||
|
IN BOOLEAN Alertable,
|
||||||
|
IN PLARGE_INTEGER Timeout OPTIONAL);
|
||||||
|
|
||||||
|
#endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */
|
||||||
|
|
||||||
|
#if (NTDDI_VERSION >= NTDDI_WINXP)
|
||||||
|
|
||||||
|
_DECL_HAL_KE_IMPORT
|
||||||
|
VOID
|
||||||
|
FASTCALL
|
||||||
|
KeAcquireInStackQueuedSpinLock(
|
||||||
|
IN OUT PKSPIN_LOCK SpinLock,
|
||||||
|
OUT PKLOCK_QUEUE_HANDLE LockHandle);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
FASTCALL
|
||||||
|
KeAcquireInStackQueuedSpinLockAtDpcLevel(
|
||||||
|
IN OUT PKSPIN_LOCK SpinLock,
|
||||||
|
OUT PKLOCK_QUEUE_HANDLE LockHandle);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
KIRQL
|
||||||
|
NTAPI
|
||||||
|
KeAcquireInterruptSpinLock(
|
||||||
|
IN OUT PKINTERRUPT Interrupt);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
BOOLEAN
|
||||||
|
NTAPI
|
||||||
|
KeAreApcsDisabled(VOID);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
ULONG
|
||||||
|
NTAPI
|
||||||
|
KeGetRecommendedSharedDataAlignment(VOID);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
ULONG
|
||||||
|
NTAPI
|
||||||
|
KeQueryRuntimeThread(
|
||||||
|
IN PKTHREAD Thread,
|
||||||
|
OUT PULONG UserTime);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
FASTCALL
|
||||||
|
KeReleaseInStackQueuedSpinLockFromDpcLevel(
|
||||||
|
IN PKLOCK_QUEUE_HANDLE LockHandle);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
KeReleaseInterruptSpinLock(
|
||||||
|
IN OUT PKINTERRUPT Interrupt,
|
||||||
|
IN KIRQL OldIrql);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
PKDEVICE_QUEUE_ENTRY
|
||||||
|
NTAPI
|
||||||
|
KeRemoveByKeyDeviceQueueIfBusy(
|
||||||
|
IN OUT PKDEVICE_QUEUE DeviceQueue,
|
||||||
|
IN ULONG SortKey);
|
||||||
|
|
||||||
|
_DECL_HAL_KE_IMPORT
|
||||||
|
VOID
|
||||||
|
FASTCALL
|
||||||
|
KeReleaseInStackQueuedSpinLock(
|
||||||
|
IN PKLOCK_QUEUE_HANDLE LockHandle);
|
||||||
|
|
||||||
|
#endif /* (NTDDI_VERSION >= NTDDI_WINXP) */
|
||||||
|
|
||||||
|
#if (NTDDI_VERSION >= NTDDI_WINXPSP1)
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
BOOLEAN
|
||||||
|
NTAPI
|
||||||
|
KeDeregisterBugCheckReasonCallback(
|
||||||
|
IN OUT PKBUGCHECK_REASON_CALLBACK_RECORD CallbackRecord);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
BOOLEAN
|
||||||
|
NTAPI
|
||||||
|
KeRegisterBugCheckReasonCallback(
|
||||||
|
OUT PKBUGCHECK_REASON_CALLBACK_RECORD CallbackRecord,
|
||||||
|
IN PKBUGCHECK_REASON_CALLBACK_ROUTINE CallbackRoutine,
|
||||||
|
IN KBUGCHECK_CALLBACK_REASON Reason,
|
||||||
|
IN PUCHAR Component);
|
||||||
|
|
||||||
|
#endif /* (NTDDI_VERSION >= NTDDI_WINXPSP1) */
|
||||||
|
|
||||||
|
#if (NTDDI_VERSION >= NTDDI_WINXPSP2)
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
KeFlushQueuedDpcs(
|
||||||
|
VOID);
|
||||||
|
|
||||||
|
#endif /* (NTDDI_VERSION >= NTDDI_WINXPSP2) */
|
||||||
|
|
||||||
|
#if (NTDDI_VERSION >= NTDDI_WS03)
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
PVOID
|
||||||
|
NTAPI
|
||||||
|
KeRegisterNmiCallback(
|
||||||
|
IN PNMI_CALLBACK CallbackRoutine,
|
||||||
|
IN PVOID Context OPTIONAL);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
KeDeregisterNmiCallback(
|
||||||
|
IN PVOID Handle);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
KeInitializeThreadedDpc(
|
||||||
|
OUT PRKDPC Dpc,
|
||||||
|
IN PKDEFERRED_ROUTINE DeferredRoutine,
|
||||||
|
IN PVOID DeferredContext OPTIONAL);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
ULONG_PTR
|
||||||
|
NTAPI
|
||||||
|
KeIpiGenericCall(
|
||||||
|
IN PKIPI_BROADCAST_WORKER BroadcastFunction,
|
||||||
|
IN ULONG_PTR Context);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
KIRQL
|
||||||
|
FASTCALL
|
||||||
|
KeAcquireSpinLockForDpc(
|
||||||
|
IN OUT PKSPIN_LOCK SpinLock);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
FASTCALL
|
||||||
|
KeReleaseSpinLockForDpc(
|
||||||
|
IN OUT PKSPIN_LOCK SpinLock,
|
||||||
|
IN KIRQL OldIrql);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
BOOLEAN
|
||||||
|
FASTCALL
|
||||||
|
KeTestSpinLock(
|
||||||
|
IN PKSPIN_LOCK SpinLock);
|
||||||
|
|
||||||
|
#endif /* (NTDDI_VERSION >= NTDDI_WS03) */
|
||||||
|
|
||||||
|
#if (NTDDI_VERSION >= NTDDI_WS03SP1)
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
BOOLEAN
|
||||||
|
FASTCALL
|
||||||
|
KeTryToAcquireSpinLockAtDpcLevel(
|
||||||
|
IN OUT PKSPIN_LOCK SpinLock);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
BOOLEAN
|
||||||
|
NTAPI
|
||||||
|
KeAreAllApcsDisabled(
|
||||||
|
VOID);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
FASTCALL
|
||||||
|
KeAcquireGuardedMutex(
|
||||||
|
IN OUT PKGUARDED_MUTEX GuardedMutex
|
||||||
|
);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
FASTCALL
|
||||||
|
KeAcquireGuardedMutexUnsafe(
|
||||||
|
IN OUT PKGUARDED_MUTEX GuardedMutex
|
||||||
|
);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
KeEnterGuardedRegion(
|
||||||
|
VOID
|
||||||
|
);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
KeLeaveGuardedRegion(
|
||||||
|
VOID
|
||||||
|
);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
FASTCALL
|
||||||
|
KeInitializeGuardedMutex(
|
||||||
|
OUT PKGUARDED_MUTEX GuardedMutex
|
||||||
|
);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
FASTCALL
|
||||||
|
KeReleaseGuardedMutexUnsafe(
|
||||||
|
IN OUT PKGUARDED_MUTEX GuardedMutex
|
||||||
|
);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
FASTCALL
|
||||||
|
KeReleaseGuardedMutex(
|
||||||
|
IN OUT PKGUARDED_MUTEX GuardedMutex
|
||||||
|
);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
BOOLEAN
|
||||||
|
FASTCALL
|
||||||
|
KeTryToAcquireGuardedMutex(
|
||||||
|
IN OUT PKGUARDED_MUTEX GuardedMutex
|
||||||
|
);
|
||||||
|
|
||||||
|
#endif /* (NTDDI_VERSION >= NTDDI_WS03SP1) */
|
||||||
|
|
||||||
|
#if (NTDDI_VERSION >= NTDDI_VISTA)
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
FASTCALL
|
||||||
|
KeAcquireInStackQueuedSpinLockForDpc(
|
||||||
|
IN OUT PKSPIN_LOCK SpinLock,
|
||||||
|
OUT PKLOCK_QUEUE_HANDLE LockHandle);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
FASTCALL
|
||||||
|
KeReleaseInStackQueuedSpinLockForDpc(
|
||||||
|
IN PKLOCK_QUEUE_HANDLE LockHandle);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
KeQueryDpcWatchdogInformation(
|
||||||
|
OUT PKDPC_WATCHDOG_INFORMATION WatchdogInformation);
|
||||||
|
|
||||||
|
#if defined(SINGLE_GROUP_LEGACY_API)
|
||||||
|
NTKERNELAPI
|
||||||
|
KAFFINITY
|
||||||
|
NTAPI
|
||||||
|
KeSetSystemAffinityThreadEx(
|
||||||
|
IN KAFFINITY Affinity);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
ULONG
|
||||||
|
NTAPI
|
||||||
|
KeQueryActiveProcessorCount(
|
||||||
|
OUT PKAFFINITY ActiveProcessors OPTIONAL);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
ULONG
|
||||||
|
NTAPI
|
||||||
|
KeQueryMaximumProcessorCount(
|
||||||
|
VOID);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
|
||||||
|
|
||||||
|
#if (NTDDI_VERSION >= NTDDI_WS08)
|
||||||
|
|
||||||
|
PVOID
|
||||||
|
KeRegisterProcessorChangeCallback(
|
||||||
|
IN PPROCESSOR_CALLBACK_FUNCTION CallbackFunction,
|
||||||
|
IN PVOID CallbackContext OPTIONAL,
|
||||||
|
IN ULONG Flags);
|
||||||
|
|
||||||
|
VOID
|
||||||
|
KeDeregisterProcessorChangeCallback(
|
||||||
|
IN PVOID CallbackHandle);
|
||||||
|
|
||||||
|
#endif /* (NTDDI_VERSION >= NTDDI_WS08) */
|
||||||
|
|
||||||
|
#if (NTDDI_VERSION >= NTDDI_WIN7)
|
||||||
|
|
||||||
|
ULONG64
|
||||||
|
NTAPI
|
||||||
|
KeQueryTotalCycleTimeProcess(
|
||||||
|
IN OUT PKPROCESS Process,
|
||||||
|
OUT PULONG64 CycleTimeStamp);
|
||||||
|
|
||||||
|
ULONG64
|
||||||
|
NTAPI
|
||||||
|
KeQueryTotalCycleTimeThread(
|
||||||
|
IN OUT PKTHREAD Thread,
|
||||||
|
OUT PULONG64 CycleTimeStamp);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
KeSetTargetProcessorDpcEx(
|
||||||
|
IN OUT PKDPC Dpc,
|
||||||
|
IN PPROCESSOR_NUMBER ProcNumber);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
KeSetSystemGroupAffinityThread(
|
||||||
|
IN PGROUP_AFFINITY Affinity,
|
||||||
|
OUT PGROUP_AFFINITY PreviousAffinity OPTIONAL);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
KeRevertToUserGroupAffinityThread(
|
||||||
|
IN PGROUP_AFFINITY PreviousAffinity);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
BOOLEAN
|
||||||
|
NTAPI
|
||||||
|
KeSetCoalescableTimer(
|
||||||
|
IN OUT PKTIMER Timer,
|
||||||
|
IN LARGE_INTEGER DueTime,
|
||||||
|
IN ULONG Period,
|
||||||
|
IN ULONG TolerableDelay,
|
||||||
|
IN PKDPC Dpc OPTIONAL);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
ULONGLONG
|
||||||
|
NTAPI
|
||||||
|
KeQueryUnbiasedInterruptTime(
|
||||||
|
VOID);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
ULONG
|
||||||
|
NTAPI
|
||||||
|
KeQueryActiveProcessorCountEx(
|
||||||
|
IN USHORT GroupNumber);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
ULONG
|
||||||
|
NTAPI
|
||||||
|
KeQueryMaximumProcessorCountEx(
|
||||||
|
IN USHORT GroupNumber);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
USHORT
|
||||||
|
NTAPI
|
||||||
|
KeQueryActiveGroupCount(
|
||||||
|
VOID);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
USHORT
|
||||||
|
NTAPI
|
||||||
|
KeQueryMaximumGroupCount(
|
||||||
|
VOID);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
KAFFINITY
|
||||||
|
NTAPI
|
||||||
|
KeQueryGroupAffinity
|
||||||
|
IN USHORT GroupNumber);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
ULONG
|
||||||
|
NTAPI
|
||||||
|
KeGetCurrentProcessorNumberEx(
|
||||||
|
OUT PPROCESSOR_NUMBER ProcNumber OPTIONAL);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
KeQueryNodeActiveAffinity(
|
||||||
|
IN USHORT NodeNumber,
|
||||||
|
OUT PGROUP_AFFINITY Affinity OPTIONAL,
|
||||||
|
OUT PUSHORT Count OPTIONAL);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
USHORT
|
||||||
|
NTAPI
|
||||||
|
KeQueryNodeMaximumProcessorCount(
|
||||||
|
IN USHORT NodeNumber);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
USHORT
|
||||||
|
NTAPI
|
||||||
|
KeQueryHighestNodeNumber(
|
||||||
|
VOID);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
USHORT
|
||||||
|
NTAPI
|
||||||
|
KeGetCurrentNodeNumber(
|
||||||
|
VOID);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
KeQueryLogicalProcessorRelationship(
|
||||||
|
IN PPROCESSOR_NUMBER ProcessorNumber OPTIONAL,
|
||||||
|
IN LOGICAL_PROCESSOR_RELATIONSHIP RelationshipType,
|
||||||
|
OUT PSYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX Information OPTIONAL,
|
||||||
|
IN OUT PULONG Length);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
KeSaveExtendedProcessorState(
|
||||||
|
IN ULONG64 Mask,
|
||||||
|
OUT PXSTATE_SAVE XStateSave);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
KeRestoreExtendedProcessorState(
|
||||||
|
IN PXSTATE_SAVE XStateSave);
|
||||||
|
|
||||||
|
#endif /* (NTDDI_VERSION >= NTDDI_WIN7) */
|
||||||
|
|
||||||
|
#if !defined(_IA64_)
|
||||||
|
NTHALAPI
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
KeFlushWriteBuffer(VOID);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* VOID
|
||||||
|
* KeInitializeCallbackRecord(
|
||||||
|
* IN PKBUGCHECK_CALLBACK_RECORD CallbackRecord)
|
||||||
|
*/
|
||||||
|
#define KeInitializeCallbackRecord(CallbackRecord) \
|
||||||
|
CallbackRecord->State = BufferEmpty;
|
||||||
|
|
||||||
|
#if DBG
|
||||||
|
|
||||||
|
#if (NTDDI_VERSION >= NTDDI_VISTA)
|
||||||
|
#define PAGED_ASSERT( exp ) NT_ASSERT( exp )
|
||||||
|
#else
|
||||||
|
#define PAGED_ASSERT( exp ) ASSERT( exp )
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define PAGED_CODE() { \
|
||||||
|
if (KeGetCurrentIrql() > APC_LEVEL) { \
|
||||||
|
KdPrint( ("NTDDK: Pageable code called at IRQL > APC_LEVEL (%d)\n", KeGetCurrentIrql() )); \
|
||||||
|
PAGED_ASSERT(FALSE); \
|
||||||
|
} \
|
||||||
|
}
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
#define PAGED_CODE()
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define PAGED_CODE_LOCKED() NOP_FUNCTION;
|
||||||
|
|
706
include/xdk/ketypes.h
Normal file
706
include/xdk/ketypes.h
Normal file
|
@ -0,0 +1,706 @@
|
||||||
|
/******************************************************************************
|
||||||
|
* Kernel Types *
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
typedef UCHAR KIRQL, *PKIRQL;
|
||||||
|
typedef CCHAR KPROCESSOR_MODE;
|
||||||
|
typedef LONG KPRIORITY;
|
||||||
|
|
||||||
|
typedef ULONG EXECUTION_STATE;
|
||||||
|
|
||||||
|
typedef enum _MODE {
|
||||||
|
KernelMode,
|
||||||
|
UserMode,
|
||||||
|
MaximumMode
|
||||||
|
} MODE;
|
||||||
|
|
||||||
|
/* Processor features */
|
||||||
|
#define PF_FLOATING_POINT_PRECISION_ERRATA 0
|
||||||
|
#define PF_FLOATING_POINT_EMULATED 1
|
||||||
|
#define PF_COMPARE_EXCHANGE_DOUBLE 2
|
||||||
|
#define PF_MMX_INSTRUCTIONS_AVAILABLE 3
|
||||||
|
#define PF_PPC_MOVEMEM_64BIT_OK 4
|
||||||
|
#define PF_ALPHA_BYTE_INSTRUCTIONS 5
|
||||||
|
#define PF_XMMI_INSTRUCTIONS_AVAILABLE 6
|
||||||
|
#define PF_3DNOW_INSTRUCTIONS_AVAILABLE 7
|
||||||
|
#define PF_RDTSC_INSTRUCTION_AVAILABLE 8
|
||||||
|
#define PF_PAE_ENABLED 9
|
||||||
|
#define PF_XMMI64_INSTRUCTIONS_AVAILABLE 10
|
||||||
|
#define PF_SSE_DAZ_MODE_AVAILABLE 11
|
||||||
|
#define PF_NX_ENABLED 12
|
||||||
|
#define PF_SSE3_INSTRUCTIONS_AVAILABLE 13
|
||||||
|
#define PF_COMPARE_EXCHANGE128 14
|
||||||
|
#define PF_COMPARE64_EXCHANGE128 15
|
||||||
|
#define PF_CHANNELS_ENABLED 16
|
||||||
|
#define PF_XSAVE_ENABLED 17
|
||||||
|
|
||||||
|
#define MAXIMUM_SUPPORTED_EXTENSION 512
|
||||||
|
#define MAXIMUM_WAIT_OBJECTS 64
|
||||||
|
|
||||||
|
#define ASSERT_APC(Object) \
|
||||||
|
ASSERT((Object)->Type == ApcObject)
|
||||||
|
|
||||||
|
#define ASSERT_DPC(Object) \
|
||||||
|
ASSERT(((Object)->Type == 0) || \
|
||||||
|
((Object)->Type == DpcObject) || \
|
||||||
|
((Object)->Type == ThreadedDpcObject))
|
||||||
|
|
||||||
|
#define ASSERT_GATE(object) \
|
||||||
|
ASSERT((((object)->Header.Type & KOBJECT_TYPE_MASK) == GateObject) || \
|
||||||
|
(((object)->Header.Type & KOBJECT_TYPE_MASK) == EventSynchronizationObject))
|
||||||
|
|
||||||
|
#define ASSERT_DEVICE_QUEUE(Object) \
|
||||||
|
ASSERT((Object)->Type == DeviceQueueObject)
|
||||||
|
|
||||||
|
#define ASSERT_TIMER(E) \
|
||||||
|
ASSERT(((E)->Header.Type == TimerNotificationObject) || \
|
||||||
|
((E)->Header.Type == TimerSynchronizationObject))
|
||||||
|
|
||||||
|
#define ASSERT_MUTANT(E) \
|
||||||
|
ASSERT((E)->Header.Type == MutantObject)
|
||||||
|
|
||||||
|
#define ASSERT_SEMAPHORE(E) \
|
||||||
|
ASSERT((E)->Header.Type == SemaphoreObject)
|
||||||
|
|
||||||
|
#define ASSERT_EVENT(E) \
|
||||||
|
ASSERT(((E)->Header.Type == NotificationEvent) || \
|
||||||
|
((E)->Header.Type == SynchronizationEvent))
|
||||||
|
|
||||||
|
#define DPC_NORMAL 0
|
||||||
|
#define DPC_THREADED 1
|
||||||
|
|
||||||
|
#define GM_LOCK_BIT 0x1
|
||||||
|
#define GM_LOCK_BIT_V 0x0
|
||||||
|
#define GM_LOCK_WAITER_WOKEN 0x2
|
||||||
|
#define GM_LOCK_WAITER_INC 0x4
|
||||||
|
|
||||||
|
#define LOCK_QUEUE_WAIT 1
|
||||||
|
#define LOCK_QUEUE_OWNER 2
|
||||||
|
#define LOCK_QUEUE_TIMER_LOCK_SHIFT 4
|
||||||
|
#define LOCK_QUEUE_TIMER_TABLE_LOCKS (1 << (8 - LOCK_QUEUE_TIMER_LOCK_SHIFT))
|
||||||
|
|
||||||
|
#define PROCESSOR_FEATURE_MAX 64
|
||||||
|
|
||||||
|
#define DBG_STATUS_CONTROL_C 1
|
||||||
|
#define DBG_STATUS_SYSRQ 2
|
||||||
|
#define DBG_STATUS_BUGCHECK_FIRST 3
|
||||||
|
#define DBG_STATUS_BUGCHECK_SECOND 4
|
||||||
|
#define DBG_STATUS_FATAL 5
|
||||||
|
#define DBG_STATUS_DEBUG_CONTROL 6
|
||||||
|
#define DBG_STATUS_WORKER 7
|
||||||
|
|
||||||
|
#if defined(_WIN64)
|
||||||
|
#define MAXIMUM_PROC_PER_GROUP 64
|
||||||
|
#else
|
||||||
|
#define MAXIMUM_PROC_PER_GROUP 32
|
||||||
|
#endif
|
||||||
|
#define MAXIMUM_PROCESSORS MAXIMUM_PROC_PER_GROUP
|
||||||
|
|
||||||
|
/* Exception Records */
|
||||||
|
#define EXCEPTION_NONCONTINUABLE 1
|
||||||
|
#define EXCEPTION_MAXIMUM_PARAMETERS 15
|
||||||
|
|
||||||
|
typedef struct _EXCEPTION_RECORD {
|
||||||
|
NTSTATUS ExceptionCode;
|
||||||
|
ULONG ExceptionFlags;
|
||||||
|
struct _EXCEPTION_RECORD *ExceptionRecord;
|
||||||
|
PVOID ExceptionAddress;
|
||||||
|
ULONG NumberParameters;
|
||||||
|
ULONG_PTR ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS];
|
||||||
|
} EXCEPTION_RECORD, *PEXCEPTION_RECORD;
|
||||||
|
|
||||||
|
typedef struct _EXCEPTION_RECORD32 {
|
||||||
|
NTSTATUS ExceptionCode;
|
||||||
|
ULONG ExceptionFlags;
|
||||||
|
ULONG ExceptionRecord;
|
||||||
|
ULONG ExceptionAddress;
|
||||||
|
ULONG NumberParameters;
|
||||||
|
ULONG ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS];
|
||||||
|
} EXCEPTION_RECORD32, *PEXCEPTION_RECORD32;
|
||||||
|
|
||||||
|
typedef struct _EXCEPTION_RECORD64 {
|
||||||
|
NTSTATUS ExceptionCode;
|
||||||
|
ULONG ExceptionFlags;
|
||||||
|
ULONG64 ExceptionRecord;
|
||||||
|
ULONG64 ExceptionAddress;
|
||||||
|
ULONG NumberParameters;
|
||||||
|
ULONG __unusedAlignment;
|
||||||
|
ULONG64 ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS];
|
||||||
|
} EXCEPTION_RECORD64, *PEXCEPTION_RECORD64;
|
||||||
|
|
||||||
|
typedef struct _EXCEPTION_POINTERS {
|
||||||
|
PEXCEPTION_RECORD ExceptionRecord;
|
||||||
|
PCONTEXT ContextRecord;
|
||||||
|
} EXCEPTION_POINTERS, *PEXCEPTION_POINTERS;
|
||||||
|
|
||||||
|
|
||||||
|
typedef enum _KBUGCHECK_CALLBACK_REASON {
|
||||||
|
KbCallbackInvalid,
|
||||||
|
KbCallbackReserved1,
|
||||||
|
KbCallbackSecondaryDumpData,
|
||||||
|
KbCallbackDumpIo,
|
||||||
|
KbCallbackAddPages
|
||||||
|
} KBUGCHECK_CALLBACK_REASON;
|
||||||
|
|
||||||
|
struct _KBUGCHECK_REASON_CALLBACK_RECORD;
|
||||||
|
|
||||||
|
typedef VOID
|
||||||
|
(DDKAPI *PKBUGCHECK_REASON_CALLBACK_ROUTINE)(
|
||||||
|
IN KBUGCHECK_CALLBACK_REASON Reason,
|
||||||
|
IN struct _KBUGCHECK_REASON_CALLBACK_RECORD *Record,
|
||||||
|
IN OUT PVOID ReasonSpecificData,
|
||||||
|
IN ULONG ReasonSpecificDataLength);
|
||||||
|
|
||||||
|
typedef struct _KBUGCHECK_REASON_CALLBACK_RECORD {
|
||||||
|
LIST_ENTRY Entry;
|
||||||
|
PKBUGCHECK_REASON_CALLBACK_ROUTINE CallbackRoutine;
|
||||||
|
PUCHAR Component;
|
||||||
|
ULONG_PTR Checksum;
|
||||||
|
KBUGCHECK_CALLBACK_REASON Reason;
|
||||||
|
UCHAR State;
|
||||||
|
} KBUGCHECK_REASON_CALLBACK_RECORD, *PKBUGCHECK_REASON_CALLBACK_RECORD;
|
||||||
|
|
||||||
|
typedef enum _KBUGCHECK_BUFFER_DUMP_STATE {
|
||||||
|
BufferEmpty,
|
||||||
|
BufferInserted,
|
||||||
|
BufferStarted,
|
||||||
|
BufferFinished,
|
||||||
|
BufferIncomplete
|
||||||
|
} KBUGCHECK_BUFFER_DUMP_STATE;
|
||||||
|
|
||||||
|
typedef VOID
|
||||||
|
(DDKAPI *PKBUGCHECK_CALLBACK_ROUTINE)(
|
||||||
|
IN PVOID Buffer,
|
||||||
|
IN ULONG Length);
|
||||||
|
|
||||||
|
typedef struct _KBUGCHECK_CALLBACK_RECORD {
|
||||||
|
LIST_ENTRY Entry;
|
||||||
|
PKBUGCHECK_CALLBACK_ROUTINE CallbackRoutine;
|
||||||
|
PVOID Buffer;
|
||||||
|
ULONG Length;
|
||||||
|
PUCHAR Component;
|
||||||
|
ULONG_PTR Checksum;
|
||||||
|
UCHAR State;
|
||||||
|
} KBUGCHECK_CALLBACK_RECORD, *PKBUGCHECK_CALLBACK_RECORD;
|
||||||
|
|
||||||
|
typedef BOOLEAN
|
||||||
|
(DDKAPI *PNMI_CALLBACK)(
|
||||||
|
IN PVOID Context,
|
||||||
|
IN BOOLEAN Handled);
|
||||||
|
|
||||||
|
typedef enum _TRACE_INFORMATION_CLASS {
|
||||||
|
TraceIdClass,
|
||||||
|
TraceHandleClass,
|
||||||
|
TraceEnableFlagsClass,
|
||||||
|
TraceEnableLevelClass,
|
||||||
|
GlobalLoggerHandleClass,
|
||||||
|
EventLoggerHandleClass,
|
||||||
|
AllLoggerHandlesClass,
|
||||||
|
TraceHandleByNameClass,
|
||||||
|
LoggerEventsLostClass,
|
||||||
|
TraceSessionSettingsClass,
|
||||||
|
LoggerEventsLoggedClass,
|
||||||
|
MaxTraceInformationClass
|
||||||
|
} TRACE_INFORMATION_CLASS;
|
||||||
|
|
||||||
|
typedef enum _KINTERRUPT_POLARITY {
|
||||||
|
InterruptPolarityUnknown,
|
||||||
|
InterruptActiveHigh,
|
||||||
|
InterruptActiveLow
|
||||||
|
} KINTERRUPT_POLARITY, *PKINTERRUPT_POLARITY;
|
||||||
|
|
||||||
|
typedef enum _KPROFILE_SOURCE {
|
||||||
|
ProfileTime,
|
||||||
|
ProfileAlignmentFixup,
|
||||||
|
ProfileTotalIssues,
|
||||||
|
ProfilePipelineDry,
|
||||||
|
ProfileLoadInstructions,
|
||||||
|
ProfilePipelineFrozen,
|
||||||
|
ProfileBranchInstructions,
|
||||||
|
ProfileTotalNonissues,
|
||||||
|
ProfileDcacheMisses,
|
||||||
|
ProfileIcacheMisses,
|
||||||
|
ProfileCacheMisses,
|
||||||
|
ProfileBranchMispredictions,
|
||||||
|
ProfileStoreInstructions,
|
||||||
|
ProfileFpInstructions,
|
||||||
|
ProfileIntegerInstructions,
|
||||||
|
Profile2Issue,
|
||||||
|
Profile3Issue,
|
||||||
|
Profile4Issue,
|
||||||
|
ProfileSpecialInstructions,
|
||||||
|
ProfileTotalCycles,
|
||||||
|
ProfileIcacheIssues,
|
||||||
|
ProfileDcacheAccesses,
|
||||||
|
ProfileMemoryBarrierCycles,
|
||||||
|
ProfileLoadLinkedIssues,
|
||||||
|
ProfileMaximum
|
||||||
|
} KPROFILE_SOURCE;
|
||||||
|
|
||||||
|
typedef enum _KWAIT_REASON {
|
||||||
|
Executive,
|
||||||
|
FreePage,
|
||||||
|
PageIn,
|
||||||
|
PoolAllocation,
|
||||||
|
DelayExecution,
|
||||||
|
Suspended,
|
||||||
|
UserRequest,
|
||||||
|
WrExecutive,
|
||||||
|
WrFreePage,
|
||||||
|
WrPageIn,
|
||||||
|
WrPoolAllocation,
|
||||||
|
WrDelayExecution,
|
||||||
|
WrSuspended,
|
||||||
|
WrUserRequest,
|
||||||
|
WrEventPair,
|
||||||
|
WrQueue,
|
||||||
|
WrLpcReceive,
|
||||||
|
WrLpcReply,
|
||||||
|
WrVirtualMemory,
|
||||||
|
WrPageOut,
|
||||||
|
WrRendezvous,
|
||||||
|
WrKeyedEvent,
|
||||||
|
WrTerminated,
|
||||||
|
WrProcessInSwap,
|
||||||
|
WrCpuRateControl,
|
||||||
|
WrCalloutStack,
|
||||||
|
WrKernel,
|
||||||
|
WrResource,
|
||||||
|
WrPushLock,
|
||||||
|
WrMutex,
|
||||||
|
WrQuantumEnd,
|
||||||
|
WrDispatchInt,
|
||||||
|
WrPreempted,
|
||||||
|
WrYieldExecution,
|
||||||
|
WrFastMutex,
|
||||||
|
WrGuardedMutex,
|
||||||
|
WrRundown,
|
||||||
|
MaximumWaitReason
|
||||||
|
} KWAIT_REASON;
|
||||||
|
|
||||||
|
typedef struct _KWAIT_BLOCK {
|
||||||
|
LIST_ENTRY WaitListEntry;
|
||||||
|
struct _KTHREAD *Thread;
|
||||||
|
PVOID Object;
|
||||||
|
struct _KWAIT_BLOCK *NextWaitBlock;
|
||||||
|
USHORT WaitKey;
|
||||||
|
UCHAR WaitType;
|
||||||
|
volatile UCHAR BlockState;
|
||||||
|
#if defined(_WIN64)
|
||||||
|
LONG SpareLong;
|
||||||
|
#endif
|
||||||
|
} KWAIT_BLOCK, *PKWAIT_BLOCK, *PRKWAIT_BLOCK;
|
||||||
|
|
||||||
|
typedef enum _KINTERRUPT_MODE {
|
||||||
|
LevelSensitive,
|
||||||
|
Latched
|
||||||
|
} KINTERRUPT_MODE;
|
||||||
|
|
||||||
|
#define THREAD_WAIT_OBJECTS 3
|
||||||
|
|
||||||
|
typedef VOID
|
||||||
|
(DDKAPI *PKINTERRUPT_ROUTINE)(
|
||||||
|
VOID);
|
||||||
|
|
||||||
|
typedef enum _KD_OPTION {
|
||||||
|
KD_OPTION_SET_BLOCK_ENABLE,
|
||||||
|
} KD_OPTION;
|
||||||
|
|
||||||
|
typedef enum _INTERFACE_TYPE {
|
||||||
|
InterfaceTypeUndefined = -1,
|
||||||
|
Internal,
|
||||||
|
Isa,
|
||||||
|
Eisa,
|
||||||
|
MicroChannel,
|
||||||
|
TurboChannel,
|
||||||
|
PCIBus,
|
||||||
|
VMEBus,
|
||||||
|
NuBus,
|
||||||
|
PCMCIABus,
|
||||||
|
CBus,
|
||||||
|
MPIBus,
|
||||||
|
MPSABus,
|
||||||
|
ProcessorInternal,
|
||||||
|
InternalPowerBus,
|
||||||
|
PNPISABus,
|
||||||
|
PNPBus,
|
||||||
|
Vmcs,
|
||||||
|
MaximumInterfaceType
|
||||||
|
} INTERFACE_TYPE, *PINTERFACE_TYPE;
|
||||||
|
|
||||||
|
typedef VOID
|
||||||
|
(DDKAPI *PKNORMAL_ROUTINE)(
|
||||||
|
IN PVOID NormalContext,
|
||||||
|
IN PVOID SystemArgument1,
|
||||||
|
IN PVOID SystemArgument2);
|
||||||
|
|
||||||
|
typedef VOID
|
||||||
|
(DDKAPI *PKRUNDOWN_ROUTINE)(
|
||||||
|
IN struct _KAPC *Apc);
|
||||||
|
|
||||||
|
typedef VOID
|
||||||
|
(DDKAPI *PKKERNEL_ROUTINE)(
|
||||||
|
IN struct _KAPC *Apc,
|
||||||
|
IN OUT PKNORMAL_ROUTINE *NormalRoutine,
|
||||||
|
IN OUT PVOID *NormalContext,
|
||||||
|
IN OUT PVOID *SystemArgument1,
|
||||||
|
IN OUT PVOID *SystemArgument2);
|
||||||
|
|
||||||
|
typedef struct _KAPC
|
||||||
|
{
|
||||||
|
UCHAR Type;
|
||||||
|
UCHAR SpareByte0;
|
||||||
|
UCHAR Size;
|
||||||
|
UCHAR SpareByte1;
|
||||||
|
ULONG SpareLong0;
|
||||||
|
struct _KTHREAD *Thread;
|
||||||
|
LIST_ENTRY ApcListEntry;
|
||||||
|
PKKERNEL_ROUTINE KernelRoutine;
|
||||||
|
PKRUNDOWN_ROUTINE RundownRoutine;
|
||||||
|
PKNORMAL_ROUTINE NormalRoutine;
|
||||||
|
PVOID NormalContext;
|
||||||
|
PVOID SystemArgument1;
|
||||||
|
PVOID SystemArgument2;
|
||||||
|
CCHAR ApcStateIndex;
|
||||||
|
KPROCESSOR_MODE ApcMode;
|
||||||
|
BOOLEAN Inserted;
|
||||||
|
} KAPC, *PKAPC, *RESTRICTED_POINTER PRKAPC;
|
||||||
|
|
||||||
|
typedef struct _KDEVICE_QUEUE_ENTRY {
|
||||||
|
LIST_ENTRY DeviceListEntry;
|
||||||
|
ULONG SortKey;
|
||||||
|
BOOLEAN Inserted;
|
||||||
|
} KDEVICE_QUEUE_ENTRY, *PKDEVICE_QUEUE_ENTRY,
|
||||||
|
*RESTRICTED_POINTER PRKDEVICE_QUEUE_ENTRY;
|
||||||
|
|
||||||
|
typedef PVOID PKIPI_CONTEXT;
|
||||||
|
|
||||||
|
typedef
|
||||||
|
VOID
|
||||||
|
(NTAPI *PKIPI_WORKER)(
|
||||||
|
IN PKIPI_CONTEXT PacketContext,
|
||||||
|
IN PVOID Parameter1,
|
||||||
|
IN PVOID Parameter2,
|
||||||
|
IN PVOID Parameter3);
|
||||||
|
|
||||||
|
typedef
|
||||||
|
ULONG_PTR
|
||||||
|
(NTAPI *PKIPI_BROADCAST_WORKER)(
|
||||||
|
IN ULONG_PTR Argument);
|
||||||
|
|
||||||
|
typedef ULONG_PTR KSPIN_LOCK, *PKSPIN_LOCK;
|
||||||
|
|
||||||
|
typedef struct _KSPIN_LOCK_QUEUE {
|
||||||
|
struct _KSPIN_LOCK_QUEUE *volatile Next;
|
||||||
|
PKSPIN_LOCK volatile Lock;
|
||||||
|
} KSPIN_LOCK_QUEUE, *PKSPIN_LOCK_QUEUE;
|
||||||
|
|
||||||
|
typedef struct _KLOCK_QUEUE_HANDLE {
|
||||||
|
KSPIN_LOCK_QUEUE LockQueue;
|
||||||
|
KIRQL OldIrql;
|
||||||
|
} KLOCK_QUEUE_HANDLE, *PKLOCK_QUEUE_HANDLE;
|
||||||
|
|
||||||
|
#if defined(_AMD64_)
|
||||||
|
|
||||||
|
typedef ULONG64 KSPIN_LOCK_QUEUE_NUMBER;
|
||||||
|
|
||||||
|
#define LockQueueDispatcherLock 0
|
||||||
|
#define LockQueueExpansionLock 1
|
||||||
|
#define LockQueuePfnLock 2
|
||||||
|
#define LockQueueSystemSpaceLock 3
|
||||||
|
#define LockQueueVacbLock 4
|
||||||
|
#define LockQueueMasterLock 5
|
||||||
|
#define LockQueueNonPagedPoolLock 6
|
||||||
|
#define LockQueueIoCancelLock 7
|
||||||
|
#define LockQueueWorkQueueLock 8
|
||||||
|
#define LockQueueIoVpbLock 9
|
||||||
|
#define LockQueueIoDatabaseLock 10
|
||||||
|
#define LockQueueIoCompletionLock 11
|
||||||
|
#define LockQueueNtfsStructLock 12
|
||||||
|
#define LockQueueAfdWorkQueueLock 13
|
||||||
|
#define LockQueueBcbLock 14
|
||||||
|
#define LockQueueMmNonPagedPoolLock 15
|
||||||
|
#define LockQueueUnusedSpare16 16
|
||||||
|
#define LockQueueTimerTableLock 17
|
||||||
|
#define LockQueueMaximumLock (LockQueueTimerTableLock + LOCK_QUEUE_TIMER_TABLE_LOCKS)
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
typedef enum _KSPIN_LOCK_QUEUE_NUMBER {
|
||||||
|
LockQueueDispatcherLock,
|
||||||
|
LockQueueExpansionLock,
|
||||||
|
LockQueuePfnLock,
|
||||||
|
LockQueueSystemSpaceLock,
|
||||||
|
LockQueueVacbLock,
|
||||||
|
LockQueueMasterLock,
|
||||||
|
LockQueueNonPagedPoolLock,
|
||||||
|
LockQueueIoCancelLock,
|
||||||
|
LockQueueWorkQueueLock,
|
||||||
|
LockQueueIoVpbLock,
|
||||||
|
LockQueueIoDatabaseLock,
|
||||||
|
LockQueueIoCompletionLock,
|
||||||
|
LockQueueNtfsStructLock,
|
||||||
|
LockQueueAfdWorkQueueLock,
|
||||||
|
LockQueueBcbLock,
|
||||||
|
LockQueueMmNonPagedPoolLock,
|
||||||
|
LockQueueUnusedSpare16,
|
||||||
|
LockQueueTimerTableLock,
|
||||||
|
LockQueueMaximumLock = LockQueueTimerTableLock + LOCK_QUEUE_TIMER_TABLE_LOCKS
|
||||||
|
} KSPIN_LOCK_QUEUE_NUMBER, *PKSPIN_LOCK_QUEUE_NUMBER;
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
typedef VOID
|
||||||
|
(DDKAPI *PKDEFERRED_ROUTINE)(
|
||||||
|
IN struct _KDPC *Dpc,
|
||||||
|
IN PVOID DeferredContext,
|
||||||
|
IN PVOID SystemArgument1,
|
||||||
|
IN PVOID SystemArgument2);
|
||||||
|
|
||||||
|
typedef enum _KDPC_IMPORTANCE {
|
||||||
|
LowImportance,
|
||||||
|
MediumImportance,
|
||||||
|
HighImportance,
|
||||||
|
MediumHighImportance
|
||||||
|
} KDPC_IMPORTANCE;
|
||||||
|
|
||||||
|
typedef struct _KDPC
|
||||||
|
{
|
||||||
|
UCHAR Type;
|
||||||
|
UCHAR Importance;
|
||||||
|
volatile USHORT Number;
|
||||||
|
LIST_ENTRY DpcListEntry;
|
||||||
|
PKDEFERRED_ROUTINE DeferredRoutine;
|
||||||
|
PVOID DeferredContext;
|
||||||
|
PVOID SystemArgument1;
|
||||||
|
PVOID SystemArgument2;
|
||||||
|
volatile PVOID DpcData;
|
||||||
|
} KDPC, *PKDPC, *RESTRICTED_POINTER PRKDPC;
|
||||||
|
|
||||||
|
typedef struct _KDPC_WATCHDOG_INFORMATION {
|
||||||
|
ULONG DpcTimeLimit;
|
||||||
|
ULONG DpcTimeCount;
|
||||||
|
ULONG DpcWatchdogLimit;
|
||||||
|
ULONG DpcWatchdogCount;
|
||||||
|
ULONG Reserved;
|
||||||
|
} KDPC_WATCHDOG_INFORMATION, *PKDPC_WATCHDOG_INFORMATION;
|
||||||
|
|
||||||
|
typedef struct _KDEVICE_QUEUE {
|
||||||
|
CSHORT Type;
|
||||||
|
CSHORT Size;
|
||||||
|
LIST_ENTRY DeviceListHead;
|
||||||
|
KSPIN_LOCK Lock;
|
||||||
|
#if defined(_AMD64_)
|
||||||
|
union {
|
||||||
|
BOOLEAN Busy;
|
||||||
|
struct {
|
||||||
|
LONG64 Reserved : 8;
|
||||||
|
LONG64 Hint : 56;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
#else
|
||||||
|
BOOLEAN Busy;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
} KDEVICE_QUEUE, *PKDEVICE_QUEUE, *RESTRICTED_POINTER PRKDEVICE_QUEUE;
|
||||||
|
|
||||||
|
#define TIMER_EXPIRED_INDEX_BITS 6
|
||||||
|
#define TIMER_PROCESSOR_INDEX_BITS 5
|
||||||
|
typedef struct _DISPATCHER_HEADER {
|
||||||
|
_ANONYMOUS_UNION union {
|
||||||
|
_ANONYMOUS_STRUCT struct {
|
||||||
|
UCHAR Type;
|
||||||
|
_ANONYMOUS_UNION union {
|
||||||
|
_ANONYMOUS_UNION union {
|
||||||
|
UCHAR TimerControlFlags;
|
||||||
|
_ANONYMOUS_STRUCT struct {
|
||||||
|
UCHAR Absolute:1;
|
||||||
|
UCHAR Coalescable:1;
|
||||||
|
UCHAR KeepShifting:1;
|
||||||
|
UCHAR EncodedTolerableDelay:5;
|
||||||
|
} DUMMYSTRUCTNAME;
|
||||||
|
} DUMMYUNIONNAME;
|
||||||
|
UCHAR Abandoned;
|
||||||
|
#if (NTDDI_VERSION < NTDDI_WIN7)
|
||||||
|
UCHAR NpxIrql;
|
||||||
|
#endif
|
||||||
|
BOOLEAN Signalling;
|
||||||
|
} DUMMYUNIONNAME;
|
||||||
|
_ANONYMOUS_UNION union {
|
||||||
|
_ANONYMOUS_UNION union {
|
||||||
|
UCHAR ThreadControlFlags;
|
||||||
|
_ANONYMOUS_STRUCT struct {
|
||||||
|
UCHAR CpuThrottled:1;
|
||||||
|
UCHAR CycleProfiling:1;
|
||||||
|
UCHAR CounterProfiling:1;
|
||||||
|
UCHAR Reserved:5;
|
||||||
|
} DUMMYSTRUCTNAME;
|
||||||
|
} DUMMYUNIONNAME;
|
||||||
|
UCHAR Size;
|
||||||
|
UCHAR Hand;
|
||||||
|
} DUMMYUNIONNAME2;
|
||||||
|
_ANONYMOUS_UNION union {
|
||||||
|
#if (NTDDI_VERSION >= NTDDI_WIN7)
|
||||||
|
_ANONYMOUS_UNION union {
|
||||||
|
UCHAR TimerMiscFlags;
|
||||||
|
_ANONYMOUS_STRUCT struct {
|
||||||
|
#if !defined(_X86_)
|
||||||
|
UCHAR Index:TIMER_EXPIRED_INDEX_BITS;
|
||||||
|
#else
|
||||||
|
UCHAR Index:1;
|
||||||
|
UCHAR Processor:TIMER_PROCESSOR_INDEX_BITS;
|
||||||
|
#endif
|
||||||
|
UCHAR Inserted:1;
|
||||||
|
volatile UCHAR Expired:1;
|
||||||
|
} DUMMYSTRUCTNAME;
|
||||||
|
} DUMMYUNIONNAME;
|
||||||
|
#else
|
||||||
|
/* Pre Win7 compatibility fix to latest WDK */
|
||||||
|
UCHAR Inserted;
|
||||||
|
#endif
|
||||||
|
_ANONYMOUS_UNION union {
|
||||||
|
BOOLEAN DebugActive;
|
||||||
|
_ANONYMOUS_STRUCT struct {
|
||||||
|
BOOLEAN ActiveDR7:1;
|
||||||
|
BOOLEAN Instrumented:1;
|
||||||
|
BOOLEAN Reserved2:4;
|
||||||
|
BOOLEAN UmsScheduled:1;
|
||||||
|
BOOLEAN UmsPrimary:1;
|
||||||
|
} DUMMYSTRUCTNAME;
|
||||||
|
} DUMMYUNIONNAME; /* should probably be DUMMYUNIONNAME2, but this is what WDK says */
|
||||||
|
BOOLEAN DpcActive;
|
||||||
|
} DUMMYUNIONNAME3;
|
||||||
|
} DUMMYSTRUCTNAME;
|
||||||
|
volatile LONG Lock;
|
||||||
|
} DUMMYUNIONNAME;
|
||||||
|
LONG SignalState;
|
||||||
|
LIST_ENTRY WaitListHead;
|
||||||
|
} DISPATCHER_HEADER, *PDISPATCHER_HEADER;
|
||||||
|
|
||||||
|
typedef struct _KEVENT {
|
||||||
|
DISPATCHER_HEADER Header;
|
||||||
|
} KEVENT, *PKEVENT, *RESTRICTED_POINTER PRKEVENT;
|
||||||
|
|
||||||
|
typedef struct _KSEMAPHORE {
|
||||||
|
DISPATCHER_HEADER Header;
|
||||||
|
LONG Limit;
|
||||||
|
} KSEMAPHORE, *PKSEMAPHORE, *RESTRICTED_POINTER PRKSEMAPHORE;
|
||||||
|
|
||||||
|
typedef struct _KGATE
|
||||||
|
{
|
||||||
|
DISPATCHER_HEADER Header;
|
||||||
|
} KGATE, *PKGATE, *RESTRICTED_POINTER PRKGATE;
|
||||||
|
|
||||||
|
typedef struct _KGUARDED_MUTEX
|
||||||
|
{
|
||||||
|
volatile LONG Count;
|
||||||
|
PKTHREAD Owner;
|
||||||
|
ULONG Contention;
|
||||||
|
KGATE Gate;
|
||||||
|
__GNU_EXTENSION union
|
||||||
|
{
|
||||||
|
__GNU_EXTENSION struct
|
||||||
|
{
|
||||||
|
SHORT KernelApcDisable;
|
||||||
|
SHORT SpecialApcDisable;
|
||||||
|
};
|
||||||
|
ULONG CombinedApcDisable;
|
||||||
|
};
|
||||||
|
} KGUARDED_MUTEX, *PKGUARDED_MUTEX;
|
||||||
|
|
||||||
|
typedef struct _KMUTANT {
|
||||||
|
DISPATCHER_HEADER Header;
|
||||||
|
LIST_ENTRY MutantListEntry;
|
||||||
|
struct _KTHREAD *RESTRICTED_POINTER OwnerThread;
|
||||||
|
BOOLEAN Abandoned;
|
||||||
|
UCHAR ApcDisable;
|
||||||
|
} KMUTANT, *PKMUTANT, *RESTRICTED_POINTER PRKMUTANT, KMUTEX, *PKMUTEX, *RESTRICTED_POINTER PRKMUTEX;
|
||||||
|
|
||||||
|
#define TIMER_TABLE_SIZE 512
|
||||||
|
#define TIMER_TABLE_SHIFT 9
|
||||||
|
|
||||||
|
typedef struct _KTIMER {
|
||||||
|
DISPATCHER_HEADER Header;
|
||||||
|
ULARGE_INTEGER DueTime;
|
||||||
|
LIST_ENTRY TimerListEntry;
|
||||||
|
struct _KDPC *Dpc;
|
||||||
|
#if !defined(_X86_)
|
||||||
|
ULONG Processor;
|
||||||
|
#endif
|
||||||
|
ULONG Period;
|
||||||
|
} KTIMER, *PKTIMER, *RESTRICTED_POINTER PRKTIMER;
|
||||||
|
|
||||||
|
typedef BOOLEAN
|
||||||
|
(DDKAPI *PKSYNCHRONIZE_ROUTINE)(
|
||||||
|
IN PVOID SynchronizeContext);
|
||||||
|
|
||||||
|
typedef enum _POOL_TYPE {
|
||||||
|
NonPagedPool,
|
||||||
|
PagedPool,
|
||||||
|
NonPagedPoolMustSucceed,
|
||||||
|
DontUseThisType,
|
||||||
|
NonPagedPoolCacheAligned,
|
||||||
|
PagedPoolCacheAligned,
|
||||||
|
NonPagedPoolCacheAlignedMustS,
|
||||||
|
MaxPoolType,
|
||||||
|
NonPagedPoolSession = 32,
|
||||||
|
PagedPoolSession,
|
||||||
|
NonPagedPoolMustSucceedSession,
|
||||||
|
DontUseThisTypeSession,
|
||||||
|
NonPagedPoolCacheAlignedSession,
|
||||||
|
PagedPoolCacheAlignedSession,
|
||||||
|
NonPagedPoolCacheAlignedMustSSession
|
||||||
|
} POOL_TYPE;
|
||||||
|
|
||||||
|
typedef enum _ALTERNATIVE_ARCHITECTURE_TYPE
|
||||||
|
{
|
||||||
|
StandardDesign,
|
||||||
|
NEC98x86,
|
||||||
|
EndAlternatives
|
||||||
|
} ALTERNATIVE_ARCHITECTURE_TYPE;
|
||||||
|
|
||||||
|
typedef struct _KSYSTEM_TIME
|
||||||
|
{
|
||||||
|
ULONG LowPart;
|
||||||
|
LONG High1Time;
|
||||||
|
LONG High2Time;
|
||||||
|
} KSYSTEM_TIME, *PKSYSTEM_TIME;
|
||||||
|
|
||||||
|
typedef struct _PNP_BUS_INFORMATION {
|
||||||
|
GUID BusTypeGuid;
|
||||||
|
INTERFACE_TYPE LegacyBusType;
|
||||||
|
ULONG BusNumber;
|
||||||
|
} PNP_BUS_INFORMATION, *PPNP_BUS_INFORMATION;
|
||||||
|
|
||||||
|
typedef struct DECLSPEC_ALIGN(16) _M128A {
|
||||||
|
ULONGLONG Low;
|
||||||
|
LONGLONG High;
|
||||||
|
} M128A, *PM128A;
|
||||||
|
|
||||||
|
typedef struct DECLSPEC_ALIGN(16) _XSAVE_FORMAT {
|
||||||
|
USHORT ControlWord;
|
||||||
|
USHORT StatusWord;
|
||||||
|
UCHAR TagWord;
|
||||||
|
UCHAR Reserved1;
|
||||||
|
USHORT ErrorOpcode;
|
||||||
|
ULONG ErrorOffset;
|
||||||
|
USHORT ErrorSelector;
|
||||||
|
USHORT Reserved2;
|
||||||
|
ULONG DataOffset;
|
||||||
|
USHORT DataSelector;
|
||||||
|
USHORT Reserved3;
|
||||||
|
ULONG MxCsr;
|
||||||
|
ULONG MxCsr_Mask;
|
||||||
|
M128A FloatRegisters[8];
|
||||||
|
#if defined(_WIN64)
|
||||||
|
M128A XmmRegisters[16];
|
||||||
|
UCHAR Reserved4[96];
|
||||||
|
#else
|
||||||
|
M128A XmmRegisters[8];
|
||||||
|
UCHAR Reserved4[192];
|
||||||
|
ULONG StackControl[7];
|
||||||
|
ULONG Cr0NpxState;
|
||||||
|
#endif
|
||||||
|
} XSAVE_FORMAT, *PXSAVE_FORMAT;
|
||||||
|
|
||||||
|
|
68
include/xdk/mips/ke.h
Normal file
68
include/xdk/mips/ke.h
Normal file
|
@ -0,0 +1,68 @@
|
||||||
|
$if (_WDMDDK_)
|
||||||
|
#error MIPS Headers are totally incorrect
|
||||||
|
|
||||||
|
//
|
||||||
|
// Used to contain PFNs and PFN counts
|
||||||
|
//
|
||||||
|
typedef ULONG PFN_COUNT;
|
||||||
|
typedef ULONG PFN_NUMBER, *PPFN_NUMBER;
|
||||||
|
typedef LONG SPFN_NUMBER, *PSPFN_NUMBER;
|
||||||
|
|
||||||
|
#define PASSIVE_LEVEL 0
|
||||||
|
#define APC_LEVEL 1
|
||||||
|
#define DISPATCH_LEVEL 2
|
||||||
|
#define PROFILE_LEVEL 27
|
||||||
|
#define IPI_LEVEL 29
|
||||||
|
#define HIGH_LEVEL 31
|
||||||
|
|
||||||
|
typedef struct _KPCR {
|
||||||
|
struct _KPRCB *Prcb; /* 20 */
|
||||||
|
KIRQL Irql; /* 24 */
|
||||||
|
ULONG IRR; /* 28 */
|
||||||
|
ULONG IDR; /* 30 */
|
||||||
|
} KPCR, *PKPCR;
|
||||||
|
|
||||||
|
#define KeGetPcr() PCR
|
||||||
|
|
||||||
|
typedef struct _KFLOATING_SAVE {
|
||||||
|
} KFLOATING_SAVE, *PKFLOATING_SAVE;
|
||||||
|
|
||||||
|
static __inline
|
||||||
|
ULONG
|
||||||
|
DDKAPI
|
||||||
|
KeGetCurrentProcessorNumber(VOID)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#define YieldProcessor() __asm__ __volatile__("nop");
|
||||||
|
|
||||||
|
#define KeLowerIrql(a) KfLowerIrql(a)
|
||||||
|
#define KeRaiseIrql(a,b) *(b) = KfRaiseIrql(a)
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
KfLowerIrql(
|
||||||
|
IN KIRQL NewIrql);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
KIRQL
|
||||||
|
NTAPI
|
||||||
|
KfRaiseIrql(
|
||||||
|
IN KIRQL NewIrql);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
KIRQL
|
||||||
|
NTAPI
|
||||||
|
KeRaiseIrqlToDpcLevel(
|
||||||
|
VOID);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
KIRQL
|
||||||
|
DDKAPI
|
||||||
|
KeRaiseIrqlToSynchLevel(
|
||||||
|
VOID);
|
||||||
|
|
||||||
|
$endif
|
||||||
|
|
403
include/xdk/mmfuncs.h
Normal file
403
include/xdk/mmfuncs.h
Normal file
|
@ -0,0 +1,403 @@
|
||||||
|
/******************************************************************************
|
||||||
|
* Memory manager Functions *
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Alignment Macros
|
||||||
|
*/
|
||||||
|
#define ALIGN_DOWN_BY(size, align) \
|
||||||
|
((ULONG_PTR)(size) & ~((ULONG_PTR)(align) - 1))
|
||||||
|
|
||||||
|
#define ALIGN_UP_BY(size, align) \
|
||||||
|
(ALIGN_DOWN_BY(((ULONG_PTR)(size) + align - 1), align))
|
||||||
|
|
||||||
|
#define ALIGN_DOWN_POINTER_BY(ptr, align) \
|
||||||
|
((PVOID)ALIGN_DOWN_BY(ptr, align))
|
||||||
|
|
||||||
|
#define ALIGN_UP_POINTER_BY(ptr, align) \
|
||||||
|
((PVOID)ALIGN_UP_BY(ptr, align))
|
||||||
|
|
||||||
|
#define ALIGN_DOWN(size, type) \
|
||||||
|
ALIGN_DOWN_BY(size, sizeof(type))
|
||||||
|
|
||||||
|
#define ALIGN_UP(size, type) \
|
||||||
|
ALIGN_UP_BY(size, sizeof(type))
|
||||||
|
|
||||||
|
#define ALIGN_DOWN_POINTER(ptr, type) \
|
||||||
|
ALIGN_DOWN_POINTER_BY(ptr, sizeof(type))
|
||||||
|
|
||||||
|
#define ALIGN_UP_POINTER(ptr, type) \
|
||||||
|
ALIGN_UP_POINTER_BY(ptr, sizeof(type))
|
||||||
|
|
||||||
|
/* ULONG
|
||||||
|
* BYTE_OFFSET(
|
||||||
|
* IN PVOID Va)
|
||||||
|
*/
|
||||||
|
#define BYTE_OFFSET(Va) \
|
||||||
|
((ULONG) ((ULONG_PTR) (Va) & (PAGE_SIZE - 1)))
|
||||||
|
|
||||||
|
/* ULONG
|
||||||
|
* BYTES_TO_PAGES(
|
||||||
|
* IN ULONG Size)
|
||||||
|
*/
|
||||||
|
#define BYTES_TO_PAGES(Size) \
|
||||||
|
(((Size) >> PAGE_SHIFT) + (((Size) & (PAGE_SIZE - 1)) != 0))
|
||||||
|
|
||||||
|
/* PVOID
|
||||||
|
* PAGE_ALIGN(
|
||||||
|
* IN PVOID Va)
|
||||||
|
*/
|
||||||
|
#define PAGE_ALIGN(Va) \
|
||||||
|
((PVOID) ((ULONG_PTR)(Va) & ~(PAGE_SIZE - 1)))
|
||||||
|
|
||||||
|
/* ULONG_PTR
|
||||||
|
* ROUND_TO_PAGES(
|
||||||
|
* IN ULONG_PTR Size)
|
||||||
|
*/
|
||||||
|
#define ROUND_TO_PAGES(Size) \
|
||||||
|
(((ULONG_PTR) (Size) + PAGE_SIZE - 1) & ~(PAGE_SIZE - 1))
|
||||||
|
|
||||||
|
/* ULONG
|
||||||
|
* ADDRESS_AND_SIZE_TO_SPAN_PAGES(
|
||||||
|
* IN PVOID Va,
|
||||||
|
* IN ULONG Size)
|
||||||
|
*/
|
||||||
|
#define ADDRESS_AND_SIZE_TO_SPAN_PAGES(_Va, _Size) \
|
||||||
|
((ULONG) ((((ULONG_PTR) (_Va) & (PAGE_SIZE - 1)) \
|
||||||
|
+ (_Size) + (PAGE_SIZE - 1)) >> PAGE_SHIFT))
|
||||||
|
|
||||||
|
/*
|
||||||
|
* ULONG
|
||||||
|
* MmGetMdlByteCount(
|
||||||
|
* IN PMDL Mdl)
|
||||||
|
*/
|
||||||
|
#define MmGetMdlByteCount(_Mdl) \
|
||||||
|
((_Mdl)->ByteCount)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* ULONG
|
||||||
|
* MmGetMdlByteOffset(
|
||||||
|
* IN PMDL Mdl)
|
||||||
|
*/
|
||||||
|
#define MmGetMdlByteOffset(_Mdl) \
|
||||||
|
((_Mdl)->ByteOffset)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* PPFN_NUMBER
|
||||||
|
* MmGetMdlPfnArray(
|
||||||
|
* IN PMDL Mdl)
|
||||||
|
*/
|
||||||
|
#define MmGetMdlPfnArray(_Mdl) \
|
||||||
|
((PPFN_NUMBER) ((_Mdl) + 1))
|
||||||
|
|
||||||
|
/*
|
||||||
|
* PVOID
|
||||||
|
* MmGetMdlVirtualAddress(
|
||||||
|
* IN PMDL Mdl)
|
||||||
|
*/
|
||||||
|
#define MmGetMdlVirtualAddress(_Mdl) \
|
||||||
|
((PVOID) ((PCHAR) ((_Mdl)->StartVa) + (_Mdl)->ByteOffset))
|
||||||
|
|
||||||
|
#define MmGetProcedureAddress(Address) (Address)
|
||||||
|
|
||||||
|
/* PVOID MmGetSystemAddressForMdl(
|
||||||
|
* IN PMDL Mdl);
|
||||||
|
*/
|
||||||
|
#define MmGetSystemAddressForMdl(Mdl) \
|
||||||
|
(((Mdl)->MdlFlags & (MDL_MAPPED_TO_SYSTEM_VA | \
|
||||||
|
MDL_SOURCE_IS_NONPAGED_POOL)) ? \
|
||||||
|
((Mdl)->MappedSystemVa) : \
|
||||||
|
(MmMapLockedPages((Mdl), KernelMode)))
|
||||||
|
|
||||||
|
/* PVOID
|
||||||
|
* MmGetSystemAddressForMdlSafe(
|
||||||
|
* IN PMDL Mdl,
|
||||||
|
* IN MM_PAGE_PRIORITY Priority)
|
||||||
|
*/
|
||||||
|
#define MmGetSystemAddressForMdlSafe(_Mdl, _Priority) \
|
||||||
|
(((_Mdl)->MdlFlags & (MDL_MAPPED_TO_SYSTEM_VA \
|
||||||
|
| MDL_SOURCE_IS_NONPAGED_POOL)) ? \
|
||||||
|
(_Mdl)->MappedSystemVa : \
|
||||||
|
(PVOID) MmMapLockedPagesSpecifyCache((_Mdl), \
|
||||||
|
KernelMode, MmCached, NULL, FALSE, (_Priority)))
|
||||||
|
|
||||||
|
/*
|
||||||
|
* VOID
|
||||||
|
* MmInitializeMdl(
|
||||||
|
* IN PMDL MemoryDescriptorList,
|
||||||
|
* IN PVOID BaseVa,
|
||||||
|
* IN SIZE_T Length)
|
||||||
|
*/
|
||||||
|
#define MmInitializeMdl(_MemoryDescriptorList, \
|
||||||
|
_BaseVa, \
|
||||||
|
_Length) \
|
||||||
|
{ \
|
||||||
|
(_MemoryDescriptorList)->Next = (PMDL) NULL; \
|
||||||
|
(_MemoryDescriptorList)->Size = (CSHORT) (sizeof(MDL) + \
|
||||||
|
(sizeof(PFN_NUMBER) * ADDRESS_AND_SIZE_TO_SPAN_PAGES(_BaseVa, _Length))); \
|
||||||
|
(_MemoryDescriptorList)->MdlFlags = 0; \
|
||||||
|
(_MemoryDescriptorList)->StartVa = (PVOID) PAGE_ALIGN(_BaseVa); \
|
||||||
|
(_MemoryDescriptorList)->ByteOffset = BYTE_OFFSET(_BaseVa); \
|
||||||
|
(_MemoryDescriptorList)->ByteCount = (ULONG) _Length; \
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* VOID
|
||||||
|
* MmPrepareMdlForReuse(
|
||||||
|
* IN PMDL Mdl)
|
||||||
|
*/
|
||||||
|
#define MmPrepareMdlForReuse(_Mdl) \
|
||||||
|
{ \
|
||||||
|
if (((_Mdl)->MdlFlags & MDL_PARTIAL_HAS_BEEN_MAPPED) != 0) { \
|
||||||
|
ASSERT(((_Mdl)->MdlFlags & MDL_PARTIAL) != 0); \
|
||||||
|
MmUnmapLockedPages((_Mdl)->MappedSystemVa, (_Mdl)); \
|
||||||
|
} else if (((_Mdl)->MdlFlags & MDL_PARTIAL) == 0) { \
|
||||||
|
ASSERT(((_Mdl)->MdlFlags & MDL_MAPPED_TO_SYSTEM_VA) == 0); \
|
||||||
|
} \
|
||||||
|
}
|
||||||
|
|
||||||
|
#if (NTDDI_VERSION >= NTDDI_WIN2K)
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
PVOID
|
||||||
|
NTAPI
|
||||||
|
MmAllocateContiguousMemory(
|
||||||
|
IN SIZE_T NumberOfBytes,
|
||||||
|
IN PHYSICAL_ADDRESS HighestAcceptableAddress);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
PVOID
|
||||||
|
NTAPI
|
||||||
|
MmAllocateContiguousMemorySpecifyCache(
|
||||||
|
IN SIZE_T NumberOfBytes,
|
||||||
|
IN PHYSICAL_ADDRESS LowestAcceptableAddress,
|
||||||
|
IN PHYSICAL_ADDRESS HighestAcceptableAddress,
|
||||||
|
IN PHYSICAL_ADDRESS BoundaryAddressMultiple OPTIONAL,
|
||||||
|
IN MEMORY_CACHING_TYPE CacheType);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
PMDL
|
||||||
|
NTAPI
|
||||||
|
MmAllocatePagesForMdl(
|
||||||
|
IN PHYSICAL_ADDRESS LowAddress,
|
||||||
|
IN PHYSICAL_ADDRESS HighAddress,
|
||||||
|
IN PHYSICAL_ADDRESS SkipBytes,
|
||||||
|
IN SIZE_T TotalBytes);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
MmBuildMdlForNonPagedPool(
|
||||||
|
IN OUT PMDLX MemoryDescriptorList);
|
||||||
|
|
||||||
|
//DECLSPEC_DEPRECATED_DDK
|
||||||
|
NTKERNELAPI
|
||||||
|
PMDL
|
||||||
|
NTAPI
|
||||||
|
MmCreateMdl(
|
||||||
|
IN PMDL MemoryDescriptorList OPTIONAL,
|
||||||
|
IN PVOID Base,
|
||||||
|
IN SIZE_T Length);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
MmFreeContiguousMemory(
|
||||||
|
IN PVOID BaseAddress);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
MmFreeContiguousMemorySpecifyCache(
|
||||||
|
IN PVOID BaseAddress,
|
||||||
|
IN SIZE_T NumberOfBytes,
|
||||||
|
IN MEMORY_CACHING_TYPE CacheType);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
MmFreePagesFromMdl(
|
||||||
|
IN PMDLX MemoryDescriptorList);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
PVOID
|
||||||
|
NTAPI
|
||||||
|
MmGetSystemRoutineAddress(
|
||||||
|
IN PUNICODE_STRING SystemRoutineName);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
LOGICAL
|
||||||
|
NTAPI
|
||||||
|
MmIsDriverVerifying(
|
||||||
|
IN struct _DRIVER_OBJECT *DriverObject);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
PVOID
|
||||||
|
NTAPI
|
||||||
|
MmLockPagableDataSection(
|
||||||
|
IN PVOID AddressWithinSection);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
PVOID
|
||||||
|
NTAPI
|
||||||
|
MmMapIoSpace(
|
||||||
|
IN PHYSICAL_ADDRESS PhysicalAddress,
|
||||||
|
IN SIZE_T NumberOfBytes,
|
||||||
|
IN MEMORY_CACHING_TYPE CacheEnable);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
PVOID
|
||||||
|
NTAPI
|
||||||
|
MmMapLockedPages(
|
||||||
|
IN PMDL MemoryDescriptorList,
|
||||||
|
IN KPROCESSOR_MODE AccessMode);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
PVOID
|
||||||
|
NTAPI
|
||||||
|
MmMapLockedPagesSpecifyCache(
|
||||||
|
IN PMDLX MemoryDescriptorList,
|
||||||
|
IN KPROCESSOR_MODE AccessMode,
|
||||||
|
IN MEMORY_CACHING_TYPE CacheType,
|
||||||
|
IN PVOID BaseAddress OPTIONAL,
|
||||||
|
IN ULONG BugCheckOnFailure,
|
||||||
|
IN MM_PAGE_PRIORITY Priority);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
PVOID
|
||||||
|
NTAPI
|
||||||
|
MmPageEntireDriver(
|
||||||
|
IN PVOID AddressWithinSection);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
MmProbeAndLockPages(
|
||||||
|
IN OUT PMDL MemoryDescriptorList,
|
||||||
|
IN KPROCESSOR_MODE AccessMode,
|
||||||
|
IN LOCK_OPERATION Operation);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
MM_SYSTEMSIZE
|
||||||
|
NTAPI
|
||||||
|
MmQuerySystemSize(
|
||||||
|
VOID);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
MmResetDriverPaging(
|
||||||
|
IN PVOID AddressWithinSection);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
SIZE_T
|
||||||
|
NTAPI
|
||||||
|
MmSizeOfMdl(
|
||||||
|
IN PVOID Base,
|
||||||
|
IN SIZE_T Length);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
MmUnlockPagableImageSection(
|
||||||
|
IN PVOID ImageSectionHandle);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
MmUnlockPages(
|
||||||
|
IN OUT PMDL MemoryDescriptorList);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
MmUnmapIoSpace(
|
||||||
|
IN PVOID BaseAddress,
|
||||||
|
IN SIZE_T NumberOfBytes);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
MmProbeAndLockProcessPages(
|
||||||
|
IN OUT PMDL MemoryDescriptorList,
|
||||||
|
IN PEPROCESS Process,
|
||||||
|
IN KPROCESSOR_MODE AccessMode,
|
||||||
|
IN LOCK_OPERATION Operation);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
MmUnmapLockedPages(
|
||||||
|
IN PVOID BaseAddress,
|
||||||
|
IN PMDL MemoryDescriptorList);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if (NTDDI_VERSION >= NTDDI_WINXP)
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
MmAdvanceMdl(
|
||||||
|
IN OUT PMDL Mdl,
|
||||||
|
IN ULONG NumberOfBytes);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
PVOID
|
||||||
|
NTAPI
|
||||||
|
MmAllocateMappingAddress(
|
||||||
|
IN SIZE_T NumberOfBytes,
|
||||||
|
IN ULONG PoolTag);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
MmFreeMappingAddress(
|
||||||
|
IN PVOID BaseAddress,
|
||||||
|
IN ULONG PoolTag);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
MmIsVerifierEnabled(
|
||||||
|
OUT PULONG VerifierFlags);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
PVOID
|
||||||
|
NTAPI
|
||||||
|
MmMapLockedPagesWithReservedMapping(
|
||||||
|
IN PVOID MappingAddress,
|
||||||
|
IN ULONG PoolTag,
|
||||||
|
IN PMDL MemoryDescriptorList,
|
||||||
|
IN MEMORY_CACHING_TYPE CacheType);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
MmProtectMdlSystemAddress(
|
||||||
|
IN PMDL MemoryDescriptorList,
|
||||||
|
IN ULONG NewProtect);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
MmUnmapReservedMapping(
|
||||||
|
IN PVOID BaseAddress,
|
||||||
|
IN ULONG PoolTag,
|
||||||
|
IN PMDL MemoryDescriptorList);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if (NTDDI_VERSION >= NTDDI_WS03SP1)
|
||||||
|
NTKERNELAPI
|
||||||
|
PMDL
|
||||||
|
NTAPI
|
||||||
|
MmAllocatePagesForMdlEx(
|
||||||
|
IN PHYSICAL_ADDRESS LowAddress,
|
||||||
|
IN PHYSICAL_ADDRESS HighAddress,
|
||||||
|
IN PHYSICAL_ADDRESS SkipBytes,
|
||||||
|
IN SIZE_T TotalBytes,
|
||||||
|
IN MEMORY_CACHING_TYPE CacheType,
|
||||||
|
IN ULONG Flags);
|
||||||
|
#endif
|
||||||
|
|
145
include/xdk/mmtypes.h
Normal file
145
include/xdk/mmtypes.h
Normal file
|
@ -0,0 +1,145 @@
|
||||||
|
/******************************************************************************
|
||||||
|
* Memory manager Types *
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
#define MM_DONT_ZERO_ALLOCATION 0x00000001
|
||||||
|
#define MM_ALLOCATE_FROM_LOCAL_NODE_ONLY 0x00000002
|
||||||
|
#define MM_ALLOCATE_FULLY_REQUIRED 0x00000004
|
||||||
|
#define MM_ALLOCATE_NO_WAIT 0x00000008
|
||||||
|
#define MM_ALLOCATE_PREFER_CONTIGUOUS 0x00000010
|
||||||
|
#define MM_ALLOCATE_REQUIRE_CONTIGUOUS_CHUNKS 0x00000020
|
||||||
|
|
||||||
|
#define MDL_MAPPED_TO_SYSTEM_VA 0x0001
|
||||||
|
#define MDL_PAGES_LOCKED 0x0002
|
||||||
|
#define MDL_SOURCE_IS_NONPAGED_POOL 0x0004
|
||||||
|
#define MDL_ALLOCATED_FIXED_SIZE 0x0008
|
||||||
|
#define MDL_PARTIAL 0x0010
|
||||||
|
#define MDL_PARTIAL_HAS_BEEN_MAPPED 0x0020
|
||||||
|
#define MDL_IO_PAGE_READ 0x0040
|
||||||
|
#define MDL_WRITE_OPERATION 0x0080
|
||||||
|
#define MDL_PARENT_MAPPED_SYSTEM_VA 0x0100
|
||||||
|
#define MDL_FREE_EXTRA_PTES 0x0200
|
||||||
|
#define MDL_DESCRIBES_AWE 0x0400
|
||||||
|
#define MDL_IO_SPACE 0x0800
|
||||||
|
#define MDL_NETWORK_HEADER 0x1000
|
||||||
|
#define MDL_MAPPING_CAN_FAIL 0x2000
|
||||||
|
#define MDL_ALLOCATED_MUST_SUCCEED 0x4000
|
||||||
|
#define MDL_INTERNAL 0x8000
|
||||||
|
|
||||||
|
#define MDL_MAPPING_FLAGS ( \
|
||||||
|
MDL_MAPPED_TO_SYSTEM_VA | \
|
||||||
|
MDL_PAGES_LOCKED | \
|
||||||
|
MDL_SOURCE_IS_NONPAGED_POOL | \
|
||||||
|
MDL_PARTIAL_HAS_BEEN_MAPPED | \
|
||||||
|
MDL_PARENT_MAPPED_SYSTEM_VA | \
|
||||||
|
MDL_SYSTEM_VA | \
|
||||||
|
MDL_IO_SPACE)
|
||||||
|
|
||||||
|
#define FLUSH_MULTIPLE_MAXIMUM 32
|
||||||
|
|
||||||
|
/* Section access rights */
|
||||||
|
#define SECTION_QUERY 0x0001
|
||||||
|
#define SECTION_MAP_WRITE 0x0002
|
||||||
|
#define SECTION_MAP_READ 0x0004
|
||||||
|
#define SECTION_MAP_EXECUTE 0x0008
|
||||||
|
#define SECTION_EXTEND_SIZE 0x0010
|
||||||
|
#define SECTION_MAP_EXECUTE_EXPLICIT 0x0020
|
||||||
|
|
||||||
|
#define SECTION_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SECTION_QUERY|\
|
||||||
|
SECTION_MAP_WRITE | \
|
||||||
|
SECTION_MAP_READ | \
|
||||||
|
SECTION_MAP_EXECUTE | \
|
||||||
|
SECTION_EXTEND_SIZE)
|
||||||
|
|
||||||
|
#define SESSION_QUERY_ACCESS 0x0001
|
||||||
|
#define SESSION_MODIFY_ACCESS 0x0002
|
||||||
|
|
||||||
|
#define SESSION_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | \
|
||||||
|
SESSION_QUERY_ACCESS | \
|
||||||
|
SESSION_MODIFY_ACCESS)
|
||||||
|
|
||||||
|
#define SEGMENT_ALL_ACCESS SECTION_ALL_ACCESS
|
||||||
|
|
||||||
|
#define PAGE_NOACCESS 0x01
|
||||||
|
#define PAGE_READONLY 0x02
|
||||||
|
#define PAGE_READWRITE 0x04
|
||||||
|
#define PAGE_WRITECOPY 0x08
|
||||||
|
#define PAGE_EXECUTE 0x10
|
||||||
|
#define PAGE_EXECUTE_READ 0x20
|
||||||
|
#define PAGE_EXECUTE_READWRITE 0x40
|
||||||
|
#define PAGE_EXECUTE_WRITECOPY 0x80
|
||||||
|
#define PAGE_GUARD 0x100
|
||||||
|
#define PAGE_NOCACHE 0x200
|
||||||
|
#define PAGE_WRITECOMBINE 0x400
|
||||||
|
|
||||||
|
#define MEM_COMMIT 0x1000
|
||||||
|
#define MEM_RESERVE 0x2000
|
||||||
|
#define MEM_DECOMMIT 0x4000
|
||||||
|
#define MEM_RELEASE 0x8000
|
||||||
|
#define MEM_FREE 0x10000
|
||||||
|
#define MEM_PRIVATE 0x20000
|
||||||
|
#define MEM_MAPPED 0x40000
|
||||||
|
#define MEM_RESET 0x80000
|
||||||
|
#define MEM_TOP_DOWN 0x100000
|
||||||
|
#define MEM_LARGE_PAGES 0x20000000
|
||||||
|
#define MEM_4MB_PAGES 0x80000000
|
||||||
|
|
||||||
|
#define SEC_RESERVE 0x4000000
|
||||||
|
#define SEC_COMMIT 0x8000000
|
||||||
|
#define SEC_LARGE_PAGES 0x80000000
|
||||||
|
|
||||||
|
/* Section map options */
|
||||||
|
typedef enum _SECTION_INHERIT {
|
||||||
|
ViewShare = 1,
|
||||||
|
ViewUnmap = 2
|
||||||
|
} SECTION_INHERIT;
|
||||||
|
|
||||||
|
typedef ULONG PFN_COUNT;
|
||||||
|
typedef LONG_PTR SPFN_NUMBER, *PSPFN_NUMBER;
|
||||||
|
typedef ULONG_PTR PFN_NUMBER, *PPFN_NUMBER;
|
||||||
|
|
||||||
|
typedef struct _MDL {
|
||||||
|
struct _MDL *Next;
|
||||||
|
CSHORT Size;
|
||||||
|
CSHORT MdlFlags;
|
||||||
|
struct _EPROCESS *Process;
|
||||||
|
PVOID MappedSystemVa;
|
||||||
|
PVOID StartVa;
|
||||||
|
ULONG ByteCount;
|
||||||
|
ULONG ByteOffset;
|
||||||
|
} MDL, *PMDL;
|
||||||
|
typedef MDL *PMDLX;
|
||||||
|
|
||||||
|
typedef enum _MEMORY_CACHING_TYPE_ORIG {
|
||||||
|
MmFrameBufferCached = 2
|
||||||
|
} MEMORY_CACHING_TYPE_ORIG;
|
||||||
|
|
||||||
|
typedef enum _MEMORY_CACHING_TYPE {
|
||||||
|
MmNonCached = FALSE,
|
||||||
|
MmCached = TRUE,
|
||||||
|
MmWriteCombined = MmFrameBufferCached,
|
||||||
|
MmHardwareCoherentCached,
|
||||||
|
MmNonCachedUnordered,
|
||||||
|
MmUSWCCached,
|
||||||
|
MmMaximumCacheType
|
||||||
|
} MEMORY_CACHING_TYPE;
|
||||||
|
|
||||||
|
typedef enum _MM_PAGE_PRIORITY {
|
||||||
|
LowPagePriority,
|
||||||
|
NormalPagePriority = 16,
|
||||||
|
HighPagePriority = 32
|
||||||
|
} MM_PAGE_PRIORITY;
|
||||||
|
|
||||||
|
typedef enum _LOCK_OPERATION {
|
||||||
|
IoReadAccess,
|
||||||
|
IoWriteAccess,
|
||||||
|
IoModifyAccess
|
||||||
|
} LOCK_OPERATION;
|
||||||
|
|
||||||
|
typedef enum _MM_SYSTEM_SIZE {
|
||||||
|
MmSmallSystem,
|
||||||
|
MmMediumSystem,
|
||||||
|
MmLargeSystem
|
||||||
|
} MM_SYSTEMSIZE;
|
||||||
|
|
||||||
|
|
47
include/xdk/nttmapi.h
Normal file
47
include/xdk/nttmapi.h
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
$if (_WDMDDK_)
|
||||||
|
#ifndef _NTTMAPI_
|
||||||
|
#define _NTTMAPI_
|
||||||
|
|
||||||
|
#include <ktmtypes.h>
|
||||||
|
|
||||||
|
typedef enum _KTMOBJECT_TYPE {
|
||||||
|
KTMOBJECT_TRANSACTION,
|
||||||
|
KTMOBJECT_TRANSACTION_MANAGER,
|
||||||
|
KTMOBJECT_RESOURCE_MANAGER,
|
||||||
|
KTMOBJECT_ENLISTMENT,
|
||||||
|
KTMOBJECT_INVALID
|
||||||
|
} KTMOBJECT_TYPE, *PKTMOBJECT_TYPE;
|
||||||
|
|
||||||
|
typedef struct _KTMOBJECT_CURSOR {
|
||||||
|
GUID LastQuery;
|
||||||
|
ULONG ObjectIdCount;
|
||||||
|
GUID ObjectIds[1];
|
||||||
|
} KTMOBJECT_CURSOR, *PKTMOBJECT_CURSOR;
|
||||||
|
|
||||||
|
typedef enum _TRANSACTION_INFORMATION_CLASS {
|
||||||
|
TransactionBasicInformation,
|
||||||
|
TransactionPropertiesInformation,
|
||||||
|
TransactionEnlistmentInformation,
|
||||||
|
TransactionSuperiorEnlistmentInformation
|
||||||
|
} TRANSACTION_INFORMATION_CLASS;
|
||||||
|
|
||||||
|
typedef enum _TRANSACTIONMANAGER_INFORMATION_CLASS {
|
||||||
|
TransactionManagerBasicInformation,
|
||||||
|
TransactionManagerLogInformation,
|
||||||
|
TransactionManagerLogPathInformation,
|
||||||
|
TransactionManagerRecoveryInformation = 4
|
||||||
|
} TRANSACTIONMANAGER_INFORMATION_CLASS;
|
||||||
|
|
||||||
|
typedef enum _RESOURCEMANAGER_INFORMATION_CLASS {
|
||||||
|
ResourceManagerBasicInformation,
|
||||||
|
ResourceManagerCompletionInformation,
|
||||||
|
} RESOURCEMANAGER_INFORMATION_CLASS;
|
||||||
|
|
||||||
|
typedef enum _ENLISTMENT_INFORMATION_CLASS {
|
||||||
|
EnlistmentBasicInformation,
|
||||||
|
EnlistmentRecoveryInformation,
|
||||||
|
EnlistmentCrmInformation
|
||||||
|
} ENLISTMENT_INFORMATION_CLASS;
|
||||||
|
|
||||||
|
#endif /* !_NTTMAPI_ */
|
||||||
|
$endif
|
60
include/xdk/obfuncs.h
Normal file
60
include/xdk/obfuncs.h
Normal file
|
@ -0,0 +1,60 @@
|
||||||
|
/******************************************************************************
|
||||||
|
* Object Manager Functions *
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
$if (_WDMDDK_)
|
||||||
|
#if (NTDDI_VERSION >= NTDDI_WIN2K)
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
LONG_PTR
|
||||||
|
FASTCALL
|
||||||
|
ObfDereferenceObject(
|
||||||
|
IN PVOID Object);
|
||||||
|
#define ObDereferenceObject ObfDereferenceObject
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
ObGetObjectSecurity(
|
||||||
|
IN PVOID Object,
|
||||||
|
OUT PSECURITY_DESCRIPTOR *SecurityDescriptor,
|
||||||
|
OUT PBOOLEAN MemoryAllocated);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
LONG_PTR
|
||||||
|
FASTCALL
|
||||||
|
ObfReferenceObject(
|
||||||
|
IN PVOID Object);
|
||||||
|
#define ObReferenceObject ObfReferenceObject
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
ObReferenceObjectByHandle(
|
||||||
|
IN HANDLE Handle,
|
||||||
|
IN ACCESS_MASK DesiredAccess,
|
||||||
|
IN POBJECT_TYPE ObjectType OPTIONAL,
|
||||||
|
IN KPROCESSOR_MODE AccessMode,
|
||||||
|
OUT PVOID *Object,
|
||||||
|
OUT POBJECT_HANDLE_INFORMATION HandleInformation OPTIONAL);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
ObReferenceObjectByPointer(
|
||||||
|
IN PVOID Object,
|
||||||
|
IN ACCESS_MASK DesiredAccess,
|
||||||
|
IN POBJECT_TYPE ObjectType OPTIONAL,
|
||||||
|
IN KPROCESSOR_MODE AccessMode);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
ObReleaseObjectSecurity(
|
||||||
|
IN PSECURITY_DESCRIPTOR SecurityDescriptor,
|
||||||
|
IN BOOLEAN MemoryAllocated);
|
||||||
|
|
||||||
|
#endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */
|
||||||
|
|
||||||
|
$endif
|
||||||
|
|
17
include/xdk/obtypes.h
Normal file
17
include/xdk/obtypes.h
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
/******************************************************************************
|
||||||
|
* Object Manager Types *
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
typedef struct _OBJECT_NAME_INFORMATION {
|
||||||
|
UNICODE_STRING Name;
|
||||||
|
} OBJECT_NAME_INFORMATION, *POBJECT_NAME_INFORMATION;
|
||||||
|
|
||||||
|
/* Exported object types */
|
||||||
|
extern POBJECT_TYPE NTSYSAPI ExEventObjectType;
|
||||||
|
extern POBJECT_TYPE NTSYSAPI ExSemaphoreObjectType;
|
||||||
|
extern POBJECT_TYPE NTSYSAPI IoFileObjectType;
|
||||||
|
extern POBJECT_TYPE NTSYSAPI PsThreadType;
|
||||||
|
extern POBJECT_TYPE NTSYSAPI SeTokenObjectType;
|
||||||
|
extern POBJECT_TYPE NTSYSAPI PsProcessType;
|
||||||
|
|
||||||
|
|
168
include/xdk/pofuncs.h
Normal file
168
include/xdk/pofuncs.h
Normal file
|
@ -0,0 +1,168 @@
|
||||||
|
/******************************************************************************
|
||||||
|
* Power Management Support Functions *
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
#define PoSetDeviceBusy(IdlePointer) ((void)(*(IdlePointer) = 0))
|
||||||
|
|
||||||
|
#if (NTDDI_VERSION >= NTDDI_WIN2K)
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
PoCallDriver(
|
||||||
|
IN struct _DEVICE_OBJECT *DeviceObject,
|
||||||
|
IN OUT struct _IRP *Irp);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
PULONG
|
||||||
|
NTAPI
|
||||||
|
PoRegisterDeviceForIdleDetection(
|
||||||
|
IN struct _DEVICE_OBJECT *DeviceObject,
|
||||||
|
IN ULONG ConservationIdleTime,
|
||||||
|
IN ULONG PerformanceIdleTime,
|
||||||
|
IN DEVICE_POWER_STATE State);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
PVOID
|
||||||
|
NTAPI
|
||||||
|
PoRegisterSystemState(
|
||||||
|
IN OUT PVOID StateHandle OPTIONAL,
|
||||||
|
IN EXECUTION_STATE Flags);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
PoRequestPowerIrp(
|
||||||
|
IN struct _DEVICE_OBJECT *DeviceObject,
|
||||||
|
IN UCHAR MinorFunction,
|
||||||
|
IN POWER_STATE PowerState,
|
||||||
|
IN PREQUEST_POWER_COMPLETE CompletionFunction OPTIONAL,
|
||||||
|
IN PVOID Context OPTIONAL,
|
||||||
|
OUT struct _IRP **Irp OPTIONAL);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
POWER_STATE
|
||||||
|
NTAPI
|
||||||
|
PoSetPowerState(
|
||||||
|
IN struct _DEVICE_OBJECT *DeviceObject,
|
||||||
|
IN POWER_STATE_TYPE Type,
|
||||||
|
IN POWER_STATE State);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
PoSetSystemState(
|
||||||
|
IN EXECUTION_STATE Flags);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
PoStartNextPowerIrp(
|
||||||
|
IN OUT struct _IRP *Irp);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
PoUnregisterSystemState(
|
||||||
|
IN OUT PVOID StateHandle);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
PoRequestShutdownEvent(
|
||||||
|
OUT PVOID *Event);
|
||||||
|
|
||||||
|
#endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */
|
||||||
|
|
||||||
|
#if (NTDDI_VERSION >= NTDDI_VISTA)
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
PoSetSystemWake(
|
||||||
|
IN OUT struct _IRP *Irp);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
BOOLEAN
|
||||||
|
NTAPI
|
||||||
|
PoGetSystemWake(
|
||||||
|
IN struct _IRP *Irp);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
PoRegisterPowerSettingCallback(
|
||||||
|
IN PDEVICE_OBJECT DeviceObject OPTIONAL,
|
||||||
|
IN LPCGUID SettingGuid,
|
||||||
|
IN PPOWER_SETTING_CALLBACK Callback,
|
||||||
|
IN PVOID Context OPTIONAL,
|
||||||
|
OUT PVOID *Handle OPTIONAL);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
PoUnregisterPowerSettingCallback(
|
||||||
|
IN OUT PVOID Handle);
|
||||||
|
|
||||||
|
#endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
|
||||||
|
|
||||||
|
#if (NTDDI_VERSION >= NTDDI_VISTASP1)
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
PoSetDeviceBusyEx(
|
||||||
|
IN OUT PULONG IdlePointer);
|
||||||
|
|
||||||
|
#endif /* (NTDDI_VERSION >= NTDDI_VISTASP1) */
|
||||||
|
|
||||||
|
#if (NTDDI_VERSION >= NTDDI_WIN7)
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
PoStartDeviceBusy(
|
||||||
|
IN OUT PULONG IdlePointer);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
PoEndDeviceBusy(
|
||||||
|
IN OUT PULONG IdlePointer);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
BOOLEAN
|
||||||
|
NTAPI
|
||||||
|
PoQueryWatchdogTime(
|
||||||
|
IN PDEVICE_OBJECT Pdo,
|
||||||
|
OUT PULONG SecondsRemaining);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
PoDeletePowerRequest(
|
||||||
|
IN OUT PVOID PowerRequest);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
PoSetPowerRequest(
|
||||||
|
IN OUT PVOID PowerRequest,
|
||||||
|
IN POWER_REQUEST_TYPE Type);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
PoClearPowerRequest(
|
||||||
|
IN OUT PVOID PowerRequest,
|
||||||
|
IN POWER_REQUEST_TYPE Type);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
PoCreatePowerRequest(
|
||||||
|
OUT PVOID *PowerRequest,
|
||||||
|
IN PDEVICE_OBJECT DeviceObject,
|
||||||
|
IN PCOUNTED_REASON_CONTEXT Context);
|
||||||
|
|
||||||
|
#endif /* (NTDDI_VERSION >= NTDDI_WIN7) */
|
||||||
|
|
135
include/xdk/potypes.h
Normal file
135
include/xdk/potypes.h
Normal file
|
@ -0,0 +1,135 @@
|
||||||
|
/******************************************************************************
|
||||||
|
* Power Management Support Types *
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
#ifndef _PO_DDK_
|
||||||
|
#define _PO_DDK_
|
||||||
|
|
||||||
|
/* Power States/Levels */
|
||||||
|
typedef enum _SYSTEM_POWER_STATE {
|
||||||
|
PowerSystemUnspecified,
|
||||||
|
PowerSystemWorking,
|
||||||
|
PowerSystemSleeping1,
|
||||||
|
PowerSystemSleeping2,
|
||||||
|
PowerSystemSleeping3,
|
||||||
|
PowerSystemHibernate,
|
||||||
|
PowerSystemShutdown,
|
||||||
|
PowerSystemMaximum
|
||||||
|
} SYSTEM_POWER_STATE, *PSYSTEM_POWER_STATE;
|
||||||
|
|
||||||
|
#define POWER_SYSTEM_MAXIMUM PowerSystemMaximum
|
||||||
|
|
||||||
|
typedef enum _POWER_INFORMATION_LEVEL {
|
||||||
|
SystemPowerPolicyAc,
|
||||||
|
SystemPowerPolicyDc,
|
||||||
|
VerifySystemPolicyAc,
|
||||||
|
VerifySystemPolicyDc,
|
||||||
|
SystemPowerCapabilities,
|
||||||
|
SystemBatteryState,
|
||||||
|
SystemPowerStateHandler,
|
||||||
|
ProcessorStateHandler,
|
||||||
|
SystemPowerPolicyCurrent,
|
||||||
|
AdministratorPowerPolicy,
|
||||||
|
SystemReserveHiberFile,
|
||||||
|
ProcessorInformation,
|
||||||
|
SystemPowerInformation,
|
||||||
|
ProcessorStateHandler2,
|
||||||
|
LastWakeTime,
|
||||||
|
LastSleepTime,
|
||||||
|
SystemExecutionState,
|
||||||
|
SystemPowerStateNotifyHandler,
|
||||||
|
ProcessorPowerPolicyAc,
|
||||||
|
ProcessorPowerPolicyDc,
|
||||||
|
VerifyProcessorPowerPolicyAc,
|
||||||
|
VerifyProcessorPowerPolicyDc,
|
||||||
|
ProcessorPowerPolicyCurrent,
|
||||||
|
SystemPowerStateLogging,
|
||||||
|
SystemPowerLoggingEntry,
|
||||||
|
SetPowerSettingValue,
|
||||||
|
NotifyUserPowerSetting,
|
||||||
|
PowerInformationLevelUnused0,
|
||||||
|
PowerInformationLevelUnused1,
|
||||||
|
SystemVideoState,
|
||||||
|
TraceApplicationPowerMessage,
|
||||||
|
TraceApplicationPowerMessageEnd,
|
||||||
|
ProcessorPerfStates,
|
||||||
|
ProcessorIdleStates,
|
||||||
|
ProcessorCap,
|
||||||
|
SystemWakeSource,
|
||||||
|
SystemHiberFileInformation,
|
||||||
|
TraceServicePowerMessage,
|
||||||
|
ProcessorLoad,
|
||||||
|
PowerShutdownNotification,
|
||||||
|
MonitorCapabilities,
|
||||||
|
SessionPowerInit,
|
||||||
|
SessionDisplayState,
|
||||||
|
PowerRequestCreate,
|
||||||
|
PowerRequestAction,
|
||||||
|
GetPowerRequestList,
|
||||||
|
ProcessorInformationEx,
|
||||||
|
NotifyUserModeLegacyPowerEvent,
|
||||||
|
GroupPark,
|
||||||
|
ProcessorIdleDomains,
|
||||||
|
WakeTimerList,
|
||||||
|
SystemHiberFileSize,
|
||||||
|
PowerInformationLevelMaximum
|
||||||
|
} POWER_INFORMATION_LEVEL;
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
PowerActionNone,
|
||||||
|
PowerActionReserved,
|
||||||
|
PowerActionSleep,
|
||||||
|
PowerActionHibernate,
|
||||||
|
PowerActionShutdown,
|
||||||
|
PowerActionShutdownReset,
|
||||||
|
PowerActionShutdownOff,
|
||||||
|
PowerActionWarmEject
|
||||||
|
} POWER_ACTION, *PPOWER_ACTION;
|
||||||
|
|
||||||
|
typedef enum _DEVICE_POWER_STATE {
|
||||||
|
PowerDeviceUnspecified,
|
||||||
|
PowerDeviceD0,
|
||||||
|
PowerDeviceD1,
|
||||||
|
PowerDeviceD2,
|
||||||
|
PowerDeviceD3,
|
||||||
|
PowerDeviceMaximum
|
||||||
|
} DEVICE_POWER_STATE, *PDEVICE_POWER_STATE;
|
||||||
|
|
||||||
|
typedef union _POWER_STATE {
|
||||||
|
SYSTEM_POWER_STATE SystemState;
|
||||||
|
DEVICE_POWER_STATE DeviceState;
|
||||||
|
} POWER_STATE, *PPOWER_STATE;
|
||||||
|
|
||||||
|
typedef enum _POWER_STATE_TYPE {
|
||||||
|
SystemPowerState = 0,
|
||||||
|
DevicePowerState
|
||||||
|
} POWER_STATE_TYPE, *PPOWER_STATE_TYPE;
|
||||||
|
|
||||||
|
#if (NTDDI_VERSION >= NTDDI_WINXP) || !defined(_BATCLASS_)
|
||||||
|
typedef struct {
|
||||||
|
ULONG Granularity;
|
||||||
|
ULONG Capacity;
|
||||||
|
} BATTERY_REPORTING_SCALE, *PBATTERY_REPORTING_SCALE;
|
||||||
|
#endif /* (NTDDI_VERSION >= NTDDI_WINXP) || !defined(_BATCLASS_) */
|
||||||
|
|
||||||
|
#endif /* !_PO_DDK_ */
|
||||||
|
|
||||||
|
typedef VOID
|
||||||
|
(DDKAPI *PREQUEST_POWER_COMPLETE)(
|
||||||
|
IN struct _DEVICE_OBJECT *DeviceObject,
|
||||||
|
IN UCHAR MinorFunction,
|
||||||
|
IN POWER_STATE PowerState,
|
||||||
|
IN PVOID Context,
|
||||||
|
IN struct _IO_STATUS_BLOCK *IoStatus);
|
||||||
|
|
||||||
|
typedef
|
||||||
|
NTSTATUS
|
||||||
|
(DDKAPI POWER_SETTING_CALLBACK)(
|
||||||
|
IN LPCGUID SettingGuid,
|
||||||
|
IN PVOID Value,
|
||||||
|
IN ULONG ValueLength,
|
||||||
|
IN OUT PVOID Context OPTIONAL);
|
||||||
|
|
||||||
|
typedef POWER_SETTING_CALLBACK *PPOWER_SETTING_CALLBACK;
|
||||||
|
|
||||||
|
|
109
include/xdk/ppc/ke.h
Normal file
109
include/xdk/ppc/ke.h
Normal file
|
@ -0,0 +1,109 @@
|
||||||
|
$if (_WDMDDK_)
|
||||||
|
|
||||||
|
/* Interrupt request levels */
|
||||||
|
#define PASSIVE_LEVEL 0
|
||||||
|
#define LOW_LEVEL 0
|
||||||
|
#define APC_LEVEL 1
|
||||||
|
#define DISPATCH_LEVEL 2
|
||||||
|
#define PROFILE_LEVEL 27
|
||||||
|
#define CLOCK1_LEVEL 28
|
||||||
|
#define CLOCK2_LEVEL 28
|
||||||
|
#define IPI_LEVEL 29
|
||||||
|
#define POWER_LEVEL 30
|
||||||
|
#define HIGH_LEVEL 31
|
||||||
|
|
||||||
|
//
|
||||||
|
// Used to contain PFNs and PFN counts
|
||||||
|
//
|
||||||
|
typedef ULONG PFN_COUNT;
|
||||||
|
typedef ULONG PFN_NUMBER, *PPFN_NUMBER;
|
||||||
|
typedef LONG SPFN_NUMBER, *PSPFN_NUMBER;
|
||||||
|
|
||||||
|
|
||||||
|
typedef struct _KFLOATING_SAVE {
|
||||||
|
ULONG Dummy;
|
||||||
|
} KFLOATING_SAVE, *PKFLOATING_SAVE;
|
||||||
|
|
||||||
|
typedef struct _KPCR_TIB {
|
||||||
|
PVOID ExceptionList; /* 00 */
|
||||||
|
PVOID StackBase; /* 04 */
|
||||||
|
PVOID StackLimit; /* 08 */
|
||||||
|
PVOID SubSystemTib; /* 0C */
|
||||||
|
_ANONYMOUS_UNION union {
|
||||||
|
PVOID FiberData; /* 10 */
|
||||||
|
ULONG Version; /* 10 */
|
||||||
|
} DUMMYUNIONNAME;
|
||||||
|
PVOID ArbitraryUserPointer; /* 14 */
|
||||||
|
struct _KPCR_TIB *Self; /* 18 */
|
||||||
|
} KPCR_TIB, *PKPCR_TIB; /* 1C */
|
||||||
|
|
||||||
|
#define PCR_MINOR_VERSION 1
|
||||||
|
#define PCR_MAJOR_VERSION 1
|
||||||
|
|
||||||
|
typedef struct _KPCR {
|
||||||
|
KPCR_TIB Tib; /* 00 */
|
||||||
|
struct _KPCR *Self; /* 1C */
|
||||||
|
struct _KPRCB *Prcb; /* 20 */
|
||||||
|
KIRQL Irql; /* 24 */
|
||||||
|
ULONG IRR; /* 28 */
|
||||||
|
ULONG IrrActive; /* 2C */
|
||||||
|
ULONG IDR; /* 30 */
|
||||||
|
PVOID KdVersionBlock; /* 34 */
|
||||||
|
PUSHORT IDT; /* 38 */
|
||||||
|
PUSHORT GDT; /* 3C */
|
||||||
|
struct _KTSS *TSS; /* 40 */
|
||||||
|
USHORT MajorVersion; /* 44 */
|
||||||
|
USHORT MinorVersion; /* 46 */
|
||||||
|
KAFFINITY SetMember; /* 48 */
|
||||||
|
ULONG StallScaleFactor; /* 4C */
|
||||||
|
UCHAR SpareUnused; /* 50 */
|
||||||
|
UCHAR Number; /* 51 */
|
||||||
|
} KPCR, *PKPCR; /* 54 */
|
||||||
|
|
||||||
|
#define KeGetPcr() PCR
|
||||||
|
|
||||||
|
#define YieldProcessor() __asm__ __volatile__("nop");
|
||||||
|
|
||||||
|
FORCEINLINE
|
||||||
|
ULONG
|
||||||
|
DDKAPI
|
||||||
|
KeGetCurrentProcessorNumber(VOID)
|
||||||
|
{
|
||||||
|
ULONG Number;
|
||||||
|
__asm__ __volatile__ (
|
||||||
|
"lwz %0, %c1(12)\n"
|
||||||
|
: "=r" (Number)
|
||||||
|
: "i" (FIELD_OFFSET(KPCR, Number))
|
||||||
|
);
|
||||||
|
return Number;
|
||||||
|
}
|
||||||
|
|
||||||
|
NTHALAPI
|
||||||
|
VOID
|
||||||
|
FASTCALL
|
||||||
|
KfLowerIrql(
|
||||||
|
IN KIRQL NewIrql);
|
||||||
|
#define KeLowerIrql(a) KfLowerIrql(a)
|
||||||
|
|
||||||
|
NTHALAPI
|
||||||
|
KIRQL
|
||||||
|
FASTCALL
|
||||||
|
KfRaiseIrql(
|
||||||
|
IN KIRQL NewIrql);
|
||||||
|
#define KeRaiseIrql(a,b) *(b) = KfRaiseIrql(a)
|
||||||
|
|
||||||
|
NTHALAPI
|
||||||
|
KIRQL
|
||||||
|
DDKAPI
|
||||||
|
KeRaiseIrqlToDpcLevel(
|
||||||
|
VOID);
|
||||||
|
|
||||||
|
NTHALAPI
|
||||||
|
KIRQL
|
||||||
|
DDKAPI
|
||||||
|
KeRaiseIrqlToSynchLevel(
|
||||||
|
VOID);
|
||||||
|
|
||||||
|
$endif
|
||||||
|
|
||||||
|
|
47
include/xdk/psfuncs.h
Normal file
47
include/xdk/psfuncs.h
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
/******************************************************************************
|
||||||
|
* Process Manager Functions *
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* PEPROCESS
|
||||||
|
* PsGetCurrentProcess(VOID)
|
||||||
|
*/
|
||||||
|
#define PsGetCurrentProcess IoGetCurrentProcess
|
||||||
|
|
||||||
|
#if !defined(_PSGETCURRENTTHREAD_)
|
||||||
|
|
||||||
|
#define _PSGETCURRENTTHREAD_
|
||||||
|
|
||||||
|
FORCEINLINE
|
||||||
|
PETHREAD
|
||||||
|
NTAPI
|
||||||
|
PsGetCurrentThread (
|
||||||
|
VOID)
|
||||||
|
{
|
||||||
|
return (PETHREAD)KeGetCurrentThread();
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if (NTDDI_VERSION >= NTDDI_WIN2K)
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
PsCreateSystemThread(
|
||||||
|
OUT PHANDLE ThreadHandle,
|
||||||
|
IN ULONG DesiredAccess,
|
||||||
|
IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
|
||||||
|
IN HANDLE ProcessHandle OPTIONAL,
|
||||||
|
OUT PCLIENT_ID ClientId OPTIONAL,
|
||||||
|
IN PKSTART_ROUTINE StartRoutine,
|
||||||
|
IN PVOID StartContext OPTIONAL);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
PsTerminateSystemThread(
|
||||||
|
IN NTSTATUS ExitStatus);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
54
include/xdk/pstypes.h
Normal file
54
include/xdk/pstypes.h
Normal file
|
@ -0,0 +1,54 @@
|
||||||
|
/******************************************************************************
|
||||||
|
* Process Manager Types *
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
#define QUOTA_LIMITS_HARDWS_MIN_ENABLE 0x00000001
|
||||||
|
#define QUOTA_LIMITS_HARDWS_MIN_DISABLE 0x00000002
|
||||||
|
#define QUOTA_LIMITS_HARDWS_MAX_ENABLE 0x00000004
|
||||||
|
#define QUOTA_LIMITS_HARDWS_MAX_DISABLE 0x00000008
|
||||||
|
#define QUOTA_LIMITS_USE_DEFAULT_LIMITS 0x00000010
|
||||||
|
|
||||||
|
/* Process Qoutas */
|
||||||
|
typedef struct _QUOTA_LIMITS {
|
||||||
|
SIZE_T PagedPoolLimit;
|
||||||
|
SIZE_T NonPagedPoolLimit;
|
||||||
|
SIZE_T MinimumWorkingSetSize;
|
||||||
|
SIZE_T MaximumWorkingSetSize;
|
||||||
|
SIZE_T PagefileLimit;
|
||||||
|
LARGE_INTEGER TimeLimit;
|
||||||
|
} QUOTA_LIMITS, *PQUOTA_LIMITS;
|
||||||
|
|
||||||
|
/* Thread Access Rights */
|
||||||
|
#define THREAD_TERMINATE 0x0001
|
||||||
|
#define THREAD_SUSPEND_RESUME 0x0002
|
||||||
|
#define THREAD_ALERT 0x0004
|
||||||
|
#define THREAD_GET_CONTEXT 0x0008
|
||||||
|
#define THREAD_SET_CONTEXT 0x0010
|
||||||
|
#define THREAD_SET_INFORMATION 0x0020
|
||||||
|
#define THREAD_SET_LIMITED_INFORMATION 0x0400
|
||||||
|
#define THREAD_QUERY_LIMITED_INFORMATION 0x0800
|
||||||
|
|
||||||
|
#define PROCESS_DUP_HANDLE (0x0040)
|
||||||
|
|
||||||
|
#if (NTDDI_VERSION >= NTDDI_VISTA)
|
||||||
|
#define PROCESS_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0xFFFF)
|
||||||
|
#else
|
||||||
|
#define PROCESS_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0xFFF)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if (NTDDI_VERSION >= NTDDI_VISTA)
|
||||||
|
#define THREAD_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0xFFFF)
|
||||||
|
#else
|
||||||
|
#define THREAD_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x3FF)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define ES_SYSTEM_REQUIRED 0x00000001
|
||||||
|
#define ES_DISPLAY_REQUIRED 0x00000002
|
||||||
|
#define ES_USER_PRESENT 0x00000004
|
||||||
|
#define ES_CONTINUOUS 0x80000000
|
||||||
|
|
||||||
|
#define LOW_PRIORITY 0
|
||||||
|
#define LOW_REALTIME_PRIORITY 16
|
||||||
|
#define HIGH_PRIORITY 31
|
||||||
|
#define MAXIMUM_PRIORITY 32
|
||||||
|
|
1286
include/xdk/rtlfuncs.h
Normal file
1286
include/xdk/rtlfuncs.h
Normal file
File diff suppressed because it is too large
Load diff
128
include/xdk/rtltypes.h
Normal file
128
include/xdk/rtltypes.h
Normal file
|
@ -0,0 +1,128 @@
|
||||||
|
/******************************************************************************
|
||||||
|
* Runtime Library Types *
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
#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
|
||||||
|
|
||||||
|
/* RTL_QUERY_REGISTRY_TABLE.Flags */
|
||||||
|
#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 HASH_STRING_ALGORITHM_DEFAULT 0
|
||||||
|
#define HASH_STRING_ALGORITHM_X65599 1
|
||||||
|
#define HASH_STRING_ALGORITHM_INVALID 0xffffffff
|
||||||
|
|
||||||
|
typedef struct _RTL_BITMAP {
|
||||||
|
ULONG SizeOfBitMap;
|
||||||
|
PULONG Buffer;
|
||||||
|
} RTL_BITMAP, *PRTL_BITMAP;
|
||||||
|
|
||||||
|
typedef struct _RTL_BITMAP_RUN {
|
||||||
|
ULONG StartingIndex;
|
||||||
|
ULONG NumberOfBits;
|
||||||
|
} RTL_BITMAP_RUN, *PRTL_BITMAP_RUN;
|
||||||
|
|
||||||
|
typedef NTSTATUS
|
||||||
|
(DDKAPI *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;
|
||||||
|
PCWSTR Name;
|
||||||
|
PVOID EntryContext;
|
||||||
|
ULONG DefaultType;
|
||||||
|
PVOID DefaultData;
|
||||||
|
ULONG DefaultLength;
|
||||||
|
} RTL_QUERY_REGISTRY_TABLE, *PRTL_QUERY_REGISTRY_TABLE;
|
||||||
|
|
||||||
|
typedef struct _TIME_FIELDS {
|
||||||
|
CSHORT Year;
|
||||||
|
CSHORT Month;
|
||||||
|
CSHORT Day;
|
||||||
|
CSHORT Hour;
|
||||||
|
CSHORT Minute;
|
||||||
|
CSHORT Second;
|
||||||
|
CSHORT Milliseconds;
|
||||||
|
CSHORT Weekday;
|
||||||
|
} TIME_FIELDS, *PTIME_FIELDS;
|
||||||
|
|
||||||
|
/* Slist Header */
|
||||||
|
#ifndef _SLIST_HEADER_
|
||||||
|
#define _SLIST_HEADER_
|
||||||
|
|
||||||
|
#if defined(_WIN64)
|
||||||
|
typedef struct DECLSPEC_ALIGN(16) _SLIST_ENTRY *PSLIST_ENTRY;
|
||||||
|
typedef struct DECLSPEC_ALIGN(16) _SLIST_ENTRY {
|
||||||
|
PSLIST_ENTRY Next;
|
||||||
|
} SLIST_ENTRY;
|
||||||
|
typedef union DECLSPEC_ALIGN(16) _SLIST_HEADER {
|
||||||
|
struct {
|
||||||
|
ULONGLONG Alignment;
|
||||||
|
ULONGLONG Region;
|
||||||
|
} DUMMYSTRUCTNAME;
|
||||||
|
struct {
|
||||||
|
ULONGLONG Depth:16;
|
||||||
|
ULONGLONG Sequence:9;
|
||||||
|
ULONGLONG NextEntry:39;
|
||||||
|
ULONGLONG HeaderType:1;
|
||||||
|
ULONGLONG Init:1;
|
||||||
|
ULONGLONG Reserved:59;
|
||||||
|
ULONGLONG Region:3;
|
||||||
|
} Header8;
|
||||||
|
struct {
|
||||||
|
ULONGLONG Depth:16;
|
||||||
|
ULONGLONG Sequence:48;
|
||||||
|
ULONGLONG HeaderType:1;
|
||||||
|
ULONGLONG Init:1;
|
||||||
|
ULONGLONG Reserved:2;
|
||||||
|
ULONGLONG NextEntry:60;
|
||||||
|
} Header16;
|
||||||
|
} SLIST_HEADER, *PSLIST_HEADER;
|
||||||
|
#else
|
||||||
|
#define SLIST_ENTRY SINGLE_LIST_ENTRY
|
||||||
|
#define _SLIST_ENTRY _SINGLE_LIST_ENTRY
|
||||||
|
#define PSLIST_ENTRY PSINGLE_LIST_ENTRY
|
||||||
|
typedef union _SLIST_HEADER {
|
||||||
|
ULONGLONG Alignment;
|
||||||
|
struct {
|
||||||
|
SLIST_ENTRY Next;
|
||||||
|
USHORT Depth;
|
||||||
|
USHORT Sequence;
|
||||||
|
} DUMMYSTRUCTNAME;
|
||||||
|
} SLIST_HEADER, *PSLIST_HEADER;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* _SLIST_HEADER_ */
|
||||||
|
|
||||||
|
|
||||||
|
/* HACK HACK HACK - GCC (or perhaps LD) is messing this up */
|
||||||
|
#if defined(_NTSYSTEM_) || defined(__GNUC__)
|
||||||
|
#define NLS_MB_CODE_PAGE_TAG NlsMbCodePageTag
|
||||||
|
#define NLS_MB_OEM_CODE_PAGE_TAG NlsMbOemCodePageTag
|
||||||
|
#else
|
||||||
|
#define NLS_MB_CODE_PAGE_TAG (*NlsMbCodePageTag)
|
||||||
|
#define NLS_MB_OEM_CODE_PAGE_TAG (*NlsMbOemCodePageTag)
|
||||||
|
#endif /* _NT_SYSTEM */
|
||||||
|
extern BOOLEAN NTSYSAPI NLS_MB_CODE_PAGE_TAG;
|
||||||
|
extern BOOLEAN NTSYSAPI NLS_MB_OEM_CODE_PAGE_TAG;
|
||||||
|
|
||||||
|
|
133
include/xdk/sefuncs.h
Normal file
133
include/xdk/sefuncs.h
Normal file
|
@ -0,0 +1,133 @@
|
||||||
|
/******************************************************************************
|
||||||
|
* Security Manager Functions *
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
#if (NTDDI_VERSION >= NTDDI_WIN2K)
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
BOOLEAN
|
||||||
|
NTAPI
|
||||||
|
SeAccessCheck(
|
||||||
|
IN PSECURITY_DESCRIPTOR SecurityDescriptor,
|
||||||
|
IN PSECURITY_SUBJECT_CONTEXT SubjectSecurityContext,
|
||||||
|
IN BOOLEAN SubjectContextLocked,
|
||||||
|
IN ACCESS_MASK DesiredAccess,
|
||||||
|
IN ACCESS_MASK PreviouslyGrantedAccess,
|
||||||
|
OUT PPRIVILEGE_SET *Privileges OPTIONAL,
|
||||||
|
IN PGENERIC_MAPPING GenericMapping,
|
||||||
|
IN KPROCESSOR_MODE AccessMode,
|
||||||
|
OUT PACCESS_MASK GrantedAccess,
|
||||||
|
OUT PNTSTATUS AccessStatus);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
SeAssignSecurity(
|
||||||
|
IN PSECURITY_DESCRIPTOR ParentDescriptor OPTIONAL,
|
||||||
|
IN PSECURITY_DESCRIPTOR ExplicitDescriptor OPTIONAL,
|
||||||
|
OUT PSECURITY_DESCRIPTOR *NewDescriptor,
|
||||||
|
IN BOOLEAN IsDirectoryObject,
|
||||||
|
IN PSECURITY_SUBJECT_CONTEXT SubjectContext,
|
||||||
|
IN PGENERIC_MAPPING GenericMapping,
|
||||||
|
IN POOL_TYPE PoolType);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
SeAssignSecurityEx(
|
||||||
|
IN PSECURITY_DESCRIPTOR ParentDescriptor OPTIONAL,
|
||||||
|
IN PSECURITY_DESCRIPTOR ExplicitDescriptor OPTIONAL,
|
||||||
|
OUT PSECURITY_DESCRIPTOR *NewDescriptor,
|
||||||
|
IN GUID *ObjectType OPTIONAL,
|
||||||
|
IN BOOLEAN IsDirectoryObject,
|
||||||
|
IN ULONG AutoInheritFlags,
|
||||||
|
IN PSECURITY_SUBJECT_CONTEXT SubjectContext,
|
||||||
|
IN PGENERIC_MAPPING GenericMapping,
|
||||||
|
IN POOL_TYPE PoolType);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
SeDeassignSecurity(
|
||||||
|
IN OUT PSECURITY_DESCRIPTOR *SecurityDescriptor);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
BOOLEAN
|
||||||
|
NTAPI
|
||||||
|
SeValidSecurityDescriptor(
|
||||||
|
IN ULONG Length,
|
||||||
|
IN PSECURITY_DESCRIPTOR SecurityDescriptor);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
ULONG
|
||||||
|
NTAPI
|
||||||
|
SeObjectCreateSaclAccessBits(
|
||||||
|
IN PSECURITY_DESCRIPTOR SecurityDescriptor);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
SeReleaseSubjectContext(
|
||||||
|
IN OUT PSECURITY_SUBJECT_CONTEXT SubjectContext);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
SeUnlockSubjectContext(
|
||||||
|
IN PSECURITY_SUBJECT_CONTEXT SubjectContext);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
SeCaptureSubjectContext(
|
||||||
|
OUT PSECURITY_SUBJECT_CONTEXT SubjectContext);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
SeLockSubjectContext(
|
||||||
|
IN PSECURITY_SUBJECT_CONTEXT SubjectContext);
|
||||||
|
|
||||||
|
#endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */
|
||||||
|
|
||||||
|
#if (NTDDI_VERSION >= NTDDI_WS03SP1)
|
||||||
|
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
SeSetAuditParameter(
|
||||||
|
IN OUT PSE_ADT_PARAMETER_ARRAY AuditParameters,
|
||||||
|
IN SE_ADT_PARAMETER_TYPE Type,
|
||||||
|
IN ULONG Index,
|
||||||
|
IN PVOID Data);
|
||||||
|
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
SeReportSecurityEvent(
|
||||||
|
IN ULONG Flags,
|
||||||
|
IN PUNICODE_STRING SourceName,
|
||||||
|
IN PSID UserSid OPTIONAL,
|
||||||
|
IN PSE_ADT_PARAMETER_ARRAY AuditParameters);
|
||||||
|
|
||||||
|
#endif /* (NTDDI_VERSION >= NTDDI_WS03SP1) */
|
||||||
|
|
||||||
|
#if (NTDDI_VERSION >= NTDDI_VISTA)
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
ULONG
|
||||||
|
NTAPI
|
||||||
|
SeComputeAutoInheritByObjectType(
|
||||||
|
IN PVOID ObjectType,
|
||||||
|
IN PSECURITY_DESCRIPTOR SecurityDescriptor OPTIONAL,
|
||||||
|
IN PSECURITY_DESCRIPTOR ParentSecurityDescriptor OPTIONAL);
|
||||||
|
|
||||||
|
#ifdef SE_NTFS_WORLD_CACHE
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
SeGetWorldRights(
|
||||||
|
IN PSECURITY_DESCRIPTOR SecurityDescriptor,
|
||||||
|
IN PGENERIC_MAPPING GenericMapping,
|
||||||
|
OUT PACCESS_MASK GrantedAccess);
|
||||||
|
#endif /* SE_NTFS_WORLD_CACHE */
|
||||||
|
|
||||||
|
#endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
|
||||||
|
|
303
include/xdk/setypes.h
Normal file
303
include/xdk/setypes.h
Normal file
|
@ -0,0 +1,303 @@
|
||||||
|
/******************************************************************************
|
||||||
|
* Security Manager Types *
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
/* Simple types */
|
||||||
|
typedef PVOID PSECURITY_DESCRIPTOR;
|
||||||
|
typedef ULONG SECURITY_INFORMATION, *PSECURITY_INFORMATION;
|
||||||
|
typedef ULONG ACCESS_MASK, *PACCESS_MASK;
|
||||||
|
typedef PVOID PACCESS_TOKEN;
|
||||||
|
typedef PVOID PSID;
|
||||||
|
|
||||||
|
#define DELETE 0x00010000L
|
||||||
|
#define READ_CONTROL 0x00020000L
|
||||||
|
#define WRITE_DAC 0x00040000L
|
||||||
|
#define WRITE_OWNER 0x00080000L
|
||||||
|
#define SYNCHRONIZE 0x00100000L
|
||||||
|
#define STANDARD_RIGHTS_REQUIRED 0x000F0000L
|
||||||
|
#define STANDARD_RIGHTS_READ READ_CONTROL
|
||||||
|
#define STANDARD_RIGHTS_WRITE READ_CONTROL
|
||||||
|
#define STANDARD_RIGHTS_EXECUTE READ_CONTROL
|
||||||
|
#define STANDARD_RIGHTS_ALL 0x001F0000L
|
||||||
|
#define SPECIFIC_RIGHTS_ALL 0x0000FFFFL
|
||||||
|
#define ACCESS_SYSTEM_SECURITY 0x01000000L
|
||||||
|
#define MAXIMUM_ALLOWED 0x02000000L
|
||||||
|
#define GENERIC_READ 0x80000000L
|
||||||
|
#define GENERIC_WRITE 0x40000000L
|
||||||
|
#define GENERIC_EXECUTE 0x20000000L
|
||||||
|
#define GENERIC_ALL 0x10000000L
|
||||||
|
|
||||||
|
typedef struct _GENERIC_MAPPING {
|
||||||
|
ACCESS_MASK GenericRead;
|
||||||
|
ACCESS_MASK GenericWrite;
|
||||||
|
ACCESS_MASK GenericExecute;
|
||||||
|
ACCESS_MASK GenericAll;
|
||||||
|
} GENERIC_MAPPING, *PGENERIC_MAPPING;
|
||||||
|
|
||||||
|
#define ACL_REVISION 2
|
||||||
|
#define ACL_REVISION_DS 4
|
||||||
|
|
||||||
|
#define ACL_REVISION1 1
|
||||||
|
#define ACL_REVISION2 2
|
||||||
|
#define ACL_REVISION3 3
|
||||||
|
#define ACL_REVISION4 4
|
||||||
|
#define MIN_ACL_REVISION ACL_REVISION2
|
||||||
|
#define MAX_ACL_REVISION ACL_REVISION4
|
||||||
|
|
||||||
|
typedef struct _ACL {
|
||||||
|
UCHAR AclRevision;
|
||||||
|
UCHAR Sbz1;
|
||||||
|
USHORT AclSize;
|
||||||
|
USHORT AceCount;
|
||||||
|
USHORT Sbz2;
|
||||||
|
} ACL, *PACL;
|
||||||
|
|
||||||
|
/* Current security descriptor revision value */
|
||||||
|
#define SECURITY_DESCRIPTOR_REVISION (1)
|
||||||
|
#define SECURITY_DESCRIPTOR_REVISION1 (1)
|
||||||
|
|
||||||
|
/* Privilege attributes */
|
||||||
|
#define SE_PRIVILEGE_ENABLED_BY_DEFAULT (0x00000001L)
|
||||||
|
#define SE_PRIVILEGE_ENABLED (0x00000002L)
|
||||||
|
#define SE_PRIVILEGE_REMOVED (0X00000004L)
|
||||||
|
#define SE_PRIVILEGE_USED_FOR_ACCESS (0x80000000L)
|
||||||
|
|
||||||
|
#define SE_PRIVILEGE_VALID_ATTRIBUTES (SE_PRIVILEGE_ENABLED_BY_DEFAULT | \
|
||||||
|
SE_PRIVILEGE_ENABLED | \
|
||||||
|
SE_PRIVILEGE_REMOVED | \
|
||||||
|
SE_PRIVILEGE_USED_FOR_ACCESS)
|
||||||
|
|
||||||
|
#include <pshpack4.h>
|
||||||
|
typedef struct _LUID_AND_ATTRIBUTES {
|
||||||
|
LUID Luid;
|
||||||
|
ULONG Attributes;
|
||||||
|
} LUID_AND_ATTRIBUTES, *PLUID_AND_ATTRIBUTES;
|
||||||
|
#include <poppack.h>
|
||||||
|
|
||||||
|
typedef LUID_AND_ATTRIBUTES LUID_AND_ATTRIBUTES_ARRAY[ANYSIZE_ARRAY];
|
||||||
|
typedef LUID_AND_ATTRIBUTES_ARRAY *PLUID_AND_ATTRIBUTES_ARRAY;
|
||||||
|
|
||||||
|
/* Privilege sets */
|
||||||
|
#define PRIVILEGE_SET_ALL_NECESSARY (1)
|
||||||
|
|
||||||
|
typedef struct _PRIVILEGE_SET {
|
||||||
|
ULONG PrivilegeCount;
|
||||||
|
ULONG Control;
|
||||||
|
LUID_AND_ATTRIBUTES Privilege[ANYSIZE_ARRAY];
|
||||||
|
} PRIVILEGE_SET,*PPRIVILEGE_SET;
|
||||||
|
|
||||||
|
typedef enum _SECURITY_IMPERSONATION_LEVEL {
|
||||||
|
SecurityAnonymous,
|
||||||
|
SecurityIdentification,
|
||||||
|
SecurityImpersonation,
|
||||||
|
SecurityDelegation
|
||||||
|
} SECURITY_IMPERSONATION_LEVEL, * PSECURITY_IMPERSONATION_LEVEL;
|
||||||
|
|
||||||
|
#define SECURITY_MAX_IMPERSONATION_LEVEL SecurityDelegation
|
||||||
|
#define SECURITY_MIN_IMPERSONATION_LEVEL SecurityAnonymous
|
||||||
|
#define DEFAULT_IMPERSONATION_LEVEL SecurityImpersonation
|
||||||
|
#define VALID_IMPERSONATION_LEVEL(Level) (((Level) >= SECURITY_MIN_IMPERSONATION_LEVEL) && ((Level) <= SECURITY_MAX_IMPERSONATION_LEVEL))
|
||||||
|
|
||||||
|
#define SECURITY_DYNAMIC_TRACKING (TRUE)
|
||||||
|
#define SECURITY_STATIC_TRACKING (FALSE)
|
||||||
|
|
||||||
|
typedef BOOLEAN SECURITY_CONTEXT_TRACKING_MODE, *PSECURITY_CONTEXT_TRACKING_MODE;
|
||||||
|
|
||||||
|
typedef struct _SECURITY_QUALITY_OF_SERVICE {
|
||||||
|
ULONG Length;
|
||||||
|
SECURITY_IMPERSONATION_LEVEL ImpersonationLevel;
|
||||||
|
SECURITY_CONTEXT_TRACKING_MODE ContextTrackingMode;
|
||||||
|
BOOLEAN EffectiveOnly;
|
||||||
|
} SECURITY_QUALITY_OF_SERVICE, *PSECURITY_QUALITY_OF_SERVICE;
|
||||||
|
|
||||||
|
typedef struct _SE_IMPERSONATION_STATE {
|
||||||
|
PACCESS_TOKEN Token;
|
||||||
|
BOOLEAN CopyOnOpen;
|
||||||
|
BOOLEAN EffectiveOnly;
|
||||||
|
SECURITY_IMPERSONATION_LEVEL Level;
|
||||||
|
} SE_IMPERSONATION_STATE, *PSE_IMPERSONATION_STATE;
|
||||||
|
|
||||||
|
#define OWNER_SECURITY_INFORMATION (0x00000001L)
|
||||||
|
#define GROUP_SECURITY_INFORMATION (0x00000002L)
|
||||||
|
#define DACL_SECURITY_INFORMATION (0x00000004L)
|
||||||
|
#define SACL_SECURITY_INFORMATION (0x00000008L)
|
||||||
|
#define LABEL_SECURITY_INFORMATION (0x00000010L)
|
||||||
|
|
||||||
|
#define PROTECTED_DACL_SECURITY_INFORMATION (0x80000000L)
|
||||||
|
#define PROTECTED_SACL_SECURITY_INFORMATION (0x40000000L)
|
||||||
|
#define UNPROTECTED_DACL_SECURITY_INFORMATION (0x20000000L)
|
||||||
|
#define UNPROTECTED_SACL_SECURITY_INFORMATION (0x10000000L)
|
||||||
|
|
||||||
|
typedef enum _SECURITY_OPERATION_CODE {
|
||||||
|
SetSecurityDescriptor,
|
||||||
|
QuerySecurityDescriptor,
|
||||||
|
DeleteSecurityDescriptor,
|
||||||
|
AssignSecurityDescriptor
|
||||||
|
} SECURITY_OPERATION_CODE, *PSECURITY_OPERATION_CODE;
|
||||||
|
|
||||||
|
#define INITIAL_PRIVILEGE_COUNT 3
|
||||||
|
|
||||||
|
typedef struct _INITIAL_PRIVILEGE_SET {
|
||||||
|
ULONG PrivilegeCount;
|
||||||
|
ULONG Control;
|
||||||
|
LUID_AND_ATTRIBUTES Privilege[INITIAL_PRIVILEGE_COUNT];
|
||||||
|
} INITIAL_PRIVILEGE_SET, * PINITIAL_PRIVILEGE_SET;
|
||||||
|
|
||||||
|
#define SE_MIN_WELL_KNOWN_PRIVILEGE 2
|
||||||
|
#define SE_CREATE_TOKEN_PRIVILEGE 2
|
||||||
|
#define SE_ASSIGNPRIMARYTOKEN_PRIVILEGE 3
|
||||||
|
#define SE_LOCK_MEMORY_PRIVILEGE 4
|
||||||
|
#define SE_INCREASE_QUOTA_PRIVILEGE 5
|
||||||
|
#define SE_MACHINE_ACCOUNT_PRIVILEGE 6
|
||||||
|
#define SE_TCB_PRIVILEGE 7
|
||||||
|
#define SE_SECURITY_PRIVILEGE 8
|
||||||
|
#define SE_TAKE_OWNERSHIP_PRIVILEGE 9
|
||||||
|
#define SE_LOAD_DRIVER_PRIVILEGE 10
|
||||||
|
#define SE_SYSTEM_PROFILE_PRIVILEGE 11
|
||||||
|
#define SE_SYSTEMTIME_PRIVILEGE 12
|
||||||
|
#define SE_PROF_SINGLE_PROCESS_PRIVILEGE 13
|
||||||
|
#define SE_INC_BASE_PRIORITY_PRIVILEGE 14
|
||||||
|
#define SE_CREATE_PAGEFILE_PRIVILEGE 15
|
||||||
|
#define SE_CREATE_PERMANENT_PRIVILEGE 16
|
||||||
|
#define SE_BACKUP_PRIVILEGE 17
|
||||||
|
#define SE_RESTORE_PRIVILEGE 18
|
||||||
|
#define SE_SHUTDOWN_PRIVILEGE 19
|
||||||
|
#define SE_DEBUG_PRIVILEGE 20
|
||||||
|
#define SE_AUDIT_PRIVILEGE 21
|
||||||
|
#define SE_SYSTEM_ENVIRONMENT_PRIVILEGE 22
|
||||||
|
#define SE_CHANGE_NOTIFY_PRIVILEGE 23
|
||||||
|
#define SE_REMOTE_SHUTDOWN_PRIVILEGE 24
|
||||||
|
#define SE_UNDOCK_PRIVILEGE 25
|
||||||
|
#define SE_SYNC_AGENT_PRIVILEGE 26
|
||||||
|
#define SE_ENABLE_DELEGATION_PRIVILEGE 27
|
||||||
|
#define SE_MANAGE_VOLUME_PRIVILEGE 28
|
||||||
|
#define SE_IMPERSONATE_PRIVILEGE 29
|
||||||
|
#define SE_CREATE_GLOBAL_PRIVILEGE 30
|
||||||
|
#define SE_TRUSTED_CREDMAN_ACCESS_PRIVILEGE 31
|
||||||
|
#define SE_RELABEL_PRIVILEGE 32
|
||||||
|
#define SE_INC_WORKING_SET_PRIVILEGE 33
|
||||||
|
#define SE_TIME_ZONE_PRIVILEGE 34
|
||||||
|
#define SE_CREATE_SYMBOLIC_LINK_PRIVILEGE 35
|
||||||
|
#define SE_MAX_WELL_KNOWN_PRIVILEGE SE_CREATE_SYMBOLIC_LINK_PRIVILEGE
|
||||||
|
|
||||||
|
typedef struct _SECURITY_SUBJECT_CONTEXT {
|
||||||
|
PACCESS_TOKEN ClientToken;
|
||||||
|
SECURITY_IMPERSONATION_LEVEL ImpersonationLevel;
|
||||||
|
PACCESS_TOKEN PrimaryToken;
|
||||||
|
PVOID ProcessAuditId;
|
||||||
|
} SECURITY_SUBJECT_CONTEXT, *PSECURITY_SUBJECT_CONTEXT;
|
||||||
|
|
||||||
|
typedef struct _ACCESS_STATE {
|
||||||
|
LUID OperationID;
|
||||||
|
BOOLEAN SecurityEvaluated;
|
||||||
|
BOOLEAN GenerateAudit;
|
||||||
|
BOOLEAN GenerateOnClose;
|
||||||
|
BOOLEAN PrivilegesAllocated;
|
||||||
|
ULONG Flags;
|
||||||
|
ACCESS_MASK RemainingDesiredAccess;
|
||||||
|
ACCESS_MASK PreviouslyGrantedAccess;
|
||||||
|
ACCESS_MASK OriginalDesiredAccess;
|
||||||
|
SECURITY_SUBJECT_CONTEXT SubjectSecurityContext;
|
||||||
|
PSECURITY_DESCRIPTOR SecurityDescriptor;
|
||||||
|
PVOID AuxData;
|
||||||
|
union {
|
||||||
|
INITIAL_PRIVILEGE_SET InitialPrivilegeSet;
|
||||||
|
PRIVILEGE_SET PrivilegeSet;
|
||||||
|
} Privileges;
|
||||||
|
|
||||||
|
BOOLEAN AuditPrivileges;
|
||||||
|
UNICODE_STRING ObjectName;
|
||||||
|
UNICODE_STRING ObjectTypeName;
|
||||||
|
} ACCESS_STATE, *PACCESS_STATE;
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef _NTLSA_IFS_
|
||||||
|
|
||||||
|
#ifndef _NTLSA_AUDIT_
|
||||||
|
#define _NTLSA_AUDIT_
|
||||||
|
|
||||||
|
#define SE_MAX_AUDIT_PARAMETERS 32
|
||||||
|
#define SE_MAX_GENERIC_AUDIT_PARAMETERS 28
|
||||||
|
|
||||||
|
#define SE_ADT_OBJECT_ONLY 0x1
|
||||||
|
|
||||||
|
#define SE_ADT_PARAMETERS_SELF_RELATIVE 0x00000001
|
||||||
|
#define SE_ADT_PARAMETERS_SEND_TO_LSA 0x00000002
|
||||||
|
#define SE_ADT_PARAMETER_EXTENSIBLE_AUDIT 0x00000004
|
||||||
|
#define SE_ADT_PARAMETER_GENERIC_AUDIT 0x00000008
|
||||||
|
#define SE_ADT_PARAMETER_WRITE_SYNCHRONOUS 0x00000010
|
||||||
|
|
||||||
|
#define LSAP_SE_ADT_PARAMETER_ARRAY_TRUE_SIZE(Parameters) \
|
||||||
|
( sizeof(SE_ADT_PARAMETER_ARRAY) - sizeof(SE_ADT_PARAMETER_ARRAY_ENTRY) * \
|
||||||
|
(SE_MAX_AUDIT_PARAMETERS - Parameters->ParameterCount) )
|
||||||
|
|
||||||
|
typedef enum _SE_ADT_PARAMETER_TYPE {
|
||||||
|
SeAdtParmTypeNone = 0,
|
||||||
|
SeAdtParmTypeString,
|
||||||
|
SeAdtParmTypeFileSpec,
|
||||||
|
SeAdtParmTypeUlong,
|
||||||
|
SeAdtParmTypeSid,
|
||||||
|
SeAdtParmTypeLogonId,
|
||||||
|
SeAdtParmTypeNoLogonId,
|
||||||
|
SeAdtParmTypeAccessMask,
|
||||||
|
SeAdtParmTypePrivs,
|
||||||
|
SeAdtParmTypeObjectTypes,
|
||||||
|
SeAdtParmTypeHexUlong,
|
||||||
|
SeAdtParmTypePtr,
|
||||||
|
SeAdtParmTypeTime,
|
||||||
|
SeAdtParmTypeGuid,
|
||||||
|
SeAdtParmTypeLuid,
|
||||||
|
SeAdtParmTypeHexInt64,
|
||||||
|
SeAdtParmTypeStringList,
|
||||||
|
SeAdtParmTypeSidList,
|
||||||
|
SeAdtParmTypeDuration,
|
||||||
|
SeAdtParmTypeUserAccountControl,
|
||||||
|
SeAdtParmTypeNoUac,
|
||||||
|
SeAdtParmTypeMessage,
|
||||||
|
SeAdtParmTypeDateTime,
|
||||||
|
SeAdtParmTypeSockAddr,
|
||||||
|
SeAdtParmTypeSD,
|
||||||
|
SeAdtParmTypeLogonHours,
|
||||||
|
SeAdtParmTypeLogonIdNoSid,
|
||||||
|
SeAdtParmTypeUlongNoConv,
|
||||||
|
SeAdtParmTypeSockAddrNoPort,
|
||||||
|
SeAdtParmTypeAccessReason
|
||||||
|
} SE_ADT_PARAMETER_TYPE, *PSE_ADT_PARAMETER_TYPE;
|
||||||
|
|
||||||
|
typedef struct _SE_ADT_OBJECT_TYPE {
|
||||||
|
GUID ObjectType;
|
||||||
|
USHORT Flags;
|
||||||
|
USHORT Level;
|
||||||
|
ACCESS_MASK AccessMask;
|
||||||
|
} SE_ADT_OBJECT_TYPE, *PSE_ADT_OBJECT_TYPE;
|
||||||
|
|
||||||
|
typedef struct _SE_ADT_PARAMETER_ARRAY_ENTRY {
|
||||||
|
SE_ADT_PARAMETER_TYPE Type;
|
||||||
|
ULONG Length;
|
||||||
|
ULONG_PTR Data[2];
|
||||||
|
PVOID Address;
|
||||||
|
} SE_ADT_PARAMETER_ARRAY_ENTRY, *PSE_ADT_PARAMETER_ARRAY_ENTRY;
|
||||||
|
|
||||||
|
typedef struct _SE_ADT_ACCESS_REASON {
|
||||||
|
ACCESS_MASK AccessMask;
|
||||||
|
ULONG AccessReasons[32];
|
||||||
|
ULONG ObjectTypeIndex;
|
||||||
|
ULONG AccessGranted;
|
||||||
|
PSECURITY_DESCRIPTOR SecurityDescriptor;
|
||||||
|
} SE_ADT_ACCESS_REASON, *PSE_ADT_ACCESS_REASON;
|
||||||
|
|
||||||
|
typedef struct _SE_ADT_PARAMETER_ARRAY {
|
||||||
|
ULONG CategoryId;
|
||||||
|
ULONG AuditId;
|
||||||
|
ULONG ParameterCount;
|
||||||
|
ULONG Length;
|
||||||
|
USHORT FlatSubCategoryId;
|
||||||
|
USHORT Type;
|
||||||
|
ULONG Flags;
|
||||||
|
SE_ADT_PARAMETER_ARRAY_ENTRY Parameters[ SE_MAX_AUDIT_PARAMETERS ];
|
||||||
|
} SE_ADT_PARAMETER_ARRAY, *PSE_ADT_PARAMETER_ARRAY;
|
||||||
|
|
||||||
|
#endif /* !_NTLSA_AUDIT_ */
|
||||||
|
#endif /* !_NTLSA_IFS_ */
|
||||||
|
|
||||||
|
|
259
include/xdk/wdm.template.h
Normal file
259
include/xdk/wdm.template.h
Normal file
|
@ -0,0 +1,259 @@
|
||||||
|
/*
|
||||||
|
* wdm.h
|
||||||
|
*
|
||||||
|
* Windows NT WDM Driver Developer Kit
|
||||||
|
*
|
||||||
|
* This file is part of the ReactOS DDK package.
|
||||||
|
*
|
||||||
|
* Contributors:
|
||||||
|
* Amine Khaldi
|
||||||
|
* Timo Kreuzer (timo.kreuzer@reactos.org)
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS NOT COPYRIGHTED
|
||||||
|
*
|
||||||
|
* This source code is offered for use in the public domain. You may
|
||||||
|
* use, modify or distribute it freely.
|
||||||
|
*
|
||||||
|
* This code is distributed in the hope that it will be useful but
|
||||||
|
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
|
||||||
|
* DISCLAIMED. This includes but is not limited to warranties of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#ifndef _WDMDDK_
|
||||||
|
#define _WDMDDK_
|
||||||
|
|
||||||
|
/* Included via ntddk.h? */
|
||||||
|
#ifndef _NTDDK_
|
||||||
|
#define _NTDDK_
|
||||||
|
#define _WDM_INCLUDED_
|
||||||
|
#define _DDK_DRIVER_
|
||||||
|
#define NO_INTERLOCKED_INTRINSICS
|
||||||
|
#endif /* _NTDDK_ */
|
||||||
|
|
||||||
|
/* Dependencies */
|
||||||
|
#define NT_INCLUDED
|
||||||
|
#include <excpt.h>
|
||||||
|
#include <ntdef.h>
|
||||||
|
#include <ntstatus.h>
|
||||||
|
|
||||||
|
#ifndef GUID_DEFINED
|
||||||
|
#include <guiddef.h>
|
||||||
|
#endif /* GUID_DEFINED */
|
||||||
|
|
||||||
|
#if (NTDDI_VERSION >= NTDDI_WINXP)
|
||||||
|
#include <dpfilter.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "intrin.h"
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !defined(_NTHALDLL_) && !defined(_BLDR_)
|
||||||
|
#define NTHALAPI DECLSPEC_IMPORT
|
||||||
|
#else
|
||||||
|
#define NTHALAPI
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* For ReactOS */
|
||||||
|
#if !defined(_NTOSKRNL_) && !defined(_BLDR_)
|
||||||
|
#define NTKERNELAPI DECLSPEC_IMPORT
|
||||||
|
#else
|
||||||
|
#define NTKERNELAPI
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(_X86_) && !defined(_NTHAL_)
|
||||||
|
#define _DECL_HAL_KE_IMPORT DECLSPEC_IMPORT
|
||||||
|
#elif defined(_X86_)
|
||||||
|
#define _DECL_HAL_KE_IMPORT
|
||||||
|
#else
|
||||||
|
#define _DECL_HAL_KE_IMPORT NTKERNELAPI
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(_WIN64)
|
||||||
|
#define POINTER_ALIGNMENT DECLSPEC_ALIGN(8)
|
||||||
|
#else
|
||||||
|
#define POINTER_ALIGNMENT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Helper macro to enable gcc's extension. */
|
||||||
|
#ifndef __GNU_EXTENSION
|
||||||
|
#ifdef __GNUC__
|
||||||
|
#define __GNU_EXTENSION __extension__
|
||||||
|
#else
|
||||||
|
#define __GNU_EXTENSION
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(_MSC_VER)
|
||||||
|
|
||||||
|
/* Indicate if #pragma alloc_text() is supported */
|
||||||
|
#if defined(_M_IX86) || defined(_M_AMD64) || defined(_M_IA64)
|
||||||
|
#define ALLOC_PRAGMA 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Indicate if #pragma data_seg() is supported */
|
||||||
|
#if defined(_M_IX86) || defined(_M_AMD64)
|
||||||
|
#define ALLOC_DATA_PRAGMA 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Forward declarations */
|
||||||
|
struct _IRP;
|
||||||
|
struct _MDL;
|
||||||
|
struct _KAPC;
|
||||||
|
struct _KDPC;
|
||||||
|
struct _FILE_OBJECT;
|
||||||
|
struct _DMA_ADAPTER;
|
||||||
|
struct _DEVICE_OBJECT;
|
||||||
|
struct _DRIVER_OBJECT;
|
||||||
|
struct _IO_STATUS_BLOCK;
|
||||||
|
struct _DEVICE_DESCRIPTION;
|
||||||
|
struct _SCATTER_GATHER_LIST;
|
||||||
|
struct _DRIVE_LAYOUT_INFORMATION;
|
||||||
|
struct _COMPRESSED_DATA_INFO;
|
||||||
|
struct _IO_RESOURCE_DESCRIPTOR;
|
||||||
|
|
||||||
|
/* Structures not exposed to drivers */
|
||||||
|
typedef struct _OBJECT_TYPE *POBJECT_TYPE;
|
||||||
|
typedef struct _HAL_DISPATCH_TABLE *PHAL_DISPATCH_TABLE;
|
||||||
|
typedef struct _HAL_PRIVATE_DISPATCH_TABLE *PHAL_PRIVATE_DISPATCH_TABLE;
|
||||||
|
typedef struct _DEVICE_HANDLER_OBJECT *PDEVICE_HANDLER_OBJECT;
|
||||||
|
typedef struct _ADAPTER_OBJECT *PADAPTER_OBJECT;
|
||||||
|
typedef struct _CALLBACK_OBJECT *PCALLBACK_OBJECT;
|
||||||
|
typedef struct _ETHREAD *PETHREAD;
|
||||||
|
typedef struct _EPROCESS *PEPROCESS;
|
||||||
|
typedef struct _IO_TIMER *PIO_TIMER;
|
||||||
|
typedef struct _KINTERRUPT *PKINTERRUPT;
|
||||||
|
typedef struct _KPROCESS *PKPROCESS;
|
||||||
|
typedef struct _KTHREAD *PKTHREAD, *PRKTHREAD;
|
||||||
|
typedef struct _CONTEXT *PCONTEXT;
|
||||||
|
|
||||||
|
|
||||||
|
$define (_WDMDDK_)
|
||||||
|
$include (interlocked.h)
|
||||||
|
$include (rtltypes.h)
|
||||||
|
$include (ketypes.h)
|
||||||
|
$include (mmtypes.h)
|
||||||
|
$include (extypes.h)
|
||||||
|
$include (setypes.h)
|
||||||
|
$include (potypes.h)
|
||||||
|
$include (cmtypes.h)
|
||||||
|
$include (iotypes.h)
|
||||||
|
$include (obtypes.h)
|
||||||
|
$include (pstypes.h)
|
||||||
|
|
||||||
|
#if defined(_M_IX86)
|
||||||
|
$include(x86/ke.h)
|
||||||
|
#elif defined(_M_AMD64)
|
||||||
|
$include(amd64/ke.h)
|
||||||
|
#elif defined(_M_IA64)
|
||||||
|
$include(ia64/ke.h)
|
||||||
|
#elif defined(_M_PPC)
|
||||||
|
$include(ppc/ke.h)
|
||||||
|
#elif defined(_M_MIPS)
|
||||||
|
$include(mips/ke.h)
|
||||||
|
#elif defined(_M_ARM)
|
||||||
|
$include(arm/ke.h)
|
||||||
|
#else
|
||||||
|
#error Unknown Architecture
|
||||||
|
#endif
|
||||||
|
|
||||||
|
$include (rtlfuncs.h)
|
||||||
|
$include (kefuncs.h)
|
||||||
|
$include (mmfuncs.h)
|
||||||
|
$include (sefuncs.h)
|
||||||
|
$include (cmfuncs.h)
|
||||||
|
$include (iofuncs.h)
|
||||||
|
$include (pofuncs.h)
|
||||||
|
$include (exfuncs.h)
|
||||||
|
$include (obfuncs.h)
|
||||||
|
$include (psfuncs.h)
|
||||||
|
$include (wmifuncs.h)
|
||||||
|
$include (kdfuncs.h)
|
||||||
|
$include (halfuncs.h)
|
||||||
|
$include (nttmapi.h)
|
||||||
|
$include (zwfuncs.h)
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
* Unsorted *
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
/* GUID Comparison */
|
||||||
|
#ifndef __IID_ALIGNED__
|
||||||
|
#define __IID_ALIGNED__
|
||||||
|
#ifdef __cplusplus
|
||||||
|
inline int IsEqualGUIDAligned(REFGUID guid1, REFGUID guid2)
|
||||||
|
{
|
||||||
|
return ( (*(PLONGLONG)(&guid1) == *(PLONGLONG)(&guid2)) &&
|
||||||
|
(*((PLONGLONG)(&guid1) + 1) == *((PLONGLONG)(&guid2) + 1)) );
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
#define IsEqualGUIDAligned(guid1, guid2) \
|
||||||
|
( (*(PLONGLONG)(guid1) == *(PLONGLONG)(guid2)) && \
|
||||||
|
(*((PLONGLONG)(guid1) + 1) == *((PLONGLONG)(guid2) + 1)) )
|
||||||
|
#endif /* __cplusplus */
|
||||||
|
#endif /* !__IID_ALIGNED__ */
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
LT_DONT_CARE,
|
||||||
|
LT_LOWEST_LATENCY
|
||||||
|
} LATENCY_TIME;
|
||||||
|
|
||||||
|
#define MAXIMUM_SUSPEND_COUNT MAXCHAR
|
||||||
|
|
||||||
|
#define MAXIMUM_FILENAME_LENGTH 256
|
||||||
|
|
||||||
|
#define OBJ_NAME_PATH_SEPARATOR ((WCHAR)L'\\')
|
||||||
|
|
||||||
|
#define OBJECT_TYPE_CREATE (0x0001)
|
||||||
|
#define OBJECT_TYPE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0x1)
|
||||||
|
|
||||||
|
#define DIRECTORY_QUERY (0x0001)
|
||||||
|
#define DIRECTORY_TRAVERSE (0x0002)
|
||||||
|
#define DIRECTORY_CREATE_OBJECT (0x0004)
|
||||||
|
#define DIRECTORY_CREATE_SUBDIRECTORY (0x0008)
|
||||||
|
#define DIRECTORY_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0xF)
|
||||||
|
|
||||||
|
#define EVENT_QUERY_STATE (0x0001)
|
||||||
|
#define EVENT_MODIFY_STATE (0x0002)
|
||||||
|
#define EVENT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x3)
|
||||||
|
|
||||||
|
#define SEMAPHORE_QUERY_STATE (0x0001)
|
||||||
|
#define SEMAPHORE_MODIFY_STATE (0x0002)
|
||||||
|
#define SEMAPHORE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x3)
|
||||||
|
|
||||||
|
#define SYMBOLIC_LINK_QUERY 0x0001
|
||||||
|
#define SYMBOLIC_LINK_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0x1)
|
||||||
|
|
||||||
|
#define DUPLICATE_CLOSE_SOURCE 0x00000001
|
||||||
|
#define DUPLICATE_SAME_ACCESS 0x00000002
|
||||||
|
#define DUPLICATE_SAME_ATTRIBUTES 0x00000004
|
||||||
|
|
||||||
|
/* Global debug flag */
|
||||||
|
extern ULONG NtGlobalFlag;
|
||||||
|
|
||||||
|
/* Service Start Types */
|
||||||
|
#define SERVICE_BOOT_START 0x00000000
|
||||||
|
#define SERVICE_SYSTEM_START 0x00000001
|
||||||
|
#define SERVICE_AUTO_START 0x00000002
|
||||||
|
#define SERVICE_DEMAND_START 0x00000003
|
||||||
|
#define SERVICE_DISABLED 0x00000004
|
||||||
|
|
||||||
|
#ifndef _TRACEHANDLE_DEFINED
|
||||||
|
#define _TRACEHANDLE_DEFINED
|
||||||
|
typedef ULONG64 TRACEHANDLE, *PTRACEHANDLE;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* !_WDMDDK_ */
|
47
include/xdk/wmifuncs.h
Normal file
47
include/xdk/wmifuncs.h
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
/******************************************************************************
|
||||||
|
* WMI Library Support Functions *
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
#ifdef RUN_WPP
|
||||||
|
|
||||||
|
#if (NTDDI_VERSION >= NTDDI_WINXP)
|
||||||
|
NTKERNELAPI
|
||||||
|
NTSTATUS
|
||||||
|
DDKCDECLAPI
|
||||||
|
WmiTraceMessage(
|
||||||
|
IN TRACEHANDLE LoggerHandle,
|
||||||
|
IN ULONG MessageFlags,
|
||||||
|
IN LPGUID MessageGuid,
|
||||||
|
IN USHORT MessageNumber,
|
||||||
|
IN ...);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if (NTDDI_VERSION >= NTDDI_WINXP)
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
WmiQueryTraceInformation(
|
||||||
|
IN TRACE_INFORMATION_CLASS TraceInformationClass,
|
||||||
|
OUT PVOID TraceInformation,
|
||||||
|
IN ULONG TraceInformationLength,
|
||||||
|
OUT PULONG RequiredLength OPTIONAL,
|
||||||
|
IN PVOID Buffer OPTIONAL);
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
/* FIXME: Get va_list from where? */
|
||||||
|
NTKERNELAPI
|
||||||
|
NTSTATUS
|
||||||
|
DDKCDECLAPI
|
||||||
|
WmiTraceMessageVa(
|
||||||
|
IN TRACEHANDLE LoggerHandle,
|
||||||
|
IN ULONG MessageFlags,
|
||||||
|
IN LPGUID MessageGuid,
|
||||||
|
IN USHORT MessageNumber,
|
||||||
|
IN va_list MessageArgList);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
164
include/xdk/x86/ke.h
Normal file
164
include/xdk/x86/ke.h
Normal file
|
@ -0,0 +1,164 @@
|
||||||
|
$if (_WDMDDK_)
|
||||||
|
/** Kernel definitions for x86 **/
|
||||||
|
|
||||||
|
/* Interrupt request levels */
|
||||||
|
#define PASSIVE_LEVEL 0
|
||||||
|
#define LOW_LEVEL 0
|
||||||
|
#define APC_LEVEL 1
|
||||||
|
#define DISPATCH_LEVEL 2
|
||||||
|
#define CMCI_LEVEL 5
|
||||||
|
#define PROFILE_LEVEL 27
|
||||||
|
#define CLOCK1_LEVEL 28
|
||||||
|
#define CLOCK2_LEVEL 28
|
||||||
|
#define IPI_LEVEL 29
|
||||||
|
#define POWER_LEVEL 30
|
||||||
|
#define HIGH_LEVEL 31
|
||||||
|
#define CLOCK_LEVEL CLOCK2_LEVEL
|
||||||
|
|
||||||
|
#define KIP0PCRADDRESS 0xffdff000
|
||||||
|
#define KI_USER_SHARED_DATA 0xffdf0000
|
||||||
|
#define SharedUserData ((KUSER_SHARED_DATA * CONST)KI_USER_SHARED_DATA)
|
||||||
|
|
||||||
|
#define PAGE_SIZE 0x1000
|
||||||
|
#define PAGE_SHIFT 12L
|
||||||
|
#define KeGetDcacheFillSize() 1L
|
||||||
|
|
||||||
|
#define EFLAG_SIGN 0x8000
|
||||||
|
#define EFLAG_ZERO 0x4000
|
||||||
|
#define EFLAG_SELECT (EFLAG_SIGN | EFLAG_ZERO)
|
||||||
|
|
||||||
|
#define RESULT_NEGATIVE ((EFLAG_SIGN & ~EFLAG_ZERO) & EFLAG_SELECT)
|
||||||
|
#define RESULT_ZERO ((~EFLAG_SIGN & EFLAG_ZERO) & EFLAG_SELECT)
|
||||||
|
#define RESULT_POSITIVE ((~EFLAG_SIGN & ~EFLAG_ZERO) & EFLAG_SELECT)
|
||||||
|
|
||||||
|
|
||||||
|
typedef struct _KFLOATING_SAVE {
|
||||||
|
ULONG ControlWord;
|
||||||
|
ULONG StatusWord;
|
||||||
|
ULONG ErrorOffset;
|
||||||
|
ULONG ErrorSelector;
|
||||||
|
ULONG DataOffset;
|
||||||
|
ULONG DataSelector;
|
||||||
|
ULONG Cr0NpxState;
|
||||||
|
ULONG Spare1;
|
||||||
|
} KFLOATING_SAVE, *PKFLOATING_SAVE;
|
||||||
|
|
||||||
|
extern NTKERNELAPI volatile KSYSTEM_TIME KeTickCount;
|
||||||
|
|
||||||
|
#define YieldProcessor _mm_pause
|
||||||
|
|
||||||
|
FORCEINLINE
|
||||||
|
VOID
|
||||||
|
KeMemoryBarrier(
|
||||||
|
VOID)
|
||||||
|
{
|
||||||
|
volatile LONG Barrier;
|
||||||
|
#if defined(__GNUC__)
|
||||||
|
__asm__ __volatile__ ("xchg %%eax, %0" : : "m" (Barrier) : "%eax");
|
||||||
|
#elif defined(_MSC_VER)
|
||||||
|
__asm xchg [Barrier], eax
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
NTHALAPI
|
||||||
|
VOID
|
||||||
|
FASTCALL
|
||||||
|
KfLowerIrql(
|
||||||
|
IN KIRQL NewIrql);
|
||||||
|
#define KeLowerIrql(a) KfLowerIrql(a)
|
||||||
|
|
||||||
|
NTHALAPI
|
||||||
|
KIRQL
|
||||||
|
FASTCALL
|
||||||
|
KfRaiseIrql(
|
||||||
|
IN KIRQL NewIrql);
|
||||||
|
#define KeRaiseIrql(a,b) *(b) = KfRaiseIrql(a)
|
||||||
|
|
||||||
|
NTHALAPI
|
||||||
|
KIRQL
|
||||||
|
DDKAPI
|
||||||
|
KeRaiseIrqlToDpcLevel(
|
||||||
|
VOID);
|
||||||
|
|
||||||
|
NTHALAPI
|
||||||
|
KIRQL
|
||||||
|
DDKAPI
|
||||||
|
KeRaiseIrqlToSynchLevel(
|
||||||
|
VOID);
|
||||||
|
|
||||||
|
NTHALAPI
|
||||||
|
KIRQL
|
||||||
|
FASTCALL
|
||||||
|
KfAcquireSpinLock(
|
||||||
|
IN PKSPIN_LOCK SpinLock);
|
||||||
|
#define KeAcquireSpinLock(a,b) *(b) = KfAcquireSpinLock(a)
|
||||||
|
|
||||||
|
NTHALAPI
|
||||||
|
VOID
|
||||||
|
FASTCALL
|
||||||
|
KfReleaseSpinLock(
|
||||||
|
IN PKSPIN_LOCK SpinLock,
|
||||||
|
IN KIRQL NewIrql);
|
||||||
|
#define KeReleaseSpinLock(a,b) KfReleaseSpinLock(a,b)
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
FASTCALL
|
||||||
|
KefAcquireSpinLockAtDpcLevel(
|
||||||
|
IN PKSPIN_LOCK SpinLock);
|
||||||
|
#define KeAcquireSpinLockAtDpcLevel(SpinLock) KefAcquireSpinLockAtDpcLevel(SpinLock)
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
FASTCALL
|
||||||
|
KefReleaseSpinLockFromDpcLevel(
|
||||||
|
IN PKSPIN_LOCK SpinLock);
|
||||||
|
#define KeReleaseSpinLockFromDpcLevel(SpinLock) KefReleaseSpinLockFromDpcLevel(SpinLock)
|
||||||
|
|
||||||
|
NTSYSAPI
|
||||||
|
PKTHREAD
|
||||||
|
NTAPI
|
||||||
|
KeGetCurrentThread(
|
||||||
|
VOID);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
KeSaveFloatingPointState(
|
||||||
|
OUT PKFLOATING_SAVE FloatSave);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
KeRestoreFloatingPointState(
|
||||||
|
IN PKFLOATING_SAVE FloatSave);
|
||||||
|
|
||||||
|
/* VOID
|
||||||
|
* KeFlushIoBuffers(
|
||||||
|
* IN PMDL Mdl,
|
||||||
|
* IN BOOLEAN ReadOperation,
|
||||||
|
* IN BOOLEAN DmaOperation)
|
||||||
|
*/
|
||||||
|
#define KeFlushIoBuffers(_Mdl, _ReadOperation, _DmaOperation)
|
||||||
|
|
||||||
|
/* x86 and x64 performs a 0x2C interrupt */
|
||||||
|
#define DbgRaiseAssertionFailure __int2c
|
||||||
|
|
||||||
|
FORCEINLINE
|
||||||
|
VOID
|
||||||
|
_KeQueryTickCount(
|
||||||
|
OUT PLARGE_INTEGER CurrentCount)
|
||||||
|
{
|
||||||
|
for (;;)
|
||||||
|
{
|
||||||
|
CurrentCount->HighPart = KeTickCount.High1Time;
|
||||||
|
CurrentCount->LowPart = KeTickCount.LowPart;
|
||||||
|
if (CurrentCount->HighPart == KeTickCount.High2Time) break;
|
||||||
|
YieldProcessor();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#define KeQueryTickCount(CurrentCount) _KeQueryTickCount(CurrentCount)
|
||||||
|
|
||||||
|
$endif
|
||||||
|
|
||||||
|
|
683
include/xdk/zwfuncs.h
Normal file
683
include/xdk/zwfuncs.h
Normal file
|
@ -0,0 +1,683 @@
|
||||||
|
/******************************************************************************
|
||||||
|
* ZwXxx Functions *
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
/* Constants */
|
||||||
|
#define NtCurrentProcess() ( (HANDLE)(LONG_PTR) -1 )
|
||||||
|
#define ZwCurrentProcess() NtCurrentProcess()
|
||||||
|
#define NtCurrentThread() ( (HANDLE)(LONG_PTR) -2 )
|
||||||
|
#define ZwCurrentThread() NtCurrentThread()
|
||||||
|
|
||||||
|
#if (NTDDI_VERSION >= NTDDI_WIN2K)
|
||||||
|
|
||||||
|
NTSYSAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
ZwClose(
|
||||||
|
IN HANDLE Handle);
|
||||||
|
|
||||||
|
NTSYSAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
ZwCreateDirectoryObject(
|
||||||
|
OUT PHANDLE DirectoryHandle,
|
||||||
|
IN ACCESS_MASK DesiredAccess,
|
||||||
|
IN POBJECT_ATTRIBUTES ObjectAttributes);
|
||||||
|
|
||||||
|
NTSYSAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
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);
|
||||||
|
|
||||||
|
NTSYSAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
ZwCreateKey(
|
||||||
|
OUT PHANDLE KeyHandle,
|
||||||
|
IN ACCESS_MASK DesiredAccess,
|
||||||
|
IN POBJECT_ATTRIBUTES ObjectAttributes,
|
||||||
|
IN ULONG TitleIndex,
|
||||||
|
IN PUNICODE_STRING Class OPTIONAL,
|
||||||
|
IN ULONG CreateOptions,
|
||||||
|
OUT PULONG Disposition OPTIONAL);
|
||||||
|
|
||||||
|
NTSYSAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
ZwCreateSection(
|
||||||
|
OUT PHANDLE SectionHandle,
|
||||||
|
IN ACCESS_MASK DesiredAccess,
|
||||||
|
IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
|
||||||
|
IN PLARGE_INTEGER MaximumSize OPTIONAL,
|
||||||
|
IN ULONG SectionPageProtection,
|
||||||
|
IN ULONG AllocationAttributes,
|
||||||
|
IN HANDLE FileHandle OPTIONAL);
|
||||||
|
|
||||||
|
NTSYSAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
ZwDeleteKey(
|
||||||
|
IN HANDLE KeyHandle);
|
||||||
|
|
||||||
|
NTSYSAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
ZwDeleteValueKey(
|
||||||
|
IN HANDLE KeyHandle,
|
||||||
|
IN PUNICODE_STRING ValueName);
|
||||||
|
|
||||||
|
NTSYSAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
ZwEnumerateKey(
|
||||||
|
IN HANDLE KeyHandle,
|
||||||
|
IN ULONG Index,
|
||||||
|
IN KEY_INFORMATION_CLASS KeyInformationClass,
|
||||||
|
OUT PVOID KeyInformation OPTIONAL,
|
||||||
|
IN ULONG Length,
|
||||||
|
OUT PULONG ResultLength);
|
||||||
|
|
||||||
|
NTSYSAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
ZwEnumerateValueKey(
|
||||||
|
IN HANDLE KeyHandle,
|
||||||
|
IN ULONG Index,
|
||||||
|
IN KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass,
|
||||||
|
OUT PVOID KeyValueInformation OPTIONAL,
|
||||||
|
IN ULONG Length,
|
||||||
|
OUT PULONG ResultLength);
|
||||||
|
|
||||||
|
NTSYSAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
ZwFlushKey(
|
||||||
|
IN HANDLE KeyHandle);
|
||||||
|
|
||||||
|
NTSYSAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
ZwLoadDriver(
|
||||||
|
IN PUNICODE_STRING DriverServiceName);
|
||||||
|
|
||||||
|
NTSYSAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
ZwMakeTemporaryObject(
|
||||||
|
IN HANDLE Handle);
|
||||||
|
|
||||||
|
NTSYSAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
ZwMapViewOfSection(
|
||||||
|
IN HANDLE SectionHandle,
|
||||||
|
IN HANDLE ProcessHandle,
|
||||||
|
IN OUT PVOID *BaseAddress,
|
||||||
|
IN ULONG_PTR ZeroBits,
|
||||||
|
IN SIZE_T CommitSize,
|
||||||
|
IN OUT PLARGE_INTEGER SectionOffset OPTIONAL,
|
||||||
|
IN OUT PSIZE_T ViewSize,
|
||||||
|
IN SECTION_INHERIT InheritDisposition,
|
||||||
|
IN ULONG AllocationType,
|
||||||
|
IN ULONG Protect);
|
||||||
|
|
||||||
|
NTSYSAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
ZwOpenFile(
|
||||||
|
OUT PHANDLE FileHandle,
|
||||||
|
IN ACCESS_MASK DesiredAccess,
|
||||||
|
IN POBJECT_ATTRIBUTES ObjectAttributes,
|
||||||
|
OUT PIO_STATUS_BLOCK IoStatusBlock,
|
||||||
|
IN ULONG ShareAccess,
|
||||||
|
IN ULONG OpenOptions);
|
||||||
|
|
||||||
|
NTSYSAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
ZwOpenKey(
|
||||||
|
OUT PHANDLE KeyHandle,
|
||||||
|
IN ACCESS_MASK DesiredAccess,
|
||||||
|
IN POBJECT_ATTRIBUTES ObjectAttributes);
|
||||||
|
|
||||||
|
NTSYSAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
ZwOpenSection(
|
||||||
|
OUT PHANDLE SectionHandle,
|
||||||
|
IN ACCESS_MASK DesiredAccess,
|
||||||
|
IN POBJECT_ATTRIBUTES ObjectAttributes);
|
||||||
|
|
||||||
|
NTSYSAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
ZwOpenSymbolicLinkObject(
|
||||||
|
OUT PHANDLE LinkHandle,
|
||||||
|
IN ACCESS_MASK DesiredAccess,
|
||||||
|
IN POBJECT_ATTRIBUTES ObjectAttributes);
|
||||||
|
|
||||||
|
NTSYSAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
ZwQueryInformationFile(
|
||||||
|
IN HANDLE FileHandle,
|
||||||
|
OUT PIO_STATUS_BLOCK IoStatusBlock,
|
||||||
|
OUT PVOID FileInformation,
|
||||||
|
IN ULONG Length,
|
||||||
|
IN FILE_INFORMATION_CLASS FileInformationClass);
|
||||||
|
|
||||||
|
NTSYSAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
ZwQueryKey(
|
||||||
|
IN HANDLE KeyHandle,
|
||||||
|
IN KEY_INFORMATION_CLASS KeyInformationClass,
|
||||||
|
OUT PVOID KeyInformation OPTIONAL,
|
||||||
|
IN ULONG Length,
|
||||||
|
OUT PULONG ResultLength);
|
||||||
|
|
||||||
|
NTSYSAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
ZwQuerySymbolicLinkObject(
|
||||||
|
IN HANDLE LinkHandle,
|
||||||
|
IN OUT PUNICODE_STRING LinkTarget,
|
||||||
|
OUT PULONG ReturnedLength OPTIONAL);
|
||||||
|
|
||||||
|
NTSYSAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
ZwQueryValueKey(
|
||||||
|
IN HANDLE KeyHandle,
|
||||||
|
IN PUNICODE_STRING ValueName,
|
||||||
|
IN KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass,
|
||||||
|
OUT PVOID KeyValueInformation OPTIONAL,
|
||||||
|
IN ULONG Length,
|
||||||
|
OUT PULONG ResultLength);
|
||||||
|
|
||||||
|
NTSYSAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
ZwReadFile(
|
||||||
|
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 Length,
|
||||||
|
IN PLARGE_INTEGER ByteOffset OPTIONAL,
|
||||||
|
IN PULONG Key OPTIONAL);
|
||||||
|
|
||||||
|
NTSYSAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
ZwSetInformationFile(
|
||||||
|
IN HANDLE FileHandle,
|
||||||
|
OUT PIO_STATUS_BLOCK IoStatusBlock,
|
||||||
|
IN PVOID FileInformation,
|
||||||
|
IN ULONG Length,
|
||||||
|
IN FILE_INFORMATION_CLASS FileInformationClass);
|
||||||
|
|
||||||
|
NTSYSAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
ZwSetValueKey(
|
||||||
|
IN HANDLE KeyHandle,
|
||||||
|
IN PUNICODE_STRING ValueName,
|
||||||
|
IN ULONG TitleIndex OPTIONAL,
|
||||||
|
IN ULONG Type,
|
||||||
|
IN PVOID Data OPTIONAL,
|
||||||
|
IN ULONG DataSize);
|
||||||
|
|
||||||
|
NTSYSAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
ZwUnloadDriver(
|
||||||
|
IN PUNICODE_STRING DriverServiceName);
|
||||||
|
|
||||||
|
NTSYSAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
ZwUnmapViewOfSection(
|
||||||
|
IN HANDLE ProcessHandle,
|
||||||
|
IN PVOID BaseAddress OPTIONAL);
|
||||||
|
|
||||||
|
NTSYSAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
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 OPTIONAL,
|
||||||
|
IN PULONG Key OPTIONAL);
|
||||||
|
|
||||||
|
NTSYSAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
ZwQueryFullAttributesFile(
|
||||||
|
IN POBJECT_ATTRIBUTES ObjectAttributes,
|
||||||
|
OUT PFILE_NETWORK_OPEN_INFORMATION FileInformation);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if (NTDDI_VERSION >= NTDDI_WIN2003)
|
||||||
|
|
||||||
|
NTSYSCALLAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
ZwOpenEvent(
|
||||||
|
OUT PHANDLE EventHandle,
|
||||||
|
IN ACCESS_MASK DesiredAccess,
|
||||||
|
IN POBJECT_ATTRIBUTES ObjectAttributes);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if (NTDDI_VERSION >= NTDDI_VISTA)
|
||||||
|
|
||||||
|
NTSYSAPI
|
||||||
|
NTSTATUS
|
||||||
|
ZwCreateKeyTransacted(
|
||||||
|
OUT PHANDLE KeyHandle,
|
||||||
|
IN ACCESS_MASK DesiredAccess,
|
||||||
|
IN POBJECT_ATTRIBUTES ObjectAttributes,
|
||||||
|
IN ULONG TitleIndex,
|
||||||
|
IN PUNICODE_STRING Class OPTIONAL,
|
||||||
|
IN ULONG CreateOptions,
|
||||||
|
IN HANDLE TransactionHandle,
|
||||||
|
OUT PULONG Disposition OPTIONAL);
|
||||||
|
|
||||||
|
NTSYSAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
ZwOpenKeyTransacted(
|
||||||
|
OUT PHANDLE KeyHandle,
|
||||||
|
IN ACCESS_MASK DesiredAccess,
|
||||||
|
IN POBJECT_ATTRIBUTES ObjectAttributes,
|
||||||
|
IN HANDLE TransactionHandle);
|
||||||
|
|
||||||
|
NTSYSCALLAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
ZwCreateTransactionManager(
|
||||||
|
OUT PHANDLE TmHandle,
|
||||||
|
IN ACCESS_MASK DesiredAccess,
|
||||||
|
IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
|
||||||
|
IN PUNICODE_STRING LogFileName OPTIONAL,
|
||||||
|
IN ULONG CreateOptions OPTIONAL,
|
||||||
|
IN ULONG CommitStrength OPTIONAL);
|
||||||
|
|
||||||
|
NTSYSCALLAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
ZwOpenTransactionManager(
|
||||||
|
OUT PHANDLE TmHandle,
|
||||||
|
IN ACCESS_MASK DesiredAccess,
|
||||||
|
IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
|
||||||
|
IN PUNICODE_STRING LogFileName OPTIONAL,
|
||||||
|
IN LPGUID TmIdentity OPTIONAL,
|
||||||
|
IN ULONG OpenOptions OPTIONAL);
|
||||||
|
|
||||||
|
NTSYSCALLAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
ZwRollforwardTransactionManager(
|
||||||
|
IN HANDLE TransactionManagerHandle,
|
||||||
|
IN PLARGE_INTEGER TmVirtualClock OPTIONAL);
|
||||||
|
|
||||||
|
NTSYSCALLAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
ZwRecoverTransactionManager(
|
||||||
|
IN HANDLE TransactionManagerHandle);
|
||||||
|
|
||||||
|
NTSYSCALLAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
ZwQueryInformationTransactionManager(
|
||||||
|
IN HANDLE TransactionManagerHandle,
|
||||||
|
IN TRANSACTIONMANAGER_INFORMATION_CLASS TransactionManagerInformationClass,
|
||||||
|
OUT PVOID TransactionManagerInformation,
|
||||||
|
IN ULONG TransactionManagerInformationLength,
|
||||||
|
OUT PULONG ReturnLength OPTIONAL);
|
||||||
|
|
||||||
|
NTSYSCALLAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
ZwSetInformationTransactionManager(
|
||||||
|
IN HANDLE TmHandle,
|
||||||
|
IN TRANSACTIONMANAGER_INFORMATION_CLASS TransactionManagerInformationClass,
|
||||||
|
IN PVOID TransactionManagerInformation,
|
||||||
|
IN ULONG TransactionManagerInformationLength);
|
||||||
|
|
||||||
|
NTSYSCALLAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
ZwEnumerateTransactionObject(
|
||||||
|
IN HANDLE RootObjectHandle OPTIONAL,
|
||||||
|
IN KTMOBJECT_TYPE QueryType,
|
||||||
|
IN OUT PKTMOBJECT_CURSOR ObjectCursor,
|
||||||
|
IN ULONG ObjectCursorLength,
|
||||||
|
OUT PULONG ReturnLength);
|
||||||
|
|
||||||
|
NTSYSCALLAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
ZwCreateTransaction(
|
||||||
|
OUT PHANDLE TransactionHandle,
|
||||||
|
IN ACCESS_MASK DesiredAccess,
|
||||||
|
IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
|
||||||
|
IN LPGUID Uow OPTIONAL,
|
||||||
|
IN HANDLE TmHandle OPTIONAL,
|
||||||
|
IN ULONG CreateOptions OPTIONAL,
|
||||||
|
IN ULONG IsolationLevel OPTIONAL,
|
||||||
|
IN ULONG IsolationFlags OPTIONAL,
|
||||||
|
IN PLARGE_INTEGER Timeout OPTIONAL,
|
||||||
|
IN PUNICODE_STRING Description OPTIONAL);
|
||||||
|
|
||||||
|
NTSYSCALLAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
ZwOpenTransaction(
|
||||||
|
OUT PHANDLE TransactionHandle,
|
||||||
|
IN ACCESS_MASK DesiredAccess,
|
||||||
|
IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
|
||||||
|
IN LPGUID Uow,
|
||||||
|
IN HANDLE TmHandle OPTIONAL);
|
||||||
|
|
||||||
|
NTSYSCALLAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
ZwQueryInformationTransaction(
|
||||||
|
IN HANDLE TransactionHandle,
|
||||||
|
IN TRANSACTION_INFORMATION_CLASS TransactionInformationClass,
|
||||||
|
OUT PVOID TransactionInformation,
|
||||||
|
IN ULONG TransactionInformationLength,
|
||||||
|
OUT PULONG ReturnLength OPTIONAL);
|
||||||
|
|
||||||
|
NTSYSCALLAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
ZwSetInformationTransaction(
|
||||||
|
IN HANDLE TransactionHandle,
|
||||||
|
IN TRANSACTION_INFORMATION_CLASS TransactionInformationClass,
|
||||||
|
IN PVOID TransactionInformation,
|
||||||
|
IN ULONG TransactionInformationLength);
|
||||||
|
|
||||||
|
NTSYSCALLAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
ZwCommitTransaction(
|
||||||
|
IN HANDLE TransactionHandle,
|
||||||
|
IN BOOLEAN Wait);
|
||||||
|
|
||||||
|
NTSYSCALLAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
ZwRollbackTransaction(
|
||||||
|
IN HANDLE TransactionHandle,
|
||||||
|
IN BOOLEAN Wait);
|
||||||
|
|
||||||
|
NTSYSCALLAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
ZwCreateResourceManager(
|
||||||
|
OUT PHANDLE ResourceManagerHandle,
|
||||||
|
IN ACCESS_MASK DesiredAccess,
|
||||||
|
IN HANDLE TmHandle,
|
||||||
|
IN LPGUID ResourceManagerGuid OPTIONAL,
|
||||||
|
IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
|
||||||
|
IN ULONG CreateOptions OPTIONAL,
|
||||||
|
IN PUNICODE_STRING Description OPTIONAL);
|
||||||
|
|
||||||
|
NTSYSCALLAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
ZwOpenResourceManager(
|
||||||
|
OUT PHANDLE ResourceManagerHandle,
|
||||||
|
IN ACCESS_MASK DesiredAccess,
|
||||||
|
IN HANDLE TmHandle,
|
||||||
|
IN LPGUID ResourceManagerGuid,
|
||||||
|
IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL);
|
||||||
|
|
||||||
|
NTSYSCALLAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
ZwRecoverResourceManager(
|
||||||
|
IN HANDLE ResourceManagerHandle);
|
||||||
|
|
||||||
|
NTSYSCALLAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
ZwGetNotificationResourceManager(
|
||||||
|
IN HANDLE ResourceManagerHandle,
|
||||||
|
OUT PTRANSACTION_NOTIFICATION TransactionNotification,
|
||||||
|
IN ULONG NotificationLength,
|
||||||
|
IN PLARGE_INTEGER Timeout,
|
||||||
|
IN PULONG ReturnLength OPTIONAL,
|
||||||
|
IN ULONG Asynchronous,
|
||||||
|
IN ULONG_PTR AsynchronousContext OPTIONAL);
|
||||||
|
|
||||||
|
NTSYSCALLAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
ZwQueryInformationResourceManager(
|
||||||
|
IN HANDLE ResourceManagerHandle,
|
||||||
|
IN RESOURCEMANAGER_INFORMATION_CLASS ResourceManagerInformationClass,
|
||||||
|
OUT PVOID ResourceManagerInformation,
|
||||||
|
IN ULONG ResourceManagerInformationLength,
|
||||||
|
IN PULONG ReturnLength OPTIONAL);
|
||||||
|
|
||||||
|
NTSYSCALLAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
ZwSetInformationResourceManager(
|
||||||
|
IN HANDLE ResourceManagerHandle,
|
||||||
|
IN RESOURCEMANAGER_INFORMATION_CLASS ResourceManagerInformationClass,
|
||||||
|
IN PVOID ResourceManagerInformation,
|
||||||
|
IN ULONG ResourceManagerInformationLength);
|
||||||
|
|
||||||
|
NTSYSCALLAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
ZwCreateEnlistment(
|
||||||
|
OUT PHANDLE EnlistmentHandle,
|
||||||
|
IN ACCESS_MASK DesiredAccess,
|
||||||
|
IN HANDLE ResourceManagerHandle,
|
||||||
|
IN HANDLE TransactionHandle,
|
||||||
|
IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
|
||||||
|
IN ULONG CreateOptions OPTIONAL,
|
||||||
|
IN NOTIFICATION_MASK NotificationMask,
|
||||||
|
IN PVOID EnlistmentKey OPTIONAL);
|
||||||
|
|
||||||
|
NTSYSCALLAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
ZwOpenEnlistment(
|
||||||
|
OUT PHANDLE EnlistmentHandle,
|
||||||
|
IN ACCESS_MASK DesiredAccess,
|
||||||
|
IN HANDLE RmHandle,
|
||||||
|
IN LPGUID EnlistmentGuid,
|
||||||
|
IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL);
|
||||||
|
|
||||||
|
NTSYSCALLAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
ZwQueryInformationEnlistment(
|
||||||
|
IN HANDLE EnlistmentHandle,
|
||||||
|
IN ENLISTMENT_INFORMATION_CLASS EnlistmentInformationClass,
|
||||||
|
OUT PVOID EnlistmentInformation,
|
||||||
|
IN ULONG EnlistmentInformationLength,
|
||||||
|
IN PULONG ReturnLength OPTIONAL);
|
||||||
|
|
||||||
|
NTSYSCALLAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
ZwSetInformationEnlistment(
|
||||||
|
IN HANDLE EnlistmentHandle,
|
||||||
|
IN ENLISTMENT_INFORMATION_CLASS EnlistmentInformationClass,
|
||||||
|
IN PVOID EnlistmentInformation,
|
||||||
|
IN ULONG EnlistmentInformationLength);
|
||||||
|
|
||||||
|
NTSYSCALLAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
ZwRecoverEnlistment(
|
||||||
|
IN HANDLE EnlistmentHandle,
|
||||||
|
IN PVOID EnlistmentKey OPTIONAL);
|
||||||
|
|
||||||
|
NTSYSCALLAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
ZwPrePrepareEnlistment(
|
||||||
|
IN HANDLE EnlistmentHandle,
|
||||||
|
IN PLARGE_INTEGER TmVirtualClock OPTIONAL);
|
||||||
|
|
||||||
|
NTSYSCALLAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
ZwPrepareEnlistment(
|
||||||
|
IN HANDLE EnlistmentHandle,
|
||||||
|
IN PLARGE_INTEGER TmVirtualClock OPTIONAL);
|
||||||
|
|
||||||
|
NTSYSCALLAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
ZwCommitEnlistment(
|
||||||
|
IN HANDLE EnlistmentHandle,
|
||||||
|
IN PLARGE_INTEGER TmVirtualClock OPTIONAL);
|
||||||
|
|
||||||
|
NTSYSCALLAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
ZwRollbackEnlistment(
|
||||||
|
IN HANDLE EnlistmentHandle,
|
||||||
|
IN PLARGE_INTEGER TmVirtualClock OPTIONAL);
|
||||||
|
|
||||||
|
NTSYSCALLAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
ZwPrePrepareComplete(
|
||||||
|
IN HANDLE EnlistmentHandle,
|
||||||
|
IN PLARGE_INTEGER TmVirtualClock OPTIONAL);
|
||||||
|
|
||||||
|
NTSYSCALLAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
ZwPrepareComplete(
|
||||||
|
IN HANDLE EnlistmentHandle,
|
||||||
|
IN PLARGE_INTEGER TmVirtualClock OPTIONAL);
|
||||||
|
|
||||||
|
NTSYSCALLAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
ZwCommitComplete(
|
||||||
|
IN HANDLE EnlistmentHandle,
|
||||||
|
IN PLARGE_INTEGER TmVirtualClock OPTIONAL);
|
||||||
|
|
||||||
|
NTSYSCALLAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
ZwReadOnlyEnlistment(
|
||||||
|
IN HANDLE EnlistmentHandle,
|
||||||
|
IN PLARGE_INTEGER TmVirtualClock OPTIONAL);
|
||||||
|
|
||||||
|
NTSYSCALLAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
ZwRollbackComplete(
|
||||||
|
IN HANDLE EnlistmentHandle,
|
||||||
|
IN PLARGE_INTEGER TmVirtualClock OPTIONAL);
|
||||||
|
|
||||||
|
NTSYSCALLAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
ZwSinglePhaseReject(
|
||||||
|
IN HANDLE EnlistmentHandle,
|
||||||
|
IN PLARGE_INTEGER TmVirtualClock OPTIONAL);
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if (NTDDI_VERSION >= NTDDI_WIN7)
|
||||||
|
|
||||||
|
NTSYSAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
ZwOpenKeyEx(
|
||||||
|
OUT PHANDLE KeyHandle,
|
||||||
|
IN ACCESS_MASK DesiredAccess,
|
||||||
|
IN POBJECT_ATTRIBUTES ObjectAttributes,
|
||||||
|
IN ULONG OpenOptions);
|
||||||
|
|
||||||
|
NTSYSAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
ZwOpenKeyTransactedEx(
|
||||||
|
OUT PHANDLE KeyHandle,
|
||||||
|
IN ACCESS_MASK DesiredAccess,
|
||||||
|
IN POBJECT_ATTRIBUTES ObjectAttributes,
|
||||||
|
IN ULONG OpenOptions,
|
||||||
|
IN HANDLE TransactionHandle);
|
||||||
|
|
||||||
|
NTSYSAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
ZwNotifyChangeMultipleKeys(
|
||||||
|
IN HANDLE MasterKeyHandle,
|
||||||
|
IN ULONG Count OPTIONAL,
|
||||||
|
IN OBJECT_ATTRIBUTES SubordinateObjects[] OPTIONAL,
|
||||||
|
IN HANDLE Event OPTIONAL,
|
||||||
|
IN PIO_APC_ROUTINE ApcRoutine OPTIONAL,
|
||||||
|
IN PVOID ApcContext OPTIONAL,
|
||||||
|
OUT PIO_STATUS_BLOCK IoStatusBlock,
|
||||||
|
IN ULONG CompletionFilter,
|
||||||
|
IN BOOLEAN WatchTree,
|
||||||
|
OUT PVOID Buffer OPTIONAL,
|
||||||
|
IN ULONG BufferSize,
|
||||||
|
IN BOOLEAN Asynchronous);
|
||||||
|
|
||||||
|
NTSYSAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
ZwQueryMultipleValueKey(
|
||||||
|
IN HANDLE KeyHandle,
|
||||||
|
IN OUT PKEY_VALUE_ENTRY ValueEntries,
|
||||||
|
IN ULONG EntryCount,
|
||||||
|
OUT PVOID ValueBuffer,
|
||||||
|
IN OUT PULONG BufferLength,
|
||||||
|
OUT PULONG RequiredBufferLength OPTIONAL);
|
||||||
|
|
||||||
|
NTSYSAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
ZwRenameKey(
|
||||||
|
IN HANDLE KeyHandle,
|
||||||
|
IN PUNICODE_STRING NewName);
|
||||||
|
|
||||||
|
NTSYSAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
ZwSetInformationKey(
|
||||||
|
IN HANDLE KeyHandle,
|
||||||
|
IN KEY_SET_INFORMATION_CLASS KeySetInformationClass,
|
||||||
|
IN PVOID KeySetInformation,
|
||||||
|
IN ULONG KeySetInformationLength);
|
||||||
|
|
||||||
|
#endif
|
Loading…
Add table
Add a link
Reference in a new issue