4 * Windows NT Device Driver Kit
6 * This file is part of the ReactOS DDK package.
10 * Timo Kreuzer (timo.kreuzer@reactos.org)
12 * THIS SOFTWARE IS NOT COPYRIGHTED
14 * This source code is offered for use in the public domain. You may
15 * use, modify or distribute it freely.
17 * This code is distributed in the hope that it will be useful but
18 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
19 * DISCLAIMED. This includes but is not limited to warranties of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
28 #if !defined(_NTHAL_) && !defined(_NTIFS_)
29 #define _NTDDK_INCLUDED_
36 #define _CTYPE_DISABLE_MACROS
46 #include <stdarg.h> // FIXME
47 #include <basetyps.h> // FIXME
63 #endif /* _NTLSA_AUDIT_ */
64 #endif /* _NTLSA_IFS_ */
68 struct _LOADER_PARAMETER_BLOCK
;
70 struct _DRIVE_LAYOUT_INFORMATION_EX
;
71 struct _SET_PARTITION_INFORMATION_EX
;
72 struct _DISK_GEOMETRY_EX
;
74 typedef struct _BUS_HANDLER
*PBUS_HANDLER
;
75 typedef struct _DEVICE_HANDLER_OBJECT
*PDEVICE_HANDLER_OBJECT
;
76 #if defined(_NTHAL_INCLUDED_)
77 typedef struct _KAFFINITY_EX
*PKAFFINITY_EX
;
79 typedef struct _PEB
*PPEB
;
83 typedef struct _IMAGE_NT_HEADERS
*PIMAGE_NT_HEADERS32
;
84 typedef struct _IMAGE_NT_HEADERS64
*PIMAGE_NT_HEADERS64
;
87 typedef PIMAGE_NT_HEADERS64 PIMAGE_NT_HEADERS
;
89 typedef PIMAGE_NT_HEADERS32 PIMAGE_NT_HEADERS
;
92 #endif /* _NTIMAGE_ */
103 $
include (rtltypes
.h
)
109 #elif defined(_M_AMD64)
112 #elif defined(_M_IA64)
114 #elif defined(_M_PPC)
116 #elif defined(_M_MIPS)
118 #elif defined(_M_ARM)
122 #error Unknown Architecture
126 $
include (halfuncs
.h
)
132 $
include (rtlfuncs
.h
)
139 #define VER_SET_CONDITION(ConditionMask, TypeBitMask, ComparisonType) \
140 ((ConditionMask) = VerSetConditionMask((ConditionMask), \
141 (TypeBitMask), (ComparisonType)))
143 #if (NTDDI_VERSION >= NTDDI_WIN2K)
148 IN ULONGLONG ConditionMask
,
153 typedef struct _KERNEL_USER_TIMES
{
154 LARGE_INTEGER CreateTime
;
155 LARGE_INTEGER ExitTime
;
156 LARGE_INTEGER KernelTime
;
157 LARGE_INTEGER UserTime
;
158 } KERNEL_USER_TIMES
, *PKERNEL_USER_TIMES
;
160 /* NtXxx Functions */
162 typedef enum _SYSTEM_FIRMWARE_TABLE_ACTION
{
163 SystemFirmwareTable_Enumerate
,
164 SystemFirmwareTable_Get
165 } SYSTEM_FIRMWARE_TABLE_ACTION
;
167 typedef struct _SYSTEM_FIRMWARE_TABLE_INFORMATION
{
168 ULONG ProviderSignature
;
169 SYSTEM_FIRMWARE_TABLE_ACTION Action
;
171 ULONG TableBufferLength
;
172 UCHAR TableBuffer
[ANYSIZE_ARRAY
];
173 } SYSTEM_FIRMWARE_TABLE_INFORMATION
, *PSYSTEM_FIRMWARE_TABLE_INFORMATION
;
177 _Inout_ PSYSTEM_FIRMWARE_TABLE_INFORMATION SystemFirmwareTableInfo
);
179 typedef struct _SYSTEM_FIRMWARE_TABLE_HANDLER
{
180 ULONG ProviderSignature
;
182 PFNFTH FirmwareTableHandler
;
184 } SYSTEM_FIRMWARE_TABLE_HANDLER
, *PSYSTEM_FIRMWARE_TABLE_HANDLER
;
187 (NTAPI
*PDRIVER_VERIFIER_THUNK_ROUTINE
)(
190 typedef struct _DRIVER_VERIFIER_THUNK_PAIRS
{
191 PDRIVER_VERIFIER_THUNK_ROUTINE PristineRoutine
;
192 PDRIVER_VERIFIER_THUNK_ROUTINE NewRoutine
;
193 } DRIVER_VERIFIER_THUNK_PAIRS
, *PDRIVER_VERIFIER_THUNK_PAIRS
;
195 #define DRIVER_VERIFIER_SPECIAL_POOLING 0x0001
196 #define DRIVER_VERIFIER_FORCE_IRQL_CHECKING 0x0002
197 #define DRIVER_VERIFIER_INJECT_ALLOCATION_FAILURES 0x0004
198 #define DRIVER_VERIFIER_TRACK_POOL_ALLOCATIONS 0x0008
199 #define DRIVER_VERIFIER_IO_CHECKING 0x0010
201 #define SHARED_GLOBAL_FLAGS_ERROR_PORT_V 0x0
202 #define SHARED_GLOBAL_FLAGS_ERROR_PORT (1UL << SHARED_GLOBAL_FLAGS_ERROR_PORT_V)
204 #define SHARED_GLOBAL_FLAGS_ELEVATION_ENABLED_V 0x1
205 #define SHARED_GLOBAL_FLAGS_ELEVATION_ENABLED (1UL << SHARED_GLOBAL_FLAGS_ELEVATION_ENABLED_V)
207 #define SHARED_GLOBAL_FLAGS_VIRT_ENABLED_V 0x2
208 #define SHARED_GLOBAL_FLAGS_VIRT_ENABLED (1UL << SHARED_GLOBAL_FLAGS_VIRT_ENABLED_V)
210 #define SHARED_GLOBAL_FLAGS_INSTALLER_DETECT_ENABLED_V 0x3
211 #define SHARED_GLOBAL_FLAGS_INSTALLER_DETECT_ENABLED \
212 (1UL << SHARED_GLOBAL_FLAGS_INSTALLER_DETECT_ENABLED_V)
214 #define SHARED_GLOBAL_FLAGS_SPARE_V 0x4
215 #define SHARED_GLOBAL_FLAGS_SPARE \
216 (1UL << SHARED_GLOBAL_FLAGS_SPARE_V)
218 #define SHARED_GLOBAL_FLAGS_DYNAMIC_PROC_ENABLED_V 0x5
219 #define SHARED_GLOBAL_FLAGS_DYNAMIC_PROC_ENABLED \
220 (1UL << SHARED_GLOBAL_FLAGS_DYNAMIC_PROC_ENABLED_V)
222 #define SHARED_GLOBAL_FLAGS_SEH_VALIDATION_ENABLED_V 0x6
223 #define SHARED_GLOBAL_FLAGS_SEH_VALIDATION_ENABLED \
224 (1UL << SHARED_GLOBAL_FLAGS_SEH_VALIDATION_ENABLED_V)
226 #define EX_INIT_BITS(Flags, Bit) \
227 *((Flags)) |= (Bit) // Safe to use before concurrently accessible
229 #define EX_TEST_SET_BIT(Flags, Bit) \
230 InterlockedBitTestAndSet ((PLONG)(Flags), (Bit))
232 #define EX_TEST_CLEAR_BIT(Flags, Bit) \
233 InterlockedBitTestAndReset ((PLONG)(Flags), (Bit))
235 #define PCCARD_MAP_ERROR 0x01
236 #define PCCARD_DEVICE_PCI 0x10
238 #define PCCARD_SCAN_DISABLED 0x01
239 #define PCCARD_MAP_ZERO 0x02
240 #define PCCARD_NO_TIMER 0x03
241 #define PCCARD_NO_PIC 0x04
242 #define PCCARD_NO_LEGACY_BASE 0x05
243 #define PCCARD_DUP_LEGACY_BASE 0x06
244 #define PCCARD_NO_CONTROLLERS 0x07
246 #define MAXIMUM_EXPANSION_SIZE (KERNEL_LARGE_STACK_SIZE - (PAGE_SIZE / 2))
248 /* Filesystem runtime library routines */
250 #if (NTDDI_VERSION >= NTDDI_WIN2K)
251 _Must_inspect_result_
255 FsRtlIsTotalDeviceFailure(
256 _In_ NTSTATUS Status
);