- Move more stuff to wdm.h

- Improve Interrupt Request Level definitions
- KeGetCurrentIrql : DDKAPI -> NTAPI
- KeGetCurrentThread : Fix the definition, remove a redundant one and NTKERNELAPI -> NTSYSAPI

svn path=/branches/header-work/; revision=45757
This commit is contained in:
Amine Khaldi 2010-03-02 15:49:27 +00:00
parent 7e19d52e3d
commit 8eb606c117
2 changed files with 121 additions and 72 deletions

View file

@ -963,6 +963,14 @@ InterlockedPushEntrySList(
#define PROCESSOR_FEATURE_MAX 64 #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
typedef enum _TRACE_INFORMATION_CLASS { typedef enum _TRACE_INFORMATION_CLASS {
TraceIdClass, TraceIdClass,
TraceHandleClass, TraceHandleClass,
@ -4873,6 +4881,10 @@ typedef struct _IO_STACK_LOCATION {
#define RTL_QUERY_REGISTRY_DIRECT 0x00000020 #define RTL_QUERY_REGISTRY_DIRECT 0x00000020
#define RTL_QUERY_REGISTRY_DELETE 0x00000040 #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 { typedef struct _RTL_BITMAP {
ULONG SizeOfBitMap; ULONG SizeOfBitMap;
PULONG Buffer; PULONG Buffer;
@ -5921,6 +5933,72 @@ RtlCheckBit(
* Executive Types * * Executive Types *
******************************************************************************/ ******************************************************************************/
#define MAXIMUM_SUPPORTED_EXTENSION 512
typedef ULONG PFN_COUNT;
typedef ULONG PFN_NUMBER, *PPFN_NUMBER;
typedef LONG SPFN_NUMBER, *PSPFN_NUMBER;
#if defined(_X86_)
#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)
#endif
#if defined(_AMD64_)
#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
#endif
#if defined(_IA64_)
#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
#endif
typedef struct _KFLOATING_SAVE {
ULONG ControlWord;
ULONG StatusWord;
ULONG ErrorOffset;
ULONG ErrorSelector;
ULONG DataOffset;
ULONG DataSelector;
ULONG Cr0NpxState;
ULONG Spare1;
} KFLOATING_SAVE, *PKFLOATING_SAVE;
typedef enum _KBUGCHECK_CALLBACK_REASON { typedef enum _KBUGCHECK_CALLBACK_REASON {
KbCallbackInvalid, KbCallbackInvalid,
KbCallbackReserved1, KbCallbackReserved1,
@ -6826,6 +6904,49 @@ ExFreeToPagedLookasideList(
#endif // !defined(MIDL_PASS) #endif // !defined(MIDL_PASS)
NTHALAPI
KIRQL
NTAPI
KeGetCurrentIrql(
VOID);
#if defined(_M_AMD64)
ULONG64
__readgsqword (
IN ULONG Offset);
#pragma intrinsic(__readgsqword)
FORCEINLINE
PKTHREAD
KeGetCurrentThread (
VOID)
{
return (struct _KTHREAD *)__readgsqword(0x188);
}
#endif
#if defined(_M_IX86) || defined(_M_IA64)
NTSYSAPI
PKTHREAD
NTAPI
KeGetCurrentThread(
VOID);
#endif
/*
** WMI structures
*/
typedef VOID
(DDKAPI *WMI_NOTIFICATION_CALLBACK)(
PVOID Wnode,
PVOID Context);
#ifdef __cplusplus #ifdef __cplusplus
} }

View file

@ -1573,14 +1573,6 @@ typedef VOID
IN HANDLE ThreadId, IN HANDLE ThreadId,
IN KPROCESSOR_MODE Mode); IN KPROCESSOR_MODE Mode);
#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
typedef struct _PHYSICAL_MEMORY_RANGE { typedef struct _PHYSICAL_MEMORY_RANGE {
PHYSICAL_ADDRESS BaseAddress; PHYSICAL_ADDRESS BaseAddress;
LARGE_INTEGER NumberOfBytes; LARGE_INTEGER NumberOfBytes;
@ -1601,28 +1593,12 @@ typedef struct _DRIVER_VERIFIER_THUNK_PAIRS {
#define DRIVER_VERIFIER_TRACK_POOL_ALLOCATIONS 0x0008 #define DRIVER_VERIFIER_TRACK_POOL_ALLOCATIONS 0x0008
#define DRIVER_VERIFIER_IO_CHECKING 0x0010 #define DRIVER_VERIFIER_IO_CHECKING 0x0010
#define HASH_STRING_ALGORITHM_DEFAULT 0
#define HASH_STRING_ALGORITHM_X65599 1
#define HASH_STRING_ALGORITHM_INVALID 0xffffffff
typedef VOID typedef VOID
(DDKAPI *PTIMER_APC_ROUTINE)( (DDKAPI *PTIMER_APC_ROUTINE)(
IN PVOID TimerContext, IN PVOID TimerContext,
IN ULONG TimerLowValue, IN ULONG TimerLowValue,
IN LONG TimerHighValue); IN LONG TimerHighValue);
/*
** WMI structures
*/
typedef VOID
(DDKAPI *WMI_NOTIFICATION_CALLBACK)(
PVOID Wnode,
PVOID Context);
/* /*
** Architecture specific structures ** Architecture specific structures
*/ */
@ -1641,7 +1617,6 @@ typedef VOID
#define CONTEXT_DEBUG_REGISTERS (CONTEXT_i386|0x00000010L) #define CONTEXT_DEBUG_REGISTERS (CONTEXT_i386|0x00000010L)
#define CONTEXT_EXTENDED_REGISTERS (CONTEXT_i386|0x00000020L) #define CONTEXT_EXTENDED_REGISTERS (CONTEXT_i386|0x00000020L)
#define CONTEXT_FULL (CONTEXT_CONTROL|CONTEXT_INTEGER|CONTEXT_SEGMENTS) #define CONTEXT_FULL (CONTEXT_CONTROL|CONTEXT_INTEGER|CONTEXT_SEGMENTS)
#define MAXIMUM_SUPPORTED_EXTENSION 512
typedef struct _FLOATING_SAVE_AREA { typedef struct _FLOATING_SAVE_AREA {
ULONG ControlWord; ULONG ControlWord;
@ -1683,24 +1658,6 @@ typedef struct _CONTEXT {
UCHAR ExtendedRegisters[MAXIMUM_SUPPORTED_EXTENSION]; UCHAR ExtendedRegisters[MAXIMUM_SUPPORTED_EXTENSION];
} CONTEXT; } CONTEXT;
//
// 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 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
typedef struct _KPCR_TIB { typedef struct _KPCR_TIB {
PVOID ExceptionList; /* 00 */ PVOID ExceptionList; /* 00 */
PVOID StackBase; /* 04 */ PVOID StackBase; /* 04 */
@ -1742,17 +1699,6 @@ typedef struct _KPCR {
#define KeGetPcr() PCR #define KeGetPcr() PCR
typedef struct _KFLOATING_SAVE {
ULONG ControlWord;
ULONG StatusWord;
ULONG ErrorOffset;
ULONG ErrorSelector;
ULONG DataOffset;
ULONG DataSelector;
ULONG Cr0NpxState;
ULONG Spare1;
} KFLOATING_SAVE, *PKFLOATING_SAVE;
FORCEINLINE FORCEINLINE
ULONG ULONG
KeGetCurrentProcessorNumber(VOID) KeGetCurrentProcessorNumber(VOID)
@ -1760,18 +1706,6 @@ KeGetCurrentProcessorNumber(VOID)
return (ULONG)__readfsbyte(FIELD_OFFSET(KPCR, Number)); return (ULONG)__readfsbyte(FIELD_OFFSET(KPCR, Number));
} }
NTHALAPI
KIRQL
DDKAPI
KeGetCurrentIrql(
VOID);
NTKERNELAPI
PRKTHREAD
NTAPI
KeGetCurrentThread(
VOID);
#define KI_USER_SHARED_DATA 0xffdf0000 #define KI_USER_SHARED_DATA 0xffdf0000
#define PAGE_SIZE 0x1000 #define PAGE_SIZE 0x1000
@ -2027,12 +1961,6 @@ typedef struct _KFLOATING_SAVE {
ULONG Dummy; ULONG Dummy;
} KFLOATING_SAVE, *PKFLOATING_SAVE; } KFLOATING_SAVE, *PKFLOATING_SAVE;
NTKERNELAPI
PRKTHREAD
NTAPI
KeGetCurrentThread(
VOID);
FORCEINLINE FORCEINLINE
PKPCR PKPCR
KeGetPcr(VOID) KeGetPcr(VOID)