#ifndef __WINDDK_H
#define __WINDDK_H
-#if __GNUC__ >= 3
-#pragma GCC system_header
-#endif
-
#ifdef __cplusplus
extern "C" {
#endif
-#include "intrin.h"
-
-/*
-** Definitions specific to this Device Driver Kit
-*/
-#define DDKAPI __stdcall
-#define DDKFASTAPI __fastcall
-#define FASTCALL __fastcall
-#define DDKCDECLAPI __cdecl
+#include <excpt.h>
+#include <ntdef.h>
+#include <ntstatus.h>
-/* FIXME: REMOVE THIS UNCOMPATIBLE CRUFT!!! */
-//#define NTKERNELAPI
+#ifdef __GNUC__
+#include "intrin.h"
+#endif
#ifdef _NTOSKRNL_
-#define NTKERNELAPI
+/* HACKHACKHACK!!! We shouldn't include this header from ntoskrnl! */
+#define NTKERNELAPI
#else
#define NTKERNELAPI DECLSPEC_IMPORT
#endif
-
-#ifndef NTOSAPI
-#define NTOSAPI NTKERNELAPI
-#endif
-#if defined(_NTOSKRNL_)
-#define DECLARE_INTERNAL_OBJECT(x) typedef struct _##x; typedef struct _##x *P##x;
-#define DECLARE_INTERNAL_OBJECT2(x,y) typedef struct _##x; typedef struct _##x *P##y;
-#else
-#define DECLARE_INTERNAL_OBJECT(x) struct _##x; typedef struct _##x *P##x;
-#define DECLARE_INTERNAL_OBJECT2(x,y) struct _##x; typedef struct _##x *P##y;
-#endif
-
#if !defined(_NTHAL_)
#define NTHALAPI DECLSPEC_IMPORT
#else
#define ALIGN_UP_POINTER(p, t) \
(ALIGN_DOWN_POINTER(((ULONG_PTR)(p) + sizeof(t) - 1), t))
+/*
+ * GUID Comparison
+ */
+
+#ifndef __IID_ALIGNED__
+ #define __IID_ALIGNED__
+
+ #define IsEqualGUIDAligned(guid1, guid2) \
+ ( (*(PLONGLONG)(guid1) == *(PLONGLONG)(guid2)) && \
+ (*((PLONGLONG)(guid1) + 1) == *((PLONGLONG)(guid2) + 1)) )
+#endif
+
/*
** Forward declarations
*/
struct _SCATTER_GATHER_LIST;
struct _DRIVE_LAYOUT_INFORMATION;
struct _DRIVE_LAYOUT_INFORMATION_EX;
+struct _LOADER_PARAMETER_BLOCK;
+#ifndef _SECURITY_ATTRIBUTES_
+#define _SECURITY_ATTRIBUTES_
typedef PVOID PSECURITY_DESCRIPTOR;
+#endif
typedef ULONG SECURITY_INFORMATION, *PSECURITY_INFORMATION;
typedef PVOID PSID;
-DECLARE_INTERNAL_OBJECT(ADAPTER_OBJECT)
-DECLARE_INTERNAL_OBJECT(DMA_ADAPTER)
-DECLARE_INTERNAL_OBJECT(IO_STATUS_BLOCK)
-
#if 1
/* FIXME: Unknown definitions */
struct _SET_PARTITION_INFORMATION_EX;
#define WaitAny 1
typedef HANDLE TRACEHANDLE;
typedef PVOID PWMILIB_CONTEXT;
-typedef PVOID PSYSCTL_IRP_DISPOSITION;
typedef ULONG LOGICAL;
#endif
+/*
+** WmiLib specific structure
+*/
+typedef enum
+{
+ IrpProcessed, // Irp was processed and possibly completed
+ IrpNotCompleted, // Irp was process and NOT completed
+ IrpNotWmi, // Irp is not a WMI irp
+ IrpForward // Irp is wmi irp, but targeted at another device object
+} SYSCTL_IRP_DISPOSITION, *PSYSCTL_IRP_DISPOSITION;
+
/*
** Routines specific to this DDK
*/
MaximumMode
} MODE;
-typedef struct _QUAD
-{
- union
- {
- LONGLONG UseThisFieldToCopy;
- float DoNotUseThisField;
- };
-} QUAD, *PQUAD;
/* Structures not exposed to drivers */
-typedef struct _IO_TIMER *PIO_TIMER;
-typedef struct _KPROCESS *PKPROCESS;
-typedef struct _EPROCESS *PEPROCESS;
-typedef struct _ETHREAD *PETHREAD;
-typedef struct _KINTERRUPT *PKINTERRUPT;
typedef struct _OBJECT_TYPE *POBJECT_TYPE;
-typedef struct _KTHREAD *PKTHREAD, *PRKTHREAD;
-typedef struct _COMPRESSED_DATA_INFO *PCOMPRESSED_DATA_INFO;
typedef struct _HAL_DISPATCH_TABLE *PHAL_DISPATCH_TABLE;
typedef struct _HAL_PRIVATE_DISPATCH_TABLE *PHAL_PRIVATE_DISPATCH_TABLE;
typedef struct _DEVICE_HANDLER_OBJECT *PDEVICE_HANDLER_OBJECT;
typedef struct _BUS_HANDLER *PBUS_HANDLER;
-typedef struct _PEB *PPEB;
-typedef struct _ADAPTER_OBJECT *PADAPTER_OBJECT;
+
+typedef struct _ADAPTER_OBJECT *PADAPTER_OBJECT;
+typedef struct _CALLBACK_OBJECT *PCALLBACK_OBJECT;
+typedef struct _ETHREAD *PETHREAD;
+typedef struct _EPROCESS *PEPROCESS;
+typedef struct _IO_TIMER *PIO_TIMER;
+typedef struct _KINTERRUPT *PKINTERRUPT;
+typedef struct _KPROCESS *PKPROCESS;
+typedef struct _KTHREAD *PKTHREAD, *PRKTHREAD;
+
+//
+// Forwarder
+//
+struct _COMPRESSED_DATA_INFO;
/* Constants */
#define NtCurrentProcess() ( (HANDLE)(LONG_PTR) -1 )
#define ZwCurrentProcess() NtCurrentProcess()
#define NtCurrentThread() ( (HANDLE)(LONG_PTR) -2 )
#define ZwCurrentThread() NtCurrentThread()
-#ifdef _REACTOS_
-#define KIP0PCRADDRESS 0xff000000
-#else
+
+#if (_M_IX86)
#define KIP0PCRADDRESS 0xffdff000
#endif
#define KERNEL_STACK_SIZE 12288
#define KERNEL_LARGE_STACK_SIZE 61440
+#define KERNEL_LARGE_STACK_COMMIT 12288
+#define EXCEPTION_READ_FAULT 0
+#define EXCEPTION_WRITE_FAULT 1
+#define EXCEPTION_EXECUTE_FAULT 8
#define DPFLTR_ERROR_LEVEL 0
#define DPFLTR_WARNING_LEVEL 1
#define DPFLTR_INFO_LEVEL 3
#define DPFLTR_MASK 0x80000000
+typedef enum _DPFLTR_TYPE
+{
+ DPFLTR_SYSTEM_ID = 0,
+ DPFLTR_SMSS_ID = 1,
+ DPFLTR_SETUP_ID = 2,
+ DPFLTR_NTFS_ID = 3,
+ DPFLTR_FSTUB_ID = 4,
+ DPFLTR_CRASHDUMP_ID = 5,
+ DPFLTR_CDAUDIO_ID = 6,
+ DPFLTR_CDROM_ID = 7,
+ DPFLTR_CLASSPNP_ID = 8,
+ DPFLTR_DISK_ID = 9,
+ DPFLTR_REDBOOK_ID = 10,
+ DPFLTR_STORPROP_ID = 11,
+ DPFLTR_SCSIPORT_ID = 12,
+ DPFLTR_SCSIMINIPORT_ID = 13,
+ DPFLTR_CONFIG_ID = 14,
+ DPFLTR_I8042PRT_ID = 15,
+ DPFLTR_SERMOUSE_ID = 16,
+ DPFLTR_LSERMOUS_ID = 17,
+ DPFLTR_KBDHID_ID = 18,
+ DPFLTR_MOUHID_ID = 19,
+ DPFLTR_KBDCLASS_ID = 20,
+ DPFLTR_MOUCLASS_ID = 21,
+ DPFLTR_TWOTRACK_ID = 22,
+ DPFLTR_WMILIB_ID = 23,
+ DPFLTR_ACPI_ID = 24,
+ DPFLTR_AMLI_ID = 25,
+ DPFLTR_HALIA64_ID = 26,
+ DPFLTR_VIDEO_ID = 27,
+ DPFLTR_SVCHOST_ID = 28,
+ DPFLTR_VIDEOPRT_ID = 29,
+ DPFLTR_TCPIP_ID = 30,
+ DPFLTR_DMSYNTH_ID = 31,
+ DPFLTR_NTOSPNP_ID = 32,
+ DPFLTR_FASTFAT_ID = 33,
+ DPFLTR_SAMSS_ID = 34,
+ DPFLTR_PNPMGR_ID = 35,
+ DPFLTR_NETAPI_ID = 36,
+ DPFLTR_SCSERVER_ID = 37,
+ DPFLTR_SCCLIENT_ID = 38,
+ DPFLTR_SERIAL_ID = 39,
+ DPFLTR_SERENUM_ID = 40,
+ DPFLTR_UHCD_ID = 41,
+ DPFLTR_BOOTOK_ID = 42,
+ DPFLTR_BOOTVRFY_ID = 43,
+ DPFLTR_RPCPROXY_ID = 44,
+ DPFLTR_AUTOCHK_ID = 45,
+ DPFLTR_DCOMSS_ID = 46,
+ DPFLTR_UNIMODEM_ID = 47,
+ DPFLTR_SIS_ID = 48,
+ DPFLTR_FLTMGR_ID = 49,
+ DPFLTR_WMICORE_ID = 50,
+ DPFLTR_BURNENG_ID = 51,
+ DPFLTR_IMAPI_ID = 52,
+ DPFLTR_SXS_ID = 53,
+ DPFLTR_FUSION_ID = 54,
+ DPFLTR_IDLETASK_ID = 55,
+ DPFLTR_SOFTPCI_ID = 56,
+ DPFLTR_TAPE_ID = 57,
+ DPFLTR_MCHGR_ID = 58,
+ DPFLTR_IDEP_ID = 59,
+ DPFLTR_PCIIDE_ID = 60,
+ DPFLTR_FLOPPY_ID = 61,
+ DPFLTR_FDC_ID = 62,
+ DPFLTR_TERMSRV_ID = 63,
+ DPFLTR_W32TIME_ID = 64,
+ DPFLTR_PREFETCHER_ID = 65,
+ DPFLTR_RSFILTER_ID = 66,
+ DPFLTR_FCPORT_ID = 67,
+ DPFLTR_PCI_ID = 68,
+ DPFLTR_DMIO_ID = 69,
+ DPFLTR_DMCONFIG_ID = 70,
+ DPFLTR_DMADMIN_ID = 71,
+ DPFLTR_WSOCKTRANSPORT_ID = 72,
+ DPFLTR_VSS_ID = 73,
+ DPFLTR_PNPMEM_ID = 74,
+ DPFLTR_PROCESSOR_ID = 75,
+ DPFLTR_DMSERVER_ID = 76,
+ DPFLTR_SR_ID = 77,
+ DPFLTR_INFINIBAND_ID = 78,
+ DPFLTR_IHVDRIVER_ID = 79,
+ DPFLTR_IHVVIDEO_ID = 80,
+ DPFLTR_IHVAUDIO_ID = 81,
+ DPFLTR_IHVNETWORK_ID = 82,
+ DPFLTR_IHVSTREAMING_ID = 83,
+ DPFLTR_IHVBUS_ID = 84,
+ DPFLTR_HPS_ID = 85,
+ DPFLTR_RTLTHREADPOOL_ID = 86,
+ DPFLTR_LDR_ID = 87,
+ DPFLTR_TCPIP6_ID = 88,
+ DPFLTR_ISAPNP_ID = 89,
+ DPFLTR_SHPC_ID = 90,
+ DPFLTR_STORPORT_ID = 91,
+ DPFLTR_STORMINIPORT_ID = 92,
+ DPFLTR_PRINTSPOOLER_ID = 93,
+ DPFLTR_VDS_ID = 94,
+ DPFLTR_VDSBAS_ID = 95,
+ DPFLTR_VDSDYNDR_ID = 96,
+ DPFLTR_VDSUTIL_ID = 97,
+ DPFLTR_DFRGIFC_ID = 98,
+ DPFLTR_DEFAULT_ID = 99,
+ DPFLTR_MM_ID = 100,
+ DPFLTR_DFSC_ID = 101,
+ DPFLTR_WOW64_ID = 102,
+ DPFLTR_ENDOFTABLE_ID
+} DPFLTR_TYPE;
+
#define MAXIMUM_PROCESSORS 32
#define MAXIMUM_WAIT_OBJECTS 64
#define MAXIMUM_SUSPEND_COUNT MAXCHAR
+#define MAXIMUM_FILENAME_LENGTH 256
+
#define FILE_SUPERSEDED 0x00000000
#define FILE_OPENED 0x00000001
#define FILE_CREATED 0x00000002
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)
extern volatile CCHAR NTSYSAPI KeNumberProcessors;
extern volatile KSYSTEM_TIME KeTickCount;
+#define NX_SUPPORT_POLICY_ALWAYSOFF 0
+#define NX_SUPPORT_POLICY_ALWAYSON 1
+#define NX_SUPPORT_POLICY_OPTIN 2
+#define NX_SUPPORT_POLICY_OPTOUT 3
+
typedef struct _KUSER_SHARED_DATA
{
ULONG TickCountLowDeprecated;
#define IRP_MN_REGINFO_EX 0x0b
+typedef enum _IO_PAGING_PRIORITY
+{
+ IoPagingPriorityInvalid,
+ IoPagingPriorityNormal,
+ IoPagingPriorityHigh,
+ IoPagingPriorityReserved1,
+ IoPagingPriorityReserved2
+} IO_PAGING_PRIORITY;
+
typedef enum _IO_ALLOCATION_ACTION {
KeepObject = 1,
DeallocateObject,
IN PVOID MapRegisterBase,
IN PVOID Context);
+
typedef EXCEPTION_DISPOSITION
(DDKAPI *PEXCEPTION_ROUTINE)(
IN struct _EXCEPTION_RECORD *ExceptionRecord,
IN PVOID Context);
typedef NTSTATUS
-(DDKAPI *PDRIVER_ADD_DEVICE)(
+(DDKAPI DRIVER_ADD_DEVICE)(
IN struct _DRIVER_OBJECT *DriverObject,
IN struct _DEVICE_OBJECT *PhysicalDeviceObject);
+typedef DRIVER_ADD_DEVICE *PDRIVER_ADD_DEVICE;
typedef NTSTATUS
-(DDKAPI *PIO_COMPLETION_ROUTINE)(
+(DDKAPI IO_COMPLETION_ROUTINE)(
IN struct _DEVICE_OBJECT *DeviceObject,
IN struct _IRP *Irp,
IN PVOID Context);
+typedef IO_COMPLETION_ROUTINE *PIO_COMPLETION_ROUTINE;
typedef VOID
-(DDKAPI *PDRIVER_CANCEL)(
+(DDKAPI DRIVER_CANCEL)(
IN struct _DEVICE_OBJECT *DeviceObject,
IN struct _IRP *Irp);
+typedef DRIVER_CANCEL *PDRIVER_CANCEL;
typedef VOID
(DDKAPI *PKDEFERRED_ROUTINE)(
IN PVOID SystemArgument2);
typedef NTSTATUS
-(DDKAPI *PDRIVER_DISPATCH)(
+(DDKAPI DRIVER_DISPATCH)(
IN struct _DEVICE_OBJECT *DeviceObject,
IN struct _IRP *Irp);
+typedef DRIVER_DISPATCH *PDRIVER_DISPATCH;
typedef VOID
(DDKAPI *PIO_DPC_ROUTINE)(
IN PUNICODE_STRING RegistryPath);
typedef NTSTATUS
-(DDKAPI *PDRIVER_INITIALIZE)(
+(DDKAPI DRIVER_INITIALIZE)(
IN struct _DRIVER_OBJECT *DriverObject,
IN PUNICODE_STRING RegistryPath);
+typedef DRIVER_INITIALIZE *PDRIVER_INITIALIZE;
typedef BOOLEAN
-(DDKAPI *PKSERVICE_ROUTINE)(
+(DDKAPI KSERVICE_ROUTINE)(
IN struct _KINTERRUPT *Interrupt,
IN PVOID ServiceContext);
+typedef KSERVICE_ROUTINE *PKSERVICE_ROUTINE;
typedef VOID
(DDKAPI *PIO_TIMER_ROUTINE)(
IN ULONG Count);
typedef VOID
-(DDKAPI *PDRIVER_STARTIO)(
+(DDKAPI DRIVER_STARTIO)(
IN struct _DEVICE_OBJECT *DeviceObject,
IN struct _IRP *Irp);
+typedef DRIVER_STARTIO *PDRIVER_STARTIO;
typedef BOOLEAN
(DDKAPI *PKSYNCHRONIZE_ROUTINE)(
IN PVOID SynchronizeContext);
typedef VOID
-(DDKAPI *PDRIVER_UNLOAD)(
+(DDKAPI DRIVER_UNLOAD)(
IN struct _DRIVER_OBJECT *DriverObject);
+typedef DRIVER_UNLOAD *PDRIVER_UNLOAD;
UNICODE_STRING Name;
} OBJECT_NAME_INFORMATION, *POBJECT_NAME_INFORMATION;
-typedef VOID
-(DDKAPI *PIO_APC_ROUTINE)(
- IN PVOID ApcContext,
- IN PIO_STATUS_BLOCK IoStatusBlock,
- IN ULONG Reserved);
-
typedef struct _IO_STATUS_BLOCK {
_ANONYMOUS_UNION union {
NTSTATUS Status;
PVOID Pointer;
} DUMMYUNIONNAME;
ULONG_PTR Information;
-} IO_STATUS_BLOCK;
+} IO_STATUS_BLOCK, *PIO_STATUS_BLOCK;
+
+typedef VOID
+(DDKAPI *PIO_APC_ROUTINE)(
+ IN PVOID ApcContext,
+ IN PIO_STATUS_BLOCK IoStatusBlock,
+ IN ULONG Reserved);
typedef VOID
(DDKAPI *PKNORMAL_ROUTINE)(
typedef
VOID
-(*PKIPI_WORKER)(
+(NTAPI *PKIPI_WORKER)(
IN PKIPI_CONTEXT PacketContext,
IN PVOID Parameter1,
IN PVOID Parameter2,
{
union
{
- ULONG_PTR Count;
- PVOID Ptr;
+ volatile ULONG_PTR Count;
+ volatile PVOID Ptr;
};
} EX_RUNDOWN_REF, *PEX_RUNDOWN_REF;
#define IO_VIDEO_INCREMENT 1
#define SEMAPHORE_INCREMENT 1
+#define MM_MAXIMUM_DISK_IO_SIZE (0x10000)
+
typedef struct _IRP {
CSHORT Type;
USHORT Size;
ULONG Flags;
union {
struct _IRP *MasterIrp;
- LONG IrpCount;
+ volatile LONG IrpCount;
PVOID SystemBuffer;
} AssociatedIrp;
LIST_ENTRY ThreadListEntry;
} AsynchronousParameters;
LARGE_INTEGER AllocationSize;
} Overlay;
- PDRIVER_CANCEL CancelRoutine;
+ volatile PDRIVER_CANCEL CancelRoutine;
PVOID UserBuffer;
union {
struct {
struct {
ULONG Level;
ULONG Vector;
- ULONG Affinity;
+ KAFFINITY Affinity;
} Interrupt;
+#if (NTDDI_VERSION >= NTDDI_LONGHORN)
+ struct {
+ union {
+ struct {
+ USHORT Reserved;
+ USHORT MessageCount;
+ ULONG Vector;
+ KAFFINITY Affinity;
+ } Raw;
+ struct {
+ ULONG Level;
+ ULONG Vector;
+ KAFFINITY Affinity;
+ } Translated;
+ };
+ } MessageInterrupt;
+#endif
struct {
PHYSICAL_ADDRESS Start;
ULONG Length;
ULONG Reserved1;
ULONG Reserved2;
} DeviceSpecificData;
+#if (NTDDI_VERSION >= NTDDI_LONGHORN)
+ struct {
+ PHYSICAL_ADDRESS Start;
+ ULONG Length40;
+ } Memory40;
+ struct {
+ PHYSICAL_ADDRESS Start;
+ ULONG Length48;
+ } Memory48;
+ struct {
+ PHYSICAL_ADDRESS Start;
+ ULONG Length64;
+ } Memory64;
+#endif
} u;
} CM_PARTIAL_RESOURCE_DESCRIPTOR, *PCM_PARTIAL_RESOURCE_DESCRIPTOR;
USHORT MaxHeads;
USHORT NumberDrives;
} CM_INT13_DRIVE_PARAMETER, *PCM_INT13_DRIVE_PARAMETER;
+
+typedef struct _CM_PNP_BIOS_DEVICE_NODE
+{
+ USHORT Size;
+ UCHAR Node;
+ ULONG ProductId;
+ UCHAR DeviceType[3];
+ USHORT DeviceAttributes;
+} CM_PNP_BIOS_DEVICE_NODE,*PCM_PNP_BIOS_DEVICE_NODE;
+
+typedef struct _CM_PNP_BIOS_INSTALLATION_CHECK
+{
+ UCHAR Signature[4];
+ UCHAR Revision;
+ UCHAR Length;
+ USHORT ControlField;
+ UCHAR Checksum;
+ ULONG EventFlagAddress;
+ USHORT RealModeEntryOffset;
+ USHORT RealModeEntrySegment;
+ USHORT ProtectedModeEntryOffset;
+ ULONG ProtectedModeCodeBaseAddress;
+ ULONG OemDeviceId;
+ USHORT RealModeDataBaseAddress;
+ ULONG ProtectedModeDataBaseAddress;
+} CM_PNP_BIOS_INSTALLATION_CHECK, *PCM_PNP_BIOS_INSTALLATION_CHECK;
+
#include <poppack.h>
+typedef struct _CM_DISK_GEOMETRY_DEVICE_DATA
+{
+ ULONG BytesPerSector;
+ ULONG NumberOfCylinders;
+ ULONG SectorsPerTrack;
+ ULONG NumberOfHeads;
+} CM_DISK_GEOMETRY_DEVICE_DATA, *PCM_DISK_GEOMETRY_DEVICE_DATA;
+
typedef struct _CM_KEYBOARD_DEVICE_DATA {
USHORT Version;
USHORT Revision;
ULONG BaudClock;
} CM_SERIAL_DEVICE_DATA, *PCM_SERIAL_DEVICE_DATA;
+typedef struct _IO_COUNTERS {
+ ULONGLONG ReadOperationCount;
+ ULONGLONG WriteOperationCount;
+ ULONGLONG OtherOperationCount;
+ ULONGLONG ReadTransferCount;
+ ULONGLONG WriteTransferCount;
+ ULONGLONG OtherTransferCount;
+} IO_COUNTERS, *PIO_COUNTERS;
+
typedef struct _VM_COUNTERS
{
SIZE_T PeakVirtualSize;
#define DO_POWER_PAGABLE 0x00002000
#define DO_POWER_INRUSH 0x00004000
#define DO_LOW_PRIORITY_FILESYSTEM 0x00010000
+#define DO_XIP 0x00020000
/* DEVICE_OBJECT.Characteristics */
#define FILE_DEVICE_SERENUM 0x00000037
#define FILE_DEVICE_TERMSRV 0x00000038
#define FILE_DEVICE_KSEC 0x00000039
-#define FILE_DEVICE_FIPS 0x0000003a
+#define FILE_DEVICE_FIPS 0x0000003a
typedef struct _DEVICE_OBJECT {
CSHORT Type;
PIO_TIMER Timer;
ULONG Flags;
ULONG Characteristics;
- PVPB Vpb;
+ volatile PVPB Vpb;
PVOID DeviceExtension;
DEVICE_TYPE DeviceType;
CCHAR StackSize;
typedef struct _SCATTER_GATHER_LIST {
ULONG NumberOfElements;
ULONG_PTR Reserved;
- SCATTER_GATHER_ELEMENT Elements[0];
+ SCATTER_GATHER_ELEMENT Elements[1];
} SCATTER_GATHER_LIST, *PSCATTER_GATHER_LIST;
typedef struct _MDL {
ULONG ByteOffset;
} MDL, *PMDL;
-#define MDL_MAPPED_TO_SYSTEM_VA 0x0001
-#define MDL_PAGES_LOCKED 0x0002
-#define MDL_SOURCE_IS_NONPAGED_POOL 0x0004
-#define MDL_ALLOCATED_FIXED_SIZE 0x0008
-#define MDL_PARTIAL 0x0010
-#define MDL_PARTIAL_HAS_BEEN_MAPPED 0x0020
-#define MDL_IO_PAGE_READ 0x0040
-#define MDL_WRITE_OPERATION 0x0080
-#define MDL_PARENT_MAPPED_SYSTEM_VA 0x0100
-#define MDL_FREE_EXTRA_PTES 0x0200
-#define MDL_IO_SPACE 0x0800
-#define MDL_NETWORK_HEADER 0x1000
-#define MDL_MAPPING_CAN_FAIL 0x2000
-#define MDL_ALLOCATED_MUST_SUCCEED 0x4000
+#define MDL_MAPPED_TO_SYSTEM_VA 0x0001
+#define MDL_PAGES_LOCKED 0x0002
+#define MDL_SOURCE_IS_NONPAGED_POOL 0x0004
+#define MDL_ALLOCATED_FIXED_SIZE 0x0008
+#define MDL_PARTIAL 0x0010
+#define MDL_PARTIAL_HAS_BEEN_MAPPED 0x0020
+#define MDL_IO_PAGE_READ 0x0040
+#define MDL_WRITE_OPERATION 0x0080
+#define MDL_PARENT_MAPPED_SYSTEM_VA 0x0100
+#define MDL_FREE_EXTRA_PTES 0x0200
+#define MDL_DESCRIBES_AWE 0x0400
+#define MDL_IO_SPACE 0x0800
+#define MDL_NETWORK_HEADER 0x1000
+#define MDL_MAPPING_CAN_FAIL 0x2000
+#define MDL_ALLOCATED_MUST_SUCCEED 0x4000
+#define MDL_INTERNAL 0x8000
+
#define MDL_MAPPING_FLAGS ( \
MDL_MAPPED_TO_SYSTEM_VA | \
} DRIVER_OBJECT;
typedef struct _DRIVER_OBJECT *PDRIVER_OBJECT;
+typedef struct _DMA_ADAPTER {
+ USHORT Version;
+ USHORT Size;
+ struct _DMA_OPERATIONS* DmaOperations;
+} DMA_ADAPTER, *PDMA_ADAPTER;
+
typedef VOID
(DDKAPI *PPUT_DMA_ADAPTER)(
IN PDMA_ADAPTER DmaAdapter);
PBUILD_MDL_FROM_SCATTER_GATHER_LIST BuildMdlFromScatterGatherList;
} DMA_OPERATIONS, *PDMA_OPERATIONS;
-typedef struct _DMA_ADAPTER {
- USHORT Version;
- USHORT Size;
- PDMA_OPERATIONS DmaOperations;
-} DMA_ADAPTER;
-
-
typedef enum _ARBITER_REQUEST_SOURCE {
ArbiterRequestUndefined = -1,
ArbiterRequestLegacyReported,
DEBUG_MEMORY_REQUIREMENTS Memory;
} DEBUG_DEVICE_DESCRIPTOR, *PDEBUG_DEVICE_DESCRIPTOR;
+typedef enum _KD_OPTION {
+ KD_OPTION_SET_BLOCK_ENABLE,
+} KD_OPTION;
+
/* Function Type Defintions for Dispatch Functions */
+struct _DEVICE_CONTROL_CONTEXT;
typedef VOID
(DDKAPI *PDEVICE_CONTROL_COMPLETION)(
IN PDEVICE_CONTROL_COMPLETION CompletionRoutine);
typedef VOID
-(DDKFASTAPI *pHalExamineMBR)(
+(FASTCALL *pHalExamineMBR)(
IN PDEVICE_OBJECT DeviceObject,
IN ULONG SectorSize,
IN ULONG MBRTypeIdentifier,
OUT PVOID *Buffer);
typedef VOID
-(DDKFASTAPI *pHalIoAssignDriveLetters)(
+(FASTCALL *pHalIoAssignDriveLetters)(
IN struct _LOADER_PARAMETER_BLOCK *LoaderBlock,
IN PSTRING NtDeviceName,
OUT PUCHAR NtSystemPath,
OUT PSTRING NtSystemPathString);
typedef NTSTATUS
-(DDKFASTAPI *pHalIoReadPartitionTable)(
+(FASTCALL *pHalIoReadPartitionTable)(
IN PDEVICE_OBJECT DeviceObject,
IN ULONG SectorSize,
IN BOOLEAN ReturnRecognizedPartitions,
OUT struct _DRIVE_LAYOUT_INFORMATION **PartitionBuffer);
typedef NTSTATUS
-(DDKFASTAPI *pHalIoSetPartitionInformation)(
+(FASTCALL *pHalIoSetPartitionInformation)(
IN PDEVICE_OBJECT DeviceObject,
IN ULONG SectorSize,
IN ULONG PartitionNumber,
IN ULONG PartitionType);
typedef NTSTATUS
-(DDKFASTAPI *pHalIoWritePartitionTable)(
+(FASTCALL *pHalIoWritePartitionTable)(
IN PDEVICE_OBJECT DeviceObject,
IN ULONG SectorSize,
IN ULONG SectorsPerTrack,
IN struct _DRIVE_LAYOUT_INFORMATION *PartitionBuffer);
typedef PBUS_HANDLER
-(DDKFASTAPI *pHalHandlerForBus)(
+(FASTCALL *pHalHandlerForBus)(
IN INTERFACE_TYPE InterfaceType,
IN ULONG BusNumber);
typedef VOID
-(DDKFASTAPI *pHalReferenceBusHandler)(
+(FASTCALL *pHalReferenceBusHandler)(
IN PBUS_HANDLER BusHandler);
typedef NTSTATUS
} HAL_DISPATCH, *PHAL_DISPATCH;
#if defined(_NTDRIVER_) || defined(_NTDDK_) || defined(_NTHAL_)
-extern DECL_IMPORT PHAL_DISPATCH HalDispatchTable;
+extern DECLSPEC_IMPORT PHAL_DISPATCH HalDispatchTable;
#define HALDISPATCH ((PHAL_DISPATCH)&HalDispatchTable)
#else
-extern DECL_EXPORT HAL_DISPATCH HalDispatchTable;
+extern DECLSPEC_EXPORT HAL_DISPATCH HalDispatchTable;
#define HALDISPATCH (&HalDispatchTable)
#endif
#define HalQuerySystemInformation HALDISPATCH->HalQuerySystemInformation
#define HalSetSystemInformation HALDISPATCH->HalSetSystemInformation
#define HalQueryBusSlots HALDISPATCH->HalQueryBusSlots
-#define HalDeviceControl HALDISPATCH->HalDeviceControl
-#define HalIoAssignDriveLetters HALDISPATCH->HalIoAssignDriveLetters
-#define HalIoReadPartitionTable HALDISPATCH->HalIoReadPartitionTable
-#define HalIoSetPartitionInformation HALDISPATCH->HalIoSetPartitionInformation
-#define HalIoWritePartitionTable HALDISPATCH->HalIoWritePartitionTable
#define HalReferenceHandlerForBus HALDISPATCH->HalReferenceHandlerForBus
#define HalReferenceBusHandler HALDISPATCH->HalReferenceBusHandler
#define HalDereferenceBusHandler HALDISPATCH->HalDereferenceBusHandler
#define HalEndOfBoot HALDISPATCH->HalEndOfBoot
#define HalMirrorVerify HALDISPATCH->HalMirrorVerify
+#ifndef _NTOSKRNL_
+#define HalDeviceControl HALDISPATCH->HalDeviceControl
+#define HalIoAssignDriveLetters HALDISPATCH->HalIoAssignDriveLetters
+#define HalIoReadPartitionTable HALDISPATCH->HalIoReadPartitionTable
+#define HalIoSetPartitionInformation HALDISPATCH->HalIoSetPartitionInformation
+#define HalIoWritePartitionTable HALDISPATCH->HalIoWritePartitionTable
+#endif
+
typedef enum _FILE_INFORMATION_CLASS {
FileDirectoryInformation = 1,
FileFullDirectoryInformation,
LARGE_INTEGER ValidDataLength;
} FILE_VALID_DATA_LENGTH_INFORMATION, *PFILE_VALID_DATA_LENGTH_INFORMATION;
+typedef union _FILE_SEGMENT_ELEMENT {
+ PVOID64 Buffer;
+ ULONGLONG Alignment;
+}FILE_SEGMENT_ELEMENT, *PFILE_SEGMENT_ELEMENT;
+
typedef enum _FSINFOCLASS {
FileFsVolumeInformation = 1,
FileFsLabelInformation,
#define RESOURCE_HASH_TABLE_SIZE 64
-typedef struct _ERESOURCE {
- LIST_ENTRY SystemResourcesList;
- POWNER_ENTRY OwnerTable;
- SHORT ActiveCount;
- USHORT Flag;
- PKSEMAPHORE SharedWaiters;
- PKEVENT ExclusiveWaiters;
- OWNER_ENTRY OwnerThreads[2];
- ULONG ContentionCount;
- USHORT NumberOfSharedWaiters;
- USHORT NumberOfExclusiveWaiters;
- _ANONYMOUS_UNION union {
- PVOID Address;
- ULONG_PTR CreatorBackTraceIndex;
- } DUMMYUNIONNAME;
- KSPIN_LOCK SpinLock;
+typedef struct _ERESOURCE
+{
+ LIST_ENTRY SystemResourcesList;
+ POWNER_ENTRY OwnerTable;
+ SHORT ActiveCount;
+ USHORT Flag;
+ volatile PKSEMAPHORE SharedWaiters;
+ volatile PKEVENT ExclusiveWaiters;
+ OWNER_ENTRY OwnerEntry;
+ ULONG ActiveEntries;
+ ULONG ContentionCount;
+ ULONG NumberOfSharedWaiters;
+ ULONG NumberOfExclusiveWaiters;
+ union
+ {
+ PVOID Address;
+ ULONG_PTR CreatorBackTraceIndex;
+ };
+ KSPIN_LOCK SpinLock;
} ERESOURCE, *PERESOURCE;
typedef struct _DEVOBJ_EXTENSION
typedef BOOLEAN
(DDKAPI *PFAST_IO_UNLOCK_ALL_BY_KEY)(
IN struct _FILE_OBJECT *FileObject,
- PEPROCESS ProcessId,
+ PVOID ProcessId,
ULONG Key,
OUT PIO_STATUS_BLOCK IoStatus,
IN struct _DEVICE_OBJECT *DeviceObject);
#define FO_RANDOM_ACCESS 0x00100000
#define FO_FILE_OPEN_CANCELLED 0x00200000
#define FO_VOLUME_OPEN 0x00400000
-#define FO_FILE_OBJECT_HAS_EXTENSION 0x00800000
#define FO_REMOTE_ORIGIN 0x01000000
-typedef struct _FILE_OBJECT {
- CSHORT Type;
- CSHORT Size;
- PDEVICE_OBJECT DeviceObject;
- PVPB Vpb;
- PVOID FsContext;
- PVOID FsContext2;
- PSECTION_OBJECT_POINTERS SectionObjectPointer;
- PVOID PrivateCacheMap;
- NTSTATUS FinalStatus;
- struct _FILE_OBJECT *RelatedFileObject;
- BOOLEAN LockOperation;
- BOOLEAN DeletePending;
- BOOLEAN ReadAccess;
- BOOLEAN WriteAccess;
- BOOLEAN DeleteAccess;
- BOOLEAN SharedRead;
- BOOLEAN SharedWrite;
- BOOLEAN SharedDelete;
- ULONG Flags;
- UNICODE_STRING FileName;
- LARGE_INTEGER CurrentByteOffset;
- ULONG Waiters;
- ULONG Busy;
- PVOID LastLock;
- KEVENT Lock;
- KEVENT Event;
- PIO_COMPLETION_CONTEXT CompletionContext;
+typedef struct _FILE_OBJECT
+{
+ CSHORT Type;
+ CSHORT Size;
+ PDEVICE_OBJECT DeviceObject;
+ PVPB Vpb;
+ PVOID FsContext;
+ PVOID FsContext2;
+ PSECTION_OBJECT_POINTERS SectionObjectPointer;
+ PVOID PrivateCacheMap;
+ NTSTATUS FinalStatus;
+ struct _FILE_OBJECT *RelatedFileObject;
+ BOOLEAN LockOperation;
+ BOOLEAN DeletePending;
+ BOOLEAN ReadAccess;
+ BOOLEAN WriteAccess;
+ BOOLEAN DeleteAccess;
+ BOOLEAN SharedRead;
+ BOOLEAN SharedWrite;
+ BOOLEAN SharedDelete;
+ ULONG Flags;
+ UNICODE_STRING FileName;
+ LARGE_INTEGER CurrentByteOffset;
+ volatile ULONG Waiters;
+ volatile ULONG Busy;
+ PVOID LastLock;
+ KEVENT Lock;
+ KEVENT Event;
+ volatile PIO_COMPLETION_CONTEXT CompletionContext;
+ KSPIN_LOCK IrpListLock;
+ LIST_ENTRY IrpList;
+ volatile PVOID FileObjectExtension;
} FILE_OBJECT;
typedef struct _FILE_OBJECT *PFILE_OBJECT;
/* IO_STACK_LOCATION.Control */
#define SL_PENDING_RETURNED 0x01
+#define SL_ERROR_RETURNED 0x02
#define SL_INVOKE_ON_CANCEL 0x20
#define SL_INVOKE_ON_SUCCESS 0x40
#define SL_INVOKE_ON_ERROR 0x80
MaxKeySetInfoClass
} KEY_SET_INFORMATION_CLASS;
-#define REG_CREATED_NEW_KEY 0x00000001L
-#define REG_OPENED_EXISTING_KEY 0x00000002L
-
-
/* KEY_VALUE_Xxx.Type */
#define REG_NONE 0
#define PCI_SUBCLASS_VID_VGA_CTLR 0x00
#define PCI_SUBCLASS_VID_XGA_CTLR 0x01
-#define PCI_SUBLCASS_VID_3D_CTLR 0x02
+#define PCI_SUBCLASS_VID_3D_CTLR 0x02
#define PCI_SUBCLASS_VID_OTHER 0x80
/* PCI device subclasses for class 4 (multimedia device)*/
#define PCI_SUBCLASS_SB_SSA 0x02
#define PCI_SUBCLASS_SB_USB 0x03
#define PCI_SUBCLASS_SB_FIBRE_CHANNEL 0x04
+#define PCI_SUBCLASS_SB_SMBUS 0x05
#define PCI_MAX_DEVICES 32
#define PCI_MAX_FUNCTION 8
NonPagedPoolCacheAligned,
PagedPoolCacheAligned,
NonPagedPoolCacheAlignedMustS,
- MaxPoolType,
- NonPagedPoolSession = 32,
- PagedPoolSession,
- NonPagedPoolMustSucceedSession,
- DontUseThisTypeSession,
- NonPagedPoolCacheAlignedSession,
- PagedPoolCacheAlignedSession,
- NonPagedPoolCacheAlignedMustSSession
+ MaxPoolType,
+ NonPagedPoolSession = 32,
+ PagedPoolSession,
+ NonPagedPoolMustSucceedSession,
+ DontUseThisTypeSession,
+ NonPagedPoolCacheAlignedSession,
+ PagedPoolCacheAlignedSession,
+ NonPagedPoolCacheAlignedMustSSession
} POOL_TYPE;
#define POOL_COLD_ALLOCATION 256
HighPoolPrioritySpecialPoolUnderrun = 41
} EX_POOL_PRIORITY;
-/* PRIVILEGE_SET.Control */
-
-#define PRIVILEGE_SET_ALL_NECESSARY 1
-
-typedef struct _RTL_OSVERSIONINFOW {
- ULONG dwOSVersionInfoSize;
- ULONG dwMajorVersion;
- ULONG dwMinorVersion;
- ULONG dwBuildNumber;
- ULONG dwPlatformId;
- WCHAR szCSDVersion[128];
-} RTL_OSVERSIONINFOW, *PRTL_OSVERSIONINFOW;
-
-typedef struct _RTL_OSVERSIONINFOEXW {
- ULONG dwOSVersionInfoSize;
- ULONG dwMajorVersion;
- ULONG dwMinorVersion;
- ULONG dwBuildNumber;
- ULONG dwPlatformId;
- WCHAR szCSDVersion[128];
- USHORT wServicePackMajor;
- USHORT wServicePackMinor;
- USHORT wSuiteMask;
- UCHAR wProductType;
- UCHAR wReserved;
-} RTL_OSVERSIONINFOEXW, *PRTL_OSVERSIONINFOEXW;
-
-NTOSAPI
+typedef struct _OSVERSIONINFOA {
+ ULONG dwOSVersionInfoSize;
+ ULONG dwMajorVersion;
+ ULONG dwMinorVersion;
+ ULONG dwBuildNumber;
+ ULONG dwPlatformId;
+ CHAR szCSDVersion[128];
+} OSVERSIONINFOA, *POSVERSIONINFOA, *LPOSVERSIONINFOA;
+
+typedef struct _OSVERSIONINFOW {
+ ULONG dwOSVersionInfoSize;
+ ULONG dwMajorVersion;
+ ULONG dwMinorVersion;
+ ULONG dwBuildNumber;
+ ULONG dwPlatformId;
+ WCHAR szCSDVersion[128];
+} OSVERSIONINFOW, *POSVERSIONINFOW, *LPOSVERSIONINFOW, RTL_OSVERSIONINFOW, *PRTL_OSVERSIONINFOW;
+
+#ifdef UNICODE
+typedef OSVERSIONINFOW OSVERSIONINFO;
+typedef POSVERSIONINFOW POSVERSIONINFO;
+typedef LPOSVERSIONINFOW LPOSVERSIONINFO;
+#else
+typedef OSVERSIONINFOA OSVERSIONINFO;
+typedef POSVERSIONINFOA POSVERSIONINFO;
+typedef LPOSVERSIONINFOA LPOSVERSIONINFO;
+#endif // UNICODE
+
+typedef struct _OSVERSIONINFOEXA {
+ ULONG dwOSVersionInfoSize;
+ ULONG dwMajorVersion;
+ ULONG dwMinorVersion;
+ ULONG dwBuildNumber;
+ ULONG dwPlatformId;
+ CHAR szCSDVersion[128];
+ USHORT wServicePackMajor;
+ USHORT wServicePackMinor;
+ USHORT wSuiteMask;
+ UCHAR wProductType;
+ UCHAR wReserved;
+} OSVERSIONINFOEXA, *POSVERSIONINFOEXA, *LPOSVERSIONINFOEXA;
+
+typedef struct _OSVERSIONINFOEXW {
+ ULONG dwOSVersionInfoSize;
+ ULONG dwMajorVersion;
+ ULONG dwMinorVersion;
+ ULONG dwBuildNumber;
+ ULONG dwPlatformId;
+ WCHAR szCSDVersion[128];
+ USHORT wServicePackMajor;
+ USHORT wServicePackMinor;
+ USHORT wSuiteMask;
+ UCHAR wProductType;
+ UCHAR wReserved;
+} OSVERSIONINFOEXW, *POSVERSIONINFOEXW, *LPOSVERSIONINFOEXW, RTL_OSVERSIONINFOEXW, *PRTL_OSVERSIONINFOEXW;
+
+#ifdef UNICODE
+typedef OSVERSIONINFOEXW OSVERSIONINFOEX;
+typedef POSVERSIONINFOEXW POSVERSIONINFOEX;
+typedef LPOSVERSIONINFOEXW LPOSVERSIONINFOEX;
+#else
+typedef OSVERSIONINFOEXA OSVERSIONINFOEX;
+typedef POSVERSIONINFOEXA POSVERSIONINFOEX;
+typedef LPOSVERSIONINFOEXA LPOSVERSIONINFOEX;
+#endif // UNICODE
+
+NTSYSAPI
ULONGLONG
DDKAPI
VerSetConditionMask(
PULONG Buffer;
} RTL_BITMAP, *PRTL_BITMAP;
+#define RtlCheckBit(BMH,BP) (((((PLONG)(BMH)->Buffer)[(BP) / 32]) >> ((BP) % 32)) & 0x1)
+
typedef struct _RTL_BITMAP_RUN {
ULONG StartingIndex;
ULONG NumberOfBits;
} RTL_BITMAP_RUN, *PRTL_BITMAP_RUN;
+struct _RTL_RANGE;
+
typedef BOOLEAN
(NTAPI *PRTL_CONFLICT_RANGE_CALLBACK) (
PVOID Context,
typedef struct _RTL_QUERY_REGISTRY_TABLE {
PRTL_QUERY_REGISTRY_ROUTINE QueryRoutine;
ULONG Flags;
- PWSTR Name;
+ PCWSTR Name;
PVOID EntryContext;
ULONG DefaultType;
PVOID DefaultData;
FAST_MUTEX Obsoleted;
} PAGED_LOOKASIDE_LIST, *PPAGED_LOOKASIDE_LIST;
-typedef struct _CALLBACK_OBJECT *PCALLBACK_OBJECT;
-
typedef VOID
(DDKAPI *PCALLBACK_FUNCTION)(
IN PVOID CallbackContext,
typedef struct _IO_REMOVE_LOCK_COMMON_BLOCK {
BOOLEAN Removed;
BOOLEAN Reserved[3];
- LONG IoCount;
+ volatile LONG IoCount;
KEVENT RemoveEvent;
} IO_REMOVE_LOCK_COMMON_BLOCK;
LONG AllocateTag;
LIST_ENTRY LockList;
KSPIN_LOCK Spin;
- LONG LowMemoryCount;
+ volatile LONG LowMemoryCount;
ULONG Reserved1[4];
PVOID Reserved2;
PIO_REMOVE_LOCK_TRACKING_BLOCK Blocks;
typedef struct _IO_WORKITEM *PIO_WORKITEM;
typedef VOID
-(DDKAPI *PIO_WORKITEM_ROUTINE)(
+(DDKAPI IO_WORKITEM_ROUTINE)(
IN PDEVICE_OBJECT DeviceObject,
IN PVOID Context);
+typedef IO_WORKITEM_ROUTINE *PIO_WORKITEM_ROUTINE;
typedef struct _SHARE_ACCESS {
ULONG OpenCount;
SystemMemory,
DockingInformation,
RealModeIrqRoutingTable,
+ RealModePCIEnumeration,
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,
typedef struct _WORK_QUEUE_ITEM {
LIST_ENTRY List;
PWORKER_THREAD_ROUTINE WorkerRoutine;
- PVOID Parameter;
+ volatile PVOID Parameter;
} WORK_QUEUE_ITEM, *PWORK_QUEUE_ITEM;
typedef enum _KBUGCHECK_CALLBACK_REASON {
KbCallbackDumpIo,
} KBUGCHECK_CALLBACK_REASON;
+struct _KBUGCHECK_REASON_CALLBACK_RECORD;
+
typedef VOID
(DDKAPI *PKBUGCHECK_REASON_CALLBACK_ROUTINE)(
IN KBUGCHECK_CALLBACK_REASON Reason,
UCHAR State;
} KBUGCHECK_CALLBACK_RECORD, *PKBUGCHECK_CALLBACK_RECORD;
+typedef BOOLEAN
+(DDKAPI *PNMI_CALLBACK)(
+ IN PVOID Context,
+ IN BOOLEAN Handled);
+
/*
* VOID
* KeInitializeCallbackRecord(
IoModifyAccess
} LOCK_OPERATION;
+#define FLUSH_MULTIPLE_MAXIMUM 32
+
typedef enum _MM_SYSTEM_SIZE {
MmSmallSystem,
MmMediumSystem,
IN HANDLE ProcessId,
IN PIMAGE_INFO ImageInfo);
+typedef struct _NT_TIB {
+ struct _EXCEPTION_REGISTRATION_RECORD *ExceptionList;
+ PVOID StackBase;
+ PVOID StackLimit;
+ PVOID SubSystemTib;
+ _ANONYMOUS_UNION union {
+ PVOID FiberData;
+ ULONG Version;
+ } DUMMYUNIONNAME;
+ PVOID ArbitraryUserPointer;
+ struct _NT_TIB *Self;
+} NT_TIB, *PNT_TIB;
+
typedef enum _PROCESSINFOCLASS {
ProcessBasicInformation,
ProcessQuotaLimits,
typedef struct _PROCESS_BASIC_INFORMATION
{
NTSTATUS ExitStatus;
- PPEB PebBaseAddress;
+ struct _PEB *PebBaseAddress;
ULONG_PTR AffinityMask;
KPRIORITY BasePriority;
ULONG_PTR UniqueProcessId;
ULONG SessionId;
} PROCESS_SESSION_INFORMATION, *PPROCESS_SESSION_INFORMATION;
-#define ES_SYSTEM_REQUIRED 0x00000001
-#define ES_DISPLAY_REQUIRED 0x00000002
-#define ES_USER_PRESENT 0x00000004
-#define ES_CONTINUOUS 0x80000000
-
-typedef ULONG EXECUTION_STATE;
-
typedef VOID
(DDKAPI *PREQUEST_POWER_COMPLETE)(
IN PDEVICE_OBJECT DeviceObject,
*/
typedef enum _PARTITION_STYLE {
PARTITION_STYLE_MBR,
- PARTITION_STYLE_GPT
+ PARTITION_STYLE_GPT,
+ PARTITION_STYLE_RAW
} PARTITION_STYLE;
typedef struct _CREATE_DISK_MBR {
} DISK_SIGNATURE, *PDISK_SIGNATURE;
typedef VOID
-(DDKFASTAPI*PTIME_UPDATE_NOTIFY_ROUTINE)(
+(FASTCALL*PTIME_UPDATE_NOTIFY_ROUTINE)(
IN HANDLE ThreadId,
IN KPROCESSOR_MODE Mode);
/*
** Architecture specific structures
*/
+#define PCR_MINOR_VERSION 1
+#define PCR_MAJOR_VERSION 1
#ifdef _X86_
+#define SIZE_OF_80387_REGISTERS 80
+#define CONTEXT_i386 0x10000
+#define CONTEXT_i486 0x10000
+#define CONTEXT_CONTROL (CONTEXT_i386|0x00000001L)
+#define CONTEXT_INTEGER (CONTEXT_i386|0x00000002L)
+#define CONTEXT_SEGMENTS (CONTEXT_i386|0x00000004L)
+#define CONTEXT_FLOATING_POINT (CONTEXT_i386|0x00000008L)
+#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;
+ ULONG StatusWord;
+ ULONG TagWord;
+ ULONG ErrorOffset;
+ ULONG ErrorSelector;
+ ULONG DataOffset;
+ ULONG DataSelector;
+ UCHAR RegisterArea[SIZE_OF_80387_REGISTERS];
+ ULONG Cr0NpxState;
+} FLOATING_SAVE_AREA, *PFLOATING_SAVE_AREA;
+
+typedef struct _CONTEXT {
+ ULONG ContextFlags;
+ ULONG Dr0;
+ ULONG Dr1;
+ ULONG Dr2;
+ ULONG Dr3;
+ ULONG Dr6;
+ ULONG Dr7;
+ FLOATING_SAVE_AREA FloatSave;
+ ULONG SegGs;
+ ULONG SegFs;
+ ULONG SegEs;
+ ULONG SegDs;
+ ULONG Edi;
+ ULONG Esi;
+ ULONG Ebx;
+ ULONG Edx;
+ ULONG Ecx;
+ ULONG Eax;
+ ULONG Ebp;
+ ULONG Eip;
+ ULONG SegCs;
+ ULONG EFlags;
+ ULONG Esp;
+ ULONG SegSs;
+ 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
PVOID SubSystemTib; /* 0C */
_ANONYMOUS_UNION union {
PVOID FiberData; /* 10 */
- DWORD Version; /* 10 */
+ ULONG Version; /* 10 */
} DUMMYUNIONNAME;
PVOID ArbitraryUserPointer; /* 14 */
struct _KPCR_TIB *Self; /* 18 */
} KPCR_TIB, *PKPCR_TIB; /* 1C */
-#define PCR_MINOR_VERSION 1
-#define PCR_MAJOR_VERSION 1
-
typedef struct _KPCR {
KPCR_TIB Tib; /* 00 */
struct _KPCR *Self; /* 1C */
ULONG StallScaleFactor; /* 4C */
UCHAR SpareUnused; /* 50 */
UCHAR Number; /* 51 */
+ UCHAR Spare0;
+ UCHAR SecondLevelCacheAssociativity;
+ ULONG VdmAlert;
+ ULONG KernelReserved[14]; // For use by the kernel
+ ULONG SecondLevelCacheSize;
+ ULONG HalReserved[16]; // For use by Hal
} KPCR, *PKPCR; /* 54 */
+#define KeGetPcr() PCR
+
typedef struct _KFLOATING_SAVE {
ULONG ControlWord;
ULONG StatusWord;
ULONG Spare1;
} KFLOATING_SAVE, *PKFLOATING_SAVE;
-#define PAGE_SIZE 0x1000
-#define PAGE_SHIFT 12L
-
-extern NTOSAPI PVOID MmHighestUserAddress;
-extern NTOSAPI PVOID MmSystemRangeStart;
-extern NTOSAPI ULONG_PTR MmUserProbeAddress;
-
-#define MM_HIGHEST_USER_ADDRESS MmHighestUserAddress
-#define MM_SYSTEM_RANGE_START MmSystemRangeStart
-#define MM_USER_PROBE_ADDRESS MmUserProbeAddress
-#define MM_LOWEST_USER_ADDRESS (PVOID)0x10000
-#define MM_LOWEST_SYSTEM_ADDRESS (PVOID)0xC0C00000
-
-#define KI_USER_SHARED_DATA 0xffdf0000
-#define SharedUserData ((KUSER_SHARED_DATA * CONST) KI_USER_SHARED_DATA)
-
-#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,
- ResultPositive = RESULT_POSITIVE
-} INTERLOCKED_RESULT;
-
-NTHALAPI
-KIRQL
-DDKAPI
-KeGetCurrentIrql(
- VOID);
-
static __inline
ULONG
DDKAPI
#endif
}
-#if !defined(__INTERLOCKED_DECLARED)
-#define __INTERLOCKED_DECLARED
-
-NTOSAPI
-LONG
-DDKFASTAPI
-InterlockedIncrement(
- IN OUT LONG volatile *Addend);
+NTHALAPI
+KIRQL
+DDKAPI
+KeGetCurrentIrql(
+ VOID);
-NTOSAPI
-LONG
-DDKFASTAPI
-InterlockedDecrement(
- IN OUT LONG volatile *Addend);
+NTKERNELAPI
+PRKTHREAD
+NTAPI
+KeGetCurrentThread(
+ VOID);
-NTOSAPI
-LONG
-DDKFASTAPI
-InterlockedCompareExchange(
- IN OUT LONG volatile *Destination,
- IN LONG Exchange,
- IN LONG Comparand);
+#define KI_USER_SHARED_DATA 0xffdf0000
-NTOSAPI
-LONG
-DDKFASTAPI
-InterlockedExchange(
- IN OUT LONG volatile *Destination,
- IN LONG Value);
+#elif defined(__x86_64__)
-NTOSAPI
-LONG
-DDKFASTAPI
-InterlockedExchangeAdd(
- IN OUT LONG volatile *Addend,
- IN LONG Value);
+//
+// Used to contain PFNs and PFN counts
+//
+typedef ULONG PFN_COUNT;
+typedef ULONG64 PFN_NUMBER, *PPFN_NUMBER;
+typedef LONG64 SPFN_NUMBER, *PSPFN_NUMBER;
-/*
- * PVOID
- * InterlockedExchangePointer(
- * IN OUT PVOID VOLATILE *Target,
- * IN PVOID Value)
- */
-#define InterlockedExchangePointer(Target, Value) \
- ((PVOID) InterlockedExchange((PLONG) Target, (LONG) Value))
+#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
+#define PDI_SHIFT 21L
+#define PPI_SHIFT 30L
+#define PXI_SHIFT 39L
+#define PTE_PER_PAGE 512
+#define PDE_PER_PAGE 512
+#define PPE_PER_PAGE 512
+#define PXE_PER_PAGE 512
+#define PTI_MASK_AMD64 (PTE_PER_PAGE - 1)
+#define PDI_MASK_AMD64 (PDE_PER_PAGE - 1)
+#define PPI_MASK (PPE_PER_PAGE - 1)
+#define PXI_MASK (PXE_PER_PAGE - 1)
+
+#define PXE_BASE 0xFFFFF6FB7DBED000ULL
+#define PXE_SELFMAP 0xFFFFF6FB7DBEDF68ULL
+#define PPE_BASE 0xFFFFF6FB7DA00000ULL
+#define PDE_BASE 0xFFFFF6FB40000000ULL
+#define PTE_BASE 0xFFFFF68000000000ULL
+#define PXE_TOP 0xFFFFF6FB7DBEDFFFULL
+#define PPE_TOP 0xFFFFF6FB7DBFFFFFULL
+#define PDE_TOP 0xFFFFF6FB7FFFFFFFULL
+#define PTE_TOP 0xFFFFF6FFFFFFFFFFULL
+
+#define MM_LOWEST_USER_ADDRESS (PVOID)0x10000
+#define MM_LOWEST_SYSTEM_ADDRESS (PVOID)0xFFFF080000000000ULL
+#define KI_USER_SHARED_DATA 0xFFFFF78000000000ULL
+
+#define SharedUserData ((PKUSER_SHARED_DATA const)KI_USER_SHARED_DATA)
+#define SharedInterruptTime (&SharedUserData->InterruptTime)
+#define SharedSystemTime (&SharedUserData->SystemTime)
+#define SharedTickCount (&SharedUserData->TickCount)
+
+#define KeQueryInterruptTime() \
+ (*(volatile ULONG64*)SharedInterruptTime)
+#define KeQuerySystemTime(CurrentCount) \
+ *(ULONG64*)(CurrentCount) = *(volatile ULONG64*)SharedSystemTime
+#define KeQueryTickCount(CurrentCount) \
+ *(ULONG64*)(CurrentCount) = *(volatile ULONG64*)SharedTickCount
+
+typedef struct _KPCR
+{
+ union
+ {
+ NT_TIB NtTib;
+ struct
+ {
+ union _KGDTENTRY64 *GdtBase;
+ struct _KTSS64 *TssBase;
+ ULONG64 UserRsp;
+ struct _KPCR *Self;
+ struct _KPRCB *CurrentPrcb;
+ PKSPIN_LOCK_QUEUE LockArray;
+ PVOID Used_Self;
+ };
+ };
+ union _KIDTENTRY64 *IdtBase;
+ ULONG64 Unused[2];
+ KIRQL Irql;
+ UCHAR SecondLevelCacheAssociativity;
+ UCHAR ObsoleteNumber;
+ UCHAR Fill0;
+ ULONG Unused0[3];
+ USHORT MajorVersion;
+ USHORT MinorVersion;
+ ULONG StallScaleFactor;
+ PVOID Unused1[3];
+ ULONG KernelReserved[15];
+ ULONG SecondLevelCacheSize;
+ ULONG HalReserved[16];
+ ULONG Unused2;
+ PVOID KdVersionBlock;
+ PVOID Unused3;
+ ULONG PcrAlign1[24];
+} KPCR, *PKPCR;
-/*
- * PVOID
- * InterlockedCompareExchangePointer(
- * IN OUT PVOID *Destination,
- * IN PVOID Exchange,
- * IN PVOID Comparand)
- */
-#define InterlockedCompareExchangePointer(Destination, Exchange, Comparand) \
- ((PVOID) InterlockedCompareExchange((PLONG) Destination, (LONG) Exchange, (LONG) Comparand))
+typedef struct _KFLOATING_SAVE {
+ ULONG Dummy;
+} KFLOATING_SAVE, *PKFLOATING_SAVE;
-#define InterlockedExchangeAddSizeT(a, b) InterlockedExchangeAdd((LONG *)a, b)
-#define InterlockedIncrementSizeT(a) InterlockedIncrement((LONG *)a)
-#define InterlockedDecrementSizeT(a) InterlockedDecrement((LONG *)a)
+NTKERNELAPI
+PRKTHREAD
+NTAPI
+KeGetCurrentThread(
+ VOID);
-#endif /* !__INTERLOCKED_DECLARED */
-
-NTOSAPI
-VOID
-DDKFASTAPI
-KefAcquireSpinLockAtDpcLevel(
- IN PKSPIN_LOCK SpinLock);
-
-NTOSAPI
-VOID
-DDKFASTAPI
-KefReleaseSpinLockFromDpcLevel(
- IN PKSPIN_LOCK SpinLock);
-
-NTHALAPI
-KIRQL
-DDKFASTAPI
-KfAcquireSpinLock(
- IN PKSPIN_LOCK SpinLock);
-
-NTHALAPI
-VOID
-DDKFASTAPI
-KfReleaseSpinLock(
- IN PKSPIN_LOCK SpinLock,
- IN KIRQL NewIrql);
-
-#define KeAcquireSpinLockAtDpcLevel(SpinLock) KefAcquireSpinLockAtDpcLevel(SpinLock)
-#define KeReleaseSpinLockFromDpcLevel(SpinLock) KefReleaseSpinLockFromDpcLevel(SpinLock)
-#define KeAcquireSpinLock(a,b) *(b) = KfAcquireSpinLock(a)
-#define KeReleaseSpinLock(a,b) KfReleaseSpinLock(a,b)
-
-#define RtlCopyMemoryNonTemporal RtlCopyMemory
+FORCEINLINE
+PKPCR
+KeGetPcr(VOID)
+{
+ return (PKPCR)__readgsqword(FIELD_OFFSET(KPCR, Self));
+}
-#define KeGetDcacheFillSize() 1L
+FORCEINLINE
+ULONG
+KeGetCurrentProcessorNumber(VOID)
+{
+ return (ULONG)__readgsword(0x184);
+}
-#elif defined(_PPC_)
+#elif defined(__PowerPC__)
+//
+// 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 CLOCK1_LEVEL 28
#define CLOCK2_LEVEL 28
#define IPI_LEVEL 29
-#define SYNCH_LEVEL (IPI_LEVEL-1)
#define POWER_LEVEL 30
#define HIGH_LEVEL 31
-
-extern NTOSAPI PVOID MmHighestUserAddress;
-extern NTOSAPI PVOID MmSystemRangeStart;
-extern NTOSAPI ULONG_PTR MmUserProbeAddress;
-
-#define MM_HIGHEST_USER_ADDRESS MmHighestUserAddress
-#define MM_SYSTEM_RANGE_START MmSystemRangeStart
-#define MM_USER_PROBE_ADDRESS MmUserProbeAddress
-#define MM_LOWEST_USER_ADDRESS (PVOID)0x10000
-#define MM_LOWEST_SYSTEM_ADDRESS (PVOID)0xC0C00000
-
-#define KI_USER_SHARED_DATA 0xffdf0000
-#define SharedUserData ((KUSER_SHARED_DATA * CONST) KI_USER_SHARED_DATA)
-
-#define EFLAG_SIGN 0x8000
-#define EFLAG_ZERO 0x4000
-#define EFLAG_SELECT (EFLAG_SIGN | EFLAG_ZERO)
-#define RESULT_NEGATIVE ((EFLAG_SIGN & ~EFLAG_ZERO) & EFLAG_SELECT)
-#define RESULT_ZERO ((~EFLAG_SIGN & EFLAG_ZERO) & EFLAG_SELECT)
-#define RESULT_POSITIVE ((~EFLAG_SIGN & ~EFLAG_ZERO) & EFLAG_SELECT)
+typedef struct _KFLOATING_SAVE {
+ ULONG Dummy;
+} KFLOATING_SAVE, *PKFLOATING_SAVE;
typedef struct _KPCR_TIB {
PVOID ExceptionList; /* 00 */
PVOID SubSystemTib; /* 0C */
_ANONYMOUS_UNION union {
PVOID FiberData; /* 10 */
- DWORD Version; /* 10 */
+ ULONG Version; /* 10 */
} DUMMYUNIONNAME;
PVOID ArbitraryUserPointer; /* 14 */
struct _KPCR_TIB *Self; /* 18 */
UCHAR Number; /* 51 */
} KPCR, *PKPCR; /* 54 */
-NTHALAPI
-KIRQL
+#define KeGetPcr() PCR
+
+static __inline
+ULONG
DDKAPI
-KeGetCurrentIrql(
- VOID);
+KeGetCurrentProcessorNumber(VOID)
+{
+ ULONG Number;
+ __asm__ __volatile__ (
+ "lwz %0, %c1(12)\n"
+ : "=r" (Number)
+ : "i" (FIELD_OFFSET(KPCR, Number))
+ );
+ return Number;
+}
+
+#elif defined(_MIPS_)
+
+#error MIPS Headers are totally incorrect
+
+//
+// Used to contain PFNs and PFN counts
+//
+typedef ULONG PFN_COUNT;
+typedef ULONG PFN_NUMBER, *PPFN_NUMBER;
+typedef LONG SPFN_NUMBER, *PSPFN_NUMBER;
+
+#define PASSIVE_LEVEL 0
+#define APC_LEVEL 1
+#define DISPATCH_LEVEL 2
+#define PROFILE_LEVEL 27
+#define IPI_LEVEL 29
+#define HIGH_LEVEL 31
+
+typedef struct _KPCR {
+ struct _KPRCB *Prcb; /* 20 */
+ KIRQL Irql; /* 24 */
+ ULONG IRR; /* 28 */
+ ULONG IDR; /* 30 */
+} KPCR, *PKPCR;
+
+#define KeGetPcr() PCR
+
+typedef struct _KFLOATING_SAVE {
+} KFLOATING_SAVE, *PKFLOATING_SAVE;
+
+static __inline
+ULONG
+DDKAPI
+KeGetCurrentProcessorNumber(VOID)
+{
+ return 0;
+}
+
+#elif defined(_M_ARM)
+
+//
+// NT-ARM is not documented, need DDK-ARM
+//
+#include <armddk.h>
+
+#else
+#error Unknown architecture
+#endif
+
+#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 MM_HIGHEST_USER_ADDRESS MmHighestUserAddress
+#define MM_SYSTEM_RANGE_START MmSystemRangeStart
+#define MM_USER_PROBE_ADDRESS MmUserProbeAddress
+#define MM_LOWEST_USER_ADDRESS (PVOID)0x10000
+#define MM_LOWEST_SYSTEM_ADDRESS (PVOID)0xC0C00000
+
+#define MM_KSEG0_BASE MM_SYSTEM_RANGE_START
+#define MM_SYSTEM_SPACE_END 0xFFFFFFFF
+
+
+#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,
+ ResultPositive = RESULT_POSITIVE
+} INTERLOCKED_RESULT;
+
+typedef VOID
+(NTAPI *PciPin2Line)(
+ IN struct _BUS_HANDLER *BusHandler,
+ IN struct _BUS_HANDLER *RootHandler,
+ IN PCI_SLOT_NUMBER SlotNumber,
+ IN PPCI_COMMON_CONFIG PciData
+);
+
+typedef VOID
+(NTAPI *PciLine2Pin)(
+ IN struct _BUS_HANDLER *BusHandler,
+ IN struct _BUS_HANDLER *RootHandler,
+ IN PCI_SLOT_NUMBER SlotNumber,
+ IN PPCI_COMMON_CONFIG PciNewData,
+ IN PPCI_COMMON_CONFIG PciOldData
+);
+
+typedef VOID
+(NTAPI *PciReadWriteConfig)(
+ IN struct _BUS_HANDLER *BusHandler,
+ IN PCI_SLOT_NUMBER Slot,
+ IN PVOID Buffer,
+ IN ULONG Offset,
+ IN ULONG Length
+);
+
+#define PCI_DATA_TAG TAG('P', 'C', 'I', ' ')
+#define PCI_DATA_VERSION 1
+
+typedef struct _PCIBUSDATA
+{
+ ULONG Tag;
+ ULONG Version;
+ PciReadWriteConfig ReadConfig;
+ PciReadWriteConfig WriteConfig;
+ PciPin2Line Pin2Line;
+ PciLine2Pin Line2Pin;
+ PCI_SLOT_NUMBER ParentSlot;
+ PVOID Reserved[4];
+} PCIBUSDATA, *PPCIBUSDATA;
+
+
+/** INTERLOCKED FUNCTIONS *****************************************************/
#if !defined(__INTERLOCKED_DECLARED)
#define __INTERLOCKED_DECLARED
-NTOSAPI
+#if defined (_X86_)
+#if defined(NO_INTERLOCKED_INTRINSICS)
+NTKERNELAPI
LONG
-DDKFASTAPI
+FASTCALL
InterlockedIncrement(
- IN PLONG VOLATILE Addend);
+ IN OUT LONG volatile *Addend);
-NTOSAPI
+NTKERNELAPI
LONG
-DDKFASTAPI
+FASTCALL
InterlockedDecrement(
- IN PLONG VOLATILE Addend);
+ IN OUT LONG volatile *Addend);
-NTOSAPI
+NTKERNELAPI
LONG
-DDKFASTAPI
+FASTCALL
InterlockedCompareExchange(
- IN OUT PLONG VOLATILE Destination,
+ IN OUT LONG volatile *Destination,
IN LONG Exchange,
IN LONG Comparand);
-NTOSAPI
+NTKERNELAPI
LONG
-DDKFASTAPI
+FASTCALL
InterlockedExchange(
- IN OUT PLONG VOLATILE Target,
+ IN OUT LONG volatile *Destination,
IN LONG Value);
-NTOSAPI
+NTKERNELAPI
LONG
-DDKFASTAPI
+FASTCALL
InterlockedExchangeAdd(
- IN OUT PLONG VOLATILE Addend,
+ IN OUT LONG volatile *Addend,
IN LONG Value);
+#else // !defined(NO_INTERLOCKED_INTRINSICS)
+
+#define InterlockedExchange _InterlockedExchange
+#define InterlockedIncrement _InterlockedIncrement
+#define InterlockedDecrement _InterlockedDecrement
+#define InterlockedExchangeAdd _InterlockedExchangeAdd
+#define InterlockedCompareExchange _InterlockedCompareExchange
+#define InterlockedOr _InterlockedOr
+#define InterlockedAnd _InterlockedAnd
+#define InterlockedXor _InterlockedXor
+
+#endif // !defined(NO_INTERLOCKED_INTRINSICS)
+
+#endif // defined (_X86_)
+
+#if !defined (_WIN64)
/*
* PVOID
* InterlockedExchangePointer(
*/
#define InterlockedCompareExchangePointer(Destination, Exchange, Comparand) \
((PVOID) InterlockedCompareExchange((PLONG) Destination, (LONG) Exchange, (LONG) Comparand))
+
+#define InterlockedExchangeAddSizeT(a, b) InterlockedExchangeAdd((LONG *)a, b)
+#define InterlockedIncrementSizeT(a) InterlockedIncrement((LONG *)a)
#define InterlockedDecrementSizeT(a) InterlockedDecrement((LONG *)a)
+#endif // !defined (_WIN64)
+
+#if defined (_M_AMD64)
+
+#define InterlockedExchangeAddSizeT(a, b) InterlockedExchangeAdd64((LONGLONG *)a, (LONGLONG)b)
+#define InterlockedIncrementSizeT(a) InterlockedIncrement64((LONGLONG *)a)
+#define InterlockedDecrementSizeT(a) InterlockedDecrement64((LONGLONG *)a)
+#define InterlockedAnd _InterlockedAnd
+#define InterlockedOr _InterlockedOr
+#define InterlockedXor _InterlockedXor
+#define InterlockedIncrement _InterlockedIncrement
+#define InterlockedDecrement _InterlockedDecrement
+#define InterlockedAdd _InterlockedAdd
+#define InterlockedExchange _InterlockedExchange
+#define InterlockedExchangeAdd _InterlockedExchangeAdd
+#define InterlockedCompareExchange _InterlockedCompareExchange
+#define InterlockedAnd64 _InterlockedAnd64
+#define InterlockedOr64 _InterlockedOr64
+#define InterlockedXor64 _InterlockedXor64
+#define InterlockedIncrement64 _InterlockedIncrement64
+#define InterlockedDecrement64 _InterlockedDecrement64
+#define InterlockedAdd64 _InterlockedAdd64
+#define InterlockedExchange64 _InterlockedExchange64
+#define InterlockedExchangeAdd64 _InterlockedExchangeAdd64
+#define InterlockedCompareExchange64 _InterlockedCompareExchange64
+#define InterlockedCompareExchangePointer _InterlockedCompareExchangePointer
+#define InterlockedExchangePointer _InterlockedExchangePointer
+
+#define ExInterlockedPopEntrySList(Head, Lock) ExpInterlockedPopEntrySList(Head)
+#define ExInterlockedPushEntrySList(Head, Entry, Lock) ExpInterlockedPushEntrySList(Head, Entry)
+#define ExInterlockedFlushSList(Head) ExpInterlockedFlushSList(Head)
+
+#if !defined(_WINBASE_)
+#define InterlockedPopEntrySList(Head) ExpInterlockedPopEntrySList(Head)
+#define InterlockedPushEntrySList(Head, Entry) ExpInterlockedPushEntrySList(Head, Entry)
+#define InterlockedFlushSList(Head) ExpInterlockedFlushSList(Head)
+#define QueryDepthSList(Head) ExQueryDepthSList(Head)
+#endif // !defined(_WINBASE_)
+
+#endif // _M_AMD64
+
#endif /* !__INTERLOCKED_DECLARED */
-NTOSAPI
-VOID
-DDKFASTAPI
-KefAcquireSpinLockAtDpcLevel(
- IN PKSPIN_LOCK SpinLock);
-NTOSAPI
+/** SPINLOCK FUNCTIONS ********************************************************/
+
+NTKERNELAPI
+BOOLEAN
+FASTCALL
+KeTryToAcquireSpinLockAtDpcLevel(
+ IN OUT PKSPIN_LOCK SpinLock
+);
+
+#if defined (_X86_)
+
+NTKERNELAPI
VOID
-DDKFASTAPI
-KefReleaseSpinLockFromDpcLevel(
+NTAPI
+KeInitializeSpinLock(
IN PKSPIN_LOCK SpinLock);
NTHALAPI
KIRQL
-DDKFASTAPI
+FASTCALL
KfAcquireSpinLock(
IN PKSPIN_LOCK SpinLock);
NTHALAPI
VOID
-DDKFASTAPI
+FASTCALL
KfReleaseSpinLock(
IN PKSPIN_LOCK SpinLock,
IN KIRQL NewIrql);
+NTKERNELAPI
+VOID
+FASTCALL
+KefAcquireSpinLockAtDpcLevel(
+ IN PKSPIN_LOCK SpinLock);
+
+NTKERNELAPI
+VOID
+FASTCALL
+KefReleaseSpinLockFromDpcLevel(
+ IN PKSPIN_LOCK SpinLock);
+
#define KeAcquireSpinLockAtDpcLevel(SpinLock) KefAcquireSpinLockAtDpcLevel(SpinLock)
#define KeReleaseSpinLockFromDpcLevel(SpinLock) KefReleaseSpinLockFromDpcLevel(SpinLock)
#define KeAcquireSpinLock(a,b) *(b) = KfAcquireSpinLock(a)
#define KeReleaseSpinLock(a,b) KfReleaseSpinLock(a,b)
-#define RtlCopyMemoryNonTemporal RtlCopyMemory
+#else // !defined (_X86_)
-#define KeGetDcacheFillSize() 1L
+FORCEINLINE
+VOID
+NTAPI
+KeInitializeSpinLock(
+ PKSPIN_LOCK SpinLock)
+{
+ *SpinLock = 0;
+}
-typedef enum _INTERLOCKED_RESULT {
- ResultNegative = -1,
- ResultZero = 0,
- ResultPositive = 1
-} INTERLOCKED_RESULT;
+NTKERNELAPI
+VOID
+KeReleaseSpinLock(
+ IN PKSPIN_LOCK SpinLock,
+ IN KIRQL NewIrql);
-typedef struct _KFLOATING_SAVE {
- ULONG Fr[32];
-} KFLOATING_SAVE, *PKFLOATING_SAVE;
+NTKERNELAPI
+VOID
+KeAcquireSpinLockAtDpcLevel(
+ IN PKSPIN_LOCK SpinLock);
-static __inline
-ULONG
-DDKAPI
-KeGetCurrentProcessorNumber(VOID)
-{
- return 0; // XXX arty fixme
-}
+NTKERNELAPI
+VOID
+KeReleaseSpinLockFromDpcLevel(
+ IN PKSPIN_LOCK SpinLock);
+
+NTKERNELAPI
+KIRQL
+KeAcquireSpinLockRaiseToDpc(
+ IN PKSPIN_LOCK SpinLock);
+
+#define KeAcquireSpinLock(SpinLock, OldIrql) \
+ *(OldIrql) = KeAcquireSpinLockRaiseToDpc(SpinLock)
+
+#endif // !defined (_X86_)
+
+#define RtlCopyMemoryNonTemporal RtlCopyMemory
+
+#define KeGetDcacheFillSize() 1L
-#define PAGE_SIZE 0x1000
-#define PAGE_SHIFT 12L
-#endif /* _X86_ */
/*
** Utillity functions
*/
#define ARGUMENT_PRESENT(ArgumentPointer) \
- ((BOOLEAN) ((PVOID)ArgumentPointer != (PVOID)NULL))
+ ((CHAR*)((ULONG_PTR)(ArgumentPointer)) != (CHAR*)NULL)
/*
* ULONG
#define BYTES_TO_PAGES(Size) \
((ULONG) ((ULONG_PTR) (Size) >> PAGE_SHIFT) + (((ULONG) (Size) & (PAGE_SIZE - 1)) != 0))
-/*
- * PCHAR
- * CONTAINING_RECORD(
- * IN PCHAR Address,
- * IN TYPE Type,
- * IN PCHAR Field);
- */
-#ifndef CONTAINING_RECORD
-#define CONTAINING_RECORD(address, type, field) \
- ((type *)(((ULONG_PTR)address) - (ULONG_PTR)(&(((type *)0)->field))))
-#endif
-
-/* LONG
- * FIELD_OFFSET(
- * IN TYPE Type,
- * IN PCHAR Field);
- */
-#ifndef FIELD_OFFSET
-#define FIELD_OFFSET(Type, Field) \
- ((LONG) (&(((Type *) 0)->Field)))
-#endif
-
/*
* PVOID
* PAGE_ALIGN(
return Entry;
}
-#if !defined(_WINBASE_H) || _WIN32_WINNT < 0x0501
+#if !defined(_WINBASE_) || _WIN32_WINNT < 0x0501
-NTOSAPI
+NTKERNELAPI
PSLIST_ENTRY
-DDKFASTAPI
+FASTCALL
InterlockedPopEntrySList(
IN PSLIST_HEADER ListHead);
-NTOSAPI
+NTKERNELAPI
PSLIST_ENTRY
-DDKFASTAPI
+FASTCALL
InterlockedPushEntrySList(
IN PSLIST_HEADER ListHead,
IN PSLIST_ENTRY ListEntry);
#define InterlockedFlushSList(ListHead) ExInterlockedFlushSList(ListHead)
-NTOSAPI
+NTSYSAPI
ULONG
-DDKAPI
+NTAPI
RtlxAnsiStringToUnicodeSize(
IN PCANSI_STRING AnsiString);
((STRING)->Length + sizeof(ANSI_NULL)) * sizeof(WCHAR) \
)
-NTOSAPI
+NTSYSAPI
NTSTATUS
-DDKAPI
+NTAPI
RtlAnsiStringToUnicodeString(
IN OUT PUNICODE_STRING DestinationString,
IN PANSI_STRING SourceString,
IN BOOLEAN AllocateDestinationString);
-NTOSAPI
+NTSYSAPI
NTSTATUS
-DDKAPI
+NTAPI
RtlAppendUnicodeStringToString(
IN OUT PUNICODE_STRING Destination,
IN PCUNICODE_STRING Source);
-NTOSAPI
+NTSYSAPI
NTSTATUS
-DDKAPI
+NTAPI
RtlAppendUnicodeToString(
IN OUT PUNICODE_STRING Destination,
IN PCWSTR Source);
-NTOSAPI
+NTSYSAPI
BOOLEAN
-DDKAPI
+NTAPI
RtlAreBitsClear(
IN PRTL_BITMAP BitMapHeader,
IN ULONG StartingIndex,
IN ULONG Length);
-NTOSAPI
+NTSYSAPI
BOOLEAN
-DDKAPI
+NTAPI
RtlAreBitsSet(
IN PRTL_BITMAP BitMapHeader,
IN ULONG StartingIndex,
IN ULONG Length);
-NTOSAPI
+NTSYSAPI
NTSTATUS
-DDKAPI
+NTAPI
RtlCharToInteger(
IN PCSZ String,
IN ULONG Base OPTIONAL,
IN OUT PULONG Value);
-NTOSAPI
+#if 0
+NTSYSAPI
ULONG
-DDKAPI
+NTAPI
RtlCheckBit(
IN PRTL_BITMAP BitMapHeader,
IN ULONG BitPosition);
+#endif
-NTOSAPI
+NTSYSAPI
NTSTATUS
-DDKAPI
+NTAPI
RtlCheckRegistryKey(
IN ULONG RelativeTo,
IN PWSTR Path);
-NTOSAPI
+NTSYSAPI
VOID
-DDKAPI
+NTAPI
RtlClearAllBits(
IN PRTL_BITMAP BitMapHeader);
-NTOSAPI
+NTSYSAPI
VOID
-DDKAPI
+NTAPI
RtlClearBit(
PRTL_BITMAP BitMapHeader,
ULONG BitNumber);
-NTOSAPI
+NTSYSAPI
VOID
-DDKAPI
+NTAPI
RtlClearBits(
IN PRTL_BITMAP BitMapHeader,
IN ULONG StartingIndex,
IN ULONG NumberToClear);
-NTOSAPI
+NTSYSAPI
SIZE_T
-DDKAPI
+NTAPI
RtlCompareMemory(
IN CONST VOID *Source1,
IN CONST VOID *Source2,
IN SIZE_T Length);
-NTOSAPI
+NTSYSAPI
LONG
-DDKAPI
+NTAPI
RtlCompareString(
IN PSTRING String1,
IN PSTRING String2,
BOOLEAN CaseInSensitive);
-NTOSAPI
+NTSYSAPI
LONG
-DDKAPI
+NTAPI
RtlCompareUnicodeString(
IN PCUNICODE_STRING String1,
IN PCUNICODE_STRING String2,
return Result;
}
-NTOSAPI
+static __inline
+LARGE_INTEGER
+NTAPI_INLINE
+RtlConvertUlongToLargeInteger(
+ ULONG UnsignedInteger)
+{
+ LARGE_INTEGER ret;
+ ret.QuadPart = UnsignedInteger;
+ return ret;
+}
+
+NTSYSAPI
LUID
-DDKAPI
+NTAPI
RtlConvertLongToLuid(
IN LONG Long);
-NTOSAPI
-LARGE_INTEGER
-DDKAPI
-RtlConvertUlongToLargeInteger(
- IN ULONG UnsignedInteger);
-NTOSAPI
+NTSYSAPI
LUID
-DDKAPI
+NTAPI
RtlConvertUlongToLuid(
ULONG Ulong);
+#ifdef _M_AMD64
+
+static __inline
+LARGE_INTEGER
+NTAPI_INLINE
+RtlExtendedIntegerMultiply(
+ LARGE_INTEGER Multiplicand,
+ LONG Multiplier)
+{
+ LARGE_INTEGER ret;
+ ret.QuadPart = Multiplicand.QuadPart * Multiplier;
+ return ret;
+}
+
+static __inline
+LARGE_INTEGER
+NTAPI_INLINE
+RtlExtendedLargeIntegerDivide(
+ LARGE_INTEGER Dividend,
+ ULONG Divisor,
+ PULONG Remainder)
+{
+ LARGE_INTEGER ret;
+ ret.QuadPart = (ULONG64)Dividend.QuadPart / Divisor;
+ if (Remainder)
+ *Remainder = (ULONG)(Dividend.QuadPart % Divisor);
+ return ret;
+}
+
+#endif
+
/*
* VOID
* RtlCopyMemory(
#define RtlCopyBytes RtlCopyMemory
#endif
-NTOSAPI
+NTSYSAPI
VOID
-DDKAPI
+NTAPI
RtlCopyMemory32(
IN VOID UNALIGNED *Destination,
IN CONST VOID UNALIGNED *Source,
IN ULONG Length);
-NTOSAPI
+NTSYSAPI
VOID
-DDKAPI
+NTAPI
RtlCopyString(
IN OUT PSTRING DestinationString,
IN PSTRING SourceString OPTIONAL);
-NTOSAPI
+NTSYSAPI
VOID
-DDKAPI
+NTAPI
RtlCopyUnicodeString(
IN OUT PUNICODE_STRING DestinationString,
IN PCUNICODE_STRING SourceString);
-NTOSAPI
+NTSYSAPI
NTSTATUS
-DDKAPI
+NTAPI
RtlCreateRegistryKey(
IN ULONG RelativeTo,
IN PWSTR Path);
-NTOSAPI
+NTSYSAPI
NTSTATUS
-DDKAPI
+NTAPI
RtlCreateSecurityDescriptor(
IN OUT PSECURITY_DESCRIPTOR SecurityDescriptor,
IN ULONG Revision);
-NTOSAPI
+NTSYSAPI
NTSTATUS
-DDKAPI
+NTAPI
RtlDeleteRegistryValue(
IN ULONG RelativeTo,
IN PCWSTR Path,
*/
#define RtlEqualMemory(Destination, Source, Length) (!memcmp(Destination, Source, Length))
-NTOSAPI
+NTSYSAPI
BOOLEAN
-DDKAPI
+NTAPI
RtlEqualString(
IN PSTRING String1,
IN PSTRING String2,
IN BOOLEAN CaseInSensitive);
-NTOSAPI
+NTSYSAPI
BOOLEAN
-DDKAPI
+NTAPI
RtlEqualUnicodeString(
IN CONST UNICODE_STRING *String1,
IN CONST UNICODE_STRING *String2,
#define RtlFillBytes RtlFillMemory
#endif
-NTOSAPI
+NTSYSAPI
ULONG
-DDKAPI
+NTAPI
RtlFindClearBits(
IN PRTL_BITMAP BitMapHeader,
IN ULONG NumberToFind,
IN ULONG HintIndex);
-NTOSAPI
+NTSYSAPI
ULONG
-DDKAPI
+NTAPI
RtlFindClearBitsAndSet(
IN PRTL_BITMAP BitMapHeader,
IN ULONG NumberToFind,
IN ULONG HintIndex);
-NTOSAPI
+NTSYSAPI
ULONG
-DDKAPI
+NTAPI
RtlFindClearRuns(
IN PRTL_BITMAP BitMapHeader,
OUT PRTL_BITMAP_RUN RunArray,
IN ULONG SizeOfRunArray,
IN BOOLEAN LocateLongestRuns);
-NTOSAPI
+NTSYSAPI
ULONG
-DDKAPI
+NTAPI
RtlFindFirstRunClear(
IN PRTL_BITMAP BitMapHeader,
OUT PULONG StartingIndex);
-NTOSAPI
+NTSYSAPI
ULONG
-DDKAPI
+NTAPI
RtlFindLastBackwardRunClear(
IN PRTL_BITMAP BitMapHeader,
IN ULONG FromIndex,
OUT PULONG StartingRunIndex);
-NTOSAPI
+NTSYSAPI
CCHAR
-DDKAPI
+NTAPI
RtlFindLeastSignificantBit(
IN ULONGLONG Set);
-NTOSAPI
+NTSYSAPI
ULONG
-DDKAPI
+NTAPI
RtlFindLongestRunClear(
IN PRTL_BITMAP BitMapHeader,
OUT PULONG StartingIndex);
-NTOSAPI
+NTSYSAPI
CCHAR
-DDKAPI
+NTAPI
RtlFindMostSignificantBit(
IN ULONGLONG Set);
-NTOSAPI
+NTSYSAPI
ULONG
-DDKAPI
+NTAPI
RtlFindNextForwardRunClear(
IN PRTL_BITMAP BitMapHeader,
IN ULONG FromIndex,
OUT PULONG StartingRunIndex);
-NTOSAPI
+NTSYSAPI
ULONG
-DDKAPI
+NTAPI
RtlFindSetBits(
IN PRTL_BITMAP BitMapHeader,
IN ULONG NumberToFind,
IN ULONG HintIndex);
-NTOSAPI
+NTSYSAPI
ULONG
-DDKAPI
+NTAPI
RtlFindSetBitsAndClear(
IN PRTL_BITMAP BitMapHeader,
IN ULONG NumberToFind,
IN ULONG HintIndex);
-NTOSAPI
+NTSYSAPI
VOID
-DDKAPI
+NTAPI
RtlFreeAnsiString(
IN PANSI_STRING AnsiString);
-NTOSAPI
+NTSYSAPI
VOID
-DDKAPI
+NTAPI
RtlFreeUnicodeString(
IN PUNICODE_STRING UnicodeString);
-NTOSAPI
+NTSYSAPI
VOID
-DDKAPI
+NTAPI
RtlGetCallersAddress(
OUT PVOID *CallersAddress,
OUT PVOID *CallersCaller);
-NTOSAPI
+NTSYSAPI
NTSTATUS
-DDKAPI
+NTAPI
RtlGetVersion(
IN OUT PRTL_OSVERSIONINFOW lpVersionInformation);
-NTOSAPI
+NTSYSAPI
NTSTATUS
-DDKAPI
+NTAPI
RtlGUIDFromString(
IN PUNICODE_STRING GuidString,
OUT GUID *Guid);
-NTOSAPI
+NTSYSAPI
NTSTATUS
-DDKAPI
+NTAPI
RtlHashUnicodeString(
IN CONST UNICODE_STRING *String,
IN BOOLEAN CaseInSensitive,
IN ULONG HashAlgorithm,
OUT PULONG HashValue);
-NTOSAPI
+NTSYSAPI
VOID
-DDKAPI
+NTAPI
RtlInitAnsiString(
IN OUT PANSI_STRING DestinationString,
IN PCSZ SourceString);
-NTOSAPI
+NTSYSAPI
VOID
-DDKAPI
+NTAPI
RtlInitializeBitMap(
IN PRTL_BITMAP BitMapHeader,
IN PULONG BitMapBuffer,
IN ULONG SizeOfBitMap);
-NTOSAPI
+NTSYSAPI
VOID
-DDKAPI
+NTAPI
RtlInitString(
IN OUT PSTRING DestinationString,
IN PCSZ SourceString);
-NTOSAPI
+NTSYSAPI
VOID
-DDKAPI
+NTAPI
RtlInitUnicodeString(
IN OUT PUNICODE_STRING DestinationString,
IN PCWSTR SourceString);
-NTOSAPI
+NTSYSAPI
NTSTATUS
-DDKAPI
+NTAPI
RtlInt64ToUnicodeString(
IN ULONGLONG Value,
IN ULONG Base OPTIONAL,
IN OUT PUNICODE_STRING String);
-NTOSAPI
+NTSYSAPI
NTSTATUS
-DDKAPI
+NTAPI
RtlIntegerToUnicodeString(
IN ULONG Value,
IN ULONG Base OPTIONAL,
IN OUT PUNICODE_STRING String);
-NTOSAPI
+NTSYSAPI
NTSTATUS
-DDKAPI
+NTAPI
RtlIntPtrToUnicodeString(
PLONG Value,
ULONG Base OPTIONAL,
#define RtlIsZeroLuid(_L1) \
((BOOLEAN) ((!(_L1)->LowPart) && (!(_L1)->HighPart)))
-NTOSAPI
+NTSYSAPI
ULONG
-DDKAPI
+NTAPI
RtlLengthSecurityDescriptor(
IN PSECURITY_DESCRIPTOR SecurityDescriptor);
-NTOSAPI
+NTSYSAPI
VOID
-DDKAPI
+NTAPI
RtlMapGenericMask(
IN OUT PACCESS_MASK AccessMask,
IN PGENERIC_MAPPING GenericMapping);
*/
#define RtlMoveMemory memmove
-NTOSAPI
+NTSYSAPI
ULONG
-DDKAPI
+NTAPI
RtlNumberOfClearBits(
IN PRTL_BITMAP BitMapHeader);
-NTOSAPI
+NTSYSAPI
ULONG
-DDKAPI
+NTAPI
RtlNumberOfSetBits(
IN PRTL_BITMAP BitMapHeader);
-NTOSAPI
+NTSYSAPI
VOID
-DDKFASTAPI
+FASTCALL
RtlPrefetchMemoryNonTemporal(
IN PVOID Source,
IN SIZE_T Length);
-NTOSAPI
+NTSYSAPI
BOOLEAN
-DDKAPI
+NTAPI
RtlPrefixUnicodeString(
IN PCUNICODE_STRING String1,
IN PCUNICODE_STRING String2,
IN BOOLEAN CaseInSensitive);
-NTOSAPI
+NTSYSAPI
NTSTATUS
-DDKAPI
+NTAPI
RtlQueryRegistryValues(
IN ULONG RelativeTo,
IN PCWSTR Path,
*((PULONG)(DestAddress))=*((PULONG)(SrcAddress)); \
}
-NTOSAPI
+NTSYSAPI
VOID
-DDKAPI
+NTAPI
RtlRetrieveUshort(
IN OUT PUSHORT DestinationAddress,
IN PUSHORT SourceAddress);
-NTOSAPI
+NTSYSAPI
VOID
-DDKAPI
+NTAPI
RtlSetAllBits(
IN PRTL_BITMAP BitMapHeader);
-NTOSAPI
+NTSYSAPI
VOID
-DDKAPI
+NTAPI
RtlSetBit(
PRTL_BITMAP BitMapHeader,
ULONG BitNumber);
-NTOSAPI
+NTSYSAPI
VOID
-DDKAPI
+NTAPI
RtlSetBits(
IN PRTL_BITMAP BitMapHeader,
IN ULONG StartingIndex,
IN ULONG NumberToSet);
-NTOSAPI
+NTSYSAPI
NTSTATUS
-DDKAPI
+NTAPI
RtlSetDaclSecurityDescriptor(
IN OUT PSECURITY_DESCRIPTOR SecurityDescriptor,
IN BOOLEAN DaclPresent,
IN PACL Dacl OPTIONAL,
IN BOOLEAN DaclDefaulted OPTIONAL);
-NTOSAPI
+NTSYSAPI
VOID
-DDKAPI
+NTAPI
RtlStoreUlong(
IN PULONG Address,
IN ULONG Value);
-NTOSAPI
+NTSYSAPI
VOID
-DDKAPI
+NTAPI
RtlStoreUlonglong(
IN OUT PULONGLONG Address,
ULONGLONG Value);
-NTOSAPI
+NTSYSAPI
VOID
-DDKAPI
+NTAPI
RtlStoreUlongPtr(
IN OUT PULONG_PTR Address,
IN ULONG_PTR Value);
-NTOSAPI
+NTSYSAPI
VOID
-DDKAPI
+NTAPI
RtlStoreUshort(
IN PUSHORT Address,
IN USHORT Value);
-NTOSAPI
+NTSYSAPI
NTSTATUS
-DDKAPI
+NTAPI
RtlStringFromGUID(
IN REFGUID Guid,
OUT PUNICODE_STRING GuidString);
-NTOSAPI
+NTSYSAPI
BOOLEAN
-DDKAPI
+NTAPI
RtlTestBit(
IN PRTL_BITMAP BitMapHeader,
IN ULONG BitNumber);
-NTOSAPI
+NTSYSAPI
BOOLEAN
-DDKAPI
+NTAPI
RtlTimeFieldsToTime(
IN PTIME_FIELDS TimeFields,
IN PLARGE_INTEGER Time);
-NTOSAPI
+NTSYSAPI
VOID
-DDKAPI
+NTAPI
RtlTimeToTimeFields(
IN PLARGE_INTEGER Time,
IN PTIME_FIELDS TimeFields);
UnicodeString->Buffer = Buffer;
}
-NTOSAPI
+FORCEINLINE
+VOID
+RtlInitEmptyAnsiString(OUT PANSI_STRING AnsiString,
+ IN PCHAR Buffer,
+ IN USHORT BufferSize)
+{
+ AnsiString->Length = 0;
+ AnsiString->MaximumLength = BufferSize;
+ AnsiString->Buffer = Buffer;
+}
+
+NTSYSAPI
NTSTATUS
-DDKAPI
+NTAPI
RtlUnicodeStringToAnsiString(
IN OUT PANSI_STRING DestinationString,
IN PCUNICODE_STRING SourceString,
IN BOOLEAN AllocateDestinationString);
-NTOSAPI
+NTSYSAPI
NTSTATUS
-DDKAPI
+NTAPI
RtlUnicodeStringToInteger(
IN PCUNICODE_STRING String,
IN ULONG Base OPTIONAL,
OUT PULONG Value);
-NTOSAPI
+NTSYSAPI
WCHAR
-DDKAPI
+NTAPI
RtlUpcaseUnicodeChar(
IN WCHAR SourceCharacter);
-NTOSAPI
+NTSYSAPI
NTSTATUS
-DDKAPI
+NTAPI
RtlUpcaseUnicodeString(
IN OUT PUNICODE_STRING DestinationString OPTIONAL,
IN PCUNICODE_STRING SourceString,
IN BOOLEAN AllocateDestinationString);
-NTOSAPI
+NTSYSAPI
CHAR
-DDKAPI
+NTAPI
RtlUpperChar(
IN CHAR Character);
-NTOSAPI
+NTSYSAPI
VOID
-DDKAPI
+NTAPI
RtlUpperString(
IN OUT PSTRING DestinationString,
IN PSTRING SourceString);
RtlUshortByteSwap(
IN USHORT Source);
-NTOSAPI
+NTSYSAPI
BOOLEAN
-DDKAPI
+NTAPI
RtlValidRelativeSecurityDescriptor(
IN PSECURITY_DESCRIPTOR SecurityDescriptorInput,
IN ULONG SecurityDescriptorLength,
IN SECURITY_INFORMATION RequiredInformation);
-NTOSAPI
+NTSYSAPI
BOOLEAN
-DDKAPI
+NTAPI
RtlValidSecurityDescriptor(
IN PSECURITY_DESCRIPTOR SecurityDescriptor);
-NTOSAPI
+NTSYSAPI
NTSTATUS
-DDKAPI
+NTAPI
RtlVerifyVersionInfo(
IN PRTL_OSVERSIONINFOEXW VersionInfo,
IN ULONG TypeMask,
IN ULONGLONG ConditionMask);
-NTOSAPI
+NTSYSAPI
NTSTATUS
-DDKAPI
+NTAPI
RtlVolumeDeviceToDosName(
IN PVOID VolumeDeviceObject,
OUT PUNICODE_STRING DosName);
-NTOSAPI
+NTSYSAPI
ULONG
-DDKAPI
+NTAPI
RtlWalkFrameChain(
OUT PVOID *Callers,
IN ULONG Count,
IN ULONG Flags);
-NTOSAPI
+NTSYSAPI
NTSTATUS
-DDKAPI
+NTAPI
RtlWriteRegistryValue(
IN ULONG RelativeTo,
IN PCWSTR Path,
IN PVOID ValueData,
IN ULONG ValueLength);
-NTOSAPI
+NTSYSAPI
ULONG
-DDKAPI
+NTAPI
RtlxUnicodeStringToAnsiSize(
IN PCUNICODE_STRING UnicodeString);
#define RtlZeroBytes RtlZeroMemory
#endif
+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
);
+NTKERNELAPI
+BOOLEAN
+FASTCALL
+ExAcquireRundownProtectionEx(
+ IN OUT PEX_RUNDOWN_REF RunRef,
+ IN ULONG Count
+);
+
+NTKERNELAPI
+VOID
+FASTCALL
+ExReleaseRundownProtectionEx(
+ IN OUT PEX_RUNDOWN_REF RunRef,
+ IN ULONG Count
+);
+
/* Fast Mutex */
#define ExInitializeFastMutex(_FastMutex) \
{ \
KeInitializeEvent(&(_FastMutex)->Gate, SynchronizationEvent, FALSE); \
}
-NTOSAPI
+NTKERNELAPI
VOID
FASTCALL
ExAcquireFastMutexUnsafe(IN OUT PFAST_MUTEX FastMutex);
-NTOSAPI
+NTKERNELAPI
VOID
FASTCALL
ExReleaseFastMutexUnsafe(IN OUT PFAST_MUTEX FastMutex);
#if defined(_NTHAL_) && defined(_X86_)
-NTOSAPI
+NTKERNELAPI
VOID
FASTCALL
ExiAcquireFastMutex(IN OUT PFAST_MUTEX FastMutex);
-NTOSAPI
+NTKERNELAPI
VOID
FASTCALL
ExiReleaseFastMutex(IN OUT PFAST_MUTEX FastMutex);
-NTOSAPI
+NTKERNELAPI
BOOLEAN
FASTCALL
ExiTryToAcquireFastMutex(IN OUT PFAST_MUTEX FastMutex);
#else
-NTOSAPI
+NTKERNELAPI
VOID
FASTCALL
ExAcquireFastMutex(IN OUT PFAST_MUTEX FastMutex);
-NTOSAPI
+NTKERNELAPI
VOID
FASTCALL
ExReleaseFastMutex(IN OUT PFAST_MUTEX FastMutex);
-NTOSAPI
+NTKERNELAPI
BOOLEAN
FASTCALL
ExTryToAcquireFastMutex(IN OUT PFAST_MUTEX FastMutex);
/** Executive support routines **/
-NTOSAPI
+NTKERNELAPI
BOOLEAN
-DDKAPI
+NTAPI
ExAcquireResourceExclusiveLite(
IN PERESOURCE Resource,
IN BOOLEAN Wait);
-NTOSAPI
+NTKERNELAPI
BOOLEAN
-DDKAPI
+NTAPI
ExAcquireResourceSharedLite(
IN PERESOURCE Resource,
IN BOOLEAN Wait);
-NTOSAPI
+NTKERNELAPI
BOOLEAN
-DDKAPI
+NTAPI
ExAcquireSharedStarveExclusive(
IN PERESOURCE Resource,
IN BOOLEAN Wait);
-NTOSAPI
+NTKERNELAPI
BOOLEAN
-DDKAPI
+NTAPI
ExAcquireSharedWaitForExclusive(
IN PERESOURCE Resource,
IN BOOLEAN Wait);
return Entry;
}
-NTOSAPI
+NTKERNELAPI
PVOID
-DDKAPI
+NTAPI
ExAllocatePoolWithQuotaTag(
IN POOL_TYPE PoolType,
IN SIZE_T NumberOfBytes,
IN ULONG Tag);
-NTOSAPI
+NTKERNELAPI
PVOID
-DDKAPI
+NTAPI
ExAllocatePoolWithTag(
IN POOL_TYPE PoolType,
IN SIZE_T NumberOfBytes,
#else /* !POOL_TAGGING */
-NTOSAPI
+NTKERNELAPI
PVOID
-DDKAPI
+NTAPI
ExAllocatePool(
IN POOL_TYPE PoolType,
IN SIZE_T NumberOfBytes);
-NTOSAPI
+NTKERNELAPI
PVOID
-DDKAPI
+NTAPI
ExAllocatePoolWithQuota(
IN POOL_TYPE PoolType,
IN SIZE_T NumberOfBytes);
#endif /* POOL_TAGGING */
-NTOSAPI
+NTKERNELAPI
PVOID
-DDKAPI
+NTAPI
ExAllocatePoolWithTagPriority(
IN POOL_TYPE PoolType,
IN SIZE_T NumberOfBytes,
IN ULONG Tag,
IN EX_POOL_PRIORITY Priority);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
ExConvertExclusiveToSharedLite(
IN PERESOURCE Resource);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
ExCreateCallback(
OUT PCALLBACK_OBJECT *CallbackObject,
IN POBJECT_ATTRIBUTES ObjectAttributes,
IN BOOLEAN Create,
IN BOOLEAN AllowMultipleCallbacks);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
ExDeleteNPagedLookasideList(
IN PNPAGED_LOOKASIDE_LIST Lookaside);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
ExDeletePagedLookasideList(
IN PPAGED_LOOKASIDE_LIST Lookaside);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
ExDeleteResourceLite(
IN PERESOURCE Resource);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
ExFreePool(
IN PVOID P);
#define ExFreePool(P) ExFreePoolWithTag(P, 0)
#endif
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
ExFreePoolWithTag(
IN PVOID P,
IN ULONG Tag);
*/
#define ExGetCurrentResourceThread() ((ERESOURCE_THREAD) PsGetCurrentThread())
-NTOSAPI
+NTKERNELAPI
ULONG
-DDKAPI
+NTAPI
ExGetExclusiveWaiterCount(
IN PERESOURCE Resource);
-NTOSAPI
+NTKERNELAPI
KPROCESSOR_MODE
-DDKAPI
+NTAPI
ExGetPreviousMode(
VOID);
-NTOSAPI
+NTKERNELAPI
ULONG
-DDKAPI
+NTAPI
ExGetSharedWaiterCount(
IN PERESOURCE Resource);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
KeInitializeEvent(
IN PRKEVENT Event,
IN EVENT_TYPE Type,
IN BOOLEAN State);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
ExInitializeNPagedLookasideList(
IN PNPAGED_LOOKASIDE_LIST Lookaside,
IN PALLOCATE_FUNCTION Allocate OPTIONAL,
IN ULONG Tag,
IN USHORT Depth);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
ExInitializePagedLookasideList(
IN PPAGED_LOOKASIDE_LIST Lookaside,
IN PALLOCATE_FUNCTION Allocate OPTIONAL,
IN ULONG Tag,
IN USHORT Depth);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
ExInitializeResourceLite(
IN PERESOURCE Resource);
#define ExInitializeSListHead InitializeSListHead
-NTOSAPI
+NTKERNELAPI
LARGE_INTEGER
-DDKAPI
+NTAPI
ExInterlockedAddLargeInteger(
IN PLARGE_INTEGER Addend,
IN LARGE_INTEGER Increment,
IN PKSPIN_LOCK Lock);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKFASTAPI
+FASTCALL
ExInterlockedAddLargeStatistic(
IN PLARGE_INTEGER Addend,
IN ULONG Increment);
-NTOSAPI
+NTKERNELAPI
ULONG
-DDKAPI
+NTAPI
ExInterlockedAddUlong(
IN PULONG Addend,
IN ULONG Increment,
PKSPIN_LOCK Lock);
-NTOSAPI
+NTKERNELAPI
LONGLONG
-DDKFASTAPI
+FASTCALL
ExInterlockedCompareExchange64(
IN OUT PLONGLONG Destination,
IN PLONGLONG Exchange,
IN PLONGLONG Comparand,
IN PKSPIN_LOCK Lock);
-NTOSAPI
+NTKERNELAPI
LONGLONG
-DDKFASTAPI
+FASTCALL
ExfInterlockedCompareExchange64(
IN OUT LONGLONG volatile *Destination,
IN PLONGLONG Exchange,
IN PLONGLONG Comperand);
-NTOSAPI
+NTKERNELAPI
PSINGLE_LIST_ENTRY
-DDKFASTAPI
+FASTCALL
ExInterlockedFlushSList(
IN PSLIST_HEADER ListHead);
-NTOSAPI
+NTKERNELAPI
PLIST_ENTRY
-DDKAPI
+NTAPI
ExInterlockedInsertHeadList(
IN PLIST_ENTRY ListHead,
IN PLIST_ENTRY ListEntry,
IN PKSPIN_LOCK Lock);
-NTOSAPI
+NTKERNELAPI
PLIST_ENTRY
-DDKAPI
+NTAPI
ExInterlockedInsertTailList(
IN PLIST_ENTRY ListHead,
IN PLIST_ENTRY ListEntry,
IN PKSPIN_LOCK Lock);
-NTOSAPI
+NTKERNELAPI
PSINGLE_LIST_ENTRY
-DDKAPI
+NTAPI
ExInterlockedPopEntryList(
IN PSINGLE_LIST_ENTRY ListHead,
IN PKSPIN_LOCK Lock);
_Lock) \
InterlockedPopEntrySList(_ListHead)
-NTOSAPI
+NTKERNELAPI
PSINGLE_LIST_ENTRY
-DDKAPI
+NTAPI
ExInterlockedPushEntryList(
IN PSINGLE_LIST_ENTRY ListHead,
IN PSINGLE_LIST_ENTRY ListEntry,
_Lock) \
InterlockedPushEntrySList(_ListHead, _ListEntry)
-NTOSAPI
+NTKERNELAPI
PLIST_ENTRY
-DDKAPI
+NTAPI
ExInterlockedRemoveHeadList(
IN PLIST_ENTRY ListHead,
IN PKSPIN_LOCK Lock);
-NTOSAPI
+NTKERNELAPI
BOOLEAN
-DDKAPI
+NTAPI
ExIsProcessorFeaturePresent(
IN ULONG ProcessorFeature);
-NTOSAPI
+NTKERNELAPI
BOOLEAN
-DDKAPI
+NTAPI
ExIsResourceAcquiredExclusiveLite(
IN PERESOURCE Resource);
-NTOSAPI
+NTKERNELAPI
USHORT
-DDKAPI
+NTAPI
ExIsResourceAcquiredLite(
IN PERESOURCE Resource);
-NTOSAPI
+NTKERNELAPI
ULONG
-DDKAPI
+NTAPI
ExIsResourceAcquiredSharedLite(
IN PERESOURCE Resource);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
ExLocalTimeToSystemTime(
IN PLARGE_INTEGER LocalTime,
OUT PLARGE_INTEGER SystemTime);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
ExNotifyCallback(
IN PCALLBACK_OBJECT CallbackObject,
IN PVOID Argument1,
IN PVOID Argument2);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
+__declspec(noreturn)
ExRaiseAccessViolation(
VOID);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
+__declspec(noreturn)
ExRaiseDatatypeMisalignment(
VOID);
-NTOSAPI
+DECLSPEC_NORETURN
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
+__declspec(noreturn)
ExRaiseStatus(
IN NTSTATUS Status);
-NTOSAPI
+NTKERNELAPI
PVOID
-DDKAPI
+NTAPI
ExRegisterCallback(
IN PCALLBACK_OBJECT CallbackObject,
IN PCALLBACK_FUNCTION CallbackFunction,
IN PVOID CallbackContext);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
ExReinitializeResourceLite(
IN PERESOURCE Resource);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
ExReleaseResourceForThreadLite(
IN PERESOURCE Resource,
IN ERESOURCE_THREAD ResourceThreadId);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKFASTAPI
+FASTCALL
ExReleaseResourceLite(
IN PERESOURCE Resource);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
ExSetResourceOwnerPointer(
IN PERESOURCE Resource,
IN PVOID OwnerPointer);
-NTOSAPI
+NTKERNELAPI
ULONG
-DDKAPI
+NTAPI
ExSetTimerResolution(
IN ULONG DesiredTime,
IN BOOLEAN SetResolution);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
ExSystemTimeToLocalTime(
IN PLARGE_INTEGER SystemTime,
OUT PLARGE_INTEGER LocalTime);
-NTOSAPI
-BOOLEAN
-DDKAPI
-ExTryToAcquireResourceExclusiveLite(
- IN PERESOURCE Resource);
-
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
ExUnregisterCallback(
IN PVOID CbRegistration);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
ExUuidCreate(
OUT UUID *Uuid);
-NTOSAPI
+NTKERNELAPI
BOOLEAN
-DDKAPI
+NTAPI
ExVerifySuite(
IN SUITE_TYPE SuiteType);
#endif
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
ProbeForRead(
IN CONST VOID *Address,
- IN ULONG Length,
+ IN SIZE_T Length,
IN ULONG Alignment);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
ProbeForWrite(
IN PVOID Address,
- IN ULONG Length,
+ IN SIZE_T Length,
IN ULONG Alignment);
/** Configuration manager routines **/
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
CmRegisterCallback(
IN PEX_CALLBACK_FUNCTION Function,
IN PVOID Context,
IN OUT PLARGE_INTEGER Cookie);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
CmUnRegisterCallback(
IN LARGE_INTEGER Cookie);
/** Filesystem runtime library routines **/
-NTOSAPI
+NTKERNELAPI
BOOLEAN
-DDKAPI
+NTAPI
FsRtlIsTotalDeviceFailure(
IN NTSTATUS Status);
NTHALAPI
BOOLEAN
-DDKAPI
+NTAPI
HalMakeBeep(
IN ULONG Frequency);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKFASTAPI
+FASTCALL
HalExamineMBR(
IN PDEVICE_OBJECT DeviceObject,
IN ULONG SectorSize,
IN PVOID Context
);
+/** Io access routines **/
+
+#if !defined(_M_AMD64)
NTHALAPI
VOID
-DDKAPI
+NTAPI
READ_PORT_BUFFER_UCHAR(
IN PUCHAR Port,
IN PUCHAR Buffer,
NTHALAPI
VOID
-DDKAPI
+NTAPI
READ_PORT_BUFFER_ULONG(
IN PULONG Port,
IN PULONG Buffer,
NTHALAPI
VOID
-DDKAPI
+NTAPI
READ_PORT_BUFFER_USHORT(
IN PUSHORT Port,
IN PUSHORT Buffer,
NTHALAPI
UCHAR
-DDKAPI
+NTAPI
READ_PORT_UCHAR(
IN PUCHAR Port);
NTHALAPI
ULONG
-DDKAPI
+NTAPI
READ_PORT_ULONG(
IN PULONG Port);
NTHALAPI
USHORT
-DDKAPI
+NTAPI
READ_PORT_USHORT(
IN PUSHORT Port);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
READ_REGISTER_BUFFER_UCHAR(
IN PUCHAR Register,
IN PUCHAR Buffer,
IN ULONG Count);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
READ_REGISTER_BUFFER_ULONG(
IN PULONG Register,
IN PULONG Buffer,
IN ULONG Count);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
READ_REGISTER_BUFFER_USHORT(
IN PUSHORT Register,
IN PUSHORT Buffer,
IN ULONG Count);
-NTOSAPI
+NTKERNELAPI
UCHAR
-DDKAPI
+NTAPI
READ_REGISTER_UCHAR(
IN PUCHAR Register);
-NTOSAPI
+NTKERNELAPI
ULONG
-DDKAPI
+NTAPI
READ_REGISTER_ULONG(
IN PULONG Register);
-NTOSAPI
+NTKERNELAPI
USHORT
-DDKAPI
+NTAPI
READ_REGISTER_USHORT(
IN PUSHORT Register);
NTHALAPI
VOID
-DDKAPI
+NTAPI
WRITE_PORT_BUFFER_UCHAR(
IN PUCHAR Port,
IN PUCHAR Buffer,
NTHALAPI
VOID
-DDKAPI
+NTAPI
WRITE_PORT_BUFFER_ULONG(
IN PULONG Port,
IN PULONG Buffer,
NTHALAPI
VOID
-DDKAPI
+NTAPI
WRITE_PORT_BUFFER_USHORT(
IN PUSHORT Port,
IN PUSHORT Buffer,
NTHALAPI
VOID
-DDKAPI
+NTAPI
WRITE_PORT_UCHAR(
IN PUCHAR Port,
IN UCHAR Value);
NTHALAPI
VOID
-DDKAPI
+NTAPI
WRITE_PORT_ULONG(
IN PULONG Port,
IN ULONG Value);
NTHALAPI
VOID
-DDKAPI
+NTAPI
WRITE_PORT_USHORT(
IN PUSHORT Port,
IN USHORT Value);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
WRITE_REGISTER_BUFFER_UCHAR(
IN PUCHAR Register,
IN PUCHAR Buffer,
IN ULONG Count);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
WRITE_REGISTER_BUFFER_ULONG(
IN PULONG Register,
IN PULONG Buffer,
IN ULONG Count);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
WRITE_REGISTER_BUFFER_USHORT(
IN PUSHORT Register,
IN PUSHORT Buffer,
IN ULONG Count);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
WRITE_REGISTER_UCHAR(
IN PUCHAR Register,
IN UCHAR Value);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
WRITE_REGISTER_ULONG(
IN PULONG Register,
IN ULONG Value);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+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 **/
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
IoAcquireCancelSpinLock(
OUT PKIRQL Irql);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
IoAcquireRemoveLockEx(
IN PIO_REMOVE_LOCK RemoveLock,
IN OPTIONAL PVOID Tag OPTIONAL,
} \
}
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
IoAllocateController(
IN PCONTROLLER_OBJECT ControllerObject,
IN PDEVICE_OBJECT DeviceObject,
IN PDRIVER_CONTROL ExecutionRoutine,
IN PVOID Context);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
IoAllocateDriverObjectExtension(
IN PDRIVER_OBJECT DriverObject,
IN PVOID ClientIdentificationAddress,
IN ULONG DriverObjectExtensionSize,
OUT PVOID *DriverObjectExtension);
-NTOSAPI
+NTKERNELAPI
PVOID
-DDKAPI
+NTAPI
IoAllocateErrorLogEntry(
IN PVOID IoObject,
IN UCHAR EntrySize);
-NTOSAPI
+NTKERNELAPI
PIRP
-DDKAPI
+NTAPI
IoAllocateIrp(
IN CCHAR StackSize,
IN BOOLEAN ChargeQuota);
-NTOSAPI
+NTKERNELAPI
PMDL
-DDKAPI
+NTAPI
IoAllocateMdl(
IN PVOID VirtualAddress,
IN ULONG Length,
IN BOOLEAN ChargeQuota,
IN OUT PIRP Irp OPTIONAL);
-NTOSAPI
+NTKERNELAPI
PIO_WORKITEM
-DDKAPI
+NTAPI
IoAllocateWorkItem(
IN PDEVICE_OBJECT DeviceObject);
#define IoAssignArcName(_ArcName, _DeviceName) ( \
IoCreateSymbolicLink((_ArcName), (_DeviceName)))
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
IoAttachDevice(
IN PDEVICE_OBJECT SourceDevice,
IN PUNICODE_STRING TargetDevice,
OUT PDEVICE_OBJECT *AttachedDevice);
-NTOSAPI
+NTKERNELAPI
PDEVICE_OBJECT
-DDKAPI
+NTAPI
IoAttachDeviceToDeviceStack(
IN PDEVICE_OBJECT SourceDevice,
IN PDEVICE_OBJECT TargetDevice);
-NTOSAPI
+NTKERNELAPI
PIRP
-DDKAPI
+NTAPI
IoBuildAsynchronousFsdRequest(
IN ULONG MajorFunction,
IN PDEVICE_OBJECT DeviceObject,
IN PLARGE_INTEGER StartingOffset OPTIONAL,
IN PIO_STATUS_BLOCK IoStatusBlock OPTIONAL);
-NTOSAPI
+NTKERNELAPI
PIRP
-DDKAPI
+NTAPI
IoBuildDeviceIoControlRequest(
IN ULONG IoControlCode,
IN PDEVICE_OBJECT DeviceObject,
IN PKEVENT Event,
OUT PIO_STATUS_BLOCK IoStatusBlock);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
IoBuildPartialMdl(
IN PMDL SourceMdl,
IN OUT PMDL TargetMdl,
IN PVOID VirtualAddress,
IN ULONG Length);
-NTOSAPI
+NTKERNELAPI
PIRP
-DDKAPI
+NTAPI
IoBuildSynchronousFsdRequest(
IN ULONG MajorFunction,
IN PDEVICE_OBJECT DeviceObject,
IN PKEVENT Event,
OUT PIO_STATUS_BLOCK IoStatusBlock);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKFASTAPI
+FASTCALL
IofCallDriver(
IN PDEVICE_OBJECT DeviceObject,
IN OUT PIRP Irp);
*/
#define IoCallDriver IofCallDriver
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
IoCancelFileOpen(
IN PDEVICE_OBJECT DeviceObject,
IN PFILE_OBJECT FileObject);
-NTOSAPI
+NTKERNELAPI
BOOLEAN
-DDKAPI
+NTAPI
IoCancelIrp(
IN PIRP Irp);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
IoCheckShareAccess(
IN ACCESS_MASK DesiredAccess,
IN ULONG DesiredShareAccess,
IN OUT PSHARE_ACCESS ShareAccess,
IN BOOLEAN Update);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKFASTAPI
+FASTCALL
IofCompleteRequest(
IN PIRP Irp,
IN CCHAR PriorityBoost);
*/
#define IoCompleteRequest IofCompleteRequest
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
IoConnectInterrupt(
OUT PKINTERRUPT *InterruptObject,
IN PKSERVICE_ROUTINE ServiceRoutine,
_NextIrpSp->Control = 0; \
}
-NTOSAPI
+NTKERNELAPI
PCONTROLLER_OBJECT
-DDKAPI
+NTAPI
IoCreateController(
IN ULONG Size);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
IoCreateDevice(
IN PDRIVER_OBJECT DriverObject,
IN ULONG DeviceExtensionSize,
IN BOOLEAN Exclusive,
OUT PDEVICE_OBJECT *DeviceObject);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
IoCreateDisk(
IN PDEVICE_OBJECT DeviceObject,
IN PCREATE_DISK Disk);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
IoCreateFile(
OUT PHANDLE FileHandle,
IN ACCESS_MASK DesiredAccess,
IN PVOID ExtraCreateParameters OPTIONAL,
IN ULONG Options);
-NTOSAPI
+NTKERNELAPI
PKEVENT
-DDKAPI
+NTAPI
IoCreateNotificationEvent(
IN PUNICODE_STRING EventName,
OUT PHANDLE EventHandle);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
IoCreateSymbolicLink(
IN PUNICODE_STRING SymbolicLinkName,
IN PUNICODE_STRING DeviceName);
-NTOSAPI
+NTKERNELAPI
PKEVENT
-DDKAPI
+NTAPI
IoCreateSynchronizationEvent(
IN PUNICODE_STRING EventName,
OUT PHANDLE EventHandle);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
IoCreateUnprotectedSymbolicLink(
IN PUNICODE_STRING SymbolicLinkName,
IN PUNICODE_STRING DeviceName);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
IoCsqInitialize(
PIO_CSQ Csq,
IN PIO_CSQ_INSERT_IRP CsqInsertIrp,
IN PIO_CSQ_RELEASE_LOCK CsqReleaseLock,
IN PIO_CSQ_COMPLETE_CANCELED_IRP CsqCompleteCanceledIrp);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
IoCsqInsertIrp(
IN PIO_CSQ Csq,
IN PIRP Irp,
IN PIO_CSQ_IRP_CONTEXT Context);
-NTOSAPI
+NTKERNELAPI
PIRP
-DDKAPI
+NTAPI
IoCsqRemoveIrp(
IN PIO_CSQ Csq,
IN PIO_CSQ_IRP_CONTEXT Context);
-NTOSAPI
+NTKERNELAPI
PIRP
-DDKAPI
+NTAPI
IoCsqRemoveNextIrp(
IN PIO_CSQ Csq,
IN PVOID PeekContext);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
IoDeleteController(
IN PCONTROLLER_OBJECT ControllerObject);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
IoDeleteDevice(
IN PDEVICE_OBJECT DeviceObject);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
IoDeleteSymbolicLink(
IN PUNICODE_STRING SymbolicLinkName);
*/
#define IoDeassignArcName IoDeleteSymbolicLink
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
IoDetachDevice(
IN OUT PDEVICE_OBJECT TargetDevice);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
IoDisconnectInterrupt(
IN PKINTERRUPT InterruptObject);
-NTOSAPI
+NTKERNELAPI
BOOLEAN
-DDKAPI
+NTAPI
IoForwardIrpSynchronously(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp);
#define IoForwardAndCatchIrp IoForwardIrpSynchronously
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
IoFreeController(
IN PCONTROLLER_OBJECT ControllerObject);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
IoFreeErrorLogEntry(
PVOID ElEntry);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
IoFreeIrp(
IN PIRP Irp);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
IoFreeMdl(
IN PMDL Mdl);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
IoFreeWorkItem(
IN PIO_WORKITEM pIOWorkItem);
-NTOSAPI
+NTKERNELAPI
PDEVICE_OBJECT
-DDKAPI
+NTAPI
IoGetAttachedDevice(
IN PDEVICE_OBJECT DeviceObject);
-NTOSAPI
+NTKERNELAPI
PDEVICE_OBJECT
-DDKAPI
+NTAPI
IoGetAttachedDeviceReference(
IN PDEVICE_OBJECT DeviceObject);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
IoGetBootDiskInformation(
IN OUT PBOOTDISK_INFORMATION BootDiskInformation,
IN ULONG Size);
-NTOSAPI
+NTKERNELAPI
PCONFIGURATION_INFORMATION
-DDKAPI
+NTAPI
IoGetConfigurationInformation(
VOID);
-NTOSAPI
+NTKERNELAPI
PEPROCESS
-DDKAPI
+NTAPI
IoGetCurrentProcess(
VOID);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
IoGetDeviceInterfaceAlias(
IN PUNICODE_STRING SymbolicLinkName,
IN CONST GUID *AliasInterfaceClassGuid,
#define DEVICE_INTERFACE_INCLUDE_NONACTIVE 0x00000001
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
IoGetDeviceInterfaces(
IN CONST GUID *InterfaceClassGuid,
IN PDEVICE_OBJECT PhysicalDeviceObject OPTIONAL,
IN ULONG Flags,
OUT PWSTR *SymbolicLinkList);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
IoGetDeviceObjectPointer(
IN PUNICODE_STRING ObjectName,
IN ACCESS_MASK DesiredAccess,
OUT PFILE_OBJECT *FileObject,
OUT PDEVICE_OBJECT *DeviceObject);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
IoGetDeviceProperty(
IN PDEVICE_OBJECT DeviceObject,
IN DEVICE_REGISTRY_PROPERTY DeviceProperty,
OUT PVOID PropertyBuffer,
OUT PULONG ResultLength);
-NTOSAPI
+NTKERNELAPI
PDEVICE_OBJECT
-DDKAPI
+NTAPI
IoGetDeviceToVerify(
IN PETHREAD Thread);
-NTOSAPI
+NTKERNELAPI
PDMA_ADAPTER
-DDKAPI
+NTAPI
IoGetDmaAdapter(
IN PDEVICE_OBJECT PhysicalDeviceObject,
IN PDEVICE_DESCRIPTION DeviceDescription,
IN OUT PULONG NumberOfMapRegisters);
-NTOSAPI
+NTKERNELAPI
PVOID
-DDKAPI
+NTAPI
IoGetDriverObjectExtension(
IN PDRIVER_OBJECT DriverObject,
IN PVOID ClientIdentificationAddress);
-NTOSAPI
+NTKERNELAPI
PGENERIC_MAPPING
-DDKAPI
+NTAPI
IoGetFileObjectGenericMapping(
VOID);
#define IoGetFunctionCodeFromCtlCode(_ControlCode) \
(((_ControlCode) >> 2) & 0x00000FFF)
-NTOSAPI
+NTKERNELAPI
PVOID
-DDKAPI
+NTAPI
IoGetInitialStack(
VOID);
-NTOSAPI
+NTKERNELAPI
PDEVICE_OBJECT
-DDKAPI
+NTAPI
IoGetRelatedDeviceObject(
IN PFILE_OBJECT FileObject);
-NTOSAPI
-ULONG
-DDKAPI
-IoGetRemainingStackSize(
- VOID);
-
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
IoGetStackLimits(
OUT PULONG_PTR LowLimit,
OUT PULONG_PTR HighLimit);
-NTOSAPI
+FORCEINLINE
+ULONG_PTR
+IoGetRemainingStackSize(
+ VOID
+)
+{
+ ULONG_PTR End, Begin;
+ ULONG_PTR Result;
+
+ IoGetStackLimits(&Begin, &End);
+ Result = (ULONG_PTR)(&End) - Begin;
+ return Result;
+}
+
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
KeInitializeDpc(
IN PRKDPC Dpc,
IN PKDEFERRED_ROUTINE DeferredRoutine,
(PKDEFERRED_ROUTINE) (_DpcRoutine), \
_DeviceObject)
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
IoInitializeIrp(
IN OUT PIRP Irp,
IN USHORT PacketSize,
IN CCHAR StackSize);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
IoInitializeRemoveLockEx(
IN PIO_REMOVE_LOCK Lock,
IN ULONG AllocateTag,
IoInitializeRemoveLockEx(Lock, AllocateTag, MaxLockedMinutes, \
HighWatermark, sizeof(IO_REMOVE_LOCK))
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
IoInitializeTimer(
IN PDEVICE_OBJECT DeviceObject,
IN PIO_TIMER_ROUTINE TimerRoutine,
IN PVOID Context);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
IoInvalidateDeviceRelations(
IN PDEVICE_OBJECT DeviceObject,
IN DEVICE_RELATION_TYPE Type);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
IoInvalidateDeviceState(
IN PDEVICE_OBJECT PhysicalDeviceObject);
-NTOSAPI
+NTKERNELAPI
BOOLEAN
-DDKAPI
+NTAPI
IoIs32bitProcess(
IN PIRP Irp OPTIONAL);
* IN NTSTATUS Status);
*/
#define IoIsErrorUserInduced(Status) \
- ((BOOLEAN)(((Status) == STATUS_DEVICE_NOT_READY) || \
+ ((BOOLEAN)(((Status) == STATUS_DEVICE_NOT_READY) || \
((Status) == STATUS_IO_TIMEOUT) || \
((Status) == STATUS_MEDIA_WRITE_PROTECTED) || \
((Status) == STATUS_NO_MEDIA_IN_DEVICE) || \
((Status) == STATUS_UNRECOGNIZED_MEDIA) || \
((Status) == STATUS_WRONG_VOLUME)))
-NTOSAPI
+NTKERNELAPI
BOOLEAN
-DDKAPI
+NTAPI
IoIsWdmVersionAvailable(
IN UCHAR MajorVersion,
IN UCHAR MinorVersion);
-NTOSAPI
+NTKERNELAPI
PIRP
-DDKAPI
+NTAPI
IoMakeAssociatedIrp(
IN PIRP Irp,
IN CCHAR StackSize);
#define IoMarkIrpPending(_Irp) \
(IoGetCurrentIrpStackLocation(_Irp)->Control |= SL_PENDING_RETURNED)
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
IoOpenDeviceInterfaceRegistryKey(
IN PUNICODE_STRING SymbolicLinkName,
IN ACCESS_MASK DesiredAccess,
#define PLUGPLAY_REGKEY_DRIVER 2
#define PLUGPLAY_REGKEY_CURRENT_HWPROFILE 4
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
IoOpenDeviceRegistryKey(
IN PDEVICE_OBJECT DeviceObject,
IN ULONG DevInstKeyType,
IN ACCESS_MASK DesiredAccess,
OUT PHANDLE DevInstRegKey);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
IoQueryDeviceDescription(
IN PINTERFACE_TYPE BusType OPTIONAL,
IN PULONG BusNumber OPTIONAL,
IN PIO_QUERY_DEVICE_ROUTINE CalloutRoutine,
IN PVOID Context);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
IoQueueWorkItem(
IN PIO_WORKITEM pIOWorkItem,
IN PIO_WORKITEM_ROUTINE Routine,
IN WORK_QUEUE_TYPE QueueType,
IN PVOID Context);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
IoRaiseHardError(
IN PIRP Irp,
IN PVPB Vpb OPTIONAL,
IN PDEVICE_OBJECT RealDeviceObject);
-NTOSAPI
+NTKERNELAPI
BOOLEAN
-DDKAPI
+NTAPI
IoRaiseInformationalHardError(
IN NTSTATUS ErrorStatus,
IN PUNICODE_STRING String OPTIONAL,
IN PKTHREAD Thread OPTIONAL);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
IoReadDiskSignature(
IN PDEVICE_OBJECT DeviceObject,
IN ULONG BytesPerSector,
OUT PDISK_SIGNATURE Signature);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
IoReadPartitionTableEx(
IN PDEVICE_OBJECT DeviceObject,
IN struct _DRIVE_LAYOUT_INFORMATION_EX **PartitionBuffer);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
IoRegisterBootDriverReinitialization(
IN PDRIVER_OBJECT DriverObject,
IN PDRIVER_REINITIALIZE DriverReinitializationRoutine,
IN PVOID Context);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
IoRegisterBootDriverReinitialization(
IN PDRIVER_OBJECT DriverObject,
IN PDRIVER_REINITIALIZE DriverReinitializationRoutine,
IN PVOID Context);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
IoRegisterDeviceInterface(
IN PDEVICE_OBJECT PhysicalDeviceObject,
IN CONST GUID *InterfaceClassGuid,
IN PUNICODE_STRING ReferenceString OPTIONAL,
OUT PUNICODE_STRING SymbolicLinkName);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
IoRegisterDriverReinitialization(
IN PDRIVER_OBJECT DriverObject,
IN PDRIVER_REINITIALIZE DriverReinitializationRoutine,
IN PVOID Context);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
IoRegisterPlugPlayNotification(
IN IO_NOTIFICATION_EVENT_CATEGORY EventCategory,
IN ULONG EventCategoryFlags,
IN PVOID Context,
OUT PVOID *NotificationEntry);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
IoRegisterShutdownNotification(
IN PDEVICE_OBJECT DeviceObject);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
IoReleaseCancelSpinLock(
IN KIRQL Irql);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
IoReleaseRemoveLockAndWaitEx(
IN PIO_REMOVE_LOCK RemoveLock,
IN PVOID Tag,
IN ULONG RemlockSize);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
IoReleaseRemoveLockEx(
IN PIO_REMOVE_LOCK RemoveLock,
IN PVOID Tag,
_Tag) \
IoReleaseRemoveLockAndWaitEx(_RemoveLock, _Tag, sizeof(IO_REMOVE_LOCK))
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
IoRemoveShareAccess(
IN PFILE_OBJECT FileObject,
IN OUT PSHARE_ACCESS ShareAccess);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
IoReportDetectedDevice(
IN PDRIVER_OBJECT DriverObject,
IN INTERFACE_TYPE LegacyBusType,
IN BOOLEAN ResourceAssigned,
IN OUT PDEVICE_OBJECT *DeviceObject);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
IoReportResourceForDetection(
IN PDRIVER_OBJECT DriverObject,
IN PCM_RESOURCE_LIST DriverList OPTIONAL,
IN ULONG DeviceListSize OPTIONAL,
OUT PBOOLEAN ConflictDetected);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
IoReportResourceUsage(
IN PUNICODE_STRING DriverClassName OPTIONAL,
IN PDRIVER_OBJECT DriverObject,
IN BOOLEAN OverrideConflict,
OUT PBOOLEAN ConflictDetected);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
IoReportTargetDeviceChange(
IN PDEVICE_OBJECT PhysicalDeviceObject,
IN PVOID NotificationStructure);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
IoReportTargetDeviceChangeAsynchronous(
IN PDEVICE_OBJECT PhysicalDeviceObject,
IN PVOID NotificationStructure,
IN PDEVICE_CHANGE_COMPLETE_CALLBACK Callback OPTIONAL,
IN PVOID Context OPTIONAL);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
IoRequestDeviceEject(
IN PDEVICE_OBJECT PhysicalDeviceObject);
#define IoRequestDpc(DeviceObject, Irp, Context)( \
KeInsertQueueDpc(&(DeviceObject)->Dpc, (Irp), (Context)))
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
IoReuseIrp(
IN OUT PIRP Irp,
IN NTSTATUS Status);
* IN PIRP Irp,
* IN PDRIVER_CANCEL CancelRoutine)
*/
-#define IoSetCancelRoutine(_Irp, \
- _CancelRoutine) \
- ((PDRIVER_CANCEL) InterlockedExchangePointer( \
- (PVOID *) &(_Irp)->CancelRoutine, (PVOID) (_CancelRoutine)))
-
-/*
+#define IoSetCancelRoutine( Irp, NewCancelRoutine ) ( \
+ (PDRIVER_CANCEL)InterlockedExchange( (PLONG)&(Irp)->CancelRoutine, (LONG)(NewCancelRoutine) ) )
+
+
+ /*
* VOID
* IoSetCompletionRoutine(
* IN PIRP Irp,
_InvokeOnCancel) \
{ \
PIO_STACK_LOCATION _IrpSp; \
- ASSERT(_InvokeOnSuccess || _InvokeOnError || _InvokeOnCancel ? \
- _CompletionRoutine != NULL : TRUE); \
+ ASSERT((_InvokeOnSuccess) || (_InvokeOnError) || (_InvokeOnCancel) ? \
+ (_CompletionRoutine) != NULL : TRUE); \
_IrpSp = IoGetNextIrpStackLocation(_Irp); \
_IrpSp->CompletionRoutine = (PIO_COMPLETION_ROUTINE)(_CompletionRoutine); \
- _IrpSp->Context = (_Context); \
+ _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; \
}
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
IoSetCompletionRoutineEx(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp,
IN BOOLEAN InvokeOnError,
IN BOOLEAN InvokeOnCancel);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
IoSetDeviceInterfaceState(
IN PUNICODE_STRING SymbolicLinkName,
IN BOOLEAN Enable);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
IoSetHardErrorOrVerifyDevice(
IN PIRP Irp,
IN PDEVICE_OBJECT DeviceObject);
(_Irp)->Tail.Overlay.CurrentStackLocation--; \
}
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
IoSetPartitionInformationEx(
IN PDEVICE_OBJECT DeviceObject,
IN ULONG PartitionNumber,
IN struct _SET_PARTITION_INFORMATION_EX *PartitionInfo);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
IoSetShareAccess(
IN ACCESS_MASK DesiredAccess,
IN ULONG DesiredShareAccess,
IN OUT PFILE_OBJECT FileObject,
OUT PSHARE_ACCESS ShareAccess);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
IoSetStartIoAttributes(
IN PDEVICE_OBJECT DeviceObject,
IN BOOLEAN DeferredStartIo,
IN BOOLEAN NonCancelable);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
IoSetSystemPartition(
IN PUNICODE_STRING VolumeNameString);
-NTOSAPI
+NTKERNELAPI
BOOLEAN
-DDKAPI
+NTAPI
IoSetThreadHardErrorMode(
IN BOOLEAN EnableHardErrors);
(_Irp)->Tail.Overlay.CurrentStackLocation++; \
}
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
IoStartNextPacket(
IN PDEVICE_OBJECT DeviceObject,
IN BOOLEAN Cancelable);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
IoStartNextPacketByKey(
IN PDEVICE_OBJECT DeviceObject,
IN BOOLEAN Cancelable,
IN ULONG Key);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
IoStartPacket(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp,
IN PULONG Key OPTIONAL,
IN PDRIVER_CANCEL CancelFunction OPTIONAL);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
IoStartTimer(
IN PDEVICE_OBJECT DeviceObject);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
IoStopTimer(
IN PDEVICE_OBJECT DeviceObject);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
IoUnregisterPlugPlayNotification(
IN PVOID NotificationEntry);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
IoUnregisterShutdownNotification(
IN PDEVICE_OBJECT DeviceObject);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
IoUpdateShareAccess(
IN PFILE_OBJECT FileObject,
IN OUT PSHARE_ACCESS ShareAccess);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
IoVerifyPartitionTable(
IN PDEVICE_OBJECT DeviceObject,
IN BOOLEAN FixErrors);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
IoVolumeDeviceToDosName(
IN PVOID VolumeDeviceObject,
OUT PUNICODE_STRING DosName);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
IoWMIAllocateInstanceIds(
IN GUID *Guid,
IN ULONG InstanceCount,
OUT ULONG *FirstInstanceId);
-NTOSAPI
+NTKERNELAPI
ULONG
-DDKAPI
+NTAPI
IoWMIDeviceObjectToProviderId(
IN PDEVICE_OBJECT DeviceObject);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
IoWMIDeviceObjectToInstanceName(
IN PVOID DataBlockObject,
IN PDEVICE_OBJECT DeviceObject,
OUT PUNICODE_STRING InstanceName);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
IoWMIExecuteMethod(
IN PVOID DataBlockObject,
IN PUNICODE_STRING InstanceName,
IN OUT PULONG OutBufferSize,
IN OUT PUCHAR InOutBuffer);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
IoWMIHandleToInstanceName(
IN PVOID DataBlockObject,
IN HANDLE FileHandle,
OUT PUNICODE_STRING InstanceName);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
IoWMIOpenBlock(
IN GUID *DataBlockGuid,
IN ULONG DesiredAccess,
OUT PVOID *DataBlockObject);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
IoWMIQueryAllData(
IN PVOID DataBlockObject,
IN OUT ULONG *InOutBufferSize,
OUT PVOID OutBuffer);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
IoWMIQueryAllDataMultiple(
IN PVOID *DataBlockObjectList,
IN ULONG ObjectCount,
IN OUT ULONG *InOutBufferSize,
OUT PVOID OutBuffer);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
IoWMIQuerySingleInstance(
IN PVOID DataBlockObject,
IN PUNICODE_STRING InstanceName,
IN OUT ULONG *InOutBufferSize,
OUT PVOID OutBuffer);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
IoWMIQuerySingleInstanceMultiple(
IN PVOID *DataBlockObjectList,
IN PUNICODE_STRING InstanceNames,
IN OUT ULONG *InOutBufferSize,
OUT PVOID OutBuffer);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
IoWMIRegistrationControl(
IN PDEVICE_OBJECT DeviceObject,
IN ULONG Action);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
IoWMISetNotificationCallback(
IN PVOID Object,
IN WMI_NOTIFICATION_CALLBACK Callback,
IN PVOID Context);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
IoWMISetSingleInstance(
IN PVOID DataBlockObject,
IN PUNICODE_STRING InstanceName,
IN ULONG ValueBufferSize,
IN PVOID ValueBuffer);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
IoWMISetSingleItem(
IN PVOID DataBlockObject,
IN PUNICODE_STRING InstanceName,
IN ULONG ValueBufferSize,
IN PVOID ValueBuffer);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
IoWMISuggestInstanceName(
IN PDEVICE_OBJECT PhysicalDeviceObject OPTIONAL,
IN PUNICODE_STRING SymbolicLinkName OPTIONAL,
IN BOOLEAN CombineNames,
OUT PUNICODE_STRING SuggestedInstanceName);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
IoWMIWriteEvent(
IN PVOID WnodeEventItem);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
IoWriteErrorLogEntry(
IN PVOID ElEntry);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
IoWritePartitionTableEx(
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
-DDKFASTAPI
+FASTCALL
KeAcquireInStackQueuedSpinLock(
IN PKSPIN_LOCK SpinLock,
IN PKLOCK_QUEUE_HANDLE LockHandle);
-NTOSAPI
+NTHALAPI
+VOID
+FASTCALL
+KeReleaseInStackQueuedSpinLock(
+ IN PKLOCK_QUEUE_HANDLE LockHandle);
+#endif
+
+NTKERNELAPI
VOID
-DDKFASTAPI
+FASTCALL
KeAcquireInStackQueuedSpinLockAtDpcLevel(
IN PKSPIN_LOCK SpinLock,
IN PKLOCK_QUEUE_HANDLE LockHandle);
-NTOSAPI
+NTKERNELAPI
KIRQL
-DDKAPI
+NTAPI
KeAcquireInterruptSpinLock(
IN PKINTERRUPT Interrupt);
-NTOSAPI
+NTKERNELAPI
BOOLEAN
-DDKAPI
+NTAPI
KeAreApcsDisabled(
VOID);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
+__declspec(noreturn)
KeBugCheck(
IN ULONG BugCheckCode);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
+__declspec(noreturn)
KeBugCheckEx(
IN ULONG BugCheckCode,
IN ULONG_PTR BugCheckParameter1,
IN ULONG_PTR BugCheckParameter3,
IN ULONG_PTR BugCheckParameter4);
-NTOSAPI
+NTKERNELAPI
BOOLEAN
-DDKAPI
+NTAPI
KeCancelTimer(
IN PKTIMER Timer);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
KeClearEvent(
IN PRKEVENT Event);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
KeDelayExecutionThread(
IN KPROCESSOR_MODE WaitMode,
IN BOOLEAN Alertable,
IN PLARGE_INTEGER Interval);
-NTOSAPI
+NTKERNELAPI
BOOLEAN
-DDKAPI
+NTAPI
KeDeregisterBugCheckCallback(
IN PKBUGCHECK_CALLBACK_RECORD CallbackRecord);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
KeEnterCriticalRegion(
VOID);
*/
#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)
+
NTHALAPI
VOID
-DDKAPI
+NTAPI
KeFlushWriteBuffer(VOID);
-NTOSAPI
-PRKTHREAD
-DDKAPI
-KeGetCurrentThread(
- VOID);
-
-NTOSAPI
-KPROCESSOR_MODE
-DDKAPI
-KeGetPreviousMode(
- VOID);
-
-NTOSAPI
+NTKERNELAPI
ULONG
-DDKAPI
+NTAPI
KeGetRecommendedSharedDataAlignment(
VOID);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
KeInitializeDeviceQueue(
IN PKDEVICE_QUEUE DeviceQueue);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
KeInitializeMutex(
IN PRKMUTEX Mutex,
IN ULONG Level);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
KeInitializeSemaphore(
IN PRKSEMAPHORE Semaphore,
IN LONG Count,
IN LONG Limit);
-NTOSAPI
-VOID
-DDKAPI
-KeInitializeSpinLock(
- IN PKSPIN_LOCK SpinLock);
-
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
KeInitializeTimer(
IN PKTIMER Timer);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
KeInitializeTimerEx(
IN PKTIMER Timer,
IN TIMER_TYPE Type);
-NTOSAPI
+NTKERNELAPI
BOOLEAN
-DDKAPI
+NTAPI
KeInsertByKeyDeviceQueue(
IN PKDEVICE_QUEUE DeviceQueue,
IN PKDEVICE_QUEUE_ENTRY DeviceQueueEntry,
IN ULONG SortKey);
-NTOSAPI
+NTKERNELAPI
BOOLEAN
-DDKAPI
+NTAPI
KeInsertDeviceQueue(
IN PKDEVICE_QUEUE DeviceQueue,
IN PKDEVICE_QUEUE_ENTRY DeviceQueueEntry);
-NTOSAPI
+NTKERNELAPI
BOOLEAN
-DDKAPI
+NTAPI
KeInsertQueueDpc(
IN PRKDPC Dpc,
IN PVOID SystemArgument1,
IN PVOID SystemArgument2);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
KeLeaveCriticalRegion(
VOID);
#endif
}
-#elif defined(_PPC_)
-
-static __inline
-VOID
-KeMemoryBarrier(
- VOID)
-{
-}
-
#endif
-NTOSAPI
+NTKERNELAPI
LONG
-DDKAPI
+NTAPI
KePulseEvent(
IN PRKEVENT Event,
IN KPRIORITY Increment,
IN BOOLEAN Wait);
-NTOSAPI
-ULONGLONG
-DDKAPI
-KeQueryInterruptTime(
- VOID);
+NTKERNELAPI
+KAFFINITY
+NTAPI
+KeQueryActiveProcessors(
+ VOID
+);
NTHALAPI
LARGE_INTEGER
-DDKAPI
+NTAPI
KeQueryPerformanceCounter(
OUT PLARGE_INTEGER PerformanceFrequency OPTIONAL);
-NTOSAPI
+NTKERNELAPI
KPRIORITY
-DDKAPI
+NTAPI
KeQueryPriorityThread(
IN PRKTHREAD Thread);
-NTOSAPI
+NTKERNELAPI
+ULONG
+NTAPI
+KeQueryRuntimeThread(
+ IN PKTHREAD Thread,
+ OUT PULONG UserTime);
+
+#if !defined(_M_AMD64)
+NTKERNELAPI
+ULONGLONG
+NTAPI
+KeQueryInterruptTime(
+ VOID);
+
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
KeQuerySystemTime(
OUT PLARGE_INTEGER CurrentTime);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
KeQueryTickCount(
OUT PLARGE_INTEGER TickCount);
+#endif
-NTOSAPI
+NTKERNELAPI
ULONG
-DDKAPI
+NTAPI
KeQueryTimeIncrement(
VOID);
-NTOSAPI
+NTKERNELAPI
LONG
-DDKAPI
+NTAPI
KeReadStateEvent(
IN PRKEVENT Event);
-NTOSAPI
+NTKERNELAPI
LONG
-DDKAPI
+NTAPI
KeReadStateMutex(
IN PRKMUTEX Mutex);
-NTOSAPI
+NTKERNELAPI
LONG
-DDKAPI
+NTAPI
KeReadStateSemaphore(
IN PRKSEMAPHORE Semaphore);
-NTOSAPI
+NTKERNELAPI
BOOLEAN
-DDKAPI
+NTAPI
KeReadStateTimer(
IN PKTIMER Timer);
-NTOSAPI
+NTKERNELAPI
BOOLEAN
-DDKAPI
+NTAPI
KeRegisterBugCheckCallback(
IN PKBUGCHECK_CALLBACK_RECORD CallbackRecord,
IN PKBUGCHECK_CALLBACK_ROUTINE CallbackRoutine,
IN ULONG Length,
IN PUCHAR Component);
-NTHALAPI
-VOID
-DDKFASTAPI
-KeReleaseInStackQueuedSpinLock(
- IN PKLOCK_QUEUE_HANDLE LockHandle);
-
-NTOSAPI
+NTKERNELAPI
VOID
-DDKFASTAPI
+FASTCALL
KeReleaseInStackQueuedSpinLockFromDpcLevel(
IN PKLOCK_QUEUE_HANDLE LockHandle);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
KeReleaseInterruptSpinLock(
IN PKINTERRUPT Interrupt,
IN KIRQL OldIrql);
-NTOSAPI
+NTKERNELAPI
LONG
-DDKAPI
+NTAPI
KeReleaseMutex(
IN PRKMUTEX Mutex,
IN BOOLEAN Wait);
-NTOSAPI
+NTKERNELAPI
LONG
-DDKAPI
+NTAPI
KeReleaseSemaphore(
IN PRKSEMAPHORE Semaphore,
IN KPRIORITY Increment,
IN LONG Adjustment,
IN BOOLEAN Wait);
-NTOSAPI
+NTKERNELAPI
PKDEVICE_QUEUE_ENTRY
-DDKAPI
+NTAPI
KeRemoveByKeyDeviceQueue(
IN PKDEVICE_QUEUE DeviceQueue,
IN ULONG SortKey);
-NTOSAPI
+NTKERNELAPI
PKDEVICE_QUEUE_ENTRY
-DDKAPI
+NTAPI
KeRemoveDeviceQueue(
IN PKDEVICE_QUEUE DeviceQueue);
-NTOSAPI
+NTKERNELAPI
BOOLEAN
-DDKAPI
+NTAPI
KeRemoveEntryDeviceQueue(
IN PKDEVICE_QUEUE DeviceQueue,
IN PKDEVICE_QUEUE_ENTRY DeviceQueueEntry);
-NTOSAPI
+NTKERNELAPI
BOOLEAN
-DDKAPI
+NTAPI
KeRemoveQueueDpc(
IN PRKDPC Dpc);
-NTOSAPI
+NTKERNELAPI
LONG
-DDKAPI
+NTAPI
KeResetEvent(
IN PRKEVENT Event);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
KeRestoreFloatingPointState(
IN PKFLOATING_SAVE FloatSave);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
KeRevertToUserAffinityThread(VOID);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
KeSaveFloatingPointState(
OUT PKFLOATING_SAVE FloatSave);
-NTOSAPI
+NTKERNELAPI
LONG
-DDKAPI
+NTAPI
KeSetBasePriorityThread(
IN PRKTHREAD Thread,
IN LONG Increment);
-NTOSAPI
+NTKERNELAPI
LONG
-DDKAPI
+NTAPI
KeSetEvent(
IN PRKEVENT Event,
IN KPRIORITY Increment,
IN BOOLEAN Wait);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
KeSetImportanceDpc(
IN PRKDPC Dpc,
IN KDPC_IMPORTANCE Importance);
-NTOSAPI
+NTKERNELAPI
KPRIORITY
-DDKAPI
+NTAPI
KeSetPriorityThread(
IN PKTHREAD Thread,
IN KPRIORITY Priority);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
KeSetSystemAffinityThread(
IN KAFFINITY Affinity);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
KeSetTargetProcessorDpc(
IN PRKDPC Dpc,
IN CCHAR Number);
-NTOSAPI
+NTKERNELAPI
BOOLEAN
-DDKAPI
+NTAPI
KeSetTimer(
IN PKTIMER Timer,
IN LARGE_INTEGER DueTime,
IN PKDPC Dpc OPTIONAL);
-NTOSAPI
+NTKERNELAPI
BOOLEAN
-DDKAPI
+NTAPI
KeSetTimerEx(
IN PKTIMER Timer,
IN LARGE_INTEGER DueTime,
IN LONG Period OPTIONAL,
IN PKDPC Dpc OPTIONAL);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKFASTAPI
+FASTCALL
KeSetTimeUpdateNotifyRoutine(
IN PTIME_UPDATE_NOTIFY_ROUTINE NotifyRoutine);
NTHALAPI
VOID
-DDKAPI
+NTAPI
KeStallExecutionProcessor(
IN ULONG MicroSeconds);
-NTOSAPI
+NTKERNELAPI
BOOLEAN
-DDKAPI
+NTAPI
KeSynchronizeExecution(
IN PKINTERRUPT Interrupt,
IN PKSYNCHRONIZE_ROUTINE SynchronizeRoutine,
IN PVOID SynchronizeContext);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
KeWaitForMultipleObjects(
IN ULONG Count,
IN PVOID Object[],
IN PLARGE_INTEGER Timeout OPTIONAL,
IN PKWAIT_BLOCK WaitBlockArray OPTIONAL);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
KeWaitForMutexObject(
IN PRKMUTEX Mutex,
IN KWAIT_REASON WaitReason,
IN BOOLEAN Alertable,
IN PLARGE_INTEGER Timeout OPTIONAL);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
KeWaitForSingleObject(
IN PVOID Object,
IN KWAIT_REASON WaitReason,
#define KeLowerIrql(a) KfLowerIrql(a)
#define KeRaiseIrql(a,b) *(b) = KfRaiseIrql(a)
-#elif defined(_PPC_)
+#elif defined(_M_AMD64)
+
+FORCEINLINE
+KIRQL
+KeGetCurrentIrql(VOID)
+{
+ return (KIRQL)__readcr8();
+}
+
+FORCEINLINE
+VOID
+KeLowerIrql(IN KIRQL NewIrql)
+{
+ ASSERT(KeGetCurrentIrql() >= NewIrql);
+ __writecr8(NewIrql);
+}
+
+FORCEINLINE
+KIRQL
+KfRaiseIrql(IN KIRQL NewIrql)
+{
+ KIRQL OldIrql;
+
+ OldIrql = __readcr8();
+ ASSERT(OldIrql <= NewIrql);
+ __writecr8(NewIrql);
+ return OldIrql;
+}
+#define KeRaiseIrql(a,b) *(b) = KfRaiseIrql(a)
+
+FORCEINLINE
+KIRQL
+KeRaiseIrqlToDpcLevel(VOID)
+{
+ return KfRaiseIrql(DISPATCH_LEVEL);
+}
+
+FORCEINLINE
+KIRQL
+KeRaiseIrqlToSynchLevel(VOID)
+{
+ return KfRaiseIrql(12); // SYNCH_LEVEL = IPI_LEVEL - 2
+}
+
+#elif defined(__PowerPC__)
NTHALAPI
VOID
NTHALAPI
KIRQL
-FASTCALL
+FASTCALL
+KfRaiseIrql(
+ IN KIRQL NewIrql);
+
+NTHALAPI
+KIRQL
+DDKAPI
+KeRaiseIrqlToDpcLevel(
+ VOID);
+
+NTHALAPI
+KIRQL
+DDKAPI
+KeRaiseIrqlToSynchLevel(
+ VOID);
+
+#define KeLowerIrql(a) KfLowerIrql(a)
+#define KeRaiseIrql(a,b) *(b) = KfRaiseIrql(a)
+
+#elif defined(_M_MIPS)
+
+#define KeLowerIrql(a) KfLowerIrql(a)
+#define KeRaiseIrql(a,b) *(b) = KfRaiseIrql(a)
+
+NTKERNELAPI
+VOID
+NTAPI
+KfLowerIrql(
+ IN KIRQL NewIrql);
+
+NTKERNELAPI
+KIRQL
+NTAPI
KfRaiseIrql(
IN KIRQL NewIrql);
-NTHALAPI
+NTKERNELAPI
KIRQL
-DDKAPI
+NTAPI
KeRaiseIrqlToDpcLevel(
VOID);
-
-NTHALAPI
+
+NTKERNELAPI
KIRQL
DDKAPI
KeRaiseIrqlToSynchLevel(
VOID);
-#define KeLowerIrql(a) KfLowerIrql(a)
-#define KeRaiseIrql(a,b) *(b) = KfRaiseIrql(a)
+#elif defined(_M_ARM)
+
+#include <armddk.h>
#else
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
KeLowerIrql(
IN KIRQL NewIrql);
-NTOSAPI
-KIRQL
-DDKAPI
+NTKERNELAPI
+VOID
+NTAPI
KeRaiseIrql(
- IN KIRQL NewIrql);
+ IN KIRQL NewIrql,
+ OUT PKIRQL OldIrql);
-NTOSAPI
+NTKERNELAPI
KIRQL
-DDKAPI
+NTAPI
KeRaiseIrqlToDpcLevel(
VOID);
+NTKERNELAPI
+KIRQL
+DDKAPI
+KeRaiseIrqlToSynchLevel(
+ VOID);
+
#endif
/** Memory manager routines **/
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
MmAdvanceMdl(
IN PMDL Mdl,
IN ULONG NumberOfBytes);
-NTOSAPI
+NTKERNELAPI
PVOID
-DDKAPI
+NTAPI
MmAllocateContiguousMemory(
IN ULONG NumberOfBytes,
IN PHYSICAL_ADDRESS HighestAcceptableAddress);
-NTOSAPI
+NTKERNELAPI
PVOID
-DDKAPI
+NTAPI
MmAllocateContiguousMemorySpecifyCache(
IN SIZE_T NumberOfBytes,
IN PHYSICAL_ADDRESS LowestAcceptableAddress,
IN PHYSICAL_ADDRESS BoundaryAddressMultiple OPTIONAL,
IN MEMORY_CACHING_TYPE CacheType);
-NTOSAPI
+NTKERNELAPI
PVOID
-DDKAPI
+NTAPI
MmAllocateMappingAddress(
IN SIZE_T NumberOfBytes,
IN ULONG PoolTag);
-NTOSAPI
+NTKERNELAPI
PVOID
-DDKAPI
+NTAPI
MmAllocateNonCachedMemory(
IN ULONG NumberOfBytes);
-NTOSAPI
+NTKERNELAPI
PMDL
-DDKAPI
+NTAPI
MmAllocatePagesForMdl(
IN PHYSICAL_ADDRESS LowAddress,
IN PHYSICAL_ADDRESS HighAddress,
IN PHYSICAL_ADDRESS SkipBytes,
IN SIZE_T TotalBytes);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
MmBuildMdlForNonPagedPool(
IN OUT PMDL MemoryDescriptorList);
-NTOSAPI
-NTSTATUS
-DDKAPI
-MmCreateSection(
- OUT PVOID *SectionObject,
- IN ACCESS_MASK DesiredAccess,
- IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
- IN PLARGE_INTEGER MaximumSize,
- IN ULONG SectionPageProtection,
- IN ULONG AllocationAttributes,
- IN HANDLE FileHandle OPTIONAL,
- IN PFILE_OBJECT File OPTIONAL);
-
typedef enum _MMFLUSH_TYPE {
MmFlushForDelete,
MmFlushForWrite
} MMFLUSH_TYPE;
-NTOSAPI
+NTKERNELAPI
BOOLEAN
-DDKAPI
+NTAPI
MmFlushImageSection(
IN PSECTION_OBJECT_POINTERS SectionObjectPointer,
IN MMFLUSH_TYPE FlushType);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
MmFreeContiguousMemory(
IN PVOID BaseAddress);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
MmFreeContiguousMemorySpecifyCache(
IN PVOID BaseAddress,
IN SIZE_T NumberOfBytes,
IN MEMORY_CACHING_TYPE CacheType);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
MmFreeMappingAddress(
IN PVOID BaseAddress,
IN ULONG PoolTag);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
MmFreeNonCachedMemory(
IN PVOID BaseAddress,
IN SIZE_T NumberOfBytes);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
MmFreePagesFromMdl(
IN PMDL MemoryDescriptorList);
#define MmGetMdlVirtualAddress(_Mdl) \
((PVOID) ((PCHAR) ((_Mdl)->StartVa) + (_Mdl)->ByteOffset))
-NTOSAPI
+NTKERNELAPI
PHYSICAL_ADDRESS
-DDKAPI
+NTAPI
MmGetPhysicalAddress(
IN PVOID BaseAddress);
-NTOSAPI
+NTKERNELAPI
PPHYSICAL_MEMORY_RANGE
-DDKAPI
+NTAPI
MmGetPhysicalMemoryRanges(
VOID);
-NTOSAPI
+NTKERNELAPI
PVOID
-DDKAPI
+NTAPI
MmGetVirtualForPhysical(
IN PHYSICAL_ADDRESS PhysicalAddress);
-NTOSAPI
+NTKERNELAPI
PVOID
-DDKAPI
+NTAPI
MmMapLockedPagesSpecifyCache(
IN PMDL MemoryDescriptorList,
IN KPROCESSOR_MODE AccessMode,
IN ULONG BugCheckOnFailure,
IN MM_PAGE_PRIORITY Priority);
-NTOSAPI
+NTKERNELAPI
PVOID
-DDKAPI
+NTAPI
MmMapLockedPagesWithReservedMapping(
IN PVOID MappingAddress,
IN ULONG PoolTag,
IN PMDL MemoryDescriptorList,
IN MEMORY_CACHING_TYPE CacheType);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
MmMapUserAddressesToPage(
IN PVOID BaseAddress,
IN SIZE_T NumberOfBytes,
IN PVOID PageAddress);
-NTOSAPI
+NTKERNELAPI
PVOID
-DDKAPI
+NTAPI
MmMapVideoDisplay(
IN PHYSICAL_ADDRESS PhysicalAddress,
IN SIZE_T NumberOfBytes,
IN MEMORY_CACHING_TYPE CacheType);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
MmMapViewInSessionSpace(
IN PVOID Section,
OUT PVOID *MappedBase,
IN OUT PSIZE_T ViewSize);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
MmMapViewInSystemSpace(
IN PVOID Section,
OUT PVOID *MappedBase,
IN PSIZE_T ViewSize);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
MmMarkPhysicalMemoryAsBad(
IN PPHYSICAL_ADDRESS StartAddress,
IN OUT PLARGE_INTEGER NumberOfBytes);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
MmMarkPhysicalMemoryAsGood(
IN PPHYSICAL_ADDRESS StartAddress,
IN OUT PLARGE_INTEGER NumberOfBytes);
* IN MM_PAGE_PRIORITY Priority)
*/
#define MmGetSystemAddressForMdlSafe(_Mdl, _Priority) \
- ((_Mdl)->MdlFlags & (MDL_MAPPED_TO_SYSTEM_VA \
+ (((_Mdl)->MdlFlags & (MDL_MAPPED_TO_SYSTEM_VA \
| MDL_SOURCE_IS_NONPAGED_POOL)) ? \
(_Mdl)->MappedSystemVa : \
(PVOID) MmMapLockedPagesSpecifyCache((_Mdl), \
- KernelMode, MmCached, NULL, FALSE, _Priority)
+ KernelMode, MmCached, NULL, FALSE, (_Priority)))
-NTOSAPI
+NTKERNELAPI
PVOID
-DDKAPI
+NTAPI
MmGetSystemRoutineAddress(
IN PUNICODE_STRING SystemRoutineName);
(_MemoryDescriptorList)->ByteCount = (ULONG) _Length; \
}
-NTOSAPI
+NTKERNELAPI
BOOLEAN
-DDKAPI
+NTAPI
MmIsAddressValid(
IN PVOID VirtualAddress);
-NTOSAPI
+NTKERNELAPI
LOGICAL
-DDKAPI
+NTAPI
MmIsDriverVerifying(
IN PDRIVER_OBJECT DriverObject);
-NTOSAPI
+NTKERNELAPI
BOOLEAN
-DDKAPI
+NTAPI
MmIsThisAnNtAsSystem(
VOID);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
MmIsVerifierEnabled(
OUT PULONG VerifierFlags);
-NTOSAPI
+NTKERNELAPI
PVOID
-DDKAPI
+NTAPI
MmLockPagableDataSection(
IN PVOID AddressWithinSection);
-NTOSAPI
+NTKERNELAPI
PVOID
-DDKAPI
+NTAPI
MmLockPagableImageSection(
IN PVOID AddressWithinSection);
* MmLockPagableCodeSection(
* IN PVOID AddressWithinSection)
*/
-#define MmLockPagableCodeSection MmLockPagableDataSection
+#define MmLockPagableCodeSection(Address) MmLockPagableDataSection(Address)
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
MmLockPagableSectionByHandle(
IN PVOID ImageSectionHandle);
-NTOSAPI
+NTKERNELAPI
PVOID
-DDKAPI
+NTAPI
MmMapIoSpace(
IN PHYSICAL_ADDRESS PhysicalAddress,
IN ULONG NumberOfBytes,
IN MEMORY_CACHING_TYPE CacheEnable);
-NTOSAPI
+NTKERNELAPI
PVOID
-DDKAPI
+NTAPI
MmMapLockedPages(
IN PMDL MemoryDescriptorList,
IN KPROCESSOR_MODE AccessMode);
-NTOSAPI
+NTKERNELAPI
PVOID
-DDKAPI
+NTAPI
+MmLockPageableDataSection (
+ IN PVOID AddressWithinSection
+);
+
+NTKERNELAPI
+VOID
+NTAPI
+MmUnlockPageableImageSection(
+ IN PVOID ImageSectionHandle
+);
+
+NTKERNELAPI
+PVOID
+NTAPI
MmPageEntireDriver(
IN PVOID AddressWithinSection);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
MmProbeAndLockProcessPages(
IN OUT PMDL MemoryDescriptorList,
IN PEPROCESS Process,
IN KPROCESSOR_MODE AccessMode,
IN LOCK_OPERATION Operation);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
MmProtectMdlSystemAddress(
IN PMDL MemoryDescriptorList,
IN ULONG NewProtect);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
MmUnmapLockedPages(
IN PVOID BaseAddress,
IN PMDL MemoryDescriptorList);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
MmUnmapViewInSessionSpace(
IN PVOID MappedBase);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
MmUnmapViewInSystemSpace(
IN PVOID MappedBase);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
MmUnsecureVirtualMemory(
IN HANDLE SecureHandle);
} \
}
-NTOSAPI
+#define MmGetProcedureAddress(Address) (Address)
+
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
MmProbeAndLockPages(
IN OUT PMDL MemoryDescriptorList,
IN KPROCESSOR_MODE AccessMode,
IN LOCK_OPERATION Operation);
-NTOSAPI
+NTKERNELAPI
MM_SYSTEMSIZE
-DDKAPI
+NTAPI
MmQuerySystemSize(
VOID);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
MmRemovePhysicalMemory(
IN PPHYSICAL_ADDRESS StartAddress,
IN OUT PLARGE_INTEGER NumberOfBytes);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
MmResetDriverPaging(
IN PVOID AddressWithinSection);
-NTOSAPI
+NTKERNELAPI
HANDLE
-DDKAPI
+NTAPI
MmSecureVirtualMemory(
IN PVOID Address,
IN SIZE_T Size,
IN ULONG ProbeMode);
-NTOSAPI
+NTKERNELAPI
ULONG
-DDKAPI
+NTAPI
MmSizeOfMdl(
IN PVOID Base,
IN SIZE_T Length);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
MmUnlockPagableImageSection(
IN PVOID ImageSectionHandle);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
MmUnlockPages(
IN PMDL MemoryDescriptorList);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
MmUnmapIoSpace(
IN PVOID BaseAddress,
IN SIZE_T NumberOfBytes);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
MmUnmapReservedMapping(
IN PVOID BaseAddress,
IN ULONG PoolTag,
IN PMDL MemoryDescriptorList);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
MmUnmapVideoDisplay(
IN PVOID BaseAddress,
IN SIZE_T NumberOfBytes);
/** Object manager routines **/
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
ObAssignSecurity(
IN PACCESS_STATE AccessState,
IN PSECURITY_DESCRIPTOR SecurityDescriptor,
IN PVOID Object,
IN POBJECT_TYPE Type);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
ObDereferenceSecurityDescriptor(
PSECURITY_DESCRIPTOR SecurityDescriptor,
ULONG Count);
-NTOSAPI
+NTKERNELAPI
LONG_PTR
-DDKFASTAPI
+FASTCALL
ObfDereferenceObject(
IN PVOID Object);
*/
#define ObDereferenceObject ObfDereferenceObject
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
ObGetObjectSecurity(
IN PVOID Object,
OUT PSECURITY_DESCRIPTOR *SecurityDescriptor,
OUT PBOOLEAN MemoryAllocated);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
ObInsertObject(
IN PVOID Object,
IN PACCESS_STATE PassedAccessState OPTIONAL,
OUT PVOID* ReferencedObject OPTIONAL,
OUT PHANDLE Handle);
-NTOSAPI
+NTKERNELAPI
LONG_PTR
-DDKFASTAPI
+FASTCALL
ObfReferenceObject(
IN PVOID Object);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
ObLogSecurityDescriptor(
IN PSECURITY_DESCRIPTOR InputSecurityDescriptor,
OUT PSECURITY_DESCRIPTOR *OutputSecurityDescriptor,
*/
#define ObReferenceObject ObfReferenceObject
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
ObMakeTemporaryObject(
IN PVOID Object);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
ObOpenObjectByName(
IN POBJECT_ATTRIBUTES ObjectAttributes,
IN POBJECT_TYPE ObjectType,
IN OUT PVOID ParseContext OPTIONAL,
OUT PHANDLE Handle);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
ObOpenObjectByPointer(
IN PVOID Object,
IN ULONG HandleAttributes,
IN KPROCESSOR_MODE AccessMode,
OUT PHANDLE Handle);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
ObQueryObjectAuditingByHandle(
IN HANDLE Handle,
OUT PBOOLEAN GenerateOnClose);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
ObReferenceObjectByHandle(
IN HANDLE Handle,
IN ACCESS_MASK DesiredAccess,
OUT PVOID *Object,
OUT POBJECT_HANDLE_INFORMATION HandleInformation OPTIONAL);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
ObReferenceObjectByName(
IN PUNICODE_STRING ObjectPath,
IN ULONG Attributes,
IN OUT PVOID ParseContext OPTIONAL,
OUT PVOID *Object);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
ObReferenceObjectByPointer(
IN PVOID Object,
IN ACCESS_MASK DesiredAccess,
IN POBJECT_TYPE ObjectType,
IN KPROCESSOR_MODE AccessMode);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
ObReferenceSecurityDescriptor(
IN PSECURITY_DESCRIPTOR SecurityDescriptor,
IN ULONG Count);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
ObReleaseObjectSecurity(
IN PSECURITY_DESCRIPTOR SecurityDescriptor,
IN BOOLEAN MemoryAllocated);
/** Process manager routines **/
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
PsCreateSystemProcess(
IN PHANDLE ProcessHandle,
IN ACCESS_MASK DesiredAccess,
IN POBJECT_ATTRIBUTES ObjectAttributes);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
PsCreateSystemThread(
OUT PHANDLE ThreadHandle,
IN ULONG DesiredAccess,
*/
#define PsGetCurrentProcess IoGetCurrentProcess
-NTOSAPI
+NTKERNELAPI
HANDLE
-DDKAPI
+NTAPI
PsGetCurrentProcessId(
VOID);
#define PsGetCurrentThread() \
((PETHREAD) KeGetCurrentThread())
-NTOSAPI
+NTKERNELAPI
HANDLE
-DDKAPI
+NTAPI
PsGetCurrentThreadId(
VOID);
-NTOSAPI
+NTKERNELAPI
+HANDLE
+NTAPI
+PsGetProcessId(PEPROCESS Process);
+
+NTKERNELAPI
BOOLEAN
-DDKAPI
+NTAPI
PsGetVersion(
PULONG MajorVersion OPTIONAL,
PULONG MinorVersion OPTIONAL,
PULONG BuildNumber OPTIONAL,
PUNICODE_STRING CSDVersion OPTIONAL);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
PsRemoveCreateThreadNotifyRoutine(
IN PCREATE_THREAD_NOTIFY_ROUTINE NotifyRoutine);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
PsRemoveLoadImageNotifyRoutine(
IN PLOAD_IMAGE_NOTIFY_ROUTINE NotifyRoutine);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
PsSetCreateProcessNotifyRoutine(
IN PCREATE_PROCESS_NOTIFY_ROUTINE NotifyRoutine,
IN BOOLEAN Remove);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
PsSetCreateThreadNotifyRoutine(
IN PCREATE_THREAD_NOTIFY_ROUTINE NotifyRoutine);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
PsSetLoadImageNotifyRoutine(
IN PLOAD_IMAGE_NOTIFY_ROUTINE NotifyRoutine);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
PsTerminateSystemThread(
IN NTSTATUS ExitStatus);
+extern NTSYSAPI PEPROCESS PsInitialSystemProcess;
/** Security reference monitor routines **/
-NTOSAPI
+NTKERNELAPI
BOOLEAN
-DDKAPI
+NTAPI
SeAccessCheck(
IN PSECURITY_DESCRIPTOR SecurityDescriptor,
IN PSECURITY_SUBJECT_CONTEXT SubjectSecurityContext,
OUT PACCESS_MASK GrantedAccess,
OUT PNTSTATUS AccessStatus);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
SeAssignSecurity(
IN PSECURITY_DESCRIPTOR ParentDescriptor OPTIONAL,
IN PSECURITY_DESCRIPTOR ExplicitDescriptor OPTIONAL,
IN PGENERIC_MAPPING GenericMapping,
IN POOL_TYPE PoolType);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
SeAssignSecurityEx(
IN PSECURITY_DESCRIPTOR ParentDescriptor OPTIONAL,
IN PSECURITY_DESCRIPTOR ExplicitDescriptor OPTIONAL,
IN PGENERIC_MAPPING GenericMapping,
IN POOL_TYPE PoolType);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
SeDeassignSecurity(
IN OUT PSECURITY_DESCRIPTOR *SecurityDescriptor);
-NTOSAPI
+NTKERNELAPI
BOOLEAN
-DDKAPI
+NTAPI
SeSinglePrivilegeCheck(
LUID PrivilegeValue,
KPROCESSOR_MODE PreviousMode);
-NTOSAPI
+NTKERNELAPI
BOOLEAN
-DDKAPI
+NTAPI
SeValidSecurityDescriptor(
IN ULONG Length,
IN PSECURITY_DESCRIPTOR SecurityDescriptor);
/** NtXxx routines **/
-NTOSAPI
+NTSYSCALLAPI
NTSTATUS
-DDKAPI
+NTAPI
NtOpenProcess(
OUT PHANDLE ProcessHandle,
IN ACCESS_MASK DesiredAccess,
IN POBJECT_ATTRIBUTES ObjectAttributes,
IN PCLIENT_ID ClientId OPTIONAL);
-NTOSAPI
+NTSYSCALLAPI
NTSTATUS
-DDKAPI
+NTAPI
NtQueryInformationProcess(
IN HANDLE ProcessHandle,
IN PROCESSINFOCLASS ProcessInformationClass,
/** NtXxx and ZwXxx routines **/
-NTOSAPI
+NTSYSAPI
NTSTATUS
-DDKAPI
+NTAPI
ZwCancelTimer(
IN HANDLE TimerHandle,
OUT PBOOLEAN CurrentState OPTIONAL);
-NTOSAPI
+NTSYSCALLAPI
NTSTATUS
-DDKAPI
+NTAPI
NtClose(
IN HANDLE Handle);
-NTOSAPI
+NTSYSAPI
NTSTATUS
-DDKAPI
+NTAPI
ZwClose(
IN HANDLE Handle);
-NTOSAPI
+NTSYSAPI
NTSTATUS
-DDKAPI
+NTAPI
ZwCreateDirectoryObject(
OUT PHANDLE DirectoryHandle,
IN ACCESS_MASK DesiredAccess,
IN POBJECT_ATTRIBUTES ObjectAttributes);
-NTOSAPI
+NTSYSCALLAPI
NTSTATUS
-DDKAPI
+NTAPI
NtCreateEvent(
OUT PHANDLE EventHandle,
IN ACCESS_MASK DesiredAccess,
IN EVENT_TYPE EventType,
IN BOOLEAN InitialState);
-NTOSAPI
+NTSYSAPI
NTSTATUS
-DDKAPI
+NTAPI
ZwCreateEvent(
OUT PHANDLE EventHandle,
IN ACCESS_MASK DesiredAccess,
IN EVENT_TYPE EventType,
IN BOOLEAN InitialState);
-NTOSAPI
+NTSYSAPI
NTSTATUS
-DDKAPI
+NTAPI
ZwCreateFile(
OUT PHANDLE FileHandle,
IN ACCESS_MASK DesiredAccess,
IN PVOID EaBuffer OPTIONAL,
IN ULONG EaLength);
-NTOSAPI
+NTSYSAPI
NTSTATUS
-DDKAPI
+NTAPI
ZwCreateKey(
OUT PHANDLE KeyHandle,
IN ACCESS_MASK DesiredAccess,
IN ULONG CreateOptions,
OUT PULONG Disposition OPTIONAL);
-NTOSAPI
+NTSYSAPI
NTSTATUS
-DDKAPI
+NTAPI
ZwCreateTimer(
OUT PHANDLE TimerHandle,
IN ACCESS_MASK DesiredAccess,
IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
IN TIMER_TYPE TimerType);
-NTOSAPI
+NTSYSAPI
NTSTATUS
-DDKAPI
+NTAPI
ZwDeleteKey(
IN HANDLE KeyHandle);
-NTOSAPI
+NTSYSAPI
NTSTATUS
-DDKAPI
+NTAPI
ZwDeleteValueKey(
IN HANDLE KeyHandle,
IN PUNICODE_STRING ValueName);
-NTOSAPI
+NTSYSCALLAPI
NTSTATUS
-DDKAPI
+NTAPI
NtDeviceIoControlFile(
IN HANDLE DeviceHandle,
IN HANDLE Event OPTIONAL,
OUT PVOID OutputBuffer,
IN ULONG OutputBufferSize);
-NTOSAPI
+NTSYSAPI
NTSTATUS
-DDKAPI
+NTAPI
ZwDeviceIoControlFile(
IN HANDLE DeviceHandle,
IN HANDLE Event OPTIONAL,
OUT PVOID OutputBuffer,
IN ULONG OutputBufferSize);
-NTOSAPI
+NTSYSAPI
NTSTATUS
-DDKAPI
+NTAPI
ZwEnumerateKey(
IN HANDLE KeyHandle,
IN ULONG Index,
IN ULONG Length,
OUT PULONG ResultLength);
-NTOSAPI
+NTSYSAPI
NTSTATUS
-DDKAPI
+NTAPI
ZwEnumerateValueKey(
IN HANDLE KeyHandle,
IN ULONG Index,
IN ULONG Length,
OUT PULONG ResultLength);
-NTOSAPI
+NTSYSAPI
NTSTATUS
-DDKAPI
+NTAPI
ZwFlushKey(
IN HANDLE KeyHandle);
-NTOSAPI
+NTSYSAPI
NTSTATUS
-DDKAPI
+NTAPI
ZwMakeTemporaryObject(
IN HANDLE Handle);
-NTOSAPI
+NTSYSCALLAPI
NTSTATUS
-DDKAPI
+NTAPI
NtMapViewOfSection(
IN HANDLE SectionHandle,
IN HANDLE ProcessHandle,
IN OUT PVOID *BaseAddress,
- IN ULONG ZeroBits,
- IN ULONG CommitSize,
+ 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);
-NTOSAPI
+NTSYSAPI
NTSTATUS
-DDKAPI
+NTAPI
ZwMapViewOfSection(
IN HANDLE SectionHandle,
IN HANDLE ProcessHandle,
IN OUT PVOID *BaseAddress,
- IN ULONG ZeroBits,
- IN ULONG CommitSize,
+ 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);
-NTOSAPI
+NTSYSCALLAPI
NTSTATUS
-DDKAPI
+NTAPI
NtOpenFile(
OUT PHANDLE FileHandle,
IN ACCESS_MASK DesiredAccess,
IN ULONG ShareAccess,
IN ULONG OpenOptions);
-NTOSAPI
+NTSYSAPI
NTSTATUS
-DDKAPI
+NTAPI
ZwOpenFile(
OUT PHANDLE FileHandle,
IN ACCESS_MASK DesiredAccess,
IN ULONG ShareAccess,
IN ULONG OpenOptions);
-NTOSAPI
+NTSYSAPI
NTSTATUS
-DDKAPI
+NTAPI
ZwOpenKey(
OUT PHANDLE KeyHandle,
IN ACCESS_MASK DesiredAccess,
IN POBJECT_ATTRIBUTES ObjectAttributes);
-NTOSAPI
+NTSYSAPI
NTSTATUS
-DDKAPI
+NTAPI
ZwOpenSection(
OUT PHANDLE SectionHandle,
IN ACCESS_MASK DesiredAccess,
IN POBJECT_ATTRIBUTES ObjectAttributes);
-NTOSAPI
+NTSYSAPI
NTSTATUS
-DDKAPI
+NTAPI
ZwOpenSymbolicLinkObject(
OUT PHANDLE LinkHandle,
IN ACCESS_MASK DesiredAccess,
IN POBJECT_ATTRIBUTES ObjectAttributes);
-NTOSAPI
+NTSYSAPI
NTSTATUS
-DDKAPI
+NTAPI
ZwOpenTimer(
OUT PHANDLE TimerHandle,
IN ACCESS_MASK DesiredAccess,
IN POBJECT_ATTRIBUTES ObjectAttributes);
-NTOSAPI
+NTSYSAPI
NTSTATUS
-DDKAPI
+NTAPI
ZwQueryInformationFile(
IN HANDLE FileHandle,
OUT PIO_STATUS_BLOCK IoStatusBlock,
IN ULONG Length,
IN FILE_INFORMATION_CLASS FileInformationClass);
-NTOSAPI
+NTSYSAPI
NTSTATUS
-DDKAPI
+NTAPI
ZwQueryKey(
IN HANDLE KeyHandle,
IN KEY_INFORMATION_CLASS KeyInformationClass,
IN ULONG Length,
OUT PULONG ResultLength);
-NTOSAPI
+NTSYSAPI
NTSTATUS
-DDKAPI
+NTAPI
ZwQuerySymbolicLinkObject(
IN HANDLE LinkHandle,
IN OUT PUNICODE_STRING LinkTarget,
OUT PULONG ReturnedLength OPTIONAL);
-NTOSAPI
+NTSYSAPI
NTSTATUS
-DDKAPI
+NTAPI
ZwQueryValueKey(
IN HANDLE KeyHandle,
IN PUNICODE_STRING ValueName,
IN ULONG Length,
OUT PULONG ResultLength);
-NTOSAPI
+NTSYSCALLAPI
NTSTATUS
-DDKAPI
+NTAPI
NtReadFile(
IN HANDLE FileHandle,
IN HANDLE Event OPTIONAL,
IN PLARGE_INTEGER ByteOffset OPTIONAL,
IN PULONG Key OPTIONAL);
-NTOSAPI
+NTSYSAPI
NTSTATUS
-DDKAPI
+NTAPI
ZwReadFile(
IN HANDLE FileHandle,
IN HANDLE Event OPTIONAL,
IN PLARGE_INTEGER ByteOffset OPTIONAL,
IN PULONG Key OPTIONAL);
-NTOSAPI
+NTSYSCALLAPI
NTSTATUS
-DDKAPI
+NTAPI
NtSetEvent(
IN HANDLE EventHandle,
OUT PLONG PreviousState OPTIONAL);
-NTOSAPI
+NTSYSAPI
NTSTATUS
-DDKAPI
+NTAPI
ZwSetEvent(
IN HANDLE EventHandle,
OUT PLONG PreviousState OPTIONAL);
-NTOSAPI
+NTSYSAPI
NTSTATUS
-DDKAPI
+NTAPI
ZwSetInformationFile(
IN HANDLE FileHandle,
OUT PIO_STATUS_BLOCK IoStatusBlock,
IN ULONG Length,
IN FILE_INFORMATION_CLASS FileInformationClass);
-NTOSAPI
+NTSYSAPI
NTSTATUS
-DDKAPI
+NTAPI
ZwSetInformationThread(
IN HANDLE ThreadHandle,
IN THREADINFOCLASS ThreadInformationClass,
IN PVOID ThreadInformation,
IN ULONG ThreadInformationLength);
-NTOSAPI
+NTSYSAPI
NTSTATUS
-DDKAPI
+NTAPI
ZwSetTimer(
IN HANDLE TimerHandle,
IN PLARGE_INTEGER DueTime,
IN LONG Period OPTIONAL,
OUT PBOOLEAN PreviousState OPTIONAL);
-NTOSAPI
+NTSYSAPI
NTSTATUS
-DDKAPI
+NTAPI
ZwSetValueKey(
IN HANDLE KeyHandle,
IN PUNICODE_STRING ValueName,
#define AT_RESERVED 0x20000000
#define AT_ROUND_TO_PAGE 0x40000000
-NTOSAPI
+NTSYSCALLAPI
NTSTATUS
-DDKAPI
+NTAPI
NtUnmapViewOfSection(
IN HANDLE ProcessHandle,
IN PVOID BaseAddress);
-NTOSAPI
+NTSYSAPI
NTSTATUS
-DDKAPI
+NTAPI
ZwUnmapViewOfSection(
IN HANDLE ProcessHandle,
IN PVOID BaseAddress);
-NTOSAPI
+NTSYSCALLAPI
NTSTATUS
-DDKAPI
+NTAPI
NtWaitForSingleObject(
IN HANDLE ObjectHandle,
IN BOOLEAN Alertable,
IN PLARGE_INTEGER TimeOut OPTIONAL);
-NTOSAPI
+NTSYSAPI
NTSTATUS
-DDKAPI
+NTAPI
ZwWaitForSingleObject(
IN HANDLE ObjectHandle,
IN BOOLEAN Alertable,
IN PLARGE_INTEGER TimeOut OPTIONAL);
-NTOSAPI
+NTSYSCALLAPI
NTSTATUS
-DDKAPI
+NTAPI
NtWriteFile(
IN HANDLE FileHandle,
IN HANDLE Event OPTIONAL,
IN PLARGE_INTEGER ByteOffset OPTIONAL,
IN PULONG Key OPTIONAL);
-NTOSAPI
+NTSYSAPI
NTSTATUS
-DDKAPI
+NTAPI
ZwWriteFile(
IN HANDLE FileHandle,
IN HANDLE Event OPTIONAL,
/** Power management support routines **/
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
PoCallDriver(
IN PDEVICE_OBJECT DeviceObject,
IN OUT PIRP Irp);
-NTOSAPI
+NTKERNELAPI
PULONG
-DDKAPI
+NTAPI
PoRegisterDeviceForIdleDetection(
IN PDEVICE_OBJECT DeviceObject,
IN ULONG ConservationIdleTime,
IN ULONG PerformanceIdleTime,
IN DEVICE_POWER_STATE State);
-NTOSAPI
+NTKERNELAPI
PVOID
-DDKAPI
+NTAPI
PoRegisterSystemState(
IN PVOID StateHandle,
IN EXECUTION_STATE Flags);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
PoRequestPowerIrp(
IN PDEVICE_OBJECT DeviceObject,
IN UCHAR MinorFunction,
IN PVOID Context,
OUT PIRP *Irp OPTIONAL);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
PoRequestShutdownEvent(
OUT PVOID *Event);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
PoSetDeviceBusy(
PULONG IdlePointer);
-NTOSAPI
+#define PoSetDeviceBusy(IdlePointer) \
+ ((void)(*(IdlePointer) = 0))
+
+NTKERNELAPI
POWER_STATE
-DDKAPI
+NTAPI
PoSetPowerState(
IN PDEVICE_OBJECT DeviceObject,
IN POWER_STATE_TYPE Type,
IN POWER_STATE State);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
PoSetSystemState(
IN EXECUTION_STATE Flags);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
PoStartNextPowerIrp(
IN PIRP Irp);
-NTOSAPI
+NTKERNELAPI
VOID
-DDKAPI
+NTAPI
PoUnregisterSystemState(
IN PVOID StateHandle);
/** WMI library support routines **/
-NTOSAPI
NTSTATUS
-DDKAPI
+NTAPI
WmiCompleteRequest(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp,
IN ULONG BufferUsed,
IN CCHAR PriorityBoost);
-NTOSAPI
NTSTATUS
-DDKAPI
+NTAPI
WmiFireEvent(
IN PDEVICE_OBJECT DeviceObject,
IN LPGUID Guid,
IN ULONG EventDataSize,
IN PVOID EventData);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
WmiQueryTraceInformation(
IN TRACE_INFORMATION_CLASS TraceInformationClass,
OUT PVOID TraceInformation,
OUT PULONG RequiredLength OPTIONAL,
IN PVOID Buffer OPTIONAL);
-NTOSAPI
NTSTATUS
-DDKAPI
+NTAPI
WmiSystemControl(
IN PWMILIB_CONTEXT WmiLibInfo,
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp,
OUT PSYSCTL_IRP_DISPOSITION IrpDisposition);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
DDKCDECLAPI
WmiTraceMessage(
#if 0
/* FIXME: Get va_list from where? */
-NTOSAPI
+NTKERNELAPI
NTSTATUS
DDKCDECLAPI
WmiTraceMessageVa(
/** Kernel debugger routines **/
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
KdDisableDebugger(
VOID);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
KdEnableDebugger(
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);
-NTOSAPI
+NTSYSAPI
VOID
-DDKAPI
+NTAPI
DbgBreakPointWithStatus(
IN ULONG Status);
ULONG
-__cdecl
+DDKCDECLAPI
DbgPrint(
IN PCCH Format,
IN ...);
ULONG
-__cdecl
+DDKCDECLAPI
DbgPrintEx(
IN ULONG ComponentId,
IN ULONG Level,
IN PCCH Format,
IN ...);
-NTOSAPI
+ULONG
+NTAPI
+vDbgPrintEx(
+ IN ULONG ComponentId,
+ IN ULONG Level,
+ IN LPCSTR Format,
+ IN va_list ap);
+
+ULONG
+NTAPI
+vDbgPrintExWithPrefix(
+ IN LPCSTR Prefix,
+ IN ULONG ComponentId,
+ IN ULONG Level,
+ IN LPCSTR Format,
+ IN va_list ap);
+
+NTKERNELAPI
ULONG
DDKCDECLAPI
DbgPrintReturnControlC(
IN PCH Format,
IN ...);
-NTOSAPI
+NTKERNELAPI
BOOLEAN
-DDKAPI
+NTAPI
DbgQueryDebugFilterState(
IN ULONG ComponentId,
IN ULONG Level);
-NTOSAPI
+NTKERNELAPI
NTSTATUS
-DDKAPI
+NTAPI
DbgSetDebugFilterState(
IN ULONG ComponentId,
IN ULONG Level,
#if defined(_NTDDK_) || defined(_NTHAL_) || defined(_WDMDDK_) || defined(_NTOSP_)
-extern NTOSAPI PBOOLEAN KdDebuggerNotPresent;
-extern NTOSAPI PBOOLEAN KdDebuggerEnabled;
+extern NTKERNELAPI PBOOLEAN KdDebuggerNotPresent;
+extern NTKERNELAPI PBOOLEAN KdDebuggerEnabled;
#define KD_DEBUGGER_ENABLED *KdDebuggerEnabled
#define KD_DEBUGGER_NOT_PRESENT *KdDebuggerNotPresent
#endif
-#ifdef __GNUC__
-
-/* Available as intrinsics on MSVC */
-#ifdef _X86_
-static __inline void _disable(void) {__asm__ __volatile__("cli\n");}
-static __inline void _enable(void) {__asm__ __volatile__("sti\n");}
-
-static __inline ULONG64 __readcr3(void)
-{
- ULONG_PTR Ret;
- __asm__ __volatile__("movl %%cr3, %0;\n"
- :"=r"(Ret));
- return (ULONG64)Ret;
-}
-
-static __inline ULONG64 __readcr4(void)
-{
- ULONG_PTR Ret;
- __asm__ __volatile__("movl %%cr4, %0; \n"
- :"=r"(Ret));
- return (ULONG64)Ret;
-}
-#elif defined(_PPC_)
-#ifndef _ENABLE_DISABLE_DEFINED
-#define _ENABLE_DISABLE_DEFINED
-static __inline void _disable(void) {
- /* Turn off EE bit */
- __asm__ __volatile__
- ("mfmsr 3\n\t"
- "xor 4,5,5\n\t"
- "addi 4,4,-1\n\t"
- "and 0,3,4\n\t"
- "mtmsr 0\n\t"
- );
-}
-static __inline void _enable(void) {
- /* Turn on EE bit */
- __asm__ __volatile__
- ("mfmsr 3\n\t"
- "ori 0,3,0x8000\n\t"
- "mtmsr 0\n\t"
- );
-}
-#endif
-#endif /*_X86_*/
-#endif
-
#ifdef __cplusplus
}
#endif