(*PFN_RTL_IS_SERVICE_PACK_VERSION_INSTALLED)(
IN ULONG Version);
+
/******************************************************************************
* Kernel Types *
******************************************************************************/
+
typedef UCHAR KIRQL, *PKIRQL;
typedef CCHAR KPROCESSOR_MODE;
typedef LONG KPRIORITY;
extern PCCHAR KeNumberProcessors;
#endif
+
/******************************************************************************
* Memory manager Types *
******************************************************************************/
MmLargeSystem
} MM_SYSTEMSIZE;
-
/******************************************************************************
* Executive Types *
******************************************************************************/
#endif /* !_NTLSA_AUDIT_ */
#endif /* !_NTLSA_IFS_ */
-
/******************************************************************************
* Power Management Support Types *
******************************************************************************/
#define IO_RESOURCE_DEFAULT 0x02
#define IO_RESOURCE_ALTERNATIVE 0x08
-/* DEVICE_OBJECT.Flags */
-#define DO_VERIFY_VOLUME 0x00000002
-#define DO_BUFFERED_IO 0x00000004
-#define DO_EXCLUSIVE 0x00000008
-#define DO_DIRECT_IO 0x00000010
-#define DO_MAP_IO_BUFFER 0x00000020
-#define DO_DEVICE_INITIALIZING 0x00000080
-#define DO_SHUTDOWN_REGISTERED 0x00000800
-#define DO_BUS_ENUMERATED_DEVICE 0x00001000
-#define DO_POWER_PAGABLE 0x00002000
-#define DO_POWER_INRUSH 0x00004000
-
-/* DEVICE_OBJECT.Characteristics */
-#define FILE_REMOVABLE_MEDIA 0x00000001
-#define FILE_READ_ONLY_DEVICE 0x00000002
-#define FILE_FLOPPY_DISKETTE 0x00000004
-#define FILE_WRITE_ONCE_MEDIA 0x00000008
-#define FILE_REMOTE_DEVICE 0x00000010
-#define FILE_DEVICE_IS_MOUNTED 0x00000020
-#define FILE_VIRTUAL_VOLUME 0x00000040
-#define FILE_AUTOGENERATED_DEVICE_NAME 0x00000080
-#define FILE_DEVICE_SECURE_OPEN 0x00000100
-#define FILE_CHARACTERISTIC_PNP_DEVICE 0x00000800
-#define FILE_CHARACTERISTIC_TS_DEVICE 0x00001000
-#define FILE_CHARACTERISTIC_WEBDAV_DEVICE 0x00002000
-
-/* DEVICE_OBJECT.AlignmentRequirement */
-#define FILE_BYTE_ALIGNMENT 0x00000000
-#define FILE_WORD_ALIGNMENT 0x00000001
-#define FILE_LONG_ALIGNMENT 0x00000003
-#define FILE_QUAD_ALIGNMENT 0x00000007
-#define FILE_OCTA_ALIGNMENT 0x0000000f
-#define FILE_32_BYTE_ALIGNMENT 0x0000001f
-#define FILE_64_BYTE_ALIGNMENT 0x0000003f
-#define FILE_128_BYTE_ALIGNMENT 0x0000007f
-#define FILE_256_BYTE_ALIGNMENT 0x000000ff
-#define FILE_512_BYTE_ALIGNMENT 0x000001ff
-
-/* DEVICE_OBJECT.DeviceType */
-#define DEVICE_TYPE ULONG
-
#define FILE_DEVICE_BEEP 0x00000001
#define FILE_DEVICE_CD_ROM 0x00000002
#define FILE_DEVICE_CD_ROM_FILE_SYSTEM 0x00000003
PKDPC BufferChainingDpc;
} WAIT_CONTEXT_BLOCK, *PWAIT_CONTEXT_BLOCK;
+/* DEVICE_OBJECT.Flags */
+#define DO_VERIFY_VOLUME 0x00000002
+#define DO_BUFFERED_IO 0x00000004
+#define DO_EXCLUSIVE 0x00000008
+#define DO_DIRECT_IO 0x00000010
+#define DO_MAP_IO_BUFFER 0x00000020
+#define DO_DEVICE_INITIALIZING 0x00000080
+#define DO_SHUTDOWN_REGISTERED 0x00000800
+#define DO_BUS_ENUMERATED_DEVICE 0x00001000
+#define DO_POWER_PAGABLE 0x00002000
+#define DO_POWER_INRUSH 0x00004000
+
+/* DEVICE_OBJECT.Characteristics */
+#define FILE_REMOVABLE_MEDIA 0x00000001
+#define FILE_READ_ONLY_DEVICE 0x00000002
+#define FILE_FLOPPY_DISKETTE 0x00000004
+#define FILE_WRITE_ONCE_MEDIA 0x00000008
+#define FILE_REMOTE_DEVICE 0x00000010
+#define FILE_DEVICE_IS_MOUNTED 0x00000020
+#define FILE_VIRTUAL_VOLUME 0x00000040
+#define FILE_AUTOGENERATED_DEVICE_NAME 0x00000080
+#define FILE_DEVICE_SECURE_OPEN 0x00000100
+#define FILE_CHARACTERISTIC_PNP_DEVICE 0x00000800
+#define FILE_CHARACTERISTIC_TS_DEVICE 0x00001000
+#define FILE_CHARACTERISTIC_WEBDAV_DEVICE 0x00002000
+
+/* DEVICE_OBJECT.AlignmentRequirement */
+#define FILE_BYTE_ALIGNMENT 0x00000000
+#define FILE_WORD_ALIGNMENT 0x00000001
+#define FILE_LONG_ALIGNMENT 0x00000003
+#define FILE_QUAD_ALIGNMENT 0x00000007
+#define FILE_OCTA_ALIGNMENT 0x0000000f
+#define FILE_32_BYTE_ALIGNMENT 0x0000001f
+#define FILE_64_BYTE_ALIGNMENT 0x0000003f
+#define FILE_128_BYTE_ALIGNMENT 0x0000007f
+#define FILE_256_BYTE_ALIGNMENT 0x000000ff
+#define FILE_512_BYTE_ALIGNMENT 0x000001ff
+
+/* DEVICE_OBJECT.DeviceType */
+#define DEVICE_TYPE ULONG
+
typedef struct _DEVICE_OBJECT {
CSHORT Type;
USHORT Size;
ULONG GpeNumber,
KINTERRUPT_MODE Mode,
BOOLEAN Shareable,
- PGPE_SERVICE_ROUTINE2 ServiceRoutine,
+ PGPE_SERVICE_ROUTINE ServiceRoutine,
PVOID ServiceContext,
PVOID *ObjectContext);
* Process Manager Types *
******************************************************************************/
+
#define QUOTA_LIMITS_HARDWS_MIN_ENABLE 0x00000001
#define QUOTA_LIMITS_HARDWS_MIN_DISABLE 0x00000002
#define QUOTA_LIMITS_HARDWS_MAX_ENABLE 0x00000004
#if (NTDDI_VERSION >= NTDDI_WIN2K)
+
+
NTSYSAPI
BOOLEAN
NTAPI
IN PVOID ValueData,
IN ULONG ValueLength);
-#endif // (NTDDI_VERSION >= NTDDI_WIN2K)
+
+#endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */
+
#if (NTDDI_VERSION >= NTDDI_WIN2KSP3)
NTSYSAPI
IN SIZE_T Length);
#endif
+
#if (NTDDI_VERSION >= NTDDI_WINXP)
+
+
NTSYSAPI
VOID
NTAPI
IN ULONG HashAlgorithm,
OUT PULONG HashValue);
-#endif // (NTDDI_VERSION >= NTDDI_WINXP)
+
+#endif /* (NTDDI_VERSION >= NTDDI_WINXP) */
#if (NTDDI_VERSION >= NTDDI_VISTA)
+
+
NTSYSAPI
ULONG
NTAPI
IN ULONGLONG Length,
IN ULONGLONG Start);
+
#endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
#if (NTDDI_VERSION >= NTDDI_WIN7)
+
+
NTSYSAPI
NTSTATUS
NTAPI
RtlGetEnabledExtendedFeatures(
IN ULONG64 FeatureMask);
+
#endif /* (NTDDI_VERSION >= NTDDI_WIN7) */
+
#if !defined(MIDL_PASS)
/* inline funftions */
//DECLSPEC_DEPRECATED_DDK_WINXP
}
#if defined(_AMD64_) || defined(_IA64_)
+
+
static __inline
LARGE_INTEGER
NTAPI_INLINE
*Remainder = (ULONG)(Dividend.QuadPart % Divisor);
return ret;
}
-#endif
+
+
+
+#endif /* defined(_AMD64_) || defined(_IA64_) */
+
#if defined(_AMD64_)
#if (NTDDI_VERSION >= NTDDI_WIN2K)
+
+
#if defined(_NTDDK_) || defined(_NTIFS_)
NTKERNELAPI
VOID
IN SIZE_T Length,
IN ULONG Alignment);
+
#if defined(SINGLE_GROUP_LEGACY_API)
+
NTKERNELAPI
VOID
NTAPI
KAFFINITY
NTAPI
KeQueryActiveProcessors(VOID);
-#endif
+
+
+#endif /* defined(SINGLE_GROUP_LEGACY_API) */
#if !defined(_M_AMD64)
#endif /* (NTDDI_VERSION >= NTDDI_WS03SP1) */
#if (NTDDI_VERSION >= NTDDI_VISTA)
-
NTKERNELAPI
VOID
FASTCALL
OUT PKDPC_WATCHDOG_INFORMATION WatchdogInformation);
#if defined(SINGLE_GROUP_LEGACY_API)
+
NTKERNELAPI
KAFFINITY
NTAPI
#if (NTDDI_VERSION >= NTDDI_WIN7)
+
ULONG64
NTAPI
KeQueryTotalCycleTimeProcess(
/******************************************************************************
* Memory manager Functions *
******************************************************************************/
-
/* Alignment Macros */
#define ALIGN_DOWN_BY(size, align) \
((ULONG_PTR)(size) & ~((ULONG_PTR)(align) - 1))
* IN ULONG Size)
*/
#define BYTES_TO_PAGES(Size) \
- (((Size) >> PAGE_SHIFT) + (((Size) & (PAGE_SIZE - 1)) != 0))
+ (((Size) + PAGE_SIZE - 1) >> PAGE_SHIFT)
/* PVOID
* PAGE_ALIGN(
#endif
#if (NTDDI_VERSION >= NTDDI_VISTA)
+
NTKERNELAPI
LOGICAL
NTAPI
#endif /* SE_NTFS_WORLD_CACHE */
#endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
-
/******************************************************************************
* Configuration Manager Functions *
******************************************************************************/
* I/O Manager Functions *
******************************************************************************/
+
+/*
+ * NTSTATUS
+ * IoAcquireRemoveLock(
+ * IN PIO_REMOVE_LOCK RemoveLock,
+ * IN OPTIONAL PVOID Tag)
+ */
+#if DBG
+#define IoAcquireRemoveLock(RemoveLock, Tag) \
+ IoAcquireRemoveLockEx(RemoveLock, Tag, __FILE__, __LINE__, sizeof (IO_REMOVE_LOCK))
+#else
+#define IoAcquireRemoveLock(RemoveLock, Tag) \
+ IoAcquireRemoveLockEx(RemoveLock, Tag, "", 1, sizeof (IO_REMOVE_LOCK))
+#endif
+
+/*
+ * VOID
+ * IoAdjustPagingPathCount(
+ * IN PLONG Count,
+ * IN BOOLEAN Increment)
+ */
+#define IoAdjustPagingPathCount(_Count, \
+ _Increment) \
+{ \
+ if (_Increment) \
+ { \
+ InterlockedIncrement(_Count); \
+ } \
+ else \
+ { \
+ InterlockedDecrement(_Count); \
+ } \
+}
+
#if !defined(_M_AMD64)
NTHALAPI
VOID
IN PCSTR File,
IN ULONG Line,
IN ULONG RemlockSize);
-
-#endif
-
-/*
- * NTSTATUS
- * IoAcquireRemoveLock(
- * IN PIO_REMOVE_LOCK RemoveLock,
- * IN OPTIONAL PVOID Tag)
- */
-#if DBG
-#define IoAcquireRemoveLock(RemoveLock, Tag) \
- IoAcquireRemoveLockEx(RemoveLock, Tag, __FILE__, __LINE__, sizeof (IO_REMOVE_LOCK))
-#else
-#define IoAcquireRemoveLock(RemoveLock, Tag) \
- IoAcquireRemoveLockEx(RemoveLock, Tag, "", 1, sizeof (IO_REMOVE_LOCK))
-#endif
-
-/*
- * VOID
- * IoAdjustPagingPathCount(
- * IN PLONG Count,
- * IN BOOLEAN Increment)
- */
-#define IoAdjustPagingPathCount(_Count, \
- _Increment) \
-{ \
- if (_Increment) \
- { \
- InterlockedIncrement(_Count); \
- } \
- else \
- { \
- InterlockedDecrement(_Count); \
- } \
-}
-
-#if (NTDDI_VERSION >= NTDDI_WIN2K)
-
NTKERNELAPI
NTSTATUS
NTAPI
#endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */
+
#if (NTDDI_VERSION >= NTDDI_WINXP)
NTKERNELAPI
IN ULONG Version,
IN ULONG ValueBufferSize,
IN PVOID ValueBuffer);
-
#endif /* (NTDDI_VERSION >= NTDDI_WINXP) */
#if (NTDDI_VERSION >= NTDDI_WINXPSP1)
IN PIRP Irp,
IN PIO_CSQ_IRP_CONTEXT Context OPTIONAL,
IN PVOID InsertContext OPTIONAL);
+#endif /* (NTDDI_VERSION >= NTDDI_WS03) */
-#endif
#if (NTDDI_VERSION >= NTDDI_VISTA)
#define PsGetCurrentProcess IoGetCurrentProcess
#if !defined(_PSGETCURRENTTHREAD_)
-
#define _PSGETCURRENTTHREAD_
FORCEINLINE
#if (NTDDI_VERSION >= NTDDI_WIN2K)
+
NTKERNELAPI
NTSTATUS
NTAPI
#endif
+
NTKERNELAPI
NTSTATUS
NTAPI
#if (NTDDI_VERSION >= NTDDI_WINXP)
NTKERNELAPI
NTSTATUS
-DDKCDECLAPI
+__cdecl
WmiTraceMessage(
IN TRACEHANDLE LoggerHandle,
IN ULONG MessageFlags,
/* FIXME: Get va_list from where? */
NTKERNELAPI
NTSTATUS
-DDKCDECLAPI
+__cdecl
WmiTraceMessageVa(
IN TRACEHANDLE LoggerHandle,
IN ULONG MessageFlags,
#ifndef _DBGNT_
ULONG
-DDKCDECLAPI
+__cdecl
DbgPrint(
IN PCSTR Format,
IN ...);
#if (NTDDI_VERSION >= NTDDI_WIN2K)
NTSYSAPI
ULONG
-DDKCDECLAPI
+__cdecl
DbgPrintReturnControlC(
IN PCCH Format,
IN ...);
NTSYSAPI
ULONG
-DDKCDECLAPI
+__cdecl
DbgPrintEx(
IN ULONG ComponentId,
IN ULONG Level,
OUT PVOID OutBuffer,
OUT PULONG OutBufferNeeded OPTIONAL);
#endif
+/* Hardware Abstraction Layer Functions */
#if defined(USE_DMA_MACROS) && !defined(_NTHAL_) && (defined(_NTDDK_) || defined(_NTDRIVER_)) || defined(_WDM_INCLUDED_)
+
+
FORCEINLINE
PVOID
NTAPI
return alignment;
}
+
+
#endif
#ifndef _NTTMAPI_
* ZwXxx Functions *
******************************************************************************/
+
/* Constants */
#define NtCurrentProcess() ( (HANDLE)(LONG_PTR) -1 )
#define ZwCurrentProcess() NtCurrentProcess()
#define NtCurrentThread() ( (HANDLE)(LONG_PTR) -2 )
#define ZwCurrentThread() NtCurrentThread()
+
+
#if (NTDDI_VERSION >= NTDDI_WIN2K)
+
+
NTSYSAPI
NTSTATUS
NTAPI
IN POBJECT_ATTRIBUTES ObjectAttributes,
OUT PFILE_NETWORK_OPEN_INFORMATION FileInformation);
+
#endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */
-#if (NTDDI_VERSION >= NTDDI_WIN2003)
+
+#if (NTDDI_VERSION >= NTDDI_WS03)
NTSYSCALLAPI
NTSTATUS
NTAPI
#endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
+
#if (NTDDI_VERSION >= NTDDI_WIN7)
+
+
NTSYSAPI
NTSTATUS
NTAPI
IN PVOID KeySetInformation,
IN ULONG KeySetInformationLength);
+
#endif /* (NTDDI_VERSION >= NTDDI_WIN7) */
+
/******************************************************************************
* Unsorted *
******************************************************************************/