mirror of
https://github.com/reactos/reactos.git
synced 2025-04-21 20:50:29 +00:00
[NTOSKRNL]
- Remove duplicate SINGLE_GROUP_LEGACY_API definition. [PSDK] - Add missing GROUP_AFFINITY structure. [NTDDK] - Remove ExFreePool definition. [NDK] - Remove duplicate PROCESSOR_CACHE_TYPE and CACHE_DESCRIPTOR definitions (they now exist in wdm.h). [XDK] - Move several definitions to their appropriate places. - Add PROCESSOR_CALLBACK_FUNCTION, INVALID_PROCESSOR_INDEX, XSTATE_SAVE, LOOKASIDE_MINIMUM_BLOCK_SIZE and several missing Ke*, KBUGCHECK_*, KB_ADD_PAGES_FLAG_*, EXCEPTION_*, KE_PROCESSOR_CHANGE_*, Ex*, FirstEntrySList, and EX_*, RESOURCE_* definitions. - Update ExAllocateFromNPagedLookasideList, ExAllocateFromPagedLookasideList, ExFreeToPagedLookasideList, OWNER_ENTRY and ERESOURCE. - Group some related definitions. [WDM] - Update wdm.h to reflect XDK changes. svn path=/branches/header-work/; revision=46287
This commit is contained in:
parent
ea3378dc87
commit
a896fedfea
12 changed files with 809 additions and 304 deletions
|
@ -2439,10 +2439,6 @@ typedef struct _ZONE_HEADER {
|
||||||
ULONG TotalSegmentSize;
|
ULONG TotalSegmentSize;
|
||||||
} ZONE_HEADER, *PZONE_HEADER;
|
} ZONE_HEADER, *PZONE_HEADER;
|
||||||
|
|
||||||
#if defined(POOL_TAGGING)
|
|
||||||
#define ExFreePool(a) ExFreePoolWithTag(a,0)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define PROTECTED_POOL 0x80000000
|
#define PROTECTED_POOL 0x80000000
|
||||||
|
|
||||||
/* Executive Functions */
|
/* Executive Functions */
|
||||||
|
|
|
@ -696,6 +696,23 @@ typedef struct _SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX {
|
||||||
#define EXCEPTION_NONCONTINUABLE 1
|
#define EXCEPTION_NONCONTINUABLE 1
|
||||||
#define EXCEPTION_MAXIMUM_PARAMETERS 15
|
#define EXCEPTION_MAXIMUM_PARAMETERS 15
|
||||||
|
|
||||||
|
#define EXCEPTION_DIVIDED_BY_ZERO 0
|
||||||
|
#define EXCEPTION_DEBUG 1
|
||||||
|
#define EXCEPTION_NMI 2
|
||||||
|
#define EXCEPTION_INT3 3
|
||||||
|
#define EXCEPTION_BOUND_CHECK 5
|
||||||
|
#define EXCEPTION_INVALID_OPCODE 6
|
||||||
|
#define EXCEPTION_NPX_NOT_AVAILABLE 7
|
||||||
|
#define EXCEPTION_DOUBLE_FAULT 8
|
||||||
|
#define EXCEPTION_NPX_OVERRUN 9
|
||||||
|
#define EXCEPTION_INVALID_TSS 0x0A
|
||||||
|
#define EXCEPTION_SEGMENT_NOT_PRESENT 0x0B
|
||||||
|
#define EXCEPTION_STACK_FAULT 0x0C
|
||||||
|
#define EXCEPTION_GP_FAULT 0x0D
|
||||||
|
#define EXCEPTION_RESERVED_TRAP 0x0F
|
||||||
|
#define EXCEPTION_NPX_ERROR 0x010
|
||||||
|
#define EXCEPTION_ALIGNMENT_CHECK 0x011
|
||||||
|
|
||||||
typedef struct _EXCEPTION_RECORD {
|
typedef struct _EXCEPTION_RECORD {
|
||||||
NTSTATUS ExceptionCode;
|
NTSTATUS ExceptionCode;
|
||||||
ULONG ExceptionFlags;
|
ULONG ExceptionFlags;
|
||||||
|
@ -740,11 +757,48 @@ typedef enum _KBUGCHECK_CALLBACK_REASON {
|
||||||
struct _KBUGCHECK_REASON_CALLBACK_RECORD;
|
struct _KBUGCHECK_REASON_CALLBACK_RECORD;
|
||||||
|
|
||||||
typedef VOID
|
typedef VOID
|
||||||
(NTAPI *PKBUGCHECK_REASON_CALLBACK_ROUTINE)(
|
(NTAPI KBUGCHECK_REASON_CALLBACK_ROUTINE)(
|
||||||
IN KBUGCHECK_CALLBACK_REASON Reason,
|
IN KBUGCHECK_CALLBACK_REASON Reason,
|
||||||
IN struct _KBUGCHECK_REASON_CALLBACK_RECORD *Record,
|
IN struct _KBUGCHECK_REASON_CALLBACK_RECORD *Record,
|
||||||
IN OUT PVOID ReasonSpecificData,
|
IN OUT PVOID ReasonSpecificData,
|
||||||
IN ULONG ReasonSpecificDataLength);
|
IN ULONG ReasonSpecificDataLength);
|
||||||
|
typedef KBUGCHECK_REASON_CALLBACK_ROUTINE *PKBUGCHECK_REASON_CALLBACK_ROUTINE;
|
||||||
|
|
||||||
|
typedef struct _KBUGCHECK_ADD_PAGES {
|
||||||
|
IN OUT PVOID Context;
|
||||||
|
IN OUT ULONG Flags;
|
||||||
|
IN ULONG BugCheckCode;
|
||||||
|
OUT ULONG_PTR Address;
|
||||||
|
OUT ULONG_PTR Count;
|
||||||
|
} KBUGCHECK_ADD_PAGES, *PKBUGCHECK_ADD_PAGES;
|
||||||
|
|
||||||
|
typedef struct _KBUGCHECK_SECONDARY_DUMP_DATA {
|
||||||
|
IN PVOID InBuffer;
|
||||||
|
IN ULONG InBufferLength;
|
||||||
|
IN ULONG MaximumAllowed;
|
||||||
|
OUT GUID Guid;
|
||||||
|
OUT PVOID OutBuffer;
|
||||||
|
OUT ULONG OutBufferLength;
|
||||||
|
} KBUGCHECK_SECONDARY_DUMP_DATA, *PKBUGCHECK_SECONDARY_DUMP_DATA;
|
||||||
|
|
||||||
|
typedef enum _KBUGCHECK_DUMP_IO_TYPE {
|
||||||
|
KbDumpIoInvalid,
|
||||||
|
KbDumpIoHeader,
|
||||||
|
KbDumpIoBody,
|
||||||
|
KbDumpIoSecondaryData,
|
||||||
|
KbDumpIoComplete
|
||||||
|
} KBUGCHECK_DUMP_IO_TYPE;
|
||||||
|
|
||||||
|
typedef struct _KBUGCHECK_DUMP_IO {
|
||||||
|
IN ULONG64 Offset;
|
||||||
|
IN PVOID Buffer;
|
||||||
|
IN ULONG BufferLength;
|
||||||
|
IN KBUGCHECK_DUMP_IO_TYPE Type;
|
||||||
|
} KBUGCHECK_DUMP_IO, *PKBUGCHECK_DUMP_IO;
|
||||||
|
|
||||||
|
#define KB_ADD_PAGES_FLAG_VIRTUAL_ADDRESS 0x00000001UL
|
||||||
|
#define KB_ADD_PAGES_FLAG_PHYSICAL_ADDRESS 0x00000002UL
|
||||||
|
#define KB_ADD_PAGES_FLAG_ADDITIONAL_RANGES_EXIST 0x80000000UL
|
||||||
|
|
||||||
typedef struct _KBUGCHECK_REASON_CALLBACK_RECORD {
|
typedef struct _KBUGCHECK_REASON_CALLBACK_RECORD {
|
||||||
LIST_ENTRY Entry;
|
LIST_ENTRY Entry;
|
||||||
|
@ -764,9 +818,10 @@ typedef enum _KBUGCHECK_BUFFER_DUMP_STATE {
|
||||||
} KBUGCHECK_BUFFER_DUMP_STATE;
|
} KBUGCHECK_BUFFER_DUMP_STATE;
|
||||||
|
|
||||||
typedef VOID
|
typedef VOID
|
||||||
(NTAPI *PKBUGCHECK_CALLBACK_ROUTINE)(
|
(NTAPI KBUGCHECK_CALLBACK_ROUTINE)(
|
||||||
IN PVOID Buffer,
|
IN PVOID Buffer,
|
||||||
IN ULONG Length);
|
IN ULONG Length);
|
||||||
|
typedef KBUGCHECK_CALLBACK_ROUTINE *PKBUGCHECK_CALLBACK_ROUTINE;
|
||||||
|
|
||||||
typedef struct _KBUGCHECK_CALLBACK_RECORD {
|
typedef struct _KBUGCHECK_CALLBACK_RECORD {
|
||||||
LIST_ENTRY Entry;
|
LIST_ENTRY Entry;
|
||||||
|
@ -779,9 +834,10 @@ typedef struct _KBUGCHECK_CALLBACK_RECORD {
|
||||||
} KBUGCHECK_CALLBACK_RECORD, *PKBUGCHECK_CALLBACK_RECORD;
|
} KBUGCHECK_CALLBACK_RECORD, *PKBUGCHECK_CALLBACK_RECORD;
|
||||||
|
|
||||||
typedef BOOLEAN
|
typedef BOOLEAN
|
||||||
(NTAPI *PNMI_CALLBACK)(
|
(NTAPI NMI_CALLBACK)(
|
||||||
IN PVOID Context,
|
IN PVOID Context,
|
||||||
IN BOOLEAN Handled);
|
IN BOOLEAN Handled);
|
||||||
|
typedef NMI_CALLBACK *PNMI_CALLBACK;
|
||||||
|
|
||||||
typedef enum _TRACE_INFORMATION_CLASS {
|
typedef enum _TRACE_INFORMATION_CLASS {
|
||||||
TraceIdClass,
|
TraceIdClass,
|
||||||
|
@ -798,6 +854,32 @@ typedef enum _TRACE_INFORMATION_CLASS {
|
||||||
MaxTraceInformationClass
|
MaxTraceInformationClass
|
||||||
} TRACE_INFORMATION_CLASS;
|
} TRACE_INFORMATION_CLASS;
|
||||||
|
|
||||||
|
typedef enum _KE_PROCESSOR_CHANGE_NOTIFY_STATE {
|
||||||
|
KeProcessorAddStartNotify = 0,
|
||||||
|
KeProcessorAddCompleteNotify,
|
||||||
|
KeProcessorAddFailureNotify
|
||||||
|
} KE_PROCESSOR_CHANGE_NOTIFY_STATE;
|
||||||
|
|
||||||
|
typedef struct _KE_PROCESSOR_CHANGE_NOTIFY_CONTEXT {
|
||||||
|
KE_PROCESSOR_CHANGE_NOTIFY_STATE State;
|
||||||
|
ULONG NtNumber;
|
||||||
|
NTSTATUS Status;
|
||||||
|
#if (NTDDI_VERSION >= NTDDI_WIN7)
|
||||||
|
PROCESSOR_NUMBER ProcNumber;
|
||||||
|
#endif
|
||||||
|
} KE_PROCESSOR_CHANGE_NOTIFY_CONTEXT, *PKE_PROCESSOR_CHANGE_NOTIFY_CONTEXT;
|
||||||
|
|
||||||
|
typedef VOID
|
||||||
|
(NTAPI PROCESSOR_CALLBACK_FUNCTION)(
|
||||||
|
IN PVOID CallbackContext,
|
||||||
|
IN PKE_PROCESSOR_CHANGE_NOTIFY_CONTEXT ChangeContext,
|
||||||
|
IN OUT PNTSTATUS OperationStatus);
|
||||||
|
typedef PROCESSOR_CALLBACK_FUNCTION *PPROCESSOR_CALLBACK_FUNCTION;
|
||||||
|
|
||||||
|
#define KE_PROCESSOR_CHANGE_ADD_EXISTING 1
|
||||||
|
|
||||||
|
#define INVALID_PROCESSOR_INDEX 0xffffffff
|
||||||
|
|
||||||
typedef enum _KINTERRUPT_POLARITY {
|
typedef enum _KINTERRUPT_POLARITY {
|
||||||
InterruptPolarityUnknown,
|
InterruptPolarityUnknown,
|
||||||
InterruptActiveHigh,
|
InterruptActiveHigh,
|
||||||
|
@ -998,8 +1080,9 @@ typedef struct _KIPI_COUNTS {
|
||||||
} KIPI_COUNTS, *PKIPI_COUNTS;
|
} KIPI_COUNTS, *PKIPI_COUNTS;
|
||||||
|
|
||||||
typedef ULONG_PTR
|
typedef ULONG_PTR
|
||||||
(NTAPI *PKIPI_BROADCAST_WORKER)(
|
(NTAPI KIPI_BROADCAST_WORKER)(
|
||||||
IN ULONG_PTR Argument);
|
IN ULONG_PTR Argument);
|
||||||
|
typedef KIPI_BROADCAST_WORKER *PKIPI_BROADCAST_WORKER;
|
||||||
|
|
||||||
typedef ULONG_PTR KSPIN_LOCK, *PKSPIN_LOCK;
|
typedef ULONG_PTR KSPIN_LOCK, *PKSPIN_LOCK;
|
||||||
|
|
||||||
|
@ -1357,6 +1440,30 @@ typedef struct _XSTATE_CONTEXT {
|
||||||
#endif
|
#endif
|
||||||
} XSTATE_CONTEXT, *PXSTATE_CONTEXT;
|
} XSTATE_CONTEXT, *PXSTATE_CONTEXT;
|
||||||
|
|
||||||
|
typedef struct _XSTATE_SAVE {
|
||||||
|
#if defined(_AMD64_)
|
||||||
|
struct _XSTATE_SAVE* Prev;
|
||||||
|
struct _KTHREAD* Thread;
|
||||||
|
UCHAR Level;
|
||||||
|
XSTATE_CONTEXT XStateContext;
|
||||||
|
#elif defined(_IA64_)
|
||||||
|
ULONG Dummy;
|
||||||
|
#elif defined(_X86_)
|
||||||
|
union {
|
||||||
|
struct {
|
||||||
|
LONG64 Reserved1;
|
||||||
|
ULONG Reserved2;
|
||||||
|
struct _XSTATE_SAVE* Prev;
|
||||||
|
PXSAVE_AREA Reserved3;
|
||||||
|
struct _KTHREAD* Thread;
|
||||||
|
PVOID Reserved4;
|
||||||
|
UCHAR Level;
|
||||||
|
};
|
||||||
|
XSTATE_CONTEXT XStateContext;
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
} XSTATE_SAVE, *PXSTATE_SAVE;
|
||||||
|
|
||||||
#ifdef _X86_
|
#ifdef _X86_
|
||||||
|
|
||||||
#define MAXIMUM_SUPPORTED_EXTENSION 512
|
#define MAXIMUM_SUPPORTED_EXTENSION 512
|
||||||
|
@ -1689,10 +1796,22 @@ typedef struct LOOKASIDE_ALIGN _NPAGED_LOOKASIDE_LIST {
|
||||||
#endif
|
#endif
|
||||||
} NPAGED_LOOKASIDE_LIST, *PNPAGED_LOOKASIDE_LIST;
|
} NPAGED_LOOKASIDE_LIST, *PNPAGED_LOOKASIDE_LIST;
|
||||||
|
|
||||||
|
#define LOOKASIDE_MINIMUM_BLOCK_SIZE (RTL_SIZEOF_THROUGH_FIELD (SLIST_ENTRY, Next))
|
||||||
|
|
||||||
typedef struct _LOOKASIDE_LIST_EX {
|
typedef struct _LOOKASIDE_LIST_EX {
|
||||||
GENERAL_LOOKASIDE_POOL L;
|
GENERAL_LOOKASIDE_POOL L;
|
||||||
} LOOKASIDE_LIST_EX;
|
} LOOKASIDE_LIST_EX;
|
||||||
|
|
||||||
|
#if (NTDDI_VERSION >= NTDDI_VISTA)
|
||||||
|
|
||||||
|
#define EX_LOOKASIDE_LIST_EX_FLAGS_RAISE_ON_FAIL 0x00000001UL
|
||||||
|
#define EX_LOOKASIDE_LIST_EX_FLAGS_FAIL_NO_RAISE 0x00000002UL
|
||||||
|
|
||||||
|
#define EX_MAXIMUM_LOOKASIDE_DEPTH_BASE 256
|
||||||
|
#define EX_MAXIMUM_LOOKASIDE_DEPTH_LIMIT 1024
|
||||||
|
|
||||||
|
#endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
|
||||||
|
|
||||||
typedef struct _EX_RUNDOWN_REF {
|
typedef struct _EX_RUNDOWN_REF {
|
||||||
__GNU_EXTENSION union {
|
__GNU_EXTENSION union {
|
||||||
volatile ULONG_PTR Count;
|
volatile ULONG_PTR Count;
|
||||||
|
@ -1702,9 +1821,17 @@ typedef struct _EX_RUNDOWN_REF {
|
||||||
|
|
||||||
typedef struct _EX_RUNDOWN_REF_CACHE_AWARE *PEX_RUNDOWN_REF_CACHE_AWARE;
|
typedef struct _EX_RUNDOWN_REF_CACHE_AWARE *PEX_RUNDOWN_REF_CACHE_AWARE;
|
||||||
|
|
||||||
|
typedef enum _WORK_QUEUE_TYPE {
|
||||||
|
CriticalWorkQueue,
|
||||||
|
DelayedWorkQueue,
|
||||||
|
HyperCriticalWorkQueue,
|
||||||
|
MaximumWorkQueue
|
||||||
|
} WORK_QUEUE_TYPE;
|
||||||
|
|
||||||
typedef VOID
|
typedef VOID
|
||||||
(NTAPI *PWORKER_THREAD_ROUTINE)(
|
(NTAPI WORKER_THREAD_ROUTINE)(
|
||||||
IN PVOID Parameter);
|
IN PVOID Parameter);
|
||||||
|
typedef WORKER_THREAD_ROUTINE *PWORKER_THREAD_ROUTINE;
|
||||||
|
|
||||||
typedef struct _WORK_QUEUE_ITEM {
|
typedef struct _WORK_QUEUE_ITEM {
|
||||||
LIST_ENTRY List;
|
LIST_ENTRY List;
|
||||||
|
@ -1712,6 +1839,70 @@ typedef struct _WORK_QUEUE_ITEM {
|
||||||
volatile PVOID Parameter;
|
volatile PVOID Parameter;
|
||||||
} WORK_QUEUE_ITEM, *PWORK_QUEUE_ITEM;
|
} WORK_QUEUE_ITEM, *PWORK_QUEUE_ITEM;
|
||||||
|
|
||||||
|
typedef ULONG_PTR ERESOURCE_THREAD, *PERESOURCE_THREAD;
|
||||||
|
|
||||||
|
typedef struct _OWNER_ENTRY {
|
||||||
|
ERESOURCE_THREAD OwnerThread;
|
||||||
|
union {
|
||||||
|
struct {
|
||||||
|
ULONG IoPriorityBoosted:1;
|
||||||
|
ULONG OwnerReferenced:1;
|
||||||
|
ULONG OwnerCount:30;
|
||||||
|
};
|
||||||
|
ULONG TableSize;
|
||||||
|
};
|
||||||
|
} OWNER_ENTRY, *POWNER_ENTRY;
|
||||||
|
|
||||||
|
typedef struct _ERESOURCE {
|
||||||
|
LIST_ENTRY SystemResourcesList;
|
||||||
|
POWNER_ENTRY OwnerTable;
|
||||||
|
SHORT ActiveCount;
|
||||||
|
USHORT Flag;
|
||||||
|
volatile PKSEMAPHORE SharedWaiters;
|
||||||
|
volatile PKEVENT ExclusiveWaiters;
|
||||||
|
OWNER_ENTRY OwnerEntry;
|
||||||
|
ULONG ActiveEntries;
|
||||||
|
ULONG ContentionCount;
|
||||||
|
ULONG NumberOfSharedWaiters;
|
||||||
|
ULONG NumberOfExclusiveWaiters;
|
||||||
|
#if defined(_WIN64)
|
||||||
|
PVOID Reserved2;
|
||||||
|
#endif
|
||||||
|
__GNU_EXTENSION union {
|
||||||
|
PVOID Address;
|
||||||
|
ULONG_PTR CreatorBackTraceIndex;
|
||||||
|
};
|
||||||
|
KSPIN_LOCK SpinLock;
|
||||||
|
} ERESOURCE, *PERESOURCE;
|
||||||
|
|
||||||
|
/* ERESOURCE.Flag */
|
||||||
|
#define ResourceNeverExclusive 0x0010
|
||||||
|
#define ResourceReleaseByOtherThread 0x0020
|
||||||
|
#define ResourceOwnedExclusive 0x0080
|
||||||
|
|
||||||
|
#define RESOURCE_HASH_TABLE_SIZE 64
|
||||||
|
|
||||||
|
typedef struct _RESOURCE_HASH_ENTRY {
|
||||||
|
LIST_ENTRY ListEntry;
|
||||||
|
PVOID Address;
|
||||||
|
ULONG ContentionCount;
|
||||||
|
ULONG Number;
|
||||||
|
} RESOURCE_HASH_ENTRY, *PRESOURCE_HASH_ENTRY;
|
||||||
|
|
||||||
|
typedef struct _RESOURCE_PERFORMANCE_DATA {
|
||||||
|
ULONG ActiveResourceCount;
|
||||||
|
ULONG TotalResourceCount;
|
||||||
|
ULONG ExclusiveAcquire;
|
||||||
|
ULONG SharedFirstLevel;
|
||||||
|
ULONG SharedSecondLevel;
|
||||||
|
ULONG StarveFirstLevel;
|
||||||
|
ULONG StarveSecondLevel;
|
||||||
|
ULONG WaitForExclusive;
|
||||||
|
ULONG OwnerTableExpands;
|
||||||
|
ULONG MaximumTableExpand;
|
||||||
|
LIST_ENTRY HashTable[RESOURCE_HASH_TABLE_SIZE];
|
||||||
|
} RESOURCE_PERFORMANCE_DATA, *PRESOURCE_PERFORMANCE_DATA;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
|
@ -4492,42 +4683,6 @@ typedef struct _FILE_SFIO_VOLUME_INFORMATION {
|
||||||
#define FM_LOCK_WAITER_WOKEN (0x2)
|
#define FM_LOCK_WAITER_WOKEN (0x2)
|
||||||
#define FM_LOCK_WAITER_INC (0x4)
|
#define FM_LOCK_WAITER_INC (0x4)
|
||||||
|
|
||||||
typedef ULONG_PTR ERESOURCE_THREAD, *PERESOURCE_THREAD;
|
|
||||||
|
|
||||||
typedef struct _OWNER_ENTRY {
|
|
||||||
ERESOURCE_THREAD OwnerThread;
|
|
||||||
_ANONYMOUS_UNION union {
|
|
||||||
LONG OwnerCount;
|
|
||||||
ULONG TableSize;
|
|
||||||
} DUMMYUNIONNAME;
|
|
||||||
} OWNER_ENTRY, *POWNER_ENTRY;
|
|
||||||
|
|
||||||
typedef struct _ERESOURCE {
|
|
||||||
LIST_ENTRY SystemResourcesList;
|
|
||||||
POWNER_ENTRY OwnerTable;
|
|
||||||
SHORT ActiveCount;
|
|
||||||
USHORT Flag;
|
|
||||||
volatile PKSEMAPHORE SharedWaiters;
|
|
||||||
volatile PKEVENT ExclusiveWaiters;
|
|
||||||
OWNER_ENTRY OwnerEntry;
|
|
||||||
ULONG ActiveEntries;
|
|
||||||
ULONG ContentionCount;
|
|
||||||
ULONG NumberOfSharedWaiters;
|
|
||||||
ULONG NumberOfExclusiveWaiters;
|
|
||||||
__GNU_EXTENSION union {
|
|
||||||
PVOID Address;
|
|
||||||
ULONG_PTR CreatorBackTraceIndex;
|
|
||||||
};
|
|
||||||
KSPIN_LOCK SpinLock;
|
|
||||||
} ERESOURCE, *PERESOURCE;
|
|
||||||
|
|
||||||
/* ERESOURCE.Flag */
|
|
||||||
#define ResourceNeverExclusive 0x0010
|
|
||||||
#define ResourceReleaseByOtherThread 0x0020
|
|
||||||
#define ResourceOwnedExclusive 0x0080
|
|
||||||
|
|
||||||
#define RESOURCE_HASH_TABLE_SIZE 64
|
|
||||||
|
|
||||||
typedef BOOLEAN
|
typedef BOOLEAN
|
||||||
(NTAPI *PFAST_IO_CHECK_IF_POSSIBLE)(
|
(NTAPI *PFAST_IO_CHECK_IF_POSSIBLE)(
|
||||||
IN struct _FILE_OBJECT *FileObject,
|
IN struct _FILE_OBJECT *FileObject,
|
||||||
|
@ -5569,13 +5724,6 @@ typedef enum _DEVICE_TEXT_TYPE {
|
||||||
DeviceTextLocationInformation
|
DeviceTextLocationInformation
|
||||||
} DEVICE_TEXT_TYPE, *PDEVICE_TEXT_TYPE;
|
} DEVICE_TEXT_TYPE, *PDEVICE_TEXT_TYPE;
|
||||||
|
|
||||||
typedef enum _WORK_QUEUE_TYPE {
|
|
||||||
CriticalWorkQueue,
|
|
||||||
DelayedWorkQueue,
|
|
||||||
HyperCriticalWorkQueue,
|
|
||||||
MaximumWorkQueue
|
|
||||||
} WORK_QUEUE_TYPE;
|
|
||||||
|
|
||||||
typedef BOOLEAN
|
typedef BOOLEAN
|
||||||
(*PGPE_SERVICE_ROUTINE2)(
|
(*PGPE_SERVICE_ROUTINE2)(
|
||||||
PVOID ObjectContext,
|
PVOID ObjectContext,
|
||||||
|
@ -6119,14 +6267,14 @@ NTHALAPI
|
||||||
KIRQL
|
KIRQL
|
||||||
FASTCALL
|
FASTCALL
|
||||||
KfAcquireSpinLock(
|
KfAcquireSpinLock(
|
||||||
IN PKSPIN_LOCK SpinLock);
|
IN OUT PKSPIN_LOCK SpinLock);
|
||||||
#define KeAcquireSpinLock(a,b) *(b) = KfAcquireSpinLock(a)
|
#define KeAcquireSpinLock(a,b) *(b) = KfAcquireSpinLock(a)
|
||||||
|
|
||||||
NTHALAPI
|
NTHALAPI
|
||||||
VOID
|
VOID
|
||||||
FASTCALL
|
FASTCALL
|
||||||
KfReleaseSpinLock(
|
KfReleaseSpinLock(
|
||||||
IN PKSPIN_LOCK SpinLock,
|
IN OUT PKSPIN_LOCK SpinLock,
|
||||||
IN KIRQL NewIrql);
|
IN KIRQL NewIrql);
|
||||||
#define KeReleaseSpinLock(a,b) KfReleaseSpinLock(a,b)
|
#define KeReleaseSpinLock(a,b) KfReleaseSpinLock(a,b)
|
||||||
|
|
||||||
|
@ -6134,14 +6282,14 @@ NTKERNELAPI
|
||||||
VOID
|
VOID
|
||||||
FASTCALL
|
FASTCALL
|
||||||
KefAcquireSpinLockAtDpcLevel(
|
KefAcquireSpinLockAtDpcLevel(
|
||||||
IN PKSPIN_LOCK SpinLock);
|
IN OUT PKSPIN_LOCK SpinLock);
|
||||||
#define KeAcquireSpinLockAtDpcLevel(SpinLock) KefAcquireSpinLockAtDpcLevel(SpinLock)
|
#define KeAcquireSpinLockAtDpcLevel(SpinLock) KefAcquireSpinLockAtDpcLevel(SpinLock)
|
||||||
|
|
||||||
NTKERNELAPI
|
NTKERNELAPI
|
||||||
VOID
|
VOID
|
||||||
FASTCALL
|
FASTCALL
|
||||||
KefReleaseSpinLockFromDpcLevel(
|
KefReleaseSpinLockFromDpcLevel(
|
||||||
IN PKSPIN_LOCK SpinLock);
|
IN OUT PKSPIN_LOCK SpinLock);
|
||||||
#define KeReleaseSpinLockFromDpcLevel(SpinLock) KefReleaseSpinLockFromDpcLevel(SpinLock)
|
#define KeReleaseSpinLockFromDpcLevel(SpinLock) KefReleaseSpinLockFromDpcLevel(SpinLock)
|
||||||
|
|
||||||
NTSYSAPI
|
NTSYSAPI
|
||||||
|
@ -8004,6 +8152,7 @@ KeClearEvent(
|
||||||
|
|
||||||
#if (NTDDI_VERSION >= NTDDI_WIN2K)
|
#if (NTDDI_VERSION >= NTDDI_WIN2K)
|
||||||
|
|
||||||
|
#if defined(_NTDDK_) || defined(_NTIFS_)
|
||||||
NTKERNELAPI
|
NTKERNELAPI
|
||||||
VOID
|
VOID
|
||||||
NTAPI
|
NTAPI
|
||||||
|
@ -8011,6 +8160,7 @@ ProbeForRead(
|
||||||
IN CONST VOID *Address, /* CONST is added */
|
IN CONST VOID *Address, /* CONST is added */
|
||||||
IN SIZE_T Length,
|
IN SIZE_T Length,
|
||||||
IN ULONG Alignment);
|
IN ULONG Alignment);
|
||||||
|
#endif /* defined(_NTDDK_) || defined(_NTIFS_) */
|
||||||
|
|
||||||
NTKERNELAPI
|
NTKERNELAPI
|
||||||
VOID
|
VOID
|
||||||
|
@ -8594,6 +8744,12 @@ NTAPI
|
||||||
KeSetSystemAffinityThreadEx(
|
KeSetSystemAffinityThreadEx(
|
||||||
IN KAFFINITY Affinity);
|
IN KAFFINITY Affinity);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
KeRevertToUserAffinityThreadEx(
|
||||||
|
IN KAFFINITY Affinity);
|
||||||
|
|
||||||
NTKERNELAPI
|
NTKERNELAPI
|
||||||
ULONG
|
ULONG
|
||||||
NTAPI
|
NTAPI
|
||||||
|
@ -8751,6 +8907,17 @@ NTAPI
|
||||||
KeRestoreExtendedProcessorState(
|
KeRestoreExtendedProcessorState(
|
||||||
IN PXSTATE_SAVE XStateSave);
|
IN PXSTATE_SAVE XStateSave);
|
||||||
|
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
KeGetProcessorNumberFromIndex(
|
||||||
|
IN ULONG ProcIndex,
|
||||||
|
OUT PPROCESSOR_NUMBER ProcNumber);
|
||||||
|
|
||||||
|
ULONG
|
||||||
|
NTAPI
|
||||||
|
KeGetProcessorIndexFromNumber(
|
||||||
|
IN PPROCESSOR_NUMBER ProcNumber);
|
||||||
|
|
||||||
#endif /* (NTDDI_VERSION >= NTDDI_WIN7) */
|
#endif /* (NTDDI_VERSION >= NTDDI_WIN7) */
|
||||||
|
|
||||||
#if !defined(_IA64_)
|
#if !defined(_IA64_)
|
||||||
|
@ -11115,19 +11282,64 @@ PoCreatePowerRequest(
|
||||||
|
|
||||||
#define ExInitializeSListHead InitializeSListHead
|
#define ExInitializeSListHead InitializeSListHead
|
||||||
|
|
||||||
#if defined(_X86_)
|
#if defined(_NTHAL_) && defined(_X86_)
|
||||||
#if defined(_NTHAL_)
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
FASTCALL
|
||||||
|
ExiAcquireFastMutex(
|
||||||
|
IN OUT PFAST_MUTEX FastMutex);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
FASTCALL
|
||||||
|
ExiReleaseFastMutex(
|
||||||
|
IN OUT PFAST_MUTEX FastMutex);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
BOOLEAN
|
||||||
|
FASTCALL
|
||||||
|
ExiTryToAcquireFastMutex(
|
||||||
|
IN OUT PFAST_MUTEX FastMutex);
|
||||||
|
|
||||||
#define ExAcquireFastMutex ExiAcquireFastMutex
|
#define ExAcquireFastMutex ExiAcquireFastMutex
|
||||||
#define ExReleaseFastMutex ExiReleaseFastMutex
|
#define ExReleaseFastMutex ExiReleaseFastMutex
|
||||||
#define ExTryToAcquireFastMutex ExiTryToAcquireFastMutex
|
#define ExTryToAcquireFastMutex ExiTryToAcquireFastMutex
|
||||||
#endif
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
#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);
|
||||||
|
|
||||||
|
#endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */
|
||||||
|
|
||||||
|
#endif /* defined(_NTHAL_) && defined(_X86_) */
|
||||||
|
|
||||||
|
#if defined(_X86_)
|
||||||
#define ExInterlockedAddUlong ExfInterlockedAddUlong
|
#define ExInterlockedAddUlong ExfInterlockedAddUlong
|
||||||
#define ExInterlockedInsertHeadList ExfInterlockedInsertHeadList
|
#define ExInterlockedInsertHeadList ExfInterlockedInsertHeadList
|
||||||
#define ExInterlockedInsertTailList ExfInterlockedInsertTailList
|
#define ExInterlockedInsertTailList ExfInterlockedInsertTailList
|
||||||
#define ExInterlockedRemoveHeadList ExfInterlockedRemoveHeadList
|
#define ExInterlockedRemoveHeadList ExfInterlockedRemoveHeadList
|
||||||
#define ExInterlockedPopEntryList ExfInterlockedPopEntryList
|
#define ExInterlockedPopEntryList ExfInterlockedPopEntryList
|
||||||
#define ExInterlockedPushEntryList ExfInterlockedPushEntryList
|
#define ExInterlockedPushEntryList ExfInterlockedPushEntryList
|
||||||
#endif
|
#endif /* defined(_X86_) */
|
||||||
|
|
||||||
#if defined(_WIN64)
|
#if defined(_WIN64)
|
||||||
|
|
||||||
|
@ -11176,9 +11388,10 @@ NTKERNELAPI
|
||||||
PSINGLE_LIST_ENTRY
|
PSINGLE_LIST_ENTRY
|
||||||
FASTCALL
|
FASTCALL
|
||||||
ExInterlockedFlushSList(
|
ExInterlockedFlushSList(
|
||||||
IN PSLIST_HEADER ListHead);
|
IN OUT PSLIST_HEADER ListHead);
|
||||||
|
|
||||||
#if defined(_WIN2K_COMPAT_SLIST_USAGE) && defined(_X86_)
|
#if defined(_WIN2K_COMPAT_SLIST_USAGE) && defined(_X86_)
|
||||||
|
|
||||||
NTKERNELAPI
|
NTKERNELAPI
|
||||||
PSINGLE_LIST_ENTRY
|
PSINGLE_LIST_ENTRY
|
||||||
FASTCALL
|
FASTCALL
|
||||||
|
@ -11193,11 +11406,60 @@ ExInterlockedPushEntrySList(
|
||||||
IN PSLIST_HEADER ListHead,
|
IN PSLIST_HEADER ListHead,
|
||||||
IN PSINGLE_LIST_ENTRY ListEntry,
|
IN PSINGLE_LIST_ENTRY ListEntry,
|
||||||
IN PKSPIN_LOCK Lock);
|
IN PKSPIN_LOCK Lock);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
PVOID
|
||||||
|
NTAPI
|
||||||
|
ExAllocateFromPagedLookasideList(
|
||||||
|
IN OUT PPAGED_LOOKASIDE_LIST Lookaside);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
ExFreeToPagedLookasideList(
|
||||||
|
IN OUT PPAGED_LOOKASIDE_LIST Lookaside,
|
||||||
|
IN PVOID Entry);
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
#define ExInterlockedPopEntrySList(_ListHead, _Lock) \
|
#define ExInterlockedPopEntrySList(_ListHead, _Lock) \
|
||||||
InterlockedPopEntrySList(_ListHead)
|
InterlockedPopEntrySList(_ListHead)
|
||||||
#define ExInterlockedPushEntrySList(_ListHead, _ListEntry, _Lock) \
|
#define ExInterlockedPushEntrySList(_ListHead, _ListEntry, _Lock) \
|
||||||
InterlockedPushEntrySList(_ListHead, _ListEntry)
|
InterlockedPushEntrySList(_ListHead, _ListEntry)
|
||||||
|
|
||||||
|
static __inline
|
||||||
|
PVOID
|
||||||
|
ExAllocateFromPagedLookasideList(
|
||||||
|
IN OUT 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
|
||||||
|
ExFreeToPagedLookasideList(
|
||||||
|
IN OUT 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 /* _WIN2K_COMPAT_SLIST_USAGE */
|
#endif /* _WIN2K_COMPAT_SLIST_USAGE */
|
||||||
|
|
||||||
#endif /* !defined(_WIN64) */
|
#endif /* !defined(_WIN64) */
|
||||||
|
@ -11237,24 +11499,6 @@ ExInitializeFastMutex(
|
||||||
|
|
||||||
#if (NTDDI_VERSION >= NTDDI_WIN2K)
|
#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
|
NTKERNELAPI
|
||||||
VOID
|
VOID
|
||||||
FASTCALL
|
FASTCALL
|
||||||
|
@ -11278,7 +11522,7 @@ NTKERNELAPI
|
||||||
BOOLEAN
|
BOOLEAN
|
||||||
NTAPI
|
NTAPI
|
||||||
ExAcquireResourceSharedLite(
|
ExAcquireResourceSharedLite(
|
||||||
IN PERESOURCE Resource,
|
IN OUT PERESOURCE Resource,
|
||||||
IN BOOLEAN Wait);
|
IN BOOLEAN Wait);
|
||||||
|
|
||||||
NTKERNELAPI
|
NTKERNELAPI
|
||||||
|
@ -11302,10 +11546,6 @@ ExAllocatePool(
|
||||||
IN POOL_TYPE PoolType,
|
IN POOL_TYPE PoolType,
|
||||||
IN SIZE_T NumberOfBytes);
|
IN SIZE_T NumberOfBytes);
|
||||||
|
|
||||||
#ifdef POOL_TAGGING
|
|
||||||
#define ExAllocatePool(p,n) ExAllocatePoolWithTag(p,n,' kdD')
|
|
||||||
#endif /* POOL_TAGGING */
|
|
||||||
|
|
||||||
NTKERNELAPI
|
NTKERNELAPI
|
||||||
PVOID
|
PVOID
|
||||||
NTAPI
|
NTAPI
|
||||||
|
@ -11313,10 +11553,6 @@ ExAllocatePoolWithQuota(
|
||||||
IN POOL_TYPE PoolType,
|
IN POOL_TYPE PoolType,
|
||||||
IN SIZE_T NumberOfBytes);
|
IN SIZE_T NumberOfBytes);
|
||||||
|
|
||||||
#ifdef POOL_TAGGING
|
|
||||||
#define ExAllocatePoolWithQuota(p,n) ExAllocatePoolWithQuotaTag(p,n,' kdD')
|
|
||||||
#endif /* POOL_TAGGING */
|
|
||||||
|
|
||||||
NTKERNELAPI
|
NTKERNELAPI
|
||||||
PVOID
|
PVOID
|
||||||
NTAPI
|
NTAPI
|
||||||
|
@ -11327,7 +11563,7 @@ ExAllocatePoolWithQuotaTag(
|
||||||
|
|
||||||
#ifndef POOL_TAGGING
|
#ifndef POOL_TAGGING
|
||||||
#define ExAllocatePoolWithQuotaTag(a,b,c) ExAllocatePoolWithQuota(a,b)
|
#define ExAllocatePoolWithQuotaTag(a,b,c) ExAllocatePoolWithQuota(a,b)
|
||||||
#endif /* POOL_TAGGING */
|
#endif
|
||||||
|
|
||||||
NTKERNELAPI
|
NTKERNELAPI
|
||||||
PVOID
|
PVOID
|
||||||
|
@ -11337,6 +11573,10 @@ ExAllocatePoolWithTag(
|
||||||
IN SIZE_T NumberOfBytes,
|
IN SIZE_T NumberOfBytes,
|
||||||
IN ULONG Tag);
|
IN ULONG Tag);
|
||||||
|
|
||||||
|
#ifndef POOL_TAGGING
|
||||||
|
#define ExAllocatePoolWithTag(a,b,c) ExAllocatePool(a,b)
|
||||||
|
#endif
|
||||||
|
|
||||||
NTKERNELAPI
|
NTKERNELAPI
|
||||||
PVOID
|
PVOID
|
||||||
NTAPI
|
NTAPI
|
||||||
|
@ -11365,7 +11605,7 @@ NTKERNELAPI
|
||||||
VOID
|
VOID
|
||||||
NTAPI
|
NTAPI
|
||||||
ExDeleteNPagedLookasideList(
|
ExDeleteNPagedLookasideList(
|
||||||
IN PNPAGED_LOOKASIDE_LIST Lookaside);
|
IN OUT PNPAGED_LOOKASIDE_LIST Lookaside);
|
||||||
|
|
||||||
NTKERNELAPI
|
NTKERNELAPI
|
||||||
VOID
|
VOID
|
||||||
|
@ -11385,10 +11625,6 @@ NTAPI
|
||||||
ExFreePool(
|
ExFreePool(
|
||||||
IN PVOID P);
|
IN PVOID P);
|
||||||
|
|
||||||
#ifdef POOL_TAGGING
|
|
||||||
#define ExFreePool(P) ExFreePoolWithTag(P, 0)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
NTKERNELAPI
|
NTKERNELAPI
|
||||||
VOID
|
VOID
|
||||||
NTAPI
|
NTAPI
|
||||||
|
@ -11441,7 +11677,7 @@ NTKERNELAPI
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
NTAPI
|
NTAPI
|
||||||
ExInitializeResourceLite(
|
ExInitializeResourceLite(
|
||||||
IN PERESOURCE Resource);
|
OUT PERESOURCE Resource);
|
||||||
|
|
||||||
NTKERNELAPI
|
NTKERNELAPI
|
||||||
LARGE_INTEGER
|
LARGE_INTEGER
|
||||||
|
@ -11465,7 +11701,7 @@ FASTCALL
|
||||||
ExInterlockedAddUlong(
|
ExInterlockedAddUlong(
|
||||||
IN PULONG Addend,
|
IN PULONG Addend,
|
||||||
IN ULONG Increment,
|
IN ULONG Increment,
|
||||||
PKSPIN_LOCK Lock);
|
IN OUT PKSPIN_LOCK Lock);
|
||||||
|
|
||||||
#if defined(_AMD64_) || defined(_IA64_)
|
#if defined(_AMD64_) || defined(_IA64_)
|
||||||
|
|
||||||
|
@ -11502,39 +11738,39 @@ NTKERNELAPI
|
||||||
PLIST_ENTRY
|
PLIST_ENTRY
|
||||||
FASTCALL
|
FASTCALL
|
||||||
ExInterlockedInsertHeadList(
|
ExInterlockedInsertHeadList(
|
||||||
IN PLIST_ENTRY ListHead,
|
IN OUT PLIST_ENTRY ListHead,
|
||||||
IN PLIST_ENTRY ListEntry,
|
IN OUT PLIST_ENTRY ListEntry,
|
||||||
IN PKSPIN_LOCK Lock);
|
IN OUT PKSPIN_LOCK Lock);
|
||||||
|
|
||||||
NTKERNELAPI
|
NTKERNELAPI
|
||||||
PLIST_ENTRY
|
PLIST_ENTRY
|
||||||
FASTCALL
|
FASTCALL
|
||||||
ExInterlockedInsertTailList(
|
ExInterlockedInsertTailList(
|
||||||
IN PLIST_ENTRY ListHead,
|
IN OUT PLIST_ENTRY ListHead,
|
||||||
IN PLIST_ENTRY ListEntry,
|
IN OUT PLIST_ENTRY ListEntry,
|
||||||
IN PKSPIN_LOCK Lock);
|
IN OUT PKSPIN_LOCK Lock);
|
||||||
|
|
||||||
NTKERNELAPI
|
NTKERNELAPI
|
||||||
PSINGLE_LIST_ENTRY
|
PSINGLE_LIST_ENTRY
|
||||||
FASTCALL
|
FASTCALL
|
||||||
ExInterlockedPopEntryList(
|
ExInterlockedPopEntryList(
|
||||||
IN PSINGLE_LIST_ENTRY ListHead,
|
IN OUT PSINGLE_LIST_ENTRY ListHead,
|
||||||
IN PKSPIN_LOCK Lock);
|
IN OUT PKSPIN_LOCK Lock);
|
||||||
|
|
||||||
NTKERNELAPI
|
NTKERNELAPI
|
||||||
PSINGLE_LIST_ENTRY
|
PSINGLE_LIST_ENTRY
|
||||||
FASTCALL
|
FASTCALL
|
||||||
ExInterlockedPushEntryList(
|
ExInterlockedPushEntryList(
|
||||||
IN PSINGLE_LIST_ENTRY ListHead,
|
IN OUT PSINGLE_LIST_ENTRY ListHead,
|
||||||
IN PSINGLE_LIST_ENTRY ListEntry,
|
IN OUT PSINGLE_LIST_ENTRY ListEntry,
|
||||||
IN PKSPIN_LOCK Lock);
|
IN OUT PKSPIN_LOCK Lock);
|
||||||
|
|
||||||
NTKERNELAPI
|
NTKERNELAPI
|
||||||
PLIST_ENTRY
|
PLIST_ENTRY
|
||||||
FASTCALL
|
FASTCALL
|
||||||
ExInterlockedRemoveHeadList(
|
ExInterlockedRemoveHeadList(
|
||||||
IN PLIST_ENTRY ListHead,
|
IN OUT PLIST_ENTRY ListHead,
|
||||||
IN PKSPIN_LOCK Lock);
|
IN OUT PKSPIN_LOCK Lock);
|
||||||
|
|
||||||
NTKERNELAPI
|
NTKERNELAPI
|
||||||
BOOLEAN
|
BOOLEAN
|
||||||
|
@ -11575,7 +11811,7 @@ NTKERNELAPI
|
||||||
VOID
|
VOID
|
||||||
NTAPI
|
NTAPI
|
||||||
ExQueueWorkItem(
|
ExQueueWorkItem(
|
||||||
IN PWORK_QUEUE_ITEM WorkItem,
|
IN OUT PWORK_QUEUE_ITEM WorkItem,
|
||||||
IN WORK_QUEUE_TYPE QueueType);
|
IN WORK_QUEUE_TYPE QueueType);
|
||||||
|
|
||||||
NTKERNELAPI
|
NTKERNELAPI
|
||||||
|
@ -11597,7 +11833,7 @@ NTKERNELAPI
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
NTAPI
|
NTAPI
|
||||||
ExReinitializeResourceLite(
|
ExReinitializeResourceLite(
|
||||||
IN PERESOURCE Resource);
|
IN OUT PERESOURCE Resource);
|
||||||
|
|
||||||
NTKERNELAPI
|
NTKERNELAPI
|
||||||
VOID
|
VOID
|
||||||
|
@ -11722,6 +11958,7 @@ ExSizeOfRundownProtectionCacheAware(VOID);
|
||||||
#endif /* (NTDDI_VERSION >= NTDDI_WS03SP1) */
|
#endif /* (NTDDI_VERSION >= NTDDI_WS03SP1) */
|
||||||
|
|
||||||
#if (NTDDI_VERSION >= NTDDI_VISTA)
|
#if (NTDDI_VERSION >= NTDDI_VISTA)
|
||||||
|
|
||||||
NTKERNELAPI
|
NTKERNELAPI
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
NTAPI
|
NTAPI
|
||||||
|
@ -11734,35 +11971,69 @@ ExInitializeLookasideListEx(
|
||||||
IN SIZE_T Size,
|
IN SIZE_T Size,
|
||||||
IN ULONG Tag,
|
IN ULONG Tag,
|
||||||
IN USHORT Depth);
|
IN USHORT Depth);
|
||||||
#endif
|
|
||||||
|
|
||||||
#if !defined(MIDL_PASS)
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
ExDeleteLookasideListEx(
|
||||||
|
IN OUT PLOOKASIDE_LIST_EX Lookaside);
|
||||||
|
|
||||||
static __inline PVOID
|
NTKERNELAPI
|
||||||
ExAllocateFromNPagedLookasideList(
|
VOID
|
||||||
IN PNPAGED_LOOKASIDE_LIST Lookaside)
|
NTAPI
|
||||||
|
ExFlushLookasideListEx(
|
||||||
|
IN OUT PLOOKASIDE_LIST_EX Lookaside);
|
||||||
|
|
||||||
|
FORCEINLINE
|
||||||
|
PVOID
|
||||||
|
ExAllocateFromLookasideListEx(
|
||||||
|
IN OUT PLOOKASIDE_LIST_EX Lookaside)
|
||||||
{
|
{
|
||||||
PVOID Entry;
|
PVOID Entry;
|
||||||
|
|
||||||
Lookaside->L.TotalAllocates++;
|
Lookaside->L.TotalAllocates += 1;
|
||||||
Entry = InterlockedPopEntrySList(&Lookaside->L.ListHead);
|
Entry = InterlockedPopEntrySList(&Lookaside->L.ListHead);
|
||||||
if (Entry == NULL) {
|
if (Entry == NULL) {
|
||||||
Lookaside->L.AllocateMisses++;
|
Lookaside->L.AllocateMisses += 1;
|
||||||
Entry = (Lookaside->L.Allocate)(Lookaside->L.Type,
|
Entry = (Lookaside->L.AllocateEx)(Lookaside->L.Type,
|
||||||
Lookaside->L.Size,
|
Lookaside->L.Size,
|
||||||
Lookaside->L.Tag);
|
Lookaside->L.Tag,
|
||||||
|
Lookaside);
|
||||||
}
|
}
|
||||||
return Entry;
|
return Entry;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FORCEINLINE
|
||||||
|
VOID
|
||||||
|
ExFreeToLookasideListEx(
|
||||||
|
IN OUT PLOOKASIDE_LIST_EX Lookaside,
|
||||||
|
IN PVOID Entry)
|
||||||
|
{
|
||||||
|
Lookaside->L.TotalFrees += 1;
|
||||||
|
if (ExQueryDepthSList(&Lookaside->L.ListHead) >= Lookaside->L.Depth) {
|
||||||
|
Lookaside->L.FreeMisses += 1;
|
||||||
|
(Lookaside->L.FreeEx)(Entry, Lookaside);
|
||||||
|
} else {
|
||||||
|
InterlockedPushEntrySList(&Lookaside->L.ListHead, (PSLIST_ENTRY)Entry);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
|
||||||
|
|
||||||
static __inline PVOID
|
static __inline PVOID
|
||||||
ExAllocateFromPagedLookasideList(
|
ExAllocateFromNPagedLookasideList(
|
||||||
IN PPAGED_LOOKASIDE_LIST Lookaside)
|
IN OUT PNPAGED_LOOKASIDE_LIST Lookaside)
|
||||||
{
|
{
|
||||||
PVOID Entry;
|
PVOID Entry;
|
||||||
|
|
||||||
Lookaside->L.TotalAllocates++;
|
Lookaside->L.TotalAllocates++;
|
||||||
|
#if defined(_WIN2K_COMPAT_SLIST_USAGE) && defined(_X86_)
|
||||||
|
Entry = ExInterlockedPopEntrySList(&Lookaside->L.ListHead,
|
||||||
|
&Lookaside->Lock__ObsoleteButDoNotDelete);
|
||||||
|
#else
|
||||||
Entry = InterlockedPopEntrySList(&Lookaside->L.ListHead);
|
Entry = InterlockedPopEntrySList(&Lookaside->L.ListHead);
|
||||||
|
#endif
|
||||||
if (Entry == NULL) {
|
if (Entry == NULL) {
|
||||||
Lookaside->L.AllocateMisses++;
|
Lookaside->L.AllocateMisses++;
|
||||||
Entry = (Lookaside->L.Allocate)(Lookaside->L.Type,
|
Entry = (Lookaside->L.Allocate)(Lookaside->L.Type,
|
||||||
|
@ -11774,7 +12045,7 @@ ExAllocateFromPagedLookasideList(
|
||||||
|
|
||||||
static __inline VOID
|
static __inline VOID
|
||||||
ExFreeToNPagedLookasideList(
|
ExFreeToNPagedLookasideList(
|
||||||
IN PNPAGED_LOOKASIDE_LIST Lookaside,
|
IN OUT PNPAGED_LOOKASIDE_LIST Lookaside,
|
||||||
IN PVOID Entry)
|
IN PVOID Entry)
|
||||||
{
|
{
|
||||||
Lookaside->L.TotalFrees++;
|
Lookaside->L.TotalFrees++;
|
||||||
|
@ -11782,26 +12053,16 @@ ExFreeToNPagedLookasideList(
|
||||||
Lookaside->L.FreeMisses++;
|
Lookaside->L.FreeMisses++;
|
||||||
(Lookaside->L.Free)(Entry);
|
(Lookaside->L.Free)(Entry);
|
||||||
} else {
|
} else {
|
||||||
InterlockedPushEntrySList(&Lookaside->L.ListHead, (PSLIST_ENTRY)Entry);
|
#if defined(_WIN2K_COMPAT_SLIST_USAGE) && defined(_X86_)
|
||||||
}
|
ExInterlockedPushEntrySList(&Lookaside->L.ListHead,
|
||||||
|
(PSLIST_ENTRY)Entry,
|
||||||
|
&Lookaside->Lock__ObsoleteButDoNotDelete);
|
||||||
|
#else
|
||||||
|
InterlockedPushEntrySList(&Lookaside->L.ListHead, (PSLIST_ENTRY)Entry);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
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) */
|
|
||||||
|
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
* Object Manager Functions *
|
* Object Manager Functions *
|
||||||
|
|
|
@ -546,17 +546,6 @@ typedef enum _KAPC_ENVIRONMENT
|
||||||
InsertApcEnvironment
|
InsertApcEnvironment
|
||||||
} KAPC_ENVIRONMENT;
|
} KAPC_ENVIRONMENT;
|
||||||
|
|
||||||
//
|
|
||||||
// CPU Cache Types
|
|
||||||
//
|
|
||||||
typedef enum _PROCESSOR_CACHE_TYPE
|
|
||||||
{
|
|
||||||
CacheUnified,
|
|
||||||
CacheInstruction,
|
|
||||||
CacheData,
|
|
||||||
CacheTrace,
|
|
||||||
} PROCESSOR_CACHE_TYPE;
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// PRCB DPC Data
|
// PRCB DPC Data
|
||||||
//
|
//
|
||||||
|
@ -577,18 +566,6 @@ typedef struct _PP_LOOKASIDE_LIST
|
||||||
struct _GENERAL_LOOKASIDE *L;
|
struct _GENERAL_LOOKASIDE *L;
|
||||||
} PP_LOOKASIDE_LIST, *PPP_LOOKASIDE_LIST;
|
} PP_LOOKASIDE_LIST, *PPP_LOOKASIDE_LIST;
|
||||||
|
|
||||||
//
|
|
||||||
// CPU Cache Descriptor
|
|
||||||
//
|
|
||||||
typedef struct _CACHE_DESCRIPTOR
|
|
||||||
{
|
|
||||||
UCHAR Level;
|
|
||||||
UCHAR Associativity;
|
|
||||||
USHORT LineSize;
|
|
||||||
ULONG Size;
|
|
||||||
PROCESSOR_CACHE_TYPE Type;
|
|
||||||
} CACHE_DESCRIPTOR, *PCACHE_DESCRIPTOR;
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Architectural Types
|
// Architectural Types
|
||||||
//
|
//
|
||||||
|
|
|
@ -687,6 +687,11 @@ typedef EXCEPTION_DISPOSITION
|
||||||
IN OUT struct _CONTEXT *ContextRecord,
|
IN OUT struct _CONTEXT *ContextRecord,
|
||||||
IN OUT PVOID DispatcherContext);
|
IN OUT PVOID DispatcherContext);
|
||||||
|
|
||||||
|
typedef struct _GROUP_AFFINITY {
|
||||||
|
KAFFINITY Mask;
|
||||||
|
USHORT Group;
|
||||||
|
USHORT Reserved[3];
|
||||||
|
} GROUP_AFFINITY, *PGROUP_AFFINITY;
|
||||||
|
|
||||||
//
|
//
|
||||||
// Helper Macros
|
// Helper Macros
|
||||||
|
|
|
@ -3411,6 +3411,12 @@ typedef LONG
|
||||||
struct _EXCEPTION_POINTERS *ExceptionInfo
|
struct _EXCEPTION_POINTERS *ExceptionInfo
|
||||||
);
|
);
|
||||||
|
|
||||||
|
typedef struct _GROUP_AFFINITY {
|
||||||
|
KAFFINITY Mask;
|
||||||
|
WORD Group;
|
||||||
|
WORD Reserved[3];
|
||||||
|
} GROUP_AFFINITY, *PGROUP_AFFINITY;
|
||||||
|
|
||||||
typedef struct _EVENTLOGRECORD {
|
typedef struct _EVENTLOGRECORD {
|
||||||
DWORD Length;
|
DWORD Length;
|
||||||
DWORD Reserved;
|
DWORD Reserved;
|
||||||
|
|
|
@ -14,19 +14,64 @@ $if (_WDMDDK_)
|
||||||
|
|
||||||
#define ExInitializeSListHead InitializeSListHead
|
#define ExInitializeSListHead InitializeSListHead
|
||||||
|
|
||||||
#if defined(_X86_)
|
#if defined(_NTHAL_) && defined(_X86_)
|
||||||
#if defined(_NTHAL_)
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
FASTCALL
|
||||||
|
ExiAcquireFastMutex(
|
||||||
|
IN OUT PFAST_MUTEX FastMutex);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
FASTCALL
|
||||||
|
ExiReleaseFastMutex(
|
||||||
|
IN OUT PFAST_MUTEX FastMutex);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
BOOLEAN
|
||||||
|
FASTCALL
|
||||||
|
ExiTryToAcquireFastMutex(
|
||||||
|
IN OUT PFAST_MUTEX FastMutex);
|
||||||
|
|
||||||
#define ExAcquireFastMutex ExiAcquireFastMutex
|
#define ExAcquireFastMutex ExiAcquireFastMutex
|
||||||
#define ExReleaseFastMutex ExiReleaseFastMutex
|
#define ExReleaseFastMutex ExiReleaseFastMutex
|
||||||
#define ExTryToAcquireFastMutex ExiTryToAcquireFastMutex
|
#define ExTryToAcquireFastMutex ExiTryToAcquireFastMutex
|
||||||
#endif
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
#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);
|
||||||
|
|
||||||
|
#endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */
|
||||||
|
|
||||||
|
#endif /* defined(_NTHAL_) && defined(_X86_) */
|
||||||
|
|
||||||
|
#if defined(_X86_)
|
||||||
#define ExInterlockedAddUlong ExfInterlockedAddUlong
|
#define ExInterlockedAddUlong ExfInterlockedAddUlong
|
||||||
#define ExInterlockedInsertHeadList ExfInterlockedInsertHeadList
|
#define ExInterlockedInsertHeadList ExfInterlockedInsertHeadList
|
||||||
#define ExInterlockedInsertTailList ExfInterlockedInsertTailList
|
#define ExInterlockedInsertTailList ExfInterlockedInsertTailList
|
||||||
#define ExInterlockedRemoveHeadList ExfInterlockedRemoveHeadList
|
#define ExInterlockedRemoveHeadList ExfInterlockedRemoveHeadList
|
||||||
#define ExInterlockedPopEntryList ExfInterlockedPopEntryList
|
#define ExInterlockedPopEntryList ExfInterlockedPopEntryList
|
||||||
#define ExInterlockedPushEntryList ExfInterlockedPushEntryList
|
#define ExInterlockedPushEntryList ExfInterlockedPushEntryList
|
||||||
#endif
|
#endif /* defined(_X86_) */
|
||||||
|
|
||||||
#if defined(_WIN64)
|
#if defined(_WIN64)
|
||||||
|
|
||||||
|
@ -75,9 +120,10 @@ NTKERNELAPI
|
||||||
PSINGLE_LIST_ENTRY
|
PSINGLE_LIST_ENTRY
|
||||||
FASTCALL
|
FASTCALL
|
||||||
ExInterlockedFlushSList(
|
ExInterlockedFlushSList(
|
||||||
IN PSLIST_HEADER ListHead);
|
IN OUT PSLIST_HEADER ListHead);
|
||||||
|
|
||||||
#if defined(_WIN2K_COMPAT_SLIST_USAGE) && defined(_X86_)
|
#if defined(_WIN2K_COMPAT_SLIST_USAGE) && defined(_X86_)
|
||||||
|
|
||||||
NTKERNELAPI
|
NTKERNELAPI
|
||||||
PSINGLE_LIST_ENTRY
|
PSINGLE_LIST_ENTRY
|
||||||
FASTCALL
|
FASTCALL
|
||||||
|
@ -92,11 +138,60 @@ ExInterlockedPushEntrySList(
|
||||||
IN PSLIST_HEADER ListHead,
|
IN PSLIST_HEADER ListHead,
|
||||||
IN PSINGLE_LIST_ENTRY ListEntry,
|
IN PSINGLE_LIST_ENTRY ListEntry,
|
||||||
IN PKSPIN_LOCK Lock);
|
IN PKSPIN_LOCK Lock);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
PVOID
|
||||||
|
NTAPI
|
||||||
|
ExAllocateFromPagedLookasideList(
|
||||||
|
IN OUT PPAGED_LOOKASIDE_LIST Lookaside);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
ExFreeToPagedLookasideList(
|
||||||
|
IN OUT PPAGED_LOOKASIDE_LIST Lookaside,
|
||||||
|
IN PVOID Entry);
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
#define ExInterlockedPopEntrySList(_ListHead, _Lock) \
|
#define ExInterlockedPopEntrySList(_ListHead, _Lock) \
|
||||||
InterlockedPopEntrySList(_ListHead)
|
InterlockedPopEntrySList(_ListHead)
|
||||||
#define ExInterlockedPushEntrySList(_ListHead, _ListEntry, _Lock) \
|
#define ExInterlockedPushEntrySList(_ListHead, _ListEntry, _Lock) \
|
||||||
InterlockedPushEntrySList(_ListHead, _ListEntry)
|
InterlockedPushEntrySList(_ListHead, _ListEntry)
|
||||||
|
|
||||||
|
static __inline
|
||||||
|
PVOID
|
||||||
|
ExAllocateFromPagedLookasideList(
|
||||||
|
IN OUT 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
|
||||||
|
ExFreeToPagedLookasideList(
|
||||||
|
IN OUT 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 /* _WIN2K_COMPAT_SLIST_USAGE */
|
#endif /* _WIN2K_COMPAT_SLIST_USAGE */
|
||||||
|
|
||||||
#endif /* !defined(_WIN64) */
|
#endif /* !defined(_WIN64) */
|
||||||
|
@ -136,24 +231,6 @@ ExInitializeFastMutex(
|
||||||
|
|
||||||
#if (NTDDI_VERSION >= NTDDI_WIN2K)
|
#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
|
NTKERNELAPI
|
||||||
VOID
|
VOID
|
||||||
FASTCALL
|
FASTCALL
|
||||||
|
@ -177,7 +254,7 @@ NTKERNELAPI
|
||||||
BOOLEAN
|
BOOLEAN
|
||||||
NTAPI
|
NTAPI
|
||||||
ExAcquireResourceSharedLite(
|
ExAcquireResourceSharedLite(
|
||||||
IN PERESOURCE Resource,
|
IN OUT PERESOURCE Resource,
|
||||||
IN BOOLEAN Wait);
|
IN BOOLEAN Wait);
|
||||||
|
|
||||||
NTKERNELAPI
|
NTKERNELAPI
|
||||||
|
@ -201,10 +278,6 @@ ExAllocatePool(
|
||||||
IN POOL_TYPE PoolType,
|
IN POOL_TYPE PoolType,
|
||||||
IN SIZE_T NumberOfBytes);
|
IN SIZE_T NumberOfBytes);
|
||||||
|
|
||||||
#ifdef POOL_TAGGING
|
|
||||||
#define ExAllocatePool(p,n) ExAllocatePoolWithTag(p,n,' kdD')
|
|
||||||
#endif /* POOL_TAGGING */
|
|
||||||
|
|
||||||
NTKERNELAPI
|
NTKERNELAPI
|
||||||
PVOID
|
PVOID
|
||||||
NTAPI
|
NTAPI
|
||||||
|
@ -212,10 +285,6 @@ ExAllocatePoolWithQuota(
|
||||||
IN POOL_TYPE PoolType,
|
IN POOL_TYPE PoolType,
|
||||||
IN SIZE_T NumberOfBytes);
|
IN SIZE_T NumberOfBytes);
|
||||||
|
|
||||||
#ifdef POOL_TAGGING
|
|
||||||
#define ExAllocatePoolWithQuota(p,n) ExAllocatePoolWithQuotaTag(p,n,' kdD')
|
|
||||||
#endif /* POOL_TAGGING */
|
|
||||||
|
|
||||||
NTKERNELAPI
|
NTKERNELAPI
|
||||||
PVOID
|
PVOID
|
||||||
NTAPI
|
NTAPI
|
||||||
|
@ -226,7 +295,7 @@ ExAllocatePoolWithQuotaTag(
|
||||||
|
|
||||||
#ifndef POOL_TAGGING
|
#ifndef POOL_TAGGING
|
||||||
#define ExAllocatePoolWithQuotaTag(a,b,c) ExAllocatePoolWithQuota(a,b)
|
#define ExAllocatePoolWithQuotaTag(a,b,c) ExAllocatePoolWithQuota(a,b)
|
||||||
#endif /* POOL_TAGGING */
|
#endif
|
||||||
|
|
||||||
NTKERNELAPI
|
NTKERNELAPI
|
||||||
PVOID
|
PVOID
|
||||||
|
@ -236,6 +305,10 @@ ExAllocatePoolWithTag(
|
||||||
IN SIZE_T NumberOfBytes,
|
IN SIZE_T NumberOfBytes,
|
||||||
IN ULONG Tag);
|
IN ULONG Tag);
|
||||||
|
|
||||||
|
#ifndef POOL_TAGGING
|
||||||
|
#define ExAllocatePoolWithTag(a,b,c) ExAllocatePool(a,b)
|
||||||
|
#endif
|
||||||
|
|
||||||
NTKERNELAPI
|
NTKERNELAPI
|
||||||
PVOID
|
PVOID
|
||||||
NTAPI
|
NTAPI
|
||||||
|
@ -264,7 +337,7 @@ NTKERNELAPI
|
||||||
VOID
|
VOID
|
||||||
NTAPI
|
NTAPI
|
||||||
ExDeleteNPagedLookasideList(
|
ExDeleteNPagedLookasideList(
|
||||||
IN PNPAGED_LOOKASIDE_LIST Lookaside);
|
IN OUT PNPAGED_LOOKASIDE_LIST Lookaside);
|
||||||
|
|
||||||
NTKERNELAPI
|
NTKERNELAPI
|
||||||
VOID
|
VOID
|
||||||
|
@ -284,10 +357,6 @@ NTAPI
|
||||||
ExFreePool(
|
ExFreePool(
|
||||||
IN PVOID P);
|
IN PVOID P);
|
||||||
|
|
||||||
#ifdef POOL_TAGGING
|
|
||||||
#define ExFreePool(P) ExFreePoolWithTag(P, 0)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
NTKERNELAPI
|
NTKERNELAPI
|
||||||
VOID
|
VOID
|
||||||
NTAPI
|
NTAPI
|
||||||
|
@ -340,7 +409,7 @@ NTKERNELAPI
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
NTAPI
|
NTAPI
|
||||||
ExInitializeResourceLite(
|
ExInitializeResourceLite(
|
||||||
IN PERESOURCE Resource);
|
OUT PERESOURCE Resource);
|
||||||
|
|
||||||
NTKERNELAPI
|
NTKERNELAPI
|
||||||
LARGE_INTEGER
|
LARGE_INTEGER
|
||||||
|
@ -364,7 +433,7 @@ FASTCALL
|
||||||
ExInterlockedAddUlong(
|
ExInterlockedAddUlong(
|
||||||
IN PULONG Addend,
|
IN PULONG Addend,
|
||||||
IN ULONG Increment,
|
IN ULONG Increment,
|
||||||
PKSPIN_LOCK Lock);
|
IN OUT PKSPIN_LOCK Lock);
|
||||||
|
|
||||||
#if defined(_AMD64_) || defined(_IA64_)
|
#if defined(_AMD64_) || defined(_IA64_)
|
||||||
|
|
||||||
|
@ -401,39 +470,39 @@ NTKERNELAPI
|
||||||
PLIST_ENTRY
|
PLIST_ENTRY
|
||||||
FASTCALL
|
FASTCALL
|
||||||
ExInterlockedInsertHeadList(
|
ExInterlockedInsertHeadList(
|
||||||
IN PLIST_ENTRY ListHead,
|
IN OUT PLIST_ENTRY ListHead,
|
||||||
IN PLIST_ENTRY ListEntry,
|
IN OUT PLIST_ENTRY ListEntry,
|
||||||
IN PKSPIN_LOCK Lock);
|
IN OUT PKSPIN_LOCK Lock);
|
||||||
|
|
||||||
NTKERNELAPI
|
NTKERNELAPI
|
||||||
PLIST_ENTRY
|
PLIST_ENTRY
|
||||||
FASTCALL
|
FASTCALL
|
||||||
ExInterlockedInsertTailList(
|
ExInterlockedInsertTailList(
|
||||||
IN PLIST_ENTRY ListHead,
|
IN OUT PLIST_ENTRY ListHead,
|
||||||
IN PLIST_ENTRY ListEntry,
|
IN OUT PLIST_ENTRY ListEntry,
|
||||||
IN PKSPIN_LOCK Lock);
|
IN OUT PKSPIN_LOCK Lock);
|
||||||
|
|
||||||
NTKERNELAPI
|
NTKERNELAPI
|
||||||
PSINGLE_LIST_ENTRY
|
PSINGLE_LIST_ENTRY
|
||||||
FASTCALL
|
FASTCALL
|
||||||
ExInterlockedPopEntryList(
|
ExInterlockedPopEntryList(
|
||||||
IN PSINGLE_LIST_ENTRY ListHead,
|
IN OUT PSINGLE_LIST_ENTRY ListHead,
|
||||||
IN PKSPIN_LOCK Lock);
|
IN OUT PKSPIN_LOCK Lock);
|
||||||
|
|
||||||
NTKERNELAPI
|
NTKERNELAPI
|
||||||
PSINGLE_LIST_ENTRY
|
PSINGLE_LIST_ENTRY
|
||||||
FASTCALL
|
FASTCALL
|
||||||
ExInterlockedPushEntryList(
|
ExInterlockedPushEntryList(
|
||||||
IN PSINGLE_LIST_ENTRY ListHead,
|
IN OUT PSINGLE_LIST_ENTRY ListHead,
|
||||||
IN PSINGLE_LIST_ENTRY ListEntry,
|
IN OUT PSINGLE_LIST_ENTRY ListEntry,
|
||||||
IN PKSPIN_LOCK Lock);
|
IN OUT PKSPIN_LOCK Lock);
|
||||||
|
|
||||||
NTKERNELAPI
|
NTKERNELAPI
|
||||||
PLIST_ENTRY
|
PLIST_ENTRY
|
||||||
FASTCALL
|
FASTCALL
|
||||||
ExInterlockedRemoveHeadList(
|
ExInterlockedRemoveHeadList(
|
||||||
IN PLIST_ENTRY ListHead,
|
IN OUT PLIST_ENTRY ListHead,
|
||||||
IN PKSPIN_LOCK Lock);
|
IN OUT PKSPIN_LOCK Lock);
|
||||||
|
|
||||||
NTKERNELAPI
|
NTKERNELAPI
|
||||||
BOOLEAN
|
BOOLEAN
|
||||||
|
@ -474,7 +543,7 @@ NTKERNELAPI
|
||||||
VOID
|
VOID
|
||||||
NTAPI
|
NTAPI
|
||||||
ExQueueWorkItem(
|
ExQueueWorkItem(
|
||||||
IN PWORK_QUEUE_ITEM WorkItem,
|
IN OUT PWORK_QUEUE_ITEM WorkItem,
|
||||||
IN WORK_QUEUE_TYPE QueueType);
|
IN WORK_QUEUE_TYPE QueueType);
|
||||||
|
|
||||||
NTKERNELAPI
|
NTKERNELAPI
|
||||||
|
@ -496,7 +565,7 @@ NTKERNELAPI
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
NTAPI
|
NTAPI
|
||||||
ExReinitializeResourceLite(
|
ExReinitializeResourceLite(
|
||||||
IN PERESOURCE Resource);
|
IN OUT PERESOURCE Resource);
|
||||||
|
|
||||||
NTKERNELAPI
|
NTKERNELAPI
|
||||||
VOID
|
VOID
|
||||||
|
@ -621,6 +690,7 @@ ExSizeOfRundownProtectionCacheAware(VOID);
|
||||||
#endif /* (NTDDI_VERSION >= NTDDI_WS03SP1) */
|
#endif /* (NTDDI_VERSION >= NTDDI_WS03SP1) */
|
||||||
|
|
||||||
#if (NTDDI_VERSION >= NTDDI_VISTA)
|
#if (NTDDI_VERSION >= NTDDI_VISTA)
|
||||||
|
|
||||||
NTKERNELAPI
|
NTKERNELAPI
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
NTAPI
|
NTAPI
|
||||||
|
@ -633,35 +703,69 @@ ExInitializeLookasideListEx(
|
||||||
IN SIZE_T Size,
|
IN SIZE_T Size,
|
||||||
IN ULONG Tag,
|
IN ULONG Tag,
|
||||||
IN USHORT Depth);
|
IN USHORT Depth);
|
||||||
#endif
|
|
||||||
|
|
||||||
#if !defined(MIDL_PASS)
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
ExDeleteLookasideListEx(
|
||||||
|
IN OUT PLOOKASIDE_LIST_EX Lookaside);
|
||||||
|
|
||||||
static __inline PVOID
|
NTKERNELAPI
|
||||||
ExAllocateFromNPagedLookasideList(
|
VOID
|
||||||
IN PNPAGED_LOOKASIDE_LIST Lookaside)
|
NTAPI
|
||||||
|
ExFlushLookasideListEx(
|
||||||
|
IN OUT PLOOKASIDE_LIST_EX Lookaside);
|
||||||
|
|
||||||
|
FORCEINLINE
|
||||||
|
PVOID
|
||||||
|
ExAllocateFromLookasideListEx(
|
||||||
|
IN OUT PLOOKASIDE_LIST_EX Lookaside)
|
||||||
{
|
{
|
||||||
PVOID Entry;
|
PVOID Entry;
|
||||||
|
|
||||||
Lookaside->L.TotalAllocates++;
|
Lookaside->L.TotalAllocates += 1;
|
||||||
Entry = InterlockedPopEntrySList(&Lookaside->L.ListHead);
|
Entry = InterlockedPopEntrySList(&Lookaside->L.ListHead);
|
||||||
if (Entry == NULL) {
|
if (Entry == NULL) {
|
||||||
Lookaside->L.AllocateMisses++;
|
Lookaside->L.AllocateMisses += 1;
|
||||||
Entry = (Lookaside->L.Allocate)(Lookaside->L.Type,
|
Entry = (Lookaside->L.AllocateEx)(Lookaside->L.Type,
|
||||||
Lookaside->L.Size,
|
Lookaside->L.Size,
|
||||||
Lookaside->L.Tag);
|
Lookaside->L.Tag,
|
||||||
|
Lookaside);
|
||||||
}
|
}
|
||||||
return Entry;
|
return Entry;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FORCEINLINE
|
||||||
|
VOID
|
||||||
|
ExFreeToLookasideListEx(
|
||||||
|
IN OUT PLOOKASIDE_LIST_EX Lookaside,
|
||||||
|
IN PVOID Entry)
|
||||||
|
{
|
||||||
|
Lookaside->L.TotalFrees += 1;
|
||||||
|
if (ExQueryDepthSList(&Lookaside->L.ListHead) >= Lookaside->L.Depth) {
|
||||||
|
Lookaside->L.FreeMisses += 1;
|
||||||
|
(Lookaside->L.FreeEx)(Entry, Lookaside);
|
||||||
|
} else {
|
||||||
|
InterlockedPushEntrySList(&Lookaside->L.ListHead, (PSLIST_ENTRY)Entry);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
|
||||||
|
|
||||||
static __inline PVOID
|
static __inline PVOID
|
||||||
ExAllocateFromPagedLookasideList(
|
ExAllocateFromNPagedLookasideList(
|
||||||
IN PPAGED_LOOKASIDE_LIST Lookaside)
|
IN OUT PNPAGED_LOOKASIDE_LIST Lookaside)
|
||||||
{
|
{
|
||||||
PVOID Entry;
|
PVOID Entry;
|
||||||
|
|
||||||
Lookaside->L.TotalAllocates++;
|
Lookaside->L.TotalAllocates++;
|
||||||
|
#if defined(_WIN2K_COMPAT_SLIST_USAGE) && defined(_X86_)
|
||||||
|
Entry = ExInterlockedPopEntrySList(&Lookaside->L.ListHead,
|
||||||
|
&Lookaside->Lock__ObsoleteButDoNotDelete);
|
||||||
|
#else
|
||||||
Entry = InterlockedPopEntrySList(&Lookaside->L.ListHead);
|
Entry = InterlockedPopEntrySList(&Lookaside->L.ListHead);
|
||||||
|
#endif
|
||||||
if (Entry == NULL) {
|
if (Entry == NULL) {
|
||||||
Lookaside->L.AllocateMisses++;
|
Lookaside->L.AllocateMisses++;
|
||||||
Entry = (Lookaside->L.Allocate)(Lookaside->L.Type,
|
Entry = (Lookaside->L.Allocate)(Lookaside->L.Type,
|
||||||
|
@ -673,7 +777,7 @@ ExAllocateFromPagedLookasideList(
|
||||||
|
|
||||||
static __inline VOID
|
static __inline VOID
|
||||||
ExFreeToNPagedLookasideList(
|
ExFreeToNPagedLookasideList(
|
||||||
IN PNPAGED_LOOKASIDE_LIST Lookaside,
|
IN OUT PNPAGED_LOOKASIDE_LIST Lookaside,
|
||||||
IN PVOID Entry)
|
IN PVOID Entry)
|
||||||
{
|
{
|
||||||
Lookaside->L.TotalFrees++;
|
Lookaside->L.TotalFrees++;
|
||||||
|
@ -681,25 +785,15 @@ ExFreeToNPagedLookasideList(
|
||||||
Lookaside->L.FreeMisses++;
|
Lookaside->L.FreeMisses++;
|
||||||
(Lookaside->L.Free)(Entry);
|
(Lookaside->L.Free)(Entry);
|
||||||
} else {
|
} else {
|
||||||
InterlockedPushEntrySList(&Lookaside->L.ListHead, (PSLIST_ENTRY)Entry);
|
#if defined(_WIN2K_COMPAT_SLIST_USAGE) && defined(_X86_)
|
||||||
}
|
ExInterlockedPushEntrySList(&Lookaside->L.ListHead,
|
||||||
|
(PSLIST_ENTRY)Entry,
|
||||||
|
&Lookaside->Lock__ObsoleteButDoNotDelete);
|
||||||
|
#else
|
||||||
|
InterlockedPushEntrySList(&Lookaside->L.ListHead, (PSLIST_ENTRY)Entry);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
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
|
$endif
|
||||||
|
|
||||||
|
|
|
@ -152,10 +152,22 @@ typedef struct LOOKASIDE_ALIGN _NPAGED_LOOKASIDE_LIST {
|
||||||
#endif
|
#endif
|
||||||
} NPAGED_LOOKASIDE_LIST, *PNPAGED_LOOKASIDE_LIST;
|
} NPAGED_LOOKASIDE_LIST, *PNPAGED_LOOKASIDE_LIST;
|
||||||
|
|
||||||
|
#define LOOKASIDE_MINIMUM_BLOCK_SIZE (RTL_SIZEOF_THROUGH_FIELD (SLIST_ENTRY, Next))
|
||||||
|
|
||||||
typedef struct _LOOKASIDE_LIST_EX {
|
typedef struct _LOOKASIDE_LIST_EX {
|
||||||
GENERAL_LOOKASIDE_POOL L;
|
GENERAL_LOOKASIDE_POOL L;
|
||||||
} LOOKASIDE_LIST_EX;
|
} LOOKASIDE_LIST_EX;
|
||||||
|
|
||||||
|
#if (NTDDI_VERSION >= NTDDI_VISTA)
|
||||||
|
|
||||||
|
#define EX_LOOKASIDE_LIST_EX_FLAGS_RAISE_ON_FAIL 0x00000001UL
|
||||||
|
#define EX_LOOKASIDE_LIST_EX_FLAGS_FAIL_NO_RAISE 0x00000002UL
|
||||||
|
|
||||||
|
#define EX_MAXIMUM_LOOKASIDE_DEPTH_BASE 256
|
||||||
|
#define EX_MAXIMUM_LOOKASIDE_DEPTH_LIMIT 1024
|
||||||
|
|
||||||
|
#endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
|
||||||
|
|
||||||
typedef struct _EX_RUNDOWN_REF {
|
typedef struct _EX_RUNDOWN_REF {
|
||||||
__GNU_EXTENSION union {
|
__GNU_EXTENSION union {
|
||||||
volatile ULONG_PTR Count;
|
volatile ULONG_PTR Count;
|
||||||
|
@ -165,9 +177,17 @@ typedef struct _EX_RUNDOWN_REF {
|
||||||
|
|
||||||
typedef struct _EX_RUNDOWN_REF_CACHE_AWARE *PEX_RUNDOWN_REF_CACHE_AWARE;
|
typedef struct _EX_RUNDOWN_REF_CACHE_AWARE *PEX_RUNDOWN_REF_CACHE_AWARE;
|
||||||
|
|
||||||
|
typedef enum _WORK_QUEUE_TYPE {
|
||||||
|
CriticalWorkQueue,
|
||||||
|
DelayedWorkQueue,
|
||||||
|
HyperCriticalWorkQueue,
|
||||||
|
MaximumWorkQueue
|
||||||
|
} WORK_QUEUE_TYPE;
|
||||||
|
|
||||||
typedef VOID
|
typedef VOID
|
||||||
(NTAPI *PWORKER_THREAD_ROUTINE)(
|
(NTAPI WORKER_THREAD_ROUTINE)(
|
||||||
IN PVOID Parameter);
|
IN PVOID Parameter);
|
||||||
|
typedef WORKER_THREAD_ROUTINE *PWORKER_THREAD_ROUTINE;
|
||||||
|
|
||||||
typedef struct _WORK_QUEUE_ITEM {
|
typedef struct _WORK_QUEUE_ITEM {
|
||||||
LIST_ENTRY List;
|
LIST_ENTRY List;
|
||||||
|
@ -175,6 +195,70 @@ typedef struct _WORK_QUEUE_ITEM {
|
||||||
volatile PVOID Parameter;
|
volatile PVOID Parameter;
|
||||||
} WORK_QUEUE_ITEM, *PWORK_QUEUE_ITEM;
|
} WORK_QUEUE_ITEM, *PWORK_QUEUE_ITEM;
|
||||||
|
|
||||||
|
typedef ULONG_PTR ERESOURCE_THREAD, *PERESOURCE_THREAD;
|
||||||
|
|
||||||
|
typedef struct _OWNER_ENTRY {
|
||||||
|
ERESOURCE_THREAD OwnerThread;
|
||||||
|
union {
|
||||||
|
struct {
|
||||||
|
ULONG IoPriorityBoosted:1;
|
||||||
|
ULONG OwnerReferenced:1;
|
||||||
|
ULONG OwnerCount:30;
|
||||||
|
};
|
||||||
|
ULONG TableSize;
|
||||||
|
};
|
||||||
|
} OWNER_ENTRY, *POWNER_ENTRY;
|
||||||
|
|
||||||
|
typedef struct _ERESOURCE {
|
||||||
|
LIST_ENTRY SystemResourcesList;
|
||||||
|
POWNER_ENTRY OwnerTable;
|
||||||
|
SHORT ActiveCount;
|
||||||
|
USHORT Flag;
|
||||||
|
volatile PKSEMAPHORE SharedWaiters;
|
||||||
|
volatile PKEVENT ExclusiveWaiters;
|
||||||
|
OWNER_ENTRY OwnerEntry;
|
||||||
|
ULONG ActiveEntries;
|
||||||
|
ULONG ContentionCount;
|
||||||
|
ULONG NumberOfSharedWaiters;
|
||||||
|
ULONG NumberOfExclusiveWaiters;
|
||||||
|
#if defined(_WIN64)
|
||||||
|
PVOID Reserved2;
|
||||||
|
#endif
|
||||||
|
__GNU_EXTENSION union {
|
||||||
|
PVOID Address;
|
||||||
|
ULONG_PTR CreatorBackTraceIndex;
|
||||||
|
};
|
||||||
|
KSPIN_LOCK SpinLock;
|
||||||
|
} ERESOURCE, *PERESOURCE;
|
||||||
|
|
||||||
|
/* ERESOURCE.Flag */
|
||||||
|
#define ResourceNeverExclusive 0x0010
|
||||||
|
#define ResourceReleaseByOtherThread 0x0020
|
||||||
|
#define ResourceOwnedExclusive 0x0080
|
||||||
|
|
||||||
|
#define RESOURCE_HASH_TABLE_SIZE 64
|
||||||
|
|
||||||
|
typedef struct _RESOURCE_HASH_ENTRY {
|
||||||
|
LIST_ENTRY ListEntry;
|
||||||
|
PVOID Address;
|
||||||
|
ULONG ContentionCount;
|
||||||
|
ULONG Number;
|
||||||
|
} RESOURCE_HASH_ENTRY, *PRESOURCE_HASH_ENTRY;
|
||||||
|
|
||||||
|
typedef struct _RESOURCE_PERFORMANCE_DATA {
|
||||||
|
ULONG ActiveResourceCount;
|
||||||
|
ULONG TotalResourceCount;
|
||||||
|
ULONG ExclusiveAcquire;
|
||||||
|
ULONG SharedFirstLevel;
|
||||||
|
ULONG SharedSecondLevel;
|
||||||
|
ULONG StarveFirstLevel;
|
||||||
|
ULONG StarveSecondLevel;
|
||||||
|
ULONG WaitForExclusive;
|
||||||
|
ULONG OwnerTableExpands;
|
||||||
|
ULONG MaximumTableExpand;
|
||||||
|
LIST_ENTRY HashTable[RESOURCE_HASH_TABLE_SIZE];
|
||||||
|
} RESOURCE_PERFORMANCE_DATA, *PRESOURCE_PERFORMANCE_DATA;
|
||||||
|
|
||||||
$endif
|
$endif
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1191,42 +1191,6 @@ typedef struct _FILE_SFIO_VOLUME_INFORMATION {
|
||||||
#define FM_LOCK_WAITER_WOKEN (0x2)
|
#define FM_LOCK_WAITER_WOKEN (0x2)
|
||||||
#define FM_LOCK_WAITER_INC (0x4)
|
#define FM_LOCK_WAITER_INC (0x4)
|
||||||
|
|
||||||
typedef ULONG_PTR ERESOURCE_THREAD, *PERESOURCE_THREAD;
|
|
||||||
|
|
||||||
typedef struct _OWNER_ENTRY {
|
|
||||||
ERESOURCE_THREAD OwnerThread;
|
|
||||||
_ANONYMOUS_UNION union {
|
|
||||||
LONG OwnerCount;
|
|
||||||
ULONG TableSize;
|
|
||||||
} DUMMYUNIONNAME;
|
|
||||||
} OWNER_ENTRY, *POWNER_ENTRY;
|
|
||||||
|
|
||||||
typedef struct _ERESOURCE {
|
|
||||||
LIST_ENTRY SystemResourcesList;
|
|
||||||
POWNER_ENTRY OwnerTable;
|
|
||||||
SHORT ActiveCount;
|
|
||||||
USHORT Flag;
|
|
||||||
volatile PKSEMAPHORE SharedWaiters;
|
|
||||||
volatile PKEVENT ExclusiveWaiters;
|
|
||||||
OWNER_ENTRY OwnerEntry;
|
|
||||||
ULONG ActiveEntries;
|
|
||||||
ULONG ContentionCount;
|
|
||||||
ULONG NumberOfSharedWaiters;
|
|
||||||
ULONG NumberOfExclusiveWaiters;
|
|
||||||
__GNU_EXTENSION union {
|
|
||||||
PVOID Address;
|
|
||||||
ULONG_PTR CreatorBackTraceIndex;
|
|
||||||
};
|
|
||||||
KSPIN_LOCK SpinLock;
|
|
||||||
} ERESOURCE, *PERESOURCE;
|
|
||||||
|
|
||||||
/* ERESOURCE.Flag */
|
|
||||||
#define ResourceNeverExclusive 0x0010
|
|
||||||
#define ResourceReleaseByOtherThread 0x0020
|
|
||||||
#define ResourceOwnedExclusive 0x0080
|
|
||||||
|
|
||||||
#define RESOURCE_HASH_TABLE_SIZE 64
|
|
||||||
|
|
||||||
typedef BOOLEAN
|
typedef BOOLEAN
|
||||||
(NTAPI *PFAST_IO_CHECK_IF_POSSIBLE)(
|
(NTAPI *PFAST_IO_CHECK_IF_POSSIBLE)(
|
||||||
IN struct _FILE_OBJECT *FileObject,
|
IN struct _FILE_OBJECT *FileObject,
|
||||||
|
@ -2268,13 +2232,6 @@ typedef enum _DEVICE_TEXT_TYPE {
|
||||||
DeviceTextLocationInformation
|
DeviceTextLocationInformation
|
||||||
} DEVICE_TEXT_TYPE, *PDEVICE_TEXT_TYPE;
|
} DEVICE_TEXT_TYPE, *PDEVICE_TEXT_TYPE;
|
||||||
|
|
||||||
typedef enum _WORK_QUEUE_TYPE {
|
|
||||||
CriticalWorkQueue,
|
|
||||||
DelayedWorkQueue,
|
|
||||||
HyperCriticalWorkQueue,
|
|
||||||
MaximumWorkQueue
|
|
||||||
} WORK_QUEUE_TYPE;
|
|
||||||
|
|
||||||
typedef BOOLEAN
|
typedef BOOLEAN
|
||||||
(*PGPE_SERVICE_ROUTINE2)(
|
(*PGPE_SERVICE_ROUTINE2)(
|
||||||
PVOID ObjectContext,
|
PVOID ObjectContext,
|
||||||
|
|
|
@ -23,6 +23,7 @@ KeClearEvent(
|
||||||
|
|
||||||
#if (NTDDI_VERSION >= NTDDI_WIN2K)
|
#if (NTDDI_VERSION >= NTDDI_WIN2K)
|
||||||
|
|
||||||
|
#if defined(_NTDDK_) || defined(_NTIFS_)
|
||||||
NTKERNELAPI
|
NTKERNELAPI
|
||||||
VOID
|
VOID
|
||||||
NTAPI
|
NTAPI
|
||||||
|
@ -30,6 +31,7 @@ ProbeForRead(
|
||||||
IN CONST VOID *Address, /* CONST is added */
|
IN CONST VOID *Address, /* CONST is added */
|
||||||
IN SIZE_T Length,
|
IN SIZE_T Length,
|
||||||
IN ULONG Alignment);
|
IN ULONG Alignment);
|
||||||
|
#endif /* defined(_NTDDK_) || defined(_NTIFS_) */
|
||||||
|
|
||||||
NTKERNELAPI
|
NTKERNELAPI
|
||||||
VOID
|
VOID
|
||||||
|
@ -613,6 +615,12 @@ NTAPI
|
||||||
KeSetSystemAffinityThreadEx(
|
KeSetSystemAffinityThreadEx(
|
||||||
IN KAFFINITY Affinity);
|
IN KAFFINITY Affinity);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
KeRevertToUserAffinityThreadEx(
|
||||||
|
IN KAFFINITY Affinity);
|
||||||
|
|
||||||
NTKERNELAPI
|
NTKERNELAPI
|
||||||
ULONG
|
ULONG
|
||||||
NTAPI
|
NTAPI
|
||||||
|
@ -770,6 +778,17 @@ NTAPI
|
||||||
KeRestoreExtendedProcessorState(
|
KeRestoreExtendedProcessorState(
|
||||||
IN PXSTATE_SAVE XStateSave);
|
IN PXSTATE_SAVE XStateSave);
|
||||||
|
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
KeGetProcessorNumberFromIndex(
|
||||||
|
IN ULONG ProcIndex,
|
||||||
|
OUT PPROCESSOR_NUMBER ProcNumber);
|
||||||
|
|
||||||
|
ULONG
|
||||||
|
NTAPI
|
||||||
|
KeGetProcessorIndexFromNumber(
|
||||||
|
IN PPROCESSOR_NUMBER ProcNumber);
|
||||||
|
|
||||||
#endif /* (NTDDI_VERSION >= NTDDI_WIN7) */
|
#endif /* (NTDDI_VERSION >= NTDDI_WIN7) */
|
||||||
|
|
||||||
#if !defined(_IA64_)
|
#if !defined(_IA64_)
|
||||||
|
|
|
@ -202,6 +202,23 @@ typedef struct _SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX {
|
||||||
#define EXCEPTION_NONCONTINUABLE 1
|
#define EXCEPTION_NONCONTINUABLE 1
|
||||||
#define EXCEPTION_MAXIMUM_PARAMETERS 15
|
#define EXCEPTION_MAXIMUM_PARAMETERS 15
|
||||||
|
|
||||||
|
#define EXCEPTION_DIVIDED_BY_ZERO 0
|
||||||
|
#define EXCEPTION_DEBUG 1
|
||||||
|
#define EXCEPTION_NMI 2
|
||||||
|
#define EXCEPTION_INT3 3
|
||||||
|
#define EXCEPTION_BOUND_CHECK 5
|
||||||
|
#define EXCEPTION_INVALID_OPCODE 6
|
||||||
|
#define EXCEPTION_NPX_NOT_AVAILABLE 7
|
||||||
|
#define EXCEPTION_DOUBLE_FAULT 8
|
||||||
|
#define EXCEPTION_NPX_OVERRUN 9
|
||||||
|
#define EXCEPTION_INVALID_TSS 0x0A
|
||||||
|
#define EXCEPTION_SEGMENT_NOT_PRESENT 0x0B
|
||||||
|
#define EXCEPTION_STACK_FAULT 0x0C
|
||||||
|
#define EXCEPTION_GP_FAULT 0x0D
|
||||||
|
#define EXCEPTION_RESERVED_TRAP 0x0F
|
||||||
|
#define EXCEPTION_NPX_ERROR 0x010
|
||||||
|
#define EXCEPTION_ALIGNMENT_CHECK 0x011
|
||||||
|
|
||||||
typedef struct _EXCEPTION_RECORD {
|
typedef struct _EXCEPTION_RECORD {
|
||||||
NTSTATUS ExceptionCode;
|
NTSTATUS ExceptionCode;
|
||||||
ULONG ExceptionFlags;
|
ULONG ExceptionFlags;
|
||||||
|
@ -246,11 +263,48 @@ typedef enum _KBUGCHECK_CALLBACK_REASON {
|
||||||
struct _KBUGCHECK_REASON_CALLBACK_RECORD;
|
struct _KBUGCHECK_REASON_CALLBACK_RECORD;
|
||||||
|
|
||||||
typedef VOID
|
typedef VOID
|
||||||
(NTAPI *PKBUGCHECK_REASON_CALLBACK_ROUTINE)(
|
(NTAPI KBUGCHECK_REASON_CALLBACK_ROUTINE)(
|
||||||
IN KBUGCHECK_CALLBACK_REASON Reason,
|
IN KBUGCHECK_CALLBACK_REASON Reason,
|
||||||
IN struct _KBUGCHECK_REASON_CALLBACK_RECORD *Record,
|
IN struct _KBUGCHECK_REASON_CALLBACK_RECORD *Record,
|
||||||
IN OUT PVOID ReasonSpecificData,
|
IN OUT PVOID ReasonSpecificData,
|
||||||
IN ULONG ReasonSpecificDataLength);
|
IN ULONG ReasonSpecificDataLength);
|
||||||
|
typedef KBUGCHECK_REASON_CALLBACK_ROUTINE *PKBUGCHECK_REASON_CALLBACK_ROUTINE;
|
||||||
|
|
||||||
|
typedef struct _KBUGCHECK_ADD_PAGES {
|
||||||
|
IN OUT PVOID Context;
|
||||||
|
IN OUT ULONG Flags;
|
||||||
|
IN ULONG BugCheckCode;
|
||||||
|
OUT ULONG_PTR Address;
|
||||||
|
OUT ULONG_PTR Count;
|
||||||
|
} KBUGCHECK_ADD_PAGES, *PKBUGCHECK_ADD_PAGES;
|
||||||
|
|
||||||
|
typedef struct _KBUGCHECK_SECONDARY_DUMP_DATA {
|
||||||
|
IN PVOID InBuffer;
|
||||||
|
IN ULONG InBufferLength;
|
||||||
|
IN ULONG MaximumAllowed;
|
||||||
|
OUT GUID Guid;
|
||||||
|
OUT PVOID OutBuffer;
|
||||||
|
OUT ULONG OutBufferLength;
|
||||||
|
} KBUGCHECK_SECONDARY_DUMP_DATA, *PKBUGCHECK_SECONDARY_DUMP_DATA;
|
||||||
|
|
||||||
|
typedef enum _KBUGCHECK_DUMP_IO_TYPE {
|
||||||
|
KbDumpIoInvalid,
|
||||||
|
KbDumpIoHeader,
|
||||||
|
KbDumpIoBody,
|
||||||
|
KbDumpIoSecondaryData,
|
||||||
|
KbDumpIoComplete
|
||||||
|
} KBUGCHECK_DUMP_IO_TYPE;
|
||||||
|
|
||||||
|
typedef struct _KBUGCHECK_DUMP_IO {
|
||||||
|
IN ULONG64 Offset;
|
||||||
|
IN PVOID Buffer;
|
||||||
|
IN ULONG BufferLength;
|
||||||
|
IN KBUGCHECK_DUMP_IO_TYPE Type;
|
||||||
|
} KBUGCHECK_DUMP_IO, *PKBUGCHECK_DUMP_IO;
|
||||||
|
|
||||||
|
#define KB_ADD_PAGES_FLAG_VIRTUAL_ADDRESS 0x00000001UL
|
||||||
|
#define KB_ADD_PAGES_FLAG_PHYSICAL_ADDRESS 0x00000002UL
|
||||||
|
#define KB_ADD_PAGES_FLAG_ADDITIONAL_RANGES_EXIST 0x80000000UL
|
||||||
|
|
||||||
typedef struct _KBUGCHECK_REASON_CALLBACK_RECORD {
|
typedef struct _KBUGCHECK_REASON_CALLBACK_RECORD {
|
||||||
LIST_ENTRY Entry;
|
LIST_ENTRY Entry;
|
||||||
|
@ -270,9 +324,10 @@ typedef enum _KBUGCHECK_BUFFER_DUMP_STATE {
|
||||||
} KBUGCHECK_BUFFER_DUMP_STATE;
|
} KBUGCHECK_BUFFER_DUMP_STATE;
|
||||||
|
|
||||||
typedef VOID
|
typedef VOID
|
||||||
(NTAPI *PKBUGCHECK_CALLBACK_ROUTINE)(
|
(NTAPI KBUGCHECK_CALLBACK_ROUTINE)(
|
||||||
IN PVOID Buffer,
|
IN PVOID Buffer,
|
||||||
IN ULONG Length);
|
IN ULONG Length);
|
||||||
|
typedef KBUGCHECK_CALLBACK_ROUTINE *PKBUGCHECK_CALLBACK_ROUTINE;
|
||||||
|
|
||||||
typedef struct _KBUGCHECK_CALLBACK_RECORD {
|
typedef struct _KBUGCHECK_CALLBACK_RECORD {
|
||||||
LIST_ENTRY Entry;
|
LIST_ENTRY Entry;
|
||||||
|
@ -285,9 +340,10 @@ typedef struct _KBUGCHECK_CALLBACK_RECORD {
|
||||||
} KBUGCHECK_CALLBACK_RECORD, *PKBUGCHECK_CALLBACK_RECORD;
|
} KBUGCHECK_CALLBACK_RECORD, *PKBUGCHECK_CALLBACK_RECORD;
|
||||||
|
|
||||||
typedef BOOLEAN
|
typedef BOOLEAN
|
||||||
(NTAPI *PNMI_CALLBACK)(
|
(NTAPI NMI_CALLBACK)(
|
||||||
IN PVOID Context,
|
IN PVOID Context,
|
||||||
IN BOOLEAN Handled);
|
IN BOOLEAN Handled);
|
||||||
|
typedef NMI_CALLBACK *PNMI_CALLBACK;
|
||||||
|
|
||||||
typedef enum _TRACE_INFORMATION_CLASS {
|
typedef enum _TRACE_INFORMATION_CLASS {
|
||||||
TraceIdClass,
|
TraceIdClass,
|
||||||
|
@ -304,6 +360,32 @@ typedef enum _TRACE_INFORMATION_CLASS {
|
||||||
MaxTraceInformationClass
|
MaxTraceInformationClass
|
||||||
} TRACE_INFORMATION_CLASS;
|
} TRACE_INFORMATION_CLASS;
|
||||||
|
|
||||||
|
typedef enum _KE_PROCESSOR_CHANGE_NOTIFY_STATE {
|
||||||
|
KeProcessorAddStartNotify = 0,
|
||||||
|
KeProcessorAddCompleteNotify,
|
||||||
|
KeProcessorAddFailureNotify
|
||||||
|
} KE_PROCESSOR_CHANGE_NOTIFY_STATE;
|
||||||
|
|
||||||
|
typedef struct _KE_PROCESSOR_CHANGE_NOTIFY_CONTEXT {
|
||||||
|
KE_PROCESSOR_CHANGE_NOTIFY_STATE State;
|
||||||
|
ULONG NtNumber;
|
||||||
|
NTSTATUS Status;
|
||||||
|
#if (NTDDI_VERSION >= NTDDI_WIN7)
|
||||||
|
PROCESSOR_NUMBER ProcNumber;
|
||||||
|
#endif
|
||||||
|
} KE_PROCESSOR_CHANGE_NOTIFY_CONTEXT, *PKE_PROCESSOR_CHANGE_NOTIFY_CONTEXT;
|
||||||
|
|
||||||
|
typedef VOID
|
||||||
|
(NTAPI PROCESSOR_CALLBACK_FUNCTION)(
|
||||||
|
IN PVOID CallbackContext,
|
||||||
|
IN PKE_PROCESSOR_CHANGE_NOTIFY_CONTEXT ChangeContext,
|
||||||
|
IN OUT PNTSTATUS OperationStatus);
|
||||||
|
typedef PROCESSOR_CALLBACK_FUNCTION *PPROCESSOR_CALLBACK_FUNCTION;
|
||||||
|
|
||||||
|
#define KE_PROCESSOR_CHANGE_ADD_EXISTING 1
|
||||||
|
|
||||||
|
#define INVALID_PROCESSOR_INDEX 0xffffffff
|
||||||
|
|
||||||
typedef enum _KINTERRUPT_POLARITY {
|
typedef enum _KINTERRUPT_POLARITY {
|
||||||
InterruptPolarityUnknown,
|
InterruptPolarityUnknown,
|
||||||
InterruptActiveHigh,
|
InterruptActiveHigh,
|
||||||
|
@ -504,8 +586,9 @@ typedef struct _KIPI_COUNTS {
|
||||||
} KIPI_COUNTS, *PKIPI_COUNTS;
|
} KIPI_COUNTS, *PKIPI_COUNTS;
|
||||||
|
|
||||||
typedef ULONG_PTR
|
typedef ULONG_PTR
|
||||||
(NTAPI *PKIPI_BROADCAST_WORKER)(
|
(NTAPI KIPI_BROADCAST_WORKER)(
|
||||||
IN ULONG_PTR Argument);
|
IN ULONG_PTR Argument);
|
||||||
|
typedef KIPI_BROADCAST_WORKER *PKIPI_BROADCAST_WORKER;
|
||||||
|
|
||||||
typedef ULONG_PTR KSPIN_LOCK, *PKSPIN_LOCK;
|
typedef ULONG_PTR KSPIN_LOCK, *PKSPIN_LOCK;
|
||||||
|
|
||||||
|
@ -863,6 +946,30 @@ typedef struct _XSTATE_CONTEXT {
|
||||||
#endif
|
#endif
|
||||||
} XSTATE_CONTEXT, *PXSTATE_CONTEXT;
|
} XSTATE_CONTEXT, *PXSTATE_CONTEXT;
|
||||||
|
|
||||||
|
typedef struct _XSTATE_SAVE {
|
||||||
|
#if defined(_AMD64_)
|
||||||
|
struct _XSTATE_SAVE* Prev;
|
||||||
|
struct _KTHREAD* Thread;
|
||||||
|
UCHAR Level;
|
||||||
|
XSTATE_CONTEXT XStateContext;
|
||||||
|
#elif defined(_IA64_)
|
||||||
|
ULONG Dummy;
|
||||||
|
#elif defined(_X86_)
|
||||||
|
union {
|
||||||
|
struct {
|
||||||
|
LONG64 Reserved1;
|
||||||
|
ULONG Reserved2;
|
||||||
|
struct _XSTATE_SAVE* Prev;
|
||||||
|
PXSAVE_AREA Reserved3;
|
||||||
|
struct _KTHREAD* Thread;
|
||||||
|
PVOID Reserved4;
|
||||||
|
UCHAR Level;
|
||||||
|
};
|
||||||
|
XSTATE_CONTEXT XStateContext;
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
} XSTATE_SAVE, *PXSTATE_SAVE;
|
||||||
|
|
||||||
#ifdef _X86_
|
#ifdef _X86_
|
||||||
|
|
||||||
#define MAXIMUM_SUPPORTED_EXTENSION 512
|
#define MAXIMUM_SUPPORTED_EXTENSION 512
|
||||||
|
|
|
@ -87,14 +87,14 @@ NTHALAPI
|
||||||
KIRQL
|
KIRQL
|
||||||
FASTCALL
|
FASTCALL
|
||||||
KfAcquireSpinLock(
|
KfAcquireSpinLock(
|
||||||
IN PKSPIN_LOCK SpinLock);
|
IN OUT PKSPIN_LOCK SpinLock);
|
||||||
#define KeAcquireSpinLock(a,b) *(b) = KfAcquireSpinLock(a)
|
#define KeAcquireSpinLock(a,b) *(b) = KfAcquireSpinLock(a)
|
||||||
|
|
||||||
NTHALAPI
|
NTHALAPI
|
||||||
VOID
|
VOID
|
||||||
FASTCALL
|
FASTCALL
|
||||||
KfReleaseSpinLock(
|
KfReleaseSpinLock(
|
||||||
IN PKSPIN_LOCK SpinLock,
|
IN OUT PKSPIN_LOCK SpinLock,
|
||||||
IN KIRQL NewIrql);
|
IN KIRQL NewIrql);
|
||||||
#define KeReleaseSpinLock(a,b) KfReleaseSpinLock(a,b)
|
#define KeReleaseSpinLock(a,b) KfReleaseSpinLock(a,b)
|
||||||
|
|
||||||
|
@ -102,14 +102,14 @@ NTKERNELAPI
|
||||||
VOID
|
VOID
|
||||||
FASTCALL
|
FASTCALL
|
||||||
KefAcquireSpinLockAtDpcLevel(
|
KefAcquireSpinLockAtDpcLevel(
|
||||||
IN PKSPIN_LOCK SpinLock);
|
IN OUT PKSPIN_LOCK SpinLock);
|
||||||
#define KeAcquireSpinLockAtDpcLevel(SpinLock) KefAcquireSpinLockAtDpcLevel(SpinLock)
|
#define KeAcquireSpinLockAtDpcLevel(SpinLock) KefAcquireSpinLockAtDpcLevel(SpinLock)
|
||||||
|
|
||||||
NTKERNELAPI
|
NTKERNELAPI
|
||||||
VOID
|
VOID
|
||||||
FASTCALL
|
FASTCALL
|
||||||
KefReleaseSpinLockFromDpcLevel(
|
KefReleaseSpinLockFromDpcLevel(
|
||||||
IN PKSPIN_LOCK SpinLock);
|
IN OUT PKSPIN_LOCK SpinLock);
|
||||||
#define KeReleaseSpinLockFromDpcLevel(SpinLock) KefReleaseSpinLockFromDpcLevel(SpinLock)
|
#define KeReleaseSpinLockFromDpcLevel(SpinLock) KefReleaseSpinLockFromDpcLevel(SpinLock)
|
||||||
|
|
||||||
NTSYSAPI
|
NTSYSAPI
|
||||||
|
|
|
@ -19,7 +19,6 @@
|
||||||
|
|
||||||
/* DDK/IFS/NDK Headers */
|
/* DDK/IFS/NDK Headers */
|
||||||
#define _REALLY_GET_CALLERS_CALLER
|
#define _REALLY_GET_CALLERS_CALLER
|
||||||
#define SINGLE_GROUP_LEGACY_API
|
|
||||||
#include <excpt.h>
|
#include <excpt.h>
|
||||||
#include <ntdef.h>
|
#include <ntdef.h>
|
||||||
#include <ntifs.h>
|
#include <ntifs.h>
|
||||||
|
|
Loading…
Reference in a new issue