mirror of
https://github.com/reactos/reactos.git
synced 2025-08-03 20:05:41 +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