ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

ntddk.template.h
Go to the documentation of this file.
00001 /*
00002  * ntddk.h
00003  *
00004  * Windows NT Device Driver Kit
00005  *
00006  * This file is part of the ReactOS DDK package.
00007  *
00008  * Contributors:
00009  *   Amine Khaldi
00010  *   Timo Kreuzer (timo.kreuzer@reactos.org)
00011  *
00012  * THIS SOFTWARE IS NOT COPYRIGHTED
00013  *
00014  * This source code is offered for use in the public domain. You may
00015  * use, modify or distribute it freely.
00016  *
00017  * This code is distributed in the hope that it will be useful but
00018  * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
00019  * DISCLAIMED. This includes but is not limited to warranties of
00020  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
00021  *
00022  */
00023 
00024 #pragma once
00025 
00026 #define _NTDDK_
00027 
00028 #if !defined(_NTHAL_) && !defined(_NTIFS_)
00029 #define _NTDDK_INCLUDED_
00030 #define _DDK_DRIVER_
00031 #endif
00032 
00033 /* Dependencies */
00034 
00035 #define NT_INCLUDED
00036 #define _CTYPE_DISABLE_MACROS
00037 
00038 #include <wdm.h>
00039 #include <excpt.h>
00040 #include <ntdef.h>
00041 #include <ntstatus.h>
00042 #include <mce.h>
00043 #include <bugcodes.h>
00044 #include <ntiologc.h>
00045 
00046 #include <stdarg.h> // FIXME
00047 #include <basetyps.h> // FIXME
00048 
00049 
00050 #ifdef __cplusplus
00051 extern "C" {
00052 #endif
00053 
00054 /* GUID and UUID */
00055 #ifndef _NTLSA_IFS_
00056 #ifndef _NTLSA_AUDIT_
00057 #define _NTLSA_AUDIT_
00058 
00059 #ifndef GUID_DEFINED
00060 #include <guiddef.h>
00061 #endif
00062 
00063 #endif /* _NTLSA_AUDIT_ */
00064 #endif /* _NTLSA_IFS_ */
00065 
00066 typedef GUID UUID;
00067 
00068 struct _LOADER_PARAMETER_BLOCK;
00069 struct _CREATE_DISK;
00070 struct _DRIVE_LAYOUT_INFORMATION_EX;
00071 struct _SET_PARTITION_INFORMATION_EX;
00072 
00073 typedef struct _BUS_HANDLER *PBUS_HANDLER;
00074 typedef struct _DEVICE_HANDLER_OBJECT *PDEVICE_HANDLER_OBJECT;
00075 #if defined(_NTHAL_INCLUDED_)
00076 typedef struct _KAFFINITY_EX *PKAFFINITY_EX;
00077 #endif
00078 typedef struct _PEB *PPEB;
00079 
00080 #ifndef _NTIMAGE_
00081 
00082 typedef struct _IMAGE_NT_HEADERS *PIMAGE_NT_HEADERS32;
00083 typedef struct _IMAGE_NT_HEADERS64 *PIMAGE_NT_HEADERS64;
00084 
00085 #ifdef _WIN64
00086 typedef PIMAGE_NT_HEADERS64 PIMAGE_NT_HEADERS;
00087 #else
00088 typedef PIMAGE_NT_HEADERS32 PIMAGE_NT_HEADERS;
00089 #endif
00090 
00091 #endif /* _NTIMAGE_ */
00092 
00093 $define (_NTDDK_)
00094 $include (extypes.h)
00095 $include (iotypes.h)
00096 $include (haltypes.h)
00097 $include (ketypes.h)
00098 $include (kdtypes.h)
00099 $include (mmtypes.h)
00100 $include (pstypes.h)
00101 $include (rtltypes.h)
00102 $include (setypes.h)
00103 
00104 #if defined(_M_IX86)
00105 $include(x86/ke.h)
00106 $include(x86/mm.h)
00107 #elif defined(_M_AMD64)
00108 $include(amd64/ke.h)
00109 $include(amd64/mm.h)
00110 #elif defined(_M_IA64)
00111 $include(ia64/ke.h)
00112 #elif defined(_M_PPC)
00113 $include(ppc/ke.h)
00114 #elif defined(_M_MIPS)
00115 $include(mips/ke.h)
00116 #elif defined(_M_ARM)
00117 $include(arm/ke.h)
00118 #else
00119 #error Unknown Architecture
00120 #endif
00121 
00122 $include (exfuncs.h)
00123 $include (halfuncs.h)
00124 $include (iofuncs.h)
00125 $include (kdfuncs.h)
00126 $include (kefuncs.h)
00127 $include (mmfuncs.h)
00128 $include (psfuncs.h)
00129 $include (rtlfuncs.h)
00130 $include (sefuncs.h)
00131 $include (zwfuncs.h)
00132 
00133 
00134 /* UNSORTED */
00135 
00136 #define VER_SET_CONDITION(ConditionMask, TypeBitMask, ComparisonType) \
00137   ((ConditionMask) = VerSetConditionMask((ConditionMask),             \
00138   (TypeBitMask), (ComparisonType)))
00139 
00140 #if (NTDDI_VERSION >= NTDDI_WIN2K)
00141 NTSYSAPI
00142 ULONGLONG
00143 NTAPI
00144 VerSetConditionMask(
00145   IN ULONGLONG ConditionMask,
00146   IN ULONG TypeMask,
00147   IN UCHAR Condition);
00148 #endif
00149 
00150 typedef struct _KERNEL_USER_TIMES {
00151   LARGE_INTEGER CreateTime;
00152   LARGE_INTEGER ExitTime;
00153   LARGE_INTEGER KernelTime;
00154   LARGE_INTEGER UserTime;
00155 } KERNEL_USER_TIMES, *PKERNEL_USER_TIMES;
00156 
00157 /* NtXxx Functions */
00158 
00159 typedef enum _SYSTEM_FIRMWARE_TABLE_ACTION {
00160   SystemFirmwareTable_Enumerate,
00161   SystemFirmwareTable_Get
00162 } SYSTEM_FIRMWARE_TABLE_ACTION;
00163 
00164 typedef struct _SYSTEM_FIRMWARE_TABLE_INFORMATION {
00165   ULONG ProviderSignature;
00166   SYSTEM_FIRMWARE_TABLE_ACTION Action;
00167   ULONG TableID;
00168   ULONG TableBufferLength;
00169   UCHAR TableBuffer[ANYSIZE_ARRAY];
00170 } SYSTEM_FIRMWARE_TABLE_INFORMATION, *PSYSTEM_FIRMWARE_TABLE_INFORMATION;
00171 
00172 typedef NTSTATUS
00173 (__cdecl *PFNFTH)(
00174   _Inout_ PSYSTEM_FIRMWARE_TABLE_INFORMATION SystemFirmwareTableInfo);
00175 
00176 typedef struct _SYSTEM_FIRMWARE_TABLE_HANDLER {
00177   ULONG ProviderSignature;
00178   BOOLEAN Register;
00179   PFNFTH FirmwareTableHandler;
00180   PVOID DriverObject;
00181 } SYSTEM_FIRMWARE_TABLE_HANDLER, *PSYSTEM_FIRMWARE_TABLE_HANDLER;
00182 
00183 typedef ULONG_PTR
00184 (NTAPI *PDRIVER_VERIFIER_THUNK_ROUTINE)(
00185   _In_ PVOID Context);
00186 
00187 typedef struct _DRIVER_VERIFIER_THUNK_PAIRS {
00188   PDRIVER_VERIFIER_THUNK_ROUTINE PristineRoutine;
00189   PDRIVER_VERIFIER_THUNK_ROUTINE NewRoutine;
00190 } DRIVER_VERIFIER_THUNK_PAIRS, *PDRIVER_VERIFIER_THUNK_PAIRS;
00191 
00192 #define DRIVER_VERIFIER_SPECIAL_POOLING             0x0001
00193 #define DRIVER_VERIFIER_FORCE_IRQL_CHECKING         0x0002
00194 #define DRIVER_VERIFIER_INJECT_ALLOCATION_FAILURES  0x0004
00195 #define DRIVER_VERIFIER_TRACK_POOL_ALLOCATIONS      0x0008
00196 #define DRIVER_VERIFIER_IO_CHECKING                 0x0010
00197 
00198 #define SHARED_GLOBAL_FLAGS_ERROR_PORT_V        0x0
00199 #define SHARED_GLOBAL_FLAGS_ERROR_PORT          (1UL << SHARED_GLOBAL_FLAGS_ERROR_PORT_V)
00200 
00201 #define SHARED_GLOBAL_FLAGS_ELEVATION_ENABLED_V 0x1
00202 #define SHARED_GLOBAL_FLAGS_ELEVATION_ENABLED   (1UL << SHARED_GLOBAL_FLAGS_ELEVATION_ENABLED_V)
00203 
00204 #define SHARED_GLOBAL_FLAGS_VIRT_ENABLED_V      0x2
00205 #define SHARED_GLOBAL_FLAGS_VIRT_ENABLED        (1UL << SHARED_GLOBAL_FLAGS_VIRT_ENABLED_V)
00206 
00207 #define SHARED_GLOBAL_FLAGS_INSTALLER_DETECT_ENABLED_V  0x3
00208 #define SHARED_GLOBAL_FLAGS_INSTALLER_DETECT_ENABLED    \
00209   (1UL << SHARED_GLOBAL_FLAGS_INSTALLER_DETECT_ENABLED_V)
00210 
00211 #define SHARED_GLOBAL_FLAGS_SPARE_V                     0x4
00212 #define SHARED_GLOBAL_FLAGS_SPARE                       \
00213   (1UL << SHARED_GLOBAL_FLAGS_SPARE_V)
00214 
00215 #define SHARED_GLOBAL_FLAGS_DYNAMIC_PROC_ENABLED_V      0x5
00216 #define SHARED_GLOBAL_FLAGS_DYNAMIC_PROC_ENABLED        \
00217   (1UL << SHARED_GLOBAL_FLAGS_DYNAMIC_PROC_ENABLED_V)
00218 
00219 #define SHARED_GLOBAL_FLAGS_SEH_VALIDATION_ENABLED_V    0x6
00220 #define SHARED_GLOBAL_FLAGS_SEH_VALIDATION_ENABLED        \
00221   (1UL << SHARED_GLOBAL_FLAGS_SEH_VALIDATION_ENABLED_V)
00222 
00223 #define EX_INIT_BITS(Flags, Bit) \
00224   *((Flags)) |= (Bit)             // Safe to use before concurrently accessible
00225 
00226 #define EX_TEST_SET_BIT(Flags, Bit) \
00227   InterlockedBitTestAndSet ((PLONG)(Flags), (Bit))
00228 
00229 #define EX_TEST_CLEAR_BIT(Flags, Bit) \
00230   InterlockedBitTestAndReset ((PLONG)(Flags), (Bit))
00231 
00232 #define PCCARD_MAP_ERROR               0x01
00233 #define PCCARD_DEVICE_PCI              0x10
00234 
00235 #define PCCARD_SCAN_DISABLED           0x01
00236 #define PCCARD_MAP_ZERO                0x02
00237 #define PCCARD_NO_TIMER                0x03
00238 #define PCCARD_NO_PIC                  0x04
00239 #define PCCARD_NO_LEGACY_BASE          0x05
00240 #define PCCARD_DUP_LEGACY_BASE         0x06
00241 #define PCCARD_NO_CONTROLLERS          0x07
00242 
00243 #define MAXIMUM_EXPANSION_SIZE (KERNEL_LARGE_STACK_SIZE - (PAGE_SIZE / 2))
00244 
00245 /* Filesystem runtime library routines */
00246 
00247 #if (NTDDI_VERSION >= NTDDI_WIN2K)
00248 _Must_inspect_result_
00249 NTKERNELAPI
00250 BOOLEAN
00251 NTAPI
00252 FsRtlIsTotalDeviceFailure(
00253   _In_ NTSTATUS Status);
00254 #endif
00255 
00256 #ifdef __cplusplus
00257 }
00258 #endif

Generated on Sun May 27 2012 04:33:23 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.