1 | /*
|
---|
2 | * Copyright 2004-2005 Ivan Leo Puoti
|
---|
3 | *
|
---|
4 | * This library is free software; you can redistribute it and/or
|
---|
5 | * modify it under the terms of the GNU Lesser General Public
|
---|
6 | * License as published by the Free Software Foundation; either
|
---|
7 | * version 2.1 of the License, or (at your option) any later version.
|
---|
8 | *
|
---|
9 | * This library is distributed in the hope that it will be useful,
|
---|
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
---|
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
---|
12 | * Lesser General Public License for more details.
|
---|
13 | *
|
---|
14 | * You should have received a copy of the GNU Lesser General Public
|
---|
15 | * License along with this library; if not, write to the Free Software
|
---|
16 | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
---|
17 | */
|
---|
18 |
|
---|
19 | /*
|
---|
20 | * Sun LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
|
---|
21 | * other than GPL or LGPL is available it will apply instead, Sun elects to use only
|
---|
22 | * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
|
---|
23 | * a choice of LGPL license versions is made available with the language indicating
|
---|
24 | * that LGPLv2 or any later version may be used, or where a choice of which version
|
---|
25 | * of the LGPL is applied is otherwise unspecified.
|
---|
26 | */
|
---|
27 |
|
---|
28 | #ifndef _WDMDDK_
|
---|
29 | #define _WDMDDK_
|
---|
30 | #define _NTDDK_
|
---|
31 |
|
---|
32 | #include <ntstatus.h>
|
---|
33 |
|
---|
34 | #ifdef _WIN64
|
---|
35 | #define POINTER_ALIGNMENT DECLSPEC_ALIGN(8)
|
---|
36 | #else
|
---|
37 | #define POINTER_ALIGNMENT
|
---|
38 | #endif
|
---|
39 |
|
---|
40 | typedef LONG KPRIORITY;
|
---|
41 |
|
---|
42 | typedef ULONG_PTR KSPIN_LOCK, *PKSPIN_LOCK;
|
---|
43 |
|
---|
44 | struct _KDPC;
|
---|
45 | struct _KAPC;
|
---|
46 | struct _IRP;
|
---|
47 | struct _DEVICE_OBJECT;
|
---|
48 | struct _DRIVER_OBJECT;
|
---|
49 |
|
---|
50 | typedef VOID (WINAPI *PKDEFERRED_ROUTINE)(struct _KDPC *, PVOID, PVOID, PVOID);
|
---|
51 | typedef VOID (WINAPI *PKSTART_ROUTINE)(PVOID);
|
---|
52 |
|
---|
53 | typedef NTSTATUS (WINAPI *PDRIVER_INITIALIZE)(struct _DRIVER_OBJECT *, PUNICODE_STRING);
|
---|
54 | typedef NTSTATUS (WINAPI *PDRIVER_DISPATCH)(struct _DEVICE_OBJECT *, struct _IRP *);
|
---|
55 | typedef void (WINAPI *PDRIVER_STARTIO)(struct _DEVICE_OBJECT *, struct _IRP *);
|
---|
56 | typedef void (WINAPI *PDRIVER_UNLOAD)(struct _DRIVER_OBJECT *);
|
---|
57 |
|
---|
58 | typedef struct _DISPATCHER_HEADER {
|
---|
59 | UCHAR Type;
|
---|
60 | UCHAR Absolute;
|
---|
61 | UCHAR Size;
|
---|
62 | UCHAR Inserted;
|
---|
63 | LONG SignalState;
|
---|
64 | LIST_ENTRY WaitListHead;
|
---|
65 | } DISPATCHER_HEADER, *PDISPATCHER_HEADER;
|
---|
66 |
|
---|
67 | typedef struct _KEVENT {
|
---|
68 | DISPATCHER_HEADER Header;
|
---|
69 | } KEVENT, *PKEVENT, *RESTRICTED_POINTER PRKEVENT;
|
---|
70 |
|
---|
71 | typedef struct _KSEMAPHORE {
|
---|
72 | DISPATCHER_HEADER Header;
|
---|
73 | LONG Limit;
|
---|
74 | } KSEMAPHORE, *PKSEMAPHORE, *PRKSEMAPHORE;
|
---|
75 |
|
---|
76 | typedef struct _KDPC {
|
---|
77 | CSHORT Type;
|
---|
78 | UCHAR Number;
|
---|
79 | UCHAR Importance;
|
---|
80 | LIST_ENTRY DpcListEntry;
|
---|
81 | PKDEFERRED_ROUTINE DeferredRoutine;
|
---|
82 | PVOID DeferredContext;
|
---|
83 | PVOID SystemArgument1;
|
---|
84 | PVOID SystemArgument2;
|
---|
85 | PULONG_PTR Lock;
|
---|
86 | } KDPC, *PKDPC, *RESTRICTED_POINTER PRKDPC;
|
---|
87 |
|
---|
88 | typedef struct _KDEVICE_QUEUE_ENTRY {
|
---|
89 | LIST_ENTRY DeviceListEntry;
|
---|
90 | ULONG SortKey;
|
---|
91 | BOOLEAN Inserted;
|
---|
92 | } KDEVICE_QUEUE_ENTRY, *PKDEVICE_QUEUE_ENTRY,
|
---|
93 | *RESTRICTED_POINTER PRKDEVICE_QUEUE_ENTRY;
|
---|
94 |
|
---|
95 | typedef struct _KDEVICE_QUEUE {
|
---|
96 | CSHORT Type;
|
---|
97 | CSHORT Size;
|
---|
98 | LIST_ENTRY DeviceListHead;
|
---|
99 | KSPIN_LOCK Lock;
|
---|
100 | BOOLEAN Busy;
|
---|
101 | } KDEVICE_QUEUE, *PKDEVICE_QUEUE, *RESTRICTED_POINTER PRKDEVICE_QUEUE;
|
---|
102 |
|
---|
103 | typedef struct _KMUTANT {
|
---|
104 | DISPATCHER_HEADER Header;
|
---|
105 | LIST_ENTRY MutantListEntry;
|
---|
106 | struct _KTHREAD *RESTRICTED_POINTER OwnerThread;
|
---|
107 | BOOLEAN Abandoned;
|
---|
108 | UCHAR ApcDisable;
|
---|
109 | } KMUTANT, *PKMUTANT, *RESTRICTED_POINTER PRKMUTANT, KMUTEX, *PKMUTEX, *RESTRICTED_POINTER PRKMUTEX;
|
---|
110 |
|
---|
111 | typedef enum _KWAIT_REASON
|
---|
112 | {
|
---|
113 | Executive,
|
---|
114 | FreePage,
|
---|
115 | PageIn,
|
---|
116 | PoolAllocation,
|
---|
117 | DelayExecution,
|
---|
118 | Suspended,
|
---|
119 | UserRequest,
|
---|
120 | WrExecutive,
|
---|
121 | WrFreePage,
|
---|
122 | WrPageIn,
|
---|
123 | WrDelayExecution,
|
---|
124 | WrSuspended,
|
---|
125 | WrUserRequest,
|
---|
126 | WrQueue,
|
---|
127 | WrLpcReceive,
|
---|
128 | WrLpcReply,
|
---|
129 | WrVirtualMemory,
|
---|
130 | WrPageOut,
|
---|
131 | WrRendezvous,
|
---|
132 | Spare2,
|
---|
133 | Spare3,
|
---|
134 | Spare4,
|
---|
135 | Spare5,
|
---|
136 | Spare6,
|
---|
137 | WrKernel,
|
---|
138 | MaximumWaitReason,
|
---|
139 | } KWAIT_REASON;
|
---|
140 |
|
---|
141 | typedef struct _ALLOCATE_FUNCTION *PALLOCATE_FUNCTION;
|
---|
142 | typedef struct _IO_TIMER *PIO_TIMER;
|
---|
143 | typedef struct _IO_TIMER_ROUTINE *PIO_TIMER_ROUTINE;
|
---|
144 | typedef struct _ETHREAD *PETHREAD;
|
---|
145 | typedef struct _FREE_FUNCTION *PFREE_FUNCTION;
|
---|
146 | typedef struct _KTHREAD *PKTHREAD, *PRKTHREAD;
|
---|
147 | typedef struct _EPROCESS *PEPROCESS;
|
---|
148 | typedef struct _ERESOURCE *PERESOURCE;
|
---|
149 | typedef struct _IO_WORKITEM *PIO_WORKITEM;
|
---|
150 | typedef struct _NPAGED_LOOKASIDE_LIST *PNPAGED_LOOKASIDE_LIST;
|
---|
151 | typedef struct _OBJECT_TYPE *POBJECT_TYPE;
|
---|
152 | typedef struct _OBJECT_HANDLE_INFORMATION *POBJECT_HANDLE_INFORMATION;
|
---|
153 | typedef struct _ZONE_HEADER *PZONE_HEADER;
|
---|
154 |
|
---|
155 | typedef struct _FAST_MUTEX
|
---|
156 | {
|
---|
157 | LONG Count;
|
---|
158 | PKTHREAD Owner;
|
---|
159 | ULONG Contention;
|
---|
160 | KEVENT Gate;
|
---|
161 | ULONG OldIrql;
|
---|
162 | } FAST_MUTEX, *PFAST_MUTEX;
|
---|
163 |
|
---|
164 | #define MAXIMUM_VOLUME_LABEL_LENGTH (32 * sizeof(WCHAR))
|
---|
165 |
|
---|
166 | typedef struct _VPB {
|
---|
167 | CSHORT Type;
|
---|
168 | CSHORT Size;
|
---|
169 | USHORT Flags;
|
---|
170 | USHORT VolumeLabelLength;
|
---|
171 | struct _DEVICE_OBJECT *DeviceObject;
|
---|
172 | struct _DEVICE_OBJECT *RealDevice;
|
---|
173 | ULONG SerialNumber;
|
---|
174 | ULONG ReferenceCount;
|
---|
175 | WCHAR VolumeLabel[MAXIMUM_VOLUME_LABEL_LENGTH / sizeof(WCHAR)];
|
---|
176 | } VPB, *PVPB;
|
---|
177 |
|
---|
178 | typedef enum _POOL_TYPE {
|
---|
179 | NonPagedPool,
|
---|
180 | PagedPool,
|
---|
181 | NonPagedPoolMustSucceed,
|
---|
182 | UnkownType,
|
---|
183 | NonPagedPoolCacheAligned,
|
---|
184 | PagedPoolCacheAligned,
|
---|
185 | NonPagedPoolCacheAlignedMustS,
|
---|
186 | MaxPoolType
|
---|
187 | } POOL_TYPE;
|
---|
188 |
|
---|
189 | typedef struct _WAIT_CONTEXT_BLOCK {
|
---|
190 | KDEVICE_QUEUE_ENTRY WaitQueueEntry;
|
---|
191 | struct _DRIVER_CONTROL *DeviceRoutine;
|
---|
192 | PVOID DeviceContext;
|
---|
193 | ULONG NumberOfMapRegisters;
|
---|
194 | PVOID DeviceObject;
|
---|
195 | PVOID CurrentIrp;
|
---|
196 | PKDPC BufferChainingDpc;
|
---|
197 | } WAIT_CONTEXT_BLOCK, *PWAIT_CONTEXT_BLOCK;
|
---|
198 |
|
---|
199 | #define DO_BUFFERED_IO 0x00000004
|
---|
200 | #define DO_EXCLUSIVE 0x00000008
|
---|
201 | #define DO_DIRECT_IO 0x00000010
|
---|
202 | #define DO_MAP_IO_BUFFER 0x00000020
|
---|
203 | #define DO_DEVICE_INITIALIZING 0x00000080
|
---|
204 | #define DO_SHUTDOWN_REGISTERED 0x00000800
|
---|
205 | #define DO_BUS_ENUMERATED_DEVICE 0x00001000
|
---|
206 | #define DO_POWER_PAGABLE 0x00002000
|
---|
207 | #define DO_POWER_INRUSH 0x00004000
|
---|
208 |
|
---|
209 | #define IO_NO_INCREMENT 0
|
---|
210 | #define IO_CD_ROM_INCREMENT 1
|
---|
211 | #define IO_DISK_INCREMENT 1
|
---|
212 | #define IO_KEYBOARD_INCREMENT 6
|
---|
213 | #define IO_MAILSLOT_INCREMENT 2
|
---|
214 | #define IO_MOUSE_INCREMENT 6
|
---|
215 | #define IO_NAMED_PIPE_INCREMENT 2
|
---|
216 | #define IO_NETWORK_INCREMENT 2
|
---|
217 | #define IO_PARALLEL_INCREMENT 1
|
---|
218 | #define IO_SERIAL_INCREMENT 2
|
---|
219 | #define IO_SOUND_INCREMENT 8
|
---|
220 | #define IO_VIDEO_INCREMENT 1
|
---|
221 |
|
---|
222 | #ifndef DEVICE_TYPE
|
---|
223 | #define DEVICE_TYPE ULONG
|
---|
224 | #endif
|
---|
225 | #define IRP_MJ_MAXIMUM_FUNCTION 0x1b
|
---|
226 | #define IRP_MJ_CREATE 0x00
|
---|
227 | #define IRP_MJ_CREATE_NAMED_PIPE 0x01
|
---|
228 | #define IRP_MJ_CLOSE 0x02
|
---|
229 | #define IRP_MJ_READ 0x03
|
---|
230 | #define IRP_MJ_WRITE 0x04
|
---|
231 | #define IRP_MJ_QUERY_INFORMATION 0x05
|
---|
232 | #define IRP_MJ_SET_INFORMATION 0x06
|
---|
233 | #define IRP_MJ_QUERY_EA 0x07
|
---|
234 | #define IRP_MJ_SET_EA 0x08
|
---|
235 | #define IRP_MJ_FLUSH_BUFFERS 0x09
|
---|
236 | #define IRP_MJ_QUERY_VOLUME_INFORMATION 0x0a
|
---|
237 | #define IRP_MJ_SET_VOLUME_INFORMATION 0x0b
|
---|
238 | #define IRP_MJ_DIRECTORY_CONTROL 0x0c
|
---|
239 | #define IRP_MJ_FILE_SYSTEM_CONTROL 0x0d
|
---|
240 | #define IRP_MJ_DEVICE_CONTROL 0x0e
|
---|
241 | #define IRP_MJ_INTERNAL_DEVICE_CONTROL 0x0f
|
---|
242 | #define IRP_MJ_SHUTDOWN 0x10
|
---|
243 | #define IRP_MJ_LOCK_CONTROL 0x11
|
---|
244 | #define IRP_MJ_CLEANUP 0x12
|
---|
245 | #define IRP_MJ_CREATE_MAILSLOT 0x13
|
---|
246 | #define IRP_MJ_QUERY_SECURITY 0x14
|
---|
247 | #define IRP_MJ_SET_SECURITY 0x15
|
---|
248 | #define IRP_MJ_POWER 0x16
|
---|
249 | #define IRP_MJ_SYSTEM_CONTROL 0x17
|
---|
250 | #define IRP_MJ_DEVICE_CHANGE 0x18
|
---|
251 | #define IRP_MJ_QUERY_QUOTA 0x19
|
---|
252 | #define IRP_MJ_SET_QUOTA 0x1a
|
---|
253 | #define IRP_MJ_PNP 0x1b
|
---|
254 |
|
---|
255 | #define IRP_MN_START_DEVICE 0x00
|
---|
256 | #define IRP_MN_QUERY_REMOVE_DEVICE 0x01
|
---|
257 | #define IRP_MN_REMOVE_DEVICE 0x02
|
---|
258 | #define IRP_MN_CANCEL_REMOVE_DEVICE 0x03
|
---|
259 | #define IRP_MN_STOP_DEVICE 0x04
|
---|
260 | #define IRP_MN_QUERY_STOP_DEVICE 0x05
|
---|
261 | #define IRP_MN_CANCEL_STOP_DEVICE 0x06
|
---|
262 | #define IRP_MN_QUERY_DEVICE_RELATIONS 0x07
|
---|
263 | #define IRP_MN_QUERY_INTERFACE 0x08
|
---|
264 | #define IRP_MN_QUERY_CAPABILITIES 0x09
|
---|
265 | #define IRP_MN_QUERY_RESOURCES 0x0A
|
---|
266 | #define IRP_MN_QUERY_RESOURCE_REQUIREMENTS 0x0B
|
---|
267 | #define IRP_MN_QUERY_DEVICE_TEXT 0x0C
|
---|
268 | #define IRP_MN_FILTER_RESOURCE_REQUIREMENTS 0x0D
|
---|
269 | #define IRP_MN_READ_CONFIG 0x0F
|
---|
270 | #define IRP_MN_WRITE_CONFIG 0x10
|
---|
271 | #define IRP_MN_EJECT 0x11
|
---|
272 | #define IRP_MN_SET_LOCK 0x12
|
---|
273 | #define IRP_MN_QUERY_ID 0x13
|
---|
274 | #define IRP_MN_QUERY_PNP_DEVICE_STATE 0x14
|
---|
275 | #define IRP_MN_QUERY_BUS_INFORMATION 0x15
|
---|
276 | #define IRP_MN_DEVICE_USAGE_NOTIFICATION 0x16
|
---|
277 | #define IRP_MN_SURPRISE_REMOVAL 0x17
|
---|
278 |
|
---|
279 | #define IRP_QUOTA_CHARGED 0x01
|
---|
280 | #define IRP_ALLOCATED_MUST_SUCCEED 0x02
|
---|
281 | #define IRP_ALLOCATED_FIXED_SIZE 0x04
|
---|
282 | #define IRP_LOOKASIDE_ALLOCATION 0x08
|
---|
283 |
|
---|
284 | #define IO_TYPE_ADAPTER 0x01
|
---|
285 | #define IO_TYPE_CONTROLLER 0x02
|
---|
286 | #define IO_TYPE_DEVICE 0x03
|
---|
287 | #define IO_TYPE_DRIVER 0x04
|
---|
288 | #define IO_TYPE_FILE 0x05
|
---|
289 | #define IO_TYPE_IRP 0x06
|
---|
290 | #define IO_TYPE_MASTER_ADAPTER 0x07
|
---|
291 | #define IO_TYPE_OPEN_PACKET 0x08
|
---|
292 | #define IO_TYPE_TIMER 0x09
|
---|
293 | #define IO_TYPE_VPB 0x0a
|
---|
294 | #define IO_TYPE_ERROR_LOG 0x0b
|
---|
295 | #define IO_TYPE_ERROR_MESSAGE 0x0c
|
---|
296 | #define IO_TYPE_DEVICE_OBJECT_EXTENSION 0x0d
|
---|
297 |
|
---|
298 | typedef struct _DEVICE_OBJECT {
|
---|
299 | CSHORT Type;
|
---|
300 | USHORT Size;
|
---|
301 | LONG ReferenceCount;
|
---|
302 | struct _DRIVER_OBJECT *DriverObject;
|
---|
303 | struct _DEVICE_OBJECT *NextDevice;
|
---|
304 | struct _DEVICE_OBJECT *AttachedDevice;
|
---|
305 | struct _IRP *CurrentIrp;
|
---|
306 | PIO_TIMER Timer;
|
---|
307 | ULONG Flags;
|
---|
308 | ULONG Characteristics;
|
---|
309 | PVPB Vpb;
|
---|
310 | PVOID DeviceExtension;
|
---|
311 | DEVICE_TYPE DeviceType;
|
---|
312 | CCHAR StackSize;
|
---|
313 | union {
|
---|
314 | LIST_ENTRY ListEntry;
|
---|
315 | WAIT_CONTEXT_BLOCK Wcb;
|
---|
316 | } Queue;
|
---|
317 | ULONG AlignmentRequirement;
|
---|
318 | KDEVICE_QUEUE DeviceQueue;
|
---|
319 | KDPC Dpc;
|
---|
320 | ULONG ActiveThreadCount;
|
---|
321 | PSECURITY_DESCRIPTOR SecurityDescriptor;
|
---|
322 | KEVENT DeviceLock;
|
---|
323 | USHORT SectorSize;
|
---|
324 | USHORT Spare1;
|
---|
325 | struct _DEVOBJ_EXTENSION *DeviceObjectExtension;
|
---|
326 | PVOID Reserved;
|
---|
327 | } DEVICE_OBJECT;
|
---|
328 | typedef struct _DEVICE_OBJECT *PDEVICE_OBJECT;
|
---|
329 |
|
---|
330 | typedef struct _DRIVER_EXTENSION {
|
---|
331 | struct _DRIVER_OBJECT *DriverObject;
|
---|
332 | PVOID AddDevice;
|
---|
333 | ULONG Count;
|
---|
334 | UNICODE_STRING ServiceKeyName;
|
---|
335 | } DRIVER_EXTENSION, *PDRIVER_EXTENSION;
|
---|
336 |
|
---|
337 | typedef struct _DRIVER_OBJECT {
|
---|
338 | CSHORT Type;
|
---|
339 | CSHORT Size;
|
---|
340 | PDEVICE_OBJECT DeviceObject;
|
---|
341 | ULONG Flags;
|
---|
342 | PVOID DriverStart;
|
---|
343 | ULONG DriverSize;
|
---|
344 | PVOID DriverSection;
|
---|
345 | PDRIVER_EXTENSION DriverExtension;
|
---|
346 | UNICODE_STRING DriverName;
|
---|
347 | PUNICODE_STRING HardwareDatabase;
|
---|
348 | PVOID FastIoDispatch;
|
---|
349 | PDRIVER_INITIALIZE DriverInit;
|
---|
350 | PDRIVER_STARTIO DriverStartIo;
|
---|
351 | PDRIVER_UNLOAD DriverUnload;
|
---|
352 | PDRIVER_DISPATCH MajorFunction[IRP_MJ_MAXIMUM_FUNCTION + 1];
|
---|
353 | } DRIVER_OBJECT;
|
---|
354 | typedef struct _DRIVER_OBJECT *PDRIVER_OBJECT;
|
---|
355 |
|
---|
356 | /* Irp definitions */
|
---|
357 | typedef UCHAR KIRQL, *PKIRQL;
|
---|
358 | typedef CCHAR KPROCESSOR_MODE;
|
---|
359 |
|
---|
360 | typedef VOID (WINAPI *PDRIVER_CANCEL)(
|
---|
361 | IN struct _DEVICE_OBJECT *DeviceObject,
|
---|
362 | IN struct _IRP *Irp);
|
---|
363 |
|
---|
364 | typedef VOID (WINAPI *PKNORMAL_ROUTINE)(
|
---|
365 | IN PVOID NormalContext,
|
---|
366 | IN PVOID SystemArgument1,
|
---|
367 | IN PVOID SystemArgument2);
|
---|
368 |
|
---|
369 | typedef VOID (WINAPI *PKKERNEL_ROUTINE)(
|
---|
370 | IN struct _KAPC *Apc,
|
---|
371 | IN OUT PKNORMAL_ROUTINE *NormalRoutine,
|
---|
372 | IN OUT PVOID *NormalContext,
|
---|
373 | IN OUT PVOID *SystemArgument1,
|
---|
374 | IN OUT PVOID *SystemArgument2);
|
---|
375 |
|
---|
376 | typedef VOID (WINAPI *PKRUNDOWN_ROUTINE)(
|
---|
377 | IN struct _KAPC *Apc);
|
---|
378 |
|
---|
379 | typedef struct _KAPC {
|
---|
380 | CSHORT Type;
|
---|
381 | CSHORT Size;
|
---|
382 | ULONG Spare0;
|
---|
383 | struct _KTHREAD *Thread;
|
---|
384 | LIST_ENTRY ApcListEntry;
|
---|
385 | PKKERNEL_ROUTINE KernelRoutine;
|
---|
386 | PKRUNDOWN_ROUTINE RundownRoutine;
|
---|
387 | PKNORMAL_ROUTINE NormalRoutine;
|
---|
388 | PVOID NormalContext;
|
---|
389 | PVOID SystemArgument1;
|
---|
390 | PVOID SystemArgument2;
|
---|
391 | CCHAR ApcStateIndex;
|
---|
392 | KPROCESSOR_MODE ApcMode;
|
---|
393 | BOOLEAN Inserted;
|
---|
394 | } KAPC, *PKAPC, *RESTRICTED_POINTER PRKAPC;
|
---|
395 |
|
---|
396 | #include <pshpack1.h>
|
---|
397 | typedef struct _IRP {
|
---|
398 | CSHORT Type;
|
---|
399 | USHORT Size;
|
---|
400 | struct _MDL *MdlAddress;
|
---|
401 | ULONG Flags;
|
---|
402 | union {
|
---|
403 | struct _IRP *MasterIrp;
|
---|
404 | LONG IrpCount;
|
---|
405 | PVOID SystemBuffer;
|
---|
406 | } AssociatedIrp;
|
---|
407 | LIST_ENTRY ThreadListEntry;
|
---|
408 | IO_STATUS_BLOCK IoStatus;
|
---|
409 | KPROCESSOR_MODE RequestorMode;
|
---|
410 | BOOLEAN PendingReturned;
|
---|
411 | CHAR StackCount;
|
---|
412 | CHAR CurrentLocation;
|
---|
413 | BOOLEAN Cancel;
|
---|
414 | KIRQL CancelIrql;
|
---|
415 | CCHAR ApcEnvironment;
|
---|
416 | UCHAR AllocationFlags;
|
---|
417 | PIO_STATUS_BLOCK UserIosb;
|
---|
418 | PKEVENT UserEvent;
|
---|
419 | union {
|
---|
420 | struct {
|
---|
421 | PIO_APC_ROUTINE UserApcRoutine;
|
---|
422 | PVOID UserApcContext;
|
---|
423 | } AsynchronousParameters;
|
---|
424 | LARGE_INTEGER AllocationSize;
|
---|
425 | } Overlay;
|
---|
426 | PDRIVER_CANCEL CancelRoutine;
|
---|
427 | PVOID UserBuffer;
|
---|
428 | union {
|
---|
429 | struct {
|
---|
430 | union {
|
---|
431 | KDEVICE_QUEUE_ENTRY DeviceQueueEntry;
|
---|
432 | struct {
|
---|
433 | PVOID DriverContext[4];
|
---|
434 | } DUMMYSTRUCTNAME;
|
---|
435 | } DUMMYUNIONNAME1;
|
---|
436 | PETHREAD Thread;
|
---|
437 | PCHAR AuxiliaryBuffer;
|
---|
438 | struct {
|
---|
439 | LIST_ENTRY ListEntry;
|
---|
440 | union {
|
---|
441 | struct _IO_STACK_LOCATION *CurrentStackLocation;
|
---|
442 | ULONG PacketType;
|
---|
443 | } DUMMYUNIONNAME2;
|
---|
444 | } DUMMYSTRUCTNAME;
|
---|
445 | struct _FILE_OBJECT *OriginalFileObject;
|
---|
446 | } Overlay;
|
---|
447 | KAPC Apc;
|
---|
448 | PVOID CompletionKey;
|
---|
449 | } Tail;
|
---|
450 | } IRP;
|
---|
451 | typedef struct _IRP *PIRP;
|
---|
452 | #include <poppack.h>
|
---|
453 |
|
---|
454 | /* MDL definitions */
|
---|
455 |
|
---|
456 | typedef VOID (WINAPI *PINTERFACE_REFERENCE)(
|
---|
457 | PVOID Context);
|
---|
458 |
|
---|
459 | typedef VOID (WINAPI *PINTERFACE_DEREFERENCE)(
|
---|
460 | PVOID Context);
|
---|
461 |
|
---|
462 | typedef struct _INTERFACE {
|
---|
463 | USHORT Size;
|
---|
464 | USHORT Version;
|
---|
465 | PVOID Context;
|
---|
466 | PINTERFACE_REFERENCE InterfaceReference;
|
---|
467 | PINTERFACE_DEREFERENCE InterfaceDereference;
|
---|
468 | } INTERFACE, *PINTERFACE;
|
---|
469 |
|
---|
470 | typedef struct _SECTION_OBJECT_POINTERS {
|
---|
471 | PVOID DataSectionObject;
|
---|
472 | PVOID SharedCacheMap;
|
---|
473 | PVOID ImageSectionObject;
|
---|
474 | } SECTION_OBJECT_POINTERS, *PSECTION_OBJECT_POINTERS;
|
---|
475 |
|
---|
476 | typedef struct _IO_COMPLETION_CONTEXT {
|
---|
477 | PVOID Port;
|
---|
478 | PVOID Key;
|
---|
479 | } IO_COMPLETION_CONTEXT, *PIO_COMPLETION_CONTEXT;
|
---|
480 |
|
---|
481 | typedef enum _DEVICE_RELATION_TYPE {
|
---|
482 | BusRelations,
|
---|
483 | EjectionRelations,
|
---|
484 | PowerRelations,
|
---|
485 | RemovalRelations,
|
---|
486 | TargetDeviceRelation,
|
---|
487 | SingleBusRelations
|
---|
488 | } DEVICE_RELATION_TYPE, *PDEVICE_RELATION_TYPE;
|
---|
489 |
|
---|
490 | typedef struct _FILE_OBJECT {
|
---|
491 | CSHORT Type;
|
---|
492 | CSHORT Size;
|
---|
493 | PDEVICE_OBJECT DeviceObject;
|
---|
494 | PVPB Vpb;
|
---|
495 | PVOID FsContext;
|
---|
496 | PVOID FsContext2;
|
---|
497 | PSECTION_OBJECT_POINTERS SectionObjectPointer;
|
---|
498 | PVOID PrivateCacheMap;
|
---|
499 | NTSTATUS FinalStatus;
|
---|
500 | struct _FILE_OBJECT *RelatedFileObject;
|
---|
501 | BOOLEAN LockOperation;
|
---|
502 | BOOLEAN DeletePending;
|
---|
503 | BOOLEAN ReadAccess;
|
---|
504 | BOOLEAN WriteAccess;
|
---|
505 | BOOLEAN DeleteAccess;
|
---|
506 | BOOLEAN SharedRead;
|
---|
507 | BOOLEAN SharedWrite;
|
---|
508 | BOOLEAN SharedDelete;
|
---|
509 | ULONG Flags;
|
---|
510 | UNICODE_STRING FileName;
|
---|
511 | LARGE_INTEGER CurrentByteOffset;
|
---|
512 | ULONG Waiters;
|
---|
513 | ULONG Busy;
|
---|
514 | PVOID LastLock;
|
---|
515 | KEVENT Lock;
|
---|
516 | KEVENT Event;
|
---|
517 | PIO_COMPLETION_CONTEXT CompletionContext;
|
---|
518 | } FILE_OBJECT;
|
---|
519 | typedef struct _FILE_OBJECT *PFILE_OBJECT;
|
---|
520 |
|
---|
521 | #define INITIAL_PRIVILEGE_COUNT 3
|
---|
522 |
|
---|
523 | typedef struct _INITIAL_PRIVILEGE_SET {
|
---|
524 | ULONG PrivilegeCount;
|
---|
525 | ULONG Control;
|
---|
526 | LUID_AND_ATTRIBUTES Privilege[INITIAL_PRIVILEGE_COUNT];
|
---|
527 | } INITIAL_PRIVILEGE_SET, * PINITIAL_PRIVILEGE_SET;
|
---|
528 |
|
---|
529 | typedef struct _SECURITY_SUBJECT_CONTEXT {
|
---|
530 | PACCESS_TOKEN ClientToken;
|
---|
531 | SECURITY_IMPERSONATION_LEVEL ImpersonationLevel;
|
---|
532 | PACCESS_TOKEN PrimaryToken;
|
---|
533 | PVOID ProcessAuditId;
|
---|
534 | } SECURITY_SUBJECT_CONTEXT, *PSECURITY_SUBJECT_CONTEXT;
|
---|
535 |
|
---|
536 | typedef struct _ACCESS_STATE {
|
---|
537 | LUID OperationID;
|
---|
538 | BOOLEAN SecurityEvaluated;
|
---|
539 | BOOLEAN GenerateAudit;
|
---|
540 | BOOLEAN GenerateOnClose;
|
---|
541 | BOOLEAN PrivilegesAllocated;
|
---|
542 | ULONG Flags;
|
---|
543 | ACCESS_MASK RemainingDesiredAccess;
|
---|
544 | ACCESS_MASK PreviouslyGrantedAccess;
|
---|
545 | ACCESS_MASK OriginalDesiredAccess;
|
---|
546 | SECURITY_SUBJECT_CONTEXT SubjectSecurityContext;
|
---|
547 | PSECURITY_DESCRIPTOR SecurityDescriptor;
|
---|
548 | PVOID AuxData;
|
---|
549 | union {
|
---|
550 | INITIAL_PRIVILEGE_SET InitialPrivilegeSet;
|
---|
551 | PRIVILEGE_SET PrivilegeSet;
|
---|
552 | } Privileges;
|
---|
553 |
|
---|
554 | BOOLEAN AuditPrivileges;
|
---|
555 | UNICODE_STRING ObjectName;
|
---|
556 | UNICODE_STRING ObjectTypeName;
|
---|
557 | } ACCESS_STATE, *PACCESS_STATE;
|
---|
558 |
|
---|
559 | typedef struct _IO_SECURITY_CONTEXT {
|
---|
560 | PSECURITY_QUALITY_OF_SERVICE SecurityQos;
|
---|
561 | PACCESS_STATE AccessState;
|
---|
562 | ACCESS_MASK DesiredAccess;
|
---|
563 | ULONG FullCreateOptions;
|
---|
564 | } IO_SECURITY_CONTEXT, *PIO_SECURITY_CONTEXT;
|
---|
565 |
|
---|
566 | typedef struct _DEVICE_CAPABILITIES {
|
---|
567 | USHORT Size;
|
---|
568 | USHORT Version;
|
---|
569 | ULONG DeviceD1 : 1;
|
---|
570 | ULONG DeviceD2 : 1;
|
---|
571 | ULONG LockSupported : 1;
|
---|
572 | ULONG EjectSupported : 1;
|
---|
573 | ULONG Removable : 1;
|
---|
574 | ULONG DockDevice : 1;
|
---|
575 | ULONG UniqueID : 1;
|
---|
576 | ULONG SilentInstall : 1;
|
---|
577 | ULONG RawDeviceOK : 1;
|
---|
578 | ULONG SurpriseRemovalOK : 1;
|
---|
579 | ULONG WakeFromD0 : 1;
|
---|
580 | ULONG WakeFromD1 : 1;
|
---|
581 | ULONG WakeFromD2 : 1;
|
---|
582 | ULONG WakeFromD3 : 1;
|
---|
583 | ULONG HardwareDisabled : 1;
|
---|
584 | ULONG NonDynamic : 1;
|
---|
585 | ULONG WarmEjectSupported : 1;
|
---|
586 | ULONG NoDisplayInUI : 1;
|
---|
587 | ULONG Reserved : 14;
|
---|
588 | ULONG Address;
|
---|
589 | ULONG UINumber;
|
---|
590 | DEVICE_POWER_STATE DeviceState[PowerSystemMaximum];
|
---|
591 | SYSTEM_POWER_STATE SystemWake;
|
---|
592 | DEVICE_POWER_STATE DeviceWake;
|
---|
593 | ULONG D1Latency;
|
---|
594 | ULONG D2Latency;
|
---|
595 | ULONG D3Latency;
|
---|
596 | } DEVICE_CAPABILITIES, *PDEVICE_CAPABILITIES;
|
---|
597 |
|
---|
598 | typedef enum _INTERFACE_TYPE {
|
---|
599 | InterfaceTypeUndefined = -1,
|
---|
600 | Internal,
|
---|
601 | Isa,
|
---|
602 | Eisa,
|
---|
603 | MicroChannel,
|
---|
604 | TurboChannel,
|
---|
605 | PCIBus,
|
---|
606 | VMEBus,
|
---|
607 | NuBus,
|
---|
608 | PCMCIABus,
|
---|
609 | CBus,
|
---|
610 | MPIBus,
|
---|
611 | MPSABus,
|
---|
612 | ProcessorInternal,
|
---|
613 | InternalPowerBus,
|
---|
614 | PNPISABus,
|
---|
615 | PNPBus,
|
---|
616 | MaximumInterfaceType
|
---|
617 | } INTERFACE_TYPE, *PINTERFACE_TYPE;
|
---|
618 |
|
---|
619 | typedef LARGE_INTEGER PHYSICAL_ADDRESS, *PPHYSICAL_ADDRESS;
|
---|
620 |
|
---|
621 | #define IO_RESOURCE_PREFERRED 0x01
|
---|
622 | #define IO_RESOURCE_DEFAULT 0x02
|
---|
623 | #define IO_RESOURCE_ALTERNATIVE 0x08
|
---|
624 |
|
---|
625 | typedef struct _IO_RESOURCE_DESCRIPTOR {
|
---|
626 | UCHAR Option;
|
---|
627 | UCHAR Type;
|
---|
628 | UCHAR ShareDisposition;
|
---|
629 | UCHAR Spare1;
|
---|
630 | USHORT Flags;
|
---|
631 | USHORT Spare2;
|
---|
632 | union {
|
---|
633 | struct {
|
---|
634 | ULONG Length;
|
---|
635 | ULONG Alignment;
|
---|
636 | PHYSICAL_ADDRESS MinimumAddress;
|
---|
637 | PHYSICAL_ADDRESS MaximumAddress;
|
---|
638 | } Port;
|
---|
639 | struct {
|
---|
640 | ULONG Length;
|
---|
641 | ULONG Alignment;
|
---|
642 | PHYSICAL_ADDRESS MinimumAddress;
|
---|
643 | PHYSICAL_ADDRESS MaximumAddress;
|
---|
644 | } Memory;
|
---|
645 | struct {
|
---|
646 | ULONG MinimumVector;
|
---|
647 | ULONG MaximumVector;
|
---|
648 | } Interrupt;
|
---|
649 | struct {
|
---|
650 | ULONG MinimumChannel;
|
---|
651 | ULONG MaximumChannel;
|
---|
652 | } Dma;
|
---|
653 | struct {
|
---|
654 | ULONG Length;
|
---|
655 | ULONG Alignment;
|
---|
656 | PHYSICAL_ADDRESS MinimumAddress;
|
---|
657 | PHYSICAL_ADDRESS MaximumAddress;
|
---|
658 | } Generic;
|
---|
659 | struct {
|
---|
660 | ULONG Data[3];
|
---|
661 | } DevicePrivate;
|
---|
662 | struct {
|
---|
663 | ULONG Length;
|
---|
664 | ULONG MinBusNumber;
|
---|
665 | ULONG MaxBusNumber;
|
---|
666 | ULONG Reserved;
|
---|
667 | } BusNumber;
|
---|
668 | struct {
|
---|
669 | ULONG Priority;
|
---|
670 | ULONG Reserved1;
|
---|
671 | ULONG Reserved2;
|
---|
672 | } ConfigData;
|
---|
673 | } u;
|
---|
674 | } IO_RESOURCE_DESCRIPTOR, *PIO_RESOURCE_DESCRIPTOR;
|
---|
675 |
|
---|
676 | typedef struct _IO_RESOURCE_LIST {
|
---|
677 | USHORT Version;
|
---|
678 | USHORT Revision;
|
---|
679 | ULONG Count;
|
---|
680 | IO_RESOURCE_DESCRIPTOR Descriptors[1];
|
---|
681 | } IO_RESOURCE_LIST, *PIO_RESOURCE_LIST;
|
---|
682 |
|
---|
683 | typedef struct _IO_RESOURCE_REQUIREMENTS_LIST {
|
---|
684 | ULONG ListSize;
|
---|
685 | INTERFACE_TYPE InterfaceType;
|
---|
686 | ULONG BusNumber;
|
---|
687 | ULONG SlotNumber;
|
---|
688 | ULONG Reserved[3];
|
---|
689 | ULONG AlternativeLists;
|
---|
690 | IO_RESOURCE_LIST List[1];
|
---|
691 | } IO_RESOURCE_REQUIREMENTS_LIST, *PIO_RESOURCE_REQUIREMENTS_LIST;
|
---|
692 |
|
---|
693 | typedef enum _BUS_QUERY_ID_TYPE {
|
---|
694 | BusQueryDeviceID,
|
---|
695 | BusQueryHardwareIDs,
|
---|
696 | BusQueryCompatibleIDs,
|
---|
697 | BusQueryInstanceID,
|
---|
698 | BusQueryDeviceSerialNumber
|
---|
699 | } BUS_QUERY_ID_TYPE, *PBUS_QUERY_ID_TYPE;
|
---|
700 |
|
---|
701 | typedef enum {
|
---|
702 | DevicePropertyDeviceDescription,
|
---|
703 | DevicePropertyHardwareID,
|
---|
704 | DevicePropertyCompatibleIDs,
|
---|
705 | DevicePropertyBootConfiguration,
|
---|
706 | DevicePropertyBootConfigurationTranslated,
|
---|
707 | DevicePropertyClassName,
|
---|
708 | DevicePropertyClassGuid,
|
---|
709 | DevicePropertyDriverKeyName,
|
---|
710 | DevicePropertyManufacturer,
|
---|
711 | DevicePropertyFriendlyName,
|
---|
712 | DevicePropertyLocationInformation,
|
---|
713 | DevicePropertyPhysicalDeviceObjectName,
|
---|
714 | DevicePropertyBusTypeGuid,
|
---|
715 | DevicePropertyLegacyBusType,
|
---|
716 | DevicePropertyBusNumber,
|
---|
717 | DevicePropertyEnumeratorName,
|
---|
718 | DevicePropertyAddress,
|
---|
719 | DevicePropertyUINumber,
|
---|
720 | DevicePropertyInstallState,
|
---|
721 | DevicePropertyRemovalPolicy
|
---|
722 | } DEVICE_REGISTRY_PROPERTY;
|
---|
723 |
|
---|
724 | typedef enum _DEVICE_TEXT_TYPE {
|
---|
725 | DeviceTextDescription,
|
---|
726 | DeviceTextLocationInformation
|
---|
727 | } DEVICE_TEXT_TYPE, *PDEVICE_TEXT_TYPE;
|
---|
728 |
|
---|
729 | typedef enum _DEVICE_USAGE_NOTIFICATION_TYPE {
|
---|
730 | DeviceUsageTypeUndefined,
|
---|
731 | DeviceUsageTypePaging,
|
---|
732 | DeviceUsageTypeHibernation,
|
---|
733 | DeviceUsageTypeDumpFile
|
---|
734 | } DEVICE_USAGE_NOTIFICATION_TYPE;
|
---|
735 |
|
---|
736 | typedef struct _POWER_SEQUENCE {
|
---|
737 | ULONG SequenceD1;
|
---|
738 | ULONG SequenceD2;
|
---|
739 | ULONG SequenceD3;
|
---|
740 | } POWER_SEQUENCE, *PPOWER_SEQUENCE;
|
---|
741 |
|
---|
742 | typedef enum _POWER_STATE_TYPE {
|
---|
743 | SystemPowerState,
|
---|
744 | DevicePowerState
|
---|
745 | } POWER_STATE_TYPE, *PPOWER_STATE_TYPE;
|
---|
746 |
|
---|
747 | typedef union _POWER_STATE {
|
---|
748 | SYSTEM_POWER_STATE SystemState;
|
---|
749 | DEVICE_POWER_STATE DeviceState;
|
---|
750 | } POWER_STATE, *PPOWER_STATE;
|
---|
751 |
|
---|
752 | typedef struct _CM_PARTIAL_RESOURCE_DESCRIPTOR {
|
---|
753 | UCHAR Type;
|
---|
754 | UCHAR ShareDisposition;
|
---|
755 | USHORT Flags;
|
---|
756 | union {
|
---|
757 | struct {
|
---|
758 | PHYSICAL_ADDRESS Start;
|
---|
759 | ULONG Length;
|
---|
760 | } Generic;
|
---|
761 | struct {
|
---|
762 | PHYSICAL_ADDRESS Start;
|
---|
763 | ULONG Length;
|
---|
764 | } Port;
|
---|
765 | struct {
|
---|
766 | ULONG Level;
|
---|
767 | ULONG Vector;
|
---|
768 | ULONG Affinity;
|
---|
769 | } Interrupt;
|
---|
770 | struct {
|
---|
771 | PHYSICAL_ADDRESS Start;
|
---|
772 | ULONG Length;
|
---|
773 | } Memory;
|
---|
774 | struct {
|
---|
775 | ULONG Channel;
|
---|
776 | ULONG Port;
|
---|
777 | ULONG Reserved1;
|
---|
778 | } Dma;
|
---|
779 | struct {
|
---|
780 | ULONG Data[3];
|
---|
781 | } DevicePrivate;
|
---|
782 | struct {
|
---|
783 | ULONG Start;
|
---|
784 | ULONG Length;
|
---|
785 | ULONG Reserved;
|
---|
786 | } BusNumber;
|
---|
787 | struct {
|
---|
788 | ULONG DataSize;
|
---|
789 | ULONG Reserved1;
|
---|
790 | ULONG Reserved2;
|
---|
791 | } DeviceSpecificData;
|
---|
792 | } u;
|
---|
793 | } CM_PARTIAL_RESOURCE_DESCRIPTOR, *PCM_PARTIAL_RESOURCE_DESCRIPTOR;
|
---|
794 |
|
---|
795 | typedef struct _CM_PARTIAL_RESOURCE_LIST {
|
---|
796 | USHORT Version;
|
---|
797 | USHORT Revision;
|
---|
798 | ULONG Count;
|
---|
799 | CM_PARTIAL_RESOURCE_DESCRIPTOR PartialDescriptors[1];
|
---|
800 | } CM_PARTIAL_RESOURCE_LIST, *PCM_PARTIAL_RESOURCE_LIST;
|
---|
801 |
|
---|
802 | typedef struct _CM_FULL_RESOURCE_DESCRIPTOR {
|
---|
803 | INTERFACE_TYPE InterfaceType;
|
---|
804 | ULONG BusNumber;
|
---|
805 | CM_PARTIAL_RESOURCE_LIST PartialResourceList;
|
---|
806 | } CM_FULL_RESOURCE_DESCRIPTOR, *PCM_FULL_RESOURCE_DESCRIPTOR;
|
---|
807 |
|
---|
808 | typedef struct _CM_RESOURCE_LIST {
|
---|
809 | ULONG Count;
|
---|
810 | CM_FULL_RESOURCE_DESCRIPTOR List[1];
|
---|
811 | } CM_RESOURCE_LIST, *PCM_RESOURCE_LIST;
|
---|
812 |
|
---|
813 | typedef NTSTATUS (WINAPI *PIO_COMPLETION_ROUTINE)(
|
---|
814 | IN struct _DEVICE_OBJECT *DeviceObject,
|
---|
815 | IN struct _IRP *Irp,
|
---|
816 | IN PVOID Context);
|
---|
817 |
|
---|
818 | #define SL_PENDING_RETURNED 0x01
|
---|
819 | #define SL_INVOKE_ON_CANCEL 0x20
|
---|
820 | #define SL_INVOKE_ON_SUCCESS 0x40
|
---|
821 | #define SL_INVOKE_ON_ERROR 0x80
|
---|
822 |
|
---|
823 | #include <pshpack1.h>
|
---|
824 | typedef struct _IO_STACK_LOCATION {
|
---|
825 | UCHAR MajorFunction;
|
---|
826 | UCHAR MinorFunction;
|
---|
827 | UCHAR Flags;
|
---|
828 | UCHAR Control;
|
---|
829 | union {
|
---|
830 | struct {
|
---|
831 | PIO_SECURITY_CONTEXT SecurityContext;
|
---|
832 | ULONG Options;
|
---|
833 | USHORT POINTER_ALIGNMENT FileAttributes;
|
---|
834 | USHORT ShareAccess;
|
---|
835 | ULONG POINTER_ALIGNMENT EaLength;
|
---|
836 | } Create;
|
---|
837 | struct {
|
---|
838 | ULONG Length;
|
---|
839 | ULONG POINTER_ALIGNMENT Key;
|
---|
840 | LARGE_INTEGER ByteOffset;
|
---|
841 | } Read;
|
---|
842 | struct {
|
---|
843 | ULONG Length;
|
---|
844 | ULONG POINTER_ALIGNMENT Key;
|
---|
845 | LARGE_INTEGER ByteOffset;
|
---|
846 | } Write;
|
---|
847 | struct {
|
---|
848 | ULONG Length;
|
---|
849 | FILE_INFORMATION_CLASS POINTER_ALIGNMENT FileInformationClass;
|
---|
850 | } QueryFile;
|
---|
851 | struct {
|
---|
852 | ULONG Length;
|
---|
853 | FILE_INFORMATION_CLASS POINTER_ALIGNMENT FileInformationClass;
|
---|
854 | PFILE_OBJECT FileObject;
|
---|
855 | union {
|
---|
856 | struct {
|
---|
857 | BOOLEAN ReplaceIfExists;
|
---|
858 | BOOLEAN AdvanceOnly;
|
---|
859 | } DUMMYSTRUCTNAME;
|
---|
860 | ULONG ClusterCount;
|
---|
861 | HANDLE DeleteHandle;
|
---|
862 | } DUMMYUNIONNAME;
|
---|
863 | } SetFile;
|
---|
864 | struct {
|
---|
865 | ULONG Length;
|
---|
866 | FS_INFORMATION_CLASS POINTER_ALIGNMENT FsInformationClass;
|
---|
867 | } QueryVolume;
|
---|
868 | struct {
|
---|
869 | ULONG OutputBufferLength;
|
---|
870 | ULONG POINTER_ALIGNMENT InputBufferLength;
|
---|
871 | ULONG POINTER_ALIGNMENT IoControlCode;
|
---|
872 | PVOID Type3InputBuffer;
|
---|
873 | } DeviceIoControl;
|
---|
874 | struct {
|
---|
875 | SECURITY_INFORMATION SecurityInformation;
|
---|
876 | ULONG POINTER_ALIGNMENT Length;
|
---|
877 | } QuerySecurity;
|
---|
878 | struct {
|
---|
879 | SECURITY_INFORMATION SecurityInformation;
|
---|
880 | PSECURITY_DESCRIPTOR SecurityDescriptor;
|
---|
881 | } SetSecurity;
|
---|
882 | struct {
|
---|
883 | PVPB Vpb;
|
---|
884 | PDEVICE_OBJECT DeviceObject;
|
---|
885 | } MountVolume;
|
---|
886 | struct {
|
---|
887 | PVPB Vpb;
|
---|
888 | PDEVICE_OBJECT DeviceObject;
|
---|
889 | } VerifyVolume;
|
---|
890 | struct {
|
---|
891 | struct _SCSI_REQUEST_BLOCK *Srb;
|
---|
892 | } Scsi;
|
---|
893 | struct {
|
---|
894 | DEVICE_RELATION_TYPE Type;
|
---|
895 | } QueryDeviceRelations;
|
---|
896 | struct {
|
---|
897 | CONST GUID *InterfaceType;
|
---|
898 | USHORT Size;
|
---|
899 | USHORT Version;
|
---|
900 | PINTERFACE Interface;
|
---|
901 | PVOID InterfaceSpecificData;
|
---|
902 | } QueryInterface;
|
---|
903 | struct {
|
---|
904 | PDEVICE_CAPABILITIES Capabilities;
|
---|
905 | } DeviceCapabilities;
|
---|
906 | struct {
|
---|
907 | PIO_RESOURCE_REQUIREMENTS_LIST IoResourceRequirementList;
|
---|
908 | } FilterResourceRequirements;
|
---|
909 | struct {
|
---|
910 | ULONG WhichSpace;
|
---|
911 | PVOID Buffer;
|
---|
912 | ULONG Offset;
|
---|
913 | ULONG POINTER_ALIGNMENT Length;
|
---|
914 | } ReadWriteConfig;
|
---|
915 | struct {
|
---|
916 | BOOLEAN Lock;
|
---|
917 | } SetLock;
|
---|
918 | struct {
|
---|
919 | BUS_QUERY_ID_TYPE IdType;
|
---|
920 | } QueryId;
|
---|
921 | struct {
|
---|
922 | DEVICE_TEXT_TYPE DeviceTextType;
|
---|
923 | LCID POINTER_ALIGNMENT LocaleId;
|
---|
924 | } QueryDeviceText;
|
---|
925 | struct {
|
---|
926 | BOOLEAN InPath;
|
---|
927 | BOOLEAN Reserved[3];
|
---|
928 | DEVICE_USAGE_NOTIFICATION_TYPE POINTER_ALIGNMENT Type;
|
---|
929 | } UsageNotification;
|
---|
930 | struct {
|
---|
931 | SYSTEM_POWER_STATE PowerState;
|
---|
932 | } WaitWake;
|
---|
933 | struct {
|
---|
934 | PPOWER_SEQUENCE PowerSequence;
|
---|
935 | } PowerSequence;
|
---|
936 | struct {
|
---|
937 | ULONG SystemContext;
|
---|
938 | POWER_STATE_TYPE POINTER_ALIGNMENT Type;
|
---|
939 | POWER_STATE POINTER_ALIGNMENT State;
|
---|
940 | POWER_ACTION POINTER_ALIGNMENT ShutdownType;
|
---|
941 | } Power;
|
---|
942 | struct {
|
---|
943 | PCM_RESOURCE_LIST AllocatedResources;
|
---|
944 | PCM_RESOURCE_LIST AllocatedResourcesTranslated;
|
---|
945 | } StartDevice;
|
---|
946 | struct {
|
---|
947 | ULONG_PTR ProviderId;
|
---|
948 | PVOID DataPath;
|
---|
949 | ULONG BufferSize;
|
---|
950 | PVOID Buffer;
|
---|
951 | } WMI;
|
---|
952 | struct {
|
---|
953 | PVOID Argument1;
|
---|
954 | PVOID Argument2;
|
---|
955 | PVOID Argument3;
|
---|
956 | PVOID Argument4;
|
---|
957 | } Others;
|
---|
958 | } Parameters;
|
---|
959 | PDEVICE_OBJECT DeviceObject;
|
---|
960 | PFILE_OBJECT FileObject;
|
---|
961 | PIO_COMPLETION_ROUTINE CompletionRoutine;
|
---|
962 | PVOID Context;
|
---|
963 | } IO_STACK_LOCATION, *PIO_STACK_LOCATION;
|
---|
964 | #include <poppack.h>
|
---|
965 |
|
---|
966 | typedef struct _MDL {
|
---|
967 | struct _MDL *Next;
|
---|
968 | CSHORT Size;
|
---|
969 | CSHORT MdlFlags;
|
---|
970 | struct _EPROCESS *Process;
|
---|
971 | PVOID MappedSystemVa;
|
---|
972 | PVOID StartVa;
|
---|
973 | ULONG ByteCount;
|
---|
974 | ULONG ByteOffset;
|
---|
975 | } MDL, *PMDL;
|
---|
976 |
|
---|
977 | typedef struct _KTIMER {
|
---|
978 | DISPATCHER_HEADER Header;
|
---|
979 | ULARGE_INTEGER DueTime;
|
---|
980 | LIST_ENTRY TimerListEntry;
|
---|
981 | struct _KDPC *Dpc;
|
---|
982 | LONG Period;
|
---|
983 | } KTIMER, *PKTIMER;
|
---|
984 |
|
---|
985 | typedef struct _KSYSTEM_TIME {
|
---|
986 | ULONG LowPart;
|
---|
987 | LONG High1Time;
|
---|
988 | LONG High2Time;
|
---|
989 | } KSYSTEM_TIME, *PKSYSTEM_TIME;
|
---|
990 |
|
---|
991 | typedef enum _NT_PRODUCT_TYPE {
|
---|
992 | NtProductWinNt = 1,
|
---|
993 | NtProductLanManNt,
|
---|
994 | NtProductServer
|
---|
995 | } NT_PRODUCT_TYPE, *PNT_PRODUCT_TYPE;
|
---|
996 |
|
---|
997 | #define PROCESSOR_FEATURE_MAX 64
|
---|
998 |
|
---|
999 | typedef enum _ALTERNATIVE_ARCHITECTURE_TYPE
|
---|
1000 | {
|
---|
1001 | StandardDesign,
|
---|
1002 | NEC98x86,
|
---|
1003 | EndAlternatives
|
---|
1004 | } ALTERNATIVE_ARCHITECTURE_TYPE;
|
---|
1005 |
|
---|
1006 | typedef struct _KUSER_SHARED_DATA {
|
---|
1007 | ULONG TickCountLowDeprecated;
|
---|
1008 | ULONG TickCountMultiplier;
|
---|
1009 | volatile KSYSTEM_TIME InterruptTime;
|
---|
1010 | volatile KSYSTEM_TIME SystemTime;
|
---|
1011 | volatile KSYSTEM_TIME TimeZoneBias;
|
---|
1012 | USHORT ImageNumberLow;
|
---|
1013 | USHORT ImageNumberHigh;
|
---|
1014 | WCHAR NtSystemRoot[260];
|
---|
1015 | ULONG MaxStckTraceDepth;
|
---|
1016 | ULONG CryptoExponent;
|
---|
1017 | ULONG TimeZoneId;
|
---|
1018 | ULONG LargePageMinimum;
|
---|
1019 | ULONG Reserverd2[7];
|
---|
1020 | NT_PRODUCT_TYPE NtProductType;
|
---|
1021 | BOOLEAN ProductTypeIsValid;
|
---|
1022 | ULONG MajorNtVersion;
|
---|
1023 | ULONG MinorNtVersion;
|
---|
1024 | BOOLEAN ProcessorFeatures[PROCESSOR_FEATURE_MAX];
|
---|
1025 | ULONG Reserved1;
|
---|
1026 | ULONG Reserved3;
|
---|
1027 | volatile ULONG TimeSlip;
|
---|
1028 | ALTERNATIVE_ARCHITECTURE_TYPE AlternativeArchitecture;
|
---|
1029 | LARGE_INTEGER SystemExpirationDate;
|
---|
1030 | ULONG SuiteMask;
|
---|
1031 | BOOLEAN KdDebuggerEnabled;
|
---|
1032 | volatile ULONG ActiveConsoleId;
|
---|
1033 | volatile ULONG DismountCount;
|
---|
1034 | ULONG ComPlusPackage;
|
---|
1035 | ULONG LastSystemRITEventTickCount;
|
---|
1036 | ULONG NumberOfPhysicalPages;
|
---|
1037 | BOOLEAN SafeBootMode;
|
---|
1038 | ULONG TraceLogging;
|
---|
1039 | ULONGLONG Fill0;
|
---|
1040 | ULONGLONG SystemCall[4];
|
---|
1041 | union {
|
---|
1042 | volatile KSYSTEM_TIME TickCount;
|
---|
1043 | volatile ULONG64 TickCountQuad;
|
---|
1044 | } DUMMYUNIONNAME;
|
---|
1045 | } KSHARED_USER_DATA, *PKSHARED_USER_DATA;
|
---|
1046 |
|
---|
1047 | typedef enum _MM_SYSTEM_SIZE
|
---|
1048 | {
|
---|
1049 | MmSmallSystem,
|
---|
1050 | MmMediumSystem,
|
---|
1051 | MmLargeSystem
|
---|
1052 | } MM_SYSTEMSIZE;
|
---|
1053 |
|
---|
1054 | NTSTATUS WINAPI ObCloseHandle(IN HANDLE handle);
|
---|
1055 |
|
---|
1056 | #ifdef NONAMELESSUNION
|
---|
1057 | # ifdef NONAMELESSSTRUCT
|
---|
1058 | # define IoGetCurrentIrpStackLocation(_Irp) ((_Irp)->Tail.Overlay.s.u2.CurrentStackLocation)
|
---|
1059 | # define IoGetNextIrpStackLocation(_Irp) ((_Irp)->Tail.Overlay.s.u2.CurrentStackLocation - 1)
|
---|
1060 | # else
|
---|
1061 | # define IoGetCurrentIrpStackLocation(_Irp) ((_Irp)->Tail.Overlay.u2.CurrentStackLocation)
|
---|
1062 | # define IoGetNextIrpStackLocation(_Irp) ((_Irp)->Tail.Overlay.u2.CurrentStackLocation - 1)
|
---|
1063 | # endif
|
---|
1064 | #else
|
---|
1065 | # ifdef NONAMELESSSTRUCT
|
---|
1066 | # define IoGetCurrentIrpStackLocation(_Irp) ((_Irp)->Tail.Overlay.s.CurrentStackLocation)
|
---|
1067 | # define IoGetNextIrpStackLocation(_Irp) ((_Irp)->Tail.Overlay.s.CurrentStackLocation - 1)
|
---|
1068 | # else
|
---|
1069 | # define IoGetCurrentIrpStackLocation(_Irp) ((_Irp)->Tail.Overlay.CurrentStackLocation)
|
---|
1070 | # define IoGetNextIrpStackLocation(_Irp) ((_Irp)->Tail.Overlay.CurrentStackLocation - 1)
|
---|
1071 | # endif
|
---|
1072 | #endif
|
---|
1073 |
|
---|
1074 | #define KernelMode 0
|
---|
1075 | #define UserMode 1
|
---|
1076 |
|
---|
1077 | /* directory object access rights */
|
---|
1078 | #define DIRECTORY_QUERY 0x0001
|
---|
1079 | #define DIRECTORY_TRAVERSE 0x0002
|
---|
1080 | #define DIRECTORY_CREATE_OBJECT 0x0004
|
---|
1081 | #define DIRECTORY_CREATE_SUBDIRECTORY 0x0008
|
---|
1082 | #define DIRECTORY_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0xF)
|
---|
1083 |
|
---|
1084 | /* symbolic link access rights */
|
---|
1085 | #define SYMBOLIC_LINK_QUERY 0x0001
|
---|
1086 | #define SYMBOLIC_LINK_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0x1)
|
---|
1087 |
|
---|
1088 | PVOID WINAPI ExAllocatePool(POOL_TYPE,SIZE_T);
|
---|
1089 | PVOID WINAPI ExAllocatePoolWithQuota(POOL_TYPE,SIZE_T);
|
---|
1090 | PVOID WINAPI ExAllocatePoolWithTag(POOL_TYPE,SIZE_T,ULONG);
|
---|
1091 | PVOID WINAPI ExAllocatePoolWithQuotaTag(POOL_TYPE,SIZE_T,ULONG);
|
---|
1092 | void WINAPI ExFreePool(PVOID);
|
---|
1093 | void WINAPI ExFreePoolWithTag(PVOID,ULONG);
|
---|
1094 |
|
---|
1095 | NTSTATUS WINAPI IoAllocateDriverObjectExtension(PDRIVER_OBJECT,PVOID,ULONG,PVOID*);
|
---|
1096 | PVOID WINAPI IoAllocateErrorLogEntry(PVOID,UCHAR);
|
---|
1097 | PIRP WINAPI IoAllocateIrp(CCHAR,BOOLEAN);
|
---|
1098 | NTSTATUS WINAPI IoCallDriver(DEVICE_OBJECT*,IRP*);
|
---|
1099 | VOID WINAPI IoCompleteRequest(IRP*,UCHAR);
|
---|
1100 | NTSTATUS WINAPI IoCreateDevice(DRIVER_OBJECT*,ULONG,UNICODE_STRING*,DEVICE_TYPE,ULONG,BOOLEAN,DEVICE_OBJECT**);
|
---|
1101 | NTSTATUS WINAPI IoCreateDriver(UNICODE_STRING*,PDRIVER_INITIALIZE);
|
---|
1102 | NTSTATUS WINAPI IoCreateSymbolicLink(UNICODE_STRING*,UNICODE_STRING*);
|
---|
1103 | void WINAPI IoDeleteDevice(DEVICE_OBJECT*);
|
---|
1104 | void WINAPI IoDeleteDriver(DRIVER_OBJECT*);
|
---|
1105 | NTSTATUS WINAPI IoDeleteSymbolicLink(UNICODE_STRING*);
|
---|
1106 | void WINAPI IoFreeIrp(IRP*);
|
---|
1107 | PEPROCESS WINAPI IoGetCurrentProcess(void);
|
---|
1108 | NTSTATUS WINAPI IoGetDeviceObjectPointer(UNICODE_STRING*,ACCESS_MASK,PFILE_OBJECT*,PDEVICE_OBJECT*);
|
---|
1109 | NTSTATUS WINAPI IoGetDeviceProperty(PDEVICE_OBJECT,DEVICE_REGISTRY_PROPERTY,ULONG,PVOID,PULONG);
|
---|
1110 | PVOID WINAPI IoGetDriverObjectExtension(PDRIVER_OBJECT,PVOID);
|
---|
1111 | PDEVICE_OBJECT WINAPI IoGetRelatedDeviceObject(PFILE_OBJECT);
|
---|
1112 | void WINAPI IoInitializeIrp(IRP*,USHORT,CCHAR);
|
---|
1113 |
|
---|
1114 | PKTHREAD WINAPI KeGetCurrentThread(void);
|
---|
1115 | void WINAPI KeQuerySystemTime(LARGE_INTEGER*);
|
---|
1116 | void WINAPI KeQueryTickCount(LARGE_INTEGER*);
|
---|
1117 | ULONG WINAPI KeQueryTimeIncrement(void);
|
---|
1118 | LONG WINAPI KeReleaseSemaphore(PRKSEMAPHORE,KPRIORITY,LONG,BOOLEAN);
|
---|
1119 | LONG WINAPI KeResetEvent(PRKEVENT);
|
---|
1120 | LONG WINAPI KeSetEvent(PRKEVENT,KPRIORITY,BOOLEAN);
|
---|
1121 | KPRIORITY WINAPI KeSetPriorityThread(PKTHREAD,KPRIORITY);
|
---|
1122 |
|
---|
1123 | PVOID WINAPI MmAllocateContiguousMemory(SIZE_T,PHYSICAL_ADDRESS);
|
---|
1124 | PVOID WINAPI MmAllocateNonCachedMemory(SIZE_T);
|
---|
1125 | PMDL WINAPI MmAllocatePagesForMdl(PHYSICAL_ADDRESS,PHYSICAL_ADDRESS,PHYSICAL_ADDRESS,SIZE_T);
|
---|
1126 | void WINAPI MmFreeNonCachedMemory(PVOID,SIZE_T);
|
---|
1127 | MM_SYSTEMSIZE WINAPI MmQuerySystemSize(void);
|
---|
1128 |
|
---|
1129 | NTSTATUS WINAPI ObReferenceObjectByHandle(HANDLE,ACCESS_MASK,POBJECT_TYPE,KPROCESSOR_MODE,PVOID*,POBJECT_HANDLE_INFORMATION);
|
---|
1130 |
|
---|
1131 | NTSTATUS WINAPI PsCreateSystemThread(PHANDLE,ULONG,POBJECT_ATTRIBUTES,HANDLE,PCLIENT_ID,PKSTART_ROUTINE,PVOID);
|
---|
1132 | #define PsGetCurrentProcess() IoGetCurrentProcess()
|
---|
1133 | #define PsGetCurrentThread() ((PETHREAD)KeGetCurrentThread())
|
---|
1134 | HANDLE WINAPI PsGetCurrentProcessId(void);
|
---|
1135 | HANDLE WINAPI PsGetCurrentThreadId(void);
|
---|
1136 | BOOLEAN WINAPI PsGetVersion(ULONG*,ULONG*,ULONG*,UNICODE_STRING*);
|
---|
1137 | NTSTATUS WINAPI PsTerminateSystemThread(NTSTATUS);
|
---|
1138 |
|
---|
1139 | NTSTATUS WINAPI ZwAddBootEntry(PUNICODE_STRING,PUNICODE_STRING);
|
---|
1140 | NTSTATUS WINAPI ZwAccessCheckAndAuditAlarm(PUNICODE_STRING,HANDLE,PUNICODE_STRING,PUNICODE_STRING,PSECURITY_DESCRIPTOR,ACCESS_MASK,PGENERIC_MAPPING,BOOLEAN,PACCESS_MASK,PBOOLEAN,PBOOLEAN);
|
---|
1141 | NTSTATUS WINAPI ZwAdjustPrivilegesToken(HANDLE,BOOLEAN,PTOKEN_PRIVILEGES,DWORD,PTOKEN_PRIVILEGES,PDWORD);
|
---|
1142 | NTSTATUS WINAPI ZwAlertThread(HANDLE ThreadHandle);
|
---|
1143 | NTSTATUS WINAPI ZwAllocateVirtualMemory(HANDLE,PVOID*,ULONG,SIZE_T*,ULONG,ULONG);
|
---|
1144 | NTSTATUS WINAPI ZwCancelIoFile(HANDLE,PIO_STATUS_BLOCK);
|
---|
1145 | NTSTATUS WINAPI ZwCancelTimer(HANDLE, BOOLEAN*);
|
---|
1146 | NTSTATUS WINAPI ZwClearEvent(HANDLE);
|
---|
1147 | NTSTATUS WINAPI ZwClose(HANDLE);
|
---|
1148 | NTSTATUS WINAPI ZwCloseObjectAuditAlarm(PUNICODE_STRING,HANDLE,BOOLEAN);
|
---|
1149 | NTSTATUS WINAPI ZwConnectPort(PHANDLE,PUNICODE_STRING,PSECURITY_QUALITY_OF_SERVICE,PLPC_SECTION_WRITE,PLPC_SECTION_READ,PULONG,PVOID,PULONG);
|
---|
1150 | NTSTATUS WINAPI ZwCreateDirectoryObject(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES);
|
---|
1151 | NTSTATUS WINAPI ZwCreateEvent(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES *,BOOLEAN,BOOLEAN);
|
---|
1152 | NTSTATUS WINAPI ZwCreateFile(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,PIO_STATUS_BLOCK,PLARGE_INTEGER,ULONG,ULONG,ULONG,ULONG,PVOID,ULONG);
|
---|
1153 | NTSTATUS WINAPI ZwCreateKey(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,ULONG,const UNICODE_STRING*,ULONG,PULONG);
|
---|
1154 | NTSTATUS WINAPI ZwCreateSection(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*,const LARGE_INTEGER*,ULONG,ULONG,HANDLE);
|
---|
1155 | NTSTATUS WINAPI ZwCreateSymbolicLinkObject(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,PUNICODE_STRING);
|
---|
1156 | NTSTATUS WINAPI ZwCreateTimer(HANDLE*, ACCESS_MASK, const OBJECT_ATTRIBUTES*, TIMER_TYPE);
|
---|
1157 | NTSTATUS WINAPI ZwDeleteAtom(RTL_ATOM);
|
---|
1158 | NTSTATUS WINAPI ZwDeleteFile(POBJECT_ATTRIBUTES);
|
---|
1159 | NTSTATUS WINAPI ZwDeleteKey(HANDLE);
|
---|
1160 | NTSTATUS WINAPI ZwDeleteValueKey(HANDLE,const UNICODE_STRING *);
|
---|
1161 | NTSTATUS WINAPI ZwDeviceIoControlFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,ULONG,PVOID,ULONG,PVOID,ULONG);
|
---|
1162 | NTSTATUS WINAPI ZwDisplayString(PUNICODE_STRING);
|
---|
1163 | NTSTATUS WINAPI ZwDuplicateObject(HANDLE,HANDLE,HANDLE,PHANDLE,ACCESS_MASK,ULONG,ULONG);
|
---|
1164 | NTSTATUS WINAPI ZwDuplicateToken(HANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,SECURITY_IMPERSONATION_LEVEL,TOKEN_TYPE,PHANDLE);
|
---|
1165 | NTSTATUS WINAPI ZwEnumerateKey(HANDLE,ULONG,KEY_INFORMATION_CLASS,void *,DWORD,DWORD *);
|
---|
1166 | NTSTATUS WINAPI ZwEnumerateValueKey(HANDLE,ULONG,KEY_VALUE_INFORMATION_CLASS,PVOID,ULONG,PULONG);
|
---|
1167 | NTSTATUS WINAPI ZwFlushInstructionCache(HANDLE,LPCVOID,SIZE_T);
|
---|
1168 | NTSTATUS WINAPI ZwFlushKey(HANDLE);
|
---|
1169 | NTSTATUS WINAPI ZwFlushVirtualMemory(HANDLE,LPCVOID*,SIZE_T*,ULONG);
|
---|
1170 | NTSTATUS WINAPI ZwFreeVirtualMemory(HANDLE,PVOID*,SIZE_T*,ULONG);
|
---|
1171 | NTSTATUS WINAPI ZwFsControlFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,ULONG,PVOID,ULONG,PVOID,ULONG);
|
---|
1172 | NTSTATUS WINAPI ZwInitiatePowerAction(POWER_ACTION,SYSTEM_POWER_STATE,ULONG,BOOLEAN);
|
---|
1173 | NTSTATUS WINAPI ZwLoadDriver(const UNICODE_STRING *);
|
---|
1174 | NTSTATUS WINAPI ZwLoadKey(const OBJECT_ATTRIBUTES *,OBJECT_ATTRIBUTES *);
|
---|
1175 | NTSTATUS WINAPI ZwLockVirtualMemory(HANDLE,PVOID*,SIZE_T*,ULONG);
|
---|
1176 | NTSTATUS WINAPI ZwMakeTemporaryObject(HANDLE);
|
---|
1177 | NTSTATUS WINAPI ZwMapViewOfSection(HANDLE,HANDLE,PVOID*,ULONG,SIZE_T,const LARGE_INTEGER*,SIZE_T*,SECTION_INHERIT,ULONG,ULONG);
|
---|
1178 | NTSTATUS WINAPI ZwNotifyChangeKey(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,ULONG,BOOLEAN,PVOID,ULONG,BOOLEAN);
|
---|
1179 | NTSTATUS WINAPI ZwOpenDirectoryObject(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES);
|
---|
1180 | NTSTATUS WINAPI ZwOpenEvent(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES *);
|
---|
1181 | NTSTATUS WINAPI ZwOpenFile(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,PIO_STATUS_BLOCK,ULONG,ULONG);
|
---|
1182 | NTSTATUS WINAPI ZwOpenKey(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES *);
|
---|
1183 | NTSTATUS WINAPI ZwOpenProcess(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,const CLIENT_ID*);
|
---|
1184 | NTSTATUS WINAPI ZwOpenProcessToken(HANDLE,DWORD,HANDLE *);
|
---|
1185 | NTSTATUS WINAPI ZwOpenSection(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
|
---|
1186 | NTSTATUS WINAPI ZwOpenSymbolicLinkObject(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES);
|
---|
1187 | NTSTATUS WINAPI ZwOpenThread(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*,const CLIENT_ID*);
|
---|
1188 | NTSTATUS WINAPI ZwOpenThreadToken(HANDLE,DWORD,BOOLEAN,HANDLE *);
|
---|
1189 | NTSTATUS WINAPI ZwOpenTimer(HANDLE*, ACCESS_MASK, const OBJECT_ATTRIBUTES*);
|
---|
1190 | NTSTATUS WINAPI ZwPowerInformation(POWER_INFORMATION_LEVEL,PVOID,ULONG,PVOID,ULONG);
|
---|
1191 | NTSTATUS WINAPI ZwPulseEvent(HANDLE,PULONG);
|
---|
1192 | NTSTATUS WINAPI ZwQueryDefaultLocale(BOOLEAN,LCID*);
|
---|
1193 | NTSTATUS WINAPI ZwQueryDefaultUILanguage(LANGID*);
|
---|
1194 | NTSTATUS WINAPI ZwQueryDirectoryFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,PVOID,ULONG,FILE_INFORMATION_CLASS,BOOLEAN,PUNICODE_STRING,BOOLEAN);
|
---|
1195 | NTSTATUS WINAPI ZwQueryDirectoryObject(HANDLE,PDIRECTORY_BASIC_INFORMATION,ULONG,BOOLEAN,BOOLEAN,PULONG,PULONG);
|
---|
1196 | NTSTATUS WINAPI ZwQueryEaFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG,BOOLEAN,PVOID,ULONG,PVOID,BOOLEAN);
|
---|
1197 | NTSTATUS WINAPI ZwQueryFullAttributesFile(const OBJECT_ATTRIBUTES*,FILE_NETWORK_OPEN_INFORMATION*);
|
---|
1198 | NTSTATUS WINAPI ZwQueryInformationFile(HANDLE,PIO_STATUS_BLOCK,PVOID,LONG,FILE_INFORMATION_CLASS);
|
---|
1199 | NTSTATUS WINAPI ZwQueryInformationThread(HANDLE,THREADINFOCLASS,PVOID,ULONG,PULONG);
|
---|
1200 | NTSTATUS WINAPI ZwQueryInformationToken(HANDLE,DWORD,PVOID,DWORD,LPDWORD);
|
---|
1201 | NTSTATUS WINAPI ZwQueryInstallUILanguage(LANGID*);
|
---|
1202 | NTSTATUS WINAPI ZwQueryKey(HANDLE,KEY_INFORMATION_CLASS,void *,DWORD,DWORD *);
|
---|
1203 | NTSTATUS WINAPI ZwQueryObject(HANDLE, OBJECT_INFORMATION_CLASS, PVOID, ULONG, PULONG);
|
---|
1204 | NTSTATUS WINAPI ZwQuerySecurityObject(HANDLE,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR,ULONG,PULONG);
|
---|
1205 | NTSTATUS WINAPI ZwQuerySection(HANDLE,SECTION_INFORMATION_CLASS,PVOID,ULONG,PULONG);
|
---|
1206 | NTSTATUS WINAPI ZwQuerySymbolicLinkObject(HANDLE,PUNICODE_STRING,PULONG);
|
---|
1207 | NTSTATUS WINAPI ZwQuerySystemInformation(SYSTEM_INFORMATION_CLASS,PVOID,ULONG,PULONG);
|
---|
1208 | NTSTATUS WINAPI ZwQueryTimerResolution(PULONG,PULONG,PULONG);
|
---|
1209 | NTSTATUS WINAPI ZwQueryValueKey(HANDLE,const UNICODE_STRING *,KEY_VALUE_INFORMATION_CLASS,void *,DWORD,DWORD *);
|
---|
1210 | NTSTATUS WINAPI ZwQueryVolumeInformationFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG,FS_INFORMATION_CLASS);
|
---|
1211 | NTSTATUS WINAPI ZwReadFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,PVOID,ULONG,PLARGE_INTEGER,PULONG);
|
---|
1212 | NTSTATUS WINAPI ZwReplaceKey(POBJECT_ATTRIBUTES,HANDLE,POBJECT_ATTRIBUTES);
|
---|
1213 | NTSTATUS WINAPI ZwRequestWaitReplyPort(HANDLE,PLPC_MESSAGE,PLPC_MESSAGE);
|
---|
1214 | NTSTATUS WINAPI ZwResetEvent(HANDLE,PULONG);
|
---|
1215 | NTSTATUS WINAPI ZwRestoreKey(HANDLE,HANDLE,ULONG);
|
---|
1216 | NTSTATUS WINAPI ZwSaveKey(HANDLE,HANDLE);
|
---|
1217 | NTSTATUS WINAPI ZwSecureConnectPort(PHANDLE,PUNICODE_STRING,PSECURITY_QUALITY_OF_SERVICE,PLPC_SECTION_WRITE,PSID,PLPC_SECTION_READ,PULONG,PVOID,PULONG);
|
---|
1218 | NTSTATUS WINAPI ZwSetDefaultLocale(BOOLEAN,LCID);
|
---|
1219 | NTSTATUS WINAPI ZwSetDefaultUILanguage(LANGID);
|
---|
1220 | NTSTATUS WINAPI ZwSetEaFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG);
|
---|
1221 | NTSTATUS WINAPI ZwSetEvent(HANDLE,PULONG);
|
---|
1222 | NTSTATUS WINAPI ZwSetInformationFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG,FILE_INFORMATION_CLASS);
|
---|
1223 | NTSTATUS WINAPI ZwSetInformationKey(HANDLE,const int,PVOID,ULONG);
|
---|
1224 | NTSTATUS WINAPI ZwSetInformationObject(HANDLE, OBJECT_INFORMATION_CLASS, PVOID, ULONG);
|
---|
1225 | NTSTATUS WINAPI ZwSetInformationProcess(HANDLE,PROCESS_INFORMATION_CLASS,PVOID,ULONG);
|
---|
1226 | NTSTATUS WINAPI ZwSetInformationThread(HANDLE,THREADINFOCLASS,LPCVOID,ULONG);
|
---|
1227 | NTSTATUS WINAPI ZwSetIoCompletion(HANDLE,ULONG,ULONG,NTSTATUS,ULONG);
|
---|
1228 | NTSTATUS WINAPI ZwSetSecurityObject(HANDLE,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR);
|
---|
1229 | NTSTATUS WINAPI ZwSetSystemInformation(SYSTEM_INFORMATION_CLASS,PVOID,ULONG);
|
---|
1230 | NTSTATUS WINAPI ZwSetSystemTime(const LARGE_INTEGER*,LARGE_INTEGER*);
|
---|
1231 | NTSTATUS WINAPI ZwSetTimer(HANDLE, const LARGE_INTEGER*, PTIMER_APC_ROUTINE, PVOID, BOOLEAN, ULONG, BOOLEAN*);
|
---|
1232 | NTSTATUS WINAPI ZwSetValueKey(HANDLE,const UNICODE_STRING *,ULONG,ULONG,const void *,ULONG);
|
---|
1233 | NTSTATUS WINAPI ZwSetVolumeInformationFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG,FS_INFORMATION_CLASS);
|
---|
1234 | NTSTATUS WINAPI ZwSuspendThread(HANDLE,PULONG);
|
---|
1235 | NTSTATUS WINAPI ZwTerminateProcess(HANDLE,LONG);
|
---|
1236 | NTSTATUS WINAPI ZwUnloadDriver(const UNICODE_STRING *);
|
---|
1237 | NTSTATUS WINAPI ZwUnloadKey(HANDLE);
|
---|
1238 | NTSTATUS WINAPI ZwUnmapViewOfSection(HANDLE,PVOID);
|
---|
1239 | NTSTATUS WINAPI ZwWaitForSingleObject(HANDLE,BOOLEAN,const LARGE_INTEGER*);
|
---|
1240 | NTSTATUS WINAPI ZwWaitForMultipleObjects(ULONG,const HANDLE*,BOOLEAN,BOOLEAN,const LARGE_INTEGER*);
|
---|
1241 | NTSTATUS WINAPI ZwWriteFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,const void*,ULONG,PLARGE_INTEGER,PULONG);
|
---|
1242 | NTSTATUS WINAPI ZwYieldExecution(void);
|
---|
1243 |
|
---|
1244 | #endif
|
---|