#include "intrin.h"
-#if !defined(_NTHAL_)
-#define NTHALAPI DECLSPEC_IMPORT
-#else
-#define NTHALAPI
-#endif
-
/* Pseudo modifiers for parameters */
#ifndef IN
#define IN
#define RESTRICTED_POINTER
-#if defined(_WIN64)
-#define POINTER_ALIGNMENT DECLSPEC_ALIGN(8)
-#else
-#define POINTER_ALIGNMENT
-#endif
-
#define DECLSPEC_ADDRSAFE
#ifdef NONAMELESSUNION
IrpForward // Irp is wmi irp, but targeted at another device object
} SYSCTL_IRP_DISPOSITION, *PSYSCTL_IRP_DISPOSITION;
-//
-// Forwarder
-//
-struct _COMPRESSED_DATA_INFO;
-
#define KERNEL_STACK_SIZE 12288
#define KERNEL_LARGE_STACK_SIZE 61440
#define KERNEL_LARGE_STACK_COMMIT 12288
/* end winnt.h */
-#define THREAD_ALERT (0x0004)
-
/* Exported object types */
extern POBJECT_TYPE NTSYSAPI ExDesktopObjectType;
-extern POBJECT_TYPE NTSYSAPI ExEventObjectType;
-extern POBJECT_TYPE NTSYSAPI ExSemaphoreObjectType;
extern POBJECT_TYPE NTSYSAPI ExWindowStationObjectType;
extern ULONG NTSYSAPI IoDeviceHandlerObjectSize;
extern POBJECT_TYPE NTSYSAPI IoDeviceHandlerObjectType;
extern POBJECT_TYPE NTSYSAPI IoDeviceObjectType;
extern POBJECT_TYPE NTSYSAPI IoDriverObjectType;
-extern POBJECT_TYPE NTSYSAPI IoFileObjectType;
-extern POBJECT_TYPE NTSYSAPI PsThreadType;
extern POBJECT_TYPE NTSYSAPI LpcPortObjectType;
-extern POBJECT_TYPE NTSYSAPI SeTokenObjectType;
extern POBJECT_TYPE NTSYSAPI PsProcessType;
#if (NTDDI_VERSION >= NTDDI_LONGHORN)
#define MAX_WOW64_SHARED_ENTRIES 16
-extern volatile KSYSTEM_TIME KeTickCount;
-
#define NX_SUPPORT_POLICY_ALWAYSOFF 0
#define NX_SUPPORT_POLICY_ALWAYSON 1
#define NX_SUPPORT_POLICY_OPTIN 2
ASSERT(((E)->Header.Type == NotificationEvent) || \
((E)->Header.Type == SynchronizationEvent))
-
-typedef enum _TIMER_TYPE {
- NotificationTimer,
- SynchronizationTimer
-} TIMER_TYPE;
-
#define KEYBOARD_INSERT_ON 0x08
#define KEYBOARD_CAPS_LOCK_ON 0x04
#define KEYBOARD_NUM_LOCK_ON 0x02
struct _RTL_RANGE *Range
);
-typedef enum _EVENT_TYPE {
- NotificationEvent,
- SynchronizationEvent
-} EVENT_TYPE;
-
-typedef struct _KWAIT_BLOCK {
- LIST_ENTRY WaitListEntry;
- struct _KTHREAD * RESTRICTED_POINTER Thread;
- PVOID Object;
- struct _KWAIT_BLOCK * RESTRICTED_POINTER NextWaitBlock;
- USHORT WaitKey;
- UCHAR WaitType;
- UCHAR SpareByte;
-} KWAIT_BLOCK, *PKWAIT_BLOCK, *RESTRICTED_POINTER PRKWAIT_BLOCK;
-
-typedef enum _KINTERRUPT_MODE {
- LevelSensitive,
- Latched
-} KINTERRUPT_MODE;
-
-#define THREAD_WAIT_OBJECTS 3
-
-typedef VOID
-(DDKAPI *PKINTERRUPT_ROUTINE)(
- VOID);
-
-typedef enum _CREATE_FILE_TYPE {
- CreateFileTypeNone,
- CreateFileTypeNamedPipe,
- CreateFileTypeMailslot
-} CREATE_FILE_TYPE;
-
typedef struct _CONFIGURATION_INFORMATION {
ULONG DiskCount;
ULONG FloppyCount;
MaximumType
} CONFIGURATION_TYPE, *PCONFIGURATION_TYPE;
-#define IO_FORCE_ACCESS_CHECK 0x001
-#define IO_NO_PARAMETER_CHECKING 0x100
-
-#define IO_REPARSE 0x0
-#define IO_REMOUNT 0x1
-
typedef NTSTATUS
(DDKAPI *PIO_QUERY_DEVICE_ROUTINE)(
IN PVOID Context,
IoQueryDeviceMaxData
} IO_QUERY_DEVICE_DATA_FORMAT, *PIO_QUERY_DEVICE_DATA_FORMAT;
-typedef enum _KBUGCHECK_CALLBACK_REASON {
- KbCallbackInvalid,
- KbCallbackReserved1,
- KbCallbackSecondaryDumpData,
- KbCallbackDumpIo,
-} 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);
-
-/*
- * VOID
- * KeInitializeCallbackRecord(
- * IN PKBUGCHECK_CALLBACK_RECORD CallbackRecord)
- */
-#define KeInitializeCallbackRecord(CallbackRecord) \
- CallbackRecord->State = BufferEmpty;
-
-typedef enum _KDPC_IMPORTANCE {
- LowImportance,
- MediumImportance,
- HighImportance
-} KDPC_IMPORTANCE;
-
-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;
-
-#define FLUSH_MULTIPLE_MAXIMUM 32
-
-typedef enum _MM_SYSTEM_SIZE {
- MmSmallSystem,
- MmMediumSystem,
- MmLargeSystem
-} MM_SYSTEMSIZE;
-
-typedef struct _OBJECT_HANDLE_INFORMATION {
- ULONG HandleAttributes;
- ACCESS_MASK GrantedAccess;
-} OBJECT_HANDLE_INFORMATION, *POBJECT_HANDLE_INFORMATION;
-
-typedef struct _CLIENT_ID {
- HANDLE UniqueProcess;
- HANDLE UniqueThread;
-} CLIENT_ID, *PCLIENT_ID;
-
-typedef VOID
-(DDKAPI *PKSTART_ROUTINE)(
- IN PVOID StartContext);
-
typedef VOID
(DDKAPI *PCREATE_PROCESS_NOTIFY_ROUTINE)(
IN HANDLE ParentId,
ULONG SessionId;
} PROCESS_SESSION_INFORMATION, *PPROCESS_SESSION_INFORMATION;
-typedef VOID
-(DDKAPI *PREQUEST_POWER_COMPLETE)(
- IN PDEVICE_OBJECT DeviceObject,
- IN UCHAR MinorFunction,
- IN POWER_STATE PowerState,
- IN PVOID Context,
- IN PIO_STATUS_BLOCK IoStatus);
-
-typedef enum _TRACE_INFORMATION_CLASS {
- TraceIdClass,
- TraceHandleClass,
- TraceEnableFlagsClass,
- TraceEnableLevelClass,
- GlobalLoggerHandleClass,
- EventLoggerHandleClass,
- AllLoggerHandlesClass,
- TraceHandleByNameClass
-} TRACE_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
-} 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;
-} REG_DELETE_KEY_INFORMATION, *PREG_DELETE_KEY_INFORMATION;
-
-typedef struct _REG_SET_VALUE_KEY_INFORMATION
-{
- PVOID Object;
- PUNICODE_STRING ValueName;
- ULONG TitleIndex;
- ULONG Type;
- PVOID Data;
- ULONG DataSize;
-} REG_SET_VALUE_KEY_INFORMATION, *PREG_SET_VALUE_KEY_INFORMATION;
-
-typedef struct _REG_DELETE_VALUE_KEY_INFORMATION
-{
- PVOID Object;
- PUNICODE_STRING ValueName;
-} 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;
-} 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;
-} 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;
-} 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;
-} 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;
-} 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;
-} 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, *PREG_PRE_CREATE_KEY_INFORMATION;
-
-typedef struct _REG_POST_CREATE_KEY_INFORMATION
-{
- PUNICODE_STRING CompleteName;
- PVOID Object;
- NTSTATUS Status;
-} REG_POST_CREATE_KEY_INFORMATION, *PREG_POST_CREATE_KEY_INFORMATION;
-
-typedef struct _REG_PRE_OPEN_KEY_INFORMATION
-{
- PUNICODE_STRING CompleteName;
-} REG_PRE_OPEN_KEY_INFORMATION, *PREG_PRE_OPEN_KEY_INFORMATION;
-
-typedef struct _REG_POST_OPEN_KEY_INFORMATION
-{
- PUNICODE_STRING CompleteName;
- PVOID Object;
- NTSTATUS Status;
-} REG_POST_OPEN_KEY_INFORMATION, *PREG_POST_OPEN_KEY_INFORMATION;
-
-typedef struct _REG_POST_OPERATION_INFORMATION
-{
- PVOID Object;
- NTSTATUS Status;
-} REG_POST_OPERATION_INFORMATION,*PREG_POST_OPERATION_INFORMATION;
-
-typedef struct _REG_KEY_HANDLE_CLOSE_INFORMATION
-{
- PVOID Object;
-} REG_KEY_HANDLE_CLOSE_INFORMATION, *PREG_KEY_HANDLE_CLOSE_INFORMATION;
-
/*
** Storage structures
*/
IN HANDLE ThreadId,
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 {
PHYSICAL_ADDRESS BaseAddress;
LARGE_INTEGER NumberOfBytes;
#define DRIVER_VERIFIER_TRACK_POOL_ALLOCATIONS 0x0008
#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
(DDKAPI *PTIMER_APC_ROUTINE)(
IN PVOID TimerContext,
IN ULONG TimerLowValue,
IN LONG TimerHighValue);
-
-
-/*
-** WMI structures
-*/
-
-typedef VOID
-(DDKAPI *WMI_NOTIFICATION_CALLBACK)(
- PVOID Wnode,
- PVOID Context);
-
-
/*
** Architecture specific structures
*/
#define CONTEXT_DEBUG_REGISTERS (CONTEXT_i386|0x00000010L)
#define CONTEXT_EXTENDED_REGISTERS (CONTEXT_i386|0x00000020L)
#define CONTEXT_FULL (CONTEXT_CONTROL|CONTEXT_INTEGER|CONTEXT_SEGMENTS)
-#define MAXIMUM_SUPPORTED_EXTENSION 512
typedef struct _FLOATING_SAVE_AREA {
ULONG ControlWord;
UCHAR ExtendedRegisters[MAXIMUM_SUPPORTED_EXTENSION];
} 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 {
PVOID ExceptionList; /* 00 */
PVOID StackBase; /* 04 */
#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
ULONG
KeGetCurrentProcessorNumber(VOID)
return (ULONG)__readfsbyte(FIELD_OFFSET(KPCR, Number));
}
-NTHALAPI
-KIRQL
-DDKAPI
-KeGetCurrentIrql(
- VOID);
-
-NTKERNELAPI
-PRKTHREAD
-NTAPI
-KeGetCurrentThread(
- VOID);
-
-#define KI_USER_SHARED_DATA 0xffdf0000
-
-#define PAGE_SIZE 0x1000
-#define PAGE_SHIFT 12L
-
-#define SharedUserData ((KUSER_SHARED_DATA * CONST) KI_USER_SHARED_DATA)
-
extern NTKERNELAPI PVOID MmHighestUserAddress;
extern NTKERNELAPI PVOID MmSystemRangeStart;
extern NTKERNELAPI ULONG_PTR MmUserProbeAddress;
#define CONTEXT_EXCEPTION_REPORTING 0x80000000
#endif
-typedef struct DECLSPEC_ALIGN(16) _M128A {
- ULONGLONG Low;
- LONGLONG High;
-} M128A, *PM128A;
-
-typedef struct _XMM_SAVE_AREA32 {
- 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];
- M128A XmmRegisters[16];
- UCHAR Reserved4[96];
-} XMM_SAVE_AREA32, *PXMM_SAVE_AREA32;
-
typedef struct DECLSPEC_ALIGN(16) _CONTEXT {
ULONG64 P1Home;
ULONG64 P2Home;
ULONG64 LastExceptionFromRip;
} CONTEXT;
-//
-// Used to contain PFNs and PFN counts
-//
-typedef ULONG PFN_COUNT;
-typedef ULONG64 PFN_NUMBER, *PPFN_NUMBER;
-typedef LONG64 SPFN_NUMBER, *PSPFN_NUMBER;
-
-#define PASSIVE_LEVEL 0
-#define LOW_LEVEL 0
-#define APC_LEVEL 1
-#define DISPATCH_LEVEL 2
-#define CLOCK_LEVEL 13
-#define IPI_LEVEL 14
-#define POWER_LEVEL 14
-#define PROFILE_LEVEL 15
-#define HIGH_LEVEL 15
-
#define PAGE_SIZE 0x1000
#define PAGE_SHIFT 12L
#define PTI_SHIFT 12L
ULONG Dummy;
} KFLOATING_SAVE, *PKFLOATING_SAVE;
-NTKERNELAPI
-PRKTHREAD
-NTAPI
-KeGetCurrentThread(
- VOID);
-
FORCEINLINE
PKPCR
KeGetPcr(VOID)
#error Unknown architecture
#endif
-#define MM_DONT_ZERO_ALLOCATION 0x00000001
-#define MM_ALLOCATE_FROM_LOCAL_NODE_ONLY 0x00000002
-
-
-#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 enum _INTERLOCKED_RESULT {
ResultNegative = RESULT_NEGATIVE,
ResultZero = RESULT_ZERO,
/** SPINLOCK FUNCTIONS ********************************************************/
-NTKERNELAPI
-BOOLEAN
-FASTCALL
-KeTryToAcquireSpinLockAtDpcLevel(
- IN OUT PKSPIN_LOCK SpinLock
-);
-
-NTKERNELAPI
-BOOLEAN
-FASTCALL
-KeTestSpinLock(
- IN PKSPIN_LOCK SpinLock
-);
-
#if defined (_X86_)
#if defined(WIN9X_COMPAT_SPINLOCK)
#endif // !defined (_X86_)
-/*
-** Utillity functions
-*/
-
#define ARGUMENT_PRESENT(ArgumentPointer) \
((CHAR*)((ULONG_PTR)(ArgumentPointer)) != (CHAR*)NULL)
-/*
- * 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) \
- ((ULONG) ((ULONG_PTR) (Size) >> PAGE_SHIFT) + (((ULONG) (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) (((ULONG_PTR) Size + PAGE_SIZE - 1) & ~(PAGE_SIZE - 1)))
-
-
-
-#if defined(_X86_) || defined(_AMD64_)
-
-//
-// x86 and x64 performs a 0x2C interrupt
-//
-#define DbgRaiseAssertionFailure __int2c
-
-#elif defined(_ARM_)
-
-//
-// TODO
-//
-
-#else
-#error Unsupported Architecture
-#endif
-
-#if DBG
-
-#define ASSERT(exp) \
- (VOID)((!(exp)) ? \
- RtlAssert( (PVOID)#exp, (PVOID)__FILE__, __LINE__, NULL ), FALSE : TRUE)
-
-#define ASSERTMSG(msg, exp) \
- (VOID)((!(exp)) ? \
- RtlAssert( (PVOID)#exp, (PVOID)__FILE__, __LINE__, msg ), FALSE : TRUE)
-
-#define RTL_SOFT_ASSERT(exp) \
- (VOID)((!(exp)) ? \
- DbgPrint("%s(%d): Soft assertion failed\n Expression: %s\n", __FILE__, __LINE__, #exp), FALSE : TRUE)
-
-#define RTL_SOFT_ASSERTMSG(msg, exp) \
- (VOID)((!(exp)) ? \
- DbgPrint("%s(%d): Soft assertion failed\n Expression: %s\n Message: %s\n", __FILE__, __LINE__, #exp, (msg)), FALSE : TRUE)
-
-#define RTL_VERIFY(exp) ASSERT(exp)
-#define RTL_VERIFYMSG(msg, exp) ASSERT(msg, exp)
-
-#define RTL_SOFT_VERIFY(exp) RTL_SOFT_ASSERT(exp)
-#define RTL_SOFT_VERIFYMSG(msg, exp) RTL_SOFT_ASSERTMSG(msg, exp)
-
-#if defined(_MSC_VER)
-
-#define NT_ASSERT(exp) \
- ((!(exp)) ? \
- (__annotation(L"Debug", L"AssertFail", L#exp), \
- DbgRaiseAssertionFailure(), FALSE) : TRUE)
-
-#define NT_ASSERTMSG(msg, exp) \
- ((!(exp)) ? \
- (__annotation(L"Debug", L"AssertFail", L##msg), \
- DbgRaiseAssertionFailure(), FALSE) : TRUE)
-
-#define NT_ASSERTMSGW(msg, exp) \
- ((!(exp)) ? \
- (__annotation(L"Debug", L"AssertFail", msg), \
- DbgRaiseAssertionFailure(), FALSE) : TRUE)
-
-#else
-
-//
-// GCC doesn't support __annotation (nor PDB)
-//
-#define NT_ASSERT(exp) \
- (VOID)((!(exp)) ? (DbgRaiseAssertionFailure(), FALSE) : TRUE)
-
-#define NT_ASSERTMSG NT_ASSERT
-#define NT_ASSERTMSGW NT_ASSERT
-
-#endif
-
-#else /* !DBG */
-
-#define ASSERT(exp) ((VOID) 0)
-#define ASSERTMSG(msg, exp) ((VOID) 0)
-
-#define RTL_SOFT_ASSERT(exp) ((VOID) 0)
-#define RTL_SOFT_ASSERTMSG(msg, exp) ((VOID) 0)
-
-#define RTL_VERIFY(exp) ((exp) ? TRUE : FALSE)
-#define RTL_VERIFYMSG(msg, exp) ((exp) ? TRUE : FALSE)
-
-#define RTL_SOFT_VERIFY(exp) ((exp) ? TRUE : FALSE)
-#define RTL_SOFT_VERIFYMSG(msg, exp) ((exp) ? TRUE : FALSE)
-
-#define NT_ASSERT(exp) ((VOID)0)
-#define NT_ASSERTMSG(exp) ((VOID)0)
-#define NT_ASSERTMSGW(exp) ((VOID)0)
-
-#endif /* DBG */
-
-/* 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;
-
-/*
-** Driver support routines
-*/
-
-/** Runtime library routines **/
-
-static __inline VOID
-InitializeListHead(
- IN PLIST_ENTRY ListHead)
-{
- ListHead->Flink = ListHead->Blink = ListHead;
-}
-
-static __inline VOID
-InsertHeadList(
- IN PLIST_ENTRY ListHead,
- IN PLIST_ENTRY Entry)
-{
- PLIST_ENTRY OldFlink;
- OldFlink = ListHead->Flink;
- Entry->Flink = OldFlink;
- Entry->Blink = ListHead;
- OldFlink->Blink = Entry;
- ListHead->Flink = Entry;
-}
-
-static __inline VOID
-InsertTailList(
- IN PLIST_ENTRY ListHead,
- IN PLIST_ENTRY Entry)
-{
- PLIST_ENTRY OldBlink;
- OldBlink = ListHead->Blink;
- Entry->Flink = ListHead;
- Entry->Blink = OldBlink;
- OldBlink->Flink = Entry;
- ListHead->Blink = Entry;
-}
-
-/*
- * BOOLEAN
- * IsListEmpty(
- * IN PLIST_ENTRY ListHead)
- */
-#define IsListEmpty(_ListHead) \
- ((_ListHead)->Flink == (_ListHead))
-
-/*
- * PSINGLE_LIST_ENTRY
- * PopEntryList(
- * IN PSINGLE_LIST_ENTRY ListHead)
- */
-#define PopEntryList(ListHead) \
- (ListHead)->Next; \
- { \
- PSINGLE_LIST_ENTRY _FirstEntry; \
- _FirstEntry = (ListHead)->Next; \
- if (_FirstEntry != NULL) \
- (ListHead)->Next = _FirstEntry->Next; \
- }
-
-/*
- * VOID
- * PushEntryList(
- * IN PSINGLE_LIST_ENTRY ListHead,
- * IN PSINGLE_LIST_ENTRY Entry)
- */
-#define PushEntryList(_ListHead, _Entry) \
- (_Entry)->Next = (_ListHead)->Next; \
- (_ListHead)->Next = (_Entry); \
-
-static __inline BOOLEAN
-RemoveEntryList(
- IN PLIST_ENTRY Entry)
-{
- PLIST_ENTRY OldFlink;
- PLIST_ENTRY OldBlink;
-
- OldFlink = Entry->Flink;
- OldBlink = Entry->Blink;
- OldFlink->Blink = OldBlink;
- OldBlink->Flink = OldFlink;
- return (BOOLEAN)(OldFlink == OldBlink);
-}
-
-static __inline PLIST_ENTRY
-RemoveHeadList(
- IN PLIST_ENTRY ListHead)
-{
- PLIST_ENTRY Flink;
- PLIST_ENTRY Entry;
-
- Entry = ListHead->Flink;
- Flink = Entry->Flink;
- ListHead->Flink = Flink;
- Flink->Blink = ListHead;
- return Entry;
-}
-
-static __inline PLIST_ENTRY
-RemoveTailList(
- IN PLIST_ENTRY ListHead)
-{
- PLIST_ENTRY Blink;
- PLIST_ENTRY Entry;
-
- Entry = ListHead->Blink;
- Blink = Entry->Blink;
- ListHead->Blink = Blink;
- Blink->Flink = ListHead;
- return Entry;
-}
-
NTSYSAPI
NTSTATUS
NTAPI
IN ULONG Count,
IN ULONG Flags);
-NTKERNELAPI
-BOOLEAN
-NTAPI
-KeAreAllApcsDisabled(
- VOID
-);
-
-/* Guarded Mutex routines */
-
-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
-);
-
-/* Fast Mutex */
-#define ExInitializeFastMutex(_FastMutex) \
-{ \
- (_FastMutex)->Count = FM_LOCK_BIT; \
- (_FastMutex)->Owner = NULL; \
- (_FastMutex)->Contention = 0; \
- KeInitializeEvent(&(_FastMutex)->Gate, SynchronizationEvent, FALSE); \
-}
-
-NTKERNELAPI
-VOID
-NTAPI
-KeInitializeEvent(
- IN PRKEVENT Event,
- IN EVENT_TYPE Type,
- IN BOOLEAN State);
-
/******************************************************************************
* Executive Types *
******************************************************************************/
#define ExInterlockedFreeToZone(Zone, Block, Lock) \
ExInterlockedPushEntryList(&(Zone)->FreeList, (PSINGLE_LIST_ENTRY)(Block), Lock)
-/*
- * VOID
- * InitializeSListHead(
- * IN PSLIST_HEADER SListHead)
- */
-#define InitializeSListHead(_SListHead) \
- (_SListHead)->Alignment = 0
-
-#define ExInitializeSListHead InitializeSListHead
-
/*
* BOOLEAN
* ExIsFullZone(
#define ExIsResourceAcquired ExIsResourceAcquiredSharedLite
#define ExReleaseResourceForThread ExReleaseResourceForThreadLite
-
-#if DBG
-
-#define PAGED_CODE() { \
- if (KeGetCurrentIrql() > APC_LEVEL) { \
- KdPrint( ("NTDDK: Pageable code called at IRQL > APC_LEVEL (%d)\n", KeGetCurrentIrql() )); \
- ASSERT(FALSE); \
- } \
-}
-
-#else
-
-#define PAGED_CODE()
-
-#endif
-
-NTKERNELAPI
-VOID
-NTAPI
-ProbeForRead(
- IN CONST VOID *Address,
- IN SIZE_T Length,
- IN ULONG Alignment);
-
-NTKERNELAPI
-VOID
-NTAPI
-ProbeForWrite(
- IN PVOID Address,
- IN SIZE_T Length,
- IN ULONG Alignment);
-
-
-
-/** Configuration manager routines **/
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-CmRegisterCallback(
- IN PEX_CALLBACK_FUNCTION Function,
- IN PVOID Context,
- IN OUT PLARGE_INTEGER Cookie);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-CmUnRegisterCallback(
- IN LARGE_INTEGER Cookie);
-
-
-
/** Filesystem runtime library routines **/
NTKERNELAPI
FsRtlIsTotalDeviceFailure(
IN NTSTATUS Status);
-
-
/** Hardware abstraction layer routines **/
NTHALAPI
PADAPTER_OBJECT AdapterObject
);
+/** I/O manager routines **/
-/** Io access routines **/
-
-#if !defined(_M_AMD64)
-NTHALAPI
-VOID
-NTAPI
-READ_PORT_BUFFER_UCHAR(
- IN PUCHAR Port,
- IN PUCHAR Buffer,
- IN ULONG Count);
-
-NTHALAPI
-VOID
-NTAPI
-READ_PORT_BUFFER_ULONG(
- IN PULONG Port,
- IN PULONG Buffer,
- IN ULONG Count);
-
-NTHALAPI
-VOID
-NTAPI
-READ_PORT_BUFFER_USHORT(
- IN PUSHORT Port,
- IN PUSHORT Buffer,
- IN ULONG Count);
-
-NTHALAPI
-UCHAR
-NTAPI
-READ_PORT_UCHAR(
- IN PUCHAR Port);
-
-NTHALAPI
-ULONG
-NTAPI
-READ_PORT_ULONG(
- IN PULONG Port);
-
-NTHALAPI
-USHORT
-NTAPI
-READ_PORT_USHORT(
- IN PUSHORT Port);
-
+#ifndef DMA_MACROS_DEFINED
NTKERNELAPI
-VOID
+NTSTATUS
NTAPI
-READ_REGISTER_BUFFER_UCHAR(
- IN PUCHAR Register,
- IN PUCHAR Buffer,
- IN ULONG Count);
+IoAllocateAdapterChannel(
+ IN PADAPTER_OBJECT AdapterObject,
+ IN PDEVICE_OBJECT DeviceObject,
+ IN ULONG NumberOfMapRegisters,
+ IN PDRIVER_CONTROL ExecutionRoutine,
+ IN PVOID Context);
+#endif
NTKERNELAPI
VOID
NTAPI
-READ_REGISTER_BUFFER_ULONG(
- IN PULONG Register,
- IN PULONG Buffer,
- IN ULONG Count);
+IoAllocateController(
+ IN PCONTROLLER_OBJECT ControllerObject,
+ IN PDEVICE_OBJECT DeviceObject,
+ IN PDRIVER_CONTROL ExecutionRoutine,
+ IN PVOID Context);
+
+/*
+ * VOID IoAssignArcName(
+ * IN PUNICODE_STRING ArcName,
+ * IN PUNICODE_STRING DeviceName);
+ */
+#define IoAssignArcName(_ArcName, _DeviceName) ( \
+ IoCreateSymbolicLink((_ArcName), (_DeviceName)))
NTKERNELAPI
VOID
NTAPI
-READ_REGISTER_BUFFER_USHORT(
- IN PUSHORT Register,
- IN PUSHORT Buffer,
- IN ULONG Count);
+IoCancelFileOpen(
+ IN PDEVICE_OBJECT DeviceObject,
+ IN PFILE_OBJECT FileObject);
NTKERNELAPI
-UCHAR
+PCONTROLLER_OBJECT
NTAPI
-READ_REGISTER_UCHAR(
- IN PUCHAR Register);
+IoCreateController(
+ IN ULONG Size);
NTKERNELAPI
-ULONG
+NTSTATUS
NTAPI
-READ_REGISTER_ULONG(
- IN PULONG Register);
+IoCreateDisk(
+ IN PDEVICE_OBJECT DeviceObject,
+ IN PCREATE_DISK Disk);
NTKERNELAPI
-USHORT
-NTAPI
-READ_REGISTER_USHORT(
- IN PUSHORT Register);
-
-NTHALAPI
-VOID
-NTAPI
-WRITE_PORT_BUFFER_UCHAR(
- IN PUCHAR Port,
- IN PUCHAR Buffer,
- IN ULONG Count);
-
-NTHALAPI
VOID
NTAPI
-WRITE_PORT_BUFFER_ULONG(
- IN PULONG Port,
- IN PULONG Buffer,
- IN ULONG Count);
+IoDeleteController(
+ IN PCONTROLLER_OBJECT ControllerObject);
-NTHALAPI
-VOID
-NTAPI
-WRITE_PORT_BUFFER_USHORT(
- IN PUSHORT Port,
- IN PUSHORT Buffer,
- IN ULONG Count);
+/*
+ * VOID
+ * IoDeassignArcName(
+ * IN PUNICODE_STRING ArcName)
+ */
+#define IoDeassignArcName IoDeleteSymbolicLink
-NTHALAPI
+NTKERNELAPI
VOID
NTAPI
-WRITE_PORT_UCHAR(
- IN PUCHAR Port,
- IN UCHAR Value);
+IoFreeController(
+ IN PCONTROLLER_OBJECT ControllerObject);
-NTHALAPI
-VOID
+NTKERNELAPI
+PCONFIGURATION_INFORMATION
NTAPI
-WRITE_PORT_ULONG(
- IN PULONG Port,
- IN ULONG Value);
+IoGetConfigurationInformation(
+ VOID);
-NTHALAPI
-VOID
+NTKERNELAPI
+PDEVICE_OBJECT
NTAPI
-WRITE_PORT_USHORT(
- IN PUSHORT Port,
- IN USHORT Value);
+IoGetDeviceToVerify(
+ IN PETHREAD Thread);
NTKERNELAPI
-VOID
+PGENERIC_MAPPING
NTAPI
-WRITE_REGISTER_BUFFER_UCHAR(
- IN PUCHAR Register,
- IN PUCHAR Buffer,
- IN ULONG Count);
+IoGetFileObjectGenericMapping(
+ VOID);
NTKERNELAPI
-VOID
+PIRP
NTAPI
-WRITE_REGISTER_BUFFER_ULONG(
- IN PULONG Register,
- IN PULONG Buffer,
- IN ULONG Count);
+IoMakeAssociatedIrp(
+ IN PIRP Irp,
+ IN CCHAR StackSize);
NTKERNELAPI
-VOID
+NTSTATUS
NTAPI
-WRITE_REGISTER_BUFFER_USHORT(
- IN PUSHORT Register,
- IN PUSHORT Buffer,
- IN ULONG Count);
+IoQueryDeviceDescription(
+ IN PINTERFACE_TYPE BusType OPTIONAL,
+ IN PULONG BusNumber OPTIONAL,
+ IN PCONFIGURATION_TYPE ControllerType OPTIONAL,
+ IN PULONG ControllerNumber OPTIONAL,
+ IN PCONFIGURATION_TYPE PeripheralType OPTIONAL,
+ IN PULONG PeripheralNumber OPTIONAL,
+ IN PIO_QUERY_DEVICE_ROUTINE CalloutRoutine,
+ IN PVOID Context);
NTKERNELAPI
VOID
NTAPI
-WRITE_REGISTER_UCHAR(
- IN PUCHAR Register,
- IN UCHAR Value);
+IoRaiseHardError(
+ IN PIRP Irp,
+ IN PVPB Vpb OPTIONAL,
+ IN PDEVICE_OBJECT RealDeviceObject);
NTKERNELAPI
-VOID
+BOOLEAN
NTAPI
-WRITE_REGISTER_ULONG(
- IN PULONG Register,
- IN ULONG Value);
+IoRaiseInformationalHardError(
+ IN NTSTATUS ErrorStatus,
+ IN PUNICODE_STRING String OPTIONAL,
+ IN PKTHREAD Thread OPTIONAL);
NTKERNELAPI
-VOID
+NTSTATUS
NTAPI
-WRITE_REGISTER_USHORT(
- IN PUSHORT Register,
- IN USHORT Value);
-
-#else
-
-FORCEINLINE
-VOID
-READ_PORT_BUFFER_UCHAR(
- IN PUCHAR Port,
- IN PUCHAR Buffer,
- IN ULONG Count)
-{
- __inbytestring((USHORT)(ULONG_PTR)Port, Buffer, Count);
-}
-
-FORCEINLINE
-VOID
-READ_PORT_BUFFER_ULONG(
- IN PULONG Port,
- IN PULONG Buffer,
- IN ULONG Count)
-{
- __indwordstring((USHORT)(ULONG_PTR)Port, Buffer, Count);
-}
-
-FORCEINLINE
-VOID
-READ_PORT_BUFFER_USHORT(
- IN PUSHORT Port,
- IN PUSHORT Buffer,
- IN ULONG Count)
-{
- __inwordstring((USHORT)(ULONG_PTR)Port, Buffer, Count);
-}
-
-FORCEINLINE
-UCHAR
-READ_PORT_UCHAR(
- IN PUCHAR Port)
-{
- return __inbyte((USHORT)(ULONG_PTR)Port);
-}
-
-FORCEINLINE
-ULONG
-READ_PORT_ULONG(
- IN PULONG Port)
-{
- return __indword((USHORT)(ULONG_PTR)Port);
-}
-
-FORCEINLINE
-USHORT
-READ_PORT_USHORT(
- IN PUSHORT Port)
-{
- return __inword((USHORT)(ULONG_PTR)Port);
-}
-
-FORCEINLINE
-VOID
-READ_REGISTER_BUFFER_UCHAR(
- IN PUCHAR Register,
- IN PUCHAR Buffer,
- IN ULONG Count)
-{
- __movsb(Register, Buffer, Count);
-}
-
-FORCEINLINE
-VOID
-READ_REGISTER_BUFFER_ULONG(
- IN PULONG Register,
- IN PULONG Buffer,
- IN ULONG Count)
-{
- __movsd(Register, Buffer, Count);
-}
-
-FORCEINLINE
-VOID
-READ_REGISTER_BUFFER_USHORT(
- IN PUSHORT Register,
- IN PUSHORT Buffer,
- IN ULONG Count)
-{
- __movsw(Register, Buffer, Count);
-}
-
-FORCEINLINE
-UCHAR
-READ_REGISTER_UCHAR(
- IN PUCHAR Register)
-{
- return *Register;
-}
-
-FORCEINLINE
-ULONG
-READ_REGISTER_ULONG(
- IN PULONG Register)
-{
- return *Register;
-}
-
-FORCEINLINE
-USHORT
-READ_REGISTER_USHORT(
- IN PUSHORT Register)
-{
- return *Register;
-}
-
-FORCEINLINE
-VOID
-WRITE_PORT_BUFFER_UCHAR(
- IN PUCHAR Port,
- IN PUCHAR Buffer,
- IN ULONG Count)
-{
- __outbytestring((USHORT)(ULONG_PTR)Port, Buffer, Count);
-}
-
-FORCEINLINE
-VOID
-WRITE_PORT_BUFFER_ULONG(
- IN PULONG Port,
- IN PULONG Buffer,
- IN ULONG Count)
-{
- __outdwordstring((USHORT)(ULONG_PTR)Port, Buffer, Count);
-}
-
-FORCEINLINE
-VOID
-WRITE_PORT_BUFFER_USHORT(
- IN PUSHORT Port,
- IN PUSHORT Buffer,
- IN ULONG Count)
-{
- __outwordstring((USHORT)(ULONG_PTR)Port, Buffer, Count);
-}
-
-FORCEINLINE
-VOID
-WRITE_PORT_UCHAR(
- IN PUCHAR Port,
- IN UCHAR Value)
-{
- __outbyte((USHORT)(ULONG_PTR)Port, Value);
-}
-
-FORCEINLINE
-VOID
-WRITE_PORT_ULONG(
- IN PULONG Port,
- IN ULONG Value)
-{
- __outdword((USHORT)(ULONG_PTR)Port, Value);
-}
-
-FORCEINLINE
-VOID
-WRITE_PORT_USHORT(
- IN PUSHORT Port,
- IN USHORT Value)
-{
- __outword((USHORT)(ULONG_PTR)Port, Value);
-}
-
-FORCEINLINE
-VOID
-WRITE_REGISTER_BUFFER_UCHAR(
- IN PUCHAR Register,
- IN PUCHAR Buffer,
- IN ULONG Count)
-{
- LONG Synch;
- __movsb(Register, Buffer, Count);
- InterlockedOr(&Synch, 1);
-}
-
-FORCEINLINE
-VOID
-WRITE_REGISTER_BUFFER_ULONG(
- IN PULONG Register,
- IN PULONG Buffer,
- IN ULONG Count)
-{
- LONG Synch;
- __movsd(Register, Buffer, Count);
- InterlockedOr(&Synch, 1);
-}
-
-FORCEINLINE
-VOID
-WRITE_REGISTER_BUFFER_USHORT(
- IN PUSHORT Register,
- IN PUSHORT Buffer,
- IN ULONG Count)
-{
- LONG Synch;
- __movsw(Register, Buffer, Count);
- InterlockedOr(&Synch, 1);
-}
-
-FORCEINLINE
-VOID
-WRITE_REGISTER_UCHAR(
- IN PUCHAR Register,
- IN UCHAR Value)
-{
- LONG Synch;
- *Register = Value;
- InterlockedOr(&Synch, 1);
-}
-
-FORCEINLINE
-VOID
-WRITE_REGISTER_ULONG(
- IN PULONG Register,
- IN ULONG Value)
-{
- LONG Synch;
- *Register = Value;
- InterlockedOr(&Synch, 1);
-}
-
-FORCEINLINE
-VOID
-WRITE_REGISTER_USHORT(
- IN PUSHORT Register,
- IN USHORT Value)
-{
- LONG Sync;
- *Register = Value;
- InterlockedOr(&Sync, 1);
-}
-
-#endif
-
-/** I/O manager routines **/
-
-NTKERNELAPI
-VOID
-NTAPI
-IoAcquireCancelSpinLock(
- OUT PKIRQL Irql);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoAcquireRemoveLockEx(
- IN PIO_REMOVE_LOCK RemoveLock,
- IN OPTIONAL PVOID Tag OPTIONAL,
- IN PCSTR File,
- IN ULONG Line,
- IN ULONG RemlockSize);
-
-/*
- * NTSTATUS
- * IoAcquireRemoveLock(
- * IN PIO_REMOVE_LOCK RemoveLock,
- * IN OPTIONAL PVOID Tag)
- */
-#define IoAcquireRemoveLock(_RemoveLock, \
- _Tag) \
- IoAcquireRemoveLockEx(_RemoveLock, _Tag, __FILE__, __LINE__, sizeof(IO_REMOVE_LOCK))
-
-/*
- * VOID
- * IoAdjustPagingPathCount(
- * IN PLONG Count,
- * IN BOOLEAN Increment)
- */
-#define IoAdjustPagingPathCount(_Count, \
- _Increment) \
-{ \
- if (_Increment) \
- { \
- InterlockedIncrement(_Count); \
- } \
- else \
- { \
- InterlockedDecrement(_Count); \
- } \
-}
-
-#ifndef DMA_MACROS_DEFINED
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoAllocateAdapterChannel(
- IN PADAPTER_OBJECT AdapterObject,
- IN PDEVICE_OBJECT DeviceObject,
- IN ULONG NumberOfMapRegisters,
- IN PDRIVER_CONTROL ExecutionRoutine,
- IN PVOID Context);
-#endif
-
-NTKERNELAPI
-VOID
-NTAPI
-IoAllocateController(
- IN PCONTROLLER_OBJECT ControllerObject,
- IN PDEVICE_OBJECT DeviceObject,
- IN PDRIVER_CONTROL ExecutionRoutine,
- IN PVOID Context);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoAllocateDriverObjectExtension(
- IN PDRIVER_OBJECT DriverObject,
- IN PVOID ClientIdentificationAddress,
- IN ULONG DriverObjectExtensionSize,
- OUT PVOID *DriverObjectExtension);
-
-NTKERNELAPI
-PVOID
-NTAPI
-IoAllocateErrorLogEntry(
- IN PVOID IoObject,
- IN UCHAR EntrySize);
-
-NTKERNELAPI
-PIRP
-NTAPI
-IoAllocateIrp(
- IN CCHAR StackSize,
- IN BOOLEAN ChargeQuota);
-
-NTKERNELAPI
-PMDL
-NTAPI
-IoAllocateMdl(
- IN PVOID VirtualAddress,
- IN ULONG Length,
- IN BOOLEAN SecondaryBuffer,
- IN BOOLEAN ChargeQuota,
- IN OUT PIRP Irp OPTIONAL);
-
-NTKERNELAPI
-PIO_WORKITEM
-NTAPI
-IoAllocateWorkItem(
- IN PDEVICE_OBJECT DeviceObject);
-
-/*
- * VOID IoAssignArcName(
- * IN PUNICODE_STRING ArcName,
- * IN PUNICODE_STRING DeviceName);
- */
-#define IoAssignArcName(_ArcName, _DeviceName) ( \
- IoCreateSymbolicLink((_ArcName), (_DeviceName)))
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoAttachDevice(
- IN PDEVICE_OBJECT SourceDevice,
- IN PUNICODE_STRING TargetDevice,
- OUT PDEVICE_OBJECT *AttachedDevice);
-
-NTKERNELAPI
-PDEVICE_OBJECT
-NTAPI
-IoAttachDeviceToDeviceStack(
- IN PDEVICE_OBJECT SourceDevice,
- IN PDEVICE_OBJECT TargetDevice);
-
-NTKERNELAPI
-PIRP
-NTAPI
-IoBuildAsynchronousFsdRequest(
- IN ULONG MajorFunction,
- IN PDEVICE_OBJECT DeviceObject,
- IN OUT PVOID Buffer OPTIONAL,
- IN ULONG Length OPTIONAL,
- IN PLARGE_INTEGER StartingOffset OPTIONAL,
- IN PIO_STATUS_BLOCK IoStatusBlock OPTIONAL);
-
-NTKERNELAPI
-PIRP
-NTAPI
-IoBuildDeviceIoControlRequest(
- IN ULONG IoControlCode,
- IN PDEVICE_OBJECT DeviceObject,
- IN PVOID InputBuffer OPTIONAL,
- IN ULONG InputBufferLength,
- OUT PVOID OutputBuffer OPTIONAL,
- IN ULONG OutputBufferLength,
- IN BOOLEAN InternalDeviceIoControl,
- IN PKEVENT Event,
- OUT PIO_STATUS_BLOCK IoStatusBlock);
-
-NTKERNELAPI
-VOID
-NTAPI
-IoBuildPartialMdl(
- IN PMDL SourceMdl,
- IN OUT PMDL TargetMdl,
- IN PVOID VirtualAddress,
- IN ULONG Length);
-
-NTKERNELAPI
-PIRP
-NTAPI
-IoBuildSynchronousFsdRequest(
- IN ULONG MajorFunction,
- IN PDEVICE_OBJECT DeviceObject,
- IN OUT PVOID Buffer OPTIONAL,
- IN ULONG Length OPTIONAL,
- IN PLARGE_INTEGER StartingOffset OPTIONAL,
- IN PKEVENT Event,
- OUT PIO_STATUS_BLOCK IoStatusBlock);
-
-NTKERNELAPI
-NTSTATUS
-FASTCALL
-IofCallDriver(
- IN PDEVICE_OBJECT DeviceObject,
- IN OUT PIRP Irp);
-
-/*
- * NTSTATUS
- * IoCallDriver(
- * IN PDEVICE_OBJECT DeviceObject,
- * IN OUT PIRP Irp)
- */
-#define IoCallDriver IofCallDriver
-
-NTKERNELAPI
-VOID
-NTAPI
-IoCancelFileOpen(
- IN PDEVICE_OBJECT DeviceObject,
- IN PFILE_OBJECT FileObject);
-
-NTKERNELAPI
-BOOLEAN
-NTAPI
-IoCancelIrp(
- IN PIRP Irp);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoCheckShareAccess(
- IN ACCESS_MASK DesiredAccess,
- IN ULONG DesiredShareAccess,
- IN OUT PFILE_OBJECT FileObject,
- IN OUT PSHARE_ACCESS ShareAccess,
- IN BOOLEAN Update);
-
-NTKERNELAPI
-VOID
-FASTCALL
-IofCompleteRequest(
- IN PIRP Irp,
- IN CCHAR PriorityBoost);
-
-/*
- * VOID
- * IoCompleteRequest(
- * IN PIRP Irp,
- * IN CCHAR PriorityBoost)
- */
-#define IoCompleteRequest IofCompleteRequest
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoConnectInterrupt(
- OUT PKINTERRUPT *InterruptObject,
- IN PKSERVICE_ROUTINE ServiceRoutine,
- IN PVOID ServiceContext,
- IN PKSPIN_LOCK SpinLock OPTIONAL,
- IN ULONG Vector,
- IN KIRQL Irql,
- IN KIRQL SynchronizeIrql,
- IN KINTERRUPT_MODE InterruptMode,
- IN BOOLEAN ShareVector,
- IN KAFFINITY ProcessorEnableMask,
- IN BOOLEAN FloatingSave);
-
-/*
- * PIO_STACK_LOCATION
- * IoGetCurrentIrpStackLocation(
- * IN PIRP Irp)
- */
-#define IoGetCurrentIrpStackLocation(_Irp) \
- ((_Irp)->Tail.Overlay.CurrentStackLocation)
-
-/*
- * PIO_STACK_LOCATION
- * IoGetNextIrpStackLocation(
- * IN PIRP Irp)
- */
-#define IoGetNextIrpStackLocation(_Irp) \
- ((_Irp)->Tail.Overlay.CurrentStackLocation - 1)
-
-/*
- * VOID
- * IoCopyCurrentIrpStackLocationToNext(
- * IN PIRP Irp)
- */
-#define IoCopyCurrentIrpStackLocationToNext(_Irp) \
-{ \
- PIO_STACK_LOCATION _IrpSp; \
- PIO_STACK_LOCATION _NextIrpSp; \
- _IrpSp = IoGetCurrentIrpStackLocation(_Irp); \
- _NextIrpSp = IoGetNextIrpStackLocation(_Irp); \
- RtlCopyMemory(_NextIrpSp, _IrpSp, \
- FIELD_OFFSET(IO_STACK_LOCATION, CompletionRoutine)); \
- _NextIrpSp->Control = 0; \
-}
-
-NTKERNELAPI
-PCONTROLLER_OBJECT
-NTAPI
-IoCreateController(
- IN ULONG Size);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoCreateDevice(
- IN PDRIVER_OBJECT DriverObject,
- IN ULONG DeviceExtensionSize,
- IN PUNICODE_STRING DeviceName OPTIONAL,
- IN DEVICE_TYPE DeviceType,
- IN ULONG DeviceCharacteristics,
- IN BOOLEAN Exclusive,
- OUT PDEVICE_OBJECT *DeviceObject);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoCreateDisk(
- IN PDEVICE_OBJECT DeviceObject,
- IN PCREATE_DISK Disk);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoCreateFile(
- 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 Disposition,
- IN ULONG CreateOptions,
- IN PVOID EaBuffer OPTIONAL,
- IN ULONG EaLength,
- IN CREATE_FILE_TYPE CreateFileType,
- IN PVOID ExtraCreateParameters OPTIONAL,
- IN ULONG Options);
-
-NTKERNELAPI
-PKEVENT
-NTAPI
-IoCreateNotificationEvent(
- IN PUNICODE_STRING EventName,
- OUT PHANDLE EventHandle);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoCreateSymbolicLink(
- IN PUNICODE_STRING SymbolicLinkName,
- IN PUNICODE_STRING DeviceName);
-
-NTKERNELAPI
-PKEVENT
-NTAPI
-IoCreateSynchronizationEvent(
- IN PUNICODE_STRING EventName,
- OUT PHANDLE EventHandle);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoCreateUnprotectedSymbolicLink(
- IN PUNICODE_STRING SymbolicLinkName,
- IN PUNICODE_STRING DeviceName);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoCsqInitialize(
- PIO_CSQ Csq,
- IN PIO_CSQ_INSERT_IRP CsqInsertIrp,
- IN PIO_CSQ_REMOVE_IRP CsqRemoveIrp,
- IN PIO_CSQ_PEEK_NEXT_IRP CsqPeekNextIrp,
- IN PIO_CSQ_ACQUIRE_LOCK CsqAcquireLock,
- IN PIO_CSQ_RELEASE_LOCK CsqReleaseLock,
- IN PIO_CSQ_COMPLETE_CANCELED_IRP CsqCompleteCanceledIrp);
-
-NTKERNELAPI
-VOID
-NTAPI
-IoCsqInsertIrp(
- IN PIO_CSQ Csq,
- IN PIRP Irp,
- IN PIO_CSQ_IRP_CONTEXT Context);
-
-NTKERNELAPI
-PIRP
-NTAPI
-IoCsqRemoveIrp(
- IN PIO_CSQ Csq,
- IN PIO_CSQ_IRP_CONTEXT Context);
-
-NTKERNELAPI
-PIRP
-NTAPI
-IoCsqRemoveNextIrp(
- IN PIO_CSQ Csq,
- IN PVOID PeekContext);
-
-NTKERNELAPI
-VOID
-NTAPI
-IoDeleteController(
- IN PCONTROLLER_OBJECT ControllerObject);
-
-NTKERNELAPI
-VOID
-NTAPI
-IoDeleteDevice(
- IN PDEVICE_OBJECT DeviceObject);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoDeleteSymbolicLink(
- IN PUNICODE_STRING SymbolicLinkName);
-
-/*
- * VOID
- * IoDeassignArcName(
- * IN PUNICODE_STRING ArcName)
- */
-#define IoDeassignArcName IoDeleteSymbolicLink
-
-NTKERNELAPI
-VOID
-NTAPI
-IoDetachDevice(
- IN OUT PDEVICE_OBJECT TargetDevice);
-
-NTKERNELAPI
-VOID
-NTAPI
-IoDisconnectInterrupt(
- IN PKINTERRUPT InterruptObject);
-
-NTKERNELAPI
-BOOLEAN
-NTAPI
-IoForwardIrpSynchronously(
- IN PDEVICE_OBJECT DeviceObject,
- IN PIRP Irp);
-
-#define IoForwardAndCatchIrp IoForwardIrpSynchronously
-
-NTKERNELAPI
-VOID
-NTAPI
-IoFreeController(
- IN PCONTROLLER_OBJECT ControllerObject);
-
-NTKERNELAPI
-VOID
-NTAPI
-IoFreeErrorLogEntry(
- PVOID ElEntry);
-
-NTKERNELAPI
-VOID
-NTAPI
-IoFreeIrp(
- IN PIRP Irp);
-
-NTKERNELAPI
-VOID
-NTAPI
-IoFreeMdl(
- IN PMDL Mdl);
-
-NTKERNELAPI
-VOID
-NTAPI
-IoFreeWorkItem(
- IN PIO_WORKITEM pIOWorkItem);
-
-NTKERNELAPI
-PDEVICE_OBJECT
-NTAPI
-IoGetAttachedDevice(
- IN PDEVICE_OBJECT DeviceObject);
-
-NTKERNELAPI
-PDEVICE_OBJECT
-NTAPI
-IoGetAttachedDeviceReference(
- IN PDEVICE_OBJECT DeviceObject);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoGetBootDiskInformation(
- IN OUT PBOOTDISK_INFORMATION BootDiskInformation,
- IN ULONG Size);
-
-NTKERNELAPI
-PCONFIGURATION_INFORMATION
-NTAPI
-IoGetConfigurationInformation(
- VOID);
-
-NTKERNELAPI
-PEPROCESS
-NTAPI
-IoGetCurrentProcess(
- VOID);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoGetDeviceInterfaceAlias(
- IN PUNICODE_STRING SymbolicLinkName,
- IN CONST GUID *AliasInterfaceClassGuid,
- OUT PUNICODE_STRING AliasSymbolicLinkName);
-
-#define DEVICE_INTERFACE_INCLUDE_NONACTIVE 0x00000001
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoGetDeviceInterfaces(
- IN CONST GUID *InterfaceClassGuid,
- IN PDEVICE_OBJECT PhysicalDeviceObject OPTIONAL,
- IN ULONG Flags,
- OUT PWSTR *SymbolicLinkList);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoGetDeviceObjectPointer(
- IN PUNICODE_STRING ObjectName,
- IN ACCESS_MASK DesiredAccess,
- OUT PFILE_OBJECT *FileObject,
- OUT PDEVICE_OBJECT *DeviceObject);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoGetDeviceProperty(
- IN PDEVICE_OBJECT DeviceObject,
- IN DEVICE_REGISTRY_PROPERTY DeviceProperty,
- IN ULONG BufferLength,
- OUT PVOID PropertyBuffer,
- OUT PULONG ResultLength);
-
-NTKERNELAPI
-PDEVICE_OBJECT
-NTAPI
-IoGetDeviceToVerify(
- IN PETHREAD Thread);
-
-NTKERNELAPI
-PDMA_ADAPTER
-NTAPI
-IoGetDmaAdapter(
- IN PDEVICE_OBJECT PhysicalDeviceObject,
- IN PDEVICE_DESCRIPTION DeviceDescription,
- IN OUT PULONG NumberOfMapRegisters);
-
-NTKERNELAPI
-PVOID
-NTAPI
-IoGetDriverObjectExtension(
- IN PDRIVER_OBJECT DriverObject,
- IN PVOID ClientIdentificationAddress);
-
-NTKERNELAPI
-PGENERIC_MAPPING
-NTAPI
-IoGetFileObjectGenericMapping(
- VOID);
-
-/*
- * ULONG
- * IoGetFunctionCodeFromCtlCode(
- * IN ULONG ControlCode)
- */
-#define IoGetFunctionCodeFromCtlCode(_ControlCode) \
- (((_ControlCode) >> 2) & 0x00000FFF)
-
-NTKERNELAPI
-PVOID
-NTAPI
-IoGetInitialStack(
- VOID);
-
-NTKERNELAPI
-PDEVICE_OBJECT
-NTAPI
-IoGetRelatedDeviceObject(
- IN PFILE_OBJECT FileObject);
-
-NTKERNELAPI
-VOID
-NTAPI
-IoGetStackLimits(
- OUT PULONG_PTR LowLimit,
- OUT PULONG_PTR HighLimit);
-
-FORCEINLINE
-ULONG_PTR
-IoGetRemainingStackSize(
- VOID
-)
-{
- ULONG_PTR End, Begin;
- ULONG_PTR Result;
-
- IoGetStackLimits(&Begin, &End);
- Result = (ULONG_PTR)(&End) - Begin;
- return Result;
-}
-
-NTKERNELAPI
-VOID
-NTAPI
-KeInitializeDpc(
- IN PRKDPC Dpc,
- IN PKDEFERRED_ROUTINE DeferredRoutine,
- IN PVOID DeferredContext);
-
-/*
- * VOID
- * IoInitializeDpcRequest(
- * IN PDEVICE_OBJECT DeviceObject,
- * IN PIO_DPC_ROUTINE DpcRoutine)
- */
-#define IoInitializeDpcRequest(_DeviceObject, \
- _DpcRoutine) \
- KeInitializeDpc(&(_DeviceObject)->Dpc, \
- (PKDEFERRED_ROUTINE) (_DpcRoutine), \
- _DeviceObject)
-
-NTKERNELAPI
-VOID
-NTAPI
-IoInitializeIrp(
- IN OUT PIRP Irp,
- IN USHORT PacketSize,
- IN CCHAR StackSize);
-
-NTKERNELAPI
-VOID
-NTAPI
-IoInitializeRemoveLockEx(
- IN PIO_REMOVE_LOCK Lock,
- IN ULONG AllocateTag,
- IN ULONG MaxLockedMinutes,
- IN ULONG HighWatermark,
- IN ULONG RemlockSize);
-
-/* VOID
- * IoInitializeRemoveLock(
- * IN PIO_REMOVE_LOCK Lock,
- * IN ULONG AllocateTag,
- * IN ULONG MaxLockedMinutes,
- * IN ULONG HighWatermark)
- */
-#define IoInitializeRemoveLock( \
- Lock, AllocateTag, MaxLockedMinutes, HighWatermark) \
- IoInitializeRemoveLockEx(Lock, AllocateTag, MaxLockedMinutes, \
- HighWatermark, sizeof(IO_REMOVE_LOCK))
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoInitializeTimer(
- IN PDEVICE_OBJECT DeviceObject,
- IN PIO_TIMER_ROUTINE TimerRoutine,
- IN PVOID Context);
-
-NTKERNELAPI
-VOID
-NTAPI
-IoInvalidateDeviceRelations(
- IN PDEVICE_OBJECT DeviceObject,
- IN DEVICE_RELATION_TYPE Type);
-
-NTKERNELAPI
-VOID
-NTAPI
-IoInvalidateDeviceState(
- IN PDEVICE_OBJECT PhysicalDeviceObject);
-
-NTKERNELAPI
-BOOLEAN
-NTAPI
-IoIs32bitProcess(
- IN PIRP Irp OPTIONAL);
-
-/*
- * BOOLEAN
- * IoIsErrorUserInduced(
- * IN NTSTATUS Status);
- */
-#define IoIsErrorUserInduced(Status) \
- ((BOOLEAN)(((Status) == STATUS_DEVICE_NOT_READY) || \
- ((Status) == STATUS_IO_TIMEOUT) || \
- ((Status) == STATUS_MEDIA_WRITE_PROTECTED) || \
- ((Status) == STATUS_NO_MEDIA_IN_DEVICE) || \
- ((Status) == STATUS_VERIFY_REQUIRED) || \
- ((Status) == STATUS_UNRECOGNIZED_MEDIA) || \
- ((Status) == STATUS_WRONG_VOLUME)))
-
-NTKERNELAPI
-BOOLEAN
-NTAPI
-IoIsWdmVersionAvailable(
- IN UCHAR MajorVersion,
- IN UCHAR MinorVersion);
-
-NTKERNELAPI
-PIRP
-NTAPI
-IoMakeAssociatedIrp(
- IN PIRP Irp,
- IN CCHAR StackSize);
-
-/*
- * VOID
- * IoMarkIrpPending(
- * IN OUT PIRP Irp)
- */
-#define IoMarkIrpPending(_Irp) \
- (IoGetCurrentIrpStackLocation(_Irp)->Control |= SL_PENDING_RETURNED)
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoOpenDeviceInterfaceRegistryKey(
- IN PUNICODE_STRING SymbolicLinkName,
- IN ACCESS_MASK DesiredAccess,
- OUT PHANDLE DeviceInterfaceKey);
-
-#define PLUGPLAY_REGKEY_DEVICE 1
-#define PLUGPLAY_REGKEY_DRIVER 2
-#define PLUGPLAY_REGKEY_CURRENT_HWPROFILE 4
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoOpenDeviceRegistryKey(
- IN PDEVICE_OBJECT DeviceObject,
- IN ULONG DevInstKeyType,
- IN ACCESS_MASK DesiredAccess,
- OUT PHANDLE DevInstRegKey);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoQueryDeviceDescription(
- IN PINTERFACE_TYPE BusType OPTIONAL,
- IN PULONG BusNumber OPTIONAL,
- IN PCONFIGURATION_TYPE ControllerType OPTIONAL,
- IN PULONG ControllerNumber OPTIONAL,
- IN PCONFIGURATION_TYPE PeripheralType OPTIONAL,
- IN PULONG PeripheralNumber OPTIONAL,
- IN PIO_QUERY_DEVICE_ROUTINE CalloutRoutine,
- IN PVOID Context);
-
-NTKERNELAPI
-VOID
-NTAPI
-IoQueueWorkItem(
- IN PIO_WORKITEM pIOWorkItem,
- IN PIO_WORKITEM_ROUTINE Routine,
- IN WORK_QUEUE_TYPE QueueType,
- IN PVOID Context);
-
-NTKERNELAPI
-VOID
-NTAPI
-IoRaiseHardError(
- IN PIRP Irp,
- IN PVPB Vpb OPTIONAL,
- IN PDEVICE_OBJECT RealDeviceObject);
-
-NTKERNELAPI
-BOOLEAN
-NTAPI
-IoRaiseInformationalHardError(
- IN NTSTATUS ErrorStatus,
- IN PUNICODE_STRING String OPTIONAL,
- IN PKTHREAD Thread OPTIONAL);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoReadDiskSignature(
- IN PDEVICE_OBJECT DeviceObject,
- IN ULONG BytesPerSector,
- OUT PDISK_SIGNATURE Signature);
-
-NTKERNELAPI
-NTSTATUS
-FASTCALL
-IoReadPartitionTable(
- IN PDEVICE_OBJECT DeviceObject,
- IN ULONG SectorSize,
- IN BOOLEAN ReturnRecognizedPartitions,
- OUT struct _DRIVE_LAYOUT_INFORMATION **PartitionBuffer);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoReadPartitionTableEx(
- IN PDEVICE_OBJECT DeviceObject,
- IN struct _DRIVE_LAYOUT_INFORMATION_EX **PartitionBuffer);
-
-NTKERNELAPI
-VOID
-NTAPI
-IoRegisterBootDriverReinitialization(
- IN PDRIVER_OBJECT DriverObject,
- IN PDRIVER_REINITIALIZE DriverReinitializationRoutine,
- IN PVOID Context);
-
-NTKERNELAPI
-VOID
-NTAPI
-IoRegisterBootDriverReinitialization(
- IN PDRIVER_OBJECT DriverObject,
- IN PDRIVER_REINITIALIZE DriverReinitializationRoutine,
- IN PVOID Context);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoRegisterDeviceInterface(
- IN PDEVICE_OBJECT PhysicalDeviceObject,
- IN CONST GUID *InterfaceClassGuid,
- IN PUNICODE_STRING ReferenceString OPTIONAL,
- OUT PUNICODE_STRING SymbolicLinkName);
-
-NTKERNELAPI
-VOID
-NTAPI
-IoRegisterDriverReinitialization(
- IN PDRIVER_OBJECT DriverObject,
- IN PDRIVER_REINITIALIZE DriverReinitializationRoutine,
- IN PVOID Context);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoRegisterPlugPlayNotification(
- IN IO_NOTIFICATION_EVENT_CATEGORY EventCategory,
- IN ULONG EventCategoryFlags,
- IN PVOID EventCategoryData OPTIONAL,
- IN PDRIVER_OBJECT DriverObject,
- IN PDRIVER_NOTIFICATION_CALLBACK_ROUTINE CallbackRoutine,
- IN PVOID Context,
- OUT PVOID *NotificationEntry);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoRegisterShutdownNotification(
- IN PDEVICE_OBJECT DeviceObject);
-
-NTKERNELAPI
-VOID
-NTAPI
-IoReleaseCancelSpinLock(
- IN KIRQL Irql);
-
-NTKERNELAPI
-VOID
-NTAPI
-IoReleaseRemoveLockAndWaitEx(
- IN PIO_REMOVE_LOCK RemoveLock,
- IN PVOID Tag,
- IN ULONG RemlockSize);
-
-NTKERNELAPI
-VOID
-NTAPI
-IoReleaseRemoveLockEx(
- IN PIO_REMOVE_LOCK RemoveLock,
- IN PVOID Tag,
- IN ULONG RemlockSize);
-
-/*
- * VOID
- * IoReleaseRemoveLock(
- * IN PIO_REMOVE_LOCK RemoveLock,
- * IN PVOID Tag)
- */
-#define IoReleaseRemoveLock(_RemoveLock, \
- _Tag) \
- IoReleaseRemoveLockEx(_RemoveLock, _Tag, sizeof(IO_REMOVE_LOCK))
-
-/*
- * VOID
- * IoReleaseRemoveLockAndWait(
- * IN PIO_REMOVE_LOCK RemoveLock,
- * IN PVOID Tag)
- */
-#define IoReleaseRemoveLockAndWait(_RemoveLock, \
- _Tag) \
- IoReleaseRemoveLockAndWaitEx(_RemoveLock, _Tag, sizeof(IO_REMOVE_LOCK))
-
-NTKERNELAPI
-VOID
-NTAPI
-IoRemoveShareAccess(
- IN PFILE_OBJECT FileObject,
- IN OUT PSHARE_ACCESS ShareAccess);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoReportDetectedDevice(
- IN PDRIVER_OBJECT DriverObject,
- IN INTERFACE_TYPE LegacyBusType,
- IN ULONG BusNumber,
- IN ULONG SlotNumber,
- IN PCM_RESOURCE_LIST ResourceList,
- IN PIO_RESOURCE_REQUIREMENTS_LIST ResourceRequirements OPTIONAL,
- IN BOOLEAN ResourceAssigned,
- IN OUT PDEVICE_OBJECT *DeviceObject);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoReportResourceForDetection(
- IN PDRIVER_OBJECT DriverObject,
- IN PCM_RESOURCE_LIST DriverList OPTIONAL,
- IN ULONG DriverListSize OPTIONAL,
- IN PDEVICE_OBJECT DeviceObject OPTIONAL,
- IN PCM_RESOURCE_LIST DeviceList OPTIONAL,
- IN ULONG DeviceListSize OPTIONAL,
- OUT PBOOLEAN ConflictDetected);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoReportResourceUsage(
- IN PUNICODE_STRING DriverClassName OPTIONAL,
- IN PDRIVER_OBJECT DriverObject,
- IN PCM_RESOURCE_LIST DriverList OPTIONAL,
- IN ULONG DriverListSize OPTIONAL,
- IN PDEVICE_OBJECT DeviceObject,
- IN PCM_RESOURCE_LIST DeviceList OPTIONAL,
- IN ULONG DeviceListSize OPTIONAL,
- IN BOOLEAN OverrideConflict,
- OUT PBOOLEAN ConflictDetected);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoReportTargetDeviceChange(
- IN PDEVICE_OBJECT PhysicalDeviceObject,
- IN PVOID NotificationStructure);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoReportTargetDeviceChangeAsynchronous(
- IN PDEVICE_OBJECT PhysicalDeviceObject,
- IN PVOID NotificationStructure,
- IN PDEVICE_CHANGE_COMPLETE_CALLBACK Callback OPTIONAL,
- IN PVOID Context OPTIONAL);
-
-NTKERNELAPI
-VOID
-NTAPI
-IoRequestDeviceEject(
- IN PDEVICE_OBJECT PhysicalDeviceObject);
-
-/*
- * VOID
- * IoRequestDpc(
- * IN PDEVICE_OBJECT DeviceObject,
- * IN PIRP Irp,
- * IN PVOID Context);
- */
-#define IoRequestDpc(DeviceObject, Irp, Context)( \
- KeInsertQueueDpc(&(DeviceObject)->Dpc, (Irp), (Context)))
-
-NTKERNELAPI
-VOID
-NTAPI
-IoReuseIrp(
- IN OUT PIRP Irp,
- IN NTSTATUS Status);
-
-/*
- * PDRIVER_CANCEL
- * IoSetCancelRoutine(
- * IN PIRP Irp,
- * IN PDRIVER_CANCEL CancelRoutine)
- */
-#define IoSetCancelRoutine(_Irp, \
- _CancelRoutine) \
- ((PDRIVER_CANCEL) InterlockedExchangePointer( \
- (PVOID *) &(_Irp)->CancelRoutine, (PVOID) (_CancelRoutine)))
-
-/*
- * VOID
- * IoSetCompletionRoutine(
- * IN PIRP Irp,
- * IN PIO_COMPLETION_ROUTINE CompletionRoutine,
- * IN PVOID Context,
- * IN BOOLEAN InvokeOnSuccess,
- * IN BOOLEAN InvokeOnError,
- * IN BOOLEAN InvokeOnCancel)
- */
-#define IoSetCompletionRoutine(_Irp, \
- _CompletionRoutine, \
- _Context, \
- _InvokeOnSuccess, \
- _InvokeOnError, \
- _InvokeOnCancel) \
-{ \
- PIO_STACK_LOCATION _IrpSp; \
- ASSERT((_InvokeOnSuccess) || (_InvokeOnError) || (_InvokeOnCancel) ? \
- (_CompletionRoutine) != NULL : TRUE); \
- _IrpSp = IoGetNextIrpStackLocation(_Irp); \
- _IrpSp->CompletionRoutine = (PIO_COMPLETION_ROUTINE)(_CompletionRoutine); \
- _IrpSp->Context = (_Context); \
- _IrpSp->Control = 0; \
- if (_InvokeOnSuccess) _IrpSp->Control = SL_INVOKE_ON_SUCCESS; \
- if (_InvokeOnError) _IrpSp->Control |= SL_INVOKE_ON_ERROR; \
- if (_InvokeOnCancel) _IrpSp->Control |= SL_INVOKE_ON_CANCEL; \
-}
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoSetCompletionRoutineEx(
- IN PDEVICE_OBJECT DeviceObject,
- IN PIRP Irp,
- IN PIO_COMPLETION_ROUTINE CompletionRoutine,
- IN PVOID Context,
- IN BOOLEAN InvokeOnSuccess,
- IN BOOLEAN InvokeOnError,
- IN BOOLEAN InvokeOnCancel);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoSetDeviceInterfaceState(
- IN PUNICODE_STRING SymbolicLinkName,
- IN BOOLEAN Enable);
-
-NTKERNELAPI
-VOID
-NTAPI
-IoSetHardErrorOrVerifyDevice(
- IN PIRP Irp,
- IN PDEVICE_OBJECT DeviceObject);
-
-/*
- * VOID
- * IoSetNextIrpStackLocation(
- * IN OUT PIRP Irp)
- */
-#define IoSetNextIrpStackLocation(_Irp) \
-{ \
- (_Irp)->CurrentLocation--; \
- (_Irp)->Tail.Overlay.CurrentStackLocation--; \
-}
-
-NTKERNELAPI
-NTSTATUS
-FASTCALL
-IoSetPartitionInformation(
- IN PDEVICE_OBJECT DeviceObject,
- IN ULONG SectorSize,
- IN ULONG PartitionNumber,
- IN ULONG PartitionType);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoSetPartitionInformationEx(
- IN PDEVICE_OBJECT DeviceObject,
- IN ULONG PartitionNumber,
- IN struct _SET_PARTITION_INFORMATION_EX *PartitionInfo);
-
-NTKERNELAPI
-VOID
-NTAPI
-IoSetShareAccess(
- IN ACCESS_MASK DesiredAccess,
- IN ULONG DesiredShareAccess,
- IN OUT PFILE_OBJECT FileObject,
- OUT PSHARE_ACCESS ShareAccess);
-
-NTKERNELAPI
-VOID
-NTAPI
-IoSetStartIoAttributes(
- IN PDEVICE_OBJECT DeviceObject,
- IN BOOLEAN DeferredStartIo,
- IN BOOLEAN NonCancelable);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoSetSystemPartition(
- IN PUNICODE_STRING VolumeNameString);
-
-NTKERNELAPI
-BOOLEAN
-NTAPI
-IoSetThreadHardErrorMode(
- IN BOOLEAN EnableHardErrors);
-
-/*
- * USHORT
- * IoSizeOfIrp(
- * IN CCHAR StackSize)
- */
-#define IoSizeOfIrp(_StackSize) \
- ((USHORT) (sizeof(IRP) + ((_StackSize) * (sizeof(IO_STACK_LOCATION)))))
-
-/*
- * VOID
- * IoSkipCurrentIrpStackLocation(
- * IN PIRP Irp)
- */
-#define IoSkipCurrentIrpStackLocation(_Irp) \
-{ \
- (_Irp)->CurrentLocation++; \
- (_Irp)->Tail.Overlay.CurrentStackLocation++; \
-}
-
-NTKERNELAPI
-VOID
-NTAPI
-IoStartNextPacket(
- IN PDEVICE_OBJECT DeviceObject,
- IN BOOLEAN Cancelable);
-
-NTKERNELAPI
-VOID
-NTAPI
-IoStartNextPacketByKey(
- IN PDEVICE_OBJECT DeviceObject,
- IN BOOLEAN Cancelable,
- IN ULONG Key);
-
-NTKERNELAPI
-VOID
-NTAPI
-IoStartPacket(
- IN PDEVICE_OBJECT DeviceObject,
- IN PIRP Irp,
- IN PULONG Key OPTIONAL,
- IN PDRIVER_CANCEL CancelFunction OPTIONAL);
-
-NTKERNELAPI
-VOID
-NTAPI
-IoStartTimer(
- IN PDEVICE_OBJECT DeviceObject);
-
-NTKERNELAPI
-VOID
-NTAPI
-IoStopTimer(
- IN PDEVICE_OBJECT DeviceObject);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoUnregisterPlugPlayNotification(
- IN PVOID NotificationEntry);
-
-NTKERNELAPI
-VOID
-NTAPI
-IoUnregisterShutdownNotification(
- IN PDEVICE_OBJECT DeviceObject);
-
-NTKERNELAPI
-VOID
-NTAPI
-IoUpdateShareAccess(
- IN PFILE_OBJECT FileObject,
- IN OUT PSHARE_ACCESS ShareAccess);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoVerifyPartitionTable(
- IN PDEVICE_OBJECT DeviceObject,
- IN BOOLEAN FixErrors);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoVolumeDeviceToDosName(
- IN PVOID VolumeDeviceObject,
- OUT PUNICODE_STRING DosName);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoWMIAllocateInstanceIds(
- IN GUID *Guid,
- IN ULONG InstanceCount,
- OUT ULONG *FirstInstanceId);
-
-NTKERNELAPI
-ULONG
-NTAPI
-IoWMIDeviceObjectToProviderId(
- IN PDEVICE_OBJECT DeviceObject);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoWMIDeviceObjectToInstanceName(
- IN PVOID DataBlockObject,
- IN PDEVICE_OBJECT DeviceObject,
- OUT PUNICODE_STRING InstanceName);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoWMIExecuteMethod(
- IN PVOID DataBlockObject,
- IN PUNICODE_STRING InstanceName,
- IN ULONG MethodId,
- IN ULONG InBufferSize,
- IN OUT PULONG OutBufferSize,
- IN OUT PUCHAR InOutBuffer);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoWMIHandleToInstanceName(
- IN PVOID DataBlockObject,
- IN HANDLE FileHandle,
- OUT PUNICODE_STRING InstanceName);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoWMIOpenBlock(
- IN GUID *DataBlockGuid,
- IN ULONG DesiredAccess,
- OUT PVOID *DataBlockObject);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoWMIQueryAllData(
- IN PVOID DataBlockObject,
- IN OUT ULONG *InOutBufferSize,
- OUT PVOID OutBuffer);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoWMIQueryAllDataMultiple(
- IN PVOID *DataBlockObjectList,
- IN ULONG ObjectCount,
- IN OUT ULONG *InOutBufferSize,
- OUT PVOID OutBuffer);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoWMIQuerySingleInstance(
- IN PVOID DataBlockObject,
- IN PUNICODE_STRING InstanceName,
- IN OUT ULONG *InOutBufferSize,
- OUT PVOID OutBuffer);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoWMIQuerySingleInstanceMultiple(
- IN PVOID *DataBlockObjectList,
- IN PUNICODE_STRING InstanceNames,
- IN ULONG ObjectCount,
- IN OUT ULONG *InOutBufferSize,
- OUT PVOID OutBuffer);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoWMIRegistrationControl(
- IN PDEVICE_OBJECT DeviceObject,
- IN ULONG Action);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoWMISetNotificationCallback(
- IN PVOID Object,
- IN WMI_NOTIFICATION_CALLBACK Callback,
- IN PVOID Context);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoWMISetSingleInstance(
- IN PVOID DataBlockObject,
- IN PUNICODE_STRING InstanceName,
- IN ULONG Version,
- IN ULONG ValueBufferSize,
- IN PVOID ValueBuffer);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoWMISetSingleItem(
- IN PVOID DataBlockObject,
- IN PUNICODE_STRING InstanceName,
- IN ULONG DataItemId,
- IN ULONG Version,
- IN ULONG ValueBufferSize,
- IN PVOID ValueBuffer);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoWMISuggestInstanceName(
- IN PDEVICE_OBJECT PhysicalDeviceObject OPTIONAL,
- IN PUNICODE_STRING SymbolicLinkName OPTIONAL,
- IN BOOLEAN CombineNames,
- OUT PUNICODE_STRING SuggestedInstanceName);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoWMIWriteEvent(
- IN PVOID WnodeEventItem);
-
-NTKERNELAPI
-VOID
-NTAPI
-IoWriteErrorLogEntry(
- IN PVOID ElEntry);
+IoReadDiskSignature(
+ IN PDEVICE_OBJECT DeviceObject,
+ IN ULONG BytesPerSector,
+ OUT PDISK_SIGNATURE Signature);
NTKERNELAPI
NTSTATUS
FASTCALL
-IoWritePartitionTable(
- IN PDEVICE_OBJECT DeviceObject,
- IN ULONG SectorSize,
- IN ULONG SectorsPerTrack,
- IN ULONG NumberOfHeads,
- IN struct _DRIVE_LAYOUT_INFORMATION *PartitionBuffer);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoWritePartitionTableEx(
+IoReadPartitionTable(
IN PDEVICE_OBJECT DeviceObject,
- IN struct _DRIVE_LAYOUT_INFORMATION_EX *PartitionBuffer);
-
-
-
-/** Kernel routines **/
-
-#if defined (_M_AMD64)
-NTKERNELAPI
-VOID
-FASTCALL
-KeAcquireInStackQueuedSpinLock(
- IN PKSPIN_LOCK SpinLock,
- IN PKLOCK_QUEUE_HANDLE LockHandle);
-
-NTKERNELAPI
-VOID
-FASTCALL
-KeReleaseInStackQueuedSpinLock(
- IN PKLOCK_QUEUE_HANDLE LockHandle);
-#else
-NTHALAPI
-VOID
-FASTCALL
-KeAcquireInStackQueuedSpinLock(
- IN PKSPIN_LOCK SpinLock,
- IN PKLOCK_QUEUE_HANDLE LockHandle);
-
-NTHALAPI
-VOID
-FASTCALL
-KeReleaseInStackQueuedSpinLock(
- IN PKLOCK_QUEUE_HANDLE LockHandle);
-#endif
-
-NTKERNELAPI
-VOID
-FASTCALL
-KeAcquireInStackQueuedSpinLockAtDpcLevel(
- IN PKSPIN_LOCK SpinLock,
- IN PKLOCK_QUEUE_HANDLE LockHandle);
-
-NTKERNELAPI
-KIRQL
-NTAPI
-KeAcquireInterruptSpinLock(
- IN PKINTERRUPT Interrupt);
-
-NTKERNELAPI
-BOOLEAN
-NTAPI
-KeAreApcsDisabled(
- VOID);
-
-NTKERNELAPI
-DECLSPEC_NORETURN
-VOID
-NTAPI
-KeBugCheck(
- IN ULONG BugCheckCode);
-
-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 PKTIMER Timer);
-
-NTKERNELAPI
-VOID
-NTAPI
-KeClearEvent(
- IN PRKEVENT Event);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-KeDelayExecutionThread(
- IN KPROCESSOR_MODE WaitMode,
- IN BOOLEAN Alertable,
- IN PLARGE_INTEGER Interval);
-
-NTKERNELAPI
-BOOLEAN
-NTAPI
-KeDeregisterBugCheckCallback(
- IN PKBUGCHECK_CALLBACK_RECORD CallbackRecord);
-
-NTKERNELAPI
-VOID
-NTAPI
-KeEnterCriticalRegion(
- VOID);
-
-/*
- * VOID
- * KeFlushIoBuffers(
- * IN PMDL Mdl,
- * IN BOOLEAN ReadOperation,
- * IN BOOLEAN DmaOperation)
- */
-#define KeFlushIoBuffers(_Mdl, _ReadOperation, _DmaOperation)
-
-#define ExAcquireSpinLock(Lock, OldIrql) KeAcquireSpinLock((Lock), (OldIrql))
-#define ExReleaseSpinLock(Lock, OldIrql) KeReleaseSpinLock((Lock), (OldIrql))
-#define ExAcquireSpinLockAtDpcLevel(Lock) KeAcquireSpinLockAtDpcLevel(Lock)
-#define ExReleaseSpinLockFromDpcLevel(Lock) KeReleaseSpinLockFromDpcLevel(Lock)
-
-NTKERNELAPI
-VOID
-NTAPI
-KeFlushQueuedDpcs(
- VOID
-);
-
-NTHALAPI
-VOID
-NTAPI
-KeFlushWriteBuffer(VOID);
-
-NTKERNELAPI
-ULONG
-NTAPI
-KeGetRecommendedSharedDataAlignment(
- VOID);
-
-NTKERNELAPI
-VOID
-NTAPI
-KeInitializeDeviceQueue(
- IN PKDEVICE_QUEUE DeviceQueue);
-
-NTKERNELAPI
-VOID
-NTAPI
-KeInitializeMutex(
- IN PRKMUTEX Mutex,
- IN ULONG Level);
-
-NTKERNELAPI
-VOID
-NTAPI
-KeInitializeSemaphore(
- IN PRKSEMAPHORE Semaphore,
- IN LONG Count,
- IN LONG Limit);
-
-NTKERNELAPI
-VOID
-NTAPI
-KeInitializeTimer(
- IN PKTIMER Timer);
-
-NTKERNELAPI
-VOID
-NTAPI
-KeInitializeTimerEx(
- IN PKTIMER Timer,
- IN TIMER_TYPE Type);
-
-NTKERNELAPI
-BOOLEAN
-NTAPI
-KeInsertByKeyDeviceQueue(
- IN PKDEVICE_QUEUE DeviceQueue,
- IN PKDEVICE_QUEUE_ENTRY DeviceQueueEntry,
- IN ULONG SortKey);
-
-NTKERNELAPI
-BOOLEAN
-NTAPI
-KeInsertDeviceQueue(
- IN PKDEVICE_QUEUE DeviceQueue,
- IN PKDEVICE_QUEUE_ENTRY DeviceQueueEntry);
-
-NTKERNELAPI
-BOOLEAN
-NTAPI
-KeInsertQueueDpc(
- IN PRKDPC Dpc,
- IN PVOID SystemArgument1,
- IN PVOID SystemArgument2);
-
-NTKERNELAPI
-VOID
-NTAPI
-KeLeaveCriticalRegion(
- VOID);
-
-#ifdef _X86_
-
-static __inline
-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
-}
-
-#endif
-
-NTKERNELAPI
-LONG
-NTAPI
-KePulseEvent(
- IN PRKEVENT Event,
- IN KPRIORITY Increment,
- IN BOOLEAN Wait);
-
-NTKERNELAPI
-KAFFINITY
-NTAPI
-KeQueryActiveProcessors(
- VOID
-);
-
-NTHALAPI
-LARGE_INTEGER
-NTAPI
-KeQueryPerformanceCounter(
- OUT PLARGE_INTEGER PerformanceFrequency OPTIONAL);
-
-NTKERNELAPI
-KPRIORITY
-NTAPI
-KeQueryPriorityThread(
- IN PRKTHREAD Thread);
-
-NTKERNELAPI
-ULONG
-NTAPI
-KeQueryRuntimeThread(
- IN PKTHREAD Thread,
- OUT PULONG UserTime);
-
-#if !defined(_M_AMD64)
-NTKERNELAPI
-ULONGLONG
-NTAPI
-KeQueryInterruptTime(
- VOID);
-
-NTKERNELAPI
-VOID
-NTAPI
-KeQuerySystemTime(
- OUT PLARGE_INTEGER CurrentTime);
-
-NTKERNELAPI
-VOID
-NTAPI
-KeQueryTickCount(
- OUT PLARGE_INTEGER TickCount);
-#endif
-
-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(
- IN PKBUGCHECK_CALLBACK_RECORD CallbackRecord,
- IN PKBUGCHECK_CALLBACK_ROUTINE CallbackRoutine,
- IN PVOID Buffer,
- IN ULONG Length,
- IN PUCHAR Component);
-
-NTKERNELAPI
-PVOID
-NTAPI
-KeRegisterNmiCallback(
- IN PNMI_CALLBACK CallbackRoutine,
- IN PVOID Context
-);
+ IN ULONG SectorSize,
+ IN BOOLEAN ReturnRecognizedPartitions,
+ OUT struct _DRIVE_LAYOUT_INFORMATION **PartitionBuffer);
NTKERNELAPI
NTSTATUS
NTAPI
-KeDeregisterNmiCallback(
- IN PVOID Handle
-);
+IoReadPartitionTableEx(
+ IN PDEVICE_OBJECT DeviceObject,
+ IN struct _DRIVE_LAYOUT_INFORMATION_EX **PartitionBuffer);
NTKERNELAPI
VOID
-FASTCALL
-KeReleaseInStackQueuedSpinLockFromDpcLevel(
- IN PKLOCK_QUEUE_HANDLE LockHandle);
+NTAPI
+IoRegisterBootDriverReinitialization(
+ IN PDRIVER_OBJECT DriverObject,
+ IN PDRIVER_REINITIALIZE DriverReinitializationRoutine,
+ IN PVOID Context);
NTKERNELAPI
VOID
NTAPI
-KeReleaseInterruptSpinLock(
- IN PKINTERRUPT Interrupt,
- IN KIRQL OldIrql);
+IoRegisterBootDriverReinitialization(
+ IN PDRIVER_OBJECT DriverObject,
+ IN PDRIVER_REINITIALIZE DriverReinitializationRoutine,
+ IN PVOID Context);
NTKERNELAPI
-LONG
+VOID
NTAPI
-KeReleaseMutex(
- IN PRKMUTEX Mutex,
- IN BOOLEAN Wait);
+IoRegisterDriverReinitialization(
+ IN PDRIVER_OBJECT DriverObject,
+ IN PDRIVER_REINITIALIZE DriverReinitializationRoutine,
+ IN PVOID Context);
NTKERNELAPI
-LONG
+NTSTATUS
NTAPI
-KeReleaseSemaphore(
- IN PRKSEMAPHORE Semaphore,
- IN KPRIORITY Increment,
- IN LONG Adjustment,
- IN BOOLEAN Wait);
+IoReportDetectedDevice(
+ IN PDRIVER_OBJECT DriverObject,
+ IN INTERFACE_TYPE LegacyBusType,
+ IN ULONG BusNumber,
+ IN ULONG SlotNumber,
+ IN PCM_RESOURCE_LIST ResourceList,
+ IN PIO_RESOURCE_REQUIREMENTS_LIST ResourceRequirements OPTIONAL,
+ IN BOOLEAN ResourceAssigned,
+ IN OUT PDEVICE_OBJECT *DeviceObject);
NTKERNELAPI
-PKDEVICE_QUEUE_ENTRY
+NTSTATUS
NTAPI
-KeRemoveByKeyDeviceQueue(
- IN PKDEVICE_QUEUE DeviceQueue,
- IN ULONG SortKey);
+IoReportResourceForDetection(
+ IN PDRIVER_OBJECT DriverObject,
+ IN PCM_RESOURCE_LIST DriverList OPTIONAL,
+ IN ULONG DriverListSize OPTIONAL,
+ IN PDEVICE_OBJECT DeviceObject OPTIONAL,
+ IN PCM_RESOURCE_LIST DeviceList OPTIONAL,
+ IN ULONG DeviceListSize OPTIONAL,
+ OUT PBOOLEAN ConflictDetected);
NTKERNELAPI
-PKDEVICE_QUEUE_ENTRY
+NTSTATUS
NTAPI
-KeRemoveDeviceQueue(
- IN PKDEVICE_QUEUE DeviceQueue);
+IoReportResourceUsage(
+ IN PUNICODE_STRING DriverClassName OPTIONAL,
+ IN PDRIVER_OBJECT DriverObject,
+ IN PCM_RESOURCE_LIST DriverList OPTIONAL,
+ IN ULONG DriverListSize OPTIONAL,
+ IN PDEVICE_OBJECT DeviceObject,
+ IN PCM_RESOURCE_LIST DeviceList OPTIONAL,
+ IN ULONG DeviceListSize OPTIONAL,
+ IN BOOLEAN OverrideConflict,
+ OUT PBOOLEAN ConflictDetected);
NTKERNELAPI
-BOOLEAN
+VOID
NTAPI
-KeRemoveEntryDeviceQueue(
- IN PKDEVICE_QUEUE DeviceQueue,
- IN PKDEVICE_QUEUE_ENTRY DeviceQueueEntry);
+IoSetHardErrorOrVerifyDevice(
+ IN PIRP Irp,
+ IN PDEVICE_OBJECT DeviceObject);
NTKERNELAPI
-BOOLEAN
-NTAPI
-KeRemoveQueueDpc(
- IN PRKDPC Dpc);
+NTSTATUS
+FASTCALL
+IoSetPartitionInformation(
+ IN PDEVICE_OBJECT DeviceObject,
+ IN ULONG SectorSize,
+ IN ULONG PartitionNumber,
+ IN ULONG PartitionType);
NTKERNELAPI
-LONG
+NTSTATUS
NTAPI
-KeResetEvent(
- IN PRKEVENT Event);
+IoSetPartitionInformationEx(
+ IN PDEVICE_OBJECT DeviceObject,
+ IN ULONG PartitionNumber,
+ IN struct _SET_PARTITION_INFORMATION_EX *PartitionInfo);
NTKERNELAPI
NTSTATUS
NTAPI
-KeRestoreFloatingPointState(
- IN PKFLOATING_SAVE FloatSave);
+IoSetSystemPartition(
+ IN PUNICODE_STRING VolumeNameString);
NTKERNELAPI
-VOID
+BOOLEAN
NTAPI
-KeRevertToUserAffinityThread(VOID);
+IoSetThreadHardErrorMode(
+ IN BOOLEAN EnableHardErrors);
NTKERNELAPI
NTSTATUS
NTAPI
-KeSaveFloatingPointState(
- OUT PKFLOATING_SAVE FloatSave);
-
-NTKERNELAPI
-LONG
-NTAPI
-KeSetBasePriorityThread(
- IN PRKTHREAD Thread,
- IN LONG Increment);
+IoVerifyPartitionTable(
+ IN PDEVICE_OBJECT DeviceObject,
+ IN BOOLEAN FixErrors);
NTKERNELAPI
-LONG
+NTSTATUS
NTAPI
-KeSetEvent(
- IN PRKEVENT Event,
- IN KPRIORITY Increment,
- IN BOOLEAN Wait);
+IoVolumeDeviceToDosName(
+ IN PVOID VolumeDeviceObject,
+ OUT PUNICODE_STRING DosName);
NTKERNELAPI
-VOID
-NTAPI
-KeSetImportanceDpc(
- IN PRKDPC Dpc,
- IN KDPC_IMPORTANCE Importance);
+NTSTATUS
+FASTCALL
+IoWritePartitionTable(
+ IN PDEVICE_OBJECT DeviceObject,
+ IN ULONG SectorSize,
+ IN ULONG SectorsPerTrack,
+ IN ULONG NumberOfHeads,
+ IN struct _DRIVE_LAYOUT_INFORMATION *PartitionBuffer);
NTKERNELAPI
-KPRIORITY
+NTSTATUS
NTAPI
-KeSetPriorityThread(
- IN PKTHREAD Thread,
- IN KPRIORITY Priority);
+IoWritePartitionTableEx(
+ IN PDEVICE_OBJECT DeviceObject,
+ IN struct _DRIVE_LAYOUT_INFORMATION_EX *PartitionBuffer);
-NTKERNELAPI
-VOID
-NTAPI
-KeSetSystemAffinityThread(
- IN KAFFINITY Affinity);
+/** Kernel routines **/
NTKERNELAPI
+DECLSPEC_NORETURN
VOID
NTAPI
-KeSetTargetProcessorDpc(
- IN PRKDPC Dpc,
- IN CCHAR Number);
-
-NTKERNELAPI
-BOOLEAN
-NTAPI
-KeSetTimer(
- IN PKTIMER Timer,
- IN LARGE_INTEGER DueTime,
- IN PKDPC Dpc OPTIONAL);
+KeBugCheck(
+ IN ULONG BugCheckCode);
-NTKERNELAPI
-BOOLEAN
-NTAPI
-KeSetTimerEx(
- IN PKTIMER Timer,
- IN LARGE_INTEGER DueTime,
- IN LONG Period OPTIONAL,
- IN PKDPC Dpc OPTIONAL);
+#ifdef _X86_
-NTKERNELAPI
+static __inline
VOID
-FASTCALL
-KeSetTimeUpdateNotifyRoutine(
- IN PTIME_UPDATE_NOTIFY_ROUTINE NotifyRoutine);
+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
-NTAPI
-KeStallExecutionProcessor(
- IN ULONG MicroSeconds);
+#endif
NTKERNELAPI
-BOOLEAN
+LONG
NTAPI
-KeSynchronizeExecution(
- IN PKINTERRUPT Interrupt,
- IN PKSYNCHRONIZE_ROUTINE SynchronizeRoutine,
- IN PVOID SynchronizeContext);
+KePulseEvent(
+ IN PRKEVENT Event,
+ IN KPRIORITY Increment,
+ IN BOOLEAN Wait);
-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,
- IN PKWAIT_BLOCK WaitBlockArray OPTIONAL);
+#if !defined(_M_AMD64)
NTKERNELAPI
-NTSTATUS
+VOID
NTAPI
-KeWaitForMutexObject(
- IN PRKMUTEX Mutex,
- IN KWAIT_REASON WaitReason,
- IN KPROCESSOR_MODE WaitMode,
- IN BOOLEAN Alertable,
- IN PLARGE_INTEGER Timeout OPTIONAL);
+KeQueryTickCount(
+ OUT PLARGE_INTEGER TickCount);
+#endif
NTKERNELAPI
-NTSTATUS
+LONG
NTAPI
-KeWaitForSingleObject(
- IN PVOID Object,
- IN KWAIT_REASON WaitReason,
- IN KPROCESSOR_MODE WaitMode,
- IN BOOLEAN Alertable,
- IN PLARGE_INTEGER Timeout OPTIONAL);
-
-typedef
-ULONG_PTR
-(NTAPI *PKIPI_BROADCAST_WORKER)(
- IN ULONG_PTR Argument
-);
+KeSetBasePriorityThread(
+ IN PRKTHREAD Thread,
+ IN LONG Increment);
NTKERNELAPI
-ULONG_PTR
-NTAPI
-KeIpiGenericCall(
- IN PKIPI_BROADCAST_WORKER BroadcastFunction,
- IN ULONG_PTR Context
-);
+VOID
+FASTCALL
+KeSetTimeUpdateNotifyRoutine(
+ IN PTIME_UPDATE_NOTIFY_ROUTINE NotifyRoutine);
#if defined(_X86_)
/** Memory manager routines **/
-NTKERNELAPI
-NTSTATUS
-NTAPI
-MmAdvanceMdl(
- IN PMDL Mdl,
- IN ULONG NumberOfBytes);
-
-NTKERNELAPI
-PVOID
-NTAPI
-MmAllocateContiguousMemory(
- IN ULONG 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
-PVOID
-NTAPI
-MmAllocateMappingAddress(
- IN SIZE_T NumberOfBytes,
- IN ULONG PoolTag);
-
NTKERNELAPI
PVOID
NTAPI
MmAllocateNonCachedMemory(
IN ULONG NumberOfBytes);
-NTKERNELAPI
-PMDL
-NTAPI
-MmAllocatePagesForMdl(
- IN PHYSICAL_ADDRESS LowAddress,
- IN PHYSICAL_ADDRESS HighAddress,
- IN PHYSICAL_ADDRESS SkipBytes,
- IN SIZE_T TotalBytes);
-
-#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
-
-NTKERNELAPI
-VOID
-NTAPI
-MmBuildMdlForNonPagedPool(
- IN OUT PMDL MemoryDescriptorList);
-
typedef enum _MMFLUSH_TYPE {
MmFlushForDelete,
MmFlushForWrite
IN PSECTION_OBJECT_POINTERS SectionObjectPointer,
IN MMFLUSH_TYPE FlushType);
-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
-MmFreeMappingAddress(
- IN PVOID BaseAddress,
- IN ULONG PoolTag);
-
-NTKERNELAPI
-VOID
-NTAPI
-MmFreeNonCachedMemory(
- IN PVOID BaseAddress,
- IN SIZE_T NumberOfBytes);
-
-NTKERNELAPI
-VOID
-NTAPI
-MmFreePagesFromMdl(
- IN PMDL MemoryDescriptorList);
-
-/*
- * 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))
+NTKERNELAPI
+VOID
+NTAPI
+MmFreeNonCachedMemory(
+ IN PVOID BaseAddress,
+ IN SIZE_T NumberOfBytes);
NTKERNELAPI
PHYSICAL_ADDRESS
MmGetVirtualForPhysical(
IN PHYSICAL_ADDRESS PhysicalAddress);
-NTKERNELAPI
-PVOID
-NTAPI
-MmMapLockedPagesSpecifyCache(
- IN PMDL MemoryDescriptorList,
- IN KPROCESSOR_MODE AccessMode,
- IN MEMORY_CACHING_TYPE CacheType,
- IN PVOID BaseAddress,
- IN ULONG BugCheckOnFailure,
- IN MM_PAGE_PRIORITY Priority);
-
-NTKERNELAPI
-PVOID
-NTAPI
-MmMapLockedPagesWithReservedMapping(
- IN PVOID MappingAddress,
- IN ULONG PoolTag,
- IN PMDL MemoryDescriptorList,
- IN MEMORY_CACHING_TYPE CacheType);
-
NTKERNELAPI
NTSTATUS
NTAPI
IN PPHYSICAL_ADDRESS StartAddress,
IN OUT PLARGE_INTEGER NumberOfBytes);
-NTKERNELAPI
-PVOID
-NTAPI
-MmGetSystemRoutineAddress(
- IN PUNICODE_STRING SystemRoutineName);
-
/*
* ULONG
* ADDRESS_AND_SIZE_TO_SPAN_PAGES(
((ULONG) ((((ULONG_PTR) (_Va) & (PAGE_SIZE - 1)) \
+ (_Size) + (PAGE_SIZE - 1)) >> PAGE_SHIFT))
-/*
- * 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; \
-}
-
NTKERNELAPI
BOOLEAN
NTAPI
MmIsAddressValid(
IN PVOID VirtualAddress);
-NTKERNELAPI
-LOGICAL
-NTAPI
-MmIsDriverVerifying(
- IN PDRIVER_OBJECT DriverObject);
-
NTKERNELAPI
BOOLEAN
NTAPI
MmIsThisAnNtAsSystem(
VOID);
-NTKERNELAPI
-NTSTATUS
-NTAPI
-MmIsVerifierEnabled(
- OUT PULONG VerifierFlags);
-
-NTKERNELAPI
-PVOID
-NTAPI
-MmLockPagableDataSection(
- IN PVOID AddressWithinSection);
-
NTKERNELAPI
PVOID
NTAPI
MmLockPagableSectionByHandle(
IN PVOID ImageSectionHandle);
-NTKERNELAPI
-PVOID
-NTAPI
-MmMapIoSpace(
- IN PHYSICAL_ADDRESS PhysicalAddress,
- IN ULONG NumberOfBytes,
- IN MEMORY_CACHING_TYPE CacheEnable);
-
-NTKERNELAPI
-PVOID
-NTAPI
-MmMapLockedPages(
- IN PMDL MemoryDescriptorList,
- IN KPROCESSOR_MODE AccessMode);
-
NTKERNELAPI
PVOID
NTAPI
IN PVOID ImageSectionHandle
);
-NTKERNELAPI
-PVOID
-NTAPI
-MmPageEntireDriver(
- IN PVOID AddressWithinSection);
-
-NTKERNELAPI
-VOID
-NTAPI
-MmProbeAndLockProcessPages(
- IN OUT PMDL MemoryDescriptorList,
- IN PEPROCESS Process,
- IN KPROCESSOR_MODE AccessMode,
- IN LOCK_OPERATION Operation);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-MmProtectMdlSystemAddress(
- IN PMDL MemoryDescriptorList,
- IN ULONG NewProtect);
-
-NTKERNELAPI
-VOID
-NTAPI
-MmUnmapLockedPages(
- IN PVOID BaseAddress,
- IN PMDL MemoryDescriptorList);
-
NTKERNELAPI
NTSTATUS
NTAPI
MmUnsecureVirtualMemory(
IN HANDLE SecureHandle);
-/*
- * 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); \
- } \
-}
-
-#define MmGetProcedureAddress(Address) (Address)
-
-NTKERNELAPI
-VOID
-NTAPI
-MmProbeAndLockPages(
- IN OUT PMDL MemoryDescriptorList,
- IN KPROCESSOR_MODE AccessMode,
- IN LOCK_OPERATION Operation);
-
-NTKERNELAPI
-MM_SYSTEMSIZE
-NTAPI
-MmQuerySystemSize(
- VOID);
-
NTKERNELAPI
NTSTATUS
NTAPI
IN PPHYSICAL_ADDRESS StartAddress,
IN OUT PLARGE_INTEGER NumberOfBytes);
-NTKERNELAPI
-VOID
-NTAPI
-MmResetDriverPaging(
- IN PVOID AddressWithinSection);
-
NTKERNELAPI
HANDLE
NTAPI
IN SIZE_T Size,
IN ULONG ProbeMode);
-NTKERNELAPI
-SIZE_T
-NTAPI
-MmSizeOfMdl(
- IN PVOID Base,
- IN SIZE_T Length);
-
-NTKERNELAPI
-VOID
-NTAPI
-MmUnlockPagableImageSection(
- IN PVOID ImageSectionHandle);
-
-NTKERNELAPI
-VOID
-NTAPI
-MmUnlockPages(
- IN PMDL MemoryDescriptorList);
-
-NTKERNELAPI
-VOID
-NTAPI
-MmUnmapIoSpace(
- IN PVOID BaseAddress,
- IN SIZE_T NumberOfBytes);
-
-NTKERNELAPI
-VOID
-NTAPI
-MmUnmapReservedMapping(
- IN PVOID BaseAddress,
- IN ULONG PoolTag,
- IN PMDL MemoryDescriptorList);
-
NTKERNELAPI
VOID
NTAPI
IN PVOID BaseAddress,
IN SIZE_T NumberOfBytes);
-
-
/** Object manager routines **/
NTKERNELAPI
PSECURITY_DESCRIPTOR SecurityDescriptor,
ULONG Count);
-NTKERNELAPI
-LONG_PTR
-FASTCALL
-ObfDereferenceObject(
- IN PVOID Object);
-
-/*
- * VOID
- * ObDereferenceObject(
- * IN PVOID Object)
- */
-#define ObDereferenceObject ObfDereferenceObject
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-ObGetObjectSecurity(
- IN PVOID Object,
- OUT PSECURITY_DESCRIPTOR *SecurityDescriptor,
- OUT PBOOLEAN MemoryAllocated);
-
NTKERNELAPI
NTSTATUS
NTAPI
OUT PVOID* ReferencedObject OPTIONAL,
OUT PHANDLE Handle);
-NTKERNELAPI
-LONG_PTR
-FASTCALL
-ObfReferenceObject(
- IN PVOID Object);
-
NTKERNELAPI
NTSTATUS
NTAPI
IN PSECURITY_DESCRIPTOR InputSecurityDescriptor,
OUT PSECURITY_DESCRIPTOR *OutputSecurityDescriptor,
IN ULONG RefBias);
-/*
- * VOID
- * ObReferenceObject(
- * IN PVOID Object)
- */
-#define ObReferenceObject ObfReferenceObject
NTKERNELAPI
VOID
IN HANDLE Handle,
OUT PBOOLEAN GenerateOnClose);
-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
IN OUT PVOID ParseContext OPTIONAL,
OUT PVOID *Object);
-NTKERNELAPI
-NTSTATUS
-NTAPI
-ObReferenceObjectByPointer(
- IN PVOID Object,
- IN ACCESS_MASK DesiredAccess,
- IN POBJECT_TYPE ObjectType,
- IN KPROCESSOR_MODE AccessMode);
-
NTKERNELAPI
VOID
NTAPI
IN PSECURITY_DESCRIPTOR SecurityDescriptor,
IN ULONG Count);
-NTKERNELAPI
-VOID
-NTAPI
-ObReleaseObjectSecurity(
- IN PSECURITY_DESCRIPTOR SecurityDescriptor,
- IN BOOLEAN MemoryAllocated);
-
-
-
/** Process manager routines **/
NTKERNELAPI
IN ACCESS_MASK DesiredAccess,
IN POBJECT_ATTRIBUTES ObjectAttributes);
-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);
-
-/*
- * PEPROCESS
- * PsGetCurrentProcess(VOID)
- */
-#define PsGetCurrentProcess IoGetCurrentProcess
-
NTKERNELAPI
HANDLE
NTAPI
PsGetCurrentProcessId(
VOID);
-/*
- * PETHREAD
- * PsGetCurrentThread(VOID)
- */
-#define PsGetCurrentThread() \
- ((PETHREAD) KeGetCurrentThread())
-
NTKERNELAPI
HANDLE
NTAPI
PsSetLoadImageNotifyRoutine(
IN PLOAD_IMAGE_NOTIFY_ROUTINE NotifyRoutine);
-NTKERNELAPI
-NTSTATUS
-NTAPI
-PsTerminateSystemThread(
- IN NTSTATUS ExitStatus);
-
extern NTSYSAPI PEPROCESS PsInitialSystemProcess;
-
/** Security reference monitor routines **/
-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
LUID PrivilegeValue,
KPROCESSOR_MODE PreviousMode);
-NTKERNELAPI
-BOOLEAN
-NTAPI
-SeValidSecurityDescriptor(
- IN ULONG Length,
- IN PSECURITY_DESCRIPTOR SecurityDescriptor);
-
-
-
-/** NtXxx routines **/
+/** NtXxx and ZwXxx routines **/
NTSYSCALLAPI
NTSTATUS
IN ULONG ProcessInformationLength,
OUT PULONG ReturnLength OPTIONAL);
-
-
-/** NtXxx and ZwXxx routines **/
-
NTSYSAPI
NTSTATUS
NTAPI
NtClose(
IN HANDLE Handle);
-NTSYSAPI
-NTSTATUS
-NTAPI
-ZwClose(
- IN HANDLE Handle);
-
-NTSYSAPI
-NTSTATUS
-NTAPI
-ZwCreateDirectoryObject(
- OUT PHANDLE DirectoryHandle,
- IN ACCESS_MASK DesiredAccess,
- IN POBJECT_ATTRIBUTES ObjectAttributes);
-
NTSYSCALLAPI
NTSTATUS
NTAPI
IN EVENT_TYPE EventType,
IN BOOLEAN InitialState);
-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
IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
IN TIMER_TYPE TimerType);
-NTSYSAPI
-NTSTATUS
-NTAPI
-ZwDeleteKey(
- IN HANDLE KeyHandle);
-
-NTSYSAPI
-NTSTATUS
-NTAPI
-ZwDeleteValueKey(
- IN HANDLE KeyHandle,
- IN PUNICODE_STRING ValueName);
-
NTSYSCALLAPI
NTSTATUS
NTAPI
OUT PIO_STATUS_BLOCK IoStatusBlock,
IN ULONG IoControlCode,
IN PVOID InputBuffer,
- IN ULONG InputBufferSize,
- OUT PVOID OutputBuffer,
- IN ULONG OutputBufferSize);
-
-NTSYSAPI
-NTSTATUS
-NTAPI
-ZwEnumerateKey(
- IN HANDLE KeyHandle,
- IN ULONG Index,
- IN KEY_INFORMATION_CLASS KeyInformationClass,
- OUT PVOID KeyInformation,
- 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,
- IN ULONG Length,
- OUT PULONG ResultLength);
-
-NTSYSAPI
-NTSTATUS
-NTAPI
-ZwFlushKey(
- IN HANDLE KeyHandle);
-
-NTSYSAPI
-NTSTATUS
-NTAPI
-ZwMakeTemporaryObject(
- IN HANDLE Handle);
+ IN ULONG InputBufferSize,
+ OUT PVOID OutputBuffer,
+ IN ULONG OutputBufferSize);
NTSYSCALLAPI
NTSTATUS
IN ULONG AllocationType,
IN ULONG Protect);
-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);
-
NTSYSCALLAPI
NTSTATUS
NTAPI
IN ULONG ShareAccess,
IN ULONG OpenOptions);
+
+
NTSYSAPI
NTSTATUS
NTAPI
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
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,
- 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,
- IN ULONG Length,
- OUT PULONG ResultLength);
-
NTSYSCALLAPI
NTSTATUS
NTAPI
IN PLARGE_INTEGER ByteOffset OPTIONAL,
IN PULONG Key OPTIONAL);
-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);
-
NTSYSCALLAPI
NTSTATUS
NTAPI
IN HANDLE EventHandle,
OUT PLONG PreviousState 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
IN LONG Period OPTIONAL,
OUT PBOOLEAN PreviousState OPTIONAL);
-NTSYSAPI
-NTSTATUS
-NTAPI
-ZwSetValueKey(
- IN HANDLE KeyHandle,
- IN PUNICODE_STRING ValueName,
- IN ULONG TitleIndex OPTIONAL,
- IN ULONG Type,
- IN PVOID Data,
- IN ULONG DataSize);
-
/* [Nt|Zw]MapViewOfSection.InheritDisposition constants */
#define AT_EXTENDABLE_FILE 0x00002000
#define AT_RESERVED 0x20000000
IN HANDLE ProcessHandle,
IN PVOID BaseAddress);
-NTSYSAPI
-NTSTATUS
-NTAPI
-ZwUnmapViewOfSection(
- IN HANDLE ProcessHandle,
- IN PVOID BaseAddress);
-
NTSYSCALLAPI
NTSTATUS
NTAPI
IN PLARGE_INTEGER ByteOffset OPTIONAL,
IN PULONG Key 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);
-
-
-
/** Power management support routines **/
-NTKERNELAPI
-NTSTATUS
-NTAPI
-PoCallDriver(
- IN PDEVICE_OBJECT DeviceObject,
- IN OUT PIRP Irp);
-
-NTKERNELAPI
-PULONG
-NTAPI
-PoRegisterDeviceForIdleDetection(
- IN PDEVICE_OBJECT DeviceObject,
- IN ULONG ConservationIdleTime,
- IN ULONG PerformanceIdleTime,
- IN DEVICE_POWER_STATE State);
-
-NTKERNELAPI
-PVOID
-NTAPI
-PoRegisterSystemState(
- IN PVOID StateHandle,
- IN EXECUTION_STATE Flags);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-PoRequestPowerIrp(
- IN PDEVICE_OBJECT DeviceObject,
- IN UCHAR MinorFunction,
- IN POWER_STATE PowerState,
- IN PREQUEST_POWER_COMPLETE CompletionFunction,
- IN PVOID Context,
- OUT PIRP *Irp OPTIONAL);
-
NTKERNELAPI
NTSTATUS
NTAPI
PoRequestShutdownEvent(
OUT PVOID *Event);
-NTKERNELAPI
-VOID
-NTAPI
-PoSetDeviceBusy(
- PULONG IdlePointer);
-
-#define PoSetDeviceBusy(IdlePointer) \
- ((void)(*(IdlePointer) = 0))
-
-NTKERNELAPI
-POWER_STATE
-NTAPI
-PoSetPowerState(
- IN PDEVICE_OBJECT DeviceObject,
- IN POWER_STATE_TYPE Type,
- IN POWER_STATE State);
-
-NTKERNELAPI
-VOID
-NTAPI
-PoSetSystemState(
- IN EXECUTION_STATE Flags);
-
-NTKERNELAPI
-VOID
-NTAPI
-PoStartNextPowerIrp(
- IN PIRP Irp);
-
-NTKERNELAPI
-VOID
-NTAPI
-PoUnregisterSystemState(
- IN PVOID StateHandle);
-
-
-
/** WMI library support routines **/
NTSTATUS
IN ULONG EventDataSize,
IN PVOID EventData);
-NTKERNELAPI
-NTSTATUS
-NTAPI
-WmiQueryTraceInformation(
- IN TRACE_INFORMATION_CLASS TraceInformationClass,
- OUT PVOID TraceInformation,
- IN ULONG TraceInformationLength,
- OUT PULONG RequiredLength OPTIONAL,
- IN PVOID Buffer OPTIONAL);
-
NTSTATUS
NTAPI
WmiSystemControl(
IN PIRP Irp,
OUT PSYSCTL_IRP_DISPOSITION IrpDisposition);
-NTKERNELAPI
-NTSTATUS
-DDKCDECLAPI
-WmiTraceMessage(
- IN TRACEHANDLE LoggerHandle,
- IN ULONG MessageFlags,
- IN LPGUID MessageGuid,
- IN USHORT MessageNumber,
- IN ...);
-
-#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
-
-
/** Kernel debugger routines **/
-NTKERNELAPI
-NTSTATUS
-NTAPI
-KdDisableDebugger(
- VOID);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-KdEnableDebugger(
- VOID);
-
-NTKERNELAPI
-BOOLEAN
-NTAPI
-KdRefreshDebuggerNotPresent(
- VOID
-);
-
-#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
-
-VOID
-NTAPI
-DbgBreakPoint(
- VOID);
-
-NTSYSAPI
-VOID
-NTAPI
-DbgBreakPointWithStatus(
- IN ULONG Status);
-
-ULONG
-DDKCDECLAPI
-DbgPrint(
- IN PCCH Format,
- IN ...);
-
-NTSYSAPI
-ULONG
-DDKCDECLAPI
-DbgPrintEx(
- IN ULONG ComponentId,
- IN ULONG Level,
- IN PCCH Format,
- IN ...);
-
-ULONG
-NTAPI
-vDbgPrintEx(
- IN ULONG ComponentId,
- IN ULONG Level,
- IN PCCH Format,
- IN va_list ap);
-
-ULONG
-NTAPI
-vDbgPrintExWithPrefix(
- IN PCCH Prefix,
- IN ULONG ComponentId,
- IN ULONG Level,
- IN PCCH Format,
- IN va_list ap);
-
-NTKERNELAPI
-ULONG
-DDKCDECLAPI
-DbgPrintReturnControlC(
- IN PCCH Format,
- IN ...);
-
ULONG
NTAPI
DbgPrompt(
IN ULONG MaximumResponseLength
);
-NTKERNELAPI
-NTSTATUS
-NTAPI
-DbgQueryDebugFilterState(
- IN ULONG ComponentId,
- IN ULONG Level);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-DbgSetDebugFilterState(
- IN ULONG ComponentId,
- IN ULONG Level,
- IN BOOLEAN State);
-
-#if DBG
-
-#define KdPrint(_x_) DbgPrint _x_
-#define KdPrintEx(_x_) DbgPrintEx _x_
-#define KdBreakPoint() DbgBreakPoint()
-#define KdBreakPointWithStatus(s) DbgBreakPointWithStatus(s)
-
-#else /* !DBG */
-
-#define KdPrint(_x_)
-#define KdPrintEx(_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(_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
-
/** Stuff from winnt4.h */
-#ifndef DMA_MACROS_DEFINED
-
-#if (NTDDI_VERSION >= NTDDI_WIN2K)
-
-//DECLSPEC_DEPRECATED_DDK
-NTHALAPI
-BOOLEAN
-NTAPI
-IoFlushAdapterBuffers(
- IN PADAPTER_OBJECT AdapterObject,
- IN PMDL Mdl,
- IN PVOID MapRegisterBase,
- IN PVOID CurrentVa,
- IN ULONG Length,
- IN BOOLEAN WriteToDevice);
-
-//DECLSPEC_DEPRECATED_DDK
-NTHALAPI
-VOID
-NTAPI
-IoFreeAdapterChannel(
- IN PADAPTER_OBJECT AdapterObject);
-
-//DECLSPEC_DEPRECATED_DDK
-NTHALAPI
-VOID
-NTAPI
-IoFreeMapRegisters(
- IN PADAPTER_OBJECT AdapterObject,
- IN PVOID MapRegisterBase,
- IN ULONG NumberOfMapRegisters);
-
-//DECLSPEC_DEPRECATED_DDK
-NTHALAPI
-PHYSICAL_ADDRESS
-NTAPI
-IoMapTransfer(
- IN PADAPTER_OBJECT AdapterObject,
- IN PMDL Mdl,
- IN PVOID MapRegisterBase,
- IN PVOID CurrentVa,
- IN OUT PULONG Length,
- IN BOOLEAN WriteToDevice);
-
-
-#endif // (NTDDI_VERSION >= NTDDI_WIN2K)
-#endif // !defined(DMA_MACROS_DEFINED)
-
NTKERNELAPI
NTSTATUS
NTAPI
IN ULONG NumberOfMapRegisters,
IN PDRIVER_CONTROL ExecutionRoutine);
-NTHALAPI
-PVOID
-NTAPI
-HalAllocateCommonBuffer(
- IN PADAPTER_OBJECT AdapterObject,
- IN ULONG Length,
- OUT PPHYSICAL_ADDRESS LogicalAddress,
- IN BOOLEAN CacheEnabled);
-
NTHALAPI
NTSTATUS
NTAPI
IN PULONG Target,
IN ULONG Value);
-#define ExInterlockedIncrementLong(Addend,Lock) Exfi386InterlockedIncrementLong(Addend)
-#define ExInterlockedDecrementLong(Addend,Lock) Exfi386InterlockedDecrementLong(Addend)
-#define ExInterlockedExchangeUlong(Target, Value, Lock) Exfi386InterlockedExchangeUlong(Target, Value)
-
#endif /* _X86_ */
-
+
#ifdef _M_ARM
//
// NT-ARM is not documented