| 1 | /*
 | 
|---|
| 2 |  * winddk.h
 | 
|---|
| 3 |  *
 | 
|---|
| 4 |  * Windows Device Driver Kit
 | 
|---|
| 5 |  *
 | 
|---|
| 6 |  * This file is part of the w32api package.
 | 
|---|
| 7 |  *
 | 
|---|
| 8 |  * Contributors:
 | 
|---|
| 9 |  *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
 | 
|---|
| 10 |  *
 | 
|---|
| 11 |  * THIS SOFTWARE IS NOT COPYRIGHTED
 | 
|---|
| 12 |  *
 | 
|---|
| 13 |  * This source code is offered for use in the public domain. You may
 | 
|---|
| 14 |  * use, modify or distribute it freely.
 | 
|---|
| 15 |  *
 | 
|---|
| 16 |  * This code is distributed in the hope that it will be useful but
 | 
|---|
| 17 |  * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
 | 
|---|
| 18 |  * DISCLAIMED. This includes but is not limited to warranties of
 | 
|---|
| 19 |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 | 
|---|
| 20 |  *
 | 
|---|
| 21 |  */
 | 
|---|
| 22 | 
 | 
|---|
| 23 | #ifndef __WINDDK_H
 | 
|---|
| 24 | #define __WINDDK_H
 | 
|---|
| 25 | 
 | 
|---|
| 26 | #if __GNUC__ >= 3
 | 
|---|
| 27 | #pragma GCC system_header
 | 
|---|
| 28 | #endif
 | 
|---|
| 29 | 
 | 
|---|
| 30 | #ifdef __cplusplus
 | 
|---|
| 31 | extern "C" {
 | 
|---|
| 32 | #endif
 | 
|---|
| 33 | 
 | 
|---|
| 34 | /*
 | 
|---|
| 35 | ** Definitions specific to this Device Driver Kit
 | 
|---|
| 36 | */
 | 
|---|
| 37 | #define DDKAPI __attribute__((stdcall))
 | 
|---|
| 38 | #define DDKFASTAPI __attribute__((fastcall))
 | 
|---|
| 39 | #define DDKCDECLAPI __attribute__((cdecl))
 | 
|---|
| 40 | 
 | 
|---|
| 41 | #if defined(_NTOSKRNL_)
 | 
|---|
| 42 | #ifndef NTOSAPI
 | 
|---|
| 43 | #define NTOSAPI DECL_EXPORT
 | 
|---|
| 44 | #endif
 | 
|---|
| 45 | #define DECLARE_INTERNAL_OBJECT(x) typedef struct _##x; typedef struct _##x *P##x;
 | 
|---|
| 46 | #define DECLARE_INTERNAL_OBJECT2(x,y) typedef struct _##x; typedef struct _##x *P##y;
 | 
|---|
| 47 | #else
 | 
|---|
| 48 | #ifndef NTOSAPI
 | 
|---|
| 49 | #define NTOSAPI DECL_IMPORT
 | 
|---|
| 50 | #endif
 | 
|---|
| 51 | #define DECLARE_INTERNAL_OBJECT(x) struct _##x; typedef struct _##x *P##x;
 | 
|---|
| 52 | #define DECLARE_INTERNAL_OBJECT2(x,y) struct _##x; typedef struct _##x *P##y;
 | 
|---|
| 53 | #endif
 | 
|---|
| 54 | 
 | 
|---|
| 55 | /* Pseudo modifiers for parameters */
 | 
|---|
| 56 | #define IN
 | 
|---|
| 57 | #define OUT
 | 
|---|
| 58 | #define OPTIONAL
 | 
|---|
| 59 | #define UNALLIGNED
 | 
|---|
| 60 | 
 | 
|---|
| 61 | #define CONST const
 | 
|---|
| 62 | #define VOLATILE volatile
 | 
|---|
| 63 | 
 | 
|---|
| 64 | #define RESTRICTED_POINTER
 | 
|---|
| 65 | #define POINTER_ALIGNMENT
 | 
|---|
| 66 | 
 | 
|---|
| 67 | #ifdef NONAMELESSUNION
 | 
|---|
| 68 | # define _DDK_DUMMYUNION_MEMBER(name) DUMMYUNIONNAME.name
 | 
|---|
| 69 | # define _DDK_DUMMYUNION_N_MEMBER(n, name) DUMMYUNIONNAME##n.name
 | 
|---|
| 70 | #else
 | 
|---|
| 71 | # define _DDK_DUMMYUNION_MEMBER(name) name
 | 
|---|
| 72 | # define _DDK_DUMMYUNION_N_MEMBER(n, name) name
 | 
|---|
| 73 | #endif
 | 
|---|
| 74 | 
 | 
|---|
| 75 | /*
 | 
|---|
| 76 | ** Forward declarations
 | 
|---|
| 77 | */
 | 
|---|
| 78 | 
 | 
|---|
| 79 | struct _IRP;
 | 
|---|
| 80 | struct _MDL;
 | 
|---|
| 81 | struct _KAPC;
 | 
|---|
| 82 | struct _KDPC;
 | 
|---|
| 83 | struct _KPCR;
 | 
|---|
| 84 | struct _KPRCB;
 | 
|---|
| 85 | struct _KTSS;
 | 
|---|
| 86 | struct _FILE_OBJECT;
 | 
|---|
| 87 | struct _DMA_ADAPTER;
 | 
|---|
| 88 | struct _DEVICE_OBJECT;
 | 
|---|
| 89 | struct _DRIVER_OBJECT;
 | 
|---|
| 90 | struct _SECTION_OBJECT;
 | 
|---|
| 91 | struct _IO_STATUS_BLOCK;
 | 
|---|
| 92 | struct _DEVICE_DESCRIPTION;
 | 
|---|
| 93 | struct _SCATTER_GATHER_LIST;
 | 
|---|
| 94 | 
 | 
|---|
| 95 | DECLARE_INTERNAL_OBJECT(ADAPTER_OBJECT)
 | 
|---|
| 96 | DECLARE_INTERNAL_OBJECT(DMA_ADAPTER)
 | 
|---|
| 97 | DECLARE_INTERNAL_OBJECT(IO_STATUS_BLOCK)
 | 
|---|
| 98 | DECLARE_INTERNAL_OBJECT(SECTION_OBJECT)
 | 
|---|
| 99 | 
 | 
|---|
| 100 | #if 1
 | 
|---|
| 101 | /* FIXME: Unknown definitions */
 | 
|---|
| 102 | struct _SET_PARTITION_INFORMATION_EX;
 | 
|---|
| 103 | typedef ULONG WAIT_TYPE;
 | 
|---|
| 104 | typedef HANDLE TRACEHANDLE;
 | 
|---|
| 105 | typedef PVOID PWMILIB_CONTEXT;
 | 
|---|
| 106 | typedef PVOID PSYSCTL_IRP_DISPOSITION;
 | 
|---|
| 107 | typedef ULONG LOGICAL;
 | 
|---|
| 108 | #endif
 | 
|---|
| 109 | 
 | 
|---|
| 110 | /*
 | 
|---|
| 111 | ** Routines specific to this DDK
 | 
|---|
| 112 | */
 | 
|---|
| 113 | 
 | 
|---|
| 114 | #define TAG(_a, _b, _c, _d) (ULONG) \
 | 
|---|
| 115 |         (((_a) << 0) + ((_b) << 8) + ((_c) << 16) + ((_d) << 24))
 | 
|---|
| 116 | 
 | 
|---|
| 117 | static __inline struct _KPCR * KeGetCurrentKPCR(
 | 
|---|
| 118 |   VOID)
 | 
|---|
| 119 | {
 | 
|---|
| 120 |   ULONG Value;
 | 
|---|
| 121 | 
 | 
|---|
| 122 |   __asm__ __volatile__ ("movl %%fs:0x18, %0\n\t"
 | 
|---|
| 123 |           : "=r" (Value)
 | 
|---|
| 124 |     : /* no inputs */
 | 
|---|
| 125 |   );
 | 
|---|
| 126 |   return (struct _KPCR *) Value;
 | 
|---|
| 127 | }
 | 
|---|
| 128 | 
 | 
|---|
| 129 | /*
 | 
|---|
| 130 | ** Simple structures
 | 
|---|
| 131 | */
 | 
|---|
| 132 | 
 | 
|---|
| 133 | typedef LONG KPRIORITY;
 | 
|---|
| 134 | typedef UCHAR KIRQL, *PKIRQL;
 | 
|---|
| 135 | typedef ULONG_PTR KSPIN_LOCK, *PKSPIN_LOCK;
 | 
|---|
| 136 | typedef ULONG KAFFINITY, *PKAFFINITY;
 | 
|---|
| 137 | typedef CCHAR KPROCESSOR_MODE;
 | 
|---|
| 138 | 
 | 
|---|
| 139 | typedef enum _MODE {
 | 
|---|
| 140 |   KernelMode,
 | 
|---|
| 141 |   UserMode,
 | 
|---|
| 142 |   MaximumMode
 | 
|---|
| 143 | } MODE;
 | 
|---|
| 144 | 
 | 
|---|
| 145 | 
 | 
|---|
| 146 | /* Structures not exposed to drivers */
 | 
|---|
| 147 | typedef struct _IO_TIMER *PIO_TIMER;
 | 
|---|
| 148 | typedef struct _EPROCESS *PEPROCESS;
 | 
|---|
| 149 | typedef struct _ETHREAD *PETHREAD;
 | 
|---|
| 150 | typedef struct _KINTERRUPT *PKINTERRUPT;
 | 
|---|
| 151 | typedef struct _OBJECT_TYPE *POBJECT_TYPE;
 | 
|---|
| 152 | typedef struct _KTHREAD *PKTHREAD, *PRKTHREAD;
 | 
|---|
| 153 | typedef struct _COMPRESSED_DATA_INFO *PCOMPRESSED_DATA_INFO;
 | 
|---|
| 154 | typedef struct _HAL_DISPATCH_TABLE *PHAL_DISPATCH_TABLE;
 | 
|---|
| 155 | typedef struct _HAL_PRIVATE_DISPATCH_TABLE *PHAL_PRIVATE_DISPATCH_TABLE;
 | 
|---|
| 156 | typedef struct _DRIVE_LAYOUT_INFORMATION *PDRIVE_LAYOUT_INFORMATION;
 | 
|---|
| 157 | typedef struct _DRIVE_LAYOUT_INFORMATION_EX *PDRIVE_LAYOUT_INFORMATION_EX;
 | 
|---|
| 158 | 
 | 
|---|
| 159 | /* Constants */
 | 
|---|
| 160 | #define MAXIMUM_PROCESSORS                32
 | 
|---|
| 161 | 
 | 
|---|
| 162 | #define MAXIMUM_WAIT_OBJECTS              64
 | 
|---|
| 163 | 
 | 
|---|
| 164 | #define METHOD_BUFFERED                   0
 | 
|---|
| 165 | #define METHOD_IN_DIRECT                  1
 | 
|---|
| 166 | #define METHOD_OUT_DIRECT                 2
 | 
|---|
| 167 | #define METHOD_NEITHER                    3
 | 
|---|
| 168 | 
 | 
|---|
| 169 | #define LOW_PRIORITY                      0
 | 
|---|
| 170 | #define LOW_REALTIME_PRIORITY             16
 | 
|---|
| 171 | #define HIGH_PRIORITY                     31
 | 
|---|
| 172 | #define MAXIMUM_PRIORITY                  32
 | 
|---|
| 173 | 
 | 
|---|
| 174 | #define FILE_SUPERSEDED                   0x00000000
 | 
|---|
| 175 | #define FILE_OPENED                       0x00000001
 | 
|---|
| 176 | #define FILE_CREATED                      0x00000002
 | 
|---|
| 177 | #define FILE_OVERWRITTEN                  0x00000003
 | 
|---|
| 178 | #define FILE_EXISTS                       0x00000004
 | 
|---|
| 179 | #define FILE_DOES_NOT_EXIST               0x00000005
 | 
|---|
| 180 | 
 | 
|---|
| 181 | /* also in winnt.h */
 | 
|---|
| 182 | #define FILE_LIST_DIRECTORY               0x00000001
 | 
|---|
| 183 | #define FILE_READ_DATA                    0x00000001
 | 
|---|
| 184 | #define FILE_ADD_FILE                     0x00000002
 | 
|---|
| 185 | #define FILE_WRITE_DATA                   0x00000002
 | 
|---|
| 186 | #define FILE_ADD_SUBDIRECTORY             0x00000004
 | 
|---|
| 187 | #define FILE_APPEND_DATA                  0x00000004
 | 
|---|
| 188 | #define FILE_CREATE_PIPE_INSTANCE         0x00000004
 | 
|---|
| 189 | #define FILE_READ_EA                      0x00000008
 | 
|---|
| 190 | #define FILE_WRITE_EA                     0x00000010
 | 
|---|
| 191 | #define FILE_EXECUTE                      0x00000020
 | 
|---|
| 192 | #define FILE_TRAVERSE                     0x00000020
 | 
|---|
| 193 | #define FILE_DELETE_CHILD                 0x00000040
 | 
|---|
| 194 | #define FILE_READ_ATTRIBUTES              0x00000080
 | 
|---|
| 195 | #define FILE_WRITE_ATTRIBUTES             0x00000100
 | 
|---|
| 196 | 
 | 
|---|
| 197 | #define FILE_SHARE_READ                   0x00000001
 | 
|---|
| 198 | #define FILE_SHARE_WRITE                  0x00000002
 | 
|---|
| 199 | #define FILE_SHARE_DELETE                 0x00000004
 | 
|---|
| 200 | #define FILE_SHARE_VALID_FLAGS            0x00000007
 | 
|---|
| 201 | 
 | 
|---|
| 202 | #define FILE_ATTRIBUTE_READONLY           0x00000001
 | 
|---|
| 203 | #define FILE_ATTRIBUTE_HIDDEN             0x00000002
 | 
|---|
| 204 | #define FILE_ATTRIBUTE_SYSTEM             0x00000004
 | 
|---|
| 205 | #define FILE_ATTRIBUTE_DIRECTORY          0x00000010
 | 
|---|
| 206 | #define FILE_ATTRIBUTE_ARCHIVE            0x00000020
 | 
|---|
| 207 | #define FILE_ATTRIBUTE_DEVICE             0x00000040
 | 
|---|
| 208 | #define FILE_ATTRIBUTE_NORMAL             0x00000080
 | 
|---|
| 209 | #define FILE_ATTRIBUTE_TEMPORARY          0x00000100
 | 
|---|
| 210 | #define FILE_ATTRIBUTE_SPARSE_FILE        0x00000200
 | 
|---|
| 211 | #define FILE_ATTRIBUTE_REPARSE_POINT      0x00000400
 | 
|---|
| 212 | #define FILE_ATTRIBUTE_COMPRESSED         0x00000800
 | 
|---|
| 213 | #define FILE_ATTRIBUTE_OFFLINE            0x00001000
 | 
|---|
| 214 | #define FILE_ATTRIBUTE_NOT_CONTENT_INDEXED 0x00002000
 | 
|---|
| 215 | #define FILE_ATTRIBUTE_ENCRYPTED          0x00004000
 | 
|---|
| 216 | 
 | 
|---|
| 217 | #define FILE_ATTRIBUTE_VALID_FLAGS        0x00007fb7
 | 
|---|
| 218 | #define FILE_ATTRIBUTE_VALID_SET_FLAGS    0x000031a7
 | 
|---|
| 219 | 
 | 
|---|
| 220 | #define FILE_COPY_STRUCTURED_STORAGE      0x00000041
 | 
|---|
| 221 | #define FILE_STRUCTURED_STORAGE           0x00000441
 | 
|---|
| 222 | 
 | 
|---|
| 223 | #define FILE_VALID_OPTION_FLAGS           0x00ffffff
 | 
|---|
| 224 | #define FILE_VALID_PIPE_OPTION_FLAGS      0x00000032
 | 
|---|
| 225 | #define FILE_VALID_MAILSLOT_OPTION_FLAGS  0x00000032
 | 
|---|
| 226 | #define FILE_VALID_SET_FLAGS              0x00000036
 | 
|---|
| 227 | 
 | 
|---|
| 228 | #define FILE_SUPERSEDE                    0x00000000
 | 
|---|
| 229 | #define FILE_OPEN                         0x00000001
 | 
|---|
| 230 | #define FILE_CREATE                       0x00000002
 | 
|---|
| 231 | #define FILE_OPEN_IF                      0x00000003
 | 
|---|
| 232 | #define FILE_OVERWRITE                    0x00000004
 | 
|---|
| 233 | #define FILE_OVERWRITE_IF                 0x00000005
 | 
|---|
| 234 | #define FILE_MAXIMUM_DISPOSITION          0x00000005
 | 
|---|
| 235 | 
 | 
|---|
| 236 | #define FILE_DIRECTORY_FILE               0x00000001
 | 
|---|
| 237 | #define FILE_WRITE_THROUGH                0x00000002
 | 
|---|
| 238 | #define FILE_SEQUENTIAL_ONLY              0x00000004
 | 
|---|
| 239 | #define FILE_NO_INTERMEDIATE_BUFFERING    0x00000008
 | 
|---|
| 240 | #define FILE_SYNCHRONOUS_IO_ALERT         0x00000010
 | 
|---|
| 241 | #define FILE_SYNCHRONOUS_IO_NONALERT      0x00000020
 | 
|---|
| 242 | #define FILE_NON_DIRECTORY_FILE           0x00000040
 | 
|---|
| 243 | #define FILE_CREATE_TREE_CONNECTION       0x00000080
 | 
|---|
| 244 | #define FILE_COMPLETE_IF_OPLOCKED         0x00000100
 | 
|---|
| 245 | #define FILE_NO_EA_KNOWLEDGE              0x00000200
 | 
|---|
| 246 | #define FILE_OPEN_FOR_RECOVERY            0x00000400
 | 
|---|
| 247 | #define FILE_RANDOM_ACCESS                0x00000800
 | 
|---|
| 248 | #define FILE_DELETE_ON_CLOSE              0x00001000
 | 
|---|
| 249 | #define FILE_OPEN_BY_FILE_ID              0x00002000
 | 
|---|
| 250 | #define FILE_OPEN_FOR_BACKUP_INTENT       0x00004000
 | 
|---|
| 251 | #define FILE_NO_COMPRESSION               0x00008000
 | 
|---|
| 252 | #define FILE_RESERVE_OPFILTER             0x00100000
 | 
|---|
| 253 | #define FILE_OPEN_REPARSE_POINT           0x00200000
 | 
|---|
| 254 | #define FILE_OPEN_NO_RECALL               0x00400000
 | 
|---|
| 255 | #define FILE_OPEN_FOR_FREE_SPACE_QUERY    0x00800000
 | 
|---|
| 256 | 
 | 
|---|
| 257 | #define FILE_ANY_ACCESS                   0x00000000
 | 
|---|
| 258 | #define FILE_SPECIAL_ACCESS               FILE_ANY_ACCESS
 | 
|---|
| 259 | #define FILE_READ_ACCESS                  0x00000001
 | 
|---|
| 260 | #define FILE_WRITE_ACCESS                 0x00000002
 | 
|---|
| 261 | 
 | 
|---|
| 262 | #define FILE_ALL_ACCESS \
 | 
|---|
| 263 |   (STANDARD_RIGHTS_REQUIRED | \
 | 
|---|
| 264 |    SYNCHRONIZE | \
 | 
|---|
| 265 |    0x1FF)
 | 
|---|
| 266 | 
 | 
|---|
| 267 | #define FILE_GENERIC_EXECUTE \
 | 
|---|
| 268 |   (STANDARD_RIGHTS_EXECUTE | \
 | 
|---|
| 269 |    FILE_READ_ATTRIBUTES | \
 | 
|---|
| 270 |    FILE_EXECUTE | \
 | 
|---|
| 271 |    SYNCHRONIZE)
 | 
|---|
| 272 | 
 | 
|---|
| 273 | #define FILE_GENERIC_READ \
 | 
|---|
| 274 |   (STANDARD_RIGHTS_READ | \
 | 
|---|
| 275 |    FILE_READ_DATA | \
 | 
|---|
| 276 |    FILE_READ_ATTRIBUTES | \
 | 
|---|
| 277 |    FILE_READ_EA | \
 | 
|---|
| 278 |    SYNCHRONIZE)
 | 
|---|
| 279 | 
 | 
|---|
| 280 | #define FILE_GENERIC_WRITE \
 | 
|---|
| 281 |   (STANDARD_RIGHTS_WRITE | \
 | 
|---|
| 282 |    FILE_WRITE_DATA | \
 | 
|---|
| 283 |    FILE_WRITE_ATTRIBUTES | \
 | 
|---|
| 284 |    FILE_WRITE_EA | \
 | 
|---|
| 285 |    FILE_APPEND_DATA | \
 | 
|---|
| 286 |    SYNCHRONIZE)
 | 
|---|
| 287 | /* end winnt.h */
 | 
|---|
| 288 | 
 | 
|---|
| 289 | #define DIRECTORY_QUERY (0x0001)
 | 
|---|
| 290 | #define DIRECTORY_TRAVERSE (0x0002)
 | 
|---|
| 291 | #define DIRECTORY_CREATE_OBJECT (0x0004)
 | 
|---|
| 292 | #define DIRECTORY_CREATE_SUBDIRECTORY (0x0008)
 | 
|---|
| 293 | #define DIRECTORY_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0xF)
 | 
|---|
| 294 |   
 | 
|---|
| 295 | /* Exported object types */
 | 
|---|
| 296 | extern NTOSAPI POBJECT_TYPE ExDesktopObjectType;
 | 
|---|
| 297 | extern NTOSAPI POBJECT_TYPE ExEventObjectType;
 | 
|---|
| 298 | extern NTOSAPI POBJECT_TYPE ExSemaphoreObjectType;
 | 
|---|
| 299 | extern NTOSAPI POBJECT_TYPE ExWindowStationObjectType;
 | 
|---|
| 300 | extern NTOSAPI POBJECT_TYPE IoAdapterObjectType;
 | 
|---|
| 301 | extern NTOSAPI ULONG IoDeviceHandlerObjectSize;
 | 
|---|
| 302 | extern NTOSAPI POBJECT_TYPE IoDeviceHandlerObjectType;
 | 
|---|
| 303 | extern NTOSAPI POBJECT_TYPE IoDeviceObjectType;
 | 
|---|
| 304 | extern NTOSAPI POBJECT_TYPE IoDriverObjectType;
 | 
|---|
| 305 | extern NTOSAPI POBJECT_TYPE IoFileObjectType;
 | 
|---|
| 306 | extern NTOSAPI POBJECT_TYPE LpcPortObjectType;
 | 
|---|
| 307 | extern NTOSAPI POBJECT_TYPE MmSectionObjectType;
 | 
|---|
| 308 | extern NTOSAPI POBJECT_TYPE SeTokenObjectType;
 | 
|---|
| 309 | 
 | 
|---|
| 310 | extern NTOSAPI CCHAR KeNumberProcessors;
 | 
|---|
| 311 | extern NTOSAPI PHAL_DISPATCH_TABLE HalDispatchTable;
 | 
|---|
| 312 | extern NTOSAPI PHAL_PRIVATE_DISPATCH_TABLE HalPrivateDispatchTable;
 | 
|---|
| 313 | 
 | 
|---|
| 314 | 
 | 
|---|
| 315 | /*
 | 
|---|
| 316 | ** IRP function codes
 | 
|---|
| 317 | */
 | 
|---|
| 318 | 
 | 
|---|
| 319 | #define IRP_MJ_CREATE                     0x00
 | 
|---|
| 320 | #define IRP_MJ_CREATE_NAMED_PIPE          0x01
 | 
|---|
| 321 | #define IRP_MJ_CLOSE                      0x02
 | 
|---|
| 322 | #define IRP_MJ_READ                       0x03
 | 
|---|
| 323 | #define IRP_MJ_WRITE                      0x04
 | 
|---|
| 324 | #define IRP_MJ_QUERY_INFORMATION          0x05
 | 
|---|
| 325 | #define IRP_MJ_SET_INFORMATION            0x06
 | 
|---|
| 326 | #define IRP_MJ_QUERY_EA                   0x07
 | 
|---|
| 327 | #define IRP_MJ_SET_EA                     0x08
 | 
|---|
| 328 | #define IRP_MJ_FLUSH_BUFFERS              0x09
 | 
|---|
| 329 | #define IRP_MJ_QUERY_VOLUME_INFORMATION   0x0a
 | 
|---|
| 330 | #define IRP_MJ_SET_VOLUME_INFORMATION     0x0b
 | 
|---|
| 331 | #define IRP_MJ_DIRECTORY_CONTROL          0x0c
 | 
|---|
| 332 | #define IRP_MJ_FILE_SYSTEM_CONTROL        0x0d
 | 
|---|
| 333 | #define IRP_MJ_DEVICE_CONTROL             0x0e
 | 
|---|
| 334 | #define IRP_MJ_INTERNAL_DEVICE_CONTROL    0x0f
 | 
|---|
| 335 | #define IRP_MJ_SCSI                       0x0f
 | 
|---|
| 336 | #define IRP_MJ_SHUTDOWN                   0x10
 | 
|---|
| 337 | #define IRP_MJ_LOCK_CONTROL               0x11
 | 
|---|
| 338 | #define IRP_MJ_CLEANUP                    0x12
 | 
|---|
| 339 | #define IRP_MJ_CREATE_MAILSLOT            0x13
 | 
|---|
| 340 | #define IRP_MJ_QUERY_SECURITY             0x14
 | 
|---|
| 341 | #define IRP_MJ_SET_SECURITY               0x15
 | 
|---|
| 342 | #define IRP_MJ_POWER                      0x16
 | 
|---|
| 343 | #define IRP_MJ_SYSTEM_CONTROL             0x17
 | 
|---|
| 344 | #define IRP_MJ_DEVICE_CHANGE              0x18
 | 
|---|
| 345 | #define IRP_MJ_QUERY_QUOTA                0x19
 | 
|---|
| 346 | #define IRP_MJ_SET_QUOTA                  0x1a
 | 
|---|
| 347 | #define IRP_MJ_PNP                        0x1b
 | 
|---|
| 348 | #define IRP_MJ_PNP_POWER                  0x1b
 | 
|---|
| 349 | #define IRP_MJ_MAXIMUM_FUNCTION           0x1b
 | 
|---|
| 350 | 
 | 
|---|
| 351 | #define IRP_MN_QUERY_DIRECTORY            0x01
 | 
|---|
| 352 | #define IRP_MN_NOTIFY_CHANGE_DIRECTORY    0x02
 | 
|---|
| 353 | 
 | 
|---|
| 354 | #define IRP_MN_USER_FS_REQUEST            0x00
 | 
|---|
| 355 | #define IRP_MN_MOUNT_VOLUME               0x01
 | 
|---|
| 356 | #define IRP_MN_VERIFY_VOLUME              0x02
 | 
|---|
| 357 | #define IRP_MN_LOAD_FILE_SYSTEM           0x03
 | 
|---|
| 358 | #define IRP_MN_TRACK_LINK                 0x04
 | 
|---|
| 359 | #define IRP_MN_KERNEL_CALL                0x04
 | 
|---|
| 360 | 
 | 
|---|
| 361 | #define IRP_MN_LOCK                       0x01
 | 
|---|
| 362 | #define IRP_MN_UNLOCK_SINGLE              0x02
 | 
|---|
| 363 | #define IRP_MN_UNLOCK_ALL                 0x03
 | 
|---|
| 364 | #define IRP_MN_UNLOCK_ALL_BY_KEY          0x04
 | 
|---|
| 365 | 
 | 
|---|
| 366 | #define IRP_MN_NORMAL                     0x00
 | 
|---|
| 367 | #define IRP_MN_DPC                        0x01
 | 
|---|
| 368 | #define IRP_MN_MDL                        0x02
 | 
|---|
| 369 | #define IRP_MN_COMPLETE                   0x04
 | 
|---|
| 370 | #define IRP_MN_COMPRESSED                 0x08
 | 
|---|
| 371 | 
 | 
|---|
| 372 | #define IRP_MN_MDL_DPC                    (IRP_MN_MDL | IRP_MN_DPC)
 | 
|---|
| 373 | #define IRP_MN_COMPLETE_MDL               (IRP_MN_COMPLETE | IRP_MN_MDL)
 | 
|---|
| 374 | #define IRP_MN_COMPLETE_MDL_DPC           (IRP_MN_COMPLETE_MDL | IRP_MN_DPC)
 | 
|---|
| 375 | 
 | 
|---|
| 376 | #define IRP_MN_SCSI_CLASS                 0x01
 | 
|---|
| 377 | 
 | 
|---|
| 378 | #define IRP_MN_START_DEVICE               0x00
 | 
|---|
| 379 | #define IRP_MN_QUERY_REMOVE_DEVICE        0x01
 | 
|---|
| 380 | #define IRP_MN_REMOVE_DEVICE              0x02
 | 
|---|
| 381 | #define IRP_MN_CANCEL_REMOVE_DEVICE       0x03
 | 
|---|
| 382 | #define IRP_MN_STOP_DEVICE                0x04
 | 
|---|
| 383 | #define IRP_MN_QUERY_STOP_DEVICE          0x05
 | 
|---|
| 384 | #define IRP_MN_CANCEL_STOP_DEVICE         0x06
 | 
|---|
| 385 | 
 | 
|---|
| 386 | #define IRP_MN_QUERY_DEVICE_RELATIONS       0x07
 | 
|---|
| 387 | #define IRP_MN_QUERY_INTERFACE              0x08
 | 
|---|
| 388 | #define IRP_MN_QUERY_CAPABILITIES           0x09
 | 
|---|
| 389 | #define IRP_MN_QUERY_RESOURCES              0x0A
 | 
|---|
| 390 | #define IRP_MN_QUERY_RESOURCE_REQUIREMENTS  0x0B
 | 
|---|
| 391 | #define IRP_MN_QUERY_DEVICE_TEXT            0x0C
 | 
|---|
| 392 | #define IRP_MN_FILTER_RESOURCE_REQUIREMENTS 0x0D
 | 
|---|
| 393 | 
 | 
|---|
| 394 | #define IRP_MN_READ_CONFIG                  0x0F
 | 
|---|
| 395 | #define IRP_MN_WRITE_CONFIG                 0x10
 | 
|---|
| 396 | #define IRP_MN_EJECT                        0x11
 | 
|---|
| 397 | #define IRP_MN_SET_LOCK                     0x12
 | 
|---|
| 398 | #define IRP_MN_QUERY_ID                     0x13
 | 
|---|
| 399 | #define IRP_MN_QUERY_PNP_DEVICE_STATE       0x14
 | 
|---|
| 400 | #define IRP_MN_QUERY_BUS_INFORMATION        0x15
 | 
|---|
| 401 | #define IRP_MN_DEVICE_USAGE_NOTIFICATION    0x16
 | 
|---|
| 402 | #define IRP_MN_SURPRISE_REMOVAL             0x17
 | 
|---|
| 403 | #define IRP_MN_QUERY_LEGACY_BUS_INFORMATION 0x18
 | 
|---|
| 404 | 
 | 
|---|
| 405 | #define IRP_MN_WAIT_WAKE                  0x00
 | 
|---|
| 406 | #define IRP_MN_POWER_SEQUENCE             0x01
 | 
|---|
| 407 | #define IRP_MN_SET_POWER                  0x02
 | 
|---|
| 408 | #define IRP_MN_QUERY_POWER                0x03
 | 
|---|
| 409 | 
 | 
|---|
| 410 | #define IRP_MN_QUERY_ALL_DATA             0x00
 | 
|---|
| 411 | #define IRP_MN_QUERY_SINGLE_INSTANCE      0x01
 | 
|---|
| 412 | #define IRP_MN_CHANGE_SINGLE_INSTANCE     0x02
 | 
|---|
| 413 | #define IRP_MN_CHANGE_SINGLE_ITEM         0x03
 | 
|---|
| 414 | #define IRP_MN_ENABLE_EVENTS              0x04
 | 
|---|
| 415 | #define IRP_MN_DISABLE_EVENTS             0x05
 | 
|---|
| 416 | #define IRP_MN_ENABLE_COLLECTION          0x06
 | 
|---|
| 417 | #define IRP_MN_DISABLE_COLLECTION         0x07
 | 
|---|
| 418 | #define IRP_MN_REGINFO                    0x08
 | 
|---|
| 419 | #define IRP_MN_EXECUTE_METHOD             0x09
 | 
|---|
| 420 | 
 | 
|---|
| 421 | #define IRP_MN_REGINFO_EX                 0x0b
 | 
|---|
| 422 | 
 | 
|---|
| 423 | typedef enum _IO_ALLOCATION_ACTION {
 | 
|---|
| 424 |   KeepObject = 1,
 | 
|---|
| 425 |   DeallocateObject,
 | 
|---|
| 426 |   DeallocateObjectKeepRegisters
 | 
|---|
| 427 | } IO_ALLOCATION_ACTION, *PIO_ALLOCATION_ACTION;
 | 
|---|
| 428 | 
 | 
|---|
| 429 | typedef IO_ALLOCATION_ACTION
 | 
|---|
| 430 | (DDKAPI *PDRIVER_CONTROL)(
 | 
|---|
| 431 |   IN struct _DEVICE_OBJECT  *DeviceObject,
 | 
|---|
| 432 |   IN struct _IRP  *Irp,
 | 
|---|
| 433 |   IN PVOID  MapRegisterBase,
 | 
|---|
| 434 |   IN PVOID  Context);
 | 
|---|
| 435 | 
 | 
|---|
| 436 | typedef VOID
 | 
|---|
| 437 | (DDKAPI *PDRIVER_LIST_CONTROL)(
 | 
|---|
| 438 |   IN struct _DEVICE_OBJECT  *DeviceObject,
 | 
|---|
| 439 |   IN struct _IRP  *Irp,
 | 
|---|
| 440 |   IN struct _SCATTER_GATHER_LIST  *ScatterGather,
 | 
|---|
| 441 |   IN PVOID  Context);
 | 
|---|
| 442 | 
 | 
|---|
| 443 | typedef NTSTATUS
 | 
|---|
| 444 | (DDKAPI *PDRIVER_ADD_DEVICE)(
 | 
|---|
| 445 |   IN struct _DRIVER_OBJECT  *DriverObject,
 | 
|---|
| 446 |   IN struct _DEVICE_OBJECT  *PhysicalDeviceObject);
 | 
|---|
| 447 | 
 | 
|---|
| 448 | typedef NTSTATUS
 | 
|---|
| 449 | (DDKAPI *PIO_COMPLETION_ROUTINE)(
 | 
|---|
| 450 |   IN struct _DEVICE_OBJECT  *DeviceObject,
 | 
|---|
| 451 |   IN struct _IRP  *Irp,
 | 
|---|
| 452 |   IN PVOID  Context);
 | 
|---|
| 453 | 
 | 
|---|
| 454 | typedef VOID
 | 
|---|
| 455 | (DDKAPI *PDRIVER_CANCEL)(
 | 
|---|
| 456 |   IN struct _DEVICE_OBJECT  *DeviceObject,
 | 
|---|
| 457 |   IN struct _IRP  *Irp);
 | 
|---|
| 458 | 
 | 
|---|
| 459 | typedef VOID
 | 
|---|
| 460 | (DDKAPI *PKDEFERRED_ROUTINE)(
 | 
|---|
| 461 |   IN struct _KDPC  *Dpc,
 | 
|---|
| 462 |   IN PVOID  DeferredContext,
 | 
|---|
| 463 |   IN PVOID  SystemArgument1,
 | 
|---|
| 464 |   IN PVOID  SystemArgument2);
 | 
|---|
| 465 | 
 | 
|---|
| 466 | typedef NTSTATUS
 | 
|---|
| 467 | (DDKAPI *PDRIVER_DISPATCH)(
 | 
|---|
| 468 |   IN struct _DEVICE_OBJECT  *DeviceObject,
 | 
|---|
| 469 |   IN struct _IRP  *Irp);
 | 
|---|
| 470 | 
 | 
|---|
| 471 | typedef VOID
 | 
|---|
| 472 | (DDKAPI *PIO_DPC_ROUTINE)(
 | 
|---|
| 473 |   IN struct _KDPC  *Dpc,
 | 
|---|
| 474 |   IN struct _DEVICE_OBJECT  *DeviceObject,
 | 
|---|
| 475 |   IN struct _IRP  *Irp,
 | 
|---|
| 476 |   IN PVOID  Context);
 | 
|---|
| 477 | 
 | 
|---|
| 478 | typedef NTSTATUS
 | 
|---|
| 479 | (DDKAPI *PMM_DLL_INITIALIZE)(
 | 
|---|
| 480 |   IN PUNICODE_STRING  RegistryPath);
 | 
|---|
| 481 | 
 | 
|---|
| 482 | typedef NTSTATUS
 | 
|---|
| 483 | (DDKAPI *PMM_DLL_UNLOAD)(
 | 
|---|
| 484 |   VOID);
 | 
|---|
| 485 | 
 | 
|---|
| 486 | typedef NTSTATUS
 | 
|---|
| 487 | (DDKAPI *PDRIVER_ENTRY)( 
 | 
|---|
| 488 |   IN struct _DRIVER_OBJECT  *DriverObject, 
 | 
|---|
| 489 |   IN PUNICODE_STRING  RegistryPath); 
 | 
|---|
| 490 | 
 | 
|---|
| 491 | typedef NTSTATUS
 | 
|---|
| 492 | (DDKAPI *PDRIVER_INITIALIZE)(
 | 
|---|
| 493 |   IN struct _DRIVER_OBJECT  *DriverObject, 
 | 
|---|
| 494 |   IN PUNICODE_STRING  RegistryPath);
 | 
|---|
| 495 | 
 | 
|---|
| 496 | typedef BOOLEAN
 | 
|---|
| 497 | (DDKAPI *PKSERVICE_ROUTINE)(
 | 
|---|
| 498 |   IN struct _KINTERRUPT  *Interrupt,
 | 
|---|
| 499 |   IN PVOID  ServiceContext);
 | 
|---|
| 500 | 
 | 
|---|
| 501 | typedef VOID
 | 
|---|
| 502 | (DDKAPI *PIO_TIMER_ROUTINE)(
 | 
|---|
| 503 |   IN struct _DEVICE_OBJECT  *DeviceObject,
 | 
|---|
| 504 |   IN PVOID  Context);
 | 
|---|
| 505 | 
 | 
|---|
| 506 | typedef VOID
 | 
|---|
| 507 | (DDKAPI *PDRIVER_REINITIALIZE)( 
 | 
|---|
| 508 |   IN struct _DRIVER_OBJECT  *DriverObject, 
 | 
|---|
| 509 |   IN PVOID  Context, 
 | 
|---|
| 510 |   IN ULONG  Count); 
 | 
|---|
| 511 | 
 | 
|---|
| 512 | typedef NTSTATUS
 | 
|---|
| 513 | (DDKAPI *PDRIVER_STARTIO)(
 | 
|---|
| 514 |   IN struct _DEVICE_OBJECT  *DeviceObject,
 | 
|---|
| 515 |   IN struct _IRP  *Irp);
 | 
|---|
| 516 | 
 | 
|---|
| 517 | typedef BOOLEAN
 | 
|---|
| 518 | (DDKAPI *PKSYNCHRONIZE_ROUTINE)(
 | 
|---|
| 519 |   IN PVOID  SynchronizeContext);
 | 
|---|
| 520 | 
 | 
|---|
| 521 | typedef VOID
 | 
|---|
| 522 | (DDKAPI *PDRIVER_UNLOAD)( 
 | 
|---|
| 523 |   IN struct _DRIVER_OBJECT  *DriverObject); 
 | 
|---|
| 524 | 
 | 
|---|
| 525 | 
 | 
|---|
| 526 | 
 | 
|---|
| 527 | /*
 | 
|---|
| 528 | ** Plug and Play structures
 | 
|---|
| 529 | */
 | 
|---|
| 530 | 
 | 
|---|
| 531 | typedef VOID DDKAPI
 | 
|---|
| 532 | (*PINTERFACE_REFERENCE)(
 | 
|---|
| 533 |   PVOID  Context);
 | 
|---|
| 534 | 
 | 
|---|
| 535 | typedef VOID DDKAPI
 | 
|---|
| 536 | (*PINTERFACE_DEREFERENCE)(
 | 
|---|
| 537 |   PVOID Context);
 | 
|---|
| 538 | 
 | 
|---|
| 539 | typedef BOOLEAN DDKAPI
 | 
|---|
| 540 | (*PTRANSLATE_BUS_ADDRESS)(
 | 
|---|
| 541 |   IN PVOID  Context,
 | 
|---|
| 542 |   IN PHYSICAL_ADDRESS  BusAddress,
 | 
|---|
| 543 |   IN ULONG  Length,
 | 
|---|
| 544 |   IN OUT PULONG  AddressSpace,
 | 
|---|
| 545 |   OUT PPHYSICAL_ADDRESS  TranslatedAddress);
 | 
|---|
| 546 | 
 | 
|---|
| 547 | typedef struct _DMA_ADAPTER* DDKAPI
 | 
|---|
| 548 | (*PGET_DMA_ADAPTER)(
 | 
|---|
| 549 |   IN PVOID  Context,
 | 
|---|
| 550 |   IN struct _DEVICE_DESCRIPTION  *DeviceDescriptor,
 | 
|---|
| 551 |   OUT PULONG  NumberOfMapRegisters);
 | 
|---|
| 552 | 
 | 
|---|
| 553 | typedef ULONG DDKAPI
 | 
|---|
| 554 | (*PGET_SET_DEVICE_DATA)(
 | 
|---|
| 555 |   IN PVOID  Context,
 | 
|---|
| 556 |   IN ULONG  DataType,
 | 
|---|
| 557 |   IN PVOID  Buffer,
 | 
|---|
| 558 |   IN ULONG  Offset,
 | 
|---|
| 559 |   IN ULONG  Length);
 | 
|---|
| 560 | 
 | 
|---|
| 561 | typedef union _POWER_STATE {
 | 
|---|
| 562 |   SYSTEM_POWER_STATE  SystemState;
 | 
|---|
| 563 |   DEVICE_POWER_STATE  DeviceState;
 | 
|---|
| 564 | } POWER_STATE, *PPOWER_STATE;
 | 
|---|
| 565 | 
 | 
|---|
| 566 | typedef enum _POWER_STATE_TYPE {
 | 
|---|
| 567 |   SystemPowerState,
 | 
|---|
| 568 |   DevicePowerState
 | 
|---|
| 569 | } POWER_STATE_TYPE, *PPOWER_STATE_TYPE;
 | 
|---|
| 570 | 
 | 
|---|
| 571 | typedef struct _BUS_INTERFACE_STANDARD {
 | 
|---|
| 572 |   USHORT  Size;
 | 
|---|
| 573 |   USHORT  Version;
 | 
|---|
| 574 |   PVOID  Context;
 | 
|---|
| 575 |   PINTERFACE_REFERENCE  InterfaceReference;
 | 
|---|
| 576 |   PINTERFACE_DEREFERENCE  InterfaceDereference;
 | 
|---|
| 577 |   PTRANSLATE_BUS_ADDRESS  TranslateBusAddress;
 | 
|---|
| 578 |   PGET_DMA_ADAPTER  GetDmaAdapter;
 | 
|---|
| 579 |   PGET_SET_DEVICE_DATA  SetBusData;
 | 
|---|
| 580 |   PGET_SET_DEVICE_DATA  GetBusData;
 | 
|---|
| 581 | } BUS_INTERFACE_STANDARD, *PBUS_INTERFACE_STANDARD;
 | 
|---|
| 582 | 
 | 
|---|
| 583 | typedef struct _DEVICE_CAPABILITIES {
 | 
|---|
| 584 |   USHORT  Size;
 | 
|---|
| 585 |   USHORT  Version;
 | 
|---|
| 586 |   ULONG  DeviceD1 : 1;
 | 
|---|
| 587 |   ULONG  DeviceD2 : 1;
 | 
|---|
| 588 |   ULONG  LockSupported : 1;
 | 
|---|
| 589 |   ULONG  EjectSupported : 1;
 | 
|---|
| 590 |   ULONG  Removable : 1;
 | 
|---|
| 591 |   ULONG  DockDevice : 1;
 | 
|---|
| 592 |   ULONG  UniqueID : 1;
 | 
|---|
| 593 |   ULONG  SilentInstall : 1;
 | 
|---|
| 594 |   ULONG  RawDeviceOK : 1;
 | 
|---|
| 595 |   ULONG  SurpriseRemovalOK : 1;
 | 
|---|
| 596 |   ULONG  WakeFromD0 : 1;
 | 
|---|
| 597 |   ULONG  WakeFromD1 : 1;
 | 
|---|
| 598 |   ULONG  WakeFromD2 : 1;
 | 
|---|
| 599 |   ULONG  WakeFromD3 : 1;
 | 
|---|
| 600 |   ULONG  HardwareDisabled : 1;
 | 
|---|
| 601 |   ULONG  NonDynamic : 1;
 | 
|---|
| 602 |   ULONG  WarmEjectSupported : 1;
 | 
|---|
| 603 |   ULONG  NoDisplayInUI : 1;
 | 
|---|
| 604 |   ULONG  Reserved : 14;
 | 
|---|
| 605 |   ULONG  Address;
 | 
|---|
| 606 |   ULONG  UINumber;
 | 
|---|
| 607 |   DEVICE_POWER_STATE  DeviceState[PowerSystemMaximum];
 | 
|---|
| 608 |   SYSTEM_POWER_STATE  SystemWake;
 | 
|---|
| 609 |   DEVICE_POWER_STATE  DeviceWake;
 | 
|---|
| 610 |   ULONG  D1Latency;
 | 
|---|
| 611 |   ULONG  D2Latency;
 | 
|---|
| 612 |   ULONG  D3Latency;
 | 
|---|
| 613 | } DEVICE_CAPABILITIES, *PDEVICE_CAPABILITIES;
 | 
|---|
| 614 | 
 | 
|---|
| 615 | typedef struct _DEVICE_INTERFACE_CHANGE_NOTIFICATION {
 | 
|---|
| 616 |   USHORT  Version;
 | 
|---|
| 617 |   USHORT  Size;
 | 
|---|
| 618 |   GUID  Event;
 | 
|---|
| 619 |   GUID  InterfaceClassGuid;
 | 
|---|
| 620 |   PUNICODE_STRING  SymbolicLinkName;
 | 
|---|
| 621 | } DEVICE_INTERFACE_CHANGE_NOTIFICATION, *PDEVICE_INTERFACE_CHANGE_NOTIFICATION;
 | 
|---|
| 622 | 
 | 
|---|
| 623 | typedef struct _HWPROFILE_CHANGE_NOTIFICATION {
 | 
|---|
| 624 |   USHORT  Version;
 | 
|---|
| 625 |   USHORT  Size;
 | 
|---|
| 626 |   GUID  Event;
 | 
|---|
| 627 | } HWPROFILE_CHANGE_NOTIFICATION, *PHWPROFILE_CHANGE_NOTIFICATION;
 | 
|---|
| 628 | 
 | 
|---|
| 629 | #undef INTERFACE
 | 
|---|
| 630 | 
 | 
|---|
| 631 | typedef struct _INTERFACE {
 | 
|---|
| 632 |   USHORT  Size;
 | 
|---|
| 633 |   USHORT  Version;
 | 
|---|
| 634 |   PVOID  Context;
 | 
|---|
| 635 |   PINTERFACE_REFERENCE  InterfaceReference;
 | 
|---|
| 636 |   PINTERFACE_DEREFERENCE  InterfaceDereference;
 | 
|---|
| 637 | } INTERFACE, *PINTERFACE; 
 | 
|---|
| 638 | 
 | 
|---|
| 639 | typedef struct _PLUGPLAY_NOTIFICATION_HEADER {
 | 
|---|
| 640 |   USHORT  Version; 
 | 
|---|
| 641 |   USHORT  Size; 
 | 
|---|
| 642 |   GUID  Event;
 | 
|---|
| 643 | } PLUGPLAY_NOTIFICATION_HEADER, *PPLUGPLAY_NOTIFICATION_HEADER;
 | 
|---|
| 644 | 
 | 
|---|
| 645 | typedef ULONG PNP_DEVICE_STATE, *PPNP_DEVICE_STATE;
 | 
|---|
| 646 | 
 | 
|---|
| 647 | /* PNP_DEVICE_STATE */
 | 
|---|
| 648 | 
 | 
|---|
| 649 | #define PNP_DEVICE_DISABLED                      0x00000001
 | 
|---|
| 650 | #define PNP_DEVICE_DONT_DISPLAY_IN_UI            0x00000002
 | 
|---|
| 651 | #define PNP_DEVICE_FAILED                        0x00000004
 | 
|---|
| 652 | #define PNP_DEVICE_REMOVED                       0x00000008
 | 
|---|
| 653 | #define PNP_DEVICE_RESOURCE_REQUIREMENTS_CHANGED 0x00000010
 | 
|---|
| 654 | #define PNP_DEVICE_NOT_DISABLEABLE               0x00000020
 | 
|---|
| 655 | 
 | 
|---|
| 656 | typedef struct _TARGET_DEVICE_CUSTOM_NOTIFICATION {
 | 
|---|
| 657 |   USHORT  Version;
 | 
|---|
| 658 |   USHORT  Size;
 | 
|---|
| 659 |   GUID  Event;
 | 
|---|
| 660 |   struct _FILE_OBJECT  *FileObject;
 | 
|---|
| 661 |   LONG  NameBufferOffset;
 | 
|---|
| 662 |   UCHAR  CustomDataBuffer[1];
 | 
|---|
| 663 | } TARGET_DEVICE_CUSTOM_NOTIFICATION, *PTARGET_DEVICE_CUSTOM_NOTIFICATION;
 | 
|---|
| 664 | 
 | 
|---|
| 665 | typedef struct _TARGET_DEVICE_REMOVAL_NOTIFICATION {
 | 
|---|
| 666 |   USHORT  Version;
 | 
|---|
| 667 |   USHORT  Size;
 | 
|---|
| 668 |   GUID  Event;
 | 
|---|
| 669 |   struct _FILE_OBJECT  *FileObject;
 | 
|---|
| 670 | } TARGET_DEVICE_REMOVAL_NOTIFICATION, *PTARGET_DEVICE_REMOVAL_NOTIFICATION;
 | 
|---|
| 671 | 
 | 
|---|
| 672 | typedef enum _BUS_QUERY_ID_TYPE {
 | 
|---|
| 673 |   BusQueryDeviceID,
 | 
|---|
| 674 |   BusQueryHardwareIDs,
 | 
|---|
| 675 |   BusQueryCompatibleIDs,
 | 
|---|
| 676 |   BusQueryInstanceID,
 | 
|---|
| 677 |   BusQueryDeviceSerialNumber
 | 
|---|
| 678 | } BUS_QUERY_ID_TYPE, *PBUS_QUERY_ID_TYPE;
 | 
|---|
| 679 | 
 | 
|---|
| 680 | typedef enum _DEVICE_TEXT_TYPE {
 | 
|---|
| 681 |   DeviceTextDescription,
 | 
|---|
| 682 |   DeviceTextLocationInformation
 | 
|---|
| 683 | } DEVICE_TEXT_TYPE, *PDEVICE_TEXT_TYPE;
 | 
|---|
| 684 | 
 | 
|---|
| 685 | typedef enum _DEVICE_USAGE_NOTIFICATION_TYPE {
 | 
|---|
| 686 |   DeviceUsageTypeUndefined,
 | 
|---|
| 687 |   DeviceUsageTypePaging,
 | 
|---|
| 688 |   DeviceUsageTypeHibernation,
 | 
|---|
| 689 |   DeviceUsageTypeDumpFile
 | 
|---|
| 690 | } DEVICE_USAGE_NOTIFICATION_TYPE;
 | 
|---|
| 691 | 
 | 
|---|
| 692 | typedef struct _POWER_SEQUENCE {
 | 
|---|
| 693 |   ULONG  SequenceD1;
 | 
|---|
| 694 |   ULONG  SequenceD2;
 | 
|---|
| 695 |   ULONG  SequenceD3;
 | 
|---|
| 696 | } POWER_SEQUENCE, *PPOWER_SEQUENCE;
 | 
|---|
| 697 | 
 | 
|---|
| 698 | typedef enum {
 | 
|---|
| 699 |   DevicePropertyDeviceDescription,
 | 
|---|
| 700 |   DevicePropertyHardwareID,
 | 
|---|
| 701 |   DevicePropertyCompatibleIDs,
 | 
|---|
| 702 |   DevicePropertyBootConfiguration,
 | 
|---|
| 703 |   DevicePropertyBootConfigurationTranslated,
 | 
|---|
| 704 |   DevicePropertyClassName,
 | 
|---|
| 705 |   DevicePropertyClassGuid,
 | 
|---|
| 706 |   DevicePropertyDriverKeyName,
 | 
|---|
| 707 |   DevicePropertyManufacturer,
 | 
|---|
| 708 |   DevicePropertyFriendlyName,
 | 
|---|
| 709 |   DevicePropertyLocationInformation,
 | 
|---|
| 710 |   DevicePropertyPhysicalDeviceObjectName,
 | 
|---|
| 711 |   DevicePropertyBusTypeGuid,
 | 
|---|
| 712 |   DevicePropertyLegacyBusType,
 | 
|---|
| 713 |   DevicePropertyBusNumber,
 | 
|---|
| 714 |   DevicePropertyEnumeratorName,
 | 
|---|
| 715 |   DevicePropertyAddress,
 | 
|---|
| 716 |   DevicePropertyUINumber,
 | 
|---|
| 717 |   DevicePropertyInstallState,
 | 
|---|
| 718 |   DevicePropertyRemovalPolicy
 | 
|---|
| 719 | } DEVICE_REGISTRY_PROPERTY;
 | 
|---|
| 720 | 
 | 
|---|
| 721 | typedef enum _IO_NOTIFICATION_EVENT_CATEGORY {
 | 
|---|
| 722 |   EventCategoryReserved,
 | 
|---|
| 723 |   EventCategoryHardwareProfileChange,
 | 
|---|
| 724 |   EventCategoryDeviceInterfaceChange,
 | 
|---|
| 725 |   EventCategoryTargetDeviceChange
 | 
|---|
| 726 | } IO_NOTIFICATION_EVENT_CATEGORY;
 | 
|---|
| 727 | 
 | 
|---|
| 728 | #define PNPNOTIFY_DEVICE_INTERFACE_INCLUDE_EXISTING_INTERFACES    0x00000001
 | 
|---|
| 729 | 
 | 
|---|
| 730 | typedef NTSTATUS DDKAPI
 | 
|---|
| 731 | (*PDRIVER_NOTIFICATION_CALLBACK_ROUTINE)(
 | 
|---|
| 732 |   IN PVOID NotificationStructure,
 | 
|---|
| 733 |   IN PVOID Context);
 | 
|---|
| 734 | 
 | 
|---|
| 735 | typedef VOID DDKAPI
 | 
|---|
| 736 | (*PDEVICE_CHANGE_COMPLETE_CALLBACK)(
 | 
|---|
| 737 |   IN PVOID Context);
 | 
|---|
| 738 | 
 | 
|---|
| 739 | 
 | 
|---|
| 740 | 
 | 
|---|
| 741 | /*
 | 
|---|
| 742 | ** System structures
 | 
|---|
| 743 | */
 | 
|---|
| 744 | 
 | 
|---|
| 745 | #define SYMBOLIC_LINK_QUERY               0x0001
 | 
|---|
| 746 | #define SYMBOLIC_LINK_ALL_ACCESS          (STANDARD_RIGHTS_REQUIRED | 0x1)
 | 
|---|
| 747 | 
 | 
|---|
| 748 | /* also in winnt,h */
 | 
|---|
| 749 | #define DUPLICATE_CLOSE_SOURCE            0x00000001
 | 
|---|
| 750 | #define DUPLICATE_SAME_ACCESS             0x00000002
 | 
|---|
| 751 | #define DUPLICATE_SAME_ATTRIBUTES         0x00000004
 | 
|---|
| 752 | /* end winnt.h */
 | 
|---|
| 753 | 
 | 
|---|
| 754 | typedef struct _OBJECT_NAME_INFORMATION {               
 | 
|---|
| 755 |   UNICODE_STRING  Name;                                
 | 
|---|
| 756 | } OBJECT_NAME_INFORMATION, *POBJECT_NAME_INFORMATION;   
 | 
|---|
| 757 | 
 | 
|---|
| 758 | typedef VOID DDKAPI
 | 
|---|
| 759 | (*PIO_APC_ROUTINE)(
 | 
|---|
| 760 |   IN PVOID ApcContext,
 | 
|---|
| 761 |   IN PIO_STATUS_BLOCK IoStatusBlock,
 | 
|---|
| 762 |   IN ULONG Reserved);
 | 
|---|
| 763 | 
 | 
|---|
| 764 | typedef struct _IO_STATUS_BLOCK {
 | 
|---|
| 765 |   _ANONYMOUS_UNION union {
 | 
|---|
| 766 |     NTSTATUS  Status;
 | 
|---|
| 767 |     PVOID  Pointer;
 | 
|---|
| 768 |   } DUMMYUNIONNAME;
 | 
|---|
| 769 |   ULONG_PTR  Information;
 | 
|---|
| 770 | } IO_STATUS_BLOCK;
 | 
|---|
| 771 | 
 | 
|---|
| 772 | typedef VOID DDKAPI
 | 
|---|
| 773 | (*PKNORMAL_ROUTINE)(
 | 
|---|
| 774 |   IN PVOID  NormalContext,
 | 
|---|
| 775 |   IN PVOID  SystemArgument1,
 | 
|---|
| 776 |   IN PVOID  SystemArgument2);
 | 
|---|
| 777 | 
 | 
|---|
| 778 | typedef VOID DDKAPI
 | 
|---|
| 779 | (*PKKERNEL_ROUTINE)(
 | 
|---|
| 780 |   IN struct _KAPC  *Apc,
 | 
|---|
| 781 |   IN OUT PKNORMAL_ROUTINE  *NormalRoutine,
 | 
|---|
| 782 |   IN OUT PVOID  *NormalContext,
 | 
|---|
| 783 |   IN OUT PVOID  *SystemArgument1,
 | 
|---|
| 784 |   IN OUT PVOID  *SystemArgument2);
 | 
|---|
| 785 | 
 | 
|---|
| 786 | typedef VOID DDKAPI
 | 
|---|
| 787 | (*PKRUNDOWN_ROUTINE)(
 | 
|---|
| 788 |   IN struct _KAPC  *Apc);
 | 
|---|
| 789 | 
 | 
|---|
| 790 | typedef BOOLEAN DDKAPI
 | 
|---|
| 791 | (*PKTRANSFER_ROUTINE)(
 | 
|---|
| 792 |   VOID);
 | 
|---|
| 793 | 
 | 
|---|
| 794 | typedef struct _KAPC {
 | 
|---|
| 795 |   CSHORT  Type;
 | 
|---|
| 796 |   CSHORT  Size;
 | 
|---|
| 797 |   ULONG  Spare0;
 | 
|---|
| 798 |   struct _KTHREAD  *Thread;
 | 
|---|
| 799 |   LIST_ENTRY  ApcListEntry;
 | 
|---|
| 800 |   PKKERNEL_ROUTINE  KernelRoutine;
 | 
|---|
| 801 |   PKRUNDOWN_ROUTINE  RundownRoutine;
 | 
|---|
| 802 |   PKNORMAL_ROUTINE  NormalRoutine;
 | 
|---|
| 803 |   PVOID  NormalContext;
 | 
|---|
| 804 |   PVOID  SystemArgument1;
 | 
|---|
| 805 |   PVOID  SystemArgument2;
 | 
|---|
| 806 |   CCHAR  ApcStateIndex;
 | 
|---|
| 807 |   KPROCESSOR_MODE  ApcMode;
 | 
|---|
| 808 |   BOOLEAN  Inserted;
 | 
|---|
| 809 | } KAPC, *PKAPC, *RESTRICTED_POINTER PRKAPC;
 | 
|---|
| 810 | 
 | 
|---|
| 811 | typedef struct _KDEVICE_QUEUE {
 | 
|---|
| 812 |   CSHORT  Type;
 | 
|---|
| 813 |   CSHORT  Size;
 | 
|---|
| 814 |   LIST_ENTRY  DeviceListHead;
 | 
|---|
| 815 |   KSPIN_LOCK  Lock;
 | 
|---|
| 816 |   BOOLEAN  Busy;
 | 
|---|
| 817 | } KDEVICE_QUEUE, *PKDEVICE_QUEUE, *RESTRICTED_POINTER PRKDEVICE_QUEUE;
 | 
|---|
| 818 | 
 | 
|---|
| 819 | typedef struct _KDEVICE_QUEUE_ENTRY {
 | 
|---|
| 820 |   LIST_ENTRY  DeviceListEntry;
 | 
|---|
| 821 |   ULONG  SortKey;
 | 
|---|
| 822 |   BOOLEAN  Inserted;
 | 
|---|
| 823 | } KDEVICE_QUEUE_ENTRY, *PKDEVICE_QUEUE_ENTRY,
 | 
|---|
| 824 | *RESTRICTED_POINTER PRKDEVICE_QUEUE_ENTRY;
 | 
|---|
| 825 | 
 | 
|---|
| 826 | #define LOCK_QUEUE_WAIT                   1
 | 
|---|
| 827 | #define LOCK_QUEUE_OWNER                  2
 | 
|---|
| 828 | 
 | 
|---|
| 829 | typedef enum _KSPIN_LOCK_QUEUE_NUMBER {
 | 
|---|
| 830 |   LockQueueDispatcherLock,
 | 
|---|
| 831 |   LockQueueContextSwapLock,
 | 
|---|
| 832 |   LockQueuePfnLock,
 | 
|---|
| 833 |   LockQueueSystemSpaceLock,
 | 
|---|
| 834 |   LockQueueVacbLock,
 | 
|---|
| 835 |   LockQueueMasterLock,
 | 
|---|
| 836 |   LockQueueNonPagedPoolLock,
 | 
|---|
| 837 |   LockQueueIoCancelLock,
 | 
|---|
| 838 |   LockQueueWorkQueueLock,
 | 
|---|
| 839 |   LockQueueIoVpbLock,
 | 
|---|
| 840 |   LockQueueIoDatabaseLock,
 | 
|---|
| 841 |   LockQueueIoCompletionLock,
 | 
|---|
| 842 |   LockQueueNtfsStructLock,
 | 
|---|
| 843 |   LockQueueAfdWorkQueueLock,
 | 
|---|
| 844 |   LockQueueBcbLock,
 | 
|---|
| 845 |   LockQueueMaximumLock
 | 
|---|
| 846 | } KSPIN_LOCK_QUEUE_NUMBER, *PKSPIN_LOCK_QUEUE_NUMBER;
 | 
|---|
| 847 | 
 | 
|---|
| 848 | typedef struct _KSPIN_LOCK_QUEUE {
 | 
|---|
| 849 |   struct _KSPIN_LOCK_QUEUE  *VOLATILE Next;
 | 
|---|
| 850 |   PKSPIN_LOCK VOLATILE  Lock;
 | 
|---|
| 851 | } KSPIN_LOCK_QUEUE, *PKSPIN_LOCK_QUEUE;
 | 
|---|
| 852 | 
 | 
|---|
| 853 | typedef struct _KLOCK_QUEUE_HANDLE {
 | 
|---|
| 854 |   KSPIN_LOCK_QUEUE  LockQueue;
 | 
|---|
| 855 |   KIRQL  OldIrql;
 | 
|---|
| 856 | } KLOCK_QUEUE_HANDLE, *PKLOCK_QUEUE_HANDLE;
 | 
|---|
| 857 | 
 | 
|---|
| 858 | typedef struct _KDPC {
 | 
|---|
| 859 |   CSHORT  Type;
 | 
|---|
| 860 |   UCHAR  Number;
 | 
|---|
| 861 |   UCHAR  Importance;
 | 
|---|
| 862 |   LIST_ENTRY  DpcListEntry;
 | 
|---|
| 863 |   PKDEFERRED_ROUTINE  DeferredRoutine;
 | 
|---|
| 864 |   PVOID  DeferredContext;
 | 
|---|
| 865 |   PVOID  SystemArgument1;
 | 
|---|
| 866 |   PVOID  SystemArgument2;
 | 
|---|
| 867 |   PULONG_PTR  Lock;
 | 
|---|
| 868 | } KDPC, *PKDPC, *RESTRICTED_POINTER PRKDPC;
 | 
|---|
| 869 | 
 | 
|---|
| 870 | typedef struct _WAIT_CONTEXT_BLOCK {
 | 
|---|
| 871 |   KDEVICE_QUEUE_ENTRY  WaitQueueEntry;
 | 
|---|
| 872 |   struct _DRIVER_CONTROL  *DeviceRoutine;
 | 
|---|
| 873 |   PVOID  DeviceContext;
 | 
|---|
| 874 |   ULONG  NumberOfMapRegisters;
 | 
|---|
| 875 |   PVOID  DeviceObject;
 | 
|---|
| 876 |   PVOID  CurrentIrp;
 | 
|---|
| 877 |   PKDPC  BufferChainingDpc;
 | 
|---|
| 878 | } WAIT_CONTEXT_BLOCK, *PWAIT_CONTEXT_BLOCK;
 | 
|---|
| 879 | 
 | 
|---|
| 880 | typedef struct _DISPATCHER_HEADER {
 | 
|---|
| 881 |   UCHAR  Type;
 | 
|---|
| 882 |   UCHAR  Absolute;
 | 
|---|
| 883 |   UCHAR  Size;
 | 
|---|
| 884 |   UCHAR  Inserted;
 | 
|---|
| 885 |   LONG  SignalState;
 | 
|---|
| 886 |   LIST_ENTRY  WaitListHead;
 | 
|---|
| 887 | } DISPATCHER_HEADER, *PDISPATCHER_HEADER;
 | 
|---|
| 888 | 
 | 
|---|
| 889 | typedef struct _KEVENT {
 | 
|---|
| 890 |   DISPATCHER_HEADER  Header;
 | 
|---|
| 891 | } KEVENT, *PKEVENT, *RESTRICTED_POINTER PRKEVENT;
 | 
|---|
| 892 | 
 | 
|---|
| 893 | typedef struct _KSEMAPHORE {
 | 
|---|
| 894 |     DISPATCHER_HEADER Header;
 | 
|---|
| 895 |     LONG Limit;
 | 
|---|
| 896 | } KSEMAPHORE, *PKSEMAPHORE, *RESTRICTED_POINTER PRKSEMAPHORE;
 | 
|---|
| 897 | 
 | 
|---|
| 898 | typedef struct _FAST_MUTEX {
 | 
|---|
| 899 |   LONG  Count;
 | 
|---|
| 900 |   struct _KTHREAD  *Owner;
 | 
|---|
| 901 |   ULONG  Contention;
 | 
|---|
| 902 |   KEVENT  Event;
 | 
|---|
| 903 |   ULONG  OldIrql;
 | 
|---|
| 904 | } FAST_MUTEX, *PFAST_MUTEX;
 | 
|---|
| 905 | 
 | 
|---|
| 906 | typedef struct _KTIMER {
 | 
|---|
| 907 |   DISPATCHER_HEADER  Header;
 | 
|---|
| 908 |   ULARGE_INTEGER  DueTime;
 | 
|---|
| 909 |   LIST_ENTRY  TimerListEntry;
 | 
|---|
| 910 |   struct _KDPC  *Dpc;
 | 
|---|
| 911 |   LONG  Period;
 | 
|---|
| 912 | } KTIMER, *PKTIMER, *RESTRICTED_POINTER PRKTIMER;
 | 
|---|
| 913 | 
 | 
|---|
| 914 | typedef struct _KMUTANT {
 | 
|---|
| 915 |   DISPATCHER_HEADER  Header;
 | 
|---|
| 916 |   LIST_ENTRY  MutantListEntry;
 | 
|---|
| 917 |   struct _KTHREAD  *RESTRICTED_POINTER OwnerThread;
 | 
|---|
| 918 |   BOOLEAN  Abandoned;
 | 
|---|
| 919 |   UCHAR  ApcDisable;
 | 
|---|
| 920 | } KMUTANT, *PKMUTANT, *RESTRICTED_POINTER PRKMUTANT, KMUTEX, *PKMUTEX, *RESTRICTED_POINTER PRKMUTEX;
 | 
|---|
| 921 | 
 | 
|---|
| 922 | typedef enum _TIMER_TYPE {
 | 
|---|
| 923 |   NotificationTimer,
 | 
|---|
| 924 |   SynchronizationTimer
 | 
|---|
| 925 | } TIMER_TYPE;
 | 
|---|
| 926 | 
 | 
|---|
| 927 | #define EVENT_INCREMENT                   1
 | 
|---|
| 928 | #define IO_NO_INCREMENT                   0
 | 
|---|
| 929 | #define IO_CD_ROM_INCREMENT               1
 | 
|---|
| 930 | #define IO_DISK_INCREMENT                 1
 | 
|---|
| 931 | #define IO_KEYBOARD_INCREMENT             6
 | 
|---|
| 932 | #define IO_MAILSLOT_INCREMENT             2
 | 
|---|
| 933 | #define IO_MOUSE_INCREMENT                6
 | 
|---|
| 934 | #define IO_NAMED_PIPE_INCREMENT           2
 | 
|---|
| 935 | #define IO_NETWORK_INCREMENT              2
 | 
|---|
| 936 | #define IO_PARALLEL_INCREMENT             1
 | 
|---|
| 937 | #define IO_SERIAL_INCREMENT               2
 | 
|---|
| 938 | #define IO_SOUND_INCREMENT                8
 | 
|---|
| 939 | #define IO_VIDEO_INCREMENT                1
 | 
|---|
| 940 | #define SEMAPHORE_INCREMENT               1
 | 
|---|
| 941 | 
 | 
|---|
| 942 | typedef struct _IRP {
 | 
|---|
| 943 |   CSHORT  Type;
 | 
|---|
| 944 |   USHORT  Size;
 | 
|---|
| 945 |   struct _MDL  *MdlAddress;
 | 
|---|
| 946 |   ULONG  Flags;
 | 
|---|
| 947 |   union {
 | 
|---|
| 948 |     struct _IRP  *MasterIrp;
 | 
|---|
| 949 |     LONG  IrpCount;
 | 
|---|
| 950 |     PVOID  SystemBuffer;
 | 
|---|
| 951 |   } AssociatedIrp;
 | 
|---|
| 952 |   LIST_ENTRY  ThreadListEntry;
 | 
|---|
| 953 |   IO_STATUS_BLOCK  IoStatus;
 | 
|---|
| 954 |   KPROCESSOR_MODE  RequestorMode;
 | 
|---|
| 955 |   BOOLEAN  PendingReturned;
 | 
|---|
| 956 |   CHAR  StackCount;
 | 
|---|
| 957 |   CHAR  CurrentLocation;
 | 
|---|
| 958 |   BOOLEAN  Cancel;
 | 
|---|
| 959 |   KIRQL  CancelIrql;
 | 
|---|
| 960 |   CCHAR  ApcEnvironment;
 | 
|---|
| 961 |   UCHAR  AllocationFlags;
 | 
|---|
| 962 |   PIO_STATUS_BLOCK  UserIosb;
 | 
|---|
| 963 |   PKEVENT  UserEvent;
 | 
|---|
| 964 |   union {
 | 
|---|
| 965 |     struct {
 | 
|---|
| 966 |       PIO_APC_ROUTINE  UserApcRoutine;
 | 
|---|
| 967 |       PVOID  UserApcContext;
 | 
|---|
| 968 |     } AsynchronousParameters;
 | 
|---|
| 969 |     LARGE_INTEGER  AllocationSize;
 | 
|---|
| 970 |   } Overlay;
 | 
|---|
| 971 |   PDRIVER_CANCEL  CancelRoutine;
 | 
|---|
| 972 |   PVOID  UserBuffer;
 | 
|---|
| 973 |   union {
 | 
|---|
| 974 |     struct {
 | 
|---|
| 975 |       _ANONYMOUS_UNION union {
 | 
|---|
| 976 |         KDEVICE_QUEUE_ENTRY  DeviceQueueEntry;
 | 
|---|
| 977 |         _ANONYMOUS_STRUCT struct {
 | 
|---|
| 978 |           PVOID  DriverContext[4];
 | 
|---|
| 979 |         } DUMMYSTRUCTNAME;
 | 
|---|
| 980 |       } DUMMYUNIONNAME;
 | 
|---|
| 981 |       PETHREAD  Thread;
 | 
|---|
| 982 |       PCHAR  AuxiliaryBuffer;
 | 
|---|
| 983 |       _ANONYMOUS_STRUCT struct {
 | 
|---|
| 984 |         LIST_ENTRY  ListEntry;
 | 
|---|
| 985 |         _ANONYMOUS_UNION union {
 | 
|---|
| 986 |           struct _IO_STACK_LOCATION  *CurrentStackLocation;
 | 
|---|
| 987 |           ULONG  PacketType;
 | 
|---|
| 988 |         } DUMMYUNIONNAME;
 | 
|---|
| 989 |       } DUMMYSTRUCTNAME;
 | 
|---|
| 990 |       struct _FILE_OBJECT  *OriginalFileObject;
 | 
|---|
| 991 |     } Overlay;
 | 
|---|
| 992 |     KAPC  Apc;
 | 
|---|
| 993 |     PVOID  CompletionKey;
 | 
|---|
| 994 |   } Tail;
 | 
|---|
| 995 | } IRP;
 | 
|---|
| 996 | typedef struct _IRP *PIRP;
 | 
|---|
| 997 | 
 | 
|---|
| 998 | /* IRP.Flags */
 | 
|---|
| 999 | 
 | 
|---|
| 1000 | #define SL_FORCE_ACCESS_CHECK             0x01
 | 
|---|
| 1001 | #define SL_OPEN_PAGING_FILE               0x02
 | 
|---|
| 1002 | #define SL_OPEN_TARGET_DIRECTORY          0x04
 | 
|---|
| 1003 | #define SL_CASE_SENSITIVE                 0x80
 | 
|---|
| 1004 | 
 | 
|---|
| 1005 | #define SL_KEY_SPECIFIED                  0x01
 | 
|---|
| 1006 | #define SL_OVERRIDE_VERIFY_VOLUME         0x02
 | 
|---|
| 1007 | #define SL_WRITE_THROUGH                  0x04
 | 
|---|
| 1008 | #define SL_FT_SEQUENTIAL_WRITE            0x08
 | 
|---|
| 1009 | 
 | 
|---|
| 1010 | #define SL_FAIL_IMMEDIATELY               0x01
 | 
|---|
| 1011 | #define SL_EXCLUSIVE_LOCK                 0x02
 | 
|---|
| 1012 | 
 | 
|---|
| 1013 | #define SL_RESTART_SCAN                   0x01
 | 
|---|
| 1014 | #define SL_RETURN_SINGLE_ENTRY            0x02
 | 
|---|
| 1015 | #define SL_INDEX_SPECIFIED                0x04
 | 
|---|
| 1016 | 
 | 
|---|
| 1017 | #define SL_WATCH_TREE                     0x01
 | 
|---|
| 1018 | 
 | 
|---|
| 1019 | #define SL_ALLOW_RAW_MOUNT                0x01
 | 
|---|
| 1020 | 
 | 
|---|
| 1021 | #define CTL_CODE(DeviceType, Function, Method, Access)( \
 | 
|---|
| 1022 |   ((DeviceType) << 16) | ((Access) << 14) | ((Function) << 2) | (Method))
 | 
|---|
| 1023 | 
 | 
|---|
| 1024 | #define DEVICE_TYPE_FROM_CTL_CODE(ctl) (((ULONG) (ctl & 0xffff0000)) >> 16)
 | 
|---|
| 1025 | 
 | 
|---|
| 1026 | enum
 | 
|---|
| 1027 | {
 | 
|---|
| 1028 |    IRP_NOCACHE = 0x1,
 | 
|---|
| 1029 |    IRP_PAGING_IO = 0x2,
 | 
|---|
| 1030 |    IRP_MOUNT_COMPLETION = 0x2,
 | 
|---|
| 1031 |    IRP_SYNCHRONOUS_API = 0x4,
 | 
|---|
| 1032 |    IRP_ASSOCIATED_IRP = 0x8,
 | 
|---|
| 1033 |    IRP_BUFFERED_IO = 0x10,
 | 
|---|
| 1034 |    IRP_DEALLOCATE_BUFFER = 0x20,
 | 
|---|
| 1035 |    IRP_INPUT_OPERATION = 0x40,
 | 
|---|
| 1036 |    IRP_SYNCHRONOUS_PAGING_IO = 0x40,
 | 
|---|
| 1037 |    IRP_CREATE_OPERATION = 0x80,
 | 
|---|
| 1038 |    IRP_READ_OPERATION = 0x100,
 | 
|---|
| 1039 |    IRP_WRITE_OPERATION = 0x200,
 | 
|---|
| 1040 |    IRP_CLOSE_OPERATION = 0x400,
 | 
|---|
| 1041 |    IRP_DEFER_IO_COMPLETION = 0x800,
 | 
|---|
| 1042 |    IRP_OB_QUERY_NAME = 0x1000,
 | 
|---|
| 1043 |    IRP_HOLD_DEVICE_QUEUE = 0x2000,
 | 
|---|
| 1044 |    IRP_RETRY_IO_COMPLETION = 0x4000
 | 
|---|
| 1045 | };
 | 
|---|
| 1046 | 
 | 
|---|
| 1047 | 
 | 
|---|
| 1048 | typedef struct _DRIVE_LAYOUT_INFORMATION_MBR {
 | 
|---|
| 1049 |   ULONG  Signature;
 | 
|---|
| 1050 | } DRIVE_LAYOUT_INFORMATION_MBR, *PDRIVE_LAYOUT_INFORMATION_MBR;
 | 
|---|
| 1051 | 
 | 
|---|
| 1052 | typedef struct _DRIVE_LAYOUT_INFORMATION_GPT {
 | 
|---|
| 1053 |   GUID  DiskId;
 | 
|---|
| 1054 |   LARGE_INTEGER  StartingUsableOffset;
 | 
|---|
| 1055 |   LARGE_INTEGER  UsableLength;
 | 
|---|
| 1056 |   ULONG  MaxPartitionCount;
 | 
|---|
| 1057 | } DRIVE_LAYOUT_INFORMATION_GPT, *PDRIVE_LAYOUT_INFORMATION_GPT;
 | 
|---|
| 1058 | 
 | 
|---|
| 1059 | typedef struct _PARTITION_INFORMATION_MBR {
 | 
|---|
| 1060 |   UCHAR  PartitionType;
 | 
|---|
| 1061 |   BOOLEAN  BootIndicator;
 | 
|---|
| 1062 |   BOOLEAN  RecognizedPartition;
 | 
|---|
| 1063 |   ULONG  HiddenSectors;
 | 
|---|
| 1064 | } PARTITION_INFORMATION_MBR, *PPARTITION_INFORMATION_MBR;
 | 
|---|
| 1065 | 
 | 
|---|
| 1066 | 
 | 
|---|
| 1067 | typedef struct _BOOTDISK_INFORMATION {
 | 
|---|
| 1068 |   LONGLONG  BootPartitionOffset;
 | 
|---|
| 1069 |   LONGLONG  SystemPartitionOffset;
 | 
|---|
| 1070 |   ULONG  BootDeviceSignature;
 | 
|---|
| 1071 |   ULONG  SystemDeviceSignature;
 | 
|---|
| 1072 | } BOOTDISK_INFORMATION, *PBOOTDISK_INFORMATION;
 | 
|---|
| 1073 | 
 | 
|---|
| 1074 | typedef struct _BOOTDISK_INFORMATION_EX {
 | 
|---|
| 1075 |   LONGLONG  BootPartitionOffset;
 | 
|---|
| 1076 |   LONGLONG  SystemPartitionOffset;
 | 
|---|
| 1077 |   ULONG  BootDeviceSignature;
 | 
|---|
| 1078 |   ULONG  SystemDeviceSignature;
 | 
|---|
| 1079 |   GUID  BootDeviceGuid;
 | 
|---|
| 1080 |   GUID  SystemDeviceGuid;
 | 
|---|
| 1081 |   BOOLEAN  BootDeviceIsGpt;
 | 
|---|
| 1082 |   BOOLEAN  SystemDeviceIsGpt;
 | 
|---|
| 1083 | } BOOTDISK_INFORMATION_EX, *PBOOTDISK_INFORMATION_EX;
 | 
|---|
| 1084 | 
 | 
|---|
| 1085 | typedef struct _EISA_MEMORY_TYPE {
 | 
|---|
| 1086 |   UCHAR  ReadWrite : 1;
 | 
|---|
| 1087 |   UCHAR  Cached : 1;
 | 
|---|
| 1088 |   UCHAR  Reserved0 : 1;
 | 
|---|
| 1089 |   UCHAR  Type : 2;
 | 
|---|
| 1090 |   UCHAR  Shared : 1;
 | 
|---|
| 1091 |   UCHAR  Reserved1 : 1;
 | 
|---|
| 1092 |   UCHAR  MoreEntries : 1;
 | 
|---|
| 1093 | } EISA_MEMORY_TYPE, *PEISA_MEMORY_TYPE;
 | 
|---|
| 1094 | 
 | 
|---|
| 1095 | #include <pshpack1.h>
 | 
|---|
| 1096 | typedef struct _EISA_MEMORY_CONFIGURATION {
 | 
|---|
| 1097 |   EISA_MEMORY_TYPE  ConfigurationByte;
 | 
|---|
| 1098 |   UCHAR  DataSize;
 | 
|---|
| 1099 |   USHORT  AddressLowWord;
 | 
|---|
| 1100 |   UCHAR  AddressHighByte;
 | 
|---|
| 1101 |   USHORT  MemorySize;
 | 
|---|
| 1102 | } EISA_MEMORY_CONFIGURATION, *PEISA_MEMORY_CONFIGURATION;
 | 
|---|
| 1103 | #include <poppack.h>
 | 
|---|
| 1104 | 
 | 
|---|
| 1105 | typedef struct _EISA_IRQ_DESCRIPTOR {
 | 
|---|
| 1106 |   UCHAR  Interrupt : 4;
 | 
|---|
| 1107 |   UCHAR  Reserved : 1;
 | 
|---|
| 1108 |   UCHAR  LevelTriggered : 1;
 | 
|---|
| 1109 |   UCHAR  Shared : 1;
 | 
|---|
| 1110 |   UCHAR  MoreEntries : 1;
 | 
|---|
| 1111 | } EISA_IRQ_DESCRIPTOR, *PEISA_IRQ_DESCRIPTOR;
 | 
|---|
| 1112 | 
 | 
|---|
| 1113 | typedef struct _EISA_IRQ_CONFIGURATION {
 | 
|---|
| 1114 |   EISA_IRQ_DESCRIPTOR  ConfigurationByte;
 | 
|---|
| 1115 |   UCHAR  Reserved;
 | 
|---|
| 1116 | } EISA_IRQ_CONFIGURATION, *PEISA_IRQ_CONFIGURATION;
 | 
|---|
| 1117 | 
 | 
|---|
| 1118 | typedef struct _DMA_CONFIGURATION_BYTE0 {
 | 
|---|
| 1119 |   UCHAR Channel : 3;
 | 
|---|
| 1120 |   UCHAR Reserved : 3;
 | 
|---|
| 1121 |   UCHAR Shared : 1;
 | 
|---|
| 1122 |   UCHAR MoreEntries : 1;
 | 
|---|
| 1123 | } DMA_CONFIGURATION_BYTE0;
 | 
|---|
| 1124 | 
 | 
|---|
| 1125 | typedef struct _DMA_CONFIGURATION_BYTE1 {
 | 
|---|
| 1126 |   UCHAR  Reserved0 : 2;
 | 
|---|
| 1127 |   UCHAR  TransferSize : 2;
 | 
|---|
| 1128 |   UCHAR  Timing : 2;
 | 
|---|
| 1129 |   UCHAR  Reserved1 : 2;
 | 
|---|
| 1130 | } DMA_CONFIGURATION_BYTE1;
 | 
|---|
| 1131 | 
 | 
|---|
| 1132 | typedef struct _EISA_DMA_CONFIGURATION {
 | 
|---|
| 1133 |   DMA_CONFIGURATION_BYTE0  ConfigurationByte0;
 | 
|---|
| 1134 |   DMA_CONFIGURATION_BYTE1  ConfigurationByte1;
 | 
|---|
| 1135 | } EISA_DMA_CONFIGURATION, *PEISA_DMA_CONFIGURATION;
 | 
|---|
| 1136 | 
 | 
|---|
| 1137 | #include <pshpack1.h>
 | 
|---|
| 1138 | typedef struct _EISA_PORT_DESCRIPTOR {
 | 
|---|
| 1139 |   UCHAR  NumberPorts : 5;
 | 
|---|
| 1140 |   UCHAR  Reserved : 1;
 | 
|---|
| 1141 |   UCHAR  Shared : 1;
 | 
|---|
| 1142 |   UCHAR  MoreEntries : 1;
 | 
|---|
| 1143 | } EISA_PORT_DESCRIPTOR, *PEISA_PORT_DESCRIPTOR;
 | 
|---|
| 1144 | 
 | 
|---|
| 1145 | typedef struct _EISA_PORT_CONFIGURATION {
 | 
|---|
| 1146 |   EISA_PORT_DESCRIPTOR  Configuration;
 | 
|---|
| 1147 |   USHORT  PortAddress;
 | 
|---|
| 1148 | } EISA_PORT_CONFIGURATION, *PEISA_PORT_CONFIGURATION;
 | 
|---|
| 1149 | #include <poppack.h>
 | 
|---|
| 1150 | 
 | 
|---|
| 1151 | typedef struct _CM_EISA_FUNCTION_INFORMATION {
 | 
|---|
| 1152 |   ULONG  CompressedId;
 | 
|---|
| 1153 |   UCHAR  IdSlotFlags1;
 | 
|---|
| 1154 |   UCHAR  IdSlotFlags2;
 | 
|---|
| 1155 |   UCHAR  MinorRevision;
 | 
|---|
| 1156 |   UCHAR  MajorRevision;
 | 
|---|
| 1157 |   UCHAR  Selections[26];
 | 
|---|
| 1158 |   UCHAR  FunctionFlags;
 | 
|---|
| 1159 |   UCHAR  TypeString[80];
 | 
|---|
| 1160 |   EISA_MEMORY_CONFIGURATION  EisaMemory[9];
 | 
|---|
| 1161 |   EISA_IRQ_CONFIGURATION  EisaIrq[7];
 | 
|---|
| 1162 |   EISA_DMA_CONFIGURATION  EisaDma[4];
 | 
|---|
| 1163 |   EISA_PORT_CONFIGURATION  EisaPort[20];
 | 
|---|
| 1164 |   UCHAR  InitializationData[60];
 | 
|---|
| 1165 | } CM_EISA_FUNCTION_INFORMATION, *PCM_EISA_FUNCTION_INFORMATION;
 | 
|---|
| 1166 | 
 | 
|---|
| 1167 | /* CM_EISA_FUNCTION_INFORMATION.FunctionFlags */
 | 
|---|
| 1168 | 
 | 
|---|
| 1169 | #define EISA_FUNCTION_ENABLED           0x80
 | 
|---|
| 1170 | #define EISA_FREE_FORM_DATA             0x40
 | 
|---|
| 1171 | #define EISA_HAS_PORT_INIT_ENTRY        0x20
 | 
|---|
| 1172 | #define EISA_HAS_PORT_RANGE             0x10
 | 
|---|
| 1173 | #define EISA_HAS_DMA_ENTRY              0x08
 | 
|---|
| 1174 | #define EISA_HAS_IRQ_ENTRY              0x04
 | 
|---|
| 1175 | #define EISA_HAS_MEMORY_ENTRY           0x02
 | 
|---|
| 1176 | #define EISA_HAS_TYPE_ENTRY             0x01
 | 
|---|
| 1177 | #define EISA_HAS_INFORMATION \
 | 
|---|
| 1178 |   (EISA_HAS_PORT_RANGE + EISA_HAS_DMA_ENTRY + EISA_HAS_IRQ_ENTRY \
 | 
|---|
| 1179 |   + EISA_HAS_MEMORY_ENTRY + EISA_HAS_TYPE_ENTRY)
 | 
|---|
| 1180 | 
 | 
|---|
| 1181 | typedef struct _CM_EISA_SLOT_INFORMATION {
 | 
|---|
| 1182 |   UCHAR  ReturnCode;
 | 
|---|
| 1183 |   UCHAR  ReturnFlags;
 | 
|---|
| 1184 |   UCHAR  MajorRevision;
 | 
|---|
| 1185 |   UCHAR  MinorRevision;
 | 
|---|
| 1186 |   USHORT  Checksum;
 | 
|---|
| 1187 |   UCHAR  NumberFunctions;
 | 
|---|
| 1188 |   UCHAR  FunctionInformation;
 | 
|---|
| 1189 |   ULONG  CompressedId;
 | 
|---|
| 1190 | } CM_EISA_SLOT_INFORMATION, *PCM_EISA_SLOT_INFORMATION;
 | 
|---|
| 1191 | 
 | 
|---|
| 1192 | /* CM_EISA_SLOT_INFORMATION.ReturnCode */
 | 
|---|
| 1193 | 
 | 
|---|
| 1194 | #define EISA_INVALID_SLOT               0x80
 | 
|---|
| 1195 | #define EISA_INVALID_FUNCTION           0x81
 | 
|---|
| 1196 | #define EISA_INVALID_CONFIGURATION      0x82
 | 
|---|
| 1197 | #define EISA_EMPTY_SLOT                 0x83
 | 
|---|
| 1198 | #define EISA_INVALID_BIOS_CALL          0x86
 | 
|---|
| 1199 | 
 | 
|---|
| 1200 | typedef struct _CM_FLOPPY_DEVICE_DATA {
 | 
|---|
| 1201 |   USHORT  Version;
 | 
|---|
| 1202 |   USHORT  Revision;
 | 
|---|
| 1203 |   CHAR  Size[8];
 | 
|---|
| 1204 |   ULONG  MaxDensity;
 | 
|---|
| 1205 |   ULONG  MountDensity;
 | 
|---|
| 1206 |   UCHAR  StepRateHeadUnloadTime;
 | 
|---|
| 1207 |   UCHAR  HeadLoadTime;
 | 
|---|
| 1208 |   UCHAR  MotorOffTime;
 | 
|---|
| 1209 |   UCHAR  SectorLengthCode;
 | 
|---|
| 1210 |   UCHAR  SectorPerTrack;
 | 
|---|
| 1211 |   UCHAR  ReadWriteGapLength;
 | 
|---|
| 1212 |   UCHAR  DataTransferLength;
 | 
|---|
| 1213 |   UCHAR  FormatGapLength;
 | 
|---|
| 1214 |   UCHAR  FormatFillCharacter;
 | 
|---|
| 1215 |   UCHAR  HeadSettleTime;
 | 
|---|
| 1216 |   UCHAR  MotorSettleTime;
 | 
|---|
| 1217 |   UCHAR  MaximumTrackValue;
 | 
|---|
| 1218 |   UCHAR  DataTransferRate;
 | 
|---|
| 1219 | } CM_FLOPPY_DEVICE_DATA, *PCM_FLOPPY_DEVICE_DATA;
 | 
|---|
| 1220 | 
 | 
|---|
| 1221 | typedef enum _INTERFACE_TYPE {
 | 
|---|
| 1222 |   InterfaceTypeUndefined = -1,
 | 
|---|
| 1223 |   Internal,
 | 
|---|
| 1224 |   Isa,
 | 
|---|
| 1225 |   Eisa,
 | 
|---|
| 1226 |   MicroChannel,
 | 
|---|
| 1227 |   TurboChannel,
 | 
|---|
| 1228 |   PCIBus,
 | 
|---|
| 1229 |   VMEBus,
 | 
|---|
| 1230 |   NuBus,
 | 
|---|
| 1231 |   PCMCIABus,
 | 
|---|
| 1232 |   CBus,
 | 
|---|
| 1233 |   MPIBus,
 | 
|---|
| 1234 |   MPSABus,
 | 
|---|
| 1235 |   ProcessorInternal,
 | 
|---|
| 1236 |   InternalPowerBus,
 | 
|---|
| 1237 |   PNPISABus,
 | 
|---|
| 1238 |   PNPBus,
 | 
|---|
| 1239 |   MaximumInterfaceType
 | 
|---|
| 1240 | } INTERFACE_TYPE, *PINTERFACE_TYPE;
 | 
|---|
| 1241 | 
 | 
|---|
| 1242 | typedef struct _PNP_BUS_INFORMATION {
 | 
|---|
| 1243 |   GUID  BusTypeGuid;
 | 
|---|
| 1244 |   INTERFACE_TYPE  LegacyBusType;
 | 
|---|
| 1245 |   ULONG  BusNumber;
 | 
|---|
| 1246 | } PNP_BUS_INFORMATION, *PPNP_BUS_INFORMATION;
 | 
|---|
| 1247 | 
 | 
|---|
| 1248 | #include <pshpack1.h>
 | 
|---|
| 1249 | typedef struct _CM_PARTIAL_RESOURCE_DESCRIPTOR {
 | 
|---|
| 1250 |   UCHAR Type;
 | 
|---|
| 1251 |   UCHAR ShareDisposition;
 | 
|---|
| 1252 |   USHORT Flags;
 | 
|---|
| 1253 |   union {
 | 
|---|
| 1254 |     struct {
 | 
|---|
| 1255 |       PHYSICAL_ADDRESS Start;
 | 
|---|
| 1256 |       ULONG Length;
 | 
|---|
| 1257 |     } Generic;
 | 
|---|
| 1258 |     struct {
 | 
|---|
| 1259 |       PHYSICAL_ADDRESS Start;
 | 
|---|
| 1260 |       ULONG Length;
 | 
|---|
| 1261 |     } Port;
 | 
|---|
| 1262 |     struct {
 | 
|---|
| 1263 |       ULONG Level;
 | 
|---|
| 1264 |       ULONG Vector;
 | 
|---|
| 1265 |       ULONG Affinity;
 | 
|---|
| 1266 |     } Interrupt;
 | 
|---|
| 1267 |     struct {
 | 
|---|
| 1268 |       PHYSICAL_ADDRESS Start;
 | 
|---|
| 1269 |       ULONG Length;
 | 
|---|
| 1270 |     } Memory;
 | 
|---|
| 1271 |     struct {
 | 
|---|
| 1272 |       ULONG Channel;
 | 
|---|
| 1273 |       ULONG Port;
 | 
|---|
| 1274 |       ULONG Reserved1;
 | 
|---|
| 1275 |     } Dma;
 | 
|---|
| 1276 |     struct {
 | 
|---|
| 1277 |       ULONG Data[3];
 | 
|---|
| 1278 |     } DevicePrivate;
 | 
|---|
| 1279 |     struct {
 | 
|---|
| 1280 |       ULONG Start;
 | 
|---|
| 1281 |       ULONG Length;
 | 
|---|
| 1282 |       ULONG Reserved;
 | 
|---|
| 1283 |     } BusNumber;
 | 
|---|
| 1284 |     struct {
 | 
|---|
| 1285 |       ULONG DataSize;
 | 
|---|
| 1286 |       ULONG Reserved1;
 | 
|---|
| 1287 |       ULONG Reserved2;
 | 
|---|
| 1288 |     } DeviceSpecificData;
 | 
|---|
| 1289 |   } u;
 | 
|---|
| 1290 | } CM_PARTIAL_RESOURCE_DESCRIPTOR, *PCM_PARTIAL_RESOURCE_DESCRIPTOR;
 | 
|---|
| 1291 | 
 | 
|---|
| 1292 | /* CM_PARTIAL_RESOURCE_DESCRIPTOR.Type */
 | 
|---|
| 1293 | 
 | 
|---|
| 1294 | #define CmResourceTypeNull                0
 | 
|---|
| 1295 | #define CmResourceTypePort                1
 | 
|---|
| 1296 | #define CmResourceTypeInterrupt           2
 | 
|---|
| 1297 | #define CmResourceTypeMemory              3
 | 
|---|
| 1298 | #define CmResourceTypeDma                 4
 | 
|---|
| 1299 | #define CmResourceTypeDeviceSpecific      5
 | 
|---|
| 1300 | #define CmResourceTypeBusNumber           6
 | 
|---|
| 1301 | #define CmResourceTypeMaximum             7
 | 
|---|
| 1302 | #define CmResourceTypeNonArbitrated     128
 | 
|---|
| 1303 | #define CmResourceTypeConfigData        128
 | 
|---|
| 1304 | #define CmResourceTypeDevicePrivate     129
 | 
|---|
| 1305 | #define CmResourceTypePcCardConfig      130
 | 
|---|
| 1306 | #define CmResourceTypeMfCardConfig      131
 | 
|---|
| 1307 | 
 | 
|---|
| 1308 | /* CM_PARTIAL_RESOURCE_DESCRIPTOR.ShareDisposition */
 | 
|---|
| 1309 | 
 | 
|---|
| 1310 | typedef enum _CM_SHARE_DISPOSITION {
 | 
|---|
| 1311 |   CmResourceShareUndetermined,
 | 
|---|
| 1312 |   CmResourceShareDeviceExclusive,
 | 
|---|
| 1313 |   CmResourceShareDriverExclusive,
 | 
|---|
| 1314 |   CmResourceShareShared
 | 
|---|
| 1315 | } CM_SHARE_DISPOSITION;
 | 
|---|
| 1316 | 
 | 
|---|
| 1317 | /* CM_PARTIAL_RESOURCE_DESCRIPTOR.Flags if Type = CmResourceTypePort */
 | 
|---|
| 1318 | 
 | 
|---|
| 1319 | #define CM_RESOURCE_PORT_MEMORY           0x0000
 | 
|---|
| 1320 | #define CM_RESOURCE_PORT_IO               0x0001
 | 
|---|
| 1321 | #define CM_RESOURCE_PORT_10_BIT_DECODE    0x0004
 | 
|---|
| 1322 | #define CM_RESOURCE_PORT_12_BIT_DECODE    0x0008
 | 
|---|
| 1323 | #define CM_RESOURCE_PORT_16_BIT_DECODE    0x0010
 | 
|---|
| 1324 | #define CM_RESOURCE_PORT_POSITIVE_DECODE  0x0020
 | 
|---|
| 1325 | #define CM_RESOURCE_PORT_PASSIVE_DECODE   0x0040
 | 
|---|
| 1326 | #define CM_RESOURCE_PORT_WINDOW_DECODE    0x0080
 | 
|---|
| 1327 | 
 | 
|---|
| 1328 | /* CM_PARTIAL_RESOURCE_DESCRIPTOR.Flags if Type = CmResourceTypeInterrupt */
 | 
|---|
| 1329 | 
 | 
|---|
| 1330 | #define CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE 0x0000
 | 
|---|
| 1331 | #define CM_RESOURCE_INTERRUPT_LATCHED         0x0001
 | 
|---|
| 1332 | 
 | 
|---|
| 1333 | /* CM_PARTIAL_RESOURCE_DESCRIPTOR.Flags if Type = CmResourceTypeMemory */
 | 
|---|
| 1334 | 
 | 
|---|
| 1335 | #define CM_RESOURCE_MEMORY_READ_WRITE     0x0000
 | 
|---|
| 1336 | #define CM_RESOURCE_MEMORY_READ_ONLY      0x0001
 | 
|---|
| 1337 | #define CM_RESOURCE_MEMORY_WRITE_ONLY     0x0002
 | 
|---|
| 1338 | #define CM_RESOURCE_MEMORY_PREFETCHABLE   0x0004
 | 
|---|
| 1339 | #define CM_RESOURCE_MEMORY_COMBINEDWRITE  0x0008
 | 
|---|
| 1340 | #define CM_RESOURCE_MEMORY_24             0x0010
 | 
|---|
| 1341 | #define CM_RESOURCE_MEMORY_CACHEABLE      0x0020
 | 
|---|
| 1342 | 
 | 
|---|
| 1343 | /* CM_PARTIAL_RESOURCE_DESCRIPTOR.Flags if Type = CmResourceTypeDma */
 | 
|---|
| 1344 | 
 | 
|---|
| 1345 | #define CM_RESOURCE_DMA_8                 0x0000
 | 
|---|
| 1346 | #define CM_RESOURCE_DMA_16                0x0001
 | 
|---|
| 1347 | #define CM_RESOURCE_DMA_32                0x0002
 | 
|---|
| 1348 | #define CM_RESOURCE_DMA_8_AND_16          0x0004
 | 
|---|
| 1349 | #define CM_RESOURCE_DMA_BUS_MASTER        0x0008
 | 
|---|
| 1350 | #define CM_RESOURCE_DMA_TYPE_A            0x0010
 | 
|---|
| 1351 | #define CM_RESOURCE_DMA_TYPE_B            0x0020
 | 
|---|
| 1352 | #define CM_RESOURCE_DMA_TYPE_F            0x0040
 | 
|---|
| 1353 | 
 | 
|---|
| 1354 | typedef struct _CM_PARTIAL_RESOURCE_LIST {
 | 
|---|
| 1355 |   USHORT  Version;
 | 
|---|
| 1356 |   USHORT  Revision;
 | 
|---|
| 1357 |   ULONG  Count;
 | 
|---|
| 1358 |   CM_PARTIAL_RESOURCE_DESCRIPTOR PartialDescriptors[1];
 | 
|---|
| 1359 | } CM_PARTIAL_RESOURCE_LIST, *PCM_PARTIAL_RESOURCE_LIST;
 | 
|---|
| 1360 | 
 | 
|---|
| 1361 | typedef struct _CM_FULL_RESOURCE_DESCRIPTOR {
 | 
|---|
| 1362 |   INTERFACE_TYPE  InterfaceType;
 | 
|---|
| 1363 |   ULONG  BusNumber;
 | 
|---|
| 1364 |   CM_PARTIAL_RESOURCE_LIST  PartialResourceList;
 | 
|---|
| 1365 | } CM_FULL_RESOURCE_DESCRIPTOR, *PCM_FULL_RESOURCE_DESCRIPTOR;
 | 
|---|
| 1366 | 
 | 
|---|
| 1367 | typedef struct _CM_RESOURCE_LIST {
 | 
|---|
| 1368 |   ULONG  Count;
 | 
|---|
| 1369 |   CM_FULL_RESOURCE_DESCRIPTOR  List[1];
 | 
|---|
| 1370 | } CM_RESOURCE_LIST, *PCM_RESOURCE_LIST;
 | 
|---|
| 1371 | 
 | 
|---|
| 1372 | typedef struct _CM_INT13_DRIVE_PARAMETER {
 | 
|---|
| 1373 |   USHORT  DriveSelect;
 | 
|---|
| 1374 |   ULONG  MaxCylinders;
 | 
|---|
| 1375 |   USHORT  SectorsPerTrack;
 | 
|---|
| 1376 |   USHORT  MaxHeads;
 | 
|---|
| 1377 |   USHORT  NumberDrives;
 | 
|---|
| 1378 | } CM_INT13_DRIVE_PARAMETER, *PCM_INT13_DRIVE_PARAMETER;
 | 
|---|
| 1379 | #include <poppack.h>
 | 
|---|
| 1380 | 
 | 
|---|
| 1381 | typedef struct _CM_KEYBOARD_DEVICE_DATA {
 | 
|---|
| 1382 |   USHORT  Version;
 | 
|---|
| 1383 |   USHORT  Revision;
 | 
|---|
| 1384 |   UCHAR  Type;
 | 
|---|
| 1385 |   UCHAR  Subtype;
 | 
|---|
| 1386 |   USHORT  KeyboardFlags;
 | 
|---|
| 1387 | } CM_KEYBOARD_DEVICE_DATA, *PCM_KEYBOARD_DEVICE_DATA;
 | 
|---|
| 1388 | 
 | 
|---|
| 1389 | #define KEYBOARD_INSERT_ON                0x80
 | 
|---|
| 1390 | #define KEYBOARD_CAPS_LOCK_ON             0x40
 | 
|---|
| 1391 | #define KEYBOARD_NUM_LOCK_ON              0x20
 | 
|---|
| 1392 | #define KEYBOARD_SCROLL_LOCK_ON           0x10
 | 
|---|
| 1393 | #define KEYBOARD_ALT_KEY_DOWN             0x08
 | 
|---|
| 1394 | #define KEYBOARD_CTRL_KEY_DOWN            0x04
 | 
|---|
| 1395 | #define KEYBOARD_LEFT_SHIFT_DOWN          0x02
 | 
|---|
| 1396 | #define KEYBOARD_RIGHT_SHIFT_DOWN         0x01
 | 
|---|
| 1397 | 
 | 
|---|
| 1398 | typedef struct _CM_MCA_POS_DATA {
 | 
|---|
| 1399 |   USHORT  AdapterId;
 | 
|---|
| 1400 |   UCHAR  PosData1;
 | 
|---|
| 1401 |   UCHAR  PosData2;
 | 
|---|
| 1402 |   UCHAR  PosData3;
 | 
|---|
| 1403 |   UCHAR  PosData4;
 | 
|---|
| 1404 | } CM_MCA_POS_DATA, *PCM_MCA_POS_DATA;
 | 
|---|
| 1405 | 
 | 
|---|
| 1406 | typedef struct CM_Power_Data_s {
 | 
|---|
| 1407 |   ULONG  PD_Size;
 | 
|---|
| 1408 |   DEVICE_POWER_STATE  PD_MostRecentPowerState;
 | 
|---|
| 1409 |   ULONG  PD_Capabilities;
 | 
|---|
| 1410 |   ULONG  PD_D1Latency;
 | 
|---|
| 1411 |   ULONG  PD_D2Latency;
 | 
|---|
| 1412 |   ULONG  PD_D3Latency;
 | 
|---|
| 1413 |   DEVICE_POWER_STATE  PD_PowerStateMapping[PowerSystemMaximum];
 | 
|---|
| 1414 | } CM_POWER_DATA, *PCM_POWER_DATA;
 | 
|---|
| 1415 | 
 | 
|---|
| 1416 | #define PDCAP_D0_SUPPORTED                0x00000001
 | 
|---|
| 1417 | #define PDCAP_D1_SUPPORTED                0x00000002
 | 
|---|
| 1418 | #define PDCAP_D2_SUPPORTED                0x00000004
 | 
|---|
| 1419 | #define PDCAP_D3_SUPPORTED                0x00000008
 | 
|---|
| 1420 | #define PDCAP_WAKE_FROM_D0_SUPPORTED      0x00000010
 | 
|---|
| 1421 | #define PDCAP_WAKE_FROM_D1_SUPPORTED      0x00000020
 | 
|---|
| 1422 | #define PDCAP_WAKE_FROM_D2_SUPPORTED      0x00000040
 | 
|---|
| 1423 | #define PDCAP_WAKE_FROM_D3_SUPPORTED      0x00000080
 | 
|---|
| 1424 | #define PDCAP_WARM_EJECT_SUPPORTED        0x00000100
 | 
|---|
| 1425 | 
 | 
|---|
| 1426 | typedef struct _CM_SCSI_DEVICE_DATA {
 | 
|---|
| 1427 |   USHORT  Version;
 | 
|---|
| 1428 |   USHORT  Revision;
 | 
|---|
| 1429 |   UCHAR  HostIdentifier;
 | 
|---|
| 1430 | } CM_SCSI_DEVICE_DATA, *PCM_SCSI_DEVICE_DATA;
 | 
|---|
| 1431 | 
 | 
|---|
| 1432 | typedef struct _CM_SERIAL_DEVICE_DATA {
 | 
|---|
| 1433 |   USHORT  Version;
 | 
|---|
| 1434 |   USHORT  Revision;
 | 
|---|
| 1435 |   ULONG  BaudClock;
 | 
|---|
| 1436 | } CM_SERIAL_DEVICE_DATA, *PCM_SERIAL_DEVICE_DATA;
 | 
|---|
| 1437 | 
 | 
|---|
| 1438 | /* IO_RESOURCE_DESCRIPTOR.Option */
 | 
|---|
| 1439 | 
 | 
|---|
| 1440 | #define IO_RESOURCE_PREFERRED             0x01
 | 
|---|
| 1441 | #define IO_RESOURCE_DEFAULT               0x02
 | 
|---|
| 1442 | #define IO_RESOURCE_ALTERNATIVE           0x08
 | 
|---|
| 1443 | 
 | 
|---|
| 1444 | typedef struct _IO_RESOURCE_DESCRIPTOR {
 | 
|---|
| 1445 |   UCHAR  Option;
 | 
|---|
| 1446 |   UCHAR  Type;
 | 
|---|
| 1447 |   UCHAR  ShareDisposition;
 | 
|---|
| 1448 |   UCHAR  Spare1;
 | 
|---|
| 1449 |   USHORT  Flags;
 | 
|---|
| 1450 |   USHORT  Spare2;
 | 
|---|
| 1451 |   union {
 | 
|---|
| 1452 |     struct {
 | 
|---|
| 1453 |       ULONG  Length;
 | 
|---|
| 1454 |       ULONG  Alignment;
 | 
|---|
| 1455 |       PHYSICAL_ADDRESS  MinimumAddress;
 | 
|---|
| 1456 |       PHYSICAL_ADDRESS  MaximumAddress;
 | 
|---|
| 1457 |     } Port;
 | 
|---|
| 1458 |     struct {
 | 
|---|
| 1459 |       ULONG  Length;
 | 
|---|
| 1460 |       ULONG  Alignment;
 | 
|---|
| 1461 |       PHYSICAL_ADDRESS  MinimumAddress;
 | 
|---|
| 1462 |       PHYSICAL_ADDRESS  MaximumAddress;
 | 
|---|
| 1463 |     } Memory;
 | 
|---|
| 1464 |     struct {
 | 
|---|
| 1465 |       ULONG  MinimumVector;
 | 
|---|
| 1466 |       ULONG  MaximumVector;
 | 
|---|
| 1467 |     } Interrupt;
 | 
|---|
| 1468 |     struct {
 | 
|---|
| 1469 |       ULONG  MinimumChannel;
 | 
|---|
| 1470 |       ULONG  MaximumChannel;
 | 
|---|
| 1471 |     } Dma;
 | 
|---|
| 1472 |     struct {
 | 
|---|
| 1473 |       ULONG  Length;
 | 
|---|
| 1474 |       ULONG  Alignment;
 | 
|---|
| 1475 |       PHYSICAL_ADDRESS  MinimumAddress;
 | 
|---|
| 1476 |       PHYSICAL_ADDRESS  MaximumAddress;
 | 
|---|
| 1477 |     } Generic;
 | 
|---|
| 1478 |     struct {
 | 
|---|
| 1479 |       ULONG  Data[3];
 | 
|---|
| 1480 |     } DevicePrivate;
 | 
|---|
| 1481 |     struct {
 | 
|---|
| 1482 |       ULONG  Length;
 | 
|---|
| 1483 |       ULONG  MinBusNumber;
 | 
|---|
| 1484 |       ULONG  MaxBusNumber;
 | 
|---|
| 1485 |       ULONG  Reserved;
 | 
|---|
| 1486 |     } BusNumber;
 | 
|---|
| 1487 |     struct {
 | 
|---|
| 1488 |       ULONG  Priority;
 | 
|---|
| 1489 |       ULONG  Reserved1;
 | 
|---|
| 1490 |       ULONG  Reserved2;
 | 
|---|
| 1491 |     } ConfigData;
 | 
|---|
| 1492 |   } u;
 | 
|---|
| 1493 | } IO_RESOURCE_DESCRIPTOR, *PIO_RESOURCE_DESCRIPTOR;
 | 
|---|
| 1494 | 
 | 
|---|
| 1495 | typedef struct _IO_RESOURCE_LIST {
 | 
|---|
| 1496 |   USHORT  Version;
 | 
|---|
| 1497 |   USHORT  Revision;
 | 
|---|
| 1498 |   ULONG  Count;
 | 
|---|
| 1499 |   IO_RESOURCE_DESCRIPTOR  Descriptors[1];
 | 
|---|
| 1500 | } IO_RESOURCE_LIST, *PIO_RESOURCE_LIST;
 | 
|---|
| 1501 | 
 | 
|---|
| 1502 | typedef struct _IO_RESOURCE_REQUIREMENTS_LIST {
 | 
|---|
| 1503 |   ULONG  ListSize;
 | 
|---|
| 1504 |   INTERFACE_TYPE  InterfaceType;
 | 
|---|
| 1505 |   ULONG  BusNumber;
 | 
|---|
| 1506 |   ULONG  SlotNumber;
 | 
|---|
| 1507 |   ULONG  Reserved[3];
 | 
|---|
| 1508 |   ULONG  AlternativeLists;
 | 
|---|
| 1509 |   IO_RESOURCE_LIST  List[1];
 | 
|---|
| 1510 | } IO_RESOURCE_REQUIREMENTS_LIST, *PIO_RESOURCE_REQUIREMENTS_LIST;
 | 
|---|
| 1511 | 
 | 
|---|
| 1512 | typedef struct _CONTROLLER_OBJECT {
 | 
|---|
| 1513 |   CSHORT  Type;
 | 
|---|
| 1514 |   CSHORT  Size;
 | 
|---|
| 1515 |   PVOID  ControllerExtension;
 | 
|---|
| 1516 |   KDEVICE_QUEUE  DeviceWaitQueue;
 | 
|---|
| 1517 |   ULONG  Spare1;
 | 
|---|
| 1518 |   LARGE_INTEGER  Spare2;
 | 
|---|
| 1519 | } CONTROLLER_OBJECT, *PCONTROLLER_OBJECT;
 | 
|---|
| 1520 | 
 | 
|---|
| 1521 | typedef enum _DMA_WIDTH {
 | 
|---|
| 1522 |   Width8Bits,
 | 
|---|
| 1523 |   Width16Bits,
 | 
|---|
| 1524 |   Width32Bits,
 | 
|---|
| 1525 |   MaximumDmaWidth
 | 
|---|
| 1526 | } DMA_WIDTH, *PDMA_WIDTH;
 | 
|---|
| 1527 | 
 | 
|---|
| 1528 | typedef enum _DMA_SPEED {
 | 
|---|
| 1529 |   Compatible,
 | 
|---|
| 1530 |   TypeA,
 | 
|---|
| 1531 |   TypeB,
 | 
|---|
| 1532 |   TypeC,
 | 
|---|
| 1533 |   TypeF,
 | 
|---|
| 1534 |   MaximumDmaSpeed
 | 
|---|
| 1535 | } DMA_SPEED, *PDMA_SPEED;
 | 
|---|
| 1536 | 
 | 
|---|
| 1537 | /* DEVICE_DESCRIPTION.Version */
 | 
|---|
| 1538 | 
 | 
|---|
| 1539 | #define DEVICE_DESCRIPTION_VERSION        0x0000
 | 
|---|
| 1540 | #define DEVICE_DESCRIPTION_VERSION1       0x0001
 | 
|---|
| 1541 | #define DEVICE_DESCRIPTION_VERSION2       0x0002
 | 
|---|
| 1542 | 
 | 
|---|
| 1543 | typedef struct _DEVICE_DESCRIPTION {
 | 
|---|
| 1544 |   ULONG  Version;
 | 
|---|
| 1545 |   BOOLEAN  Master;
 | 
|---|
| 1546 |   BOOLEAN  ScatterGather;
 | 
|---|
| 1547 |   BOOLEAN  DemandMode;
 | 
|---|
| 1548 |   BOOLEAN  AutoInitialize;
 | 
|---|
| 1549 |   BOOLEAN  Dma32BitAddresses;
 | 
|---|
| 1550 |   BOOLEAN  IgnoreCount;
 | 
|---|
| 1551 |   BOOLEAN  Reserved1;
 | 
|---|
| 1552 |   BOOLEAN  Dma64BitAddresses;
 | 
|---|
| 1553 |   ULONG  BusNumber; 
 | 
|---|
| 1554 |   ULONG  DmaChannel;
 | 
|---|
| 1555 |   INTERFACE_TYPE  InterfaceType;
 | 
|---|
| 1556 |   DMA_WIDTH  DmaWidth;
 | 
|---|
| 1557 |   DMA_SPEED  DmaSpeed;
 | 
|---|
| 1558 |   ULONG  MaximumLength;
 | 
|---|
| 1559 |   ULONG  DmaPort;
 | 
|---|
| 1560 | } DEVICE_DESCRIPTION, *PDEVICE_DESCRIPTION;
 | 
|---|
| 1561 | 
 | 
|---|
| 1562 | /* VPB.Flags */
 | 
|---|
| 1563 | #define VPB_MOUNTED                       0x0001
 | 
|---|
| 1564 | #define VPB_LOCKED                        0x0002
 | 
|---|
| 1565 | #define VPB_PERSISTENT                    0x0004
 | 
|---|
| 1566 | #define VPB_REMOVE_PENDING                0x0008
 | 
|---|
| 1567 | #define VPB_RAW_MOUNT                     0x0010
 | 
|---|
| 1568 | 
 | 
|---|
| 1569 | #define MAXIMUM_VOLUME_LABEL_LENGTH       (32 * sizeof(WCHAR))
 | 
|---|
| 1570 | 
 | 
|---|
| 1571 | typedef struct _VPB {
 | 
|---|
| 1572 |   CSHORT  Type;
 | 
|---|
| 1573 |   CSHORT  Size;
 | 
|---|
| 1574 |   USHORT  Flags;
 | 
|---|
| 1575 |   USHORT  VolumeLabelLength;
 | 
|---|
| 1576 |   struct _DEVICE_OBJECT  *DeviceObject;
 | 
|---|
| 1577 |   struct _DEVICE_OBJECT  *RealDevice;
 | 
|---|
| 1578 |   ULONG  SerialNumber;
 | 
|---|
| 1579 |   ULONG  ReferenceCount;
 | 
|---|
| 1580 |   WCHAR  VolumeLabel[MAXIMUM_VOLUME_LABEL_LENGTH / sizeof(WCHAR)];
 | 
|---|
| 1581 | } VPB, *PVPB;
 | 
|---|
| 1582 | 
 | 
|---|
| 1583 | /* DEVICE_OBJECT.Flags */
 | 
|---|
| 1584 | 
 | 
|---|
| 1585 | #define DO_VERIFY_VOLUME                  0x00000002      
 | 
|---|
| 1586 | #define DO_BUFFERED_IO                    0x00000004      
 | 
|---|
| 1587 | #define DO_EXCLUSIVE                      0x00000008      
 | 
|---|
| 1588 | #define DO_DIRECT_IO                      0x00000010      
 | 
|---|
| 1589 | #define DO_MAP_IO_BUFFER                  0x00000020      
 | 
|---|
| 1590 | #define DO_DEVICE_HAS_NAME                0x00000040      
 | 
|---|
| 1591 | #define DO_DEVICE_INITIALIZING            0x00000080      
 | 
|---|
| 1592 | #define DO_SYSTEM_BOOT_PARTITION          0x00000100      
 | 
|---|
| 1593 | #define DO_LONG_TERM_REQUESTS             0x00000200      
 | 
|---|
| 1594 | #define DO_NEVER_LAST_DEVICE              0x00000400      
 | 
|---|
| 1595 | #define DO_SHUTDOWN_REGISTERED            0x00000800      
 | 
|---|
| 1596 | #define DO_BUS_ENUMERATED_DEVICE          0x00001000      
 | 
|---|
| 1597 | #define DO_POWER_PAGABLE                  0x00002000      
 | 
|---|
| 1598 | #define DO_POWER_INRUSH                   0x00004000      
 | 
|---|
| 1599 | #define DO_LOW_PRIORITY_FILESYSTEM        0x00010000      
 | 
|---|
| 1600 | 
 | 
|---|
| 1601 | /* DEVICE_OBJECT.Characteristics */
 | 
|---|
| 1602 | 
 | 
|---|
| 1603 | #define FILE_REMOVABLE_MEDIA            0x00000001
 | 
|---|
| 1604 | #define FILE_READ_ONLY_DEVICE           0x00000002
 | 
|---|
| 1605 | #define FILE_FLOPPY_DISKETTE            0x00000004
 | 
|---|
| 1606 | #define FILE_WRITE_ONCE_MEDIA           0x00000008
 | 
|---|
| 1607 | #define FILE_REMOTE_DEVICE              0x00000010
 | 
|---|
| 1608 | #define FILE_DEVICE_IS_MOUNTED          0x00000020
 | 
|---|
| 1609 | #define FILE_VIRTUAL_VOLUME             0x00000040
 | 
|---|
| 1610 | #define FILE_AUTOGENERATED_DEVICE_NAME  0x00000080
 | 
|---|
| 1611 | #define FILE_DEVICE_SECURE_OPEN         0x00000100
 | 
|---|
| 1612 | 
 | 
|---|
| 1613 | /* DEVICE_OBJECT.AlignmentRequirement */
 | 
|---|
| 1614 | 
 | 
|---|
| 1615 | #define FILE_BYTE_ALIGNMENT             0x00000000
 | 
|---|
| 1616 | #define FILE_WORD_ALIGNMENT             0x00000001
 | 
|---|
| 1617 | #define FILE_LONG_ALIGNMENT             0x00000003
 | 
|---|
| 1618 | #define FILE_QUAD_ALIGNMENT             0x00000007
 | 
|---|
| 1619 | #define FILE_OCTA_ALIGNMENT             0x0000000f
 | 
|---|
| 1620 | #define FILE_32_BYTE_ALIGNMENT          0x0000001f
 | 
|---|
| 1621 | #define FILE_64_BYTE_ALIGNMENT          0x0000003f
 | 
|---|
| 1622 | #define FILE_128_BYTE_ALIGNMENT         0x0000007f
 | 
|---|
| 1623 | #define FILE_256_BYTE_ALIGNMENT         0x000000ff
 | 
|---|
| 1624 | #define FILE_512_BYTE_ALIGNMENT         0x000001ff
 | 
|---|
| 1625 | 
 | 
|---|
| 1626 | /* DEVICE_OBJECT.DeviceType */
 | 
|---|
| 1627 | 
 | 
|---|
| 1628 | #define DEVICE_TYPE ULONG
 | 
|---|
| 1629 | 
 | 
|---|
| 1630 | #define FILE_DEVICE_BEEP                  0x00000001
 | 
|---|
| 1631 | #define FILE_DEVICE_CD_ROM                0x00000002
 | 
|---|
| 1632 | #define FILE_DEVICE_CD_ROM_FILE_SYSTEM    0x00000003
 | 
|---|
| 1633 | #define FILE_DEVICE_CONTROLLER            0x00000004
 | 
|---|
| 1634 | #define FILE_DEVICE_DATALINK              0x00000005
 | 
|---|
| 1635 | #define FILE_DEVICE_DFS                   0x00000006
 | 
|---|
| 1636 | #define FILE_DEVICE_DISK                  0x00000007
 | 
|---|
| 1637 | #define FILE_DEVICE_DISK_FILE_SYSTEM      0x00000008
 | 
|---|
| 1638 | #define FILE_DEVICE_FILE_SYSTEM           0x00000009
 | 
|---|
| 1639 | #define FILE_DEVICE_INPORT_PORT           0x0000000a
 | 
|---|
| 1640 | #define FILE_DEVICE_KEYBOARD              0x0000000b
 | 
|---|
| 1641 | #define FILE_DEVICE_MAILSLOT              0x0000000c
 | 
|---|
| 1642 | #define FILE_DEVICE_MIDI_IN               0x0000000d
 | 
|---|
| 1643 | #define FILE_DEVICE_MIDI_OUT              0x0000000e
 | 
|---|
| 1644 | #define FILE_DEVICE_MOUSE                 0x0000000f
 | 
|---|
| 1645 | #define FILE_DEVICE_MULTI_UNC_PROVIDER    0x00000010
 | 
|---|
| 1646 | #define FILE_DEVICE_NAMED_PIPE            0x00000011
 | 
|---|
| 1647 | #define FILE_DEVICE_NETWORK               0x00000012
 | 
|---|
| 1648 | #define FILE_DEVICE_NETWORK_BROWSER       0x00000013
 | 
|---|
| 1649 | #define FILE_DEVICE_NETWORK_FILE_SYSTEM   0x00000014
 | 
|---|
| 1650 | #define FILE_DEVICE_NULL                  0x00000015
 | 
|---|
| 1651 | #define FILE_DEVICE_PARALLEL_PORT         0x00000016
 | 
|---|
| 1652 | #define FILE_DEVICE_PHYSICAL_NETCARD      0x00000017
 | 
|---|
| 1653 | #define FILE_DEVICE_PRINTER               0x00000018
 | 
|---|
| 1654 | #define FILE_DEVICE_SCANNER               0x00000019
 | 
|---|
| 1655 | #define FILE_DEVICE_SERIAL_MOUSE_PORT     0x0000001a
 | 
|---|
| 1656 | #define FILE_DEVICE_SERIAL_PORT           0x0000001b
 | 
|---|
| 1657 | #define FILE_DEVICE_SCREEN                0x0000001c
 | 
|---|
| 1658 | #define FILE_DEVICE_SOUND                 0x0000001d
 | 
|---|
| 1659 | #define FILE_DEVICE_STREAMS               0x0000001e
 | 
|---|
| 1660 | #define FILE_DEVICE_TAPE                  0x0000001f
 | 
|---|
| 1661 | #define FILE_DEVICE_TAPE_FILE_SYSTEM      0x00000020
 | 
|---|
| 1662 | #define FILE_DEVICE_TRANSPORT             0x00000021
 | 
|---|
| 1663 | #define FILE_DEVICE_UNKNOWN               0x00000022
 | 
|---|
| 1664 | #define FILE_DEVICE_VIDEO                 0x00000023
 | 
|---|
| 1665 | #define FILE_DEVICE_VIRTUAL_DISK          0x00000024
 | 
|---|
| 1666 | #define FILE_DEVICE_WAVE_IN               0x00000025
 | 
|---|
| 1667 | #define FILE_DEVICE_WAVE_OUT              0x00000026
 | 
|---|
| 1668 | #define FILE_DEVICE_8042_PORT             0x00000027
 | 
|---|
| 1669 | #define FILE_DEVICE_NETWORK_REDIRECTOR    0x00000028
 | 
|---|
| 1670 | #define FILE_DEVICE_BATTERY               0x00000029
 | 
|---|
| 1671 | #define FILE_DEVICE_BUS_EXTENDER          0x0000002a
 | 
|---|
| 1672 | #define FILE_DEVICE_MODEM                 0x0000002b
 | 
|---|
| 1673 | #define FILE_DEVICE_VDM                   0x0000002c
 | 
|---|
| 1674 | #define FILE_DEVICE_MASS_STORAGE          0x0000002d
 | 
|---|
| 1675 | #define FILE_DEVICE_SMB                   0x0000002e
 | 
|---|
| 1676 | #define FILE_DEVICE_KS                    0x0000002f
 | 
|---|
| 1677 | #define FILE_DEVICE_CHANGER               0x00000030
 | 
|---|
| 1678 | #define FILE_DEVICE_SMARTCARD             0x00000031
 | 
|---|
| 1679 | #define FILE_DEVICE_ACPI                  0x00000032
 | 
|---|
| 1680 | #define FILE_DEVICE_DVD                   0x00000033
 | 
|---|
| 1681 | #define FILE_DEVICE_FULLSCREEN_VIDEO      0x00000034
 | 
|---|
| 1682 | #define FILE_DEVICE_DFS_FILE_SYSTEM       0x00000035
 | 
|---|
| 1683 | #define FILE_DEVICE_DFS_VOLUME            0x00000036
 | 
|---|
| 1684 | #define FILE_DEVICE_SERENUM               0x00000037
 | 
|---|
| 1685 | #define FILE_DEVICE_TERMSRV               0x00000038
 | 
|---|
| 1686 | #define FILE_DEVICE_KSEC                  0x00000039
 | 
|---|
| 1687 | #define FILE_DEVICE_FIPS                              0x0000003a
 | 
|---|
| 1688 | 
 | 
|---|
| 1689 | typedef struct _DEVICE_OBJECT {
 | 
|---|
| 1690 |   CSHORT  Type;
 | 
|---|
| 1691 |   USHORT  Size;
 | 
|---|
| 1692 |   LONG  ReferenceCount;
 | 
|---|
| 1693 |   struct _DRIVER_OBJECT  *DriverObject;
 | 
|---|
| 1694 |   struct _DEVICE_OBJECT  *NextDevice;
 | 
|---|
| 1695 |   struct _DEVICE_OBJECT  *AttachedDevice;
 | 
|---|
| 1696 |   struct _IRP  *CurrentIrp;
 | 
|---|
| 1697 |   PIO_TIMER  Timer;
 | 
|---|
| 1698 |   ULONG  Flags;
 | 
|---|
| 1699 |   ULONG  Characteristics;
 | 
|---|
| 1700 |   PVPB  Vpb;
 | 
|---|
| 1701 |   PVOID  DeviceExtension;
 | 
|---|
| 1702 |   DEVICE_TYPE  DeviceType;
 | 
|---|
| 1703 |   CCHAR  StackSize;
 | 
|---|
| 1704 |   union {
 | 
|---|
| 1705 |     LIST_ENTRY  ListEntry;
 | 
|---|
| 1706 |     WAIT_CONTEXT_BLOCK  Wcb;
 | 
|---|
| 1707 |   } Queue;
 | 
|---|
| 1708 |   ULONG  AlignmentRequirement;
 | 
|---|
| 1709 |   KDEVICE_QUEUE  DeviceQueue;
 | 
|---|
| 1710 |   KDPC  Dpc;
 | 
|---|
| 1711 |   ULONG  ActiveThreadCount;
 | 
|---|
| 1712 |   PSECURITY_DESCRIPTOR  SecurityDescriptor;
 | 
|---|
| 1713 |   KEVENT  DeviceLock;
 | 
|---|
| 1714 |   USHORT  SectorSize;
 | 
|---|
| 1715 |   USHORT  Spare1;
 | 
|---|
| 1716 |   struct _DEVOBJ_EXTENSION  *DeviceObjectExtension;
 | 
|---|
| 1717 |   PVOID  Reserved;
 | 
|---|
| 1718 | } DEVICE_OBJECT;
 | 
|---|
| 1719 | typedef struct _DEVICE_OBJECT *PDEVICE_OBJECT;
 | 
|---|
| 1720 | 
 | 
|---|
| 1721 | typedef enum _DEVICE_RELATION_TYPE {
 | 
|---|
| 1722 |   BusRelations,
 | 
|---|
| 1723 |   EjectionRelations,
 | 
|---|
| 1724 |   PowerRelations,
 | 
|---|
| 1725 |   RemovalRelations,
 | 
|---|
| 1726 |   TargetDeviceRelation,
 | 
|---|
| 1727 |   SingleBusRelations
 | 
|---|
| 1728 | } DEVICE_RELATION_TYPE, *PDEVICE_RELATION_TYPE;
 | 
|---|
| 1729 | 
 | 
|---|
| 1730 | typedef struct _DEVICE_RELATIONS {
 | 
|---|
| 1731 |   ULONG  Count;
 | 
|---|
| 1732 |   PDEVICE_OBJECT Objects[1];
 | 
|---|
| 1733 | } DEVICE_RELATIONS, *PDEVICE_RELATIONS;
 | 
|---|
| 1734 | 
 | 
|---|
| 1735 | typedef struct _SCATTER_GATHER_ELEMENT {
 | 
|---|
| 1736 |   PHYSICAL_ADDRESS  Address;   
 | 
|---|
| 1737 |   ULONG  Length;          
 | 
|---|
| 1738 |   ULONG_PTR  Reserved;
 | 
|---|
| 1739 | } SCATTER_GATHER_ELEMENT, *PSCATTER_GATHER_ELEMENT;
 | 
|---|
| 1740 | 
 | 
|---|
| 1741 | typedef struct _SCATTER_GATHER_LIST {
 | 
|---|
| 1742 |   ULONG  NumberOfElements;
 | 
|---|
| 1743 |   ULONG_PTR  Reserved;
 | 
|---|
| 1744 |   SCATTER_GATHER_ELEMENT  Elements[0];
 | 
|---|
| 1745 | } SCATTER_GATHER_LIST, *PSCATTER_GATHER_LIST;
 | 
|---|
| 1746 | 
 | 
|---|
| 1747 | typedef struct _MDL {
 | 
|---|
| 1748 |   struct _MDL  *Next;
 | 
|---|
| 1749 |   CSHORT  Size;
 | 
|---|
| 1750 |   CSHORT  MdlFlags;
 | 
|---|
| 1751 |   struct _EPROCESS  *Process;
 | 
|---|
| 1752 |   PVOID  MappedSystemVa;
 | 
|---|
| 1753 |   PVOID  StartVa;
 | 
|---|
| 1754 |   ULONG  ByteCount;
 | 
|---|
| 1755 |   ULONG  ByteOffset;
 | 
|---|
| 1756 | } MDL, *PMDL;
 | 
|---|
| 1757 | 
 | 
|---|
| 1758 | #define MDL_MAPPED_TO_SYSTEM_VA           0x0001
 | 
|---|
| 1759 | #define MDL_PAGES_LOCKED                  0x0002
 | 
|---|
| 1760 | #define MDL_SOURCE_IS_NONPAGED_POOL       0x0004
 | 
|---|
| 1761 | #define MDL_ALLOCATED_FIXED_SIZE          0x0008
 | 
|---|
| 1762 | #define MDL_PARTIAL                       0x0010
 | 
|---|
| 1763 | #define MDL_PARTIAL_HAS_BEEN_MAPPED       0x0020
 | 
|---|
| 1764 | #define MDL_IO_PAGE_READ                  0x0040
 | 
|---|
| 1765 | #define MDL_WRITE_OPERATION               0x0080
 | 
|---|
| 1766 | #define MDL_PARENT_MAPPED_SYSTEM_VA       0x0100
 | 
|---|
| 1767 | #define MDL_FREE_EXTRA_PTES               0x0200
 | 
|---|
| 1768 | #define MDL_IO_SPACE                      0x0800
 | 
|---|
| 1769 | #define MDL_NETWORK_HEADER                0x1000
 | 
|---|
| 1770 | #define MDL_MAPPING_CAN_FAIL              0x2000
 | 
|---|
| 1771 | #define MDL_ALLOCATED_MUST_SUCCEED        0x4000
 | 
|---|
| 1772 | 
 | 
|---|
| 1773 | #define MDL_MAPPING_FLAGS ( \
 | 
|---|
| 1774 |   MDL_MAPPED_TO_SYSTEM_VA     | \
 | 
|---|
| 1775 |   MDL_PAGES_LOCKED            | \
 | 
|---|
| 1776 |   MDL_SOURCE_IS_NONPAGED_POOL | \
 | 
|---|
| 1777 |   MDL_PARTIAL_HAS_BEEN_MAPPED | \
 | 
|---|
| 1778 |   MDL_PARENT_MAPPED_SYSTEM_VA | \
 | 
|---|
| 1779 |   MDL_SYSTEM_VA               | \
 | 
|---|
| 1780 |   MDL_IO_SPACE)
 | 
|---|
| 1781 | 
 | 
|---|
| 1782 | typedef VOID DDKAPI
 | 
|---|
| 1783 | (*PPUT_DMA_ADAPTER)(
 | 
|---|
| 1784 |   IN PDMA_ADAPTER  DmaAdapter);
 | 
|---|
| 1785 | 
 | 
|---|
| 1786 | typedef PVOID DDKAPI
 | 
|---|
| 1787 | (*PALLOCATE_COMMON_BUFFER)(
 | 
|---|
| 1788 |   IN PDMA_ADAPTER  DmaAdapter,
 | 
|---|
| 1789 |   IN ULONG  Length,
 | 
|---|
| 1790 |   OUT PPHYSICAL_ADDRESS  LogicalAddress,
 | 
|---|
| 1791 |   IN BOOLEAN  CacheEnabled);
 | 
|---|
| 1792 | 
 | 
|---|
| 1793 | typedef VOID DDKAPI
 | 
|---|
| 1794 | (*PFREE_COMMON_BUFFER)(
 | 
|---|
| 1795 |   IN PDMA_ADAPTER  DmaAdapter,
 | 
|---|
| 1796 |   IN ULONG  Length,
 | 
|---|
| 1797 |   IN PHYSICAL_ADDRESS  LogicalAddress,
 | 
|---|
| 1798 |   IN PVOID  VirtualAddress,
 | 
|---|
| 1799 |   IN BOOLEAN  CacheEnabled);
 | 
|---|
| 1800 | 
 | 
|---|
| 1801 | typedef NTSTATUS DDKAPI
 | 
|---|
| 1802 | (*PALLOCATE_ADAPTER_CHANNEL)(
 | 
|---|
| 1803 |   IN PDMA_ADAPTER  DmaAdapter,
 | 
|---|
| 1804 |   IN PDEVICE_OBJECT  DeviceObject,
 | 
|---|
| 1805 |   IN ULONG  NumberOfMapRegisters,
 | 
|---|
| 1806 |   IN PDRIVER_CONTROL  ExecutionRoutine,
 | 
|---|
| 1807 |   IN PVOID  Context);
 | 
|---|
| 1808 | 
 | 
|---|
| 1809 | typedef BOOLEAN DDKAPI
 | 
|---|
| 1810 | (*PFLUSH_ADAPTER_BUFFERS)(
 | 
|---|
| 1811 |   IN PDMA_ADAPTER  DmaAdapter,
 | 
|---|
| 1812 |   IN PMDL  Mdl,
 | 
|---|
| 1813 |   IN PVOID  MapRegisterBase,
 | 
|---|
| 1814 |   IN PVOID  CurrentVa,
 | 
|---|
| 1815 |   IN ULONG  Length,
 | 
|---|
| 1816 |   IN BOOLEAN  WriteToDevice);
 | 
|---|
| 1817 | 
 | 
|---|
| 1818 | typedef VOID DDKAPI
 | 
|---|
| 1819 | (*PFREE_ADAPTER_CHANNEL)(
 | 
|---|
| 1820 |   IN PDMA_ADAPTER  DmaAdapter);
 | 
|---|
| 1821 | 
 | 
|---|
| 1822 | typedef VOID DDKAPI
 | 
|---|
| 1823 | (*PFREE_MAP_REGISTERS)(
 | 
|---|
| 1824 |   IN PDMA_ADAPTER  DmaAdapter,
 | 
|---|
| 1825 |   PVOID  MapRegisterBase,
 | 
|---|
| 1826 |   ULONG  NumberOfMapRegisters);
 | 
|---|
| 1827 | 
 | 
|---|
| 1828 | typedef PHYSICAL_ADDRESS DDKAPI
 | 
|---|
| 1829 | (*PMAP_TRANSFER)(
 | 
|---|
| 1830 |   IN PDMA_ADAPTER  DmaAdapter,
 | 
|---|
| 1831 |   IN PMDL  Mdl,
 | 
|---|
| 1832 |   IN PVOID  MapRegisterBase,
 | 
|---|
| 1833 |   IN PVOID  CurrentVa,
 | 
|---|
| 1834 |   IN OUT PULONG  Length,
 | 
|---|
| 1835 |   IN BOOLEAN  WriteToDevice);
 | 
|---|
| 1836 | 
 | 
|---|
| 1837 | typedef ULONG DDKAPI
 | 
|---|
| 1838 | (*PGET_DMA_ALIGNMENT)(
 | 
|---|
| 1839 |   IN PDMA_ADAPTER  DmaAdapter);
 | 
|---|
| 1840 | 
 | 
|---|
| 1841 | typedef ULONG DDKAPI
 | 
|---|
| 1842 | (*PREAD_DMA_COUNTER)(
 | 
|---|
| 1843 |   IN PDMA_ADAPTER  DmaAdapter);
 | 
|---|
| 1844 | 
 | 
|---|
| 1845 | typedef NTSTATUS DDKAPI
 | 
|---|
| 1846 | (*PGET_SCATTER_GATHER_LIST)(
 | 
|---|
| 1847 |   IN PDMA_ADAPTER  DmaAdapter,
 | 
|---|
| 1848 |   IN PDEVICE_OBJECT  DeviceObject,
 | 
|---|
| 1849 |   IN PMDL  Mdl,
 | 
|---|
| 1850 |   IN PVOID  CurrentVa,
 | 
|---|
| 1851 |   IN ULONG  Length,
 | 
|---|
| 1852 |   IN PDRIVER_LIST_CONTROL  ExecutionRoutine,
 | 
|---|
| 1853 |   IN PVOID  Context,
 | 
|---|
| 1854 |   IN BOOLEAN  WriteToDevice);
 | 
|---|
| 1855 | 
 | 
|---|
| 1856 | typedef VOID DDKAPI
 | 
|---|
| 1857 | (*PPUT_SCATTER_GATHER_LIST)(
 | 
|---|
| 1858 |   IN PDMA_ADAPTER  DmaAdapter,
 | 
|---|
| 1859 |   IN PSCATTER_GATHER_LIST  ScatterGather,
 | 
|---|
| 1860 |   IN BOOLEAN  WriteToDevice);
 | 
|---|
| 1861 | 
 | 
|---|
| 1862 | typedef NTSTATUS DDKAPI
 | 
|---|
| 1863 | (*PCALCULATE_SCATTER_GATHER_LIST_SIZE)(
 | 
|---|
| 1864 |   IN PDMA_ADAPTER  DmaAdapter,
 | 
|---|
| 1865 |   IN PMDL  Mdl  OPTIONAL,
 | 
|---|
| 1866 |   IN PVOID  CurrentVa,
 | 
|---|
| 1867 |   IN ULONG  Length,
 | 
|---|
| 1868 |   OUT PULONG  ScatterGatherListSize,
 | 
|---|
| 1869 |   OUT PULONG  pNumberOfMapRegisters  OPTIONAL);
 | 
|---|
| 1870 | 
 | 
|---|
| 1871 | typedef NTSTATUS DDKAPI
 | 
|---|
| 1872 | (*PBUILD_SCATTER_GATHER_LIST)(
 | 
|---|
| 1873 |   IN PDMA_ADAPTER  DmaAdapter,
 | 
|---|
| 1874 |   IN PDEVICE_OBJECT  DeviceObject,
 | 
|---|
| 1875 |   IN PMDL  Mdl,
 | 
|---|
| 1876 |   IN PVOID  CurrentVa,
 | 
|---|
| 1877 |   IN ULONG  Length,
 | 
|---|
| 1878 |   IN PDRIVER_LIST_CONTROL  ExecutionRoutine,
 | 
|---|
| 1879 |   IN PVOID  Context,
 | 
|---|
| 1880 |   IN BOOLEAN  WriteToDevice,
 | 
|---|
| 1881 |   IN PVOID  ScatterGatherBuffer,
 | 
|---|
| 1882 |   IN ULONG  ScatterGatherLength);
 | 
|---|
| 1883 | 
 | 
|---|
| 1884 | typedef NTSTATUS DDKAPI
 | 
|---|
| 1885 | (*PBUILD_MDL_FROM_SCATTER_GATHER_LIST)(
 | 
|---|
| 1886 |   IN PDMA_ADAPTER  DmaAdapter,
 | 
|---|
| 1887 |   IN PSCATTER_GATHER_LIST  ScatterGather,
 | 
|---|
| 1888 |   IN PMDL  OriginalMdl,
 | 
|---|
| 1889 |   OUT PMDL  *TargetMdl);
 | 
|---|
| 1890 | 
 | 
|---|
| 1891 | typedef struct _DMA_OPERATIONS {
 | 
|---|
| 1892 |   ULONG  Size;
 | 
|---|
| 1893 |   PPUT_DMA_ADAPTER  PutDmaAdapter;
 | 
|---|
| 1894 |   PALLOCATE_COMMON_BUFFER  AllocateCommonBuffer;
 | 
|---|
| 1895 |   PFREE_COMMON_BUFFER  FreeCommonBuffer;
 | 
|---|
| 1896 |   PALLOCATE_ADAPTER_CHANNEL  AllocateAdapterChannel;
 | 
|---|
| 1897 |   PFLUSH_ADAPTER_BUFFERS  FlushAdapterBuffers;
 | 
|---|
| 1898 |   PFREE_ADAPTER_CHANNEL  FreeAdapterChannel;
 | 
|---|
| 1899 |   PFREE_MAP_REGISTERS  FreeMapRegisters;
 | 
|---|
| 1900 |   PMAP_TRANSFER  MapTransfer;
 | 
|---|
| 1901 |   PGET_DMA_ALIGNMENT  GetDmaAlignment;
 | 
|---|
| 1902 |   PREAD_DMA_COUNTER  ReadDmaCounter;
 | 
|---|
| 1903 |   PGET_SCATTER_GATHER_LIST  GetScatterGatherList;
 | 
|---|
| 1904 |   PPUT_SCATTER_GATHER_LIST  PutScatterGatherList;
 | 
|---|
| 1905 |   PCALCULATE_SCATTER_GATHER_LIST_SIZE  CalculateScatterGatherList;
 | 
|---|
| 1906 |   PBUILD_SCATTER_GATHER_LIST  BuildScatterGatherList;
 | 
|---|
| 1907 |   PBUILD_MDL_FROM_SCATTER_GATHER_LIST  BuildMdlFromScatterGatherList;
 | 
|---|
| 1908 | } DMA_OPERATIONS, *PDMA_OPERATIONS;
 | 
|---|
| 1909 | 
 | 
|---|
| 1910 | typedef struct _DMA_ADAPTER {
 | 
|---|
| 1911 |   USHORT  Version;
 | 
|---|
| 1912 |   USHORT  Size;
 | 
|---|
| 1913 |   PDMA_OPERATIONS  DmaOperations;
 | 
|---|
| 1914 | } DMA_ADAPTER;
 | 
|---|
| 1915 | 
 | 
|---|
| 1916 | typedef enum _FILE_INFORMATION_CLASS {
 | 
|---|
| 1917 |   FileDirectoryInformation = 1,
 | 
|---|
| 1918 |   FileFullDirectoryInformation,
 | 
|---|
| 1919 |   FileBothDirectoryInformation,
 | 
|---|
| 1920 |   FileBasicInformation,
 | 
|---|
| 1921 |   FileStandardInformation,
 | 
|---|
| 1922 |   FileInternalInformation,
 | 
|---|
| 1923 |   FileEaInformation,
 | 
|---|
| 1924 |   FileAccessInformation,
 | 
|---|
| 1925 |   FileNameInformation,
 | 
|---|
| 1926 |   FileRenameInformation,
 | 
|---|
| 1927 |   FileLinkInformation,
 | 
|---|
| 1928 |   FileNamesInformation,
 | 
|---|
| 1929 |   FileDispositionInformation,
 | 
|---|
| 1930 |   FilePositionInformation,
 | 
|---|
| 1931 |   FileFullEaInformation,
 | 
|---|
| 1932 |   FileModeInformation,
 | 
|---|
| 1933 |   FileAlignmentInformation,
 | 
|---|
| 1934 |   FileAllInformation,
 | 
|---|
| 1935 |   FileAllocationInformation,
 | 
|---|
| 1936 |   FileEndOfFileInformation,
 | 
|---|
| 1937 |   FileAlternateNameInformation,
 | 
|---|
| 1938 |   FileStreamInformation,
 | 
|---|
| 1939 |   FilePipeInformation,
 | 
|---|
| 1940 |   FilePipeLocalInformation,
 | 
|---|
| 1941 |   FilePipeRemoteInformation,
 | 
|---|
| 1942 |   FileMailslotQueryInformation,
 | 
|---|
| 1943 |   FileMailslotSetInformation,
 | 
|---|
| 1944 |   FileCompressionInformation,
 | 
|---|
| 1945 |   FileObjectIdInformation,
 | 
|---|
| 1946 |   FileCompletionInformation,
 | 
|---|
| 1947 |   FileMoveClusterInformation,
 | 
|---|
| 1948 |   FileQuotaInformation,
 | 
|---|
| 1949 |   FileReparsePointInformation,
 | 
|---|
| 1950 |   FileNetworkOpenInformation,
 | 
|---|
| 1951 |   FileAttributeTagInformation,
 | 
|---|
| 1952 |   FileTrackingInformation,
 | 
|---|
| 1953 |   FileIdBothDirectoryInformation,
 | 
|---|
| 1954 |   FileIdFullDirectoryInformation,
 | 
|---|
| 1955 |   FileValidDataLengthInformation,
 | 
|---|
| 1956 |   FileShortNameInformation,
 | 
|---|
| 1957 |   FileMaximumInformation
 | 
|---|
| 1958 | } FILE_INFORMATION_CLASS, *PFILE_INFORMATION_CLASS;
 | 
|---|
| 1959 | 
 | 
|---|
| 1960 | typedef struct _FILE_POSITION_INFORMATION {                 
 | 
|---|
| 1961 |   LARGE_INTEGER  CurrentByteOffset;                        
 | 
|---|
| 1962 | } FILE_POSITION_INFORMATION, *PFILE_POSITION_INFORMATION;   
 | 
|---|
| 1963 | 
 | 
|---|
| 1964 | typedef struct _FILE_ALIGNMENT_INFORMATION {
 | 
|---|
| 1965 |   ULONG  AlignmentRequirement;
 | 
|---|
| 1966 | } FILE_ALIGNMENT_INFORMATION;
 | 
|---|
| 1967 | 
 | 
|---|
| 1968 | typedef struct _FILE_NAME_INFORMATION {                     
 | 
|---|
| 1969 |   ULONG  FileNameLength;                                   
 | 
|---|
| 1970 |   WCHAR  FileName[1];                                      
 | 
|---|
| 1971 | } FILE_NAME_INFORMATION, *PFILE_NAME_INFORMATION;           
 | 
|---|
| 1972 | 
 | 
|---|
| 1973 | typedef struct _FILE_BASIC_INFORMATION {
 | 
|---|
| 1974 |   LARGE_INTEGER  CreationTime;
 | 
|---|
| 1975 |   LARGE_INTEGER  LastAccessTime;
 | 
|---|
| 1976 |   LARGE_INTEGER  LastWriteTime;
 | 
|---|
| 1977 |   LARGE_INTEGER  ChangeTime;
 | 
|---|
| 1978 |   ULONG  FileAttributes;
 | 
|---|
| 1979 | } FILE_BASIC_INFORMATION, *PFILE_BASIC_INFORMATION;
 | 
|---|
| 1980 | 
 | 
|---|
| 1981 | typedef struct _FILE_STANDARD_INFORMATION {
 | 
|---|
| 1982 |   LARGE_INTEGER  AllocationSize;
 | 
|---|
| 1983 |   LARGE_INTEGER  EndOfFile;
 | 
|---|
| 1984 |   ULONG  NumberOfLinks;
 | 
|---|
| 1985 |   BOOLEAN  DeletePending;
 | 
|---|
| 1986 |   BOOLEAN  Directory;
 | 
|---|
| 1987 | } FILE_STANDARD_INFORMATION, *PFILE_STANDARD_INFORMATION;
 | 
|---|
| 1988 | 
 | 
|---|
| 1989 | typedef struct _FILE_NETWORK_OPEN_INFORMATION {                 
 | 
|---|
| 1990 |   LARGE_INTEGER  CreationTime;                                 
 | 
|---|
| 1991 |   LARGE_INTEGER  LastAccessTime;                               
 | 
|---|
| 1992 |   LARGE_INTEGER  LastWriteTime;                                
 | 
|---|
| 1993 |   LARGE_INTEGER  ChangeTime;                                   
 | 
|---|
| 1994 |   LARGE_INTEGER  AllocationSize;                               
 | 
|---|
| 1995 |   LARGE_INTEGER  EndOfFile;                                    
 | 
|---|
| 1996 |   ULONG  FileAttributes;                                       
 | 
|---|
| 1997 | } FILE_NETWORK_OPEN_INFORMATION, *PFILE_NETWORK_OPEN_INFORMATION;   
 | 
|---|
| 1998 | 
 | 
|---|
| 1999 | typedef struct _FILE_ATTRIBUTE_TAG_INFORMATION {               
 | 
|---|
| 2000 |   ULONG  FileAttributes;                                       
 | 
|---|
| 2001 |   ULONG  ReparseTag;                                           
 | 
|---|
| 2002 | } FILE_ATTRIBUTE_TAG_INFORMATION, *PFILE_ATTRIBUTE_TAG_INFORMATION;
 | 
|---|
| 2003 | 
 | 
|---|
| 2004 | typedef struct _FILE_DISPOSITION_INFORMATION {                  
 | 
|---|
| 2005 |   BOOLEAN  DoDeleteFile;                                         
 | 
|---|
| 2006 | } FILE_DISPOSITION_INFORMATION, *PFILE_DISPOSITION_INFORMATION; 
 | 
|---|
| 2007 |                                                                 
 | 
|---|
| 2008 | typedef struct _FILE_END_OF_FILE_INFORMATION {                  
 | 
|---|
| 2009 |   LARGE_INTEGER  EndOfFile;                                    
 | 
|---|
| 2010 | } FILE_END_OF_FILE_INFORMATION, *PFILE_END_OF_FILE_INFORMATION; 
 | 
|---|
| 2011 |                                                                 
 | 
|---|
| 2012 | typedef struct _FILE_VALID_DATA_LENGTH_INFORMATION {                                    
 | 
|---|
| 2013 |   LARGE_INTEGER  ValidDataLength;                                                      
 | 
|---|
| 2014 | } FILE_VALID_DATA_LENGTH_INFORMATION, *PFILE_VALID_DATA_LENGTH_INFORMATION;             
 | 
|---|
| 2015 | 
 | 
|---|
| 2016 | typedef enum _FSINFOCLASS {
 | 
|---|
| 2017 |   FileFsVolumeInformation = 1,
 | 
|---|
| 2018 |   FileFsLabelInformation,
 | 
|---|
| 2019 |   FileFsSizeInformation,
 | 
|---|
| 2020 |   FileFsDeviceInformation,
 | 
|---|
| 2021 |   FileFsAttributeInformation,
 | 
|---|
| 2022 |   FileFsControlInformation,
 | 
|---|
| 2023 |   FileFsFullSizeInformation,
 | 
|---|
| 2024 |   FileFsObjectIdInformation,
 | 
|---|
| 2025 |   FileFsDriverPathInformation,
 | 
|---|
| 2026 |   FileFsMaximumInformation
 | 
|---|
| 2027 | } FS_INFORMATION_CLASS, *PFS_INFORMATION_CLASS;
 | 
|---|
| 2028 | 
 | 
|---|
| 2029 | typedef struct _FILE_FS_DEVICE_INFORMATION {
 | 
|---|
| 2030 |   DEVICE_TYPE  DeviceType;
 | 
|---|
| 2031 |   ULONG  Characteristics;
 | 
|---|
| 2032 | } FILE_FS_DEVICE_INFORMATION, *PFILE_FS_DEVICE_INFORMATION;
 | 
|---|
| 2033 | 
 | 
|---|
| 2034 | typedef struct _FILE_FULL_EA_INFORMATION {
 | 
|---|
| 2035 |   ULONG  NextEntryOffset;
 | 
|---|
| 2036 |   UCHAR  Flags;
 | 
|---|
| 2037 |   UCHAR  EaNameLength;
 | 
|---|
| 2038 |   USHORT  EaValueLength;
 | 
|---|
| 2039 |   CHAR  EaName[1];
 | 
|---|
| 2040 | } FILE_FULL_EA_INFORMATION, *PFILE_FULL_EA_INFORMATION;
 | 
|---|
| 2041 | 
 | 
|---|
| 2042 | typedef ULONG_PTR ERESOURCE_THREAD;
 | 
|---|
| 2043 | typedef ERESOURCE_THREAD *PERESOURCE_THREAD;
 | 
|---|
| 2044 | 
 | 
|---|
| 2045 | typedef struct _OWNER_ENTRY {
 | 
|---|
| 2046 |   ERESOURCE_THREAD  OwnerThread;
 | 
|---|
| 2047 |   _ANONYMOUS_UNION union {
 | 
|---|
| 2048 |       LONG  OwnerCount;
 | 
|---|
| 2049 |       ULONG  TableSize;
 | 
|---|
| 2050 |   } DUMMYUNIONNAME;
 | 
|---|
| 2051 | } OWNER_ENTRY, *POWNER_ENTRY;
 | 
|---|
| 2052 | 
 | 
|---|
| 2053 | /* ERESOURCE.Flag */
 | 
|---|
| 2054 | 
 | 
|---|
| 2055 | #define ResourceNeverExclusive            0x0010
 | 
|---|
| 2056 | #define ResourceReleaseByOtherThread      0x0020
 | 
|---|
| 2057 | #define ResourceOwnedExclusive            0x0080
 | 
|---|
| 2058 | 
 | 
|---|
| 2059 | #define RESOURCE_HASH_TABLE_SIZE          64
 | 
|---|
| 2060 | 
 | 
|---|
| 2061 | typedef struct _ERESOURCE {
 | 
|---|
| 2062 |   LIST_ENTRY  SystemResourcesList;
 | 
|---|
| 2063 |   POWNER_ENTRY  OwnerTable;
 | 
|---|
| 2064 |   SHORT  ActiveCount;
 | 
|---|
| 2065 |   USHORT  Flag;
 | 
|---|
| 2066 |   PKSEMAPHORE  SharedWaiters;
 | 
|---|
| 2067 |   PKEVENT  ExclusiveWaiters;
 | 
|---|
| 2068 |   OWNER_ENTRY  OwnerThreads[2];
 | 
|---|
| 2069 |   ULONG  ContentionCount;
 | 
|---|
| 2070 |   USHORT  NumberOfSharedWaiters;
 | 
|---|
| 2071 |   USHORT  NumberOfExclusiveWaiters;
 | 
|---|
| 2072 |   _ANONYMOUS_UNION union {
 | 
|---|
| 2073 |     PVOID  Address;
 | 
|---|
| 2074 |     ULONG_PTR  CreatorBackTraceIndex;
 | 
|---|
| 2075 |   } DUMMYUNIONNAME;
 | 
|---|
| 2076 |   KSPIN_LOCK  SpinLock;
 | 
|---|
| 2077 | } ERESOURCE, *PERESOURCE;
 | 
|---|
| 2078 | 
 | 
|---|
| 2079 | /* NOTE: PVOID for methods to avoid 'assignment from incompatible pointer type' warning */
 | 
|---|
| 2080 | typedef struct _DRIVER_EXTENSION {
 | 
|---|
| 2081 |   struct _DRIVER_OBJECT  *DriverObject;
 | 
|---|
| 2082 |   PVOID  AddDevice;
 | 
|---|
| 2083 |   ULONG  Count;
 | 
|---|
| 2084 |   UNICODE_STRING  ServiceKeyName;
 | 
|---|
| 2085 | } DRIVER_EXTENSION, *PDRIVER_EXTENSION;
 | 
|---|
| 2086 | 
 | 
|---|
| 2087 | typedef BOOLEAN DDKAPI
 | 
|---|
| 2088 | (*PFAST_IO_CHECK_IF_POSSIBLE)(
 | 
|---|
| 2089 |   IN struct _FILE_OBJECT  *FileObject,
 | 
|---|
| 2090 |   IN PLARGE_INTEGER  FileOffset,
 | 
|---|
| 2091 |   IN ULONG  Length,
 | 
|---|
| 2092 |   IN BOOLEAN  Wait,
 | 
|---|
| 2093 |   IN ULONG  LockKey,
 | 
|---|
| 2094 |   IN BOOLEAN  CheckForReadOperation,
 | 
|---|
| 2095 |   OUT PIO_STATUS_BLOCK  IoStatus,
 | 
|---|
| 2096 |   IN struct _DEVICE_OBJECT  *DeviceObject);
 | 
|---|
| 2097 | 
 | 
|---|
| 2098 | typedef BOOLEAN DDKAPI
 | 
|---|
| 2099 | (*PFAST_IO_READ)(
 | 
|---|
| 2100 |   IN struct _FILE_OBJECT  *FileObject,
 | 
|---|
| 2101 |   IN PLARGE_INTEGER  FileOffset,
 | 
|---|
| 2102 |   IN ULONG  Length,
 | 
|---|
| 2103 |   IN BOOLEAN  Wait,
 | 
|---|
| 2104 |   IN ULONG  LockKey,
 | 
|---|
| 2105 |   OUT PVOID  Buffer,
 | 
|---|
| 2106 |   OUT PIO_STATUS_BLOCK  IoStatus,
 | 
|---|
| 2107 |   IN struct _DEVICE_OBJECT  *DeviceObject);
 | 
|---|
| 2108 | 
 | 
|---|
| 2109 | typedef BOOLEAN DDKAPI
 | 
|---|
| 2110 | (*PFAST_IO_WRITE)(
 | 
|---|
| 2111 |   IN struct _FILE_OBJECT  *FileObject,
 | 
|---|
| 2112 |   IN PLARGE_INTEGER  FileOffset,
 | 
|---|
| 2113 |   IN ULONG  Length,
 | 
|---|
| 2114 |   IN BOOLEAN  Wait,
 | 
|---|
| 2115 |   IN ULONG  LockKey,
 | 
|---|
| 2116 |   IN PVOID  Buffer,
 | 
|---|
| 2117 |   OUT PIO_STATUS_BLOCK  IoStatus,
 | 
|---|
| 2118 |   IN struct _DEVICE_OBJECT  *DeviceObject);
 | 
|---|
| 2119 | 
 | 
|---|
| 2120 | typedef BOOLEAN DDKAPI
 | 
|---|
| 2121 | (*PFAST_IO_QUERY_BASIC_INFO)(
 | 
|---|
| 2122 |   IN struct _FILE_OBJECT  *FileObject,
 | 
|---|
| 2123 |   IN BOOLEAN  Wait,
 | 
|---|
| 2124 |   OUT PFILE_BASIC_INFORMATION  Buffer,
 | 
|---|
| 2125 |   OUT PIO_STATUS_BLOCK  IoStatus,
 | 
|---|
| 2126 |   IN struct _DEVICE_OBJECT  *DeviceObject);
 | 
|---|
| 2127 | 
 | 
|---|
| 2128 | typedef BOOLEAN DDKAPI
 | 
|---|
| 2129 | (*PFAST_IO_QUERY_STANDARD_INFO)(
 | 
|---|
| 2130 |   IN struct _FILE_OBJECT  *FileObject,
 | 
|---|
| 2131 |   IN BOOLEAN  Wait,
 | 
|---|
| 2132 |   OUT PFILE_STANDARD_INFORMATION  Buffer,
 | 
|---|
| 2133 |   OUT PIO_STATUS_BLOCK  IoStatus,
 | 
|---|
| 2134 |   IN struct _DEVICE_OBJECT  *DeviceObject);
 | 
|---|
| 2135 | 
 | 
|---|
| 2136 | typedef BOOLEAN DDKAPI
 | 
|---|
| 2137 | (*PFAST_IO_LOCK)(
 | 
|---|
| 2138 |   IN struct _FILE_OBJECT  *FileObject,
 | 
|---|
| 2139 |   IN PLARGE_INTEGER  FileOffset,
 | 
|---|
| 2140 |   IN PLARGE_INTEGER  Length,
 | 
|---|
| 2141 |   PEPROCESS  ProcessId,
 | 
|---|
| 2142 |   ULONG  Key,
 | 
|---|
| 2143 |   BOOLEAN  FailImmediately,
 | 
|---|
| 2144 |   BOOLEAN  ExclusiveLock,
 | 
|---|
| 2145 |   OUT PIO_STATUS_BLOCK  IoStatus,
 | 
|---|
| 2146 |   IN struct _DEVICE_OBJECT  *DeviceObject);
 | 
|---|
| 2147 | 
 | 
|---|
| 2148 | typedef BOOLEAN DDKAPI
 | 
|---|
| 2149 | (*PFAST_IO_UNLOCK_SINGLE)(
 | 
|---|
| 2150 |   IN struct _FILE_OBJECT  *FileObject,
 | 
|---|
| 2151 |   IN PLARGE_INTEGER  FileOffset,
 | 
|---|
| 2152 |   IN PLARGE_INTEGER  Length,
 | 
|---|
| 2153 |   PEPROCESS  ProcessId,
 | 
|---|
| 2154 |   ULONG  Key,
 | 
|---|
| 2155 |   OUT PIO_STATUS_BLOCK  IoStatus,
 | 
|---|
| 2156 |   IN struct _DEVICE_OBJECT  *DeviceObject);
 | 
|---|
| 2157 | 
 | 
|---|
| 2158 | typedef BOOLEAN DDKAPI
 | 
|---|
| 2159 | (*PFAST_IO_UNLOCK_ALL)(
 | 
|---|
| 2160 |   IN struct _FILE_OBJECT  *FileObject,
 | 
|---|
| 2161 |   PEPROCESS  ProcessId,
 | 
|---|
| 2162 |   OUT PIO_STATUS_BLOCK  IoStatus,
 | 
|---|
| 2163 |   IN struct _DEVICE_OBJECT  *DeviceObject);
 | 
|---|
| 2164 | 
 | 
|---|
| 2165 | typedef BOOLEAN DDKAPI
 | 
|---|
| 2166 | (*PFAST_IO_UNLOCK_ALL_BY_KEY)(
 | 
|---|
| 2167 |   IN struct _FILE_OBJECT  *FileObject,
 | 
|---|
| 2168 |   PVOID  ProcessId,
 | 
|---|
| 2169 |   ULONG  Key,
 | 
|---|
| 2170 |   OUT PIO_STATUS_BLOCK  IoStatus,
 | 
|---|
| 2171 |   IN struct _DEVICE_OBJECT  *DeviceObject);
 | 
|---|
| 2172 | 
 | 
|---|
| 2173 | typedef BOOLEAN DDKAPI
 | 
|---|
| 2174 | (*PFAST_IO_DEVICE_CONTROL)(
 | 
|---|
| 2175 |   IN struct _FILE_OBJECT  *FileObject,
 | 
|---|
| 2176 |   IN BOOLEAN  Wait,
 | 
|---|
| 2177 |   IN PVOID  InputBuffer  OPTIONAL,
 | 
|---|
| 2178 |   IN ULONG  InputBufferLength,
 | 
|---|
| 2179 |   OUT PVOID  OutputBuffer  OPTIONAL,
 | 
|---|
| 2180 |   IN ULONG  OutputBufferLength,
 | 
|---|
| 2181 |   IN ULONG  IoControlCode,
 | 
|---|
| 2182 |   OUT PIO_STATUS_BLOCK  IoStatus,
 | 
|---|
| 2183 |   IN struct _DEVICE_OBJECT  *DeviceObject);
 | 
|---|
| 2184 | 
 | 
|---|
| 2185 | typedef VOID DDKAPI
 | 
|---|
| 2186 | (*PFAST_IO_ACQUIRE_FILE)(
 | 
|---|
| 2187 |   IN struct _FILE_OBJECT  *FileObject);
 | 
|---|
| 2188 | 
 | 
|---|
| 2189 | typedef VOID DDKAPI
 | 
|---|
| 2190 | (*PFAST_IO_RELEASE_FILE)(
 | 
|---|
| 2191 |   IN struct _FILE_OBJECT  *FileObject);
 | 
|---|
| 2192 | 
 | 
|---|
| 2193 | typedef VOID DDKAPI
 | 
|---|
| 2194 | (*PFAST_IO_DETACH_DEVICE)(
 | 
|---|
| 2195 |   IN struct _DEVICE_OBJECT  *SourceDevice,
 | 
|---|
| 2196 |   IN struct _DEVICE_OBJECT  *TargetDevice);
 | 
|---|
| 2197 | 
 | 
|---|
| 2198 | typedef BOOLEAN DDKAPI
 | 
|---|
| 2199 | (*PFAST_IO_QUERY_NETWORK_OPEN_INFO)(
 | 
|---|
| 2200 |   IN struct _FILE_OBJECT  *FileObject,
 | 
|---|
| 2201 |   IN BOOLEAN  Wait,
 | 
|---|
| 2202 |   OUT struct _FILE_NETWORK_OPEN_INFORMATION  *Buffer,
 | 
|---|
| 2203 |   OUT struct _IO_STATUS_BLOCK  *IoStatus,
 | 
|---|
| 2204 |   IN struct _DEVICE_OBJECT  *DeviceObject);
 | 
|---|
| 2205 | 
 | 
|---|
| 2206 | typedef NTSTATUS DDKAPI
 | 
|---|
| 2207 | (*PFAST_IO_ACQUIRE_FOR_MOD_WRITE)(
 | 
|---|
| 2208 |   IN struct _FILE_OBJECT  *FileObject,
 | 
|---|
| 2209 |   IN PLARGE_INTEGER  EndingOffset,
 | 
|---|
| 2210 |   OUT struct _ERESOURCE  **ResourceToRelease,
 | 
|---|
| 2211 |   IN struct _DEVICE_OBJECT  *DeviceObject);
 | 
|---|
| 2212 | 
 | 
|---|
| 2213 | typedef BOOLEAN DDKAPI
 | 
|---|
| 2214 | (*PFAST_IO_MDL_READ)(
 | 
|---|
| 2215 |   IN struct _FILE_OBJECT  *FileObject,
 | 
|---|
| 2216 |   IN PLARGE_INTEGER  FileOffset,
 | 
|---|
| 2217 |   IN ULONG  Length,
 | 
|---|
| 2218 |   IN ULONG  LockKey,
 | 
|---|
| 2219 |   OUT PMDL  *MdlChain,
 | 
|---|
| 2220 |   OUT PIO_STATUS_BLOCK  IoStatus,
 | 
|---|
| 2221 |   IN struct _DEVICE_OBJECT  *DeviceObject);
 | 
|---|
| 2222 | 
 | 
|---|
| 2223 | typedef BOOLEAN DDKAPI
 | 
|---|
| 2224 | (*PFAST_IO_MDL_READ_COMPLETE)(
 | 
|---|
| 2225 |   IN struct _FILE_OBJECT *FileObject,
 | 
|---|
| 2226 |   IN PMDL MdlChain,
 | 
|---|
| 2227 |   IN struct _DEVICE_OBJECT *DeviceObject);
 | 
|---|
| 2228 | 
 | 
|---|
| 2229 | typedef BOOLEAN DDKAPI
 | 
|---|
| 2230 | (*PFAST_IO_PREPARE_MDL_WRITE)(
 | 
|---|
| 2231 |   IN struct _FILE_OBJECT  *FileObject,
 | 
|---|
| 2232 |   IN PLARGE_INTEGER  FileOffset,
 | 
|---|
| 2233 |   IN ULONG  Length,
 | 
|---|
| 2234 |   IN ULONG  LockKey,
 | 
|---|
| 2235 |   OUT PMDL  *MdlChain,
 | 
|---|
| 2236 |   OUT PIO_STATUS_BLOCK  IoStatus,
 | 
|---|
| 2237 |   IN struct _DEVICE_OBJECT  *DeviceObject);
 | 
|---|
| 2238 | 
 | 
|---|
| 2239 | typedef BOOLEAN DDKAPI
 | 
|---|
| 2240 | (*PFAST_IO_MDL_WRITE_COMPLETE)(
 | 
|---|
| 2241 |   IN struct _FILE_OBJECT  *FileObject,
 | 
|---|
| 2242 |   IN PLARGE_INTEGER  FileOffset,
 | 
|---|
| 2243 |   IN PMDL  MdlChain,
 | 
|---|
| 2244 |   IN struct _DEVICE_OBJECT  *DeviceObject);
 | 
|---|
| 2245 | 
 | 
|---|
| 2246 | typedef BOOLEAN DDKAPI
 | 
|---|
| 2247 | (*PFAST_IO_READ_COMPRESSED)(
 | 
|---|
| 2248 |   IN struct _FILE_OBJECT  *FileObject,
 | 
|---|
| 2249 |   IN PLARGE_INTEGER  FileOffset,
 | 
|---|
| 2250 |   IN ULONG  Length,
 | 
|---|
| 2251 |   IN ULONG  LockKey,
 | 
|---|
| 2252 |   OUT PVOID  Buffer,
 | 
|---|
| 2253 |   OUT PMDL  *MdlChain,
 | 
|---|
| 2254 |   OUT PIO_STATUS_BLOCK  IoStatus,
 | 
|---|
| 2255 |   OUT struct _COMPRESSED_DATA_INFO  *CompressedDataInfo,
 | 
|---|
| 2256 |   IN ULONG  CompressedDataInfoLength,
 | 
|---|
| 2257 |   IN struct _DEVICE_OBJECT  *DeviceObject);
 | 
|---|
| 2258 | 
 | 
|---|
| 2259 | typedef BOOLEAN DDKAPI
 | 
|---|
| 2260 | (*PFAST_IO_WRITE_COMPRESSED)(
 | 
|---|
| 2261 |   IN struct _FILE_OBJECT  *FileObject,
 | 
|---|
| 2262 |   IN PLARGE_INTEGER  FileOffset,
 | 
|---|
| 2263 |   IN ULONG  Length,
 | 
|---|
| 2264 |   IN ULONG  LockKey,
 | 
|---|
| 2265 |   IN PVOID  Buffer,
 | 
|---|
| 2266 |   OUT PMDL  *MdlChain,
 | 
|---|
| 2267 |   OUT PIO_STATUS_BLOCK  IoStatus,
 | 
|---|
| 2268 |   IN struct _COMPRESSED_DATA_INFO  *CompressedDataInfo,
 | 
|---|
| 2269 |   IN ULONG  CompressedDataInfoLength,
 | 
|---|
| 2270 |   IN struct _DEVICE_OBJECT  *DeviceObject);
 | 
|---|
| 2271 | 
 | 
|---|
| 2272 | typedef BOOLEAN DDKAPI
 | 
|---|
| 2273 | (*PFAST_IO_MDL_READ_COMPLETE_COMPRESSED)(
 | 
|---|
| 2274 |   IN struct _FILE_OBJECT  *FileObject,
 | 
|---|
| 2275 |   IN PMDL  MdlChain,
 | 
|---|
| 2276 |   IN struct _DEVICE_OBJECT  *DeviceObject);
 | 
|---|
| 2277 | 
 | 
|---|
| 2278 | typedef BOOLEAN DDKAPI
 | 
|---|
| 2279 | (*PFAST_IO_MDL_WRITE_COMPLETE_COMPRESSED)(
 | 
|---|
| 2280 |   IN struct _FILE_OBJECT  *FileObject,
 | 
|---|
| 2281 |   IN PLARGE_INTEGER  FileOffset,
 | 
|---|
| 2282 |   IN PMDL  MdlChain,
 | 
|---|
| 2283 |   IN struct _DEVICE_OBJECT  *DeviceObject);
 | 
|---|
| 2284 | 
 | 
|---|
| 2285 | typedef BOOLEAN DDKAPI
 | 
|---|
| 2286 | (*PFAST_IO_QUERY_OPEN)(
 | 
|---|
| 2287 |   IN struct _IRP  *Irp,
 | 
|---|
| 2288 |   OUT PFILE_NETWORK_OPEN_INFORMATION  NetworkInformation,
 | 
|---|
| 2289 |   IN struct _DEVICE_OBJECT  *DeviceObject);
 | 
|---|
| 2290 | 
 | 
|---|
| 2291 | typedef NTSTATUS DDKAPI
 | 
|---|
| 2292 | (*PFAST_IO_RELEASE_FOR_MOD_WRITE)(
 | 
|---|
| 2293 |   IN struct _FILE_OBJECT  *FileObject,
 | 
|---|
| 2294 |   IN struct _ERESOURCE  *ResourceToRelease,
 | 
|---|
| 2295 |   IN struct _DEVICE_OBJECT  *DeviceObject);
 | 
|---|
| 2296 | 
 | 
|---|
| 2297 | typedef NTSTATUS DDKAPI
 | 
|---|
| 2298 | (*PFAST_IO_ACQUIRE_FOR_CCFLUSH)(
 | 
|---|
| 2299 |   IN struct _FILE_OBJECT  *FileObject,
 | 
|---|
| 2300 |   IN struct _DEVICE_OBJECT  *DeviceObject);
 | 
|---|
| 2301 | 
 | 
|---|
| 2302 | typedef NTSTATUS DDKAPI
 | 
|---|
| 2303 | (*PFAST_IO_RELEASE_FOR_CCFLUSH) (
 | 
|---|
| 2304 |   IN struct _FILE_OBJECT  *FileObject,
 | 
|---|
| 2305 |   IN struct _DEVICE_OBJECT  *DeviceObject);
 | 
|---|
| 2306 | 
 | 
|---|
| 2307 | typedef struct _FAST_IO_DISPATCH {
 | 
|---|
| 2308 |   ULONG  SizeOfFastIoDispatch;
 | 
|---|
| 2309 |   PFAST_IO_CHECK_IF_POSSIBLE  FastIoCheckIfPossible;
 | 
|---|
| 2310 |   PFAST_IO_READ  FastIoRead;
 | 
|---|
| 2311 |   PFAST_IO_WRITE  FastIoWrite;
 | 
|---|
| 2312 |   PFAST_IO_QUERY_BASIC_INFO  FastIoQueryBasicInfo;
 | 
|---|
| 2313 |   PFAST_IO_QUERY_STANDARD_INFO  FastIoQueryStandardInfo;
 | 
|---|
| 2314 |   PFAST_IO_LOCK  FastIoLock;
 | 
|---|
| 2315 |   PFAST_IO_UNLOCK_SINGLE  FastIoUnlockSingle;
 | 
|---|
| 2316 |   PFAST_IO_UNLOCK_ALL  FastIoUnlockAll;
 | 
|---|
| 2317 |   PFAST_IO_UNLOCK_ALL_BY_KEY  FastIoUnlockAllByKey;
 | 
|---|
| 2318 |   PFAST_IO_DEVICE_CONTROL  FastIoDeviceControl;
 | 
|---|
| 2319 |   PFAST_IO_ACQUIRE_FILE  AcquireFileForNtCreateSection;
 | 
|---|
| 2320 |   PFAST_IO_RELEASE_FILE  ReleaseFileForNtCreateSection;
 | 
|---|
| 2321 |   PFAST_IO_DETACH_DEVICE  FastIoDetachDevice;
 | 
|---|
| 2322 |   PFAST_IO_QUERY_NETWORK_OPEN_INFO  FastIoQueryNetworkOpenInfo;
 | 
|---|
| 2323 |   PFAST_IO_ACQUIRE_FOR_MOD_WRITE  AcquireForModWrite;
 | 
|---|
| 2324 |   PFAST_IO_MDL_READ  MdlRead;
 | 
|---|
| 2325 |   PFAST_IO_MDL_READ_COMPLETE  MdlReadComplete;
 | 
|---|
| 2326 |   PFAST_IO_PREPARE_MDL_WRITE  PrepareMdlWrite;
 | 
|---|
| 2327 |   PFAST_IO_MDL_WRITE_COMPLETE  MdlWriteComplete;
 | 
|---|
| 2328 |   PFAST_IO_READ_COMPRESSED  FastIoReadCompressed;
 | 
|---|
| 2329 |   PFAST_IO_WRITE_COMPRESSED  FastIoWriteCompressed;
 | 
|---|
| 2330 |   PFAST_IO_MDL_READ_COMPLETE_COMPRESSED  MdlReadCompleteCompressed;
 | 
|---|
| 2331 |   PFAST_IO_MDL_WRITE_COMPLETE_COMPRESSED  MdlWriteCompleteCompressed;
 | 
|---|
| 2332 |   PFAST_IO_QUERY_OPEN  FastIoQueryOpen;
 | 
|---|
| 2333 |   PFAST_IO_RELEASE_FOR_MOD_WRITE  ReleaseForModWrite;
 | 
|---|
| 2334 |   PFAST_IO_ACQUIRE_FOR_CCFLUSH  AcquireForCcFlush;
 | 
|---|
| 2335 |   PFAST_IO_RELEASE_FOR_CCFLUSH  ReleaseForCcFlush;
 | 
|---|
| 2336 | } FAST_IO_DISPATCH, *PFAST_IO_DISPATCH;
 | 
|---|
| 2337 | 
 | 
|---|
| 2338 | typedef struct _DRIVER_OBJECT {
 | 
|---|
| 2339 |   CSHORT  Type;
 | 
|---|
| 2340 |   CSHORT  Size;
 | 
|---|
| 2341 |   PDEVICE_OBJECT  DeviceObject;
 | 
|---|
| 2342 |   ULONG  Flags;
 | 
|---|
| 2343 |   PVOID  DriverStart;
 | 
|---|
| 2344 |   ULONG  DriverSize;
 | 
|---|
| 2345 |   PVOID  DriverSection;
 | 
|---|
| 2346 |   PDRIVER_EXTENSION  DriverExtension;
 | 
|---|
| 2347 |   UNICODE_STRING  DriverName;
 | 
|---|
| 2348 |   PUNICODE_STRING  HardwareDatabase;
 | 
|---|
| 2349 |   PFAST_IO_DISPATCH  FastIoDispatch;
 | 
|---|
| 2350 |   PDRIVER_INITIALIZE  DriverInit;
 | 
|---|
| 2351 |   PDRIVER_STARTIO  DriverStartIo;
 | 
|---|
| 2352 |   PDRIVER_UNLOAD  DriverUnload;
 | 
|---|
| 2353 |   PDRIVER_DISPATCH  MajorFunction[IRP_MJ_MAXIMUM_FUNCTION + 1];
 | 
|---|
| 2354 | } DRIVER_OBJECT;
 | 
|---|
| 2355 | typedef struct _DRIVER_OBJECT *PDRIVER_OBJECT;
 | 
|---|
| 2356 | 
 | 
|---|
| 2357 | typedef struct _SECTION_OBJECT_POINTERS {
 | 
|---|
| 2358 |   PVOID  DataSectionObject;
 | 
|---|
| 2359 |   PVOID  SharedCacheMap;
 | 
|---|
| 2360 |   PVOID  ImageSectionObject;
 | 
|---|
| 2361 | } SECTION_OBJECT_POINTERS, *PSECTION_OBJECT_POINTERS;
 | 
|---|
| 2362 | 
 | 
|---|
| 2363 | typedef struct _IO_COMPLETION_CONTEXT {
 | 
|---|
| 2364 |   PVOID  Port;
 | 
|---|
| 2365 |   PVOID  Key;
 | 
|---|
| 2366 | } IO_COMPLETION_CONTEXT, *PIO_COMPLETION_CONTEXT;
 | 
|---|
| 2367 | 
 | 
|---|
| 2368 | /* FILE_OBJECT.Flags */
 | 
|---|
| 2369 | 
 | 
|---|
| 2370 | #define FO_FILE_OPEN                      0x00000001
 | 
|---|
| 2371 | #define FO_SYNCHRONOUS_IO                 0x00000002
 | 
|---|
| 2372 | #define FO_ALERTABLE_IO                   0x00000004
 | 
|---|
| 2373 | #define FO_NO_INTERMEDIATE_BUFFERING      0x00000008
 | 
|---|
| 2374 | #define FO_WRITE_THROUGH                  0x00000010
 | 
|---|
| 2375 | #define FO_SEQUENTIAL_ONLY                0x00000020
 | 
|---|
| 2376 | #define FO_CACHE_SUPPORTED                0x00000040
 | 
|---|
| 2377 | #define FO_NAMED_PIPE                     0x00000080
 | 
|---|
| 2378 | #define FO_STREAM_FILE                    0x00000100
 | 
|---|
| 2379 | #define FO_MAILSLOT                       0x00000200
 | 
|---|
| 2380 | #define FO_GENERATE_AUDIT_ON_CLOSE        0x00000400
 | 
|---|
| 2381 | #define FO_DIRECT_DEVICE_OPEN             0x00000800
 | 
|---|
| 2382 | #define FO_FILE_MODIFIED                  0x00001000
 | 
|---|
| 2383 | #define FO_FILE_SIZE_CHANGED              0x00002000
 | 
|---|
| 2384 | #define FO_CLEANUP_COMPLETE               0x00004000
 | 
|---|
| 2385 | #define FO_TEMPORARY_FILE                 0x00008000
 | 
|---|
| 2386 | #define FO_DELETE_ON_CLOSE                0x00010000
 | 
|---|
| 2387 | #define FO_OPENED_CASE_SENSITIVE          0x00020000
 | 
|---|
| 2388 | #define FO_HANDLE_CREATED                 0x00040000
 | 
|---|
| 2389 | #define FO_FILE_FAST_IO_READ              0x00080000
 | 
|---|
| 2390 | #define FO_RANDOM_ACCESS                  0x00100000
 | 
|---|
| 2391 | #define FO_FILE_OPEN_CANCELLED            0x00200000
 | 
|---|
| 2392 | #define FO_VOLUME_OPEN                    0x00400000
 | 
|---|
| 2393 | #define FO_FILE_OBJECT_HAS_EXTENSION      0x00800000
 | 
|---|
| 2394 | #define FO_REMOTE_ORIGIN                  0x01000000
 | 
|---|
| 2395 | 
 | 
|---|
| 2396 | typedef struct _FILE_OBJECT {
 | 
|---|
| 2397 |   CSHORT  Type;
 | 
|---|
| 2398 |   CSHORT  Size;
 | 
|---|
| 2399 |   PDEVICE_OBJECT  DeviceObject;
 | 
|---|
| 2400 |   PVPB  Vpb;
 | 
|---|
| 2401 |   PVOID  FsContext;
 | 
|---|
| 2402 |   PVOID  FsContext2;
 | 
|---|
| 2403 |   PSECTION_OBJECT_POINTERS  SectionObjectPointer;
 | 
|---|
| 2404 |   PVOID  PrivateCacheMap;
 | 
|---|
| 2405 |   NTSTATUS  FinalStatus;
 | 
|---|
| 2406 |   struct _FILE_OBJECT  *RelatedFileObject;
 | 
|---|
| 2407 |   BOOLEAN  LockOperation;
 | 
|---|
| 2408 |   BOOLEAN  DeletePending;
 | 
|---|
| 2409 |   BOOLEAN  ReadAccess;
 | 
|---|
| 2410 |   BOOLEAN  WriteAccess;
 | 
|---|
| 2411 |   BOOLEAN  DeleteAccess;
 | 
|---|
| 2412 |   BOOLEAN  SharedRead;
 | 
|---|
| 2413 |   BOOLEAN  SharedWrite;
 | 
|---|
| 2414 |   BOOLEAN  SharedDelete;
 | 
|---|
| 2415 |   ULONG  Flags;
 | 
|---|
| 2416 |   UNICODE_STRING  FileName;
 | 
|---|
| 2417 |   LARGE_INTEGER  CurrentByteOffset;
 | 
|---|
| 2418 |   ULONG  Waiters;
 | 
|---|
| 2419 |   ULONG  Busy;
 | 
|---|
| 2420 |   PVOID  LastLock;
 | 
|---|
| 2421 |   KEVENT  Lock;
 | 
|---|
| 2422 |   KEVENT  Event;
 | 
|---|
| 2423 |   PIO_COMPLETION_CONTEXT  CompletionContext;
 | 
|---|
| 2424 | } FILE_OBJECT;
 | 
|---|
| 2425 | typedef struct _FILE_OBJECT *PFILE_OBJECT;
 | 
|---|
| 2426 | 
 | 
|---|
| 2427 | typedef enum _SECURITY_OPERATION_CODE {
 | 
|---|
| 2428 |   SetSecurityDescriptor,
 | 
|---|
| 2429 |   QuerySecurityDescriptor,
 | 
|---|
| 2430 |   DeleteSecurityDescriptor,
 | 
|---|
| 2431 |   AssignSecurityDescriptor
 | 
|---|
| 2432 | } SECURITY_OPERATION_CODE, *PSECURITY_OPERATION_CODE;
 | 
|---|
| 2433 | 
 | 
|---|
| 2434 | #define INITIAL_PRIVILEGE_COUNT           3
 | 
|---|
| 2435 | 
 | 
|---|
| 2436 | typedef struct _INITIAL_PRIVILEGE_SET {
 | 
|---|
| 2437 |   ULONG  PrivilegeCount;
 | 
|---|
| 2438 |   ULONG  Control;
 | 
|---|
| 2439 |   LUID_AND_ATTRIBUTES  Privilege[INITIAL_PRIVILEGE_COUNT];
 | 
|---|
| 2440 | } INITIAL_PRIVILEGE_SET, * PINITIAL_PRIVILEGE_SET;
 | 
|---|
| 2441 | 
 | 
|---|
| 2442 | typedef struct _SECURITY_SUBJECT_CONTEXT {
 | 
|---|
| 2443 |   PACCESS_TOKEN  ClientToken;
 | 
|---|
| 2444 |   SECURITY_IMPERSONATION_LEVEL  ImpersonationLevel;
 | 
|---|
| 2445 |   PACCESS_TOKEN  PrimaryToken;
 | 
|---|
| 2446 |   PVOID  ProcessAuditId;
 | 
|---|
| 2447 | } SECURITY_SUBJECT_CONTEXT, *PSECURITY_SUBJECT_CONTEXT;
 | 
|---|
| 2448 | 
 | 
|---|
| 2449 | #include <pshpack4.h>
 | 
|---|
| 2450 | typedef struct _ACCESS_STATE {
 | 
|---|
| 2451 |   LUID  OperationID;
 | 
|---|
| 2452 |   BOOLEAN  SecurityEvaluated;
 | 
|---|
| 2453 |   BOOLEAN  GenerateAudit;
 | 
|---|
| 2454 |   BOOLEAN  GenerateOnClose;
 | 
|---|
| 2455 |   BOOLEAN  PrivilegesAllocated;
 | 
|---|
| 2456 |   ULONG  Flags;
 | 
|---|
| 2457 |   ACCESS_MASK  RemainingDesiredAccess;
 | 
|---|
| 2458 |   ACCESS_MASK  PreviouslyGrantedAccess;
 | 
|---|
| 2459 |   ACCESS_MASK  OriginalDesiredAccess;
 | 
|---|
| 2460 |   SECURITY_SUBJECT_CONTEXT  SubjectSecurityContext;
 | 
|---|
| 2461 |   PSECURITY_DESCRIPTOR  SecurityDescriptor;
 | 
|---|
| 2462 |   PVOID  AuxData;
 | 
|---|
| 2463 |   union {
 | 
|---|
| 2464 |     INITIAL_PRIVILEGE_SET  InitialPrivilegeSet;
 | 
|---|
| 2465 |     PRIVILEGE_SET  PrivilegeSet;
 | 
|---|
| 2466 |   } Privileges;
 | 
|---|
| 2467 | 
 | 
|---|
| 2468 |   BOOLEAN  AuditPrivileges;
 | 
|---|
| 2469 |   UNICODE_STRING  ObjectName;
 | 
|---|
| 2470 |   UNICODE_STRING  ObjectTypeName;
 | 
|---|
| 2471 | } ACCESS_STATE, *PACCESS_STATE;
 | 
|---|
| 2472 | #include <poppack.h>
 | 
|---|
| 2473 | 
 | 
|---|
| 2474 | typedef struct _IO_SECURITY_CONTEXT {
 | 
|---|
| 2475 |   PSECURITY_QUALITY_OF_SERVICE  SecurityQos;
 | 
|---|
| 2476 |   PACCESS_STATE  AccessState;
 | 
|---|
| 2477 |   ACCESS_MASK  DesiredAccess;
 | 
|---|
| 2478 |   ULONG  FullCreateOptions;
 | 
|---|
| 2479 | } IO_SECURITY_CONTEXT, *PIO_SECURITY_CONTEXT;
 | 
|---|
| 2480 | 
 | 
|---|
| 2481 | struct _IO_CSQ;
 | 
|---|
| 2482 | 
 | 
|---|
| 2483 | typedef struct _IO_CSQ_IRP_CONTEXT {
 | 
|---|
| 2484 |   ULONG  Type;
 | 
|---|
| 2485 |   struct _IRP  *Irp;
 | 
|---|
| 2486 |   struct _IO_CSQ  *Csq;
 | 
|---|
| 2487 | } IO_CSQ_IRP_CONTEXT, *PIO_CSQ_IRP_CONTEXT;
 | 
|---|
| 2488 | 
 | 
|---|
| 2489 | typedef VOID DDKAPI
 | 
|---|
| 2490 | (*PIO_CSQ_INSERT_IRP)(
 | 
|---|
| 2491 |   IN struct _IO_CSQ  *Csq,
 | 
|---|
| 2492 |   IN PIRP  Irp);
 | 
|---|
| 2493 | 
 | 
|---|
| 2494 | typedef VOID DDKAPI
 | 
|---|
| 2495 | (*PIO_CSQ_REMOVE_IRP)(
 | 
|---|
| 2496 |   IN struct _IO_CSQ  *Csq,
 | 
|---|
| 2497 |   IN PIRP  Irp);
 | 
|---|
| 2498 | 
 | 
|---|
| 2499 | typedef PIRP DDKAPI
 | 
|---|
| 2500 | (*PIO_CSQ_PEEK_NEXT_IRP)(
 | 
|---|
| 2501 |   IN struct _IO_CSQ  *Csq,
 | 
|---|
| 2502 |   IN PIRP  Irp,
 | 
|---|
| 2503 |   IN PVOID  PeekContext);
 | 
|---|
| 2504 | 
 | 
|---|
| 2505 | typedef VOID DDKAPI
 | 
|---|
| 2506 | (*PIO_CSQ_ACQUIRE_LOCK)(
 | 
|---|
| 2507 |   IN  struct _IO_CSQ  *Csq,
 | 
|---|
| 2508 |   OUT PKIRQL  Irql);
 | 
|---|
| 2509 | 
 | 
|---|
| 2510 | typedef VOID DDKAPI
 | 
|---|
| 2511 | (*PIO_CSQ_RELEASE_LOCK)(
 | 
|---|
| 2512 |   IN struct _IO_CSQ  *Csq,
 | 
|---|
| 2513 |   IN KIRQL  Irql);
 | 
|---|
| 2514 | 
 | 
|---|
| 2515 | typedef VOID DDKAPI
 | 
|---|
| 2516 | (*PIO_CSQ_COMPLETE_CANCELED_IRP)(
 | 
|---|
| 2517 |   IN  struct _IO_CSQ  *Csq,
 | 
|---|
| 2518 |   IN  PIRP  Irp);
 | 
|---|
| 2519 | 
 | 
|---|
| 2520 | typedef struct _IO_CSQ {
 | 
|---|
| 2521 |   ULONG  Type;
 | 
|---|
| 2522 |   PIO_CSQ_INSERT_IRP  CsqInsertIrp;
 | 
|---|
| 2523 |   PIO_CSQ_REMOVE_IRP  CsqRemoveIrp;
 | 
|---|
| 2524 |   PIO_CSQ_PEEK_NEXT_IRP  CsqPeekNextIrp;
 | 
|---|
| 2525 |   PIO_CSQ_ACQUIRE_LOCK  CsqAcquireLock;
 | 
|---|
| 2526 |   PIO_CSQ_RELEASE_LOCK  CsqReleaseLock;
 | 
|---|
| 2527 |   PIO_CSQ_COMPLETE_CANCELED_IRP  CsqCompleteCanceledIrp;
 | 
|---|
| 2528 |   PVOID  ReservePointer;
 | 
|---|
| 2529 | } IO_CSQ, *PIO_CSQ;
 | 
|---|
| 2530 | 
 | 
|---|
| 2531 | #include <pshpack4.h>
 | 
|---|
| 2532 | typedef struct _IO_STACK_LOCATION {
 | 
|---|
| 2533 |   UCHAR  MajorFunction;
 | 
|---|
| 2534 |   UCHAR  MinorFunction;
 | 
|---|
| 2535 |   UCHAR  Flags;
 | 
|---|
| 2536 |   UCHAR  Control;
 | 
|---|
| 2537 |   union {
 | 
|---|
| 2538 |     struct {
 | 
|---|
| 2539 |       PIO_SECURITY_CONTEXT  SecurityContext;
 | 
|---|
| 2540 |       ULONG  Options;
 | 
|---|
| 2541 |       USHORT POINTER_ALIGNMENT  FileAttributes;
 | 
|---|
| 2542 |       USHORT  ShareAccess;
 | 
|---|
| 2543 |       ULONG POINTER_ALIGNMENT  EaLength;
 | 
|---|
| 2544 |     } Create;
 | 
|---|
| 2545 |     struct {
 | 
|---|
| 2546 |       ULONG  Length;
 | 
|---|
| 2547 |       ULONG POINTER_ALIGNMENT  Key;
 | 
|---|
| 2548 |       LARGE_INTEGER  ByteOffset;
 | 
|---|
| 2549 |     } Read;
 | 
|---|
| 2550 |     struct {
 | 
|---|
| 2551 |       ULONG  Length;
 | 
|---|
| 2552 |       ULONG POINTER_ALIGNMENT  Key;
 | 
|---|
| 2553 |       LARGE_INTEGER  ByteOffset;
 | 
|---|
| 2554 |     } Write;
 | 
|---|
| 2555 |     struct {
 | 
|---|
| 2556 |       ULONG  Length;
 | 
|---|
| 2557 |       FILE_INFORMATION_CLASS POINTER_ALIGNMENT  FileInformationClass;
 | 
|---|
| 2558 |     } QueryFile;
 | 
|---|
| 2559 |     struct {
 | 
|---|
| 2560 |       ULONG  Length;
 | 
|---|
| 2561 |       FILE_INFORMATION_CLASS POINTER_ALIGNMENT  FileInformationClass;
 | 
|---|
| 2562 |       PFILE_OBJECT  FileObject;
 | 
|---|
| 2563 |       _ANONYMOUS_UNION union {
 | 
|---|
| 2564 |         _ANONYMOUS_STRUCT struct {
 | 
|---|
| 2565 |           BOOLEAN  ReplaceIfExists;
 | 
|---|
| 2566 |           BOOLEAN  AdvanceOnly;
 | 
|---|
| 2567 |         } DUMMYSTRUCTNAME;
 | 
|---|
| 2568 |         ULONG  ClusterCount;
 | 
|---|
| 2569 |         HANDLE  DeleteHandle;
 | 
|---|
| 2570 |       } DUMMYUNIONNAME;
 | 
|---|
| 2571 |     } SetFile;
 | 
|---|
| 2572 |     struct {
 | 
|---|
| 2573 |       ULONG  Length;
 | 
|---|
| 2574 |       FS_INFORMATION_CLASS POINTER_ALIGNMENT  FsInformationClass;
 | 
|---|
| 2575 |     } QueryVolume;
 | 
|---|
| 2576 |     struct {
 | 
|---|
| 2577 |       ULONG  OutputBufferLength;
 | 
|---|
| 2578 |       ULONG POINTER_ALIGNMENT  InputBufferLength;
 | 
|---|
| 2579 |       ULONG POINTER_ALIGNMENT  IoControlCode;
 | 
|---|
| 2580 |       PVOID  Type3InputBuffer;
 | 
|---|
| 2581 |     } DeviceIoControl;
 | 
|---|
| 2582 |     struct {
 | 
|---|
| 2583 |       SECURITY_INFORMATION  SecurityInformation;
 | 
|---|
| 2584 |       ULONG POINTER_ALIGNMENT  Length;
 | 
|---|
| 2585 |     } QuerySecurity;
 | 
|---|
| 2586 |     struct {
 | 
|---|
| 2587 |       SECURITY_INFORMATION  SecurityInformation;
 | 
|---|
| 2588 |       PSECURITY_DESCRIPTOR  SecurityDescriptor;
 | 
|---|
| 2589 |     } SetSecurity;
 | 
|---|
| 2590 |     struct {
 | 
|---|
| 2591 |       PVPB  Vpb;
 | 
|---|
| 2592 |       PDEVICE_OBJECT  DeviceObject;
 | 
|---|
| 2593 |     } MountVolume;
 | 
|---|
| 2594 |     struct {
 | 
|---|
| 2595 |       PVPB  Vpb;
 | 
|---|
| 2596 |       PDEVICE_OBJECT  DeviceObject;
 | 
|---|
| 2597 |     } VerifyVolume;
 | 
|---|
| 2598 |     struct {
 | 
|---|
| 2599 |       struct _SCSI_REQUEST_BLOCK  *Srb;
 | 
|---|
| 2600 |     } Scsi;
 | 
|---|
| 2601 |     struct {
 | 
|---|
| 2602 |       DEVICE_RELATION_TYPE  Type;
 | 
|---|
| 2603 |     } QueryDeviceRelations;
 | 
|---|
| 2604 |     struct {
 | 
|---|
| 2605 |       CONST GUID  *InterfaceType;
 | 
|---|
| 2606 |       USHORT  Size;
 | 
|---|
| 2607 |       USHORT  Version;
 | 
|---|
| 2608 |       PINTERFACE  Interface;
 | 
|---|
| 2609 |       PVOID  InterfaceSpecificData;
 | 
|---|
| 2610 |     } QueryInterface;
 | 
|---|
| 2611 |     struct {
 | 
|---|
| 2612 |       PDEVICE_CAPABILITIES  Capabilities;
 | 
|---|
| 2613 |     } DeviceCapabilities;
 | 
|---|
| 2614 |     struct {
 | 
|---|
| 2615 |       PIO_RESOURCE_REQUIREMENTS_LIST  IoResourceRequirementList;
 | 
|---|
| 2616 |     } FilterResourceRequirements;
 | 
|---|
| 2617 |     struct {
 | 
|---|
| 2618 |       ULONG  WhichSpace;
 | 
|---|
| 2619 |       PVOID  Buffer;
 | 
|---|
| 2620 |       ULONG  Offset;
 | 
|---|
| 2621 |       ULONG POINTER_ALIGNMENT  Length;
 | 
|---|
| 2622 |     } ReadWriteConfig;
 | 
|---|
| 2623 |     struct {
 | 
|---|
| 2624 |       BOOLEAN  Lock;
 | 
|---|
| 2625 |     } SetLock;
 | 
|---|
| 2626 |     struct {
 | 
|---|
| 2627 |       BUS_QUERY_ID_TYPE  IdType;
 | 
|---|
| 2628 |     } QueryId;
 | 
|---|
| 2629 |     struct {
 | 
|---|
| 2630 |       DEVICE_TEXT_TYPE  DeviceTextType;
 | 
|---|
| 2631 |       LCID POINTER_ALIGNMENT  LocaleId;
 | 
|---|
| 2632 |     } QueryDeviceText;
 | 
|---|
| 2633 |     struct {
 | 
|---|
| 2634 |       BOOLEAN  InPath;
 | 
|---|
| 2635 |       BOOLEAN  Reserved[3];
 | 
|---|
| 2636 |       DEVICE_USAGE_NOTIFICATION_TYPE POINTER_ALIGNMENT  Type;
 | 
|---|
| 2637 |     } UsageNotification;
 | 
|---|
| 2638 |     struct {
 | 
|---|
| 2639 |       SYSTEM_POWER_STATE  PowerState;
 | 
|---|
| 2640 |     } WaitWake;
 | 
|---|
| 2641 |     struct {
 | 
|---|
| 2642 |       PPOWER_SEQUENCE  PowerSequence;
 | 
|---|
| 2643 |     } PowerSequence;
 | 
|---|
| 2644 |     struct {
 | 
|---|
| 2645 |       ULONG  SystemContext;
 | 
|---|
| 2646 |       POWER_STATE_TYPE POINTER_ALIGNMENT  Type;
 | 
|---|
| 2647 |       POWER_STATE POINTER_ALIGNMENT  State;
 | 
|---|
| 2648 |       POWER_ACTION POINTER_ALIGNMENT  ShutdownType;
 | 
|---|
| 2649 |     } Power;
 | 
|---|
| 2650 |     struct {
 | 
|---|
| 2651 |       PCM_RESOURCE_LIST  AllocatedResources;
 | 
|---|
| 2652 |       PCM_RESOURCE_LIST  AllocatedResourcesTranslated;
 | 
|---|
| 2653 |     } StartDevice;
 | 
|---|
| 2654 |     struct {
 | 
|---|
| 2655 |       ULONG_PTR  ProviderId;
 | 
|---|
| 2656 |       PVOID  DataPath;
 | 
|---|
| 2657 |       ULONG  BufferSize;
 | 
|---|
| 2658 |       PVOID  Buffer;
 | 
|---|
| 2659 |     } WMI;
 | 
|---|
| 2660 |     struct {
 | 
|---|
| 2661 |       PVOID  Argument1;
 | 
|---|
| 2662 |       PVOID  Argument2;
 | 
|---|
| 2663 |       PVOID  Argument3;
 | 
|---|
| 2664 |       PVOID  Argument4;
 | 
|---|
| 2665 |     } Others;
 | 
|---|
| 2666 |   } Parameters;
 | 
|---|
| 2667 |   PDEVICE_OBJECT  DeviceObject;
 | 
|---|
| 2668 |   PFILE_OBJECT  FileObject;
 | 
|---|
| 2669 |   PIO_COMPLETION_ROUTINE  CompletionRoutine;
 | 
|---|
| 2670 |   PVOID  Context;
 | 
|---|
| 2671 | } IO_STACK_LOCATION, *PIO_STACK_LOCATION;
 | 
|---|
| 2672 | #include <poppack.h>
 | 
|---|
| 2673 | 
 | 
|---|
| 2674 | /* IO_STACK_LOCATION.Control */
 | 
|---|
| 2675 | 
 | 
|---|
| 2676 | #define SL_PENDING_RETURNED               0x01
 | 
|---|
| 2677 | #define SL_INVOKE_ON_CANCEL               0x20
 | 
|---|
| 2678 | #define SL_INVOKE_ON_SUCCESS              0x40
 | 
|---|
| 2679 | #define SL_INVOKE_ON_ERROR                0x80
 | 
|---|
| 2680 | 
 | 
|---|
| 2681 | typedef enum _KEY_INFORMATION_CLASS {
 | 
|---|
| 2682 |   KeyBasicInformation,
 | 
|---|
| 2683 |   KeyNodeInformation,
 | 
|---|
| 2684 |   KeyFullInformation,
 | 
|---|
| 2685 |   KeyNameInformation,
 | 
|---|
| 2686 |   KeyCachedInformation,
 | 
|---|
| 2687 |   KeyFlagsInformation
 | 
|---|
| 2688 | } KEY_INFORMATION_CLASS;
 | 
|---|
| 2689 | 
 | 
|---|
| 2690 | typedef struct _KEY_BASIC_INFORMATION {
 | 
|---|
| 2691 |   LARGE_INTEGER  LastWriteTime;
 | 
|---|
| 2692 |   ULONG  TitleIndex;
 | 
|---|
| 2693 |   ULONG  NameLength;
 | 
|---|
| 2694 |   WCHAR  Name[1];
 | 
|---|
| 2695 | } KEY_BASIC_INFORMATION, *PKEY_BASIC_INFORMATION;
 | 
|---|
| 2696 | 
 | 
|---|
| 2697 | typedef struct _KEY_FULL_INFORMATION {
 | 
|---|
| 2698 |   LARGE_INTEGER  LastWriteTime;
 | 
|---|
| 2699 |   ULONG  TitleIndex;
 | 
|---|
| 2700 |   ULONG  ClassOffset;
 | 
|---|
| 2701 |   ULONG  ClassLength;
 | 
|---|
| 2702 |   ULONG  SubKeys;
 | 
|---|
| 2703 |   ULONG  MaxNameLen;
 | 
|---|
| 2704 |   ULONG  MaxClassLen;
 | 
|---|
| 2705 |   ULONG  Values;
 | 
|---|
| 2706 |   ULONG  MaxValueNameLen;
 | 
|---|
| 2707 |   ULONG  MaxValueDataLen;
 | 
|---|
| 2708 |   WCHAR  Class[1];
 | 
|---|
| 2709 | } KEY_FULL_INFORMATION, *PKEY_FULL_INFORMATION;
 | 
|---|
| 2710 | 
 | 
|---|
| 2711 | typedef struct _KEY_NODE_INFORMATION {
 | 
|---|
| 2712 |   LARGE_INTEGER  LastWriteTime;
 | 
|---|
| 2713 |   ULONG  TitleIndex;
 | 
|---|
| 2714 |   ULONG  ClassOffset;
 | 
|---|
| 2715 |   ULONG  ClassLength;
 | 
|---|
| 2716 |   ULONG  NameLength;
 | 
|---|
| 2717 |   WCHAR  Name[1];
 | 
|---|
| 2718 | } KEY_NODE_INFORMATION, *PKEY_NODE_INFORMATION;
 | 
|---|
| 2719 | 
 | 
|---|
| 2720 | typedef struct _KEY_VALUE_BASIC_INFORMATION {
 | 
|---|
| 2721 |   ULONG  TitleIndex;
 | 
|---|
| 2722 |   ULONG  Type;
 | 
|---|
| 2723 |   ULONG  NameLength;
 | 
|---|
| 2724 |   WCHAR  Name[1];
 | 
|---|
| 2725 | } KEY_VALUE_BASIC_INFORMATION, *PKEY_VALUE_BASIC_INFORMATION;
 | 
|---|
| 2726 | 
 | 
|---|
| 2727 | typedef struct _KEY_VALUE_FULL_INFORMATION {
 | 
|---|
| 2728 |   ULONG  TitleIndex;
 | 
|---|
| 2729 |   ULONG  Type;
 | 
|---|
| 2730 |   ULONG  DataOffset;
 | 
|---|
| 2731 |   ULONG  DataLength;
 | 
|---|
| 2732 |   ULONG  NameLength;
 | 
|---|
| 2733 |   WCHAR  Name[1];
 | 
|---|
| 2734 | } KEY_VALUE_FULL_INFORMATION, *PKEY_VALUE_FULL_INFORMATION;
 | 
|---|
| 2735 | 
 | 
|---|
| 2736 | typedef struct _KEY_VALUE_PARTIAL_INFORMATION {
 | 
|---|
| 2737 |   ULONG  TitleIndex;
 | 
|---|
| 2738 |   ULONG  Type;
 | 
|---|
| 2739 |   ULONG  DataLength;
 | 
|---|
| 2740 |   UCHAR  Data[1];
 | 
|---|
| 2741 | } KEY_VALUE_PARTIAL_INFORMATION, *PKEY_VALUE_PARTIAL_INFORMATION;
 | 
|---|
| 2742 | 
 | 
|---|
| 2743 | typedef struct _KEY_VALUE_PARTIAL_INFORMATION_ALIGN64 {
 | 
|---|
| 2744 |   ULONG  Type;
 | 
|---|
| 2745 |   ULONG  DataLength;
 | 
|---|
| 2746 |   UCHAR  Data[1];
 | 
|---|
| 2747 | } KEY_VALUE_PARTIAL_INFORMATION_ALIGN64, *PKEY_VALUE_PARTIAL_INFORMATION_ALIGN64;
 | 
|---|
| 2748 | 
 | 
|---|
| 2749 | typedef struct _KEY_VALUE_ENTRY {
 | 
|---|
| 2750 |   PUNICODE_STRING  ValueName;
 | 
|---|
| 2751 |   ULONG  DataLength;
 | 
|---|
| 2752 |   ULONG  DataOffset;
 | 
|---|
| 2753 |   ULONG  Type;
 | 
|---|
| 2754 | } KEY_VALUE_ENTRY, *PKEY_VALUE_ENTRY;
 | 
|---|
| 2755 | 
 | 
|---|
| 2756 | typedef enum _KEY_VALUE_INFORMATION_CLASS {
 | 
|---|
| 2757 |   KeyValueBasicInformation,
 | 
|---|
| 2758 |   KeyValueFullInformation,
 | 
|---|
| 2759 |   KeyValuePartialInformation,
 | 
|---|
| 2760 |   KeyValueFullInformationAlign64,
 | 
|---|
| 2761 |   KeyValuePartialInformationAlign64
 | 
|---|
| 2762 | } KEY_VALUE_INFORMATION_CLASS;
 | 
|---|
| 2763 | 
 | 
|---|
| 2764 | /* KEY_VALUE_Xxx.Type */
 | 
|---|
| 2765 | 
 | 
|---|
| 2766 | #define REG_NONE                           0
 | 
|---|
| 2767 | #define REG_SZ                             1
 | 
|---|
| 2768 | #define REG_EXPAND_SZ                      2
 | 
|---|
| 2769 | #define REG_BINARY                         3
 | 
|---|
| 2770 | #define REG_DWORD                          4
 | 
|---|
| 2771 | #define REG_DWORD_LITTLE_ENDIAN            4
 | 
|---|
| 2772 | #define REG_DWORD_BIG_ENDIAN               5
 | 
|---|
| 2773 | #define REG_LINK                           6
 | 
|---|
| 2774 | #define REG_MULTI_SZ                       7
 | 
|---|
| 2775 | #define REG_RESOURCE_LIST                  8
 | 
|---|
| 2776 | #define REG_FULL_RESOURCE_DESCRIPTOR       9
 | 
|---|
| 2777 | #define REG_RESOURCE_REQUIREMENTS_LIST    10
 | 
|---|
| 2778 | #define REG_QWORD                         11
 | 
|---|
| 2779 | #define REG_QWORD_LITTLE_ENDIAN           11
 | 
|---|
| 2780 | 
 | 
|---|
| 2781 | #define PCI_TYPE0_ADDRESSES               6
 | 
|---|
| 2782 | #define PCI_TYPE1_ADDRESSES               2
 | 
|---|
| 2783 | #define PCI_TYPE2_ADDRESSES               5
 | 
|---|
| 2784 | 
 | 
|---|
| 2785 | typedef struct _PCI_COMMON_CONFIG {
 | 
|---|
| 2786 |   USHORT  VendorID;
 | 
|---|
| 2787 |   USHORT  DeviceID;
 | 
|---|
| 2788 |   USHORT  Command;
 | 
|---|
| 2789 |   USHORT  Status;
 | 
|---|
| 2790 |   UCHAR  RevisionID;
 | 
|---|
| 2791 |   UCHAR  ProgIf;
 | 
|---|
| 2792 |   UCHAR  SubClass;
 | 
|---|
| 2793 |   UCHAR  BaseClass;
 | 
|---|
| 2794 |   UCHAR  CacheLineSize;
 | 
|---|
| 2795 |   UCHAR  LatencyTimer;
 | 
|---|
| 2796 |   UCHAR  HeaderType;
 | 
|---|
| 2797 |   UCHAR  BIST;
 | 
|---|
| 2798 |   union {
 | 
|---|
| 2799 |     struct _PCI_HEADER_TYPE_0 {
 | 
|---|
| 2800 |       ULONG  BaseAddresses[PCI_TYPE0_ADDRESSES];
 | 
|---|
| 2801 |       ULONG  CIS;
 | 
|---|
| 2802 |       USHORT  SubVendorID;
 | 
|---|
| 2803 |       USHORT  SubSystemID;
 | 
|---|
| 2804 |       ULONG  ROMBaseAddress;
 | 
|---|
| 2805 |       UCHAR  CapabilitiesPtr;
 | 
|---|
| 2806 |       UCHAR  Reserved1[3];
 | 
|---|
| 2807 |       ULONG  Reserved2;
 | 
|---|
| 2808 |       UCHAR  InterruptLine;
 | 
|---|
| 2809 |       UCHAR  InterruptPin;
 | 
|---|
| 2810 |       UCHAR  MinimumGrant;
 | 
|---|
| 2811 |       UCHAR  MaximumLatency;
 | 
|---|
| 2812 |     } type0;
 | 
|---|
| 2813 |       struct _PCI_HEADER_TYPE_1 {
 | 
|---|
| 2814 |         ULONG  BaseAddresses[PCI_TYPE1_ADDRESSES];
 | 
|---|
| 2815 |         UCHAR  PrimaryBus;
 | 
|---|
| 2816 |         UCHAR  SecondaryBus;
 | 
|---|
| 2817 |         UCHAR  SubordinateBus;
 | 
|---|
| 2818 |         UCHAR  SecondaryLatency;
 | 
|---|
| 2819 |         UCHAR  IOBase;
 | 
|---|
| 2820 |         UCHAR  IOLimit;
 | 
|---|
| 2821 |         USHORT  SecondaryStatus;
 | 
|---|
| 2822 |         USHORT  MemoryBase;
 | 
|---|
| 2823 |         USHORT  MemoryLimit;
 | 
|---|
| 2824 |         USHORT  PrefetchBase;
 | 
|---|
| 2825 |         USHORT  PrefetchLimit;
 | 
|---|
| 2826 |         ULONG  PrefetchBaseUpper32;
 | 
|---|
| 2827 |         ULONG  PrefetchLimitUpper32;
 | 
|---|
| 2828 |         USHORT  IOBaseUpper16;
 | 
|---|
| 2829 |         USHORT  IOLimitUpper16;
 | 
|---|
| 2830 |         UCHAR  CapabilitiesPtr;
 | 
|---|
| 2831 |         UCHAR  Reserved1[3];
 | 
|---|
| 2832 |         ULONG  ROMBaseAddress;
 | 
|---|
| 2833 |         UCHAR  InterruptLine;
 | 
|---|
| 2834 |         UCHAR  InterruptPin;
 | 
|---|
| 2835 |         USHORT  BridgeControl;
 | 
|---|
| 2836 |       } type1;
 | 
|---|
| 2837 |       struct _PCI_HEADER_TYPE_2 {
 | 
|---|
| 2838 |         ULONG  SocketRegistersBaseAddress;
 | 
|---|
| 2839 |         UCHAR  CapabilitiesPtr;
 | 
|---|
| 2840 |         UCHAR  Reserved;
 | 
|---|
| 2841 |         USHORT  SecondaryStatus;
 | 
|---|
| 2842 |         UCHAR  PrimaryBus;
 | 
|---|
| 2843 |         UCHAR  SecondaryBus;
 | 
|---|
| 2844 |         UCHAR  SubordinateBus;
 | 
|---|
| 2845 |         UCHAR  SecondaryLatency;
 | 
|---|
| 2846 |         struct {
 | 
|---|
| 2847 |           ULONG  Base;
 | 
|---|
| 2848 |           ULONG  Limit;
 | 
|---|
| 2849 |         } Range[PCI_TYPE2_ADDRESSES - 1];
 | 
|---|
| 2850 |         UCHAR  InterruptLine;
 | 
|---|
| 2851 |         UCHAR  InterruptPin;
 | 
|---|
| 2852 |         USHORT  BridgeControl;
 | 
|---|
| 2853 |       } type2;
 | 
|---|
| 2854 |   } u;
 | 
|---|
| 2855 |   UCHAR  DeviceSpecific[192];
 | 
|---|
| 2856 | } PCI_COMMON_CONFIG, *PPCI_COMMON_CONFIG;
 | 
|---|
| 2857 | 
 | 
|---|
| 2858 | /* PCI_COMMON_CONFIG.Command */
 | 
|---|
| 2859 | 
 | 
|---|
| 2860 | #define PCI_ENABLE_IO_SPACE               0x0001
 | 
|---|
| 2861 | #define PCI_ENABLE_MEMORY_SPACE           0x0002
 | 
|---|
| 2862 | #define PCI_ENABLE_BUS_MASTER             0x0004
 | 
|---|
| 2863 | #define PCI_ENABLE_SPECIAL_CYCLES         0x0008
 | 
|---|
| 2864 | #define PCI_ENABLE_WRITE_AND_INVALIDATE   0x0010
 | 
|---|
| 2865 | #define PCI_ENABLE_VGA_COMPATIBLE_PALETTE 0x0020
 | 
|---|
| 2866 | #define PCI_ENABLE_PARITY                 0x0040
 | 
|---|
| 2867 | #define PCI_ENABLE_WAIT_CYCLE             0x0080
 | 
|---|
| 2868 | #define PCI_ENABLE_SERR                   0x0100
 | 
|---|
| 2869 | #define PCI_ENABLE_FAST_BACK_TO_BACK      0x0200
 | 
|---|
| 2870 | 
 | 
|---|
| 2871 | /* PCI_COMMON_CONFIG.Status */
 | 
|---|
| 2872 | 
 | 
|---|
| 2873 | #define PCI_STATUS_CAPABILITIES_LIST      0x0010
 | 
|---|
| 2874 | #define PCI_STATUS_66MHZ_CAPABLE          0x0020
 | 
|---|
| 2875 | #define PCI_STATUS_UDF_SUPPORTED          0x0040
 | 
|---|
| 2876 | #define PCI_STATUS_FAST_BACK_TO_BACK      0x0080
 | 
|---|
| 2877 | #define PCI_STATUS_DATA_PARITY_DETECTED   0x0100
 | 
|---|
| 2878 | #define PCI_STATUS_DEVSEL                 0x0600
 | 
|---|
| 2879 | #define PCI_STATUS_SIGNALED_TARGET_ABORT  0x0800
 | 
|---|
| 2880 | #define PCI_STATUS_RECEIVED_TARGET_ABORT  0x1000
 | 
|---|
| 2881 | #define PCI_STATUS_RECEIVED_MASTER_ABORT  0x2000
 | 
|---|
| 2882 | #define PCI_STATUS_SIGNALED_SYSTEM_ERROR  0x4000
 | 
|---|
| 2883 | #define PCI_STATUS_DETECTED_PARITY_ERROR  0x8000
 | 
|---|
| 2884 | 
 | 
|---|
| 2885 | /* PCI_COMMON_CONFIG.HeaderType */
 | 
|---|
| 2886 | 
 | 
|---|
| 2887 | #define PCI_MULTIFUNCTION                 0x80
 | 
|---|
| 2888 | #define PCI_DEVICE_TYPE                   0x00
 | 
|---|
| 2889 | #define PCI_BRIDGE_TYPE                   0x01
 | 
|---|
| 2890 | #define PCI_CARDBUS_BRIDGE_TYPE           0x02
 | 
|---|
| 2891 | 
 | 
|---|
| 2892 | #define PCI_CONFIGURATION_TYPE(PciData) \
 | 
|---|
| 2893 |   (((PPCI_COMMON_CONFIG) (PciData))->HeaderType & ~PCI_MULTIFUNCTION)
 | 
|---|
| 2894 | 
 | 
|---|
| 2895 | #define PCI_MULTIFUNCTION_DEVICE(PciData) \
 | 
|---|
| 2896 |   ((((PPCI_COMMON_CONFIG) (PciData))->HeaderType & PCI_MULTIFUNCTION) != 0)
 | 
|---|
| 2897 | 
 | 
|---|
| 2898 | typedef struct _PCI_SLOT_NUMBER {
 | 
|---|
| 2899 |   union {
 | 
|---|
| 2900 |     struct {
 | 
|---|
| 2901 |       ULONG  DeviceNumber : 5;
 | 
|---|
| 2902 |       ULONG  FunctionNumber : 3;
 | 
|---|
| 2903 |       ULONG  Reserved : 24;
 | 
|---|
| 2904 |     } bits;
 | 
|---|
| 2905 |     ULONG  AsULONG;
 | 
|---|
| 2906 |   } u;
 | 
|---|
| 2907 | } PCI_SLOT_NUMBER, *PPCI_SLOT_NUMBER;
 | 
|---|
| 2908 | 
 | 
|---|
| 2909 | typedef enum _POOL_TYPE {
 | 
|---|
| 2910 |   NonPagedPool,
 | 
|---|
| 2911 |   PagedPool,
 | 
|---|
| 2912 |   NonPagedPoolMustSucceed,
 | 
|---|
| 2913 |   DontUseThisType,
 | 
|---|
| 2914 |   NonPagedPoolCacheAligned,
 | 
|---|
| 2915 |   PagedPoolCacheAligned,
 | 
|---|
| 2916 |   NonPagedPoolCacheAlignedMustS,
 | 
|---|
| 2917 |         MaxPoolType,
 | 
|---|
| 2918 |         NonPagedPoolSession = 32,
 | 
|---|
| 2919 |         PagedPoolSession,
 | 
|---|
| 2920 |         NonPagedPoolMustSucceedSession,
 | 
|---|
| 2921 |         DontUseThisTypeSession,
 | 
|---|
| 2922 |         NonPagedPoolCacheAlignedSession,
 | 
|---|
| 2923 |         PagedPoolCacheAlignedSession,
 | 
|---|
| 2924 |         NonPagedPoolCacheAlignedMustSSession
 | 
|---|
| 2925 | } POOL_TYPE;
 | 
|---|
| 2926 | 
 | 
|---|
| 2927 | typedef enum _EX_POOL_PRIORITY {
 | 
|---|
| 2928 |   LowPoolPriority,
 | 
|---|
| 2929 |   LowPoolPrioritySpecialPoolOverrun = 8,
 | 
|---|
| 2930 |   LowPoolPrioritySpecialPoolUnderrun = 9,
 | 
|---|
| 2931 |   NormalPoolPriority = 16,
 | 
|---|
| 2932 |   NormalPoolPrioritySpecialPoolOverrun = 24,
 | 
|---|
| 2933 |   NormalPoolPrioritySpecialPoolUnderrun = 25,
 | 
|---|
| 2934 |   HighPoolPriority = 32,
 | 
|---|
| 2935 |   HighPoolPrioritySpecialPoolOverrun = 40,
 | 
|---|
| 2936 |   HighPoolPrioritySpecialPoolUnderrun = 41
 | 
|---|
| 2937 | } EX_POOL_PRIORITY;
 | 
|---|
| 2938 | 
 | 
|---|
| 2939 | /* PRIVILEGE_SET.Control */
 | 
|---|
| 2940 | 
 | 
|---|
| 2941 | #define PRIVILEGE_SET_ALL_NECESSARY       1
 | 
|---|
| 2942 | 
 | 
|---|
| 2943 | typedef struct _RTL_OSVERSIONINFOW {
 | 
|---|
| 2944 |   ULONG  dwOSVersionInfoSize;
 | 
|---|
| 2945 |   ULONG  dwMajorVersion;
 | 
|---|
| 2946 |   ULONG  dwMinorVersion;
 | 
|---|
| 2947 |   ULONG  dwBuildNumber;
 | 
|---|
| 2948 |   ULONG  dwPlatformId;
 | 
|---|
| 2949 |   WCHAR  szCSDVersion[128];
 | 
|---|
| 2950 | } RTL_OSVERSIONINFOW, *PRTL_OSVERSIONINFOW;
 | 
|---|
| 2951 | 
 | 
|---|
| 2952 | typedef struct _RTL_OSVERSIONINFOEXW {
 | 
|---|
| 2953 |   ULONG  dwOSVersionInfoSize;
 | 
|---|
| 2954 |   ULONG  dwMajorVersion;
 | 
|---|
| 2955 |   ULONG  dwMinorVersion;
 | 
|---|
| 2956 |   ULONG  dwBuildNumber;
 | 
|---|
| 2957 |   ULONG  dwPlatformId;
 | 
|---|
| 2958 |   WCHAR  szCSDVersion[128];
 | 
|---|
| 2959 |   USHORT  wServicePackMajor;
 | 
|---|
| 2960 |   USHORT  wServicePackMinor;
 | 
|---|
| 2961 |   USHORT  wSuiteMask;
 | 
|---|
| 2962 |   UCHAR  wProductType;
 | 
|---|
| 2963 |   UCHAR  wReserved;
 | 
|---|
| 2964 | } RTL_OSVERSIONINFOEXW, *PRTL_OSVERSIONINFOEXW;
 | 
|---|
| 2965 | 
 | 
|---|
| 2966 | NTOSAPI
 | 
|---|
| 2967 | ULONGLONG
 | 
|---|
| 2968 | DDKAPI
 | 
|---|
| 2969 | VerSetConditionMask(
 | 
|---|
| 2970 |   IN ULONGLONG  ConditionMask,
 | 
|---|
| 2971 |   IN ULONG  TypeMask,
 | 
|---|
| 2972 |   IN UCHAR  Condition);
 | 
|---|
| 2973 | 
 | 
|---|
| 2974 | #define VER_SET_CONDITION(ConditionMask, TypeBitMask, ComparisonType)  \
 | 
|---|
| 2975 |         ((ConditionMask) = VerSetConditionMask((ConditionMask), \
 | 
|---|
| 2976 |         (TypeBitMask), (ComparisonType)))
 | 
|---|
| 2977 | 
 | 
|---|
| 2978 | /* RtlVerifyVersionInfo() TypeMask */
 | 
|---|
| 2979 | 
 | 
|---|
| 2980 | #define VER_MINORVERSION                  0x0000001
 | 
|---|
| 2981 | #define VER_MAJORVERSION                  0x0000002
 | 
|---|
| 2982 | #define VER_BUILDNUMBER                   0x0000004
 | 
|---|
| 2983 | #define VER_PLATFORMID                    0x0000008
 | 
|---|
| 2984 | #define VER_SERVICEPACKMINOR              0x0000010
 | 
|---|
| 2985 | #define VER_SERVICEPACKMAJOR              0x0000020
 | 
|---|
| 2986 | #define VER_SUITENAME                     0x0000040
 | 
|---|
| 2987 | #define VER_PRODUCT_TYPE                  0x0000080
 | 
|---|
| 2988 | 
 | 
|---|
| 2989 | /* RtlVerifyVersionInfo() ComparisonType */
 | 
|---|
| 2990 | 
 | 
|---|
| 2991 | #define VER_EQUAL                       1
 | 
|---|
| 2992 | #define VER_GREATER                     2
 | 
|---|
| 2993 | #define VER_GREATER_EQUAL               3
 | 
|---|
| 2994 | #define VER_LESS                        4
 | 
|---|
| 2995 | #define VER_LESS_EQUAL                  5
 | 
|---|
| 2996 | #define VER_AND                         6
 | 
|---|
| 2997 | #define VER_OR                          7
 | 
|---|
| 2998 | 
 | 
|---|
| 2999 | #define VER_CONDITION_MASK              7
 | 
|---|
| 3000 | #define VER_NUM_BITS_PER_CONDITION_MASK 3
 | 
|---|
| 3001 | 
 | 
|---|
| 3002 | typedef struct _RTL_BITMAP {
 | 
|---|
| 3003 |   ULONG  SizeOfBitMap;
 | 
|---|
| 3004 |   PULONG  Buffer;
 | 
|---|
| 3005 | } RTL_BITMAP, *PRTL_BITMAP;
 | 
|---|
| 3006 | 
 | 
|---|
| 3007 | typedef struct _RTL_BITMAP_RUN {
 | 
|---|
| 3008 |     ULONG  StartingIndex;
 | 
|---|
| 3009 |     ULONG  NumberOfBits;
 | 
|---|
| 3010 | } RTL_BITMAP_RUN, *PRTL_BITMAP_RUN;
 | 
|---|
| 3011 | 
 | 
|---|
| 3012 | typedef NTSTATUS DDKAPI
 | 
|---|
| 3013 | (*PRTL_QUERY_REGISTRY_ROUTINE)(
 | 
|---|
| 3014 |   IN PWSTR  ValueName,
 | 
|---|
| 3015 |   IN ULONG  ValueType,
 | 
|---|
| 3016 |   IN PVOID  ValueData,
 | 
|---|
| 3017 |   IN ULONG  ValueLength,
 | 
|---|
| 3018 |   IN PVOID  Context,
 | 
|---|
| 3019 |   IN PVOID  EntryContext);
 | 
|---|
| 3020 | 
 | 
|---|
| 3021 | #define RTL_REGISTRY_ABSOLUTE             0
 | 
|---|
| 3022 | #define RTL_REGISTRY_SERVICES             1
 | 
|---|
| 3023 | #define RTL_REGISTRY_CONTROL              2
 | 
|---|
| 3024 | #define RTL_REGISTRY_WINDOWS_NT           3
 | 
|---|
| 3025 | #define RTL_REGISTRY_DEVICEMAP            4
 | 
|---|
| 3026 | #define RTL_REGISTRY_USER                 5
 | 
|---|
| 3027 | 
 | 
|---|
| 3028 | /* RTL_QUERY_REGISTRY_TABLE.Flags */
 | 
|---|
| 3029 | #define RTL_QUERY_REGISTRY_SUBKEY         0x00000001
 | 
|---|
| 3030 | #define RTL_QUERY_REGISTRY_TOPKEY         0x00000002
 | 
|---|
| 3031 | #define RTL_QUERY_REGISTRY_REQUIRED       0x00000004
 | 
|---|
| 3032 | #define RTL_QUERY_REGISTRY_NOVALUE        0x00000008
 | 
|---|
| 3033 | #define RTL_QUERY_REGISTRY_NOEXPAND       0x00000010
 | 
|---|
| 3034 | #define RTL_QUERY_REGISTRY_DIRECT         0x00000020
 | 
|---|
| 3035 | #define RTL_QUERY_REGISTRY_DELETE         0x00000040
 | 
|---|
| 3036 | 
 | 
|---|
| 3037 | typedef struct _RTL_QUERY_REGISTRY_TABLE {
 | 
|---|
| 3038 |   PRTL_QUERY_REGISTRY_ROUTINE  QueryRoutine;
 | 
|---|
| 3039 |   ULONG  Flags;
 | 
|---|
| 3040 |   PWSTR  Name;
 | 
|---|
| 3041 |   PVOID  EntryContext;
 | 
|---|
| 3042 |   ULONG  DefaultType;
 | 
|---|
| 3043 |   PVOID  DefaultData;
 | 
|---|
| 3044 |   ULONG  DefaultLength;
 | 
|---|
| 3045 | } RTL_QUERY_REGISTRY_TABLE, *PRTL_QUERY_REGISTRY_TABLE;
 | 
|---|
| 3046 | 
 | 
|---|
| 3047 | typedef struct _TIME_FIELDS {
 | 
|---|
| 3048 |   CSHORT  Year;
 | 
|---|
| 3049 |   CSHORT  Month;
 | 
|---|
| 3050 |   CSHORT  Day;
 | 
|---|
| 3051 |   CSHORT  Hour;
 | 
|---|
| 3052 |   CSHORT  Minute;
 | 
|---|
| 3053 |   CSHORT  Second;
 | 
|---|
| 3054 |   CSHORT  Milliseconds;
 | 
|---|
| 3055 |   CSHORT  Weekday;
 | 
|---|
| 3056 | } TIME_FIELDS, *PTIME_FIELDS;
 | 
|---|
| 3057 | 
 | 
|---|
| 3058 | typedef PVOID DDKAPI
 | 
|---|
| 3059 | (*PALLOCATE_FUNCTION)(
 | 
|---|
| 3060 |   IN POOL_TYPE  PoolType,
 | 
|---|
| 3061 |   IN SIZE_T  NumberOfBytes,
 | 
|---|
| 3062 |   IN ULONG  Tag);
 | 
|---|
| 3063 | 
 | 
|---|
| 3064 | typedef VOID DDKAPI
 | 
|---|
| 3065 | (*PFREE_FUNCTION)(
 | 
|---|
| 3066 |   IN PVOID  Buffer);
 | 
|---|
| 3067 | 
 | 
|---|
| 3068 | #define GENERAL_LOOKASIDE_S \
 | 
|---|
| 3069 |   SLIST_HEADER  ListHead; \
 | 
|---|
| 3070 |   USHORT  Depth; \
 | 
|---|
| 3071 |   USHORT  MaximumDepth; \
 | 
|---|
| 3072 |   ULONG  TotalAllocates; \
 | 
|---|
| 3073 |   _ANONYMOUS_UNION union { \
 | 
|---|
| 3074 |     ULONG  AllocateMisses; \
 | 
|---|
| 3075 |     ULONG  AllocateHits; \
 | 
|---|
| 3076 |   } DUMMYUNIONNAME; \
 | 
|---|
| 3077 |   ULONG  TotalFrees; \
 | 
|---|
| 3078 |   _ANONYMOUS_UNION union { \
 | 
|---|
| 3079 |     ULONG  FreeMisses; \
 | 
|---|
| 3080 |     ULONG  FreeHits; \
 | 
|---|
| 3081 |   } DUMMYUNIONNAME2; \
 | 
|---|
| 3082 |   POOL_TYPE  Type; \
 | 
|---|
| 3083 |   ULONG  Tag; \
 | 
|---|
| 3084 |   ULONG  Size; \
 | 
|---|
| 3085 |   PALLOCATE_FUNCTION  Allocate; \
 | 
|---|
| 3086 |   PFREE_FUNCTION  Free; \
 | 
|---|
| 3087 |   LIST_ENTRY  ListEntry; \
 | 
|---|
| 3088 |   ULONG  LastTotalAllocates; \
 | 
|---|
| 3089 |   _ANONYMOUS_UNION union { \
 | 
|---|
| 3090 |     ULONG  LastAllocateMisses; \
 | 
|---|
| 3091 |     ULONG  LastAllocateHits; \
 | 
|---|
| 3092 |   } DUMMYUNIONNAME3; \
 | 
|---|
| 3093 |   ULONG Future[2];
 | 
|---|
| 3094 | 
 | 
|---|
| 3095 | typedef struct _GENERAL_LOOKASIDE {
 | 
|---|
| 3096 |   GENERAL_LOOKASIDE_S
 | 
|---|
| 3097 | } GENERAL_LOOKASIDE, *PGENERAL_LOOKASIDE;
 | 
|---|
| 3098 | 
 | 
|---|
| 3099 | typedef struct _NPAGED_LOOKASIDE_LIST {
 | 
|---|
| 3100 |   GENERAL_LOOKASIDE_S
 | 
|---|
| 3101 |   KSPIN_LOCK  Obsoleted;
 | 
|---|
| 3102 | } NPAGED_LOOKASIDE_LIST, *PNPAGED_LOOKASIDE_LIST;
 | 
|---|
| 3103 | 
 | 
|---|
| 3104 | typedef struct _PAGED_LOOKASIDE_LIST {
 | 
|---|
| 3105 |   GENERAL_LOOKASIDE_S
 | 
|---|
| 3106 |   FAST_MUTEX  Obsoleted;
 | 
|---|
| 3107 | } PAGED_LOOKASIDE_LIST, *PPAGED_LOOKASIDE_LIST;
 | 
|---|
| 3108 | 
 | 
|---|
| 3109 | typedef struct _CALLBACK_OBJECT *PCALLBACK_OBJECT;
 | 
|---|
| 3110 | 
 | 
|---|
| 3111 | typedef VOID DDKAPI (*PCALLBACK_FUNCTION)(
 | 
|---|
| 3112 |   IN PVOID  CallbackContext,
 | 
|---|
| 3113 |   IN PVOID  Argument1,
 | 
|---|
| 3114 |   IN PVOID  Argument2);
 | 
|---|
| 3115 | 
 | 
|---|
| 3116 | typedef enum _EVENT_TYPE {
 | 
|---|
| 3117 |   NotificationEvent,
 | 
|---|
| 3118 |   SynchronizationEvent
 | 
|---|
| 3119 | } EVENT_TYPE;
 | 
|---|
| 3120 | 
 | 
|---|
| 3121 | typedef enum _KWAIT_REASON {
 | 
|---|
| 3122 |   Executive,
 | 
|---|
| 3123 |   FreePage,
 | 
|---|
| 3124 |   PageIn,
 | 
|---|
| 3125 |   PoolAllocation,
 | 
|---|
| 3126 |   DelayExecution,
 | 
|---|
| 3127 |   Suspended,
 | 
|---|
| 3128 |   UserRequest,
 | 
|---|
| 3129 |   WrExecutive,
 | 
|---|
| 3130 |   WrFreePage,
 | 
|---|
| 3131 |   WrPageIn,
 | 
|---|
| 3132 |   WrPoolAllocation,
 | 
|---|
| 3133 |   WrDelayExecution,
 | 
|---|
| 3134 |   WrSuspended,
 | 
|---|
| 3135 |   WrUserRequest,
 | 
|---|
| 3136 |   WrEventPair,
 | 
|---|
| 3137 |   WrQueue,
 | 
|---|
| 3138 |   WrLpcReceive,
 | 
|---|
| 3139 |   WrLpcReply,
 | 
|---|
| 3140 |   WrVirtualMemory,
 | 
|---|
| 3141 |   WrPageOut,
 | 
|---|
| 3142 |   WrRendezvous,
 | 
|---|
| 3143 |   Spare2,
 | 
|---|
| 3144 |   Spare3,
 | 
|---|
| 3145 |   Spare4,
 | 
|---|
| 3146 |   Spare5,
 | 
|---|
| 3147 |   Spare6,
 | 
|---|
| 3148 |   WrKernel,
 | 
|---|
| 3149 |   MaximumWaitReason
 | 
|---|
| 3150 | } KWAIT_REASON;
 | 
|---|
| 3151 | 
 | 
|---|
| 3152 | typedef struct _KWAIT_BLOCK {
 | 
|---|
| 3153 |   LIST_ENTRY  WaitListEntry;
 | 
|---|
| 3154 |   struct _KTHREAD * RESTRICTED_POINTER  Thread;
 | 
|---|
| 3155 |   PVOID  Object;
 | 
|---|
| 3156 |   struct _KWAIT_BLOCK * RESTRICTED_POINTER  NextWaitBlock;
 | 
|---|
| 3157 |   USHORT  WaitKey;
 | 
|---|
| 3158 |   USHORT  WaitType;
 | 
|---|
| 3159 | } KWAIT_BLOCK, *PKWAIT_BLOCK, *RESTRICTED_POINTER PRKWAIT_BLOCK;
 | 
|---|
| 3160 | 
 | 
|---|
| 3161 | typedef struct _IO_REMOVE_LOCK_TRACKING_BLOCK * PIO_REMOVE_LOCK_TRACKING_BLOCK;
 | 
|---|
| 3162 | 
 | 
|---|
| 3163 | typedef struct _IO_REMOVE_LOCK_COMMON_BLOCK {
 | 
|---|
| 3164 |   BOOLEAN  Removed;
 | 
|---|
| 3165 |   BOOLEAN  Reserved[3];
 | 
|---|
| 3166 |   LONG  IoCount;
 | 
|---|
| 3167 |   KEVENT  RemoveEvent;
 | 
|---|
| 3168 | } IO_REMOVE_LOCK_COMMON_BLOCK;
 | 
|---|
| 3169 | 
 | 
|---|
| 3170 | typedef struct _IO_REMOVE_LOCK_DBG_BLOCK {
 | 
|---|
| 3171 |   LONG  Signature;
 | 
|---|
| 3172 |   LONG  HighWatermark;
 | 
|---|
| 3173 |   LONGLONG  MaxLockedTicks;
 | 
|---|
| 3174 |   LONG  AllocateTag;
 | 
|---|
| 3175 |   LIST_ENTRY  LockList;
 | 
|---|
| 3176 |   KSPIN_LOCK  Spin;
 | 
|---|
| 3177 |   LONG  LowMemoryCount;
 | 
|---|
| 3178 |   ULONG  Reserved1[4];
 | 
|---|
| 3179 |   PVOID  Reserved2;
 | 
|---|
| 3180 |   PIO_REMOVE_LOCK_TRACKING_BLOCK  Blocks;
 | 
|---|
| 3181 | } IO_REMOVE_LOCK_DBG_BLOCK;
 | 
|---|
| 3182 | 
 | 
|---|
| 3183 | typedef struct _IO_REMOVE_LOCK {
 | 
|---|
| 3184 |   IO_REMOVE_LOCK_COMMON_BLOCK  Common;
 | 
|---|
| 3185 | #ifdef DBG
 | 
|---|
| 3186 |   IO_REMOVE_LOCK_DBG_BLOCK  Dbg;
 | 
|---|
| 3187 | #endif
 | 
|---|
| 3188 | } IO_REMOVE_LOCK, *PIO_REMOVE_LOCK;
 | 
|---|
| 3189 | 
 | 
|---|
| 3190 | typedef struct _IO_WORKITEM *PIO_WORKITEM;
 | 
|---|
| 3191 | 
 | 
|---|
| 3192 | typedef VOID DDKAPI
 | 
|---|
| 3193 | (*PIO_WORKITEM_ROUTINE)(
 | 
|---|
| 3194 |   IN PDEVICE_OBJECT  DeviceObject,
 | 
|---|
| 3195 |   IN PVOID  Context);
 | 
|---|
| 3196 | 
 | 
|---|
| 3197 | typedef struct _SHARE_ACCESS {
 | 
|---|
| 3198 |   ULONG  OpenCount;
 | 
|---|
| 3199 |   ULONG  Readers;
 | 
|---|
| 3200 |   ULONG  Writers;
 | 
|---|
| 3201 |   ULONG  Deleters;
 | 
|---|
| 3202 |   ULONG  SharedRead;
 | 
|---|
| 3203 |   ULONG  SharedWrite;
 | 
|---|
| 3204 |   ULONG  SharedDelete;
 | 
|---|
| 3205 | } SHARE_ACCESS, *PSHARE_ACCESS;
 | 
|---|
| 3206 | 
 | 
|---|
| 3207 | typedef enum _KINTERRUPT_MODE {
 | 
|---|
| 3208 |   LevelSensitive,
 | 
|---|
| 3209 |   Latched
 | 
|---|
| 3210 | } KINTERRUPT_MODE;
 | 
|---|
| 3211 | 
 | 
|---|
| 3212 | typedef VOID DDKAPI
 | 
|---|
| 3213 | (*PKINTERRUPT_ROUTINE)(
 | 
|---|
| 3214 |   VOID);
 | 
|---|
| 3215 | 
 | 
|---|
| 3216 | typedef enum _KPROFILE_SOURCE {
 | 
|---|
| 3217 |   ProfileTime,
 | 
|---|
| 3218 |   ProfileAlignmentFixup,
 | 
|---|
| 3219 |   ProfileTotalIssues,
 | 
|---|
| 3220 |   ProfilePipelineDry,
 | 
|---|
| 3221 |   ProfileLoadInstructions,
 | 
|---|
| 3222 |   ProfilePipelineFrozen,
 | 
|---|
| 3223 |   ProfileBranchInstructions,
 | 
|---|
| 3224 |   ProfileTotalNonissues,
 | 
|---|
| 3225 |   ProfileDcacheMisses,
 | 
|---|
| 3226 |   ProfileIcacheMisses,
 | 
|---|
| 3227 |   ProfileCacheMisses,
 | 
|---|
| 3228 |   ProfileBranchMispredictions,
 | 
|---|
| 3229 |   ProfileStoreInstructions,
 | 
|---|
| 3230 |   ProfileFpInstructions,
 | 
|---|
| 3231 |   ProfileIntegerInstructions,
 | 
|---|
| 3232 |   Profile2Issue,
 | 
|---|
| 3233 |   Profile3Issue,
 | 
|---|
| 3234 |   Profile4Issue,
 | 
|---|
| 3235 |   ProfileSpecialInstructions,
 | 
|---|
| 3236 |   ProfileTotalCycles,
 | 
|---|
| 3237 |   ProfileIcacheIssues,
 | 
|---|
| 3238 |   ProfileDcacheAccesses,
 | 
|---|
| 3239 |   ProfileMemoryBarrierCycles,
 | 
|---|
| 3240 |   ProfileLoadLinkedIssues,
 | 
|---|
| 3241 |   ProfileMaximum
 | 
|---|
| 3242 | } KPROFILE_SOURCE;
 | 
|---|
| 3243 | 
 | 
|---|
| 3244 | typedef enum _CREATE_FILE_TYPE {
 | 
|---|
| 3245 |   CreateFileTypeNone,
 | 
|---|
| 3246 |   CreateFileTypeNamedPipe,
 | 
|---|
| 3247 |   CreateFileTypeMailslot
 | 
|---|
| 3248 | } CREATE_FILE_TYPE;
 | 
|---|
| 3249 | 
 | 
|---|
| 3250 | typedef struct _CONFIGURATION_INFORMATION {
 | 
|---|
| 3251 |   ULONG  DiskCount;
 | 
|---|
| 3252 |   ULONG  FloppyCount;
 | 
|---|
| 3253 |   ULONG  CdRomCount;
 | 
|---|
| 3254 |   ULONG  TapeCount;
 | 
|---|
| 3255 |   ULONG  ScsiPortCount;
 | 
|---|
| 3256 |   ULONG  SerialCount;
 | 
|---|
| 3257 |   ULONG  ParallelCount;
 | 
|---|
| 3258 |   BOOLEAN  AtDiskPrimaryAddressClaimed;
 | 
|---|
| 3259 |   BOOLEAN  AtDiskSecondaryAddressClaimed;
 | 
|---|
| 3260 |   ULONG  Version;
 | 
|---|
| 3261 |   ULONG  MediumChangerCount;
 | 
|---|
| 3262 | } CONFIGURATION_INFORMATION, *PCONFIGURATION_INFORMATION;
 | 
|---|
| 3263 | 
 | 
|---|
| 3264 | typedef enum _CONFIGURATION_TYPE {
 | 
|---|
| 3265 |   ArcSystem,
 | 
|---|
| 3266 |   CentralProcessor,
 | 
|---|
| 3267 |   FloatingPointProcessor,
 | 
|---|
| 3268 |   PrimaryIcache,
 | 
|---|
| 3269 |   PrimaryDcache,
 | 
|---|
| 3270 |   SecondaryIcache,
 | 
|---|
| 3271 |   SecondaryDcache,
 | 
|---|
| 3272 |   SecondaryCache,
 | 
|---|
| 3273 |   EisaAdapter,
 | 
|---|
| 3274 |   TcAdapter,
 | 
|---|
| 3275 |   ScsiAdapter,
 | 
|---|
| 3276 |   DtiAdapter,
 | 
|---|
| 3277 |   MultiFunctionAdapter,
 | 
|---|
| 3278 |   DiskController,
 | 
|---|
| 3279 |   TapeController,
 | 
|---|
| 3280 |   CdromController,
 | 
|---|
| 3281 |   WormController,
 | 
|---|
| 3282 |   SerialController,
 | 
|---|
| 3283 |   NetworkController,
 | 
|---|
| 3284 |   DisplayController,
 | 
|---|
| 3285 |   ParallelController,
 | 
|---|
| 3286 |   PointerController,
 | 
|---|
| 3287 |   KeyboardController,
 | 
|---|
| 3288 |   AudioController,
 | 
|---|
| 3289 |   OtherController,
 | 
|---|
| 3290 |   DiskPeripheral,
 | 
|---|
| 3291 |   FloppyDiskPeripheral,
 | 
|---|
| 3292 |   TapePeripheral,
 | 
|---|
| 3293 |   ModemPeripheral,
 | 
|---|
| 3294 |   MonitorPeripheral,
 | 
|---|
| 3295 |   PrinterPeripheral,
 | 
|---|
| 3296 |   PointerPeripheral,
 | 
|---|
| 3297 |   KeyboardPeripheral,
 | 
|---|
| 3298 |   TerminalPeripheral,
 | 
|---|
| 3299 |   OtherPeripheral,
 | 
|---|
| 3300 |   LinePeripheral,
 | 
|---|
| 3301 |   NetworkPeripheral,
 | 
|---|
| 3302 |   SystemMemory,
 | 
|---|
| 3303 |   DockingInformation,
 | 
|---|
| 3304 |   RealModeIrqRoutingTable,
 | 
|---|
| 3305 |   MaximumType
 | 
|---|
| 3306 | } CONFIGURATION_TYPE, *PCONFIGURATION_TYPE;
 | 
|---|
| 3307 | 
 | 
|---|
| 3308 | typedef NTSTATUS (*PIO_QUERY_DEVICE_ROUTINE)(
 | 
|---|
| 3309 |   IN PVOID  Context,
 | 
|---|
| 3310 |   IN PUNICODE_STRING  PathName,
 | 
|---|
| 3311 |   IN INTERFACE_TYPE  BusType,
 | 
|---|
| 3312 |   IN ULONG  BusNumber,
 | 
|---|
| 3313 |   IN PKEY_VALUE_FULL_INFORMATION  *BusInformation,
 | 
|---|
| 3314 |   IN CONFIGURATION_TYPE  ControllerType,
 | 
|---|
| 3315 |   IN ULONG  ControllerNumber,
 | 
|---|
| 3316 |   IN PKEY_VALUE_FULL_INFORMATION  *ControllerInformation,
 | 
|---|
| 3317 |   IN CONFIGURATION_TYPE  PeripheralType,
 | 
|---|
| 3318 |   IN ULONG  PeripheralNumber,
 | 
|---|
| 3319 |   IN PKEY_VALUE_FULL_INFORMATION  *PeripheralInformation);
 | 
|---|
| 3320 | 
 | 
|---|
| 3321 | typedef enum _WORK_QUEUE_TYPE {
 | 
|---|
| 3322 |   CriticalWorkQueue,
 | 
|---|
| 3323 |   DelayedWorkQueue,
 | 
|---|
| 3324 |   HyperCriticalWorkQueue,
 | 
|---|
| 3325 |   MaximumWorkQueue
 | 
|---|
| 3326 | } WORK_QUEUE_TYPE;
 | 
|---|
| 3327 | 
 | 
|---|
| 3328 | typedef VOID DDKAPI
 | 
|---|
| 3329 | (*PWORKER_THREAD_ROUTINE)(
 | 
|---|
| 3330 |   IN PVOID Parameter);
 | 
|---|
| 3331 | 
 | 
|---|
| 3332 | typedef struct _WORK_QUEUE_ITEM {
 | 
|---|
| 3333 |   LIST_ENTRY  List;
 | 
|---|
| 3334 |   PWORKER_THREAD_ROUTINE  WorkerRoutine;
 | 
|---|
| 3335 |   PVOID  Parameter;
 | 
|---|
| 3336 | } WORK_QUEUE_ITEM, *PWORK_QUEUE_ITEM;
 | 
|---|
| 3337 | 
 | 
|---|
| 3338 | typedef enum _KBUGCHECK_BUFFER_DUMP_STATE {
 | 
|---|
| 3339 |     BufferEmpty,
 | 
|---|
| 3340 |     BufferInserted,
 | 
|---|
| 3341 |     BufferStarted,
 | 
|---|
| 3342 |     BufferFinished,
 | 
|---|
| 3343 |     BufferIncomplete
 | 
|---|
| 3344 | } KBUGCHECK_BUFFER_DUMP_STATE;
 | 
|---|
| 3345 | 
 | 
|---|
| 3346 | typedef VOID DDKAPI
 | 
|---|
| 3347 | (*PKBUGCHECK_CALLBACK_ROUTINE)(
 | 
|---|
| 3348 |   IN PVOID  Buffer,
 | 
|---|
| 3349 |   IN ULONG  Length);
 | 
|---|
| 3350 | 
 | 
|---|
| 3351 | typedef struct _KBUGCHECK_CALLBACK_RECORD {
 | 
|---|
| 3352 |   LIST_ENTRY  Entry;
 | 
|---|
| 3353 |   PKBUGCHECK_CALLBACK_ROUTINE  CallbackRoutine;
 | 
|---|
| 3354 |   PVOID  Buffer;
 | 
|---|
| 3355 |   ULONG  Length;
 | 
|---|
| 3356 |   PUCHAR  Component;
 | 
|---|
| 3357 |   ULONG_PTR  Checksum;
 | 
|---|
| 3358 |   UCHAR  State;
 | 
|---|
| 3359 | } KBUGCHECK_CALLBACK_RECORD, *PKBUGCHECK_CALLBACK_RECORD;
 | 
|---|
| 3360 | 
 | 
|---|
| 3361 | /*
 | 
|---|
| 3362 |  * VOID
 | 
|---|
| 3363 |  * KeInitializeCallbackRecord(
 | 
|---|
| 3364 |  *   IN PKBUGCHECK_CALLBACK_RECORD  CallbackRecord)
 | 
|---|
| 3365 |  */
 | 
|---|
| 3366 | #define KeInitializeCallbackRecord(CallbackRecord) \
 | 
|---|
| 3367 |   CallbackRecord->State = BufferEmpty;
 | 
|---|
| 3368 | 
 | 
|---|
| 3369 | typedef enum _KDPC_IMPORTANCE {
 | 
|---|
| 3370 |   LowImportance,
 | 
|---|
| 3371 |   MediumImportance,
 | 
|---|
| 3372 |   HighImportance
 | 
|---|
| 3373 | } KDPC_IMPORTANCE;
 | 
|---|
| 3374 | 
 | 
|---|
| 3375 | typedef enum _MEMORY_CACHING_TYPE_ORIG {
 | 
|---|
| 3376 |   MmFrameBufferCached = 2
 | 
|---|
| 3377 | } MEMORY_CACHING_TYPE_ORIG;
 | 
|---|
| 3378 | 
 | 
|---|
| 3379 | typedef enum _MEMORY_CACHING_TYPE {
 | 
|---|
| 3380 |   MmNonCached = FALSE,
 | 
|---|
| 3381 |   MmCached = TRUE,
 | 
|---|
| 3382 |   MmWriteCombined = MmFrameBufferCached,
 | 
|---|
| 3383 |   MmHardwareCoherentCached,
 | 
|---|
| 3384 |   MmNonCachedUnordered,
 | 
|---|
| 3385 |   MmUSWCCached,
 | 
|---|
| 3386 |   MmMaximumCacheType
 | 
|---|
| 3387 | } MEMORY_CACHING_TYPE;
 | 
|---|
| 3388 | 
 | 
|---|
| 3389 | typedef enum _MM_PAGE_PRIORITY {
 | 
|---|
| 3390 |   LowPagePriority,
 | 
|---|
| 3391 |   NormalPagePriority = 16,
 | 
|---|
| 3392 |   HighPagePriority = 32
 | 
|---|
| 3393 | } MM_PAGE_PRIORITY;
 | 
|---|
| 3394 | 
 | 
|---|
| 3395 | typedef enum _LOCK_OPERATION {
 | 
|---|
| 3396 |   IoReadAccess,
 | 
|---|
| 3397 |   IoWriteAccess,
 | 
|---|
| 3398 |   IoModifyAccess
 | 
|---|
| 3399 | } LOCK_OPERATION;
 | 
|---|
| 3400 | 
 | 
|---|
| 3401 | typedef enum _MM_SYSTEM_SIZE {
 | 
|---|
| 3402 |   MmSmallSystem,
 | 
|---|
| 3403 |   MmMediumSystem,
 | 
|---|
| 3404 |   MmLargeSystem
 | 
|---|
| 3405 | } MM_SYSTEM_SIZE;
 | 
|---|
| 3406 | 
 | 
|---|
| 3407 | typedef struct _OBJECT_HANDLE_INFORMATION {
 | 
|---|
| 3408 |   ULONG HandleAttributes;
 | 
|---|
| 3409 |   ACCESS_MASK GrantedAccess;
 | 
|---|
| 3410 | } OBJECT_HANDLE_INFORMATION, *POBJECT_HANDLE_INFORMATION;
 | 
|---|
| 3411 | 
 | 
|---|
| 3412 | typedef struct _CLIENT_ID {
 | 
|---|
| 3413 |   HANDLE  UniqueProcess;
 | 
|---|
| 3414 |   HANDLE  UniqueThread;
 | 
|---|
| 3415 | } CLIENT_ID, *PCLIENT_ID;
 | 
|---|
| 3416 | 
 | 
|---|
| 3417 | typedef VOID DDKAPI
 | 
|---|
| 3418 | (*PKSTART_ROUTINE)(
 | 
|---|
| 3419 |   IN PVOID  StartContext);
 | 
|---|
| 3420 | 
 | 
|---|
| 3421 | typedef VOID DDKAPI
 | 
|---|
| 3422 | (*PCREATE_PROCESS_NOTIFY_ROUTINE)(
 | 
|---|
| 3423 |   IN HANDLE  ParentId,
 | 
|---|
| 3424 |   IN HANDLE  ProcessId,
 | 
|---|
| 3425 |   IN BOOLEAN  Create);
 | 
|---|
| 3426 | 
 | 
|---|
| 3427 | typedef VOID DDKAPI
 | 
|---|
| 3428 | (*PCREATE_THREAD_NOTIFY_ROUTINE)(
 | 
|---|
| 3429 |   IN HANDLE  ProcessId,
 | 
|---|
| 3430 |   IN HANDLE  ThreadId,
 | 
|---|
| 3431 |   IN BOOLEAN  Create);
 | 
|---|
| 3432 | 
 | 
|---|
| 3433 | typedef struct _IMAGE_INFO {
 | 
|---|
| 3434 |   _ANONYMOUS_UNION union {
 | 
|---|
| 3435 |     ULONG  Properties;
 | 
|---|
| 3436 |     _ANONYMOUS_STRUCT struct {
 | 
|---|
| 3437 |       ULONG  ImageAddressingMode  : 8;
 | 
|---|
| 3438 |       ULONG  SystemModeImage      : 1;
 | 
|---|
| 3439 |       ULONG  ImageMappedToAllPids : 1;
 | 
|---|
| 3440 |       ULONG  Reserved             : 22;
 | 
|---|
| 3441 |     } DUMMYSTRUCTNAME;
 | 
|---|
| 3442 |   } DUMMYUNIONNAME;
 | 
|---|
| 3443 |   PVOID  ImageBase;
 | 
|---|
| 3444 |   ULONG  ImageSelector;
 | 
|---|
| 3445 |   SIZE_T  ImageSize;
 | 
|---|
| 3446 |   ULONG  ImageSectionNumber;
 | 
|---|
| 3447 | } IMAGE_INFO, *PIMAGE_INFO;
 | 
|---|
| 3448 | 
 | 
|---|
| 3449 | #define IMAGE_ADDRESSING_MODE_32BIT       3
 | 
|---|
| 3450 | 
 | 
|---|
| 3451 | typedef VOID DDKAPI
 | 
|---|
| 3452 | (*PLOAD_IMAGE_NOTIFY_ROUTINE)(
 | 
|---|
| 3453 |   IN PUNICODE_STRING  FullImageName,
 | 
|---|
| 3454 |   IN HANDLE  ProcessId,
 | 
|---|
| 3455 |   IN PIMAGE_INFO  ImageInfo);
 | 
|---|
| 3456 | 
 | 
|---|
| 3457 | typedef enum _PROCESSINFOCLASS {
 | 
|---|
| 3458 |   ProcessBasicInformation,
 | 
|---|
| 3459 |   ProcessQuotaLimits,
 | 
|---|
| 3460 |   ProcessIoCounters,
 | 
|---|
| 3461 |   ProcessVmCounters,
 | 
|---|
| 3462 |   ProcessTimes,
 | 
|---|
| 3463 |   ProcessBasePriority,
 | 
|---|
| 3464 |   ProcessRaisePriority,
 | 
|---|
| 3465 |   ProcessDebugPort,
 | 
|---|
| 3466 |   ProcessExceptionPort,
 | 
|---|
| 3467 |   ProcessAccessToken,
 | 
|---|
| 3468 |   ProcessLdtInformation,
 | 
|---|
| 3469 |   ProcessLdtSize,
 | 
|---|
| 3470 |   ProcessDefaultHardErrorMode,
 | 
|---|
| 3471 |   ProcessIoPortHandlers,
 | 
|---|
| 3472 |   ProcessPooledUsageAndLimits,
 | 
|---|
| 3473 |   ProcessWorkingSetWatch,
 | 
|---|
| 3474 |   ProcessUserModeIOPL,
 | 
|---|
| 3475 |   ProcessEnableAlignmentFaultFixup,
 | 
|---|
| 3476 |   ProcessPriorityClass,
 | 
|---|
| 3477 |   ProcessWx86Information,
 | 
|---|
| 3478 |   ProcessHandleCount,
 | 
|---|
| 3479 |   ProcessAffinityMask,
 | 
|---|
| 3480 |   ProcessPriorityBoost,
 | 
|---|
| 3481 |   ProcessDeviceMap,
 | 
|---|
| 3482 |   ProcessSessionInformation,
 | 
|---|
| 3483 |   ProcessForegroundInformation,
 | 
|---|
| 3484 |   ProcessWow64Information,
 | 
|---|
| 3485 |   ProcessImageFileName,
 | 
|---|
| 3486 |   ProcessLUIDDeviceMapsEnabled,
 | 
|---|
| 3487 |   ProcessBreakOnTermination,
 | 
|---|
| 3488 |   ProcessDebugObjectHandle,
 | 
|---|
| 3489 |   ProcessDebugFlags,
 | 
|---|
| 3490 |   ProcessHandleTracing,
 | 
|---|
| 3491 |   MaxProcessInfoClass
 | 
|---|
| 3492 | } PROCESSINFOCLASS;
 | 
|---|
| 3493 | 
 | 
|---|
| 3494 | typedef enum _THREADINFOCLASS {
 | 
|---|
| 3495 |   ThreadBasicInformation,
 | 
|---|
| 3496 |   ThreadTimes,
 | 
|---|
| 3497 |   ThreadPriority,
 | 
|---|
| 3498 |   ThreadBasePriority,
 | 
|---|
| 3499 |   ThreadAffinityMask,
 | 
|---|
| 3500 |   ThreadImpersonationToken,
 | 
|---|
| 3501 |   ThreadDescriptorTableEntry,
 | 
|---|
| 3502 |   ThreadEnableAlignmentFaultFixup,
 | 
|---|
| 3503 |   ThreadEventPair_Reusable,
 | 
|---|
| 3504 |   ThreadQuerySetWin32StartAddress,
 | 
|---|
| 3505 |   ThreadZeroTlsCell,
 | 
|---|
| 3506 |   ThreadPerformanceCount,
 | 
|---|
| 3507 |   ThreadAmILastThread,
 | 
|---|
| 3508 |   ThreadIdealProcessor,
 | 
|---|
| 3509 |   ThreadPriorityBoost,
 | 
|---|
| 3510 |   ThreadSetTlsArrayAddress,
 | 
|---|
| 3511 |   ThreadIsIoPending,
 | 
|---|
| 3512 |   ThreadHideFromDebugger,
 | 
|---|
| 3513 |   ThreadBreakOnTermination,
 | 
|---|
| 3514 |   MaxThreadInfoClass
 | 
|---|
| 3515 | } THREADINFOCLASS;
 | 
|---|
| 3516 | 
 | 
|---|
| 3517 | #define ES_SYSTEM_REQUIRED                0x00000001
 | 
|---|
| 3518 | #define ES_DISPLAY_REQUIRED               0x00000002
 | 
|---|
| 3519 | #define ES_USER_PRESENT                   0x00000004
 | 
|---|
| 3520 | #define ES_CONTINUOUS                     0x80000000
 | 
|---|
| 3521 | 
 | 
|---|
| 3522 | typedef ULONG EXECUTION_STATE;
 | 
|---|
| 3523 | 
 | 
|---|
| 3524 | typedef VOID DDKAPI
 | 
|---|
| 3525 | (*PREQUEST_POWER_COMPLETE)(
 | 
|---|
| 3526 |   IN PDEVICE_OBJECT  DeviceObject,
 | 
|---|
| 3527 |   IN UCHAR  MinorFunction,
 | 
|---|
| 3528 |   IN POWER_STATE  PowerState,
 | 
|---|
| 3529 |   IN PVOID  Context,
 | 
|---|
| 3530 |   IN PIO_STATUS_BLOCK  IoStatus);
 | 
|---|
| 3531 | 
 | 
|---|
| 3532 | typedef enum _TRACE_INFORMATION_CLASS {
 | 
|---|
| 3533 |   TraceIdClass,
 | 
|---|
| 3534 |   TraceHandleClass,
 | 
|---|
| 3535 |   TraceEnableFlagsClass,
 | 
|---|
| 3536 |   TraceEnableLevelClass,
 | 
|---|
| 3537 |   GlobalLoggerHandleClass,
 | 
|---|
| 3538 |   EventLoggerHandleClass,
 | 
|---|
| 3539 |   AllLoggerHandlesClass,
 | 
|---|
| 3540 |   TraceHandleByNameClass
 | 
|---|
| 3541 | } TRACE_INFORMATION_CLASS;
 | 
|---|
| 3542 | 
 | 
|---|
| 3543 | typedef NTSTATUS DDKAPI
 | 
|---|
| 3544 | (*PEX_CALLBACK_FUNCTION)(
 | 
|---|
| 3545 |   IN PVOID  CallbackContext,
 | 
|---|
| 3546 |   IN PVOID  Argument1,
 | 
|---|
| 3547 |   IN PVOID  Argument2);
 | 
|---|
| 3548 | 
 | 
|---|
| 3549 | 
 | 
|---|
| 3550 | 
 | 
|---|
| 3551 | /*
 | 
|---|
| 3552 | ** Storage structures
 | 
|---|
| 3553 | */
 | 
|---|
| 3554 | typedef enum _PARTITION_STYLE {
 | 
|---|
| 3555 |   PARTITION_STYLE_MBR,
 | 
|---|
| 3556 |   PARTITION_STYLE_GPT
 | 
|---|
| 3557 | } PARTITION_STYLE;
 | 
|---|
| 3558 | 
 | 
|---|
| 3559 | typedef struct _CREATE_DISK_MBR {
 | 
|---|
| 3560 |   ULONG  Signature;
 | 
|---|
| 3561 | } CREATE_DISK_MBR, *PCREATE_DISK_MBR;
 | 
|---|
| 3562 | 
 | 
|---|
| 3563 | typedef struct _CREATE_DISK_GPT {
 | 
|---|
| 3564 |   GUID  DiskId;
 | 
|---|
| 3565 |   ULONG  MaxPartitionCount;
 | 
|---|
| 3566 | } CREATE_DISK_GPT, *PCREATE_DISK_GPT;
 | 
|---|
| 3567 | 
 | 
|---|
| 3568 | typedef struct _CREATE_DISK {
 | 
|---|
| 3569 |   PARTITION_STYLE  PartitionStyle;
 | 
|---|
| 3570 |   _ANONYMOUS_UNION union {
 | 
|---|
| 3571 |     CREATE_DISK_MBR  Mbr;
 | 
|---|
| 3572 |     CREATE_DISK_GPT  Gpt;
 | 
|---|
| 3573 |   } DUMMYUNIONNAME;
 | 
|---|
| 3574 | } CREATE_DISK, *PCREATE_DISK;
 | 
|---|
| 3575 | 
 | 
|---|
| 3576 | typedef struct _DISK_SIGNATURE {
 | 
|---|
| 3577 |   ULONG  PartitionStyle;
 | 
|---|
| 3578 |   _ANONYMOUS_UNION union {
 | 
|---|
| 3579 |     struct {
 | 
|---|
| 3580 |       ULONG  Signature;
 | 
|---|
| 3581 |       ULONG  CheckSum;
 | 
|---|
| 3582 |     } Mbr;
 | 
|---|
| 3583 |     struct {
 | 
|---|
| 3584 |       GUID  DiskId;
 | 
|---|
| 3585 |     } Gpt;
 | 
|---|
| 3586 |   } DUMMYUNIONNAME;
 | 
|---|
| 3587 | } DISK_SIGNATURE, *PDISK_SIGNATURE;
 | 
|---|
| 3588 | 
 | 
|---|
| 3589 | typedef VOID DDKFASTAPI
 | 
|---|
| 3590 | (*PTIME_UPDATE_NOTIFY_ROUTINE)(
 | 
|---|
| 3591 |   IN HANDLE  ThreadId,
 | 
|---|
| 3592 |   IN KPROCESSOR_MODE  Mode);
 | 
|---|
| 3593 | 
 | 
|---|
| 3594 | #define DBG_STATUS_CONTROL_C              1
 | 
|---|
| 3595 | #define DBG_STATUS_SYSRQ                  2
 | 
|---|
| 3596 | #define DBG_STATUS_BUGCHECK_FIRST         3
 | 
|---|
| 3597 | #define DBG_STATUS_BUGCHECK_SECOND        4
 | 
|---|
| 3598 | #define DBG_STATUS_FATAL                  5
 | 
|---|
| 3599 | #define DBG_STATUS_DEBUG_CONTROL          6
 | 
|---|
| 3600 | #define DBG_STATUS_WORKER                 7
 | 
|---|
| 3601 | 
 | 
|---|
| 3602 | typedef struct _PHYSICAL_MEMORY_RANGE {
 | 
|---|
| 3603 |   PHYSICAL_ADDRESS  BaseAddress;
 | 
|---|
| 3604 |   LARGE_INTEGER  NumberOfBytes;
 | 
|---|
| 3605 | } PHYSICAL_MEMORY_RANGE, *PPHYSICAL_MEMORY_RANGE;
 | 
|---|
| 3606 | 
 | 
|---|
| 3607 | typedef ULONG_PTR
 | 
|---|
| 3608 | (*PDRIVER_VERIFIER_THUNK_ROUTINE)(
 | 
|---|
| 3609 |   IN PVOID  Context);
 | 
|---|
| 3610 | 
 | 
|---|
| 3611 | typedef struct _DRIVER_VERIFIER_THUNK_PAIRS {
 | 
|---|
| 3612 |   PDRIVER_VERIFIER_THUNK_ROUTINE  PristineRoutine;
 | 
|---|
| 3613 |   PDRIVER_VERIFIER_THUNK_ROUTINE  NewRoutine;
 | 
|---|
| 3614 | } DRIVER_VERIFIER_THUNK_PAIRS, *PDRIVER_VERIFIER_THUNK_PAIRS;
 | 
|---|
| 3615 | 
 | 
|---|
| 3616 | #define DRIVER_VERIFIER_SPECIAL_POOLING             0x0001
 | 
|---|
| 3617 | #define DRIVER_VERIFIER_FORCE_IRQL_CHECKING         0x0002
 | 
|---|
| 3618 | #define DRIVER_VERIFIER_INJECT_ALLOCATION_FAILURES  0x0004
 | 
|---|
| 3619 | #define DRIVER_VERIFIER_TRACK_POOL_ALLOCATIONS      0x0008
 | 
|---|
| 3620 | #define DRIVER_VERIFIER_IO_CHECKING                 0x0010
 | 
|---|
| 3621 | 
 | 
|---|
| 3622 | #define RTL_RANGE_LIST_ADD_IF_CONFLICT    0x00000001
 | 
|---|
| 3623 | #define RTL_RANGE_LIST_ADD_SHARED         0x00000002
 | 
|---|
| 3624 | 
 | 
|---|
| 3625 | #define RTL_RANGE_LIST_SHARED_OK          0x00000001
 | 
|---|
| 3626 | #define RTL_RANGE_LIST_NULL_CONFLICT_OK   0x00000002
 | 
|---|
| 3627 | 
 | 
|---|
| 3628 | #define RTL_RANGE_LIST_SHARED_OK          0x00000001
 | 
|---|
| 3629 | #define RTL_RANGE_LIST_NULL_CONFLICT_OK   0x00000002
 | 
|---|
| 3630 | 
 | 
|---|
| 3631 | #define RTL_RANGE_LIST_MERGE_IF_CONFLICT  RTL_RANGE_LIST_ADD_IF_CONFLICT
 | 
|---|
| 3632 | 
 | 
|---|
| 3633 | typedef struct _RTL_RANGE {
 | 
|---|
| 3634 |   ULONGLONG  Start;
 | 
|---|
| 3635 |   ULONGLONG  End;
 | 
|---|
| 3636 |   PVOID  UserData;
 | 
|---|
| 3637 |   PVOID  Owner;
 | 
|---|
| 3638 |   UCHAR  Attributes;
 | 
|---|
| 3639 |   UCHAR  Flags;
 | 
|---|
| 3640 | } RTL_RANGE, *PRTL_RANGE;
 | 
|---|
| 3641 | 
 | 
|---|
| 3642 | #define RTL_RANGE_SHARED                  0x01
 | 
|---|
| 3643 | #define RTL_RANGE_CONFLICT                0x02
 | 
|---|
| 3644 | 
 | 
|---|
| 3645 | typedef struct _RTL_RANGE_LIST {
 | 
|---|
| 3646 |   LIST_ENTRY  ListHead;
 | 
|---|
| 3647 |   ULONG  Flags;
 | 
|---|
| 3648 |   ULONG  Count;
 | 
|---|
| 3649 |   ULONG  Stamp;
 | 
|---|
| 3650 | } RTL_RANGE_LIST, *PRTL_RANGE_LIST;
 | 
|---|
| 3651 | 
 | 
|---|
| 3652 | typedef struct _RANGE_LIST_ITERATOR {
 | 
|---|
| 3653 |   PLIST_ENTRY  RangeListHead;
 | 
|---|
| 3654 |   PLIST_ENTRY  MergedHead;
 | 
|---|
| 3655 |   PVOID  Current;
 | 
|---|
| 3656 |   ULONG  Stamp;
 | 
|---|
| 3657 | } RTL_RANGE_LIST_ITERATOR, *PRTL_RANGE_LIST_ITERATOR;
 | 
|---|
| 3658 | 
 | 
|---|
| 3659 | typedef BOOLEAN
 | 
|---|
| 3660 | (*PRTL_CONFLICT_RANGE_CALLBACK)(
 | 
|---|
| 3661 |   IN PVOID  Context,
 | 
|---|
| 3662 |   IN PRTL_RANGE  Range);
 | 
|---|
| 3663 | 
 | 
|---|
| 3664 | #define HASH_STRING_ALGORITHM_DEFAULT     0
 | 
|---|
| 3665 | #define HASH_STRING_ALGORITHM_X65599      1
 | 
|---|
| 3666 | #define HASH_STRING_ALGORITHM_INVALID     0xffffffff
 | 
|---|
| 3667 | 
 | 
|---|
| 3668 | typedef enum _SUITE_TYPE {
 | 
|---|
| 3669 |   SmallBusiness,
 | 
|---|
| 3670 |   Enterprise,
 | 
|---|
| 3671 |   BackOffice,
 | 
|---|
| 3672 |   CommunicationServer,
 | 
|---|
| 3673 |   TerminalServer,
 | 
|---|
| 3674 |   SmallBusinessRestricted,
 | 
|---|
| 3675 |   EmbeddedNT,
 | 
|---|
| 3676 |   DataCenter,
 | 
|---|
| 3677 |   SingleUserTS,
 | 
|---|
| 3678 |   Personal,
 | 
|---|
| 3679 |   Blade,
 | 
|---|
| 3680 |   MaxSuiteType
 | 
|---|
| 3681 | } SUITE_TYPE;
 | 
|---|
| 3682 | 
 | 
|---|
| 3683 | typedef VOID DDKAPI
 | 
|---|
| 3684 | (*PTIMER_APC_ROUTINE)(
 | 
|---|
| 3685 |   IN PVOID  TimerContext,
 | 
|---|
| 3686 |   IN ULONG  TimerLowValue,
 | 
|---|
| 3687 |   IN LONG  TimerHighValue);
 | 
|---|
| 3688 | 
 | 
|---|
| 3689 | 
 | 
|---|
| 3690 | 
 | 
|---|
| 3691 | /*
 | 
|---|
| 3692 | ** WMI structures
 | 
|---|
| 3693 | */
 | 
|---|
| 3694 | 
 | 
|---|
| 3695 | typedef VOID DDKAPI
 | 
|---|
| 3696 | (*WMI_NOTIFICATION_CALLBACK)(
 | 
|---|
| 3697 |   PVOID  Wnode,
 | 
|---|
| 3698 |   PVOID  Context);
 | 
|---|
| 3699 | 
 | 
|---|
| 3700 | 
 | 
|---|
| 3701 | /*
 | 
|---|
| 3702 | ** Architecture specific structures
 | 
|---|
| 3703 | */
 | 
|---|
| 3704 | 
 | 
|---|
| 3705 | #ifdef _X86_
 | 
|---|
| 3706 | 
 | 
|---|
| 3707 | typedef ULONG PFN_NUMBER, *PPFN_NUMBER;
 | 
|---|
| 3708 | 
 | 
|---|
| 3709 | #define PASSIVE_LEVEL                      0
 | 
|---|
| 3710 | #define LOW_LEVEL                          0
 | 
|---|
| 3711 | #define APC_LEVEL                          1
 | 
|---|
| 3712 | #define DISPATCH_LEVEL                     2
 | 
|---|
| 3713 | #define SYNCH_LEVEL                       27
 | 
|---|
| 3714 | #define PROFILE_LEVEL                     27
 | 
|---|
| 3715 | #define CLOCK1_LEVEL                      28
 | 
|---|
| 3716 | #define CLOCK2_LEVEL                      28
 | 
|---|
| 3717 | #define IPI_LEVEL                         29
 | 
|---|
| 3718 | #define POWER_LEVEL                       30
 | 
|---|
| 3719 | #define HIGH_LEVEL                        31
 | 
|---|
| 3720 | 
 | 
|---|
| 3721 | typedef struct _KPCR_TIB {
 | 
|---|
| 3722 |   PVOID  ExceptionList;         /* 00 */
 | 
|---|
| 3723 |   PVOID  StackBase;             /* 04 */
 | 
|---|
| 3724 |   PVOID  StackLimit;            /* 08 */
 | 
|---|
| 3725 |   PVOID  SubSystemTib;          /* 0C */
 | 
|---|
| 3726 |   _ANONYMOUS_UNION union {
 | 
|---|
| 3727 |     PVOID  FiberData;           /* 10 */
 | 
|---|
| 3728 |     DWORD  Version;             /* 10 */
 | 
|---|
| 3729 |   } DUMMYUNIONNAME;
 | 
|---|
| 3730 |   PVOID  ArbitraryUserPointer;  /* 14 */
 | 
|---|
| 3731 |   struct _NT_TIB *Self;         /* 18 */
 | 
|---|
| 3732 | } KPCR_TIB, *PKPCR_TIB;         /* 1C */
 | 
|---|
| 3733 | 
 | 
|---|
| 3734 | #define PCR_MINOR_VERSION 1
 | 
|---|
| 3735 | #define PCR_MAJOR_VERSION 1
 | 
|---|
| 3736 | 
 | 
|---|
| 3737 | typedef struct _KPCR {
 | 
|---|
| 3738 |   KPCR_TIB  Tib;                /* 00 */
 | 
|---|
| 3739 |   struct _KPCR  *Self;          /* 1C */
 | 
|---|
| 3740 |   struct _KPRCB  *PCRCB;        /* 20 */
 | 
|---|
| 3741 |   KIRQL  Irql;                  /* 24 */
 | 
|---|
| 3742 |   ULONG  IRR;                   /* 28 */
 | 
|---|
| 3743 |   ULONG  IrrActive;             /* 2C */
 | 
|---|
| 3744 |   ULONG  IDR;                   /* 30 */
 | 
|---|
| 3745 |   PVOID  KdVersionBlock;        /* 34 */
 | 
|---|
| 3746 |   PUSHORT  IDT;                 /* 38 */
 | 
|---|
| 3747 |   PUSHORT  GDT;                 /* 3C */
 | 
|---|
| 3748 |   struct _KTSS  *TSS;           /* 40 */
 | 
|---|
| 3749 |   USHORT  MajorVersion;         /* 44 */
 | 
|---|
| 3750 |   USHORT  MinorVersion;         /* 46 */
 | 
|---|
| 3751 |   KAFFINITY  SetMember;         /* 48 */
 | 
|---|
| 3752 |   ULONG  StallScaleFactor;      /* 4C */
 | 
|---|
| 3753 |   UCHAR  SpareUnused;           /* 50 */
 | 
|---|
| 3754 |   UCHAR  Number;                /* 51 */
 | 
|---|
| 3755 | } KPCR, *PKPCR;                 /* 54 */
 | 
|---|
| 3756 | 
 | 
|---|
| 3757 | typedef struct _KFLOATING_SAVE {
 | 
|---|
| 3758 |   ULONG  ControlWord;
 | 
|---|
| 3759 |   ULONG  StatusWord;
 | 
|---|
| 3760 |   ULONG  ErrorOffset;
 | 
|---|
| 3761 |   ULONG  ErrorSelector;
 | 
|---|
| 3762 |   ULONG  DataOffset;
 | 
|---|
| 3763 |   ULONG  DataSelector;
 | 
|---|
| 3764 |   ULONG  Cr0NpxState;
 | 
|---|
| 3765 |   ULONG  Spare1;
 | 
|---|
| 3766 | } KFLOATING_SAVE, *PKFLOATING_SAVE;
 | 
|---|
| 3767 | 
 | 
|---|
| 3768 | #define PAGE_SIZE                         0x1000
 | 
|---|
| 3769 | #define PAGE_SHIFT                        12L
 | 
|---|
| 3770 | 
 | 
|---|
| 3771 | extern NTOSAPI PVOID *MmHighestUserAddress;
 | 
|---|
| 3772 | extern NTOSAPI PVOID *MmSystemRangeStart;
 | 
|---|
| 3773 | extern NTOSAPI ULONG *MmUserProbeAddress;
 | 
|---|
| 3774 | 
 | 
|---|
| 3775 | #define MM_HIGHEST_USER_ADDRESS           *MmHighestUserAddress
 | 
|---|
| 3776 | #define MM_SYSTEM_RANGE_START             *MmSystemRangeStart
 | 
|---|
| 3777 | #define MM_USER_PROBE_ADDRESS             *MmUserProbeAddress
 | 
|---|
| 3778 | #define MM_LOWEST_USER_ADDRESS            (PVOID)0x10000
 | 
|---|
| 3779 | #define MM_LOWEST_SYSTEM_ADDRESS          (PVOID)0xC0C00000
 | 
|---|
| 3780 | 
 | 
|---|
| 3781 | #define KI_USER_SHARED_DATA               0xffdf0000
 | 
|---|
| 3782 | #define SharedUserData                    ((KUSER_SHARED_DATA * CONST) KI_USER_SHARED_DATA)
 | 
|---|
| 3783 | 
 | 
|---|
| 3784 | #define EFLAG_SIGN                        0x8000
 | 
|---|
| 3785 | #define EFLAG_ZERO                        0x4000
 | 
|---|
| 3786 | #define EFLAG_SELECT                      (EFLAG_SIGN | EFLAG_ZERO)
 | 
|---|
| 3787 | 
 | 
|---|
| 3788 | #define RESULT_NEGATIVE                   ((EFLAG_SIGN & ~EFLAG_ZERO) & EFLAG_SELECT)
 | 
|---|
| 3789 | #define RESULT_ZERO                       ((~EFLAG_SIGN & EFLAG_ZERO) & EFLAG_SELECT)
 | 
|---|
| 3790 | #define RESULT_POSITIVE                   ((~EFLAG_SIGN & ~EFLAG_ZERO) & EFLAG_SELECT)
 | 
|---|
| 3791 | 
 | 
|---|
| 3792 | typedef enum _INTERLOCKED_RESULT {
 | 
|---|
| 3793 |   ResultNegative = RESULT_NEGATIVE,
 | 
|---|
| 3794 |   ResultZero = RESULT_ZERO,
 | 
|---|
| 3795 |   ResultPositive = RESULT_POSITIVE
 | 
|---|
| 3796 | } INTERLOCKED_RESULT;
 | 
|---|
| 3797 | 
 | 
|---|
| 3798 | NTOSAPI
 | 
|---|
| 3799 | KIRQL
 | 
|---|
| 3800 | DDKAPI
 | 
|---|
| 3801 | KeGetCurrentIrql(
 | 
|---|
| 3802 |   VOID);
 | 
|---|
| 3803 | 
 | 
|---|
| 3804 | /*
 | 
|---|
| 3805 |  * ULONG
 | 
|---|
| 3806 |  * KeGetCurrentProcessorNumber(
 | 
|---|
| 3807 |  *   VOID)
 | 
|---|
| 3808 |  */
 | 
|---|
| 3809 | #define KeGetCurrentProcessorNumber() \
 | 
|---|
| 3810 |   ((ULONG)KeGetCurrentKPCR()->ProcessorNumber)
 | 
|---|
| 3811 | 
 | 
|---|
| 3812 | 
 | 
|---|
| 3813 | #if  __USE_NTOSKRNL__
 | 
|---|
| 3814 | /* CAREFUL: These are exported from ntoskrnl.exe as __fastcall functions,
 | 
|---|
| 3815 |    but are also exported from kernel32.dll and declared in winbase.h as
 | 
|---|
| 3816 |    __stdcall */
 | 
|---|
| 3817 | #if !defined(__INTERLOCKED_DECLARED)
 | 
|---|
| 3818 | #define __INTERLOCKED_DECLARED
 | 
|---|
| 3819 | 
 | 
|---|
| 3820 | NTOSAPI
 | 
|---|
| 3821 | LONG
 | 
|---|
| 3822 | DDKFASTAPI
 | 
|---|
| 3823 | InterlockedIncrement(
 | 
|---|
| 3824 |   IN PLONG  VOLATILE  Addend);
 | 
|---|
| 3825 | 
 | 
|---|
| 3826 | NTOSAPI
 | 
|---|
| 3827 | LONG
 | 
|---|
| 3828 | DDKFASTAPI
 | 
|---|
| 3829 | InterlockedDecrement(
 | 
|---|
| 3830 |   IN PLONG  VOLATILE  Addend);
 | 
|---|
| 3831 | 
 | 
|---|
| 3832 | NTOSAPI
 | 
|---|
| 3833 | LONG
 | 
|---|
| 3834 | DDKFASTAPI
 | 
|---|
| 3835 | InterlockedCompareExchange(
 | 
|---|
| 3836 |   IN OUT PLONG  VOLATILE  Destination,
 | 
|---|
| 3837 |   IN LONG  Exchange,
 | 
|---|
| 3838 |   IN LONG  Comparand);
 | 
|---|
| 3839 | 
 | 
|---|
| 3840 | NTOSAPI
 | 
|---|
| 3841 | LONG
 | 
|---|
| 3842 | DDKFASTAPI
 | 
|---|
| 3843 | InterlockedExchange(
 | 
|---|
| 3844 |   IN OUT PLONG  VOLATILE  Target,
 | 
|---|
| 3845 |   IN LONG Value);
 | 
|---|
| 3846 | 
 | 
|---|
| 3847 | NTOSAPI
 | 
|---|
| 3848 | LONG
 | 
|---|
| 3849 | DDKFASTAPI
 | 
|---|
| 3850 | InterlockedExchangeAdd(
 | 
|---|
| 3851 |   IN OUT PLONG VOLATILE  Addend,
 | 
|---|
| 3852 |   IN LONG  Value);
 | 
|---|
| 3853 | 
 | 
|---|
| 3854 | /*
 | 
|---|
| 3855 |  * PVOID
 | 
|---|
| 3856 |  * InterlockedExchangePointer(
 | 
|---|
| 3857 |  *   IN OUT PVOID VOLATILE  *Target,
 | 
|---|
| 3858 |  *   IN PVOID  Value)
 | 
|---|
| 3859 |  */
 | 
|---|
| 3860 | #define InterlockedExchangePointer(Target, Value) \
 | 
|---|
| 3861 |   ((PVOID) InterlockedExchange((PLONG) Target, (LONG) Value))
 | 
|---|
| 3862 | 
 | 
|---|
| 3863 | /*
 | 
|---|
| 3864 |  * PVOID
 | 
|---|
| 3865 |  * InterlockedCompareExchangePointer(
 | 
|---|
| 3866 |  *   IN OUT PVOID  *Destination,
 | 
|---|
| 3867 |  *   IN PVOID  Exchange,
 | 
|---|
| 3868 |  *   IN PVOID  Comparand)
 | 
|---|
| 3869 |  */
 | 
|---|
| 3870 | #define InterlockedCompareExchangePointer(Destination, Exchange, Comparand) \
 | 
|---|
| 3871 |   ((PVOID) InterlockedCompareExchange((PLONG) Destination, (LONG) Exchange, (LONG) Comparand))
 | 
|---|
| 3872 | 
 | 
|---|
| 3873 | #if  (_WIN32_WINNT >= 0x0501)
 | 
|---|
| 3874 | PSLIST_ENTRY
 | 
|---|
| 3875 | DDKFASTAPI
 | 
|---|
| 3876 | InterlockedPopEntrySList(
 | 
|---|
| 3877 |   IN PSLIST_HEADER  ListHead);
 | 
|---|
| 3878 | 
 | 
|---|
| 3879 | NTOSAPI
 | 
|---|
| 3880 | PSLIST_ENTRY
 | 
|---|
| 3881 | DDKFASTAPI
 | 
|---|
| 3882 | InterlockedPushEntrySList(
 | 
|---|
| 3883 |   IN PSLIST_HEADER  ListHead,
 | 
|---|
| 3884 |   IN PSLIST_ENTRY  ListEntry);
 | 
|---|
| 3885 | #endif /* _WIN32_WINNT >= 0x0501 */
 | 
|---|
| 3886 | 
 | 
|---|
| 3887 | #endif /* !__INTERLOCKED_DECLARED */
 | 
|---|
| 3888 | #endif /*  __USE_NTOSKRNL__ */
 | 
|---|
| 3889 | 
 | 
|---|
| 3890 | NTOSAPI
 | 
|---|
| 3891 | VOID
 | 
|---|
| 3892 | DDKFASTAPI
 | 
|---|
| 3893 | KefAcquireSpinLockAtDpcLevel(
 | 
|---|
| 3894 |   IN PKSPIN_LOCK  SpinLock);
 | 
|---|
| 3895 | 
 | 
|---|
| 3896 | NTOSAPI
 | 
|---|
| 3897 | VOID
 | 
|---|
| 3898 | DDKFASTAPI
 | 
|---|
| 3899 | KefReleaseSpinLockFromDpcLevel(
 | 
|---|
| 3900 |   IN PKSPIN_LOCK  SpinLock);
 | 
|---|
| 3901 | 
 | 
|---|
| 3902 | #define KeAcquireSpinLockAtDpcLevel(SpinLock) KefAcquireSpinLockAtDpcLevel(SpinLock)
 | 
|---|
| 3903 | #define KeReleaseSpinLockFromDpcLevel(SpinLock) KefReleaseSpinLockFromDpcLevel(SpinLock)
 | 
|---|
| 3904 | 
 | 
|---|
| 3905 | #define RtlCopyMemoryNonTemporal RtlCopyMemory
 | 
|---|
| 3906 | 
 | 
|---|
| 3907 | #define KeGetDcacheFillSize() 1L
 | 
|---|
| 3908 | 
 | 
|---|
| 3909 | #endif /* _X86_ */
 | 
|---|
| 3910 | 
 | 
|---|
| 3911 | 
 | 
|---|
| 3912 | 
 | 
|---|
| 3913 | /*
 | 
|---|
| 3914 | ** Utillity functions
 | 
|---|
| 3915 | */
 | 
|---|
| 3916 | 
 | 
|---|
| 3917 | #define ARGUMENT_PRESENT(ArgumentPointer) \
 | 
|---|
| 3918 |   ((BOOLEAN) ((PVOID)ArgumentPointer != (PVOID)NULL))
 | 
|---|
| 3919 | 
 | 
|---|
| 3920 | /*
 | 
|---|
| 3921 |  * ULONG
 | 
|---|
| 3922 |  * BYTE_OFFSET(
 | 
|---|
| 3923 |  *   IN PVOID  Va)
 | 
|---|
| 3924 |  */
 | 
|---|
| 3925 | #define BYTE_OFFSET(Va) \
 | 
|---|
| 3926 |   ((ULONG) ((ULONG_PTR) (Va) & (PAGE_SIZE - 1)))
 | 
|---|
| 3927 | 
 | 
|---|
| 3928 | /*
 | 
|---|
| 3929 |  * ULONG
 | 
|---|
| 3930 |  * BYTES_TO_PAGES(
 | 
|---|
| 3931 |  *   IN ULONG  Size)
 | 
|---|
| 3932 |  */
 | 
|---|
| 3933 | #define BYTES_TO_PAGES(Size) \
 | 
|---|
| 3934 |   ((ULONG) ((ULONG_PTR) (Size) >> PAGE_SHIFT) + (((ULONG) (Size) & (PAGE_SIZE - 1)) != 0))
 | 
|---|
| 3935 | 
 | 
|---|
| 3936 | /*
 | 
|---|
| 3937 |  * PCHAR
 | 
|---|
| 3938 |  * CONTAINING_RECORD(
 | 
|---|
| 3939 |  *   IN PCHAR  Address,
 | 
|---|
| 3940 |  *   IN TYPE  Type,
 | 
|---|
| 3941 |  *   IN PCHAR  Field);
 | 
|---|
| 3942 |  */
 | 
|---|
| 3943 | #ifndef CONTAINING_RECORD
 | 
|---|
| 3944 | #define CONTAINING_RECORD(Address, Type, Field) \
 | 
|---|
| 3945 |   ((Type *) (((ULONG_PTR) Address) - FIELD_OFFSET(Type, Field)))
 | 
|---|
| 3946 | #endif
 | 
|---|
| 3947 | 
 | 
|---|
| 3948 | /* LONG
 | 
|---|
| 3949 |  * FIELD_OFFSET(
 | 
|---|
| 3950 |  *   IN TYPE  Type,
 | 
|---|
| 3951 |  *   IN PCHAR  Field);
 | 
|---|
| 3952 |  */
 | 
|---|
| 3953 | #ifndef FIELD_OFFSET
 | 
|---|
| 3954 | #define FIELD_OFFSET(Type, Field) \
 | 
|---|
| 3955 |   ((LONG) (&(((Type *) 0)->Field)))
 | 
|---|
| 3956 | #endif
 | 
|---|
| 3957 | 
 | 
|---|
| 3958 | /*
 | 
|---|
| 3959 |  * PVOID
 | 
|---|
| 3960 |  * PAGE_ALIGN(
 | 
|---|
| 3961 |  *   IN PVOID  Va)
 | 
|---|
| 3962 |  */
 | 
|---|
| 3963 | #define PAGE_ALIGN(Va) \
 | 
|---|
| 3964 |   ((PVOID) ((ULONG_PTR)(Va) & ~(PAGE_SIZE - 1)))
 | 
|---|
| 3965 | 
 | 
|---|
| 3966 | /*
 | 
|---|
| 3967 |  * ULONG_PTR
 | 
|---|
| 3968 |  * ROUND_TO_PAGES(
 | 
|---|
| 3969 |  *   IN ULONG_PTR  Size)
 | 
|---|
| 3970 |  */
 | 
|---|
| 3971 | #define ROUND_TO_PAGES(Size) \
 | 
|---|
| 3972 |   ((ULONG_PTR) (((ULONG_PTR) Size + PAGE_SIZE - 1) & ~(PAGE_SIZE - 1)))
 | 
|---|
| 3973 | 
 | 
|---|
| 3974 | NTOSAPI
 | 
|---|
| 3975 | VOID
 | 
|---|
| 3976 | DDKAPI
 | 
|---|
| 3977 | RtlAssert(
 | 
|---|
| 3978 |   IN PVOID  FailedAssertion,
 | 
|---|
| 3979 |   IN PVOID  FileName,
 | 
|---|
| 3980 |   IN ULONG  LineNumber,
 | 
|---|
| 3981 |   IN PCHAR  Message);
 | 
|---|
| 3982 | 
 | 
|---|
| 3983 | #ifdef DBG
 | 
|---|
| 3984 | 
 | 
|---|
| 3985 | #define ASSERT(exp) \
 | 
|---|
| 3986 |   ((!(exp)) ? \
 | 
|---|
| 3987 |     (RtlAssert( #exp, __FILE__, __LINE__, NULL ), FALSE) : TRUE)
 | 
|---|
| 3988 | 
 | 
|---|
| 3989 | #define ASSERTMSG(msg, exp) \
 | 
|---|
| 3990 |   ((!(exp)) ? \
 | 
|---|
| 3991 |     (RtlAssert( #exp, __FILE__, __LINE__, msg ), FALSE) : TRUE)
 | 
|---|
| 3992 | 
 | 
|---|
| 3993 | #define RTL_SOFT_ASSERT(exp) \
 | 
|---|
| 3994 |   ((!(_exp)) ? \
 | 
|---|
| 3995 |     (DbgPrint("%s(%d): Soft assertion failed\n   Expression: %s\n", __FILE__, __LINE__, #exp), FALSE) : TRUE)
 | 
|---|
| 3996 | 
 | 
|---|
| 3997 | #define RTL_SOFT_ASSERTMSG(msg, exp) \
 | 
|---|
| 3998 |   ((!(exp)) ? \
 | 
|---|
| 3999 |     (DbgPrint("%s(%d): Soft assertion failed\n   Expression: %s\n   Message: %s\n", __FILE__, __LINE__, #exp, (msg)), FALSE) : TRUE)
 | 
|---|
| 4000 | 
 | 
|---|
| 4001 | #define RTL_VERIFY(exp) ASSERT(exp)
 | 
|---|
| 4002 | #define RTL_VERIFYMSG(msg, exp) ASSERT(msg, exp)
 | 
|---|
| 4003 | 
 | 
|---|
| 4004 | #define RTL_SOFT_VERIFY(exp) RTL_SOFT_ASSERT(exp)
 | 
|---|
| 4005 | #define RTL_SOFT_VERIFYMSG(msg, exp) RTL_SOFT_ASSERTMSG(msg, exp)
 | 
|---|
| 4006 | 
 | 
|---|
| 4007 | #else /* !DBG */
 | 
|---|
| 4008 | 
 | 
|---|
| 4009 | #define ASSERT(exp) ((VOID) 0)
 | 
|---|
| 4010 | #define ASSERTMSG(msg, exp) ((VOID) 0)
 | 
|---|
| 4011 | 
 | 
|---|
| 4012 | #define RTL_SOFT_ASSERT(exp) ((VOID) 0)
 | 
|---|
| 4013 | #define RTL_SOFT_ASSERTMSG(msg, exp) ((VOID) 0)
 | 
|---|
| 4014 | 
 | 
|---|
| 4015 | #define RTL_VERIFY(exp) ((exp) ? TRUE : FALSE)
 | 
|---|
| 4016 | #define RTL_VERIFYMSG(msg, exp) ((exp) ? TRUE : FALSE)
 | 
|---|
| 4017 | 
 | 
|---|
| 4018 | #define RTL_SOFT_VERIFY(exp) ((exp) ? TRUE : FALSE)
 | 
|---|
| 4019 | #define RTL_SOFT_VERIFYMSG(msg, exp) ((exp) ? TRUE : FALSE)
 | 
|---|
| 4020 | 
 | 
|---|
| 4021 | #endif /* DBG */
 | 
|---|
| 4022 | 
 | 
|---|
| 4023 | 
 | 
|---|
| 4024 | /*
 | 
|---|
| 4025 | ** Driver support routines
 | 
|---|
| 4026 | */
 | 
|---|
| 4027 | 
 | 
|---|
| 4028 | /** Runtime library routines **/
 | 
|---|
| 4029 | 
 | 
|---|
| 4030 | /*
 | 
|---|
| 4031 |  * VOID
 | 
|---|
| 4032 |  * InitializeListHead(
 | 
|---|
| 4033 |  *   IN PLIST_ENTRY  ListHead)
 | 
|---|
| 4034 |  */
 | 
|---|
| 4035 | #define InitializeListHead(_ListHead) \
 | 
|---|
| 4036 | { \
 | 
|---|
| 4037 |   (_ListHead)->Flink = (_ListHead); \
 | 
|---|
| 4038 |   (_ListHead)->Blink = (_ListHead); \
 | 
|---|
| 4039 | }
 | 
|---|
| 4040 | 
 | 
|---|
| 4041 | /*
 | 
|---|
| 4042 |  * VOID
 | 
|---|
| 4043 |  * InsertHeadList(
 | 
|---|
| 4044 |  *   IN PLIST_ENTRY  ListHead,
 | 
|---|
| 4045 |  *   IN PLIST_ENTRY  Entry)
 | 
|---|
| 4046 |  */
 | 
|---|
| 4047 | #define InsertHeadList(_ListHead, \
 | 
|---|
| 4048 |                        _Entry) \
 | 
|---|
| 4049 | { \
 | 
|---|
| 4050 |   PLIST_ENTRY _OldFlink; \
 | 
|---|
| 4051 |   _OldFlink = (_ListHead)->Flink; \
 | 
|---|
| 4052 |   (_Entry)->Flink = _OldFlink; \
 | 
|---|
| 4053 |   (_Entry)->Blink = (_ListHead); \
 | 
|---|
| 4054 |   _OldFlink->Blink = (_Entry); \
 | 
|---|
| 4055 |   (_ListHead)->Flink = (_Entry); \
 | 
|---|
| 4056 | }
 | 
|---|
| 4057 | 
 | 
|---|
| 4058 | /*
 | 
|---|
| 4059 |  * VOID
 | 
|---|
| 4060 |  * InsertTailList(
 | 
|---|
| 4061 |  *   IN PLIST_ENTRY  ListHead,
 | 
|---|
| 4062 |  *   IN PLIST_ENTRY  Entry)
 | 
|---|
| 4063 |  */
 | 
|---|
| 4064 | #define InsertTailList(_ListHead, \
 | 
|---|
| 4065 |                        _Entry) \
 | 
|---|
| 4066 | { \
 | 
|---|
| 4067 |         PLIST_ENTRY _OldBlink; \
 | 
|---|
| 4068 |         _OldBlink = (_ListHead)->Blink; \
 | 
|---|
| 4069 |         (_Entry)->Flink = (_ListHead); \
 | 
|---|
| 4070 |         (_Entry)->Blink = _OldBlink; \
 | 
|---|
| 4071 |         _OldBlink->Flink = (_Entry); \
 | 
|---|
| 4072 |         (_ListHead)->Blink = (_Entry); \
 | 
|---|
| 4073 | }
 | 
|---|
| 4074 | 
 | 
|---|
| 4075 | /*
 | 
|---|
| 4076 |  * BOOLEAN
 | 
|---|
| 4077 |  * IsListEmpty(
 | 
|---|
| 4078 |  *   IN PLIST_ENTRY  ListHead)
 | 
|---|
| 4079 |  */
 | 
|---|
| 4080 | #define IsListEmpty(_ListHead) \
 | 
|---|
| 4081 |   ((_ListHead)->Flink == (_ListHead))
 | 
|---|
| 4082 | 
 | 
|---|
| 4083 | static __inline PSINGLE_LIST_ENTRY 
 | 
|---|
| 4084 | PopEntryList(
 | 
|---|
| 4085 |   IN PSINGLE_LIST_ENTRY  ListHead)
 | 
|---|
| 4086 | {
 | 
|---|
| 4087 |         PSINGLE_LIST_ENTRY Entry;
 | 
|---|
| 4088 | 
 | 
|---|
| 4089 |         Entry = ListHead->Next;
 | 
|---|
| 4090 |         if (Entry != NULL)
 | 
|---|
| 4091 |         {
 | 
|---|
| 4092 |                 ListHead->Next = Entry->Next;
 | 
|---|
| 4093 |         }
 | 
|---|
| 4094 |   return Entry;
 | 
|---|
| 4095 | }
 | 
|---|
| 4096 | 
 | 
|---|
| 4097 | /*
 | 
|---|
| 4098 |  * VOID
 | 
|---|
| 4099 |  * PushEntryList(
 | 
|---|
| 4100 |  *   IN PSINGLE_LIST_ENTRY  ListHead,
 | 
|---|
| 4101 |  *   IN PSINGLE_LIST_ENTRY  Entry)
 | 
|---|
| 4102 |  */
 | 
|---|
| 4103 | #define PushEntryList(_ListHead, \
 | 
|---|
| 4104 |                       _Entry) \
 | 
|---|
| 4105 | { \
 | 
|---|
| 4106 |         (_Entry)->Next = (_ListHead)->Next; \
 | 
|---|
| 4107 |         (_ListHead)->Next = (_Entry); \
 | 
|---|
| 4108 | }
 | 
|---|
| 4109 | 
 | 
|---|
| 4110 | /*
 | 
|---|
| 4111 |  * VOID
 | 
|---|
| 4112 |  * RemoveEntryList(
 | 
|---|
| 4113 |  *   IN PLIST_ENTRY  Entry)
 | 
|---|
| 4114 |  */
 | 
|---|
| 4115 | #define RemoveEntryList(_Entry) \
 | 
|---|
| 4116 | { \
 | 
|---|
| 4117 |         PLIST_ENTRY _OldFlink; \
 | 
|---|
| 4118 |         PLIST_ENTRY _OldBlink; \
 | 
|---|
| 4119 |         _OldFlink = (_Entry)->Flink; \
 | 
|---|
| 4120 |         _OldBlink = (_Entry)->Blink; \
 | 
|---|
| 4121 |         _OldFlink->Blink = _OldBlink; \
 | 
|---|
| 4122 |         _OldBlink->Flink = _OldFlink; \
 | 
|---|
| 4123 |   (_Entry)->Flink = NULL; \
 | 
|---|
| 4124 |   (_Entry)->Blink = NULL; \
 | 
|---|
| 4125 | }
 | 
|---|
| 4126 | 
 | 
|---|
| 4127 | static __inline PLIST_ENTRY 
 | 
|---|
| 4128 | RemoveHeadList(
 | 
|---|
| 4129 |   IN PLIST_ENTRY  ListHead)
 | 
|---|
| 4130 | {
 | 
|---|
| 4131 |         PLIST_ENTRY OldFlink;
 | 
|---|
| 4132 |         PLIST_ENTRY OldBlink;
 | 
|---|
| 4133 |         PLIST_ENTRY Entry;
 | 
|---|
| 4134 | 
 | 
|---|
| 4135 |         Entry = ListHead->Flink;
 | 
|---|
| 4136 |         OldFlink = ListHead->Flink->Flink;
 | 
|---|
| 4137 |         OldBlink = ListHead->Flink->Blink;
 | 
|---|
| 4138 |         OldFlink->Blink = OldBlink;
 | 
|---|
| 4139 |         OldBlink->Flink = OldFlink;
 | 
|---|
| 4140 | 
 | 
|---|
| 4141 |   if (Entry != ListHead)
 | 
|---|
| 4142 |   {
 | 
|---|
| 4143 |     Entry->Flink = NULL;
 | 
|---|
| 4144 |     Entry->Blink = NULL;
 | 
|---|
| 4145 |   }
 | 
|---|
| 4146 | 
 | 
|---|
| 4147 |         return Entry;
 | 
|---|
| 4148 | }
 | 
|---|
| 4149 | 
 | 
|---|
| 4150 | static __inline PLIST_ENTRY
 | 
|---|
| 4151 | RemoveTailList(
 | 
|---|
| 4152 |   IN PLIST_ENTRY  ListHead)
 | 
|---|
| 4153 | {
 | 
|---|
| 4154 |         PLIST_ENTRY OldFlink;
 | 
|---|
| 4155 |         PLIST_ENTRY OldBlink;
 | 
|---|
| 4156 |         PLIST_ENTRY Entry;
 | 
|---|
| 4157 | 
 | 
|---|
| 4158 |         Entry = ListHead->Blink;
 | 
|---|
| 4159 |         OldFlink = ListHead->Blink->Flink;
 | 
|---|
| 4160 |         OldBlink = ListHead->Blink->Blink;
 | 
|---|
| 4161 |         OldFlink->Blink = OldBlink;
 | 
|---|
| 4162 |         OldBlink->Flink = OldFlink;
 | 
|---|
| 4163 | 
 | 
|---|
| 4164 |   if (Entry != ListHead)
 | 
|---|
| 4165 |   {
 | 
|---|
| 4166 |     Entry->Flink = NULL;
 | 
|---|
| 4167 |     Entry->Blink = NULL;
 | 
|---|
| 4168 |   }
 | 
|---|
| 4169 |    
 | 
|---|
| 4170 |   return Entry;
 | 
|---|
| 4171 | }
 | 
|---|
| 4172 | 
 | 
|---|
| 4173 | /*
 | 
|---|
| 4174 |  * USHORT
 | 
|---|
| 4175 |  * QueryDepthSList(
 | 
|---|
| 4176 |  *   IN PSLIST_HEADER  SListHead)
 | 
|---|
| 4177 |  */
 | 
|---|
| 4178 | #define QueryDepthSList(_SListHead) \
 | 
|---|
| 4179 |   ((USHORT) ((_SListHead)->Alignment & 0xffff))
 | 
|---|
| 4180 | 
 | 
|---|
| 4181 | #define InterlockedFlushSList(ListHead) ExInterlockedFlushSList(ListHead)
 | 
|---|
| 4182 | 
 | 
|---|
| 4183 | NTOSAPI
 | 
|---|
| 4184 | ULONG
 | 
|---|
| 4185 | DDKAPI
 | 
|---|
| 4186 | RtlAnsiStringToUnicodeSize(
 | 
|---|
| 4187 |   IN PANSI_STRING  AnsiString);
 | 
|---|
| 4188 | 
 | 
|---|
| 4189 | NTOSAPI
 | 
|---|
| 4190 | NTSTATUS
 | 
|---|
| 4191 | DDKAPI
 | 
|---|
| 4192 | RtlAddRange(
 | 
|---|
| 4193 |   IN OUT PRTL_RANGE_LIST  RangeList,
 | 
|---|
| 4194 |   IN ULONGLONG  Start,
 | 
|---|
| 4195 |   IN ULONGLONG  End,
 | 
|---|
| 4196 |   IN UCHAR  Attributes,
 | 
|---|
| 4197 |   IN ULONG  Flags,
 | 
|---|
| 4198 |   IN PVOID  UserData  OPTIONAL,
 | 
|---|
| 4199 |   IN PVOID  Owner  OPTIONAL);
 | 
|---|
| 4200 | 
 | 
|---|
| 4201 | NTOSAPI
 | 
|---|
| 4202 | NTSTATUS
 | 
|---|
| 4203 | DDKAPI
 | 
|---|
| 4204 | RtlAnsiStringToUnicodeString(
 | 
|---|
| 4205 |   IN OUT PUNICODE_STRING  DestinationString,
 | 
|---|
| 4206 |   IN PANSI_STRING  SourceString,
 | 
|---|
| 4207 |   IN BOOLEAN  AllocateDestinationString);
 | 
|---|
| 4208 | 
 | 
|---|
| 4209 | NTOSAPI
 | 
|---|
| 4210 | NTSTATUS
 | 
|---|
| 4211 | DDKAPI
 | 
|---|
| 4212 | RtlAppendUnicodeStringToString(
 | 
|---|
| 4213 |   IN OUT PUNICODE_STRING  Destination,
 | 
|---|
| 4214 |   IN PUNICODE_STRING  Source);
 | 
|---|
| 4215 | 
 | 
|---|
| 4216 | NTOSAPI
 | 
|---|
| 4217 | NTSTATUS
 | 
|---|
| 4218 | DDKAPI
 | 
|---|
| 4219 | RtlAppendUnicodeToString(
 | 
|---|
| 4220 |   IN OUT PUNICODE_STRING  Destination,
 | 
|---|
| 4221 |   IN PCWSTR  Source);
 | 
|---|
| 4222 | 
 | 
|---|
| 4223 | NTOSAPI
 | 
|---|
| 4224 | BOOLEAN
 | 
|---|
| 4225 | DDKAPI
 | 
|---|
| 4226 | RtlAreBitsClear(
 | 
|---|
| 4227 |   IN PRTL_BITMAP  BitMapHeader,
 | 
|---|
| 4228 |   IN ULONG  StartingIndex,
 | 
|---|
| 4229 |   IN ULONG  Length); 
 | 
|---|
| 4230 | 
 | 
|---|
| 4231 | NTOSAPI
 | 
|---|
| 4232 | BOOLEAN
 | 
|---|
| 4233 | DDKAPI
 | 
|---|
| 4234 | RtlAreBitsSet(
 | 
|---|
| 4235 |   IN PRTL_BITMAP  BitMapHeader,
 | 
|---|
| 4236 |   IN ULONG  StartingIndex,
 | 
|---|
| 4237 |   IN ULONG  Length); 
 | 
|---|
| 4238 | 
 | 
|---|
| 4239 | NTOSAPI
 | 
|---|
| 4240 | NTSTATUS
 | 
|---|
| 4241 | DDKAPI
 | 
|---|
| 4242 | RtlCharToInteger(
 | 
|---|
| 4243 |   IN PCSZ  String,
 | 
|---|
| 4244 |   IN ULONG  Base  OPTIONAL,
 | 
|---|
| 4245 |   IN OUT PULONG  Value);
 | 
|---|
| 4246 | 
 | 
|---|
| 4247 | NTOSAPI
 | 
|---|
| 4248 | ULONG
 | 
|---|
| 4249 | DDKAPI
 | 
|---|
| 4250 | RtlCheckBit(
 | 
|---|
| 4251 |   IN PRTL_BITMAP  BitMapHeader,
 | 
|---|
| 4252 |   IN ULONG  BitPosition); 
 | 
|---|
| 4253 | 
 | 
|---|
| 4254 | NTOSAPI
 | 
|---|
| 4255 | NTSTATUS
 | 
|---|
| 4256 | DDKAPI
 | 
|---|
| 4257 | RtlCheckRegistryKey(
 | 
|---|
| 4258 |   IN ULONG  RelativeTo,
 | 
|---|
| 4259 |   IN PWSTR  Path);
 | 
|---|
| 4260 | 
 | 
|---|
| 4261 | NTOSAPI
 | 
|---|
| 4262 | VOID
 | 
|---|
| 4263 | DDKAPI
 | 
|---|
| 4264 | RtlClearAllBits(
 | 
|---|
| 4265 |   IN PRTL_BITMAP  BitMapHeader); 
 | 
|---|
| 4266 | 
 | 
|---|
| 4267 | NTOSAPI
 | 
|---|
| 4268 | VOID
 | 
|---|
| 4269 | DDKAPI
 | 
|---|
| 4270 | RtlClearBit(
 | 
|---|
| 4271 |   PRTL_BITMAP  BitMapHeader,
 | 
|---|
| 4272 |   ULONG  BitNumber);
 | 
|---|
| 4273 | 
 | 
|---|
| 4274 | NTOSAPI
 | 
|---|
| 4275 | VOID
 | 
|---|
| 4276 | DDKAPI
 | 
|---|
| 4277 | RtlClearBits(
 | 
|---|
| 4278 |   IN PRTL_BITMAP  BitMapHeader,
 | 
|---|
| 4279 |   IN ULONG  StartingIndex,
 | 
|---|
| 4280 |   IN ULONG  NumberToClear); 
 | 
|---|
| 4281 | 
 | 
|---|
| 4282 | NTOSAPI
 | 
|---|
| 4283 | SIZE_T
 | 
|---|
| 4284 | DDKAPI
 | 
|---|
| 4285 | RtlCompareMemory(
 | 
|---|
| 4286 |   IN CONST VOID  *Source1,
 | 
|---|
| 4287 |   IN CONST VOID  *Source2,
 | 
|---|
| 4288 |   IN SIZE_T  Length);
 | 
|---|
| 4289 | 
 | 
|---|
| 4290 | NTOSAPI
 | 
|---|
| 4291 | LONG
 | 
|---|
| 4292 | DDKAPI
 | 
|---|
| 4293 | RtlCompareString(
 | 
|---|
| 4294 |   IN PSTRING  String1,
 | 
|---|
| 4295 |   IN PSTRING  String2,
 | 
|---|
| 4296 |   BOOLEAN  CaseInSensitive);
 | 
|---|
| 4297 | 
 | 
|---|
| 4298 | NTOSAPI
 | 
|---|
| 4299 | LONG
 | 
|---|
| 4300 | DDKAPI
 | 
|---|
| 4301 | RtlCompareUnicodeString(
 | 
|---|
| 4302 |   IN PUNICODE_STRING  String1,
 | 
|---|
| 4303 |   IN PUNICODE_STRING  String2,
 | 
|---|
| 4304 |   IN BOOLEAN  CaseInSensitive);
 | 
|---|
| 4305 | 
 | 
|---|
| 4306 | NTOSAPI
 | 
|---|
| 4307 | LARGE_INTEGER
 | 
|---|
| 4308 | DDKAPI
 | 
|---|
| 4309 | RtlConvertLongToLargeInteger(
 | 
|---|
| 4310 |   IN LONG  SignedInteger);
 | 
|---|
| 4311 | 
 | 
|---|
| 4312 | NTOSAPI
 | 
|---|
| 4313 | LUID
 | 
|---|
| 4314 | DDKAPI
 | 
|---|
| 4315 | RtlConvertLongToLuid(
 | 
|---|
| 4316 |   IN LONG  Long);
 | 
|---|
| 4317 | 
 | 
|---|
| 4318 | NTOSAPI
 | 
|---|
| 4319 | LARGE_INTEGER
 | 
|---|
| 4320 | DDKAPI
 | 
|---|
| 4321 | RtlConvertUlongToLargeInteger(
 | 
|---|
| 4322 |   IN ULONG  UnsignedInteger);
 | 
|---|
| 4323 | 
 | 
|---|
| 4324 | NTOSAPI
 | 
|---|
| 4325 | LUID
 | 
|---|
| 4326 | DDKAPI
 | 
|---|
| 4327 | RtlConvertUlongToLuid(
 | 
|---|
| 4328 |   ULONG  Ulong);
 | 
|---|
| 4329 | 
 | 
|---|
| 4330 | /*
 | 
|---|
| 4331 |  * VOID
 | 
|---|
| 4332 |  * RtlCopyMemory(
 | 
|---|
| 4333 |  *   IN VOID UNALIGNED  *Destination,
 | 
|---|
| 4334 |  *   IN CONST VOID UNALIGNED  *Source,
 | 
|---|
| 4335 |  *   IN SIZE_T  Length)
 | 
|---|
| 4336 |  */
 | 
|---|
| 4337 | #ifndef RtlCopyMemory
 | 
|---|
| 4338 | #define RtlCopyMemory(Destination, Source, Length) \
 | 
|---|
| 4339 |   memcpy(Destination, Source, Length);
 | 
|---|
| 4340 | #endif
 | 
|---|
| 4341 | 
 | 
|---|
| 4342 | #ifndef RtlCopyBytes
 | 
|---|
| 4343 | #define RtlCopyBytes RtlCopyMemory
 | 
|---|
| 4344 | #endif
 | 
|---|
| 4345 | 
 | 
|---|
| 4346 | NTOSAPI
 | 
|---|
| 4347 | VOID
 | 
|---|
| 4348 | DDKAPI
 | 
|---|
| 4349 | RtlCopyMemory32(
 | 
|---|
| 4350 |   IN VOID UNALIGNED  *Destination,
 | 
|---|
| 4351 |   IN CONST VOID UNALIGNED  *Source,
 | 
|---|
| 4352 |   IN ULONG  Length);
 | 
|---|
| 4353 | 
 | 
|---|
| 4354 | NTOSAPI
 | 
|---|
| 4355 | NTSTATUS
 | 
|---|
| 4356 | DDKAPI
 | 
|---|
| 4357 | RtlCopyRangeList(
 | 
|---|
| 4358 |   OUT PRTL_RANGE_LIST  CopyRangeList,
 | 
|---|
| 4359 |   IN PRTL_RANGE_LIST  RangeList);
 | 
|---|
| 4360 | 
 | 
|---|
| 4361 | NTOSAPI
 | 
|---|
| 4362 | VOID
 | 
|---|
| 4363 | DDKAPI
 | 
|---|
| 4364 | RtlCopyString(
 | 
|---|
| 4365 |   IN OUT PSTRING  DestinationString,
 | 
|---|
| 4366 |   IN PSTRING  SourceString  OPTIONAL);
 | 
|---|
| 4367 | 
 | 
|---|
| 4368 | NTOSAPI
 | 
|---|
| 4369 | VOID
 | 
|---|
| 4370 | DDKAPI
 | 
|---|
| 4371 | RtlCopyUnicodeString(
 | 
|---|
| 4372 |   IN OUT PUNICODE_STRING  DestinationString,
 | 
|---|
| 4373 |   IN PUNICODE_STRING  SourceString);
 | 
|---|
| 4374 | 
 | 
|---|
| 4375 | NTOSAPI
 | 
|---|
| 4376 | NTSTATUS
 | 
|---|
| 4377 | DDKAPI
 | 
|---|
| 4378 | RtlCreateRegistryKey(
 | 
|---|
| 4379 |   IN ULONG  RelativeTo,
 | 
|---|
| 4380 |   IN PWSTR  Path);
 | 
|---|
| 4381 | 
 | 
|---|
| 4382 | NTOSAPI
 | 
|---|
| 4383 | NTSTATUS
 | 
|---|
| 4384 | DDKAPI
 | 
|---|
| 4385 | RtlCreateSecurityDescriptor(
 | 
|---|
| 4386 |   IN OUT PSECURITY_DESCRIPTOR  SecurityDescriptor,
 | 
|---|
| 4387 |   IN ULONG  Revision);
 | 
|---|
| 4388 | 
 | 
|---|
| 4389 | NTOSAPI
 | 
|---|
| 4390 | NTSTATUS
 | 
|---|
| 4391 | DDKAPI
 | 
|---|
| 4392 | RtlDeleteOwnersRanges(
 | 
|---|
| 4393 |   IN OUT PRTL_RANGE_LIST  RangeList,
 | 
|---|
| 4394 |   IN PVOID  Owner);
 | 
|---|
| 4395 | 
 | 
|---|
| 4396 | NTOSAPI
 | 
|---|
| 4397 | NTSTATUS
 | 
|---|
| 4398 | DDKAPI
 | 
|---|
| 4399 | RtlDeleteRange(
 | 
|---|
| 4400 |   IN OUT PRTL_RANGE_LIST  RangeList,
 | 
|---|
| 4401 |   IN ULONGLONG  Start,
 | 
|---|
| 4402 |   IN ULONGLONG  End,
 | 
|---|
| 4403 |   IN PVOID  Owner);
 | 
|---|
| 4404 | 
 | 
|---|
| 4405 | NTOSAPI
 | 
|---|
| 4406 | NTSTATUS
 | 
|---|
| 4407 | DDKAPI
 | 
|---|
| 4408 | RtlDeleteRegistryValue(
 | 
|---|
| 4409 |   IN ULONG  RelativeTo,
 | 
|---|
| 4410 |   IN PCWSTR  Path,
 | 
|---|
| 4411 |   IN PCWSTR  ValueName);
 | 
|---|
| 4412 | 
 | 
|---|
| 4413 | NTOSAPI
 | 
|---|
| 4414 | BOOL
 | 
|---|
| 4415 | DDKAPI
 | 
|---|
| 4416 | RtlDosPathNameToNtPathName_U(
 | 
|---|
| 4417 |   IN PCWSTR  DosPathName,
 | 
|---|
| 4418 |   OUT PUNICODE_STRING  NtPathName,
 | 
|---|
| 4419 |   OUT PCWSTR  *NtFileNamePart,
 | 
|---|
| 4420 |   OUT VOID  *DirectoryInfo);
 | 
|---|
| 4421 | 
 | 
|---|
| 4422 | /*
 | 
|---|
| 4423 |  * BOOLEAN
 | 
|---|
| 4424 |  * RtlEqualLuid( 
 | 
|---|
| 4425 |  *   IN LUID  Luid1,
 | 
|---|
| 4426 |  *   IN LUID  Luid2)
 | 
|---|
| 4427 |  */
 | 
|---|
| 4428 | #define RtlEqualLuid(_Luid1, \
 | 
|---|
| 4429 |                      _Luid2) \
 | 
|---|
| 4430 |   ((Luid1.LowPart == Luid2.LowPart) && (Luid1.HighPart == Luid2.HighPart))
 | 
|---|
| 4431 | 
 | 
|---|
| 4432 | /*
 | 
|---|
| 4433 |  * ULONG
 | 
|---|
| 4434 |  * RtlEqualMemory(
 | 
|---|
| 4435 |  *   IN VOID UNALIGNED  *Destination,
 | 
|---|
| 4436 |  *   IN CONST VOID UNALIGNED  *Source,
 | 
|---|
| 4437 |  *   IN SIZE_T  Length)
 | 
|---|
| 4438 |  */
 | 
|---|
| 4439 | #define RtlEqualMemory(Destination, Source, Length) (!memcmp(Destination, Source, Length))
 | 
|---|
| 4440 | 
 | 
|---|
| 4441 | NTOSAPI
 | 
|---|
| 4442 | BOOLEAN
 | 
|---|
| 4443 | DDKAPI
 | 
|---|
| 4444 | RtlEqualString(
 | 
|---|
| 4445 |   IN PSTRING  String1,
 | 
|---|
| 4446 |   IN PSTRING  String2,
 | 
|---|
| 4447 |   IN BOOLEAN  CaseInSensitive);
 | 
|---|
| 4448 | 
 | 
|---|
| 4449 | NTOSAPI
 | 
|---|
| 4450 | BOOLEAN
 | 
|---|
| 4451 | DDKAPI
 | 
|---|
| 4452 | RtlEqualUnicodeString(
 | 
|---|
| 4453 |   IN CONST UNICODE_STRING  *String1,
 | 
|---|
| 4454 |   IN CONST UNICODE_STRING  *String2,
 | 
|---|
| 4455 |   IN BOOLEAN  CaseInSensitive);
 | 
|---|
| 4456 | 
 | 
|---|
| 4457 | /*
 | 
|---|
| 4458 |  * VOID
 | 
|---|
| 4459 |  * RtlFillMemory(
 | 
|---|
| 4460 |  *   IN VOID UNALIGNED  *Destination,
 | 
|---|
| 4461 |  *   IN SIZE_T  Length,
 | 
|---|
| 4462 |  *   IN UCHAR  Fill)
 | 
|---|
| 4463 |  */
 | 
|---|
| 4464 | #ifndef RtlFillMemory
 | 
|---|
| 4465 | #define RtlFillMemory(Destination, Length, Fill) \
 | 
|---|
| 4466 |   memset(Destination, Fill, Length)
 | 
|---|
| 4467 | #endif
 | 
|---|
| 4468 | 
 | 
|---|
| 4469 | #ifndef RtlFillBytes
 | 
|---|
| 4470 | #define RtlFillBytes RtlFillMemory
 | 
|---|
| 4471 | #endif
 | 
|---|
| 4472 | 
 | 
|---|
| 4473 | NTOSAPI
 | 
|---|
| 4474 | ULONG
 | 
|---|
| 4475 | DDKAPI
 | 
|---|
| 4476 | RtlFindClearBits(
 | 
|---|
| 4477 |   IN PRTL_BITMAP  BitMapHeader,
 | 
|---|
| 4478 |   IN ULONG  NumberToFind,
 | 
|---|
| 4479 |   IN ULONG  HintIndex); 
 | 
|---|
| 4480 | 
 | 
|---|
| 4481 | NTOSAPI
 | 
|---|
| 4482 | ULONG
 | 
|---|
| 4483 | DDKAPI
 | 
|---|
| 4484 | RtlFindClearBitsAndSet(
 | 
|---|
| 4485 |   IN PRTL_BITMAP  BitMapHeader,
 | 
|---|
| 4486 |   IN ULONG  NumberToFind,
 | 
|---|
| 4487 |   IN ULONG  HintIndex); 
 | 
|---|
| 4488 | 
 | 
|---|
| 4489 | NTOSAPI
 | 
|---|
| 4490 | ULONG
 | 
|---|
| 4491 | DDKAPI
 | 
|---|
| 4492 | RtlFindClearRuns( 
 | 
|---|
| 4493 |   IN PRTL_BITMAP  BitMapHeader, 
 | 
|---|
| 4494 |   OUT PRTL_BITMAP_RUN  RunArray, 
 | 
|---|
| 4495 |   IN ULONG  SizeOfRunArray, 
 | 
|---|
| 4496 |   IN BOOLEAN  LocateLongestRuns);
 | 
|---|
| 4497 | 
 | 
|---|
| 4498 | NTOSAPI
 | 
|---|
| 4499 | ULONG
 | 
|---|
| 4500 | DDKAPI
 | 
|---|
| 4501 | RtlFindFirstRunClear(
 | 
|---|
| 4502 |   IN PRTL_BITMAP  BitMapHeader,
 | 
|---|
| 4503 |   OUT PULONG  StartingIndex);
 | 
|---|
| 4504 | 
 | 
|---|
| 4505 | NTOSAPI
 | 
|---|
| 4506 | ULONG
 | 
|---|
| 4507 | DDKAPI
 | 
|---|
| 4508 | RtlFindLastBackwardRunClear(
 | 
|---|
| 4509 |   IN PRTL_BITMAP  BitMapHeader, 
 | 
|---|
| 4510 |   IN ULONG  FromIndex, 
 | 
|---|
| 4511 |   OUT PULONG  StartingRunIndex); 
 | 
|---|
| 4512 | 
 | 
|---|
| 4513 | NTOSAPI
 | 
|---|
| 4514 | CCHAR
 | 
|---|
| 4515 | DDKAPI
 | 
|---|
| 4516 | RtlFindLeastSignificantBit(
 | 
|---|
| 4517 |   IN ULONGLONG  Set);
 | 
|---|
| 4518 | 
 | 
|---|
| 4519 | NTOSAPI
 | 
|---|
| 4520 | ULONG
 | 
|---|
| 4521 | DDKAPI
 | 
|---|
| 4522 | RtlFindLongestRunClear(
 | 
|---|
| 4523 |   IN PRTL_BITMAP  BitMapHeader,
 | 
|---|
| 4524 |   OUT PULONG  StartingIndex); 
 | 
|---|
| 4525 | 
 | 
|---|
| 4526 | NTOSAPI
 | 
|---|
| 4527 | CCHAR
 | 
|---|
| 4528 | DDKAPI
 | 
|---|
| 4529 | RtlFindMostSignificantBit(
 | 
|---|
| 4530 |   IN ULONGLONG  Set);
 | 
|---|
| 4531 | 
 | 
|---|
| 4532 | NTOSAPI
 | 
|---|
| 4533 | ULONG
 | 
|---|
| 4534 | DDKAPI
 | 
|---|
| 4535 | RtlFindNextForwardRunClear(
 | 
|---|
| 4536 |   IN PRTL_BITMAP  BitMapHeader, 
 | 
|---|
| 4537 |   IN ULONG  FromIndex, 
 | 
|---|
| 4538 |   OUT PULONG  StartingRunIndex);
 | 
|---|
| 4539 | 
 | 
|---|
| 4540 | NTOSAPI
 | 
|---|
| 4541 | NTSTATUS
 | 
|---|
| 4542 | DDKAPI
 | 
|---|
| 4543 | RtlFindRange(
 | 
|---|
| 4544 |   IN PRTL_RANGE_LIST  RangeList,
 | 
|---|
| 4545 |   IN ULONGLONG  Minimum,
 | 
|---|
| 4546 |   IN ULONGLONG  Maximum,
 | 
|---|
| 4547 |   IN ULONG  Length,
 | 
|---|
| 4548 |   IN ULONG  Alignment,
 | 
|---|
| 4549 |   IN ULONG  Flags,
 | 
|---|
| 4550 |   IN UCHAR  AttributeAvailableMask,
 | 
|---|
| 4551 |   IN PVOID  Context  OPTIONAL,
 | 
|---|
| 4552 |   IN PRTL_CONFLICT_RANGE_CALLBACK  Callback  OPTIONAL,
 | 
|---|
| 4553 |   OUT PULONGLONG  Start);
 | 
|---|
| 4554 | 
 | 
|---|
| 4555 | NTOSAPI
 | 
|---|
| 4556 | ULONG
 | 
|---|
| 4557 | DDKAPI
 | 
|---|
| 4558 | RtlFindSetBits(
 | 
|---|
| 4559 |   IN PRTL_BITMAP  BitMapHeader,
 | 
|---|
| 4560 |   IN ULONG  NumberToFind,
 | 
|---|
| 4561 |   IN ULONG  HintIndex); 
 | 
|---|
| 4562 | 
 | 
|---|
| 4563 | NTOSAPI
 | 
|---|
| 4564 | ULONG
 | 
|---|
| 4565 | DDKAPI
 | 
|---|
| 4566 | RtlFindSetBitsAndClear(
 | 
|---|
| 4567 |   IN PRTL_BITMAP  BitMapHeader,
 | 
|---|
| 4568 |   IN ULONG  NumberToFind,
 | 
|---|
| 4569 |   IN ULONG  HintIndex); 
 | 
|---|
| 4570 | 
 | 
|---|
| 4571 | NTOSAPI
 | 
|---|
| 4572 | VOID
 | 
|---|
| 4573 | DDKAPI
 | 
|---|
| 4574 | RtlFreeAnsiString(
 | 
|---|
| 4575 |   IN PANSI_STRING  AnsiString);
 | 
|---|
| 4576 | 
 | 
|---|
| 4577 | NTOSAPI
 | 
|---|
| 4578 | VOID
 | 
|---|
| 4579 | DDKAPI
 | 
|---|
| 4580 | RtlFreeRangeList(
 | 
|---|
| 4581 |   IN PRTL_RANGE_LIST  RangeList);
 | 
|---|
| 4582 | 
 | 
|---|
| 4583 | NTOSAPI
 | 
|---|
| 4584 | VOID
 | 
|---|
| 4585 | DDKAPI
 | 
|---|
| 4586 | RtlFreeUnicodeString(
 | 
|---|
| 4587 |   IN PUNICODE_STRING  UnicodeString);
 | 
|---|
| 4588 | 
 | 
|---|
| 4589 | NTOSAPI
 | 
|---|
| 4590 | VOID
 | 
|---|
| 4591 | DDKAPI
 | 
|---|
| 4592 | RtlGetCallersAddress(
 | 
|---|
| 4593 |   OUT PVOID  *CallersAddress,
 | 
|---|
| 4594 |   OUT PVOID  *CallersCaller);
 | 
|---|
| 4595 | 
 | 
|---|
| 4596 | NTOSAPI
 | 
|---|
| 4597 | NTSTATUS
 | 
|---|
| 4598 | DDKAPI
 | 
|---|
| 4599 | RtlGetVersion(
 | 
|---|
| 4600 |   IN OUT PRTL_OSVERSIONINFOW  lpVersionInformation);
 | 
|---|
| 4601 | 
 | 
|---|
| 4602 | NTOSAPI
 | 
|---|
| 4603 | NTSTATUS
 | 
|---|
| 4604 | DDKAPI
 | 
|---|
| 4605 | RtlGetFirstRange(
 | 
|---|
| 4606 |   IN PRTL_RANGE_LIST  RangeList,
 | 
|---|
| 4607 |   OUT PRTL_RANGE_LIST_ITERATOR  Iterator,
 | 
|---|
| 4608 |   OUT PRTL_RANGE  *Range);
 | 
|---|
| 4609 | 
 | 
|---|
| 4610 | NTOSAPI
 | 
|---|
| 4611 | NTSTATUS
 | 
|---|
| 4612 | DDKAPI
 | 
|---|
| 4613 | RtlGetNextRange(
 | 
|---|
| 4614 |   IN OUT  PRTL_RANGE_LIST_ITERATOR  Iterator,
 | 
|---|
| 4615 |   OUT PRTL_RANGE  *Range,
 | 
|---|
| 4616 |   IN BOOLEAN  MoveForwards);
 | 
|---|
| 4617 | 
 | 
|---|
| 4618 | #define FOR_ALL_RANGES(RangeList, Iterator, Current)          \
 | 
|---|
| 4619 |   for (RtlGetFirstRange((RangeList), (Iterator), &(Current)); \
 | 
|---|
| 4620 |     (Current) != NULL;                                        \
 | 
|---|
| 4621 |     RtlGetNextRange((Iterator), &(Current), TRUE))
 | 
|---|
| 4622 | 
 | 
|---|
| 4623 | #define FOR_ALL_RANGES_BACKWARDS(RangeList, Iterator, Current) \
 | 
|---|
| 4624 |   for (RtlGetLastRange((RangeList), (Iterator), &(Current));   \
 | 
|---|
| 4625 |     (Current) != NULL;                                         \
 | 
|---|
| 4626 |     RtlGetNextRange((Iterator), &(Current), FALSE))
 | 
|---|
| 4627 | 
 | 
|---|
| 4628 | NTOSAPI
 | 
|---|
| 4629 | NTSTATUS
 | 
|---|
| 4630 | DDKAPI
 | 
|---|
| 4631 | RtlGUIDFromString( 
 | 
|---|
| 4632 |   IN PUNICODE_STRING  GuidString, 
 | 
|---|
| 4633 |   OUT GUID  *Guid);
 | 
|---|
| 4634 | 
 | 
|---|
| 4635 | NTOSAPI
 | 
|---|
| 4636 | NTSTATUS
 | 
|---|
| 4637 | DDKAPI
 | 
|---|
| 4638 | RtlHashUnicodeString(
 | 
|---|
| 4639 |   IN CONST UNICODE_STRING  *String,
 | 
|---|
| 4640 |   IN BOOLEAN  CaseInSensitive,
 | 
|---|
| 4641 |   IN ULONG  HashAlgorithm,
 | 
|---|
| 4642 |   OUT PULONG  HashValue);
 | 
|---|
| 4643 | 
 | 
|---|
| 4644 | NTOSAPI
 | 
|---|
| 4645 | VOID
 | 
|---|
| 4646 | DDKAPI
 | 
|---|
| 4647 | RtlInitAnsiString(
 | 
|---|
| 4648 |   IN OUT PANSI_STRING  DestinationString,
 | 
|---|
| 4649 |   IN PCSZ  SourceString);
 | 
|---|
| 4650 | 
 | 
|---|
| 4651 | NTOSAPI
 | 
|---|
| 4652 | VOID
 | 
|---|
| 4653 | DDKAPI
 | 
|---|
| 4654 | RtlInitializeBitMap(
 | 
|---|
| 4655 |   IN PRTL_BITMAP  BitMapHeader,
 | 
|---|
| 4656 |   IN PULONG  BitMapBuffer,
 | 
|---|
| 4657 |   IN ULONG  SizeOfBitMap); 
 | 
|---|
| 4658 | 
 | 
|---|
| 4659 | NTOSAPI
 | 
|---|
| 4660 | VOID
 | 
|---|
| 4661 | DDKAPI
 | 
|---|
| 4662 | RtlInitializeRangeList(
 | 
|---|
| 4663 |   IN OUT PRTL_RANGE_LIST  RangeList);
 | 
|---|
| 4664 | 
 | 
|---|
| 4665 | NTOSAPI
 | 
|---|
| 4666 | VOID
 | 
|---|
| 4667 | DDKAPI
 | 
|---|
| 4668 | RtlInitString(
 | 
|---|
| 4669 |   IN OUT PSTRING  DestinationString,
 | 
|---|
| 4670 |   IN PCSZ  SourceString);
 | 
|---|
| 4671 | 
 | 
|---|
| 4672 | NTOSAPI
 | 
|---|
| 4673 | VOID
 | 
|---|
| 4674 | DDKAPI
 | 
|---|
| 4675 | RtlInitUnicodeString(
 | 
|---|
| 4676 |   IN OUT PUNICODE_STRING  DestinationString,
 | 
|---|
| 4677 |   IN PCWSTR  SourceString);
 | 
|---|
| 4678 | 
 | 
|---|
| 4679 | NTOSAPI
 | 
|---|
| 4680 | NTSTATUS
 | 
|---|
| 4681 | DDKAPI
 | 
|---|
| 4682 | RtlInt64ToUnicodeString(
 | 
|---|
| 4683 |   IN ULONGLONG  Value,
 | 
|---|
| 4684 |   IN ULONG  Base OPTIONAL,
 | 
|---|
| 4685 |   IN OUT PUNICODE_STRING  String);
 | 
|---|
| 4686 | 
 | 
|---|
| 4687 | NTOSAPI
 | 
|---|
| 4688 | NTSTATUS
 | 
|---|
| 4689 | DDKAPI
 | 
|---|
| 4690 | RtlIntegerToUnicodeString(
 | 
|---|
| 4691 |   IN ULONG  Value,
 | 
|---|
| 4692 |   IN ULONG  Base  OPTIONAL,
 | 
|---|
| 4693 |   IN OUT PUNICODE_STRING  String);
 | 
|---|
| 4694 | 
 | 
|---|
| 4695 | NTOSAPI
 | 
|---|
| 4696 | NTSTATUS
 | 
|---|
| 4697 | DDKAPI
 | 
|---|
| 4698 | RtlIntPtrToUnicodeString(
 | 
|---|
| 4699 |   PLONG  Value,
 | 
|---|
| 4700 |   ULONG  Base  OPTIONAL,
 | 
|---|
| 4701 |   PUNICODE_STRING  String);
 | 
|---|
| 4702 | 
 | 
|---|
| 4703 | NTOSAPI
 | 
|---|
| 4704 | NTSTATUS
 | 
|---|
| 4705 | DDKAPI
 | 
|---|
| 4706 | RtlInvertRangeList(
 | 
|---|
| 4707 |   OUT PRTL_RANGE_LIST  InvertedRangeList,
 | 
|---|
| 4708 |   IN PRTL_RANGE_LIST  RangeList);
 | 
|---|
| 4709 | 
 | 
|---|
| 4710 | NTOSAPI
 | 
|---|
| 4711 | NTSTATUS
 | 
|---|
| 4712 | DDKAPI
 | 
|---|
| 4713 | RtlIsRangeAvailable(
 | 
|---|
| 4714 |   IN PRTL_RANGE_LIST  RangeList,
 | 
|---|
| 4715 |   IN ULONGLONG  Start,
 | 
|---|
| 4716 |   IN ULONGLONG  End,
 | 
|---|
| 4717 |   IN ULONG  Flags,
 | 
|---|
| 4718 |   IN UCHAR  AttributeAvailableMask,
 | 
|---|
| 4719 |   IN PVOID  Context  OPTIONAL,
 | 
|---|
| 4720 |   IN PRTL_CONFLICT_RANGE_CALLBACK  Callback  OPTIONAL,
 | 
|---|
| 4721 |   OUT PBOOLEAN  Available);
 | 
|---|
| 4722 | 
 | 
|---|
| 4723 | /*
 | 
|---|
| 4724 |  * BOOLEAN
 | 
|---|
| 4725 |  * RtlIsZeroLuid(
 | 
|---|
| 4726 |  *   IN PLUID  L1)
 | 
|---|
| 4727 |  */
 | 
|---|
| 4728 | #define RtlIsZeroLuid(_L1) \
 | 
|---|
| 4729 |   ((BOOLEAN) ((!(_L1)->LowPart) && (!(_L1)->HighPart)))
 | 
|---|
| 4730 | 
 | 
|---|
| 4731 | NTOSAPI
 | 
|---|
| 4732 | ULONG
 | 
|---|
| 4733 | DDKAPI
 | 
|---|
| 4734 | RtlLengthSecurityDescriptor(
 | 
|---|
| 4735 |   IN PSECURITY_DESCRIPTOR  SecurityDescriptor);
 | 
|---|
| 4736 | 
 | 
|---|
| 4737 | NTOSAPI
 | 
|---|
| 4738 | VOID
 | 
|---|
| 4739 | DDKAPI
 | 
|---|
| 4740 | RtlMapGenericMask(
 | 
|---|
| 4741 |   IN OUT PACCESS_MASK  AccessMask,
 | 
|---|
| 4742 |   IN PGENERIC_MAPPING  GenericMapping);
 | 
|---|
| 4743 | 
 | 
|---|
| 4744 | NTOSAPI
 | 
|---|
| 4745 | NTSTATUS
 | 
|---|
| 4746 | DDKAPI
 | 
|---|
| 4747 | RtlMergeRangeLists(
 | 
|---|
| 4748 |   OUT PRTL_RANGE_LIST  MergedRangeList,
 | 
|---|
| 4749 |   IN PRTL_RANGE_LIST  RangeList1,
 | 
|---|
| 4750 |   IN PRTL_RANGE_LIST  RangeList2,
 | 
|---|
| 4751 |   IN ULONG  Flags);
 | 
|---|
| 4752 | 
 | 
|---|
| 4753 | /*
 | 
|---|
| 4754 |  * VOID
 | 
|---|
| 4755 |  * RtlMoveMemory(
 | 
|---|
| 4756 |  *  IN VOID UNALIGNED  *Destination,
 | 
|---|
| 4757 |  *  IN CONST VOID UNALIGNED  *Source,
 | 
|---|
| 4758 |  *  IN SIZE_T  Length)
 | 
|---|
| 4759 |  */
 | 
|---|
| 4760 | #define RtlMoveMemory memmove
 | 
|---|
| 4761 | 
 | 
|---|
| 4762 | NTOSAPI
 | 
|---|
| 4763 | ULONG
 | 
|---|
| 4764 | DDKAPI
 | 
|---|
| 4765 | RtlNumberOfClearBits(
 | 
|---|
| 4766 |   IN PRTL_BITMAP  BitMapHeader);
 | 
|---|
| 4767 | 
 | 
|---|
| 4768 | NTOSAPI
 | 
|---|
| 4769 | ULONG
 | 
|---|
| 4770 | DDKAPI
 | 
|---|
| 4771 | RtlNumberOfSetBits(
 | 
|---|
| 4772 |   IN PRTL_BITMAP  BitMapHeader); 
 | 
|---|
| 4773 | 
 | 
|---|
| 4774 | NTOSAPI
 | 
|---|
| 4775 | VOID
 | 
|---|
| 4776 | DDKFASTAPI
 | 
|---|
| 4777 | RtlPrefetchMemoryNonTemporal(
 | 
|---|
| 4778 |   IN PVOID  Source,
 | 
|---|
| 4779 |   IN SIZE_T  Length);
 | 
|---|
| 4780 | 
 | 
|---|
| 4781 | NTOSAPI
 | 
|---|
| 4782 | BOOLEAN
 | 
|---|
| 4783 | DDKAPI
 | 
|---|
| 4784 | RtlPrefixUnicodeString( 
 | 
|---|
| 4785 |   IN PUNICODE_STRING  String1, 
 | 
|---|
| 4786 |   IN PUNICODE_STRING  String2, 
 | 
|---|
| 4787 |   IN BOOLEAN  CaseInSensitive);
 | 
|---|
| 4788 | 
 | 
|---|
| 4789 | NTOSAPI
 | 
|---|
| 4790 | NTSTATUS
 | 
|---|
| 4791 | DDKAPI
 | 
|---|
| 4792 | RtlQueryRegistryValues(
 | 
|---|
| 4793 |   IN ULONG  RelativeTo,
 | 
|---|
| 4794 |   IN PCWSTR  Path,
 | 
|---|
| 4795 |   IN PRTL_QUERY_REGISTRY_TABLE  QueryTable,
 | 
|---|
| 4796 |   IN PVOID  Context,
 | 
|---|
| 4797 |   IN PVOID  Environment  OPTIONAL);
 | 
|---|
| 4798 | 
 | 
|---|
| 4799 | NTOSAPI
 | 
|---|
| 4800 | VOID
 | 
|---|
| 4801 | DDKAPI
 | 
|---|
| 4802 | RtlRetrieveUlong(
 | 
|---|
| 4803 |   IN OUT PULONG  DestinationAddress,
 | 
|---|
| 4804 |   IN PULONG  SourceAddress);
 | 
|---|
| 4805 | 
 | 
|---|
| 4806 | NTOSAPI
 | 
|---|
| 4807 | VOID
 | 
|---|
| 4808 | DDKAPI
 | 
|---|
| 4809 | RtlRetrieveUshort(
 | 
|---|
| 4810 |   IN OUT PUSHORT  DestinationAddress,
 | 
|---|
| 4811 |   IN PUSHORT  SourceAddress);
 | 
|---|
| 4812 | 
 | 
|---|
| 4813 | NTOSAPI
 | 
|---|
| 4814 | VOID
 | 
|---|
| 4815 | DDKAPI
 | 
|---|
| 4816 | RtlSetAllBits(
 | 
|---|
| 4817 |   IN PRTL_BITMAP  BitMapHeader); 
 | 
|---|
| 4818 | 
 | 
|---|
| 4819 | NTOSAPI
 | 
|---|
| 4820 | VOID
 | 
|---|
| 4821 | DDKAPI
 | 
|---|
| 4822 | RtlSetBit(
 | 
|---|
| 4823 |   PRTL_BITMAP  BitMapHeader,
 | 
|---|
| 4824 |   ULONG  BitNumber);
 | 
|---|
| 4825 | 
 | 
|---|
| 4826 | NTOSAPI
 | 
|---|
| 4827 | VOID
 | 
|---|
| 4828 | DDKAPI
 | 
|---|
| 4829 | RtlSetBits(
 | 
|---|
| 4830 |   IN PRTL_BITMAP  BitMapHeader,
 | 
|---|
| 4831 |   IN ULONG  StartingIndex,
 | 
|---|
| 4832 |   IN ULONG  NumberToSet); 
 | 
|---|
| 4833 | 
 | 
|---|
| 4834 | NTOSAPI
 | 
|---|
| 4835 | NTSTATUS
 | 
|---|
| 4836 | DDKAPI
 | 
|---|
| 4837 | RtlSetDaclSecurityDescriptor(
 | 
|---|
| 4838 |   IN OUT PSECURITY_DESCRIPTOR  SecurityDescriptor,
 | 
|---|
| 4839 |   IN BOOLEAN  DaclPresent,
 | 
|---|
| 4840 |   IN PACL  Dacl  OPTIONAL,
 | 
|---|
| 4841 |   IN BOOLEAN  DaclDefaulted  OPTIONAL);
 | 
|---|
| 4842 | 
 | 
|---|
| 4843 | NTOSAPI
 | 
|---|
| 4844 | VOID
 | 
|---|
| 4845 | DDKAPI
 | 
|---|
| 4846 | RtlStoreUlong(
 | 
|---|
| 4847 |   IN PULONG  Address,
 | 
|---|
| 4848 |   IN ULONG  Value);
 | 
|---|
| 4849 | 
 | 
|---|
| 4850 | NTOSAPI
 | 
|---|
| 4851 | VOID
 | 
|---|
| 4852 | DDKAPI
 | 
|---|
| 4853 | RtlStoreUlonglong(
 | 
|---|
| 4854 |   IN OUT PULONGLONG  Address,
 | 
|---|
| 4855 |   ULONGLONG  Value);
 | 
|---|
| 4856 | 
 | 
|---|
| 4857 | NTOSAPI
 | 
|---|
| 4858 | VOID
 | 
|---|
| 4859 | DDKAPI
 | 
|---|
| 4860 | RtlStoreUlongPtr(
 | 
|---|
| 4861 |   IN OUT PULONG_PTR  Address,
 | 
|---|
| 4862 |   IN ULONG_PTR  Value);
 | 
|---|
| 4863 | 
 | 
|---|
| 4864 | NTOSAPI
 | 
|---|
| 4865 | VOID
 | 
|---|
| 4866 | DDKAPI
 | 
|---|
| 4867 | RtlStoreUshort(
 | 
|---|
| 4868 |   IN PUSHORT  Address,
 | 
|---|
| 4869 |   IN USHORT  Value);
 | 
|---|
| 4870 | 
 | 
|---|
| 4871 | NTOSAPI
 | 
|---|
| 4872 | NTSTATUS
 | 
|---|
| 4873 | DDKAPI
 | 
|---|
| 4874 | RtlStringFromGUID( 
 | 
|---|
| 4875 |   IN REFGUID  Guid, 
 | 
|---|
| 4876 |   OUT PUNICODE_STRING  GuidString);
 | 
|---|
| 4877 | 
 | 
|---|
| 4878 | NTOSAPI
 | 
|---|
| 4879 | BOOLEAN
 | 
|---|
| 4880 | DDKAPI
 | 
|---|
| 4881 | RtlTestBit(
 | 
|---|
| 4882 |   IN PRTL_BITMAP  BitMapHeader,
 | 
|---|
| 4883 |   IN ULONG  BitNumber);
 | 
|---|
| 4884 | 
 | 
|---|
| 4885 | NTOSAPI
 | 
|---|
| 4886 | BOOLEAN
 | 
|---|
| 4887 | DDKAPI
 | 
|---|
| 4888 | RtlTimeFieldsToTime(
 | 
|---|
| 4889 |   IN PTIME_FIELDS  TimeFields,
 | 
|---|
| 4890 |   IN PLARGE_INTEGER  Time);
 | 
|---|
| 4891 | 
 | 
|---|
| 4892 | NTOSAPI
 | 
|---|
| 4893 | VOID
 | 
|---|
| 4894 | DDKAPI
 | 
|---|
| 4895 | RtlTimeToTimeFields(
 | 
|---|
| 4896 |   IN PLARGE_INTEGER  Time,
 | 
|---|
| 4897 |   IN PTIME_FIELDS  TimeFields);
 | 
|---|
| 4898 | 
 | 
|---|
| 4899 | NTOSAPI
 | 
|---|
| 4900 | ULONG
 | 
|---|
| 4901 | DDKFASTAPI
 | 
|---|
| 4902 | RtlUlongByteSwap(
 | 
|---|
| 4903 |   IN ULONG  Source);
 | 
|---|
| 4904 | 
 | 
|---|
| 4905 | NTOSAPI
 | 
|---|
| 4906 | ULONGLONG
 | 
|---|
| 4907 | DDKFASTAPI
 | 
|---|
| 4908 | RtlUlonglongByteSwap(
 | 
|---|
| 4909 |   IN ULONGLONG  Source);
 | 
|---|
| 4910 | 
 | 
|---|
| 4911 | NTOSAPI
 | 
|---|
| 4912 | ULONG
 | 
|---|
| 4913 | DDKAPI
 | 
|---|
| 4914 | RtlUnicodeStringToAnsiSize(
 | 
|---|
| 4915 |   IN PUNICODE_STRING  UnicodeString);
 | 
|---|
| 4916 | 
 | 
|---|
| 4917 | NTOSAPI
 | 
|---|
| 4918 | NTSTATUS
 | 
|---|
| 4919 | DDKAPI
 | 
|---|
| 4920 | RtlUnicodeStringToAnsiString(
 | 
|---|
| 4921 |   IN OUT PANSI_STRING  DestinationString,
 | 
|---|
| 4922 |   IN PUNICODE_STRING  SourceString,
 | 
|---|
| 4923 |   IN BOOLEAN  AllocateDestinationString);
 | 
|---|
| 4924 | 
 | 
|---|
| 4925 | NTOSAPI
 | 
|---|
| 4926 | NTSTATUS
 | 
|---|
| 4927 | DDKAPI
 | 
|---|
| 4928 | RtlUnicodeStringToInteger(
 | 
|---|
| 4929 |   IN PUNICODE_STRING  String,
 | 
|---|
| 4930 |   IN ULONG  Base  OPTIONAL,
 | 
|---|
| 4931 |   OUT PULONG  Value);
 | 
|---|
| 4932 | 
 | 
|---|
| 4933 | NTOSAPI
 | 
|---|
| 4934 | WCHAR
 | 
|---|
| 4935 | DDKAPI
 | 
|---|
| 4936 | RtlUpcaseUnicodeChar( 
 | 
|---|
| 4937 |   IN WCHAR  SourceCharacter);
 | 
|---|
| 4938 | 
 | 
|---|
| 4939 | NTOSAPI
 | 
|---|
| 4940 | NTSTATUS
 | 
|---|
| 4941 | DDKAPI
 | 
|---|
| 4942 | RtlUpcaseUnicodeString(
 | 
|---|
| 4943 |   IN OUT PUNICODE_STRING  DestinationString  OPTIONAL,
 | 
|---|
| 4944 |   IN PCUNICODE_STRING  SourceString,
 | 
|---|
| 4945 |   IN BOOLEAN  AllocateDestinationString);
 | 
|---|
| 4946 | 
 | 
|---|
| 4947 | NTOSAPI
 | 
|---|
| 4948 | CHAR
 | 
|---|
| 4949 | DDKAPI
 | 
|---|
| 4950 | RtlUpperChar( 
 | 
|---|
| 4951 |   IN CHAR Character);
 | 
|---|
| 4952 | 
 | 
|---|
| 4953 | NTOSAPI
 | 
|---|
| 4954 | VOID
 | 
|---|
| 4955 | DDKAPI
 | 
|---|
| 4956 | RtlUpperString(
 | 
|---|
| 4957 |   IN OUT PSTRING  DestinationString,
 | 
|---|
| 4958 |   IN PSTRING  SourceString);
 | 
|---|
| 4959 | 
 | 
|---|
| 4960 | NTOSAPI
 | 
|---|
| 4961 | USHORT
 | 
|---|
| 4962 | DDKFASTAPI
 | 
|---|
| 4963 | RtlUshortByteSwap(
 | 
|---|
| 4964 |   IN USHORT  Source);
 | 
|---|
| 4965 | 
 | 
|---|
| 4966 | NTOSAPI
 | 
|---|
| 4967 | BOOLEAN
 | 
|---|
| 4968 | DDKAPI
 | 
|---|
| 4969 | RtlValidRelativeSecurityDescriptor(
 | 
|---|
| 4970 |   IN PSECURITY_DESCRIPTOR  SecurityDescriptorInput,
 | 
|---|
| 4971 |   IN ULONG  SecurityDescriptorLength,
 | 
|---|
| 4972 |   IN SECURITY_INFORMATION  RequiredInformation);
 | 
|---|
| 4973 | 
 | 
|---|
| 4974 | NTOSAPI
 | 
|---|
| 4975 | BOOLEAN
 | 
|---|
| 4976 | DDKAPI
 | 
|---|
| 4977 | RtlValidSecurityDescriptor(
 | 
|---|
| 4978 |   IN PSECURITY_DESCRIPTOR  SecurityDescriptor);
 | 
|---|
| 4979 | 
 | 
|---|
| 4980 | NTOSAPI
 | 
|---|
| 4981 | NTSTATUS
 | 
|---|
| 4982 | DDKAPI
 | 
|---|
| 4983 | RtlVerifyVersionInfo(
 | 
|---|
| 4984 |   IN PRTL_OSVERSIONINFOEXW  VersionInfo,
 | 
|---|
| 4985 |   IN ULONG  TypeMask,
 | 
|---|
| 4986 |   IN ULONGLONG  ConditionMask);
 | 
|---|
| 4987 | 
 | 
|---|
| 4988 | NTOSAPI
 | 
|---|
| 4989 | NTSTATUS
 | 
|---|
| 4990 | DDKAPI
 | 
|---|
| 4991 | RtlVolumeDeviceToDosName(
 | 
|---|
| 4992 |   IN PVOID  VolumeDeviceObject,
 | 
|---|
| 4993 |   OUT PUNICODE_STRING  DosName);
 | 
|---|
| 4994 | 
 | 
|---|
| 4995 | NTOSAPI
 | 
|---|
| 4996 | ULONG
 | 
|---|
| 4997 | DDKAPI
 | 
|---|
| 4998 | RtlWalkFrameChain(
 | 
|---|
| 4999 |   OUT PVOID  *Callers,
 | 
|---|
| 5000 |   IN ULONG  Count,
 | 
|---|
| 5001 |   IN ULONG  Flags);
 | 
|---|
| 5002 | 
 | 
|---|
| 5003 | NTOSAPI
 | 
|---|
| 5004 | NTSTATUS
 | 
|---|
| 5005 | DDKAPI
 | 
|---|
| 5006 | RtlWriteRegistryValue(
 | 
|---|
| 5007 |   IN ULONG  RelativeTo,
 | 
|---|
| 5008 |   IN PCWSTR  Path,
 | 
|---|
| 5009 |   IN PCWSTR  ValueName,
 | 
|---|
| 5010 |   IN ULONG  ValueType,
 | 
|---|
| 5011 |   IN PVOID  ValueData,
 | 
|---|
| 5012 |   IN ULONG  ValueLength);
 | 
|---|
| 5013 | 
 | 
|---|
| 5014 | NTOSAPI
 | 
|---|
| 5015 | ULONG
 | 
|---|
| 5016 | DDKAPI
 | 
|---|
| 5017 | RtlxUnicodeStringToAnsiSize(
 | 
|---|
| 5018 |   IN PUNICODE_STRING  UnicodeString);
 | 
|---|
| 5019 | 
 | 
|---|
| 5020 | /*
 | 
|---|
| 5021 |  * VOID
 | 
|---|
| 5022 |  * RtlZeroMemory(
 | 
|---|
| 5023 |  *   IN VOID UNALIGNED  *Destination,
 | 
|---|
| 5024 |  *   IN SIZE_T  Length)
 | 
|---|
| 5025 |  */
 | 
|---|
| 5026 | #ifndef RtlZeroMemory
 | 
|---|
| 5027 | #define RtlZeroMemory(Destination, Length) \
 | 
|---|
| 5028 |   memset(Destination, 0, Length)
 | 
|---|
| 5029 | #endif
 | 
|---|
| 5030 | 
 | 
|---|
| 5031 | #ifndef RtlZeroBytes
 | 
|---|
| 5032 | #define RtlZeroBytes RtlZeroMemory
 | 
|---|
| 5033 | #endif
 | 
|---|
| 5034 | 
 | 
|---|
| 5035 | 
 | 
|---|
| 5036 | /** Executive support routines **/
 | 
|---|
| 5037 | 
 | 
|---|
| 5038 | NTOSAPI
 | 
|---|
| 5039 | VOID
 | 
|---|
| 5040 | DDKFASTAPI
 | 
|---|
| 5041 | ExAcquireFastMutex(
 | 
|---|
| 5042 |   IN PFAST_MUTEX  FastMutex);
 | 
|---|
| 5043 | 
 | 
|---|
| 5044 | NTOSAPI
 | 
|---|
| 5045 | VOID
 | 
|---|
| 5046 | DDKFASTAPI
 | 
|---|
| 5047 | ExAcquireFastMutexUnsafe(
 | 
|---|
| 5048 |   IN PFAST_MUTEX  FastMutex);
 | 
|---|
| 5049 | 
 | 
|---|
| 5050 | NTOSAPI
 | 
|---|
| 5051 | BOOLEAN
 | 
|---|
| 5052 | DDKAPI
 | 
|---|
| 5053 | ExAcquireResourceExclusiveLite(
 | 
|---|
| 5054 |   IN PERESOURCE  Resource,
 | 
|---|
| 5055 |   IN BOOLEAN  Wait);
 | 
|---|
| 5056 | 
 | 
|---|
| 5057 | NTOSAPI
 | 
|---|
| 5058 | BOOLEAN
 | 
|---|
| 5059 | DDKAPI
 | 
|---|
| 5060 | ExAcquireResourceSharedLite(
 | 
|---|
| 5061 |   IN PERESOURCE  Resource,
 | 
|---|
| 5062 |   IN BOOLEAN  Wait);
 | 
|---|
| 5063 | 
 | 
|---|
| 5064 | NTOSAPI
 | 
|---|
| 5065 | BOOLEAN
 | 
|---|
| 5066 | DDKAPI
 | 
|---|
| 5067 | ExAcquireSharedStarveExclusive(
 | 
|---|
| 5068 |   IN PERESOURCE  Resource,
 | 
|---|
| 5069 |   IN BOOLEAN  Wait);
 | 
|---|
| 5070 | 
 | 
|---|
| 5071 | NTOSAPI
 | 
|---|
| 5072 | BOOLEAN
 | 
|---|
| 5073 | DDKAPI
 | 
|---|
| 5074 | ExAcquireSharedWaitForExclusive(
 | 
|---|
| 5075 |   IN PERESOURCE  Resource,
 | 
|---|
| 5076 |   IN BOOLEAN  Wait);
 | 
|---|
| 5077 | 
 | 
|---|
| 5078 | 
 | 
|---|
| 5079 | NTOSAPI
 | 
|---|
| 5080 | PSINGLE_LIST_ENTRY
 | 
|---|
| 5081 | DDKFASTAPI
 | 
|---|
| 5082 | ExInterlockedPopEntrySList(
 | 
|---|
| 5083 |   IN PSLIST_HEADER  ListHead,
 | 
|---|
| 5084 |   IN PKSPIN_LOCK  Lock);
 | 
|---|
| 5085 | 
 | 
|---|
| 5086 | 
 | 
|---|
| 5087 | NTOSAPI
 | 
|---|
| 5088 | PSINGLE_LIST_ENTRY
 | 
|---|
| 5089 | DDKFASTAPI
 | 
|---|
| 5090 | ExInterlockedPushEntrySList(
 | 
|---|
| 5091 |   IN PSLIST_HEADER  ListHead,
 | 
|---|
| 5092 |   IN PSINGLE_LIST_ENTRY  ListEntry,
 | 
|---|
| 5093 |   IN PKSPIN_LOCK  Lock);
 | 
|---|
| 5094 | 
 | 
|---|
| 5095 | 
 | 
|---|
| 5096 | #if (__USE_NTOSKRNL__) && (_WIN32_WINNT >= 0x0501)
 | 
|---|
| 5097 | #define ExInterlockedPopEntrySList(_ListHead, \
 | 
|---|
| 5098 |                                    _Lock) \
 | 
|---|
| 5099 |   InterlockedPopEntrySList(_ListHead)
 | 
|---|
| 5100 | 
 | 
|---|
| 5101 | #define ExInterlockedPushEntrySList(_ListHead, \
 | 
|---|
| 5102 |                                     _ListEntry, \
 | 
|---|
| 5103 |                                     _Lock) \
 | 
|---|
| 5104 |   InterlockedPushEntrySList(_ListHead, _ListEntry)
 | 
|---|
| 5105 | #endif /*  __USE_NTOSKRNL__ */
 | 
|---|
| 5106 | 
 | 
|---|
| 5107 | #define ExQueryDepthSList(ListHead) QueryDepthSList(ListHead)
 | 
|---|
| 5108 | 
 | 
|---|
| 5109 | static __inline PVOID
 | 
|---|
| 5110 | ExAllocateFromNPagedLookasideList(
 | 
|---|
| 5111 |   IN PNPAGED_LOOKASIDE_LIST  Lookaside)
 | 
|---|
| 5112 | {
 | 
|---|
| 5113 |   PVOID Entry;
 | 
|---|
| 5114 | 
 | 
|---|
| 5115 |   Lookaside->TotalAllocates++;
 | 
|---|
| 5116 |   Entry = ExInterlockedPopEntrySList(&Lookaside->ListHead,
 | 
|---|
| 5117 |                                      &Lookaside->Obsoleted);
 | 
|---|
| 5118 |   if (Entry == NULL) {
 | 
|---|
| 5119 |     Lookaside->_DDK_DUMMYUNION_MEMBER(AllocateMisses)++;
 | 
|---|
| 5120 |     Entry = (Lookaside->Allocate)(Lookaside->Type,
 | 
|---|
| 5121 |                                   Lookaside->Size,
 | 
|---|
| 5122 |                                   Lookaside->Tag);
 | 
|---|
| 5123 |   }
 | 
|---|
| 5124 |   return Entry;
 | 
|---|
| 5125 | }
 | 
|---|
| 5126 | 
 | 
|---|
| 5127 | static __inline VOID
 | 
|---|
| 5128 | ExFreeToNPagedLookasideList(
 | 
|---|
| 5129 |   IN PNPAGED_LOOKASIDE_LIST  Lookaside,
 | 
|---|
| 5130 |   IN PVOID  Entry)
 | 
|---|
| 5131 | {
 | 
|---|
| 5132 |   Lookaside->TotalFrees++;
 | 
|---|
| 5133 |   if (ExQueryDepthSList(&Lookaside->ListHead) >= Lookaside->Depth) {
 | 
|---|
| 5134 |     Lookaside->_DDK_DUMMYUNION_N_MEMBER(2,FreeMisses)++;
 | 
|---|
| 5135 |     (Lookaside->Free)(Entry);
 | 
|---|
| 5136 |   } else {
 | 
|---|
| 5137 |     ExInterlockedPushEntrySList(&Lookaside->ListHead,
 | 
|---|
| 5138 |                                 (PSLIST_ENTRY)Entry,
 | 
|---|
| 5139 |                                 &Lookaside->Obsoleted);
 | 
|---|
| 5140 |   }
 | 
|---|
| 5141 | }
 | 
|---|
| 5142 | 
 | 
|---|
| 5143 | #if (__USE_NTOSKRNL__) && (_WIN32_WINNT >= 0x0501)
 | 
|---|
| 5144 | 
 | 
|---|
| 5145 | static __inline PVOID
 | 
|---|
| 5146 | ExAllocateFromPagedLookasideList(
 | 
|---|
| 5147 |   IN PPAGED_LOOKASIDE_LIST  Lookaside)
 | 
|---|
| 5148 | {
 | 
|---|
| 5149 |   PVOID Entry;
 | 
|---|
| 5150 | 
 | 
|---|
| 5151 |   Lookaside->TotalAllocates++;
 | 
|---|
| 5152 |   Entry = InterlockedPopEntrySList(&Lookaside->ListHead);
 | 
|---|
| 5153 |   if (Entry == NULL) {
 | 
|---|
| 5154 |     Lookaside->_DDK_DUMMYUNION_MEMBER(AllocateMisses)++;
 | 
|---|
| 5155 |     Entry = (Lookaside->Allocate)(Lookaside->Type,
 | 
|---|
| 5156 |                                   Lookaside->Size,
 | 
|---|
| 5157 |                                   Lookaside->Tag);
 | 
|---|
| 5158 |   }
 | 
|---|
| 5159 |   return Entry;
 | 
|---|
| 5160 | }
 | 
|---|
| 5161 | 
 | 
|---|
| 5162 | static __inline VOID
 | 
|---|
| 5163 | ExFreeToPagedLookasideList(
 | 
|---|
| 5164 |   IN PPAGED_LOOKASIDE_LIST  Lookaside,
 | 
|---|
| 5165 |   IN PVOID  Entry)
 | 
|---|
| 5166 | {
 | 
|---|
| 5167 |   Lookaside->TotalFrees++;
 | 
|---|
| 5168 |   if (ExQueryDepthSList(&Lookaside->ListHead) >= Lookaside->Depth) {
 | 
|---|
| 5169 |     Lookaside->_DDK_DUMMYUNION_N_MEMBER(2,FreeMisses)++;
 | 
|---|
| 5170 |     (Lookaside->Free)(Entry);
 | 
|---|
| 5171 |   } else {
 | 
|---|
| 5172 |     InterlockedPushEntrySList(&Lookaside->ListHead,
 | 
|---|
| 5173 |                               (PSLIST_ENTRY)Entry);
 | 
|---|
| 5174 |   }
 | 
|---|
| 5175 | }
 | 
|---|
| 5176 | 
 | 
|---|
| 5177 | #else /* (__USE_NTOSKRNL__) && (_WIN32_WINNT >= 0x0501) */
 | 
|---|
| 5178 | 
 | 
|---|
| 5179 | NTOSAPI
 | 
|---|
| 5180 | PVOID
 | 
|---|
| 5181 | DDKAPI
 | 
|---|
| 5182 | ExAllocateFromPagedLookasideList(
 | 
|---|
| 5183 |   IN PPAGED_LOOKASIDE_LIST  Lookaside);
 | 
|---|
| 5184 | 
 | 
|---|
| 5185 | NTOSAPI
 | 
|---|
| 5186 | VOID
 | 
|---|
| 5187 | DDKAPI
 | 
|---|
| 5188 | ExFreeToPagedLookasideList(
 | 
|---|
| 5189 |   IN PPAGED_LOOKASIDE_LIST  Lookaside,
 | 
|---|
| 5190 |   IN PVOID  Entry);
 | 
|---|
| 5191 | 
 | 
|---|
| 5192 | #endif /* (__USE_NTOSKRNL__) && (_WIN32_WINNT >= 0x0501) */
 | 
|---|
| 5193 | 
 | 
|---|
| 5194 | NTOSAPI
 | 
|---|
| 5195 | PVOID
 | 
|---|
| 5196 | DDKAPI
 | 
|---|
| 5197 | ExAllocatePoolWithQuotaTag(
 | 
|---|
| 5198 |   IN POOL_TYPE  PoolType,
 | 
|---|
| 5199 |   IN SIZE_T  NumberOfBytes,
 | 
|---|
| 5200 |   IN ULONG  Tag);
 | 
|---|
| 5201 | 
 | 
|---|
| 5202 | NTOSAPI
 | 
|---|
| 5203 | PVOID
 | 
|---|
| 5204 | DDKAPI
 | 
|---|
| 5205 | ExAllocatePoolWithTag(
 | 
|---|
| 5206 |   IN POOL_TYPE  PoolType,
 | 
|---|
| 5207 |   IN SIZE_T  NumberOfBytes,
 | 
|---|
| 5208 |   IN ULONG  Tag);
 | 
|---|
| 5209 | 
 | 
|---|
| 5210 | #ifdef POOL_TAGGING
 | 
|---|
| 5211 | 
 | 
|---|
| 5212 | #define ExAllocatePoolWithQuota(p,n) ExAllocatePoolWithQuotaTag(p,n,' kdD')
 | 
|---|
| 5213 | #define ExAllocatePool(p,n) ExAllocatePoolWithTag(p,n,' kdD')
 | 
|---|
| 5214 | 
 | 
|---|
| 5215 | #else /* !POOL_TAGGING */
 | 
|---|
| 5216 | 
 | 
|---|
| 5217 | NTOSAPI
 | 
|---|
| 5218 | PVOID
 | 
|---|
| 5219 | DDKAPI
 | 
|---|
| 5220 | ExAllocatePool(
 | 
|---|
| 5221 |   IN POOL_TYPE  PoolType,
 | 
|---|
| 5222 |   IN SIZE_T  NumberOfBytes);
 | 
|---|
| 5223 | 
 | 
|---|
| 5224 | NTOSAPI
 | 
|---|
| 5225 | PVOID
 | 
|---|
| 5226 | DDKAPI
 | 
|---|
| 5227 | ExAllocatePoolWithQuota(
 | 
|---|
| 5228 |   IN POOL_TYPE  PoolType,
 | 
|---|
| 5229 |   IN SIZE_T  NumberOfBytes);
 | 
|---|
| 5230 | 
 | 
|---|
| 5231 | #endif /* POOL_TAGGING */
 | 
|---|
| 5232 | 
 | 
|---|
| 5233 | NTOSAPI
 | 
|---|
| 5234 | PVOID
 | 
|---|
| 5235 | DDKAPI
 | 
|---|
| 5236 | ExAllocatePoolWithTagPriority(
 | 
|---|
| 5237 |   IN POOL_TYPE  PoolType,
 | 
|---|
| 5238 |   IN SIZE_T  NumberOfBytes,
 | 
|---|
| 5239 |   IN ULONG  Tag,
 | 
|---|
| 5240 |   IN EX_POOL_PRIORITY  Priority);
 | 
|---|
| 5241 | 
 | 
|---|
| 5242 | NTOSAPI
 | 
|---|
| 5243 | VOID
 | 
|---|
| 5244 | DDKAPI
 | 
|---|
| 5245 | ExConvertExclusiveToSharedLite(
 | 
|---|
| 5246 |   IN PERESOURCE  Resource);
 | 
|---|
| 5247 | 
 | 
|---|
| 5248 | NTOSAPI
 | 
|---|
| 5249 | NTSTATUS
 | 
|---|
| 5250 | DDKAPI
 | 
|---|
| 5251 | ExCreateCallback(
 | 
|---|
| 5252 |   OUT PCALLBACK_OBJECT  *CallbackObject,
 | 
|---|
| 5253 |   IN POBJECT_ATTRIBUTES  ObjectAttributes,
 | 
|---|
| 5254 |   IN BOOLEAN  Create,
 | 
|---|
| 5255 |   IN BOOLEAN  AllowMultipleCallbacks);
 | 
|---|
| 5256 | 
 | 
|---|
| 5257 | NTOSAPI
 | 
|---|
| 5258 | VOID
 | 
|---|
| 5259 | DDKAPI
 | 
|---|
| 5260 | ExDeleteNPagedLookasideList(
 | 
|---|
| 5261 |   IN PNPAGED_LOOKASIDE_LIST  Lookaside);
 | 
|---|
| 5262 | 
 | 
|---|
| 5263 | NTOSAPI
 | 
|---|
| 5264 | VOID
 | 
|---|
| 5265 | DDKAPI
 | 
|---|
| 5266 | ExDeletePagedLookasideList(
 | 
|---|
| 5267 |   IN PPAGED_LOOKASIDE_LIST  Lookaside);
 | 
|---|
| 5268 | 
 | 
|---|
| 5269 | NTOSAPI
 | 
|---|
| 5270 | NTSTATUS
 | 
|---|
| 5271 | DDKAPI
 | 
|---|
| 5272 | ExDeleteResourceLite(
 | 
|---|
| 5273 |   IN PERESOURCE  Resource);
 | 
|---|
| 5274 | 
 | 
|---|
| 5275 | NTOSAPI
 | 
|---|
| 5276 | VOID
 | 
|---|
| 5277 | DDKAPI
 | 
|---|
| 5278 | ExFreePool(
 | 
|---|
| 5279 |   IN PVOID  P);
 | 
|---|
| 5280 | 
 | 
|---|
| 5281 | #define PROTECTED_POOL                    0x80000000
 | 
|---|
| 5282 | 
 | 
|---|
| 5283 | #ifdef POOL_TAGGING
 | 
|---|
| 5284 | #define ExFreePool(P) ExFreePoolWithTag(P, 0)
 | 
|---|
| 5285 | #endif
 | 
|---|
| 5286 | 
 | 
|---|
| 5287 | NTOSAPI
 | 
|---|
| 5288 | VOID
 | 
|---|
| 5289 | DDKAPI
 | 
|---|
| 5290 | ExFreePoolWithTag(
 | 
|---|
| 5291 |   IN PVOID  P,
 | 
|---|
| 5292 |   IN ULONG  Tag);
 | 
|---|
| 5293 | 
 | 
|---|
| 5294 | /*
 | 
|---|
| 5295 |  * ERESOURCE_THREAD
 | 
|---|
| 5296 |  * ExGetCurrentResourceThread(
 | 
|---|
| 5297 |  *   VOID);
 | 
|---|
| 5298 |  */
 | 
|---|
| 5299 | #define ExGetCurrentResourceThread() ((ERESOURCE_THREAD) PsGetCurrentThread())
 | 
|---|
| 5300 | 
 | 
|---|
| 5301 | NTOSAPI
 | 
|---|
| 5302 | ULONG
 | 
|---|
| 5303 | DDKAPI
 | 
|---|
| 5304 | ExGetExclusiveWaiterCount(
 | 
|---|
| 5305 |   IN PERESOURCE  Resource);
 | 
|---|
| 5306 | 
 | 
|---|
| 5307 | NTOSAPI
 | 
|---|
| 5308 | KPROCESSOR_MODE
 | 
|---|
| 5309 | DDKAPI
 | 
|---|
| 5310 | ExGetPreviousMode( 
 | 
|---|
| 5311 |   VOID);
 | 
|---|
| 5312 | 
 | 
|---|
| 5313 | NTOSAPI
 | 
|---|
| 5314 | ULONG
 | 
|---|
| 5315 | DDKAPI
 | 
|---|
| 5316 | ExGetSharedWaiterCount(
 | 
|---|
| 5317 |   IN PERESOURCE  Resource);
 | 
|---|
| 5318 | 
 | 
|---|
| 5319 | NTOSAPI
 | 
|---|
| 5320 | VOID
 | 
|---|
| 5321 | DDKAPI
 | 
|---|
| 5322 | KeInitializeEvent(
 | 
|---|
| 5323 |   IN PRKEVENT  Event,
 | 
|---|
| 5324 |   IN EVENT_TYPE  Type,
 | 
|---|
| 5325 |   IN BOOLEAN  State);
 | 
|---|
| 5326 | 
 | 
|---|
| 5327 | /*
 | 
|---|
| 5328 |  * VOID DDKAPI
 | 
|---|
| 5329 |  * ExInitializeFastMutex(
 | 
|---|
| 5330 |  *   IN PFAST_MUTEX  FastMutex)
 | 
|---|
| 5331 |  */
 | 
|---|
| 5332 | #define ExInitializeFastMutex(_FastMutex) \
 | 
|---|
| 5333 | { \
 | 
|---|
| 5334 |   (_FastMutex)->Count = 1; \
 | 
|---|
| 5335 |   (_FastMutex)->Owner = NULL; \
 | 
|---|
| 5336 |   (_FastMutex)->Contention = 0; \
 | 
|---|
| 5337 |   KeInitializeEvent(&(_FastMutex)->Event, SynchronizationEvent, FALSE); \
 | 
|---|
| 5338 | }
 | 
|---|
| 5339 | 
 | 
|---|
| 5340 | NTOSAPI
 | 
|---|
| 5341 | VOID
 | 
|---|
| 5342 | DDKAPI
 | 
|---|
| 5343 | ExInitializeNPagedLookasideList(
 | 
|---|
| 5344 |   IN PNPAGED_LOOKASIDE_LIST  Lookaside,
 | 
|---|
| 5345 |   IN PALLOCATE_FUNCTION  Allocate  OPTIONAL,
 | 
|---|
| 5346 |   IN PFREE_FUNCTION  Free  OPTIONAL,
 | 
|---|
| 5347 |   IN ULONG  Flags,
 | 
|---|
| 5348 |   IN SIZE_T  Size,
 | 
|---|
| 5349 |   IN ULONG  Tag,
 | 
|---|
| 5350 |   IN USHORT  Depth);
 | 
|---|
| 5351 | 
 | 
|---|
| 5352 | NTOSAPI
 | 
|---|
| 5353 | VOID
 | 
|---|
| 5354 | DDKAPI
 | 
|---|
| 5355 | ExInitializePagedLookasideList(
 | 
|---|
| 5356 |   IN PPAGED_LOOKASIDE_LIST  Lookaside,
 | 
|---|
| 5357 |   IN PALLOCATE_FUNCTION  Allocate  OPTIONAL,
 | 
|---|
| 5358 |   IN PFREE_FUNCTION  Free  OPTIONAL,
 | 
|---|
| 5359 |   IN ULONG  Flags,
 | 
|---|
| 5360 |   IN SIZE_T  Size,
 | 
|---|
| 5361 |   IN ULONG  Tag,
 | 
|---|
| 5362 |   IN USHORT  Depth);
 | 
|---|
| 5363 | 
 | 
|---|
| 5364 | NTOSAPI
 | 
|---|
| 5365 | NTSTATUS
 | 
|---|
| 5366 | DDKAPI
 | 
|---|
| 5367 | ExInitializeResourceLite(
 | 
|---|
| 5368 |   IN PERESOURCE  Resource);
 | 
|---|
| 5369 | 
 | 
|---|
| 5370 | /*
 | 
|---|
| 5371 |  * VOID
 | 
|---|
| 5372 |  * InitializeSListHead(
 | 
|---|
| 5373 |  *   IN PSLIST_HEADER  SListHead)
 | 
|---|
| 5374 |  */
 | 
|---|
| 5375 | #define InitializeSListHead(_SListHead) \
 | 
|---|
| 5376 |         (_SListHead)->Alignment = 0
 | 
|---|
| 5377 | 
 | 
|---|
| 5378 | #define ExInitializeSListHead InitializeSListHead
 | 
|---|
| 5379 | 
 | 
|---|
| 5380 | NTOSAPI
 | 
|---|
| 5381 | LARGE_INTEGER
 | 
|---|
| 5382 | DDKAPI
 | 
|---|
| 5383 | ExInterlockedAddLargeInteger(
 | 
|---|
| 5384 |   IN PLARGE_INTEGER  Addend,
 | 
|---|
| 5385 |   IN LARGE_INTEGER  Increment,
 | 
|---|
| 5386 |   IN PKSPIN_LOCK  Lock);
 | 
|---|
| 5387 | 
 | 
|---|
| 5388 | NTOSAPI
 | 
|---|
| 5389 | VOID
 | 
|---|
| 5390 | DDKFASTAPI
 | 
|---|
| 5391 | ExInterlockedAddLargeStatistic(
 | 
|---|
| 5392 |   IN PLARGE_INTEGER  Addend,
 | 
|---|
| 5393 |   IN ULONG  Increment);
 | 
|---|
| 5394 | 
 | 
|---|
| 5395 | NTOSAPI
 | 
|---|
| 5396 | ULONG
 | 
|---|
| 5397 | DDKAPI
 | 
|---|
| 5398 | ExInterlockedAddUlong(
 | 
|---|
| 5399 |   IN PULONG  Addend,
 | 
|---|
| 5400 |   IN ULONG  Increment,
 | 
|---|
| 5401 |   PKSPIN_LOCK  Lock);
 | 
|---|
| 5402 | 
 | 
|---|
| 5403 | NTOSAPI
 | 
|---|
| 5404 | ULONG
 | 
|---|
| 5405 | DDKFASTAPI
 | 
|---|
| 5406 | ExfInterlockedAddUlong(
 | 
|---|
| 5407 |   IN PULONG  Addend,
 | 
|---|
| 5408 |   IN ULONG  Increment,
 | 
|---|
| 5409 |   PKSPIN_LOCK  Lock);
 | 
|---|
| 5410 | 
 | 
|---|
| 5411 | 
 | 
|---|
| 5412 | NTOSAPI
 | 
|---|
| 5413 | LONGLONG
 | 
|---|
| 5414 | DDKFASTAPI
 | 
|---|
| 5415 | ExInterlockedCompareExchange64(
 | 
|---|
| 5416 |   IN OUT PLONGLONG  Destination,
 | 
|---|
| 5417 |   IN PLONGLONG  Exchange,
 | 
|---|
| 5418 |   IN PLONGLONG  Comparand,
 | 
|---|
| 5419 |   IN PKSPIN_LOCK  Lock); 
 | 
|---|
| 5420 | 
 | 
|---|
| 5421 | NTOSAPI
 | 
|---|
| 5422 | PSINGLE_LIST_ENTRY
 | 
|---|
| 5423 | DDKFASTAPI
 | 
|---|
| 5424 | ExInterlockedFlushSList(
 | 
|---|
| 5425 |   IN PSLIST_HEADER  ListHead);
 | 
|---|
| 5426 | 
 | 
|---|
| 5427 | NTOSAPI
 | 
|---|
| 5428 | PLIST_ENTRY
 | 
|---|
| 5429 | DDKAPI
 | 
|---|
| 5430 | ExInterlockedInsertHeadList(
 | 
|---|
| 5431 |   IN PLIST_ENTRY  ListHead,
 | 
|---|
| 5432 |   IN PLIST_ENTRY  ListEntry,
 | 
|---|
| 5433 |   IN PKSPIN_LOCK  Lock);
 | 
|---|
| 5434 | 
 | 
|---|
| 5435 | NTOSAPI
 | 
|---|
| 5436 | PLIST_ENTRY
 | 
|---|
| 5437 | DDKFASTAPI
 | 
|---|
| 5438 | ExfInterlockedInsertHeadList(
 | 
|---|
| 5439 |   IN PLIST_ENTRY  ListHead,
 | 
|---|
| 5440 |   IN PLIST_ENTRY  ListEntry,
 | 
|---|
| 5441 |   IN PKSPIN_LOCK  Lock);
 | 
|---|
| 5442 | 
 | 
|---|
| 5443 | NTOSAPI
 | 
|---|
| 5444 | PLIST_ENTRY
 | 
|---|
| 5445 | DDKAPI
 | 
|---|
| 5446 | ExInterlockedInsertTailList(
 | 
|---|
| 5447 |   IN PLIST_ENTRY  ListHead,
 | 
|---|
| 5448 |   IN PLIST_ENTRY  ListEntry,
 | 
|---|
| 5449 |   IN PKSPIN_LOCK  Lock);
 | 
|---|
| 5450 | 
 | 
|---|
| 5451 | NTOSAPI
 | 
|---|
| 5452 | PLIST_ENTRY
 | 
|---|
| 5453 | DDKFASTAPI
 | 
|---|
| 5454 | ExfInterlockedInsertTailList(
 | 
|---|
| 5455 |   IN PLIST_ENTRY  ListHead,
 | 
|---|
| 5456 |   IN PLIST_ENTRY  ListEntry,
 | 
|---|
| 5457 |   IN PKSPIN_LOCK  Lock);
 | 
|---|
| 5458 | 
 | 
|---|
| 5459 | NTOSAPI
 | 
|---|
| 5460 | PSINGLE_LIST_ENTRY
 | 
|---|
| 5461 | DDKAPI
 | 
|---|
| 5462 | ExInterlockedPopEntryList(
 | 
|---|
| 5463 |   IN PSINGLE_LIST_ENTRY  ListHead,
 | 
|---|
| 5464 |   IN PKSPIN_LOCK  Lock);
 | 
|---|
| 5465 | 
 | 
|---|
| 5466 | NTOSAPI
 | 
|---|
| 5467 | PSINGLE_LIST_ENTRY
 | 
|---|
| 5468 | DDKFASTAPI
 | 
|---|
| 5469 | ExfInterlockedPopEntryList(
 | 
|---|
| 5470 |   IN PSINGLE_LIST_ENTRY  ListHead,
 | 
|---|
| 5471 |   IN PKSPIN_LOCK  Lock);
 | 
|---|
| 5472 | 
 | 
|---|
| 5473 | 
 | 
|---|
| 5474 | NTOSAPI
 | 
|---|
| 5475 | PSINGLE_LIST_ENTRY
 | 
|---|
| 5476 | DDKAPI
 | 
|---|
| 5477 | ExInterlockedPushEntryList(
 | 
|---|
| 5478 |   IN PSINGLE_LIST_ENTRY  ListHead,
 | 
|---|
| 5479 |   IN PSINGLE_LIST_ENTRY  ListEntry,
 | 
|---|
| 5480 |   IN PKSPIN_LOCK  Lock);
 | 
|---|
| 5481 | 
 | 
|---|
| 5482 | NTOSAPI
 | 
|---|
| 5483 | PSINGLE_LIST_ENTRY
 | 
|---|
| 5484 | DDKFASTAPI
 | 
|---|
| 5485 | ExfInterlockedPushEntryList(
 | 
|---|
| 5486 |   IN PSINGLE_LIST_ENTRY  ListHead,
 | 
|---|
| 5487 |   IN PSINGLE_LIST_ENTRY  ListEntry,
 | 
|---|
| 5488 |   IN PKSPIN_LOCK  Lock);
 | 
|---|
| 5489 | 
 | 
|---|
| 5490 | 
 | 
|---|
| 5491 | NTOSAPI
 | 
|---|
| 5492 | PLIST_ENTRY
 | 
|---|
| 5493 | DDKAPI
 | 
|---|
| 5494 | ExInterlockedRemoveHeadList(
 | 
|---|
| 5495 |   IN PLIST_ENTRY  ListHead,
 | 
|---|
| 5496 |   IN PKSPIN_LOCK  Lock);
 | 
|---|
| 5497 | 
 | 
|---|
| 5498 | NTOSAPI
 | 
|---|
| 5499 | PLIST_ENTRY
 | 
|---|
| 5500 | DDKFASTAPI
 | 
|---|
| 5501 | ExfInterlockedRemoveHeadList(
 | 
|---|
| 5502 |   IN PLIST_ENTRY  ListHead,
 | 
|---|
| 5503 |   IN PKSPIN_LOCK  Lock);
 | 
|---|
| 5504 | 
 | 
|---|
| 5505 | 
 | 
|---|
| 5506 | NTOSAPI
 | 
|---|
| 5507 | BOOLEAN
 | 
|---|
| 5508 | DDKAPI
 | 
|---|
| 5509 | ExIsProcessorFeaturePresent(
 | 
|---|
| 5510 |   IN ULONG  ProcessorFeature);
 | 
|---|
| 5511 | 
 | 
|---|
| 5512 | NTOSAPI
 | 
|---|
| 5513 | BOOLEAN
 | 
|---|
| 5514 | DDKAPI
 | 
|---|
| 5515 | ExIsResourceAcquiredExclusiveLite(
 | 
|---|
| 5516 |   IN PERESOURCE  Resource);
 | 
|---|
| 5517 | 
 | 
|---|
| 5518 | NTOSAPI
 | 
|---|
| 5519 | USHORT
 | 
|---|
| 5520 | DDKAPI
 | 
|---|
| 5521 | ExIsResourceAcquiredLite(
 | 
|---|
| 5522 |   IN PERESOURCE  Resource);
 | 
|---|
| 5523 | 
 | 
|---|
| 5524 | NTOSAPI
 | 
|---|
| 5525 | USHORT
 | 
|---|
| 5526 | DDKAPI
 | 
|---|
| 5527 | ExIsResourceAcquiredSharedLite(
 | 
|---|
| 5528 |   IN PERESOURCE  Resource);
 | 
|---|
| 5529 | 
 | 
|---|
| 5530 | NTOSAPI
 | 
|---|
| 5531 | VOID
 | 
|---|
| 5532 | DDKAPI
 | 
|---|
| 5533 | ExLocalTimeToSystemTime(
 | 
|---|
| 5534 |   IN PLARGE_INTEGER  LocalTime,
 | 
|---|
| 5535 |   OUT PLARGE_INTEGER  SystemTime);
 | 
|---|
| 5536 | 
 | 
|---|
| 5537 | NTOSAPI
 | 
|---|
| 5538 | VOID
 | 
|---|
| 5539 | DDKAPI
 | 
|---|
| 5540 | ExNotifyCallback(
 | 
|---|
| 5541 |   IN PCALLBACK_OBJECT  CallbackObject,
 | 
|---|
| 5542 |   IN PVOID  Argument1,
 | 
|---|
| 5543 |   IN PVOID  Argument2);
 | 
|---|
| 5544 | 
 | 
|---|
| 5545 | NTOSAPI
 | 
|---|
| 5546 | VOID
 | 
|---|
| 5547 | DDKAPI
 | 
|---|
| 5548 | ExRaiseAccessViolation(
 | 
|---|
| 5549 |   VOID);
 | 
|---|
| 5550 | 
 | 
|---|
| 5551 | NTOSAPI
 | 
|---|
| 5552 | VOID
 | 
|---|
| 5553 | DDKAPI
 | 
|---|
| 5554 | ExRaiseDatatypeMisalignment(
 | 
|---|
| 5555 |   VOID);
 | 
|---|
| 5556 | 
 | 
|---|
| 5557 | NTOSAPI
 | 
|---|
| 5558 | VOID
 | 
|---|
| 5559 | DDKAPI
 | 
|---|
| 5560 | ExRaiseStatus(
 | 
|---|
| 5561 |   IN NTSTATUS  Status);
 | 
|---|
| 5562 | 
 | 
|---|
| 5563 | NTOSAPI
 | 
|---|
| 5564 | PVOID
 | 
|---|
| 5565 | DDKAPI
 | 
|---|
| 5566 | ExRegisterCallback(
 | 
|---|
| 5567 |   IN PCALLBACK_OBJECT  CallbackObject,
 | 
|---|
| 5568 |   IN PCALLBACK_FUNCTION  CallbackFunction,
 | 
|---|
| 5569 |   IN PVOID  CallbackContext);
 | 
|---|
| 5570 | 
 | 
|---|
| 5571 | NTOSAPI
 | 
|---|
| 5572 | VOID
 | 
|---|
| 5573 | DDKAPI
 | 
|---|
| 5574 | ExReinitializeResourceLite(
 | 
|---|
| 5575 |   IN PERESOURCE  Resource);
 | 
|---|
| 5576 | 
 | 
|---|
| 5577 | NTOSAPI
 | 
|---|
| 5578 | VOID
 | 
|---|
| 5579 | DDKFASTAPI
 | 
|---|
| 5580 | ExReleaseFastMutex(
 | 
|---|
| 5581 |   IN PFAST_MUTEX  FastMutex);
 | 
|---|
| 5582 | 
 | 
|---|
| 5583 | NTOSAPI
 | 
|---|
| 5584 | VOID
 | 
|---|
| 5585 | DDKFASTAPI
 | 
|---|
| 5586 | ExReleaseFastMutexUnsafe(
 | 
|---|
| 5587 |   IN PFAST_MUTEX  FastMutex);
 | 
|---|
| 5588 | 
 | 
|---|
| 5589 | NTOSAPI
 | 
|---|
| 5590 | VOID
 | 
|---|
| 5591 | DDKAPI
 | 
|---|
| 5592 | ExReleaseResourceForThreadLite(
 | 
|---|
| 5593 |   IN PERESOURCE  Resource,
 | 
|---|
| 5594 |   IN ERESOURCE_THREAD  ResourceThreadId);
 | 
|---|
| 5595 | 
 | 
|---|
| 5596 | NTOSAPI
 | 
|---|
| 5597 | VOID
 | 
|---|
| 5598 | DDKFASTAPI
 | 
|---|
| 5599 | ExReleaseResourceLite(
 | 
|---|
| 5600 |   IN PERESOURCE  Resource);
 | 
|---|
| 5601 | 
 | 
|---|
| 5602 | NTOSAPI
 | 
|---|
| 5603 | VOID
 | 
|---|
| 5604 | DDKAPI
 | 
|---|
| 5605 | ExSetResourceOwnerPointer( 
 | 
|---|
| 5606 |   IN PERESOURCE  Resource,
 | 
|---|
| 5607 |   IN PVOID  OwnerPointer);
 | 
|---|
| 5608 | 
 | 
|---|
| 5609 | NTOSAPI
 | 
|---|
| 5610 | ULONG
 | 
|---|
| 5611 | DDKAPI
 | 
|---|
| 5612 | ExSetTimerResolution(
 | 
|---|
| 5613 |   IN ULONG  DesiredTime,
 | 
|---|
| 5614 |   IN BOOLEAN  SetResolution);
 | 
|---|
| 5615 | 
 | 
|---|
| 5616 | NTOSAPI
 | 
|---|
| 5617 | VOID
 | 
|---|
| 5618 | DDKAPI
 | 
|---|
| 5619 | ExSystemTimeToLocalTime(
 | 
|---|
| 5620 |   IN PLARGE_INTEGER  SystemTime,
 | 
|---|
| 5621 |   OUT PLARGE_INTEGER  LocalTime);
 | 
|---|
| 5622 | 
 | 
|---|
| 5623 | NTOSAPI
 | 
|---|
| 5624 | BOOLEAN
 | 
|---|
| 5625 | DDKFASTAPI
 | 
|---|
| 5626 | ExTryToAcquireFastMutex(
 | 
|---|
| 5627 |   IN PFAST_MUTEX  FastMutex);
 | 
|---|
| 5628 | 
 | 
|---|
| 5629 | NTOSAPI
 | 
|---|
| 5630 | BOOLEAN
 | 
|---|
| 5631 | DDKAPI
 | 
|---|
| 5632 | ExTryToAcquireResourceExclusiveLite(
 | 
|---|
| 5633 |   IN PERESOURCE  Resource);
 | 
|---|
| 5634 | 
 | 
|---|
| 5635 | NTOSAPI
 | 
|---|
| 5636 | VOID
 | 
|---|
| 5637 | DDKAPI
 | 
|---|
| 5638 | ExUnregisterCallback(
 | 
|---|
| 5639 |   IN PVOID  CbRegistration);
 | 
|---|
| 5640 | 
 | 
|---|
| 5641 | NTOSAPI
 | 
|---|
| 5642 | NTSTATUS
 | 
|---|
| 5643 | DDKAPI
 | 
|---|
| 5644 | ExUuidCreate(
 | 
|---|
| 5645 |   OUT UUID  *Uuid);
 | 
|---|
| 5646 | 
 | 
|---|
| 5647 | NTOSAPI
 | 
|---|
| 5648 | BOOLEAN
 | 
|---|
| 5649 | DDKAPI
 | 
|---|
| 5650 | ExVerifySuite(
 | 
|---|
| 5651 |   IN SUITE_TYPE  SuiteType);
 | 
|---|
| 5652 | 
 | 
|---|
| 5653 | #ifdef DBG
 | 
|---|
| 5654 | 
 | 
|---|
| 5655 | #define PAGED_CODE() { \
 | 
|---|
| 5656 |   if (KeGetCurrentIrql() > APC_LEVEL) { \
 | 
|---|
| 5657 |     KdPrint( ("NTDDK: Pageable code called at IRQL > APC_LEVEL (%d)\n", KeGetCurrentIrql() )); \
 | 
|---|
| 5658 |     ASSERT(FALSE); \
 | 
|---|
| 5659 |   } \
 | 
|---|
| 5660 | }
 | 
|---|
| 5661 | 
 | 
|---|
| 5662 | #else
 | 
|---|
| 5663 | 
 | 
|---|
| 5664 | #define PAGED_CODE()
 | 
|---|
| 5665 | 
 | 
|---|
| 5666 | #endif
 | 
|---|
| 5667 | 
 | 
|---|
| 5668 | NTOSAPI
 | 
|---|
| 5669 | VOID
 | 
|---|
| 5670 | DDKAPI
 | 
|---|
| 5671 | ProbeForRead(
 | 
|---|
| 5672 |   IN CONST VOID  *Address,
 | 
|---|
| 5673 |   IN ULONG  Length,
 | 
|---|
| 5674 |   IN ULONG  Alignment);
 | 
|---|
| 5675 | 
 | 
|---|
| 5676 | NTOSAPI
 | 
|---|
| 5677 | VOID
 | 
|---|
| 5678 | DDKAPI
 | 
|---|
| 5679 | ProbeForWrite(
 | 
|---|
| 5680 |   IN CONST VOID  *Address,
 | 
|---|
| 5681 |   IN ULONG  Length,
 | 
|---|
| 5682 |   IN ULONG  Alignment);
 | 
|---|
| 5683 | 
 | 
|---|
| 5684 | 
 | 
|---|
| 5685 | 
 | 
|---|
| 5686 | /** Configuration manager routines **/
 | 
|---|
| 5687 | 
 | 
|---|
| 5688 | NTOSAPI
 | 
|---|
| 5689 | NTSTATUS
 | 
|---|
| 5690 | DDKAPI
 | 
|---|
| 5691 | CmRegisterCallback(
 | 
|---|
| 5692 |   IN PEX_CALLBACK_FUNCTION  Function,
 | 
|---|
| 5693 |   IN PVOID  Context,
 | 
|---|
| 5694 |   IN OUT PLARGE_INTEGER  Cookie);
 | 
|---|
| 5695 | 
 | 
|---|
| 5696 | NTOSAPI
 | 
|---|
| 5697 | NTSTATUS
 | 
|---|
| 5698 | DDKAPI
 | 
|---|
| 5699 | CmUnRegisterCallback(
 | 
|---|
| 5700 |   IN LARGE_INTEGER  Cookie);
 | 
|---|
| 5701 | 
 | 
|---|
| 5702 | 
 | 
|---|
| 5703 | 
 | 
|---|
| 5704 | /** Filesystem runtime library routines **/
 | 
|---|
| 5705 | 
 | 
|---|
| 5706 | NTOSAPI
 | 
|---|
| 5707 | BOOLEAN
 | 
|---|
| 5708 | DDKAPI
 | 
|---|
| 5709 | FsRtlIsTotalDeviceFailure(
 | 
|---|
| 5710 |   IN NTSTATUS  Status);
 | 
|---|
| 5711 | 
 | 
|---|
| 5712 | 
 | 
|---|
| 5713 | 
 | 
|---|
| 5714 | /** Hardware abstraction layer routines **/
 | 
|---|
| 5715 | 
 | 
|---|
| 5716 | NTOSAPI
 | 
|---|
| 5717 | VOID
 | 
|---|
| 5718 | DDKFASTAPI
 | 
|---|
| 5719 | HalExamineMBR(
 | 
|---|
| 5720 |   IN PDEVICE_OBJECT  DeviceObject,
 | 
|---|
| 5721 |   IN ULONG  SectorSize,
 | 
|---|
| 5722 |   IN ULONG  MBRTypeIdentifier,
 | 
|---|
| 5723 |   OUT PVOID  Buffer);
 | 
|---|
| 5724 | 
 | 
|---|
| 5725 | NTOSAPI
 | 
|---|
| 5726 | VOID
 | 
|---|
| 5727 | DDKAPI
 | 
|---|
| 5728 | READ_PORT_BUFFER_UCHAR(
 | 
|---|
| 5729 |   IN PUCHAR  Port,
 | 
|---|
| 5730 |   IN PUCHAR  Buffer,
 | 
|---|
| 5731 |   IN ULONG  Count);
 | 
|---|
| 5732 | 
 | 
|---|
| 5733 | NTOSAPI
 | 
|---|
| 5734 | VOID
 | 
|---|
| 5735 | DDKAPI
 | 
|---|
| 5736 | READ_PORT_BUFFER_ULONG(
 | 
|---|
| 5737 |   IN PULONG  Port,
 | 
|---|
| 5738 |   IN PULONG  Buffer,
 | 
|---|
| 5739 |   IN ULONG  Count);
 | 
|---|
| 5740 | 
 | 
|---|
| 5741 | NTOSAPI
 | 
|---|
| 5742 | VOID
 | 
|---|
| 5743 | DDKAPI
 | 
|---|
| 5744 | READ_PORT_BUFFER_USHORT(
 | 
|---|
| 5745 |   IN PUSHORT  Port,
 | 
|---|
| 5746 |   IN PUSHORT  Buffer,
 | 
|---|
| 5747 |   IN ULONG  Count);
 | 
|---|
| 5748 | 
 | 
|---|
| 5749 | NTOSAPI
 | 
|---|
| 5750 | UCHAR
 | 
|---|
| 5751 | DDKAPI
 | 
|---|
| 5752 | READ_PORT_UCHAR(
 | 
|---|
| 5753 |   IN PUCHAR  Port);
 | 
|---|
| 5754 | 
 | 
|---|
| 5755 | NTOSAPI
 | 
|---|
| 5756 | ULONG
 | 
|---|
| 5757 | DDKAPI
 | 
|---|
| 5758 | READ_PORT_ULONG(
 | 
|---|
| 5759 |   IN PULONG  Port);
 | 
|---|
| 5760 | 
 | 
|---|
| 5761 | NTOSAPI
 | 
|---|
| 5762 | USHORT
 | 
|---|
| 5763 | DDKAPI
 | 
|---|
| 5764 | READ_PORT_USHORT(
 | 
|---|
| 5765 |   IN PUSHORT  Port);
 | 
|---|
| 5766 | 
 | 
|---|
| 5767 | NTOSAPI
 | 
|---|
| 5768 | VOID
 | 
|---|
| 5769 | DDKAPI
 | 
|---|
| 5770 | READ_REGISTER_BUFFER_UCHAR(
 | 
|---|
| 5771 |   IN PUCHAR  Register,
 | 
|---|
| 5772 |   IN PUCHAR  Buffer,
 | 
|---|
| 5773 |   IN ULONG  Count);
 | 
|---|
| 5774 | 
 | 
|---|
| 5775 | NTOSAPI
 | 
|---|
| 5776 | VOID
 | 
|---|
| 5777 | DDKAPI
 | 
|---|
| 5778 | READ_REGISTER_BUFFER_ULONG(
 | 
|---|
| 5779 |   IN PULONG  Register,
 | 
|---|
| 5780 |   IN PULONG  Buffer,
 | 
|---|
| 5781 |   IN ULONG  Count);
 | 
|---|
| 5782 | 
 | 
|---|
| 5783 | NTOSAPI
 | 
|---|
| 5784 | VOID
 | 
|---|
| 5785 | DDKAPI
 | 
|---|
| 5786 | READ_REGISTER_BUFFER_USHORT(
 | 
|---|
| 5787 |   IN PUSHORT  Register,
 | 
|---|
| 5788 |   IN PUSHORT  Buffer,
 | 
|---|
| 5789 |   IN ULONG  Count);
 | 
|---|
| 5790 | 
 | 
|---|
| 5791 | NTOSAPI
 | 
|---|
| 5792 | UCHAR
 | 
|---|
| 5793 | DDKAPI
 | 
|---|
| 5794 | READ_REGISTER_UCHAR(
 | 
|---|
| 5795 |   IN PUCHAR  Register);
 | 
|---|
| 5796 | 
 | 
|---|
| 5797 | NTOSAPI
 | 
|---|
| 5798 | ULONG
 | 
|---|
| 5799 | DDKAPI
 | 
|---|
| 5800 | READ_REGISTER_ULONG(
 | 
|---|
| 5801 |   IN PULONG  Register);
 | 
|---|
| 5802 | 
 | 
|---|
| 5803 | NTOSAPI
 | 
|---|
| 5804 | USHORT
 | 
|---|
| 5805 | DDKAPI
 | 
|---|
| 5806 | READ_REGISTER_USHORT(
 | 
|---|
| 5807 |   IN PUSHORT  Register);
 | 
|---|
| 5808 | 
 | 
|---|
| 5809 | NTOSAPI
 | 
|---|
| 5810 | VOID
 | 
|---|
| 5811 | DDKAPI
 | 
|---|
| 5812 | WRITE_PORT_BUFFER_UCHAR(
 | 
|---|
| 5813 |   IN PUCHAR  Port,
 | 
|---|
| 5814 |   IN PUCHAR  Buffer,
 | 
|---|
| 5815 |   IN ULONG  Count);
 | 
|---|
| 5816 | 
 | 
|---|
| 5817 | NTOSAPI
 | 
|---|
| 5818 | VOID
 | 
|---|
| 5819 | DDKAPI
 | 
|---|
| 5820 | WRITE_PORT_BUFFER_ULONG(
 | 
|---|
| 5821 |   IN PULONG  Port,
 | 
|---|
| 5822 |   IN PULONG  Buffer,
 | 
|---|
| 5823 |   IN ULONG  Count);
 | 
|---|
| 5824 | 
 | 
|---|
| 5825 | NTOSAPI
 | 
|---|
| 5826 | VOID
 | 
|---|
| 5827 | DDKAPI
 | 
|---|
| 5828 | WRITE_PORT_BUFFER_USHORT(
 | 
|---|
| 5829 |   IN PUSHORT  Port,
 | 
|---|
| 5830 |   IN PUSHORT  Buffer,
 | 
|---|
| 5831 |   IN ULONG  Count);
 | 
|---|
| 5832 | 
 | 
|---|
| 5833 | NTOSAPI
 | 
|---|
| 5834 | VOID
 | 
|---|
| 5835 | DDKAPI
 | 
|---|
| 5836 | WRITE_PORT_UCHAR(
 | 
|---|
| 5837 |   IN PUCHAR  Port,
 | 
|---|
| 5838 |   IN UCHAR  Value);
 | 
|---|
| 5839 | 
 | 
|---|
| 5840 | NTOSAPI
 | 
|---|
| 5841 | VOID
 | 
|---|
| 5842 | DDKAPI
 | 
|---|
| 5843 | WRITE_PORT_ULONG(
 | 
|---|
| 5844 |   IN PULONG  Port,
 | 
|---|
| 5845 |   IN ULONG  Value);
 | 
|---|
| 5846 | 
 | 
|---|
| 5847 | NTOSAPI
 | 
|---|
| 5848 | VOID
 | 
|---|
| 5849 | DDKAPI
 | 
|---|
| 5850 | WRITE_PORT_USHORT(
 | 
|---|
| 5851 |   IN PUSHORT  Port,
 | 
|---|
| 5852 |   IN USHORT  Value);
 | 
|---|
| 5853 | 
 | 
|---|
| 5854 | NTOSAPI
 | 
|---|
| 5855 | VOID
 | 
|---|
| 5856 | DDKAPI
 | 
|---|
| 5857 | WRITE_REGISTER_BUFFER_UCHAR(
 | 
|---|
| 5858 |   IN PUCHAR  Register,
 | 
|---|
| 5859 |   IN PUCHAR  Buffer,
 | 
|---|
| 5860 |   IN ULONG  Count);
 | 
|---|
| 5861 | 
 | 
|---|
| 5862 | NTOSAPI
 | 
|---|
| 5863 | VOID
 | 
|---|
| 5864 | DDKAPI
 | 
|---|
| 5865 | WRITE_REGISTER_BUFFER_ULONG(
 | 
|---|
| 5866 |   IN PULONG  Register,
 | 
|---|
| 5867 |   IN PULONG  Buffer,
 | 
|---|
| 5868 |   IN ULONG  Count);
 | 
|---|
| 5869 | 
 | 
|---|
| 5870 | NTOSAPI
 | 
|---|
| 5871 | VOID
 | 
|---|
| 5872 | DDKAPI
 | 
|---|
| 5873 | WRITE_REGISTER_BUFFER_USHORT(
 | 
|---|
| 5874 |   IN PUSHORT  Register,
 | 
|---|
| 5875 |   IN PUSHORT  Buffer,
 | 
|---|
| 5876 |   IN ULONG  Count);
 | 
|---|
| 5877 | 
 | 
|---|
| 5878 | NTOSAPI
 | 
|---|
| 5879 | VOID
 | 
|---|
| 5880 | DDKAPI
 | 
|---|
| 5881 | WRITE_REGISTER_UCHAR(
 | 
|---|
| 5882 |   IN PUCHAR  Register,
 | 
|---|
| 5883 |   IN UCHAR  Value);
 | 
|---|
| 5884 | 
 | 
|---|
| 5885 | NTOSAPI
 | 
|---|
| 5886 | VOID
 | 
|---|
| 5887 | DDKAPI
 | 
|---|
| 5888 | WRITE_REGISTER_ULONG(
 | 
|---|
| 5889 |   IN PULONG  Register,
 | 
|---|
| 5890 |   IN ULONG  Value);
 | 
|---|
| 5891 | 
 | 
|---|
| 5892 | NTOSAPI
 | 
|---|
| 5893 | VOID
 | 
|---|
| 5894 | DDKAPI
 | 
|---|
| 5895 | WRITE_REGISTER_USHORT(
 | 
|---|
| 5896 |   IN PUSHORT  Register,
 | 
|---|
| 5897 |   IN USHORT  Value);
 | 
|---|
| 5898 | 
 | 
|---|
| 5899 | /** I/O manager routines **/
 | 
|---|
| 5900 | 
 | 
|---|
| 5901 | NTOSAPI
 | 
|---|
| 5902 | VOID
 | 
|---|
| 5903 | DDKAPI
 | 
|---|
| 5904 | IoAcquireCancelSpinLock(
 | 
|---|
| 5905 |   OUT PKIRQL  Irql);
 | 
|---|
| 5906 | 
 | 
|---|
| 5907 | NTOSAPI
 | 
|---|
| 5908 | NTSTATUS
 | 
|---|
| 5909 | DDKAPI
 | 
|---|
| 5910 | IoAcquireRemoveLockEx(
 | 
|---|
| 5911 |   IN PIO_REMOVE_LOCK  RemoveLock,
 | 
|---|
| 5912 |   IN OPTIONAL PVOID  Tag  OPTIONAL,
 | 
|---|
| 5913 |   IN PCSTR  File,
 | 
|---|
| 5914 |   IN ULONG  Line,
 | 
|---|
| 5915 |   IN ULONG  RemlockSize);
 | 
|---|
| 5916 | 
 | 
|---|
| 5917 | /*
 | 
|---|
| 5918 |  * NTSTATUS
 | 
|---|
| 5919 |  * IoAcquireRemoveLock(
 | 
|---|
| 5920 |  *   IN PIO_REMOVE_LOCK  RemoveLock,
 | 
|---|
| 5921 |  *   IN OPTIONAL PVOID  Tag)
 | 
|---|
| 5922 |  */
 | 
|---|
| 5923 | #define IoAcquireRemoveLock(_RemoveLock, \
 | 
|---|
| 5924 |                             _Tag) \
 | 
|---|
| 5925 |   IoAcquireRemoveLockEx(_RemoveLock, _Tag, __FILE__, __LINE__, sizeof(IO_REMOVE_LOCK))
 | 
|---|
| 5926 | 
 | 
|---|
| 5927 | /*
 | 
|---|
| 5928 |  * VOID
 | 
|---|
| 5929 |  * IoAdjustPagingPathCount(
 | 
|---|
| 5930 |  *   IN PLONG  Count,
 | 
|---|
| 5931 |  *   IN BOOLEAN  Increment)
 | 
|---|
| 5932 |  */
 | 
|---|
| 5933 | #define IoAdjustPagingPathCount(_Count, \
 | 
|---|
| 5934 |                                 _Increment) \
 | 
|---|
| 5935 | { \
 | 
|---|
| 5936 |   if (_Increment) \
 | 
|---|
| 5937 |     { \
 | 
|---|
| 5938 |       InterlockedIncrement(_Count); \
 | 
|---|
| 5939 |     } \
 | 
|---|
| 5940 |   else \
 | 
|---|
| 5941 |     { \
 | 
|---|
| 5942 |       InterlockedDecrement(_Count); \
 | 
|---|
| 5943 |     } \
 | 
|---|
| 5944 | }
 | 
|---|
| 5945 | 
 | 
|---|
| 5946 | NTOSAPI
 | 
|---|
| 5947 | VOID
 | 
|---|
| 5948 | DDKAPI
 | 
|---|
| 5949 | IoAllocateController(
 | 
|---|
| 5950 |   IN PCONTROLLER_OBJECT  ControllerObject,
 | 
|---|
| 5951 |   IN PDEVICE_OBJECT  DeviceObject,
 | 
|---|
| 5952 |   IN PDRIVER_CONTROL  ExecutionRoutine,
 | 
|---|
| 5953 |   IN PVOID  Context);
 | 
|---|
| 5954 | 
 | 
|---|
| 5955 | NTOSAPI
 | 
|---|
| 5956 | NTSTATUS
 | 
|---|
| 5957 | DDKAPI
 | 
|---|
| 5958 | IoAllocateDriverObjectExtension(
 | 
|---|
| 5959 |   IN PDRIVER_OBJECT  DriverObject,
 | 
|---|
| 5960 |   IN PVOID  ClientIdentificationAddress,
 | 
|---|
| 5961 |   IN ULONG  DriverObjectExtensionSize,
 | 
|---|
| 5962 |   OUT PVOID  *DriverObjectExtension);
 | 
|---|
| 5963 | 
 | 
|---|
| 5964 | typedef struct _IO_ERROR_LOG_PACKET { 
 | 
|---|
| 5965 |         UCHAR  MajorFunctionCode; 
 | 
|---|
| 5966 |         UCHAR  RetryCount; 
 | 
|---|
| 5967 |         USHORT  DumpDataSize; 
 | 
|---|
| 5968 |         USHORT  NumberOfStrings; 
 | 
|---|
| 5969 |         USHORT  StringOffset; 
 | 
|---|
| 5970 |         USHORT  EventCategory; 
 | 
|---|
| 5971 |         NTSTATUS  ErrorCode; 
 | 
|---|
| 5972 |         ULONG  UniqueErrorValue; 
 | 
|---|
| 5973 |         NTSTATUS  FinalStatus; 
 | 
|---|
| 5974 |         ULONG  SequenceNumber; 
 | 
|---|
| 5975 |         ULONG  IoControlCode; 
 | 
|---|
| 5976 |         LARGE_INTEGER  DeviceOffset; 
 | 
|---|
| 5977 |         ULONG  DumpData[1]; 
 | 
|---|
| 5978 | } IO_ERROR_LOG_PACKET, *PIO_ERROR_LOG_PACKET; 
 | 
|---|
| 5979 | 
 | 
|---|
| 5980 | NTOSAPI
 | 
|---|
| 5981 | PVOID
 | 
|---|
| 5982 | DDKAPI
 | 
|---|
| 5983 | IoAllocateErrorLogEntry(
 | 
|---|
| 5984 |   IN PVOID  IoObject,
 | 
|---|
| 5985 |   IN UCHAR  EntrySize);
 | 
|---|
| 5986 | 
 | 
|---|
| 5987 | NTOSAPI
 | 
|---|
| 5988 | PIRP
 | 
|---|
| 5989 | DDKAPI
 | 
|---|
| 5990 | IoAllocateIrp(
 | 
|---|
| 5991 |   IN CCHAR  StackSize,
 | 
|---|
| 5992 |   IN BOOLEAN  ChargeQuota);
 | 
|---|
| 5993 | 
 | 
|---|
| 5994 | NTOSAPI
 | 
|---|
| 5995 | PMDL
 | 
|---|
| 5996 | DDKAPI
 | 
|---|
| 5997 | IoAllocateMdl(
 | 
|---|
| 5998 |   IN PVOID  VirtualAddress,
 | 
|---|
| 5999 |   IN ULONG  Length,
 | 
|---|
| 6000 |   IN BOOLEAN  SecondaryBuffer,
 | 
|---|
| 6001 |   IN BOOLEAN  ChargeQuota,
 | 
|---|
| 6002 |   IN OUT PIRP  Irp  OPTIONAL);
 | 
|---|
| 6003 | 
 | 
|---|
| 6004 | NTOSAPI
 | 
|---|
| 6005 | PIO_WORKITEM
 | 
|---|
| 6006 | DDKAPI
 | 
|---|
| 6007 | IoAllocateWorkItem(
 | 
|---|
| 6008 |   IN PDEVICE_OBJECT  DeviceObject);
 | 
|---|
| 6009 | 
 | 
|---|
| 6010 | /*
 | 
|---|
| 6011 |  * VOID IoAssignArcName(
 | 
|---|
| 6012 |  *   IN PUNICODE_STRING  ArcName,
 | 
|---|
| 6013 |  *   IN PUNICODE_STRING  DeviceName);
 | 
|---|
| 6014 |  */
 | 
|---|
| 6015 | #define IoAssignArcName(_ArcName, _DeviceName) ( \
 | 
|---|
| 6016 |   IoCreateSymbolicLink((_ArcName), (_DeviceName)))
 | 
|---|
| 6017 | 
 | 
|---|
| 6018 | NTOSAPI
 | 
|---|
| 6019 | NTSTATUS
 | 
|---|
| 6020 | DDKAPI
 | 
|---|
| 6021 | IoAttachDevice(
 | 
|---|
| 6022 |   IN PDEVICE_OBJECT  SourceDevice,
 | 
|---|
| 6023 |   IN PUNICODE_STRING  TargetDevice,
 | 
|---|
| 6024 |   OUT PDEVICE_OBJECT  *AttachedDevice);
 | 
|---|
| 6025 | 
 | 
|---|
| 6026 | NTOSAPI
 | 
|---|
| 6027 | PDEVICE_OBJECT
 | 
|---|
| 6028 | DDKAPI
 | 
|---|
| 6029 | IoAttachDeviceToDeviceStack(
 | 
|---|
| 6030 |   IN PDEVICE_OBJECT  SourceDevice,
 | 
|---|
| 6031 |   IN PDEVICE_OBJECT  TargetDevice);
 | 
|---|
| 6032 | 
 | 
|---|
| 6033 | NTOSAPI
 | 
|---|
| 6034 | PIRP
 | 
|---|
| 6035 | DDKAPI
 | 
|---|
| 6036 | IoBuildAsynchronousFsdRequest(
 | 
|---|
| 6037 |   IN ULONG  MajorFunction,
 | 
|---|
| 6038 |   IN PDEVICE_OBJECT  DeviceObject,
 | 
|---|
| 6039 |   IN OUT PVOID  Buffer  OPTIONAL,
 | 
|---|
| 6040 |   IN ULONG  Length  OPTIONAL,
 | 
|---|
| 6041 |   IN PLARGE_INTEGER  StartingOffset  OPTIONAL,
 | 
|---|
| 6042 |   IN PIO_STATUS_BLOCK  IoStatusBlock  OPTIONAL);
 | 
|---|
| 6043 | 
 | 
|---|
| 6044 | NTOSAPI
 | 
|---|
| 6045 | PIRP
 | 
|---|
| 6046 | DDKAPI
 | 
|---|
| 6047 | IoBuildDeviceIoControlRequest(
 | 
|---|
| 6048 |   IN ULONG  IoControlCode,
 | 
|---|
| 6049 |   IN PDEVICE_OBJECT  DeviceObject,
 | 
|---|
| 6050 |   IN PVOID  InputBuffer  OPTIONAL,
 | 
|---|
| 6051 |   IN ULONG  InputBufferLength,
 | 
|---|
| 6052 |   OUT PVOID  OutputBuffer  OPTIONAL,
 | 
|---|
| 6053 |   IN ULONG  OutputBufferLength,
 | 
|---|
| 6054 |   IN BOOLEAN  InternalDeviceIoControl,
 | 
|---|
| 6055 |   IN PKEVENT  Event,
 | 
|---|
| 6056 |   OUT PIO_STATUS_BLOCK  IoStatusBlock);
 | 
|---|
| 6057 | 
 | 
|---|
| 6058 | NTOSAPI
 | 
|---|
| 6059 | VOID
 | 
|---|
| 6060 | DDKAPI
 | 
|---|
| 6061 | IoBuildPartialMdl(
 | 
|---|
| 6062 |   IN PMDL  SourceMdl,
 | 
|---|
| 6063 |   IN OUT PMDL  TargetMdl,
 | 
|---|
| 6064 |   IN PVOID  VirtualAddress,
 | 
|---|
| 6065 |   IN ULONG  Length);
 | 
|---|
| 6066 | 
 | 
|---|
| 6067 | NTOSAPI
 | 
|---|
| 6068 | PIRP
 | 
|---|
| 6069 | DDKAPI
 | 
|---|
| 6070 | IoBuildSynchronousFsdRequest(
 | 
|---|
| 6071 |   IN ULONG  MajorFunction,
 | 
|---|
| 6072 |   IN PDEVICE_OBJECT  DeviceObject,
 | 
|---|
| 6073 |   IN OUT PVOID  Buffer  OPTIONAL,
 | 
|---|
| 6074 |   IN ULONG  Length  OPTIONAL,
 | 
|---|
| 6075 |   IN PLARGE_INTEGER  StartingOffset  OPTIONAL,
 | 
|---|
| 6076 |   IN PKEVENT  Event,
 | 
|---|
| 6077 |   OUT PIO_STATUS_BLOCK  IoStatusBlock);
 | 
|---|
| 6078 | 
 | 
|---|
| 6079 | NTOSAPI
 | 
|---|
| 6080 | NTSTATUS
 | 
|---|
| 6081 | DDKFASTAPI
 | 
|---|
| 6082 | IofCallDriver(
 | 
|---|
| 6083 |   IN PDEVICE_OBJECT  DeviceObject,
 | 
|---|
| 6084 |   IN OUT PIRP  Irp);
 | 
|---|
| 6085 | 
 | 
|---|
| 6086 | /*
 | 
|---|
| 6087 |  * NTSTATUS
 | 
|---|
| 6088 |  * IoCallDriver(
 | 
|---|
| 6089 |  *   IN PDEVICE_OBJECT  DeviceObject,
 | 
|---|
| 6090 |  *   IN OUT PIRP  Irp)
 | 
|---|
| 6091 |  */
 | 
|---|
| 6092 | #define IoCallDriver IofCallDriver
 | 
|---|
| 6093 | 
 | 
|---|
| 6094 | NTOSAPI
 | 
|---|
| 6095 | VOID
 | 
|---|
| 6096 | DDKAPI
 | 
|---|
| 6097 | IoCancelFileOpen(
 | 
|---|
| 6098 |   IN PDEVICE_OBJECT  DeviceObject,
 | 
|---|
| 6099 |   IN PFILE_OBJECT  FileObject);
 | 
|---|
| 6100 | 
 | 
|---|
| 6101 | NTOSAPI
 | 
|---|
| 6102 | BOOLEAN
 | 
|---|
| 6103 | DDKAPI
 | 
|---|
| 6104 | IoCancelIrp(
 | 
|---|
| 6105 |   IN PIRP  Irp);
 | 
|---|
| 6106 | 
 | 
|---|
| 6107 | NTOSAPI
 | 
|---|
| 6108 | NTSTATUS
 | 
|---|
| 6109 | DDKAPI
 | 
|---|
| 6110 | IoCheckShareAccess(
 | 
|---|
| 6111 |   IN ACCESS_MASK  DesiredAccess,
 | 
|---|
| 6112 |   IN ULONG  DesiredShareAccess,
 | 
|---|
| 6113 |   IN OUT PFILE_OBJECT  FileObject,
 | 
|---|
| 6114 |   IN OUT PSHARE_ACCESS  ShareAccess,
 | 
|---|
| 6115 |   IN BOOLEAN  Update);
 | 
|---|
| 6116 | 
 | 
|---|
| 6117 | NTOSAPI
 | 
|---|
| 6118 | VOID
 | 
|---|
| 6119 | DDKFASTAPI
 | 
|---|
| 6120 | IofCompleteRequest(
 | 
|---|
| 6121 |   IN PIRP  Irp,
 | 
|---|
| 6122 |   IN CCHAR  PriorityBoost);
 | 
|---|
| 6123 | 
 | 
|---|
| 6124 | /*
 | 
|---|
| 6125 |  * VOID
 | 
|---|
| 6126 |  * IoCompleteRequest(
 | 
|---|
| 6127 |  *  IN PIRP  Irp,
 | 
|---|
| 6128 |  *  IN CCHAR  PriorityBoost)
 | 
|---|
| 6129 |  */
 | 
|---|
| 6130 | #define IoCompleteRequest IofCompleteRequest
 | 
|---|
| 6131 | 
 | 
|---|
| 6132 | NTOSAPI
 | 
|---|
| 6133 | NTSTATUS
 | 
|---|
| 6134 | DDKAPI
 | 
|---|
| 6135 | IoConnectInterrupt(
 | 
|---|
| 6136 |   OUT PKINTERRUPT  *InterruptObject,
 | 
|---|
| 6137 |   IN PKSERVICE_ROUTINE  ServiceRoutine,
 | 
|---|
| 6138 |   IN PVOID  ServiceContext,
 | 
|---|
| 6139 |   IN PKSPIN_LOCK  SpinLock  OPTIONAL,
 | 
|---|
| 6140 |   IN ULONG  Vector,
 | 
|---|
| 6141 |   IN KIRQL  Irql,
 | 
|---|
| 6142 |   IN KIRQL  SynchronizeIrql,
 | 
|---|
| 6143 |   IN KINTERRUPT_MODE    InterruptMode,
 | 
|---|
| 6144 |   IN BOOLEAN  ShareVector,
 | 
|---|
| 6145 |   IN KAFFINITY  ProcessorEnableMask,
 | 
|---|
| 6146 |   IN BOOLEAN  FloatingSave);
 | 
|---|
| 6147 | 
 | 
|---|
| 6148 | /*
 | 
|---|
| 6149 |  * PIO_STACK_LOCATION
 | 
|---|
| 6150 |  * IoGetCurrentIrpStackLocation(
 | 
|---|
| 6151 |  *   IN PIRP  Irp)
 | 
|---|
| 6152 |  */
 | 
|---|
| 6153 | #define IoGetCurrentIrpStackLocation(_Irp) \
 | 
|---|
| 6154 |   ((_Irp)->Tail.Overlay.CurrentStackLocation)
 | 
|---|
| 6155 | 
 | 
|---|
| 6156 | /*
 | 
|---|
| 6157 |  * PIO_STACK_LOCATION
 | 
|---|
| 6158 |  * IoGetNextIrpStackLocation(
 | 
|---|
| 6159 |  *   IN PIRP  Irp)
 | 
|---|
| 6160 |  */
 | 
|---|
| 6161 | #define IoGetNextIrpStackLocation(_Irp) \
 | 
|---|
| 6162 |   ((_Irp)->Tail.Overlay.CurrentStackLocation - 1)
 | 
|---|
| 6163 | 
 | 
|---|
| 6164 | /*
 | 
|---|
| 6165 |  * VOID
 | 
|---|
| 6166 |  * IoCopyCurrentIrpStackLocationToNext(
 | 
|---|
| 6167 |  *   IN PIRP  Irp)
 | 
|---|
| 6168 |  */
 | 
|---|
| 6169 | #define IoCopyCurrentIrpStackLocationToNext(_Irp) \
 | 
|---|
| 6170 | { \
 | 
|---|
| 6171 |   PIO_STACK_LOCATION _IrpSp; \
 | 
|---|
| 6172 |   PIO_STACK_LOCATION _NextIrpSp; \
 | 
|---|
| 6173 |   _IrpSp = IoGetCurrentIrpStackLocation(_Irp); \
 | 
|---|
| 6174 |   _NextIrpSp = IoGetNextIrpStackLocation(_Irp); \
 | 
|---|
| 6175 |   RtlCopyMemory(_NextIrpSp, _IrpSp, \
 | 
|---|
| 6176 |     FIELD_OFFSET(IO_STACK_LOCATION, CompletionRoutine)); \
 | 
|---|
| 6177 |   _NextIrpSp->Control = 0; \
 | 
|---|
| 6178 | }
 | 
|---|
| 6179 | 
 | 
|---|
| 6180 | NTOSAPI
 | 
|---|
| 6181 | PCONTROLLER_OBJECT
 | 
|---|
| 6182 | DDKAPI
 | 
|---|
| 6183 | IoCreateController(
 | 
|---|
| 6184 |   IN ULONG  Size);
 | 
|---|
| 6185 | 
 | 
|---|
| 6186 | NTOSAPI
 | 
|---|
| 6187 | NTSTATUS
 | 
|---|
| 6188 | DDKAPI
 | 
|---|
| 6189 | IoCreateDevice(
 | 
|---|
| 6190 |   IN PDRIVER_OBJECT  DriverObject,
 | 
|---|
| 6191 |   IN ULONG  DeviceExtensionSize,
 | 
|---|
| 6192 |   IN PUNICODE_STRING  DeviceName  OPTIONAL,
 | 
|---|
| 6193 |   IN DEVICE_TYPE  DeviceType,
 | 
|---|
| 6194 |   IN ULONG  DeviceCharacteristics,
 | 
|---|
| 6195 |   IN BOOLEAN  Exclusive,
 | 
|---|
| 6196 |   OUT PDEVICE_OBJECT  *DeviceObject);
 | 
|---|
| 6197 | 
 | 
|---|
| 6198 | NTOSAPI
 | 
|---|
| 6199 | NTSTATUS
 | 
|---|
| 6200 | DDKAPI
 | 
|---|
| 6201 | IoCreateDisk(
 | 
|---|
| 6202 |   IN PDEVICE_OBJECT  DeviceObject,
 | 
|---|
| 6203 |   IN PCREATE_DISK  Disk);
 | 
|---|
| 6204 | 
 | 
|---|
| 6205 | NTOSAPI
 | 
|---|
| 6206 | NTSTATUS
 | 
|---|
| 6207 | DDKAPI
 | 
|---|
| 6208 | IoCreateFile(
 | 
|---|
| 6209 |   OUT PHANDLE FileHandle,
 | 
|---|
| 6210 |   IN ACCESS_MASK DesiredAccess,
 | 
|---|
| 6211 |   IN POBJECT_ATTRIBUTES ObjectAttributes,
 | 
|---|
| 6212 |   OUT PIO_STATUS_BLOCK IoStatusBlock,
 | 
|---|
| 6213 |   IN PLARGE_INTEGER AllocationSize OPTIONAL,
 | 
|---|
| 6214 |   IN ULONG FileAttributes,
 | 
|---|
| 6215 |   IN ULONG ShareAccess,
 | 
|---|
| 6216 |   IN ULONG Disposition,
 | 
|---|
| 6217 |   IN ULONG CreateOptions,
 | 
|---|
| 6218 |   IN PVOID EaBuffer OPTIONAL,
 | 
|---|
| 6219 |   IN ULONG EaLength,
 | 
|---|
| 6220 |   IN CREATE_FILE_TYPE CreateFileType,
 | 
|---|
| 6221 |   IN PVOID ExtraCreateParameters OPTIONAL,
 | 
|---|
| 6222 |   IN ULONG Options);
 | 
|---|
| 6223 | 
 | 
|---|
| 6224 | NTOSAPI
 | 
|---|
| 6225 | PKEVENT
 | 
|---|
| 6226 | DDKAPI
 | 
|---|
| 6227 | IoCreateNotificationEvent(
 | 
|---|
| 6228 |   IN PUNICODE_STRING  EventName,
 | 
|---|
| 6229 |   OUT PHANDLE  EventHandle);
 | 
|---|
| 6230 | 
 | 
|---|
| 6231 | NTOSAPI
 | 
|---|
| 6232 | NTSTATUS
 | 
|---|
| 6233 | DDKAPI
 | 
|---|
| 6234 | IoCreateSymbolicLink(
 | 
|---|
| 6235 |   IN PUNICODE_STRING  SymbolicLinkName,
 | 
|---|
| 6236 |   IN PUNICODE_STRING  DeviceName);
 | 
|---|
| 6237 | 
 | 
|---|
| 6238 | NTOSAPI
 | 
|---|
| 6239 | PKEVENT
 | 
|---|
| 6240 | DDKAPI
 | 
|---|
| 6241 | IoCreateSynchronizationEvent(
 | 
|---|
| 6242 |   IN PUNICODE_STRING  EventName,
 | 
|---|
| 6243 |   OUT PHANDLE  EventHandle);
 | 
|---|
| 6244 | 
 | 
|---|
| 6245 | NTOSAPI
 | 
|---|
| 6246 | NTSTATUS
 | 
|---|
| 6247 | DDKAPI
 | 
|---|
| 6248 | IoCreateUnprotectedSymbolicLink(
 | 
|---|
| 6249 |   IN PUNICODE_STRING  SymbolicLinkName,
 | 
|---|
| 6250 |   IN PUNICODE_STRING  DeviceName);
 | 
|---|
| 6251 | 
 | 
|---|
| 6252 | NTOSAPI
 | 
|---|
| 6253 | VOID
 | 
|---|
| 6254 | DDKAPI
 | 
|---|
| 6255 | IoCsqInitialize(
 | 
|---|
| 6256 |   PIO_CSQ  Csq,
 | 
|---|
| 6257 |   IN PIO_CSQ_INSERT_IRP  CsqInsertIrp,
 | 
|---|
| 6258 |   IN PIO_CSQ_REMOVE_IRP  CsqRemoveIrp,
 | 
|---|
| 6259 |   IN PIO_CSQ_PEEK_NEXT_IRP  CsqPeekNextIrp,
 | 
|---|
| 6260 |   IN PIO_CSQ_ACQUIRE_LOCK  CsqAcquireLock,
 | 
|---|
| 6261 |   IN PIO_CSQ_RELEASE_LOCK  CsqReleaseLock,
 | 
|---|
| 6262 |   IN PIO_CSQ_COMPLETE_CANCELED_IRP  CsqCompleteCanceledIrp);
 | 
|---|
| 6263 | 
 | 
|---|
| 6264 | NTOSAPI
 | 
|---|
| 6265 | VOID
 | 
|---|
| 6266 | DDKAPI
 | 
|---|
| 6267 | IoCsqInsertIrp(
 | 
|---|
| 6268 |   IN  PIO_CSQ  Csq,
 | 
|---|
| 6269 |   IN  PIRP  Irp,
 | 
|---|
| 6270 |   IN  PIO_CSQ_IRP_CONTEXT  Context);
 | 
|---|
| 6271 | 
 | 
|---|
| 6272 | NTOSAPI
 | 
|---|
| 6273 | PIRP
 | 
|---|
| 6274 | DDKAPI
 | 
|---|
| 6275 | IoCsqRemoveIrp(
 | 
|---|
| 6276 |   IN  PIO_CSQ  Csq,
 | 
|---|
| 6277 |   IN  PIO_CSQ_IRP_CONTEXT  Context);
 | 
|---|
| 6278 | 
 | 
|---|
| 6279 | NTOSAPI
 | 
|---|
| 6280 | PIRP
 | 
|---|
| 6281 | DDKAPI
 | 
|---|
| 6282 | IoCsqRemoveNextIrp(
 | 
|---|
| 6283 |   IN PIO_CSQ  Csq,
 | 
|---|
| 6284 |   IN PVOID  PeekContext);
 | 
|---|
| 6285 | 
 | 
|---|
| 6286 | NTOSAPI
 | 
|---|
| 6287 | VOID
 | 
|---|
| 6288 | DDKAPI
 | 
|---|
| 6289 | IoDeleteController(
 | 
|---|
| 6290 |   IN PCONTROLLER_OBJECT  ControllerObject);
 | 
|---|
| 6291 | 
 | 
|---|
| 6292 | NTOSAPI
 | 
|---|
| 6293 | VOID
 | 
|---|
| 6294 | DDKAPI
 | 
|---|
| 6295 | IoDeleteDevice(
 | 
|---|
| 6296 |   IN PDEVICE_OBJECT  DeviceObject);
 | 
|---|
| 6297 | 
 | 
|---|
| 6298 | NTOSAPI
 | 
|---|
| 6299 | NTSTATUS
 | 
|---|
| 6300 | DDKAPI
 | 
|---|
| 6301 | IoDeleteSymbolicLink(
 | 
|---|
| 6302 |   IN PUNICODE_STRING  SymbolicLinkName);
 | 
|---|
| 6303 | 
 | 
|---|
| 6304 | /*
 | 
|---|
| 6305 |  * VOID
 | 
|---|
| 6306 |  * IoDeassignArcName(
 | 
|---|
| 6307 |  *   IN PUNICODE_STRING  ArcName)
 | 
|---|
| 6308 |  */
 | 
|---|
| 6309 | #define IoDeassignArcName IoDeleteSymbolicLink
 | 
|---|
| 6310 | 
 | 
|---|
| 6311 | NTOSAPI
 | 
|---|
| 6312 | VOID
 | 
|---|
| 6313 | DDKAPI
 | 
|---|
| 6314 | IoDetachDevice(
 | 
|---|
| 6315 |   IN OUT PDEVICE_OBJECT  TargetDevice);
 | 
|---|
| 6316 | 
 | 
|---|
| 6317 | NTOSAPI
 | 
|---|
| 6318 | VOID
 | 
|---|
| 6319 | DDKAPI
 | 
|---|
| 6320 | IoDisconnectInterrupt(
 | 
|---|
| 6321 |   IN PKINTERRUPT  InterruptObject);
 | 
|---|
| 6322 | 
 | 
|---|
| 6323 | NTOSAPI
 | 
|---|
| 6324 | BOOLEAN
 | 
|---|
| 6325 | DDKAPI
 | 
|---|
| 6326 | IoForwardIrpSynchronously(
 | 
|---|
| 6327 |   IN PDEVICE_OBJECT  DeviceObject,
 | 
|---|
| 6328 |   IN PIRP  Irp);
 | 
|---|
| 6329 | 
 | 
|---|
| 6330 | #define IoForwardAndCatchIrp IoForwardIrpSynchronously
 | 
|---|
| 6331 | 
 | 
|---|
| 6332 | NTOSAPI
 | 
|---|
| 6333 | VOID
 | 
|---|
| 6334 | DDKAPI
 | 
|---|
| 6335 | IoFreeController(
 | 
|---|
| 6336 |   IN PCONTROLLER_OBJECT  ControllerObject);
 | 
|---|
| 6337 | 
 | 
|---|
| 6338 | NTOSAPI
 | 
|---|
| 6339 | VOID
 | 
|---|
| 6340 | DDKAPI
 | 
|---|
| 6341 | IoFreeErrorLogEntry(
 | 
|---|
| 6342 |   PVOID  ElEntry);
 | 
|---|
| 6343 | 
 | 
|---|
| 6344 | NTOSAPI
 | 
|---|
| 6345 | VOID
 | 
|---|
| 6346 | DDKAPI
 | 
|---|
| 6347 | IoFreeIrp(
 | 
|---|
| 6348 |   IN PIRP  Irp);
 | 
|---|
| 6349 | 
 | 
|---|
| 6350 | NTOSAPI
 | 
|---|
| 6351 | VOID
 | 
|---|
| 6352 | DDKAPI
 | 
|---|
| 6353 | IoFreeMdl(
 | 
|---|
| 6354 |   IN PMDL  Mdl);
 | 
|---|
| 6355 | 
 | 
|---|
| 6356 | NTOSAPI
 | 
|---|
| 6357 | VOID
 | 
|---|
| 6358 | DDKAPI
 | 
|---|
| 6359 | IoFreeWorkItem(
 | 
|---|
| 6360 |   IN PIO_WORKITEM  pIOWorkItem);
 | 
|---|
| 6361 | 
 | 
|---|
| 6362 | NTOSAPI
 | 
|---|
| 6363 | PDEVICE_OBJECT
 | 
|---|
| 6364 | DDKAPI
 | 
|---|
| 6365 | IoGetAttachedDevice(
 | 
|---|
| 6366 |   IN PDEVICE_OBJECT  DeviceObject);
 | 
|---|
| 6367 | 
 | 
|---|
| 6368 | NTOSAPI
 | 
|---|
| 6369 | PDEVICE_OBJECT
 | 
|---|
| 6370 | DDKAPI
 | 
|---|
| 6371 | IoGetAttachedDeviceReference(
 | 
|---|
| 6372 |   IN PDEVICE_OBJECT  DeviceObject);
 | 
|---|
| 6373 | 
 | 
|---|
| 6374 | NTOSAPI
 | 
|---|
| 6375 | NTSTATUS
 | 
|---|
| 6376 | DDKAPI
 | 
|---|
| 6377 | IoGetBootDiskInformation(
 | 
|---|
| 6378 |   IN OUT PBOOTDISK_INFORMATION  BootDiskInformation,
 | 
|---|
| 6379 |   IN ULONG  Size);
 | 
|---|
| 6380 | 
 | 
|---|
| 6381 | NTOSAPI
 | 
|---|
| 6382 | PCONFIGURATION_INFORMATION
 | 
|---|
| 6383 | DDKAPI
 | 
|---|
| 6384 | IoGetConfigurationInformation( 
 | 
|---|
| 6385 |   VOID);
 | 
|---|
| 6386 | 
 | 
|---|
| 6387 | NTOSAPI
 | 
|---|
| 6388 | PEPROCESS
 | 
|---|
| 6389 | DDKAPI
 | 
|---|
| 6390 | IoGetCurrentProcess(
 | 
|---|
| 6391 |   VOID);
 | 
|---|
| 6392 | 
 | 
|---|
| 6393 | NTOSAPI
 | 
|---|
| 6394 | NTSTATUS
 | 
|---|
| 6395 | DDKAPI
 | 
|---|
| 6396 | IoGetDeviceInterfaceAlias(
 | 
|---|
| 6397 |   IN PUNICODE_STRING  SymbolicLinkName,
 | 
|---|
| 6398 |   IN CONST GUID  *AliasInterfaceClassGuid,
 | 
|---|
| 6399 |   OUT PUNICODE_STRING  AliasSymbolicLinkName);
 | 
|---|
| 6400 | 
 | 
|---|
| 6401 | NTOSAPI
 | 
|---|
| 6402 | NTSTATUS
 | 
|---|
| 6403 | DDKAPI
 | 
|---|
| 6404 | IoGetDeviceInterfaces(
 | 
|---|
| 6405 |   IN CONST GUID  *InterfaceClassGuid,
 | 
|---|
| 6406 |   IN PDEVICE_OBJECT  PhysicalDeviceObject  OPTIONAL,
 | 
|---|
| 6407 |   IN ULONG  Flags,
 | 
|---|
| 6408 |   OUT PWSTR  *SymbolicLinkList);
 | 
|---|
| 6409 | 
 | 
|---|
| 6410 | NTOSAPI
 | 
|---|
| 6411 | NTSTATUS
 | 
|---|
| 6412 | DDKAPI
 | 
|---|
| 6413 | IoGetDeviceObjectPointer(
 | 
|---|
| 6414 |   IN PUNICODE_STRING  ObjectName,
 | 
|---|
| 6415 |   IN ACCESS_MASK  DesiredAccess,
 | 
|---|
| 6416 |   OUT PFILE_OBJECT  *FileObject,
 | 
|---|
| 6417 |   OUT PDEVICE_OBJECT  *DeviceObject);
 | 
|---|
| 6418 | 
 | 
|---|
| 6419 | NTOSAPI
 | 
|---|
| 6420 | NTSTATUS
 | 
|---|
| 6421 | DDKAPI
 | 
|---|
| 6422 | IoGetDeviceProperty(
 | 
|---|
| 6423 |   IN PDEVICE_OBJECT  DeviceObject,
 | 
|---|
| 6424 |   IN DEVICE_REGISTRY_PROPERTY  DeviceProperty,
 | 
|---|
| 6425 |   IN ULONG  BufferLength,
 | 
|---|
| 6426 |   OUT PVOID  PropertyBuffer,
 | 
|---|
| 6427 |   OUT PULONG  ResultLength);
 | 
|---|
| 6428 | 
 | 
|---|
| 6429 | NTOSAPI
 | 
|---|
| 6430 | PDEVICE_OBJECT
 | 
|---|
| 6431 | DDKAPI
 | 
|---|
| 6432 | IoGetDeviceToVerify(
 | 
|---|
| 6433 |   IN PETHREAD  Thread);
 | 
|---|
| 6434 | 
 | 
|---|
| 6435 | NTOSAPI
 | 
|---|
| 6436 | PDMA_ADAPTER
 | 
|---|
| 6437 | DDKAPI
 | 
|---|
| 6438 | IoGetDmaAdapter(
 | 
|---|
| 6439 |   IN PDEVICE_OBJECT  PhysicalDeviceObject,
 | 
|---|
| 6440 |   IN PDEVICE_DESCRIPTION  DeviceDescription,
 | 
|---|
| 6441 |   IN OUT PULONG  NumberOfMapRegisters);
 | 
|---|
| 6442 | 
 | 
|---|
| 6443 | NTOSAPI
 | 
|---|
| 6444 | PVOID
 | 
|---|
| 6445 | DDKAPI
 | 
|---|
| 6446 | IoGetDriverObjectExtension(
 | 
|---|
| 6447 |   IN PDRIVER_OBJECT  DriverObject,
 | 
|---|
| 6448 |   IN PVOID  ClientIdentificationAddress);
 | 
|---|
| 6449 | 
 | 
|---|
| 6450 | NTOSAPI
 | 
|---|
| 6451 | PGENERIC_MAPPING
 | 
|---|
| 6452 | DDKAPI
 | 
|---|
| 6453 | IoGetFileObjectGenericMapping(
 | 
|---|
| 6454 |   VOID);
 | 
|---|
| 6455 | 
 | 
|---|
| 6456 | /*
 | 
|---|
| 6457 |  * ULONG
 | 
|---|
| 6458 |  * IoGetFunctionCodeFromCtlCode(
 | 
|---|
| 6459 |  *   IN ULONG  ControlCode)
 | 
|---|
| 6460 |  */
 | 
|---|
| 6461 | #define IoGetFunctionCodeFromCtlCode(_ControlCode) \
 | 
|---|
| 6462 |   (((_ControlCode) >> 2) & 0x00000FFF)
 | 
|---|
| 6463 | 
 | 
|---|
| 6464 | NTOSAPI
 | 
|---|
| 6465 | PVOID
 | 
|---|
| 6466 | DDKAPI
 | 
|---|
| 6467 | IoGetInitialStack(
 | 
|---|
| 6468 |   VOID);
 | 
|---|
| 6469 | 
 | 
|---|
| 6470 | NTOSAPI
 | 
|---|
| 6471 | PDEVICE_OBJECT
 | 
|---|
| 6472 | DDKAPI
 | 
|---|
| 6473 | IoGetRelatedDeviceObject(
 | 
|---|
| 6474 |   IN PFILE_OBJECT  FileObject);
 | 
|---|
| 6475 | 
 | 
|---|
| 6476 | NTOSAPI
 | 
|---|
| 6477 | ULONG
 | 
|---|
| 6478 | DDKAPI
 | 
|---|
| 6479 | IoGetRemainingStackSize(
 | 
|---|
| 6480 |   VOID);
 | 
|---|
| 6481 | 
 | 
|---|
| 6482 | NTOSAPI
 | 
|---|
| 6483 | VOID
 | 
|---|
| 6484 | DDKAPI
 | 
|---|
| 6485 | IoGetStackLimits(
 | 
|---|
| 6486 |   OUT PULONG_PTR  LowLimit,
 | 
|---|
| 6487 |   OUT PULONG_PTR  HighLimit);
 | 
|---|
| 6488 | 
 | 
|---|
| 6489 | NTOSAPI
 | 
|---|
| 6490 | VOID
 | 
|---|
| 6491 | DDKAPI
 | 
|---|
| 6492 | KeInitializeDpc(
 | 
|---|
| 6493 |   IN PRKDPC  Dpc,
 | 
|---|
| 6494 |   IN PKDEFERRED_ROUTINE  DeferredRoutine,
 | 
|---|
| 6495 |   IN PVOID  DeferredContext);
 | 
|---|
| 6496 | 
 | 
|---|
| 6497 | /*
 | 
|---|
| 6498 |  * VOID
 | 
|---|
| 6499 |  * IoInitializeDpcRequest(
 | 
|---|
| 6500 |  *   IN PDEVICE_OBJECT DeviceObject,
 | 
|---|
| 6501 |  *   IN PIO_DPC_ROUTINE DpcRoutine)
 | 
|---|
| 6502 |  */
 | 
|---|
| 6503 | #define IoInitializeDpcRequest(_DeviceObject, \
 | 
|---|
| 6504 |                                _DpcRoutine) \
 | 
|---|
| 6505 |   KeInitializeDpc(&(_DeviceObject)->Dpc, \
 | 
|---|
| 6506 |     (PKDEFERRED_ROUTINE) (_DpcRoutine), \
 | 
|---|
| 6507 |     _DeviceObject)
 | 
|---|
| 6508 | 
 | 
|---|
| 6509 | NTOSAPI
 | 
|---|
| 6510 | VOID
 | 
|---|
| 6511 | DDKAPI
 | 
|---|
| 6512 | IoInitializeIrp(
 | 
|---|
| 6513 |   IN OUT PIRP  Irp,
 | 
|---|
| 6514 |   IN USHORT  PacketSize,
 | 
|---|
| 6515 |   IN CCHAR  StackSize);
 | 
|---|
| 6516 | 
 | 
|---|
| 6517 | NTOSAPI
 | 
|---|
| 6518 | VOID
 | 
|---|
| 6519 | DDKAPI
 | 
|---|
| 6520 | IoInitializeRemoveLockEx(
 | 
|---|
| 6521 |   IN  PIO_REMOVE_LOCK Lock,
 | 
|---|
| 6522 |   IN  ULONG   AllocateTag,
 | 
|---|
| 6523 |   IN  ULONG   MaxLockedMinutes,
 | 
|---|
| 6524 |   IN  ULONG   HighWatermark,
 | 
|---|
| 6525 |   IN  ULONG   RemlockSize);
 | 
|---|
| 6526 | 
 | 
|---|
| 6527 | /* VOID
 | 
|---|
| 6528 |  * IoInitializeRemoveLock(
 | 
|---|
| 6529 |  *   IN PIO_REMOVE_LOCK  Lock,
 | 
|---|
| 6530 |  *   IN ULONG  AllocateTag,
 | 
|---|
| 6531 |  *   IN ULONG  MaxLockedMinutes,
 | 
|---|
| 6532 |  *   IN ULONG  HighWatermark)
 | 
|---|
| 6533 |  */
 | 
|---|
| 6534 | #define IoInitializeRemoveLock( \
 | 
|---|
| 6535 |   Lock, AllocateTag, MaxLockedMinutes, HighWatermark) \
 | 
|---|
| 6536 |   IoInitializeRemoveLockEx(Lock, AllocateTag, MaxLockedMinutes, \
 | 
|---|
| 6537 |     HighWatermark, sizeof(IO_REMOVE_LOCK))
 | 
|---|
| 6538 | 
 | 
|---|
| 6539 | NTOSAPI
 | 
|---|
| 6540 | NTSTATUS
 | 
|---|
| 6541 | DDKAPI
 | 
|---|
| 6542 | IoInitializeTimer(
 | 
|---|
| 6543 |   IN PDEVICE_OBJECT  DeviceObject,
 | 
|---|
| 6544 |   IN PIO_TIMER_ROUTINE  TimerRoutine,
 | 
|---|
| 6545 |   IN PVOID  Context);
 | 
|---|
| 6546 | 
 | 
|---|
| 6547 | NTOSAPI
 | 
|---|
| 6548 | VOID
 | 
|---|
| 6549 | DDKAPI
 | 
|---|
| 6550 | IoInvalidateDeviceRelations(
 | 
|---|
| 6551 |   IN PDEVICE_OBJECT  DeviceObject,
 | 
|---|
| 6552 |   IN DEVICE_RELATION_TYPE  Type);
 | 
|---|
| 6553 | 
 | 
|---|
| 6554 | NTOSAPI
 | 
|---|
| 6555 | VOID
 | 
|---|
| 6556 | DDKAPI
 | 
|---|
| 6557 | IoInvalidateDeviceState(
 | 
|---|
| 6558 |   IN PDEVICE_OBJECT  PhysicalDeviceObject);
 | 
|---|
| 6559 | 
 | 
|---|
| 6560 | NTOSAPI
 | 
|---|
| 6561 | BOOLEAN
 | 
|---|
| 6562 | DDKAPI
 | 
|---|
| 6563 | IoIs32bitProcess(
 | 
|---|
| 6564 |   IN PIRP  Irp  OPTIONAL);
 | 
|---|
| 6565 | 
 | 
|---|
| 6566 | /*
 | 
|---|
| 6567 |  * BOOLEAN
 | 
|---|
| 6568 |  * IoIsErrorUserInduced(
 | 
|---|
| 6569 |  *   IN NTSTATUS  Status);
 | 
|---|
| 6570 |  */
 | 
|---|
| 6571 | #define IoIsErrorUserInduced(Status) \
 | 
|---|
| 6572 |         ((BOOLEAN)(((Status) == STATUS_DEVICE_NOT_READY) || \
 | 
|---|
| 6573 |    ((Status) == STATUS_IO_TIMEOUT) || \
 | 
|---|
| 6574 |    ((Status) == STATUS_MEDIA_WRITE_PROTECTED) || \
 | 
|---|
| 6575 |    ((Status) == STATUS_NO_MEDIA_IN_DEVICE) || \
 | 
|---|
| 6576 |    ((Status) == STATUS_VERIFY_REQUIRED) || \
 | 
|---|
| 6577 |    ((Status) == STATUS_UNRECOGNIZED_MEDIA) || \
 | 
|---|
| 6578 |    ((Status) == STATUS_WRONG_VOLUME)))
 | 
|---|
| 6579 | 
 | 
|---|
| 6580 | NTOSAPI
 | 
|---|
| 6581 | BOOLEAN
 | 
|---|
| 6582 | DDKAPI
 | 
|---|
| 6583 | IoIsWdmVersionAvailable(
 | 
|---|
| 6584 |   IN UCHAR  MajorVersion,
 | 
|---|
| 6585 |   IN UCHAR  MinorVersion);
 | 
|---|
| 6586 | 
 | 
|---|
| 6587 | NTOSAPI
 | 
|---|
| 6588 | PIRP
 | 
|---|
| 6589 | DDKAPI
 | 
|---|
| 6590 | IoMakeAssociatedIrp(
 | 
|---|
| 6591 |   IN PIRP  Irp,
 | 
|---|
| 6592 |   IN CCHAR  StackSize);
 | 
|---|
| 6593 | 
 | 
|---|
| 6594 | /*
 | 
|---|
| 6595 |  * VOID
 | 
|---|
| 6596 |  * IoMarkIrpPending(
 | 
|---|
| 6597 |  *   IN OUT PIRP  Irp)
 | 
|---|
| 6598 |  */
 | 
|---|
| 6599 | #define IoMarkIrpPending(_Irp) \
 | 
|---|
| 6600 |   (IoGetCurrentIrpStackLocation(_Irp)->Control |= SL_PENDING_RETURNED)
 | 
|---|
| 6601 | 
 | 
|---|
| 6602 | NTOSAPI
 | 
|---|
| 6603 | NTSTATUS
 | 
|---|
| 6604 | DDKAPI
 | 
|---|
| 6605 | IoOpenDeviceInterfaceRegistryKey(
 | 
|---|
| 6606 |   IN PUNICODE_STRING  SymbolicLinkName,
 | 
|---|
| 6607 |   IN ACCESS_MASK  DesiredAccess,
 | 
|---|
| 6608 |   OUT PHANDLE  DeviceInterfaceKey);
 | 
|---|
| 6609 | 
 | 
|---|
| 6610 | NTOSAPI
 | 
|---|
| 6611 | NTSTATUS
 | 
|---|
| 6612 | DDKAPI
 | 
|---|
| 6613 | IoOpenDeviceRegistryKey(
 | 
|---|
| 6614 |   IN PDEVICE_OBJECT  DeviceObject,
 | 
|---|
| 6615 |   IN ULONG  DevInstKeyType,
 | 
|---|
| 6616 |   IN ACCESS_MASK  DesiredAccess,
 | 
|---|
| 6617 |   OUT PHANDLE  DevInstRegKey);
 | 
|---|
| 6618 | 
 | 
|---|
| 6619 | NTOSAPI
 | 
|---|
| 6620 | NTSTATUS
 | 
|---|
| 6621 | DDKAPI
 | 
|---|
| 6622 | IoQueryDeviceDescription(
 | 
|---|
| 6623 |   IN PINTERFACE_TYPE  BusType  OPTIONAL,
 | 
|---|
| 6624 |   IN PULONG  BusNumber  OPTIONAL,
 | 
|---|
| 6625 |   IN PCONFIGURATION_TYPE  ControllerType  OPTIONAL,
 | 
|---|
| 6626 |   IN PULONG  ControllerNumber  OPTIONAL,
 | 
|---|
| 6627 |   IN PCONFIGURATION_TYPE  PeripheralType  OPTIONAL,
 | 
|---|
| 6628 |   IN PULONG  PeripheralNumber  OPTIONAL,
 | 
|---|
| 6629 |   IN PIO_QUERY_DEVICE_ROUTINE  CalloutRoutine,
 | 
|---|
| 6630 |   IN PVOID  Context);
 | 
|---|
| 6631 | 
 | 
|---|
| 6632 | NTOSAPI
 | 
|---|
| 6633 | VOID
 | 
|---|
| 6634 | DDKAPI
 | 
|---|
| 6635 | IoQueueWorkItem(
 | 
|---|
| 6636 |   IN PIO_WORKITEM  pIOWorkItem,
 | 
|---|
| 6637 |   IN PIO_WORKITEM_ROUTINE  Routine,
 | 
|---|
| 6638 |   IN WORK_QUEUE_TYPE  QueueType,
 | 
|---|
| 6639 |   IN PVOID  Context);
 | 
|---|
| 6640 | 
 | 
|---|
| 6641 | NTOSAPI
 | 
|---|
| 6642 | VOID
 | 
|---|
| 6643 | DDKAPI
 | 
|---|
| 6644 | IoRaiseHardError(
 | 
|---|
| 6645 |   IN PIRP  Irp,
 | 
|---|
| 6646 |   IN PVPB  Vpb  OPTIONAL,
 | 
|---|
| 6647 |   IN PDEVICE_OBJECT  RealDeviceObject);
 | 
|---|
| 6648 | 
 | 
|---|
| 6649 | NTOSAPI
 | 
|---|
| 6650 | BOOLEAN
 | 
|---|
| 6651 | DDKAPI
 | 
|---|
| 6652 | IoRaiseInformationalHardError(
 | 
|---|
| 6653 |   IN NTSTATUS  ErrorStatus,
 | 
|---|
| 6654 |   IN PUNICODE_STRING  String  OPTIONAL,
 | 
|---|
| 6655 |   IN PKTHREAD  Thread  OPTIONAL);
 | 
|---|
| 6656 | 
 | 
|---|
| 6657 | NTOSAPI
 | 
|---|
| 6658 | NTSTATUS
 | 
|---|
| 6659 | DDKAPI
 | 
|---|
| 6660 | IoReadDiskSignature(
 | 
|---|
| 6661 |   IN PDEVICE_OBJECT  DeviceObject,
 | 
|---|
| 6662 |   IN ULONG  BytesPerSector,
 | 
|---|
| 6663 |   OUT PDISK_SIGNATURE  Signature);
 | 
|---|
| 6664 | 
 | 
|---|
| 6665 | NTOSAPI
 | 
|---|
| 6666 | NTSTATUS
 | 
|---|
| 6667 | DDKAPI
 | 
|---|
| 6668 | IoReadPartitionTableEx(
 | 
|---|
| 6669 |   IN PDEVICE_OBJECT  DeviceObject,
 | 
|---|
| 6670 |   IN struct _DRIVE_LAYOUT_INFORMATION_EX  **PartitionBuffer);
 | 
|---|
| 6671 | 
 | 
|---|
| 6672 | NTOSAPI
 | 
|---|
| 6673 | VOID
 | 
|---|
| 6674 | DDKAPI
 | 
|---|
| 6675 | IoRegisterBootDriverReinitialization(
 | 
|---|
| 6676 |   IN PDRIVER_OBJECT  DriverObject,
 | 
|---|
| 6677 |   IN PDRIVER_REINITIALIZE  DriverReinitializationRoutine,
 | 
|---|
| 6678 |   IN PVOID  Context);
 | 
|---|
| 6679 | 
 | 
|---|
| 6680 | NTOSAPI
 | 
|---|
| 6681 | VOID
 | 
|---|
| 6682 | DDKAPI
 | 
|---|
| 6683 | IoRegisterBootDriverReinitialization(
 | 
|---|
| 6684 |   IN PDRIVER_OBJECT  DriverObject,
 | 
|---|
| 6685 |   IN PDRIVER_REINITIALIZE  DriverReinitializationRoutine,
 | 
|---|
| 6686 |   IN PVOID  Context);
 | 
|---|
| 6687 | 
 | 
|---|
| 6688 | NTOSAPI
 | 
|---|
| 6689 | NTSTATUS
 | 
|---|
| 6690 | DDKAPI
 | 
|---|
| 6691 | IoRegisterDeviceInterface(
 | 
|---|
| 6692 |   IN PDEVICE_OBJECT  PhysicalDeviceObject,
 | 
|---|
| 6693 |   IN CONST GUID  *InterfaceClassGuid,
 | 
|---|
| 6694 |   IN PUNICODE_STRING  ReferenceString  OPTIONAL,
 | 
|---|
| 6695 |   OUT PUNICODE_STRING  SymbolicLinkName);
 | 
|---|
| 6696 | 
 | 
|---|
| 6697 | NTOSAPI
 | 
|---|
| 6698 | VOID
 | 
|---|
| 6699 | DDKAPI
 | 
|---|
| 6700 | IoRegisterDriverReinitialization(
 | 
|---|
| 6701 |   IN PDRIVER_OBJECT  DriverObject,
 | 
|---|
| 6702 |   IN PDRIVER_REINITIALIZE  DriverReinitializationRoutine,
 | 
|---|
| 6703 |   IN PVOID  Context);
 | 
|---|
| 6704 | 
 | 
|---|
| 6705 | NTOSAPI
 | 
|---|
| 6706 | NTSTATUS
 | 
|---|
| 6707 | DDKAPI
 | 
|---|
| 6708 | IoRegisterPlugPlayNotification(
 | 
|---|
| 6709 |   IN IO_NOTIFICATION_EVENT_CATEGORY  EventCategory,
 | 
|---|
| 6710 |   IN ULONG  EventCategoryFlags,
 | 
|---|
| 6711 |   IN PVOID  EventCategoryData  OPTIONAL,
 | 
|---|
| 6712 |   IN PDRIVER_OBJECT  DriverObject,
 | 
|---|
| 6713 |   IN PDRIVER_NOTIFICATION_CALLBACK_ROUTINE  CallbackRoutine,
 | 
|---|
| 6714 |   IN PVOID  Context,
 | 
|---|
| 6715 |   OUT PVOID  *NotificationEntry);
 | 
|---|
| 6716 | 
 | 
|---|
| 6717 | NTOSAPI
 | 
|---|
| 6718 | NTSTATUS
 | 
|---|
| 6719 | DDKAPI
 | 
|---|
| 6720 | IoRegisterShutdownNotification(
 | 
|---|
| 6721 |   IN PDEVICE_OBJECT  DeviceObject);
 | 
|---|
| 6722 | 
 | 
|---|
| 6723 | NTOSAPI
 | 
|---|
| 6724 | VOID
 | 
|---|
| 6725 | DDKAPI
 | 
|---|
| 6726 | IoReleaseCancelSpinLock(
 | 
|---|
| 6727 |   IN KIRQL  Irql);
 | 
|---|
| 6728 | 
 | 
|---|
| 6729 | NTOSAPI
 | 
|---|
| 6730 | VOID
 | 
|---|
| 6731 | DDKAPI
 | 
|---|
| 6732 | IoReleaseRemoveLockAndWaitEx(
 | 
|---|
| 6733 |   IN PIO_REMOVE_LOCK  RemoveLock,
 | 
|---|
| 6734 |   IN PVOID  Tag,
 | 
|---|
| 6735 |   IN ULONG  RemlockSize);
 | 
|---|
| 6736 | 
 | 
|---|
| 6737 | /*
 | 
|---|
| 6738 |  * VOID
 | 
|---|
| 6739 |  * IoReleaseRemoveLockAndWait(
 | 
|---|
| 6740 |  *   IN PIO_REMOVE_LOCK  RemoveLock,
 | 
|---|
| 6741 |  *   IN PVOID  Tag)
 | 
|---|
| 6742 |  */
 | 
|---|
| 6743 | #define IoReleaseRemoveLockAndWait(_RemoveLock, \
 | 
|---|
| 6744 |                                    _Tag) \
 | 
|---|
| 6745 |   IoReleaseRemoveLockAndWaitEx(_RemoveLock, _Tag, sizeof(IO_REMOVE_LOCK))
 | 
|---|
| 6746 | 
 | 
|---|
| 6747 | NTOSAPI
 | 
|---|
| 6748 | VOID
 | 
|---|
| 6749 | DDKAPI
 | 
|---|
| 6750 | IoReleaseRemoveLockEx(
 | 
|---|
| 6751 |   IN PIO_REMOVE_LOCK  RemoveLock,
 | 
|---|
| 6752 |   IN PVOID  Tag,
 | 
|---|
| 6753 |   IN ULONG  RemlockSize);
 | 
|---|
| 6754 | 
 | 
|---|
| 6755 | /*
 | 
|---|
| 6756 |  * VOID
 | 
|---|
| 6757 |  * IoReleaseRemoveLock(
 | 
|---|
| 6758 |  *   IN PIO_REMOVE_LOCK  RemoveLock,
 | 
|---|
| 6759 |  *   IN PVOID  Tag)
 | 
|---|
| 6760 |  */
 | 
|---|
| 6761 | #define IoReleaseRemoveLock(_RemoveLock, \
 | 
|---|
| 6762 |                                    _Tag) \
 | 
|---|
| 6763 |   IoReleaseRemoveLockEx(_RemoveLock, _Tag, sizeof(IO_REMOVE_LOCK))
 | 
|---|
| 6764 | 
 | 
|---|
| 6765 | NTOSAPI
 | 
|---|
| 6766 | VOID
 | 
|---|
| 6767 | DDKAPI
 | 
|---|
| 6768 | IoRemoveShareAccess(
 | 
|---|
| 6769 |   IN PFILE_OBJECT  FileObject,
 | 
|---|
| 6770 |   IN OUT PSHARE_ACCESS  ShareAccess);
 | 
|---|
| 6771 | 
 | 
|---|
| 6772 | NTOSAPI
 | 
|---|
| 6773 | NTSTATUS
 | 
|---|
| 6774 | DDKAPI
 | 
|---|
| 6775 | IoReportDetectedDevice(
 | 
|---|
| 6776 |   IN PDRIVER_OBJECT  DriverObject,
 | 
|---|
| 6777 |   IN INTERFACE_TYPE  LegacyBusType,
 | 
|---|
| 6778 |   IN ULONG  BusNumber,
 | 
|---|
| 6779 |   IN ULONG  SlotNumber,
 | 
|---|
| 6780 |   IN PCM_RESOURCE_LIST  ResourceList,
 | 
|---|
| 6781 |   IN PIO_RESOURCE_REQUIREMENTS_LIST  ResourceRequirements  OPTIONAL,
 | 
|---|
| 6782 |   IN BOOLEAN  ResourceAssigned,
 | 
|---|
| 6783 |   IN OUT PDEVICE_OBJECT  *DeviceObject);
 | 
|---|
| 6784 | 
 | 
|---|
| 6785 | NTOSAPI
 | 
|---|
| 6786 | NTSTATUS
 | 
|---|
| 6787 | DDKAPI
 | 
|---|
| 6788 | IoReportResourceForDetection(
 | 
|---|
| 6789 |   IN PDRIVER_OBJECT  DriverObject,
 | 
|---|
| 6790 |   IN PCM_RESOURCE_LIST  DriverList  OPTIONAL,
 | 
|---|
| 6791 |   IN ULONG  DriverListSize  OPTIONAL,
 | 
|---|
| 6792 |   IN PDEVICE_OBJECT  DeviceObject  OPTIONAL,
 | 
|---|
| 6793 |   IN PCM_RESOURCE_LIST  DeviceList  OPTIONAL,
 | 
|---|
| 6794 |   IN ULONG  DeviceListSize  OPTIONAL,
 | 
|---|
| 6795 |   OUT PBOOLEAN  ConflictDetected);
 | 
|---|
| 6796 | 
 | 
|---|
| 6797 | NTOSAPI
 | 
|---|
| 6798 | NTSTATUS
 | 
|---|
| 6799 | DDKAPI
 | 
|---|
| 6800 | IoReportResourceUsage(
 | 
|---|
| 6801 |   IN PUNICODE_STRING  DriverClassName  OPTIONAL,
 | 
|---|
| 6802 |   IN PDRIVER_OBJECT  DriverObject,
 | 
|---|
| 6803 |   IN PCM_RESOURCE_LIST  DriverList  OPTIONAL,
 | 
|---|
| 6804 |   IN ULONG  DriverListSize  OPTIONAL,
 | 
|---|
| 6805 |   IN PDEVICE_OBJECT  DeviceObject,
 | 
|---|
| 6806 |   IN PCM_RESOURCE_LIST  DeviceList  OPTIONAL,
 | 
|---|
| 6807 |   IN ULONG  DeviceListSize  OPTIONAL,
 | 
|---|
| 6808 |   IN BOOLEAN  OverrideConflict,
 | 
|---|
| 6809 |   OUT PBOOLEAN  ConflictDetected);
 | 
|---|
| 6810 | 
 | 
|---|
| 6811 | NTOSAPI
 | 
|---|
| 6812 | NTSTATUS
 | 
|---|
| 6813 | DDKAPI
 | 
|---|
| 6814 | IoReportTargetDeviceChange(
 | 
|---|
| 6815 |   IN PDEVICE_OBJECT  PhysicalDeviceObject,
 | 
|---|
| 6816 |   IN PVOID  NotificationStructure);
 | 
|---|
| 6817 | 
 | 
|---|
| 6818 | NTOSAPI
 | 
|---|
| 6819 | NTSTATUS
 | 
|---|
| 6820 | DDKAPI
 | 
|---|
| 6821 | IoReportTargetDeviceChangeAsynchronous(
 | 
|---|
| 6822 |   IN PDEVICE_OBJECT  PhysicalDeviceObject,
 | 
|---|
| 6823 |   IN PVOID  NotificationStructure,
 | 
|---|
| 6824 |   IN PDEVICE_CHANGE_COMPLETE_CALLBACK  Callback  OPTIONAL,
 | 
|---|
| 6825 |   IN PVOID  Context  OPTIONAL);
 | 
|---|
| 6826 | 
 | 
|---|
| 6827 | NTOSAPI
 | 
|---|
| 6828 | VOID
 | 
|---|
| 6829 | DDKAPI
 | 
|---|
| 6830 | IoRequestDeviceEject(
 | 
|---|
| 6831 |   IN PDEVICE_OBJECT  PhysicalDeviceObject);
 | 
|---|
| 6832 | 
 | 
|---|
| 6833 | /*
 | 
|---|
| 6834 |  * VOID
 | 
|---|
| 6835 |  * IoRequestDpc(
 | 
|---|
| 6836 |  *   IN PDEVICE_OBJECT  DeviceObject,
 | 
|---|
| 6837 |  *   IN PIRP  Irp,
 | 
|---|
| 6838 |  *   IN PVOID  Context);
 | 
|---|
| 6839 |  */
 | 
|---|
| 6840 | #define IoRequestDpc(DeviceObject, Irp, Context)( \
 | 
|---|
| 6841 |   KeInsertQueueDpc(&(DeviceObject)->Dpc, (Irp), (Context)))
 | 
|---|
| 6842 | 
 | 
|---|
| 6843 | NTOSAPI
 | 
|---|
| 6844 | VOID
 | 
|---|
| 6845 | DDKAPI
 | 
|---|
| 6846 | IoReuseIrp(
 | 
|---|
| 6847 |   IN OUT PIRP  Irp,
 | 
|---|
| 6848 |   IN NTSTATUS  Status);
 | 
|---|
| 6849 | 
 | 
|---|
| 6850 | /*
 | 
|---|
| 6851 |  * PDRIVER_CANCEL
 | 
|---|
| 6852 |  * IoSetCancelRoutine(
 | 
|---|
| 6853 |  *   IN PIRP  Irp,
 | 
|---|
| 6854 |  *   IN PDRIVER_CANCEL  CancelRoutine)
 | 
|---|
| 6855 |  */
 | 
|---|
| 6856 | #define IoSetCancelRoutine(_Irp, \
 | 
|---|
| 6857 |                            _CancelRoutine) \
 | 
|---|
| 6858 |   ((PDRIVER_CANCEL) InterlockedExchangePointer( \
 | 
|---|
| 6859 |     (PVOID *) &(_Irp)->CancelRoutine, (PVOID) (_CancelRoutine)))
 | 
|---|
| 6860 | 
 | 
|---|
| 6861 | /*
 | 
|---|
| 6862 |  * VOID
 | 
|---|
| 6863 |  * IoSetCompletionRoutine(
 | 
|---|
| 6864 |  *   IN PIRP  Irp,
 | 
|---|
| 6865 |  *   IN PIO_COMPLETION_ROUTINE  CompletionRoutine,
 | 
|---|
| 6866 |  *   IN PVOID  Context,
 | 
|---|
| 6867 |  *   IN BOOLEAN  InvokeOnSuccess,
 | 
|---|
| 6868 |  *   IN BOOLEAN  InvokeOnError,
 | 
|---|
| 6869 |  *   IN BOOLEAN  InvokeOnCancel)
 | 
|---|
| 6870 |  */
 | 
|---|
| 6871 | #define IoSetCompletionRoutine(_Irp, \
 | 
|---|
| 6872 |                                _CompletionRoutine, \
 | 
|---|
| 6873 |                                _Context, \
 | 
|---|
| 6874 |                                _InvokeOnSuccess, \
 | 
|---|
| 6875 |                                _InvokeOnError, \
 | 
|---|
| 6876 |                                _InvokeOnCancel) \
 | 
|---|
| 6877 | { \
 | 
|---|
| 6878 |   PIO_STACK_LOCATION _IrpSp; \
 | 
|---|
| 6879 |   ASSERT(_InvokeOnSuccess || _InvokeOnError || _InvokeOnCancel ? \
 | 
|---|
| 6880 |     _CompletionRoutine != NULL : TRUE); \
 | 
|---|
| 6881 |   _IrpSp = IoGetNextIrpStackLocation(_Irp); \
 | 
|---|
| 6882 |   _IrpSp->CompletionRoutine = (PIO_COMPLETION_ROUTINE)(_CompletionRoutine); \
 | 
|---|
| 6883 |         _IrpSp->Context = (_Context); \
 | 
|---|
| 6884 |   _IrpSp->Control = 0; \
 | 
|---|
| 6885 |   if (_InvokeOnSuccess) _IrpSp->Control = SL_INVOKE_ON_SUCCESS; \
 | 
|---|
| 6886 |   if (_InvokeOnError) _IrpSp->Control |= SL_INVOKE_ON_ERROR; \
 | 
|---|
| 6887 |   if (_InvokeOnCancel) _IrpSp->Control |= SL_INVOKE_ON_CANCEL; \
 | 
|---|
| 6888 | }
 | 
|---|
| 6889 | 
 | 
|---|
| 6890 | NTOSAPI
 | 
|---|
| 6891 | VOID
 | 
|---|
| 6892 | DDKAPI
 | 
|---|
| 6893 | IoSetCompletionRoutineEx(
 | 
|---|
| 6894 |   IN PDEVICE_OBJECT  DeviceObject,
 | 
|---|
| 6895 |   IN PIRP  Irp,
 | 
|---|
| 6896 |   IN PIO_COMPLETION_ROUTINE  CompletionRoutine,
 | 
|---|
| 6897 |   IN PVOID  Context,
 | 
|---|
| 6898 |   IN BOOLEAN    InvokeOnSuccess,
 | 
|---|
| 6899 |   IN BOOLEAN  InvokeOnError,
 | 
|---|
| 6900 |   IN BOOLEAN  InvokeOnCancel);
 | 
|---|
| 6901 | 
 | 
|---|
| 6902 | NTOSAPI
 | 
|---|
| 6903 | NTSTATUS
 | 
|---|
| 6904 | DDKAPI
 | 
|---|
| 6905 | IoSetDeviceInterfaceState(
 | 
|---|
| 6906 |   IN PUNICODE_STRING  SymbolicLinkName,
 | 
|---|
| 6907 |   IN BOOLEAN  Enable);
 | 
|---|
| 6908 | 
 | 
|---|
| 6909 | NTOSAPI
 | 
|---|
| 6910 | VOID
 | 
|---|
| 6911 | DDKAPI
 | 
|---|
| 6912 | IoSetHardErrorOrVerifyDevice(
 | 
|---|
| 6913 |   IN PIRP  Irp,
 | 
|---|
| 6914 |   IN PDEVICE_OBJECT  DeviceObject);
 | 
|---|
| 6915 | 
 | 
|---|
| 6916 | /*
 | 
|---|
| 6917 |  * VOID
 | 
|---|
| 6918 |  * IoSetNextIrpStackLocation(
 | 
|---|
| 6919 |  *   IN OUT PIRP  Irp)
 | 
|---|
| 6920 |  */
 | 
|---|
| 6921 | #define IoSetNextIrpStackLocation(_Irp) \
 | 
|---|
| 6922 | { \
 | 
|---|
| 6923 |   (_Irp)->CurrentLocation--; \
 | 
|---|
| 6924 |   (_Irp)->Tail.Overlay.CurrentStackLocation--; \
 | 
|---|
| 6925 | }
 | 
|---|
| 6926 | 
 | 
|---|
| 6927 | NTOSAPI
 | 
|---|
| 6928 | NTSTATUS
 | 
|---|
| 6929 | DDKAPI
 | 
|---|
| 6930 | IoSetPartitionInformationEx(
 | 
|---|
| 6931 |   IN PDEVICE_OBJECT  DeviceObject,
 | 
|---|
| 6932 |   IN ULONG  PartitionNumber,
 | 
|---|
| 6933 |   IN struct _SET_PARTITION_INFORMATION_EX  *PartitionInfo);
 | 
|---|
| 6934 | 
 | 
|---|
| 6935 | NTOSAPI
 | 
|---|
| 6936 | VOID
 | 
|---|
| 6937 | DDKAPI
 | 
|---|
| 6938 | IoSetShareAccess(
 | 
|---|
| 6939 |   IN ACCESS_MASK  DesiredAccess,
 | 
|---|
| 6940 |   IN ULONG  DesiredShareAccess,
 | 
|---|
| 6941 |   IN OUT PFILE_OBJECT  FileObject,
 | 
|---|
| 6942 |   OUT PSHARE_ACCESS  ShareAccess);
 | 
|---|
| 6943 | 
 | 
|---|
| 6944 | NTOSAPI
 | 
|---|
| 6945 | VOID
 | 
|---|
| 6946 | DDKAPI
 | 
|---|
| 6947 | IoSetStartIoAttributes(
 | 
|---|
| 6948 |   IN PDEVICE_OBJECT  DeviceObject, 
 | 
|---|
| 6949 |   IN BOOLEAN  DeferredStartIo, 
 | 
|---|
| 6950 |   IN BOOLEAN  NonCancelable); 
 | 
|---|
| 6951 | 
 | 
|---|
| 6952 | NTOSAPI
 | 
|---|
| 6953 | NTSTATUS
 | 
|---|
| 6954 | DDKAPI
 | 
|---|
| 6955 | IoSetSystemPartition(
 | 
|---|
| 6956 |   IN PUNICODE_STRING  VolumeNameString);
 | 
|---|
| 6957 | 
 | 
|---|
| 6958 | NTOSAPI
 | 
|---|
| 6959 | BOOLEAN
 | 
|---|
| 6960 | DDKAPI
 | 
|---|
| 6961 | IoSetThreadHardErrorMode(
 | 
|---|
| 6962 |   IN BOOLEAN  EnableHardErrors);
 | 
|---|
| 6963 | 
 | 
|---|
| 6964 | /*
 | 
|---|
| 6965 |  * USHORT
 | 
|---|
| 6966 |  * IoSizeOfIrp(
 | 
|---|
| 6967 |  *   IN CCHAR  StackSize)
 | 
|---|
| 6968 |  */
 | 
|---|
| 6969 | #define IoSizeOfIrp(_StackSize) \
 | 
|---|
| 6970 |   ((USHORT) (sizeof(IRP) + ((_StackSize) * (sizeof(IO_STACK_LOCATION)))))
 | 
|---|
| 6971 | 
 | 
|---|
| 6972 | /*
 | 
|---|
| 6973 |  * VOID
 | 
|---|
| 6974 |  * IoSkipCurrentIrpStackLocation(
 | 
|---|
| 6975 |  *   IN PIRP  Irp)
 | 
|---|
| 6976 |  */
 | 
|---|
| 6977 | #define IoSkipCurrentIrpStackLocation(_Irp) \
 | 
|---|
| 6978 | { \
 | 
|---|
| 6979 |   (_Irp)->CurrentLocation++; \
 | 
|---|
| 6980 |   (_Irp)->Tail.Overlay.CurrentStackLocation++; \
 | 
|---|
| 6981 | }
 | 
|---|
| 6982 | 
 | 
|---|
| 6983 | NTOSAPI
 | 
|---|
| 6984 | VOID
 | 
|---|
| 6985 | DDKAPI
 | 
|---|
| 6986 | IoStartNextPacket(
 | 
|---|
| 6987 |   IN PDEVICE_OBJECT  DeviceObject,
 | 
|---|
| 6988 |   IN BOOLEAN  Cancelable);
 | 
|---|
| 6989 | 
 | 
|---|
| 6990 | NTOSAPI
 | 
|---|
| 6991 | VOID
 | 
|---|
| 6992 | DDKAPI
 | 
|---|
| 6993 | IoStartNextPacketByKey(
 | 
|---|
| 6994 |   IN PDEVICE_OBJECT  DeviceObject,
 | 
|---|
| 6995 |   IN BOOLEAN  Cancelable,
 | 
|---|
| 6996 |   IN ULONG  Key);
 | 
|---|
| 6997 | 
 | 
|---|
| 6998 | NTOSAPI
 | 
|---|
| 6999 | VOID
 | 
|---|
| 7000 | DDKAPI
 | 
|---|
| 7001 | IoStartPacket(
 | 
|---|
| 7002 |   IN PDEVICE_OBJECT  DeviceObject,
 | 
|---|
| 7003 |   IN PIRP  Irp,
 | 
|---|
| 7004 |   IN PULONG  Key  OPTIONAL,
 | 
|---|
| 7005 |   IN PDRIVER_CANCEL  CancelFunction  OPTIONAL);
 | 
|---|
| 7006 | 
 | 
|---|
| 7007 | NTOSAPI
 | 
|---|
| 7008 | VOID
 | 
|---|
| 7009 | DDKAPI
 | 
|---|
| 7010 | IoStartTimer(
 | 
|---|
| 7011 |   IN PDEVICE_OBJECT  DeviceObject);
 | 
|---|
| 7012 | 
 | 
|---|
| 7013 | NTOSAPI
 | 
|---|
| 7014 | VOID
 | 
|---|
| 7015 | DDKAPI
 | 
|---|
| 7016 | IoStopTimer(
 | 
|---|
| 7017 |   IN PDEVICE_OBJECT  DeviceObject);
 | 
|---|
| 7018 | 
 | 
|---|
| 7019 | NTOSAPI
 | 
|---|
| 7020 | NTSTATUS
 | 
|---|
| 7021 | DDKAPI
 | 
|---|
| 7022 | IoUnregisterPlugPlayNotification(
 | 
|---|
| 7023 |   IN PVOID  NotificationEntry);
 | 
|---|
| 7024 | 
 | 
|---|
| 7025 | NTOSAPI
 | 
|---|
| 7026 | VOID
 | 
|---|
| 7027 | DDKAPI
 | 
|---|
| 7028 | IoUnregisterShutdownNotification(
 | 
|---|
| 7029 |   IN PDEVICE_OBJECT  DeviceObject);
 | 
|---|
| 7030 | 
 | 
|---|
| 7031 | NTOSAPI
 | 
|---|
| 7032 | VOID
 | 
|---|
| 7033 | DDKAPI
 | 
|---|
| 7034 | IoUpdateShareAccess(
 | 
|---|
| 7035 |   IN PFILE_OBJECT  FileObject,
 | 
|---|
| 7036 |   IN OUT PSHARE_ACCESS  ShareAccess);
 | 
|---|
| 7037 | 
 | 
|---|
| 7038 | NTOSAPI
 | 
|---|
| 7039 | NTSTATUS
 | 
|---|
| 7040 | DDKAPI
 | 
|---|
| 7041 | IoVerifyPartitionTable(
 | 
|---|
| 7042 |   IN PDEVICE_OBJECT  DeviceObject,
 | 
|---|
| 7043 |   IN BOOLEAN  FixErrors);
 | 
|---|
| 7044 | 
 | 
|---|
| 7045 | NTOSAPI
 | 
|---|
| 7046 | NTSTATUS
 | 
|---|
| 7047 | DDKAPI
 | 
|---|
| 7048 | IoVolumeDeviceToDosName(
 | 
|---|
| 7049 |   IN  PVOID  VolumeDeviceObject,
 | 
|---|
| 7050 |   OUT PUNICODE_STRING  DosName);
 | 
|---|
| 7051 | 
 | 
|---|
| 7052 | NTOSAPI
 | 
|---|
| 7053 | NTSTATUS
 | 
|---|
| 7054 | DDKAPI
 | 
|---|
| 7055 | IoWMIAllocateInstanceIds(
 | 
|---|
| 7056 |   IN GUID  *Guid,
 | 
|---|
| 7057 |   IN ULONG  InstanceCount,
 | 
|---|
| 7058 |   OUT ULONG  *FirstInstanceId);
 | 
|---|
| 7059 | 
 | 
|---|
| 7060 | NTOSAPI
 | 
|---|
| 7061 | ULONG
 | 
|---|
| 7062 | DDKAPI
 | 
|---|
| 7063 | IoWMIDeviceObjectToProviderId(
 | 
|---|
| 7064 |   IN PDEVICE_OBJECT  DeviceObject);
 | 
|---|
| 7065 | 
 | 
|---|
| 7066 | NTOSAPI
 | 
|---|
| 7067 | NTSTATUS
 | 
|---|
| 7068 | DDKAPI
 | 
|---|
| 7069 | IoWMIDeviceObjectToInstanceName(
 | 
|---|
| 7070 |   IN PVOID  DataBlockObject,
 | 
|---|
| 7071 |   IN PDEVICE_OBJECT  DeviceObject,
 | 
|---|
| 7072 |   OUT PUNICODE_STRING  InstanceName);
 | 
|---|
| 7073 | 
 | 
|---|
| 7074 | NTOSAPI
 | 
|---|
| 7075 | NTSTATUS
 | 
|---|
| 7076 | DDKAPI
 | 
|---|
| 7077 | IoWMIExecuteMethod(
 | 
|---|
| 7078 |   IN PVOID  DataBlockObject,
 | 
|---|
| 7079 |   IN PUNICODE_STRING  InstanceName,
 | 
|---|
| 7080 |   IN ULONG  MethodId,
 | 
|---|
| 7081 |   IN ULONG  InBufferSize,
 | 
|---|
| 7082 |   IN OUT PULONG  OutBufferSize,
 | 
|---|
| 7083 |   IN OUT  PUCHAR  InOutBuffer);
 | 
|---|
| 7084 | 
 | 
|---|
| 7085 | NTOSAPI
 | 
|---|
| 7086 | NTSTATUS
 | 
|---|
| 7087 | DDKAPI
 | 
|---|
| 7088 | IoWMIHandleToInstanceName(
 | 
|---|
| 7089 |   IN PVOID  DataBlockObject,
 | 
|---|
| 7090 |   IN HANDLE  FileHandle,
 | 
|---|
| 7091 |   OUT PUNICODE_STRING  InstanceName);
 | 
|---|
| 7092 | 
 | 
|---|
| 7093 | NTOSAPI
 | 
|---|
| 7094 | NTSTATUS
 | 
|---|
| 7095 | DDKAPI
 | 
|---|
| 7096 | IoWMIOpenBlock(
 | 
|---|
| 7097 |   IN GUID  *DataBlockGuid,
 | 
|---|
| 7098 |   IN ULONG  DesiredAccess,
 | 
|---|
| 7099 |   OUT PVOID  *DataBlockObject);
 | 
|---|
| 7100 | 
 | 
|---|
| 7101 | NTOSAPI
 | 
|---|
| 7102 | NTSTATUS
 | 
|---|
| 7103 | DDKAPI
 | 
|---|
| 7104 | IoWMIQueryAllData(
 | 
|---|
| 7105 |   IN PVOID  DataBlockObject,
 | 
|---|
| 7106 |   IN OUT ULONG  *InOutBufferSize,
 | 
|---|
| 7107 |   OUT PVOID  OutBuffer);
 | 
|---|
| 7108 | 
 | 
|---|
| 7109 | NTOSAPI
 | 
|---|
| 7110 | NTSTATUS
 | 
|---|
| 7111 | DDKAPI
 | 
|---|
| 7112 | IoWMIQueryAllDataMultiple(
 | 
|---|
| 7113 |   IN PVOID  *DataBlockObjectList,
 | 
|---|
| 7114 |   IN ULONG  ObjectCount,
 | 
|---|
| 7115 |   IN OUT ULONG  *InOutBufferSize,
 | 
|---|
| 7116 |   OUT PVOID  OutBuffer);
 | 
|---|
| 7117 | 
 | 
|---|
| 7118 | NTOSAPI
 | 
|---|
| 7119 | NTSTATUS
 | 
|---|
| 7120 | DDKAPI
 | 
|---|
| 7121 | IoWMIQuerySingleInstance(
 | 
|---|
| 7122 |   IN PVOID  DataBlockObject,
 | 
|---|
| 7123 |   IN PUNICODE_STRING  InstanceName,
 | 
|---|
| 7124 |   IN OUT ULONG  *InOutBufferSize,
 | 
|---|
| 7125 |   OUT PVOID OutBuffer);
 | 
|---|
| 7126 | 
 | 
|---|
| 7127 | NTOSAPI
 | 
|---|
| 7128 | NTSTATUS
 | 
|---|
| 7129 | DDKAPI
 | 
|---|
| 7130 | IoWMIQuerySingleInstanceMultiple(
 | 
|---|
| 7131 |   IN PVOID  *DataBlockObjectList,
 | 
|---|
| 7132 |   IN PUNICODE_STRING  InstanceNames,
 | 
|---|
| 7133 |   IN ULONG  ObjectCount,
 | 
|---|
| 7134 |   IN OUT ULONG  *InOutBufferSize,
 | 
|---|
| 7135 |   OUT PVOID  OutBuffer);
 | 
|---|
| 7136 | 
 | 
|---|
| 7137 | NTOSAPI
 | 
|---|
| 7138 | NTSTATUS
 | 
|---|
| 7139 | DDKAPI
 | 
|---|
| 7140 | IoWMIRegistrationControl(
 | 
|---|
| 7141 |   IN PDEVICE_OBJECT  DeviceObject,
 | 
|---|
| 7142 |   IN ULONG  Action);
 | 
|---|
| 7143 | 
 | 
|---|
| 7144 | NTOSAPI
 | 
|---|
| 7145 | NTSTATUS
 | 
|---|
| 7146 | DDKAPI
 | 
|---|
| 7147 | IoWMISetNotificationCallback(
 | 
|---|
| 7148 |   IN PVOID  Object,
 | 
|---|
| 7149 |   IN WMI_NOTIFICATION_CALLBACK  Callback,
 | 
|---|
| 7150 |   IN PVOID  Context);
 | 
|---|
| 7151 | 
 | 
|---|
| 7152 | NTOSAPI
 | 
|---|
| 7153 | NTSTATUS
 | 
|---|
| 7154 | DDKAPI
 | 
|---|
| 7155 | IoWMISetSingleInstance(
 | 
|---|
| 7156 |   IN PVOID  DataBlockObject,
 | 
|---|
| 7157 |   IN PUNICODE_STRING  InstanceName,
 | 
|---|
| 7158 |   IN ULONG  Version,
 | 
|---|
| 7159 |   IN ULONG  ValueBufferSize,
 | 
|---|
| 7160 |   IN PVOID  ValueBuffer);
 | 
|---|
| 7161 | 
 | 
|---|
| 7162 | NTOSAPI
 | 
|---|
| 7163 | NTSTATUS
 | 
|---|
| 7164 | DDKAPI
 | 
|---|
| 7165 | IoWMISetSingleItem(
 | 
|---|
| 7166 |   IN PVOID  DataBlockObject,
 | 
|---|
| 7167 |   IN PUNICODE_STRING  InstanceName,
 | 
|---|
| 7168 |   IN ULONG  DataItemId,
 | 
|---|
| 7169 |   IN ULONG  Version,
 | 
|---|
| 7170 |   IN ULONG  ValueBufferSize,
 | 
|---|
| 7171 |   IN PVOID  ValueBuffer);
 | 
|---|
| 7172 | 
 | 
|---|
| 7173 | NTOSAPI
 | 
|---|
| 7174 | NTSTATUS
 | 
|---|
| 7175 | DDKAPI
 | 
|---|
| 7176 | IoWMISuggestInstanceName(
 | 
|---|
| 7177 |   IN PDEVICE_OBJECT  PhysicalDeviceObject OPTIONAL,
 | 
|---|
| 7178 |   IN PUNICODE_STRING  SymbolicLinkName OPTIONAL,
 | 
|---|
| 7179 |   IN BOOLEAN  CombineNames,
 | 
|---|
| 7180 |   OUT PUNICODE_STRING  SuggestedInstanceName);
 | 
|---|
| 7181 | 
 | 
|---|
| 7182 | NTOSAPI
 | 
|---|
| 7183 | NTSTATUS
 | 
|---|
| 7184 | DDKAPI
 | 
|---|
| 7185 | IoWMIWriteEvent(
 | 
|---|
| 7186 |   IN PVOID  WnodeEventItem);
 | 
|---|
| 7187 | 
 | 
|---|
| 7188 | NTOSAPI
 | 
|---|
| 7189 | VOID
 | 
|---|
| 7190 | DDKAPI
 | 
|---|
| 7191 | IoWriteErrorLogEntry(
 | 
|---|
| 7192 |   IN PVOID  ElEntry);
 | 
|---|
| 7193 | 
 | 
|---|
| 7194 | NTOSAPI
 | 
|---|
| 7195 | NTSTATUS
 | 
|---|
| 7196 | DDKAPI
 | 
|---|
| 7197 | IoWritePartitionTableEx(
 | 
|---|
| 7198 |   IN PDEVICE_OBJECT  DeviceObject,
 | 
|---|
| 7199 |   IN struct _DRIVE_LAYOUT_INFORMATION_EX  *PartitionBuffer);
 | 
|---|
| 7200 | 
 | 
|---|
| 7201 | 
 | 
|---|
| 7202 | 
 | 
|---|
| 7203 | /** Kernel routines **/
 | 
|---|
| 7204 | 
 | 
|---|
| 7205 | NTOSAPI
 | 
|---|
| 7206 | VOID
 | 
|---|
| 7207 | DDKFASTAPI
 | 
|---|
| 7208 | KeAcquireInStackQueuedSpinLock(
 | 
|---|
| 7209 |   IN PKSPIN_LOCK  SpinLock,
 | 
|---|
| 7210 |   IN PKLOCK_QUEUE_HANDLE  LockHandle);
 | 
|---|
| 7211 | 
 | 
|---|
| 7212 | NTOSAPI
 | 
|---|
| 7213 | VOID
 | 
|---|
| 7214 | DDKFASTAPI
 | 
|---|
| 7215 | KeAcquireInStackQueuedSpinLockAtDpcLevel(
 | 
|---|
| 7216 |   IN PKSPIN_LOCK  SpinLock,
 | 
|---|
| 7217 |   IN PKLOCK_QUEUE_HANDLE  LockHandle);
 | 
|---|
| 7218 | 
 | 
|---|
| 7219 | NTOSAPI
 | 
|---|
| 7220 | KIRQL
 | 
|---|
| 7221 | DDKAPI
 | 
|---|
| 7222 | KeAcquireInterruptSpinLock(
 | 
|---|
| 7223 |   IN PKINTERRUPT  Interrupt);
 | 
|---|
| 7224 | 
 | 
|---|
| 7225 | NTOSAPI
 | 
|---|
| 7226 | VOID
 | 
|---|
| 7227 | DDKAPI
 | 
|---|
| 7228 | KeAcquireSpinLock(
 | 
|---|
| 7229 |   IN PKSPIN_LOCK  SpinLock,
 | 
|---|
| 7230 |   OUT PKIRQL  OldIrql);
 | 
|---|
| 7231 | 
 | 
|---|
| 7232 | /* System Service Dispatch Table */
 | 
|---|
| 7233 | typedef PVOID (NTAPI * SSDT)(VOID);
 | 
|---|
| 7234 | typedef SSDT * PSSDT;
 | 
|---|
| 7235 | 
 | 
|---|
| 7236 | /* System Service Parameters Table */
 | 
|---|
| 7237 | typedef UCHAR SSPT, * PSSPT;
 | 
|---|
| 7238 | 
 | 
|---|
| 7239 | typedef struct _SSDT_ENTRY {
 | 
|---|
| 7240 |         PSSDT  SSDT;
 | 
|---|
| 7241 |         PULONG  ServiceCounterTable;
 | 
|---|
| 7242 |         ULONG  NumberOfServices;
 | 
|---|
| 7243 |         PSSPT  SSPT;
 | 
|---|
| 7244 | } SSDT_ENTRY, *PSSDT_ENTRY;
 | 
|---|
| 7245 | 
 | 
|---|
| 7246 | NTOSAPI
 | 
|---|
| 7247 | BOOLEAN
 | 
|---|
| 7248 | DDKAPI
 | 
|---|
| 7249 | KeAddSystemServiceTable(
 | 
|---|
| 7250 |   IN PSSDT  SSDT,
 | 
|---|
| 7251 |   IN PULONG  ServiceCounterTable,
 | 
|---|
| 7252 |   IN ULONG  NumberOfServices,
 | 
|---|
| 7253 |   IN PSSPT  SSPT,
 | 
|---|
| 7254 |   IN ULONG  TableIndex);
 | 
|---|
| 7255 | 
 | 
|---|
| 7256 | NTOSAPI
 | 
|---|
| 7257 | BOOLEAN
 | 
|---|
| 7258 | DDKAPI
 | 
|---|
| 7259 | KeAreApcsDisabled(
 | 
|---|
| 7260 |   VOID);
 | 
|---|
| 7261 | 
 | 
|---|
| 7262 | NTOSAPI
 | 
|---|
| 7263 | VOID
 | 
|---|
| 7264 | DDKAPI
 | 
|---|
| 7265 | KeAttachProcess(
 | 
|---|
| 7266 |   IN PEPROCESS  Process);
 | 
|---|
| 7267 | 
 | 
|---|
| 7268 | NTOSAPI
 | 
|---|
| 7269 | VOID
 | 
|---|
| 7270 | DDKAPI
 | 
|---|
| 7271 | KeBugCheck(
 | 
|---|
| 7272 |   IN ULONG  BugCheckCode);
 | 
|---|
| 7273 | 
 | 
|---|
| 7274 | NTOSAPI
 | 
|---|
| 7275 | VOID
 | 
|---|
| 7276 | DDKAPI
 | 
|---|
| 7277 | KeBugCheckEx(
 | 
|---|
| 7278 |   IN ULONG  BugCheckCode,
 | 
|---|
| 7279 |   IN ULONG_PTR  BugCheckParameter1,
 | 
|---|
| 7280 |   IN ULONG_PTR  BugCheckParameter2,
 | 
|---|
| 7281 |   IN ULONG_PTR  BugCheckParameter3,
 | 
|---|
| 7282 |   IN ULONG_PTR  BugCheckParameter4);
 | 
|---|
| 7283 | 
 | 
|---|
| 7284 | NTOSAPI
 | 
|---|
| 7285 | BOOLEAN
 | 
|---|
| 7286 | DDKAPI
 | 
|---|
| 7287 | KeCancelTimer(
 | 
|---|
| 7288 |   IN PKTIMER  Timer);
 | 
|---|
| 7289 | 
 | 
|---|
| 7290 | NTOSAPI
 | 
|---|
| 7291 | VOID
 | 
|---|
| 7292 | DDKAPI
 | 
|---|
| 7293 | KeClearEvent(
 | 
|---|
| 7294 |   IN PRKEVENT  Event);
 | 
|---|
| 7295 | 
 | 
|---|
| 7296 | NTOSAPI
 | 
|---|
| 7297 | NTSTATUS
 | 
|---|
| 7298 | DDKAPI
 | 
|---|
| 7299 | KeDelayExecutionThread(
 | 
|---|
| 7300 |   IN KPROCESSOR_MODE  WaitMode,
 | 
|---|
| 7301 |   IN BOOLEAN  Alertable,
 | 
|---|
| 7302 |   IN PLARGE_INTEGER  Interval);
 | 
|---|
| 7303 | 
 | 
|---|
| 7304 | NTOSAPI
 | 
|---|
| 7305 | BOOLEAN
 | 
|---|
| 7306 | DDKAPI
 | 
|---|
| 7307 | KeDeregisterBugCheckCallback(
 | 
|---|
| 7308 |   IN PKBUGCHECK_CALLBACK_RECORD  CallbackRecord);
 | 
|---|
| 7309 | 
 | 
|---|
| 7310 | NTOSAPI
 | 
|---|
| 7311 | VOID
 | 
|---|
| 7312 | DDKAPI
 | 
|---|
| 7313 | KeDetachProcess(
 | 
|---|
| 7314 |   VOID);
 | 
|---|
| 7315 | 
 | 
|---|
| 7316 | NTOSAPI
 | 
|---|
| 7317 | VOID
 | 
|---|
| 7318 | DDKAPI
 | 
|---|
| 7319 | KeEnterCriticalRegion(
 | 
|---|
| 7320 |   VOID);
 | 
|---|
| 7321 | 
 | 
|---|
| 7322 | /*
 | 
|---|
| 7323 |  * VOID
 | 
|---|
| 7324 |  * KeFlushIoBuffers(
 | 
|---|
| 7325 |  *   IN PMDL  Mdl,
 | 
|---|
| 7326 |  *   IN BOOLEAN  ReadOperation,
 | 
|---|
| 7327 |  *   IN BOOLEAN  DmaOperation)
 | 
|---|
| 7328 |  */
 | 
|---|
| 7329 | #define KeFlushIoBuffers(_Mdl, _ReadOperation, _DmaOperation)
 | 
|---|
| 7330 | 
 | 
|---|
| 7331 | NTOSAPI
 | 
|---|
| 7332 | PRKTHREAD
 | 
|---|
| 7333 | DDKAPI
 | 
|---|
| 7334 | KeGetCurrentThread(
 | 
|---|
| 7335 |   VOID);
 | 
|---|
| 7336 | 
 | 
|---|
| 7337 | NTOSAPI
 | 
|---|
| 7338 | KPROCESSOR_MODE
 | 
|---|
| 7339 | DDKAPI
 | 
|---|
| 7340 | KeGetPreviousMode(
 | 
|---|
| 7341 |   VOID);
 | 
|---|
| 7342 | 
 | 
|---|
| 7343 | NTOSAPI
 | 
|---|
| 7344 | ULONG
 | 
|---|
| 7345 | DDKAPI
 | 
|---|
| 7346 | KeGetRecommendedSharedDataAlignment(
 | 
|---|
| 7347 |   VOID);
 | 
|---|
| 7348 | 
 | 
|---|
| 7349 | NTOSAPI
 | 
|---|
| 7350 | VOID
 | 
|---|
| 7351 | DDKAPI
 | 
|---|
| 7352 | KeInitializeApc(
 | 
|---|
| 7353 |   IN PKAPC  Apc,
 | 
|---|
| 7354 |         IN PKTHREAD  Thread,
 | 
|---|
| 7355 |         IN UCHAR  StateIndex,
 | 
|---|
| 7356 |         IN PKKERNEL_ROUTINE  KernelRoutine,
 | 
|---|
| 7357 |         IN PKRUNDOWN_ROUTINE  RundownRoutine,
 | 
|---|
| 7358 |         IN PKNORMAL_ROUTINE  NormalRoutine,
 | 
|---|
| 7359 |         IN UCHAR  Mode,
 | 
|---|
| 7360 |         IN PVOID  Context);
 | 
|---|
| 7361 | 
 | 
|---|
| 7362 | NTOSAPI
 | 
|---|
| 7363 | VOID
 | 
|---|
| 7364 | DDKAPI
 | 
|---|
| 7365 | KeInitializeDeviceQueue(
 | 
|---|
| 7366 |   IN PKDEVICE_QUEUE  DeviceQueue);
 | 
|---|
| 7367 | 
 | 
|---|
| 7368 | NTOSAPI
 | 
|---|
| 7369 | VOID
 | 
|---|
| 7370 | DDKAPI
 | 
|---|
| 7371 | KeInitializeMutex(
 | 
|---|
| 7372 |   IN PRKMUTEX  Mutex,
 | 
|---|
| 7373 |   IN ULONG  Level);
 | 
|---|
| 7374 | 
 | 
|---|
| 7375 | NTOSAPI
 | 
|---|
| 7376 | VOID
 | 
|---|
| 7377 | DDKAPI
 | 
|---|
| 7378 | KeInitializeSemaphore(
 | 
|---|
| 7379 |   IN PRKSEMAPHORE  Semaphore,
 | 
|---|
| 7380 |   IN LONG  Count,
 | 
|---|
| 7381 |   IN LONG  Limit);
 | 
|---|
| 7382 | 
 | 
|---|
| 7383 | NTOSAPI
 | 
|---|
| 7384 | VOID
 | 
|---|
| 7385 | DDKAPI
 | 
|---|
| 7386 | KeInitializeSpinLock(
 | 
|---|
| 7387 |   IN PKSPIN_LOCK  SpinLock);
 | 
|---|
| 7388 | 
 | 
|---|
| 7389 | NTOSAPI
 | 
|---|
| 7390 | VOID
 | 
|---|
| 7391 | DDKAPI
 | 
|---|
| 7392 | KeInitializeTimer(
 | 
|---|
| 7393 |   IN PKTIMER  Timer);
 | 
|---|
| 7394 | 
 | 
|---|
| 7395 | NTOSAPI
 | 
|---|
| 7396 | VOID
 | 
|---|
| 7397 | DDKAPI
 | 
|---|
| 7398 | KeInitializeTimerEx(
 | 
|---|
| 7399 |   IN PKTIMER  Timer,
 | 
|---|
| 7400 |   IN TIMER_TYPE  Type);
 | 
|---|
| 7401 | 
 | 
|---|
| 7402 | NTOSAPI
 | 
|---|
| 7403 | BOOLEAN
 | 
|---|
| 7404 | DDKAPI
 | 
|---|
| 7405 | KeInsertByKeyDeviceQueue(
 | 
|---|
| 7406 |   IN PKDEVICE_QUEUE  DeviceQueue,
 | 
|---|
| 7407 |   IN PKDEVICE_QUEUE_ENTRY  DeviceQueueEntry,
 | 
|---|
| 7408 |   IN ULONG  SortKey);
 | 
|---|
| 7409 | 
 | 
|---|
| 7410 | NTOSAPI
 | 
|---|
| 7411 | BOOLEAN
 | 
|---|
| 7412 | DDKAPI
 | 
|---|
| 7413 | KeInsertDeviceQueue(
 | 
|---|
| 7414 |   IN PKDEVICE_QUEUE  DeviceQueue,
 | 
|---|
| 7415 |   IN PKDEVICE_QUEUE_ENTRY  DeviceQueueEntry);
 | 
|---|
| 7416 | 
 | 
|---|
| 7417 | NTOSAPI
 | 
|---|
| 7418 | BOOLEAN
 | 
|---|
| 7419 | DDKAPI
 | 
|---|
| 7420 | KeInsertQueueDpc(
 | 
|---|
| 7421 |   IN PRKDPC  Dpc,
 | 
|---|
| 7422 |   IN PVOID  SystemArgument1,
 | 
|---|
| 7423 |   IN PVOID  SystemArgument2);
 | 
|---|
| 7424 | 
 | 
|---|
| 7425 | NTOSAPI
 | 
|---|
| 7426 | VOID
 | 
|---|
| 7427 | DDKAPI
 | 
|---|
| 7428 | KeLeaveCriticalRegion(
 | 
|---|
| 7429 |   VOID);
 | 
|---|
| 7430 | 
 | 
|---|
| 7431 | NTOSAPI
 | 
|---|
| 7432 | NTSTATUS
 | 
|---|
| 7433 | DDKAPI
 | 
|---|
| 7434 | KePulseEvent(
 | 
|---|
| 7435 |   IN PRKEVENT  Event,
 | 
|---|
| 7436 |   IN KPRIORITY  Increment,
 | 
|---|
| 7437 |   IN BOOLEAN  Wait);
 | 
|---|
| 7438 | 
 | 
|---|
| 7439 | NTOSAPI
 | 
|---|
| 7440 | ULONGLONG
 | 
|---|
| 7441 | DDKAPI
 | 
|---|
| 7442 | KeQueryInterruptTime(
 | 
|---|
| 7443 |   VOID);
 | 
|---|
| 7444 | 
 | 
|---|
| 7445 | NTOSAPI
 | 
|---|
| 7446 | LARGE_INTEGER
 | 
|---|
| 7447 | DDKAPI
 | 
|---|
| 7448 | KeQueryPerformanceCounter(
 | 
|---|
| 7449 |   OUT PLARGE_INTEGER  PerformanceFrequency  OPTIONAL);
 | 
|---|
| 7450 | 
 | 
|---|
| 7451 | NTOSAPI
 | 
|---|
| 7452 | KPRIORITY
 | 
|---|
| 7453 | DDKAPI
 | 
|---|
| 7454 | KeQueryPriorityThread(
 | 
|---|
| 7455 |   IN PRKTHREAD  Thread);
 | 
|---|
| 7456 | 
 | 
|---|
| 7457 | NTOSAPI
 | 
|---|
| 7458 | VOID
 | 
|---|
| 7459 | DDKAPI
 | 
|---|
| 7460 | KeQuerySystemTime(
 | 
|---|
| 7461 |   OUT PLARGE_INTEGER  CurrentTime);
 | 
|---|
| 7462 | 
 | 
|---|
| 7463 | NTOSAPI
 | 
|---|
| 7464 | VOID
 | 
|---|
| 7465 | DDKAPI
 | 
|---|
| 7466 | KeQueryTickCount(
 | 
|---|
| 7467 |   OUT PLARGE_INTEGER  TickCount);
 | 
|---|
| 7468 | 
 | 
|---|
| 7469 | NTOSAPI
 | 
|---|
| 7470 | ULONG
 | 
|---|
| 7471 | DDKAPI
 | 
|---|
| 7472 | KeQueryTimeIncrement(
 | 
|---|
| 7473 |   VOID);
 | 
|---|
| 7474 | 
 | 
|---|
| 7475 | NTOSAPI
 | 
|---|
| 7476 | LONG
 | 
|---|
| 7477 | DDKAPI
 | 
|---|
| 7478 | KeReadStateEvent(
 | 
|---|
| 7479 |   IN PRKEVENT  Event);
 | 
|---|
| 7480 | 
 | 
|---|
| 7481 | NTOSAPI
 | 
|---|
| 7482 | LONG
 | 
|---|
| 7483 | DDKAPI
 | 
|---|
| 7484 | KeReadStateMutex(
 | 
|---|
| 7485 |   IN PRKMUTEX  Mutex);
 | 
|---|
| 7486 | 
 | 
|---|
| 7487 | NTOSAPI
 | 
|---|
| 7488 | LONG
 | 
|---|
| 7489 | DDKAPI
 | 
|---|
| 7490 | KeReadStateSemaphore(
 | 
|---|
| 7491 |   IN PRKSEMAPHORE  Semaphore);
 | 
|---|
| 7492 | 
 | 
|---|
| 7493 | NTOSAPI
 | 
|---|
| 7494 | BOOLEAN
 | 
|---|
| 7495 | DDKAPI
 | 
|---|
| 7496 | KeReadStateTimer(
 | 
|---|
| 7497 |   IN PKTIMER  Timer);
 | 
|---|
| 7498 | 
 | 
|---|
| 7499 | NTOSAPI
 | 
|---|
| 7500 | BOOLEAN
 | 
|---|
| 7501 | DDKAPI
 | 
|---|
| 7502 | KeRegisterBugCheckCallback(
 | 
|---|
| 7503 |   IN PKBUGCHECK_CALLBACK_RECORD  CallbackRecord,
 | 
|---|
| 7504 |   IN PKBUGCHECK_CALLBACK_ROUTINE  CallbackRoutine,
 | 
|---|
| 7505 |   IN PVOID  Buffer,
 | 
|---|
| 7506 |   IN ULONG  Length,
 | 
|---|
| 7507 |   IN PUCHAR  Component);
 | 
|---|
| 7508 | 
 | 
|---|
| 7509 | NTOSAPI
 | 
|---|
| 7510 | VOID
 | 
|---|
| 7511 | DDKFASTAPI
 | 
|---|
| 7512 | KeReleaseInStackQueuedSpinLock(
 | 
|---|
| 7513 |   IN PKLOCK_QUEUE_HANDLE  LockHandle);
 | 
|---|
| 7514 | 
 | 
|---|
| 7515 | NTOSAPI
 | 
|---|
| 7516 | VOID
 | 
|---|
| 7517 | DDKFASTAPI
 | 
|---|
| 7518 | KeReleaseInStackQueuedSpinLockFromDpcLevel(
 | 
|---|
| 7519 |   IN PKLOCK_QUEUE_HANDLE  LockHandle);
 | 
|---|
| 7520 | 
 | 
|---|
| 7521 | NTOSAPI
 | 
|---|
| 7522 | VOID
 | 
|---|
| 7523 | DDKAPI
 | 
|---|
| 7524 | KeReleaseInterruptSpinLock(
 | 
|---|
| 7525 |   IN PKINTERRUPT  Interrupt,
 | 
|---|
| 7526 |   IN KIRQL  OldIrql);
 | 
|---|
| 7527 | 
 | 
|---|
| 7528 | NTOSAPI
 | 
|---|
| 7529 | LONG
 | 
|---|
| 7530 | DDKAPI
 | 
|---|
| 7531 | KeReleaseMutex(
 | 
|---|
| 7532 |   IN PRKMUTEX  Mutex,
 | 
|---|
| 7533 |   IN BOOLEAN  Wait);
 | 
|---|
| 7534 | 
 | 
|---|
| 7535 | NTOSAPI
 | 
|---|
| 7536 | LONG
 | 
|---|
| 7537 | DDKAPI
 | 
|---|
| 7538 | KeReleaseSemaphore(
 | 
|---|
| 7539 |   IN PRKSEMAPHORE  Semaphore,
 | 
|---|
| 7540 |   IN KPRIORITY  Increment,
 | 
|---|
| 7541 |   IN LONG  Adjustment,
 | 
|---|
| 7542 |   IN BOOLEAN  Wait);
 | 
|---|
| 7543 | 
 | 
|---|
| 7544 | NTOSAPI
 | 
|---|
| 7545 | VOID
 | 
|---|
| 7546 | DDKAPI
 | 
|---|
| 7547 | KeReleaseSpinLock(
 | 
|---|
| 7548 |   IN PKSPIN_LOCK  SpinLock,
 | 
|---|
| 7549 |   IN KIRQL  NewIrql);
 | 
|---|
| 7550 | 
 | 
|---|
| 7551 | NTOSAPI
 | 
|---|
| 7552 | PKDEVICE_QUEUE_ENTRY
 | 
|---|
| 7553 | DDKAPI 
 | 
|---|
| 7554 | KeRemoveByKeyDeviceQueue(
 | 
|---|
| 7555 |   IN PKDEVICE_QUEUE  DeviceQueue,
 | 
|---|
| 7556 |   IN ULONG  SortKey);
 | 
|---|
| 7557 | 
 | 
|---|
| 7558 | NTOSAPI
 | 
|---|
| 7559 | PKDEVICE_QUEUE_ENTRY
 | 
|---|
| 7560 | DDKAPI
 | 
|---|
| 7561 | KeRemoveDeviceQueue(
 | 
|---|
| 7562 |   IN PKDEVICE_QUEUE  DeviceQueue);
 | 
|---|
| 7563 | 
 | 
|---|
| 7564 | NTOSAPI
 | 
|---|
| 7565 | BOOLEAN
 | 
|---|
| 7566 | DDKAPI
 | 
|---|
| 7567 | KeRemoveEntryDeviceQueue(
 | 
|---|
| 7568 |   IN PKDEVICE_QUEUE  DeviceQueue,
 | 
|---|
| 7569 |   IN PKDEVICE_QUEUE_ENTRY  DeviceQueueEntry);
 | 
|---|
| 7570 | 
 | 
|---|
| 7571 | NTOSAPI
 | 
|---|
| 7572 | BOOLEAN
 | 
|---|
| 7573 | DDKAPI
 | 
|---|
| 7574 | KeRemoveQueueDpc(
 | 
|---|
| 7575 |   IN PRKDPC  Dpc);
 | 
|---|
| 7576 | 
 | 
|---|
| 7577 | NTOSAPI
 | 
|---|
| 7578 | LONG
 | 
|---|
| 7579 | DDKAPI
 | 
|---|
| 7580 | KeResetEvent(
 | 
|---|
| 7581 |   IN PRKEVENT  Event);
 | 
|---|
| 7582 | 
 | 
|---|
| 7583 | NTOSAPI
 | 
|---|
| 7584 | NTSTATUS
 | 
|---|
| 7585 | DDKAPI
 | 
|---|
| 7586 | KeRestoreFloatingPointState(
 | 
|---|
| 7587 |   IN PKFLOATING_SAVE  FloatSave);
 | 
|---|
| 7588 | 
 | 
|---|
| 7589 | NTOSAPI
 | 
|---|
| 7590 | NTSTATUS
 | 
|---|
| 7591 | DDKAPI
 | 
|---|
| 7592 | KeSaveFloatingPointState(
 | 
|---|
| 7593 |   OUT PKFLOATING_SAVE  FloatSave);
 | 
|---|
| 7594 | 
 | 
|---|
| 7595 | NTOSAPI
 | 
|---|
| 7596 | LONG
 | 
|---|
| 7597 | DDKAPI
 | 
|---|
| 7598 | KeSetBasePriorityThread(
 | 
|---|
| 7599 |   IN PRKTHREAD  Thread,
 | 
|---|
| 7600 |   IN LONG  Increment);
 | 
|---|
| 7601 | 
 | 
|---|
| 7602 | NTOSAPI
 | 
|---|
| 7603 | LONG
 | 
|---|
| 7604 | DDKAPI
 | 
|---|
| 7605 | KeSetEvent(
 | 
|---|
| 7606 |   IN PRKEVENT  Event,
 | 
|---|
| 7607 |   IN KPRIORITY  Increment,
 | 
|---|
| 7608 |   IN BOOLEAN  Wait);
 | 
|---|
| 7609 | 
 | 
|---|
| 7610 | NTOSAPI
 | 
|---|
| 7611 | VOID
 | 
|---|
| 7612 | DDKAPI
 | 
|---|
| 7613 | KeSetImportanceDpc(
 | 
|---|
| 7614 |   IN PRKDPC  Dpc,
 | 
|---|
| 7615 |   IN KDPC_IMPORTANCE  Importance);
 | 
|---|
| 7616 | 
 | 
|---|
| 7617 | NTOSAPI
 | 
|---|
| 7618 | KPRIORITY
 | 
|---|
| 7619 | DDKAPI
 | 
|---|
| 7620 | KeSetPriorityThread(
 | 
|---|
| 7621 |   IN PKTHREAD  Thread,
 | 
|---|
| 7622 |   IN KPRIORITY  Priority);
 | 
|---|
| 7623 | 
 | 
|---|
| 7624 | NTOSAPI
 | 
|---|
| 7625 | VOID
 | 
|---|
| 7626 | DDKAPI
 | 
|---|
| 7627 | KeSetTargetProcessorDpc(
 | 
|---|
| 7628 |   IN PRKDPC  Dpc,
 | 
|---|
| 7629 |   IN CCHAR  Number);
 | 
|---|
| 7630 | 
 | 
|---|
| 7631 | NTOSAPI
 | 
|---|
| 7632 | BOOLEAN
 | 
|---|
| 7633 | DDKAPI
 | 
|---|
| 7634 | KeSetTimer(
 | 
|---|
| 7635 |   IN PKTIMER  Timer,
 | 
|---|
| 7636 |   IN LARGE_INTEGER  DueTime,
 | 
|---|
| 7637 |   IN PKDPC  Dpc  OPTIONAL);
 | 
|---|
| 7638 | 
 | 
|---|
| 7639 | NTOSAPI
 | 
|---|
| 7640 | BOOLEAN
 | 
|---|
| 7641 | DDKAPI
 | 
|---|
| 7642 | KeSetTimerEx(
 | 
|---|
| 7643 |   IN PKTIMER  Timer,
 | 
|---|
| 7644 |   IN LARGE_INTEGER  DueTime,
 | 
|---|
| 7645 |   IN LONG  Period  OPTIONAL,
 | 
|---|
| 7646 |   IN PKDPC  Dpc  OPTIONAL);
 | 
|---|
| 7647 | 
 | 
|---|
| 7648 | NTOSAPI
 | 
|---|
| 7649 | VOID
 | 
|---|
| 7650 | DDKFASTAPI
 | 
|---|
| 7651 | KeSetTimeUpdateNotifyRoutine(
 | 
|---|
| 7652 |   IN PTIME_UPDATE_NOTIFY_ROUTINE  NotifyRoutine);
 | 
|---|
| 7653 | 
 | 
|---|
| 7654 | NTOSAPI
 | 
|---|
| 7655 | VOID
 | 
|---|
| 7656 | DDKAPI
 | 
|---|
| 7657 | KeStallExecutionProcessor(
 | 
|---|
| 7658 |   IN ULONG  MicroSeconds);
 | 
|---|
| 7659 | 
 | 
|---|
| 7660 | NTOSAPI
 | 
|---|
| 7661 | BOOLEAN
 | 
|---|
| 7662 | DDKAPI
 | 
|---|
| 7663 | KeSynchronizeExecution(
 | 
|---|
| 7664 |   IN PKINTERRUPT    Interrupt,
 | 
|---|
| 7665 |   IN PKSYNCHRONIZE_ROUTINE  SynchronizeRoutine,
 | 
|---|
| 7666 |   IN PVOID  SynchronizeContext);
 | 
|---|
| 7667 | 
 | 
|---|
| 7668 | NTOSAPI
 | 
|---|
| 7669 | NTSTATUS
 | 
|---|
| 7670 | DDKAPI
 | 
|---|
| 7671 | KeWaitForMultipleObjects(
 | 
|---|
| 7672 |   IN ULONG  Count,
 | 
|---|
| 7673 |   IN PVOID  Object[],
 | 
|---|
| 7674 |   IN WAIT_TYPE  WaitType,
 | 
|---|
| 7675 |   IN KWAIT_REASON  WaitReason,
 | 
|---|
| 7676 |   IN KPROCESSOR_MODE  WaitMode,
 | 
|---|
| 7677 |   IN BOOLEAN  Alertable,
 | 
|---|
| 7678 |   IN PLARGE_INTEGER  Timeout  OPTIONAL,
 | 
|---|
| 7679 |   IN PKWAIT_BLOCK  WaitBlockArray  OPTIONAL);
 | 
|---|
| 7680 | 
 | 
|---|
| 7681 | NTOSAPI
 | 
|---|
| 7682 | NTSTATUS
 | 
|---|
| 7683 | DDKAPI
 | 
|---|
| 7684 | KeWaitForMutexObject(
 | 
|---|
| 7685 |   IN PRKMUTEX  Mutex,
 | 
|---|
| 7686 |   IN KWAIT_REASON  WaitReason,
 | 
|---|
| 7687 |   IN KPROCESSOR_MODE  WaitMode,
 | 
|---|
| 7688 |   IN BOOLEAN  Alertable,
 | 
|---|
| 7689 |   IN PLARGE_INTEGER  Timeout  OPTIONAL);
 | 
|---|
| 7690 | 
 | 
|---|
| 7691 | NTOSAPI
 | 
|---|
| 7692 | NTSTATUS
 | 
|---|
| 7693 | DDKAPI
 | 
|---|
| 7694 | KeWaitForSingleObject(
 | 
|---|
| 7695 |   IN PVOID  Object,
 | 
|---|
| 7696 |   IN KWAIT_REASON  WaitReason,
 | 
|---|
| 7697 |   IN KPROCESSOR_MODE  WaitMode,
 | 
|---|
| 7698 |   IN BOOLEAN  Alertable,
 | 
|---|
| 7699 |   IN PLARGE_INTEGER  Timeout  OPTIONAL);
 | 
|---|
| 7700 | 
 | 
|---|
| 7701 | #if defined(_X86_)
 | 
|---|
| 7702 | 
 | 
|---|
| 7703 | NTOSAPI
 | 
|---|
| 7704 | VOID
 | 
|---|
| 7705 | FASTCALL
 | 
|---|
| 7706 | KfLowerIrql(
 | 
|---|
| 7707 |   IN KIRQL  NewIrql);
 | 
|---|
| 7708 | 
 | 
|---|
| 7709 | NTOSAPI
 | 
|---|
| 7710 | KIRQL
 | 
|---|
| 7711 | FASTCALL
 | 
|---|
| 7712 | KfRaiseIrql(
 | 
|---|
| 7713 |   IN KIRQL  NewIrql);
 | 
|---|
| 7714 | 
 | 
|---|
| 7715 | #define KeLowerIrql(a) KfLowerIrql(a)
 | 
|---|
| 7716 | #define KeRaiseIrql(a,b) *(b) = KfRaiseIrql(a)
 | 
|---|
| 7717 | 
 | 
|---|
| 7718 | #else
 | 
|---|
| 7719 | 
 | 
|---|
| 7720 | NTOSAPI
 | 
|---|
| 7721 | VOID
 | 
|---|
| 7722 | DDKAPI
 | 
|---|
| 7723 | KeLowerIrql(
 | 
|---|
| 7724 |   IN KIRQL  NewIrql);
 | 
|---|
| 7725 | 
 | 
|---|
| 7726 | NTOSAPI
 | 
|---|
| 7727 | KIRQL
 | 
|---|
| 7728 | DDKAPI
 | 
|---|
| 7729 | KeRaiseIrql(
 | 
|---|
| 7730 |   IN KIRQL  NewIrql);
 | 
|---|
| 7731 | 
 | 
|---|
| 7732 | #endif
 | 
|---|
| 7733 | 
 | 
|---|
| 7734 | NTOSAPI
 | 
|---|
| 7735 | KIRQL
 | 
|---|
| 7736 | DDKAPI
 | 
|---|
| 7737 | KeRaiseIrqlToDpcLevel(
 | 
|---|
| 7738 |   VOID);
 | 
|---|
| 7739 | 
 | 
|---|
| 7740 | /** Memory manager routines **/
 | 
|---|
| 7741 | 
 | 
|---|
| 7742 | NTOSAPI
 | 
|---|
| 7743 | NTSTATUS
 | 
|---|
| 7744 | DDKAPI
 | 
|---|
| 7745 | MmAdvanceMdl(
 | 
|---|
| 7746 |   IN PMDL  Mdl,
 | 
|---|
| 7747 |   IN ULONG  NumberOfBytes);
 | 
|---|
| 7748 | 
 | 
|---|
| 7749 | NTOSAPI
 | 
|---|
| 7750 | PVOID
 | 
|---|
| 7751 | DDKAPI
 | 
|---|
| 7752 | MmAllocateContiguousMemory(
 | 
|---|
| 7753 |   IN ULONG  NumberOfBytes,
 | 
|---|
| 7754 |   IN PHYSICAL_ADDRESS  HighestAcceptableAddress);
 | 
|---|
| 7755 | 
 | 
|---|
| 7756 | NTOSAPI
 | 
|---|
| 7757 | PVOID
 | 
|---|
| 7758 | DDKAPI
 | 
|---|
| 7759 | MmAllocateContiguousMemorySpecifyCache(
 | 
|---|
| 7760 |   IN SIZE_T  NumberOfBytes,
 | 
|---|
| 7761 |   IN PHYSICAL_ADDRESS  LowestAcceptableAddress,
 | 
|---|
| 7762 |   IN PHYSICAL_ADDRESS  HighestAcceptableAddress,
 | 
|---|
| 7763 |   IN PHYSICAL_ADDRESS  BoundaryAddressMultiple  OPTIONAL,
 | 
|---|
| 7764 |   IN MEMORY_CACHING_TYPE  CacheType);
 | 
|---|
| 7765 | 
 | 
|---|
| 7766 | NTOSAPI
 | 
|---|
| 7767 | PVOID
 | 
|---|
| 7768 | DDKAPI
 | 
|---|
| 7769 | MmAllocateMappingAddress(
 | 
|---|
| 7770 |   IN SIZE_T  NumberOfBytes,
 | 
|---|
| 7771 |   IN ULONG  PoolTag);
 | 
|---|
| 7772 | 
 | 
|---|
| 7773 | NTOSAPI
 | 
|---|
| 7774 | PVOID
 | 
|---|
| 7775 | DDKAPI
 | 
|---|
| 7776 | MmAllocateNonCachedMemory(
 | 
|---|
| 7777 |   IN ULONG  NumberOfBytes);
 | 
|---|
| 7778 | 
 | 
|---|
| 7779 | NTOSAPI
 | 
|---|
| 7780 | PMDL
 | 
|---|
| 7781 | DDKAPI
 | 
|---|
| 7782 | MmAllocatePagesForMdl(
 | 
|---|
| 7783 |   IN PHYSICAL_ADDRESS  LowAddress,
 | 
|---|
| 7784 |   IN PHYSICAL_ADDRESS  HighAddress,
 | 
|---|
| 7785 |   IN PHYSICAL_ADDRESS  SkipBytes,
 | 
|---|
| 7786 |   IN SIZE_T  TotalBytes);
 | 
|---|
| 7787 | 
 | 
|---|
| 7788 | NTOSAPI
 | 
|---|
| 7789 | VOID
 | 
|---|
| 7790 | DDKAPI
 | 
|---|
| 7791 | MmBuildMdlForNonPagedPool(
 | 
|---|
| 7792 |   IN OUT PMDL  MemoryDescriptorList);
 | 
|---|
| 7793 | 
 | 
|---|
| 7794 | NTOSAPI
 | 
|---|
| 7795 | NTSTATUS
 | 
|---|
| 7796 | DDKAPI
 | 
|---|
| 7797 | MmCreateSection(
 | 
|---|
| 7798 |   OUT PSECTION_OBJECT  *SectionObject,
 | 
|---|
| 7799 |   IN ACCESS_MASK  DesiredAccess,
 | 
|---|
| 7800 |   IN POBJECT_ATTRIBUTES  ObjectAttributes  OPTIONAL,
 | 
|---|
| 7801 |   IN PLARGE_INTEGER  MaximumSize,
 | 
|---|
| 7802 |   IN ULONG  SectionPageProtection,
 | 
|---|
| 7803 |   IN ULONG  AllocationAttributes,
 | 
|---|
| 7804 |   IN HANDLE  FileHandle  OPTIONAL,
 | 
|---|
| 7805 |   IN PFILE_OBJECT  File  OPTIONAL);
 | 
|---|
| 7806 | 
 | 
|---|
| 7807 | typedef enum _MMFLUSH_TYPE {
 | 
|---|
| 7808 |   MmFlushForDelete,
 | 
|---|
| 7809 |   MmFlushForWrite
 | 
|---|
| 7810 | } MMFLUSH_TYPE;
 | 
|---|
| 7811 | 
 | 
|---|
| 7812 | NTOSAPI
 | 
|---|
| 7813 | BOOLEAN
 | 
|---|
| 7814 | DDKAPI
 | 
|---|
| 7815 | MmFlushImageSection(
 | 
|---|
| 7816 |   IN PSECTION_OBJECT_POINTERS  SectionObjectPointer,
 | 
|---|
| 7817 |   IN MMFLUSH_TYPE  FlushType);
 | 
|---|
| 7818 | 
 | 
|---|
| 7819 | NTOSAPI
 | 
|---|
| 7820 | VOID
 | 
|---|
| 7821 | DDKAPI
 | 
|---|
| 7822 | MmFreeContiguousMemory(
 | 
|---|
| 7823 |   IN PVOID  BaseAddress);
 | 
|---|
| 7824 | 
 | 
|---|
| 7825 | NTOSAPI
 | 
|---|
| 7826 | VOID
 | 
|---|
| 7827 | DDKAPI
 | 
|---|
| 7828 | MmFreeContiguousMemorySpecifyCache(
 | 
|---|
| 7829 |   IN PVOID  BaseAddress,
 | 
|---|
| 7830 |   IN SIZE_T  NumberOfBytes,
 | 
|---|
| 7831 |   IN MEMORY_CACHING_TYPE  CacheType);
 | 
|---|
| 7832 | 
 | 
|---|
| 7833 | NTOSAPI
 | 
|---|
| 7834 | VOID
 | 
|---|
| 7835 | DDKAPI
 | 
|---|
| 7836 | MmFreeMappingAddress(
 | 
|---|
| 7837 |   IN PVOID  BaseAddress,
 | 
|---|
| 7838 |   IN ULONG  PoolTag);
 | 
|---|
| 7839 | 
 | 
|---|
| 7840 | NTOSAPI
 | 
|---|
| 7841 | VOID
 | 
|---|
| 7842 | DDKAPI
 | 
|---|
| 7843 | MmFreeNonCachedMemory(
 | 
|---|
| 7844 |   IN PVOID  BaseAddress,
 | 
|---|
| 7845 |   IN SIZE_T  NumberOfBytes);
 | 
|---|
| 7846 | 
 | 
|---|
| 7847 | NTOSAPI
 | 
|---|
| 7848 | VOID
 | 
|---|
| 7849 | DDKAPI
 | 
|---|
| 7850 | MmFreePagesFromMdl(
 | 
|---|
| 7851 |   IN PMDL  MemoryDescriptorList);
 | 
|---|
| 7852 | 
 | 
|---|
| 7853 | /*
 | 
|---|
| 7854 |  * ULONG
 | 
|---|
| 7855 |  * MmGetMdlByteCount(
 | 
|---|
| 7856 |  *   IN PMDL  Mdl)
 | 
|---|
| 7857 |  */
 | 
|---|
| 7858 | #define MmGetMdlByteCount(_Mdl) \
 | 
|---|
| 7859 |   ((_Mdl)->ByteCount)
 | 
|---|
| 7860 | 
 | 
|---|
| 7861 | /*
 | 
|---|
| 7862 |  * ULONG
 | 
|---|
| 7863 |  * MmGetMdlByteOffset(
 | 
|---|
| 7864 |  *   IN PMDL  Mdl)
 | 
|---|
| 7865 |  */
 | 
|---|
| 7866 | #define MmGetMdlByteOffset(_Mdl) \
 | 
|---|
| 7867 |   ((_Mdl)->ByteOffset)
 | 
|---|
| 7868 | 
 | 
|---|
| 7869 | /*
 | 
|---|
| 7870 |  * PPFN_NUMBER
 | 
|---|
| 7871 |  * MmGetMdlPfnArray(
 | 
|---|
| 7872 |  *   IN PMDL  Mdl)
 | 
|---|
| 7873 |  */
 | 
|---|
| 7874 | #define MmGetMdlPfnArray(_Mdl) \
 | 
|---|
| 7875 |   ((PPFN_NUMBER) ((_Mdl) + 1))
 | 
|---|
| 7876 | 
 | 
|---|
| 7877 | /*
 | 
|---|
| 7878 |  * PVOID
 | 
|---|
| 7879 |  * MmGetMdlVirtualAddress(
 | 
|---|
| 7880 |  *   IN PMDL  Mdl)
 | 
|---|
| 7881 |  */
 | 
|---|
| 7882 | #define MmGetMdlVirtualAddress(_Mdl) \
 | 
|---|
| 7883 |   ((PVOID) ((PCHAR) ((_Mdl)->StartVa) + (_Mdl)->ByteOffset))
 | 
|---|
| 7884 | 
 | 
|---|
| 7885 | NTOSAPI
 | 
|---|
| 7886 | PHYSICAL_ADDRESS
 | 
|---|
| 7887 | DDKAPI
 | 
|---|
| 7888 | MmGetPhysicalAddress(
 | 
|---|
| 7889 |   IN PVOID  BaseAddress);
 | 
|---|
| 7890 | 
 | 
|---|
| 7891 | NTOSAPI
 | 
|---|
| 7892 | PPHYSICAL_MEMORY_RANGE
 | 
|---|
| 7893 | DDKAPI
 | 
|---|
| 7894 | MmGetPhysicalMemoryRanges(
 | 
|---|
| 7895 |   VOID);
 | 
|---|
| 7896 | 
 | 
|---|
| 7897 | NTOSAPI
 | 
|---|
| 7898 | PVOID
 | 
|---|
| 7899 | DDKAPI
 | 
|---|
| 7900 | MmGetVirtualForPhysical(
 | 
|---|
| 7901 |   IN PHYSICAL_ADDRESS  PhysicalAddress);
 | 
|---|
| 7902 | 
 | 
|---|
| 7903 | NTOSAPI
 | 
|---|
| 7904 | PVOID
 | 
|---|
| 7905 | DDKAPI
 | 
|---|
| 7906 | MmMapLockedPagesSpecifyCache(
 | 
|---|
| 7907 |   IN PMDL  MemoryDescriptorList,
 | 
|---|
| 7908 |   IN KPROCESSOR_MODE  AccessMode,
 | 
|---|
| 7909 |   IN MEMORY_CACHING_TYPE  CacheType,
 | 
|---|
| 7910 |   IN PVOID  BaseAddress,
 | 
|---|
| 7911 |   IN ULONG  BugCheckOnFailure,
 | 
|---|
| 7912 |   IN MM_PAGE_PRIORITY  Priority);
 | 
|---|
| 7913 | 
 | 
|---|
| 7914 | NTOSAPI
 | 
|---|
| 7915 | PVOID
 | 
|---|
| 7916 | DDKAPI
 | 
|---|
| 7917 | MmMapLockedPagesWithReservedMapping(
 | 
|---|
| 7918 |   IN PVOID  MappingAddress,
 | 
|---|
| 7919 |   IN ULONG  PoolTag,
 | 
|---|
| 7920 |   IN PMDL  MemoryDescriptorList,
 | 
|---|
| 7921 |   IN MEMORY_CACHING_TYPE  CacheType);
 | 
|---|
| 7922 | 
 | 
|---|
| 7923 | NTOSAPI
 | 
|---|
| 7924 | NTSTATUS
 | 
|---|
| 7925 | DDKAPI
 | 
|---|
| 7926 | MmMapUserAddressesToPage(
 | 
|---|
| 7927 |   IN PVOID  BaseAddress,
 | 
|---|
| 7928 |   IN SIZE_T  NumberOfBytes,
 | 
|---|
| 7929 |   IN PVOID  PageAddress);
 | 
|---|
| 7930 | 
 | 
|---|
| 7931 | NTOSAPI
 | 
|---|
| 7932 | PVOID
 | 
|---|
| 7933 | DDKAPI
 | 
|---|
| 7934 | MmMapVideoDisplay(
 | 
|---|
| 7935 |   IN PHYSICAL_ADDRESS  PhysicalAddress,
 | 
|---|
| 7936 |   IN SIZE_T  NumberOfBytes,
 | 
|---|
| 7937 |   IN MEMORY_CACHING_TYPE  CacheType);
 | 
|---|
| 7938 | 
 | 
|---|
| 7939 | NTOSAPI
 | 
|---|
| 7940 | NTSTATUS
 | 
|---|
| 7941 | DDKAPI
 | 
|---|
| 7942 | MmMapViewInSessionSpace(
 | 
|---|
| 7943 |   IN PVOID  Section,
 | 
|---|
| 7944 |   OUT PVOID  *MappedBase,
 | 
|---|
| 7945 |   IN OUT PSIZE_T  ViewSize);
 | 
|---|
| 7946 | 
 | 
|---|
| 7947 | NTOSAPI
 | 
|---|
| 7948 | NTSTATUS
 | 
|---|
| 7949 | DDKAPI
 | 
|---|
| 7950 | MmMapViewInSystemSpace(
 | 
|---|
| 7951 |   IN PVOID  Section,
 | 
|---|
| 7952 |   OUT PVOID  *MappedBase,
 | 
|---|
| 7953 |   IN PSIZE_T  ViewSize);
 | 
|---|
| 7954 | 
 | 
|---|
| 7955 | NTOSAPI
 | 
|---|
| 7956 | NTSTATUS
 | 
|---|
| 7957 | DDKAPI
 | 
|---|
| 7958 | MmMarkPhysicalMemoryAsBad(
 | 
|---|
| 7959 |   IN PPHYSICAL_ADDRESS  StartAddress,
 | 
|---|
| 7960 |   IN OUT PLARGE_INTEGER  NumberOfBytes);
 | 
|---|
| 7961 | 
 | 
|---|
| 7962 | NTOSAPI
 | 
|---|
| 7963 | NTSTATUS
 | 
|---|
| 7964 | DDKAPI
 | 
|---|
| 7965 | MmMarkPhysicalMemoryAsGood(
 | 
|---|
| 7966 |   IN PPHYSICAL_ADDRESS  StartAddress,
 | 
|---|
| 7967 |   IN OUT PLARGE_INTEGER  NumberOfBytes);
 | 
|---|
| 7968 | 
 | 
|---|
| 7969 | /*
 | 
|---|
| 7970 |  * PVOID
 | 
|---|
| 7971 |  * MmGetSystemAddressForMdlSafe(
 | 
|---|
| 7972 |  *   IN PMDL  Mdl,
 | 
|---|
| 7973 |  *   IN MM_PAGE_PRIORITY  Priority)
 | 
|---|
| 7974 |  */
 | 
|---|
| 7975 | #define MmGetSystemAddressForMdlSafe(_Mdl, _Priority) \
 | 
|---|
| 7976 |   ((_Mdl)->MdlFlags & (MDL_MAPPED_TO_SYSTEM_VA \
 | 
|---|
| 7977 |     | MDL_SOURCE_IS_NONPAGED_POOL)) ? \
 | 
|---|
| 7978 |     (_Mdl)->MappedSystemVa : \
 | 
|---|
| 7979 |     (PVOID) MmMapLockedPagesSpecifyCache((_Mdl), \
 | 
|---|
| 7980 |       KernelMode, MmCached, NULL, FALSE, _Priority)
 | 
|---|
| 7981 | 
 | 
|---|
| 7982 | NTOSAPI
 | 
|---|
| 7983 | PVOID
 | 
|---|
| 7984 | DDKAPI
 | 
|---|
| 7985 | MmGetSystemRoutineAddress(
 | 
|---|
| 7986 |   IN PUNICODE_STRING  SystemRoutineName);
 | 
|---|
| 7987 | 
 | 
|---|
| 7988 | /*
 | 
|---|
| 7989 |  * ULONG
 | 
|---|
| 7990 |  * ADDRESS_AND_SIZE_TO_SPAN_PAGES(
 | 
|---|
| 7991 |  *   IN PVOID  Va,
 | 
|---|
| 7992 |  *   IN ULONG  Size)
 | 
|---|
| 7993 |  */
 | 
|---|
| 7994 | #define ADDRESS_AND_SIZE_TO_SPAN_PAGES(_Va, \
 | 
|---|
| 7995 |                                        _Size) \
 | 
|---|
| 7996 |   ((ULONG) ((((ULONG_PTR) (_Va) & (PAGE_SIZE - 1)) \
 | 
|---|
| 7997 |     + (_Size) + (PAGE_SIZE - 1)) >> PAGE_SHIFT))
 | 
|---|
| 7998 | 
 | 
|---|
| 7999 | /*
 | 
|---|
| 8000 |  * VOID
 | 
|---|
| 8001 |  * MmInitializeMdl(
 | 
|---|
| 8002 |  *   IN PMDL  MemoryDescriptorList,
 | 
|---|
| 8003 |  *   IN PVOID  BaseVa,
 | 
|---|
| 8004 |  *   IN SIZE_T  Length)
 | 
|---|
| 8005 |  */
 | 
|---|
| 8006 | #define MmInitializeMdl(_MemoryDescriptorList, \
 | 
|---|
| 8007 |                         _BaseVa, \
 | 
|---|
| 8008 |                         _Length) \
 | 
|---|
| 8009 | { \
 | 
|---|
| 8010 |   (_MemoryDescriptorList)->Next = (PMDL) NULL; \
 | 
|---|
| 8011 |   (_MemoryDescriptorList)->Size = (CSHORT) (sizeof(MDL) + \
 | 
|---|
| 8012 |     (sizeof(PFN_NUMBER) * ADDRESS_AND_SIZE_TO_SPAN_PAGES(_BaseVa, _Length))); \
 | 
|---|
| 8013 |   (_MemoryDescriptorList)->MdlFlags = 0; \
 | 
|---|
| 8014 |   (_MemoryDescriptorList)->StartVa = (PVOID) PAGE_ALIGN(_BaseVa); \
 | 
|---|
| 8015 |   (_MemoryDescriptorList)->ByteOffset = BYTE_OFFSET(_BaseVa); \
 | 
|---|
| 8016 |   (_MemoryDescriptorList)->ByteCount = (ULONG) _Length; \
 | 
|---|
| 8017 | }
 | 
|---|
| 8018 | 
 | 
|---|
| 8019 | NTOSAPI
 | 
|---|
| 8020 | BOOLEAN
 | 
|---|
| 8021 | DDKAPI
 | 
|---|
| 8022 | MmIsAddressValid(
 | 
|---|
| 8023 |   IN PVOID  VirtualAddress);
 | 
|---|
| 8024 | 
 | 
|---|
| 8025 | NTOSAPI
 | 
|---|
| 8026 | LOGICAL
 | 
|---|
| 8027 | DDKAPI
 | 
|---|
| 8028 | MmIsDriverVerifying(
 | 
|---|
| 8029 |   IN PDRIVER_OBJECT  DriverObject);
 | 
|---|
| 8030 | 
 | 
|---|
| 8031 | NTOSAPI
 | 
|---|
| 8032 | BOOLEAN
 | 
|---|
| 8033 | DDKAPI
 | 
|---|
| 8034 | MmIsThisAnNtAsSystem(
 | 
|---|
| 8035 |   VOID);
 | 
|---|
| 8036 | 
 | 
|---|
| 8037 | NTOSAPI
 | 
|---|
| 8038 | NTSTATUS
 | 
|---|
| 8039 | DDKAPI
 | 
|---|
| 8040 | MmIsVerifierEnabled(
 | 
|---|
| 8041 |   OUT PULONG  VerifierFlags);
 | 
|---|
| 8042 | 
 | 
|---|
| 8043 | NTOSAPI
 | 
|---|
| 8044 | PVOID
 | 
|---|
| 8045 | DDKAPI
 | 
|---|
| 8046 | MmLockPagableDataSection(
 | 
|---|
| 8047 |   IN PVOID  AddressWithinSection);
 | 
|---|
| 8048 | 
 | 
|---|
| 8049 | NTOSAPI
 | 
|---|
| 8050 | PVOID
 | 
|---|
| 8051 | DDKAPI
 | 
|---|
| 8052 | MmLockPagableImageSection(
 | 
|---|
| 8053 |   IN PVOID  AddressWithinSection);
 | 
|---|
| 8054 | 
 | 
|---|
| 8055 | /*
 | 
|---|
| 8056 |  * PVOID
 | 
|---|
| 8057 |  * MmLockPagableCodeSection(
 | 
|---|
| 8058 |  *   IN PVOID  AddressWithinSection)
 | 
|---|
| 8059 |  */
 | 
|---|
| 8060 | #define MmLockPagableCodeSection MmLockPagableDataSection
 | 
|---|
| 8061 | 
 | 
|---|
| 8062 | NTOSAPI
 | 
|---|
| 8063 | VOID
 | 
|---|
| 8064 | DDKAPI
 | 
|---|
| 8065 | MmLockPagableSectionByHandle(
 | 
|---|
| 8066 |   IN PVOID  ImageSectionHandle);
 | 
|---|
| 8067 | 
 | 
|---|
| 8068 | NTOSAPI
 | 
|---|
| 8069 | PVOID
 | 
|---|
| 8070 | DDKAPI
 | 
|---|
| 8071 | MmMapIoSpace(
 | 
|---|
| 8072 |   IN PHYSICAL_ADDRESS  PhysicalAddress,
 | 
|---|
| 8073 |   IN ULONG  NumberOfBytes,
 | 
|---|
| 8074 |   IN MEMORY_CACHING_TYPE  CacheEnable);
 | 
|---|
| 8075 | 
 | 
|---|
| 8076 | NTOSAPI
 | 
|---|
| 8077 | PVOID
 | 
|---|
| 8078 | DDKAPI
 | 
|---|
| 8079 | MmMapLockedPages(
 | 
|---|
| 8080 |   IN PMDL  MemoryDescriptorList,
 | 
|---|
| 8081 |   IN KPROCESSOR_MODE  AccessMode);
 | 
|---|
| 8082 | 
 | 
|---|
| 8083 | NTOSAPI
 | 
|---|
| 8084 | VOID
 | 
|---|
| 8085 | DDKAPI
 | 
|---|
| 8086 | MmPageEntireDriver(
 | 
|---|
| 8087 |   IN PVOID  AddressWithinSection);
 | 
|---|
| 8088 | 
 | 
|---|
| 8089 | NTOSAPI
 | 
|---|
| 8090 | VOID
 | 
|---|
| 8091 | DDKAPI
 | 
|---|
| 8092 | MmProbeAndLockProcessPages(
 | 
|---|
| 8093 |   IN OUT PMDL  MemoryDescriptorList,
 | 
|---|
| 8094 |   IN PEPROCESS  Process,
 | 
|---|
| 8095 |   IN KPROCESSOR_MODE  AccessMode,
 | 
|---|
| 8096 |   IN LOCK_OPERATION  Operation);
 | 
|---|
| 8097 | 
 | 
|---|
| 8098 | NTOSAPI
 | 
|---|
| 8099 | NTSTATUS
 | 
|---|
| 8100 | DDKAPI
 | 
|---|
| 8101 | MmProtectMdlSystemAddress(
 | 
|---|
| 8102 |   IN PMDL  MemoryDescriptorList,
 | 
|---|
| 8103 |   IN ULONG  NewProtect);
 | 
|---|
| 8104 | 
 | 
|---|
| 8105 | NTOSAPI
 | 
|---|
| 8106 | VOID
 | 
|---|
| 8107 | DDKAPI
 | 
|---|
| 8108 | MmUnmapLockedPages(
 | 
|---|
| 8109 |   IN PVOID  BaseAddress,
 | 
|---|
| 8110 |   IN PMDL  MemoryDescriptorList);
 | 
|---|
| 8111 | 
 | 
|---|
| 8112 | NTOSAPI
 | 
|---|
| 8113 | NTSTATUS
 | 
|---|
| 8114 | DDKAPI
 | 
|---|
| 8115 | MmUnmapViewInSessionSpace(
 | 
|---|
| 8116 |   IN PVOID  MappedBase);
 | 
|---|
| 8117 | 
 | 
|---|
| 8118 | NTOSAPI
 | 
|---|
| 8119 | NTSTATUS
 | 
|---|
| 8120 | DDKAPI
 | 
|---|
| 8121 | MmUnmapViewInSystemSpace(
 | 
|---|
| 8122 |   IN PVOID MappedBase);
 | 
|---|
| 8123 | 
 | 
|---|
| 8124 | NTOSAPI
 | 
|---|
| 8125 | VOID
 | 
|---|
| 8126 | DDKAPI
 | 
|---|
| 8127 | MmUnsecureVirtualMemory(
 | 
|---|
| 8128 |   IN HANDLE  SecureHandle);
 | 
|---|
| 8129 | 
 | 
|---|
| 8130 | /*
 | 
|---|
| 8131 |  * VOID
 | 
|---|
| 8132 |  * MmPrepareMdlForReuse(
 | 
|---|
| 8133 |  *   IN PMDL  Mdl)
 | 
|---|
| 8134 |  */
 | 
|---|
| 8135 | #define MmPrepareMdlForReuse(_Mdl) \
 | 
|---|
| 8136 | { \
 | 
|---|
| 8137 |   if (((_Mdl)->MdlFlags & MDL_PARTIAL_HAS_BEEN_MAPPED) != 0) { \
 | 
|---|
| 8138 |     ASSERT(((_Mdl)->MdlFlags & MDL_PARTIAL) != 0); \
 | 
|---|
| 8139 |     MmUnmapLockedPages((_Mdl)->MappedSystemVa, (_Mdl)); \
 | 
|---|
| 8140 |   } else if (((_Mdl)->MdlFlags & MDL_PARTIAL) == 0) { \
 | 
|---|
| 8141 |     ASSERT(((_Mdl)->MdlFlags & MDL_MAPPED_TO_SYSTEM_VA) == 0); \
 | 
|---|
| 8142 |   } \
 | 
|---|
| 8143 | }
 | 
|---|
| 8144 | 
 | 
|---|
| 8145 | NTOSAPI
 | 
|---|
| 8146 | VOID
 | 
|---|
| 8147 | DDKAPI
 | 
|---|
| 8148 | MmProbeAndLockPages(
 | 
|---|
| 8149 |   IN OUT PMDL  MemoryDescriptorList,
 | 
|---|
| 8150 |   IN KPROCESSOR_MODE  AccessMode,
 | 
|---|
| 8151 |   IN LOCK_OPERATION  Operation);
 | 
|---|
| 8152 | 
 | 
|---|
| 8153 | NTOSAPI
 | 
|---|
| 8154 | MM_SYSTEM_SIZE
 | 
|---|
| 8155 | DDKAPI
 | 
|---|
| 8156 | MmQuerySystemSize(
 | 
|---|
| 8157 |   VOID);
 | 
|---|
| 8158 | 
 | 
|---|
| 8159 | NTOSAPI
 | 
|---|
| 8160 | NTSTATUS
 | 
|---|
| 8161 | DDKAPI
 | 
|---|
| 8162 | MmRemovePhysicalMemory(
 | 
|---|
| 8163 |   IN PPHYSICAL_ADDRESS  StartAddress,
 | 
|---|
| 8164 |   IN OUT PLARGE_INTEGER  NumberOfBytes);
 | 
|---|
| 8165 | 
 | 
|---|
| 8166 | NTOSAPI
 | 
|---|
| 8167 | VOID
 | 
|---|
| 8168 | DDKAPI
 | 
|---|
| 8169 | MmResetDriverPaging(
 | 
|---|
| 8170 |   IN PVOID  AddressWithinSection);
 | 
|---|
| 8171 | 
 | 
|---|
| 8172 | NTOSAPI
 | 
|---|
| 8173 | HANDLE
 | 
|---|
| 8174 | DDKAPI
 | 
|---|
| 8175 | MmSecureVirtualMemory(
 | 
|---|
| 8176 |   IN PVOID  Address,
 | 
|---|
| 8177 |   IN SIZE_T  Size,
 | 
|---|
| 8178 |   IN ULONG  ProbeMode);
 | 
|---|
| 8179 | 
 | 
|---|
| 8180 | NTOSAPI
 | 
|---|
| 8181 | ULONG
 | 
|---|
| 8182 | DDKAPI
 | 
|---|
| 8183 | MmSizeOfMdl(
 | 
|---|
| 8184 |   IN PVOID  Base,
 | 
|---|
| 8185 |   IN SIZE_T  Length);
 | 
|---|
| 8186 | 
 | 
|---|
| 8187 | NTOSAPI
 | 
|---|
| 8188 | VOID
 | 
|---|
| 8189 | DDKAPI
 | 
|---|
| 8190 | MmUnlockPagableImageSection(
 | 
|---|
| 8191 |   IN PVOID  ImageSectionHandle);
 | 
|---|
| 8192 | 
 | 
|---|
| 8193 | NTOSAPI
 | 
|---|
| 8194 | VOID
 | 
|---|
| 8195 | DDKAPI
 | 
|---|
| 8196 | MmUnlockPages(
 | 
|---|
| 8197 |   IN PMDL  MemoryDescriptorList);
 | 
|---|
| 8198 | 
 | 
|---|
| 8199 | NTOSAPI
 | 
|---|
| 8200 | VOID
 | 
|---|
| 8201 | DDKAPI
 | 
|---|
| 8202 | MmUnmapIoSpace(
 | 
|---|
| 8203 |   IN PVOID  BaseAddress,
 | 
|---|
| 8204 |   IN SIZE_T  NumberOfBytes);
 | 
|---|
| 8205 | 
 | 
|---|
| 8206 | NTOSAPI
 | 
|---|
| 8207 | VOID
 | 
|---|
| 8208 | DDKAPI
 | 
|---|
| 8209 | MmUnmapReservedMapping(
 | 
|---|
| 8210 |   IN PVOID  BaseAddress,
 | 
|---|
| 8211 |   IN ULONG  PoolTag,
 | 
|---|
| 8212 |   IN PMDL  MemoryDescriptorList);
 | 
|---|
| 8213 | 
 | 
|---|
| 8214 | NTOSAPI
 | 
|---|
| 8215 | VOID
 | 
|---|
| 8216 | DDKAPI
 | 
|---|
| 8217 | MmUnmapVideoDisplay(
 | 
|---|
| 8218 |   IN PVOID  BaseAddress,
 | 
|---|
| 8219 |   IN SIZE_T  NumberOfBytes);
 | 
|---|
| 8220 | 
 | 
|---|
| 8221 | 
 | 
|---|
| 8222 | 
 | 
|---|
| 8223 | /** Object manager routines **/
 | 
|---|
| 8224 | 
 | 
|---|
| 8225 | NTOSAPI
 | 
|---|
| 8226 | NTSTATUS
 | 
|---|
| 8227 | DDKAPI
 | 
|---|
| 8228 | ObAssignSecurity(
 | 
|---|
| 8229 |   IN PACCESS_STATE  AccessState,
 | 
|---|
| 8230 |   IN PSECURITY_DESCRIPTOR  SecurityDescriptor,
 | 
|---|
| 8231 |   IN PVOID  Object,
 | 
|---|
| 8232 |   IN POBJECT_TYPE  Type);
 | 
|---|
| 8233 | 
 | 
|---|
| 8234 | NTOSAPI
 | 
|---|
| 8235 | VOID
 | 
|---|
| 8236 | DDKAPI
 | 
|---|
| 8237 | ObDereferenceSecurityDescriptor(
 | 
|---|
| 8238 |   PSECURITY_DESCRIPTOR  SecurityDescriptor,
 | 
|---|
| 8239 |   ULONG  Count);
 | 
|---|
| 8240 | 
 | 
|---|
| 8241 | NTOSAPI
 | 
|---|
| 8242 | VOID
 | 
|---|
| 8243 | DDKFASTAPI
 | 
|---|
| 8244 | ObfDereferenceObject(
 | 
|---|
| 8245 |   IN PVOID  Object);
 | 
|---|
| 8246 | 
 | 
|---|
| 8247 | /*
 | 
|---|
| 8248 |  * VOID
 | 
|---|
| 8249 |  * ObDereferenceObject(
 | 
|---|
| 8250 |  *   IN PVOID  Object)
 | 
|---|
| 8251 |  */
 | 
|---|
| 8252 | #define ObDereferenceObject ObfDereferenceObject
 | 
|---|
| 8253 | 
 | 
|---|
| 8254 | NTOSAPI
 | 
|---|
| 8255 | NTSTATUS
 | 
|---|
| 8256 | DDKAPI
 | 
|---|
| 8257 | ObGetObjectSecurity(
 | 
|---|
| 8258 |   IN PVOID  Object,
 | 
|---|
| 8259 |   OUT PSECURITY_DESCRIPTOR  *SecurityDescriptor,
 | 
|---|
| 8260 |   OUT PBOOLEAN  MemoryAllocated); 
 | 
|---|
| 8261 | 
 | 
|---|
| 8262 | NTOSAPI
 | 
|---|
| 8263 | NTSTATUS
 | 
|---|
| 8264 | DDKAPI
 | 
|---|
| 8265 | ObInsertObject(
 | 
|---|
| 8266 |   IN PVOID  Object,
 | 
|---|
| 8267 |   IN PACCESS_STATE  PassedAccessState  OPTIONAL,
 | 
|---|
| 8268 |   IN ACCESS_MASK  DesiredAccess,
 | 
|---|
| 8269 |   IN ULONG  AdditionalReferences,
 | 
|---|
| 8270 |   OUT PVOID*  ReferencedObject  OPTIONAL,
 | 
|---|
| 8271 |   OUT PHANDLE  Handle);
 | 
|---|
| 8272 | 
 | 
|---|
| 8273 | NTOSAPI
 | 
|---|
| 8274 | VOID
 | 
|---|
| 8275 | DDKFASTAPI
 | 
|---|
| 8276 | ObfReferenceObject(
 | 
|---|
| 8277 |   IN PVOID  Object);
 | 
|---|
| 8278 | 
 | 
|---|
| 8279 | NTOSAPI
 | 
|---|
| 8280 | NTSTATUS
 | 
|---|
| 8281 | DDKAPI
 | 
|---|
| 8282 | ObLogSecurityDescriptor(
 | 
|---|
| 8283 |   IN PSECURITY_DESCRIPTOR  InputSecurityDescriptor,
 | 
|---|
| 8284 |   OUT PSECURITY_DESCRIPTOR  *OutputSecurityDescriptor,
 | 
|---|
| 8285 |   IN ULONG RefBias);
 | 
|---|
| 8286 | /*
 | 
|---|
| 8287 |  * VOID
 | 
|---|
| 8288 |  * ObReferenceObject(
 | 
|---|
| 8289 |  *   IN PVOID  Object)
 | 
|---|
| 8290 |  */
 | 
|---|
| 8291 | #define ObReferenceObject ObfReferenceObject
 | 
|---|
| 8292 | 
 | 
|---|
| 8293 | NTOSAPI
 | 
|---|
| 8294 | VOID
 | 
|---|
| 8295 | DDKAPI
 | 
|---|
| 8296 | ObMakeTemporaryObject(
 | 
|---|
| 8297 |   IN PVOID  Object);
 | 
|---|
| 8298 | 
 | 
|---|
| 8299 | NTOSAPI
 | 
|---|
| 8300 | NTSTATUS
 | 
|---|
| 8301 | DDKAPI
 | 
|---|
| 8302 | ObOpenObjectByName(
 | 
|---|
| 8303 |   IN POBJECT_ATTRIBUTES  ObjectAttributes,
 | 
|---|
| 8304 |   IN POBJECT_TYPE  ObjectType,
 | 
|---|
| 8305 |   IN OUT PVOID  ParseContext  OPTIONAL,
 | 
|---|
| 8306 |   IN KPROCESSOR_MODE  AccessMode,
 | 
|---|
| 8307 |   IN ACCESS_MASK  DesiredAccess,
 | 
|---|
| 8308 |   IN PACCESS_STATE  PassedAccessState,
 | 
|---|
| 8309 |   OUT PHANDLE  Handle);
 | 
|---|
| 8310 | 
 | 
|---|
| 8311 | NTOSAPI
 | 
|---|
| 8312 | NTSTATUS
 | 
|---|
| 8313 | DDKAPI
 | 
|---|
| 8314 | ObOpenObjectByPointer(
 | 
|---|
| 8315 |   IN PVOID  Object,
 | 
|---|
| 8316 |   IN ULONG  HandleAttributes,
 | 
|---|
| 8317 |   IN PACCESS_STATE  PassedAccessState  OPTIONAL,
 | 
|---|
| 8318 |   IN ACCESS_MASK  DesiredAccess  OPTIONAL,
 | 
|---|
| 8319 |   IN POBJECT_TYPE  ObjectType  OPTIONAL,
 | 
|---|
| 8320 |   IN KPROCESSOR_MODE  AccessMode,
 | 
|---|
| 8321 |   OUT PHANDLE  Handle);
 | 
|---|
| 8322 | 
 | 
|---|
| 8323 | NTOSAPI
 | 
|---|
| 8324 | NTSTATUS
 | 
|---|
| 8325 | DDKAPI
 | 
|---|
| 8326 | ObQueryObjectAuditingByHandle(
 | 
|---|
| 8327 |   IN HANDLE  Handle,
 | 
|---|
| 8328 |   OUT PBOOLEAN  GenerateOnClose);
 | 
|---|
| 8329 | 
 | 
|---|
| 8330 | NTOSAPI
 | 
|---|
| 8331 | NTSTATUS
 | 
|---|
| 8332 | DDKAPI
 | 
|---|
| 8333 | ObReferenceObjectByHandle(
 | 
|---|
| 8334 |   IN HANDLE  Handle,
 | 
|---|
| 8335 |   IN ACCESS_MASK  DesiredAccess,
 | 
|---|
| 8336 |   IN POBJECT_TYPE  ObjectType  OPTIONAL,
 | 
|---|
| 8337 |   IN KPROCESSOR_MODE  AccessMode,
 | 
|---|
| 8338 |   OUT PVOID  *Object,
 | 
|---|
| 8339 |   OUT POBJECT_HANDLE_INFORMATION  HandleInformation  OPTIONAL);
 | 
|---|
| 8340 | 
 | 
|---|
| 8341 | NTOSAPI
 | 
|---|
| 8342 | NTSTATUS
 | 
|---|
| 8343 | DDKAPI
 | 
|---|
| 8344 | ObReferenceObjectByName(
 | 
|---|
| 8345 |   IN PUNICODE_STRING  ObjectPath,
 | 
|---|
| 8346 |   IN ULONG  Attributes,
 | 
|---|
| 8347 |   IN PACCESS_STATE  PassedAccessState  OPTIONAL,
 | 
|---|
| 8348 |   IN ACCESS_MASK  DesiredAccess  OPTIONAL,
 | 
|---|
| 8349 |   IN POBJECT_TYPE  ObjectType,
 | 
|---|
| 8350 |   IN KPROCESSOR_MODE  AccessMode,
 | 
|---|
| 8351 |   IN OUT PVOID  ParseContext  OPTIONAL,
 | 
|---|
| 8352 |   OUT PVOID  *Object);
 | 
|---|
| 8353 | 
 | 
|---|
| 8354 | NTOSAPI
 | 
|---|
| 8355 | NTSTATUS
 | 
|---|
| 8356 | DDKAPI
 | 
|---|
| 8357 | ObReferenceObjectByPointer(
 | 
|---|
| 8358 |   IN PVOID  Object,
 | 
|---|
| 8359 |   IN ACCESS_MASK  DesiredAccess,
 | 
|---|
| 8360 |   IN POBJECT_TYPE  ObjectType,
 | 
|---|
| 8361 |   IN KPROCESSOR_MODE  AccessMode);
 | 
|---|
| 8362 | 
 | 
|---|
| 8363 | NTOSAPI
 | 
|---|
| 8364 | VOID
 | 
|---|
| 8365 | DDKAPI
 | 
|---|
| 8366 | ObReferenceSecurityDescriptor(
 | 
|---|
| 8367 |   IN PSECURITY_DESCRIPTOR  SecurityDescriptor,
 | 
|---|
| 8368 |   IN ULONG  Count);
 | 
|---|
| 8369 | 
 | 
|---|
| 8370 | NTOSAPI
 | 
|---|
| 8371 | VOID
 | 
|---|
| 8372 | DDKAPI
 | 
|---|
| 8373 | ObReleaseObjectSecurity(
 | 
|---|
| 8374 |   IN PSECURITY_DESCRIPTOR  SecurityDescriptor,
 | 
|---|
| 8375 |   IN BOOLEAN  MemoryAllocated);
 | 
|---|
| 8376 | 
 | 
|---|
| 8377 | 
 | 
|---|
| 8378 | 
 | 
|---|
| 8379 | /** Process manager routines **/
 | 
|---|
| 8380 | 
 | 
|---|
| 8381 | NTOSAPI
 | 
|---|
| 8382 | NTSTATUS
 | 
|---|
| 8383 | DDKAPI
 | 
|---|
| 8384 | PsCreateSystemProcess(
 | 
|---|
| 8385 |   IN PHANDLE  ProcessHandle,
 | 
|---|
| 8386 |   IN ACCESS_MASK  DesiredAccess,
 | 
|---|
| 8387 |   IN POBJECT_ATTRIBUTES  ObjectAttributes);
 | 
|---|
| 8388 | 
 | 
|---|
| 8389 | NTOSAPI
 | 
|---|
| 8390 | NTSTATUS
 | 
|---|
| 8391 | DDKAPI
 | 
|---|
| 8392 | PsCreateSystemThread(
 | 
|---|
| 8393 |   OUT PHANDLE  ThreadHandle,
 | 
|---|
| 8394 |   IN ULONG  DesiredAccess,
 | 
|---|
| 8395 |   IN POBJECT_ATTRIBUTES  ObjectAttributes  OPTIONAL,
 | 
|---|
| 8396 |   IN HANDLE  ProcessHandle  OPTIONAL,
 | 
|---|
| 8397 |   OUT PCLIENT_ID  ClientId  OPTIONAL,
 | 
|---|
| 8398 |   IN PKSTART_ROUTINE  StartRoutine,
 | 
|---|
| 8399 |   IN PVOID  StartContext);
 | 
|---|
| 8400 | 
 | 
|---|
| 8401 | /*
 | 
|---|
| 8402 |  * PEPROCESS
 | 
|---|
| 8403 |  * PsGetCurrentProcess(VOID)
 | 
|---|
| 8404 |  */
 | 
|---|
| 8405 | #define PsGetCurrentProcess IoGetCurrentProcess
 | 
|---|
| 8406 | 
 | 
|---|
| 8407 | NTOSAPI
 | 
|---|
| 8408 | HANDLE
 | 
|---|
| 8409 | DDKAPI
 | 
|---|
| 8410 | PsGetCurrentProcessId(
 | 
|---|
| 8411 |   VOID);
 | 
|---|
| 8412 | 
 | 
|---|
| 8413 | /*
 | 
|---|
| 8414 |  * PETHREAD
 | 
|---|
| 8415 |  * PsGetCurrentThread(VOID)
 | 
|---|
| 8416 |  */
 | 
|---|
| 8417 | #define PsGetCurrentThread() \
 | 
|---|
| 8418 |   ((PETHREAD) KeGetCurrentThread())
 | 
|---|
| 8419 | 
 | 
|---|
| 8420 | NTOSAPI
 | 
|---|
| 8421 | HANDLE
 | 
|---|
| 8422 | DDKAPI
 | 
|---|
| 8423 | PsGetCurrentThreadId(
 | 
|---|
| 8424 |   VOID);
 | 
|---|
| 8425 | 
 | 
|---|
| 8426 | NTOSAPI
 | 
|---|
| 8427 | BOOLEAN
 | 
|---|
| 8428 | DDKAPI
 | 
|---|
| 8429 | PsGetVersion(
 | 
|---|
| 8430 |   PULONG  MajorVersion  OPTIONAL,
 | 
|---|
| 8431 |   PULONG  MinorVersion  OPTIONAL,
 | 
|---|
| 8432 |   PULONG  BuildNumber  OPTIONAL,
 | 
|---|
| 8433 |   PUNICODE_STRING  CSDVersion  OPTIONAL);
 | 
|---|
| 8434 | 
 | 
|---|
| 8435 | NTOSAPI
 | 
|---|
| 8436 | NTSTATUS
 | 
|---|
| 8437 | DDKAPI
 | 
|---|
| 8438 | PsRemoveCreateThreadNotifyRoutine(
 | 
|---|
| 8439 |   IN PCREATE_THREAD_NOTIFY_ROUTINE  NotifyRoutine);
 | 
|---|
| 8440 | 
 | 
|---|
| 8441 | NTOSAPI
 | 
|---|
| 8442 | NTSTATUS
 | 
|---|
| 8443 | DDKAPI
 | 
|---|
| 8444 | PsRemoveLoadImageNotifyRoutine(
 | 
|---|
| 8445 |   IN PLOAD_IMAGE_NOTIFY_ROUTINE  NotifyRoutine);
 | 
|---|
| 8446 | 
 | 
|---|
| 8447 | NTOSAPI
 | 
|---|
| 8448 | NTSTATUS
 | 
|---|
| 8449 | DDKAPI
 | 
|---|
| 8450 | PsSetCreateProcessNotifyRoutine(
 | 
|---|
| 8451 |   IN PCREATE_PROCESS_NOTIFY_ROUTINE  NotifyRoutine,
 | 
|---|
| 8452 |   IN BOOLEAN  Remove);
 | 
|---|
| 8453 | 
 | 
|---|
| 8454 | NTOSAPI
 | 
|---|
| 8455 | NTSTATUS
 | 
|---|
| 8456 | DDKAPI
 | 
|---|
| 8457 | PsSetCreateThreadNotifyRoutine(
 | 
|---|
| 8458 |   IN PCREATE_THREAD_NOTIFY_ROUTINE  NotifyRoutine);
 | 
|---|
| 8459 | 
 | 
|---|
| 8460 | NTOSAPI
 | 
|---|
| 8461 | NTSTATUS
 | 
|---|
| 8462 | DDKAPI
 | 
|---|
| 8463 | PsSetLoadImageNotifyRoutine(
 | 
|---|
| 8464 |   IN PLOAD_IMAGE_NOTIFY_ROUTINE  NotifyRoutine);
 | 
|---|
| 8465 | 
 | 
|---|
| 8466 | NTOSAPI
 | 
|---|
| 8467 | NTSTATUS
 | 
|---|
| 8468 | DDKAPI
 | 
|---|
| 8469 | PsTerminateSystemThread(
 | 
|---|
| 8470 |   IN NTSTATUS  ExitStatus);
 | 
|---|
| 8471 | 
 | 
|---|
| 8472 | 
 | 
|---|
| 8473 | 
 | 
|---|
| 8474 | /** Security reference monitor routines **/
 | 
|---|
| 8475 | 
 | 
|---|
| 8476 | NTOSAPI
 | 
|---|
| 8477 | BOOLEAN
 | 
|---|
| 8478 | DDKAPI
 | 
|---|
| 8479 | SeAccessCheck(
 | 
|---|
| 8480 |   IN PSECURITY_DESCRIPTOR  SecurityDescriptor,
 | 
|---|
| 8481 |   IN PSECURITY_SUBJECT_CONTEXT  SubjectSecurityContext,
 | 
|---|
| 8482 |   IN BOOLEAN  SubjectContextLocked,
 | 
|---|
| 8483 |   IN ACCESS_MASK  DesiredAccess,
 | 
|---|
| 8484 |   IN ACCESS_MASK  PreviouslyGrantedAccess,
 | 
|---|
| 8485 |   OUT PPRIVILEGE_SET  *Privileges  OPTIONAL,
 | 
|---|
| 8486 |   IN PGENERIC_MAPPING  GenericMapping,
 | 
|---|
| 8487 |   IN KPROCESSOR_MODE  AccessMode,
 | 
|---|
| 8488 |   OUT PACCESS_MASK  GrantedAccess,
 | 
|---|
| 8489 |   OUT PNTSTATUS  AccessStatus);
 | 
|---|
| 8490 | 
 | 
|---|
| 8491 | NTOSAPI
 | 
|---|
| 8492 | NTSTATUS
 | 
|---|
| 8493 | DDKAPI
 | 
|---|
| 8494 | SeAssignSecurity(
 | 
|---|
| 8495 |   IN PSECURITY_DESCRIPTOR  ParentDescriptor  OPTIONAL,
 | 
|---|
| 8496 |   IN PSECURITY_DESCRIPTOR  ExplicitDescriptor  OPTIONAL,
 | 
|---|
| 8497 |   OUT PSECURITY_DESCRIPTOR  *NewDescriptor,
 | 
|---|
| 8498 |   IN BOOLEAN  IsDirectoryObject,
 | 
|---|
| 8499 |   IN PSECURITY_SUBJECT_CONTEXT  SubjectContext,
 | 
|---|
| 8500 |   IN PGENERIC_MAPPING  GenericMapping,
 | 
|---|
| 8501 |   IN POOL_TYPE  PoolType);
 | 
|---|
| 8502 | 
 | 
|---|
| 8503 | NTOSAPI
 | 
|---|
| 8504 | NTSTATUS
 | 
|---|
| 8505 | DDKAPI
 | 
|---|
| 8506 | SeAssignSecurityEx(
 | 
|---|
| 8507 |   IN PSECURITY_DESCRIPTOR  ParentDescriptor  OPTIONAL,
 | 
|---|
| 8508 |   IN PSECURITY_DESCRIPTOR  ExplicitDescriptor  OPTIONAL,
 | 
|---|
| 8509 |   OUT PSECURITY_DESCRIPTOR  *NewDescriptor,
 | 
|---|
| 8510 |   IN GUID  *ObjectType  OPTIONAL,
 | 
|---|
| 8511 |   IN BOOLEAN  IsDirectoryObject,
 | 
|---|
| 8512 |   IN ULONG  AutoInheritFlags,
 | 
|---|
| 8513 |   IN PSECURITY_SUBJECT_CONTEXT  SubjectContext,
 | 
|---|
| 8514 |   IN PGENERIC_MAPPING  GenericMapping,
 | 
|---|
| 8515 |   IN POOL_TYPE  PoolType);
 | 
|---|
| 8516 | 
 | 
|---|
| 8517 | NTOSAPI
 | 
|---|
| 8518 | NTSTATUS
 | 
|---|
| 8519 | DDKAPI
 | 
|---|
| 8520 | SeDeassignSecurity(
 | 
|---|
| 8521 |   IN OUT PSECURITY_DESCRIPTOR  *SecurityDescriptor);
 | 
|---|
| 8522 | 
 | 
|---|
| 8523 | NTOSAPI
 | 
|---|
| 8524 | BOOLEAN
 | 
|---|
| 8525 | DDKAPI
 | 
|---|
| 8526 | SeSinglePrivilegeCheck(
 | 
|---|
| 8527 |   LUID  PrivilegeValue,
 | 
|---|
| 8528 |   KPROCESSOR_MODE  PreviousMode);
 | 
|---|
| 8529 | 
 | 
|---|
| 8530 | NTOSAPI
 | 
|---|
| 8531 | BOOLEAN
 | 
|---|
| 8532 | DDKAPI
 | 
|---|
| 8533 | SeValidSecurityDescriptor(
 | 
|---|
| 8534 |   IN ULONG  Length,
 | 
|---|
| 8535 |   IN PSECURITY_DESCRIPTOR  SecurityDescriptor);
 | 
|---|
| 8536 | 
 | 
|---|
| 8537 | 
 | 
|---|
| 8538 | 
 | 
|---|
| 8539 | /** NtXxx routines **/
 | 
|---|
| 8540 | 
 | 
|---|
| 8541 | NTOSAPI
 | 
|---|
| 8542 | NTSTATUS
 | 
|---|
| 8543 | DDKAPI
 | 
|---|
| 8544 | NtOpenProcess(
 | 
|---|
| 8545 |   OUT PHANDLE  ProcessHandle,
 | 
|---|
| 8546 |   IN ACCESS_MASK  DesiredAccess,
 | 
|---|
| 8547 |   IN POBJECT_ATTRIBUTES  ObjectAttributes,
 | 
|---|
| 8548 |   IN PCLIENT_ID  ClientId  OPTIONAL);
 | 
|---|
| 8549 | 
 | 
|---|
| 8550 | NTOSAPI
 | 
|---|
| 8551 | NTSTATUS
 | 
|---|
| 8552 | DDKAPI
 | 
|---|
| 8553 | NtQueryInformationProcess(
 | 
|---|
| 8554 |   IN HANDLE  ProcessHandle,
 | 
|---|
| 8555 |   IN PROCESSINFOCLASS  ProcessInformationClass,
 | 
|---|
| 8556 |   OUT PVOID  ProcessInformation,
 | 
|---|
| 8557 |   IN ULONG  ProcessInformationLength,
 | 
|---|
| 8558 |   OUT PULONG  ReturnLength OPTIONAL);
 | 
|---|
| 8559 | 
 | 
|---|
| 8560 | 
 | 
|---|
| 8561 | 
 | 
|---|
| 8562 | /** NtXxx and ZwXxx routines **/
 | 
|---|
| 8563 | 
 | 
|---|
| 8564 | NTOSAPI
 | 
|---|
| 8565 | NTSTATUS
 | 
|---|
| 8566 | DDKAPI
 | 
|---|
| 8567 | ZwCancelTimer(
 | 
|---|
| 8568 |   IN HANDLE  TimerHandle,
 | 
|---|
| 8569 |   OUT PBOOLEAN  CurrentState  OPTIONAL);
 | 
|---|
| 8570 | 
 | 
|---|
| 8571 | NTOSAPI
 | 
|---|
| 8572 | NTSTATUS
 | 
|---|
| 8573 | DDKAPI
 | 
|---|
| 8574 | NtClose(
 | 
|---|
| 8575 |   IN HANDLE  Handle);
 | 
|---|
| 8576 | 
 | 
|---|
| 8577 | NTOSAPI
 | 
|---|
| 8578 | NTSTATUS
 | 
|---|
| 8579 | DDKAPI
 | 
|---|
| 8580 | ZwClose(
 | 
|---|
| 8581 |   IN HANDLE  Handle);
 | 
|---|
| 8582 | 
 | 
|---|
| 8583 | NTOSAPI
 | 
|---|
| 8584 | NTSTATUS
 | 
|---|
| 8585 | DDKAPI
 | 
|---|
| 8586 | ZwCreateDirectoryObject(
 | 
|---|
| 8587 |   OUT PHANDLE  DirectoryHandle,
 | 
|---|
| 8588 |   IN ACCESS_MASK  DesiredAccess,
 | 
|---|
| 8589 |   IN POBJECT_ATTRIBUTES  ObjectAttributes);
 | 
|---|
| 8590 | 
 | 
|---|
| 8591 | NTOSAPI
 | 
|---|
| 8592 | NTSTATUS
 | 
|---|
| 8593 | DDKAPI
 | 
|---|
| 8594 | NtCreateEvent(
 | 
|---|
| 8595 |   OUT PHANDLE  EventHandle,
 | 
|---|
| 8596 |   IN ACCESS_MASK  DesiredAccess,
 | 
|---|
| 8597 |   IN POBJECT_ATTRIBUTES  ObjectAttributes,
 | 
|---|
| 8598 |   IN BOOLEAN  ManualReset,
 | 
|---|
| 8599 |   IN BOOLEAN  InitialState);
 | 
|---|
| 8600 | 
 | 
|---|
| 8601 | NTOSAPI
 | 
|---|
| 8602 | NTSTATUS
 | 
|---|
| 8603 | DDKAPI
 | 
|---|
| 8604 | ZwCreateEvent(
 | 
|---|
| 8605 |   OUT PHANDLE  EventHandle,
 | 
|---|
| 8606 |   IN ACCESS_MASK  DesiredAccess,
 | 
|---|
| 8607 |   IN POBJECT_ATTRIBUTES  ObjectAttributes,
 | 
|---|
| 8608 |   IN BOOLEAN  ManualReset,
 | 
|---|
| 8609 |   IN BOOLEAN  InitialState);
 | 
|---|
| 8610 | 
 | 
|---|
| 8611 | NTOSAPI
 | 
|---|
| 8612 | NTSTATUS
 | 
|---|
| 8613 | DDKAPI
 | 
|---|
| 8614 | ZwCreateFile(
 | 
|---|
| 8615 |   OUT PHANDLE  FileHandle,
 | 
|---|
| 8616 |   IN ACCESS_MASK  DesiredAccess,
 | 
|---|
| 8617 |   IN POBJECT_ATTRIBUTES  ObjectAttributes,
 | 
|---|
| 8618 |   OUT PIO_STATUS_BLOCK  IoStatusBlock,
 | 
|---|
| 8619 |   IN PLARGE_INTEGER  AllocationSize  OPTIONAL,
 | 
|---|
| 8620 |   IN ULONG  FileAttributes,
 | 
|---|
| 8621 |   IN ULONG  ShareAccess,
 | 
|---|
| 8622 |   IN ULONG  CreateDisposition,
 | 
|---|
| 8623 |   IN ULONG  CreateOptions,
 | 
|---|
| 8624 |   IN PVOID  EaBuffer  OPTIONAL,
 | 
|---|
| 8625 |   IN ULONG  EaLength);
 | 
|---|
| 8626 | 
 | 
|---|
| 8627 | NTOSAPI
 | 
|---|
| 8628 | NTSTATUS
 | 
|---|
| 8629 | DDKAPI
 | 
|---|
| 8630 | ZwCreateKey(
 | 
|---|
| 8631 |   OUT PHANDLE  KeyHandle,
 | 
|---|
| 8632 |   IN ACCESS_MASK  DesiredAccess,
 | 
|---|
| 8633 |   IN POBJECT_ATTRIBUTES  ObjectAttributes,
 | 
|---|
| 8634 |   IN ULONG  TitleIndex,
 | 
|---|
| 8635 |   IN PUNICODE_STRING  Class  OPTIONAL,
 | 
|---|
| 8636 |   IN ULONG  CreateOptions,
 | 
|---|
| 8637 |   OUT PULONG  Disposition  OPTIONAL);
 | 
|---|
| 8638 | 
 | 
|---|
| 8639 | NTOSAPI
 | 
|---|
| 8640 | NTSTATUS
 | 
|---|
| 8641 | DDKAPI
 | 
|---|
| 8642 | ZwCreateTimer(
 | 
|---|
| 8643 |   OUT PHANDLE  TimerHandle,
 | 
|---|
| 8644 |   IN ACCESS_MASK  DesiredAccess,
 | 
|---|
| 8645 |   IN POBJECT_ATTRIBUTES  ObjectAttributes  OPTIONAL,
 | 
|---|
| 8646 |   IN TIMER_TYPE  TimerType);
 | 
|---|
| 8647 | 
 | 
|---|
| 8648 | NTOSAPI
 | 
|---|
| 8649 | NTSTATUS
 | 
|---|
| 8650 | DDKAPI
 | 
|---|
| 8651 | ZwDeleteKey(
 | 
|---|
| 8652 |   IN HANDLE  KeyHandle);
 | 
|---|
| 8653 | 
 | 
|---|
| 8654 | NTOSAPI
 | 
|---|
| 8655 | NTSTATUS
 | 
|---|
| 8656 | DDKAPI
 | 
|---|
| 8657 | ZwDeleteValueKey(
 | 
|---|
| 8658 |   IN HANDLE  KeyHandle,
 | 
|---|
| 8659 |   IN PUNICODE_STRING  ValueName);
 | 
|---|
| 8660 | 
 | 
|---|
| 8661 | NTOSAPI
 | 
|---|
| 8662 | NTSTATUS
 | 
|---|
| 8663 | DDKAPI
 | 
|---|
| 8664 | NtDeviceIoControlFile(
 | 
|---|
| 8665 |   IN HANDLE  DeviceHandle,
 | 
|---|
| 8666 |   IN HANDLE  Event  OPTIONAL, 
 | 
|---|
| 8667 |   IN PIO_APC_ROUTINE  UserApcRoutine  OPTIONAL, 
 | 
|---|
| 8668 |   IN PVOID  UserApcContext  OPTIONAL, 
 | 
|---|
| 8669 |   OUT PIO_STATUS_BLOCK  IoStatusBlock, 
 | 
|---|
| 8670 |   IN ULONG  IoControlCode,
 | 
|---|
| 8671 |   IN PVOID  InputBuffer, 
 | 
|---|
| 8672 |   IN ULONG  InputBufferSize,
 | 
|---|
| 8673 |   OUT PVOID  OutputBuffer,
 | 
|---|
| 8674 |   IN ULONG  OutputBufferSize);
 | 
|---|
| 8675 | 
 | 
|---|
| 8676 | NTOSAPI
 | 
|---|
| 8677 | NTSTATUS
 | 
|---|
| 8678 | DDKAPI
 | 
|---|
| 8679 | ZwDeviceIoControlFile(
 | 
|---|
| 8680 |   IN HANDLE  DeviceHandle,
 | 
|---|
| 8681 |   IN HANDLE  Event  OPTIONAL, 
 | 
|---|
| 8682 |   IN PIO_APC_ROUTINE  UserApcRoutine  OPTIONAL, 
 | 
|---|
| 8683 |   IN PVOID  UserApcContext  OPTIONAL, 
 | 
|---|
| 8684 |   OUT PIO_STATUS_BLOCK  IoStatusBlock, 
 | 
|---|
| 8685 |   IN ULONG  IoControlCode,
 | 
|---|
| 8686 |   IN PVOID  InputBuffer, 
 | 
|---|
| 8687 |   IN ULONG  InputBufferSize,
 | 
|---|
| 8688 |   OUT PVOID  OutputBuffer,
 | 
|---|
| 8689 |   IN ULONG  OutputBufferSize);
 | 
|---|
| 8690 | 
 | 
|---|
| 8691 | NTOSAPI
 | 
|---|
| 8692 | NTSTATUS
 | 
|---|
| 8693 | DDKAPI
 | 
|---|
| 8694 | ZwEnumerateKey(
 | 
|---|
| 8695 |   IN HANDLE  KeyHandle,
 | 
|---|
| 8696 |   IN ULONG  Index,
 | 
|---|
| 8697 |   IN KEY_INFORMATION_CLASS  KeyInformationClass,
 | 
|---|
| 8698 |   OUT PVOID  KeyInformation,
 | 
|---|
| 8699 |   IN ULONG  Length,
 | 
|---|
| 8700 |   OUT PULONG  ResultLength);
 | 
|---|
| 8701 | 
 | 
|---|
| 8702 | NTOSAPI
 | 
|---|
| 8703 | NTSTATUS
 | 
|---|
| 8704 | DDKAPI
 | 
|---|
| 8705 | ZwEnumerateValueKey(
 | 
|---|
| 8706 |   IN HANDLE  KeyHandle,
 | 
|---|
| 8707 |   IN ULONG  Index,
 | 
|---|
| 8708 |   IN KEY_VALUE_INFORMATION_CLASS  KeyValueInformationClass,
 | 
|---|
| 8709 |   OUT PVOID  KeyValueInformation,
 | 
|---|
| 8710 |   IN ULONG  Length,
 | 
|---|
| 8711 |   OUT PULONG  ResultLength);
 | 
|---|
| 8712 | 
 | 
|---|
| 8713 | NTOSAPI
 | 
|---|
| 8714 | NTSTATUS
 | 
|---|
| 8715 | DDKAPI
 | 
|---|
| 8716 | ZwFlushKey(
 | 
|---|
| 8717 |   IN HANDLE  KeyHandle);
 | 
|---|
| 8718 | 
 | 
|---|
| 8719 | NTOSAPI
 | 
|---|
| 8720 | NTSTATUS
 | 
|---|
| 8721 | DDKAPI
 | 
|---|
| 8722 | ZwMakeTemporaryObject(
 | 
|---|
| 8723 |   IN HANDLE  Handle);
 | 
|---|
| 8724 | 
 | 
|---|
| 8725 | NTOSAPI
 | 
|---|
| 8726 | NTSTATUS
 | 
|---|
| 8727 | DDKAPI
 | 
|---|
| 8728 | NtMapViewOfSection(
 | 
|---|
| 8729 |   IN HANDLE  SectionHandle,
 | 
|---|
| 8730 |   IN HANDLE  ProcessHandle,
 | 
|---|
| 8731 |   IN OUT PVOID  *BaseAddress,
 | 
|---|
| 8732 |   IN ULONG  ZeroBits,
 | 
|---|
| 8733 |   IN ULONG  CommitSize,
 | 
|---|
| 8734 |   IN OUT PLARGE_INTEGER  SectionOffset  OPTIONAL,
 | 
|---|
| 8735 |   IN OUT PSIZE_T  ViewSize,
 | 
|---|
| 8736 |   IN SECTION_INHERIT  InheritDisposition,
 | 
|---|
| 8737 |   IN ULONG  AllocationType,
 | 
|---|
| 8738 |   IN ULONG  Protect);
 | 
|---|
| 8739 | 
 | 
|---|
| 8740 | NTOSAPI
 | 
|---|
| 8741 | NTSTATUS
 | 
|---|
| 8742 | DDKAPI
 | 
|---|
| 8743 | ZwMapViewOfSection(
 | 
|---|
| 8744 |   IN HANDLE  SectionHandle,
 | 
|---|
| 8745 |   IN HANDLE  ProcessHandle,
 | 
|---|
| 8746 |   IN OUT PVOID  *BaseAddress,
 | 
|---|
| 8747 |   IN ULONG  ZeroBits,
 | 
|---|
| 8748 |   IN ULONG  CommitSize,
 | 
|---|
| 8749 |   IN OUT PLARGE_INTEGER  SectionOffset  OPTIONAL,
 | 
|---|
| 8750 |   IN OUT PSIZE_T  ViewSize,
 | 
|---|
| 8751 |   IN SECTION_INHERIT  InheritDisposition,
 | 
|---|
| 8752 |   IN ULONG  AllocationType,
 | 
|---|
| 8753 |   IN ULONG  Protect);
 | 
|---|
| 8754 | 
 | 
|---|
| 8755 | NTOSAPI
 | 
|---|
| 8756 | NTSTATUS
 | 
|---|
| 8757 | DDKAPI
 | 
|---|
| 8758 | NtOpenFile(
 | 
|---|
| 8759 |   OUT PHANDLE  FileHandle,
 | 
|---|
| 8760 |   IN ACCESS_MASK  DesiredAccess,
 | 
|---|
| 8761 |   IN POBJECT_ATTRIBUTES  ObjectAttributes,
 | 
|---|
| 8762 |   OUT PIO_STATUS_BLOCK  IoStatusBlock,
 | 
|---|
| 8763 |   IN ULONG  ShareAccess,
 | 
|---|
| 8764 |   IN ULONG  OpenOptions);
 | 
|---|
| 8765 | 
 | 
|---|
| 8766 | NTOSAPI
 | 
|---|
| 8767 | NTSTATUS
 | 
|---|
| 8768 | DDKAPI
 | 
|---|
| 8769 | ZwOpenFile(
 | 
|---|
| 8770 |   OUT PHANDLE  FileHandle,
 | 
|---|
| 8771 |   IN ACCESS_MASK  DesiredAccess,
 | 
|---|
| 8772 |   IN POBJECT_ATTRIBUTES  ObjectAttributes,
 | 
|---|
| 8773 |   OUT PIO_STATUS_BLOCK  IoStatusBlock,
 | 
|---|
| 8774 |   IN ULONG  ShareAccess,
 | 
|---|
| 8775 |   IN ULONG  OpenOptions);
 | 
|---|
| 8776 | 
 | 
|---|
| 8777 | NTOSAPI
 | 
|---|
| 8778 | NTSTATUS
 | 
|---|
| 8779 | DDKAPI
 | 
|---|
| 8780 | ZwOpenKey(
 | 
|---|
| 8781 |   OUT PHANDLE  KeyHandle,
 | 
|---|
| 8782 |   IN ACCESS_MASK  DesiredAccess,
 | 
|---|
| 8783 |   IN POBJECT_ATTRIBUTES  ObjectAttributes);
 | 
|---|
| 8784 | 
 | 
|---|
| 8785 | NTOSAPI
 | 
|---|
| 8786 | NTSTATUS
 | 
|---|
| 8787 | DDKAPI
 | 
|---|
| 8788 | ZwOpenSection(
 | 
|---|
| 8789 |   OUT PHANDLE  SectionHandle,
 | 
|---|
| 8790 |   IN ACCESS_MASK  DesiredAccess,
 | 
|---|
| 8791 |   IN POBJECT_ATTRIBUTES  ObjectAttributes);
 | 
|---|
| 8792 | 
 | 
|---|
| 8793 | NTOSAPI
 | 
|---|
| 8794 | NTSTATUS
 | 
|---|
| 8795 | DDKAPI
 | 
|---|
| 8796 | ZwOpenSymbolicLinkObject(
 | 
|---|
| 8797 |   OUT PHANDLE  LinkHandle,
 | 
|---|
| 8798 |   IN ACCESS_MASK  DesiredAccess,
 | 
|---|
| 8799 |   IN POBJECT_ATTRIBUTES  ObjectAttributes);
 | 
|---|
| 8800 | 
 | 
|---|
| 8801 | NTOSAPI
 | 
|---|
| 8802 | NTSTATUS
 | 
|---|
| 8803 | DDKAPI
 | 
|---|
| 8804 | ZwOpenTimer(
 | 
|---|
| 8805 |   OUT PHANDLE  TimerHandle,
 | 
|---|
| 8806 |   IN ACCESS_MASK  DesiredAccess,
 | 
|---|
| 8807 |   IN POBJECT_ATTRIBUTES  ObjectAttributes);
 | 
|---|
| 8808 | 
 | 
|---|
| 8809 | NTOSAPI
 | 
|---|
| 8810 | NTSTATUS
 | 
|---|
| 8811 | DDKAPI
 | 
|---|
| 8812 | ZwQueryInformationFile(
 | 
|---|
| 8813 |   IN HANDLE  FileHandle,
 | 
|---|
| 8814 |   OUT PIO_STATUS_BLOCK  IoStatusBlock,
 | 
|---|
| 8815 |   OUT PVOID  FileInformation,
 | 
|---|
| 8816 |   IN ULONG  Length,
 | 
|---|
| 8817 |   IN FILE_INFORMATION_CLASS  FileInformationClass);
 | 
|---|
| 8818 | 
 | 
|---|
| 8819 | NTOSAPI
 | 
|---|
| 8820 | NTSTATUS
 | 
|---|
| 8821 | DDKAPI
 | 
|---|
| 8822 | ZwQueryKey(
 | 
|---|
| 8823 |   IN HANDLE  KeyHandle,
 | 
|---|
| 8824 |   IN KEY_INFORMATION_CLASS  KeyInformationClass,
 | 
|---|
| 8825 |   OUT PVOID  KeyInformation,
 | 
|---|
| 8826 |   IN ULONG  Length,
 | 
|---|
| 8827 |   OUT PULONG  ResultLength);
 | 
|---|
| 8828 | 
 | 
|---|
| 8829 | NTOSAPI
 | 
|---|
| 8830 | NTSTATUS
 | 
|---|
| 8831 | DDKAPI
 | 
|---|
| 8832 | ZwQuerySymbolicLinkObject(
 | 
|---|
| 8833 |   IN HANDLE  LinkHandle,
 | 
|---|
| 8834 |   IN OUT PUNICODE_STRING  LinkTarget,
 | 
|---|
| 8835 |   OUT PULONG  ReturnedLength  OPTIONAL);
 | 
|---|
| 8836 | 
 | 
|---|
| 8837 | NTOSAPI
 | 
|---|
| 8838 | NTSTATUS
 | 
|---|
| 8839 | DDKAPI
 | 
|---|
| 8840 | ZwQueryValueKey(
 | 
|---|
| 8841 |   IN HANDLE  KeyHandle,
 | 
|---|
| 8842 |   IN PUNICODE_STRING  ValueName,
 | 
|---|
| 8843 |   IN KEY_VALUE_INFORMATION_CLASS  KeyValueInformationClass,
 | 
|---|
| 8844 |   OUT PVOID  KeyValueInformation,
 | 
|---|
| 8845 |   IN ULONG  Length,
 | 
|---|
| 8846 |   OUT PULONG  ResultLength);
 | 
|---|
| 8847 | 
 | 
|---|
| 8848 | NTOSAPI
 | 
|---|
| 8849 | NTSTATUS
 | 
|---|
| 8850 | DDKAPI
 | 
|---|
| 8851 | NtReadFile(
 | 
|---|
| 8852 |   IN HANDLE  FileHandle,
 | 
|---|
| 8853 |   IN HANDLE  Event  OPTIONAL,
 | 
|---|
| 8854 |   IN PIO_APC_ROUTINE  ApcRoutine  OPTIONAL,
 | 
|---|
| 8855 |   IN PVOID  ApcContext  OPTIONAL,
 | 
|---|
| 8856 |   OUT PIO_STATUS_BLOCK  IoStatusBlock,
 | 
|---|
| 8857 |   OUT PVOID  Buffer,
 | 
|---|
| 8858 |   IN ULONG  Length,
 | 
|---|
| 8859 |   IN PLARGE_INTEGER  ByteOffset  OPTIONAL,
 | 
|---|
| 8860 |   IN PULONG  Key  OPTIONAL);
 | 
|---|
| 8861 | 
 | 
|---|
| 8862 | NTOSAPI
 | 
|---|
| 8863 | NTSTATUS
 | 
|---|
| 8864 | DDKAPI
 | 
|---|
| 8865 | ZwReadFile(
 | 
|---|
| 8866 |   IN HANDLE  FileHandle,
 | 
|---|
| 8867 |   IN HANDLE  Event  OPTIONAL,
 | 
|---|
| 8868 |   IN PIO_APC_ROUTINE  ApcRoutine  OPTIONAL,
 | 
|---|
| 8869 |   IN PVOID  ApcContext  OPTIONAL,
 | 
|---|
| 8870 |   OUT PIO_STATUS_BLOCK  IoStatusBlock,
 | 
|---|
| 8871 |   OUT PVOID  Buffer,
 | 
|---|
| 8872 |   IN ULONG  Length,
 | 
|---|
| 8873 |   IN PLARGE_INTEGER  ByteOffset  OPTIONAL,
 | 
|---|
| 8874 |   IN PULONG  Key  OPTIONAL);
 | 
|---|
| 8875 | 
 | 
|---|
| 8876 | NTOSAPI
 | 
|---|
| 8877 | NTSTATUS
 | 
|---|
| 8878 | DDKAPI
 | 
|---|
| 8879 | NtSetEvent(
 | 
|---|
| 8880 |   IN HANDLE  EventHandle,
 | 
|---|
| 8881 |   IN PULONG  NumberOfThreadsReleased);
 | 
|---|
| 8882 | 
 | 
|---|
| 8883 | NTOSAPI
 | 
|---|
| 8884 | NTSTATUS
 | 
|---|
| 8885 | DDKAPI
 | 
|---|
| 8886 | ZwSetEvent(
 | 
|---|
| 8887 |   IN HANDLE  EventHandle,
 | 
|---|
| 8888 |   IN PULONG  NumberOfThreadsReleased);
 | 
|---|
| 8889 | 
 | 
|---|
| 8890 | NTOSAPI
 | 
|---|
| 8891 | NTSTATUS
 | 
|---|
| 8892 | DDKAPI
 | 
|---|
| 8893 | ZwSetInformationFile(
 | 
|---|
| 8894 |   IN HANDLE  FileHandle,
 | 
|---|
| 8895 |   OUT PIO_STATUS_BLOCK  IoStatusBlock,
 | 
|---|
| 8896 |   IN PVOID  FileInformation,
 | 
|---|
| 8897 |   IN ULONG  Length,
 | 
|---|
| 8898 |   IN FILE_INFORMATION_CLASS  FileInformationClass);
 | 
|---|
| 8899 | 
 | 
|---|
| 8900 | NTOSAPI
 | 
|---|
| 8901 | NTSTATUS
 | 
|---|
| 8902 | DDKAPI
 | 
|---|
| 8903 | ZwSetInformationThread(
 | 
|---|
| 8904 |   IN HANDLE  ThreadHandle,
 | 
|---|
| 8905 |   IN THREADINFOCLASS  ThreadInformationClass,
 | 
|---|
| 8906 |   IN PVOID  ThreadInformation,
 | 
|---|
| 8907 |   IN ULONG  ThreadInformationLength);
 | 
|---|
| 8908 | 
 | 
|---|
| 8909 | NTOSAPI
 | 
|---|
| 8910 | NTSTATUS
 | 
|---|
| 8911 | DDKAPI
 | 
|---|
| 8912 | ZwSetTimer(
 | 
|---|
| 8913 |   IN HANDLE  TimerHandle,
 | 
|---|
| 8914 |   IN PLARGE_INTEGER  DueTime,
 | 
|---|
| 8915 |   IN PTIMER_APC_ROUTINE  TimerApcRoutine  OPTIONAL,
 | 
|---|
| 8916 |   IN PVOID  TimerContext  OPTIONAL,
 | 
|---|
| 8917 |   IN BOOLEAN  WakeTimer,
 | 
|---|
| 8918 |   IN LONG  Period  OPTIONAL,
 | 
|---|
| 8919 |   OUT PBOOLEAN  PreviousState  OPTIONAL);
 | 
|---|
| 8920 | 
 | 
|---|
| 8921 | NTOSAPI
 | 
|---|
| 8922 | NTSTATUS
 | 
|---|
| 8923 | DDKAPI
 | 
|---|
| 8924 | ZwSetValueKey(
 | 
|---|
| 8925 |   IN HANDLE  KeyHandle,
 | 
|---|
| 8926 |   IN PUNICODE_STRING  ValueName,
 | 
|---|
| 8927 |   IN ULONG  TitleIndex  OPTIONAL,
 | 
|---|
| 8928 |   IN ULONG  Type,
 | 
|---|
| 8929 |   IN PVOID  Data,
 | 
|---|
| 8930 |   IN ULONG  DataSize);
 | 
|---|
| 8931 | 
 | 
|---|
| 8932 | /* [Nt|Zw]MapViewOfSection.InheritDisposition constants */
 | 
|---|
| 8933 | #define AT_EXTENDABLE_FILE                0x00002000
 | 
|---|
| 8934 | #define SEC_NO_CHANGE                     0x00400000
 | 
|---|
| 8935 | #define AT_RESERVED                       0x20000000
 | 
|---|
| 8936 | #define AT_ROUND_TO_PAGE                  0x40000000
 | 
|---|
| 8937 | 
 | 
|---|
| 8938 | NTOSAPI
 | 
|---|
| 8939 | NTSTATUS
 | 
|---|
| 8940 | DDKAPI
 | 
|---|
| 8941 | NtUnmapViewOfSection(
 | 
|---|
| 8942 |   IN HANDLE  ProcessHandle,
 | 
|---|
| 8943 |   IN PVOID  BaseAddress);
 | 
|---|
| 8944 | 
 | 
|---|
| 8945 | NTOSAPI
 | 
|---|
| 8946 | NTSTATUS
 | 
|---|
| 8947 | DDKAPI
 | 
|---|
| 8948 | ZwUnmapViewOfSection(
 | 
|---|
| 8949 |   IN HANDLE  ProcessHandle,
 | 
|---|
| 8950 |   IN PVOID  BaseAddress);
 | 
|---|
| 8951 | 
 | 
|---|
| 8952 | NTOSAPI
 | 
|---|
| 8953 | NTSTATUS
 | 
|---|
| 8954 | DDKAPI
 | 
|---|
| 8955 | NtWaitForSingleObject(
 | 
|---|
| 8956 |   IN HANDLE  Object,
 | 
|---|
| 8957 |   IN BOOLEAN  Alertable,
 | 
|---|
| 8958 |   IN PLARGE_INTEGER  Time);
 | 
|---|
| 8959 | 
 | 
|---|
| 8960 | NTOSAPI
 | 
|---|
| 8961 | NTSTATUS
 | 
|---|
| 8962 | DDKAPI
 | 
|---|
| 8963 | ZwWaitForSingleObject(
 | 
|---|
| 8964 |   IN HANDLE  Object,
 | 
|---|
| 8965 |   IN BOOLEAN  Alertable,
 | 
|---|
| 8966 |   IN PLARGE_INTEGER  Time);
 | 
|---|
| 8967 | 
 | 
|---|
| 8968 | NTOSAPI
 | 
|---|
| 8969 | NTSTATUS
 | 
|---|
| 8970 | DDKAPI
 | 
|---|
| 8971 | NtWriteFile(
 | 
|---|
| 8972 |   IN HANDLE  FileHandle,
 | 
|---|
| 8973 |   IN HANDLE  Event  OPTIONAL,
 | 
|---|
| 8974 |   IN PIO_APC_ROUTINE  ApcRoutine  OPTIONAL,
 | 
|---|
| 8975 |   IN PVOID  ApcContext  OPTIONAL,
 | 
|---|
| 8976 |   OUT PIO_STATUS_BLOCK  IoStatusBlock,
 | 
|---|
| 8977 |   IN PVOID  Buffer,
 | 
|---|
| 8978 |   IN ULONG  Length,
 | 
|---|
| 8979 |   IN PLARGE_INTEGER  ByteOffset  OPTIONAL,
 | 
|---|
| 8980 |   IN PULONG  Key  OPTIONAL);
 | 
|---|
| 8981 | 
 | 
|---|
| 8982 | NTOSAPI
 | 
|---|
| 8983 | NTSTATUS
 | 
|---|
| 8984 | DDKAPI
 | 
|---|
| 8985 | ZwWriteFile(
 | 
|---|
| 8986 |   IN HANDLE  FileHandle,
 | 
|---|
| 8987 |   IN HANDLE  Event  OPTIONAL,
 | 
|---|
| 8988 |   IN PIO_APC_ROUTINE  ApcRoutine  OPTIONAL,
 | 
|---|
| 8989 |   IN PVOID  ApcContext  OPTIONAL,
 | 
|---|
| 8990 |   OUT PIO_STATUS_BLOCK  IoStatusBlock,
 | 
|---|
| 8991 |   IN PVOID  Buffer,
 | 
|---|
| 8992 |   IN ULONG  Length,
 | 
|---|
| 8993 |   IN PLARGE_INTEGER  ByteOffset  OPTIONAL,
 | 
|---|
| 8994 |   IN PULONG  Key  OPTIONAL);
 | 
|---|
| 8995 | 
 | 
|---|
| 8996 | 
 | 
|---|
| 8997 | 
 | 
|---|
| 8998 | /** Power management support routines **/
 | 
|---|
| 8999 | 
 | 
|---|
| 9000 | NTOSAPI
 | 
|---|
| 9001 | NTSTATUS
 | 
|---|
| 9002 | DDKAPI
 | 
|---|
| 9003 | PoCallDriver(
 | 
|---|
| 9004 |   IN PDEVICE_OBJECT  DeviceObject,
 | 
|---|
| 9005 |   IN OUT PIRP  Irp);
 | 
|---|
| 9006 | 
 | 
|---|
| 9007 | NTOSAPI
 | 
|---|
| 9008 | PULONG
 | 
|---|
| 9009 | DDKAPI
 | 
|---|
| 9010 | PoRegisterDeviceForIdleDetection(
 | 
|---|
| 9011 |   IN PDEVICE_OBJECT  DeviceObject,
 | 
|---|
| 9012 |   IN ULONG  ConservationIdleTime,
 | 
|---|
| 9013 |   IN ULONG  PerformanceIdleTime,
 | 
|---|
| 9014 |   IN DEVICE_POWER_STATE  State);
 | 
|---|
| 9015 | 
 | 
|---|
| 9016 | NTOSAPI
 | 
|---|
| 9017 | PVOID
 | 
|---|
| 9018 | DDKAPI
 | 
|---|
| 9019 | PoRegisterSystemState(
 | 
|---|
| 9020 |   IN PVOID  StateHandle,
 | 
|---|
| 9021 |   IN EXECUTION_STATE  Flags);
 | 
|---|
| 9022 | 
 | 
|---|
| 9023 | NTOSAPI
 | 
|---|
| 9024 | NTSTATUS
 | 
|---|
| 9025 | DDKAPI
 | 
|---|
| 9026 | PoRequestPowerIrp(
 | 
|---|
| 9027 |   IN PDEVICE_OBJECT  DeviceObject,
 | 
|---|
| 9028 |   IN UCHAR  MinorFunction,  
 | 
|---|
| 9029 |   IN POWER_STATE  PowerState,
 | 
|---|
| 9030 |   IN PREQUEST_POWER_COMPLETE  CompletionFunction,
 | 
|---|
| 9031 |   IN PVOID  Context,
 | 
|---|
| 9032 |   OUT PIRP  *Irp OPTIONAL);
 | 
|---|
| 9033 | 
 | 
|---|
| 9034 | NTOSAPI
 | 
|---|
| 9035 | NTSTATUS
 | 
|---|
| 9036 | DDKAPI
 | 
|---|
| 9037 | PoRequestShutdownEvent(
 | 
|---|
| 9038 |   OUT PVOID  *Event);
 | 
|---|
| 9039 | 
 | 
|---|
| 9040 | NTOSAPI
 | 
|---|
| 9041 | VOID
 | 
|---|
| 9042 | DDKAPI
 | 
|---|
| 9043 | PoSetDeviceBusy(
 | 
|---|
| 9044 |   PULONG  IdlePointer); 
 | 
|---|
| 9045 | 
 | 
|---|
| 9046 | NTOSAPI
 | 
|---|
| 9047 | POWER_STATE
 | 
|---|
| 9048 | DDKAPI
 | 
|---|
| 9049 | PoSetPowerState(
 | 
|---|
| 9050 |   IN PDEVICE_OBJECT  DeviceObject,
 | 
|---|
| 9051 |   IN POWER_STATE_TYPE  Type,
 | 
|---|
| 9052 |   IN POWER_STATE  State);
 | 
|---|
| 9053 | 
 | 
|---|
| 9054 | NTOSAPI
 | 
|---|
| 9055 | VOID
 | 
|---|
| 9056 | DDKAPI
 | 
|---|
| 9057 | PoSetSystemState(
 | 
|---|
| 9058 |   IN EXECUTION_STATE  Flags);
 | 
|---|
| 9059 | 
 | 
|---|
| 9060 | NTOSAPI
 | 
|---|
| 9061 | VOID
 | 
|---|
| 9062 | DDKAPI
 | 
|---|
| 9063 | PoStartNextPowerIrp(
 | 
|---|
| 9064 |   IN PIRP  Irp);
 | 
|---|
| 9065 | 
 | 
|---|
| 9066 | NTOSAPI
 | 
|---|
| 9067 | VOID
 | 
|---|
| 9068 | DDKAPI
 | 
|---|
| 9069 | PoUnregisterSystemState(
 | 
|---|
| 9070 |   IN PVOID  StateHandle);
 | 
|---|
| 9071 | 
 | 
|---|
| 9072 | 
 | 
|---|
| 9073 | 
 | 
|---|
| 9074 | /** WMI library support routines **/
 | 
|---|
| 9075 | 
 | 
|---|
| 9076 | NTOSAPI
 | 
|---|
| 9077 | NTSTATUS
 | 
|---|
| 9078 | DDKAPI
 | 
|---|
| 9079 | WmiCompleteRequest(
 | 
|---|
| 9080 |   IN PDEVICE_OBJECT  DeviceObject,
 | 
|---|
| 9081 |   IN PIRP  Irp,
 | 
|---|
| 9082 |   IN NTSTATUS  Status,
 | 
|---|
| 9083 |   IN ULONG  BufferUsed,
 | 
|---|
| 9084 |   IN CCHAR  PriorityBoost);
 | 
|---|
| 9085 | 
 | 
|---|
| 9086 | NTOSAPI
 | 
|---|
| 9087 | NTSTATUS
 | 
|---|
| 9088 | DDKAPI
 | 
|---|
| 9089 | WmiFireEvent(
 | 
|---|
| 9090 |   IN PDEVICE_OBJECT  DeviceObject,
 | 
|---|
| 9091 |   IN LPGUID  Guid, 
 | 
|---|
| 9092 |   IN ULONG  InstanceIndex,
 | 
|---|
| 9093 |   IN ULONG  EventDataSize,
 | 
|---|
| 9094 |   IN PVOID  EventData); 
 | 
|---|
| 9095 | 
 | 
|---|
| 9096 | NTOSAPI
 | 
|---|
| 9097 | NTSTATUS
 | 
|---|
| 9098 | DDKAPI
 | 
|---|
| 9099 | WmiQueryTraceInformation(
 | 
|---|
| 9100 |   IN TRACE_INFORMATION_CLASS  TraceInformationClass,
 | 
|---|
| 9101 |   OUT PVOID  TraceInformation,
 | 
|---|
| 9102 |   IN ULONG  TraceInformationLength,
 | 
|---|
| 9103 |   OUT PULONG  RequiredLength OPTIONAL,
 | 
|---|
| 9104 |   IN PVOID  Buffer OPTIONAL);
 | 
|---|
| 9105 | 
 | 
|---|
| 9106 | NTOSAPI
 | 
|---|
| 9107 | NTSTATUS
 | 
|---|
| 9108 | DDKAPI
 | 
|---|
| 9109 | WmiSystemControl(
 | 
|---|
| 9110 |   IN PWMILIB_CONTEXT  WmiLibInfo,
 | 
|---|
| 9111 |   IN PDEVICE_OBJECT  DeviceObject,
 | 
|---|
| 9112 |   IN PIRP  Irp,
 | 
|---|
| 9113 |   OUT PSYSCTL_IRP_DISPOSITION  IrpDisposition);
 | 
|---|
| 9114 | 
 | 
|---|
| 9115 | NTOSAPI
 | 
|---|
| 9116 | NTSTATUS
 | 
|---|
| 9117 | DDKCDECLAPI
 | 
|---|
| 9118 | WmiTraceMessage(
 | 
|---|
| 9119 |   IN TRACEHANDLE  LoggerHandle,
 | 
|---|
| 9120 |   IN ULONG  MessageFlags,
 | 
|---|
| 9121 |   IN LPGUID  MessageGuid,
 | 
|---|
| 9122 |   IN USHORT  MessageNumber,
 | 
|---|
| 9123 |   IN ...);
 | 
|---|
| 9124 | 
 | 
|---|
| 9125 | #if 0
 | 
|---|
| 9126 | /* FIXME: Get va_list from where? */
 | 
|---|
| 9127 | NTOSAPI
 | 
|---|
| 9128 | NTSTATUS
 | 
|---|
| 9129 | DDKCDECLAPI
 | 
|---|
| 9130 | WmiTraceMessageVa(
 | 
|---|
| 9131 |   IN TRACEHANDLE  LoggerHandle,
 | 
|---|
| 9132 |   IN ULONG  MessageFlags,
 | 
|---|
| 9133 |   IN LPGUID  MessageGuid,
 | 
|---|
| 9134 |   IN USHORT  MessageNumber,
 | 
|---|
| 9135 |   IN va_list  MessageArgList);
 | 
|---|
| 9136 | #endif
 | 
|---|
| 9137 | 
 | 
|---|
| 9138 | 
 | 
|---|
| 9139 | /** Kernel debugger routines **/
 | 
|---|
| 9140 | 
 | 
|---|
| 9141 | NTOSAPI
 | 
|---|
| 9142 | VOID
 | 
|---|
| 9143 | DDKAPI
 | 
|---|
| 9144 | KdDisableDebugger(
 | 
|---|
| 9145 |   VOID);
 | 
|---|
| 9146 | 
 | 
|---|
| 9147 | NTOSAPI
 | 
|---|
| 9148 | VOID
 | 
|---|
| 9149 | DDKAPI
 | 
|---|
| 9150 | KdEnableDebugger(
 | 
|---|
| 9151 |   VOID);
 | 
|---|
| 9152 | 
 | 
|---|
| 9153 | NTOSAPI
 | 
|---|
| 9154 | VOID
 | 
|---|
| 9155 | DDKAPI
 | 
|---|
| 9156 | DbgBreakPoint(
 | 
|---|
| 9157 |   VOID);
 | 
|---|
| 9158 | 
 | 
|---|
| 9159 | NTOSAPI
 | 
|---|
| 9160 | VOID
 | 
|---|
| 9161 | DDKAPI
 | 
|---|
| 9162 | DbgBreakPointWithStatus(
 | 
|---|
| 9163 |   IN ULONG  Status);
 | 
|---|
| 9164 | 
 | 
|---|
| 9165 | NTOSAPI
 | 
|---|
| 9166 | ULONG
 | 
|---|
| 9167 | DDKCDECLAPI
 | 
|---|
| 9168 | DbgPrint(
 | 
|---|
| 9169 |   IN PCH  Format,
 | 
|---|
| 9170 |   IN ...);
 | 
|---|
| 9171 | 
 | 
|---|
| 9172 | NTOSAPI
 | 
|---|
| 9173 | ULONG
 | 
|---|
| 9174 | DDKCDECLAPI
 | 
|---|
| 9175 | DbgPrintEx(
 | 
|---|
| 9176 |   IN ULONG  ComponentId,
 | 
|---|
| 9177 |   IN ULONG  Level,
 | 
|---|
| 9178 |   IN PCH  Format,
 | 
|---|
| 9179 |   IN ...);
 | 
|---|
| 9180 | 
 | 
|---|
| 9181 | NTOSAPI
 | 
|---|
| 9182 | ULONG
 | 
|---|
| 9183 | DDKCDECLAPI
 | 
|---|
| 9184 | DbgPrintReturnControlC(
 | 
|---|
| 9185 |   IN PCH  Format,
 | 
|---|
| 9186 |   IN ...);
 | 
|---|
| 9187 | 
 | 
|---|
| 9188 | NTOSAPI
 | 
|---|
| 9189 | NTSTATUS
 | 
|---|
| 9190 | DDKAPI
 | 
|---|
| 9191 | DbgQueryDebugFilterState(
 | 
|---|
| 9192 |   IN ULONG  ComponentId,
 | 
|---|
| 9193 |   IN ULONG  Level);
 | 
|---|
| 9194 | 
 | 
|---|
| 9195 | NTOSAPI
 | 
|---|
| 9196 | NTSTATUS
 | 
|---|
| 9197 | DDKAPI
 | 
|---|
| 9198 | DbgSetDebugFilterState(
 | 
|---|
| 9199 |   IN ULONG  ComponentId,
 | 
|---|
| 9200 |   IN ULONG  Level,
 | 
|---|
| 9201 |   IN BOOLEAN  State);
 | 
|---|
| 9202 | 
 | 
|---|
| 9203 | #ifdef DBG
 | 
|---|
| 9204 | 
 | 
|---|
| 9205 | #define KdPrint(_x_) DbgPrint _x_
 | 
|---|
| 9206 | #define KdPrintEx(_x_) DbgPrintEx _x_
 | 
|---|
| 9207 | #define KdBreakPoint() DbgBreakPoint()
 | 
|---|
| 9208 | #define KdBreakPointWithStatus(s) DbgBreakPointWithStatus(s)
 | 
|---|
| 9209 | 
 | 
|---|
| 9210 | #else /* !DBG */
 | 
|---|
| 9211 | 
 | 
|---|
| 9212 | #define KdPrint(_x_)
 | 
|---|
| 9213 | #define KdPrintEx(_x_)
 | 
|---|
| 9214 | #define KdBreakPoint()
 | 
|---|
| 9215 | #define KdBreakPointWithStatus(s)
 | 
|---|
| 9216 | 
 | 
|---|
| 9217 | #endif /* !DBG */
 | 
|---|
| 9218 | 
 | 
|---|
| 9219 | extern NTOSAPI PBOOLEAN KdDebuggerNotPresent;
 | 
|---|
| 9220 | extern NTOSAPI PBOOLEAN KdDebuggerEnabled;
 | 
|---|
| 9221 | #define KD_DEBUGGER_ENABLED     *KdDebuggerEnabled
 | 
|---|
| 9222 | #define KD_DEBUGGER_NOT_PRESENT *KdDebuggerNotPresent
 | 
|---|
| 9223 | 
 | 
|---|
| 9224 | #ifdef __cplusplus
 | 
|---|
| 9225 | }
 | 
|---|
| 9226 | #endif
 | 
|---|
| 9227 | 
 | 
|---|
| 9228 | #endif /* __WINDDK_H */
 | 
|---|