af062818b47340eef15700d2f0211576ba3506eevboxsync/*
af062818b47340eef15700d2f0211576ba3506eevboxsync * Copyright 2004-2005 Ivan Leo Puoti
af062818b47340eef15700d2f0211576ba3506eevboxsync *
af062818b47340eef15700d2f0211576ba3506eevboxsync * This library is free software; you can redistribute it and/or
af062818b47340eef15700d2f0211576ba3506eevboxsync * modify it under the terms of the GNU Lesser General Public
af062818b47340eef15700d2f0211576ba3506eevboxsync * License as published by the Free Software Foundation; either
af062818b47340eef15700d2f0211576ba3506eevboxsync * version 2.1 of the License, or (at your option) any later version.
af062818b47340eef15700d2f0211576ba3506eevboxsync *
af062818b47340eef15700d2f0211576ba3506eevboxsync * This library is distributed in the hope that it will be useful,
af062818b47340eef15700d2f0211576ba3506eevboxsync * but WITHOUT ANY WARRANTY; without even the implied warranty of
af062818b47340eef15700d2f0211576ba3506eevboxsync * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
af062818b47340eef15700d2f0211576ba3506eevboxsync * Lesser General Public License for more details.
af062818b47340eef15700d2f0211576ba3506eevboxsync *
af062818b47340eef15700d2f0211576ba3506eevboxsync * You should have received a copy of the GNU Lesser General Public
af062818b47340eef15700d2f0211576ba3506eevboxsync * License along with this library; if not, write to the Free Software
af062818b47340eef15700d2f0211576ba3506eevboxsync * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
af062818b47340eef15700d2f0211576ba3506eevboxsync */
af062818b47340eef15700d2f0211576ba3506eevboxsync
b955672b950093ff7416d1269dd4d3b69983bd8fvboxsync/*
4b9d6701570cb98fd36e209314239d104ec584d3vboxsync * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
4b9d6701570cb98fd36e209314239d104ec584d3vboxsync * other than GPL or LGPL is available it will apply instead, Oracle elects to use only
b955672b950093ff7416d1269dd4d3b69983bd8fvboxsync * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
b955672b950093ff7416d1269dd4d3b69983bd8fvboxsync * a choice of LGPL license versions is made available with the language indicating
b955672b950093ff7416d1269dd4d3b69983bd8fvboxsync * that LGPLv2 or any later version may be used, or where a choice of which version
b955672b950093ff7416d1269dd4d3b69983bd8fvboxsync * of the LGPL is applied is otherwise unspecified.
b955672b950093ff7416d1269dd4d3b69983bd8fvboxsync */
b955672b950093ff7416d1269dd4d3b69983bd8fvboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#ifndef _WDMDDK_
af062818b47340eef15700d2f0211576ba3506eevboxsync#define _WDMDDK_
af062818b47340eef15700d2f0211576ba3506eevboxsync#define _NTDDK_
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#include <ntstatus.h>
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#ifdef _WIN64
af062818b47340eef15700d2f0211576ba3506eevboxsync#define POINTER_ALIGNMENT DECLSPEC_ALIGN(8)
af062818b47340eef15700d2f0211576ba3506eevboxsync#else
af062818b47340eef15700d2f0211576ba3506eevboxsync#define POINTER_ALIGNMENT
af062818b47340eef15700d2f0211576ba3506eevboxsync#endif
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef LONG KPRIORITY;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef ULONG_PTR KSPIN_LOCK, *PKSPIN_LOCK;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsyncstruct _KDPC;
af062818b47340eef15700d2f0211576ba3506eevboxsyncstruct _KAPC;
af062818b47340eef15700d2f0211576ba3506eevboxsyncstruct _IRP;
af062818b47340eef15700d2f0211576ba3506eevboxsyncstruct _DEVICE_OBJECT;
af062818b47340eef15700d2f0211576ba3506eevboxsyncstruct _DRIVER_OBJECT;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef VOID (WINAPI *PKDEFERRED_ROUTINE)(struct _KDPC *, PVOID, PVOID, PVOID);
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef VOID (WINAPI *PKSTART_ROUTINE)(PVOID);
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef NTSTATUS (WINAPI *PDRIVER_INITIALIZE)(struct _DRIVER_OBJECT *, PUNICODE_STRING);
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef NTSTATUS (WINAPI *PDRIVER_DISPATCH)(struct _DEVICE_OBJECT *, struct _IRP *);
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef void (WINAPI *PDRIVER_STARTIO)(struct _DEVICE_OBJECT *, struct _IRP *);
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef void (WINAPI *PDRIVER_UNLOAD)(struct _DRIVER_OBJECT *);
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct _DISPATCHER_HEADER {
af062818b47340eef15700d2f0211576ba3506eevboxsync UCHAR Type;
af062818b47340eef15700d2f0211576ba3506eevboxsync UCHAR Absolute;
af062818b47340eef15700d2f0211576ba3506eevboxsync UCHAR Size;
af062818b47340eef15700d2f0211576ba3506eevboxsync UCHAR Inserted;
af062818b47340eef15700d2f0211576ba3506eevboxsync LONG SignalState;
af062818b47340eef15700d2f0211576ba3506eevboxsync LIST_ENTRY WaitListHead;
af062818b47340eef15700d2f0211576ba3506eevboxsync} DISPATCHER_HEADER, *PDISPATCHER_HEADER;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct _KEVENT {
af062818b47340eef15700d2f0211576ba3506eevboxsync DISPATCHER_HEADER Header;
af062818b47340eef15700d2f0211576ba3506eevboxsync} KEVENT, *PKEVENT, *RESTRICTED_POINTER PRKEVENT;
af062818b47340eef15700d2f0211576ba3506eevboxsync
5112e32d7072e280613921c982a6672f2c859cf3vboxsynctypedef struct _KSEMAPHORE {
5112e32d7072e280613921c982a6672f2c859cf3vboxsync DISPATCHER_HEADER Header;
5112e32d7072e280613921c982a6672f2c859cf3vboxsync LONG Limit;
5112e32d7072e280613921c982a6672f2c859cf3vboxsync} KSEMAPHORE, *PKSEMAPHORE, *PRKSEMAPHORE;
5112e32d7072e280613921c982a6672f2c859cf3vboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct _KDPC {
af062818b47340eef15700d2f0211576ba3506eevboxsync CSHORT Type;
af062818b47340eef15700d2f0211576ba3506eevboxsync UCHAR Number;
af062818b47340eef15700d2f0211576ba3506eevboxsync UCHAR Importance;
af062818b47340eef15700d2f0211576ba3506eevboxsync LIST_ENTRY DpcListEntry;
af062818b47340eef15700d2f0211576ba3506eevboxsync PKDEFERRED_ROUTINE DeferredRoutine;
af062818b47340eef15700d2f0211576ba3506eevboxsync PVOID DeferredContext;
af062818b47340eef15700d2f0211576ba3506eevboxsync PVOID SystemArgument1;
af062818b47340eef15700d2f0211576ba3506eevboxsync PVOID SystemArgument2;
af062818b47340eef15700d2f0211576ba3506eevboxsync PULONG_PTR Lock;
af062818b47340eef15700d2f0211576ba3506eevboxsync} KDPC, *PKDPC, *RESTRICTED_POINTER PRKDPC;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct _KDEVICE_QUEUE_ENTRY {
af062818b47340eef15700d2f0211576ba3506eevboxsync LIST_ENTRY DeviceListEntry;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG SortKey;
af062818b47340eef15700d2f0211576ba3506eevboxsync BOOLEAN Inserted;
af062818b47340eef15700d2f0211576ba3506eevboxsync} KDEVICE_QUEUE_ENTRY, *PKDEVICE_QUEUE_ENTRY,
af062818b47340eef15700d2f0211576ba3506eevboxsync*RESTRICTED_POINTER PRKDEVICE_QUEUE_ENTRY;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct _KDEVICE_QUEUE {
af062818b47340eef15700d2f0211576ba3506eevboxsync CSHORT Type;
af062818b47340eef15700d2f0211576ba3506eevboxsync CSHORT Size;
af062818b47340eef15700d2f0211576ba3506eevboxsync LIST_ENTRY DeviceListHead;
af062818b47340eef15700d2f0211576ba3506eevboxsync KSPIN_LOCK Lock;
af062818b47340eef15700d2f0211576ba3506eevboxsync BOOLEAN Busy;
af062818b47340eef15700d2f0211576ba3506eevboxsync} KDEVICE_QUEUE, *PKDEVICE_QUEUE, *RESTRICTED_POINTER PRKDEVICE_QUEUE;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct _KMUTANT {
af062818b47340eef15700d2f0211576ba3506eevboxsync DISPATCHER_HEADER Header;
af062818b47340eef15700d2f0211576ba3506eevboxsync LIST_ENTRY MutantListEntry;
af062818b47340eef15700d2f0211576ba3506eevboxsync struct _KTHREAD *RESTRICTED_POINTER OwnerThread;
af062818b47340eef15700d2f0211576ba3506eevboxsync BOOLEAN Abandoned;
af062818b47340eef15700d2f0211576ba3506eevboxsync UCHAR ApcDisable;
af062818b47340eef15700d2f0211576ba3506eevboxsync} KMUTANT, *PKMUTANT, *RESTRICTED_POINTER PRKMUTANT, KMUTEX, *PKMUTEX, *RESTRICTED_POINTER PRKMUTEX;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef enum _KWAIT_REASON
af062818b47340eef15700d2f0211576ba3506eevboxsync{
af062818b47340eef15700d2f0211576ba3506eevboxsync Executive,
af062818b47340eef15700d2f0211576ba3506eevboxsync FreePage,
af062818b47340eef15700d2f0211576ba3506eevboxsync PageIn,
af062818b47340eef15700d2f0211576ba3506eevboxsync PoolAllocation,
af062818b47340eef15700d2f0211576ba3506eevboxsync DelayExecution,
af062818b47340eef15700d2f0211576ba3506eevboxsync Suspended,
af062818b47340eef15700d2f0211576ba3506eevboxsync UserRequest,
af062818b47340eef15700d2f0211576ba3506eevboxsync WrExecutive,
af062818b47340eef15700d2f0211576ba3506eevboxsync WrFreePage,
af062818b47340eef15700d2f0211576ba3506eevboxsync WrPageIn,
af062818b47340eef15700d2f0211576ba3506eevboxsync WrDelayExecution,
af062818b47340eef15700d2f0211576ba3506eevboxsync WrSuspended,
af062818b47340eef15700d2f0211576ba3506eevboxsync WrUserRequest,
af062818b47340eef15700d2f0211576ba3506eevboxsync WrQueue,
af062818b47340eef15700d2f0211576ba3506eevboxsync WrLpcReceive,
af062818b47340eef15700d2f0211576ba3506eevboxsync WrLpcReply,
af062818b47340eef15700d2f0211576ba3506eevboxsync WrVirtualMemory,
af062818b47340eef15700d2f0211576ba3506eevboxsync WrPageOut,
af062818b47340eef15700d2f0211576ba3506eevboxsync WrRendezvous,
af062818b47340eef15700d2f0211576ba3506eevboxsync Spare2,
af062818b47340eef15700d2f0211576ba3506eevboxsync Spare3,
af062818b47340eef15700d2f0211576ba3506eevboxsync Spare4,
af062818b47340eef15700d2f0211576ba3506eevboxsync Spare5,
af062818b47340eef15700d2f0211576ba3506eevboxsync Spare6,
af062818b47340eef15700d2f0211576ba3506eevboxsync WrKernel,
af062818b47340eef15700d2f0211576ba3506eevboxsync MaximumWaitReason,
af062818b47340eef15700d2f0211576ba3506eevboxsync} KWAIT_REASON;
af062818b47340eef15700d2f0211576ba3506eevboxsync
040b4a09341f574825386333398110f4db3e1e51vboxsynctypedef struct _ALLOCATE_FUNCTION *PALLOCATE_FUNCTION;
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct _IO_TIMER *PIO_TIMER;
040b4a09341f574825386333398110f4db3e1e51vboxsynctypedef struct _IO_TIMER_ROUTINE *PIO_TIMER_ROUTINE;
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct _ETHREAD *PETHREAD;
040b4a09341f574825386333398110f4db3e1e51vboxsynctypedef struct _FREE_FUNCTION *PFREE_FUNCTION;
5112e32d7072e280613921c982a6672f2c859cf3vboxsynctypedef struct _KTHREAD *PKTHREAD, *PRKTHREAD;
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct _EPROCESS *PEPROCESS;
040b4a09341f574825386333398110f4db3e1e51vboxsynctypedef struct _ERESOURCE *PERESOURCE;
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct _IO_WORKITEM *PIO_WORKITEM;
040b4a09341f574825386333398110f4db3e1e51vboxsynctypedef struct _NPAGED_LOOKASIDE_LIST *PNPAGED_LOOKASIDE_LIST;
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct _OBJECT_TYPE *POBJECT_TYPE;
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct _OBJECT_HANDLE_INFORMATION *POBJECT_HANDLE_INFORMATION;
040b4a09341f574825386333398110f4db3e1e51vboxsynctypedef struct _ZONE_HEADER *PZONE_HEADER;
af062818b47340eef15700d2f0211576ba3506eevboxsync
589fd26cedb2b4ebbed14f2964cad03cc8ebbca2vboxsynctypedef struct _FAST_MUTEX
589fd26cedb2b4ebbed14f2964cad03cc8ebbca2vboxsync{
589fd26cedb2b4ebbed14f2964cad03cc8ebbca2vboxsync LONG Count;
589fd26cedb2b4ebbed14f2964cad03cc8ebbca2vboxsync PKTHREAD Owner;
589fd26cedb2b4ebbed14f2964cad03cc8ebbca2vboxsync ULONG Contention;
589fd26cedb2b4ebbed14f2964cad03cc8ebbca2vboxsync KEVENT Gate;
589fd26cedb2b4ebbed14f2964cad03cc8ebbca2vboxsync ULONG OldIrql;
589fd26cedb2b4ebbed14f2964cad03cc8ebbca2vboxsync} FAST_MUTEX, *PFAST_MUTEX;
589fd26cedb2b4ebbed14f2964cad03cc8ebbca2vboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define MAXIMUM_VOLUME_LABEL_LENGTH (32 * sizeof(WCHAR))
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct _VPB {
af062818b47340eef15700d2f0211576ba3506eevboxsync CSHORT Type;
af062818b47340eef15700d2f0211576ba3506eevboxsync CSHORT Size;
af062818b47340eef15700d2f0211576ba3506eevboxsync USHORT Flags;
af062818b47340eef15700d2f0211576ba3506eevboxsync USHORT VolumeLabelLength;
af062818b47340eef15700d2f0211576ba3506eevboxsync struct _DEVICE_OBJECT *DeviceObject;
af062818b47340eef15700d2f0211576ba3506eevboxsync struct _DEVICE_OBJECT *RealDevice;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG SerialNumber;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG ReferenceCount;
af062818b47340eef15700d2f0211576ba3506eevboxsync WCHAR VolumeLabel[MAXIMUM_VOLUME_LABEL_LENGTH / sizeof(WCHAR)];
af062818b47340eef15700d2f0211576ba3506eevboxsync} VPB, *PVPB;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef enum _POOL_TYPE {
af062818b47340eef15700d2f0211576ba3506eevboxsync NonPagedPool,
af062818b47340eef15700d2f0211576ba3506eevboxsync PagedPool,
af062818b47340eef15700d2f0211576ba3506eevboxsync NonPagedPoolMustSucceed,
af062818b47340eef15700d2f0211576ba3506eevboxsync UnkownType,
af062818b47340eef15700d2f0211576ba3506eevboxsync NonPagedPoolCacheAligned,
af062818b47340eef15700d2f0211576ba3506eevboxsync PagedPoolCacheAligned,
af062818b47340eef15700d2f0211576ba3506eevboxsync NonPagedPoolCacheAlignedMustS,
af062818b47340eef15700d2f0211576ba3506eevboxsync MaxPoolType
af062818b47340eef15700d2f0211576ba3506eevboxsync} POOL_TYPE;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct _WAIT_CONTEXT_BLOCK {
af062818b47340eef15700d2f0211576ba3506eevboxsync KDEVICE_QUEUE_ENTRY WaitQueueEntry;
af062818b47340eef15700d2f0211576ba3506eevboxsync struct _DRIVER_CONTROL *DeviceRoutine;
af062818b47340eef15700d2f0211576ba3506eevboxsync PVOID DeviceContext;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG NumberOfMapRegisters;
af062818b47340eef15700d2f0211576ba3506eevboxsync PVOID DeviceObject;
af062818b47340eef15700d2f0211576ba3506eevboxsync PVOID CurrentIrp;
af062818b47340eef15700d2f0211576ba3506eevboxsync PKDPC BufferChainingDpc;
af062818b47340eef15700d2f0211576ba3506eevboxsync} WAIT_CONTEXT_BLOCK, *PWAIT_CONTEXT_BLOCK;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DO_BUFFERED_IO 0x00000004
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DO_EXCLUSIVE 0x00000008
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DO_DIRECT_IO 0x00000010
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DO_MAP_IO_BUFFER 0x00000020
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DO_DEVICE_INITIALIZING 0x00000080
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DO_SHUTDOWN_REGISTERED 0x00000800
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DO_BUS_ENUMERATED_DEVICE 0x00001000
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DO_POWER_PAGABLE 0x00002000
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DO_POWER_INRUSH 0x00004000
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IO_NO_INCREMENT 0
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IO_CD_ROM_INCREMENT 1
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IO_DISK_INCREMENT 1
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IO_KEYBOARD_INCREMENT 6
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IO_MAILSLOT_INCREMENT 2
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IO_MOUSE_INCREMENT 6
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IO_NAMED_PIPE_INCREMENT 2
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IO_NETWORK_INCREMENT 2
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IO_PARALLEL_INCREMENT 1
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IO_SERIAL_INCREMENT 2
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IO_SOUND_INCREMENT 8
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IO_VIDEO_INCREMENT 1
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#ifndef DEVICE_TYPE
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DEVICE_TYPE ULONG
af062818b47340eef15700d2f0211576ba3506eevboxsync#endif
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IRP_MJ_MAXIMUM_FUNCTION 0x1b
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IRP_MJ_CREATE 0x00
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IRP_MJ_CREATE_NAMED_PIPE 0x01
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IRP_MJ_CLOSE 0x02
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IRP_MJ_READ 0x03
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IRP_MJ_WRITE 0x04
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IRP_MJ_QUERY_INFORMATION 0x05
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IRP_MJ_SET_INFORMATION 0x06
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IRP_MJ_QUERY_EA 0x07
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IRP_MJ_SET_EA 0x08
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IRP_MJ_FLUSH_BUFFERS 0x09
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IRP_MJ_QUERY_VOLUME_INFORMATION 0x0a
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IRP_MJ_SET_VOLUME_INFORMATION 0x0b
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IRP_MJ_DIRECTORY_CONTROL 0x0c
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IRP_MJ_FILE_SYSTEM_CONTROL 0x0d
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IRP_MJ_DEVICE_CONTROL 0x0e
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IRP_MJ_INTERNAL_DEVICE_CONTROL 0x0f
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IRP_MJ_SHUTDOWN 0x10
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IRP_MJ_LOCK_CONTROL 0x11
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IRP_MJ_CLEANUP 0x12
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IRP_MJ_CREATE_MAILSLOT 0x13
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IRP_MJ_QUERY_SECURITY 0x14
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IRP_MJ_SET_SECURITY 0x15
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IRP_MJ_POWER 0x16
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IRP_MJ_SYSTEM_CONTROL 0x17
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IRP_MJ_DEVICE_CHANGE 0x18
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IRP_MJ_QUERY_QUOTA 0x19
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IRP_MJ_SET_QUOTA 0x1a
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IRP_MJ_PNP 0x1b
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IRP_MN_START_DEVICE 0x00
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IRP_MN_QUERY_REMOVE_DEVICE 0x01
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IRP_MN_REMOVE_DEVICE 0x02
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IRP_MN_CANCEL_REMOVE_DEVICE 0x03
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IRP_MN_STOP_DEVICE 0x04
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IRP_MN_QUERY_STOP_DEVICE 0x05
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IRP_MN_CANCEL_STOP_DEVICE 0x06
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IRP_MN_QUERY_DEVICE_RELATIONS 0x07
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IRP_MN_QUERY_INTERFACE 0x08
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IRP_MN_QUERY_CAPABILITIES 0x09
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IRP_MN_QUERY_RESOURCES 0x0A
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IRP_MN_QUERY_RESOURCE_REQUIREMENTS 0x0B
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IRP_MN_QUERY_DEVICE_TEXT 0x0C
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IRP_MN_FILTER_RESOURCE_REQUIREMENTS 0x0D
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IRP_MN_READ_CONFIG 0x0F
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IRP_MN_WRITE_CONFIG 0x10
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IRP_MN_EJECT 0x11
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IRP_MN_SET_LOCK 0x12
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IRP_MN_QUERY_ID 0x13
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IRP_MN_QUERY_PNP_DEVICE_STATE 0x14
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IRP_MN_QUERY_BUS_INFORMATION 0x15
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IRP_MN_DEVICE_USAGE_NOTIFICATION 0x16
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IRP_MN_SURPRISE_REMOVAL 0x17
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IRP_QUOTA_CHARGED 0x01
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IRP_ALLOCATED_MUST_SUCCEED 0x02
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IRP_ALLOCATED_FIXED_SIZE 0x04
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IRP_LOOKASIDE_ALLOCATION 0x08
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IO_TYPE_ADAPTER 0x01
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IO_TYPE_CONTROLLER 0x02
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IO_TYPE_DEVICE 0x03
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IO_TYPE_DRIVER 0x04
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IO_TYPE_FILE 0x05
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IO_TYPE_IRP 0x06
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IO_TYPE_MASTER_ADAPTER 0x07
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IO_TYPE_OPEN_PACKET 0x08
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IO_TYPE_TIMER 0x09
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IO_TYPE_VPB 0x0a
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IO_TYPE_ERROR_LOG 0x0b
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IO_TYPE_ERROR_MESSAGE 0x0c
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IO_TYPE_DEVICE_OBJECT_EXTENSION 0x0d
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct _DEVICE_OBJECT {
af062818b47340eef15700d2f0211576ba3506eevboxsync CSHORT Type;
af062818b47340eef15700d2f0211576ba3506eevboxsync USHORT Size;
af062818b47340eef15700d2f0211576ba3506eevboxsync LONG ReferenceCount;
af062818b47340eef15700d2f0211576ba3506eevboxsync struct _DRIVER_OBJECT *DriverObject;
af062818b47340eef15700d2f0211576ba3506eevboxsync struct _DEVICE_OBJECT *NextDevice;
af062818b47340eef15700d2f0211576ba3506eevboxsync struct _DEVICE_OBJECT *AttachedDevice;
af062818b47340eef15700d2f0211576ba3506eevboxsync struct _IRP *CurrentIrp;
af062818b47340eef15700d2f0211576ba3506eevboxsync PIO_TIMER Timer;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG Flags;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG Characteristics;
af062818b47340eef15700d2f0211576ba3506eevboxsync PVPB Vpb;
af062818b47340eef15700d2f0211576ba3506eevboxsync PVOID DeviceExtension;
af062818b47340eef15700d2f0211576ba3506eevboxsync DEVICE_TYPE DeviceType;
af062818b47340eef15700d2f0211576ba3506eevboxsync CCHAR StackSize;
af062818b47340eef15700d2f0211576ba3506eevboxsync union {
af062818b47340eef15700d2f0211576ba3506eevboxsync LIST_ENTRY ListEntry;
af062818b47340eef15700d2f0211576ba3506eevboxsync WAIT_CONTEXT_BLOCK Wcb;
af062818b47340eef15700d2f0211576ba3506eevboxsync } Queue;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG AlignmentRequirement;
af062818b47340eef15700d2f0211576ba3506eevboxsync KDEVICE_QUEUE DeviceQueue;
af062818b47340eef15700d2f0211576ba3506eevboxsync KDPC Dpc;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG ActiveThreadCount;
af062818b47340eef15700d2f0211576ba3506eevboxsync PSECURITY_DESCRIPTOR SecurityDescriptor;
af062818b47340eef15700d2f0211576ba3506eevboxsync KEVENT DeviceLock;
af062818b47340eef15700d2f0211576ba3506eevboxsync USHORT SectorSize;
af062818b47340eef15700d2f0211576ba3506eevboxsync USHORT Spare1;
af062818b47340eef15700d2f0211576ba3506eevboxsync struct _DEVOBJ_EXTENSION *DeviceObjectExtension;
af062818b47340eef15700d2f0211576ba3506eevboxsync PVOID Reserved;
af062818b47340eef15700d2f0211576ba3506eevboxsync} DEVICE_OBJECT;
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct _DEVICE_OBJECT *PDEVICE_OBJECT;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct _DRIVER_EXTENSION {
af062818b47340eef15700d2f0211576ba3506eevboxsync struct _DRIVER_OBJECT *DriverObject;
af062818b47340eef15700d2f0211576ba3506eevboxsync PVOID AddDevice;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG Count;
af062818b47340eef15700d2f0211576ba3506eevboxsync UNICODE_STRING ServiceKeyName;
af062818b47340eef15700d2f0211576ba3506eevboxsync} DRIVER_EXTENSION, *PDRIVER_EXTENSION;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct _DRIVER_OBJECT {
af062818b47340eef15700d2f0211576ba3506eevboxsync CSHORT Type;
af062818b47340eef15700d2f0211576ba3506eevboxsync CSHORT Size;
af062818b47340eef15700d2f0211576ba3506eevboxsync PDEVICE_OBJECT DeviceObject;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG Flags;
af062818b47340eef15700d2f0211576ba3506eevboxsync PVOID DriverStart;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG DriverSize;
af062818b47340eef15700d2f0211576ba3506eevboxsync PVOID DriverSection;
af062818b47340eef15700d2f0211576ba3506eevboxsync PDRIVER_EXTENSION DriverExtension;
af062818b47340eef15700d2f0211576ba3506eevboxsync UNICODE_STRING DriverName;
af062818b47340eef15700d2f0211576ba3506eevboxsync PUNICODE_STRING HardwareDatabase;
af062818b47340eef15700d2f0211576ba3506eevboxsync PVOID FastIoDispatch;
af062818b47340eef15700d2f0211576ba3506eevboxsync PDRIVER_INITIALIZE DriverInit;
af062818b47340eef15700d2f0211576ba3506eevboxsync PDRIVER_STARTIO DriverStartIo;
af062818b47340eef15700d2f0211576ba3506eevboxsync PDRIVER_UNLOAD DriverUnload;
af062818b47340eef15700d2f0211576ba3506eevboxsync PDRIVER_DISPATCH MajorFunction[IRP_MJ_MAXIMUM_FUNCTION + 1];
af062818b47340eef15700d2f0211576ba3506eevboxsync} DRIVER_OBJECT;
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct _DRIVER_OBJECT *PDRIVER_OBJECT;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync/* Irp definitions */
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef UCHAR KIRQL, *PKIRQL;
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef CCHAR KPROCESSOR_MODE;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef VOID (WINAPI *PDRIVER_CANCEL)(
af062818b47340eef15700d2f0211576ba3506eevboxsync IN struct _DEVICE_OBJECT *DeviceObject,
af062818b47340eef15700d2f0211576ba3506eevboxsync IN struct _IRP *Irp);
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef VOID (WINAPI *PKNORMAL_ROUTINE)(
af062818b47340eef15700d2f0211576ba3506eevboxsync IN PVOID NormalContext,
af062818b47340eef15700d2f0211576ba3506eevboxsync IN PVOID SystemArgument1,
af062818b47340eef15700d2f0211576ba3506eevboxsync IN PVOID SystemArgument2);
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef VOID (WINAPI *PKKERNEL_ROUTINE)(
af062818b47340eef15700d2f0211576ba3506eevboxsync IN struct _KAPC *Apc,
af062818b47340eef15700d2f0211576ba3506eevboxsync IN OUT PKNORMAL_ROUTINE *NormalRoutine,
af062818b47340eef15700d2f0211576ba3506eevboxsync IN OUT PVOID *NormalContext,
af062818b47340eef15700d2f0211576ba3506eevboxsync IN OUT PVOID *SystemArgument1,
af062818b47340eef15700d2f0211576ba3506eevboxsync IN OUT PVOID *SystemArgument2);
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef VOID (WINAPI *PKRUNDOWN_ROUTINE)(
af062818b47340eef15700d2f0211576ba3506eevboxsync IN struct _KAPC *Apc);
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct _KAPC {
af062818b47340eef15700d2f0211576ba3506eevboxsync CSHORT Type;
af062818b47340eef15700d2f0211576ba3506eevboxsync CSHORT Size;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG Spare0;
af062818b47340eef15700d2f0211576ba3506eevboxsync struct _KTHREAD *Thread;
af062818b47340eef15700d2f0211576ba3506eevboxsync LIST_ENTRY ApcListEntry;
af062818b47340eef15700d2f0211576ba3506eevboxsync PKKERNEL_ROUTINE KernelRoutine;
af062818b47340eef15700d2f0211576ba3506eevboxsync PKRUNDOWN_ROUTINE RundownRoutine;
af062818b47340eef15700d2f0211576ba3506eevboxsync PKNORMAL_ROUTINE NormalRoutine;
af062818b47340eef15700d2f0211576ba3506eevboxsync PVOID NormalContext;
af062818b47340eef15700d2f0211576ba3506eevboxsync PVOID SystemArgument1;
af062818b47340eef15700d2f0211576ba3506eevboxsync PVOID SystemArgument2;
af062818b47340eef15700d2f0211576ba3506eevboxsync CCHAR ApcStateIndex;
af062818b47340eef15700d2f0211576ba3506eevboxsync KPROCESSOR_MODE ApcMode;
af062818b47340eef15700d2f0211576ba3506eevboxsync BOOLEAN Inserted;
af062818b47340eef15700d2f0211576ba3506eevboxsync} KAPC, *PKAPC, *RESTRICTED_POINTER PRKAPC;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#include <pshpack1.h>
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct _IRP {
af062818b47340eef15700d2f0211576ba3506eevboxsync CSHORT Type;
af062818b47340eef15700d2f0211576ba3506eevboxsync USHORT Size;
af062818b47340eef15700d2f0211576ba3506eevboxsync struct _MDL *MdlAddress;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG Flags;
af062818b47340eef15700d2f0211576ba3506eevboxsync union {
af062818b47340eef15700d2f0211576ba3506eevboxsync struct _IRP *MasterIrp;
af062818b47340eef15700d2f0211576ba3506eevboxsync LONG IrpCount;
af062818b47340eef15700d2f0211576ba3506eevboxsync PVOID SystemBuffer;
af062818b47340eef15700d2f0211576ba3506eevboxsync } AssociatedIrp;
af062818b47340eef15700d2f0211576ba3506eevboxsync LIST_ENTRY ThreadListEntry;
af062818b47340eef15700d2f0211576ba3506eevboxsync IO_STATUS_BLOCK IoStatus;
af062818b47340eef15700d2f0211576ba3506eevboxsync KPROCESSOR_MODE RequestorMode;
af062818b47340eef15700d2f0211576ba3506eevboxsync BOOLEAN PendingReturned;
af062818b47340eef15700d2f0211576ba3506eevboxsync CHAR StackCount;
af062818b47340eef15700d2f0211576ba3506eevboxsync CHAR CurrentLocation;
af062818b47340eef15700d2f0211576ba3506eevboxsync BOOLEAN Cancel;
af062818b47340eef15700d2f0211576ba3506eevboxsync KIRQL CancelIrql;
af062818b47340eef15700d2f0211576ba3506eevboxsync CCHAR ApcEnvironment;
af062818b47340eef15700d2f0211576ba3506eevboxsync UCHAR AllocationFlags;
af062818b47340eef15700d2f0211576ba3506eevboxsync PIO_STATUS_BLOCK UserIosb;
af062818b47340eef15700d2f0211576ba3506eevboxsync PKEVENT UserEvent;
af062818b47340eef15700d2f0211576ba3506eevboxsync union {
af062818b47340eef15700d2f0211576ba3506eevboxsync struct {
af062818b47340eef15700d2f0211576ba3506eevboxsync PIO_APC_ROUTINE UserApcRoutine;
af062818b47340eef15700d2f0211576ba3506eevboxsync PVOID UserApcContext;
af062818b47340eef15700d2f0211576ba3506eevboxsync } AsynchronousParameters;
af062818b47340eef15700d2f0211576ba3506eevboxsync LARGE_INTEGER AllocationSize;
af062818b47340eef15700d2f0211576ba3506eevboxsync } Overlay;
af062818b47340eef15700d2f0211576ba3506eevboxsync PDRIVER_CANCEL CancelRoutine;
af062818b47340eef15700d2f0211576ba3506eevboxsync PVOID UserBuffer;
af062818b47340eef15700d2f0211576ba3506eevboxsync union {
af062818b47340eef15700d2f0211576ba3506eevboxsync struct {
af062818b47340eef15700d2f0211576ba3506eevboxsync union {
af062818b47340eef15700d2f0211576ba3506eevboxsync KDEVICE_QUEUE_ENTRY DeviceQueueEntry;
af062818b47340eef15700d2f0211576ba3506eevboxsync struct {
af062818b47340eef15700d2f0211576ba3506eevboxsync PVOID DriverContext[4];
af062818b47340eef15700d2f0211576ba3506eevboxsync } DUMMYSTRUCTNAME;
ee6bcfc59fe3b0230aad85e2ef63d0402b7719b2vboxsync } DUMMYUNIONNAME1;
af062818b47340eef15700d2f0211576ba3506eevboxsync PETHREAD Thread;
af062818b47340eef15700d2f0211576ba3506eevboxsync PCHAR AuxiliaryBuffer;
af062818b47340eef15700d2f0211576ba3506eevboxsync struct {
af062818b47340eef15700d2f0211576ba3506eevboxsync LIST_ENTRY ListEntry;
af062818b47340eef15700d2f0211576ba3506eevboxsync union {
af062818b47340eef15700d2f0211576ba3506eevboxsync struct _IO_STACK_LOCATION *CurrentStackLocation;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG PacketType;
ee6bcfc59fe3b0230aad85e2ef63d0402b7719b2vboxsync } DUMMYUNIONNAME2;
af062818b47340eef15700d2f0211576ba3506eevboxsync } DUMMYSTRUCTNAME;
af062818b47340eef15700d2f0211576ba3506eevboxsync struct _FILE_OBJECT *OriginalFileObject;
af062818b47340eef15700d2f0211576ba3506eevboxsync } Overlay;
af062818b47340eef15700d2f0211576ba3506eevboxsync KAPC Apc;
af062818b47340eef15700d2f0211576ba3506eevboxsync PVOID CompletionKey;
af062818b47340eef15700d2f0211576ba3506eevboxsync } Tail;
af062818b47340eef15700d2f0211576ba3506eevboxsync} IRP;
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct _IRP *PIRP;
af062818b47340eef15700d2f0211576ba3506eevboxsync#include <poppack.h>
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync/* MDL definitions */
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef VOID (WINAPI *PINTERFACE_REFERENCE)(
af062818b47340eef15700d2f0211576ba3506eevboxsync PVOID Context);
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef VOID (WINAPI *PINTERFACE_DEREFERENCE)(
af062818b47340eef15700d2f0211576ba3506eevboxsync PVOID Context);
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct _INTERFACE {
af062818b47340eef15700d2f0211576ba3506eevboxsync USHORT Size;
af062818b47340eef15700d2f0211576ba3506eevboxsync USHORT Version;
af062818b47340eef15700d2f0211576ba3506eevboxsync PVOID Context;
af062818b47340eef15700d2f0211576ba3506eevboxsync PINTERFACE_REFERENCE InterfaceReference;
af062818b47340eef15700d2f0211576ba3506eevboxsync PINTERFACE_DEREFERENCE InterfaceDereference;
af062818b47340eef15700d2f0211576ba3506eevboxsync} INTERFACE, *PINTERFACE;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct _SECTION_OBJECT_POINTERS {
af062818b47340eef15700d2f0211576ba3506eevboxsync PVOID DataSectionObject;
af062818b47340eef15700d2f0211576ba3506eevboxsync PVOID SharedCacheMap;
af062818b47340eef15700d2f0211576ba3506eevboxsync PVOID ImageSectionObject;
af062818b47340eef15700d2f0211576ba3506eevboxsync} SECTION_OBJECT_POINTERS, *PSECTION_OBJECT_POINTERS;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct _IO_COMPLETION_CONTEXT {
af062818b47340eef15700d2f0211576ba3506eevboxsync PVOID Port;
af062818b47340eef15700d2f0211576ba3506eevboxsync PVOID Key;
af062818b47340eef15700d2f0211576ba3506eevboxsync} IO_COMPLETION_CONTEXT, *PIO_COMPLETION_CONTEXT;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef enum _DEVICE_RELATION_TYPE {
af062818b47340eef15700d2f0211576ba3506eevboxsync BusRelations,
af062818b47340eef15700d2f0211576ba3506eevboxsync EjectionRelations,
af062818b47340eef15700d2f0211576ba3506eevboxsync PowerRelations,
af062818b47340eef15700d2f0211576ba3506eevboxsync RemovalRelations,
af062818b47340eef15700d2f0211576ba3506eevboxsync TargetDeviceRelation,
af062818b47340eef15700d2f0211576ba3506eevboxsync SingleBusRelations
af062818b47340eef15700d2f0211576ba3506eevboxsync} DEVICE_RELATION_TYPE, *PDEVICE_RELATION_TYPE;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct _FILE_OBJECT {
af062818b47340eef15700d2f0211576ba3506eevboxsync CSHORT Type;
af062818b47340eef15700d2f0211576ba3506eevboxsync CSHORT Size;
af062818b47340eef15700d2f0211576ba3506eevboxsync PDEVICE_OBJECT DeviceObject;
af062818b47340eef15700d2f0211576ba3506eevboxsync PVPB Vpb;
af062818b47340eef15700d2f0211576ba3506eevboxsync PVOID FsContext;
af062818b47340eef15700d2f0211576ba3506eevboxsync PVOID FsContext2;
af062818b47340eef15700d2f0211576ba3506eevboxsync PSECTION_OBJECT_POINTERS SectionObjectPointer;
af062818b47340eef15700d2f0211576ba3506eevboxsync PVOID PrivateCacheMap;
af062818b47340eef15700d2f0211576ba3506eevboxsync NTSTATUS FinalStatus;
af062818b47340eef15700d2f0211576ba3506eevboxsync struct _FILE_OBJECT *RelatedFileObject;
af062818b47340eef15700d2f0211576ba3506eevboxsync BOOLEAN LockOperation;
af062818b47340eef15700d2f0211576ba3506eevboxsync BOOLEAN DeletePending;
af062818b47340eef15700d2f0211576ba3506eevboxsync BOOLEAN ReadAccess;
af062818b47340eef15700d2f0211576ba3506eevboxsync BOOLEAN WriteAccess;
af062818b47340eef15700d2f0211576ba3506eevboxsync BOOLEAN DeleteAccess;
af062818b47340eef15700d2f0211576ba3506eevboxsync BOOLEAN SharedRead;
af062818b47340eef15700d2f0211576ba3506eevboxsync BOOLEAN SharedWrite;
af062818b47340eef15700d2f0211576ba3506eevboxsync BOOLEAN SharedDelete;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG Flags;
af062818b47340eef15700d2f0211576ba3506eevboxsync UNICODE_STRING FileName;
af062818b47340eef15700d2f0211576ba3506eevboxsync LARGE_INTEGER CurrentByteOffset;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG Waiters;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG Busy;
af062818b47340eef15700d2f0211576ba3506eevboxsync PVOID LastLock;
af062818b47340eef15700d2f0211576ba3506eevboxsync KEVENT Lock;
af062818b47340eef15700d2f0211576ba3506eevboxsync KEVENT Event;
af062818b47340eef15700d2f0211576ba3506eevboxsync PIO_COMPLETION_CONTEXT CompletionContext;
af062818b47340eef15700d2f0211576ba3506eevboxsync} FILE_OBJECT;
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct _FILE_OBJECT *PFILE_OBJECT;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define INITIAL_PRIVILEGE_COUNT 3
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct _INITIAL_PRIVILEGE_SET {
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG PrivilegeCount;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG Control;
af062818b47340eef15700d2f0211576ba3506eevboxsync LUID_AND_ATTRIBUTES Privilege[INITIAL_PRIVILEGE_COUNT];
af062818b47340eef15700d2f0211576ba3506eevboxsync} INITIAL_PRIVILEGE_SET, * PINITIAL_PRIVILEGE_SET;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct _SECURITY_SUBJECT_CONTEXT {
af062818b47340eef15700d2f0211576ba3506eevboxsync PACCESS_TOKEN ClientToken;
af062818b47340eef15700d2f0211576ba3506eevboxsync SECURITY_IMPERSONATION_LEVEL ImpersonationLevel;
af062818b47340eef15700d2f0211576ba3506eevboxsync PACCESS_TOKEN PrimaryToken;
af062818b47340eef15700d2f0211576ba3506eevboxsync PVOID ProcessAuditId;
af062818b47340eef15700d2f0211576ba3506eevboxsync} SECURITY_SUBJECT_CONTEXT, *PSECURITY_SUBJECT_CONTEXT;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct _ACCESS_STATE {
af062818b47340eef15700d2f0211576ba3506eevboxsync LUID OperationID;
af062818b47340eef15700d2f0211576ba3506eevboxsync BOOLEAN SecurityEvaluated;
af062818b47340eef15700d2f0211576ba3506eevboxsync BOOLEAN GenerateAudit;
af062818b47340eef15700d2f0211576ba3506eevboxsync BOOLEAN GenerateOnClose;
af062818b47340eef15700d2f0211576ba3506eevboxsync BOOLEAN PrivilegesAllocated;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG Flags;
af062818b47340eef15700d2f0211576ba3506eevboxsync ACCESS_MASK RemainingDesiredAccess;
af062818b47340eef15700d2f0211576ba3506eevboxsync ACCESS_MASK PreviouslyGrantedAccess;
af062818b47340eef15700d2f0211576ba3506eevboxsync ACCESS_MASK OriginalDesiredAccess;
af062818b47340eef15700d2f0211576ba3506eevboxsync SECURITY_SUBJECT_CONTEXT SubjectSecurityContext;
af062818b47340eef15700d2f0211576ba3506eevboxsync PSECURITY_DESCRIPTOR SecurityDescriptor;
af062818b47340eef15700d2f0211576ba3506eevboxsync PVOID AuxData;
af062818b47340eef15700d2f0211576ba3506eevboxsync union {
af062818b47340eef15700d2f0211576ba3506eevboxsync INITIAL_PRIVILEGE_SET InitialPrivilegeSet;
af062818b47340eef15700d2f0211576ba3506eevboxsync PRIVILEGE_SET PrivilegeSet;
af062818b47340eef15700d2f0211576ba3506eevboxsync } Privileges;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync BOOLEAN AuditPrivileges;
af062818b47340eef15700d2f0211576ba3506eevboxsync UNICODE_STRING ObjectName;
af062818b47340eef15700d2f0211576ba3506eevboxsync UNICODE_STRING ObjectTypeName;
af062818b47340eef15700d2f0211576ba3506eevboxsync} ACCESS_STATE, *PACCESS_STATE;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct _IO_SECURITY_CONTEXT {
af062818b47340eef15700d2f0211576ba3506eevboxsync PSECURITY_QUALITY_OF_SERVICE SecurityQos;
af062818b47340eef15700d2f0211576ba3506eevboxsync PACCESS_STATE AccessState;
af062818b47340eef15700d2f0211576ba3506eevboxsync ACCESS_MASK DesiredAccess;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG FullCreateOptions;
af062818b47340eef15700d2f0211576ba3506eevboxsync} IO_SECURITY_CONTEXT, *PIO_SECURITY_CONTEXT;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct _DEVICE_CAPABILITIES {
af062818b47340eef15700d2f0211576ba3506eevboxsync USHORT Size;
af062818b47340eef15700d2f0211576ba3506eevboxsync USHORT Version;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG DeviceD1 : 1;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG DeviceD2 : 1;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG LockSupported : 1;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG EjectSupported : 1;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG Removable : 1;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG DockDevice : 1;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG UniqueID : 1;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG SilentInstall : 1;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG RawDeviceOK : 1;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG SurpriseRemovalOK : 1;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG WakeFromD0 : 1;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG WakeFromD1 : 1;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG WakeFromD2 : 1;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG WakeFromD3 : 1;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG HardwareDisabled : 1;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG NonDynamic : 1;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG WarmEjectSupported : 1;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG NoDisplayInUI : 1;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG Reserved : 14;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG Address;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG UINumber;
af062818b47340eef15700d2f0211576ba3506eevboxsync DEVICE_POWER_STATE DeviceState[PowerSystemMaximum];
af062818b47340eef15700d2f0211576ba3506eevboxsync SYSTEM_POWER_STATE SystemWake;
af062818b47340eef15700d2f0211576ba3506eevboxsync DEVICE_POWER_STATE DeviceWake;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG D1Latency;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG D2Latency;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG D3Latency;
af062818b47340eef15700d2f0211576ba3506eevboxsync} DEVICE_CAPABILITIES, *PDEVICE_CAPABILITIES;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef enum _INTERFACE_TYPE {
af062818b47340eef15700d2f0211576ba3506eevboxsync InterfaceTypeUndefined = -1,
af062818b47340eef15700d2f0211576ba3506eevboxsync Internal,
af062818b47340eef15700d2f0211576ba3506eevboxsync Isa,
af062818b47340eef15700d2f0211576ba3506eevboxsync Eisa,
af062818b47340eef15700d2f0211576ba3506eevboxsync MicroChannel,
af062818b47340eef15700d2f0211576ba3506eevboxsync TurboChannel,
af062818b47340eef15700d2f0211576ba3506eevboxsync PCIBus,
af062818b47340eef15700d2f0211576ba3506eevboxsync VMEBus,
af062818b47340eef15700d2f0211576ba3506eevboxsync NuBus,
af062818b47340eef15700d2f0211576ba3506eevboxsync PCMCIABus,
af062818b47340eef15700d2f0211576ba3506eevboxsync CBus,
af062818b47340eef15700d2f0211576ba3506eevboxsync MPIBus,
af062818b47340eef15700d2f0211576ba3506eevboxsync MPSABus,
af062818b47340eef15700d2f0211576ba3506eevboxsync ProcessorInternal,
af062818b47340eef15700d2f0211576ba3506eevboxsync InternalPowerBus,
af062818b47340eef15700d2f0211576ba3506eevboxsync PNPISABus,
af062818b47340eef15700d2f0211576ba3506eevboxsync PNPBus,
af062818b47340eef15700d2f0211576ba3506eevboxsync MaximumInterfaceType
af062818b47340eef15700d2f0211576ba3506eevboxsync} INTERFACE_TYPE, *PINTERFACE_TYPE;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef LARGE_INTEGER PHYSICAL_ADDRESS, *PPHYSICAL_ADDRESS;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IO_RESOURCE_PREFERRED 0x01
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IO_RESOURCE_DEFAULT 0x02
af062818b47340eef15700d2f0211576ba3506eevboxsync#define IO_RESOURCE_ALTERNATIVE 0x08
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct _IO_RESOURCE_DESCRIPTOR {
af062818b47340eef15700d2f0211576ba3506eevboxsync UCHAR Option;
af062818b47340eef15700d2f0211576ba3506eevboxsync UCHAR Type;
af062818b47340eef15700d2f0211576ba3506eevboxsync UCHAR ShareDisposition;
af062818b47340eef15700d2f0211576ba3506eevboxsync UCHAR Spare1;
af062818b47340eef15700d2f0211576ba3506eevboxsync USHORT Flags;
af062818b47340eef15700d2f0211576ba3506eevboxsync USHORT Spare2;
af062818b47340eef15700d2f0211576ba3506eevboxsync union {
af062818b47340eef15700d2f0211576ba3506eevboxsync struct {
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG Length;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG Alignment;
af062818b47340eef15700d2f0211576ba3506eevboxsync PHYSICAL_ADDRESS MinimumAddress;
af062818b47340eef15700d2f0211576ba3506eevboxsync PHYSICAL_ADDRESS MaximumAddress;
af062818b47340eef15700d2f0211576ba3506eevboxsync } Port;
af062818b47340eef15700d2f0211576ba3506eevboxsync struct {
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG Length;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG Alignment;
af062818b47340eef15700d2f0211576ba3506eevboxsync PHYSICAL_ADDRESS MinimumAddress;
af062818b47340eef15700d2f0211576ba3506eevboxsync PHYSICAL_ADDRESS MaximumAddress;
af062818b47340eef15700d2f0211576ba3506eevboxsync } Memory;
af062818b47340eef15700d2f0211576ba3506eevboxsync struct {
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG MinimumVector;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG MaximumVector;
af062818b47340eef15700d2f0211576ba3506eevboxsync } Interrupt;
af062818b47340eef15700d2f0211576ba3506eevboxsync struct {
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG MinimumChannel;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG MaximumChannel;
af062818b47340eef15700d2f0211576ba3506eevboxsync } Dma;
af062818b47340eef15700d2f0211576ba3506eevboxsync struct {
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG Length;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG Alignment;
af062818b47340eef15700d2f0211576ba3506eevboxsync PHYSICAL_ADDRESS MinimumAddress;
af062818b47340eef15700d2f0211576ba3506eevboxsync PHYSICAL_ADDRESS MaximumAddress;
af062818b47340eef15700d2f0211576ba3506eevboxsync } Generic;
af062818b47340eef15700d2f0211576ba3506eevboxsync struct {
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG Data[3];
af062818b47340eef15700d2f0211576ba3506eevboxsync } DevicePrivate;
af062818b47340eef15700d2f0211576ba3506eevboxsync struct {
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG Length;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG MinBusNumber;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG MaxBusNumber;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG Reserved;
af062818b47340eef15700d2f0211576ba3506eevboxsync } BusNumber;
af062818b47340eef15700d2f0211576ba3506eevboxsync struct {
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG Priority;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG Reserved1;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG Reserved2;
af062818b47340eef15700d2f0211576ba3506eevboxsync } ConfigData;
af062818b47340eef15700d2f0211576ba3506eevboxsync } u;
af062818b47340eef15700d2f0211576ba3506eevboxsync} IO_RESOURCE_DESCRIPTOR, *PIO_RESOURCE_DESCRIPTOR;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct _IO_RESOURCE_LIST {
af062818b47340eef15700d2f0211576ba3506eevboxsync USHORT Version;
af062818b47340eef15700d2f0211576ba3506eevboxsync USHORT Revision;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG Count;
af062818b47340eef15700d2f0211576ba3506eevboxsync IO_RESOURCE_DESCRIPTOR Descriptors[1];
af062818b47340eef15700d2f0211576ba3506eevboxsync} IO_RESOURCE_LIST, *PIO_RESOURCE_LIST;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct _IO_RESOURCE_REQUIREMENTS_LIST {
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG ListSize;
af062818b47340eef15700d2f0211576ba3506eevboxsync INTERFACE_TYPE InterfaceType;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG BusNumber;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG SlotNumber;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG Reserved[3];
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG AlternativeLists;
af062818b47340eef15700d2f0211576ba3506eevboxsync IO_RESOURCE_LIST List[1];
af062818b47340eef15700d2f0211576ba3506eevboxsync} IO_RESOURCE_REQUIREMENTS_LIST, *PIO_RESOURCE_REQUIREMENTS_LIST;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef enum _BUS_QUERY_ID_TYPE {
af062818b47340eef15700d2f0211576ba3506eevboxsync BusQueryDeviceID,
af062818b47340eef15700d2f0211576ba3506eevboxsync BusQueryHardwareIDs,
af062818b47340eef15700d2f0211576ba3506eevboxsync BusQueryCompatibleIDs,
af062818b47340eef15700d2f0211576ba3506eevboxsync BusQueryInstanceID,
af062818b47340eef15700d2f0211576ba3506eevboxsync BusQueryDeviceSerialNumber
af062818b47340eef15700d2f0211576ba3506eevboxsync} BUS_QUERY_ID_TYPE, *PBUS_QUERY_ID_TYPE;
af062818b47340eef15700d2f0211576ba3506eevboxsync
ee6bcfc59fe3b0230aad85e2ef63d0402b7719b2vboxsynctypedef enum {
ee6bcfc59fe3b0230aad85e2ef63d0402b7719b2vboxsync DevicePropertyDeviceDescription,
ee6bcfc59fe3b0230aad85e2ef63d0402b7719b2vboxsync DevicePropertyHardwareID,
ee6bcfc59fe3b0230aad85e2ef63d0402b7719b2vboxsync DevicePropertyCompatibleIDs,
ee6bcfc59fe3b0230aad85e2ef63d0402b7719b2vboxsync DevicePropertyBootConfiguration,
ee6bcfc59fe3b0230aad85e2ef63d0402b7719b2vboxsync DevicePropertyBootConfigurationTranslated,
ee6bcfc59fe3b0230aad85e2ef63d0402b7719b2vboxsync DevicePropertyClassName,
ee6bcfc59fe3b0230aad85e2ef63d0402b7719b2vboxsync DevicePropertyClassGuid,
ee6bcfc59fe3b0230aad85e2ef63d0402b7719b2vboxsync DevicePropertyDriverKeyName,
ee6bcfc59fe3b0230aad85e2ef63d0402b7719b2vboxsync DevicePropertyManufacturer,
ee6bcfc59fe3b0230aad85e2ef63d0402b7719b2vboxsync DevicePropertyFriendlyName,
ee6bcfc59fe3b0230aad85e2ef63d0402b7719b2vboxsync DevicePropertyLocationInformation,
ee6bcfc59fe3b0230aad85e2ef63d0402b7719b2vboxsync DevicePropertyPhysicalDeviceObjectName,
ee6bcfc59fe3b0230aad85e2ef63d0402b7719b2vboxsync DevicePropertyBusTypeGuid,
ee6bcfc59fe3b0230aad85e2ef63d0402b7719b2vboxsync DevicePropertyLegacyBusType,
ee6bcfc59fe3b0230aad85e2ef63d0402b7719b2vboxsync DevicePropertyBusNumber,
ee6bcfc59fe3b0230aad85e2ef63d0402b7719b2vboxsync DevicePropertyEnumeratorName,
ee6bcfc59fe3b0230aad85e2ef63d0402b7719b2vboxsync DevicePropertyAddress,
ee6bcfc59fe3b0230aad85e2ef63d0402b7719b2vboxsync DevicePropertyUINumber,
ee6bcfc59fe3b0230aad85e2ef63d0402b7719b2vboxsync DevicePropertyInstallState,
ee6bcfc59fe3b0230aad85e2ef63d0402b7719b2vboxsync DevicePropertyRemovalPolicy
ee6bcfc59fe3b0230aad85e2ef63d0402b7719b2vboxsync} DEVICE_REGISTRY_PROPERTY;
ee6bcfc59fe3b0230aad85e2ef63d0402b7719b2vboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef enum _DEVICE_TEXT_TYPE {
af062818b47340eef15700d2f0211576ba3506eevboxsync DeviceTextDescription,
af062818b47340eef15700d2f0211576ba3506eevboxsync DeviceTextLocationInformation
af062818b47340eef15700d2f0211576ba3506eevboxsync} DEVICE_TEXT_TYPE, *PDEVICE_TEXT_TYPE;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef enum _DEVICE_USAGE_NOTIFICATION_TYPE {
af062818b47340eef15700d2f0211576ba3506eevboxsync DeviceUsageTypeUndefined,
af062818b47340eef15700d2f0211576ba3506eevboxsync DeviceUsageTypePaging,
af062818b47340eef15700d2f0211576ba3506eevboxsync DeviceUsageTypeHibernation,
af062818b47340eef15700d2f0211576ba3506eevboxsync DeviceUsageTypeDumpFile
af062818b47340eef15700d2f0211576ba3506eevboxsync} DEVICE_USAGE_NOTIFICATION_TYPE;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct _POWER_SEQUENCE {
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG SequenceD1;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG SequenceD2;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG SequenceD3;
af062818b47340eef15700d2f0211576ba3506eevboxsync} POWER_SEQUENCE, *PPOWER_SEQUENCE;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef enum _POWER_STATE_TYPE {
af062818b47340eef15700d2f0211576ba3506eevboxsync SystemPowerState,
af062818b47340eef15700d2f0211576ba3506eevboxsync DevicePowerState
af062818b47340eef15700d2f0211576ba3506eevboxsync} POWER_STATE_TYPE, *PPOWER_STATE_TYPE;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef union _POWER_STATE {
af062818b47340eef15700d2f0211576ba3506eevboxsync SYSTEM_POWER_STATE SystemState;
af062818b47340eef15700d2f0211576ba3506eevboxsync DEVICE_POWER_STATE DeviceState;
af062818b47340eef15700d2f0211576ba3506eevboxsync} POWER_STATE, *PPOWER_STATE;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct _CM_PARTIAL_RESOURCE_DESCRIPTOR {
af062818b47340eef15700d2f0211576ba3506eevboxsync UCHAR Type;
af062818b47340eef15700d2f0211576ba3506eevboxsync UCHAR ShareDisposition;
af062818b47340eef15700d2f0211576ba3506eevboxsync USHORT Flags;
af062818b47340eef15700d2f0211576ba3506eevboxsync union {
af062818b47340eef15700d2f0211576ba3506eevboxsync struct {
af062818b47340eef15700d2f0211576ba3506eevboxsync PHYSICAL_ADDRESS Start;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG Length;
af062818b47340eef15700d2f0211576ba3506eevboxsync } Generic;
af062818b47340eef15700d2f0211576ba3506eevboxsync struct {
af062818b47340eef15700d2f0211576ba3506eevboxsync PHYSICAL_ADDRESS Start;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG Length;
af062818b47340eef15700d2f0211576ba3506eevboxsync } Port;
af062818b47340eef15700d2f0211576ba3506eevboxsync struct {
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG Level;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG Vector;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG Affinity;
af062818b47340eef15700d2f0211576ba3506eevboxsync } Interrupt;
af062818b47340eef15700d2f0211576ba3506eevboxsync struct {
af062818b47340eef15700d2f0211576ba3506eevboxsync PHYSICAL_ADDRESS Start;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG Length;
af062818b47340eef15700d2f0211576ba3506eevboxsync } Memory;
af062818b47340eef15700d2f0211576ba3506eevboxsync struct {
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG Channel;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG Port;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG Reserved1;
af062818b47340eef15700d2f0211576ba3506eevboxsync } Dma;
af062818b47340eef15700d2f0211576ba3506eevboxsync struct {
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG Data[3];
af062818b47340eef15700d2f0211576ba3506eevboxsync } DevicePrivate;
af062818b47340eef15700d2f0211576ba3506eevboxsync struct {
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG Start;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG Length;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG Reserved;
af062818b47340eef15700d2f0211576ba3506eevboxsync } BusNumber;
af062818b47340eef15700d2f0211576ba3506eevboxsync struct {
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG DataSize;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG Reserved1;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG Reserved2;
af062818b47340eef15700d2f0211576ba3506eevboxsync } DeviceSpecificData;
af062818b47340eef15700d2f0211576ba3506eevboxsync } u;
af062818b47340eef15700d2f0211576ba3506eevboxsync} CM_PARTIAL_RESOURCE_DESCRIPTOR, *PCM_PARTIAL_RESOURCE_DESCRIPTOR;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct _CM_PARTIAL_RESOURCE_LIST {
af062818b47340eef15700d2f0211576ba3506eevboxsync USHORT Version;
af062818b47340eef15700d2f0211576ba3506eevboxsync USHORT Revision;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG Count;
af062818b47340eef15700d2f0211576ba3506eevboxsync CM_PARTIAL_RESOURCE_DESCRIPTOR PartialDescriptors[1];
af062818b47340eef15700d2f0211576ba3506eevboxsync} CM_PARTIAL_RESOURCE_LIST, *PCM_PARTIAL_RESOURCE_LIST;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct _CM_FULL_RESOURCE_DESCRIPTOR {
af062818b47340eef15700d2f0211576ba3506eevboxsync INTERFACE_TYPE InterfaceType;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG BusNumber;
af062818b47340eef15700d2f0211576ba3506eevboxsync CM_PARTIAL_RESOURCE_LIST PartialResourceList;
af062818b47340eef15700d2f0211576ba3506eevboxsync} CM_FULL_RESOURCE_DESCRIPTOR, *PCM_FULL_RESOURCE_DESCRIPTOR;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct _CM_RESOURCE_LIST {
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG Count;
af062818b47340eef15700d2f0211576ba3506eevboxsync CM_FULL_RESOURCE_DESCRIPTOR List[1];
af062818b47340eef15700d2f0211576ba3506eevboxsync} CM_RESOURCE_LIST, *PCM_RESOURCE_LIST;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef NTSTATUS (WINAPI *PIO_COMPLETION_ROUTINE)(
af062818b47340eef15700d2f0211576ba3506eevboxsync IN struct _DEVICE_OBJECT *DeviceObject,
af062818b47340eef15700d2f0211576ba3506eevboxsync IN struct _IRP *Irp,
af062818b47340eef15700d2f0211576ba3506eevboxsync IN PVOID Context);
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define SL_PENDING_RETURNED 0x01
af062818b47340eef15700d2f0211576ba3506eevboxsync#define SL_INVOKE_ON_CANCEL 0x20
af062818b47340eef15700d2f0211576ba3506eevboxsync#define SL_INVOKE_ON_SUCCESS 0x40
af062818b47340eef15700d2f0211576ba3506eevboxsync#define SL_INVOKE_ON_ERROR 0x80
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#include <pshpack1.h>
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct _IO_STACK_LOCATION {
af062818b47340eef15700d2f0211576ba3506eevboxsync UCHAR MajorFunction;
af062818b47340eef15700d2f0211576ba3506eevboxsync UCHAR MinorFunction;
af062818b47340eef15700d2f0211576ba3506eevboxsync UCHAR Flags;
af062818b47340eef15700d2f0211576ba3506eevboxsync UCHAR Control;
af062818b47340eef15700d2f0211576ba3506eevboxsync union {
af062818b47340eef15700d2f0211576ba3506eevboxsync struct {
af062818b47340eef15700d2f0211576ba3506eevboxsync PIO_SECURITY_CONTEXT SecurityContext;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG Options;
af062818b47340eef15700d2f0211576ba3506eevboxsync USHORT POINTER_ALIGNMENT FileAttributes;
af062818b47340eef15700d2f0211576ba3506eevboxsync USHORT ShareAccess;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG POINTER_ALIGNMENT EaLength;
af062818b47340eef15700d2f0211576ba3506eevboxsync } Create;
af062818b47340eef15700d2f0211576ba3506eevboxsync struct {
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG Length;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG POINTER_ALIGNMENT Key;
af062818b47340eef15700d2f0211576ba3506eevboxsync LARGE_INTEGER ByteOffset;
af062818b47340eef15700d2f0211576ba3506eevboxsync } Read;
af062818b47340eef15700d2f0211576ba3506eevboxsync struct {
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG Length;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG POINTER_ALIGNMENT Key;
af062818b47340eef15700d2f0211576ba3506eevboxsync LARGE_INTEGER ByteOffset;
af062818b47340eef15700d2f0211576ba3506eevboxsync } Write;
af062818b47340eef15700d2f0211576ba3506eevboxsync struct {
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG Length;
af062818b47340eef15700d2f0211576ba3506eevboxsync FILE_INFORMATION_CLASS POINTER_ALIGNMENT FileInformationClass;
af062818b47340eef15700d2f0211576ba3506eevboxsync } QueryFile;
af062818b47340eef15700d2f0211576ba3506eevboxsync struct {
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG Length;
af062818b47340eef15700d2f0211576ba3506eevboxsync FILE_INFORMATION_CLASS POINTER_ALIGNMENT FileInformationClass;
af062818b47340eef15700d2f0211576ba3506eevboxsync PFILE_OBJECT FileObject;
af062818b47340eef15700d2f0211576ba3506eevboxsync union {
af062818b47340eef15700d2f0211576ba3506eevboxsync struct {
af062818b47340eef15700d2f0211576ba3506eevboxsync BOOLEAN ReplaceIfExists;
af062818b47340eef15700d2f0211576ba3506eevboxsync BOOLEAN AdvanceOnly;
af062818b47340eef15700d2f0211576ba3506eevboxsync } DUMMYSTRUCTNAME;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG ClusterCount;
af062818b47340eef15700d2f0211576ba3506eevboxsync HANDLE DeleteHandle;
af062818b47340eef15700d2f0211576ba3506eevboxsync } DUMMYUNIONNAME;
af062818b47340eef15700d2f0211576ba3506eevboxsync } SetFile;
af062818b47340eef15700d2f0211576ba3506eevboxsync struct {
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG Length;
af062818b47340eef15700d2f0211576ba3506eevboxsync FS_INFORMATION_CLASS POINTER_ALIGNMENT FsInformationClass;
af062818b47340eef15700d2f0211576ba3506eevboxsync } QueryVolume;
af062818b47340eef15700d2f0211576ba3506eevboxsync struct {
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG OutputBufferLength;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG POINTER_ALIGNMENT InputBufferLength;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG POINTER_ALIGNMENT IoControlCode;
af062818b47340eef15700d2f0211576ba3506eevboxsync PVOID Type3InputBuffer;
af062818b47340eef15700d2f0211576ba3506eevboxsync } DeviceIoControl;
af062818b47340eef15700d2f0211576ba3506eevboxsync struct {
af062818b47340eef15700d2f0211576ba3506eevboxsync SECURITY_INFORMATION SecurityInformation;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG POINTER_ALIGNMENT Length;
af062818b47340eef15700d2f0211576ba3506eevboxsync } QuerySecurity;
af062818b47340eef15700d2f0211576ba3506eevboxsync struct {
af062818b47340eef15700d2f0211576ba3506eevboxsync SECURITY_INFORMATION SecurityInformation;
af062818b47340eef15700d2f0211576ba3506eevboxsync PSECURITY_DESCRIPTOR SecurityDescriptor;
af062818b47340eef15700d2f0211576ba3506eevboxsync } SetSecurity;
af062818b47340eef15700d2f0211576ba3506eevboxsync struct {
af062818b47340eef15700d2f0211576ba3506eevboxsync PVPB Vpb;
af062818b47340eef15700d2f0211576ba3506eevboxsync PDEVICE_OBJECT DeviceObject;
af062818b47340eef15700d2f0211576ba3506eevboxsync } MountVolume;
af062818b47340eef15700d2f0211576ba3506eevboxsync struct {
af062818b47340eef15700d2f0211576ba3506eevboxsync PVPB Vpb;
af062818b47340eef15700d2f0211576ba3506eevboxsync PDEVICE_OBJECT DeviceObject;
af062818b47340eef15700d2f0211576ba3506eevboxsync } VerifyVolume;
af062818b47340eef15700d2f0211576ba3506eevboxsync struct {
af062818b47340eef15700d2f0211576ba3506eevboxsync struct _SCSI_REQUEST_BLOCK *Srb;
af062818b47340eef15700d2f0211576ba3506eevboxsync } Scsi;
af062818b47340eef15700d2f0211576ba3506eevboxsync struct {
af062818b47340eef15700d2f0211576ba3506eevboxsync DEVICE_RELATION_TYPE Type;
af062818b47340eef15700d2f0211576ba3506eevboxsync } QueryDeviceRelations;
af062818b47340eef15700d2f0211576ba3506eevboxsync struct {
af062818b47340eef15700d2f0211576ba3506eevboxsync CONST GUID *InterfaceType;
af062818b47340eef15700d2f0211576ba3506eevboxsync USHORT Size;
af062818b47340eef15700d2f0211576ba3506eevboxsync USHORT Version;
af062818b47340eef15700d2f0211576ba3506eevboxsync PINTERFACE Interface;
af062818b47340eef15700d2f0211576ba3506eevboxsync PVOID InterfaceSpecificData;
af062818b47340eef15700d2f0211576ba3506eevboxsync } QueryInterface;
af062818b47340eef15700d2f0211576ba3506eevboxsync struct {
af062818b47340eef15700d2f0211576ba3506eevboxsync PDEVICE_CAPABILITIES Capabilities;
af062818b47340eef15700d2f0211576ba3506eevboxsync } DeviceCapabilities;
af062818b47340eef15700d2f0211576ba3506eevboxsync struct {
af062818b47340eef15700d2f0211576ba3506eevboxsync PIO_RESOURCE_REQUIREMENTS_LIST IoResourceRequirementList;
af062818b47340eef15700d2f0211576ba3506eevboxsync } FilterResourceRequirements;
af062818b47340eef15700d2f0211576ba3506eevboxsync struct {
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG WhichSpace;
af062818b47340eef15700d2f0211576ba3506eevboxsync PVOID Buffer;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG Offset;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG POINTER_ALIGNMENT Length;
af062818b47340eef15700d2f0211576ba3506eevboxsync } ReadWriteConfig;
af062818b47340eef15700d2f0211576ba3506eevboxsync struct {
af062818b47340eef15700d2f0211576ba3506eevboxsync BOOLEAN Lock;
af062818b47340eef15700d2f0211576ba3506eevboxsync } SetLock;
af062818b47340eef15700d2f0211576ba3506eevboxsync struct {
af062818b47340eef15700d2f0211576ba3506eevboxsync BUS_QUERY_ID_TYPE IdType;
af062818b47340eef15700d2f0211576ba3506eevboxsync } QueryId;
af062818b47340eef15700d2f0211576ba3506eevboxsync struct {
af062818b47340eef15700d2f0211576ba3506eevboxsync DEVICE_TEXT_TYPE DeviceTextType;
af062818b47340eef15700d2f0211576ba3506eevboxsync LCID POINTER_ALIGNMENT LocaleId;
af062818b47340eef15700d2f0211576ba3506eevboxsync } QueryDeviceText;
af062818b47340eef15700d2f0211576ba3506eevboxsync struct {
af062818b47340eef15700d2f0211576ba3506eevboxsync BOOLEAN InPath;
af062818b47340eef15700d2f0211576ba3506eevboxsync BOOLEAN Reserved[3];
af062818b47340eef15700d2f0211576ba3506eevboxsync DEVICE_USAGE_NOTIFICATION_TYPE POINTER_ALIGNMENT Type;
af062818b47340eef15700d2f0211576ba3506eevboxsync } UsageNotification;
af062818b47340eef15700d2f0211576ba3506eevboxsync struct {
af062818b47340eef15700d2f0211576ba3506eevboxsync SYSTEM_POWER_STATE PowerState;
af062818b47340eef15700d2f0211576ba3506eevboxsync } WaitWake;
af062818b47340eef15700d2f0211576ba3506eevboxsync struct {
af062818b47340eef15700d2f0211576ba3506eevboxsync PPOWER_SEQUENCE PowerSequence;
af062818b47340eef15700d2f0211576ba3506eevboxsync } PowerSequence;
af062818b47340eef15700d2f0211576ba3506eevboxsync struct {
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG SystemContext;
af062818b47340eef15700d2f0211576ba3506eevboxsync POWER_STATE_TYPE POINTER_ALIGNMENT Type;
af062818b47340eef15700d2f0211576ba3506eevboxsync POWER_STATE POINTER_ALIGNMENT State;
af062818b47340eef15700d2f0211576ba3506eevboxsync POWER_ACTION POINTER_ALIGNMENT ShutdownType;
af062818b47340eef15700d2f0211576ba3506eevboxsync } Power;
af062818b47340eef15700d2f0211576ba3506eevboxsync struct {
af062818b47340eef15700d2f0211576ba3506eevboxsync PCM_RESOURCE_LIST AllocatedResources;
af062818b47340eef15700d2f0211576ba3506eevboxsync PCM_RESOURCE_LIST AllocatedResourcesTranslated;
af062818b47340eef15700d2f0211576ba3506eevboxsync } StartDevice;
af062818b47340eef15700d2f0211576ba3506eevboxsync struct {
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG_PTR ProviderId;
af062818b47340eef15700d2f0211576ba3506eevboxsync PVOID DataPath;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG BufferSize;
af062818b47340eef15700d2f0211576ba3506eevboxsync PVOID Buffer;
af062818b47340eef15700d2f0211576ba3506eevboxsync } WMI;
af062818b47340eef15700d2f0211576ba3506eevboxsync struct {
af062818b47340eef15700d2f0211576ba3506eevboxsync PVOID Argument1;
af062818b47340eef15700d2f0211576ba3506eevboxsync PVOID Argument2;
af062818b47340eef15700d2f0211576ba3506eevboxsync PVOID Argument3;
af062818b47340eef15700d2f0211576ba3506eevboxsync PVOID Argument4;
af062818b47340eef15700d2f0211576ba3506eevboxsync } Others;
af062818b47340eef15700d2f0211576ba3506eevboxsync } Parameters;
af062818b47340eef15700d2f0211576ba3506eevboxsync PDEVICE_OBJECT DeviceObject;
af062818b47340eef15700d2f0211576ba3506eevboxsync PFILE_OBJECT FileObject;
af062818b47340eef15700d2f0211576ba3506eevboxsync PIO_COMPLETION_ROUTINE CompletionRoutine;
af062818b47340eef15700d2f0211576ba3506eevboxsync PVOID Context;
af062818b47340eef15700d2f0211576ba3506eevboxsync} IO_STACK_LOCATION, *PIO_STACK_LOCATION;
af062818b47340eef15700d2f0211576ba3506eevboxsync#include <poppack.h>
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct _MDL {
af062818b47340eef15700d2f0211576ba3506eevboxsync struct _MDL *Next;
af062818b47340eef15700d2f0211576ba3506eevboxsync CSHORT Size;
af062818b47340eef15700d2f0211576ba3506eevboxsync CSHORT MdlFlags;
af062818b47340eef15700d2f0211576ba3506eevboxsync struct _EPROCESS *Process;
af062818b47340eef15700d2f0211576ba3506eevboxsync PVOID MappedSystemVa;
af062818b47340eef15700d2f0211576ba3506eevboxsync PVOID StartVa;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG ByteCount;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG ByteOffset;
af062818b47340eef15700d2f0211576ba3506eevboxsync} MDL, *PMDL;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct _KTIMER {
af062818b47340eef15700d2f0211576ba3506eevboxsync DISPATCHER_HEADER Header;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULARGE_INTEGER DueTime;
af062818b47340eef15700d2f0211576ba3506eevboxsync LIST_ENTRY TimerListEntry;
af062818b47340eef15700d2f0211576ba3506eevboxsync struct _KDPC *Dpc;
af062818b47340eef15700d2f0211576ba3506eevboxsync LONG Period;
af062818b47340eef15700d2f0211576ba3506eevboxsync} KTIMER, *PKTIMER;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct _KSYSTEM_TIME {
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG LowPart;
af062818b47340eef15700d2f0211576ba3506eevboxsync LONG High1Time;
af062818b47340eef15700d2f0211576ba3506eevboxsync LONG High2Time;
af062818b47340eef15700d2f0211576ba3506eevboxsync} KSYSTEM_TIME, *PKSYSTEM_TIME;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef enum _NT_PRODUCT_TYPE {
af062818b47340eef15700d2f0211576ba3506eevboxsync NtProductWinNt = 1,
af062818b47340eef15700d2f0211576ba3506eevboxsync NtProductLanManNt,
af062818b47340eef15700d2f0211576ba3506eevboxsync NtProductServer
af062818b47340eef15700d2f0211576ba3506eevboxsync} NT_PRODUCT_TYPE, *PNT_PRODUCT_TYPE;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define PROCESSOR_FEATURE_MAX 64
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef enum _ALTERNATIVE_ARCHITECTURE_TYPE
af062818b47340eef15700d2f0211576ba3506eevboxsync{
af062818b47340eef15700d2f0211576ba3506eevboxsync StandardDesign,
af062818b47340eef15700d2f0211576ba3506eevboxsync NEC98x86,
af062818b47340eef15700d2f0211576ba3506eevboxsync EndAlternatives
af062818b47340eef15700d2f0211576ba3506eevboxsync} ALTERNATIVE_ARCHITECTURE_TYPE;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct _KUSER_SHARED_DATA {
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG TickCountLowDeprecated;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG TickCountMultiplier;
af062818b47340eef15700d2f0211576ba3506eevboxsync volatile KSYSTEM_TIME InterruptTime;
af062818b47340eef15700d2f0211576ba3506eevboxsync volatile KSYSTEM_TIME SystemTime;
af062818b47340eef15700d2f0211576ba3506eevboxsync volatile KSYSTEM_TIME TimeZoneBias;
af062818b47340eef15700d2f0211576ba3506eevboxsync USHORT ImageNumberLow;
af062818b47340eef15700d2f0211576ba3506eevboxsync USHORT ImageNumberHigh;
af062818b47340eef15700d2f0211576ba3506eevboxsync WCHAR NtSystemRoot[260];
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG MaxStckTraceDepth;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG CryptoExponent;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG TimeZoneId;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG LargePageMinimum;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG Reserverd2[7];
af062818b47340eef15700d2f0211576ba3506eevboxsync NT_PRODUCT_TYPE NtProductType;
af062818b47340eef15700d2f0211576ba3506eevboxsync BOOLEAN ProductTypeIsValid;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG MajorNtVersion;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG MinorNtVersion;
af062818b47340eef15700d2f0211576ba3506eevboxsync BOOLEAN ProcessorFeatures[PROCESSOR_FEATURE_MAX];
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG Reserved1;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG Reserved3;
af062818b47340eef15700d2f0211576ba3506eevboxsync volatile ULONG TimeSlip;
af062818b47340eef15700d2f0211576ba3506eevboxsync ALTERNATIVE_ARCHITECTURE_TYPE AlternativeArchitecture;
af062818b47340eef15700d2f0211576ba3506eevboxsync LARGE_INTEGER SystemExpirationDate;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG SuiteMask;
af062818b47340eef15700d2f0211576ba3506eevboxsync BOOLEAN KdDebuggerEnabled;
af062818b47340eef15700d2f0211576ba3506eevboxsync volatile ULONG ActiveConsoleId;
af062818b47340eef15700d2f0211576ba3506eevboxsync volatile ULONG DismountCount;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG ComPlusPackage;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG LastSystemRITEventTickCount;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG NumberOfPhysicalPages;
af062818b47340eef15700d2f0211576ba3506eevboxsync BOOLEAN SafeBootMode;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG TraceLogging;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONGLONG Fill0;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONGLONG SystemCall[4];
af062818b47340eef15700d2f0211576ba3506eevboxsync union {
af062818b47340eef15700d2f0211576ba3506eevboxsync volatile KSYSTEM_TIME TickCount;
af062818b47340eef15700d2f0211576ba3506eevboxsync volatile ULONG64 TickCountQuad;
af062818b47340eef15700d2f0211576ba3506eevboxsync } DUMMYUNIONNAME;
af062818b47340eef15700d2f0211576ba3506eevboxsync} KSHARED_USER_DATA, *PKSHARED_USER_DATA;
af062818b47340eef15700d2f0211576ba3506eevboxsync
589fd26cedb2b4ebbed14f2964cad03cc8ebbca2vboxsynctypedef enum _MM_SYSTEM_SIZE
589fd26cedb2b4ebbed14f2964cad03cc8ebbca2vboxsync{
589fd26cedb2b4ebbed14f2964cad03cc8ebbca2vboxsync MmSmallSystem,
589fd26cedb2b4ebbed14f2964cad03cc8ebbca2vboxsync MmMediumSystem,
589fd26cedb2b4ebbed14f2964cad03cc8ebbca2vboxsync MmLargeSystem
589fd26cedb2b4ebbed14f2964cad03cc8ebbca2vboxsync} MM_SYSTEMSIZE;
589fd26cedb2b4ebbed14f2964cad03cc8ebbca2vboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ObCloseHandle(IN HANDLE handle);
af062818b47340eef15700d2f0211576ba3506eevboxsync
ee6bcfc59fe3b0230aad85e2ef63d0402b7719b2vboxsync#ifdef NONAMELESSUNION
ee6bcfc59fe3b0230aad85e2ef63d0402b7719b2vboxsync# ifdef NONAMELESSSTRUCT
ee6bcfc59fe3b0230aad85e2ef63d0402b7719b2vboxsync# define IoGetCurrentIrpStackLocation(_Irp) ((_Irp)->Tail.Overlay.s.u2.CurrentStackLocation)
ee6bcfc59fe3b0230aad85e2ef63d0402b7719b2vboxsync# define IoGetNextIrpStackLocation(_Irp) ((_Irp)->Tail.Overlay.s.u2.CurrentStackLocation - 1)
ee6bcfc59fe3b0230aad85e2ef63d0402b7719b2vboxsync# else
ee6bcfc59fe3b0230aad85e2ef63d0402b7719b2vboxsync# define IoGetCurrentIrpStackLocation(_Irp) ((_Irp)->Tail.Overlay.u2.CurrentStackLocation)
ee6bcfc59fe3b0230aad85e2ef63d0402b7719b2vboxsync# define IoGetNextIrpStackLocation(_Irp) ((_Irp)->Tail.Overlay.u2.CurrentStackLocation - 1)
ee6bcfc59fe3b0230aad85e2ef63d0402b7719b2vboxsync# endif
ee6bcfc59fe3b0230aad85e2ef63d0402b7719b2vboxsync#else
ee6bcfc59fe3b0230aad85e2ef63d0402b7719b2vboxsync# ifdef NONAMELESSSTRUCT
ee6bcfc59fe3b0230aad85e2ef63d0402b7719b2vboxsync# define IoGetCurrentIrpStackLocation(_Irp) ((_Irp)->Tail.Overlay.s.CurrentStackLocation)
ee6bcfc59fe3b0230aad85e2ef63d0402b7719b2vboxsync# define IoGetNextIrpStackLocation(_Irp) ((_Irp)->Tail.Overlay.s.CurrentStackLocation - 1)
ee6bcfc59fe3b0230aad85e2ef63d0402b7719b2vboxsync# else
ee6bcfc59fe3b0230aad85e2ef63d0402b7719b2vboxsync# define IoGetCurrentIrpStackLocation(_Irp) ((_Irp)->Tail.Overlay.CurrentStackLocation)
ee6bcfc59fe3b0230aad85e2ef63d0402b7719b2vboxsync# define IoGetNextIrpStackLocation(_Irp) ((_Irp)->Tail.Overlay.CurrentStackLocation - 1)
ee6bcfc59fe3b0230aad85e2ef63d0402b7719b2vboxsync# endif
ee6bcfc59fe3b0230aad85e2ef63d0402b7719b2vboxsync#endif
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define KernelMode 0
af062818b47340eef15700d2f0211576ba3506eevboxsync#define UserMode 1
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync/* directory object access rights */
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DIRECTORY_QUERY 0x0001
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DIRECTORY_TRAVERSE 0x0002
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DIRECTORY_CREATE_OBJECT 0x0004
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DIRECTORY_CREATE_SUBDIRECTORY 0x0008
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DIRECTORY_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0xF)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync/* symbolic link access rights */
af062818b47340eef15700d2f0211576ba3506eevboxsync#define SYMBOLIC_LINK_QUERY 0x0001
af062818b47340eef15700d2f0211576ba3506eevboxsync#define SYMBOLIC_LINK_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0x1)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsyncPVOID WINAPI ExAllocatePool(POOL_TYPE,SIZE_T);
af062818b47340eef15700d2f0211576ba3506eevboxsyncPVOID WINAPI ExAllocatePoolWithQuota(POOL_TYPE,SIZE_T);
af062818b47340eef15700d2f0211576ba3506eevboxsyncPVOID WINAPI ExAllocatePoolWithTag(POOL_TYPE,SIZE_T,ULONG);
af062818b47340eef15700d2f0211576ba3506eevboxsyncPVOID WINAPI ExAllocatePoolWithQuotaTag(POOL_TYPE,SIZE_T,ULONG);
af062818b47340eef15700d2f0211576ba3506eevboxsyncvoid WINAPI ExFreePool(PVOID);
af062818b47340eef15700d2f0211576ba3506eevboxsyncvoid WINAPI ExFreePoolWithTag(PVOID,ULONG);
af062818b47340eef15700d2f0211576ba3506eevboxsync
589fd26cedb2b4ebbed14f2964cad03cc8ebbca2vboxsyncNTSTATUS WINAPI IoAllocateDriverObjectExtension(PDRIVER_OBJECT,PVOID,ULONG,PVOID*);
5112e32d7072e280613921c982a6672f2c859cf3vboxsyncPVOID WINAPI IoAllocateErrorLogEntry(PVOID,UCHAR);
af062818b47340eef15700d2f0211576ba3506eevboxsyncPIRP WINAPI IoAllocateIrp(CCHAR,BOOLEAN);
ee6bcfc59fe3b0230aad85e2ef63d0402b7719b2vboxsyncNTSTATUS WINAPI IoCallDriver(DEVICE_OBJECT*,IRP*);
ee6bcfc59fe3b0230aad85e2ef63d0402b7719b2vboxsyncVOID WINAPI IoCompleteRequest(IRP*,UCHAR);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI IoCreateDevice(DRIVER_OBJECT*,ULONG,UNICODE_STRING*,DEVICE_TYPE,ULONG,BOOLEAN,DEVICE_OBJECT**);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI IoCreateDriver(UNICODE_STRING*,PDRIVER_INITIALIZE);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI IoCreateSymbolicLink(UNICODE_STRING*,UNICODE_STRING*);
af062818b47340eef15700d2f0211576ba3506eevboxsyncvoid WINAPI IoDeleteDevice(DEVICE_OBJECT*);
af062818b47340eef15700d2f0211576ba3506eevboxsyncvoid WINAPI IoDeleteDriver(DRIVER_OBJECT*);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI IoDeleteSymbolicLink(UNICODE_STRING*);
af062818b47340eef15700d2f0211576ba3506eevboxsyncvoid WINAPI IoFreeIrp(IRP*);
af062818b47340eef15700d2f0211576ba3506eevboxsyncPEPROCESS WINAPI IoGetCurrentProcess(void);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI IoGetDeviceObjectPointer(UNICODE_STRING*,ACCESS_MASK,PFILE_OBJECT*,PDEVICE_OBJECT*);
ee6bcfc59fe3b0230aad85e2ef63d0402b7719b2vboxsyncNTSTATUS WINAPI IoGetDeviceProperty(PDEVICE_OBJECT,DEVICE_REGISTRY_PROPERTY,ULONG,PVOID,PULONG);
589fd26cedb2b4ebbed14f2964cad03cc8ebbca2vboxsyncPVOID WINAPI IoGetDriverObjectExtension(PDRIVER_OBJECT,PVOID);
af062818b47340eef15700d2f0211576ba3506eevboxsyncPDEVICE_OBJECT WINAPI IoGetRelatedDeviceObject(PFILE_OBJECT);
af062818b47340eef15700d2f0211576ba3506eevboxsyncvoid WINAPI IoInitializeIrp(IRP*,USHORT,CCHAR);
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsyncPKTHREAD WINAPI KeGetCurrentThread(void);
af062818b47340eef15700d2f0211576ba3506eevboxsyncvoid WINAPI KeQuerySystemTime(LARGE_INTEGER*);
af062818b47340eef15700d2f0211576ba3506eevboxsyncvoid WINAPI KeQueryTickCount(LARGE_INTEGER*);
af062818b47340eef15700d2f0211576ba3506eevboxsyncULONG WINAPI KeQueryTimeIncrement(void);
5112e32d7072e280613921c982a6672f2c859cf3vboxsyncLONG WINAPI KeReleaseSemaphore(PRKSEMAPHORE,KPRIORITY,LONG,BOOLEAN);
ee6bcfc59fe3b0230aad85e2ef63d0402b7719b2vboxsyncLONG WINAPI KeResetEvent(PRKEVENT);
ee6bcfc59fe3b0230aad85e2ef63d0402b7719b2vboxsyncLONG WINAPI KeSetEvent(PRKEVENT,KPRIORITY,BOOLEAN);
5112e32d7072e280613921c982a6672f2c859cf3vboxsyncKPRIORITY WINAPI KeSetPriorityThread(PKTHREAD,KPRIORITY);
af062818b47340eef15700d2f0211576ba3506eevboxsync
5112e32d7072e280613921c982a6672f2c859cf3vboxsyncPVOID WINAPI MmAllocateContiguousMemory(SIZE_T,PHYSICAL_ADDRESS);
af062818b47340eef15700d2f0211576ba3506eevboxsyncPVOID WINAPI MmAllocateNonCachedMemory(SIZE_T);
5112e32d7072e280613921c982a6672f2c859cf3vboxsyncPMDL WINAPI MmAllocatePagesForMdl(PHYSICAL_ADDRESS,PHYSICAL_ADDRESS,PHYSICAL_ADDRESS,SIZE_T);
af062818b47340eef15700d2f0211576ba3506eevboxsyncvoid WINAPI MmFreeNonCachedMemory(PVOID,SIZE_T);
589fd26cedb2b4ebbed14f2964cad03cc8ebbca2vboxsyncMM_SYSTEMSIZE WINAPI MmQuerySystemSize(void);
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ObReferenceObjectByHandle(HANDLE,ACCESS_MASK,POBJECT_TYPE,KPROCESSOR_MODE,PVOID*,POBJECT_HANDLE_INFORMATION);
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI PsCreateSystemThread(PHANDLE,ULONG,POBJECT_ATTRIBUTES,HANDLE,PCLIENT_ID,PKSTART_ROUTINE,PVOID);
af062818b47340eef15700d2f0211576ba3506eevboxsync#define PsGetCurrentProcess() IoGetCurrentProcess()
af062818b47340eef15700d2f0211576ba3506eevboxsync#define PsGetCurrentThread() ((PETHREAD)KeGetCurrentThread())
af062818b47340eef15700d2f0211576ba3506eevboxsyncHANDLE WINAPI PsGetCurrentProcessId(void);
af062818b47340eef15700d2f0211576ba3506eevboxsyncHANDLE WINAPI PsGetCurrentThreadId(void);
af062818b47340eef15700d2f0211576ba3506eevboxsyncBOOLEAN WINAPI PsGetVersion(ULONG*,ULONG*,ULONG*,UNICODE_STRING*);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI PsTerminateSystemThread(NTSTATUS);
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwAddBootEntry(PUNICODE_STRING,PUNICODE_STRING);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwAccessCheckAndAuditAlarm(PUNICODE_STRING,HANDLE,PUNICODE_STRING,PUNICODE_STRING,PSECURITY_DESCRIPTOR,ACCESS_MASK,PGENERIC_MAPPING,BOOLEAN,PACCESS_MASK,PBOOLEAN,PBOOLEAN);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwAdjustPrivilegesToken(HANDLE,BOOLEAN,PTOKEN_PRIVILEGES,DWORD,PTOKEN_PRIVILEGES,PDWORD);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwAlertThread(HANDLE ThreadHandle);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwAllocateVirtualMemory(HANDLE,PVOID*,ULONG,SIZE_T*,ULONG,ULONG);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwCancelIoFile(HANDLE,PIO_STATUS_BLOCK);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwCancelTimer(HANDLE, BOOLEAN*);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwClearEvent(HANDLE);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwClose(HANDLE);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwCloseObjectAuditAlarm(PUNICODE_STRING,HANDLE,BOOLEAN);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwConnectPort(PHANDLE,PUNICODE_STRING,PSECURITY_QUALITY_OF_SERVICE,PLPC_SECTION_WRITE,PLPC_SECTION_READ,PULONG,PVOID,PULONG);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwCreateDirectoryObject(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwCreateEvent(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES *,BOOLEAN,BOOLEAN);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwCreateFile(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,PIO_STATUS_BLOCK,PLARGE_INTEGER,ULONG,ULONG,ULONG,ULONG,PVOID,ULONG);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwCreateKey(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,ULONG,const UNICODE_STRING*,ULONG,PULONG);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwCreateSection(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*,const LARGE_INTEGER*,ULONG,ULONG,HANDLE);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwCreateSymbolicLinkObject(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,PUNICODE_STRING);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwCreateTimer(HANDLE*, ACCESS_MASK, const OBJECT_ATTRIBUTES*, TIMER_TYPE);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwDeleteAtom(RTL_ATOM);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwDeleteFile(POBJECT_ATTRIBUTES);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwDeleteKey(HANDLE);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwDeleteValueKey(HANDLE,const UNICODE_STRING *);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwDeviceIoControlFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,ULONG,PVOID,ULONG,PVOID,ULONG);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwDisplayString(PUNICODE_STRING);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwDuplicateObject(HANDLE,HANDLE,HANDLE,PHANDLE,ACCESS_MASK,ULONG,ULONG);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwDuplicateToken(HANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,SECURITY_IMPERSONATION_LEVEL,TOKEN_TYPE,PHANDLE);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwEnumerateKey(HANDLE,ULONG,KEY_INFORMATION_CLASS,void *,DWORD,DWORD *);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwEnumerateValueKey(HANDLE,ULONG,KEY_VALUE_INFORMATION_CLASS,PVOID,ULONG,PULONG);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwFlushInstructionCache(HANDLE,LPCVOID,SIZE_T);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwFlushKey(HANDLE);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwFlushVirtualMemory(HANDLE,LPCVOID*,SIZE_T*,ULONG);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwFreeVirtualMemory(HANDLE,PVOID*,SIZE_T*,ULONG);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwFsControlFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,ULONG,PVOID,ULONG,PVOID,ULONG);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwInitiatePowerAction(POWER_ACTION,SYSTEM_POWER_STATE,ULONG,BOOLEAN);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwLoadDriver(const UNICODE_STRING *);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwLoadKey(const OBJECT_ATTRIBUTES *,OBJECT_ATTRIBUTES *);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwLockVirtualMemory(HANDLE,PVOID*,SIZE_T*,ULONG);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwMakeTemporaryObject(HANDLE);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwMapViewOfSection(HANDLE,HANDLE,PVOID*,ULONG,SIZE_T,const LARGE_INTEGER*,SIZE_T*,SECTION_INHERIT,ULONG,ULONG);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwNotifyChangeKey(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,ULONG,BOOLEAN,PVOID,ULONG,BOOLEAN);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwOpenDirectoryObject(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwOpenEvent(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES *);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwOpenFile(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,PIO_STATUS_BLOCK,ULONG,ULONG);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwOpenKey(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES *);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwOpenProcess(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,const CLIENT_ID*);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwOpenProcessToken(HANDLE,DWORD,HANDLE *);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwOpenSection(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwOpenSymbolicLinkObject(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwOpenThread(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*,const CLIENT_ID*);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwOpenThreadToken(HANDLE,DWORD,BOOLEAN,HANDLE *);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwOpenTimer(HANDLE*, ACCESS_MASK, const OBJECT_ATTRIBUTES*);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwPowerInformation(POWER_INFORMATION_LEVEL,PVOID,ULONG,PVOID,ULONG);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwPulseEvent(HANDLE,PULONG);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwQueryDefaultLocale(BOOLEAN,LCID*);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwQueryDefaultUILanguage(LANGID*);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwQueryDirectoryFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,PVOID,ULONG,FILE_INFORMATION_CLASS,BOOLEAN,PUNICODE_STRING,BOOLEAN);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwQueryDirectoryObject(HANDLE,PDIRECTORY_BASIC_INFORMATION,ULONG,BOOLEAN,BOOLEAN,PULONG,PULONG);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwQueryEaFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG,BOOLEAN,PVOID,ULONG,PVOID,BOOLEAN);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwQueryFullAttributesFile(const OBJECT_ATTRIBUTES*,FILE_NETWORK_OPEN_INFORMATION*);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwQueryInformationFile(HANDLE,PIO_STATUS_BLOCK,PVOID,LONG,FILE_INFORMATION_CLASS);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwQueryInformationThread(HANDLE,THREADINFOCLASS,PVOID,ULONG,PULONG);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwQueryInformationToken(HANDLE,DWORD,PVOID,DWORD,LPDWORD);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwQueryInstallUILanguage(LANGID*);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwQueryKey(HANDLE,KEY_INFORMATION_CLASS,void *,DWORD,DWORD *);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwQueryObject(HANDLE, OBJECT_INFORMATION_CLASS, PVOID, ULONG, PULONG);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwQuerySecurityObject(HANDLE,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR,ULONG,PULONG);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwQuerySection(HANDLE,SECTION_INFORMATION_CLASS,PVOID,ULONG,PULONG);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwQuerySymbolicLinkObject(HANDLE,PUNICODE_STRING,PULONG);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwQuerySystemInformation(SYSTEM_INFORMATION_CLASS,PVOID,ULONG,PULONG);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwQueryTimerResolution(PULONG,PULONG,PULONG);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwQueryValueKey(HANDLE,const UNICODE_STRING *,KEY_VALUE_INFORMATION_CLASS,void *,DWORD,DWORD *);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwQueryVolumeInformationFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG,FS_INFORMATION_CLASS);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwReadFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,PVOID,ULONG,PLARGE_INTEGER,PULONG);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwReplaceKey(POBJECT_ATTRIBUTES,HANDLE,POBJECT_ATTRIBUTES);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwRequestWaitReplyPort(HANDLE,PLPC_MESSAGE,PLPC_MESSAGE);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwResetEvent(HANDLE,PULONG);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwRestoreKey(HANDLE,HANDLE,ULONG);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwSaveKey(HANDLE,HANDLE);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwSecureConnectPort(PHANDLE,PUNICODE_STRING,PSECURITY_QUALITY_OF_SERVICE,PLPC_SECTION_WRITE,PSID,PLPC_SECTION_READ,PULONG,PVOID,PULONG);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwSetDefaultLocale(BOOLEAN,LCID);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwSetDefaultUILanguage(LANGID);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwSetEaFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwSetEvent(HANDLE,PULONG);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwSetInformationFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG,FILE_INFORMATION_CLASS);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwSetInformationKey(HANDLE,const int,PVOID,ULONG);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwSetInformationObject(HANDLE, OBJECT_INFORMATION_CLASS, PVOID, ULONG);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwSetInformationProcess(HANDLE,PROCESS_INFORMATION_CLASS,PVOID,ULONG);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwSetInformationThread(HANDLE,THREADINFOCLASS,LPCVOID,ULONG);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwSetIoCompletion(HANDLE,ULONG,ULONG,NTSTATUS,ULONG);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwSetSecurityObject(HANDLE,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwSetSystemInformation(SYSTEM_INFORMATION_CLASS,PVOID,ULONG);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwSetSystemTime(const LARGE_INTEGER*,LARGE_INTEGER*);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwSetTimer(HANDLE, const LARGE_INTEGER*, PTIMER_APC_ROUTINE, PVOID, BOOLEAN, ULONG, BOOLEAN*);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwSetValueKey(HANDLE,const UNICODE_STRING *,ULONG,ULONG,const void *,ULONG);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwSetVolumeInformationFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG,FS_INFORMATION_CLASS);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwSuspendThread(HANDLE,PULONG);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwTerminateProcess(HANDLE,LONG);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwUnloadDriver(const UNICODE_STRING *);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwUnloadKey(HANDLE);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwUnmapViewOfSection(HANDLE,PVOID);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwWaitForSingleObject(HANDLE,BOOLEAN,const LARGE_INTEGER*);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwWaitForMultipleObjects(ULONG,const HANDLE*,BOOLEAN,BOOLEAN,const LARGE_INTEGER*);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwWriteFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,const void*,ULONG,PLARGE_INTEGER,PULONG);
af062818b47340eef15700d2f0211576ba3506eevboxsyncNTSTATUS WINAPI ZwYieldExecution(void);
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#endif