Committer:
sca8er
Date:
Mon Mar 05 04:56:58 2012 +0000
Revision:
3:0c3bcea5b4d0
Parent:
2:5853bf44af9f

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sca8er 2:5853bf44af9f 1 /*
sca8er 2:5853bf44af9f 2 * winddk.h
sca8er 2:5853bf44af9f 3 *
sca8er 2:5853bf44af9f 4 * Windows Device Driver Kit
sca8er 2:5853bf44af9f 5 *
sca8er 2:5853bf44af9f 6 * This file is part of the w32api package.
sca8er 2:5853bf44af9f 7 *
sca8er 2:5853bf44af9f 8 * Contributors:
sca8er 2:5853bf44af9f 9 * Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
sca8er 2:5853bf44af9f 10 *
sca8er 2:5853bf44af9f 11 * THIS SOFTWARE IS NOT COPYRIGHTED
sca8er 2:5853bf44af9f 12 *
sca8er 2:5853bf44af9f 13 * This source code is offered for use in the public domain. You may
sca8er 2:5853bf44af9f 14 * use, modify or distribute it freely.
sca8er 2:5853bf44af9f 15 *
sca8er 2:5853bf44af9f 16 * This code is distributed in the hope that it will be useful but
sca8er 2:5853bf44af9f 17 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
sca8er 2:5853bf44af9f 18 * DISCLAIMED. This includes but is not limited to warranties of
sca8er 2:5853bf44af9f 19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
sca8er 2:5853bf44af9f 20 *
sca8er 2:5853bf44af9f 21 */
sca8er 2:5853bf44af9f 22
sca8er 2:5853bf44af9f 23 #ifndef __WINDDK_H
sca8er 2:5853bf44af9f 24 #define __WINDDK_H
sca8er 2:5853bf44af9f 25
sca8er 2:5853bf44af9f 26 #if __GNUC__ >= 3
sca8er 2:5853bf44af9f 27 #pragma GCC system_header
sca8er 2:5853bf44af9f 28 #endif
sca8er 2:5853bf44af9f 29
sca8er 2:5853bf44af9f 30 #ifdef __cplusplus
sca8er 2:5853bf44af9f 31 extern "C" {
sca8er 2:5853bf44af9f 32 #endif
sca8er 2:5853bf44af9f 33
sca8er 2:5853bf44af9f 34 /*
sca8er 2:5853bf44af9f 35 ** Definitions specific to this Device Driver Kit
sca8er 2:5853bf44af9f 36 */
sca8er 2:5853bf44af9f 37 #define DDKAPI __stdcall
sca8er 2:5853bf44af9f 38 #define DDKFASTAPI __fastcall
sca8er 2:5853bf44af9f 39 #define DDKCDECLAPI __cdecl
sca8er 2:5853bf44af9f 40
sca8er 2:5853bf44af9f 41 #if defined(_NTOSKRNL_)
sca8er 2:5853bf44af9f 42 #ifndef NTOSAPI
sca8er 2:5853bf44af9f 43 #define NTOSAPI DECL_EXPORT
sca8er 2:5853bf44af9f 44 #endif
sca8er 2:5853bf44af9f 45 #define DECLARE_INTERNAL_OBJECT(x) typedef struct _##x; typedef struct _##x *P##x;
sca8er 2:5853bf44af9f 46 #define DECLARE_INTERNAL_OBJECT2(x,y) typedef struct _##x; typedef struct _##x *P##y;
sca8er 2:5853bf44af9f 47 #else
sca8er 2:5853bf44af9f 48 #ifndef NTOSAPI
sca8er 2:5853bf44af9f 49 #define NTOSAPI DECL_IMPORT
sca8er 2:5853bf44af9f 50 #endif
sca8er 2:5853bf44af9f 51 #define DECLARE_INTERNAL_OBJECT(x) struct _##x; typedef struct _##x *P##x;
sca8er 2:5853bf44af9f 52 #define DECLARE_INTERNAL_OBJECT2(x,y) struct _##x; typedef struct _##x *P##y;
sca8er 2:5853bf44af9f 53 #endif
sca8er 2:5853bf44af9f 54
sca8er 2:5853bf44af9f 55 /* Pseudo modifiers for parameters
sca8er 2:5853bf44af9f 56 We don't use these unnecessary defines in the w32api headers. Define
sca8er 2:5853bf44af9f 57 them by default since that is what people expect, but allow users
sca8er 2:5853bf44af9f 58 to avoid the pollution. */
sca8er 2:5853bf44af9f 59 #ifndef _NO_W32_PSEUDO_MODIFIERS
sca8er 2:5853bf44af9f 60 #define IN
sca8er 2:5853bf44af9f 61 #define OUT
sca8er 2:5853bf44af9f 62 #define OPTIONAL
sca8er 2:5853bf44af9f 63 #define UNALLIGNED
sca8er 2:5853bf44af9f 64 #endif
sca8er 2:5853bf44af9f 65
sca8er 2:5853bf44af9f 66 #define CONST const
sca8er 2:5853bf44af9f 67 #define VOLATILE volatile
sca8er 2:5853bf44af9f 68
sca8er 2:5853bf44af9f 69 #define RESTRICTED_POINTER
sca8er 2:5853bf44af9f 70 #define POINTER_ALIGNMENT
sca8er 2:5853bf44af9f 71
sca8er 2:5853bf44af9f 72 #ifdef NONAMELESSUNION
sca8er 2:5853bf44af9f 73 # define _DDK_DUMMYUNION_MEMBER(name) DUMMYUNIONNAME.name
sca8er 2:5853bf44af9f 74 # define _DDK_DUMMYUNION_N_MEMBER(n, name) DUMMYUNIONNAME##n.name
sca8er 2:5853bf44af9f 75 #else
sca8er 2:5853bf44af9f 76 # define _DDK_DUMMYUNION_MEMBER(name) name
sca8er 2:5853bf44af9f 77 # define _DDK_DUMMYUNION_N_MEMBER(n, name) name
sca8er 2:5853bf44af9f 78 #endif
sca8er 2:5853bf44af9f 79
sca8er 2:5853bf44af9f 80 /*
sca8er 2:5853bf44af9f 81 ** Forward declarations
sca8er 2:5853bf44af9f 82 */
sca8er 2:5853bf44af9f 83
sca8er 2:5853bf44af9f 84 struct _IRP;
sca8er 2:5853bf44af9f 85 struct _MDL;
sca8er 2:5853bf44af9f 86 struct _KAPC;
sca8er 2:5853bf44af9f 87 struct _KDPC;
sca8er 2:5853bf44af9f 88 struct _KPCR;
sca8er 2:5853bf44af9f 89 struct _KPRCB;
sca8er 2:5853bf44af9f 90 struct _KTSS;
sca8er 2:5853bf44af9f 91 struct _FILE_OBJECT;
sca8er 2:5853bf44af9f 92 struct _DMA_ADAPTER;
sca8er 2:5853bf44af9f 93 struct _DEVICE_OBJECT;
sca8er 2:5853bf44af9f 94 struct _DRIVER_OBJECT;
sca8er 2:5853bf44af9f 95 struct _SECTION_OBJECT;
sca8er 2:5853bf44af9f 96 struct _IO_STATUS_BLOCK;
sca8er 2:5853bf44af9f 97 struct _DEVICE_DESCRIPTION;
sca8er 2:5853bf44af9f 98 struct _SCATTER_GATHER_LIST;
sca8er 2:5853bf44af9f 99
sca8er 2:5853bf44af9f 100 DECLARE_INTERNAL_OBJECT(ADAPTER_OBJECT)
sca8er 2:5853bf44af9f 101 DECLARE_INTERNAL_OBJECT(DMA_ADAPTER)
sca8er 2:5853bf44af9f 102 DECLARE_INTERNAL_OBJECT(IO_STATUS_BLOCK)
sca8er 2:5853bf44af9f 103 DECLARE_INTERNAL_OBJECT(SECTION_OBJECT)
sca8er 2:5853bf44af9f 104
sca8er 2:5853bf44af9f 105 #if 1
sca8er 2:5853bf44af9f 106 /* FIXME: Unknown definitions */
sca8er 2:5853bf44af9f 107 struct _SET_PARTITION_INFORMATION_EX;
sca8er 2:5853bf44af9f 108 typedef ULONG WAIT_TYPE;
sca8er 2:5853bf44af9f 109 typedef HANDLE TRACEHANDLE;
sca8er 2:5853bf44af9f 110 typedef PVOID PWMILIB_CONTEXT;
sca8er 2:5853bf44af9f 111 typedef PVOID PSYSCTL_IRP_DISPOSITION;
sca8er 2:5853bf44af9f 112 typedef ULONG LOGICAL;
sca8er 2:5853bf44af9f 113 #endif
sca8er 2:5853bf44af9f 114
sca8er 2:5853bf44af9f 115 /*
sca8er 2:5853bf44af9f 116 ** Routines specific to this DDK
sca8er 2:5853bf44af9f 117 */
sca8er 2:5853bf44af9f 118
sca8er 2:5853bf44af9f 119 #define TAG(_a, _b, _c, _d) (ULONG) \
sca8er 2:5853bf44af9f 120 (((_a) << 0) + ((_b) << 8) + ((_c) << 16) + ((_d) << 24))
sca8er 2:5853bf44af9f 121
sca8er 2:5853bf44af9f 122 #ifdef __GNUC__
sca8er 2:5853bf44af9f 123 static __inline struct _KPCR * KeGetCurrentKPCR(
sca8er 2:5853bf44af9f 124 VOID)
sca8er 2:5853bf44af9f 125 {
sca8er 2:5853bf44af9f 126 ULONG Value;
sca8er 2:5853bf44af9f 127
sca8er 2:5853bf44af9f 128 __asm__ __volatile__ (
sca8er 2:5853bf44af9f 129 #if (__GNUC__ >= 3)
sca8er 2:5853bf44af9f 130 /* support -masm=intel */
sca8er 2:5853bf44af9f 131 "mov{l} {%%fs:0x18, %0|%0, %%fs:0x18}\n\t"
sca8er 2:5853bf44af9f 132 #else
sca8er 2:5853bf44af9f 133 "movl %%fs:0x18, %0\n\t"
sca8er 2:5853bf44af9f 134 #endif
sca8er 2:5853bf44af9f 135 : "=r" (Value)
sca8er 2:5853bf44af9f 136 : /* no inputs */
sca8er 2:5853bf44af9f 137 );
sca8er 2:5853bf44af9f 138 return (struct _KPCR *) Value;
sca8er 2:5853bf44af9f 139 }
sca8er 2:5853bf44af9f 140
sca8er 2:5853bf44af9f 141 #elif defined( __WATCOMC__ )
sca8er 2:5853bf44af9f 142
sca8er 2:5853bf44af9f 143 extern struct _KPCR * KeGetCurrentKPCR( void );
sca8er 2:5853bf44af9f 144 #pragma aux KeGetCurrentKPCR = \
sca8er 2:5853bf44af9f 145 "mov eax, fs:[0x18]" \
sca8er 2:5853bf44af9f 146 value [ eax ];
sca8er 2:5853bf44af9f 147
sca8er 2:5853bf44af9f 148 #endif
sca8er 2:5853bf44af9f 149
sca8er 2:5853bf44af9f 150 /*
sca8er 2:5853bf44af9f 151 ** Simple structures
sca8er 2:5853bf44af9f 152 */
sca8er 2:5853bf44af9f 153
sca8er 2:5853bf44af9f 154 typedef LONG KPRIORITY;
sca8er 2:5853bf44af9f 155 typedef UCHAR KIRQL, *PKIRQL;
sca8er 2:5853bf44af9f 156 typedef ULONG_PTR KSPIN_LOCK, *PKSPIN_LOCK;
sca8er 2:5853bf44af9f 157 typedef ULONG_PTR KAFFINITY, *PKAFFINITY;
sca8er 2:5853bf44af9f 158 typedef CCHAR KPROCESSOR_MODE;
sca8er 2:5853bf44af9f 159
sca8er 2:5853bf44af9f 160 typedef enum _MODE {
sca8er 2:5853bf44af9f 161 KernelMode,
sca8er 2:5853bf44af9f 162 UserMode,
sca8er 2:5853bf44af9f 163 MaximumMode
sca8er 2:5853bf44af9f 164 } MODE;
sca8er 2:5853bf44af9f 165
sca8er 2:5853bf44af9f 166
sca8er 2:5853bf44af9f 167 /* Structures not exposed to drivers */
sca8er 2:5853bf44af9f 168 typedef struct _IO_TIMER *PIO_TIMER;
sca8er 2:5853bf44af9f 169 typedef struct _EPROCESS *PEPROCESS;
sca8er 2:5853bf44af9f 170 typedef struct _ETHREAD *PETHREAD;
sca8er 2:5853bf44af9f 171 typedef struct _KINTERRUPT *PKINTERRUPT;
sca8er 2:5853bf44af9f 172 typedef struct _OBJECT_TYPE *POBJECT_TYPE;
sca8er 2:5853bf44af9f 173 typedef struct _KTHREAD *PKTHREAD, *PRKTHREAD;
sca8er 2:5853bf44af9f 174 typedef struct _COMPRESSED_DATA_INFO *PCOMPRESSED_DATA_INFO;
sca8er 2:5853bf44af9f 175 typedef struct _HAL_DISPATCH_TABLE *PHAL_DISPATCH_TABLE;
sca8er 2:5853bf44af9f 176 typedef struct _HAL_PRIVATE_DISPATCH_TABLE *PHAL_PRIVATE_DISPATCH_TABLE;
sca8er 2:5853bf44af9f 177 typedef struct _DRIVE_LAYOUT_INFORMATION *PDRIVE_LAYOUT_INFORMATION;
sca8er 2:5853bf44af9f 178 typedef struct _DRIVE_LAYOUT_INFORMATION_EX *PDRIVE_LAYOUT_INFORMATION_EX;
sca8er 2:5853bf44af9f 179
sca8er 2:5853bf44af9f 180 /* Constants */
sca8er 2:5853bf44af9f 181 #define MAXIMUM_PROCESSORS 32
sca8er 2:5853bf44af9f 182
sca8er 2:5853bf44af9f 183 #define MAXIMUM_WAIT_OBJECTS 64
sca8er 2:5853bf44af9f 184
sca8er 2:5853bf44af9f 185 #define METHOD_BUFFERED 0
sca8er 2:5853bf44af9f 186 #define METHOD_IN_DIRECT 1
sca8er 2:5853bf44af9f 187 #define METHOD_OUT_DIRECT 2
sca8er 2:5853bf44af9f 188 #define METHOD_NEITHER 3
sca8er 2:5853bf44af9f 189
sca8er 2:5853bf44af9f 190 #define LOW_PRIORITY 0
sca8er 2:5853bf44af9f 191 #define LOW_REALTIME_PRIORITY 16
sca8er 2:5853bf44af9f 192 #define HIGH_PRIORITY 31
sca8er 2:5853bf44af9f 193 #define MAXIMUM_PRIORITY 32
sca8er 2:5853bf44af9f 194
sca8er 2:5853bf44af9f 195 #define FILE_SUPERSEDED 0x00000000
sca8er 2:5853bf44af9f 196 #define FILE_OPENED 0x00000001
sca8er 2:5853bf44af9f 197 #define FILE_CREATED 0x00000002
sca8er 2:5853bf44af9f 198 #define FILE_OVERWRITTEN 0x00000003
sca8er 2:5853bf44af9f 199 #define FILE_EXISTS 0x00000004
sca8er 2:5853bf44af9f 200 #define FILE_DOES_NOT_EXIST 0x00000005
sca8er 2:5853bf44af9f 201
sca8er 2:5853bf44af9f 202 /* also in winnt.h */
sca8er 2:5853bf44af9f 203 #define FILE_LIST_DIRECTORY 0x00000001
sca8er 2:5853bf44af9f 204 #define FILE_READ_DATA 0x00000001
sca8er 2:5853bf44af9f 205 #define FILE_ADD_FILE 0x00000002
sca8er 2:5853bf44af9f 206 #define FILE_WRITE_DATA 0x00000002
sca8er 2:5853bf44af9f 207 #define FILE_ADD_SUBDIRECTORY 0x00000004
sca8er 2:5853bf44af9f 208 #define FILE_APPEND_DATA 0x00000004
sca8er 2:5853bf44af9f 209 #define FILE_CREATE_PIPE_INSTANCE 0x00000004
sca8er 2:5853bf44af9f 210 #define FILE_READ_EA 0x00000008
sca8er 2:5853bf44af9f 211 #define FILE_WRITE_EA 0x00000010
sca8er 2:5853bf44af9f 212 #define FILE_EXECUTE 0x00000020
sca8er 2:5853bf44af9f 213 #define FILE_TRAVERSE 0x00000020
sca8er 2:5853bf44af9f 214 #define FILE_DELETE_CHILD 0x00000040
sca8er 2:5853bf44af9f 215 #define FILE_READ_ATTRIBUTES 0x00000080
sca8er 2:5853bf44af9f 216 #define FILE_WRITE_ATTRIBUTES 0x00000100
sca8er 2:5853bf44af9f 217
sca8er 2:5853bf44af9f 218 #define FILE_SHARE_READ 0x00000001
sca8er 2:5853bf44af9f 219 #define FILE_SHARE_WRITE 0x00000002
sca8er 2:5853bf44af9f 220 #define FILE_SHARE_DELETE 0x00000004
sca8er 2:5853bf44af9f 221 #define FILE_SHARE_VALID_FLAGS 0x00000007
sca8er 2:5853bf44af9f 222
sca8er 2:5853bf44af9f 223 #define FILE_ATTRIBUTE_READONLY 0x00000001
sca8er 2:5853bf44af9f 224 #define FILE_ATTRIBUTE_HIDDEN 0x00000002
sca8er 2:5853bf44af9f 225 #define FILE_ATTRIBUTE_SYSTEM 0x00000004
sca8er 2:5853bf44af9f 226 #define FILE_ATTRIBUTE_DIRECTORY 0x00000010
sca8er 2:5853bf44af9f 227 #define FILE_ATTRIBUTE_ARCHIVE 0x00000020
sca8er 2:5853bf44af9f 228 #define FILE_ATTRIBUTE_DEVICE 0x00000040
sca8er 2:5853bf44af9f 229 #define FILE_ATTRIBUTE_NORMAL 0x00000080
sca8er 2:5853bf44af9f 230 #define FILE_ATTRIBUTE_TEMPORARY 0x00000100
sca8er 2:5853bf44af9f 231 #define FILE_ATTRIBUTE_SPARSE_FILE 0x00000200
sca8er 2:5853bf44af9f 232 #define FILE_ATTRIBUTE_REPARSE_POINT 0x00000400
sca8er 2:5853bf44af9f 233 #define FILE_ATTRIBUTE_COMPRESSED 0x00000800
sca8er 2:5853bf44af9f 234 #define FILE_ATTRIBUTE_OFFLINE 0x00001000
sca8er 2:5853bf44af9f 235 #define FILE_ATTRIBUTE_NOT_CONTENT_INDEXED 0x00002000
sca8er 2:5853bf44af9f 236 #define FILE_ATTRIBUTE_ENCRYPTED 0x00004000
sca8er 2:5853bf44af9f 237 #define FILE_ATTRIBUTE_VIRTUAL 0x00010000
sca8er 2:5853bf44af9f 238
sca8er 2:5853bf44af9f 239 #define FILE_ATTRIBUTE_VALID_FLAGS 0x00017fb7
sca8er 2:5853bf44af9f 240 #define FILE_ATTRIBUTE_VALID_SET_FLAGS 0x000031a7
sca8er 2:5853bf44af9f 241
sca8er 2:5853bf44af9f 242 #define FILE_COPY_STRUCTURED_STORAGE 0x00000041
sca8er 2:5853bf44af9f 243 #define FILE_STRUCTURED_STORAGE 0x00000441
sca8er 2:5853bf44af9f 244
sca8er 2:5853bf44af9f 245 #define FILE_VALID_OPTION_FLAGS 0x00ffffff
sca8er 2:5853bf44af9f 246 #define FILE_VALID_PIPE_OPTION_FLAGS 0x00000032
sca8er 2:5853bf44af9f 247 #define FILE_VALID_MAILSLOT_OPTION_FLAGS 0x00000032
sca8er 2:5853bf44af9f 248 #define FILE_VALID_SET_FLAGS 0x00000036
sca8er 2:5853bf44af9f 249
sca8er 2:5853bf44af9f 250 #define FILE_SUPERSEDE 0x00000000
sca8er 2:5853bf44af9f 251 #define FILE_OPEN 0x00000001
sca8er 2:5853bf44af9f 252 #define FILE_CREATE 0x00000002
sca8er 2:5853bf44af9f 253 #define FILE_OPEN_IF 0x00000003
sca8er 2:5853bf44af9f 254 #define FILE_OVERWRITE 0x00000004
sca8er 2:5853bf44af9f 255 #define FILE_OVERWRITE_IF 0x00000005
sca8er 2:5853bf44af9f 256 #define FILE_MAXIMUM_DISPOSITION 0x00000005
sca8er 2:5853bf44af9f 257
sca8er 2:5853bf44af9f 258 #define FILE_DIRECTORY_FILE 0x00000001
sca8er 2:5853bf44af9f 259 #define FILE_WRITE_THROUGH 0x00000002
sca8er 2:5853bf44af9f 260 #define FILE_SEQUENTIAL_ONLY 0x00000004
sca8er 2:5853bf44af9f 261 #define FILE_NO_INTERMEDIATE_BUFFERING 0x00000008
sca8er 2:5853bf44af9f 262 #define FILE_SYNCHRONOUS_IO_ALERT 0x00000010
sca8er 2:5853bf44af9f 263 #define FILE_SYNCHRONOUS_IO_NONALERT 0x00000020
sca8er 2:5853bf44af9f 264 #define FILE_NON_DIRECTORY_FILE 0x00000040
sca8er 2:5853bf44af9f 265 #define FILE_CREATE_TREE_CONNECTION 0x00000080
sca8er 2:5853bf44af9f 266 #define FILE_COMPLETE_IF_OPLOCKED 0x00000100
sca8er 2:5853bf44af9f 267 #define FILE_NO_EA_KNOWLEDGE 0x00000200
sca8er 2:5853bf44af9f 268 #define FILE_OPEN_FOR_RECOVERY 0x00000400
sca8er 2:5853bf44af9f 269 #define FILE_RANDOM_ACCESS 0x00000800
sca8er 2:5853bf44af9f 270 #define FILE_DELETE_ON_CLOSE 0x00001000
sca8er 2:5853bf44af9f 271 #define FILE_OPEN_BY_FILE_ID 0x00002000
sca8er 2:5853bf44af9f 272 #define FILE_OPEN_FOR_BACKUP_INTENT 0x00004000
sca8er 2:5853bf44af9f 273 #define FILE_NO_COMPRESSION 0x00008000
sca8er 2:5853bf44af9f 274 #define FILE_RESERVE_OPFILTER 0x00100000
sca8er 2:5853bf44af9f 275 #define FILE_OPEN_REPARSE_POINT 0x00200000
sca8er 2:5853bf44af9f 276 #define FILE_OPEN_NO_RECALL 0x00400000
sca8er 2:5853bf44af9f 277 #define FILE_OPEN_FOR_FREE_SPACE_QUERY 0x00800000
sca8er 2:5853bf44af9f 278
sca8er 2:5853bf44af9f 279 #define FILE_ANY_ACCESS 0x00000000
sca8er 2:5853bf44af9f 280 #define FILE_SPECIAL_ACCESS FILE_ANY_ACCESS
sca8er 2:5853bf44af9f 281 #define FILE_READ_ACCESS 0x00000001
sca8er 2:5853bf44af9f 282 #define FILE_WRITE_ACCESS 0x00000002
sca8er 2:5853bf44af9f 283
sca8er 2:5853bf44af9f 284 #define FILE_ALL_ACCESS \
sca8er 2:5853bf44af9f 285 (STANDARD_RIGHTS_REQUIRED | \
sca8er 2:5853bf44af9f 286 SYNCHRONIZE | \
sca8er 2:5853bf44af9f 287 0x1FF)
sca8er 2:5853bf44af9f 288
sca8er 2:5853bf44af9f 289 #define FILE_GENERIC_EXECUTE \
sca8er 2:5853bf44af9f 290 (STANDARD_RIGHTS_EXECUTE | \
sca8er 2:5853bf44af9f 291 FILE_READ_ATTRIBUTES | \
sca8er 2:5853bf44af9f 292 FILE_EXECUTE | \
sca8er 2:5853bf44af9f 293 SYNCHRONIZE)
sca8er 2:5853bf44af9f 294
sca8er 2:5853bf44af9f 295 #define FILE_GENERIC_READ \
sca8er 2:5853bf44af9f 296 (STANDARD_RIGHTS_READ | \
sca8er 2:5853bf44af9f 297 FILE_READ_DATA | \
sca8er 2:5853bf44af9f 298 FILE_READ_ATTRIBUTES | \
sca8er 2:5853bf44af9f 299 FILE_READ_EA | \
sca8er 2:5853bf44af9f 300 SYNCHRONIZE)
sca8er 2:5853bf44af9f 301
sca8er 2:5853bf44af9f 302 #define FILE_GENERIC_WRITE \
sca8er 2:5853bf44af9f 303 (STANDARD_RIGHTS_WRITE | \
sca8er 2:5853bf44af9f 304 FILE_WRITE_DATA | \
sca8er 2:5853bf44af9f 305 FILE_WRITE_ATTRIBUTES | \
sca8er 2:5853bf44af9f 306 FILE_WRITE_EA | \
sca8er 2:5853bf44af9f 307 FILE_APPEND_DATA | \
sca8er 2:5853bf44af9f 308 SYNCHRONIZE)
sca8er 2:5853bf44af9f 309 /* end winnt.h */
sca8er 2:5853bf44af9f 310
sca8er 2:5853bf44af9f 311 #define DIRECTORY_QUERY (0x0001)
sca8er 2:5853bf44af9f 312 #define DIRECTORY_TRAVERSE (0x0002)
sca8er 2:5853bf44af9f 313 #define DIRECTORY_CREATE_OBJECT (0x0004)
sca8er 2:5853bf44af9f 314 #define DIRECTORY_CREATE_SUBDIRECTORY (0x0008)
sca8er 2:5853bf44af9f 315 #define DIRECTORY_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0xF)
sca8er 2:5853bf44af9f 316
sca8er 2:5853bf44af9f 317 /* Exported object types */
sca8er 2:5853bf44af9f 318 extern NTOSAPI POBJECT_TYPE ExDesktopObjectType;
sca8er 2:5853bf44af9f 319 extern NTOSAPI POBJECT_TYPE ExEventObjectType;
sca8er 2:5853bf44af9f 320 extern NTOSAPI POBJECT_TYPE ExSemaphoreObjectType;
sca8er 2:5853bf44af9f 321 extern NTOSAPI POBJECT_TYPE ExWindowStationObjectType;
sca8er 2:5853bf44af9f 322 extern NTOSAPI POBJECT_TYPE IoAdapterObjectType;
sca8er 2:5853bf44af9f 323 extern NTOSAPI ULONG IoDeviceHandlerObjectSize;
sca8er 2:5853bf44af9f 324 extern NTOSAPI POBJECT_TYPE IoDeviceHandlerObjectType;
sca8er 2:5853bf44af9f 325 extern NTOSAPI POBJECT_TYPE IoDeviceObjectType;
sca8er 2:5853bf44af9f 326 extern NTOSAPI POBJECT_TYPE IoDriverObjectType;
sca8er 2:5853bf44af9f 327 extern NTOSAPI POBJECT_TYPE IoFileObjectType;
sca8er 2:5853bf44af9f 328 extern NTOSAPI POBJECT_TYPE LpcPortObjectType;
sca8er 2:5853bf44af9f 329 extern NTOSAPI POBJECT_TYPE MmSectionObjectType;
sca8er 2:5853bf44af9f 330 extern NTOSAPI POBJECT_TYPE SeTokenObjectType;
sca8er 2:5853bf44af9f 331
sca8er 2:5853bf44af9f 332 extern NTOSAPI CCHAR KeNumberProcessors;
sca8er 2:5853bf44af9f 333 extern NTOSAPI PHAL_DISPATCH_TABLE HalDispatchTable;
sca8er 2:5853bf44af9f 334 extern NTOSAPI PHAL_PRIVATE_DISPATCH_TABLE HalPrivateDispatchTable;
sca8er 2:5853bf44af9f 335
sca8er 2:5853bf44af9f 336
sca8er 2:5853bf44af9f 337 /*
sca8er 2:5853bf44af9f 338 ** IRP function codes
sca8er 2:5853bf44af9f 339 */
sca8er 2:5853bf44af9f 340
sca8er 2:5853bf44af9f 341 #define IRP_MJ_CREATE 0x00
sca8er 2:5853bf44af9f 342 #define IRP_MJ_CREATE_NAMED_PIPE 0x01
sca8er 2:5853bf44af9f 343 #define IRP_MJ_CLOSE 0x02
sca8er 2:5853bf44af9f 344 #define IRP_MJ_READ 0x03
sca8er 2:5853bf44af9f 345 #define IRP_MJ_WRITE 0x04
sca8er 2:5853bf44af9f 346 #define IRP_MJ_QUERY_INFORMATION 0x05
sca8er 2:5853bf44af9f 347 #define IRP_MJ_SET_INFORMATION 0x06
sca8er 2:5853bf44af9f 348 #define IRP_MJ_QUERY_EA 0x07
sca8er 2:5853bf44af9f 349 #define IRP_MJ_SET_EA 0x08
sca8er 2:5853bf44af9f 350 #define IRP_MJ_FLUSH_BUFFERS 0x09
sca8er 2:5853bf44af9f 351 #define IRP_MJ_QUERY_VOLUME_INFORMATION 0x0a
sca8er 2:5853bf44af9f 352 #define IRP_MJ_SET_VOLUME_INFORMATION 0x0b
sca8er 2:5853bf44af9f 353 #define IRP_MJ_DIRECTORY_CONTROL 0x0c
sca8er 2:5853bf44af9f 354 #define IRP_MJ_FILE_SYSTEM_CONTROL 0x0d
sca8er 2:5853bf44af9f 355 #define IRP_MJ_DEVICE_CONTROL 0x0e
sca8er 2:5853bf44af9f 356 #define IRP_MJ_INTERNAL_DEVICE_CONTROL 0x0f
sca8er 2:5853bf44af9f 357 #define IRP_MJ_SCSI 0x0f
sca8er 2:5853bf44af9f 358 #define IRP_MJ_SHUTDOWN 0x10
sca8er 2:5853bf44af9f 359 #define IRP_MJ_LOCK_CONTROL 0x11
sca8er 2:5853bf44af9f 360 #define IRP_MJ_CLEANUP 0x12
sca8er 2:5853bf44af9f 361 #define IRP_MJ_CREATE_MAILSLOT 0x13
sca8er 2:5853bf44af9f 362 #define IRP_MJ_QUERY_SECURITY 0x14
sca8er 2:5853bf44af9f 363 #define IRP_MJ_SET_SECURITY 0x15
sca8er 2:5853bf44af9f 364 #define IRP_MJ_POWER 0x16
sca8er 2:5853bf44af9f 365 #define IRP_MJ_SYSTEM_CONTROL 0x17
sca8er 2:5853bf44af9f 366 #define IRP_MJ_DEVICE_CHANGE 0x18
sca8er 2:5853bf44af9f 367 #define IRP_MJ_QUERY_QUOTA 0x19
sca8er 2:5853bf44af9f 368 #define IRP_MJ_SET_QUOTA 0x1a
sca8er 2:5853bf44af9f 369 #define IRP_MJ_PNP 0x1b
sca8er 2:5853bf44af9f 370 #define IRP_MJ_PNP_POWER 0x1b
sca8er 2:5853bf44af9f 371 #define IRP_MJ_MAXIMUM_FUNCTION 0x1b
sca8er 2:5853bf44af9f 372
sca8er 2:5853bf44af9f 373 #define IRP_MN_QUERY_DIRECTORY 0x01
sca8er 2:5853bf44af9f 374 #define IRP_MN_NOTIFY_CHANGE_DIRECTORY 0x02
sca8er 2:5853bf44af9f 375
sca8er 2:5853bf44af9f 376 #define IRP_MN_USER_FS_REQUEST 0x00
sca8er 2:5853bf44af9f 377 #define IRP_MN_MOUNT_VOLUME 0x01
sca8er 2:5853bf44af9f 378 #define IRP_MN_VERIFY_VOLUME 0x02
sca8er 2:5853bf44af9f 379 #define IRP_MN_LOAD_FILE_SYSTEM 0x03
sca8er 2:5853bf44af9f 380 #define IRP_MN_TRACK_LINK 0x04
sca8er 2:5853bf44af9f 381 #define IRP_MN_KERNEL_CALL 0x04
sca8er 2:5853bf44af9f 382
sca8er 2:5853bf44af9f 383 #define IRP_MN_LOCK 0x01
sca8er 2:5853bf44af9f 384 #define IRP_MN_UNLOCK_SINGLE 0x02
sca8er 2:5853bf44af9f 385 #define IRP_MN_UNLOCK_ALL 0x03
sca8er 2:5853bf44af9f 386 #define IRP_MN_UNLOCK_ALL_BY_KEY 0x04
sca8er 2:5853bf44af9f 387
sca8er 2:5853bf44af9f 388 #define IRP_MN_NORMAL 0x00
sca8er 2:5853bf44af9f 389 #define IRP_MN_DPC 0x01
sca8er 2:5853bf44af9f 390 #define IRP_MN_MDL 0x02
sca8er 2:5853bf44af9f 391 #define IRP_MN_COMPLETE 0x04
sca8er 2:5853bf44af9f 392 #define IRP_MN_COMPRESSED 0x08
sca8er 2:5853bf44af9f 393
sca8er 2:5853bf44af9f 394 #define IRP_MN_MDL_DPC (IRP_MN_MDL | IRP_MN_DPC)
sca8er 2:5853bf44af9f 395 #define IRP_MN_COMPLETE_MDL (IRP_MN_COMPLETE | IRP_MN_MDL)
sca8er 2:5853bf44af9f 396 #define IRP_MN_COMPLETE_MDL_DPC (IRP_MN_COMPLETE_MDL | IRP_MN_DPC)
sca8er 2:5853bf44af9f 397
sca8er 2:5853bf44af9f 398 #define IRP_MN_SCSI_CLASS 0x01
sca8er 2:5853bf44af9f 399
sca8er 2:5853bf44af9f 400 #define IRP_MN_START_DEVICE 0x00
sca8er 2:5853bf44af9f 401 #define IRP_MN_QUERY_REMOVE_DEVICE 0x01
sca8er 2:5853bf44af9f 402 #define IRP_MN_REMOVE_DEVICE 0x02
sca8er 2:5853bf44af9f 403 #define IRP_MN_CANCEL_REMOVE_DEVICE 0x03
sca8er 2:5853bf44af9f 404 #define IRP_MN_STOP_DEVICE 0x04
sca8er 2:5853bf44af9f 405 #define IRP_MN_QUERY_STOP_DEVICE 0x05
sca8er 2:5853bf44af9f 406 #define IRP_MN_CANCEL_STOP_DEVICE 0x06
sca8er 2:5853bf44af9f 407
sca8er 2:5853bf44af9f 408 #define IRP_MN_QUERY_DEVICE_RELATIONS 0x07
sca8er 2:5853bf44af9f 409 #define IRP_MN_QUERY_INTERFACE 0x08
sca8er 2:5853bf44af9f 410 #define IRP_MN_QUERY_CAPABILITIES 0x09
sca8er 2:5853bf44af9f 411 #define IRP_MN_QUERY_RESOURCES 0x0A
sca8er 2:5853bf44af9f 412 #define IRP_MN_QUERY_RESOURCE_REQUIREMENTS 0x0B
sca8er 2:5853bf44af9f 413 #define IRP_MN_QUERY_DEVICE_TEXT 0x0C
sca8er 2:5853bf44af9f 414 #define IRP_MN_FILTER_RESOURCE_REQUIREMENTS 0x0D
sca8er 2:5853bf44af9f 415
sca8er 2:5853bf44af9f 416 #define IRP_MN_READ_CONFIG 0x0F
sca8er 2:5853bf44af9f 417 #define IRP_MN_WRITE_CONFIG 0x10
sca8er 2:5853bf44af9f 418 #define IRP_MN_EJECT 0x11
sca8er 2:5853bf44af9f 419 #define IRP_MN_SET_LOCK 0x12
sca8er 2:5853bf44af9f 420 #define IRP_MN_QUERY_ID 0x13
sca8er 2:5853bf44af9f 421 #define IRP_MN_QUERY_PNP_DEVICE_STATE 0x14
sca8er 2:5853bf44af9f 422 #define IRP_MN_QUERY_BUS_INFORMATION 0x15
sca8er 2:5853bf44af9f 423 #define IRP_MN_DEVICE_USAGE_NOTIFICATION 0x16
sca8er 2:5853bf44af9f 424 #define IRP_MN_SURPRISE_REMOVAL 0x17
sca8er 2:5853bf44af9f 425 #define IRP_MN_QUERY_LEGACY_BUS_INFORMATION 0x18
sca8er 2:5853bf44af9f 426
sca8er 2:5853bf44af9f 427 #define IRP_MN_WAIT_WAKE 0x00
sca8er 2:5853bf44af9f 428 #define IRP_MN_POWER_SEQUENCE 0x01
sca8er 2:5853bf44af9f 429 #define IRP_MN_SET_POWER 0x02
sca8er 2:5853bf44af9f 430 #define IRP_MN_QUERY_POWER 0x03
sca8er 2:5853bf44af9f 431
sca8er 2:5853bf44af9f 432 #define IRP_MN_QUERY_ALL_DATA 0x00
sca8er 2:5853bf44af9f 433 #define IRP_MN_QUERY_SINGLE_INSTANCE 0x01
sca8er 2:5853bf44af9f 434 #define IRP_MN_CHANGE_SINGLE_INSTANCE 0x02
sca8er 2:5853bf44af9f 435 #define IRP_MN_CHANGE_SINGLE_ITEM 0x03
sca8er 2:5853bf44af9f 436 #define IRP_MN_ENABLE_EVENTS 0x04
sca8er 2:5853bf44af9f 437 #define IRP_MN_DISABLE_EVENTS 0x05
sca8er 2:5853bf44af9f 438 #define IRP_MN_ENABLE_COLLECTION 0x06
sca8er 2:5853bf44af9f 439 #define IRP_MN_DISABLE_COLLECTION 0x07
sca8er 2:5853bf44af9f 440 #define IRP_MN_REGINFO 0x08
sca8er 2:5853bf44af9f 441 #define IRP_MN_EXECUTE_METHOD 0x09
sca8er 2:5853bf44af9f 442
sca8er 2:5853bf44af9f 443 #define IRP_MN_REGINFO_EX 0x0b
sca8er 2:5853bf44af9f 444
sca8er 2:5853bf44af9f 445 typedef enum _IO_ALLOCATION_ACTION {
sca8er 2:5853bf44af9f 446 KeepObject = 1,
sca8er 2:5853bf44af9f 447 DeallocateObject,
sca8er 2:5853bf44af9f 448 DeallocateObjectKeepRegisters
sca8er 2:5853bf44af9f 449 } IO_ALLOCATION_ACTION, *PIO_ALLOCATION_ACTION;
sca8er 2:5853bf44af9f 450
sca8er 2:5853bf44af9f 451 typedef IO_ALLOCATION_ACTION
sca8er 2:5853bf44af9f 452 (DDKAPI *PDRIVER_CONTROL)(
sca8er 2:5853bf44af9f 453 /*IN*/ struct _DEVICE_OBJECT *DeviceObject,
sca8er 2:5853bf44af9f 454 /*IN*/ struct _IRP *Irp,
sca8er 2:5853bf44af9f 455 /*IN*/ PVOID MapRegisterBase,
sca8er 2:5853bf44af9f 456 /*IN*/ PVOID Context);
sca8er 2:5853bf44af9f 457
sca8er 2:5853bf44af9f 458 typedef VOID
sca8er 2:5853bf44af9f 459 (DDKAPI *PDRIVER_LIST_CONTROL)(
sca8er 2:5853bf44af9f 460 /*IN*/ struct _DEVICE_OBJECT *DeviceObject,
sca8er 2:5853bf44af9f 461 /*IN*/ struct _IRP *Irp,
sca8er 2:5853bf44af9f 462 /*IN*/ struct _SCATTER_GATHER_LIST *ScatterGather,
sca8er 2:5853bf44af9f 463 /*IN*/ PVOID Context);
sca8er 2:5853bf44af9f 464
sca8er 2:5853bf44af9f 465 typedef NTSTATUS
sca8er 2:5853bf44af9f 466 (DDKAPI *PDRIVER_ADD_DEVICE)(
sca8er 2:5853bf44af9f 467 /*IN*/ struct _DRIVER_OBJECT *DriverObject,
sca8er 2:5853bf44af9f 468 /*IN*/ struct _DEVICE_OBJECT *PhysicalDeviceObject);
sca8er 2:5853bf44af9f 469
sca8er 2:5853bf44af9f 470 typedef NTSTATUS
sca8er 2:5853bf44af9f 471 (DDKAPI *PIO_COMPLETION_ROUTINE)(
sca8er 2:5853bf44af9f 472 /*IN*/ struct _DEVICE_OBJECT *DeviceObject,
sca8er 2:5853bf44af9f 473 /*IN*/ struct _IRP *Irp,
sca8er 2:5853bf44af9f 474 /*IN*/ PVOID Context);
sca8er 2:5853bf44af9f 475
sca8er 2:5853bf44af9f 476 typedef VOID
sca8er 2:5853bf44af9f 477 (DDKAPI *PDRIVER_CANCEL)(
sca8er 2:5853bf44af9f 478 /*IN*/ struct _DEVICE_OBJECT *DeviceObject,
sca8er 2:5853bf44af9f 479 /*IN*/ struct _IRP *Irp);
sca8er 2:5853bf44af9f 480
sca8er 2:5853bf44af9f 481 typedef VOID
sca8er 2:5853bf44af9f 482 (DDKAPI *PKDEFERRED_ROUTINE)(
sca8er 2:5853bf44af9f 483 /*IN*/ struct _KDPC *Dpc,
sca8er 2:5853bf44af9f 484 /*IN*/ PVOID DeferredContext,
sca8er 2:5853bf44af9f 485 /*IN*/ PVOID SystemArgument1,
sca8er 2:5853bf44af9f 486 /*IN*/ PVOID SystemArgument2);
sca8er 2:5853bf44af9f 487
sca8er 2:5853bf44af9f 488 typedef NTSTATUS
sca8er 2:5853bf44af9f 489 (DDKAPI *PDRIVER_DISPATCH)(
sca8er 2:5853bf44af9f 490 /*IN*/ struct _DEVICE_OBJECT *DeviceObject,
sca8er 2:5853bf44af9f 491 /*IN*/ struct _IRP *Irp);
sca8er 2:5853bf44af9f 492
sca8er 2:5853bf44af9f 493 typedef VOID
sca8er 2:5853bf44af9f 494 (DDKAPI *PIO_DPC_ROUTINE)(
sca8er 2:5853bf44af9f 495 /*IN*/ struct _KDPC *Dpc,
sca8er 2:5853bf44af9f 496 /*IN*/ struct _DEVICE_OBJECT *DeviceObject,
sca8er 2:5853bf44af9f 497 /*IN*/ struct _IRP *Irp,
sca8er 2:5853bf44af9f 498 /*IN*/ PVOID Context);
sca8er 2:5853bf44af9f 499
sca8er 2:5853bf44af9f 500 typedef NTSTATUS
sca8er 2:5853bf44af9f 501 (DDKAPI *PMM_DLL_INITIALIZE)(
sca8er 2:5853bf44af9f 502 /*IN*/ PUNICODE_STRING RegistryPath);
sca8er 2:5853bf44af9f 503
sca8er 2:5853bf44af9f 504 typedef NTSTATUS
sca8er 2:5853bf44af9f 505 (DDKAPI *PMM_DLL_UNLOAD)(
sca8er 2:5853bf44af9f 506 VOID);
sca8er 2:5853bf44af9f 507
sca8er 2:5853bf44af9f 508 typedef NTSTATUS
sca8er 2:5853bf44af9f 509 (DDKAPI *PDRIVER_ENTRY)(
sca8er 2:5853bf44af9f 510 /*IN*/ struct _DRIVER_OBJECT *DriverObject,
sca8er 2:5853bf44af9f 511 /*IN*/ PUNICODE_STRING RegistryPath);
sca8er 2:5853bf44af9f 512
sca8er 2:5853bf44af9f 513 typedef NTSTATUS
sca8er 2:5853bf44af9f 514 (DDKAPI *PDRIVER_INITIALIZE)(
sca8er 2:5853bf44af9f 515 /*IN*/ struct _DRIVER_OBJECT *DriverObject,
sca8er 2:5853bf44af9f 516 /*IN*/ PUNICODE_STRING RegistryPath);
sca8er 2:5853bf44af9f 517
sca8er 2:5853bf44af9f 518 typedef BOOLEAN
sca8er 2:5853bf44af9f 519 (DDKAPI *PKSERVICE_ROUTINE)(
sca8er 2:5853bf44af9f 520 /*IN*/ struct _KINTERRUPT *Interrupt,
sca8er 2:5853bf44af9f 521 /*IN*/ PVOID ServiceContext);
sca8er 2:5853bf44af9f 522
sca8er 2:5853bf44af9f 523 typedef VOID
sca8er 2:5853bf44af9f 524 (DDKAPI *PIO_TIMER_ROUTINE)(
sca8er 2:5853bf44af9f 525 /*IN*/ struct _DEVICE_OBJECT *DeviceObject,
sca8er 2:5853bf44af9f 526 /*IN*/ PVOID Context);
sca8er 2:5853bf44af9f 527
sca8er 2:5853bf44af9f 528 typedef VOID
sca8er 2:5853bf44af9f 529 (DDKAPI *PDRIVER_REINITIALIZE)(
sca8er 2:5853bf44af9f 530 /*IN*/ struct _DRIVER_OBJECT *DriverObject,
sca8er 2:5853bf44af9f 531 /*IN*/ PVOID Context,
sca8er 2:5853bf44af9f 532 /*IN*/ ULONG Count);
sca8er 2:5853bf44af9f 533
sca8er 2:5853bf44af9f 534 typedef NTSTATUS
sca8er 2:5853bf44af9f 535 (DDKAPI *PDRIVER_STARTIO)(
sca8er 2:5853bf44af9f 536 /*IN*/ struct _DEVICE_OBJECT *DeviceObject,
sca8er 2:5853bf44af9f 537 /*IN*/ struct _IRP *Irp);
sca8er 2:5853bf44af9f 538
sca8er 2:5853bf44af9f 539 typedef BOOLEAN
sca8er 2:5853bf44af9f 540 (DDKAPI *PKSYNCHRONIZE_ROUTINE)(
sca8er 2:5853bf44af9f 541 /*IN*/ PVOID SynchronizeContext);
sca8er 2:5853bf44af9f 542
sca8er 2:5853bf44af9f 543 typedef VOID
sca8er 2:5853bf44af9f 544 (DDKAPI *PDRIVER_UNLOAD)(
sca8er 2:5853bf44af9f 545 /*IN*/ struct _DRIVER_OBJECT *DriverObject);
sca8er 2:5853bf44af9f 546
sca8er 2:5853bf44af9f 547
sca8er 2:5853bf44af9f 548
sca8er 2:5853bf44af9f 549 /*
sca8er 2:5853bf44af9f 550 ** Plug and Play structures
sca8er 2:5853bf44af9f 551 */
sca8er 2:5853bf44af9f 552
sca8er 2:5853bf44af9f 553 typedef VOID DDKAPI
sca8er 2:5853bf44af9f 554 (*PINTERFACE_REFERENCE)(
sca8er 2:5853bf44af9f 555 PVOID Context);
sca8er 2:5853bf44af9f 556
sca8er 2:5853bf44af9f 557 typedef VOID DDKAPI
sca8er 2:5853bf44af9f 558 (*PINTERFACE_DEREFERENCE)(
sca8er 2:5853bf44af9f 559 PVOID Context);
sca8er 2:5853bf44af9f 560
sca8er 2:5853bf44af9f 561 typedef BOOLEAN DDKAPI
sca8er 2:5853bf44af9f 562 (*PTRANSLATE_BUS_ADDRESS)(
sca8er 2:5853bf44af9f 563 /*IN*/ PVOID Context,
sca8er 2:5853bf44af9f 564 /*IN*/ PHYSICAL_ADDRESS BusAddress,
sca8er 2:5853bf44af9f 565 /*IN*/ ULONG Length,
sca8er 2:5853bf44af9f 566 /*IN OUT*/ PULONG AddressSpace,
sca8er 2:5853bf44af9f 567 /*OUT*/ PPHYSICAL_ADDRESS TranslatedAddress);
sca8er 2:5853bf44af9f 568
sca8er 2:5853bf44af9f 569 typedef struct _DMA_ADAPTER* DDKAPI
sca8er 2:5853bf44af9f 570 (*PGET_DMA_ADAPTER)(
sca8er 2:5853bf44af9f 571 /*IN*/ PVOID Context,
sca8er 2:5853bf44af9f 572 /*IN*/ struct _DEVICE_DESCRIPTION *DeviceDescriptor,
sca8er 2:5853bf44af9f 573 /*OUT*/ PULONG NumberOfMapRegisters);
sca8er 2:5853bf44af9f 574
sca8er 2:5853bf44af9f 575 typedef ULONG DDKAPI
sca8er 2:5853bf44af9f 576 (*PGET_SET_DEVICE_DATA)(
sca8er 2:5853bf44af9f 577 /*IN*/ PVOID Context,
sca8er 2:5853bf44af9f 578 /*IN*/ ULONG DataType,
sca8er 2:5853bf44af9f 579 /*IN*/ PVOID Buffer,
sca8er 2:5853bf44af9f 580 /*IN*/ ULONG Offset,
sca8er 2:5853bf44af9f 581 /*IN*/ ULONG Length);
sca8er 2:5853bf44af9f 582
sca8er 2:5853bf44af9f 583 typedef union _POWER_STATE {
sca8er 2:5853bf44af9f 584 SYSTEM_POWER_STATE SystemState;
sca8er 2:5853bf44af9f 585 DEVICE_POWER_STATE DeviceState;
sca8er 2:5853bf44af9f 586 } POWER_STATE, *PPOWER_STATE;
sca8er 2:5853bf44af9f 587
sca8er 2:5853bf44af9f 588 typedef enum _POWER_STATE_TYPE {
sca8er 2:5853bf44af9f 589 SystemPowerState,
sca8er 2:5853bf44af9f 590 DevicePowerState
sca8er 2:5853bf44af9f 591 } POWER_STATE_TYPE, *PPOWER_STATE_TYPE;
sca8er 2:5853bf44af9f 592
sca8er 2:5853bf44af9f 593 typedef struct _BUS_INTERFACE_STANDARD {
sca8er 2:5853bf44af9f 594 USHORT Size;
sca8er 2:5853bf44af9f 595 USHORT Version;
sca8er 2:5853bf44af9f 596 PVOID Context;
sca8er 2:5853bf44af9f 597 PINTERFACE_REFERENCE InterfaceReference;
sca8er 2:5853bf44af9f 598 PINTERFACE_DEREFERENCE InterfaceDereference;
sca8er 2:5853bf44af9f 599 PTRANSLATE_BUS_ADDRESS TranslateBusAddress;
sca8er 2:5853bf44af9f 600 PGET_DMA_ADAPTER GetDmaAdapter;
sca8er 2:5853bf44af9f 601 PGET_SET_DEVICE_DATA SetBusData;
sca8er 2:5853bf44af9f 602 PGET_SET_DEVICE_DATA GetBusData;
sca8er 2:5853bf44af9f 603 } BUS_INTERFACE_STANDARD, *PBUS_INTERFACE_STANDARD;
sca8er 2:5853bf44af9f 604
sca8er 2:5853bf44af9f 605 typedef struct _DEVICE_CAPABILITIES {
sca8er 2:5853bf44af9f 606 USHORT Size;
sca8er 2:5853bf44af9f 607 USHORT Version;
sca8er 2:5853bf44af9f 608 ULONG DeviceD1 : 1;
sca8er 2:5853bf44af9f 609 ULONG DeviceD2 : 1;
sca8er 2:5853bf44af9f 610 ULONG LockSupported : 1;
sca8er 2:5853bf44af9f 611 ULONG EjectSupported : 1;
sca8er 2:5853bf44af9f 612 ULONG Removable : 1;
sca8er 2:5853bf44af9f 613 ULONG DockDevice : 1;
sca8er 2:5853bf44af9f 614 ULONG UniqueID : 1;
sca8er 2:5853bf44af9f 615 ULONG SilentInstall : 1;
sca8er 2:5853bf44af9f 616 ULONG RawDeviceOK : 1;
sca8er 2:5853bf44af9f 617 ULONG SurpriseRemovalOK : 1;
sca8er 2:5853bf44af9f 618 ULONG WakeFromD0 : 1;
sca8er 2:5853bf44af9f 619 ULONG WakeFromD1 : 1;
sca8er 2:5853bf44af9f 620 ULONG WakeFromD2 : 1;
sca8er 2:5853bf44af9f 621 ULONG WakeFromD3 : 1;
sca8er 2:5853bf44af9f 622 ULONG HardwareDisabled : 1;
sca8er 2:5853bf44af9f 623 ULONG NonDynamic : 1;
sca8er 2:5853bf44af9f 624 ULONG WarmEjectSupported : 1;
sca8er 2:5853bf44af9f 625 ULONG NoDisplayInUI : 1;
sca8er 2:5853bf44af9f 626 ULONG Reserved : 14;
sca8er 2:5853bf44af9f 627 ULONG Address;
sca8er 2:5853bf44af9f 628 ULONG UINumber;
sca8er 2:5853bf44af9f 629 DEVICE_POWER_STATE DeviceState[PowerSystemMaximum];
sca8er 2:5853bf44af9f 630 SYSTEM_POWER_STATE SystemWake;
sca8er 2:5853bf44af9f 631 DEVICE_POWER_STATE DeviceWake;
sca8er 2:5853bf44af9f 632 ULONG D1Latency;
sca8er 2:5853bf44af9f 633 ULONG D2Latency;
sca8er 2:5853bf44af9f 634 ULONG D3Latency;
sca8er 2:5853bf44af9f 635 } DEVICE_CAPABILITIES, *PDEVICE_CAPABILITIES;
sca8er 2:5853bf44af9f 636
sca8er 2:5853bf44af9f 637 typedef struct _DEVICE_INTERFACE_CHANGE_NOTIFICATION {
sca8er 2:5853bf44af9f 638 USHORT Version;
sca8er 2:5853bf44af9f 639 USHORT Size;
sca8er 2:5853bf44af9f 640 GUID Event;
sca8er 2:5853bf44af9f 641 GUID InterfaceClassGuid;
sca8er 2:5853bf44af9f 642 PUNICODE_STRING SymbolicLinkName;
sca8er 2:5853bf44af9f 643 } DEVICE_INTERFACE_CHANGE_NOTIFICATION, *PDEVICE_INTERFACE_CHANGE_NOTIFICATION;
sca8er 2:5853bf44af9f 644
sca8er 2:5853bf44af9f 645 typedef struct _HWPROFILE_CHANGE_NOTIFICATION {
sca8er 2:5853bf44af9f 646 USHORT Version;
sca8er 2:5853bf44af9f 647 USHORT Size;
sca8er 2:5853bf44af9f 648 GUID Event;
sca8er 2:5853bf44af9f 649 } HWPROFILE_CHANGE_NOTIFICATION, *PHWPROFILE_CHANGE_NOTIFICATION;
sca8er 2:5853bf44af9f 650
sca8er 2:5853bf44af9f 651 #undef INTERFACE
sca8er 2:5853bf44af9f 652
sca8er 2:5853bf44af9f 653 typedef struct _INTERFACE {
sca8er 2:5853bf44af9f 654 USHORT Size;
sca8er 2:5853bf44af9f 655 USHORT Version;
sca8er 2:5853bf44af9f 656 PVOID Context;
sca8er 2:5853bf44af9f 657 PINTERFACE_REFERENCE InterfaceReference;
sca8er 2:5853bf44af9f 658 PINTERFACE_DEREFERENCE InterfaceDereference;
sca8er 2:5853bf44af9f 659 } INTERFACE, *PINTERFACE;
sca8er 2:5853bf44af9f 660
sca8er 2:5853bf44af9f 661 typedef struct _PLUGPLAY_NOTIFICATION_HEADER {
sca8er 2:5853bf44af9f 662 USHORT Version;
sca8er 2:5853bf44af9f 663 USHORT Size;
sca8er 2:5853bf44af9f 664 GUID Event;
sca8er 2:5853bf44af9f 665 } PLUGPLAY_NOTIFICATION_HEADER, *PPLUGPLAY_NOTIFICATION_HEADER;
sca8er 2:5853bf44af9f 666
sca8er 2:5853bf44af9f 667 typedef ULONG PNP_DEVICE_STATE, *PPNP_DEVICE_STATE;
sca8er 2:5853bf44af9f 668
sca8er 2:5853bf44af9f 669 /* PNP_DEVICE_STATE */
sca8er 2:5853bf44af9f 670
sca8er 2:5853bf44af9f 671 #define PNP_DEVICE_DISABLED 0x00000001
sca8er 2:5853bf44af9f 672 #define PNP_DEVICE_DONT_DISPLAY_IN_UI 0x00000002
sca8er 2:5853bf44af9f 673 #define PNP_DEVICE_FAILED 0x00000004
sca8er 2:5853bf44af9f 674 #define PNP_DEVICE_REMOVED 0x00000008
sca8er 2:5853bf44af9f 675 #define PNP_DEVICE_RESOURCE_REQUIREMENTS_CHANGED 0x00000010
sca8er 2:5853bf44af9f 676 #define PNP_DEVICE_NOT_DISABLEABLE 0x00000020
sca8er 2:5853bf44af9f 677
sca8er 2:5853bf44af9f 678 typedef struct _TARGET_DEVICE_CUSTOM_NOTIFICATION {
sca8er 2:5853bf44af9f 679 USHORT Version;
sca8er 2:5853bf44af9f 680 USHORT Size;
sca8er 2:5853bf44af9f 681 GUID Event;
sca8er 2:5853bf44af9f 682 struct _FILE_OBJECT *FileObject;
sca8er 2:5853bf44af9f 683 LONG NameBufferOffset;
sca8er 2:5853bf44af9f 684 UCHAR CustomDataBuffer[1];
sca8er 2:5853bf44af9f 685 } TARGET_DEVICE_CUSTOM_NOTIFICATION, *PTARGET_DEVICE_CUSTOM_NOTIFICATION;
sca8er 2:5853bf44af9f 686
sca8er 2:5853bf44af9f 687 typedef struct _TARGET_DEVICE_REMOVAL_NOTIFICATION {
sca8er 2:5853bf44af9f 688 USHORT Version;
sca8er 2:5853bf44af9f 689 USHORT Size;
sca8er 2:5853bf44af9f 690 GUID Event;
sca8er 2:5853bf44af9f 691 struct _FILE_OBJECT *FileObject;
sca8er 2:5853bf44af9f 692 } TARGET_DEVICE_REMOVAL_NOTIFICATION, *PTARGET_DEVICE_REMOVAL_NOTIFICATION;
sca8er 2:5853bf44af9f 693
sca8er 2:5853bf44af9f 694 typedef enum _BUS_QUERY_ID_TYPE {
sca8er 2:5853bf44af9f 695 BusQueryDeviceID,
sca8er 2:5853bf44af9f 696 BusQueryHardwareIDs,
sca8er 2:5853bf44af9f 697 BusQueryCompatibleIDs,
sca8er 2:5853bf44af9f 698 BusQueryInstanceID,
sca8er 2:5853bf44af9f 699 BusQueryDeviceSerialNumber
sca8er 2:5853bf44af9f 700 } BUS_QUERY_ID_TYPE, *PBUS_QUERY_ID_TYPE;
sca8er 2:5853bf44af9f 701
sca8er 2:5853bf44af9f 702 typedef enum _DEVICE_TEXT_TYPE {
sca8er 2:5853bf44af9f 703 DeviceTextDescription,
sca8er 2:5853bf44af9f 704 DeviceTextLocationInformation
sca8er 2:5853bf44af9f 705 } DEVICE_TEXT_TYPE, *PDEVICE_TEXT_TYPE;
sca8er 2:5853bf44af9f 706
sca8er 2:5853bf44af9f 707 typedef enum _DEVICE_USAGE_NOTIFICATION_TYPE {
sca8er 2:5853bf44af9f 708 DeviceUsageTypeUndefined,
sca8er 2:5853bf44af9f 709 DeviceUsageTypePaging,
sca8er 2:5853bf44af9f 710 DeviceUsageTypeHibernation,
sca8er 2:5853bf44af9f 711 DeviceUsageTypeDumpFile
sca8er 2:5853bf44af9f 712 } DEVICE_USAGE_NOTIFICATION_TYPE;
sca8er 2:5853bf44af9f 713
sca8er 2:5853bf44af9f 714 typedef struct _POWER_SEQUENCE {
sca8er 2:5853bf44af9f 715 ULONG SequenceD1;
sca8er 2:5853bf44af9f 716 ULONG SequenceD2;
sca8er 2:5853bf44af9f 717 ULONG SequenceD3;
sca8er 2:5853bf44af9f 718 } POWER_SEQUENCE, *PPOWER_SEQUENCE;
sca8er 2:5853bf44af9f 719
sca8er 2:5853bf44af9f 720 typedef enum {
sca8er 2:5853bf44af9f 721 DevicePropertyDeviceDescription,
sca8er 2:5853bf44af9f 722 DevicePropertyHardwareID,
sca8er 2:5853bf44af9f 723 DevicePropertyCompatibleIDs,
sca8er 2:5853bf44af9f 724 DevicePropertyBootConfiguration,
sca8er 2:5853bf44af9f 725 DevicePropertyBootConfigurationTranslated,
sca8er 2:5853bf44af9f 726 DevicePropertyClassName,
sca8er 2:5853bf44af9f 727 DevicePropertyClassGuid,
sca8er 2:5853bf44af9f 728 DevicePropertyDriverKeyName,
sca8er 2:5853bf44af9f 729 DevicePropertyManufacturer,
sca8er 2:5853bf44af9f 730 DevicePropertyFriendlyName,
sca8er 2:5853bf44af9f 731 DevicePropertyLocationInformation,
sca8er 2:5853bf44af9f 732 DevicePropertyPhysicalDeviceObjectName,
sca8er 2:5853bf44af9f 733 DevicePropertyBusTypeGuid,
sca8er 2:5853bf44af9f 734 DevicePropertyLegacyBusType,
sca8er 2:5853bf44af9f 735 DevicePropertyBusNumber,
sca8er 2:5853bf44af9f 736 DevicePropertyEnumeratorName,
sca8er 2:5853bf44af9f 737 DevicePropertyAddress,
sca8er 2:5853bf44af9f 738 DevicePropertyUINumber,
sca8er 2:5853bf44af9f 739 DevicePropertyInstallState,
sca8er 2:5853bf44af9f 740 DevicePropertyRemovalPolicy
sca8er 2:5853bf44af9f 741 } DEVICE_REGISTRY_PROPERTY;
sca8er 2:5853bf44af9f 742
sca8er 2:5853bf44af9f 743 typedef enum _IO_NOTIFICATION_EVENT_CATEGORY {
sca8er 2:5853bf44af9f 744 EventCategoryReserved,
sca8er 2:5853bf44af9f 745 EventCategoryHardwareProfileChange,
sca8er 2:5853bf44af9f 746 EventCategoryDeviceInterfaceChange,
sca8er 2:5853bf44af9f 747 EventCategoryTargetDeviceChange
sca8er 2:5853bf44af9f 748 } IO_NOTIFICATION_EVENT_CATEGORY;
sca8er 2:5853bf44af9f 749
sca8er 2:5853bf44af9f 750 #define PNPNOTIFY_DEVICE_INTERFACE_INCLUDE_EXISTING_INTERFACES 0x00000001
sca8er 2:5853bf44af9f 751
sca8er 2:5853bf44af9f 752 typedef NTSTATUS DDKAPI
sca8er 2:5853bf44af9f 753 (*PDRIVER_NOTIFICATION_CALLBACK_ROUTINE)(
sca8er 2:5853bf44af9f 754 /*IN*/ PVOID NotificationStructure,
sca8er 2:5853bf44af9f 755 /*IN*/ PVOID Context);
sca8er 2:5853bf44af9f 756
sca8er 2:5853bf44af9f 757 typedef VOID DDKAPI
sca8er 2:5853bf44af9f 758 (*PDEVICE_CHANGE_COMPLETE_CALLBACK)(
sca8er 2:5853bf44af9f 759 /*IN*/ PVOID Context);
sca8er 2:5853bf44af9f 760
sca8er 2:5853bf44af9f 761
sca8er 2:5853bf44af9f 762
sca8er 2:5853bf44af9f 763 /*
sca8er 2:5853bf44af9f 764 ** System structures
sca8er 2:5853bf44af9f 765 */
sca8er 2:5853bf44af9f 766
sca8er 2:5853bf44af9f 767 #define SYMBOLIC_LINK_QUERY 0x0001
sca8er 2:5853bf44af9f 768 #define SYMBOLIC_LINK_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0x1)
sca8er 2:5853bf44af9f 769
sca8er 2:5853bf44af9f 770 /* also in winnt,h */
sca8er 2:5853bf44af9f 771 #define DUPLICATE_CLOSE_SOURCE 0x00000001
sca8er 2:5853bf44af9f 772 #define DUPLICATE_SAME_ACCESS 0x00000002
sca8er 2:5853bf44af9f 773 #define DUPLICATE_SAME_ATTRIBUTES 0x00000004
sca8er 2:5853bf44af9f 774 /* end winnt.h */
sca8er 2:5853bf44af9f 775
sca8er 2:5853bf44af9f 776 typedef struct _OBJECT_NAME_INFORMATION {
sca8er 2:5853bf44af9f 777 UNICODE_STRING Name;
sca8er 2:5853bf44af9f 778 } OBJECT_NAME_INFORMATION, *POBJECT_NAME_INFORMATION;
sca8er 2:5853bf44af9f 779
sca8er 2:5853bf44af9f 780 typedef VOID DDKAPI
sca8er 2:5853bf44af9f 781 (*PIO_APC_ROUTINE)(
sca8er 2:5853bf44af9f 782 /*IN*/ PVOID ApcContext,
sca8er 2:5853bf44af9f 783 /*IN*/ PIO_STATUS_BLOCK IoStatusBlock,
sca8er 2:5853bf44af9f 784 /*IN*/ ULONG Reserved);
sca8er 2:5853bf44af9f 785
sca8er 2:5853bf44af9f 786 typedef struct _IO_STATUS_BLOCK {
sca8er 2:5853bf44af9f 787 _ANONYMOUS_UNION union {
sca8er 2:5853bf44af9f 788 NTSTATUS Status;
sca8er 2:5853bf44af9f 789 PVOID Pointer;
sca8er 2:5853bf44af9f 790 } DUMMYUNIONNAME;
sca8er 2:5853bf44af9f 791 ULONG_PTR Information;
sca8er 2:5853bf44af9f 792 } IO_STATUS_BLOCK;
sca8er 2:5853bf44af9f 793
sca8er 2:5853bf44af9f 794 typedef VOID DDKAPI
sca8er 2:5853bf44af9f 795 (*PKNORMAL_ROUTINE)(
sca8er 2:5853bf44af9f 796 /*IN*/ PVOID NormalContext,
sca8er 2:5853bf44af9f 797 /*IN*/ PVOID SystemArgument1,
sca8er 2:5853bf44af9f 798 /*IN*/ PVOID SystemArgument2);
sca8er 2:5853bf44af9f 799
sca8er 2:5853bf44af9f 800 typedef VOID DDKAPI
sca8er 2:5853bf44af9f 801 (*PKKERNEL_ROUTINE)(
sca8er 2:5853bf44af9f 802 /*IN*/ struct _KAPC *Apc,
sca8er 2:5853bf44af9f 803 /*IN OUT*/ PKNORMAL_ROUTINE *NormalRoutine,
sca8er 2:5853bf44af9f 804 /*IN OUT*/ PVOID *NormalContext,
sca8er 2:5853bf44af9f 805 /*IN OUT*/ PVOID *SystemArgument1,
sca8er 2:5853bf44af9f 806 /*IN OUT*/ PVOID *SystemArgument2);
sca8er 2:5853bf44af9f 807
sca8er 2:5853bf44af9f 808 typedef VOID DDKAPI
sca8er 2:5853bf44af9f 809 (*PKRUNDOWN_ROUTINE)(
sca8er 2:5853bf44af9f 810 /*IN*/ struct _KAPC *Apc);
sca8er 2:5853bf44af9f 811
sca8er 2:5853bf44af9f 812 typedef BOOLEAN DDKAPI
sca8er 2:5853bf44af9f 813 (*PKTRANSFER_ROUTINE)(
sca8er 2:5853bf44af9f 814 VOID);
sca8er 2:5853bf44af9f 815
sca8er 2:5853bf44af9f 816 typedef struct _KAPC {
sca8er 2:5853bf44af9f 817 CSHORT Type;
sca8er 2:5853bf44af9f 818 CSHORT Size;
sca8er 2:5853bf44af9f 819 ULONG Spare0;
sca8er 2:5853bf44af9f 820 struct _KTHREAD *Thread;
sca8er 2:5853bf44af9f 821 LIST_ENTRY ApcListEntry;
sca8er 2:5853bf44af9f 822 PKKERNEL_ROUTINE KernelRoutine;
sca8er 2:5853bf44af9f 823 PKRUNDOWN_ROUTINE RundownRoutine;
sca8er 2:5853bf44af9f 824 PKNORMAL_ROUTINE NormalRoutine;
sca8er 2:5853bf44af9f 825 PVOID NormalContext;
sca8er 2:5853bf44af9f 826 PVOID SystemArgument1;
sca8er 2:5853bf44af9f 827 PVOID SystemArgument2;
sca8er 2:5853bf44af9f 828 CCHAR ApcStateIndex;
sca8er 2:5853bf44af9f 829 KPROCESSOR_MODE ApcMode;
sca8er 2:5853bf44af9f 830 BOOLEAN Inserted;
sca8er 2:5853bf44af9f 831 } KAPC, *PKAPC, *RESTRICTED_POINTER PRKAPC;
sca8er 2:5853bf44af9f 832
sca8er 2:5853bf44af9f 833 typedef struct _KDEVICE_QUEUE {
sca8er 2:5853bf44af9f 834 CSHORT Type;
sca8er 2:5853bf44af9f 835 CSHORT Size;
sca8er 2:5853bf44af9f 836 LIST_ENTRY DeviceListHead;
sca8er 2:5853bf44af9f 837 KSPIN_LOCK Lock;
sca8er 2:5853bf44af9f 838 BOOLEAN Busy;
sca8er 2:5853bf44af9f 839 } KDEVICE_QUEUE, *PKDEVICE_QUEUE, *RESTRICTED_POINTER PRKDEVICE_QUEUE;
sca8er 2:5853bf44af9f 840
sca8er 2:5853bf44af9f 841 typedef struct _KDEVICE_QUEUE_ENTRY {
sca8er 2:5853bf44af9f 842 LIST_ENTRY DeviceListEntry;
sca8er 2:5853bf44af9f 843 ULONG SortKey;
sca8er 2:5853bf44af9f 844 BOOLEAN Inserted;
sca8er 2:5853bf44af9f 845 } KDEVICE_QUEUE_ENTRY, *PKDEVICE_QUEUE_ENTRY,
sca8er 2:5853bf44af9f 846 *RESTRICTED_POINTER PRKDEVICE_QUEUE_ENTRY;
sca8er 2:5853bf44af9f 847
sca8er 2:5853bf44af9f 848 #define LOCK_QUEUE_WAIT 1
sca8er 2:5853bf44af9f 849 #define LOCK_QUEUE_OWNER 2
sca8er 2:5853bf44af9f 850
sca8er 2:5853bf44af9f 851 typedef enum _KSPIN_LOCK_QUEUE_NUMBER {
sca8er 2:5853bf44af9f 852 LockQueueDispatcherLock,
sca8er 2:5853bf44af9f 853 LockQueueContextSwapLock,
sca8er 2:5853bf44af9f 854 LockQueuePfnLock,
sca8er 2:5853bf44af9f 855 LockQueueSystemSpaceLock,
sca8er 2:5853bf44af9f 856 LockQueueVacbLock,
sca8er 2:5853bf44af9f 857 LockQueueMasterLock,
sca8er 2:5853bf44af9f 858 LockQueueNonPagedPoolLock,
sca8er 2:5853bf44af9f 859 LockQueueIoCancelLock,
sca8er 2:5853bf44af9f 860 LockQueueWorkQueueLock,
sca8er 2:5853bf44af9f 861 LockQueueIoVpbLock,
sca8er 2:5853bf44af9f 862 LockQueueIoDatabaseLock,
sca8er 2:5853bf44af9f 863 LockQueueIoCompletionLock,
sca8er 2:5853bf44af9f 864 LockQueueNtfsStructLock,
sca8er 2:5853bf44af9f 865 LockQueueAfdWorkQueueLock,
sca8er 2:5853bf44af9f 866 LockQueueBcbLock,
sca8er 2:5853bf44af9f 867 LockQueueMaximumLock
sca8er 2:5853bf44af9f 868 } KSPIN_LOCK_QUEUE_NUMBER, *PKSPIN_LOCK_QUEUE_NUMBER;
sca8er 2:5853bf44af9f 869
sca8er 2:5853bf44af9f 870 typedef struct _KSPIN_LOCK_QUEUE {
sca8er 2:5853bf44af9f 871 struct _KSPIN_LOCK_QUEUE *VOLATILE Next;
sca8er 2:5853bf44af9f 872 PKSPIN_LOCK VOLATILE Lock;
sca8er 2:5853bf44af9f 873 } KSPIN_LOCK_QUEUE, *PKSPIN_LOCK_QUEUE;
sca8er 2:5853bf44af9f 874
sca8er 2:5853bf44af9f 875 typedef struct _KLOCK_QUEUE_HANDLE {
sca8er 2:5853bf44af9f 876 KSPIN_LOCK_QUEUE LockQueue;
sca8er 2:5853bf44af9f 877 KIRQL OldIrql;
sca8er 2:5853bf44af9f 878 } KLOCK_QUEUE_HANDLE, *PKLOCK_QUEUE_HANDLE;
sca8er 2:5853bf44af9f 879
sca8er 2:5853bf44af9f 880 typedef struct _KDPC {
sca8er 2:5853bf44af9f 881 CSHORT Type;
sca8er 2:5853bf44af9f 882 UCHAR Number;
sca8er 2:5853bf44af9f 883 UCHAR Importance;
sca8er 2:5853bf44af9f 884 LIST_ENTRY DpcListEntry;
sca8er 2:5853bf44af9f 885 PKDEFERRED_ROUTINE DeferredRoutine;
sca8er 2:5853bf44af9f 886 PVOID DeferredContext;
sca8er 2:5853bf44af9f 887 PVOID SystemArgument1;
sca8er 2:5853bf44af9f 888 PVOID SystemArgument2;
sca8er 2:5853bf44af9f 889 PULONG_PTR Lock;
sca8er 2:5853bf44af9f 890 } KDPC, *PKDPC, *RESTRICTED_POINTER PRKDPC;
sca8er 2:5853bf44af9f 891
sca8er 2:5853bf44af9f 892 typedef struct _WAIT_CONTEXT_BLOCK {
sca8er 2:5853bf44af9f 893 KDEVICE_QUEUE_ENTRY WaitQueueEntry;
sca8er 2:5853bf44af9f 894 struct _DRIVER_CONTROL *DeviceRoutine;
sca8er 2:5853bf44af9f 895 PVOID DeviceContext;
sca8er 2:5853bf44af9f 896 ULONG NumberOfMapRegisters;
sca8er 2:5853bf44af9f 897 PVOID DeviceObject;
sca8er 2:5853bf44af9f 898 PVOID CurrentIrp;
sca8er 2:5853bf44af9f 899 PKDPC BufferChainingDpc;
sca8er 2:5853bf44af9f 900 } WAIT_CONTEXT_BLOCK, *PWAIT_CONTEXT_BLOCK;
sca8er 2:5853bf44af9f 901
sca8er 2:5853bf44af9f 902 typedef struct _DISPATCHER_HEADER {
sca8er 2:5853bf44af9f 903 UCHAR Type;
sca8er 2:5853bf44af9f 904 UCHAR Absolute;
sca8er 2:5853bf44af9f 905 UCHAR Size;
sca8er 2:5853bf44af9f 906 UCHAR Inserted;
sca8er 2:5853bf44af9f 907 LONG SignalState;
sca8er 2:5853bf44af9f 908 LIST_ENTRY WaitListHead;
sca8er 2:5853bf44af9f 909 } DISPATCHER_HEADER, *PDISPATCHER_HEADER;
sca8er 2:5853bf44af9f 910
sca8er 2:5853bf44af9f 911 typedef struct _KEVENT {
sca8er 2:5853bf44af9f 912 DISPATCHER_HEADER Header;
sca8er 2:5853bf44af9f 913 } KEVENT, *PKEVENT, *RESTRICTED_POINTER PRKEVENT;
sca8er 2:5853bf44af9f 914
sca8er 2:5853bf44af9f 915 typedef struct _KSEMAPHORE {
sca8er 2:5853bf44af9f 916 DISPATCHER_HEADER Header;
sca8er 2:5853bf44af9f 917 LONG Limit;
sca8er 2:5853bf44af9f 918 } KSEMAPHORE, *PKSEMAPHORE, *RESTRICTED_POINTER PRKSEMAPHORE;
sca8er 2:5853bf44af9f 919
sca8er 2:5853bf44af9f 920 typedef struct _FAST_MUTEX {
sca8er 2:5853bf44af9f 921 LONG Count;
sca8er 2:5853bf44af9f 922 struct _KTHREAD *Owner;
sca8er 2:5853bf44af9f 923 ULONG Contention;
sca8er 2:5853bf44af9f 924 KEVENT Event;
sca8er 2:5853bf44af9f 925 ULONG OldIrql;
sca8er 2:5853bf44af9f 926 } FAST_MUTEX, *PFAST_MUTEX;
sca8er 2:5853bf44af9f 927
sca8er 2:5853bf44af9f 928 typedef struct _KTIMER {
sca8er 2:5853bf44af9f 929 DISPATCHER_HEADER Header;
sca8er 2:5853bf44af9f 930 ULARGE_INTEGER DueTime;
sca8er 2:5853bf44af9f 931 LIST_ENTRY TimerListEntry;
sca8er 2:5853bf44af9f 932 struct _KDPC *Dpc;
sca8er 2:5853bf44af9f 933 LONG Period;
sca8er 2:5853bf44af9f 934 } KTIMER, *PKTIMER, *RESTRICTED_POINTER PRKTIMER;
sca8er 2:5853bf44af9f 935
sca8er 2:5853bf44af9f 936 typedef struct _KMUTANT {
sca8er 2:5853bf44af9f 937 DISPATCHER_HEADER Header;
sca8er 2:5853bf44af9f 938 LIST_ENTRY MutantListEntry;
sca8er 2:5853bf44af9f 939 struct _KTHREAD *RESTRICTED_POINTER OwnerThread;
sca8er 2:5853bf44af9f 940 BOOLEAN Abandoned;
sca8er 2:5853bf44af9f 941 UCHAR ApcDisable;
sca8er 2:5853bf44af9f 942 } KMUTANT, *PKMUTANT, *RESTRICTED_POINTER PRKMUTANT, KMUTEX, *PKMUTEX, *RESTRICTED_POINTER PRKMUTEX;
sca8er 2:5853bf44af9f 943
sca8er 2:5853bf44af9f 944 typedef enum _TIMER_TYPE {
sca8er 2:5853bf44af9f 945 NotificationTimer,
sca8er 2:5853bf44af9f 946 SynchronizationTimer
sca8er 2:5853bf44af9f 947 } TIMER_TYPE;
sca8er 2:5853bf44af9f 948
sca8er 2:5853bf44af9f 949 #define EVENT_INCREMENT 1
sca8er 2:5853bf44af9f 950 #define IO_NO_INCREMENT 0
sca8er 2:5853bf44af9f 951 #define IO_CD_ROM_INCREMENT 1
sca8er 2:5853bf44af9f 952 #define IO_DISK_INCREMENT 1
sca8er 2:5853bf44af9f 953 #define IO_KEYBOARD_INCREMENT 6
sca8er 2:5853bf44af9f 954 #define IO_MAILSLOT_INCREMENT 2
sca8er 2:5853bf44af9f 955 #define IO_MOUSE_INCREMENT 6
sca8er 2:5853bf44af9f 956 #define IO_NAMED_PIPE_INCREMENT 2
sca8er 2:5853bf44af9f 957 #define IO_NETWORK_INCREMENT 2
sca8er 2:5853bf44af9f 958 #define IO_PARALLEL_INCREMENT 1
sca8er 2:5853bf44af9f 959 #define IO_SERIAL_INCREMENT 2
sca8er 2:5853bf44af9f 960 #define IO_SOUND_INCREMENT 8
sca8er 2:5853bf44af9f 961 #define IO_VIDEO_INCREMENT 1
sca8er 2:5853bf44af9f 962 #define SEMAPHORE_INCREMENT 1
sca8er 2:5853bf44af9f 963
sca8er 2:5853bf44af9f 964 typedef struct _IRP {
sca8er 2:5853bf44af9f 965 CSHORT Type;
sca8er 2:5853bf44af9f 966 USHORT Size;
sca8er 2:5853bf44af9f 967 struct _MDL *MdlAddress;
sca8er 2:5853bf44af9f 968 ULONG Flags;
sca8er 2:5853bf44af9f 969 union {
sca8er 2:5853bf44af9f 970 struct _IRP *MasterIrp;
sca8er 2:5853bf44af9f 971 LONG IrpCount;
sca8er 2:5853bf44af9f 972 PVOID SystemBuffer;
sca8er 2:5853bf44af9f 973 } AssociatedIrp;
sca8er 2:5853bf44af9f 974 LIST_ENTRY ThreadListEntry;
sca8er 2:5853bf44af9f 975 IO_STATUS_BLOCK IoStatus;
sca8er 2:5853bf44af9f 976 KPROCESSOR_MODE RequestorMode;
sca8er 2:5853bf44af9f 977 BOOLEAN PendingReturned;
sca8er 2:5853bf44af9f 978 CHAR StackCount;
sca8er 2:5853bf44af9f 979 CHAR CurrentLocation;
sca8er 2:5853bf44af9f 980 BOOLEAN Cancel;
sca8er 2:5853bf44af9f 981 KIRQL CancelIrql;
sca8er 2:5853bf44af9f 982 CCHAR ApcEnvironment;
sca8er 2:5853bf44af9f 983 UCHAR AllocationFlags;
sca8er 2:5853bf44af9f 984 PIO_STATUS_BLOCK UserIosb;
sca8er 2:5853bf44af9f 985 PKEVENT UserEvent;
sca8er 2:5853bf44af9f 986 union {
sca8er 2:5853bf44af9f 987 struct {
sca8er 2:5853bf44af9f 988 PIO_APC_ROUTINE UserApcRoutine;
sca8er 2:5853bf44af9f 989 PVOID UserApcContext;
sca8er 2:5853bf44af9f 990 } AsynchronousParameters;
sca8er 2:5853bf44af9f 991 LARGE_INTEGER AllocationSize;
sca8er 2:5853bf44af9f 992 } Overlay;
sca8er 2:5853bf44af9f 993 PDRIVER_CANCEL CancelRoutine;
sca8er 2:5853bf44af9f 994 PVOID UserBuffer;
sca8er 2:5853bf44af9f 995 union {
sca8er 2:5853bf44af9f 996 struct {
sca8er 2:5853bf44af9f 997 _ANONYMOUS_UNION union {
sca8er 2:5853bf44af9f 998 KDEVICE_QUEUE_ENTRY DeviceQueueEntry;
sca8er 2:5853bf44af9f 999 _ANONYMOUS_STRUCT struct {
sca8er 2:5853bf44af9f 1000 PVOID DriverContext[4];
sca8er 2:5853bf44af9f 1001 } DUMMYSTRUCTNAME;
sca8er 2:5853bf44af9f 1002 } DUMMYUNIONNAME;
sca8er 2:5853bf44af9f 1003 PETHREAD Thread;
sca8er 2:5853bf44af9f 1004 PCHAR AuxiliaryBuffer;
sca8er 2:5853bf44af9f 1005 _ANONYMOUS_STRUCT struct {
sca8er 2:5853bf44af9f 1006 LIST_ENTRY ListEntry;
sca8er 2:5853bf44af9f 1007 _ANONYMOUS_UNION union {
sca8er 2:5853bf44af9f 1008 struct _IO_STACK_LOCATION *CurrentStackLocation;
sca8er 2:5853bf44af9f 1009 ULONG PacketType;
sca8er 2:5853bf44af9f 1010 } DUMMYUNIONNAME;
sca8er 2:5853bf44af9f 1011 } DUMMYSTRUCTNAME;
sca8er 2:5853bf44af9f 1012 struct _FILE_OBJECT *OriginalFileObject;
sca8er 2:5853bf44af9f 1013 } Overlay;
sca8er 2:5853bf44af9f 1014 KAPC Apc;
sca8er 2:5853bf44af9f 1015 PVOID CompletionKey;
sca8er 2:5853bf44af9f 1016 } Tail;
sca8er 2:5853bf44af9f 1017 } IRP;
sca8er 2:5853bf44af9f 1018 typedef struct _IRP *PIRP;
sca8er 2:5853bf44af9f 1019
sca8er 2:5853bf44af9f 1020 /* IRP.Flags */
sca8er 2:5853bf44af9f 1021
sca8er 2:5853bf44af9f 1022 #define SL_FORCE_ACCESS_CHECK 0x01
sca8er 2:5853bf44af9f 1023 #define SL_OPEN_PAGING_FILE 0x02
sca8er 2:5853bf44af9f 1024 #define SL_OPEN_TARGET_DIRECTORY 0x04
sca8er 2:5853bf44af9f 1025 #define SL_CASE_SENSITIVE 0x80
sca8er 2:5853bf44af9f 1026
sca8er 2:5853bf44af9f 1027 #define SL_KEY_SPECIFIED 0x01
sca8er 2:5853bf44af9f 1028 #define SL_OVERRIDE_VERIFY_VOLUME 0x02
sca8er 2:5853bf44af9f 1029 #define SL_WRITE_THROUGH 0x04
sca8er 2:5853bf44af9f 1030 #define SL_FT_SEQUENTIAL_WRITE 0x08
sca8er 2:5853bf44af9f 1031
sca8er 2:5853bf44af9f 1032 #define SL_FAIL_IMMEDIATELY 0x01
sca8er 2:5853bf44af9f 1033 #define SL_EXCLUSIVE_LOCK 0x02
sca8er 2:5853bf44af9f 1034
sca8er 2:5853bf44af9f 1035 #define SL_RESTART_SCAN 0x01
sca8er 2:5853bf44af9f 1036 #define SL_RETURN_SINGLE_ENTRY 0x02
sca8er 2:5853bf44af9f 1037 #define SL_INDEX_SPECIFIED 0x04
sca8er 2:5853bf44af9f 1038
sca8er 2:5853bf44af9f 1039 #define SL_WATCH_TREE 0x01
sca8er 2:5853bf44af9f 1040
sca8er 2:5853bf44af9f 1041 #define SL_ALLOW_RAW_MOUNT 0x01
sca8er 2:5853bf44af9f 1042
sca8er 2:5853bf44af9f 1043 #define CTL_CODE(DeviceType, Function, Method, Access)( \
sca8er 2:5853bf44af9f 1044 ((DeviceType) << 16) | ((Access) << 14) | ((Function) << 2) | (Method))
sca8er 2:5853bf44af9f 1045
sca8er 2:5853bf44af9f 1046 #define DEVICE_TYPE_FROM_CTL_CODE(ctl) (((ULONG) (ctl & 0xffff0000)) >> 16)
sca8er 2:5853bf44af9f 1047
sca8er 2:5853bf44af9f 1048 enum
sca8er 2:5853bf44af9f 1049 {
sca8er 2:5853bf44af9f 1050 IRP_NOCACHE = 0x1,
sca8er 2:5853bf44af9f 1051 IRP_PAGING_IO = 0x2,
sca8er 2:5853bf44af9f 1052 IRP_MOUNT_COMPLETION = 0x2,
sca8er 2:5853bf44af9f 1053 IRP_SYNCHRONOUS_API = 0x4,
sca8er 2:5853bf44af9f 1054 IRP_ASSOCIATED_IRP = 0x8,
sca8er 2:5853bf44af9f 1055 IRP_BUFFERED_IO = 0x10,
sca8er 2:5853bf44af9f 1056 IRP_DEALLOCATE_BUFFER = 0x20,
sca8er 2:5853bf44af9f 1057 IRP_INPUT_OPERATION = 0x40,
sca8er 2:5853bf44af9f 1058 IRP_SYNCHRONOUS_PAGING_IO = 0x40,
sca8er 2:5853bf44af9f 1059 IRP_CREATE_OPERATION = 0x80,
sca8er 2:5853bf44af9f 1060 IRP_READ_OPERATION = 0x100,
sca8er 2:5853bf44af9f 1061 IRP_WRITE_OPERATION = 0x200,
sca8er 2:5853bf44af9f 1062 IRP_CLOSE_OPERATION = 0x400,
sca8er 2:5853bf44af9f 1063 IRP_DEFER_IO_COMPLETION = 0x800,
sca8er 2:5853bf44af9f 1064 IRP_OB_QUERY_NAME = 0x1000,
sca8er 2:5853bf44af9f 1065 IRP_HOLD_DEVICE_QUEUE = 0x2000,
sca8er 2:5853bf44af9f 1066 IRP_RETRY_IO_COMPLETION = 0x4000
sca8er 2:5853bf44af9f 1067 };
sca8er 2:5853bf44af9f 1068
sca8er 2:5853bf44af9f 1069
sca8er 2:5853bf44af9f 1070 typedef struct _DRIVE_LAYOUT_INFORMATION_MBR {
sca8er 2:5853bf44af9f 1071 ULONG Signature;
sca8er 2:5853bf44af9f 1072 } DRIVE_LAYOUT_INFORMATION_MBR, *PDRIVE_LAYOUT_INFORMATION_MBR;
sca8er 2:5853bf44af9f 1073
sca8er 2:5853bf44af9f 1074 typedef struct _DRIVE_LAYOUT_INFORMATION_GPT {
sca8er 2:5853bf44af9f 1075 GUID DiskId;
sca8er 2:5853bf44af9f 1076 LARGE_INTEGER StartingUsableOffset;
sca8er 2:5853bf44af9f 1077 LARGE_INTEGER UsableLength;
sca8er 2:5853bf44af9f 1078 ULONG MaxPartitionCount;
sca8er 2:5853bf44af9f 1079 } DRIVE_LAYOUT_INFORMATION_GPT, *PDRIVE_LAYOUT_INFORMATION_GPT;
sca8er 2:5853bf44af9f 1080
sca8er 2:5853bf44af9f 1081 typedef struct _PARTITION_INFORMATION_MBR {
sca8er 2:5853bf44af9f 1082 UCHAR PartitionType;
sca8er 2:5853bf44af9f 1083 BOOLEAN BootIndicator;
sca8er 2:5853bf44af9f 1084 BOOLEAN RecognizedPartition;
sca8er 2:5853bf44af9f 1085 ULONG HiddenSectors;
sca8er 2:5853bf44af9f 1086 } PARTITION_INFORMATION_MBR, *PPARTITION_INFORMATION_MBR;
sca8er 2:5853bf44af9f 1087
sca8er 2:5853bf44af9f 1088
sca8er 2:5853bf44af9f 1089 typedef struct _BOOTDISK_INFORMATION {
sca8er 2:5853bf44af9f 1090 LONGLONG BootPartitionOffset;
sca8er 2:5853bf44af9f 1091 LONGLONG SystemPartitionOffset;
sca8er 2:5853bf44af9f 1092 ULONG BootDeviceSignature;
sca8er 2:5853bf44af9f 1093 ULONG SystemDeviceSignature;
sca8er 2:5853bf44af9f 1094 } BOOTDISK_INFORMATION, *PBOOTDISK_INFORMATION;
sca8er 2:5853bf44af9f 1095
sca8er 2:5853bf44af9f 1096 typedef struct _BOOTDISK_INFORMATION_EX {
sca8er 2:5853bf44af9f 1097 LONGLONG BootPartitionOffset;
sca8er 2:5853bf44af9f 1098 LONGLONG SystemPartitionOffset;
sca8er 2:5853bf44af9f 1099 ULONG BootDeviceSignature;
sca8er 2:5853bf44af9f 1100 ULONG SystemDeviceSignature;
sca8er 2:5853bf44af9f 1101 GUID BootDeviceGuid;
sca8er 2:5853bf44af9f 1102 GUID SystemDeviceGuid;
sca8er 2:5853bf44af9f 1103 BOOLEAN BootDeviceIsGpt;
sca8er 2:5853bf44af9f 1104 BOOLEAN SystemDeviceIsGpt;
sca8er 2:5853bf44af9f 1105 } BOOTDISK_INFORMATION_EX, *PBOOTDISK_INFORMATION_EX;
sca8er 2:5853bf44af9f 1106
sca8er 2:5853bf44af9f 1107 typedef struct _EISA_MEMORY_TYPE {
sca8er 2:5853bf44af9f 1108 UCHAR ReadWrite : 1;
sca8er 2:5853bf44af9f 1109 UCHAR Cached : 1;
sca8er 2:5853bf44af9f 1110 UCHAR Reserved0 : 1;
sca8er 2:5853bf44af9f 1111 UCHAR Type : 2;
sca8er 2:5853bf44af9f 1112 UCHAR Shared : 1;
sca8er 2:5853bf44af9f 1113 UCHAR Reserved1 : 1;
sca8er 2:5853bf44af9f 1114 UCHAR MoreEntries : 1;
sca8er 2:5853bf44af9f 1115 } EISA_MEMORY_TYPE, *PEISA_MEMORY_TYPE;
sca8er 2:5853bf44af9f 1116
sca8er 2:5853bf44af9f 1117 #include <pshpack1.h>
sca8er 2:5853bf44af9f 1118 typedef struct _EISA_MEMORY_CONFIGURATION {
sca8er 2:5853bf44af9f 1119 EISA_MEMORY_TYPE ConfigurationByte;
sca8er 2:5853bf44af9f 1120 UCHAR DataSize;
sca8er 2:5853bf44af9f 1121 USHORT AddressLowWord;
sca8er 2:5853bf44af9f 1122 UCHAR AddressHighByte;
sca8er 2:5853bf44af9f 1123 USHORT MemorySize;
sca8er 2:5853bf44af9f 1124 } EISA_MEMORY_CONFIGURATION, *PEISA_MEMORY_CONFIGURATION;
sca8er 2:5853bf44af9f 1125 #include <poppack.h>
sca8er 2:5853bf44af9f 1126
sca8er 2:5853bf44af9f 1127 typedef struct _EISA_IRQ_DESCRIPTOR {
sca8er 2:5853bf44af9f 1128 UCHAR Interrupt : 4;
sca8er 2:5853bf44af9f 1129 UCHAR Reserved : 1;
sca8er 2:5853bf44af9f 1130 UCHAR LevelTriggered : 1;
sca8er 2:5853bf44af9f 1131 UCHAR Shared : 1;
sca8er 2:5853bf44af9f 1132 UCHAR MoreEntries : 1;
sca8er 2:5853bf44af9f 1133 } EISA_IRQ_DESCRIPTOR, *PEISA_IRQ_DESCRIPTOR;
sca8er 2:5853bf44af9f 1134
sca8er 2:5853bf44af9f 1135 typedef struct _EISA_IRQ_CONFIGURATION {
sca8er 2:5853bf44af9f 1136 EISA_IRQ_DESCRIPTOR ConfigurationByte;
sca8er 2:5853bf44af9f 1137 UCHAR Reserved;
sca8er 2:5853bf44af9f 1138 } EISA_IRQ_CONFIGURATION, *PEISA_IRQ_CONFIGURATION;
sca8er 2:5853bf44af9f 1139
sca8er 2:5853bf44af9f 1140 typedef struct _DMA_CONFIGURATION_BYTE0 {
sca8er 2:5853bf44af9f 1141 UCHAR Channel : 3;
sca8er 2:5853bf44af9f 1142 UCHAR Reserved : 3;
sca8er 2:5853bf44af9f 1143 UCHAR Shared : 1;
sca8er 2:5853bf44af9f 1144 UCHAR MoreEntries : 1;
sca8er 2:5853bf44af9f 1145 } DMA_CONFIGURATION_BYTE0;
sca8er 2:5853bf44af9f 1146
sca8er 2:5853bf44af9f 1147 typedef struct _DMA_CONFIGURATION_BYTE1 {
sca8er 2:5853bf44af9f 1148 UCHAR Reserved0 : 2;
sca8er 2:5853bf44af9f 1149 UCHAR TransferSize : 2;
sca8er 2:5853bf44af9f 1150 UCHAR Timing : 2;
sca8er 2:5853bf44af9f 1151 UCHAR Reserved1 : 2;
sca8er 2:5853bf44af9f 1152 } DMA_CONFIGURATION_BYTE1;
sca8er 2:5853bf44af9f 1153
sca8er 2:5853bf44af9f 1154 typedef struct _EISA_DMA_CONFIGURATION {
sca8er 2:5853bf44af9f 1155 DMA_CONFIGURATION_BYTE0 ConfigurationByte0;
sca8er 2:5853bf44af9f 1156 DMA_CONFIGURATION_BYTE1 ConfigurationByte1;
sca8er 2:5853bf44af9f 1157 } EISA_DMA_CONFIGURATION, *PEISA_DMA_CONFIGURATION;
sca8er 2:5853bf44af9f 1158
sca8er 2:5853bf44af9f 1159 #include <pshpack1.h>
sca8er 2:5853bf44af9f 1160 typedef struct _EISA_PORT_DESCRIPTOR {
sca8er 2:5853bf44af9f 1161 UCHAR NumberPorts : 5;
sca8er 2:5853bf44af9f 1162 UCHAR Reserved : 1;
sca8er 2:5853bf44af9f 1163 UCHAR Shared : 1;
sca8er 2:5853bf44af9f 1164 UCHAR MoreEntries : 1;
sca8er 2:5853bf44af9f 1165 } EISA_PORT_DESCRIPTOR, *PEISA_PORT_DESCRIPTOR;
sca8er 2:5853bf44af9f 1166
sca8er 2:5853bf44af9f 1167 typedef struct _EISA_PORT_CONFIGURATION {
sca8er 2:5853bf44af9f 1168 EISA_PORT_DESCRIPTOR Configuration;
sca8er 2:5853bf44af9f 1169 USHORT PortAddress;
sca8er 2:5853bf44af9f 1170 } EISA_PORT_CONFIGURATION, *PEISA_PORT_CONFIGURATION;
sca8er 2:5853bf44af9f 1171 #include <poppack.h>
sca8er 2:5853bf44af9f 1172
sca8er 2:5853bf44af9f 1173 typedef struct _CM_EISA_FUNCTION_INFORMATION {
sca8er 2:5853bf44af9f 1174 ULONG CompressedId;
sca8er 2:5853bf44af9f 1175 UCHAR IdSlotFlags1;
sca8er 2:5853bf44af9f 1176 UCHAR IdSlotFlags2;
sca8er 2:5853bf44af9f 1177 UCHAR MinorRevision;
sca8er 2:5853bf44af9f 1178 UCHAR MajorRevision;
sca8er 2:5853bf44af9f 1179 UCHAR Selections[26];
sca8er 2:5853bf44af9f 1180 UCHAR FunctionFlags;
sca8er 2:5853bf44af9f 1181 UCHAR TypeString[80];
sca8er 2:5853bf44af9f 1182 EISA_MEMORY_CONFIGURATION EisaMemory[9];
sca8er 2:5853bf44af9f 1183 EISA_IRQ_CONFIGURATION EisaIrq[7];
sca8er 2:5853bf44af9f 1184 EISA_DMA_CONFIGURATION EisaDma[4];
sca8er 2:5853bf44af9f 1185 EISA_PORT_CONFIGURATION EisaPort[20];
sca8er 2:5853bf44af9f 1186 UCHAR InitializationData[60];
sca8er 2:5853bf44af9f 1187 } CM_EISA_FUNCTION_INFORMATION, *PCM_EISA_FUNCTION_INFORMATION;
sca8er 2:5853bf44af9f 1188
sca8er 2:5853bf44af9f 1189 /* CM_EISA_FUNCTION_INFORMATION.FunctionFlags */
sca8er 2:5853bf44af9f 1190
sca8er 2:5853bf44af9f 1191 #define EISA_FUNCTION_ENABLED 0x80
sca8er 2:5853bf44af9f 1192 #define EISA_FREE_FORM_DATA 0x40
sca8er 2:5853bf44af9f 1193 #define EISA_HAS_PORT_INIT_ENTRY 0x20
sca8er 2:5853bf44af9f 1194 #define EISA_HAS_PORT_RANGE 0x10
sca8er 2:5853bf44af9f 1195 #define EISA_HAS_DMA_ENTRY 0x08
sca8er 2:5853bf44af9f 1196 #define EISA_HAS_IRQ_ENTRY 0x04
sca8er 2:5853bf44af9f 1197 #define EISA_HAS_MEMORY_ENTRY 0x02
sca8er 2:5853bf44af9f 1198 #define EISA_HAS_TYPE_ENTRY 0x01
sca8er 2:5853bf44af9f 1199 #define EISA_HAS_INFORMATION \
sca8er 2:5853bf44af9f 1200 (EISA_HAS_PORT_RANGE + EISA_HAS_DMA_ENTRY + EISA_HAS_IRQ_ENTRY \
sca8er 2:5853bf44af9f 1201 + EISA_HAS_MEMORY_ENTRY + EISA_HAS_TYPE_ENTRY)
sca8er 2:5853bf44af9f 1202
sca8er 2:5853bf44af9f 1203 typedef struct _CM_EISA_SLOT_INFORMATION {
sca8er 2:5853bf44af9f 1204 UCHAR ReturnCode;
sca8er 2:5853bf44af9f 1205 UCHAR ReturnFlags;
sca8er 2:5853bf44af9f 1206 UCHAR MajorRevision;
sca8er 2:5853bf44af9f 1207 UCHAR MinorRevision;
sca8er 2:5853bf44af9f 1208 USHORT Checksum;
sca8er 2:5853bf44af9f 1209 UCHAR NumberFunctions;
sca8er 2:5853bf44af9f 1210 UCHAR FunctionInformation;
sca8er 2:5853bf44af9f 1211 ULONG CompressedId;
sca8er 2:5853bf44af9f 1212 } CM_EISA_SLOT_INFORMATION, *PCM_EISA_SLOT_INFORMATION;
sca8er 2:5853bf44af9f 1213
sca8er 2:5853bf44af9f 1214 /* CM_EISA_SLOT_INFORMATION.ReturnCode */
sca8er 2:5853bf44af9f 1215
sca8er 2:5853bf44af9f 1216 #define EISA_INVALID_SLOT 0x80
sca8er 2:5853bf44af9f 1217 #define EISA_INVALID_FUNCTION 0x81
sca8er 2:5853bf44af9f 1218 #define EISA_INVALID_CONFIGURATION 0x82
sca8er 2:5853bf44af9f 1219 #define EISA_EMPTY_SLOT 0x83
sca8er 2:5853bf44af9f 1220 #define EISA_INVALID_BIOS_CALL 0x86
sca8er 2:5853bf44af9f 1221
sca8er 2:5853bf44af9f 1222 typedef struct _CM_FLOPPY_DEVICE_DATA {
sca8er 2:5853bf44af9f 1223 USHORT Version;
sca8er 2:5853bf44af9f 1224 USHORT Revision;
sca8er 2:5853bf44af9f 1225 CHAR Size[8];
sca8er 2:5853bf44af9f 1226 ULONG MaxDensity;
sca8er 2:5853bf44af9f 1227 ULONG MountDensity;
sca8er 2:5853bf44af9f 1228 UCHAR StepRateHeadUnloadTime;
sca8er 2:5853bf44af9f 1229 UCHAR HeadLoadTime;
sca8er 2:5853bf44af9f 1230 UCHAR MotorOffTime;
sca8er 2:5853bf44af9f 1231 UCHAR SectorLengthCode;
sca8er 2:5853bf44af9f 1232 UCHAR SectorPerTrack;
sca8er 2:5853bf44af9f 1233 UCHAR ReadWriteGapLength;
sca8er 2:5853bf44af9f 1234 UCHAR DataTransferLength;
sca8er 2:5853bf44af9f 1235 UCHAR FormatGapLength;
sca8er 2:5853bf44af9f 1236 UCHAR FormatFillCharacter;
sca8er 2:5853bf44af9f 1237 UCHAR HeadSettleTime;
sca8er 2:5853bf44af9f 1238 UCHAR MotorSettleTime;
sca8er 2:5853bf44af9f 1239 UCHAR MaximumTrackValue;
sca8er 2:5853bf44af9f 1240 UCHAR DataTransferRate;
sca8er 2:5853bf44af9f 1241 } CM_FLOPPY_DEVICE_DATA, *PCM_FLOPPY_DEVICE_DATA;
sca8er 2:5853bf44af9f 1242
sca8er 2:5853bf44af9f 1243 typedef enum _INTERFACE_TYPE {
sca8er 2:5853bf44af9f 1244 InterfaceTypeUndefined = -1,
sca8er 2:5853bf44af9f 1245 Internal,
sca8er 2:5853bf44af9f 1246 Isa,
sca8er 2:5853bf44af9f 1247 Eisa,
sca8er 2:5853bf44af9f 1248 MicroChannel,
sca8er 2:5853bf44af9f 1249 TurboChannel,
sca8er 2:5853bf44af9f 1250 PCIBus,
sca8er 2:5853bf44af9f 1251 VMEBus,
sca8er 2:5853bf44af9f 1252 NuBus,
sca8er 2:5853bf44af9f 1253 PCMCIABus,
sca8er 2:5853bf44af9f 1254 CBus,
sca8er 2:5853bf44af9f 1255 MPIBus,
sca8er 2:5853bf44af9f 1256 MPSABus,
sca8er 2:5853bf44af9f 1257 ProcessorInternal,
sca8er 2:5853bf44af9f 1258 InternalPowerBus,
sca8er 2:5853bf44af9f 1259 PNPISABus,
sca8er 2:5853bf44af9f 1260 PNPBus,
sca8er 2:5853bf44af9f 1261 MaximumInterfaceType
sca8er 2:5853bf44af9f 1262 } INTERFACE_TYPE, *PINTERFACE_TYPE;
sca8er 2:5853bf44af9f 1263
sca8er 2:5853bf44af9f 1264 typedef struct _PNP_BUS_INFORMATION {
sca8er 2:5853bf44af9f 1265 GUID BusTypeGuid;
sca8er 2:5853bf44af9f 1266 INTERFACE_TYPE LegacyBusType;
sca8er 2:5853bf44af9f 1267 ULONG BusNumber;
sca8er 2:5853bf44af9f 1268 } PNP_BUS_INFORMATION, *PPNP_BUS_INFORMATION;
sca8er 2:5853bf44af9f 1269
sca8er 2:5853bf44af9f 1270 #include <pshpack1.h>
sca8er 2:5853bf44af9f 1271 typedef struct _CM_PARTIAL_RESOURCE_DESCRIPTOR {
sca8er 2:5853bf44af9f 1272 UCHAR Type;
sca8er 2:5853bf44af9f 1273 UCHAR ShareDisposition;
sca8er 2:5853bf44af9f 1274 USHORT Flags;
sca8er 2:5853bf44af9f 1275 union {
sca8er 2:5853bf44af9f 1276 struct {
sca8er 2:5853bf44af9f 1277 PHYSICAL_ADDRESS Start;
sca8er 2:5853bf44af9f 1278 ULONG Length;
sca8er 2:5853bf44af9f 1279 } Generic;
sca8er 2:5853bf44af9f 1280 struct {
sca8er 2:5853bf44af9f 1281 PHYSICAL_ADDRESS Start;
sca8er 2:5853bf44af9f 1282 ULONG Length;
sca8er 2:5853bf44af9f 1283 } Port;
sca8er 2:5853bf44af9f 1284 struct {
sca8er 2:5853bf44af9f 1285 ULONG Level;
sca8er 2:5853bf44af9f 1286 ULONG Vector;
sca8er 2:5853bf44af9f 1287 ULONG Affinity;
sca8er 2:5853bf44af9f 1288 } Interrupt;
sca8er 2:5853bf44af9f 1289 struct {
sca8er 2:5853bf44af9f 1290 PHYSICAL_ADDRESS Start;
sca8er 2:5853bf44af9f 1291 ULONG Length;
sca8er 2:5853bf44af9f 1292 } Memory;
sca8er 2:5853bf44af9f 1293 struct {
sca8er 2:5853bf44af9f 1294 ULONG Channel;
sca8er 2:5853bf44af9f 1295 ULONG Port;
sca8er 2:5853bf44af9f 1296 ULONG Reserved1;
sca8er 2:5853bf44af9f 1297 } Dma;
sca8er 2:5853bf44af9f 1298 struct {
sca8er 2:5853bf44af9f 1299 ULONG Data[3];
sca8er 2:5853bf44af9f 1300 } DevicePrivate;
sca8er 2:5853bf44af9f 1301 struct {
sca8er 2:5853bf44af9f 1302 ULONG Start;
sca8er 2:5853bf44af9f 1303 ULONG Length;
sca8er 2:5853bf44af9f 1304 ULONG Reserved;
sca8er 2:5853bf44af9f 1305 } BusNumber;
sca8er 2:5853bf44af9f 1306 struct {
sca8er 2:5853bf44af9f 1307 ULONG DataSize;
sca8er 2:5853bf44af9f 1308 ULONG Reserved1;
sca8er 2:5853bf44af9f 1309 ULONG Reserved2;
sca8er 2:5853bf44af9f 1310 } DeviceSpecificData;
sca8er 2:5853bf44af9f 1311 } u;
sca8er 2:5853bf44af9f 1312 } CM_PARTIAL_RESOURCE_DESCRIPTOR, *PCM_PARTIAL_RESOURCE_DESCRIPTOR;
sca8er 2:5853bf44af9f 1313
sca8er 2:5853bf44af9f 1314 /* CM_PARTIAL_RESOURCE_DESCRIPTOR.Type */
sca8er 2:5853bf44af9f 1315
sca8er 2:5853bf44af9f 1316 #define CmResourceTypeNull 0
sca8er 2:5853bf44af9f 1317 #define CmResourceTypePort 1
sca8er 2:5853bf44af9f 1318 #define CmResourceTypeInterrupt 2
sca8er 2:5853bf44af9f 1319 #define CmResourceTypeMemory 3
sca8er 2:5853bf44af9f 1320 #define CmResourceTypeDma 4
sca8er 2:5853bf44af9f 1321 #define CmResourceTypeDeviceSpecific 5
sca8er 2:5853bf44af9f 1322 #define CmResourceTypeBusNumber 6
sca8er 2:5853bf44af9f 1323 #define CmResourceTypeMaximum 7
sca8er 2:5853bf44af9f 1324 #define CmResourceTypeNonArbitrated 128
sca8er 2:5853bf44af9f 1325 #define CmResourceTypeConfigData 128
sca8er 2:5853bf44af9f 1326 #define CmResourceTypeDevicePrivate 129
sca8er 2:5853bf44af9f 1327 #define CmResourceTypePcCardConfig 130
sca8er 2:5853bf44af9f 1328 #define CmResourceTypeMfCardConfig 131
sca8er 2:5853bf44af9f 1329
sca8er 2:5853bf44af9f 1330 /* CM_PARTIAL_RESOURCE_DESCRIPTOR.ShareDisposition */
sca8er 2:5853bf44af9f 1331
sca8er 2:5853bf44af9f 1332 typedef enum _CM_SHARE_DISPOSITION {
sca8er 2:5853bf44af9f 1333 CmResourceShareUndetermined,
sca8er 2:5853bf44af9f 1334 CmResourceShareDeviceExclusive,
sca8er 2:5853bf44af9f 1335 CmResourceShareDriverExclusive,
sca8er 2:5853bf44af9f 1336 CmResourceShareShared
sca8er 2:5853bf44af9f 1337 } CM_SHARE_DISPOSITION;
sca8er 2:5853bf44af9f 1338
sca8er 2:5853bf44af9f 1339 /* CM_PARTIAL_RESOURCE_DESCRIPTOR.Flags if Type = CmResourceTypePort */
sca8er 2:5853bf44af9f 1340
sca8er 2:5853bf44af9f 1341 #define CM_RESOURCE_PORT_MEMORY 0x0000
sca8er 2:5853bf44af9f 1342 #define CM_RESOURCE_PORT_IO 0x0001
sca8er 2:5853bf44af9f 1343 #define CM_RESOURCE_PORT_10_BIT_DECODE 0x0004
sca8er 2:5853bf44af9f 1344 #define CM_RESOURCE_PORT_12_BIT_DECODE 0x0008
sca8er 2:5853bf44af9f 1345 #define CM_RESOURCE_PORT_16_BIT_DECODE 0x0010
sca8er 2:5853bf44af9f 1346 #define CM_RESOURCE_PORT_POSITIVE_DECODE 0x0020
sca8er 2:5853bf44af9f 1347 #define CM_RESOURCE_PORT_PASSIVE_DECODE 0x0040
sca8er 2:5853bf44af9f 1348 #define CM_RESOURCE_PORT_WINDOW_DECODE 0x0080
sca8er 2:5853bf44af9f 1349
sca8er 2:5853bf44af9f 1350 /* CM_PARTIAL_RESOURCE_DESCRIPTOR.Flags if Type = CmResourceTypeInterrupt */
sca8er 2:5853bf44af9f 1351
sca8er 2:5853bf44af9f 1352 #define CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE 0x0000
sca8er 2:5853bf44af9f 1353 #define CM_RESOURCE_INTERRUPT_LATCHED 0x0001
sca8er 2:5853bf44af9f 1354
sca8er 2:5853bf44af9f 1355 /* CM_PARTIAL_RESOURCE_DESCRIPTOR.Flags if Type = CmResourceTypeMemory */
sca8er 2:5853bf44af9f 1356
sca8er 2:5853bf44af9f 1357 #define CM_RESOURCE_MEMORY_READ_WRITE 0x0000
sca8er 2:5853bf44af9f 1358 #define CM_RESOURCE_MEMORY_READ_ONLY 0x0001
sca8er 2:5853bf44af9f 1359 #define CM_RESOURCE_MEMORY_WRITE_ONLY 0x0002
sca8er 2:5853bf44af9f 1360 #define CM_RESOURCE_MEMORY_PREFETCHABLE 0x0004
sca8er 2:5853bf44af9f 1361 #define CM_RESOURCE_MEMORY_COMBINEDWRITE 0x0008
sca8er 2:5853bf44af9f 1362 #define CM_RESOURCE_MEMORY_24 0x0010
sca8er 2:5853bf44af9f 1363 #define CM_RESOURCE_MEMORY_CACHEABLE 0x0020
sca8er 2:5853bf44af9f 1364
sca8er 2:5853bf44af9f 1365 /* CM_PARTIAL_RESOURCE_DESCRIPTOR.Flags if Type = CmResourceTypeDma */
sca8er 2:5853bf44af9f 1366
sca8er 2:5853bf44af9f 1367 #define CM_RESOURCE_DMA_8 0x0000
sca8er 2:5853bf44af9f 1368 #define CM_RESOURCE_DMA_16 0x0001
sca8er 2:5853bf44af9f 1369 #define CM_RESOURCE_DMA_32 0x0002
sca8er 2:5853bf44af9f 1370 #define CM_RESOURCE_DMA_8_AND_16 0x0004
sca8er 2:5853bf44af9f 1371 #define CM_RESOURCE_DMA_BUS_MASTER 0x0008
sca8er 2:5853bf44af9f 1372 #define CM_RESOURCE_DMA_TYPE_A 0x0010
sca8er 2:5853bf44af9f 1373 #define CM_RESOURCE_DMA_TYPE_B 0x0020
sca8er 2:5853bf44af9f 1374 #define CM_RESOURCE_DMA_TYPE_F 0x0040
sca8er 2:5853bf44af9f 1375
sca8er 2:5853bf44af9f 1376 typedef struct _CM_PARTIAL_RESOURCE_LIST {
sca8er 2:5853bf44af9f 1377 USHORT Version;
sca8er 2:5853bf44af9f 1378 USHORT Revision;
sca8er 2:5853bf44af9f 1379 ULONG Count;
sca8er 2:5853bf44af9f 1380 CM_PARTIAL_RESOURCE_DESCRIPTOR PartialDescriptors[1];
sca8er 2:5853bf44af9f 1381 } CM_PARTIAL_RESOURCE_LIST, *PCM_PARTIAL_RESOURCE_LIST;
sca8er 2:5853bf44af9f 1382
sca8er 2:5853bf44af9f 1383 typedef struct _CM_FULL_RESOURCE_DESCRIPTOR {
sca8er 2:5853bf44af9f 1384 INTERFACE_TYPE InterfaceType;
sca8er 2:5853bf44af9f 1385 ULONG BusNumber;
sca8er 2:5853bf44af9f 1386 CM_PARTIAL_RESOURCE_LIST PartialResourceList;
sca8er 2:5853bf44af9f 1387 } CM_FULL_RESOURCE_DESCRIPTOR, *PCM_FULL_RESOURCE_DESCRIPTOR;
sca8er 2:5853bf44af9f 1388
sca8er 2:5853bf44af9f 1389 typedef struct _CM_RESOURCE_LIST {
sca8er 2:5853bf44af9f 1390 ULONG Count;
sca8er 2:5853bf44af9f 1391 CM_FULL_RESOURCE_DESCRIPTOR List[1];
sca8er 2:5853bf44af9f 1392 } CM_RESOURCE_LIST, *PCM_RESOURCE_LIST;
sca8er 2:5853bf44af9f 1393
sca8er 2:5853bf44af9f 1394 typedef struct _CM_INT13_DRIVE_PARAMETER {
sca8er 2:5853bf44af9f 1395 USHORT DriveSelect;
sca8er 2:5853bf44af9f 1396 ULONG MaxCylinders;
sca8er 2:5853bf44af9f 1397 USHORT SectorsPerTrack;
sca8er 2:5853bf44af9f 1398 USHORT MaxHeads;
sca8er 2:5853bf44af9f 1399 USHORT NumberDrives;
sca8er 2:5853bf44af9f 1400 } CM_INT13_DRIVE_PARAMETER, *PCM_INT13_DRIVE_PARAMETER;
sca8er 2:5853bf44af9f 1401 #include <poppack.h>
sca8er 2:5853bf44af9f 1402
sca8er 2:5853bf44af9f 1403 typedef struct _CM_KEYBOARD_DEVICE_DATA {
sca8er 2:5853bf44af9f 1404 USHORT Version;
sca8er 2:5853bf44af9f 1405 USHORT Revision;
sca8er 2:5853bf44af9f 1406 UCHAR Type;
sca8er 2:5853bf44af9f 1407 UCHAR Subtype;
sca8er 2:5853bf44af9f 1408 USHORT KeyboardFlags;
sca8er 2:5853bf44af9f 1409 } CM_KEYBOARD_DEVICE_DATA, *PCM_KEYBOARD_DEVICE_DATA;
sca8er 2:5853bf44af9f 1410
sca8er 2:5853bf44af9f 1411 #define KEYBOARD_INSERT_ON 0x80
sca8er 2:5853bf44af9f 1412 #define KEYBOARD_CAPS_LOCK_ON 0x40
sca8er 2:5853bf44af9f 1413 #define KEYBOARD_NUM_LOCK_ON 0x20
sca8er 2:5853bf44af9f 1414 #define KEYBOARD_SCROLL_LOCK_ON 0x10
sca8er 2:5853bf44af9f 1415 #define KEYBOARD_ALT_KEY_DOWN 0x08
sca8er 2:5853bf44af9f 1416 #define KEYBOARD_CTRL_KEY_DOWN 0x04
sca8er 2:5853bf44af9f 1417 #define KEYBOARD_LEFT_SHIFT_DOWN 0x02
sca8er 2:5853bf44af9f 1418 #define KEYBOARD_RIGHT_SHIFT_DOWN 0x01
sca8er 2:5853bf44af9f 1419
sca8er 2:5853bf44af9f 1420 typedef struct _CM_MCA_POS_DATA {
sca8er 2:5853bf44af9f 1421 USHORT AdapterId;
sca8er 2:5853bf44af9f 1422 UCHAR PosData1;
sca8er 2:5853bf44af9f 1423 UCHAR PosData2;
sca8er 2:5853bf44af9f 1424 UCHAR PosData3;
sca8er 2:5853bf44af9f 1425 UCHAR PosData4;
sca8er 2:5853bf44af9f 1426 } CM_MCA_POS_DATA, *PCM_MCA_POS_DATA;
sca8er 2:5853bf44af9f 1427
sca8er 2:5853bf44af9f 1428 typedef struct CM_Power_Data_s {
sca8er 2:5853bf44af9f 1429 ULONG PD_Size;
sca8er 2:5853bf44af9f 1430 DEVICE_POWER_STATE PD_MostRecentPowerState;
sca8er 2:5853bf44af9f 1431 ULONG PD_Capabilities;
sca8er 2:5853bf44af9f 1432 ULONG PD_D1Latency;
sca8er 2:5853bf44af9f 1433 ULONG PD_D2Latency;
sca8er 2:5853bf44af9f 1434 ULONG PD_D3Latency;
sca8er 2:5853bf44af9f 1435 DEVICE_POWER_STATE PD_PowerStateMapping[PowerSystemMaximum];
sca8er 2:5853bf44af9f 1436 } CM_POWER_DATA, *PCM_POWER_DATA;
sca8er 2:5853bf44af9f 1437
sca8er 2:5853bf44af9f 1438 #define PDCAP_D0_SUPPORTED 0x00000001
sca8er 2:5853bf44af9f 1439 #define PDCAP_D1_SUPPORTED 0x00000002
sca8er 2:5853bf44af9f 1440 #define PDCAP_D2_SUPPORTED 0x00000004
sca8er 2:5853bf44af9f 1441 #define PDCAP_D3_SUPPORTED 0x00000008
sca8er 2:5853bf44af9f 1442 #define PDCAP_WAKE_FROM_D0_SUPPORTED 0x00000010
sca8er 2:5853bf44af9f 1443 #define PDCAP_WAKE_FROM_D1_SUPPORTED 0x00000020
sca8er 2:5853bf44af9f 1444 #define PDCAP_WAKE_FROM_D2_SUPPORTED 0x00000040
sca8er 2:5853bf44af9f 1445 #define PDCAP_WAKE_FROM_D3_SUPPORTED 0x00000080
sca8er 2:5853bf44af9f 1446 #define PDCAP_WARM_EJECT_SUPPORTED 0x00000100
sca8er 2:5853bf44af9f 1447
sca8er 2:5853bf44af9f 1448 typedef struct _CM_SCSI_DEVICE_DATA {
sca8er 2:5853bf44af9f 1449 USHORT Version;
sca8er 2:5853bf44af9f 1450 USHORT Revision;
sca8er 2:5853bf44af9f 1451 UCHAR HostIdentifier;
sca8er 2:5853bf44af9f 1452 } CM_SCSI_DEVICE_DATA, *PCM_SCSI_DEVICE_DATA;
sca8er 2:5853bf44af9f 1453
sca8er 2:5853bf44af9f 1454 typedef struct _CM_SERIAL_DEVICE_DATA {
sca8er 2:5853bf44af9f 1455 USHORT Version;
sca8er 2:5853bf44af9f 1456 USHORT Revision;
sca8er 2:5853bf44af9f 1457 ULONG BaudClock;
sca8er 2:5853bf44af9f 1458 } CM_SERIAL_DEVICE_DATA, *PCM_SERIAL_DEVICE_DATA;
sca8er 2:5853bf44af9f 1459
sca8er 2:5853bf44af9f 1460 /* IO_RESOURCE_DESCRIPTOR.Option */
sca8er 2:5853bf44af9f 1461
sca8er 2:5853bf44af9f 1462 #define IO_RESOURCE_PREFERRED 0x01
sca8er 2:5853bf44af9f 1463 #define IO_RESOURCE_DEFAULT 0x02
sca8er 2:5853bf44af9f 1464 #define IO_RESOURCE_ALTERNATIVE 0x08
sca8er 2:5853bf44af9f 1465
sca8er 2:5853bf44af9f 1466 typedef struct _IO_RESOURCE_DESCRIPTOR {
sca8er 2:5853bf44af9f 1467 UCHAR Option;
sca8er 2:5853bf44af9f 1468 UCHAR Type;
sca8er 2:5853bf44af9f 1469 UCHAR ShareDisposition;
sca8er 2:5853bf44af9f 1470 UCHAR Spare1;
sca8er 2:5853bf44af9f 1471 USHORT Flags;
sca8er 2:5853bf44af9f 1472 USHORT Spare2;
sca8er 2:5853bf44af9f 1473 union {
sca8er 2:5853bf44af9f 1474 struct {
sca8er 2:5853bf44af9f 1475 ULONG Length;
sca8er 2:5853bf44af9f 1476 ULONG Alignment;
sca8er 2:5853bf44af9f 1477 PHYSICAL_ADDRESS MinimumAddress;
sca8er 2:5853bf44af9f 1478 PHYSICAL_ADDRESS MaximumAddress;
sca8er 2:5853bf44af9f 1479 } Port;
sca8er 2:5853bf44af9f 1480 struct {
sca8er 2:5853bf44af9f 1481 ULONG Length;
sca8er 2:5853bf44af9f 1482 ULONG Alignment;
sca8er 2:5853bf44af9f 1483 PHYSICAL_ADDRESS MinimumAddress;
sca8er 2:5853bf44af9f 1484 PHYSICAL_ADDRESS MaximumAddress;
sca8er 2:5853bf44af9f 1485 } Memory;
sca8er 2:5853bf44af9f 1486 struct {
sca8er 2:5853bf44af9f 1487 ULONG MinimumVector;
sca8er 2:5853bf44af9f 1488 ULONG MaximumVector;
sca8er 2:5853bf44af9f 1489 } Interrupt;
sca8er 2:5853bf44af9f 1490 struct {
sca8er 2:5853bf44af9f 1491 ULONG MinimumChannel;
sca8er 2:5853bf44af9f 1492 ULONG MaximumChannel;
sca8er 2:5853bf44af9f 1493 } Dma;
sca8er 2:5853bf44af9f 1494 struct {
sca8er 2:5853bf44af9f 1495 ULONG Length;
sca8er 2:5853bf44af9f 1496 ULONG Alignment;
sca8er 2:5853bf44af9f 1497 PHYSICAL_ADDRESS MinimumAddress;
sca8er 2:5853bf44af9f 1498 PHYSICAL_ADDRESS MaximumAddress;
sca8er 2:5853bf44af9f 1499 } Generic;
sca8er 2:5853bf44af9f 1500 struct {
sca8er 2:5853bf44af9f 1501 ULONG Data[3];
sca8er 2:5853bf44af9f 1502 } DevicePrivate;
sca8er 2:5853bf44af9f 1503 struct {
sca8er 2:5853bf44af9f 1504 ULONG Length;
sca8er 2:5853bf44af9f 1505 ULONG MinBusNumber;
sca8er 2:5853bf44af9f 1506 ULONG MaxBusNumber;
sca8er 2:5853bf44af9f 1507 ULONG Reserved;
sca8er 2:5853bf44af9f 1508 } BusNumber;
sca8er 2:5853bf44af9f 1509 struct {
sca8er 2:5853bf44af9f 1510 ULONG Priority;
sca8er 2:5853bf44af9f 1511 ULONG Reserved1;
sca8er 2:5853bf44af9f 1512 ULONG Reserved2;
sca8er 2:5853bf44af9f 1513 } ConfigData;
sca8er 2:5853bf44af9f 1514 } u;
sca8er 2:5853bf44af9f 1515 } IO_RESOURCE_DESCRIPTOR, *PIO_RESOURCE_DESCRIPTOR;
sca8er 2:5853bf44af9f 1516
sca8er 2:5853bf44af9f 1517 typedef struct _IO_RESOURCE_LIST {
sca8er 2:5853bf44af9f 1518 USHORT Version;
sca8er 2:5853bf44af9f 1519 USHORT Revision;
sca8er 2:5853bf44af9f 1520 ULONG Count;
sca8er 2:5853bf44af9f 1521 IO_RESOURCE_DESCRIPTOR Descriptors[1];
sca8er 2:5853bf44af9f 1522 } IO_RESOURCE_LIST, *PIO_RESOURCE_LIST;
sca8er 2:5853bf44af9f 1523
sca8er 2:5853bf44af9f 1524 typedef struct _IO_RESOURCE_REQUIREMENTS_LIST {
sca8er 2:5853bf44af9f 1525 ULONG ListSize;
sca8er 2:5853bf44af9f 1526 INTERFACE_TYPE InterfaceType;
sca8er 2:5853bf44af9f 1527 ULONG BusNumber;
sca8er 2:5853bf44af9f 1528 ULONG SlotNumber;
sca8er 2:5853bf44af9f 1529 ULONG Reserved[3];
sca8er 2:5853bf44af9f 1530 ULONG AlternativeLists;
sca8er 2:5853bf44af9f 1531 IO_RESOURCE_LIST List[1];
sca8er 2:5853bf44af9f 1532 } IO_RESOURCE_REQUIREMENTS_LIST, *PIO_RESOURCE_REQUIREMENTS_LIST;
sca8er 2:5853bf44af9f 1533
sca8er 2:5853bf44af9f 1534 typedef struct _CONTROLLER_OBJECT {
sca8er 2:5853bf44af9f 1535 CSHORT Type;
sca8er 2:5853bf44af9f 1536 CSHORT Size;
sca8er 2:5853bf44af9f 1537 PVOID ControllerExtension;
sca8er 2:5853bf44af9f 1538 KDEVICE_QUEUE DeviceWaitQueue;
sca8er 2:5853bf44af9f 1539 ULONG Spare1;
sca8er 2:5853bf44af9f 1540 LARGE_INTEGER Spare2;
sca8er 2:5853bf44af9f 1541 } CONTROLLER_OBJECT, *PCONTROLLER_OBJECT;
sca8er 2:5853bf44af9f 1542
sca8er 2:5853bf44af9f 1543 typedef enum _DMA_WIDTH {
sca8er 2:5853bf44af9f 1544 Width8Bits,
sca8er 2:5853bf44af9f 1545 Width16Bits,
sca8er 2:5853bf44af9f 1546 Width32Bits,
sca8er 2:5853bf44af9f 1547 MaximumDmaWidth
sca8er 2:5853bf44af9f 1548 } DMA_WIDTH, *PDMA_WIDTH;
sca8er 2:5853bf44af9f 1549
sca8er 2:5853bf44af9f 1550 typedef enum _DMA_SPEED {
sca8er 2:5853bf44af9f 1551 Compatible,
sca8er 2:5853bf44af9f 1552 TypeA,
sca8er 2:5853bf44af9f 1553 TypeB,
sca8er 2:5853bf44af9f 1554 TypeC,
sca8er 2:5853bf44af9f 1555 TypeF,
sca8er 2:5853bf44af9f 1556 MaximumDmaSpeed
sca8er 2:5853bf44af9f 1557 } DMA_SPEED, *PDMA_SPEED;
sca8er 2:5853bf44af9f 1558
sca8er 2:5853bf44af9f 1559 /* DEVICE_DESCRIPTION.Version */
sca8er 2:5853bf44af9f 1560
sca8er 2:5853bf44af9f 1561 #define DEVICE_DESCRIPTION_VERSION 0x0000
sca8er 2:5853bf44af9f 1562 #define DEVICE_DESCRIPTION_VERSION1 0x0001
sca8er 2:5853bf44af9f 1563 #define DEVICE_DESCRIPTION_VERSION2 0x0002
sca8er 2:5853bf44af9f 1564
sca8er 2:5853bf44af9f 1565 typedef struct _DEVICE_DESCRIPTION {
sca8er 2:5853bf44af9f 1566 ULONG Version;
sca8er 2:5853bf44af9f 1567 BOOLEAN Master;
sca8er 2:5853bf44af9f 1568 BOOLEAN ScatterGather;
sca8er 2:5853bf44af9f 1569 BOOLEAN DemandMode;
sca8er 2:5853bf44af9f 1570 BOOLEAN AutoInitialize;
sca8er 2:5853bf44af9f 1571 BOOLEAN Dma32BitAddresses;
sca8er 2:5853bf44af9f 1572 BOOLEAN IgnoreCount;
sca8er 2:5853bf44af9f 1573 BOOLEAN Reserved1;
sca8er 2:5853bf44af9f 1574 BOOLEAN Dma64BitAddresses;
sca8er 2:5853bf44af9f 1575 ULONG BusNumber;
sca8er 2:5853bf44af9f 1576 ULONG DmaChannel;
sca8er 2:5853bf44af9f 1577 INTERFACE_TYPE InterfaceType;
sca8er 2:5853bf44af9f 1578 DMA_WIDTH DmaWidth;
sca8er 2:5853bf44af9f 1579 DMA_SPEED DmaSpeed;
sca8er 2:5853bf44af9f 1580 ULONG MaximumLength;
sca8er 2:5853bf44af9f 1581 ULONG DmaPort;
sca8er 2:5853bf44af9f 1582 } DEVICE_DESCRIPTION, *PDEVICE_DESCRIPTION;
sca8er 2:5853bf44af9f 1583
sca8er 2:5853bf44af9f 1584 /* VPB.Flags */
sca8er 2:5853bf44af9f 1585 #define VPB_MOUNTED 0x0001
sca8er 2:5853bf44af9f 1586 #define VPB_LOCKED 0x0002
sca8er 2:5853bf44af9f 1587 #define VPB_PERSISTENT 0x0004
sca8er 2:5853bf44af9f 1588 #define VPB_REMOVE_PENDING 0x0008
sca8er 2:5853bf44af9f 1589 #define VPB_RAW_MOUNT 0x0010
sca8er 2:5853bf44af9f 1590
sca8er 2:5853bf44af9f 1591 #define MAXIMUM_VOLUME_LABEL_LENGTH (32 * sizeof(WCHAR))
sca8er 2:5853bf44af9f 1592
sca8er 2:5853bf44af9f 1593 typedef struct _VPB {
sca8er 2:5853bf44af9f 1594 CSHORT Type;
sca8er 2:5853bf44af9f 1595 CSHORT Size;
sca8er 2:5853bf44af9f 1596 USHORT Flags;
sca8er 2:5853bf44af9f 1597 USHORT VolumeLabelLength;
sca8er 2:5853bf44af9f 1598 struct _DEVICE_OBJECT *DeviceObject;
sca8er 2:5853bf44af9f 1599 struct _DEVICE_OBJECT *RealDevice;
sca8er 2:5853bf44af9f 1600 ULONG SerialNumber;
sca8er 2:5853bf44af9f 1601 ULONG ReferenceCount;
sca8er 2:5853bf44af9f 1602 WCHAR VolumeLabel[MAXIMUM_VOLUME_LABEL_LENGTH / sizeof(WCHAR)];
sca8er 2:5853bf44af9f 1603 } VPB, *PVPB;
sca8er 2:5853bf44af9f 1604
sca8er 2:5853bf44af9f 1605 /* DEVICE_OBJECT.Flags */
sca8er 2:5853bf44af9f 1606
sca8er 2:5853bf44af9f 1607 #define DO_VERIFY_VOLUME 0x00000002
sca8er 2:5853bf44af9f 1608 #define DO_BUFFERED_IO 0x00000004
sca8er 2:5853bf44af9f 1609 #define DO_EXCLUSIVE 0x00000008
sca8er 2:5853bf44af9f 1610 #define DO_DIRECT_IO 0x00000010
sca8er 2:5853bf44af9f 1611 #define DO_MAP_IO_BUFFER 0x00000020
sca8er 2:5853bf44af9f 1612 #define DO_DEVICE_HAS_NAME 0x00000040
sca8er 2:5853bf44af9f 1613 #define DO_DEVICE_INITIALIZING 0x00000080
sca8er 2:5853bf44af9f 1614 #define DO_SYSTEM_BOOT_PARTITION 0x00000100
sca8er 2:5853bf44af9f 1615 #define DO_LONG_TERM_REQUESTS 0x00000200
sca8er 2:5853bf44af9f 1616 #define DO_NEVER_LAST_DEVICE 0x00000400
sca8er 2:5853bf44af9f 1617 #define DO_SHUTDOWN_REGISTERED 0x00000800
sca8er 2:5853bf44af9f 1618 #define DO_BUS_ENUMERATED_DEVICE 0x00001000
sca8er 2:5853bf44af9f 1619 #define DO_POWER_PAGABLE 0x00002000
sca8er 2:5853bf44af9f 1620 #define DO_POWER_INRUSH 0x00004000
sca8er 2:5853bf44af9f 1621 #define DO_LOW_PRIORITY_FILESYSTEM 0x00010000
sca8er 2:5853bf44af9f 1622
sca8er 2:5853bf44af9f 1623 /* DEVICE_OBJECT.Characteristics */
sca8er 2:5853bf44af9f 1624
sca8er 2:5853bf44af9f 1625 #define FILE_REMOVABLE_MEDIA 0x00000001
sca8er 2:5853bf44af9f 1626 #define FILE_READ_ONLY_DEVICE 0x00000002
sca8er 2:5853bf44af9f 1627 #define FILE_FLOPPY_DISKETTE 0x00000004
sca8er 2:5853bf44af9f 1628 #define FILE_WRITE_ONCE_MEDIA 0x00000008
sca8er 2:5853bf44af9f 1629 #define FILE_REMOTE_DEVICE 0x00000010
sca8er 2:5853bf44af9f 1630 #define FILE_DEVICE_IS_MOUNTED 0x00000020
sca8er 2:5853bf44af9f 1631 #define FILE_VIRTUAL_VOLUME 0x00000040
sca8er 2:5853bf44af9f 1632 #define FILE_AUTOGENERATED_DEVICE_NAME 0x00000080
sca8er 2:5853bf44af9f 1633 #define FILE_DEVICE_SECURE_OPEN 0x00000100
sca8er 2:5853bf44af9f 1634
sca8er 2:5853bf44af9f 1635 /* DEVICE_OBJECT.AlignmentRequirement */
sca8er 2:5853bf44af9f 1636
sca8er 2:5853bf44af9f 1637 #define FILE_BYTE_ALIGNMENT 0x00000000
sca8er 2:5853bf44af9f 1638 #define FILE_WORD_ALIGNMENT 0x00000001
sca8er 2:5853bf44af9f 1639 #define FILE_LONG_ALIGNMENT 0x00000003
sca8er 2:5853bf44af9f 1640 #define FILE_QUAD_ALIGNMENT 0x00000007
sca8er 2:5853bf44af9f 1641 #define FILE_OCTA_ALIGNMENT 0x0000000f
sca8er 2:5853bf44af9f 1642 #define FILE_32_BYTE_ALIGNMENT 0x0000001f
sca8er 2:5853bf44af9f 1643 #define FILE_64_BYTE_ALIGNMENT 0x0000003f
sca8er 2:5853bf44af9f 1644 #define FILE_128_BYTE_ALIGNMENT 0x0000007f
sca8er 2:5853bf44af9f 1645 #define FILE_256_BYTE_ALIGNMENT 0x000000ff
sca8er 2:5853bf44af9f 1646 #define FILE_512_BYTE_ALIGNMENT 0x000001ff
sca8er 2:5853bf44af9f 1647
sca8er 2:5853bf44af9f 1648 /* DEVICE_OBJECT.DeviceType */
sca8er 2:5853bf44af9f 1649
sca8er 2:5853bf44af9f 1650 #define DEVICE_TYPE ULONG
sca8er 2:5853bf44af9f 1651
sca8er 2:5853bf44af9f 1652 #define FILE_DEVICE_BEEP 0x00000001
sca8er 2:5853bf44af9f 1653 #define FILE_DEVICE_CD_ROM 0x00000002
sca8er 2:5853bf44af9f 1654 #define FILE_DEVICE_CD_ROM_FILE_SYSTEM 0x00000003
sca8er 2:5853bf44af9f 1655 #define FILE_DEVICE_CONTROLLER 0x00000004
sca8er 2:5853bf44af9f 1656 #define FILE_DEVICE_DATALINK 0x00000005
sca8er 2:5853bf44af9f 1657 #define FILE_DEVICE_DFS 0x00000006
sca8er 2:5853bf44af9f 1658 #define FILE_DEVICE_DISK 0x00000007
sca8er 2:5853bf44af9f 1659 #define FILE_DEVICE_DISK_FILE_SYSTEM 0x00000008
sca8er 2:5853bf44af9f 1660 #define FILE_DEVICE_FILE_SYSTEM 0x00000009
sca8er 2:5853bf44af9f 1661 #define FILE_DEVICE_INPORT_PORT 0x0000000a
sca8er 2:5853bf44af9f 1662 #define FILE_DEVICE_KEYBOARD 0x0000000b
sca8er 2:5853bf44af9f 1663 #define FILE_DEVICE_MAILSLOT 0x0000000c
sca8er 2:5853bf44af9f 1664 #define FILE_DEVICE_MIDI_IN 0x0000000d
sca8er 2:5853bf44af9f 1665 #define FILE_DEVICE_MIDI_OUT 0x0000000e
sca8er 2:5853bf44af9f 1666 #define FILE_DEVICE_MOUSE 0x0000000f
sca8er 2:5853bf44af9f 1667 #define FILE_DEVICE_MULTI_UNC_PROVIDER 0x00000010
sca8er 2:5853bf44af9f 1668 #define FILE_DEVICE_NAMED_PIPE 0x00000011
sca8er 2:5853bf44af9f 1669 #define FILE_DEVICE_NETWORK 0x00000012
sca8er 2:5853bf44af9f 1670 #define FILE_DEVICE_NETWORK_BROWSER 0x00000013
sca8er 2:5853bf44af9f 1671 #define FILE_DEVICE_NETWORK_FILE_SYSTEM 0x00000014
sca8er 2:5853bf44af9f 1672 #define FILE_DEVICE_NULL 0x00000015
sca8er 2:5853bf44af9f 1673 #define FILE_DEVICE_PARALLEL_PORT 0x00000016
sca8er 2:5853bf44af9f 1674 #define FILE_DEVICE_PHYSICAL_NETCARD 0x00000017
sca8er 2:5853bf44af9f 1675 #define FILE_DEVICE_PRINTER 0x00000018
sca8er 2:5853bf44af9f 1676 #define FILE_DEVICE_SCANNER 0x00000019
sca8er 2:5853bf44af9f 1677 #define FILE_DEVICE_SERIAL_MOUSE_PORT 0x0000001a
sca8er 2:5853bf44af9f 1678 #define FILE_DEVICE_SERIAL_PORT 0x0000001b
sca8er 2:5853bf44af9f 1679 #define FILE_DEVICE_SCREEN 0x0000001c
sca8er 2:5853bf44af9f 1680 #define FILE_DEVICE_SOUND 0x0000001d
sca8er 2:5853bf44af9f 1681 #define FILE_DEVICE_STREAMS 0x0000001e
sca8er 2:5853bf44af9f 1682 #define FILE_DEVICE_TAPE 0x0000001f
sca8er 2:5853bf44af9f 1683 #define FILE_DEVICE_TAPE_FILE_SYSTEM 0x00000020
sca8er 2:5853bf44af9f 1684 #define FILE_DEVICE_TRANSPORT 0x00000021
sca8er 2:5853bf44af9f 1685 #define FILE_DEVICE_UNKNOWN 0x00000022
sca8er 2:5853bf44af9f 1686 #define FILE_DEVICE_VIDEO 0x00000023
sca8er 2:5853bf44af9f 1687 #define FILE_DEVICE_VIRTUAL_DISK 0x00000024
sca8er 2:5853bf44af9f 1688 #define FILE_DEVICE_WAVE_IN 0x00000025
sca8er 2:5853bf44af9f 1689 #define FILE_DEVICE_WAVE_OUT 0x00000026
sca8er 2:5853bf44af9f 1690 #define FILE_DEVICE_8042_PORT 0x00000027
sca8er 2:5853bf44af9f 1691 #define FILE_DEVICE_NETWORK_REDIRECTOR 0x00000028
sca8er 2:5853bf44af9f 1692 #define FILE_DEVICE_BATTERY 0x00000029
sca8er 2:5853bf44af9f 1693 #define FILE_DEVICE_BUS_EXTENDER 0x0000002a
sca8er 2:5853bf44af9f 1694 #define FILE_DEVICE_MODEM 0x0000002b
sca8er 2:5853bf44af9f 1695 #define FILE_DEVICE_VDM 0x0000002c
sca8er 2:5853bf44af9f 1696 #define FILE_DEVICE_MASS_STORAGE 0x0000002d
sca8er 2:5853bf44af9f 1697 #define FILE_DEVICE_SMB 0x0000002e
sca8er 2:5853bf44af9f 1698 #define FILE_DEVICE_KS 0x0000002f
sca8er 2:5853bf44af9f 1699 #define FILE_DEVICE_CHANGER 0x00000030
sca8er 2:5853bf44af9f 1700 #define FILE_DEVICE_SMARTCARD 0x00000031
sca8er 2:5853bf44af9f 1701 #define FILE_DEVICE_ACPI 0x00000032
sca8er 2:5853bf44af9f 1702 #define FILE_DEVICE_DVD 0x00000033
sca8er 2:5853bf44af9f 1703 #define FILE_DEVICE_FULLSCREEN_VIDEO 0x00000034
sca8er 2:5853bf44af9f 1704 #define FILE_DEVICE_DFS_FILE_SYSTEM 0x00000035
sca8er 2:5853bf44af9f 1705 #define FILE_DEVICE_DFS_VOLUME 0x00000036
sca8er 2:5853bf44af9f 1706 #define FILE_DEVICE_SERENUM 0x00000037
sca8er 2:5853bf44af9f 1707 #define FILE_DEVICE_TERMSRV 0x00000038
sca8er 2:5853bf44af9f 1708 #define FILE_DEVICE_KSEC 0x00000039
sca8er 2:5853bf44af9f 1709 #define FILE_DEVICE_FIPS 0x0000003a
sca8er 2:5853bf44af9f 1710
sca8er 2:5853bf44af9f 1711 typedef struct _DEVICE_OBJECT {
sca8er 2:5853bf44af9f 1712 CSHORT Type;
sca8er 2:5853bf44af9f 1713 USHORT Size;
sca8er 2:5853bf44af9f 1714 LONG ReferenceCount;
sca8er 2:5853bf44af9f 1715 struct _DRIVER_OBJECT *DriverObject;
sca8er 2:5853bf44af9f 1716 struct _DEVICE_OBJECT *NextDevice;
sca8er 2:5853bf44af9f 1717 struct _DEVICE_OBJECT *AttachedDevice;
sca8er 2:5853bf44af9f 1718 struct _IRP *CurrentIrp;
sca8er 2:5853bf44af9f 1719 PIO_TIMER Timer;
sca8er 2:5853bf44af9f 1720 ULONG Flags;
sca8er 2:5853bf44af9f 1721 ULONG Characteristics;
sca8er 2:5853bf44af9f 1722 PVPB Vpb;
sca8er 2:5853bf44af9f 1723 PVOID DeviceExtension;
sca8er 2:5853bf44af9f 1724 DEVICE_TYPE DeviceType;
sca8er 2:5853bf44af9f 1725 CCHAR StackSize;
sca8er 2:5853bf44af9f 1726 union {
sca8er 2:5853bf44af9f 1727 LIST_ENTRY ListEntry;
sca8er 2:5853bf44af9f 1728 WAIT_CONTEXT_BLOCK Wcb;
sca8er 2:5853bf44af9f 1729 } Queue;
sca8er 2:5853bf44af9f 1730 ULONG AlignmentRequirement;
sca8er 2:5853bf44af9f 1731 KDEVICE_QUEUE DeviceQueue;
sca8er 2:5853bf44af9f 1732 KDPC Dpc;
sca8er 2:5853bf44af9f 1733 ULONG ActiveThreadCount;
sca8er 2:5853bf44af9f 1734 PSECURITY_DESCRIPTOR SecurityDescriptor;
sca8er 2:5853bf44af9f 1735 KEVENT DeviceLock;
sca8er 2:5853bf44af9f 1736 USHORT SectorSize;
sca8er 2:5853bf44af9f 1737 USHORT Spare1;
sca8er 2:5853bf44af9f 1738 struct _DEVOBJ_EXTENSION *DeviceObjectExtension;
sca8er 2:5853bf44af9f 1739 PVOID Reserved;
sca8er 2:5853bf44af9f 1740 } DEVICE_OBJECT;
sca8er 2:5853bf44af9f 1741 typedef struct _DEVICE_OBJECT *PDEVICE_OBJECT;
sca8er 2:5853bf44af9f 1742
sca8er 2:5853bf44af9f 1743 typedef enum _DEVICE_RELATION_TYPE {
sca8er 2:5853bf44af9f 1744 BusRelations,
sca8er 2:5853bf44af9f 1745 EjectionRelations,
sca8er 2:5853bf44af9f 1746 PowerRelations,
sca8er 2:5853bf44af9f 1747 RemovalRelations,
sca8er 2:5853bf44af9f 1748 TargetDeviceRelation,
sca8er 2:5853bf44af9f 1749 SingleBusRelations
sca8er 2:5853bf44af9f 1750 } DEVICE_RELATION_TYPE, *PDEVICE_RELATION_TYPE;
sca8er 2:5853bf44af9f 1751
sca8er 2:5853bf44af9f 1752 typedef struct _DEVICE_RELATIONS {
sca8er 2:5853bf44af9f 1753 ULONG Count;
sca8er 2:5853bf44af9f 1754 PDEVICE_OBJECT Objects[1];
sca8er 2:5853bf44af9f 1755 } DEVICE_RELATIONS, *PDEVICE_RELATIONS;
sca8er 2:5853bf44af9f 1756
sca8er 2:5853bf44af9f 1757 typedef struct _SCATTER_GATHER_ELEMENT {
sca8er 2:5853bf44af9f 1758 PHYSICAL_ADDRESS Address;
sca8er 2:5853bf44af9f 1759 ULONG Length;
sca8er 2:5853bf44af9f 1760 ULONG_PTR Reserved;
sca8er 2:5853bf44af9f 1761 } SCATTER_GATHER_ELEMENT, *PSCATTER_GATHER_ELEMENT;
sca8er 2:5853bf44af9f 1762
sca8er 2:5853bf44af9f 1763 typedef struct _SCATTER_GATHER_LIST {
sca8er 2:5853bf44af9f 1764 ULONG NumberOfElements;
sca8er 2:5853bf44af9f 1765 ULONG_PTR Reserved;
sca8er 2:5853bf44af9f 1766 SCATTER_GATHER_ELEMENT Elements[0];
sca8er 2:5853bf44af9f 1767 } SCATTER_GATHER_LIST, *PSCATTER_GATHER_LIST;
sca8er 2:5853bf44af9f 1768
sca8er 2:5853bf44af9f 1769 typedef struct _MDL {
sca8er 2:5853bf44af9f 1770 struct _MDL *Next;
sca8er 2:5853bf44af9f 1771 CSHORT Size;
sca8er 2:5853bf44af9f 1772 CSHORT MdlFlags;
sca8er 2:5853bf44af9f 1773 struct _EPROCESS *Process;
sca8er 2:5853bf44af9f 1774 PVOID MappedSystemVa;
sca8er 2:5853bf44af9f 1775 PVOID StartVa;
sca8er 2:5853bf44af9f 1776 ULONG ByteCount;
sca8er 2:5853bf44af9f 1777 ULONG ByteOffset;
sca8er 2:5853bf44af9f 1778 } MDL, *PMDL;
sca8er 2:5853bf44af9f 1779
sca8er 2:5853bf44af9f 1780 #define MDL_MAPPED_TO_SYSTEM_VA 0x0001
sca8er 2:5853bf44af9f 1781 #define MDL_PAGES_LOCKED 0x0002
sca8er 2:5853bf44af9f 1782 #define MDL_SOURCE_IS_NONPAGED_POOL 0x0004
sca8er 2:5853bf44af9f 1783 #define MDL_ALLOCATED_FIXED_SIZE 0x0008
sca8er 2:5853bf44af9f 1784 #define MDL_PARTIAL 0x0010
sca8er 2:5853bf44af9f 1785 #define MDL_PARTIAL_HAS_BEEN_MAPPED 0x0020
sca8er 2:5853bf44af9f 1786 #define MDL_IO_PAGE_READ 0x0040
sca8er 2:5853bf44af9f 1787 #define MDL_WRITE_OPERATION 0x0080
sca8er 2:5853bf44af9f 1788 #define MDL_PARENT_MAPPED_SYSTEM_VA 0x0100
sca8er 2:5853bf44af9f 1789 #define MDL_FREE_EXTRA_PTES 0x0200
sca8er 2:5853bf44af9f 1790 #define MDL_IO_SPACE 0x0800
sca8er 2:5853bf44af9f 1791 #define MDL_NETWORK_HEADER 0x1000
sca8er 2:5853bf44af9f 1792 #define MDL_MAPPING_CAN_FAIL 0x2000
sca8er 2:5853bf44af9f 1793 #define MDL_ALLOCATED_MUST_SUCCEED 0x4000
sca8er 2:5853bf44af9f 1794
sca8er 2:5853bf44af9f 1795 #define MDL_MAPPING_FLAGS ( \
sca8er 2:5853bf44af9f 1796 MDL_MAPPED_TO_SYSTEM_VA | \
sca8er 2:5853bf44af9f 1797 MDL_PAGES_LOCKED | \
sca8er 2:5853bf44af9f 1798 MDL_SOURCE_IS_NONPAGED_POOL | \
sca8er 2:5853bf44af9f 1799 MDL_PARTIAL_HAS_BEEN_MAPPED | \
sca8er 2:5853bf44af9f 1800 MDL_PARENT_MAPPED_SYSTEM_VA | \
sca8er 2:5853bf44af9f 1801 MDL_SYSTEM_VA | \
sca8er 2:5853bf44af9f 1802 MDL_IO_SPACE)
sca8er 2:5853bf44af9f 1803
sca8er 2:5853bf44af9f 1804 typedef VOID DDKAPI
sca8er 2:5853bf44af9f 1805 (*PPUT_DMA_ADAPTER)(
sca8er 2:5853bf44af9f 1806 /*IN*/ PDMA_ADAPTER DmaAdapter);
sca8er 2:5853bf44af9f 1807
sca8er 2:5853bf44af9f 1808 typedef PVOID DDKAPI
sca8er 2:5853bf44af9f 1809 (*PALLOCATE_COMMON_BUFFER)(
sca8er 2:5853bf44af9f 1810 /*IN*/ PDMA_ADAPTER DmaAdapter,
sca8er 2:5853bf44af9f 1811 /*IN*/ ULONG Length,
sca8er 2:5853bf44af9f 1812 /*OUT*/ PPHYSICAL_ADDRESS LogicalAddress,
sca8er 2:5853bf44af9f 1813 /*IN*/ BOOLEAN CacheEnabled);
sca8er 2:5853bf44af9f 1814
sca8er 2:5853bf44af9f 1815 typedef VOID DDKAPI
sca8er 2:5853bf44af9f 1816 (*PFREE_COMMON_BUFFER)(
sca8er 2:5853bf44af9f 1817 /*IN*/ PDMA_ADAPTER DmaAdapter,
sca8er 2:5853bf44af9f 1818 /*IN*/ ULONG Length,
sca8er 2:5853bf44af9f 1819 /*IN*/ PHYSICAL_ADDRESS LogicalAddress,
sca8er 2:5853bf44af9f 1820 /*IN*/ PVOID VirtualAddress,
sca8er 2:5853bf44af9f 1821 /*IN*/ BOOLEAN CacheEnabled);
sca8er 2:5853bf44af9f 1822
sca8er 2:5853bf44af9f 1823 typedef NTSTATUS DDKAPI
sca8er 2:5853bf44af9f 1824 (*PALLOCATE_ADAPTER_CHANNEL)(
sca8er 2:5853bf44af9f 1825 /*IN*/ PDMA_ADAPTER DmaAdapter,
sca8er 2:5853bf44af9f 1826 /*IN*/ PDEVICE_OBJECT DeviceObject,
sca8er 2:5853bf44af9f 1827 /*IN*/ ULONG NumberOfMapRegisters,
sca8er 2:5853bf44af9f 1828 /*IN*/ PDRIVER_CONTROL ExecutionRoutine,
sca8er 2:5853bf44af9f 1829 /*IN*/ PVOID Context);
sca8er 2:5853bf44af9f 1830
sca8er 2:5853bf44af9f 1831 typedef BOOLEAN DDKAPI
sca8er 2:5853bf44af9f 1832 (*PFLUSH_ADAPTER_BUFFERS)(
sca8er 2:5853bf44af9f 1833 /*IN*/ PDMA_ADAPTER DmaAdapter,
sca8er 2:5853bf44af9f 1834 /*IN*/ PMDL Mdl,
sca8er 2:5853bf44af9f 1835 /*IN*/ PVOID MapRegisterBase,
sca8er 2:5853bf44af9f 1836 /*IN*/ PVOID CurrentVa,
sca8er 2:5853bf44af9f 1837 /*IN*/ ULONG Length,
sca8er 2:5853bf44af9f 1838 /*IN*/ BOOLEAN WriteToDevice);
sca8er 2:5853bf44af9f 1839
sca8er 2:5853bf44af9f 1840 typedef VOID DDKAPI
sca8er 2:5853bf44af9f 1841 (*PFREE_ADAPTER_CHANNEL)(
sca8er 2:5853bf44af9f 1842 /*IN*/ PDMA_ADAPTER DmaAdapter);
sca8er 2:5853bf44af9f 1843
sca8er 2:5853bf44af9f 1844 typedef VOID DDKAPI
sca8er 2:5853bf44af9f 1845 (*PFREE_MAP_REGISTERS)(
sca8er 2:5853bf44af9f 1846 /*IN*/ PDMA_ADAPTER DmaAdapter,
sca8er 2:5853bf44af9f 1847 PVOID MapRegisterBase,
sca8er 2:5853bf44af9f 1848 ULONG NumberOfMapRegisters);
sca8er 2:5853bf44af9f 1849
sca8er 2:5853bf44af9f 1850 typedef PHYSICAL_ADDRESS DDKAPI
sca8er 2:5853bf44af9f 1851 (*PMAP_TRANSFER)(
sca8er 2:5853bf44af9f 1852 /*IN*/ PDMA_ADAPTER DmaAdapter,
sca8er 2:5853bf44af9f 1853 /*IN*/ PMDL Mdl,
sca8er 2:5853bf44af9f 1854 /*IN*/ PVOID MapRegisterBase,
sca8er 2:5853bf44af9f 1855 /*IN*/ PVOID CurrentVa,
sca8er 2:5853bf44af9f 1856 /*IN OUT*/ PULONG Length,
sca8er 2:5853bf44af9f 1857 /*IN*/ BOOLEAN WriteToDevice);
sca8er 2:5853bf44af9f 1858
sca8er 2:5853bf44af9f 1859 typedef ULONG DDKAPI
sca8er 2:5853bf44af9f 1860 (*PGET_DMA_ALIGNMENT)(
sca8er 2:5853bf44af9f 1861 /*IN*/ PDMA_ADAPTER DmaAdapter);
sca8er 2:5853bf44af9f 1862
sca8er 2:5853bf44af9f 1863 typedef ULONG DDKAPI
sca8er 2:5853bf44af9f 1864 (*PREAD_DMA_COUNTER)(
sca8er 2:5853bf44af9f 1865 /*IN*/ PDMA_ADAPTER DmaAdapter);
sca8er 2:5853bf44af9f 1866
sca8er 2:5853bf44af9f 1867 typedef NTSTATUS DDKAPI
sca8er 2:5853bf44af9f 1868 (*PGET_SCATTER_GATHER_LIST)(
sca8er 2:5853bf44af9f 1869 /*IN*/ PDMA_ADAPTER DmaAdapter,
sca8er 2:5853bf44af9f 1870 /*IN*/ PDEVICE_OBJECT DeviceObject,
sca8er 2:5853bf44af9f 1871 /*IN*/ PMDL Mdl,
sca8er 2:5853bf44af9f 1872 /*IN*/ PVOID CurrentVa,
sca8er 2:5853bf44af9f 1873 /*IN*/ ULONG Length,
sca8er 2:5853bf44af9f 1874 /*IN*/ PDRIVER_LIST_CONTROL ExecutionRoutine,
sca8er 2:5853bf44af9f 1875 /*IN*/ PVOID Context,
sca8er 2:5853bf44af9f 1876 /*IN*/ BOOLEAN WriteToDevice);
sca8er 2:5853bf44af9f 1877
sca8er 2:5853bf44af9f 1878 typedef VOID DDKAPI
sca8er 2:5853bf44af9f 1879 (*PPUT_SCATTER_GATHER_LIST)(
sca8er 2:5853bf44af9f 1880 /*IN*/ PDMA_ADAPTER DmaAdapter,
sca8er 2:5853bf44af9f 1881 /*IN*/ PSCATTER_GATHER_LIST ScatterGather,
sca8er 2:5853bf44af9f 1882 /*IN*/ BOOLEAN WriteToDevice);
sca8er 2:5853bf44af9f 1883
sca8er 2:5853bf44af9f 1884 typedef NTSTATUS DDKAPI
sca8er 2:5853bf44af9f 1885 (*PCALCULATE_SCATTER_GATHER_LIST_SIZE)(
sca8er 2:5853bf44af9f 1886 /*IN*/ PDMA_ADAPTER DmaAdapter,
sca8er 2:5853bf44af9f 1887 /*IN*/ PMDL Mdl /*OPTIONAL*/,
sca8er 2:5853bf44af9f 1888 /*IN*/ PVOID CurrentVa,
sca8er 2:5853bf44af9f 1889 /*IN*/ ULONG Length,
sca8er 2:5853bf44af9f 1890 /*OUT*/ PULONG ScatterGatherListSize,
sca8er 2:5853bf44af9f 1891 /*OUT*/ PULONG pNumberOfMapRegisters /*OPTIONAL*/);
sca8er 2:5853bf44af9f 1892
sca8er 2:5853bf44af9f 1893 typedef NTSTATUS DDKAPI
sca8er 2:5853bf44af9f 1894 (*PBUILD_SCATTER_GATHER_LIST)(
sca8er 2:5853bf44af9f 1895 /*IN*/ PDMA_ADAPTER DmaAdapter,
sca8er 2:5853bf44af9f 1896 /*IN*/ PDEVICE_OBJECT DeviceObject,
sca8er 2:5853bf44af9f 1897 /*IN*/ PMDL Mdl,
sca8er 2:5853bf44af9f 1898 /*IN*/ PVOID CurrentVa,
sca8er 2:5853bf44af9f 1899 /*IN*/ ULONG Length,
sca8er 2:5853bf44af9f 1900 /*IN*/ PDRIVER_LIST_CONTROL ExecutionRoutine,
sca8er 2:5853bf44af9f 1901 /*IN*/ PVOID Context,
sca8er 2:5853bf44af9f 1902 /*IN*/ BOOLEAN WriteToDevice,
sca8er 2:5853bf44af9f 1903 /*IN*/ PVOID ScatterGatherBuffer,
sca8er 2:5853bf44af9f 1904 /*IN*/ ULONG ScatterGatherLength);
sca8er 2:5853bf44af9f 1905
sca8er 2:5853bf44af9f 1906 typedef NTSTATUS DDKAPI
sca8er 2:5853bf44af9f 1907 (*PBUILD_MDL_FROM_SCATTER_GATHER_LIST)(
sca8er 2:5853bf44af9f 1908 /*IN*/ PDMA_ADAPTER DmaAdapter,
sca8er 2:5853bf44af9f 1909 /*IN*/ PSCATTER_GATHER_LIST ScatterGather,
sca8er 2:5853bf44af9f 1910 /*IN*/ PMDL OriginalMdl,
sca8er 2:5853bf44af9f 1911 /*OUT*/ PMDL *TargetMdl);
sca8er 2:5853bf44af9f 1912
sca8er 2:5853bf44af9f 1913 typedef struct _DMA_OPERATIONS {
sca8er 2:5853bf44af9f 1914 ULONG Size;
sca8er 2:5853bf44af9f 1915 PPUT_DMA_ADAPTER PutDmaAdapter;
sca8er 2:5853bf44af9f 1916 PALLOCATE_COMMON_BUFFER AllocateCommonBuffer;
sca8er 2:5853bf44af9f 1917 PFREE_COMMON_BUFFER FreeCommonBuffer;
sca8er 2:5853bf44af9f 1918 PALLOCATE_ADAPTER_CHANNEL AllocateAdapterChannel;
sca8er 2:5853bf44af9f 1919 PFLUSH_ADAPTER_BUFFERS FlushAdapterBuffers;
sca8er 2:5853bf44af9f 1920 PFREE_ADAPTER_CHANNEL FreeAdapterChannel;
sca8er 2:5853bf44af9f 1921 PFREE_MAP_REGISTERS FreeMapRegisters;
sca8er 2:5853bf44af9f 1922 PMAP_TRANSFER MapTransfer;
sca8er 2:5853bf44af9f 1923 PGET_DMA_ALIGNMENT GetDmaAlignment;
sca8er 2:5853bf44af9f 1924 PREAD_DMA_COUNTER ReadDmaCounter;
sca8er 2:5853bf44af9f 1925 PGET_SCATTER_GATHER_LIST GetScatterGatherList;
sca8er 2:5853bf44af9f 1926 PPUT_SCATTER_GATHER_LIST PutScatterGatherList;
sca8er 2:5853bf44af9f 1927 PCALCULATE_SCATTER_GATHER_LIST_SIZE CalculateScatterGatherList;
sca8er 2:5853bf44af9f 1928 PBUILD_SCATTER_GATHER_LIST BuildScatterGatherList;
sca8er 2:5853bf44af9f 1929 PBUILD_MDL_FROM_SCATTER_GATHER_LIST BuildMdlFromScatterGatherList;
sca8er 2:5853bf44af9f 1930 } DMA_OPERATIONS, *PDMA_OPERATIONS;
sca8er 2:5853bf44af9f 1931
sca8er 2:5853bf44af9f 1932 typedef struct _DMA_ADAPTER {
sca8er 2:5853bf44af9f 1933 USHORT Version;
sca8er 2:5853bf44af9f 1934 USHORT Size;
sca8er 2:5853bf44af9f 1935 PDMA_OPERATIONS DmaOperations;
sca8er 2:5853bf44af9f 1936 } DMA_ADAPTER;
sca8er 2:5853bf44af9f 1937
sca8er 2:5853bf44af9f 1938 typedef enum _FILE_INFORMATION_CLASS {
sca8er 2:5853bf44af9f 1939 FileDirectoryInformation = 1,
sca8er 2:5853bf44af9f 1940 FileFullDirectoryInformation,
sca8er 2:5853bf44af9f 1941 FileBothDirectoryInformation,
sca8er 2:5853bf44af9f 1942 FileBasicInformation,
sca8er 2:5853bf44af9f 1943 FileStandardInformation,
sca8er 2:5853bf44af9f 1944 FileInternalInformation,
sca8er 2:5853bf44af9f 1945 FileEaInformation,
sca8er 2:5853bf44af9f 1946 FileAccessInformation,
sca8er 2:5853bf44af9f 1947 FileNameInformation,
sca8er 2:5853bf44af9f 1948 FileRenameInformation,
sca8er 2:5853bf44af9f 1949 FileLinkInformation,
sca8er 2:5853bf44af9f 1950 FileNamesInformation,
sca8er 2:5853bf44af9f 1951 FileDispositionInformation,
sca8er 2:5853bf44af9f 1952 FilePositionInformation,
sca8er 2:5853bf44af9f 1953 FileFullEaInformation,
sca8er 2:5853bf44af9f 1954 FileModeInformation,
sca8er 2:5853bf44af9f 1955 FileAlignmentInformation,
sca8er 2:5853bf44af9f 1956 FileAllInformation,
sca8er 2:5853bf44af9f 1957 FileAllocationInformation,
sca8er 2:5853bf44af9f 1958 FileEndOfFileInformation,
sca8er 2:5853bf44af9f 1959 FileAlternateNameInformation,
sca8er 2:5853bf44af9f 1960 FileStreamInformation,
sca8er 2:5853bf44af9f 1961 FilePipeInformation,
sca8er 2:5853bf44af9f 1962 FilePipeLocalInformation,
sca8er 2:5853bf44af9f 1963 FilePipeRemoteInformation,
sca8er 2:5853bf44af9f 1964 FileMailslotQueryInformation,
sca8er 2:5853bf44af9f 1965 FileMailslotSetInformation,
sca8er 2:5853bf44af9f 1966 FileCompressionInformation,
sca8er 2:5853bf44af9f 1967 FileObjectIdInformation,
sca8er 2:5853bf44af9f 1968 FileCompletionInformation,
sca8er 2:5853bf44af9f 1969 FileMoveClusterInformation,
sca8er 2:5853bf44af9f 1970 FileQuotaInformation,
sca8er 2:5853bf44af9f 1971 FileReparsePointInformation,
sca8er 2:5853bf44af9f 1972 FileNetworkOpenInformation,
sca8er 2:5853bf44af9f 1973 FileAttributeTagInformation,
sca8er 2:5853bf44af9f 1974 FileTrackingInformation,
sca8er 2:5853bf44af9f 1975 FileIdBothDirectoryInformation,
sca8er 2:5853bf44af9f 1976 FileIdFullDirectoryInformation,
sca8er 2:5853bf44af9f 1977 FileValidDataLengthInformation,
sca8er 2:5853bf44af9f 1978 FileShortNameInformation,
sca8er 2:5853bf44af9f 1979 FileMaximumInformation
sca8er 2:5853bf44af9f 1980 } FILE_INFORMATION_CLASS, *PFILE_INFORMATION_CLASS;
sca8er 2:5853bf44af9f 1981
sca8er 2:5853bf44af9f 1982 typedef struct _FILE_POSITION_INFORMATION {
sca8er 2:5853bf44af9f 1983 LARGE_INTEGER CurrentByteOffset;
sca8er 2:5853bf44af9f 1984 } FILE_POSITION_INFORMATION, *PFILE_POSITION_INFORMATION;
sca8er 2:5853bf44af9f 1985
sca8er 2:5853bf44af9f 1986 typedef struct _FILE_ALIGNMENT_INFORMATION {
sca8er 2:5853bf44af9f 1987 ULONG AlignmentRequirement;
sca8er 2:5853bf44af9f 1988 } FILE_ALIGNMENT_INFORMATION;
sca8er 2:5853bf44af9f 1989
sca8er 2:5853bf44af9f 1990 typedef struct _FILE_NAME_INFORMATION {
sca8er 2:5853bf44af9f 1991 ULONG FileNameLength;
sca8er 2:5853bf44af9f 1992 WCHAR FileName[1];
sca8er 2:5853bf44af9f 1993 } FILE_NAME_INFORMATION, *PFILE_NAME_INFORMATION;
sca8er 2:5853bf44af9f 1994
sca8er 2:5853bf44af9f 1995 typedef struct _FILE_BASIC_INFORMATION {
sca8er 2:5853bf44af9f 1996 LARGE_INTEGER CreationTime;
sca8er 2:5853bf44af9f 1997 LARGE_INTEGER LastAccessTime;
sca8er 2:5853bf44af9f 1998 LARGE_INTEGER LastWriteTime;
sca8er 2:5853bf44af9f 1999 LARGE_INTEGER ChangeTime;
sca8er 2:5853bf44af9f 2000 ULONG FileAttributes;
sca8er 2:5853bf44af9f 2001 } FILE_BASIC_INFORMATION, *PFILE_BASIC_INFORMATION;
sca8er 2:5853bf44af9f 2002
sca8er 2:5853bf44af9f 2003 typedef struct _FILE_STANDARD_INFORMATION {
sca8er 2:5853bf44af9f 2004 LARGE_INTEGER AllocationSize;
sca8er 2:5853bf44af9f 2005 LARGE_INTEGER EndOfFile;
sca8er 2:5853bf44af9f 2006 ULONG NumberOfLinks;
sca8er 2:5853bf44af9f 2007 BOOLEAN DeletePending;
sca8er 2:5853bf44af9f 2008 BOOLEAN Directory;
sca8er 2:5853bf44af9f 2009 } FILE_STANDARD_INFORMATION, *PFILE_STANDARD_INFORMATION;
sca8er 2:5853bf44af9f 2010
sca8er 2:5853bf44af9f 2011 typedef struct _FILE_NETWORK_OPEN_INFORMATION {
sca8er 2:5853bf44af9f 2012 LARGE_INTEGER CreationTime;
sca8er 2:5853bf44af9f 2013 LARGE_INTEGER LastAccessTime;
sca8er 2:5853bf44af9f 2014 LARGE_INTEGER LastWriteTime;
sca8er 2:5853bf44af9f 2015 LARGE_INTEGER ChangeTime;
sca8er 2:5853bf44af9f 2016 LARGE_INTEGER AllocationSize;
sca8er 2:5853bf44af9f 2017 LARGE_INTEGER EndOfFile;
sca8er 2:5853bf44af9f 2018 ULONG FileAttributes;
sca8er 2:5853bf44af9f 2019 } FILE_NETWORK_OPEN_INFORMATION, *PFILE_NETWORK_OPEN_INFORMATION;
sca8er 2:5853bf44af9f 2020
sca8er 2:5853bf44af9f 2021 typedef struct _FILE_ATTRIBUTE_TAG_INFORMATION {
sca8er 2:5853bf44af9f 2022 ULONG FileAttributes;
sca8er 2:5853bf44af9f 2023 ULONG ReparseTag;
sca8er 2:5853bf44af9f 2024 } FILE_ATTRIBUTE_TAG_INFORMATION, *PFILE_ATTRIBUTE_TAG_INFORMATION;
sca8er 2:5853bf44af9f 2025
sca8er 2:5853bf44af9f 2026 typedef struct _FILE_DISPOSITION_INFORMATION {
sca8er 2:5853bf44af9f 2027 BOOLEAN DoDeleteFile;
sca8er 2:5853bf44af9f 2028 } FILE_DISPOSITION_INFORMATION, *PFILE_DISPOSITION_INFORMATION;
sca8er 2:5853bf44af9f 2029
sca8er 2:5853bf44af9f 2030 typedef struct _FILE_END_OF_FILE_INFORMATION {
sca8er 2:5853bf44af9f 2031 LARGE_INTEGER EndOfFile;
sca8er 2:5853bf44af9f 2032 } FILE_END_OF_FILE_INFORMATION, *PFILE_END_OF_FILE_INFORMATION;
sca8er 2:5853bf44af9f 2033
sca8er 2:5853bf44af9f 2034 typedef struct _FILE_VALID_DATA_LENGTH_INFORMATION {
sca8er 2:5853bf44af9f 2035 LARGE_INTEGER ValidDataLength;
sca8er 2:5853bf44af9f 2036 } FILE_VALID_DATA_LENGTH_INFORMATION, *PFILE_VALID_DATA_LENGTH_INFORMATION;
sca8er 2:5853bf44af9f 2037
sca8er 2:5853bf44af9f 2038 typedef enum _FSINFOCLASS {
sca8er 2:5853bf44af9f 2039 FileFsVolumeInformation = 1,
sca8er 2:5853bf44af9f 2040 FileFsLabelInformation,
sca8er 2:5853bf44af9f 2041 FileFsSizeInformation,
sca8er 2:5853bf44af9f 2042 FileFsDeviceInformation,
sca8er 2:5853bf44af9f 2043 FileFsAttributeInformation,
sca8er 2:5853bf44af9f 2044 FileFsControlInformation,
sca8er 2:5853bf44af9f 2045 FileFsFullSizeInformation,
sca8er 2:5853bf44af9f 2046 FileFsObjectIdInformation,
sca8er 2:5853bf44af9f 2047 FileFsDriverPathInformation,
sca8er 2:5853bf44af9f 2048 FileFsMaximumInformation
sca8er 2:5853bf44af9f 2049 } FS_INFORMATION_CLASS, *PFS_INFORMATION_CLASS;
sca8er 2:5853bf44af9f 2050
sca8er 2:5853bf44af9f 2051 typedef struct _FILE_FS_DEVICE_INFORMATION {
sca8er 2:5853bf44af9f 2052 DEVICE_TYPE DeviceType;
sca8er 2:5853bf44af9f 2053 ULONG Characteristics;
sca8er 2:5853bf44af9f 2054 } FILE_FS_DEVICE_INFORMATION, *PFILE_FS_DEVICE_INFORMATION;
sca8er 2:5853bf44af9f 2055
sca8er 2:5853bf44af9f 2056 typedef struct _FILE_FULL_EA_INFORMATION {
sca8er 2:5853bf44af9f 2057 ULONG NextEntryOffset;
sca8er 2:5853bf44af9f 2058 UCHAR Flags;
sca8er 2:5853bf44af9f 2059 UCHAR EaNameLength;
sca8er 2:5853bf44af9f 2060 USHORT EaValueLength;
sca8er 2:5853bf44af9f 2061 CHAR EaName[1];
sca8er 2:5853bf44af9f 2062 } FILE_FULL_EA_INFORMATION, *PFILE_FULL_EA_INFORMATION;
sca8er 2:5853bf44af9f 2063
sca8er 2:5853bf44af9f 2064 typedef ULONG_PTR ERESOURCE_THREAD;
sca8er 2:5853bf44af9f 2065 typedef ERESOURCE_THREAD *PERESOURCE_THREAD;
sca8er 2:5853bf44af9f 2066
sca8er 2:5853bf44af9f 2067 typedef struct _OWNER_ENTRY {
sca8er 2:5853bf44af9f 2068 ERESOURCE_THREAD OwnerThread;
sca8er 2:5853bf44af9f 2069 _ANONYMOUS_UNION union {
sca8er 2:5853bf44af9f 2070 LONG OwnerCount;
sca8er 2:5853bf44af9f 2071 ULONG TableSize;
sca8er 2:5853bf44af9f 2072 } DUMMYUNIONNAME;
sca8er 2:5853bf44af9f 2073 } OWNER_ENTRY, *POWNER_ENTRY;
sca8er 2:5853bf44af9f 2074
sca8er 2:5853bf44af9f 2075 /* ERESOURCE.Flag */
sca8er 2:5853bf44af9f 2076
sca8er 2:5853bf44af9f 2077 #define ResourceNeverExclusive 0x0010
sca8er 2:5853bf44af9f 2078 #define ResourceReleaseByOtherThread 0x0020
sca8er 2:5853bf44af9f 2079 #define ResourceOwnedExclusive 0x0080
sca8er 2:5853bf44af9f 2080
sca8er 2:5853bf44af9f 2081 #define RESOURCE_HASH_TABLE_SIZE 64
sca8er 2:5853bf44af9f 2082
sca8er 2:5853bf44af9f 2083 typedef struct _ERESOURCE {
sca8er 2:5853bf44af9f 2084 LIST_ENTRY SystemResourcesList;
sca8er 2:5853bf44af9f 2085 POWNER_ENTRY OwnerTable;
sca8er 2:5853bf44af9f 2086 SHORT ActiveCount;
sca8er 2:5853bf44af9f 2087 USHORT Flag;
sca8er 2:5853bf44af9f 2088 PKSEMAPHORE SharedWaiters;
sca8er 2:5853bf44af9f 2089 PKEVENT ExclusiveWaiters;
sca8er 2:5853bf44af9f 2090 OWNER_ENTRY OwnerThreads[2];
sca8er 2:5853bf44af9f 2091 ULONG ContentionCount;
sca8er 2:5853bf44af9f 2092 USHORT NumberOfSharedWaiters;
sca8er 2:5853bf44af9f 2093 USHORT NumberOfExclusiveWaiters;
sca8er 2:5853bf44af9f 2094 _ANONYMOUS_UNION union {
sca8er 2:5853bf44af9f 2095 PVOID Address;
sca8er 2:5853bf44af9f 2096 ULONG_PTR CreatorBackTraceIndex;
sca8er 2:5853bf44af9f 2097 } DUMMYUNIONNAME;
sca8er 2:5853bf44af9f 2098 KSPIN_LOCK SpinLock;
sca8er 2:5853bf44af9f 2099 } ERESOURCE, *PERESOURCE;
sca8er 2:5853bf44af9f 2100
sca8er 2:5853bf44af9f 2101 /* NOTE: PVOID for methods to avoid 'assignment from incompatible pointer type' warning */
sca8er 2:5853bf44af9f 2102 typedef struct _DRIVER_EXTENSION {
sca8er 2:5853bf44af9f 2103 struct _DRIVER_OBJECT *DriverObject;
sca8er 2:5853bf44af9f 2104 PVOID AddDevice;
sca8er 2:5853bf44af9f 2105 ULONG Count;
sca8er 2:5853bf44af9f 2106 UNICODE_STRING ServiceKeyName;
sca8er 2:5853bf44af9f 2107 } DRIVER_EXTENSION, *PDRIVER_EXTENSION;
sca8er 2:5853bf44af9f 2108
sca8er 2:5853bf44af9f 2109 typedef BOOLEAN DDKAPI
sca8er 2:5853bf44af9f 2110 (*PFAST_IO_CHECK_IF_POSSIBLE)(
sca8er 2:5853bf44af9f 2111 /*IN*/ struct _FILE_OBJECT *FileObject,
sca8er 2:5853bf44af9f 2112 /*IN*/ PLARGE_INTEGER FileOffset,
sca8er 2:5853bf44af9f 2113 /*IN*/ ULONG Length,
sca8er 2:5853bf44af9f 2114 /*IN*/ BOOLEAN Wait,
sca8er 2:5853bf44af9f 2115 /*IN*/ ULONG LockKey,
sca8er 2:5853bf44af9f 2116 /*IN*/ BOOLEAN CheckForReadOperation,
sca8er 2:5853bf44af9f 2117 /*OUT*/ PIO_STATUS_BLOCK IoStatus,
sca8er 2:5853bf44af9f 2118 /*IN*/ struct _DEVICE_OBJECT *DeviceObject);
sca8er 2:5853bf44af9f 2119
sca8er 2:5853bf44af9f 2120 typedef BOOLEAN DDKAPI
sca8er 2:5853bf44af9f 2121 (*PFAST_IO_READ)(
sca8er 2:5853bf44af9f 2122 /*IN*/ struct _FILE_OBJECT *FileObject,
sca8er 2:5853bf44af9f 2123 /*IN*/ PLARGE_INTEGER FileOffset,
sca8er 2:5853bf44af9f 2124 /*IN*/ ULONG Length,
sca8er 2:5853bf44af9f 2125 /*IN*/ BOOLEAN Wait,
sca8er 2:5853bf44af9f 2126 /*IN*/ ULONG LockKey,
sca8er 2:5853bf44af9f 2127 /*OUT*/ PVOID Buffer,
sca8er 2:5853bf44af9f 2128 /*OUT*/ PIO_STATUS_BLOCK IoStatus,
sca8er 2:5853bf44af9f 2129 /*IN*/ struct _DEVICE_OBJECT *DeviceObject);
sca8er 2:5853bf44af9f 2130
sca8er 2:5853bf44af9f 2131 typedef BOOLEAN DDKAPI
sca8er 2:5853bf44af9f 2132 (*PFAST_IO_WRITE)(
sca8er 2:5853bf44af9f 2133 /*IN*/ struct _FILE_OBJECT *FileObject,
sca8er 2:5853bf44af9f 2134 /*IN*/ PLARGE_INTEGER FileOffset,
sca8er 2:5853bf44af9f 2135 /*IN*/ ULONG Length,
sca8er 2:5853bf44af9f 2136 /*IN*/ BOOLEAN Wait,
sca8er 2:5853bf44af9f 2137 /*IN*/ ULONG LockKey,
sca8er 2:5853bf44af9f 2138 /*IN*/ PVOID Buffer,
sca8er 2:5853bf44af9f 2139 /*OUT*/ PIO_STATUS_BLOCK IoStatus,
sca8er 2:5853bf44af9f 2140 /*IN*/ struct _DEVICE_OBJECT *DeviceObject);
sca8er 2:5853bf44af9f 2141
sca8er 2:5853bf44af9f 2142 typedef BOOLEAN DDKAPI
sca8er 2:5853bf44af9f 2143 (*PFAST_IO_QUERY_BASIC_INFO)(
sca8er 2:5853bf44af9f 2144 /*IN*/ struct _FILE_OBJECT *FileObject,
sca8er 2:5853bf44af9f 2145 /*IN*/ BOOLEAN Wait,
sca8er 2:5853bf44af9f 2146 /*OUT*/ PFILE_BASIC_INFORMATION Buffer,
sca8er 2:5853bf44af9f 2147 /*OUT*/ PIO_STATUS_BLOCK IoStatus,
sca8er 2:5853bf44af9f 2148 /*IN*/ struct _DEVICE_OBJECT *DeviceObject);
sca8er 2:5853bf44af9f 2149
sca8er 2:5853bf44af9f 2150 typedef BOOLEAN DDKAPI
sca8er 2:5853bf44af9f 2151 (*PFAST_IO_QUERY_STANDARD_INFO)(
sca8er 2:5853bf44af9f 2152 /*IN*/ struct _FILE_OBJECT *FileObject,
sca8er 2:5853bf44af9f 2153 /*IN*/ BOOLEAN Wait,
sca8er 2:5853bf44af9f 2154 /*OUT*/ PFILE_STANDARD_INFORMATION Buffer,
sca8er 2:5853bf44af9f 2155 /*OUT*/ PIO_STATUS_BLOCK IoStatus,
sca8er 2:5853bf44af9f 2156 /*IN*/ struct _DEVICE_OBJECT *DeviceObject);
sca8er 2:5853bf44af9f 2157
sca8er 2:5853bf44af9f 2158 typedef BOOLEAN DDKAPI
sca8er 2:5853bf44af9f 2159 (*PFAST_IO_LOCK)(
sca8er 2:5853bf44af9f 2160 /*IN*/ struct _FILE_OBJECT *FileObject,
sca8er 2:5853bf44af9f 2161 /*IN*/ PLARGE_INTEGER FileOffset,
sca8er 2:5853bf44af9f 2162 /*IN*/ PLARGE_INTEGER Length,
sca8er 2:5853bf44af9f 2163 PEPROCESS ProcessId,
sca8er 2:5853bf44af9f 2164 ULONG Key,
sca8er 2:5853bf44af9f 2165 BOOLEAN FailImmediately,
sca8er 2:5853bf44af9f 2166 BOOLEAN ExclusiveLock,
sca8er 2:5853bf44af9f 2167 /*OUT*/ PIO_STATUS_BLOCK IoStatus,
sca8er 2:5853bf44af9f 2168 /*IN*/ struct _DEVICE_OBJECT *DeviceObject);
sca8er 2:5853bf44af9f 2169
sca8er 2:5853bf44af9f 2170 typedef BOOLEAN DDKAPI
sca8er 2:5853bf44af9f 2171 (*PFAST_IO_UNLOCK_SINGLE)(
sca8er 2:5853bf44af9f 2172 /*IN*/ struct _FILE_OBJECT *FileObject,
sca8er 2:5853bf44af9f 2173 /*IN*/ PLARGE_INTEGER FileOffset,
sca8er 2:5853bf44af9f 2174 /*IN*/ PLARGE_INTEGER Length,
sca8er 2:5853bf44af9f 2175 PEPROCESS ProcessId,
sca8er 2:5853bf44af9f 2176 ULONG Key,
sca8er 2:5853bf44af9f 2177 /*OUT*/ PIO_STATUS_BLOCK IoStatus,
sca8er 2:5853bf44af9f 2178 /*IN*/ struct _DEVICE_OBJECT *DeviceObject);
sca8er 2:5853bf44af9f 2179
sca8er 2:5853bf44af9f 2180 typedef BOOLEAN DDKAPI
sca8er 2:5853bf44af9f 2181 (*PFAST_IO_UNLOCK_ALL)(
sca8er 2:5853bf44af9f 2182 /*IN*/ struct _FILE_OBJECT *FileObject,
sca8er 2:5853bf44af9f 2183 PEPROCESS ProcessId,
sca8er 2:5853bf44af9f 2184 /*OUT*/ PIO_STATUS_BLOCK IoStatus,
sca8er 2:5853bf44af9f 2185 /*IN*/ struct _DEVICE_OBJECT *DeviceObject);
sca8er 2:5853bf44af9f 2186
sca8er 2:5853bf44af9f 2187 typedef BOOLEAN DDKAPI
sca8er 2:5853bf44af9f 2188 (*PFAST_IO_UNLOCK_ALL_BY_KEY)(
sca8er 2:5853bf44af9f 2189 /*IN*/ struct _FILE_OBJECT *FileObject,
sca8er 2:5853bf44af9f 2190 PVOID ProcessId,
sca8er 2:5853bf44af9f 2191 ULONG Key,
sca8er 2:5853bf44af9f 2192 /*OUT*/ PIO_STATUS_BLOCK IoStatus,
sca8er 2:5853bf44af9f 2193 /*IN*/ struct _DEVICE_OBJECT *DeviceObject);
sca8er 2:5853bf44af9f 2194
sca8er 2:5853bf44af9f 2195 typedef BOOLEAN DDKAPI
sca8er 2:5853bf44af9f 2196 (*PFAST_IO_DEVICE_CONTROL)(
sca8er 2:5853bf44af9f 2197 /*IN*/ struct _FILE_OBJECT *FileObject,
sca8er 2:5853bf44af9f 2198 /*IN*/ BOOLEAN Wait,
sca8er 2:5853bf44af9f 2199 /*IN*/ PVOID InputBuffer /*OPTIONAL*/,
sca8er 2:5853bf44af9f 2200 /*IN*/ ULONG InputBufferLength,
sca8er 2:5853bf44af9f 2201 /*OUT*/ PVOID OutputBuffer /*OPTIONAL*/,
sca8er 2:5853bf44af9f 2202 /*IN*/ ULONG OutputBufferLength,
sca8er 2:5853bf44af9f 2203 /*IN*/ ULONG IoControlCode,
sca8er 2:5853bf44af9f 2204 /*OUT*/ PIO_STATUS_BLOCK IoStatus,
sca8er 2:5853bf44af9f 2205 /*IN*/ struct _DEVICE_OBJECT *DeviceObject);
sca8er 2:5853bf44af9f 2206
sca8er 2:5853bf44af9f 2207 typedef VOID DDKAPI
sca8er 2:5853bf44af9f 2208 (*PFAST_IO_ACQUIRE_FILE)(
sca8er 2:5853bf44af9f 2209 /*IN*/ struct _FILE_OBJECT *FileObject);
sca8er 2:5853bf44af9f 2210
sca8er 2:5853bf44af9f 2211 typedef VOID DDKAPI
sca8er 2:5853bf44af9f 2212 (*PFAST_IO_RELEASE_FILE)(
sca8er 2:5853bf44af9f 2213 /*IN*/ struct _FILE_OBJECT *FileObject);
sca8er 2:5853bf44af9f 2214
sca8er 2:5853bf44af9f 2215 typedef VOID DDKAPI
sca8er 2:5853bf44af9f 2216 (*PFAST_IO_DETACH_DEVICE)(
sca8er 2:5853bf44af9f 2217 /*IN*/ struct _DEVICE_OBJECT *SourceDevice,
sca8er 2:5853bf44af9f 2218 /*IN*/ struct _DEVICE_OBJECT *TargetDevice);
sca8er 2:5853bf44af9f 2219
sca8er 2:5853bf44af9f 2220 typedef BOOLEAN DDKAPI
sca8er 2:5853bf44af9f 2221 (*PFAST_IO_QUERY_NETWORK_OPEN_INFO)(
sca8er 2:5853bf44af9f 2222 /*IN*/ struct _FILE_OBJECT *FileObject,
sca8er 2:5853bf44af9f 2223 /*IN*/ BOOLEAN Wait,
sca8er 2:5853bf44af9f 2224 /*OUT*/ struct _FILE_NETWORK_OPEN_INFORMATION *Buffer,
sca8er 2:5853bf44af9f 2225 /*OUT*/ struct _IO_STATUS_BLOCK *IoStatus,
sca8er 2:5853bf44af9f 2226 /*IN*/ struct _DEVICE_OBJECT *DeviceObject);
sca8er 2:5853bf44af9f 2227
sca8er 2:5853bf44af9f 2228 typedef NTSTATUS DDKAPI
sca8er 2:5853bf44af9f 2229 (*PFAST_IO_ACQUIRE_FOR_MOD_WRITE)(
sca8er 2:5853bf44af9f 2230 /*IN*/ struct _FILE_OBJECT *FileObject,
sca8er 2:5853bf44af9f 2231 /*IN*/ PLARGE_INTEGER EndingOffset,
sca8er 2:5853bf44af9f 2232 /*OUT*/ struct _ERESOURCE **ResourceToRelease,
sca8er 2:5853bf44af9f 2233 /*IN*/ struct _DEVICE_OBJECT *DeviceObject);
sca8er 2:5853bf44af9f 2234
sca8er 2:5853bf44af9f 2235 typedef BOOLEAN DDKAPI
sca8er 2:5853bf44af9f 2236 (*PFAST_IO_MDL_READ)(
sca8er 2:5853bf44af9f 2237 /*IN*/ struct _FILE_OBJECT *FileObject,
sca8er 2:5853bf44af9f 2238 /*IN*/ PLARGE_INTEGER FileOffset,
sca8er 2:5853bf44af9f 2239 /*IN*/ ULONG Length,
sca8er 2:5853bf44af9f 2240 /*IN*/ ULONG LockKey,
sca8er 2:5853bf44af9f 2241 /*OUT*/ PMDL *MdlChain,
sca8er 2:5853bf44af9f 2242 /*OUT*/ PIO_STATUS_BLOCK IoStatus,
sca8er 2:5853bf44af9f 2243 /*IN*/ struct _DEVICE_OBJECT *DeviceObject);
sca8er 2:5853bf44af9f 2244
sca8er 2:5853bf44af9f 2245 typedef BOOLEAN DDKAPI
sca8er 2:5853bf44af9f 2246 (*PFAST_IO_MDL_READ_COMPLETE)(
sca8er 2:5853bf44af9f 2247 /*IN*/ struct _FILE_OBJECT *FileObject,
sca8er 2:5853bf44af9f 2248 /*IN*/ PMDL MdlChain,
sca8er 2:5853bf44af9f 2249 /*IN*/ struct _DEVICE_OBJECT *DeviceObject);
sca8er 2:5853bf44af9f 2250
sca8er 2:5853bf44af9f 2251 typedef BOOLEAN DDKAPI
sca8er 2:5853bf44af9f 2252 (*PFAST_IO_PREPARE_MDL_WRITE)(
sca8er 2:5853bf44af9f 2253 /*IN*/ struct _FILE_OBJECT *FileObject,
sca8er 2:5853bf44af9f 2254 /*IN*/ PLARGE_INTEGER FileOffset,
sca8er 2:5853bf44af9f 2255 /*IN*/ ULONG Length,
sca8er 2:5853bf44af9f 2256 /*IN*/ ULONG LockKey,
sca8er 2:5853bf44af9f 2257 /*OUT*/ PMDL *MdlChain,
sca8er 2:5853bf44af9f 2258 /*OUT*/ PIO_STATUS_BLOCK IoStatus,
sca8er 2:5853bf44af9f 2259 /*IN*/ struct _DEVICE_OBJECT *DeviceObject);
sca8er 2:5853bf44af9f 2260
sca8er 2:5853bf44af9f 2261 typedef BOOLEAN DDKAPI
sca8er 2:5853bf44af9f 2262 (*PFAST_IO_MDL_WRITE_COMPLETE)(
sca8er 2:5853bf44af9f 2263 /*IN*/ struct _FILE_OBJECT *FileObject,
sca8er 2:5853bf44af9f 2264 /*IN*/ PLARGE_INTEGER FileOffset,
sca8er 2:5853bf44af9f 2265 /*IN*/ PMDL MdlChain,
sca8er 2:5853bf44af9f 2266 /*IN*/ struct _DEVICE_OBJECT *DeviceObject);
sca8er 2:5853bf44af9f 2267
sca8er 2:5853bf44af9f 2268 typedef BOOLEAN DDKAPI
sca8er 2:5853bf44af9f 2269 (*PFAST_IO_READ_COMPRESSED)(
sca8er 2:5853bf44af9f 2270 /*IN*/ struct _FILE_OBJECT *FileObject,
sca8er 2:5853bf44af9f 2271 /*IN*/ PLARGE_INTEGER FileOffset,
sca8er 2:5853bf44af9f 2272 /*IN*/ ULONG Length,
sca8er 2:5853bf44af9f 2273 /*IN*/ ULONG LockKey,
sca8er 2:5853bf44af9f 2274 /*OUT*/ PVOID Buffer,
sca8er 2:5853bf44af9f 2275 /*OUT*/ PMDL *MdlChain,
sca8er 2:5853bf44af9f 2276 /*OUT*/ PIO_STATUS_BLOCK IoStatus,
sca8er 2:5853bf44af9f 2277 /*OUT*/ struct _COMPRESSED_DATA_INFO *CompressedDataInfo,
sca8er 2:5853bf44af9f 2278 /*IN*/ ULONG CompressedDataInfoLength,
sca8er 2:5853bf44af9f 2279 /*IN*/ struct _DEVICE_OBJECT *DeviceObject);
sca8er 2:5853bf44af9f 2280
sca8er 2:5853bf44af9f 2281 typedef BOOLEAN DDKAPI
sca8er 2:5853bf44af9f 2282 (*PFAST_IO_WRITE_COMPRESSED)(
sca8er 2:5853bf44af9f 2283 /*IN*/ struct _FILE_OBJECT *FileObject,
sca8er 2:5853bf44af9f 2284 /*IN*/ PLARGE_INTEGER FileOffset,
sca8er 2:5853bf44af9f 2285 /*IN*/ ULONG Length,
sca8er 2:5853bf44af9f 2286 /*IN*/ ULONG LockKey,
sca8er 2:5853bf44af9f 2287 /*IN*/ PVOID Buffer,
sca8er 2:5853bf44af9f 2288 /*OUT*/ PMDL *MdlChain,
sca8er 2:5853bf44af9f 2289 /*OUT*/ PIO_STATUS_BLOCK IoStatus,
sca8er 2:5853bf44af9f 2290 /*IN*/ struct _COMPRESSED_DATA_INFO *CompressedDataInfo,
sca8er 2:5853bf44af9f 2291 /*IN*/ ULONG CompressedDataInfoLength,
sca8er 2:5853bf44af9f 2292 /*IN*/ struct _DEVICE_OBJECT *DeviceObject);
sca8er 2:5853bf44af9f 2293
sca8er 2:5853bf44af9f 2294 typedef BOOLEAN DDKAPI
sca8er 2:5853bf44af9f 2295 (*PFAST_IO_MDL_READ_COMPLETE_COMPRESSED)(
sca8er 2:5853bf44af9f 2296 /*IN*/ struct _FILE_OBJECT *FileObject,
sca8er 2:5853bf44af9f 2297 /*IN*/ PMDL MdlChain,
sca8er 2:5853bf44af9f 2298 /*IN*/ struct _DEVICE_OBJECT *DeviceObject);
sca8er 2:5853bf44af9f 2299
sca8er 2:5853bf44af9f 2300 typedef BOOLEAN DDKAPI
sca8er 2:5853bf44af9f 2301 (*PFAST_IO_MDL_WRITE_COMPLETE_COMPRESSED)(
sca8er 2:5853bf44af9f 2302 /*IN*/ struct _FILE_OBJECT *FileObject,
sca8er 2:5853bf44af9f 2303 /*IN*/ PLARGE_INTEGER FileOffset,
sca8er 2:5853bf44af9f 2304 /*IN*/ PMDL MdlChain,
sca8er 2:5853bf44af9f 2305 /*IN*/ struct _DEVICE_OBJECT *DeviceObject);
sca8er 2:5853bf44af9f 2306
sca8er 2:5853bf44af9f 2307 typedef BOOLEAN DDKAPI
sca8er 2:5853bf44af9f 2308 (*PFAST_IO_QUERY_OPEN)(
sca8er 2:5853bf44af9f 2309 /*IN*/ struct _IRP *Irp,
sca8er 2:5853bf44af9f 2310 /*OUT*/ PFILE_NETWORK_OPEN_INFORMATION NetworkInformation,
sca8er 2:5853bf44af9f 2311 /*IN*/ struct _DEVICE_OBJECT *DeviceObject);
sca8er 2:5853bf44af9f 2312
sca8er 2:5853bf44af9f 2313 typedef NTSTATUS DDKAPI
sca8er 2:5853bf44af9f 2314 (*PFAST_IO_RELEASE_FOR_MOD_WRITE)(
sca8er 2:5853bf44af9f 2315 /*IN*/ struct _FILE_OBJECT *FileObject,
sca8er 2:5853bf44af9f 2316 /*IN*/ struct _ERESOURCE *ResourceToRelease,
sca8er 2:5853bf44af9f 2317 /*IN*/ struct _DEVICE_OBJECT *DeviceObject);
sca8er 2:5853bf44af9f 2318
sca8er 2:5853bf44af9f 2319 typedef NTSTATUS DDKAPI
sca8er 2:5853bf44af9f 2320 (*PFAST_IO_ACQUIRE_FOR_CCFLUSH)(
sca8er 2:5853bf44af9f 2321 /*IN*/ struct _FILE_OBJECT *FileObject,
sca8er 2:5853bf44af9f 2322 /*IN*/ struct _DEVICE_OBJECT *DeviceObject);
sca8er 2:5853bf44af9f 2323
sca8er 2:5853bf44af9f 2324 typedef NTSTATUS DDKAPI
sca8er 2:5853bf44af9f 2325 (*PFAST_IO_RELEASE_FOR_CCFLUSH) (
sca8er 2:5853bf44af9f 2326 /*IN*/ struct _FILE_OBJECT *FileObject,
sca8er 2:5853bf44af9f 2327 /*IN*/ struct _DEVICE_OBJECT *DeviceObject);
sca8er 2:5853bf44af9f 2328
sca8er 2:5853bf44af9f 2329 typedef struct _FAST_IO_DISPATCH {
sca8er 2:5853bf44af9f 2330 ULONG SizeOfFastIoDispatch;
sca8er 2:5853bf44af9f 2331 PFAST_IO_CHECK_IF_POSSIBLE FastIoCheckIfPossible;
sca8er 2:5853bf44af9f 2332 PFAST_IO_READ FastIoRead;
sca8er 2:5853bf44af9f 2333 PFAST_IO_WRITE FastIoWrite;
sca8er 2:5853bf44af9f 2334 PFAST_IO_QUERY_BASIC_INFO FastIoQueryBasicInfo;
sca8er 2:5853bf44af9f 2335 PFAST_IO_QUERY_STANDARD_INFO FastIoQueryStandardInfo;
sca8er 2:5853bf44af9f 2336 PFAST_IO_LOCK FastIoLock;
sca8er 2:5853bf44af9f 2337 PFAST_IO_UNLOCK_SINGLE FastIoUnlockSingle;
sca8er 2:5853bf44af9f 2338 PFAST_IO_UNLOCK_ALL FastIoUnlockAll;
sca8er 2:5853bf44af9f 2339 PFAST_IO_UNLOCK_ALL_BY_KEY FastIoUnlockAllByKey;
sca8er 2:5853bf44af9f 2340 PFAST_IO_DEVICE_CONTROL FastIoDeviceControl;
sca8er 2:5853bf44af9f 2341 PFAST_IO_ACQUIRE_FILE AcquireFileForNtCreateSection;
sca8er 2:5853bf44af9f 2342 PFAST_IO_RELEASE_FILE ReleaseFileForNtCreateSection;
sca8er 2:5853bf44af9f 2343 PFAST_IO_DETACH_DEVICE FastIoDetachDevice;
sca8er 2:5853bf44af9f 2344 PFAST_IO_QUERY_NETWORK_OPEN_INFO FastIoQueryNetworkOpenInfo;
sca8er 2:5853bf44af9f 2345 PFAST_IO_ACQUIRE_FOR_MOD_WRITE AcquireForModWrite;
sca8er 2:5853bf44af9f 2346 PFAST_IO_MDL_READ MdlRead;
sca8er 2:5853bf44af9f 2347 PFAST_IO_MDL_READ_COMPLETE MdlReadComplete;
sca8er 2:5853bf44af9f 2348 PFAST_IO_PREPARE_MDL_WRITE PrepareMdlWrite;
sca8er 2:5853bf44af9f 2349 PFAST_IO_MDL_WRITE_COMPLETE MdlWriteComplete;
sca8er 2:5853bf44af9f 2350 PFAST_IO_READ_COMPRESSED FastIoReadCompressed;
sca8er 2:5853bf44af9f 2351 PFAST_IO_WRITE_COMPRESSED FastIoWriteCompressed;
sca8er 2:5853bf44af9f 2352 PFAST_IO_MDL_READ_COMPLETE_COMPRESSED MdlReadCompleteCompressed;
sca8er 2:5853bf44af9f 2353 PFAST_IO_MDL_WRITE_COMPLETE_COMPRESSED MdlWriteCompleteCompressed;
sca8er 2:5853bf44af9f 2354 PFAST_IO_QUERY_OPEN FastIoQueryOpen;
sca8er 2:5853bf44af9f 2355 PFAST_IO_RELEASE_FOR_MOD_WRITE ReleaseForModWrite;
sca8er 2:5853bf44af9f 2356 PFAST_IO_ACQUIRE_FOR_CCFLUSH AcquireForCcFlush;
sca8er 2:5853bf44af9f 2357 PFAST_IO_RELEASE_FOR_CCFLUSH ReleaseForCcFlush;
sca8er 2:5853bf44af9f 2358 } FAST_IO_DISPATCH, *PFAST_IO_DISPATCH;
sca8er 2:5853bf44af9f 2359
sca8er 2:5853bf44af9f 2360 typedef struct _DRIVER_OBJECT {
sca8er 2:5853bf44af9f 2361 CSHORT Type;
sca8er 2:5853bf44af9f 2362 CSHORT Size;
sca8er 2:5853bf44af9f 2363 PDEVICE_OBJECT DeviceObject;
sca8er 2:5853bf44af9f 2364 ULONG Flags;
sca8er 2:5853bf44af9f 2365 PVOID DriverStart;
sca8er 2:5853bf44af9f 2366 ULONG DriverSize;
sca8er 2:5853bf44af9f 2367 PVOID DriverSection;
sca8er 2:5853bf44af9f 2368 PDRIVER_EXTENSION DriverExtension;
sca8er 2:5853bf44af9f 2369 UNICODE_STRING DriverName;
sca8er 2:5853bf44af9f 2370 PUNICODE_STRING HardwareDatabase;
sca8er 2:5853bf44af9f 2371 PFAST_IO_DISPATCH FastIoDispatch;
sca8er 2:5853bf44af9f 2372 PDRIVER_INITIALIZE DriverInit;
sca8er 2:5853bf44af9f 2373 PDRIVER_STARTIO DriverStartIo;
sca8er 2:5853bf44af9f 2374 PDRIVER_UNLOAD DriverUnload;
sca8er 2:5853bf44af9f 2375 PDRIVER_DISPATCH MajorFunction[IRP_MJ_MAXIMUM_FUNCTION + 1];
sca8er 2:5853bf44af9f 2376 } DRIVER_OBJECT;
sca8er 2:5853bf44af9f 2377 typedef struct _DRIVER_OBJECT *PDRIVER_OBJECT;
sca8er 2:5853bf44af9f 2378
sca8er 2:5853bf44af9f 2379 typedef struct _SECTION_OBJECT_POINTERS {
sca8er 2:5853bf44af9f 2380 PVOID DataSectionObject;
sca8er 2:5853bf44af9f 2381 PVOID SharedCacheMap;
sca8er 2:5853bf44af9f 2382 PVOID ImageSectionObject;
sca8er 2:5853bf44af9f 2383 } SECTION_OBJECT_POINTERS, *PSECTION_OBJECT_POINTERS;
sca8er 2:5853bf44af9f 2384
sca8er 2:5853bf44af9f 2385 typedef struct _IO_COMPLETION_CONTEXT {
sca8er 2:5853bf44af9f 2386 PVOID Port;
sca8er 2:5853bf44af9f 2387 PVOID Key;
sca8er 2:5853bf44af9f 2388 } IO_COMPLETION_CONTEXT, *PIO_COMPLETION_CONTEXT;
sca8er 2:5853bf44af9f 2389
sca8er 2:5853bf44af9f 2390 /* FILE_OBJECT.Flags */
sca8er 2:5853bf44af9f 2391
sca8er 2:5853bf44af9f 2392 #define FO_FILE_OPEN 0x00000001
sca8er 2:5853bf44af9f 2393 #define FO_SYNCHRONOUS_IO 0x00000002
sca8er 2:5853bf44af9f 2394 #define FO_ALERTABLE_IO 0x00000004
sca8er 2:5853bf44af9f 2395 #define FO_NO_INTERMEDIATE_BUFFERING 0x00000008
sca8er 2:5853bf44af9f 2396 #define FO_WRITE_THROUGH 0x00000010
sca8er 2:5853bf44af9f 2397 #define FO_SEQUENTIAL_ONLY 0x00000020
sca8er 2:5853bf44af9f 2398 #define FO_CACHE_SUPPORTED 0x00000040
sca8er 2:5853bf44af9f 2399 #define FO_NAMED_PIPE 0x00000080
sca8er 2:5853bf44af9f 2400 #define FO_STREAM_FILE 0x00000100
sca8er 2:5853bf44af9f 2401 #define FO_MAILSLOT 0x00000200
sca8er 2:5853bf44af9f 2402 #define FO_GENERATE_AUDIT_ON_CLOSE 0x00000400
sca8er 2:5853bf44af9f 2403 #define FO_DIRECT_DEVICE_OPEN 0x00000800
sca8er 2:5853bf44af9f 2404 #define FO_FILE_MODIFIED 0x00001000
sca8er 2:5853bf44af9f 2405 #define FO_FILE_SIZE_CHANGED 0x00002000
sca8er 2:5853bf44af9f 2406 #define FO_CLEANUP_COMPLETE 0x00004000
sca8er 2:5853bf44af9f 2407 #define FO_TEMPORARY_FILE 0x00008000
sca8er 2:5853bf44af9f 2408 #define FO_DELETE_ON_CLOSE 0x00010000
sca8er 2:5853bf44af9f 2409 #define FO_OPENED_CASE_SENSITIVE 0x00020000
sca8er 2:5853bf44af9f 2410 #define FO_HANDLE_CREATED 0x00040000
sca8er 2:5853bf44af9f 2411 #define FO_FILE_FAST_IO_READ 0x00080000
sca8er 2:5853bf44af9f 2412 #define FO_RANDOM_ACCESS 0x00100000
sca8er 2:5853bf44af9f 2413 #define FO_FILE_OPEN_CANCELLED 0x00200000
sca8er 2:5853bf44af9f 2414 #define FO_VOLUME_OPEN 0x00400000
sca8er 2:5853bf44af9f 2415 #define FO_FILE_OBJECT_HAS_EXTENSION 0x00800000
sca8er 2:5853bf44af9f 2416 #define FO_REMOTE_ORIGIN 0x01000000
sca8er 2:5853bf44af9f 2417
sca8er 2:5853bf44af9f 2418 typedef struct _FILE_OBJECT {
sca8er 2:5853bf44af9f 2419 CSHORT Type;
sca8er 2:5853bf44af9f 2420 CSHORT Size;
sca8er 2:5853bf44af9f 2421 PDEVICE_OBJECT DeviceObject;
sca8er 2:5853bf44af9f 2422 PVPB Vpb;
sca8er 2:5853bf44af9f 2423 PVOID FsContext;
sca8er 2:5853bf44af9f 2424 PVOID FsContext2;
sca8er 2:5853bf44af9f 2425 PSECTION_OBJECT_POINTERS SectionObjectPointer;
sca8er 2:5853bf44af9f 2426 PVOID PrivateCacheMap;
sca8er 2:5853bf44af9f 2427 NTSTATUS FinalStatus;
sca8er 2:5853bf44af9f 2428 struct _FILE_OBJECT *RelatedFileObject;
sca8er 2:5853bf44af9f 2429 BOOLEAN LockOperation;
sca8er 2:5853bf44af9f 2430 BOOLEAN DeletePending;
sca8er 2:5853bf44af9f 2431 BOOLEAN ReadAccess;
sca8er 2:5853bf44af9f 2432 BOOLEAN WriteAccess;
sca8er 2:5853bf44af9f 2433 BOOLEAN DeleteAccess;
sca8er 2:5853bf44af9f 2434 BOOLEAN SharedRead;
sca8er 2:5853bf44af9f 2435 BOOLEAN SharedWrite;
sca8er 2:5853bf44af9f 2436 BOOLEAN SharedDelete;
sca8er 2:5853bf44af9f 2437 ULONG Flags;
sca8er 2:5853bf44af9f 2438 UNICODE_STRING FileName;
sca8er 2:5853bf44af9f 2439 LARGE_INTEGER CurrentByteOffset;
sca8er 2:5853bf44af9f 2440 ULONG Waiters;
sca8er 2:5853bf44af9f 2441 ULONG Busy;
sca8er 2:5853bf44af9f 2442 PVOID LastLock;
sca8er 2:5853bf44af9f 2443 KEVENT Lock;
sca8er 2:5853bf44af9f 2444 KEVENT Event;
sca8er 2:5853bf44af9f 2445 PIO_COMPLETION_CONTEXT CompletionContext;
sca8er 2:5853bf44af9f 2446 } FILE_OBJECT;
sca8er 2:5853bf44af9f 2447 typedef struct _FILE_OBJECT *PFILE_OBJECT;
sca8er 2:5853bf44af9f 2448
sca8er 2:5853bf44af9f 2449 typedef enum _SECURITY_OPERATION_CODE {
sca8er 2:5853bf44af9f 2450 SetSecurityDescriptor,
sca8er 2:5853bf44af9f 2451 QuerySecurityDescriptor,
sca8er 2:5853bf44af9f 2452 DeleteSecurityDescriptor,
sca8er 2:5853bf44af9f 2453 AssignSecurityDescriptor
sca8er 2:5853bf44af9f 2454 } SECURITY_OPERATION_CODE, *PSECURITY_OPERATION_CODE;
sca8er 2:5853bf44af9f 2455
sca8er 2:5853bf44af9f 2456 #define INITIAL_PRIVILEGE_COUNT 3
sca8er 2:5853bf44af9f 2457
sca8er 2:5853bf44af9f 2458 typedef struct _INITIAL_PRIVILEGE_SET {
sca8er 2:5853bf44af9f 2459 ULONG PrivilegeCount;
sca8er 2:5853bf44af9f 2460 ULONG Control;
sca8er 2:5853bf44af9f 2461 LUID_AND_ATTRIBUTES Privilege[INITIAL_PRIVILEGE_COUNT];
sca8er 2:5853bf44af9f 2462 } INITIAL_PRIVILEGE_SET, * PINITIAL_PRIVILEGE_SET;
sca8er 2:5853bf44af9f 2463
sca8er 2:5853bf44af9f 2464 typedef struct _SECURITY_SUBJECT_CONTEXT {
sca8er 2:5853bf44af9f 2465 PACCESS_TOKEN ClientToken;
sca8er 2:5853bf44af9f 2466 SECURITY_IMPERSONATION_LEVEL ImpersonationLevel;
sca8er 2:5853bf44af9f 2467 PACCESS_TOKEN PrimaryToken;
sca8er 2:5853bf44af9f 2468 PVOID ProcessAuditId;
sca8er 2:5853bf44af9f 2469 } SECURITY_SUBJECT_CONTEXT, *PSECURITY_SUBJECT_CONTEXT;
sca8er 2:5853bf44af9f 2470
sca8er 2:5853bf44af9f 2471 #include <pshpack4.h>
sca8er 2:5853bf44af9f 2472 typedef struct _ACCESS_STATE {
sca8er 2:5853bf44af9f 2473 LUID OperationID;
sca8er 2:5853bf44af9f 2474 BOOLEAN SecurityEvaluated;
sca8er 2:5853bf44af9f 2475 BOOLEAN GenerateAudit;
sca8er 2:5853bf44af9f 2476 BOOLEAN GenerateOnClose;
sca8er 2:5853bf44af9f 2477 BOOLEAN PrivilegesAllocated;
sca8er 2:5853bf44af9f 2478 ULONG Flags;
sca8er 2:5853bf44af9f 2479 ACCESS_MASK RemainingDesiredAccess;
sca8er 2:5853bf44af9f 2480 ACCESS_MASK PreviouslyGrantedAccess;
sca8er 2:5853bf44af9f 2481 ACCESS_MASK OriginalDesiredAccess;
sca8er 2:5853bf44af9f 2482 SECURITY_SUBJECT_CONTEXT SubjectSecurityContext;
sca8er 2:5853bf44af9f 2483 PSECURITY_DESCRIPTOR SecurityDescriptor;
sca8er 2:5853bf44af9f 2484 PVOID AuxData;
sca8er 2:5853bf44af9f 2485 union {
sca8er 2:5853bf44af9f 2486 INITIAL_PRIVILEGE_SET InitialPrivilegeSet;
sca8er 2:5853bf44af9f 2487 PRIVILEGE_SET PrivilegeSet;
sca8er 2:5853bf44af9f 2488 } Privileges;
sca8er 2:5853bf44af9f 2489
sca8er 2:5853bf44af9f 2490 BOOLEAN AuditPrivileges;
sca8er 2:5853bf44af9f 2491 UNICODE_STRING ObjectName;
sca8er 2:5853bf44af9f 2492 UNICODE_STRING ObjectTypeName;
sca8er 2:5853bf44af9f 2493 } ACCESS_STATE, *PACCESS_STATE;
sca8er 2:5853bf44af9f 2494 #include <poppack.h>
sca8er 2:5853bf44af9f 2495
sca8er 2:5853bf44af9f 2496 typedef struct _IO_SECURITY_CONTEXT {
sca8er 2:5853bf44af9f 2497 PSECURITY_QUALITY_OF_SERVICE SecurityQos;
sca8er 2:5853bf44af9f 2498 PACCESS_STATE AccessState;
sca8er 2:5853bf44af9f 2499 ACCESS_MASK DesiredAccess;
sca8er 2:5853bf44af9f 2500 ULONG FullCreateOptions;
sca8er 2:5853bf44af9f 2501 } IO_SECURITY_CONTEXT, *PIO_SECURITY_CONTEXT;
sca8er 2:5853bf44af9f 2502
sca8er 2:5853bf44af9f 2503 struct _IO_CSQ;
sca8er 2:5853bf44af9f 2504
sca8er 2:5853bf44af9f 2505 typedef struct _IO_CSQ_IRP_CONTEXT {
sca8er 2:5853bf44af9f 2506 ULONG Type;
sca8er 2:5853bf44af9f 2507 struct _IRP *Irp;
sca8er 2:5853bf44af9f 2508 struct _IO_CSQ *Csq;
sca8er 2:5853bf44af9f 2509 } IO_CSQ_IRP_CONTEXT, *PIO_CSQ_IRP_CONTEXT;
sca8er 2:5853bf44af9f 2510
sca8er 2:5853bf44af9f 2511 typedef VOID DDKAPI
sca8er 2:5853bf44af9f 2512 (*PIO_CSQ_INSERT_IRP)(
sca8er 2:5853bf44af9f 2513 /*IN*/ struct _IO_CSQ *Csq,
sca8er 2:5853bf44af9f 2514 /*IN*/ PIRP Irp);
sca8er 2:5853bf44af9f 2515
sca8er 2:5853bf44af9f 2516 typedef VOID DDKAPI
sca8er 2:5853bf44af9f 2517 (*PIO_CSQ_REMOVE_IRP)(
sca8er 2:5853bf44af9f 2518 /*IN*/ struct _IO_CSQ *Csq,
sca8er 2:5853bf44af9f 2519 /*IN*/ PIRP Irp);
sca8er 2:5853bf44af9f 2520
sca8er 2:5853bf44af9f 2521 typedef PIRP DDKAPI
sca8er 2:5853bf44af9f 2522 (*PIO_CSQ_PEEK_NEXT_IRP)(
sca8er 2:5853bf44af9f 2523 /*IN*/ struct _IO_CSQ *Csq,
sca8er 2:5853bf44af9f 2524 /*IN*/ PIRP Irp,
sca8er 2:5853bf44af9f 2525 /*IN*/ PVOID PeekContext);
sca8er 2:5853bf44af9f 2526
sca8er 2:5853bf44af9f 2527 typedef VOID DDKAPI
sca8er 2:5853bf44af9f 2528 (*PIO_CSQ_ACQUIRE_LOCK)(
sca8er 2:5853bf44af9f 2529 /*IN*/ struct _IO_CSQ *Csq,
sca8er 2:5853bf44af9f 2530 /*OUT*/ PKIRQL Irql);
sca8er 2:5853bf44af9f 2531
sca8er 2:5853bf44af9f 2532 typedef VOID DDKAPI
sca8er 2:5853bf44af9f 2533 (*PIO_CSQ_RELEASE_LOCK)(
sca8er 2:5853bf44af9f 2534 /*IN*/ struct _IO_CSQ *Csq,
sca8er 2:5853bf44af9f 2535 /*IN*/ KIRQL Irql);
sca8er 2:5853bf44af9f 2536
sca8er 2:5853bf44af9f 2537 typedef VOID DDKAPI
sca8er 2:5853bf44af9f 2538 (*PIO_CSQ_COMPLETE_CANCELED_IRP)(
sca8er 2:5853bf44af9f 2539 /*IN*/ struct _IO_CSQ *Csq,
sca8er 2:5853bf44af9f 2540 /*IN*/ PIRP Irp);
sca8er 2:5853bf44af9f 2541
sca8er 2:5853bf44af9f 2542 typedef struct _IO_CSQ {
sca8er 2:5853bf44af9f 2543 ULONG Type;
sca8er 2:5853bf44af9f 2544 PIO_CSQ_INSERT_IRP CsqInsertIrp;
sca8er 2:5853bf44af9f 2545 PIO_CSQ_REMOVE_IRP CsqRemoveIrp;
sca8er 2:5853bf44af9f 2546 PIO_CSQ_PEEK_NEXT_IRP CsqPeekNextIrp;
sca8er 2:5853bf44af9f 2547 PIO_CSQ_ACQUIRE_LOCK CsqAcquireLock;
sca8er 2:5853bf44af9f 2548 PIO_CSQ_RELEASE_LOCK CsqReleaseLock;
sca8er 2:5853bf44af9f 2549 PIO_CSQ_COMPLETE_CANCELED_IRP CsqCompleteCanceledIrp;
sca8er 2:5853bf44af9f 2550 PVOID ReservePointer;
sca8er 2:5853bf44af9f 2551 } IO_CSQ, *PIO_CSQ;
sca8er 2:5853bf44af9f 2552
sca8er 2:5853bf44af9f 2553 #include <pshpack4.h>
sca8er 2:5853bf44af9f 2554 typedef struct _IO_STACK_LOCATION {
sca8er 2:5853bf44af9f 2555 UCHAR MajorFunction;
sca8er 2:5853bf44af9f 2556 UCHAR MinorFunction;
sca8er 2:5853bf44af9f 2557 UCHAR Flags;
sca8er 2:5853bf44af9f 2558 UCHAR Control;
sca8er 2:5853bf44af9f 2559 union {
sca8er 2:5853bf44af9f 2560 struct {
sca8er 2:5853bf44af9f 2561 PIO_SECURITY_CONTEXT SecurityContext;
sca8er 2:5853bf44af9f 2562 ULONG Options;
sca8er 2:5853bf44af9f 2563 USHORT POINTER_ALIGNMENT FileAttributes;
sca8er 2:5853bf44af9f 2564 USHORT ShareAccess;
sca8er 2:5853bf44af9f 2565 ULONG POINTER_ALIGNMENT EaLength;
sca8er 2:5853bf44af9f 2566 } Create;
sca8er 2:5853bf44af9f 2567 struct {
sca8er 2:5853bf44af9f 2568 ULONG Length;
sca8er 2:5853bf44af9f 2569 ULONG POINTER_ALIGNMENT Key;
sca8er 2:5853bf44af9f 2570 LARGE_INTEGER ByteOffset;
sca8er 2:5853bf44af9f 2571 } Read;
sca8er 2:5853bf44af9f 2572 struct {
sca8er 2:5853bf44af9f 2573 ULONG Length;
sca8er 2:5853bf44af9f 2574 ULONG POINTER_ALIGNMENT Key;
sca8er 2:5853bf44af9f 2575 LARGE_INTEGER ByteOffset;
sca8er 2:5853bf44af9f 2576 } Write;
sca8er 2:5853bf44af9f 2577 struct {
sca8er 2:5853bf44af9f 2578 ULONG Length;
sca8er 2:5853bf44af9f 2579 FILE_INFORMATION_CLASS POINTER_ALIGNMENT FileInformationClass;
sca8er 2:5853bf44af9f 2580 } QueryFile;
sca8er 2:5853bf44af9f 2581 struct {
sca8er 2:5853bf44af9f 2582 ULONG Length;
sca8er 2:5853bf44af9f 2583 FILE_INFORMATION_CLASS POINTER_ALIGNMENT FileInformationClass;
sca8er 2:5853bf44af9f 2584 PFILE_OBJECT FileObject;
sca8er 2:5853bf44af9f 2585 _ANONYMOUS_UNION union {
sca8er 2:5853bf44af9f 2586 _ANONYMOUS_STRUCT struct {
sca8er 2:5853bf44af9f 2587 BOOLEAN ReplaceIfExists;
sca8er 2:5853bf44af9f 2588 BOOLEAN AdvanceOnly;
sca8er 2:5853bf44af9f 2589 } DUMMYSTRUCTNAME;
sca8er 2:5853bf44af9f 2590 ULONG ClusterCount;
sca8er 2:5853bf44af9f 2591 HANDLE DeleteHandle;
sca8er 2:5853bf44af9f 2592 } DUMMYUNIONNAME;
sca8er 2:5853bf44af9f 2593 } SetFile;
sca8er 2:5853bf44af9f 2594 struct {
sca8er 2:5853bf44af9f 2595 ULONG Length;
sca8er 2:5853bf44af9f 2596 FS_INFORMATION_CLASS POINTER_ALIGNMENT FsInformationClass;
sca8er 2:5853bf44af9f 2597 } QueryVolume;
sca8er 2:5853bf44af9f 2598 struct {
sca8er 2:5853bf44af9f 2599 ULONG OutputBufferLength;
sca8er 2:5853bf44af9f 2600 ULONG POINTER_ALIGNMENT InputBufferLength;
sca8er 2:5853bf44af9f 2601 ULONG POINTER_ALIGNMENT IoControlCode;
sca8er 2:5853bf44af9f 2602 PVOID Type3InputBuffer;
sca8er 2:5853bf44af9f 2603 } DeviceIoControl;
sca8er 2:5853bf44af9f 2604 struct {
sca8er 2:5853bf44af9f 2605 SECURITY_INFORMATION SecurityInformation;
sca8er 2:5853bf44af9f 2606 ULONG POINTER_ALIGNMENT Length;
sca8er 2:5853bf44af9f 2607 } QuerySecurity;
sca8er 2:5853bf44af9f 2608 struct {
sca8er 2:5853bf44af9f 2609 SECURITY_INFORMATION SecurityInformation;
sca8er 2:5853bf44af9f 2610 PSECURITY_DESCRIPTOR SecurityDescriptor;
sca8er 2:5853bf44af9f 2611 } SetSecurity;
sca8er 2:5853bf44af9f 2612 struct {
sca8er 2:5853bf44af9f 2613 PVPB Vpb;
sca8er 2:5853bf44af9f 2614 PDEVICE_OBJECT DeviceObject;
sca8er 2:5853bf44af9f 2615 } MountVolume;
sca8er 2:5853bf44af9f 2616 struct {
sca8er 2:5853bf44af9f 2617 PVPB Vpb;
sca8er 2:5853bf44af9f 2618 PDEVICE_OBJECT DeviceObject;
sca8er 2:5853bf44af9f 2619 } VerifyVolume;
sca8er 2:5853bf44af9f 2620 struct {
sca8er 2:5853bf44af9f 2621 struct _SCSI_REQUEST_BLOCK *Srb;
sca8er 2:5853bf44af9f 2622 } Scsi;
sca8er 2:5853bf44af9f 2623 struct {
sca8er 2:5853bf44af9f 2624 DEVICE_RELATION_TYPE Type;
sca8er 2:5853bf44af9f 2625 } QueryDeviceRelations;
sca8er 2:5853bf44af9f 2626 struct {
sca8er 2:5853bf44af9f 2627 CONST GUID *InterfaceType;
sca8er 2:5853bf44af9f 2628 USHORT Size;
sca8er 2:5853bf44af9f 2629 USHORT Version;
sca8er 2:5853bf44af9f 2630 PINTERFACE Interface;
sca8er 2:5853bf44af9f 2631 PVOID InterfaceSpecificData;
sca8er 2:5853bf44af9f 2632 } QueryInterface;
sca8er 2:5853bf44af9f 2633 struct {
sca8er 2:5853bf44af9f 2634 PDEVICE_CAPABILITIES Capabilities;
sca8er 2:5853bf44af9f 2635 } DeviceCapabilities;
sca8er 2:5853bf44af9f 2636 struct {
sca8er 2:5853bf44af9f 2637 PIO_RESOURCE_REQUIREMENTS_LIST IoResourceRequirementList;
sca8er 2:5853bf44af9f 2638 } FilterResourceRequirements;
sca8er 2:5853bf44af9f 2639 struct {
sca8er 2:5853bf44af9f 2640 ULONG WhichSpace;
sca8er 2:5853bf44af9f 2641 PVOID Buffer;
sca8er 2:5853bf44af9f 2642 ULONG Offset;
sca8er 2:5853bf44af9f 2643 ULONG POINTER_ALIGNMENT Length;
sca8er 2:5853bf44af9f 2644 } ReadWriteConfig;
sca8er 2:5853bf44af9f 2645 struct {
sca8er 2:5853bf44af9f 2646 BOOLEAN Lock;
sca8er 2:5853bf44af9f 2647 } SetLock;
sca8er 2:5853bf44af9f 2648 struct {
sca8er 2:5853bf44af9f 2649 BUS_QUERY_ID_TYPE IdType;
sca8er 2:5853bf44af9f 2650 } QueryId;
sca8er 2:5853bf44af9f 2651 struct {
sca8er 2:5853bf44af9f 2652 DEVICE_TEXT_TYPE DeviceTextType;
sca8er 2:5853bf44af9f 2653 LCID POINTER_ALIGNMENT LocaleId;
sca8er 2:5853bf44af9f 2654 } QueryDeviceText;
sca8er 2:5853bf44af9f 2655 struct {
sca8er 2:5853bf44af9f 2656 BOOLEAN InPath;
sca8er 2:5853bf44af9f 2657 BOOLEAN Reserved[3];
sca8er 2:5853bf44af9f 2658 DEVICE_USAGE_NOTIFICATION_TYPE POINTER_ALIGNMENT Type;
sca8er 2:5853bf44af9f 2659 } UsageNotification;
sca8er 2:5853bf44af9f 2660 struct {
sca8er 2:5853bf44af9f 2661 SYSTEM_POWER_STATE PowerState;
sca8er 2:5853bf44af9f 2662 } WaitWake;
sca8er 2:5853bf44af9f 2663 struct {
sca8er 2:5853bf44af9f 2664 PPOWER_SEQUENCE PowerSequence;
sca8er 2:5853bf44af9f 2665 } PowerSequence;
sca8er 2:5853bf44af9f 2666 struct {
sca8er 2:5853bf44af9f 2667 ULONG SystemContext;
sca8er 2:5853bf44af9f 2668 POWER_STATE_TYPE POINTER_ALIGNMENT Type;
sca8er 2:5853bf44af9f 2669 POWER_STATE POINTER_ALIGNMENT State;
sca8er 2:5853bf44af9f 2670 POWER_ACTION POINTER_ALIGNMENT ShutdownType;
sca8er 2:5853bf44af9f 2671 } Power;
sca8er 2:5853bf44af9f 2672 struct {
sca8er 2:5853bf44af9f 2673 PCM_RESOURCE_LIST AllocatedResources;
sca8er 2:5853bf44af9f 2674 PCM_RESOURCE_LIST AllocatedResourcesTranslated;
sca8er 2:5853bf44af9f 2675 } StartDevice;
sca8er 2:5853bf44af9f 2676 struct {
sca8er 2:5853bf44af9f 2677 ULONG_PTR ProviderId;
sca8er 2:5853bf44af9f 2678 PVOID DataPath;
sca8er 2:5853bf44af9f 2679 ULONG BufferSize;
sca8er 2:5853bf44af9f 2680 PVOID Buffer;
sca8er 2:5853bf44af9f 2681 } WMI;
sca8er 2:5853bf44af9f 2682 struct {
sca8er 2:5853bf44af9f 2683 PVOID Argument1;
sca8er 2:5853bf44af9f 2684 PVOID Argument2;
sca8er 2:5853bf44af9f 2685 PVOID Argument3;
sca8er 2:5853bf44af9f 2686 PVOID Argument4;
sca8er 2:5853bf44af9f 2687 } Others;
sca8er 2:5853bf44af9f 2688 } Parameters;
sca8er 2:5853bf44af9f 2689 PDEVICE_OBJECT DeviceObject;
sca8er 2:5853bf44af9f 2690 PFILE_OBJECT FileObject;
sca8er 2:5853bf44af9f 2691 PIO_COMPLETION_ROUTINE CompletionRoutine;
sca8er 2:5853bf44af9f 2692 PVOID Context;
sca8er 2:5853bf44af9f 2693 } IO_STACK_LOCATION, *PIO_STACK_LOCATION;
sca8er 2:5853bf44af9f 2694 #include <poppack.h>
sca8er 2:5853bf44af9f 2695
sca8er 2:5853bf44af9f 2696 /* IO_STACK_LOCATION.Control */
sca8er 2:5853bf44af9f 2697
sca8er 2:5853bf44af9f 2698 #define SL_PENDING_RETURNED 0x01
sca8er 2:5853bf44af9f 2699 #define SL_INVOKE_ON_CANCEL 0x20
sca8er 2:5853bf44af9f 2700 #define SL_INVOKE_ON_SUCCESS 0x40
sca8er 2:5853bf44af9f 2701 #define SL_INVOKE_ON_ERROR 0x80
sca8er 2:5853bf44af9f 2702
sca8er 2:5853bf44af9f 2703 typedef enum _KEY_INFORMATION_CLASS {
sca8er 2:5853bf44af9f 2704 KeyBasicInformation,
sca8er 2:5853bf44af9f 2705 KeyNodeInformation,
sca8er 2:5853bf44af9f 2706 KeyFullInformation,
sca8er 2:5853bf44af9f 2707 KeyNameInformation,
sca8er 2:5853bf44af9f 2708 KeyCachedInformation,
sca8er 2:5853bf44af9f 2709 KeyFlagsInformation
sca8er 2:5853bf44af9f 2710 } KEY_INFORMATION_CLASS;
sca8er 2:5853bf44af9f 2711
sca8er 2:5853bf44af9f 2712 typedef struct _KEY_BASIC_INFORMATION {
sca8er 2:5853bf44af9f 2713 LARGE_INTEGER LastWriteTime;
sca8er 2:5853bf44af9f 2714 ULONG TitleIndex;
sca8er 2:5853bf44af9f 2715 ULONG NameLength;
sca8er 2:5853bf44af9f 2716 WCHAR Name[1];
sca8er 2:5853bf44af9f 2717 } KEY_BASIC_INFORMATION, *PKEY_BASIC_INFORMATION;
sca8er 2:5853bf44af9f 2718
sca8er 2:5853bf44af9f 2719 typedef struct _KEY_FULL_INFORMATION {
sca8er 2:5853bf44af9f 2720 LARGE_INTEGER LastWriteTime;
sca8er 2:5853bf44af9f 2721 ULONG TitleIndex;
sca8er 2:5853bf44af9f 2722 ULONG ClassOffset;
sca8er 2:5853bf44af9f 2723 ULONG ClassLength;
sca8er 2:5853bf44af9f 2724 ULONG SubKeys;
sca8er 2:5853bf44af9f 2725 ULONG MaxNameLen;
sca8er 2:5853bf44af9f 2726 ULONG MaxClassLen;
sca8er 2:5853bf44af9f 2727 ULONG Values;
sca8er 2:5853bf44af9f 2728 ULONG MaxValueNameLen;
sca8er 2:5853bf44af9f 2729 ULONG MaxValueDataLen;
sca8er 2:5853bf44af9f 2730 WCHAR Class[1];
sca8er 2:5853bf44af9f 2731 } KEY_FULL_INFORMATION, *PKEY_FULL_INFORMATION;
sca8er 2:5853bf44af9f 2732
sca8er 2:5853bf44af9f 2733 typedef struct _KEY_NODE_INFORMATION {
sca8er 2:5853bf44af9f 2734 LARGE_INTEGER LastWriteTime;
sca8er 2:5853bf44af9f 2735 ULONG TitleIndex;
sca8er 2:5853bf44af9f 2736 ULONG ClassOffset;
sca8er 2:5853bf44af9f 2737 ULONG ClassLength;
sca8er 2:5853bf44af9f 2738 ULONG NameLength;
sca8er 2:5853bf44af9f 2739 WCHAR Name[1];
sca8er 2:5853bf44af9f 2740 } KEY_NODE_INFORMATION, *PKEY_NODE_INFORMATION;
sca8er 2:5853bf44af9f 2741
sca8er 2:5853bf44af9f 2742 typedef struct _KEY_VALUE_BASIC_INFORMATION {
sca8er 2:5853bf44af9f 2743 ULONG TitleIndex;
sca8er 2:5853bf44af9f 2744 ULONG Type;
sca8er 2:5853bf44af9f 2745 ULONG NameLength;
sca8er 2:5853bf44af9f 2746 WCHAR Name[1];
sca8er 2:5853bf44af9f 2747 } KEY_VALUE_BASIC_INFORMATION, *PKEY_VALUE_BASIC_INFORMATION;
sca8er 2:5853bf44af9f 2748
sca8er 2:5853bf44af9f 2749 typedef struct _KEY_VALUE_FULL_INFORMATION {
sca8er 2:5853bf44af9f 2750 ULONG TitleIndex;
sca8er 2:5853bf44af9f 2751 ULONG Type;
sca8er 2:5853bf44af9f 2752 ULONG DataOffset;
sca8er 2:5853bf44af9f 2753 ULONG DataLength;
sca8er 2:5853bf44af9f 2754 ULONG NameLength;
sca8er 2:5853bf44af9f 2755 WCHAR Name[1];
sca8er 2:5853bf44af9f 2756 } KEY_VALUE_FULL_INFORMATION, *PKEY_VALUE_FULL_INFORMATION;
sca8er 2:5853bf44af9f 2757
sca8er 2:5853bf44af9f 2758 typedef struct _KEY_VALUE_PARTIAL_INFORMATION {
sca8er 2:5853bf44af9f 2759 ULONG TitleIndex;
sca8er 2:5853bf44af9f 2760 ULONG Type;
sca8er 2:5853bf44af9f 2761 ULONG DataLength;
sca8er 2:5853bf44af9f 2762 UCHAR Data[1];
sca8er 2:5853bf44af9f 2763 } KEY_VALUE_PARTIAL_INFORMATION, *PKEY_VALUE_PARTIAL_INFORMATION;
sca8er 2:5853bf44af9f 2764
sca8er 2:5853bf44af9f 2765 typedef struct _KEY_VALUE_PARTIAL_INFORMATION_ALIGN64 {
sca8er 2:5853bf44af9f 2766 ULONG Type;
sca8er 2:5853bf44af9f 2767 ULONG DataLength;
sca8er 2:5853bf44af9f 2768 UCHAR Data[1];
sca8er 2:5853bf44af9f 2769 } KEY_VALUE_PARTIAL_INFORMATION_ALIGN64, *PKEY_VALUE_PARTIAL_INFORMATION_ALIGN64;
sca8er 2:5853bf44af9f 2770
sca8er 2:5853bf44af9f 2771 typedef struct _KEY_VALUE_ENTRY {
sca8er 2:5853bf44af9f 2772 PUNICODE_STRING ValueName;
sca8er 2:5853bf44af9f 2773 ULONG DataLength;
sca8er 2:5853bf44af9f 2774 ULONG DataOffset;
sca8er 2:5853bf44af9f 2775 ULONG Type;
sca8er 2:5853bf44af9f 2776 } KEY_VALUE_ENTRY, *PKEY_VALUE_ENTRY;
sca8er 2:5853bf44af9f 2777
sca8er 2:5853bf44af9f 2778 typedef enum _KEY_VALUE_INFORMATION_CLASS {
sca8er 2:5853bf44af9f 2779 KeyValueBasicInformation,
sca8er 2:5853bf44af9f 2780 KeyValueFullInformation,
sca8er 2:5853bf44af9f 2781 KeyValuePartialInformation,
sca8er 2:5853bf44af9f 2782 KeyValueFullInformationAlign64,
sca8er 2:5853bf44af9f 2783 KeyValuePartialInformationAlign64
sca8er 2:5853bf44af9f 2784 } KEY_VALUE_INFORMATION_CLASS;
sca8er 2:5853bf44af9f 2785
sca8er 2:5853bf44af9f 2786 /* KEY_VALUE_Xxx.Type */
sca8er 2:5853bf44af9f 2787
sca8er 2:5853bf44af9f 2788 #define REG_NONE 0
sca8er 2:5853bf44af9f 2789 #define REG_SZ 1
sca8er 2:5853bf44af9f 2790 #define REG_EXPAND_SZ 2
sca8er 2:5853bf44af9f 2791 #define REG_BINARY 3
sca8er 2:5853bf44af9f 2792 #define REG_DWORD 4
sca8er 2:5853bf44af9f 2793 #define REG_DWORD_LITTLE_ENDIAN 4
sca8er 2:5853bf44af9f 2794 #define REG_DWORD_BIG_ENDIAN 5
sca8er 2:5853bf44af9f 2795 #define REG_LINK 6
sca8er 2:5853bf44af9f 2796 #define REG_MULTI_SZ 7
sca8er 2:5853bf44af9f 2797 #define REG_RESOURCE_LIST 8
sca8er 2:5853bf44af9f 2798 #define REG_FULL_RESOURCE_DESCRIPTOR 9
sca8er 2:5853bf44af9f 2799 #define REG_RESOURCE_REQUIREMENTS_LIST 10
sca8er 2:5853bf44af9f 2800 #define REG_QWORD 11
sca8er 2:5853bf44af9f 2801 #define REG_QWORD_LITTLE_ENDIAN 11
sca8er 2:5853bf44af9f 2802
sca8er 2:5853bf44af9f 2803 #define PCI_TYPE0_ADDRESSES 6
sca8er 2:5853bf44af9f 2804 #define PCI_TYPE1_ADDRESSES 2
sca8er 2:5853bf44af9f 2805 #define PCI_TYPE2_ADDRESSES 5
sca8er 2:5853bf44af9f 2806
sca8er 2:5853bf44af9f 2807 typedef struct _PCI_COMMON_CONFIG {
sca8er 2:5853bf44af9f 2808 USHORT VendorID;
sca8er 2:5853bf44af9f 2809 USHORT DeviceID;
sca8er 2:5853bf44af9f 2810 USHORT Command;
sca8er 2:5853bf44af9f 2811 USHORT Status;
sca8er 2:5853bf44af9f 2812 UCHAR RevisionID;
sca8er 2:5853bf44af9f 2813 UCHAR ProgIf;
sca8er 2:5853bf44af9f 2814 UCHAR SubClass;
sca8er 2:5853bf44af9f 2815 UCHAR BaseClass;
sca8er 2:5853bf44af9f 2816 UCHAR CacheLineSize;
sca8er 2:5853bf44af9f 2817 UCHAR LatencyTimer;
sca8er 2:5853bf44af9f 2818 UCHAR HeaderType;
sca8er 2:5853bf44af9f 2819 UCHAR BIST;
sca8er 2:5853bf44af9f 2820 union {
sca8er 2:5853bf44af9f 2821 struct _PCI_HEADER_TYPE_0 {
sca8er 2:5853bf44af9f 2822 ULONG BaseAddresses[PCI_TYPE0_ADDRESSES];
sca8er 2:5853bf44af9f 2823 ULONG CIS;
sca8er 2:5853bf44af9f 2824 USHORT SubVendorID;
sca8er 2:5853bf44af9f 2825 USHORT SubSystemID;
sca8er 2:5853bf44af9f 2826 ULONG ROMBaseAddress;
sca8er 2:5853bf44af9f 2827 UCHAR CapabilitiesPtr;
sca8er 2:5853bf44af9f 2828 UCHAR Reserved1[3];
sca8er 2:5853bf44af9f 2829 ULONG Reserved2;
sca8er 2:5853bf44af9f 2830 UCHAR InterruptLine;
sca8er 2:5853bf44af9f 2831 UCHAR InterruptPin;
sca8er 2:5853bf44af9f 2832 UCHAR MinimumGrant;
sca8er 2:5853bf44af9f 2833 UCHAR MaximumLatency;
sca8er 2:5853bf44af9f 2834 } type0;
sca8er 2:5853bf44af9f 2835 struct _PCI_HEADER_TYPE_1 {
sca8er 2:5853bf44af9f 2836 ULONG BaseAddresses[PCI_TYPE1_ADDRESSES];
sca8er 2:5853bf44af9f 2837 UCHAR PrimaryBus;
sca8er 2:5853bf44af9f 2838 UCHAR SecondaryBus;
sca8er 2:5853bf44af9f 2839 UCHAR SubordinateBus;
sca8er 2:5853bf44af9f 2840 UCHAR SecondaryLatency;
sca8er 2:5853bf44af9f 2841 UCHAR IOBase;
sca8er 2:5853bf44af9f 2842 UCHAR IOLimit;
sca8er 2:5853bf44af9f 2843 USHORT SecondaryStatus;
sca8er 2:5853bf44af9f 2844 USHORT MemoryBase;
sca8er 2:5853bf44af9f 2845 USHORT MemoryLimit;
sca8er 2:5853bf44af9f 2846 USHORT PrefetchBase;
sca8er 2:5853bf44af9f 2847 USHORT PrefetchLimit;
sca8er 2:5853bf44af9f 2848 ULONG PrefetchBaseUpper32;
sca8er 2:5853bf44af9f 2849 ULONG PrefetchLimitUpper32;
sca8er 2:5853bf44af9f 2850 USHORT IOBaseUpper16;
sca8er 2:5853bf44af9f 2851 USHORT IOLimitUpper16;
sca8er 2:5853bf44af9f 2852 UCHAR CapabilitiesPtr;
sca8er 2:5853bf44af9f 2853 UCHAR Reserved1[3];
sca8er 2:5853bf44af9f 2854 ULONG ROMBaseAddress;
sca8er 2:5853bf44af9f 2855 UCHAR InterruptLine;
sca8er 2:5853bf44af9f 2856 UCHAR InterruptPin;
sca8er 2:5853bf44af9f 2857 USHORT BridgeControl;
sca8er 2:5853bf44af9f 2858 } type1;
sca8er 2:5853bf44af9f 2859 struct _PCI_HEADER_TYPE_2 {
sca8er 2:5853bf44af9f 2860 ULONG SocketRegistersBaseAddress;
sca8er 2:5853bf44af9f 2861 UCHAR CapabilitiesPtr;
sca8er 2:5853bf44af9f 2862 UCHAR Reserved;
sca8er 2:5853bf44af9f 2863 USHORT SecondaryStatus;
sca8er 2:5853bf44af9f 2864 UCHAR PrimaryBus;
sca8er 2:5853bf44af9f 2865 UCHAR SecondaryBus;
sca8er 2:5853bf44af9f 2866 UCHAR SubordinateBus;
sca8er 2:5853bf44af9f 2867 UCHAR SecondaryLatency;
sca8er 2:5853bf44af9f 2868 struct {
sca8er 2:5853bf44af9f 2869 ULONG Base;
sca8er 2:5853bf44af9f 2870 ULONG Limit;
sca8er 2:5853bf44af9f 2871 } Range[PCI_TYPE2_ADDRESSES - 1];
sca8er 2:5853bf44af9f 2872 UCHAR InterruptLine;
sca8er 2:5853bf44af9f 2873 UCHAR InterruptPin;
sca8er 2:5853bf44af9f 2874 USHORT BridgeControl;
sca8er 2:5853bf44af9f 2875 } type2;
sca8er 2:5853bf44af9f 2876 } u;
sca8er 2:5853bf44af9f 2877 UCHAR DeviceSpecific[192];
sca8er 2:5853bf44af9f 2878 } PCI_COMMON_CONFIG, *PPCI_COMMON_CONFIG;
sca8er 2:5853bf44af9f 2879
sca8er 2:5853bf44af9f 2880 /* PCI_COMMON_CONFIG.Command */
sca8er 2:5853bf44af9f 2881
sca8er 2:5853bf44af9f 2882 #define PCI_ENABLE_IO_SPACE 0x0001
sca8er 2:5853bf44af9f 2883 #define PCI_ENABLE_MEMORY_SPACE 0x0002
sca8er 2:5853bf44af9f 2884 #define PCI_ENABLE_BUS_MASTER 0x0004
sca8er 2:5853bf44af9f 2885 #define PCI_ENABLE_SPECIAL_CYCLES 0x0008
sca8er 2:5853bf44af9f 2886 #define PCI_ENABLE_WRITE_AND_INVALIDATE 0x0010
sca8er 2:5853bf44af9f 2887 #define PCI_ENABLE_VGA_COMPATIBLE_PALETTE 0x0020
sca8er 2:5853bf44af9f 2888 #define PCI_ENABLE_PARITY 0x0040
sca8er 2:5853bf44af9f 2889 #define PCI_ENABLE_WAIT_CYCLE 0x0080
sca8er 2:5853bf44af9f 2890 #define PCI_ENABLE_SERR 0x0100
sca8er 2:5853bf44af9f 2891 #define PCI_ENABLE_FAST_BACK_TO_BACK 0x0200
sca8er 2:5853bf44af9f 2892
sca8er 2:5853bf44af9f 2893 /* PCI_COMMON_CONFIG.Status */
sca8er 2:5853bf44af9f 2894
sca8er 2:5853bf44af9f 2895 #define PCI_STATUS_CAPABILITIES_LIST 0x0010
sca8er 2:5853bf44af9f 2896 #define PCI_STATUS_66MHZ_CAPABLE 0x0020
sca8er 2:5853bf44af9f 2897 #define PCI_STATUS_UDF_SUPPORTED 0x0040
sca8er 2:5853bf44af9f 2898 #define PCI_STATUS_FAST_BACK_TO_BACK 0x0080
sca8er 2:5853bf44af9f 2899 #define PCI_STATUS_DATA_PARITY_DETECTED 0x0100
sca8er 2:5853bf44af9f 2900 #define PCI_STATUS_DEVSEL 0x0600
sca8er 2:5853bf44af9f 2901 #define PCI_STATUS_SIGNALED_TARGET_ABORT 0x0800
sca8er 2:5853bf44af9f 2902 #define PCI_STATUS_RECEIVED_TARGET_ABORT 0x1000
sca8er 2:5853bf44af9f 2903 #define PCI_STATUS_RECEIVED_MASTER_ABORT 0x2000
sca8er 2:5853bf44af9f 2904 #define PCI_STATUS_SIGNALED_SYSTEM_ERROR 0x4000
sca8er 2:5853bf44af9f 2905 #define PCI_STATUS_DETECTED_PARITY_ERROR 0x8000
sca8er 2:5853bf44af9f 2906
sca8er 2:5853bf44af9f 2907 /* PCI_COMMON_CONFIG.HeaderType */
sca8er 2:5853bf44af9f 2908
sca8er 2:5853bf44af9f 2909 #define PCI_MULTIFUNCTION 0x80
sca8er 2:5853bf44af9f 2910 #define PCI_DEVICE_TYPE 0x00
sca8er 2:5853bf44af9f 2911 #define PCI_BRIDGE_TYPE 0x01
sca8er 2:5853bf44af9f 2912 #define PCI_CARDBUS_BRIDGE_TYPE 0x02
sca8er 2:5853bf44af9f 2913
sca8er 2:5853bf44af9f 2914 #define PCI_CONFIGURATION_TYPE(PciData) \
sca8er 2:5853bf44af9f 2915 (((PPCI_COMMON_CONFIG) (PciData))->HeaderType & ~PCI_MULTIFUNCTION)
sca8er 2:5853bf44af9f 2916
sca8er 2:5853bf44af9f 2917 #define PCI_MULTIFUNCTION_DEVICE(PciData) \
sca8er 2:5853bf44af9f 2918 ((((PPCI_COMMON_CONFIG) (PciData))->HeaderType & PCI_MULTIFUNCTION) != 0)
sca8er 2:5853bf44af9f 2919
sca8er 2:5853bf44af9f 2920 typedef struct _PCI_SLOT_NUMBER {
sca8er 2:5853bf44af9f 2921 union {
sca8er 2:5853bf44af9f 2922 struct {
sca8er 2:5853bf44af9f 2923 ULONG DeviceNumber : 5;
sca8er 2:5853bf44af9f 2924 ULONG FunctionNumber : 3;
sca8er 2:5853bf44af9f 2925 ULONG Reserved : 24;
sca8er 2:5853bf44af9f 2926 } bits;
sca8er 2:5853bf44af9f 2927 ULONG AsULONG;
sca8er 2:5853bf44af9f 2928 } u;
sca8er 2:5853bf44af9f 2929 } PCI_SLOT_NUMBER, *PPCI_SLOT_NUMBER;
sca8er 2:5853bf44af9f 2930
sca8er 2:5853bf44af9f 2931 typedef enum _POOL_TYPE {
sca8er 2:5853bf44af9f 2932 NonPagedPool,
sca8er 2:5853bf44af9f 2933 PagedPool,
sca8er 2:5853bf44af9f 2934 NonPagedPoolMustSucceed,
sca8er 2:5853bf44af9f 2935 DontUseThisType,
sca8er 2:5853bf44af9f 2936 NonPagedPoolCacheAligned,
sca8er 2:5853bf44af9f 2937 PagedPoolCacheAligned,
sca8er 2:5853bf44af9f 2938 NonPagedPoolCacheAlignedMustS,
sca8er 2:5853bf44af9f 2939 MaxPoolType,
sca8er 2:5853bf44af9f 2940 NonPagedPoolSession = 32,
sca8er 2:5853bf44af9f 2941 PagedPoolSession,
sca8er 2:5853bf44af9f 2942 NonPagedPoolMustSucceedSession,
sca8er 2:5853bf44af9f 2943 DontUseThisTypeSession,
sca8er 2:5853bf44af9f 2944 NonPagedPoolCacheAlignedSession,
sca8er 2:5853bf44af9f 2945 PagedPoolCacheAlignedSession,
sca8er 2:5853bf44af9f 2946 NonPagedPoolCacheAlignedMustSSession
sca8er 2:5853bf44af9f 2947 } POOL_TYPE;
sca8er 2:5853bf44af9f 2948
sca8er 2:5853bf44af9f 2949 typedef enum _EX_POOL_PRIORITY {
sca8er 2:5853bf44af9f 2950 LowPoolPriority,
sca8er 2:5853bf44af9f 2951 LowPoolPrioritySpecialPoolOverrun = 8,
sca8er 2:5853bf44af9f 2952 LowPoolPrioritySpecialPoolUnderrun = 9,
sca8er 2:5853bf44af9f 2953 NormalPoolPriority = 16,
sca8er 2:5853bf44af9f 2954 NormalPoolPrioritySpecialPoolOverrun = 24,
sca8er 2:5853bf44af9f 2955 NormalPoolPrioritySpecialPoolUnderrun = 25,
sca8er 2:5853bf44af9f 2956 HighPoolPriority = 32,
sca8er 2:5853bf44af9f 2957 HighPoolPrioritySpecialPoolOverrun = 40,
sca8er 2:5853bf44af9f 2958 HighPoolPrioritySpecialPoolUnderrun = 41
sca8er 2:5853bf44af9f 2959 } EX_POOL_PRIORITY;
sca8er 2:5853bf44af9f 2960
sca8er 2:5853bf44af9f 2961 /* PRIVILEGE_SET.Control */
sca8er 2:5853bf44af9f 2962
sca8er 2:5853bf44af9f 2963 #define PRIVILEGE_SET_ALL_NECESSARY 1
sca8er 2:5853bf44af9f 2964
sca8er 2:5853bf44af9f 2965 typedef struct _RTL_OSVERSIONINFOW {
sca8er 2:5853bf44af9f 2966 ULONG dwOSVersionInfoSize;
sca8er 2:5853bf44af9f 2967 ULONG dwMajorVersion;
sca8er 2:5853bf44af9f 2968 ULONG dwMinorVersion;
sca8er 2:5853bf44af9f 2969 ULONG dwBuildNumber;
sca8er 2:5853bf44af9f 2970 ULONG dwPlatformId;
sca8er 2:5853bf44af9f 2971 WCHAR szCSDVersion[128];
sca8er 2:5853bf44af9f 2972 } RTL_OSVERSIONINFOW, *PRTL_OSVERSIONINFOW;
sca8er 2:5853bf44af9f 2973
sca8er 2:5853bf44af9f 2974 typedef struct _RTL_OSVERSIONINFOEXW {
sca8er 2:5853bf44af9f 2975 ULONG dwOSVersionInfoSize;
sca8er 2:5853bf44af9f 2976 ULONG dwMajorVersion;
sca8er 2:5853bf44af9f 2977 ULONG dwMinorVersion;
sca8er 2:5853bf44af9f 2978 ULONG dwBuildNumber;
sca8er 2:5853bf44af9f 2979 ULONG dwPlatformId;
sca8er 2:5853bf44af9f 2980 WCHAR szCSDVersion[128];
sca8er 2:5853bf44af9f 2981 USHORT wServicePackMajor;
sca8er 2:5853bf44af9f 2982 USHORT wServicePackMinor;
sca8er 2:5853bf44af9f 2983 USHORT wSuiteMask;
sca8er 2:5853bf44af9f 2984 UCHAR wProductType;
sca8er 2:5853bf44af9f 2985 UCHAR wReserved;
sca8er 2:5853bf44af9f 2986 } RTL_OSVERSIONINFOEXW, *PRTL_OSVERSIONINFOEXW;
sca8er 2:5853bf44af9f 2987
sca8er 2:5853bf44af9f 2988 NTOSAPI
sca8er 2:5853bf44af9f 2989 ULONGLONG
sca8er 2:5853bf44af9f 2990 DDKAPI
sca8er 2:5853bf44af9f 2991 VerSetConditionMask(
sca8er 2:5853bf44af9f 2992 /*IN*/ ULONGLONG ConditionMask,
sca8er 2:5853bf44af9f 2993 /*IN*/ ULONG TypeMask,
sca8er 2:5853bf44af9f 2994 /*IN*/ UCHAR Condition);
sca8er 2:5853bf44af9f 2995
sca8er 2:5853bf44af9f 2996 #define VER_SET_CONDITION(ConditionMask, TypeBitMask, ComparisonType) \
sca8er 2:5853bf44af9f 2997 ((ConditionMask) = VerSetConditionMask((ConditionMask), \
sca8er 2:5853bf44af9f 2998 (TypeBitMask), (ComparisonType)))
sca8er 2:5853bf44af9f 2999
sca8er 2:5853bf44af9f 3000 /* RtlVerifyVersionInfo() TypeMask */
sca8er 2:5853bf44af9f 3001
sca8er 2:5853bf44af9f 3002 #define VER_MINORVERSION 0x0000001
sca8er 2:5853bf44af9f 3003 #define VER_MAJORVERSION 0x0000002
sca8er 2:5853bf44af9f 3004 #define VER_BUILDNUMBER 0x0000004
sca8er 2:5853bf44af9f 3005 #define VER_PLATFORMID 0x0000008
sca8er 2:5853bf44af9f 3006 #define VER_SERVICEPACKMINOR 0x0000010
sca8er 2:5853bf44af9f 3007 #define VER_SERVICEPACKMAJOR 0x0000020
sca8er 2:5853bf44af9f 3008 #define VER_SUITENAME 0x0000040
sca8er 2:5853bf44af9f 3009 #define VER_PRODUCT_TYPE 0x0000080
sca8er 2:5853bf44af9f 3010
sca8er 2:5853bf44af9f 3011 /* RtlVerifyVersionInfo() ComparisonType */
sca8er 2:5853bf44af9f 3012
sca8er 2:5853bf44af9f 3013 #define VER_EQUAL 1
sca8er 2:5853bf44af9f 3014 #define VER_GREATER 2
sca8er 2:5853bf44af9f 3015 #define VER_GREATER_EQUAL 3
sca8er 2:5853bf44af9f 3016 #define VER_LESS 4
sca8er 2:5853bf44af9f 3017 #define VER_LESS_EQUAL 5
sca8er 2:5853bf44af9f 3018 #define VER_AND 6
sca8er 2:5853bf44af9f 3019 #define VER_OR 7
sca8er 2:5853bf44af9f 3020
sca8er 2:5853bf44af9f 3021 #define VER_CONDITION_MASK 7
sca8er 2:5853bf44af9f 3022 #define VER_NUM_BITS_PER_CONDITION_MASK 3
sca8er 2:5853bf44af9f 3023
sca8er 2:5853bf44af9f 3024 typedef struct _RTL_BITMAP {
sca8er 2:5853bf44af9f 3025 ULONG SizeOfBitMap;
sca8er 2:5853bf44af9f 3026 PULONG Buffer;
sca8er 2:5853bf44af9f 3027 } RTL_BITMAP, *PRTL_BITMAP;
sca8er 2:5853bf44af9f 3028
sca8er 2:5853bf44af9f 3029 typedef struct _RTL_BITMAP_RUN {
sca8er 2:5853bf44af9f 3030 ULONG StartingIndex;
sca8er 2:5853bf44af9f 3031 ULONG NumberOfBits;
sca8er 2:5853bf44af9f 3032 } RTL_BITMAP_RUN, *PRTL_BITMAP_RUN;
sca8er 2:5853bf44af9f 3033
sca8er 2:5853bf44af9f 3034 typedef NTSTATUS DDKAPI
sca8er 2:5853bf44af9f 3035 (*PRTL_QUERY_REGISTRY_ROUTINE)(
sca8er 2:5853bf44af9f 3036 /*IN*/ PWSTR ValueName,
sca8er 2:5853bf44af9f 3037 /*IN*/ ULONG ValueType,
sca8er 2:5853bf44af9f 3038 /*IN*/ PVOID ValueData,
sca8er 2:5853bf44af9f 3039 /*IN*/ ULONG ValueLength,
sca8er 2:5853bf44af9f 3040 /*IN*/ PVOID Context,
sca8er 2:5853bf44af9f 3041 /*IN*/ PVOID EntryContext);
sca8er 2:5853bf44af9f 3042
sca8er 2:5853bf44af9f 3043 #define RTL_REGISTRY_ABSOLUTE 0
sca8er 2:5853bf44af9f 3044 #define RTL_REGISTRY_SERVICES 1
sca8er 2:5853bf44af9f 3045 #define RTL_REGISTRY_CONTROL 2
sca8er 2:5853bf44af9f 3046 #define RTL_REGISTRY_WINDOWS_NT 3
sca8er 2:5853bf44af9f 3047 #define RTL_REGISTRY_DEVICEMAP 4
sca8er 2:5853bf44af9f 3048 #define RTL_REGISTRY_USER 5
sca8er 2:5853bf44af9f 3049
sca8er 2:5853bf44af9f 3050 /* RTL_QUERY_REGISTRY_TABLE.Flags */
sca8er 2:5853bf44af9f 3051 #define RTL_QUERY_REGISTRY_SUBKEY 0x00000001
sca8er 2:5853bf44af9f 3052 #define RTL_QUERY_REGISTRY_TOPKEY 0x00000002
sca8er 2:5853bf44af9f 3053 #define RTL_QUERY_REGISTRY_REQUIRED 0x00000004
sca8er 2:5853bf44af9f 3054 #define RTL_QUERY_REGISTRY_NOVALUE 0x00000008
sca8er 2:5853bf44af9f 3055 #define RTL_QUERY_REGISTRY_NOEXPAND 0x00000010
sca8er 2:5853bf44af9f 3056 #define RTL_QUERY_REGISTRY_DIRECT 0x00000020
sca8er 2:5853bf44af9f 3057 #define RTL_QUERY_REGISTRY_DELETE 0x00000040
sca8er 2:5853bf44af9f 3058
sca8er 2:5853bf44af9f 3059 typedef struct _RTL_QUERY_REGISTRY_TABLE {
sca8er 2:5853bf44af9f 3060 PRTL_QUERY_REGISTRY_ROUTINE QueryRoutine;
sca8er 2:5853bf44af9f 3061 ULONG Flags;
sca8er 2:5853bf44af9f 3062 PWSTR Name;
sca8er 2:5853bf44af9f 3063 PVOID EntryContext;
sca8er 2:5853bf44af9f 3064 ULONG DefaultType;
sca8er 2:5853bf44af9f 3065 PVOID DefaultData;
sca8er 2:5853bf44af9f 3066 ULONG DefaultLength;
sca8er 2:5853bf44af9f 3067 } RTL_QUERY_REGISTRY_TABLE, *PRTL_QUERY_REGISTRY_TABLE;
sca8er 2:5853bf44af9f 3068
sca8er 2:5853bf44af9f 3069 typedef struct _TIME_FIELDS {
sca8er 2:5853bf44af9f 3070 CSHORT Year;
sca8er 2:5853bf44af9f 3071 CSHORT Month;
sca8er 2:5853bf44af9f 3072 CSHORT Day;
sca8er 2:5853bf44af9f 3073 CSHORT Hour;
sca8er 2:5853bf44af9f 3074 CSHORT Minute;
sca8er 2:5853bf44af9f 3075 CSHORT Second;
sca8er 2:5853bf44af9f 3076 CSHORT Milliseconds;
sca8er 2:5853bf44af9f 3077 CSHORT Weekday;
sca8er 2:5853bf44af9f 3078 } TIME_FIELDS, *PTIME_FIELDS;
sca8er 2:5853bf44af9f 3079
sca8er 2:5853bf44af9f 3080 typedef PVOID DDKAPI
sca8er 2:5853bf44af9f 3081 (*PALLOCATE_FUNCTION)(
sca8er 2:5853bf44af9f 3082 /*IN*/ POOL_TYPE PoolType,
sca8er 2:5853bf44af9f 3083 /*IN*/ SIZE_T NumberOfBytes,
sca8er 2:5853bf44af9f 3084 /*IN*/ ULONG Tag);
sca8er 2:5853bf44af9f 3085
sca8er 2:5853bf44af9f 3086 typedef VOID DDKAPI
sca8er 2:5853bf44af9f 3087 (*PFREE_FUNCTION)(
sca8er 2:5853bf44af9f 3088 /*IN*/ PVOID Buffer);
sca8er 2:5853bf44af9f 3089
sca8er 2:5853bf44af9f 3090 #define GENERAL_LOOKASIDE_S \
sca8er 2:5853bf44af9f 3091 SLIST_HEADER ListHead; \
sca8er 2:5853bf44af9f 3092 USHORT Depth; \
sca8er 2:5853bf44af9f 3093 USHORT MaximumDepth; \
sca8er 2:5853bf44af9f 3094 ULONG TotalAllocates; \
sca8er 2:5853bf44af9f 3095 _ANONYMOUS_UNION union { \
sca8er 2:5853bf44af9f 3096 ULONG AllocateMisses; \
sca8er 2:5853bf44af9f 3097 ULONG AllocateHits; \
sca8er 2:5853bf44af9f 3098 } DUMMYUNIONNAME; \
sca8er 2:5853bf44af9f 3099 ULONG TotalFrees; \
sca8er 2:5853bf44af9f 3100 _ANONYMOUS_UNION union { \
sca8er 2:5853bf44af9f 3101 ULONG FreeMisses; \
sca8er 2:5853bf44af9f 3102 ULONG FreeHits; \
sca8er 2:5853bf44af9f 3103 } DUMMYUNIONNAME2; \
sca8er 2:5853bf44af9f 3104 POOL_TYPE Type; \
sca8er 2:5853bf44af9f 3105 ULONG Tag; \
sca8er 2:5853bf44af9f 3106 ULONG Size; \
sca8er 2:5853bf44af9f 3107 PALLOCATE_FUNCTION Allocate; \
sca8er 2:5853bf44af9f 3108 PFREE_FUNCTION Free; \
sca8er 2:5853bf44af9f 3109 LIST_ENTRY ListEntry; \
sca8er 2:5853bf44af9f 3110 ULONG LastTotalAllocates; \
sca8er 2:5853bf44af9f 3111 _ANONYMOUS_UNION union { \
sca8er 2:5853bf44af9f 3112 ULONG LastAllocateMisses; \
sca8er 2:5853bf44af9f 3113 ULONG LastAllocateHits; \
sca8er 2:5853bf44af9f 3114 } DUMMYUNIONNAME3; \
sca8er 2:5853bf44af9f 3115 ULONG Future[2];
sca8er 2:5853bf44af9f 3116
sca8er 2:5853bf44af9f 3117 typedef struct _GENERAL_LOOKASIDE {
sca8er 2:5853bf44af9f 3118 GENERAL_LOOKASIDE_S
sca8er 2:5853bf44af9f 3119 } GENERAL_LOOKASIDE, *PGENERAL_LOOKASIDE;
sca8er 2:5853bf44af9f 3120
sca8er 2:5853bf44af9f 3121 typedef struct _NPAGED_LOOKASIDE_LIST {
sca8er 2:5853bf44af9f 3122 GENERAL_LOOKASIDE_S
sca8er 2:5853bf44af9f 3123 KSPIN_LOCK Obsoleted;
sca8er 2:5853bf44af9f 3124 } NPAGED_LOOKASIDE_LIST, *PNPAGED_LOOKASIDE_LIST;
sca8er 2:5853bf44af9f 3125
sca8er 2:5853bf44af9f 3126 typedef struct _PAGED_LOOKASIDE_LIST {
sca8er 2:5853bf44af9f 3127 GENERAL_LOOKASIDE_S
sca8er 2:5853bf44af9f 3128 FAST_MUTEX Obsoleted;
sca8er 2:5853bf44af9f 3129 } PAGED_LOOKASIDE_LIST, *PPAGED_LOOKASIDE_LIST;
sca8er 2:5853bf44af9f 3130
sca8er 2:5853bf44af9f 3131 typedef struct _CALLBACK_OBJECT *PCALLBACK_OBJECT;
sca8er 2:5853bf44af9f 3132
sca8er 2:5853bf44af9f 3133 typedef VOID DDKAPI (*PCALLBACK_FUNCTION)(
sca8er 2:5853bf44af9f 3134 /*IN*/ PVOID CallbackContext,
sca8er 2:5853bf44af9f 3135 /*IN*/ PVOID Argument1,
sca8er 2:5853bf44af9f 3136 /*IN*/ PVOID Argument2);
sca8er 2:5853bf44af9f 3137
sca8er 2:5853bf44af9f 3138 typedef enum _EVENT_TYPE {
sca8er 2:5853bf44af9f 3139 NotificationEvent,
sca8er 2:5853bf44af9f 3140 SynchronizationEvent
sca8er 2:5853bf44af9f 3141 } EVENT_TYPE;
sca8er 2:5853bf44af9f 3142
sca8er 2:5853bf44af9f 3143 typedef enum _KWAIT_REASON {
sca8er 2:5853bf44af9f 3144 Executive,
sca8er 2:5853bf44af9f 3145 FreePage,
sca8er 2:5853bf44af9f 3146 PageIn,
sca8er 2:5853bf44af9f 3147 PoolAllocation,
sca8er 2:5853bf44af9f 3148 DelayExecution,
sca8er 2:5853bf44af9f 3149 Suspended,
sca8er 2:5853bf44af9f 3150 UserRequest,
sca8er 2:5853bf44af9f 3151 WrExecutive,
sca8er 2:5853bf44af9f 3152 WrFreePage,
sca8er 2:5853bf44af9f 3153 WrPageIn,
sca8er 2:5853bf44af9f 3154 WrPoolAllocation,
sca8er 2:5853bf44af9f 3155 WrDelayExecution,
sca8er 2:5853bf44af9f 3156 WrSuspended,
sca8er 2:5853bf44af9f 3157 WrUserRequest,
sca8er 2:5853bf44af9f 3158 WrEventPair,
sca8er 2:5853bf44af9f 3159 WrQueue,
sca8er 2:5853bf44af9f 3160 WrLpcReceive,
sca8er 2:5853bf44af9f 3161 WrLpcReply,
sca8er 2:5853bf44af9f 3162 WrVirtualMemory,
sca8er 2:5853bf44af9f 3163 WrPageOut,
sca8er 2:5853bf44af9f 3164 WrRendezvous,
sca8er 2:5853bf44af9f 3165 Spare2,
sca8er 2:5853bf44af9f 3166 Spare3,
sca8er 2:5853bf44af9f 3167 Spare4,
sca8er 2:5853bf44af9f 3168 Spare5,
sca8er 2:5853bf44af9f 3169 Spare6,
sca8er 2:5853bf44af9f 3170 WrKernel,
sca8er 2:5853bf44af9f 3171 MaximumWaitReason
sca8er 2:5853bf44af9f 3172 } KWAIT_REASON;
sca8er 2:5853bf44af9f 3173
sca8er 2:5853bf44af9f 3174 typedef struct _KWAIT_BLOCK {
sca8er 2:5853bf44af9f 3175 LIST_ENTRY WaitListEntry;
sca8er 2:5853bf44af9f 3176 struct _KTHREAD * RESTRICTED_POINTER Thread;
sca8er 2:5853bf44af9f 3177 PVOID Object;
sca8er 2:5853bf44af9f 3178 struct _KWAIT_BLOCK * RESTRICTED_POINTER NextWaitBlock;
sca8er 2:5853bf44af9f 3179 USHORT WaitKey;
sca8er 2:5853bf44af9f 3180 USHORT WaitType;
sca8er 2:5853bf44af9f 3181 } KWAIT_BLOCK, *PKWAIT_BLOCK, *RESTRICTED_POINTER PRKWAIT_BLOCK;
sca8er 2:5853bf44af9f 3182
sca8er 2:5853bf44af9f 3183 typedef struct _IO_REMOVE_LOCK_TRACKING_BLOCK * PIO_REMOVE_LOCK_TRACKING_BLOCK;
sca8er 2:5853bf44af9f 3184
sca8er 2:5853bf44af9f 3185 typedef struct _IO_REMOVE_LOCK_COMMON_BLOCK {
sca8er 2:5853bf44af9f 3186 BOOLEAN Removed;
sca8er 2:5853bf44af9f 3187 BOOLEAN Reserved[3];
sca8er 2:5853bf44af9f 3188 LONG IoCount;
sca8er 2:5853bf44af9f 3189 KEVENT RemoveEvent;
sca8er 2:5853bf44af9f 3190 } IO_REMOVE_LOCK_COMMON_BLOCK;
sca8er 2:5853bf44af9f 3191
sca8er 2:5853bf44af9f 3192 typedef struct _IO_REMOVE_LOCK_DBG_BLOCK {
sca8er 2:5853bf44af9f 3193 LONG Signature;
sca8er 2:5853bf44af9f 3194 LONG HighWatermark;
sca8er 2:5853bf44af9f 3195 LONGLONG MaxLockedTicks;
sca8er 2:5853bf44af9f 3196 LONG AllocateTag;
sca8er 2:5853bf44af9f 3197 LIST_ENTRY LockList;
sca8er 2:5853bf44af9f 3198 KSPIN_LOCK Spin;
sca8er 2:5853bf44af9f 3199 LONG LowMemoryCount;
sca8er 2:5853bf44af9f 3200 ULONG Reserved1[4];
sca8er 2:5853bf44af9f 3201 PVOID Reserved2;
sca8er 2:5853bf44af9f 3202 PIO_REMOVE_LOCK_TRACKING_BLOCK Blocks;
sca8er 2:5853bf44af9f 3203 } IO_REMOVE_LOCK_DBG_BLOCK;
sca8er 2:5853bf44af9f 3204
sca8er 2:5853bf44af9f 3205 typedef struct _IO_REMOVE_LOCK {
sca8er 2:5853bf44af9f 3206 IO_REMOVE_LOCK_COMMON_BLOCK Common;
sca8er 2:5853bf44af9f 3207 #ifdef DBG
sca8er 2:5853bf44af9f 3208 IO_REMOVE_LOCK_DBG_BLOCK Dbg;
sca8er 2:5853bf44af9f 3209 #endif
sca8er 2:5853bf44af9f 3210 } IO_REMOVE_LOCK, *PIO_REMOVE_LOCK;
sca8er 2:5853bf44af9f 3211
sca8er 2:5853bf44af9f 3212 typedef struct _IO_WORKITEM *PIO_WORKITEM;
sca8er 2:5853bf44af9f 3213
sca8er 2:5853bf44af9f 3214 typedef VOID DDKAPI
sca8er 2:5853bf44af9f 3215 (*PIO_WORKITEM_ROUTINE)(
sca8er 2:5853bf44af9f 3216 /*IN*/ PDEVICE_OBJECT DeviceObject,
sca8er 2:5853bf44af9f 3217 /*IN*/ PVOID Context);
sca8er 2:5853bf44af9f 3218
sca8er 2:5853bf44af9f 3219 typedef struct _SHARE_ACCESS {
sca8er 2:5853bf44af9f 3220 ULONG OpenCount;
sca8er 2:5853bf44af9f 3221 ULONG Readers;
sca8er 2:5853bf44af9f 3222 ULONG Writers;
sca8er 2:5853bf44af9f 3223 ULONG Deleters;
sca8er 2:5853bf44af9f 3224 ULONG SharedRead;
sca8er 2:5853bf44af9f 3225 ULONG SharedWrite;
sca8er 2:5853bf44af9f 3226 ULONG SharedDelete;
sca8er 2:5853bf44af9f 3227 } SHARE_ACCESS, *PSHARE_ACCESS;
sca8er 2:5853bf44af9f 3228
sca8er 2:5853bf44af9f 3229 typedef enum _KINTERRUPT_MODE {
sca8er 2:5853bf44af9f 3230 LevelSensitive,
sca8er 2:5853bf44af9f 3231 Latched
sca8er 2:5853bf44af9f 3232 } KINTERRUPT_MODE;
sca8er 2:5853bf44af9f 3233
sca8er 2:5853bf44af9f 3234 typedef VOID DDKAPI
sca8er 2:5853bf44af9f 3235 (*PKINTERRUPT_ROUTINE)(
sca8er 2:5853bf44af9f 3236 VOID);
sca8er 2:5853bf44af9f 3237
sca8er 2:5853bf44af9f 3238 typedef enum _KPROFILE_SOURCE {
sca8er 2:5853bf44af9f 3239 ProfileTime,
sca8er 2:5853bf44af9f 3240 ProfileAlignmentFixup,
sca8er 2:5853bf44af9f 3241 ProfileTotalIssues,
sca8er 2:5853bf44af9f 3242 ProfilePipelineDry,
sca8er 2:5853bf44af9f 3243 ProfileLoadInstructions,
sca8er 2:5853bf44af9f 3244 ProfilePipelineFrozen,
sca8er 2:5853bf44af9f 3245 ProfileBranchInstructions,
sca8er 2:5853bf44af9f 3246 ProfileTotalNonissues,
sca8er 2:5853bf44af9f 3247 ProfileDcacheMisses,
sca8er 2:5853bf44af9f 3248 ProfileIcacheMisses,
sca8er 2:5853bf44af9f 3249 ProfileCacheMisses,
sca8er 2:5853bf44af9f 3250 ProfileBranchMispredictions,
sca8er 2:5853bf44af9f 3251 ProfileStoreInstructions,
sca8er 2:5853bf44af9f 3252 ProfileFpInstructions,
sca8er 2:5853bf44af9f 3253 ProfileIntegerInstructions,
sca8er 2:5853bf44af9f 3254 Profile2Issue,
sca8er 2:5853bf44af9f 3255 Profile3Issue,
sca8er 2:5853bf44af9f 3256 Profile4Issue,
sca8er 2:5853bf44af9f 3257 ProfileSpecialInstructions,
sca8er 2:5853bf44af9f 3258 ProfileTotalCycles,
sca8er 2:5853bf44af9f 3259 ProfileIcacheIssues,
sca8er 2:5853bf44af9f 3260 ProfileDcacheAccesses,
sca8er 2:5853bf44af9f 3261 ProfileMemoryBarrierCycles,
sca8er 2:5853bf44af9f 3262 ProfileLoadLinkedIssues,
sca8er 2:5853bf44af9f 3263 ProfileMaximum
sca8er 2:5853bf44af9f 3264 } KPROFILE_SOURCE;
sca8er 2:5853bf44af9f 3265
sca8er 2:5853bf44af9f 3266 typedef enum _CREATE_FILE_TYPE {
sca8er 2:5853bf44af9f 3267 CreateFileTypeNone,
sca8er 2:5853bf44af9f 3268 CreateFileTypeNamedPipe,
sca8er 2:5853bf44af9f 3269 CreateFileTypeMailslot
sca8er 2:5853bf44af9f 3270 } CREATE_FILE_TYPE;
sca8er 2:5853bf44af9f 3271
sca8er 2:5853bf44af9f 3272 typedef struct _CONFIGURATION_INFORMATION {
sca8er 2:5853bf44af9f 3273 ULONG DiskCount;
sca8er 2:5853bf44af9f 3274 ULONG FloppyCount;
sca8er 2:5853bf44af9f 3275 ULONG CdRomCount;
sca8er 2:5853bf44af9f 3276 ULONG TapeCount;
sca8er 2:5853bf44af9f 3277 ULONG ScsiPortCount;
sca8er 2:5853bf44af9f 3278 ULONG SerialCount;
sca8er 2:5853bf44af9f 3279 ULONG ParallelCount;
sca8er 2:5853bf44af9f 3280 BOOLEAN AtDiskPrimaryAddressClaimed;
sca8er 2:5853bf44af9f 3281 BOOLEAN AtDiskSecondaryAddressClaimed;
sca8er 2:5853bf44af9f 3282 ULONG Version;
sca8er 2:5853bf44af9f 3283 ULONG MediumChangerCount;
sca8er 2:5853bf44af9f 3284 } CONFIGURATION_INFORMATION, *PCONFIGURATION_INFORMATION;
sca8er 2:5853bf44af9f 3285
sca8er 2:5853bf44af9f 3286 typedef enum _CONFIGURATION_TYPE {
sca8er 2:5853bf44af9f 3287 ArcSystem,
sca8er 2:5853bf44af9f 3288 CentralProcessor,
sca8er 2:5853bf44af9f 3289 FloatingPointProcessor,
sca8er 2:5853bf44af9f 3290 PrimaryIcache,
sca8er 2:5853bf44af9f 3291 PrimaryDcache,
sca8er 2:5853bf44af9f 3292 SecondaryIcache,
sca8er 2:5853bf44af9f 3293 SecondaryDcache,
sca8er 2:5853bf44af9f 3294 SecondaryCache,
sca8er 2:5853bf44af9f 3295 EisaAdapter,
sca8er 2:5853bf44af9f 3296 TcAdapter,
sca8er 2:5853bf44af9f 3297 ScsiAdapter,
sca8er 2:5853bf44af9f 3298 DtiAdapter,
sca8er 2:5853bf44af9f 3299 MultiFunctionAdapter,
sca8er 2:5853bf44af9f 3300 DiskController,
sca8er 2:5853bf44af9f 3301 TapeController,
sca8er 2:5853bf44af9f 3302 CdromController,
sca8er 2:5853bf44af9f 3303 WormController,
sca8er 2:5853bf44af9f 3304 SerialController,
sca8er 2:5853bf44af9f 3305 NetworkController,
sca8er 2:5853bf44af9f 3306 DisplayController,
sca8er 2:5853bf44af9f 3307 ParallelController,
sca8er 2:5853bf44af9f 3308 PointerController,
sca8er 2:5853bf44af9f 3309 KeyboardController,
sca8er 2:5853bf44af9f 3310 AudioController,
sca8er 2:5853bf44af9f 3311 OtherController,
sca8er 2:5853bf44af9f 3312 DiskPeripheral,
sca8er 2:5853bf44af9f 3313 FloppyDiskPeripheral,
sca8er 2:5853bf44af9f 3314 TapePeripheral,
sca8er 2:5853bf44af9f 3315 ModemPeripheral,
sca8er 2:5853bf44af9f 3316 MonitorPeripheral,
sca8er 2:5853bf44af9f 3317 PrinterPeripheral,
sca8er 2:5853bf44af9f 3318 PointerPeripheral,
sca8er 2:5853bf44af9f 3319 KeyboardPeripheral,
sca8er 2:5853bf44af9f 3320 TerminalPeripheral,
sca8er 2:5853bf44af9f 3321 OtherPeripheral,
sca8er 2:5853bf44af9f 3322 LinePeripheral,
sca8er 2:5853bf44af9f 3323 NetworkPeripheral,
sca8er 2:5853bf44af9f 3324 SystemMemory,
sca8er 2:5853bf44af9f 3325 DockingInformation,
sca8er 2:5853bf44af9f 3326 RealModeIrqRoutingTable,
sca8er 2:5853bf44af9f 3327 MaximumType
sca8er 2:5853bf44af9f 3328 } CONFIGURATION_TYPE, *PCONFIGURATION_TYPE;
sca8er 2:5853bf44af9f 3329
sca8er 2:5853bf44af9f 3330 typedef NTSTATUS (*PIO_QUERY_DEVICE_ROUTINE)(
sca8er 2:5853bf44af9f 3331 /*IN*/ PVOID Context,
sca8er 2:5853bf44af9f 3332 /*IN*/ PUNICODE_STRING PathName,
sca8er 2:5853bf44af9f 3333 /*IN*/ INTERFACE_TYPE BusType,
sca8er 2:5853bf44af9f 3334 /*IN*/ ULONG BusNumber,
sca8er 2:5853bf44af9f 3335 /*IN*/ PKEY_VALUE_FULL_INFORMATION *BusInformation,
sca8er 2:5853bf44af9f 3336 /*IN*/ CONFIGURATION_TYPE ControllerType,
sca8er 2:5853bf44af9f 3337 /*IN*/ ULONG ControllerNumber,
sca8er 2:5853bf44af9f 3338 /*IN*/ PKEY_VALUE_FULL_INFORMATION *ControllerInformation,
sca8er 2:5853bf44af9f 3339 /*IN*/ CONFIGURATION_TYPE PeripheralType,
sca8er 2:5853bf44af9f 3340 /*IN*/ ULONG PeripheralNumber,
sca8er 2:5853bf44af9f 3341 /*IN*/ PKEY_VALUE_FULL_INFORMATION *PeripheralInformation);
sca8er 2:5853bf44af9f 3342
sca8er 2:5853bf44af9f 3343 typedef enum _WORK_QUEUE_TYPE {
sca8er 2:5853bf44af9f 3344 CriticalWorkQueue,
sca8er 2:5853bf44af9f 3345 DelayedWorkQueue,
sca8er 2:5853bf44af9f 3346 HyperCriticalWorkQueue,
sca8er 2:5853bf44af9f 3347 MaximumWorkQueue
sca8er 2:5853bf44af9f 3348 } WORK_QUEUE_TYPE;
sca8er 2:5853bf44af9f 3349
sca8er 2:5853bf44af9f 3350 typedef VOID DDKAPI
sca8er 2:5853bf44af9f 3351 (*PWORKER_THREAD_ROUTINE)(
sca8er 2:5853bf44af9f 3352 /*IN*/ PVOID Parameter);
sca8er 2:5853bf44af9f 3353
sca8er 2:5853bf44af9f 3354 typedef struct _WORK_QUEUE_ITEM {
sca8er 2:5853bf44af9f 3355 LIST_ENTRY List;
sca8er 2:5853bf44af9f 3356 PWORKER_THREAD_ROUTINE WorkerRoutine;
sca8er 2:5853bf44af9f 3357 PVOID Parameter;
sca8er 2:5853bf44af9f 3358 } WORK_QUEUE_ITEM, *PWORK_QUEUE_ITEM;
sca8er 2:5853bf44af9f 3359
sca8er 2:5853bf44af9f 3360 typedef enum _KBUGCHECK_BUFFER_DUMP_STATE {
sca8er 2:5853bf44af9f 3361 BufferEmpty,
sca8er 2:5853bf44af9f 3362 BufferInserted,
sca8er 2:5853bf44af9f 3363 BufferStarted,
sca8er 2:5853bf44af9f 3364 BufferFinished,
sca8er 2:5853bf44af9f 3365 BufferIncomplete
sca8er 2:5853bf44af9f 3366 } KBUGCHECK_BUFFER_DUMP_STATE;
sca8er 2:5853bf44af9f 3367
sca8er 2:5853bf44af9f 3368 typedef VOID DDKAPI
sca8er 2:5853bf44af9f 3369 (*PKBUGCHECK_CALLBACK_ROUTINE)(
sca8er 2:5853bf44af9f 3370 /*IN*/ PVOID Buffer,
sca8er 2:5853bf44af9f 3371 /*IN*/ ULONG Length);
sca8er 2:5853bf44af9f 3372
sca8er 2:5853bf44af9f 3373 typedef struct _KBUGCHECK_CALLBACK_RECORD {
sca8er 2:5853bf44af9f 3374 LIST_ENTRY Entry;
sca8er 2:5853bf44af9f 3375 PKBUGCHECK_CALLBACK_ROUTINE CallbackRoutine;
sca8er 2:5853bf44af9f 3376 PVOID Buffer;
sca8er 2:5853bf44af9f 3377 ULONG Length;
sca8er 2:5853bf44af9f 3378 PUCHAR Component;
sca8er 2:5853bf44af9f 3379 ULONG_PTR Checksum;
sca8er 2:5853bf44af9f 3380 UCHAR State;
sca8er 2:5853bf44af9f 3381 } KBUGCHECK_CALLBACK_RECORD, *PKBUGCHECK_CALLBACK_RECORD;
sca8er 2:5853bf44af9f 3382
sca8er 2:5853bf44af9f 3383 /*
sca8er 2:5853bf44af9f 3384 * VOID
sca8er 2:5853bf44af9f 3385 * KeInitializeCallbackRecord(
sca8er 2:5853bf44af9f 3386 * IN PKBUGCHECK_CALLBACK_RECORD CallbackRecord)
sca8er 2:5853bf44af9f 3387 */
sca8er 2:5853bf44af9f 3388 #define KeInitializeCallbackRecord(CallbackRecord) \
sca8er 2:5853bf44af9f 3389 CallbackRecord->State = BufferEmpty;
sca8er 2:5853bf44af9f 3390
sca8er 2:5853bf44af9f 3391 typedef enum _KDPC_IMPORTANCE {
sca8er 2:5853bf44af9f 3392 LowImportance,
sca8er 2:5853bf44af9f 3393 MediumImportance,
sca8er 2:5853bf44af9f 3394 HighImportance
sca8er 2:5853bf44af9f 3395 } KDPC_IMPORTANCE;
sca8er 2:5853bf44af9f 3396
sca8er 2:5853bf44af9f 3397 typedef enum _MEMORY_CACHING_TYPE_ORIG {
sca8er 2:5853bf44af9f 3398 MmFrameBufferCached = 2
sca8er 2:5853bf44af9f 3399 } MEMORY_CACHING_TYPE_ORIG;
sca8er 2:5853bf44af9f 3400
sca8er 2:5853bf44af9f 3401 typedef enum _MEMORY_CACHING_TYPE {
sca8er 2:5853bf44af9f 3402 MmNonCached = FALSE,
sca8er 2:5853bf44af9f 3403 MmCached = TRUE,
sca8er 2:5853bf44af9f 3404 MmWriteCombined = MmFrameBufferCached,
sca8er 2:5853bf44af9f 3405 MmHardwareCoherentCached,
sca8er 2:5853bf44af9f 3406 MmNonCachedUnordered,
sca8er 2:5853bf44af9f 3407 MmUSWCCached,
sca8er 2:5853bf44af9f 3408 MmMaximumCacheType
sca8er 2:5853bf44af9f 3409 } MEMORY_CACHING_TYPE;
sca8er 2:5853bf44af9f 3410
sca8er 2:5853bf44af9f 3411 typedef enum _MM_PAGE_PRIORITY {
sca8er 2:5853bf44af9f 3412 LowPagePriority,
sca8er 2:5853bf44af9f 3413 NormalPagePriority = 16,
sca8er 2:5853bf44af9f 3414 HighPagePriority = 32
sca8er 2:5853bf44af9f 3415 } MM_PAGE_PRIORITY;
sca8er 2:5853bf44af9f 3416
sca8er 2:5853bf44af9f 3417 typedef enum _LOCK_OPERATION {
sca8er 2:5853bf44af9f 3418 IoReadAccess,
sca8er 2:5853bf44af9f 3419 IoWriteAccess,
sca8er 2:5853bf44af9f 3420 IoModifyAccess
sca8er 2:5853bf44af9f 3421 } LOCK_OPERATION;
sca8er 2:5853bf44af9f 3422
sca8er 2:5853bf44af9f 3423 typedef enum _MM_SYSTEM_SIZE {
sca8er 2:5853bf44af9f 3424 MmSmallSystem,
sca8er 2:5853bf44af9f 3425 MmMediumSystem,
sca8er 2:5853bf44af9f 3426 MmLargeSystem
sca8er 2:5853bf44af9f 3427 } MM_SYSTEM_SIZE;
sca8er 2:5853bf44af9f 3428
sca8er 2:5853bf44af9f 3429 typedef struct _OBJECT_HANDLE_INFORMATION {
sca8er 2:5853bf44af9f 3430 ULONG HandleAttributes;
sca8er 2:5853bf44af9f 3431 ACCESS_MASK GrantedAccess;
sca8er 2:5853bf44af9f 3432 } OBJECT_HANDLE_INFORMATION, *POBJECT_HANDLE_INFORMATION;
sca8er 2:5853bf44af9f 3433
sca8er 2:5853bf44af9f 3434 typedef struct _CLIENT_ID {
sca8er 2:5853bf44af9f 3435 HANDLE UniqueProcess;
sca8er 2:5853bf44af9f 3436 HANDLE UniqueThread;
sca8er 2:5853bf44af9f 3437 } CLIENT_ID, *PCLIENT_ID;
sca8er 2:5853bf44af9f 3438
sca8er 2:5853bf44af9f 3439 typedef VOID DDKAPI
sca8er 2:5853bf44af9f 3440 (*PKSTART_ROUTINE)(
sca8er 2:5853bf44af9f 3441 /*IN*/ PVOID StartContext);
sca8er 2:5853bf44af9f 3442
sca8er 2:5853bf44af9f 3443 typedef VOID DDKAPI
sca8er 2:5853bf44af9f 3444 (*PCREATE_PROCESS_NOTIFY_ROUTINE)(
sca8er 2:5853bf44af9f 3445 /*IN*/ HANDLE ParentId,
sca8er 2:5853bf44af9f 3446 /*IN*/ HANDLE ProcessId,
sca8er 2:5853bf44af9f 3447 /*IN*/ BOOLEAN Create);
sca8er 2:5853bf44af9f 3448
sca8er 2:5853bf44af9f 3449 typedef VOID DDKAPI
sca8er 2:5853bf44af9f 3450 (*PCREATE_THREAD_NOTIFY_ROUTINE)(
sca8er 2:5853bf44af9f 3451 /*IN*/ HANDLE ProcessId,
sca8er 2:5853bf44af9f 3452 /*IN*/ HANDLE ThreadId,
sca8er 2:5853bf44af9f 3453 /*IN*/ BOOLEAN Create);
sca8er 2:5853bf44af9f 3454
sca8er 2:5853bf44af9f 3455 typedef struct _IMAGE_INFO {
sca8er 2:5853bf44af9f 3456 _ANONYMOUS_UNION union {
sca8er 2:5853bf44af9f 3457 ULONG Properties;
sca8er 2:5853bf44af9f 3458 _ANONYMOUS_STRUCT struct {
sca8er 2:5853bf44af9f 3459 ULONG ImageAddressingMode : 8;
sca8er 2:5853bf44af9f 3460 ULONG SystemModeImage : 1;
sca8er 2:5853bf44af9f 3461 ULONG ImageMappedToAllPids : 1;
sca8er 2:5853bf44af9f 3462 ULONG Reserved : 22;
sca8er 2:5853bf44af9f 3463 } DUMMYSTRUCTNAME;
sca8er 2:5853bf44af9f 3464 } DUMMYUNIONNAME;
sca8er 2:5853bf44af9f 3465 PVOID ImageBase;
sca8er 2:5853bf44af9f 3466 ULONG ImageSelector;
sca8er 2:5853bf44af9f 3467 SIZE_T ImageSize;
sca8er 2:5853bf44af9f 3468 ULONG ImageSectionNumber;
sca8er 2:5853bf44af9f 3469 } IMAGE_INFO, *PIMAGE_INFO;
sca8er 2:5853bf44af9f 3470
sca8er 2:5853bf44af9f 3471 #define IMAGE_ADDRESSING_MODE_32BIT 3
sca8er 2:5853bf44af9f 3472
sca8er 2:5853bf44af9f 3473 typedef VOID DDKAPI
sca8er 2:5853bf44af9f 3474 (*PLOAD_IMAGE_NOTIFY_ROUTINE)(
sca8er 2:5853bf44af9f 3475 /*IN*/ PUNICODE_STRING FullImageName,
sca8er 2:5853bf44af9f 3476 /*IN*/ HANDLE ProcessId,
sca8er 2:5853bf44af9f 3477 /*IN*/ PIMAGE_INFO ImageInfo);
sca8er 2:5853bf44af9f 3478
sca8er 2:5853bf44af9f 3479 typedef enum _PROCESSINFOCLASS {
sca8er 2:5853bf44af9f 3480 ProcessBasicInformation,
sca8er 2:5853bf44af9f 3481 ProcessQuotaLimits,
sca8er 2:5853bf44af9f 3482 ProcessIoCounters,
sca8er 2:5853bf44af9f 3483 ProcessVmCounters,
sca8er 2:5853bf44af9f 3484 ProcessTimes,
sca8er 2:5853bf44af9f 3485 ProcessBasePriority,
sca8er 2:5853bf44af9f 3486 ProcessRaisePriority,
sca8er 2:5853bf44af9f 3487 ProcessDebugPort,
sca8er 2:5853bf44af9f 3488 ProcessExceptionPort,
sca8er 2:5853bf44af9f 3489 ProcessAccessToken,
sca8er 2:5853bf44af9f 3490 ProcessLdtInformation,
sca8er 2:5853bf44af9f 3491 ProcessLdtSize,
sca8er 2:5853bf44af9f 3492 ProcessDefaultHardErrorMode,
sca8er 2:5853bf44af9f 3493 ProcessIoPortHandlers,
sca8er 2:5853bf44af9f 3494 ProcessPooledUsageAndLimits,
sca8er 2:5853bf44af9f 3495 ProcessWorkingSetWatch,
sca8er 2:5853bf44af9f 3496 ProcessUserModeIOPL,
sca8er 2:5853bf44af9f 3497 ProcessEnableAlignmentFaultFixup,
sca8er 2:5853bf44af9f 3498 ProcessPriorityClass,
sca8er 2:5853bf44af9f 3499 ProcessWx86Information,
sca8er 2:5853bf44af9f 3500 ProcessHandleCount,
sca8er 2:5853bf44af9f 3501 ProcessAffinityMask,
sca8er 2:5853bf44af9f 3502 ProcessPriorityBoost,
sca8er 2:5853bf44af9f 3503 ProcessDeviceMap,
sca8er 2:5853bf44af9f 3504 ProcessSessionInformation,
sca8er 2:5853bf44af9f 3505 ProcessForegroundInformation,
sca8er 2:5853bf44af9f 3506 ProcessWow64Information,
sca8er 2:5853bf44af9f 3507 ProcessImageFileName,
sca8er 2:5853bf44af9f 3508 ProcessLUIDDeviceMapsEnabled,
sca8er 2:5853bf44af9f 3509 ProcessBreakOnTermination,
sca8er 2:5853bf44af9f 3510 ProcessDebugObjectHandle,
sca8er 2:5853bf44af9f 3511 ProcessDebugFlags,
sca8er 2:5853bf44af9f 3512 ProcessHandleTracing,
sca8er 2:5853bf44af9f 3513 MaxProcessInfoClass
sca8er 2:5853bf44af9f 3514 } PROCESSINFOCLASS;
sca8er 2:5853bf44af9f 3515
sca8er 2:5853bf44af9f 3516 typedef enum _THREADINFOCLASS {
sca8er 2:5853bf44af9f 3517 ThreadBasicInformation,
sca8er 2:5853bf44af9f 3518 ThreadTimes,
sca8er 2:5853bf44af9f 3519 ThreadPriority,
sca8er 2:5853bf44af9f 3520 ThreadBasePriority,
sca8er 2:5853bf44af9f 3521 ThreadAffinityMask,
sca8er 2:5853bf44af9f 3522 ThreadImpersonationToken,
sca8er 2:5853bf44af9f 3523 ThreadDescriptorTableEntry,
sca8er 2:5853bf44af9f 3524 ThreadEnableAlignmentFaultFixup,
sca8er 2:5853bf44af9f 3525 ThreadEventPair_Reusable,
sca8er 2:5853bf44af9f 3526 ThreadQuerySetWin32StartAddress,
sca8er 2:5853bf44af9f 3527 ThreadZeroTlsCell,
sca8er 2:5853bf44af9f 3528 ThreadPerformanceCount,
sca8er 2:5853bf44af9f 3529 ThreadAmILastThread,
sca8er 2:5853bf44af9f 3530 ThreadIdealProcessor,
sca8er 2:5853bf44af9f 3531 ThreadPriorityBoost,
sca8er 2:5853bf44af9f 3532 ThreadSetTlsArrayAddress,
sca8er 2:5853bf44af9f 3533 ThreadIsIoPending,
sca8er 2:5853bf44af9f 3534 ThreadHideFromDebugger,
sca8er 2:5853bf44af9f 3535 ThreadBreakOnTermination,
sca8er 2:5853bf44af9f 3536 MaxThreadInfoClass
sca8er 2:5853bf44af9f 3537 } THREADINFOCLASS;
sca8er 2:5853bf44af9f 3538
sca8er 2:5853bf44af9f 3539 #define ES_SYSTEM_REQUIRED 0x00000001
sca8er 2:5853bf44af9f 3540 #define ES_DISPLAY_REQUIRED 0x00000002
sca8er 2:5853bf44af9f 3541 #define ES_USER_PRESENT 0x00000004
sca8er 2:5853bf44af9f 3542 #define ES_CONTINUOUS 0x80000000
sca8er 2:5853bf44af9f 3543
sca8er 2:5853bf44af9f 3544 typedef ULONG EXECUTION_STATE;
sca8er 2:5853bf44af9f 3545
sca8er 2:5853bf44af9f 3546 typedef VOID DDKAPI
sca8er 2:5853bf44af9f 3547 (*PREQUEST_POWER_COMPLETE)(
sca8er 2:5853bf44af9f 3548 /*IN*/ PDEVICE_OBJECT DeviceObject,
sca8er 2:5853bf44af9f 3549 /*IN*/ UCHAR MinorFunction,
sca8er 2:5853bf44af9f 3550 /*IN*/ POWER_STATE PowerState,
sca8er 2:5853bf44af9f 3551 /*IN*/ PVOID Context,
sca8er 2:5853bf44af9f 3552 /*IN*/ PIO_STATUS_BLOCK IoStatus);
sca8er 2:5853bf44af9f 3553
sca8er 2:5853bf44af9f 3554 typedef enum _TRACE_INFORMATION_CLASS {
sca8er 2:5853bf44af9f 3555 TraceIdClass,
sca8er 2:5853bf44af9f 3556 TraceHandleClass,
sca8er 2:5853bf44af9f 3557 TraceEnableFlagsClass,
sca8er 2:5853bf44af9f 3558 TraceEnableLevelClass,
sca8er 2:5853bf44af9f 3559 GlobalLoggerHandleClass,
sca8er 2:5853bf44af9f 3560 EventLoggerHandleClass,
sca8er 2:5853bf44af9f 3561 AllLoggerHandlesClass,
sca8er 2:5853bf44af9f 3562 TraceHandleByNameClass
sca8er 2:5853bf44af9f 3563 } TRACE_INFORMATION_CLASS;
sca8er 2:5853bf44af9f 3564
sca8er 2:5853bf44af9f 3565 typedef NTSTATUS DDKAPI
sca8er 2:5853bf44af9f 3566 (*PEX_CALLBACK_FUNCTION)(
sca8er 2:5853bf44af9f 3567 /*IN*/ PVOID CallbackContext,
sca8er 2:5853bf44af9f 3568 /*IN*/ PVOID Argument1,
sca8er 2:5853bf44af9f 3569 /*IN*/ PVOID Argument2);
sca8er 2:5853bf44af9f 3570
sca8er 2:5853bf44af9f 3571
sca8er 2:5853bf44af9f 3572
sca8er 2:5853bf44af9f 3573 /*
sca8er 2:5853bf44af9f 3574 ** Storage structures
sca8er 2:5853bf44af9f 3575 */
sca8er 2:5853bf44af9f 3576 typedef enum _PARTITION_STYLE {
sca8er 2:5853bf44af9f 3577 PARTITION_STYLE_MBR,
sca8er 2:5853bf44af9f 3578 PARTITION_STYLE_GPT
sca8er 2:5853bf44af9f 3579 } PARTITION_STYLE;
sca8er 2:5853bf44af9f 3580
sca8er 2:5853bf44af9f 3581 typedef struct _CREATE_DISK_MBR {
sca8er 2:5853bf44af9f 3582 ULONG Signature;
sca8er 2:5853bf44af9f 3583 } CREATE_DISK_MBR, *PCREATE_DISK_MBR;
sca8er 2:5853bf44af9f 3584
sca8er 2:5853bf44af9f 3585 typedef struct _CREATE_DISK_GPT {
sca8er 2:5853bf44af9f 3586 GUID DiskId;
sca8er 2:5853bf44af9f 3587 ULONG MaxPartitionCount;
sca8er 2:5853bf44af9f 3588 } CREATE_DISK_GPT, *PCREATE_DISK_GPT;
sca8er 2:5853bf44af9f 3589
sca8er 2:5853bf44af9f 3590 typedef struct _CREATE_DISK {
sca8er 2:5853bf44af9f 3591 PARTITION_STYLE PartitionStyle;
sca8er 2:5853bf44af9f 3592 _ANONYMOUS_UNION union {
sca8er 2:5853bf44af9f 3593 CREATE_DISK_MBR Mbr;
sca8er 2:5853bf44af9f 3594 CREATE_DISK_GPT Gpt;
sca8er 2:5853bf44af9f 3595 } DUMMYUNIONNAME;
sca8er 2:5853bf44af9f 3596 } CREATE_DISK, *PCREATE_DISK;
sca8er 2:5853bf44af9f 3597
sca8er 2:5853bf44af9f 3598 typedef struct _DISK_SIGNATURE {
sca8er 2:5853bf44af9f 3599 ULONG PartitionStyle;
sca8er 2:5853bf44af9f 3600 _ANONYMOUS_UNION union {
sca8er 2:5853bf44af9f 3601 struct {
sca8er 2:5853bf44af9f 3602 ULONG Signature;
sca8er 2:5853bf44af9f 3603 ULONG CheckSum;
sca8er 2:5853bf44af9f 3604 } Mbr;
sca8er 2:5853bf44af9f 3605 struct {
sca8er 2:5853bf44af9f 3606 GUID DiskId;
sca8er 2:5853bf44af9f 3607 } Gpt;
sca8er 2:5853bf44af9f 3608 } DUMMYUNIONNAME;
sca8er 2:5853bf44af9f 3609 } DISK_SIGNATURE, *PDISK_SIGNATURE;
sca8er 2:5853bf44af9f 3610
sca8er 2:5853bf44af9f 3611 typedef VOID DDKFASTAPI
sca8er 2:5853bf44af9f 3612 (*PTIME_UPDATE_NOTIFY_ROUTINE)(
sca8er 2:5853bf44af9f 3613 /*IN*/ HANDLE ThreadId,
sca8er 2:5853bf44af9f 3614 /*IN*/ KPROCESSOR_MODE Mode);
sca8er 2:5853bf44af9f 3615
sca8er 2:5853bf44af9f 3616 #define DBG_STATUS_CONTROL_C 1
sca8er 2:5853bf44af9f 3617 #define DBG_STATUS_SYSRQ 2
sca8er 2:5853bf44af9f 3618 #define DBG_STATUS_BUGCHECK_FIRST 3
sca8er 2:5853bf44af9f 3619 #define DBG_STATUS_BUGCHECK_SECOND 4
sca8er 2:5853bf44af9f 3620 #define DBG_STATUS_FATAL 5
sca8er 2:5853bf44af9f 3621 #define DBG_STATUS_DEBUG_CONTROL 6
sca8er 2:5853bf44af9f 3622 #define DBG_STATUS_WORKER 7
sca8er 2:5853bf44af9f 3623
sca8er 2:5853bf44af9f 3624 typedef struct _PHYSICAL_MEMORY_RANGE {
sca8er 2:5853bf44af9f 3625 PHYSICAL_ADDRESS BaseAddress;
sca8er 2:5853bf44af9f 3626 LARGE_INTEGER NumberOfBytes;
sca8er 2:5853bf44af9f 3627 } PHYSICAL_MEMORY_RANGE, *PPHYSICAL_MEMORY_RANGE;
sca8er 2:5853bf44af9f 3628
sca8er 2:5853bf44af9f 3629 typedef ULONG_PTR
sca8er 2:5853bf44af9f 3630 (*PDRIVER_VERIFIER_THUNK_ROUTINE)(
sca8er 2:5853bf44af9f 3631 /*IN*/ PVOID Context);
sca8er 2:5853bf44af9f 3632
sca8er 2:5853bf44af9f 3633 typedef struct _DRIVER_VERIFIER_THUNK_PAIRS {
sca8er 2:5853bf44af9f 3634 PDRIVER_VERIFIER_THUNK_ROUTINE PristineRoutine;
sca8er 2:5853bf44af9f 3635 PDRIVER_VERIFIER_THUNK_ROUTINE NewRoutine;
sca8er 2:5853bf44af9f 3636 } DRIVER_VERIFIER_THUNK_PAIRS, *PDRIVER_VERIFIER_THUNK_PAIRS;
sca8er 2:5853bf44af9f 3637
sca8er 2:5853bf44af9f 3638 #define DRIVER_VERIFIER_SPECIAL_POOLING 0x0001
sca8er 2:5853bf44af9f 3639 #define DRIVER_VERIFIER_FORCE_IRQL_CHECKING 0x0002
sca8er 2:5853bf44af9f 3640 #define DRIVER_VERIFIER_INJECT_ALLOCATION_FAILURES 0x0004
sca8er 2:5853bf44af9f 3641 #define DRIVER_VERIFIER_TRACK_POOL_ALLOCATIONS 0x0008
sca8er 2:5853bf44af9f 3642 #define DRIVER_VERIFIER_IO_CHECKING 0x0010
sca8er 2:5853bf44af9f 3643
sca8er 2:5853bf44af9f 3644 #define RTL_RANGE_LIST_ADD_IF_CONFLICT 0x00000001
sca8er 2:5853bf44af9f 3645 #define RTL_RANGE_LIST_ADD_SHARED 0x00000002
sca8er 2:5853bf44af9f 3646
sca8er 2:5853bf44af9f 3647 #define RTL_RANGE_LIST_SHARED_OK 0x00000001
sca8er 2:5853bf44af9f 3648 #define RTL_RANGE_LIST_NULL_CONFLICT_OK 0x00000002
sca8er 2:5853bf44af9f 3649
sca8er 2:5853bf44af9f 3650 #define RTL_RANGE_LIST_SHARED_OK 0x00000001
sca8er 2:5853bf44af9f 3651 #define RTL_RANGE_LIST_NULL_CONFLICT_OK 0x00000002
sca8er 2:5853bf44af9f 3652
sca8er 2:5853bf44af9f 3653 #define RTL_RANGE_LIST_MERGE_IF_CONFLICT RTL_RANGE_LIST_ADD_IF_CONFLICT
sca8er 2:5853bf44af9f 3654
sca8er 2:5853bf44af9f 3655 typedef struct _RTL_RANGE {
sca8er 2:5853bf44af9f 3656 ULONGLONG Start;
sca8er 2:5853bf44af9f 3657 ULONGLONG End;
sca8er 2:5853bf44af9f 3658 PVOID UserData;
sca8er 2:5853bf44af9f 3659 PVOID Owner;
sca8er 2:5853bf44af9f 3660 UCHAR Attributes;
sca8er 2:5853bf44af9f 3661 UCHAR Flags;
sca8er 2:5853bf44af9f 3662 } RTL_RANGE, *PRTL_RANGE;
sca8er 2:5853bf44af9f 3663
sca8er 2:5853bf44af9f 3664 #define RTL_RANGE_SHARED 0x01
sca8er 2:5853bf44af9f 3665 #define RTL_RANGE_CONFLICT 0x02
sca8er 2:5853bf44af9f 3666
sca8er 2:5853bf44af9f 3667 typedef struct _RTL_RANGE_LIST {
sca8er 2:5853bf44af9f 3668 LIST_ENTRY ListHead;
sca8er 2:5853bf44af9f 3669 ULONG Flags;
sca8er 2:5853bf44af9f 3670 ULONG Count;
sca8er 2:5853bf44af9f 3671 ULONG Stamp;
sca8er 2:5853bf44af9f 3672 } RTL_RANGE_LIST, *PRTL_RANGE_LIST;
sca8er 2:5853bf44af9f 3673
sca8er 2:5853bf44af9f 3674 typedef struct _RANGE_LIST_ITERATOR {
sca8er 2:5853bf44af9f 3675 PLIST_ENTRY RangeListHead;
sca8er 2:5853bf44af9f 3676 PLIST_ENTRY MergedHead;
sca8er 2:5853bf44af9f 3677 PVOID Current;
sca8er 2:5853bf44af9f 3678 ULONG Stamp;
sca8er 2:5853bf44af9f 3679 } RTL_RANGE_LIST_ITERATOR, *PRTL_RANGE_LIST_ITERATOR;
sca8er 2:5853bf44af9f 3680
sca8er 2:5853bf44af9f 3681 typedef BOOLEAN
sca8er 2:5853bf44af9f 3682 (*PRTL_CONFLICT_RANGE_CALLBACK)(
sca8er 2:5853bf44af9f 3683 /*IN*/ PVOID Context,
sca8er 2:5853bf44af9f 3684 /*IN*/ PRTL_RANGE Range);
sca8er 2:5853bf44af9f 3685
sca8er 2:5853bf44af9f 3686 #define HASH_STRING_ALGORITHM_DEFAULT 0
sca8er 2:5853bf44af9f 3687 #define HASH_STRING_ALGORITHM_X65599 1
sca8er 2:5853bf44af9f 3688 #define HASH_STRING_ALGORITHM_INVALID 0xffffffff
sca8er 2:5853bf44af9f 3689
sca8er 2:5853bf44af9f 3690 typedef enum _SUITE_TYPE {
sca8er 2:5853bf44af9f 3691 SmallBusiness,
sca8er 2:5853bf44af9f 3692 Enterprise,
sca8er 2:5853bf44af9f 3693 BackOffice,
sca8er 2:5853bf44af9f 3694 CommunicationServer,
sca8er 2:5853bf44af9f 3695 TerminalServer,
sca8er 2:5853bf44af9f 3696 SmallBusinessRestricted,
sca8er 2:5853bf44af9f 3697 EmbeddedNT,
sca8er 2:5853bf44af9f 3698 DataCenter,
sca8er 2:5853bf44af9f 3699 SingleUserTS,
sca8er 2:5853bf44af9f 3700 Personal,
sca8er 2:5853bf44af9f 3701 Blade,
sca8er 2:5853bf44af9f 3702 MaxSuiteType
sca8er 2:5853bf44af9f 3703 } SUITE_TYPE;
sca8er 2:5853bf44af9f 3704
sca8er 2:5853bf44af9f 3705 typedef VOID DDKAPI
sca8er 2:5853bf44af9f 3706 (*PTIMER_APC_ROUTINE)(
sca8er 2:5853bf44af9f 3707 /*IN*/ PVOID TimerContext,
sca8er 2:5853bf44af9f 3708 /*IN*/ ULONG TimerLowValue,
sca8er 2:5853bf44af9f 3709 /*IN*/ LONG TimerHighValue);
sca8er 2:5853bf44af9f 3710
sca8er 2:5853bf44af9f 3711
sca8er 2:5853bf44af9f 3712
sca8er 2:5853bf44af9f 3713 /*
sca8er 2:5853bf44af9f 3714 ** WMI structures
sca8er 2:5853bf44af9f 3715 */
sca8er 2:5853bf44af9f 3716
sca8er 2:5853bf44af9f 3717 typedef VOID DDKAPI
sca8er 2:5853bf44af9f 3718 (*WMI_NOTIFICATION_CALLBACK)(
sca8er 2:5853bf44af9f 3719 PVOID Wnode,
sca8er 2:5853bf44af9f 3720 PVOID Context);
sca8er 2:5853bf44af9f 3721
sca8er 2:5853bf44af9f 3722
sca8er 2:5853bf44af9f 3723 /*
sca8er 2:5853bf44af9f 3724 ** Architecture specific structures
sca8er 2:5853bf44af9f 3725 */
sca8er 2:5853bf44af9f 3726
sca8er 2:5853bf44af9f 3727 #ifdef _X86_
sca8er 2:5853bf44af9f 3728
sca8er 2:5853bf44af9f 3729 typedef ULONG PFN_NUMBER, *PPFN_NUMBER;
sca8er 2:5853bf44af9f 3730
sca8er 2:5853bf44af9f 3731 #define PASSIVE_LEVEL 0
sca8er 2:5853bf44af9f 3732 #define LOW_LEVEL 0
sca8er 2:5853bf44af9f 3733 #define APC_LEVEL 1
sca8er 2:5853bf44af9f 3734 #define DISPATCH_LEVEL 2
sca8er 2:5853bf44af9f 3735 #define SYNCH_LEVEL 27
sca8er 2:5853bf44af9f 3736 #define PROFILE_LEVEL 27
sca8er 2:5853bf44af9f 3737 #define CLOCK1_LEVEL 28
sca8er 2:5853bf44af9f 3738 #define CLOCK2_LEVEL 28
sca8er 2:5853bf44af9f 3739 #define IPI_LEVEL 29
sca8er 2:5853bf44af9f 3740 #define POWER_LEVEL 30
sca8er 2:5853bf44af9f 3741 #define HIGH_LEVEL 31
sca8er 2:5853bf44af9f 3742
sca8er 2:5853bf44af9f 3743 typedef struct _KPCR_TIB {
sca8er 2:5853bf44af9f 3744 PVOID ExceptionList; /* 00 */
sca8er 2:5853bf44af9f 3745 PVOID StackBase; /* 04 */
sca8er 2:5853bf44af9f 3746 PVOID StackLimit; /* 08 */
sca8er 2:5853bf44af9f 3747 PVOID SubSystemTib; /* 0C */
sca8er 2:5853bf44af9f 3748 _ANONYMOUS_UNION union {
sca8er 2:5853bf44af9f 3749 PVOID FiberData; /* 10 */
sca8er 2:5853bf44af9f 3750 DWORD Version; /* 10 */
sca8er 2:5853bf44af9f 3751 } DUMMYUNIONNAME;
sca8er 2:5853bf44af9f 3752 PVOID ArbitraryUserPointer; /* 14 */
sca8er 2:5853bf44af9f 3753 struct _NT_TIB *Self; /* 18 */
sca8er 2:5853bf44af9f 3754 } KPCR_TIB, *PKPCR_TIB; /* 1C */
sca8er 2:5853bf44af9f 3755
sca8er 2:5853bf44af9f 3756 #define PCR_MINOR_VERSION 1
sca8er 2:5853bf44af9f 3757 #define PCR_MAJOR_VERSION 1
sca8er 2:5853bf44af9f 3758
sca8er 2:5853bf44af9f 3759 typedef struct _KPCR {
sca8er 2:5853bf44af9f 3760 KPCR_TIB Tib; /* 00 */
sca8er 2:5853bf44af9f 3761 struct _KPCR *Self; /* 1C */
sca8er 2:5853bf44af9f 3762 struct _KPRCB *PCRCB; /* 20 */
sca8er 2:5853bf44af9f 3763 KIRQL Irql; /* 24 */
sca8er 2:5853bf44af9f 3764 ULONG IRR; /* 28 */
sca8er 2:5853bf44af9f 3765 ULONG IrrActive; /* 2C */
sca8er 2:5853bf44af9f 3766 ULONG IDR; /* 30 */
sca8er 2:5853bf44af9f 3767 PVOID KdVersionBlock; /* 34 */
sca8er 2:5853bf44af9f 3768 PUSHORT IDT; /* 38 */
sca8er 2:5853bf44af9f 3769 PUSHORT GDT; /* 3C */
sca8er 2:5853bf44af9f 3770 struct _KTSS *TSS; /* 40 */
sca8er 2:5853bf44af9f 3771 USHORT MajorVersion; /* 44 */
sca8er 2:5853bf44af9f 3772 USHORT MinorVersion; /* 46 */
sca8er 2:5853bf44af9f 3773 KAFFINITY SetMember; /* 48 */
sca8er 2:5853bf44af9f 3774 ULONG StallScaleFactor; /* 4C */
sca8er 2:5853bf44af9f 3775 UCHAR SpareUnused; /* 50 */
sca8er 2:5853bf44af9f 3776 UCHAR Number; /* 51 */
sca8er 2:5853bf44af9f 3777 } KPCR, *PKPCR; /* 54 */
sca8er 2:5853bf44af9f 3778
sca8er 2:5853bf44af9f 3779 typedef struct _KFLOATING_SAVE {
sca8er 2:5853bf44af9f 3780 ULONG ControlWord;
sca8er 2:5853bf44af9f 3781 ULONG StatusWord;
sca8er 2:5853bf44af9f 3782 ULONG ErrorOffset;
sca8er 2:5853bf44af9f 3783 ULONG ErrorSelector;
sca8er 2:5853bf44af9f 3784 ULONG DataOffset;
sca8er 2:5853bf44af9f 3785 ULONG DataSelector;
sca8er 2:5853bf44af9f 3786 ULONG Cr0NpxState;
sca8er 2:5853bf44af9f 3787 ULONG Spare1;
sca8er 2:5853bf44af9f 3788 } KFLOATING_SAVE, *PKFLOATING_SAVE;
sca8er 2:5853bf44af9f 3789
sca8er 2:5853bf44af9f 3790 #define PAGE_SIZE 0x1000
sca8er 2:5853bf44af9f 3791 #define PAGE_SHIFT 12L
sca8er 2:5853bf44af9f 3792
sca8er 2:5853bf44af9f 3793 extern NTOSAPI PVOID *MmHighestUserAddress;
sca8er 2:5853bf44af9f 3794 extern NTOSAPI PVOID *MmSystemRangeStart;
sca8er 2:5853bf44af9f 3795 extern NTOSAPI ULONG *MmUserProbeAddress;
sca8er 2:5853bf44af9f 3796
sca8er 2:5853bf44af9f 3797 #define MM_HIGHEST_USER_ADDRESS *MmHighestUserAddress
sca8er 2:5853bf44af9f 3798 #define MM_SYSTEM_RANGE_START *MmSystemRangeStart
sca8er 2:5853bf44af9f 3799 #define MM_USER_PROBE_ADDRESS *MmUserProbeAddress
sca8er 2:5853bf44af9f 3800 #define MM_LOWEST_USER_ADDRESS (PVOID)0x10000
sca8er 2:5853bf44af9f 3801 #define MM_LOWEST_SYSTEM_ADDRESS (PVOID)0xC0C00000
sca8er 2:5853bf44af9f 3802
sca8er 2:5853bf44af9f 3803 #define KI_USER_SHARED_DATA 0xffdf0000
sca8er 2:5853bf44af9f 3804 #define SharedUserData ((KUSER_SHARED_DATA * CONST) KI_USER_SHARED_DATA)
sca8er 2:5853bf44af9f 3805
sca8er 2:5853bf44af9f 3806 #define EFLAG_SIGN 0x8000
sca8er 2:5853bf44af9f 3807 #define EFLAG_ZERO 0x4000
sca8er 2:5853bf44af9f 3808 #define EFLAG_SELECT (EFLAG_SIGN | EFLAG_ZERO)
sca8er 2:5853bf44af9f 3809
sca8er 2:5853bf44af9f 3810 #define RESULT_NEGATIVE ((EFLAG_SIGN & ~EFLAG_ZERO) & EFLAG_SELECT)
sca8er 2:5853bf44af9f 3811 #define RESULT_ZERO ((~EFLAG_SIGN & EFLAG_ZERO) & EFLAG_SELECT)
sca8er 2:5853bf44af9f 3812 #define RESULT_POSITIVE ((~EFLAG_SIGN & ~EFLAG_ZERO) & EFLAG_SELECT)
sca8er 2:5853bf44af9f 3813
sca8er 2:5853bf44af9f 3814 typedef enum _INTERLOCKED_RESULT {
sca8er 2:5853bf44af9f 3815 ResultNegative = RESULT_NEGATIVE,
sca8er 2:5853bf44af9f 3816 ResultZero = RESULT_ZERO,
sca8er 2:5853bf44af9f 3817 ResultPositive = RESULT_POSITIVE
sca8er 2:5853bf44af9f 3818 } INTERLOCKED_RESULT;
sca8er 2:5853bf44af9f 3819
sca8er 2:5853bf44af9f 3820 NTOSAPI
sca8er 2:5853bf44af9f 3821 KIRQL
sca8er 2:5853bf44af9f 3822 DDKAPI
sca8er 2:5853bf44af9f 3823 KeGetCurrentIrql(
sca8er 2:5853bf44af9f 3824 VOID);
sca8er 2:5853bf44af9f 3825
sca8er 2:5853bf44af9f 3826 /*
sca8er 2:5853bf44af9f 3827 * ULONG
sca8er 2:5853bf44af9f 3828 * KeGetCurrentProcessorNumber(
sca8er 2:5853bf44af9f 3829 * VOID)
sca8er 2:5853bf44af9f 3830 */
sca8er 2:5853bf44af9f 3831 #define KeGetCurrentProcessorNumber() \
sca8er 2:5853bf44af9f 3832 ((ULONG)KeGetCurrentKPCR()->Number)
sca8er 2:5853bf44af9f 3833
sca8er 2:5853bf44af9f 3834
sca8er 2:5853bf44af9f 3835 #if __USE_NTOSKRNL__
sca8er 2:5853bf44af9f 3836 /* CAREFUL: These are exported from ntoskrnl.exe as __fastcall functions,
sca8er 2:5853bf44af9f 3837 but are also exported from kernel32.dll and declared in winbase.h as
sca8er 2:5853bf44af9f 3838 __stdcall */
sca8er 2:5853bf44af9f 3839 #if !defined(__INTERLOCKED_DECLARED)
sca8er 2:5853bf44af9f 3840 #define __INTERLOCKED_DECLARED
sca8er 2:5853bf44af9f 3841
sca8er 2:5853bf44af9f 3842 NTOSAPI
sca8er 2:5853bf44af9f 3843 LONG
sca8er 2:5853bf44af9f 3844 DDKFASTAPI
sca8er 2:5853bf44af9f 3845 InterlockedIncrement(
sca8er 2:5853bf44af9f 3846 /*IN*/ LONG VOLATILE *Addend);
sca8er 2:5853bf44af9f 3847
sca8er 2:5853bf44af9f 3848 NTOSAPI
sca8er 2:5853bf44af9f 3849 LONG
sca8er 2:5853bf44af9f 3850 DDKFASTAPI
sca8er 2:5853bf44af9f 3851 InterlockedDecrement(
sca8er 2:5853bf44af9f 3852 /*IN*/ LONG VOLATILE *Addend);
sca8er 2:5853bf44af9f 3853
sca8er 2:5853bf44af9f 3854 NTOSAPI
sca8er 2:5853bf44af9f 3855 LONG
sca8er 2:5853bf44af9f 3856 DDKFASTAPI
sca8er 2:5853bf44af9f 3857 InterlockedCompareExchange(
sca8er 2:5853bf44af9f 3858 /*IN OUT*/ PLONG VOLATILE Destination,
sca8er 2:5853bf44af9f 3859 /*IN*/ LONG Exchange,
sca8er 2:5853bf44af9f 3860 /*IN*/ LONG Comparand);
sca8er 2:5853bf44af9f 3861
sca8er 2:5853bf44af9f 3862 NTOSAPI
sca8er 2:5853bf44af9f 3863 LONG
sca8er 2:5853bf44af9f 3864 DDKFASTAPI
sca8er 2:5853bf44af9f 3865 InterlockedExchange(
sca8er 2:5853bf44af9f 3866 /*IN OUT*/ PLONG VOLATILE Target,
sca8er 2:5853bf44af9f 3867 /*IN*/ LONG Value);
sca8er 2:5853bf44af9f 3868
sca8er 2:5853bf44af9f 3869 NTOSAPI
sca8er 2:5853bf44af9f 3870 LONG
sca8er 2:5853bf44af9f 3871 DDKFASTAPI
sca8er 2:5853bf44af9f 3872 InterlockedExchangeAdd(
sca8er 2:5853bf44af9f 3873 /*IN OUT*/ PLONG VOLATILE Addend,
sca8er 2:5853bf44af9f 3874 /*IN*/ LONG Value);
sca8er 2:5853bf44af9f 3875
sca8er 2:5853bf44af9f 3876 /*
sca8er 2:5853bf44af9f 3877 * PVOID
sca8er 2:5853bf44af9f 3878 * InterlockedExchangePointer(
sca8er 2:5853bf44af9f 3879 * IN OUT PVOID VOLATILE *Target,
sca8er 2:5853bf44af9f 3880 * IN PVOID Value)
sca8er 2:5853bf44af9f 3881 */
sca8er 2:5853bf44af9f 3882 #define InterlockedExchangePointer(Target, Value) \
sca8er 2:5853bf44af9f 3883 ((PVOID) InterlockedExchange((PLONG) Target, (LONG) Value))
sca8er 2:5853bf44af9f 3884
sca8er 2:5853bf44af9f 3885 /*
sca8er 2:5853bf44af9f 3886 * PVOID
sca8er 2:5853bf44af9f 3887 * InterlockedCompareExchangePointer(
sca8er 2:5853bf44af9f 3888 * IN OUT PVOID *Destination,
sca8er 2:5853bf44af9f 3889 * IN PVOID Exchange,
sca8er 2:5853bf44af9f 3890 * IN PVOID Comparand)
sca8er 2:5853bf44af9f 3891 */
sca8er 2:5853bf44af9f 3892 #define InterlockedCompareExchangePointer(Destination, Exchange, Comparand) \
sca8er 2:5853bf44af9f 3893 ((PVOID) InterlockedCompareExchange((PLONG) Destination, (LONG) Exchange, (LONG) Comparand))
sca8er 2:5853bf44af9f 3894
sca8er 2:5853bf44af9f 3895 #if (_WIN32_WINNT >= 0x0501)
sca8er 2:5853bf44af9f 3896 PSLIST_ENTRY
sca8er 2:5853bf44af9f 3897 DDKFASTAPI
sca8er 2:5853bf44af9f 3898 InterlockedPopEntrySList(
sca8er 2:5853bf44af9f 3899 /*IN*/ PSLIST_HEADER ListHead);
sca8er 2:5853bf44af9f 3900
sca8er 2:5853bf44af9f 3901 NTOSAPI
sca8er 2:5853bf44af9f 3902 PSLIST_ENTRY
sca8er 2:5853bf44af9f 3903 DDKFASTAPI
sca8er 2:5853bf44af9f 3904 InterlockedPushEntrySList(
sca8er 2:5853bf44af9f 3905 /*IN*/ PSLIST_HEADER ListHead,
sca8er 2:5853bf44af9f 3906 /*IN*/ PSLIST_ENTRY ListEntry);
sca8er 2:5853bf44af9f 3907 #endif /* _WIN32_WINNT >= 0x0501 */
sca8er 2:5853bf44af9f 3908
sca8er 2:5853bf44af9f 3909 #endif /* !__INTERLOCKED_DECLARED */
sca8er 2:5853bf44af9f 3910 #endif /* __USE_NTOSKRNL__ */
sca8er 2:5853bf44af9f 3911
sca8er 2:5853bf44af9f 3912 NTOSAPI
sca8er 2:5853bf44af9f 3913 VOID
sca8er 2:5853bf44af9f 3914 DDKFASTAPI
sca8er 2:5853bf44af9f 3915 KefAcquireSpinLockAtDpcLevel(
sca8er 2:5853bf44af9f 3916 /*IN*/ PKSPIN_LOCK SpinLock);
sca8er 2:5853bf44af9f 3917
sca8er 2:5853bf44af9f 3918 NTOSAPI
sca8er 2:5853bf44af9f 3919 VOID
sca8er 2:5853bf44af9f 3920 DDKFASTAPI
sca8er 2:5853bf44af9f 3921 KefReleaseSpinLockFromDpcLevel(
sca8er 2:5853bf44af9f 3922 /*IN*/ PKSPIN_LOCK SpinLock);
sca8er 2:5853bf44af9f 3923
sca8er 2:5853bf44af9f 3924 #define KeAcquireSpinLockAtDpcLevel(SpinLock) KefAcquireSpinLockAtDpcLevel(SpinLock)
sca8er 2:5853bf44af9f 3925 #define KeReleaseSpinLockFromDpcLevel(SpinLock) KefReleaseSpinLockFromDpcLevel(SpinLock)
sca8er 2:5853bf44af9f 3926
sca8er 2:5853bf44af9f 3927 #define RtlCopyMemoryNonTemporal RtlCopyMemory
sca8er 2:5853bf44af9f 3928
sca8er 2:5853bf44af9f 3929 #define KeGetDcacheFillSize() 1L
sca8er 2:5853bf44af9f 3930
sca8er 2:5853bf44af9f 3931 #endif /* _X86_ */
sca8er 2:5853bf44af9f 3932
sca8er 2:5853bf44af9f 3933
sca8er 2:5853bf44af9f 3934
sca8er 2:5853bf44af9f 3935 /*
sca8er 2:5853bf44af9f 3936 ** Utillity functions
sca8er 2:5853bf44af9f 3937 */
sca8er 2:5853bf44af9f 3938
sca8er 2:5853bf44af9f 3939 #define ARGUMENT_PRESENT(ArgumentPointer) \
sca8er 2:5853bf44af9f 3940 ((BOOLEAN) ((PVOID)ArgumentPointer != (PVOID)NULL))
sca8er 2:5853bf44af9f 3941
sca8er 2:5853bf44af9f 3942 /*
sca8er 2:5853bf44af9f 3943 * ULONG
sca8er 2:5853bf44af9f 3944 * BYTE_OFFSET(
sca8er 2:5853bf44af9f 3945 * IN PVOID Va)
sca8er 2:5853bf44af9f 3946 */
sca8er 2:5853bf44af9f 3947 #define BYTE_OFFSET(Va) \
sca8er 2:5853bf44af9f 3948 ((ULONG) ((ULONG_PTR) (Va) & (PAGE_SIZE - 1)))
sca8er 2:5853bf44af9f 3949
sca8er 2:5853bf44af9f 3950 /*
sca8er 2:5853bf44af9f 3951 * ULONG
sca8er 2:5853bf44af9f 3952 * BYTES_TO_PAGES(
sca8er 2:5853bf44af9f 3953 * IN ULONG Size)
sca8er 2:5853bf44af9f 3954 */
sca8er 2:5853bf44af9f 3955 #define BYTES_TO_PAGES(Size) \
sca8er 2:5853bf44af9f 3956 ((ULONG) ((ULONG_PTR) (Size) >> PAGE_SHIFT) + (((ULONG) (Size) & (PAGE_SIZE - 1)) != 0))
sca8er 2:5853bf44af9f 3957
sca8er 2:5853bf44af9f 3958 /*
sca8er 2:5853bf44af9f 3959 * PCHAR
sca8er 2:5853bf44af9f 3960 * CONTAINING_RECORD(
sca8er 2:5853bf44af9f 3961 * IN PCHAR Address,
sca8er 2:5853bf44af9f 3962 * IN TYPE Type,
sca8er 2:5853bf44af9f 3963 * IN PCHAR Field);
sca8er 2:5853bf44af9f 3964 */
sca8er 2:5853bf44af9f 3965 #ifndef CONTAINING_RECORD
sca8er 2:5853bf44af9f 3966 #define CONTAINING_RECORD(Address, Type, Field) \
sca8er 2:5853bf44af9f 3967 ((Type *) (((ULONG_PTR) Address) - FIELD_OFFSET(Type, Field)))
sca8er 2:5853bf44af9f 3968 #endif
sca8er 2:5853bf44af9f 3969
sca8er 2:5853bf44af9f 3970 /* LONG
sca8er 2:5853bf44af9f 3971 * FIELD_OFFSET(
sca8er 2:5853bf44af9f 3972 * IN TYPE Type,
sca8er 2:5853bf44af9f 3973 * IN PCHAR Field);
sca8er 2:5853bf44af9f 3974 */
sca8er 2:5853bf44af9f 3975 #ifndef FIELD_OFFSET
sca8er 2:5853bf44af9f 3976 #define FIELD_OFFSET(Type, Field) \
sca8er 2:5853bf44af9f 3977 ((LONG) (&(((Type *) 0)->Field)))
sca8er 2:5853bf44af9f 3978 #endif
sca8er 2:5853bf44af9f 3979
sca8er 2:5853bf44af9f 3980 /*
sca8er 2:5853bf44af9f 3981 * PVOID
sca8er 2:5853bf44af9f 3982 * PAGE_ALIGN(
sca8er 2:5853bf44af9f 3983 * IN PVOID Va)
sca8er 2:5853bf44af9f 3984 */
sca8er 2:5853bf44af9f 3985 #define PAGE_ALIGN(Va) \
sca8er 2:5853bf44af9f 3986 ((PVOID) ((ULONG_PTR)(Va) & ~(PAGE_SIZE - 1)))
sca8er 2:5853bf44af9f 3987
sca8er 2:5853bf44af9f 3988 /*
sca8er 2:5853bf44af9f 3989 * ULONG_PTR
sca8er 2:5853bf44af9f 3990 * ROUND_TO_PAGES(
sca8er 2:5853bf44af9f 3991 * IN ULONG_PTR Size)
sca8er 2:5853bf44af9f 3992 */
sca8er 2:5853bf44af9f 3993 #define ROUND_TO_PAGES(Size) \
sca8er 2:5853bf44af9f 3994 ((ULONG_PTR) (((ULONG_PTR) Size + PAGE_SIZE - 1) & ~(PAGE_SIZE - 1)))
sca8er 2:5853bf44af9f 3995
sca8er 2:5853bf44af9f 3996 NTOSAPI
sca8er 2:5853bf44af9f 3997 VOID
sca8er 2:5853bf44af9f 3998 DDKAPI
sca8er 2:5853bf44af9f 3999 RtlAssert(
sca8er 2:5853bf44af9f 4000 /*IN*/ PVOID FailedAssertion,
sca8er 2:5853bf44af9f 4001 /*IN*/ PVOID FileName,
sca8er 2:5853bf44af9f 4002 /*IN*/ ULONG LineNumber,
sca8er 2:5853bf44af9f 4003 /*IN*/ PCHAR Message);
sca8er 2:5853bf44af9f 4004
sca8er 2:5853bf44af9f 4005 #ifdef DBG
sca8er 2:5853bf44af9f 4006
sca8er 2:5853bf44af9f 4007 #define ASSERT(exp) \
sca8er 2:5853bf44af9f 4008 ((!(exp)) ? \
sca8er 2:5853bf44af9f 4009 (RtlAssert( #exp, __FILE__, __LINE__, NULL ), FALSE) : TRUE)
sca8er 2:5853bf44af9f 4010
sca8er 2:5853bf44af9f 4011 #define ASSERTMSG(msg, exp) \
sca8er 2:5853bf44af9f 4012 ((!(exp)) ? \
sca8er 2:5853bf44af9f 4013 (RtlAssert( #exp, __FILE__, __LINE__, msg ), FALSE) : TRUE)
sca8er 2:5853bf44af9f 4014
sca8er 2:5853bf44af9f 4015 #define RTL_SOFT_ASSERT(exp) \
sca8er 2:5853bf44af9f 4016 ((!(_exp)) ? \
sca8er 2:5853bf44af9f 4017 (DbgPrint("%s(%d): Soft assertion failed\n Expression: %s\n", __FILE__, __LINE__, #exp), FALSE) : TRUE)
sca8er 2:5853bf44af9f 4018
sca8er 2:5853bf44af9f 4019 #define RTL_SOFT_ASSERTMSG(msg, exp) \
sca8er 2:5853bf44af9f 4020 ((!(exp)) ? \
sca8er 2:5853bf44af9f 4021 (DbgPrint("%s(%d): Soft assertion failed\n Expression: %s\n Message: %s\n", __FILE__, __LINE__, #exp, (msg)), FALSE) : TRUE)
sca8er 2:5853bf44af9f 4022
sca8er 2:5853bf44af9f 4023 #define RTL_VERIFY(exp) ASSERT(exp)
sca8er 2:5853bf44af9f 4024 #define RTL_VERIFYMSG(msg, exp) ASSERT(msg, exp)
sca8er 2:5853bf44af9f 4025
sca8er 2:5853bf44af9f 4026 #define RTL_SOFT_VERIFY(exp) RTL_SOFT_ASSERT(exp)
sca8er 2:5853bf44af9f 4027 #define RTL_SOFT_VERIFYMSG(msg, exp) RTL_SOFT_ASSERTMSG(msg, exp)
sca8er 2:5853bf44af9f 4028
sca8er 2:5853bf44af9f 4029 #else /* !DBG */
sca8er 2:5853bf44af9f 4030
sca8er 2:5853bf44af9f 4031 #define ASSERT(exp) ((VOID) 0)
sca8er 2:5853bf44af9f 4032 #define ASSERTMSG(msg, exp) ((VOID) 0)
sca8er 2:5853bf44af9f 4033
sca8er 2:5853bf44af9f 4034 #define RTL_SOFT_ASSERT(exp) ((VOID) 0)
sca8er 2:5853bf44af9f 4035 #define RTL_SOFT_ASSERTMSG(msg, exp) ((VOID) 0)
sca8er 2:5853bf44af9f 4036
sca8er 2:5853bf44af9f 4037 #define RTL_VERIFY(exp) ((exp) ? TRUE : FALSE)
sca8er 2:5853bf44af9f 4038 #define RTL_VERIFYMSG(msg, exp) ((exp) ? TRUE : FALSE)
sca8er 2:5853bf44af9f 4039
sca8er 2:5853bf44af9f 4040 #define RTL_SOFT_VERIFY(exp) ((exp) ? TRUE : FALSE)
sca8er 2:5853bf44af9f 4041 #define RTL_SOFT_VERIFYMSG(msg, exp) ((exp) ? TRUE : FALSE)
sca8er 2:5853bf44af9f 4042
sca8er 2:5853bf44af9f 4043 #endif /* DBG */
sca8er 2:5853bf44af9f 4044
sca8er 2:5853bf44af9f 4045
sca8er 2:5853bf44af9f 4046 /*
sca8er 2:5853bf44af9f 4047 ** Driver support routines
sca8er 2:5853bf44af9f 4048 */
sca8er 2:5853bf44af9f 4049
sca8er 2:5853bf44af9f 4050 /** Runtime library routines **/
sca8er 2:5853bf44af9f 4051
sca8er 2:5853bf44af9f 4052 /*
sca8er 2:5853bf44af9f 4053 * VOID
sca8er 2:5853bf44af9f 4054 * InitializeListHead(
sca8er 2:5853bf44af9f 4055 * IN PLIST_ENTRY ListHead)
sca8er 2:5853bf44af9f 4056 */
sca8er 2:5853bf44af9f 4057 #define InitializeListHead(_ListHead) \
sca8er 2:5853bf44af9f 4058 { \
sca8er 2:5853bf44af9f 4059 (_ListHead)->Flink = (_ListHead); \
sca8er 2:5853bf44af9f 4060 (_ListHead)->Blink = (_ListHead); \
sca8er 2:5853bf44af9f 4061 }
sca8er 2:5853bf44af9f 4062
sca8er 2:5853bf44af9f 4063 /*
sca8er 2:5853bf44af9f 4064 * VOID
sca8er 2:5853bf44af9f 4065 * InsertHeadList(
sca8er 2:5853bf44af9f 4066 * IN PLIST_ENTRY ListHead,
sca8er 2:5853bf44af9f 4067 * IN PLIST_ENTRY Entry)
sca8er 2:5853bf44af9f 4068 */
sca8er 2:5853bf44af9f 4069 #define InsertHeadList(_ListHead, \
sca8er 2:5853bf44af9f 4070 _Entry) \
sca8er 2:5853bf44af9f 4071 { \
sca8er 2:5853bf44af9f 4072 PLIST_ENTRY _OldFlink; \
sca8er 2:5853bf44af9f 4073 _OldFlink = (_ListHead)->Flink; \
sca8er 2:5853bf44af9f 4074 (_Entry)->Flink = _OldFlink; \
sca8er 2:5853bf44af9f 4075 (_Entry)->Blink = (_ListHead); \
sca8er 2:5853bf44af9f 4076 _OldFlink->Blink = (_Entry); \
sca8er 2:5853bf44af9f 4077 (_ListHead)->Flink = (_Entry); \
sca8er 2:5853bf44af9f 4078 }
sca8er 2:5853bf44af9f 4079
sca8er 2:5853bf44af9f 4080 /*
sca8er 2:5853bf44af9f 4081 * VOID
sca8er 2:5853bf44af9f 4082 * InsertTailList(
sca8er 2:5853bf44af9f 4083 * IN PLIST_ENTRY ListHead,
sca8er 2:5853bf44af9f 4084 * IN PLIST_ENTRY Entry)
sca8er 2:5853bf44af9f 4085 */
sca8er 2:5853bf44af9f 4086 #define InsertTailList(_ListHead, \
sca8er 2:5853bf44af9f 4087 _Entry) \
sca8er 2:5853bf44af9f 4088 { \
sca8er 2:5853bf44af9f 4089 PLIST_ENTRY _OldBlink; \
sca8er 2:5853bf44af9f 4090 _OldBlink = (_ListHead)->Blink; \
sca8er 2:5853bf44af9f 4091 (_Entry)->Flink = (_ListHead); \
sca8er 2:5853bf44af9f 4092 (_Entry)->Blink = _OldBlink; \
sca8er 2:5853bf44af9f 4093 _OldBlink->Flink = (_Entry); \
sca8er 2:5853bf44af9f 4094 (_ListHead)->Blink = (_Entry); \
sca8er 2:5853bf44af9f 4095 }
sca8er 2:5853bf44af9f 4096
sca8er 2:5853bf44af9f 4097 /*
sca8er 2:5853bf44af9f 4098 * BOOLEAN
sca8er 2:5853bf44af9f 4099 * IsListEmpty(
sca8er 2:5853bf44af9f 4100 * IN PLIST_ENTRY ListHead)
sca8er 2:5853bf44af9f 4101 */
sca8er 2:5853bf44af9f 4102 #define IsListEmpty(_ListHead) \
sca8er 2:5853bf44af9f 4103 ((_ListHead)->Flink == (_ListHead))
sca8er 2:5853bf44af9f 4104
sca8er 2:5853bf44af9f 4105 static __inline PSINGLE_LIST_ENTRY
sca8er 2:5853bf44af9f 4106 PopEntryList(
sca8er 2:5853bf44af9f 4107 /*IN*/ PSINGLE_LIST_ENTRY ListHead)
sca8er 2:5853bf44af9f 4108 {
sca8er 2:5853bf44af9f 4109 PSINGLE_LIST_ENTRY Entry;
sca8er 2:5853bf44af9f 4110
sca8er 2:5853bf44af9f 4111 Entry = ListHead->Next;
sca8er 2:5853bf44af9f 4112 if (Entry != NULL)
sca8er 2:5853bf44af9f 4113 {
sca8er 2:5853bf44af9f 4114 ListHead->Next = Entry->Next;
sca8er 2:5853bf44af9f 4115 }
sca8er 2:5853bf44af9f 4116 return Entry;
sca8er 2:5853bf44af9f 4117 }
sca8er 2:5853bf44af9f 4118
sca8er 2:5853bf44af9f 4119 /*
sca8er 2:5853bf44af9f 4120 * VOID
sca8er 2:5853bf44af9f 4121 * PushEntryList(
sca8er 2:5853bf44af9f 4122 * IN PSINGLE_LIST_ENTRY ListHead,
sca8er 2:5853bf44af9f 4123 * IN PSINGLE_LIST_ENTRY Entry)
sca8er 2:5853bf44af9f 4124 */
sca8er 2:5853bf44af9f 4125 #define PushEntryList(_ListHead, \
sca8er 2:5853bf44af9f 4126 _Entry) \
sca8er 2:5853bf44af9f 4127 { \
sca8er 2:5853bf44af9f 4128 (_Entry)->Next = (_ListHead)->Next; \
sca8er 2:5853bf44af9f 4129 (_ListHead)->Next = (_Entry); \
sca8er 2:5853bf44af9f 4130 }
sca8er 2:5853bf44af9f 4131
sca8er 2:5853bf44af9f 4132 /*
sca8er 2:5853bf44af9f 4133 * VOID
sca8er 2:5853bf44af9f 4134 * RemoveEntryList(
sca8er 2:5853bf44af9f 4135 * IN PLIST_ENTRY Entry)
sca8er 2:5853bf44af9f 4136 */
sca8er 2:5853bf44af9f 4137 #define RemoveEntryList(_Entry) \
sca8er 2:5853bf44af9f 4138 { \
sca8er 2:5853bf44af9f 4139 PLIST_ENTRY _OldFlink; \
sca8er 2:5853bf44af9f 4140 PLIST_ENTRY _OldBlink; \
sca8er 2:5853bf44af9f 4141 _OldFlink = (_Entry)->Flink; \
sca8er 2:5853bf44af9f 4142 _OldBlink = (_Entry)->Blink; \
sca8er 2:5853bf44af9f 4143 _OldFlink->Blink = _OldBlink; \
sca8er 2:5853bf44af9f 4144 _OldBlink->Flink = _OldFlink; \
sca8er 2:5853bf44af9f 4145 (_Entry)->Flink = NULL; \
sca8er 2:5853bf44af9f 4146 (_Entry)->Blink = NULL; \
sca8er 2:5853bf44af9f 4147 }
sca8er 2:5853bf44af9f 4148
sca8er 2:5853bf44af9f 4149 static __inline PLIST_ENTRY
sca8er 2:5853bf44af9f 4150 RemoveHeadList(
sca8er 2:5853bf44af9f 4151 /*IN*/ PLIST_ENTRY ListHead)
sca8er 2:5853bf44af9f 4152 {
sca8er 2:5853bf44af9f 4153 PLIST_ENTRY OldFlink;
sca8er 2:5853bf44af9f 4154 PLIST_ENTRY OldBlink;
sca8er 2:5853bf44af9f 4155 PLIST_ENTRY Entry;
sca8er 2:5853bf44af9f 4156
sca8er 2:5853bf44af9f 4157 Entry = ListHead->Flink;
sca8er 2:5853bf44af9f 4158 OldFlink = ListHead->Flink->Flink;
sca8er 2:5853bf44af9f 4159 OldBlink = ListHead->Flink->Blink;
sca8er 2:5853bf44af9f 4160 OldFlink->Blink = OldBlink;
sca8er 2:5853bf44af9f 4161 OldBlink->Flink = OldFlink;
sca8er 2:5853bf44af9f 4162
sca8er 2:5853bf44af9f 4163 if (Entry != ListHead)
sca8er 2:5853bf44af9f 4164 {
sca8er 2:5853bf44af9f 4165 Entry->Flink = NULL;
sca8er 2:5853bf44af9f 4166 Entry->Blink = NULL;
sca8er 2:5853bf44af9f 4167 }
sca8er 2:5853bf44af9f 4168
sca8er 2:5853bf44af9f 4169 return Entry;
sca8er 2:5853bf44af9f 4170 }
sca8er 2:5853bf44af9f 4171
sca8er 2:5853bf44af9f 4172 static __inline PLIST_ENTRY
sca8er 2:5853bf44af9f 4173 RemoveTailList(
sca8er 2:5853bf44af9f 4174 /*IN*/ PLIST_ENTRY ListHead)
sca8er 2:5853bf44af9f 4175 {
sca8er 2:5853bf44af9f 4176 PLIST_ENTRY OldFlink;
sca8er 2:5853bf44af9f 4177 PLIST_ENTRY OldBlink;
sca8er 2:5853bf44af9f 4178 PLIST_ENTRY Entry;
sca8er 2:5853bf44af9f 4179
sca8er 2:5853bf44af9f 4180 Entry = ListHead->Blink;
sca8er 2:5853bf44af9f 4181 OldFlink = ListHead->Blink->Flink;
sca8er 2:5853bf44af9f 4182 OldBlink = ListHead->Blink->Blink;
sca8er 2:5853bf44af9f 4183 OldFlink->Blink = OldBlink;
sca8er 2:5853bf44af9f 4184 OldBlink->Flink = OldFlink;
sca8er 2:5853bf44af9f 4185
sca8er 2:5853bf44af9f 4186 if (Entry != ListHead)
sca8er 2:5853bf44af9f 4187 {
sca8er 2:5853bf44af9f 4188 Entry->Flink = NULL;
sca8er 2:5853bf44af9f 4189 Entry->Blink = NULL;
sca8er 2:5853bf44af9f 4190 }
sca8er 2:5853bf44af9f 4191
sca8er 2:5853bf44af9f 4192 return Entry;
sca8er 2:5853bf44af9f 4193 }
sca8er 2:5853bf44af9f 4194
sca8er 2:5853bf44af9f 4195 /*
sca8er 2:5853bf44af9f 4196 * USHORT
sca8er 2:5853bf44af9f 4197 * QueryDepthSList(
sca8er 2:5853bf44af9f 4198 * IN PSLIST_HEADER SListHead)
sca8er 2:5853bf44af9f 4199 */
sca8er 2:5853bf44af9f 4200 #define QueryDepthSList(_SListHead) \
sca8er 2:5853bf44af9f 4201 ((USHORT) ((_SListHead)->Alignment & 0xffff))
sca8er 2:5853bf44af9f 4202
sca8er 2:5853bf44af9f 4203 #define InterlockedFlushSList(ListHead) ExInterlockedFlushSList(ListHead)
sca8er 2:5853bf44af9f 4204
sca8er 2:5853bf44af9f 4205 NTOSAPI
sca8er 2:5853bf44af9f 4206 ULONG
sca8er 2:5853bf44af9f 4207 DDKAPI
sca8er 2:5853bf44af9f 4208 RtlAnsiStringToUnicodeSize(
sca8er 2:5853bf44af9f 4209 /*IN*/ PANSI_STRING AnsiString);
sca8er 2:5853bf44af9f 4210
sca8er 2:5853bf44af9f 4211 NTOSAPI
sca8er 2:5853bf44af9f 4212 NTSTATUS
sca8er 2:5853bf44af9f 4213 DDKAPI
sca8er 2:5853bf44af9f 4214 RtlAddRange(
sca8er 2:5853bf44af9f 4215 /*IN OUT*/ PRTL_RANGE_LIST RangeList,
sca8er 2:5853bf44af9f 4216 /*IN*/ ULONGLONG Start,
sca8er 2:5853bf44af9f 4217 /*IN*/ ULONGLONG End,
sca8er 2:5853bf44af9f 4218 /*IN*/ UCHAR Attributes,
sca8er 2:5853bf44af9f 4219 /*IN*/ ULONG Flags,
sca8er 2:5853bf44af9f 4220 /*IN*/ PVOID UserData /*OPTIONAL*/,
sca8er 2:5853bf44af9f 4221 /*IN*/ PVOID Owner /*OPTIONAL*/);
sca8er 2:5853bf44af9f 4222
sca8er 2:5853bf44af9f 4223 NTOSAPI
sca8er 2:5853bf44af9f 4224 NTSTATUS
sca8er 2:5853bf44af9f 4225 DDKAPI
sca8er 2:5853bf44af9f 4226 RtlAnsiStringToUnicodeString(
sca8er 2:5853bf44af9f 4227 /*IN OUT*/ PUNICODE_STRING DestinationString,
sca8er 2:5853bf44af9f 4228 /*IN*/ PANSI_STRING SourceString,
sca8er 2:5853bf44af9f 4229 /*IN*/ BOOLEAN AllocateDestinationString);
sca8er 2:5853bf44af9f 4230
sca8er 2:5853bf44af9f 4231 NTOSAPI
sca8er 2:5853bf44af9f 4232 NTSTATUS
sca8er 2:5853bf44af9f 4233 DDKAPI
sca8er 2:5853bf44af9f 4234 RtlAppendUnicodeStringToString(
sca8er 2:5853bf44af9f 4235 /*IN OUT*/ PUNICODE_STRING Destination,
sca8er 2:5853bf44af9f 4236 /*IN*/ PUNICODE_STRING Source);
sca8er 2:5853bf44af9f 4237
sca8er 2:5853bf44af9f 4238 NTOSAPI
sca8er 2:5853bf44af9f 4239 NTSTATUS
sca8er 2:5853bf44af9f 4240 DDKAPI
sca8er 2:5853bf44af9f 4241 RtlAppendUnicodeToString(
sca8er 2:5853bf44af9f 4242 /*IN OUT*/ PUNICODE_STRING Destination,
sca8er 2:5853bf44af9f 4243 /*IN*/ PCWSTR Source);
sca8er 2:5853bf44af9f 4244
sca8er 2:5853bf44af9f 4245 NTOSAPI
sca8er 2:5853bf44af9f 4246 BOOLEAN
sca8er 2:5853bf44af9f 4247 DDKAPI
sca8er 2:5853bf44af9f 4248 RtlAreBitsClear(
sca8er 2:5853bf44af9f 4249 /*IN*/ PRTL_BITMAP BitMapHeader,
sca8er 2:5853bf44af9f 4250 /*IN*/ ULONG StartingIndex,
sca8er 2:5853bf44af9f 4251 /*IN*/ ULONG Length);
sca8er 2:5853bf44af9f 4252
sca8er 2:5853bf44af9f 4253 NTOSAPI
sca8er 2:5853bf44af9f 4254 BOOLEAN
sca8er 2:5853bf44af9f 4255 DDKAPI
sca8er 2:5853bf44af9f 4256 RtlAreBitsSet(
sca8er 2:5853bf44af9f 4257 /*IN*/ PRTL_BITMAP BitMapHeader,
sca8er 2:5853bf44af9f 4258 /*IN*/ ULONG StartingIndex,
sca8er 2:5853bf44af9f 4259 /*IN*/ ULONG Length);
sca8er 2:5853bf44af9f 4260
sca8er 2:5853bf44af9f 4261 NTOSAPI
sca8er 2:5853bf44af9f 4262 NTSTATUS
sca8er 2:5853bf44af9f 4263 DDKAPI
sca8er 2:5853bf44af9f 4264 RtlCharToInteger(
sca8er 2:5853bf44af9f 4265 /*IN*/ PCSZ String,
sca8er 2:5853bf44af9f 4266 /*IN*/ ULONG Base /*OPTIONAL*/,
sca8er 2:5853bf44af9f 4267 /*IN OUT*/ PULONG Value);
sca8er 2:5853bf44af9f 4268
sca8er 2:5853bf44af9f 4269 NTOSAPI
sca8er 2:5853bf44af9f 4270 ULONG
sca8er 2:5853bf44af9f 4271 DDKAPI
sca8er 2:5853bf44af9f 4272 RtlCheckBit(
sca8er 2:5853bf44af9f 4273 /*IN*/ PRTL_BITMAP BitMapHeader,
sca8er 2:5853bf44af9f 4274 /*IN*/ ULONG BitPosition);
sca8er 2:5853bf44af9f 4275
sca8er 2:5853bf44af9f 4276 NTOSAPI
sca8er 2:5853bf44af9f 4277 NTSTATUS
sca8er 2:5853bf44af9f 4278 DDKAPI
sca8er 2:5853bf44af9f 4279 RtlCheckRegistryKey(
sca8er 2:5853bf44af9f 4280 /*IN*/ ULONG RelativeTo,
sca8er 2:5853bf44af9f 4281 /*IN*/ PWSTR Path);
sca8er 2:5853bf44af9f 4282
sca8er 2:5853bf44af9f 4283 NTOSAPI
sca8er 2:5853bf44af9f 4284 VOID
sca8er 2:5853bf44af9f 4285 DDKAPI
sca8er 2:5853bf44af9f 4286 RtlClearAllBits(
sca8er 2:5853bf44af9f 4287 /*IN*/ PRTL_BITMAP BitMapHeader);
sca8er 2:5853bf44af9f 4288
sca8er 2:5853bf44af9f 4289 NTOSAPI
sca8er 2:5853bf44af9f 4290 VOID
sca8er 2:5853bf44af9f 4291 DDKAPI
sca8er 2:5853bf44af9f 4292 RtlClearBit(
sca8er 2:5853bf44af9f 4293 PRTL_BITMAP BitMapHeader,
sca8er 2:5853bf44af9f 4294 ULONG BitNumber);
sca8er 2:5853bf44af9f 4295
sca8er 2:5853bf44af9f 4296 NTOSAPI
sca8er 2:5853bf44af9f 4297 VOID
sca8er 2:5853bf44af9f 4298 DDKAPI
sca8er 2:5853bf44af9f 4299 RtlClearBits(
sca8er 2:5853bf44af9f 4300 /*IN*/ PRTL_BITMAP BitMapHeader,
sca8er 2:5853bf44af9f 4301 /*IN*/ ULONG StartingIndex,
sca8er 2:5853bf44af9f 4302 /*IN*/ ULONG NumberToClear);
sca8er 2:5853bf44af9f 4303
sca8er 2:5853bf44af9f 4304 NTOSAPI
sca8er 2:5853bf44af9f 4305 SIZE_T
sca8er 2:5853bf44af9f 4306 DDKAPI
sca8er 2:5853bf44af9f 4307 RtlCompareMemory(
sca8er 2:5853bf44af9f 4308 /*IN*/ CONST VOID *Source1,
sca8er 2:5853bf44af9f 4309 /*IN*/ CONST VOID *Source2,
sca8er 2:5853bf44af9f 4310 /*IN*/ SIZE_T Length);
sca8er 2:5853bf44af9f 4311
sca8er 2:5853bf44af9f 4312 NTOSAPI
sca8er 2:5853bf44af9f 4313 LONG
sca8er 2:5853bf44af9f 4314 DDKAPI
sca8er 2:5853bf44af9f 4315 RtlCompareString(
sca8er 2:5853bf44af9f 4316 /*IN*/ PSTRING String1,
sca8er 2:5853bf44af9f 4317 /*IN*/ PSTRING String2,
sca8er 2:5853bf44af9f 4318 BOOLEAN CaseInSensitive);
sca8er 2:5853bf44af9f 4319
sca8er 2:5853bf44af9f 4320 NTOSAPI
sca8er 2:5853bf44af9f 4321 LONG
sca8er 2:5853bf44af9f 4322 DDKAPI
sca8er 2:5853bf44af9f 4323 RtlCompareUnicodeString(
sca8er 2:5853bf44af9f 4324 /*IN*/ PUNICODE_STRING String1,
sca8er 2:5853bf44af9f 4325 /*IN*/ PUNICODE_STRING String2,
sca8er 2:5853bf44af9f 4326 /*IN*/ BOOLEAN CaseInSensitive);
sca8er 2:5853bf44af9f 4327
sca8er 2:5853bf44af9f 4328 NTOSAPI
sca8er 2:5853bf44af9f 4329 LARGE_INTEGER
sca8er 2:5853bf44af9f 4330 DDKAPI
sca8er 2:5853bf44af9f 4331 RtlConvertLongToLargeInteger(
sca8er 2:5853bf44af9f 4332 /*IN*/ LONG SignedInteger);
sca8er 2:5853bf44af9f 4333
sca8er 2:5853bf44af9f 4334 NTOSAPI
sca8er 2:5853bf44af9f 4335 LUID
sca8er 2:5853bf44af9f 4336 DDKAPI
sca8er 2:5853bf44af9f 4337 RtlConvertLongToLuid(
sca8er 2:5853bf44af9f 4338 /*IN*/ LONG Long);
sca8er 2:5853bf44af9f 4339
sca8er 2:5853bf44af9f 4340 NTOSAPI
sca8er 2:5853bf44af9f 4341 LARGE_INTEGER
sca8er 2:5853bf44af9f 4342 DDKAPI
sca8er 2:5853bf44af9f 4343 RtlConvertUlongToLargeInteger(
sca8er 2:5853bf44af9f 4344 /*IN*/ ULONG UnsignedInteger);
sca8er 2:5853bf44af9f 4345
sca8er 2:5853bf44af9f 4346 NTOSAPI
sca8er 2:5853bf44af9f 4347 LUID
sca8er 2:5853bf44af9f 4348 DDKAPI
sca8er 2:5853bf44af9f 4349 RtlConvertUlongToLuid(
sca8er 2:5853bf44af9f 4350 ULONG Ulong);
sca8er 2:5853bf44af9f 4351
sca8er 2:5853bf44af9f 4352 /*
sca8er 2:5853bf44af9f 4353 * VOID
sca8er 2:5853bf44af9f 4354 * RtlCopyMemory(
sca8er 2:5853bf44af9f 4355 * IN VOID UNALIGNED *Destination,
sca8er 2:5853bf44af9f 4356 * IN CONST VOID UNALIGNED *Source,
sca8er 2:5853bf44af9f 4357 * IN SIZE_T Length)
sca8er 2:5853bf44af9f 4358 */
sca8er 2:5853bf44af9f 4359 #ifndef RtlCopyMemory
sca8er 2:5853bf44af9f 4360 #define RtlCopyMemory(Destination, Source, Length) \
sca8er 2:5853bf44af9f 4361 memcpy(Destination, Source, Length);
sca8er 2:5853bf44af9f 4362 #endif
sca8er 2:5853bf44af9f 4363
sca8er 2:5853bf44af9f 4364 #ifndef RtlCopyBytes
sca8er 2:5853bf44af9f 4365 #define RtlCopyBytes RtlCopyMemory
sca8er 2:5853bf44af9f 4366 #endif
sca8er 2:5853bf44af9f 4367
sca8er 2:5853bf44af9f 4368 NTOSAPI
sca8er 2:5853bf44af9f 4369 VOID
sca8er 2:5853bf44af9f 4370 DDKAPI
sca8er 2:5853bf44af9f 4371 RtlCopyMemory32(
sca8er 2:5853bf44af9f 4372 /*IN*/ VOID UNALIGNED *Destination,
sca8er 2:5853bf44af9f 4373 /*IN*/ CONST VOID UNALIGNED *Source,
sca8er 2:5853bf44af9f 4374 /*IN*/ ULONG Length);
sca8er 2:5853bf44af9f 4375
sca8er 2:5853bf44af9f 4376 NTOSAPI
sca8er 2:5853bf44af9f 4377 NTSTATUS
sca8er 2:5853bf44af9f 4378 DDKAPI
sca8er 2:5853bf44af9f 4379 RtlCopyRangeList(
sca8er 2:5853bf44af9f 4380 /*OUT*/ PRTL_RANGE_LIST CopyRangeList,
sca8er 2:5853bf44af9f 4381 /*IN*/ PRTL_RANGE_LIST RangeList);
sca8er 2:5853bf44af9f 4382
sca8er 2:5853bf44af9f 4383 NTOSAPI
sca8er 2:5853bf44af9f 4384 VOID
sca8er 2:5853bf44af9f 4385 DDKAPI
sca8er 2:5853bf44af9f 4386 RtlCopyString(
sca8er 2:5853bf44af9f 4387 /*IN OUT*/ PSTRING DestinationString,
sca8er 2:5853bf44af9f 4388 /*IN*/ PSTRING SourceString /*OPTIONAL*/);
sca8er 2:5853bf44af9f 4389
sca8er 2:5853bf44af9f 4390 NTOSAPI
sca8er 2:5853bf44af9f 4391 VOID
sca8er 2:5853bf44af9f 4392 DDKAPI
sca8er 2:5853bf44af9f 4393 RtlCopyUnicodeString(
sca8er 2:5853bf44af9f 4394 /*IN OUT*/ PUNICODE_STRING DestinationString,
sca8er 2:5853bf44af9f 4395 /*IN*/ PUNICODE_STRING SourceString);
sca8er 2:5853bf44af9f 4396
sca8er 2:5853bf44af9f 4397 NTOSAPI
sca8er 2:5853bf44af9f 4398 NTSTATUS
sca8er 2:5853bf44af9f 4399 DDKAPI
sca8er 2:5853bf44af9f 4400 RtlCreateRegistryKey(
sca8er 2:5853bf44af9f 4401 /*IN*/ ULONG RelativeTo,
sca8er 2:5853bf44af9f 4402 /*IN*/ PWSTR Path);
sca8er 2:5853bf44af9f 4403
sca8er 2:5853bf44af9f 4404 NTOSAPI
sca8er 2:5853bf44af9f 4405 NTSTATUS
sca8er 2:5853bf44af9f 4406 DDKAPI
sca8er 2:5853bf44af9f 4407 RtlCreateSecurityDescriptor(
sca8er 2:5853bf44af9f 4408 /*IN OUT*/ PSECURITY_DESCRIPTOR SecurityDescriptor,
sca8er 2:5853bf44af9f 4409 /*IN*/ ULONG Revision);
sca8er 2:5853bf44af9f 4410
sca8er 2:5853bf44af9f 4411 NTOSAPI
sca8er 2:5853bf44af9f 4412 NTSTATUS
sca8er 2:5853bf44af9f 4413 DDKAPI
sca8er 2:5853bf44af9f 4414 RtlDeleteOwnersRanges(
sca8er 2:5853bf44af9f 4415 /*IN OUT*/ PRTL_RANGE_LIST RangeList,
sca8er 2:5853bf44af9f 4416 /*IN*/ PVOID Owner);
sca8er 2:5853bf44af9f 4417
sca8er 2:5853bf44af9f 4418 NTOSAPI
sca8er 2:5853bf44af9f 4419 NTSTATUS
sca8er 2:5853bf44af9f 4420 DDKAPI
sca8er 2:5853bf44af9f 4421 RtlDeleteRange(
sca8er 2:5853bf44af9f 4422 /*IN OUT*/ PRTL_RANGE_LIST RangeList,
sca8er 2:5853bf44af9f 4423 /*IN*/ ULONGLONG Start,
sca8er 2:5853bf44af9f 4424 /*IN*/ ULONGLONG End,
sca8er 2:5853bf44af9f 4425 /*IN*/ PVOID Owner);
sca8er 2:5853bf44af9f 4426
sca8er 2:5853bf44af9f 4427 NTOSAPI
sca8er 2:5853bf44af9f 4428 NTSTATUS
sca8er 2:5853bf44af9f 4429 DDKAPI
sca8er 2:5853bf44af9f 4430 RtlDeleteRegistryValue(
sca8er 2:5853bf44af9f 4431 /*IN*/ ULONG RelativeTo,
sca8er 2:5853bf44af9f 4432 /*IN*/ PCWSTR Path,
sca8er 2:5853bf44af9f 4433 /*IN*/ PCWSTR ValueName);
sca8er 2:5853bf44af9f 4434
sca8er 2:5853bf44af9f 4435 NTOSAPI
sca8er 2:5853bf44af9f 4436 BOOL
sca8er 2:5853bf44af9f 4437 DDKAPI
sca8er 2:5853bf44af9f 4438 RtlDosPathNameToNtPathName_U(
sca8er 2:5853bf44af9f 4439 /*IN*/ PCWSTR DosPathName,
sca8er 2:5853bf44af9f 4440 /*OUT*/ PUNICODE_STRING NtPathName,
sca8er 2:5853bf44af9f 4441 /*OUT*/ PCWSTR *NtFileNamePart,
sca8er 2:5853bf44af9f 4442 /*OUT*/ VOID *DirectoryInfo);
sca8er 2:5853bf44af9f 4443
sca8er 2:5853bf44af9f 4444 /*
sca8er 2:5853bf44af9f 4445 * BOOLEAN
sca8er 2:5853bf44af9f 4446 * RtlEqualLuid(
sca8er 2:5853bf44af9f 4447 * IN LUID Luid1,
sca8er 2:5853bf44af9f 4448 * IN LUID Luid2)
sca8er 2:5853bf44af9f 4449 */
sca8er 2:5853bf44af9f 4450 #define RtlEqualLuid(_Luid1, \
sca8er 2:5853bf44af9f 4451 _Luid2) \
sca8er 2:5853bf44af9f 4452 ((Luid1.LowPart == Luid2.LowPart) && (Luid1.HighPart == Luid2.HighPart))
sca8er 2:5853bf44af9f 4453
sca8er 2:5853bf44af9f 4454 /*
sca8er 2:5853bf44af9f 4455 * ULONG
sca8er 2:5853bf44af9f 4456 * RtlEqualMemory(
sca8er 2:5853bf44af9f 4457 * IN VOID UNALIGNED *Destination,
sca8er 2:5853bf44af9f 4458 * IN CONST VOID UNALIGNED *Source,
sca8er 2:5853bf44af9f 4459 * IN SIZE_T Length)
sca8er 2:5853bf44af9f 4460 */
sca8er 2:5853bf44af9f 4461 #define RtlEqualMemory(Destination, Source, Length) (!memcmp(Destination, Source, Length))
sca8er 2:5853bf44af9f 4462
sca8er 2:5853bf44af9f 4463 NTOSAPI
sca8er 2:5853bf44af9f 4464 BOOLEAN
sca8er 2:5853bf44af9f 4465 DDKAPI
sca8er 2:5853bf44af9f 4466 RtlEqualString(
sca8er 2:5853bf44af9f 4467 /*IN*/ PSTRING String1,
sca8er 2:5853bf44af9f 4468 /*IN*/ PSTRING String2,
sca8er 2:5853bf44af9f 4469 /*IN*/ BOOLEAN CaseInSensitive);
sca8er 2:5853bf44af9f 4470
sca8er 2:5853bf44af9f 4471 NTOSAPI
sca8er 2:5853bf44af9f 4472 BOOLEAN
sca8er 2:5853bf44af9f 4473 DDKAPI
sca8er 2:5853bf44af9f 4474 RtlEqualUnicodeString(
sca8er 2:5853bf44af9f 4475 /*IN*/ CONST UNICODE_STRING *String1,
sca8er 2:5853bf44af9f 4476 /*IN*/ CONST UNICODE_STRING *String2,
sca8er 2:5853bf44af9f 4477 /*IN*/ BOOLEAN CaseInSensitive);
sca8er 2:5853bf44af9f 4478
sca8er 2:5853bf44af9f 4479 /*
sca8er 2:5853bf44af9f 4480 * VOID
sca8er 2:5853bf44af9f 4481 * RtlFillMemory(
sca8er 2:5853bf44af9f 4482 * IN VOID UNALIGNED *Destination,
sca8er 2:5853bf44af9f 4483 * IN SIZE_T Length,
sca8er 2:5853bf44af9f 4484 * IN UCHAR Fill)
sca8er 2:5853bf44af9f 4485 */
sca8er 2:5853bf44af9f 4486 #ifndef RtlFillMemory
sca8er 2:5853bf44af9f 4487 #define RtlFillMemory(Destination, Length, Fill) \
sca8er 2:5853bf44af9f 4488 memset(Destination, Fill, Length)
sca8er 2:5853bf44af9f 4489 #endif
sca8er 2:5853bf44af9f 4490
sca8er 2:5853bf44af9f 4491 #ifndef RtlFillBytes
sca8er 2:5853bf44af9f 4492 #define RtlFillBytes RtlFillMemory
sca8er 2:5853bf44af9f 4493 #endif
sca8er 2:5853bf44af9f 4494
sca8er 2:5853bf44af9f 4495 NTOSAPI
sca8er 2:5853bf44af9f 4496 ULONG
sca8er 2:5853bf44af9f 4497 DDKAPI
sca8er 2:5853bf44af9f 4498 RtlFindClearBits(
sca8er 2:5853bf44af9f 4499 /*IN*/ PRTL_BITMAP BitMapHeader,
sca8er 2:5853bf44af9f 4500 /*IN*/ ULONG NumberToFind,
sca8er 2:5853bf44af9f 4501 /*IN*/ ULONG HintIndex);
sca8er 2:5853bf44af9f 4502
sca8er 2:5853bf44af9f 4503 NTOSAPI
sca8er 2:5853bf44af9f 4504 ULONG
sca8er 2:5853bf44af9f 4505 DDKAPI
sca8er 2:5853bf44af9f 4506 RtlFindClearBitsAndSet(
sca8er 2:5853bf44af9f 4507 /*IN*/ PRTL_BITMAP BitMapHeader,
sca8er 2:5853bf44af9f 4508 /*IN*/ ULONG NumberToFind,
sca8er 2:5853bf44af9f 4509 /*IN*/ ULONG HintIndex);
sca8er 2:5853bf44af9f 4510
sca8er 2:5853bf44af9f 4511 NTOSAPI
sca8er 2:5853bf44af9f 4512 ULONG
sca8er 2:5853bf44af9f 4513 DDKAPI
sca8er 2:5853bf44af9f 4514 RtlFindClearRuns(
sca8er 2:5853bf44af9f 4515 /*IN*/ PRTL_BITMAP BitMapHeader,
sca8er 2:5853bf44af9f 4516 /*OUT*/ PRTL_BITMAP_RUN RunArray,
sca8er 2:5853bf44af9f 4517 /*IN*/ ULONG SizeOfRunArray,
sca8er 2:5853bf44af9f 4518 /*IN*/ BOOLEAN LocateLongestRuns);
sca8er 2:5853bf44af9f 4519
sca8er 2:5853bf44af9f 4520 NTOSAPI
sca8er 2:5853bf44af9f 4521 ULONG
sca8er 2:5853bf44af9f 4522 DDKAPI
sca8er 2:5853bf44af9f 4523 RtlFindFirstRunClear(
sca8er 2:5853bf44af9f 4524 /*IN*/ PRTL_BITMAP BitMapHeader,
sca8er 2:5853bf44af9f 4525 /*OUT*/ PULONG StartingIndex);
sca8er 2:5853bf44af9f 4526
sca8er 2:5853bf44af9f 4527 NTOSAPI
sca8er 2:5853bf44af9f 4528 ULONG
sca8er 2:5853bf44af9f 4529 DDKAPI
sca8er 2:5853bf44af9f 4530 RtlFindLastBackwardRunClear(
sca8er 2:5853bf44af9f 4531 /*IN*/ PRTL_BITMAP BitMapHeader,
sca8er 2:5853bf44af9f 4532 /*IN*/ ULONG FromIndex,
sca8er 2:5853bf44af9f 4533 /*OUT*/ PULONG StartingRunIndex);
sca8er 2:5853bf44af9f 4534
sca8er 2:5853bf44af9f 4535 NTOSAPI
sca8er 2:5853bf44af9f 4536 CCHAR
sca8er 2:5853bf44af9f 4537 DDKAPI
sca8er 2:5853bf44af9f 4538 RtlFindLeastSignificantBit(
sca8er 2:5853bf44af9f 4539 /*IN*/ ULONGLONG Set);
sca8er 2:5853bf44af9f 4540
sca8er 2:5853bf44af9f 4541 NTOSAPI
sca8er 2:5853bf44af9f 4542 ULONG
sca8er 2:5853bf44af9f 4543 DDKAPI
sca8er 2:5853bf44af9f 4544 RtlFindLongestRunClear(
sca8er 2:5853bf44af9f 4545 /*IN*/ PRTL_BITMAP BitMapHeader,
sca8er 2:5853bf44af9f 4546 /*OUT*/ PULONG StartingIndex);
sca8er 2:5853bf44af9f 4547
sca8er 2:5853bf44af9f 4548 NTOSAPI
sca8er 2:5853bf44af9f 4549 CCHAR
sca8er 2:5853bf44af9f 4550 DDKAPI
sca8er 2:5853bf44af9f 4551 RtlFindMostSignificantBit(
sca8er 2:5853bf44af9f 4552 /*IN*/ ULONGLONG Set);
sca8er 2:5853bf44af9f 4553
sca8er 2:5853bf44af9f 4554 NTOSAPI
sca8er 2:5853bf44af9f 4555 ULONG
sca8er 2:5853bf44af9f 4556 DDKAPI
sca8er 2:5853bf44af9f 4557 RtlFindNextForwardRunClear(
sca8er 2:5853bf44af9f 4558 /*IN*/ PRTL_BITMAP BitMapHeader,
sca8er 2:5853bf44af9f 4559 /*IN*/ ULONG FromIndex,
sca8er 2:5853bf44af9f 4560 /*OUT*/ PULONG StartingRunIndex);
sca8er 2:5853bf44af9f 4561
sca8er 2:5853bf44af9f 4562 NTOSAPI
sca8er 2:5853bf44af9f 4563 NTSTATUS
sca8er 2:5853bf44af9f 4564 DDKAPI
sca8er 2:5853bf44af9f 4565 RtlFindRange(
sca8er 2:5853bf44af9f 4566 /*IN*/ PRTL_RANGE_LIST RangeList,
sca8er 2:5853bf44af9f 4567 /*IN*/ ULONGLONG Minimum,
sca8er 2:5853bf44af9f 4568 /*IN*/ ULONGLONG Maximum,
sca8er 2:5853bf44af9f 4569 /*IN*/ ULONG Length,
sca8er 2:5853bf44af9f 4570 /*IN*/ ULONG Alignment,
sca8er 2:5853bf44af9f 4571 /*IN*/ ULONG Flags,
sca8er 2:5853bf44af9f 4572 /*IN*/ UCHAR AttributeAvailableMask,
sca8er 2:5853bf44af9f 4573 /*IN*/ PVOID Context /*OPTIONAL*/,
sca8er 2:5853bf44af9f 4574 /*IN*/ PRTL_CONFLICT_RANGE_CALLBACK Callback /*OPTIONAL*/,
sca8er 2:5853bf44af9f 4575 /*OUT*/ PULONGLONG Start);
sca8er 2:5853bf44af9f 4576
sca8er 2:5853bf44af9f 4577 NTOSAPI
sca8er 2:5853bf44af9f 4578 ULONG
sca8er 2:5853bf44af9f 4579 DDKAPI
sca8er 2:5853bf44af9f 4580 RtlFindSetBits(
sca8er 2:5853bf44af9f 4581 /*IN*/ PRTL_BITMAP BitMapHeader,
sca8er 2:5853bf44af9f 4582 /*IN*/ ULONG NumberToFind,
sca8er 2:5853bf44af9f 4583 /*IN*/ ULONG HintIndex);
sca8er 2:5853bf44af9f 4584
sca8er 2:5853bf44af9f 4585 NTOSAPI
sca8er 2:5853bf44af9f 4586 ULONG
sca8er 2:5853bf44af9f 4587 DDKAPI
sca8er 2:5853bf44af9f 4588 RtlFindSetBitsAndClear(
sca8er 2:5853bf44af9f 4589 /*IN*/ PRTL_BITMAP BitMapHeader,
sca8er 2:5853bf44af9f 4590 /*IN*/ ULONG NumberToFind,
sca8er 2:5853bf44af9f 4591 /*IN*/ ULONG HintIndex);
sca8er 2:5853bf44af9f 4592
sca8er 2:5853bf44af9f 4593 NTOSAPI
sca8er 2:5853bf44af9f 4594 VOID
sca8er 2:5853bf44af9f 4595 DDKAPI
sca8er 2:5853bf44af9f 4596 RtlFreeAnsiString(
sca8er 2:5853bf44af9f 4597 /*IN*/ PANSI_STRING AnsiString);
sca8er 2:5853bf44af9f 4598
sca8er 2:5853bf44af9f 4599 NTOSAPI
sca8er 2:5853bf44af9f 4600 VOID
sca8er 2:5853bf44af9f 4601 DDKAPI
sca8er 2:5853bf44af9f 4602 RtlFreeRangeList(
sca8er 2:5853bf44af9f 4603 /*IN*/ PRTL_RANGE_LIST RangeList);
sca8er 2:5853bf44af9f 4604
sca8er 2:5853bf44af9f 4605 NTOSAPI
sca8er 2:5853bf44af9f 4606 VOID
sca8er 2:5853bf44af9f 4607 DDKAPI
sca8er 2:5853bf44af9f 4608 RtlFreeUnicodeString(
sca8er 2:5853bf44af9f 4609 /*IN*/ PUNICODE_STRING UnicodeString);
sca8er 2:5853bf44af9f 4610
sca8er 2:5853bf44af9f 4611 NTOSAPI
sca8er 2:5853bf44af9f 4612 VOID
sca8er 2:5853bf44af9f 4613 DDKAPI
sca8er 2:5853bf44af9f 4614 RtlGetCallersAddress(
sca8er 2:5853bf44af9f 4615 /*OUT*/ PVOID *CallersAddress,
sca8er 2:5853bf44af9f 4616 /*OUT*/ PVOID *CallersCaller);
sca8er 2:5853bf44af9f 4617
sca8er 2:5853bf44af9f 4618 NTOSAPI
sca8er 2:5853bf44af9f 4619 NTSTATUS
sca8er 2:5853bf44af9f 4620 DDKAPI
sca8er 2:5853bf44af9f 4621 RtlGetVersion(
sca8er 2:5853bf44af9f 4622 /*IN OUT*/ PRTL_OSVERSIONINFOW lpVersionInformation);
sca8er 2:5853bf44af9f 4623
sca8er 2:5853bf44af9f 4624 NTOSAPI
sca8er 2:5853bf44af9f 4625 NTSTATUS
sca8er 2:5853bf44af9f 4626 DDKAPI
sca8er 2:5853bf44af9f 4627 RtlGetFirstRange(
sca8er 2:5853bf44af9f 4628 /*IN*/ PRTL_RANGE_LIST RangeList,
sca8er 2:5853bf44af9f 4629 /*OUT*/ PRTL_RANGE_LIST_ITERATOR Iterator,
sca8er 2:5853bf44af9f 4630 /*OUT*/ PRTL_RANGE *Range);
sca8er 2:5853bf44af9f 4631
sca8er 2:5853bf44af9f 4632 NTOSAPI
sca8er 2:5853bf44af9f 4633 NTSTATUS
sca8er 2:5853bf44af9f 4634 DDKAPI
sca8er 2:5853bf44af9f 4635 RtlGetNextRange(
sca8er 2:5853bf44af9f 4636 /*IN OUT*/ PRTL_RANGE_LIST_ITERATOR Iterator,
sca8er 2:5853bf44af9f 4637 /*OUT*/ PRTL_RANGE *Range,
sca8er 2:5853bf44af9f 4638 /*IN*/ BOOLEAN MoveForwards);
sca8er 2:5853bf44af9f 4639
sca8er 2:5853bf44af9f 4640 #define FOR_ALL_RANGES(RangeList, Iterator, Current) \
sca8er 2:5853bf44af9f 4641 for (RtlGetFirstRange((RangeList), (Iterator), &(Current)); \
sca8er 2:5853bf44af9f 4642 (Current) != NULL; \
sca8er 2:5853bf44af9f 4643 RtlGetNextRange((Iterator), &(Current), TRUE))
sca8er 2:5853bf44af9f 4644
sca8er 2:5853bf44af9f 4645 #define FOR_ALL_RANGES_BACKWARDS(RangeList, Iterator, Current) \
sca8er 2:5853bf44af9f 4646 for (RtlGetLastRange((RangeList), (Iterator), &(Current)); \
sca8er 2:5853bf44af9f 4647 (Current) != NULL; \
sca8er 2:5853bf44af9f 4648 RtlGetNextRange((Iterator), &(Current), FALSE))
sca8er 2:5853bf44af9f 4649
sca8er 2:5853bf44af9f 4650 NTOSAPI
sca8er 2:5853bf44af9f 4651 NTSTATUS
sca8er 2:5853bf44af9f 4652 DDKAPI
sca8er 2:5853bf44af9f 4653 RtlGUIDFromString(
sca8er 2:5853bf44af9f 4654 /*IN*/ PUNICODE_STRING GuidString,
sca8er 2:5853bf44af9f 4655 /*OUT*/ GUID *Guid);
sca8er 2:5853bf44af9f 4656
sca8er 2:5853bf44af9f 4657 NTOSAPI
sca8er 2:5853bf44af9f 4658 NTSTATUS
sca8er 2:5853bf44af9f 4659 DDKAPI
sca8er 2:5853bf44af9f 4660 RtlHashUnicodeString(
sca8er 2:5853bf44af9f 4661 /*IN*/ CONST UNICODE_STRING *String,
sca8er 2:5853bf44af9f 4662 /*IN*/ BOOLEAN CaseInSensitive,
sca8er 2:5853bf44af9f 4663 /*IN*/ ULONG HashAlgorithm,
sca8er 2:5853bf44af9f 4664 /*OUT*/ PULONG HashValue);
sca8er 2:5853bf44af9f 4665
sca8er 2:5853bf44af9f 4666 NTOSAPI
sca8er 2:5853bf44af9f 4667 VOID
sca8er 2:5853bf44af9f 4668 DDKAPI
sca8er 2:5853bf44af9f 4669 RtlInitAnsiString(
sca8er 2:5853bf44af9f 4670 /*IN OUT*/ PANSI_STRING DestinationString,
sca8er 2:5853bf44af9f 4671 /*IN*/ PCSZ SourceString);
sca8er 2:5853bf44af9f 4672
sca8er 2:5853bf44af9f 4673 NTOSAPI
sca8er 2:5853bf44af9f 4674 VOID
sca8er 2:5853bf44af9f 4675 DDKAPI
sca8er 2:5853bf44af9f 4676 RtlInitializeBitMap(
sca8er 2:5853bf44af9f 4677 /*IN*/ PRTL_BITMAP BitMapHeader,
sca8er 2:5853bf44af9f 4678 /*IN*/ PULONG BitMapBuffer,
sca8er 2:5853bf44af9f 4679 /*IN*/ ULONG SizeOfBitMap);
sca8er 2:5853bf44af9f 4680
sca8er 2:5853bf44af9f 4681 NTOSAPI
sca8er 2:5853bf44af9f 4682 VOID
sca8er 2:5853bf44af9f 4683 DDKAPI
sca8er 2:5853bf44af9f 4684 RtlInitializeRangeList(
sca8er 2:5853bf44af9f 4685 /*IN OUT*/ PRTL_RANGE_LIST RangeList);
sca8er 2:5853bf44af9f 4686
sca8er 2:5853bf44af9f 4687 NTOSAPI
sca8er 2:5853bf44af9f 4688 VOID
sca8er 2:5853bf44af9f 4689 DDKAPI
sca8er 2:5853bf44af9f 4690 RtlInitString(
sca8er 2:5853bf44af9f 4691 /*IN OUT*/ PSTRING DestinationString,
sca8er 2:5853bf44af9f 4692 /*IN*/ PCSZ SourceString);
sca8er 2:5853bf44af9f 4693
sca8er 2:5853bf44af9f 4694 NTOSAPI
sca8er 2:5853bf44af9f 4695 VOID
sca8er 2:5853bf44af9f 4696 DDKAPI
sca8er 2:5853bf44af9f 4697 RtlInitUnicodeString(
sca8er 2:5853bf44af9f 4698 /*IN OUT*/ PUNICODE_STRING DestinationString,
sca8er 2:5853bf44af9f 4699 /*IN*/ PCWSTR SourceString);
sca8er 2:5853bf44af9f 4700
sca8er 2:5853bf44af9f 4701 NTOSAPI
sca8er 2:5853bf44af9f 4702 NTSTATUS
sca8er 2:5853bf44af9f 4703 DDKAPI
sca8er 2:5853bf44af9f 4704 RtlInt64ToUnicodeString(
sca8er 2:5853bf44af9f 4705 /*IN*/ ULONGLONG Value,
sca8er 2:5853bf44af9f 4706 /*IN*/ ULONG Base /*OPTIONAL*/,
sca8er 2:5853bf44af9f 4707 /*IN OUT*/ PUNICODE_STRING String);
sca8er 2:5853bf44af9f 4708
sca8er 2:5853bf44af9f 4709 NTOSAPI
sca8er 2:5853bf44af9f 4710 NTSTATUS
sca8er 2:5853bf44af9f 4711 DDKAPI
sca8er 2:5853bf44af9f 4712 RtlIntegerToUnicodeString(
sca8er 2:5853bf44af9f 4713 /*IN*/ ULONG Value,
sca8er 2:5853bf44af9f 4714 /*IN*/ ULONG Base /*OPTIONAL*/,
sca8er 2:5853bf44af9f 4715 /*IN OUT*/ PUNICODE_STRING String);
sca8er 2:5853bf44af9f 4716
sca8er 2:5853bf44af9f 4717 NTOSAPI
sca8er 2:5853bf44af9f 4718 NTSTATUS
sca8er 2:5853bf44af9f 4719 DDKAPI
sca8er 2:5853bf44af9f 4720 RtlIntPtrToUnicodeString(
sca8er 2:5853bf44af9f 4721 PLONG Value,
sca8er 2:5853bf44af9f 4722 ULONG Base /*OPTIONAL*/,
sca8er 2:5853bf44af9f 4723 PUNICODE_STRING String);
sca8er 2:5853bf44af9f 4724
sca8er 2:5853bf44af9f 4725 NTOSAPI
sca8er 2:5853bf44af9f 4726 NTSTATUS
sca8er 2:5853bf44af9f 4727 DDKAPI
sca8er 2:5853bf44af9f 4728 RtlInvertRangeList(
sca8er 2:5853bf44af9f 4729 /*OUT*/ PRTL_RANGE_LIST InvertedRangeList,
sca8er 2:5853bf44af9f 4730 /*IN*/ PRTL_RANGE_LIST RangeList);
sca8er 2:5853bf44af9f 4731
sca8er 2:5853bf44af9f 4732 NTOSAPI
sca8er 2:5853bf44af9f 4733 NTSTATUS
sca8er 2:5853bf44af9f 4734 DDKAPI
sca8er 2:5853bf44af9f 4735 RtlIsRangeAvailable(
sca8er 2:5853bf44af9f 4736 /*IN*/ PRTL_RANGE_LIST RangeList,
sca8er 2:5853bf44af9f 4737 /*IN*/ ULONGLONG Start,
sca8er 2:5853bf44af9f 4738 /*IN*/ ULONGLONG End,
sca8er 2:5853bf44af9f 4739 /*IN*/ ULONG Flags,
sca8er 2:5853bf44af9f 4740 /*IN*/ UCHAR AttributeAvailableMask,
sca8er 2:5853bf44af9f 4741 /*IN*/ PVOID Context /*OPTIONAL*/,
sca8er 2:5853bf44af9f 4742 /*IN*/ PRTL_CONFLICT_RANGE_CALLBACK Callback /*OPTIONAL*/,
sca8er 2:5853bf44af9f 4743 /*OUT*/ PBOOLEAN Available);
sca8er 2:5853bf44af9f 4744
sca8er 2:5853bf44af9f 4745 /*
sca8er 2:5853bf44af9f 4746 * BOOLEAN
sca8er 2:5853bf44af9f 4747 * RtlIsZeroLuid(
sca8er 2:5853bf44af9f 4748 * IN PLUID L1)
sca8er 2:5853bf44af9f 4749 */
sca8er 2:5853bf44af9f 4750 #define RtlIsZeroLuid(_L1) \
sca8er 2:5853bf44af9f 4751 ((BOOLEAN) ((!(_L1)->LowPart) && (!(_L1)->HighPart)))
sca8er 2:5853bf44af9f 4752
sca8er 2:5853bf44af9f 4753 NTOSAPI
sca8er 2:5853bf44af9f 4754 ULONG
sca8er 2:5853bf44af9f 4755 DDKAPI
sca8er 2:5853bf44af9f 4756 RtlLengthSecurityDescriptor(
sca8er 2:5853bf44af9f 4757 /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptor);
sca8er 2:5853bf44af9f 4758
sca8er 2:5853bf44af9f 4759 NTOSAPI
sca8er 2:5853bf44af9f 4760 VOID
sca8er 2:5853bf44af9f 4761 DDKAPI
sca8er 2:5853bf44af9f 4762 RtlMapGenericMask(
sca8er 2:5853bf44af9f 4763 /*IN OUT*/ PACCESS_MASK AccessMask,
sca8er 2:5853bf44af9f 4764 /*IN*/ PGENERIC_MAPPING GenericMapping);
sca8er 2:5853bf44af9f 4765
sca8er 2:5853bf44af9f 4766 NTOSAPI
sca8er 2:5853bf44af9f 4767 NTSTATUS
sca8er 2:5853bf44af9f 4768 DDKAPI
sca8er 2:5853bf44af9f 4769 RtlMergeRangeLists(
sca8er 2:5853bf44af9f 4770 /*OUT*/ PRTL_RANGE_LIST MergedRangeList,
sca8er 2:5853bf44af9f 4771 /*IN*/ PRTL_RANGE_LIST RangeList1,
sca8er 2:5853bf44af9f 4772 /*IN*/ PRTL_RANGE_LIST RangeList2,
sca8er 2:5853bf44af9f 4773 /*IN*/ ULONG Flags);
sca8er 2:5853bf44af9f 4774
sca8er 2:5853bf44af9f 4775 /*
sca8er 2:5853bf44af9f 4776 * VOID
sca8er 2:5853bf44af9f 4777 * RtlMoveMemory(
sca8er 2:5853bf44af9f 4778 * IN VOID UNALIGNED *Destination,
sca8er 2:5853bf44af9f 4779 * IN CONST VOID UNALIGNED *Source,
sca8er 2:5853bf44af9f 4780 * IN SIZE_T Length)
sca8er 2:5853bf44af9f 4781 */
sca8er 2:5853bf44af9f 4782 #define RtlMoveMemory memmove
sca8er 2:5853bf44af9f 4783
sca8er 2:5853bf44af9f 4784 NTOSAPI
sca8er 2:5853bf44af9f 4785 ULONG
sca8er 2:5853bf44af9f 4786 DDKAPI
sca8er 2:5853bf44af9f 4787 RtlNumberOfClearBits(
sca8er 2:5853bf44af9f 4788 /*IN*/ PRTL_BITMAP BitMapHeader);
sca8er 2:5853bf44af9f 4789
sca8er 2:5853bf44af9f 4790 NTOSAPI
sca8er 2:5853bf44af9f 4791 ULONG
sca8er 2:5853bf44af9f 4792 DDKAPI
sca8er 2:5853bf44af9f 4793 RtlNumberOfSetBits(
sca8er 2:5853bf44af9f 4794 /*IN*/ PRTL_BITMAP BitMapHeader);
sca8er 2:5853bf44af9f 4795
sca8er 2:5853bf44af9f 4796 NTOSAPI
sca8er 2:5853bf44af9f 4797 VOID
sca8er 2:5853bf44af9f 4798 DDKFASTAPI
sca8er 2:5853bf44af9f 4799 RtlPrefetchMemoryNonTemporal(
sca8er 2:5853bf44af9f 4800 /*IN*/ PVOID Source,
sca8er 2:5853bf44af9f 4801 /*IN*/ SIZE_T Length);
sca8er 2:5853bf44af9f 4802
sca8er 2:5853bf44af9f 4803 NTOSAPI
sca8er 2:5853bf44af9f 4804 BOOLEAN
sca8er 2:5853bf44af9f 4805 DDKAPI
sca8er 2:5853bf44af9f 4806 RtlPrefixUnicodeString(
sca8er 2:5853bf44af9f 4807 /*IN*/ PUNICODE_STRING String1,
sca8er 2:5853bf44af9f 4808 /*IN*/ PUNICODE_STRING String2,
sca8er 2:5853bf44af9f 4809 /*IN*/ BOOLEAN CaseInSensitive);
sca8er 2:5853bf44af9f 4810
sca8er 2:5853bf44af9f 4811 NTOSAPI
sca8er 2:5853bf44af9f 4812 NTSTATUS
sca8er 2:5853bf44af9f 4813 DDKAPI
sca8er 2:5853bf44af9f 4814 RtlQueryRegistryValues(
sca8er 2:5853bf44af9f 4815 /*IN*/ ULONG RelativeTo,
sca8er 2:5853bf44af9f 4816 /*IN*/ PCWSTR Path,
sca8er 2:5853bf44af9f 4817 /*IN*/ PRTL_QUERY_REGISTRY_TABLE QueryTable,
sca8er 2:5853bf44af9f 4818 /*IN*/ PVOID Context,
sca8er 2:5853bf44af9f 4819 /*IN*/ PVOID Environment /*OPTIONAL*/);
sca8er 2:5853bf44af9f 4820
sca8er 2:5853bf44af9f 4821 NTOSAPI
sca8er 2:5853bf44af9f 4822 VOID
sca8er 2:5853bf44af9f 4823 DDKAPI
sca8er 2:5853bf44af9f 4824 RtlRetrieveUlong(
sca8er 2:5853bf44af9f 4825 /*IN OUT*/ PULONG DestinationAddress,
sca8er 2:5853bf44af9f 4826 /*IN*/ PULONG SourceAddress);
sca8er 2:5853bf44af9f 4827
sca8er 2:5853bf44af9f 4828 NTOSAPI
sca8er 2:5853bf44af9f 4829 VOID
sca8er 2:5853bf44af9f 4830 DDKAPI
sca8er 2:5853bf44af9f 4831 RtlRetrieveUshort(
sca8er 2:5853bf44af9f 4832 /*IN OUT*/ PUSHORT DestinationAddress,
sca8er 2:5853bf44af9f 4833 /*IN*/ PUSHORT SourceAddress);
sca8er 2:5853bf44af9f 4834
sca8er 2:5853bf44af9f 4835 NTOSAPI
sca8er 2:5853bf44af9f 4836 VOID
sca8er 2:5853bf44af9f 4837 DDKAPI
sca8er 2:5853bf44af9f 4838 RtlSetAllBits(
sca8er 2:5853bf44af9f 4839 /*IN*/ PRTL_BITMAP BitMapHeader);
sca8er 2:5853bf44af9f 4840
sca8er 2:5853bf44af9f 4841 NTOSAPI
sca8er 2:5853bf44af9f 4842 VOID
sca8er 2:5853bf44af9f 4843 DDKAPI
sca8er 2:5853bf44af9f 4844 RtlSetBit(
sca8er 2:5853bf44af9f 4845 PRTL_BITMAP BitMapHeader,
sca8er 2:5853bf44af9f 4846 ULONG BitNumber);
sca8er 2:5853bf44af9f 4847
sca8er 2:5853bf44af9f 4848 NTOSAPI
sca8er 2:5853bf44af9f 4849 VOID
sca8er 2:5853bf44af9f 4850 DDKAPI
sca8er 2:5853bf44af9f 4851 RtlSetBits(
sca8er 2:5853bf44af9f 4852 /*IN*/ PRTL_BITMAP BitMapHeader,
sca8er 2:5853bf44af9f 4853 /*IN*/ ULONG StartingIndex,
sca8er 2:5853bf44af9f 4854 /*IN*/ ULONG NumberToSet);
sca8er 2:5853bf44af9f 4855
sca8er 2:5853bf44af9f 4856 NTOSAPI
sca8er 2:5853bf44af9f 4857 NTSTATUS
sca8er 2:5853bf44af9f 4858 DDKAPI
sca8er 2:5853bf44af9f 4859 RtlSetDaclSecurityDescriptor(
sca8er 2:5853bf44af9f 4860 /*IN OUT*/ PSECURITY_DESCRIPTOR SecurityDescriptor,
sca8er 2:5853bf44af9f 4861 /*IN*/ BOOLEAN DaclPresent,
sca8er 2:5853bf44af9f 4862 /*IN*/ PACL Dacl /*OPTIONAL*/,
sca8er 2:5853bf44af9f 4863 /*IN*/ BOOLEAN DaclDefaulted /*OPTIONAL*/);
sca8er 2:5853bf44af9f 4864
sca8er 2:5853bf44af9f 4865 NTOSAPI
sca8er 2:5853bf44af9f 4866 VOID
sca8er 2:5853bf44af9f 4867 DDKAPI
sca8er 2:5853bf44af9f 4868 RtlStoreUlong(
sca8er 2:5853bf44af9f 4869 /*IN*/ PULONG Address,
sca8er 2:5853bf44af9f 4870 /*IN*/ ULONG Value);
sca8er 2:5853bf44af9f 4871
sca8er 2:5853bf44af9f 4872 NTOSAPI
sca8er 2:5853bf44af9f 4873 VOID
sca8er 2:5853bf44af9f 4874 DDKAPI
sca8er 2:5853bf44af9f 4875 RtlStoreUlonglong(
sca8er 2:5853bf44af9f 4876 /*IN OUT*/ PULONGLONG Address,
sca8er 2:5853bf44af9f 4877 ULONGLONG Value);
sca8er 2:5853bf44af9f 4878
sca8er 2:5853bf44af9f 4879 NTOSAPI
sca8er 2:5853bf44af9f 4880 VOID
sca8er 2:5853bf44af9f 4881 DDKAPI
sca8er 2:5853bf44af9f 4882 RtlStoreUlongPtr(
sca8er 2:5853bf44af9f 4883 /*IN OUT*/ PULONG_PTR Address,
sca8er 2:5853bf44af9f 4884 /*IN*/ ULONG_PTR Value);
sca8er 2:5853bf44af9f 4885
sca8er 2:5853bf44af9f 4886 NTOSAPI
sca8er 2:5853bf44af9f 4887 VOID
sca8er 2:5853bf44af9f 4888 DDKAPI
sca8er 2:5853bf44af9f 4889 RtlStoreUshort(
sca8er 2:5853bf44af9f 4890 /*IN*/ PUSHORT Address,
sca8er 2:5853bf44af9f 4891 /*IN*/ USHORT Value);
sca8er 2:5853bf44af9f 4892
sca8er 2:5853bf44af9f 4893 NTOSAPI
sca8er 2:5853bf44af9f 4894 NTSTATUS
sca8er 2:5853bf44af9f 4895 DDKAPI
sca8er 2:5853bf44af9f 4896 RtlStringFromGUID(
sca8er 2:5853bf44af9f 4897 /*IN*/ REFGUID Guid,
sca8er 2:5853bf44af9f 4898 /*OUT*/ PUNICODE_STRING GuidString);
sca8er 2:5853bf44af9f 4899
sca8er 2:5853bf44af9f 4900 #define RtlStringCbCopyA(dst, dst_len, src) strncpy(dst, src, dst_len)
sca8er 2:5853bf44af9f 4901 #define RtlStringCbPrintfA(args...) snprintf(args)
sca8er 2:5853bf44af9f 4902 #define RtlStringCbVPrintfA(args...) vsnprintf(args)
sca8er 2:5853bf44af9f 4903
sca8er 2:5853bf44af9f 4904 NTOSAPI
sca8er 2:5853bf44af9f 4905 BOOLEAN
sca8er 2:5853bf44af9f 4906 DDKAPI
sca8er 2:5853bf44af9f 4907 RtlTestBit(
sca8er 2:5853bf44af9f 4908 /*IN*/ PRTL_BITMAP BitMapHeader,
sca8er 2:5853bf44af9f 4909 /*IN*/ ULONG BitNumber);
sca8er 2:5853bf44af9f 4910
sca8er 2:5853bf44af9f 4911 NTOSAPI
sca8er 2:5853bf44af9f 4912 BOOLEAN
sca8er 2:5853bf44af9f 4913 DDKAPI
sca8er 2:5853bf44af9f 4914 RtlTimeFieldsToTime(
sca8er 2:5853bf44af9f 4915 /*IN*/ PTIME_FIELDS TimeFields,
sca8er 2:5853bf44af9f 4916 /*IN*/ PLARGE_INTEGER Time);
sca8er 2:5853bf44af9f 4917
sca8er 2:5853bf44af9f 4918 NTOSAPI
sca8er 2:5853bf44af9f 4919 VOID
sca8er 2:5853bf44af9f 4920 DDKAPI
sca8er 2:5853bf44af9f 4921 RtlTimeToTimeFields(
sca8er 2:5853bf44af9f 4922 /*IN*/ PLARGE_INTEGER Time,
sca8er 2:5853bf44af9f 4923 /*IN*/ PTIME_FIELDS TimeFields);
sca8er 2:5853bf44af9f 4924
sca8er 2:5853bf44af9f 4925 NTOSAPI
sca8er 2:5853bf44af9f 4926 ULONG
sca8er 2:5853bf44af9f 4927 DDKFASTAPI
sca8er 2:5853bf44af9f 4928 RtlUlongByteSwap(
sca8er 2:5853bf44af9f 4929 /*IN*/ ULONG Source);
sca8er 2:5853bf44af9f 4930
sca8er 2:5853bf44af9f 4931 NTOSAPI
sca8er 2:5853bf44af9f 4932 ULONGLONG
sca8er 2:5853bf44af9f 4933 DDKFASTAPI
sca8er 2:5853bf44af9f 4934 RtlUlonglongByteSwap(
sca8er 2:5853bf44af9f 4935 /*IN*/ ULONGLONG Source);
sca8er 2:5853bf44af9f 4936
sca8er 2:5853bf44af9f 4937 NTOSAPI
sca8er 2:5853bf44af9f 4938 ULONG
sca8er 2:5853bf44af9f 4939 DDKAPI
sca8er 2:5853bf44af9f 4940 RtlUnicodeStringToAnsiSize(
sca8er 2:5853bf44af9f 4941 /*IN*/ PUNICODE_STRING UnicodeString);
sca8er 2:5853bf44af9f 4942
sca8er 2:5853bf44af9f 4943 NTOSAPI
sca8er 2:5853bf44af9f 4944 NTSTATUS
sca8er 2:5853bf44af9f 4945 DDKAPI
sca8er 2:5853bf44af9f 4946 RtlUnicodeStringToAnsiString(
sca8er 2:5853bf44af9f 4947 /*IN OUT*/ PANSI_STRING DestinationString,
sca8er 2:5853bf44af9f 4948 /*IN*/ PUNICODE_STRING SourceString,
sca8er 2:5853bf44af9f 4949 /*IN*/ BOOLEAN AllocateDestinationString);
sca8er 2:5853bf44af9f 4950
sca8er 2:5853bf44af9f 4951 NTOSAPI
sca8er 2:5853bf44af9f 4952 NTSTATUS
sca8er 2:5853bf44af9f 4953 DDKAPI
sca8er 2:5853bf44af9f 4954 RtlUnicodeStringToInteger(
sca8er 2:5853bf44af9f 4955 /*IN*/ PUNICODE_STRING String,
sca8er 2:5853bf44af9f 4956 /*IN*/ ULONG Base /*OPTIONAL*/,
sca8er 2:5853bf44af9f 4957 /*OUT*/ PULONG Value);
sca8er 2:5853bf44af9f 4958
sca8er 2:5853bf44af9f 4959 NTOSAPI
sca8er 2:5853bf44af9f 4960 WCHAR
sca8er 2:5853bf44af9f 4961 DDKAPI
sca8er 2:5853bf44af9f 4962 RtlUpcaseUnicodeChar(
sca8er 2:5853bf44af9f 4963 /*IN*/ WCHAR SourceCharacter);
sca8er 2:5853bf44af9f 4964
sca8er 2:5853bf44af9f 4965 NTOSAPI
sca8er 2:5853bf44af9f 4966 NTSTATUS
sca8er 2:5853bf44af9f 4967 DDKAPI
sca8er 2:5853bf44af9f 4968 RtlUpcaseUnicodeString(
sca8er 2:5853bf44af9f 4969 /*IN OUT*/ PUNICODE_STRING DestinationString /*OPTIONAL*/,
sca8er 2:5853bf44af9f 4970 /*IN*/ PCUNICODE_STRING SourceString,
sca8er 2:5853bf44af9f 4971 /*IN*/ BOOLEAN AllocateDestinationString);
sca8er 2:5853bf44af9f 4972
sca8er 2:5853bf44af9f 4973 NTOSAPI
sca8er 2:5853bf44af9f 4974 CHAR
sca8er 2:5853bf44af9f 4975 DDKAPI
sca8er 2:5853bf44af9f 4976 RtlUpperChar(
sca8er 2:5853bf44af9f 4977 /*IN*/ CHAR Character);
sca8er 2:5853bf44af9f 4978
sca8er 2:5853bf44af9f 4979 NTOSAPI
sca8er 2:5853bf44af9f 4980 VOID
sca8er 2:5853bf44af9f 4981 DDKAPI
sca8er 2:5853bf44af9f 4982 RtlUpperString(
sca8er 2:5853bf44af9f 4983 /*IN OUT*/ PSTRING DestinationString,
sca8er 2:5853bf44af9f 4984 /*IN*/ PSTRING SourceString);
sca8er 2:5853bf44af9f 4985
sca8er 2:5853bf44af9f 4986 NTOSAPI
sca8er 2:5853bf44af9f 4987 USHORT
sca8er 2:5853bf44af9f 4988 DDKFASTAPI
sca8er 2:5853bf44af9f 4989 RtlUshortByteSwap(
sca8er 2:5853bf44af9f 4990 /*IN*/ USHORT Source);
sca8er 2:5853bf44af9f 4991
sca8er 2:5853bf44af9f 4992 NTOSAPI
sca8er 2:5853bf44af9f 4993 BOOLEAN
sca8er 2:5853bf44af9f 4994 DDKAPI
sca8er 2:5853bf44af9f 4995 RtlValidRelativeSecurityDescriptor(
sca8er 2:5853bf44af9f 4996 /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptorInput,
sca8er 2:5853bf44af9f 4997 /*IN*/ ULONG SecurityDescriptorLength,
sca8er 2:5853bf44af9f 4998 /*IN*/ SECURITY_INFORMATION RequiredInformation);
sca8er 2:5853bf44af9f 4999
sca8er 2:5853bf44af9f 5000 NTOSAPI
sca8er 2:5853bf44af9f 5001 BOOLEAN
sca8er 2:5853bf44af9f 5002 DDKAPI
sca8er 2:5853bf44af9f 5003 RtlValidSecurityDescriptor(
sca8er 2:5853bf44af9f 5004 /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptor);
sca8er 2:5853bf44af9f 5005
sca8er 2:5853bf44af9f 5006 NTOSAPI
sca8er 2:5853bf44af9f 5007 NTSTATUS
sca8er 2:5853bf44af9f 5008 DDKAPI
sca8er 2:5853bf44af9f 5009 RtlVerifyVersionInfo(
sca8er 2:5853bf44af9f 5010 /*IN*/ PRTL_OSVERSIONINFOEXW VersionInfo,
sca8er 2:5853bf44af9f 5011 /*IN*/ ULONG TypeMask,
sca8er 2:5853bf44af9f 5012 /*IN*/ ULONGLONG ConditionMask);
sca8er 2:5853bf44af9f 5013
sca8er 2:5853bf44af9f 5014 NTOSAPI
sca8er 2:5853bf44af9f 5015 NTSTATUS
sca8er 2:5853bf44af9f 5016 DDKAPI
sca8er 2:5853bf44af9f 5017 RtlVolumeDeviceToDosName(
sca8er 2:5853bf44af9f 5018 /*IN*/ PVOID VolumeDeviceObject,
sca8er 2:5853bf44af9f 5019 /*OUT*/ PUNICODE_STRING DosName);
sca8er 2:5853bf44af9f 5020
sca8er 2:5853bf44af9f 5021 NTOSAPI
sca8er 2:5853bf44af9f 5022 ULONG
sca8er 2:5853bf44af9f 5023 DDKAPI
sca8er 2:5853bf44af9f 5024 RtlWalkFrameChain(
sca8er 2:5853bf44af9f 5025 /*OUT*/ PVOID *Callers,
sca8er 2:5853bf44af9f 5026 /*IN*/ ULONG Count,
sca8er 2:5853bf44af9f 5027 /*IN*/ ULONG Flags);
sca8er 2:5853bf44af9f 5028
sca8er 2:5853bf44af9f 5029 NTOSAPI
sca8er 2:5853bf44af9f 5030 NTSTATUS
sca8er 2:5853bf44af9f 5031 DDKAPI
sca8er 2:5853bf44af9f 5032 RtlWriteRegistryValue(
sca8er 2:5853bf44af9f 5033 /*IN*/ ULONG RelativeTo,
sca8er 2:5853bf44af9f 5034 /*IN*/ PCWSTR Path,
sca8er 2:5853bf44af9f 5035 /*IN*/ PCWSTR ValueName,
sca8er 2:5853bf44af9f 5036 /*IN*/ ULONG ValueType,
sca8er 2:5853bf44af9f 5037 /*IN*/ PVOID ValueData,
sca8er 2:5853bf44af9f 5038 /*IN*/ ULONG ValueLength);
sca8er 2:5853bf44af9f 5039
sca8er 2:5853bf44af9f 5040 NTOSAPI
sca8er 2:5853bf44af9f 5041 ULONG
sca8er 2:5853bf44af9f 5042 DDKAPI
sca8er 2:5853bf44af9f 5043 RtlxUnicodeStringToAnsiSize(
sca8er 2:5853bf44af9f 5044 /*IN*/ PUNICODE_STRING UnicodeString);
sca8er 2:5853bf44af9f 5045
sca8er 2:5853bf44af9f 5046 /*
sca8er 2:5853bf44af9f 5047 * VOID
sca8er 2:5853bf44af9f 5048 * RtlZeroMemory(
sca8er 2:5853bf44af9f 5049 * IN VOID UNALIGNED *Destination,
sca8er 2:5853bf44af9f 5050 * IN SIZE_T Length)
sca8er 2:5853bf44af9f 5051 */
sca8er 2:5853bf44af9f 5052 #ifndef RtlZeroMemory
sca8er 2:5853bf44af9f 5053 #define RtlZeroMemory(Destination, Length) \
sca8er 2:5853bf44af9f 5054 memset(Destination, 0, Length)
sca8er 2:5853bf44af9f 5055 #endif
sca8er 2:5853bf44af9f 5056
sca8er 2:5853bf44af9f 5057 #ifndef RtlZeroBytes
sca8er 2:5853bf44af9f 5058 #define RtlZeroBytes RtlZeroMemory
sca8er 2:5853bf44af9f 5059 #endif
sca8er 2:5853bf44af9f 5060
sca8er 2:5853bf44af9f 5061
sca8er 2:5853bf44af9f 5062 /** Executive support routines **/
sca8er 2:5853bf44af9f 5063
sca8er 2:5853bf44af9f 5064 NTOSAPI
sca8er 2:5853bf44af9f 5065 VOID
sca8er 2:5853bf44af9f 5066 DDKFASTAPI
sca8er 2:5853bf44af9f 5067 ExAcquireFastMutex(
sca8er 2:5853bf44af9f 5068 /*IN*/ PFAST_MUTEX FastMutex);
sca8er 2:5853bf44af9f 5069
sca8er 2:5853bf44af9f 5070 NTOSAPI
sca8er 2:5853bf44af9f 5071 VOID
sca8er 2:5853bf44af9f 5072 DDKFASTAPI
sca8er 2:5853bf44af9f 5073 ExAcquireFastMutexUnsafe(
sca8er 2:5853bf44af9f 5074 /*IN*/ PFAST_MUTEX FastMutex);
sca8er 2:5853bf44af9f 5075
sca8er 2:5853bf44af9f 5076 NTOSAPI
sca8er 2:5853bf44af9f 5077 BOOLEAN
sca8er 2:5853bf44af9f 5078 DDKAPI
sca8er 2:5853bf44af9f 5079 ExAcquireResourceExclusiveLite(
sca8er 2:5853bf44af9f 5080 /*IN*/ PERESOURCE Resource,
sca8er 2:5853bf44af9f 5081 /*IN*/ BOOLEAN Wait);
sca8er 2:5853bf44af9f 5082
sca8er 2:5853bf44af9f 5083 NTOSAPI
sca8er 2:5853bf44af9f 5084 BOOLEAN
sca8er 2:5853bf44af9f 5085 DDKAPI
sca8er 2:5853bf44af9f 5086 ExAcquireResourceSharedLite(
sca8er 2:5853bf44af9f 5087 /*IN*/ PERESOURCE Resource,
sca8er 2:5853bf44af9f 5088 /*IN*/ BOOLEAN Wait);
sca8er 2:5853bf44af9f 5089
sca8er 2:5853bf44af9f 5090 NTOSAPI
sca8er 2:5853bf44af9f 5091 BOOLEAN
sca8er 2:5853bf44af9f 5092 DDKAPI
sca8er 2:5853bf44af9f 5093 ExAcquireSharedStarveExclusive(
sca8er 2:5853bf44af9f 5094 /*IN*/ PERESOURCE Resource,
sca8er 2:5853bf44af9f 5095 /*IN*/ BOOLEAN Wait);
sca8er 2:5853bf44af9f 5096
sca8er 2:5853bf44af9f 5097 NTOSAPI
sca8er 2:5853bf44af9f 5098 BOOLEAN
sca8er 2:5853bf44af9f 5099 DDKAPI
sca8er 2:5853bf44af9f 5100 ExAcquireSharedWaitForExclusive(
sca8er 2:5853bf44af9f 5101 /*IN*/ PERESOURCE Resource,
sca8er 2:5853bf44af9f 5102 /*IN*/ BOOLEAN Wait);
sca8er 2:5853bf44af9f 5103
sca8er 2:5853bf44af9f 5104
sca8er 2:5853bf44af9f 5105 NTOSAPI
sca8er 2:5853bf44af9f 5106 PSINGLE_LIST_ENTRY
sca8er 2:5853bf44af9f 5107 DDKFASTAPI
sca8er 2:5853bf44af9f 5108 ExInterlockedPopEntrySList(
sca8er 2:5853bf44af9f 5109 /*IN*/ PSLIST_HEADER ListHead,
sca8er 2:5853bf44af9f 5110 /*IN*/ PKSPIN_LOCK Lock);
sca8er 2:5853bf44af9f 5111
sca8er 2:5853bf44af9f 5112
sca8er 2:5853bf44af9f 5113 NTOSAPI
sca8er 2:5853bf44af9f 5114 PSINGLE_LIST_ENTRY
sca8er 2:5853bf44af9f 5115 DDKFASTAPI
sca8er 2:5853bf44af9f 5116 ExInterlockedPushEntrySList(
sca8er 2:5853bf44af9f 5117 /*IN*/ PSLIST_HEADER ListHead,
sca8er 2:5853bf44af9f 5118 /*IN*/ PSINGLE_LIST_ENTRY ListEntry,
sca8er 2:5853bf44af9f 5119 /*IN*/ PKSPIN_LOCK Lock);
sca8er 2:5853bf44af9f 5120
sca8er 2:5853bf44af9f 5121
sca8er 2:5853bf44af9f 5122 #if (__USE_NTOSKRNL__) && (_WIN32_WINNT >= 0x0501)
sca8er 2:5853bf44af9f 5123 #define ExInterlockedPopEntrySList(_ListHead, \
sca8er 2:5853bf44af9f 5124 _Lock) \
sca8er 2:5853bf44af9f 5125 InterlockedPopEntrySList(_ListHead)
sca8er 2:5853bf44af9f 5126
sca8er 2:5853bf44af9f 5127 #define ExInterlockedPushEntrySList(_ListHead, \
sca8er 2:5853bf44af9f 5128 _ListEntry, \
sca8er 2:5853bf44af9f 5129 _Lock) \
sca8er 2:5853bf44af9f 5130 InterlockedPushEntrySList(_ListHead, _ListEntry)
sca8er 2:5853bf44af9f 5131 #endif /* __USE_NTOSKRNL__ */
sca8er 2:5853bf44af9f 5132
sca8er 2:5853bf44af9f 5133 #define ExQueryDepthSList(ListHead) QueryDepthSList(ListHead)
sca8er 2:5853bf44af9f 5134
sca8er 2:5853bf44af9f 5135 static __inline PVOID
sca8er 2:5853bf44af9f 5136 ExAllocateFromNPagedLookasideList(
sca8er 2:5853bf44af9f 5137 /*IN*/ PNPAGED_LOOKASIDE_LIST Lookaside)
sca8er 2:5853bf44af9f 5138 {
sca8er 2:5853bf44af9f 5139 PVOID Entry;
sca8er 2:5853bf44af9f 5140
sca8er 2:5853bf44af9f 5141 Lookaside->TotalAllocates++;
sca8er 2:5853bf44af9f 5142 Entry = ExInterlockedPopEntrySList(&Lookaside->ListHead,
sca8er 2:5853bf44af9f 5143 &Lookaside->Obsoleted);
sca8er 2:5853bf44af9f 5144 if (Entry == NULL) {
sca8er 2:5853bf44af9f 5145 Lookaside->_DDK_DUMMYUNION_MEMBER(AllocateMisses)++;
sca8er 2:5853bf44af9f 5146 Entry = (Lookaside->Allocate)(Lookaside->Type,
sca8er 2:5853bf44af9f 5147 Lookaside->Size,
sca8er 2:5853bf44af9f 5148 Lookaside->Tag);
sca8er 2:5853bf44af9f 5149 }
sca8er 2:5853bf44af9f 5150 return Entry;
sca8er 2:5853bf44af9f 5151 }
sca8er 2:5853bf44af9f 5152
sca8er 2:5853bf44af9f 5153 static __inline VOID
sca8er 2:5853bf44af9f 5154 ExFreeToNPagedLookasideList(
sca8er 2:5853bf44af9f 5155 /*IN*/ PNPAGED_LOOKASIDE_LIST Lookaside,
sca8er 2:5853bf44af9f 5156 /*IN*/ PVOID Entry)
sca8er 2:5853bf44af9f 5157 {
sca8er 2:5853bf44af9f 5158 Lookaside->TotalFrees++;
sca8er 2:5853bf44af9f 5159 if (ExQueryDepthSList(&Lookaside->ListHead) >= Lookaside->Depth) {
sca8er 2:5853bf44af9f 5160 Lookaside->_DDK_DUMMYUNION_N_MEMBER(2,FreeMisses)++;
sca8er 2:5853bf44af9f 5161 (Lookaside->Free)(Entry);
sca8er 2:5853bf44af9f 5162 } else {
sca8er 2:5853bf44af9f 5163 ExInterlockedPushEntrySList(&Lookaside->ListHead,
sca8er 2:5853bf44af9f 5164 (PSLIST_ENTRY)Entry,
sca8er 2:5853bf44af9f 5165 &Lookaside->Obsoleted);
sca8er 2:5853bf44af9f 5166 }
sca8er 2:5853bf44af9f 5167 }
sca8er 2:5853bf44af9f 5168
sca8er 2:5853bf44af9f 5169 #if (__USE_NTOSKRNL__) && (_WIN32_WINNT >= 0x0501)
sca8er 2:5853bf44af9f 5170
sca8er 2:5853bf44af9f 5171 static __inline PVOID
sca8er 2:5853bf44af9f 5172 ExAllocateFromPagedLookasideList(
sca8er 2:5853bf44af9f 5173 /*IN*/ PPAGED_LOOKASIDE_LIST Lookaside)
sca8er 2:5853bf44af9f 5174 {
sca8er 2:5853bf44af9f 5175 PVOID Entry;
sca8er 2:5853bf44af9f 5176
sca8er 2:5853bf44af9f 5177 Lookaside->TotalAllocates++;
sca8er 2:5853bf44af9f 5178 Entry = InterlockedPopEntrySList(&Lookaside->ListHead);
sca8er 2:5853bf44af9f 5179 if (Entry == NULL) {
sca8er 2:5853bf44af9f 5180 Lookaside->_DDK_DUMMYUNION_MEMBER(AllocateMisses)++;
sca8er 2:5853bf44af9f 5181 Entry = (Lookaside->Allocate)(Lookaside->Type,
sca8er 2:5853bf44af9f 5182 Lookaside->Size,
sca8er 2:5853bf44af9f 5183 Lookaside->Tag);
sca8er 2:5853bf44af9f 5184 }
sca8er 2:5853bf44af9f 5185 return Entry;
sca8er 2:5853bf44af9f 5186 }
sca8er 2:5853bf44af9f 5187
sca8er 2:5853bf44af9f 5188 static __inline VOID
sca8er 2:5853bf44af9f 5189 ExFreeToPagedLookasideList(
sca8er 2:5853bf44af9f 5190 /*IN*/ PPAGED_LOOKASIDE_LIST Lookaside,
sca8er 2:5853bf44af9f 5191 /*IN*/ PVOID Entry)
sca8er 2:5853bf44af9f 5192 {
sca8er 2:5853bf44af9f 5193 Lookaside->TotalFrees++;
sca8er 2:5853bf44af9f 5194 if (ExQueryDepthSList(&Lookaside->ListHead) >= Lookaside->Depth) {
sca8er 2:5853bf44af9f 5195 Lookaside->_DDK_DUMMYUNION_N_MEMBER(2,FreeMisses)++;
sca8er 2:5853bf44af9f 5196 (Lookaside->Free)(Entry);
sca8er 2:5853bf44af9f 5197 } else {
sca8er 2:5853bf44af9f 5198 InterlockedPushEntrySList(&Lookaside->ListHead,
sca8er 2:5853bf44af9f 5199 (PSLIST_ENTRY)Entry);
sca8er 2:5853bf44af9f 5200 }
sca8er 2:5853bf44af9f 5201 }
sca8er 2:5853bf44af9f 5202
sca8er 2:5853bf44af9f 5203 #else /* (__USE_NTOSKRNL__) && (_WIN32_WINNT >= 0x0501) */
sca8er 2:5853bf44af9f 5204
sca8er 2:5853bf44af9f 5205 NTOSAPI
sca8er 2:5853bf44af9f 5206 PVOID
sca8er 2:5853bf44af9f 5207 DDKAPI
sca8er 2:5853bf44af9f 5208 ExAllocateFromPagedLookasideList(
sca8er 2:5853bf44af9f 5209 /*IN*/ PPAGED_LOOKASIDE_LIST Lookaside);
sca8er 2:5853bf44af9f 5210
sca8er 2:5853bf44af9f 5211 NTOSAPI
sca8er 2:5853bf44af9f 5212 VOID
sca8er 2:5853bf44af9f 5213 DDKAPI
sca8er 2:5853bf44af9f 5214 ExFreeToPagedLookasideList(
sca8er 2:5853bf44af9f 5215 /*IN*/ PPAGED_LOOKASIDE_LIST Lookaside,
sca8er 2:5853bf44af9f 5216 /*IN*/ PVOID Entry);
sca8er 2:5853bf44af9f 5217
sca8er 2:5853bf44af9f 5218 #endif /* (__USE_NTOSKRNL__) && (_WIN32_WINNT >= 0x0501) */
sca8er 2:5853bf44af9f 5219
sca8er 2:5853bf44af9f 5220 NTOSAPI
sca8er 2:5853bf44af9f 5221 PVOID
sca8er 2:5853bf44af9f 5222 DDKAPI
sca8er 2:5853bf44af9f 5223 ExAllocatePoolWithQuotaTag(
sca8er 2:5853bf44af9f 5224 /*IN*/ POOL_TYPE PoolType,
sca8er 2:5853bf44af9f 5225 /*IN*/ SIZE_T NumberOfBytes,
sca8er 2:5853bf44af9f 5226 /*IN*/ ULONG Tag);
sca8er 2:5853bf44af9f 5227
sca8er 2:5853bf44af9f 5228 NTOSAPI
sca8er 2:5853bf44af9f 5229 PVOID
sca8er 2:5853bf44af9f 5230 DDKAPI
sca8er 2:5853bf44af9f 5231 ExAllocatePoolWithTag(
sca8er 2:5853bf44af9f 5232 /*IN*/ POOL_TYPE PoolType,
sca8er 2:5853bf44af9f 5233 /*IN*/ SIZE_T NumberOfBytes,
sca8er 2:5853bf44af9f 5234 /*IN*/ ULONG Tag);
sca8er 2:5853bf44af9f 5235
sca8er 2:5853bf44af9f 5236 #ifdef POOL_TAGGING
sca8er 2:5853bf44af9f 5237
sca8er 2:5853bf44af9f 5238 #define ExAllocatePoolWithQuota(p,n) ExAllocatePoolWithQuotaTag(p,n,' kdD')
sca8er 2:5853bf44af9f 5239 #define ExAllocatePool(p,n) ExAllocatePoolWithTag(p,n,' kdD')
sca8er 2:5853bf44af9f 5240
sca8er 2:5853bf44af9f 5241 #else /* !POOL_TAGGING */
sca8er 2:5853bf44af9f 5242
sca8er 2:5853bf44af9f 5243 NTOSAPI
sca8er 2:5853bf44af9f 5244 PVOID
sca8er 2:5853bf44af9f 5245 DDKAPI
sca8er 2:5853bf44af9f 5246 ExAllocatePool(
sca8er 2:5853bf44af9f 5247 /*IN*/ POOL_TYPE PoolType,
sca8er 2:5853bf44af9f 5248 /*IN*/ SIZE_T NumberOfBytes);
sca8er 2:5853bf44af9f 5249
sca8er 2:5853bf44af9f 5250 NTOSAPI
sca8er 2:5853bf44af9f 5251 PVOID
sca8er 2:5853bf44af9f 5252 DDKAPI
sca8er 2:5853bf44af9f 5253 ExAllocatePoolWithQuota(
sca8er 2:5853bf44af9f 5254 /*IN*/ POOL_TYPE PoolType,
sca8er 2:5853bf44af9f 5255 /*IN*/ SIZE_T NumberOfBytes);
sca8er 2:5853bf44af9f 5256
sca8er 2:5853bf44af9f 5257 #endif /* POOL_TAGGING */
sca8er 2:5853bf44af9f 5258
sca8er 2:5853bf44af9f 5259 NTOSAPI
sca8er 2:5853bf44af9f 5260 PVOID
sca8er 2:5853bf44af9f 5261 DDKAPI
sca8er 2:5853bf44af9f 5262 ExAllocatePoolWithTagPriority(
sca8er 2:5853bf44af9f 5263 /*IN*/ POOL_TYPE PoolType,
sca8er 2:5853bf44af9f 5264 /*IN*/ SIZE_T NumberOfBytes,
sca8er 2:5853bf44af9f 5265 /*IN*/ ULONG Tag,
sca8er 2:5853bf44af9f 5266 /*IN*/ EX_POOL_PRIORITY Priority);
sca8er 2:5853bf44af9f 5267
sca8er 2:5853bf44af9f 5268 NTOSAPI
sca8er 2:5853bf44af9f 5269 VOID
sca8er 2:5853bf44af9f 5270 DDKAPI
sca8er 2:5853bf44af9f 5271 ExConvertExclusiveToSharedLite(
sca8er 2:5853bf44af9f 5272 /*IN*/ PERESOURCE Resource);
sca8er 2:5853bf44af9f 5273
sca8er 2:5853bf44af9f 5274 NTOSAPI
sca8er 2:5853bf44af9f 5275 NTSTATUS
sca8er 2:5853bf44af9f 5276 DDKAPI
sca8er 2:5853bf44af9f 5277 ExCreateCallback(
sca8er 2:5853bf44af9f 5278 /*OUT*/ PCALLBACK_OBJECT *CallbackObject,
sca8er 2:5853bf44af9f 5279 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes,
sca8er 2:5853bf44af9f 5280 /*IN*/ BOOLEAN Create,
sca8er 2:5853bf44af9f 5281 /*IN*/ BOOLEAN AllowMultipleCallbacks);
sca8er 2:5853bf44af9f 5282
sca8er 2:5853bf44af9f 5283 NTOSAPI
sca8er 2:5853bf44af9f 5284 VOID
sca8er 2:5853bf44af9f 5285 DDKAPI
sca8er 2:5853bf44af9f 5286 ExDeleteNPagedLookasideList(
sca8er 2:5853bf44af9f 5287 /*IN*/ PNPAGED_LOOKASIDE_LIST Lookaside);
sca8er 2:5853bf44af9f 5288
sca8er 2:5853bf44af9f 5289 NTOSAPI
sca8er 2:5853bf44af9f 5290 VOID
sca8er 2:5853bf44af9f 5291 DDKAPI
sca8er 2:5853bf44af9f 5292 ExDeletePagedLookasideList(
sca8er 2:5853bf44af9f 5293 /*IN*/ PPAGED_LOOKASIDE_LIST Lookaside);
sca8er 2:5853bf44af9f 5294
sca8er 2:5853bf44af9f 5295 NTOSAPI
sca8er 2:5853bf44af9f 5296 NTSTATUS
sca8er 2:5853bf44af9f 5297 DDKAPI
sca8er 2:5853bf44af9f 5298 ExDeleteResourceLite(
sca8er 2:5853bf44af9f 5299 /*IN*/ PERESOURCE Resource);
sca8er 2:5853bf44af9f 5300
sca8er 2:5853bf44af9f 5301 NTOSAPI
sca8er 2:5853bf44af9f 5302 VOID
sca8er 2:5853bf44af9f 5303 DDKAPI
sca8er 2:5853bf44af9f 5304 ExFreePool(
sca8er 2:5853bf44af9f 5305 /*IN*/ PVOID P);
sca8er 2:5853bf44af9f 5306
sca8er 2:5853bf44af9f 5307 #define PROTECTED_POOL 0x80000000
sca8er 2:5853bf44af9f 5308
sca8er 2:5853bf44af9f 5309 #ifdef POOL_TAGGING
sca8er 2:5853bf44af9f 5310 #define ExFreePool(P) ExFreePoolWithTag(P, 0)
sca8er 2:5853bf44af9f 5311 #endif
sca8er 2:5853bf44af9f 5312
sca8er 2:5853bf44af9f 5313 NTOSAPI
sca8er 2:5853bf44af9f 5314 VOID
sca8er 2:5853bf44af9f 5315 DDKAPI
sca8er 2:5853bf44af9f 5316 ExFreePoolWithTag(
sca8er 2:5853bf44af9f 5317 /*IN*/ PVOID P,
sca8er 2:5853bf44af9f 5318 /*IN*/ ULONG Tag);
sca8er 2:5853bf44af9f 5319
sca8er 2:5853bf44af9f 5320 /*
sca8er 2:5853bf44af9f 5321 * ERESOURCE_THREAD
sca8er 2:5853bf44af9f 5322 * ExGetCurrentResourceThread(
sca8er 2:5853bf44af9f 5323 * VOID);
sca8er 2:5853bf44af9f 5324 */
sca8er 2:5853bf44af9f 5325 #define ExGetCurrentResourceThread() ((ERESOURCE_THREAD) PsGetCurrentThread())
sca8er 2:5853bf44af9f 5326
sca8er 2:5853bf44af9f 5327 NTOSAPI
sca8er 2:5853bf44af9f 5328 ULONG
sca8er 2:5853bf44af9f 5329 DDKAPI
sca8er 2:5853bf44af9f 5330 ExGetExclusiveWaiterCount(
sca8er 2:5853bf44af9f 5331 /*IN*/ PERESOURCE Resource);
sca8er 2:5853bf44af9f 5332
sca8er 2:5853bf44af9f 5333 NTOSAPI
sca8er 2:5853bf44af9f 5334 KPROCESSOR_MODE
sca8er 2:5853bf44af9f 5335 DDKAPI
sca8er 2:5853bf44af9f 5336 ExGetPreviousMode(
sca8er 2:5853bf44af9f 5337 VOID);
sca8er 2:5853bf44af9f 5338
sca8er 2:5853bf44af9f 5339 NTOSAPI
sca8er 2:5853bf44af9f 5340 ULONG
sca8er 2:5853bf44af9f 5341 DDKAPI
sca8er 2:5853bf44af9f 5342 ExGetSharedWaiterCount(
sca8er 2:5853bf44af9f 5343 /*IN*/ PERESOURCE Resource);
sca8er 2:5853bf44af9f 5344
sca8er 2:5853bf44af9f 5345 NTOSAPI
sca8er 2:5853bf44af9f 5346 VOID
sca8er 2:5853bf44af9f 5347 DDKAPI
sca8er 2:5853bf44af9f 5348 KeInitializeEvent(
sca8er 2:5853bf44af9f 5349 /*IN*/ PRKEVENT Event,
sca8er 2:5853bf44af9f 5350 /*IN*/ EVENT_TYPE Type,
sca8er 2:5853bf44af9f 5351 /*IN*/ BOOLEAN State);
sca8er 2:5853bf44af9f 5352
sca8er 2:5853bf44af9f 5353 /*
sca8er 2:5853bf44af9f 5354 * VOID DDKAPI
sca8er 2:5853bf44af9f 5355 * ExInitializeFastMutex(
sca8er 2:5853bf44af9f 5356 * IN PFAST_MUTEX FastMutex)
sca8er 2:5853bf44af9f 5357 */
sca8er 2:5853bf44af9f 5358 #define ExInitializeFastMutex(_FastMutex) \
sca8er 2:5853bf44af9f 5359 { \
sca8er 2:5853bf44af9f 5360 (_FastMutex)->Count = 1; \
sca8er 2:5853bf44af9f 5361 (_FastMutex)->Owner = NULL; \
sca8er 2:5853bf44af9f 5362 (_FastMutex)->Contention = 0; \
sca8er 2:5853bf44af9f 5363 KeInitializeEvent(&(_FastMutex)->Event, SynchronizationEvent, FALSE); \
sca8er 2:5853bf44af9f 5364 }
sca8er 2:5853bf44af9f 5365
sca8er 2:5853bf44af9f 5366 NTOSAPI
sca8er 2:5853bf44af9f 5367 VOID
sca8er 2:5853bf44af9f 5368 DDKAPI
sca8er 2:5853bf44af9f 5369 ExInitializeNPagedLookasideList(
sca8er 2:5853bf44af9f 5370 /*IN*/ PNPAGED_LOOKASIDE_LIST Lookaside,
sca8er 2:5853bf44af9f 5371 /*IN*/ PALLOCATE_FUNCTION Allocate /*OPTIONAL*/,
sca8er 2:5853bf44af9f 5372 /*IN*/ PFREE_FUNCTION Free /*OPTIONAL*/,
sca8er 2:5853bf44af9f 5373 /*IN*/ ULONG Flags,
sca8er 2:5853bf44af9f 5374 /*IN*/ SIZE_T Size,
sca8er 2:5853bf44af9f 5375 /*IN*/ ULONG Tag,
sca8er 2:5853bf44af9f 5376 /*IN*/ USHORT Depth);
sca8er 2:5853bf44af9f 5377
sca8er 2:5853bf44af9f 5378 NTOSAPI
sca8er 2:5853bf44af9f 5379 VOID
sca8er 2:5853bf44af9f 5380 DDKAPI
sca8er 2:5853bf44af9f 5381 ExInitializePagedLookasideList(
sca8er 2:5853bf44af9f 5382 /*IN*/ PPAGED_LOOKASIDE_LIST Lookaside,
sca8er 2:5853bf44af9f 5383 /*IN*/ PALLOCATE_FUNCTION Allocate /*OPTIONAL*/,
sca8er 2:5853bf44af9f 5384 /*IN*/ PFREE_FUNCTION Free /*OPTIONAL*/,
sca8er 2:5853bf44af9f 5385 /*IN*/ ULONG Flags,
sca8er 2:5853bf44af9f 5386 /*IN*/ SIZE_T Size,
sca8er 2:5853bf44af9f 5387 /*IN*/ ULONG Tag,
sca8er 2:5853bf44af9f 5388 /*IN*/ USHORT Depth);
sca8er 2:5853bf44af9f 5389
sca8er 2:5853bf44af9f 5390 NTOSAPI
sca8er 2:5853bf44af9f 5391 NTSTATUS
sca8er 2:5853bf44af9f 5392 DDKAPI
sca8er 2:5853bf44af9f 5393 ExInitializeResourceLite(
sca8er 2:5853bf44af9f 5394 /*IN*/ PERESOURCE Resource);
sca8er 2:5853bf44af9f 5395
sca8er 2:5853bf44af9f 5396 /*
sca8er 2:5853bf44af9f 5397 * VOID
sca8er 2:5853bf44af9f 5398 * InitializeSListHead(
sca8er 2:5853bf44af9f 5399 * IN PSLIST_HEADER SListHead)
sca8er 2:5853bf44af9f 5400 */
sca8er 2:5853bf44af9f 5401 #define InitializeSListHead(_SListHead) \
sca8er 2:5853bf44af9f 5402 (_SListHead)->Alignment = 0
sca8er 2:5853bf44af9f 5403
sca8er 2:5853bf44af9f 5404 #define ExInitializeSListHead InitializeSListHead
sca8er 2:5853bf44af9f 5405
sca8er 2:5853bf44af9f 5406 NTOSAPI
sca8er 2:5853bf44af9f 5407 LARGE_INTEGER
sca8er 2:5853bf44af9f 5408 DDKAPI
sca8er 2:5853bf44af9f 5409 ExInterlockedAddLargeInteger(
sca8er 2:5853bf44af9f 5410 /*IN*/ PLARGE_INTEGER Addend,
sca8er 2:5853bf44af9f 5411 /*IN*/ LARGE_INTEGER Increment,
sca8er 2:5853bf44af9f 5412 /*IN*/ PKSPIN_LOCK Lock);
sca8er 2:5853bf44af9f 5413
sca8er 2:5853bf44af9f 5414 NTOSAPI
sca8er 2:5853bf44af9f 5415 VOID
sca8er 2:5853bf44af9f 5416 DDKFASTAPI
sca8er 2:5853bf44af9f 5417 ExInterlockedAddLargeStatistic(
sca8er 2:5853bf44af9f 5418 /*IN*/ PLARGE_INTEGER Addend,
sca8er 2:5853bf44af9f 5419 /*IN*/ ULONG Increment);
sca8er 2:5853bf44af9f 5420
sca8er 2:5853bf44af9f 5421 NTOSAPI
sca8er 2:5853bf44af9f 5422 ULONG
sca8er 2:5853bf44af9f 5423 DDKAPI
sca8er 2:5853bf44af9f 5424 ExInterlockedAddUlong(
sca8er 2:5853bf44af9f 5425 /*IN*/ PULONG Addend,
sca8er 2:5853bf44af9f 5426 /*IN*/ ULONG Increment,
sca8er 2:5853bf44af9f 5427 PKSPIN_LOCK Lock);
sca8er 2:5853bf44af9f 5428
sca8er 2:5853bf44af9f 5429 NTOSAPI
sca8er 2:5853bf44af9f 5430 ULONG
sca8er 2:5853bf44af9f 5431 DDKFASTAPI
sca8er 2:5853bf44af9f 5432 ExfInterlockedAddUlong(
sca8er 2:5853bf44af9f 5433 /*IN*/ PULONG Addend,
sca8er 2:5853bf44af9f 5434 /*IN*/ ULONG Increment,
sca8er 2:5853bf44af9f 5435 PKSPIN_LOCK Lock);
sca8er 2:5853bf44af9f 5436
sca8er 2:5853bf44af9f 5437
sca8er 2:5853bf44af9f 5438 NTOSAPI
sca8er 2:5853bf44af9f 5439 LONGLONG
sca8er 2:5853bf44af9f 5440 DDKFASTAPI
sca8er 2:5853bf44af9f 5441 ExInterlockedCompareExchange64(
sca8er 2:5853bf44af9f 5442 /*IN OUT*/ PLONGLONG Destination,
sca8er 2:5853bf44af9f 5443 /*IN*/ PLONGLONG Exchange,
sca8er 2:5853bf44af9f 5444 /*IN*/ PLONGLONG Comparand,
sca8er 2:5853bf44af9f 5445 /*IN*/ PKSPIN_LOCK Lock);
sca8er 2:5853bf44af9f 5446
sca8er 2:5853bf44af9f 5447 NTOSAPI
sca8er 2:5853bf44af9f 5448 PSINGLE_LIST_ENTRY
sca8er 2:5853bf44af9f 5449 DDKFASTAPI
sca8er 2:5853bf44af9f 5450 ExInterlockedFlushSList(
sca8er 2:5853bf44af9f 5451 /*IN*/ PSLIST_HEADER ListHead);
sca8er 2:5853bf44af9f 5452
sca8er 2:5853bf44af9f 5453 NTOSAPI
sca8er 2:5853bf44af9f 5454 PLIST_ENTRY
sca8er 2:5853bf44af9f 5455 DDKAPI
sca8er 2:5853bf44af9f 5456 ExInterlockedInsertHeadList(
sca8er 2:5853bf44af9f 5457 /*IN*/ PLIST_ENTRY ListHead,
sca8er 2:5853bf44af9f 5458 /*IN*/ PLIST_ENTRY ListEntry,
sca8er 2:5853bf44af9f 5459 /*IN*/ PKSPIN_LOCK Lock);
sca8er 2:5853bf44af9f 5460
sca8er 2:5853bf44af9f 5461 NTOSAPI
sca8er 2:5853bf44af9f 5462 PLIST_ENTRY
sca8er 2:5853bf44af9f 5463 DDKFASTAPI
sca8er 2:5853bf44af9f 5464 ExfInterlockedInsertHeadList(
sca8er 2:5853bf44af9f 5465 /*IN*/ PLIST_ENTRY ListHead,
sca8er 2:5853bf44af9f 5466 /*IN*/ PLIST_ENTRY ListEntry,
sca8er 2:5853bf44af9f 5467 /*IN*/ PKSPIN_LOCK Lock);
sca8er 2:5853bf44af9f 5468
sca8er 2:5853bf44af9f 5469 NTOSAPI
sca8er 2:5853bf44af9f 5470 PLIST_ENTRY
sca8er 2:5853bf44af9f 5471 DDKAPI
sca8er 2:5853bf44af9f 5472 ExInterlockedInsertTailList(
sca8er 2:5853bf44af9f 5473 /*IN*/ PLIST_ENTRY ListHead,
sca8er 2:5853bf44af9f 5474 /*IN*/ PLIST_ENTRY ListEntry,
sca8er 2:5853bf44af9f 5475 /*IN*/ PKSPIN_LOCK Lock);
sca8er 2:5853bf44af9f 5476
sca8er 2:5853bf44af9f 5477 NTOSAPI
sca8er 2:5853bf44af9f 5478 PLIST_ENTRY
sca8er 2:5853bf44af9f 5479 DDKFASTAPI
sca8er 2:5853bf44af9f 5480 ExfInterlockedInsertTailList(
sca8er 2:5853bf44af9f 5481 /*IN*/ PLIST_ENTRY ListHead,
sca8er 2:5853bf44af9f 5482 /*IN*/ PLIST_ENTRY ListEntry,
sca8er 2:5853bf44af9f 5483 /*IN*/ PKSPIN_LOCK Lock);
sca8er 2:5853bf44af9f 5484
sca8er 2:5853bf44af9f 5485 NTOSAPI
sca8er 2:5853bf44af9f 5486 PSINGLE_LIST_ENTRY
sca8er 2:5853bf44af9f 5487 DDKAPI
sca8er 2:5853bf44af9f 5488 ExInterlockedPopEntryList(
sca8er 2:5853bf44af9f 5489 /*IN*/ PSINGLE_LIST_ENTRY ListHead,
sca8er 2:5853bf44af9f 5490 /*IN*/ PKSPIN_LOCK Lock);
sca8er 2:5853bf44af9f 5491
sca8er 2:5853bf44af9f 5492 NTOSAPI
sca8er 2:5853bf44af9f 5493 PSINGLE_LIST_ENTRY
sca8er 2:5853bf44af9f 5494 DDKFASTAPI
sca8er 2:5853bf44af9f 5495 ExfInterlockedPopEntryList(
sca8er 2:5853bf44af9f 5496 /*IN*/ PSINGLE_LIST_ENTRY ListHead,
sca8er 2:5853bf44af9f 5497 /*IN*/ PKSPIN_LOCK Lock);
sca8er 2:5853bf44af9f 5498
sca8er 2:5853bf44af9f 5499
sca8er 2:5853bf44af9f 5500 NTOSAPI
sca8er 2:5853bf44af9f 5501 PSINGLE_LIST_ENTRY
sca8er 2:5853bf44af9f 5502 DDKAPI
sca8er 2:5853bf44af9f 5503 ExInterlockedPushEntryList(
sca8er 2:5853bf44af9f 5504 /*IN*/ PSINGLE_LIST_ENTRY ListHead,
sca8er 2:5853bf44af9f 5505 /*IN*/ PSINGLE_LIST_ENTRY ListEntry,
sca8er 2:5853bf44af9f 5506 /*IN*/ PKSPIN_LOCK Lock);
sca8er 2:5853bf44af9f 5507
sca8er 2:5853bf44af9f 5508 NTOSAPI
sca8er 2:5853bf44af9f 5509 PSINGLE_LIST_ENTRY
sca8er 2:5853bf44af9f 5510 DDKFASTAPI
sca8er 2:5853bf44af9f 5511 ExfInterlockedPushEntryList(
sca8er 2:5853bf44af9f 5512 /*IN*/ PSINGLE_LIST_ENTRY ListHead,
sca8er 2:5853bf44af9f 5513 /*IN*/ PSINGLE_LIST_ENTRY ListEntry,
sca8er 2:5853bf44af9f 5514 /*IN*/ PKSPIN_LOCK Lock);
sca8er 2:5853bf44af9f 5515
sca8er 2:5853bf44af9f 5516
sca8er 2:5853bf44af9f 5517 NTOSAPI
sca8er 2:5853bf44af9f 5518 PLIST_ENTRY
sca8er 2:5853bf44af9f 5519 DDKAPI
sca8er 2:5853bf44af9f 5520 ExInterlockedRemoveHeadList(
sca8er 2:5853bf44af9f 5521 /*IN*/ PLIST_ENTRY ListHead,
sca8er 2:5853bf44af9f 5522 /*IN*/ PKSPIN_LOCK Lock);
sca8er 2:5853bf44af9f 5523
sca8er 2:5853bf44af9f 5524 NTOSAPI
sca8er 2:5853bf44af9f 5525 PLIST_ENTRY
sca8er 2:5853bf44af9f 5526 DDKFASTAPI
sca8er 2:5853bf44af9f 5527 ExfInterlockedRemoveHeadList(
sca8er 2:5853bf44af9f 5528 /*IN*/ PLIST_ENTRY ListHead,
sca8er 2:5853bf44af9f 5529 /*IN*/ PKSPIN_LOCK Lock);
sca8er 2:5853bf44af9f 5530
sca8er 2:5853bf44af9f 5531
sca8er 2:5853bf44af9f 5532 NTOSAPI
sca8er 2:5853bf44af9f 5533 BOOLEAN
sca8er 2:5853bf44af9f 5534 DDKAPI
sca8er 2:5853bf44af9f 5535 ExIsProcessorFeaturePresent(
sca8er 2:5853bf44af9f 5536 /*IN*/ ULONG ProcessorFeature);
sca8er 2:5853bf44af9f 5537
sca8er 2:5853bf44af9f 5538 NTOSAPI
sca8er 2:5853bf44af9f 5539 BOOLEAN
sca8er 2:5853bf44af9f 5540 DDKAPI
sca8er 2:5853bf44af9f 5541 ExIsResourceAcquiredExclusiveLite(
sca8er 2:5853bf44af9f 5542 /*IN*/ PERESOURCE Resource);
sca8er 2:5853bf44af9f 5543
sca8er 2:5853bf44af9f 5544 NTOSAPI
sca8er 2:5853bf44af9f 5545 USHORT
sca8er 2:5853bf44af9f 5546 DDKAPI
sca8er 2:5853bf44af9f 5547 ExIsResourceAcquiredLite(
sca8er 2:5853bf44af9f 5548 /*IN*/ PERESOURCE Resource);
sca8er 2:5853bf44af9f 5549
sca8er 2:5853bf44af9f 5550 NTOSAPI
sca8er 2:5853bf44af9f 5551 USHORT
sca8er 2:5853bf44af9f 5552 DDKAPI
sca8er 2:5853bf44af9f 5553 ExIsResourceAcquiredSharedLite(
sca8er 2:5853bf44af9f 5554 /*IN*/ PERESOURCE Resource);
sca8er 2:5853bf44af9f 5555
sca8er 2:5853bf44af9f 5556 NTOSAPI
sca8er 2:5853bf44af9f 5557 VOID
sca8er 2:5853bf44af9f 5558 DDKAPI
sca8er 2:5853bf44af9f 5559 ExLocalTimeToSystemTime(
sca8er 2:5853bf44af9f 5560 /*IN*/ PLARGE_INTEGER LocalTime,
sca8er 2:5853bf44af9f 5561 /*OUT*/ PLARGE_INTEGER SystemTime);
sca8er 2:5853bf44af9f 5562
sca8er 2:5853bf44af9f 5563 NTOSAPI
sca8er 2:5853bf44af9f 5564 VOID
sca8er 2:5853bf44af9f 5565 DDKAPI
sca8er 2:5853bf44af9f 5566 ExNotifyCallback(
sca8er 2:5853bf44af9f 5567 /*IN*/ PCALLBACK_OBJECT CallbackObject,
sca8er 2:5853bf44af9f 5568 /*IN*/ PVOID Argument1,
sca8er 2:5853bf44af9f 5569 /*IN*/ PVOID Argument2);
sca8er 2:5853bf44af9f 5570
sca8er 2:5853bf44af9f 5571 NTOSAPI
sca8er 2:5853bf44af9f 5572 VOID
sca8er 2:5853bf44af9f 5573 DDKAPI
sca8er 2:5853bf44af9f 5574 ExRaiseAccessViolation(
sca8er 2:5853bf44af9f 5575 VOID);
sca8er 2:5853bf44af9f 5576
sca8er 2:5853bf44af9f 5577 NTOSAPI
sca8er 2:5853bf44af9f 5578 VOID
sca8er 2:5853bf44af9f 5579 DDKAPI
sca8er 2:5853bf44af9f 5580 ExRaiseDatatypeMisalignment(
sca8er 2:5853bf44af9f 5581 VOID);
sca8er 2:5853bf44af9f 5582
sca8er 2:5853bf44af9f 5583 NTOSAPI
sca8er 2:5853bf44af9f 5584 VOID
sca8er 2:5853bf44af9f 5585 DDKAPI
sca8er 2:5853bf44af9f 5586 ExRaiseStatus(
sca8er 2:5853bf44af9f 5587 /*IN*/ NTSTATUS Status);
sca8er 2:5853bf44af9f 5588
sca8er 2:5853bf44af9f 5589 NTOSAPI
sca8er 2:5853bf44af9f 5590 PVOID
sca8er 2:5853bf44af9f 5591 DDKAPI
sca8er 2:5853bf44af9f 5592 ExRegisterCallback(
sca8er 2:5853bf44af9f 5593 /*IN*/ PCALLBACK_OBJECT CallbackObject,
sca8er 2:5853bf44af9f 5594 /*IN*/ PCALLBACK_FUNCTION CallbackFunction,
sca8er 2:5853bf44af9f 5595 /*IN*/ PVOID CallbackContext);
sca8er 2:5853bf44af9f 5596
sca8er 2:5853bf44af9f 5597 NTOSAPI
sca8er 2:5853bf44af9f 5598 VOID
sca8er 2:5853bf44af9f 5599 DDKAPI
sca8er 2:5853bf44af9f 5600 ExReinitializeResourceLite(
sca8er 2:5853bf44af9f 5601 /*IN*/ PERESOURCE Resource);
sca8er 2:5853bf44af9f 5602
sca8er 2:5853bf44af9f 5603 NTOSAPI
sca8er 2:5853bf44af9f 5604 VOID
sca8er 2:5853bf44af9f 5605 DDKFASTAPI
sca8er 2:5853bf44af9f 5606 ExReleaseFastMutex(
sca8er 2:5853bf44af9f 5607 /*IN*/ PFAST_MUTEX FastMutex);
sca8er 2:5853bf44af9f 5608
sca8er 2:5853bf44af9f 5609 NTOSAPI
sca8er 2:5853bf44af9f 5610 VOID
sca8er 2:5853bf44af9f 5611 DDKFASTAPI
sca8er 2:5853bf44af9f 5612 ExReleaseFastMutexUnsafe(
sca8er 2:5853bf44af9f 5613 /*IN*/ PFAST_MUTEX FastMutex);
sca8er 2:5853bf44af9f 5614
sca8er 2:5853bf44af9f 5615 NTOSAPI
sca8er 2:5853bf44af9f 5616 VOID
sca8er 2:5853bf44af9f 5617 DDKAPI
sca8er 2:5853bf44af9f 5618 ExReleaseResourceForThreadLite(
sca8er 2:5853bf44af9f 5619 /*IN*/ PERESOURCE Resource,
sca8er 2:5853bf44af9f 5620 /*IN*/ ERESOURCE_THREAD ResourceThreadId);
sca8er 2:5853bf44af9f 5621
sca8er 2:5853bf44af9f 5622 NTOSAPI
sca8er 2:5853bf44af9f 5623 VOID
sca8er 2:5853bf44af9f 5624 DDKFASTAPI
sca8er 2:5853bf44af9f 5625 ExReleaseResourceLite(
sca8er 2:5853bf44af9f 5626 /*IN*/ PERESOURCE Resource);
sca8er 2:5853bf44af9f 5627
sca8er 2:5853bf44af9f 5628 NTOSAPI
sca8er 2:5853bf44af9f 5629 VOID
sca8er 2:5853bf44af9f 5630 DDKAPI
sca8er 2:5853bf44af9f 5631 ExSetResourceOwnerPointer(
sca8er 2:5853bf44af9f 5632 /*IN*/ PERESOURCE Resource,
sca8er 2:5853bf44af9f 5633 /*IN*/ PVOID OwnerPointer);
sca8er 2:5853bf44af9f 5634
sca8er 2:5853bf44af9f 5635 NTOSAPI
sca8er 2:5853bf44af9f 5636 ULONG
sca8er 2:5853bf44af9f 5637 DDKAPI
sca8er 2:5853bf44af9f 5638 ExSetTimerResolution(
sca8er 2:5853bf44af9f 5639 /*IN*/ ULONG DesiredTime,
sca8er 2:5853bf44af9f 5640 /*IN*/ BOOLEAN SetResolution);
sca8er 2:5853bf44af9f 5641
sca8er 2:5853bf44af9f 5642 NTOSAPI
sca8er 2:5853bf44af9f 5643 VOID
sca8er 2:5853bf44af9f 5644 DDKAPI
sca8er 2:5853bf44af9f 5645 ExSystemTimeToLocalTime(
sca8er 2:5853bf44af9f 5646 /*IN*/ PLARGE_INTEGER SystemTime,
sca8er 2:5853bf44af9f 5647 /*OUT*/ PLARGE_INTEGER LocalTime);
sca8er 2:5853bf44af9f 5648
sca8er 2:5853bf44af9f 5649 NTOSAPI
sca8er 2:5853bf44af9f 5650 BOOLEAN
sca8er 2:5853bf44af9f 5651 DDKFASTAPI
sca8er 2:5853bf44af9f 5652 ExTryToAcquireFastMutex(
sca8er 2:5853bf44af9f 5653 /*IN*/ PFAST_MUTEX FastMutex);
sca8er 2:5853bf44af9f 5654
sca8er 2:5853bf44af9f 5655 NTOSAPI
sca8er 2:5853bf44af9f 5656 BOOLEAN
sca8er 2:5853bf44af9f 5657 DDKAPI
sca8er 2:5853bf44af9f 5658 ExTryToAcquireResourceExclusiveLite(
sca8er 2:5853bf44af9f 5659 /*IN*/ PERESOURCE Resource);
sca8er 2:5853bf44af9f 5660
sca8er 2:5853bf44af9f 5661 NTOSAPI
sca8er 2:5853bf44af9f 5662 VOID
sca8er 2:5853bf44af9f 5663 DDKAPI
sca8er 2:5853bf44af9f 5664 ExUnregisterCallback(
sca8er 2:5853bf44af9f 5665 /*IN*/ PVOID CbRegistration);
sca8er 2:5853bf44af9f 5666
sca8er 2:5853bf44af9f 5667 NTOSAPI
sca8er 2:5853bf44af9f 5668 NTSTATUS
sca8er 2:5853bf44af9f 5669 DDKAPI
sca8er 2:5853bf44af9f 5670 ExUuidCreate(
sca8er 2:5853bf44af9f 5671 /*OUT*/ UUID *Uuid);
sca8er 2:5853bf44af9f 5672
sca8er 2:5853bf44af9f 5673 NTOSAPI
sca8er 2:5853bf44af9f 5674 BOOLEAN
sca8er 2:5853bf44af9f 5675 DDKAPI
sca8er 2:5853bf44af9f 5676 ExVerifySuite(
sca8er 2:5853bf44af9f 5677 /*IN*/ SUITE_TYPE SuiteType);
sca8er 2:5853bf44af9f 5678
sca8er 2:5853bf44af9f 5679 #ifdef DBG
sca8er 2:5853bf44af9f 5680
sca8er 2:5853bf44af9f 5681 #define PAGED_CODE() { \
sca8er 2:5853bf44af9f 5682 if (KeGetCurrentIrql() > APC_LEVEL) { \
sca8er 2:5853bf44af9f 5683 KdPrint( ("NTDDK: Pageable code called at IRQL > APC_LEVEL (%d)\n", KeGetCurrentIrql() )); \
sca8er 2:5853bf44af9f 5684 ASSERT(FALSE); \
sca8er 2:5853bf44af9f 5685 } \
sca8er 2:5853bf44af9f 5686 }
sca8er 2:5853bf44af9f 5687
sca8er 2:5853bf44af9f 5688 #else
sca8er 2:5853bf44af9f 5689
sca8er 2:5853bf44af9f 5690 #define PAGED_CODE()
sca8er 2:5853bf44af9f 5691
sca8er 2:5853bf44af9f 5692 #endif
sca8er 2:5853bf44af9f 5693
sca8er 2:5853bf44af9f 5694 NTOSAPI
sca8er 2:5853bf44af9f 5695 VOID
sca8er 2:5853bf44af9f 5696 DDKAPI
sca8er 2:5853bf44af9f 5697 ProbeForRead(
sca8er 2:5853bf44af9f 5698 /*IN*/ CONST VOID *Address,
sca8er 2:5853bf44af9f 5699 /*IN*/ ULONG Length,
sca8er 2:5853bf44af9f 5700 /*IN*/ ULONG Alignment);
sca8er 2:5853bf44af9f 5701
sca8er 2:5853bf44af9f 5702 NTOSAPI
sca8er 2:5853bf44af9f 5703 VOID
sca8er 2:5853bf44af9f 5704 DDKAPI
sca8er 2:5853bf44af9f 5705 ProbeForWrite(
sca8er 2:5853bf44af9f 5706 /*IN*/ CONST VOID *Address,
sca8er 2:5853bf44af9f 5707 /*IN*/ ULONG Length,
sca8er 2:5853bf44af9f 5708 /*IN*/ ULONG Alignment);
sca8er 2:5853bf44af9f 5709
sca8er 2:5853bf44af9f 5710
sca8er 2:5853bf44af9f 5711
sca8er 2:5853bf44af9f 5712 /** Configuration manager routines **/
sca8er 2:5853bf44af9f 5713
sca8er 2:5853bf44af9f 5714 NTOSAPI
sca8er 2:5853bf44af9f 5715 NTSTATUS
sca8er 2:5853bf44af9f 5716 DDKAPI
sca8er 2:5853bf44af9f 5717 CmRegisterCallback(
sca8er 2:5853bf44af9f 5718 /*IN*/ PEX_CALLBACK_FUNCTION Function,
sca8er 2:5853bf44af9f 5719 /*IN*/ PVOID Context,
sca8er 2:5853bf44af9f 5720 /*IN OUT*/ PLARGE_INTEGER Cookie);
sca8er 2:5853bf44af9f 5721
sca8er 2:5853bf44af9f 5722 NTOSAPI
sca8er 2:5853bf44af9f 5723 NTSTATUS
sca8er 2:5853bf44af9f 5724 DDKAPI
sca8er 2:5853bf44af9f 5725 CmUnRegisterCallback(
sca8er 2:5853bf44af9f 5726 /*IN*/ LARGE_INTEGER Cookie);
sca8er 2:5853bf44af9f 5727
sca8er 2:5853bf44af9f 5728
sca8er 2:5853bf44af9f 5729
sca8er 2:5853bf44af9f 5730 /** Filesystem runtime library routines **/
sca8er 2:5853bf44af9f 5731
sca8er 2:5853bf44af9f 5732 NTOSAPI
sca8er 2:5853bf44af9f 5733 BOOLEAN
sca8er 2:5853bf44af9f 5734 DDKAPI
sca8er 2:5853bf44af9f 5735 FsRtlIsTotalDeviceFailure(
sca8er 2:5853bf44af9f 5736 /*IN*/ NTSTATUS Status);
sca8er 2:5853bf44af9f 5737
sca8er 2:5853bf44af9f 5738
sca8er 2:5853bf44af9f 5739
sca8er 2:5853bf44af9f 5740 /** Hardware abstraction layer routines **/
sca8er 2:5853bf44af9f 5741
sca8er 2:5853bf44af9f 5742 NTOSAPI
sca8er 2:5853bf44af9f 5743 VOID
sca8er 2:5853bf44af9f 5744 DDKFASTAPI
sca8er 2:5853bf44af9f 5745 HalExamineMBR(
sca8er 2:5853bf44af9f 5746 /*IN*/ PDEVICE_OBJECT DeviceObject,
sca8er 2:5853bf44af9f 5747 /*IN*/ ULONG SectorSize,
sca8er 2:5853bf44af9f 5748 /*IN*/ ULONG MBRTypeIdentifier,
sca8er 2:5853bf44af9f 5749 /*OUT*/ PVOID Buffer);
sca8er 2:5853bf44af9f 5750
sca8er 2:5853bf44af9f 5751 NTOSAPI
sca8er 2:5853bf44af9f 5752 VOID
sca8er 2:5853bf44af9f 5753 DDKAPI
sca8er 2:5853bf44af9f 5754 READ_PORT_BUFFER_UCHAR(
sca8er 2:5853bf44af9f 5755 /*IN*/ PUCHAR Port,
sca8er 2:5853bf44af9f 5756 /*IN*/ PUCHAR Buffer,
sca8er 2:5853bf44af9f 5757 /*IN*/ ULONG Count);
sca8er 2:5853bf44af9f 5758
sca8er 2:5853bf44af9f 5759 NTOSAPI
sca8er 2:5853bf44af9f 5760 VOID
sca8er 2:5853bf44af9f 5761 DDKAPI
sca8er 2:5853bf44af9f 5762 READ_PORT_BUFFER_ULONG(
sca8er 2:5853bf44af9f 5763 /*IN*/ PULONG Port,
sca8er 2:5853bf44af9f 5764 /*IN*/ PULONG Buffer,
sca8er 2:5853bf44af9f 5765 /*IN*/ ULONG Count);
sca8er 2:5853bf44af9f 5766
sca8er 2:5853bf44af9f 5767 NTOSAPI
sca8er 2:5853bf44af9f 5768 VOID
sca8er 2:5853bf44af9f 5769 DDKAPI
sca8er 2:5853bf44af9f 5770 READ_PORT_BUFFER_USHORT(
sca8er 2:5853bf44af9f 5771 /*IN*/ PUSHORT Port,
sca8er 2:5853bf44af9f 5772 /*IN*/ PUSHORT Buffer,
sca8er 2:5853bf44af9f 5773 /*IN*/ ULONG Count);
sca8er 2:5853bf44af9f 5774
sca8er 2:5853bf44af9f 5775 NTOSAPI
sca8er 2:5853bf44af9f 5776 UCHAR
sca8er 2:5853bf44af9f 5777 DDKAPI
sca8er 2:5853bf44af9f 5778 READ_PORT_UCHAR(
sca8er 2:5853bf44af9f 5779 /*IN*/ PUCHAR Port);
sca8er 2:5853bf44af9f 5780
sca8er 2:5853bf44af9f 5781 NTOSAPI
sca8er 2:5853bf44af9f 5782 ULONG
sca8er 2:5853bf44af9f 5783 DDKAPI
sca8er 2:5853bf44af9f 5784 READ_PORT_ULONG(
sca8er 2:5853bf44af9f 5785 /*IN*/ PULONG Port);
sca8er 2:5853bf44af9f 5786
sca8er 2:5853bf44af9f 5787 NTOSAPI
sca8er 2:5853bf44af9f 5788 USHORT
sca8er 2:5853bf44af9f 5789 DDKAPI
sca8er 2:5853bf44af9f 5790 READ_PORT_USHORT(
sca8er 2:5853bf44af9f 5791 /*IN*/ PUSHORT Port);
sca8er 2:5853bf44af9f 5792
sca8er 2:5853bf44af9f 5793 NTOSAPI
sca8er 2:5853bf44af9f 5794 VOID
sca8er 2:5853bf44af9f 5795 DDKAPI
sca8er 2:5853bf44af9f 5796 READ_REGISTER_BUFFER_UCHAR(
sca8er 2:5853bf44af9f 5797 /*IN*/ PUCHAR Register,
sca8er 2:5853bf44af9f 5798 /*IN*/ PUCHAR Buffer,
sca8er 2:5853bf44af9f 5799 /*IN*/ ULONG Count);
sca8er 2:5853bf44af9f 5800
sca8er 2:5853bf44af9f 5801 NTOSAPI
sca8er 2:5853bf44af9f 5802 VOID
sca8er 2:5853bf44af9f 5803 DDKAPI
sca8er 2:5853bf44af9f 5804 READ_REGISTER_BUFFER_ULONG(
sca8er 2:5853bf44af9f 5805 /*IN*/ PULONG Register,
sca8er 2:5853bf44af9f 5806 /*IN*/ PULONG Buffer,
sca8er 2:5853bf44af9f 5807 /*IN*/ ULONG Count);
sca8er 2:5853bf44af9f 5808
sca8er 2:5853bf44af9f 5809 NTOSAPI
sca8er 2:5853bf44af9f 5810 VOID
sca8er 2:5853bf44af9f 5811 DDKAPI
sca8er 2:5853bf44af9f 5812 READ_REGISTER_BUFFER_USHORT(
sca8er 2:5853bf44af9f 5813 /*IN*/ PUSHORT Register,
sca8er 2:5853bf44af9f 5814 /*IN*/ PUSHORT Buffer,
sca8er 2:5853bf44af9f 5815 /*IN*/ ULONG Count);
sca8er 2:5853bf44af9f 5816
sca8er 2:5853bf44af9f 5817 NTOSAPI
sca8er 2:5853bf44af9f 5818 UCHAR
sca8er 2:5853bf44af9f 5819 DDKAPI
sca8er 2:5853bf44af9f 5820 READ_REGISTER_UCHAR(
sca8er 2:5853bf44af9f 5821 /*IN*/ PUCHAR Register);
sca8er 2:5853bf44af9f 5822
sca8er 2:5853bf44af9f 5823 NTOSAPI
sca8er 2:5853bf44af9f 5824 ULONG
sca8er 2:5853bf44af9f 5825 DDKAPI
sca8er 2:5853bf44af9f 5826 READ_REGISTER_ULONG(
sca8er 2:5853bf44af9f 5827 /*IN*/ PULONG Register);
sca8er 2:5853bf44af9f 5828
sca8er 2:5853bf44af9f 5829 NTOSAPI
sca8er 2:5853bf44af9f 5830 USHORT
sca8er 2:5853bf44af9f 5831 DDKAPI
sca8er 2:5853bf44af9f 5832 READ_REGISTER_USHORT(
sca8er 2:5853bf44af9f 5833 /*IN*/ PUSHORT Register);
sca8er 2:5853bf44af9f 5834
sca8er 2:5853bf44af9f 5835 NTOSAPI
sca8er 2:5853bf44af9f 5836 VOID
sca8er 2:5853bf44af9f 5837 DDKAPI
sca8er 2:5853bf44af9f 5838 WRITE_PORT_BUFFER_UCHAR(
sca8er 2:5853bf44af9f 5839 /*IN*/ PUCHAR Port,
sca8er 2:5853bf44af9f 5840 /*IN*/ PUCHAR Buffer,
sca8er 2:5853bf44af9f 5841 /*IN*/ ULONG Count);
sca8er 2:5853bf44af9f 5842
sca8er 2:5853bf44af9f 5843 NTOSAPI
sca8er 2:5853bf44af9f 5844 VOID
sca8er 2:5853bf44af9f 5845 DDKAPI
sca8er 2:5853bf44af9f 5846 WRITE_PORT_BUFFER_ULONG(
sca8er 2:5853bf44af9f 5847 /*IN*/ PULONG Port,
sca8er 2:5853bf44af9f 5848 /*IN*/ PULONG Buffer,
sca8er 2:5853bf44af9f 5849 /*IN*/ ULONG Count);
sca8er 2:5853bf44af9f 5850
sca8er 2:5853bf44af9f 5851 NTOSAPI
sca8er 2:5853bf44af9f 5852 VOID
sca8er 2:5853bf44af9f 5853 DDKAPI
sca8er 2:5853bf44af9f 5854 WRITE_PORT_BUFFER_USHORT(
sca8er 2:5853bf44af9f 5855 /*IN*/ PUSHORT Port,
sca8er 2:5853bf44af9f 5856 /*IN*/ PUSHORT Buffer,
sca8er 2:5853bf44af9f 5857 /*IN*/ ULONG Count);
sca8er 2:5853bf44af9f 5858
sca8er 2:5853bf44af9f 5859 NTOSAPI
sca8er 2:5853bf44af9f 5860 VOID
sca8er 2:5853bf44af9f 5861 DDKAPI
sca8er 2:5853bf44af9f 5862 WRITE_PORT_UCHAR(
sca8er 2:5853bf44af9f 5863 /*IN*/ PUCHAR Port,
sca8er 2:5853bf44af9f 5864 /*IN*/ UCHAR Value);
sca8er 2:5853bf44af9f 5865
sca8er 2:5853bf44af9f 5866 NTOSAPI
sca8er 2:5853bf44af9f 5867 VOID
sca8er 2:5853bf44af9f 5868 DDKAPI
sca8er 2:5853bf44af9f 5869 WRITE_PORT_ULONG(
sca8er 2:5853bf44af9f 5870 /*IN*/ PULONG Port,
sca8er 2:5853bf44af9f 5871 /*IN*/ ULONG Value);
sca8er 2:5853bf44af9f 5872
sca8er 2:5853bf44af9f 5873 NTOSAPI
sca8er 2:5853bf44af9f 5874 VOID
sca8er 2:5853bf44af9f 5875 DDKAPI
sca8er 2:5853bf44af9f 5876 WRITE_PORT_USHORT(
sca8er 2:5853bf44af9f 5877 /*IN*/ PUSHORT Port,
sca8er 2:5853bf44af9f 5878 /*IN*/ USHORT Value);
sca8er 2:5853bf44af9f 5879
sca8er 2:5853bf44af9f 5880 NTOSAPI
sca8er 2:5853bf44af9f 5881 VOID
sca8er 2:5853bf44af9f 5882 DDKAPI
sca8er 2:5853bf44af9f 5883 WRITE_REGISTER_BUFFER_UCHAR(
sca8er 2:5853bf44af9f 5884 /*IN*/ PUCHAR Register,
sca8er 2:5853bf44af9f 5885 /*IN*/ PUCHAR Buffer,
sca8er 2:5853bf44af9f 5886 /*IN*/ ULONG Count);
sca8er 2:5853bf44af9f 5887
sca8er 2:5853bf44af9f 5888 NTOSAPI
sca8er 2:5853bf44af9f 5889 VOID
sca8er 2:5853bf44af9f 5890 DDKAPI
sca8er 2:5853bf44af9f 5891 WRITE_REGISTER_BUFFER_ULONG(
sca8er 2:5853bf44af9f 5892 /*IN*/ PULONG Register,
sca8er 2:5853bf44af9f 5893 /*IN*/ PULONG Buffer,
sca8er 2:5853bf44af9f 5894 /*IN*/ ULONG Count);
sca8er 2:5853bf44af9f 5895
sca8er 2:5853bf44af9f 5896 NTOSAPI
sca8er 2:5853bf44af9f 5897 VOID
sca8er 2:5853bf44af9f 5898 DDKAPI
sca8er 2:5853bf44af9f 5899 WRITE_REGISTER_BUFFER_USHORT(
sca8er 2:5853bf44af9f 5900 /*IN*/ PUSHORT Register,
sca8er 2:5853bf44af9f 5901 /*IN*/ PUSHORT Buffer,
sca8er 2:5853bf44af9f 5902 /*IN*/ ULONG Count);
sca8er 2:5853bf44af9f 5903
sca8er 2:5853bf44af9f 5904 NTOSAPI
sca8er 2:5853bf44af9f 5905 VOID
sca8er 2:5853bf44af9f 5906 DDKAPI
sca8er 2:5853bf44af9f 5907 WRITE_REGISTER_UCHAR(
sca8er 2:5853bf44af9f 5908 /*IN*/ PUCHAR Register,
sca8er 2:5853bf44af9f 5909 /*IN*/ UCHAR Value);
sca8er 2:5853bf44af9f 5910
sca8er 2:5853bf44af9f 5911 NTOSAPI
sca8er 2:5853bf44af9f 5912 VOID
sca8er 2:5853bf44af9f 5913 DDKAPI
sca8er 2:5853bf44af9f 5914 WRITE_REGISTER_ULONG(
sca8er 2:5853bf44af9f 5915 /*IN*/ PULONG Register,
sca8er 2:5853bf44af9f 5916 /*IN*/ ULONG Value);
sca8er 2:5853bf44af9f 5917
sca8er 2:5853bf44af9f 5918 NTOSAPI
sca8er 2:5853bf44af9f 5919 VOID
sca8er 2:5853bf44af9f 5920 DDKAPI
sca8er 2:5853bf44af9f 5921 WRITE_REGISTER_USHORT(
sca8er 2:5853bf44af9f 5922 /*IN*/ PUSHORT Register,
sca8er 2:5853bf44af9f 5923 /*IN*/ USHORT Value);
sca8er 2:5853bf44af9f 5924
sca8er 2:5853bf44af9f 5925 /** I/O manager routines **/
sca8er 2:5853bf44af9f 5926
sca8er 2:5853bf44af9f 5927 NTOSAPI
sca8er 2:5853bf44af9f 5928 VOID
sca8er 2:5853bf44af9f 5929 DDKAPI
sca8er 2:5853bf44af9f 5930 IoAcquireCancelSpinLock(
sca8er 2:5853bf44af9f 5931 /*OUT*/ PKIRQL Irql);
sca8er 2:5853bf44af9f 5932
sca8er 2:5853bf44af9f 5933 NTOSAPI
sca8er 2:5853bf44af9f 5934 NTSTATUS
sca8er 2:5853bf44af9f 5935 DDKAPI
sca8er 2:5853bf44af9f 5936 IoAcquireRemoveLockEx(
sca8er 2:5853bf44af9f 5937 /*IN*/ PIO_REMOVE_LOCK RemoveLock,
sca8er 2:5853bf44af9f 5938 /*IN*/ PVOID Tag /*OPTIONAL*/,
sca8er 2:5853bf44af9f 5939 /*IN*/ PCSTR File,
sca8er 2:5853bf44af9f 5940 /*IN*/ ULONG Line,
sca8er 2:5853bf44af9f 5941 /*IN*/ ULONG RemlockSize);
sca8er 2:5853bf44af9f 5942
sca8er 2:5853bf44af9f 5943 /*
sca8er 2:5853bf44af9f 5944 * NTSTATUS
sca8er 2:5853bf44af9f 5945 * IoAcquireRemoveLock(
sca8er 2:5853bf44af9f 5946 * IN PIO_REMOVE_LOCK RemoveLock,
sca8er 2:5853bf44af9f 5947 * IN PVOID Tag OPTIONAL)
sca8er 2:5853bf44af9f 5948 */
sca8er 2:5853bf44af9f 5949 #define IoAcquireRemoveLock(_RemoveLock, \
sca8er 2:5853bf44af9f 5950 _Tag) \
sca8er 2:5853bf44af9f 5951 IoAcquireRemoveLockEx(_RemoveLock, _Tag, __FILE__, __LINE__, sizeof(IO_REMOVE_LOCK))
sca8er 2:5853bf44af9f 5952
sca8er 2:5853bf44af9f 5953 /*
sca8er 2:5853bf44af9f 5954 * VOID
sca8er 2:5853bf44af9f 5955 * IoAdjustPagingPathCount(
sca8er 2:5853bf44af9f 5956 * IN PLONG Count,
sca8er 2:5853bf44af9f 5957 * IN BOOLEAN Increment)
sca8er 2:5853bf44af9f 5958 */
sca8er 2:5853bf44af9f 5959 #define IoAdjustPagingPathCount(_Count, \
sca8er 2:5853bf44af9f 5960 _Increment) \
sca8er 2:5853bf44af9f 5961 { \
sca8er 2:5853bf44af9f 5962 if (_Increment) \
sca8er 2:5853bf44af9f 5963 { \
sca8er 2:5853bf44af9f 5964 InterlockedIncrement(_Count); \
sca8er 2:5853bf44af9f 5965 } \
sca8er 2:5853bf44af9f 5966 else \
sca8er 2:5853bf44af9f 5967 { \
sca8er 2:5853bf44af9f 5968 InterlockedDecrement(_Count); \
sca8er 2:5853bf44af9f 5969 } \
sca8er 2:5853bf44af9f 5970 }
sca8er 2:5853bf44af9f 5971
sca8er 2:5853bf44af9f 5972 NTOSAPI
sca8er 2:5853bf44af9f 5973 VOID
sca8er 2:5853bf44af9f 5974 DDKAPI
sca8er 2:5853bf44af9f 5975 IoAllocateController(
sca8er 2:5853bf44af9f 5976 /*IN*/ PCONTROLLER_OBJECT ControllerObject,
sca8er 2:5853bf44af9f 5977 /*IN*/ PDEVICE_OBJECT DeviceObject,
sca8er 2:5853bf44af9f 5978 /*IN*/ PDRIVER_CONTROL ExecutionRoutine,
sca8er 2:5853bf44af9f 5979 /*IN*/ PVOID Context);
sca8er 2:5853bf44af9f 5980
sca8er 2:5853bf44af9f 5981 NTOSAPI
sca8er 2:5853bf44af9f 5982 NTSTATUS
sca8er 2:5853bf44af9f 5983 DDKAPI
sca8er 2:5853bf44af9f 5984 IoAllocateDriverObjectExtension(
sca8er 2:5853bf44af9f 5985 /*IN*/ PDRIVER_OBJECT DriverObject,
sca8er 2:5853bf44af9f 5986 /*IN*/ PVOID ClientIdentificationAddress,
sca8er 2:5853bf44af9f 5987 /*IN*/ ULONG DriverObjectExtensionSize,
sca8er 2:5853bf44af9f 5988 /*OUT*/ PVOID *DriverObjectExtension);
sca8er 2:5853bf44af9f 5989
sca8er 2:5853bf44af9f 5990 typedef struct _IO_ERROR_LOG_PACKET {
sca8er 2:5853bf44af9f 5991 UCHAR MajorFunctionCode;
sca8er 2:5853bf44af9f 5992 UCHAR RetryCount;
sca8er 2:5853bf44af9f 5993 USHORT DumpDataSize;
sca8er 2:5853bf44af9f 5994 USHORT NumberOfStrings;
sca8er 2:5853bf44af9f 5995 USHORT StringOffset;
sca8er 2:5853bf44af9f 5996 USHORT EventCategory;
sca8er 2:5853bf44af9f 5997 NTSTATUS ErrorCode;
sca8er 2:5853bf44af9f 5998 ULONG UniqueErrorValue;
sca8er 2:5853bf44af9f 5999 NTSTATUS FinalStatus;
sca8er 2:5853bf44af9f 6000 ULONG SequenceNumber;
sca8er 2:5853bf44af9f 6001 ULONG IoControlCode;
sca8er 2:5853bf44af9f 6002 LARGE_INTEGER DeviceOffset;
sca8er 2:5853bf44af9f 6003 ULONG DumpData[1];
sca8er 2:5853bf44af9f 6004 } IO_ERROR_LOG_PACKET, *PIO_ERROR_LOG_PACKET;
sca8er 2:5853bf44af9f 6005
sca8er 2:5853bf44af9f 6006 NTOSAPI
sca8er 2:5853bf44af9f 6007 PVOID
sca8er 2:5853bf44af9f 6008 DDKAPI
sca8er 2:5853bf44af9f 6009 IoAllocateErrorLogEntry(
sca8er 2:5853bf44af9f 6010 /*IN*/ PVOID IoObject,
sca8er 2:5853bf44af9f 6011 /*IN*/ UCHAR EntrySize);
sca8er 2:5853bf44af9f 6012
sca8er 2:5853bf44af9f 6013 NTOSAPI
sca8er 2:5853bf44af9f 6014 PIRP
sca8er 2:5853bf44af9f 6015 DDKAPI
sca8er 2:5853bf44af9f 6016 IoAllocateIrp(
sca8er 2:5853bf44af9f 6017 /*IN*/ CCHAR StackSize,
sca8er 2:5853bf44af9f 6018 /*IN*/ BOOLEAN ChargeQuota);
sca8er 2:5853bf44af9f 6019
sca8er 2:5853bf44af9f 6020 NTOSAPI
sca8er 2:5853bf44af9f 6021 PMDL
sca8er 2:5853bf44af9f 6022 DDKAPI
sca8er 2:5853bf44af9f 6023 IoAllocateMdl(
sca8er 2:5853bf44af9f 6024 /*IN*/ PVOID VirtualAddress,
sca8er 2:5853bf44af9f 6025 /*IN*/ ULONG Length,
sca8er 2:5853bf44af9f 6026 /*IN*/ BOOLEAN SecondaryBuffer,
sca8er 2:5853bf44af9f 6027 /*IN*/ BOOLEAN ChargeQuota,
sca8er 2:5853bf44af9f 6028 /*IN OUT*/ PIRP Irp /*OPTIONAL*/);
sca8er 2:5853bf44af9f 6029
sca8er 2:5853bf44af9f 6030 NTOSAPI
sca8er 2:5853bf44af9f 6031 PIO_WORKITEM
sca8er 2:5853bf44af9f 6032 DDKAPI
sca8er 2:5853bf44af9f 6033 IoAllocateWorkItem(
sca8er 2:5853bf44af9f 6034 /*IN*/ PDEVICE_OBJECT DeviceObject);
sca8er 2:5853bf44af9f 6035
sca8er 2:5853bf44af9f 6036 /*
sca8er 2:5853bf44af9f 6037 * VOID IoAssignArcName(
sca8er 2:5853bf44af9f 6038 * IN PUNICODE_STRING ArcName,
sca8er 2:5853bf44af9f 6039 * IN PUNICODE_STRING DeviceName);
sca8er 2:5853bf44af9f 6040 */
sca8er 2:5853bf44af9f 6041 #define IoAssignArcName(_ArcName, _DeviceName) ( \
sca8er 2:5853bf44af9f 6042 IoCreateSymbolicLink((_ArcName), (_DeviceName)))
sca8er 2:5853bf44af9f 6043
sca8er 2:5853bf44af9f 6044 NTOSAPI
sca8er 2:5853bf44af9f 6045 NTSTATUS
sca8er 2:5853bf44af9f 6046 DDKAPI
sca8er 2:5853bf44af9f 6047 IoAttachDevice(
sca8er 2:5853bf44af9f 6048 /*IN*/ PDEVICE_OBJECT SourceDevice,
sca8er 2:5853bf44af9f 6049 /*IN*/ PUNICODE_STRING TargetDevice,
sca8er 2:5853bf44af9f 6050 /*OUT*/ PDEVICE_OBJECT *AttachedDevice);
sca8er 2:5853bf44af9f 6051
sca8er 2:5853bf44af9f 6052 NTOSAPI
sca8er 2:5853bf44af9f 6053 PDEVICE_OBJECT
sca8er 2:5853bf44af9f 6054 DDKAPI
sca8er 2:5853bf44af9f 6055 IoAttachDeviceToDeviceStack(
sca8er 2:5853bf44af9f 6056 /*IN*/ PDEVICE_OBJECT SourceDevice,
sca8er 2:5853bf44af9f 6057 /*IN*/ PDEVICE_OBJECT TargetDevice);
sca8er 2:5853bf44af9f 6058
sca8er 2:5853bf44af9f 6059 NTOSAPI
sca8er 2:5853bf44af9f 6060 PIRP
sca8er 2:5853bf44af9f 6061 DDKAPI
sca8er 2:5853bf44af9f 6062 IoBuildAsynchronousFsdRequest(
sca8er 2:5853bf44af9f 6063 /*IN*/ ULONG MajorFunction,
sca8er 2:5853bf44af9f 6064 /*IN*/ PDEVICE_OBJECT DeviceObject,
sca8er 2:5853bf44af9f 6065 /*IN OUT*/ PVOID Buffer /*OPTIONAL*/,
sca8er 2:5853bf44af9f 6066 /*IN*/ ULONG Length /*OPTIONAL*/,
sca8er 2:5853bf44af9f 6067 /*IN*/ PLARGE_INTEGER StartingOffset /*OPTIONAL*/,
sca8er 2:5853bf44af9f 6068 /*IN*/ PIO_STATUS_BLOCK IoStatusBlock /*OPTIONAL*/);
sca8er 2:5853bf44af9f 6069
sca8er 2:5853bf44af9f 6070 NTOSAPI
sca8er 2:5853bf44af9f 6071 PIRP
sca8er 2:5853bf44af9f 6072 DDKAPI
sca8er 2:5853bf44af9f 6073 IoBuildDeviceIoControlRequest(
sca8er 2:5853bf44af9f 6074 /*IN*/ ULONG IoControlCode,
sca8er 2:5853bf44af9f 6075 /*IN*/ PDEVICE_OBJECT DeviceObject,
sca8er 2:5853bf44af9f 6076 /*IN*/ PVOID InputBuffer /*OPTIONAL*/,
sca8er 2:5853bf44af9f 6077 /*IN*/ ULONG InputBufferLength,
sca8er 2:5853bf44af9f 6078 /*OUT*/ PVOID OutputBuffer /*OPTIONAL*/,
sca8er 2:5853bf44af9f 6079 /*IN*/ ULONG OutputBufferLength,
sca8er 2:5853bf44af9f 6080 /*IN*/ BOOLEAN InternalDeviceIoControl,
sca8er 2:5853bf44af9f 6081 /*IN*/ PKEVENT Event,
sca8er 2:5853bf44af9f 6082 /*OUT*/ PIO_STATUS_BLOCK IoStatusBlock);
sca8er 2:5853bf44af9f 6083
sca8er 2:5853bf44af9f 6084 NTOSAPI
sca8er 2:5853bf44af9f 6085 VOID
sca8er 2:5853bf44af9f 6086 DDKAPI
sca8er 2:5853bf44af9f 6087 IoBuildPartialMdl(
sca8er 2:5853bf44af9f 6088 /*IN*/ PMDL SourceMdl,
sca8er 2:5853bf44af9f 6089 /*IN OUT*/ PMDL TargetMdl,
sca8er 2:5853bf44af9f 6090 /*IN*/ PVOID VirtualAddress,
sca8er 2:5853bf44af9f 6091 /*IN*/ ULONG Length);
sca8er 2:5853bf44af9f 6092
sca8er 2:5853bf44af9f 6093 NTOSAPI
sca8er 2:5853bf44af9f 6094 PIRP
sca8er 2:5853bf44af9f 6095 DDKAPI
sca8er 2:5853bf44af9f 6096 IoBuildSynchronousFsdRequest(
sca8er 2:5853bf44af9f 6097 /*IN*/ ULONG MajorFunction,
sca8er 2:5853bf44af9f 6098 /*IN*/ PDEVICE_OBJECT DeviceObject,
sca8er 2:5853bf44af9f 6099 /*IN OUT*/ PVOID Buffer /*OPTIONAL*/,
sca8er 2:5853bf44af9f 6100 /*IN*/ ULONG Length /*OPTIONAL*/,
sca8er 2:5853bf44af9f 6101 /*IN*/ PLARGE_INTEGER StartingOffset /*OPTIONAL*/,
sca8er 2:5853bf44af9f 6102 /*IN*/ PKEVENT Event,
sca8er 2:5853bf44af9f 6103 /*OUT*/ PIO_STATUS_BLOCK IoStatusBlock);
sca8er 2:5853bf44af9f 6104
sca8er 2:5853bf44af9f 6105 NTOSAPI
sca8er 2:5853bf44af9f 6106 NTSTATUS
sca8er 2:5853bf44af9f 6107 DDKFASTAPI
sca8er 2:5853bf44af9f 6108 IofCallDriver(
sca8er 2:5853bf44af9f 6109 /*IN*/ PDEVICE_OBJECT DeviceObject,
sca8er 2:5853bf44af9f 6110 /*IN OUT*/ PIRP Irp);
sca8er 2:5853bf44af9f 6111
sca8er 2:5853bf44af9f 6112 /*
sca8er 2:5853bf44af9f 6113 * NTSTATUS
sca8er 2:5853bf44af9f 6114 * IoCallDriver(
sca8er 2:5853bf44af9f 6115 * IN PDEVICE_OBJECT DeviceObject,
sca8er 2:5853bf44af9f 6116 * IN OUT PIRP Irp)
sca8er 2:5853bf44af9f 6117 */
sca8er 2:5853bf44af9f 6118 #define IoCallDriver IofCallDriver
sca8er 2:5853bf44af9f 6119
sca8er 2:5853bf44af9f 6120 NTOSAPI
sca8er 2:5853bf44af9f 6121 VOID
sca8er 2:5853bf44af9f 6122 DDKAPI
sca8er 2:5853bf44af9f 6123 IoCancelFileOpen(
sca8er 2:5853bf44af9f 6124 /*IN*/ PDEVICE_OBJECT DeviceObject,
sca8er 2:5853bf44af9f 6125 /*IN*/ PFILE_OBJECT FileObject);
sca8er 2:5853bf44af9f 6126
sca8er 2:5853bf44af9f 6127 NTOSAPI
sca8er 2:5853bf44af9f 6128 BOOLEAN
sca8er 2:5853bf44af9f 6129 DDKAPI
sca8er 2:5853bf44af9f 6130 IoCancelIrp(
sca8er 2:5853bf44af9f 6131 /*IN*/ PIRP Irp);
sca8er 2:5853bf44af9f 6132
sca8er 2:5853bf44af9f 6133 NTOSAPI
sca8er 2:5853bf44af9f 6134 NTSTATUS
sca8er 2:5853bf44af9f 6135 DDKAPI
sca8er 2:5853bf44af9f 6136 IoCheckShareAccess(
sca8er 2:5853bf44af9f 6137 /*IN*/ ACCESS_MASK DesiredAccess,
sca8er 2:5853bf44af9f 6138 /*IN*/ ULONG DesiredShareAccess,
sca8er 2:5853bf44af9f 6139 /*IN OUT*/ PFILE_OBJECT FileObject,
sca8er 2:5853bf44af9f 6140 /*IN OUT*/ PSHARE_ACCESS ShareAccess,
sca8er 2:5853bf44af9f 6141 /*IN*/ BOOLEAN Update);
sca8er 2:5853bf44af9f 6142
sca8er 2:5853bf44af9f 6143 NTOSAPI
sca8er 2:5853bf44af9f 6144 VOID
sca8er 2:5853bf44af9f 6145 DDKFASTAPI
sca8er 2:5853bf44af9f 6146 IofCompleteRequest(
sca8er 2:5853bf44af9f 6147 /*IN*/ PIRP Irp,
sca8er 2:5853bf44af9f 6148 /*IN*/ CCHAR PriorityBoost);
sca8er 2:5853bf44af9f 6149
sca8er 2:5853bf44af9f 6150 /*
sca8er 2:5853bf44af9f 6151 * VOID
sca8er 2:5853bf44af9f 6152 * IoCompleteRequest(
sca8er 2:5853bf44af9f 6153 * IN PIRP Irp,
sca8er 2:5853bf44af9f 6154 * IN CCHAR PriorityBoost)
sca8er 2:5853bf44af9f 6155 */
sca8er 2:5853bf44af9f 6156 #define IoCompleteRequest IofCompleteRequest
sca8er 2:5853bf44af9f 6157
sca8er 2:5853bf44af9f 6158 NTOSAPI
sca8er 2:5853bf44af9f 6159 NTSTATUS
sca8er 2:5853bf44af9f 6160 DDKAPI
sca8er 2:5853bf44af9f 6161 IoConnectInterrupt(
sca8er 2:5853bf44af9f 6162 /*OUT*/ PKINTERRUPT *InterruptObject,
sca8er 2:5853bf44af9f 6163 /*IN*/ PKSERVICE_ROUTINE ServiceRoutine,
sca8er 2:5853bf44af9f 6164 /*IN*/ PVOID ServiceContext,
sca8er 2:5853bf44af9f 6165 /*IN*/ PKSPIN_LOCK SpinLock /*OPTIONAL*/,
sca8er 2:5853bf44af9f 6166 /*IN*/ ULONG Vector,
sca8er 2:5853bf44af9f 6167 /*IN*/ KIRQL Irql,
sca8er 2:5853bf44af9f 6168 /*IN*/ KIRQL SynchronizeIrql,
sca8er 2:5853bf44af9f 6169 /*IN*/ KINTERRUPT_MODE InterruptMode,
sca8er 2:5853bf44af9f 6170 /*IN*/ BOOLEAN ShareVector,
sca8er 2:5853bf44af9f 6171 /*IN*/ KAFFINITY ProcessorEnableMask,
sca8er 2:5853bf44af9f 6172 /*IN*/ BOOLEAN FloatingSave);
sca8er 2:5853bf44af9f 6173
sca8er 2:5853bf44af9f 6174 /*
sca8er 2:5853bf44af9f 6175 * PIO_STACK_LOCATION
sca8er 2:5853bf44af9f 6176 * IoGetCurrentIrpStackLocation(
sca8er 2:5853bf44af9f 6177 * IN PIRP Irp)
sca8er 2:5853bf44af9f 6178 */
sca8er 2:5853bf44af9f 6179 #define IoGetCurrentIrpStackLocation(_Irp) \
sca8er 2:5853bf44af9f 6180 ((_Irp)->Tail.Overlay.CurrentStackLocation)
sca8er 2:5853bf44af9f 6181
sca8er 2:5853bf44af9f 6182 /*
sca8er 2:5853bf44af9f 6183 * PIO_STACK_LOCATION
sca8er 2:5853bf44af9f 6184 * IoGetNextIrpStackLocation(
sca8er 2:5853bf44af9f 6185 * IN PIRP Irp)
sca8er 2:5853bf44af9f 6186 */
sca8er 2:5853bf44af9f 6187 #define IoGetNextIrpStackLocation(_Irp) \
sca8er 2:5853bf44af9f 6188 ((_Irp)->Tail.Overlay.CurrentStackLocation - 1)
sca8er 2:5853bf44af9f 6189
sca8er 2:5853bf44af9f 6190 /*
sca8er 2:5853bf44af9f 6191 * VOID
sca8er 2:5853bf44af9f 6192 * IoCopyCurrentIrpStackLocationToNext(
sca8er 2:5853bf44af9f 6193 * IN PIRP Irp)
sca8er 2:5853bf44af9f 6194 */
sca8er 2:5853bf44af9f 6195 #define IoCopyCurrentIrpStackLocationToNext(_Irp) \
sca8er 2:5853bf44af9f 6196 { \
sca8er 2:5853bf44af9f 6197 PIO_STACK_LOCATION _IrpSp; \
sca8er 2:5853bf44af9f 6198 PIO_STACK_LOCATION _NextIrpSp; \
sca8er 2:5853bf44af9f 6199 _IrpSp = IoGetCurrentIrpStackLocation(_Irp); \
sca8er 2:5853bf44af9f 6200 _NextIrpSp = IoGetNextIrpStackLocation(_Irp); \
sca8er 2:5853bf44af9f 6201 RtlCopyMemory(_NextIrpSp, _IrpSp, \
sca8er 2:5853bf44af9f 6202 FIELD_OFFSET(IO_STACK_LOCATION, CompletionRoutine)); \
sca8er 2:5853bf44af9f 6203 _NextIrpSp->Control = 0; \
sca8er 2:5853bf44af9f 6204 }
sca8er 2:5853bf44af9f 6205
sca8er 2:5853bf44af9f 6206 NTOSAPI
sca8er 2:5853bf44af9f 6207 PCONTROLLER_OBJECT
sca8er 2:5853bf44af9f 6208 DDKAPI
sca8er 2:5853bf44af9f 6209 IoCreateController(
sca8er 2:5853bf44af9f 6210 /*IN*/ ULONG Size);
sca8er 2:5853bf44af9f 6211
sca8er 2:5853bf44af9f 6212 NTOSAPI
sca8er 2:5853bf44af9f 6213 NTSTATUS
sca8er 2:5853bf44af9f 6214 DDKAPI
sca8er 2:5853bf44af9f 6215 IoCreateDevice(
sca8er 2:5853bf44af9f 6216 /*IN*/ PDRIVER_OBJECT DriverObject,
sca8er 2:5853bf44af9f 6217 /*IN*/ ULONG DeviceExtensionSize,
sca8er 2:5853bf44af9f 6218 /*IN*/ PUNICODE_STRING DeviceName /*OPTIONAL*/,
sca8er 2:5853bf44af9f 6219 /*IN*/ DEVICE_TYPE DeviceType,
sca8er 2:5853bf44af9f 6220 /*IN*/ ULONG DeviceCharacteristics,
sca8er 2:5853bf44af9f 6221 /*IN*/ BOOLEAN Exclusive,
sca8er 2:5853bf44af9f 6222 /*OUT*/ PDEVICE_OBJECT *DeviceObject);
sca8er 2:5853bf44af9f 6223
sca8er 2:5853bf44af9f 6224 NTOSAPI
sca8er 2:5853bf44af9f 6225 NTSTATUS
sca8er 2:5853bf44af9f 6226 DDKAPI
sca8er 2:5853bf44af9f 6227 IoCreateDisk(
sca8er 2:5853bf44af9f 6228 /*IN*/ PDEVICE_OBJECT DeviceObject,
sca8er 2:5853bf44af9f 6229 /*IN*/ PCREATE_DISK Disk);
sca8er 2:5853bf44af9f 6230
sca8er 2:5853bf44af9f 6231 NTOSAPI
sca8er 2:5853bf44af9f 6232 NTSTATUS
sca8er 2:5853bf44af9f 6233 DDKAPI
sca8er 2:5853bf44af9f 6234 IoCreateFile(
sca8er 2:5853bf44af9f 6235 /*OUT*/ PHANDLE FileHandle,
sca8er 2:5853bf44af9f 6236 /*IN*/ ACCESS_MASK DesiredAccess,
sca8er 2:5853bf44af9f 6237 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes,
sca8er 2:5853bf44af9f 6238 /*OUT*/ PIO_STATUS_BLOCK IoStatusBlock,
sca8er 2:5853bf44af9f 6239 /*IN*/ PLARGE_INTEGER AllocationSize /*OPTIONAL*/,
sca8er 2:5853bf44af9f 6240 /*IN*/ ULONG FileAttributes,
sca8er 2:5853bf44af9f 6241 /*IN*/ ULONG ShareAccess,
sca8er 2:5853bf44af9f 6242 /*IN*/ ULONG Disposition,
sca8er 2:5853bf44af9f 6243 /*IN*/ ULONG CreateOptions,
sca8er 2:5853bf44af9f 6244 /*IN*/ PVOID EaBuffer /*OPTIONAL*/,
sca8er 2:5853bf44af9f 6245 /*IN*/ ULONG EaLength,
sca8er 2:5853bf44af9f 6246 /*IN*/ CREATE_FILE_TYPE CreateFileType,
sca8er 2:5853bf44af9f 6247 /*IN*/ PVOID ExtraCreateParameters /*OPTIONAL*/,
sca8er 2:5853bf44af9f 6248 /*IN*/ ULONG Options);
sca8er 2:5853bf44af9f 6249
sca8er 2:5853bf44af9f 6250 NTOSAPI
sca8er 2:5853bf44af9f 6251 PKEVENT
sca8er 2:5853bf44af9f 6252 DDKAPI
sca8er 2:5853bf44af9f 6253 IoCreateNotificationEvent(
sca8er 2:5853bf44af9f 6254 /*IN*/ PUNICODE_STRING EventName,
sca8er 2:5853bf44af9f 6255 /*OUT*/ PHANDLE EventHandle);
sca8er 2:5853bf44af9f 6256
sca8er 2:5853bf44af9f 6257 NTOSAPI
sca8er 2:5853bf44af9f 6258 NTSTATUS
sca8er 2:5853bf44af9f 6259 DDKAPI
sca8er 2:5853bf44af9f 6260 IoCreateSymbolicLink(
sca8er 2:5853bf44af9f 6261 /*IN*/ PUNICODE_STRING SymbolicLinkName,
sca8er 2:5853bf44af9f 6262 /*IN*/ PUNICODE_STRING DeviceName);
sca8er 2:5853bf44af9f 6263
sca8er 2:5853bf44af9f 6264 NTOSAPI
sca8er 2:5853bf44af9f 6265 PKEVENT
sca8er 2:5853bf44af9f 6266 DDKAPI
sca8er 2:5853bf44af9f 6267 IoCreateSynchronizationEvent(
sca8er 2:5853bf44af9f 6268 /*IN*/ PUNICODE_STRING EventName,
sca8er 2:5853bf44af9f 6269 /*OUT*/ PHANDLE EventHandle);
sca8er 2:5853bf44af9f 6270
sca8er 2:5853bf44af9f 6271 NTOSAPI
sca8er 2:5853bf44af9f 6272 NTSTATUS
sca8er 2:5853bf44af9f 6273 DDKAPI
sca8er 2:5853bf44af9f 6274 IoCreateUnprotectedSymbolicLink(
sca8er 2:5853bf44af9f 6275 /*IN*/ PUNICODE_STRING SymbolicLinkName,
sca8er 2:5853bf44af9f 6276 /*IN*/ PUNICODE_STRING DeviceName);
sca8er 2:5853bf44af9f 6277
sca8er 2:5853bf44af9f 6278 NTOSAPI
sca8er 2:5853bf44af9f 6279 VOID
sca8er 2:5853bf44af9f 6280 DDKAPI
sca8er 2:5853bf44af9f 6281 IoCsqInitialize(
sca8er 2:5853bf44af9f 6282 PIO_CSQ Csq,
sca8er 2:5853bf44af9f 6283 /*IN*/ PIO_CSQ_INSERT_IRP CsqInsertIrp,
sca8er 2:5853bf44af9f 6284 /*IN*/ PIO_CSQ_REMOVE_IRP CsqRemoveIrp,
sca8er 2:5853bf44af9f 6285 /*IN*/ PIO_CSQ_PEEK_NEXT_IRP CsqPeekNextIrp,
sca8er 2:5853bf44af9f 6286 /*IN*/ PIO_CSQ_ACQUIRE_LOCK CsqAcquireLock,
sca8er 2:5853bf44af9f 6287 /*IN*/ PIO_CSQ_RELEASE_LOCK CsqReleaseLock,
sca8er 2:5853bf44af9f 6288 /*IN*/ PIO_CSQ_COMPLETE_CANCELED_IRP CsqCompleteCanceledIrp);
sca8er 2:5853bf44af9f 6289
sca8er 2:5853bf44af9f 6290 NTOSAPI
sca8er 2:5853bf44af9f 6291 VOID
sca8er 2:5853bf44af9f 6292 DDKAPI
sca8er 2:5853bf44af9f 6293 IoCsqInsertIrp(
sca8er 2:5853bf44af9f 6294 /*IN*/ PIO_CSQ Csq,
sca8er 2:5853bf44af9f 6295 /*IN*/ PIRP Irp,
sca8er 2:5853bf44af9f 6296 /*IN*/ PIO_CSQ_IRP_CONTEXT Context);
sca8er 2:5853bf44af9f 6297
sca8er 2:5853bf44af9f 6298 NTOSAPI
sca8er 2:5853bf44af9f 6299 PIRP
sca8er 2:5853bf44af9f 6300 DDKAPI
sca8er 2:5853bf44af9f 6301 IoCsqRemoveIrp(
sca8er 2:5853bf44af9f 6302 /*IN*/ PIO_CSQ Csq,
sca8er 2:5853bf44af9f 6303 /*IN*/ PIO_CSQ_IRP_CONTEXT Context);
sca8er 2:5853bf44af9f 6304
sca8er 2:5853bf44af9f 6305 NTOSAPI
sca8er 2:5853bf44af9f 6306 PIRP
sca8er 2:5853bf44af9f 6307 DDKAPI
sca8er 2:5853bf44af9f 6308 IoCsqRemoveNextIrp(
sca8er 2:5853bf44af9f 6309 /*IN*/ PIO_CSQ Csq,
sca8er 2:5853bf44af9f 6310 /*IN*/ PVOID PeekContext);
sca8er 2:5853bf44af9f 6311
sca8er 2:5853bf44af9f 6312 NTOSAPI
sca8er 2:5853bf44af9f 6313 VOID
sca8er 2:5853bf44af9f 6314 DDKAPI
sca8er 2:5853bf44af9f 6315 IoDeleteController(
sca8er 2:5853bf44af9f 6316 /*IN*/ PCONTROLLER_OBJECT ControllerObject);
sca8er 2:5853bf44af9f 6317
sca8er 2:5853bf44af9f 6318 NTOSAPI
sca8er 2:5853bf44af9f 6319 VOID
sca8er 2:5853bf44af9f 6320 DDKAPI
sca8er 2:5853bf44af9f 6321 IoDeleteDevice(
sca8er 2:5853bf44af9f 6322 /*IN*/ PDEVICE_OBJECT DeviceObject);
sca8er 2:5853bf44af9f 6323
sca8er 2:5853bf44af9f 6324 NTOSAPI
sca8er 2:5853bf44af9f 6325 NTSTATUS
sca8er 2:5853bf44af9f 6326 DDKAPI
sca8er 2:5853bf44af9f 6327 IoDeleteSymbolicLink(
sca8er 2:5853bf44af9f 6328 /*IN*/ PUNICODE_STRING SymbolicLinkName);
sca8er 2:5853bf44af9f 6329
sca8er 2:5853bf44af9f 6330 /*
sca8er 2:5853bf44af9f 6331 * VOID
sca8er 2:5853bf44af9f 6332 * IoDeassignArcName(
sca8er 2:5853bf44af9f 6333 * IN PUNICODE_STRING ArcName)
sca8er 2:5853bf44af9f 6334 */
sca8er 2:5853bf44af9f 6335 #define IoDeassignArcName IoDeleteSymbolicLink
sca8er 2:5853bf44af9f 6336
sca8er 2:5853bf44af9f 6337 NTOSAPI
sca8er 2:5853bf44af9f 6338 VOID
sca8er 2:5853bf44af9f 6339 DDKAPI
sca8er 2:5853bf44af9f 6340 IoDetachDevice(
sca8er 2:5853bf44af9f 6341 /*IN OUT*/ PDEVICE_OBJECT TargetDevice);
sca8er 2:5853bf44af9f 6342
sca8er 2:5853bf44af9f 6343 NTOSAPI
sca8er 2:5853bf44af9f 6344 VOID
sca8er 2:5853bf44af9f 6345 DDKAPI
sca8er 2:5853bf44af9f 6346 IoDisconnectInterrupt(
sca8er 2:5853bf44af9f 6347 /*IN*/ PKINTERRUPT InterruptObject);
sca8er 2:5853bf44af9f 6348
sca8er 2:5853bf44af9f 6349 NTOSAPI
sca8er 2:5853bf44af9f 6350 BOOLEAN
sca8er 2:5853bf44af9f 6351 DDKAPI
sca8er 2:5853bf44af9f 6352 IoForwardIrpSynchronously(
sca8er 2:5853bf44af9f 6353 /*IN*/ PDEVICE_OBJECT DeviceObject,
sca8er 2:5853bf44af9f 6354 /*IN*/ PIRP Irp);
sca8er 2:5853bf44af9f 6355
sca8er 2:5853bf44af9f 6356 #define IoForwardAndCatchIrp IoForwardIrpSynchronously
sca8er 2:5853bf44af9f 6357
sca8er 2:5853bf44af9f 6358 NTOSAPI
sca8er 2:5853bf44af9f 6359 VOID
sca8er 2:5853bf44af9f 6360 DDKAPI
sca8er 2:5853bf44af9f 6361 IoFreeController(
sca8er 2:5853bf44af9f 6362 /*IN*/ PCONTROLLER_OBJECT ControllerObject);
sca8er 2:5853bf44af9f 6363
sca8er 2:5853bf44af9f 6364 NTOSAPI
sca8er 2:5853bf44af9f 6365 VOID
sca8er 2:5853bf44af9f 6366 DDKAPI
sca8er 2:5853bf44af9f 6367 IoFreeErrorLogEntry(
sca8er 2:5853bf44af9f 6368 PVOID ElEntry);
sca8er 2:5853bf44af9f 6369
sca8er 2:5853bf44af9f 6370 NTOSAPI
sca8er 2:5853bf44af9f 6371 VOID
sca8er 2:5853bf44af9f 6372 DDKAPI
sca8er 2:5853bf44af9f 6373 IoFreeIrp(
sca8er 2:5853bf44af9f 6374 /*IN*/ PIRP Irp);
sca8er 2:5853bf44af9f 6375
sca8er 2:5853bf44af9f 6376 NTOSAPI
sca8er 2:5853bf44af9f 6377 VOID
sca8er 2:5853bf44af9f 6378 DDKAPI
sca8er 2:5853bf44af9f 6379 IoFreeMdl(
sca8er 2:5853bf44af9f 6380 /*IN*/ PMDL Mdl);
sca8er 2:5853bf44af9f 6381
sca8er 2:5853bf44af9f 6382 NTOSAPI
sca8er 2:5853bf44af9f 6383 VOID
sca8er 2:5853bf44af9f 6384 DDKAPI
sca8er 2:5853bf44af9f 6385 IoFreeWorkItem(
sca8er 2:5853bf44af9f 6386 /*IN*/ PIO_WORKITEM pIOWorkItem);
sca8er 2:5853bf44af9f 6387
sca8er 2:5853bf44af9f 6388 NTOSAPI
sca8er 2:5853bf44af9f 6389 PDEVICE_OBJECT
sca8er 2:5853bf44af9f 6390 DDKAPI
sca8er 2:5853bf44af9f 6391 IoGetAttachedDevice(
sca8er 2:5853bf44af9f 6392 /*IN*/ PDEVICE_OBJECT DeviceObject);
sca8er 2:5853bf44af9f 6393
sca8er 2:5853bf44af9f 6394 NTOSAPI
sca8er 2:5853bf44af9f 6395 PDEVICE_OBJECT
sca8er 2:5853bf44af9f 6396 DDKAPI
sca8er 2:5853bf44af9f 6397 IoGetAttachedDeviceReference(
sca8er 2:5853bf44af9f 6398 /*IN*/ PDEVICE_OBJECT DeviceObject);
sca8er 2:5853bf44af9f 6399
sca8er 2:5853bf44af9f 6400 NTOSAPI
sca8er 2:5853bf44af9f 6401 NTSTATUS
sca8er 2:5853bf44af9f 6402 DDKAPI
sca8er 2:5853bf44af9f 6403 IoGetBootDiskInformation(
sca8er 2:5853bf44af9f 6404 /*IN OUT*/ PBOOTDISK_INFORMATION BootDiskInformation,
sca8er 2:5853bf44af9f 6405 /*IN*/ ULONG Size);
sca8er 2:5853bf44af9f 6406
sca8er 2:5853bf44af9f 6407 NTOSAPI
sca8er 2:5853bf44af9f 6408 PCONFIGURATION_INFORMATION
sca8er 2:5853bf44af9f 6409 DDKAPI
sca8er 2:5853bf44af9f 6410 IoGetConfigurationInformation(
sca8er 2:5853bf44af9f 6411 VOID);
sca8er 2:5853bf44af9f 6412
sca8er 2:5853bf44af9f 6413 NTOSAPI
sca8er 2:5853bf44af9f 6414 PEPROCESS
sca8er 2:5853bf44af9f 6415 DDKAPI
sca8er 2:5853bf44af9f 6416 IoGetCurrentProcess(
sca8er 2:5853bf44af9f 6417 VOID);
sca8er 2:5853bf44af9f 6418
sca8er 2:5853bf44af9f 6419 NTOSAPI
sca8er 2:5853bf44af9f 6420 NTSTATUS
sca8er 2:5853bf44af9f 6421 DDKAPI
sca8er 2:5853bf44af9f 6422 IoGetDeviceInterfaceAlias(
sca8er 2:5853bf44af9f 6423 /*IN*/ PUNICODE_STRING SymbolicLinkName,
sca8er 2:5853bf44af9f 6424 /*IN*/ CONST GUID *AliasInterfaceClassGuid,
sca8er 2:5853bf44af9f 6425 /*OUT*/ PUNICODE_STRING AliasSymbolicLinkName);
sca8er 2:5853bf44af9f 6426
sca8er 2:5853bf44af9f 6427 NTOSAPI
sca8er 2:5853bf44af9f 6428 NTSTATUS
sca8er 2:5853bf44af9f 6429 DDKAPI
sca8er 2:5853bf44af9f 6430 IoGetDeviceInterfaces(
sca8er 2:5853bf44af9f 6431 /*IN*/ CONST GUID *InterfaceClassGuid,
sca8er 2:5853bf44af9f 6432 /*IN*/ PDEVICE_OBJECT PhysicalDeviceObject /*OPTIONAL*/,
sca8er 2:5853bf44af9f 6433 /*IN*/ ULONG Flags,
sca8er 2:5853bf44af9f 6434 /*OUT*/ PWSTR *SymbolicLinkList);
sca8er 2:5853bf44af9f 6435
sca8er 2:5853bf44af9f 6436 NTOSAPI
sca8er 2:5853bf44af9f 6437 NTSTATUS
sca8er 2:5853bf44af9f 6438 DDKAPI
sca8er 2:5853bf44af9f 6439 IoGetDeviceObjectPointer(
sca8er 2:5853bf44af9f 6440 /*IN*/ PUNICODE_STRING ObjectName,
sca8er 2:5853bf44af9f 6441 /*IN*/ ACCESS_MASK DesiredAccess,
sca8er 2:5853bf44af9f 6442 /*OUT*/ PFILE_OBJECT *FileObject,
sca8er 2:5853bf44af9f 6443 /*OUT*/ PDEVICE_OBJECT *DeviceObject);
sca8er 2:5853bf44af9f 6444
sca8er 2:5853bf44af9f 6445 NTOSAPI
sca8er 2:5853bf44af9f 6446 NTSTATUS
sca8er 2:5853bf44af9f 6447 DDKAPI
sca8er 2:5853bf44af9f 6448 IoGetDeviceProperty(
sca8er 2:5853bf44af9f 6449 /*IN*/ PDEVICE_OBJECT DeviceObject,
sca8er 2:5853bf44af9f 6450 /*IN*/ DEVICE_REGISTRY_PROPERTY DeviceProperty,
sca8er 2:5853bf44af9f 6451 /*IN*/ ULONG BufferLength,
sca8er 2:5853bf44af9f 6452 /*OUT*/ PVOID PropertyBuffer,
sca8er 2:5853bf44af9f 6453 /*OUT*/ PULONG ResultLength);
sca8er 2:5853bf44af9f 6454
sca8er 2:5853bf44af9f 6455 NTOSAPI
sca8er 2:5853bf44af9f 6456 PDEVICE_OBJECT
sca8er 2:5853bf44af9f 6457 DDKAPI
sca8er 2:5853bf44af9f 6458 IoGetDeviceToVerify(
sca8er 2:5853bf44af9f 6459 /*IN*/ PETHREAD Thread);
sca8er 2:5853bf44af9f 6460
sca8er 2:5853bf44af9f 6461 NTOSAPI
sca8er 2:5853bf44af9f 6462 PDMA_ADAPTER
sca8er 2:5853bf44af9f 6463 DDKAPI
sca8er 2:5853bf44af9f 6464 IoGetDmaAdapter(
sca8er 2:5853bf44af9f 6465 /*IN*/ PDEVICE_OBJECT PhysicalDeviceObject,
sca8er 2:5853bf44af9f 6466 /*IN*/ PDEVICE_DESCRIPTION DeviceDescription,
sca8er 2:5853bf44af9f 6467 /*IN OUT*/ PULONG NumberOfMapRegisters);
sca8er 2:5853bf44af9f 6468
sca8er 2:5853bf44af9f 6469 NTOSAPI
sca8er 2:5853bf44af9f 6470 PVOID
sca8er 2:5853bf44af9f 6471 DDKAPI
sca8er 2:5853bf44af9f 6472 IoGetDriverObjectExtension(
sca8er 2:5853bf44af9f 6473 /*IN*/ PDRIVER_OBJECT DriverObject,
sca8er 2:5853bf44af9f 6474 /*IN*/ PVOID ClientIdentificationAddress);
sca8er 2:5853bf44af9f 6475
sca8er 2:5853bf44af9f 6476 NTOSAPI
sca8er 2:5853bf44af9f 6477 PGENERIC_MAPPING
sca8er 2:5853bf44af9f 6478 DDKAPI
sca8er 2:5853bf44af9f 6479 IoGetFileObjectGenericMapping(
sca8er 2:5853bf44af9f 6480 VOID);
sca8er 2:5853bf44af9f 6481
sca8er 2:5853bf44af9f 6482 /*
sca8er 2:5853bf44af9f 6483 * ULONG
sca8er 2:5853bf44af9f 6484 * IoGetFunctionCodeFromCtlCode(
sca8er 2:5853bf44af9f 6485 * IN ULONG ControlCode)
sca8er 2:5853bf44af9f 6486 */
sca8er 2:5853bf44af9f 6487 #define IoGetFunctionCodeFromCtlCode(_ControlCode) \
sca8er 2:5853bf44af9f 6488 (((_ControlCode) >> 2) & 0x00000FFF)
sca8er 2:5853bf44af9f 6489
sca8er 2:5853bf44af9f 6490 NTOSAPI
sca8er 2:5853bf44af9f 6491 PVOID
sca8er 2:5853bf44af9f 6492 DDKAPI
sca8er 2:5853bf44af9f 6493 IoGetInitialStack(
sca8er 2:5853bf44af9f 6494 VOID);
sca8er 2:5853bf44af9f 6495
sca8er 2:5853bf44af9f 6496 NTOSAPI
sca8er 2:5853bf44af9f 6497 PDEVICE_OBJECT
sca8er 2:5853bf44af9f 6498 DDKAPI
sca8er 2:5853bf44af9f 6499 IoGetRelatedDeviceObject(
sca8er 2:5853bf44af9f 6500 /*IN*/ PFILE_OBJECT FileObject);
sca8er 2:5853bf44af9f 6501
sca8er 2:5853bf44af9f 6502 NTOSAPI
sca8er 2:5853bf44af9f 6503 ULONG
sca8er 2:5853bf44af9f 6504 DDKAPI
sca8er 2:5853bf44af9f 6505 IoGetRemainingStackSize(
sca8er 2:5853bf44af9f 6506 VOID);
sca8er 2:5853bf44af9f 6507
sca8er 2:5853bf44af9f 6508 NTOSAPI
sca8er 2:5853bf44af9f 6509 VOID
sca8er 2:5853bf44af9f 6510 DDKAPI
sca8er 2:5853bf44af9f 6511 IoGetStackLimits(
sca8er 2:5853bf44af9f 6512 /*OUT*/ PULONG_PTR LowLimit,
sca8er 2:5853bf44af9f 6513 /*OUT*/ PULONG_PTR HighLimit);
sca8er 2:5853bf44af9f 6514
sca8er 2:5853bf44af9f 6515 NTOSAPI
sca8er 2:5853bf44af9f 6516 VOID
sca8er 2:5853bf44af9f 6517 DDKAPI
sca8er 2:5853bf44af9f 6518 KeInitializeDpc(
sca8er 2:5853bf44af9f 6519 /*IN*/ PRKDPC Dpc,
sca8er 2:5853bf44af9f 6520 /*IN*/ PKDEFERRED_ROUTINE DeferredRoutine,
sca8er 2:5853bf44af9f 6521 /*IN*/ PVOID DeferredContext);
sca8er 2:5853bf44af9f 6522
sca8er 2:5853bf44af9f 6523 /*
sca8er 2:5853bf44af9f 6524 * VOID
sca8er 2:5853bf44af9f 6525 * IoInitializeDpcRequest(
sca8er 2:5853bf44af9f 6526 * IN PDEVICE_OBJECT DeviceObject,
sca8er 2:5853bf44af9f 6527 * IN PIO_DPC_ROUTINE DpcRoutine)
sca8er 2:5853bf44af9f 6528 */
sca8er 2:5853bf44af9f 6529 #define IoInitializeDpcRequest(_DeviceObject, \
sca8er 2:5853bf44af9f 6530 _DpcRoutine) \
sca8er 2:5853bf44af9f 6531 KeInitializeDpc(&(_DeviceObject)->Dpc, \
sca8er 2:5853bf44af9f 6532 (PKDEFERRED_ROUTINE) (_DpcRoutine), \
sca8er 2:5853bf44af9f 6533 _DeviceObject)
sca8er 2:5853bf44af9f 6534
sca8er 2:5853bf44af9f 6535 NTOSAPI
sca8er 2:5853bf44af9f 6536 VOID
sca8er 2:5853bf44af9f 6537 DDKAPI
sca8er 2:5853bf44af9f 6538 IoInitializeIrp(
sca8er 2:5853bf44af9f 6539 /*IN OUT*/ PIRP Irp,
sca8er 2:5853bf44af9f 6540 /*IN*/ USHORT PacketSize,
sca8er 2:5853bf44af9f 6541 /*IN*/ CCHAR StackSize);
sca8er 2:5853bf44af9f 6542
sca8er 2:5853bf44af9f 6543 NTOSAPI
sca8er 2:5853bf44af9f 6544 VOID
sca8er 2:5853bf44af9f 6545 DDKAPI
sca8er 2:5853bf44af9f 6546 IoInitializeRemoveLockEx(
sca8er 2:5853bf44af9f 6547 /*IN*/ PIO_REMOVE_LOCK Lock,
sca8er 2:5853bf44af9f 6548 /*IN*/ ULONG AllocateTag,
sca8er 2:5853bf44af9f 6549 /*IN*/ ULONG MaxLockedMinutes,
sca8er 2:5853bf44af9f 6550 /*IN*/ ULONG HighWatermark,
sca8er 2:5853bf44af9f 6551 /*IN*/ ULONG RemlockSize);
sca8er 2:5853bf44af9f 6552
sca8er 2:5853bf44af9f 6553 /* VOID
sca8er 2:5853bf44af9f 6554 * IoInitializeRemoveLock(
sca8er 2:5853bf44af9f 6555 * IN PIO_REMOVE_LOCK Lock,
sca8er 2:5853bf44af9f 6556 * IN ULONG AllocateTag,
sca8er 2:5853bf44af9f 6557 * IN ULONG MaxLockedMinutes,
sca8er 2:5853bf44af9f 6558 * IN ULONG HighWatermark)
sca8er 2:5853bf44af9f 6559 */
sca8er 2:5853bf44af9f 6560 #define IoInitializeRemoveLock( \
sca8er 2:5853bf44af9f 6561 Lock, AllocateTag, MaxLockedMinutes, HighWatermark) \
sca8er 2:5853bf44af9f 6562 IoInitializeRemoveLockEx(Lock, AllocateTag, MaxLockedMinutes, \
sca8er 2:5853bf44af9f 6563 HighWatermark, sizeof(IO_REMOVE_LOCK))
sca8er 2:5853bf44af9f 6564
sca8er 2:5853bf44af9f 6565 NTOSAPI
sca8er 2:5853bf44af9f 6566 NTSTATUS
sca8er 2:5853bf44af9f 6567 DDKAPI
sca8er 2:5853bf44af9f 6568 IoInitializeTimer(
sca8er 2:5853bf44af9f 6569 /*IN*/ PDEVICE_OBJECT DeviceObject,
sca8er 2:5853bf44af9f 6570 /*IN*/ PIO_TIMER_ROUTINE TimerRoutine,
sca8er 2:5853bf44af9f 6571 /*IN*/ PVOID Context);
sca8er 2:5853bf44af9f 6572
sca8er 2:5853bf44af9f 6573 NTOSAPI
sca8er 2:5853bf44af9f 6574 VOID
sca8er 2:5853bf44af9f 6575 DDKAPI
sca8er 2:5853bf44af9f 6576 IoInvalidateDeviceRelations(
sca8er 2:5853bf44af9f 6577 /*IN*/ PDEVICE_OBJECT DeviceObject,
sca8er 2:5853bf44af9f 6578 /*IN*/ DEVICE_RELATION_TYPE Type);
sca8er 2:5853bf44af9f 6579
sca8er 2:5853bf44af9f 6580 NTOSAPI
sca8er 2:5853bf44af9f 6581 VOID
sca8er 2:5853bf44af9f 6582 DDKAPI
sca8er 2:5853bf44af9f 6583 IoInvalidateDeviceState(
sca8er 2:5853bf44af9f 6584 /*IN*/ PDEVICE_OBJECT PhysicalDeviceObject);
sca8er 2:5853bf44af9f 6585
sca8er 2:5853bf44af9f 6586 NTOSAPI
sca8er 2:5853bf44af9f 6587 BOOLEAN
sca8er 2:5853bf44af9f 6588 DDKAPI
sca8er 2:5853bf44af9f 6589 IoIs32bitProcess(
sca8er 2:5853bf44af9f 6590 /*IN*/ PIRP Irp /*OPTIONAL*/);
sca8er 2:5853bf44af9f 6591
sca8er 2:5853bf44af9f 6592 /*
sca8er 2:5853bf44af9f 6593 * BOOLEAN
sca8er 2:5853bf44af9f 6594 * IoIsErrorUserInduced(
sca8er 2:5853bf44af9f 6595 * IN NTSTATUS Status);
sca8er 2:5853bf44af9f 6596 */
sca8er 2:5853bf44af9f 6597 #define IoIsErrorUserInduced(Status) \
sca8er 2:5853bf44af9f 6598 ((BOOLEAN)(((Status) == STATUS_DEVICE_NOT_READY) || \
sca8er 2:5853bf44af9f 6599 ((Status) == STATUS_IO_TIMEOUT) || \
sca8er 2:5853bf44af9f 6600 ((Status) == STATUS_MEDIA_WRITE_PROTECTED) || \
sca8er 2:5853bf44af9f 6601 ((Status) == STATUS_NO_MEDIA_IN_DEVICE) || \
sca8er 2:5853bf44af9f 6602 ((Status) == STATUS_VERIFY_REQUIRED) || \
sca8er 2:5853bf44af9f 6603 ((Status) == STATUS_UNRECOGNIZED_MEDIA) || \
sca8er 2:5853bf44af9f 6604 ((Status) == STATUS_WRONG_VOLUME)))
sca8er 2:5853bf44af9f 6605
sca8er 2:5853bf44af9f 6606 NTOSAPI
sca8er 2:5853bf44af9f 6607 BOOLEAN
sca8er 2:5853bf44af9f 6608 DDKAPI
sca8er 2:5853bf44af9f 6609 IoIsWdmVersionAvailable(
sca8er 2:5853bf44af9f 6610 /*IN*/ UCHAR MajorVersion,
sca8er 2:5853bf44af9f 6611 /*IN*/ UCHAR MinorVersion);
sca8er 2:5853bf44af9f 6612
sca8er 2:5853bf44af9f 6613 NTOSAPI
sca8er 2:5853bf44af9f 6614 PIRP
sca8er 2:5853bf44af9f 6615 DDKAPI
sca8er 2:5853bf44af9f 6616 IoMakeAssociatedIrp(
sca8er 2:5853bf44af9f 6617 /*IN*/ PIRP Irp,
sca8er 2:5853bf44af9f 6618 /*IN*/ CCHAR StackSize);
sca8er 2:5853bf44af9f 6619
sca8er 2:5853bf44af9f 6620 /*
sca8er 2:5853bf44af9f 6621 * VOID
sca8er 2:5853bf44af9f 6622 * IoMarkIrpPending(
sca8er 2:5853bf44af9f 6623 * IN OUT PIRP Irp)
sca8er 2:5853bf44af9f 6624 */
sca8er 2:5853bf44af9f 6625 #define IoMarkIrpPending(_Irp) \
sca8er 2:5853bf44af9f 6626 (IoGetCurrentIrpStackLocation(_Irp)->Control |= SL_PENDING_RETURNED)
sca8er 2:5853bf44af9f 6627
sca8er 2:5853bf44af9f 6628 NTOSAPI
sca8er 2:5853bf44af9f 6629 NTSTATUS
sca8er 2:5853bf44af9f 6630 DDKAPI
sca8er 2:5853bf44af9f 6631 IoOpenDeviceInterfaceRegistryKey(
sca8er 2:5853bf44af9f 6632 /*IN*/ PUNICODE_STRING SymbolicLinkName,
sca8er 2:5853bf44af9f 6633 /*IN*/ ACCESS_MASK DesiredAccess,
sca8er 2:5853bf44af9f 6634 /*OUT*/ PHANDLE DeviceInterfaceKey);
sca8er 2:5853bf44af9f 6635
sca8er 2:5853bf44af9f 6636 NTOSAPI
sca8er 2:5853bf44af9f 6637 NTSTATUS
sca8er 2:5853bf44af9f 6638 DDKAPI
sca8er 2:5853bf44af9f 6639 IoOpenDeviceRegistryKey(
sca8er 2:5853bf44af9f 6640 /*IN*/ PDEVICE_OBJECT DeviceObject,
sca8er 2:5853bf44af9f 6641 /*IN*/ ULONG DevInstKeyType,
sca8er 2:5853bf44af9f 6642 /*IN*/ ACCESS_MASK DesiredAccess,
sca8er 2:5853bf44af9f 6643 /*OUT*/ PHANDLE DevInstRegKey);
sca8er 2:5853bf44af9f 6644
sca8er 2:5853bf44af9f 6645 NTOSAPI
sca8er 2:5853bf44af9f 6646 NTSTATUS
sca8er 2:5853bf44af9f 6647 DDKAPI
sca8er 2:5853bf44af9f 6648 IoQueryDeviceDescription(
sca8er 2:5853bf44af9f 6649 /*IN*/ PINTERFACE_TYPE BusType /*OPTIONAL*/,
sca8er 2:5853bf44af9f 6650 /*IN*/ PULONG BusNumber /*OPTIONAL*/,
sca8er 2:5853bf44af9f 6651 /*IN*/ PCONFIGURATION_TYPE ControllerType /*OPTIONAL*/,
sca8er 2:5853bf44af9f 6652 /*IN*/ PULONG ControllerNumber /*OPTIONAL*/,
sca8er 2:5853bf44af9f 6653 /*IN*/ PCONFIGURATION_TYPE PeripheralType /*OPTIONAL*/,
sca8er 2:5853bf44af9f 6654 /*IN*/ PULONG PeripheralNumber /*OPTIONAL*/,
sca8er 2:5853bf44af9f 6655 /*IN*/ PIO_QUERY_DEVICE_ROUTINE CalloutRoutine,
sca8er 2:5853bf44af9f 6656 /*IN*/ PVOID Context);
sca8er 2:5853bf44af9f 6657
sca8er 2:5853bf44af9f 6658 NTOSAPI
sca8er 2:5853bf44af9f 6659 VOID
sca8er 2:5853bf44af9f 6660 DDKAPI
sca8er 2:5853bf44af9f 6661 IoQueueWorkItem(
sca8er 2:5853bf44af9f 6662 /*IN*/ PIO_WORKITEM pIOWorkItem,
sca8er 2:5853bf44af9f 6663 /*IN*/ PIO_WORKITEM_ROUTINE Routine,
sca8er 2:5853bf44af9f 6664 /*IN*/ WORK_QUEUE_TYPE QueueType,
sca8er 2:5853bf44af9f 6665 /*IN*/ PVOID Context);
sca8er 2:5853bf44af9f 6666
sca8er 2:5853bf44af9f 6667 NTOSAPI
sca8er 2:5853bf44af9f 6668 VOID
sca8er 2:5853bf44af9f 6669 DDKAPI
sca8er 2:5853bf44af9f 6670 IoRaiseHardError(
sca8er 2:5853bf44af9f 6671 /*IN*/ PIRP Irp,
sca8er 2:5853bf44af9f 6672 /*IN*/ PVPB Vpb /*OPTIONAL*/,
sca8er 2:5853bf44af9f 6673 /*IN*/ PDEVICE_OBJECT RealDeviceObject);
sca8er 2:5853bf44af9f 6674
sca8er 2:5853bf44af9f 6675 NTOSAPI
sca8er 2:5853bf44af9f 6676 BOOLEAN
sca8er 2:5853bf44af9f 6677 DDKAPI
sca8er 2:5853bf44af9f 6678 IoRaiseInformationalHardError(
sca8er 2:5853bf44af9f 6679 /*IN*/ NTSTATUS ErrorStatus,
sca8er 2:5853bf44af9f 6680 /*IN*/ PUNICODE_STRING String /*OPTIONAL*/,
sca8er 2:5853bf44af9f 6681 /*IN*/ PKTHREAD Thread /*OPTIONAL*/);
sca8er 2:5853bf44af9f 6682
sca8er 2:5853bf44af9f 6683 NTOSAPI
sca8er 2:5853bf44af9f 6684 NTSTATUS
sca8er 2:5853bf44af9f 6685 DDKAPI
sca8er 2:5853bf44af9f 6686 IoReadDiskSignature(
sca8er 2:5853bf44af9f 6687 /*IN*/ PDEVICE_OBJECT DeviceObject,
sca8er 2:5853bf44af9f 6688 /*IN*/ ULONG BytesPerSector,
sca8er 2:5853bf44af9f 6689 /*OUT*/ PDISK_SIGNATURE Signature);
sca8er 2:5853bf44af9f 6690
sca8er 2:5853bf44af9f 6691 NTOSAPI
sca8er 2:5853bf44af9f 6692 NTSTATUS
sca8er 2:5853bf44af9f 6693 DDKAPI
sca8er 2:5853bf44af9f 6694 IoReadPartitionTableEx(
sca8er 2:5853bf44af9f 6695 /*IN*/ PDEVICE_OBJECT DeviceObject,
sca8er 2:5853bf44af9f 6696 /*IN*/ struct _DRIVE_LAYOUT_INFORMATION_EX **PartitionBuffer);
sca8er 2:5853bf44af9f 6697
sca8er 2:5853bf44af9f 6698 NTOSAPI
sca8er 2:5853bf44af9f 6699 VOID
sca8er 2:5853bf44af9f 6700 DDKAPI
sca8er 2:5853bf44af9f 6701 IoRegisterBootDriverReinitialization(
sca8er 2:5853bf44af9f 6702 /*IN*/ PDRIVER_OBJECT DriverObject,
sca8er 2:5853bf44af9f 6703 /*IN*/ PDRIVER_REINITIALIZE DriverReinitializationRoutine,
sca8er 2:5853bf44af9f 6704 /*IN*/ PVOID Context);
sca8er 2:5853bf44af9f 6705
sca8er 2:5853bf44af9f 6706 NTOSAPI
sca8er 2:5853bf44af9f 6707 VOID
sca8er 2:5853bf44af9f 6708 DDKAPI
sca8er 2:5853bf44af9f 6709 IoRegisterBootDriverReinitialization(
sca8er 2:5853bf44af9f 6710 /*IN*/ PDRIVER_OBJECT DriverObject,
sca8er 2:5853bf44af9f 6711 /*IN*/ PDRIVER_REINITIALIZE DriverReinitializationRoutine,
sca8er 2:5853bf44af9f 6712 /*IN*/ PVOID Context);
sca8er 2:5853bf44af9f 6713
sca8er 2:5853bf44af9f 6714 NTOSAPI
sca8er 2:5853bf44af9f 6715 NTSTATUS
sca8er 2:5853bf44af9f 6716 DDKAPI
sca8er 2:5853bf44af9f 6717 IoRegisterDeviceInterface(
sca8er 2:5853bf44af9f 6718 /*IN*/ PDEVICE_OBJECT PhysicalDeviceObject,
sca8er 2:5853bf44af9f 6719 /*IN*/ CONST GUID *InterfaceClassGuid,
sca8er 2:5853bf44af9f 6720 /*IN*/ PUNICODE_STRING ReferenceString /*OPTIONAL*/,
sca8er 2:5853bf44af9f 6721 /*OUT*/ PUNICODE_STRING SymbolicLinkName);
sca8er 2:5853bf44af9f 6722
sca8er 2:5853bf44af9f 6723 NTOSAPI
sca8er 2:5853bf44af9f 6724 VOID
sca8er 2:5853bf44af9f 6725 DDKAPI
sca8er 2:5853bf44af9f 6726 IoRegisterDriverReinitialization(
sca8er 2:5853bf44af9f 6727 /*IN*/ PDRIVER_OBJECT DriverObject,
sca8er 2:5853bf44af9f 6728 /*IN*/ PDRIVER_REINITIALIZE DriverReinitializationRoutine,
sca8er 2:5853bf44af9f 6729 /*IN*/ PVOID Context);
sca8er 2:5853bf44af9f 6730
sca8er 2:5853bf44af9f 6731 NTOSAPI
sca8er 2:5853bf44af9f 6732 NTSTATUS
sca8er 2:5853bf44af9f 6733 DDKAPI
sca8er 2:5853bf44af9f 6734 IoRegisterPlugPlayNotification(
sca8er 2:5853bf44af9f 6735 /*IN*/ IO_NOTIFICATION_EVENT_CATEGORY EventCategory,
sca8er 2:5853bf44af9f 6736 /*IN*/ ULONG EventCategoryFlags,
sca8er 2:5853bf44af9f 6737 /*IN*/ PVOID EventCategoryData /*OPTIONAL*/,
sca8er 2:5853bf44af9f 6738 /*IN*/ PDRIVER_OBJECT DriverObject,
sca8er 2:5853bf44af9f 6739 /*IN*/ PDRIVER_NOTIFICATION_CALLBACK_ROUTINE CallbackRoutine,
sca8er 2:5853bf44af9f 6740 /*IN*/ PVOID Context,
sca8er 2:5853bf44af9f 6741 /*OUT*/ PVOID *NotificationEntry);
sca8er 2:5853bf44af9f 6742
sca8er 2:5853bf44af9f 6743 NTOSAPI
sca8er 2:5853bf44af9f 6744 NTSTATUS
sca8er 2:5853bf44af9f 6745 DDKAPI
sca8er 2:5853bf44af9f 6746 IoRegisterShutdownNotification(
sca8er 2:5853bf44af9f 6747 /*IN*/ PDEVICE_OBJECT DeviceObject);
sca8er 2:5853bf44af9f 6748
sca8er 2:5853bf44af9f 6749 NTOSAPI
sca8er 2:5853bf44af9f 6750 VOID
sca8er 2:5853bf44af9f 6751 DDKAPI
sca8er 2:5853bf44af9f 6752 IoReleaseCancelSpinLock(
sca8er 2:5853bf44af9f 6753 /*IN*/ KIRQL Irql);
sca8er 2:5853bf44af9f 6754
sca8er 2:5853bf44af9f 6755 NTOSAPI
sca8er 2:5853bf44af9f 6756 VOID
sca8er 2:5853bf44af9f 6757 DDKAPI
sca8er 2:5853bf44af9f 6758 IoReleaseRemoveLockAndWaitEx(
sca8er 2:5853bf44af9f 6759 /*IN*/ PIO_REMOVE_LOCK RemoveLock,
sca8er 2:5853bf44af9f 6760 /*IN*/ PVOID Tag,
sca8er 2:5853bf44af9f 6761 /*IN*/ ULONG RemlockSize);
sca8er 2:5853bf44af9f 6762
sca8er 2:5853bf44af9f 6763 /*
sca8er 2:5853bf44af9f 6764 * VOID
sca8er 2:5853bf44af9f 6765 * IoReleaseRemoveLockAndWait(
sca8er 2:5853bf44af9f 6766 * IN PIO_REMOVE_LOCK RemoveLock,
sca8er 2:5853bf44af9f 6767 * IN PVOID Tag)
sca8er 2:5853bf44af9f 6768 */
sca8er 2:5853bf44af9f 6769 #define IoReleaseRemoveLockAndWait(_RemoveLock, \
sca8er 2:5853bf44af9f 6770 _Tag) \
sca8er 2:5853bf44af9f 6771 IoReleaseRemoveLockAndWaitEx(_RemoveLock, _Tag, sizeof(IO_REMOVE_LOCK))
sca8er 2:5853bf44af9f 6772
sca8er 2:5853bf44af9f 6773 NTOSAPI
sca8er 2:5853bf44af9f 6774 VOID
sca8er 2:5853bf44af9f 6775 DDKAPI
sca8er 2:5853bf44af9f 6776 IoReleaseRemoveLockEx(
sca8er 2:5853bf44af9f 6777 /*IN*/ PIO_REMOVE_LOCK RemoveLock,
sca8er 2:5853bf44af9f 6778 /*IN*/ PVOID Tag,
sca8er 2:5853bf44af9f 6779 /*IN*/ ULONG RemlockSize);
sca8er 2:5853bf44af9f 6780
sca8er 2:5853bf44af9f 6781 /*
sca8er 2:5853bf44af9f 6782 * VOID
sca8er 2:5853bf44af9f 6783 * IoReleaseRemoveLock(
sca8er 2:5853bf44af9f 6784 * IN PIO_REMOVE_LOCK RemoveLock,
sca8er 2:5853bf44af9f 6785 * IN PVOID Tag)
sca8er 2:5853bf44af9f 6786 */
sca8er 2:5853bf44af9f 6787 #define IoReleaseRemoveLock(_RemoveLock, \
sca8er 2:5853bf44af9f 6788 _Tag) \
sca8er 2:5853bf44af9f 6789 IoReleaseRemoveLockEx(_RemoveLock, _Tag, sizeof(IO_REMOVE_LOCK))
sca8er 2:5853bf44af9f 6790
sca8er 2:5853bf44af9f 6791 NTOSAPI
sca8er 2:5853bf44af9f 6792 VOID
sca8er 2:5853bf44af9f 6793 DDKAPI
sca8er 2:5853bf44af9f 6794 IoRemoveShareAccess(
sca8er 2:5853bf44af9f 6795 /*IN*/ PFILE_OBJECT FileObject,
sca8er 2:5853bf44af9f 6796 /*IN OUT*/ PSHARE_ACCESS ShareAccess);
sca8er 2:5853bf44af9f 6797
sca8er 2:5853bf44af9f 6798 NTOSAPI
sca8er 2:5853bf44af9f 6799 NTSTATUS
sca8er 2:5853bf44af9f 6800 DDKAPI
sca8er 2:5853bf44af9f 6801 IoReportDetectedDevice(
sca8er 2:5853bf44af9f 6802 /*IN*/ PDRIVER_OBJECT DriverObject,
sca8er 2:5853bf44af9f 6803 /*IN*/ INTERFACE_TYPE LegacyBusType,
sca8er 2:5853bf44af9f 6804 /*IN*/ ULONG BusNumber,
sca8er 2:5853bf44af9f 6805 /*IN*/ ULONG SlotNumber,
sca8er 2:5853bf44af9f 6806 /*IN*/ PCM_RESOURCE_LIST ResourceList,
sca8er 2:5853bf44af9f 6807 /*IN*/ PIO_RESOURCE_REQUIREMENTS_LIST ResourceRequirements /*OPTIONAL*/,
sca8er 2:5853bf44af9f 6808 /*IN*/ BOOLEAN ResourceAssigned,
sca8er 2:5853bf44af9f 6809 /*IN OUT*/ PDEVICE_OBJECT *DeviceObject);
sca8er 2:5853bf44af9f 6810
sca8er 2:5853bf44af9f 6811 NTOSAPI
sca8er 2:5853bf44af9f 6812 NTSTATUS
sca8er 2:5853bf44af9f 6813 DDKAPI
sca8er 2:5853bf44af9f 6814 IoReportResourceForDetection(
sca8er 2:5853bf44af9f 6815 /*IN*/ PDRIVER_OBJECT DriverObject,
sca8er 2:5853bf44af9f 6816 /*IN*/ PCM_RESOURCE_LIST DriverList /*OPTIONAL*/,
sca8er 2:5853bf44af9f 6817 /*IN*/ ULONG DriverListSize /*OPTIONAL*/,
sca8er 2:5853bf44af9f 6818 /*IN*/ PDEVICE_OBJECT DeviceObject /*OPTIONAL*/,
sca8er 2:5853bf44af9f 6819 /*IN*/ PCM_RESOURCE_LIST DeviceList /*OPTIONAL*/,
sca8er 2:5853bf44af9f 6820 /*IN*/ ULONG DeviceListSize /*OPTIONAL*/,
sca8er 2:5853bf44af9f 6821 /*OUT*/ PBOOLEAN ConflictDetected);
sca8er 2:5853bf44af9f 6822
sca8er 2:5853bf44af9f 6823 NTOSAPI
sca8er 2:5853bf44af9f 6824 NTSTATUS
sca8er 2:5853bf44af9f 6825 DDKAPI
sca8er 2:5853bf44af9f 6826 IoReportResourceUsage(
sca8er 2:5853bf44af9f 6827 /*IN*/ PUNICODE_STRING DriverClassName /*OPTIONAL*/,
sca8er 2:5853bf44af9f 6828 /*IN*/ PDRIVER_OBJECT DriverObject,
sca8er 2:5853bf44af9f 6829 /*IN*/ PCM_RESOURCE_LIST DriverList /*OPTIONAL*/,
sca8er 2:5853bf44af9f 6830 /*IN*/ ULONG DriverListSize /*OPTIONAL*/,
sca8er 2:5853bf44af9f 6831 /*IN*/ PDEVICE_OBJECT DeviceObject,
sca8er 2:5853bf44af9f 6832 /*IN*/ PCM_RESOURCE_LIST DeviceList /*OPTIONAL*/,
sca8er 2:5853bf44af9f 6833 /*IN*/ ULONG DeviceListSize /*OPTIONAL*/,
sca8er 2:5853bf44af9f 6834 /*IN*/ BOOLEAN OverrideConflict,
sca8er 2:5853bf44af9f 6835 /*OUT*/ PBOOLEAN ConflictDetected);
sca8er 2:5853bf44af9f 6836
sca8er 2:5853bf44af9f 6837 NTOSAPI
sca8er 2:5853bf44af9f 6838 NTSTATUS
sca8er 2:5853bf44af9f 6839 DDKAPI
sca8er 2:5853bf44af9f 6840 IoReportTargetDeviceChange(
sca8er 2:5853bf44af9f 6841 /*IN*/ PDEVICE_OBJECT PhysicalDeviceObject,
sca8er 2:5853bf44af9f 6842 /*IN*/ PVOID NotificationStructure);
sca8er 2:5853bf44af9f 6843
sca8er 2:5853bf44af9f 6844 NTOSAPI
sca8er 2:5853bf44af9f 6845 NTSTATUS
sca8er 2:5853bf44af9f 6846 DDKAPI
sca8er 2:5853bf44af9f 6847 IoReportTargetDeviceChangeAsynchronous(
sca8er 2:5853bf44af9f 6848 /*IN*/ PDEVICE_OBJECT PhysicalDeviceObject,
sca8er 2:5853bf44af9f 6849 /*IN*/ PVOID NotificationStructure,
sca8er 2:5853bf44af9f 6850 /*IN*/ PDEVICE_CHANGE_COMPLETE_CALLBACK Callback /*OPTIONAL*/,
sca8er 2:5853bf44af9f 6851 /*IN*/ PVOID Context /*OPTIONAL*/);
sca8er 2:5853bf44af9f 6852
sca8er 2:5853bf44af9f 6853 NTOSAPI
sca8er 2:5853bf44af9f 6854 VOID
sca8er 2:5853bf44af9f 6855 DDKAPI
sca8er 2:5853bf44af9f 6856 IoRequestDeviceEject(
sca8er 2:5853bf44af9f 6857 /*IN*/ PDEVICE_OBJECT PhysicalDeviceObject);
sca8er 2:5853bf44af9f 6858
sca8er 2:5853bf44af9f 6859 /*
sca8er 2:5853bf44af9f 6860 * VOID
sca8er 2:5853bf44af9f 6861 * IoRequestDpc(
sca8er 2:5853bf44af9f 6862 * IN PDEVICE_OBJECT DeviceObject,
sca8er 2:5853bf44af9f 6863 * IN PIRP Irp,
sca8er 2:5853bf44af9f 6864 * IN PVOID Context);
sca8er 2:5853bf44af9f 6865 */
sca8er 2:5853bf44af9f 6866 #define IoRequestDpc(DeviceObject, Irp, Context)( \
sca8er 2:5853bf44af9f 6867 KeInsertQueueDpc(&(DeviceObject)->Dpc, (Irp), (Context)))
sca8er 2:5853bf44af9f 6868
sca8er 2:5853bf44af9f 6869 NTOSAPI
sca8er 2:5853bf44af9f 6870 VOID
sca8er 2:5853bf44af9f 6871 DDKAPI
sca8er 2:5853bf44af9f 6872 IoReuseIrp(
sca8er 2:5853bf44af9f 6873 /*IN OUT*/ PIRP Irp,
sca8er 2:5853bf44af9f 6874 /*IN*/ NTSTATUS Status);
sca8er 2:5853bf44af9f 6875
sca8er 2:5853bf44af9f 6876 /*
sca8er 2:5853bf44af9f 6877 * PDRIVER_CANCEL
sca8er 2:5853bf44af9f 6878 * IoSetCancelRoutine(
sca8er 2:5853bf44af9f 6879 * IN PIRP Irp,
sca8er 2:5853bf44af9f 6880 * IN PDRIVER_CANCEL CancelRoutine)
sca8er 2:5853bf44af9f 6881 */
sca8er 2:5853bf44af9f 6882 #define IoSetCancelRoutine(_Irp, \
sca8er 2:5853bf44af9f 6883 _CancelRoutine) \
sca8er 2:5853bf44af9f 6884 ((PDRIVER_CANCEL) InterlockedExchangePointer( \
sca8er 2:5853bf44af9f 6885 (PVOID *) &(_Irp)->CancelRoutine, (PVOID) (_CancelRoutine)))
sca8er 2:5853bf44af9f 6886
sca8er 2:5853bf44af9f 6887 /*
sca8er 2:5853bf44af9f 6888 * VOID
sca8er 2:5853bf44af9f 6889 * IoSetCompletionRoutine(
sca8er 2:5853bf44af9f 6890 * IN PIRP Irp,
sca8er 2:5853bf44af9f 6891 * IN PIO_COMPLETION_ROUTINE CompletionRoutine,
sca8er 2:5853bf44af9f 6892 * IN PVOID Context,
sca8er 2:5853bf44af9f 6893 * IN BOOLEAN InvokeOnSuccess,
sca8er 2:5853bf44af9f 6894 * IN BOOLEAN InvokeOnError,
sca8er 2:5853bf44af9f 6895 * IN BOOLEAN InvokeOnCancel)
sca8er 2:5853bf44af9f 6896 */
sca8er 2:5853bf44af9f 6897 #define IoSetCompletionRoutine(_Irp, \
sca8er 2:5853bf44af9f 6898 _CompletionRoutine, \
sca8er 2:5853bf44af9f 6899 _Context, \
sca8er 2:5853bf44af9f 6900 _InvokeOnSuccess, \
sca8er 2:5853bf44af9f 6901 _InvokeOnError, \
sca8er 2:5853bf44af9f 6902 _InvokeOnCancel) \
sca8er 2:5853bf44af9f 6903 { \
sca8er 2:5853bf44af9f 6904 PIO_STACK_LOCATION _IrpSp; \
sca8er 2:5853bf44af9f 6905 ASSERT(_InvokeOnSuccess || _InvokeOnError || _InvokeOnCancel ? \
sca8er 2:5853bf44af9f 6906 _CompletionRoutine != NULL : TRUE); \
sca8er 2:5853bf44af9f 6907 _IrpSp = IoGetNextIrpStackLocation(_Irp); \
sca8er 2:5853bf44af9f 6908 _IrpSp->CompletionRoutine = (PIO_COMPLETION_ROUTINE)(_CompletionRoutine); \
sca8er 2:5853bf44af9f 6909 _IrpSp->Context = (_Context); \
sca8er 2:5853bf44af9f 6910 _IrpSp->Control = 0; \
sca8er 2:5853bf44af9f 6911 if (_InvokeOnSuccess) _IrpSp->Control = SL_INVOKE_ON_SUCCESS; \
sca8er 2:5853bf44af9f 6912 if (_InvokeOnError) _IrpSp->Control |= SL_INVOKE_ON_ERROR; \
sca8er 2:5853bf44af9f 6913 if (_InvokeOnCancel) _IrpSp->Control |= SL_INVOKE_ON_CANCEL; \
sca8er 2:5853bf44af9f 6914 }
sca8er 2:5853bf44af9f 6915
sca8er 2:5853bf44af9f 6916 NTOSAPI
sca8er 2:5853bf44af9f 6917 VOID
sca8er 2:5853bf44af9f 6918 DDKAPI
sca8er 2:5853bf44af9f 6919 IoSetCompletionRoutineEx(
sca8er 2:5853bf44af9f 6920 /*IN*/ PDEVICE_OBJECT DeviceObject,
sca8er 2:5853bf44af9f 6921 /*IN*/ PIRP Irp,
sca8er 2:5853bf44af9f 6922 /*IN*/ PIO_COMPLETION_ROUTINE CompletionRoutine,
sca8er 2:5853bf44af9f 6923 /*IN*/ PVOID Context,
sca8er 2:5853bf44af9f 6924 /*IN*/ BOOLEAN InvokeOnSuccess,
sca8er 2:5853bf44af9f 6925 /*IN*/ BOOLEAN InvokeOnError,
sca8er 2:5853bf44af9f 6926 /*IN*/ BOOLEAN InvokeOnCancel);
sca8er 2:5853bf44af9f 6927
sca8er 2:5853bf44af9f 6928 NTOSAPI
sca8er 2:5853bf44af9f 6929 NTSTATUS
sca8er 2:5853bf44af9f 6930 DDKAPI
sca8er 2:5853bf44af9f 6931 IoSetDeviceInterfaceState(
sca8er 2:5853bf44af9f 6932 /*IN*/ PUNICODE_STRING SymbolicLinkName,
sca8er 2:5853bf44af9f 6933 /*IN*/ BOOLEAN Enable);
sca8er 2:5853bf44af9f 6934
sca8er 2:5853bf44af9f 6935 NTOSAPI
sca8er 2:5853bf44af9f 6936 VOID
sca8er 2:5853bf44af9f 6937 DDKAPI
sca8er 2:5853bf44af9f 6938 IoSetHardErrorOrVerifyDevice(
sca8er 2:5853bf44af9f 6939 /*IN*/ PIRP Irp,
sca8er 2:5853bf44af9f 6940 /*IN*/ PDEVICE_OBJECT DeviceObject);
sca8er 2:5853bf44af9f 6941
sca8er 2:5853bf44af9f 6942 /*
sca8er 2:5853bf44af9f 6943 * VOID
sca8er 2:5853bf44af9f 6944 * IoSetNextIrpStackLocation(
sca8er 2:5853bf44af9f 6945 * IN OUT PIRP Irp)
sca8er 2:5853bf44af9f 6946 */
sca8er 2:5853bf44af9f 6947 #define IoSetNextIrpStackLocation(_Irp) \
sca8er 2:5853bf44af9f 6948 { \
sca8er 2:5853bf44af9f 6949 (_Irp)->CurrentLocation--; \
sca8er 2:5853bf44af9f 6950 (_Irp)->Tail.Overlay.CurrentStackLocation--; \
sca8er 2:5853bf44af9f 6951 }
sca8er 2:5853bf44af9f 6952
sca8er 2:5853bf44af9f 6953 NTOSAPI
sca8er 2:5853bf44af9f 6954 NTSTATUS
sca8er 2:5853bf44af9f 6955 DDKAPI
sca8er 2:5853bf44af9f 6956 IoSetPartitionInformationEx(
sca8er 2:5853bf44af9f 6957 /*IN*/ PDEVICE_OBJECT DeviceObject,
sca8er 2:5853bf44af9f 6958 /*IN*/ ULONG PartitionNumber,
sca8er 2:5853bf44af9f 6959 /*IN*/ struct _SET_PARTITION_INFORMATION_EX *PartitionInfo);
sca8er 2:5853bf44af9f 6960
sca8er 2:5853bf44af9f 6961 NTOSAPI
sca8er 2:5853bf44af9f 6962 VOID
sca8er 2:5853bf44af9f 6963 DDKAPI
sca8er 2:5853bf44af9f 6964 IoSetShareAccess(
sca8er 2:5853bf44af9f 6965 /*IN*/ ACCESS_MASK DesiredAccess,
sca8er 2:5853bf44af9f 6966 /*IN*/ ULONG DesiredShareAccess,
sca8er 2:5853bf44af9f 6967 /*IN OUT*/ PFILE_OBJECT FileObject,
sca8er 2:5853bf44af9f 6968 /*OUT*/ PSHARE_ACCESS ShareAccess);
sca8er 2:5853bf44af9f 6969
sca8er 2:5853bf44af9f 6970 NTOSAPI
sca8er 2:5853bf44af9f 6971 VOID
sca8er 2:5853bf44af9f 6972 DDKAPI
sca8er 2:5853bf44af9f 6973 IoSetStartIoAttributes(
sca8er 2:5853bf44af9f 6974 /*IN*/ PDEVICE_OBJECT DeviceObject,
sca8er 2:5853bf44af9f 6975 /*IN*/ BOOLEAN DeferredStartIo,
sca8er 2:5853bf44af9f 6976 /*IN*/ BOOLEAN NonCancelable);
sca8er 2:5853bf44af9f 6977
sca8er 2:5853bf44af9f 6978 NTOSAPI
sca8er 2:5853bf44af9f 6979 NTSTATUS
sca8er 2:5853bf44af9f 6980 DDKAPI
sca8er 2:5853bf44af9f 6981 IoSetSystemPartition(
sca8er 2:5853bf44af9f 6982 /*IN*/ PUNICODE_STRING VolumeNameString);
sca8er 2:5853bf44af9f 6983
sca8er 2:5853bf44af9f 6984 NTOSAPI
sca8er 2:5853bf44af9f 6985 BOOLEAN
sca8er 2:5853bf44af9f 6986 DDKAPI
sca8er 2:5853bf44af9f 6987 IoSetThreadHardErrorMode(
sca8er 2:5853bf44af9f 6988 /*IN*/ BOOLEAN EnableHardErrors);
sca8er 2:5853bf44af9f 6989
sca8er 2:5853bf44af9f 6990 /*
sca8er 2:5853bf44af9f 6991 * USHORT
sca8er 2:5853bf44af9f 6992 * IoSizeOfIrp(
sca8er 2:5853bf44af9f 6993 * IN CCHAR StackSize)
sca8er 2:5853bf44af9f 6994 */
sca8er 2:5853bf44af9f 6995 #define IoSizeOfIrp(_StackSize) \
sca8er 2:5853bf44af9f 6996 ((USHORT) (sizeof(IRP) + ((_StackSize) * (sizeof(IO_STACK_LOCATION)))))
sca8er 2:5853bf44af9f 6997
sca8er 2:5853bf44af9f 6998 /*
sca8er 2:5853bf44af9f 6999 * VOID
sca8er 2:5853bf44af9f 7000 * IoSkipCurrentIrpStackLocation(
sca8er 2:5853bf44af9f 7001 * IN PIRP Irp)
sca8er 2:5853bf44af9f 7002 */
sca8er 2:5853bf44af9f 7003 #define IoSkipCurrentIrpStackLocation(_Irp) \
sca8er 2:5853bf44af9f 7004 { \
sca8er 2:5853bf44af9f 7005 (_Irp)->CurrentLocation++; \
sca8er 2:5853bf44af9f 7006 (_Irp)->Tail.Overlay.CurrentStackLocation++; \
sca8er 2:5853bf44af9f 7007 }
sca8er 2:5853bf44af9f 7008
sca8er 2:5853bf44af9f 7009 NTOSAPI
sca8er 2:5853bf44af9f 7010 VOID
sca8er 2:5853bf44af9f 7011 DDKAPI
sca8er 2:5853bf44af9f 7012 IoStartNextPacket(
sca8er 2:5853bf44af9f 7013 /*IN*/ PDEVICE_OBJECT DeviceObject,
sca8er 2:5853bf44af9f 7014 /*IN*/ BOOLEAN Cancelable);
sca8er 2:5853bf44af9f 7015
sca8er 2:5853bf44af9f 7016 NTOSAPI
sca8er 2:5853bf44af9f 7017 VOID
sca8er 2:5853bf44af9f 7018 DDKAPI
sca8er 2:5853bf44af9f 7019 IoStartNextPacketByKey(
sca8er 2:5853bf44af9f 7020 /*IN*/ PDEVICE_OBJECT DeviceObject,
sca8er 2:5853bf44af9f 7021 /*IN*/ BOOLEAN Cancelable,
sca8er 2:5853bf44af9f 7022 /*IN*/ ULONG Key);
sca8er 2:5853bf44af9f 7023
sca8er 2:5853bf44af9f 7024 NTOSAPI
sca8er 2:5853bf44af9f 7025 VOID
sca8er 2:5853bf44af9f 7026 DDKAPI
sca8er 2:5853bf44af9f 7027 IoStartPacket(
sca8er 2:5853bf44af9f 7028 /*IN*/ PDEVICE_OBJECT DeviceObject,
sca8er 2:5853bf44af9f 7029 /*IN*/ PIRP Irp,
sca8er 2:5853bf44af9f 7030 /*IN*/ PULONG Key /*OPTIONAL*/,
sca8er 2:5853bf44af9f 7031 /*IN*/ PDRIVER_CANCEL CancelFunction /*OPTIONAL*/);
sca8er 2:5853bf44af9f 7032
sca8er 2:5853bf44af9f 7033 NTOSAPI
sca8er 2:5853bf44af9f 7034 VOID
sca8er 2:5853bf44af9f 7035 DDKAPI
sca8er 2:5853bf44af9f 7036 IoStartTimer(
sca8er 2:5853bf44af9f 7037 /*IN*/ PDEVICE_OBJECT DeviceObject);
sca8er 2:5853bf44af9f 7038
sca8er 2:5853bf44af9f 7039 NTOSAPI
sca8er 2:5853bf44af9f 7040 VOID
sca8er 2:5853bf44af9f 7041 DDKAPI
sca8er 2:5853bf44af9f 7042 IoStopTimer(
sca8er 2:5853bf44af9f 7043 /*IN*/ PDEVICE_OBJECT DeviceObject);
sca8er 2:5853bf44af9f 7044
sca8er 2:5853bf44af9f 7045 NTOSAPI
sca8er 2:5853bf44af9f 7046 NTSTATUS
sca8er 2:5853bf44af9f 7047 DDKAPI
sca8er 2:5853bf44af9f 7048 IoUnregisterPlugPlayNotification(
sca8er 2:5853bf44af9f 7049 /*IN*/ PVOID NotificationEntry);
sca8er 2:5853bf44af9f 7050
sca8er 2:5853bf44af9f 7051 NTOSAPI
sca8er 2:5853bf44af9f 7052 VOID
sca8er 2:5853bf44af9f 7053 DDKAPI
sca8er 2:5853bf44af9f 7054 IoUnregisterShutdownNotification(
sca8er 2:5853bf44af9f 7055 /*IN*/ PDEVICE_OBJECT DeviceObject);
sca8er 2:5853bf44af9f 7056
sca8er 2:5853bf44af9f 7057 NTOSAPI
sca8er 2:5853bf44af9f 7058 VOID
sca8er 2:5853bf44af9f 7059 DDKAPI
sca8er 2:5853bf44af9f 7060 IoUpdateShareAccess(
sca8er 2:5853bf44af9f 7061 /*IN*/ PFILE_OBJECT FileObject,
sca8er 2:5853bf44af9f 7062 /*IN OUT*/ PSHARE_ACCESS ShareAccess);
sca8er 2:5853bf44af9f 7063
sca8er 2:5853bf44af9f 7064 NTOSAPI
sca8er 2:5853bf44af9f 7065 NTSTATUS
sca8er 2:5853bf44af9f 7066 DDKAPI
sca8er 2:5853bf44af9f 7067 IoVerifyPartitionTable(
sca8er 2:5853bf44af9f 7068 /*IN*/ PDEVICE_OBJECT DeviceObject,
sca8er 2:5853bf44af9f 7069 /*IN*/ BOOLEAN FixErrors);
sca8er 2:5853bf44af9f 7070
sca8er 2:5853bf44af9f 7071 NTOSAPI
sca8er 2:5853bf44af9f 7072 NTSTATUS
sca8er 2:5853bf44af9f 7073 DDKAPI
sca8er 2:5853bf44af9f 7074 IoVolumeDeviceToDosName(
sca8er 2:5853bf44af9f 7075 /*IN*/ PVOID VolumeDeviceObject,
sca8er 2:5853bf44af9f 7076 /*OUT*/ PUNICODE_STRING DosName);
sca8er 2:5853bf44af9f 7077
sca8er 2:5853bf44af9f 7078 NTOSAPI
sca8er 2:5853bf44af9f 7079 NTSTATUS
sca8er 2:5853bf44af9f 7080 DDKAPI
sca8er 2:5853bf44af9f 7081 IoWMIAllocateInstanceIds(
sca8er 2:5853bf44af9f 7082 /*IN*/ GUID *Guid,
sca8er 2:5853bf44af9f 7083 /*IN*/ ULONG InstanceCount,
sca8er 2:5853bf44af9f 7084 /*OUT*/ ULONG *FirstInstanceId);
sca8er 2:5853bf44af9f 7085
sca8er 2:5853bf44af9f 7086 NTOSAPI
sca8er 2:5853bf44af9f 7087 ULONG
sca8er 2:5853bf44af9f 7088 DDKAPI
sca8er 2:5853bf44af9f 7089 IoWMIDeviceObjectToProviderId(
sca8er 2:5853bf44af9f 7090 /*IN*/ PDEVICE_OBJECT DeviceObject);
sca8er 2:5853bf44af9f 7091
sca8er 2:5853bf44af9f 7092 NTOSAPI
sca8er 2:5853bf44af9f 7093 NTSTATUS
sca8er 2:5853bf44af9f 7094 DDKAPI
sca8er 2:5853bf44af9f 7095 IoWMIDeviceObjectToInstanceName(
sca8er 2:5853bf44af9f 7096 /*IN*/ PVOID DataBlockObject,
sca8er 2:5853bf44af9f 7097 /*IN*/ PDEVICE_OBJECT DeviceObject,
sca8er 2:5853bf44af9f 7098 /*OUT*/ PUNICODE_STRING InstanceName);
sca8er 2:5853bf44af9f 7099
sca8er 2:5853bf44af9f 7100 NTOSAPI
sca8er 2:5853bf44af9f 7101 NTSTATUS
sca8er 2:5853bf44af9f 7102 DDKAPI
sca8er 2:5853bf44af9f 7103 IoWMIExecuteMethod(
sca8er 2:5853bf44af9f 7104 /*IN*/ PVOID DataBlockObject,
sca8er 2:5853bf44af9f 7105 /*IN*/ PUNICODE_STRING InstanceName,
sca8er 2:5853bf44af9f 7106 /*IN*/ ULONG MethodId,
sca8er 2:5853bf44af9f 7107 /*IN*/ ULONG InBufferSize,
sca8er 2:5853bf44af9f 7108 /*IN OUT*/ PULONG OutBufferSize,
sca8er 2:5853bf44af9f 7109 /*IN OUT*/ PUCHAR InOutBuffer);
sca8er 2:5853bf44af9f 7110
sca8er 2:5853bf44af9f 7111 NTOSAPI
sca8er 2:5853bf44af9f 7112 NTSTATUS
sca8er 2:5853bf44af9f 7113 DDKAPI
sca8er 2:5853bf44af9f 7114 IoWMIHandleToInstanceName(
sca8er 2:5853bf44af9f 7115 /*IN*/ PVOID DataBlockObject,
sca8er 2:5853bf44af9f 7116 /*IN*/ HANDLE FileHandle,
sca8er 2:5853bf44af9f 7117 /*OUT*/ PUNICODE_STRING InstanceName);
sca8er 2:5853bf44af9f 7118
sca8er 2:5853bf44af9f 7119 NTOSAPI
sca8er 2:5853bf44af9f 7120 NTSTATUS
sca8er 2:5853bf44af9f 7121 DDKAPI
sca8er 2:5853bf44af9f 7122 IoWMIOpenBlock(
sca8er 2:5853bf44af9f 7123 /*IN*/ GUID *DataBlockGuid,
sca8er 2:5853bf44af9f 7124 /*IN*/ ULONG DesiredAccess,
sca8er 2:5853bf44af9f 7125 /*OUT*/ PVOID *DataBlockObject);
sca8er 2:5853bf44af9f 7126
sca8er 2:5853bf44af9f 7127 NTOSAPI
sca8er 2:5853bf44af9f 7128 NTSTATUS
sca8er 2:5853bf44af9f 7129 DDKAPI
sca8er 2:5853bf44af9f 7130 IoWMIQueryAllData(
sca8er 2:5853bf44af9f 7131 /*IN*/ PVOID DataBlockObject,
sca8er 2:5853bf44af9f 7132 /*IN OUT*/ ULONG *InOutBufferSize,
sca8er 2:5853bf44af9f 7133 /*OUT*/ PVOID OutBuffer);
sca8er 2:5853bf44af9f 7134
sca8er 2:5853bf44af9f 7135 NTOSAPI
sca8er 2:5853bf44af9f 7136 NTSTATUS
sca8er 2:5853bf44af9f 7137 DDKAPI
sca8er 2:5853bf44af9f 7138 IoWMIQueryAllDataMultiple(
sca8er 2:5853bf44af9f 7139 /*IN*/ PVOID *DataBlockObjectList,
sca8er 2:5853bf44af9f 7140 /*IN*/ ULONG ObjectCount,
sca8er 2:5853bf44af9f 7141 /*IN OUT*/ ULONG *InOutBufferSize,
sca8er 2:5853bf44af9f 7142 /*OUT*/ PVOID OutBuffer);
sca8er 2:5853bf44af9f 7143
sca8er 2:5853bf44af9f 7144 NTOSAPI
sca8er 2:5853bf44af9f 7145 NTSTATUS
sca8er 2:5853bf44af9f 7146 DDKAPI
sca8er 2:5853bf44af9f 7147 IoWMIQuerySingleInstance(
sca8er 2:5853bf44af9f 7148 /*IN*/ PVOID DataBlockObject,
sca8er 2:5853bf44af9f 7149 /*IN*/ PUNICODE_STRING InstanceName,
sca8er 2:5853bf44af9f 7150 /*IN OUT*/ ULONG *InOutBufferSize,
sca8er 2:5853bf44af9f 7151 /*OUT*/ PVOID OutBuffer);
sca8er 2:5853bf44af9f 7152
sca8er 2:5853bf44af9f 7153 NTOSAPI
sca8er 2:5853bf44af9f 7154 NTSTATUS
sca8er 2:5853bf44af9f 7155 DDKAPI
sca8er 2:5853bf44af9f 7156 IoWMIQuerySingleInstanceMultiple(
sca8er 2:5853bf44af9f 7157 /*IN*/ PVOID *DataBlockObjectList,
sca8er 2:5853bf44af9f 7158 /*IN*/ PUNICODE_STRING InstanceNames,
sca8er 2:5853bf44af9f 7159 /*IN*/ ULONG ObjectCount,
sca8er 2:5853bf44af9f 7160 /*IN OUT*/ ULONG *InOutBufferSize,
sca8er 2:5853bf44af9f 7161 /*OUT*/ PVOID OutBuffer);
sca8er 2:5853bf44af9f 7162
sca8er 2:5853bf44af9f 7163 NTOSAPI
sca8er 2:5853bf44af9f 7164 NTSTATUS
sca8er 2:5853bf44af9f 7165 DDKAPI
sca8er 2:5853bf44af9f 7166 IoWMIRegistrationControl(
sca8er 2:5853bf44af9f 7167 /*IN*/ PDEVICE_OBJECT DeviceObject,
sca8er 2:5853bf44af9f 7168 /*IN*/ ULONG Action);
sca8er 2:5853bf44af9f 7169
sca8er 2:5853bf44af9f 7170 NTOSAPI
sca8er 2:5853bf44af9f 7171 NTSTATUS
sca8er 2:5853bf44af9f 7172 DDKAPI
sca8er 2:5853bf44af9f 7173 IoWMISetNotificationCallback(
sca8er 2:5853bf44af9f 7174 /*IN*/ PVOID Object,
sca8er 2:5853bf44af9f 7175 /*IN*/ WMI_NOTIFICATION_CALLBACK Callback,
sca8er 2:5853bf44af9f 7176 /*IN*/ PVOID Context);
sca8er 2:5853bf44af9f 7177
sca8er 2:5853bf44af9f 7178 NTOSAPI
sca8er 2:5853bf44af9f 7179 NTSTATUS
sca8er 2:5853bf44af9f 7180 DDKAPI
sca8er 2:5853bf44af9f 7181 IoWMISetSingleInstance(
sca8er 2:5853bf44af9f 7182 /*IN*/ PVOID DataBlockObject,
sca8er 2:5853bf44af9f 7183 /*IN*/ PUNICODE_STRING InstanceName,
sca8er 2:5853bf44af9f 7184 /*IN*/ ULONG Version,
sca8er 2:5853bf44af9f 7185 /*IN*/ ULONG ValueBufferSize,
sca8er 2:5853bf44af9f 7186 /*IN*/ PVOID ValueBuffer);
sca8er 2:5853bf44af9f 7187
sca8er 2:5853bf44af9f 7188 NTOSAPI
sca8er 2:5853bf44af9f 7189 NTSTATUS
sca8er 2:5853bf44af9f 7190 DDKAPI
sca8er 2:5853bf44af9f 7191 IoWMISetSingleItem(
sca8er 2:5853bf44af9f 7192 /*IN*/ PVOID DataBlockObject,
sca8er 2:5853bf44af9f 7193 /*IN*/ PUNICODE_STRING InstanceName,
sca8er 2:5853bf44af9f 7194 /*IN*/ ULONG DataItemId,
sca8er 2:5853bf44af9f 7195 /*IN*/ ULONG Version,
sca8er 2:5853bf44af9f 7196 /*IN*/ ULONG ValueBufferSize,
sca8er 2:5853bf44af9f 7197 /*IN*/ PVOID ValueBuffer);
sca8er 2:5853bf44af9f 7198
sca8er 2:5853bf44af9f 7199 NTOSAPI
sca8er 2:5853bf44af9f 7200 NTSTATUS
sca8er 2:5853bf44af9f 7201 DDKAPI
sca8er 2:5853bf44af9f 7202 IoWMISuggestInstanceName(
sca8er 2:5853bf44af9f 7203 /*IN*/ PDEVICE_OBJECT PhysicalDeviceObject /*OPTIONAL*/,
sca8er 2:5853bf44af9f 7204 /*IN*/ PUNICODE_STRING SymbolicLinkName /*OPTIONAL*/,
sca8er 2:5853bf44af9f 7205 /*IN*/ BOOLEAN CombineNames,
sca8er 2:5853bf44af9f 7206 /*OUT*/ PUNICODE_STRING SuggestedInstanceName);
sca8er 2:5853bf44af9f 7207
sca8er 2:5853bf44af9f 7208 NTOSAPI
sca8er 2:5853bf44af9f 7209 NTSTATUS
sca8er 2:5853bf44af9f 7210 DDKAPI
sca8er 2:5853bf44af9f 7211 IoWMIWriteEvent(
sca8er 2:5853bf44af9f 7212 /*IN*/ PVOID WnodeEventItem);
sca8er 2:5853bf44af9f 7213
sca8er 2:5853bf44af9f 7214 NTOSAPI
sca8er 2:5853bf44af9f 7215 VOID
sca8er 2:5853bf44af9f 7216 DDKAPI
sca8er 2:5853bf44af9f 7217 IoWriteErrorLogEntry(
sca8er 2:5853bf44af9f 7218 /*IN*/ PVOID ElEntry);
sca8er 2:5853bf44af9f 7219
sca8er 2:5853bf44af9f 7220 NTOSAPI
sca8er 2:5853bf44af9f 7221 NTSTATUS
sca8er 2:5853bf44af9f 7222 DDKAPI
sca8er 2:5853bf44af9f 7223 IoWritePartitionTableEx(
sca8er 2:5853bf44af9f 7224 /*IN*/ PDEVICE_OBJECT DeviceObject,
sca8er 2:5853bf44af9f 7225 /*IN*/ struct _DRIVE_LAYOUT_INFORMATION_EX *PartitionBuffer);
sca8er 2:5853bf44af9f 7226
sca8er 2:5853bf44af9f 7227
sca8er 2:5853bf44af9f 7228
sca8er 2:5853bf44af9f 7229 /** Kernel routines **/
sca8er 2:5853bf44af9f 7230
sca8er 2:5853bf44af9f 7231 NTOSAPI
sca8er 2:5853bf44af9f 7232 VOID
sca8er 2:5853bf44af9f 7233 DDKFASTAPI
sca8er 2:5853bf44af9f 7234 KeAcquireInStackQueuedSpinLock(
sca8er 2:5853bf44af9f 7235 /*IN*/ PKSPIN_LOCK SpinLock,
sca8er 2:5853bf44af9f 7236 /*IN*/ PKLOCK_QUEUE_HANDLE LockHandle);
sca8er 2:5853bf44af9f 7237
sca8er 2:5853bf44af9f 7238 NTOSAPI
sca8er 2:5853bf44af9f 7239 VOID
sca8er 2:5853bf44af9f 7240 DDKFASTAPI
sca8er 2:5853bf44af9f 7241 KeAcquireInStackQueuedSpinLockAtDpcLevel(
sca8er 2:5853bf44af9f 7242 /*IN*/ PKSPIN_LOCK SpinLock,
sca8er 2:5853bf44af9f 7243 /*IN*/ PKLOCK_QUEUE_HANDLE LockHandle);
sca8er 2:5853bf44af9f 7244
sca8er 2:5853bf44af9f 7245 NTOSAPI
sca8er 2:5853bf44af9f 7246 KIRQL
sca8er 2:5853bf44af9f 7247 DDKAPI
sca8er 2:5853bf44af9f 7248 KeAcquireInterruptSpinLock(
sca8er 2:5853bf44af9f 7249 /*IN*/ PKINTERRUPT Interrupt);
sca8er 2:5853bf44af9f 7250
sca8er 2:5853bf44af9f 7251 NTOSAPI
sca8er 2:5853bf44af9f 7252 VOID
sca8er 2:5853bf44af9f 7253 DDKAPI
sca8er 2:5853bf44af9f 7254 KeAcquireSpinLock(
sca8er 2:5853bf44af9f 7255 /*IN*/ PKSPIN_LOCK SpinLock,
sca8er 2:5853bf44af9f 7256 /*OUT*/ PKIRQL OldIrql);
sca8er 2:5853bf44af9f 7257
sca8er 2:5853bf44af9f 7258 /* System Service Dispatch Table */
sca8er 2:5853bf44af9f 7259 typedef PVOID (NTAPI * SSDT)(VOID);
sca8er 2:5853bf44af9f 7260 typedef SSDT * PSSDT;
sca8er 2:5853bf44af9f 7261
sca8er 2:5853bf44af9f 7262 /* System Service Parameters Table */
sca8er 2:5853bf44af9f 7263 typedef UCHAR SSPT, * PSSPT;
sca8er 2:5853bf44af9f 7264
sca8er 2:5853bf44af9f 7265 typedef struct _SSDT_ENTRY {
sca8er 2:5853bf44af9f 7266 PSSDT SSDT;
sca8er 2:5853bf44af9f 7267 PULONG ServiceCounterTable;
sca8er 2:5853bf44af9f 7268 ULONG NumberOfServices;
sca8er 2:5853bf44af9f 7269 PSSPT SSPT;
sca8er 2:5853bf44af9f 7270 } SSDT_ENTRY, *PSSDT_ENTRY;
sca8er 2:5853bf44af9f 7271
sca8er 2:5853bf44af9f 7272 NTOSAPI
sca8er 2:5853bf44af9f 7273 BOOLEAN
sca8er 2:5853bf44af9f 7274 DDKAPI
sca8er 2:5853bf44af9f 7275 KeAddSystemServiceTable(
sca8er 2:5853bf44af9f 7276 /*IN*/ PSSDT SSDT,
sca8er 2:5853bf44af9f 7277 /*IN*/ PULONG ServiceCounterTable,
sca8er 2:5853bf44af9f 7278 /*IN*/ ULONG NumberOfServices,
sca8er 2:5853bf44af9f 7279 /*IN*/ PSSPT SSPT,
sca8er 2:5853bf44af9f 7280 /*IN*/ ULONG TableIndex);
sca8er 2:5853bf44af9f 7281
sca8er 2:5853bf44af9f 7282 NTOSAPI
sca8er 2:5853bf44af9f 7283 BOOLEAN
sca8er 2:5853bf44af9f 7284 DDKAPI
sca8er 2:5853bf44af9f 7285 KeAreApcsDisabled(
sca8er 2:5853bf44af9f 7286 VOID);
sca8er 2:5853bf44af9f 7287
sca8er 2:5853bf44af9f 7288 NTOSAPI
sca8er 2:5853bf44af9f 7289 VOID
sca8er 2:5853bf44af9f 7290 DDKAPI
sca8er 2:5853bf44af9f 7291 KeAttachProcess(
sca8er 2:5853bf44af9f 7292 /*IN*/ PEPROCESS Process);
sca8er 2:5853bf44af9f 7293
sca8er 2:5853bf44af9f 7294 NTOSAPI
sca8er 2:5853bf44af9f 7295 VOID
sca8er 2:5853bf44af9f 7296 DDKAPI
sca8er 2:5853bf44af9f 7297 KeBugCheck(
sca8er 2:5853bf44af9f 7298 /*IN*/ ULONG BugCheckCode);
sca8er 2:5853bf44af9f 7299
sca8er 2:5853bf44af9f 7300 NTOSAPI
sca8er 2:5853bf44af9f 7301 VOID
sca8er 2:5853bf44af9f 7302 DDKAPI
sca8er 2:5853bf44af9f 7303 KeBugCheckEx(
sca8er 2:5853bf44af9f 7304 /*IN*/ ULONG BugCheckCode,
sca8er 2:5853bf44af9f 7305 /*IN*/ ULONG_PTR BugCheckParameter1,
sca8er 2:5853bf44af9f 7306 /*IN*/ ULONG_PTR BugCheckParameter2,
sca8er 2:5853bf44af9f 7307 /*IN*/ ULONG_PTR BugCheckParameter3,
sca8er 2:5853bf44af9f 7308 /*IN*/ ULONG_PTR BugCheckParameter4);
sca8er 2:5853bf44af9f 7309
sca8er 2:5853bf44af9f 7310 NTOSAPI
sca8er 2:5853bf44af9f 7311 BOOLEAN
sca8er 2:5853bf44af9f 7312 DDKAPI
sca8er 2:5853bf44af9f 7313 KeCancelTimer(
sca8er 2:5853bf44af9f 7314 /*IN*/ PKTIMER Timer);
sca8er 2:5853bf44af9f 7315
sca8er 2:5853bf44af9f 7316 NTOSAPI
sca8er 2:5853bf44af9f 7317 VOID
sca8er 2:5853bf44af9f 7318 DDKAPI
sca8er 2:5853bf44af9f 7319 KeClearEvent(
sca8er 2:5853bf44af9f 7320 /*IN*/ PRKEVENT Event);
sca8er 2:5853bf44af9f 7321
sca8er 2:5853bf44af9f 7322 NTOSAPI
sca8er 2:5853bf44af9f 7323 NTSTATUS
sca8er 2:5853bf44af9f 7324 DDKAPI
sca8er 2:5853bf44af9f 7325 KeDelayExecutionThread(
sca8er 2:5853bf44af9f 7326 /*IN*/ KPROCESSOR_MODE WaitMode,
sca8er 2:5853bf44af9f 7327 /*IN*/ BOOLEAN Alertable,
sca8er 2:5853bf44af9f 7328 /*IN*/ PLARGE_INTEGER Interval);
sca8er 2:5853bf44af9f 7329
sca8er 2:5853bf44af9f 7330 NTOSAPI
sca8er 2:5853bf44af9f 7331 BOOLEAN
sca8er 2:5853bf44af9f 7332 DDKAPI
sca8er 2:5853bf44af9f 7333 KeDeregisterBugCheckCallback(
sca8er 2:5853bf44af9f 7334 /*IN*/ PKBUGCHECK_CALLBACK_RECORD CallbackRecord);
sca8er 2:5853bf44af9f 7335
sca8er 2:5853bf44af9f 7336 NTOSAPI
sca8er 2:5853bf44af9f 7337 VOID
sca8er 2:5853bf44af9f 7338 DDKAPI
sca8er 2:5853bf44af9f 7339 KeDetachProcess(
sca8er 2:5853bf44af9f 7340 VOID);
sca8er 2:5853bf44af9f 7341
sca8er 2:5853bf44af9f 7342 NTOSAPI
sca8er 2:5853bf44af9f 7343 VOID
sca8er 2:5853bf44af9f 7344 DDKAPI
sca8er 2:5853bf44af9f 7345 KeEnterCriticalRegion(
sca8er 2:5853bf44af9f 7346 VOID);
sca8er 2:5853bf44af9f 7347
sca8er 2:5853bf44af9f 7348 /*
sca8er 2:5853bf44af9f 7349 * VOID
sca8er 2:5853bf44af9f 7350 * KeFlushIoBuffers(
sca8er 2:5853bf44af9f 7351 * IN PMDL Mdl,
sca8er 2:5853bf44af9f 7352 * IN BOOLEAN ReadOperation,
sca8er 2:5853bf44af9f 7353 * IN BOOLEAN DmaOperation)
sca8er 2:5853bf44af9f 7354 */
sca8er 2:5853bf44af9f 7355 #define KeFlushIoBuffers(_Mdl, _ReadOperation, _DmaOperation)
sca8er 2:5853bf44af9f 7356
sca8er 2:5853bf44af9f 7357 NTOSAPI
sca8er 2:5853bf44af9f 7358 VOID
sca8er 2:5853bf44af9f 7359 DDKAPI
sca8er 2:5853bf44af9f 7360 KeFlushQueuedDpcs(VOID);
sca8er 2:5853bf44af9f 7361
sca8er 2:5853bf44af9f 7362 NTOSAPI
sca8er 2:5853bf44af9f 7363 PRKTHREAD
sca8er 2:5853bf44af9f 7364 DDKAPI
sca8er 2:5853bf44af9f 7365 KeGetCurrentThread(
sca8er 2:5853bf44af9f 7366 VOID);
sca8er 2:5853bf44af9f 7367
sca8er 2:5853bf44af9f 7368 NTOSAPI
sca8er 2:5853bf44af9f 7369 KPROCESSOR_MODE
sca8er 2:5853bf44af9f 7370 DDKAPI
sca8er 2:5853bf44af9f 7371 KeGetPreviousMode(
sca8er 2:5853bf44af9f 7372 VOID);
sca8er 2:5853bf44af9f 7373
sca8er 2:5853bf44af9f 7374 NTOSAPI
sca8er 2:5853bf44af9f 7375 ULONG
sca8er 2:5853bf44af9f 7376 DDKAPI
sca8er 2:5853bf44af9f 7377 KeGetRecommendedSharedDataAlignment(
sca8er 2:5853bf44af9f 7378 VOID);
sca8er 2:5853bf44af9f 7379
sca8er 2:5853bf44af9f 7380 NTOSAPI
sca8er 2:5853bf44af9f 7381 VOID
sca8er 2:5853bf44af9f 7382 DDKAPI
sca8er 2:5853bf44af9f 7383 KeInitializeApc(
sca8er 2:5853bf44af9f 7384 /*IN*/ PKAPC Apc,
sca8er 2:5853bf44af9f 7385 /*IN*/ PKTHREAD Thread,
sca8er 2:5853bf44af9f 7386 /*IN*/ UCHAR StateIndex,
sca8er 2:5853bf44af9f 7387 /*IN*/ PKKERNEL_ROUTINE KernelRoutine,
sca8er 2:5853bf44af9f 7388 /*IN*/ PKRUNDOWN_ROUTINE RundownRoutine,
sca8er 2:5853bf44af9f 7389 /*IN*/ PKNORMAL_ROUTINE NormalRoutine,
sca8er 2:5853bf44af9f 7390 /*IN*/ UCHAR Mode,
sca8er 2:5853bf44af9f 7391 /*IN*/ PVOID Context);
sca8er 2:5853bf44af9f 7392
sca8er 2:5853bf44af9f 7393 NTOSAPI
sca8er 2:5853bf44af9f 7394 VOID
sca8er 2:5853bf44af9f 7395 DDKAPI
sca8er 2:5853bf44af9f 7396 KeInitializeDeviceQueue(
sca8er 2:5853bf44af9f 7397 /*IN*/ PKDEVICE_QUEUE DeviceQueue);
sca8er 2:5853bf44af9f 7398
sca8er 2:5853bf44af9f 7399 NTOSAPI
sca8er 2:5853bf44af9f 7400 VOID
sca8er 2:5853bf44af9f 7401 DDKAPI
sca8er 2:5853bf44af9f 7402 KeInitializeMutex(
sca8er 2:5853bf44af9f 7403 /*IN*/ PRKMUTEX Mutex,
sca8er 2:5853bf44af9f 7404 /*IN*/ ULONG Level);
sca8er 2:5853bf44af9f 7405
sca8er 2:5853bf44af9f 7406 NTOSAPI
sca8er 2:5853bf44af9f 7407 VOID
sca8er 2:5853bf44af9f 7408 DDKAPI
sca8er 2:5853bf44af9f 7409 KeInitializeSemaphore(
sca8er 2:5853bf44af9f 7410 /*IN*/ PRKSEMAPHORE Semaphore,
sca8er 2:5853bf44af9f 7411 /*IN*/ LONG Count,
sca8er 2:5853bf44af9f 7412 /*IN*/ LONG Limit);
sca8er 2:5853bf44af9f 7413
sca8er 2:5853bf44af9f 7414 NTOSAPI
sca8er 2:5853bf44af9f 7415 VOID
sca8er 2:5853bf44af9f 7416 DDKAPI
sca8er 2:5853bf44af9f 7417 KeInitializeSpinLock(
sca8er 2:5853bf44af9f 7418 /*IN*/ PKSPIN_LOCK SpinLock);
sca8er 2:5853bf44af9f 7419
sca8er 2:5853bf44af9f 7420 NTOSAPI
sca8er 2:5853bf44af9f 7421 VOID
sca8er 2:5853bf44af9f 7422 DDKAPI
sca8er 2:5853bf44af9f 7423 KeInitializeTimer(
sca8er 2:5853bf44af9f 7424 /*IN*/ PKTIMER Timer);
sca8er 2:5853bf44af9f 7425
sca8er 2:5853bf44af9f 7426 NTOSAPI
sca8er 2:5853bf44af9f 7427 VOID
sca8er 2:5853bf44af9f 7428 DDKAPI
sca8er 2:5853bf44af9f 7429 KeInitializeTimerEx(
sca8er 2:5853bf44af9f 7430 /*IN*/ PKTIMER Timer,
sca8er 2:5853bf44af9f 7431 /*IN*/ TIMER_TYPE Type);
sca8er 2:5853bf44af9f 7432
sca8er 2:5853bf44af9f 7433 NTOSAPI
sca8er 2:5853bf44af9f 7434 BOOLEAN
sca8er 2:5853bf44af9f 7435 DDKAPI
sca8er 2:5853bf44af9f 7436 KeInsertByKeyDeviceQueue(
sca8er 2:5853bf44af9f 7437 /*IN*/ PKDEVICE_QUEUE DeviceQueue,
sca8er 2:5853bf44af9f 7438 /*IN*/ PKDEVICE_QUEUE_ENTRY DeviceQueueEntry,
sca8er 2:5853bf44af9f 7439 /*IN*/ ULONG SortKey);
sca8er 2:5853bf44af9f 7440
sca8er 2:5853bf44af9f 7441 NTOSAPI
sca8er 2:5853bf44af9f 7442 BOOLEAN
sca8er 2:5853bf44af9f 7443 DDKAPI
sca8er 2:5853bf44af9f 7444 KeInsertDeviceQueue(
sca8er 2:5853bf44af9f 7445 /*IN*/ PKDEVICE_QUEUE DeviceQueue,
sca8er 2:5853bf44af9f 7446 /*IN*/ PKDEVICE_QUEUE_ENTRY DeviceQueueEntry);
sca8er 2:5853bf44af9f 7447
sca8er 2:5853bf44af9f 7448 NTOSAPI
sca8er 2:5853bf44af9f 7449 BOOLEAN
sca8er 2:5853bf44af9f 7450 DDKAPI
sca8er 2:5853bf44af9f 7451 KeInsertQueueDpc(
sca8er 2:5853bf44af9f 7452 /*IN*/ PRKDPC Dpc,
sca8er 2:5853bf44af9f 7453 /*IN*/ PVOID SystemArgument1,
sca8er 2:5853bf44af9f 7454 /*IN*/ PVOID SystemArgument2);
sca8er 2:5853bf44af9f 7455
sca8er 2:5853bf44af9f 7456 NTOSAPI
sca8er 2:5853bf44af9f 7457 VOID
sca8er 2:5853bf44af9f 7458 DDKAPI
sca8er 2:5853bf44af9f 7459 KeLeaveCriticalRegion(
sca8er 2:5853bf44af9f 7460 VOID);
sca8er 2:5853bf44af9f 7461
sca8er 2:5853bf44af9f 7462 #define KeMemoryBarrier() asm("mfence;")
sca8er 2:5853bf44af9f 7463
sca8er 2:5853bf44af9f 7464 NTOSAPI
sca8er 2:5853bf44af9f 7465 NTSTATUS
sca8er 2:5853bf44af9f 7466 DDKAPI
sca8er 2:5853bf44af9f 7467 KePulseEvent(
sca8er 2:5853bf44af9f 7468 /*IN*/ PRKEVENT Event,
sca8er 2:5853bf44af9f 7469 /*IN*/ KPRIORITY Increment,
sca8er 2:5853bf44af9f 7470 /*IN*/ BOOLEAN Wait);
sca8er 2:5853bf44af9f 7471
sca8er 2:5853bf44af9f 7472 NTOSAPI
sca8er 2:5853bf44af9f 7473 ULONGLONG
sca8er 2:5853bf44af9f 7474 DDKAPI
sca8er 2:5853bf44af9f 7475 KeQueryInterruptTime(
sca8er 2:5853bf44af9f 7476 VOID);
sca8er 2:5853bf44af9f 7477
sca8er 2:5853bf44af9f 7478 NTOSAPI
sca8er 2:5853bf44af9f 7479 LARGE_INTEGER
sca8er 2:5853bf44af9f 7480 DDKAPI
sca8er 2:5853bf44af9f 7481 KeQueryPerformanceCounter(
sca8er 2:5853bf44af9f 7482 /*OUT*/ PLARGE_INTEGER PerformanceFrequency /*OPTIONAL*/);
sca8er 2:5853bf44af9f 7483
sca8er 2:5853bf44af9f 7484 NTOSAPI
sca8er 2:5853bf44af9f 7485 KPRIORITY
sca8er 2:5853bf44af9f 7486 DDKAPI
sca8er 2:5853bf44af9f 7487 KeQueryPriorityThread(
sca8er 2:5853bf44af9f 7488 /*IN*/ PRKTHREAD Thread);
sca8er 2:5853bf44af9f 7489
sca8er 2:5853bf44af9f 7490 NTOSAPI
sca8er 2:5853bf44af9f 7491 VOID
sca8er 2:5853bf44af9f 7492 DDKAPI
sca8er 2:5853bf44af9f 7493 KeQuerySystemTime(
sca8er 2:5853bf44af9f 7494 /*OUT*/ PLARGE_INTEGER CurrentTime);
sca8er 2:5853bf44af9f 7495
sca8er 2:5853bf44af9f 7496 NTOSAPI
sca8er 2:5853bf44af9f 7497 VOID
sca8er 2:5853bf44af9f 7498 DDKAPI
sca8er 2:5853bf44af9f 7499 KeQueryTickCount(
sca8er 2:5853bf44af9f 7500 /*OUT*/ PLARGE_INTEGER TickCount);
sca8er 2:5853bf44af9f 7501
sca8er 2:5853bf44af9f 7502 NTOSAPI
sca8er 2:5853bf44af9f 7503 ULONG
sca8er 2:5853bf44af9f 7504 DDKAPI
sca8er 2:5853bf44af9f 7505 KeQueryTimeIncrement(
sca8er 2:5853bf44af9f 7506 VOID);
sca8er 2:5853bf44af9f 7507
sca8er 2:5853bf44af9f 7508 NTOSAPI
sca8er 2:5853bf44af9f 7509 LONG
sca8er 2:5853bf44af9f 7510 DDKAPI
sca8er 2:5853bf44af9f 7511 KeReadStateEvent(
sca8er 2:5853bf44af9f 7512 /*IN*/ PRKEVENT Event);
sca8er 2:5853bf44af9f 7513
sca8er 2:5853bf44af9f 7514 NTOSAPI
sca8er 2:5853bf44af9f 7515 LONG
sca8er 2:5853bf44af9f 7516 DDKAPI
sca8er 2:5853bf44af9f 7517 KeReadStateMutex(
sca8er 2:5853bf44af9f 7518 /*IN*/ PRKMUTEX Mutex);
sca8er 2:5853bf44af9f 7519
sca8er 2:5853bf44af9f 7520 NTOSAPI
sca8er 2:5853bf44af9f 7521 LONG
sca8er 2:5853bf44af9f 7522 DDKAPI
sca8er 2:5853bf44af9f 7523 KeReadStateSemaphore(
sca8er 2:5853bf44af9f 7524 /*IN*/ PRKSEMAPHORE Semaphore);
sca8er 2:5853bf44af9f 7525
sca8er 2:5853bf44af9f 7526 NTOSAPI
sca8er 2:5853bf44af9f 7527 BOOLEAN
sca8er 2:5853bf44af9f 7528 DDKAPI
sca8er 2:5853bf44af9f 7529 KeReadStateTimer(
sca8er 2:5853bf44af9f 7530 /*IN*/ PKTIMER Timer);
sca8er 2:5853bf44af9f 7531
sca8er 2:5853bf44af9f 7532 NTOSAPI
sca8er 2:5853bf44af9f 7533 BOOLEAN
sca8er 2:5853bf44af9f 7534 DDKAPI
sca8er 2:5853bf44af9f 7535 KeRegisterBugCheckCallback(
sca8er 2:5853bf44af9f 7536 /*IN*/ PKBUGCHECK_CALLBACK_RECORD CallbackRecord,
sca8er 2:5853bf44af9f 7537 /*IN*/ PKBUGCHECK_CALLBACK_ROUTINE CallbackRoutine,
sca8er 2:5853bf44af9f 7538 /*IN*/ PVOID Buffer,
sca8er 2:5853bf44af9f 7539 /*IN*/ ULONG Length,
sca8er 2:5853bf44af9f 7540 /*IN*/ PUCHAR Component);
sca8er 2:5853bf44af9f 7541
sca8er 2:5853bf44af9f 7542 NTOSAPI
sca8er 2:5853bf44af9f 7543 VOID
sca8er 2:5853bf44af9f 7544 DDKFASTAPI
sca8er 2:5853bf44af9f 7545 KeReleaseInStackQueuedSpinLock(
sca8er 2:5853bf44af9f 7546 /*IN*/ PKLOCK_QUEUE_HANDLE LockHandle);
sca8er 2:5853bf44af9f 7547
sca8er 2:5853bf44af9f 7548 NTOSAPI
sca8er 2:5853bf44af9f 7549 VOID
sca8er 2:5853bf44af9f 7550 DDKFASTAPI
sca8er 2:5853bf44af9f 7551 KeReleaseInStackQueuedSpinLockFromDpcLevel(
sca8er 2:5853bf44af9f 7552 /*IN*/ PKLOCK_QUEUE_HANDLE LockHandle);
sca8er 2:5853bf44af9f 7553
sca8er 2:5853bf44af9f 7554 NTOSAPI
sca8er 2:5853bf44af9f 7555 VOID
sca8er 2:5853bf44af9f 7556 DDKAPI
sca8er 2:5853bf44af9f 7557 KeReleaseInterruptSpinLock(
sca8er 2:5853bf44af9f 7558 /*IN*/ PKINTERRUPT Interrupt,
sca8er 2:5853bf44af9f 7559 /*IN*/ KIRQL OldIrql);
sca8er 2:5853bf44af9f 7560
sca8er 2:5853bf44af9f 7561 NTOSAPI
sca8er 2:5853bf44af9f 7562 LONG
sca8er 2:5853bf44af9f 7563 DDKAPI
sca8er 2:5853bf44af9f 7564 KeReleaseMutex(
sca8er 2:5853bf44af9f 7565 /*IN*/ PRKMUTEX Mutex,
sca8er 2:5853bf44af9f 7566 /*IN*/ BOOLEAN Wait);
sca8er 2:5853bf44af9f 7567
sca8er 2:5853bf44af9f 7568 NTOSAPI
sca8er 2:5853bf44af9f 7569 LONG
sca8er 2:5853bf44af9f 7570 DDKAPI
sca8er 2:5853bf44af9f 7571 KeReleaseSemaphore(
sca8er 2:5853bf44af9f 7572 /*IN*/ PRKSEMAPHORE Semaphore,
sca8er 2:5853bf44af9f 7573 /*IN*/ KPRIORITY Increment,
sca8er 2:5853bf44af9f 7574 /*IN*/ LONG Adjustment,
sca8er 2:5853bf44af9f 7575 /*IN*/ BOOLEAN Wait);
sca8er 2:5853bf44af9f 7576
sca8er 2:5853bf44af9f 7577 NTOSAPI
sca8er 2:5853bf44af9f 7578 VOID
sca8er 2:5853bf44af9f 7579 DDKAPI
sca8er 2:5853bf44af9f 7580 KeReleaseSpinLock(
sca8er 2:5853bf44af9f 7581 /*IN*/ PKSPIN_LOCK SpinLock,
sca8er 2:5853bf44af9f 7582 /*IN*/ KIRQL NewIrql);
sca8er 2:5853bf44af9f 7583
sca8er 2:5853bf44af9f 7584 NTOSAPI
sca8er 2:5853bf44af9f 7585 PKDEVICE_QUEUE_ENTRY
sca8er 2:5853bf44af9f 7586 DDKAPI
sca8er 2:5853bf44af9f 7587 KeRemoveByKeyDeviceQueue(
sca8er 2:5853bf44af9f 7588 /*IN*/ PKDEVICE_QUEUE DeviceQueue,
sca8er 2:5853bf44af9f 7589 /*IN*/ ULONG SortKey);
sca8er 2:5853bf44af9f 7590
sca8er 2:5853bf44af9f 7591 NTOSAPI
sca8er 2:5853bf44af9f 7592 PKDEVICE_QUEUE_ENTRY
sca8er 2:5853bf44af9f 7593 DDKAPI
sca8er 2:5853bf44af9f 7594 KeRemoveDeviceQueue(
sca8er 2:5853bf44af9f 7595 /*IN*/ PKDEVICE_QUEUE DeviceQueue);
sca8er 2:5853bf44af9f 7596
sca8er 2:5853bf44af9f 7597 NTOSAPI
sca8er 2:5853bf44af9f 7598 BOOLEAN
sca8er 2:5853bf44af9f 7599 DDKAPI
sca8er 2:5853bf44af9f 7600 KeRemoveEntryDeviceQueue(
sca8er 2:5853bf44af9f 7601 /*IN*/ PKDEVICE_QUEUE DeviceQueue,
sca8er 2:5853bf44af9f 7602 /*IN*/ PKDEVICE_QUEUE_ENTRY DeviceQueueEntry);
sca8er 2:5853bf44af9f 7603
sca8er 2:5853bf44af9f 7604 NTOSAPI
sca8er 2:5853bf44af9f 7605 BOOLEAN
sca8er 2:5853bf44af9f 7606 DDKAPI
sca8er 2:5853bf44af9f 7607 KeRemoveQueueDpc(
sca8er 2:5853bf44af9f 7608 /*IN*/ PRKDPC Dpc);
sca8er 2:5853bf44af9f 7609
sca8er 2:5853bf44af9f 7610 NTOSAPI
sca8er 2:5853bf44af9f 7611 LONG
sca8er 2:5853bf44af9f 7612 DDKAPI
sca8er 2:5853bf44af9f 7613 KeResetEvent(
sca8er 2:5853bf44af9f 7614 /*IN*/ PRKEVENT Event);
sca8er 2:5853bf44af9f 7615
sca8er 2:5853bf44af9f 7616 NTOSAPI
sca8er 2:5853bf44af9f 7617 NTSTATUS
sca8er 2:5853bf44af9f 7618 DDKAPI
sca8er 2:5853bf44af9f 7619 KeRestoreFloatingPointState(
sca8er 2:5853bf44af9f 7620 /*IN*/ PKFLOATING_SAVE FloatSave);
sca8er 2:5853bf44af9f 7621
sca8er 2:5853bf44af9f 7622 NTOSAPI
sca8er 2:5853bf44af9f 7623 NTSTATUS
sca8er 2:5853bf44af9f 7624 DDKAPI
sca8er 2:5853bf44af9f 7625 KeSaveFloatingPointState(
sca8er 2:5853bf44af9f 7626 /*OUT*/ PKFLOATING_SAVE FloatSave);
sca8er 2:5853bf44af9f 7627
sca8er 2:5853bf44af9f 7628 NTOSAPI
sca8er 2:5853bf44af9f 7629 LONG
sca8er 2:5853bf44af9f 7630 DDKAPI
sca8er 2:5853bf44af9f 7631 KeSetBasePriorityThread(
sca8er 2:5853bf44af9f 7632 /*IN*/ PRKTHREAD Thread,
sca8er 2:5853bf44af9f 7633 /*IN*/ LONG Increment);
sca8er 2:5853bf44af9f 7634
sca8er 2:5853bf44af9f 7635 NTOSAPI
sca8er 2:5853bf44af9f 7636 LONG
sca8er 2:5853bf44af9f 7637 DDKAPI
sca8er 2:5853bf44af9f 7638 KeSetEvent(
sca8er 2:5853bf44af9f 7639 /*IN*/ PRKEVENT Event,
sca8er 2:5853bf44af9f 7640 /*IN*/ KPRIORITY Increment,
sca8er 2:5853bf44af9f 7641 /*IN*/ BOOLEAN Wait);
sca8er 2:5853bf44af9f 7642
sca8er 2:5853bf44af9f 7643 NTOSAPI
sca8er 2:5853bf44af9f 7644 VOID
sca8er 2:5853bf44af9f 7645 DDKAPI
sca8er 2:5853bf44af9f 7646 KeSetImportanceDpc(
sca8er 2:5853bf44af9f 7647 /*IN*/ PRKDPC Dpc,
sca8er 2:5853bf44af9f 7648 /*IN*/ KDPC_IMPORTANCE Importance);
sca8er 2:5853bf44af9f 7649
sca8er 2:5853bf44af9f 7650 NTOSAPI
sca8er 2:5853bf44af9f 7651 KPRIORITY
sca8er 2:5853bf44af9f 7652 DDKAPI
sca8er 2:5853bf44af9f 7653 KeSetPriorityThread(
sca8er 2:5853bf44af9f 7654 /*IN*/ PKTHREAD Thread,
sca8er 2:5853bf44af9f 7655 /*IN*/ KPRIORITY Priority);
sca8er 2:5853bf44af9f 7656
sca8er 2:5853bf44af9f 7657 NTOSAPI
sca8er 2:5853bf44af9f 7658 VOID
sca8er 2:5853bf44af9f 7659 DDKAPI
sca8er 2:5853bf44af9f 7660 KeSetTargetProcessorDpc(
sca8er 2:5853bf44af9f 7661 /*IN*/ PRKDPC Dpc,
sca8er 2:5853bf44af9f 7662 /*IN*/ CCHAR Number);
sca8er 2:5853bf44af9f 7663
sca8er 2:5853bf44af9f 7664 NTOSAPI
sca8er 2:5853bf44af9f 7665 BOOLEAN
sca8er 2:5853bf44af9f 7666 DDKAPI
sca8er 2:5853bf44af9f 7667 KeSetTimer(
sca8er 2:5853bf44af9f 7668 /*IN*/ PKTIMER Timer,
sca8er 2:5853bf44af9f 7669 /*IN*/ LARGE_INTEGER DueTime,
sca8er 2:5853bf44af9f 7670 /*IN*/ PKDPC Dpc /*OPTIONAL*/);
sca8er 2:5853bf44af9f 7671
sca8er 2:5853bf44af9f 7672 NTOSAPI
sca8er 2:5853bf44af9f 7673 BOOLEAN
sca8er 2:5853bf44af9f 7674 DDKAPI
sca8er 2:5853bf44af9f 7675 KeSetTimerEx(
sca8er 2:5853bf44af9f 7676 /*IN*/ PKTIMER Timer,
sca8er 2:5853bf44af9f 7677 /*IN*/ LARGE_INTEGER DueTime,
sca8er 2:5853bf44af9f 7678 /*IN*/ LONG Period /*OPTIONAL*/,
sca8er 2:5853bf44af9f 7679 /*IN*/ PKDPC Dpc /*OPTIONAL*/);
sca8er 2:5853bf44af9f 7680
sca8er 2:5853bf44af9f 7681 NTOSAPI
sca8er 2:5853bf44af9f 7682 VOID
sca8er 2:5853bf44af9f 7683 DDKFASTAPI
sca8er 2:5853bf44af9f 7684 KeSetTimeUpdateNotifyRoutine(
sca8er 2:5853bf44af9f 7685 /*IN*/ PTIME_UPDATE_NOTIFY_ROUTINE NotifyRoutine);
sca8er 2:5853bf44af9f 7686
sca8er 2:5853bf44af9f 7687 NTOSAPI
sca8er 2:5853bf44af9f 7688 VOID
sca8er 2:5853bf44af9f 7689 DDKAPI
sca8er 2:5853bf44af9f 7690 KeStallExecutionProcessor(
sca8er 2:5853bf44af9f 7691 /*IN*/ ULONG MicroSeconds);
sca8er 2:5853bf44af9f 7692
sca8er 2:5853bf44af9f 7693 NTOSAPI
sca8er 2:5853bf44af9f 7694 BOOLEAN
sca8er 2:5853bf44af9f 7695 DDKAPI
sca8er 2:5853bf44af9f 7696 KeSynchronizeExecution(
sca8er 2:5853bf44af9f 7697 /*IN*/ PKINTERRUPT Interrupt,
sca8er 2:5853bf44af9f 7698 /*IN*/ PKSYNCHRONIZE_ROUTINE SynchronizeRoutine,
sca8er 2:5853bf44af9f 7699 /*IN*/ PVOID SynchronizeContext);
sca8er 2:5853bf44af9f 7700
sca8er 2:5853bf44af9f 7701 NTOSAPI
sca8er 2:5853bf44af9f 7702 NTSTATUS
sca8er 2:5853bf44af9f 7703 DDKAPI
sca8er 2:5853bf44af9f 7704 KeWaitForMultipleObjects(
sca8er 2:5853bf44af9f 7705 /*IN*/ ULONG Count,
sca8er 2:5853bf44af9f 7706 /*IN*/ PVOID Object[],
sca8er 2:5853bf44af9f 7707 /*IN*/ WAIT_TYPE WaitType,
sca8er 2:5853bf44af9f 7708 /*IN*/ KWAIT_REASON WaitReason,
sca8er 2:5853bf44af9f 7709 /*IN*/ KPROCESSOR_MODE WaitMode,
sca8er 2:5853bf44af9f 7710 /*IN*/ BOOLEAN Alertable,
sca8er 2:5853bf44af9f 7711 /*IN*/ PLARGE_INTEGER Timeout /*OPTIONAL */,
sca8er 2:5853bf44af9f 7712 /*IN*/ PKWAIT_BLOCK WaitBlockArray /*OPTIONAL*/);
sca8er 2:5853bf44af9f 7713
sca8er 2:5853bf44af9f 7714 NTOSAPI
sca8er 2:5853bf44af9f 7715 NTSTATUS
sca8er 2:5853bf44af9f 7716 DDKAPI
sca8er 2:5853bf44af9f 7717 KeWaitForMutexObject(
sca8er 2:5853bf44af9f 7718 /*IN*/ PRKMUTEX Mutex,
sca8er 2:5853bf44af9f 7719 /*IN*/ KWAIT_REASON WaitReason,
sca8er 2:5853bf44af9f 7720 /*IN*/ KPROCESSOR_MODE WaitMode,
sca8er 2:5853bf44af9f 7721 /*IN*/ BOOLEAN Alertable,
sca8er 2:5853bf44af9f 7722 /*IN*/ PLARGE_INTEGER Timeout /*OPTIONAL*/);
sca8er 2:5853bf44af9f 7723
sca8er 2:5853bf44af9f 7724 NTOSAPI
sca8er 2:5853bf44af9f 7725 NTSTATUS
sca8er 2:5853bf44af9f 7726 DDKAPI
sca8er 2:5853bf44af9f 7727 KeWaitForSingleObject(
sca8er 2:5853bf44af9f 7728 /*IN*/ PVOID Object,
sca8er 2:5853bf44af9f 7729 /*IN*/ KWAIT_REASON WaitReason,
sca8er 2:5853bf44af9f 7730 /*IN*/ KPROCESSOR_MODE WaitMode,
sca8er 2:5853bf44af9f 7731 /*IN*/ BOOLEAN Alertable,
sca8er 2:5853bf44af9f 7732 /*IN*/ PLARGE_INTEGER Timeout /*OPTIONAL*/);
sca8er 2:5853bf44af9f 7733
sca8er 2:5853bf44af9f 7734 NTOSAPI
sca8er 2:5853bf44af9f 7735 VOID
sca8er 2:5853bf44af9f 7736 DDKAPI
sca8er 2:5853bf44af9f 7737 KeRaiseIrql(
sca8er 2:5853bf44af9f 7738 /*IN*/ KIRQL new_irql,
sca8er 2:5853bf44af9f 7739 /*OUT*/ PKIRQL old_irql);
sca8er 2:5853bf44af9f 7740
sca8er 2:5853bf44af9f 7741 NTOSAPI
sca8er 2:5853bf44af9f 7742 VOID
sca8er 2:5853bf44af9f 7743 DDKAPI
sca8er 2:5853bf44af9f 7744 KeLowerIrql(
sca8er 2:5853bf44af9f 7745 /*IN*/ KIRQL irql);
sca8er 2:5853bf44af9f 7746
sca8er 2:5853bf44af9f 7747 NTOSAPI
sca8er 2:5853bf44af9f 7748 KIRQL
sca8er 2:5853bf44af9f 7749 DDKAPI
sca8er 2:5853bf44af9f 7750 KeRaiseIrqlToDpcLevel(
sca8er 2:5853bf44af9f 7751 VOID);
sca8er 2:5853bf44af9f 7752
sca8er 2:5853bf44af9f 7753 /** Memory manager routines **/
sca8er 2:5853bf44af9f 7754
sca8er 2:5853bf44af9f 7755 NTOSAPI
sca8er 2:5853bf44af9f 7756 NTSTATUS
sca8er 2:5853bf44af9f 7757 DDKAPI
sca8er 2:5853bf44af9f 7758 MmAdvanceMdl(
sca8er 2:5853bf44af9f 7759 /*IN*/ PMDL Mdl,
sca8er 2:5853bf44af9f 7760 /*IN*/ ULONG NumberOfBytes);
sca8er 2:5853bf44af9f 7761
sca8er 2:5853bf44af9f 7762 NTOSAPI
sca8er 2:5853bf44af9f 7763 PVOID
sca8er 2:5853bf44af9f 7764 DDKAPI
sca8er 2:5853bf44af9f 7765 MmAllocateContiguousMemory(
sca8er 2:5853bf44af9f 7766 /*IN*/ ULONG NumberOfBytes,
sca8er 2:5853bf44af9f 7767 /*IN*/ PHYSICAL_ADDRESS HighestAcceptableAddress);
sca8er 2:5853bf44af9f 7768
sca8er 2:5853bf44af9f 7769 NTOSAPI
sca8er 2:5853bf44af9f 7770 PVOID
sca8er 2:5853bf44af9f 7771 DDKAPI
sca8er 2:5853bf44af9f 7772 MmAllocateContiguousMemorySpecifyCache(
sca8er 2:5853bf44af9f 7773 /*IN*/ SIZE_T NumberOfBytes,
sca8er 2:5853bf44af9f 7774 /*IN*/ PHYSICAL_ADDRESS LowestAcceptableAddress,
sca8er 2:5853bf44af9f 7775 /*IN*/ PHYSICAL_ADDRESS HighestAcceptableAddress,
sca8er 2:5853bf44af9f 7776 /*IN*/ PHYSICAL_ADDRESS BoundaryAddressMultiple /*OPTIONAL*/,
sca8er 2:5853bf44af9f 7777 /*IN*/ MEMORY_CACHING_TYPE CacheType);
sca8er 2:5853bf44af9f 7778
sca8er 2:5853bf44af9f 7779 NTOSAPI
sca8er 2:5853bf44af9f 7780 PVOID
sca8er 2:5853bf44af9f 7781 DDKAPI
sca8er 2:5853bf44af9f 7782 MmAllocateMappingAddress(
sca8er 2:5853bf44af9f 7783 /*IN*/ SIZE_T NumberOfBytes,
sca8er 2:5853bf44af9f 7784 /*IN*/ ULONG PoolTag);
sca8er 2:5853bf44af9f 7785
sca8er 2:5853bf44af9f 7786 NTOSAPI
sca8er 2:5853bf44af9f 7787 PVOID
sca8er 2:5853bf44af9f 7788 DDKAPI
sca8er 2:5853bf44af9f 7789 MmAllocateNonCachedMemory(
sca8er 2:5853bf44af9f 7790 /*IN*/ ULONG NumberOfBytes);
sca8er 2:5853bf44af9f 7791
sca8er 2:5853bf44af9f 7792 NTOSAPI
sca8er 2:5853bf44af9f 7793 PMDL
sca8er 2:5853bf44af9f 7794 DDKAPI
sca8er 2:5853bf44af9f 7795 MmAllocatePagesForMdl(
sca8er 2:5853bf44af9f 7796 /*IN*/ PHYSICAL_ADDRESS LowAddress,
sca8er 2:5853bf44af9f 7797 /*IN*/ PHYSICAL_ADDRESS HighAddress,
sca8er 2:5853bf44af9f 7798 /*IN*/ PHYSICAL_ADDRESS SkipBytes,
sca8er 2:5853bf44af9f 7799 /*IN*/ SIZE_T TotalBytes);
sca8er 2:5853bf44af9f 7800
sca8er 2:5853bf44af9f 7801 NTOSAPI
sca8er 2:5853bf44af9f 7802 VOID
sca8er 2:5853bf44af9f 7803 DDKAPI
sca8er 2:5853bf44af9f 7804 MmBuildMdlForNonPagedPool(
sca8er 2:5853bf44af9f 7805 /*IN OUT*/ PMDL MemoryDescriptorList);
sca8er 2:5853bf44af9f 7806
sca8er 2:5853bf44af9f 7807 NTOSAPI
sca8er 2:5853bf44af9f 7808 NTSTATUS
sca8er 2:5853bf44af9f 7809 DDKAPI
sca8er 2:5853bf44af9f 7810 MmCreateSection(
sca8er 2:5853bf44af9f 7811 /*OUT*/ PSECTION_OBJECT *SectionObject,
sca8er 2:5853bf44af9f 7812 /*IN*/ ACCESS_MASK DesiredAccess,
sca8er 2:5853bf44af9f 7813 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes /*OPTIONAL*/,
sca8er 2:5853bf44af9f 7814 /*IN*/ PLARGE_INTEGER MaximumSize,
sca8er 2:5853bf44af9f 7815 /*IN*/ ULONG SectionPageProtection,
sca8er 2:5853bf44af9f 7816 /*IN*/ ULONG AllocationAttributes,
sca8er 2:5853bf44af9f 7817 /*IN*/ HANDLE FileHandle /*OPTIONAL*/,
sca8er 2:5853bf44af9f 7818 /*IN*/ PFILE_OBJECT File /*OPTIONAL*/);
sca8er 2:5853bf44af9f 7819
sca8er 2:5853bf44af9f 7820 typedef enum _MMFLUSH_TYPE {
sca8er 2:5853bf44af9f 7821 MmFlushForDelete,
sca8er 2:5853bf44af9f 7822 MmFlushForWrite
sca8er 2:5853bf44af9f 7823 } MMFLUSH_TYPE;
sca8er 2:5853bf44af9f 7824
sca8er 2:5853bf44af9f 7825 NTOSAPI
sca8er 2:5853bf44af9f 7826 BOOLEAN
sca8er 2:5853bf44af9f 7827 DDKAPI
sca8er 2:5853bf44af9f 7828 MmFlushImageSection(
sca8er 2:5853bf44af9f 7829 /*IN*/ PSECTION_OBJECT_POINTERS SectionObjectPointer,
sca8er 2:5853bf44af9f 7830 /*IN*/ MMFLUSH_TYPE FlushType);
sca8er 2:5853bf44af9f 7831
sca8er 2:5853bf44af9f 7832 NTOSAPI
sca8er 2:5853bf44af9f 7833 VOID
sca8er 2:5853bf44af9f 7834 DDKAPI
sca8er 2:5853bf44af9f 7835 MmFreeContiguousMemory(
sca8er 2:5853bf44af9f 7836 /*IN*/ PVOID BaseAddress);
sca8er 2:5853bf44af9f 7837
sca8er 2:5853bf44af9f 7838 NTOSAPI
sca8er 2:5853bf44af9f 7839 VOID
sca8er 2:5853bf44af9f 7840 DDKAPI
sca8er 2:5853bf44af9f 7841 MmFreeContiguousMemorySpecifyCache(
sca8er 2:5853bf44af9f 7842 /*IN*/ PVOID BaseAddress,
sca8er 2:5853bf44af9f 7843 /*IN*/ SIZE_T NumberOfBytes,
sca8er 2:5853bf44af9f 7844 /*IN*/ MEMORY_CACHING_TYPE CacheType);
sca8er 2:5853bf44af9f 7845
sca8er 2:5853bf44af9f 7846 NTOSAPI
sca8er 2:5853bf44af9f 7847 VOID
sca8er 2:5853bf44af9f 7848 DDKAPI
sca8er 2:5853bf44af9f 7849 MmFreeMappingAddress(
sca8er 2:5853bf44af9f 7850 /*IN*/ PVOID BaseAddress,
sca8er 2:5853bf44af9f 7851 /*IN*/ ULONG PoolTag);
sca8er 2:5853bf44af9f 7852
sca8er 2:5853bf44af9f 7853 NTOSAPI
sca8er 2:5853bf44af9f 7854 VOID
sca8er 2:5853bf44af9f 7855 DDKAPI
sca8er 2:5853bf44af9f 7856 MmFreeNonCachedMemory(
sca8er 2:5853bf44af9f 7857 /*IN*/ PVOID BaseAddress,
sca8er 2:5853bf44af9f 7858 /*IN*/ SIZE_T NumberOfBytes);
sca8er 2:5853bf44af9f 7859
sca8er 2:5853bf44af9f 7860 NTOSAPI
sca8er 2:5853bf44af9f 7861 VOID
sca8er 2:5853bf44af9f 7862 DDKAPI
sca8er 2:5853bf44af9f 7863 MmFreePagesFromMdl(
sca8er 2:5853bf44af9f 7864 /*IN*/ PMDL MemoryDescriptorList);
sca8er 2:5853bf44af9f 7865
sca8er 2:5853bf44af9f 7866 /*
sca8er 2:5853bf44af9f 7867 * ULONG
sca8er 2:5853bf44af9f 7868 * MmGetMdlByteCount(
sca8er 2:5853bf44af9f 7869 * IN PMDL Mdl)
sca8er 2:5853bf44af9f 7870 */
sca8er 2:5853bf44af9f 7871 #define MmGetMdlByteCount(_Mdl) \
sca8er 2:5853bf44af9f 7872 ((_Mdl)->ByteCount)
sca8er 2:5853bf44af9f 7873
sca8er 2:5853bf44af9f 7874 /*
sca8er 2:5853bf44af9f 7875 * ULONG
sca8er 2:5853bf44af9f 7876 * MmGetMdlByteOffset(
sca8er 2:5853bf44af9f 7877 * IN PMDL Mdl)
sca8er 2:5853bf44af9f 7878 */
sca8er 2:5853bf44af9f 7879 #define MmGetMdlByteOffset(_Mdl) \
sca8er 2:5853bf44af9f 7880 ((_Mdl)->ByteOffset)
sca8er 2:5853bf44af9f 7881
sca8er 2:5853bf44af9f 7882 /*
sca8er 2:5853bf44af9f 7883 * PPFN_NUMBER
sca8er 2:5853bf44af9f 7884 * MmGetMdlPfnArray(
sca8er 2:5853bf44af9f 7885 * IN PMDL Mdl)
sca8er 2:5853bf44af9f 7886 */
sca8er 2:5853bf44af9f 7887 #define MmGetMdlPfnArray(_Mdl) \
sca8er 2:5853bf44af9f 7888 ((PPFN_NUMBER) ((_Mdl) + 1))
sca8er 2:5853bf44af9f 7889
sca8er 2:5853bf44af9f 7890 /*
sca8er 2:5853bf44af9f 7891 * PVOID
sca8er 2:5853bf44af9f 7892 * MmGetMdlVirtualAddress(
sca8er 2:5853bf44af9f 7893 * IN PMDL Mdl)
sca8er 2:5853bf44af9f 7894 */
sca8er 2:5853bf44af9f 7895 #define MmGetMdlVirtualAddress(_Mdl) \
sca8er 2:5853bf44af9f 7896 ((PVOID) ((PCHAR) ((_Mdl)->StartVa) + (_Mdl)->ByteOffset))
sca8er 2:5853bf44af9f 7897
sca8er 2:5853bf44af9f 7898 NTOSAPI
sca8er 2:5853bf44af9f 7899 PHYSICAL_ADDRESS
sca8er 2:5853bf44af9f 7900 DDKAPI
sca8er 2:5853bf44af9f 7901 MmGetPhysicalAddress(
sca8er 2:5853bf44af9f 7902 /*IN*/ PVOID BaseAddress);
sca8er 2:5853bf44af9f 7903
sca8er 2:5853bf44af9f 7904 NTOSAPI
sca8er 2:5853bf44af9f 7905 PPHYSICAL_MEMORY_RANGE
sca8er 2:5853bf44af9f 7906 DDKAPI
sca8er 2:5853bf44af9f 7907 MmGetPhysicalMemoryRanges(
sca8er 2:5853bf44af9f 7908 VOID);
sca8er 2:5853bf44af9f 7909
sca8er 2:5853bf44af9f 7910 NTOSAPI
sca8er 2:5853bf44af9f 7911 PVOID
sca8er 2:5853bf44af9f 7912 DDKAPI
sca8er 2:5853bf44af9f 7913 MmGetVirtualForPhysical(
sca8er 2:5853bf44af9f 7914 /*IN*/ PHYSICAL_ADDRESS PhysicalAddress);
sca8er 2:5853bf44af9f 7915
sca8er 2:5853bf44af9f 7916 NTOSAPI
sca8er 2:5853bf44af9f 7917 PVOID
sca8er 2:5853bf44af9f 7918 DDKAPI
sca8er 2:5853bf44af9f 7919 MmMapLockedPagesSpecifyCache(
sca8er 2:5853bf44af9f 7920 /*IN*/ PMDL MemoryDescriptorList,
sca8er 2:5853bf44af9f 7921 /*IN*/ KPROCESSOR_MODE AccessMode,
sca8er 2:5853bf44af9f 7922 /*IN*/ MEMORY_CACHING_TYPE CacheType,
sca8er 2:5853bf44af9f 7923 /*IN*/ PVOID BaseAddress,
sca8er 2:5853bf44af9f 7924 /*IN*/ ULONG BugCheckOnFailure,
sca8er 2:5853bf44af9f 7925 /*IN*/ MM_PAGE_PRIORITY Priority);
sca8er 2:5853bf44af9f 7926
sca8er 2:5853bf44af9f 7927 NTOSAPI
sca8er 2:5853bf44af9f 7928 PVOID
sca8er 2:5853bf44af9f 7929 DDKAPI
sca8er 2:5853bf44af9f 7930 MmMapLockedPagesWithReservedMapping(
sca8er 2:5853bf44af9f 7931 /*IN*/ PVOID MappingAddress,
sca8er 2:5853bf44af9f 7932 /*IN*/ ULONG PoolTag,
sca8er 2:5853bf44af9f 7933 /*IN*/ PMDL MemoryDescriptorList,
sca8er 2:5853bf44af9f 7934 /*IN*/ MEMORY_CACHING_TYPE CacheType);
sca8er 2:5853bf44af9f 7935
sca8er 2:5853bf44af9f 7936 NTOSAPI
sca8er 2:5853bf44af9f 7937 NTSTATUS
sca8er 2:5853bf44af9f 7938 DDKAPI
sca8er 2:5853bf44af9f 7939 MmMapUserAddressesToPage(
sca8er 2:5853bf44af9f 7940 /*IN*/ PVOID BaseAddress,
sca8er 2:5853bf44af9f 7941 /*IN*/ SIZE_T NumberOfBytes,
sca8er 2:5853bf44af9f 7942 /*IN*/ PVOID PageAddress);
sca8er 2:5853bf44af9f 7943
sca8er 2:5853bf44af9f 7944 NTOSAPI
sca8er 2:5853bf44af9f 7945 PVOID
sca8er 2:5853bf44af9f 7946 DDKAPI
sca8er 2:5853bf44af9f 7947 MmMapVideoDisplay(
sca8er 2:5853bf44af9f 7948 /*IN*/ PHYSICAL_ADDRESS PhysicalAddress,
sca8er 2:5853bf44af9f 7949 /*IN*/ SIZE_T NumberOfBytes,
sca8er 2:5853bf44af9f 7950 /*IN*/ MEMORY_CACHING_TYPE CacheType);
sca8er 2:5853bf44af9f 7951
sca8er 2:5853bf44af9f 7952 NTOSAPI
sca8er 2:5853bf44af9f 7953 NTSTATUS
sca8er 2:5853bf44af9f 7954 DDKAPI
sca8er 2:5853bf44af9f 7955 MmMapViewInSessionSpace(
sca8er 2:5853bf44af9f 7956 /*IN*/ PVOID Section,
sca8er 2:5853bf44af9f 7957 /*OUT*/ PVOID *MappedBase,
sca8er 2:5853bf44af9f 7958 /*IN OUT*/ PSIZE_T ViewSize);
sca8er 2:5853bf44af9f 7959
sca8er 2:5853bf44af9f 7960 NTOSAPI
sca8er 2:5853bf44af9f 7961 NTSTATUS
sca8er 2:5853bf44af9f 7962 DDKAPI
sca8er 2:5853bf44af9f 7963 MmMapViewInSystemSpace(
sca8er 2:5853bf44af9f 7964 /*IN*/ PVOID Section,
sca8er 2:5853bf44af9f 7965 /*OUT*/ PVOID *MappedBase,
sca8er 2:5853bf44af9f 7966 /*IN*/ PSIZE_T ViewSize);
sca8er 2:5853bf44af9f 7967
sca8er 2:5853bf44af9f 7968 NTOSAPI
sca8er 2:5853bf44af9f 7969 NTSTATUS
sca8er 2:5853bf44af9f 7970 DDKAPI
sca8er 2:5853bf44af9f 7971 MmMarkPhysicalMemoryAsBad(
sca8er 2:5853bf44af9f 7972 /*IN*/ PPHYSICAL_ADDRESS StartAddress,
sca8er 2:5853bf44af9f 7973 /*IN OUT*/ PLARGE_INTEGER NumberOfBytes);
sca8er 2:5853bf44af9f 7974
sca8er 2:5853bf44af9f 7975 NTOSAPI
sca8er 2:5853bf44af9f 7976 NTSTATUS
sca8er 2:5853bf44af9f 7977 DDKAPI
sca8er 2:5853bf44af9f 7978 MmMarkPhysicalMemoryAsGood(
sca8er 2:5853bf44af9f 7979 /*IN*/ PPHYSICAL_ADDRESS StartAddress,
sca8er 2:5853bf44af9f 7980 /*IN OUT*/ PLARGE_INTEGER NumberOfBytes);
sca8er 2:5853bf44af9f 7981
sca8er 2:5853bf44af9f 7982 /*
sca8er 2:5853bf44af9f 7983 * PVOID
sca8er 2:5853bf44af9f 7984 * MmGetSystemAddressForMdlSafe(
sca8er 2:5853bf44af9f 7985 * IN PMDL Mdl,
sca8er 2:5853bf44af9f 7986 * IN MM_PAGE_PRIORITY Priority)
sca8er 2:5853bf44af9f 7987 */
sca8er 2:5853bf44af9f 7988 #define MmGetSystemAddressForMdlSafe(_Mdl, _Priority) \
sca8er 2:5853bf44af9f 7989 ((_Mdl)->MdlFlags & (MDL_MAPPED_TO_SYSTEM_VA \
sca8er 2:5853bf44af9f 7990 | MDL_SOURCE_IS_NONPAGED_POOL)) ? \
sca8er 2:5853bf44af9f 7991 (_Mdl)->MappedSystemVa : \
sca8er 2:5853bf44af9f 7992 (PVOID) MmMapLockedPagesSpecifyCache((_Mdl), \
sca8er 2:5853bf44af9f 7993 KernelMode, MmCached, NULL, FALSE, _Priority)
sca8er 2:5853bf44af9f 7994
sca8er 2:5853bf44af9f 7995 NTOSAPI
sca8er 2:5853bf44af9f 7996 PVOID
sca8er 2:5853bf44af9f 7997 DDKAPI
sca8er 2:5853bf44af9f 7998 MmGetSystemRoutineAddress(
sca8er 2:5853bf44af9f 7999 /*IN*/ PUNICODE_STRING SystemRoutineName);
sca8er 2:5853bf44af9f 8000
sca8er 2:5853bf44af9f 8001 /*
sca8er 2:5853bf44af9f 8002 * ULONG
sca8er 2:5853bf44af9f 8003 * ADDRESS_AND_SIZE_TO_SPAN_PAGES(
sca8er 2:5853bf44af9f 8004 * IN PVOID Va,
sca8er 2:5853bf44af9f 8005 * IN ULONG Size)
sca8er 2:5853bf44af9f 8006 */
sca8er 2:5853bf44af9f 8007 #define ADDRESS_AND_SIZE_TO_SPAN_PAGES(_Va, \
sca8er 2:5853bf44af9f 8008 _Size) \
sca8er 2:5853bf44af9f 8009 ((ULONG) ((((ULONG_PTR) (_Va) & (PAGE_SIZE - 1)) \
sca8er 2:5853bf44af9f 8010 + (_Size) + (PAGE_SIZE - 1)) >> PAGE_SHIFT))
sca8er 2:5853bf44af9f 8011
sca8er 2:5853bf44af9f 8012 /*
sca8er 2:5853bf44af9f 8013 * VOID
sca8er 2:5853bf44af9f 8014 * MmInitializeMdl(
sca8er 2:5853bf44af9f 8015 * IN PMDL MemoryDescriptorList,
sca8er 2:5853bf44af9f 8016 * IN PVOID BaseVa,
sca8er 2:5853bf44af9f 8017 * IN SIZE_T Length)
sca8er 2:5853bf44af9f 8018 */
sca8er 2:5853bf44af9f 8019 #define MmInitializeMdl(_MemoryDescriptorList, \
sca8er 2:5853bf44af9f 8020 _BaseVa, \
sca8er 2:5853bf44af9f 8021 _Length) \
sca8er 2:5853bf44af9f 8022 { \
sca8er 2:5853bf44af9f 8023 (_MemoryDescriptorList)->Next = (PMDL) NULL; \
sca8er 2:5853bf44af9f 8024 (_MemoryDescriptorList)->Size = (CSHORT) (sizeof(MDL) + \
sca8er 2:5853bf44af9f 8025 (sizeof(PFN_NUMBER) * ADDRESS_AND_SIZE_TO_SPAN_PAGES(_BaseVa, _Length))); \
sca8er 2:5853bf44af9f 8026 (_MemoryDescriptorList)->MdlFlags = 0; \
sca8er 2:5853bf44af9f 8027 (_MemoryDescriptorList)->StartVa = (PVOID) PAGE_ALIGN(_BaseVa); \
sca8er 2:5853bf44af9f 8028 (_MemoryDescriptorList)->ByteOffset = BYTE_OFFSET(_BaseVa); \
sca8er 2:5853bf44af9f 8029 (_MemoryDescriptorList)->ByteCount = (ULONG) _Length; \
sca8er 2:5853bf44af9f 8030 }
sca8er 2:5853bf44af9f 8031
sca8er 2:5853bf44af9f 8032 NTOSAPI
sca8er 2:5853bf44af9f 8033 BOOLEAN
sca8er 2:5853bf44af9f 8034 DDKAPI
sca8er 2:5853bf44af9f 8035 MmIsAddressValid(
sca8er 2:5853bf44af9f 8036 /*IN*/ PVOID VirtualAddress);
sca8er 2:5853bf44af9f 8037
sca8er 2:5853bf44af9f 8038 NTOSAPI
sca8er 2:5853bf44af9f 8039 LOGICAL
sca8er 2:5853bf44af9f 8040 DDKAPI
sca8er 2:5853bf44af9f 8041 MmIsDriverVerifying(
sca8er 2:5853bf44af9f 8042 /*IN*/ PDRIVER_OBJECT DriverObject);
sca8er 2:5853bf44af9f 8043
sca8er 2:5853bf44af9f 8044 NTOSAPI
sca8er 2:5853bf44af9f 8045 BOOLEAN
sca8er 2:5853bf44af9f 8046 DDKAPI
sca8er 2:5853bf44af9f 8047 MmIsThisAnNtAsSystem(
sca8er 2:5853bf44af9f 8048 VOID);
sca8er 2:5853bf44af9f 8049
sca8er 2:5853bf44af9f 8050 NTOSAPI
sca8er 2:5853bf44af9f 8051 NTSTATUS
sca8er 2:5853bf44af9f 8052 DDKAPI
sca8er 2:5853bf44af9f 8053 MmIsVerifierEnabled(
sca8er 2:5853bf44af9f 8054 /*OUT*/ PULONG VerifierFlags);
sca8er 2:5853bf44af9f 8055
sca8er 2:5853bf44af9f 8056 NTOSAPI
sca8er 2:5853bf44af9f 8057 PVOID
sca8er 2:5853bf44af9f 8058 DDKAPI
sca8er 2:5853bf44af9f 8059 MmLockPagableDataSection(
sca8er 2:5853bf44af9f 8060 /*IN*/ PVOID AddressWithinSection);
sca8er 2:5853bf44af9f 8061
sca8er 2:5853bf44af9f 8062 NTOSAPI
sca8er 2:5853bf44af9f 8063 PVOID
sca8er 2:5853bf44af9f 8064 DDKAPI
sca8er 2:5853bf44af9f 8065 MmLockPagableImageSection(
sca8er 2:5853bf44af9f 8066 /*IN*/ PVOID AddressWithinSection);
sca8er 2:5853bf44af9f 8067
sca8er 2:5853bf44af9f 8068 /*
sca8er 2:5853bf44af9f 8069 * PVOID
sca8er 2:5853bf44af9f 8070 * MmLockPagableCodeSection(
sca8er 2:5853bf44af9f 8071 * IN PVOID AddressWithinSection)
sca8er 2:5853bf44af9f 8072 */
sca8er 2:5853bf44af9f 8073 #define MmLockPagableCodeSection MmLockPagableDataSection
sca8er 2:5853bf44af9f 8074
sca8er 2:5853bf44af9f 8075 NTOSAPI
sca8er 2:5853bf44af9f 8076 VOID
sca8er 2:5853bf44af9f 8077 DDKAPI
sca8er 2:5853bf44af9f 8078 MmLockPagableSectionByHandle(
sca8er 2:5853bf44af9f 8079 /*IN*/ PVOID ImageSectionHandle);
sca8er 2:5853bf44af9f 8080
sca8er 2:5853bf44af9f 8081 NTOSAPI
sca8er 2:5853bf44af9f 8082 PVOID
sca8er 2:5853bf44af9f 8083 DDKAPI
sca8er 2:5853bf44af9f 8084 MmMapIoSpace(
sca8er 2:5853bf44af9f 8085 /*IN*/ PHYSICAL_ADDRESS PhysicalAddress,
sca8er 2:5853bf44af9f 8086 /*IN*/ ULONG NumberOfBytes,
sca8er 2:5853bf44af9f 8087 /*IN*/ MEMORY_CACHING_TYPE CacheEnable);
sca8er 2:5853bf44af9f 8088
sca8er 2:5853bf44af9f 8089 NTOSAPI
sca8er 2:5853bf44af9f 8090 PVOID
sca8er 2:5853bf44af9f 8091 DDKAPI
sca8er 2:5853bf44af9f 8092 MmMapLockedPages(
sca8er 2:5853bf44af9f 8093 /*IN*/ PMDL MemoryDescriptorList,
sca8er 2:5853bf44af9f 8094 /*IN*/ KPROCESSOR_MODE AccessMode);
sca8er 2:5853bf44af9f 8095
sca8er 2:5853bf44af9f 8096 NTOSAPI
sca8er 2:5853bf44af9f 8097 VOID
sca8er 2:5853bf44af9f 8098 DDKAPI
sca8er 2:5853bf44af9f 8099 MmPageEntireDriver(
sca8er 2:5853bf44af9f 8100 /*IN*/ PVOID AddressWithinSection);
sca8er 2:5853bf44af9f 8101
sca8er 2:5853bf44af9f 8102 NTOSAPI
sca8er 2:5853bf44af9f 8103 VOID
sca8er 2:5853bf44af9f 8104 DDKAPI
sca8er 2:5853bf44af9f 8105 MmProbeAndLockProcessPages(
sca8er 2:5853bf44af9f 8106 /*IN OUT*/ PMDL MemoryDescriptorList,
sca8er 2:5853bf44af9f 8107 /*IN*/ PEPROCESS Process,
sca8er 2:5853bf44af9f 8108 /*IN*/ KPROCESSOR_MODE AccessMode,
sca8er 2:5853bf44af9f 8109 /*IN*/ LOCK_OPERATION Operation);
sca8er 2:5853bf44af9f 8110
sca8er 2:5853bf44af9f 8111 NTOSAPI
sca8er 2:5853bf44af9f 8112 NTSTATUS
sca8er 2:5853bf44af9f 8113 DDKAPI
sca8er 2:5853bf44af9f 8114 MmProtectMdlSystemAddress(
sca8er 2:5853bf44af9f 8115 /*IN*/ PMDL MemoryDescriptorList,
sca8er 2:5853bf44af9f 8116 /*IN*/ ULONG NewProtect);
sca8er 2:5853bf44af9f 8117
sca8er 2:5853bf44af9f 8118 NTOSAPI
sca8er 2:5853bf44af9f 8119 VOID
sca8er 2:5853bf44af9f 8120 DDKAPI
sca8er 2:5853bf44af9f 8121 MmUnmapLockedPages(
sca8er 2:5853bf44af9f 8122 /*IN*/ PVOID BaseAddress,
sca8er 2:5853bf44af9f 8123 /*IN*/ PMDL MemoryDescriptorList);
sca8er 2:5853bf44af9f 8124
sca8er 2:5853bf44af9f 8125 NTOSAPI
sca8er 2:5853bf44af9f 8126 NTSTATUS
sca8er 2:5853bf44af9f 8127 DDKAPI
sca8er 2:5853bf44af9f 8128 MmUnmapViewInSessionSpace(
sca8er 2:5853bf44af9f 8129 /*IN*/ PVOID MappedBase);
sca8er 2:5853bf44af9f 8130
sca8er 2:5853bf44af9f 8131 NTOSAPI
sca8er 2:5853bf44af9f 8132 NTSTATUS
sca8er 2:5853bf44af9f 8133 DDKAPI
sca8er 2:5853bf44af9f 8134 MmUnmapViewInSystemSpace(
sca8er 2:5853bf44af9f 8135 /*IN*/ PVOID MappedBase);
sca8er 2:5853bf44af9f 8136
sca8er 2:5853bf44af9f 8137 NTOSAPI
sca8er 2:5853bf44af9f 8138 VOID
sca8er 2:5853bf44af9f 8139 DDKAPI
sca8er 2:5853bf44af9f 8140 MmUnsecureVirtualMemory(
sca8er 2:5853bf44af9f 8141 /*IN*/ HANDLE SecureHandle);
sca8er 2:5853bf44af9f 8142
sca8er 2:5853bf44af9f 8143 /*
sca8er 2:5853bf44af9f 8144 * VOID
sca8er 2:5853bf44af9f 8145 * MmPrepareMdlForReuse(
sca8er 2:5853bf44af9f 8146 * IN PMDL Mdl)
sca8er 2:5853bf44af9f 8147 */
sca8er 2:5853bf44af9f 8148 #define MmPrepareMdlForReuse(_Mdl) \
sca8er 2:5853bf44af9f 8149 { \
sca8er 2:5853bf44af9f 8150 if (((_Mdl)->MdlFlags & MDL_PARTIAL_HAS_BEEN_MAPPED) != 0) { \
sca8er 2:5853bf44af9f 8151 ASSERT(((_Mdl)->MdlFlags & MDL_PARTIAL) != 0); \
sca8er 2:5853bf44af9f 8152 MmUnmapLockedPages((_Mdl)->MappedSystemVa, (_Mdl)); \
sca8er 2:5853bf44af9f 8153 } else if (((_Mdl)->MdlFlags & MDL_PARTIAL) == 0) { \
sca8er 2:5853bf44af9f 8154 ASSERT(((_Mdl)->MdlFlags & MDL_MAPPED_TO_SYSTEM_VA) == 0); \
sca8er 2:5853bf44af9f 8155 } \
sca8er 2:5853bf44af9f 8156 }
sca8er 2:5853bf44af9f 8157
sca8er 2:5853bf44af9f 8158 NTOSAPI
sca8er 2:5853bf44af9f 8159 VOID
sca8er 2:5853bf44af9f 8160 DDKAPI
sca8er 2:5853bf44af9f 8161 MmProbeAndLockPages(
sca8er 2:5853bf44af9f 8162 /*IN OUT*/ PMDL MemoryDescriptorList,
sca8er 2:5853bf44af9f 8163 /*IN*/ KPROCESSOR_MODE AccessMode,
sca8er 2:5853bf44af9f 8164 /*IN*/ LOCK_OPERATION Operation);
sca8er 2:5853bf44af9f 8165
sca8er 2:5853bf44af9f 8166 NTOSAPI
sca8er 2:5853bf44af9f 8167 MM_SYSTEM_SIZE
sca8er 2:5853bf44af9f 8168 DDKAPI
sca8er 2:5853bf44af9f 8169 MmQuerySystemSize(
sca8er 2:5853bf44af9f 8170 VOID);
sca8er 2:5853bf44af9f 8171
sca8er 2:5853bf44af9f 8172 NTOSAPI
sca8er 2:5853bf44af9f 8173 NTSTATUS
sca8er 2:5853bf44af9f 8174 DDKAPI
sca8er 2:5853bf44af9f 8175 MmRemovePhysicalMemory(
sca8er 2:5853bf44af9f 8176 /*IN*/ PPHYSICAL_ADDRESS StartAddress,
sca8er 2:5853bf44af9f 8177 /*IN OUT*/ PLARGE_INTEGER NumberOfBytes);
sca8er 2:5853bf44af9f 8178
sca8er 2:5853bf44af9f 8179 NTOSAPI
sca8er 2:5853bf44af9f 8180 VOID
sca8er 2:5853bf44af9f 8181 DDKAPI
sca8er 2:5853bf44af9f 8182 MmResetDriverPaging(
sca8er 2:5853bf44af9f 8183 /*IN*/ PVOID AddressWithinSection);
sca8er 2:5853bf44af9f 8184
sca8er 2:5853bf44af9f 8185 NTOSAPI
sca8er 2:5853bf44af9f 8186 HANDLE
sca8er 2:5853bf44af9f 8187 DDKAPI
sca8er 2:5853bf44af9f 8188 MmSecureVirtualMemory(
sca8er 2:5853bf44af9f 8189 /*IN*/ PVOID Address,
sca8er 2:5853bf44af9f 8190 /*IN*/ SIZE_T Size,
sca8er 2:5853bf44af9f 8191 /*IN*/ ULONG ProbeMode);
sca8er 2:5853bf44af9f 8192
sca8er 2:5853bf44af9f 8193 NTOSAPI
sca8er 2:5853bf44af9f 8194 ULONG
sca8er 2:5853bf44af9f 8195 DDKAPI
sca8er 2:5853bf44af9f 8196 MmSizeOfMdl(
sca8er 2:5853bf44af9f 8197 /*IN*/ PVOID Base,
sca8er 2:5853bf44af9f 8198 /*IN*/ SIZE_T Length);
sca8er 2:5853bf44af9f 8199
sca8er 2:5853bf44af9f 8200 NTOSAPI
sca8er 2:5853bf44af9f 8201 VOID
sca8er 2:5853bf44af9f 8202 DDKAPI
sca8er 2:5853bf44af9f 8203 MmUnlockPagableImageSection(
sca8er 2:5853bf44af9f 8204 /*IN*/ PVOID ImageSectionHandle);
sca8er 2:5853bf44af9f 8205
sca8er 2:5853bf44af9f 8206 NTOSAPI
sca8er 2:5853bf44af9f 8207 VOID
sca8er 2:5853bf44af9f 8208 DDKAPI
sca8er 2:5853bf44af9f 8209 MmUnlockPages(
sca8er 2:5853bf44af9f 8210 /*IN*/ PMDL MemoryDescriptorList);
sca8er 2:5853bf44af9f 8211
sca8er 2:5853bf44af9f 8212 NTOSAPI
sca8er 2:5853bf44af9f 8213 VOID
sca8er 2:5853bf44af9f 8214 DDKAPI
sca8er 2:5853bf44af9f 8215 MmUnmapIoSpace(
sca8er 2:5853bf44af9f 8216 /*IN*/ PVOID BaseAddress,
sca8er 2:5853bf44af9f 8217 /*IN*/ SIZE_T NumberOfBytes);
sca8er 2:5853bf44af9f 8218
sca8er 2:5853bf44af9f 8219 NTOSAPI
sca8er 2:5853bf44af9f 8220 VOID
sca8er 2:5853bf44af9f 8221 DDKAPI
sca8er 2:5853bf44af9f 8222 MmUnmapReservedMapping(
sca8er 2:5853bf44af9f 8223 /*IN*/ PVOID BaseAddress,
sca8er 2:5853bf44af9f 8224 /*IN*/ ULONG PoolTag,
sca8er 2:5853bf44af9f 8225 /*IN*/ PMDL MemoryDescriptorList);
sca8er 2:5853bf44af9f 8226
sca8er 2:5853bf44af9f 8227 NTOSAPI
sca8er 2:5853bf44af9f 8228 VOID
sca8er 2:5853bf44af9f 8229 DDKAPI
sca8er 2:5853bf44af9f 8230 MmUnmapVideoDisplay(
sca8er 2:5853bf44af9f 8231 /*IN*/ PVOID BaseAddress,
sca8er 2:5853bf44af9f 8232 /*IN*/ SIZE_T NumberOfBytes);
sca8er 2:5853bf44af9f 8233
sca8er 2:5853bf44af9f 8234
sca8er 2:5853bf44af9f 8235
sca8er 2:5853bf44af9f 8236 /** Object manager routines **/
sca8er 2:5853bf44af9f 8237
sca8er 2:5853bf44af9f 8238 NTOSAPI
sca8er 2:5853bf44af9f 8239 NTSTATUS
sca8er 2:5853bf44af9f 8240 DDKAPI
sca8er 2:5853bf44af9f 8241 ObAssignSecurity(
sca8er 2:5853bf44af9f 8242 /*IN*/ PACCESS_STATE AccessState,
sca8er 2:5853bf44af9f 8243 /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptor,
sca8er 2:5853bf44af9f 8244 /*IN*/ PVOID Object,
sca8er 2:5853bf44af9f 8245 /*IN*/ POBJECT_TYPE Type);
sca8er 2:5853bf44af9f 8246
sca8er 2:5853bf44af9f 8247 NTOSAPI
sca8er 2:5853bf44af9f 8248 VOID
sca8er 2:5853bf44af9f 8249 DDKAPI
sca8er 2:5853bf44af9f 8250 ObDereferenceSecurityDescriptor(
sca8er 2:5853bf44af9f 8251 PSECURITY_DESCRIPTOR SecurityDescriptor,
sca8er 2:5853bf44af9f 8252 ULONG Count);
sca8er 2:5853bf44af9f 8253
sca8er 2:5853bf44af9f 8254 NTOSAPI
sca8er 2:5853bf44af9f 8255 VOID
sca8er 2:5853bf44af9f 8256 DDKFASTAPI
sca8er 2:5853bf44af9f 8257 ObfDereferenceObject(
sca8er 2:5853bf44af9f 8258 /*IN*/ PVOID Object);
sca8er 2:5853bf44af9f 8259
sca8er 2:5853bf44af9f 8260 /*
sca8er 2:5853bf44af9f 8261 * VOID
sca8er 2:5853bf44af9f 8262 * ObDereferenceObject(
sca8er 2:5853bf44af9f 8263 * IN PVOID Object)
sca8er 2:5853bf44af9f 8264 */
sca8er 2:5853bf44af9f 8265 #define ObDereferenceObject ObfDereferenceObject
sca8er 2:5853bf44af9f 8266
sca8er 2:5853bf44af9f 8267 NTOSAPI
sca8er 2:5853bf44af9f 8268 NTSTATUS
sca8er 2:5853bf44af9f 8269 DDKAPI
sca8er 2:5853bf44af9f 8270 ObGetObjectSecurity(
sca8er 2:5853bf44af9f 8271 /*IN*/ PVOID Object,
sca8er 2:5853bf44af9f 8272 /*OUT*/ PSECURITY_DESCRIPTOR *SecurityDescriptor,
sca8er 2:5853bf44af9f 8273 /*OUT*/ PBOOLEAN MemoryAllocated);
sca8er 2:5853bf44af9f 8274
sca8er 2:5853bf44af9f 8275 NTOSAPI
sca8er 2:5853bf44af9f 8276 NTSTATUS
sca8er 2:5853bf44af9f 8277 DDKAPI
sca8er 2:5853bf44af9f 8278 ObInsertObject(
sca8er 2:5853bf44af9f 8279 /*IN*/ PVOID Object,
sca8er 2:5853bf44af9f 8280 /*IN*/ PACCESS_STATE PassedAccessState /*OPTIONAL*/,
sca8er 2:5853bf44af9f 8281 /*IN*/ ACCESS_MASK DesiredAccess,
sca8er 2:5853bf44af9f 8282 /*IN*/ ULONG AdditionalReferences,
sca8er 2:5853bf44af9f 8283 /*OUT*/ PVOID* ReferencedObject /*OPTIONAL*/,
sca8er 2:5853bf44af9f 8284 /*OUT*/ PHANDLE Handle);
sca8er 2:5853bf44af9f 8285
sca8er 2:5853bf44af9f 8286 NTOSAPI
sca8er 2:5853bf44af9f 8287 VOID
sca8er 2:5853bf44af9f 8288 DDKFASTAPI
sca8er 2:5853bf44af9f 8289 ObfReferenceObject(
sca8er 2:5853bf44af9f 8290 /*IN*/ PVOID Object);
sca8er 2:5853bf44af9f 8291
sca8er 2:5853bf44af9f 8292 NTOSAPI
sca8er 2:5853bf44af9f 8293 NTSTATUS
sca8er 2:5853bf44af9f 8294 DDKAPI
sca8er 2:5853bf44af9f 8295 ObLogSecurityDescriptor(
sca8er 2:5853bf44af9f 8296 /*IN*/ PSECURITY_DESCRIPTOR InputSecurityDescriptor,
sca8er 2:5853bf44af9f 8297 /*OUT*/ PSECURITY_DESCRIPTOR *OutputSecurityDescriptor,
sca8er 2:5853bf44af9f 8298 /*IN*/ ULONG RefBias);
sca8er 2:5853bf44af9f 8299 /*
sca8er 2:5853bf44af9f 8300 * VOID
sca8er 2:5853bf44af9f 8301 * ObReferenceObject(
sca8er 2:5853bf44af9f 8302 * IN PVOID Object)
sca8er 2:5853bf44af9f 8303 */
sca8er 2:5853bf44af9f 8304 #define ObReferenceObject ObfReferenceObject
sca8er 2:5853bf44af9f 8305
sca8er 2:5853bf44af9f 8306 NTOSAPI
sca8er 2:5853bf44af9f 8307 VOID
sca8er 2:5853bf44af9f 8308 DDKAPI
sca8er 2:5853bf44af9f 8309 ObMakeTemporaryObject(
sca8er 2:5853bf44af9f 8310 /*IN*/ PVOID Object);
sca8er 2:5853bf44af9f 8311
sca8er 2:5853bf44af9f 8312 NTOSAPI
sca8er 2:5853bf44af9f 8313 NTSTATUS
sca8er 2:5853bf44af9f 8314 DDKAPI
sca8er 2:5853bf44af9f 8315 ObOpenObjectByName(
sca8er 2:5853bf44af9f 8316 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes,
sca8er 2:5853bf44af9f 8317 /*IN*/ POBJECT_TYPE ObjectType,
sca8er 2:5853bf44af9f 8318 /*IN OUT*/ PVOID ParseContext /*OPTIONAL*/,
sca8er 2:5853bf44af9f 8319 /*IN*/ KPROCESSOR_MODE AccessMode,
sca8er 2:5853bf44af9f 8320 /*IN*/ ACCESS_MASK DesiredAccess,
sca8er 2:5853bf44af9f 8321 /*IN*/ PACCESS_STATE PassedAccessState,
sca8er 2:5853bf44af9f 8322 /*OUT*/ PHANDLE Handle);
sca8er 2:5853bf44af9f 8323
sca8er 2:5853bf44af9f 8324 NTOSAPI
sca8er 2:5853bf44af9f 8325 NTSTATUS
sca8er 2:5853bf44af9f 8326 DDKAPI
sca8er 2:5853bf44af9f 8327 ObOpenObjectByPointer(
sca8er 2:5853bf44af9f 8328 /*IN*/ PVOID Object,
sca8er 2:5853bf44af9f 8329 /*IN*/ ULONG HandleAttributes,
sca8er 2:5853bf44af9f 8330 /*IN*/ PACCESS_STATE PassedAccessState /*OPTIONAL*/,
sca8er 2:5853bf44af9f 8331 /*IN*/ ACCESS_MASK DesiredAccess /*OPTIONAL*/,
sca8er 2:5853bf44af9f 8332 /*IN*/ POBJECT_TYPE ObjectType /*OPTIONAL*/,
sca8er 2:5853bf44af9f 8333 /*IN*/ KPROCESSOR_MODE AccessMode,
sca8er 2:5853bf44af9f 8334 /*OUT*/ PHANDLE Handle);
sca8er 2:5853bf44af9f 8335
sca8er 2:5853bf44af9f 8336 NTOSAPI
sca8er 2:5853bf44af9f 8337 NTSTATUS
sca8er 2:5853bf44af9f 8338 DDKAPI
sca8er 2:5853bf44af9f 8339 ObQueryObjectAuditingByHandle(
sca8er 2:5853bf44af9f 8340 /*IN*/ HANDLE Handle,
sca8er 2:5853bf44af9f 8341 /*OUT*/ PBOOLEAN GenerateOnClose);
sca8er 2:5853bf44af9f 8342
sca8er 2:5853bf44af9f 8343 NTOSAPI
sca8er 2:5853bf44af9f 8344 NTSTATUS
sca8er 2:5853bf44af9f 8345 DDKAPI
sca8er 2:5853bf44af9f 8346 ObReferenceObjectByHandle(
sca8er 2:5853bf44af9f 8347 /*IN*/ HANDLE Handle,
sca8er 2:5853bf44af9f 8348 /*IN*/ ACCESS_MASK DesiredAccess,
sca8er 2:5853bf44af9f 8349 /*IN*/ POBJECT_TYPE ObjectType /*OPTIONAL*/,
sca8er 2:5853bf44af9f 8350 /*IN*/ KPROCESSOR_MODE AccessMode,
sca8er 2:5853bf44af9f 8351 /*OUT*/ PVOID *Object,
sca8er 2:5853bf44af9f 8352 /*OUT*/ POBJECT_HANDLE_INFORMATION HandleInformation /*OPTIONAL*/);
sca8er 2:5853bf44af9f 8353
sca8er 2:5853bf44af9f 8354 NTOSAPI
sca8er 2:5853bf44af9f 8355 NTSTATUS
sca8er 2:5853bf44af9f 8356 DDKAPI
sca8er 2:5853bf44af9f 8357 ObReferenceObjectByName(
sca8er 2:5853bf44af9f 8358 /*IN*/ PUNICODE_STRING ObjectPath,
sca8er 2:5853bf44af9f 8359 /*IN*/ ULONG Attributes,
sca8er 2:5853bf44af9f 8360 /*IN*/ PACCESS_STATE PassedAccessState /*OPTIONAL*/,
sca8er 2:5853bf44af9f 8361 /*IN*/ ACCESS_MASK DesiredAccess /*OPTIONAL*/,
sca8er 2:5853bf44af9f 8362 /*IN*/ POBJECT_TYPE ObjectType,
sca8er 2:5853bf44af9f 8363 /*IN*/ KPROCESSOR_MODE AccessMode,
sca8er 2:5853bf44af9f 8364 /*IN OUT*/ PVOID ParseContext /*OPTIONAL*/,
sca8er 2:5853bf44af9f 8365 /*OUT*/ PVOID *Object);
sca8er 2:5853bf44af9f 8366
sca8er 2:5853bf44af9f 8367 NTOSAPI
sca8er 2:5853bf44af9f 8368 NTSTATUS
sca8er 2:5853bf44af9f 8369 DDKAPI
sca8er 2:5853bf44af9f 8370 ObReferenceObjectByPointer(
sca8er 2:5853bf44af9f 8371 /*IN*/ PVOID Object,
sca8er 2:5853bf44af9f 8372 /*IN*/ ACCESS_MASK DesiredAccess,
sca8er 2:5853bf44af9f 8373 /*IN*/ POBJECT_TYPE ObjectType,
sca8er 2:5853bf44af9f 8374 /*IN*/ KPROCESSOR_MODE AccessMode);
sca8er 2:5853bf44af9f 8375
sca8er 2:5853bf44af9f 8376 NTOSAPI
sca8er 2:5853bf44af9f 8377 VOID
sca8er 2:5853bf44af9f 8378 DDKAPI
sca8er 2:5853bf44af9f 8379 ObReferenceSecurityDescriptor(
sca8er 2:5853bf44af9f 8380 /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptor,
sca8er 2:5853bf44af9f 8381 /*IN*/ ULONG Count);
sca8er 2:5853bf44af9f 8382
sca8er 2:5853bf44af9f 8383 NTOSAPI
sca8er 2:5853bf44af9f 8384 VOID
sca8er 2:5853bf44af9f 8385 DDKAPI
sca8er 2:5853bf44af9f 8386 ObReleaseObjectSecurity(
sca8er 2:5853bf44af9f 8387 /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptor,
sca8er 2:5853bf44af9f 8388 /*IN*/ BOOLEAN MemoryAllocated);
sca8er 2:5853bf44af9f 8389
sca8er 2:5853bf44af9f 8390
sca8er 2:5853bf44af9f 8391
sca8er 2:5853bf44af9f 8392 /** Process manager routines **/
sca8er 2:5853bf44af9f 8393
sca8er 2:5853bf44af9f 8394 NTOSAPI
sca8er 2:5853bf44af9f 8395 NTSTATUS
sca8er 2:5853bf44af9f 8396 DDKAPI
sca8er 2:5853bf44af9f 8397 PsCreateSystemProcess(
sca8er 2:5853bf44af9f 8398 /*IN*/ PHANDLE ProcessHandle,
sca8er 2:5853bf44af9f 8399 /*IN*/ ACCESS_MASK DesiredAccess,
sca8er 2:5853bf44af9f 8400 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes);
sca8er 2:5853bf44af9f 8401
sca8er 2:5853bf44af9f 8402 NTOSAPI
sca8er 2:5853bf44af9f 8403 NTSTATUS
sca8er 2:5853bf44af9f 8404 DDKAPI
sca8er 2:5853bf44af9f 8405 PsCreateSystemThread(
sca8er 2:5853bf44af9f 8406 /*OUT*/ PHANDLE ThreadHandle,
sca8er 2:5853bf44af9f 8407 /*IN*/ ULONG DesiredAccess,
sca8er 2:5853bf44af9f 8408 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes /*OPTIONAL*/,
sca8er 2:5853bf44af9f 8409 /*IN*/ HANDLE ProcessHandle /*OPTIONAL*/,
sca8er 2:5853bf44af9f 8410 /*OUT*/ PCLIENT_ID ClientId /*OPTIONAL*/,
sca8er 2:5853bf44af9f 8411 /*IN*/ PKSTART_ROUTINE StartRoutine,
sca8er 2:5853bf44af9f 8412 /*IN*/ PVOID StartContext);
sca8er 2:5853bf44af9f 8413
sca8er 2:5853bf44af9f 8414 /*
sca8er 2:5853bf44af9f 8415 * PEPROCESS
sca8er 2:5853bf44af9f 8416 * PsGetCurrentProcess(VOID)
sca8er 2:5853bf44af9f 8417 */
sca8er 2:5853bf44af9f 8418 #define PsGetCurrentProcess IoGetCurrentProcess
sca8er 2:5853bf44af9f 8419
sca8er 2:5853bf44af9f 8420 NTOSAPI
sca8er 2:5853bf44af9f 8421 HANDLE
sca8er 2:5853bf44af9f 8422 DDKAPI
sca8er 2:5853bf44af9f 8423 PsGetCurrentProcessId(
sca8er 2:5853bf44af9f 8424 VOID);
sca8er 2:5853bf44af9f 8425
sca8er 2:5853bf44af9f 8426 /*
sca8er 2:5853bf44af9f 8427 * PETHREAD
sca8er 2:5853bf44af9f 8428 * PsGetCurrentThread(VOID)
sca8er 2:5853bf44af9f 8429 */
sca8er 2:5853bf44af9f 8430 #define PsGetCurrentThread() \
sca8er 2:5853bf44af9f 8431 ((PETHREAD) KeGetCurrentThread())
sca8er 2:5853bf44af9f 8432
sca8er 2:5853bf44af9f 8433 NTOSAPI
sca8er 2:5853bf44af9f 8434 HANDLE
sca8er 2:5853bf44af9f 8435 DDKAPI
sca8er 2:5853bf44af9f 8436 PsGetCurrentThreadId(
sca8er 2:5853bf44af9f 8437 VOID);
sca8er 2:5853bf44af9f 8438
sca8er 2:5853bf44af9f 8439 NTOSAPI
sca8er 2:5853bf44af9f 8440 BOOLEAN
sca8er 2:5853bf44af9f 8441 DDKAPI
sca8er 2:5853bf44af9f 8442 PsGetVersion(
sca8er 2:5853bf44af9f 8443 PULONG MajorVersion /*OPTIONAL*/,
sca8er 2:5853bf44af9f 8444 PULONG MinorVersion /*OPTIONAL*/,
sca8er 2:5853bf44af9f 8445 PULONG BuildNumber /*OPTIONAL*/,
sca8er 2:5853bf44af9f 8446 PUNICODE_STRING CSDVersion /*OPTIONAL*/);
sca8er 2:5853bf44af9f 8447
sca8er 2:5853bf44af9f 8448 NTOSAPI
sca8er 2:5853bf44af9f 8449 NTSTATUS
sca8er 2:5853bf44af9f 8450 DDKAPI
sca8er 2:5853bf44af9f 8451 PsRemoveCreateThreadNotifyRoutine(
sca8er 2:5853bf44af9f 8452 /*IN*/ PCREATE_THREAD_NOTIFY_ROUTINE NotifyRoutine);
sca8er 2:5853bf44af9f 8453
sca8er 2:5853bf44af9f 8454 NTOSAPI
sca8er 2:5853bf44af9f 8455 NTSTATUS
sca8er 2:5853bf44af9f 8456 DDKAPI
sca8er 2:5853bf44af9f 8457 PsRemoveLoadImageNotifyRoutine(
sca8er 2:5853bf44af9f 8458 /*IN*/ PLOAD_IMAGE_NOTIFY_ROUTINE NotifyRoutine);
sca8er 2:5853bf44af9f 8459
sca8er 2:5853bf44af9f 8460 NTOSAPI
sca8er 2:5853bf44af9f 8461 NTSTATUS
sca8er 2:5853bf44af9f 8462 DDKAPI
sca8er 2:5853bf44af9f 8463 PsSetCreateProcessNotifyRoutine(
sca8er 2:5853bf44af9f 8464 /*IN*/ PCREATE_PROCESS_NOTIFY_ROUTINE NotifyRoutine,
sca8er 2:5853bf44af9f 8465 /*IN*/ BOOLEAN Remove);
sca8er 2:5853bf44af9f 8466
sca8er 2:5853bf44af9f 8467 NTOSAPI
sca8er 2:5853bf44af9f 8468 NTSTATUS
sca8er 2:5853bf44af9f 8469 DDKAPI
sca8er 2:5853bf44af9f 8470 PsSetCreateThreadNotifyRoutine(
sca8er 2:5853bf44af9f 8471 /*IN*/ PCREATE_THREAD_NOTIFY_ROUTINE NotifyRoutine);
sca8er 2:5853bf44af9f 8472
sca8er 2:5853bf44af9f 8473 NTOSAPI
sca8er 2:5853bf44af9f 8474 NTSTATUS
sca8er 2:5853bf44af9f 8475 DDKAPI
sca8er 2:5853bf44af9f 8476 PsSetLoadImageNotifyRoutine(
sca8er 2:5853bf44af9f 8477 /*IN*/ PLOAD_IMAGE_NOTIFY_ROUTINE NotifyRoutine);
sca8er 2:5853bf44af9f 8478
sca8er 2:5853bf44af9f 8479 NTOSAPI
sca8er 2:5853bf44af9f 8480 NTSTATUS
sca8er 2:5853bf44af9f 8481 DDKAPI
sca8er 2:5853bf44af9f 8482 PsTerminateSystemThread(
sca8er 2:5853bf44af9f 8483 /*IN*/ NTSTATUS ExitStatus);
sca8er 2:5853bf44af9f 8484
sca8er 2:5853bf44af9f 8485
sca8er 2:5853bf44af9f 8486
sca8er 2:5853bf44af9f 8487 /** Security reference monitor routines **/
sca8er 2:5853bf44af9f 8488
sca8er 2:5853bf44af9f 8489 NTOSAPI
sca8er 2:5853bf44af9f 8490 BOOLEAN
sca8er 2:5853bf44af9f 8491 DDKAPI
sca8er 2:5853bf44af9f 8492 SeAccessCheck(
sca8er 2:5853bf44af9f 8493 /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptor,
sca8er 2:5853bf44af9f 8494 /*IN*/ PSECURITY_SUBJECT_CONTEXT SubjectSecurityContext,
sca8er 2:5853bf44af9f 8495 /*IN*/ BOOLEAN SubjectContextLocked,
sca8er 2:5853bf44af9f 8496 /*IN*/ ACCESS_MASK DesiredAccess,
sca8er 2:5853bf44af9f 8497 /*IN*/ ACCESS_MASK PreviouslyGrantedAccess,
sca8er 2:5853bf44af9f 8498 /*OUT*/ PPRIVILEGE_SET *Privileges /*OPTIONAL*/,
sca8er 2:5853bf44af9f 8499 /*IN*/ PGENERIC_MAPPING GenericMapping,
sca8er 2:5853bf44af9f 8500 /*IN*/ KPROCESSOR_MODE AccessMode,
sca8er 2:5853bf44af9f 8501 /*OUT*/ PACCESS_MASK GrantedAccess,
sca8er 2:5853bf44af9f 8502 /*OUT*/ PNTSTATUS AccessStatus);
sca8er 2:5853bf44af9f 8503
sca8er 2:5853bf44af9f 8504 NTOSAPI
sca8er 2:5853bf44af9f 8505 NTSTATUS
sca8er 2:5853bf44af9f 8506 DDKAPI
sca8er 2:5853bf44af9f 8507 SeAssignSecurity(
sca8er 2:5853bf44af9f 8508 /*IN*/ PSECURITY_DESCRIPTOR ParentDescriptor /*OPTIONAL*/,
sca8er 2:5853bf44af9f 8509 /*IN*/ PSECURITY_DESCRIPTOR ExplicitDescriptor /*OPTIONAL*/,
sca8er 2:5853bf44af9f 8510 /*OUT*/ PSECURITY_DESCRIPTOR *NewDescriptor,
sca8er 2:5853bf44af9f 8511 /*IN*/ BOOLEAN IsDirectoryObject,
sca8er 2:5853bf44af9f 8512 /*IN*/ PSECURITY_SUBJECT_CONTEXT SubjectContext,
sca8er 2:5853bf44af9f 8513 /*IN*/ PGENERIC_MAPPING GenericMapping,
sca8er 2:5853bf44af9f 8514 /*IN*/ POOL_TYPE PoolType);
sca8er 2:5853bf44af9f 8515
sca8er 2:5853bf44af9f 8516 NTOSAPI
sca8er 2:5853bf44af9f 8517 NTSTATUS
sca8er 2:5853bf44af9f 8518 DDKAPI
sca8er 2:5853bf44af9f 8519 SeAssignSecurityEx(
sca8er 2:5853bf44af9f 8520 /*IN*/ PSECURITY_DESCRIPTOR ParentDescriptor /*OPTIONAL*/,
sca8er 2:5853bf44af9f 8521 /*IN*/ PSECURITY_DESCRIPTOR ExplicitDescriptor /*OPTIONAL*/,
sca8er 2:5853bf44af9f 8522 /*OUT*/ PSECURITY_DESCRIPTOR *NewDescriptor,
sca8er 2:5853bf44af9f 8523 /*IN*/ GUID *ObjectType /*OPTIONAL*/,
sca8er 2:5853bf44af9f 8524 /*IN*/ BOOLEAN IsDirectoryObject,
sca8er 2:5853bf44af9f 8525 /*IN*/ ULONG AutoInheritFlags,
sca8er 2:5853bf44af9f 8526 /*IN*/ PSECURITY_SUBJECT_CONTEXT SubjectContext,
sca8er 2:5853bf44af9f 8527 /*IN*/ PGENERIC_MAPPING GenericMapping,
sca8er 2:5853bf44af9f 8528 /*IN*/ POOL_TYPE PoolType);
sca8er 2:5853bf44af9f 8529
sca8er 2:5853bf44af9f 8530 NTOSAPI
sca8er 2:5853bf44af9f 8531 NTSTATUS
sca8er 2:5853bf44af9f 8532 DDKAPI
sca8er 2:5853bf44af9f 8533 SeDeassignSecurity(
sca8er 2:5853bf44af9f 8534 /*IN OUT*/ PSECURITY_DESCRIPTOR *SecurityDescriptor);
sca8er 2:5853bf44af9f 8535
sca8er 2:5853bf44af9f 8536 NTOSAPI
sca8er 2:5853bf44af9f 8537 BOOLEAN
sca8er 2:5853bf44af9f 8538 DDKAPI
sca8er 2:5853bf44af9f 8539 SeSinglePrivilegeCheck(
sca8er 2:5853bf44af9f 8540 LUID PrivilegeValue,
sca8er 2:5853bf44af9f 8541 KPROCESSOR_MODE PreviousMode);
sca8er 2:5853bf44af9f 8542
sca8er 2:5853bf44af9f 8543 NTOSAPI
sca8er 2:5853bf44af9f 8544 BOOLEAN
sca8er 2:5853bf44af9f 8545 DDKAPI
sca8er 2:5853bf44af9f 8546 SeValidSecurityDescriptor(
sca8er 2:5853bf44af9f 8547 /*IN*/ ULONG Length,
sca8er 2:5853bf44af9f 8548 /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptor);
sca8er 2:5853bf44af9f 8549
sca8er 2:5853bf44af9f 8550
sca8er 2:5853bf44af9f 8551
sca8er 2:5853bf44af9f 8552 /** NtXxx routines **/
sca8er 2:5853bf44af9f 8553
sca8er 2:5853bf44af9f 8554 NTOSAPI
sca8er 2:5853bf44af9f 8555 NTSTATUS
sca8er 2:5853bf44af9f 8556 DDKAPI
sca8er 2:5853bf44af9f 8557 NtOpenProcess(
sca8er 2:5853bf44af9f 8558 /*OUT*/ PHANDLE ProcessHandle,
sca8er 2:5853bf44af9f 8559 /*IN*/ ACCESS_MASK DesiredAccess,
sca8er 2:5853bf44af9f 8560 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes,
sca8er 2:5853bf44af9f 8561 /*IN*/ PCLIENT_ID ClientId /*OPTIONAL*/);
sca8er 2:5853bf44af9f 8562
sca8er 2:5853bf44af9f 8563 NTOSAPI
sca8er 2:5853bf44af9f 8564 NTSTATUS
sca8er 2:5853bf44af9f 8565 DDKAPI
sca8er 2:5853bf44af9f 8566 NtQueryInformationProcess(
sca8er 2:5853bf44af9f 8567 /*IN*/ HANDLE ProcessHandle,
sca8er 2:5853bf44af9f 8568 /*IN*/ PROCESSINFOCLASS ProcessInformationClass,
sca8er 2:5853bf44af9f 8569 /*OUT*/ PVOID ProcessInformation,
sca8er 2:5853bf44af9f 8570 /*IN*/ ULONG ProcessInformationLength,
sca8er 2:5853bf44af9f 8571 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/);
sca8er 2:5853bf44af9f 8572
sca8er 2:5853bf44af9f 8573
sca8er 2:5853bf44af9f 8574
sca8er 2:5853bf44af9f 8575 /** NtXxx and ZwXxx routines **/
sca8er 2:5853bf44af9f 8576
sca8er 2:5853bf44af9f 8577 NTOSAPI
sca8er 2:5853bf44af9f 8578 NTSTATUS
sca8er 2:5853bf44af9f 8579 DDKAPI
sca8er 2:5853bf44af9f 8580 NtCancelTimer(
sca8er 2:5853bf44af9f 8581 /*IN*/ HANDLE TimerHandle,
sca8er 2:5853bf44af9f 8582 /*OUT*/ PBOOLEAN CurrentState /*OPTIONAL*/);
sca8er 2:5853bf44af9f 8583
sca8er 2:5853bf44af9f 8584 NTOSAPI
sca8er 2:5853bf44af9f 8585 NTSTATUS
sca8er 2:5853bf44af9f 8586 DDKAPI
sca8er 2:5853bf44af9f 8587 ZwCancelTimer(
sca8er 2:5853bf44af9f 8588 /*IN*/ HANDLE TimerHandle,
sca8er 2:5853bf44af9f 8589 /*OUT*/ PBOOLEAN CurrentState /*OPTIONAL*/);
sca8er 2:5853bf44af9f 8590
sca8er 2:5853bf44af9f 8591 NTOSAPI
sca8er 2:5853bf44af9f 8592 NTSTATUS
sca8er 2:5853bf44af9f 8593 DDKAPI
sca8er 2:5853bf44af9f 8594 NtClose(
sca8er 2:5853bf44af9f 8595 /*IN*/ HANDLE Handle);
sca8er 2:5853bf44af9f 8596
sca8er 2:5853bf44af9f 8597 NTOSAPI
sca8er 2:5853bf44af9f 8598 NTSTATUS
sca8er 2:5853bf44af9f 8599 DDKAPI
sca8er 2:5853bf44af9f 8600 ZwClose(
sca8er 2:5853bf44af9f 8601 /*IN*/ HANDLE Handle);
sca8er 2:5853bf44af9f 8602
sca8er 2:5853bf44af9f 8603 NTOSAPI
sca8er 2:5853bf44af9f 8604 NTSTATUS
sca8er 2:5853bf44af9f 8605 DDKAPI
sca8er 2:5853bf44af9f 8606 NtCreateDirectoryObject(
sca8er 2:5853bf44af9f 8607 /*OUT*/ PHANDLE DirectoryHandle,
sca8er 2:5853bf44af9f 8608 /*IN*/ ACCESS_MASK DesiredAccess,
sca8er 2:5853bf44af9f 8609 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes);
sca8er 2:5853bf44af9f 8610
sca8er 2:5853bf44af9f 8611 NTOSAPI
sca8er 2:5853bf44af9f 8612 NTSTATUS
sca8er 2:5853bf44af9f 8613 DDKAPI
sca8er 2:5853bf44af9f 8614 ZwCreateDirectoryObject(
sca8er 2:5853bf44af9f 8615 /*OUT*/ PHANDLE DirectoryHandle,
sca8er 2:5853bf44af9f 8616 /*IN*/ ACCESS_MASK DesiredAccess,
sca8er 2:5853bf44af9f 8617 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes);
sca8er 2:5853bf44af9f 8618
sca8er 2:5853bf44af9f 8619 NTOSAPI
sca8er 2:5853bf44af9f 8620 NTSTATUS
sca8er 2:5853bf44af9f 8621 DDKAPI
sca8er 2:5853bf44af9f 8622 NtCreateEvent(
sca8er 2:5853bf44af9f 8623 /*OUT*/ PHANDLE EventHandle,
sca8er 2:5853bf44af9f 8624 /*IN*/ ACCESS_MASK DesiredAccess,
sca8er 2:5853bf44af9f 8625 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes,
sca8er 2:5853bf44af9f 8626 /*IN*/ BOOLEAN ManualReset,
sca8er 2:5853bf44af9f 8627 /*IN*/ BOOLEAN InitialState);
sca8er 2:5853bf44af9f 8628
sca8er 2:5853bf44af9f 8629 NTOSAPI
sca8er 2:5853bf44af9f 8630 NTSTATUS
sca8er 2:5853bf44af9f 8631 DDKAPI
sca8er 2:5853bf44af9f 8632 ZwCreateEvent(
sca8er 2:5853bf44af9f 8633 /*OUT*/ PHANDLE EventHandle,
sca8er 2:5853bf44af9f 8634 /*IN*/ ACCESS_MASK DesiredAccess,
sca8er 2:5853bf44af9f 8635 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes,
sca8er 2:5853bf44af9f 8636 /*IN*/ BOOLEAN ManualReset,
sca8er 2:5853bf44af9f 8637 /*IN*/ BOOLEAN InitialState);
sca8er 2:5853bf44af9f 8638
sca8er 2:5853bf44af9f 8639 NTOSAPI
sca8er 2:5853bf44af9f 8640 NTSTATUS
sca8er 2:5853bf44af9f 8641 DDKAPI
sca8er 2:5853bf44af9f 8642 NtCreateFile(
sca8er 2:5853bf44af9f 8643 /*OUT*/ PHANDLE FileHandle,
sca8er 2:5853bf44af9f 8644 /*IN*/ ACCESS_MASK DesiredAccess,
sca8er 2:5853bf44af9f 8645 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes,
sca8er 2:5853bf44af9f 8646 /*OUT*/ PIO_STATUS_BLOCK IoStatusBlock,
sca8er 2:5853bf44af9f 8647 /*IN*/ PLARGE_INTEGER AllocationSize /*OPTIONAL*/,
sca8er 2:5853bf44af9f 8648 /*IN*/ ULONG FileAttributes,
sca8er 2:5853bf44af9f 8649 /*IN*/ ULONG ShareAccess,
sca8er 2:5853bf44af9f 8650 /*IN*/ ULONG CreateDisposition,
sca8er 2:5853bf44af9f 8651 /*IN*/ ULONG CreateOptions,
sca8er 2:5853bf44af9f 8652 /*IN*/ PVOID EaBuffer /*OPTIONAL*/,
sca8er 2:5853bf44af9f 8653 /*IN*/ ULONG EaLength);
sca8er 2:5853bf44af9f 8654
sca8er 2:5853bf44af9f 8655 NTOSAPI
sca8er 2:5853bf44af9f 8656 NTSTATUS
sca8er 2:5853bf44af9f 8657 DDKAPI
sca8er 2:5853bf44af9f 8658 ZwCreateFile(
sca8er 2:5853bf44af9f 8659 /*OUT*/ PHANDLE FileHandle,
sca8er 2:5853bf44af9f 8660 /*IN*/ ACCESS_MASK DesiredAccess,
sca8er 2:5853bf44af9f 8661 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes,
sca8er 2:5853bf44af9f 8662 /*OUT*/ PIO_STATUS_BLOCK IoStatusBlock,
sca8er 2:5853bf44af9f 8663 /*IN*/ PLARGE_INTEGER AllocationSize /*OPTIONAL*/,
sca8er 2:5853bf44af9f 8664 /*IN*/ ULONG FileAttributes,
sca8er 2:5853bf44af9f 8665 /*IN*/ ULONG ShareAccess,
sca8er 2:5853bf44af9f 8666 /*IN*/ ULONG CreateDisposition,
sca8er 2:5853bf44af9f 8667 /*IN*/ ULONG CreateOptions,
sca8er 2:5853bf44af9f 8668 /*IN*/ PVOID EaBuffer /*OPTIONAL*/,
sca8er 2:5853bf44af9f 8669 /*IN*/ ULONG EaLength);
sca8er 2:5853bf44af9f 8670
sca8er 2:5853bf44af9f 8671 NTOSAPI
sca8er 2:5853bf44af9f 8672 NTSTATUS
sca8er 2:5853bf44af9f 8673 DDKAPI
sca8er 2:5853bf44af9f 8674 NtCreateKey(
sca8er 2:5853bf44af9f 8675 /*OUT*/ PHANDLE KeyHandle,
sca8er 2:5853bf44af9f 8676 /*IN*/ ACCESS_MASK DesiredAccess,
sca8er 2:5853bf44af9f 8677 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes,
sca8er 2:5853bf44af9f 8678 /*IN*/ ULONG TitleIndex,
sca8er 2:5853bf44af9f 8679 /*IN*/ PUNICODE_STRING Class /*OPTIONAL*/,
sca8er 2:5853bf44af9f 8680 /*IN*/ ULONG CreateOptions,
sca8er 2:5853bf44af9f 8681 /*OUT*/ PULONG Disposition /*OPTIONAL*/);
sca8er 2:5853bf44af9f 8682
sca8er 2:5853bf44af9f 8683 NTOSAPI
sca8er 2:5853bf44af9f 8684 NTSTATUS
sca8er 2:5853bf44af9f 8685 DDKAPI
sca8er 2:5853bf44af9f 8686 ZwCreateKey(
sca8er 2:5853bf44af9f 8687 /*OUT*/ PHANDLE KeyHandle,
sca8er 2:5853bf44af9f 8688 /*IN*/ ACCESS_MASK DesiredAccess,
sca8er 2:5853bf44af9f 8689 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes,
sca8er 2:5853bf44af9f 8690 /*IN*/ ULONG TitleIndex,
sca8er 2:5853bf44af9f 8691 /*IN*/ PUNICODE_STRING Class /*OPTIONAL*/,
sca8er 2:5853bf44af9f 8692 /*IN*/ ULONG CreateOptions,
sca8er 2:5853bf44af9f 8693 /*OUT*/ PULONG Disposition /*OPTIONAL*/);
sca8er 2:5853bf44af9f 8694
sca8er 2:5853bf44af9f 8695 NTOSAPI
sca8er 2:5853bf44af9f 8696 NTSTATUS
sca8er 2:5853bf44af9f 8697 DDKAPI
sca8er 2:5853bf44af9f 8698 NtCreateTimer(
sca8er 2:5853bf44af9f 8699 /*OUT*/ PHANDLE TimerHandle,
sca8er 2:5853bf44af9f 8700 /*IN*/ ACCESS_MASK DesiredAccess,
sca8er 2:5853bf44af9f 8701 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes /*OPTIONAL*/,
sca8er 2:5853bf44af9f 8702 /*IN*/ TIMER_TYPE TimerType);
sca8er 2:5853bf44af9f 8703
sca8er 2:5853bf44af9f 8704 NTOSAPI
sca8er 2:5853bf44af9f 8705 NTSTATUS
sca8er 2:5853bf44af9f 8706 DDKAPI
sca8er 2:5853bf44af9f 8707 ZwCreateTimer(
sca8er 2:5853bf44af9f 8708 /*OUT*/ PHANDLE TimerHandle,
sca8er 2:5853bf44af9f 8709 /*IN*/ ACCESS_MASK DesiredAccess,
sca8er 2:5853bf44af9f 8710 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes /*OPTIONAL*/,
sca8er 2:5853bf44af9f 8711 /*IN*/ TIMER_TYPE TimerType);
sca8er 2:5853bf44af9f 8712
sca8er 2:5853bf44af9f 8713 NTOSAPI
sca8er 2:5853bf44af9f 8714 NTSTATUS
sca8er 2:5853bf44af9f 8715 DDKAPI
sca8er 2:5853bf44af9f 8716 NtDeleteKey(
sca8er 2:5853bf44af9f 8717 /*IN*/ HANDLE KeyHandle);
sca8er 2:5853bf44af9f 8718
sca8er 2:5853bf44af9f 8719 NTOSAPI
sca8er 2:5853bf44af9f 8720 NTSTATUS
sca8er 2:5853bf44af9f 8721 DDKAPI
sca8er 2:5853bf44af9f 8722 ZwDeleteKey(
sca8er 2:5853bf44af9f 8723 /*IN*/ HANDLE KeyHandle);
sca8er 2:5853bf44af9f 8724
sca8er 2:5853bf44af9f 8725 NTOSAPI
sca8er 2:5853bf44af9f 8726 NTSTATUS
sca8er 2:5853bf44af9f 8727 DDKAPI
sca8er 2:5853bf44af9f 8728 NtDeleteValueKey(
sca8er 2:5853bf44af9f 8729 /*IN*/ HANDLE KeyHandle,
sca8er 2:5853bf44af9f 8730 /*IN*/ PUNICODE_STRING ValueName);
sca8er 2:5853bf44af9f 8731
sca8er 2:5853bf44af9f 8732 NTOSAPI
sca8er 2:5853bf44af9f 8733 NTSTATUS
sca8er 2:5853bf44af9f 8734 DDKAPI
sca8er 2:5853bf44af9f 8735 ZwDeleteValueKey(
sca8er 2:5853bf44af9f 8736 /*IN*/ HANDLE KeyHandle,
sca8er 2:5853bf44af9f 8737 /*IN*/ PUNICODE_STRING ValueName);
sca8er 2:5853bf44af9f 8738
sca8er 2:5853bf44af9f 8739 NTOSAPI
sca8er 2:5853bf44af9f 8740 NTSTATUS
sca8er 2:5853bf44af9f 8741 DDKAPI
sca8er 2:5853bf44af9f 8742 NtDeviceIoControlFile(
sca8er 2:5853bf44af9f 8743 /*IN*/ HANDLE DeviceHandle,
sca8er 2:5853bf44af9f 8744 /*IN*/ HANDLE Event /*OPTIONAL*/,
sca8er 2:5853bf44af9f 8745 /*IN*/ PIO_APC_ROUTINE UserApcRoutine /*OPTIONAL*/,
sca8er 2:5853bf44af9f 8746 /*IN*/ PVOID UserApcContext /*OPTIONAL*/,
sca8er 2:5853bf44af9f 8747 /*OUT*/ PIO_STATUS_BLOCK IoStatusBlock,
sca8er 2:5853bf44af9f 8748 /*IN*/ ULONG IoControlCode,
sca8er 2:5853bf44af9f 8749 /*IN*/ PVOID InputBuffer,
sca8er 2:5853bf44af9f 8750 /*IN*/ ULONG InputBufferSize,
sca8er 2:5853bf44af9f 8751 /*OUT*/ PVOID OutputBuffer,
sca8er 2:5853bf44af9f 8752 /*IN*/ ULONG OutputBufferSize);
sca8er 2:5853bf44af9f 8753
sca8er 2:5853bf44af9f 8754 NTOSAPI
sca8er 2:5853bf44af9f 8755 NTSTATUS
sca8er 2:5853bf44af9f 8756 DDKAPI
sca8er 2:5853bf44af9f 8757 ZwDeviceIoControlFile(
sca8er 2:5853bf44af9f 8758 /*IN*/ HANDLE DeviceHandle,
sca8er 2:5853bf44af9f 8759 /*IN*/ HANDLE Event /*OPTIONAL*/,
sca8er 2:5853bf44af9f 8760 /*IN*/ PIO_APC_ROUTINE UserApcRoutine /*OPTIONAL*/,
sca8er 2:5853bf44af9f 8761 /*IN*/ PVOID UserApcContext /*OPTIONAL*/,
sca8er 2:5853bf44af9f 8762 /*OUT*/ PIO_STATUS_BLOCK IoStatusBlock,
sca8er 2:5853bf44af9f 8763 /*IN*/ ULONG IoControlCode,
sca8er 2:5853bf44af9f 8764 /*IN*/ PVOID InputBuffer,
sca8er 2:5853bf44af9f 8765 /*IN*/ ULONG InputBufferSize,
sca8er 2:5853bf44af9f 8766 /*OUT*/ PVOID OutputBuffer,
sca8er 2:5853bf44af9f 8767 /*IN*/ ULONG OutputBufferSize);
sca8er 2:5853bf44af9f 8768
sca8er 2:5853bf44af9f 8769 NTOSAPI
sca8er 2:5853bf44af9f 8770 NTSTATUS
sca8er 2:5853bf44af9f 8771 DDKAPI
sca8er 2:5853bf44af9f 8772 NtEnumerateKey(
sca8er 2:5853bf44af9f 8773 /*IN*/ HANDLE KeyHandle,
sca8er 2:5853bf44af9f 8774 /*IN*/ ULONG Index,
sca8er 2:5853bf44af9f 8775 /*IN*/ KEY_INFORMATION_CLASS KeyInformationClass,
sca8er 2:5853bf44af9f 8776 /*OUT*/ PVOID KeyInformation,
sca8er 2:5853bf44af9f 8777 /*IN*/ ULONG Length,
sca8er 2:5853bf44af9f 8778 /*OUT*/ PULONG ResultLength);
sca8er 2:5853bf44af9f 8779
sca8er 2:5853bf44af9f 8780 NTOSAPI
sca8er 2:5853bf44af9f 8781 NTSTATUS
sca8er 2:5853bf44af9f 8782 DDKAPI
sca8er 2:5853bf44af9f 8783 ZwEnumerateKey(
sca8er 2:5853bf44af9f 8784 /*IN*/ HANDLE KeyHandle,
sca8er 2:5853bf44af9f 8785 /*IN*/ ULONG Index,
sca8er 2:5853bf44af9f 8786 /*IN*/ KEY_INFORMATION_CLASS KeyInformationClass,
sca8er 2:5853bf44af9f 8787 /*OUT*/ PVOID KeyInformation,
sca8er 2:5853bf44af9f 8788 /*IN*/ ULONG Length,
sca8er 2:5853bf44af9f 8789 /*OUT*/ PULONG ResultLength);
sca8er 2:5853bf44af9f 8790
sca8er 2:5853bf44af9f 8791 NTOSAPI
sca8er 2:5853bf44af9f 8792 NTSTATUS
sca8er 2:5853bf44af9f 8793 DDKAPI
sca8er 2:5853bf44af9f 8794 NtEnumerateValueKey(
sca8er 2:5853bf44af9f 8795 /*IN*/ HANDLE KeyHandle,
sca8er 2:5853bf44af9f 8796 /*IN*/ ULONG Index,
sca8er 2:5853bf44af9f 8797 /*IN*/ KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass,
sca8er 2:5853bf44af9f 8798 /*OUT*/ PVOID KeyValueInformation,
sca8er 2:5853bf44af9f 8799 /*IN*/ ULONG Length,
sca8er 2:5853bf44af9f 8800 /*OUT*/ PULONG ResultLength);
sca8er 2:5853bf44af9f 8801
sca8er 2:5853bf44af9f 8802 NTOSAPI
sca8er 2:5853bf44af9f 8803 NTSTATUS
sca8er 2:5853bf44af9f 8804 DDKAPI
sca8er 2:5853bf44af9f 8805 ZwEnumerateValueKey(
sca8er 2:5853bf44af9f 8806 /*IN*/ HANDLE KeyHandle,
sca8er 2:5853bf44af9f 8807 /*IN*/ ULONG Index,
sca8er 2:5853bf44af9f 8808 /*IN*/ KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass,
sca8er 2:5853bf44af9f 8809 /*OUT*/ PVOID KeyValueInformation,
sca8er 2:5853bf44af9f 8810 /*IN*/ ULONG Length,
sca8er 2:5853bf44af9f 8811 /*OUT*/ PULONG ResultLength);
sca8er 2:5853bf44af9f 8812
sca8er 2:5853bf44af9f 8813 NTOSAPI
sca8er 2:5853bf44af9f 8814 NTSTATUS
sca8er 2:5853bf44af9f 8815 DDKAPI
sca8er 2:5853bf44af9f 8816 NtFlushKey(
sca8er 2:5853bf44af9f 8817 /*IN*/ HANDLE KeyHandle);
sca8er 2:5853bf44af9f 8818
sca8er 2:5853bf44af9f 8819 NTOSAPI
sca8er 2:5853bf44af9f 8820 NTSTATUS
sca8er 2:5853bf44af9f 8821 DDKAPI
sca8er 2:5853bf44af9f 8822 ZwFlushKey(
sca8er 2:5853bf44af9f 8823 /*IN*/ HANDLE KeyHandle);
sca8er 2:5853bf44af9f 8824
sca8er 2:5853bf44af9f 8825 NTOSAPI
sca8er 2:5853bf44af9f 8826 NTSTATUS
sca8er 2:5853bf44af9f 8827 DDKAPI
sca8er 2:5853bf44af9f 8828 NtMakeTemporaryObject(
sca8er 2:5853bf44af9f 8829 /*IN*/ HANDLE Handle);
sca8er 2:5853bf44af9f 8830
sca8er 2:5853bf44af9f 8831 NTOSAPI
sca8er 2:5853bf44af9f 8832 NTSTATUS
sca8er 2:5853bf44af9f 8833 DDKAPI
sca8er 2:5853bf44af9f 8834 ZwMakeTemporaryObject(
sca8er 2:5853bf44af9f 8835 /*IN*/ HANDLE Handle);
sca8er 2:5853bf44af9f 8836
sca8er 2:5853bf44af9f 8837 NTOSAPI
sca8er 2:5853bf44af9f 8838 NTSTATUS
sca8er 2:5853bf44af9f 8839 DDKAPI
sca8er 2:5853bf44af9f 8840 NtMapViewOfSection(
sca8er 2:5853bf44af9f 8841 /*IN*/ HANDLE SectionHandle,
sca8er 2:5853bf44af9f 8842 /*IN*/ HANDLE ProcessHandle,
sca8er 2:5853bf44af9f 8843 /*IN OUT*/ PVOID *BaseAddress,
sca8er 2:5853bf44af9f 8844 /*IN*/ ULONG ZeroBits,
sca8er 2:5853bf44af9f 8845 /*IN*/ ULONG CommitSize,
sca8er 2:5853bf44af9f 8846 /*IN OUT*/ PLARGE_INTEGER SectionOffset /*OPTIONAL*/,
sca8er 2:5853bf44af9f 8847 /*IN OUT*/ PSIZE_T ViewSize,
sca8er 2:5853bf44af9f 8848 /*IN*/ SECTION_INHERIT InheritDisposition,
sca8er 2:5853bf44af9f 8849 /*IN*/ ULONG AllocationType,
sca8er 2:5853bf44af9f 8850 /*IN*/ ULONG Protect);
sca8er 2:5853bf44af9f 8851
sca8er 2:5853bf44af9f 8852 NTOSAPI
sca8er 2:5853bf44af9f 8853 NTSTATUS
sca8er 2:5853bf44af9f 8854 DDKAPI
sca8er 2:5853bf44af9f 8855 ZwMapViewOfSection(
sca8er 2:5853bf44af9f 8856 /*IN*/ HANDLE SectionHandle,
sca8er 2:5853bf44af9f 8857 /*IN*/ HANDLE ProcessHandle,
sca8er 2:5853bf44af9f 8858 /*IN OUT*/ PVOID *BaseAddress,
sca8er 2:5853bf44af9f 8859 /*IN*/ ULONG ZeroBits,
sca8er 2:5853bf44af9f 8860 /*IN*/ ULONG CommitSize,
sca8er 2:5853bf44af9f 8861 /*IN OUT*/ PLARGE_INTEGER SectionOffset /*OPTIONAL*/,
sca8er 2:5853bf44af9f 8862 /*IN OUT*/ PSIZE_T ViewSize,
sca8er 2:5853bf44af9f 8863 /*IN*/ SECTION_INHERIT InheritDisposition,
sca8er 2:5853bf44af9f 8864 /*IN*/ ULONG AllocationType,
sca8er 2:5853bf44af9f 8865 /*IN*/ ULONG Protect);
sca8er 2:5853bf44af9f 8866
sca8er 2:5853bf44af9f 8867 NTOSAPI
sca8er 2:5853bf44af9f 8868 NTSTATUS
sca8er 2:5853bf44af9f 8869 DDKAPI
sca8er 2:5853bf44af9f 8870 NtOpenFile(
sca8er 2:5853bf44af9f 8871 /*OUT*/ PHANDLE FileHandle,
sca8er 2:5853bf44af9f 8872 /*IN*/ ACCESS_MASK DesiredAccess,
sca8er 2:5853bf44af9f 8873 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes,
sca8er 2:5853bf44af9f 8874 /*OUT*/ PIO_STATUS_BLOCK IoStatusBlock,
sca8er 2:5853bf44af9f 8875 /*IN*/ ULONG ShareAccess,
sca8er 2:5853bf44af9f 8876 /*IN*/ ULONG OpenOptions);
sca8er 2:5853bf44af9f 8877
sca8er 2:5853bf44af9f 8878 NTOSAPI
sca8er 2:5853bf44af9f 8879 NTSTATUS
sca8er 2:5853bf44af9f 8880 DDKAPI
sca8er 2:5853bf44af9f 8881 ZwOpenFile(
sca8er 2:5853bf44af9f 8882 /*OUT*/ PHANDLE FileHandle,
sca8er 2:5853bf44af9f 8883 /*IN*/ ACCESS_MASK DesiredAccess,
sca8er 2:5853bf44af9f 8884 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes,
sca8er 2:5853bf44af9f 8885 /*OUT*/ PIO_STATUS_BLOCK IoStatusBlock,
sca8er 2:5853bf44af9f 8886 /*IN*/ ULONG ShareAccess,
sca8er 2:5853bf44af9f 8887 /*IN*/ ULONG OpenOptions);
sca8er 2:5853bf44af9f 8888
sca8er 2:5853bf44af9f 8889 NTOSAPI
sca8er 2:5853bf44af9f 8890 NTSTATUS
sca8er 2:5853bf44af9f 8891 DDKAPI
sca8er 2:5853bf44af9f 8892 NtOpenKey(
sca8er 2:5853bf44af9f 8893 /*OUT*/ PHANDLE KeyHandle,
sca8er 2:5853bf44af9f 8894 /*IN*/ ACCESS_MASK DesiredAccess,
sca8er 2:5853bf44af9f 8895 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes);
sca8er 2:5853bf44af9f 8896
sca8er 2:5853bf44af9f 8897 NTOSAPI
sca8er 2:5853bf44af9f 8898 NTSTATUS
sca8er 2:5853bf44af9f 8899 DDKAPI
sca8er 2:5853bf44af9f 8900 ZwOpenKey(
sca8er 2:5853bf44af9f 8901 /*OUT*/ PHANDLE KeyHandle,
sca8er 2:5853bf44af9f 8902 /*IN*/ ACCESS_MASK DesiredAccess,
sca8er 2:5853bf44af9f 8903 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes);
sca8er 2:5853bf44af9f 8904
sca8er 2:5853bf44af9f 8905 NTOSAPI
sca8er 2:5853bf44af9f 8906 NTSTATUS
sca8er 2:5853bf44af9f 8907 DDKAPI
sca8er 2:5853bf44af9f 8908 NtOpenSection(
sca8er 2:5853bf44af9f 8909 /*OUT*/ PHANDLE SectionHandle,
sca8er 2:5853bf44af9f 8910 /*IN*/ ACCESS_MASK DesiredAccess,
sca8er 2:5853bf44af9f 8911 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes);
sca8er 2:5853bf44af9f 8912
sca8er 2:5853bf44af9f 8913 NTOSAPI
sca8er 2:5853bf44af9f 8914 NTSTATUS
sca8er 2:5853bf44af9f 8915 DDKAPI
sca8er 2:5853bf44af9f 8916 ZwOpenSection(
sca8er 2:5853bf44af9f 8917 /*OUT*/ PHANDLE SectionHandle,
sca8er 2:5853bf44af9f 8918 /*IN*/ ACCESS_MASK DesiredAccess,
sca8er 2:5853bf44af9f 8919 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes);
sca8er 2:5853bf44af9f 8920
sca8er 2:5853bf44af9f 8921 NTOSAPI
sca8er 2:5853bf44af9f 8922 NTSTATUS
sca8er 2:5853bf44af9f 8923 DDKAPI
sca8er 2:5853bf44af9f 8924 NtOpenSymbolicLinkObject(
sca8er 2:5853bf44af9f 8925 /*OUT*/ PHANDLE LinkHandle,
sca8er 2:5853bf44af9f 8926 /*IN*/ ACCESS_MASK DesiredAccess,
sca8er 2:5853bf44af9f 8927 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes);
sca8er 2:5853bf44af9f 8928
sca8er 2:5853bf44af9f 8929 NTOSAPI
sca8er 2:5853bf44af9f 8930 NTSTATUS
sca8er 2:5853bf44af9f 8931 DDKAPI
sca8er 2:5853bf44af9f 8932 ZwOpenSymbolicLinkObject(
sca8er 2:5853bf44af9f 8933 /*OUT*/ PHANDLE LinkHandle,
sca8er 2:5853bf44af9f 8934 /*IN*/ ACCESS_MASK DesiredAccess,
sca8er 2:5853bf44af9f 8935 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes);
sca8er 2:5853bf44af9f 8936
sca8er 2:5853bf44af9f 8937 NTOSAPI
sca8er 2:5853bf44af9f 8938 NTSTATUS
sca8er 2:5853bf44af9f 8939 DDKAPI
sca8er 2:5853bf44af9f 8940 NtOpenTimer(
sca8er 2:5853bf44af9f 8941 /*OUT*/ PHANDLE TimerHandle,
sca8er 2:5853bf44af9f 8942 /*IN*/ ACCESS_MASK DesiredAccess,
sca8er 2:5853bf44af9f 8943 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes);
sca8er 2:5853bf44af9f 8944
sca8er 2:5853bf44af9f 8945 NTOSAPI
sca8er 2:5853bf44af9f 8946 NTSTATUS
sca8er 2:5853bf44af9f 8947 DDKAPI
sca8er 2:5853bf44af9f 8948 ZwOpenTimer(
sca8er 2:5853bf44af9f 8949 /*OUT*/ PHANDLE TimerHandle,
sca8er 2:5853bf44af9f 8950 /*IN*/ ACCESS_MASK DesiredAccess,
sca8er 2:5853bf44af9f 8951 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes);
sca8er 2:5853bf44af9f 8952
sca8er 2:5853bf44af9f 8953 NTOSAPI
sca8er 2:5853bf44af9f 8954 NTSTATUS
sca8er 2:5853bf44af9f 8955 DDKAPI
sca8er 2:5853bf44af9f 8956 NtQueryInformationFile(
sca8er 2:5853bf44af9f 8957 /*IN*/ HANDLE FileHandle,
sca8er 2:5853bf44af9f 8958 /*OUT*/ PIO_STATUS_BLOCK IoStatusBlock,
sca8er 2:5853bf44af9f 8959 /*OUT*/ PVOID FileInformation,
sca8er 2:5853bf44af9f 8960 /*IN*/ ULONG Length,
sca8er 2:5853bf44af9f 8961 /*IN*/ FILE_INFORMATION_CLASS FileInformationClass);
sca8er 2:5853bf44af9f 8962
sca8er 2:5853bf44af9f 8963 NTOSAPI
sca8er 2:5853bf44af9f 8964 NTSTATUS
sca8er 2:5853bf44af9f 8965 DDKAPI
sca8er 2:5853bf44af9f 8966 ZwQueryInformationFile(
sca8er 2:5853bf44af9f 8967 /*IN*/ HANDLE FileHandle,
sca8er 2:5853bf44af9f 8968 /*OUT*/ PIO_STATUS_BLOCK IoStatusBlock,
sca8er 2:5853bf44af9f 8969 /*OUT*/ PVOID FileInformation,
sca8er 2:5853bf44af9f 8970 /*IN*/ ULONG Length,
sca8er 2:5853bf44af9f 8971 /*IN*/ FILE_INFORMATION_CLASS FileInformationClass);
sca8er 2:5853bf44af9f 8972
sca8er 2:5853bf44af9f 8973 NTOSAPI
sca8er 2:5853bf44af9f 8974 NTSTATUS
sca8er 2:5853bf44af9f 8975 DDKAPI
sca8er 2:5853bf44af9f 8976 NtQueryKey(
sca8er 2:5853bf44af9f 8977 /*IN*/ HANDLE KeyHandle,
sca8er 2:5853bf44af9f 8978 /*IN*/ KEY_INFORMATION_CLASS KeyInformationClass,
sca8er 2:5853bf44af9f 8979 /*OUT*/ PVOID KeyInformation,
sca8er 2:5853bf44af9f 8980 /*IN*/ ULONG Length,
sca8er 2:5853bf44af9f 8981 /*OUT*/ PULONG ResultLength);
sca8er 2:5853bf44af9f 8982
sca8er 2:5853bf44af9f 8983 NTOSAPI
sca8er 2:5853bf44af9f 8984 NTSTATUS
sca8er 2:5853bf44af9f 8985 DDKAPI
sca8er 2:5853bf44af9f 8986 ZwQueryKey(
sca8er 2:5853bf44af9f 8987 /*IN*/ HANDLE KeyHandle,
sca8er 2:5853bf44af9f 8988 /*IN*/ KEY_INFORMATION_CLASS KeyInformationClass,
sca8er 2:5853bf44af9f 8989 /*OUT*/ PVOID KeyInformation,
sca8er 2:5853bf44af9f 8990 /*IN*/ ULONG Length,
sca8er 2:5853bf44af9f 8991 /*OUT*/ PULONG ResultLength);
sca8er 2:5853bf44af9f 8992
sca8er 2:5853bf44af9f 8993 NTOSAPI
sca8er 2:5853bf44af9f 8994 NTSTATUS
sca8er 2:5853bf44af9f 8995 DDKAPI
sca8er 2:5853bf44af9f 8996 NtQuerySymbolicLinkObject(
sca8er 2:5853bf44af9f 8997 /*IN*/ HANDLE LinkHandle,
sca8er 2:5853bf44af9f 8998 /*IN OUT*/ PUNICODE_STRING LinkTarget,
sca8er 2:5853bf44af9f 8999 /*OUT*/ PULONG ReturnedLength /*OPTIONAL*/);
sca8er 2:5853bf44af9f 9000
sca8er 2:5853bf44af9f 9001 NTOSAPI
sca8er 2:5853bf44af9f 9002 NTSTATUS
sca8er 2:5853bf44af9f 9003 DDKAPI
sca8er 2:5853bf44af9f 9004 ZwQuerySymbolicLinkObject(
sca8er 2:5853bf44af9f 9005 /*IN*/ HANDLE LinkHandle,
sca8er 2:5853bf44af9f 9006 /*IN OUT*/ PUNICODE_STRING LinkTarget,
sca8er 2:5853bf44af9f 9007 /*OUT*/ PULONG ReturnedLength /*OPTIONAL*/);
sca8er 2:5853bf44af9f 9008
sca8er 2:5853bf44af9f 9009 NTOSAPI
sca8er 2:5853bf44af9f 9010 NTSTATUS
sca8er 2:5853bf44af9f 9011 DDKAPI
sca8er 2:5853bf44af9f 9012 NtQueryValueKey(
sca8er 2:5853bf44af9f 9013 /*IN*/ HANDLE KeyHandle,
sca8er 2:5853bf44af9f 9014 /*IN*/ PUNICODE_STRING ValueName,
sca8er 2:5853bf44af9f 9015 /*IN*/ KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass,
sca8er 2:5853bf44af9f 9016 /*OUT*/ PVOID KeyValueInformation,
sca8er 2:5853bf44af9f 9017 /*IN*/ ULONG Length,
sca8er 2:5853bf44af9f 9018 /*OUT*/ PULONG ResultLength);
sca8er 2:5853bf44af9f 9019
sca8er 2:5853bf44af9f 9020 NTOSAPI
sca8er 2:5853bf44af9f 9021 NTSTATUS
sca8er 2:5853bf44af9f 9022 DDKAPI
sca8er 2:5853bf44af9f 9023 ZwQueryValueKey(
sca8er 2:5853bf44af9f 9024 /*IN*/ HANDLE KeyHandle,
sca8er 2:5853bf44af9f 9025 /*IN*/ PUNICODE_STRING ValueName,
sca8er 2:5853bf44af9f 9026 /*IN*/ KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass,
sca8er 2:5853bf44af9f 9027 /*OUT*/ PVOID KeyValueInformation,
sca8er 2:5853bf44af9f 9028 /*IN*/ ULONG Length,
sca8er 2:5853bf44af9f 9029 /*OUT*/ PULONG ResultLength);
sca8er 2:5853bf44af9f 9030
sca8er 2:5853bf44af9f 9031 NTOSAPI
sca8er 2:5853bf44af9f 9032 NTSTATUS
sca8er 2:5853bf44af9f 9033 DDKAPI
sca8er 2:5853bf44af9f 9034 NtReadFile(
sca8er 2:5853bf44af9f 9035 /*IN*/ HANDLE FileHandle,
sca8er 2:5853bf44af9f 9036 /*IN*/ HANDLE Event /*OPTIONAL*/,
sca8er 2:5853bf44af9f 9037 /*IN*/ PIO_APC_ROUTINE ApcRoutine /*OPTIONAL*/,
sca8er 2:5853bf44af9f 9038 /*IN*/ PVOID ApcContext /*OPTIONAL*/,
sca8er 2:5853bf44af9f 9039 /*OUT*/ PIO_STATUS_BLOCK IoStatusBlock,
sca8er 2:5853bf44af9f 9040 /*OUT*/ PVOID Buffer,
sca8er 2:5853bf44af9f 9041 /*IN*/ ULONG Length,
sca8er 2:5853bf44af9f 9042 /*IN*/ PLARGE_INTEGER ByteOffset /*OPTIONAL*/,
sca8er 2:5853bf44af9f 9043 /*IN*/ PULONG Key /*OPTIONAL*/);
sca8er 2:5853bf44af9f 9044
sca8er 2:5853bf44af9f 9045 NTOSAPI
sca8er 2:5853bf44af9f 9046 NTSTATUS
sca8er 2:5853bf44af9f 9047 DDKAPI
sca8er 2:5853bf44af9f 9048 ZwReadFile(
sca8er 2:5853bf44af9f 9049 /*IN*/ HANDLE FileHandle,
sca8er 2:5853bf44af9f 9050 /*IN*/ HANDLE Event /*OPTIONAL*/,
sca8er 2:5853bf44af9f 9051 /*IN*/ PIO_APC_ROUTINE ApcRoutine /*OPTIONAL*/,
sca8er 2:5853bf44af9f 9052 /*IN*/ PVOID ApcContext /*OPTIONAL*/,
sca8er 2:5853bf44af9f 9053 /*OUT*/ PIO_STATUS_BLOCK IoStatusBlock,
sca8er 2:5853bf44af9f 9054 /*OUT*/ PVOID Buffer,
sca8er 2:5853bf44af9f 9055 /*IN*/ ULONG Length,
sca8er 2:5853bf44af9f 9056 /*IN*/ PLARGE_INTEGER ByteOffset /*OPTIONAL*/,
sca8er 2:5853bf44af9f 9057 /*IN*/ PULONG Key /*OPTIONAL*/);
sca8er 2:5853bf44af9f 9058
sca8er 2:5853bf44af9f 9059 NTOSAPI
sca8er 2:5853bf44af9f 9060 NTSTATUS
sca8er 2:5853bf44af9f 9061 DDKAPI
sca8er 2:5853bf44af9f 9062 NtSetEvent(
sca8er 2:5853bf44af9f 9063 /*IN*/ HANDLE EventHandle,
sca8er 2:5853bf44af9f 9064 /*IN*/ PULONG NumberOfThreadsReleased);
sca8er 2:5853bf44af9f 9065
sca8er 2:5853bf44af9f 9066 NTOSAPI
sca8er 2:5853bf44af9f 9067 NTSTATUS
sca8er 2:5853bf44af9f 9068 DDKAPI
sca8er 2:5853bf44af9f 9069 ZwSetEvent(
sca8er 2:5853bf44af9f 9070 /*IN*/ HANDLE EventHandle,
sca8er 2:5853bf44af9f 9071 /*IN*/ PULONG NumberOfThreadsReleased);
sca8er 2:5853bf44af9f 9072
sca8er 2:5853bf44af9f 9073 NTOSAPI
sca8er 2:5853bf44af9f 9074 NTSTATUS
sca8er 2:5853bf44af9f 9075 DDKAPI
sca8er 2:5853bf44af9f 9076 NtSetInformationFile(
sca8er 2:5853bf44af9f 9077 /*IN*/ HANDLE FileHandle,
sca8er 2:5853bf44af9f 9078 /*OUT*/ PIO_STATUS_BLOCK IoStatusBlock,
sca8er 2:5853bf44af9f 9079 /*IN*/ PVOID FileInformation,
sca8er 2:5853bf44af9f 9080 /*IN*/ ULONG Length,
sca8er 2:5853bf44af9f 9081 /*IN*/ FILE_INFORMATION_CLASS FileInformationClass);
sca8er 2:5853bf44af9f 9082
sca8er 2:5853bf44af9f 9083 NTOSAPI
sca8er 2:5853bf44af9f 9084 NTSTATUS
sca8er 2:5853bf44af9f 9085 DDKAPI
sca8er 2:5853bf44af9f 9086 ZwSetInformationFile(
sca8er 2:5853bf44af9f 9087 /*IN*/ HANDLE FileHandle,
sca8er 2:5853bf44af9f 9088 /*OUT*/ PIO_STATUS_BLOCK IoStatusBlock,
sca8er 2:5853bf44af9f 9089 /*IN*/ PVOID FileInformation,
sca8er 2:5853bf44af9f 9090 /*IN*/ ULONG Length,
sca8er 2:5853bf44af9f 9091 /*IN*/ FILE_INFORMATION_CLASS FileInformationClass);
sca8er 2:5853bf44af9f 9092
sca8er 2:5853bf44af9f 9093 NTOSAPI
sca8er 2:5853bf44af9f 9094 NTSTATUS
sca8er 2:5853bf44af9f 9095 DDKAPI
sca8er 2:5853bf44af9f 9096 NtSetInformationThread(
sca8er 2:5853bf44af9f 9097 /*IN*/ HANDLE ThreadHandle,
sca8er 2:5853bf44af9f 9098 /*IN*/ THREADINFOCLASS ThreadInformationClass,
sca8er 2:5853bf44af9f 9099 /*IN*/ PVOID ThreadInformation,
sca8er 2:5853bf44af9f 9100 /*IN*/ ULONG ThreadInformationLength);
sca8er 2:5853bf44af9f 9101
sca8er 2:5853bf44af9f 9102 NTOSAPI
sca8er 2:5853bf44af9f 9103 NTSTATUS
sca8er 2:5853bf44af9f 9104 DDKAPI
sca8er 2:5853bf44af9f 9105 ZwSetInformationThread(
sca8er 2:5853bf44af9f 9106 /*IN*/ HANDLE ThreadHandle,
sca8er 2:5853bf44af9f 9107 /*IN*/ THREADINFOCLASS ThreadInformationClass,
sca8er 2:5853bf44af9f 9108 /*IN*/ PVOID ThreadInformation,
sca8er 2:5853bf44af9f 9109 /*IN*/ ULONG ThreadInformationLength);
sca8er 2:5853bf44af9f 9110
sca8er 2:5853bf44af9f 9111 NTOSAPI
sca8er 2:5853bf44af9f 9112 NTSTATUS
sca8er 2:5853bf44af9f 9113 DDKAPI
sca8er 2:5853bf44af9f 9114 NtSetTimer(
sca8er 2:5853bf44af9f 9115 /*IN*/ HANDLE TimerHandle,
sca8er 2:5853bf44af9f 9116 /*IN*/ PLARGE_INTEGER DueTime,
sca8er 2:5853bf44af9f 9117 /*IN*/ PTIMER_APC_ROUTINE TimerApcRoutine /*OPTIONAL*/,
sca8er 2:5853bf44af9f 9118 /*IN*/ PVOID TimerContext /*OPTIONAL*/,
sca8er 2:5853bf44af9f 9119 /*IN*/ BOOLEAN WakeTimer,
sca8er 2:5853bf44af9f 9120 /*IN*/ LONG Period /*OPTIONAL*/,
sca8er 2:5853bf44af9f 9121 /*OUT*/ PBOOLEAN PreviousState /*OPTIONAL*/);
sca8er 2:5853bf44af9f 9122
sca8er 2:5853bf44af9f 9123 NTOSAPI
sca8er 2:5853bf44af9f 9124 NTSTATUS
sca8er 2:5853bf44af9f 9125 DDKAPI
sca8er 2:5853bf44af9f 9126 ZwSetTimer(
sca8er 2:5853bf44af9f 9127 /*IN*/ HANDLE TimerHandle,
sca8er 2:5853bf44af9f 9128 /*IN*/ PLARGE_INTEGER DueTime,
sca8er 2:5853bf44af9f 9129 /*IN*/ PTIMER_APC_ROUTINE TimerApcRoutine /*OPTIONAL*/,
sca8er 2:5853bf44af9f 9130 /*IN*/ PVOID TimerContext /*OPTIONAL*/,
sca8er 2:5853bf44af9f 9131 /*IN*/ BOOLEAN WakeTimer,
sca8er 2:5853bf44af9f 9132 /*IN*/ LONG Period /*OPTIONAL*/,
sca8er 2:5853bf44af9f 9133 /*OUT*/ PBOOLEAN PreviousState /*OPTIONAL*/);
sca8er 2:5853bf44af9f 9134
sca8er 2:5853bf44af9f 9135 NTOSAPI
sca8er 2:5853bf44af9f 9136 NTSTATUS
sca8er 2:5853bf44af9f 9137 DDKAPI
sca8er 2:5853bf44af9f 9138 NtSetValueKey(
sca8er 2:5853bf44af9f 9139 /*IN*/ HANDLE KeyHandle,
sca8er 2:5853bf44af9f 9140 /*IN*/ PUNICODE_STRING ValueName,
sca8er 2:5853bf44af9f 9141 /*IN*/ ULONG TitleIndex /*OPTIONAL*/,
sca8er 2:5853bf44af9f 9142 /*IN*/ ULONG Type,
sca8er 2:5853bf44af9f 9143 /*IN*/ PVOID Data,
sca8er 2:5853bf44af9f 9144 /*IN*/ ULONG DataSize);
sca8er 2:5853bf44af9f 9145
sca8er 2:5853bf44af9f 9146 NTOSAPI
sca8er 2:5853bf44af9f 9147 NTSTATUS
sca8er 2:5853bf44af9f 9148 DDKAPI
sca8er 2:5853bf44af9f 9149 ZwSetValueKey(
sca8er 2:5853bf44af9f 9150 /*IN*/ HANDLE KeyHandle,
sca8er 2:5853bf44af9f 9151 /*IN*/ PUNICODE_STRING ValueName,
sca8er 2:5853bf44af9f 9152 /*IN*/ ULONG TitleIndex /*OPTIONAL*/,
sca8er 2:5853bf44af9f 9153 /*IN*/ ULONG Type,
sca8er 2:5853bf44af9f 9154 /*IN*/ PVOID Data,
sca8er 2:5853bf44af9f 9155 /*IN*/ ULONG DataSize);
sca8er 2:5853bf44af9f 9156
sca8er 2:5853bf44af9f 9157 /* [Nt|Zw]MapViewOfSection.InheritDisposition constants */
sca8er 2:5853bf44af9f 9158 #define AT_EXTENDABLE_FILE 0x00002000
sca8er 2:5853bf44af9f 9159 #define SEC_NO_CHANGE 0x00400000
sca8er 2:5853bf44af9f 9160 #define AT_RESERVED 0x20000000
sca8er 2:5853bf44af9f 9161 #define AT_ROUND_TO_PAGE 0x40000000
sca8er 2:5853bf44af9f 9162
sca8er 2:5853bf44af9f 9163 NTOSAPI
sca8er 2:5853bf44af9f 9164 NTSTATUS
sca8er 2:5853bf44af9f 9165 DDKAPI
sca8er 2:5853bf44af9f 9166 NtUnmapViewOfSection(
sca8er 2:5853bf44af9f 9167 /*IN*/ HANDLE ProcessHandle,
sca8er 2:5853bf44af9f 9168 /*IN*/ PVOID BaseAddress);
sca8er 2:5853bf44af9f 9169
sca8er 2:5853bf44af9f 9170 NTOSAPI
sca8er 2:5853bf44af9f 9171 NTSTATUS
sca8er 2:5853bf44af9f 9172 DDKAPI
sca8er 2:5853bf44af9f 9173 ZwUnmapViewOfSection(
sca8er 2:5853bf44af9f 9174 /*IN*/ HANDLE ProcessHandle,
sca8er 2:5853bf44af9f 9175 /*IN*/ PVOID BaseAddress);
sca8er 2:5853bf44af9f 9176
sca8er 2:5853bf44af9f 9177 NTOSAPI
sca8er 2:5853bf44af9f 9178 NTSTATUS
sca8er 2:5853bf44af9f 9179 DDKAPI
sca8er 2:5853bf44af9f 9180 NtWaitForSingleObject(
sca8er 2:5853bf44af9f 9181 /*IN*/ HANDLE Object,
sca8er 2:5853bf44af9f 9182 /*IN*/ BOOLEAN Alertable,
sca8er 2:5853bf44af9f 9183 /*IN*/ PLARGE_INTEGER Time);
sca8er 2:5853bf44af9f 9184
sca8er 2:5853bf44af9f 9185 NTOSAPI
sca8er 2:5853bf44af9f 9186 NTSTATUS
sca8er 2:5853bf44af9f 9187 DDKAPI
sca8er 2:5853bf44af9f 9188 ZwWaitForSingleObject(
sca8er 2:5853bf44af9f 9189 /*IN*/ HANDLE Object,
sca8er 2:5853bf44af9f 9190 /*IN*/ BOOLEAN Alertable,
sca8er 2:5853bf44af9f 9191 /*IN*/ PLARGE_INTEGER Time);
sca8er 2:5853bf44af9f 9192
sca8er 2:5853bf44af9f 9193 NTOSAPI
sca8er 2:5853bf44af9f 9194 NTSTATUS
sca8er 2:5853bf44af9f 9195 DDKAPI
sca8er 2:5853bf44af9f 9196 NtWriteFile(
sca8er 2:5853bf44af9f 9197 /*IN*/ HANDLE FileHandle,
sca8er 2:5853bf44af9f 9198 /*IN*/ HANDLE Event /*OPTIONAL*/,
sca8er 2:5853bf44af9f 9199 /*IN*/ PIO_APC_ROUTINE ApcRoutine /*OPTIONAL*/,
sca8er 2:5853bf44af9f 9200 /*IN*/ PVOID ApcContext /*OPTIONAL*/,
sca8er 2:5853bf44af9f 9201 /*OUT*/ PIO_STATUS_BLOCK IoStatusBlock,
sca8er 2:5853bf44af9f 9202 /*IN*/ PVOID Buffer,
sca8er 2:5853bf44af9f 9203 /*IN*/ ULONG Length,
sca8er 2:5853bf44af9f 9204 /*IN*/ PLARGE_INTEGER ByteOffset /*OPTIONAL*/,
sca8er 2:5853bf44af9f 9205 /*IN*/ PULONG Key /*OPTIONAL*/);
sca8er 2:5853bf44af9f 9206
sca8er 2:5853bf44af9f 9207 NTOSAPI
sca8er 2:5853bf44af9f 9208 NTSTATUS
sca8er 2:5853bf44af9f 9209 DDKAPI
sca8er 2:5853bf44af9f 9210 ZwWriteFile(
sca8er 2:5853bf44af9f 9211 /*IN*/ HANDLE FileHandle,
sca8er 2:5853bf44af9f 9212 /*IN*/ HANDLE Event /*OPTIONAL*/,
sca8er 2:5853bf44af9f 9213 /*IN*/ PIO_APC_ROUTINE ApcRoutine /*OPTIONAL*/,
sca8er 2:5853bf44af9f 9214 /*IN*/ PVOID ApcContext /*OPTIONAL*/,
sca8er 2:5853bf44af9f 9215 /*OUT*/ PIO_STATUS_BLOCK IoStatusBlock,
sca8er 2:5853bf44af9f 9216 /*IN*/ PVOID Buffer,
sca8er 2:5853bf44af9f 9217 /*IN*/ ULONG Length,
sca8er 2:5853bf44af9f 9218 /*IN*/ PLARGE_INTEGER ByteOffset /*OPTIONAL*/,
sca8er 2:5853bf44af9f 9219 /*IN*/ PULONG Key /*OPTIONAL*/);
sca8er 2:5853bf44af9f 9220
sca8er 2:5853bf44af9f 9221
sca8er 2:5853bf44af9f 9222
sca8er 2:5853bf44af9f 9223 /** Power management support routines **/
sca8er 2:5853bf44af9f 9224
sca8er 2:5853bf44af9f 9225 NTOSAPI
sca8er 2:5853bf44af9f 9226 NTSTATUS
sca8er 2:5853bf44af9f 9227 DDKAPI
sca8er 2:5853bf44af9f 9228 PoCallDriver(
sca8er 2:5853bf44af9f 9229 /*IN*/ PDEVICE_OBJECT DeviceObject,
sca8er 2:5853bf44af9f 9230 /*IN OUT*/ PIRP Irp);
sca8er 2:5853bf44af9f 9231
sca8er 2:5853bf44af9f 9232 NTOSAPI
sca8er 2:5853bf44af9f 9233 PULONG
sca8er 2:5853bf44af9f 9234 DDKAPI
sca8er 2:5853bf44af9f 9235 PoRegisterDeviceForIdleDetection(
sca8er 2:5853bf44af9f 9236 /*IN*/ PDEVICE_OBJECT DeviceObject,
sca8er 2:5853bf44af9f 9237 /*IN*/ ULONG ConservationIdleTime,
sca8er 2:5853bf44af9f 9238 /*IN*/ ULONG PerformanceIdleTime,
sca8er 2:5853bf44af9f 9239 /*IN*/ DEVICE_POWER_STATE State);
sca8er 2:5853bf44af9f 9240
sca8er 2:5853bf44af9f 9241 NTOSAPI
sca8er 2:5853bf44af9f 9242 PVOID
sca8er 2:5853bf44af9f 9243 DDKAPI
sca8er 2:5853bf44af9f 9244 PoRegisterSystemState(
sca8er 2:5853bf44af9f 9245 /*IN*/ PVOID StateHandle,
sca8er 2:5853bf44af9f 9246 /*IN*/ EXECUTION_STATE Flags);
sca8er 2:5853bf44af9f 9247
sca8er 2:5853bf44af9f 9248 NTOSAPI
sca8er 2:5853bf44af9f 9249 NTSTATUS
sca8er 2:5853bf44af9f 9250 DDKAPI
sca8er 2:5853bf44af9f 9251 PoRequestPowerIrp(
sca8er 2:5853bf44af9f 9252 /*IN*/ PDEVICE_OBJECT DeviceObject,
sca8er 2:5853bf44af9f 9253 /*IN*/ UCHAR MinorFunction,
sca8er 2:5853bf44af9f 9254 /*IN*/ POWER_STATE PowerState,
sca8er 2:5853bf44af9f 9255 /*IN*/ PREQUEST_POWER_COMPLETE CompletionFunction,
sca8er 2:5853bf44af9f 9256 /*IN*/ PVOID Context,
sca8er 2:5853bf44af9f 9257 /*OUT*/ PIRP *Irp /*OPTIONAL*/);
sca8er 2:5853bf44af9f 9258
sca8er 2:5853bf44af9f 9259 NTOSAPI
sca8er 2:5853bf44af9f 9260 NTSTATUS
sca8er 2:5853bf44af9f 9261 DDKAPI
sca8er 2:5853bf44af9f 9262 PoRequestShutdownEvent(
sca8er 2:5853bf44af9f 9263 /*OUT*/ PVOID *Event);
sca8er 2:5853bf44af9f 9264
sca8er 2:5853bf44af9f 9265 NTOSAPI
sca8er 2:5853bf44af9f 9266 VOID
sca8er 2:5853bf44af9f 9267 DDKAPI
sca8er 2:5853bf44af9f 9268 PoSetDeviceBusy(
sca8er 2:5853bf44af9f 9269 PULONG IdlePointer);
sca8er 2:5853bf44af9f 9270
sca8er 2:5853bf44af9f 9271 NTOSAPI
sca8er 2:5853bf44af9f 9272 POWER_STATE
sca8er 2:5853bf44af9f 9273 DDKAPI
sca8er 2:5853bf44af9f 9274 PoSetPowerState(
sca8er 2:5853bf44af9f 9275 /*IN*/ PDEVICE_OBJECT DeviceObject,
sca8er 2:5853bf44af9f 9276 /*IN*/ POWER_STATE_TYPE Type,
sca8er 2:5853bf44af9f 9277 /*IN*/ POWER_STATE State);
sca8er 2:5853bf44af9f 9278
sca8er 2:5853bf44af9f 9279 NTOSAPI
sca8er 2:5853bf44af9f 9280 VOID
sca8er 2:5853bf44af9f 9281 DDKAPI
sca8er 2:5853bf44af9f 9282 PoSetSystemState(
sca8er 2:5853bf44af9f 9283 /*IN*/ EXECUTION_STATE Flags);
sca8er 2:5853bf44af9f 9284
sca8er 2:5853bf44af9f 9285 NTOSAPI
sca8er 2:5853bf44af9f 9286 VOID
sca8er 2:5853bf44af9f 9287 DDKAPI
sca8er 2:5853bf44af9f 9288 PoStartNextPowerIrp(
sca8er 2:5853bf44af9f 9289 /*IN*/ PIRP Irp);
sca8er 2:5853bf44af9f 9290
sca8er 2:5853bf44af9f 9291 NTOSAPI
sca8er 2:5853bf44af9f 9292 VOID
sca8er 2:5853bf44af9f 9293 DDKAPI
sca8er 2:5853bf44af9f 9294 PoUnregisterSystemState(
sca8er 2:5853bf44af9f 9295 /*IN*/ PVOID StateHandle);
sca8er 2:5853bf44af9f 9296
sca8er 2:5853bf44af9f 9297
sca8er 2:5853bf44af9f 9298
sca8er 2:5853bf44af9f 9299 /** WMI library support routines **/
sca8er 2:5853bf44af9f 9300
sca8er 2:5853bf44af9f 9301 NTOSAPI
sca8er 2:5853bf44af9f 9302 NTSTATUS
sca8er 2:5853bf44af9f 9303 DDKAPI
sca8er 2:5853bf44af9f 9304 WmiCompleteRequest(
sca8er 2:5853bf44af9f 9305 /*IN*/ PDEVICE_OBJECT DeviceObject,
sca8er 2:5853bf44af9f 9306 /*IN*/ PIRP Irp,
sca8er 2:5853bf44af9f 9307 /*IN*/ NTSTATUS Status,
sca8er 2:5853bf44af9f 9308 /*IN*/ ULONG BufferUsed,
sca8er 2:5853bf44af9f 9309 /*IN*/ CCHAR PriorityBoost);
sca8er 2:5853bf44af9f 9310
sca8er 2:5853bf44af9f 9311 NTOSAPI
sca8er 2:5853bf44af9f 9312 NTSTATUS
sca8er 2:5853bf44af9f 9313 DDKAPI
sca8er 2:5853bf44af9f 9314 WmiFireEvent(
sca8er 2:5853bf44af9f 9315 /*IN*/ PDEVICE_OBJECT DeviceObject,
sca8er 2:5853bf44af9f 9316 /*IN*/ LPGUID Guid,
sca8er 2:5853bf44af9f 9317 /*IN*/ ULONG InstanceIndex,
sca8er 2:5853bf44af9f 9318 /*IN*/ ULONG EventDataSize,
sca8er 2:5853bf44af9f 9319 /*IN*/ PVOID EventData);
sca8er 2:5853bf44af9f 9320
sca8er 2:5853bf44af9f 9321 NTOSAPI
sca8er 2:5853bf44af9f 9322 NTSTATUS
sca8er 2:5853bf44af9f 9323 DDKAPI
sca8er 2:5853bf44af9f 9324 WmiQueryTraceInformation(
sca8er 2:5853bf44af9f 9325 /*IN*/ TRACE_INFORMATION_CLASS TraceInformationClass,
sca8er 2:5853bf44af9f 9326 /*OUT*/ PVOID TraceInformation,
sca8er 2:5853bf44af9f 9327 /*IN*/ ULONG TraceInformationLength,
sca8er 2:5853bf44af9f 9328 /*OUT*/ PULONG RequiredLength /*OPTIONAL*/,
sca8er 2:5853bf44af9f 9329 /*IN*/ PVOID Buffer /*OPTIONAL*/);
sca8er 2:5853bf44af9f 9330
sca8er 2:5853bf44af9f 9331 NTOSAPI
sca8er 2:5853bf44af9f 9332 NTSTATUS
sca8er 2:5853bf44af9f 9333 DDKAPI
sca8er 2:5853bf44af9f 9334 WmiSystemControl(
sca8er 2:5853bf44af9f 9335 /*IN*/ PWMILIB_CONTEXT WmiLibInfo,
sca8er 2:5853bf44af9f 9336 /*IN*/ PDEVICE_OBJECT DeviceObject,
sca8er 2:5853bf44af9f 9337 /*IN*/ PIRP Irp,
sca8er 2:5853bf44af9f 9338 /*OUT*/ PSYSCTL_IRP_DISPOSITION IrpDisposition);
sca8er 2:5853bf44af9f 9339
sca8er 2:5853bf44af9f 9340 NTOSAPI
sca8er 2:5853bf44af9f 9341 NTSTATUS
sca8er 2:5853bf44af9f 9342 DDKCDECLAPI
sca8er 2:5853bf44af9f 9343 WmiTraceMessage(
sca8er 2:5853bf44af9f 9344 /*IN*/ TRACEHANDLE LoggerHandle,
sca8er 2:5853bf44af9f 9345 /*IN*/ ULONG MessageFlags,
sca8er 2:5853bf44af9f 9346 /*IN*/ LPGUID MessageGuid,
sca8er 2:5853bf44af9f 9347 /*IN*/ USHORT MessageNumber,
sca8er 2:5853bf44af9f 9348 /*IN*/ ...);
sca8er 2:5853bf44af9f 9349
sca8er 2:5853bf44af9f 9350 #if 0
sca8er 2:5853bf44af9f 9351 /* FIXME: Get va_list from where? */
sca8er 2:5853bf44af9f 9352 NTOSAPI
sca8er 2:5853bf44af9f 9353 NTSTATUS
sca8er 2:5853bf44af9f 9354 DDKCDECLAPI
sca8er 2:5853bf44af9f 9355 WmiTraceMessageVa(
sca8er 2:5853bf44af9f 9356 /*IN*/ TRACEHANDLE LoggerHandle,
sca8er 2:5853bf44af9f 9357 /*IN*/ ULONG MessageFlags,
sca8er 2:5853bf44af9f 9358 /*IN*/ LPGUID MessageGuid,
sca8er 2:5853bf44af9f 9359 /*IN*/ USHORT MessageNumber,
sca8er 2:5853bf44af9f 9360 /*IN*/ va_list MessageArgList);
sca8er 2:5853bf44af9f 9361 #endif
sca8er 2:5853bf44af9f 9362
sca8er 2:5853bf44af9f 9363
sca8er 2:5853bf44af9f 9364 /** Kernel debugger routines **/
sca8er 2:5853bf44af9f 9365
sca8er 2:5853bf44af9f 9366 NTOSAPI
sca8er 2:5853bf44af9f 9367 VOID
sca8er 2:5853bf44af9f 9368 DDKAPI
sca8er 2:5853bf44af9f 9369 KdDisableDebugger(
sca8er 2:5853bf44af9f 9370 VOID);
sca8er 2:5853bf44af9f 9371
sca8er 2:5853bf44af9f 9372 NTOSAPI
sca8er 2:5853bf44af9f 9373 VOID
sca8er 2:5853bf44af9f 9374 DDKAPI
sca8er 2:5853bf44af9f 9375 KdEnableDebugger(
sca8er 2:5853bf44af9f 9376 VOID);
sca8er 2:5853bf44af9f 9377
sca8er 2:5853bf44af9f 9378 NTOSAPI
sca8er 2:5853bf44af9f 9379 VOID
sca8er 2:5853bf44af9f 9380 DDKAPI
sca8er 2:5853bf44af9f 9381 DbgBreakPoint(
sca8er 2:5853bf44af9f 9382 VOID);
sca8er 2:5853bf44af9f 9383
sca8er 2:5853bf44af9f 9384 NTOSAPI
sca8er 2:5853bf44af9f 9385 VOID
sca8er 2:5853bf44af9f 9386 DDKAPI
sca8er 2:5853bf44af9f 9387 DbgBreakPointWithStatus(
sca8er 2:5853bf44af9f 9388 /*IN*/ ULONG Status);
sca8er 2:5853bf44af9f 9389
sca8er 2:5853bf44af9f 9390 NTOSAPI
sca8er 2:5853bf44af9f 9391 ULONG
sca8er 2:5853bf44af9f 9392 DDKCDECLAPI
sca8er 2:5853bf44af9f 9393 DbgPrint(
sca8er 2:5853bf44af9f 9394 /*IN*/ PCH Format,
sca8er 2:5853bf44af9f 9395 /*IN*/ ...);
sca8er 2:5853bf44af9f 9396
sca8er 2:5853bf44af9f 9397 NTOSAPI
sca8er 2:5853bf44af9f 9398 ULONG
sca8er 2:5853bf44af9f 9399 DDKCDECLAPI
sca8er 2:5853bf44af9f 9400 DbgPrintEx(
sca8er 2:5853bf44af9f 9401 /*IN*/ ULONG ComponentId,
sca8er 2:5853bf44af9f 9402 /*IN*/ ULONG Level,
sca8er 2:5853bf44af9f 9403 /*IN*/ PCH Format,
sca8er 2:5853bf44af9f 9404 /*IN*/ ...);
sca8er 2:5853bf44af9f 9405
sca8er 2:5853bf44af9f 9406 NTOSAPI
sca8er 2:5853bf44af9f 9407 ULONG
sca8er 2:5853bf44af9f 9408 DDKCDECLAPI
sca8er 2:5853bf44af9f 9409 DbgPrintReturnControlC(
sca8er 2:5853bf44af9f 9410 /*IN*/ PCH Format,
sca8er 2:5853bf44af9f 9411 /*IN*/ ...);
sca8er 2:5853bf44af9f 9412
sca8er 2:5853bf44af9f 9413 NTOSAPI
sca8er 2:5853bf44af9f 9414 NTSTATUS
sca8er 2:5853bf44af9f 9415 DDKAPI
sca8er 2:5853bf44af9f 9416 DbgQueryDebugFilterState(
sca8er 2:5853bf44af9f 9417 /*IN*/ ULONG ComponentId,
sca8er 2:5853bf44af9f 9418 /*IN*/ ULONG Level);
sca8er 2:5853bf44af9f 9419
sca8er 2:5853bf44af9f 9420 NTOSAPI
sca8er 2:5853bf44af9f 9421 NTSTATUS
sca8er 2:5853bf44af9f 9422 DDKAPI
sca8er 2:5853bf44af9f 9423 DbgSetDebugFilterState(
sca8er 2:5853bf44af9f 9424 /*IN*/ ULONG ComponentId,
sca8er 2:5853bf44af9f 9425 /*IN*/ ULONG Level,
sca8er 2:5853bf44af9f 9426 /*IN*/ BOOLEAN State);
sca8er 2:5853bf44af9f 9427
sca8er 2:5853bf44af9f 9428 #ifdef DBG
sca8er 2:5853bf44af9f 9429
sca8er 2:5853bf44af9f 9430 #define KdPrint(_x_) DbgPrint _x_
sca8er 2:5853bf44af9f 9431 #define KdPrintEx(_x_) DbgPrintEx _x_
sca8er 2:5853bf44af9f 9432 #define KdBreakPoint() DbgBreakPoint()
sca8er 2:5853bf44af9f 9433 #define KdBreakPointWithStatus(s) DbgBreakPointWithStatus(s)
sca8er 2:5853bf44af9f 9434
sca8er 2:5853bf44af9f 9435 #else /* !DBG */
sca8er 2:5853bf44af9f 9436
sca8er 2:5853bf44af9f 9437 #define KdPrint(_x_)
sca8er 2:5853bf44af9f 9438 #define KdPrintEx(_x_)
sca8er 2:5853bf44af9f 9439 #define KdBreakPoint()
sca8er 2:5853bf44af9f 9440 #define KdBreakPointWithStatus(s)
sca8er 2:5853bf44af9f 9441
sca8er 2:5853bf44af9f 9442 #endif /* !DBG */
sca8er 2:5853bf44af9f 9443
sca8er 2:5853bf44af9f 9444 extern NTOSAPI PBOOLEAN KdDebuggerNotPresent;
sca8er 2:5853bf44af9f 9445 extern NTOSAPI PBOOLEAN KdDebuggerEnabled;
sca8er 2:5853bf44af9f 9446 #define KD_DEBUGGER_ENABLED *KdDebuggerEnabled
sca8er 2:5853bf44af9f 9447 #define KD_DEBUGGER_NOT_PRESENT *KdDebuggerNotPresent
sca8er 2:5853bf44af9f 9448
sca8er 2:5853bf44af9f 9449 #ifdef __cplusplus
sca8er 2:5853bf44af9f 9450 }
sca8er 2:5853bf44af9f 9451 #endif
sca8er 2:5853bf44af9f 9452
sca8er 2:5853bf44af9f 9453 #endif /* __WINDDK_H */