From 719200874a7bee668bc9dc801c4f075d3ce672db Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Sat, 27 Mar 2010 18:57:56 +0000 Subject: [PATCH] Revert r46466 this time for real svn path=/trunk/; revision=46493 --- reactos/boot/freeldr/freeldr/disk/scsiport.c | 90 +- reactos/dll/win32/gdi32/objects/bitmap.c | 2 +- reactos/dll/win32/hid/precomp.h | 1 + reactos/dll/win32/setupapi/setupapi.rbuild | 1 - reactos/dll/win32/setupapi/setupapi_private.h | 7 +- reactos/drivers/battery/battc/battc.c | 12 +- reactos/drivers/directx/dxapi/dxapi_driver.h | 12 +- reactos/drivers/directx/dxg/dxg_int.h | 10 +- .../drivers/filesystems/ext2/inc/ext2fsd.h | 3 - reactos/drivers/serial/serial/serial.h | 9 + reactos/drivers/storage/ide/uniata/atapi.h | 4 +- reactos/drivers/storage/ide/uniata/bsmaster.h | 8 +- reactos/drivers/storage/ide/uniata/config.h | 2 + reactos/drivers/storage/ide/uniata/id_ata.cpp | 30 +- reactos/drivers/storage/ide/uniata/srb.h | 108 +- reactos/drivers/storage/scsiport/stubs.c | 54 +- reactos/drivers/video/displays/vga/vgaddi.h | 1 + reactos/include/ddk/afilter.h | 22 +- reactos/include/ddk/atsmedia.h | 17 + reactos/include/ddk/bdasup.h | 308 +- reactos/include/{psdk => ddk}/cfg.h | 95 +- reactos/include/ddk/cfgmgr32.h | 2244 ++ reactos/include/ddk/csq.h | 2 - reactos/include/ddk/hidclass.h | 4 +- reactos/include/ddk/hidpi.h | 50 +- reactos/include/ddk/mcd.h | 18 +- reactos/include/ddk/mce.h | 1074 - reactos/include/ddk/miniport.h | 2 +- reactos/include/ddk/minitape.h | 8 +- reactos/include/ddk/ndis.h | 610 +- reactos/include/ddk/ntagp.h | 12 +- reactos/include/ddk/ntdd8042.h | 14 +- reactos/include/ddk/ntddk.h | 6899 ++---- reactos/include/ddk/ntifs.h | 5052 ++--- reactos/include/ddk/ntimage.h | 17 +- reactos/include/ddk/ntpoapi.h | 2 +- reactos/include/ddk/parallel.h | 36 +- reactos/include/ddk/scsiwmi.h | 18 +- reactos/include/ddk/smbus.h | 20 +- reactos/include/ddk/srb.h | 108 +- reactos/include/ddk/storport.h | 84 +- reactos/include/ddk/tdikrnl.h | 112 +- reactos/include/{psdk => ddk}/tvout.h | 58 +- reactos/include/ddk/upssvc.h | 12 +- reactos/include/ddk/video.h | 290 +- reactos/include/ddk/videoagp.h | 20 +- reactos/include/ddk/wdm.h | 17693 ++++++---------- reactos/include/ddk/wmilib.h | 36 +- reactos/include/ddk/xmldsodid.h | 10 + reactos/include/ndk/ketypes.h | 23 + reactos/include/ndk/peb_teb.h | 6 +- reactos/include/ndk/pstypes.h | 2 +- reactos/include/ndk/rtlfuncs.h | 24 +- reactos/include/psdk/atsmedia.h | 7 - reactos/include/psdk/batclass.h | 24 +- reactos/include/psdk/cfgmgr32.h | 3206 --- reactos/include/psdk/devpropdef.h | 84 - reactos/include/psdk/evntprov.h | 335 - reactos/include/psdk/ktmtypes.h | 3 - reactos/include/psdk/ntdef.h | 296 +- reactos/include/psdk/ntiologc.h | 152 - reactos/include/psdk/ntstatus.h | 2223 +- reactos/include/psdk/usbioctl.h | 2 - reactos/include/psdk/winbase.h | 26 +- reactos/include/psdk/wincon.h | 4 +- reactos/include/psdk/windef.h | 2 +- reactos/include/psdk/wingdi.h | 12 +- reactos/include/psdk/winnt.h | 6 - reactos/include/psdk/winuser.h | 2 +- reactos/include/reactos/idl/pnp.idl | 13 +- reactos/include/reactos/wine/cfgmgr32.h | 373 + reactos/include/xdk/amd64/ke.h | 278 - reactos/include/xdk/amd64/mm.h | 37 - reactos/include/xdk/arm/ke.h | 3 - reactos/include/xdk/cmfuncs.h | 70 - reactos/include/xdk/cmtypes.h | 1048 - reactos/include/xdk/exfuncs.h | 1040 - reactos/include/xdk/extypes.h | 289 - reactos/include/xdk/generate.bat | 4 - reactos/include/xdk/halfuncs.h | 346 - reactos/include/xdk/haltypes.h | 551 - reactos/include/xdk/ia64/ke.h | 38 - reactos/include/xdk/interlocked.h | 193 - reactos/include/xdk/iofuncs.h | 2284 -- reactos/include/xdk/iotypes.h | 4869 ----- reactos/include/xdk/kdfuncs.h | 192 - reactos/include/xdk/kdtypes.h | 94 - reactos/include/xdk/kefuncs.h | 1075 - reactos/include/xdk/ketypes.h | 1183 -- reactos/include/xdk/mips/ke.h | 66 - reactos/include/xdk/mmfuncs.h | 658 - reactos/include/xdk/mmtypes.h | 171 - reactos/include/xdk/ntddk.template.h | 262 - reactos/include/xdk/nttmapi.h | 652 - reactos/include/xdk/obfuncs.h | 141 - reactos/include/xdk/obtypes.h | 135 - reactos/include/xdk/pofuncs.h | 167 - reactos/include/xdk/potypes.h | 412 - reactos/include/xdk/ppc/ke.h | 107 - reactos/include/xdk/psfuncs.h | 184 - reactos/include/xdk/pstypes.h | 451 - reactos/include/xdk/rtlfuncs.h | 2259 -- reactos/include/xdk/rtltypes.h | 448 - reactos/include/xdk/sefuncs.h | 144 - reactos/include/xdk/setypes.h | 396 - reactos/include/xdk/wdm.template.h | 243 - reactos/include/xdk/wmifuncs.h | 152 - reactos/include/xdk/wmitypes.h | 62 - reactos/include/xdk/x86/ke.h | 288 - reactos/include/xdk/x86/mm.h | 24 - reactos/include/xdk/zwfuncs.h | 820 - reactos/ntoskrnl/include/ntoskrnl.h | 1 + reactos/ntoskrnl/mm/mminit.c | 2 +- reactos/subsystems/subsystems.rbuild | 6 +- reactos/subsystems/win32/win32k/pch.h | 10 +- 115 files changed, 16455 insertions(+), 47526 deletions(-) create mode 100644 reactos/include/ddk/atsmedia.h rename reactos/include/{psdk => ddk}/cfg.h (65%) create mode 100644 reactos/include/ddk/cfgmgr32.h delete mode 100644 reactos/include/ddk/mce.h rename reactos/include/{psdk => ddk}/tvout.h (81%) create mode 100644 reactos/include/ddk/xmldsodid.h delete mode 100644 reactos/include/psdk/atsmedia.h delete mode 100644 reactos/include/psdk/cfgmgr32.h delete mode 100644 reactos/include/psdk/devpropdef.h delete mode 100644 reactos/include/psdk/evntprov.h delete mode 100644 reactos/include/psdk/ntiologc.h create mode 100644 reactos/include/reactos/wine/cfgmgr32.h delete mode 100644 reactos/include/xdk/amd64/ke.h delete mode 100644 reactos/include/xdk/amd64/mm.h delete mode 100644 reactos/include/xdk/arm/ke.h delete mode 100644 reactos/include/xdk/cmfuncs.h delete mode 100644 reactos/include/xdk/cmtypes.h delete mode 100644 reactos/include/xdk/exfuncs.h delete mode 100644 reactos/include/xdk/extypes.h delete mode 100644 reactos/include/xdk/generate.bat delete mode 100644 reactos/include/xdk/halfuncs.h delete mode 100644 reactos/include/xdk/haltypes.h delete mode 100644 reactos/include/xdk/ia64/ke.h delete mode 100644 reactos/include/xdk/interlocked.h delete mode 100644 reactos/include/xdk/iofuncs.h delete mode 100644 reactos/include/xdk/iotypes.h delete mode 100644 reactos/include/xdk/kdfuncs.h delete mode 100644 reactos/include/xdk/kdtypes.h delete mode 100644 reactos/include/xdk/kefuncs.h delete mode 100644 reactos/include/xdk/ketypes.h delete mode 100644 reactos/include/xdk/mips/ke.h delete mode 100644 reactos/include/xdk/mmfuncs.h delete mode 100644 reactos/include/xdk/mmtypes.h delete mode 100644 reactos/include/xdk/ntddk.template.h delete mode 100644 reactos/include/xdk/nttmapi.h delete mode 100644 reactos/include/xdk/obfuncs.h delete mode 100644 reactos/include/xdk/obtypes.h delete mode 100644 reactos/include/xdk/pofuncs.h delete mode 100644 reactos/include/xdk/potypes.h delete mode 100644 reactos/include/xdk/ppc/ke.h delete mode 100644 reactos/include/xdk/psfuncs.h delete mode 100644 reactos/include/xdk/pstypes.h delete mode 100644 reactos/include/xdk/rtlfuncs.h delete mode 100644 reactos/include/xdk/rtltypes.h delete mode 100644 reactos/include/xdk/sefuncs.h delete mode 100644 reactos/include/xdk/setypes.h delete mode 100644 reactos/include/xdk/wdm.template.h delete mode 100644 reactos/include/xdk/wmifuncs.h delete mode 100644 reactos/include/xdk/wmitypes.h delete mode 100644 reactos/include/xdk/x86/ke.h delete mode 100644 reactos/include/xdk/x86/mm.h delete mode 100644 reactos/include/xdk/zwfuncs.h diff --git a/reactos/boot/freeldr/freeldr/disk/scsiport.c b/reactos/boot/freeldr/freeldr/disk/scsiport.c index 81ba4a4efa2..d8d15b12d84 100644 --- a/reactos/boot/freeldr/freeldr/disk/scsiport.c +++ b/reactos/boot/freeldr/freeldr/disk/scsiport.c @@ -385,7 +385,7 @@ SpiCreatePortConfig( } VOID -__cdecl +DDKCDECLAPI ScsiDebugPrint( IN ULONG DebugPrintLevel, IN PCCHAR DebugMessage, @@ -421,7 +421,7 @@ ScsiDebugPrint( } VOID -NTAPI +DDKAPI ScsiPortCompleteRequest( IN PVOID HwDeviceExtension, IN UCHAR PathId, @@ -435,7 +435,7 @@ ScsiPortCompleteRequest( #undef ScsiPortConvertPhysicalAddressToUlong ULONG -NTAPI +DDKAPI ScsiPortConvertPhysicalAddressToUlong( IN SCSI_PHYSICAL_ADDRESS Address) { @@ -443,7 +443,7 @@ ScsiPortConvertPhysicalAddressToUlong( } SCSI_PHYSICAL_ADDRESS -NTAPI +DDKAPI ScsiPortConvertUlongToPhysicalAddress( IN ULONG UlongAddress) { @@ -451,7 +451,7 @@ ScsiPortConvertUlongToPhysicalAddress( } VOID -NTAPI +DDKAPI ScsiPortFlushDma( IN PVOID DeviceExtension) { @@ -460,7 +460,7 @@ ScsiPortFlushDma( } VOID -NTAPI +DDKAPI ScsiPortFreeDeviceBase( IN PVOID HwDeviceExtension, IN PVOID MappedAddress) @@ -469,7 +469,7 @@ ScsiPortFreeDeviceBase( } ULONG -NTAPI +DDKAPI ScsiPortGetBusData( IN PVOID DeviceExtension, IN ULONG BusDataType, @@ -482,7 +482,7 @@ ScsiPortGetBusData( } PVOID -NTAPI +DDKAPI ScsiPortGetDeviceBase( IN PVOID HwDeviceExtension, IN INTERFACE_TYPE BusType, @@ -514,7 +514,7 @@ ScsiPortGetDeviceBase( } PVOID -NTAPI +DDKAPI ScsiPortGetLogicalUnit( IN PVOID HwDeviceExtension, IN UCHAR PathId, @@ -527,7 +527,7 @@ ScsiPortGetLogicalUnit( } SCSI_PHYSICAL_ADDRESS -NTAPI +DDKAPI ScsiPortGetPhysicalAddress( IN PVOID HwDeviceExtension, IN PSCSI_REQUEST_BLOCK Srb OPTIONAL, @@ -564,7 +564,7 @@ ScsiPortGetPhysicalAddress( } PSCSI_REQUEST_BLOCK -NTAPI +DDKAPI ScsiPortGetSrb( IN PVOID DeviceExtension, IN UCHAR PathId, @@ -641,7 +641,7 @@ SpiAllocateCommonBuffer( } PVOID -NTAPI +DDKAPI ScsiPortGetUncachedExtension( IN PVOID HwDeviceExtension, IN PPORT_CONFIGURATION_INFORMATION ConfigInfo, @@ -726,7 +726,7 @@ ScsiPortGetUncachedExtension( } PVOID -NTAPI +DDKAPI ScsiPortGetVirtualAddress( IN PVOID HwDeviceExtension, IN SCSI_PHYSICAL_ADDRESS PhysicalAddress) @@ -1031,7 +1031,7 @@ SpiGetPciConfigData( } ULONG -NTAPI +DDKAPI ScsiPortInitialize( IN PVOID Argument1, IN PVOID Argument2, @@ -1186,7 +1186,7 @@ ScsiPortInitialize( } VOID -NTAPI +DDKAPI ScsiPortIoMapTransfer( IN PVOID HwDeviceExtension, IN PSCSI_REQUEST_BLOCK Srb, @@ -1198,7 +1198,7 @@ ScsiPortIoMapTransfer( } VOID -NTAPI +DDKAPI ScsiPortLogError( IN PVOID HwDeviceExtension, IN PSCSI_REQUEST_BLOCK Srb OPTIONAL, @@ -1213,7 +1213,7 @@ ScsiPortLogError( } VOID -NTAPI +DDKAPI ScsiPortMoveMemory( IN PVOID WriteBuffer, IN PVOID ReadBuffer, @@ -1223,7 +1223,7 @@ ScsiPortMoveMemory( } VOID -__cdecl +DDKCDECLAPI ScsiPortNotification( IN SCSI_NOTIFICATION_TYPE NotificationType, IN PVOID HwDeviceExtension, @@ -1259,7 +1259,7 @@ ScsiPortNotification( } VOID -NTAPI +DDKAPI ScsiPortReadPortBufferUchar( IN PUCHAR Port, OUT PUCHAR Buffer, @@ -1269,7 +1269,7 @@ ScsiPortReadPortBufferUchar( } VOID -NTAPI +DDKAPI ScsiPortReadPortBufferUlong( IN PULONG Port, OUT PULONG Buffer, @@ -1279,7 +1279,7 @@ ScsiPortReadPortBufferUlong( } VOID -NTAPI +DDKAPI ScsiPortReadPortBufferUshort( IN PUSHORT Port, OUT PUSHORT Buffer, @@ -1289,7 +1289,7 @@ ScsiPortReadPortBufferUshort( } UCHAR -NTAPI +DDKAPI ScsiPortReadPortUchar( IN PUCHAR Port) { @@ -1300,7 +1300,7 @@ ScsiPortReadPortUchar( } ULONG -NTAPI +DDKAPI ScsiPortReadPortUlong( IN PULONG Port) { @@ -1308,7 +1308,7 @@ ScsiPortReadPortUlong( } USHORT -NTAPI +DDKAPI ScsiPortReadPortUshort( IN PUSHORT Port) { @@ -1316,7 +1316,7 @@ ScsiPortReadPortUshort( } VOID -NTAPI +DDKAPI ScsiPortReadRegisterBufferUchar( IN PUCHAR Register, IN PUCHAR Buffer, @@ -1327,7 +1327,7 @@ ScsiPortReadRegisterBufferUchar( } VOID -NTAPI +DDKAPI ScsiPortReadRegisterBufferUlong( IN PULONG Register, IN PULONG Buffer, @@ -1338,7 +1338,7 @@ ScsiPortReadRegisterBufferUlong( } VOID -NTAPI +DDKAPI ScsiPortReadRegisterBufferUshort( IN PUSHORT Register, IN PUSHORT Buffer, @@ -1349,7 +1349,7 @@ ScsiPortReadRegisterBufferUshort( } UCHAR -NTAPI +DDKAPI ScsiPortReadRegisterUchar( IN PUCHAR Register) { @@ -1357,7 +1357,7 @@ ScsiPortReadRegisterUchar( } ULONG -NTAPI +DDKAPI ScsiPortReadRegisterUlong( IN PULONG Register) { @@ -1365,7 +1365,7 @@ ScsiPortReadRegisterUlong( } USHORT -NTAPI +DDKAPI ScsiPortReadRegisterUshort( IN PUSHORT Register) { @@ -1373,7 +1373,7 @@ ScsiPortReadRegisterUshort( } ULONG -NTAPI +DDKAPI ScsiPortSetBusDataByOffset( IN PVOID DeviceExtension, IN ULONG BusDataType, @@ -1389,7 +1389,7 @@ ScsiPortSetBusDataByOffset( } VOID -NTAPI +DDKAPI ScsiPortStallExecution( IN ULONG Delay) { @@ -1397,7 +1397,7 @@ ScsiPortStallExecution( } BOOLEAN -NTAPI +DDKAPI ScsiPortValidateRange( IN PVOID HwDeviceExtension, IN INTERFACE_TYPE BusType, @@ -1417,7 +1417,7 @@ ScsiPortValidateRange( VOID -NTAPI +DDKAPI ScsiPortWritePortBufferUchar( IN PUCHAR Port, IN PUCHAR Buffer, @@ -1427,7 +1427,7 @@ ScsiPortWritePortBufferUchar( } VOID -NTAPI +DDKAPI ScsiPortWritePortBufferUlong( IN PULONG Port, IN PULONG Buffer, @@ -1437,7 +1437,7 @@ ScsiPortWritePortBufferUlong( } VOID -NTAPI +DDKAPI ScsiPortWritePortBufferUshort( IN PUSHORT Port, IN PUSHORT Buffer, @@ -1447,7 +1447,7 @@ ScsiPortWritePortBufferUshort( } VOID -NTAPI +DDKAPI ScsiPortWritePortUchar( IN PUCHAR Port, IN UCHAR Value) @@ -1456,7 +1456,7 @@ ScsiPortWritePortUchar( } VOID -NTAPI +DDKAPI ScsiPortWritePortUlong( IN PULONG Port, IN ULONG Value) @@ -1465,7 +1465,7 @@ ScsiPortWritePortUlong( } VOID -NTAPI +DDKAPI ScsiPortWritePortUshort( IN PUSHORT Port, IN USHORT Value) @@ -1474,7 +1474,7 @@ ScsiPortWritePortUshort( } VOID -NTAPI +DDKAPI ScsiPortWriteRegisterBufferUchar( IN PUCHAR Register, IN PUCHAR Buffer, @@ -1485,7 +1485,7 @@ ScsiPortWriteRegisterBufferUchar( } VOID -NTAPI +DDKAPI ScsiPortWriteRegisterBufferUlong( IN PULONG Register, IN PULONG Buffer, @@ -1496,7 +1496,7 @@ ScsiPortWriteRegisterBufferUlong( } VOID -NTAPI +DDKAPI ScsiPortWriteRegisterBufferUshort( IN PUSHORT Register, IN PUSHORT Buffer, @@ -1507,7 +1507,7 @@ ScsiPortWriteRegisterBufferUshort( } VOID -NTAPI +DDKAPI ScsiPortWriteRegisterUchar( IN PUCHAR Register, IN ULONG Value) @@ -1516,7 +1516,7 @@ ScsiPortWriteRegisterUchar( } VOID -NTAPI +DDKAPI ScsiPortWriteRegisterUlong( IN PULONG Register, IN ULONG Value) @@ -1525,7 +1525,7 @@ ScsiPortWriteRegisterUlong( } VOID -NTAPI +DDKAPI ScsiPortWriteRegisterUshort( IN PUSHORT Register, IN USHORT Value) diff --git a/reactos/dll/win32/gdi32/objects/bitmap.c b/reactos/dll/win32/gdi32/objects/bitmap.c index 2c7d4cea90c..f94c31a24f2 100644 --- a/reactos/dll/win32/gdi32/objects/bitmap.c +++ b/reactos/dll/win32/gdi32/objects/bitmap.c @@ -292,7 +292,7 @@ CreateBitmap(INT Width, INT Height, UINT Planes, UINT BitsPixel, - CONST VOID* pUnsafeBits) + PCVOID pUnsafeBits) { /* FIXME some part should be done in user mode */ if (Width && Height) diff --git a/reactos/dll/win32/hid/precomp.h b/reactos/dll/win32/hid/precomp.h index 9ae79cae666..29e4dd61ba0 100644 --- a/reactos/dll/win32/hid/precomp.h +++ b/reactos/dll/win32/hid/precomp.h @@ -10,6 +10,7 @@ typedef VOID typedef VOID (WINAPI *PINTERFACE_DEREFERENCE)( PVOID Context); +#define DDKAPI __stdcall // FIXME #include #include #include diff --git a/reactos/dll/win32/setupapi/setupapi.rbuild b/reactos/dll/win32/setupapi/setupapi.rbuild index 6f2d0c2c627..bb3e0e37c56 100644 --- a/reactos/dll/win32/setupapi/setupapi.rbuild +++ b/reactos/dll/win32/setupapi/setupapi.rbuild @@ -10,7 +10,6 @@ _wcsnicmp - pnp_client uuid wine diff --git a/reactos/dll/win32/setupapi/setupapi_private.h b/reactos/dll/win32/setupapi/setupapi_private.h index a3ff489b9c3..50c2d4250cb 100644 --- a/reactos/dll/win32/setupapi/setupapi_private.h +++ b/reactos/dll/win32/setupapi/setupapi_private.h @@ -45,6 +45,11 @@ #include +/* This hack definition is necessary as long as setupapi + depends on Wine "compatibility" headers */ +typedef ULONG RESOURCEID; +typedef RESOURCEID *PRESOURCEID; + #include #include "rpc_private.h" #include "resource.h" @@ -56,8 +61,6 @@ #define SETUP_DEVICE_INFO_SET_MAGIC 0xd00ff057 #define SETUP_CLASS_IMAGE_LIST_MAGIC 0xd00ff058 -#define CMP_MAGIC 0x01234567 - struct DeviceInterface /* Element of DeviceInfo.InterfaceListHead */ { LIST_ENTRY ListEntry; diff --git a/reactos/drivers/battery/battc/battc.c b/reactos/drivers/battery/battc/battc.c index 7e4854c9ef2..6a0b7220c1c 100644 --- a/reactos/drivers/battery/battc/battc.c +++ b/reactos/drivers/battery/battc/battc.c @@ -23,7 +23,7 @@ DriverEntry(PDRIVER_OBJECT DriverObject, BCLASSAPI NTSTATUS -NTAPI +DDKAPI BatteryClassUnload(PVOID ClassData) { PBATTERY_CLASS_DATA BattClass = ClassData; @@ -44,7 +44,7 @@ BatteryClassUnload(PVOID ClassData) BCLASSAPI NTSTATUS -NTAPI +DDKAPI BatteryClassSystemControl(PVOID ClassData, PVOID WmiLibContext, PDEVICE_OBJECT DeviceObject, @@ -58,7 +58,7 @@ BatteryClassSystemControl(PVOID ClassData, BCLASSAPI NTSTATUS -NTAPI +DDKAPI BatteryClassQueryWmiDataBlock(PVOID ClassData, PDEVICE_OBJECT DeviceObject, PIRP Irp, @@ -74,7 +74,7 @@ BatteryClassQueryWmiDataBlock(PVOID ClassData, BCLASSAPI NTSTATUS -NTAPI +DDKAPI BatteryClassStatusNotify(PVOID ClassData) { PBATTERY_CLASS_DATA BattClass = ClassData; @@ -129,7 +129,7 @@ BatteryClassStatusNotify(PVOID ClassData) BCLASSAPI NTSTATUS -NTAPI +DDKAPI BatteryClassInitializeDevice(PBATTERY_MINIPORT_INFO MiniportInfo, PVOID *ClassData) { @@ -172,7 +172,7 @@ BatteryClassInitializeDevice(PBATTERY_MINIPORT_INFO MiniportInfo, BCLASSAPI NTSTATUS -NTAPI +DDKAPI BatteryClassIoctl(PVOID ClassData, PIRP Irp) { diff --git a/reactos/drivers/directx/dxapi/dxapi_driver.h b/reactos/drivers/directx/dxapi/dxapi_driver.h index 996353c7f2d..322d6d1d67f 100644 --- a/reactos/drivers/directx/dxapi/dxapi_driver.h +++ b/reactos/drivers/directx/dxapi/dxapi_driver.h @@ -1,10 +1,10 @@ /* DDK/NDK/SDK Headers */ -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include #include #include @@ -16,7 +16,7 @@ #include -#include +#include /* Prototypes */ VOID DxGetVersionNumber(PVOID lpvInBuffer, LPDDGETVERSIONNUMBER lpvOutBuffer); diff --git a/reactos/drivers/directx/dxg/dxg_int.h b/reactos/drivers/directx/dxg/dxg_int.h index ccb2204a781..b457e6d5c3d 100644 --- a/reactos/drivers/directx/dxg/dxg_int.h +++ b/reactos/drivers/directx/dxg/dxg_int.h @@ -1,9 +1,9 @@ /* DDK/NDK/SDK Headers */ -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include /* Win32 Headers */ #define WINBASEAPI diff --git a/reactos/drivers/filesystems/ext2/inc/ext2fsd.h b/reactos/drivers/filesystems/ext2/inc/ext2fsd.h index dcf35d996ef..bf2b784fb86 100644 --- a/reactos/drivers/filesystems/ext2/inc/ext2fsd.h +++ b/reactos/drivers/filesystems/ext2/inc/ext2fsd.h @@ -42,11 +42,8 @@ typedef unsigned char BYTE; /* REACTOS FIXME */ #undef DeleteFile /* This is deprecated and should be changed in the EXT2FS driver. */ - -/* FIXME : Those two definitions already exist in wdm.h #define RtlLargeIntegerLessThan(a, b) (a).QuadPart < (b).QuadPart #define RtlLargeIntegerGreaterThan(a, b) (a).QuadPart > (b).QuadPart -*/ // the following include files should be in the inc sub-dir associated with this driver diff --git a/reactos/drivers/serial/serial/serial.h b/reactos/drivers/serial/serial/serial.h index b6ed661226c..de94b291138 100644 --- a/reactos/drivers/serial/serial/serial.h +++ b/reactos/drivers/serial/serial/serial.h @@ -17,6 +17,15 @@ #define PST_RS232 1 #define COMMPROP_INITIALIZED 0xE73CF52E +#ifndef _NTIFS_ +/* Why is it only defined in ntifs.h file? */ +NTSTATUS NTAPI +IoAttachDeviceToDeviceStackSafe( + IN PDEVICE_OBJECT SourceDevice, + IN PDEVICE_OBJECT TargetDevice, + OUT PDEVICE_OBJECT *AttachedToDeviceObject); +#endif + typedef enum { dsStopped, diff --git a/reactos/drivers/storage/ide/uniata/atapi.h b/reactos/drivers/storage/ide/uniata/atapi.h index 2648d4b0b55..9974b51406e 100644 --- a/reactos/drivers/storage/ide/uniata/atapi.h +++ b/reactos/drivers/storage/ide/uniata/atapi.h @@ -77,7 +77,7 @@ extern "C" { SCSIPORT_API VOID -__cdecl +DDKCDECLAPI ScsiDebugPrint( ULONG DebugPrintLevel, PCCHAR DebugMessage, @@ -1066,7 +1066,7 @@ IdeMediaStatus( IN UCHAR Channel ); -ULONG NTAPI +ULONG DDKAPI AtapiFindController( IN PVOID HwDeviceExtension, IN PVOID Context, diff --git a/reactos/drivers/storage/ide/uniata/bsmaster.h b/reactos/drivers/storage/ide/uniata/bsmaster.h index 6d2adabba8c..cfb153991f7 100644 --- a/reactos/drivers/storage/ide/uniata/bsmaster.h +++ b/reactos/drivers/storage/ide/uniata/bsmaster.h @@ -1015,7 +1015,7 @@ UniataEnumBusMasterController( PVOID Argument2 ); -extern ULONG NTAPI +extern ULONG DDKAPI UniataFindCompatBusMasterController1( IN PVOID HwDeviceExtension, IN PVOID Context, @@ -1025,7 +1025,7 @@ UniataFindCompatBusMasterController1( OUT PBOOLEAN Again ); -extern ULONG NTAPI +extern ULONG DDKAPI UniataFindCompatBusMasterController2( IN PVOID HwDeviceExtension, IN PVOID Context, @@ -1044,7 +1044,7 @@ UniataAllocateLunExt( ULONG NewNumberChannels ); -extern ULONG NTAPI +extern ULONG DDKAPI UniataFindBusMasterController( IN PVOID HwDeviceExtension, IN PVOID Context, @@ -1054,7 +1054,7 @@ UniataFindBusMasterController( OUT PBOOLEAN Again ); -extern ULONG NTAPI +extern ULONG DDKAPI UniataFindFakeBusMasterController( IN PVOID HwDeviceExtension, IN PVOID Context, diff --git a/reactos/drivers/storage/ide/uniata/config.h b/reactos/drivers/storage/ide/uniata/config.h index c0b9f4f88ad..e17416f1367 100644 --- a/reactos/drivers/storage/ide/uniata/config.h +++ b/reactos/drivers/storage/ide/uniata/config.h @@ -86,7 +86,9 @@ /* Compiler dependencies */ /***************************************************/ +#define DDKAPI __stdcall #define DDKFASTAPI __fastcall +#define DDKCDECLAPI __cdecl /* Are we under GNU C (mingw) ??? */ #ifdef __GNUC__ diff --git a/reactos/drivers/storage/ide/uniata/id_ata.cpp b/reactos/drivers/storage/ide/uniata/id_ata.cpp index 1cace8bd488..5bb5cf74009 100644 --- a/reactos/drivers/storage/ide/uniata/id_ata.cpp +++ b/reactos/drivers/storage/ide/uniata/id_ata.cpp @@ -94,7 +94,7 @@ BOOLEAN WinVer_WDM_Model = FALSE; UCHAR g_foo = 0; BOOLEAN -NTAPI +DDKAPI AtapiResetController__( IN PVOID HwDeviceExtension, IN ULONG PathId, @@ -115,7 +115,7 @@ AtapiHwInitialize__( #ifndef UNIATA_CORE VOID -NTAPI +DDKAPI AtapiCallBack_X( IN PVOID HwDeviceExtension ); @@ -129,13 +129,13 @@ AtapiCallBack_X( #endif RETTYPE_XXableInterrupts -NTAPI +DDKAPI AtapiInterruptDpc( IN PVOID HwDeviceExtension ); RETTYPE_XXableInterrupts -NTAPI +DDKAPI AtapiEnableInterrupts__( IN PVOID HwDeviceExtension ); @@ -150,7 +150,7 @@ AtapiQueueTimerDpc( ); SCSI_ADAPTER_CONTROL_STATUS -NTAPI +DDKAPI AtapiAdapterControl( IN PVOID HwDeviceExtension, IN SCSI_ADAPTER_CONTROL_TYPE ControlType, @@ -1005,7 +1005,7 @@ AtaUmode(PIDENTIFY_DATA2 ident) #ifndef UNIATA_CORE VOID -NTAPI +DDKAPI AtapiTimerDpc( IN PVOID HwDeviceExtension ) @@ -1856,7 +1856,7 @@ Return Value: --*/ BOOLEAN -NTAPI +DDKAPI AtapiResetController( IN PVOID HwDeviceExtension, IN ULONG PathId @@ -2598,7 +2598,7 @@ Return Value: --*/ BOOLEAN -NTAPI +DDKAPI AtapiHwInitialize( IN PVOID HwDeviceExtension ) @@ -3210,7 +3210,7 @@ Return Value: --*/ BOOLEAN -NTAPI +DDKAPI AtapiInterrupt( IN PVOID HwDeviceExtension ) @@ -3400,7 +3400,7 @@ AtapiInterrupt2( } // end AtapiInterrupt2() RETTYPE_XXableInterrupts -NTAPI +DDKAPI AtapiInterruptDpc( IN PVOID HwDeviceExtension ) @@ -3437,7 +3437,7 @@ AtapiInterruptDpc( RETTYPE_XXableInterrupts -NTAPI +DDKAPI AtapiEnableInterrupts__( IN PVOID HwDeviceExtension ) @@ -7251,7 +7251,7 @@ Return Value: --*/ BOOLEAN -NTAPI +DDKAPI AtapiStartIo( IN PVOID HwDeviceExtension, IN PSCSI_REQUEST_BLOCK Srb @@ -8343,7 +8343,7 @@ Return Value: --*/ extern "C" ULONG -NTAPI +DDKAPI DriverEntry( IN PVOID DriverObject, IN PVOID Argument2 @@ -9059,7 +9059,7 @@ AtapiRegCheckParameterValue( SCSI_ADAPTER_CONTROL_STATUS -NTAPI +DDKAPI AtapiAdapterControl( IN PVOID HwDeviceExtension, IN SCSI_ADAPTER_CONTROL_TYPE ControlType, @@ -9152,7 +9152,7 @@ AtapiAdapterControl( extern "C" NTHALAPI VOID -NTAPI +DDKAPI HalDisplayString ( PUCHAR String ); diff --git a/reactos/drivers/storage/ide/uniata/srb.h b/reactos/drivers/storage/ide/uniata/srb.h index b3795b22808..aa4f7f1ce5f 100644 --- a/reactos/drivers/storage/ide/uniata/srb.h +++ b/reactos/drivers/storage/ide/uniata/srb.h @@ -424,38 +424,38 @@ typedef struct _SCSI_WMI_REQUEST_BLOCK { typedef BOOLEAN -(NTAPI *PHW_INITIALIZE) ( +(DDKAPI *PHW_INITIALIZE) ( IN PVOID DeviceExtension ); typedef BOOLEAN -(NTAPI *PHW_STARTIO) ( +(DDKAPI *PHW_STARTIO) ( IN PVOID DeviceExtension, IN PSCSI_REQUEST_BLOCK Srb ); typedef BOOLEAN -(NTAPI *PHW_INTERRUPT) ( +(DDKAPI *PHW_INTERRUPT) ( IN PVOID DeviceExtension ); typedef VOID -(NTAPI *PHW_TIMER) ( +(DDKAPI *PHW_TIMER) ( IN PVOID DeviceExtension ); typedef VOID -(NTAPI *PHW_DMA_STARTED) ( +(DDKAPI *PHW_DMA_STARTED) ( IN PVOID DeviceExtension ); typedef ULONG -(NTAPI *PHW_FIND_ADAPTER) ( +(DDKAPI *PHW_FIND_ADAPTER) ( IN PVOID DeviceExtension, IN PVOID HwContext, IN PVOID BusInformation, @@ -466,14 +466,14 @@ ULONG typedef BOOLEAN -(NTAPI *PHW_RESET_BUS) ( +(DDKAPI *PHW_RESET_BUS) ( IN PVOID DeviceExtension, IN ULONG PathId ); typedef BOOLEAN -(NTAPI *PHW_ADAPTER_STATE) ( +(DDKAPI *PHW_ADAPTER_STATE) ( IN PVOID DeviceExtension, IN PVOID Context, IN BOOLEAN SaveState @@ -481,7 +481,7 @@ BOOLEAN typedef SCSI_ADAPTER_CONTROL_STATUS -(NTAPI *PHW_ADAPTER_CONTROL) ( +(DDKAPI *PHW_ADAPTER_CONTROL) ( IN PVOID DeviceExtension, IN SCSI_ADAPTER_CONTROL_TYPE ControlType, IN PVOID Parameters @@ -607,7 +607,7 @@ typedef struct _HW_INITIALIZATION_DATA_COMMON { // SCSIPORT_API -ULONG NTAPI +ULONG DDKAPI ScsiPortInitialize( IN PVOID Argument1, IN PVOID Argument2, @@ -616,14 +616,14 @@ ScsiPortInitialize( ); SCSIPORT_API -VOID NTAPI +VOID DDKAPI ScsiPortFreeDeviceBase( IN PVOID HwDeviceExtension, IN PVOID MappedAddress ); SCSIPORT_API -ULONG NTAPI +ULONG DDKAPI ScsiPortGetBusData( IN PVOID DeviceExtension, IN ULONG BusDataType, @@ -634,7 +634,7 @@ ScsiPortGetBusData( ); SCSIPORT_API -ULONG NTAPI +ULONG DDKAPI ScsiPortSetBusDataByOffset( IN PVOID DeviceExtension, IN ULONG BusDataType, @@ -646,7 +646,7 @@ ScsiPortSetBusDataByOffset( ); SCSIPORT_API -PVOID NTAPI +PVOID DDKAPI ScsiPortGetDeviceBase( IN PVOID HwDeviceExtension, IN INTERFACE_TYPE BusType, @@ -657,7 +657,7 @@ ScsiPortGetDeviceBase( ); SCSIPORT_API -PVOID NTAPI +PVOID DDKAPI ScsiPortGetLogicalUnit( IN PVOID HwDeviceExtension, IN UCHAR PathId, @@ -666,7 +666,7 @@ ScsiPortGetLogicalUnit( ); SCSIPORT_API -PSCSI_REQUEST_BLOCK NTAPI +PSCSI_REQUEST_BLOCK DDKAPI ScsiPortGetSrb( IN PVOID DeviceExtension, IN UCHAR PathId, @@ -676,7 +676,7 @@ ScsiPortGetSrb( ); SCSIPORT_API -SCSI_PHYSICAL_ADDRESS NTAPI +SCSI_PHYSICAL_ADDRESS DDKAPI ScsiPortGetPhysicalAddress( IN PVOID HwDeviceExtension, IN PSCSI_REQUEST_BLOCK Srb, @@ -685,14 +685,14 @@ ScsiPortGetPhysicalAddress( ); SCSIPORT_API -PVOID NTAPI +PVOID DDKAPI ScsiPortGetVirtualAddress( IN PVOID HwDeviceExtension, IN SCSI_PHYSICAL_ADDRESS PhysicalAddress ); SCSIPORT_API -PVOID NTAPI +PVOID DDKAPI ScsiPortGetUncachedExtension( IN PVOID HwDeviceExtension, IN PPORT_CONFIGURATION_INFORMATION ConfigInfo, @@ -700,13 +700,13 @@ ScsiPortGetUncachedExtension( ); SCSIPORT_API -VOID NTAPI +VOID DDKAPI ScsiPortFlushDma( IN PVOID DeviceExtension ); SCSIPORT_API -VOID NTAPI +VOID DDKAPI ScsiPortIoMapTransfer( IN PVOID HwDeviceExtension, IN PSCSI_REQUEST_BLOCK Srb, @@ -715,7 +715,7 @@ ScsiPortIoMapTransfer( ); SCSIPORT_API -VOID __cdecl +VOID DDKCDECLAPI ScsiPortNotification( IN SCSI_NOTIFICATION_TYPE NotificationType, IN PVOID HwDeviceExtension, @@ -723,7 +723,7 @@ ScsiPortNotification( ); SCSIPORT_API -VOID NTAPI +VOID DDKAPI ScsiPortLogError( IN PVOID HwDeviceExtension, IN PSCSI_REQUEST_BLOCK Srb OPTIONAL, @@ -735,7 +735,7 @@ ScsiPortLogError( ); SCSIPORT_API -VOID NTAPI +VOID DDKAPI ScsiPortCompleteRequest( IN PVOID HwDeviceExtension, IN UCHAR PathId, @@ -745,7 +745,7 @@ ScsiPortCompleteRequest( ); SCSIPORT_API -VOID NTAPI +VOID DDKAPI ScsiPortMoveMemory( IN PVOID WriteBuffer, IN PVOID ReadBuffer, @@ -753,25 +753,25 @@ ScsiPortMoveMemory( ); SCSIPORT_API -UCHAR NTAPI +UCHAR DDKAPI ScsiPortReadPortUchar( IN PUCHAR Port ); SCSIPORT_API -USHORT NTAPI +USHORT DDKAPI ScsiPortReadPortUshort( IN PUSHORT Port ); SCSIPORT_API -ULONG NTAPI +ULONG DDKAPI ScsiPortReadPortUlong( IN PULONG Port ); SCSIPORT_API -VOID NTAPI +VOID DDKAPI ScsiPortReadPortBufferUchar( IN PUCHAR Port, IN PUCHAR Buffer, @@ -779,7 +779,7 @@ ScsiPortReadPortBufferUchar( ); SCSIPORT_API -VOID NTAPI +VOID DDKAPI ScsiPortReadPortBufferUshort( IN PUSHORT Port, IN PUSHORT Buffer, @@ -787,7 +787,7 @@ ScsiPortReadPortBufferUshort( ); SCSIPORT_API -VOID NTAPI +VOID DDKAPI ScsiPortReadPortBufferUlong( IN PULONG Port, IN PULONG Buffer, @@ -795,25 +795,25 @@ ScsiPortReadPortBufferUlong( ); SCSIPORT_API -UCHAR NTAPI +UCHAR DDKAPI ScsiPortReadRegisterUchar( IN PUCHAR Register ); SCSIPORT_API -USHORT NTAPI +USHORT DDKAPI ScsiPortReadRegisterUshort( IN PUSHORT Register ); SCSIPORT_API -ULONG NTAPI +ULONG DDKAPI ScsiPortReadRegisterUlong( IN PULONG Register ); SCSIPORT_API -VOID NTAPI +VOID DDKAPI ScsiPortReadRegisterBufferUchar( IN PUCHAR Register, IN PUCHAR Buffer, @@ -821,7 +821,7 @@ ScsiPortReadRegisterBufferUchar( ); SCSIPORT_API -VOID NTAPI +VOID DDKAPI ScsiPortReadRegisterBufferUshort( IN PUSHORT Register, IN PUSHORT Buffer, @@ -829,7 +829,7 @@ ScsiPortReadRegisterBufferUshort( ); SCSIPORT_API -VOID NTAPI +VOID DDKAPI ScsiPortReadRegisterBufferUlong( IN PULONG Register, IN PULONG Buffer, @@ -837,34 +837,34 @@ ScsiPortReadRegisterBufferUlong( ); SCSIPORT_API -VOID NTAPI +VOID DDKAPI ScsiPortStallExecution( IN ULONG Delay ); SCSIPORT_API -VOID NTAPI +VOID DDKAPI ScsiPortWritePortUchar( IN PUCHAR Port, IN UCHAR Value ); SCSIPORT_API -VOID NTAPI +VOID DDKAPI ScsiPortWritePortUshort( IN PUSHORT Port, IN USHORT Value ); SCSIPORT_API -VOID NTAPI +VOID DDKAPI ScsiPortWritePortUlong( IN PULONG Port, IN ULONG Value ); SCSIPORT_API -VOID NTAPI +VOID DDKAPI ScsiPortWritePortBufferUchar( IN PUCHAR Port, IN PUCHAR Buffer, @@ -872,7 +872,7 @@ ScsiPortWritePortBufferUchar( ); SCSIPORT_API -VOID NTAPI +VOID DDKAPI ScsiPortWritePortBufferUshort( IN PUSHORT Port, IN PUSHORT Buffer, @@ -880,7 +880,7 @@ ScsiPortWritePortBufferUshort( ); SCSIPORT_API -VOID NTAPI +VOID DDKAPI ScsiPortWritePortBufferUlong( IN PULONG Port, IN PULONG Buffer, @@ -888,28 +888,28 @@ ScsiPortWritePortBufferUlong( ); SCSIPORT_API -VOID NTAPI +VOID DDKAPI ScsiPortWriteRegisterUchar( IN PUCHAR Register, IN UCHAR Value ); SCSIPORT_API -VOID NTAPI +VOID DDKAPI ScsiPortWriteRegisterUshort( IN PUSHORT Register, IN USHORT Value ); SCSIPORT_API -VOID NTAPI +VOID DDKAPI ScsiPortWriteRegisterUlong( IN PULONG Register, IN ULONG Value ); SCSIPORT_API -VOID NTAPI +VOID DDKAPI ScsiPortWriteRegisterBufferUchar( IN PUCHAR Register, IN PUCHAR Buffer, @@ -917,7 +917,7 @@ ScsiPortWriteRegisterBufferUchar( ); SCSIPORT_API -VOID NTAPI +VOID DDKAPI ScsiPortWriteRegisterBufferUshort( IN PUSHORT Register, IN PUSHORT Buffer, @@ -925,7 +925,7 @@ ScsiPortWriteRegisterBufferUshort( ); SCSIPORT_API -VOID NTAPI +VOID DDKAPI ScsiPortWriteRegisterBufferUlong( IN PULONG Register, IN PULONG Buffer, @@ -933,13 +933,13 @@ ScsiPortWriteRegisterBufferUlong( ); SCSIPORT_API -SCSI_PHYSICAL_ADDRESS NTAPI +SCSI_PHYSICAL_ADDRESS DDKAPI ScsiPortConvertUlongToPhysicalAddress( ULONG UlongAddress ); SCSIPORT_API -ULONG NTAPI +ULONG DDKAPI ScsiPortConvertPhysicalAddressToUlong( SCSI_PHYSICAL_ADDRESS Address ); @@ -947,7 +947,7 @@ ScsiPortConvertPhysicalAddressToUlong( #define ScsiPortConvertPhysicalAddressToUlong(Address) ((Address).LowPart) SCSIPORT_API -BOOLEAN NTAPI +BOOLEAN DDKAPI ScsiPortValidateRange( IN PVOID HwDeviceExtension, IN INTERFACE_TYPE BusType, @@ -960,7 +960,7 @@ ScsiPortValidateRange( // begin_ntminitape SCSIPORT_API -VOID __cdecl +VOID DDKCDECLAPI ScsiDebugPrint( ULONG DebugPrintLevel, PCCHAR DebugMessage, diff --git a/reactos/drivers/storage/scsiport/stubs.c b/reactos/drivers/storage/scsiport/stubs.c index 478c35b4d08..9e286d186f4 100644 --- a/reactos/drivers/storage/scsiport/stubs.c +++ b/reactos/drivers/storage/scsiport/stubs.c @@ -14,8 +14,12 @@ #define NDEBUG #include +#ifdef _MSC_VER + #define DDKAPI +#endif + SCSI_PHYSICAL_ADDRESS -NTAPI +DDKAPI ScsiPortConvertUlongToPhysicalAddress( IN ULONG UlongAddress) { @@ -23,7 +27,7 @@ ScsiPortConvertUlongToPhysicalAddress( } VOID -NTAPI +DDKAPI ScsiPortReadPortBufferUchar( IN PUCHAR Port, IN PUCHAR Buffer, @@ -33,7 +37,7 @@ ScsiPortReadPortBufferUchar( } VOID -NTAPI +DDKAPI ScsiPortReadPortBufferUshort( IN PUSHORT Port, IN PUSHORT Buffer, @@ -43,7 +47,7 @@ ScsiPortReadPortBufferUshort( } VOID -NTAPI +DDKAPI ScsiPortReadPortBufferUlong( IN PULONG Port, IN PULONG Buffer, @@ -53,7 +57,7 @@ ScsiPortReadPortBufferUlong( } UCHAR -NTAPI +DDKAPI ScsiPortReadPortUchar( IN PUCHAR Port) { @@ -61,7 +65,7 @@ ScsiPortReadPortUchar( } USHORT -NTAPI +DDKAPI ScsiPortReadPortUshort( IN PUSHORT Port) { @@ -69,7 +73,7 @@ ScsiPortReadPortUshort( } ULONG -NTAPI +DDKAPI ScsiPortReadPortUlong( IN PULONG Port) { @@ -77,7 +81,7 @@ ScsiPortReadPortUlong( } VOID -NTAPI +DDKAPI ScsiPortReadRegisterBufferUchar( IN PUCHAR Register, IN PUCHAR Buffer, @@ -87,7 +91,7 @@ ScsiPortReadRegisterBufferUchar( } VOID -NTAPI +DDKAPI ScsiPortReadRegisterBufferUshort( IN PUSHORT Register, IN PUSHORT Buffer, @@ -97,7 +101,7 @@ ScsiPortReadRegisterBufferUshort( } VOID -NTAPI +DDKAPI ScsiPortReadRegisterBufferUlong( IN PULONG Register, IN PULONG Buffer, @@ -107,7 +111,7 @@ ScsiPortReadRegisterBufferUlong( } UCHAR -NTAPI +DDKAPI ScsiPortReadRegisterUchar( IN PUCHAR Register) { @@ -115,7 +119,7 @@ ScsiPortReadRegisterUchar( } USHORT -NTAPI +DDKAPI ScsiPortReadRegisterUshort( IN PUSHORT Register) { @@ -123,7 +127,7 @@ ScsiPortReadRegisterUshort( } ULONG -NTAPI +DDKAPI ScsiPortReadRegisterUlong( IN PULONG Register) { @@ -131,7 +135,7 @@ ScsiPortReadRegisterUlong( } VOID -NTAPI +DDKAPI ScsiPortWritePortBufferUchar( IN PUCHAR Port, IN PUCHAR Buffer, @@ -141,7 +145,7 @@ ScsiPortWritePortBufferUchar( } VOID -NTAPI +DDKAPI ScsiPortWritePortBufferUshort( IN PUSHORT Port, IN PUSHORT Buffer, @@ -151,7 +155,7 @@ ScsiPortWritePortBufferUshort( } VOID -NTAPI +DDKAPI ScsiPortWritePortBufferUlong( IN PULONG Port, IN PULONG Buffer, @@ -161,7 +165,7 @@ ScsiPortWritePortBufferUlong( } VOID -NTAPI +DDKAPI ScsiPortWritePortUchar( IN PUCHAR Port, IN UCHAR Value) @@ -170,7 +174,7 @@ ScsiPortWritePortUchar( } VOID -NTAPI +DDKAPI ScsiPortWritePortUshort( IN PUSHORT Port, IN USHORT Value) @@ -179,7 +183,7 @@ ScsiPortWritePortUshort( } VOID -NTAPI +DDKAPI ScsiPortWritePortUlong( IN PULONG Port, IN ULONG Value) @@ -188,7 +192,7 @@ ScsiPortWritePortUlong( } VOID -NTAPI +DDKAPI ScsiPortWriteRegisterBufferUchar( IN PUCHAR Register, IN PUCHAR Buffer, @@ -198,7 +202,7 @@ ScsiPortWriteRegisterBufferUchar( } VOID -NTAPI +DDKAPI ScsiPortWriteRegisterBufferUshort( IN PUSHORT Register, IN PUSHORT Buffer, @@ -208,7 +212,7 @@ ScsiPortWriteRegisterBufferUshort( } VOID -NTAPI +DDKAPI ScsiPortWriteRegisterBufferUlong( IN PULONG Register, IN PULONG Buffer, @@ -218,7 +222,7 @@ ScsiPortWriteRegisterBufferUlong( } VOID -NTAPI +DDKAPI ScsiPortWriteRegisterUchar( IN PUCHAR Register, IN ULONG Value) @@ -227,7 +231,7 @@ ScsiPortWriteRegisterUchar( } VOID -NTAPI +DDKAPI ScsiPortWriteRegisterUshort( IN PUSHORT Register, IN USHORT Value) @@ -236,7 +240,7 @@ ScsiPortWriteRegisterUshort( } VOID -NTAPI +DDKAPI ScsiPortWriteRegisterUlong( IN PULONG Register, IN ULONG Value) diff --git a/reactos/drivers/video/displays/vga/vgaddi.h b/reactos/drivers/video/displays/vga/vgaddi.h index 980965da696..97282f882dc 100644 --- a/reactos/drivers/video/displays/vga/vgaddi.h +++ b/reactos/drivers/video/displays/vga/vgaddi.h @@ -26,6 +26,7 @@ #define DDKFASTAPI __fastcall #define FASTCALL __fastcall +#define DDKCDECLAPI __cdecl ULONG DbgPrint(PCCH Format,...); diff --git a/reactos/include/ddk/afilter.h b/reactos/include/ddk/afilter.h index 53900bf2b6d..7997a7c9e81 100644 --- a/reactos/include/ddk/afilter.h +++ b/reactos/include/ddk/afilter.h @@ -104,33 +104,33 @@ typedef struct _ARC_FILTER } ARC_FILTER,*PARC_FILTER; BOOLEAN -NTAPI +DDKAPI ArcCreateFilter( IN struct _NDIS_MINIPORT_BLOCK *Miniport, IN UCHAR AdapterAddress, OUT PARC_FILTER *Filter); VOID -NTAPI +DDKAPI ArcDeleteFilter( IN PARC_FILTER Filter); BOOLEAN -NTAPI +DDKAPI ArcNoteFilterOpenAdapter( IN PARC_FILTER Filter, IN NDIS_HANDLE NdisBindingHandle, OUT PNDIS_HANDLE NdisFilterHandle); NDIS_STATUS -NTAPI +DDKAPI ArcDeleteFilterOpenAdapter( IN PARC_FILTER Filter, IN NDIS_HANDLE NdisFilterHandle, IN PNDIS_REQUEST NdisRequest); NDIS_STATUS -NTAPI +DDKAPI ArcFilterAdjust( IN PARC_FILTER Filter, IN NDIS_HANDLE NdisFilterHandle, @@ -139,12 +139,12 @@ ArcFilterAdjust( IN BOOLEAN Set); VOID -NTAPI +DDKAPI ArcFilterDprIndicateReceiveComplete( IN PARC_FILTER Filter); VOID -NTAPI +DDKAPI ArcFilterDprIndicateReceive( IN PARC_FILTER Filter, IN PUCHAR pRawHeader, @@ -152,7 +152,7 @@ ArcFilterDprIndicateReceive( IN UINT Length); NDIS_STATUS -NTAPI +DDKAPI ArcFilterTransferData( IN PARC_FILTER Filter, IN NDIS_HANDLE MacReceiveContext, @@ -162,18 +162,18 @@ ArcFilterTransferData( OUT PUINT BytesTransfered); VOID -NTAPI +DDKAPI ArcFreeNdisPacket( IN PARC_PACKET Packet); VOID -NTAPI +DDKAPI ArcFilterDoIndication( IN PARC_FILTER Filter, IN PARC_PACKET Packet); VOID -NTAPI +DDKAPI ArcDestroyPacket( IN PARC_FILTER Filter, IN PARC_PACKET Packet); diff --git a/reactos/include/ddk/atsmedia.h b/reactos/include/ddk/atsmedia.h new file mode 100644 index 00000000000..744a4654870 --- /dev/null +++ b/reactos/include/ddk/atsmedia.h @@ -0,0 +1,17 @@ + +/* $Id: $ + * + * COPYRIGHT: This file is in the public domain. + * PROJECT: ReactOS kernel + * FILE: + * PURPOSE: headers + * PROGRAMMER: Magnus Olsen (greatlrd) + * + */ + +#if !defined(_ATSCMEDIA_) +#define _ATSCMEDIA_ +#define BDANETWORKTYPE_ATSC DEFINE_GUIDNAMED(BDANETWORKTYPE_ATSC) +#define STATIC_BDANETWORKTYPE_ATSC 0x71985F51, 0x1CA1, 0x11D3, 0x9C, 0xC8, 0x0, 0xC0, 0x4F, 0x79, 0x71, 0xE0 +DEFINE_GUIDSTRUCT("71985F51-1CA1-11D3-9CC8-00C04F7971E0", BDANETWORKTYPE_ATSC); +#endif diff --git a/reactos/include/ddk/bdasup.h b/reactos/include/ddk/bdasup.h index 373ccdbdcbf..0bdd590d337 100644 --- a/reactos/include/ddk/bdasup.h +++ b/reactos/include/ddk/bdasup.h @@ -1,12 +1,8 @@ -#pragma once - -#if (NTDDI_VERSION >= NTDDI_WINXP) - #if defined(__cplusplus) extern "C" { #endif -/* Helper macro to enable gcc's extension. */ +/* Helper macro to enable gcc's extension. */ #ifndef __GNU_EXTENSION #ifdef __GNUC__ #define __GNU_EXTENSION __extension__ @@ -16,190 +12,150 @@ extern "C" { #endif #define STDMETHODCALLTYPE __stdcall - -#ifndef _WDMDDK_ typedef GUID *PGUID; -#endif /* Types */ -typedef ULONG BDA_TOPOLOGY_JOINT, *PBDA_TOPOLOGY_JOINT; - -typedef struct _BDA_PIN_PAIRING { - ULONG ulInputPin; - ULONG ulOutputPin; - ULONG ulcMaxInputsPerOutput; - ULONG ulcMinInputsPerOutput; - ULONG ulcMaxOutputsPerInput; - ULONG ulcMinOutputsPerInput; - ULONG ulcTopologyJoints; - const ULONG *pTopologyJoints; +typedef struct _BDA_PIN_PAIRING +{ + ULONG ulInputPin; + ULONG ulOutputPin; + ULONG ulcMaxInputsPerOutput; + ULONG ulcMinInputsPerOutput; + ULONG ulcMaxOutputsPerInput; + ULONG ulcMinOutputsPerInput; + ULONG ulcTopologyJoints; + const ULONG *pTopologyJoints; } BDA_PIN_PAIRING, *PBDA_PIN_PAIRING; -typedef struct _BDA_FILTER_TEMPLATE { - const KSFILTER_DESCRIPTOR *pFilterDescriptor; - ULONG ulcPinPairs; - const BDA_PIN_PAIRING *pPinPairs; +typedef struct _BDA_FILTER_TEMPLATE +{ + const KSFILTER_DESCRIPTOR *pFilterDescriptor; + ULONG ulcPinPairs; + const BDA_PIN_PAIRING *pPinPairs; } BDA_FILTER_TEMPLATE, *PBDA_FILTER_TEMPLATE; -typedef struct _KSM_PIN_PAIR { - KSMETHOD Method; - ULONG InputPinId; - ULONG OutputPinId; - ULONG Reserved; -} KSM_PIN_PAIR, * PKSM_PIN_PAIR; - -typedef struct _KSM_PIN { - KSMETHOD Method; - __GNU_EXTENSION union { - ULONG PinId; - ULONG PinType; - }; - ULONG Reserved; + +typedef struct _KSM_PIN +{ + KSMETHOD Method; + __GNU_EXTENSION union + { + ULONG PinId; + ULONG PinType; + }; + ULONG Reserved; } KSM_PIN, * PKSM_PIN; /* Functions */ -STDMETHODIMP_(NTSTATUS) -BdaCheckChanges( - IN PIRP Irp); - -STDMETHODIMP_(NTSTATUS) -BdaCommitChanges( - IN PIRP Irp); - -STDMETHODIMP_(NTSTATUS) -BdaCreateFilterFactory( - IN PKSDEVICE pKSDevice, - IN const KSFILTER_DESCRIPTOR *pFilterDescriptor, - IN const BDA_FILTER_TEMPLATE *pBdaFilterTemplate); - -STDMETHODIMP_(NTSTATUS) -BdaCreateFilterFactoryEx( - IN PKSDEVICE pKSDevice, - IN const KSFILTER_DESCRIPTOR *pFilterDescriptor, - IN const BDA_FILTER_TEMPLATE *pBdaFilterTemplate, - OUT PKSFILTERFACTORY *ppKSFilterFactory); - -STDMETHODIMP_(NTSTATUS) -BdaCreatePin( - IN PKSFILTER pKSFilter, - IN ULONG ulPinType, - OUT ULONG *pulPinId); - -STDMETHODIMP_(NTSTATUS) -BdaCreateTopology( - IN PKSFILTER pKSFilter, - IN ULONG InputPinId, - IN ULONG OutputPinId); - -STDMETHODIMP_(NTSTATUS) -BdaDeletePin( - IN PKSFILTER pKSFilter, - IN ULONG *pulPinId); - -STDMETHODIMP_(NTSTATUS) -BdaFilterFactoryUpdateCacheData( - IN PKSFILTERFACTORY pFilterFactory, - IN const KSFILTER_DESCRIPTOR *pFilterDescriptor OPTIONAL); - -STDMETHODIMP_(NTSTATUS) -BdaGetChangeState( - IN PIRP Irp, - OUT BDA_CHANGE_STATE *pChangeState); - -STDMETHODIMP_(NTSTATUS) -BdaInitFilter( - IN PKSFILTER pKSFilter, - IN const BDA_FILTER_TEMPLATE *pBdaFilterTemplate); - -STDMETHODIMP_(NTSTATUS) -BdaMethodCreatePin( - IN PIRP Irp, - IN KSMETHOD *pKSMethod, - OUT ULONG *pulPinFactoryID); - -STDMETHODIMP_(NTSTATUS) -BdaMethodCreateTopology( - IN PIRP Irp, - IN KSMETHOD *pKSMethod, - OPTIONAL PVOID pvIgnored); - -STDMETHODIMP_(NTSTATUS) -BdaMethodDeletePin( - IN PIRP Irp, - IN KSMETHOD *pKSMethod, - OPTIONAL PVOID pvIgnored); - -STDMETHODIMP_(NTSTATUS) -BdaPropertyGetControllingPinId( - IN PIRP Irp, - IN KSP_BDA_NODE_PIN *pProperty, - OUT ULONG *pulControllingPinId); - -STDMETHODIMP_(NTSTATUS) -BdaPropertyGetPinControl( - IN PIRP Irp, - IN KSPROPERTY *pKSProperty, - OUT ULONG *pulProperty); - -STDMETHODIMP_(NTSTATUS) -BdaPropertyNodeDescriptors( - IN PIRP Irp, - IN KSPROPERTY *pKSProperty, - OUT BDANODE_DESCRIPTOR *pNodeDescriptorProperty); - -STDMETHODIMP_(NTSTATUS) -BdaPropertyNodeEvents( - IN PIRP Irp, - IN KSP_NODE *pKSProperty, - OUT GUID *pguidProperty); - -STDMETHODIMP_(NTSTATUS) -BdaPropertyNodeMethods( - IN PIRP Irp, - IN KSP_NODE *pKSProperty, - OUT GUID *pguidProperty); - -STDMETHODIMP_(NTSTATUS) -BdaPropertyNodeProperties( - IN PIRP Irp, - IN KSP_NODE *pKSProperty, - OUT GUID *pguidProperty); - -STDMETHODIMP_(NTSTATUS) -BdaPropertyNodeTypes( - IN PIRP Irp, - IN KSPROPERTY *pKSProperty, - OUT ULONG *pulProperty); - -STDMETHODIMP_(NTSTATUS) -BdaPropertyPinTypes( - IN PIRP Irp, - IN KSPROPERTY *pKSProperty, - OUT ULONG *pulProperty); - -STDMETHODIMP_(NTSTATUS) -BdaPropertyTemplateConnections( - IN PIRP Irp, - IN KSPROPERTY *pKSProperty, - OUT KSTOPOLOGY_CONNECTION *pConnectionProperty); - -STDMETHODIMP_(NTSTATUS) -BdaStartChanges( - IN PIRP Irp); - -STDMETHODIMP_(NTSTATUS) -BdaUninitFilter( - IN PKSFILTER pKSFilter); - -STDMETHODIMP_(NTSTATUS) -BdaValidateNodeProperty( - IN PIRP Irp, - IN KSPROPERTY *pKSProperty); +STDMETHODIMP_(NTSTATUS) BdaCheckChanges(IN PIRP Irp); +STDMETHODIMP_(NTSTATUS) BdaCommitChanges(IN PIRP Irp); + +STDMETHODIMP_(NTSTATUS) BdaCreateFilterFactory( + IN PKSDEVICE pKSDevice, + IN const KSFILTER_DESCRIPTOR *pFilterDescriptor, + IN const BDA_FILTER_TEMPLATE *pBdaFilterTemplate); + +STDMETHODIMP_(NTSTATUS) BdaCreateFilterFactoryEx( + IN PKSDEVICE pKSDevice, + IN const KSFILTER_DESCRIPTOR *pFilterDescriptor, + IN const BDA_FILTER_TEMPLATE *pBdaFilterTemplate, + OUT PKSFILTERFACTORY *ppKSFilterFactory); + +STDMETHODIMP_(NTSTATUS) BdaCreatePin( + IN PKSFILTER pKSFilter, + IN ULONG ulPinType, + OUT ULONG *pulPinId); + +STDMETHODIMP_(NTSTATUS) BdaCreateTopology( + IN PKSFILTER pKSFilter, + IN ULONG InputPinId, + IN ULONG OutputPinId); + +STDMETHODIMP_(NTSTATUS) BdaDeletePin( + IN PKSFILTER pKSFilter, + IN ULONG *pulPinId); + +STDMETHODIMP_(NTSTATUS) BdaFilterFactoryUpdateCacheData( + IN PKSFILTERFACTORY pFilterFactory, + IN const KSFILTER_DESCRIPTOR *pFilterDescriptor OPTIONAL); + +STDMETHODIMP_(NTSTATUS) BdaGetChangeState( + IN PIRP Irp, + OUT BDA_CHANGE_STATE *pChangeState); + +STDMETHODIMP_(NTSTATUS) BdaInitFilter( + IN PKSFILTER pKSFilter, + IN const BDA_FILTER_TEMPLATE *pBdaFilterTemplate); + +STDMETHODIMP_(NTSTATUS) BdaMethodCreatePin( + IN PIRP Irp, + IN KSMETHOD *pKSMethod, + OUT ULONG *pulPinFactoryID); + +STDMETHODIMP_(NTSTATUS) BdaMethodCreateTopology( + IN PIRP Irp, + IN KSMETHOD *pKSMethod, + OPTIONAL PVOID pvIgnored); + +STDMETHODIMP_(NTSTATUS) BdaMethodDeletePin( + IN PIRP Irp, + IN KSMETHOD *pKSMethod, + OPTIONAL PVOID pvIgnored); + +STDMETHODIMP_(NTSTATUS) BdaPropertyGetControllingPinId( + IN PIRP Irp, + IN KSP_BDA_NODE_PIN *pProperty, + OUT ULONG *pulControllingPinId); + +STDMETHODIMP_(NTSTATUS) BdaPropertyGetPinControl( + IN PIRP Irp, + IN KSPROPERTY *pKSProperty, + OUT ULONG *pulProperty); + +STDMETHODIMP_(NTSTATUS) BdaPropertyNodeDescriptors( + IN PIRP Irp, + IN KSPROPERTY *pKSProperty, + OUT BDANODE_DESCRIPTOR *pNodeDescriptorProperty); + +STDMETHODIMP_(NTSTATUS) BdaPropertyNodeEvents( + IN PIRP Irp, + IN KSP_NODE *pKSProperty, + OUT GUID *pguidProperty); + +STDMETHODIMP_(NTSTATUS) BdaPropertyNodeMethods( + IN PIRP Irp, + IN KSP_NODE *pKSProperty, + OUT GUID *pguidProperty); + +STDMETHODIMP_(NTSTATUS) BdaPropertyNodeProperties( + IN PIRP Irp, + IN KSP_NODE *pKSProperty, + OUT GUID *pguidProperty); + +STDMETHODIMP_(NTSTATUS) BdaPropertyNodeTypes( + IN PIRP Irp, + IN KSPROPERTY *pKSProperty, + OUT ULONG *pulProperty); + +STDMETHODIMP_(NTSTATUS) BdaPropertyPinTypes( + IN PIRP Irp, + IN KSPROPERTY *pKSProperty, + OUT ULONG *pulProperty); + +STDMETHODIMP_(NTSTATUS) BdaPropertyTemplateConnections( + IN PIRP Irp, + IN KSPROPERTY *pKSProperty, + OUT KSTOPOLOGY_CONNECTION *pConnectionProperty); + +STDMETHODIMP_(NTSTATUS) BdaStartChanges(IN PIRP Irp); +STDMETHODIMP_(NTSTATUS) BdaUninitFilter(IN PKSFILTER pKSFilter); + +STDMETHODIMP_(NTSTATUS) BdaValidateNodeProperty( + IN PIRP Irp, + IN KSPROPERTY *pKSProperty); #if defined(__cplusplus) } #endif - -#endif /* (NTDDI_VERSION >= NTDDI_WINXP) */ diff --git a/reactos/include/psdk/cfg.h b/reactos/include/ddk/cfg.h similarity index 65% rename from reactos/include/psdk/cfg.h rename to reactos/include/ddk/cfg.h index 3653dec0eeb..d9a4802da42 100644 --- a/reactos/include/psdk/cfg.h +++ b/reactos/include/ddk/cfg.h @@ -20,8 +20,7 @@ * */ -#pragma once - +#ifndef _CFG_INCLUDED_ #define _CFG_INCLUDED_ #ifdef __cplusplus @@ -78,26 +77,7 @@ extern "C" { #define CM_PROB_DRIVER_BLOCKED 0x00000030 #define CM_PROB_REGISTRY_TOO_LARGE 0x00000031 #define CM_PROB_SETPROPERTIES_FAILED 0x00000032 -#define CM_PROB_WAITING_ON_DEPENDENCY 0x00000033 -#define CM_PROB_UNSIGNED_DRIVER 0x00000034 - -#define NUM_CM_PROB_V1 0x00000025 -#define NUM_CM_PROB_V2 0x00000032 -#define NUM_CM_PROB_V3 0x00000033 -#define NUM_CM_PROB_V4 0x00000034 -#define NUM_CM_PROB_V5 0x00000035 - -#if (NTDDI_VERSION >= NTDDI_WIN7) -#define NUM_CM_PROB NUM_CM_PROB_V5 -#elif (NTDDI_VERSION >= NTDDI_WS08) -#define NUM_CM_PROB NUM_CM_PROB_V4 -#elif (NTDDI_VERSION >= NTDDI_WS03) -#define NUM_CM_PROB NUM_CM_PROB_V3 -#elif (NTDDI_VERSION >= NTDDI_WINXP) -#define NUM_CM_PROB NUM_CM_PROB_V2 -#elif (NTDDI_VERSION >= WIN2K) -#define NUM_CM_PROB NUM_CM_PROB_V1 -#endif +#define NUM_CM_PROB 0x00000033 #define LCPRI_FORCECONFIG 0x00000000 #define LCPRI_BOOTCONFIG 0x00000001 @@ -115,24 +95,24 @@ extern "C" { #define LCPRI_DISABLED 0x0000FFFF #define MAX_LCPRI 0x0000FFFF -#define DN_ROOT_ENUMERATED 0x00000001 /* Was enumerated by ROOT */ -#define DN_DRIVER_LOADED 0x00000002 /* Has Register_Device_Driver */ -#define DN_ENUM_LOADED 0x00000004 /* Has Register_Enumerator */ -#define DN_STARTED 0x00000008 /* Is currently configured */ -#define DN_MANUAL 0x00000010 /* Manually installed */ -#define DN_NEED_TO_ENUM 0x00000020 /* May need reenumeration */ -#define DN_NOT_FIRST_TIME 0x00000040 /* Has received a config (Win9x only) */ -#define DN_HARDWARE_ENUM 0x00000080 /* Enum generates hardware ID */ -#define DN_LIAR 0x00000100 /* Lied about can reconfig once (Win9x only) */ -#define DN_HAS_MARK 0x00000200 /* Not CM_Create_DevNode lately (Win9x only) */ -#define DN_HAS_PROBLEM 0x00000400 /* Need device installer */ -#define DN_FILTERED 0x00000800 /* Is filtered */ -#define DN_MOVED 0x00001000 /* Has been moved (Win9x only) */ -#define DN_DISABLEABLE 0x00002000 /* Can be rebalanced */ -#define DN_REMOVABLE 0x00004000 /* Can be removed */ -#define DN_PRIVATE_PROBLEM 0x00008000 /* Has a private problem */ -#define DN_MF_PARENT 0x00010000 /* Multi function parent */ -#define DN_MF_CHILD 0x00020000 /* Multi function child */ +#define DN_ROOT_ENUMERATED 0x00000001 /* Was enumerated by ROOT */ +#define DN_DRIVER_LOADED 0x00000002 /* Has Register_Device_Driver */ +#define DN_ENUM_LOADED 0x00000004 /* Has Register_Enumerator */ +#define DN_STARTED 0x00000008 /* Is currently configured */ +#define DN_MANUAL 0x00000010 /* Manually installed */ +#define DN_NEED_TO_ENUM 0x00000020 /* May need reenumeration */ +#define DN_NOT_FIRST_TIME 0x00000040 /* Has received a config (Win9x only) */ +#define DN_HARDWARE_ENUM 0x00000080 /* Enum generates hardware ID */ +#define DN_LIAR 0x00000100 /* Lied about can reconfig once (Win9x only) */ +#define DN_HAS_MARK 0x00000200 /* Not CM_Create_DevNode lately (Win9x only) */ +#define DN_HAS_PROBLEM 0x00000400 /* Need device installer */ +#define DN_FILTERED 0x00000800 /* Is filtered */ +#define DN_MOVED 0x00001000 /* Has been moved (Win9x only) */ +#define DN_DISABLEABLE 0x00002000 /* Can be rebalanced */ +#define DN_REMOVABLE 0x00004000 /* Can be removed */ +#define DN_PRIVATE_PROBLEM 0x00008000 /* Has a private problem */ +#define DN_MF_PARENT 0x00010000 /* Multi function parent */ +#define DN_MF_CHILD 0x00020000 /* Multi function child */ #define DN_WILL_BE_REMOVED 0x00040000 #define DN_NOT_FIRST_TIMEE 0x00080000 #define DN_STOP_FREE_RES 0x00100000 @@ -148,33 +128,11 @@ extern "C" { #define DN_NO_SHOW_IN_DM 0x40000000 #define DN_BOOT_LOG_PROB 0x80000000 -#if (NTDDI_VERSION >= NTDDI_WINXP) - -#define DN_NEED_RESTART DN_LIAR -#define DN_DRIVER_BLOCKED DN_NOT_FIRST_TIME -#define DN_LEGACY_DRIVER DN_MOVED +#define DN_NEED_RESTART DN_LIAR +#define DN_DRIVER_BLOCKED DN_NOT_FIRST_TIME +#define DN_LEGACY_DRIVER DN_MOVED #define DN_CHILD_WITH_INVALID_ID DN_HAS_MARK -#elif (NTDDI_VERSION >= NTDDI_WIN2K) - -#define DN_NEED_RESTART 0x00000100 - -#endif - -#define DN_CHANGEABLE_FLAGS (DN_NOT_FIRST_TIME + \ - DN_HARDWARE_ENUM + \ - DN_HAS_MARK + \ - DN_DISABLEABLE + \ - DN_REMOVABLE + \ - DN_MF_CHILD + \ - DN_MF_PARENT + \ - DN_NOT_FIRST_TIMEE + \ - DN_STOP_FREE_RES + \ - DN_REBAL_CANDIDATE + \ - DN_NT_ENUMERATOR + \ - DN_NT_DRIVER + \ - DN_SILENT_INSTALL + \ - DN_NO_SHOW_IN_DM) typedef enum _PNP_VETO_TYPE { PNP_VetoTypeUnknown, @@ -191,7 +149,14 @@ typedef enum _PNP_VETO_TYPE { PNP_VetoLegacyDriver } PNP_VETO_TYPE, *PPNP_VETO_TYPE; +#define CM_GLOBAL_STATE_CAN_DO_UI 0x00000001 +#define CM_GLOBAL_STATE_ON_BIG_STACK 0x00000002 +#define CM_GLOBAL_STATE_SERVICES_AVAILABLE 0x00000004 +#define CM_GLOBAL_STATE_SHUTTING_DOWN 0x00000008 +#define CM_GLOBAL_STATE_DETECTION_PENDING 0x00000010 + #ifdef __cplusplus } #endif +#endif /* _CFG_INCLUDED_ */ diff --git a/reactos/include/ddk/cfgmgr32.h b/reactos/include/ddk/cfgmgr32.h new file mode 100644 index 00000000000..5ca47bd7448 --- /dev/null +++ b/reactos/include/ddk/cfgmgr32.h @@ -0,0 +1,2244 @@ +/* + * cfgmgr32.h + * + * PnP configuration manager + * + * This file is part of the w32api package. + * + * Contributors: + * Created by Casper S. Hornstrup + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + +#ifndef _CFGMGR32_H_ +#define _CFGMGR32_H_ + +#include "cfg.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#if defined(_CFGMGR32_) +#define CMAPI +#else +#define CMAPI DECLSPEC_IMPORT +#endif + +#include + +#define CR_SUCCESS 0x00000000 +#define CR_DEFAULT 0x00000001 +#define CR_OUT_OF_MEMORY 0x00000002 +#define CR_INVALID_POINTER 0x00000003 +#define CR_INVALID_FLAG 0x00000004 +#define CR_INVALID_DEVNODE 0x00000005 +#define CR_INVALID_DEVINST CR_INVALID_DEVNODE +#define CR_INVALID_RES_DES 0x00000006 +#define CR_INVALID_LOG_CONF 0x00000007 +#define CR_INVALID_ARBITRATOR 0x00000008 +#define CR_INVALID_NODELIST 0x00000009 +#define CR_DEVNODE_HAS_REQS 0x0000000A +#define CR_DEVINST_HAS_REQS CR_DEVNODE_HAS_REQS +#define CR_INVALID_RESOURCEID 0x0000000B +#define CR_DLVXD_NOT_FOUND 0x0000000C +#define CR_NO_SUCH_DEVNODE 0x0000000D +#define CR_NO_SUCH_DEVINST CR_NO_SUCH_DEVNODE +#define CR_NO_MORE_LOG_CONF 0x0000000E +#define CR_NO_MORE_RES_DES 0x0000000F +#define CR_ALREADY_SUCH_DEVNODE 0x00000010 +#define CR_ALREADY_SUCH_DEVINST CR_ALREADY_SUCH_DEVNODE +#define CR_INVALID_RANGE_LIST 0x00000011 +#define CR_INVALID_RANGE 0x00000012 +#define CR_FAILURE 0x00000013 +#define CR_NO_SUCH_LOGICAL_DEV 0x00000014 +#define CR_CREATE_BLOCKED 0x00000015 +#define CR_NOT_SYSTEM_VM 0x00000016 +#define CR_REMOVE_VETOED 0x00000017 +#define CR_APM_VETOED 0x00000018 +#define CR_INVALID_LOAD_TYPE 0x00000019 +#define CR_BUFFER_SMALL 0x0000001A +#define CR_NO_ARBITRATOR 0x0000001B +#define CR_NO_REGISTRY_HANDLE 0x0000001C +#define CR_REGISTRY_ERROR 0x0000001D +#define CR_INVALID_DEVICE_ID 0x0000001E +#define CR_INVALID_DATA 0x0000001F +#define CR_INVALID_API 0x00000020 +#define CR_DEVLOADER_NOT_READY 0x00000021 +#define CR_NEED_RESTART 0x00000022 +#define CR_NO_MORE_HW_PROFILES 0x00000023 +#define CR_DEVICE_NOT_THERE 0x00000024 +#define CR_NO_SUCH_VALUE 0x00000025 +#define CR_WRONG_TYPE 0x00000026 +#define CR_INVALID_PRIORITY 0x00000027 +#define CR_NOT_DISABLEABLE 0x00000028 +#define CR_FREE_RESOURCES 0x00000029 +#define CR_QUERY_VETOED 0x0000002A +#define CR_CANT_SHARE_IRQ 0x0000002B +#define CR_NO_DEPENDENT 0x0000002C +#define CR_SAME_RESOURCES 0x0000002D +#define CR_NO_SUCH_REGISTRY_KEY 0x0000002E +#define CR_INVALID_MACHINENAME 0x0000002F +#define CR_REMOTE_COMM_FAILURE 0x00000030 +#define CR_MACHINE_UNAVAILABLE 0x00000031 +#define CR_NO_CM_SERVICES 0x00000032 +#define CR_ACCESS_DENIED 0x00000033 +#define CR_CALL_NOT_IMPLEMENTED 0x00000034 +#define CR_INVALID_PROPERTY 0x00000035 +#define CR_DEVICE_INTERFACE_ACTIVE 0x00000036 +#define CR_NO_SUCH_DEVICE_INTERFACE 0x00000037 +#define CR_INVALID_REFERENCE_STRING 0x00000038 +#define CR_INVALID_CONFLICT_LIST 0x00000039 +#define CR_INVALID_INDEX 0x0000003A +#define CR_INVALID_STRUCTURE_SIZE 0x0000003B + +#define RegDisposition_OpenAlways 0x00000000 +#define RegDisposition_OpenExisting 0x00000001 +#define RegDisposition_Bits 0x00000001 + + +typedef DWORD RETURN_TYPE; +typedef RETURN_TYPE CONFIGRET; + +typedef HANDLE HMACHINE; +typedef HMACHINE *PHMACHINE; + +typedef DWORD_PTR RES_DES; +typedef RES_DES *PRES_DES; + +typedef DWORD_PTR RANGE_ELEMENT; +typedef RANGE_ELEMENT *PRANGE_ELEMENT; + +typedef ULONG_PTR CONFLICT_LIST; +typedef CONFLICT_LIST *PCONFLICT_LIST; + +typedef DWORD_PTR LOG_CONF; +typedef LOG_CONF *PLOG_CONF; + +typedef ULONG PRIORITY; +typedef PRIORITY *PPRIORITY; + +typedef DWORD_PTR RANGE_LIST; +typedef RANGE_LIST *PRANGE_LIST; + +typedef DWORD DEVNODE, DEVINST; +typedef DEVNODE *PDEVNODE, *PDEVINST; + +typedef CHAR *DEVNODEID_A, *DEVINSTID_A; +typedef WCHAR *DEVNODEID_W, *DEVINSTID_W; + +#ifdef UNICODE +typedef DEVNODEID_W DEVNODEID; +typedef DEVINSTID_W DEVINSTID; +#else +typedef DEVNODEID_A DEVNODEID; +typedef DEVINSTID_A DEVINSTID; +#endif + +typedef ULONG REGDISPOSITION; + +typedef ULONG RESOURCEID; +typedef RESOURCEID *PRESOURCEID; + +#define CM_RESDES_WIDTH_DEFAULT 0x00000000 +#define CM_RESDES_WIDTH_32 0x00000001 +#define CM_RESDES_WIDTH_64 0x00000002 +#define CM_RESDES_WIDTH_BITS 0x00000003 + + +#define MAX_CONFIG_VALUE 9999 +#define MAX_INSTANCE_VALUE 9999 + +#define MAX_DEVICE_ID_LEN 200 +#define MAX_DEVNODE_ID_LEN MAX_DEVICE_ID_LEN + +#define MAX_CLASS_NAME_LEN 32 +#define MAX_GUID_STRING_LEN 39 +#define MAX_PROFILE_LEN 80 + + +#define ResType_All 0x00000000 +#define ResType_None 0x00000000 +#define ResType_Mem 0x00000001 +#define ResType_IO 0x00000002 +#define ResType_DMA 0x00000003 +#define ResType_IRQ 0x00000004 +#define ResType_DoNotUse 0x00000005 +#define ResType_BusNumber 0x00000006 +#define ResType_MAX 0x00000006 +#define ResType_Ignored_Bit 0x00008000 +#define ResType_ClassSpecific 0x0000FFFF +#define ResType_Reserved 0x00008000 +#define ResType_DevicePrivate 0x00008001 +#define ResType_PcCardConfig 0x00008002 +#define ResType_MfCardConfig 0x00008003 + +#define CM_GETIDLIST_FILTER_NONE 0x00000000 +#define CM_GETIDLIST_FILTER_ENUMERATOR 0x00000001 +#define CM_GETIDLIST_FILTER_SERVICE 0x00000002 +#define CM_GETIDLIST_FILTER_EJECTRELATIONS 0x00000004 +#define CM_GETIDLIST_FILTER_REMOVALRELATIONS 0x00000008 +#define CM_GETIDLIST_FILTER_POWERRELATIONS 0x00000010 +#define CM_GETIDLIST_FILTER_BUSRELATIONS 0x00000020 +#define CM_GETIDLIST_DONOTGENERATE 0x10000040 +#define CM_GETIDLIST_FILTER_BITS 0x1000007F + +#define CM_GET_DEVICE_INTERFACE_LIST_PRESENT 0x00000000 +#define CM_GET_DEVICE_INTERFACE_LIST_ALL_DEVICES 0x00000001 +#define CM_GET_DEVICE_INTERFACE_LIST_BITS 0x00000001 + +#define CM_DRP_DEVICEDESC 0x00000001 +#define CM_DRP_HARDWAREID 0x00000002 +#define CM_DRP_COMPATIBLEIDS 0x00000003 +#define CM_DRP_UNUSED0 0x00000004 +#define CM_DRP_SERVICE 0x00000005 +#define CM_DRP_UNUSED1 0x00000006 +#define CM_DRP_UNUSED2 0x00000007 +#define CM_DRP_CLASS 0x00000008 +#define CM_DRP_CLASSGUID 0x00000009 +#define CM_DRP_DRIVER 0x0000000A +#define CM_DRP_CONFIGFLAGS 0x0000000B +#define CM_DRP_MFG 0x0000000C +#define CM_DRP_FRIENDLYNAME 0x0000000D +#define CM_DRP_LOCATION_INFORMATION 0x0000000E +#define CM_DRP_PHYSICAL_DEVICE_OBJECT_NAME 0x0000000F +#define CM_DRP_CAPABILITIES 0x00000010 +#define CM_DRP_UI_NUMBER 0x00000011 +#define CM_DRP_UPPERFILTERS 0x00000012 +#define CM_DRP_LOWERFILTERS 0x00000013 +#define CM_DRP_BUSTYPEGUID 0x00000014 +#define CM_DRP_LEGACYBUSTYPE 0x00000015 +#define CM_DRP_BUSNUMBER 0x00000016 +#define CM_DRP_ENUMERATOR_NAME 0x00000017 + +#define CM_DRP_MIN 0x00000001 +#define CM_DRP_MAX 0x00000017 + +#define CM_REGISTRY_HARDWARE 0x00000000 +#define CM_REGISTRY_SOFTWARE 0x00000001 +#define CM_REGISTRY_USER 0x00000100 +#define CM_REGISTRY_CONFIG 0x00000200 +#define CM_REGISTRY_BITS 0x00000301 + +#define CM_DEVCAP_LOCKSUPPORTED 0x00000001 +#define CM_DEVCAP_EJECTSUPPORTED 0x00000002 +#define CM_DEVCAP_REMOVABLE 0x00000004 +#define CM_DEVCAP_DOCKDEVICE 0x00000008 +#define CM_DEVCAP_UNIQUEID 0x00000010 +#define CM_DEVCAP_SILENTINSTALL 0x00000020 +#define CM_DEVCAP_RAWDEVICEOK 0x00000040 +#define CM_DEVCAP_SURPRISEREMOVALOK 0x00000080 +#define CM_DEVCAP_HARDWAREDISABLED 0x00000100 +#define CM_DEVCAP_NONDYNAMIC 0x00000200 + +typedef struct BusNumber_Des_s { + DWORD BUSD_Count; + DWORD BUSD_Type; + DWORD BUSD_Flags; + ULONG BUSD_Alloc_Base; + ULONG BUSD_Alloc_End; +} BUSNUMBER_DES, *PBUSNUMBER_DES; + +typedef struct BusNumber_Range_s { + ULONG BUSR_Min; + ULONG BUSR_Max; + ULONG BUSR_nBusNumbers; + ULONG BUSR_Flags; +} BUSNUMBER_RANGE, *PBUSNUMBER_RANGE; + +#define BusNumberType_Range sizeof(BUSNUMBER_RANGE) + +typedef struct BusNumber_Resource_s { + BUSNUMBER_DES BusNumber_Header; + BUSNUMBER_RANGE BusNumber_Data[ANYSIZE_ARRAY]; +} BUSNUMBER_RESOURCE, *PBUSNUMBER_RESOURCE; + +typedef struct CS_Des_s { + DWORD CSD_SignatureLength; + DWORD CSD_LegacyDataOffset; + DWORD CSD_LegacyDataSize; + DWORD CSD_Flags; + GUID CSD_ClassGuid; + BYTE CSD_Signature[ANYSIZE_ARRAY]; +} CS_DES, *PCS_DES; + +typedef struct CS_Resource_s { + CS_DES CS_Header; +} CS_RESOURCE, *PCS_RESOURCE; + +typedef struct DevPrivate_Des_s { + DWORD PD_Count; + DWORD PD_Type; + DWORD PD_Data1; + DWORD PD_Data2; + DWORD PD_Data3; + DWORD PD_Flags; +} DEVPRIVATE_DES, *PDEVPRIVATE_DES; + +typedef struct DevPrivate_Range_s { + DWORD PR_Data1; + DWORD PR_Data2; + DWORD PR_Data3; +} DEVPRIVATE_RANGE, *PDEVPRIVATE_RANGE; + +#define PType_Range sizeof(DEVPRIVATE_RANGE) + +typedef struct DevPrivate_Resource_s { + DEVPRIVATE_DES PRV_Header; + DEVPRIVATE_RANGE PRV_Data[ANYSIZE_ARRAY]; +} DEVPRIVATE_RESOURCE, *PDEVPRIVATE_RESOURCE; + +/* DMA_DES.DD_Flags constants and masks */ +#define mDD_Width 0x3 +#define fDD_BYTE 0x0 +#define fDD_WORD 0x1 +#define fDD_DWORD 0x2 +#define fDD_BYTE_AND_WORD 0x3 + +#define mDD_BusMaster 0x4 +#define fDD_NoBusMaster 0x0 +#define fDD_BusMaster 0x4 + +#define mDD_Type 0x18 +#define fDD_TypeStandard 0x00 +#define fDD_TypeA 0x08 +#define fDD_TypeB 0x10 +#define fDD_TypeF 0x18 + +typedef struct DMA_Des_s { + DWORD DD_Count; + DWORD DD_Type; + DWORD DD_Flags; + ULONG DD_Alloc_Chan; +} DMA_DES, *PDMA_DES; + +typedef struct DMA_Range_s { + ULONG DR_Min; + ULONG DR_Max; + ULONG DR_Flags; +} DMA_RANGE, *PDMA_RANGE; + +#define DType_Range sizeof(DMA_RANGE) + +typedef struct DMA_Resource_s { + DMA_DES DMA_Header; + DMA_RANGE DMA_Data[ANYSIZE_ARRAY]; +} DMA_RESOURCE, *PDMA_RESOURCE; + +/* IO_DES.Type constants and masks */ +#define fIOD_PortType 0x1 +#define fIOD_Memory 0x0 +#define fIOD_IO 0x1 +#define fIOD_DECODE 0x00fc +#define fIOD_10_BIT_DECODE 0x0004 +#define fIOD_12_BIT_DECODE 0x0008 +#define fIOD_16_BIT_DECODE 0x0010 +#define fIOD_POSITIVE_DECODE 0x0020 +#define fIOD_PASSIVE_DECODE 0x0040 +#define fIOD_WINDOW_DECODE 0x0080 + +typedef struct IO_Des_s { + DWORD IOD_Count; + DWORD IOD_Type; + DWORDLONG IOD_Alloc_Base; + DWORDLONG IOD_Alloc_End; + DWORD IOD_DesFlags; +} IO_DES, *PIO_DES; + +/* IO_RANGE.IOR_Alias constants */ +#define IO_ALIAS_10_BIT_DECODE 0x00000004 +#define IO_ALIAS_12_BIT_DECODE 0x00000010 +#define IO_ALIAS_16_BIT_DECODE 0x00000000 +#define IO_ALIAS_POSITIVE_DECODE 0x000000FF + +typedef struct IO_Range_s { + DWORDLONG IOR_Align; + DWORD IOR_nPorts; + DWORDLONG IOR_Min; + DWORDLONG IOR_Max; + DWORD IOR_RangeFlags; + DWORDLONG IOR_Alias; +} IO_RANGE, *PIO_RANGE; + +#define IOType_Range sizeof(IO_RANGE) + +typedef struct IO_Resource_s { + IO_DES IO_Header; + IO_RANGE IO_Data[ANYSIZE_ARRAY]; +} IO_RESOURCE, *PIO_RESOURCE; + +/* IRQ_DES.IRQD_flags constants */ +#define mIRQD_Share 0x1 +#define fIRQD_Exclusive 0x0 +#define fIRQD_Share 0x1 + +#define fIRQD_Share_Bit 0 +#define fIRQD_Level_Bit 1 + +#define mIRQD_Edge_Level 0x2 +#define fIRQD_Level 0x0 +#define fIRQD_Edge 0x2 + +typedef struct IRQ_Des_32_s { + DWORD IRQD_Count; + DWORD IRQD_Type; + DWORD IRQD_Flags; + ULONG IRQD_Alloc_Num; + ULONG32 IRQD_Affinity; +} IRQ_DES_32, *PIRQ_DES_32; + +typedef struct IRQ_Des_64_s { + DWORD IRQD_Count; + DWORD IRQD_Type; + DWORD IRQD_Flags; + ULONG IRQD_Alloc_Num; + ULONG64 IRQD_Affinity; +} IRQ_DES_64, *PIRQ_DES_64; + +#ifdef _WIN64 +typedef IRQ_DES_64 IRQ_DES; +typedef PIRQ_DES_64 PIRQ_DES; +#else +typedef IRQ_DES_32 IRQ_DES; +typedef PIRQ_DES_32 PIRQ_DES; +#endif + +typedef struct IRQ_Range_s { + ULONG IRQR_Min; + ULONG IRQR_Max; + ULONG IRQR_Flags; +} IRQ_RANGE, *PIRQ_RANGE; + +#define IRQType_Range sizeof(IRQ_RANGE) + +typedef struct IRQ_Resource_s { + IRQ_DES IRQ_Header; + IRQ_RANGE IRQ_Data[ANYSIZE_ARRAY]; +} IRQ_RESOURCE, *PIRQ_RESOURCE; + +/* MEM_DES.MD_Flags constants */ +#define mMD_MemoryType 0x1 +#define fMD_MemoryType mMD_MemoryType +#define fMD_ROM 0x0 +#define fMD_RAM 0x1 + +#define mMD_32_24 0x2 +#define fMD_32_24 mMD_32_24 +#define fMD_24 0x0 +#define fMD_32 0x2 + +#define mMD_Prefetchable 0x4 +#define fMD_Prefetchable mMD_Prefetchable +#define fMD_Pref mMD_Prefetchable +#define fMD_PrefetchDisallowed 0x0 +#define fMD_PrefetchAllowed 0x4 + +#define mMD_Readable 0x8 +#define fMD_Readable mMD_Readable +#define fMD_ReadAllowed 0x0 +#define fMD_ReadDisallowed 0x8 + +#define mMD_CombinedWrite 0x10 +#define fMD_CombinedWrite mMD_CombinedWrite +#define fMD_CombinedWriteDisallowed 0x0 +#define fMD_CombinedWriteAllowed 0x10 + +#define mMD_Cacheable 0x20 +#define fMD_NonCacheable 0x0 +#define fMD_Cacheable 0x20 + +typedef struct Mem_Des_s { + DWORD MD_Count; + DWORD MD_Type; + DWORDLONG MD_Alloc_Base; + DWORDLONG MD_Alloc_End; + DWORD MD_Flags; + DWORD MD_Reserved; +} MEM_DES, *PMEM_DES; + +typedef struct Mem_Range_s { + DWORDLONG MR_Align; + ULONG MR_nBytes; + DWORDLONG MR_Min; + DWORDLONG MR_Max; + DWORD MR_Flags; + DWORD MR_Reserved; +} MEM_RANGE, *PMEM_RANGE; + +#define MType_Range sizeof(MEM_RANGE) + +typedef struct Mem_Resource_s { + MEM_DES MEM_Header; + MEM_RANGE MEM_Data[ANYSIZE_ARRAY]; +} MEM_RESOURCE, *PMEM_RESOURCE; + +/* MFCARD_DES.PMF_Flags constants */ +#define fPMF_AUDIO_ENABLE 0x8 +#define mPMF_AUDIO_ENABLE fPMF_AUDIO_ENABLE + +typedef struct MfCard_Des_s { + DWORD PMF_Count; + DWORD PMF_Type; + DWORD PMF_Flags; + BYTE PMF_ConfigOptions; + BYTE PMF_IoResourceIndex; + BYTE PMF_Reserved[2]; + DWORD PMF_ConfigRegisterBase; +} MFCARD_DES, *PMFCARD_DES; + +typedef struct MfCard_Resource_s { + MFCARD_DES MfCard_Header; +} MFCARD_RESOURCE, *PMFCARD_RESOURCE; + +/* PCCARD_DES.PCD_Flags constants */ + +typedef struct PcCard_Des_s { + DWORD PCD_Count; + DWORD PCD_Type; + DWORD PCD_Flags; + BYTE PCD_ConfigIndex; + BYTE PCD_Reserved[3]; + DWORD PCD_MemoryCardBase1; + DWORD PCD_MemoryCardBase2; +} PCCARD_DES, *PPCCARD_DES; + +#define mPCD_IO_8_16 0x1 +#define fPCD_IO_8 0x0 +#define fPCD_IO_16 0x1 +#define mPCD_MEM_8_16 0x2 +#define fPCD_MEM_8 0x0 +#define fPCD_MEM_16 0x2 +#define mPCD_MEM_A_C 0xC +#define fPCD_MEM1_A 0x4 +#define fPCD_MEM2_A 0x8 +#define fPCD_IO_ZW_8 0x10 +#define fPCD_IO_SRC_16 0x20 +#define fPCD_IO_WS_16 0x40 +#define mPCD_MEM_WS 0x300 +#define fPCD_MEM_WS_ONE 0x100 +#define fPCD_MEM_WS_TWO 0x200 +#define fPCD_MEM_WS_THREE 0x300 + +#define fPCD_MEM_A 0x4 + +#define fPCD_ATTRIBUTES_PER_WINDOW 0x8000 + +#define fPCD_IO1_16 0x00010000 +#define fPCD_IO1_ZW_8 0x00020000 +#define fPCD_IO1_SRC_16 0x00040000 +#define fPCD_IO1_WS_16 0x00080000 + +#define fPCD_IO2_16 0x00100000 +#define fPCD_IO2_ZW_8 0x00200000 +#define fPCD_IO2_SRC_16 0x00400000 +#define fPCD_IO2_WS_16 0x00800000 + +#define mPCD_MEM1_WS 0x03000000 +#define fPCD_MEM1_WS_ONE 0x01000000 +#define fPCD_MEM1_WS_TWO 0x02000000 +#define fPCD_MEM1_WS_THREE 0x03000000 +#define fPCD_MEM1_16 0x04000000 + +#define mPCD_MEM2_WS 0x30000000 +#define fPCD_MEM2_WS_ONE 0x10000000 +#define fPCD_MEM2_WS_TWO 0x20000000 +#define fPCD_MEM2_WS_THREE 0x30000000 +#define fPCD_MEM2_16 0x40000000 + +#define PCD_MAX_MEMORY 2 +#define PCD_MAX_IO 2 + +typedef struct PcCard_Resource_s { + PCCARD_DES PcCard_Header; +} PCCARD_RESOURCE, *PPCCARD_RESOURCE; + + +/* CONFLICT_DETAILS.CD.ulMask constants */ +#define CM_CDMASK_DEVINST 0x00000001 +#define CM_CDMASK_RESDES 0x00000002 +#define CM_CDMASK_FLAGS 0x00000004 +#define CM_CDMASK_DESCRIPTION 0x00000008 +#define CM_CDMASK_VALID 0x0000000F + +/* CONFLICT_DETAILS.CD.ulFlags constants */ +#define CM_CDFLAGS_DRIVER 0x00000001 +#define CM_CDFLAGS_ROOT_OWNED 0x00000002 +#define CM_CDFLAGS_RESERVED 0x00000004 + +typedef struct _CONFLICT_DETAILS_A { + ULONG CD_ulSize; + ULONG CD_ulMask; + DEVINST CD_dnDevInst; + RES_DES CD_rdResDes; + ULONG CD_ulFlags; + CHAR CD_szDescription[MAX_PATH]; +} CONFLICT_DETAILS_A , *PCONFLICT_DETAILS_A; + +typedef struct _CONFLICT_DETAILS_W { + ULONG CD_ulSize; + ULONG CD_ulMask; + DEVINST CD_dnDevInst; + RES_DES CD_rdResDes; + ULONG CD_ulFlags; + WCHAR CD_szDescription[MAX_PATH]; +} CONFLICT_DETAILS_W , *PCONFLICT_DETAILS_W; + +#ifdef UNICODE +typedef CONFLICT_DETAILS_W CONFLICT_DETAILS; +typedef PCONFLICT_DETAILS_W PCONFLICT_DETAILS; +#else +typedef CONFLICT_DETAILS_A CONFLICT_DETAILS; +typedef PCONFLICT_DETAILS_A PCONFLICT_DETAILS; +#endif + + +#define CMP_MAGIC 0x01234567 + + +CMAPI +CONFIGRET +WINAPI +CMP_Init_Detection( + IN DWORD dwMagic); + +CMAPI +CONFIGRET +WINAPI +CMP_RegisterNotification( + IN HANDLE hRecipient, + IN LPVOID lpvNotificationFilter, + IN DWORD dwFlags, + OUT PULONG pluhDevNotify); + +CMAPI +CONFIGRET +WINAPI +CMP_Report_LogOn( + IN DWORD dwMagic, + IN DWORD dwProcessId); + +CMAPI +CONFIGRET +WINAPI +CMP_UnregisterNotification(IN ULONG luhDevNotify); + +/* FIXME: Missing CMP_WaitNoPendingInstallEvents */ +/* FIXME: Missing CMP_WaitServicesAvailable */ + +/* CM_Add_Empty_Log_Conf.ulFlags constants */ +#define BASIC_LOG_CONF 0x00000000 +#define FILTERED_LOG_CONF 0x00000001 +#define ALLOC_LOG_CONF 0x00000002 +#define BOOT_LOG_CONF 0x00000003 +#define FORCED_LOG_CONF 0x00000004 +#define OVERRIDE_LOG_CONF 0x00000005 +#define NUM_LOG_CONF 0x00000006 +#define LOG_CONF_BITS 0x00000007 + +#define PRIORITY_EQUAL_FIRST 0x00000008 +#define PRIORITY_EQUAL_LAST 0x00000000 +#define PRIORITY_BIT 0x00000008 + +CMAPI +CONFIGRET +WINAPI +CM_Add_Empty_Log_Conf( + OUT PLOG_CONF plcLogConf, + IN DEVINST dnDevInst, + IN PRIORITY Priority, + IN ULONG ulFlags); + +CMAPI +CONFIGRET +WINAPI +CM_Add_Empty_Log_Conf_Ex( + OUT PLOG_CONF plcLogConf, + IN DEVINST dnDevInst, + IN PRIORITY Priority, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +/* CM_Add_ID.ulFlags constants */ +#define CM_ADD_ID_HARDWARE 0x00000000 +#define CM_ADD_ID_COMPATIBLE 0x00000001 +#define CM_ADD_ID_BITS 0x00000001 + +CMAPI +CONFIGRET +WINAPI +CM_Add_IDA( + IN DEVINST dnDevInst, + IN PSTR pszID, + IN ULONG ulFlags); + +CMAPI +CONFIGRET +WINAPI +CM_Add_ID_ExA( + IN DEVINST dnDevInst, + IN PSTR pszID, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +CMAPI +CONFIGRET +WINAPI +CM_Add_ID_ExW( + IN DEVINST dnDevInst, + IN PWSTR pszID, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +CMAPI +CONFIGRET +WINAPI +CM_Add_IDW( + IN DEVINST dnDevInst, + IN PWSTR pszID, + IN ULONG ulFlags); + +#ifdef UNICODE +#define CM_Add_ID CM_Add_IDW +#define CM_Add_ID_Ex CM_Add_ID_ExW +#else +#define CM_Add_ID CM_Add_IDA +#define CM_Add_ID_Ex CM_Add_ID_ExA +#endif /* UNICODE */ + +/* FIXME: Obsolete CM_Add_Range */ + +CMAPI +CONFIGRET +WINAPI +CM_Add_Res_Des( + OUT PRES_DES prdResDes, + IN LOG_CONF lcLogConf, + IN RESOURCEID ResourceID, + IN PCVOID ResourceData, + IN ULONG ResourceLen, + IN ULONG ulFlags); + +CMAPI +CONFIGRET +WINAPI +CM_Add_Res_Des_Ex( + OUT PRES_DES prdResDes, + IN LOG_CONF lcLogConf, + IN RESOURCEID ResourceID, + IN PCVOID ResourceData, + IN ULONG ResourceLen, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +CMAPI +CONFIGRET +WINAPI +CM_Connect_MachineA( + IN PCSTR UNCServerName, + OUT PHMACHINE phMachine); + +CMAPI +CONFIGRET +WINAPI +CM_Connect_MachineW( + IN PCWSTR UNCServerName, + OUT PHMACHINE phMachine); + +#ifdef UNICODE +#define CM_Connect_Machine CM_Connect_MachineW +#else +#define CM_Connect_Machine CM_Connect_MachineA +#endif /* UNICODE */ + +/* Flags for CM_Create_DevNode[_Ex].ulFlags constants */ +#define CM_CREATE_DEVNODE_NORMAL 0x00000000 +#define CM_CREATE_DEVNODE_NO_WAIT_INSTALL 0x00000001 +#define CM_CREATE_DEVNODE_PHANTOM 0x00000002 +#define CM_CREATE_DEVNODE_GENERATE_ID 0x00000004 +#define CM_CREATE_DEVNODE_DO_NOT_INSTALL 0x00000008 +#define CM_CREATE_DEVNODE_BITS 0x0000000F + +#define CM_CREATE_DEVINST_NORMAL CM_CREATE_DEVNODE_NORMAL +#define CM_CREATE_DEVINST_NO_WAIT_INSTALL CM_CREATE_DEVNODE_NO_WAIT_INSTALL +#define CM_CREATE_DEVINST_PHANTOM CM_CREATE_DEVNODE_PHANTOM +#define CM_CREATE_DEVINST_GENERATE_ID CM_CREATE_DEVNODE_GENERATE_ID +#define CM_CREATE_DEVINST_DO_NOT_INSTALL CM_CREATE_DEVNODE_DO_NOT_INSTALL +#define CM_CREATE_DEVINST_BITS CM_CREATE_DEVNODE_BITS + +CMAPI +CONFIGRET +WINAPI +CM_Create_DevNodeA( + OUT PDEVINST pdnDevInst, + IN DEVINSTID_A pDeviceID, + IN DEVINST dnParent, + IN ULONG ulFlags); + +CMAPI +CONFIGRET +WINAPI +CM_Create_DevNodeW( + OUT PDEVINST pdnDevInst, + IN DEVINSTID_W pDeviceID, + IN DEVINST dnParent, + IN ULONG ulFlags); + +CMAPI +CONFIGRET +WINAPI +CM_Create_DevNode_ExA( + OUT PDEVINST pdnDevInst, + IN DEVINSTID_A pDeviceID, + IN DEVINST dnParent, + IN ULONG ulFlags, + IN HANDLE hMachine); + +CMAPI +CONFIGRET +WINAPI +CM_Create_DevNode_ExW( + OUT PDEVINST pdnDevInst, + IN DEVINSTID_W pDeviceID, + IN DEVINST dnParent, + IN ULONG ulFlags, + IN HANDLE hMachine); + +#define CM_Create_DevInstW CM_Create_DevNodeW +#define CM_Create_DevInstA CM_Create_DevNodeA +#define CM_Create_DevInst_ExW CM_Create_DevNode_ExW +#define CM_Create_DevInst_ExA CM_Create_DevNode_ExA +#ifdef UNICODE +#define CM_Create_DevNode CM_Create_DevNodeW +#define CM_Create_DevInst CM_Create_DevNodeW +#define CM_Create_DevNode_Ex CM_Create_DevNode_ExW +#define CM_Create_DevInst_Ex CM_Create_DevInst_ExW +#else +#define CM_Create_DevNode CM_Create_DevNodeA +#define CM_Create_DevInst CM_Create_DevNodeA +#define CM_Create_DevNode_Ex CM_Create_DevNode_ExA +#define CM_Create_DevInst_Ex CM_Create_DevNode_ExA +#endif /* UNICODE */ + +/* FIXME: Obsolete CM_Create_Range_List */ + +/* Flags for CM_Delete_Class_Key.ulFlags constants */ +#define CM_DELETE_CLASS_ONLY 0x00000000 +#define CM_DELETE_CLASS_SUBKEYS 0x00000001 +#define CM_DELETE_CLASS_BITS 0x00000001 + +CMAPI +CONFIGRET +WINAPI +CM_Delete_Class_Key( + IN LPGUID ClassGuid, + IN ULONG ulFlags); + +CMAPI +CONFIGRET +WINAPI +CM_Delete_Class_Key_Ex( + IN LPGUID ClassGuid, + IN ULONG ulFlags, + IN HANDLE hMachine); + +CMAPI +CONFIGRET +WINAPI +CM_Delete_DevNode_Key( + IN DEVNODE dnDevNode, + IN ULONG ulHardwareProfile, + IN ULONG ulFlags); + +CMAPI +CONFIGRET +WINAPI +CM_Delete_DevNode_Key_Ex( + IN DEVNODE dnDevNode, + IN ULONG ulHardwareProfile, + IN ULONG ulFlags, + IN HANDLE hMachine); + +#define CM_Delete_DevInst_Key CM_Delete_DevNode_Key +#define CM_Delete_DevInst_Key_Ex CM_Delete_DevNode_Key_Ex + +/* FIXME: Obsolete CM_Delete_Range */ +/* FIXME: Obsolete CM_Detected_Resource_Conflict */ +/* FIXME: Obsolete CM_Detected_Resource_Conflict_Ex */ + +CMAPI +CONFIGRET +WINAPI +CM_Disable_DevNode( + IN DEVINST dnDevInst, + IN ULONG ulFlags); + +CMAPI +CONFIGRET +WINAPI +CM_Disable_DevNode_Ex( + IN DEVINST dnDevInst, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +#define CM_Disable_DevInst CM_Disable_DevNode +#define CM_Disable_DevInst_Ex CM_Disable_DevNode_Ex + +CMAPI +CONFIGRET +WINAPI +CM_Disconnect_Machine( + IN HMACHINE hMachine); + +CMAPI +CONFIGRET +WINAPI +CM_Enable_DevNode( + IN DEVINST dnDevInst, + IN ULONG ulFlags); + +CMAPI +CONFIGRET +WINAPI +CM_Enable_DevNode_Ex( + IN DEVINST dnDevInst, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +#define CM_Enable_DevInst CM_Enable_DevNode +#define CM_Enable_DevInst_Ex CM_Enable_DevNode_Ex + +CMAPI +CONFIGRET +WINAPI +CM_Enumerate_Classes( + IN ULONG ulClassIndex, + OUT LPGUID ClassGuid, + IN ULONG ulFlags); + +CMAPI +CONFIGRET +WINAPI +CM_Enumerate_Classes_Ex( + IN ULONG ulClassIndex, + OUT LPGUID ClassGuid, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +CMAPI +CONFIGRET +WINAPI +CM_Enumerate_EnumeratorsA( + IN ULONG ulEnumIndex, + OUT PCHAR Buffer, + IN OUT PULONG pulLength, + IN ULONG ulFlags); + +CMAPI +CONFIGRET +WINAPI +CM_Enumerate_Enumerators_ExA( + IN ULONG ulEnumIndex, + OUT PCHAR Buffer, + IN OUT PULONG pulLength, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +CMAPI +CONFIGRET +WINAPI +CM_Enumerate_Enumerators_ExW( + IN ULONG ulEnumIndex, + OUT PWCHAR Buffer, + IN OUT PULONG pulLength, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +CMAPI +CONFIGRET +WINAPI +CM_Enumerate_EnumeratorsW( + IN ULONG ulEnumIndex, + OUT PWCHAR Buffer, + IN OUT PULONG pulLength, + IN ULONG ulFlags); + +#ifdef UNICODE +#define CM_Enumerate_Enumerators CM_Enumerate_EnumeratorsW +#define CM_Enumerate_Enumerators_Ex CM_Enumerate_Enumerators_ExW +#else +#define CM_Enumerate_Enumerators CM_Enumerate_EnumeratorsA +#define CM_Enumerate_Enumerators_Ex CM_Enumerate_Enumerators_ExA +#endif /* UNICODE */ + +/* FIXME: Obsolete CM_Find_Range */ +/* FIXME: Obsolete CM_First_Range */ + +CMAPI +CONFIGRET +WINAPI +CM_Free_Log_Conf( + IN LOG_CONF lcLogConfToBeFreed, + IN ULONG ulFlags); + +CMAPI +CONFIGRET +WINAPI +CM_Free_Log_Conf_Ex( + IN LOG_CONF lcLogConfToBeFreed, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +CMAPI +CONFIGRET +WINAPI +CM_Free_Log_Conf_Handle( + IN LOG_CONF lcLogConf); + +/* FIXME: Obsolete CM_Free_Range_List */ + +CMAPI +CONFIGRET +WINAPI +CM_Free_Res_Des( + OUT PRES_DES prdResDes, + IN RES_DES rdResDes, + IN ULONG ulFlags); + +CMAPI +CONFIGRET +WINAPI +CM_Free_Res_Des_Ex( + OUT PRES_DES prdResDes, + IN RES_DES rdResDes, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +CMAPI +CONFIGRET +WINAPI +CM_Free_Res_Des_Handle( + IN RES_DES rdResDes); + +CMAPI +CONFIGRET +WINAPI +CM_Free_Resource_Conflict_Handle( + IN CONFLICT_LIST clConflictList); + +CMAPI +CONFIGRET +WINAPI +CM_Get_Child( + OUT PDEVINST pdnDevInst, + IN DEVINST dnDevInst, + IN ULONG ulFlags); + +CMAPI +CONFIGRET +WINAPI +CM_Get_Child_Ex( + OUT PDEVINST pdnDevInst, + IN DEVINST dnDevInst, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +CMAPI +CONFIGRET +WINAPI +CM_Get_Class_NameA( + IN LPGUID ClassGuid, + OUT PCHAR Buffer, + IN OUT PULONG pulLength, + IN ULONG ulFlags); + +CMAPI +CONFIGRET +WINAPI +CM_Get_Class_NameW( + IN LPGUID ClassGuid, + OUT PWCHAR Buffer, + IN OUT PULONG pulLength, + IN ULONG ulFlags); + +CMAPI +CONFIGRET +WINAPI +CM_Get_Class_Name_ExA( + IN LPGUID ClassGuid, + OUT PCHAR Buffer, + IN OUT PULONG pulLength, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +CMAPI +CONFIGRET +WINAPI +CM_Get_Class_Name_ExW( + IN LPGUID ClassGuid, + OUT PWCHAR Buffer, + IN OUT PULONG pulLength, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +#ifdef UNICODE +#define CM_Get_Class_Name CM_Get_Class_NameW +#define CM_Get_Class_Name_Ex CM_Get_Class_Name_ExW +#else +#define CM_Get_Class_Name CM_Get_Class_NameA +#define CM_Get_Class_Name_Ex CM_Get_Class_Name_ExA +#endif /* UNICODE */ + +CMAPI +CONFIGRET +WINAPI +CM_Get_Class_Key_NameA( + IN LPGUID ClassGuid, + OUT LPSTR pszKeyName, + IN OUT PULONG pulLength, + IN ULONG ulFlags); + +CMAPI +CONFIGRET +WINAPI +CM_Get_Class_Key_NameW( + IN LPGUID ClassGuid, + OUT LPWSTR pszKeyName, + IN OUT PULONG pulLength, + IN ULONG ulFlags); + +CMAPI +CONFIGRET +WINAPI +CM_Get_Class_Key_Name_ExA( + IN LPGUID ClassGuid, + OUT LPSTR pszKeyName, + IN OUT PULONG pulLength, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +CMAPI +CONFIGRET +WINAPI +CM_Get_Class_Key_Name_ExW( + IN LPGUID ClassGuid, + OUT LPWSTR pszKeyName, + IN OUT PULONG pulLength, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +#ifdef UNICODE +#define CM_Get_Class_Key_Name CM_Get_Class_Key_NameW +#define CM_Get_Class_Key_Name_Ex CM_Get_Class_Key_Name_ExW +#else +#define CM_Get_Class_Key_Name CM_Get_Class_Key_NameA +#define CM_Get_Class_Key_Name_Ex CM_Get_Class_Key_Name_ExA +#endif /* UNICODE */ + +/* FIXME: Obsolete CM_Get_Class_Registry_Property */ + +CMAPI +CONFIGRET +WINAPI +CM_Get_Depth( + OUT PULONG pulDepth, + IN DEVINST dnDevInst, + IN ULONG ulFlags); + +CMAPI +CONFIGRET +WINAPI +CM_Get_Depth_Ex( + OUT PULONG pulDepth, + IN DEVINST dnDevInst, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +CMAPI +CONFIGRET +WINAPI +CM_Get_Device_IDA( + IN DEVINST dnDevInst, + OUT PCHAR Buffer, + IN ULONG BufferLen, + IN ULONG ulFlags); + +CMAPI +CONFIGRET +WINAPI +CM_Get_Device_ID_ExA( + IN DEVINST dnDevInst, + OUT PCHAR Buffer, + IN ULONG BufferLen, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +CMAPI +CONFIGRET +WINAPI +CM_Get_Device_ID_ExW( + IN DEVINST dnDevInst, + OUT PWCHAR Buffer, + IN ULONG BufferLen, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +CMAPI +CONFIGRET +WINAPI +CM_Get_Device_IDW( + IN DEVINST dnDevInst, + OUT PWCHAR Buffer, + IN ULONG BufferLen, + IN ULONG ulFlags); + +#ifdef UNICODE +#define CM_Get_Device_ID CM_Get_Device_IDW +#define CM_Get_Device_ID_Ex CM_Get_Device_ID_ExW +#else +#define CM_Get_Device_ID CM_Get_Device_IDA +#define CM_Get_Device_ID_Ex CM_Get_Device_ID_ExA +#endif /* UNICODE */ + +CMAPI +CONFIGRET +WINAPI +CM_Get_Device_ID_ListA( + IN PCSTR pszFilter, OPTIONAL + OUT PCHAR Buffer, + IN ULONG BufferLen, + IN ULONG ulFlags); + +CMAPI +CONFIGRET +WINAPI +CM_Get_Device_ID_List_ExA( + IN PCSTR pszFilter, OPTIONAL + OUT PCHAR Buffer, + IN ULONG BufferLen, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +CMAPI +CONFIGRET +WINAPI +CM_Get_Device_ID_List_ExW( + IN PCWSTR pszFilter, OPTIONAL + OUT PWCHAR Buffer, + IN ULONG BufferLen, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +CMAPI +CONFIGRET +WINAPI +CM_Get_Device_ID_ListW( + IN PCWSTR pszFilter, OPTIONAL + OUT PWCHAR Buffer, + IN ULONG BufferLen, + IN ULONG ulFlags); + +#ifdef UNICODE +#define CM_Get_Device_ID_List CM_Get_Device_ID_ListW +#define CM_Get_Device_ID_List_Ex CM_Get_Device_ID_List_ExW +#else +#define CM_Get_Device_ID_List CM_Get_Device_ID_ListA +#define CM_Get_Device_ID_List_Ex CM_Get_Device_ID_List_ExA +#endif /* UNICODE */ + +CMAPI +CONFIGRET +WINAPI +CM_Get_Device_ID_List_SizeA( + OUT PULONG pulLen, + IN PCSTR pszFilter, OPTIONAL + IN ULONG ulFlags); + +CMAPI +CONFIGRET +WINAPI +CM_Get_Device_ID_List_Size_ExA( + OUT PULONG pulLen, + IN PCSTR pszFilter, OPTIONAL + IN ULONG ulFlags, + IN HMACHINE hMachine); + +CMAPI +CONFIGRET +WINAPI +CM_Get_Device_ID_List_Size_ExW( + OUT PULONG pulLen, + IN PCWSTR pszFilter, OPTIONAL + IN ULONG ulFlags, + IN HMACHINE hMachine); + +CMAPI +CONFIGRET +WINAPI +CM_Get_Device_ID_List_SizeW( + OUT PULONG pulLen, + IN PCWSTR pszFilter, OPTIONAL + IN ULONG ulFlags); + +#ifdef UNICODE +#define CM_Get_Device_ID_List_Size CM_Get_Device_ID_List_SizeW +#define CM_Get_Device_ID_List_Size_Ex CM_Get_Device_ID_List_Size_ExW +#else +#define CM_Get_Device_ID_List_Size CM_Get_Device_ID_List_SizeA +#define CM_Get_Device_ID_List_Size_Ex CM_Get_Device_ID_List_Size_ExA +#endif /* UNICODE */ + +CMAPI +CONFIGRET +WINAPI +CM_Get_Device_ID_Size( + OUT PULONG pulLen, + IN DEVINST dnDevInst, + IN ULONG ulFlags); + +CMAPI +CONFIGRET +WINAPI +CM_Get_Device_ID_Size_Ex( + OUT PULONG pulLen, + IN DEVINST dnDevInst, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +/* FIXME: Obsolete CM_Get_Device_Interface_Alias */ +/* FIXME: Obsolete CM_Get_Device_Interface_Alias_Ex */ +/* FIXME: Obsolete CM_Get_Device_Interface_List */ +/* FIXME: Obsolete CM_Get_Device_Interface_List_Ex */ +/* FIXME: Obsolete CM_Get_Device_Interface_List_Size */ +/* FIXME: Obsolete CM_Get_Device_Interface_List_Size_Ex */ +/* FIXME: Obsolete CM_Get_DevNode_Custom_Property */ +/* FIXME: Obsolete CM_Get_DevNode_Custom_Property_Ex */ + +CMAPI +CONFIGRET +WINAPI +CM_Get_DevNode_Registry_PropertyA( + IN DEVINST dnDevInst, + IN ULONG ulProperty, + OUT PULONG pulRegDataType, OPTIONAL + OUT PVOID Buffer, OPTIONAL + IN OUT PULONG pulLength, + IN ULONG ulFlags); + +CMAPI +CONFIGRET +WINAPI +CM_Get_DevNode_Registry_PropertyW( + IN DEVINST dnDevInst, + IN ULONG ulProperty, + OUT PULONG pulRegDataType, OPTIONAL + OUT PVOID Buffer, OPTIONAL + IN OUT PULONG pulLength, + IN ULONG ulFlags); + +CMAPI +CONFIGRET +WINAPI +CM_Get_DevNode_Registry_Property_ExA( + IN DEVINST dnDevInst, + IN ULONG ulProperty, + OUT PULONG pulRegDataType, OPTIONAL + OUT PVOID Buffer, OPTIONAL + IN OUT PULONG pulLength, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +CMAPI +CONFIGRET +WINAPI +CM_Get_DevNode_Registry_Property_ExW( + IN DEVINST dnDevInst, + IN ULONG ulProperty, + OUT PULONG pulRegDataType, OPTIONAL + OUT PVOID Buffer, OPTIONAL + IN OUT PULONG pulLength, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +#define CM_Get_DevInst_Registry_PropertyW CM_Get_DevNode_Registry_PropertyW +#define CM_Get_DevInst_Registry_PropertyA CM_Get_DevNode_Registry_PropertyA +#define CM_Get_DevInst_Registry_Property_ExW CM_Get_DevNode_Registry_Property_ExW +#define CM_Get_DevInst_Registry_Property_ExA CM_Get_DevNode_Registry_Property_ExA + +#ifdef UNICODE +#define CM_Get_DevInst_Registry_Property CM_Get_DevNode_Registry_PropertyW +#define CM_Get_DevInst_Registry_Property_Ex CM_Get_DevNode_Registry_Property_ExW +#define CM_Get_DevNode_Registry_Property CM_Get_DevNode_Registry_PropertyW +#define CM_Get_DevNode_Registry_Property_Ex CM_Get_DevNode_Registry_Property_ExW +#else +#define CM_Get_DevInst_Registry_Property CM_Get_DevNode_Registry_PropertyA +#define CM_Get_DevInst_Registry_Property_Ex CM_Get_DevNode_Registry_Property_ExA +#define CM_Get_DevNode_Registry_Property CM_Get_DevNode_Registry_PropertyA +#define CM_Get_DevNode_Registry_Property_Ex CM_Get_DevNode_Registry_Property_ExA +#endif /* UNICODE */ + +CMAPI +CONFIGRET +WINAPI +CM_Get_DevNode_Status( + OUT PULONG pulStatus, + OUT PULONG pulProblemNumber, + IN DEVINST dnDevInst, + IN ULONG ulFlags); + +CMAPI +CONFIGRET +WINAPI +CM_Get_DevNode_Status_Ex( + OUT PULONG pulStatus, + OUT PULONG pulProblemNumber, + IN DEVINST dnDevInst, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +#define CM_Get_DevInst_Status CM_Get_DevNode_Status +#define CM_Get_DevInst_Status_Ex CM_Get_DevNode_Status_Ex + +/* CM_Get_First_Log_Conf.ulFlags constants */ +#define BASIC_LOG_CONF 0x00000000 /* Specifies the req list. */ +#define FILTERED_LOG_CONF 0x00000001 /* Specifies the filtered req list. */ +#define ALLOC_LOG_CONF 0x00000002 /* Specifies the Alloc Element. */ +#define BOOT_LOG_CONF 0x00000003 /* Specifies the RM Alloc Element. */ +#define FORCED_LOG_CONF 0x00000004 /* Specifies the Forced Log Conf */ +#define OVERRIDE_LOG_CONF 0x00000005 /* Specifies the Override req list. */ +#define NUM_LOG_CONF 0x00000006 /* Number of Log Conf type */ +#define LOG_CONF_BITS 0x00000007 /* The bits of the log conf type. */ + +CMAPI +CONFIGRET +WINAPI +CM_Get_First_Log_Conf( + OUT PLOG_CONF plcLogConf, OPTIONAL + IN DEVINST dnDevInst, + IN ULONG ulFlags); + +CMAPI +CONFIGRET +WINAPI +CM_Get_First_Log_Conf_Ex( + OUT PLOG_CONF plcLogConf, OPTIONAL + IN DEVINST dnDevInst, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +CMAPI +CONFIGRET +WINAPI +CM_Get_Global_State( + OUT PULONG pulState, + IN ULONG ulFlags); + +CMAPI +CONFIGRET +WINAPI +CM_Get_Global_State_Ex( + OUT PULONG pulState, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +/* FIXME: Obsolete CM_Get_Hardware_Profile_Info */ +/* FIXME: Obsolete CM_Get_Hardware_Profile_Info_Ex */ + +CMAPI +CONFIGRET +WINAPI +CM_Get_HW_Prof_FlagsA( + IN DEVINSTID_A szDevInstName, + IN ULONG ulHardwareProfile, + OUT PULONG pulValue, + IN ULONG ulFlags); + +CMAPI +CONFIGRET +WINAPI +CM_Get_HW_Prof_FlagsW( + IN DEVINSTID_W szDevInstName, + IN ULONG ulHardwareProfile, + OUT PULONG pulValue, + IN ULONG ulFlags); + +CMAPI +CONFIGRET +WINAPI +CM_Get_HW_Prof_Flags_ExA( + IN DEVINSTID_A szDevInstName, + IN ULONG ulHardwareProfile, + OUT PULONG pulValue, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +CMAPI +CONFIGRET +WINAPI +CM_Get_HW_Prof_Flags_ExW( + IN DEVINSTID_W szDevInstName, + IN ULONG ulHardwareProfile, + OUT PULONG pulValue, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +#ifdef UNICODE +#define CM_Get_HW_Prof_Flags CM_Get_HW_Prof_FlagsW +#define CM_Get_HW_Prof_Flags_Ex CM_Get_HW_Prof_Flags_ExW +#else +#define CM_Get_HW_Prof_Flags CM_Get_HW_Prof_FlagsA +#define CM_Get_HW_Prof_Flags_Ex CM_Get_HW_Prof_Flags_ExA +#endif /* UNICODE */ + +CMAPI +CONFIGRET +WINAPI +CM_Get_Log_Conf_Priority( + IN LOG_CONF lcLogConf, + OUT PPRIORITY pPriority, + IN ULONG ulFlags); + +CMAPI +CONFIGRET +WINAPI +CM_Get_Log_Conf_Priority_Ex( + IN LOG_CONF lcLogConf, + OUT PPRIORITY pPriority, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +CMAPI +CONFIGRET +WINAPI +CM_Get_Next_Log_Conf( + OUT PLOG_CONF plcLogConf, OPTIONAL + IN LOG_CONF lcLogConf, + IN ULONG ulFlags); + +CMAPI +CONFIGRET +WINAPI +CM_Get_Next_Log_Conf_Ex( + OUT PLOG_CONF plcLogConf, OPTIONAL + IN LOG_CONF lcLogConf, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +CMAPI +CONFIGRET +WINAPI +CM_Get_Next_Res_Des( + OUT PRES_DES prdResDes, + IN RES_DES rdResDes, + IN RESOURCEID ForResource, + OUT PRESOURCEID pResourceID, + IN ULONG ulFlags); + +CMAPI +CONFIGRET +WINAPI +CM_Get_Next_Res_Des_Ex( + OUT PRES_DES prdResDes, + IN RES_DES rdResDes, + IN RESOURCEID ForResource, + OUT PRESOURCEID pResourceID, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +CMAPI +CONFIGRET +WINAPI +CM_Get_Parent( + OUT PDEVINST pdnDevInst, + IN DEVINST dnDevInst, + IN ULONG ulFlags); + +CMAPI +CONFIGRET +WINAPI +CM_Get_Parent_Ex( + OUT PDEVINST pdnDevInst, + IN DEVINST dnDevInst, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +CMAPI +CONFIGRET +WINAPI +CM_Get_Res_Des_Data( + IN RES_DES rdResDes, + OUT PVOID Buffer, + IN ULONG BufferLen, + IN ULONG ulFlags); + +CMAPI +CONFIGRET +WINAPI +CM_Get_Res_Des_Data_Ex( + IN RES_DES rdResDes, + OUT PVOID Buffer, + IN ULONG BufferLen, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +CMAPI +CONFIGRET +WINAPI +CM_Get_Res_Des_Data_Size( + OUT PULONG pulSize, + IN RES_DES rdResDes, + IN ULONG ulFlags); + +CMAPI +CONFIGRET +WINAPI +CM_Get_Res_Des_Data_Size_Ex( + OUT PULONG pulSize, + IN RES_DES rdResDes, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +CMAPI +CONFIGRET +WINAPI +CM_Get_Resource_Conflict_Count( + IN CONFLICT_LIST clConflictList, + OUT PULONG pulCount); + +CMAPI +CONFIGRET +WINAPI +CM_Get_Resource_Conflict_DetailsA( + IN CONFLICT_LIST clConflictList, + IN ULONG ulIndex, + IN OUT PCONFLICT_DETAILS_A pConflictDetails); + +CMAPI +CONFIGRET +WINAPI +CM_Get_Resource_Conflict_DetailsW( + IN CONFLICT_LIST clConflictList, + IN ULONG ulIndex, + IN OUT PCONFLICT_DETAILS_W pConflictDetails); + +#ifdef UNICODE +#define CM_Get_Resource_Conflict_Details CM_Get_Resource_Conflict_DetailsW +#else +#define CM_Get_Resource_Conflict_Details CM_Get_Resource_Conflict_DetailsA +#endif /* UNICODE */ + +CMAPI +CONFIGRET +WINAPI +CM_Get_Sibling( + OUT PDEVINST pdnDevInst, + IN DEVINST DevInst, + IN ULONG ulFlags); + +CMAPI +CONFIGRET +WINAPI +CM_Get_Sibling_Ex( + OUT PDEVINST pdnDevInst, + IN DEVINST DevInst, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +CMAPI +WORD +WINAPI +CM_Get_Version( + VOID); + +CMAPI +WORD +WINAPI +CM_Get_Version_Ex( + IN HMACHINE hMachine); + +/* FIXME: Obsolete CM_Intersect_Range_List */ +/* FIXME: Obsolete CM_Invert_Range_List */ + +CMAPI +CONFIGRET +WINAPI +CM_Is_Dock_Station_Present( + OUT PBOOL pbPresent); + +CMAPI +CONFIGRET +WINAPI +CM_Is_Dock_Station_Present_Ex( + OUT PBOOL pbPresent, + IN HMACHINE hMachine); + +/* CM_Locate_DevNode.ulFlags constants */ +#define CM_LOCATE_DEVNODE_NORMAL 0x00000000 +#define CM_LOCATE_DEVNODE_PHANTOM 0x00000001 +#define CM_LOCATE_DEVNODE_CANCELREMOVE 0x00000002 +#define CM_LOCATE_DEVNODE_NOVALIDATION 0x00000004 +#define CM_LOCATE_DEVNODE_BITS 0x00000007 + +#define CM_LOCATE_DEVINST_NORMAL CM_LOCATE_DEVNODE_NORMAL +#define CM_LOCATE_DEVINST_PHANTOM CM_LOCATE_DEVNODE_PHANTOM +#define CM_LOCATE_DEVINST_CANCELREMOVE CM_LOCATE_DEVNODE_CANCELREMOVE +#define CM_LOCATE_DEVINST_NOVALIDATION CM_LOCATE_DEVNODE_NOVALIDATION +#define CM_LOCATE_DEVINST_BITS CM_LOCATE_DEVNODE_BITS + +CMAPI +CONFIGRET +WINAPI +CM_Locate_DevNodeA( + OUT PDEVINST pdnDevInst, + IN DEVINSTID_A pDeviceID, OPTIONAL + IN ULONG ulFlags); + +CMAPI +CONFIGRET +WINAPI +CM_Locate_DevNode_ExA( + OUT PDEVINST pdnDevInst, + IN DEVINSTID_A pDeviceID, OPTIONAL + IN ULONG ulFlags, + IN HMACHINE hMachine); + +CMAPI +CONFIGRET +WINAPI +CM_Locate_DevNode_ExW( + OUT PDEVINST pdnDevInst, + IN DEVINSTID_W pDeviceID, OPTIONAL + IN ULONG ulFlags, + IN HMACHINE hMachine); + +CMAPI +CONFIGRET +WINAPI +CM_Locate_DevNodeW( + OUT PDEVINST pdnDevInst, + IN DEVINSTID_W pDeviceID, OPTIONAL + IN ULONG ulFlags); + +#define CM_Locate_DevInstA CM_Locate_DevNodeA +#define CM_Locate_DevInstW CM_Locate_DevNodeW +#define CM_Locate_DevInst_ExA CM_Locate_DevNode_ExA +#define CM_Locate_DevInst_ExW CM_Locate_DevNode_ExW + +#ifdef UNICODE +#define CM_Locate_DevNode CM_Locate_DevNodeW +#define CM_Locate_DevInst CM_Locate_DevNodeW +#define CM_Locate_DevNode_Ex CM_Locate_DevNode_ExW +#define CM_Locate_DevInst_Ex CM_Locate_DevNode_ExW +#else +#define CM_Locate_DevNode CM_Locate_DevNodeA +#define CM_Locate_DevInst CM_Locate_DevNodeA +#define CM_Locate_DevNode_Ex CM_Locate_DevNode_ExA +#define CM_Locate_DevInst_Ex CM_Locate_DevNode_ExA +#endif /* UNICODE */ + +/* FIXME: Obsolete CM_Merge_Range_List */ + +CMAPI +CONFIGRET +WINAPI +CM_Modify_Res_Des( + OUT PRES_DES prdResDes, + IN RES_DES rdResDes, + IN RESOURCEID ResourceID, + IN PCVOID ResourceData, + IN ULONG ResourceLen, + IN ULONG ulFlags); + +CMAPI +CONFIGRET +WINAPI +CM_Modify_Res_Des_Ex( + OUT PRES_DES prdResDes, + IN RES_DES rdResDes, + IN RESOURCEID ResourceID, + IN PCVOID ResourceData, + IN ULONG ResourceLen, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +/* FIXME: Obsolete CM_Move_DevNode */ +/* FIXME: Obsolete CM_Move_DevNode_Ex */ +/* FIXME: Obsolete CM_Next_Range */ + +CMAPI +CONFIGRET +WINAPI +CM_Open_Class_KeyA( + IN LPGUID ClassGuid, OPTIONAL + IN LPCSTR pszClassName, OPTIONAL + IN REGSAM samDesired, + IN REGDISPOSITION Disposition, + OUT PHKEY phkClass, + IN ULONG ulFlags); + +CMAPI +CONFIGRET +WINAPI +CM_Open_Class_KeyW( + IN LPGUID ClassGuid, OPTIONAL + IN LPCWSTR pszClassName, OPTIONAL + IN REGSAM samDesired, + IN REGDISPOSITION Disposition, + OUT PHKEY phkClass, + IN ULONG ulFlags); + +CMAPI +CONFIGRET +WINAPI +CM_Open_Class_Key_ExA( + IN LPGUID pszClassGuid, OPTIONAL + IN LPCSTR pszClassName, OPTIONAL + IN REGSAM samDesired, + IN REGDISPOSITION Disposition, + OUT PHKEY phkClass, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +CMAPI +CONFIGRET +WINAPI +CM_Open_Class_Key_ExW( + IN LPGUID pszClassGuid, OPTIONAL + IN LPCWSTR pszClassName, OPTIONAL + IN REGSAM samDesired, + IN REGDISPOSITION Disposition, + OUT PHKEY phkClass, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +#ifdef UNICODE +#define CM_Open_Class_Key CM_Open_Class_KeyW +#define CM_Open_Class_Key_Ex CM_Open_Class_Key_ExW +#else +#define CM_Open_Class_Key CM_Open_Class_KeyA +#define CM_Open_Class_Key_Ex CM_Open_Class_Key_ExA +#endif /* UNICODE */ + +CMAPI +CONFIGRET +WINAPI +CM_Open_DevNode_Key( + IN DEVINST dnDevNode, + IN REGSAM samDesired, + IN ULONG ulHardwareProfile, + IN REGDISPOSITION Disposition, + OUT PHKEY phkDevice, + IN ULONG ulFlags); + +CMAPI +CONFIGRET +WINAPI +CM_Open_DevNode_Key_Ex( + IN DEVINST dnDevNode, + IN REGSAM samDesired, + IN ULONG ulHardwareProfile, + IN REGDISPOSITION Disposition, + OUT PHKEY phkDevice, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +#define CM_Open_DevInst_Key CM_Open_DevNode_Key +#define CM_Open_DevInst_Key_Ex CM_Open_DevNode_Key_Ex + +/* CM_Query_And_Remove_SubTree.ulFlags constants */ +#define CM_REMOVE_UI_OK 0x00000000 +#define CM_REMOVE_UI_NOT_OK 0x00000001 +#define CM_REMOVE_NO_RESTART 0x00000002 +#define CM_REMOVE_BITS 0x00000003 + +CMAPI +CONFIGRET +WINAPI +CM_Query_And_Remove_SubTreeA( + IN DEVINST dnAncestor, + OUT PPNP_VETO_TYPE pVetoType, + OUT LPSTR pszVetoName, + IN ULONG ulNameLength, + IN ULONG ulFlags); + +CMAPI +CONFIGRET +WINAPI +CM_Query_And_Remove_SubTreeW( + IN DEVINST dnAncestor, + OUT PPNP_VETO_TYPE pVetoType, + OUT LPWSTR pszVetoName, + IN ULONG ulNameLength, + IN ULONG ulFlags); + +CMAPI +CONFIGRET +WINAPI +CM_Query_And_Remove_SubTree_ExA( + IN DEVINST dnAncestor, + OUT PPNP_VETO_TYPE pVetoType, + OUT LPSTR pszVetoName, + IN ULONG ulNameLength, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +CMAPI +CONFIGRET +WINAPI +CM_Query_And_Remove_SubTree_ExW( + IN DEVINST dnAncestor, + OUT PPNP_VETO_TYPE pVetoType, + OUT LPWSTR pszVetoName, + IN ULONG ulNameLength, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +/* FIXME: Obsolete CM_Query_Arbitrator_Free_Data */ +/* FIXME: Obsolete CM_Query_Arbitrator_Free_Data_Ex */ +/* FIXME: Obsolete CM_Query_Arbitrator_Free_Size */ +/* FIXME: Obsolete CM_Query_Arbitrator_Free_Size_Ex */ +/* FIXME: Obsolete CM_Query_Arbitrator_Free_Size_Ex */ +/* FIXME: Obsolete CM_Query_Remove_SubTree */ +/* FIXME: Obsolete CM_Query_Remove_SubTree_Ex */ + +CMAPI +CONFIGRET +WINAPI +CM_Query_Resource_Conflict_List( + OUT PCONFLICT_LIST pclConflictList, + IN DEVINST dnDevInst, + IN RESOURCEID ResourceID, + IN PCVOID ResourceData, + IN ULONG ResourceLen, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +/* CM_Reenumerate_DevNode.ulFlags constants */ +#define CM_REENUMERATE_NORMAL 0x00000000 +#define CM_REENUMERATE_SYNCHRONOUS 0x00000001 +#define CM_REENUMERATE_RETRY_INSTALLATION 0x00000002 +#define CM_REENUMERATE_ASYNCHRONOUS 0x00000004 +#define CM_REENUMERATE_BITS 0x00000007 + +CMAPI +CONFIGRET +WINAPI +CM_Reenumerate_DevNode( + IN DEVINST dnDevInst, + IN ULONG ulFlags); + +CMAPI +CONFIGRET +WINAPI +CM_Reenumerate_DevNode_Ex( + IN DEVINST dnDevInst, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +#define CM_Reenumerate_DevInst CM_Reenumerate_DevNode +#define CM_Reenumerate_DevInst_Ex CM_Reenumerate_DevNode_Ex + +/* FIXME: Obsolete CM_Register_Device_Driver */ +/* FIXME: Obsolete CM_Register_Device_Driver_Ex */ +/* FIXME: Obsolete CM_Register_Device_Interface */ +/* FIXME: Obsolete CM_Register_Device_Interface_Ex */ +/* FIXME: Obsolete CM_Remove_SubTree */ +/* FIXME: Obsolete CM_Remove_SubTree_Ex */ + +CMAPI +CONFIGRET +WINAPI +CM_Request_Device_EjectA( + IN DEVINST dnDevInst, + OUT PPNP_VETO_TYPE pVetoType, + OUT LPSTR pszVetoName, + IN ULONG ulNameLength, + IN ULONG ulFlags); + +CMAPI +CONFIGRET +WINAPI +CM_Request_Device_Eject_ExW( + IN DEVINST dnDevInst, + OUT PPNP_VETO_TYPE pVetoType, + OUT LPWSTR pszVetoName, + IN ULONG ulNameLength, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +CMAPI +CONFIGRET +WINAPI +CM_Request_Device_Eject_ExA( + IN DEVINST dnDevInst, + OUT PPNP_VETO_TYPE pVetoType, + OUT LPSTR pszVetoName, + IN ULONG ulNameLength, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +CMAPI +CONFIGRET +WINAPI +CM_Request_Device_EjectW( + IN DEVINST dnDevInst, + OUT PPNP_VETO_TYPE pVetoType, + OUT LPWSTR pszVetoName, + IN ULONG ulNameLength, + IN ULONG ulFlags); + +#ifdef UNICODE +#define CM_Request_Device_Eject CM_Request_Device_EjectW +#define CM_Request_Device_Eject_Ex CM_Request_Device_Eject_ExW +#else +#define CM_Request_Device_Eject CM_Request_Device_EjectA +#define CM_Request_Device_Eject_Ex CM_Request_Device_Eject_ExA +#endif /* UNICODE */ + +CMAPI +CONFIGRET +WINAPI +CM_Request_Eject_PC( + VOID); + +CMAPI +CONFIGRET +WINAPI +CM_Request_Eject_PC_Ex( + IN HMACHINE hMachine); + +/* CM_Run_Detection[_Ex].ulFlags constants */ +#define CM_DETECT_NEW_PROFILE 0x00000001 +#define CM_DETECT_CRASHED 0x00000002 +#define CM_DETECT_HWPROF_FIRST_BOOT 0x00000004 +#define CM_DETECT_RUN 0x80000000 +#define CM_DETECT_BITS 0x80000007 + +CMAPI +CONFIGRET +WINAPI +CM_Run_Detection( + IN ULONG ulFlags); + +CMAPI +CONFIGRET +WINAPI +CM_Run_Detection_Ex( + IN ULONG ulFlags, + IN HMACHINE hMachine); + +/* FIXME: Obsolete CM_Set_Class_Registry_Property */ + +CMAPI +CONFIGRET +WINAPI +CM_Set_DevNode_Problem( + IN DEVINST dnDevInst, + IN ULONG ulProblem, + IN ULONG ulFlags); + +CMAPI +CONFIGRET +WINAPI +CM_Set_DevNode_Problem_Ex( + IN DEVINST dnDevInst, + IN ULONG ulProblem, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +#define CM_Set_DevInst_Problem CM_Set_DevNode_Problem +#define CM_Set_DevInst_Problem_Ex CM_Set_DevNode_Problem_Ex + +CMAPI +CONFIGRET +WINAPI +CM_Set_DevNode_Registry_PropertyA( + IN DEVINST dnDevInst, + IN ULONG ulProperty, + IN PCVOID Buffer, OPTIONAL + IN ULONG ulLength, + IN ULONG ulFlags); + +CMAPI +CONFIGRET +WINAPI +CM_Set_DevNode_Registry_PropertyW( + IN DEVINST dnDevInst, + IN ULONG ulProperty, + IN PCVOID Buffer, OPTIONAL + IN ULONG ulLength, + IN ULONG ulFlags); + +CMAPI +CONFIGRET +WINAPI +CM_Set_DevNode_Registry_Property_ExA( + IN DEVINST dnDevInst, + IN ULONG ulProperty, + IN PCVOID Buffer, OPTIONAL + IN ULONG ulLength, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +CMAPI +CONFIGRET +WINAPI +CM_Set_DevNode_Registry_Property_ExW( + IN DEVINST dnDevInst, + IN ULONG ulProperty, + IN PCVOID Buffer, OPTIONAL + IN ULONG ulLength, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +#define CM_Set_DevInst_Registry_PropertyW CM_Set_DevNode_Registry_PropertyW +#define CM_Set_DevInst_Registry_PropertyA CM_Set_DevNode_Registry_PropertyA +#define CM_Set_DevInst_Registry_Property_ExW CM_Set_DevNode_Registry_Property_ExW +#define CM_Set_DevInst_Registry_Property_ExA CM_Set_DevNode_Registry_Property_ExA + +#ifdef UNICODE +#define CM_Set_DevInst_Registry_Property CM_Set_DevNode_Registry_PropertyW +#define CM_Set_DevInst_Registry_Property_Ex CM_Set_DevNode_Registry_Property_ExW +#define CM_Set_DevNode_Registry_Property CM_Set_DevNode_Registry_PropertyW +#define CM_Set_DevNode_Registry_Property_Ex CM_Set_DevNode_Registry_Property_ExW +#else +#define CM_Set_DevInst_Registry_Property CM_Set_DevNode_Registry_PropertyA +#define CM_Set_DevInst_Registry_Property_Ex CM_Set_DevNode_Registry_Property_ExA +#define CM_Set_DevNode_Registry_Property CM_Set_DevNode_Registry_PropertyA +#define CM_Set_DevNode_Registry_Property_Ex CM_Set_DevNode_Registry_Property_ExA +#endif /* UNICODE */ + +CMAPI +CONFIGRET +WINAPI +CM_Set_HW_Prof( + IN ULONG ulHardwareProfile, + IN ULONG ulFlags); + +CMAPI +CONFIGRET +WINAPI +CM_Set_HW_Prof_Ex( + IN ULONG ulHardwareProfile, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +/* CM_Set_HW_Prof_Flags[_Ex].ulFlags constants */ +#define CM_SET_HW_PROF_FLAGS_UI_NOT_OK (0x00000001) +#define CM_SET_HW_PROF_FLAGS_BITS (0x00000001) + +CMAPI +CONFIGRET +WINAPI +CM_Set_HW_Prof_FlagsA( + IN DEVINSTID_A szDevInstName, + IN ULONG ulConfig, + IN ULONG ulValue, + IN ULONG ulFlags); + +CMAPI +CONFIGRET +WINAPI +CM_Set_HW_Prof_FlagsW( + IN DEVINSTID_W szDevInstName, + IN ULONG ulConfig, + IN ULONG ulValue, + IN ULONG ulFlags); + +CMAPI +CONFIGRET +WINAPI +CM_Set_HW_Prof_Flags_ExA( + IN DEVINSTID_A szDevInstName, + IN ULONG ulConfig, + IN ULONG ulValue, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +CMAPI +CONFIGRET +WINAPI +CM_Set_HW_Prof_Flags_ExW( + IN DEVINSTID_W szDevInstName, + IN ULONG ulConfig, + IN ULONG ulValue, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +#ifdef UNICODE +#define CM_Set_HW_Prof_Flags CM_Set_HW_Prof_FlagsW +#define CM_Set_HW_Prof_Flags_Ex CM_Set_HW_Prof_Flags_ExW +#else +#define CM_Set_HW_Prof_Flags CM_Set_HW_Prof_FlagsA +#define CM_Set_HW_Prof_Flags_Ex CM_Set_HW_Prof_Flags_ExA +#endif /* UNICODE */ + +/* CM_Setup_DevInst[_Ex].ulFlags constants */ +#define CM_SETUP_DEVNODE_READY (0x00000000) +#define CM_SETUP_DEVINST_READY CM_SETUP_DEVNODE_READY +#define CM_SETUP_DOWNLOAD (0x00000001) +#define CM_SETUP_WRITE_LOG_CONFS (0x00000002) +#define CM_SETUP_PROP_CHANGE (0x00000003) +#define CM_SETUP_DEVNODE_RESET (0x00000004) +#define CM_SETUP_DEVINST_RESET CM_SETUP_DEVNODE_RESET +#define CM_SETUP_BITS (0x00000007) + +CMAPI +CONFIGRET +WINAPI +CM_Setup_DevNode( + IN DEVINST dnDevInst, + IN ULONG ulFlags); + +CMAPI +CONFIGRET +WINAPI +CM_Setup_DevNode_Ex( + IN DEVINST dnDevInst, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +/* FIXME: Obsolete CM_Test_Range_Available */ + +CMAPI +CONFIGRET +WINAPI +CM_Uninstall_DevNode( + IN DEVINST dnPhantom, + IN ULONG ulFlags); + +CMAPI +CONFIGRET +WINAPI +CM_Uninstall_DevNode_Ex( + IN DEVINST dnPhantom, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +/* FIXME: Obsolete CM_Unregister_Device_Interface */ +/* FIXME: Obsolete CM_Unregister_Device_Interface_Ex */ + +#define CM_WaitNoPendingInstallEvents CMP_WaitNoPendingInstallEvents + +CMAPI +DWORD +WINAPI +CMP_WaitNoPendingInstallEvents( + IN DWORD dwTimeout); + +#include + +#ifdef __cplusplus +} +#endif + +#endif /* _CFGMGR32_H_ */ diff --git a/reactos/include/ddk/csq.h b/reactos/include/ddk/csq.h index cf7b2c14ce3..99056f610a8 100644 --- a/reactos/include/ddk/csq.h +++ b/reactos/include/ddk/csq.h @@ -229,11 +229,9 @@ typedef struct _IO_CSQ_IRP_CONTEXT { } * */ -#ifndef IO_TYPE_CSQ_EX typedef NTSTATUS (NTAPI *PIO_CSQ_INSERT_IRP_EX) (struct _IO_CSQ *Csq, PIRP Irp, PVOID InsertContext); -#endif /* * CANCEL-SAFE QUEUE DDIs diff --git a/reactos/include/ddk/hidclass.h b/reactos/include/ddk/hidclass.h index c93bfb4a525..f269c03f4a2 100644 --- a/reactos/include/ddk/hidclass.h +++ b/reactos/include/ddk/hidclass.h @@ -98,11 +98,11 @@ enum DeviceObjectState { DeviceObjectRemoved }; -typedef VOID (NTAPI *PHID_STATUS_CHANGE)( +typedef VOID (DDKAPI *PHID_STATUS_CHANGE)( PVOID Context, enum DeviceObjectState State); -typedef NTSTATUS (NTAPI *PHIDP_GETCAPS)( +typedef NTSTATUS (DDKAPI *PHIDP_GETCAPS)( IN PHIDP_PREPARSED_DATA PreparsedData, OUT PHIDP_CAPS Capabilities); diff --git a/reactos/include/ddk/hidpi.h b/reactos/include/ddk/hidpi.h index ca6d89141f8..63d3cf1f936 100644 --- a/reactos/include/ddk/hidpi.h +++ b/reactos/include/ddk/hidpi.h @@ -69,7 +69,7 @@ typedef struct _HIDP_KEYBOARD_MODIFIER_STATE { } DUMMYUNIONNAME; } HIDP_KEYBOARD_MODIFIER_STATE, *PHIDP_KEYBOARD_MODIFIER_STATE; -typedef BOOLEAN (NTAPI *PHIDP_INSERT_SCANCODES)( +typedef BOOLEAN (DDKAPI *PHIDP_INSERT_SCANCODES)( IN PVOID Context, IN PCHAR NewScanCodes, IN ULONG Length); @@ -94,7 +94,7 @@ typedef struct _HIDD_CONFIGURATION { HIDAPI NTSTATUS -NTAPI +DDKAPI HidP_TranslateUsageAndPagesToI8042ScanCodes( IN PUSAGE_AND_PAGE ChangedUsageList, IN ULONG UsageListLength, @@ -105,7 +105,7 @@ HidP_TranslateUsageAndPagesToI8042ScanCodes( HIDAPI NTSTATUS -NTAPI +DDKAPI HidP_TranslateUsagesToI8042ScanCodes( IN PUSAGE ChangedUsageList, IN ULONG UsageListLength, @@ -313,14 +313,14 @@ typedef enum _HIDP_REPORT_TYPE { HIDAPI NTSTATUS -NTAPI +DDKAPI HidP_GetCaps( IN PHIDP_PREPARSED_DATA PreparsedData, OUT PHIDP_CAPS Capabilities); HIDAPI NTSTATUS -NTAPI +DDKAPI HidP_GetData( IN HIDP_REPORT_TYPE ReportType, OUT PHIDP_DATA DataList, @@ -331,7 +331,7 @@ HidP_GetData( HIDAPI NTSTATUS -NTAPI +DDKAPI HidP_GetExtendedAttributes( IN HIDP_REPORT_TYPE ReportType, IN USHORT DataIndex, @@ -341,7 +341,7 @@ HidP_GetExtendedAttributes( HIDAPI NTSTATUS -NTAPI +DDKAPI HidP_GetLinkCollectionNodes( OUT PHIDP_LINK_COLLECTION_NODE LinkCollectionNodes, IN OUT PULONG LinkCollectionNodesLength, @@ -349,7 +349,7 @@ HidP_GetLinkCollectionNodes( HIDAPI NTSTATUS -NTAPI +DDKAPI HidP_GetScaledUsageValue( IN HIDP_REPORT_TYPE ReportType, IN USAGE UsagePage, @@ -362,7 +362,7 @@ HidP_GetScaledUsageValue( HIDAPI NTSTATUS -NTAPI +DDKAPI HidP_GetSpecificButtonCaps( IN HIDP_REPORT_TYPE ReportType, IN USAGE UsagePage, @@ -374,7 +374,7 @@ HidP_GetSpecificButtonCaps( HIDAPI NTSTATUS -NTAPI +DDKAPI HidP_GetSpecificValueCaps( IN HIDP_REPORT_TYPE ReportType, IN USAGE UsagePage, @@ -386,7 +386,7 @@ HidP_GetSpecificValueCaps( HIDAPI NTSTATUS -NTAPI +DDKAPI HidP_GetUsages( IN HIDP_REPORT_TYPE ReportType, IN USAGE UsagePage, @@ -399,7 +399,7 @@ HidP_GetUsages( HIDAPI NTSTATUS -NTAPI +DDKAPI HidP_GetUsagesEx( IN HIDP_REPORT_TYPE ReportType, IN USHORT LinkCollection, @@ -411,7 +411,7 @@ HidP_GetUsagesEx( HIDAPI NTSTATUS -NTAPI +DDKAPI HidP_GetUsageValue( IN HIDP_REPORT_TYPE ReportType, IN USAGE UsagePage, @@ -424,7 +424,7 @@ HidP_GetUsageValue( HIDAPI NTSTATUS -NTAPI +DDKAPI HidP_GetUsageValueArray( IN HIDP_REPORT_TYPE ReportType, IN USAGE UsagePage, @@ -453,7 +453,7 @@ HidP_GetUsageValueArray( HIDAPI NTSTATUS -NTAPI +DDKAPI HidP_InitializeReportForID( IN HIDP_REPORT_TYPE ReportType, IN UCHAR ReportID, @@ -475,14 +475,14 @@ HidP_InitializeReportForID( HIDAPI ULONG -NTAPI +DDKAPI HidP_MaxDataListLength( IN HIDP_REPORT_TYPE ReportType, IN PHIDP_PREPARSED_DATA PreparsedData); HIDAPI ULONG -NTAPI +DDKAPI HidP_MaxUsageListLength( IN HIDP_REPORT_TYPE ReportType, IN USAGE UsagePage OPTIONAL, @@ -509,7 +509,7 @@ HidP_MaxUsageListLength( HIDAPI NTSTATUS -NTAPI +DDKAPI HidP_SetData( IN HIDP_REPORT_TYPE ReportType, IN PHIDP_DATA DataList, @@ -520,7 +520,7 @@ HidP_SetData( HIDAPI NTSTATUS -NTAPI +DDKAPI HidP_SetScaledUsageValue( IN HIDP_REPORT_TYPE ReportType, IN USAGE UsagePage, @@ -533,7 +533,7 @@ HidP_SetScaledUsageValue( HIDAPI NTSTATUS -NTAPI +DDKAPI HidP_SetUsages( IN HIDP_REPORT_TYPE ReportType, IN USAGE UsagePage, @@ -546,7 +546,7 @@ HidP_SetUsages( HIDAPI NTSTATUS -NTAPI +DDKAPI HidP_SetUsageValue( IN HIDP_REPORT_TYPE ReportType, IN USAGE UsagePage, @@ -559,7 +559,7 @@ HidP_SetUsageValue( HIDAPI NTSTATUS -NTAPI +DDKAPI HidP_SetUsageValueArray( IN HIDP_REPORT_TYPE ReportType, IN USAGE UsagePage, @@ -592,7 +592,7 @@ HidP_SetUsageValueArray( HIDAPI NTSTATUS -NTAPI +DDKAPI HidP_UnsetUsages( IN HIDP_REPORT_TYPE ReportType, IN USAGE UsagePage, @@ -605,7 +605,7 @@ HidP_UnsetUsages( HIDAPI NTSTATUS -NTAPI +DDKAPI HidP_UsageAndPageListDifference( IN PUSAGE_AND_PAGE PreviousUsageList, IN PUSAGE_AND_PAGE CurrentUsageList, @@ -615,7 +615,7 @@ HidP_UsageAndPageListDifference( HIDAPI NTSTATUS -NTAPI +DDKAPI HidP_UsageListDifference( IN PUSAGE PreviousUsageList, IN PUSAGE CurrentUsageList, diff --git a/reactos/include/ddk/mcd.h b/reactos/include/ddk/mcd.h index eb3e5427bd4..cb4a1a4f032 100644 --- a/reactos/include/ddk/mcd.h +++ b/reactos/include/ddk/mcd.h @@ -51,7 +51,7 @@ extern "C" { CHANGERAPI PVOID -NTAPI +DDKAPI ChangerClassAllocatePool( IN POOL_TYPE PoolType, IN ULONG NumberOfBytes); @@ -64,13 +64,13 @@ ChangerClassDebugPrint( CHANGERAPI PVOID -NTAPI +DDKAPI ChangerClassFreePool( IN PVOID PoolToFree); CHANGERAPI NTSTATUS -NTAPI +DDKAPI ChangerClassSendSrbSynchronous( IN PDEVICE_OBJECT DeviceObject, IN PSCSI_REQUEST_BLOCK Srb, @@ -79,27 +79,27 @@ ChangerClassSendSrbSynchronous( IN BOOLEAN WriteToDevice); -typedef NTSTATUS NTAPI +typedef NTSTATUS DDKAPI (*CHANGER_INITIALIZE)( IN PDEVICE_OBJECT DeviceObject); -typedef ULONG NTAPI +typedef ULONG DDKAPI (*CHANGER_EXTENSION_SIZE)( VOID); -typedef VOID NTAPI +typedef VOID DDKAPI (*CHANGER_ERROR_ROUTINE)( PDEVICE_OBJECT DeviceObject, PSCSI_REQUEST_BLOCK Srb, NTSTATUS *Status, BOOLEAN *Retry); -typedef NTSTATUS NTAPI +typedef NTSTATUS DDKAPI (*CHANGER_COMMAND_ROUTINE)( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp); -typedef NTSTATUS NTAPI +typedef NTSTATUS DDKAPI (*CHANGER_PERFORM_DIAGNOSTICS)( IN PDEVICE_OBJECT DeviceObject, OUT PWMI_CHANGER_PROBLEM_DEVICE_ERROR ChangerDeviceError); @@ -125,7 +125,7 @@ typedef struct _MCD_INIT_DATA { CHANGERAPI NTSTATUS -NTAPI +DDKAPI ChangerClassInitialize( IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath, diff --git a/reactos/include/ddk/mce.h b/reactos/include/ddk/mce.h deleted file mode 100644 index e2d8407da10..00000000000 --- a/reactos/include/ddk/mce.h +++ /dev/null @@ -1,1074 +0,0 @@ -#pragma once - -#if defined(_X86_) || defined(_IA64_) || defined(_AMD64_) - -typedef union _MCI_ADDR { - struct { - ULONG Address; - ULONG Reserved; - } DUMMYSTRUCTNAME; - ULONGLONG QuadPart; -} MCI_ADDR, *PMCI_ADDR; - -typedef enum { - HAL_MCE_RECORD, - HAL_MCA_RECORD -} MCA_EXCEPTION_TYPE; - -#if defined(_AMD64_) - -#if (NTDDI_VERSION <= NTDDI_WINXP) - -typedef union _MCI_STATS { - struct { - USHORT McaCod; - USHORT ModelErrorCode; - ULONG OtherInfo:25; - ULONG Damage:1; - ULONG AddressValid:1; - ULONG MiscValid:1; - ULONG Enabled:1; - ULONG Uncorrected:1; - ULONG OverFlow:1; - ULONG Valid:1; - } MciStatus; - ULONG64 QuadPart; -} MCI_STATS, *PMCI_STATS; - -#else - -typedef union _MCI_STATS { - struct { - USHORT McaErrorCode; - USHORT ModelErrorCode; - ULONG OtherInformation:25; - ULONG ContextCorrupt:1; - ULONG AddressValid:1; - ULONG MiscValid:1; - ULONG ErrorEnabled:1; - ULONG UncorrectedError:1; - ULONG StatusOverFlow:1; - ULONG Valid:1; - } MciStatus; - ULONG64 QuadPart; -} MCI_STATS, *PMCI_STATS; - -#endif /* (NTDDI_VERSION <= NTDDI_WINXP) */ - -#endif /* defined(_AMD64_) */ - -#if defined(_X86_) -typedef union _MCI_STATS { - struct { - USHORT McaCod; - USHORT MsCod; - ULONG OtherInfo:25; - ULONG Damage:1; - ULONG AddressValid:1; - ULONG MiscValid:1; - ULONG Enabled:1; - ULONG UnCorrected:1; - ULONG OverFlow:1; - ULONG Valid:1; - } MciStats; - ULONGLONG QuadPart; -} MCI_STATS, *PMCI_STATS; -#endif - -#define MCA_EXTREG_V2MAX 24 - -#if defined(_X86_) || defined(_AMD64_) - -#if (NTDDI_VERSION >= NTDDI_WINXP) - -typedef struct _MCA_EXCEPTION { - ULONG VersionNumber; - MCA_EXCEPTION_TYPE ExceptionType; - LARGE_INTEGER TimeStamp; - ULONG ProcessorNumber; - ULONG Reserved1; - union { - struct { - UCHAR BankNumber; - UCHAR Reserved2[7]; - MCI_STATS Status; - MCI_ADDR Address; - ULONGLONG Misc; - } Mca; - struct { - ULONGLONG Address; - ULONGLONG Type; - } Mce; - } u; - ULONG ExtCnt; - ULONG Reserved3; - ULONGLONG ExtReg[MCA_EXTREG_V2MAX]; -} MCA_EXCEPTION, *PMCA_EXCEPTION; - -#else - -typedef struct _MCA_EXCEPTION { - ULONG VersionNumber; - MCA_EXCEPTION_TYPE ExceptionType; - LARGE_INTEGER TimeStamp; - ULONG ProcessorNumber; - ULONG Reserved1; - union { - struct { - UCHAR BankNumber; - UCHAR Reserved2[7]; - MCI_STATS Status; - MCI_ADDR Address; - ULONGLONG Misc; - } Mca; - struct { - ULONGLONG Address; - ULONGLONG Type; - } Mce; - } u; -} MCA_EXCEPTION, *PMCA_EXCEPTION; - -#endif /* (NTDDI_VERSION >= NTDDI_WINXP) */ - -typedef MCA_EXCEPTION CMC_EXCEPTION, *PCMC_EXCEPTION; -typedef MCA_EXCEPTION CPE_EXCEPTION, *PCPE_EXCEPTION; - -#if (NTDDI_VERSION >= NTDDI_WINXP) -#define MCA_EXCEPTION_V1_SIZE FIELD_OFFSET(MCA_EXCEPTION, ExtCnt) -#define MCA_EXCEPTION_V2_SIZE sizeof(struct _MCA_EXCEPTION) -#endif - -#endif /* defined(_X86_) || defined(_AMD64_) */ - -#if defined(_AMD64_) || defined(_IA64_) - -typedef UCHAR ERROR_SEVERITY, *PERROR_SEVERITY; - -typedef enum _ERROR_SEVERITY_VALUE { - ErrorRecoverable = 0, - ErrorFatal = 1, - ErrorCorrected = 2, - ErrorOthers = 3, -} ERROR_SEVERITY_VALUE; - -#endif - -#if defined(_IA64_) - -typedef union _ERROR_REVISION { - USHORT Revision; - struct { - UCHAR Minor; - UCHAR Major; - } DUMMYSTRUCTNAME; -} ERROR_REVISION, *PERROR_REVISION; - -#if (NTDDI_VERSION > NTDDI_WINXP) -#define ERROR_MAJOR_REVISION_SAL_03_00 0 -#define ERROR_MINOR_REVISION_SAL_03_00 2 -#define ERROR_REVISION_SAL_03_00 {ERROR_MINOR_REVISION_SAL_03_00,ERROR_MAJOR_REVISION_SAL_03_00} -#define ERROR_FIXED_SECTION_REVISION {2,0} -#else -#define ERROR_REVISION_SAL_03_00 {2,0} -#endif /* (NTDDI_VERSION > NTDDI_WINXP) */ - -typedef union _ERROR_TIMESTAMP { - ULONGLONG TimeStamp; - struct { - UCHAR Seconds; - UCHAR Minutes; - UCHAR Hours; - UCHAR Reserved; - UCHAR Day; - UCHAR Month; - UCHAR Year; - UCHAR Century; - } DUMMYSTRUCTNAME; -} ERROR_TIMESTAMP, *PERROR_TIMESTAMP; - -typedef struct _ERROR_GUID { - ULONG Data1; - USHORT Data2; - USHORT Data3; - UCHAR Data4[8]; -} ERROR_GUID, *PERROR_GUID; - -typedef ERROR_GUID _ERROR_DEVICE_GUID; -typedef _ERROR_DEVICE_GUID ERROR_DEVICE_GUID, *PERROR_DEVICE_GUID; - -typedef ERROR_GUID _ERROR_PLATFORM_GUID; -typedef _ERROR_PLATFORM_GUID ERROR_PLATFORM_GUID, *PERROR_PLATFORM_GUID; - -typedef union _ERROR_RECORD_VALID { - UCHAR Valid; - struct { - UCHAR OemPlatformID:1; - UCHAR Reserved:7; - } DUMMYSTRUCTNAME; -} ERROR_RECORD_VALID, *PERROR_RECORD_VALID; - -typedef struct _ERROR_RECORD_HEADER { - ULONGLONG Id; - ERROR_REVISION Revision; - ERROR_SEVERITY ErrorSeverity; - ERROR_RECORD_VALID Valid; - ULONG Length; - ERROR_TIMESTAMP TimeStamp; - UCHAR OemPlatformId[16]; -} ERROR_RECORD_HEADER, *PERROR_RECORD_HEADER; - -typedef union _ERROR_RECOVERY_INFO { - UCHAR RecoveryInfo; - struct { - UCHAR Corrected:1; - UCHAR NotContained:1; - UCHAR Reset:1; - UCHAR Reserved:4; - UCHAR Valid:1; - } DUMMYSTRUCTNAME; -} ERROR_RECOVERY_INFO, *PERROR_RECOVERY_INFO; - -typedef struct _ERROR_SECTION_HEADER { - ERROR_DEVICE_GUID Guid; - ERROR_REVISION Revision; - ERROR_RECOVERY_INFO RecoveryInfo; - UCHAR Reserved; - ULONG Length; -} ERROR_SECTION_HEADER, *PERROR_SECTION_HEADER; - -#if !defined(__midl) && defined(_MSC_EXTENSIONS) -__inline -USHORT -NTAPI -GetFwMceLogProcessorNumber( - PERROR_RECORD_HEADER Log) -{ - PERROR_SECTION_HEADER section = (PERROR_SECTION_HEADER)((ULONG64)Log + sizeof(*Log)); - USHORT lid = (USHORT)((UCHAR)(section->Reserved)); - lid |= (USHORT)((UCHAR)(Log->TimeStamp.Reserved) << 8); - return( lid ); -} -#endif - -#define ERROR_PROCESSOR_GUID {0xe429faf1, 0x3cb7, 0x11d4, {0xbc, 0xa7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81}} - -typedef union _ERROR_MODINFO_VALID { - ULONGLONG Valid; - struct { - ULONGLONG CheckInfo:1; - ULONGLONG RequestorIdentifier:1; - ULONGLONG ResponderIdentifier:1; - ULONGLONG TargetIdentifier:1; - ULONGLONG PreciseIP:1; - ULONGLONG Reserved:59; - } DUMMYSTRUCTNAME; -} ERROR_MODINFO_VALID, *PERROR_MODINFO_VALID; - -typedef enum _ERROR_CHECK_IS { - isIA64 = 0, - isIA32 = 1, -} ERROR_CHECK_IS; - -typedef enum _ERROR_CACHE_CHECK_OPERATION { - CacheUnknownOp = 0, - CacheLoad = 1, - CacheStore = 2, - CacheInstructionFetch = 3, - CacheDataPrefetch = 4, - CacheSnoop = 5, - CacheCastOut = 6, - CacheMoveIn = 7, -} ERROR_CACHE_CHECK_OPERATION; - -typedef enum _ERROR_CACHE_CHECK_MESI { - CacheInvalid = 0, - CacheHeldShared = 1, - CacheHeldExclusive = 2, - CacheModified = 3, -} ERROR_CACHE_CHECK_MESI; - -#if (NTDDI_VERSION >= NTDDI_VISTA) - -typedef union _ERROR_CACHE_CHECK { - ULONGLONG CacheCheck; - struct { - ULONGLONG Operation:4; - ULONGLONG Level:2; - ULONGLONG Reserved1:2; - ULONGLONG DataLine:1; - ULONGLONG TagLine:1; - ULONGLONG DataCache:1; - ULONGLONG InstructionCache:1; - ULONGLONG MESI:3; - ULONGLONG MESIValid:1; - ULONGLONG Way:5; - ULONGLONG WayIndexValid:1; - ULONGLONG Reserved2:1; - ULONGLONG DP:1; - ULONGLONG Reserved3:8; - ULONGLONG Index:20; - ULONGLONG Reserved4:2; - ULONGLONG InstructionSet:1; - ULONGLONG InstructionSetValid:1; - ULONGLONG PrivilegeLevel:2; - ULONGLONG PrivilegeLevelValid:1; - ULONGLONG MachineCheckCorrected:1; - ULONGLONG TargetAddressValid:1; - ULONGLONG RequestIdValid:1; - ULONGLONG ResponderIdValid:1; - ULONGLONG PreciseIPValid:1; - } DUMMYSTRUCTNAME; -} ERROR_CACHE_CHECK, *PERROR_CACHE_CHECK; - -# else - -typedef union _ERROR_CACHE_CHECK { - ULONGLONG CacheCheck; - struct { - ULONGLONG Operation:4; - ULONGLONG Level:2; - ULONGLONG Reserved1:2; - ULONGLONG DataLine:1; - ULONGLONG TagLine:1; - ULONGLONG DataCache:1; - ULONGLONG InstructionCache:1; - ULONGLONG MESI:3; - ULONGLONG MESIValid:1; - ULONGLONG Way:5; - ULONGLONG WayIndexValid:1; - ULONGLONG Reserved2:10; - ULONGLONG Index:20; - ULONGLONG Reserved3:2; - ULONGLONG InstructionSet:1; - ULONGLONG InstructionSetValid:1; - ULONGLONG PrivilegeLevel:2; - ULONGLONG PrivilegeLevelValid:1; - ULONGLONG MachineCheckCorrected:1; - ULONGLONG TargetAddressValid:1; - ULONGLONG RequestIdValid:1; - ULONGLONG ResponderIdValid:1; - ULONGLONG PreciseIPValid:1; - } DUMMYSTRUCTNAME; -} ERROR_CACHE_CHECK, *PERROR_CACHE_CHECK; - -#endif /* (NTDDI_VERSION >= NTDDI_VISTA) */ - -typedef enum _ERROR_TLB_CHECK_OPERATION { - TlbUnknownOp = 0, - TlbAccessWithLoad = 1, - TlbAccessWithStore = 2, - TlbAccessWithInstructionFetch = 3, - TlbAccessWithDataPrefetch = 4, - TlbShootDown = 5, - TlbProbe = 6, - TlbVhptFill = 7, - TlbPurge = 8, -} ERROR_TLB_CHECK_OPERATION; - -typedef union _ERROR_TLB_CHECK { - ULONGLONG TlbCheck; - struct { - ULONGLONG TRSlot:8; - ULONGLONG TRSlotValid:1; - ULONGLONG Reserved1:1; - ULONGLONG Level:2; - ULONGLONG Reserved2:4; - ULONGLONG DataTransReg:1; - ULONGLONG InstructionTransReg:1; - ULONGLONG DataTransCache:1; - ULONGLONG InstructionTransCache:1; - ULONGLONG Operation:4; - ULONGLONG Reserved3:30; - ULONGLONG InstructionSet:1; - ULONGLONG InstructionSetValid:1; - ULONGLONG PrivilegeLevel:2; - ULONGLONG PrivilegeLevelValid:1; - ULONGLONG MachineCheckCorrected:1; - ULONGLONG TargetAddressValid:1; - ULONGLONG RequestIdValid:1; - ULONGLONG ResponderIdValid:1; - ULONGLONG PreciseIPValid:1; - } DUMMYSTRUCTNAME; -} ERROR_TLB_CHECK, *PERROR_TLB_CHECK; - -typedef enum _ERROR_BUS_CHECK_OPERATION { - BusUnknownOp = 0, - BusPartialRead = 1, - BusPartialWrite = 2, - BusFullLineRead = 3, - BusFullLineWrite = 4, - BusWriteBack = 5, - BusSnoopProbe = 6, - BusIncomingPtcG = 7, - BusWriteCoalescing = 8, -} ERROR_BUS_CHECK_OPERATION; - -#if (NTDDI_VERSION >= NTDDI_VISTA) - -typedef union _ERROR_BUS_CHECK { - ULONGLONG BusCheck; - struct { - ULONGLONG Size:5; - ULONGLONG Internal:1; - ULONGLONG External:1; - ULONGLONG CacheTransfer:1; - ULONGLONG Type:8; - ULONGLONG Severity:5; - ULONGLONG Hierarchy:2; - ULONGLONG DP:1; - ULONGLONG Status:8; - ULONGLONG Reserved1:22; - ULONGLONG InstructionSet:1; - ULONGLONG InstructionSetValid:1; - ULONGLONG PrivilegeLevel:2; - ULONGLONG PrivilegeLevelValid:1; - ULONGLONG MachineCheckCorrected:1; - ULONGLONG TargetAddressValid:1; - ULONGLONG RequestIdValid:1; - ULONGLONG ResponderIdValid:1; - ULONGLONG PreciseIPValid:1; - } DUMMYSTRUCTNAME; -} ERROR_BUS_CHECK, *PERROR_BUS_CHECK; - -#else - -typedef union _ERROR_BUS_CHECK { - ULONGLONG BusCheck; - struct { - ULONGLONG Size:5; - ULONGLONG Internal:1; - ULONGLONG External:1; - ULONGLONG CacheTransfer:1; - ULONGLONG Type:8; - ULONGLONG Severity:5; - ULONGLONG Hierarchy:2; - ULONGLONG Reserved1:1; - ULONGLONG Status:8; - ULONGLONG Reserved2:22; - ULONGLONG InstructionSet:1; - ULONGLONG InstructionSetValid:1; - ULONGLONG PrivilegeLevel:2; - ULONGLONG PrivilegeLevelValid:1; - ULONGLONG MachineCheckCorrected:1; - ULONGLONG TargetAddressValid:1; - ULONGLONG RequestIdValid:1; - ULONGLONG ResponderIdValid:1; - ULONGLONG PreciseIPValid:1; - } DUMMYSTRUCTNAME; -} ERROR_BUS_CHECK, *PERROR_BUS_CHECK; - -#endif - -typedef enum _ERROR_REGFILE_CHECK_IDENTIFIER { - RegFileUnknownId = 0, - GeneralRegisterBank1 = 1, - GeneralRegisterBank0 = 2, - FloatingPointRegister = 3, - BranchRegister = 4, - PredicateRegister = 5, - ApplicationRegister = 6, - ControlRegister = 7, - RegionRegister = 8, - ProtectionKeyRegister = 9, - DataBreakPointRegister = 10, - InstructionBreakPointRegister = 11, - PerformanceMonitorControlRegister = 12, - PerformanceMonitorDataRegister = 13, -} ERROR_REGFILE_CHECK_IDENTIFIER; - -typedef enum _ERROR_REGFILE_CHECK_OPERATION { - RegFileUnknownOp = 0, - RegFileRead = 1, - RegFileWrite = 2, -} ERROR_REGFILE_CHECK_OPERATION; - -typedef union _ERROR_REGFILE_CHECK { - ULONGLONG RegFileCheck; - struct { - ULONGLONG Identifier:4; - ULONGLONG Operation:4; - ULONGLONG RegisterNumber:7; - ULONGLONG RegisterNumberValid:1; - ULONGLONG Reserved1:38; - ULONGLONG InstructionSet:1; - ULONGLONG InstructionSetValid:1; - ULONGLONG PrivilegeLevel:2; - ULONGLONG PrivilegeLevelValid:1; - ULONGLONG MachineCheckCorrected:1; - ULONGLONG Reserved2:3; - ULONGLONG PreciseIPValid:1; - } DUMMYSTRUCTNAME; -} ERROR_REGFILE_CHECK, *PERROR_REGFILE_CHECK; - -#if (NTDDK_VERSION <= WINXP) -typedef enum _ERROR_MS_CHECK_OPERATION { - MsUnknownOp = 0, - MsReadOrLoad = 1, - MsWriteOrStore = 2 -} ERROR_MS_CHECK_OPERATION; -#else -typedef enum _ERROR_MS_CHECK_OPERATION { - MsUnknownOp = 0, - MsReadOrLoad = 1, - MsWriteOrStore = 2, - MsOverTemperature = 3, - MsNormalTemperature = 4 -} ERROR_MS_CHECK_OPERATION; -#endif - -typedef union _ERROR_MS_CHECK { - ULONGLONG MsCheck; - struct { - ULONGLONG StructureIdentifier:5; - ULONGLONG Level:3; - ULONGLONG ArrayId:4; - ULONGLONG Operation:4; - ULONGLONG Way:6; - ULONGLONG WayValid:1; - ULONGLONG IndexValid:1; - ULONGLONG Reserved1:8; - ULONGLONG Index:8; - ULONGLONG Reserved2:14; - ULONGLONG InstructionSet:1; - ULONGLONG InstructionSetValid:1; - ULONGLONG PrivilegeLevel:2; - ULONGLONG PrivilegeLevelValid:1; - ULONGLONG MachineCheckCorrected:1; - ULONGLONG TargetAddressValid:1; - ULONGLONG RequestIdValid:1; - ULONGLONG ResponderIdValid:1; - ULONGLONG PreciseIPValid:1; - } DUMMYSTRUCTNAME; -} ERROR_MS_CHECK, *PERROR_MS_CHECK; - -typedef union _ERROR_CHECK_INFO { - ULONGLONG CheckInfo; - ERROR_CACHE_CHECK CacheCheck; - ERROR_TLB_CHECK TlbCheck; - ERROR_BUS_CHECK BusCheck; - ERROR_REGFILE_CHECK RegFileCheck; - ERROR_MS_CHECK MsCheck; -} ERROR_CHECK_INFO, *PERROR_CHECK_INFO; - -typedef struct _ERROR_MODINFO { - ERROR_MODINFO_VALID Valid; - ERROR_CHECK_INFO CheckInfo; - ULONGLONG RequestorId; - ULONGLONG ResponderId; - ULONGLONG TargetId; - ULONGLONG PreciseIP; -} ERROR_MODINFO, *PERROR_MODINFO; - -typedef union _ERROR_PROCESSOR_VALID { - ULONGLONG Valid; - struct { - ULONGLONG ErrorMap:1; - ULONGLONG StateParameter:1; - ULONGLONG CRLid:1; - ULONGLONG StaticStruct:1; - ULONGLONG CacheCheckNum:4; - ULONGLONG TlbCheckNum:4; - ULONGLONG BusCheckNum:4; - ULONGLONG RegFileCheckNum:4; - ULONGLONG MsCheckNum:4; - ULONGLONG CpuIdInfo:1; - ULONGLONG Reserved:39; - } DUMMYSTRUCTNAME; -} ERROR_PROCESSOR_VALID, *PERROR_PROCESSOR_VALID; - -typedef union _ERROR_PROCESSOR_ERROR_MAP { - ULONGLONG ErrorMap; - struct { - ULONGLONG Cid:4; - ULONGLONG Tid:4; - ULONGLONG Eic:4; - ULONGLONG Edc:4; - ULONGLONG Eit:4; - ULONGLONG Edt:4; - ULONGLONG Ebh:4; - ULONGLONG Erf:4; - ULONGLONG Ems:16; - ULONGLONG Reserved:16; - } DUMMYSTRUCTNAME; -} ERROR_PROCESSOR_ERROR_MAP, *PERROR_PROCESSOR_ERROR_MAP; - -typedef ERROR_PROCESSOR_ERROR_MAP _ERROR_PROCESSOR_LEVEL_INDEX; -typedef _ERROR_PROCESSOR_LEVEL_INDEX ERROR_PROCESSOR_LEVEL_INDEX, *PERROR_PROCESSOR_LEVEL_INDEX; - -typedef union _ERROR_PROCESSOR_STATE_PARAMETER { - ULONGLONG StateParameter; - struct { - ULONGLONG reserved0:2; - ULONGLONG rz:1; - ULONGLONG ra:1; - ULONGLONG me:1; - ULONGLONG mn:1; - ULONGLONG sy:1; - ULONGLONG co:1; - ULONGLONG ci:1; - ULONGLONG us:1; - ULONGLONG hd:1; - ULONGLONG tl:1; - ULONGLONG mi:1; - ULONGLONG pi:1; - ULONGLONG pm:1; - ULONGLONG dy:1; - ULONGLONG in:1; - ULONGLONG rs:1; - ULONGLONG cm:1; - ULONGLONG ex:1; - ULONGLONG cr:1; - ULONGLONG pc:1; - ULONGLONG dr:1; - ULONGLONG tr:1; - ULONGLONG rr:1; - ULONGLONG ar:1; - ULONGLONG br:1; - ULONGLONG pr:1; - ULONGLONG fp:1; - ULONGLONG b1:1; - ULONGLONG b0:1; - ULONGLONG gr:1; - ULONGLONG dsize:16; - ULONGLONG reserved1:11; - ULONGLONG cc:1; - ULONGLONG tc:1; - ULONGLONG bc:1; - ULONGLONG rc:1; - ULONGLONG uc:1; - } DUMMYSTRUCTNAME; -} ERROR_PROCESSOR_STATE_PARAMETER, *PERROR_PROCESSOR_STATE_PARAMETER; - -typedef union _PROCESSOR_LOCAL_ID { - ULONGLONG LocalId; - struct { - ULONGLONG reserved:16; - ULONGLONG eid:8; - ULONGLONG id:8; - ULONGLONG ignored:32; - } DUMMYSTRUCTNAME; -} PROCESSOR_LOCAL_ID, *PPROCESSOR_LOCAL_ID; - -typedef struct _ERROR_PROCESSOR_MS { - ULONGLONG MsError[1]; -} ERROR_PROCESSOR_MS, *PERROR_PROCESSOR_MS; - -typedef struct _ERROR_PROCESSOR_CPUID_INFO { - ULONGLONG CpuId0; - ULONGLONG CpuId1; - ULONGLONG CpuId2; - ULONGLONG CpuId3; - ULONGLONG CpuId4; - ULONGLONG Reserved; -} ERROR_PROCESSOR_CPUID_INFO, *PERROR_PROCESSOR_CPUID_INFO; - -typedef union _ERROR_PROCESSOR_STATIC_INFO_VALID { - ULONGLONG Valid; - struct { - ULONGLONG MinState:1; - ULONGLONG BR:1; - ULONGLONG CR:1; - ULONGLONG AR:1; - ULONGLONG RR:1; - ULONGLONG FR:1; - ULONGLONG Reserved:58; - } DUMMYSTRUCTNAME; -} ERROR_PROCESSOR_STATIC_INFO_VALID, *PERROR_PROCESSOR_STATIC_INFO_VALID; - -typedef struct _ERROR_PROCESSOR_STATIC_INFO { - ERROR_PROCESSOR_STATIC_INFO_VALID Valid; - UCHAR MinState[1024]; - ULONGLONG BR[8]; - ULONGLONG CR[128]; - ULONGLONG AR[128]; - ULONGLONG RR[8]; - ULONGLONG FR[2 * 128]; -} ERROR_PROCESSOR_STATIC_INFO, *PERROR_PROCESSOR_STATIC_INFO; - -typedef struct _ERROR_PROCESSOR { - ERROR_SECTION_HEADER Header; - ERROR_PROCESSOR_VALID Valid; - ERROR_PROCESSOR_ERROR_MAP ErrorMap; - ERROR_PROCESSOR_STATE_PARAMETER StateParameter; - PROCESSOR_LOCAL_ID CRLid; -} ERROR_PROCESSOR, *PERROR_PROCESSOR; - -#define ERROR_PROCESSOR_STATE_PARAMETER_CACHE_CHECK_SHIFT 59 -#define ERROR_PROCESSOR_STATE_PARAMETER_CACHE_CHECK_MASK 0x1 -#define ERROR_PROCESSOR_STATE_PARAMETER_TLB_CHECK_SHIFT 60 -#define ERROR_PROCESSOR_STATE_PARAMETER_TLB_CHECK_MASK 0x1 -#define ERROR_PROCESSOR_STATE_PARAMETER_BUS_CHECK_SHIFT 61 -#define ERROR_PROCESSOR_STATE_PARAMETER_BUS_CHECK_MASK 0x1 -#define ERROR_PROCESSOR_STATE_PARAMETER_REG_CHECK_SHIFT 62 -#define ERROR_PROCESSOR_STATE_PARAMETER_REG_CHECK_MASK 0x1 -#define ERROR_PROCESSOR_STATE_PARAMETER_MICROARCH_CHECK_SHIFT 63 -#define ERROR_PROCESSOR_STATE_PARAMETER_MICROARCH_CHECK_MASK 0x1 - -#define ERROR_PROCESSOR_STATE_PARAMETER_UNKNOWN_CHECK_SHIFT ERROR_PROCESSOR_STATE_PARAMETER_MICROARCH_CHECK_SHIFT -#define ERROR_PROCESSOR_STATE_PARAMETER_UNKNOWN_CHECK_MASK ERROR_PROCESSOR_STATE_PARAMETER_MICROARCH_CHECK_MASK - -typedef enum _ERR_TYPES { - ERR_INTERNAL = 1, - ERR_BUS = 16, - ERR_MEM = 4, - ERR_TLB = 5, - ERR_CACHE = 6, - ERR_FUNCTION = 7, - ERR_SELFTEST = 8, - ERR_FLOW = 9, - ERR_MAP = 17, - ERR_IMPROPER = 18, - ERR_UNIMPL = 19, - ERR_LOL = 20, - ERR_RESPONSE = 21, - ERR_PARITY = 22, - ERR_PROTOCOL = 23, - ERR_ERROR = 24, - ERR_TIMEOUT = 25, - ERR_POISONED = 26, -} _ERR_TYPE; - -typedef union _ERROR_STATUS { - ULONGLONG Status; - struct { - ULONGLONG Reserved0:8; - ULONGLONG Type:8; - ULONGLONG Address:1; - ULONGLONG Control:1; - ULONGLONG Data:1; - ULONGLONG Responder:1; - ULONGLONG Requestor:1; - ULONGLONG FirstError:1; - ULONGLONG Overflow:1; - ULONGLONG Reserved1:41; - } DUMMYSTRUCTNAME; -} ERROR_STATUS, *PERROR_STATUS; - -typedef struct _ERROR_OEM_DATA { - USHORT Length; -} ERROR_OEM_DATA, *PERROR_OEM_DATA; - -typedef union _ERROR_BUS_SPECIFIC_DATA { - ULONGLONG BusSpecificData; - struct { - ULONGLONG LockAsserted:1; - ULONGLONG DeferLogged:1; - ULONGLONG IOQEmpty:1; - ULONGLONG DeferredTransaction:1; - ULONGLONG RetriedTransaction:1; - ULONGLONG MemoryClaimedTransaction:1; - ULONGLONG IOClaimedTransaction:1; - ULONGLONG ResponseParitySignal:1; - ULONGLONG DeferSignal:1; - ULONGLONG HitMSignal:1; - ULONGLONG HitSignal:1; - ULONGLONG RequestBusFirstCycle:6; - ULONGLONG RequestBusSecondCycle:6; - ULONGLONG AddressParityBusFirstCycle:2; - ULONGLONG AddressParityBusSecondCycle:2; - ULONGLONG ResponseBus:3; - ULONGLONG RequestParitySignalFirstCycle:1; - ULONGLONG RequestParitySignalSecondCycle:1; - ULONGLONG Reserved:32; - } DUMMYSTRUCTNAME; -} ERROR_BUS_SPECIFIC_DATA, *PERROR_BUS_SPECIFIC_DATA; - -#define ERROR_MEMORY_GUID {0xe429faf2, 0x3cb7, 0x11d4, {0xbc, 0xa7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81}} - -typedef union _ERROR_MEMORY_VALID { - ULONGLONG Valid; - struct { - ULONGLONG ErrorStatus:1; - ULONGLONG PhysicalAddress:1; - ULONGLONG AddressMask:1; - ULONGLONG Node:1; - ULONGLONG Card:1; - ULONGLONG Module:1; - ULONGLONG Bank:1; - ULONGLONG Device:1; - ULONGLONG Row:1; - ULONGLONG Column:1; - ULONGLONG BitPosition:1; - ULONGLONG RequestorId:1; - ULONGLONG ResponderId:1; - ULONGLONG TargetId:1; - ULONGLONG BusSpecificData:1; - ULONGLONG OemId:1; - ULONGLONG OemData:1; - ULONGLONG Reserved:47; - } DUMMYSTRUCTNAME; -} ERROR_MEMORY_VALID, *PERROR_MEMORY_VALID; - -typedef struct _ERROR_MEMORY { - ERROR_SECTION_HEADER Header; - ERROR_MEMORY_VALID Valid; - ERROR_STATUS ErrorStatus; - ULONGLONG PhysicalAddress; - ULONGLONG PhysicalAddressMask; - USHORT Node; - USHORT Card; - USHORT Module; - USHORT Bank; - USHORT Device; - USHORT Row; - USHORT Column; - USHORT BitPosition; - ULONGLONG RequestorId; - ULONGLONG ResponderId; - ULONGLONG TargetId; - ULONGLONG BusSpecificData; - UCHAR OemId[16]; - ERROR_OEM_DATA OemData; -} ERROR_MEMORY, *PERROR_MEMORY; - -#define ERROR_PCI_BUS_GUID {0xe429faf4, 0x3cb7, 0x11d4, {0xbc, 0xa7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81}} - -typedef union _ERROR_PCI_BUS_VALID { - ULONGLONG Valid; - struct { - ULONGLONG ErrorStatus:1; - ULONGLONG ErrorType:1; - ULONGLONG Id:1; - ULONGLONG Address:1; - ULONGLONG Data:1; - ULONGLONG CmdType:1; - ULONGLONG RequestorId:1; - ULONGLONG ResponderId:1; - ULONGLONG TargetId:1; - ULONGLONG OemId:1; - ULONGLONG OemData:1; - ULONGLONG Reserved:53; - } DUMMYSTRUCTNAME; -} ERROR_PCI_BUS_VALID, *PERROR_PCI_BUS_VALID; - -typedef struct _ERROR_PCI_BUS_TYPE { - UCHAR Type; - UCHAR Reserved; -} ERROR_PCI_BUS_TYPE, *PERROR_PCI_BUS_TYPE; - -#define PciBusUnknownError ((UCHAR)0) -#define PciBusDataParityError ((UCHAR)1) -#define PciBusSystemError ((UCHAR)2) -#define PciBusMasterAbort ((UCHAR)3) -#define PciBusTimeOut ((UCHAR)4) -#define PciMasterDataParityError ((UCHAR)5) -#define PciAddressParityError ((UCHAR)6) -#define PciCommandParityError ((UCHAR)7) - -typedef struct _ERROR_PCI_BUS_ID { - UCHAR BusNumber; - UCHAR SegmentNumber; -} ERROR_PCI_BUS_ID, *PERROR_PCI_BUS_ID; - -typedef struct _ERROR_PCI_BUS { - ERROR_SECTION_HEADER Header; - ERROR_PCI_BUS_VALID Valid; - ERROR_STATUS ErrorStatus; - ERROR_PCI_BUS_TYPE Type; - ERROR_PCI_BUS_ID Id; - UCHAR Reserved[4]; - ULONGLONG Address; - ULONGLONG Data; - ULONGLONG CmdType; - ULONGLONG RequestorId; - ULONGLONG ResponderId; - ULONGLONG TargetId; - UCHAR OemId[16]; - ERROR_OEM_DATA OemData; -} ERROR_PCI_BUS, *PERROR_PCI_BUS; - -#define ERROR_PCI_COMPONENT_GUID {0xe429faf6, 0x3cb7, 0x11d4, {0xbc, 0xa7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81}} - -typedef union _ERROR_PCI_COMPONENT_VALID { - ULONGLONG Valid; - struct { - ULONGLONG ErrorStatus:1; - ULONGLONG Info:1; - ULONGLONG MemoryMappedRegistersPairs:1; - ULONGLONG ProgrammedIORegistersPairs:1; - ULONGLONG RegistersDataPairs:1; - ULONGLONG OemData:1; - ULONGLONG Reserved:58; - } DUMMYSTRUCTNAME; -} ERROR_PCI_COMPONENT_VALID, *PERROR_PCI_COMPONENT_VALID; - -typedef struct _ERROR_PCI_COMPONENT_INFO { - USHORT VendorId; - USHORT DeviceId; - UCHAR ClassCodeInterface; - UCHAR ClassCodeSubClass; - UCHAR ClassCodeBaseClass; - UCHAR FunctionNumber; - UCHAR DeviceNumber; - UCHAR BusNumber; - UCHAR SegmentNumber; - UCHAR Reserved0; - ULONG Reserved1; -} ERROR_PCI_COMPONENT_INFO, *PERROR_PCI_COMPONENT_INFO; - -typedef struct _ERROR_PCI_COMPONENT { - ERROR_SECTION_HEADER Header; - ERROR_PCI_COMPONENT_VALID Valid; - ERROR_STATUS ErrorStatus; - ERROR_PCI_COMPONENT_INFO Info; - ULONG MemoryMappedRegistersPairs; - ULONG ProgrammedIORegistersPairs; -} ERROR_PCI_COMPONENT, *PERROR_PCI_COMPONENT; - -#define ERROR_SYSTEM_EVENT_LOG_GUID {0xe429faf3, 0x3cb7, 0x11d4, {0xbc, 0xa7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81}} - -typedef union _ERROR_SYSTEM_EVENT_LOG_VALID { - ULONGLONG Valid; - struct { - ULONGLONG RecordId:1; - ULONGLONG RecordType:1; - ULONGLONG GeneratorId:1; - ULONGLONG EVMRev:1; - ULONGLONG SensorType:1; - ULONGLONG SensorNum:1; - ULONGLONG EventDirType:1; - ULONGLONG EventData1:1; - ULONGLONG EventData2:1; - ULONGLONG EventData3:1; - ULONGLONG Reserved:54; - } DUMMYSTRUCTNAME; -} ERROR_SYSTEM_EVENT_LOG_VALID, *PSYSTEM_EVENT_LOG_VALID; - -typedef struct _ERROR_SYSTEM_EVENT_LOG { - ERROR_SECTION_HEADER Header; - ERROR_SYSTEM_EVENT_LOG_VALID Valid; - USHORT RecordId; - UCHAR RecordType; - ULONG TimeStamp; - USHORT GeneratorId; - UCHAR EVMRevision; - UCHAR SensorType; - UCHAR SensorNumber; - UCHAR EventDir; - UCHAR Data1; - UCHAR Data2; - UCHAR Data3; -} ERROR_SYSTEM_EVENT_LOG, *PERROR_SYSTEM_EVENT_LOG; - -#define ERROR_SMBIOS_GUID {0xe429faf5, 0x3cb7, 0x11d4, {0xbc, 0xa7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81}} - -typedef union _ERROR_SMBIOS_VALID { - ULONGLONG Valid; - struct { - ULONGLONG EventType:1; - ULONGLONG Length:1; - ULONGLONG TimeStamp:1; - ULONGLONG OemData:1; - ULONGLONG Reserved:60; - } DUMMYSTRUCTNAME; -} ERROR_SMBIOS_VALID, *PERROR_SMBIOS_VALID; - -typedef UCHAR ERROR_SMBIOS_EVENT_TYPE, *PERROR_SMBIOS_EVENT_TYPE; - -typedef struct _ERROR_SMBIOS { - ERROR_SECTION_HEADER Header; - ERROR_SMBIOS_VALID Valid; - ERROR_SMBIOS_EVENT_TYPE EventType; - UCHAR Length; - ERROR_TIMESTAMP TimeStamp; - ERROR_OEM_DATA OemData; -} ERROR_SMBIOS, *PERROR_SMBIOS; - -#define ERROR_PLATFORM_SPECIFIC_GUID {0xe429faf7, 0x3cb7, 0x11d4, {0xbc, 0xa7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81}} - -typedef union _ERROR_PLATFORM_SPECIFIC_VALID { - ULONGLONG Valid; - struct { - ULONGLONG ErrorStatus:1; - ULONGLONG RequestorId:1; - ULONGLONG ResponderId:1; - ULONGLONG TargetId:1; - ULONGLONG BusSpecificData:1; - ULONGLONG OemId:1; - ULONGLONG OemData:1; - ULONGLONG OemDevicePath:1; - ULONGLONG Reserved:56; - } DUMMYSTRUCTNAME; -} ERROR_PLATFORM_SPECIFIC_VALID, *PERROR_PLATFORM_SPECIFIC_VALID; - -typedef struct _ERROR_PLATFORM_SPECIFIC { - ERROR_SECTION_HEADER Header; - ERROR_PLATFORM_SPECIFIC_VALID Valid; - ERROR_STATUS ErrorStatus; - ULONGLONG RequestorId; - ULONGLONG ResponderId; - ULONGLONG TargetId; - ERROR_BUS_SPECIFIC_DATA BusSpecificData; - UCHAR OemId[16]; - ERROR_OEM_DATA OemData; -} ERROR_PLATFORM_SPECIFIC, *PERROR_PLATFORM_SPECIFIC; - -#define ERROR_PLATFORM_BUS_GUID {0xe429faf9, 0x3cb7, 0x11d4, {0xbc, 0xa7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81}} - -typedef union _ERROR_PLATFORM_BUS_VALID { - ULONGLONG Valid; - struct { - ULONGLONG ErrorStatus:1; - ULONGLONG RequestorId:1; - ULONGLONG ResponderId:1; - ULONGLONG TargetId:1; - ULONGLONG BusSpecificData:1; - ULONGLONG OemId:1; - ULONGLONG OemData:1; - ULONGLONG OemDevicePath:1; - ULONGLONG Reserved:56; - } DUMMYSTRUCTNAME; -} ERROR_PLATFORM_BUS_VALID, *PERROR_PLATFORM_BUS_VALID; - -typedef struct _ERROR_PLATFORM_BUS { - ERROR_SECTION_HEADER Header; - ERROR_PLATFORM_BUS_VALID Valid; - ERROR_STATUS ErrorStatus; - ULONGLONG RequestorId; - ULONGLONG ResponderId; - ULONGLONG TargetId; - ERROR_BUS_SPECIFIC_DATA BusSpecificData; - UCHAR OemId[16]; - ERROR_OEM_DATA OemData; -} ERROR_PLATFORM_BUS, *PERROR_PLATFORM_BUS; - -#define ERROR_PLATFORM_HOST_CONTROLLER_GUID {0xe429faf8, 0x3cb7, 0x11d4, {0xbc, 0xa7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81}} - -typedef union _ERROR_PLATFORM_HOST_CONTROLLER_VALID { - ULONGLONG Valid; - struct { - ULONGLONG ErrorStatus:1; - ULONGLONG RequestorId:1; - ULONGLONG ResponderId:1; - ULONGLONG TargetId:1; - ULONGLONG BusSpecificData:1; - ULONGLONG OemId:1; - ULONGLONG OemData:1; - ULONGLONG OemDevicePath:1; - ULONGLONG Reserved:56; - } DUMMYSTRUCTNAME; -} ERROR_PLATFORM_HOST_CONTROLLER_VALID, *PERROR_PLATFORM_HOST_CONTROLLER_VALID; - -typedef struct _ERROR_PLATFORM_HOST_CONTROLLER { - ERROR_SECTION_HEADER Header; - ERROR_PCI_COMPONENT_VALID Valid; - ERROR_STATUS ErrorStatus; - ULONGLONG RequestorId; - ULONGLONG ResponderId; - ULONGLONG TargetId; - ERROR_BUS_SPECIFIC_DATA BusSpecificData; - UCHAR OemId[16]; - ERROR_OEM_DATA OemData; -} ERROR_PLATFORM_HOST_CONTROLLER, *PERROR_PLATFORM_HOST_CONTROLLER; - -typedef ERROR_RECORD_HEADER ERROR_LOGRECORD, *PERROR_LOGRECORD; -typedef ERROR_RECORD_HEADER MCA_EXCEPTION, *PMCA_EXCEPTION; -typedef ERROR_RECORD_HEADER CMC_EXCEPTION, *PCMC_EXCEPTION; -typedef ERROR_RECORD_HEADER CPE_EXCEPTION, *PCPE_EXCEPTION; -#if (NTDDI_VERSION > NTDDI_WINXP) -typedef ERROR_RECORD_HEADER INIT_EXCEPTION, *PINIT_EXCEPTION; -#endif - -#endif /* defined(_IA64_) */ - -#endif /* defined(_X86_) || defined(_IA64_) || defined(_AMD64_) */ diff --git a/reactos/include/ddk/miniport.h b/reactos/include/ddk/miniport.h index 0191e605a2b..59fcc52a16e 100644 --- a/reactos/include/ddk/miniport.h +++ b/reactos/include/ddk/miniport.h @@ -59,7 +59,7 @@ typedef struct _VIDEO_ACCESS_RANGE { #endif typedef VOID -(NTAPI *PBANKED_SECTION_ROUTINE)( +(DDKAPI *PBANKED_SECTION_ROUTINE)( IN ULONG ReadBank, IN ULONG WriteBank, IN PVOID Context); diff --git a/reactos/include/ddk/minitape.h b/reactos/include/ddk/minitape.h index 43b1b030a9b..d8f7532f32e 100644 --- a/reactos/include/ddk/minitape.h +++ b/reactos/include/ddk/minitape.h @@ -159,24 +159,24 @@ typedef struct _MODE_CAPABILITIES_PAGE { UCHAR Reserved11[2]; } MODE_CAPABILITIES_PAGE, *PMODE_CAPABILITIES_PAGE; -typedef BOOLEAN NTAPI +typedef BOOLEAN DDKAPI (*TAPE_VERIFY_INQUIRY_ROUTINE)( IN PINQUIRYDATA InquiryData, IN PMODE_CAPABILITIES_PAGE ModeCapabilitiesPage); -typedef VOID NTAPI +typedef VOID DDKAPI (*TAPE_EXTENSION_INIT_ROUTINE)( IN PVOID MinitapeExtension, IN PINQUIRYDATA InquiryData, IN PMODE_CAPABILITIES_PAGE ModeCapabilitiesPage); -typedef VOID NTAPI +typedef VOID DDKAPI (*TAPE_ERROR_ROUTINE)( IN PVOID MinitapeExtension, IN PSCSI_REQUEST_BLOCK Srb, IN OUT PTAPE_STATUS TapeStatus); -typedef TAPE_STATUS NTAPI +typedef TAPE_STATUS DDKAPI (*TAPE_PROCESS_COMMAND_ROUTINE)( IN OUT PVOID MinitapeExtension, IN OUT PVOID CommandExtension, diff --git a/reactos/include/ddk/ndis.h b/reactos/include/ddk/ndis.h index da301b11042..b08fb683b8c 100644 --- a/reactos/include/ddk/ndis.h +++ b/reactos/include/ddk/ndis.h @@ -268,7 +268,7 @@ typedef struct _LOCK_STATE { /* Timer */ typedef VOID -(NTAPI *PNDIS_TIMER_FUNCTION)( +(DDKAPI *PNDIS_TIMER_FUNCTION)( IN PVOID SystemSpecific1, IN PVOID FunctionContext, IN PVOID SystemSpecific2, @@ -626,16 +626,16 @@ typedef struct _NDIS_WAN_LINE_UP { typedef VOID -(NTAPI *ADAPTER_SHUTDOWN_HANDLER)( +(DDKAPI *ADAPTER_SHUTDOWN_HANDLER)( IN PVOID ShutdownContext); typedef NTSTATUS -(NTAPI *TDI_REGISTER_CALLBACK)( +(DDKAPI *TDI_REGISTER_CALLBACK)( IN PUNICODE_STRING DeviceName, OUT HANDLE* TdiHandle); typedef NTSTATUS -(NTAPI *TDI_PNP_HANDLER)( +(DDKAPI *TDI_PNP_HANDLER)( IN PUNICODE_STRING UpperComponent, IN PUNICODE_STRING LowerComponent, IN PUNICODE_STRING BindList, @@ -1057,88 +1057,88 @@ typedef struct _WAN_CO_LINKPARAMS { /* Call Manager */ typedef VOID -(NTAPI *CM_ACTIVATE_VC_COMPLETE_HANDLER)( +(DDKAPI *CM_ACTIVATE_VC_COMPLETE_HANDLER)( IN NDIS_STATUS Status, IN NDIS_HANDLE CallMgrVcContext, IN PCO_CALL_PARAMETERS CallParameters); typedef NDIS_STATUS -(NTAPI *CM_ADD_PARTY_HANDLER)( +(DDKAPI *CM_ADD_PARTY_HANDLER)( IN NDIS_HANDLE CallMgrVcContext, IN OUT PCO_CALL_PARAMETERS CallParameters, IN NDIS_HANDLE NdisPartyHandle, OUT PNDIS_HANDLE CallMgrPartyContext); typedef NDIS_STATUS -(NTAPI *CM_CLOSE_AF_HANDLER)( +(DDKAPI *CM_CLOSE_AF_HANDLER)( IN NDIS_HANDLE CallMgrAfContext); typedef NDIS_STATUS -(NTAPI *CM_CLOSE_CALL_HANDLER)( +(DDKAPI *CM_CLOSE_CALL_HANDLER)( IN NDIS_HANDLE CallMgrVcContext, IN NDIS_HANDLE CallMgrPartyContext OPTIONAL, IN PVOID CloseData OPTIONAL, IN UINT Size OPTIONAL); typedef NDIS_STATUS -(NTAPI *CM_DEREG_SAP_HANDLER)( +(DDKAPI *CM_DEREG_SAP_HANDLER)( IN NDIS_HANDLE CallMgrSapContext); typedef VOID -(NTAPI *CM_DEACTIVATE_VC_COMPLETE_HANDLER)( +(DDKAPI *CM_DEACTIVATE_VC_COMPLETE_HANDLER)( IN NDIS_STATUS Status, IN NDIS_HANDLE CallMgrVcContext); typedef NDIS_STATUS -(NTAPI *CM_DROP_PARTY_HANDLER)( +(DDKAPI *CM_DROP_PARTY_HANDLER)( IN NDIS_HANDLE CallMgrPartyContext, IN PVOID CloseData OPTIONAL, IN UINT Size OPTIONAL); typedef VOID -(NTAPI *CM_INCOMING_CALL_COMPLETE_HANDLER)( +(DDKAPI *CM_INCOMING_CALL_COMPLETE_HANDLER)( IN NDIS_STATUS Status, IN NDIS_HANDLE CallMgrVcContext, IN PCO_CALL_PARAMETERS CallParameters); typedef NDIS_STATUS -(NTAPI *CM_MAKE_CALL_HANDLER)( +(DDKAPI *CM_MAKE_CALL_HANDLER)( IN NDIS_HANDLE CallMgrVcContext, IN OUT PCO_CALL_PARAMETERS CallParameters, IN NDIS_HANDLE NdisPartyHandle OPTIONAL, OUT PNDIS_HANDLE CallMgrPartyContext OPTIONAL); typedef NDIS_STATUS -(NTAPI *CM_MODIFY_CALL_QOS_HANDLER)( +(DDKAPI *CM_MODIFY_CALL_QOS_HANDLER)( IN NDIS_HANDLE CallMgrVcContext, IN PCO_CALL_PARAMETERS CallParameters); typedef NDIS_STATUS -(NTAPI *CM_OPEN_AF_HANDLER)( +(DDKAPI *CM_OPEN_AF_HANDLER)( IN NDIS_HANDLE CallMgrBindingContext, IN PCO_ADDRESS_FAMILY AddressFamily, IN NDIS_HANDLE NdisAfHandle, OUT PNDIS_HANDLE CallMgrAfContext); typedef NDIS_STATUS -(NTAPI *CM_REG_SAP_HANDLER)( +(DDKAPI *CM_REG_SAP_HANDLER)( IN NDIS_HANDLE CallMgrAfContext, IN PCO_SAP Sap, IN NDIS_HANDLE NdisSapHandle, OUT PNDIS_HANDLE CallMgrSapContext); typedef NDIS_STATUS -(NTAPI *CO_CREATE_VC_HANDLER)( +(DDKAPI *CO_CREATE_VC_HANDLER)( IN NDIS_HANDLE ProtocolAfContext, IN NDIS_HANDLE NdisVcHandle, OUT PNDIS_HANDLE ProtocolVcContext); typedef NDIS_STATUS -(NTAPI *CO_DELETE_VC_HANDLER)( +(DDKAPI *CO_DELETE_VC_HANDLER)( IN NDIS_HANDLE ProtocolVcContext); typedef VOID -(NTAPI *CO_REQUEST_COMPLETE_HANDLER)( +(DDKAPI *CO_REQUEST_COMPLETE_HANDLER)( IN NDIS_STATUS Status, IN NDIS_HANDLE ProtocolAfContext OPTIONAL, IN NDIS_HANDLE ProtocolVcContext OPTIONAL, @@ -1146,7 +1146,7 @@ typedef VOID IN PNDIS_REQUEST NdisRequest); typedef NDIS_STATUS -(NTAPI *CO_REQUEST_HANDLER)( +(DDKAPI *CO_REQUEST_HANDLER)( IN NDIS_HANDLE ProtocolAfContext, IN NDIS_HANDLE ProtocolVcContext OPTIONAL, IN NDIS_HANDLE ProtocolPartyContext OPTIONAL, @@ -1185,80 +1185,80 @@ typedef VOID (*CL_OPEN_AF_COMPLETE_HANDLER)( IN NDIS_HANDLE NdisAfHandle); typedef VOID -(NTAPI *CL_CLOSE_AF_COMPLETE_HANDLER)( +(DDKAPI *CL_CLOSE_AF_COMPLETE_HANDLER)( IN NDIS_STATUS Status, IN NDIS_HANDLE ProtocolAfContext); typedef VOID -(NTAPI *CL_REG_SAP_COMPLETE_HANDLER)( +(DDKAPI *CL_REG_SAP_COMPLETE_HANDLER)( IN NDIS_STATUS Status, IN NDIS_HANDLE ProtocolSapContext, IN PCO_SAP Sap, IN NDIS_HANDLE NdisSapHandle); typedef VOID -(NTAPI *CL_DEREG_SAP_COMPLETE_HANDLER)( +(DDKAPI *CL_DEREG_SAP_COMPLETE_HANDLER)( IN NDIS_STATUS Status, IN NDIS_HANDLE ProtocolSapContext); typedef VOID -(NTAPI *CL_MAKE_CALL_COMPLETE_HANDLER)( +(DDKAPI *CL_MAKE_CALL_COMPLETE_HANDLER)( IN NDIS_STATUS Status, IN NDIS_HANDLE ProtocolVcContext, IN NDIS_HANDLE NdisPartyHandle OPTIONAL, IN PCO_CALL_PARAMETERS CallParameters); typedef VOID -(NTAPI *CL_MODIFY_CALL_QOS_COMPLETE_HANDLER)( +(DDKAPI *CL_MODIFY_CALL_QOS_COMPLETE_HANDLER)( IN NDIS_STATUS Status, IN NDIS_HANDLE ProtocolVcContext, IN PCO_CALL_PARAMETERS CallParameters); typedef VOID -(NTAPI *CL_CLOSE_CALL_COMPLETE_HANDLER)( +(DDKAPI *CL_CLOSE_CALL_COMPLETE_HANDLER)( IN NDIS_STATUS Status, IN NDIS_HANDLE ProtocolVcContext, IN NDIS_HANDLE ProtocolPartyContext OPTIONAL); typedef VOID -(NTAPI *CL_ADD_PARTY_COMPLETE_HANDLER)( +(DDKAPI *CL_ADD_PARTY_COMPLETE_HANDLER)( IN NDIS_STATUS Status, IN NDIS_HANDLE ProtocolPartyContext, IN NDIS_HANDLE NdisPartyHandle, IN PCO_CALL_PARAMETERS CallParameters); typedef VOID -(NTAPI *CL_DROP_PARTY_COMPLETE_HANDLER)( +(DDKAPI *CL_DROP_PARTY_COMPLETE_HANDLER)( IN NDIS_STATUS Status, IN NDIS_HANDLE ProtocolPartyContext); typedef NDIS_STATUS -(NTAPI *CL_INCOMING_CALL_HANDLER)( +(DDKAPI *CL_INCOMING_CALL_HANDLER)( IN NDIS_HANDLE ProtocolSapContext, IN NDIS_HANDLE ProtocolVcContext, IN OUT PCO_CALL_PARAMETERS CallParameters); typedef VOID -(NTAPI *CL_INCOMING_CALL_QOS_CHANGE_HANDLER)( +(DDKAPI *CL_INCOMING_CALL_QOS_CHANGE_HANDLER)( IN NDIS_HANDLE ProtocolVcContext, IN PCO_CALL_PARAMETERS CallParameters); typedef VOID -(NTAPI *CL_INCOMING_CLOSE_CALL_HANDLER)( +(DDKAPI *CL_INCOMING_CLOSE_CALL_HANDLER)( IN NDIS_STATUS CloseStatus, IN NDIS_HANDLE ProtocolVcContext, IN PVOID CloseData OPTIONAL, IN UINT Size OPTIONAL); typedef VOID -(NTAPI *CL_INCOMING_DROP_PARTY_HANDLER)( +(DDKAPI *CL_INCOMING_DROP_PARTY_HANDLER)( IN NDIS_STATUS DropStatus, IN NDIS_HANDLE ProtocolPartyContext, IN PVOID CloseData OPTIONAL, IN UINT Size OPTIONAL); typedef VOID -(NTAPI *CL_CALL_CONNECTED_HANDLER)( +(DDKAPI *CL_CALL_CONNECTED_HANDLER)( IN NDIS_HANDLE ProtocolVcContext); @@ -1293,64 +1293,64 @@ typedef struct _NDIS_CLIENT_CHARACTERISTICS { /* Prototypes for NDIS 3.0 protocol characteristics */ typedef VOID -(NTAPI *OPEN_ADAPTER_COMPLETE_HANDLER)( +(DDKAPI *OPEN_ADAPTER_COMPLETE_HANDLER)( IN NDIS_HANDLE ProtocolBindingContext, IN NDIS_STATUS Status, IN NDIS_STATUS OpenErrorStatus); typedef VOID -(NTAPI *CLOSE_ADAPTER_COMPLETE_HANDLER)( +(DDKAPI *CLOSE_ADAPTER_COMPLETE_HANDLER)( IN NDIS_HANDLE ProtocolBindingContext, IN NDIS_STATUS Status); typedef VOID -(NTAPI *RESET_COMPLETE_HANDLER)( +(DDKAPI *RESET_COMPLETE_HANDLER)( IN NDIS_HANDLE ProtocolBindingContext, IN NDIS_STATUS Status); typedef VOID -(NTAPI *REQUEST_COMPLETE_HANDLER)( +(DDKAPI *REQUEST_COMPLETE_HANDLER)( IN NDIS_HANDLE ProtocolBindingContext, IN PNDIS_REQUEST NdisRequest, IN NDIS_STATUS Status); typedef VOID -(NTAPI *STATUS_HANDLER)( +(DDKAPI *STATUS_HANDLER)( IN NDIS_HANDLE ProtocolBindingContext, IN NDIS_STATUS GeneralStatus, IN PVOID StatusBuffer, IN UINT StatusBufferSize); typedef VOID -(NTAPI *STATUS_COMPLETE_HANDLER)( +(DDKAPI *STATUS_COMPLETE_HANDLER)( IN NDIS_HANDLE ProtocolBindingContext); typedef VOID -(NTAPI *SEND_COMPLETE_HANDLER)( +(DDKAPI *SEND_COMPLETE_HANDLER)( IN NDIS_HANDLE ProtocolBindingContext, IN PNDIS_PACKET Packet, IN NDIS_STATUS Status); typedef VOID -(NTAPI *WAN_SEND_COMPLETE_HANDLER)( +(DDKAPI *WAN_SEND_COMPLETE_HANDLER)( IN NDIS_HANDLE ProtocolBindingContext, IN PNDIS_WAN_PACKET Packet, IN NDIS_STATUS Status); typedef VOID -(NTAPI *TRANSFER_DATA_COMPLETE_HANDLER)( +(DDKAPI *TRANSFER_DATA_COMPLETE_HANDLER)( IN NDIS_HANDLE ProtocolBindingContext, IN PNDIS_PACKET Packet, IN NDIS_STATUS Status, IN UINT BytesTransferred); typedef VOID -(NTAPI *WAN_TRANSFER_DATA_COMPLETE_HANDLER)( +(DDKAPI *WAN_TRANSFER_DATA_COMPLETE_HANDLER)( VOID); typedef NDIS_STATUS -(NTAPI *RECEIVE_HANDLER)( +(DDKAPI *RECEIVE_HANDLER)( IN NDIS_HANDLE ProtocolBindingContext, IN NDIS_HANDLE MacReceiveContext, IN PVOID HeaderBuffer, @@ -1360,13 +1360,13 @@ typedef NDIS_STATUS IN UINT PacketSize); typedef NDIS_STATUS -(NTAPI *WAN_RECEIVE_HANDLER)( +(DDKAPI *WAN_RECEIVE_HANDLER)( IN NDIS_HANDLE NdisLinkHandle, IN PUCHAR Packet, IN ULONG PacketSize); typedef VOID -(NTAPI *RECEIVE_COMPLETE_HANDLER)( +(DDKAPI *RECEIVE_COMPLETE_HANDLER)( IN NDIS_HANDLE ProtocolBindingContext); @@ -1409,12 +1409,12 @@ typedef struct _NDIS30_PROTOCOL_CHARACTERISTICS { /* Prototypes for NDIS 4.0 protocol characteristics */ typedef INT -(NTAPI *RECEIVE_PACKET_HANDLER)( +(DDKAPI *RECEIVE_PACKET_HANDLER)( IN NDIS_HANDLE ProtocolBindingContext, IN PNDIS_PACKET Packet); typedef VOID -(NTAPI *BIND_HANDLER)( +(DDKAPI *BIND_HANDLER)( OUT PNDIS_STATUS Status, IN NDIS_HANDLE BindContext, IN PNDIS_STRING DeviceName, @@ -1422,18 +1422,18 @@ typedef VOID IN PVOID SystemSpecific2); typedef VOID -(NTAPI *UNBIND_HANDLER)( +(DDKAPI *UNBIND_HANDLER)( OUT PNDIS_STATUS Status, IN NDIS_HANDLE ProtocolBindingContext, IN NDIS_HANDLE UnbindContext); typedef NDIS_STATUS -(NTAPI *PNP_EVENT_HANDLER)( +(DDKAPI *PNP_EVENT_HANDLER)( IN NDIS_HANDLE ProtocolBindingContext, IN PNET_PNP_EVENT NetPnPEvent); typedef VOID -(NTAPI *UNLOAD_PROTOCOL_HANDLER)( +(DDKAPI *UNLOAD_PROTOCOL_HANDLER)( VOID); @@ -1468,13 +1468,13 @@ typedef struct _NDIS40_PROTOCOL_CHARACTERISTICS { /* Prototypes for NDIS 5.0 protocol characteristics */ typedef VOID -(NTAPI *CO_SEND_COMPLETE_HANDLER)( +(DDKAPI *CO_SEND_COMPLETE_HANDLER)( IN NDIS_STATUS Status, IN NDIS_HANDLE ProtocolVcContext, IN PNDIS_PACKET Packet); typedef VOID -(NTAPI *CO_STATUS_HANDLER)( +(DDKAPI *CO_STATUS_HANDLER)( IN NDIS_HANDLE ProtocolBindingContext, IN NDIS_HANDLE ProtocolVcContext OPTIONAL, IN NDIS_STATUS GeneralStatus, @@ -1482,13 +1482,13 @@ typedef VOID IN UINT StatusBufferSize); typedef UINT -(NTAPI *CO_RECEIVE_PACKET_HANDLER)( +(DDKAPI *CO_RECEIVE_PACKET_HANDLER)( IN NDIS_HANDLE ProtocolBindingContext, IN NDIS_HANDLE ProtocolVcContext, IN PNDIS_PACKET Packet); typedef VOID -(NTAPI *CO_AF_REGISTER_NOTIFY_HANDLER)( +(DDKAPI *CO_AF_REGISTER_NOTIFY_HANDLER)( IN NDIS_HANDLE ProtocolBindingContext, IN PCO_ADDRESS_FAMILY AddressFamily); @@ -1538,7 +1538,7 @@ typedef struct _NDIS_PROTOCOL_CHARACTERISTICS { NDISAPI VOID -NTAPI +DDKAPI NdisAllocateBuffer( OUT PNDIS_STATUS Status, OUT PNDIS_BUFFER *Buffer, @@ -1549,7 +1549,7 @@ NdisAllocateBuffer( NDISAPI VOID -NTAPI +DDKAPI NdisAllocateBufferPool( OUT PNDIS_STATUS Status, OUT PNDIS_HANDLE PoolHandle, @@ -1557,7 +1557,7 @@ NdisAllocateBufferPool( NDISAPI VOID -NTAPI +DDKAPI NdisAllocatePacket( OUT PNDIS_STATUS Status, OUT PNDIS_PACKET *Packet, @@ -1565,7 +1565,7 @@ NdisAllocatePacket( NDISAPI VOID -NTAPI +DDKAPI NdisAllocatePacketPool( OUT PNDIS_STATUS Status, OUT PNDIS_HANDLE PoolHandle, @@ -1574,7 +1574,7 @@ NdisAllocatePacketPool( NDISAPI VOID -NTAPI +DDKAPI NdisCopyBuffer( OUT PNDIS_STATUS Status, OUT PNDIS_BUFFER *Buffer, @@ -1585,7 +1585,7 @@ NdisCopyBuffer( NDISAPI VOID -NTAPI +DDKAPI NdisCopyFromPacketToPacket( IN PNDIS_PACKET Destination, IN UINT DestinationOffset, @@ -1626,7 +1626,7 @@ NdisCopyFromPacketToPacket( NDISAPI VOID -NTAPI +DDKAPI NdisDprAllocatePacket( OUT PNDIS_STATUS Status, OUT PNDIS_PACKET *Packet, @@ -1634,7 +1634,7 @@ NdisDprAllocatePacket( NDISAPI VOID -NTAPI +DDKAPI NdisDprAllocatePacketNonInterlocked( OUT PNDIS_STATUS Status, OUT PNDIS_PACKET *Packet, @@ -1642,96 +1642,96 @@ NdisDprAllocatePacketNonInterlocked( NDISAPI VOID -NTAPI +DDKAPI NdisDprFreePacket( IN PNDIS_PACKET Packet); NDISAPI VOID -NTAPI +DDKAPI NdisDprFreePacketNonInterlocked( IN PNDIS_PACKET Packet); NDISAPI VOID -NTAPI +DDKAPI NdisFreeBufferPool( IN NDIS_HANDLE PoolHandle); NDISAPI VOID -NTAPI +DDKAPI NdisFreePacket( IN PNDIS_PACKET Packet); NDISAPI VOID -NTAPI +DDKAPI NdisFreePacketPool( IN NDIS_HANDLE PoolHandle); NDISAPI VOID -NTAPI +DDKAPI NdisReturnPackets( IN PNDIS_PACKET *PacketsToReturn, IN UINT NumberOfPackets); NDISAPI VOID -NTAPI +DDKAPI NdisUnchainBufferAtBack( IN OUT PNDIS_PACKET Packet, OUT PNDIS_BUFFER *Buffer); NDISAPI VOID -NTAPI +DDKAPI NdisUnchainBufferAtFront( IN OUT PNDIS_PACKET Packet, OUT PNDIS_BUFFER *Buffer); NDISAPI VOID -NTAPI +DDKAPI NdisAdjustBufferLength( IN PNDIS_BUFFER Buffer, IN UINT Length); NDISAPI ULONG -NTAPI +DDKAPI NdisBufferLength( IN PNDIS_BUFFER Buffer); NDISAPI PVOID -NTAPI +DDKAPI NdisBufferVirtualAddress( IN PNDIS_BUFFER Buffer); NDISAPI ULONG -NTAPI +DDKAPI NDIS_BUFFER_TO_SPAN_PAGES( IN PNDIS_BUFFER Buffer); NDISAPI VOID -NTAPI +DDKAPI NdisFreeBuffer( IN PNDIS_BUFFER Buffer); NDISAPI VOID -NTAPI +DDKAPI NdisGetBufferPhysicalArraySize( IN PNDIS_BUFFER Buffer, OUT PUINT ArraySize); NDISAPI VOID -NTAPI +DDKAPI NdisGetFirstBufferFromPacket( IN PNDIS_PACKET _Packet, OUT PNDIS_BUFFER *_FirstBuffer, @@ -1741,7 +1741,7 @@ NdisGetFirstBufferFromPacket( NDISAPI VOID -NTAPI +DDKAPI NdisQueryBuffer( IN PNDIS_BUFFER Buffer, OUT PVOID *VirtualAddress OPTIONAL, @@ -1749,7 +1749,7 @@ NdisQueryBuffer( NDISAPI VOID -NTAPI +DDKAPI NdisQueryBufferOffset( IN PNDIS_BUFFER Buffer, OUT PUINT Offset, @@ -2152,7 +2152,7 @@ NdisQueryPacketLength( NDISAPI VOID -NTAPI +DDKAPI NdisCreateLookaheadBufferFromSharedMemory( IN PVOID pSharedMemory, IN UINT LookaheadLength, @@ -2160,7 +2160,7 @@ NdisCreateLookaheadBufferFromSharedMemory( NDISAPI VOID -NTAPI +DDKAPI NdisDestroyLookaheadBufferFromSharedMemory( IN PVOID pLookaheadBuffer); @@ -2236,7 +2236,7 @@ NdisDestroyLookaheadBufferFromSharedMemory( NDISAPI NDIS_STATUS -NTAPI +DDKAPI NdisAllocateMemory( OUT PVOID *VirtualAddress, IN UINT Length, @@ -2245,7 +2245,7 @@ NdisAllocateMemory( NDISAPI VOID -NTAPI +DDKAPI NdisFreeMemory( IN PVOID VirtualAddress, IN UINT Length, @@ -2253,7 +2253,7 @@ NdisFreeMemory( NDISAPI VOID -NTAPI +DDKAPI NdisImmediateReadSharedMemory( IN NDIS_HANDLE WrapperConfigurationContext, IN ULONG SharedMemoryAddress, @@ -2262,7 +2262,7 @@ NdisImmediateReadSharedMemory( NDISAPI VOID -NTAPI +DDKAPI NdisImmediateWriteSharedMemory( IN NDIS_HANDLE WrapperConfigurationContext, IN ULONG SharedMemoryAddress, @@ -2271,7 +2271,7 @@ NdisImmediateWriteSharedMemory( NDISAPI VOID -NTAPI +DDKAPI NdisMAllocateSharedMemory( IN NDIS_HANDLE MiniportAdapterHandle, IN ULONG Length, @@ -2281,7 +2281,7 @@ NdisMAllocateSharedMemory( NDISAPI NDIS_STATUS -NTAPI +DDKAPI NdisMAllocateSharedMemoryAsync( IN NDIS_HANDLE MiniportAdapterHandle, IN ULONG Length, @@ -2299,7 +2299,7 @@ NdisMAllocateSharedMemoryAsync( NDISAPI VOID -NTAPI +DDKAPI NdisUpdateSharedMemory( IN NDIS_HANDLE NdisAdapterHandle, IN ULONG Length, @@ -2413,7 +2413,7 @@ NdisUpdateSharedMemory( RtlZeroMemory(Destination, Length) typedef VOID -(NTAPI *NDIS_BLOCK_INITIALIZER) ( +(DDKAPI *NDIS_BLOCK_INITIALIZER) ( IN PUCHAR Block, IN SIZE_T NumberOfBytes ); @@ -2422,7 +2422,7 @@ typedef VOID NDISAPI VOID -NTAPI +DDKAPI NdisOpenConfiguration( OUT PNDIS_STATUS Status, OUT PNDIS_HANDLE ConfigurationHandle, @@ -2430,7 +2430,7 @@ NdisOpenConfiguration( NDISAPI VOID -NTAPI +DDKAPI NdisReadNetworkAddress( OUT PNDIS_STATUS Status, OUT PVOID *NetworkAddress, @@ -2439,7 +2439,7 @@ NdisReadNetworkAddress( NDISAPI VOID -NTAPI +DDKAPI NdisReadEisaSlotInformation( OUT PNDIS_STATUS Status, IN NDIS_HANDLE WrapperConfigurationContext, @@ -2448,7 +2448,7 @@ NdisReadEisaSlotInformation( NDISAPI VOID -NTAPI +DDKAPI NdisReadEisaSlotInformationEx( OUT PNDIS_STATUS Status, IN NDIS_HANDLE WrapperConfigurationContext, @@ -2458,7 +2458,7 @@ NdisReadEisaSlotInformationEx( NDISAPI ULONG -NTAPI +DDKAPI NdisReadPciSlotInformation( IN NDIS_HANDLE NdisAdapterHandle, IN ULONG SlotNumber, @@ -2468,7 +2468,7 @@ NdisReadPciSlotInformation( NDISAPI ULONG -NTAPI +DDKAPI NdisWritePciSlotInformation( IN NDIS_HANDLE NdisAdapterHandle, IN ULONG SlotNumber, @@ -2482,7 +2482,7 @@ NdisWritePciSlotInformation( NDISAPI NDIS_STATUS -NTAPI +DDKAPI NdisAnsiStringToUnicodeString( IN OUT PNDIS_STRING DestinationString, IN PNDIS_ANSI_STRING SourceString); @@ -2499,21 +2499,21 @@ NdisAnsiStringToUnicodeString( NDISAPI VOID -NTAPI +DDKAPI NdisInitAnsiString( IN OUT PNDIS_ANSI_STRING DestinationString, IN PCSTR SourceString); NDISAPI VOID -NTAPI +DDKAPI NdisInitUnicodeString( IN OUT PNDIS_STRING DestinationString, IN PCWSTR SourceString); NDISAPI NDIS_STATUS -NTAPI +DDKAPI NdisUnicodeStringToAnsiString( IN OUT PNDIS_ANSI_STRING DestinationString, IN PNDIS_STRING SourceString); @@ -2526,37 +2526,37 @@ NdisUnicodeStringToAnsiString( NDISAPI VOID -NTAPI +DDKAPI NdisAllocateSpinLock( IN PNDIS_SPIN_LOCK SpinLock); NDISAPI VOID -NTAPI +DDKAPI NdisFreeSpinLock( IN PNDIS_SPIN_LOCK SpinLock); NDISAPI VOID -NTAPI +DDKAPI NdisAcquireSpinLock( IN PNDIS_SPIN_LOCK SpinLock); NDISAPI VOID -NTAPI +DDKAPI NdisReleaseSpinLock( IN PNDIS_SPIN_LOCK SpinLock); NDISAPI VOID -NTAPI +DDKAPI NdisDprAcquireSpinLock( IN PNDIS_SPIN_LOCK SpinLock); NDISAPI VOID -NTAPI +DDKAPI NdisDprReleaseSpinLock( IN PNDIS_SPIN_LOCK SpinLock); @@ -2821,13 +2821,13 @@ NdisDprReleaseSpinLock( NDISAPI VOID -NTAPI +DDKAPI NdisCloseConfiguration( IN NDIS_HANDLE ConfigurationHandle); NDISAPI VOID -NTAPI +DDKAPI NdisReadConfiguration( OUT PNDIS_STATUS Status, OUT PNDIS_CONFIGURATION_PARAMETER *ParameterValue, @@ -2837,7 +2837,7 @@ NdisReadConfiguration( NDISAPI VOID -NTAPI +DDKAPI NdisWriteConfiguration( OUT PNDIS_STATUS Status, IN NDIS_HANDLE WrapperConfigurationContext, @@ -2846,7 +2846,7 @@ NdisWriteConfiguration( NDISAPI VOID -__cdecl +DDKCDECLAPI NdisWriteErrorLogEntry( IN NDIS_HANDLE NdisAdapterHandle, IN NDIS_ERROR_CODE ErrorCode, @@ -2862,18 +2862,18 @@ NdisWriteErrorLogEntry( NDISAPI VOID -NTAPI +DDKAPI NdisGetCurrentSystemTime( IN PLARGE_INTEGER pSystemTime); NDISAPI CCHAR -NTAPI +DDKAPI NdisSystemProcessorCount(VOID); NDISAPI VOID -NTAPI +DDKAPI NdisGetCurrentProcessorCpuUsage( OUT PULONG pCpuUsage); @@ -2902,7 +2902,7 @@ NdisGetCurrentProcessorCpuUsage( NDISAPI VOID -NTAPI +DDKAPI NdisMFreeSharedMemory( IN NDIS_HANDLE MiniportAdapterHandle, IN ULONG Length, @@ -2912,7 +2912,7 @@ NdisMFreeSharedMemory( NDISAPI VOID -NTAPI +DDKAPI NdisMWanIndicateReceive( OUT PNDIS_STATUS Status, IN NDIS_HANDLE MiniportAdapterHandle, @@ -2922,13 +2922,13 @@ NdisMWanIndicateReceive( NDISAPI VOID -NTAPI +DDKAPI NdisMWanIndicateReceiveComplete( IN NDIS_HANDLE MiniportAdapterHandle); NDISAPI VOID -NTAPI +DDKAPI NdisMWanSendComplete( IN NDIS_HANDLE MiniportAdapterHandle, IN PNDIS_WAN_PACKET Packet, @@ -2936,7 +2936,7 @@ NdisMWanSendComplete( NDISAPI NDIS_STATUS -NTAPI +DDKAPI NdisPciAssignResources( IN NDIS_HANDLE NdisMacHandle, IN NDIS_HANDLE NdisWrapperHandle, @@ -2949,7 +2949,7 @@ NdisPciAssignResources( NDISAPI VOID -NTAPI +DDKAPI NdisAcquireReadWriteLock( IN PNDIS_RW_LOCK Lock, IN BOOLEAN fWrite, @@ -2957,7 +2957,7 @@ NdisAcquireReadWriteLock( NDISAPI NDIS_STATUS -NTAPI +DDKAPI NdisAllocateMemoryWithTag( OUT PVOID *VirtualAddress, IN UINT Length, @@ -2965,7 +2965,7 @@ NdisAllocateMemoryWithTag( NDISAPI VOID -NTAPI +DDKAPI NdisAllocatePacketPoolEx( OUT PNDIS_STATUS Status, OUT PNDIS_HANDLE PoolHandle, @@ -2975,7 +2975,7 @@ NdisAllocatePacketPoolEx( NDISAPI VOID -NTAPI +DDKAPI NdisCompletePnPEvent( IN NDIS_STATUS Status, IN NDIS_HANDLE NdisBindingHandle, @@ -2983,7 +2983,7 @@ NdisCompletePnPEvent( NDISAPI VOID -NTAPI +DDKAPI NdisGetCurrentProcessorCounts( OUT PULONG pIdleCount, OUT PULONG pKernelAndUser, @@ -2991,39 +2991,39 @@ NdisGetCurrentProcessorCounts( NDISAPI VOID -NTAPI +DDKAPI NdisGetDriverHandle( IN PNDIS_HANDLE NdisBindingHandle, OUT PNDIS_HANDLE NdisDriverHandle); NDISAPI PNDIS_PACKET -NTAPI +DDKAPI NdisGetReceivedPacket( IN PNDIS_HANDLE NdisBindingHandle, IN PNDIS_HANDLE MacContext); NDISAPI VOID -NTAPI +DDKAPI NdisGetSystemUpTime( OUT PULONG pSystemUpTime); NDISAPI VOID -NTAPI +DDKAPI NdisInitializeReadWriteLock( IN PNDIS_RW_LOCK Lock); NDISAPI NDIS_STATUS -NTAPI +DDKAPI NdisMDeregisterDevice( IN NDIS_HANDLE NdisDeviceHandle); NDISAPI VOID -NTAPI +DDKAPI NdisMGetDeviceProperty( IN NDIS_HANDLE MiniportAdapterHandle, IN OUT PDEVICE_OBJECT *PhysicalDeviceObject OPTIONAL, @@ -3034,7 +3034,7 @@ NdisMGetDeviceProperty( NDISAPI NDIS_STATUS -NTAPI +DDKAPI NdisMInitializeScatterGatherDma( IN NDIS_HANDLE MiniportAdapterHandle, IN BOOLEAN Dma64BitAddresses, @@ -3042,20 +3042,20 @@ NdisMInitializeScatterGatherDma( NDISAPI NDIS_STATUS -NTAPI +DDKAPI NdisMPromoteMiniport( IN NDIS_HANDLE MiniportAdapterHandle); NDISAPI NDIS_STATUS -NTAPI +DDKAPI NdisMQueryAdapterInstanceName( OUT PNDIS_STRING AdapterInstanceName, IN NDIS_HANDLE MiniportAdapterHandle); NDISAPI NDIS_STATUS -NTAPI +DDKAPI NdisMRegisterDevice( IN NDIS_HANDLE NdisWrapperHandle, IN PNDIS_STRING DeviceName, @@ -3066,27 +3066,27 @@ NdisMRegisterDevice( NDISAPI VOID -NTAPI +DDKAPI NdisMRegisterUnloadHandler( IN NDIS_HANDLE NdisWrapperHandle, IN PDRIVER_UNLOAD UnloadHandler); NDISAPI NDIS_STATUS -NTAPI +DDKAPI NdisMRemoveMiniport( IN NDIS_HANDLE MiniportAdapterHandle); NDISAPI NDIS_STATUS -NTAPI +DDKAPI NdisMSetMiniportSecondary( IN NDIS_HANDLE MiniportAdapterHandle, IN NDIS_HANDLE PrimaryMiniportAdapterHandle); NDISAPI VOID -NTAPI +DDKAPI NdisOpenConfigurationKeyByIndex( OUT PNDIS_STATUS Status, IN NDIS_HANDLE ConfigurationHandle, @@ -3096,7 +3096,7 @@ NdisOpenConfigurationKeyByIndex( NDISAPI VOID -NTAPI +DDKAPI NdisOpenConfigurationKeyByName( OUT PNDIS_STATUS Status, IN NDIS_HANDLE ConfigurationHandle, @@ -3105,20 +3105,20 @@ NdisOpenConfigurationKeyByName( NDISAPI UINT -NTAPI +DDKAPI NdisPacketPoolUsage( IN NDIS_HANDLE PoolHandle); NDISAPI NDIS_STATUS -NTAPI +DDKAPI NdisQueryAdapterInstanceName( OUT PNDIS_STRING AdapterInstanceName, IN NDIS_HANDLE NdisBindingHandle); NDISAPI ULONG -NTAPI +DDKAPI NdisReadPcmciaAttributeMemory( IN NDIS_HANDLE NdisAdapterHandle, IN ULONG Offset, @@ -3127,14 +3127,14 @@ NdisReadPcmciaAttributeMemory( NDISAPI VOID -NTAPI +DDKAPI NdisReleaseReadWriteLock( IN PNDIS_RW_LOCK Lock, IN PLOCK_STATE LockState); NDISAPI NDIS_STATUS -NTAPI +DDKAPI NdisWriteEventLogEntry( IN PVOID LogHandle, IN NDIS_STATUS EventCode, @@ -3146,7 +3146,7 @@ NdisWriteEventLogEntry( NDISAPI ULONG -NTAPI +DDKAPI NdisWritePcmciaAttributeMemory( IN NDIS_HANDLE NdisAdapterHandle, IN ULONG Offset, @@ -3158,7 +3158,7 @@ NdisWritePcmciaAttributeMemory( NDISAPI NDIS_STATUS -NTAPI +DDKAPI NdisClAddParty( IN NDIS_HANDLE NdisVcHandle, IN NDIS_HANDLE ProtocolPartyContext, @@ -3167,13 +3167,13 @@ NdisClAddParty( NDISAPI NDIS_STATUS -NTAPI +DDKAPI NdisClCloseAddressFamily( IN NDIS_HANDLE NdisAfHandle); NDISAPI NDIS_STATUS -NTAPI +DDKAPI NdisClCloseCall( IN NDIS_HANDLE NdisVcHandle, IN NDIS_HANDLE NdisPartyHandle OPTIONAL, @@ -3182,13 +3182,13 @@ NdisClCloseCall( NDISAPI NDIS_STATUS -NTAPI +DDKAPI NdisClDeregisterSap( IN NDIS_HANDLE NdisSapHandle); NDISAPI NDIS_STATUS -NTAPI +DDKAPI NdisClDropParty( IN NDIS_HANDLE NdisPartyHandle, IN PVOID Buffer OPTIONAL, @@ -3196,7 +3196,7 @@ NdisClDropParty( NDISAPI VOID -NTAPI +DDKAPI NdisClIncomingCallComplete( IN NDIS_STATUS Status, IN NDIS_HANDLE NdisVcHandle, @@ -3204,7 +3204,7 @@ NdisClIncomingCallComplete( NDISAPI NDIS_STATUS -NTAPI +DDKAPI NdisClMakeCall( IN NDIS_HANDLE NdisVcHandle, IN OUT PCO_CALL_PARAMETERS CallParameters, @@ -3213,7 +3213,7 @@ NdisClMakeCall( NDISAPI NDIS_STATUS -NTAPI +DDKAPI NdisClModifyCallQoS( IN NDIS_HANDLE NdisVcHandle, IN PCO_CALL_PARAMETERS CallParameters); @@ -3221,7 +3221,7 @@ NdisClModifyCallQoS( NDISAPI NDIS_STATUS -NTAPI +DDKAPI NdisClOpenAddressFamily( IN NDIS_HANDLE NdisBindingHandle, IN PCO_ADDRESS_FAMILY AddressFamily, @@ -3232,7 +3232,7 @@ NdisClOpenAddressFamily( NDISAPI NDIS_STATUS -NTAPI +DDKAPI NdisClRegisterSap( IN NDIS_HANDLE NdisAfHandle, IN NDIS_HANDLE ProtocolSapContext, @@ -3244,14 +3244,14 @@ NdisClRegisterSap( NDISAPI NDIS_STATUS -NTAPI +DDKAPI NdisCmActivateVc( IN NDIS_HANDLE NdisVcHandle, IN OUT PCO_CALL_PARAMETERS CallParameters); NDISAPI VOID -NTAPI +DDKAPI NdisCmAddPartyComplete( IN NDIS_STATUS Status, IN NDIS_HANDLE NdisPartyHandle, @@ -3260,14 +3260,14 @@ NdisCmAddPartyComplete( NDISAPI VOID -NTAPI +DDKAPI NdisCmCloseAddressFamilyComplete( IN NDIS_STATUS Status, IN NDIS_HANDLE NdisAfHandle); NDISAPI VOID -NTAPI +DDKAPI NdisCmCloseCallComplete( IN NDIS_STATUS Status, IN NDIS_HANDLE NdisVcHandle, @@ -3275,26 +3275,26 @@ NdisCmCloseCallComplete( NDISAPI NDIS_STATUS -NTAPI +DDKAPI NdisCmDeactivateVc( IN NDIS_HANDLE NdisVcHandle); NDISAPI VOID -NTAPI +DDKAPI NdisCmDeregisterSapComplete( IN NDIS_STATUS Status, IN NDIS_HANDLE NdisSapHandle); NDISAPI VOID -NTAPI +DDKAPI NdisCmDispatchCallConnected( IN NDIS_HANDLE NdisVcHandle); NDISAPI NDIS_STATUS -NTAPI +DDKAPI NdisCmDispatchIncomingCall( IN NDIS_HANDLE NdisSapHandle, IN NDIS_HANDLE NdisVcHandle, @@ -3302,14 +3302,14 @@ NdisCmDispatchIncomingCall( NDISAPI VOID -NTAPI +DDKAPI NdisCmDispatchIncomingCallQoSChange( IN NDIS_HANDLE NdisVcHandle, IN PCO_CALL_PARAMETERS CallParameters); NDISAPI VOID -NTAPI +DDKAPI NdisCmDispatchIncomingCloseCall( IN NDIS_STATUS CloseStatus, IN NDIS_HANDLE NdisVcHandle, @@ -3318,7 +3318,7 @@ NdisCmDispatchIncomingCloseCall( NDISAPI VOID -NTAPI +DDKAPI NdisCmDispatchIncomingDropParty( IN NDIS_STATUS DropStatus, IN NDIS_HANDLE NdisPartyHandle, @@ -3327,14 +3327,14 @@ NdisCmDispatchIncomingDropParty( NDISAPI VOID -NTAPI +DDKAPI NdisCmDropPartyComplete( IN NDIS_STATUS Status, IN NDIS_HANDLE NdisPartyHandle); NDISAPI VOID -NTAPI +DDKAPI NdisCmMakeCallComplete( IN NDIS_STATUS Status, IN NDIS_HANDLE NdisVcHandle, @@ -3344,7 +3344,7 @@ NdisCmMakeCallComplete( NDISAPI VOID -NTAPI +DDKAPI NdisCmModifyCallQoSComplete( IN NDIS_STATUS Status, IN NDIS_HANDLE NdisVcHandle, @@ -3352,7 +3352,7 @@ NdisCmModifyCallQoSComplete( NDISAPI VOID -NTAPI +DDKAPI NdisCmOpenAddressFamilyComplete( IN NDIS_STATUS Status, IN NDIS_HANDLE NdisAfHandle, @@ -3360,7 +3360,7 @@ NdisCmOpenAddressFamilyComplete( NDISAPI NDIS_STATUS -NTAPI +DDKAPI NdisCmRegisterAddressFamily( IN NDIS_HANDLE NdisBindingHandle, IN PCO_ADDRESS_FAMILY AddressFamily, @@ -3369,7 +3369,7 @@ NdisCmRegisterAddressFamily( NDISAPI VOID -NTAPI +DDKAPI NdisCmRegisterSapComplete( IN NDIS_STATUS Status, IN NDIS_HANDLE NdisSapHandle, @@ -3378,14 +3378,14 @@ NdisCmRegisterSapComplete( NDISAPI NDIS_STATUS -NTAPI +DDKAPI NdisMCmActivateVc( IN NDIS_HANDLE NdisVcHandle, IN PCO_CALL_PARAMETERS CallParameters); NDISAPI NDIS_STATUS -NTAPI +DDKAPI NdisMCmCreateVc( IN NDIS_HANDLE MiniportAdapterHandle, IN NDIS_HANDLE NdisAfHandle, @@ -3394,19 +3394,19 @@ NdisMCmCreateVc( NDISAPI NDIS_STATUS -NTAPI +DDKAPI NdisMCmDeactivateVc( IN NDIS_HANDLE NdisVcHandle); NDISAPI NDIS_STATUS -NTAPI +DDKAPI NdisMCmDeleteVc( IN NDIS_HANDLE NdisVcHandle); NDISAPI NDIS_STATUS -NTAPI +DDKAPI NdisMCmRegisterAddressFamily( IN NDIS_HANDLE MiniportAdapterHandle, IN PCO_ADDRESS_FAMILY AddressFamily, @@ -3415,7 +3415,7 @@ NdisMCmRegisterAddressFamily( NDISAPI NDIS_STATUS -NTAPI +DDKAPI NdisMCmRequest( IN NDIS_HANDLE NdisAfHandle, IN NDIS_HANDLE NdisVcHandle OPTIONAL, @@ -3427,7 +3427,7 @@ NdisMCmRequest( NDISAPI NDIS_STATUS -NTAPI +DDKAPI NdisCoCreateVc( IN NDIS_HANDLE NdisBindingHandle, IN NDIS_HANDLE NdisAfHandle OPTIONAL, @@ -3436,13 +3436,13 @@ NdisCoCreateVc( NDISAPI NDIS_STATUS -NTAPI +DDKAPI NdisCoDeleteVc( IN NDIS_HANDLE NdisVcHandle); NDISAPI NDIS_STATUS -NTAPI +DDKAPI NdisCoRequest( IN NDIS_HANDLE NdisBindingHandle, IN NDIS_HANDLE NdisAfHandle OPTIONAL, @@ -3452,7 +3452,7 @@ NdisCoRequest( NDISAPI VOID -NTAPI +DDKAPI NdisCoRequestComplete( IN NDIS_STATUS Status, IN NDIS_HANDLE NdisAfHandle, @@ -3462,7 +3462,7 @@ NdisCoRequestComplete( NDISAPI VOID -NTAPI +DDKAPI NdisCoSendPackets( IN NDIS_HANDLE NdisVcHandle, IN PPNDIS_PACKET PacketArray, @@ -3470,7 +3470,7 @@ NdisCoSendPackets( NDISAPI VOID -NTAPI +DDKAPI NdisMCoActivateVcComplete( IN NDIS_STATUS Status, IN NDIS_HANDLE NdisVcHandle, @@ -3478,14 +3478,14 @@ NdisMCoActivateVcComplete( NDISAPI VOID -NTAPI +DDKAPI NdisMCoDeactivateVcComplete( IN NDIS_STATUS Status, IN NDIS_HANDLE NdisVcHandle); NDISAPI VOID -NTAPI +DDKAPI NdisMCoIndicateReceivePacket( IN NDIS_HANDLE NdisVcHandle, IN PPNDIS_PACKET PacketArray, @@ -3493,7 +3493,7 @@ NdisMCoIndicateReceivePacket( NDISAPI VOID -NTAPI +DDKAPI NdisMCoIndicateStatus( IN NDIS_HANDLE MiniportAdapterHandle, IN NDIS_HANDLE NdisVcHandle OPTIONAL, @@ -3503,13 +3503,13 @@ NdisMCoIndicateStatus( NDISAPI VOID -NTAPI +DDKAPI NdisMCoReceiveComplete( IN NDIS_HANDLE MiniportAdapterHandle); NDISAPI VOID -NTAPI +DDKAPI NdisMCoRequestComplete( IN NDIS_STATUS Status, IN NDIS_HANDLE MiniportAdapterHandle, @@ -3517,7 +3517,7 @@ NdisMCoRequestComplete( NDISAPI VOID -NTAPI +DDKAPI NdisMCoSendComplete( IN NDIS_STATUS Status, IN NDIS_HANDLE NdisVcHandle, @@ -3528,53 +3528,53 @@ NdisMCoSendComplete( NDISAPI VOID -NTAPI +DDKAPI NdisIMAssociateMiniport( IN NDIS_HANDLE DriverHandle, IN NDIS_HANDLE ProtocolHandle); NDISAPI NDIS_STATUS -NTAPI +DDKAPI NdisIMCancelInitializeDeviceInstance( IN NDIS_HANDLE DriverHandle, IN PNDIS_STRING DeviceInstance); NDISAPI VOID -NTAPI +DDKAPI NdisIMCopySendCompletePerPacketInfo( IN PNDIS_PACKET DstPacket, IN PNDIS_PACKET SrcPacket); NDISAPI VOID -NTAPI +DDKAPI NdisIMCopySendPerPacketInfo( IN PNDIS_PACKET DstPacket, IN PNDIS_PACKET SrcPacket); NDISAPI VOID -NTAPI +DDKAPI NdisIMDeregisterLayeredMiniport( IN NDIS_HANDLE DriverHandle); NDISAPI NDIS_HANDLE -NTAPI +DDKAPI NdisIMGetBindingContext( IN NDIS_HANDLE NdisBindingHandle); NDISAPI NDIS_HANDLE -NTAPI +DDKAPI NdisIMGetDeviceContext( IN NDIS_HANDLE MiniportAdapterHandle); NDISAPI NDIS_STATUS -NTAPI +DDKAPI NdisIMInitializeDeviceInstanceEx( IN NDIS_HANDLE DriverHandle, IN PNDIS_STRING DriverInstance, @@ -3582,14 +3582,14 @@ NdisIMInitializeDeviceInstanceEx( NDISAPI PSINGLE_LIST_ENTRY -NTAPI +DDKAPI NdisInterlockedPopEntrySList( IN PSLIST_HEADER ListHead, IN PKSPIN_LOCK Lock); NDISAPI PSINGLE_LIST_ENTRY -NTAPI +DDKAPI NdisInterlockedPushEntrySList( IN PSLIST_HEADER ListHead, IN PSINGLE_LIST_ENTRY ListEntry, @@ -3597,7 +3597,7 @@ NdisInterlockedPushEntrySList( NDISAPI VOID -NTAPI +DDKAPI NdisQueryBufferSafe( IN PNDIS_BUFFER Buffer, OUT PVOID *VirtualAddress OPTIONAL, @@ -3607,27 +3607,27 @@ NdisQueryBufferSafe( /* Prototypes for NDIS_MINIPORT_CHARACTERISTICS */ typedef BOOLEAN -(NTAPI *W_CHECK_FOR_HANG_HANDLER)( +(DDKAPI *W_CHECK_FOR_HANG_HANDLER)( IN NDIS_HANDLE MiniportAdapterContext); typedef VOID -(NTAPI *W_DISABLE_INTERRUPT_HANDLER)( +(DDKAPI *W_DISABLE_INTERRUPT_HANDLER)( IN NDIS_HANDLE MiniportAdapterContext); typedef VOID -(NTAPI *W_ENABLE_INTERRUPT_HANDLER)( +(DDKAPI *W_ENABLE_INTERRUPT_HANDLER)( IN NDIS_HANDLE MiniportAdapterContext); typedef VOID -(NTAPI *W_HALT_HANDLER)( +(DDKAPI *W_HALT_HANDLER)( IN NDIS_HANDLE MiniportAdapterContext); typedef VOID -(NTAPI *W_HANDLE_INTERRUPT_HANDLER)( +(DDKAPI *W_HANDLE_INTERRUPT_HANDLER)( IN NDIS_HANDLE MiniportAdapterContext); typedef NDIS_STATUS -(NTAPI *W_INITIALIZE_HANDLER)( +(DDKAPI *W_INITIALIZE_HANDLER)( OUT PNDIS_STATUS OpenErrorStatus, OUT PUINT SelectedMediumIndex, IN PNDIS_MEDIUM MediumArray, @@ -3636,13 +3636,13 @@ typedef NDIS_STATUS IN NDIS_HANDLE WrapperConfigurationContext); typedef VOID -(NTAPI *W_ISR_HANDLER)( +(DDKAPI *W_ISR_HANDLER)( OUT PBOOLEAN InterruptRecognized, OUT PBOOLEAN QueueMiniportHandleInterrupt, IN NDIS_HANDLE MiniportAdapterContext); typedef NDIS_STATUS -(NTAPI *W_QUERY_INFORMATION_HANDLER)( +(DDKAPI *W_QUERY_INFORMATION_HANDLER)( IN NDIS_HANDLE MiniportAdapterContext, IN NDIS_OID Oid, IN PVOID InformationBuffer, @@ -3651,30 +3651,30 @@ typedef NDIS_STATUS OUT PULONG BytesNeeded); typedef NDIS_STATUS -(NTAPI *W_RECONFIGURE_HANDLER)( +(DDKAPI *W_RECONFIGURE_HANDLER)( OUT PNDIS_STATUS OpenErrorStatus, IN NDIS_HANDLE MiniportAdapterContext, IN NDIS_HANDLE WrapperConfigurationContext); typedef NDIS_STATUS -(NTAPI *W_RESET_HANDLER)( +(DDKAPI *W_RESET_HANDLER)( OUT PBOOLEAN AddressingReset, IN NDIS_HANDLE MiniportAdapterContext); typedef NDIS_STATUS -(NTAPI *W_SEND_HANDLER)( +(DDKAPI *W_SEND_HANDLER)( IN NDIS_HANDLE MiniportAdapterContext, IN PNDIS_PACKET Packet, IN UINT Flags); typedef NDIS_STATUS -(NTAPI *WM_SEND_HANDLER)( +(DDKAPI *WM_SEND_HANDLER)( IN NDIS_HANDLE MiniportAdapterContext, IN NDIS_HANDLE NdisLinkHandle, IN PNDIS_WAN_PACKET Packet); typedef NDIS_STATUS -(NTAPI *W_SET_INFORMATION_HANDLER)( +(DDKAPI *W_SET_INFORMATION_HANDLER)( IN NDIS_HANDLE MiniportAdapterContext, IN NDIS_OID Oid, IN PVOID InformationBuffer, @@ -3683,7 +3683,7 @@ typedef NDIS_STATUS OUT PULONG BytesNeeded); typedef NDIS_STATUS -(NTAPI *W_TRANSFER_DATA_HANDLER)( +(DDKAPI *W_TRANSFER_DATA_HANDLER)( OUT PNDIS_PACKET Packet, OUT PUINT BytesTransferred, IN NDIS_HANDLE MiniportAdapterContext, @@ -3692,7 +3692,7 @@ typedef NDIS_STATUS IN UINT BytesToTransfer); typedef NDIS_STATUS -(NTAPI *WM_TRANSFER_DATA_HANDLER)( +(DDKAPI *WM_TRANSFER_DATA_HANDLER)( VOID); @@ -3724,18 +3724,18 @@ typedef struct _NDIS30_MINIPORT_CHARACTERISTICS { /* Extensions for NDIS 4.0 miniports */ typedef VOID -(NTAPI *W_SEND_PACKETS_HANDLER)( +(DDKAPI *W_SEND_PACKETS_HANDLER)( IN NDIS_HANDLE MiniportAdapterContext, IN PPNDIS_PACKET PacketArray, IN UINT NumberOfPackets); typedef VOID -(NTAPI *W_RETURN_PACKET_HANDLER)( +(DDKAPI *W_RETURN_PACKET_HANDLER)( IN NDIS_HANDLE MiniportAdapterContext, IN PNDIS_PACKET Packet); typedef VOID -(NTAPI *W_ALLOCATE_COMPLETE_HANDLER)( +(DDKAPI *W_ALLOCATE_COMPLETE_HANDLER)( IN NDIS_HANDLE MiniportAdapterContext, IN PVOID VirtualAddress, IN PNDIS_PHYSICAL_ADDRESS PhysicalAddress, @@ -3768,32 +3768,32 @@ typedef struct _NDIS40_MINIPORT_CHARACTERISTICS { /* Extensions for NDIS 5.0 miniports */ typedef NDIS_STATUS -(NTAPI *W_CO_CREATE_VC_HANDLER)( +(DDKAPI *W_CO_CREATE_VC_HANDLER)( IN NDIS_HANDLE MiniportAdapterContext, IN NDIS_HANDLE NdisVcHandle, OUT PNDIS_HANDLE MiniportVcContext); typedef NDIS_STATUS -(NTAPI *W_CO_DELETE_VC_HANDLER)( +(DDKAPI *W_CO_DELETE_VC_HANDLER)( IN NDIS_HANDLE MiniportVcContext); typedef NDIS_STATUS -(NTAPI *W_CO_ACTIVATE_VC_HANDLER)( +(DDKAPI *W_CO_ACTIVATE_VC_HANDLER)( IN NDIS_HANDLE MiniportVcContext, IN OUT PCO_CALL_PARAMETERS CallParameters); typedef NDIS_STATUS -(NTAPI *W_CO_DEACTIVATE_VC_HANDLER)( +(DDKAPI *W_CO_DEACTIVATE_VC_HANDLER)( IN NDIS_HANDLE MiniportVcContext); typedef VOID -(NTAPI *W_CO_SEND_PACKETS_HANDLER)( +(DDKAPI *W_CO_SEND_PACKETS_HANDLER)( IN NDIS_HANDLE MiniportVcContext, IN PPNDIS_PACKET PacketArray, IN UINT NumberOfPackets); typedef NDIS_STATUS -(NTAPI *W_CO_REQUEST_HANDLER)( +(DDKAPI *W_CO_REQUEST_HANDLER)( IN NDIS_HANDLE MiniportAdapterContext, IN NDIS_HANDLE MiniportVcContext OPTIONAL, IN OUT PNDIS_REQUEST NdisRequest); @@ -3830,19 +3830,19 @@ typedef struct _NDIS50_MINIPORT_CHARACTERISTICS { /* Extensions for NDIS 5.1 miniports */ typedef VOID -(NTAPI *W_CANCEL_SEND_PACKETS_HANDLER)( +(DDKAPI *W_CANCEL_SEND_PACKETS_HANDLER)( IN NDIS_HANDLE MiniportAdapterContext, IN PVOID CancelId); typedef VOID -(NTAPI *W_PNP_EVENT_NOTIFY_HANDLER)( +(DDKAPI *W_PNP_EVENT_NOTIFY_HANDLER)( IN NDIS_HANDLE MiniportAdapterContext, IN NDIS_DEVICE_PNP_EVENT PnPEvent, IN PVOID InformationBuffer, IN ULONG InformationBufferLength); typedef VOID -(NTAPI *W_MINIPORT_SHUTDOWN_HANDLER)( +(DDKAPI *W_MINIPORT_SHUTDOWN_HANDLER)( IN PVOID ShutdownContext); #ifdef __cplusplus @@ -3887,12 +3887,12 @@ typedef struct _NDIS_MINIPORT_CHARACTERISTICS { typedef NDIS_STATUS -(NTAPI *SEND_HANDLER)( +(DDKAPI *SEND_HANDLER)( IN NDIS_HANDLE MacBindingHandle, IN PNDIS_PACKET Packet); typedef NDIS_STATUS -(NTAPI *TRANSFER_DATA_HANDLER)( +(DDKAPI *TRANSFER_DATA_HANDLER)( IN NDIS_HANDLE MacBindingHandle, IN NDIS_HANDLE MacReceiveContext, IN UINT ByteOffset, @@ -3901,11 +3901,11 @@ typedef NDIS_STATUS OUT PUINT BytesTransferred); typedef NDIS_STATUS -(NTAPI *RESET_HANDLER)( +(DDKAPI *RESET_HANDLER)( IN NDIS_HANDLE MacBindingHandle); typedef NDIS_STATUS -(NTAPI *REQUEST_HANDLER)( +(DDKAPI *REQUEST_HANDLER)( IN NDIS_HANDLE MacBindingHandle, IN PNDIS_REQUEST NdisRequest); @@ -3914,11 +3914,11 @@ typedef NDIS_STATUS /* Structures available only to full MAC drivers */ typedef BOOLEAN -(NTAPI *PNDIS_INTERRUPT_SERVICE)( +(DDKAPI *PNDIS_INTERRUPT_SERVICE)( IN PVOID InterruptContext); typedef VOID -(NTAPI *PNDIS_DEFERRED_PROCESSING)( +(DDKAPI *PNDIS_DEFERRED_PROCESSING)( IN PVOID SystemSpecific1, IN PVOID InterruptContext, IN PVOID SystemSpecific2, @@ -4012,11 +4012,11 @@ typedef struct _NDIS_BIND_PATHS { typedef VOID -(NTAPI *ETH_RCV_COMPLETE_HANDLER)( +(DDKAPI *ETH_RCV_COMPLETE_HANDLER)( IN PETH_FILTER Filter); typedef VOID -(NTAPI *ETH_RCV_INDICATE_HANDLER)( +(DDKAPI *ETH_RCV_INDICATE_HANDLER)( IN PETH_FILTER Filter, IN NDIS_HANDLE MacReceiveContext, IN PCHAR Address, @@ -4027,11 +4027,11 @@ typedef VOID IN UINT PacketSize); typedef VOID -(NTAPI *FDDI_RCV_COMPLETE_HANDLER)( +(DDKAPI *FDDI_RCV_COMPLETE_HANDLER)( IN PFDDI_FILTER Filter); typedef VOID -(NTAPI *FDDI_RCV_INDICATE_HANDLER)( +(DDKAPI *FDDI_RCV_INDICATE_HANDLER)( IN PFDDI_FILTER Filter, IN NDIS_HANDLE MacReceiveContext, IN PCHAR Address, @@ -4043,17 +4043,17 @@ typedef VOID IN UINT PacketSize); typedef VOID -(NTAPI *FILTER_PACKET_INDICATION_HANDLER)( +(DDKAPI *FILTER_PACKET_INDICATION_HANDLER)( IN NDIS_HANDLE Miniport, IN PPNDIS_PACKET PacketArray, IN UINT NumberOfPackets); typedef VOID -(NTAPI *TR_RCV_COMPLETE_HANDLER)( +(DDKAPI *TR_RCV_COMPLETE_HANDLER)( IN PTR_FILTER Filter); typedef VOID -(NTAPI *TR_RCV_INDICATE_HANDLER)( +(DDKAPI *TR_RCV_INDICATE_HANDLER)( IN PTR_FILTER Filter, IN NDIS_HANDLE MacReceiveContext, IN PVOID HeaderBuffer, @@ -4063,12 +4063,12 @@ typedef VOID IN UINT PacketSize); typedef VOID -(NTAPI *WAN_RCV_COMPLETE_HANDLER)( +(DDKAPI *WAN_RCV_COMPLETE_HANDLER)( IN NDIS_HANDLE MiniportAdapterHandle, IN NDIS_HANDLE NdisLinkContext); typedef VOID -(NTAPI *WAN_RCV_HANDLER)( +(DDKAPI *WAN_RCV_HANDLER)( OUT PNDIS_STATUS Status, IN NDIS_HANDLE MiniportAdapterHandle, IN NDIS_HANDLE NdisLinkContext, @@ -4094,24 +4094,24 @@ typedef NDIS_STATUS IN PVOID WorkItemContext); typedef VOID -(NTAPI *NDIS_M_REQ_COMPLETE_HANDLER)( +(DDKAPI *NDIS_M_REQ_COMPLETE_HANDLER)( IN NDIS_HANDLE MiniportAdapterHandle, IN NDIS_STATUS Status); typedef VOID -(NTAPI *NDIS_M_RESET_COMPLETE_HANDLER)( +(DDKAPI *NDIS_M_RESET_COMPLETE_HANDLER)( IN NDIS_HANDLE MiniportAdapterHandle, IN NDIS_STATUS Status, IN BOOLEAN AddressingReset); typedef VOID -(NTAPI *NDIS_M_SEND_COMPLETE_HANDLER)( +(DDKAPI *NDIS_M_SEND_COMPLETE_HANDLER)( IN NDIS_HANDLE MiniportAdapterHandle, IN PNDIS_PACKET Packet, IN NDIS_STATUS Status); typedef VOID -(NTAPI *NDIS_M_SEND_RESOURCES_HANDLER)( +(DDKAPI *NDIS_M_SEND_RESOURCES_HANDLER)( IN NDIS_HANDLE MiniportAdapterHandle); typedef BOOLEAN @@ -4119,24 +4119,24 @@ typedef BOOLEAN IN PNDIS_MINIPORT_BLOCK Miniport); typedef VOID -(NTAPI *NDIS_M_STATUS_HANDLER)( +(DDKAPI *NDIS_M_STATUS_HANDLER)( IN NDIS_HANDLE MiniportHandle, IN NDIS_STATUS GeneralStatus, IN PVOID StatusBuffer, IN UINT StatusBufferSize); typedef VOID -(NTAPI *NDIS_M_STS_COMPLETE_HANDLER)( +(DDKAPI *NDIS_M_STS_COMPLETE_HANDLER)( IN NDIS_HANDLE MiniportAdapterHandle); typedef VOID -(NTAPI *NDIS_M_TD_COMPLETE_HANDLER)( +(DDKAPI *NDIS_M_TD_COMPLETE_HANDLER)( IN NDIS_HANDLE MiniportAdapterHandle, IN PNDIS_PACKET Packet, IN NDIS_STATUS Status, IN UINT BytesTransferred); -typedef VOID (NTAPI *NDIS_WM_SEND_COMPLETE_HANDLER)( +typedef VOID (DDKAPI *NDIS_WM_SEND_COMPLETE_HANDLER)( IN NDIS_HANDLE MiniportAdapterHandle, IN PVOID Packet, IN NDIS_STATUS Status); @@ -4376,14 +4376,14 @@ struct _NDIS_MINIPORT_BLOCK { /* Handler prototypes for NDIS_OPEN_BLOCK */ -typedef NDIS_STATUS (NTAPI *WAN_SEND_HANDLER)( +typedef NDIS_STATUS (DDKAPI *WAN_SEND_HANDLER)( IN NDIS_HANDLE MacBindingHandle, IN NDIS_HANDLE LinkHandle, IN PVOID Packet); /* NDIS 4.0 extension */ -typedef VOID (NTAPI *SEND_PACKETS_HANDLER)( +typedef VOID (DDKAPI *SEND_PACKETS_HANDLER)( IN NDIS_HANDLE MiniportAdapterContext, IN PPNDIS_PACKET PacketArray, IN UINT NumberOfPackets); @@ -4466,7 +4466,7 @@ struct _NDIS_OPEN_BLOCK NDISAPI VOID -NTAPI +DDKAPI NdisInitializeWrapper( OUT PNDIS_HANDLE NdisWrapperHandle, IN PVOID SystemSpecific1, @@ -4475,7 +4475,7 @@ NdisInitializeWrapper( NDISAPI NDIS_STATUS -NTAPI +DDKAPI NdisMAllocateMapRegisters( IN NDIS_HANDLE MiniportAdapterHandle, IN UINT DmaChannel, @@ -4521,13 +4521,13 @@ NdisMAllocateMapRegisters( NDISAPI VOID -NTAPI +DDKAPI NdisMCloseLog( IN NDIS_HANDLE LogHandle); NDISAPI NDIS_STATUS -NTAPI +DDKAPI NdisMCreateLog( IN NDIS_HANDLE MiniportAdapterHandle, IN UINT Size, @@ -4535,19 +4535,19 @@ NdisMCreateLog( NDISAPI VOID -NTAPI +DDKAPI NdisMDeregisterAdapterShutdownHandler( IN NDIS_HANDLE MiniportHandle); NDISAPI VOID -NTAPI +DDKAPI NdisMDeregisterInterrupt( IN PNDIS_MINIPORT_INTERRUPT Interrupt); NDISAPI VOID -NTAPI +DDKAPI NdisMDeregisterIoPortRange( IN NDIS_HANDLE MiniportAdapterHandle, IN UINT InitialPort, @@ -4643,13 +4643,13 @@ NdisMDeregisterIoPortRange( NDISAPI VOID -NTAPI +DDKAPI NdisMFlushLog( IN NDIS_HANDLE LogHandle); NDISAPI VOID -NTAPI +DDKAPI NdisMFreeMapRegisters( IN NDIS_HANDLE MiniportAdapterHandle); @@ -4708,7 +4708,7 @@ NdisMFreeMapRegisters( NDISAPI NDIS_STATUS -NTAPI +DDKAPI NdisMMapIoSpace( OUT PVOID *VirtualAddress, IN NDIS_HANDLE MiniportAdapterHandle, @@ -4726,7 +4726,7 @@ NdisMMapIoSpace( NDISAPI VOID -NTAPI +DDKAPI NdisMRegisterAdapterShutdownHandler( IN NDIS_HANDLE MiniportHandle, IN PVOID ShutdownContext, @@ -4734,7 +4734,7 @@ NdisMRegisterAdapterShutdownHandler( NDISAPI NDIS_STATUS -NTAPI +DDKAPI NdisMRegisterInterrupt( OUT PNDIS_MINIPORT_INTERRUPT Interrupt, IN NDIS_HANDLE MiniportAdapterHandle, @@ -4746,7 +4746,7 @@ NdisMRegisterInterrupt( NDISAPI NDIS_STATUS -NTAPI +DDKAPI NdisMRegisterIoPortRange( OUT PVOID *PortOffset, IN NDIS_HANDLE MiniportAdapterHandle, @@ -4755,7 +4755,7 @@ NdisMRegisterIoPortRange( NDISAPI NDIS_STATUS -NTAPI +DDKAPI NdisMRegisterMiniport( IN NDIS_HANDLE NdisWrapperHandle, IN PNDIS_MINIPORT_CHARACTERISTICS MiniportCharacteristics, @@ -4763,14 +4763,14 @@ NdisMRegisterMiniport( NDISAPI VOID -NTAPI +DDKAPI NdisMSetTimer( IN PNDIS_MINIPORT_TIMER Timer, IN UINT MillisecondsToDelay); NDISAPI VOID -NTAPI +DDKAPI NdisMInitializeTimer( IN OUT PNDIS_MINIPORT_TIMER Timer, IN NDIS_HANDLE MiniportAdapterHandle, @@ -4779,14 +4779,14 @@ NdisMInitializeTimer( NDISAPI VOID -NTAPI +DDKAPI NdisMSetPeriodicTimer( IN PNDIS_MINIPORT_TIMER Timer, IN UINT MillisecondPeriod); NDISAPI VOID -NTAPI +DDKAPI NdisMCancelTimer( IN PNDIS_MINIPORT_TIMER Timer, OUT PBOOLEAN TimerCancelled); @@ -4874,7 +4874,7 @@ NdisMCancelTimer( NDISAPI VOID -NTAPI +DDKAPI NdisMSetAttributesEx( IN NDIS_HANDLE MiniportAdapterHandle, IN NDIS_HANDLE MiniportAdapterContext, @@ -4895,13 +4895,13 @@ NdisMSetAttributesEx( NDISAPI VOID -NTAPI +DDKAPI NdisMSleep( IN ULONG MicrosecondsToSleep); NDISAPI BOOLEAN -NTAPI +DDKAPI NdisMSynchronizeWithInterrupt( IN PNDIS_MINIPORT_INTERRUPT Interrupt, IN PVOID SynchronizeFunction, @@ -4950,7 +4950,7 @@ NdisMSynchronizeWithInterrupt( NDISAPI NDIS_STATUS -NTAPI +DDKAPI NdisMWriteLogData( IN NDIS_HANDLE LogHandle, IN PVOID LogBuffer, @@ -4958,7 +4958,7 @@ NdisMWriteLogData( NDISAPI VOID -NTAPI +DDKAPI NdisMQueryAdapterResources( OUT PNDIS_STATUS Status, IN NDIS_HANDLE WrapperConfigurationContext, @@ -4967,14 +4967,14 @@ NdisMQueryAdapterResources( NDISAPI VOID -NTAPI +DDKAPI NdisTerminateWrapper( IN NDIS_HANDLE NdisWrapperHandle, IN PVOID SystemSpecific); NDISAPI VOID -NTAPI +DDKAPI NdisMUnmapIoSpace( IN NDIS_HANDLE MiniportAdapterHandle, IN PVOID VirtualAddress, @@ -4986,25 +4986,25 @@ NdisMUnmapIoSpace( NDISAPI VOID -NTAPI +DDKAPI NdisInitializeEvent( IN PNDIS_EVENT Event); NDISAPI VOID -NTAPI +DDKAPI NdisSetEvent( IN PNDIS_EVENT Event); NDISAPI VOID -NTAPI +DDKAPI NdisResetEvent( IN PNDIS_EVENT Event); NDISAPI BOOLEAN -NTAPI +DDKAPI NdisWaitEvent( IN PNDIS_EVENT Event, IN UINT Timeout); @@ -5013,7 +5013,7 @@ NdisWaitEvent( /* NDIS intermediate miniport structures */ -typedef VOID (NTAPI *W_MINIPORT_CALLBACK)( +typedef VOID (DDKAPI *W_MINIPORT_CALLBACK)( IN NDIS_HANDLE MiniportAdapterContext, IN PVOID CallbackContext); @@ -5023,7 +5023,7 @@ typedef VOID (NTAPI *W_MINIPORT_CALLBACK)( NDISAPI NDIS_STATUS -NTAPI +DDKAPI NdisIMDeInitializeDeviceInstance( IN NDIS_HANDLE NdisMiniportHandle); @@ -5038,7 +5038,7 @@ NdisIMDeInitializeDeviceInstance( NDISAPI NDIS_STATUS -NTAPI +DDKAPI NdisIMRegisterLayeredMiniport( IN NDIS_HANDLE NdisWrapperHandle, IN PNDIS_MINIPORT_CHARACTERISTICS MiniportCharacteristics, @@ -5050,13 +5050,13 @@ NdisIMRegisterLayeredMiniport( NDISAPI VOID -NTAPI +DDKAPI NdisFreeDmaChannel( IN PNDIS_HANDLE NdisDmaHandle); NDISAPI VOID -NTAPI +DDKAPI NdisSetupDmaTransfer( OUT PNDIS_STATUS Status, IN PNDIS_HANDLE NdisDmaHandle, @@ -5067,7 +5067,7 @@ NdisSetupDmaTransfer( NDISAPI NTSTATUS -NTAPI +DDKAPI NdisUpcaseUnicodeString( OUT PUNICODE_STRING DestinationString, IN PUNICODE_STRING SourceString); @@ -5077,7 +5077,7 @@ NdisUpcaseUnicodeString( NDISAPI VOID -NTAPI +DDKAPI NdisRequest( OUT PNDIS_STATUS Status, IN NDIS_HANDLE NdisBindingHandle, @@ -5085,14 +5085,14 @@ NdisRequest( NDISAPI VOID -NTAPI +DDKAPI NdisReset( OUT PNDIS_STATUS Status, IN NDIS_HANDLE NdisBindingHandle); NDISAPI VOID -NTAPI +DDKAPI NdisSend( OUT PNDIS_STATUS Status, IN NDIS_HANDLE NdisBindingHandle, @@ -5100,7 +5100,7 @@ NdisSend( NDISAPI VOID -NTAPI +DDKAPI NdisSendPackets( IN NDIS_HANDLE NdisBindingHandle, IN PPNDIS_PACKET PacketArray, @@ -5108,7 +5108,7 @@ NdisSendPackets( NDISAPI VOID -NTAPI +DDKAPI NdisTransferData( OUT PNDIS_STATUS Status, IN NDIS_HANDLE NdisBindingHandle, @@ -5120,14 +5120,14 @@ NdisTransferData( NDISAPI VOID -NTAPI +DDKAPI NdisCloseAdapter( OUT PNDIS_STATUS Status, IN NDIS_HANDLE NdisBindingHandle); NDISAPI VOID -NTAPI +DDKAPI NdisCompleteBindAdapter( IN NDIS_HANDLE BindAdapterContext, IN NDIS_STATUS Status, @@ -5135,21 +5135,21 @@ NdisCompleteBindAdapter( NDISAPI VOID -NTAPI +DDKAPI NdisCompleteUnbindAdapter( IN NDIS_HANDLE UnbindAdapterContext, IN NDIS_STATUS Status); NDISAPI VOID -NTAPI +DDKAPI NdisDeregisterProtocol( OUT PNDIS_STATUS Status, IN NDIS_HANDLE NdisProtocolHandle); NDISAPI VOID -NTAPI +DDKAPI NdisOpenAdapter( OUT PNDIS_STATUS Status, OUT PNDIS_STATUS OpenErrorStatus, @@ -5165,7 +5165,7 @@ NdisOpenAdapter( NDISAPI VOID -NTAPI +DDKAPI NdisOpenProtocolConfiguration( OUT PNDIS_STATUS Status, OUT PNDIS_HANDLE ConfigurationHandle, @@ -5173,7 +5173,7 @@ NdisOpenProtocolConfiguration( NDISAPI VOID -NTAPI +DDKAPI NdisRegisterProtocol( OUT PNDIS_STATUS Status, OUT PNDIS_HANDLE NdisProtocolHandle, @@ -5182,7 +5182,7 @@ NdisRegisterProtocol( NDISAPI NDIS_STATUS -NTAPI +DDKAPI NdisScheduleWorkItem( IN PNDIS_WORK_ITEM WorkItem); @@ -5201,20 +5201,20 @@ typedef NDIS_STATUS (*OPEN_ADAPTER_HANDLER)( IN UINT OpenOptions, IN PSTRING AddressingInformation OPTIONAL); -typedef NDIS_STATUS (NTAPI *CLOSE_ADAPTER_HANDLER)( +typedef NDIS_STATUS (DDKAPI *CLOSE_ADAPTER_HANDLER)( IN NDIS_HANDLE MacBindingHandle); -typedef NDIS_STATUS (NTAPI *WAN_TRANSFER_DATA_HANDLER)( +typedef NDIS_STATUS (DDKAPI *WAN_TRANSFER_DATA_HANDLER)( VOID); -typedef NDIS_STATUS (NTAPI *QUERY_GLOBAL_STATISTICS_HANDLER)( +typedef NDIS_STATUS (DDKAPI *QUERY_GLOBAL_STATISTICS_HANDLER)( IN NDIS_HANDLE MacAdapterContext, IN PNDIS_REQUEST NdisRequest); -typedef VOID (NTAPI *UNLOAD_MAC_HANDLER)( +typedef VOID (DDKAPI *UNLOAD_MAC_HANDLER)( IN NDIS_HANDLE MacMacContext); -typedef NDIS_STATUS (NTAPI *ADD_ADAPTER_HANDLER)( +typedef NDIS_STATUS (DDKAPI *ADD_ADAPTER_HANDLER)( IN NDIS_HANDLE MacMacContext, IN NDIS_HANDLE WrapperConfigurationContext, IN PNDIS_STRING AdapterName); diff --git a/reactos/include/ddk/ntagp.h b/reactos/include/ddk/ntagp.h index 6622d81c90b..6776d2a1f82 100644 --- a/reactos/include/ddk/ntagp.h +++ b/reactos/include/ddk/ntagp.h @@ -36,7 +36,7 @@ extern "C" { #define AGP_CAPABILITIES_MAP_PHYSICAL 0x00000001L typedef NTSTATUS -(NTAPI *PAGP_BUS_COMMIT_MEMORY)( +(DDKAPI *PAGP_BUS_COMMIT_MEMORY)( IN PVOID AgpContext, IN PVOID MapHandle, IN ULONG NumberOfPages, @@ -45,19 +45,19 @@ typedef NTSTATUS OUT PHYSICAL_ADDRESS *MemoryBase); typedef NTSTATUS -(NTAPI *PAGP_BUS_FREE_MEMORY)( +(DDKAPI *PAGP_BUS_FREE_MEMORY)( IN PVOID AgpContext, IN PVOID MapHandle, IN ULONG NumberOfPages, IN ULONG OffsetInPages); typedef NTSTATUS -(NTAPI *PAGP_BUS_RELEASE_MEMORY)( +(DDKAPI *PAGP_BUS_RELEASE_MEMORY)( IN PVOID AgpContext, IN PVOID MapHandle); typedef NTSTATUS -(NTAPI *PAGP_BUS_RESERVE_MEMORY)( +(DDKAPI *PAGP_BUS_RESERVE_MEMORY)( IN PVOID AgpContext, IN ULONG NumberOfPages, IN MEMORY_CACHING_TYPE MemoryType, @@ -65,12 +65,12 @@ typedef NTSTATUS OUT PHYSICAL_ADDRESS *PhysicalAddress OPTIONAL); typedef NTSTATUS -(NTAPI *PAGP_BUS_SET_RATE)( +(DDKAPI *PAGP_BUS_SET_RATE)( IN PVOID AgpContext, IN ULONG AgpRate); typedef NTSTATUS -(NTAPI *PAGP_GET_MAPPED_PAGES)( +(DDKAPI *PAGP_GET_MAPPED_PAGES)( IN PVOID AgpContext, IN PVOID MapHandle, IN ULONG NumberOfPages, diff --git a/reactos/include/ddk/ntdd8042.h b/reactos/include/ddk/ntdd8042.h index 4bb32529292..0527ef42462 100644 --- a/reactos/include/ddk/ntdd8042.h +++ b/reactos/include/ddk/ntdd8042.h @@ -134,29 +134,29 @@ typedef struct _INTERNAL_I8042_START_INFORMATION { } INTERNAL_I8042_START_INFORMATION, *PINTERNAL_I8042_START_INFORMATION; typedef VOID -(NTAPI *PI8042_ISR_WRITE_PORT)( +(DDKAPI *PI8042_ISR_WRITE_PORT)( IN PVOID Context, IN UCHAR Value); typedef VOID -(NTAPI *PI8042_QUEUE_PACKET)( +(DDKAPI *PI8042_QUEUE_PACKET)( IN PVOID Context); typedef NTSTATUS -(NTAPI *PI8042_SYNCH_READ_PORT) ( +(DDKAPI *PI8042_SYNCH_READ_PORT) ( IN PVOID Context, OUT PUCHAR Value, IN BOOLEAN WaitForACK); typedef NTSTATUS -(NTAPI *PI8042_SYNCH_WRITE_PORT)( +(DDKAPI *PI8042_SYNCH_WRITE_PORT)( IN PVOID Context, IN UCHAR Value, IN BOOLEAN WaitForACK); typedef NTSTATUS -(NTAPI *PI8042_KEYBOARD_INITIALIZATION_ROUTINE)( +(DDKAPI *PI8042_KEYBOARD_INITIALIZATION_ROUTINE)( IN PVOID InitializationContext, IN PVOID SynchFuncContext, IN PI8042_SYNCH_READ_PORT ReadPort, @@ -164,7 +164,7 @@ typedef NTSTATUS OUT PBOOLEAN TurnTranslationOn); typedef BOOLEAN -(NTAPI *PI8042_KEYBOARD_ISR)( +(DDKAPI *PI8042_KEYBOARD_ISR)( PVOID IsrContext, PKEYBOARD_INPUT_DATA CurrentInput, POUTPUT_PACKET CurrentOutput, @@ -183,7 +183,7 @@ typedef struct _INTERNAL_I8042_HOOK_KEYBOARD { } INTERNAL_I8042_HOOK_KEYBOARD, *PINTERNAL_I8042_HOOK_KEYBOARD; typedef BOOLEAN -(NTAPI *PI8042_MOUSE_ISR)( +(DDKAPI *PI8042_MOUSE_ISR)( PVOID IsrContext, PMOUSE_INPUT_DATA CurrentInput, POUTPUT_PACKET CurrentOutput, diff --git a/reactos/include/ddk/ntddk.h b/reactos/include/ddk/ntddk.h index 61c23d3077a..0475b3acc85 100644 --- a/reactos/include/ddk/ntddk.h +++ b/reactos/include/ddk/ntddk.h @@ -1,13 +1,12 @@ /* * ntddk.h * - * Windows NT Device Driver Kit + * Windows Device Driver Kit * - * This file is part of the ReactOS DDK package. + * This file is part of the w32api package. * * Contributors: - * Amine Khaldi - * Timo Kreuzer (timo.kreuzer@reactos.org) + * Created by Casper S. Hornstrup * * THIS SOFTWARE IS NOT COPYRIGHTED * @@ -19,10 +18,13 @@ * DISCLAIMED. This includes but is not limited to warranties of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * + * DEFINES: + * DBG - Debugging enabled/disabled (0/1) + * POOL_TAGGING - Enable pool tagging + * _X86_ - X86 environment */ -#pragma once - +#ifndef _NTDDK_ #define _NTDDK_ #if !defined(_NTHAL_) && !defined(_NTIFS_) @@ -39,7 +41,6 @@ #include #include #include -#include /* FIXME #include @@ -54,128 +55,39 @@ extern "C" { #endif -/* GUID and UUID */ -#ifndef _NTLSA_IFS_ -#ifndef _NTLSA_AUDIT_ -#define _NTLSA_AUDIT_ - -#ifndef GUID_DEFINED -#include -#endif - -#endif /* _NTLSA_AUDIT_ */ -#endif /* _NTLSA_IFS_ */ - -typedef GUID UUID; - struct _LOADER_PARAMETER_BLOCK; struct _CREATE_DISK; struct _DRIVE_LAYOUT_INFORMATION_EX; struct _SET_PARTITION_INFORMATION_EX; -typedef struct _BUS_HANDLER *PBUS_HANDLER; -typedef struct _DEVICE_HANDLER_OBJECT *PDEVICE_HANDLER_OBJECT; -#if defined(_NTHAL_INCLUDED_) -typedef struct _KAFFINITY_EX *PKAFFINITY_EX; +// +// GUID and UUID +// +#ifndef GUID_DEFINED +#include #endif -typedef struct _PEB *PPEB; +typedef GUID UUID; -#ifndef _NTIMAGE_ +typedef struct _BUS_HANDLER *PBUS_HANDLER; -typedef struct _IMAGE_NT_HEADERS *PIMAGE_NT_HEADERS32; -typedef struct _IMAGE_NT_HEADERS64 *PIMAGE_NT_HEADERS64; +#define EXCEPTION_READ_FAULT 0 +#define EXCEPTION_WRITE_FAULT 1 +#define EXCEPTION_EXECUTE_FAULT 8 -#ifdef _WIN64 -typedef PIMAGE_NT_HEADERS64 PIMAGE_NT_HEADERS; +#if (NTDDI_VERSION >= NTDDI_VISTA) +extern NTSYSAPI volatile CCHAR KeNumberProcessors; +#elif (NTDDI_VERSION >= NTDDI_WINXP) +extern NTSYSAPI CCHAR KeNumberProcessors; #else -typedef PIMAGE_NT_HEADERS32 PIMAGE_NT_HEADERS; +extern PCCHAR KeNumberProcessors; #endif -#endif /* _NTIMAGE_ */ - -/****************************************************************************** - * Executive Types * - ******************************************************************************/ - -typedef struct _ZONE_SEGMENT_HEADER { - SINGLE_LIST_ENTRY SegmentList; - PVOID Reserved; -} ZONE_SEGMENT_HEADER, *PZONE_SEGMENT_HEADER; - -typedef struct _ZONE_HEADER { - SINGLE_LIST_ENTRY FreeList; - SINGLE_LIST_ENTRY SegmentList; - ULONG BlockSize; - ULONG TotalSegmentSize; -} ZONE_HEADER, *PZONE_HEADER; - -#define PROTECTED_POOL 0x80000000 - - -/****************************************************************************** - * I/O Manager Types * - ******************************************************************************/ - -/* DEVICE_OBJECT.Flags */ -#define DO_DEVICE_HAS_NAME 0x00000040 -#define DO_SYSTEM_BOOT_PARTITION 0x00000100 -#define DO_LONG_TERM_REQUESTS 0x00000200 -#define DO_NEVER_LAST_DEVICE 0x00000400 -#define DO_LOW_PRIORITY_FILESYSTEM 0x00010000 -#define DO_SUPPORTS_TRANSACTIONS 0x00040000 -#define DO_FORCE_NEITHER_IO 0x00080000 -#define DO_VOLUME_DEVICE_OBJECT 0x00100000 -#define DO_SYSTEM_SYSTEM_PARTITION 0x00200000 -#define DO_SYSTEM_CRITICAL_PARTITION 0x00400000 -#define DO_DISALLOW_EXECUTE 0x00800000 +#define MAX_WOW64_SHARED_ENTRIES 16 -#ifndef _ARC_DDK_ -#define _ARC_DDK_ -typedef enum _CONFIGURATION_TYPE { - ArcSystem, - CentralProcessor, - FloatingPointProcessor, - PrimaryIcache, - PrimaryDcache, - SecondaryIcache, - SecondaryDcache, - SecondaryCache, - EisaAdapter, - TcAdapter, - ScsiAdapter, - DtiAdapter, - MultiFunctionAdapter, - DiskController, - TapeController, - CdromController, - WormController, - SerialController, - NetworkController, - DisplayController, - ParallelController, - PointerController, - KeyboardController, - AudioController, - OtherController, - DiskPeripheral, - FloppyDiskPeripheral, - TapePeripheral, - ModemPeripheral, - MonitorPeripheral, - PrinterPeripheral, - PointerPeripheral, - KeyboardPeripheral, - TerminalPeripheral, - OtherPeripheral, - LinePeripheral, - NetworkPeripheral, - SystemMemory, - DockingInformation, - RealModeIrqRoutingTable, - RealModePCIEnumeration, - MaximumType -} CONFIGURATION_TYPE, *PCONFIGURATION_TYPE; -#endif /* !_ARC_DDK_ */ +#define NX_SUPPORT_POLICY_ALWAYSOFF 0 +#define NX_SUPPORT_POLICY_ALWAYSON 1 +#define NX_SUPPORT_POLICY_OPTIN 2 +#define NX_SUPPORT_POLICY_OPTOUT 3 /* ** IRP function codes @@ -210,118 +122,102 @@ typedef enum _CONFIGURATION_TYPE { #define IRP_MN_QUERY_LEGACY_BUS_INFORMATION 0x18 -#define IO_CHECK_CREATE_PARAMETERS 0x0200 -#define IO_ATTACH_DEVICE 0x0400 -#define IO_IGNORE_SHARE_ACCESS_CHECK 0x0800 +typedef struct _IO_COUNTERS { + ULONGLONG ReadOperationCount; + ULONGLONG WriteOperationCount; + ULONGLONG OtherOperationCount; + ULONGLONG ReadTransferCount; + ULONGLONG WriteTransferCount; + ULONGLONG OtherTransferCount; +} IO_COUNTERS, *PIO_COUNTERS; -typedef -NTSTATUS -(NTAPI *PIO_QUERY_DEVICE_ROUTINE)( - IN PVOID Context, - IN PUNICODE_STRING PathName, - IN INTERFACE_TYPE BusType, - IN ULONG BusNumber, - IN PKEY_VALUE_FULL_INFORMATION *BusInformation, - IN CONFIGURATION_TYPE ControllerType, - IN ULONG ControllerNumber, - IN PKEY_VALUE_FULL_INFORMATION *ControllerInformation, - IN CONFIGURATION_TYPE PeripheralType, - IN ULONG PeripheralNumber, - IN PKEY_VALUE_FULL_INFORMATION *PeripheralInformation); +typedef struct _VM_COUNTERS { + SIZE_T PeakVirtualSize; + SIZE_T VirtualSize; + ULONG PageFaultCount; + SIZE_T PeakWorkingSetSize; + SIZE_T WorkingSetSize; + SIZE_T QuotaPeakPagedPoolUsage; + SIZE_T QuotaPagedPoolUsage; + SIZE_T QuotaPeakNonPagedPoolUsage; + SIZE_T QuotaNonPagedPoolUsage; + SIZE_T PagefileUsage; + SIZE_T PeakPagefileUsage; +} VM_COUNTERS, *PVM_COUNTERS; -typedef enum _IO_QUERY_DEVICE_DATA_FORMAT { - IoQueryDeviceIdentifier = 0, - IoQueryDeviceConfigurationData, - IoQueryDeviceComponentInformation, - IoQueryDeviceMaxData -} IO_QUERY_DEVICE_DATA_FORMAT, *PIO_QUERY_DEVICE_DATA_FORMAT; +typedef struct _VM_COUNTERS_EX +{ + SIZE_T PeakVirtualSize; + SIZE_T VirtualSize; + ULONG PageFaultCount; + SIZE_T PeakWorkingSetSize; + SIZE_T WorkingSetSize; + SIZE_T QuotaPeakPagedPoolUsage; + SIZE_T QuotaPagedPoolUsage; + SIZE_T QuotaPeakNonPagedPoolUsage; + SIZE_T QuotaNonPagedPoolUsage; + SIZE_T PagefileUsage; + SIZE_T PeakPagefileUsage; + SIZE_T PrivateUsage; +} VM_COUNTERS_EX, *PVM_COUNTERS_EX; -typedef VOID -(NTAPI *PDRIVER_REINITIALIZE)( - IN struct _DRIVER_OBJECT *DriverObject, - IN PVOID Context OPTIONAL, - IN ULONG Count); +typedef struct _POOLED_USAGE_AND_LIMITS +{ + SIZE_T PeakPagedPoolUsage; + SIZE_T PagedPoolUsage; + SIZE_T PagedPoolLimit; + SIZE_T PeakNonPagedPoolUsage; + SIZE_T NonPagedPoolUsage; + SIZE_T NonPagedPoolLimit; + SIZE_T PeakPagefileUsage; + SIZE_T PagefileUsage; + SIZE_T PagefileLimit; +} POOLED_USAGE_AND_LIMITS, *PPOOLED_USAGE_AND_LIMITS; -typedef struct _CONTROLLER_OBJECT { - CSHORT Type; - CSHORT Size; - PVOID ControllerExtension; - KDEVICE_QUEUE DeviceWaitQueue; - ULONG Spare1; - LARGE_INTEGER Spare2; -} CONTROLLER_OBJECT, *PCONTROLLER_OBJECT; +/* DEVICE_OBJECT.Flags */ + +#define DO_VERIFY_VOLUME 0x00000002 +#define DO_BUFFERED_IO 0x00000004 +#define DO_EXCLUSIVE 0x00000008 +#define DO_DIRECT_IO 0x00000010 +#define DO_MAP_IO_BUFFER 0x00000020 +#define DO_DEVICE_HAS_NAME 0x00000040 +#define DO_DEVICE_INITIALIZING 0x00000080 +#define DO_SYSTEM_BOOT_PARTITION 0x00000100 +#define DO_LONG_TERM_REQUESTS 0x00000200 +#define DO_NEVER_LAST_DEVICE 0x00000400 +#define DO_SHUTDOWN_REGISTERED 0x00000800 +#define DO_BUS_ENUMERATED_DEVICE 0x00001000 +#define DO_POWER_PAGABLE 0x00002000 +#define DO_POWER_INRUSH 0x00004000 +#define DO_LOW_PRIORITY_FILESYSTEM 0x00010000 +#define DO_SUPPORTS_TRANSACTIONS 0x00040000 +#define DO_FORCE_NEITHER_IO 0x00080000 +#define DO_VOLUME_DEVICE_OBJECT 0x00100000 +#define DO_SYSTEM_SYSTEM_PARTITION 0x00200000 +#define DO_SYSTEM_CRITICAL_PARTITION 0x00400000 +#define DO_DISALLOW_EXECUTE 0x00800000 #define DRVO_REINIT_REGISTERED 0x00000008 #define DRVO_INITIALIZED 0x00000010 #define DRVO_BOOTREINIT_REGISTERED 0x00000020 #define DRVO_LEGACY_RESOURCES 0x00000040 -typedef struct _CONFIGURATION_INFORMATION { - ULONG DiskCount; - ULONG FloppyCount; - ULONG CdRomCount; - ULONG TapeCount; - ULONG ScsiPortCount; - ULONG SerialCount; - ULONG ParallelCount; - BOOLEAN AtDiskPrimaryAddressClaimed; - BOOLEAN AtDiskSecondaryAddressClaimed; - ULONG Version; - ULONG MediumChangerCount; -} CONFIGURATION_INFORMATION, *PCONFIGURATION_INFORMATION; - -typedef struct _DISK_SIGNATURE { - ULONG PartitionStyle; - _ANONYMOUS_UNION union { - struct { - ULONG Signature; - ULONG CheckSum; - } Mbr; - struct { - GUID DiskId; - } Gpt; - } DUMMYUNIONNAME; -} DISK_SIGNATURE, *PDISK_SIGNATURE; - -typedef struct _TXN_PARAMETER_BLOCK { - USHORT Length; - USHORT TxFsContext; - PVOID TransactionObject; -} TXN_PARAMETER_BLOCK, *PTXN_PARAMETER_BLOCK; - -#define TXF_MINIVERSION_DEFAULT_VIEW (0xFFFE) - -typedef struct _IO_DRIVER_CREATE_CONTEXT { - CSHORT Size; - struct _ECP_LIST *ExtraCreateParameter; - PVOID DeviceObjectHint; - PTXN_PARAMETER_BLOCK TxnParameters; -} IO_DRIVER_CREATE_CONTEXT, *PIO_DRIVER_CREATE_CONTEXT; - -typedef struct _AGP_TARGET_BUS_INTERFACE_STANDARD { - USHORT Size; - USHORT Version; - PVOID Context; - PINTERFACE_REFERENCE InterfaceReference; - PINTERFACE_DEREFERENCE InterfaceDereference; - PGET_SET_DEVICE_DATA SetBusData; - PGET_SET_DEVICE_DATA GetBusData; - UCHAR CapabilityID; -} AGP_TARGET_BUS_INTERFACE_STANDARD, *PAGP_TARGET_BUS_INTERFACE_STANDARD; - -typedef NTSTATUS -(NTAPI *PGET_LOCATION_STRING)( - IN OUT PVOID Context OPTIONAL, - OUT PWCHAR *LocationStrings); +typedef enum _ARBITER_REQUEST_SOURCE { + ArbiterRequestUndefined = -1, + ArbiterRequestLegacyReported, + ArbiterRequestHalReported, + ArbiterRequestLegacyAssigned, + ArbiterRequestPnpDetected, + ArbiterRequestPnpEnumerated +} ARBITER_REQUEST_SOURCE; -typedef struct _PNP_LOCATION_INTERFACE { - USHORT Size; - USHORT Version; - PVOID Context; - PINTERFACE_REFERENCE InterfaceReference; - PINTERFACE_DEREFERENCE InterfaceDereference; - PGET_LOCATION_STRING GetLocationString; -} PNP_LOCATION_INTERFACE, *PPNP_LOCATION_INTERFACE; +typedef enum _ARBITER_RESULT { + ArbiterResultUndefined = -1, + ArbiterResultSuccess, + ArbiterResultExternalConflict, + ArbiterResultNullRequest +} ARBITER_RESULT; typedef enum _ARBITER_ACTION { ArbiterActionTestAllocation, @@ -342,69 +238,39 @@ typedef struct _ARBITER_CONFLICT_INFO { ULONGLONG End; } ARBITER_CONFLICT_INFO, *PARBITER_CONFLICT_INFO; -typedef struct _ARBITER_TEST_ALLOCATION_PARAMETERS { - IN OUT PLIST_ENTRY ArbitrationList; - IN ULONG AllocateFromCount; - IN PCM_PARTIAL_RESOURCE_DESCRIPTOR AllocateFrom; -} ARBITER_TEST_ALLOCATION_PARAMETERS, *PARBITER_TEST_ALLOCATION_PARAMETERS; - -typedef struct _ARBITER_RETEST_ALLOCATION_PARAMETERS { - IN OUT PLIST_ENTRY ArbitrationList; - IN ULONG AllocateFromCount; - IN PCM_PARTIAL_RESOURCE_DESCRIPTOR AllocateFrom; -} ARBITER_RETEST_ALLOCATION_PARAMETERS, *PARBITER_RETEST_ALLOCATION_PARAMETERS; - -typedef struct _ARBITER_BOOT_ALLOCATION_PARAMETERS { - IN OUT PLIST_ENTRY ArbitrationList; -} ARBITER_BOOT_ALLOCATION_PARAMETERS, *PARBITER_BOOT_ALLOCATION_PARAMETERS; - -typedef struct _ARBITER_QUERY_ALLOCATED_RESOURCES_PARAMETERS { - OUT PCM_PARTIAL_RESOURCE_LIST *AllocatedResources; -} ARBITER_QUERY_ALLOCATED_RESOURCES_PARAMETERS, *PARBITER_QUERY_ALLOCATED_RESOURCES_PARAMETERS; - -typedef struct _ARBITER_QUERY_CONFLICT_PARAMETERS { - IN PDEVICE_OBJECT PhysicalDeviceObject; - IN PIO_RESOURCE_DESCRIPTOR ConflictingResource; - OUT PULONG ConflictCount; - OUT PARBITER_CONFLICT_INFO *Conflicts; -} ARBITER_QUERY_CONFLICT_PARAMETERS, *PARBITER_QUERY_CONFLICT_PARAMETERS; - -typedef struct _ARBITER_QUERY_ARBITRATE_PARAMETERS { - IN PLIST_ENTRY ArbitrationList; -} ARBITER_QUERY_ARBITRATE_PARAMETERS, *PARBITER_QUERY_ARBITRATE_PARAMETERS; - -typedef struct _ARBITER_ADD_RESERVED_PARAMETERS { - IN PDEVICE_OBJECT ReserveDevice; -} ARBITER_ADD_RESERVED_PARAMETERS, *PARBITER_ADD_RESERVED_PARAMETERS; - typedef struct _ARBITER_PARAMETERS { union { - ARBITER_TEST_ALLOCATION_PARAMETERS TestAllocation; - ARBITER_RETEST_ALLOCATION_PARAMETERS RetestAllocation; - ARBITER_BOOT_ALLOCATION_PARAMETERS BootAllocation; - ARBITER_QUERY_ALLOCATED_RESOURCES_PARAMETERS QueryAllocatedResources; - ARBITER_QUERY_CONFLICT_PARAMETERS QueryConflict; - ARBITER_QUERY_ARBITRATE_PARAMETERS QueryArbitrate; - ARBITER_ADD_RESERVED_PARAMETERS AddReserved; + struct { + IN OUT PLIST_ENTRY ArbitrationList; + IN ULONG AllocateFromCount; + IN PCM_PARTIAL_RESOURCE_DESCRIPTOR AllocateFrom; + } TestAllocation; + struct { + IN OUT PLIST_ENTRY ArbitrationList; + IN ULONG AllocateFromCount; + IN PCM_PARTIAL_RESOURCE_DESCRIPTOR AllocateFrom; + } RetestAllocation; + struct { + IN OUT PLIST_ENTRY ArbitrationList; + } BootAllocation; + struct { + OUT PCM_PARTIAL_RESOURCE_LIST *AllocatedResources; + } QueryAllocatedResources; + struct { + IN PDEVICE_OBJECT PhysicalDeviceObject; + IN PIO_RESOURCE_DESCRIPTOR ConflictingResource; + OUT PULONG ConflictCount; + OUT PARBITER_CONFLICT_INFO *Conflicts; + } QueryConflict; + struct { + IN PLIST_ENTRY ArbitrationList; + } QueryArbitrate; + struct { + IN PDEVICE_OBJECT ReserveDevice; + } AddReserved; } Parameters; } ARBITER_PARAMETERS, *PARBITER_PARAMETERS; -typedef enum _ARBITER_REQUEST_SOURCE { - ArbiterRequestUndefined = -1, - ArbiterRequestLegacyReported, - ArbiterRequestHalReported, - ArbiterRequestLegacyAssigned, - ArbiterRequestPnpDetected, - ArbiterRequestPnpEnumerated -} ARBITER_REQUEST_SOURCE; - -typedef enum _ARBITER_RESULT { - ArbiterResultUndefined = -1, - ArbiterResultSuccess, - ArbiterResultExternalConflict, - ArbiterResultNullRequest -} ARBITER_RESULT; - #define ARBITER_FLAG_BOOT_CONFIG 0x00000001 typedef struct _ARBITER_LIST_ENTRY { @@ -441,826 +307,6 @@ typedef struct _ARBITER_INTERFACE { ULONG Flags; } ARBITER_INTERFACE, *PARBITER_INTERFACE; -typedef enum _RESOURCE_TRANSLATION_DIRECTION { - TranslateChildToParent, - TranslateParentToChild -} RESOURCE_TRANSLATION_DIRECTION; - -typedef NTSTATUS -(NTAPI *PTRANSLATE_RESOURCE_HANDLER)( - IN OUT PVOID Context OPTIONAL, - IN PCM_PARTIAL_RESOURCE_DESCRIPTOR Source, - IN RESOURCE_TRANSLATION_DIRECTION Direction, - IN ULONG AlternativesCount OPTIONAL, - IN IO_RESOURCE_DESCRIPTOR Alternatives[], - IN PDEVICE_OBJECT PhysicalDeviceObject, - OUT PCM_PARTIAL_RESOURCE_DESCRIPTOR Target); - -typedef NTSTATUS -(NTAPI *PTRANSLATE_RESOURCE_REQUIREMENTS_HANDLER)( - IN OUT PVOID Context OPTIONAL, - IN PIO_RESOURCE_DESCRIPTOR Source, - IN PDEVICE_OBJECT PhysicalDeviceObject, - OUT PULONG TargetCount, - OUT PIO_RESOURCE_DESCRIPTOR *Target); - -typedef struct _TRANSLATOR_INTERFACE { - USHORT Size; - USHORT Version; - PVOID Context; - PINTERFACE_REFERENCE InterfaceReference; - PINTERFACE_DEREFERENCE InterfaceDereference; - PTRANSLATE_RESOURCE_HANDLER TranslateResources; - PTRANSLATE_RESOURCE_REQUIREMENTS_HANDLER TranslateResourceRequirements; -} TRANSLATOR_INTERFACE, *PTRANSLATOR_INTERFACE; - -typedef struct _PCI_AGP_CAPABILITY { - PCI_CAPABILITIES_HEADER Header; - USHORT Minor:4; - USHORT Major:4; - USHORT Rsvd1:8; - struct _PCI_AGP_STATUS { - ULONG Rate:3; - ULONG Agp3Mode:1; - ULONG FastWrite:1; - ULONG FourGB:1; - ULONG HostTransDisable:1; - ULONG Gart64:1; - ULONG ITA_Coherent:1; - ULONG SideBandAddressing:1; - ULONG CalibrationCycle:3; - ULONG AsyncRequestSize:3; - ULONG Rsvd1:1; - ULONG Isoch:1; - ULONG Rsvd2:6; - ULONG RequestQueueDepthMaximum:8; - } AGPStatus; - struct _PCI_AGP_COMMAND { - ULONG Rate:3; - ULONG Rsvd1:1; - ULONG FastWriteEnable:1; - ULONG FourGBEnable:1; - ULONG Rsvd2:1; - ULONG Gart64:1; - ULONG AGPEnable:1; - ULONG SBAEnable:1; - ULONG CalibrationCycle:3; - ULONG AsyncReqSize:3; - ULONG Rsvd3:8; - ULONG RequestQueueDepth:8; - } AGPCommand; -} PCI_AGP_CAPABILITY, *PPCI_AGP_CAPABILITY; - -typedef enum _EXTENDED_AGP_REGISTER { - IsochStatus, - AgpControl, - ApertureSize, - AperturePageSize, - GartLow, - GartHigh, - IsochCommand -} EXTENDED_AGP_REGISTER, *PEXTENDED_AGP_REGISTER; - -typedef struct _PCI_AGP_ISOCH_STATUS { - ULONG ErrorCode:2; - ULONG Rsvd1:1; - ULONG Isoch_L:3; - ULONG Isoch_Y:2; - ULONG Isoch_N:8; - ULONG Rsvd2:16; -} PCI_AGP_ISOCH_STATUS, *PPCI_AGP_ISOCH_STATUS; - -typedef struct _PCI_AGP_CONTROL { - ULONG Rsvd1:7; - ULONG GTLB_Enable:1; - ULONG AP_Enable:1; - ULONG CAL_Disable:1; - ULONG Rsvd2:22; -} PCI_AGP_CONTROL, *PPCI_AGP_CONTROL; - -typedef struct _PCI_AGP_APERTURE_PAGE_SIZE { - USHORT PageSizeMask:11; - USHORT Rsvd1:1; - USHORT PageSizeSelect:4; -} PCI_AGP_APERTURE_PAGE_SIZE, *PPCI_AGP_APERTURE_PAGE_SIZE; - -typedef struct _PCI_AGP_ISOCH_COMMAND { - USHORT Rsvd1:6; - USHORT Isoch_Y:2; - USHORT Isoch_N:8; -} PCI_AGP_ISOCH_COMMAND, *PPCI_AGP_ISOCH_COMMAND; - -typedef struct PCI_AGP_EXTENDED_CAPABILITY { - PCI_AGP_ISOCH_STATUS IsochStatus; - PCI_AGP_CONTROL AgpControl; - USHORT ApertureSize; - PCI_AGP_APERTURE_PAGE_SIZE AperturePageSize; - ULONG GartLow; - ULONG GartHigh; - PCI_AGP_ISOCH_COMMAND IsochCommand; -} PCI_AGP_EXTENDED_CAPABILITY, *PPCI_AGP_EXTENDED_CAPABILITY; - -#define PCI_AGP_RATE_1X 0x1 -#define PCI_AGP_RATE_2X 0x2 -#define PCI_AGP_RATE_4X 0x4 - -#define PCIX_MODE_CONVENTIONAL_PCI 0x0 -#define PCIX_MODE1_66MHZ 0x1 -#define PCIX_MODE1_100MHZ 0x2 -#define PCIX_MODE1_133MHZ 0x3 -#define PCIX_MODE2_266_66MHZ 0x9 -#define PCIX_MODE2_266_100MHZ 0xA -#define PCIX_MODE2_266_133MHZ 0xB -#define PCIX_MODE2_533_66MHZ 0xD -#define PCIX_MODE2_533_100MHZ 0xE -#define PCIX_MODE2_533_133MHZ 0xF - -#define PCIX_VERSION_MODE1_ONLY 0x0 -#define PCIX_VERSION_MODE2_ECC 0x1 -#define PCIX_VERSION_DUAL_MODE_ECC 0x2 - -typedef struct _PCIX_BRIDGE_CAPABILITY { - PCI_CAPABILITIES_HEADER Header; - union { - struct { - USHORT Bus64Bit:1; - USHORT Bus133MHzCapable:1; - USHORT SplitCompletionDiscarded:1; - USHORT UnexpectedSplitCompletion:1; - USHORT SplitCompletionOverrun:1; - USHORT SplitRequestDelayed:1; - USHORT BusModeFrequency:4; - USHORT Rsvd:2; - USHORT Version:2; - USHORT Bus266MHzCapable:1; - USHORT Bus533MHzCapable:1; - } DUMMYSTRUCTNAME; - USHORT AsUSHORT; - } SecondaryStatus; - union { - struct { - ULONG FunctionNumber:3; - ULONG DeviceNumber:5; - ULONG BusNumber:8; - ULONG Device64Bit:1; - ULONG Device133MHzCapable:1; - ULONG SplitCompletionDiscarded:1; - ULONG UnexpectedSplitCompletion:1; - ULONG SplitCompletionOverrun:1; - ULONG SplitRequestDelayed:1; - ULONG Rsvd:7; - ULONG DIMCapable:1; - ULONG Device266MHzCapable:1; - ULONG Device533MHzCapable:1; - } DUMMYSTRUCTNAME; - ULONG AsULONG; - } BridgeStatus; - USHORT UpstreamSplitTransactionCapacity; - USHORT UpstreamSplitTransactionLimit; - USHORT DownstreamSplitTransactionCapacity; - USHORT DownstreamSplitTransactionLimit; - union { - struct { - ULONG SelectSecondaryRegisters:1; - ULONG ErrorPresentInOtherBank:1; - ULONG AdditionalCorrectableError:1; - ULONG AdditionalUncorrectableError:1; - ULONG ErrorPhase:3; - ULONG ErrorCorrected:1; - ULONG Syndrome:8; - ULONG ErrorFirstCommand:4; - ULONG ErrorSecondCommand:4; - ULONG ErrorUpperAttributes:4; - ULONG ControlUpdateEnable:1; - ULONG Rsvd:1; - ULONG DisableSingleBitCorrection:1; - ULONG EccMode:1; - } DUMMYSTRUCTNAME; - ULONG AsULONG; - } EccControlStatus; - ULONG EccFirstAddress; - ULONG EccSecondAddress; - ULONG EccAttribute; -} PCIX_BRIDGE_CAPABILITY, *PPCIX_BRIDGE_CAPABILITY; - -typedef struct _PCI_SUBSYSTEM_IDS_CAPABILITY { - PCI_CAPABILITIES_HEADER Header; - USHORT Reserved; - USHORT SubVendorID; - USHORT SubSystemID; -} PCI_SUBSYSTEM_IDS_CAPABILITY, *PPCI_SUBSYSTEM_IDS_CAPABILITY; - -#define OSC_FIRMWARE_FAILURE 0x02 -#define OSC_UNRECOGNIZED_UUID 0x04 -#define OSC_UNRECOGNIZED_REVISION 0x08 -#define OSC_CAPABILITIES_MASKED 0x10 - -#define PCI_ROOT_BUS_OSC_METHOD_CAPABILITY_REVISION 0x01 - -typedef struct _PCI_ROOT_BUS_OSC_SUPPORT_FIELD { - union { - struct { - ULONG ExtendedConfigOpRegions:1; - ULONG ActiveStatePowerManagement:1; - ULONG ClockPowerManagement:1; - ULONG SegmentGroups:1; - ULONG MessageSignaledInterrupts:1; - ULONG WindowsHardwareErrorArchitecture:1; - ULONG Reserved:26; - } DUMMYSTRUCTNAME; - ULONG AsULONG; - } u; -} PCI_ROOT_BUS_OSC_SUPPORT_FIELD, *PPCI_ROOT_BUS_OSC_SUPPORT_FIELD; - -typedef struct _PCI_ROOT_BUS_OSC_CONTROL_FIELD { - union { - struct { - ULONG ExpressNativeHotPlug:1; - ULONG ShpcNativeHotPlug:1; - ULONG ExpressNativePME:1; - ULONG ExpressAdvancedErrorReporting:1; - ULONG ExpressCapabilityStructure:1; - ULONG Reserved:27; - } DUMMYSTRUCTNAME; - ULONG AsULONG; - } u; -} PCI_ROOT_BUS_OSC_CONTROL_FIELD, *PPCI_ROOT_BUS_OSC_CONTROL_FIELD; - -typedef enum _PCI_HARDWARE_INTERFACE { - PciConventional, - PciXMode1, - PciXMode2, - PciExpress -} PCI_HARDWARE_INTERFACE, *PPCI_HARDWARE_INTERFACE; - -typedef enum { - BusWidth32Bits, - BusWidth64Bits -} PCI_BUS_WIDTH; - -typedef struct _PCI_ROOT_BUS_HARDWARE_CAPABILITY { - PCI_HARDWARE_INTERFACE SecondaryInterface; - struct { - BOOLEAN BusCapabilitiesFound; - ULONG CurrentSpeedAndMode; - ULONG SupportedSpeedsAndModes; - BOOLEAN DeviceIDMessagingCapable; - PCI_BUS_WIDTH SecondaryBusWidth; - } DUMMYSTRUCTNAME; - PCI_ROOT_BUS_OSC_SUPPORT_FIELD OscFeatureSupport; - PCI_ROOT_BUS_OSC_CONTROL_FIELD OscControlRequest; - PCI_ROOT_BUS_OSC_CONTROL_FIELD OscControlGranted; -} PCI_ROOT_BUS_HARDWARE_CAPABILITY, *PPCI_ROOT_BUS_HARDWARE_CAPABILITY; - -typedef union _PCI_EXPRESS_CAPABILITIES_REGISTER { - struct { - USHORT CapabilityVersion:4; - USHORT DeviceType:4; - USHORT SlotImplemented:1; - USHORT InterruptMessageNumber:5; - USHORT Rsvd:2; - } DUMMYSTRUCTNAME; - USHORT AsUSHORT; -} PCI_EXPRESS_CAPABILITIES_REGISTER, *PPCI_EXPRESS_CAPABILITIES_REGISTER; - -typedef union _PCI_EXPRESS_DEVICE_CAPABILITIES_REGISTER { - struct { - ULONG MaxPayloadSizeSupported:3; - ULONG PhantomFunctionsSupported:2; - ULONG ExtendedTagSupported:1; - ULONG L0sAcceptableLatency:3; - ULONG L1AcceptableLatency:3; - ULONG Undefined:3; - ULONG RoleBasedErrorReporting:1; - ULONG Rsvd1:2; - ULONG CapturedSlotPowerLimit:8; - ULONG CapturedSlotPowerLimitScale:2; - ULONG Rsvd2:4; - } DUMMYSTRUCTNAME; - ULONG AsULONG; -} PCI_EXPRESS_DEVICE_CAPABILITIES_REGISTER, *PPCI_EXPRESS_DEVICE_CAPABILITIES_REGISTER; - -#define PCI_EXPRESS_AER_DEVICE_CONTROL_MASK 0x07; - -typedef union _PCI_EXPRESS_DEVICE_CONTROL_REGISTER { - struct { - USHORT CorrectableErrorEnable:1; - USHORT NonFatalErrorEnable:1; - USHORT FatalErrorEnable:1; - USHORT UnsupportedRequestErrorEnable:1; - USHORT EnableRelaxedOrder:1; - USHORT MaxPayloadSize:3; - USHORT ExtendedTagEnable:1; - USHORT PhantomFunctionsEnable:1; - USHORT AuxPowerEnable:1; - USHORT NoSnoopEnable:1; - USHORT MaxReadRequestSize:3; - USHORT BridgeConfigRetryEnable:1; - } DUMMYSTRUCTNAME; - USHORT AsUSHORT; -} PCI_EXPRESS_DEVICE_CONTROL_REGISTER, *PPCI_EXPRESS_DEVICE_CONTROL_REGISTER; - -#define PCI_EXPRESS_AER_DEVICE_STATUS_MASK 0x0F; - -typedef union _PCI_EXPRESS_DEVICE_STATUS_REGISTER { - struct { - USHORT CorrectableErrorDetected:1; - USHORT NonFatalErrorDetected:1; - USHORT FatalErrorDetected:1; - USHORT UnsupportedRequestDetected:1; - USHORT AuxPowerDetected:1; - USHORT TransactionsPending:1; - USHORT Rsvd:10; - } DUMMYSTRUCTNAME; - USHORT AsUSHORT; -} PCI_EXPRESS_DEVICE_STATUS_REGISTER, *PPCI_EXPRESS_DEVICE_STATUS_REGISTER; - -typedef union _PCI_EXPRESS_LINK_CAPABILITIES_REGISTER { - struct { - ULONG MaximumLinkSpeed:4; - ULONG MaximumLinkWidth:6; - ULONG ActiveStatePMSupport:2; - ULONG L0sExitLatency:3; - ULONG L1ExitLatency:3; - ULONG ClockPowerManagement:1; - ULONG SurpriseDownErrorReportingCapable:1; - ULONG DataLinkLayerActiveReportingCapable:1; - ULONG Rsvd:3; - ULONG PortNumber:8; - } DUMMYSTRUCTNAME; - ULONG AsULONG; -} PCI_EXPRESS_LINK_CAPABILITIES_REGISTER, *PPCI_EXPRESS_LINK_CAPABILITIES_REGISTER; - -typedef union _PCI_EXPRESS_LINK_CONTROL_REGISTER { - struct { - USHORT ActiveStatePMControl:2; - USHORT Rsvd1:1; - USHORT ReadCompletionBoundary:1; - USHORT LinkDisable:1; - USHORT RetrainLink:1; - USHORT CommonClockConfig:1; - USHORT ExtendedSynch:1; - USHORT EnableClockPowerManagement:1; - USHORT Rsvd2:7; - } DUMMYSTRUCTNAME; - USHORT AsUSHORT; -} PCI_EXPRESS_LINK_CONTROL_REGISTER, *PPCI_EXPRESS_LINK_CONTROL_REGISTER; - -typedef union _PCI_EXPRESS_LINK_STATUS_REGISTER { - struct { - USHORT LinkSpeed:4; - USHORT LinkWidth:6; - USHORT Undefined:1; - USHORT LinkTraining:1; - USHORT SlotClockConfig:1; - USHORT DataLinkLayerActive:1; - USHORT Rsvd:2; - } DUMMYSTRUCTNAME; - USHORT AsUSHORT; -} PCI_EXPRESS_LINK_STATUS_REGISTER, *PPCI_EXPRESS_LINK_STATUS_REGISTER; - -typedef union _PCI_EXPRESS_SLOT_CAPABILITIES_REGISTER { - struct { - ULONG AttentionButtonPresent:1; - ULONG PowerControllerPresent:1; - ULONG MRLSensorPresent:1; - ULONG AttentionIndicatorPresent:1; - ULONG PowerIndicatorPresent:1; - ULONG HotPlugSurprise:1; - ULONG HotPlugCapable:1; - ULONG SlotPowerLimit:8; - ULONG SlotPowerLimitScale:2; - ULONG ElectromechanicalLockPresent:1; - ULONG NoCommandCompletedSupport:1; - ULONG PhysicalSlotNumber:13; - } DUMMYSTRUCTNAME; - ULONG AsULONG; -} PCI_EXPRESS_SLOT_CAPABILITIES_REGISTER, *PPCI_EXPRESS_SLOT_CAPABILITIES_REGISTER; - -typedef union _PCI_EXPRESS_SLOT_CONTROL_REGISTER { - struct { - USHORT AttentionButtonEnable:1; - USHORT PowerFaultDetectEnable:1; - USHORT MRLSensorEnable:1; - USHORT PresenceDetectEnable:1; - USHORT CommandCompletedEnable:1; - USHORT HotPlugInterruptEnable:1; - USHORT AttentionIndicatorControl:2; - USHORT PowerIndicatorControl:2; - USHORT PowerControllerControl:1; - USHORT ElectromechanicalLockControl:1; - USHORT DataLinkStateChangeEnable:1; - USHORT Rsvd:3; - } DUMMYSTRUCTNAME; - USHORT AsUSHORT; -} PCI_EXPRESS_SLOT_CONTROL_REGISTER, *PPCI_EXPRESS_SLOT_CONTROL_REGISTER; - -typedef union _PCI_EXPRESS_SLOT_STATUS_REGISTER { - struct { - USHORT AttentionButtonPressed:1; - USHORT PowerFaultDetected:1; - USHORT MRLSensorChanged:1; - USHORT PresenceDetectChanged:1; - USHORT CommandCompleted:1; - USHORT MRLSensorState:1; - USHORT PresenceDetectState:1; - USHORT ElectromechanicalLockEngaged:1; - USHORT DataLinkStateChanged:1; - USHORT Rsvd:7; - } DUMMYSTRUCTNAME; - USHORT AsUSHORT; -} PCI_EXPRESS_SLOT_STATUS_REGISTER, *PPCI_EXPRESS_SLOT_STATUS_REGISTER; - -typedef union _PCI_EXPRESS_ROOT_CONTROL_REGISTER { - struct { - USHORT CorrectableSerrEnable:1; - USHORT NonFatalSerrEnable:1; - USHORT FatalSerrEnable:1; - USHORT PMEInterruptEnable:1; - USHORT CRSSoftwareVisibilityEnable:1; - USHORT Rsvd:11; - } DUMMYSTRUCTNAME; - USHORT AsUSHORT; -} PCI_EXPRESS_ROOT_CONTROL_REGISTER, *PPCI_EXPRESS_ROOT_CONTROL_REGISTER; - -typedef union _PCI_EXPRESS_ROOT_CAPABILITIES_REGISTER { - struct { - USHORT CRSSoftwareVisibility:1; - USHORT Rsvd:15; - } DUMMYSTRUCTNAME; - USHORT AsUSHORT; -} PCI_EXPRESS_ROOT_CAPABILITIES_REGISTER, *PPCI_EXPRESS_ROOT_CAPABILITIES_REGISTER; - -typedef union _PCI_EXPRESS_ROOT_STATUS_REGISTER { - struct { - ULONG PMERequestorId:16; - ULONG PMEStatus:1; - ULONG PMEPending:1; - ULONG Rsvd:14; - } DUMMYSTRUCTNAME; - ULONG AsULONG; -} PCI_EXPRESS_ROOT_STATUS_REGISTER, *PPCI_EXPRESS_ROOT_STATUS_REGISTER; - -typedef struct _PCI_EXPRESS_CAPABILITY { - PCI_CAPABILITIES_HEADER Header; - PCI_EXPRESS_CAPABILITIES_REGISTER ExpressCapabilities; - PCI_EXPRESS_DEVICE_CAPABILITIES_REGISTER DeviceCapabilities; - PCI_EXPRESS_DEVICE_CONTROL_REGISTER DeviceControl; - PCI_EXPRESS_DEVICE_STATUS_REGISTER DeviceStatus; - PCI_EXPRESS_LINK_CAPABILITIES_REGISTER LinkCapabilities; - PCI_EXPRESS_LINK_CONTROL_REGISTER LinkControl; - PCI_EXPRESS_LINK_STATUS_REGISTER LinkStatus; - PCI_EXPRESS_SLOT_CAPABILITIES_REGISTER SlotCapabilities; - PCI_EXPRESS_SLOT_CONTROL_REGISTER SlotControl; - PCI_EXPRESS_SLOT_STATUS_REGISTER SlotStatus; - PCI_EXPRESS_ROOT_CONTROL_REGISTER RootControl; - PCI_EXPRESS_ROOT_CAPABILITIES_REGISTER RootCapabilities; - PCI_EXPRESS_ROOT_STATUS_REGISTER RootStatus; -} PCI_EXPRESS_CAPABILITY, *PPCI_EXPRESS_CAPABILITY; - -typedef enum { - MRLClosed = 0, - MRLOpen -} PCI_EXPRESS_MRL_STATE; - -typedef enum { - SlotEmpty = 0, - CardPresent -} PCI_EXPRESS_CARD_PRESENCE; - -typedef enum { - IndicatorOn = 1, - IndicatorBlink, - IndicatorOff -} PCI_EXPRESS_INDICATOR_STATE; - -typedef enum { - PowerOn = 0, - PowerOff -} PCI_EXPRESS_POWER_STATE; - -typedef enum { - L0sEntrySupport = 1, - L0sAndL1EntrySupport = 3 -} PCI_EXPRESS_ASPM_SUPPORT; - -typedef enum { - L0sAndL1EntryDisabled, - L0sEntryEnabled, - L1EntryEnabled, - L0sAndL1EntryEnabled -} PCI_EXPRESS_ASPM_CONTROL; - -typedef enum { - L0s_Below64ns = 0, - L0s_64ns_128ns, - L0s_128ns_256ns, - L0s_256ns_512ns, - L0s_512ns_1us, - L0s_1us_2us, - L0s_2us_4us, - L0s_Above4us -} PCI_EXPRESS_L0s_EXIT_LATENCY; - -typedef enum { - L1_Below1us = 0, - L1_1us_2us, - L1_2us_4us, - L1_4us_8us, - L1_8us_16us, - L1_16us_32us, - L1_32us_64us, - L1_Above64us -} PCI_EXPRESS_L1_EXIT_LATENCY; - -typedef enum { - PciExpressEndpoint = 0, - PciExpressLegacyEndpoint, - PciExpressRootPort = 4, - PciExpressUpstreamSwitchPort, - PciExpressDownstreamSwitchPort, - PciExpressToPciXBridge, - PciXToExpressBridge, - PciExpressRootComplexIntegratedEndpoint, - PciExpressRootComplexEventCollector -} PCI_EXPRESS_DEVICE_TYPE; - -typedef enum { - MaxPayload128Bytes = 0, - MaxPayload256Bytes, - MaxPayload512Bytes, - MaxPayload1024Bytes, - MaxPayload2048Bytes, - MaxPayload4096Bytes -} PCI_EXPRESS_MAX_PAYLOAD_SIZE; - -typedef union _PCI_EXPRESS_PME_REQUESTOR_ID { - struct { - USHORT FunctionNumber:3; - USHORT DeviceNumber:5; - USHORT BusNumber:8; - } DUMMYSTRUCTNAME; - USHORT AsUSHORT; -} PCI_EXPRESS_PME_REQUESTOR_ID, *PPCI_EXPRESS_PME_REQUESTOR_ID; - -#if defined(_WIN64) - -#ifndef USE_DMA_MACROS -#define USE_DMA_MACROS -#endif - -#ifndef NO_LEGACY_DRIVERS -#define NO_LEGACY_DRIVERS -#endif - -#endif /* defined(_WIN64) */ - -typedef enum _PHYSICAL_COUNTER_RESOURCE_DESCRIPTOR_TYPE { - ResourceTypeSingle = 0, - ResourceTypeRange, - ResourceTypeExtendedCounterConfiguration, - ResourceTypeOverflow, - ResourceTypeMax -} PHYSICAL_COUNTER_RESOURCE_DESCRIPTOR_TYPE; - -typedef struct _PHYSICAL_COUNTER_RESOURCE_DESCRIPTOR { - PHYSICAL_COUNTER_RESOURCE_DESCRIPTOR_TYPE Type; - ULONG Flags; - union { - ULONG CounterIndex; - ULONG ExtendedRegisterAddress; - struct { - ULONG Begin; - ULONG End; - } Range; - } u; -} PHYSICAL_COUNTER_RESOURCE_DESCRIPTOR, *PPHYSICAL_COUNTER_RESOURCE_DESCRIPTOR; - -typedef struct _PHYSICAL_COUNTER_RESOURCE_LIST { - ULONG Count; - PHYSICAL_COUNTER_RESOURCE_DESCRIPTOR Descriptors[ANYSIZE_ARRAY]; -} PHYSICAL_COUNTER_RESOURCE_LIST, *PPHYSICAL_COUNTER_RESOURCE_LIST; - -typedef VOID -(NTAPI *PciPin2Line)( - IN struct _BUS_HANDLER *BusHandler, - IN struct _BUS_HANDLER *RootHandler, - IN PCI_SLOT_NUMBER SlotNumber, - IN PPCI_COMMON_CONFIG PciData); - -typedef VOID -(NTAPI *PciLine2Pin)( - IN struct _BUS_HANDLER *BusHandler, - IN struct _BUS_HANDLER *RootHandler, - IN PCI_SLOT_NUMBER SlotNumber, - IN PPCI_COMMON_CONFIG PciNewData, - IN PPCI_COMMON_CONFIG PciOldData); - -typedef VOID -(NTAPI *PciReadWriteConfig)( - IN struct _BUS_HANDLER *BusHandler, - IN PCI_SLOT_NUMBER Slot, - IN PVOID Buffer, - IN ULONG Offset, - IN ULONG Length); - -#define PCI_DATA_TAG ' ICP' -#define PCI_DATA_VERSION 1 - -typedef struct _PCIBUSDATA { - ULONG Tag; - ULONG Version; - PciReadWriteConfig ReadConfig; - PciReadWriteConfig WriteConfig; - PciPin2Line Pin2Line; - PciLine2Pin Line2Pin; - PCI_SLOT_NUMBER ParentSlot; - PVOID Reserved[4]; -} PCIBUSDATA, *PPCIBUSDATA; - -#ifndef _PCIINTRF_X_ -#define _PCIINTRF_X_ - -typedef ULONG -(NTAPI *PCI_READ_WRITE_CONFIG)( - IN PVOID Context, - IN ULONG BusOffset, - IN ULONG Slot, - IN PVOID Buffer, - IN ULONG Offset, - IN ULONG Length); - -typedef VOID -(NTAPI *PCI_PIN_TO_LINE)( - IN PVOID Context, - IN PPCI_COMMON_CONFIG PciData); - -typedef VOID -(NTAPI *PCI_LINE_TO_PIN)( - IN PVOID Context, - IN PPCI_COMMON_CONFIG PciNewData, - IN PPCI_COMMON_CONFIG PciOldData); - -typedef VOID -(NTAPI *PCI_ROOT_BUS_CAPABILITY)( - IN PVOID Context, - OUT PPCI_ROOT_BUS_HARDWARE_CAPABILITY HardwareCapability); - -typedef VOID -(NTAPI *PCI_EXPRESS_WAKE_CONTROL)( - IN PVOID Context, - IN BOOLEAN EnableWake); - -typedef struct _PCI_BUS_INTERFACE_STANDARD { - USHORT Size; - USHORT Version; - PVOID Context; - PINTERFACE_REFERENCE InterfaceReference; - PINTERFACE_DEREFERENCE InterfaceDereference; - PCI_READ_WRITE_CONFIG ReadConfig; - PCI_READ_WRITE_CONFIG WriteConfig; - PCI_PIN_TO_LINE PinToLine; - PCI_LINE_TO_PIN LineToPin; - PCI_ROOT_BUS_CAPABILITY RootBusCapability; - PCI_EXPRESS_WAKE_CONTROL ExpressWakeControl; -} PCI_BUS_INTERFACE_STANDARD, *PPCI_BUS_INTERFACE_STANDARD; - -#define PCI_BUS_INTERFACE_STANDARD_VERSION 1 - -#endif /* _PCIINTRF_X_ */ - -#if (NTDDI_VERSION >= NTDDI_WIN7) - -#define FILE_CHARACTERISTICS_EXPECT_ORDERLY_REMOVAL_EX 0x00004000 -#define FILE_CHARACTERISTICS_EXPECT_SURPRISE_REMOVAL_EX 0x00008000 -#define FILE_CHARACTERISTICS_REMOVAL_POLICY_MASK_EX \ - (FILE_CHARACTERISTICS_EXPECT_ORDERLY_REMOVAL_EX | \ - FILE_CHARACTERISTICS_EXPECT_SURPRISE_REMOVAL_EX) - -#define FILE_CHARACTERISTICS_EXPECT_ORDERLY_REMOVAL_DEPRECATED 0x00000200 -#define FILE_CHARACTERISTICS_EXPECT_SURPRISE_REMOVAL_DEPRECATED 0x00000300 -#define FILE_CHARACTERISTICS_REMOVAL_POLICY_MASK_DEPRECATED 0x00000300 - -#else - -#define FILE_CHARACTERISTICS_EXPECT_ORDERLY_REMOVAL 0x00000200 -#define FILE_CHARACTERISTICS_EXPECT_SURPRISE_REMOVAL 0x00000300 -#define FILE_CHARACTERISTICS_REMOVAL_POLICY_MASK 0x00000300 - -#define FILE_CHARACTERISTICS_EXPECT_ORDERLY_REMOVAL_EX FILE_CHARACTERISTICS_EXPECT_ORDERLY_REMOVAL -#define FILE_CHARACTERISTICS_EXPECT_SURPRISE_REMOVAL_EX FILE_CHARACTERISTICS_EXPECT_SURPRISE_REMOVAL -#define FILE_CHARACTERISTICS_REMOVAL_POLICY_MASK_EX FILE_CHARACTERISTICS_REMOVAL_POLICY_MASK - -#endif /* (NTDDI_VERSION >= NTDDI_WIN7) */ - -#define FILE_CHARACTERISTICS_PROPAGATED ( FILE_REMOVABLE_MEDIA | \ - FILE_READ_ONLY_DEVICE | \ - FILE_FLOPPY_DISKETTE | \ - FILE_WRITE_ONCE_MEDIA | \ - FILE_DEVICE_SECURE_OPEN ) - -typedef struct _FILE_ALIGNMENT_INFORMATION { - ULONG AlignmentRequirement; -} FILE_ALIGNMENT_INFORMATION, *PFILE_ALIGNMENT_INFORMATION; - -typedef struct _FILE_NAME_INFORMATION { - ULONG FileNameLength; - WCHAR FileName[1]; -} FILE_NAME_INFORMATION, *PFILE_NAME_INFORMATION; - - -typedef struct _FILE_ATTRIBUTE_TAG_INFORMATION { - ULONG FileAttributes; - ULONG ReparseTag; -} FILE_ATTRIBUTE_TAG_INFORMATION, *PFILE_ATTRIBUTE_TAG_INFORMATION; - -typedef struct _FILE_DISPOSITION_INFORMATION { - BOOLEAN DeleteFile; -} FILE_DISPOSITION_INFORMATION, *PFILE_DISPOSITION_INFORMATION; - -typedef struct _FILE_END_OF_FILE_INFORMATION { - LARGE_INTEGER EndOfFile; -} FILE_END_OF_FILE_INFORMATION, *PFILE_END_OF_FILE_INFORMATION; - -typedef struct _FILE_VALID_DATA_LENGTH_INFORMATION { - LARGE_INTEGER ValidDataLength; -} FILE_VALID_DATA_LENGTH_INFORMATION, *PFILE_VALID_DATA_LENGTH_INFORMATION; - -typedef struct _FILE_FS_LABEL_INFORMATION { - ULONG VolumeLabelLength; - WCHAR VolumeLabel[1]; -} FILE_FS_LABEL_INFORMATION, *PFILE_FS_LABEL_INFORMATION; - -typedef struct _FILE_FS_VOLUME_INFORMATION { - LARGE_INTEGER VolumeCreationTime; - ULONG VolumeSerialNumber; - ULONG VolumeLabelLength; - BOOLEAN SupportsObjects; - WCHAR VolumeLabel[1]; -} FILE_FS_VOLUME_INFORMATION, *PFILE_FS_VOLUME_INFORMATION; - -typedef struct _FILE_FS_SIZE_INFORMATION { - LARGE_INTEGER TotalAllocationUnits; - LARGE_INTEGER AvailableAllocationUnits; - ULONG SectorsPerAllocationUnit; - ULONG BytesPerSector; -} FILE_FS_SIZE_INFORMATION, *PFILE_FS_SIZE_INFORMATION; - -typedef struct _FILE_FS_FULL_SIZE_INFORMATION { - LARGE_INTEGER TotalAllocationUnits; - LARGE_INTEGER CallerAvailableAllocationUnits; - LARGE_INTEGER ActualAvailableAllocationUnits; - ULONG SectorsPerAllocationUnit; - ULONG BytesPerSector; -} FILE_FS_FULL_SIZE_INFORMATION, *PFILE_FS_FULL_SIZE_INFORMATION; - -typedef struct _FILE_FS_OBJECTID_INFORMATION { - UCHAR ObjectId[16]; - UCHAR ExtendedInfo[48]; -} FILE_FS_OBJECTID_INFORMATION, *PFILE_FS_OBJECTID_INFORMATION; - -typedef union _FILE_SEGMENT_ELEMENT { - PVOID64 Buffer; - ULONGLONG Alignment; -}FILE_SEGMENT_ELEMENT, *PFILE_SEGMENT_ELEMENT; - -#define IOCTL_AVIO_ALLOCATE_STREAM CTL_CODE(FILE_DEVICE_AVIO, 1, METHOD_BUFFERED, FILE_SPECIAL_ACCESS) -#define IOCTL_AVIO_FREE_STREAM CTL_CODE(FILE_DEVICE_AVIO, 2, METHOD_BUFFERED, FILE_SPECIAL_ACCESS) -#define IOCTL_AVIO_MODIFY_STREAM CTL_CODE(FILE_DEVICE_AVIO, 3, METHOD_BUFFERED, FILE_SPECIAL_ACCESS) - -typedef enum _BUS_DATA_TYPE { - ConfigurationSpaceUndefined = -1, - Cmos, - EisaConfiguration, - Pos, - CbusConfiguration, - PCIConfiguration, - VMEConfiguration, - NuBusConfiguration, - PCMCIAConfiguration, - MPIConfiguration, - MPSAConfiguration, - PNPISAConfiguration, - SgiInternalConfiguration, - MaximumBusDataType -} BUS_DATA_TYPE, *PBUS_DATA_TYPE; - -/* Hardware Abstraction Layer Types */ - -typedef BOOLEAN -(NTAPI *PHAL_RESET_DISPLAY_PARAMETERS)( - IN ULONG Columns, - IN ULONG Rows); - -typedef PBUS_HANDLER -(FASTCALL *pHalHandlerForBus)( - IN INTERFACE_TYPE InterfaceType, - IN ULONG BusNumber); - -typedef VOID -(FASTCALL *pHalReferenceBusHandler)( - IN PBUS_HANDLER BusHandler); - typedef enum _HAL_QUERY_INFORMATION_CLASS { HalInstalledBusInformation, HalProfileSourceInformation, @@ -1307,39 +353,113 @@ typedef enum _HAL_SET_INFORMATION_CLASS { HalProfileDpgoSourceInterruptHandler } HAL_SET_INFORMATION_CLASS, *PHAL_SET_INFORMATION_CLASS; -typedef NTSTATUS -(NTAPI *pHalQuerySystemInformation)( - IN HAL_QUERY_INFORMATION_CLASS InformationClass, - IN ULONG BufferSize, - IN OUT PVOID Buffer, - OUT PULONG ReturnedLength); +typedef struct _HAL_PROFILE_SOURCE_INTERVAL { + KPROFILE_SOURCE Source; + ULONG_PTR Interval; +} HAL_PROFILE_SOURCE_INTERVAL, *PHAL_PROFILE_SOURCE_INTERVAL; -typedef NTSTATUS -(NTAPI *pHalSetSystemInformation)( - IN HAL_SET_INFORMATION_CLASS InformationClass, - IN ULONG BufferSize, - IN PVOID Buffer); +typedef struct _HAL_PROFILE_SOURCE_INFORMATION { + KPROFILE_SOURCE Source; + BOOLEAN Supported; + ULONG Interval; +} HAL_PROFILE_SOURCE_INFORMATION, *PHAL_PROFILE_SOURCE_INFORMATION; -typedef VOID -(FASTCALL *pHalExamineMBR)( - IN PDEVICE_OBJECT DeviceObject, - IN ULONG SectorSize, - IN ULONG MBRTypeIdentifier, - OUT PVOID *Buffer); +typedef struct _MAP_REGISTER_ENTRY { + PVOID MapRegister; + BOOLEAN WriteToDevice; +} MAP_REGISTER_ENTRY, *PMAP_REGISTER_ENTRY; -typedef NTSTATUS -(FASTCALL *pHalIoReadPartitionTable)( - IN PDEVICE_OBJECT DeviceObject, - IN ULONG SectorSize, - IN BOOLEAN ReturnRecognizedPartitions, - OUT struct _DRIVE_LAYOUT_INFORMATION **PartitionBuffer); +typedef struct _DEBUG_DEVICE_ADDRESS { + UCHAR Type; + BOOLEAN Valid; + UCHAR Reserved[2]; + PUCHAR TranslatedAddress; + ULONG Length; +} DEBUG_DEVICE_ADDRESS, *PDEBUG_DEVICE_ADDRESS; -typedef NTSTATUS -(FASTCALL *pHalIoSetPartitionInformation)( - IN PDEVICE_OBJECT DeviceObject, - IN ULONG SectorSize, - IN ULONG PartitionNumber, - IN ULONG PartitionType); +typedef struct _DEBUG_MEMORY_REQUIREMENTS { + PHYSICAL_ADDRESS Start; + PHYSICAL_ADDRESS MaxEnd; + PVOID VirtualAddress; + ULONG Length; + BOOLEAN Cached; + BOOLEAN Aligned; +} DEBUG_MEMORY_REQUIREMENTS, *PDEBUG_MEMORY_REQUIREMENTS; + +typedef struct _DEBUG_DEVICE_DESCRIPTOR { + ULONG Bus; + ULONG Slot; + USHORT Segment; + USHORT VendorID; + USHORT DeviceID; + UCHAR BaseClass; + UCHAR SubClass; + UCHAR ProgIf; + BOOLEAN Initialized; + BOOLEAN Configured; + DEBUG_DEVICE_ADDRESS BaseAddress[6]; + DEBUG_MEMORY_REQUIREMENTS Memory; +} DEBUG_DEVICE_DESCRIPTOR, *PDEBUG_DEVICE_DESCRIPTOR; + +typedef struct _PM_DISPATCH_TABLE { + ULONG Signature; + ULONG Version; + PVOID Function[1]; +} PM_DISPATCH_TABLE, *PPM_DISPATCH_TABLE; + +typedef enum _RESOURCE_TRANSLATION_DIRECTION { + TranslateChildToParent, + TranslateParentToChild +} RESOURCE_TRANSLATION_DIRECTION; + +typedef NTSTATUS +(NTAPI *PTRANSLATE_RESOURCE_HANDLER)( + IN OUT PVOID Context, + IN PCM_PARTIAL_RESOURCE_DESCRIPTOR Source, + IN RESOURCE_TRANSLATION_DIRECTION Direction, + IN ULONG AlternativesCount OPTIONAL, + IN IO_RESOURCE_DESCRIPTOR Alternatives[], + IN PDEVICE_OBJECT PhysicalDeviceObject, + OUT PCM_PARTIAL_RESOURCE_DESCRIPTOR Target); + +typedef NTSTATUS +(NTAPI *PTRANSLATE_RESOURCE_REQUIREMENTS_HANDLER)( + IN PVOID Context OPTIONAL, + IN PIO_RESOURCE_DESCRIPTOR Source, + IN PDEVICE_OBJECT PhysicalDeviceObject, + OUT PULONG TargetCount, + OUT PIO_RESOURCE_DESCRIPTOR *Target); + +typedef struct _TRANSLATOR_INTERFACE { + USHORT Size; + USHORT Version; + PVOID Context; + PINTERFACE_REFERENCE InterfaceReference; + PINTERFACE_DEREFERENCE InterfaceDereference; + PTRANSLATE_RESOURCE_HANDLER TranslateResources; + PTRANSLATE_RESOURCE_REQUIREMENTS_HANDLER TranslateResourceRequirements; +} TRANSLATOR_INTERFACE, *PTRANSLATOR_INTERFACE; + +typedef VOID +(FASTCALL *pHalExamineMBR)( + IN PDEVICE_OBJECT DeviceObject, + IN ULONG SectorSize, + IN ULONG MBRTypeIdentifier, + OUT PVOID *Buffer); + +typedef NTSTATUS +(FASTCALL *pHalIoReadPartitionTable)( + IN PDEVICE_OBJECT DeviceObject, + IN ULONG SectorSize, + IN BOOLEAN ReturnRecognizedPartitions, + OUT struct _DRIVE_LAYOUT_INFORMATION **PartitionBuffer); + +typedef NTSTATUS +(FASTCALL *pHalIoSetPartitionInformation)( + IN PDEVICE_OBJECT DeviceObject, + IN ULONG SectorSize, + IN ULONG PartitionNumber, + IN ULONG PartitionType); typedef NTSTATUS (FASTCALL *pHalIoWritePartitionTable)( @@ -1349,6 +469,28 @@ typedef NTSTATUS IN ULONG NumberOfHeads, IN struct _DRIVE_LAYOUT_INFORMATION *PartitionBuffer); +typedef PBUS_HANDLER +(FASTCALL *pHalHandlerForBus)( + IN INTERFACE_TYPE InterfaceType, + IN ULONG BusNumber); + +typedef VOID +(FASTCALL *pHalReferenceBusHandler)( + IN PBUS_HANDLER BusHandler); + +typedef NTSTATUS +(NTAPI *pHalQuerySystemInformation)( + IN HAL_QUERY_INFORMATION_CLASS InformationClass, + IN ULONG BufferSize, + IN OUT PVOID Buffer, + OUT PULONG ReturnedLength); + +typedef NTSTATUS +(NTAPI *pHalSetSystemInformation)( + IN HAL_SET_INFORMATION_CLASS InformationClass, + IN ULONG BufferSize, + IN PVOID Buffer); + typedef NTSTATUS (NTAPI *pHalQueryBusSlots)( IN PBUS_HANDLER BusHandler, @@ -1360,12 +502,6 @@ typedef NTSTATUS (NTAPI *pHalInitPnpDriver)( VOID); -typedef struct _PM_DISPATCH_TABLE { - ULONG Signature; - ULONG Version; - PVOID Function[1]; -} PM_DISPATCH_TABLE, *PPM_DISPATCH_TABLE; - typedef NTSTATUS (NTAPI *pHalInitPowerManagement)( IN PPM_DISPATCH_TABLE PmDriverDispatchTable, @@ -1405,7 +541,12 @@ typedef NTSTATUS IN PHYSICAL_ADDRESS PhysicalAddress, IN LARGE_INTEGER NumberOfBytes); -typedef BOOLEAN +typedef VOID +(NTAPI *pHalEndOfBoot)( + VOID); + +typedef +BOOLEAN (NTAPI *pHalTranslateBusAddress)( IN INTERFACE_TYPE InterfaceType, IN ULONG BusNumber, @@ -1413,7 +554,8 @@ typedef BOOLEAN IN OUT PULONG AddressSpace, OUT PPHYSICAL_ADDRESS TranslatedAddress); -typedef NTSTATUS +typedef +NTSTATUS (NTAPI *pHalAssignSlotResources)( IN PUNICODE_STRING RegistryPath, IN PUNICODE_STRING DriverClassName OPTIONAL, @@ -1424,24 +566,23 @@ typedef NTSTATUS IN ULONG SlotNumber, IN OUT PCM_RESOURCE_LIST *AllocatedResources); -typedef VOID +typedef +VOID (NTAPI *pHalHaltSystem)( VOID); -typedef BOOLEAN +typedef +BOOLEAN (NTAPI *pHalResetDisplay)( VOID); -typedef struct _MAP_REGISTER_ENTRY { - PVOID MapRegister; - BOOLEAN WriteToDevice; -} MAP_REGISTER_ENTRY, *PMAP_REGISTER_ENTRY; - -typedef UCHAR +typedef +UCHAR (NTAPI *pHalVectorToIDTEntry)( ULONG Vector); -typedef BOOLEAN +typedef +BOOLEAN (NTAPI *pHalFindBusAddressTranslation)( IN PHYSICAL_ADDRESS BusAddress, IN OUT PULONG AddressSpace, @@ -1449,33 +590,94 @@ typedef BOOLEAN IN OUT PULONG_PTR Context, IN BOOLEAN NextBus); -typedef VOID -(NTAPI *pHalEndOfBoot)( - VOID); +typedef +NTSTATUS +(NTAPI *pKdSetupPciDeviceForDebugging)( + IN PVOID LoaderBlock OPTIONAL, + IN OUT PDEBUG_DEVICE_DESCRIPTOR PciDevice); + +typedef +NTSTATUS +(NTAPI *pKdReleasePciDeviceForDebugging)( + IN OUT PDEBUG_DEVICE_DESCRIPTOR PciDevice); + +typedef +PVOID +(NTAPI *pKdGetAcpiTablePhase0)( + IN struct _LOADER_PARAMETER_BLOCK *LoaderBlock, + IN ULONG Signature); -typedef PVOID +typedef +PVOID (NTAPI *pHalGetAcpiTable)( IN ULONG Signature, IN PCSTR OemId OPTIONAL, IN PCSTR OemTableId OPTIONAL); + +typedef +VOID +(NTAPI *pKdCheckPowerButton)( + VOID); -#if defined(_IA64_) -typedef NTSTATUS -(*pHalGetErrorCapList)( - IN OUT PULONG CapsListLength, - IN OUT PUCHAR ErrorCapList); +#if (NTDDI_VERSION >= NTDDI_VISTA) +typedef +PVOID +(NTAPI *pKdMapPhysicalMemory64)( + IN PHYSICAL_ADDRESS PhysicalAddress, + IN ULONG NumberPages, + IN BOOLEAN FlushCurrentTLB); -typedef NTSTATUS -(*pHalInjectError)( - IN ULONG BufferLength, - IN PUCHAR Buffer); +typedef +VOID +(NTAPI *pKdUnmapVirtualAddress)( + IN PVOID VirtualAddress, + IN ULONG NumberPages, + IN BOOLEAN FlushCurrentTLB); +#else +typedef +PVOID +(NTAPI *pKdMapPhysicalMemory64)( + IN PHYSICAL_ADDRESS PhysicalAddress, + IN ULONG NumberPages); + +typedef +VOID +(NTAPI *pKdUnmapVirtualAddress)( + IN PVOID VirtualAddress, + IN ULONG NumberPages); #endif -typedef VOID + +typedef +ULONG +(NTAPI *pKdGetPciDataByOffset)( + IN ULONG BusNumber, + IN ULONG SlotNumber, + OUT PVOID Buffer, + IN ULONG Offset, + IN ULONG Length); + +typedef +ULONG +(NTAPI *pKdSetPciDataByOffset)( + IN ULONG BusNumber, + IN ULONG SlotNumber, + IN PVOID Buffer, + IN ULONG Offset, + IN ULONG Length); + +typedef BOOLEAN +(NTAPI *PHAL_RESET_DISPLAY_PARAMETERS)( + IN ULONG Columns, + IN ULONG Rows); + +typedef +VOID (NTAPI *PCI_ERROR_HANDLER_CALLBACK)( VOID); -typedef VOID +typedef +VOID (NTAPI *pHalSetPciErrorHandlerCallback)( IN PCI_ERROR_HANDLER_CALLBACK Callback); @@ -1549,3808 +751,1967 @@ extern NTKERNELAPI HAL_DISPATCH HalDispatchTable; #define HalMirrorPhysicalMemory HALDISPATCH->HalMirrorPhysicalMemory #define HalEndOfBoot HALDISPATCH->HalEndOfBoot #define HalMirrorVerify HALDISPATCH->HalMirrorVerify -#define HalGetCachedAcpiTable HALDISPATCH->HalGetCachedAcpiTable -#define HalSetPciErrorHandlerCallback HALDISPATCH->HalSetPciErrorHandlerCallback -#if defined(_IA64_) -#define HalGetErrorCapList HALDISPATCH->HalGetErrorCapList -#define HalInjectError HALDISPATCH->HalInjectError -#endif - -typedef struct _HAL_BUS_INFORMATION { - INTERFACE_TYPE BusType; - BUS_DATA_TYPE ConfigurationType; - ULONG BusNumber; - ULONG Reserved; -} HAL_BUS_INFORMATION, *PHAL_BUS_INFORMATION; - -typedef struct _HAL_PROFILE_SOURCE_INFORMATION { - KPROFILE_SOURCE Source; - BOOLEAN Supported; - ULONG Interval; -} HAL_PROFILE_SOURCE_INFORMATION, *PHAL_PROFILE_SOURCE_INFORMATION; - -typedef struct _HAL_PROFILE_SOURCE_INFORMATION_EX { - KPROFILE_SOURCE Source; - BOOLEAN Supported; - ULONG_PTR Interval; - ULONG_PTR DefInterval; - ULONG_PTR MaxInterval; - ULONG_PTR MinInterval; -} HAL_PROFILE_SOURCE_INFORMATION_EX, *PHAL_PROFILE_SOURCE_INFORMATION_EX; -typedef struct _HAL_PROFILE_SOURCE_INTERVAL { - KPROFILE_SOURCE Source; - ULONG_PTR Interval; -} HAL_PROFILE_SOURCE_INTERVAL, *PHAL_PROFILE_SOURCE_INTERVAL; +typedef struct _FILE_ALIGNMENT_INFORMATION { + ULONG AlignmentRequirement; +} FILE_ALIGNMENT_INFORMATION, *PFILE_ALIGNMENT_INFORMATION; -typedef struct _HAL_PROFILE_SOURCE_LIST { - KPROFILE_SOURCE Source; - PWSTR Description; -} HAL_PROFILE_SOURCE_LIST, *PHAL_PROFILE_SOURCE_LIST; +typedef struct _FILE_NAME_INFORMATION { + ULONG FileNameLength; + WCHAR FileName[1]; +} FILE_NAME_INFORMATION, *PFILE_NAME_INFORMATION; -typedef enum _HAL_DISPLAY_BIOS_INFORMATION { - HalDisplayInt10Bios, - HalDisplayEmulatedBios, - HalDisplayNoBios -} HAL_DISPLAY_BIOS_INFORMATION, *PHAL_DISPLAY_BIOS_INFORMATION; -typedef struct _HAL_POWER_INFORMATION { - ULONG TBD; -} HAL_POWER_INFORMATION, *PHAL_POWER_INFORMATION; +typedef struct _FILE_ATTRIBUTE_TAG_INFORMATION { + ULONG FileAttributes; + ULONG ReparseTag; +} FILE_ATTRIBUTE_TAG_INFORMATION, *PFILE_ATTRIBUTE_TAG_INFORMATION; -typedef struct _HAL_PROCESSOR_SPEED_INFO { - ULONG ProcessorSpeed; -} HAL_PROCESSOR_SPEED_INFORMATION, *PHAL_PROCESSOR_SPEED_INFORMATION; +typedef struct _FILE_DISPOSITION_INFORMATION { + BOOLEAN DeleteFile; +} FILE_DISPOSITION_INFORMATION, *PFILE_DISPOSITION_INFORMATION; -typedef struct _HAL_CALLBACKS { - PCALLBACK_OBJECT SetSystemInformation; - PCALLBACK_OBJECT BusCheck; -} HAL_CALLBACKS, *PHAL_CALLBACKS; +typedef struct _FILE_END_OF_FILE_INFORMATION { + LARGE_INTEGER EndOfFile; +} FILE_END_OF_FILE_INFORMATION, *PFILE_END_OF_FILE_INFORMATION; -typedef struct _HAL_PROCESSOR_FEATURE { - ULONG UsableFeatureBits; -} HAL_PROCESSOR_FEATURE; +typedef struct _FILE_VALID_DATA_LENGTH_INFORMATION { + LARGE_INTEGER ValidDataLength; +} FILE_VALID_DATA_LENGTH_INFORMATION, *PFILE_VALID_DATA_LENGTH_INFORMATION; -typedef NTSTATUS -(NTAPI *PHALIOREADWRITEHANDLER)( - IN BOOLEAN fRead, - IN ULONG dwAddr, - IN ULONG dwSize, - IN OUT PULONG pdwData); +typedef union _FILE_SEGMENT_ELEMENT { + PVOID64 Buffer; + ULONGLONG Alignment; +}FILE_SEGMENT_ELEMENT, *PFILE_SEGMENT_ELEMENT; -typedef struct _HAL_AMLI_BAD_IO_ADDRESS_LIST { - ULONG BadAddrBegin; - ULONG BadAddrSize; - ULONG OSVersionTrigger; - PHALIOREADWRITEHANDLER IOHandler; -} HAL_AMLI_BAD_IO_ADDRESS_LIST, *PHAL_AMLI_BAD_IO_ADDRESS_LIST; +#define SE_UNSOLICITED_INPUT_PRIVILEGE 6 -#if defined(_X86_) || defined(_IA64_) || defined(_AMD64_) - -typedef VOID -(NTAPI *PHALMCAINTERFACELOCK)( - VOID); - -typedef VOID -(NTAPI *PHALMCAINTERFACEUNLOCK)( - VOID); - -typedef NTSTATUS -(NTAPI *PHALMCAINTERFACEREADREGISTER)( - IN UCHAR BankNumber, - IN OUT PVOID Exception); - -typedef struct _HAL_MCA_INTERFACE { - PHALMCAINTERFACELOCK Lock; - PHALMCAINTERFACEUNLOCK Unlock; - PHALMCAINTERFACEREADREGISTER ReadRegister; -} HAL_MCA_INTERFACE; - -typedef enum { - ApicDestinationModePhysical = 1, - ApicDestinationModeLogicalFlat, - ApicDestinationModeLogicalClustered, - ApicDestinationModeUnknown -} HAL_APIC_DESTINATION_MODE, *PHAL_APIC_DESTINATION_MODE; - -#if defined(_AMD64_) - -struct _KTRAP_FRAME; -struct _KEXCEPTION_FRAME; - -typedef ERROR_SEVERITY -(NTAPI *PDRIVER_EXCPTN_CALLBACK)( - IN PVOID Context, - IN struct _KTRAP_FRAME *TrapFrame, - IN struct _KEXCEPTION_FRAME *ExceptionFrame, - IN PMCA_EXCEPTION Exception); - -#endif - -#if defined(_X86_) || defined(_IA64_) -typedef -#if defined(_IA64_) -ERROR_SEVERITY -#else -VOID -#endif -(NTAPI *PDRIVER_EXCPTN_CALLBACK)( - IN PVOID Context, - IN PMCA_EXCEPTION BankLog); +#if (NTDDI_VERSION >= NTDDI_WIN2K) +NTSYSAPI +ULONGLONG +NTAPI +VerSetConditionMask( + IN ULONGLONG ConditionMask, + IN ULONG TypeMask, + IN UCHAR Condition); #endif -typedef PDRIVER_EXCPTN_CALLBACK PDRIVER_MCA_EXCEPTION_CALLBACK; - -typedef struct _MCA_DRIVER_INFO { - PDRIVER_MCA_EXCEPTION_CALLBACK ExceptionCallback; - PKDEFERRED_ROUTINE DpcCallback; - PVOID DeviceContext; -} MCA_DRIVER_INFO, *PMCA_DRIVER_INFO; - -typedef struct _HAL_ERROR_INFO { - ULONG Version; - ULONG InitMaxSize; - ULONG McaMaxSize; - ULONG McaPreviousEventsCount; - ULONG McaCorrectedEventsCount; - ULONG McaKernelDeliveryFails; - ULONG McaDriverDpcQueueFails; - ULONG McaReserved; - ULONG CmcMaxSize; - ULONG CmcPollingInterval; - ULONG CmcInterruptsCount; - ULONG CmcKernelDeliveryFails; - ULONG CmcDriverDpcQueueFails; - ULONG CmcGetStateFails; - ULONG CmcClearStateFails; - ULONG CmcReserved; - ULONGLONG CmcLogId; - ULONG CpeMaxSize; - ULONG CpePollingInterval; - ULONG CpeInterruptsCount; - ULONG CpeKernelDeliveryFails; - ULONG CpeDriverDpcQueueFails; - ULONG CpeGetStateFails; - ULONG CpeClearStateFails; - ULONG CpeInterruptSources; - ULONGLONG CpeLogId; - ULONGLONG KernelReserved[4]; -} HAL_ERROR_INFO, *PHAL_ERROR_INFO; - -#define HAL_MCE_INTERRUPTS_BASED ((ULONG)-1) -#define HAL_MCE_DISABLED ((ULONG)0) - -#define HAL_CMC_INTERRUPTS_BASED HAL_MCE_INTERRUPTS_BASED -#define HAL_CMC_DISABLED HAL_MCE_DISABLED - -#define HAL_CPE_INTERRUPTS_BASED HAL_MCE_INTERRUPTS_BASED -#define HAL_CPE_DISABLED HAL_MCE_DISABLED - -#define HAL_MCA_INTERRUPTS_BASED HAL_MCE_INTERRUPTS_BASED -#define HAL_MCA_DISABLED HAL_MCE_DISABLED - -typedef VOID -(NTAPI *PDRIVER_CMC_EXCEPTION_CALLBACK)( - IN PVOID Context, - IN PCMC_EXCEPTION CmcLog); - -typedef VOID -(NTAPI *PDRIVER_CPE_EXCEPTION_CALLBACK)( - IN PVOID Context, - IN PCPE_EXCEPTION CmcLog); - -typedef struct _CMC_DRIVER_INFO { - PDRIVER_CMC_EXCEPTION_CALLBACK ExceptionCallback; - PKDEFERRED_ROUTINE DpcCallback; - PVOID DeviceContext; -} CMC_DRIVER_INFO, *PCMC_DRIVER_INFO; - -typedef struct _CPE_DRIVER_INFO { - PDRIVER_CPE_EXCEPTION_CALLBACK ExceptionCallback; - PKDEFERRED_ROUTINE DpcCallback; - PVOID DeviceContext; -} CPE_DRIVER_INFO, *PCPE_DRIVER_INFO; - -#endif // defined(_X86_) || defined(_IA64_) || defined(_AMD64_) - -#if defined(_IA64_) +#define VER_SET_CONDITION(ConditionMask, TypeBitMask, ComparisonType) \ + ((ConditionMask) = VerSetConditionMask((ConditionMask), \ + (TypeBitMask), (ComparisonType))) -typedef NTSTATUS -(*HALSENDCROSSPARTITIONIPI)( - IN USHORT ProcessorID, - IN UCHAR HardwareVector); +/* RtlVerifyVersionInfo() TypeMask */ -typedef NTSTATUS -(*HALRESERVECROSSPARTITIONINTERRUPTVECTOR)( - OUT PULONG Vector, - OUT PKIRQL Irql, - IN OUT PGROUP_AFFINITY Affinity, - OUT PUCHAR HardwareVector); +#define VER_MINORVERSION 0x0000001 +#define VER_MAJORVERSION 0x0000002 +#define VER_BUILDNUMBER 0x0000004 +#define VER_PLATFORMID 0x0000008 +#define VER_SERVICEPACKMINOR 0x0000010 +#define VER_SERVICEPACKMAJOR 0x0000020 +#define VER_SUITENAME 0x0000040 +#define VER_PRODUCT_TYPE 0x0000080 -typedef VOID -(*HALFREECROSSPARTITIONINTERRUPTVECTOR)( - IN ULONG Vector, - IN PGROUP_AFFINITY Affinity); +/* RtlVerifyVersionInfo() ComparisonType */ -typedef struct _HAL_CROSS_PARTITION_IPI_INTERFACE { - HALSENDCROSSPARTITIONIPI HalSendCrossPartitionIpi; - HALRESERVECROSSPARTITIONINTERRUPTVECTOR HalReserveCrossPartitionInterruptVector; - HALFREECROSSPARTITIONINTERRUPTVECTOR HalFreeCrossPartitionInterruptVector; -} HAL_CROSS_PARTITION_IPI_INTERFACE; +#define VER_EQUAL 1 +#define VER_GREATER 2 +#define VER_GREATER_EQUAL 3 +#define VER_LESS 4 +#define VER_LESS_EQUAL 5 +#define VER_AND 6 +#define VER_OR 7 -#define HAL_CROSS_PARTITION_IPI_INTERFACE_MINIMUM_SIZE \ - FIELD_OFFSET(HAL_CROSS_PARTITION_IPI_INTERFACE, \ - HalFreeCrossPartitionInterruptVector) +#define VER_CONDITION_MASK 7 +#define VER_NUM_BITS_PER_CONDITION_MASK 3 -#endif /* defined(_IA64_) */ +typedef struct _IMAGE_INFO { + _ANONYMOUS_UNION union { + ULONG Properties; + _ANONYMOUS_STRUCT struct { + ULONG ImageAddressingMode:8; + ULONG SystemModeImage:1; + ULONG ImageMappedToAllPids:1; + ULONG ExtendedInfoPresent:1; + ULONG Reserved:22; + } DUMMYSTRUCTNAME; + } DUMMYUNIONNAME; + PVOID ImageBase; + ULONG ImageSelector; + SIZE_T ImageSize; + ULONG ImageSectionNumber; +} IMAGE_INFO, *PIMAGE_INFO; -typedef struct _HAL_PLATFORM_INFORMATION { - ULONG PlatformFlags; -} HAL_PLATFORM_INFORMATION, *PHAL_PLATFORM_INFORMATION; +#define IMAGE_ADDRESSING_MODE_32BIT 3 -#define HAL_PLATFORM_DISABLE_WRITE_COMBINING 0x01L -#define HAL_PLATFORM_DISABLE_PTCG 0x04L -#define HAL_PLATFORM_DISABLE_UC_MAIN_MEMORY 0x08L -#define HAL_PLATFORM_ENABLE_WRITE_COMBINING_MMIO 0x10L -#define HAL_PLATFORM_ACPI_TABLES_CACHED 0x20L +typedef enum _BUS_DATA_TYPE { + ConfigurationSpaceUndefined = -1, + Cmos, + EisaConfiguration, + Pos, + CbusConfiguration, + PCIConfiguration, + VMEConfiguration, + NuBusConfiguration, + PCMCIAConfiguration, + MPIConfiguration, + MPSAConfiguration, + PNPISAConfiguration, + SgiInternalConfiguration, + MaximumBusDataType +} BUS_DATA_TYPE, *PBUS_DATA_TYPE; -/****************************************************************************** - * Kernel Types * - ******************************************************************************/ +typedef struct _NT_TIB { + struct _EXCEPTION_REGISTRATION_RECORD *ExceptionList; + PVOID StackBase; + PVOID StackLimit; + PVOID SubSystemTib; + _ANONYMOUS_UNION union { + PVOID FiberData; + ULONG Version; + } DUMMYUNIONNAME; + PVOID ArbitraryUserPointer; + struct _NT_TIB *Self; +} NT_TIB, *PNT_TIB; -#define NX_SUPPORT_POLICY_ALWAYSOFF 0 -#define NX_SUPPORT_POLICY_ALWAYSON 1 -#define NX_SUPPORT_POLICY_OPTIN 2 -#define NX_SUPPORT_POLICY_OPTOUT 3 +typedef struct _NT_TIB32 { + ULONG ExceptionList; + ULONG StackBase; + ULONG StackLimit; + ULONG SubSystemTib; + __GNU_EXTENSION union { + ULONG FiberData; + ULONG Version; + }; + ULONG ArbitraryUserPointer; + ULONG Self; +} NT_TIB32,*PNT_TIB32; -typedef VOID -(NTAPI *PEXPAND_STACK_CALLOUT)( - IN PVOID Parameter OPTIONAL); +typedef struct _NT_TIB64 { + ULONG64 ExceptionList; + ULONG64 StackBase; + ULONG64 StackLimit; + ULONG64 SubSystemTib; + __GNU_EXTENSION union { + ULONG64 FiberData; + ULONG Version; + }; + ULONG64 ArbitraryUserPointer; + ULONG64 Self; +} NT_TIB64,*PNT_TIB64; -typedef VOID -(NTAPI *PTIMER_APC_ROUTINE)( - IN PVOID TimerContext, - IN ULONG TimerLowValue, - IN LONG TimerHighValue); +typedef enum _PROCESSINFOCLASS { + ProcessBasicInformation, + ProcessQuotaLimits, + ProcessIoCounters, + ProcessVmCounters, + ProcessTimes, + ProcessBasePriority, + ProcessRaisePriority, + ProcessDebugPort, + ProcessExceptionPort, + ProcessAccessToken, + ProcessLdtInformation, + ProcessLdtSize, + ProcessDefaultHardErrorMode, + ProcessIoPortHandlers, + ProcessPooledUsageAndLimits, + ProcessWorkingSetWatch, + ProcessUserModeIOPL, + ProcessEnableAlignmentFaultFixup, + ProcessPriorityClass, + ProcessWx86Information, + ProcessHandleCount, + ProcessAffinityMask, + ProcessPriorityBoost, + ProcessDeviceMap, + ProcessSessionInformation, + ProcessForegroundInformation, + ProcessWow64Information, + ProcessImageFileName, + ProcessLUIDDeviceMapsEnabled, + ProcessBreakOnTermination, + ProcessDebugObjectHandle, + ProcessDebugFlags, + ProcessHandleTracing, + ProcessIoPriority, + ProcessExecuteFlags, + ProcessTlsInformation, + ProcessCookie, + ProcessImageInformation, + ProcessCycleTime, + ProcessPagePriority, + ProcessInstrumentationCallback, + ProcessThreadStackAllocation, + ProcessWorkingSetWatchEx, + ProcessImageFileNameWin32, + ProcessImageFileMapping, + ProcessAffinityUpdateMode, + ProcessMemoryAllocationMode, + ProcessGroupInformation, + ProcessTokenVirtualizationEnabled, + ProcessConsoleHostProcess, + ProcessWindowInformation, + MaxProcessInfoClass +} PROCESSINFOCLASS; -typedef enum _TIMER_SET_INFORMATION_CLASS { - TimerSetCoalescableTimer, - MaxTimerInfoClass -} TIMER_SET_INFORMATION_CLASS; +typedef enum _THREADINFOCLASS { + ThreadBasicInformation, + ThreadTimes, + ThreadPriority, + ThreadBasePriority, + ThreadAffinityMask, + ThreadImpersonationToken, + ThreadDescriptorTableEntry, + ThreadEnableAlignmentFaultFixup, + ThreadEventPair_Reusable, + ThreadQuerySetWin32StartAddress, + ThreadZeroTlsCell, + ThreadPerformanceCount, + ThreadAmILastThread, + ThreadIdealProcessor, + ThreadPriorityBoost, + ThreadSetTlsArrayAddress, + ThreadIsIoPending, + ThreadHideFromDebugger, + ThreadBreakOnTermination, + ThreadSwitchLegacyState, + ThreadIsTerminated, + ThreadLastSystemCall, + ThreadIoPriority, + ThreadCycleTime, + ThreadPagePriority, + ThreadActualBasePriority, + ThreadTebInformation, + ThreadCSwitchMon, + ThreadCSwitchPmu, + ThreadWow64Context, + ThreadGroupInformation, + ThreadUmsInformation, + ThreadCounterProfiling, + ThreadIdealProcessorEx, + MaxThreadInfoClass +} THREADINFOCLASS; -#if (NTDDI_VERSION >= NTDDI_WIN7) -typedef struct _TIMER_SET_COALESCABLE_TIMER_INFO { - IN LARGE_INTEGER DueTime; - IN PTIMER_APC_ROUTINE TimerApcRoutine OPTIONAL; - IN PVOID TimerContext OPTIONAL; - IN struct _COUNTED_REASON_CONTEXT *WakeContext OPTIONAL; - IN ULONG Period OPTIONAL; - IN ULONG TolerableDelay; - OUT PBOOLEAN PreviousState OPTIONAL; -} TIMER_SET_COALESCABLE_TIMER_INFO, *PTIMER_SET_COALESCABLE_TIMER_INFO; -#endif /* (NTDDI_VERSION >= NTDDI_WIN7) */ - -#define XSTATE_LEGACY_FLOATING_POINT 0 -#define XSTATE_LEGACY_SSE 1 -#define XSTATE_GSSE 2 - -#define XSTATE_MASK_LEGACY_FLOATING_POINT (1i64 << (XSTATE_LEGACY_FLOATING_POINT)) -#define XSTATE_MASK_LEGACY_SSE (1i64 << (XSTATE_LEGACY_SSE)) -#define XSTATE_MASK_LEGACY (XSTATE_MASK_LEGACY_FLOATING_POINT | XSTATE_MASK_LEGACY_SSE) -#define XSTATE_MASK_GSSE (1i64 << (XSTATE_GSSE)) - -#define MAXIMUM_XSTATE_FEATURES 64 - -typedef struct _XSTATE_FEATURE { - ULONG Offset; - ULONG Size; -} XSTATE_FEATURE, *PXSTATE_FEATURE; - -typedef struct _XSTATE_CONFIGURATION { - ULONG64 EnabledFeatures; - ULONG Size; - ULONG OptimizedSave:1; - XSTATE_FEATURE Features[MAXIMUM_XSTATE_FEATURES]; -} XSTATE_CONFIGURATION, *PXSTATE_CONFIGURATION; +typedef struct _PROCESS_BASIC_INFORMATION { + NTSTATUS ExitStatus; + struct _PEB *PebBaseAddress; + ULONG_PTR AffinityMask; + KPRIORITY BasePriority; + ULONG_PTR UniqueProcessId; + ULONG_PTR InheritedFromUniqueProcessId; +} PROCESS_BASIC_INFORMATION,*PPROCESS_BASIC_INFORMATION; -#define MAX_WOW64_SHARED_ENTRIES 16 +typedef struct _PROCESS_WS_WATCH_INFORMATION { + PVOID FaultingPc; + PVOID FaultingVa; +} PROCESS_WS_WATCH_INFORMATION, *PPROCESS_WS_WATCH_INFORMATION; -typedef struct _KUSER_SHARED_DATA { - ULONG TickCountLowDeprecated; - ULONG TickCountMultiplier; - volatile KSYSTEM_TIME InterruptTime; - volatile KSYSTEM_TIME SystemTime; - volatile KSYSTEM_TIME TimeZoneBias; - USHORT ImageNumberLow; - USHORT ImageNumberHigh; - WCHAR NtSystemRoot[260]; - ULONG MaxStackTraceDepth; - ULONG CryptoExponent; - ULONG TimeZoneId; - ULONG LargePageMinimum; - ULONG Reserved2[7]; - NT_PRODUCT_TYPE NtProductType; - BOOLEAN ProductTypeIsValid; - ULONG NtMajorVersion; - ULONG NtMinorVersion; - BOOLEAN ProcessorFeatures[PROCESSOR_FEATURE_MAX]; - ULONG Reserved1; - ULONG Reserved3; - volatile ULONG TimeSlip; - ALTERNATIVE_ARCHITECTURE_TYPE AlternativeArchitecture; - ULONG AltArchitecturePad[1]; - LARGE_INTEGER SystemExpirationDate; - ULONG SuiteMask; - BOOLEAN KdDebuggerEnabled; -#if (NTDDI_VERSION >= NTDDI_WINXPSP2) - UCHAR NXSupportPolicy; -#endif - volatile ULONG ActiveConsoleId; - volatile ULONG DismountCount; - ULONG ComPlusPackage; - ULONG LastSystemRITEventTickCount; - ULONG NumberOfPhysicalPages; - BOOLEAN SafeBootMode; -#if (NTDDI_VERSION >= NTDDI_WIN7) - union { - UCHAR TscQpcData; +typedef struct _PROCESS_DEVICEMAP_INFORMATION { + __GNU_EXTENSION union { struct { - UCHAR TscQpcEnabled:1; - UCHAR TscQpcSpareFlag:1; - UCHAR TscQpcShift:6; - } DUMMYSTRUCTNAME; - } DUMMYUNIONNAME; - UCHAR TscQpcPad[2]; -#endif -#if (NTDDI_VERSION >= NTDDI_VISTA) - union { - ULONG SharedDataFlags; - struct { - ULONG DbgErrorPortPresent:1; - ULONG DbgElevationEnabled:1; - ULONG DbgVirtEnabled:1; - ULONG DbgInstallerDetectEnabled:1; - ULONG DbgSystemDllRelocated:1; - ULONG DbgDynProcessorEnabled:1; - ULONG DbgSEHValidationEnabled:1; - ULONG SpareBits:25; - } DUMMYSTRUCTNAME2; - } DUMMYUNIONNAME2; -#else - ULONG TraceLogging; -#endif - ULONG DataFlagsPad[1]; - ULONGLONG TestRetInstruction; - ULONG SystemCall; - ULONG SystemCallReturn; - ULONGLONG SystemCallPad[3]; - _ANONYMOUS_UNION union { - volatile KSYSTEM_TIME TickCount; - volatile ULONG64 TickCountQuad; - _ANONYMOUS_STRUCT struct { - ULONG ReservedTickCountOverlay[3]; - ULONG TickCountPad[1]; - } DUMMYSTRUCTNAME; - } DUMMYUNIONNAME3; - ULONG Cookie; - ULONG CookiePad[1]; -#if (NTDDI_VERSION >= NTDDI_WS03) - LONGLONG ConsoleSessionForegroundProcessId; - ULONG Wow64SharedInformation[MAX_WOW64_SHARED_ENTRIES]; -#endif -#if (NTDDI_VERSION >= NTDDI_VISTA) -#if (NTDDI_VERSION >= NTDDI_WIN7) - USHORT UserModeGlobalLogger[16]; -#else - USHORT UserModeGlobalLogger[8]; - ULONG HeapTracingPid[2]; - ULONG CritSecTracingPid[2]; -#endif - ULONG ImageFileExecutionOptions; -#if (NTDDI_VERSION >= NTDDI_VISTASP1) - ULONG LangGenerationCount; -#else - /* 4 bytes padding */ -#endif - ULONGLONG Reserved5; - volatile ULONG64 InterruptTimeBias; -#endif -#if (NTDDI_VERSION >= NTDDI_WIN7) - volatile ULONG64 TscQpcBias; - volatile ULONG ActiveProcessorCount; - volatile USHORT ActiveGroupCount; - USHORT Reserved4; - volatile ULONG AitSamplingValue; - volatile ULONG AppCompatFlag; - ULONGLONG SystemDllNativeRelocation; - ULONG SystemDllWowRelocation; - ULONG XStatePad[1]; - XSTATE_CONFIGURATION XState; -#endif -} KUSER_SHARED_DATA, *PKUSER_SHARED_DATA; - -#if (NTDDI_VERSION >= NTDDI_VISTA) -extern NTSYSAPI volatile CCHAR KeNumberProcessors; -#elif (NTDDI_VERSION >= NTDDI_WINXP) -extern NTSYSAPI CCHAR KeNumberProcessors; -#else -extern PCCHAR KeNumberProcessors; -#endif - - -/****************************************************************************** - * Kernel Debugger Types * - ******************************************************************************/ -typedef struct _DEBUG_DEVICE_ADDRESS { - UCHAR Type; - BOOLEAN Valid; - UCHAR Reserved[2]; - PUCHAR TranslatedAddress; - ULONG Length; -} DEBUG_DEVICE_ADDRESS, *PDEBUG_DEVICE_ADDRESS; - -typedef struct _DEBUG_MEMORY_REQUIREMENTS { - PHYSICAL_ADDRESS Start; - PHYSICAL_ADDRESS MaxEnd; - PVOID VirtualAddress; - ULONG Length; - BOOLEAN Cached; - BOOLEAN Aligned; -} DEBUG_MEMORY_REQUIREMENTS, *PDEBUG_MEMORY_REQUIREMENTS; - -typedef struct _DEBUG_DEVICE_DESCRIPTOR { - ULONG Bus; - ULONG Slot; - USHORT Segment; - USHORT VendorID; - USHORT DeviceID; - UCHAR BaseClass; - UCHAR SubClass; - UCHAR ProgIf; - BOOLEAN Initialized; - BOOLEAN Configured; - DEBUG_DEVICE_ADDRESS BaseAddress[6]; - DEBUG_MEMORY_REQUIREMENTS Memory; -} DEBUG_DEVICE_DESCRIPTOR, *PDEBUG_DEVICE_DESCRIPTOR; - -typedef NTSTATUS -(NTAPI *pKdSetupPciDeviceForDebugging)( - IN PVOID LoaderBlock OPTIONAL, - IN OUT PDEBUG_DEVICE_DESCRIPTOR PciDevice); - -typedef NTSTATUS -(NTAPI *pKdReleasePciDeviceForDebugging)( - IN OUT PDEBUG_DEVICE_DESCRIPTOR PciDevice); - -typedef PVOID -(NTAPI *pKdGetAcpiTablePhase0)( - IN struct _LOADER_PARAMETER_BLOCK *LoaderBlock, - IN ULONG Signature); - -typedef VOID -(NTAPI *pKdCheckPowerButton)( - VOID); - -#if (NTDDI_VERSION >= NTDDI_VISTA) -typedef PVOID -(NTAPI *pKdMapPhysicalMemory64)( - IN PHYSICAL_ADDRESS PhysicalAddress, - IN ULONG NumberPages, - IN BOOLEAN FlushCurrentTLB); - -typedef VOID -(NTAPI *pKdUnmapVirtualAddress)( - IN PVOID VirtualAddress, - IN ULONG NumberPages, - IN BOOLEAN FlushCurrentTLB); -#else -typedef PVOID -(NTAPI *pKdMapPhysicalMemory64)( - IN PHYSICAL_ADDRESS PhysicalAddress, - IN ULONG NumberPages); - -typedef VOID -(NTAPI *pKdUnmapVirtualAddress)( - IN PVOID VirtualAddress, - IN ULONG NumberPages); -#endif - -typedef ULONG -(NTAPI *pKdGetPciDataByOffset)( - IN ULONG BusNumber, - IN ULONG SlotNumber, - OUT PVOID Buffer, - IN ULONG Offset, - IN ULONG Length); - -typedef ULONG -(NTAPI *pKdSetPciDataByOffset)( - IN ULONG BusNumber, - IN ULONG SlotNumber, - IN PVOID Buffer, - IN ULONG Offset, - IN ULONG Length); -/****************************************************************************** - * Memory manager Types * - ******************************************************************************/ - -typedef struct _PHYSICAL_MEMORY_RANGE { - PHYSICAL_ADDRESS BaseAddress; - LARGE_INTEGER NumberOfBytes; -} PHYSICAL_MEMORY_RANGE, *PPHYSICAL_MEMORY_RANGE; - -typedef NTSTATUS -(NTAPI *PMM_ROTATE_COPY_CALLBACK_FUNCTION)( - IN PMDL DestinationMdl, - IN PMDL SourceMdl, - IN PVOID Context); - -typedef enum _MM_ROTATE_DIRECTION { - MmToFrameBuffer, - MmToFrameBufferNoCopy, - MmToRegularMemory, - MmToRegularMemoryNoCopy, - MmMaximumRotateDirection -} MM_ROTATE_DIRECTION, *PMM_ROTATE_DIRECTION; - - -/****************************************************************************** - * Process Manager Types * - ******************************************************************************/ - -#define QUOTA_LIMITS_HARDWS_MIN_ENABLE 0x00000001 -#define QUOTA_LIMITS_HARDWS_MIN_DISABLE 0x00000002 -#define QUOTA_LIMITS_HARDWS_MAX_ENABLE 0x00000004 -#define QUOTA_LIMITS_HARDWS_MAX_DISABLE 0x00000008 -#define QUOTA_LIMITS_USE_DEFAULT_LIMITS 0x00000010 - -typedef struct _QUOTA_LIMITS { - SIZE_T PagedPoolLimit; - SIZE_T NonPagedPoolLimit; - SIZE_T MinimumWorkingSetSize; - SIZE_T MaximumWorkingSetSize; - SIZE_T PagefileLimit; - LARGE_INTEGER TimeLimit; -} QUOTA_LIMITS, *PQUOTA_LIMITS; - -typedef union _RATE_QUOTA_LIMIT { - ULONG RateData; - struct { - ULONG RatePercent:7; - ULONG Reserved0:25; - } DUMMYSTRUCTNAME; -} RATE_QUOTA_LIMIT, *PRATE_QUOTA_LIMIT; - -typedef struct _QUOTA_LIMITS_EX { - SIZE_T PagedPoolLimit; - SIZE_T NonPagedPoolLimit; - SIZE_T MinimumWorkingSetSize; - SIZE_T MaximumWorkingSetSize; - SIZE_T PagefileLimit; - LARGE_INTEGER TimeLimit; - SIZE_T WorkingSetLimit; - SIZE_T Reserved2; - SIZE_T Reserved3; - SIZE_T Reserved4; - ULONG Flags; - RATE_QUOTA_LIMIT CpuRateLimit; -} QUOTA_LIMITS_EX, *PQUOTA_LIMITS_EX; - -typedef struct _IO_COUNTERS { - ULONGLONG ReadOperationCount; - ULONGLONG WriteOperationCount; - ULONGLONG OtherOperationCount; - ULONGLONG ReadTransferCount; - ULONGLONG WriteTransferCount; - ULONGLONG OtherTransferCount; -} IO_COUNTERS, *PIO_COUNTERS; - -typedef struct _VM_COUNTERS { - SIZE_T PeakVirtualSize; - SIZE_T VirtualSize; - ULONG PageFaultCount; - SIZE_T PeakWorkingSetSize; - SIZE_T WorkingSetSize; - SIZE_T QuotaPeakPagedPoolUsage; - SIZE_T QuotaPagedPoolUsage; - SIZE_T QuotaPeakNonPagedPoolUsage; - SIZE_T QuotaNonPagedPoolUsage; - SIZE_T PagefileUsage; - SIZE_T PeakPagefileUsage; -} VM_COUNTERS, *PVM_COUNTERS; - -typedef struct _VM_COUNTERS_EX { - SIZE_T PeakVirtualSize; - SIZE_T VirtualSize; - ULONG PageFaultCount; - SIZE_T PeakWorkingSetSize; - SIZE_T WorkingSetSize; - SIZE_T QuotaPeakPagedPoolUsage; - SIZE_T QuotaPagedPoolUsage; - SIZE_T QuotaPeakNonPagedPoolUsage; - SIZE_T QuotaNonPagedPoolUsage; - SIZE_T PagefileUsage; - SIZE_T PeakPagefileUsage; - SIZE_T PrivateUsage; -} VM_COUNTERS_EX, *PVM_COUNTERS_EX; - -#define MAX_HW_COUNTERS 16 -#define THREAD_PROFILING_FLAG_DISPATCH 0x00000001 - -typedef enum _HARDWARE_COUNTER_TYPE { - PMCCounter, - MaxHardwareCounterType -} HARDWARE_COUNTER_TYPE, *PHARDWARE_COUNTER_TYPE; - -typedef struct _HARDWARE_COUNTER { - HARDWARE_COUNTER_TYPE Type; - ULONG Reserved; - ULONG64 Index; -} HARDWARE_COUNTER, *PHARDWARE_COUNTER; - -typedef struct _POOLED_USAGE_AND_LIMITS { - SIZE_T PeakPagedPoolUsage; - SIZE_T PagedPoolUsage; - SIZE_T PagedPoolLimit; - SIZE_T PeakNonPagedPoolUsage; - SIZE_T NonPagedPoolUsage; - SIZE_T NonPagedPoolLimit; - SIZE_T PeakPagefileUsage; - SIZE_T PagefileUsage; - SIZE_T PagefileLimit; -} POOLED_USAGE_AND_LIMITS, *PPOOLED_USAGE_AND_LIMITS; - -typedef struct _PROCESS_ACCESS_TOKEN { - HANDLE Token; - HANDLE Thread; -} PROCESS_ACCESS_TOKEN, *PPROCESS_ACCESS_TOKEN; - -#define PROCESS_EXCEPTION_PORT_ALL_STATE_BITS 0x00000003UL -#define PROCESS_EXCEPTION_PORT_ALL_STATE_FLAGS ((ULONG_PTR)((1UL << PROCESS_EXCEPTION_PORT_ALL_STATE_BITS) - 1)) - -typedef struct _PROCESS_EXCEPTION_PORT { - IN HANDLE ExceptionPortHandle; - IN OUT ULONG StateFlags; -} PROCESS_EXCEPTION_PORT, *PPROCESS_EXCEPTION_PORT; - -typedef VOID -(NTAPI *PCREATE_PROCESS_NOTIFY_ROUTINE)( - IN HANDLE ParentId, - IN HANDLE ProcessId, - IN BOOLEAN Create); - -typedef struct _PS_CREATE_NOTIFY_INFO { - IN SIZE_T Size; - union { - IN ULONG Flags; + HANDLE DirectoryHandle; + } Set; struct { - IN ULONG FileOpenNameAvailable:1; - IN ULONG Reserved:31; - }; + ULONG DriveMap; + UCHAR DriveType[32]; + } Query; }; - IN HANDLE ParentProcessId; - IN CLIENT_ID CreatingThreadId; - IN OUT struct _FILE_OBJECT *FileObject; - IN PCUNICODE_STRING ImageFileName; - IN PCUNICODE_STRING CommandLine OPTIONAL; - IN OUT NTSTATUS CreationStatus; -} PS_CREATE_NOTIFY_INFO, *PPS_CREATE_NOTIFY_INFO; - -typedef VOID -(NTAPI *PCREATE_PROCESS_NOTIFY_ROUTINE_EX)( - IN OUT PEPROCESS Process, - IN HANDLE ProcessId, - IN PPS_CREATE_NOTIFY_INFO CreateInfo OPTIONAL); - -typedef VOID -(NTAPI *PCREATE_THREAD_NOTIFY_ROUTINE)( - IN HANDLE ProcessId, - IN HANDLE ThreadId, - IN BOOLEAN Create); - -#define IMAGE_ADDRESSING_MODE_32BIT 3 - -typedef struct _IMAGE_INFO { - _ANONYMOUS_UNION union { - ULONG Properties; - _ANONYMOUS_STRUCT struct { - ULONG ImageAddressingMode:8; - ULONG SystemModeImage:1; - ULONG ImageMappedToAllPids:1; - ULONG ExtendedInfoPresent:1; - ULONG Reserved:21; - } DUMMYSTRUCTNAME; - } DUMMYUNIONNAME; - PVOID ImageBase; - ULONG ImageSelector; - SIZE_T ImageSize; - ULONG ImageSectionNumber; -} IMAGE_INFO, *PIMAGE_INFO; - -typedef struct _IMAGE_INFO_EX { - SIZE_T Size; - IMAGE_INFO ImageInfo; - struct _FILE_OBJECT *FileObject; -} IMAGE_INFO_EX, *PIMAGE_INFO_EX; - -typedef VOID -(NTAPI *PLOAD_IMAGE_NOTIFY_ROUTINE)( - IN PUNICODE_STRING FullImageName, - IN HANDLE ProcessId, - IN PIMAGE_INFO ImageInfo); - -#define THREAD_CSWITCH_PMU_DISABLE FALSE -#define THREAD_CSWITCH_PMU_ENABLE TRUE - -#define PROCESS_LUID_DOSDEVICES_ONLY 0x00000001 - -#define PROCESS_HANDLE_TRACING_MAX_STACKS 16 +} PROCESS_DEVICEMAP_INFORMATION, *PPROCESS_DEVICEMAP_INFORMATION; -typedef struct _NT_TIB { - struct _EXCEPTION_REGISTRATION_RECORD *ExceptionList; - PVOID StackBase; - PVOID StackLimit; - PVOID SubSystemTib; - _ANONYMOUS_UNION union { - PVOID FiberData; - ULONG Version; - } DUMMYUNIONNAME; - PVOID ArbitraryUserPointer; - struct _NT_TIB *Self; -} NT_TIB, *PNT_TIB; - -typedef struct _NT_TIB32 { - ULONG ExceptionList; - ULONG StackBase; - ULONG StackLimit; - ULONG SubSystemTib; - __GNU_EXTENSION union { - ULONG FiberData; - ULONG Version; - }; - ULONG ArbitraryUserPointer; - ULONG Self; -} NT_TIB32,*PNT_TIB32; - -typedef struct _NT_TIB64 { - ULONG64 ExceptionList; - ULONG64 StackBase; - ULONG64 StackLimit; - ULONG64 SubSystemTib; - __GNU_EXTENSION union { - ULONG64 FiberData; - ULONG Version; - }; - ULONG64 ArbitraryUserPointer; - ULONG64 Self; -} NT_TIB64,*PNT_TIB64; - -typedef enum _PROCESSINFOCLASS { - ProcessBasicInformation, - ProcessQuotaLimits, - ProcessIoCounters, - ProcessVmCounters, - ProcessTimes, - ProcessBasePriority, - ProcessRaisePriority, - ProcessDebugPort, - ProcessExceptionPort, - ProcessAccessToken, - ProcessLdtInformation, - ProcessLdtSize, - ProcessDefaultHardErrorMode, - ProcessIoPortHandlers, - ProcessPooledUsageAndLimits, - ProcessWorkingSetWatch, - ProcessUserModeIOPL, - ProcessEnableAlignmentFaultFixup, - ProcessPriorityClass, - ProcessWx86Information, - ProcessHandleCount, - ProcessAffinityMask, - ProcessPriorityBoost, - ProcessDeviceMap, - ProcessSessionInformation, - ProcessForegroundInformation, - ProcessWow64Information, - ProcessImageFileName, - ProcessLUIDDeviceMapsEnabled, - ProcessBreakOnTermination, - ProcessDebugObjectHandle, - ProcessDebugFlags, - ProcessHandleTracing, - ProcessIoPriority, - ProcessExecuteFlags, - ProcessTlsInformation, - ProcessCookie, - ProcessImageInformation, - ProcessCycleTime, - ProcessPagePriority, - ProcessInstrumentationCallback, - ProcessThreadStackAllocation, - ProcessWorkingSetWatchEx, - ProcessImageFileNameWin32, - ProcessImageFileMapping, - ProcessAffinityUpdateMode, - ProcessMemoryAllocationMode, - ProcessGroupInformation, - ProcessTokenVirtualizationEnabled, - ProcessConsoleHostProcess, - ProcessWindowInformation, - MaxProcessInfoClass -} PROCESSINFOCLASS; - -typedef enum _THREADINFOCLASS { - ThreadBasicInformation, - ThreadTimes, - ThreadPriority, - ThreadBasePriority, - ThreadAffinityMask, - ThreadImpersonationToken, - ThreadDescriptorTableEntry, - ThreadEnableAlignmentFaultFixup, - ThreadEventPair_Reusable, - ThreadQuerySetWin32StartAddress, - ThreadZeroTlsCell, - ThreadPerformanceCount, - ThreadAmILastThread, - ThreadIdealProcessor, - ThreadPriorityBoost, - ThreadSetTlsArrayAddress, - ThreadIsIoPending, - ThreadHideFromDebugger, - ThreadBreakOnTermination, - ThreadSwitchLegacyState, - ThreadIsTerminated, - ThreadLastSystemCall, - ThreadIoPriority, - ThreadCycleTime, - ThreadPagePriority, - ThreadActualBasePriority, - ThreadTebInformation, - ThreadCSwitchMon, - ThreadCSwitchPmu, - ThreadWow64Context, - ThreadGroupInformation, - ThreadUmsInformation, - ThreadCounterProfiling, - ThreadIdealProcessorEx, - MaxThreadInfoClass -} THREADINFOCLASS; - -typedef struct _PAGE_PRIORITY_INFORMATION { - ULONG PagePriority; -} PAGE_PRIORITY_INFORMATION, *PPAGE_PRIORITY_INFORMATION; - -typedef struct _PROCESS_WS_WATCH_INFORMATION { - PVOID FaultingPc; - PVOID FaultingVa; -} PROCESS_WS_WATCH_INFORMATION, *PPROCESS_WS_WATCH_INFORMATION; - -typedef struct _PROCESS_BASIC_INFORMATION { - NTSTATUS ExitStatus; - struct _PEB *PebBaseAddress; - ULONG_PTR AffinityMask; - KPRIORITY BasePriority; - ULONG_PTR UniqueProcessId; - ULONG_PTR InheritedFromUniqueProcessId; -} PROCESS_BASIC_INFORMATION,*PPROCESS_BASIC_INFORMATION; - -typedef struct _PROCESS_EXTENDED_BASIC_INFORMATION { - SIZE_T Size; - PROCESS_BASIC_INFORMATION BasicInfo; - union { - ULONG Flags; - struct { - ULONG IsProtectedProcess:1; - ULONG IsWow64Process:1; - ULONG IsProcessDeleting:1; - ULONG IsCrossSessionCreate:1; - ULONG SpareBits:28; - } DUMMYSTRUCTNAME; - } DUMMYUNIONNAME; -} PROCESS_EXTENDED_BASIC_INFORMATION, *PPROCESS_EXTENDED_BASIC_INFORMATION; - -typedef struct _PROCESS_DEVICEMAP_INFORMATION { - __GNU_EXTENSION union { - struct { - HANDLE DirectoryHandle; - } Set; - struct { - ULONG DriveMap; - UCHAR DriveType[32]; - } Query; - }; -} PROCESS_DEVICEMAP_INFORMATION, *PPROCESS_DEVICEMAP_INFORMATION; - -typedef struct _PROCESS_DEVICEMAP_INFORMATION_EX { - union { - struct { - HANDLE DirectoryHandle; - } Set; - struct { - ULONG DriveMap; - UCHAR DriveType[32]; - } Query; - } DUMMYUNIONNAME; - ULONG Flags; -} PROCESS_DEVICEMAP_INFORMATION_EX, *PPROCESS_DEVICEMAP_INFORMATION_EX; - -typedef struct _PROCESS_SESSION_INFORMATION { - ULONG SessionId; -} PROCESS_SESSION_INFORMATION, *PPROCESS_SESSION_INFORMATION; - -typedef struct _PROCESS_HANDLE_TRACING_ENABLE { - ULONG Flags; -} PROCESS_HANDLE_TRACING_ENABLE, *PPROCESS_HANDLE_TRACING_ENABLE; - -typedef struct _PROCESS_HANDLE_TRACING_ENABLE_EX { - ULONG Flags; - ULONG TotalSlots; -} PROCESS_HANDLE_TRACING_ENABLE_EX, *PPROCESS_HANDLE_TRACING_ENABLE_EX; - -typedef struct _PROCESS_HANDLE_TRACING_ENTRY { - HANDLE Handle; - CLIENT_ID ClientId; - ULONG Type; - PVOID Stacks[PROCESS_HANDLE_TRACING_MAX_STACKS]; -} PROCESS_HANDLE_TRACING_ENTRY, *PPROCESS_HANDLE_TRACING_ENTRY; - -typedef struct _PROCESS_HANDLE_TRACING_QUERY { - HANDLE Handle; - ULONG TotalTraces; - PROCESS_HANDLE_TRACING_ENTRY HandleTrace[1]; -} PROCESS_HANDLE_TRACING_QUERY, *PPROCESS_HANDLE_TRACING_QUERY; - -extern NTKERNELAPI PEPROCESS PsInitialSystemProcess; - - -/****************************************************************************** - * Runtime Library Types * - ******************************************************************************/ - - - -#ifndef _RTL_RUN_ONCE_DEF -#define _RTL_RUN_ONCE_DEF - -#define RTL_RUN_ONCE_INIT {0} - -#define RTL_RUN_ONCE_CHECK_ONLY 0x00000001UL -#define RTL_RUN_ONCE_ASYNC 0x00000002UL -#define RTL_RUN_ONCE_INIT_FAILED 0x00000004UL - -#define RTL_RUN_ONCE_CTX_RESERVED_BITS 2 - -#define RTL_HASH_ALLOCATED_HEADER 0x00000001 - -#define RTL_HASH_RESERVED_SIGNATURE 0 - -/* RtlVerifyVersionInfo() ComparisonType */ - -#define VER_EQUAL 1 -#define VER_GREATER 2 -#define VER_GREATER_EQUAL 3 -#define VER_LESS 4 -#define VER_LESS_EQUAL 5 -#define VER_AND 6 -#define VER_OR 7 - -#define VER_CONDITION_MASK 7 -#define VER_NUM_BITS_PER_CONDITION_MASK 3 - -/* RtlVerifyVersionInfo() TypeMask */ - -#define VER_MINORVERSION 0x0000001 -#define VER_MAJORVERSION 0x0000002 -#define VER_BUILDNUMBER 0x0000004 -#define VER_PLATFORMID 0x0000008 -#define VER_SERVICEPACKMINOR 0x0000010 -#define VER_SERVICEPACKMAJOR 0x0000020 -#define VER_SUITENAME 0x0000040 -#define VER_PRODUCT_TYPE 0x0000080 - -#define VER_NT_WORKSTATION 0x0000001 -#define VER_NT_DOMAIN_CONTROLLER 0x0000002 -#define VER_NT_SERVER 0x0000003 - -#define VER_PLATFORM_WIN32s 0 -#define VER_PLATFORM_WIN32_WINDOWS 1 -#define VER_PLATFORM_WIN32_NT 2 - -typedef union _RTL_RUN_ONCE { - PVOID Ptr; -} RTL_RUN_ONCE, *PRTL_RUN_ONCE; - -typedef ULONG /* LOGICAL */ -(NTAPI *PRTL_RUN_ONCE_INIT_FN) ( - IN OUT PRTL_RUN_ONCE RunOnce, - IN OUT PVOID Parameter OPTIONAL, - IN OUT PVOID *Context OPTIONAL); - -#endif /* _RTL_RUN_ONCE_DEF */ - -typedef enum _TABLE_SEARCH_RESULT { - TableEmptyTree, - TableFoundNode, - TableInsertAsLeft, - TableInsertAsRight -} TABLE_SEARCH_RESULT; - -typedef enum _RTL_GENERIC_COMPARE_RESULTS { - GenericLessThan, - GenericGreaterThan, - GenericEqual -} RTL_GENERIC_COMPARE_RESULTS; - -// Forwarder -struct _RTL_AVL_TABLE; - -typedef RTL_GENERIC_COMPARE_RESULTS -(NTAPI *PRTL_AVL_COMPARE_ROUTINE) ( - IN struct _RTL_AVL_TABLE *Table, - IN PVOID FirstStruct, - IN PVOID SecondStruct); - -typedef PVOID -(NTAPI *PRTL_AVL_ALLOCATE_ROUTINE) ( - IN struct _RTL_AVL_TABLE *Table, - IN CLONG ByteSize); - -typedef VOID -(NTAPI *PRTL_AVL_FREE_ROUTINE) ( - IN struct _RTL_AVL_TABLE *Table, - IN PVOID Buffer); - -typedef NTSTATUS -(NTAPI *PRTL_AVL_MATCH_FUNCTION) ( - IN struct _RTL_AVL_TABLE *Table, - IN PVOID UserData, - IN PVOID MatchData); - -typedef struct _RTL_BALANCED_LINKS { - struct _RTL_BALANCED_LINKS *Parent; - struct _RTL_BALANCED_LINKS *LeftChild; - struct _RTL_BALANCED_LINKS *RightChild; - CHAR Balance; - UCHAR Reserved[3]; -} RTL_BALANCED_LINKS, *PRTL_BALANCED_LINKS; - -typedef struct _RTL_AVL_TABLE { - RTL_BALANCED_LINKS BalancedRoot; - PVOID OrderedPointer; - ULONG WhichOrderedElement; - ULONG NumberGenericTableElements; - ULONG DepthOfTree; - PRTL_BALANCED_LINKS RestartKey; - ULONG DeleteCount; - PRTL_AVL_COMPARE_ROUTINE CompareRoutine; - PRTL_AVL_ALLOCATE_ROUTINE AllocateRoutine; - PRTL_AVL_FREE_ROUTINE FreeRoutine; - PVOID TableContext; -} RTL_AVL_TABLE, *PRTL_AVL_TABLE; - -#ifndef RTL_USE_AVL_TABLES - -struct _RTL_GENERIC_TABLE; - -typedef RTL_GENERIC_COMPARE_RESULTS -(NTAPI *PRTL_GENERIC_COMPARE_ROUTINE) ( - IN struct _RTL_GENERIC_TABLE *Table, - IN PVOID FirstStruct, - IN PVOID SecondStruct); - -typedef PVOID -(NTAPI *PRTL_GENERIC_ALLOCATE_ROUTINE) ( - IN struct _RTL_GENERIC_TABLE *Table, - IN CLONG ByteSize); - -typedef VOID -(NTAPI *PRTL_GENERIC_FREE_ROUTINE) ( - IN struct _RTL_GENERIC_TABLE *Table, - IN PVOID Buffer); - -typedef struct _RTL_SPLAY_LINKS { - struct _RTL_SPLAY_LINKS *Parent; - struct _RTL_SPLAY_LINKS *LeftChild; - struct _RTL_SPLAY_LINKS *RightChild; -} RTL_SPLAY_LINKS, *PRTL_SPLAY_LINKS; - -typedef struct _RTL_GENERIC_TABLE { - PRTL_SPLAY_LINKS TableRoot; - LIST_ENTRY InsertOrderList; - PLIST_ENTRY OrderedPointer; - ULONG WhichOrderedElement; - ULONG NumberGenericTableElements; - PRTL_GENERIC_COMPARE_ROUTINE CompareRoutine; - PRTL_GENERIC_ALLOCATE_ROUTINE AllocateRoutine; - PRTL_GENERIC_FREE_ROUTINE FreeRoutine; - PVOID TableContext; -} RTL_GENERIC_TABLE, *PRTL_GENERIC_TABLE; - -#endif /* !RTL_USE_AVL_TABLES */ - -#ifdef RTL_USE_AVL_TABLES - -#undef PRTL_GENERIC_COMPARE_ROUTINE -#undef RTL_GENERIC_COMPARE_ROUTINE -#undef PRTL_GENERIC_ALLOCATE_ROUTINE -#undef RTL_GENERIC_ALLOCATE_ROUTINE -#undef PRTL_GENERIC_FREE_ROUTINE -#undef RTL_GENERIC_FREE_ROUTINE -#undef RTL_GENERIC_TABLE -#undef PRTL_GENERIC_TABLE - -#define PRTL_GENERIC_COMPARE_ROUTINE PRTL_AVL_COMPARE_ROUTINE -#define RTL_GENERIC_COMPARE_ROUTINE RTL_AVL_COMPARE_ROUTINE -#define PRTL_GENERIC_ALLOCATE_ROUTINE PRTL_AVL_ALLOCATE_ROUTINE -#define RTL_GENERIC_ALLOCATE_ROUTINE RTL_AVL_ALLOCATE_ROUTINE -#define PRTL_GENERIC_FREE_ROUTINE PRTL_AVL_FREE_ROUTINE -#define RTL_GENERIC_FREE_ROUTINE RTL_AVL_FREE_ROUTINE -#define RTL_GENERIC_TABLE RTL_AVL_TABLE -#define PRTL_GENERIC_TABLE PRTL_AVL_TABLE - -#endif /* RTL_USE_AVL_TABLES */ - -typedef struct _RTL_DYNAMIC_HASH_TABLE_ENTRY { - LIST_ENTRY Linkage; - ULONG_PTR Signature; -} RTL_DYNAMIC_HASH_TABLE_ENTRY, *PRTL_DYNAMIC_HASH_TABLE_ENTRY; - -typedef struct _RTL_DYNAMIC_HASH_TABLE_CONTEXT { - PLIST_ENTRY ChainHead; - PLIST_ENTRY PrevLinkage; - ULONG_PTR Signature; -} RTL_DYNAMIC_HASH_TABLE_CONTEXT, *PRTL_DYNAMIC_HASH_TABLE_CONTEXT; - -typedef struct _RTL_DYNAMIC_HASH_TABLE_ENUMERATOR { - RTL_DYNAMIC_HASH_TABLE_ENTRY HashEntry; - PLIST_ENTRY ChainHead; - ULONG BucketIndex; -} RTL_DYNAMIC_HASH_TABLE_ENUMERATOR, *PRTL_DYNAMIC_HASH_TABLE_ENUMERATOR; - -typedef struct _RTL_DYNAMIC_HASH_TABLE { - ULONG Flags; - ULONG Shift; - ULONG TableSize; - ULONG Pivot; - ULONG DivisorMask; - ULONG NumEntries; - ULONG NonEmptyBuckets; - ULONG NumEnumerators; - PVOID Directory; -} RTL_DYNAMIC_HASH_TABLE, *PRTL_DYNAMIC_HASH_TABLE; - -typedef struct _OSVERSIONINFOA { - ULONG dwOSVersionInfoSize; - ULONG dwMajorVersion; - ULONG dwMinorVersion; - ULONG dwBuildNumber; - ULONG dwPlatformId; - CHAR szCSDVersion[128]; -} OSVERSIONINFOA, *POSVERSIONINFOA, *LPOSVERSIONINFOA; - -typedef struct _OSVERSIONINFOW { - ULONG dwOSVersionInfoSize; - ULONG dwMajorVersion; - ULONG dwMinorVersion; - ULONG dwBuildNumber; - ULONG dwPlatformId; - WCHAR szCSDVersion[128]; -} OSVERSIONINFOW, *POSVERSIONINFOW, *LPOSVERSIONINFOW, RTL_OSVERSIONINFOW, *PRTL_OSVERSIONINFOW; - -typedef struct _OSVERSIONINFOEXA { - ULONG dwOSVersionInfoSize; - ULONG dwMajorVersion; - ULONG dwMinorVersion; - ULONG dwBuildNumber; - ULONG dwPlatformId; - CHAR szCSDVersion[128]; - USHORT wServicePackMajor; - USHORT wServicePackMinor; - USHORT wSuiteMask; - UCHAR wProductType; - UCHAR wReserved; -} OSVERSIONINFOEXA, *POSVERSIONINFOEXA, *LPOSVERSIONINFOEXA; - -typedef struct _OSVERSIONINFOEXW { - ULONG dwOSVersionInfoSize; - ULONG dwMajorVersion; - ULONG dwMinorVersion; - ULONG dwBuildNumber; - ULONG dwPlatformId; - WCHAR szCSDVersion[128]; - USHORT wServicePackMajor; - USHORT wServicePackMinor; - USHORT wSuiteMask; - UCHAR wProductType; - UCHAR wReserved; -} OSVERSIONINFOEXW, *POSVERSIONINFOEXW, *LPOSVERSIONINFOEXW, RTL_OSVERSIONINFOEXW, *PRTL_OSVERSIONINFOEXW; - -#ifdef UNICODE -typedef OSVERSIONINFOEXW OSVERSIONINFOEX; -typedef POSVERSIONINFOEXW POSVERSIONINFOEX; -typedef LPOSVERSIONINFOEXW LPOSVERSIONINFOEX; -typedef OSVERSIONINFOW OSVERSIONINFO; -typedef POSVERSIONINFOW POSVERSIONINFO; -typedef LPOSVERSIONINFOW LPOSVERSIONINFO; -#else -typedef OSVERSIONINFOEXA OSVERSIONINFOEX; -typedef POSVERSIONINFOEXA POSVERSIONINFOEX; -typedef LPOSVERSIONINFOEXA LPOSVERSIONINFOEX; -typedef OSVERSIONINFOA OSVERSIONINFO; -typedef POSVERSIONINFOA POSVERSIONINFO; -typedef LPOSVERSIONINFOA LPOSVERSIONINFO; -#endif /* UNICODE */ - -#define HASH_ENTRY_KEY(x) ((x)->Signature) - -/****************************************************************************** - * Security Manager Types * - ******************************************************************************/ -#define SE_UNSOLICITED_INPUT_PRIVILEGE 6 - -typedef enum _WELL_KNOWN_SID_TYPE { - WinNullSid = 0, - WinWorldSid = 1, - WinLocalSid = 2, - WinCreatorOwnerSid = 3, - WinCreatorGroupSid = 4, - WinCreatorOwnerServerSid = 5, - WinCreatorGroupServerSid = 6, - WinNtAuthoritySid = 7, - WinDialupSid = 8, - WinNetworkSid = 9, - WinBatchSid = 10, - WinInteractiveSid = 11, - WinServiceSid = 12, - WinAnonymousSid = 13, - WinProxySid = 14, - WinEnterpriseControllersSid = 15, - WinSelfSid = 16, - WinAuthenticatedUserSid = 17, - WinRestrictedCodeSid = 18, - WinTerminalServerSid = 19, - WinRemoteLogonIdSid = 20, - WinLogonIdsSid = 21, - WinLocalSystemSid = 22, - WinLocalServiceSid = 23, - WinNetworkServiceSid = 24, - WinBuiltinDomainSid = 25, - WinBuiltinAdministratorsSid = 26, - WinBuiltinUsersSid = 27, - WinBuiltinGuestsSid = 28, - WinBuiltinPowerUsersSid = 29, - WinBuiltinAccountOperatorsSid = 30, - WinBuiltinSystemOperatorsSid = 31, - WinBuiltinPrintOperatorsSid = 32, - WinBuiltinBackupOperatorsSid = 33, - WinBuiltinReplicatorSid = 34, - WinBuiltinPreWindows2000CompatibleAccessSid = 35, - WinBuiltinRemoteDesktopUsersSid = 36, - WinBuiltinNetworkConfigurationOperatorsSid = 37, - WinAccountAdministratorSid = 38, - WinAccountGuestSid = 39, - WinAccountKrbtgtSid = 40, - WinAccountDomainAdminsSid = 41, - WinAccountDomainUsersSid = 42, - WinAccountDomainGuestsSid = 43, - WinAccountComputersSid = 44, - WinAccountControllersSid = 45, - WinAccountCertAdminsSid = 46, - WinAccountSchemaAdminsSid = 47, - WinAccountEnterpriseAdminsSid = 48, - WinAccountPolicyAdminsSid = 49, - WinAccountRasAndIasServersSid = 50, - WinNTLMAuthenticationSid = 51, - WinDigestAuthenticationSid = 52, - WinSChannelAuthenticationSid = 53, - WinThisOrganizationSid = 54, - WinOtherOrganizationSid = 55, - WinBuiltinIncomingForestTrustBuildersSid = 56, - WinBuiltinPerfMonitoringUsersSid = 57, - WinBuiltinPerfLoggingUsersSid = 58, - WinBuiltinAuthorizationAccessSid = 59, - WinBuiltinTerminalServerLicenseServersSid = 60, - WinBuiltinDCOMUsersSid = 61, - WinBuiltinIUsersSid = 62, - WinIUserSid = 63, - WinBuiltinCryptoOperatorsSid = 64, - WinUntrustedLabelSid = 65, - WinLowLabelSid = 66, - WinMediumLabelSid = 67, - WinHighLabelSid = 68, - WinSystemLabelSid = 69, - WinWriteRestrictedCodeSid = 70, - WinCreatorOwnerRightsSid = 71, - WinCacheablePrincipalsGroupSid = 72, - WinNonCacheablePrincipalsGroupSid = 73, - WinEnterpriseReadonlyControllersSid = 74, - WinAccountReadonlyControllersSid = 75, - WinBuiltinEventLogReadersGroup = 76, - WinNewEnterpriseReadonlyControllersSid = 77, - WinBuiltinCertSvcDComAccessGroup = 78, - WinMediumPlusLabelSid = 79, - WinLocalLogonSid = 80, - WinConsoleLogonSid = 81, - WinThisOrganizationCertificateSid = 82, -} WELL_KNOWN_SID_TYPE; - - - -#if defined(_M_IX86) - -#define PAUSE_PROCESSOR YieldProcessor(); - -#define KERNEL_STACK_SIZE 12288 -#define KERNEL_LARGE_STACK_SIZE 61440 -#define KERNEL_LARGE_STACK_COMMIT 12288 - -#define SIZE_OF_80387_REGISTERS 80 - -#if !defined(RC_INVOKED) - -#define CONTEXT_i386 0x10000 -#define CONTEXT_i486 0x10000 -#define CONTEXT_CONTROL (CONTEXT_i386|0x00000001L) -#define CONTEXT_INTEGER (CONTEXT_i386|0x00000002L) -#define CONTEXT_SEGMENTS (CONTEXT_i386|0x00000004L) -#define CONTEXT_FLOATING_POINT (CONTEXT_i386|0x00000008L) -#define CONTEXT_DEBUG_REGISTERS (CONTEXT_i386|0x00000010L) -#define CONTEXT_EXTENDED_REGISTERS (CONTEXT_i386|0x00000020L) - -#define CONTEXT_FULL (CONTEXT_CONTROL|CONTEXT_INTEGER|CONTEXT_SEGMENTS) -#define CONTEXT_ALL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS | \ - CONTEXT_FLOATING_POINT | CONTEXT_DEBUG_REGISTERS | \ - CONTEXT_EXTENDED_REGISTERS) - -#define CONTEXT_XSTATE (CONTEXT_i386 | 0x00000040L) - -#endif /* !defined(RC_INVOKED) */ - -typedef struct _FLOATING_SAVE_AREA { - ULONG ControlWord; - ULONG StatusWord; - ULONG TagWord; - ULONG ErrorOffset; - ULONG ErrorSelector; - ULONG DataOffset; - ULONG DataSelector; - UCHAR RegisterArea[SIZE_OF_80387_REGISTERS]; - ULONG Cr0NpxState; -} FLOATING_SAVE_AREA, *PFLOATING_SAVE_AREA; - -#include "pshpack4.h" -typedef struct _CONTEXT { - ULONG ContextFlags; - ULONG Dr0; - ULONG Dr1; - ULONG Dr2; - ULONG Dr3; - ULONG Dr6; - ULONG Dr7; - FLOATING_SAVE_AREA FloatSave; - ULONG SegGs; - ULONG SegFs; - ULONG SegEs; - ULONG SegDs; - ULONG Edi; - ULONG Esi; - ULONG Ebx; - ULONG Edx; - ULONG Ecx; - ULONG Eax; - ULONG Ebp; - ULONG Eip; - ULONG SegCs; - ULONG EFlags; - ULONG Esp; - ULONG SegSs; - UCHAR ExtendedRegisters[MAXIMUM_SUPPORTED_EXTENSION]; -} CONTEXT; -#include "poppack.h" - -#define KeGetPcr() PCR - -#define PCR_MINOR_VERSION 1 -#define PCR_MAJOR_VERSION 1 - -typedef struct _KPCR { - union { - NT_TIB NtTib; - struct { - struct _EXCEPTION_REGISTRATION_RECORD *Used_ExceptionList; - PVOID Used_StackBase; - PVOID Spare2; - PVOID TssCopy; - ULONG ContextSwitches; - KAFFINITY SetMemberCopy; - PVOID Used_Self; - }; - }; - struct _KPCR *SelfPcr; - struct _KPRCB *Prcb; - KIRQL Irql; - ULONG IRR; - ULONG IrrActive; - ULONG IDR; - PVOID KdVersionBlock; - struct _KIDTENTRY *IDT; - struct _KGDTENTRY *GDT; - struct _KTSS *TSS; - USHORT MajorVersion; - USHORT MinorVersion; - KAFFINITY SetMember; - ULONG StallScaleFactor; - UCHAR SpareUnused; - UCHAR Number; - UCHAR Spare0; - UCHAR SecondLevelCacheAssociativity; - ULONG VdmAlert; - ULONG KernelReserved[14]; - ULONG SecondLevelCacheSize; - ULONG HalReserved[16]; -} KPCR, *PKPCR; - -FORCEINLINE -ULONG -KeGetCurrentProcessorNumber(VOID) -{ - return (ULONG)__readfsbyte(FIELD_OFFSET(KPCR, Number)); -} - - - - - - -extern NTKERNELAPI PVOID MmHighestUserAddress; -extern NTKERNELAPI PVOID MmSystemRangeStart; -extern NTKERNELAPI ULONG MmUserProbeAddress; - -#define MM_HIGHEST_USER_ADDRESS MmHighestUserAddress -#define MM_SYSTEM_RANGE_START MmSystemRangeStart -#if defined(_LOCAL_COPY_USER_PROBE_ADDRESS_) -#define MM_USER_PROBE_ADDRESS _LOCAL_COPY_USER_PROBE_ADDRESS_ -extern ULONG _LOCAL_COPY_USER_PROBE_ADDRESS_; -#else -#define MM_USER_PROBE_ADDRESS MmUserProbeAddress -#endif -#define MM_LOWEST_USER_ADDRESS (PVOID)0x10000 -#define MM_KSEG0_BASE MM_SYSTEM_RANGE_START -#define MM_SYSTEM_SPACE_END 0xFFFFFFFF -#if !defined (_X86PAE_) -#define MM_LOWEST_SYSTEM_ADDRESS (PVOID)0xC0800000 -#else -#define MM_LOWEST_SYSTEM_ADDRESS (PVOID)0xC0C00000 -#endif - -#elif defined(_M_AMD64) - -#define PAUSE_PROCESSOR YieldProcessor(); - -#define KERNEL_STACK_SIZE 0x6000 -#define KERNEL_LARGE_STACK_SIZE 0x12000 -#define KERNEL_LARGE_STACK_COMMIT KERNEL_STACK_SIZE - -#define KERNEL_MCA_EXCEPTION_STACK_SIZE 0x2000 - -#define EXCEPTION_READ_FAULT 0 -#define EXCEPTION_WRITE_FAULT 1 -#define EXCEPTION_EXECUTE_FAULT 8 - -#if !defined(RC_INVOKED) - -#define CONTEXT_AMD64 0x100000 - -#define CONTEXT_CONTROL (CONTEXT_AMD64 | 0x1L) -#define CONTEXT_INTEGER (CONTEXT_AMD64 | 0x2L) -#define CONTEXT_SEGMENTS (CONTEXT_AMD64 | 0x4L) -#define CONTEXT_FLOATING_POINT (CONTEXT_AMD64 | 0x8L) -#define CONTEXT_DEBUG_REGISTERS (CONTEXT_AMD64 | 0x10L) - -#define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_FLOATING_POINT) -#define CONTEXT_ALL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS | CONTEXT_FLOATING_POINT | CONTEXT_DEBUG_REGISTERS) - -#define CONTEXT_XSTATE (CONTEXT_AMD64 | 0x20L) - -#define CONTEXT_EXCEPTION_ACTIVE 0x8000000 -#define CONTEXT_SERVICE_ACTIVE 0x10000000 -#define CONTEXT_EXCEPTION_REQUEST 0x40000000 -#define CONTEXT_EXCEPTION_REPORTING 0x80000000 - -#endif /* !defined(RC_INVOKED) */ - -#define INITIAL_MXCSR 0x1f80 -#define INITIAL_FPCSR 0x027f - -typedef struct DECLSPEC_ALIGN(16) _CONTEXT { - ULONG64 P1Home; - ULONG64 P2Home; - ULONG64 P3Home; - ULONG64 P4Home; - ULONG64 P5Home; - ULONG64 P6Home; - ULONG ContextFlags; - ULONG MxCsr; - USHORT SegCs; - USHORT SegDs; - USHORT SegEs; - USHORT SegFs; - USHORT SegGs; - USHORT SegSs; - ULONG EFlags; - ULONG64 Dr0; - ULONG64 Dr1; - ULONG64 Dr2; - ULONG64 Dr3; - ULONG64 Dr6; - ULONG64 Dr7; - ULONG64 Rax; - ULONG64 Rcx; - ULONG64 Rdx; - ULONG64 Rbx; - ULONG64 Rsp; - ULONG64 Rbp; - ULONG64 Rsi; - ULONG64 Rdi; - ULONG64 R8; - ULONG64 R9; - ULONG64 R10; - ULONG64 R11; - ULONG64 R12; - ULONG64 R13; - ULONG64 R14; - ULONG64 R15; - ULONG64 Rip; - union { - XMM_SAVE_AREA32 FltSave; - struct { - M128A Header[2]; - M128A Legacy[8]; - M128A Xmm0; - M128A Xmm1; - M128A Xmm2; - M128A Xmm3; - M128A Xmm4; - M128A Xmm5; - M128A Xmm6; - M128A Xmm7; - M128A Xmm8; - M128A Xmm9; - M128A Xmm10; - M128A Xmm11; - M128A Xmm12; - M128A Xmm13; - M128A Xmm14; - M128A Xmm15; - } DUMMYSTRUCTNAME; - } DUMMYUNIONNAME; - M128A VectorRegister[26]; - ULONG64 VectorControl; - ULONG64 DebugControl; - ULONG64 LastBranchToRip; - ULONG64 LastBranchFromRip; - ULONG64 LastExceptionToRip; - ULONG64 LastExceptionFromRip; -} CONTEXT; - -#define PCR_MINOR_VERSION 1 -#define PCR_MAJOR_VERSION 1 - -typedef struct _KPCR -{ - _ANONYMOUS_UNION union - { - NT_TIB NtTib; - _ANONYMOUS_STRUCT struct - { - union _KGDTENTRY64 *GdtBase; - struct _KTSS64 *TssBase; - ULONG64 UserRsp; - struct _KPCR *Self; - struct _KPRCB *CurrentPrcb; - PKSPIN_LOCK_QUEUE LockArray; - PVOID Used_Self; - }; - }; - union _KIDTENTRY64 *IdtBase; - ULONG64 Unused[2]; - KIRQL Irql; - UCHAR SecondLevelCacheAssociativity; - UCHAR ObsoleteNumber; - UCHAR Fill0; - ULONG Unused0[3]; - USHORT MajorVersion; - USHORT MinorVersion; - ULONG StallScaleFactor; - PVOID Unused1[3]; - ULONG KernelReserved[15]; - ULONG SecondLevelCacheSize; - ULONG HalReserved[16]; - ULONG Unused2; - PVOID KdVersionBlock; - PVOID Unused3; - ULONG PcrAlign1[24]; -} KPCR, *PKPCR; - -FORCEINLINE -PKPCR -KeGetPcr(VOID) -{ - return (PKPCR)__readgsqword(FIELD_OFFSET(KPCR, Self)); -} - -FORCEINLINE -ULONG -KeGetCurrentProcessorNumber(VOID) -{ - return (ULONG)__readgsword(0x184); -} - - -#define PTI_SHIFT 12L -#define PDI_SHIFT 21L -#define PPI_SHIFT 30L -#define PXI_SHIFT 39L -#define PTE_PER_PAGE 512 -#define PDE_PER_PAGE 512 -#define PPE_PER_PAGE 512 -#define PXE_PER_PAGE 512 -#define PTI_MASK_AMD64 (PTE_PER_PAGE - 1) -#define PDI_MASK_AMD64 (PDE_PER_PAGE - 1) -#define PPI_MASK (PPE_PER_PAGE - 1) -#define PXI_MASK (PXE_PER_PAGE - 1) - -#define PXE_BASE 0xFFFFF6FB7DBED000ULL -#define PXE_SELFMAP 0xFFFFF6FB7DBEDF68ULL -#define PPE_BASE 0xFFFFF6FB7DA00000ULL -#define PDE_BASE 0xFFFFF6FB40000000ULL -#define PTE_BASE 0xFFFFF68000000000ULL -#define PXE_TOP 0xFFFFF6FB7DBEDFFFULL -#define PPE_TOP 0xFFFFF6FB7DBFFFFFULL -#define PDE_TOP 0xFFFFF6FB7FFFFFFFULL -#define PTE_TOP 0xFFFFF6FFFFFFFFFFULL - -extern NTKERNELAPI PVOID MmHighestUserAddress; -extern NTKERNELAPI PVOID MmSystemRangeStart; -extern NTKERNELAPI ULONG64 MmUserProbeAddress; - -#define MM_HIGHEST_USER_ADDRESS MmHighestUserAddress -#define MM_SYSTEM_RANGE_START MmSystemRangeStart -#define MM_USER_PROBE_ADDRESS MmUserProbeAddress -#define MM_LOWEST_USER_ADDRESS (PVOID)0x10000 -#define MM_LOWEST_SYSTEM_ADDRESS (PVOID)0xFFFF080000000000ULL - - -#elif defined(_M_IA64) - -#elif defined(_M_PPC) - - -#elif defined(_M_MIPS) - -#elif defined(_M_ARM) -#else -#error Unknown Architecture -#endif - -/****************************************************************************** - * Executive Functions * - ******************************************************************************/ -static __inline PVOID -ExAllocateFromZone( - IN PZONE_HEADER Zone) -{ - if (Zone->FreeList.Next) - Zone->FreeList.Next = Zone->FreeList.Next->Next; - return (PVOID) Zone->FreeList.Next; -} - -static __inline PVOID -ExFreeToZone( - IN PZONE_HEADER Zone, - IN PVOID Block) -{ - ((PSINGLE_LIST_ENTRY) Block)->Next = Zone->FreeList.Next; - Zone->FreeList.Next = ((PSINGLE_LIST_ENTRY) Block); - return ((PSINGLE_LIST_ENTRY) Block)->Next; -} - -/* - * PVOID - * ExInterlockedAllocateFromZone( - * IN PZONE_HEADER Zone, - * IN PKSPIN_LOCK Lock) - */ -#define ExInterlockedAllocateFromZone(Zone, Lock) \ - ((PVOID) ExInterlockedPopEntryList(&Zone->FreeList, Lock)) - -/* PVOID - * ExInterlockedFreeToZone( - * IN PZONE_HEADER Zone, - * IN PVOID Block, - * IN PKSPIN_LOCK Lock); - */ -#define ExInterlockedFreeToZone(Zone, Block, Lock) \ - ExInterlockedPushEntryList(&(Zone)->FreeList, (PSINGLE_LIST_ENTRY)(Block), Lock) - -/* - * BOOLEAN - * ExIsFullZone( - * IN PZONE_HEADER Zone) - */ -#define ExIsFullZone(Zone) \ - ((Zone)->FreeList.Next == (PSINGLE_LIST_ENTRY) NULL) - -/* BOOLEAN - * ExIsObjectInFirstZoneSegment( - * IN PZONE_HEADER Zone, - * IN PVOID Object); - */ -#define ExIsObjectInFirstZoneSegment(Zone,Object) \ - ((BOOLEAN)( ((PUCHAR)(Object) >= (PUCHAR)(Zone)->SegmentList.Next) && \ - ((PUCHAR)(Object) < (PUCHAR)(Zone)->SegmentList.Next + \ - (Zone)->TotalSegmentSize)) ) - -#define ExAcquireResourceExclusive ExAcquireResourceExclusiveLite -#define ExAcquireResourceShared ExAcquireResourceSharedLite -#define ExConvertExclusiveToShared ExConvertExclusiveToSharedLite -#define ExDeleteResource ExDeleteResourceLite -#define ExInitializeResource ExInitializeResourceLite -#define ExIsResourceAcquiredExclusive ExIsResourceAcquiredExclusiveLite -#define ExIsResourceAcquiredShared ExIsResourceAcquiredSharedLite -#define ExIsResourceAcquired ExIsResourceAcquiredSharedLite -#define ExReleaseResourceForThread ExReleaseResourceForThreadLite - -typedef enum _INTERLOCKED_RESULT { - ResultNegative = RESULT_NEGATIVE, - ResultZero = RESULT_ZERO, - ResultPositive = RESULT_POSITIVE -} INTERLOCKED_RESULT; - -#ifdef _X86_ -NTKERNELAPI -INTERLOCKED_RESULT -FASTCALL -Exfi386InterlockedIncrementLong( - IN OUT LONG volatile *Addend); - -NTKERNELAPI -INTERLOCKED_RESULT -FASTCALL -Exfi386InterlockedDecrementLong( - IN PLONG Addend); - -NTKERNELAPI -ULONG -FASTCALL -Exfi386InterlockedExchangeUlong( - IN PULONG Target, - IN ULONG Value); -#endif - - - -#if (NTDDI_VERSION >= NTDDI_WIN2K) -NTKERNELAPI -NTSTATUS -NTAPI -ExExtendZone( - IN OUT PZONE_HEADER Zone, - IN OUT PVOID Segment, - IN ULONG SegmentSize); - -NTKERNELAPI -NTSTATUS -NTAPI -ExInitializeZone( - OUT PZONE_HEADER Zone, - IN ULONG BlockSize, - IN OUT PVOID InitialSegment, - IN ULONG InitialSegmentSize); - -NTKERNELAPI -NTSTATUS -NTAPI -ExInterlockedExtendZone( - IN OUT PZONE_HEADER Zone, - IN OUT PVOID Segment, - IN ULONG SegmentSize, - IN OUT PKSPIN_LOCK Lock); - -NTKERNELAPI -NTSTATUS -NTAPI -ExUuidCreate( - OUT UUID *Uuid); - -NTKERNELAPI -DECLSPEC_NORETURN -VOID -NTAPI -ExRaiseAccessViolation(VOID); - -NTKERNELAPI -DECLSPEC_NORETURN -VOID -NTAPI -ExRaiseDatatypeMisalignment(VOID); - - -#endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */ - - -/* Hardware Abstraction Layer Functions */ - -#if (NTDDI_VERSION >= NTDDI_WIN2K) - -#if defined(USE_DMA_MACROS) && !defined(_NTHAL_) && (defined(_NTDDK_) || defined(_NTDRIVER_)) || defined(_WDM_INCLUDED_) - -/* Nothing here */ - -#else /* USE_DMA_MACROS ... */ - -//DECLSPEC_DEPRECATED_DDK -NTHALAPI -VOID -NTAPI -IoFreeAdapterChannel( - IN PADAPTER_OBJECT AdapterObject); - -//DECLSPEC_DEPRECATED_DDK -NTHALAPI -BOOLEAN -NTAPI -IoFlushAdapterBuffers( - IN PADAPTER_OBJECT AdapterObject, - IN PMDL Mdl, - IN PVOID MapRegisterBase, - IN PVOID CurrentVa, - IN ULONG Length, - IN BOOLEAN WriteToDevice); - -//DECLSPEC_DEPRECATED_DDK -NTHALAPI -VOID -NTAPI -IoFreeMapRegisters( - IN PADAPTER_OBJECT AdapterObject, - IN PVOID MapRegisterBase, - IN ULONG NumberOfMapRegisters); - -//DECLSPEC_DEPRECATED_DDK -NTHALAPI -PVOID -NTAPI -HalAllocateCommonBuffer( - IN PADAPTER_OBJECT AdapterObject, - IN ULONG Length, - OUT PPHYSICAL_ADDRESS LogicalAddress, - IN BOOLEAN CacheEnabled); - -//DECLSPEC_DEPRECATED_DDK -NTHALAPI -VOID -NTAPI -HalFreeCommonBuffer( - IN PADAPTER_OBJECT AdapterObject, - IN ULONG Length, - IN PHYSICAL_ADDRESS LogicalAddress, - IN PVOID VirtualAddress, - IN BOOLEAN CacheEnabled); - -//DECLSPEC_DEPRECATED_DDK -NTHALAPI -ULONG -NTAPI -HalReadDmaCounter( - IN PADAPTER_OBJECT AdapterObject); - -NTHALAPI -NTSTATUS -NTAPI -HalAllocateAdapterChannel( - IN PADAPTER_OBJECT AdapterObject, - IN PWAIT_CONTEXT_BLOCK Wcb, - IN ULONG NumberOfMapRegisters, - IN PDRIVER_CONTROL ExecutionRoutine); - -#endif /* USE_DMA_MACROS ... */ - -#if !defined(NO_LEGACY_DRIVERS) -NTHALAPI -NTSTATUS -NTAPI -HalAssignSlotResources( - IN PUNICODE_STRING RegistryPath, - IN PUNICODE_STRING DriverClassName, - IN PDRIVER_OBJECT DriverObject, - IN PDEVICE_OBJECT DeviceObject, - IN INTERFACE_TYPE BusType, - IN ULONG BusNumber, - IN ULONG SlotNumber, - IN OUT PCM_RESOURCE_LIST *AllocatedResources); - -NTHALAPI -ULONG -NTAPI -HalGetInterruptVector( - IN INTERFACE_TYPE InterfaceType, - IN ULONG BusNumber, - IN ULONG BusInterruptLevel, - IN ULONG BusInterruptVector, - OUT PKIRQL Irql, - OUT PKAFFINITY Affinity); - -NTHALAPI -ULONG -NTAPI -HalSetBusData( - IN BUS_DATA_TYPE BusDataType, - IN ULONG BusNumber, - IN ULONG SlotNumber, - IN PVOID Buffer, - IN ULONG Length); - -NTHALAPI -ULONG -NTAPI -HalGetBusData( - IN BUS_DATA_TYPE BusDataType, - IN ULONG BusNumber, - IN ULONG SlotNumber, - OUT PVOID Buffer, - IN ULONG Length); - -NTHALAPI -BOOLEAN -NTAPI -HalMakeBeep( - IN ULONG Frequency); -#endif /* !defined(NO_LEGACY_DRIVERS) */ - -NTHALAPI -PADAPTER_OBJECT -NTAPI -HalGetAdapter( - IN PDEVICE_DESCRIPTION DeviceDescription, - OUT PULONG NumberOfMapRegisters); - -VOID -NTAPI -HalPutDmaAdapter( - IN PADAPTER_OBJECT DmaAdapter); - -NTHALAPI -VOID -NTAPI -HalAcquireDisplayOwnership( - IN PHAL_RESET_DISPLAY_PARAMETERS ResetDisplayParameters); - -NTHALAPI -ULONG -NTAPI -HalGetBusDataByOffset( - IN BUS_DATA_TYPE BusDataType, - IN ULONG BusNumber, - IN ULONG SlotNumber, - OUT PVOID Buffer, - IN ULONG Offset, - IN ULONG Length); - -NTHALAPI -ULONG -NTAPI -HalSetBusDataByOffset( - IN BUS_DATA_TYPE BusDataType, - IN ULONG BusNumber, - IN ULONG SlotNumber, - IN PVOID Buffer, - IN ULONG Offset, - IN ULONG Length); - -NTHALAPI -BOOLEAN -NTAPI -HalTranslateBusAddress( - IN INTERFACE_TYPE InterfaceType, - IN ULONG BusNumber, - IN PHYSICAL_ADDRESS BusAddress, - IN OUT PULONG AddressSpace, - OUT PPHYSICAL_ADDRESS TranslatedAddress); - -NTHALAPI -PVOID -NTAPI -HalAllocateCrashDumpRegisters( - IN PADAPTER_OBJECT AdapterObject, - IN OUT PULONG NumberOfMapRegisters); - -NTSTATUS -NTAPI -HalGetScatterGatherList( - IN PADAPTER_OBJECT DmaAdapter, - IN PDEVICE_OBJECT DeviceObject, - IN PMDL Mdl, - IN PVOID CurrentVa, - IN ULONG Length, - IN PDRIVER_LIST_CONTROL ExecutionRoutine, - IN PVOID Context, - IN BOOLEAN WriteToDevice); - -VOID -NTAPI -HalPutScatterGatherList( - IN PADAPTER_OBJECT DmaAdapter, - IN PSCATTER_GATHER_LIST ScatterGather, - IN BOOLEAN WriteToDevice); - -#endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */ - -#if (NTDDI_VERSION >= NTDDI_WINXP) -NTKERNELAPI -VOID -FASTCALL -HalExamineMBR( - IN PDEVICE_OBJECT DeviceObject, - IN ULONG SectorSize, - IN ULONG MBRTypeIdentifier, - OUT PVOID *Buffer); -#endif /* (NTDDI_VERSION >= NTDDI_WINXP) */ - -#if (NTDDI_VERSION >= NTDDI_WIN7) - -NTSTATUS -NTAPI -HalAllocateHardwareCounters( - IN PGROUP_AFFINITY GroupAffinty, - IN ULONG GroupCount, - IN PPHYSICAL_COUNTER_RESOURCE_LIST ResourceList, - OUT PHANDLE CounterSetHandle); - -NTSTATUS -NTAPI -HalFreeHardwareCounters( - IN HANDLE CounterSetHandle); - -#endif /* (NTDDI_VERSION >= NTDDI_WIN7) */ - -#if defined(_IA64_) -#if (NTDDI_VERSION >= NTDDI_WIN2K) -NTHALAPI -ULONG -NTAPI -HalGetDmaAlignmentRequirement(VOID); -#endif -#endif /* defined(_IA64_) */ - -#if defined(_M_IX86) || defined(_M_AMD64) -#define HalGetDmaAlignmentRequirement() 1L -#endif - -#if (NTDDI_VERSION >= NTDDI_WIN7) - -typedef struct _WHEA_ERROR_SOURCE_DESCRIPTOR *PWHEA_ERROR_SOURCE_DESCRIPTOR; -typedef struct _WHEA_ERROR_RECORD *PWHEA_ERROR_RECORD; - -NTHALAPI -VOID -NTAPI -HalBugCheckSystem( - IN PWHEA_ERROR_SOURCE_DESCRIPTOR ErrorSource, - IN PWHEA_ERROR_RECORD ErrorRecord); - -#else - -typedef struct _WHEA_ERROR_RECORD *PWHEA_ERROR_RECORD; - -NTHALAPI -VOID -NTAPI -HalBugCheckSystem( - IN PWHEA_ERROR_RECORD ErrorRecord); - -#endif /* (NTDDI_VERSION >= NTDDI_WIN7) */ - - -/****************************************************************************** - * I/O Manager Functions * - ******************************************************************************/ -/* - * VOID IoAssignArcName( - * IN PUNICODE_STRING ArcName, - * IN PUNICODE_STRING DeviceName); - */ -#define IoAssignArcName(_ArcName, _DeviceName) ( \ - IoCreateSymbolicLink((_ArcName), (_DeviceName))) - -/* - * VOID - * IoDeassignArcName( - * IN PUNICODE_STRING ArcName) - */ -#define IoDeassignArcName IoDeleteSymbolicLink - -VOID -FORCEINLINE -NTAPI -IoInitializeDriverCreateContext( - PIO_DRIVER_CREATE_CONTEXT DriverContext) -{ - RtlZeroMemory(DriverContext, sizeof(IO_DRIVER_CREATE_CONTEXT)); - DriverContext->Size = sizeof(IO_DRIVER_CREATE_CONTEXT); -} - - - -#if (NTDDI_VERSION >= NTDDI_WIN2K) -#if !(defined(USE_DMA_MACROS) && (defined(_NTDDK_) || defined(_NTDRIVER_)) || defined(_WDM_INCLUDED_)) -NTKERNELAPI -NTSTATUS -NTAPI -IoAllocateAdapterChannel( - IN PADAPTER_OBJECT AdapterObject, - IN PDEVICE_OBJECT DeviceObject, - IN ULONG NumberOfMapRegisters, - IN PDRIVER_CONTROL ExecutionRoutine, - IN PVOID Context); -#endif - -#if !defined(DMA_MACROS_DEFINED) -//DECLSPEC_DEPRECATED_DDK -NTHALAPI -PHYSICAL_ADDRESS -NTAPI -IoMapTransfer( - IN PADAPTER_OBJECT AdapterObject, - IN PMDL Mdl, - IN PVOID MapRegisterBase, - IN PVOID CurrentVa, - IN OUT PULONG Length, - IN BOOLEAN WriteToDevice); -#endif - -NTKERNELAPI -VOID -NTAPI -IoAllocateController( - IN PCONTROLLER_OBJECT ControllerObject, - IN PDEVICE_OBJECT DeviceObject, - IN PDRIVER_CONTROL ExecutionRoutine, - IN PVOID Context OPTIONAL); - -NTKERNELAPI -PCONTROLLER_OBJECT -NTAPI -IoCreateController( - IN ULONG Size); - -NTKERNELAPI -VOID -NTAPI -IoDeleteController( - IN PCONTROLLER_OBJECT ControllerObject); - -NTKERNELAPI -VOID -NTAPI -IoFreeController( - IN PCONTROLLER_OBJECT ControllerObject); - -NTKERNELAPI -PCONFIGURATION_INFORMATION -NTAPI -IoGetConfigurationInformation(VOID); - -NTKERNELAPI -PDEVICE_OBJECT -NTAPI -IoGetDeviceToVerify( - IN PETHREAD Thread); - -NTKERNELAPI -VOID -NTAPI -IoCancelFileOpen( - IN PDEVICE_OBJECT DeviceObject, - IN PFILE_OBJECT FileObject); - -NTKERNELAPI -PGENERIC_MAPPING -NTAPI -IoGetFileObjectGenericMapping(VOID); - -NTKERNELAPI -PIRP -NTAPI -IoMakeAssociatedIrp( - IN PIRP Irp, - IN CCHAR StackSize); - -NTKERNELAPI -NTSTATUS -NTAPI -IoQueryDeviceDescription( - IN PINTERFACE_TYPE BusType OPTIONAL, - IN PULONG BusNumber OPTIONAL, - IN PCONFIGURATION_TYPE ControllerType OPTIONAL, - IN PULONG ControllerNumber OPTIONAL, - IN PCONFIGURATION_TYPE PeripheralType OPTIONAL, - IN PULONG PeripheralNumber OPTIONAL, - IN PIO_QUERY_DEVICE_ROUTINE CalloutRoutine, - IN OUT PVOID Context OPTIONAL); - -NTKERNELAPI -VOID -NTAPI -IoRaiseHardError( - IN PIRP Irp, - IN PVPB Vpb OPTIONAL, - IN PDEVICE_OBJECT RealDeviceObject); - -NTKERNELAPI -BOOLEAN -NTAPI -IoRaiseInformationalHardError( - IN NTSTATUS ErrorStatus, - IN PUNICODE_STRING String OPTIONAL, - IN PKTHREAD Thread OPTIONAL); - -NTKERNELAPI -VOID -NTAPI -IoRegisterBootDriverReinitialization( - IN PDRIVER_OBJECT DriverObject, - IN PDRIVER_REINITIALIZE DriverReinitializationRoutine, - IN PVOID Context OPTIONAL); - -NTKERNELAPI -VOID -NTAPI -IoRegisterDriverReinitialization( - IN PDRIVER_OBJECT DriverObject, - IN PDRIVER_REINITIALIZE DriverReinitializationRoutine, - IN PVOID Context OPTIONAL); - -NTKERNELAPI -NTSTATUS -NTAPI -IoAttachDeviceByPointer( - IN PDEVICE_OBJECT SourceDevice, - IN PDEVICE_OBJECT TargetDevice); - -NTKERNELAPI -NTSTATUS -NTAPI -IoReportDetectedDevice( - IN PDRIVER_OBJECT DriverObject, - IN INTERFACE_TYPE LegacyBusType, - IN ULONG BusNumber, - IN ULONG SlotNumber, - IN PCM_RESOURCE_LIST ResourceList OPTIONAL, - IN PIO_RESOURCE_REQUIREMENTS_LIST ResourceRequirements OPTIONAL, - IN BOOLEAN ResourceAssigned, - IN OUT PDEVICE_OBJECT *DeviceObject OPTIONAL); - -NTKERNELAPI -NTSTATUS -NTAPI -IoReportResourceForDetection( - IN PDRIVER_OBJECT DriverObject, - IN PCM_RESOURCE_LIST DriverList OPTIONAL, - IN ULONG DriverListSize OPTIONAL, - IN PDEVICE_OBJECT DeviceObject OPTIONAL, - IN PCM_RESOURCE_LIST DeviceList OPTIONAL, - IN ULONG DeviceListSize OPTIONAL, - OUT PBOOLEAN ConflictDetected); - -NTKERNELAPI -NTSTATUS -NTAPI -IoReportResourceUsage( - IN PUNICODE_STRING DriverClassName OPTIONAL, - IN PDRIVER_OBJECT DriverObject, - IN PCM_RESOURCE_LIST DriverList OPTIONAL, - IN ULONG DriverListSize OPTIONAL, - IN PDEVICE_OBJECT DeviceObject, - IN PCM_RESOURCE_LIST DeviceList OPTIONAL, - IN ULONG DeviceListSize OPTIONAL, - IN BOOLEAN OverrideConflict, - OUT PBOOLEAN ConflictDetected); - -NTKERNELAPI -VOID -NTAPI -IoSetHardErrorOrVerifyDevice( - IN PIRP Irp, - IN PDEVICE_OBJECT DeviceObject); - -NTKERNELAPI -NTSTATUS -NTAPI -IoAssignResources( - IN PUNICODE_STRING RegistryPath, - IN PUNICODE_STRING DriverClassName OPTIONAL, - IN PDRIVER_OBJECT DriverObject, - IN PDEVICE_OBJECT DeviceObject OPTIONAL, - IN PIO_RESOURCE_REQUIREMENTS_LIST RequestedResources OPTIONAL, - IN OUT PCM_RESOURCE_LIST *AllocatedResources); - -NTKERNELAPI -BOOLEAN -NTAPI -IoSetThreadHardErrorMode( - IN BOOLEAN EnableHardErrors); - -#endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */ - -#if (NTDDI_VERSION >= NTDDI_WIN2KSP3) - -NTKERNELAPI -BOOLEAN -NTAPI -IoIsFileOriginRemote( - IN PFILE_OBJECT FileObject); - -NTKERNELAPI -NTSTATUS -NTAPI -IoSetFileOrigin( - IN PFILE_OBJECT FileObject, - IN BOOLEAN Remote); - -#endif /* (NTDDI_VERSION >= NTDDI_WIN2KSP3) */ - -#if (NTDDI_VERSION >= NTDDI_WINXP) -NTKERNELAPI -NTSTATUS -FASTCALL -IoReadPartitionTable( - IN PDEVICE_OBJECT DeviceObject, - IN ULONG SectorSize, - IN BOOLEAN ReturnRecognizedPartitions, - OUT struct _DRIVE_LAYOUT_INFORMATION **PartitionBuffer); +typedef struct _KERNEL_USER_TIMES { + LARGE_INTEGER CreateTime; + LARGE_INTEGER ExitTime; + LARGE_INTEGER KernelTime; + LARGE_INTEGER UserTime; +} KERNEL_USER_TIMES, *PKERNEL_USER_TIMES; -NTKERNELAPI -NTSTATUS -FASTCALL -IoSetPartitionInformation( - IN PDEVICE_OBJECT DeviceObject, - IN ULONG SectorSize, - IN ULONG PartitionNumber, - IN ULONG PartitionType); +typedef struct _PROCESS_ACCESS_TOKEN { + HANDLE Token; + HANDLE Thread; +} PROCESS_ACCESS_TOKEN, *PPROCESS_ACCESS_TOKEN; -NTKERNELAPI -NTSTATUS -FASTCALL -IoWritePartitionTable( - IN PDEVICE_OBJECT DeviceObject, - IN ULONG SectorSize, - IN ULONG SectorsPerTrack, - IN ULONG NumberOfHeads, - IN struct _DRIVE_LAYOUT_INFORMATION *PartitionBuffer); +typedef struct _PROCESS_SESSION_INFORMATION { + ULONG SessionId; +} PROCESS_SESSION_INFORMATION, *PPROCESS_SESSION_INFORMATION; -NTKERNELAPI -NTSTATUS -NTAPI -IoCreateDisk( - IN PDEVICE_OBJECT DeviceObject, - IN struct _CREATE_DISK* Disk OPTIONAL); +typedef enum _IO_QUERY_DEVICE_DATA_FORMAT { + IoQueryDeviceIdentifier = 0, + IoQueryDeviceConfigurationData, + IoQueryDeviceComponentInformation, + IoQueryDeviceMaxData +} IO_QUERY_DEVICE_DATA_FORMAT, *PIO_QUERY_DEVICE_DATA_FORMAT; -NTKERNELAPI -NTSTATUS -NTAPI -IoReadDiskSignature( - IN PDEVICE_OBJECT DeviceObject, - IN ULONG BytesPerSector, - OUT PDISK_SIGNATURE Signature); +typedef struct _DISK_SIGNATURE { + ULONG PartitionStyle; + _ANONYMOUS_UNION union { + struct { + ULONG Signature; + ULONG CheckSum; + } Mbr; + struct { + GUID DiskId; + } Gpt; + } DUMMYUNIONNAME; +} DISK_SIGNATURE, *PDISK_SIGNATURE; -NTKERNELAPI -NTSTATUS -NTAPI -IoReadPartitionTableEx( - IN PDEVICE_OBJECT DeviceObject, - OUT struct _DRIVE_LAYOUT_INFORMATION_EX **PartitionBuffer); +typedef ULONG_PTR +(NTAPI *PDRIVER_VERIFIER_THUNK_ROUTINE)( + IN PVOID Context); -NTKERNELAPI -NTSTATUS -NTAPI -IoSetPartitionInformationEx( - IN PDEVICE_OBJECT DeviceObject, - IN ULONG PartitionNumber, - IN struct _SET_PARTITION_INFORMATION_EX *PartitionInfo); +typedef struct _DRIVER_VERIFIER_THUNK_PAIRS { + PDRIVER_VERIFIER_THUNK_ROUTINE PristineRoutine; + PDRIVER_VERIFIER_THUNK_ROUTINE NewRoutine; +} DRIVER_VERIFIER_THUNK_PAIRS, *PDRIVER_VERIFIER_THUNK_PAIRS; -NTKERNELAPI -NTSTATUS -NTAPI -IoSetSystemPartition( - IN PUNICODE_STRING VolumeNameString); +#define DRIVER_VERIFIER_SPECIAL_POOLING 0x0001 +#define DRIVER_VERIFIER_FORCE_IRQL_CHECKING 0x0002 +#define DRIVER_VERIFIER_INJECT_ALLOCATION_FAILURES 0x0004 +#define DRIVER_VERIFIER_TRACK_POOL_ALLOCATIONS 0x0008 +#define DRIVER_VERIFIER_IO_CHECKING 0x0010 -NTKERNELAPI -NTSTATUS -NTAPI -IoVerifyPartitionTable( - IN PDEVICE_OBJECT DeviceObject, - IN BOOLEAN FixErrors); +typedef VOID +(NTAPI *PTIMER_APC_ROUTINE)( + IN PVOID TimerContext, + IN ULONG TimerLowValue, + IN LONG TimerHighValue); -NTKERNELAPI -NTSTATUS -NTAPI -IoVolumeDeviceToDosName( - IN PVOID VolumeDeviceObject, - OUT PUNICODE_STRING DosName); +typedef struct _KUSER_SHARED_DATA +{ + ULONG TickCountLowDeprecated; + ULONG TickCountMultiplier; + volatile KSYSTEM_TIME InterruptTime; + volatile KSYSTEM_TIME SystemTime; + volatile KSYSTEM_TIME TimeZoneBias; + USHORT ImageNumberLow; + USHORT ImageNumberHigh; + WCHAR NtSystemRoot[260]; + ULONG MaxStackTraceDepth; + ULONG CryptoExponent; + ULONG TimeZoneId; + ULONG LargePageMinimum; + ULONG Reserved2[7]; + NT_PRODUCT_TYPE NtProductType; + BOOLEAN ProductTypeIsValid; + ULONG NtMajorVersion; + ULONG NtMinorVersion; + BOOLEAN ProcessorFeatures[PROCESSOR_FEATURE_MAX]; + ULONG Reserved1; + ULONG Reserved3; + volatile ULONG TimeSlip; + ALTERNATIVE_ARCHITECTURE_TYPE AlternativeArchitecture; + ULONG AltArchitecturePad[1]; + LARGE_INTEGER SystemExpirationDate; + ULONG SuiteMask; + BOOLEAN KdDebuggerEnabled; +#if (NTDDI_VERSION >= NTDDI_WINXPSP2) + UCHAR NXSupportPolicy; +#endif + volatile ULONG ActiveConsoleId; + volatile ULONG DismountCount; + ULONG ComPlusPackage; + ULONG LastSystemRITEventTickCount; + ULONG NumberOfPhysicalPages; + BOOLEAN SafeBootMode; +#if (NTDDI_VERSION >= NTDDI_WIN7) + union { + UCHAR TscQpcData; + struct { + UCHAR TscQpcEnabled:1; + UCHAR TscQpcSpareFlag:1; + UCHAR TscQpcShift:6; + } DUMMYSTRUCTNAME; + } DUMMYUNIONNAME; + UCHAR TscQpcPad[2]; +#endif +#if (NTDDI_VERSION >= NTDDI_VISTA) + union { + ULONG SharedDataFlags; + struct { + ULONG DbgErrorPortPresent:1; + ULONG DbgElevationEnabled:1; + ULONG DbgVirtEnabled:1; + ULONG DbgInstallerDetectEnabled:1; + ULONG DbgSystemDllRelocated:1; + ULONG DbgDynProcessorEnabled:1; + ULONG DbgSEHValidationEnabled:1; + ULONG SpareBits:25; + } DUMMYSTRUCTNAME2; + } DUMMYUNIONNAME2; +#else + ULONG TraceLogging; +#endif + ULONG DataFlagsPad[1]; + ULONGLONG TestRetInstruction; + ULONG SystemCall; + ULONG SystemCallReturn; + ULONGLONG SystemCallPad[3]; + _ANONYMOUS_UNION union { + volatile KSYSTEM_TIME TickCount; + volatile ULONG64 TickCountQuad; + _ANONYMOUS_STRUCT struct { + ULONG ReservedTickCountOverlay[3]; + ULONG TickCountPad[1]; + } DUMMYSTRUCTNAME; + } DUMMYUNIONNAME3; + ULONG Cookie; + ULONG CookiePad[1]; +#if (NTDDI_VERSION >= NTDDI_WS03) + LONGLONG ConsoleSessionForegroundProcessId; + ULONG Wow64SharedInformation[MAX_WOW64_SHARED_ENTRIES]; +#endif +#if (NTDDI_VERSION >= NTDDI_VISTA) +#if (NTDDI_VERSION >= NTDDI_WIN7) + USHORT UserModeGlobalLogger[16]; +#else + USHORT UserModeGlobalLogger[8]; + ULONG HeapTracingPid[2]; + ULONG CritSecTracingPid[2]; +#endif + ULONG ImageFileExecutionOptions; +#if (NTDDI_VERSION >= NTDDI_VISTASP1) + ULONG LangGenerationCount; +#else + /* 4 bytes padding */ +#endif + ULONGLONG Reserved5; + volatile ULONG64 InterruptTimeBias; +#endif +#if (NTDDI_VERSION >= NTDDI_WIN7) + volatile ULONG64 TscQpcBias; + volatile ULONG ActiveProcessorCount; + volatile USHORT ActiveGroupCount; + USHORT Reserved4; + volatile ULONG AitSamplingValue; + volatile ULONG AppCompatFlag; + ULONGLONG SystemDllNativeRelocation; + ULONG SystemDllWowRelocation; + ULONG XStatePad[1]; + XSTATE_CONFIGURATION XState; +#endif +} KUSER_SHARED_DATA, *PKUSER_SHARED_DATA; -NTKERNELAPI -NTSTATUS -NTAPI -IoWritePartitionTableEx( - IN PDEVICE_OBJECT DeviceObject, - IN struct _DRIVE_LAYOUT_INFORMATION_EX *DriveLayout); +extern NTKERNELAPI PVOID MmHighestUserAddress; +extern NTKERNELAPI PVOID MmSystemRangeStart; +extern NTKERNELAPI ULONG MmUserProbeAddress; -NTKERNELAPI -NTSTATUS -NTAPI -IoCreateFileSpecifyDeviceObjectHint( - OUT PHANDLE FileHandle, - IN ACCESS_MASK DesiredAccess, - IN POBJECT_ATTRIBUTES ObjectAttributes, - OUT PIO_STATUS_BLOCK IoStatusBlock, - IN PLARGE_INTEGER AllocationSize OPTIONAL, - IN ULONG FileAttributes, - IN ULONG ShareAccess, - IN ULONG Disposition, - IN ULONG CreateOptions, - IN PVOID EaBuffer OPTIONAL, - IN ULONG EaLength, - IN CREATE_FILE_TYPE CreateFileType, - IN PVOID InternalParameters OPTIONAL, - IN ULONG Options, - IN PVOID DeviceObject OPTIONAL); -NTKERNELAPI -NTSTATUS -NTAPI -IoAttachDeviceToDeviceStackSafe( - IN PDEVICE_OBJECT SourceDevice, - IN PDEVICE_OBJECT TargetDevice, - OUT PDEVICE_OBJECT *AttachedToDeviceObject); +#ifdef _X86_ -#endif /* (NTDDI_VERSION >= NTDDI_WINXP) */ +#define MM_HIGHEST_USER_ADDRESS MmHighestUserAddress +#define MM_SYSTEM_RANGE_START MmSystemRangeStart +#if defined(_LOCAL_COPY_USER_PROBE_ADDRESS_) +#define MM_USER_PROBE_ADDRESS _LOCAL_COPY_USER_PROBE_ADDRESS_ +extern ULONG _LOCAL_COPY_USER_PROBE_ADDRESS_; +#else +#define MM_USER_PROBE_ADDRESS MmUserProbeAddress +#endif +#define MM_LOWEST_USER_ADDRESS (PVOID)0x10000 +#define MM_KSEG0_BASE MM_SYSTEM_RANGE_START +#define MM_SYSTEM_SPACE_END 0xFFFFFFFF +#if !defined (_X86PAE_) +#define MM_LOWEST_SYSTEM_ADDRESS (PVOID)0xC0800000 +#else +#define MM_LOWEST_SYSTEM_ADDRESS (PVOID)0xC0C00000 +#endif +#define KeGetPcr() PCR -#if (NTDDI_VERSION >= NTDDI_WS03) -NTKERNELAPI -IO_PAGING_PRIORITY -FASTCALL -IoGetPagingIoPriority( - IN PIRP Irp); +#define KERNEL_STACK_SIZE 12288 +#define KERNEL_LARGE_STACK_SIZE 61440 +#define KERNEL_LARGE_STACK_COMMIT 12288 -#endif /* (NTDDI_VERSION >= NTDDI_WS03) */ +#define SIZE_OF_80387_REGISTERS 80 -#if (NTDDI_VERSION >= NTDDI_WS03SP1) -BOOLEAN -NTAPI -IoTranslateBusAddress( - IN INTERFACE_TYPE InterfaceType, - IN ULONG BusNumber, - IN PHYSICAL_ADDRESS BusAddress, - IN OUT PULONG AddressSpace, - OUT PPHYSICAL_ADDRESS TranslatedAddress); -#endif +#define PCR_MINOR_VERSION 1 +#define PCR_MAJOR_VERSION 1 -#if (NTDDI_VERSION >= NTDDI_VISTA) -NTKERNELAPI -NTSTATUS -NTAPI -IoUpdateDiskGeometry( - IN PDEVICE_OBJECT DeviceObject, - IN struct _DISK_GEOMETRY_EX* OldDiskGeometry, - IN struct _DISK_GEOMETRY_EX* NewDiskGeometry); +#if !defined(RC_INVOKED) -PTXN_PARAMETER_BLOCK -NTAPI -IoGetTransactionParameterBlock( - IN PFILE_OBJECT FileObject); +#define CONTEXT_i386 0x10000 +#define CONTEXT_i486 0x10000 +#define CONTEXT_CONTROL (CONTEXT_i386|0x00000001L) +#define CONTEXT_INTEGER (CONTEXT_i386|0x00000002L) +#define CONTEXT_SEGMENTS (CONTEXT_i386|0x00000004L) +#define CONTEXT_FLOATING_POINT (CONTEXT_i386|0x00000008L) +#define CONTEXT_DEBUG_REGISTERS (CONTEXT_i386|0x00000010L) +#define CONTEXT_EXTENDED_REGISTERS (CONTEXT_i386|0x00000020L) -NTKERNELAPI -NTSTATUS -NTAPI -IoCreateFileEx( - OUT PHANDLE FileHandle, - IN ACCESS_MASK DesiredAccess, - IN POBJECT_ATTRIBUTES ObjectAttributes, - OUT PIO_STATUS_BLOCK IoStatusBlock, - IN PLARGE_INTEGER AllocationSize OPTIONAL, - IN ULONG FileAttributes, - IN ULONG ShareAccess, - IN ULONG Disposition, - IN ULONG CreateOptions, - IN PVOID EaBuffer OPTIONAL, - IN ULONG EaLength, - IN CREATE_FILE_TYPE CreateFileType, - IN PVOID InternalParameters OPTIONAL, - IN ULONG Options, - IN PIO_DRIVER_CREATE_CONTEXT DriverContext OPTIONAL); +#define CONTEXT_FULL (CONTEXT_CONTROL|CONTEXT_INTEGER|CONTEXT_SEGMENTS) -NTSTATUS -NTAPI -IoSetIrpExtraCreateParameter( - IN OUT PIRP Irp, - IN struct _ECP_LIST *ExtraCreateParameter); +#endif /* !defined(RC_INVOKED) */ -VOID -NTAPI -IoClearIrpExtraCreateParameter( - IN OUT PIRP Irp); +typedef struct _KPCR { + union { + NT_TIB NtTib; + struct { + struct _EXCEPTION_REGISTRATION_RECORD *Used_ExceptionList; + PVOID Used_StackBase; + PVOID Spare2; + PVOID TssCopy; + ULONG ContextSwitches; + KAFFINITY SetMemberCopy; + PVOID Used_Self; + }; + }; + struct _KPCR *SelfPcr; + struct _KPRCB *Prcb; + KIRQL Irql; + ULONG IRR; + ULONG IrrActive; + ULONG IDR; + PVOID KdVersionBlock; + struct _KIDTENTRY *IDT; + struct _KGDTENTRY *GDT; + struct _KTSS *TSS; + USHORT MajorVersion; + USHORT MinorVersion; + KAFFINITY SetMember; + ULONG StallScaleFactor; + UCHAR SpareUnused; + UCHAR Number; + UCHAR Spare0; + UCHAR SecondLevelCacheAssociativity; + ULONG VdmAlert; + ULONG KernelReserved[14]; + ULONG SecondLevelCacheSize; + ULONG HalReserved[16]; +} KPCR, *PKPCR; + +FORCEINLINE +ULONG +KeGetCurrentProcessorNumber(VOID) +{ + return (ULONG)__readfsbyte(FIELD_OFFSET(KPCR, Number)); +} + +typedef struct _FLOATING_SAVE_AREA { + ULONG ControlWord; + ULONG StatusWord; + ULONG TagWord; + ULONG ErrorOffset; + ULONG ErrorSelector; + ULONG DataOffset; + ULONG DataSelector; + UCHAR RegisterArea[SIZE_OF_80387_REGISTERS]; + ULONG Cr0NpxState; +} FLOATING_SAVE_AREA, *PFLOATING_SAVE_AREA; -NTSTATUS -NTAPI -IoGetIrpExtraCreateParameter( - IN PIRP Irp, - OUT struct _ECP_LIST **ExtraCreateParameter OPTIONAL); +#include "pshpack4.h" +typedef struct _CONTEXT { + ULONG ContextFlags; + ULONG Dr0; + ULONG Dr1; + ULONG Dr2; + ULONG Dr3; + ULONG Dr6; + ULONG Dr7; + FLOATING_SAVE_AREA FloatSave; + ULONG SegGs; + ULONG SegFs; + ULONG SegEs; + ULONG SegDs; + ULONG Edi; + ULONG Esi; + ULONG Ebx; + ULONG Edx; + ULONG Ecx; + ULONG Eax; + ULONG Ebp; + ULONG Eip; + ULONG SegCs; + ULONG EFlags; + ULONG Esp; + ULONG SegSs; + UCHAR ExtendedRegisters[MAXIMUM_SUPPORTED_EXTENSION]; +} CONTEXT; +#include "poppack.h" -BOOLEAN -NTAPI -IoIsFileObjectIgnoringSharing( - IN PFILE_OBJECT FileObject); +#endif /* _X86_ */ +#ifdef _AMD64_ -#endif /* (NTDDI_VERSION >= NTDDI_VISTA) */ +#define PTI_SHIFT 12L +#define PDI_SHIFT 21L +#define PPI_SHIFT 30L +#define PXI_SHIFT 39L +#define PTE_PER_PAGE 512 +#define PDE_PER_PAGE 512 +#define PPE_PER_PAGE 512 +#define PXE_PER_PAGE 512 +#define PTI_MASK_AMD64 (PTE_PER_PAGE - 1) +#define PDI_MASK_AMD64 (PDE_PER_PAGE - 1) +#define PPI_MASK (PPE_PER_PAGE - 1) +#define PXI_MASK (PXE_PER_PAGE - 1) +#define PXE_BASE 0xFFFFF6FB7DBED000ULL +#define PXE_SELFMAP 0xFFFFF6FB7DBEDF68ULL +#define PPE_BASE 0xFFFFF6FB7DA00000ULL +#define PDE_BASE 0xFFFFF6FB40000000ULL +#define PTE_BASE 0xFFFFF68000000000ULL +#define PXE_TOP 0xFFFFF6FB7DBEDFFFULL +#define PPE_TOP 0xFFFFF6FB7DBFFFFFULL +#define PDE_TOP 0xFFFFF6FB7FFFFFFFULL +#define PTE_TOP 0xFFFFF6FFFFFFFFFFULL -#if (NTDDI_VERSION >= NTDDI_WIN7) -NTSTATUS -NTAPI -IoSetFileObjectIgnoreSharing( - IN PFILE_OBJECT FileObject); +#define MM_HIGHEST_USER_ADDRESS MmHighestUserAddress +#define MM_SYSTEM_RANGE_START MmSystemRangeStart +#define MM_USER_PROBE_ADDRESS MmUserProbeAddress +#define MM_LOWEST_USER_ADDRESS (PVOID)0x10000 +#define MM_LOWEST_SYSTEM_ADDRESS (PVOID)0xFFFF080000000000ULL +#define KI_USER_SHARED_DATA 0xFFFFF78000000000ULL +typedef struct DECLSPEC_ALIGN(16) _CONTEXT { + ULONG64 P1Home; + ULONG64 P2Home; + ULONG64 P3Home; + ULONG64 P4Home; + ULONG64 P5Home; + ULONG64 P6Home; + + /* Control flags */ + ULONG ContextFlags; + ULONG MxCsr; + + /* Segment */ + USHORT SegCs; + USHORT SegDs; + USHORT SegEs; + USHORT SegFs; + USHORT SegGs; + USHORT SegSs; + ULONG EFlags; + + /* Debug */ + ULONG64 Dr0; + ULONG64 Dr1; + ULONG64 Dr2; + ULONG64 Dr3; + ULONG64 Dr6; + ULONG64 Dr7; + + /* Integer */ + ULONG64 Rax; + ULONG64 Rcx; + ULONG64 Rdx; + ULONG64 Rbx; + ULONG64 Rsp; + ULONG64 Rbp; + ULONG64 Rsi; + ULONG64 Rdi; + ULONG64 R8; + ULONG64 R9; + ULONG64 R10; + ULONG64 R11; + ULONG64 R12; + ULONG64 R13; + ULONG64 R14; + ULONG64 R15; + + /* Counter */ + ULONG64 Rip; + + /* Floating point */ + union { + XMM_SAVE_AREA32 FltSave; + struct { + M128A Header[2]; + M128A Legacy[8]; + M128A Xmm0; + M128A Xmm1; + M128A Xmm2; + M128A Xmm3; + M128A Xmm4; + M128A Xmm5; + M128A Xmm6; + M128A Xmm7; + M128A Xmm8; + M128A Xmm9; + M128A Xmm10; + M128A Xmm11; + M128A Xmm12; + M128A Xmm13; + M128A Xmm14; + M128A Xmm15; + } DUMMYSTRUCTNAME; + } DUMMYUNIONNAME; + + /* Vector */ + M128A VectorRegister[26]; + ULONG64 VectorControl; + + /* Debug control */ + ULONG64 DebugControl; + ULONG64 LastBranchToRip; + ULONG64 LastBranchFromRip; + ULONG64 LastExceptionToRip; + ULONG64 LastExceptionFromRip; +} CONTEXT; -#endif /* (NTDDI_VERSION >= NTDDI_WIN7) */ +typedef struct _KPCR +{ + _ANONYMOUS_UNION union + { + NT_TIB NtTib; + _ANONYMOUS_STRUCT struct + { + union _KGDTENTRY64 *GdtBase; + struct _KTSS64 *TssBase; + ULONG64 UserRsp; + struct _KPCR *Self; + struct _KPRCB *CurrentPrcb; + PKSPIN_LOCK_QUEUE LockArray; + PVOID Used_Self; + }; + }; + union _KIDTENTRY64 *IdtBase; + ULONG64 Unused[2]; + KIRQL Irql; + UCHAR SecondLevelCacheAssociativity; + UCHAR ObsoleteNumber; + UCHAR Fill0; + ULONG Unused0[3]; + USHORT MajorVersion; + USHORT MinorVersion; + ULONG StallScaleFactor; + PVOID Unused1[3]; + ULONG KernelReserved[15]; + ULONG SecondLevelCacheSize; + ULONG HalReserved[16]; + ULONG Unused2; + PVOID KdVersionBlock; + PVOID Unused3; + ULONG PcrAlign1[24]; +} KPCR, *PKPCR; +FORCEINLINE +PKPCR +KeGetPcr(VOID) +{ + return (PKPCR)__readgsqword(FIELD_OFFSET(KPCR, Self)); +} -/****************************************************************************** - * Kernel Debugger Functions * - ******************************************************************************/ -NTSYSAPI +FORCEINLINE ULONG -NTAPI -DbgPrompt( - IN PCCH Prompt, - OUT PCH Response, - IN ULONG MaximumResponseLength); +KeGetCurrentProcessorNumber(VOID) +{ + return (ULONG)__readgsword(0x184); +} -/****************************************************************************** - * Kernel Functions * - ******************************************************************************/ -NTKERNELAPI -VOID -FASTCALL -KeInvalidateRangeAllCaches( - IN PVOID BaseAddress, - IN ULONG Length); +#if !defined(RC_INVOKED) + +#define CONTEXT_AMD64 0x100000 +#define CONTEXT_CONTROL (CONTEXT_AMD64 | 0x1L) +#define CONTEXT_INTEGER (CONTEXT_AMD64 | 0x2L) +#define CONTEXT_SEGMENTS (CONTEXT_AMD64 | 0x4L) +#define CONTEXT_FLOATING_POINT (CONTEXT_AMD64 | 0x8L) +#define CONTEXT_DEBUG_REGISTERS (CONTEXT_AMD64 | 0x10L) -#if (NTDDI_VERSION >= NTDDI_WIN2K) +#define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_FLOATING_POINT) +#define CONTEXT_ALL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS | CONTEXT_FLOATING_POINT | CONTEXT_DEBUG_REGISTERS) -NTKERNELAPI -VOID -NTAPI -KeSetImportanceDpc( - IN OUT PRKDPC Dpc, - IN KDPC_IMPORTANCE Importance); +#define CONTEXT_XSTATE (CONTEXT_AMD64 | 0x20L) -NTKERNELAPI -LONG -NTAPI -KePulseEvent( - IN OUT PRKEVENT Event, - IN KPRIORITY Increment, - IN BOOLEAN Wait); +#define CONTEXT_EXCEPTION_ACTIVE 0x8000000 +#define CONTEXT_SERVICE_ACTIVE 0x10000000 +#define CONTEXT_EXCEPTION_REQUEST 0x40000000 +#define CONTEXT_EXCEPTION_REPORTING 0x80000000 -NTKERNELAPI -LONG -NTAPI -KeSetBasePriorityThread( - IN OUT PRKTHREAD Thread, - IN LONG Increment); +#endif /* RC_INVOKED */ -NTKERNELAPI -VOID -NTAPI -KeEnterCriticalRegion(VOID); +#endif /* _AMD64_ */ -NTKERNELAPI -VOID -NTAPI -KeLeaveCriticalRegion(VOID); +typedef enum _INTERLOCKED_RESULT { + ResultNegative = RESULT_NEGATIVE, + ResultZero = RESULT_ZERO, + ResultPositive = RESULT_POSITIVE +} INTERLOCKED_RESULT; -NTKERNELAPI -DECLSPEC_NORETURN -VOID -NTAPI -KeBugCheck( - IN ULONG BugCheckCode); +typedef struct _OSVERSIONINFOA { + ULONG dwOSVersionInfoSize; + ULONG dwMajorVersion; + ULONG dwMinorVersion; + ULONG dwBuildNumber; + ULONG dwPlatformId; + CHAR szCSDVersion[128]; +} OSVERSIONINFOA, *POSVERSIONINFOA, *LPOSVERSIONINFOA; +typedef struct _OSVERSIONINFOW { + ULONG dwOSVersionInfoSize; + ULONG dwMajorVersion; + ULONG dwMinorVersion; + ULONG dwBuildNumber; + ULONG dwPlatformId; + WCHAR szCSDVersion[128]; +} OSVERSIONINFOW, *POSVERSIONINFOW, *LPOSVERSIONINFOW, RTL_OSVERSIONINFOW, *PRTL_OSVERSIONINFOW; -#if defined(SINGLE_GROUP_LEGACY_API) +typedef struct _OSVERSIONINFOEXA { + ULONG dwOSVersionInfoSize; + ULONG dwMajorVersion; + ULONG dwMinorVersion; + ULONG dwBuildNumber; + ULONG dwPlatformId; + CHAR szCSDVersion[128]; + USHORT wServicePackMajor; + USHORT wServicePackMinor; + USHORT wSuiteMask; + UCHAR wProductType; + UCHAR wReserved; +} OSVERSIONINFOEXA, *POSVERSIONINFOEXA, *LPOSVERSIONINFOEXA; +typedef struct _OSVERSIONINFOEXW { + ULONG dwOSVersionInfoSize; + ULONG dwMajorVersion; + ULONG dwMinorVersion; + ULONG dwBuildNumber; + ULONG dwPlatformId; + WCHAR szCSDVersion[128]; + USHORT wServicePackMajor; + USHORT wServicePackMinor; + USHORT wSuiteMask; + UCHAR wProductType; + UCHAR wReserved; +} OSVERSIONINFOEXW, *POSVERSIONINFOEXW, *LPOSVERSIONINFOEXW, RTL_OSVERSIONINFOEXW, *PRTL_OSVERSIONINFOEXW; -NTKERNELAPI -VOID -NTAPI -KeSetTargetProcessorDpc( - IN OUT PRKDPC Dpc, - IN CCHAR Number); +#ifdef UNICODE +typedef OSVERSIONINFOEXW OSVERSIONINFOEX; +typedef POSVERSIONINFOEXW POSVERSIONINFOEX; +typedef LPOSVERSIONINFOEXW LPOSVERSIONINFOEX; +typedef OSVERSIONINFOW OSVERSIONINFO; +typedef POSVERSIONINFOW POSVERSIONINFO; +typedef LPOSVERSIONINFOW LPOSVERSIONINFO; +#else +typedef OSVERSIONINFOEXA OSVERSIONINFOEX; +typedef POSVERSIONINFOEXA POSVERSIONINFOEX; +typedef LPOSVERSIONINFOEXA LPOSVERSIONINFOEX; +typedef OSVERSIONINFOA OSVERSIONINFO; +typedef POSVERSIONINFOA POSVERSIONINFO; +typedef LPOSVERSIONINFOA LPOSVERSIONINFO; +#endif /* UNICODE */ -NTKERNELAPI -KAFFINITY -NTAPI -KeQueryActiveProcessors(VOID); +/* Executive Types */ -#endif /* defined(SINGLE_GROUP_LEGACY_API) */ +#define PROTECTED_POOL 0x80000000 +typedef struct _ZONE_SEGMENT_HEADER { + SINGLE_LIST_ENTRY SegmentList; + PVOID Reserved; +} ZONE_SEGMENT_HEADER, *PZONE_SEGMENT_HEADER; -#endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */ +typedef struct _ZONE_HEADER { + SINGLE_LIST_ENTRY FreeList; + SINGLE_LIST_ENTRY SegmentList; + ULONG BlockSize; + ULONG TotalSegmentSize; +} ZONE_HEADER, *PZONE_HEADER; -#if (NTDDI_VERSION >= NTDDI_WINXP) -NTKERNELAPI -BOOLEAN -NTAPI -KeAreApcsDisabled(VOID); +/* Executive Functions */ +static __inline PVOID +ExAllocateFromZone( + IN PZONE_HEADER Zone) +{ + if (Zone->FreeList.Next) + Zone->FreeList.Next = Zone->FreeList.Next->Next; + return (PVOID) Zone->FreeList.Next; +} -#endif /* (NTDDI_VERSION >= NTDDI_WINXP) */ +static __inline PVOID +ExFreeToZone( + IN PZONE_HEADER Zone, + IN PVOID Block) +{ + ((PSINGLE_LIST_ENTRY) Block)->Next = Zone->FreeList.Next; + Zone->FreeList.Next = ((PSINGLE_LIST_ENTRY) Block); + return ((PSINGLE_LIST_ENTRY) Block)->Next; +} +/* + * PVOID + * ExInterlockedAllocateFromZone( + * IN PZONE_HEADER Zone, + * IN PKSPIN_LOCK Lock) + */ +#define ExInterlockedAllocateFromZone(Zone, Lock) \ + ((PVOID) ExInterlockedPopEntryList(&Zone->FreeList, Lock)) -#if (NTDDI_VERSION >= NTDDI_WS03) +/* PVOID + * ExInterlockedFreeToZone( + * IN PZONE_HEADER Zone, + * IN PVOID Block, + * IN PKSPIN_LOCK Lock); + */ +#define ExInterlockedFreeToZone(Zone, Block, Lock) \ + ExInterlockedPushEntryList(&(Zone)->FreeList, (PSINGLE_LIST_ENTRY)(Block), Lock) +/* + * BOOLEAN + * ExIsFullZone( + * IN PZONE_HEADER Zone) + */ +#define ExIsFullZone(Zone) \ + ((Zone)->FreeList.Next == (PSINGLE_LIST_ENTRY) NULL) -NTKERNELAPI -BOOLEAN -NTAPI -KeInvalidateAllCaches(VOID); +/* BOOLEAN + * ExIsObjectInFirstZoneSegment( + * IN PZONE_HEADER Zone, + * IN PVOID Object); + */ +#define ExIsObjectInFirstZoneSegment(Zone,Object) \ + ((BOOLEAN)( ((PUCHAR)(Object) >= (PUCHAR)(Zone)->SegmentList.Next) && \ + ((PUCHAR)(Object) < (PUCHAR)(Zone)->SegmentList.Next + \ + (Zone)->TotalSegmentSize)) ) -#endif /* (NTDDI_VERSION >= NTDDI_WS03) */ +#define ExAcquireResourceExclusive ExAcquireResourceExclusiveLite +#define ExAcquireResourceShared ExAcquireResourceSharedLite +#define ExConvertExclusiveToShared ExConvertExclusiveToSharedLite +#define ExDeleteResource ExDeleteResourceLite +#define ExInitializeResource ExInitializeResourceLite +#define ExIsResourceAcquiredExclusive ExIsResourceAcquiredExclusiveLite +#define ExIsResourceAcquiredShared ExIsResourceAcquiredSharedLite +#define ExIsResourceAcquired ExIsResourceAcquiredSharedLite +#define ExReleaseResourceForThread ExReleaseResourceForThreadLite -#if (NTDDI_VERSION >= NTDDI_WS03SP1) +#if (NTDDI_VERSION >= NTDDI_WIN2K) NTKERNELAPI NTSTATUS NTAPI -KeExpandKernelStackAndCallout( - IN PEXPAND_STACK_CALLOUT Callout, - IN PVOID Parameter OPTIONAL, - IN SIZE_T Size); +ExExtendZone( + IN OUT PZONE_HEADER Zone, + IN OUT PVOID Segment, + IN ULONG SegmentSize); NTKERNELAPI -VOID +NTSTATUS NTAPI -KeEnterGuardedRegion(VOID); +ExInitializeZone( + OUT PZONE_HEADER Zone, + IN ULONG BlockSize, + IN OUT PVOID InitialSegment, + IN ULONG InitialSegmentSize); NTKERNELAPI -VOID +NTSTATUS NTAPI -KeLeaveGuardedRegion(VOID); - - -#endif /* (NTDDI_VERSION >= NTDDI_WS03SP1) */ - -#if (NTDDI_VERSION >= NTDDI_VISTA) - +ExInterlockedExtendZone( + IN OUT PZONE_HEADER Zone, + IN OUT PVOID Segment, + IN ULONG SegmentSize, + IN OUT PKSPIN_LOCK Lock); -#if defined(SINGLE_GROUP_LEGACY_API) NTKERNELAPI -ULONG +NTSTATUS NTAPI -KeQueryActiveProcessorCount( - OUT PKAFFINITY ActiveProcessors OPTIONAL); +ExUuidCreate( + OUT UUID *Uuid); NTKERNELAPI -ULONG +DECLSPEC_NORETURN +VOID NTAPI -KeQueryMaximumProcessorCount(VOID); - -#endif /* SINGLE_GROUP_LEGACY_API */ - -#endif /* (NTDDI_VERSION >= NTDDI_VISTA) */ - - -#if (NTDDI_VERSION >= NTDDI_WIN7) +ExRaiseAccessViolation( + VOID); NTKERNELAPI -ULONG +DECLSPEC_NORETURN +VOID NTAPI -KeQueryActiveProcessorCountEx( - IN USHORT GroupNumber); +ExRaiseDatatypeMisalignment( + VOID); -NTKERNELAPI -ULONG -NTAPI -KeQueryMaximumProcessorCountEx( - IN USHORT GroupNumber); +#endif -NTKERNELAPI -USHORT -NTAPI -KeQueryActiveGroupCount(VOID); +#ifdef _X86_ NTKERNELAPI -USHORT -NTAPI -KeQueryMaximumGroupCount(VOID); +INTERLOCKED_RESULT +FASTCALL +Exfi386InterlockedIncrementLong( + IN OUT LONG volatile *Addend); NTKERNELAPI -KAFFINITY -NTAPI -KeQueryGroupAffinity( - IN USHORT GroupNumber); +INTERLOCKED_RESULT +FASTCALL +Exfi386InterlockedDecrementLong( + IN PLONG Addend); NTKERNELAPI ULONG -NTAPI -KeGetCurrentProcessorNumberEx( - OUT PPROCESSOR_NUMBER ProcNumber OPTIONAL); +FASTCALL +Exfi386InterlockedExchangeUlong( + IN PULONG Target, + IN ULONG Value); -NTKERNELAPI -VOID -NTAPI -KeQueryNodeActiveAffinity( - IN USHORT NodeNumber, - OUT PGROUP_AFFINITY Affinity OPTIONAL, - OUT PUSHORT Count OPTIONAL); +#endif /* _X86_ */ -NTKERNELAPI -USHORT -NTAPI -KeQueryNodeMaximumProcessorCount( - IN USHORT NodeNumber); +#ifndef _ARC_DDK_ +#define _ARC_DDK_ +typedef enum _CONFIGURATION_TYPE { + ArcSystem, + CentralProcessor, + FloatingPointProcessor, + PrimaryIcache, + PrimaryDcache, + SecondaryIcache, + SecondaryDcache, + SecondaryCache, + EisaAdapter, + TcAdapter, + ScsiAdapter, + DtiAdapter, + MultiFunctionAdapter, + DiskController, + TapeController, + CdromController, + WormController, + SerialController, + NetworkController, + DisplayController, + ParallelController, + PointerController, + KeyboardController, + AudioController, + OtherController, + DiskPeripheral, + FloppyDiskPeripheral, + TapePeripheral, + ModemPeripheral, + MonitorPeripheral, + PrinterPeripheral, + PointerPeripheral, + KeyboardPeripheral, + TerminalPeripheral, + OtherPeripheral, + LinePeripheral, + NetworkPeripheral, + SystemMemory, + DockingInformation, + RealModeIrqRoutingTable, + RealModePCIEnumeration, + MaximumType +} CONFIGURATION_TYPE, *PCONFIGURATION_TYPE; +#endif /* !_ARC_DDK_ */ -NTKERNELAPI -USHORT -NTAPI -KeQueryHighestNodeNumber(VOID); +typedef struct _CONTROLLER_OBJECT { + CSHORT Type; + CSHORT Size; + PVOID ControllerExtension; + KDEVICE_QUEUE DeviceWaitQueue; + ULONG Spare1; + LARGE_INTEGER Spare2; +} CONTROLLER_OBJECT, *PCONTROLLER_OBJECT; -NTKERNELAPI -USHORT -NTAPI -KeGetCurrentNodeNumber(VOID); +typedef struct _CONFIGURATION_INFORMATION { + ULONG DiskCount; + ULONG FloppyCount; + ULONG CdRomCount; + ULONG TapeCount; + ULONG ScsiPortCount; + ULONG SerialCount; + ULONG ParallelCount; + BOOLEAN AtDiskPrimaryAddressClaimed; + BOOLEAN AtDiskSecondaryAddressClaimed; + ULONG Version; + ULONG MediumChangerCount; +} CONFIGURATION_INFORMATION, *PCONFIGURATION_INFORMATION; -NTKERNELAPI +typedef NTSTATUS -NTAPI -KeQueryLogicalProcessorRelationship( - IN PPROCESSOR_NUMBER ProcessorNumber OPTIONAL, - IN LOGICAL_PROCESSOR_RELATIONSHIP RelationshipType, - OUT PSYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX Information OPTIONAL, - IN OUT PULONG Length); +(NTAPI *PIO_QUERY_DEVICE_ROUTINE)( + IN PVOID Context, + IN PUNICODE_STRING PathName, + IN INTERFACE_TYPE BusType, + IN ULONG BusNumber, + IN PKEY_VALUE_FULL_INFORMATION *BusInformation, + IN CONFIGURATION_TYPE ControllerType, + IN ULONG ControllerNumber, + IN PKEY_VALUE_FULL_INFORMATION *ControllerInformation, + IN CONFIGURATION_TYPE PeripheralType, + IN ULONG PeripheralNumber, + IN PKEY_VALUE_FULL_INFORMATION *PeripheralInformation); -NTKERNELAPI -NTSTATUS -NTAPI -KeSetHardwareCounterConfiguration( - IN PHARDWARE_COUNTER CounterArray, +typedef +VOID +(NTAPI DRIVER_REINITIALIZE)( + IN struct _DRIVER_OBJECT *DriverObject, + IN PVOID Context, IN ULONG Count); -NTKERNELAPI -NTSTATUS -NTAPI -KeQueryHardwareCounterConfiguration( - OUT PHARDWARE_COUNTER CounterArray, - IN ULONG MaximumCount, - OUT PULONG Count); - +typedef DRIVER_REINITIALIZE *PDRIVER_REINITIALIZE; -#endif /* (NTDDI_VERSION >= NTDDI_WIN7) */ - - -/****************************************************************************** - * Memory manager Functions * - ******************************************************************************/ +/** Filesystem runtime library routines **/ #if (NTDDI_VERSION >= NTDDI_WIN2K) NTKERNELAPI -PPHYSICAL_MEMORY_RANGE +BOOLEAN NTAPI -MmGetPhysicalMemoryRanges(VOID); +FsRtlIsTotalDeviceFailure( + IN NTSTATUS Status); +#endif -NTKERNELAPI -PHYSICAL_ADDRESS -NTAPI -MmGetPhysicalAddress( - IN PVOID BaseAddress); +/* Hardware Abstraction Layer Types */ -NTKERNELAPI -BOOLEAN -NTAPI -MmIsNonPagedSystemAddressValid( - IN PVOID VirtualAddress); +typedef VOID +(NTAPI *PciPin2Line)( + IN struct _BUS_HANDLER *BusHandler, + IN struct _BUS_HANDLER *RootHandler, + IN PCI_SLOT_NUMBER SlotNumber, + IN PPCI_COMMON_CONFIG PciData); + +typedef VOID +(NTAPI *PciLine2Pin)( + IN struct _BUS_HANDLER *BusHandler, + IN struct _BUS_HANDLER *RootHandler, + IN PCI_SLOT_NUMBER SlotNumber, + IN PPCI_COMMON_CONFIG PciNewData, + IN PPCI_COMMON_CONFIG PciOldData); -NTKERNELAPI -PVOID -NTAPI -MmAllocateNonCachedMemory( - IN SIZE_T NumberOfBytes); +typedef VOID +(NTAPI *PciReadWriteConfig)( + IN struct _BUS_HANDLER *BusHandler, + IN PCI_SLOT_NUMBER Slot, + IN PVOID Buffer, + IN ULONG Offset, + IN ULONG Length); -NTKERNELAPI -VOID -NTAPI -MmFreeNonCachedMemory( - IN PVOID BaseAddress, - IN SIZE_T NumberOfBytes); +#define PCI_DATA_TAG ' ICP' +#define PCI_DATA_VERSION 1 -NTKERNELAPI -PVOID -NTAPI -MmGetVirtualForPhysical( - IN PHYSICAL_ADDRESS PhysicalAddress); +typedef struct _PCIBUSDATA { + ULONG Tag; + ULONG Version; + PciReadWriteConfig ReadConfig; + PciReadWriteConfig WriteConfig; + PciPin2Line Pin2Line; + PciLine2Pin Line2Pin; + PCI_SLOT_NUMBER ParentSlot; + PVOID Reserved[4]; +} PCIBUSDATA, *PPCIBUSDATA; -NTKERNELAPI -NTSTATUS -NTAPI -MmMapUserAddressesToPage( - IN PVOID BaseAddress, - IN SIZE_T NumberOfBytes, - IN PVOID PageAddress); +/* Hardware Abstraction Layer Functions */ -NTKERNELAPI -PVOID -NTAPI -MmMapVideoDisplay( - IN PHYSICAL_ADDRESS PhysicalAddress, - IN SIZE_T NumberOfBytes, - IN MEMORY_CACHING_TYPE CacheType); +#if !defined(NO_LEGACY_DRIVERS) -NTKERNELAPI -NTSTATUS -NTAPI -MmMapViewInSessionSpace( - IN PVOID Section, - OUT PVOID *MappedBase, - IN OUT PSIZE_T ViewSize); +#if (NTDDI_VERSION >= NTDDI_WIN2K) -NTKERNELAPI +NTHALAPI NTSTATUS NTAPI -MmMapViewInSystemSpace( - IN PVOID Section, - OUT PVOID *MappedBase, - IN OUT PSIZE_T ViewSize); - -NTKERNELAPI -BOOLEAN -NTAPI -MmIsAddressValid( - IN PVOID VirtualAddress); +HalAssignSlotResources( + IN PUNICODE_STRING RegistryPath, + IN PUNICODE_STRING DriverClassName, + IN PDRIVER_OBJECT DriverObject, + IN PDEVICE_OBJECT DeviceObject, + IN INTERFACE_TYPE BusType, + IN ULONG BusNumber, + IN ULONG SlotNumber, + IN OUT PCM_RESOURCE_LIST *AllocatedResources); -NTKERNELAPI -BOOLEAN +NTHALAPI +ULONG NTAPI -MmIsThisAnNtAsSystem(VOID); +HalGetInterruptVector( + IN INTERFACE_TYPE InterfaceType, + IN ULONG BusNumber, + IN ULONG BusInterruptLevel, + IN ULONG BusInterruptVector, + OUT PKIRQL Irql, + OUT PKAFFINITY Affinity); -NTKERNELAPI -VOID +NTHALAPI +ULONG NTAPI -MmLockPagableSectionByHandle( - IN PVOID ImageSectionHandle); +HalSetBusData( + IN BUS_DATA_TYPE BusDataType, + IN ULONG BusNumber, + IN ULONG SlotNumber, + IN PVOID Buffer, + IN ULONG Length); -NTKERNELAPI -NTSTATUS -NTAPI -MmUnmapViewInSessionSpace( - IN PVOID MappedBase); +#endif -NTKERNELAPI -NTSTATUS -NTAPI -MmUnmapViewInSystemSpace( - IN PVOID MappedBase); +#endif /* !defined(NO_LEGACY_DRIVERS) */ -NTKERNELAPI -VOID -NTAPI -MmUnsecureVirtualMemory( - IN HANDLE SecureHandle); +#if (NTDDI_VERSION >= NTDDI_WIN2K) -NTKERNELAPI -NTSTATUS +NTHALAPI +PADAPTER_OBJECT NTAPI -MmRemovePhysicalMemory( - IN PPHYSICAL_ADDRESS StartAddress, - IN OUT PLARGE_INTEGER NumberOfBytes); +HalGetAdapter( + IN PDEVICE_DESCRIPTION DeviceDescription, + IN OUT PULONG NumberOfMapRegisters); -NTKERNELAPI -HANDLE +NTHALAPI +BOOLEAN NTAPI -MmSecureVirtualMemory( - IN PVOID Address, - IN SIZE_T Size, - IN ULONG ProbeMode); +HalMakeBeep( + IN ULONG Frequency); -NTKERNELAPI VOID NTAPI -MmUnmapVideoDisplay( - IN PVOID BaseAddress, - IN SIZE_T NumberOfBytes); - -NTKERNELAPI -NTSTATUS -NTAPI -MmAddPhysicalMemory( - IN PPHYSICAL_ADDRESS StartAddress, - IN OUT PLARGE_INTEGER NumberOfBytes); +HalPutDmaAdapter( + IN PADAPTER_OBJECT DmaAdapter); -NTKERNELAPI -PVOID +NTHALAPI +VOID NTAPI -MmAllocateContiguousMemory( - IN SIZE_T NumberOfBytes, - IN PHYSICAL_ADDRESS HighestAcceptableAddress); +HalAcquireDisplayOwnership( + IN PHAL_RESET_DISPLAY_PARAMETERS ResetDisplayParameters); -NTKERNELAPI -PVOID +NTHALAPI +ULONG NTAPI -MmAllocateContiguousMemorySpecifyCache( - IN SIZE_T NumberOfBytes, - IN PHYSICAL_ADDRESS LowestAcceptableAddress, - IN PHYSICAL_ADDRESS HighestAcceptableAddress, - IN PHYSICAL_ADDRESS BoundaryAddressMultiple OPTIONAL, - IN MEMORY_CACHING_TYPE CacheType); +HalGetBusData( + IN BUS_DATA_TYPE BusDataType, + IN ULONG BusNumber, + IN ULONG SlotNumber, + OUT PVOID Buffer, + IN ULONG Length); -NTKERNELAPI -PVOID +NTHALAPI +ULONG NTAPI -MmAllocateContiguousMemorySpecifyCacheNode( - IN SIZE_T NumberOfBytes, - IN PHYSICAL_ADDRESS LowestAcceptableAddress, - IN PHYSICAL_ADDRESS HighestAcceptableAddress, - IN PHYSICAL_ADDRESS BoundaryAddressMultiple OPTIONAL, - IN MEMORY_CACHING_TYPE CacheType, - IN NODE_REQUIREMENT PreferredNode); +HalGetBusDataByOffset( + IN BUS_DATA_TYPE BusDataType, + IN ULONG BusNumber, + IN ULONG SlotNumber, + OUT PVOID Buffer, + IN ULONG Offset, + IN ULONG Length); -NTKERNELAPI -VOID +NTHALAPI +ULONG NTAPI -MmFreeContiguousMemory( - IN PVOID BaseAddress); +HalSetBusDataByOffset( + IN BUS_DATA_TYPE BusDataType, + IN ULONG BusNumber, + IN ULONG SlotNumber, + IN PVOID Buffer, + IN ULONG Offset, + IN ULONG Length); -NTKERNELAPI -VOID +NTHALAPI +BOOLEAN NTAPI -MmFreeContiguousMemorySpecifyCache( - IN PVOID BaseAddress, - IN SIZE_T NumberOfBytes, - IN MEMORY_CACHING_TYPE CacheType); - +HalTranslateBusAddress( + IN INTERFACE_TYPE InterfaceType, + IN ULONG BusNumber, + IN PHYSICAL_ADDRESS BusAddress, + IN OUT PULONG AddressSpace, + OUT PPHYSICAL_ADDRESS TranslatedAddress); -#endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */ +#endif #if (NTDDI_VERSION >= NTDDI_WINXP) - NTKERNELAPI -NTSTATUS -NTAPI -MmAdvanceMdl( - IN OUT PMDL Mdl, - IN ULONG NumberOfBytes); +VOID +FASTCALL +HalExamineMBR( + IN PDEVICE_OBJECT DeviceObject, + IN ULONG SectorSize, + IN ULONG MBRTypeIdentifier, + OUT PVOID *Buffer); +#endif -NTKERNELAPI -PVOID -NTAPI -MmAllocateMappingAddress( - IN SIZE_T NumberOfBytes, - IN ULONG PoolTag); +#if defined(USE_DMA_MACROS) && !defined(_NTHAL_) && (defined(_NTDDK_) || defined(_NTDRIVER_)) || defined(_WDM_INCLUDED_) +// nothing here +#else -NTKERNELAPI +#if (NTDDI_VERSION >= NTDDI_WIN2K) +//DECLSPEC_DEPRECATED_DDK +NTHALAPI VOID NTAPI -MmFreeMappingAddress( - IN PVOID BaseAddress, - IN ULONG PoolTag); +IoFreeAdapterChannel( + IN PADAPTER_OBJECT AdapterObject); -NTKERNELAPI -NTSTATUS +//DECLSPEC_DEPRECATED_DDK +NTHALAPI +BOOLEAN NTAPI -MmIsVerifierEnabled( - OUT PULONG VerifierFlags); +IoFlushAdapterBuffers( + IN PADAPTER_OBJECT AdapterObject, + IN PMDL Mdl, + IN PVOID MapRegisterBase, + IN PVOID CurrentVa, + IN ULONG Length, + IN BOOLEAN WriteToDevice); -NTKERNELAPI -PVOID +//DECLSPEC_DEPRECATED_DDK +NTHALAPI +VOID NTAPI -MmMapLockedPagesWithReservedMapping( - IN PVOID MappingAddress, - IN ULONG PoolTag, - IN PMDL MemoryDescriptorList, - IN MEMORY_CACHING_TYPE CacheType); +IoFreeMapRegisters( + IN PADAPTER_OBJECT AdapterObject, + IN PVOID MapRegisterBase, + IN ULONG NumberOfMapRegisters); -NTKERNELAPI -NTSTATUS +//DECLSPEC_DEPRECATED_DDK +NTHALAPI +PVOID NTAPI -MmProtectMdlSystemAddress( - IN PMDL MemoryDescriptorList, - IN ULONG NewProtect); +HalAllocateCommonBuffer( + IN PADAPTER_OBJECT AdapterObject, + IN ULONG Length, + OUT PPHYSICAL_ADDRESS LogicalAddress, + IN BOOLEAN CacheEnabled); -NTKERNELAPI +//DECLSPEC_DEPRECATED_DDK +NTHALAPI VOID NTAPI -MmUnmapReservedMapping( - IN PVOID BaseAddress, - IN ULONG PoolTag, - IN PMDL MemoryDescriptorList); +HalFreeCommonBuffer( + IN PADAPTER_OBJECT AdapterObject, + IN ULONG Length, + IN PHYSICAL_ADDRESS LogicalAddress, + IN PVOID VirtualAddress, + IN BOOLEAN CacheEnabled); -NTKERNELAPI -NTSTATUS +//DECLSPEC_DEPRECATED_DDK +NTHALAPI +ULONG NTAPI -MmAddVerifierThunks( - IN PVOID ThunkBuffer, - IN ULONG ThunkBufferSize); - -#endif /* (NTDDI_VERSION >= NTDDI_WINXP) */ +HalReadDmaCounter( + IN PADAPTER_OBJECT AdapterObject); -#if (NTDDI_VERSION >= NTDDI_WS03) -NTKERNELAPI +NTHALAPI NTSTATUS NTAPI -MmCreateMirror(VOID); -#endif - +HalAllocateAdapterChannel( + IN PADAPTER_OBJECT AdapterObject, + IN PWAIT_CONTEXT_BLOCK Wcb, + IN ULONG NumberOfMapRegisters, + IN PDRIVER_CONTROL ExecutionRoutine); -#if (NTDDI_VERSION >= NTDDI_VISTA) -NTSTATUS -NTAPI -MmRotatePhysicalView( - IN PVOID VirtualAddress, - IN OUT PSIZE_T NumberOfBytes, - IN PMDLX NewMdl OPTIONAL, - IN MM_ROTATE_DIRECTION Direction, - IN PMM_ROTATE_COPY_CALLBACK_FUNCTION CopyFunction, - IN PVOID Context OPTIONAL); +#endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */ -#endif +#endif /* defined(USE_DMA_MACROS) && !defined(_NTHAL_) && (defined(_NTDDK_) || defined(_NTDRIVER_)) || defined(_WDM_INCLUDED_) */ -/****************************************************************************** - * Process Manager Functions * - ******************************************************************************/ +/* I/O Manager Functions */ -NTSYSCALLAPI -NTSTATUS -NTAPI -NtOpenProcess( - OUT PHANDLE ProcessHandle, - IN ACCESS_MASK DesiredAccess, - IN POBJECT_ATTRIBUTES ObjectAttributes, - IN PCLIENT_ID ClientId OPTIONAL); +/* + * VOID IoAssignArcName( + * IN PUNICODE_STRING ArcName, + * IN PUNICODE_STRING DeviceName); + */ +#define IoAssignArcName(_ArcName, _DeviceName) ( \ + IoCreateSymbolicLink((_ArcName), (_DeviceName))) -NTSYSCALLAPI -NTSTATUS -NTAPI -NtQueryInformationProcess( - IN HANDLE ProcessHandle, - IN PROCESSINFOCLASS ProcessInformationClass, - OUT PVOID ProcessInformation OPTIONAL, - IN ULONG ProcessInformationLength, - OUT PULONG ReturnLength OPTIONAL); +/* + * VOID + * IoDeassignArcName( + * IN PUNICODE_STRING ArcName) + */ +#define IoDeassignArcName IoDeleteSymbolicLink #if (NTDDI_VERSION >= NTDDI_WIN2K) - +#if !(defined(USE_DMA_MACROS) && (defined(_NTDDK_) || defined(_NTDRIVER_)) || defined(_WDM_INCLUDED_)) NTKERNELAPI NTSTATUS NTAPI -PsSetCreateProcessNotifyRoutine( - IN PCREATE_PROCESS_NOTIFY_ROUTINE NotifyRoutine, - IN BOOLEAN Remove); +IoAllocateAdapterChannel( + IN PADAPTER_OBJECT AdapterObject, + IN PDEVICE_OBJECT DeviceObject, + IN ULONG NumberOfMapRegisters, + IN PDRIVER_CONTROL ExecutionRoutine, + IN PVOID Context); +#endif -NTKERNELAPI -NTSTATUS +//DECLSPEC_DEPRECATED_DDK +NTHALAPI +PHYSICAL_ADDRESS NTAPI -PsSetCreateThreadNotifyRoutine( - IN PCREATE_THREAD_NOTIFY_ROUTINE NotifyRoutine); +IoMapTransfer( + IN PADAPTER_OBJECT AdapterObject, + IN PMDL Mdl, + IN PVOID MapRegisterBase, + IN PVOID CurrentVa, + IN OUT PULONG Length, + IN BOOLEAN WriteToDevice); NTKERNELAPI -NTSTATUS +VOID NTAPI -PsSetLoadImageNotifyRoutine( - IN PLOAD_IMAGE_NOTIFY_ROUTINE NotifyRoutine); +IoAllocateController( + IN PCONTROLLER_OBJECT ControllerObject, + IN PDEVICE_OBJECT DeviceObject, + IN PDRIVER_CONTROL ExecutionRoutine, + IN PVOID Context OPTIONAL); NTKERNELAPI -HANDLE +PCONTROLLER_OBJECT NTAPI -PsGetCurrentProcessId(VOID); +IoCreateController( + IN ULONG Size); NTKERNELAPI -HANDLE +VOID NTAPI -PsGetCurrentThreadId(VOID); +IoDeleteController( + IN PCONTROLLER_OBJECT ControllerObject); NTKERNELAPI -BOOLEAN +VOID NTAPI -PsGetVersion( - OUT PULONG MajorVersion OPTIONAL, - OUT PULONG MinorVersion OPTIONAL, - OUT PULONG BuildNumber OPTIONAL, - OUT PUNICODE_STRING CSDVersion OPTIONAL); - -#endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */ - -#if (NTDDI_VERSION >= NTDDI_WINXP) +IoFreeController( + IN PCONTROLLER_OBJECT ControllerObject); NTKERNELAPI -HANDLE +PCONFIGURATION_INFORMATION NTAPI -PsGetProcessId( - IN PEPROCESS Process); +IoGetConfigurationInformation( + VOID); NTKERNELAPI -HANDLE +PDEVICE_OBJECT NTAPI -PsGetThreadId( +IoGetDeviceToVerify( IN PETHREAD Thread); NTKERNELAPI -NTSTATUS +VOID NTAPI -PsRemoveCreateThreadNotifyRoutine( - IN PCREATE_THREAD_NOTIFY_ROUTINE NotifyRoutine); +IoCancelFileOpen( + IN PDEVICE_OBJECT DeviceObject, + IN PFILE_OBJECT FileObject); NTKERNELAPI -NTSTATUS +PGENERIC_MAPPING NTAPI -PsRemoveLoadImageNotifyRoutine( - IN PLOAD_IMAGE_NOTIFY_ROUTINE NotifyRoutine); +IoGetFileObjectGenericMapping( + VOID); NTKERNELAPI -LONGLONG +PIRP NTAPI -PsGetProcessCreateTimeQuadPart( - IN PEPROCESS Process); - -#endif /* (NTDDI_VERSION >= NTDDI_WINXP) */ +IoMakeAssociatedIrp( + IN PIRP Irp, + IN CCHAR StackSize); -#if (NTDDI_VERSION >= NTDDI_WS03) NTKERNELAPI -HANDLE +NTSTATUS NTAPI -PsGetThreadProcessId( - IN PETHREAD Thread); -#endif /* (NTDDI_VERSION >= NTDDI_WS03) */ - -#if (NTDDI_VERSION >= NTDDI_VISTA) +IoQueryDeviceDescription( + IN PINTERFACE_TYPE BusType OPTIONAL, + IN PULONG BusNumber OPTIONAL, + IN PCONFIGURATION_TYPE ControllerType OPTIONAL, + IN PULONG ControllerNumber OPTIONAL, + IN PCONFIGURATION_TYPE PeripheralType OPTIONAL, + IN PULONG PeripheralNumber OPTIONAL, + IN PIO_QUERY_DEVICE_ROUTINE CalloutRoutine, + IN OUT PVOID Context OPTIONAL); NTKERNELAPI -BOOLEAN +VOID NTAPI -PsSetCurrentThreadPrefetching( - IN BOOLEAN Prefetching); +IoRaiseHardError( + IN PIRP Irp, + IN PVPB Vpb OPTIONAL, + IN PDEVICE_OBJECT RealDeviceObject); NTKERNELAPI BOOLEAN NTAPI -PsIsCurrentThreadPrefetching(VOID); - -#endif /* (NTDDI_VERSION >= NTDDI_VISTA) */ +IoRaiseInformationalHardError( + IN NTSTATUS ErrorStatus, + IN PUNICODE_STRING String OPTIONAL, + IN PKTHREAD Thread OPTIONAL); -#if (NTDDI_VERSION >= NTDDI_VISTASP1) NTKERNELAPI -NTSTATUS -NTAPI -PsSetCreateProcessNotifyRoutineEx( - IN PCREATE_PROCESS_NOTIFY_ROUTINE_EX NotifyRoutine, - IN BOOLEAN Remove); -#endif /* (NTDDI_VERSION >= NTDDI_VISTASP1) */ -/****************************************************************************** - * Runtime Library Functions * - ******************************************************************************/ - -#if (NTDDI_VERSION >= NTDDI_WIN2K) - - - -#ifndef RTL_USE_AVL_TABLES - -NTSYSAPI VOID NTAPI -RtlInitializeGenericTable( - OUT PRTL_GENERIC_TABLE Table, - IN PRTL_GENERIC_COMPARE_ROUTINE CompareRoutine, - IN PRTL_GENERIC_ALLOCATE_ROUTINE AllocateRoutine, - IN PRTL_GENERIC_FREE_ROUTINE FreeRoutine, - IN PVOID TableContext OPTIONAL); - -NTSYSAPI -PVOID -NTAPI -RtlInsertElementGenericTable( - IN PRTL_GENERIC_TABLE Table, - IN PVOID Buffer, - IN CLONG BufferSize, - OUT PBOOLEAN NewElement OPTIONAL); - -NTSYSAPI -PVOID -NTAPI -RtlInsertElementGenericTableFull( - IN PRTL_GENERIC_TABLE Table, - IN PVOID Buffer, - IN CLONG BufferSize, - OUT PBOOLEAN NewElement OPTIONAL, - IN PVOID NodeOrParent, - IN TABLE_SEARCH_RESULT SearchResult); - -NTSYSAPI -BOOLEAN -NTAPI -RtlDeleteElementGenericTable( - IN PRTL_GENERIC_TABLE Table, - IN PVOID Buffer); +IoRegisterBootDriverReinitialization( + IN PDRIVER_OBJECT DriverObject, + IN PDRIVER_REINITIALIZE DriverReinitializationRoutine, + IN PVOID Context OPTIONAL); -NTSYSAPI -PVOID +NTKERNELAPI +VOID NTAPI -RtlLookupElementGenericTable( - IN PRTL_GENERIC_TABLE Table, - IN PVOID Buffer); +IoRegisterDriverReinitialization( + IN PDRIVER_OBJECT DriverObject, + IN PDRIVER_REINITIALIZE DriverReinitializationRoutine, + IN PVOID Context OPTIONAL); -NTSYSAPI -PVOID +NTKERNELAPI +NTSTATUS NTAPI -RtlLookupElementGenericTableFull( - IN PRTL_GENERIC_TABLE Table, - IN PVOID Buffer, - OUT PVOID *NodeOrParent, - OUT TABLE_SEARCH_RESULT *SearchResult); +IoAttachDeviceByPointer( + IN PDEVICE_OBJECT SourceDevice, + IN PDEVICE_OBJECT TargetDevice); -NTSYSAPI -PVOID +NTKERNELAPI +NTSTATUS NTAPI -RtlEnumerateGenericTable( - IN PRTL_GENERIC_TABLE Table, - IN BOOLEAN Restart); +IoReportDetectedDevice( + IN PDRIVER_OBJECT DriverObject, + IN INTERFACE_TYPE LegacyBusType, + IN ULONG BusNumber, + IN ULONG SlotNumber, + IN PCM_RESOURCE_LIST ResourceList OPTIONAL, + IN PIO_RESOURCE_REQUIREMENTS_LIST ResourceRequirements OPTIONAL, + IN BOOLEAN ResourceAssigned, + IN OUT PDEVICE_OBJECT *DeviceObject); -NTSYSAPI -PVOID +NTKERNELAPI +NTSTATUS NTAPI -RtlEnumerateGenericTableWithoutSplaying( - IN PRTL_GENERIC_TABLE Table, - IN OUT PVOID *RestartKey); +IoReportResourceForDetection( + IN PDRIVER_OBJECT DriverObject, + IN PCM_RESOURCE_LIST DriverList OPTIONAL, + IN ULONG DriverListSize OPTIONAL, + IN PDEVICE_OBJECT DeviceObject OPTIONAL, + IN PCM_RESOURCE_LIST DeviceList OPTIONAL, + IN ULONG DeviceListSize OPTIONAL, + OUT PBOOLEAN ConflictDetected); -NTSYSAPI -PVOID +NTKERNELAPI +NTSTATUS NTAPI -RtlGetElementGenericTable( - IN PRTL_GENERIC_TABLE Table, - IN ULONG I); +IoReportResourceUsage( + IN PUNICODE_STRING DriverClassName OPTIONAL, + IN PDRIVER_OBJECT DriverObject, + IN PCM_RESOURCE_LIST DriverList OPTIONAL, + IN ULONG DriverListSize OPTIONAL, + IN PDEVICE_OBJECT DeviceObject, + IN PCM_RESOURCE_LIST DeviceList OPTIONAL, + IN ULONG DeviceListSize OPTIONAL, + IN BOOLEAN OverrideConflict, + OUT PBOOLEAN ConflictDetected); -NTSYSAPI -ULONG +NTKERNELAPI +VOID NTAPI -RtlNumberGenericTableElements( - IN PRTL_GENERIC_TABLE Table); +IoSetHardErrorOrVerifyDevice( + IN PIRP Irp, + IN PDEVICE_OBJECT DeviceObject); -NTSYSAPI -BOOLEAN +NTKERNELAPI +NTSTATUS NTAPI -RtlIsGenericTableEmpty( - IN PRTL_GENERIC_TABLE Table); +IoAssignResources( + IN PUNICODE_STRING RegistryPath, + IN PUNICODE_STRING DriverClassName OPTIONAL, + IN PDRIVER_OBJECT DriverObject, + IN PDEVICE_OBJECT DeviceObject OPTIONAL, + IN PIO_RESOURCE_REQUIREMENTS_LIST RequestedResources OPTIONAL, + IN OUT PCM_RESOURCE_LIST *AllocatedResources); -#endif /* !RTL_USE_AVL_TABLES */ +#endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */ -#define RTL_STACK_WALKING_MODE_FRAMES_TO_SKIP_SHIFT 8 +#if (NTDDI_VERSION >= NTDDI_WINXP) -NTSYSAPI -PRTL_SPLAY_LINKS +NTKERNELAPI +NTSTATUS NTAPI -RtlSplay( - IN OUT PRTL_SPLAY_LINKS Links); +IoCreateDisk( + IN PDEVICE_OBJECT DeviceObject, + IN struct _CREATE_DISK* Disk OPTIONAL); -NTSYSAPI -PRTL_SPLAY_LINKS +NTKERNELAPI +NTSTATUS NTAPI -RtlDelete( - IN PRTL_SPLAY_LINKS Links); +IoReadDiskSignature( + IN PDEVICE_OBJECT DeviceObject, + IN ULONG BytesPerSector, + OUT PDISK_SIGNATURE Signature); -NTSYSAPI -VOID -NTAPI -RtlDeleteNoSplay( - IN PRTL_SPLAY_LINKS Links, - IN OUT PRTL_SPLAY_LINKS *Root); +NTKERNELAPI +NTSTATUS +FASTCALL +IoReadPartitionTable( + IN PDEVICE_OBJECT DeviceObject, + IN ULONG SectorSize, + IN BOOLEAN ReturnRecognizedPartitions, + OUT struct _DRIVE_LAYOUT_INFORMATION **PartitionBuffer); -NTSYSAPI -PRTL_SPLAY_LINKS +NTKERNELAPI +NTSTATUS NTAPI -RtlSubtreeSuccessor( - IN PRTL_SPLAY_LINKS Links); +IoReadPartitionTableEx( + IN PDEVICE_OBJECT DeviceObject, + IN struct _DRIVE_LAYOUT_INFORMATION_EX **PartitionBuffer); -NTSYSAPI -PRTL_SPLAY_LINKS -NTAPI -RtlSubtreePredecessor( - IN PRTL_SPLAY_LINKS Links); +NTKERNELAPI +NTSTATUS +FASTCALL +IoSetPartitionInformation( + IN PDEVICE_OBJECT DeviceObject, + IN ULONG SectorSize, + IN ULONG PartitionNumber, + IN ULONG PartitionType); -NTSYSAPI -PRTL_SPLAY_LINKS +NTKERNELAPI +NTSTATUS NTAPI -RtlRealSuccessor( - IN PRTL_SPLAY_LINKS Links); +IoSetPartitionInformationEx( + IN PDEVICE_OBJECT DeviceObject, + IN ULONG PartitionNumber, + IN struct _SET_PARTITION_INFORMATION_EX *PartitionInfo); -NTSYSAPI -PRTL_SPLAY_LINKS +NTKERNELAPI +NTSTATUS NTAPI -RtlRealPredecessor( - IN PRTL_SPLAY_LINKS Links); +IoSetSystemPartition( + IN PUNICODE_STRING VolumeNameString); -NTSYSAPI +NTKERNELAPI BOOLEAN NTAPI -RtlPrefixUnicodeString( - IN PCUNICODE_STRING String1, - IN PCUNICODE_STRING String2, - IN BOOLEAN CaseInSensitive); - -NTSYSAPI -VOID -NTAPI -RtlUpperString( - IN OUT PSTRING DestinationString, - IN const PSTRING SourceString); +IoSetThreadHardErrorMode( + IN BOOLEAN EnableHardErrors); -NTSYSAPI +NTKERNELAPI NTSTATUS NTAPI -RtlUpcaseUnicodeString( - IN OUT PUNICODE_STRING DestinationString, - IN PCUNICODE_STRING SourceString, - IN BOOLEAN AllocateDestinationString); - -NTSYSAPI -VOID -NTAPI -RtlMapGenericMask( - IN OUT PACCESS_MASK AccessMask, - IN PGENERIC_MAPPING GenericMapping); +IoVerifyPartitionTable( + IN PDEVICE_OBJECT DeviceObject, + IN BOOLEAN FixErrors); -NTSYSAPI +NTKERNELAPI NTSTATUS NTAPI -RtlVolumeDeviceToDosName( +IoVolumeDeviceToDosName( IN PVOID VolumeDeviceObject, OUT PUNICODE_STRING DosName); -NTSYSAPI +NTKERNELAPI NTSTATUS -NTAPI -RtlGetVersion( - IN OUT PRTL_OSVERSIONINFOW lpVersionInformation); +FASTCALL +IoWritePartitionTable( + IN PDEVICE_OBJECT DeviceObject, + IN ULONG SectorSize, + IN ULONG SectorsPerTrack, + IN ULONG NumberOfHeads, + IN struct _DRIVE_LAYOUT_INFORMATION *PartitionBuffer); -NTSYSAPI +NTKERNELAPI NTSTATUS NTAPI -RtlVerifyVersionInfo( - IN PRTL_OSVERSIONINFOEXW VersionInfo, - IN ULONG TypeMask, - IN ULONGLONG ConditionMask); +IoWritePartitionTableEx( + IN PDEVICE_OBJECT DeviceObject, + IN struct _DRIVE_LAYOUT_INFORMATION_EX *DriveLayout); -NTSYSAPI -LONG -NTAPI -RtlCompareString( - IN const PSTRING String1, - IN const PSTRING String2, - IN BOOLEAN CaseInSensitive); +#endif /* (NTDDI_VERSION >= NTDDI_WINXP) */ -NTSYSAPI -VOID -NTAPI -RtlCopyString( - OUT PSTRING DestinationString, - IN const PSTRING SourceString OPTIONAL); +/** Kernel debugger routines **/ NTSYSAPI -BOOLEAN +ULONG NTAPI -RtlEqualString( - IN const PSTRING String1, - IN const PSTRING String2, - IN BOOLEAN CaseInSensitive); +DbgPrompt( + IN PCCH Prompt, + OUT PCH Response, + IN ULONG MaximumResponseLength); -NTSYSAPI -NTSTATUS -NTAPI -RtlCharToInteger( - IN PCSZ String, - IN ULONG Base OPTIONAL, - OUT PULONG Value); +/* Kernel Functions */ -NTSYSAPI -CHAR -NTAPI -RtlUpperChar( - IN CHAR Character); +#if (NTDDI_VERSION >= NTDDI_WIN2K) -NTSYSAPI -ULONG +NTKERNELAPI +DECLSPEC_NORETURN +VOID NTAPI -RtlWalkFrameChain( - OUT PVOID *Callers, - IN ULONG Count, - IN ULONG Flags); +KeBugCheck( + IN ULONG BugCheckCode); +NTKERNELAPI +LONG +NTAPI +KePulseEvent( + IN OUT PRKEVENT Event, + IN KPRIORITY Increment, + IN BOOLEAN Wait); +NTKERNELAPI +LONG +NTAPI +KeSetBasePriorityThread( + IN OUT PRKTHREAD Thread, + IN LONG Increment); -#endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */ +#endif +/* Memory Manager Types */ -#if (NTDDI_VERSION >= NTDDI_WINXP) +typedef struct _PHYSICAL_MEMORY_RANGE { + PHYSICAL_ADDRESS BaseAddress; + LARGE_INTEGER NumberOfBytes; +} PHYSICAL_MEMORY_RANGE, *PPHYSICAL_MEMORY_RANGE; +/* Memory Manager Functions */ -NTSYSAPI -VOID -NTAPI -RtlInitializeGenericTableAvl( - OUT PRTL_AVL_TABLE Table, - IN PRTL_AVL_COMPARE_ROUTINE CompareRoutine, - IN PRTL_AVL_ALLOCATE_ROUTINE AllocateRoutine, - IN PRTL_AVL_FREE_ROUTINE FreeRoutine, - IN PVOID TableContext OPTIONAL); +#if (NTDDI_VERSION >= NTDDI_WIN2K) -NTSYSAPI -PVOID +NTKERNELAPI +PPHYSICAL_MEMORY_RANGE NTAPI -RtlInsertElementGenericTableAvl( - IN PRTL_AVL_TABLE Table, - IN PVOID Buffer, - IN CLONG BufferSize, - OUT PBOOLEAN NewElement OPTIONAL); +MmGetPhysicalMemoryRanges( + VOID); -NTSYSAPI -PVOID +NTKERNELAPI +PHYSICAL_ADDRESS NTAPI -RtlInsertElementGenericTableFullAvl( - IN PRTL_AVL_TABLE Table, - IN PVOID Buffer, - IN CLONG BufferSize, - OUT PBOOLEAN NewElement OPTIONAL, - IN PVOID NodeOrParent, - IN TABLE_SEARCH_RESULT SearchResult); +MmGetPhysicalAddress( + IN PVOID BaseAddress); -NTSYSAPI +NTKERNELAPI BOOLEAN NTAPI -RtlDeleteElementGenericTableAvl( - IN PRTL_AVL_TABLE Table, - IN PVOID Buffer); +MmIsNonPagedSystemAddressValid( + IN PVOID VirtualAddress); -NTSYSAPI +NTKERNELAPI PVOID NTAPI -RtlLookupElementGenericTableAvl( - IN PRTL_AVL_TABLE Table, - IN PVOID Buffer); +MmAllocateNonCachedMemory( + IN SIZE_T NumberOfBytes); -NTSYSAPI -PVOID +NTKERNELAPI +VOID NTAPI -RtlLookupElementGenericTableFullAvl( - IN PRTL_AVL_TABLE Table, - IN PVOID Buffer, - OUT PVOID *NodeOrParent, - OUT TABLE_SEARCH_RESULT *SearchResult); +MmFreeNonCachedMemory( + IN PVOID BaseAddress, + IN SIZE_T NumberOfBytes); -NTSYSAPI +NTKERNELAPI PVOID NTAPI -RtlEnumerateGenericTableAvl( - IN PRTL_AVL_TABLE Table, - IN BOOLEAN Restart); +MmGetVirtualForPhysical( + IN PHYSICAL_ADDRESS PhysicalAddress); -NTSYSAPI -PVOID +NTKERNELAPI +NTSTATUS NTAPI -RtlEnumerateGenericTableWithoutSplayingAvl( - IN PRTL_AVL_TABLE Table, - IN OUT PVOID *RestartKey); +MmMapUserAddressesToPage( + IN PVOID BaseAddress, + IN SIZE_T NumberOfBytes, + IN PVOID PageAddress); -NTSYSAPI +NTKERNELAPI PVOID NTAPI -RtlLookupFirstMatchingElementGenericTableAvl( - IN PRTL_AVL_TABLE Table, - IN PVOID Buffer, - OUT PVOID *RestartKey); +MmMapVideoDisplay( + IN PHYSICAL_ADDRESS PhysicalAddress, + IN SIZE_T NumberOfBytes, + IN MEMORY_CACHING_TYPE CacheType); -NTSYSAPI -PVOID +NTKERNELAPI +NTSTATUS NTAPI -RtlEnumerateGenericTableLikeADirectory( - IN PRTL_AVL_TABLE Table, - IN PRTL_AVL_MATCH_FUNCTION MatchFunction OPTIONAL, - IN PVOID MatchData OPTIONAL, - IN ULONG NextFlag, - IN OUT PVOID *RestartKey, - IN OUT PULONG DeleteCount, - IN PVOID Buffer); +MmMapViewInSessionSpace( + IN PVOID Section, + OUT PVOID *MappedBase, + IN OUT PSIZE_T ViewSize); -NTSYSAPI -PVOID +NTKERNELAPI +NTSTATUS NTAPI -RtlGetElementGenericTableAvl( - IN PRTL_AVL_TABLE Table, - IN ULONG I); +MmMapViewInSystemSpace( + IN PVOID Section, + OUT PVOID *MappedBase, + IN OUT PSIZE_T ViewSize); -NTSYSAPI -ULONG +NTKERNELAPI +BOOLEAN NTAPI -RtlNumberGenericTableElementsAvl( - IN PRTL_AVL_TABLE Table); +MmIsAddressValid( + IN PVOID VirtualAddress); -NTSYSAPI +NTKERNELAPI BOOLEAN NTAPI -RtlIsGenericTableEmptyAvl( - IN PRTL_AVL_TABLE Table); - - - -#endif /* (NTDDI_VERSION >= NTDDI_WINXP) */ - -#if (NTDDI_VERSION >= NTDDI_VISTA) - +MmIsThisAnNtAsSystem( + VOID); -NTSYSAPI +NTKERNELAPI VOID NTAPI -RtlRunOnceInitialize( - OUT PRTL_RUN_ONCE RunOnce); +MmLockPagableSectionByHandle( + IN PVOID ImageSectionHandle); -NTSYSAPI +NTKERNELAPI NTSTATUS NTAPI -RtlRunOnceExecuteOnce( - IN OUT PRTL_RUN_ONCE RunOnce, - IN PRTL_RUN_ONCE_INIT_FN InitFn, - IN OUT PVOID Parameter OPTIONAL, - OUT PVOID *Context OPTIONAL); +MmUnmapViewInSessionSpace( + IN PVOID MappedBase); -NTSYSAPI +NTKERNELAPI NTSTATUS NTAPI -RtlRunOnceBeginInitialize( - IN OUT PRTL_RUN_ONCE RunOnce, - IN ULONG Flags, - OUT PVOID *Context OPTIONAL); +MmUnmapViewInSystemSpace( + IN PVOID MappedBase); -NTSYSAPI -NTSTATUS +NTKERNELAPI +VOID NTAPI -RtlRunOnceComplete( - IN OUT PRTL_RUN_ONCE RunOnce, - IN ULONG Flags, - IN PVOID Context OPTIONAL); +MmUnsecureVirtualMemory( + IN HANDLE SecureHandle); -NTSYSAPI -BOOLEAN +NTKERNELAPI +NTSTATUS NTAPI -RtlGetProductInfo( - IN ULONG OSMajorVersion, - IN ULONG OSMinorVersion, - IN ULONG SpMajorVersion, - IN ULONG SpMinorVersion, - OUT PULONG ReturnedProductType); - +MmRemovePhysicalMemory( + IN PPHYSICAL_ADDRESS StartAddress, + IN OUT PLARGE_INTEGER NumberOfBytes); +NTKERNELAPI +HANDLE +NTAPI +MmSecureVirtualMemory( + IN PVOID Address, + IN SIZE_T Size, + IN ULONG ProbeMode); -#endif /* (NTDDI_VERSION >= NTDDI_VISTA) */ +NTKERNELAPI +VOID +NTAPI +MmUnmapVideoDisplay( + IN PVOID BaseAddress, + IN SIZE_T NumberOfBytes); -#if (NTDDI_VERSION >= NTDDI_WIN7) +#endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */ +/* NtXxx Functions */ -NTSYSAPI -BOOLEAN +NTSYSCALLAPI +NTSTATUS NTAPI -RtlCreateHashTable( - IN OUT PRTL_DYNAMIC_HASH_TABLE *HashTable OPTIONAL, - IN ULONG Shift, - IN ULONG Flags); +NtOpenProcess( + OUT PHANDLE ProcessHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes, + IN PCLIENT_ID ClientId OPTIONAL); -NTSYSAPI -VOID +NTSYSCALLAPI +NTSTATUS NTAPI -RtlDeleteHashTable( - IN PRTL_DYNAMIC_HASH_TABLE HashTable); +NtQueryInformationProcess( + IN HANDLE ProcessHandle, + IN PROCESSINFOCLASS ProcessInformationClass, + OUT PVOID ProcessInformation OPTIONAL, + IN ULONG ProcessInformationLength, + OUT PULONG ReturnLength OPTIONAL); -NTSYSAPI -BOOLEAN -NTAPI -RtlInsertEntryHashTable( - IN PRTL_DYNAMIC_HASH_TABLE HashTable, - IN PRTL_DYNAMIC_HASH_TABLE_ENTRY Entry, - IN ULONG_PTR Signature, - IN OUT PRTL_DYNAMIC_HASH_TABLE_CONTEXT Context OPTIONAL); +/** Process manager types **/ -NTSYSAPI -BOOLEAN -NTAPI -RtlRemoveEntryHashTable( - IN PRTL_DYNAMIC_HASH_TABLE HashTable, - IN PRTL_DYNAMIC_HASH_TABLE_ENTRY Entry, - IN OUT PRTL_DYNAMIC_HASH_TABLE_CONTEXT Context OPTIONAL); +typedef VOID +(NTAPI *PCREATE_PROCESS_NOTIFY_ROUTINE)( + IN HANDLE ParentId, + IN HANDLE ProcessId, + IN BOOLEAN Create); -NTSYSAPI -PRTL_DYNAMIC_HASH_TABLE_ENTRY -NTAPI -RtlLookupEntryHashTable( - IN PRTL_DYNAMIC_HASH_TABLE HashTable, - IN ULONG_PTR Signature, - OUT PRTL_DYNAMIC_HASH_TABLE_CONTEXT Context OPTIONAL); +typedef VOID +(NTAPI *PCREATE_THREAD_NOTIFY_ROUTINE)( + IN HANDLE ProcessId, + IN HANDLE ThreadId, + IN BOOLEAN Create); -NTSYSAPI -PRTL_DYNAMIC_HASH_TABLE_ENTRY -NTAPI -RtlGetNextEntryHashTable( - IN PRTL_DYNAMIC_HASH_TABLE HashTable, - IN PRTL_DYNAMIC_HASH_TABLE_CONTEXT Context); +typedef VOID +(NTAPI *PLOAD_IMAGE_NOTIFY_ROUTINE)( + IN PUNICODE_STRING FullImageName, + IN HANDLE ProcessId, + IN PIMAGE_INFO ImageInfo); -NTSYSAPI -BOOLEAN -NTAPI -RtlInitEnumerationHashTable( - IN PRTL_DYNAMIC_HASH_TABLE HashTable, - OUT PRTL_DYNAMIC_HASH_TABLE_ENUMERATOR Enumerator); +/** Process manager routines **/ -NTSYSAPI -PRTL_DYNAMIC_HASH_TABLE_ENTRY +#if (NTDDI_VERSION >= NTDDI_WIN2K) + +NTKERNELAPI +NTSTATUS NTAPI -RtlEnumerateEntryHashTable( - IN PRTL_DYNAMIC_HASH_TABLE HashTable, - IN OUT PRTL_DYNAMIC_HASH_TABLE_ENUMERATOR Enumerator); +PsSetLoadImageNotifyRoutine( + IN PLOAD_IMAGE_NOTIFY_ROUTINE NotifyRoutine); -NTSYSAPI -VOID +NTKERNELAPI +NTSTATUS NTAPI -RtlEndEnumerationHashTable( - IN PRTL_DYNAMIC_HASH_TABLE HashTable, - IN OUT PRTL_DYNAMIC_HASH_TABLE_ENUMERATOR Enumerator); +PsSetCreateThreadNotifyRoutine( + IN PCREATE_THREAD_NOTIFY_ROUTINE NotifyRoutine); -NTSYSAPI -BOOLEAN +NTKERNELAPI +NTSTATUS NTAPI -RtlInitWeakEnumerationHashTable( - IN PRTL_DYNAMIC_HASH_TABLE HashTable, - OUT PRTL_DYNAMIC_HASH_TABLE_ENUMERATOR Enumerator); +PsSetCreateProcessNotifyRoutine( + IN PCREATE_PROCESS_NOTIFY_ROUTINE NotifyRoutine, + IN BOOLEAN Remove); -NTSYSAPI -PRTL_DYNAMIC_HASH_TABLE_ENTRY +NTKERNELAPI +HANDLE NTAPI -RtlWeaklyEnumerateEntryHashTable( - IN PRTL_DYNAMIC_HASH_TABLE HashTable, - IN OUT PRTL_DYNAMIC_HASH_TABLE_ENUMERATOR Enumerator); +PsGetCurrentProcessId( + VOID); -NTSYSAPI -VOID +NTKERNELAPI +HANDLE NTAPI -RtlEndWeakEnumerationHashTable( - IN PRTL_DYNAMIC_HASH_TABLE HashTable, - IN OUT PRTL_DYNAMIC_HASH_TABLE_ENUMERATOR Enumerator); +PsGetCurrentThreadId( + VOID); -NTSYSAPI +NTKERNELAPI BOOLEAN NTAPI -RtlExpandHashTable( - IN PRTL_DYNAMIC_HASH_TABLE HashTable); +PsGetVersion( + OUT PULONG MajorVersion OPTIONAL, + OUT PULONG MinorVersion OPTIONAL, + OUT PULONG BuildNumber OPTIONAL, + OUT PUNICODE_STRING CSDVersion OPTIONAL); -NTSYSAPI -BOOLEAN +#endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */ + +#if (NTDDI_VERSION >= NTDDI_WINXP) + +NTKERNELAPI +HANDLE NTAPI -RtlContractHashTable( - IN PRTL_DYNAMIC_HASH_TABLE HashTable); +PsGetProcessId( + IN PEPROCESS Process); +NTKERNELAPI +NTSTATUS +NTAPI +PsRemoveCreateThreadNotifyRoutine( + IN PCREATE_THREAD_NOTIFY_ROUTINE NotifyRoutine); +NTKERNELAPI +NTSTATUS +NTAPI +PsRemoveLoadImageNotifyRoutine( + IN PLOAD_IMAGE_NOTIFY_ROUTINE NotifyRoutine); -#endif /* (NTDDI_VERSION >= NTDDI_WIN7) */ +#endif /* (NTDDI_VERSION >= NTDDI_WINXP) */ +extern NTKERNELAPI PEPROCESS PsInitialSystemProcess; -#if defined(_AMD64_) || defined(_IA64_) +/* RTL Types */ +typedef struct _RTL_SPLAY_LINKS { + struct _RTL_SPLAY_LINKS *Parent; + struct _RTL_SPLAY_LINKS *LeftChild; + struct _RTL_SPLAY_LINKS *RightChild; +} RTL_SPLAY_LINKS, *PRTL_SPLAY_LINKS; +/* RTL Functions */ -//DECLSPEC_DEPRECATED_DDK_WINXP -FORCEINLINE -LARGE_INTEGER -NTAPI_INLINE -RtlLargeIntegerDivide( - IN LARGE_INTEGER Dividend, - IN LARGE_INTEGER Divisor, - OUT PLARGE_INTEGER Remainder OPTIONAL) -{ - LARGE_INTEGER ret; - ret.QuadPart = Dividend.QuadPart / Divisor.QuadPart; - if (Remainder) - Remainder->QuadPart = Dividend.QuadPart % Divisor.QuadPart; - return ret; -} +#if (defined(_M_AMD64) || defined(_M_IA64)) && !defined(_REALLY_GET_CALLERS_CALLER_) +#define RtlGetCallersAddress(CallersAddress, CallersCaller) \ + *CallersAddress = (PVOID)_ReturnAddress(); \ + *CallersCaller = NULL; #else #if (NTDDI_VERSION >= NTDDI_WIN2K) NTSYSAPI -LARGE_INTEGER +VOID NTAPI -RtlLargeIntegerDivide( - IN LARGE_INTEGER Dividend, - IN LARGE_INTEGER Divisor, - OUT PLARGE_INTEGER Remainder OPTIONAL); +RtlGetCallersAddress( + OUT PVOID *CallersAddress, + OUT PVOID *CallersCaller); #endif - -#endif /* defined(_AMD64_) || defined(_IA64_) */ - - - -#ifdef RTL_USE_AVL_TABLES - -#define RtlInitializeGenericTable RtlInitializeGenericTableAvl -#define RtlInsertElementGenericTable RtlInsertElementGenericTableAvl -#define RtlInsertElementGenericTableFull RtlInsertElementGenericTableFullAvl -#define RtlDeleteElementGenericTable RtlDeleteElementGenericTableAvl -#define RtlLookupElementGenericTable RtlLookupElementGenericTableAvl -#define RtlLookupElementGenericTableFull RtlLookupElementGenericTableFullAvl -#define RtlEnumerateGenericTable RtlEnumerateGenericTableAvl -#define RtlEnumerateGenericTableWithoutSplaying RtlEnumerateGenericTableWithoutSplayingAvl -#define RtlGetElementGenericTable RtlGetElementGenericTableAvl -#define RtlNumberGenericTableElements RtlNumberGenericTableElementsAvl -#define RtlIsGenericTableEmpty RtlIsGenericTableEmptyAvl - -#endif /* RTL_USE_AVL_TABLES */ - -#define RtlInitializeSplayLinks(Links) { \ - PRTL_SPLAY_LINKS _SplayLinks; \ - _SplayLinks = (PRTL_SPLAY_LINKS)(Links); \ - _SplayLinks->Parent = _SplayLinks; \ - _SplayLinks->LeftChild = NULL; \ - _SplayLinks->RightChild = NULL; \ -} - -#define RtlIsLeftChild(Links) \ - (RtlLeftChild(RtlParent(Links)) == (PRTL_SPLAY_LINKS)(Links)) - -#define RtlIsRightChild(Links) \ - (RtlRightChild(RtlParent(Links)) == (PRTL_SPLAY_LINKS)(Links)) - -#define RtlRightChild(Links) \ - ((PRTL_SPLAY_LINKS)(Links))->RightChild - -#define RtlIsRoot(Links) \ - (RtlParent(Links) == (PRTL_SPLAY_LINKS)(Links)) - -#define RtlLeftChild(Links) \ - ((PRTL_SPLAY_LINKS)(Links))->LeftChild - -#define RtlParent(Links) \ - ((PRTL_SPLAY_LINKS)(Links))->Parent - -#define RtlInsertAsLeftChild(ParentLinks,ChildLinks) \ - { \ - PRTL_SPLAY_LINKS _SplayParent; \ - PRTL_SPLAY_LINKS _SplayChild; \ - _SplayParent = (PRTL_SPLAY_LINKS)(ParentLinks); \ - _SplayChild = (PRTL_SPLAY_LINKS)(ChildLinks); \ - _SplayParent->LeftChild = _SplayChild; \ - _SplayChild->Parent = _SplayParent; \ - } - -#define RtlInsertAsRightChild(ParentLinks,ChildLinks) \ - { \ - PRTL_SPLAY_LINKS _SplayParent; \ - PRTL_SPLAY_LINKS _SplayChild; \ - _SplayParent = (PRTL_SPLAY_LINKS)(ParentLinks); \ - _SplayChild = (PRTL_SPLAY_LINKS)(ChildLinks); \ - _SplayParent->RightChild = _SplayChild; \ - _SplayChild->Parent = _SplayParent; \ - } +#endif #if !defined(MIDL_PASS) @@ -5375,160 +2736,160 @@ NTAPI_INLINE RtlConvertUlongToLuid( IN ULONG Val) { - LUID Luid; - - Luid.LowPart = Val; - Luid.HighPart = 0; - return Luid; + LUID Luid; + + Luid.LowPart = Val; + Luid.HighPart = 0; + return Luid; +} + +#endif + +#if defined(_AMD64_) || defined(_IA64_) +//DECLSPEC_DEPRECATED_DDK_WINXP +__inline +LARGE_INTEGER +NTAPI_INLINE +RtlLargeIntegerDivide( + IN LARGE_INTEGER Dividend, + IN LARGE_INTEGER Divisor, + OUT PLARGE_INTEGER Remainder OPTIONAL) +{ + LARGE_INTEGER ret; + ret.QuadPart = Dividend.QuadPart / Divisor.QuadPart; + if (Remainder) + Remainder->QuadPart = Dividend.QuadPart % Divisor.QuadPart; + return ret; } -#endif /* !defined(MIDL_PASS) */ - -#if (defined(_M_AMD64) || defined(_M_IA64)) && !defined(_REALLY_GET_CALLERS_CALLER_) -#define RtlGetCallersAddress(CallersAddress, CallersCaller) \ - *CallersAddress = (PVOID)_ReturnAddress(); \ - *CallersCaller = NULL; #else + #if (NTDDI_VERSION >= NTDDI_WIN2K) NTSYSAPI -VOID +LARGE_INTEGER NTAPI -RtlGetCallersAddress( - OUT PVOID *CallersAddress, - OUT PVOID *CallersCaller); -#endif +RtlLargeIntegerDivide( + IN LARGE_INTEGER Dividend, + IN LARGE_INTEGER Divisor, + OUT PLARGE_INTEGER Remainder OPTIONAL); #endif -#if !defined(MIDL_PASS) && !defined(SORTPP_PASS) +#endif /* defined(_AMD64_) || defined(_IA64_) */ -#if (NTDDI_VERSION >= NTDDI_WIN7) +#if (NTDDI_VERSION >= NTDDI_WIN2K) -FORCEINLINE -VOID +NTSYSAPI +BOOLEAN NTAPI -RtlInitHashTableContext( - IN OUT PRTL_DYNAMIC_HASH_TABLE_CONTEXT Context) -{ - Context->ChainHead = NULL; - Context->PrevLinkage = NULL; -} +RtlPrefixUnicodeString( + IN PCUNICODE_STRING String1, + IN PCUNICODE_STRING String2, + IN BOOLEAN CaseInSensitive); -FORCEINLINE +NTSYSAPI VOID NTAPI -RtlInitHashTableContextFromEnumerator( - IN OUT PRTL_DYNAMIC_HASH_TABLE_CONTEXT Context, - IN PRTL_DYNAMIC_HASH_TABLE_ENUMERATOR Enumerator) -{ - Context->ChainHead = Enumerator->ChainHead; - Context->PrevLinkage = Enumerator->HashEntry.Linkage.Blink; -} +RtlUpperString( + IN OUT PSTRING DestinationString, + IN const PSTRING SourceString); -FORCEINLINE -VOID +NTSYSAPI +NTSTATUS NTAPI -RtlReleaseHashTableContext( - IN OUT PRTL_DYNAMIC_HASH_TABLE_CONTEXT Context) -{ - UNREFERENCED_PARAMETER(Context); - return; -} +RtlUpcaseUnicodeString( + IN OUT PUNICODE_STRING DestinationString, + IN PCUNICODE_STRING SourceString, + IN BOOLEAN AllocateDestinationString); -FORCEINLINE -ULONG +NTSYSAPI +VOID NTAPI -RtlTotalBucketsHashTable( - IN PRTL_DYNAMIC_HASH_TABLE HashTable) -{ - return HashTable->TableSize; -} +RtlMapGenericMask( + IN OUT PACCESS_MASK AccessMask, + IN PGENERIC_MAPPING GenericMapping); -FORCEINLINE -ULONG +NTSYSAPI +NTSTATUS NTAPI -RtlNonEmptyBucketsHashTable( - IN PRTL_DYNAMIC_HASH_TABLE HashTable) -{ - return HashTable->NonEmptyBuckets; -} +RtlVolumeDeviceToDosName( + IN PVOID VolumeDeviceObject, + OUT PUNICODE_STRING DosName); -FORCEINLINE -ULONG +NTSYSAPI +NTSTATUS NTAPI -RtlEmptyBucketsHashTable( - IN PRTL_DYNAMIC_HASH_TABLE HashTable) -{ - return HashTable->TableSize - HashTable->NonEmptyBuckets; -} +RtlGetVersion( + IN OUT PRTL_OSVERSIONINFOW lpVersionInformation); -FORCEINLINE -ULONG +NTSYSAPI +NTSTATUS NTAPI -RtlTotalEntriesHashTable( - IN PRTL_DYNAMIC_HASH_TABLE HashTable) -{ - return HashTable->NumEntries; -} +RtlVerifyVersionInfo( + IN PRTL_OSVERSIONINFOEXW VersionInfo, + IN ULONG TypeMask, + IN ULONGLONG ConditionMask); -FORCEINLINE -ULONG +NTSYSAPI +LONG NTAPI -RtlActiveEnumeratorsHashTable( - IN PRTL_DYNAMIC_HASH_TABLE HashTable) -{ - return HashTable->NumEnumerators; -} - -#endif /* (NTDDI_VERSION >= NTDDI_WIN7) */ - -#endif /* !defined(MIDL_PASS) && !defined(SORTPP_PASS) */ +RtlCompareString( + IN const PSTRING String1, + IN const PSTRING String2, + BOOLEAN CaseInSensitive); -/****************************************************************************** - * Security Manager Functions * - ******************************************************************************/ +NTSYSAPI +VOID +NTAPI +RtlCopyString( + OUT PSTRING DestinationString, + IN const PSTRING SourceString OPTIONAL); -#if (NTDDI_VERSION >= NTDDI_WIN2K) -NTKERNELAPI +NTSYSAPI BOOLEAN NTAPI -SeSinglePrivilegeCheck( - IN LUID PrivilegeValue, - IN KPROCESSOR_MODE PreviousMode); - - -#endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */ - -/****************************************************************************** - * ZwXxx Functions * - ******************************************************************************/ - - +RtlEqualString( + IN const PSTRING String1, + IN const PSTRING String2, + IN BOOLEAN CaseInSensitive); NTSYSAPI NTSTATUS NTAPI -ZwAllocateLocallyUniqueId( - OUT PLUID Luid); +RtlCharToInteger( + IN PCSZ String, + IN ULONG Base OPTIONAL, + OUT PULONG Value); NTSYSAPI -NTSTATUS +CHAR NTAPI -ZwTerminateProcess( - IN HANDLE ProcessHandle OPTIONAL, - IN NTSTATUS ExitStatus); +RtlUpperChar( + IN CHAR Character); NTSYSAPI -NTSTATUS +ULONG NTAPI -ZwOpenProcess( - OUT PHANDLE ProcessHandle, - IN ACCESS_MASK DesiredAccess, - IN POBJECT_ATTRIBUTES ObjectAttributes, - IN PCLIENT_ID ClientId OPTIONAL); +RtlWalkFrameChain( + OUT PVOID *Callers, + IN ULONG Count, + IN ULONG Flags); + +#endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */ +/* Security reference monitor routines */ #if (NTDDI_VERSION >= NTDDI_WIN2K) +NTKERNELAPI +BOOLEAN +NTAPI +SeSinglePrivilegeCheck( + IN LUID PrivilegeValue, + IN KPROCESSOR_MODE PreviousMode); +#endif +/* ZwXxx Functions */ + +#if (NTDDI_VERSION >= NTDDI_WIN2K) NTSTATUS NTAPI @@ -5571,190 +2932,12 @@ ZwSetTimer( IN LONG Period OPTIONAL, OUT PBOOLEAN PreviousState OPTIONAL); -NTSYSAPI -NTSTATUS -NTAPI -ZwDisplayString( - IN PUNICODE_STRING String); - -NTSYSAPI -NTSTATUS -NTAPI -ZwPowerInformation( - IN POWER_INFORMATION_LEVEL PowerInformationLevel, - IN PVOID InputBuffer OPTIONAL, - IN ULONG InputBufferLength, - OUT PVOID OutputBuffer OPTIONAL, - IN ULONG OutputBufferLength); - -NTSYSAPI -NTSTATUS -NTAPI -ZwQueryVolumeInformationFile( - IN HANDLE FileHandle, - OUT PIO_STATUS_BLOCK IoStatusBlock, - OUT PVOID FsInformation, - IN ULONG Length, - IN FS_INFORMATION_CLASS FsInformationClass); - -NTSYSAPI -NTSTATUS -NTAPI -ZwDeviceIoControlFile( - IN HANDLE FileHandle, - IN HANDLE Event OPTIONAL, - IN PIO_APC_ROUTINE ApcRoutine OPTIONAL, - IN PVOID ApcContext OPTIONAL, - OUT PIO_STATUS_BLOCK IoStatusBlock, - IN ULONG IoControlCode, - IN PVOID InputBuffer OPTIONAL, - IN ULONG InputBufferLength, - OUT PVOID OutputBuffer OPTIONAL, - IN ULONG OutputBufferLength); - - - -#endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */ - - -#if (NTDDI_VERSION >= NTDDI_WIN7) - -NTSTATUS -NTAPI -ZwSetTimerEx( - IN HANDLE TimerHandle, - IN TIMER_SET_INFORMATION_CLASS TimerSetInformationClass, - IN OUT PVOID TimerSetInformation, - IN ULONG TimerSetInformationLength); - - -#endif /* (NTDDI_VERSION >= NTDDI_WIN7) */ - - - -/* UNSORTED */ - -#define VER_SET_CONDITION(ConditionMask, TypeBitMask, ComparisonType) \ - ((ConditionMask) = VerSetConditionMask((ConditionMask), \ - (TypeBitMask), (ComparisonType))) - -#if (NTDDI_VERSION >= NTDDI_WIN2K) -NTSYSAPI -ULONGLONG -NTAPI -VerSetConditionMask( - IN ULONGLONG ConditionMask, - IN ULONG TypeMask, - IN UCHAR Condition); -#endif - -typedef struct _KERNEL_USER_TIMES { - LARGE_INTEGER CreateTime; - LARGE_INTEGER ExitTime; - LARGE_INTEGER KernelTime; - LARGE_INTEGER UserTime; -} KERNEL_USER_TIMES, *PKERNEL_USER_TIMES; - -/* NtXxx Functions */ - -typedef enum _SYSTEM_FIRMWARE_TABLE_ACTION { - SystemFirmwareTable_Enumerate, - SystemFirmwareTable_Get -} SYSTEM_FIRMWARE_TABLE_ACTION; - -typedef struct _SYSTEM_FIRMWARE_TABLE_INFORMATION { - ULONG ProviderSignature; - SYSTEM_FIRMWARE_TABLE_ACTION Action; - ULONG TableID; - ULONG TableBufferLength; - UCHAR TableBuffer[ANYSIZE_ARRAY]; -} SYSTEM_FIRMWARE_TABLE_INFORMATION, *PSYSTEM_FIRMWARE_TABLE_INFORMATION; - -typedef NTSTATUS -(__cdecl *PFNFTH)( - IN OUT PSYSTEM_FIRMWARE_TABLE_INFORMATION SystemFirmwareTableInfo); - -typedef struct _SYSTEM_FIRMWARE_TABLE_HANDLER { - ULONG ProviderSignature; - BOOLEAN Register; - PFNFTH FirmwareTableHandler; - PVOID DriverObject; -} SYSTEM_FIRMWARE_TABLE_HANDLER, *PSYSTEM_FIRMWARE_TABLE_HANDLER; - -typedef ULONG_PTR -(NTAPI *PDRIVER_VERIFIER_THUNK_ROUTINE)( - IN PVOID Context); - -typedef struct _DRIVER_VERIFIER_THUNK_PAIRS { - PDRIVER_VERIFIER_THUNK_ROUTINE PristineRoutine; - PDRIVER_VERIFIER_THUNK_ROUTINE NewRoutine; -} DRIVER_VERIFIER_THUNK_PAIRS, *PDRIVER_VERIFIER_THUNK_PAIRS; - -#define DRIVER_VERIFIER_SPECIAL_POOLING 0x0001 -#define DRIVER_VERIFIER_FORCE_IRQL_CHECKING 0x0002 -#define DRIVER_VERIFIER_INJECT_ALLOCATION_FAILURES 0x0004 -#define DRIVER_VERIFIER_TRACK_POOL_ALLOCATIONS 0x0008 -#define DRIVER_VERIFIER_IO_CHECKING 0x0010 - -#define SHARED_GLOBAL_FLAGS_ERROR_PORT_V 0x0 -#define SHARED_GLOBAL_FLAGS_ERROR_PORT (1UL << SHARED_GLOBAL_FLAGS_ERROR_PORT_V) - -#define SHARED_GLOBAL_FLAGS_ELEVATION_ENABLED_V 0x1 -#define SHARED_GLOBAL_FLAGS_ELEVATION_ENABLED (1UL << SHARED_GLOBAL_FLAGS_ELEVATION_ENABLED_V) - -#define SHARED_GLOBAL_FLAGS_VIRT_ENABLED_V 0x2 -#define SHARED_GLOBAL_FLAGS_VIRT_ENABLED (1UL << SHARED_GLOBAL_FLAGS_VIRT_ENABLED_V) - -#define SHARED_GLOBAL_FLAGS_INSTALLER_DETECT_ENABLED_V 0x3 -#define SHARED_GLOBAL_FLAGS_INSTALLER_DETECT_ENABLED \ - (1UL << SHARED_GLOBAL_FLAGS_INSTALLER_DETECT_ENABLED_V) - -#define SHARED_GLOBAL_FLAGS_SPARE_V 0x4 -#define SHARED_GLOBAL_FLAGS_SPARE \ - (1UL << SHARED_GLOBAL_FLAGS_SPARE_V) - -#define SHARED_GLOBAL_FLAGS_DYNAMIC_PROC_ENABLED_V 0x5 -#define SHARED_GLOBAL_FLAGS_DYNAMIC_PROC_ENABLED \ - (1UL << SHARED_GLOBAL_FLAGS_DYNAMIC_PROC_ENABLED_V) - -#define SHARED_GLOBAL_FLAGS_SEH_VALIDATION_ENABLED_V 0x6 -#define SHARED_GLOBAL_FLAGS_SEH_VALIDATION_ENABLED \ - (1UL << SHARED_GLOBAL_FLAGS_SEH_VALIDATION_ENABLED_V) - -#define EX_INIT_BITS(Flags, Bit) \ - *((Flags)) |= (Bit) // Safe to use before concurrently accessible - -#define EX_TEST_SET_BIT(Flags, Bit) \ - InterlockedBitTestAndSet ((PLONG)(Flags), (Bit)) - -#define EX_TEST_CLEAR_BIT(Flags, Bit) \ - InterlockedBitTestAndReset ((PLONG)(Flags), (Bit)) - -#define PCCARD_MAP_ERROR 0x01 -#define PCCARD_DEVICE_PCI 0x10 - -#define PCCARD_SCAN_DISABLED 0x01 -#define PCCARD_MAP_ZERO 0x02 -#define PCCARD_NO_TIMER 0x03 -#define PCCARD_NO_PIC 0x04 -#define PCCARD_NO_LEGACY_BASE 0x05 -#define PCCARD_DUP_LEGACY_BASE 0x06 -#define PCCARD_NO_CONTROLLERS 0x07 - -#define MAXIMUM_EXPANSION_SIZE (KERNEL_LARGE_STACK_SIZE - (PAGE_SIZE / 2)) - -/* Filesystem runtime library routines */ - -#if (NTDDI_VERSION >= NTDDI_WIN2K) -NTKERNELAPI -BOOLEAN -NTAPI -FsRtlIsTotalDeviceFailure( - IN NTSTATUS Status); #endif -/* FIXME : These definitions below doesn't belong to NTDDK */ #ifdef __cplusplus } #endif + + +#endif /* _NTDDK_ */ diff --git a/reactos/include/ddk/ntifs.h b/reactos/include/ddk/ntifs.h index 7e14da769e7..5f032726d38 100644 --- a/reactos/include/ddk/ntifs.h +++ b/reactos/include/ddk/ntifs.h @@ -25,10 +25,32 @@ #define _NTIFS_INCLUDED_ #define _GNU_NTIFS_ +/* Helper macro to enable gcc's extension. */ +#ifndef __GNU_EXTENSION +#ifdef __GNUC__ +#define __GNU_EXTENSION __extension__ +#else +#define __GNU_EXTENSION +#endif +#endif + #ifdef __cplusplus extern "C" { #endif +#if !defined(_NTHALDLL_) && !defined(_BLDR_) +#define NTHALAPI DECLSPEC_IMPORT +#else +#define NTHALAPI +#endif + +/* For ReactOS */ +#if !defined(_NTOSKRNL_) && !defined(_BLDR_) +#define NTKERNELAPI DECLSPEC_IMPORT +#else +#define NTKERNELAPI +#endif + /* Dependencies */ #include #include @@ -54,6 +76,16 @@ extern "C" { #define ClearFlag(_F,_SF) ((_F) &= ~(_SF)) #endif +#define PsGetCurrentProcess IoGetCurrentProcess + +#if (NTDDI_VERSION >= NTDDI_VISTA) +extern NTSYSAPI volatile CCHAR KeNumberProcessors; +#elif (NTDDI_VERSION >= NTDDI_WINXP) +extern NTSYSAPI CCHAR KeNumberProcessors; +#else +extern PCCHAR KeNumberProcessors; +#endif + typedef UNICODE_STRING LSA_UNICODE_STRING, *PLSA_UNICODE_STRING; typedef STRING LSA_STRING, *PLSA_STRING; typedef OBJECT_ATTRIBUTES LSA_OBJECT_ATTRIBUTES, *PLSA_OBJECT_ATTRIBUTES; @@ -719,6 +751,8 @@ typedef enum _OBJECT_INFORMATION_CLASS { MaxObjectInfoClass /* FIXME, not in WDK */ } OBJECT_INFORMATION_CLASS; +#if (NTDDI_VERSION >= NTDDI_NT4) + NTSYSCALLAPI NTSTATUS NTAPI @@ -729,6 +763,8 @@ NtQueryObject( IN ULONG ObjectInformationLength, OUT PULONG ReturnLength OPTIONAL); +#endif + #if (NTDDI_VERSION >= NTDDI_WIN2K) NTSYSCALLAPI @@ -2378,11 +2414,95 @@ extern const PRTL_REALLOCATE_STRING_ROUTINE RtlReallocateStringRoutine; #define RTL_SYSTEM_VOLUME_INFORMATION_FOLDER L"System Volume Information" +#define DEVICE_TYPE ULONG + +#define FILE_DEVICE_BEEP 0x00000001 +#define FILE_DEVICE_CD_ROM 0x00000002 +#define FILE_DEVICE_CD_ROM_FILE_SYSTEM 0x00000003 +#define FILE_DEVICE_CONTROLLER 0x00000004 +#define FILE_DEVICE_DATALINK 0x00000005 +#define FILE_DEVICE_DFS 0x00000006 +#define FILE_DEVICE_DISK 0x00000007 +#define FILE_DEVICE_DISK_FILE_SYSTEM 0x00000008 +#define FILE_DEVICE_FILE_SYSTEM 0x00000009 +#define FILE_DEVICE_INPORT_PORT 0x0000000a +#define FILE_DEVICE_KEYBOARD 0x0000000b +#define FILE_DEVICE_MAILSLOT 0x0000000c +#define FILE_DEVICE_MIDI_IN 0x0000000d +#define FILE_DEVICE_MIDI_OUT 0x0000000e +#define FILE_DEVICE_MOUSE 0x0000000f +#define FILE_DEVICE_MULTI_UNC_PROVIDER 0x00000010 +#define FILE_DEVICE_NAMED_PIPE 0x00000011 +#define FILE_DEVICE_NETWORK 0x00000012 +#define FILE_DEVICE_NETWORK_BROWSER 0x00000013 +#define FILE_DEVICE_NETWORK_FILE_SYSTEM 0x00000014 +#define FILE_DEVICE_NULL 0x00000015 +#define FILE_DEVICE_PARALLEL_PORT 0x00000016 +#define FILE_DEVICE_PHYSICAL_NETCARD 0x00000017 +#define FILE_DEVICE_PRINTER 0x00000018 +#define FILE_DEVICE_SCANNER 0x00000019 +#define FILE_DEVICE_SERIAL_MOUSE_PORT 0x0000001a +#define FILE_DEVICE_SERIAL_PORT 0x0000001b +#define FILE_DEVICE_SCREEN 0x0000001c +#define FILE_DEVICE_SOUND 0x0000001d +#define FILE_DEVICE_STREAMS 0x0000001e +#define FILE_DEVICE_TAPE 0x0000001f +#define FILE_DEVICE_TAPE_FILE_SYSTEM 0x00000020 +#define FILE_DEVICE_TRANSPORT 0x00000021 +#define FILE_DEVICE_UNKNOWN 0x00000022 +#define FILE_DEVICE_VIDEO 0x00000023 +#define FILE_DEVICE_VIRTUAL_DISK 0x00000024 +#define FILE_DEVICE_WAVE_IN 0x00000025 +#define FILE_DEVICE_WAVE_OUT 0x00000026 +#define FILE_DEVICE_8042_PORT 0x00000027 +#define FILE_DEVICE_NETWORK_REDIRECTOR 0x00000028 +#define FILE_DEVICE_BATTERY 0x00000029 +#define FILE_DEVICE_BUS_EXTENDER 0x0000002a +#define FILE_DEVICE_MODEM 0x0000002b +#define FILE_DEVICE_VDM 0x0000002c +#define FILE_DEVICE_MASS_STORAGE 0x0000002d +#define FILE_DEVICE_SMB 0x0000002e +#define FILE_DEVICE_KS 0x0000002f +#define FILE_DEVICE_CHANGER 0x00000030 +#define FILE_DEVICE_SMARTCARD 0x00000031 +#define FILE_DEVICE_ACPI 0x00000032 +#define FILE_DEVICE_DVD 0x00000033 +#define FILE_DEVICE_FULLSCREEN_VIDEO 0x00000034 +#define FILE_DEVICE_DFS_FILE_SYSTEM 0x00000035 +#define FILE_DEVICE_DFS_VOLUME 0x00000036 +#define FILE_DEVICE_SERENUM 0x00000037 +#define FILE_DEVICE_TERMSRV 0x00000038 +#define FILE_DEVICE_KSEC 0x00000039 +#define FILE_DEVICE_FIPS 0x0000003A +#define FILE_DEVICE_INFINIBAND 0x0000003B +#define FILE_DEVICE_VMBUS 0x0000003E +#define FILE_DEVICE_CRYPT_PROVIDER 0x0000003F +#define FILE_DEVICE_WPD 0x00000040 +#define FILE_DEVICE_BLUETOOTH 0x00000041 +#define FILE_DEVICE_MT_COMPOSITE 0x00000042 +#define FILE_DEVICE_MT_TRANSPORT 0x00000043 +#define FILE_DEVICE_BIOMETRIC 0x00000044 +#define FILE_DEVICE_PMI 0x00000045 + +#define CTL_CODE(DeviceType, Function, Method, Access) \ + (((DeviceType) << 16) | ((Access) << 14) | ((Function) << 2) | (Method)) + +#define DEVICE_TYPE_FROM_CTL_CODE(ctl) (((ULONG) (ctl & 0xffff0000)) >> 16) + #define METHOD_FROM_CTL_CODE(ctrlCode) ((ULONG)(ctrlCode & 3)) +#define METHOD_BUFFERED 0 +#define METHOD_IN_DIRECT 1 +#define METHOD_OUT_DIRECT 2 +#define METHOD_NEITHER 3 #define METHOD_DIRECT_TO_HARDWARE METHOD_IN_DIRECT #define METHOD_DIRECT_FROM_HARDWARE METHOD_OUT_DIRECT +#define FILE_ANY_ACCESS 0x00000000 +#define FILE_SPECIAL_ACCESS FILE_ANY_ACCESS +#define FILE_READ_ACCESS 0x00000001 +#define FILE_WRITE_ACCESS 0x00000002 + typedef ULONG LSA_OPERATIONAL_MODE, *PLSA_OPERATIONAL_MODE; typedef enum _SECURITY_LOGON_TYPE { @@ -4553,8 +4673,6 @@ typedef struct _KAPC_STATE { #define KAPC_STATE_ACTUAL_LENGTH (FIELD_OFFSET(KAPC_STATE, UserApcPending) + sizeof(BOOLEAN)) -#define ASSERT_QUEUE(Q) ASSERT(((Q)->Header.Type & KOBJECT_TYPE_MASK) == QueueObject); - typedef struct _KQUEUE { DISPATCHER_HEADER Header; LIST_ENTRY EntryListHead; @@ -4689,7 +4807,7 @@ FASTCALL KeAcquireQueuedSpinLock( IN OUT KSPIN_LOCK_QUEUE_NUMBER Number); -_DECL_HAL_KE_IMPORT +NTHALAPI VOID FASTCALL KeReleaseQueuedSpinLock( @@ -4904,6 +5022,24 @@ typedef NTSTATUS #if (NTDDI_VERSION >= NTDDI_WIN2K) +NTKERNELAPI +VOID +NTAPI +SeCaptureSubjectContext( + OUT PSECURITY_SUBJECT_CONTEXT SubjectContext); + +NTKERNELAPI +VOID +NTAPI +SeLockSubjectContext( + IN PSECURITY_SUBJECT_CONTEXT SubjectContext); + +NTKERNELAPI +VOID +NTAPI +SeUnlockSubjectContext( + IN PSECURITY_SUBJECT_CONTEXT SubjectContext); + NTKERNELAPI VOID NTAPI @@ -5317,6 +5453,18 @@ SeLocateProcessImageName( extern NTKERNELAPI PSE_EXPORTS SeExports; +#if !defined(_PSGETCURRENTTHREAD_) +#define _PSGETCURRENTTHREAD_ + +FORCEINLINE +PETHREAD +PsGetCurrentThread( + VOID) +{ + return (PETHREAD)KeGetCurrentThread(); +} +#endif + #if (NTDDI_VERSION >= NTDDI_WIN2K) NTKERNELAPI @@ -5386,20 +5534,7 @@ PsReturnPoolQuota( IN POOL_TYPE PoolType, IN ULONG_PTR Amount); -NTKERNELAPI -NTSTATUS -NTAPI -PsAssignImpersonationToken( - IN PETHREAD Thread, - IN HANDLE Token OPTIONAL); - -NTKERNELAPI -HANDLE -NTAPI -PsReferencePrimaryToken( - IN OUT PEPROCESS Process); - -#endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */ +#endif #if (NTDDI_VERSION >= NTDDI_WINXP) @@ -5688,6 +5823,18 @@ IoPageRead( IN PKEVENT Event, OUT PIO_STATUS_BLOCK IoStatusBlock); +NTKERNELAPI +PDEVICE_OBJECT +NTAPI +IoGetAttachedDevice( + IN PDEVICE_OBJECT DeviceObject); + +NTKERNELAPI +PDEVICE_OBJECT +NTAPI +IoGetAttachedDeviceReference( + IN PDEVICE_OBJECT DeviceObject); + NTKERNELAPI PDEVICE_OBJECT NTAPI @@ -5804,6 +5951,42 @@ NTAPI IoSetTopLevelIrp( IN PIRP Irp OPTIONAL); +NTKERNELAPI +VOID +NTAPI +IoStartNextPacket( + IN PDEVICE_OBJECT DeviceObject, + IN BOOLEAN Cancelable); + +NTKERNELAPI +VOID +NTAPI +IoStartNextPacketByKey( + IN PDEVICE_OBJECT DeviceObject, + IN BOOLEAN Cancelable, + IN ULONG Key); + +NTKERNELAPI +VOID +NTAPI +IoStartPacket( + IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp, + IN PULONG Key OPTIONAL, + IN PDRIVER_CANCEL CancelFunction OPTIONAL); + +NTKERNELAPI +VOID +NTAPI +IoStartTimer( + IN PDEVICE_OBJECT DeviceObject); + +NTKERNELAPI +VOID +NTAPI +IoStopTimer( + IN PDEVICE_OBJECT DeviceObject); + NTKERNELAPI NTSTATUS NTAPI @@ -5840,6 +6023,12 @@ IoVerifyVolume( IN PDEVICE_OBJECT DeviceObject, IN BOOLEAN AllowRawMount); +NTKERNELAPI +VOID +NTAPI +IoWriteErrorLogEntry( + IN PVOID ElEntry); + NTKERNELAPI NTSTATUS NTAPI @@ -5866,6 +6055,13 @@ IoQueryFileDosDeviceName( IN PFILE_OBJECT FileObject, OUT POBJECT_NAME_INFORMATION *ObjectNameInformation); +VOID +NTAPI +IoSetStartIoAttributes( + IN PDEVICE_OBJECT DeviceObject, + IN BOOLEAN DeferredStartIo, + IN BOOLEAN NonCancelable); + NTKERNELAPI NTSTATUS NTAPI @@ -5964,6 +6160,53 @@ typedef struct _IO_PRIORITY_INFO { #define PO_CB_LID_SWITCH_STATE 4 #define PO_CB_PROCESSOR_POWER_POLICY 5 +#if (NTDDI_VERSION >= NTDDI_WIN2K) + +NTKERNELAPI +PVOID +NTAPI +PoRegisterSystemState( + IN OUT PVOID StateHandle OPTIONAL, + IN EXECUTION_STATE Flags); + +NTKERNELAPI +VOID +NTAPI +PoUnregisterSystemState( + IN OUT PVOID StateHandle); + +NTKERNELAPI +POWER_STATE +NTAPI +PoSetPowerState( + IN PDEVICE_OBJECT DeviceObject, + IN POWER_STATE_TYPE Type, + IN POWER_STATE State); + +NTKERNELAPI +NTSTATUS +NTAPI +PoCallDriver( + IN PDEVICE_OBJECT DeviceObject, + IN OUT PIRP Irp); + +NTKERNELAPI +VOID +NTAPI +PoStartNextPowerIrp( + IN OUT PIRP Irp); + +NTKERNELAPI +PULONG +NTAPI +PoRegisterDeviceForIdleDetection( + IN PDEVICE_OBJECT DeviceObject, + IN ULONG ConservationIdleTime, + IN ULONG PerformanceIdleTime, + IN DEVICE_POWER_STATE State); + +#endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */ + #if (NTDDI_VERSION >= NTDDI_WINXP) NTKERNELAPI NTSTATUS @@ -5972,6 +6215,84 @@ PoQueueShutdownWorkItem( IN OUT PWORK_QUEUE_ITEM WorkItem); #endif +#if (NTDDI_VERSION >= NTDDI_VISTA) + +NTKERNELAPI +NTSTATUS +NTAPI +PoRegisterPowerSettingCallback( + IN PDEVICE_OBJECT DeviceObject OPTIONAL, + IN LPCGUID SettingGuid, + IN PPOWER_SETTING_CALLBACK Callback, + IN PVOID Context OPTIONAL, + OUT PVOID *Handle); + +NTKERNELAPI +NTSTATUS +PoUnregisterPowerSettingCallback( + IN OUT PVOID Handle); + +#endif + +#if (NTDDI_VERSION >= NTDDI_WIN6SP1) +NTKERNELAPI +VOID +NTAPI +PoSetDeviceBusyEx( + IN OUT PULONG IdlePointer); +#endif + +#if (NTDDI_VERSION >= NTDDI_WIN7) + +NTKERNELAPI +NTSTATUS +NTAPI +PoCreatePowerRequest( + OUT PVOID *PowerRequest, + IN PDEVICE_OBJECT DeviceObject, + IN PCOUNTED_REASON_CONTEXT Context); + +NTKERNELAPI +NTSTATUS +NTAPI +PoSetPowerRequest( + IN OUT PVOID PowerRequest, + IN POWER_REQUEST_TYPE Type); + +NTKERNELAPI +NTSTATUS +NTAPI +PoClearPowerRequest( + IN OUT PVOID PowerRequest, + IN POWER_REQUEST_TYPE Type); + +NTKERNELAPI +VOID +NTAPI +PoDeletePowerRequest( + IN OUT PVOID PowerRequest); + +NTKERNELAPI +VOID +NTAPI +PoStartDeviceBusy( + IN OUT PULONG IdlePointer); + +NTKERNELAPI +VOID +NTAPI +PoEndDeviceBusy( + IN OUT PULONG IdlePointer); + +NTKERNELAPI +BOOLEAN +NTAPI +PoQueryWatchdogTime( + IN PDEVICE_OBJECT Pdo, + OUT PULONG SecondsRemaining); + +#endif /* (NTDDI_VERSION >= NTDDI_WIN7) */ + #if defined(_IA64_) #if (NTDDI_VERSION >= NTDDI_WIN2K) //DECLSPEC_DEPRECATED_DDK @@ -6247,247 +6568,65 @@ typedef struct _FILE_LOCK { LONG volatile LockRequestsInProgress; } FILE_LOCK, *PFILE_LOCK; -typedef struct _TUNNEL { - FAST_MUTEX Mutex; - PRTL_SPLAY_LINKS Cache; - LIST_ENTRY TimerQueue; - USHORT NumEntries; -} TUNNEL, *PTUNNEL; - -typedef enum _FSRTL_COMPARISON_RESULT { - LessThan = -1, - EqualTo = 0, - GreaterThan = 1 -} FSRTL_COMPARISON_RESULT; - -#define FSRTL_FAT_LEGAL 0x01 -#define FSRTL_HPFS_LEGAL 0x02 -#define FSRTL_NTFS_LEGAL 0x04 -#define FSRTL_WILD_CHARACTER 0x08 -#define FSRTL_OLE_LEGAL 0x10 -#define FSRTL_NTFS_STREAM_LEGAL (FSRTL_NTFS_LEGAL | FSRTL_OLE_LEGAL) +#if (NTDDI_VERSION >= NTDDI_WIN2K) -typedef struct _BASE_MCB { - ULONG MaximumPairCount; - ULONG PairCount; - USHORT PoolType; - USHORT Flags; - PVOID Mapping; -} BASE_MCB, *PBASE_MCB; +NTKERNELAPI +BOOLEAN +NTAPI +FsRtlCopyRead( + IN PFILE_OBJECT FileObject, + IN PLARGE_INTEGER FileOffset, + IN ULONG Length, + IN BOOLEAN Wait, + IN ULONG LockKey, + OUT PVOID Buffer, + OUT PIO_STATUS_BLOCK IoStatus, + IN PDEVICE_OBJECT DeviceObject); -typedef struct _LARGE_MCB { - PKGUARDED_MUTEX GuardedMutex; - BASE_MCB BaseMcb; -} LARGE_MCB, *PLARGE_MCB; +NTKERNELAPI +BOOLEAN +NTAPI +FsRtlCopyWrite( + IN PFILE_OBJECT FileObject, + IN PLARGE_INTEGER FileOffset, + IN ULONG Length, + IN BOOLEAN Wait, + IN ULONG LockKey, + IN PVOID Buffer, + OUT PIO_STATUS_BLOCK IoStatus, + IN PDEVICE_OBJECT DeviceObject); -#define MCB_FLAG_RAISE_ON_ALLOCATION_FAILURE 1 +NTKERNELAPI +BOOLEAN +NTAPI +FsRtlMdlReadDev( + IN PFILE_OBJECT FileObject, + IN PLARGE_INTEGER FileOffset, + IN ULONG Length, + IN ULONG LockKey, + OUT PMDL *MdlChain, + OUT PIO_STATUS_BLOCK IoStatus, + IN PDEVICE_OBJECT DeviceObject OPTIONAL); -typedef struct _MCB { - LARGE_MCB DummyFieldThatSizesThisStructureCorrectly; -} MCB, *PMCB; +NTKERNELAPI +BOOLEAN +NTAPI +FsRtlMdlReadCompleteDev( + IN PFILE_OBJECT FileObject, + IN PMDL MdlChain, + IN PDEVICE_OBJECT DeviceObject OPTIONAL); -typedef PVOID OPLOCK, *POPLOCK; - -typedef VOID -(NTAPI *POPLOCK_WAIT_COMPLETE_ROUTINE) ( - IN PVOID Context, - IN PIRP Irp); - -typedef VOID -(NTAPI *POPLOCK_FS_PREPOST_IRP) ( - IN PVOID Context, - IN PIRP Irp); - -#if (NTDDI_VERSION >= NTDDI_VISTASP1) -#define OPLOCK_FLAG_COMPLETE_IF_OPLOCKED 0x00000001 -#endif - -#if (NTDDI_VERSION >= NTDDI_WIN7) -#define OPLOCK_FLAG_OPLOCK_KEY_CHECK_ONLY 0x00000002 -#define OPLOCK_FLAG_BACK_OUT_ATOMIC_OPLOCK 0x00000004 -#define OPLOCK_FLAG_IGNORE_OPLOCK_KEYS 0x00000008 -#define OPLOCK_FSCTRL_FLAG_ALL_KEYS_MATCH 0x00000001 -#endif - -#if (NTDDI_VERSION >= NTDDI_WIN7) - -typedef struct _OPLOCK_KEY_ECP_CONTEXT { - GUID OplockKey; - ULONG Reserved; -} OPLOCK_KEY_ECP_CONTEXT, *POPLOCK_KEY_ECP_CONTEXT; - -DEFINE_GUID( GUID_ECP_OPLOCK_KEY, 0x48850596, 0x3050, 0x4be7, 0x98, 0x63, 0xfe, 0xc3, 0x50, 0xce, 0x8d, 0x7f ); - -#endif - -#define FSRTL_VOLUME_DISMOUNT 1 -#define FSRTL_VOLUME_DISMOUNT_FAILED 2 -#define FSRTL_VOLUME_LOCK 3 -#define FSRTL_VOLUME_LOCK_FAILED 4 -#define FSRTL_VOLUME_UNLOCK 5 -#define FSRTL_VOLUME_MOUNT 6 -#define FSRTL_VOLUME_NEEDS_CHKDSK 7 -#define FSRTL_VOLUME_WORM_NEAR_FULL 8 -#define FSRTL_VOLUME_WEARING_OUT 9 -#define FSRTL_VOLUME_FORCED_CLOSED 10 -#define FSRTL_VOLUME_INFO_MAKE_COMPAT 11 -#define FSRTL_VOLUME_PREPARING_EJECT 12 -#define FSRTL_VOLUME_CHANGE_SIZE 13 -#define FSRTL_VOLUME_BACKGROUND_FORMAT 14 - -typedef PVOID PNOTIFY_SYNC; - -typedef BOOLEAN -(NTAPI *PCHECK_FOR_TRAVERSE_ACCESS) ( - IN PVOID NotifyContext, - IN PVOID TargetContext OPTIONAL, - IN PSECURITY_SUBJECT_CONTEXT SubjectContext); - -typedef BOOLEAN -(NTAPI *PFILTER_REPORT_CHANGE) ( - IN PVOID NotifyContext, - IN PVOID FilterContext); - -typedef VOID -(NTAPI *PFSRTL_STACK_OVERFLOW_ROUTINE) ( - IN PVOID Context, - IN PKEVENT Event); - -#if (NTDDI_VERSION >= NTDDI_VISTA) - -#define FSRTL_UNC_PROVIDER_FLAGS_MAILSLOTS_SUPPORTED 0x00000001 -#define FSRTL_UNC_PROVIDER_FLAGS_CSC_ENABLED 0x00000002 -#define FSRTL_UNC_PROVIDER_FLAGS_DOMAIN_SVC_AWARE 0x00000004 - -#define FSRTL_ALLOCATE_ECPLIST_FLAG_CHARGE_QUOTA 0x00000001 - -#define FSRTL_ALLOCATE_ECP_FLAG_CHARGE_QUOTA 0x00000001 -#define FSRTL_ALLOCATE_ECP_FLAG_NONPAGED_POOL 0x00000002 - -#define FSRTL_ECP_LOOKASIDE_FLAG_NONPAGED_POOL 0x00000002 - -#define FSRTL_VIRTDISK_FULLY_ALLOCATED 0x00000001 -#define FSRTL_VIRTDISK_NO_DRIVE_LETTER 0x00000002 - -typedef struct _FSRTL_MUP_PROVIDER_INFO_LEVEL_1 { - ULONG32 ProviderId; -} FSRTL_MUP_PROVIDER_INFO_LEVEL_1, *PFSRTL_MUP_PROVIDER_INFO_LEVEL_1; - -typedef struct _FSRTL_MUP_PROVIDER_INFO_LEVEL_2 { - ULONG32 ProviderId; - UNICODE_STRING ProviderName; -} FSRTL_MUP_PROVIDER_INFO_LEVEL_2, *PFSRTL_MUP_PROVIDER_INFO_LEVEL_2; - -typedef VOID -(*PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK) ( - IN OUT PVOID EcpContext, - IN LPCGUID EcpType); - -typedef struct _ECP_LIST ECP_LIST, *PECP_LIST; - -typedef ULONG FSRTL_ALLOCATE_ECPLIST_FLAGS; -typedef ULONG FSRTL_ALLOCATE_ECP_FLAGS; -typedef ULONG FSRTL_ECP_LOOKASIDE_FLAGS; - -typedef enum _FSRTL_CHANGE_BACKING_TYPE { - ChangeDataControlArea, - ChangeImageControlArea, - ChangeSharedCacheMap -} FSRTL_CHANGE_BACKING_TYPE, *PFSRTL_CHANGE_BACKING_TYPE; - -#endif /* (NTDDI_VERSION >= NTDDI_VISTA) */ - -typedef struct _FSRTL_PER_FILE_CONTEXT { - LIST_ENTRY Links; - PVOID OwnerId; - PVOID InstanceId; - PFREE_FUNCTION FreeCallback; -} FSRTL_PER_FILE_CONTEXT, *PFSRTL_PER_FILE_CONTEXT; - -typedef struct _FSRTL_PER_STREAM_CONTEXT { - LIST_ENTRY Links; - PVOID OwnerId; - PVOID InstanceId; - PFREE_FUNCTION FreeCallback; -} FSRTL_PER_STREAM_CONTEXT, *PFSRTL_PER_STREAM_CONTEXT; - -#if (NTDDI_VERSION >= NTDDI_WIN2K) -typedef VOID -(*PFN_FSRTLTEARDOWNPERSTREAMCONTEXTS) ( - IN PFSRTL_ADVANCED_FCB_HEADER AdvancedHeader); -#endif - -typedef struct _FSRTL_PER_FILEOBJECT_CONTEXT { - LIST_ENTRY Links; - PVOID OwnerId; - PVOID InstanceId; -} FSRTL_PER_FILEOBJECT_CONTEXT, *PFSRTL_PER_FILEOBJECT_CONTEXT; - -#define FsRtlEnterFileSystem KeEnterCriticalRegion -#define FsRtlExitFileSystem KeLeaveCriticalRegion - -#define FSRTL_CC_FLUSH_ERROR_FLAG_NO_HARD_ERROR 0x1 -#define FSRTL_CC_FLUSH_ERROR_FLAG_NO_LOG_ENTRY 0x2 - -#if (NTDDI_VERSION >= NTDDI_WIN2K) - -NTKERNELAPI -BOOLEAN -NTAPI -FsRtlCopyRead( - IN PFILE_OBJECT FileObject, - IN PLARGE_INTEGER FileOffset, - IN ULONG Length, - IN BOOLEAN Wait, - IN ULONG LockKey, - OUT PVOID Buffer, - OUT PIO_STATUS_BLOCK IoStatus, - IN PDEVICE_OBJECT DeviceObject); - -NTKERNELAPI -BOOLEAN -NTAPI -FsRtlCopyWrite( - IN PFILE_OBJECT FileObject, - IN PLARGE_INTEGER FileOffset, - IN ULONG Length, - IN BOOLEAN Wait, - IN ULONG LockKey, - IN PVOID Buffer, - OUT PIO_STATUS_BLOCK IoStatus, - IN PDEVICE_OBJECT DeviceObject); - -NTKERNELAPI -BOOLEAN -NTAPI -FsRtlMdlReadDev( - IN PFILE_OBJECT FileObject, - IN PLARGE_INTEGER FileOffset, - IN ULONG Length, - IN ULONG LockKey, - OUT PMDL *MdlChain, - OUT PIO_STATUS_BLOCK IoStatus, - IN PDEVICE_OBJECT DeviceObject OPTIONAL); - -NTKERNELAPI -BOOLEAN -NTAPI -FsRtlMdlReadCompleteDev( - IN PFILE_OBJECT FileObject, - IN PMDL MdlChain, - IN PDEVICE_OBJECT DeviceObject OPTIONAL); - -NTKERNELAPI -BOOLEAN -NTAPI -FsRtlPrepareMdlWriteDev( - IN PFILE_OBJECT FileObject, - IN PLARGE_INTEGER FileOffset, - IN ULONG Length, - IN ULONG LockKey, - OUT PMDL *MdlChain, - OUT PIO_STATUS_BLOCK IoStatus, - IN PDEVICE_OBJECT DeviceObject); +NTKERNELAPI +BOOLEAN +NTAPI +FsRtlPrepareMdlWriteDev( + IN PFILE_OBJECT FileObject, + IN PLARGE_INTEGER FileOffset, + IN ULONG Length, + IN ULONG LockKey, + OUT PMDL *MdlChain, + OUT PIO_STATUS_BLOCK IoStatus, + IN PDEVICE_OBJECT DeviceObject); NTKERNELAPI BOOLEAN @@ -6706,2633 +6845,1754 @@ FsRtlPrivateLock( IN PVOID Context, IN BOOLEAN AlreadySynchronized); -NTKERNELAPI -VOID -NTAPI -FsRtlInitializeTunnelCache( - IN PTUNNEL Cache); - -NTKERNELAPI -VOID -NTAPI -FsRtlAddToTunnelCache( - IN PTUNNEL Cache, - IN ULONGLONG DirectoryKey, - IN PUNICODE_STRING ShortName, - IN PUNICODE_STRING LongName, - IN BOOLEAN KeyByShortName, - IN ULONG DataLength, - IN PVOID Data); +#endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */ +#if (NTDDI_VERSION >= NTDDI_WIN7) NTKERNELAPI BOOLEAN NTAPI -FsRtlFindInTunnelCache( - IN PTUNNEL Cache, - IN ULONGLONG DirectoryKey, - IN PUNICODE_STRING Name, - OUT PUNICODE_STRING ShortName, - OUT PUNICODE_STRING LongName, - IN OUT PULONG DataLength, - OUT PVOID Data); - -NTKERNELAPI -VOID -NTAPI -FsRtlDeleteKeyFromTunnelCache( - IN PTUNNEL Cache, - IN ULONGLONG DirectoryKey); +FsRtlAreThereCurrentOrInProgressFileLocks( + IN PFILE_LOCK FileLock); +#endif -NTKERNELAPI -VOID -NTAPI -FsRtlDeleteTunnelCache( - IN PTUNNEL Cache); +#pragma pack(push,4) -NTKERNELAPI -VOID -NTAPI -FsRtlDissectDbcs( - IN ANSI_STRING Name, - OUT PANSI_STRING FirstPart, - OUT PANSI_STRING RemainingPart); +#ifndef VER_PRODUCTBUILD +#define VER_PRODUCTBUILD 10000 +#endif -NTKERNELAPI -BOOLEAN -NTAPI -FsRtlDoesDbcsContainWildCards( - IN PANSI_STRING Name); +#include "csq.h" -NTKERNELAPI -BOOLEAN -NTAPI -FsRtlIsDbcsInExpression( - IN PANSI_STRING Expression, - IN PANSI_STRING Name); +#ifdef _NTOSKRNL_ +extern PUCHAR FsRtlLegalAnsiCharacterArray; +#else +extern DECLSPEC_IMPORT PUCHAR FsRtlLegalAnsiCharacterArray; +#endif +extern PACL SePublicDefaultDacl; +extern PACL SeSystemDefaultDacl; -NTKERNELAPI -BOOLEAN -NTAPI -FsRtlIsFatDbcsLegal( - IN ANSI_STRING DbcsName, - IN BOOLEAN WildCardsPermissible, - IN BOOLEAN PathNamePermissible, - IN BOOLEAN LeadingBackslashPermissible); +#define FS_LFN_APIS 0x00004000 -NTKERNELAPI -BOOLEAN -NTAPI -FsRtlIsHpfsDbcsLegal( - IN ANSI_STRING DbcsName, - IN BOOLEAN WildCardsPermissible, - IN BOOLEAN PathNamePermissible, - IN BOOLEAN LeadingBackslashPermissible); +#define FILE_STORAGE_TYPE_SPECIFIED 0x00000041 /* FILE_DIRECTORY_FILE | FILE_NON_DIRECTORY_FILE */ +#define FILE_STORAGE_TYPE_DEFAULT (StorageTypeDefault << FILE_STORAGE_TYPE_SHIFT) +#define FILE_STORAGE_TYPE_DIRECTORY (StorageTypeDirectory << FILE_STORAGE_TYPE_SHIFT) +#define FILE_STORAGE_TYPE_FILE (StorageTypeFile << FILE_STORAGE_TYPE_SHIFT) +#define FILE_STORAGE_TYPE_DOCFILE (StorageTypeDocfile << FILE_STORAGE_TYPE_SHIFT) +#define FILE_STORAGE_TYPE_JUNCTION_POINT (StorageTypeJunctionPoint << FILE_STORAGE_TYPE_SHIFT) +#define FILE_STORAGE_TYPE_CATALOG (StorageTypeCatalog << FILE_STORAGE_TYPE_SHIFT) +#define FILE_STORAGE_TYPE_STRUCTURED_STORAGE (StorageTypeStructuredStorage << FILE_STORAGE_TYPE_SHIFT) +#define FILE_STORAGE_TYPE_EMBEDDING (StorageTypeEmbedding << FILE_STORAGE_TYPE_SHIFT) +#define FILE_STORAGE_TYPE_STREAM (StorageTypeStream << FILE_STORAGE_TYPE_SHIFT) +#define FILE_MINIMUM_STORAGE_TYPE FILE_STORAGE_TYPE_DEFAULT +#define FILE_MAXIMUM_STORAGE_TYPE FILE_STORAGE_TYPE_STREAM +#define FILE_STORAGE_TYPE_MASK 0x000f0000 +#define FILE_STORAGE_TYPE_SHIFT 16 -NTKERNELAPI -NTSTATUS -NTAPI -FsRtlNormalizeNtstatus( - IN NTSTATUS Exception, - IN NTSTATUS GenericException); +#define FILE_VC_QUOTAS_LOG_VIOLATIONS 0x00000004 -NTKERNELAPI -BOOLEAN -NTAPI -FsRtlIsNtstatusExpected( - IN NTSTATUS Ntstatus); +#define FSRTL_VOLUME_DISMOUNT 1 +#define FSRTL_VOLUME_DISMOUNT_FAILED 2 +#define FSRTL_VOLUME_LOCK 3 +#define FSRTL_VOLUME_LOCK_FAILED 4 +#define FSRTL_VOLUME_UNLOCK 5 +#define FSRTL_VOLUME_MOUNT 6 -NTKERNELAPI -PERESOURCE -NTAPI -FsRtlAllocateResource( - VOID); +#define FSRTL_WILD_CHARACTER 0x08 -NTKERNELAPI -VOID -NTAPI -FsRtlInitializeLargeMcb( - IN PLARGE_MCB Mcb, - IN POOL_TYPE PoolType); +#define FSRTL_FAT_LEGAL 0x01 +#define FSRTL_HPFS_LEGAL 0x02 +#define FSRTL_NTFS_LEGAL 0x04 +#define FSRTL_WILD_CHARACTER 0x08 +#define FSRTL_OLE_LEGAL 0x10 +#define FSRTL_NTFS_STREAM_LEGAL 0x14 -NTKERNELAPI -VOID -NTAPI -FsRtlUninitializeLargeMcb( - IN PLARGE_MCB Mcb); +#ifdef _X86_ +#define HARDWARE_PTE HARDWARE_PTE_X86 +#define PHARDWARE_PTE PHARDWARE_PTE_X86 +#endif -NTKERNELAPI -VOID -NTAPI -FsRtlResetLargeMcb( - IN PLARGE_MCB Mcb, - IN BOOLEAN SelfSynchronized); +#define IO_CHECK_CREATE_PARAMETERS 0x0200 +#define IO_ATTACH_DEVICE 0x0400 -NTKERNELAPI -VOID -NTAPI -FsRtlTruncateLargeMcb( - IN PLARGE_MCB Mcb, - IN LONGLONG Vbn); +#define IO_ATTACH_DEVICE_API 0x80000000 -NTKERNELAPI -BOOLEAN -NTAPI -FsRtlAddLargeMcbEntry( - IN PLARGE_MCB Mcb, - IN LONGLONG Vbn, - IN LONGLONG Lbn, - IN LONGLONG SectorCount); +#define IO_TYPE_APC 18 +#define IO_TYPE_DPC 19 +#define IO_TYPE_DEVICE_QUEUE 20 +#define IO_TYPE_EVENT_PAIR 21 +#define IO_TYPE_INTERRUPT 22 +#define IO_TYPE_PROFILE 23 -NTKERNELAPI -VOID -NTAPI -FsRtlRemoveLargeMcbEntry( - IN PLARGE_MCB Mcb, - IN LONGLONG Vbn, - IN LONGLONG SectorCount); +#define IRP_BEING_VERIFIED 0x10 -NTKERNELAPI -BOOLEAN -NTAPI -FsRtlLookupLargeMcbEntry( - IN PLARGE_MCB Mcb, - IN LONGLONG Vbn, - OUT PLONGLONG Lbn OPTIONAL, - OUT PLONGLONG SectorCountFromLbn OPTIONAL, - OUT PLONGLONG StartingLbn OPTIONAL, - OUT PLONGLONG SectorCountFromStartingLbn OPTIONAL, - OUT PULONG Index OPTIONAL); +#define MAILSLOT_CLASS_FIRSTCLASS 1 +#define MAILSLOT_CLASS_SECONDCLASS 2 -NTKERNELAPI -BOOLEAN -NTAPI -FsRtlLookupLastLargeMcbEntry( - IN PLARGE_MCB Mcb, - OUT PLONGLONG Vbn, - OUT PLONGLONG Lbn); +#define MAILSLOT_SIZE_AUTO 0 -NTKERNELAPI -BOOLEAN -NTAPI -FsRtlLookupLastLargeMcbEntryAndIndex( - IN PLARGE_MCB OpaqueMcb, - OUT PLONGLONG LargeVbn, - OUT PLONGLONG LargeLbn, - OUT PULONG Index); +#define MEM_DOS_LIM 0x40000000 -NTKERNELAPI -ULONG -NTAPI -FsRtlNumberOfRunsInLargeMcb( - IN PLARGE_MCB Mcb); +#define MCB_FLAG_RAISE_ON_ALLOCATION_FAILURE 1 -NTKERNELAPI -BOOLEAN -NTAPI -FsRtlGetNextLargeMcbEntry( - IN PLARGE_MCB Mcb, - IN ULONG RunIndex, - OUT PLONGLONG Vbn, - OUT PLONGLONG Lbn, - OUT PLONGLONG SectorCount); +#define OB_TYPE_TYPE 1 +#define OB_TYPE_DIRECTORY 2 +#define OB_TYPE_SYMBOLIC_LINK 3 +#define OB_TYPE_TOKEN 4 +#define OB_TYPE_PROCESS 5 +#define OB_TYPE_THREAD 6 +#define OB_TYPE_EVENT 7 +#define OB_TYPE_EVENT_PAIR 8 +#define OB_TYPE_MUTANT 9 +#define OB_TYPE_SEMAPHORE 10 +#define OB_TYPE_TIMER 11 +#define OB_TYPE_PROFILE 12 +#define OB_TYPE_WINDOW_STATION 13 +#define OB_TYPE_DESKTOP 14 +#define OB_TYPE_SECTION 15 +#define OB_TYPE_KEY 16 +#define OB_TYPE_PORT 17 +#define OB_TYPE_ADAPTER 18 +#define OB_TYPE_CONTROLLER 19 +#define OB_TYPE_DEVICE 20 +#define OB_TYPE_DRIVER 21 +#define OB_TYPE_IO_COMPLETION 22 +#define OB_TYPE_FILE 23 -NTKERNELAPI -BOOLEAN -NTAPI -FsRtlSplitLargeMcb( - IN PLARGE_MCB Mcb, - IN LONGLONG Vbn, - IN LONGLONG Amount); +#define PIN_WAIT (1) +#define PIN_EXCLUSIVE (2) +#define PIN_NO_READ (4) +#define PIN_IF_BCB (8) -NTKERNELAPI -VOID -NTAPI -FsRtlInitializeMcb( - IN PMCB Mcb, - IN POOL_TYPE PoolType); +#define SEC_BASED 0x00200000 -NTKERNELAPI -VOID -NTAPI -FsRtlUninitializeMcb( - IN PMCB Mcb); +#define SECURITY_WORLD_SID_AUTHORITY {0,0,0,0,0,1} +#define SECURITY_WORLD_RID (0x00000000L) -NTKERNELAPI -VOID -NTAPI -FsRtlTruncateMcb( - IN PMCB Mcb, - IN VBN Vbn); +/* end winnt.h */ -NTKERNELAPI -BOOLEAN -NTAPI -FsRtlAddMcbEntry( - IN PMCB Mcb, - IN VBN Vbn, - IN LBN Lbn, - IN ULONG SectorCount); +#define TOKEN_HAS_ADMIN_GROUP 0x08 -NTKERNELAPI -VOID -NTAPI -FsRtlRemoveMcbEntry( - IN PMCB Mcb, - IN VBN Vbn, - IN ULONG SectorCount); +#define VACB_MAPPING_GRANULARITY (0x40000) +#define VACB_OFFSET_SHIFT (18) -NTKERNELAPI -BOOLEAN -NTAPI -FsRtlLookupMcbEntry( - IN PMCB Mcb, - IN VBN Vbn, - OUT PLBN Lbn, - OUT PULONG SectorCount OPTIONAL, - OUT PULONG Index); +#if (VER_PRODUCTBUILD >= 1381) +#define FSCTL_GET_HFS_INFORMATION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 31, METHOD_BUFFERED, FILE_ANY_ACCESS) +#endif /* (VER_PRODUCTBUILD >= 1381) */ -NTKERNELAPI -BOOLEAN -NTAPI -FsRtlLookupLastMcbEntry( - IN PMCB Mcb, - OUT PVBN Vbn, - OUT PLBN Lbn); +#if (VER_PRODUCTBUILD >= 2195) -NTKERNELAPI -ULONG -NTAPI -FsRtlNumberOfRunsInMcb( - IN PMCB Mcb); +#define FSCTL_READ_PROPERTY_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 33, METHOD_NEITHER, FILE_ANY_ACCESS) +#define FSCTL_WRITE_PROPERTY_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 34, METHOD_NEITHER, FILE_ANY_ACCESS) -NTKERNELAPI -BOOLEAN -NTAPI -FsRtlGetNextMcbEntry( - IN PMCB Mcb, - IN ULONG RunIndex, - OUT PVBN Vbn, - OUT PLBN Lbn, - OUT PULONG SectorCount); +#define FSCTL_DUMP_PROPERTY_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 37, METHOD_NEITHER, FILE_ANY_ACCESS) -NTKERNELAPI -NTSTATUS -NTAPI -FsRtlBalanceReads( - IN PDEVICE_OBJECT TargetDevice); +#define FSCTL_HSM_MSG CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 66, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA) +#define FSCTL_NSS_CONTROL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 67, METHOD_BUFFERED, FILE_WRITE_DATA) +#define FSCTL_HSM_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 68, METHOD_NEITHER, FILE_READ_DATA | FILE_WRITE_DATA) +#define FSCTL_NSS_RCONTROL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 70, METHOD_BUFFERED, FILE_READ_DATA) +#endif /* (VER_PRODUCTBUILD >= 2195) */ -NTKERNELAPI -VOID -NTAPI -FsRtlInitializeOplock( - IN OUT POPLOCK Oplock); +#define FSCTL_NETWORK_SET_CONFIGURATION_INFO CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 102, METHOD_IN_DIRECT, FILE_ANY_ACCESS) +#define FSCTL_NETWORK_GET_CONFIGURATION_INFO CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 103, METHOD_OUT_DIRECT, FILE_ANY_ACCESS) +#define FSCTL_NETWORK_GET_CONNECTION_INFO CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 104, METHOD_NEITHER, FILE_ANY_ACCESS) +#define FSCTL_NETWORK_ENUMERATE_CONNECTIONS CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 105, METHOD_NEITHER, FILE_ANY_ACCESS) +#define FSCTL_NETWORK_DELETE_CONNECTION CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 107, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_NETWORK_GET_STATISTICS CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 116, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_NETWORK_SET_DOMAIN_NAME CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 120, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_NETWORK_REMOTE_BOOT_INIT_SCRT CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 250, METHOD_BUFFERED, FILE_ANY_ACCESS) -NTKERNELAPI -VOID -NTAPI -FsRtlUninitializeOplock( - IN OUT POPLOCK Oplock); +#define IOCTL_REDIR_QUERY_PATH CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 99, METHOD_NEITHER, FILE_ANY_ACCESS) -NTKERNELAPI -NTSTATUS -NTAPI -FsRtlOplockFsctrl( - IN POPLOCK Oplock, - IN PIRP Irp, - IN ULONG OpenCount); +typedef PVOID OPLOCK, *POPLOCK; -NTKERNELAPI -NTSTATUS -NTAPI -FsRtlCheckOplock( - IN POPLOCK Oplock, - IN PIRP Irp, - IN PVOID Context, - IN POPLOCK_WAIT_COMPLETE_ROUTINE CompletionRoutine OPTIONAL, - IN POPLOCK_FS_PREPOST_IRP PostIrpRoutine OPTIONAL); +// +// Forwarders +// +struct _RTL_AVL_TABLE; +struct _RTL_GENERIC_TABLE; -NTKERNELAPI -BOOLEAN -NTAPI -FsRtlOplockIsFastIoPossible( - IN POPLOCK Oplock); +typedef PVOID PNOTIFY_SYNC; -NTKERNELAPI -BOOLEAN -NTAPI -FsRtlCurrentBatchOplock( - IN POPLOCK Oplock); +typedef enum _FILE_STORAGE_TYPE { + StorageTypeDefault = 1, + StorageTypeDirectory, + StorageTypeFile, + StorageTypeJunctionPoint, + StorageTypeCatalog, + StorageTypeStructuredStorage, + StorageTypeEmbedding, + StorageTypeStream +} FILE_STORAGE_TYPE; -NTKERNELAPI -NTSTATUS -NTAPI -FsRtlNotifyVolumeEvent( - IN PFILE_OBJECT FileObject, - IN ULONG EventCode); +typedef struct _OBJECT_BASIC_INFORMATION +{ + ULONG Attributes; + ACCESS_MASK GrantedAccess; + ULONG HandleCount; + ULONG PointerCount; + ULONG PagedPoolCharge; + ULONG NonPagedPoolCharge; + ULONG Reserved[ 3 ]; + ULONG NameInfoSize; + ULONG TypeInfoSize; + ULONG SecurityDescriptorSize; + LARGE_INTEGER CreationTime; +} OBJECT_BASIC_INFORMATION, *POBJECT_BASIC_INFORMATION; -NTKERNELAPI -VOID -NTAPI -FsRtlNotifyInitializeSync( - IN PNOTIFY_SYNC *NotifySync); +typedef struct _BITMAP_RANGE { + LIST_ENTRY Links; + LONGLONG BasePage; + ULONG FirstDirtyPage; + ULONG LastDirtyPage; + ULONG DirtyPages; + PULONG Bitmap; +} BITMAP_RANGE, *PBITMAP_RANGE; -NTKERNELAPI -VOID -NTAPI -FsRtlNotifyUninitializeSync( - IN PNOTIFY_SYNC *NotifySync); +typedef struct _CACHE_UNINITIALIZE_EVENT { + struct _CACHE_UNINITIALIZE_EVENT *Next; + KEVENT Event; +} CACHE_UNINITIALIZE_EVENT, *PCACHE_UNINITIALIZE_EVENT; -NTKERNELAPI -VOID -NTAPI -FsRtlNotifyFullChangeDirectory( - IN PNOTIFY_SYNC NotifySync, - IN PLIST_ENTRY NotifyList, - IN PVOID FsContext, - IN PSTRING FullDirectoryName, - IN BOOLEAN WatchTree, - IN BOOLEAN IgnoreBuffer, - IN ULONG CompletionFilter, - IN PIRP NotifyIrp OPTIONAL, - IN PCHECK_FOR_TRAVERSE_ACCESS TraverseCallback OPTIONAL, - IN PSECURITY_SUBJECT_CONTEXT SubjectContext OPTIONAL); +typedef struct _CC_FILE_SIZES { + LARGE_INTEGER AllocationSize; + LARGE_INTEGER FileSize; + LARGE_INTEGER ValidDataLength; +} CC_FILE_SIZES, *PCC_FILE_SIZES; -NTKERNELAPI -VOID -NTAPI -FsRtlNotifyFilterReportChange( - IN PNOTIFY_SYNC NotifySync, - IN PLIST_ENTRY NotifyList, - IN PSTRING FullTargetName, - IN USHORT TargetNameOffset, - IN PSTRING StreamName OPTIONAL, - IN PSTRING NormalizedParentName OPTIONAL, - IN ULONG FilterMatch, - IN ULONG Action, - IN PVOID TargetContext OPTIONAL, - IN PVOID FilterContext OPTIONAL); +typedef struct _FILE_COPY_ON_WRITE_INFORMATION { + BOOLEAN ReplaceIfExists; + HANDLE RootDirectory; + ULONG FileNameLength; + WCHAR FileName[1]; +} FILE_COPY_ON_WRITE_INFORMATION, *PFILE_COPY_ON_WRITE_INFORMATION; -NTKERNELAPI -VOID -NTAPI -FsRtlNotifyFullReportChange( - IN PNOTIFY_SYNC NotifySync, - IN PLIST_ENTRY NotifyList, - IN PSTRING FullTargetName, - IN USHORT TargetNameOffset, - IN PSTRING StreamName OPTIONAL, - IN PSTRING NormalizedParentName OPTIONAL, - IN ULONG FilterMatch, - IN ULONG Action, - IN PVOID TargetContext OPTIONAL); +typedef struct _FILE_FULL_DIRECTORY_INFORMATION { + ULONG NextEntryOffset; + ULONG FileIndex; + LARGE_INTEGER CreationTime; + LARGE_INTEGER LastAccessTime; + LARGE_INTEGER LastWriteTime; + LARGE_INTEGER ChangeTime; + LARGE_INTEGER EndOfFile; + LARGE_INTEGER AllocationSize; + ULONG FileAttributes; + ULONG FileNameLength; + ULONG EaSize; + WCHAR FileName[ANYSIZE_ARRAY]; +} FILE_FULL_DIRECTORY_INFORMATION, *PFILE_FULL_DIRECTORY_INFORMATION; -NTKERNELAPI -VOID -NTAPI -FsRtlNotifyCleanup( - IN PNOTIFY_SYNC NotifySync, - IN PLIST_ENTRY NotifyList, - IN PVOID FsContext); +typedef struct _FILE_FS_FULL_SIZE_INFORMATION { + LARGE_INTEGER TotalAllocationUnits; + LARGE_INTEGER CallerAvailableAllocationUnits; + LARGE_INTEGER ActualAvailableAllocationUnits; + ULONG SectorsPerAllocationUnit; + ULONG BytesPerSector; +} FILE_FS_FULL_SIZE_INFORMATION, *PFILE_FS_FULL_SIZE_INFORMATION; -NTKERNELAPI -VOID -NTAPI -FsRtlDissectName( - IN UNICODE_STRING Name, - OUT PUNICODE_STRING FirstPart, - OUT PUNICODE_STRING RemainingPart); +typedef struct _FILE_FS_LABEL_INFORMATION { + ULONG VolumeLabelLength; + WCHAR VolumeLabel[1]; +} FILE_FS_LABEL_INFORMATION, *PFILE_FS_LABEL_INFORMATION; -NTKERNELAPI -BOOLEAN -NTAPI -FsRtlDoesNameContainWildCards( - IN PUNICODE_STRING Name); +#if (VER_PRODUCTBUILD >= 2195) -NTKERNELAPI -BOOLEAN -NTAPI -FsRtlAreNamesEqual( - IN PCUNICODE_STRING Name1, - IN PCUNICODE_STRING Name2, - IN BOOLEAN IgnoreCase, - IN PCWCH UpcaseTable OPTIONAL); +typedef struct _FILE_FS_OBJECT_ID_INFORMATION { + UCHAR ObjectId[16]; + UCHAR ExtendedInfo[48]; +} FILE_FS_OBJECT_ID_INFORMATION, *PFILE_FS_OBJECT_ID_INFORMATION; -NTKERNELAPI -BOOLEAN -NTAPI -FsRtlIsNameInExpression( - IN PUNICODE_STRING Expression, - IN PUNICODE_STRING Name, - IN BOOLEAN IgnoreCase, - IN PWCHAR UpcaseTable OPTIONAL); +#endif /* (VER_PRODUCTBUILD >= 2195) */ -NTKERNELAPI -VOID -NTAPI -FsRtlPostPagingFileStackOverflow( - IN PVOID Context, - IN PKEVENT Event, - IN PFSRTL_STACK_OVERFLOW_ROUTINE StackOverflowRoutine); +typedef struct _FILE_FS_SIZE_INFORMATION { + LARGE_INTEGER TotalAllocationUnits; + LARGE_INTEGER AvailableAllocationUnits; + ULONG SectorsPerAllocationUnit; + ULONG BytesPerSector; +} FILE_FS_SIZE_INFORMATION, *PFILE_FS_SIZE_INFORMATION; + +typedef struct _FILE_FS_VOLUME_INFORMATION { + LARGE_INTEGER VolumeCreationTime; + ULONG VolumeSerialNumber; + ULONG VolumeLabelLength; + BOOLEAN SupportsObjects; + WCHAR VolumeLabel[1]; +} FILE_FS_VOLUME_INFORMATION, *PFILE_FS_VOLUME_INFORMATION; + +typedef struct _FILE_FS_OBJECTID_INFORMATION +{ + UCHAR ObjectId[16]; + UCHAR ExtendedInfo[48]; +} FILE_FS_OBJECTID_INFORMATION, *PFILE_FS_OBJECTID_INFORMATION; -NTKERNELAPI -VOID -NTAPI -FsRtlPostStackOverflow ( - IN PVOID Context, - IN PKEVENT Event, - IN PFSRTL_STACK_OVERFLOW_ROUTINE StackOverflowRoutine); +/* raw internal file lock struct returned from FsRtlGetNextFileLock */ +typedef struct _FILE_SHARED_LOCK_ENTRY { + PVOID Unknown1; + PVOID Unknown2; + FILE_LOCK_INFO FileLock; +} FILE_SHARED_LOCK_ENTRY, *PFILE_SHARED_LOCK_ENTRY; -NTKERNELAPI -NTSTATUS -NTAPI -FsRtlRegisterUncProvider( - OUT PHANDLE MupHandle, - IN PUNICODE_STRING RedirectorDeviceName, - IN BOOLEAN MailslotsSupported); +/* raw internal file lock struct returned from FsRtlGetNextFileLock */ +typedef struct _FILE_EXCLUSIVE_LOCK_ENTRY { + LIST_ENTRY ListEntry; + PVOID Unknown1; + PVOID Unknown2; + FILE_LOCK_INFO FileLock; +} FILE_EXCLUSIVE_LOCK_ENTRY, *PFILE_EXCLUSIVE_LOCK_ENTRY; -NTKERNELAPI -VOID -NTAPI -FsRtlDeregisterUncProvider( - IN HANDLE Handle); +typedef struct _FILE_MAILSLOT_PEEK_BUFFER { + ULONG ReadDataAvailable; + ULONG NumberOfMessages; + ULONG MessageLength; +} FILE_MAILSLOT_PEEK_BUFFER, *PFILE_MAILSLOT_PEEK_BUFFER; -NTKERNELAPI -VOID -NTAPI -FsRtlTeardownPerStreamContexts( - IN PFSRTL_ADVANCED_FCB_HEADER AdvancedHeader); +typedef struct _FILE_OLE_CLASSID_INFORMATION { + GUID ClassId; +} FILE_OLE_CLASSID_INFORMATION, *PFILE_OLE_CLASSID_INFORMATION; -NTKERNELAPI -NTSTATUS -NTAPI -FsRtlCreateSectionForDataScan( - OUT PHANDLE SectionHandle, - OUT PVOID *SectionObject, - OUT PLARGE_INTEGER SectionFileSize OPTIONAL, - IN PFILE_OBJECT FileObject, - IN ACCESS_MASK DesiredAccess, - IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, - IN PLARGE_INTEGER MaximumSize OPTIONAL, - IN ULONG SectionPageProtection, - IN ULONG AllocationAttributes, - IN ULONG Flags); +typedef struct _FILE_OLE_ALL_INFORMATION { + FILE_BASIC_INFORMATION BasicInformation; + FILE_STANDARD_INFORMATION StandardInformation; + FILE_INTERNAL_INFORMATION InternalInformation; + FILE_EA_INFORMATION EaInformation; + FILE_ACCESS_INFORMATION AccessInformation; + FILE_POSITION_INFORMATION PositionInformation; + FILE_MODE_INFORMATION ModeInformation; + FILE_ALIGNMENT_INFORMATION AlignmentInformation; + USN LastChangeUsn; + USN ReplicationUsn; + LARGE_INTEGER SecurityChangeTime; + FILE_OLE_CLASSID_INFORMATION OleClassIdInformation; + FILE_OBJECTID_INFORMATION ObjectIdInformation; + FILE_STORAGE_TYPE StorageType; + ULONG OleStateBits; + ULONG OleId; + ULONG NumberOfStreamReferences; + ULONG StreamIndex; + ULONG SecurityId; + BOOLEAN ContentIndexDisable; + BOOLEAN InheritContentIndexDisable; + FILE_NAME_INFORMATION NameInformation; +} FILE_OLE_ALL_INFORMATION, *PFILE_OLE_ALL_INFORMATION; -#endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */ +typedef struct _FILE_OLE_DIR_INFORMATION { + ULONG NextEntryOffset; + ULONG FileIndex; + LARGE_INTEGER CreationTime; + LARGE_INTEGER LastAccessTime; + LARGE_INTEGER LastWriteTime; + LARGE_INTEGER ChangeTime; + LARGE_INTEGER EndOfFile; + LARGE_INTEGER AllocationSize; + ULONG FileAttributes; + ULONG FileNameLength; + FILE_STORAGE_TYPE StorageType; + GUID OleClassId; + ULONG OleStateBits; + BOOLEAN ContentIndexDisable; + BOOLEAN InheritContentIndexDisable; + WCHAR FileName[1]; +} FILE_OLE_DIR_INFORMATION, *PFILE_OLE_DIR_INFORMATION; -#if (NTDDI_VERSION >= NTDDI_WINXP) +typedef struct _FILE_OLE_INFORMATION { + LARGE_INTEGER SecurityChangeTime; + FILE_OLE_CLASSID_INFORMATION OleClassIdInformation; + FILE_OBJECTID_INFORMATION ObjectIdInformation; + FILE_STORAGE_TYPE StorageType; + ULONG OleStateBits; + BOOLEAN ContentIndexDisable; + BOOLEAN InheritContentIndexDisable; +} FILE_OLE_INFORMATION, *PFILE_OLE_INFORMATION; -NTKERNELAPI -VOID -NTAPI -FsRtlNotifyFilterChangeDirectory( - IN PNOTIFY_SYNC NotifySync, - IN PLIST_ENTRY NotifyList, - IN PVOID FsContext, - IN PSTRING FullDirectoryName, - IN BOOLEAN WatchTree, - IN BOOLEAN IgnoreBuffer, - IN ULONG CompletionFilter, - IN PIRP NotifyIrp OPTIONAL, - IN PCHECK_FOR_TRAVERSE_ACCESS TraverseCallback OPTIONAL, - IN PSECURITY_SUBJECT_CONTEXT SubjectContext OPTIONAL, - IN PFILTER_REPORT_CHANGE FilterCallback OPTIONAL); +typedef struct _FILE_OLE_STATE_BITS_INFORMATION { + ULONG StateBits; + ULONG StateBitsMask; +} FILE_OLE_STATE_BITS_INFORMATION, *PFILE_OLE_STATE_BITS_INFORMATION; -NTKERNELAPI -NTSTATUS -NTAPI -FsRtlInsertPerStreamContext( - IN PFSRTL_ADVANCED_FCB_HEADER PerStreamContext, - IN PFSRTL_PER_STREAM_CONTEXT Ptr); +typedef enum _FSRTL_COMPARISON_RESULT +{ + LessThan = -1, + EqualTo = 0, + GreaterThan = 1 +} FSRTL_COMPARISON_RESULT; + +#if (VER_PRODUCTBUILD >= 2600) -NTKERNELAPI -PFSRTL_PER_STREAM_CONTEXT -NTAPI -FsRtlLookupPerStreamContextInternal( - IN PFSRTL_ADVANCED_FCB_HEADER StreamContext, - IN PVOID OwnerId OPTIONAL, - IN PVOID InstanceId OPTIONAL); +typedef struct _FSRTL_PER_STREAM_CONTEXT { + LIST_ENTRY Links; + PVOID OwnerId; + PVOID InstanceId; + PFREE_FUNCTION FreeCallback; +} FSRTL_PER_STREAM_CONTEXT, *PFSRTL_PER_STREAM_CONTEXT; -NTKERNELAPI -PFSRTL_PER_STREAM_CONTEXT -NTAPI -FsRtlRemovePerStreamContext( - IN PFSRTL_ADVANCED_FCB_HEADER StreamContext, - IN PVOID OwnerId OPTIONAL, - IN PVOID InstanceId OPTIONAL); +typedef struct _FSRTL_PER_FILEOBJECT_CONTEXT +{ + LIST_ENTRY Links; + PVOID OwnerId; + PVOID InstanceId; +} FSRTL_PER_FILEOBJECT_CONTEXT, *PFSRTL_PER_FILEOBJECT_CONTEXT; -NTKERNELAPI -VOID -NTAPI -FsRtlIncrementCcFastReadNotPossible( - VOID); +#endif /* (VER_PRODUCTBUILD >= 2600) */ -NTKERNELAPI -VOID -NTAPI -FsRtlIncrementCcFastReadWait( - VOID); +typedef struct _BASE_MCB +{ + ULONG MaximumPairCount; + ULONG PairCount; + USHORT PoolType; + USHORT Flags; + PVOID Mapping; +} BASE_MCB, *PBASE_MCB; -NTKERNELAPI -VOID -NTAPI -FsRtlIncrementCcFastReadNoWait( - VOID); +typedef struct _LARGE_MCB +{ + PKGUARDED_MUTEX GuardedMutex; + BASE_MCB BaseMcb; +} LARGE_MCB, *PLARGE_MCB; -NTKERNELAPI -VOID -NTAPI -FsRtlIncrementCcFastReadResourceMiss( - VOID); +typedef struct _MCB +{ + LARGE_MCB DummyFieldThatSizesThisStructureCorrectly; +} MCB, *PMCB; -NTKERNELAPI -LOGICAL -NTAPI -FsRtlIsPagingFile( - IN PFILE_OBJECT FileObject); +typedef struct _MAPPING_PAIR { + ULONGLONG Vcn; + ULONGLONG Lcn; +} MAPPING_PAIR, *PMAPPING_PAIR; -#endif /* (NTDDI_VERSION >= NTDDI_WINXP) */ +typedef struct _GET_RETRIEVAL_DESCRIPTOR { + ULONG NumberOfPairs; + ULONGLONG StartVcn; + MAPPING_PAIR Pair[1]; +} GET_RETRIEVAL_DESCRIPTOR, *PGET_RETRIEVAL_DESCRIPTOR; -#if (NTDDI_VERSION >= NTDDI_WS03) +#define ASSERT_QUEUE(Q) ASSERT(((Q)->Header.Type & KOBJECT_TYPE_MASK) == QueueObject); -NTKERNELAPI -VOID -NTAPI -FsRtlInitializeBaseMcb( - IN PBASE_MCB Mcb, - IN POOL_TYPE PoolType); +typedef struct _MBCB { + CSHORT NodeTypeCode; + CSHORT NodeIsInZone; + ULONG PagesToWrite; + ULONG DirtyPages; + ULONG Reserved; + LIST_ENTRY BitmapRanges; + LONGLONG ResumeWritePage; + BITMAP_RANGE BitmapRange1; + BITMAP_RANGE BitmapRange2; + BITMAP_RANGE BitmapRange3; +} MBCB, *PMBCB; -NTKERNELAPI -VOID -NTAPI -FsRtlUninitializeBaseMcb( - IN PBASE_MCB Mcb); +typedef struct _MOVEFILE_DESCRIPTOR { + HANDLE FileHandle; + ULONG Reserved; + LARGE_INTEGER StartVcn; + LARGE_INTEGER TargetLcn; + ULONG NumVcns; + ULONG Reserved1; +} MOVEFILE_DESCRIPTOR, *PMOVEFILE_DESCRIPTOR; -NTKERNELAPI -VOID -NTAPI -FsRtlResetBaseMcb( - IN PBASE_MCB Mcb); +typedef struct _OBJECT_BASIC_INFO { + ULONG Attributes; + ACCESS_MASK GrantedAccess; + ULONG HandleCount; + ULONG ReferenceCount; + ULONG PagedPoolUsage; + ULONG NonPagedPoolUsage; + ULONG Reserved[3]; + ULONG NameInformationLength; + ULONG TypeInformationLength; + ULONG SecurityDescriptorLength; + LARGE_INTEGER CreateTime; +} OBJECT_BASIC_INFO, *POBJECT_BASIC_INFO; -NTKERNELAPI -VOID -NTAPI -FsRtlTruncateBaseMcb( - IN PBASE_MCB Mcb, - IN LONGLONG Vbn); +typedef struct _OBJECT_HANDLE_ATTRIBUTE_INFO { + BOOLEAN Inherit; + BOOLEAN ProtectFromClose; +} OBJECT_HANDLE_ATTRIBUTE_INFO, *POBJECT_HANDLE_ATTRIBUTE_INFO; -NTKERNELAPI -BOOLEAN -NTAPI -FsRtlAddBaseMcbEntry( - IN PBASE_MCB Mcb, - IN LONGLONG Vbn, - IN LONGLONG Lbn, - IN LONGLONG SectorCount); +typedef struct _OBJECT_NAME_INFO { + UNICODE_STRING ObjectName; + WCHAR ObjectNameBuffer[1]; +} OBJECT_NAME_INFO, *POBJECT_NAME_INFO; -NTKERNELAPI -BOOLEAN -NTAPI -FsRtlRemoveBaseMcbEntry( - IN PBASE_MCB Mcb, - IN LONGLONG Vbn, - IN LONGLONG SectorCount); +typedef struct _OBJECT_PROTECTION_INFO { + BOOLEAN Inherit; + BOOLEAN ProtectHandle; +} OBJECT_PROTECTION_INFO, *POBJECT_PROTECTION_INFO; -NTKERNELAPI -BOOLEAN -NTAPI -FsRtlLookupBaseMcbEntry( - IN PBASE_MCB Mcb, - IN LONGLONG Vbn, - OUT PLONGLONG Lbn OPTIONAL, - OUT PLONGLONG SectorCountFromLbn OPTIONAL, - OUT PLONGLONG StartingLbn OPTIONAL, - OUT PLONGLONG SectorCountFromStartingLbn OPTIONAL, - OUT PULONG Index OPTIONAL); +typedef struct _OBJECT_TYPE_INFO { + UNICODE_STRING ObjectTypeName; + UCHAR Unknown[0x58]; + WCHAR ObjectTypeNameBuffer[1]; +} OBJECT_TYPE_INFO, *POBJECT_TYPE_INFO; -NTKERNELAPI -BOOLEAN -NTAPI -FsRtlLookupLastBaseMcbEntry( - IN PBASE_MCB Mcb, - OUT PLONGLONG Vbn, - OUT PLONGLONG Lbn); +typedef struct _OBJECT_ALL_TYPES_INFO { + ULONG NumberOfObjectTypes; + OBJECT_TYPE_INFO ObjectsTypeInfo[1]; +} OBJECT_ALL_TYPES_INFO, *POBJECT_ALL_TYPES_INFO; -NTKERNELAPI -BOOLEAN -NTAPI -FsRtlLookupLastBaseMcbEntryAndIndex( - IN PBASE_MCB OpaqueMcb, - IN OUT PLONGLONG LargeVbn, - IN OUT PLONGLONG LargeLbn, - IN OUT PULONG Index); +typedef enum _RTL_GENERIC_COMPARE_RESULTS +{ + GenericLessThan, + GenericGreaterThan, + GenericEqual +} RTL_GENERIC_COMPARE_RESULTS; -NTKERNELAPI -ULONG -NTAPI -FsRtlNumberOfRunsInBaseMcb( - IN PBASE_MCB Mcb); +typedef enum _TABLE_SEARCH_RESULT +{ + TableEmptyTree, + TableFoundNode, + TableInsertAsLeft, + TableInsertAsRight +} TABLE_SEARCH_RESULT; -NTKERNELAPI -BOOLEAN -NTAPI -FsRtlGetNextBaseMcbEntry( - IN PBASE_MCB Mcb, - IN ULONG RunIndex, - OUT PLONGLONG Vbn, - OUT PLONGLONG Lbn, - OUT PLONGLONG SectorCount); +typedef NTSTATUS +(NTAPI *PRTL_AVL_MATCH_FUNCTION)( + struct _RTL_AVL_TABLE *Table, + PVOID UserData, + PVOID MatchData +); -NTKERNELAPI -BOOLEAN -NTAPI -FsRtlSplitBaseMcb( - IN PBASE_MCB Mcb, - IN LONGLONG Vbn, - IN LONGLONG Amount); +typedef RTL_GENERIC_COMPARE_RESULTS +(NTAPI *PRTL_AVL_COMPARE_ROUTINE) ( + struct _RTL_AVL_TABLE *Table, + PVOID FirstStruct, + PVOID SecondStruct +); -#endif /* (NTDDI_VERSION >= NTDDI_WS03) */ +typedef RTL_GENERIC_COMPARE_RESULTS +(NTAPI *PRTL_GENERIC_COMPARE_ROUTINE) ( + struct _RTL_GENERIC_TABLE *Table, + PVOID FirstStruct, + PVOID SecondStruct +); -#if (NTDDI_VERSION >= NTDDI_VISTA) +typedef PVOID +(NTAPI *PRTL_GENERIC_ALLOCATE_ROUTINE) ( + struct _RTL_GENERIC_TABLE *Table, + CLONG ByteSize +); -BOOLEAN -NTAPI -FsRtlInitializeBaseMcbEx( - IN PBASE_MCB Mcb, - IN POOL_TYPE PoolType, - IN USHORT Flags); +typedef VOID +(NTAPI *PRTL_GENERIC_FREE_ROUTINE) ( + struct _RTL_GENERIC_TABLE *Table, + PVOID Buffer +); -NTSTATUS -NTAPI -FsRtlAddBaseMcbEntryEx( - IN PBASE_MCB Mcb, - IN LONGLONG Vbn, - IN LONGLONG Lbn, - IN LONGLONG SectorCount); +typedef PVOID +(NTAPI *PRTL_AVL_ALLOCATE_ROUTINE) ( + struct _RTL_AVL_TABLE *Table, + CLONG ByteSize +); -NTKERNELAPI -BOOLEAN -NTAPI -FsRtlCurrentOplock( - IN POPLOCK Oplock); +typedef VOID +(NTAPI *PRTL_AVL_FREE_ROUTINE) ( + struct _RTL_AVL_TABLE *Table, + PVOID Buffer +); -NTKERNELAPI -NTSTATUS -NTAPI -FsRtlOplockBreakToNone( - IN OUT POPLOCK Oplock, - IN PIO_STACK_LOCATION IrpSp OPTIONAL, - IN PIRP Irp, - IN PVOID Context OPTIONAL, - IN POPLOCK_WAIT_COMPLETE_ROUTINE CompletionRoutine OPTIONAL, - IN POPLOCK_FS_PREPOST_IRP PostIrpRoutine OPTIONAL); +typedef struct _PUBLIC_BCB { + CSHORT NodeTypeCode; + CSHORT NodeByteSize; + ULONG MappedLength; + LARGE_INTEGER MappedFileOffset; +} PUBLIC_BCB, *PPUBLIC_BCB; -NTKERNELAPI -NTSTATUS -NTAPI -FsRtlNotifyVolumeEventEx( - IN PFILE_OBJECT FileObject, - IN ULONG EventCode, - IN PTARGET_DEVICE_CUSTOM_NOTIFICATION Event); +typedef struct _QUERY_PATH_REQUEST { + ULONG PathNameLength; + PIO_SECURITY_CONTEXT SecurityContext; + WCHAR FilePathName[1]; +} QUERY_PATH_REQUEST, *PQUERY_PATH_REQUEST; -NTKERNELAPI -VOID -NTAPI -FsRtlNotifyCleanupAll( - IN PNOTIFY_SYNC NotifySync, - IN PLIST_ENTRY NotifyList); +typedef struct _QUERY_PATH_RESPONSE { + ULONG LengthAccepted; +} QUERY_PATH_RESPONSE, *PQUERY_PATH_RESPONSE; -NTSTATUS -NTAPI -FsRtlRegisterUncProviderEx( - OUT PHANDLE MupHandle, - IN PUNICODE_STRING RedirDevName, - IN PDEVICE_OBJECT DeviceObject, - IN ULONG Flags); +typedef struct _RTL_BALANCED_LINKS +{ + struct _RTL_BALANCED_LINKS *Parent; + struct _RTL_BALANCED_LINKS *LeftChild; + struct _RTL_BALANCED_LINKS *RightChild; + CHAR Balance; + UCHAR Reserved[3]; +} RTL_BALANCED_LINKS, *PRTL_BALANCED_LINKS; + +typedef struct _RTL_GENERIC_TABLE +{ + PRTL_SPLAY_LINKS TableRoot; + LIST_ENTRY InsertOrderList; + PLIST_ENTRY OrderedPointer; + ULONG WhichOrderedElement; + ULONG NumberGenericTableElements; + PRTL_GENERIC_COMPARE_ROUTINE CompareRoutine; + PRTL_GENERIC_ALLOCATE_ROUTINE AllocateRoutine; + PRTL_GENERIC_FREE_ROUTINE FreeRoutine; + PVOID TableContext; +} RTL_GENERIC_TABLE, *PRTL_GENERIC_TABLE; + +#undef PRTL_GENERIC_COMPARE_ROUTINE +#undef PRTL_GENERIC_ALLOCATE_ROUTINE +#undef PRTL_GENERIC_FREE_ROUTINE +#undef RTL_GENERIC_TABLE +#undef PRTL_GENERIC_TABLE + +#define PRTL_GENERIC_COMPARE_ROUTINE PRTL_AVL_COMPARE_ROUTINE +#define PRTL_GENERIC_ALLOCATE_ROUTINE PRTL_AVL_ALLOCATE_ROUTINE +#define PRTL_GENERIC_FREE_ROUTINE PRTL_AVL_FREE_ROUTINE +#define RTL_GENERIC_TABLE RTL_AVL_TABLE +#define PRTL_GENERIC_TABLE PRTL_AVL_TABLE + +#define RtlInitializeGenericTable RtlInitializeGenericTableAvl +#define RtlInsertElementGenericTable RtlInsertElementGenericTableAvl +#define RtlInsertElementGenericTableFull RtlInsertElementGenericTableFullAvl +#define RtlDeleteElementGenericTable RtlDeleteElementGenericTableAvl +#define RtlLookupElementGenericTable RtlLookupElementGenericTableAvl +#define RtlLookupElementGenericTableFull RtlLookupElementGenericTableFullAvl +#define RtlEnumerateGenericTable RtlEnumerateGenericTableAvl +#define RtlEnumerateGenericTableWithoutSplaying RtlEnumerateGenericTableWithoutSplayingAvl +#define RtlGetElementGenericTable RtlGetElementGenericTableAvl +#define RtlNumberGenericTableElements RtlNumberGenericTableElementsAvl +#define RtlIsGenericTableEmpty RtlIsGenericTableEmptyAvl + +typedef struct _RTL_AVL_TABLE +{ + RTL_BALANCED_LINKS BalancedRoot; + PVOID OrderedPointer; + ULONG WhichOrderedElement; + ULONG NumberGenericTableElements; + ULONG DepthOfTree; + PRTL_BALANCED_LINKS RestartKey; + ULONG DeleteCount; + PRTL_AVL_COMPARE_ROUTINE CompareRoutine; + PRTL_AVL_ALLOCATE_ROUTINE AllocateRoutine; + PRTL_AVL_FREE_ROUTINE FreeRoutine; + PVOID TableContext; +} RTL_AVL_TABLE, *PRTL_AVL_TABLE; + +NTSYSAPI +VOID +NTAPI +RtlInitializeGenericTableAvl( + PRTL_AVL_TABLE Table, + PRTL_AVL_COMPARE_ROUTINE CompareRoutine, + PRTL_AVL_ALLOCATE_ROUTINE AllocateRoutine, + PRTL_AVL_FREE_ROUTINE FreeRoutine, + PVOID TableContext +); -NTKERNELAPI -NTSTATUS +NTSYSAPI +PVOID NTAPI -FsRtlCancellableWaitForSingleObject( - IN PVOID Object, - IN PLARGE_INTEGER Timeout OPTIONAL, - IN PIRP Irp OPTIONAL); - -NTKERNELAPI -NTSTATUS +RtlInsertElementGenericTableAvl ( + PRTL_AVL_TABLE Table, + PVOID Buffer, + CLONG BufferSize, + PBOOLEAN NewElement OPTIONAL + ); + +NTSYSAPI +BOOLEAN NTAPI -FsRtlCancellableWaitForMultipleObjects( - IN ULONG Count, - IN PVOID ObjectArray[], - IN WAIT_TYPE WaitType, - IN PLARGE_INTEGER Timeout OPTIONAL, - IN PKWAIT_BLOCK WaitBlockArray OPTIONAL, - IN PIRP Irp OPTIONAL); - -NTKERNELAPI -NTSTATUS +RtlDeleteElementGenericTableAvl ( + PRTL_AVL_TABLE Table, + PVOID Buffer + ); + +NTSYSAPI +PVOID NTAPI -FsRtlMupGetProviderInfoFromFileObject( - IN PFILE_OBJECT pFileObject, - IN ULONG Level, - OUT PVOID pBuffer, - IN OUT PULONG pBufferSize); - -NTKERNELAPI -NTSTATUS +RtlLookupElementGenericTableAvl ( + PRTL_AVL_TABLE Table, + PVOID Buffer + ); + +NTSYSAPI +PVOID NTAPI -FsRtlMupGetProviderIdFromName( - IN PUNICODE_STRING pProviderName, - OUT PULONG32 pProviderId); +RtlEnumerateGenericTableWithoutSplayingAvl ( + PRTL_AVL_TABLE Table, + PVOID *RestartKey + ); -NTKERNELAPI -VOID -NTAPI -FsRtlIncrementCcFastMdlReadWait( - VOID); +#if defined(USE_LPC6432) +#define LPC_CLIENT_ID CLIENT_ID64 +#define LPC_SIZE_T ULONGLONG +#define LPC_PVOID ULONGLONG +#define LPC_HANDLE ULONGLONG +#else +#define LPC_CLIENT_ID CLIENT_ID +#define LPC_SIZE_T SIZE_T +#define LPC_PVOID PVOID +#define LPC_HANDLE HANDLE +#endif + +typedef struct _PORT_MESSAGE +{ + union + { + struct + { + CSHORT DataLength; + CSHORT TotalLength; + } s1; + ULONG Length; + } u1; + union + { + struct + { + CSHORT Type; + CSHORT DataInfoOffset; + } s2; + ULONG ZeroInit; + } u2; + __GNU_EXTENSION union + { + LPC_CLIENT_ID ClientId; + double DoNotUseThisField; + }; + ULONG MessageId; + __GNU_EXTENSION union + { + LPC_SIZE_T ClientViewSize; + ULONG CallbackId; + }; +} PORT_MESSAGE, *PPORT_MESSAGE; + +#define LPC_KERNELMODE_MESSAGE (CSHORT)((USHORT)0x8000) + +typedef struct _PORT_VIEW +{ + ULONG Length; + LPC_HANDLE SectionHandle; + ULONG SectionOffset; + LPC_SIZE_T ViewSize; + LPC_PVOID ViewBase; + LPC_PVOID ViewRemoteBase; +} PORT_VIEW, *PPORT_VIEW; + +typedef struct _REMOTE_PORT_VIEW +{ + ULONG Length; + LPC_SIZE_T ViewSize; + LPC_PVOID ViewBase; +} REMOTE_PORT_VIEW, *PREMOTE_PORT_VIEW; + +typedef struct _TUNNEL { + FAST_MUTEX Mutex; + PRTL_SPLAY_LINKS Cache; + LIST_ENTRY TimerQueue; + USHORT NumEntries; +} TUNNEL, *PTUNNEL; + +typedef struct _VAD_HEADER { + PVOID StartVPN; + PVOID EndVPN; + struct _VAD_HEADER* ParentLink; + struct _VAD_HEADER* LeftLink; + struct _VAD_HEADER* RightLink; + ULONG Flags; /* LSB = CommitCharge */ + PVOID ControlArea; + PVOID FirstProtoPte; + PVOID LastPTE; + ULONG Unknown; + LIST_ENTRY Secured; +} VAD_HEADER, *PVAD_HEADER; + +#if (VER_PRODUCTBUILD >= 2600) + +typedef BOOLEAN +(NTAPI *PFILTER_REPORT_CHANGE) ( + IN PVOID NotifyContext, + IN PVOID FilterContext +); + +#endif NTKERNELAPI -NTSTATUS +BOOLEAN NTAPI -FsRtlValidateReparsePointBuffer( - IN ULONG BufferLength, - IN PREPARSE_DATA_BUFFER ReparseBuffer); +CcCanIWrite ( + IN PFILE_OBJECT FileObject, + IN ULONG BytesToWrite, + IN BOOLEAN Wait, + IN BOOLEAN Retrying +); NTKERNELAPI -NTSTATUS +BOOLEAN NTAPI -FsRtlRemoveDotsFromPath( - IN OUT PWSTR OriginalString, - IN USHORT PathLength, - OUT USHORT *NewLength); +CcCopyRead ( + IN PFILE_OBJECT FileObject, + IN PLARGE_INTEGER FileOffset, + IN ULONG Length, + IN BOOLEAN Wait, + OUT PVOID Buffer, + OUT PIO_STATUS_BLOCK IoStatus +); NTKERNELAPI -NTSTATUS +BOOLEAN NTAPI -FsRtlAllocateExtraCreateParameterList( - IN FSRTL_ALLOCATE_ECPLIST_FLAGS Flags, - OUT PECP_LIST *EcpList); +CcCopyWrite ( + IN PFILE_OBJECT FileObject, + IN PLARGE_INTEGER FileOffset, + IN ULONG Length, + IN BOOLEAN Wait, + IN PVOID Buffer +); + +#define CcCopyWriteWontFlush(FO, FOFF, LEN) ((LEN) <= 0x10000) + +typedef VOID (NTAPI *PCC_POST_DEFERRED_WRITE) ( + IN PVOID Context1, + IN PVOID Context2 +); NTKERNELAPI VOID NTAPI -FsRtlFreeExtraCreateParameterList( - IN PECP_LIST EcpList); +CcDeferWrite ( + IN PFILE_OBJECT FileObject, + IN PCC_POST_DEFERRED_WRITE PostRoutine, + IN PVOID Context1, + IN PVOID Context2, + IN ULONG BytesToWrite, + IN BOOLEAN Retrying +); NTKERNELAPI -NTSTATUS +VOID NTAPI -FsRtlAllocateExtraCreateParameter( - IN LPCGUID EcpType, - IN ULONG SizeOfContext, - IN FSRTL_ALLOCATE_ECP_FLAGS Flags, - IN PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK CleanupCallback OPTIONAL, - IN ULONG PoolTag, - OUT PVOID *EcpContext); +CcFastCopyRead ( + IN PFILE_OBJECT FileObject, + IN ULONG FileOffset, + IN ULONG Length, + IN ULONG PageCount, + OUT PVOID Buffer, + OUT PIO_STATUS_BLOCK IoStatus +); NTKERNELAPI VOID NTAPI -FsRtlFreeExtraCreateParameter( - IN PVOID EcpContext); +CcFastCopyWrite ( + IN PFILE_OBJECT FileObject, + IN ULONG FileOffset, + IN ULONG Length, + IN PVOID Buffer +); NTKERNELAPI VOID NTAPI -FsRtlInitExtraCreateParameterLookasideList( - IN OUT PVOID Lookaside, - IN FSRTL_ECP_LOOKASIDE_FLAGS Flags, - IN SIZE_T Size, - IN ULONG Tag); +CcFlushCache ( + IN PSECTION_OBJECT_POINTERS SectionObjectPointer, + IN PLARGE_INTEGER FileOffset OPTIONAL, + IN ULONG Length, + OUT PIO_STATUS_BLOCK IoStatus OPTIONAL +); -VOID -NTAPI -FsRtlDeleteExtraCreateParameterLookasideList( - IN OUT PVOID Lookaside, - IN FSRTL_ECP_LOOKASIDE_FLAGS Flags); +typedef VOID (NTAPI *PDIRTY_PAGE_ROUTINE) ( + IN PFILE_OBJECT FileObject, + IN PLARGE_INTEGER FileOffset, + IN ULONG Length, + IN PLARGE_INTEGER OldestLsn, + IN PLARGE_INTEGER NewestLsn, + IN PVOID Context1, + IN PVOID Context2 +); NTKERNELAPI -NTSTATUS +LARGE_INTEGER NTAPI -FsRtlAllocateExtraCreateParameterFromLookasideList( - IN LPCGUID EcpType, - IN ULONG SizeOfContext, - IN FSRTL_ALLOCATE_ECP_FLAGS Flags, - IN PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK CleanupCallback OPTIONAL, - IN OUT PVOID LookasideList, - OUT PVOID *EcpContext); +CcGetDirtyPages ( + IN PVOID LogHandle, + IN PDIRTY_PAGE_ROUTINE DirtyPageRoutine, + IN PVOID Context1, + IN PVOID Context2 +); NTKERNELAPI -NTSTATUS +PFILE_OBJECT NTAPI -FsRtlInsertExtraCreateParameter( - IN OUT PECP_LIST EcpList, - IN OUT PVOID EcpContext); +CcGetFileObjectFromBcb ( + IN PVOID Bcb +); NTKERNELAPI -NTSTATUS +PFILE_OBJECT NTAPI -FsRtlFindExtraCreateParameter( - IN PECP_LIST EcpList, - IN LPCGUID EcpType, - OUT PVOID *EcpContext OPTIONAL, - OUT ULONG *EcpContextSize OPTIONAL); +CcGetFileObjectFromSectionPtrs ( + IN PSECTION_OBJECT_POINTERS SectionObjectPointer +); -NTKERNELAPI -NTSTATUS -NTAPI -FsRtlRemoveExtraCreateParameter( - IN OUT PECP_LIST EcpList, - IN LPCGUID EcpType, - OUT PVOID *EcpContext, - OUT ULONG *EcpContextSize OPTIONAL); +#define CcGetFileSizePointer(FO) ( \ + ((PLARGE_INTEGER)((FO)->SectionObjectPointer->SharedCacheMap) + 1) \ +) -NTKERNELAPI -NTSTATUS -NTAPI -FsRtlGetEcpListFromIrp( - IN PIRP Irp, - OUT PECP_LIST *EcpList OPTIONAL); +#if (VER_PRODUCTBUILD >= 2195) NTKERNELAPI -NTSTATUS +LARGE_INTEGER NTAPI -FsRtlSetEcpListIntoIrp( - IN OUT PIRP Irp, - IN PECP_LIST EcpList); +CcGetFlushedValidData ( + IN PSECTION_OBJECT_POINTERS SectionObjectPointer, + IN BOOLEAN BcbListHeld +); -NTKERNELAPI -NTSTATUS -NTAPI -FsRtlGetNextExtraCreateParameter( - IN PECP_LIST EcpList, - IN PVOID CurrentEcpContext OPTIONAL, - OUT LPGUID NextEcpType OPTIONAL, - OUT PVOID *NextEcpContext OPTIONAL, - OUT ULONG *NextEcpContextSize OPTIONAL); +#endif /* (VER_PRODUCTBUILD >= 2195) */ NTKERNELAPI -VOID +LARGE_INTEGER NTAPI -FsRtlAcknowledgeEcp( - IN PVOID EcpContext); +CcGetLsnForFileObject ( + IN PFILE_OBJECT FileObject, + OUT PLARGE_INTEGER OldestLsn OPTIONAL +); -NTKERNELAPI -BOOLEAN -NTAPI -FsRtlIsEcpAcknowledged( - IN PVOID EcpContext); +typedef BOOLEAN (NTAPI *PACQUIRE_FOR_LAZY_WRITE) ( + IN PVOID Context, + IN BOOLEAN Wait +); -NTKERNELAPI -BOOLEAN -NTAPI -FsRtlIsEcpFromUserMode( - IN PVOID EcpContext); +typedef VOID (NTAPI *PRELEASE_FROM_LAZY_WRITE) ( + IN PVOID Context +); + +typedef BOOLEAN (NTAPI *PACQUIRE_FOR_READ_AHEAD) ( + IN PVOID Context, + IN BOOLEAN Wait +); + +typedef VOID (NTAPI *PRELEASE_FROM_READ_AHEAD) ( + IN PVOID Context +); + +typedef struct _CACHE_MANAGER_CALLBACKS { + PACQUIRE_FOR_LAZY_WRITE AcquireForLazyWrite; + PRELEASE_FROM_LAZY_WRITE ReleaseFromLazyWrite; + PACQUIRE_FOR_READ_AHEAD AcquireForReadAhead; + PRELEASE_FROM_READ_AHEAD ReleaseFromReadAhead; +} CACHE_MANAGER_CALLBACKS, *PCACHE_MANAGER_CALLBACKS; NTKERNELAPI -NTSTATUS +VOID NTAPI -FsRtlChangeBackingFileObject( - IN PFILE_OBJECT CurrentFileObject OPTIONAL, - IN PFILE_OBJECT NewFileObject, - IN FSRTL_CHANGE_BACKING_TYPE ChangeBackingType, - IN ULONG Flags); +CcInitializeCacheMap ( + IN PFILE_OBJECT FileObject, + IN PCC_FILE_SIZES FileSizes, + IN BOOLEAN PinAccess, + IN PCACHE_MANAGER_CALLBACKS Callbacks, + IN PVOID LazyWriteContext +); + +#define CcIsFileCached(FO) ( \ + ((FO)->SectionObjectPointer != NULL) && \ + (((PSECTION_OBJECT_POINTERS)(FO)->SectionObjectPointer)->SharedCacheMap != NULL) \ +) + +extern ULONG CcFastMdlReadWait; NTKERNELAPI -NTSTATUS +BOOLEAN NTAPI -FsRtlLogCcFlushError( - IN PUNICODE_STRING FileName, - IN PDEVICE_OBJECT DeviceObject, - IN PSECTION_OBJECT_POINTERS SectionObjectPointer, - IN NTSTATUS FlushError, - IN ULONG Flags); +CcIsThereDirtyData ( + IN PVPB Vpb +); NTKERNELAPI BOOLEAN NTAPI -FsRtlAreVolumeStartupApplicationsComplete( - VOID); +CcMapData ( + IN PFILE_OBJECT FileObject, + IN PLARGE_INTEGER FileOffset, + IN ULONG Length, + IN ULONG Flags, + OUT PVOID *Bcb, + OUT PVOID *Buffer +); NTKERNELAPI -ULONG +VOID NTAPI -FsRtlQueryMaximumVirtualDiskNestingLevel( - VOID); +CcMdlRead ( + IN PFILE_OBJECT FileObject, + IN PLARGE_INTEGER FileOffset, + IN ULONG Length, + OUT PMDL *MdlChain, + OUT PIO_STATUS_BLOCK IoStatus +); NTKERNELAPI -NTSTATUS +VOID NTAPI -FsRtlGetVirtualDiskNestingLevel( - IN PDEVICE_OBJECT DeviceObject, - OUT PULONG NestingLevel, - OUT PULONG NestingFlags OPTIONAL); - -#endif /* (NTDDI_VERSION >= NTDDI_VISTA) */ +CcMdlReadComplete ( + IN PFILE_OBJECT FileObject, + IN PMDL MdlChain +); -#if (NTDDI_VERSION >= NTDDI_VISTASP1) NTKERNELAPI -NTSTATUS +VOID NTAPI -FsRtlCheckOplockEx( - IN POPLOCK Oplock, - IN PIRP Irp, - IN ULONG Flags, - IN PVOID Context OPTIONAL, - IN POPLOCK_WAIT_COMPLETE_ROUTINE CompletionRoutine OPTIONAL, - IN POPLOCK_FS_PREPOST_IRP PostIrpRoutine OPTIONAL); - -#endif +CcMdlWriteComplete ( + IN PFILE_OBJECT FileObject, + IN PLARGE_INTEGER FileOffset, + IN PMDL MdlChain +); -#if (NTDDI_VERSION >= NTDDI_WIN7) +#define MAP_WAIT 1 NTKERNELAPI BOOLEAN NTAPI -FsRtlAreThereCurrentOrInProgressFileLocks( - IN PFILE_LOCK FileLock); +CcPinMappedData ( + IN PFILE_OBJECT FileObject, + IN PLARGE_INTEGER FileOffset, + IN ULONG Length, + IN ULONG Flags, + IN OUT PVOID *Bcb +); NTKERNELAPI BOOLEAN NTAPI -FsRtlOplockIsSharedRequest( - IN PIRP Irp); +CcPinRead ( + IN PFILE_OBJECT FileObject, + IN PLARGE_INTEGER FileOffset, + IN ULONG Length, + IN ULONG Flags, + OUT PVOID *Bcb, + OUT PVOID *Buffer +); NTKERNELAPI -NTSTATUS +VOID NTAPI -FsRtlOplockBreakH( - IN POPLOCK Oplock, - IN PIRP Irp, - IN ULONG Flags, - IN PVOID Context OPTIONAL, - IN POPLOCK_WAIT_COMPLETE_ROUTINE CompletionRoutine OPTIONAL, - IN POPLOCK_FS_PREPOST_IRP PostIrpRoutine OPTIONAL); +CcPrepareMdlWrite ( + IN PFILE_OBJECT FileObject, + IN PLARGE_INTEGER FileOffset, + IN ULONG Length, + OUT PMDL *MdlChain, + OUT PIO_STATUS_BLOCK IoStatus +); NTKERNELAPI BOOLEAN NTAPI -FsRtlCurrentOplockH( - IN POPLOCK Oplock); +CcPreparePinWrite ( + IN PFILE_OBJECT FileObject, + IN PLARGE_INTEGER FileOffset, + IN ULONG Length, + IN BOOLEAN Zero, + IN ULONG Flags, + OUT PVOID *Bcb, + OUT PVOID *Buffer +); NTKERNELAPI -NTSTATUS +BOOLEAN NTAPI -FsRtlOplockBreakToNoneEx( - IN OUT POPLOCK Oplock, - IN PIRP Irp, - IN ULONG Flags, - IN PVOID Context OPTIONAL, - IN POPLOCK_WAIT_COMPLETE_ROUTINE CompletionRoutine OPTIONAL, - IN POPLOCK_FS_PREPOST_IRP PostIrpRoutine OPTIONAL); +CcPurgeCacheSection ( + IN PSECTION_OBJECT_POINTERS SectionObjectPointer, + IN PLARGE_INTEGER FileOffset OPTIONAL, + IN ULONG Length, + IN BOOLEAN UninitializeCacheMaps +); + +#define CcReadAhead(FO, FOFF, LEN) ( \ + if ((LEN) >= 256) { \ + CcScheduleReadAhead((FO), (FOFF), (LEN)); \ + } \ +) + +#if (VER_PRODUCTBUILD >= 2195) NTKERNELAPI -NTSTATUS +PVOID NTAPI -FsRtlOplockFsctrlEx( - IN POPLOCK Oplock, - IN PIRP Irp, - IN ULONG OpenCount, - IN ULONG Flags); +CcRemapBcb ( + IN PVOID Bcb +); + +#endif /* (VER_PRODUCTBUILD >= 2195) */ NTKERNELAPI -BOOLEAN +VOID NTAPI -FsRtlOplockKeysEqual( - IN PFILE_OBJECT Fo1 OPTIONAL, - IN PFILE_OBJECT Fo2 OPTIONAL); +CcRepinBcb ( + IN PVOID Bcb +); NTKERNELAPI -NTSTATUS +VOID NTAPI -FsRtlInitializeExtraCreateParameterList( - IN OUT PECP_LIST EcpList); +CcScheduleReadAhead ( + IN PFILE_OBJECT FileObject, + IN PLARGE_INTEGER FileOffset, + IN ULONG Length +); NTKERNELAPI VOID NTAPI -FsRtlInitializeExtraCreateParameter( - IN PECP_HEADER Ecp, - IN ULONG EcpFlags, - IN PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK CleanupCallback OPTIONAL, - IN ULONG TotalSize, - IN LPCGUID EcpType, - IN PVOID ListAllocatedFrom OPTIONAL); - -#endif /* (NTDDI_VERSION >= NTDDI_WIN7) */ +CcSetAdditionalCacheAttributes ( + IN PFILE_OBJECT FileObject, + IN BOOLEAN DisableReadAhead, + IN BOOLEAN DisableWriteBehind +); NTKERNELAPI -NTSTATUS +VOID NTAPI -FsRtlInsertPerFileContext( - IN PVOID* PerFileContextPointer, - IN PFSRTL_PER_FILE_CONTEXT Ptr); +CcSetBcbOwnerPointer ( + IN PVOID Bcb, + IN PVOID OwnerPointer +); NTKERNELAPI -PFSRTL_PER_FILE_CONTEXT +VOID NTAPI -FsRtlLookupPerFileContext( - IN PVOID* PerFileContextPointer, - IN PVOID OwnerId OPTIONAL, - IN PVOID InstanceId OPTIONAL); +CcSetDirtyPageThreshold ( + IN PFILE_OBJECT FileObject, + IN ULONG DirtyPageThreshold +); NTKERNELAPI -PFSRTL_PER_FILE_CONTEXT +VOID NTAPI -FsRtlRemovePerFileContext( - IN PVOID* PerFileContextPointer, - IN PVOID OwnerId OPTIONAL, - IN PVOID InstanceId OPTIONAL); +CcSetDirtyPinnedData ( + IN PVOID BcbVoid, + IN PLARGE_INTEGER Lsn OPTIONAL +); NTKERNELAPI VOID NTAPI -FsRtlTeardownPerFileContexts( - IN PVOID* PerFileContextPointer); +CcSetFileSizes ( + IN PFILE_OBJECT FileObject, + IN PCC_FILE_SIZES FileSizes +); + +typedef VOID (NTAPI *PFLUSH_TO_LSN) ( + IN PVOID LogHandle, + IN LARGE_INTEGER Lsn +); NTKERNELAPI -NTSTATUS +VOID NTAPI -FsRtlInsertPerFileObjectContext( - IN PFILE_OBJECT FileObject, - IN PFSRTL_PER_FILEOBJECT_CONTEXT Ptr); +CcSetLogHandleForFile ( + IN PFILE_OBJECT FileObject, + IN PVOID LogHandle, + IN PFLUSH_TO_LSN FlushToLsnRoutine +); NTKERNELAPI -PFSRTL_PER_FILEOBJECT_CONTEXT +VOID NTAPI -FsRtlLookupPerFileObjectContext( - IN PFILE_OBJECT FileObject, - IN PVOID OwnerId OPTIONAL, - IN PVOID InstanceId OPTIONAL); +CcSetReadAheadGranularity ( + IN PFILE_OBJECT FileObject, + IN ULONG Granularity /* default: PAGE_SIZE */ + /* allowed: 2^n * PAGE_SIZE */ +); NTKERNELAPI -PFSRTL_PER_FILEOBJECT_CONTEXT +BOOLEAN NTAPI -FsRtlRemovePerFileObjectContext( - IN PFILE_OBJECT FileObject, - IN PVOID OwnerId OPTIONAL, - IN PVOID InstanceId OPTIONAL); +CcUninitializeCacheMap ( + IN PFILE_OBJECT FileObject, + IN PLARGE_INTEGER TruncateSize OPTIONAL, + IN PCACHE_UNINITIALIZE_EVENT UninitializeCompleteEvent OPTIONAL +); -#define FsRtlFastLock(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11) ( \ - FsRtlPrivateLock(A1, A2, A3, A4, A5, A6, A7, A8, A9, NULL, A10, A11) \ -) +NTKERNELAPI +VOID +NTAPI +CcUnpinData ( + IN PVOID Bcb +); -#define FsRtlAreThereCurrentFileLocks(FL) ( \ - ((FL)->FastIoIsQuestionable) \ -) +NTKERNELAPI +VOID +NTAPI +CcUnpinDataForThread ( + IN PVOID Bcb, + IN ERESOURCE_THREAD ResourceThreadId +); -#define FsRtlIncrementLockRequestsInProgress(FL) { \ - ASSERT( (FL)->LockRequestsInProgress >= 0 ); \ - (void) \ - (InterlockedIncrement((LONG volatile *)&((FL)->LockRequestsInProgress)));\ -} +NTKERNELAPI +VOID +NTAPI +CcUnpinRepinnedBcb ( + IN PVOID Bcb, + IN BOOLEAN WriteThrough, + OUT PIO_STATUS_BLOCK IoStatus +); -#define FsRtlDecrementLockRequestsInProgress(FL) { \ - ASSERT( (FL)->LockRequestsInProgress > 0 ); \ - (void) \ - (InterlockedDecrement((LONG volatile *)&((FL)->LockRequestsInProgress)));\ -} +#if (VER_PRODUCTBUILD >= 2195) -extern NTKERNELAPI PUSHORT NlsOemLeadByteInfo; -#define NLS_OEM_LEAD_BYTE_INFO NlsOemLeadByteInfo +NTKERNELAPI +NTSTATUS +NTAPI +CcWaitForCurrentLazyWriterActivity ( + VOID +); -#ifdef NLS_MB_CODE_PAGE_TAG -#undef NLS_MB_CODE_PAGE_TAG -#endif -#define NLS_MB_CODE_PAGE_TAG NlsMbOemCodePageTag +#endif /* (VER_PRODUCTBUILD >= 2195) */ -/* GCC compatible definition, MS one is retarded */ -extern NTKERNELAPI const UCHAR * const FsRtlLegalAnsiCharacterArray; -#define LEGAL_ANSI_CHARACTER_ARRAY FsRtlLegalAnsiCharacterArray +NTKERNELAPI +BOOLEAN +NTAPI +CcZeroData ( + IN PFILE_OBJECT FileObject, + IN PLARGE_INTEGER StartOffset, + IN PLARGE_INTEGER EndOffset, + IN BOOLEAN Wait +); -#define FsRtlIsAnsiCharacterWild(C) ( \ - FlagOn(FsRtlLegalAnsiCharacterArray[(UCHAR)(C)], FSRTL_WILD_CHARACTER ) \ -) +#if (VER_PRODUCTBUILD >= 2600) -#define FsRtlIsAnsiCharacterLegalFat(C, WILD) ( \ - FlagOn(FsRtlLegalAnsiCharacterArray[(UCHAR)(C)], (FSRTL_FAT_LEGAL) | \ - ((WILD) ? FSRTL_WILD_CHARACTER : 0 )) \ -) +#ifndef __NTOSKRNL__ +NTKERNELAPI +VOID +FASTCALL +ExInitializeRundownProtection ( + IN PEX_RUNDOWN_REF RunRef +); -#define FsRtlIsAnsiCharacterLegalHpfs(C, WILD) ( \ - FlagOn(FsRtlLegalAnsiCharacterArray[(UCHAR)(C)], (FSRTL_HPFS_LEGAL) | \ - ((WILD) ? FSRTL_WILD_CHARACTER : 0 )) \ -) +NTKERNELAPI +VOID +FASTCALL +ExReInitializeRundownProtection ( + IN PEX_RUNDOWN_REF RunRef +); -#define FsRtlIsAnsiCharacterLegalNtfs(C, WILD) ( \ - FlagOn(FsRtlLegalAnsiCharacterArray[(UCHAR)(C)], (FSRTL_NTFS_LEGAL) | \ - ((WILD) ? FSRTL_WILD_CHARACTER : 0 )) \ -) +NTKERNELAPI +BOOLEAN +FASTCALL +ExAcquireRundownProtection ( + IN PEX_RUNDOWN_REF RunRef +); -#define FsRtlIsAnsiCharacterLegalNtfsStream(C,WILD_OK) ( \ - FsRtlTestAnsiCharacter((C), TRUE, (WILD_OK), FSRTL_NTFS_STREAM_LEGAL) \ -) +NTKERNELAPI +BOOLEAN +FASTCALL +ExAcquireRundownProtectionEx ( + IN PEX_RUNDOWN_REF RunRef, + IN ULONG Count +); -#define FsRtlIsAnsiCharacterLegal(C,FLAGS) ( \ - FsRtlTestAnsiCharacter((C), TRUE, FALSE, (FLAGS)) \ -) +NTKERNELAPI +VOID +FASTCALL +ExReleaseRundownProtection ( + IN PEX_RUNDOWN_REF RunRef +); -#define FsRtlTestAnsiCharacter(C, DEFAULT_RET, WILD_OK, FLAGS) ( \ - ((SCHAR)(C) < 0) ? DEFAULT_RET : \ - FlagOn( LEGAL_ANSI_CHARACTER_ARRAY[(C)], \ - (FLAGS) | \ - ((WILD_OK) ? FSRTL_WILD_CHARACTER : 0) ) \ -) +NTKERNELAPI +VOID +FASTCALL +ExReleaseRundownProtectionEx ( + IN PEX_RUNDOWN_REF RunRef, + IN ULONG Count +); -#define FsRtlIsLeadDbcsCharacter(DBCS_CHAR) ( \ - (BOOLEAN)((UCHAR)(DBCS_CHAR) < 0x80 ? FALSE : \ - (NLS_MB_CODE_PAGE_TAG && \ - (NLS_OEM_LEAD_BYTE_INFO[(UCHAR)(DBCS_CHAR)] != 0))) \ -) +NTKERNELAPI +VOID +FASTCALL +ExRundownCompleted ( + IN PEX_RUNDOWN_REF RunRef +); -#define FsRtlIsUnicodeCharacterWild(C) ( \ - (((C) >= 0x40) ? \ - FALSE : \ - FlagOn(FsRtlLegalAnsiCharacterArray[(C)], FSRTL_WILD_CHARACTER )) \ -) +NTKERNELAPI +VOID +FASTCALL +ExWaitForRundownProtectionRelease ( + IN PEX_RUNDOWN_REF RunRef +); -#define FsRtlInitPerFileContext( _fc, _owner, _inst, _cb) \ - ((_fc)->OwnerId = (_owner), \ - (_fc)->InstanceId = (_inst), \ - (_fc)->FreeCallback = (_cb)) - -#define FsRtlGetPerFileContextPointer(_fo) \ - (FsRtlSupportsPerFileContexts(_fo) ? \ - FsRtlGetPerStreamContextPointer(_fo)->FileContextSupportPointer : \ - NULL) - -#define FsRtlSupportsPerFileContexts(_fo) \ - ((FsRtlGetPerStreamContextPointer(_fo) != NULL) && \ - (FsRtlGetPerStreamContextPointer(_fo)->Version >= FSRTL_FCB_HEADER_V1) && \ - (FsRtlGetPerStreamContextPointer(_fo)->FileContextSupportPointer != NULL)) - -#define FsRtlSetupAdvancedHeaderEx( _advhdr, _fmutx, _fctxptr ) \ -{ \ - FsRtlSetupAdvancedHeader( _advhdr, _fmutx ); \ - if ((_fctxptr) != NULL) { \ - (_advhdr)->FileContextSupportPointer = (_fctxptr); \ - } \ +#endif +#endif /* (VER_PRODUCTBUILD >= 2600) */ + + +#define FsRtlSetupAdvancedHeader( _advhdr, _fmutx ) \ +{ \ + SetFlag( (_advhdr)->Flags, FSRTL_FLAG_ADVANCED_HEADER ); \ + SetFlag( (_advhdr)->Flags2, FSRTL_FLAG2_SUPPORTS_FILTER_CONTEXTS ); \ + (_advhdr)->Version = FSRTL_FCB_HEADER_V1; \ + InitializeListHead( &(_advhdr)->FilterContexts ); \ + if ((_fmutx) != NULL) { \ + (_advhdr)->FastMutex = (_fmutx); \ + } \ + *((PULONG_PTR)(&(_advhdr)->PushLock)) = 0; \ + /*ExInitializePushLock( &(_advhdr)->PushLock ); API Not avaliable downlevel*/\ + (_advhdr)->FileContextSupportPointer = NULL; \ } -#define FsRtlGetPerStreamContextPointer(FO) ( \ - (PFSRTL_ADVANCED_FCB_HEADER)(FO)->FsContext \ -) - -#define FsRtlInitPerStreamContext(PSC, O, I, FC) ( \ - (PSC)->OwnerId = (O), \ - (PSC)->InstanceId = (I), \ - (PSC)->FreeCallback = (FC) \ -) +NTKERNELAPI +BOOLEAN +NTAPI +FsRtlAddBaseMcbEntry ( + IN PBASE_MCB Mcb, + IN LONGLONG Vbn, + IN LONGLONG Lbn, + IN LONGLONG SectorCount +); -#define FsRtlSupportsPerStreamContexts(FO) ( \ - (BOOLEAN)((NULL != FsRtlGetPerStreamContextPointer(FO) && \ - FlagOn(FsRtlGetPerStreamContextPointer(FO)->Flags2, \ - FSRTL_FLAG2_SUPPORTS_FILTER_CONTEXTS)) \ -) +NTKERNELAPI +BOOLEAN +NTAPI +FsRtlAddLargeMcbEntry ( + IN PLARGE_MCB Mcb, + IN LONGLONG Vbn, + IN LONGLONG Lbn, + IN LONGLONG SectorCount +); -#define FsRtlLookupPerStreamContext(_sc, _oid, _iid) \ - (((NULL != (_sc)) && \ - FlagOn((_sc)->Flags2,FSRTL_FLAG2_SUPPORTS_FILTER_CONTEXTS) && \ - !IsListEmpty(&(_sc)->FilterContexts)) ? \ - FsRtlLookupPerStreamContextInternal((_sc), (_oid), (_iid)) : \ - NULL) +NTKERNELAPI +BOOLEAN +NTAPI +FsRtlAddMcbEntry ( + IN PMCB Mcb, + IN VBN Vbn, + IN LBN Lbn, + IN ULONG SectorCount +); +NTKERNELAPI VOID -FORCEINLINE NTAPI -FsRtlSetupAdvancedHeader( - IN PVOID AdvHdr, - IN PFAST_MUTEX FMutex ) -{ - PFSRTL_ADVANCED_FCB_HEADER localAdvHdr = (PFSRTL_ADVANCED_FCB_HEADER)AdvHdr; +FsRtlAddToTunnelCache ( + IN PTUNNEL Cache, + IN ULONGLONG DirectoryKey, + IN PUNICODE_STRING ShortName, + IN PUNICODE_STRING LongName, + IN BOOLEAN KeyByShortName, + IN ULONG DataLength, + IN PVOID Data +); - localAdvHdr->Flags |= FSRTL_FLAG_ADVANCED_HEADER; - localAdvHdr->Flags2 |= FSRTL_FLAG2_SUPPORTS_FILTER_CONTEXTS; -#if (NTDDI_VERSION >= NTDDI_VISTA) - localAdvHdr->Version = FSRTL_FCB_HEADER_V1; -#else - localAdvHdr->Version = FSRTL_FCB_HEADER_V0; -#endif - InitializeListHead( &localAdvHdr->FilterContexts ); - if (FMutex != NULL) { - localAdvHdr->FastMutex = FMutex; - } -#if (NTDDI_VERSION >= NTDDI_VISTA) - *((PULONG_PTR)(&localAdvHdr->PushLock)) = 0; - localAdvHdr->FileContextSupportPointer = NULL; -#endif -} +NTKERNELAPI +PVOID +NTAPI +FsRtlAllocatePool ( + IN POOL_TYPE PoolType, + IN ULONG NumberOfBytes +); -#define FsRtlInitPerFileObjectContext(_fc, _owner, _inst) \ - ((_fc)->OwnerId = (_owner), (_fc)->InstanceId = (_inst)) +NTKERNELAPI +PVOID +NTAPI +FsRtlAllocatePoolWithQuota ( + IN POOL_TYPE PoolType, + IN ULONG NumberOfBytes +); -#define FsRtlCompleteRequest(IRP,STATUS) { \ - (IRP)->IoStatus.Status = (STATUS); \ - IoCompleteRequest( (IRP), IO_DISK_INCREMENT ); \ -} +NTKERNELAPI +PVOID +NTAPI +FsRtlAllocatePoolWithQuotaTag ( + IN POOL_TYPE PoolType, + IN ULONG NumberOfBytes, + IN ULONG Tag +); -#if (NTDDI_VERSION >= NTDDI_WIN7) -typedef struct _ECP_HEADER ECP_HEADER, *PECP_HEADER; -#endif +NTKERNELAPI +PVOID +NTAPI +FsRtlAllocatePoolWithTag ( + IN POOL_TYPE PoolType, + IN ULONG NumberOfBytes, + IN ULONG Tag +); -#if (NTDDI_VERSION >= NTDDI_VISTA) +NTKERNELAPI +BOOLEAN +NTAPI +FsRtlAreNamesEqual ( + IN PCUNICODE_STRING Name1, + IN PCUNICODE_STRING Name2, + IN BOOLEAN IgnoreCase, + IN PCWCH UpcaseTable OPTIONAL +); -typedef enum _NETWORK_OPEN_LOCATION_QUALIFIER { - NetworkOpenLocationAny, - NetworkOpenLocationRemote, - NetworkOpenLocationLoopback -} NETWORK_OPEN_LOCATION_QUALIFIER; +#define FsRtlAreThereCurrentFileLocks(FL) ( \ + ((FL)->FastIoIsQuestionable) \ +) -typedef enum _NETWORK_OPEN_INTEGRITY_QUALIFIER { - NetworkOpenIntegrityAny, - NetworkOpenIntegrityNone, - NetworkOpenIntegritySigned, - NetworkOpenIntegrityEncrypted, - NetworkOpenIntegrityMaximum -} NETWORK_OPEN_INTEGRITY_QUALIFIER; +typedef +VOID +(NTAPI*POPLOCK_WAIT_COMPLETE_ROUTINE) ( + IN PVOID Context, + IN PIRP Irp +); -#if (NTDDI_VERSION >= NTDDI_WIN7) +typedef +VOID +(NTAPI*POPLOCK_FS_PREPOST_IRP) ( + IN PVOID Context, + IN PIRP Irp +); -#define NETWORK_OPEN_ECP_IN_FLAG_DISABLE_HANDLE_COLLAPSING 0x1 -#define NETWORK_OPEN_ECP_IN_FLAG_DISABLE_HANDLE_DURABILITY 0x2 -#define NETWORK_OPEN_ECP_IN_FLAG_FORCE_BUFFERED_SYNCHRONOUS_IO_HACK 0x80000000 +NTKERNELAPI +NTSTATUS +NTAPI +FsRtlCheckOplock ( + IN POPLOCK Oplock, + IN PIRP Irp, + IN PVOID Context, + IN POPLOCK_WAIT_COMPLETE_ROUTINE CompletionRoutine OPTIONAL, + IN POPLOCK_FS_PREPOST_IRP PostIrpRoutine OPTIONAL +); -typedef struct _NETWORK_OPEN_ECP_CONTEXT { - USHORT Size; - USHORT Reserved; - struct { - struct { - NETWORK_OPEN_LOCATION_QUALIFIER Location; - NETWORK_OPEN_INTEGRITY_QUALIFIER Integrity; - ULONG Flags; - } in; - struct { - NETWORK_OPEN_LOCATION_QUALIFIER Location; - NETWORK_OPEN_INTEGRITY_QUALIFIER Integrity; - ULONG Flags; - } out; - } DUMMYSTRUCTNAME; -} NETWORK_OPEN_ECP_CONTEXT, *PNETWORK_OPEN_ECP_CONTEXT; +NTKERNELAPI +BOOLEAN +NTAPI +FsRtlCurrentBatchOplock ( + IN POPLOCK Oplock +); -typedef struct _NETWORK_OPEN_ECP_CONTEXT_V0 { - USHORT Size; - USHORT Reserved; - struct { - struct { - NETWORK_OPEN_LOCATION_QUALIFIER Location; - NETWORK_OPEN_INTEGRITY_QUALIFIER Integrity; - } in; - struct { - NETWORK_OPEN_LOCATION_QUALIFIER Location; - NETWORK_OPEN_INTEGRITY_QUALIFIER Integrity; - } out; - } DUMMYSTRUCTNAME; -} NETWORK_OPEN_ECP_CONTEXT_V0, *PNETWORK_OPEN_ECP_CONTEXT_V0; - -#elif (NTDDI_VERSION >= NTDDI_VISTA) -typedef struct _NETWORK_OPEN_ECP_CONTEXT { - USHORT Size; - USHORT Reserved; - struct { - struct { - NETWORK_OPEN_LOCATION_QUALIFIER Location; - NETWORK_OPEN_INTEGRITY_QUALIFIER Integrity; - } in; - struct { - NETWORK_OPEN_LOCATION_QUALIFIER Location; - NETWORK_OPEN_INTEGRITY_QUALIFIER Integrity; - } out; - } DUMMYSTRUCTNAME; -} NETWORK_OPEN_ECP_CONTEXT, *PNETWORK_OPEN_ECP_CONTEXT; -#endif - -DEFINE_GUID(GUID_ECP_NETWORK_OPEN_CONTEXT, 0xc584edbf, 0x00df, 0x4d28, 0xb8, 0x84, 0x35, 0xba, 0xca, 0x89, 0x11, 0xe8 ); - -#endif /* (NTDDI_VERSION >= NTDDI_VISTA) */ - - -#if (NTDDI_VERSION >= NTDDI_VISTA) - -typedef struct _PREFETCH_OPEN_ECP_CONTEXT { - PVOID Context; -} PREFETCH_OPEN_ECP_CONTEXT, *PPREFETCH_OPEN_ECP_CONTEXT; - -DEFINE_GUID(GUID_ECP_PREFETCH_OPEN, 0xe1777b21, 0x847e, 0x4837, 0xaa, 0x45, 0x64, 0x16, 0x1d, 0x28, 0x6, 0x55 ); - -#endif /* (NTDDI_VERSION >= NTDDI_VISTA) */ - -#if (NTDDI_VERSION >= NTDDI_WIN7) - -DEFINE_GUID (GUID_ECP_NFS_OPEN, 0xf326d30c, 0xe5f8, 0x4fe7, 0xab, 0x74, 0xf5, 0xa3, 0x19, 0x6d, 0x92, 0xdb); -DEFINE_GUID(GUID_ECP_SRV_OPEN, 0xbebfaebc, 0xaabf, 0x489d, 0x9d, 0x2c, 0xe9, 0xe3, 0x61, 0x10, 0x28, 0x53 ); - -typedef struct sockaddr_storage *PSOCKADDR_STORAGE_NFS; - -typedef struct _NFS_OPEN_ECP_CONTEXT { - PUNICODE_STRING ExportAlias; - PSOCKADDR_STORAGE_NFS ClientSocketAddress; -} NFS_OPEN_ECP_CONTEXT, *PNFS_OPEN_ECP_CONTEXT, **PPNFS_OPEN_ECP_CONTEXT; - -typedef struct _SRV_OPEN_ECP_CONTEXT { - PUNICODE_STRING ShareName; - PSOCKADDR_STORAGE_NFS SocketAddress; - BOOLEAN OplockBlockState; - BOOLEAN OplockAppState; - BOOLEAN OplockFinalState; -} SRV_OPEN_ECP_CONTEXT, *PSRV_OPEN_ECP_CONTEXT; - -#endif /* (NTDDI_VERSION >= NTDDI_WIN7) */ - -#define VACB_MAPPING_GRANULARITY (0x40000) -#define VACB_OFFSET_SHIFT (18) - -typedef struct _PUBLIC_BCB { - CSHORT NodeTypeCode; - CSHORT NodeByteSize; - ULONG MappedLength; - LARGE_INTEGER MappedFileOffset; -} PUBLIC_BCB, *PPUBLIC_BCB; - -typedef struct _CC_FILE_SIZES { - LARGE_INTEGER AllocationSize; - LARGE_INTEGER FileSize; - LARGE_INTEGER ValidDataLength; -} CC_FILE_SIZES, *PCC_FILE_SIZES; - -typedef BOOLEAN -(NTAPI *PACQUIRE_FOR_LAZY_WRITE) ( - IN PVOID Context, - IN BOOLEAN Wait); - -typedef VOID -(NTAPI *PRELEASE_FROM_LAZY_WRITE) ( - IN PVOID Context); - -typedef BOOLEAN -(NTAPI *PACQUIRE_FOR_READ_AHEAD) ( - IN PVOID Context, - IN BOOLEAN Wait); - -typedef VOID -(NTAPI *PRELEASE_FROM_READ_AHEAD) ( - IN PVOID Context); - -typedef struct _CACHE_MANAGER_CALLBACKS { - PACQUIRE_FOR_LAZY_WRITE AcquireForLazyWrite; - PRELEASE_FROM_LAZY_WRITE ReleaseFromLazyWrite; - PACQUIRE_FOR_READ_AHEAD AcquireForReadAhead; - PRELEASE_FROM_READ_AHEAD ReleaseFromReadAhead; -} CACHE_MANAGER_CALLBACKS, *PCACHE_MANAGER_CALLBACKS; - -typedef struct _CACHE_UNINITIALIZE_EVENT { - struct _CACHE_UNINITIALIZE_EVENT *Next; - KEVENT Event; -} CACHE_UNINITIALIZE_EVENT, *PCACHE_UNINITIALIZE_EVENT; - -typedef VOID -(NTAPI *PDIRTY_PAGE_ROUTINE) ( - IN PFILE_OBJECT FileObject, - IN PLARGE_INTEGER FileOffset, - IN ULONG Length, - IN PLARGE_INTEGER OldestLsn, - IN PLARGE_INTEGER NewestLsn, - IN PVOID Context1, - IN PVOID Context2); - -typedef VOID -(NTAPI *PFLUSH_TO_LSN) ( - IN PVOID LogHandle, - IN LARGE_INTEGER Lsn); - -typedef VOID -(NTAPI *PCC_POST_DEFERRED_WRITE) ( - IN PVOID Context1, - IN PVOID Context2); - -#define CcIsFileCached(FO) ( \ - ((FO)->SectionObjectPointer != NULL) && \ - (((PSECTION_OBJECT_POINTERS)(FO)->SectionObjectPointer)->SharedCacheMap != NULL) \ -) - -extern ULONG CcFastMdlReadWait; - -#if (NTDDI_VERSION >= NTDDI_WIN2K) +NTKERNELAPI +VOID +NTAPI +FsRtlDeleteKeyFromTunnelCache ( + IN PTUNNEL Cache, + IN ULONGLONG DirectoryKey +); NTKERNELAPI VOID NTAPI -CcInitializeCacheMap( - IN PFILE_OBJECT FileObject, - IN PCC_FILE_SIZES FileSizes, - IN BOOLEAN PinAccess, - IN PCACHE_MANAGER_CALLBACKS Callbacks, - IN PVOID LazyWriteContext); - -NTKERNELAPI -BOOLEAN -NTAPI -CcUninitializeCacheMap( - IN PFILE_OBJECT FileObject, - IN PLARGE_INTEGER TruncateSize OPTIONAL, - IN PCACHE_UNINITIALIZE_EVENT UninitializeCompleteEvent OPTIONAL); +FsRtlDeleteTunnelCache ( + IN PTUNNEL Cache +); NTKERNELAPI VOID NTAPI -CcSetFileSizes( - IN PFILE_OBJECT FileObject, - IN PCC_FILE_SIZES FileSizes); +FsRtlDeregisterUncProvider ( + IN HANDLE Handle +); NTKERNELAPI VOID NTAPI -CcSetDirtyPageThreshold( - IN PFILE_OBJECT FileObject, - IN ULONG DirtyPageThreshold); +FsRtlDissectDbcs ( + IN ANSI_STRING Name, + OUT PANSI_STRING FirstPart, + OUT PANSI_STRING RemainingPart +); NTKERNELAPI VOID NTAPI -CcFlushCache( - IN PSECTION_OBJECT_POINTERS SectionObjectPointer, - IN PLARGE_INTEGER FileOffset OPTIONAL, - IN ULONG Length, - OUT PIO_STATUS_BLOCK IoStatus OPTIONAL); +FsRtlDissectName ( + IN UNICODE_STRING Name, + OUT PUNICODE_STRING FirstPart, + OUT PUNICODE_STRING RemainingPart +); NTKERNELAPI -LARGE_INTEGER +BOOLEAN NTAPI -CcGetFlushedValidData( - IN PSECTION_OBJECT_POINTERS SectionObjectPointer, - IN BOOLEAN BcbListHeld); +FsRtlDoesDbcsContainWildCards ( + IN PANSI_STRING Name +); NTKERNELAPI BOOLEAN NTAPI -CcZeroData( - IN PFILE_OBJECT FileObject, - IN PLARGE_INTEGER StartOffset, - IN PLARGE_INTEGER EndOffset, - IN BOOLEAN Wait); +FsRtlDoesNameContainWildCards ( + IN PUNICODE_STRING Name +); NTKERNELAPI -PVOID +BOOLEAN NTAPI -CcRemapBcb( - IN PVOID Bcb); +FsRtlIsFatDbcsLegal ( + IN ANSI_STRING DbcsName, + IN BOOLEAN WildCardsPermissible, + IN BOOLEAN PathNamePermissible, + IN BOOLEAN LeadingBackslashPermissible + ); -NTKERNELAPI -VOID -NTAPI -CcRepinBcb( - IN PVOID Bcb); -NTKERNELAPI -VOID -NTAPI -CcUnpinRepinnedBcb( - IN PVOID Bcb, - IN BOOLEAN WriteThrough, - OUT PIO_STATUS_BLOCK IoStatus); +#define FsRtlCompleteRequest(IRP,STATUS) { \ + (IRP)->IoStatus.Status = (STATUS); \ + IoCompleteRequest( (IRP), IO_DISK_INCREMENT ); \ +} -NTKERNELAPI -PFILE_OBJECT -NTAPI -CcGetFileObjectFromSectionPtrs( - IN PSECTION_OBJECT_POINTERS SectionObjectPointer); +#define FsRtlEnterFileSystem KeEnterCriticalRegion -NTKERNELAPI -PFILE_OBJECT -NTAPI -CcGetFileObjectFromBcb( - IN PVOID Bcb); +#define FsRtlExitFileSystem KeLeaveCriticalRegion -NTKERNELAPI -BOOLEAN -NTAPI -CcCanIWrite( - IN PFILE_OBJECT FileObject, - IN ULONG BytesToWrite, - IN BOOLEAN Wait, - IN BOOLEAN Retrying); +#define FsRtlFastLock(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11) ( \ + FsRtlPrivateLock(A1, A2, A3, A4, A5, A6, A7, A8, A9, NULL, A10, A11) \ +) NTKERNELAPI -VOID +BOOLEAN NTAPI -CcDeferWrite( - IN PFILE_OBJECT FileObject, - IN PCC_POST_DEFERRED_WRITE PostRoutine, - IN PVOID Context1, - IN PVOID Context2, - IN ULONG BytesToWrite, - IN BOOLEAN Retrying); +FsRtlFindInTunnelCache ( + IN PTUNNEL Cache, + IN ULONGLONG DirectoryKey, + IN PUNICODE_STRING Name, + OUT PUNICODE_STRING ShortName, + OUT PUNICODE_STRING LongName, + IN OUT PULONG DataLength, + OUT PVOID Data +); NTKERNELAPI BOOLEAN NTAPI -CcCopyRead( - IN PFILE_OBJECT FileObject, - IN PLARGE_INTEGER FileOffset, - IN ULONG Length, - IN BOOLEAN Wait, - OUT PVOID Buffer, - OUT PIO_STATUS_BLOCK IoStatus); +FsRtlGetNextBaseMcbEntry ( + IN PBASE_MCB Mcb, + IN ULONG RunIndex, + OUT PLONGLONG Vbn, + OUT PLONGLONG Lbn, + OUT PLONGLONG SectorCount +); NTKERNELAPI -VOID +BOOLEAN NTAPI -CcFastCopyRead( - IN PFILE_OBJECT FileObject, - IN ULONG FileOffset, - IN ULONG Length, - IN ULONG PageCount, - OUT PVOID Buffer, - OUT PIO_STATUS_BLOCK IoStatus); +FsRtlGetNextLargeMcbEntry ( + IN PLARGE_MCB Mcb, + IN ULONG RunIndex, + OUT PLONGLONG Vbn, + OUT PLONGLONG Lbn, + OUT PLONGLONG SectorCount +); NTKERNELAPI BOOLEAN NTAPI -CcCopyWrite( - IN PFILE_OBJECT FileObject, - IN PLARGE_INTEGER FileOffset, - IN ULONG Length, - IN BOOLEAN Wait, - IN PVOID Buffer); +FsRtlGetNextMcbEntry ( + IN PMCB Mcb, + IN ULONG RunIndex, + OUT PVBN Vbn, + OUT PLBN Lbn, + OUT PULONG SectorCount +); -NTKERNELAPI -VOID -NTAPI -CcFastCopyWrite( - IN PFILE_OBJECT FileObject, - IN ULONG FileOffset, - IN ULONG Length, - IN PVOID Buffer); +#define FsRtlGetPerStreamContextPointer(FO) ( \ + (PFSRTL_ADVANCED_FCB_HEADER)(FO)->FsContext \ +) NTKERNELAPI VOID NTAPI -CcMdlRead( - IN PFILE_OBJECT FileObject, - IN PLARGE_INTEGER FileOffset, - IN ULONG Length, - OUT PMDL *MdlChain, - OUT PIO_STATUS_BLOCK IoStatus); +FsRtlInitializeBaseMcb ( + IN PBASE_MCB Mcb, + IN POOL_TYPE PoolType +); NTKERNELAPI VOID NTAPI -CcMdlReadComplete( - IN PFILE_OBJECT FileObject, - IN PMDL MdlChain); +FsRtlInitializeLargeMcb ( + IN PLARGE_MCB Mcb, + IN POOL_TYPE PoolType +); NTKERNELAPI VOID NTAPI -CcPrepareMdlWrite( - IN PFILE_OBJECT FileObject, - IN PLARGE_INTEGER FileOffset, - IN ULONG Length, - OUT PMDL *MdlChain, - OUT PIO_STATUS_BLOCK IoStatus); +FsRtlInitializeMcb ( + IN PMCB Mcb, + IN POOL_TYPE PoolType +); NTKERNELAPI VOID NTAPI -CcMdlWriteComplete( - IN PFILE_OBJECT FileObject, - IN PLARGE_INTEGER FileOffset, - IN PMDL MdlChain); +FsRtlInitializeOplock ( + IN OUT POPLOCK Oplock +); NTKERNELAPI VOID NTAPI -CcScheduleReadAhead( - IN PFILE_OBJECT FileObject, - IN PLARGE_INTEGER FileOffset, - IN ULONG Length); - -NTKERNELAPI -NTSTATUS -NTAPI -CcWaitForCurrentLazyWriterActivity( - VOID); +FsRtlInitializeTunnelCache ( + IN PTUNNEL Cache +); -NTKERNELAPI -VOID -NTAPI -CcSetReadAheadGranularity( - IN PFILE_OBJECT FileObject, - IN ULONG Granularity); +#define FsRtlInitPerStreamContext(PSC, O, I, FC) ( \ + (PSC)->OwnerId = (O), \ + (PSC)->InstanceId = (I), \ + (PSC)->FreeCallback = (FC) \ +) NTKERNELAPI -BOOLEAN +NTSTATUS NTAPI -CcPinRead( - IN PFILE_OBJECT FileObject, - IN PLARGE_INTEGER FileOffset, - IN ULONG Length, - IN ULONG Flags, - OUT PVOID *Bcb, - OUT PVOID *Buffer); +FsRtlInsertPerStreamContext ( + IN PFSRTL_ADVANCED_FCB_HEADER PerStreamContext, + IN PFSRTL_PER_STREAM_CONTEXT Ptr +); -NTKERNELAPI -BOOLEAN -NTAPI -CcPinMappedData( - IN PFILE_OBJECT FileObject, - IN PLARGE_INTEGER FileOffset, - IN ULONG Length, - IN ULONG Flags, - IN OUT PVOID *Bcb); +#define FsRtlIsAnsiCharacterLegalFat(C, WILD) ( \ + FlagOn(FsRtlLegalAnsiCharacterArray[(UCHAR)(C)], (FSRTL_FAT_LEGAL) | \ + ((WILD) ? FSRTL_WILD_CHARACTER : 0 )) \ +) -NTKERNELAPI -BOOLEAN -NTAPI -CcPreparePinWrite( - IN PFILE_OBJECT FileObject, - IN PLARGE_INTEGER FileOffset, - IN ULONG Length, - IN BOOLEAN Zero, - IN ULONG Flags, - OUT PVOID *Bcb, - OUT PVOID *Buffer); +#define FsRtlIsAnsiCharacterLegalHpfs(C, WILD) ( \ + FlagOn(FsRtlLegalAnsiCharacterArray[(UCHAR)(C)], (FSRTL_HPFS_LEGAL) | \ + ((WILD) ? FSRTL_WILD_CHARACTER : 0 )) \ +) -NTKERNELAPI -VOID -NTAPI -CcSetDirtyPinnedData( - IN PVOID BcbVoid, - IN PLARGE_INTEGER Lsn OPTIONAL); +#define FsRtlIsAnsiCharacterLegalNtfs(C, WILD) ( \ + FlagOn(FsRtlLegalAnsiCharacterArray[(UCHAR)(C)], (FSRTL_NTFS_LEGAL) | \ + ((WILD) ? FSRTL_WILD_CHARACTER : 0 )) \ +) -NTKERNELAPI -VOID -NTAPI -CcUnpinData( - IN PVOID Bcb); +#define FsRtlIsAnsiCharacterWild(C) ( \ + FlagOn(FsRtlLegalAnsiCharacterArray[(UCHAR)(C)], FSRTL_WILD_CHARACTER ) \ +) NTKERNELAPI -VOID +BOOLEAN NTAPI -CcSetBcbOwnerPointer( - IN PVOID Bcb, - IN PVOID OwnerPointer); +FsRtlIsFatDbcsLegal ( + IN ANSI_STRING DbcsName, + IN BOOLEAN WildCardsPermissible, + IN BOOLEAN PathNamePermissible, + IN BOOLEAN LeadingBackslashPermissible +); NTKERNELAPI -VOID +BOOLEAN NTAPI -CcUnpinDataForThread( - IN PVOID Bcb, - IN ERESOURCE_THREAD ResourceThreadId); +FsRtlIsHpfsDbcsLegal ( + IN ANSI_STRING DbcsName, + IN BOOLEAN WildCardsPermissible, + IN BOOLEAN PathNamePermissible, + IN BOOLEAN LeadingBackslashPermissible +); NTKERNELAPI -VOID +BOOLEAN NTAPI -CcSetAdditionalCacheAttributes( - IN PFILE_OBJECT FileObject, - IN BOOLEAN DisableReadAhead, - IN BOOLEAN DisableWriteBehind); +FsRtlIsNameInExpression ( + IN PUNICODE_STRING Expression, + IN PUNICODE_STRING Name, + IN BOOLEAN IgnoreCase, + IN PWCHAR UpcaseTable OPTIONAL +); NTKERNELAPI BOOLEAN NTAPI -CcIsThereDirtyData( - IN PVPB Vpb); - -#endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */ +FsRtlIsNtstatusExpected ( + IN NTSTATUS Ntstatus +); -#if (NTDDI_VERSION >= NTDDI_WINXP) +#define NLS_OEM_LEAD_BYTE_INFO NlsOemLeadByteInfo -NTKERNELAPI -VOID -NTAPI -CcMdlWriteAbort( - IN PFILE_OBJECT FileObject, - IN PMDL MdlChain); +extern PUSHORT NlsOemLeadByteInfo; -NTKERNELAPI -VOID -NTAPI -CcSetLogHandleForFile( - IN PFILE_OBJECT FileObject, - IN PVOID LogHandle, - IN PFLUSH_TO_LSN FlushToLsnRoutine); - -NTKERNELAPI -LARGE_INTEGER -NTAPI -CcGetDirtyPages( - IN PVOID LogHandle, - IN PDIRTY_PAGE_ROUTINE DirtyPageRoutine, - IN PVOID Context1, - IN PVOID Context2); - -#endif - -#if (NTDDI_VERSION >= NTDDI_WINXP) -NTKERNELAPI -BOOLEAN -NTAPI -CcMapData( - IN PFILE_OBJECT FileObject, - IN PLARGE_INTEGER FileOffset, - IN ULONG Length, - IN ULONG Flags, - OUT PVOID *Bcb, - OUT PVOID *Buffer); -#elif (NTDDI_VERSION >= NTDDI_WIN2K) -NTKERNELAPI -BOOLEAN -NTAPI -CcMapData( - IN PFILE_OBJECT FileObject, - IN PLARGE_INTEGER FileOffset, - IN ULONG Length, - IN BOOLEAN Wait, - OUT PVOID *Bcb, - OUT PVOID *Buffer); -#endif - -#if (NTDDI_VERSION >= NTDDI_VISTA) - -NTKERNELAPI -NTSTATUS -NTAPI -CcSetFileSizesEx( - IN PFILE_OBJECT FileObject, - IN PCC_FILE_SIZES FileSizes); - -NTKERNELAPI -PFILE_OBJECT -NTAPI -CcGetFileObjectFromSectionPtrsRef( - IN PSECTION_OBJECT_POINTERS SectionObjectPointer); - -NTKERNELAPI -VOID -NTAPI -CcSetParallelFlushFile( - IN PFILE_OBJECT FileObject, - IN BOOLEAN EnableParallelFlush); - -NTKERNELAPI -BOOLEAN -CcIsThereDirtyDataEx( - IN PVPB Vpb, - IN PULONG NumberOfDirtyPages OPTIONAL); - -#endif - -#if (NTDDI_VERSION >= NTDDI_WIN7) -NTKERNELAPI -VOID -NTAPI -CcCoherencyFlushAndPurgeCache( - IN PSECTION_OBJECT_POINTERS SectionObjectPointer, - IN PLARGE_INTEGER FileOffset OPTIONAL, - IN ULONG Length, - OUT PIO_STATUS_BLOCK IoStatus, - IN ULONG Flags OPTIONAL); -#endif - -#define CcGetFileSizePointer(FO) ( \ - ((PLARGE_INTEGER)((FO)->SectionObjectPointer->SharedCacheMap) + 1) \ -) - -#define UNINITIALIZE_CACHE_MAPS (1) -#define DO_NOT_RETRY_PURGE (2) -#define DO_NOT_PURGE_DIRTY_PAGES (0x4) - -#define CC_FLUSH_AND_PURGE_NO_PURGE (0x1) - -#if (NTDDI_VERSION >= NTDDI_VISTA) -NTKERNELAPI -BOOLEAN -NTAPI -CcPurgeCacheSection( - IN PSECTION_OBJECT_POINTERS SectionObjectPointer, - IN PLARGE_INTEGER FileOffset OPTIONAL, - IN ULONG Length, - IN ULONG Flags); -#elif (NTDDI_VERSION >= NTDDI_WIN2K) -NTKERNELAPI -BOOLEAN -NTAPI -CcPurgeCacheSection( - IN PSECTION_OBJECT_POINTERS SectionObjectPointer, - IN PLARGE_INTEGER FileOffset OPTIONAL, - IN ULONG Length, - IN BOOLEAN UninitializeCacheMaps); -#endif - -#if (NTDDI_VERSION >= NTDDI_WIN7) -NTKERNELAPI -BOOLEAN -NTAPI -CcCopyWriteWontFlush( - IN PFILE_OBJECT FileObject, - IN PLARGE_INTEGER FileOffset, - IN ULONG Length); -#else -#define CcCopyWriteWontFlush(FO, FOFF, LEN) ((LEN) <= 0x10000) -#endif - -#define CcReadAhead(FO, FOFF, LEN) ( \ - if ((LEN) >= 256) { \ - CcScheduleReadAhead((FO), (FOFF), (LEN)); \ - } \ -) - -#define PIN_WAIT (1) -#define PIN_EXCLUSIVE (2) -#define PIN_NO_READ (4) -#define PIN_IF_BCB (8) -#define PIN_CALLER_TRACKS_DIRTY_DATA (32) -#define PIN_HIGH_PRIORITY (64) - -#define MAP_WAIT 1 -#define MAP_NO_READ (16) -#define MAP_HIGH_PRIORITY (64) - -#define IOCTL_REDIR_QUERY_PATH CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 99, METHOD_NEITHER, FILE_ANY_ACCESS) -#define IOCTL_REDIR_QUERY_PATH_EX CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 100, METHOD_NEITHER, FILE_ANY_ACCESS) - -typedef struct _QUERY_PATH_REQUEST { - ULONG PathNameLength; - PIO_SECURITY_CONTEXT SecurityContext; - WCHAR FilePathName[1]; -} QUERY_PATH_REQUEST, *PQUERY_PATH_REQUEST; - -typedef struct _QUERY_PATH_REQUEST_EX { - PIO_SECURITY_CONTEXT pSecurityContext; - ULONG EaLength; - PVOID pEaBuffer; - UNICODE_STRING PathName; - UNICODE_STRING DomainServiceName; - ULONG_PTR Reserved[ 3 ]; -} QUERY_PATH_REQUEST_EX, *PQUERY_PATH_REQUEST_EX; - -typedef struct _QUERY_PATH_RESPONSE { - ULONG LengthAccepted; -} QUERY_PATH_RESPONSE, *PQUERY_PATH_RESPONSE; - -#define VOLSNAPCONTROLTYPE 0x00000053 -#define IOCTL_VOLSNAP_FLUSH_AND_HOLD_WRITES CTL_CODE(VOLSNAPCONTROLTYPE, 0, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) - -#if (NTDDI_VERSION >= NTDDI_WIN2K) - -NTSYSAPI -NTSTATUS -NTAPI -ZwQueryObject( - IN HANDLE Handle OPTIONAL, - IN OBJECT_INFORMATION_CLASS ObjectInformationClass, - OUT PVOID ObjectInformation OPTIONAL, - IN ULONG ObjectInformationLength, - OUT PULONG ReturnLength OPTIONAL); - -NTSYSAPI -NTSTATUS -NTAPI -ZwNotifyChangeKey( - IN HANDLE KeyHandle, - IN HANDLE EventHandle OPTIONAL, - IN PIO_APC_ROUTINE ApcRoutine OPTIONAL, - IN PVOID ApcContext OPTIONAL, - OUT PIO_STATUS_BLOCK IoStatusBlock, - IN ULONG NotifyFilter, - IN BOOLEAN WatchSubtree, - OUT PVOID Buffer, - IN ULONG BufferLength, - IN BOOLEAN Asynchronous); - -NTSYSAPI -NTSTATUS -NTAPI -ZwCreateEvent( - OUT PHANDLE EventHandle, - IN ACCESS_MASK DesiredAccess, - IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, - IN EVENT_TYPE EventType, - IN BOOLEAN InitialState); - -NTSYSAPI -NTSTATUS -NTAPI -ZwDeleteFile( - IN POBJECT_ATTRIBUTES ObjectAttributes); - -NTSYSAPI -NTSTATUS -NTAPI -ZwQueryDirectoryFile( - IN HANDLE FileHandle, - IN HANDLE Event OPTIONAL, - IN PIO_APC_ROUTINE ApcRoutine OPTIONAL, - IN PVOID ApcContext OPTIONAL, - OUT PIO_STATUS_BLOCK IoStatusBlock, - OUT PVOID FileInformation, - IN ULONG Length, - IN FILE_INFORMATION_CLASS FileInformationClass, - IN BOOLEAN ReturnSingleEntry, - IN PUNICODE_STRING FileName OPTIONAL, - IN BOOLEAN RestartScan); - -NTSYSAPI -NTSTATUS -NTAPI -ZwSetVolumeInformationFile( - IN HANDLE FileHandle, - OUT PIO_STATUS_BLOCK IoStatusBlock, - IN PVOID FsInformation, - IN ULONG Length, - IN FS_INFORMATION_CLASS FsInformationClass); - -NTSYSAPI -NTSTATUS -NTAPI -ZwFsControlFile( - IN HANDLE FileHandle, - IN HANDLE Event OPTIONAL, - IN PIO_APC_ROUTINE ApcRoutine OPTIONAL, - IN PVOID ApcContext OPTIONAL, - OUT PIO_STATUS_BLOCK IoStatusBlock, - IN ULONG FsControlCode, - IN PVOID InputBuffer OPTIONAL, - IN ULONG InputBufferLength, - OUT PVOID OutputBuffer OPTIONAL, - IN ULONG OutputBufferLength); - -NTSYSAPI -NTSTATUS -NTAPI -ZwDuplicateObject( - IN HANDLE SourceProcessHandle, - IN HANDLE SourceHandle, - IN HANDLE TargetProcessHandle OPTIONAL, - OUT PHANDLE TargetHandle OPTIONAL, - IN ACCESS_MASK DesiredAccess, - IN ULONG HandleAttributes, - IN ULONG Options); - -NTSYSAPI -NTSTATUS -NTAPI -ZwOpenDirectoryObject( - OUT PHANDLE DirectoryHandle, - IN ACCESS_MASK DesiredAccess, - IN POBJECT_ATTRIBUTES ObjectAttributes); - -NTSYSAPI -NTSTATUS -NTAPI -ZwAllocateVirtualMemory( - IN HANDLE ProcessHandle, - IN OUT PVOID *BaseAddress, - IN ULONG_PTR ZeroBits, - IN OUT PSIZE_T RegionSize, - IN ULONG AllocationType, - IN ULONG Protect); - -NTSYSAPI -NTSTATUS -NTAPI -ZwFreeVirtualMemory( - IN HANDLE ProcessHandle, - IN OUT PVOID *BaseAddress, - IN OUT PSIZE_T RegionSize, - IN ULONG FreeType); - -NTSYSAPI -NTSTATUS -NTAPI -ZwWaitForSingleObject( - IN HANDLE Handle, - IN BOOLEAN Alertable, - IN PLARGE_INTEGER Timeout OPTIONAL); - -NTSYSAPI -NTSTATUS -NTAPI -ZwSetEvent( - IN HANDLE EventHandle, - OUT PLONG PreviousState OPTIONAL); - -NTSYSAPI -NTSTATUS -NTAPI -ZwFlushVirtualMemory( - IN HANDLE ProcessHandle, - IN OUT PVOID *BaseAddress, - IN OUT PSIZE_T RegionSize, - OUT PIO_STATUS_BLOCK IoStatusBlock); - -NTSYSAPI -NTSTATUS -NTAPI -ZwQueryInformationToken( - IN HANDLE TokenHandle, - IN TOKEN_INFORMATION_CLASS TokenInformationClass, - OUT PVOID TokenInformation, - IN ULONG Length, - OUT PULONG ResultLength); - -NTSYSAPI -NTSTATUS -NTAPI -ZwSetSecurityObject( - IN HANDLE Handle, - IN SECURITY_INFORMATION SecurityInformation, - IN PSECURITY_DESCRIPTOR SecurityDescriptor); - -NTSYSAPI -NTSTATUS -NTAPI -ZwQuerySecurityObject( - IN HANDLE FileHandle, - IN SECURITY_INFORMATION SecurityInformation, - OUT PSECURITY_DESCRIPTOR SecurityDescriptor, - IN ULONG Length, - OUT PULONG ResultLength); - -#endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */ - -#if (NTDDI_VERSION >= NTDDI_WINXP) - -NTSYSAPI -NTSTATUS -NTAPI -ZwOpenProcessTokenEx( - IN HANDLE ProcessHandle, - IN ACCESS_MASK DesiredAccess, - IN ULONG HandleAttributes, - OUT PHANDLE TokenHandle); - -NTSYSAPI -NTSTATUS -NTAPI -ZwOpenThreadTokenEx( - IN HANDLE ThreadHandle, - IN ACCESS_MASK DesiredAccess, - IN BOOLEAN OpenAsSelf, - IN ULONG HandleAttributes, - OUT PHANDLE TokenHandle); - -#endif - -#if (NTDDI_VERSION >= NTDDI_VISTA) - -NTSYSAPI -NTSTATUS -NTAPI -ZwLockFile( - IN HANDLE FileHandle, - IN HANDLE Event OPTIONAL, - IN PIO_APC_ROUTINE ApcRoutine OPTIONAL, - IN PVOID ApcContext OPTIONAL, - OUT PIO_STATUS_BLOCK IoStatusBlock, - IN PLARGE_INTEGER ByteOffset, - IN PLARGE_INTEGER Length, - IN ULONG Key, - IN BOOLEAN FailImmediately, - IN BOOLEAN ExclusiveLock); - -NTSYSAPI -NTSTATUS -NTAPI -ZwUnlockFile( - IN HANDLE FileHandle, - OUT PIO_STATUS_BLOCK IoStatusBlock, - IN PLARGE_INTEGER ByteOffset, - IN PLARGE_INTEGER Length, - IN ULONG Key); - -NTSYSAPI -NTSTATUS -NTAPI -ZwQueryQuotaInformationFile( - IN HANDLE FileHandle, - OUT PIO_STATUS_BLOCK IoStatusBlock, - OUT PVOID Buffer, - IN ULONG Length, - IN BOOLEAN ReturnSingleEntry, - IN PVOID SidList, - IN ULONG SidListLength, - IN PSID StartSid OPTIONAL, - IN BOOLEAN RestartScan); - -NTSYSAPI -NTSTATUS -NTAPI -ZwSetQuotaInformationFile( - IN HANDLE FileHandle, - OUT PIO_STATUS_BLOCK IoStatusBlock, - IN PVOID Buffer, - IN ULONG Length); - -NTSYSAPI -NTSTATUS -NTAPI -ZwFlushBuffersFile( - IN HANDLE FileHandle, - OUT PIO_STATUS_BLOCK IoStatusBlock); - -#endif /* (NTDDI_VERSION >= NTDDI_VISTA) */ - -#if (NTDDI_VERSION >= NTDDI_WIN7) -NTSYSAPI -NTSTATUS -NTAPI -ZwSetInformationToken( - IN HANDLE TokenHandle, - IN TOKEN_INFORMATION_CLASS TokenInformationClass, - IN PVOID TokenInformation, - IN ULONG TokenInformationLength); -#endif - -NTSYSAPI -NTSTATUS -NTAPI -ZwQueryEaFile( - IN HANDLE FileHandle, - OUT PIO_STATUS_BLOCK IoStatusBlock, - OUT PVOID Buffer, - IN ULONG Length, - IN BOOLEAN ReturnSingleEntry, - IN PVOID EaList OPTIONAL, - IN ULONG EaListLength, - IN PULONG EaIndex OPTIONAL, - IN BOOLEAN RestartScan); - -NTSYSAPI -NTSTATUS -NTAPI -ZwSetEaFile( - IN HANDLE FileHandle, - OUT PIO_STATUS_BLOCK IoStatusBlock, - OUT PVOID Buffer, - IN ULONG Length); - -NTSYSAPI -NTSTATUS -NTAPI -ZwDuplicateToken( - IN HANDLE ExistingTokenHandle, - IN ACCESS_MASK DesiredAccess, - IN POBJECT_ATTRIBUTES ObjectAttributes, - IN BOOLEAN EffectiveOnly, - IN TOKEN_TYPE TokenType, - OUT PHANDLE NewTokenHandle); - -#pragma pack(push,4) - -#ifndef VER_PRODUCTBUILD -#define VER_PRODUCTBUILD 10000 -#endif - -#include "csq.h" - -extern PACL SePublicDefaultDacl; -extern PACL SeSystemDefaultDacl; - -#define FS_LFN_APIS 0x00004000 - -#define FILE_STORAGE_TYPE_SPECIFIED 0x00000041 /* FILE_DIRECTORY_FILE | FILE_NON_DIRECTORY_FILE */ -#define FILE_STORAGE_TYPE_DEFAULT (StorageTypeDefault << FILE_STORAGE_TYPE_SHIFT) -#define FILE_STORAGE_TYPE_DIRECTORY (StorageTypeDirectory << FILE_STORAGE_TYPE_SHIFT) -#define FILE_STORAGE_TYPE_FILE (StorageTypeFile << FILE_STORAGE_TYPE_SHIFT) -#define FILE_STORAGE_TYPE_DOCFILE (StorageTypeDocfile << FILE_STORAGE_TYPE_SHIFT) -#define FILE_STORAGE_TYPE_JUNCTION_POINT (StorageTypeJunctionPoint << FILE_STORAGE_TYPE_SHIFT) -#define FILE_STORAGE_TYPE_CATALOG (StorageTypeCatalog << FILE_STORAGE_TYPE_SHIFT) -#define FILE_STORAGE_TYPE_STRUCTURED_STORAGE (StorageTypeStructuredStorage << FILE_STORAGE_TYPE_SHIFT) -#define FILE_STORAGE_TYPE_EMBEDDING (StorageTypeEmbedding << FILE_STORAGE_TYPE_SHIFT) -#define FILE_STORAGE_TYPE_STREAM (StorageTypeStream << FILE_STORAGE_TYPE_SHIFT) -#define FILE_MINIMUM_STORAGE_TYPE FILE_STORAGE_TYPE_DEFAULT -#define FILE_MAXIMUM_STORAGE_TYPE FILE_STORAGE_TYPE_STREAM -#define FILE_STORAGE_TYPE_MASK 0x000f0000 -#define FILE_STORAGE_TYPE_SHIFT 16 - -#define FILE_VC_QUOTAS_LOG_VIOLATIONS 0x00000004 - -#ifdef _X86_ -#define HARDWARE_PTE HARDWARE_PTE_X86 -#define PHARDWARE_PTE PHARDWARE_PTE_X86 -#endif - -#define IO_ATTACH_DEVICE_API 0x80000000 - -#define IO_TYPE_APC 18 -#define IO_TYPE_DPC 19 -#define IO_TYPE_DEVICE_QUEUE 20 -#define IO_TYPE_EVENT_PAIR 21 -#define IO_TYPE_INTERRUPT 22 -#define IO_TYPE_PROFILE 23 - -#define IRP_BEING_VERIFIED 0x10 - -#define MAILSLOT_CLASS_FIRSTCLASS 1 -#define MAILSLOT_CLASS_SECONDCLASS 2 - -#define MAILSLOT_SIZE_AUTO 0 - -#define MEM_DOS_LIM 0x40000000 - -#define OB_TYPE_TYPE 1 -#define OB_TYPE_DIRECTORY 2 -#define OB_TYPE_SYMBOLIC_LINK 3 -#define OB_TYPE_TOKEN 4 -#define OB_TYPE_PROCESS 5 -#define OB_TYPE_THREAD 6 -#define OB_TYPE_EVENT 7 -#define OB_TYPE_EVENT_PAIR 8 -#define OB_TYPE_MUTANT 9 -#define OB_TYPE_SEMAPHORE 10 -#define OB_TYPE_TIMER 11 -#define OB_TYPE_PROFILE 12 -#define OB_TYPE_WINDOW_STATION 13 -#define OB_TYPE_DESKTOP 14 -#define OB_TYPE_SECTION 15 -#define OB_TYPE_KEY 16 -#define OB_TYPE_PORT 17 -#define OB_TYPE_ADAPTER 18 -#define OB_TYPE_CONTROLLER 19 -#define OB_TYPE_DEVICE 20 -#define OB_TYPE_DRIVER 21 -#define OB_TYPE_IO_COMPLETION 22 -#define OB_TYPE_FILE 23 - -#define SEC_BASED 0x00200000 - -/* end winnt.h */ - -#define TOKEN_HAS_ADMIN_GROUP 0x08 - -#if (VER_PRODUCTBUILD >= 1381) -#define FSCTL_GET_HFS_INFORMATION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 31, METHOD_BUFFERED, FILE_ANY_ACCESS) -#endif /* (VER_PRODUCTBUILD >= 1381) */ - -#if (VER_PRODUCTBUILD >= 2195) - -#define FSCTL_READ_PROPERTY_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 33, METHOD_NEITHER, FILE_ANY_ACCESS) -#define FSCTL_WRITE_PROPERTY_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 34, METHOD_NEITHER, FILE_ANY_ACCESS) - -#define FSCTL_DUMP_PROPERTY_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 37, METHOD_NEITHER, FILE_ANY_ACCESS) - -#define FSCTL_HSM_MSG CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 66, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA) -#define FSCTL_NSS_CONTROL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 67, METHOD_BUFFERED, FILE_WRITE_DATA) -#define FSCTL_HSM_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 68, METHOD_NEITHER, FILE_READ_DATA | FILE_WRITE_DATA) -#define FSCTL_NSS_RCONTROL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 70, METHOD_BUFFERED, FILE_READ_DATA) -#endif /* (VER_PRODUCTBUILD >= 2195) */ - -#define FSCTL_NETWORK_SET_CONFIGURATION_INFO CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 102, METHOD_IN_DIRECT, FILE_ANY_ACCESS) -#define FSCTL_NETWORK_GET_CONFIGURATION_INFO CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 103, METHOD_OUT_DIRECT, FILE_ANY_ACCESS) -#define FSCTL_NETWORK_GET_CONNECTION_INFO CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 104, METHOD_NEITHER, FILE_ANY_ACCESS) -#define FSCTL_NETWORK_ENUMERATE_CONNECTIONS CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 105, METHOD_NEITHER, FILE_ANY_ACCESS) -#define FSCTL_NETWORK_DELETE_CONNECTION CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 107, METHOD_BUFFERED, FILE_ANY_ACCESS) -#define FSCTL_NETWORK_GET_STATISTICS CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 116, METHOD_BUFFERED, FILE_ANY_ACCESS) -#define FSCTL_NETWORK_SET_DOMAIN_NAME CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 120, METHOD_BUFFERED, FILE_ANY_ACCESS) -#define FSCTL_NETWORK_REMOTE_BOOT_INIT_SCRT CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 250, METHOD_BUFFERED, FILE_ANY_ACCESS) - -typedef enum _FILE_STORAGE_TYPE { - StorageTypeDefault = 1, - StorageTypeDirectory, - StorageTypeFile, - StorageTypeJunctionPoint, - StorageTypeCatalog, - StorageTypeStructuredStorage, - StorageTypeEmbedding, - StorageTypeStream -} FILE_STORAGE_TYPE; - -typedef struct _OBJECT_BASIC_INFORMATION -{ - ULONG Attributes; - ACCESS_MASK GrantedAccess; - ULONG HandleCount; - ULONG PointerCount; - ULONG PagedPoolCharge; - ULONG NonPagedPoolCharge; - ULONG Reserved[ 3 ]; - ULONG NameInfoSize; - ULONG TypeInfoSize; - ULONG SecurityDescriptorSize; - LARGE_INTEGER CreationTime; -} OBJECT_BASIC_INFORMATION, *POBJECT_BASIC_INFORMATION; - -typedef struct _BITMAP_RANGE { - LIST_ENTRY Links; - LONGLONG BasePage; - ULONG FirstDirtyPage; - ULONG LastDirtyPage; - ULONG DirtyPages; - PULONG Bitmap; -} BITMAP_RANGE, *PBITMAP_RANGE; - -typedef struct _FILE_COPY_ON_WRITE_INFORMATION { - BOOLEAN ReplaceIfExists; - HANDLE RootDirectory; - ULONG FileNameLength; - WCHAR FileName[1]; -} FILE_COPY_ON_WRITE_INFORMATION, *PFILE_COPY_ON_WRITE_INFORMATION; - -typedef struct _FILE_FULL_DIRECTORY_INFORMATION { - ULONG NextEntryOffset; - ULONG FileIndex; - LARGE_INTEGER CreationTime; - LARGE_INTEGER LastAccessTime; - LARGE_INTEGER LastWriteTime; - LARGE_INTEGER ChangeTime; - LARGE_INTEGER EndOfFile; - LARGE_INTEGER AllocationSize; - ULONG FileAttributes; - ULONG FileNameLength; - ULONG EaSize; - WCHAR FileName[ANYSIZE_ARRAY]; -} FILE_FULL_DIRECTORY_INFORMATION, *PFILE_FULL_DIRECTORY_INFORMATION; - -/* raw internal file lock struct returned from FsRtlGetNextFileLock */ -typedef struct _FILE_SHARED_LOCK_ENTRY { - PVOID Unknown1; - PVOID Unknown2; - FILE_LOCK_INFO FileLock; -} FILE_SHARED_LOCK_ENTRY, *PFILE_SHARED_LOCK_ENTRY; - -/* raw internal file lock struct returned from FsRtlGetNextFileLock */ -typedef struct _FILE_EXCLUSIVE_LOCK_ENTRY { - LIST_ENTRY ListEntry; - PVOID Unknown1; - PVOID Unknown2; - FILE_LOCK_INFO FileLock; -} FILE_EXCLUSIVE_LOCK_ENTRY, *PFILE_EXCLUSIVE_LOCK_ENTRY; - -typedef struct _FILE_MAILSLOT_PEEK_BUFFER { - ULONG ReadDataAvailable; - ULONG NumberOfMessages; - ULONG MessageLength; -} FILE_MAILSLOT_PEEK_BUFFER, *PFILE_MAILSLOT_PEEK_BUFFER; - -typedef struct _FILE_OLE_CLASSID_INFORMATION { - GUID ClassId; -} FILE_OLE_CLASSID_INFORMATION, *PFILE_OLE_CLASSID_INFORMATION; - -typedef struct _FILE_OLE_ALL_INFORMATION { - FILE_BASIC_INFORMATION BasicInformation; - FILE_STANDARD_INFORMATION StandardInformation; - FILE_INTERNAL_INFORMATION InternalInformation; - FILE_EA_INFORMATION EaInformation; - FILE_ACCESS_INFORMATION AccessInformation; - FILE_POSITION_INFORMATION PositionInformation; - FILE_MODE_INFORMATION ModeInformation; - FILE_ALIGNMENT_INFORMATION AlignmentInformation; - USN LastChangeUsn; - USN ReplicationUsn; - LARGE_INTEGER SecurityChangeTime; - FILE_OLE_CLASSID_INFORMATION OleClassIdInformation; - FILE_OBJECTID_INFORMATION ObjectIdInformation; - FILE_STORAGE_TYPE StorageType; - ULONG OleStateBits; - ULONG OleId; - ULONG NumberOfStreamReferences; - ULONG StreamIndex; - ULONG SecurityId; - BOOLEAN ContentIndexDisable; - BOOLEAN InheritContentIndexDisable; - FILE_NAME_INFORMATION NameInformation; -} FILE_OLE_ALL_INFORMATION, *PFILE_OLE_ALL_INFORMATION; - -typedef struct _FILE_OLE_DIR_INFORMATION { - ULONG NextEntryOffset; - ULONG FileIndex; - LARGE_INTEGER CreationTime; - LARGE_INTEGER LastAccessTime; - LARGE_INTEGER LastWriteTime; - LARGE_INTEGER ChangeTime; - LARGE_INTEGER EndOfFile; - LARGE_INTEGER AllocationSize; - ULONG FileAttributes; - ULONG FileNameLength; - FILE_STORAGE_TYPE StorageType; - GUID OleClassId; - ULONG OleStateBits; - BOOLEAN ContentIndexDisable; - BOOLEAN InheritContentIndexDisable; - WCHAR FileName[1]; -} FILE_OLE_DIR_INFORMATION, *PFILE_OLE_DIR_INFORMATION; - -typedef struct _FILE_OLE_INFORMATION { - LARGE_INTEGER SecurityChangeTime; - FILE_OLE_CLASSID_INFORMATION OleClassIdInformation; - FILE_OBJECTID_INFORMATION ObjectIdInformation; - FILE_STORAGE_TYPE StorageType; - ULONG OleStateBits; - BOOLEAN ContentIndexDisable; - BOOLEAN InheritContentIndexDisable; -} FILE_OLE_INFORMATION, *PFILE_OLE_INFORMATION; - -typedef struct _FILE_OLE_STATE_BITS_INFORMATION { - ULONG StateBits; - ULONG StateBitsMask; -} FILE_OLE_STATE_BITS_INFORMATION, *PFILE_OLE_STATE_BITS_INFORMATION; - -typedef struct _MAPPING_PAIR { - ULONGLONG Vcn; - ULONGLONG Lcn; -} MAPPING_PAIR, *PMAPPING_PAIR; - -typedef struct _GET_RETRIEVAL_DESCRIPTOR { - ULONG NumberOfPairs; - ULONGLONG StartVcn; - MAPPING_PAIR Pair[1]; -} GET_RETRIEVAL_DESCRIPTOR, *PGET_RETRIEVAL_DESCRIPTOR; - -typedef struct _MBCB { - CSHORT NodeTypeCode; - CSHORT NodeIsInZone; - ULONG PagesToWrite; - ULONG DirtyPages; - ULONG Reserved; - LIST_ENTRY BitmapRanges; - LONGLONG ResumeWritePage; - BITMAP_RANGE BitmapRange1; - BITMAP_RANGE BitmapRange2; - BITMAP_RANGE BitmapRange3; -} MBCB, *PMBCB; - -typedef struct _MOVEFILE_DESCRIPTOR { - HANDLE FileHandle; - ULONG Reserved; - LARGE_INTEGER StartVcn; - LARGE_INTEGER TargetLcn; - ULONG NumVcns; - ULONG Reserved1; -} MOVEFILE_DESCRIPTOR, *PMOVEFILE_DESCRIPTOR; - -typedef struct _OBJECT_BASIC_INFO { - ULONG Attributes; - ACCESS_MASK GrantedAccess; - ULONG HandleCount; - ULONG ReferenceCount; - ULONG PagedPoolUsage; - ULONG NonPagedPoolUsage; - ULONG Reserved[3]; - ULONG NameInformationLength; - ULONG TypeInformationLength; - ULONG SecurityDescriptorLength; - LARGE_INTEGER CreateTime; -} OBJECT_BASIC_INFO, *POBJECT_BASIC_INFO; - -typedef struct _OBJECT_HANDLE_ATTRIBUTE_INFO { - BOOLEAN Inherit; - BOOLEAN ProtectFromClose; -} OBJECT_HANDLE_ATTRIBUTE_INFO, *POBJECT_HANDLE_ATTRIBUTE_INFO; - -typedef struct _OBJECT_NAME_INFO { - UNICODE_STRING ObjectName; - WCHAR ObjectNameBuffer[1]; -} OBJECT_NAME_INFO, *POBJECT_NAME_INFO; - -typedef struct _OBJECT_PROTECTION_INFO { - BOOLEAN Inherit; - BOOLEAN ProtectHandle; -} OBJECT_PROTECTION_INFO, *POBJECT_PROTECTION_INFO; - -typedef struct _OBJECT_TYPE_INFO { - UNICODE_STRING ObjectTypeName; - UCHAR Unknown[0x58]; - WCHAR ObjectTypeNameBuffer[1]; -} OBJECT_TYPE_INFO, *POBJECT_TYPE_INFO; - -typedef struct _OBJECT_ALL_TYPES_INFO { - ULONG NumberOfObjectTypes; - OBJECT_TYPE_INFO ObjectsTypeInfo[1]; -} OBJECT_ALL_TYPES_INFO, *POBJECT_ALL_TYPES_INFO; - -#if defined(USE_LPC6432) -#define LPC_CLIENT_ID CLIENT_ID64 -#define LPC_SIZE_T ULONGLONG -#define LPC_PVOID ULONGLONG -#define LPC_HANDLE ULONGLONG -#else -#define LPC_CLIENT_ID CLIENT_ID -#define LPC_SIZE_T SIZE_T -#define LPC_PVOID PVOID -#define LPC_HANDLE HANDLE -#endif - -typedef struct _PORT_MESSAGE -{ - union - { - struct - { - CSHORT DataLength; - CSHORT TotalLength; - } s1; - ULONG Length; - } u1; - union - { - struct - { - CSHORT Type; - CSHORT DataInfoOffset; - } s2; - ULONG ZeroInit; - } u2; - __GNU_EXTENSION union - { - LPC_CLIENT_ID ClientId; - double DoNotUseThisField; - }; - ULONG MessageId; - __GNU_EXTENSION union - { - LPC_SIZE_T ClientViewSize; - ULONG CallbackId; - }; -} PORT_MESSAGE, *PPORT_MESSAGE; - -#define LPC_KERNELMODE_MESSAGE (CSHORT)((USHORT)0x8000) - -typedef struct _PORT_VIEW -{ - ULONG Length; - LPC_HANDLE SectionHandle; - ULONG SectionOffset; - LPC_SIZE_T ViewSize; - LPC_PVOID ViewBase; - LPC_PVOID ViewRemoteBase; -} PORT_VIEW, *PPORT_VIEW; +#define FsRtlIsLeadDbcsCharacter(DBCS_CHAR) ( \ + (BOOLEAN)((UCHAR)(DBCS_CHAR) < 0x80 ? FALSE : \ + (NLS_MB_CODE_PAGE_TAG && \ + (NLS_OEM_LEAD_BYTE_INFO[(UCHAR)(DBCS_CHAR)] != 0))) \ +) -typedef struct _REMOTE_PORT_VIEW -{ - ULONG Length; - LPC_SIZE_T ViewSize; - LPC_PVOID ViewBase; -} REMOTE_PORT_VIEW, *PREMOTE_PORT_VIEW; +#define FsRtlIsUnicodeCharacterWild(C) ( \ + (((C) >= 0x40) ? \ + FALSE : \ + FlagOn(FsRtlLegalAnsiCharacterArray[(C)], FSRTL_WILD_CHARACTER )) \ +) -typedef struct _VAD_HEADER { - PVOID StartVPN; - PVOID EndVPN; - struct _VAD_HEADER* ParentLink; - struct _VAD_HEADER* LeftLink; - struct _VAD_HEADER* RightLink; - ULONG Flags; /* LSB = CommitCharge */ - PVOID ControlArea; - PVOID FirstProtoPte; - PVOID LastPTE; - ULONG Unknown; - LIST_ENTRY Secured; -} VAD_HEADER, *PVAD_HEADER; +NTKERNELAPI +BOOLEAN +NTAPI +FsRtlLookupBaseMcbEntry ( + IN PBASE_MCB Mcb, + IN LONGLONG Vbn, + OUT PLONGLONG Lbn OPTIONAL, + OUT PLONGLONG SectorCountFromLbn OPTIONAL, + OUT PLONGLONG StartingLbn OPTIONAL, + OUT PLONGLONG SectorCountFromStartingLbn OPTIONAL, + OUT PULONG Index OPTIONAL +); NTKERNELAPI -LARGE_INTEGER +BOOLEAN NTAPI -CcGetLsnForFileObject ( - IN PFILE_OBJECT FileObject, - OUT PLARGE_INTEGER OldestLsn OPTIONAL +FsRtlLookupLargeMcbEntry ( + IN PLARGE_MCB Mcb, + IN LONGLONG Vbn, + OUT PLONGLONG Lbn OPTIONAL, + OUT PLONGLONG SectorCountFromLbn OPTIONAL, + OUT PLONGLONG StartingLbn OPTIONAL, + OUT PLONGLONG SectorCountFromStartingLbn OPTIONAL, + OUT PULONG Index OPTIONAL ); NTKERNELAPI -PVOID +BOOLEAN NTAPI -FsRtlAllocatePool ( - IN POOL_TYPE PoolType, - IN ULONG NumberOfBytes +FsRtlLookupLastBaseMcbEntry ( + IN PBASE_MCB Mcb, + OUT PLONGLONG Vbn, + OUT PLONGLONG Lbn ); NTKERNELAPI -PVOID +BOOLEAN NTAPI -FsRtlAllocatePoolWithQuota ( - IN POOL_TYPE PoolType, - IN ULONG NumberOfBytes +FsRtlLookupLastLargeMcbEntry ( + IN PLARGE_MCB Mcb, + OUT PLONGLONG Vbn, + OUT PLONGLONG Lbn ); NTKERNELAPI -PVOID +BOOLEAN NTAPI -FsRtlAllocatePoolWithQuotaTag ( - IN POOL_TYPE PoolType, - IN ULONG NumberOfBytes, - IN ULONG Tag +FsRtlLookupLastMcbEntry ( + IN PMCB Mcb, + OUT PVBN Vbn, + OUT PLBN Lbn ); NTKERNELAPI -PVOID +BOOLEAN NTAPI -FsRtlAllocatePoolWithTag ( - IN POOL_TYPE PoolType, - IN ULONG NumberOfBytes, - IN ULONG Tag +FsRtlLookupLastBaseMcbEntryAndIndex ( + IN PBASE_MCB OpaqueMcb, + IN OUT PLONGLONG LargeVbn, + IN OUT PLONGLONG LargeLbn, + IN OUT PULONG Index ); NTKERNELAPI BOOLEAN NTAPI -FsRtlIsFatDbcsLegal ( - IN ANSI_STRING DbcsName, - IN BOOLEAN WildCardsPermissible, - IN BOOLEAN PathNamePermissible, - IN BOOLEAN LeadingBackslashPermissible +FsRtlLookupLastLargeMcbEntryAndIndex ( + IN PLARGE_MCB OpaqueMcb, + OUT PLONGLONG LargeVbn, + OUT PLONGLONG LargeLbn, + OUT PULONG Index +); + +NTKERNELAPI +BOOLEAN +NTAPI +FsRtlLookupMcbEntry ( + IN PMCB Mcb, + IN VBN Vbn, + OUT PLBN Lbn, + OUT PULONG SectorCount OPTIONAL, + OUT PULONG Index +); + +NTKERNELAPI +PFSRTL_PER_STREAM_CONTEXT +NTAPI +FsRtlLookupPerStreamContextInternal ( + IN PFSRTL_ADVANCED_FCB_HEADER StreamContext, + IN PVOID OwnerId OPTIONAL, + IN PVOID InstanceId OPTIONAL ); NTKERNELAPI @@ -9352,6 +8612,14 @@ FsRtlMdlWriteComplete ( IN PMDL MdlChain ); +NTKERNELAPI +NTSTATUS +NTAPI +FsRtlNormalizeNtstatus ( + IN NTSTATUS Exception, + IN NTSTATUS GenericException +); + NTKERNELAPI VOID NTAPI @@ -9365,6 +8633,315 @@ FsRtlNotifyChangeDirectory ( IN PIRP NotifyIrp ); +NTKERNELAPI +VOID +NTAPI +FsRtlNotifyCleanup ( + IN PNOTIFY_SYNC NotifySync, + IN PLIST_ENTRY NotifyList, + IN PVOID FsContext +); + +typedef BOOLEAN (NTAPI *PCHECK_FOR_TRAVERSE_ACCESS) ( + IN PVOID NotifyContext, + IN PVOID TargetContext, + IN PSECURITY_SUBJECT_CONTEXT SubjectContext +); + +NTKERNELAPI +VOID +NTAPI +FsRtlNotifyFilterChangeDirectory ( + IN PNOTIFY_SYNC NotifySync, + IN PLIST_ENTRY NotifyList, + IN PVOID FsContext, + IN PSTRING FullDirectoryName, + IN BOOLEAN WatchTree, + IN BOOLEAN IgnoreBuffer, + IN ULONG CompletionFilter, + IN PIRP NotifyIrp, + IN PCHECK_FOR_TRAVERSE_ACCESS TraverseCallback OPTIONAL, + IN PSECURITY_SUBJECT_CONTEXT SubjectContext OPTIONAL, + IN PFILTER_REPORT_CHANGE FilterCallback OPTIONAL); + +NTKERNELAPI +VOID +NTAPI +FsRtlNotifyFilterReportChange ( + IN PNOTIFY_SYNC NotifySync, + IN PLIST_ENTRY NotifyList, + IN PSTRING FullTargetName, + IN USHORT TargetNameOffset, + IN PSTRING StreamName OPTIONAL, + IN PSTRING NormalizedParentName OPTIONAL, + IN ULONG FilterMatch, + IN ULONG Action, + IN PVOID TargetContext, + IN PVOID FilterContext); + +NTKERNELAPI +VOID +NTAPI +FsRtlNotifyFullChangeDirectory ( + IN PNOTIFY_SYNC NotifySync, + IN PLIST_ENTRY NotifyList, + IN PVOID FsContext, + IN PSTRING FullDirectoryName, + IN BOOLEAN WatchTree, + IN BOOLEAN IgnoreBuffer, + IN ULONG CompletionFilter, + IN PIRP NotifyIrp, + IN PCHECK_FOR_TRAVERSE_ACCESS TraverseCallback OPTIONAL, + IN PSECURITY_SUBJECT_CONTEXT SubjectContext OPTIONAL +); + +NTKERNELAPI +VOID +NTAPI +FsRtlNotifyFullReportChange ( + IN PNOTIFY_SYNC NotifySync, + IN PLIST_ENTRY NotifyList, + IN PSTRING FullTargetName, + IN USHORT TargetNameOffset, + IN PSTRING StreamName OPTIONAL, + IN PSTRING NormalizedParentName OPTIONAL, + IN ULONG FilterMatch, + IN ULONG Action, + IN PVOID TargetContext +); + +NTKERNELAPI +VOID +NTAPI +FsRtlNotifyInitializeSync ( + IN PNOTIFY_SYNC *NotifySync +); + +NTKERNELAPI +VOID +NTAPI +FsRtlNotifyUninitializeSync ( + IN PNOTIFY_SYNC *NotifySync +); + +#if (VER_PRODUCTBUILD >= 2195) + +NTKERNELAPI +NTSTATUS +NTAPI +FsRtlNotifyVolumeEvent ( + IN PFILE_OBJECT FileObject, + IN ULONG EventCode +); + +#endif /* (VER_PRODUCTBUILD >= 2195) */ + +NTKERNELAPI +ULONG +NTAPI +FsRtlNumberOfRunsInBaseMcb ( + IN PBASE_MCB Mcb +); + +NTKERNELAPI +ULONG +NTAPI +FsRtlNumberOfRunsInLargeMcb ( + IN PLARGE_MCB Mcb +); + +NTKERNELAPI +ULONG +NTAPI +FsRtlNumberOfRunsInMcb ( + IN PMCB Mcb +); + +NTKERNELAPI +NTSTATUS +NTAPI +FsRtlOplockFsctrl ( + IN POPLOCK Oplock, + IN PIRP Irp, + IN ULONG OpenCount +); + +NTKERNELAPI +BOOLEAN +NTAPI +FsRtlOplockIsFastIoPossible ( + IN POPLOCK Oplock +); + +typedef VOID +(NTAPI *PFSRTL_STACK_OVERFLOW_ROUTINE) ( + IN PVOID Context, + IN PKEVENT Event +); + +NTKERNELAPI +VOID +NTAPI +FsRtlPostPagingFileStackOverflow ( + IN PVOID Context, + IN PKEVENT Event, + IN PFSRTL_STACK_OVERFLOW_ROUTINE StackOverflowRoutine +); + +NTKERNELAPI +VOID +NTAPI +FsRtlPostStackOverflow ( + IN PVOID Context, + IN PKEVENT Event, + IN PFSRTL_STACK_OVERFLOW_ROUTINE StackOverflowRoutine +); + +NTKERNELAPI +NTSTATUS +NTAPI +FsRtlRegisterUncProvider ( + IN OUT PHANDLE MupHandle, + IN PUNICODE_STRING RedirectorDeviceName, + IN BOOLEAN MailslotsSupported +); + +NTKERNELAPI +VOID +NTAPI +FsRtlRemoveBaseMcbEntry ( + IN PBASE_MCB Mcb, + IN LONGLONG Vbn, + IN LONGLONG SectorCount +); + +NTKERNELAPI +VOID +NTAPI +FsRtlRemoveLargeMcbEntry ( + IN PLARGE_MCB Mcb, + IN LONGLONG Vbn, + IN LONGLONG SectorCount +); + +NTKERNELAPI +VOID +NTAPI +FsRtlRemoveMcbEntry ( + IN PMCB Mcb, + IN VBN Vbn, + IN ULONG SectorCount +); + +NTKERNELAPI +PFSRTL_PER_STREAM_CONTEXT +NTAPI +FsRtlRemovePerStreamContext ( + IN PFSRTL_ADVANCED_FCB_HEADER StreamContext, + IN PVOID OwnerId OPTIONAL, + IN PVOID InstanceId OPTIONAL +); + +NTKERNELAPI +VOID +NTAPI +FsRtlResetBaseMcb ( + IN PBASE_MCB Mcb +); + +NTKERNELAPI +VOID +NTAPI +FsRtlResetLargeMcb ( + IN PLARGE_MCB Mcb, + IN BOOLEAN SelfSynchronized +); + +NTKERNELAPI +BOOLEAN +NTAPI +FsRtlSplitBaseMcb ( + IN PBASE_MCB Mcb, + IN LONGLONG Vbn, + IN LONGLONG Amount +); + +NTKERNELAPI +BOOLEAN +NTAPI +FsRtlSplitLargeMcb ( + IN PLARGE_MCB Mcb, + IN LONGLONG Vbn, + IN LONGLONG Amount +); + +#define FsRtlSupportsPerStreamContexts(FO) ( \ + (BOOLEAN)((NULL != FsRtlGetPerStreamContextPointer(FO) && \ + FlagOn(FsRtlGetPerStreamContextPointer(FO)->Flags2, \ + FSRTL_FLAG2_SUPPORTS_FILTER_CONTEXTS)) \ +) + +NTKERNELAPI +VOID +NTAPI +FsRtlTruncateBaseMcb ( + IN PBASE_MCB Mcb, + IN LONGLONG Vbn +); + +NTKERNELAPI +VOID +NTAPI +FsRtlTruncateLargeMcb ( + IN PLARGE_MCB Mcb, + IN LONGLONG Vbn +); + +NTKERNELAPI +VOID +NTAPI +FsRtlTruncateMcb ( + IN PMCB Mcb, + IN VBN Vbn +); + +NTKERNELAPI +VOID +NTAPI +FsRtlUninitializeBaseMcb ( + IN PBASE_MCB Mcb +); + +NTKERNELAPI +VOID +NTAPI +FsRtlUninitializeLargeMcb ( + IN PLARGE_MCB Mcb +); + +NTKERNELAPI +VOID +NTAPI +FsRtlUninitializeMcb ( + IN PMCB Mcb +); + +NTKERNELAPI +VOID +NTAPI +FsRtlUninitializeOplock ( + IN OUT POPLOCK Oplock +); + +NTKERNELAPI +NTSTATUS +NTAPI +IoAttachDeviceToDeviceStackSafe( + IN PDEVICE_OBJECT SourceDevice, + IN PDEVICE_OBJECT TargetDevice, + OUT PDEVICE_OBJECT *AttachedToDeviceObject +); + NTKERNELAPI NTSTATUS NTAPI @@ -9401,6 +8978,23 @@ ObReferenceObjectByName ( OUT PVOID *Object ); +#if (NTDDI_VERSION >= NTDDI_WIN2K) + +NTKERNELAPI +NTSTATUS +NTAPI +PsAssignImpersonationToken( + IN PETHREAD Thread, + IN HANDLE Token OPTIONAL); + +NTKERNELAPI +HANDLE +NTAPI +PsReferencePrimaryToken( + IN OUT PEPROCESS Process); + +#endif + #define PsDereferenceImpersonationToken(T) \ {if (ARGUMENT_PRESENT(T)) { \ (ObDereferenceObject((T))); \ @@ -9418,6 +9012,14 @@ PsLookupProcessThreadByCid ( OUT PETHREAD *Thread ); +NTSYSAPI +VOID +NTAPI +RtlSecondsSince1970ToTime ( + IN ULONG SecondsSince1970, + OUT PLARGE_INTEGER Time +); + NTSYSAPI NTSTATUS NTAPI @@ -9428,6 +9030,105 @@ RtlSetSaclSecurityDescriptor ( IN BOOLEAN SaclDefaulted ); +NTSYSAPI +NTSTATUS +NTAPI +RtlUnicodeStringToCountedOemString ( + IN OUT POEM_STRING DestinationString, + IN PCUNICODE_STRING SourceString, + IN BOOLEAN AllocateDestinationString +); + +/* RTL Splay Tree Functions */ +NTSYSAPI +PRTL_SPLAY_LINKS +NTAPI +RtlSplay(PRTL_SPLAY_LINKS Links); + +NTSYSAPI +PRTL_SPLAY_LINKS +NTAPI +RtlDelete(PRTL_SPLAY_LINKS Links); + +NTSYSAPI +VOID +NTAPI +RtlDeleteNoSplay( + PRTL_SPLAY_LINKS Links, + PRTL_SPLAY_LINKS *Root +); + +NTSYSAPI +PRTL_SPLAY_LINKS +NTAPI +RtlSubtreeSuccessor(PRTL_SPLAY_LINKS Links); + +NTSYSAPI +PRTL_SPLAY_LINKS +NTAPI +RtlSubtreePredecessor(PRTL_SPLAY_LINKS Links); + +NTSYSAPI +PRTL_SPLAY_LINKS +NTAPI +RtlRealSuccessor(PRTL_SPLAY_LINKS Links); + +NTSYSAPI +PRTL_SPLAY_LINKS +NTAPI +RtlRealPredecessor(PRTL_SPLAY_LINKS Links); + +#define RtlIsLeftChild(Links) \ + (RtlLeftChild(RtlParent(Links)) == (PRTL_SPLAY_LINKS)(Links)) + +#define RtlIsRightChild(Links) \ + (RtlRightChild(RtlParent(Links)) == (PRTL_SPLAY_LINKS)(Links)) + +#define RtlRightChild(Links) \ + ((PRTL_SPLAY_LINKS)(Links))->RightChild + +#define RtlIsRoot(Links) \ + (RtlParent(Links) == (PRTL_SPLAY_LINKS)(Links)) + +#define RtlLeftChild(Links) \ + ((PRTL_SPLAY_LINKS)(Links))->LeftChild + +#define RtlParent(Links) \ + ((PRTL_SPLAY_LINKS)(Links))->Parent + +#define RtlInitializeSplayLinks(Links) \ + { \ + PRTL_SPLAY_LINKS _SplayLinks; \ + _SplayLinks = (PRTL_SPLAY_LINKS)(Links); \ + _SplayLinks->Parent = _SplayLinks; \ + _SplayLinks->LeftChild = NULL; \ + _SplayLinks->RightChild = NULL; \ + } + +#define RtlInsertAsLeftChild(ParentLinks,ChildLinks) \ + { \ + PRTL_SPLAY_LINKS _SplayParent; \ + PRTL_SPLAY_LINKS _SplayChild; \ + _SplayParent = (PRTL_SPLAY_LINKS)(ParentLinks); \ + _SplayChild = (PRTL_SPLAY_LINKS)(ChildLinks); \ + _SplayParent->LeftChild = _SplayChild; \ + _SplayChild->Parent = _SplayParent; \ + } + +#define RtlInsertAsRightChild(ParentLinks,ChildLinks) \ + { \ + PRTL_SPLAY_LINKS _SplayParent; \ + PRTL_SPLAY_LINKS _SplayChild; \ + _SplayParent = (PRTL_SPLAY_LINKS)(ParentLinks); \ + _SplayChild = (PRTL_SPLAY_LINKS)(ChildLinks); \ + _SplayParent->RightChild = _SplayChild; \ + _SplayChild->Parent = _SplayParent; \ + } + +// +// RTL time functions +// + #define SeEnableAccessToExports() SeExports = *(PSE_EXPORTS *)SeExports; #if (VER_PRODUCTBUILD >= 2195) @@ -9453,6 +9154,18 @@ ZwAlertThread ( IN HANDLE ThreadHandle ); +NTSYSAPI +NTSTATUS +NTAPI +ZwAllocateVirtualMemory ( + IN HANDLE ProcessHandle, + IN OUT PVOID *BaseAddress, + IN ULONG_PTR ZeroBits, + IN OUT PSIZE_T RegionSize, + IN ULONG AllocationType, + IN ULONG Protect +); + NTSYSAPI NTSTATUS NTAPI @@ -9498,6 +9211,19 @@ ZwCloseObjectAuditAlarm ( IN BOOLEAN GenerateOnClose ); +NTSYSAPI +NTSTATUS +NTAPI +ZwCreateSection ( + OUT PHANDLE SectionHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, + IN PLARGE_INTEGER MaximumSize OPTIONAL, + IN ULONG SectionPageProtection, + IN ULONG AllocationAttributes, + IN HANDLE FileHandle OPTIONAL +); + NTSYSAPI NTSTATUS NTAPI @@ -9508,6 +9234,71 @@ ZwCreateSymbolicLinkObject ( IN PUNICODE_STRING TargetName ); +NTSYSAPI +NTSTATUS +NTAPI +ZwDeleteFile ( + IN POBJECT_ATTRIBUTES ObjectAttributes +); + +NTSYSAPI +NTSTATUS +NTAPI +ZwDeleteValueKey ( + IN HANDLE Handle, + IN PUNICODE_STRING Name +); + + +#if (NTDDI_VERSION >= NTDDI_WIN2K) +NTSYSAPI +NTSTATUS +NTAPI +ZwDeviceIoControlFile ( + IN HANDLE FileHandle, + IN HANDLE Event OPTIONAL, + IN PIO_APC_ROUTINE ApcRoutine OPTIONAL, + IN PVOID ApcContext OPTIONAL, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN ULONG IoControlCode, + IN PVOID InputBuffer OPTIONAL, + IN ULONG InputBufferLength, + OUT PVOID OutputBuffer OPTIONAL, + IN ULONG OutputBufferLength); +#endif + +NTSYSAPI +NTSTATUS +NTAPI +ZwDisplayString ( + IN PUNICODE_STRING String +); + +NTSYSAPI +NTSTATUS +NTAPI +ZwDuplicateObject ( + IN HANDLE SourceProcessHandle, + IN HANDLE SourceHandle, + IN HANDLE TargetProcessHandle OPTIONAL, + OUT PHANDLE TargetHandle OPTIONAL, + IN ACCESS_MASK DesiredAccess, + IN ULONG HandleAttributes, + IN ULONG Options +); + +NTSYSAPI +NTSTATUS +NTAPI +ZwDuplicateToken ( + IN HANDLE ExistingTokenHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes, + IN BOOLEAN EffectiveOnly, + IN TOKEN_TYPE TokenType, + OUT PHANDLE NewTokenHandle +); + NTSYSAPI NTSTATUS NTAPI @@ -9527,6 +9318,46 @@ ZwFlushBuffersFile( #if (VER_PRODUCTBUILD >= 2195) +NTSYSAPI +NTSTATUS +NTAPI +ZwFlushVirtualMemory ( + IN HANDLE ProcessHandle, + IN OUT PVOID *BaseAddress, + IN OUT PULONG FlushSize, + OUT PIO_STATUS_BLOCK IoStatusBlock +); + +#endif /* (VER_PRODUCTBUILD >= 2195) */ + +NTSYSAPI +NTSTATUS +NTAPI +ZwFreeVirtualMemory ( + IN HANDLE ProcessHandle, + IN OUT PVOID *BaseAddress, + IN OUT PSIZE_T RegionSize, + IN ULONG FreeType +); + +NTSYSAPI +NTSTATUS +NTAPI +ZwFsControlFile ( + IN HANDLE FileHandle, + IN HANDLE Event OPTIONAL, + IN PIO_APC_ROUTINE ApcRoutine OPTIONAL, + IN PVOID ApcContext OPTIONAL, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN ULONG FsControlCode, + IN PVOID InputBuffer OPTIONAL, + IN ULONG InputBufferLength, + OUT PVOID OutputBuffer OPTIONAL, + IN ULONG OutputBufferLength +); + +#if (VER_PRODUCTBUILD >= 2195) + NTSYSAPI NTSTATUS NTAPI @@ -9539,6 +9370,14 @@ ZwInitiatePowerAction ( #endif /* (VER_PRODUCTBUILD >= 2195) */ +NTSYSAPI +NTSTATUS +NTAPI +ZwLoadDriver ( + /* "\\Registry\\Machine\\System\\CurrentControlSet\\Services\\" */ + IN PUNICODE_STRING RegistryPath +); + NTSYSAPI NTSTATUS NTAPI @@ -9547,6 +9386,41 @@ ZwLoadKey ( IN POBJECT_ATTRIBUTES FileObjectAttributes ); +NTSYSAPI +NTSTATUS +NTAPI +ZwNotifyChangeKey ( + IN HANDLE KeyHandle, + IN HANDLE EventHandle OPTIONAL, + IN PIO_APC_ROUTINE ApcRoutine OPTIONAL, + IN PVOID ApcContext OPTIONAL, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN ULONG NotifyFilter, + IN BOOLEAN WatchSubtree, + IN PVOID Buffer, + IN ULONG BufferLength, + IN BOOLEAN Asynchronous +); + +NTSYSAPI +NTSTATUS +NTAPI +ZwOpenDirectoryObject ( + OUT PHANDLE DirectoryHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes +); + +NTSYSAPI +NTSTATUS +NTAPI +ZwOpenProcess ( + OUT PHANDLE ProcessHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes, + IN PCLIENT_ID ClientId OPTIONAL +); + NTSYSAPI NTSTATUS NTAPI @@ -9576,6 +9450,21 @@ ZwOpenThreadToken ( OUT PHANDLE TokenHandle ); +#if (VER_PRODUCTBUILD >= 2195) + +NTSYSAPI +NTSTATUS +NTAPI +ZwPowerInformation ( + IN POWER_INFORMATION_LEVEL PowerInformationLevel, + IN PVOID InputBuffer OPTIONAL, + IN ULONG InputBufferLength, + OUT PVOID OutputBuffer OPTIONAL, + IN ULONG OutputBufferLength +); + +#endif /* (VER_PRODUCTBUILD >= 2195) */ + NTSYSAPI NTSTATUS NTAPI @@ -9592,6 +9481,23 @@ ZwQueryDefaultLocale ( OUT PLCID Locale ); +NTSYSAPI +NTSTATUS +NTAPI +ZwQueryDirectoryFile ( + IN HANDLE FileHandle, + IN HANDLE Event OPTIONAL, + IN PIO_APC_ROUTINE ApcRoutine OPTIONAL, + IN PVOID ApcContext OPTIONAL, + OUT PIO_STATUS_BLOCK IoStatusBlock, + OUT PVOID FileInformation, + IN ULONG Length, + IN FILE_INFORMATION_CLASS FileInformationClass, + IN BOOLEAN ReturnSingleEntry, + IN PUNICODE_STRING FileName OPTIONAL, + IN BOOLEAN RestartScan +); + #if (VER_PRODUCTBUILD >= 2195) NTSYSAPI @@ -9607,6 +9513,21 @@ ZwQueryDirectoryObject ( OUT PULONG ReturnLength OPTIONAL ); +NTSYSAPI +NTSTATUS +NTAPI +ZwQueryEaFile ( + IN HANDLE FileHandle, + OUT PIO_STATUS_BLOCK IoStatusBlock, + OUT PVOID Buffer, + IN ULONG Length, + IN BOOLEAN ReturnSingleEntry, + IN PVOID EaList OPTIONAL, + IN ULONG EaListLength, + IN PULONG EaIndex OPTIONAL, + IN BOOLEAN RestartScan +); + #endif /* (VER_PRODUCTBUILD >= 2195) */ NTSYSAPI @@ -9620,6 +9541,39 @@ ZwQueryInformationProcess ( OUT PULONG ReturnLength OPTIONAL ); +NTSYSAPI +NTSTATUS +NTAPI +ZwQueryInformationToken ( + IN HANDLE TokenHandle, + IN TOKEN_INFORMATION_CLASS TokenInformationClass, + OUT PVOID TokenInformation, + IN ULONG Length, + OUT PULONG ResultLength +); + +NTSYSAPI +NTSTATUS +NTAPI +ZwQuerySecurityObject ( + IN HANDLE FileHandle, + IN SECURITY_INFORMATION SecurityInformation, + OUT PSECURITY_DESCRIPTOR SecurityDescriptor, + IN ULONG Length, + OUT PULONG ResultLength +); + +NTSYSAPI +NTSTATUS +NTAPI +ZwQueryVolumeInformationFile ( + IN HANDLE FileHandle, + OUT PIO_STATUS_BLOCK IoStatusBlock, + OUT PVOID FsInformation, + IN ULONG Length, + IN FS_INFORMATION_CLASS FsInformationClass +); + NTSYSAPI NTSTATUS NTAPI @@ -9675,8 +9629,26 @@ ZwSetDefaultUILanguage ( IN LANGID LanguageId ); +NTSYSAPI +NTSTATUS +NTAPI +ZwSetEaFile ( + IN HANDLE FileHandle, + OUT PIO_STATUS_BLOCK IoStatusBlock, + OUT PVOID Buffer, + IN ULONG Length +); + #endif /* (VER_PRODUCTBUILD >= 2195) */ +NTSYSAPI +NTSTATUS +NTAPI +ZwSetEvent ( + IN HANDLE EventHandle, + OUT PLONG PreviousState OPTIONAL +); + NTSYSAPI NTSTATUS NTAPI @@ -9687,6 +9659,19 @@ ZwSetInformationProcess ( IN ULONG ProcessInformationLength ); +#if (VER_PRODUCTBUILD >= 2195) + +NTSYSAPI +NTSTATUS +NTAPI +ZwSetSecurityObject ( + IN HANDLE Handle, + IN SECURITY_INFORMATION SecurityInformation, + IN PSECURITY_DESCRIPTOR SecurityDescriptor +); + +#endif /* (VER_PRODUCTBUILD >= 2195) */ + NTSYSAPI NTSTATUS NTAPI @@ -9695,6 +9680,37 @@ ZwSetSystemTime ( OUT PLARGE_INTEGER OldTime OPTIONAL ); +#if (VER_PRODUCTBUILD >= 2195) + +NTSYSAPI +NTSTATUS +NTAPI +ZwSetVolumeInformationFile ( + IN HANDLE FileHandle, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN PVOID FsInformation, + IN ULONG Length, + IN FS_INFORMATION_CLASS FsInformationClass +); + +#endif /* (VER_PRODUCTBUILD >= 2195) */ + +NTSYSAPI +NTSTATUS +NTAPI +ZwTerminateProcess ( + IN HANDLE ProcessHandle OPTIONAL, + IN NTSTATUS ExitStatus +); + +NTSYSAPI +NTSTATUS +NTAPI +ZwUnloadDriver ( + /* "\\Registry\\Machine\\System\\CurrentControlSet\\Services\\" */ + IN PUNICODE_STRING RegistryPath +); + NTSYSAPI NTSTATUS NTAPI @@ -9702,6 +9718,16 @@ ZwUnloadKey ( IN POBJECT_ATTRIBUTES KeyObjectAttributes ); +#if (NTDDI_VERSION >= NTDDI_WIN2K) +NTSYSAPI +NTSTATUS +NTAPI +ZwWaitForSingleObject ( + IN HANDLE Handle, + IN BOOLEAN Alertable, + IN PLARGE_INTEGER Timeout OPTIONAL); +#endif + NTSYSAPI NTSTATUS NTAPI diff --git a/reactos/include/ddk/ntimage.h b/reactos/include/ddk/ntimage.h index 8df984763f7..e008a2daa94 100644 --- a/reactos/include/ddk/ntimage.h +++ b/reactos/include/ddk/ntimage.h @@ -394,33 +394,22 @@ typedef struct _IMAGE_NT_HEADERS64 { ULONG Signature; IMAGE_FILE_HEADER FileHeader; IMAGE_OPTIONAL_HEADER64 OptionalHeader; -} IMAGE_NT_HEADERS64; +} IMAGE_NT_HEADERS64, *PIMAGE_NT_HEADERS64; typedef struct _IMAGE_NT_HEADERS { ULONG Signature; IMAGE_FILE_HEADER FileHeader; IMAGE_OPTIONAL_HEADER32 OptionalHeader; -} IMAGE_NT_HEADERS32; +} IMAGE_NT_HEADERS32, *PIMAGE_NT_HEADERS32; #ifdef _WIN64 typedef IMAGE_NT_HEADERS64 IMAGE_NT_HEADERS; -#else -typedef IMAGE_NT_HEADERS32 IMAGE_NT_HEADERS; -#endif - -#ifndef _NTDDK_ - -typedef struct _IMAGE_NT_HEADERS *PIMAGE_NT_HEADERS32; -typedef struct _IMAGE_NT_HEADERS64 *PIMAGE_NT_HEADERS64; - -#ifdef _WIN64 typedef PIMAGE_NT_HEADERS64 PIMAGE_NT_HEADERS; #else +typedef IMAGE_NT_HEADERS32 IMAGE_NT_HEADERS; typedef PIMAGE_NT_HEADERS32 PIMAGE_NT_HEADERS; #endif -#endif /* _NTDDK_ */ - // // Retreives the first image section header from the Nt Header // diff --git a/reactos/include/ddk/ntpoapi.h b/reactos/include/ddk/ntpoapi.h index c4a4b28ec6f..48f71072ab6 100644 --- a/reactos/include/ddk/ntpoapi.h +++ b/reactos/include/ddk/ntpoapi.h @@ -220,7 +220,7 @@ typedef struct _POWER_STATE_NOTIFY_HANDLER { NTSYSCALLAPI NTSTATUS -NTAPI +DDKAPI NtPowerInformation( IN POWER_INFORMATION_LEVEL InformationLevel, IN PVOID InputBuffer OPTIONAL, diff --git a/reactos/include/ddk/parallel.h b/reactos/include/ddk/parallel.h index c45f09b1eef..d567bbd2d0f 100644 --- a/reactos/include/ddk/parallel.h +++ b/reactos/include/ddk/parallel.h @@ -80,27 +80,27 @@ typedef struct _MORE_PARALLEL_PORT_INFORMATION { } MORE_PARALLEL_PORT_INFORMATION, *PMORE_PARALLEL_PORT_INFORMATION; typedef NTSTATUS -(NTAPI *PPARALLEL_SET_CHIP_MODE)( +(DDKAPI *PPARALLEL_SET_CHIP_MODE)( IN PVOID SetChipContext, IN UCHAR ChipMode); typedef NTSTATUS -(NTAPI *PPARALLEL_CLEAR_CHIP_MODE)( +(DDKAPI *PPARALLEL_CLEAR_CHIP_MODE)( IN PVOID ClearChipContext, IN UCHAR ChipMode); typedef NTSTATUS -(NTAPI *PPARCHIP_CLEAR_CHIP_MODE)( +(DDKAPI *PPARCHIP_CLEAR_CHIP_MODE)( IN PVOID ClearChipContext, IN UCHAR ChipMode); typedef NTSTATUS -(NTAPI *PPARALLEL_TRY_SELECT_ROUTINE)( +(DDKAPI *PPARALLEL_TRY_SELECT_ROUTINE)( IN PVOID TrySelectContext, IN PVOID TrySelectCommand); typedef NTSTATUS -(NTAPI *PPARALLEL_DESELECT_ROUTINE)( +(DDKAPI *PPARALLEL_DESELECT_ROUTINE)( IN PVOID DeselectContext, IN PVOID DeselectCommand); @@ -134,15 +134,15 @@ typedef struct _PARALLEL_PNP_INFORMATION { } PARALLEL_PNP_INFORMATION, *PPARALLEL_PNP_INFORMATION; typedef BOOLEAN -(NTAPI *PPARALLEL_TRY_ALLOCATE_ROUTINE)( +(DDKAPI *PPARALLEL_TRY_ALLOCATE_ROUTINE)( IN PVOID TryAllocateContext); typedef VOID -(NTAPI *PPARALLEL_FREE_ROUTINE)( +(DDKAPI *PPARALLEL_FREE_ROUTINE)( IN PVOID FreeContext); typedef ULONG -(NTAPI *PPARALLEL_QUERY_WAITERS_ROUTINE)( +(DDKAPI *PPARALLEL_QUERY_WAITERS_ROUTINE)( IN PVOID QueryAllocsContext); typedef struct _PARALLEL_PORT_INFORMATION { @@ -165,7 +165,7 @@ typedef struct _PARALLEL_CHIP_MODE { } PARALLEL_CHIP_MODE, *PPARALLEL_CHIP_MODE; typedef VOID -(NTAPI *PPARALLEL_DEFERRED_ROUTINE)( +(DDKAPI *PPARALLEL_DEFERRED_ROUTINE)( IN PVOID DeferredContext); typedef struct _PARALLEL_INTERRUPT_SERVICE_ROUTINE { @@ -192,7 +192,7 @@ typedef struct _PARALLEL_INTERRUPT_SERVICE_ROUTINE { CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 53, METHOD_BUFFERED, FILE_ANY_ACCESS) typedef USHORT -(NTAPI *PDETERMINE_IEEE_MODES)( +(DDKAPI *PDETERMINE_IEEE_MODES)( IN PVOID Context); typedef enum _PARALLEL_SAFETY { @@ -201,7 +201,7 @@ typedef enum _PARALLEL_SAFETY { } PARALLEL_SAFETY; typedef NTSTATUS -(NTAPI *PNEGOTIATE_IEEE_MODE)( +(DDKAPI *PNEGOTIATE_IEEE_MODE)( IN PVOID Context, IN USHORT ModeMaskFwd, IN USHORT ModeMaskRev, @@ -209,19 +209,19 @@ typedef NTSTATUS IN BOOLEAN IsForward); typedef NTSTATUS -(NTAPI *PTERMINATE_IEEE_MODE)( +(DDKAPI *PTERMINATE_IEEE_MODE)( IN PVOID Context); typedef NTSTATUS -(NTAPI *PPARALLEL_IEEE_FWD_TO_REV)( +(DDKAPI *PPARALLEL_IEEE_FWD_TO_REV)( IN PVOID Context); typedef NTSTATUS -(NTAPI *PPARALLEL_IEEE_REV_TO_FWD)( +(DDKAPI *PPARALLEL_IEEE_REV_TO_FWD)( IN PVOID Context); typedef NTSTATUS -(NTAPI *PPARALLEL_READ)( +(DDKAPI *PPARALLEL_READ)( IN PVOID Context, OUT PVOID Buffer, IN ULONG NumBytesToRead, @@ -229,7 +229,7 @@ typedef NTSTATUS IN UCHAR Channel); typedef NTSTATUS -(NTAPI *PPARALLEL_WRITE)( +(DDKAPI *PPARALLEL_WRITE)( IN PVOID Context, OUT PVOID Buffer, IN ULONG NumBytesToWrite, @@ -237,12 +237,12 @@ typedef NTSTATUS IN UCHAR Channel); typedef NTSTATUS -(NTAPI *PPARALLEL_TRYSELECT_DEVICE)( +(DDKAPI *PPARALLEL_TRYSELECT_DEVICE)( IN PVOID Context, IN PARALLEL_1284_COMMAND Command); typedef NTSTATUS -(NTAPI *PPARALLEL_DESELECT_DEVICE)( +(DDKAPI *PPARALLEL_DESELECT_DEVICE)( IN PVOID Context, IN PARALLEL_1284_COMMAND Command); diff --git a/reactos/include/ddk/scsiwmi.h b/reactos/include/ddk/scsiwmi.h index 383d1d473a1..c599f48c01b 100644 --- a/reactos/include/ddk/scsiwmi.h +++ b/reactos/include/ddk/scsiwmi.h @@ -61,13 +61,13 @@ typedef struct _SCSIWMIGUIDREGINFO { } SCSIWMIGUIDREGINFO, *PSCSIWMIGUIDREGINFO; typedef UCHAR -(NTAPI *PSCSIWMI_QUERY_REGINFO)( +(DDKAPI *PSCSIWMI_QUERY_REGINFO)( IN PVOID DeviceContext, IN PSCSIWMI_REQUEST_CONTEXT RequestContext, OUT PWCHAR *MofResourceName); typedef BOOLEAN -(NTAPI *PSCSIWMI_QUERY_DATABLOCK)( +(DDKAPI *PSCSIWMI_QUERY_DATABLOCK)( IN PVOID Context, IN PSCSIWMI_REQUEST_CONTEXT DispatchContext, IN ULONG GuidIndex, @@ -78,7 +78,7 @@ typedef BOOLEAN OUT PUCHAR Buffer); typedef BOOLEAN -(NTAPI *PSCSIWMI_SET_DATABLOCK)( +(DDKAPI *PSCSIWMI_SET_DATABLOCK)( IN PVOID DeviceContext, IN PSCSIWMI_REQUEST_CONTEXT RequestContext, IN ULONG GuidIndex, @@ -87,7 +87,7 @@ typedef BOOLEAN IN PUCHAR Buffer); typedef BOOLEAN -(NTAPI *PSCSIWMI_SET_DATAITEM)( +(DDKAPI *PSCSIWMI_SET_DATAITEM)( IN PVOID DeviceContext, IN PSCSIWMI_REQUEST_CONTEXT RequestContext, IN ULONG GuidIndex, @@ -97,7 +97,7 @@ typedef BOOLEAN IN PUCHAR Buffer); typedef BOOLEAN -(NTAPI *PSCSIWMI_EXECUTE_METHOD)( +(DDKAPI *PSCSIWMI_EXECUTE_METHOD)( IN PVOID DeviceContext, IN PSCSIWMI_REQUEST_CONTEXT RequestContext, IN ULONG GuidIndex, @@ -113,7 +113,7 @@ typedef enum _SCSIWMI_ENABLE_DISABLE_CONTROL { } SCSIWMI_ENABLE_DISABLE_CONTROL; typedef BOOLEAN -(NTAPI *PSCSIWMI_FUNCTION_CONTROL)( +(DDKAPI *PSCSIWMI_FUNCTION_CONTROL)( IN PVOID DeviceContext, IN PSCSIWMI_REQUEST_CONTEXT RequestContext, IN ULONG GuidIndex, @@ -133,7 +133,7 @@ typedef struct _SCSIWMILIB_CONTEXT { SCSIPORTAPI BOOLEAN -NTAPI +DDKAPI ScsiPortWmiDispatchFunction( IN PSCSI_WMILIB_CONTEXT WmiLibInfo, IN UCHAR MinorFunction, @@ -176,7 +176,7 @@ ScsiPortWmiDispatchFunction( SCSIPORTAPI VOID -NTAPI +DDKAPI ScsiPortWmiPostProcess( IN PSCSIWMI_REQUEST_CONTEXT RequestContext, IN UCHAR SrbStatus, @@ -184,7 +184,7 @@ ScsiPortWmiPostProcess( SCSIPORTAPI VOID -NTAPI +DDKAPI ScsiPortWmiFireLogicalUnitEvent( IN PVOID HwDeviceExtension, IN UCHAR PathId, diff --git a/reactos/include/ddk/smbus.h b/reactos/include/ddk/smbus.h index fd07c72556f..de61c7de0e1 100644 --- a/reactos/include/ddk/smbus.h +++ b/reactos/include/ddk/smbus.h @@ -100,17 +100,17 @@ typedef struct _SMB_REGISTER_ALARM { #define SMB_CLASS_MINOR_VERSION 0x0000 typedef NTSTATUS -(NTAPI *SMB_RESET_DEVICE)( +(DDKAPI *SMB_RESET_DEVICE)( IN struct _SMB_CLASS *SmbClass, IN PVOID SmbMiniport); typedef VOID -(NTAPI *SMB_START_IO)( +(DDKAPI *SMB_START_IO)( IN struct _SMB_CLASS *SmbClass, IN PVOID SmbMiniport); typedef NTSTATUS -(NTAPI *SMB_STOP_DEVICE)( +(DDKAPI *SMB_STOP_DEVICE)( IN struct _SMB_CLASS *SmbClass, IN PVOID SmbMiniport); @@ -130,7 +130,7 @@ typedef struct _SMB_CLASS { SMBCLASSAPI VOID -NTAPI +DDKAPI SmbClassAlarm( IN PSMB_CLASS SmbClass, IN UCHAR Address, @@ -138,19 +138,19 @@ SmbClassAlarm( SMBCLASSAPI VOID -NTAPI +DDKAPI SmbClassCompleteRequest( IN PSMB_CLASS SmbClass); typedef NTSTATUS -(NTAPI *PSMB_INITIALIZE_MINIPORT)( +(DDKAPI *PSMB_INITIALIZE_MINIPORT)( IN PSMB_CLASS SmbClass, IN PVOID MiniportExtension, IN PVOID MiniportContext); SMBCLASSAPI NTSTATUS -NTAPI +DDKAPI SmbClassCreateFdo( IN PDRIVER_OBJECT DriverObject, IN PDEVICE_OBJECT PDO, @@ -161,7 +161,7 @@ SmbClassCreateFdo( SMBCLASSAPI NTSTATUS -NTAPI +DDKAPI SmbClassInitializeDevice( IN ULONG MajorVersion, IN ULONG MinorVersion, @@ -169,13 +169,13 @@ SmbClassInitializeDevice( SMBCLASSAPI VOID -NTAPI +DDKAPI SmbClassLockDevice( IN PSMB_CLASS SmbClass); SMBCLASSAPI VOID -NTAPI +DDKAPI SmbClassUnlockDevice( IN PSMB_CLASS SmbClass); diff --git a/reactos/include/ddk/srb.h b/reactos/include/ddk/srb.h index 0763652749a..7d7fc516b9b 100644 --- a/reactos/include/ddk/srb.h +++ b/reactos/include/ddk/srb.h @@ -301,13 +301,13 @@ typedef struct _SCSI_SUPPORTED_CONTROL_TYPE_LIST { } SCSI_SUPPORTED_CONTROL_TYPE_LIST, *PSCSI_SUPPORTED_CONTROL_TYPE_LIST; typedef SCSI_ADAPTER_CONTROL_STATUS -(NTAPI *PHW_ADAPTER_CONTROL)( +(DDKAPI *PHW_ADAPTER_CONTROL)( IN PVOID DeviceExtension, IN SCSI_ADAPTER_CONTROL_TYPE ControlType, IN PVOID Parameters); typedef BOOLEAN -(NTAPI *PHW_ADAPTER_STATE)( +(DDKAPI *PHW_ADAPTER_STATE)( IN PVOID DeviceExtension, IN PVOID Context, IN BOOLEAN SaveState); @@ -318,7 +318,7 @@ typedef BOOLEAN #define SP_RETURN_BAD_CONFIG 3 typedef ULONG -(NTAPI *PHW_FIND_ADAPTER)( +(DDKAPI *PHW_FIND_ADAPTER)( IN PVOID DeviceExtension, IN PVOID HwContext, IN PVOID BusInformation, @@ -327,29 +327,29 @@ typedef ULONG OUT PBOOLEAN Again); typedef BOOLEAN -(NTAPI *PHW_INITIALIZE)( +(DDKAPI *PHW_INITIALIZE)( IN PVOID DeviceExtension); typedef BOOLEAN -(NTAPI *PHW_INTERRUPT)( +(DDKAPI *PHW_INTERRUPT)( IN PVOID DeviceExtension); typedef BOOLEAN -(NTAPI *PHW_RESET_BUS)( +(DDKAPI *PHW_RESET_BUS)( IN PVOID DeviceExtension, IN ULONG PathId); typedef VOID -(NTAPI *PHW_DMA_STARTED)( +(DDKAPI *PHW_DMA_STARTED)( IN PVOID DeviceExtension); typedef BOOLEAN -(NTAPI *PHW_STARTIO)( +(DDKAPI *PHW_STARTIO)( IN PVOID DeviceExtension, IN PSCSI_REQUEST_BLOCK Srb); typedef VOID -(NTAPI *PHW_TIMER)( +(DDKAPI *PHW_TIMER)( IN PVOID DeviceExtension); typedef struct _HW_INITIALIZATION_DATA { @@ -383,7 +383,7 @@ typedef struct _HW_INITIALIZATION_DATA { SCSIPORTAPI VOID -NTAPI +DDKAPI ScsiPortCompleteRequest( IN PVOID HwDeviceExtension, IN UCHAR PathId, @@ -400,26 +400,26 @@ ScsiPortCompleteRequest( SCSIPORTAPI SCSI_PHYSICAL_ADDRESS -NTAPI +DDKAPI ScsiPortConvertUlongToPhysicalAddress( IN ULONG UlongAddress); SCSIPORTAPI VOID -NTAPI +DDKAPI ScsiPortFlushDma( IN PVOID DeviceExtension); SCSIPORTAPI VOID -NTAPI +DDKAPI ScsiPortFreeDeviceBase( IN PVOID HwDeviceExtension, IN PVOID MappedAddress); SCSIPORTAPI ULONG -NTAPI +DDKAPI ScsiPortGetBusData( IN PVOID DeviceExtension, IN ULONG BusDataType, @@ -430,7 +430,7 @@ ScsiPortGetBusData( SCSIPORTAPI PVOID -NTAPI +DDKAPI ScsiPortGetDeviceBase( IN PVOID HwDeviceExtension, IN INTERFACE_TYPE BusType, @@ -441,7 +441,7 @@ ScsiPortGetDeviceBase( SCSIPORTAPI PVOID -NTAPI +DDKAPI ScsiPortGetLogicalUnit( IN PVOID HwDeviceExtension, IN UCHAR PathId, @@ -450,7 +450,7 @@ ScsiPortGetLogicalUnit( SCSIPORTAPI SCSI_PHYSICAL_ADDRESS -NTAPI +DDKAPI ScsiPortGetPhysicalAddress( IN PVOID HwDeviceExtension, IN PSCSI_REQUEST_BLOCK Srb OPTIONAL, @@ -459,7 +459,7 @@ ScsiPortGetPhysicalAddress( SCSIPORTAPI PSCSI_REQUEST_BLOCK -NTAPI +DDKAPI ScsiPortGetSrb( IN PVOID DeviceExtension, IN UCHAR PathId, @@ -469,7 +469,7 @@ ScsiPortGetSrb( SCSIPORTAPI PVOID -NTAPI +DDKAPI ScsiPortGetUncachedExtension( IN PVOID HwDeviceExtension, IN PPORT_CONFIGURATION_INFORMATION ConfigInfo, @@ -477,14 +477,14 @@ ScsiPortGetUncachedExtension( SCSIPORTAPI PVOID -NTAPI +DDKAPI ScsiPortGetVirtualAddress( IN PVOID HwDeviceExtension, IN SCSI_PHYSICAL_ADDRESS PhysicalAddress); SCSIPORTAPI ULONG -NTAPI +DDKAPI ScsiPortInitialize( IN PVOID Argument1, IN PVOID Argument2, @@ -493,7 +493,7 @@ ScsiPortInitialize( SCSIPORTAPI VOID -NTAPI +DDKAPI ScsiPortIoMapTransfer( IN PVOID HwDeviceExtension, IN PSCSI_REQUEST_BLOCK Srb, @@ -502,7 +502,7 @@ ScsiPortIoMapTransfer( SCSIPORTAPI VOID -NTAPI +DDKAPI ScsiPortLogError( IN PVOID HwDeviceExtension, IN PSCSI_REQUEST_BLOCK Srb OPTIONAL, @@ -514,7 +514,7 @@ ScsiPortLogError( SCSIPORTAPI VOID -NTAPI +DDKAPI ScsiPortMoveMemory( IN PVOID WriteBuffer, IN PVOID ReadBuffer, @@ -522,7 +522,7 @@ ScsiPortMoveMemory( SCSIPORTAPI VOID -__cdecl +DDKCDECLAPI ScsiPortNotification( IN SCSI_NOTIFICATION_TYPE NotificationType, IN PVOID HwDeviceExtension, @@ -530,13 +530,13 @@ ScsiPortNotification( SCSIPORTAPI VOID -NTAPI +DDKAPI ScsiPortQuerySystemTime( OUT PLARGE_INTEGER CurrentTime); SCSIPORTAPI VOID -NTAPI +DDKAPI ScsiPortReadPortBufferUchar( IN PUCHAR Port, IN PUCHAR Buffer, @@ -544,7 +544,7 @@ ScsiPortReadPortBufferUchar( SCSIPORTAPI VOID -NTAPI +DDKAPI ScsiPortReadPortBufferUlong( IN PULONG Port, IN PULONG Buffer, @@ -552,7 +552,7 @@ ScsiPortReadPortBufferUlong( SCSIPORTAPI VOID -NTAPI +DDKAPI ScsiPortReadPortBufferUshort( IN PUSHORT Port, IN PUSHORT Buffer, @@ -560,25 +560,25 @@ ScsiPortReadPortBufferUshort( SCSIPORTAPI UCHAR -NTAPI +DDKAPI ScsiPortReadPortUchar( IN PUCHAR Port); SCSIPORTAPI ULONG -NTAPI +DDKAPI ScsiPortReadPortUlong( IN PULONG Port); SCSIPORTAPI USHORT -NTAPI +DDKAPI ScsiPortReadPortUshort( IN PUSHORT Port); SCSIPORTAPI VOID -NTAPI +DDKAPI ScsiPortReadRegisterBufferUchar( IN PUCHAR Register, IN PUCHAR Buffer, @@ -586,7 +586,7 @@ ScsiPortReadRegisterBufferUchar( SCSIPORTAPI VOID -NTAPI +DDKAPI ScsiPortReadRegisterBufferUlong( IN PULONG Register, IN PULONG Buffer, @@ -594,7 +594,7 @@ ScsiPortReadRegisterBufferUlong( SCSIPORTAPI VOID -NTAPI +DDKAPI ScsiPortReadRegisterBufferUshort( IN PUSHORT Register, IN PUSHORT Buffer, @@ -602,25 +602,25 @@ ScsiPortReadRegisterBufferUshort( SCSIPORTAPI UCHAR -NTAPI +DDKAPI ScsiPortReadRegisterUchar( IN PUCHAR Register); SCSIPORTAPI ULONG -NTAPI +DDKAPI ScsiPortReadRegisterUlong( IN PULONG Register); SCSIPORTAPI USHORT -NTAPI +DDKAPI ScsiPortReadRegisterUshort( IN PUSHORT Register); SCSIPORTAPI ULONG -NTAPI +DDKAPI ScsiPortSetBusDataByOffset( IN PVOID DeviceExtension, IN ULONG BusDataType, @@ -632,13 +632,13 @@ ScsiPortSetBusDataByOffset( SCSIPORTAPI VOID -NTAPI +DDKAPI ScsiPortStallExecution( IN ULONG Delay); SCSIPORTAPI BOOLEAN -NTAPI +DDKAPI ScsiPortValidateRange( IN PVOID HwDeviceExtension, IN INTERFACE_TYPE BusType, @@ -649,7 +649,7 @@ ScsiPortValidateRange( SCSIPORTAPI VOID -NTAPI +DDKAPI ScsiPortWritePortBufferUchar( IN PUCHAR Port, IN PUCHAR Buffer, @@ -657,7 +657,7 @@ ScsiPortWritePortBufferUchar( SCSIPORTAPI VOID -NTAPI +DDKAPI ScsiPortWritePortBufferUlong( IN PULONG Port, IN PULONG Buffer, @@ -665,7 +665,7 @@ ScsiPortWritePortBufferUlong( SCSIPORTAPI VOID -NTAPI +DDKAPI ScsiPortWritePortBufferUshort( IN PUSHORT Port, IN PUSHORT Buffer, @@ -673,28 +673,28 @@ ScsiPortWritePortBufferUshort( SCSIPORTAPI VOID -NTAPI +DDKAPI ScsiPortWritePortUchar( IN PUCHAR Port, IN UCHAR Value); SCSIPORTAPI VOID -NTAPI +DDKAPI ScsiPortWritePortUlong( IN PULONG Port, IN ULONG Value); SCSIPORTAPI VOID -NTAPI +DDKAPI ScsiPortWritePortUshort( IN PUSHORT Port, IN USHORT Value); SCSIPORTAPI VOID -NTAPI +DDKAPI ScsiPortWriteRegisterBufferUchar( IN PUCHAR Register, IN PUCHAR Buffer, @@ -702,7 +702,7 @@ ScsiPortWriteRegisterBufferUchar( SCSIPORTAPI VOID -NTAPI +DDKAPI ScsiPortWriteRegisterBufferUlong( IN PULONG Register, IN PULONG Buffer, @@ -710,7 +710,7 @@ ScsiPortWriteRegisterBufferUlong( SCSIPORTAPI VOID -NTAPI +DDKAPI ScsiPortWriteRegisterBufferUshort( IN PUSHORT Register, IN PUSHORT Buffer, @@ -718,28 +718,28 @@ ScsiPortWriteRegisterBufferUshort( SCSIPORTAPI VOID -NTAPI +DDKAPI ScsiPortWriteRegisterUchar( IN PUCHAR Register, IN ULONG Value); SCSIPORTAPI VOID -NTAPI +DDKAPI ScsiPortWriteRegisterUlong( IN PULONG Register, IN ULONG Value); SCSIPORTAPI VOID -NTAPI +DDKAPI ScsiPortWriteRegisterUshort( IN PUSHORT Register, IN USHORT Value); SCSIPORTAPI VOID -__cdecl +DDKCDECLAPI ScsiDebugPrint( IN ULONG DebugPrintLevel, IN PCCHAR DebugMessage, diff --git a/reactos/include/ddk/storport.h b/reactos/include/ddk/storport.h index fd8cf9b19ae..7859967a32d 100644 --- a/reactos/include/ddk/storport.h +++ b/reactos/include/ddk/storport.h @@ -76,7 +76,7 @@ typedef struct _SCSI_WMI_REQUEST_BLOCK { STORPORTAPI ULONG -NTAPI +DDKAPI StorPortInitialize( IN PVOID Argument1, IN PVOID Argument2, @@ -85,14 +85,14 @@ StorPortInitialize( STORPORTAPI VOID -NTAPI +DDKAPI StorPortFreeDeviceBase( IN PVOID HwDeviceExtension, IN PVOID MappedAddress); STORPORTAPI ULONG -NTAPI +DDKAPI StorPortGetBusData( IN PVOID DeviceExtension, IN ULONG BusDataType, @@ -103,7 +103,7 @@ StorPortGetBusData( STORPORTAPI ULONG -NTAPI +DDKAPI StorPortSetBusDataByOffset( IN PVOID DeviceExtension, IN ULONG BusDataType, @@ -115,7 +115,7 @@ StorPortSetBusDataByOffset( STORPORTAPI PVOID -NTAPI +DDKAPI StorPortGetDeviceBase( IN PVOID HwDeviceExtension, IN INTERFACE_TYPE BusType, @@ -126,7 +126,7 @@ StorPortGetDeviceBase( STORPORTAPI PVOID -NTAPI +DDKAPI StorPortGetLogicalUnit( IN PVOID HwDeviceExtension, IN UCHAR PathId, @@ -135,7 +135,7 @@ StorPortGetLogicalUnit( STORPORTAPI PSCSI_REQUEST_BLOCK -NTAPI +DDKAPI StorPortGetSrb( IN PVOID DeviceExtension, IN UCHAR PathId, @@ -145,7 +145,7 @@ StorPortGetSrb( STORPORTAPI STOR_PHYSICAL_ADDRESS -NTAPI +DDKAPI StorPortGetPhysicalAddress( IN PVOID HwDeviceExtension, IN PSCSI_REQUEST_BLOCK Srb, @@ -154,14 +154,14 @@ StorPortGetPhysicalAddress( STORPORTAPI PVOID -NTAPI +DDKAPI StorPortGetVirtualAddress( IN PVOID HwDeviceExtension, IN STOR_PHYSICAL_ADDRESS PhysicalAddress); STORPORTAPI PVOID -NTAPI +DDKAPI StorPortGetUncachedExtension( IN PVOID HwDeviceExtension, IN PPORT_CONFIGURATION_INFORMATION ConfigInfo, @@ -169,7 +169,7 @@ StorPortGetUncachedExtension( STORPORTAPI VOID -__cdecl +DDKCDECLAPI StorPortNotification( IN SCSI_NOTIFICATION_TYPE NotificationType, IN PVOID HwDeviceExtension, @@ -177,7 +177,7 @@ StorPortNotification( STORPORTAPI VOID -NTAPI +DDKAPI StorPortLogError( IN PVOID HwDeviceExtension, IN PSCSI_REQUEST_BLOCK Srb OPTIONAL, @@ -189,7 +189,7 @@ StorPortLogError( STORPORTAPI VOID -NTAPI +DDKAPI StorPortCompleteRequest( IN PVOID HwDeviceExtension, IN UCHAR PathId, @@ -199,7 +199,7 @@ StorPortCompleteRequest( STORPORTAPI VOID -NTAPI +DDKAPI StorPortMoveMemory( IN PVOID WriteBuffer, IN PVOID ReadBuffer, @@ -207,25 +207,25 @@ StorPortMoveMemory( STORPORTAPI VOID -NTAPI +DDKAPI StorPortStallExecution( IN ULONG Delay); STORPORTAPI STOR_PHYSICAL_ADDRESS -NTAPI +DDKAPI StorPortConvertUlong64ToPhysicalAddress( IN ULONG64 UlongAddress); STORPORTAPI ULONG64 -NTAPI +DDKAPI StorPortConvertPhysicalAddressToUlong64( IN STOR_PHYSICAL_ADDRESS Address); STORPORTAPI BOOLEAN -NTAPI +DDKAPI StorPortValidateRange( IN PVOID HwDeviceExtension, IN INTERFACE_TYPE BusType, @@ -236,7 +236,7 @@ StorPortValidateRange( STORPORTAPI VOID -__cdecl +DDKCDECLAPI StorPortDebugPrint( IN ULONG DebugPrintLevel, IN PCCHAR DebugMessage, @@ -244,85 +244,85 @@ StorPortDebugPrint( STORPORTAPI UCHAR -NTAPI +DDKAPI StorPortReadPortUchar( IN PUCHAR Port); STORPORTAPI ULONG -NTAPI +DDKAPI StorPortReadPortUlong( IN PULONG Port); STORPORTAPI USHORT -NTAPI +DDKAPI StorPortReadPortUshort( IN PUSHORT Port); STORPORTAPI UCHAR -NTAPI +DDKAPI StorPortReadRegisterUchar( IN PUCHAR Register); STORPORTAPI ULONG -NTAPI +DDKAPI StorPortReadRegisterUlong( IN PULONG Register); STORPORTAPI USHORT -NTAPI +DDKAPI StorPortReadRegisterUshort( IN PUSHORT Register); STORPORTAPI VOID -NTAPI +DDKAPI StorPortWritePortUchar( IN PUCHAR Port, IN UCHAR Value); STORPORTAPI VOID -NTAPI +DDKAPI StorPortWritePortUlong( IN PULONG Port, IN ULONG Value); STORPORTAPI VOID -NTAPI +DDKAPI StorPortWritePortUshort( IN PUSHORT Port, IN USHORT Value); STORPORTAPI VOID -NTAPI +DDKAPI StorPortWriteRegisterUchar( IN PUCHAR Port, IN UCHAR Value); STORPORTAPI VOID -NTAPI +DDKAPI StorPortWriteRegisterUlong( IN PULONG Port, IN ULONG Value); STORPORTAPI VOID -NTAPI +DDKAPI StorPortWriteRegisterUshort( IN PUSHORT Port, IN USHORT Value); STORPORTAPI BOOLEAN -NTAPI +DDKAPI StorPortPauseDevice( IN PVOID HwDeviceExtension, IN UCHAR PathId, @@ -332,7 +332,7 @@ StorPortPauseDevice( STORPORTAPI BOOLEAN -NTAPI +DDKAPI StorPortResumeDevice( IN PVOID HwDeviceExtension, IN UCHAR PathId, @@ -341,20 +341,20 @@ StorPortResumeDevice( STORPORTAPI BOOLEAN -NTAPI +DDKAPI StorPortPause( IN PVOID HwDeviceExtension, IN ULONG TimeOut); STORPORTAPI BOOLEAN -NTAPI +DDKAPI StorPortResume( IN PVOID HwDeviceExtension); STORPORTAPI BOOLEAN -NTAPI +DDKAPI StorPortDeviceBusy( IN PVOID HwDeviceExtension, IN UCHAR PathId, @@ -364,7 +364,7 @@ StorPortDeviceBusy( STORPORTAPI BOOLEAN -NTAPI +DDKAPI StorPortDeviceReady( IN PVOID HwDeviceExtension, IN UCHAR PathId, @@ -373,32 +373,32 @@ StorPortDeviceReady( STORPORTAPI BOOLEAN -NTAPI +DDKAPI StorPortBusy( IN PVOID HwDeviceExtension, IN ULONG RequestsToComplete); STORPORTAPI BOOLEAN -NTAPI +DDKAPI StorPortReady( IN PVOID HwDeviceExtension); STORPORTAPI PSTOR_SCATTER_GATHER_LIST -NTAPI +DDKAPI StorPortGetScatterGatherList( IN PVOID DeviceExtension, IN PSCSI_REQUEST_BLOCK Srb); typedef BOOLEAN -(NTAPI *PSTOR_SYNCHRONIZED_ACCESS)( +(DDKAPI *PSTOR_SYNCHRONIZED_ACCESS)( IN PVOID HwDeviceExtension, IN PVOID Context); STORPORTAPI VOID -NTAPI +DDKAPI StorPortSynchronizeAccess( IN PVOID HwDeviceExtension, IN PSTOR_SYNCHRONIZED_ACCESS SynchronizedAccessRoutine, diff --git a/reactos/include/ddk/tdikrnl.h b/reactos/include/ddk/tdikrnl.h index b6a30118b96..7c5f90dfcd3 100644 --- a/reactos/include/ddk/tdikrnl.h +++ b/reactos/include/ddk/tdikrnl.h @@ -157,7 +157,7 @@ typedef struct _TDI_REQUEST_KERNEL_SET_INFO { #define TDI_EVENT_ERROR_EX 10 typedef NTSTATUS -(NTAPI *PTDI_IND_CONNECT)( +(DDKAPI *PTDI_IND_CONNECT)( IN PVOID TdiEventContext, IN LONG RemoteAddressLength, IN PVOID RemoteAddress, @@ -170,7 +170,7 @@ typedef NTSTATUS TDIKRNLAPI NTSTATUS -NTAPI +DDKAPI TdiDefaultConnectHandler( IN PVOID TdiEventContext, IN LONG RemoteAddressLength, @@ -183,7 +183,7 @@ TdiDefaultConnectHandler( OUT PIRP *AcceptIrp); typedef NTSTATUS -(NTAPI *PTDI_IND_DISCONNECT)( +(DDKAPI *PTDI_IND_DISCONNECT)( IN PVOID TdiEventContext, IN CONNECTION_CONTEXT ConnectionContext, IN LONG DisconnectDataLength, @@ -194,7 +194,7 @@ typedef NTSTATUS TDIKRNLAPI NTSTATUS -NTAPI +DDKAPI TdiDefaultDisconnectHandler( IN PVOID TdiEventContext, IN CONNECTION_CONTEXT ConnectionContext, @@ -205,25 +205,25 @@ TdiDefaultDisconnectHandler( IN ULONG DisconnectFlags); typedef NTSTATUS -(NTAPI *PTDI_IND_ERROR)( +(DDKAPI *PTDI_IND_ERROR)( IN PVOID TdiEventContext, IN NTSTATUS Status); typedef NTSTATUS -(NTAPI *PTDI_IND_ERROR_EX)( +(DDKAPI *PTDI_IND_ERROR_EX)( IN PVOID TdiEventContext, IN NTSTATUS Status, IN PVOID Buffer); TDIKRNLAPI NTSTATUS -NTAPI +DDKAPI TdiDefaultErrorHandler( IN PVOID TdiEventContext, IN NTSTATUS Status); typedef NTSTATUS -(NTAPI *PTDI_IND_RECEIVE)( +(DDKAPI *PTDI_IND_RECEIVE)( IN PVOID TdiEventContext, IN CONNECTION_CONTEXT ConnectionContext, IN ULONG ReceiveFlags, @@ -235,7 +235,7 @@ typedef NTSTATUS TDIKRNLAPI NTSTATUS -NTAPI +DDKAPI TdiDefaultReceiveHandler( IN PVOID TdiEventContext, IN CONNECTION_CONTEXT ConnectionContext, @@ -247,7 +247,7 @@ TdiDefaultReceiveHandler( OUT PIRP *IoRequestPacket); typedef NTSTATUS -(NTAPI *PTDI_IND_RECEIVE_DATAGRAM)( +(DDKAPI *PTDI_IND_RECEIVE_DATAGRAM)( IN PVOID TdiEventContext, IN LONG SourceAddressLength, IN PVOID SourceAddress, @@ -261,7 +261,7 @@ typedef NTSTATUS OUT PIRP *IoRequestPacket); TDIKRNLAPI -NTSTATUS NTAPI +NTSTATUS DDKAPI TdiDefaultRcvDatagramHandler( IN PVOID TdiEventContext, IN LONG SourceAddressLength, @@ -276,7 +276,7 @@ TdiDefaultRcvDatagramHandler( OUT PIRP *IoRequestPacket); typedef NTSTATUS -(NTAPI *PTDI_IND_RECEIVE_EXPEDITED)( +(DDKAPI *PTDI_IND_RECEIVE_EXPEDITED)( IN PVOID TdiEventContext, IN CONNECTION_CONTEXT ConnectionContext, IN ULONG ReceiveFlags, @@ -288,7 +288,7 @@ typedef NTSTATUS TDIKRNLAPI NTSTATUS -NTAPI +DDKAPI TdiDefaultRcvExpeditedHandler( IN PVOID TdiEventContext, IN CONNECTION_CONTEXT ConnectionContext, @@ -300,7 +300,7 @@ TdiDefaultRcvExpeditedHandler( OUT PIRP *IoRequestPacket); typedef NTSTATUS -(NTAPI *PTDI_IND_CHAINED_RECEIVE)( +(DDKAPI *PTDI_IND_CHAINED_RECEIVE)( IN PVOID TdiEventContext, IN CONNECTION_CONTEXT ConnectionContext, IN ULONG ReceiveFlags, @@ -311,7 +311,7 @@ typedef NTSTATUS TDIKRNLAPI NTSTATUS -NTAPI +DDKAPI TdiDefaultChainedReceiveHandler( IN PVOID TdiEventContext, IN CONNECTION_CONTEXT ConnectionContext, @@ -322,7 +322,7 @@ TdiDefaultChainedReceiveHandler( IN PVOID TsduDescriptor); typedef NTSTATUS -(NTAPI *PTDI_IND_CHAINED_RECEIVE_DATAGRAM)( +(DDKAPI *PTDI_IND_CHAINED_RECEIVE_DATAGRAM)( IN PVOID TdiEventContext, IN LONG SourceAddressLength, IN PVOID SourceAddress, @@ -336,7 +336,7 @@ typedef NTSTATUS TDIKRNLAPI NTSTATUS -NTAPI +DDKAPI TdiDefaultChainedRcvDatagramHandler( IN PVOID TdiEventContext, IN LONG SourceAddressLength, @@ -350,7 +350,7 @@ TdiDefaultChainedRcvDatagramHandler( IN PVOID TsduDescriptor); typedef NTSTATUS -(NTAPI *PTDI_IND_CHAINED_RECEIVE_EXPEDITED)( +(DDKAPI *PTDI_IND_CHAINED_RECEIVE_EXPEDITED)( IN PVOID TdiEventContext, IN CONNECTION_CONTEXT ConnectionContext, IN ULONG ReceiveFlags, @@ -361,7 +361,7 @@ typedef NTSTATUS TDIKRNLAPI NTSTATUS -NTAPI +DDKAPI TdiDefaultChainedRcvExpeditedHandler( IN PVOID TdiEventContext, IN CONNECTION_CONTEXT ConnectionContext, @@ -372,14 +372,14 @@ TdiDefaultChainedRcvExpeditedHandler( IN PVOID TsduDescriptor); typedef NTSTATUS -(NTAPI *PTDI_IND_SEND_POSSIBLE)( +(DDKAPI *PTDI_IND_SEND_POSSIBLE)( IN PVOID TdiEventContext, IN PVOID ConnectionContext, IN ULONG BytesAvailable); TDIKRNLAPI NTSTATUS -NTAPI +DDKAPI TdiDefaultSendPossibleHandler( IN PVOID TdiEventContext, IN PVOID ConnectionContext, @@ -611,7 +611,7 @@ TdiDefaultSendPossibleHandler( TDIKRNLAPI VOID -NTAPI +DDKAPI TdiBuildNetbiosAddress( IN PUCHAR NetbiosName, IN BOOLEAN IsGroupName, @@ -619,7 +619,7 @@ TdiBuildNetbiosAddress( TDIKRNLAPI NTSTATUS -NTAPI +DDKAPI TdiBuildNetbiosAddressEa( IN PUCHAR Buffer, IN BOOLEAN IsGroupName, @@ -869,48 +869,48 @@ typedef struct _TDI_PNP_CONTEXT { } TDI_PNP_CONTEXT, *PTDI_PNP_CONTEXT; typedef VOID -(NTAPI *TDI_ADD_ADDRESS_HANDLER)( +(DDKAPI *TDI_ADD_ADDRESS_HANDLER)( IN PTA_ADDRESS Address); typedef VOID -(NTAPI *TDI_ADD_ADDRESS_HANDLER_V2)( +(DDKAPI *TDI_ADD_ADDRESS_HANDLER_V2)( IN PTA_ADDRESS Address, IN PUNICODE_STRING DeviceName, IN PTDI_PNP_CONTEXT Context); typedef VOID -(NTAPI *TDI_BINDING_HANDLER)( +(DDKAPI *TDI_BINDING_HANDLER)( IN TDI_PNP_OPCODE PnPOpcode, IN PUNICODE_STRING DeviceName, IN PWSTR MultiSZBindList); typedef VOID -(NTAPI *TDI_BIND_HANDLER)( +(DDKAPI *TDI_BIND_HANDLER)( IN PUNICODE_STRING DeviceName); typedef VOID -(NTAPI *TDI_DEL_ADDRESS_HANDLER)( +(DDKAPI *TDI_DEL_ADDRESS_HANDLER)( IN PTA_ADDRESS Address); typedef VOID -(NTAPI *TDI_DEL_ADDRESS_HANDLER_V2)( +(DDKAPI *TDI_DEL_ADDRESS_HANDLER_V2)( IN PTA_ADDRESS Address, IN PUNICODE_STRING DeviceName, IN PTDI_PNP_CONTEXT Context); typedef NTSTATUS -(NTAPI *TDI_PNP_POWER_HANDLER)( +(DDKAPI *TDI_PNP_POWER_HANDLER)( IN PUNICODE_STRING DeviceName, IN PNET_PNP_EVENT PowerEvent, IN PTDI_PNP_CONTEXT Context1, IN PTDI_PNP_CONTEXT Context2); typedef VOID -(NTAPI *TDI_UNBIND_HANDLER)( +(DDKAPI *TDI_UNBIND_HANDLER)( IN PUNICODE_STRING DeviceName); typedef VOID -(NTAPI *ProviderPnPPowerComplete)( +(DDKAPI *ProviderPnPPowerComplete)( IN PNET_PNP_EVENT NetEvent, IN NTSTATUS ProviderStatus); @@ -964,7 +964,7 @@ typedef TDI_CLIENT_INTERFACE_INFO *PTDI_CLIENT_INTERFACE_INFO; TDIKRNLAPI NTSTATUS -NTAPI +DDKAPI TdiCopyBufferToMdl( IN PVOID SourceBuffer, IN ULONG SourceOffset, @@ -986,7 +986,7 @@ TdiCopyBufferToMdl( TDIKRNLAPI NTSTATUS -NTAPI +DDKAPI TdiCopyMdlChainToMdlChain ( IN PMDL SourceMdlChain, IN ULONG SourceOffset, @@ -996,7 +996,7 @@ TdiCopyMdlChainToMdlChain ( TDIKRNLAPI NTSTATUS -NTAPI +DDKAPI TdiCopyMdlToBuffer( IN PMDL SourceMdlChain, IN ULONG SourceOffset, @@ -1007,55 +1007,55 @@ TdiCopyMdlToBuffer( TDIKRNLAPI NTSTATUS -NTAPI +DDKAPI TdiDeregisterAddressChangeHandler( IN HANDLE BindingHandle); TDIKRNLAPI NTSTATUS -NTAPI +DDKAPI TdiDeregisterDeviceObject( IN HANDLE DevRegistrationHandle); TDIKRNLAPI NTSTATUS -NTAPI +DDKAPI TdiDeregisterNetAddress( IN HANDLE AddrRegistrationHandle); TDIKRNLAPI NTSTATUS -NTAPI +DDKAPI TdiDeregisterPnPHandlers( IN HANDLE BindingHandle); TDIKRNLAPI NTSTATUS -NTAPI +DDKAPI TdiDeregisterProvider( IN HANDLE ProviderHandle); TDIKRNLAPI NTSTATUS -NTAPI +DDKAPI TdiEnumerateAddresses( IN HANDLE BindingHandle); TDIKRNLAPI VOID -NTAPI +DDKAPI TdiInitialize( VOID); TDIKRNLAPI VOID -NTAPI +DDKAPI TdiMapBuffer( IN PMDL MdlChain); TDIKRNLAPI NTSTATUS -NTAPI +DDKAPI TdiMapUserRequest( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, @@ -1063,14 +1063,14 @@ TdiMapUserRequest( TDIKRNLAPI BOOLEAN -NTAPI +DDKAPI TdiMatchPdoWithChainedReceiveContext( IN PVOID TsduDescriptor, IN PVOID PDO); TDIKRNLAPI VOID -NTAPI +DDKAPI TdiPnPPowerComplete( IN HANDLE BindingHandle, IN PNET_PNP_EVENT PowerEvent, @@ -1078,7 +1078,7 @@ TdiPnPPowerComplete( TDIKRNLAPI NTSTATUS -NTAPI +DDKAPI TdiPnPPowerRequest( IN PUNICODE_STRING DeviceName, IN PNET_PNP_EVENT PowerEvent, @@ -1088,13 +1088,13 @@ TdiPnPPowerRequest( TDIKRNLAPI NTSTATUS -NTAPI +DDKAPI TdiProviderReady( IN HANDLE ProviderHandle); TDIKRNLAPI NTSTATUS -NTAPI +DDKAPI TdiRegisterAddressChangeHandler( IN TDI_ADD_ADDRESS_HANDLER AddHandler, IN TDI_DEL_ADDRESS_HANDLER DeleteHandler, @@ -1102,14 +1102,14 @@ TdiRegisterAddressChangeHandler( TDIKRNLAPI NTSTATUS -NTAPI +DDKAPI TdiRegisterDeviceObject( IN PUNICODE_STRING DeviceName, OUT HANDLE *DevRegistrationHandle); TDIKRNLAPI NTSTATUS -NTAPI +DDKAPI TdiRegisterNetAddress( IN PTA_ADDRESS Address, IN PUNICODE_STRING DeviceName, @@ -1118,7 +1118,7 @@ TdiRegisterNetAddress( TDIKRNLAPI NTSTATUS -NTAPI +DDKAPI TdiRegisterNotificationHandler( IN TDI_BIND_HANDLER BindHandler, IN TDI_UNBIND_HANDLER UnbindHandler, @@ -1126,7 +1126,7 @@ TdiRegisterNotificationHandler( TDIKRNLAPI NTSTATUS -NTAPI +DDKAPI TdiRegisterPnPHandlers( IN PTDI_CLIENT_INTERFACE_INFO ClientInterfaceInfo, IN ULONG InterfaceInfoSize, @@ -1134,21 +1134,21 @@ TdiRegisterPnPHandlers( TDIKRNLAPI NTSTATUS -NTAPI +DDKAPI TdiRegisterProvider( IN PUNICODE_STRING ProviderName, OUT HANDLE *ProviderHandle); TDIKRNLAPI VOID -NTAPI +DDKAPI TdiReturnChainedReceives( IN PVOID *TsduDescriptors, IN ULONG NumberOfTsdus); TDIKRNLAPI VOID -NTAPI +DDKAPI TdiUnmapBuffer( IN PMDL MdlChain); diff --git a/reactos/include/psdk/tvout.h b/reactos/include/ddk/tvout.h similarity index 81% rename from reactos/include/psdk/tvout.h rename to reactos/include/ddk/tvout.h index 817461406d5..d2e33c20aa0 100644 --- a/reactos/include/psdk/tvout.h +++ b/reactos/include/ddk/tvout.h @@ -20,7 +20,14 @@ * */ +#ifndef __TVOUT_H +#define __TVOUT_H + + +#if _MSC_VER > 1000 #pragma once +#endif + #ifndef GUID_DEFINED #include @@ -77,27 +84,30 @@ #define VP_CP_CMD_CHANGE 0x00000004 typedef struct _VIDEOPARAMETERS { - GUID Guid; - ULONG dwOffset; - ULONG dwCommand; - ULONG dwFlags; - ULONG dwMode; - ULONG dwTVStandard; - ULONG dwAvailableModes; - ULONG dwAvailableTVStandard; - ULONG dwFlickerFilter; - ULONG dwOverScanX; - ULONG dwOverScanY; - ULONG dwMaxUnscaledX; - ULONG dwMaxUnscaledY; - ULONG dwPositionX; - ULONG dwPositionY; - ULONG dwBrightness; - ULONG dwContrast; - ULONG dwCPType; - ULONG dwCPCommand; - ULONG dwCPStandard; - ULONG dwCPKey; - ULONG bCP_APSTriggerBits; - UCHAR bOEMCopyProtection[256]; -} VIDEOPARAMETERS, *PVIDEOPARAMETERS, *LPVIDEOPARAMETERS; + GUID Guid; + ULONG dwOffset; + ULONG dwCommand; + ULONG dwFlags; + ULONG dwMode; + ULONG dwTVStandard; + ULONG dwAvailableModes; + ULONG dwAvailableTVStandard; + ULONG dwFlickerFilter; + ULONG dwOverScanX; + ULONG dwOverScanY; + ULONG dwMaxUnscaledX; + ULONG dwMaxUnscaledY; + ULONG dwPositionX; + ULONG dwPositionY; + ULONG dwBrightness; + ULONG dwContrast; + ULONG dwCPType; + ULONG dwCPCommand; + ULONG dwCPStandard; + ULONG dwCPKey; + ULONG bCP_APSTriggerBits; + UCHAR bOEMCopyProtection[256]; +} VIDEOPARAMETERS, *PVIDEOPARAMETERS, FAR *LPVIDEOPARAMETERS; + + +#endif /* __TVOUT_H */ diff --git a/reactos/include/ddk/upssvc.h b/reactos/include/ddk/upssvc.h index 8672519694b..1d3792acfa0 100644 --- a/reactos/include/ddk/upssvc.h +++ b/reactos/include/ddk/upssvc.h @@ -42,12 +42,12 @@ extern "C" { UPSAPI VOID -NTAPI +DDKAPI UPSCancelWait(VOID); UPSAPI DWORD -NTAPI +DDKAPI UPSGetState(VOID); #define UPS_INITUNKNOWNERROR 0 @@ -60,23 +60,23 @@ UPSGetState(VOID); UPSAPI DWORD -NTAPI +DDKAPI UPSInit(VOID); UPSAPI VOID -NTAPI +DDKAPI UPSStop(VOID); UPSAPI VOID -NTAPI +DDKAPI UPSTurnOff( IN DWORD aTurnOffDelay); UPSAPI VOID -NTAPI +DDKAPI UPSWaitForStateChange( IN DWORD aCurrentState, IN DWORD anInterval); diff --git a/reactos/include/ddk/video.h b/reactos/include/ddk/video.h index 6294b5a5a75..047a56721d9 100644 --- a/reactos/include/ddk/video.h +++ b/reactos/include/ddk/video.h @@ -76,7 +76,7 @@ typedef enum _HW_DMA_RETURN { } HW_DMA_RETURN, *PHW_DMA_RETURN; typedef HW_DMA_RETURN -(NTAPI *PVIDEO_HW_START_DMA)( +(DDKAPI *PVIDEO_HW_START_DMA)( PVOID HwDeviceExtension, PDMA pDma); @@ -144,14 +144,14 @@ typedef struct _VP_SCATTER_GATHER_LIST { } VP_SCATTER_GATHER_LIST, *PVP_SCATTER_GATHER_LIST; typedef VOID -(NTAPI *PEXECUTE_DMA)( +(DDKAPI *PEXECUTE_DMA)( IN PVOID HwDeviceExtension, IN PVP_DMA_ADAPTER VpDmaAdapter, IN PVP_SCATTER_GATHER_LIST SGList, IN PVOID Context); typedef PVOID -(NTAPI *PVIDEO_PORT_GET_PROC_ADDRESS)( +(DDKAPI *PVIDEO_PORT_GET_PROC_ADDRESS)( IN PVOID HwDeviceExtension, IN PUCHAR FunctionName); @@ -188,7 +188,7 @@ typedef struct _VIDEO_PORT_CONFIG_INFO { } VIDEO_PORT_CONFIG_INFO, *PVIDEO_PORT_CONFIG_INFO; typedef VP_STATUS -(NTAPI *PVIDEO_HW_FIND_ADAPTER)( +(DDKAPI *PVIDEO_HW_FIND_ADAPTER)( IN PVOID HwDeviceExtension, IN PVOID HwContext, IN PWSTR ArgumentString, @@ -196,7 +196,7 @@ typedef VP_STATUS OUT PUCHAR Again); typedef VP_STATUS -(NTAPI *PVIDEO_HW_POWER_GET)( +(DDKAPI *PVIDEO_HW_POWER_GET)( IN PVOID HwDeviceExtension, IN ULONG HwId, IN OUT PVIDEO_POWER_MANAGEMENT VideoPowerControl); @@ -224,7 +224,7 @@ typedef enum _VIDEO_CHILD_TYPE { } VIDEO_CHILD_TYPE, *PVIDEO_CHILD_TYPE; typedef VP_STATUS -(NTAPI *PVIDEO_HW_GET_CHILD_DESCRIPTOR)( +(DDKAPI *PVIDEO_HW_GET_CHILD_DESCRIPTOR)( IN PVOID HwDeviceExtension, IN PVIDEO_CHILD_ENUM_INFO ChildEnumInfo, OUT PVIDEO_CHILD_TYPE VideoChildType, @@ -233,11 +233,11 @@ typedef VP_STATUS OUT PULONG pUnused); typedef BOOLEAN -(NTAPI *PVIDEO_HW_INITIALIZE)( +(DDKAPI *PVIDEO_HW_INITIALIZE)( IN PVOID HwDeviceExtension); typedef BOOLEAN -(NTAPI *PVIDEO_HW_INTERRUPT)( +(DDKAPI *PVIDEO_HW_INTERRUPT)( IN PVOID HwDeviceExtension); /* VIDEO_ACCESS_RANGE.RangePassive */ @@ -257,14 +257,14 @@ typedef struct _VIDEO_ACCESS_RANGE { #endif typedef VOID -(NTAPI *PVIDEO_HW_LEGACYRESOURCES)( +(DDKAPI *PVIDEO_HW_LEGACYRESOURCES)( IN ULONG VendorId, IN ULONG DeviceId, IN OUT PVIDEO_ACCESS_RANGE *LegacyResourceList, IN OUT PULONG LegacyResourceCount); typedef VP_STATUS -(NTAPI *PMINIPORT_QUERY_DEVICE_ROUTINE)( +(DDKAPI *PMINIPORT_QUERY_DEVICE_ROUTINE)( IN PVOID HwDeviceExtension, IN PVOID Context, IN VIDEO_DEVICE_DATA_TYPE DeviceDataType, @@ -284,12 +284,12 @@ typedef struct _QUERY_INTERFACE { } QUERY_INTERFACE, *PQUERY_INTERFACE; typedef VP_STATUS -(NTAPI *PVIDEO_HW_QUERY_INTERFACE)( +(DDKAPI *PVIDEO_HW_QUERY_INTERFACE)( IN PVOID HwDeviceExtension, IN OUT PQUERY_INTERFACE QueryInterface); typedef VP_STATUS -(NTAPI *PMINIPORT_GET_REGISTRY_ROUTINE)( +(DDKAPI *PMINIPORT_GET_REGISTRY_ROUTINE)( IN PVOID HwDeviceExtension, IN PVOID Context, IN OUT PWSTR ValueName, @@ -297,13 +297,13 @@ typedef VP_STATUS IN ULONG ValueLength); typedef BOOLEAN -(NTAPI *PVIDEO_HW_RESET_HW)( +(DDKAPI *PVIDEO_HW_RESET_HW)( IN PVOID HwDeviceExtension, IN ULONG Columns, IN ULONG Rows); typedef VP_STATUS -(NTAPI *PVIDEO_HW_POWER_SET)( +(DDKAPI *PVIDEO_HW_POWER_SET)( IN PVOID HwDeviceExtension, IN ULONG HwId, IN PVIDEO_POWER_MANAGEMENT VideoPowerControl); @@ -326,32 +326,32 @@ typedef struct _VIDEO_REQUEST_PACKET { } VIDEO_REQUEST_PACKET, *PVIDEO_REQUEST_PACKET; typedef BOOLEAN -(NTAPI *PVIDEO_HW_START_IO)( +(DDKAPI *PVIDEO_HW_START_IO)( IN PVOID HwDeviceExtension, IN PVIDEO_REQUEST_PACKET RequestPacket); typedef BOOLEAN -(NTAPI *PMINIPORT_SYNCHRONIZE_ROUTINE)( +(DDKAPI *PMINIPORT_SYNCHRONIZE_ROUTINE)( IN PVOID Context); typedef VOID -(NTAPI *PVIDEO_HW_TIMER)( +(DDKAPI *PVIDEO_HW_TIMER)( IN PVOID HwDeviceExtension); typedef VOID -(NTAPI *PMINIPORT_DPC_ROUTINE)( +(DDKAPI *PMINIPORT_DPC_ROUTINE)( IN PVOID HwDeviceExtension, IN PVOID Context); typedef VP_STATUS -(NTAPI *PDRIVER_IO_PORT_UCHAR)( +(DDKAPI *PDRIVER_IO_PORT_UCHAR)( IN ULONG_PTR Context, IN ULONG Port, IN UCHAR AccessMode, IN PUCHAR Data); typedef VP_STATUS -(NTAPI *PDRIVER_IO_PORT_UCHAR_STRING)( +(DDKAPI *PDRIVER_IO_PORT_UCHAR_STRING)( IN ULONG_PTR Context, IN ULONG Port, IN UCHAR AccessMode, @@ -359,14 +359,14 @@ typedef VP_STATUS IN ULONG DataLength); typedef VP_STATUS -(NTAPI *PDRIVER_IO_PORT_ULONG)( +(DDKAPI *PDRIVER_IO_PORT_ULONG)( IN ULONG_PTR Context, IN ULONG Port, IN UCHAR AccessMode, IN PULONG Data); typedef VP_STATUS -(NTAPI *PDRIVER_IO_PORT_ULONG_STRING)( +(DDKAPI *PDRIVER_IO_PORT_ULONG_STRING)( IN ULONG_PTR Context, IN ULONG Port, IN UCHAR AccessMode, @@ -374,14 +374,14 @@ typedef VP_STATUS IN ULONG DataLength); typedef VP_STATUS -(NTAPI *PDRIVER_IO_PORT_USHORT)( +(DDKAPI *PDRIVER_IO_PORT_USHORT)( IN ULONG_PTR Context, IN ULONG Port, IN UCHAR AccessMode, IN PUSHORT Data); typedef VP_STATUS -(NTAPI *PDRIVER_IO_PORT_USHORT_STRING)( +(DDKAPI *PDRIVER_IO_PORT_USHORT_STRING)( IN ULONG_PTR Context, IN ULONG Port, IN UCHAR AccessMode, @@ -480,21 +480,21 @@ typedef struct _VIDEO_PORT_AGP_INTERFACE_2 { #define VIDEO_PORT_I2C_INTERFACE_VERSION_1 1 typedef VOID -(NTAPI *PVIDEO_WRITE_CLOCK_LINE)( +(DDKAPI *PVIDEO_WRITE_CLOCK_LINE)( PVOID HwDeviceExtension, UCHAR Data); typedef VOID -(NTAPI *PVIDEO_WRITE_DATA_LINE)( +(DDKAPI *PVIDEO_WRITE_DATA_LINE)( PVOID HwDeviceExtension, UCHAR Data); typedef BOOLEAN -(NTAPI *PVIDEO_READ_CLOCK_LINE)( +(DDKAPI *PVIDEO_READ_CLOCK_LINE)( PVOID HwDeviceExtension); typedef BOOLEAN -(NTAPI *PVIDEO_READ_DATA_LINE)( +(DDKAPI *PVIDEO_READ_DATA_LINE)( PVOID HwDeviceExtension); typedef struct _I2C_CALLBACKS @@ -506,24 +506,24 @@ typedef struct _I2C_CALLBACKS } I2C_CALLBACKS, *PI2C_CALLBACKS; typedef BOOLEAN -(NTAPI *PI2C_START)( +(DDKAPI *PI2C_START)( IN PVOID HwDeviceExtension, IN PI2C_CALLBACKS I2CCallbacks); typedef BOOLEAN -(NTAPI *PI2C_STOP)( +(DDKAPI *PI2C_STOP)( IN PVOID HwDeviceExtension, IN PI2C_CALLBACKS I2CCallbacks); typedef BOOLEAN -(NTAPI *PI2C_WRITE)( +(DDKAPI *PI2C_WRITE)( IN PVOID HwDeviceExtension, IN PI2C_CALLBACKS I2CCallbacks, IN PUCHAR Buffer, IN ULONG Length); typedef BOOLEAN -(NTAPI *PI2C_READ)( +(DDKAPI *PI2C_READ)( IN PVOID HwDeviceExtension, IN PI2C_CALLBACKS I2CCallbacks, OUT PUCHAR Buffer, @@ -545,25 +545,25 @@ typedef struct _VIDEO_PORT_I2C_INTERFACE { #define VIDEO_PORT_INT10_INTERFACE_VERSION_1 1 typedef VP_STATUS -(NTAPI *PINT10_ALLOCATE_BUFFER)( +(DDKAPI *PINT10_ALLOCATE_BUFFER)( IN PVOID Context, OUT PUSHORT Seg, OUT PUSHORT Off, IN OUT PULONG Length); typedef VP_STATUS -(NTAPI *PINT10_CALL_BIOS)( +(DDKAPI *PINT10_CALL_BIOS)( IN PVOID Context, IN OUT PINT10_BIOS_ARGUMENTS BiosArguments); typedef VP_STATUS -(NTAPI *PINT10_FREE_BUFFER)( +(DDKAPI *PINT10_FREE_BUFFER)( IN PVOID Context, IN USHORT Seg, IN USHORT Off); typedef VP_STATUS -(NTAPI *PINT10_READ_MEMORY)( +(DDKAPI *PINT10_READ_MEMORY)( IN PVOID Context, IN USHORT Seg, IN USHORT Off, @@ -571,7 +571,7 @@ typedef VP_STATUS IN ULONG Length); typedef VP_STATUS -(NTAPI *PINT10_WRITE_MEMORY)( +(DDKAPI *PINT10_WRITE_MEMORY)( IN PVOID Context, IN USHORT Seg, IN USHORT Off, @@ -630,13 +630,13 @@ typedef struct _VPOSVERSIONINFO { VPAPI VOID -NTAPI +DDKAPI VideoPortAcquireDeviceLock( IN PVOID HwDeviceExtension); VPAPI VOID -NTAPI +DDKAPI VideoPortAcquireSpinLock( IN PVOID HwDeviceExtension, IN PSPIN_LOCK SpinLock, @@ -644,14 +644,14 @@ VideoPortAcquireSpinLock( VPAPI VOID -NTAPI +DDKAPI VideoPortAcquireSpinLockAtDpcLevel( IN PVOID HwDeviceExtension, IN PSPIN_LOCK SpinLock); VPAPI VP_STATUS -NTAPI +DDKAPI VideoPortAllocateBuffer( IN PVOID HwDeviceExtension, IN ULONG Size, @@ -659,7 +659,7 @@ VideoPortAllocateBuffer( VPAPI PVOID -NTAPI +DDKAPI VideoPortAllocateCommonBuffer( IN PVOID HwDeviceExtension, IN PVP_DMA_ADAPTER VpDmaAdapter, @@ -670,7 +670,7 @@ VideoPortAllocateCommonBuffer( VPAPI PVOID -NTAPI +DDKAPI VideoPortAllocateContiguousMemory( IN PVOID HwDeviceExtension, IN ULONG NumberOfBytes, @@ -686,7 +686,7 @@ typedef enum _VP_POOL_TYPE { VPAPI PVOID -NTAPI +DDKAPI VideoPortAllocatePool( IN PVOID HwDeviceExtension, IN VP_POOL_TYPE PoolType, @@ -695,7 +695,7 @@ VideoPortAllocatePool( VPAPI PDMA -NTAPI +DDKAPI VideoPortAssociateEventsWithDmaHandle( IN PVOID HwDeviceExtension, IN OUT PVIDEO_REQUEST_PACKET pVrp, @@ -708,7 +708,7 @@ VideoPortAssociateEventsWithDmaHandle( VPAPI BOOLEAN -NTAPI +DDKAPI VideoPortCheckForDeviceExistence( IN PVOID HwDeviceExtension, IN USHORT VendorId, @@ -720,14 +720,14 @@ VideoPortCheckForDeviceExistence( VPAPI VOID -NTAPI +DDKAPI VideoPortClearEvent( IN PVOID HwDeviceExtension, IN PEVENT pEvent); VPAPI ULONG -NTAPI +DDKAPI VideoPortCompareMemory( IN PVOID Source1, IN PVOID Source2, @@ -735,7 +735,7 @@ VideoPortCompareMemory( VPAPI VP_STATUS -NTAPI +DDKAPI VideoPortCompleteDma( IN PVOID HwDeviceExtension, IN PVP_DMA_ADAPTER VpDmaAdapter, @@ -744,7 +744,7 @@ VideoPortCompleteDma( VPAPI VP_STATUS -NTAPI +DDKAPI VideoPortCreateEvent( IN PVOID HwDeviceExtension, IN ULONG EventFlag, @@ -753,7 +753,7 @@ VideoPortCreateEvent( VPAPI VP_STATUS -NTAPI +DDKAPI VideoPortCreateSecondaryDisplay( IN PVOID HwDeviceExtension, IN OUT PVOID *SecondaryDeviceExtension, @@ -761,7 +761,7 @@ VideoPortCreateSecondaryDisplay( VPAPI VP_STATUS -NTAPI +DDKAPI VideoPortCreateSpinLock( IN PVOID HwDeviceExtension, OUT PSPIN_LOCK *SpinLock); @@ -774,7 +774,7 @@ typedef struct _DDC_CONTROL { VPAPI BOOLEAN -NTAPI +DDKAPI VideoPortDDCMonitorHelper( IN PVOID HwDeviceExtension, IN PVOID DDCControl, @@ -783,7 +783,7 @@ VideoPortDDCMonitorHelper( VPAPI VOID -__cdecl +DDKCDECLAPI VideoPortDebugPrint( IN VIDEO_DEBUG_LEVEL DebugPrintLevel, IN PCHAR DebugMessage, @@ -791,27 +791,27 @@ VideoPortDebugPrint( VPAPI VP_STATUS -NTAPI +DDKAPI VideoPortDeleteEvent( IN PVOID HwDeviceExtension, IN PEVENT pEvent); VPAPI VP_STATUS -NTAPI +DDKAPI VideoPortDeleteSpinLock( IN PVOID HwDeviceExtension, IN PSPIN_LOCK SpinLock); VPAPI VP_STATUS -NTAPI +DDKAPI VideoPortDisableInterrupt( IN PVOID HwDeviceExtension); VPAPI PDMA -NTAPI +DDKAPI VideoPortDoDma( IN PVOID HwDeviceExtension, IN PDMA pDma, @@ -819,20 +819,20 @@ VideoPortDoDma( VPAPI VP_STATUS -NTAPI +DDKAPI VideoPortEnableInterrupt( IN PVOID HwDeviceExtension); VPAPI VP_STATUS -NTAPI +DDKAPI VideoPortEnumerateChildren( IN PVOID HwDeviceExtension, IN PVOID Reserved); VPAPI VOID -NTAPI +DDKAPI VideoPortFreeCommonBuffer( IN PVOID HwDeviceExtension, IN ULONG Length, @@ -842,21 +842,21 @@ VideoPortFreeCommonBuffer( VPAPI VOID -NTAPI +DDKAPI VideoPortFreeDeviceBase( IN PVOID HwDeviceExtension, IN PVOID MappedAddress); VPAPI VOID -NTAPI +DDKAPI VideoPortFreePool( IN PVOID HwDeviceExtension, IN PVOID Ptr); VPAPI VP_STATUS -NTAPI +DDKAPI VideoPortGetAccessRanges( IN PVOID HwDeviceExtension, IN ULONG NumRequestedResources, @@ -869,19 +869,19 @@ VideoPortGetAccessRanges( VPAPI PVOID -NTAPI +DDKAPI VideoPortGetAssociatedDeviceExtension( IN PVOID DeviceObject); VPAPI ULONG -NTAPI +DDKAPI VideoPortGetAssociatedDeviceID( IN PVOID DeviceObject); VPAPI ULONG -NTAPI +DDKAPI VideoPortGetBusData( IN PVOID HwDeviceExtension, IN BUS_DATA_TYPE BusDataType, @@ -892,14 +892,14 @@ VideoPortGetBusData( VPAPI ULONG -NTAPI +DDKAPI VideoPortGetBytesUsed( IN PVOID HwDeviceExtension, IN PDMA pDma); VPAPI PVOID -NTAPI +DDKAPI VideoPortGetCommonBuffer( IN PVOID HwDeviceExtension, IN ULONG DesiredLength, @@ -910,13 +910,13 @@ VideoPortGetCommonBuffer( VPAPI UCHAR -NTAPI +DDKAPI VideoPortGetCurrentIrql( VOID); VPAPI PVOID -NTAPI +DDKAPI VideoPortGetDeviceBase( IN PVOID HwDeviceExtension, IN PHYSICAL_ADDRESS IoAddress, @@ -925,7 +925,7 @@ VideoPortGetDeviceBase( VPAPI VP_STATUS -NTAPI +DDKAPI VideoPortGetDeviceData( IN PVOID HwDeviceExtension, IN VIDEO_DEVICE_DATA_TYPE DeviceDataType, @@ -934,28 +934,28 @@ VideoPortGetDeviceData( VPAPI PVP_DMA_ADAPTER -NTAPI +DDKAPI VideoPortGetDmaAdapter( IN PVOID HwDeviceExtension, IN PVP_DEVICE_DESCRIPTION VpDeviceDescription); VPAPI PVOID -NTAPI +DDKAPI VideoPortGetDmaContext( IN PVOID HwDeviceExtension, IN PDMA pDma); VPAPI PVOID -NTAPI +DDKAPI VideoPortGetMdl( IN PVOID HwDeviceExtension, IN PDMA pDma); VPAPI VP_STATUS -NTAPI +DDKAPI VideoPortGetRegistryParameters( IN PVOID HwDeviceExtension, IN PWSTR ParameterName, @@ -965,7 +965,7 @@ VideoPortGetRegistryParameters( VPAPI PVOID -NTAPI +DDKAPI VideoPortGetRomImage( IN PVOID HwDeviceExtension, IN PVOID Unused1, @@ -974,21 +974,21 @@ VideoPortGetRomImage( VPAPI VP_STATUS -NTAPI +DDKAPI VideoPortGetVersion( IN PVOID HwDeviceExtension, IN OUT PVPOSVERSIONINFO pVpOsVersionInfo); VPAPI VP_STATUS -NTAPI +DDKAPI VideoPortGetVgaStatus( IN PVOID HwDeviceExtension, OUT PULONG VgaStatus); VPAPI ULONG -NTAPI +DDKAPI VideoPortInitialize( IN PVOID Argument1, IN PVOID Argument2, @@ -997,7 +997,7 @@ VideoPortInitialize( VPAPI VP_STATUS -NTAPI +DDKAPI VideoPortInt10( IN PVOID HwDeviceExtension, IN PVIDEO_X86_BIOS_ARGUMENTS BiosArguments); @@ -1029,7 +1029,7 @@ typedef enum _VP_LOCK_OPERATION { VPAPI PVOID -NTAPI +DDKAPI VideoPortLockBuffer( IN PVOID HwDeviceExtension, IN PVOID BaseAddress, @@ -1038,7 +1038,7 @@ VideoPortLockBuffer( VPAPI BOOLEAN -NTAPI +DDKAPI VideoPortLockPages( IN PVOID HwDeviceExtension, IN OUT PVIDEO_REQUEST_PACKET pVrp, @@ -1048,7 +1048,7 @@ VideoPortLockPages( VPAPI VOID -NTAPI +DDKAPI VideoPortLogError( IN PVOID HwDeviceExtension, IN PVIDEO_REQUEST_PACKET Vrp OPTIONAL, @@ -1057,7 +1057,7 @@ VideoPortLogError( VPAPI VP_STATUS -NTAPI +DDKAPI VideoPortMapBankedMemory( IN PVOID HwDeviceExtension, IN PHYSICAL_ADDRESS PhysicalAddress, @@ -1071,7 +1071,7 @@ VideoPortMapBankedMemory( VPAPI PDMA -NTAPI +DDKAPI VideoPortMapDmaMemory( IN PVOID HwDeviceExtension, IN PVIDEO_REQUEST_PACKET pVrp, @@ -1084,7 +1084,7 @@ VideoPortMapDmaMemory( VPAPI VP_STATUS -NTAPI +DDKAPI VideoPortMapMemory( IN PVOID HwDeviceExtension, IN PHYSICAL_ADDRESS PhysicalAddress, @@ -1094,7 +1094,7 @@ VideoPortMapMemory( VPAPI VOID -NTAPI +DDKAPI VideoPortMoveMemory( IN PVOID Destination, IN PVOID Source, @@ -1102,14 +1102,14 @@ VideoPortMoveMemory( VPAPI VOID -NTAPI +DDKAPI VideoPortPutDmaAdapter( IN PVOID HwDeviceExtension, IN PVP_DMA_ADAPTER VpDmaAdapter); VPAPI LONGLONG -NTAPI +DDKAPI VideoPortQueryPerformanceCounter( IN PVOID HwDeviceExtension, OUT PLONGLONG PerformanceFrequency OPTIONAL); @@ -1124,7 +1124,7 @@ typedef enum _VIDEO_PORT_SERVICES { VPAPI VP_STATUS -NTAPI +DDKAPI VideoPortQueryServices( IN PVOID HwDeviceExtension, IN VIDEO_PORT_SERVICES ServicesType, @@ -1132,20 +1132,20 @@ VideoPortQueryServices( VPAPI VOID -NTAPI +DDKAPI VideoPortQuerySystemTime( OUT PLARGE_INTEGER CurrentTime); VPAPI BOOLEAN -NTAPI +DDKAPI VideoPortIsNoVesa( VOID ); VPAPI BOOLEAN -NTAPI +DDKAPI VideoPortQueueDpc( IN PVOID HwDeviceExtension, IN PMINIPORT_DPC_ROUTINE CallbackRoutine, @@ -1153,7 +1153,7 @@ VideoPortQueueDpc( VPAPI VOID -NTAPI +DDKAPI VideoPortReadPortBufferUchar( IN PUCHAR Port, OUT PUCHAR Buffer, @@ -1161,7 +1161,7 @@ VideoPortReadPortBufferUchar( VPAPI VOID -NTAPI +DDKAPI VideoPortReadPortBufferUlong( IN PULONG Port, OUT PULONG Buffer, @@ -1169,7 +1169,7 @@ VideoPortReadPortBufferUlong( VPAPI VOID -NTAPI +DDKAPI VideoPortReadPortBufferUshort( IN PUSHORT Port, OUT PUSHORT Buffer, @@ -1177,25 +1177,25 @@ VideoPortReadPortBufferUshort( VPAPI UCHAR -NTAPI +DDKAPI VideoPortReadPortUchar( IN PUCHAR Port); VPAPI ULONG -NTAPI +DDKAPI VideoPortReadPortUlong( IN PULONG Port); VPAPI USHORT -NTAPI +DDKAPI VideoPortReadPortUshort( IN PUSHORT Port); VPAPI VOID -NTAPI +DDKAPI VideoPortReadRegisterBufferUchar( IN PUCHAR Register, OUT PUCHAR Buffer, @@ -1203,7 +1203,7 @@ VideoPortReadRegisterBufferUchar( VPAPI VOID -NTAPI +DDKAPI VideoPortReadRegisterBufferUlong( IN PULONG Register, OUT PULONG Buffer, @@ -1211,7 +1211,7 @@ VideoPortReadRegisterBufferUlong( VPAPI VOID -NTAPI +DDKAPI VideoPortReadRegisterBufferUshort( IN PUSHORT Register, OUT PUSHORT Buffer, @@ -1219,39 +1219,39 @@ VideoPortReadRegisterBufferUshort( VPAPI UCHAR -NTAPI +DDKAPI VideoPortReadRegisterUchar( IN PUCHAR Register); VPAPI ULONG -NTAPI +DDKAPI VideoPortReadRegisterUlong( IN PULONG Register); VPAPI USHORT -NTAPI +DDKAPI VideoPortReadRegisterUshort( IN PUSHORT Register); VPAPI LONG -NTAPI +DDKAPI VideoPortReadStateEvent( IN PVOID HwDeviceExtension, IN PEVENT pEvent); VPAPI VOID -NTAPI +DDKAPI VideoPortReleaseBuffer( IN PVOID HwDeviceExtension, IN PVOID Buffer); VPAPI VOID -NTAPI +DDKAPI VideoPortReleaseCommonBuffer( IN PVOID HwDeviceExtension, IN PVP_DMA_ADAPTER VpDmaAdapter, @@ -1262,13 +1262,13 @@ VideoPortReleaseCommonBuffer( VPAPI VOID -NTAPI +DDKAPI VideoPortReleaseDeviceLock( IN PVOID HwDeviceExtension); VPAPI VOID -NTAPI +DDKAPI VideoPortReleaseSpinLock( IN PVOID HwDeviceExtension, IN PSPIN_LOCK SpinLock, @@ -1276,14 +1276,14 @@ VideoPortReleaseSpinLock( VPAPI VOID -NTAPI +DDKAPI VideoPortReleaseSpinLockFromDpcLevel( IN PVOID HwDeviceExtension, IN PSPIN_LOCK SpinLock); VPAPI BOOLEAN -NTAPI +DDKAPI VideoPortScanRom( PVOID HwDeviceExtension, PUCHAR RomBase, @@ -1292,7 +1292,7 @@ VideoPortScanRom( VPAPI ULONG -NTAPI +DDKAPI VideoPortSetBusData( IN PVOID HwDeviceExtension, IN BUS_DATA_TYPE BusDataType, @@ -1303,7 +1303,7 @@ VideoPortSetBusData( VPAPI VOID -NTAPI +DDKAPI VideoPortSetBytesUsed( IN PVOID HwDeviceExtension, IN OUT PDMA pDma, @@ -1311,7 +1311,7 @@ VideoPortSetBytesUsed( VPAPI VOID -NTAPI +DDKAPI VideoPortSetDmaContext( IN PVOID HwDeviceExtension, OUT PDMA pDma, @@ -1319,14 +1319,14 @@ VideoPortSetDmaContext( VPAPI LONG -NTAPI +DDKAPI VideoPortSetEvent( IN PVOID HwDeviceExtension, IN PEVENT pEvent); VPAPI VP_STATUS -NTAPI +DDKAPI VideoPortSetRegistryParameters( IN PVOID HwDeviceExtension, IN PWSTR ValueName, @@ -1335,7 +1335,7 @@ VideoPortSetRegistryParameters( VPAPI VP_STATUS -NTAPI +DDKAPI VideoPortSetTrappedEmulatorPorts( IN PVOID HwDeviceExtension, IN ULONG NumAccessRanges, @@ -1343,20 +1343,20 @@ VideoPortSetTrappedEmulatorPorts( VPAPI BOOLEAN -NTAPI +DDKAPI VideoPortSignalDmaComplete( IN PVOID HwDeviceExtension, IN PDMA pDmaHandle); VPAPI VOID -NTAPI +DDKAPI VideoPortStallExecution( IN ULONG Microseconds); VPAPI VP_STATUS -NTAPI +DDKAPI VideoPortStartDma( IN PVOID HwDeviceExtension, IN PVP_DMA_ADAPTER VpDmaAdapter, @@ -1369,13 +1369,13 @@ VideoPortStartDma( VPAPI VOID -NTAPI +DDKAPI VideoPortStartTimer( IN PVOID HwDeviceExtension); VPAPI VOID -NTAPI +DDKAPI VideoPortStopTimer( IN PVOID HwDeviceExtension); @@ -1388,7 +1388,7 @@ typedef enum VIDEO_SYNCHRONIZE_PRIORITY { VPAPI BOOLEAN -NTAPI +DDKAPI VideoPortSynchronizeExecution( IN PVOID HwDeviceExtension, IN VIDEO_SYNCHRONIZE_PRIORITY Priority, @@ -1397,21 +1397,21 @@ VideoPortSynchronizeExecution( VPAPI VOID -NTAPI +DDKAPI VideoPortUnLockBuffer( IN PVOID HwDeviceExtension, IN PVOID Mdl); VPAPI BOOLEAN -NTAPI +DDKAPI VideoPortUnlockPages( IN PVOID hwDeviceExtension, IN OUT PDMA pDma); VPAPI BOOLEAN -NTAPI +DDKAPI VideoPortUnmapDmaMemory( IN PVOID HwDeviceExtension, IN PVOID VirtualAddress, @@ -1420,7 +1420,7 @@ VideoPortUnmapDmaMemory( VPAPI VP_STATUS -NTAPI +DDKAPI VideoPortUnmapMemory( IN PVOID HwDeviceExtension, IN OUT PVOID VirtualAddress, @@ -1428,7 +1428,7 @@ VideoPortUnmapMemory( VPAPI VP_STATUS -NTAPI +DDKAPI VideoPortVerifyAccessRanges( IN PVOID HwDeviceExtension, IN ULONG NumAccessRanges, @@ -1436,7 +1436,7 @@ VideoPortVerifyAccessRanges( VPAPI VP_STATUS -NTAPI +DDKAPI VideoPortWaitForSingleObject( IN PVOID HwDeviceExtension, IN PVOID Object, @@ -1444,7 +1444,7 @@ VideoPortWaitForSingleObject( VPAPI VOID -NTAPI +DDKAPI VideoPortWritePortBufferUchar( IN PUCHAR Port, IN PUCHAR Buffer, @@ -1452,7 +1452,7 @@ VideoPortWritePortBufferUchar( VPAPI VOID -NTAPI +DDKAPI VideoPortWritePortBufferUlong( IN PULONG Port, IN PULONG Buffer, @@ -1460,7 +1460,7 @@ VideoPortWritePortBufferUlong( VPAPI VOID -NTAPI +DDKAPI VideoPortWritePortBufferUshort( IN PUSHORT Port, IN PUSHORT Buffer, @@ -1468,28 +1468,28 @@ VideoPortWritePortBufferUshort( VPAPI VOID -NTAPI +DDKAPI VideoPortWritePortUchar( IN PUCHAR Port, IN UCHAR Value); VPAPI VOID -NTAPI +DDKAPI VideoPortWritePortUlong( IN PULONG Port, IN ULONG Value); VPAPI VOID -NTAPI +DDKAPI VideoPortWritePortUshort( IN PUSHORT Port, IN USHORT Value); VPAPI VOID -NTAPI +DDKAPI VideoPortWriteRegisterBufferUchar( IN PUCHAR Register, IN PUCHAR Buffer, @@ -1497,7 +1497,7 @@ VideoPortWriteRegisterBufferUchar( VPAPI VOID -NTAPI +DDKAPI VideoPortWriteRegisterBufferUlong( IN PULONG Register, IN PULONG Buffer, @@ -1505,7 +1505,7 @@ VideoPortWriteRegisterBufferUlong( VPAPI VOID -NTAPI +DDKAPI VideoPortWriteRegisterBufferUshort( IN PUSHORT Register, IN PUSHORT Buffer, @@ -1513,35 +1513,35 @@ VideoPortWriteRegisterBufferUshort( VPAPI VOID -NTAPI +DDKAPI VideoPortWriteRegisterUchar( IN PUCHAR Register, IN UCHAR Value); VPAPI VOID -NTAPI +DDKAPI VideoPortWriteRegisterUlong( IN PULONG Register, IN ULONG Value); VPAPI VOID -NTAPI +DDKAPI VideoPortWriteRegisterUshort( IN PUSHORT Register, IN USHORT Value); VPAPI VOID -NTAPI +DDKAPI VideoPortZeroDeviceMemory( IN PVOID Destination, IN ULONG Length); VPAPI VOID -NTAPI +DDKAPI VideoPortZeroMemory( IN PVOID Destination, IN ULONG Length); diff --git a/reactos/include/ddk/videoagp.h b/reactos/include/ddk/videoagp.h index 0b6d36d4126..4a647ae6756 100644 --- a/reactos/include/ddk/videoagp.h +++ b/reactos/include/ddk/videoagp.h @@ -41,59 +41,59 @@ typedef enum _VIDEO_PORT_CACHE_TYPE { } VIDEO_PORT_CACHE_TYPE; typedef BOOLEAN -(NTAPI *PAGP_COMMIT_PHYSICAL)( +(DDKAPI *PAGP_COMMIT_PHYSICAL)( IN PVOID HwDeviceExtension, IN PVOID PhysicalReserveContext, IN ULONG Pages, IN ULONG Offset); typedef PVOID -(NTAPI *PAGP_COMMIT_VIRTUAL)( +(DDKAPI *PAGP_COMMIT_VIRTUAL)( IN PVOID HwDeviceExtension, IN PVOID VirtualReserveContext, IN ULONG Pages, IN ULONG Offset); typedef VOID -(NTAPI *PAGP_FREE_PHYSICAL)( +(DDKAPI *PAGP_FREE_PHYSICAL)( IN PVOID HwDeviceExtension, IN PVOID PhysicalReserveContext, IN ULONG Pages, IN ULONG Offset); typedef VOID -(NTAPI *PAGP_FREE_VIRTUAL)( +(DDKAPI *PAGP_FREE_VIRTUAL)( IN PVOID HwDeviceExtension, IN PVOID VirtualReserveContext, IN ULONG Pages, IN ULONG Offset); typedef VOID -(NTAPI *PAGP_RELEASE_PHYSICAL)( +(DDKAPI *PAGP_RELEASE_PHYSICAL)( IN PVOID HwDeviceExtension, IN PVOID PhysicalReserveContext); typedef VOID -(NTAPI *PAGP_RELEASE_VIRTUAL)( +(DDKAPI *PAGP_RELEASE_VIRTUAL)( IN PVOID HwDeviceExtension, IN PVOID VirtualReserveContext); typedef PHYSICAL_ADDRESS -(NTAPI *PAGP_RESERVE_PHYSICAL)( +(DDKAPI *PAGP_RESERVE_PHYSICAL)( IN PVOID HwDeviceExtension, IN ULONG Pages, IN VIDEO_PORT_CACHE_TYPE Caching, OUT PVOID *PhysicalReserveContext); typedef PVOID -(NTAPI *PAGP_RESERVE_VIRTUAL)( +(DDKAPI *PAGP_RESERVE_VIRTUAL)( IN PVOID HwDeviceExtension, IN HANDLE ProcessHandle, IN PVOID PhysicalReserveContext, OUT PVOID *VirtualReserveContext); typedef BOOLEAN -(NTAPI *PAGP_SET_RATE)( +(DDKAPI *PAGP_SET_RATE)( IN PVOID HwDeviceExtension, IN ULONG AgpRate); @@ -111,7 +111,7 @@ typedef struct _VIDEO_PORT_AGP_SERVICES { VPAPI BOOLEAN -NTAPI +DDKAPI VideoPortGetAgpServices( IN PVOID HwDeviceExtension, IN PVIDEO_PORT_AGP_SERVICES AgpServices); diff --git a/reactos/include/ddk/wdm.h b/reactos/include/ddk/wdm.h index 2742d758ed8..7e97ea08c1d 100644 --- a/reactos/include/ddk/wdm.h +++ b/reactos/include/ddk/wdm.h @@ -38,25 +38,10 @@ #include #include #include -#include #ifndef GUID_DEFINED #include -#endif - -#ifdef _MAC -#ifndef _INC_STRING -#include -#endif /* _INC_STRING */ -#else -#include -#endif /* _MAC */ - -#ifndef _KTMTYPES_ -typedef GUID UOW, *PUOW; -#endif - -typedef GUID *PGUID; +#endif /* GUID_DEFINED */ #if (NTDDI_VERSION >= NTDDI_WINXP) #include @@ -106,12 +91,6 @@ extern "C" { #if defined(_MSC_VER) -/* Disable some warnings */ -#pragma warning(disable:4115) /* Named type definition in parentheses */ -#pragma warning(disable:4201) /* Nameless unions and structs */ -#pragma warning(disable:4214) /* Bit fields of other types than int */ -#pragma warning(disable:4820) /* Padding added, due to alignemnet requirement */ - /* Indicate if #pragma alloc_text() is supported */ #if defined(_M_IX86) || defined(_M_AMD64) || defined(_M_IA64) #define ALLOC_PRAGMA 1 @@ -144,51 +123,17 @@ struct _IO_RESOURCE_DESCRIPTOR; typedef struct _OBJECT_TYPE *POBJECT_TYPE; typedef struct _HAL_DISPATCH_TABLE *PHAL_DISPATCH_TABLE; typedef struct _HAL_PRIVATE_DISPATCH_TABLE *PHAL_PRIVATE_DISPATCH_TABLE; +typedef struct _DEVICE_HANDLER_OBJECT *PDEVICE_HANDLER_OBJECT; +typedef struct _ADAPTER_OBJECT *PADAPTER_OBJECT; typedef struct _CALLBACK_OBJECT *PCALLBACK_OBJECT; -typedef struct _EPROCESS *PEPROCESS; typedef struct _ETHREAD *PETHREAD; +typedef struct _EPROCESS *PEPROCESS; typedef struct _IO_TIMER *PIO_TIMER; typedef struct _KINTERRUPT *PKINTERRUPT; typedef struct _KPROCESS *PKPROCESS; typedef struct _KTHREAD *PKTHREAD, *PRKTHREAD; typedef struct _CONTEXT *PCONTEXT; -#if defined(USE_DMA_MACROS) && !defined(_NTHAL_) && ( defined(_NTDDK_) || defined(_NTDRIVER_) || defined(_NTOSP_)) -typedef struct _DMA_ADAPTER *PADAPTER_OBJECT; -#elif defined(_WDM_INCLUDED_) -typedef struct _DMA_ADAPTER *PADAPTER_OBJECT; -#else -typedef struct _ADAPTER_OBJECT *PADAPTER_OBJECT; -#endif - -#ifndef DEFINE_GUIDEX -#ifdef _MSC_VER -#define DEFINE_GUIDEX(name) EXTERN_C const CDECL GUID name -#else -#define DEFINE_GUIDEX(name) EXTERN_C const GUID name -#endif -#endif /* DEFINE_GUIDEX */ - -#ifndef STATICGUIDOF -#define STATICGUIDOF(guid) STATIC_##guid -#endif - -/* GUID Comparison */ -#ifndef __IID_ALIGNED__ -#define __IID_ALIGNED__ -#ifdef __cplusplus -inline int IsEqualGUIDAligned(REFGUID guid1, REFGUID guid2) -{ - return ( (*(PLONGLONG)(&guid1) == *(PLONGLONG)(&guid2)) && - (*((PLONGLONG)(&guid1) + 1) == *((PLONGLONG)(&guid2) + 1)) ); -} -#else -#define IsEqualGUIDAligned(guid1, guid2) \ - ( (*(PLONGLONG)(guid1) == *(PLONGLONG)(guid2)) && \ - (*((PLONGLONG)(guid1) + 1) == *((PLONGLONG)(guid2) + 1)) ) -#endif /* __cplusplus */ -#endif /* !__IID_ALIGNED__ */ - /****************************************************************************** * INTERLOCKED Functions * @@ -200,44 +145,42 @@ inline int IsEqualGUIDAligned(REFGUID guid1, REFGUID guid2) #if defined(__GNUC__) static __inline__ BOOLEAN -InterlockedBitTestAndSet( - IN LONG volatile *Base, - IN LONG Bit) +InterlockedBitTestAndSet(IN LONG volatile *Base, + IN LONG Bit) { #if defined(_M_IX86) - LONG OldBit; - __asm__ __volatile__("lock " - "btsl %2,%1\n\t" - "sbbl %0,%0\n\t" - :"=r" (OldBit),"+m" (*Base) - :"Ir" (Bit) - : "memory"); - return OldBit; + LONG OldBit; + __asm__ __volatile__("lock " + "btsl %2,%1\n\t" + "sbbl %0,%0\n\t" + :"=r" (OldBit),"+m" (*Base) + :"Ir" (Bit) + : "memory"); + return OldBit; #else - return (_InterlockedOr(Base, 1 << Bit) >> Bit) & 1; + return (_InterlockedOr(Base, 1 << Bit) >> Bit) & 1; #endif } static __inline__ BOOLEAN -InterlockedBitTestAndReset( - IN LONG volatile *Base, - IN LONG Bit) +InterlockedBitTestAndReset(IN LONG volatile *Base, + IN LONG Bit) { #if defined(_M_IX86) - LONG OldBit; - __asm__ __volatile__("lock " - "btrl %2,%1\n\t" - "sbbl %0,%0\n\t" - :"=r" (OldBit),"+m" (*Base) - :"Ir" (Bit) - : "memory"); - return OldBit; + LONG OldBit; + __asm__ __volatile__("lock " + "btrl %2,%1\n\t" + "sbbl %0,%0\n\t" + :"=r" (OldBit),"+m" (*Base) + :"Ir" (Bit) + : "memory"); + return OldBit; #else - return (_InterlockedAnd(Base, ~(1 << Bit)) >> Bit) & 1; + return (_InterlockedAnd(Base, ~(1 << Bit)) >> Bit) & 1; #endif } -#endif /* defined(__GNUC__) */ +#endif #define BitScanForward _BitScanForward #define BitScanReverse _BitScanReverse @@ -249,10 +192,6 @@ InterlockedBitTestAndReset( #define InterlockedBitTestAndReset _interlockedbittestandreset #ifdef _M_AMD64 -#define BitTest64 _bittest64 -#define BitTestAndComplement64 _bittestandcomplement64 -#define BitTestAndSet64 _bittestandset64 -#define BitTestAndReset64 _bittestandreset64 #define InterlockedBitTestAndSet64 _interlockedbittestandset64 #define InterlockedBitTestAndReset64 _interlockedbittestandreset64 #endif @@ -279,8 +218,8 @@ LONG FASTCALL InterlockedCompareExchange( IN OUT LONG volatile *Destination, - IN LONG Exchange, - IN LONG Comparand); + IN LONG Exchange, + IN LONG Comparand); NTKERNELAPI LONG @@ -296,7 +235,7 @@ InterlockedExchangeAdd( IN OUT LONG volatile *Addend, IN LONG Value); -#else /* !defined(NO_INTERLOCKED_INTRINSICS) */ +#else // !defined(NO_INTERLOCKED_INTRINSICS) #define InterlockedExchange _InterlockedExchange #define InterlockedIncrement _InterlockedIncrement @@ -307,9 +246,9 @@ InterlockedExchangeAdd( #define InterlockedAnd _InterlockedAnd #define InterlockedXor _InterlockedXor -#endif /* !defined(NO_INTERLOCKED_INTRINSICS) */ +#endif // !defined(NO_INTERLOCKED_INTRINSICS) -#endif /* defined (_X86_) */ +#endif // defined (_X86_) #if !defined (_WIN64) /* @@ -372,10 +311,10 @@ InterlockedExchangeAdd( FORCEINLINE LONG64 InterlockedAdd64( - IN OUT LONG64 volatile *Addend, - IN LONG64 Value) + IN OUT LONG64 volatile *Addend, + IN LONG64 Value) { - return InterlockedExchangeAdd64(Addend, Value) + Value; + return InterlockedExchangeAdd64(Addend, Value) + Value; } //#endif #endif @@ -411,43 +350,43 @@ InterlockedAdd64( #define HASH_STRING_ALGORITHM_INVALID 0xffffffff typedef struct _RTL_BITMAP { - ULONG SizeOfBitMap; - PULONG Buffer; + ULONG SizeOfBitMap; + PULONG Buffer; } RTL_BITMAP, *PRTL_BITMAP; typedef struct _RTL_BITMAP_RUN { - ULONG StartingIndex; - ULONG NumberOfBits; + ULONG StartingIndex; + ULONG NumberOfBits; } RTL_BITMAP_RUN, *PRTL_BITMAP_RUN; typedef NTSTATUS -(NTAPI *PRTL_QUERY_REGISTRY_ROUTINE)( - IN PWSTR ValueName, - IN ULONG ValueType, - IN PVOID ValueData, - IN ULONG ValueLength, - IN PVOID Context, - IN PVOID EntryContext); +(DDKAPI *PRTL_QUERY_REGISTRY_ROUTINE)( + IN PWSTR ValueName, + IN ULONG ValueType, + IN PVOID ValueData, + IN ULONG ValueLength, + IN PVOID Context, + IN PVOID EntryContext); typedef struct _RTL_QUERY_REGISTRY_TABLE { - PRTL_QUERY_REGISTRY_ROUTINE QueryRoutine; - ULONG Flags; - PCWSTR Name; - PVOID EntryContext; - ULONG DefaultType; - PVOID DefaultData; - ULONG DefaultLength; + PRTL_QUERY_REGISTRY_ROUTINE QueryRoutine; + ULONG Flags; + PCWSTR Name; + PVOID EntryContext; + ULONG DefaultType; + PVOID DefaultData; + ULONG DefaultLength; } RTL_QUERY_REGISTRY_TABLE, *PRTL_QUERY_REGISTRY_TABLE; typedef struct _TIME_FIELDS { - CSHORT Year; - CSHORT Month; - CSHORT Day; - CSHORT Hour; - CSHORT Minute; - CSHORT Second; - CSHORT Milliseconds; - CSHORT Weekday; + CSHORT Year; + CSHORT Month; + CSHORT Day; + CSHORT Hour; + CSHORT Minute; + CSHORT Second; + CSHORT Milliseconds; + CSHORT Weekday; } TIME_FIELDS, *PTIME_FIELDS; /* Slist Header */ @@ -455,101 +394,60 @@ typedef struct _TIME_FIELDS { #define _SLIST_HEADER_ #if defined(_WIN64) - +typedef struct DECLSPEC_ALIGN(16) _SLIST_ENTRY *PSLIST_ENTRY; typedef struct DECLSPEC_ALIGN(16) _SLIST_ENTRY { - struct _SLIST_ENTRY *Next; -} SLIST_ENTRY, *PSLIST_ENTRY; - -typedef struct _SLIST_ENTRY32 { - ULONG Next; -} SLIST_ENTRY32, *PSLIST_ENTRY32; - + PSLIST_ENTRY Next; +} SLIST_ENTRY; typedef union DECLSPEC_ALIGN(16) _SLIST_HEADER { - struct { - ULONGLONG Alignment; - ULONGLONG Region; - } DUMMYSTRUCTNAME; - struct { - ULONGLONG Depth:16; - ULONGLONG Sequence:9; - ULONGLONG NextEntry:39; - ULONGLONG HeaderType:1; - ULONGLONG Init:1; - ULONGLONG Reserved:59; - ULONGLONG Region:3; - } Header8; - struct { - ULONGLONG Depth:16; - ULONGLONG Sequence:48; - ULONGLONG HeaderType:1; - ULONGLONG Init:1; - ULONGLONG Reserved:2; - ULONGLONG NextEntry:60; - } Header16; - struct { - ULONGLONG Depth:16; - ULONGLONG Sequence:48; - ULONGLONG HeaderType:1; - ULONGLONG Reserved:3; - ULONGLONG NextEntry:60; - } HeaderX64; + struct { + ULONGLONG Alignment; + ULONGLONG Region; + } DUMMYSTRUCTNAME; + struct { + ULONGLONG Depth:16; + ULONGLONG Sequence:9; + ULONGLONG NextEntry:39; + ULONGLONG HeaderType:1; + ULONGLONG Init:1; + ULONGLONG Reserved:59; + ULONGLONG Region:3; + } Header8; + struct { + ULONGLONG Depth:16; + ULONGLONG Sequence:48; + ULONGLONG HeaderType:1; + ULONGLONG Init:1; + ULONGLONG Reserved:2; + ULONGLONG NextEntry:60; + } Header16; } SLIST_HEADER, *PSLIST_HEADER; - -typedef union _SLIST_HEADER32 { - ULONGLONG Alignment; - struct { - SLIST_ENTRY32 Next; - USHORT Depth; - USHORT Sequence; - } DUMMYSTRUCTNAME; -} SLIST_HEADER32, *PSLIST_HEADER32; - #else - #define SLIST_ENTRY SINGLE_LIST_ENTRY #define _SLIST_ENTRY _SINGLE_LIST_ENTRY #define PSLIST_ENTRY PSINGLE_LIST_ENTRY - -typedef SLIST_ENTRY SLIST_ENTRY32, *PSLIST_ENTRY32; - typedef union _SLIST_HEADER { - ULONGLONG Alignment; - struct { - SLIST_ENTRY Next; - USHORT Depth; - USHORT Sequence; - } DUMMYSTRUCTNAME; + ULONGLONG Alignment; + struct { + SLIST_ENTRY Next; + USHORT Depth; + USHORT Sequence; + } DUMMYSTRUCTNAME; } SLIST_HEADER, *PSLIST_HEADER; - -typedef SLIST_HEADER SLIST_HEADER32, *PSLIST_HEADER32; - -#endif /* defined(_WIN64) */ +#endif #endif /* _SLIST_HEADER_ */ -/* MS definition is broken! */ -extern BOOLEAN NTSYSAPI NlsMbCodePageTag; -extern BOOLEAN NTSYSAPI NlsMbOemCodePageTag; + +/* HACK HACK HACK - GCC (or perhaps LD) is messing this up */ +#if defined(_NTSYSTEM_) || defined(__GNUC__) #define NLS_MB_CODE_PAGE_TAG NlsMbCodePageTag #define NLS_MB_OEM_CODE_PAGE_TAG NlsMbOemCodePageTag - -#define SHORT_LEAST_SIGNIFICANT_BIT 0 -#define SHORT_MOST_SIGNIFICANT_BIT 1 - -#define LONG_LEAST_SIGNIFICANT_BIT 0 -#define LONG_3RD_MOST_SIGNIFICANT_BIT 1 -#define LONG_2ND_MOST_SIGNIFICANT_BIT 2 -#define LONG_MOST_SIGNIFICANT_BIT 3 - -#define RTLVERLIB_DDI(x) Wdmlib##x - -typedef BOOLEAN -(*PFN_RTL_IS_NTDDI_VERSION_AVAILABLE)( - IN ULONG Version); - -typedef BOOLEAN -(*PFN_RTL_IS_SERVICE_PACK_VERSION_INSTALLED)( - IN ULONG Version); +#else +#define NLS_MB_CODE_PAGE_TAG (*NlsMbCodePageTag) +#define NLS_MB_OEM_CODE_PAGE_TAG (*NlsMbOemCodePageTag) +#endif /* _NT_SYSTEM */ +extern BOOLEAN NTSYSAPI NLS_MB_CODE_PAGE_TAG; +extern BOOLEAN NTSYSAPI NLS_MB_OEM_CODE_PAGE_TAG; /****************************************************************************** @@ -560,139 +458,39 @@ typedef UCHAR KIRQL, *PKIRQL; typedef CCHAR KPROCESSOR_MODE; typedef LONG KPRIORITY; +typedef ULONG EXECUTION_STATE; + typedef enum _MODE { KernelMode, UserMode, MaximumMode } MODE; -#define CACHE_FULLY_ASSOCIATIVE 0xFF -#define MAXIMUM_SUSPEND_COUNT MAXCHAR - -#define EVENT_QUERY_STATE (0x0001) -#define EVENT_MODIFY_STATE (0x0002) -#define EVENT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x3) - -#define LTP_PC_SMT 0x1 - -#if (NTDDI_VERSION < NTDDI_WIN7) || defined(_X86_) || !defined(NT_PROCESSOR_GROUPS) -#define SINGLE_GROUP_LEGACY_API 1 -#endif - -#define SEMAPHORE_QUERY_STATE (0x0001) -#define SEMAPHORE_MODIFY_STATE (0x0002) -#define SEMAPHORE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x3) - -typedef enum _LOGICAL_PROCESSOR_RELATIONSHIP { - RelationProcessorCore, - RelationNumaNode, - RelationCache, - RelationProcessorPackage, - RelationGroup, - RelationAll = 0xffff -} LOGICAL_PROCESSOR_RELATIONSHIP; - -typedef enum _PROCESSOR_CACHE_TYPE { - CacheUnified, - CacheInstruction, - CacheData, - CacheTrace -} PROCESSOR_CACHE_TYPE; - -typedef struct _CACHE_DESCRIPTOR { - UCHAR Level; - UCHAR Associativity; - USHORT LineSize; - ULONG Size; - PROCESSOR_CACHE_TYPE Type; -} CACHE_DESCRIPTOR, *PCACHE_DESCRIPTOR; - -typedef struct _SYSTEM_LOGICAL_PROCESSOR_INFORMATION { - ULONG_PTR ProcessorMask; - LOGICAL_PROCESSOR_RELATIONSHIP Relationship; - union { - struct { - UCHAR Flags; - } ProcessorCore; - struct { - ULONG NodeNumber; - } NumaNode; - CACHE_DESCRIPTOR Cache; - ULONGLONG Reserved[2]; - } DUMMYUNIONNAME; -} SYSTEM_LOGICAL_PROCESSOR_INFORMATION, *PSYSTEM_LOGICAL_PROCESSOR_INFORMATION; - -typedef struct _PROCESSOR_RELATIONSHIP { - UCHAR Flags; - UCHAR Reserved[21]; - USHORT GroupCount; - GROUP_AFFINITY GroupMask[ANYSIZE_ARRAY]; -} PROCESSOR_RELATIONSHIP, *PPROCESSOR_RELATIONSHIP; - -typedef struct _NUMA_NODE_RELATIONSHIP { - ULONG NodeNumber; - UCHAR Reserved[20]; - GROUP_AFFINITY GroupMask; -} NUMA_NODE_RELATIONSHIP, *PNUMA_NODE_RELATIONSHIP; - -typedef struct _CACHE_RELATIONSHIP { - UCHAR Level; - UCHAR Associativity; - USHORT LineSize; - ULONG CacheSize; - PROCESSOR_CACHE_TYPE Type; - UCHAR Reserved[20]; - GROUP_AFFINITY GroupMask; -} CACHE_RELATIONSHIP, *PCACHE_RELATIONSHIP; - -typedef struct _PROCESSOR_GROUP_INFO { - UCHAR MaximumProcessorCount; - UCHAR ActiveProcessorCount; - UCHAR Reserved[38]; - KAFFINITY ActiveProcessorMask; -} PROCESSOR_GROUP_INFO, *PPROCESSOR_GROUP_INFO; - -typedef struct _GROUP_RELATIONSHIP { - USHORT MaximumGroupCount; - USHORT ActiveGroupCount; - UCHAR Reserved[20]; - PROCESSOR_GROUP_INFO GroupInfo[ANYSIZE_ARRAY]; -} GROUP_RELATIONSHIP, *PGROUP_RELATIONSHIP; - -typedef struct _SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX { - LOGICAL_PROCESSOR_RELATIONSHIP Relationship; - ULONG Size; - union { - PROCESSOR_RELATIONSHIP Processor; - NUMA_NODE_RELATIONSHIP NumaNode; - CACHE_RELATIONSHIP Cache; - GROUP_RELATIONSHIP Group; - } DUMMYUNIONNAME; -} SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX, *PSYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX;; - /* Processor features */ -#define PF_FLOATING_POINT_PRECISION_ERRATA 0 -#define PF_FLOATING_POINT_EMULATED 1 -#define PF_COMPARE_EXCHANGE_DOUBLE 2 -#define PF_MMX_INSTRUCTIONS_AVAILABLE 3 -#define PF_PPC_MOVEMEM_64BIT_OK 4 -#define PF_ALPHA_BYTE_INSTRUCTIONS 5 -#define PF_XMMI_INSTRUCTIONS_AVAILABLE 6 -#define PF_3DNOW_INSTRUCTIONS_AVAILABLE 7 -#define PF_RDTSC_INSTRUCTION_AVAILABLE 8 -#define PF_PAE_ENABLED 9 -#define PF_XMMI64_INSTRUCTIONS_AVAILABLE 10 -#define PF_SSE_DAZ_MODE_AVAILABLE 11 -#define PF_NX_ENABLED 12 -#define PF_SSE3_INSTRUCTIONS_AVAILABLE 13 -#define PF_COMPARE_EXCHANGE128 14 -#define PF_COMPARE64_EXCHANGE128 15 -#define PF_CHANNELS_ENABLED 16 -#define PF_XSAVE_ENABLED 17 +#define PF_FLOATING_POINT_PRECISION_ERRATA 0 +#define PF_FLOATING_POINT_EMULATED 1 +#define PF_COMPARE_EXCHANGE_DOUBLE 2 +#define PF_MMX_INSTRUCTIONS_AVAILABLE 3 +#define PF_PPC_MOVEMEM_64BIT_OK 4 +#define PF_ALPHA_BYTE_INSTRUCTIONS 5 +#define PF_XMMI_INSTRUCTIONS_AVAILABLE 6 +#define PF_3DNOW_INSTRUCTIONS_AVAILABLE 7 +#define PF_RDTSC_INSTRUCTION_AVAILABLE 8 +#define PF_PAE_ENABLED 9 +#define PF_XMMI64_INSTRUCTIONS_AVAILABLE 10 +#define PF_SSE_DAZ_MODE_AVAILABLE 11 +#define PF_NX_ENABLED 12 +#define PF_SSE3_INSTRUCTIONS_AVAILABLE 13 +#define PF_COMPARE_EXCHANGE128 14 +#define PF_COMPARE64_EXCHANGE128 15 +#define PF_CHANNELS_ENABLED 16 +#define PF_XSAVE_ENABLED 17 +#define MAXIMUM_SUPPORTED_EXTENSION 512 #define MAXIMUM_WAIT_OBJECTS 64 -#define ASSERT_APC(Object) NT_ASSERT((Object)->Type == ApcObject) +#define ASSERT_APC(Object) \ + ASSERT((Object)->Type == ApcObject) #define ASSERT_DPC(Object) \ ASSERT(((Object)->Type == 0) || \ @@ -700,25 +498,25 @@ typedef struct _SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX { ((Object)->Type == ThreadedDpcObject)) #define ASSERT_GATE(object) \ - NT_ASSERT((((object)->Header.Type & KOBJECT_TYPE_MASK) == GateObject) || \ - (((object)->Header.Type & KOBJECT_TYPE_MASK) == EventSynchronizationObject)) + ASSERT((((object)->Header.Type & KOBJECT_TYPE_MASK) == GateObject) || \ + (((object)->Header.Type & KOBJECT_TYPE_MASK) == EventSynchronizationObject)) #define ASSERT_DEVICE_QUEUE(Object) \ - NT_ASSERT((Object)->Type == DeviceQueueObject) + ASSERT((Object)->Type == DeviceQueueObject) #define ASSERT_TIMER(E) \ - NT_ASSERT(((E)->Header.Type == TimerNotificationObject) || \ - ((E)->Header.Type == TimerSynchronizationObject)) + ASSERT(((E)->Header.Type == TimerNotificationObject) || \ + ((E)->Header.Type == TimerSynchronizationObject)) #define ASSERT_MUTANT(E) \ - NT_ASSERT((E)->Header.Type == MutantObject) + ASSERT((E)->Header.Type == MutantObject) #define ASSERT_SEMAPHORE(E) \ - NT_ASSERT((E)->Header.Type == SemaphoreObject) + ASSERT((E)->Header.Type == SemaphoreObject) #define ASSERT_EVENT(E) \ - NT_ASSERT(((E)->Header.Type == NotificationEvent) || \ - ((E)->Header.Type == SynchronizationEvent)) + ASSERT(((E)->Header.Type == NotificationEvent) || \ + ((E)->Header.Type == SynchronizationEvent)) #define DPC_NORMAL 0 #define DPC_THREADED 1 @@ -728,9 +526,6 @@ typedef struct _SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX { #define GM_LOCK_WAITER_WOKEN 0x2 #define GM_LOCK_WAITER_INC 0x4 -#define LOCK_QUEUE_WAIT_BIT 0 -#define LOCK_QUEUE_OWNER_BIT 1 - #define LOCK_QUEUE_WAIT 1 #define LOCK_QUEUE_OWNER 2 #define LOCK_QUEUE_TIMER_LOCK_SHIFT 4 @@ -754,59 +549,43 @@ typedef struct _SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX { #define MAXIMUM_PROCESSORS MAXIMUM_PROC_PER_GROUP /* Exception Records */ -#define EXCEPTION_NONCONTINUABLE 1 +#define EXCEPTION_NONCONTINUABLE 1 #define EXCEPTION_MAXIMUM_PARAMETERS 15 -#define EXCEPTION_DIVIDED_BY_ZERO 0 -#define EXCEPTION_DEBUG 1 -#define EXCEPTION_NMI 2 -#define EXCEPTION_INT3 3 -#define EXCEPTION_BOUND_CHECK 5 -#define EXCEPTION_INVALID_OPCODE 6 -#define EXCEPTION_NPX_NOT_AVAILABLE 7 -#define EXCEPTION_DOUBLE_FAULT 8 -#define EXCEPTION_NPX_OVERRUN 9 -#define EXCEPTION_INVALID_TSS 0x0A -#define EXCEPTION_SEGMENT_NOT_PRESENT 0x0B -#define EXCEPTION_STACK_FAULT 0x0C -#define EXCEPTION_GP_FAULT 0x0D -#define EXCEPTION_RESERVED_TRAP 0x0F -#define EXCEPTION_NPX_ERROR 0x010 -#define EXCEPTION_ALIGNMENT_CHECK 0x011 - typedef struct _EXCEPTION_RECORD { - NTSTATUS ExceptionCode; - ULONG ExceptionFlags; - struct _EXCEPTION_RECORD *ExceptionRecord; - PVOID ExceptionAddress; - ULONG NumberParameters; - ULONG_PTR ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS]; + NTSTATUS ExceptionCode; + ULONG ExceptionFlags; + struct _EXCEPTION_RECORD *ExceptionRecord; + PVOID ExceptionAddress; + ULONG NumberParameters; + ULONG_PTR ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS]; } EXCEPTION_RECORD, *PEXCEPTION_RECORD; typedef struct _EXCEPTION_RECORD32 { - NTSTATUS ExceptionCode; - ULONG ExceptionFlags; - ULONG ExceptionRecord; - ULONG ExceptionAddress; - ULONG NumberParameters; - ULONG ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS]; + NTSTATUS ExceptionCode; + ULONG ExceptionFlags; + ULONG ExceptionRecord; + ULONG ExceptionAddress; + ULONG NumberParameters; + ULONG ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS]; } EXCEPTION_RECORD32, *PEXCEPTION_RECORD32; typedef struct _EXCEPTION_RECORD64 { - NTSTATUS ExceptionCode; - ULONG ExceptionFlags; - ULONG64 ExceptionRecord; - ULONG64 ExceptionAddress; - ULONG NumberParameters; - ULONG __unusedAlignment; - ULONG64 ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS]; + NTSTATUS ExceptionCode; + ULONG ExceptionFlags; + ULONG64 ExceptionRecord; + ULONG64 ExceptionAddress; + ULONG NumberParameters; + ULONG __unusedAlignment; + ULONG64 ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS]; } EXCEPTION_RECORD64, *PEXCEPTION_RECORD64; typedef struct _EXCEPTION_POINTERS { - PEXCEPTION_RECORD ExceptionRecord; - PCONTEXT ContextRecord; + PEXCEPTION_RECORD ExceptionRecord; + PCONTEXT ContextRecord; } EXCEPTION_POINTERS, *PEXCEPTION_POINTERS; + typedef enum _KBUGCHECK_CALLBACK_REASON { KbCallbackInvalid, KbCallbackReserved1, @@ -818,56 +597,19 @@ typedef enum _KBUGCHECK_CALLBACK_REASON { struct _KBUGCHECK_REASON_CALLBACK_RECORD; typedef VOID -(NTAPI KBUGCHECK_REASON_CALLBACK_ROUTINE)( - IN KBUGCHECK_CALLBACK_REASON Reason, - IN struct _KBUGCHECK_REASON_CALLBACK_RECORD *Record, - IN OUT PVOID ReasonSpecificData, - IN ULONG ReasonSpecificDataLength); -typedef KBUGCHECK_REASON_CALLBACK_ROUTINE *PKBUGCHECK_REASON_CALLBACK_ROUTINE; - -typedef struct _KBUGCHECK_ADD_PAGES { - IN OUT PVOID Context; - IN OUT ULONG Flags; - IN ULONG BugCheckCode; - OUT ULONG_PTR Address; - OUT ULONG_PTR Count; -} KBUGCHECK_ADD_PAGES, *PKBUGCHECK_ADD_PAGES; - -typedef struct _KBUGCHECK_SECONDARY_DUMP_DATA { - IN PVOID InBuffer; - IN ULONG InBufferLength; - IN ULONG MaximumAllowed; - OUT GUID Guid; - OUT PVOID OutBuffer; - OUT ULONG OutBufferLength; -} KBUGCHECK_SECONDARY_DUMP_DATA, *PKBUGCHECK_SECONDARY_DUMP_DATA; - -typedef enum _KBUGCHECK_DUMP_IO_TYPE { - KbDumpIoInvalid, - KbDumpIoHeader, - KbDumpIoBody, - KbDumpIoSecondaryData, - KbDumpIoComplete -} KBUGCHECK_DUMP_IO_TYPE; - -typedef struct _KBUGCHECK_DUMP_IO { - IN ULONG64 Offset; - IN PVOID Buffer; - IN ULONG BufferLength; - IN KBUGCHECK_DUMP_IO_TYPE Type; -} KBUGCHECK_DUMP_IO, *PKBUGCHECK_DUMP_IO; - -#define KB_ADD_PAGES_FLAG_VIRTUAL_ADDRESS 0x00000001UL -#define KB_ADD_PAGES_FLAG_PHYSICAL_ADDRESS 0x00000002UL -#define KB_ADD_PAGES_FLAG_ADDITIONAL_RANGES_EXIST 0x80000000UL +(DDKAPI *PKBUGCHECK_REASON_CALLBACK_ROUTINE)( + IN KBUGCHECK_CALLBACK_REASON Reason, + IN struct _KBUGCHECK_REASON_CALLBACK_RECORD *Record, + IN OUT PVOID ReasonSpecificData, + IN ULONG ReasonSpecificDataLength); typedef struct _KBUGCHECK_REASON_CALLBACK_RECORD { - LIST_ENTRY Entry; - PKBUGCHECK_REASON_CALLBACK_ROUTINE CallbackRoutine; - PUCHAR Component; - ULONG_PTR Checksum; - KBUGCHECK_CALLBACK_REASON Reason; - UCHAR State; + LIST_ENTRY Entry; + PKBUGCHECK_REASON_CALLBACK_ROUTINE CallbackRoutine; + PUCHAR Component; + ULONG_PTR Checksum; + KBUGCHECK_CALLBACK_REASON Reason; + UCHAR State; } KBUGCHECK_REASON_CALLBACK_RECORD, *PKBUGCHECK_REASON_CALLBACK_RECORD; typedef enum _KBUGCHECK_BUFFER_DUMP_STATE { @@ -879,52 +621,39 @@ typedef enum _KBUGCHECK_BUFFER_DUMP_STATE { } KBUGCHECK_BUFFER_DUMP_STATE; typedef VOID -(NTAPI KBUGCHECK_CALLBACK_ROUTINE)( - IN PVOID Buffer, - IN ULONG Length); -typedef KBUGCHECK_CALLBACK_ROUTINE *PKBUGCHECK_CALLBACK_ROUTINE; +(DDKAPI *PKBUGCHECK_CALLBACK_ROUTINE)( + IN PVOID Buffer, + IN ULONG Length); typedef struct _KBUGCHECK_CALLBACK_RECORD { - LIST_ENTRY Entry; - PKBUGCHECK_CALLBACK_ROUTINE CallbackRoutine; - PVOID Buffer; - ULONG Length; - PUCHAR Component; - ULONG_PTR Checksum; - UCHAR State; + LIST_ENTRY Entry; + PKBUGCHECK_CALLBACK_ROUTINE CallbackRoutine; + PVOID Buffer; + ULONG Length; + PUCHAR Component; + ULONG_PTR Checksum; + UCHAR State; } KBUGCHECK_CALLBACK_RECORD, *PKBUGCHECK_CALLBACK_RECORD; typedef BOOLEAN -(NTAPI NMI_CALLBACK)( - IN PVOID Context, - IN BOOLEAN Handled); -typedef NMI_CALLBACK *PNMI_CALLBACK; - -typedef enum _KE_PROCESSOR_CHANGE_NOTIFY_STATE { - KeProcessorAddStartNotify = 0, - KeProcessorAddCompleteNotify, - KeProcessorAddFailureNotify -} KE_PROCESSOR_CHANGE_NOTIFY_STATE; - -typedef struct _KE_PROCESSOR_CHANGE_NOTIFY_CONTEXT { - KE_PROCESSOR_CHANGE_NOTIFY_STATE State; - ULONG NtNumber; - NTSTATUS Status; -#if (NTDDI_VERSION >= NTDDI_WIN7) - PROCESSOR_NUMBER ProcNumber; -#endif -} KE_PROCESSOR_CHANGE_NOTIFY_CONTEXT, *PKE_PROCESSOR_CHANGE_NOTIFY_CONTEXT; - -typedef VOID -(NTAPI PROCESSOR_CALLBACK_FUNCTION)( - IN PVOID CallbackContext, - IN PKE_PROCESSOR_CHANGE_NOTIFY_CONTEXT ChangeContext, - IN OUT PNTSTATUS OperationStatus); -typedef PROCESSOR_CALLBACK_FUNCTION *PPROCESSOR_CALLBACK_FUNCTION; - -#define KE_PROCESSOR_CHANGE_ADD_EXISTING 1 +(DDKAPI *PNMI_CALLBACK)( + IN PVOID Context, + IN BOOLEAN Handled); -#define INVALID_PROCESSOR_INDEX 0xffffffff +typedef enum _TRACE_INFORMATION_CLASS { + TraceIdClass, + TraceHandleClass, + TraceEnableFlagsClass, + TraceEnableLevelClass, + GlobalLoggerHandleClass, + EventLoggerHandleClass, + AllLoggerHandlesClass, + TraceHandleByNameClass, + LoggerEventsLostClass, + TraceSessionSettingsClass, + LoggerEventsLoggedClass, + MaxTraceInformationClass +} TRACE_INFORMATION_CLASS; typedef enum _KINTERRUPT_POLARITY { InterruptPolarityUnknown, @@ -1022,50 +751,55 @@ typedef enum _KINTERRUPT_MODE { #define THREAD_WAIT_OBJECTS 3 typedef VOID -(NTAPI KSTART_ROUTINE)( - IN PVOID StartContext); -typedef KSTART_ROUTINE *PKSTART_ROUTINE; - -typedef VOID -(NTAPI *PKINTERRUPT_ROUTINE)( +(DDKAPI *PKINTERRUPT_ROUTINE)( VOID); -typedef BOOLEAN -(NTAPI KSERVICE_ROUTINE)( - IN struct _KINTERRUPT *Interrupt, - IN PVOID ServiceContext); -typedef KSERVICE_ROUTINE *PKSERVICE_ROUTINE; - -typedef BOOLEAN -(NTAPI KMESSAGE_SERVICE_ROUTINE)( - IN struct _KINTERRUPT *Interrupt, - IN PVOID ServiceContext, - IN ULONG MessageID); -typedef KMESSAGE_SERVICE_ROUTINE *PKMESSAGE_SERVICE_ROUTINE; - typedef enum _KD_OPTION { - KD_OPTION_SET_BLOCK_ENABLE, + KD_OPTION_SET_BLOCK_ENABLE, } KD_OPTION; +typedef enum _INTERFACE_TYPE { + InterfaceTypeUndefined = -1, + Internal, + Isa, + Eisa, + MicroChannel, + TurboChannel, + PCIBus, + VMEBus, + NuBus, + PCMCIABus, + CBus, + MPIBus, + MPSABus, + ProcessorInternal, + InternalPowerBus, + PNPISABus, + PNPBus, + Vmcs, + MaximumInterfaceType +} INTERFACE_TYPE, *PINTERFACE_TYPE; + typedef VOID -(NTAPI *PKNORMAL_ROUTINE)( - IN PVOID NormalContext OPTIONAL, - IN PVOID SystemArgument1 OPTIONAL, - IN PVOID SystemArgument2 OPTIONAL); +(DDKAPI *PKNORMAL_ROUTINE)( + IN PVOID NormalContext, + IN PVOID SystemArgument1, + IN PVOID SystemArgument2); typedef VOID -(NTAPI *PKRUNDOWN_ROUTINE)( - IN struct _KAPC *Apc); +(DDKAPI *PKRUNDOWN_ROUTINE)( + IN struct _KAPC *Apc); typedef VOID -(NTAPI *PKKERNEL_ROUTINE)( - IN struct _KAPC *Apc, - IN OUT PKNORMAL_ROUTINE *NormalRoutine OPTIONAL, - IN OUT PVOID *NormalContext OPTIONAL, - IN OUT PVOID *SystemArgument1 OPTIONAL, - IN OUT PVOID *SystemArgument2 OPTIONAL); - -typedef struct _KAPC { +(DDKAPI *PKKERNEL_ROUTINE)( + IN struct _KAPC *Apc, + IN OUT PKNORMAL_ROUTINE *NormalRoutine, + IN OUT PVOID *NormalContext, + IN OUT PVOID *SystemArgument1, + IN OUT PVOID *SystemArgument2); + +typedef struct _KAPC +{ UCHAR Type; UCHAR SpareByte0; UCHAR Size; @@ -1084,62 +818,38 @@ typedef struct _KAPC { BOOLEAN Inserted; } KAPC, *PKAPC, *RESTRICTED_POINTER PRKAPC; -#define KAPC_OFFSET_TO_SPARE_BYTE0 FIELD_OFFSET(KAPC, SpareByte0) -#define KAPC_OFFSET_TO_SPARE_BYTE1 FIELD_OFFSET(KAPC, SpareByte1) -#define KAPC_OFFSET_TO_SPARE_LONG FIELD_OFFSET(KAPC, SpareLong0) -#define KAPC_OFFSET_TO_SYSTEMARGUMENT1 FIELD_OFFSET(KAPC, SystemArgument1) -#define KAPC_OFFSET_TO_SYSTEMARGUMENT2 FIELD_OFFSET(KAPC, SystemArgument2) -#define KAPC_OFFSET_TO_APCSTATEINDEX FIELD_OFFSET(KAPC, ApcStateIndex) -#define KAPC_ACTUAL_LENGTH (FIELD_OFFSET(KAPC, Inserted) + sizeof(BOOLEAN)) - typedef struct _KDEVICE_QUEUE_ENTRY { - LIST_ENTRY DeviceListEntry; - ULONG SortKey; - BOOLEAN Inserted; + LIST_ENTRY DeviceListEntry; + ULONG SortKey; + BOOLEAN Inserted; } KDEVICE_QUEUE_ENTRY, *PKDEVICE_QUEUE_ENTRY, *RESTRICTED_POINTER PRKDEVICE_QUEUE_ENTRY; typedef PVOID PKIPI_CONTEXT; -typedef VOID +typedef +VOID (NTAPI *PKIPI_WORKER)( - IN OUT PKIPI_CONTEXT PacketContext, - IN PVOID Parameter1 OPTIONAL, - IN PVOID Parameter2 OPTIONAL, - IN PVOID Parameter3 OPTIONAL); - -typedef struct _KIPI_COUNTS { - ULONG Freeze; - ULONG Packet; - ULONG DPC; - ULONG APC; - ULONG FlushSingleTb; - ULONG FlushMultipleTb; - ULONG FlushEntireTb; - ULONG GenericCall; - ULONG ChangeColor; - ULONG SweepDcache; - ULONG SweepIcache; - ULONG SweepIcacheRange; - ULONG FlushIoBuffers; - ULONG GratuitousDPC; -} KIPI_COUNTS, *PKIPI_COUNTS; - -typedef ULONG_PTR -(NTAPI KIPI_BROADCAST_WORKER)( - IN ULONG_PTR Argument); -typedef KIPI_BROADCAST_WORKER *PKIPI_BROADCAST_WORKER; + IN PKIPI_CONTEXT PacketContext, + IN PVOID Parameter1, + IN PVOID Parameter2, + IN PVOID Parameter3); + +typedef +ULONG_PTR +(NTAPI *PKIPI_BROADCAST_WORKER)( + IN ULONG_PTR Argument); typedef ULONG_PTR KSPIN_LOCK, *PKSPIN_LOCK; typedef struct _KSPIN_LOCK_QUEUE { - struct _KSPIN_LOCK_QUEUE *volatile Next; - PKSPIN_LOCK volatile Lock; + struct _KSPIN_LOCK_QUEUE *volatile Next; + PKSPIN_LOCK volatile Lock; } KSPIN_LOCK_QUEUE, *PKSPIN_LOCK_QUEUE; typedef struct _KLOCK_QUEUE_HANDLE { - KSPIN_LOCK_QUEUE LockQueue; - KIRQL OldIrql; + KSPIN_LOCK_QUEUE LockQueue; + KIRQL OldIrql; } KLOCK_QUEUE_HANDLE, *PKLOCK_QUEUE_HANDLE; #if defined(_AMD64_) @@ -1190,14 +900,14 @@ typedef enum _KSPIN_LOCK_QUEUE_NUMBER { LockQueueMaximumLock = LockQueueTimerTableLock + LOCK_QUEUE_TIMER_TABLE_LOCKS } KSPIN_LOCK_QUEUE_NUMBER, *PKSPIN_LOCK_QUEUE_NUMBER; -#endif /* defined(_AMD64_) */ +#endif typedef VOID -(NTAPI *PKDEFERRED_ROUTINE)( - IN struct _KDPC *Dpc, - IN PVOID DeferredContext OPTIONAL, - IN PVOID SystemArgument1 OPTIONAL, - IN PVOID SystemArgument2 OPTIONAL); +(DDKAPI *PKDEFERRED_ROUTINE)( + IN struct _KDPC *Dpc, + IN PVOID DeferredContext, + IN PVOID SystemArgument1, + IN PVOID SystemArgument2); typedef enum _KDPC_IMPORTANCE { LowImportance, @@ -1206,16 +916,17 @@ typedef enum _KDPC_IMPORTANCE { MediumHighImportance } KDPC_IMPORTANCE; -typedef struct _KDPC { - UCHAR Type; - UCHAR Importance; - volatile USHORT Number; - LIST_ENTRY DpcListEntry; - PKDEFERRED_ROUTINE DeferredRoutine; - PVOID DeferredContext; - PVOID SystemArgument1; - PVOID SystemArgument2; - volatile PVOID DpcData; +typedef struct _KDPC +{ + UCHAR Type; + UCHAR Importance; + volatile USHORT Number; + LIST_ENTRY DpcListEntry; + PKDEFERRED_ROUTINE DeferredRoutine; + PVOID DeferredContext; + PVOID SystemArgument1; + PVOID SystemArgument2; + volatile PVOID DpcData; } KDPC, *PKDPC, *RESTRICTED_POINTER PRKDPC; typedef struct _KDPC_WATCHDOG_INFORMATION { @@ -1235,124 +946,126 @@ typedef struct _KDEVICE_QUEUE { union { BOOLEAN Busy; struct { - LONG64 Reserved:8; - LONG64 Hint:56; + LONG64 Reserved : 8; + LONG64 Hint : 56; }; }; #else BOOLEAN Busy; #endif + } KDEVICE_QUEUE, *PKDEVICE_QUEUE, *RESTRICTED_POINTER PRKDEVICE_QUEUE; #define TIMER_EXPIRED_INDEX_BITS 6 #define TIMER_PROCESSOR_INDEX_BITS 5 - typedef struct _DISPATCHER_HEADER { - _ANONYMOUS_UNION union { - _ANONYMOUS_STRUCT struct { - UCHAR Type; - _ANONYMOUS_UNION union { - _ANONYMOUS_UNION union { - UCHAR TimerControlFlags; - _ANONYMOUS_STRUCT struct { - UCHAR Absolute:1; - UCHAR Coalescable:1; - UCHAR KeepShifting:1; - UCHAR EncodedTolerableDelay:5; - } DUMMYSTRUCTNAME; - } DUMMYUNIONNAME; - UCHAR Abandoned; + _ANONYMOUS_UNION union { + _ANONYMOUS_STRUCT struct { + UCHAR Type; + _ANONYMOUS_UNION union { + _ANONYMOUS_UNION union { + UCHAR TimerControlFlags; + _ANONYMOUS_STRUCT struct { + UCHAR Absolute:1; + UCHAR Coalescable:1; + UCHAR KeepShifting:1; + UCHAR EncodedTolerableDelay:5; + } DUMMYSTRUCTNAME; + } DUMMYUNIONNAME; + UCHAR Abandoned; #if (NTDDI_VERSION < NTDDI_WIN7) - UCHAR NpxIrql; -#endif - BOOLEAN Signalling; - } DUMMYUNIONNAME; - _ANONYMOUS_UNION union { - _ANONYMOUS_UNION union { - UCHAR ThreadControlFlags; - _ANONYMOUS_STRUCT struct { - UCHAR CpuThrottled:1; - UCHAR CycleProfiling:1; - UCHAR CounterProfiling:1; - UCHAR Reserved:5; - } DUMMYSTRUCTNAME; - } DUMMYUNIONNAME; - UCHAR Size; - UCHAR Hand; - } DUMMYUNIONNAME2; - _ANONYMOUS_UNION union { + UCHAR NpxIrql; +#endif + BOOLEAN Signalling; + } DUMMYUNIONNAME; + _ANONYMOUS_UNION union { + _ANONYMOUS_UNION union { + UCHAR ThreadControlFlags; + _ANONYMOUS_STRUCT struct { + UCHAR CpuThrottled:1; + UCHAR CycleProfiling:1; + UCHAR CounterProfiling:1; + UCHAR Reserved:5; + } DUMMYSTRUCTNAME; + } DUMMYUNIONNAME; + UCHAR Size; + UCHAR Hand; + } DUMMYUNIONNAME2; + _ANONYMOUS_UNION union { #if (NTDDI_VERSION >= NTDDI_WIN7) - _ANONYMOUS_UNION union { - UCHAR TimerMiscFlags; - _ANONYMOUS_STRUCT struct { + _ANONYMOUS_UNION union { + UCHAR TimerMiscFlags; + _ANONYMOUS_STRUCT struct { #if !defined(_X86_) - UCHAR Index:TIMER_EXPIRED_INDEX_BITS; + UCHAR Index:TIMER_EXPIRED_INDEX_BITS; #else - UCHAR Index:1; - UCHAR Processor:TIMER_PROCESSOR_INDEX_BITS; + UCHAR Index:1; + UCHAR Processor:TIMER_PROCESSOR_INDEX_BITS; #endif - UCHAR Inserted:1; - volatile UCHAR Expired:1; - } DUMMYSTRUCTNAME; - } DUMMYUNIONNAME; + UCHAR Inserted:1; + volatile UCHAR Expired:1; + } DUMMYSTRUCTNAME; + } DUMMYUNIONNAME; #else - /* Pre Win7 compatibility fix to latest WDK */ - UCHAR Inserted; -#endif - _ANONYMOUS_UNION union { - BOOLEAN DebugActive; - _ANONYMOUS_STRUCT struct { - BOOLEAN ActiveDR7:1; - BOOLEAN Instrumented:1; - BOOLEAN Reserved2:4; - BOOLEAN UmsScheduled:1; - BOOLEAN UmsPrimary:1; - } DUMMYSTRUCTNAME; - } DUMMYUNIONNAME; /* should probably be DUMMYUNIONNAME2, but this is what WDK says */ - BOOLEAN DpcActive; - } DUMMYUNIONNAME3; - } DUMMYSTRUCTNAME; - volatile LONG Lock; - } DUMMYUNIONNAME; - LONG SignalState; - LIST_ENTRY WaitListHead; + /* Pre Win7 compatibility fix to latest WDK */ + UCHAR Inserted; +#endif + _ANONYMOUS_UNION union { + BOOLEAN DebugActive; + _ANONYMOUS_STRUCT struct { + BOOLEAN ActiveDR7:1; + BOOLEAN Instrumented:1; + BOOLEAN Reserved2:4; + BOOLEAN UmsScheduled:1; + BOOLEAN UmsPrimary:1; + } DUMMYSTRUCTNAME; + } DUMMYUNIONNAME; /* should probably be DUMMYUNIONNAME2, but this is what WDK says */ + BOOLEAN DpcActive; + } DUMMYUNIONNAME3; + } DUMMYSTRUCTNAME; + volatile LONG Lock; + } DUMMYUNIONNAME; + LONG SignalState; + LIST_ENTRY WaitListHead; } DISPATCHER_HEADER, *PDISPATCHER_HEADER; typedef struct _KEVENT { - DISPATCHER_HEADER Header; + DISPATCHER_HEADER Header; } KEVENT, *PKEVENT, *RESTRICTED_POINTER PRKEVENT; typedef struct _KSEMAPHORE { - DISPATCHER_HEADER Header; - LONG Limit; + DISPATCHER_HEADER Header; + LONG Limit; } KSEMAPHORE, *PKSEMAPHORE, *RESTRICTED_POINTER PRKSEMAPHORE; -#define KSEMAPHORE_ACTUAL_LENGTH (FIELD_OFFSET(KSEMAPHORE, Limit) + sizeof(LONG)) - -typedef struct _KGATE { - DISPATCHER_HEADER Header; +typedef struct _KGATE +{ + DISPATCHER_HEADER Header; } KGATE, *PKGATE, *RESTRICTED_POINTER PRKGATE; -typedef struct _KGUARDED_MUTEX { - volatile LONG Count; - PKTHREAD Owner; - ULONG Contention; - KGATE Gate; - __GNU_EXTENSION union { - __GNU_EXTENSION struct { - SHORT KernelApcDisable; - SHORT SpecialApcDisable; +typedef struct _KGUARDED_MUTEX +{ + volatile LONG Count; + PKTHREAD Owner; + ULONG Contention; + KGATE Gate; + __GNU_EXTENSION union + { + __GNU_EXTENSION struct + { + SHORT KernelApcDisable; + SHORT SpecialApcDisable; + }; + ULONG CombinedApcDisable; }; - ULONG CombinedApcDisable; - }; } KGUARDED_MUTEX, *PKGUARDED_MUTEX; typedef struct _KMUTANT { - DISPATCHER_HEADER Header; - LIST_ENTRY MutantListEntry; - struct _KTHREAD *RESTRICTED_POINTER OwnerThread; - BOOLEAN Abandoned; - UCHAR ApcDisable; + DISPATCHER_HEADER Header; + LIST_ENTRY MutantListEntry; + struct _KTHREAD *RESTRICTED_POINTER OwnerThread; + BOOLEAN Abandoned; + UCHAR ApcDisable; } KMUTANT, *PKMUTANT, *RESTRICTED_POINTER PRKMUTANT, KMUTEX, *PKMUTEX, *RESTRICTED_POINTER PRKMUTEX; #define TIMER_TABLE_SIZE 512 @@ -1369,17 +1082,9 @@ typedef struct _KTIMER { ULONG Period; } KTIMER, *PKTIMER, *RESTRICTED_POINTER PRKTIMER; -typedef enum _LOCK_OPERATION { - IoReadAccess, - IoWriteAccess, - IoModifyAccess -} LOCK_OPERATION; - -#define KTIMER_ACTUAL_LENGTH (FIELD_OFFSET(KTIMER, Period) + sizeof(LONG)) - typedef BOOLEAN -(NTAPI *PKSYNCHRONIZE_ROUTINE)( - IN PVOID SynchronizeContext); +(DDKAPI *PKSYNCHRONIZE_ROUTINE)( + IN PVOID SynchronizeContext); typedef enum _POOL_TYPE { NonPagedPool, @@ -1399,41 +1104,29 @@ typedef enum _POOL_TYPE { NonPagedPoolCacheAlignedMustSSession } POOL_TYPE; -typedef enum _ALTERNATIVE_ARCHITECTURE_TYPE { - StandardDesign, - NEC98x86, - EndAlternatives +typedef enum _ALTERNATIVE_ARCHITECTURE_TYPE +{ + StandardDesign, + NEC98x86, + EndAlternatives } ALTERNATIVE_ARCHITECTURE_TYPE; -#ifndef _X86_ - -#ifndef IsNEC_98 -#define IsNEC_98 (FALSE) -#endif - -#ifndef IsNotNEC_98 -#define IsNotNEC_98 (TRUE) -#endif - -#ifndef SetNEC_98 -#define SetNEC_98 -#endif - -#ifndef SetNotNEC_98 -#define SetNotNEC_98 -#endif - -#endif - -typedef struct _KSYSTEM_TIME { - ULONG LowPart; - LONG High1Time; - LONG High2Time; +typedef struct _KSYSTEM_TIME +{ + ULONG LowPart; + LONG High1Time; + LONG High2Time; } KSYSTEM_TIME, *PKSYSTEM_TIME; +typedef struct _PNP_BUS_INFORMATION { + GUID BusTypeGuid; + INTERFACE_TYPE LegacyBusType; + ULONG BusNumber; +} PNP_BUS_INFORMATION, *PPNP_BUS_INFORMATION; + typedef struct DECLSPEC_ALIGN(16) _M128A { - ULONGLONG Low; - LONGLONG High; + ULONGLONG Low; + LONGLONG High; } M128A, *PM128A; typedef struct DECLSPEC_ALIGN(16) _XSAVE_FORMAT { @@ -1462,110 +1155,18 @@ typedef struct DECLSPEC_ALIGN(16) _XSAVE_FORMAT { #endif } XSAVE_FORMAT, *PXSAVE_FORMAT; -typedef struct DECLSPEC_ALIGN(8) _XSAVE_AREA_HEADER { - ULONG64 Mask; - ULONG64 Reserved[7]; -} XSAVE_AREA_HEADER, *PXSAVE_AREA_HEADER; - -typedef struct DECLSPEC_ALIGN(16) _XSAVE_AREA { - XSAVE_FORMAT LegacyState; - XSAVE_AREA_HEADER Header; -} XSAVE_AREA, *PXSAVE_AREA; - -typedef struct _XSTATE_CONTEXT { - ULONG64 Mask; - ULONG Length; - ULONG Reserved1; - PXSAVE_AREA Area; -#if defined(_X86_) - ULONG Reserved2; -#endif - PVOID Buffer; -#if defined(_X86_) - ULONG Reserved3; -#endif -} XSTATE_CONTEXT, *PXSTATE_CONTEXT; - -typedef struct _XSTATE_SAVE { -#if defined(_AMD64_) - struct _XSTATE_SAVE* Prev; - struct _KTHREAD* Thread; - UCHAR Level; - XSTATE_CONTEXT XStateContext; -#elif defined(_IA64_) - ULONG Dummy; -#elif defined(_X86_) - union { - struct { - LONG64 Reserved1; - ULONG Reserved2; - struct _XSTATE_SAVE* Prev; - PXSAVE_AREA Reserved3; - struct _KTHREAD* Thread; - PVOID Reserved4; - UCHAR Level; - }; - XSTATE_CONTEXT XStateContext; - }; -#endif -} XSTATE_SAVE, *PXSTATE_SAVE; - -#ifdef _X86_ - -#define MAXIMUM_SUPPORTED_EXTENSION 512 - -#if !defined(__midl) && !defined(MIDL_PASS) -C_ASSERT(sizeof(XSAVE_FORMAT) == MAXIMUM_SUPPORTED_EXTENSION); -#endif - -#endif /* _X86_ */ - -#define XSAVE_ALIGN 64 -#define MINIMAL_XSTATE_AREA_LENGTH sizeof(XSAVE_AREA) - -#if !defined(__midl) && !defined(MIDL_PASS) -C_ASSERT((sizeof(XSAVE_FORMAT) & (XSAVE_ALIGN - 1)) == 0); -C_ASSERT((FIELD_OFFSET(XSAVE_AREA, Header) & (XSAVE_ALIGN - 1)) == 0); -C_ASSERT(MINIMAL_XSTATE_AREA_LENGTH == 512 + 64); -#endif - -typedef struct _CONTEXT_CHUNK { - LONG Offset; - ULONG Length; -} CONTEXT_CHUNK, *PCONTEXT_CHUNK; - -typedef struct _CONTEXT_EX { - CONTEXT_CHUNK All; - CONTEXT_CHUNK Legacy; - CONTEXT_CHUNK XState; -} CONTEXT_EX, *PCONTEXT_EX; - -#define CONTEXT_EX_LENGTH ALIGN_UP_BY(sizeof(CONTEXT_EX), STACK_ALIGN) - -#if (NTDDI_VERSION >= NTDDI_VISTA) -extern NTSYSAPI volatile CCHAR KeNumberProcessors; -#elif (NTDDI_VERSION >= NTDDI_WINXP) -extern NTSYSAPI CCHAR KeNumberProcessors; -#else -extern PCCHAR KeNumberProcessors; -#endif /****************************************************************************** * Memory manager Types * ******************************************************************************/ -#if (NTDDI_VERSION >= NTDDI_WIN2K) -typedef ULONG NODE_REQUIREMENT; -#define MM_ANY_NODE_OK 0x80000000 -#endif - -#define MM_DONT_ZERO_ALLOCATION 0x00000001 -#define MM_ALLOCATE_FROM_LOCAL_NODE_ONLY 0x00000002 -#define MM_ALLOCATE_FULLY_REQUIRED 0x00000004 -#define MM_ALLOCATE_NO_WAIT 0x00000008 -#define MM_ALLOCATE_PREFER_CONTIGUOUS 0x00000010 -#define MM_ALLOCATE_REQUIRE_CONTIGUOUS_CHUNKS 0x00000020 +#define MM_DONT_ZERO_ALLOCATION 0x00000001 +#define MM_ALLOCATE_FROM_LOCAL_NODE_ONLY 0x00000002 +#define MM_ALLOCATE_FULLY_REQUIRED 0x00000004 +#define MM_ALLOCATE_NO_WAIT 0x00000008 +#define MM_ALLOCATE_PREFER_CONTIGUOUS 0x00000010 +#define MM_ALLOCATE_REQUIRE_CONTIGUOUS_CHUNKS 0x00000020 #define MDL_MAPPED_TO_SYSTEM_VA 0x0001 #define MDL_PAGES_LOCKED 0x0002 @@ -1648,8 +1249,8 @@ typedef ULONG NODE_REQUIREMENT; /* Section map options */ typedef enum _SECTION_INHERIT { - ViewShare = 1, - ViewUnmap = 2 + ViewShare = 1, + ViewUnmap = 2 } SECTION_INHERIT; typedef ULONG PFN_COUNT; @@ -1657,14 +1258,14 @@ typedef LONG_PTR SPFN_NUMBER, *PSPFN_NUMBER; typedef ULONG_PTR PFN_NUMBER, *PPFN_NUMBER; typedef struct _MDL { - struct _MDL *Next; - CSHORT Size; - CSHORT MdlFlags; - struct _EPROCESS *Process; - PVOID MappedSystemVa; - PVOID StartVa; - ULONG ByteCount; - ULONG ByteOffset; + struct _MDL *Next; + CSHORT Size; + CSHORT MdlFlags; + struct _EPROCESS *Process; + PVOID MappedSystemVa; + PVOID StartVa; + ULONG ByteCount; + ULONG ByteOffset; } MDL, *PMDL; typedef MDL *PMDLX; @@ -1688,15 +1289,18 @@ typedef enum _MM_PAGE_PRIORITY { HighPagePriority = 32 } MM_PAGE_PRIORITY; +typedef enum _LOCK_OPERATION { + IoReadAccess, + IoWriteAccess, + IoModifyAccess +} LOCK_OPERATION; + typedef enum _MM_SYSTEM_SIZE { MmSmallSystem, MmMediumSystem, MmLargeSystem } MM_SYSTEMSIZE; -extern NTKERNELAPI BOOLEAN Mm64BitPhysicalAddress; -extern PVOID MmBadPointer; - /****************************************************************************** * Executive Types * @@ -1706,6 +1310,12 @@ extern PVOID MmBadPointer; #define EX_RUNDOWN_COUNT_SHIFT 0x1 #define EX_RUNDOWN_COUNT_INC (1 << EX_RUNDOWN_COUNT_SHIFT) +#ifdef _WIN64 +#define PORT_MAXIMUM_MESSAGE_LENGTH 512 +#else +#define PORT_MAXIMUM_MESSAGE_LENGTH 256 +#endif + typedef struct _FAST_MUTEX { volatile LONG Count; PKTHREAD Owner; @@ -1715,35 +1325,35 @@ typedef struct _FAST_MUTEX { } FAST_MUTEX, *PFAST_MUTEX; typedef enum _SUITE_TYPE { - SmallBusiness, - Enterprise, - BackOffice, - CommunicationServer, - TerminalServer, - SmallBusinessRestricted, - EmbeddedNT, - DataCenter, - SingleUserTS, - Personal, - Blade, - EmbeddedRestricted, - SecurityAppliance, - StorageServer, - ComputeServer, - WHServer, - MaxSuiteType + SmallBusiness, + Enterprise, + BackOffice, + CommunicationServer, + TerminalServer, + SmallBusinessRestricted, + EmbeddedNT, + DataCenter, + SingleUserTS, + Personal, + Blade, + EmbeddedRestricted, + SecurityAppliance, + StorageServer, + ComputeServer, + WHServer, + MaxSuiteType } SUITE_TYPE; typedef enum _EX_POOL_PRIORITY { - LowPoolPriority, - LowPoolPrioritySpecialPoolOverrun = 8, - LowPoolPrioritySpecialPoolUnderrun = 9, - NormalPoolPriority = 16, - NormalPoolPrioritySpecialPoolOverrun = 24, - NormalPoolPrioritySpecialPoolUnderrun = 25, - HighPoolPriority = 32, - HighPoolPrioritySpecialPoolOverrun = 40, - HighPoolPrioritySpecialPoolUnderrun = 41 + LowPoolPriority, + LowPoolPrioritySpecialPoolOverrun = 8, + LowPoolPrioritySpecialPoolUnderrun = 9, + NormalPoolPriority = 16, + NormalPoolPrioritySpecialPoolOverrun = 24, + NormalPoolPrioritySpecialPoolUnderrun = 25, + HighPoolPriority = 32, + HighPoolPrioritySpecialPoolOverrun = 40, + HighPoolPrioritySpecialPoolUnderrun = 41 } EX_POOL_PRIORITY; #if !defined(_WIN64) && (defined(_NTDDK_) || defined(_NTIFS_) || defined(_NDIS_)) @@ -1755,33 +1365,32 @@ typedef enum _EX_POOL_PRIORITY { typedef struct _LOOKASIDE_LIST_EX *PLOOKASIDE_LIST_EX; typedef PVOID -(NTAPI *PALLOCATE_FUNCTION)( - IN POOL_TYPE PoolType, - IN SIZE_T NumberOfBytes, - IN ULONG Tag); +(DDKAPI *PALLOCATE_FUNCTION)( + IN POOL_TYPE PoolType, + IN SIZE_T NumberOfBytes, + IN ULONG Tag); typedef PVOID -(NTAPI *PALLOCATE_FUNCTION_EX)( - IN POOL_TYPE PoolType, - IN SIZE_T NumberOfBytes, - IN ULONG Tag, - IN OUT PLOOKASIDE_LIST_EX Lookaside); +(DDKAPI *PALLOCATE_FUNCTION_EX)( + IN POOL_TYPE PoolType, + IN SIZE_T NumberOfBytes, + IN ULONG Tag, + IN OUT PLOOKASIDE_LIST_EX Lookaside); typedef VOID -(NTAPI *PFREE_FUNCTION)( - IN PVOID Buffer); +(DDKAPI *PFREE_FUNCTION)( + IN PVOID Buffer); typedef VOID -(NTAPI *PFREE_FUNCTION_EX)( - IN PVOID Buffer, - IN OUT PLOOKASIDE_LIST_EX Lookaside); +(DDKAPI *PFREE_FUNCTION_EX)( + IN PVOID Buffer, + IN OUT PLOOKASIDE_LIST_EX Lookaside); typedef VOID -(NTAPI CALLBACK_FUNCTION)( - IN PVOID CallbackContext OPTIONAL, - IN PVOID Argument1 OPTIONAL, - IN PVOID Argument2 OPTIONAL); -typedef CALLBACK_FUNCTION *PCALLBACK_FUNCTION; +(DDKAPI *PCALLBACK_FUNCTION)( + IN PVOID CallbackContext, + IN PVOID Argument1, + IN PVOID Argument2); #define GENERAL_LOOKASIDE_LAYOUT \ union { \ @@ -1824,149 +1433,50 @@ typedef CALLBACK_FUNCTION *PCALLBACK_FUNCTION; ULONG Future[2]; typedef struct LOOKASIDE_ALIGN _GENERAL_LOOKASIDE { - GENERAL_LOOKASIDE_LAYOUT + GENERAL_LOOKASIDE_LAYOUT } GENERAL_LOOKASIDE, *PGENERAL_LOOKASIDE; typedef struct _GENERAL_LOOKASIDE_POOL { - GENERAL_LOOKASIDE_LAYOUT + GENERAL_LOOKASIDE_LAYOUT } GENERAL_LOOKASIDE_POOL, *PGENERAL_LOOKASIDE_POOL; -#define LOOKASIDE_CHECK(f) \ - C_ASSERT(FIELD_OFFSET(GENERAL_LOOKASIDE,f) == FIELD_OFFSET(GENERAL_LOOKASIDE_POOL,f)) - -LOOKASIDE_CHECK(TotalFrees); -LOOKASIDE_CHECK(Tag); -LOOKASIDE_CHECK(Future); - typedef struct _PAGED_LOOKASIDE_LIST { - GENERAL_LOOKASIDE L; + GENERAL_LOOKASIDE L; #if !defined(_AMD64_) && !defined(_IA64_) - FAST_MUTEX Lock__ObsoleteButDoNotDelete; + FAST_MUTEX Lock__ObsoleteButDoNotDelete; #endif } PAGED_LOOKASIDE_LIST, *PPAGED_LOOKASIDE_LIST; typedef struct LOOKASIDE_ALIGN _NPAGED_LOOKASIDE_LIST { - GENERAL_LOOKASIDE L; + GENERAL_LOOKASIDE L; #if !defined(_AMD64_) && !defined(_IA64_) - KSPIN_LOCK Lock__ObsoleteButDoNotDelete; + KSPIN_LOCK Lock__ObsoleteButDoNotDelete; #endif } NPAGED_LOOKASIDE_LIST, *PNPAGED_LOOKASIDE_LIST; -#define LOOKASIDE_MINIMUM_BLOCK_SIZE (RTL_SIZEOF_THROUGH_FIELD (SLIST_ENTRY, Next)) - typedef struct _LOOKASIDE_LIST_EX { - GENERAL_LOOKASIDE_POOL L; + GENERAL_LOOKASIDE_POOL L; } LOOKASIDE_LIST_EX; -#if (NTDDI_VERSION >= NTDDI_VISTA) - -#define EX_LOOKASIDE_LIST_EX_FLAGS_RAISE_ON_FAIL 0x00000001UL -#define EX_LOOKASIDE_LIST_EX_FLAGS_FAIL_NO_RAISE 0x00000002UL - -#define EX_MAXIMUM_LOOKASIDE_DEPTH_BASE 256 -#define EX_MAXIMUM_LOOKASIDE_DEPTH_LIMIT 1024 - -#endif /* (NTDDI_VERSION >= NTDDI_VISTA) */ - typedef struct _EX_RUNDOWN_REF { - __GNU_EXTENSION union { - volatile ULONG_PTR Count; - volatile PVOID Ptr; - }; + __GNU_EXTENSION union { + volatile ULONG_PTR Count; + volatile PVOID Ptr; + }; } EX_RUNDOWN_REF, *PEX_RUNDOWN_REF; -typedef struct _EX_RUNDOWN_REF_CACHE_AWARE *PEX_RUNDOWN_REF_CACHE_AWARE; - -typedef enum _WORK_QUEUE_TYPE { - CriticalWorkQueue, - DelayedWorkQueue, - HyperCriticalWorkQueue, - MaximumWorkQueue -} WORK_QUEUE_TYPE; +typedef struct _EX_RUNDOWN_REF_CACHE_AWARE *PEX_RUNDOWN_REF_CACHE_AWARE; typedef VOID -(NTAPI WORKER_THREAD_ROUTINE)( +(DDKAPI *PWORKER_THREAD_ROUTINE)( IN PVOID Parameter); -typedef WORKER_THREAD_ROUTINE *PWORKER_THREAD_ROUTINE; typedef struct _WORK_QUEUE_ITEM { - LIST_ENTRY List; - PWORKER_THREAD_ROUTINE WorkerRoutine; - volatile PVOID Parameter; + LIST_ENTRY List; + PWORKER_THREAD_ROUTINE WorkerRoutine; + volatile PVOID Parameter; } WORK_QUEUE_ITEM, *PWORK_QUEUE_ITEM; -typedef ULONG_PTR ERESOURCE_THREAD, *PERESOURCE_THREAD; - -typedef struct _OWNER_ENTRY { - ERESOURCE_THREAD OwnerThread; - union { - struct { - ULONG IoPriorityBoosted:1; - ULONG OwnerReferenced:1; - ULONG OwnerCount:30; - }; - ULONG TableSize; - }; -} OWNER_ENTRY, *POWNER_ENTRY; - -typedef struct _ERESOURCE { - LIST_ENTRY SystemResourcesList; - POWNER_ENTRY OwnerTable; - SHORT ActiveCount; - USHORT Flag; - volatile PKSEMAPHORE SharedWaiters; - volatile PKEVENT ExclusiveWaiters; - OWNER_ENTRY OwnerEntry; - ULONG ActiveEntries; - ULONG ContentionCount; - ULONG NumberOfSharedWaiters; - ULONG NumberOfExclusiveWaiters; -#if defined(_WIN64) - PVOID Reserved2; -#endif - __GNU_EXTENSION union { - PVOID Address; - ULONG_PTR CreatorBackTraceIndex; - }; - KSPIN_LOCK SpinLock; -} ERESOURCE, *PERESOURCE; - -/* ERESOURCE.Flag */ -#define ResourceNeverExclusive 0x0010 -#define ResourceReleaseByOtherThread 0x0020 -#define ResourceOwnedExclusive 0x0080 - -#define RESOURCE_HASH_TABLE_SIZE 64 - -typedef struct _RESOURCE_HASH_ENTRY { - LIST_ENTRY ListEntry; - PVOID Address; - ULONG ContentionCount; - ULONG Number; -} RESOURCE_HASH_ENTRY, *PRESOURCE_HASH_ENTRY; - -typedef struct _RESOURCE_PERFORMANCE_DATA { - ULONG ActiveResourceCount; - ULONG TotalResourceCount; - ULONG ExclusiveAcquire; - ULONG SharedFirstLevel; - ULONG SharedSecondLevel; - ULONG StarveFirstLevel; - ULONG StarveSecondLevel; - ULONG WaitForExclusive; - ULONG OwnerTableExpands; - ULONG MaximumTableExpand; - LIST_ENTRY HashTable[RESOURCE_HASH_TABLE_SIZE]; -} RESOURCE_PERFORMANCE_DATA, *PRESOURCE_PERFORMANCE_DATA; - -/* Global debug flag */ -#if DEVL -extern ULONG NtGlobalFlag; -#define IF_NTOS_DEBUG(FlagName) if (NtGlobalFlag & (FLG_##FlagName)) -#else -#define IF_NTOS_DEBUG(FlagName) if(FALSE) -#endif - /****************************************************************************** * Security Manager Types * @@ -1998,10 +1508,10 @@ typedef PVOID PSID; #define GENERIC_ALL 0x10000000L typedef struct _GENERIC_MAPPING { - ACCESS_MASK GenericRead; - ACCESS_MASK GenericWrite; - ACCESS_MASK GenericExecute; - ACCESS_MASK GenericAll; + ACCESS_MASK GenericRead; + ACCESS_MASK GenericWrite; + ACCESS_MASK GenericExecute; + ACCESS_MASK GenericAll; } GENERIC_MAPPING, *PGENERIC_MAPPING; #define ACL_REVISION 2 @@ -2015,11 +1525,11 @@ typedef struct _GENERIC_MAPPING { #define MAX_ACL_REVISION ACL_REVISION4 typedef struct _ACL { - UCHAR AclRevision; - UCHAR Sbz1; - USHORT AclSize; - USHORT AceCount; - USHORT Sbz2; + UCHAR AclRevision; + UCHAR Sbz1; + USHORT AclSize; + USHORT AceCount; + USHORT Sbz2; } ACL, *PACL; /* Current security descriptor revision value */ @@ -2039,8 +1549,8 @@ typedef struct _ACL { #include typedef struct _LUID_AND_ATTRIBUTES { - LUID Luid; - ULONG Attributes; + LUID Luid; + ULONG Attributes; } LUID_AND_ATTRIBUTES, *PLUID_AND_ATTRIBUTES; #include @@ -2051,16 +1561,16 @@ typedef LUID_AND_ATTRIBUTES_ARRAY *PLUID_AND_ATTRIBUTES_ARRAY; #define PRIVILEGE_SET_ALL_NECESSARY (1) typedef struct _PRIVILEGE_SET { - ULONG PrivilegeCount; - ULONG Control; - LUID_AND_ATTRIBUTES Privilege[ANYSIZE_ARRAY]; + ULONG PrivilegeCount; + ULONG Control; + LUID_AND_ATTRIBUTES Privilege[ANYSIZE_ARRAY]; } PRIVILEGE_SET,*PPRIVILEGE_SET; typedef enum _SECURITY_IMPERSONATION_LEVEL { - SecurityAnonymous, - SecurityIdentification, - SecurityImpersonation, - SecurityDelegation + SecurityAnonymous, + SecurityIdentification, + SecurityImpersonation, + SecurityDelegation } SECURITY_IMPERSONATION_LEVEL, * PSECURITY_IMPERSONATION_LEVEL; #define SECURITY_MAX_IMPERSONATION_LEVEL SecurityDelegation @@ -2074,17 +1584,17 @@ typedef enum _SECURITY_IMPERSONATION_LEVEL { typedef BOOLEAN SECURITY_CONTEXT_TRACKING_MODE, *PSECURITY_CONTEXT_TRACKING_MODE; typedef struct _SECURITY_QUALITY_OF_SERVICE { - ULONG Length; - SECURITY_IMPERSONATION_LEVEL ImpersonationLevel; - SECURITY_CONTEXT_TRACKING_MODE ContextTrackingMode; - BOOLEAN EffectiveOnly; + ULONG Length; + SECURITY_IMPERSONATION_LEVEL ImpersonationLevel; + SECURITY_CONTEXT_TRACKING_MODE ContextTrackingMode; + BOOLEAN EffectiveOnly; } SECURITY_QUALITY_OF_SERVICE, *PSECURITY_QUALITY_OF_SERVICE; typedef struct _SE_IMPERSONATION_STATE { - PACCESS_TOKEN Token; - BOOLEAN CopyOnOpen; - BOOLEAN EffectiveOnly; - SECURITY_IMPERSONATION_LEVEL Level; + PACCESS_TOKEN Token; + BOOLEAN CopyOnOpen; + BOOLEAN EffectiveOnly; + SECURITY_IMPERSONATION_LEVEL Level; } SE_IMPERSONATION_STATE, *PSE_IMPERSONATION_STATE; #define OWNER_SECURITY_INFORMATION (0x00000001L) @@ -2108,9 +1618,9 @@ typedef enum _SECURITY_OPERATION_CODE { #define INITIAL_PRIVILEGE_COUNT 3 typedef struct _INITIAL_PRIVILEGE_SET { - ULONG PrivilegeCount; - ULONG Control; - LUID_AND_ATTRIBUTES Privilege[INITIAL_PRIVILEGE_COUNT]; + ULONG PrivilegeCount; + ULONG Control; + LUID_AND_ATTRIBUTES Privilege[INITIAL_PRIVILEGE_COUNT]; } INITIAL_PRIVILEGE_SET, * PINITIAL_PRIVILEGE_SET; #define SE_MIN_WELL_KNOWN_PRIVILEGE 2 @@ -2151,38 +1661,35 @@ typedef struct _INITIAL_PRIVILEGE_SET { #define SE_MAX_WELL_KNOWN_PRIVILEGE SE_CREATE_SYMBOLIC_LINK_PRIVILEGE typedef struct _SECURITY_SUBJECT_CONTEXT { - PACCESS_TOKEN ClientToken; - SECURITY_IMPERSONATION_LEVEL ImpersonationLevel; - PACCESS_TOKEN PrimaryToken; - PVOID ProcessAuditId; + PACCESS_TOKEN ClientToken; + SECURITY_IMPERSONATION_LEVEL ImpersonationLevel; + PACCESS_TOKEN PrimaryToken; + PVOID ProcessAuditId; } SECURITY_SUBJECT_CONTEXT, *PSECURITY_SUBJECT_CONTEXT; typedef struct _ACCESS_STATE { - LUID OperationID; - BOOLEAN SecurityEvaluated; - BOOLEAN GenerateAudit; - BOOLEAN GenerateOnClose; - BOOLEAN PrivilegesAllocated; - ULONG Flags; - ACCESS_MASK RemainingDesiredAccess; - ACCESS_MASK PreviouslyGrantedAccess; - ACCESS_MASK OriginalDesiredAccess; - SECURITY_SUBJECT_CONTEXT SubjectSecurityContext; - PSECURITY_DESCRIPTOR SecurityDescriptor; - PVOID AuxData; + LUID OperationID; + BOOLEAN SecurityEvaluated; + BOOLEAN GenerateAudit; + BOOLEAN GenerateOnClose; + BOOLEAN PrivilegesAllocated; + ULONG Flags; + ACCESS_MASK RemainingDesiredAccess; + ACCESS_MASK PreviouslyGrantedAccess; + ACCESS_MASK OriginalDesiredAccess; + SECURITY_SUBJECT_CONTEXT SubjectSecurityContext; + PSECURITY_DESCRIPTOR SecurityDescriptor; + PVOID AuxData; union { - INITIAL_PRIVILEGE_SET InitialPrivilegeSet; - PRIVILEGE_SET PrivilegeSet; + INITIAL_PRIVILEGE_SET InitialPrivilegeSet; + PRIVILEGE_SET PrivilegeSet; } Privileges; - BOOLEAN AuditPrivileges; - UNICODE_STRING ObjectName; - UNICODE_STRING ObjectTypeName; + + BOOLEAN AuditPrivileges; + UNICODE_STRING ObjectName; + UNICODE_STRING ObjectTypeName; } ACCESS_STATE, *PACCESS_STATE; -typedef VOID -(NTAPI *PNTFS_DEREF_EXPORTED_SECURITY_DESCRIPTOR)( - IN PVOID Vcb, - IN PSECURITY_DESCRIPTOR SecurityDescriptor); #ifndef _NTLSA_IFS_ @@ -2253,8 +1760,8 @@ typedef struct _SE_ADT_PARAMETER_ARRAY_ENTRY { typedef struct _SE_ADT_ACCESS_REASON { ACCESS_MASK AccessMask; - ULONG AccessReasons[32]; - ULONG ObjectTypeIndex; + ULONG AccessReasons[32]; + ULONG ObjectTypeIndex; ULONG AccessGranted; PSECURITY_DESCRIPTOR SecurityDescriptor; } SE_ADT_ACCESS_REASON, *PSE_ADT_ACCESS_REASON; @@ -2273,6 +1780,7 @@ typedef struct _SE_ADT_PARAMETER_ARRAY { #endif /* !_NTLSA_AUDIT_ */ #endif /* !_NTLSA_IFS_ */ + /****************************************************************************** * Power Management Support Types * ******************************************************************************/ @@ -2280,112 +1788,99 @@ typedef struct _SE_ADT_PARAMETER_ARRAY { #ifndef _PO_DDK_ #define _PO_DDK_ -#define PO_CB_SYSTEM_POWER_POLICY 0 -#define PO_CB_AC_STATUS 1 -#define PO_CB_BUTTON_COLLISION 2 -#define PO_CB_SYSTEM_STATE_LOCK 3 -#define PO_CB_LID_SWITCH_STATE 4 -#define PO_CB_PROCESSOR_POWER_POLICY 5 - /* Power States/Levels */ typedef enum _SYSTEM_POWER_STATE { - PowerSystemUnspecified = 0, - PowerSystemWorking, - PowerSystemSleeping1, - PowerSystemSleeping2, - PowerSystemSleeping3, - PowerSystemHibernate, - PowerSystemShutdown, - PowerSystemMaximum + PowerSystemUnspecified, + PowerSystemWorking, + PowerSystemSleeping1, + PowerSystemSleeping2, + PowerSystemSleeping3, + PowerSystemHibernate, + PowerSystemShutdown, + PowerSystemMaximum } SYSTEM_POWER_STATE, *PSYSTEM_POWER_STATE; #define POWER_SYSTEM_MAXIMUM PowerSystemMaximum typedef enum _POWER_INFORMATION_LEVEL { - SystemPowerPolicyAc, - SystemPowerPolicyDc, - VerifySystemPolicyAc, - VerifySystemPolicyDc, - SystemPowerCapabilities, - SystemBatteryState, - SystemPowerStateHandler, - ProcessorStateHandler, - SystemPowerPolicyCurrent, - AdministratorPowerPolicy, - SystemReserveHiberFile, - ProcessorInformation, - SystemPowerInformation, - ProcessorStateHandler2, - LastWakeTime, - LastSleepTime, - SystemExecutionState, - SystemPowerStateNotifyHandler, - ProcessorPowerPolicyAc, - ProcessorPowerPolicyDc, - VerifyProcessorPowerPolicyAc, - VerifyProcessorPowerPolicyDc, - ProcessorPowerPolicyCurrent, - SystemPowerStateLogging, - SystemPowerLoggingEntry, - SetPowerSettingValue, - NotifyUserPowerSetting, - PowerInformationLevelUnused0, - PowerInformationLevelUnused1, - SystemVideoState, - TraceApplicationPowerMessage, - TraceApplicationPowerMessageEnd, - ProcessorPerfStates, - ProcessorIdleStates, - ProcessorCap, - SystemWakeSource, - SystemHiberFileInformation, - TraceServicePowerMessage, - ProcessorLoad, - PowerShutdownNotification, - MonitorCapabilities, - SessionPowerInit, - SessionDisplayState, - PowerRequestCreate, - PowerRequestAction, - GetPowerRequestList, - ProcessorInformationEx, - NotifyUserModeLegacyPowerEvent, - GroupPark, - ProcessorIdleDomains, - WakeTimerList, - SystemHiberFileSize, - PowerInformationLevelMaximum + SystemPowerPolicyAc, + SystemPowerPolicyDc, + VerifySystemPolicyAc, + VerifySystemPolicyDc, + SystemPowerCapabilities, + SystemBatteryState, + SystemPowerStateHandler, + ProcessorStateHandler, + SystemPowerPolicyCurrent, + AdministratorPowerPolicy, + SystemReserveHiberFile, + ProcessorInformation, + SystemPowerInformation, + ProcessorStateHandler2, + LastWakeTime, + LastSleepTime, + SystemExecutionState, + SystemPowerStateNotifyHandler, + ProcessorPowerPolicyAc, + ProcessorPowerPolicyDc, + VerifyProcessorPowerPolicyAc, + VerifyProcessorPowerPolicyDc, + ProcessorPowerPolicyCurrent, + SystemPowerStateLogging, + SystemPowerLoggingEntry, + SetPowerSettingValue, + NotifyUserPowerSetting, + PowerInformationLevelUnused0, + PowerInformationLevelUnused1, + SystemVideoState, + TraceApplicationPowerMessage, + TraceApplicationPowerMessageEnd, + ProcessorPerfStates, + ProcessorIdleStates, + ProcessorCap, + SystemWakeSource, + SystemHiberFileInformation, + TraceServicePowerMessage, + ProcessorLoad, + PowerShutdownNotification, + MonitorCapabilities, + SessionPowerInit, + SessionDisplayState, + PowerRequestCreate, + PowerRequestAction, + GetPowerRequestList, + ProcessorInformationEx, + NotifyUserModeLegacyPowerEvent, + GroupPark, + ProcessorIdleDomains, + WakeTimerList, + SystemHiberFileSize, + PowerInformationLevelMaximum } POWER_INFORMATION_LEVEL; typedef enum { - PowerActionNone = 0, - PowerActionReserved, - PowerActionSleep, - PowerActionHibernate, - PowerActionShutdown, - PowerActionShutdownReset, - PowerActionShutdownOff, - PowerActionWarmEject + PowerActionNone, + PowerActionReserved, + PowerActionSleep, + PowerActionHibernate, + PowerActionShutdown, + PowerActionShutdownReset, + PowerActionShutdownOff, + PowerActionWarmEject } POWER_ACTION, *PPOWER_ACTION; typedef enum _DEVICE_POWER_STATE { - PowerDeviceUnspecified = 0, - PowerDeviceD0, - PowerDeviceD1, - PowerDeviceD2, - PowerDeviceD3, - PowerDeviceMaximum + PowerDeviceUnspecified, + PowerDeviceD0, + PowerDeviceD1, + PowerDeviceD2, + PowerDeviceD3, + PowerDeviceMaximum } DEVICE_POWER_STATE, *PDEVICE_POWER_STATE; -typedef enum _MONITOR_DISPLAY_STATE { - PowerMonitorOff = 0, - PowerMonitorOn, - PowerMonitorDim -} MONITOR_DISPLAY_STATE, *PMONITOR_DISPLAY_STATE; - typedef union _POWER_STATE { - SYSTEM_POWER_STATE SystemState; - DEVICE_POWER_STATE DeviceState; + SYSTEM_POWER_STATE SystemState; + DEVICE_POWER_STATE DeviceState; } POWER_STATE, *PPOWER_STATE; typedef enum _POWER_STATE_TYPE { @@ -2393,297 +1888,39 @@ typedef enum _POWER_STATE_TYPE { DevicePowerState } POWER_STATE_TYPE, *PPOWER_STATE_TYPE; -#if (NTDDI_VERSION >= NTDDI_VISTA) -typedef struct _SYSTEM_POWER_STATE_CONTEXT { - union { - struct { - ULONG Reserved1:8; - ULONG TargetSystemState:4; - ULONG EffectiveSystemState:4; - ULONG CurrentSystemState:4; - ULONG IgnoreHibernationPath:1; - ULONG PseudoTransition:1; - ULONG Reserved2:10; - } DUMMYSTRUCTNAME; - ULONG ContextAsUlong; - } DUMMYUNIONNAME; -} SYSTEM_POWER_STATE_CONTEXT, *PSYSTEM_POWER_STATE_CONTEXT; -#endif - -#if (NTDDI_VERSION >= NTDDI_WIN7) -typedef struct _COUNTED_REASON_CONTEXT { - ULONG Version; - ULONG Flags; - union { - struct { - UNICODE_STRING ResourceFileName; - USHORT ResourceReasonId; - ULONG StringCount; - PUNICODE_STRING ReasonStrings; - } DUMMYSTRUCTNAME; - UNICODE_STRING SimpleString; - } DUMMYUNIONNAME; -} COUNTED_REASON_CONTEXT, *PCOUNTED_REASON_CONTEXT; -#endif - -#define IOCTL_QUERY_DEVICE_POWER_STATE \ - CTL_CODE(FILE_DEVICE_BATTERY, 0x0, METHOD_BUFFERED, FILE_READ_ACCESS) - -#define IOCTL_SET_DEVICE_WAKE \ - CTL_CODE(FILE_DEVICE_BATTERY, 0x1, METHOD_BUFFERED, FILE_WRITE_ACCESS) - -#define IOCTL_CANCEL_DEVICE_WAKE \ - CTL_CODE(FILE_DEVICE_BATTERY, 0x2, METHOD_BUFFERED, FILE_WRITE_ACCESS) - -#define ES_SYSTEM_REQUIRED 0x00000001 -#define ES_DISPLAY_REQUIRED 0x00000002 -#define ES_USER_PRESENT 0x00000004 -#define ES_CONTINUOUS 0x80000000 - -typedef ULONG EXECUTION_STATE, *PEXECUTION_STATE; - -typedef enum { - LT_DONT_CARE, - LT_LOWEST_LATENCY -} LATENCY_TIME; - -#if (_WIN32_WINNT >= _WIN32_WINNT_WIN7) -#define DIAGNOSTIC_REASON_VERSION 0 -#define DIAGNOSTIC_REASON_SIMPLE_STRING 0x00000001 -#define DIAGNOSTIC_REASON_DETAILED_STRING 0x00000002 -#define DIAGNOSTIC_REASON_NOT_SPECIFIED 0x80000000 -#define DIAGNOSTIC_REASON_INVALID_FLAGS (~0x80000003) -#endif - -#define POWER_REQUEST_CONTEXT_VERSION 0 -#define POWER_REQUEST_CONTEXT_SIMPLE_STRING 0x00000001 -#define POWER_REQUEST_CONTEXT_DETAILED_STRING 0x00000002 - -#define PowerRequestMaximum 3 - -typedef enum _POWER_REQUEST_TYPE { - PowerRequestDisplayRequired, - PowerRequestSystemRequired, - PowerRequestAwayModeRequired -} POWER_REQUEST_TYPE, *PPOWER_REQUEST_TYPE; - -#if (NTDDI_VERSION >= NTDDI_WINXP) - -#define PDCAP_D0_SUPPORTED 0x00000001 -#define PDCAP_D1_SUPPORTED 0x00000002 -#define PDCAP_D2_SUPPORTED 0x00000004 -#define PDCAP_D3_SUPPORTED 0x00000008 -#define PDCAP_WAKE_FROM_D0_SUPPORTED 0x00000010 -#define PDCAP_WAKE_FROM_D1_SUPPORTED 0x00000020 -#define PDCAP_WAKE_FROM_D2_SUPPORTED 0x00000040 -#define PDCAP_WAKE_FROM_D3_SUPPORTED 0x00000080 -#define PDCAP_WARM_EJECT_SUPPORTED 0x00000100 - -typedef struct CM_Power_Data_s { - ULONG PD_Size; - DEVICE_POWER_STATE PD_MostRecentPowerState; - ULONG PD_Capabilities; - ULONG PD_D1Latency; - ULONG PD_D2Latency; - ULONG PD_D3Latency; - DEVICE_POWER_STATE PD_PowerStateMapping[PowerSystemMaximum]; - SYSTEM_POWER_STATE PD_DeepestSystemWake; -} CM_POWER_DATA, *PCM_POWER_DATA; - -#endif /* (NTDDI_VERSION >= NTDDI_WINXP) */ - -typedef enum _SYSTEM_POWER_CONDITION { - PoAc, - PoDc, - PoHot, - PoConditionMaximum -} SYSTEM_POWER_CONDITION; - -typedef struct _SET_POWER_SETTING_VALUE { - ULONG Version; - GUID Guid; - SYSTEM_POWER_CONDITION PowerCondition; - ULONG DataLength; - UCHAR Data[ANYSIZE_ARRAY]; -} SET_POWER_SETTING_VALUE, *PSET_POWER_SETTING_VALUE; - -#define POWER_SETTING_VALUE_VERSION (0x1) - -typedef struct _NOTIFY_USER_POWER_SETTING { - GUID Guid; -} NOTIFY_USER_POWER_SETTING, *PNOTIFY_USER_POWER_SETTING; - -typedef struct _APPLICATIONLAUNCH_SETTING_VALUE { - LARGE_INTEGER ActivationTime; - ULONG Flags; - ULONG ButtonInstanceID; -} APPLICATIONLAUNCH_SETTING_VALUE, *PAPPLICATIONLAUNCH_SETTING_VALUE; - -typedef enum _POWER_PLATFORM_ROLE { - PlatformRoleUnspecified = 0, - PlatformRoleDesktop, - PlatformRoleMobile, - PlatformRoleWorkstation, - PlatformRoleEnterpriseServer, - PlatformRoleSOHOServer, - PlatformRoleAppliancePC, - PlatformRolePerformanceServer, - PlatformRoleMaximum -} POWER_PLATFORM_ROLE; - #if (NTDDI_VERSION >= NTDDI_WINXP) || !defined(_BATCLASS_) typedef struct { - ULONG Granularity; - ULONG Capacity; + ULONG Granularity; + ULONG Capacity; } BATTERY_REPORTING_SCALE, *PBATTERY_REPORTING_SCALE; #endif /* (NTDDI_VERSION >= NTDDI_WINXP) || !defined(_BATCLASS_) */ #endif /* !_PO_DDK_ */ -#define CORE_PARKING_POLICY_CHANGE_IDEAL 0 -#define CORE_PARKING_POLICY_CHANGE_SINGLE 1 -#define CORE_PARKING_POLICY_CHANGE_ROCKET 2 -#define CORE_PARKING_POLICY_CHANGE_MAX CORE_PARKING_POLICY_CHANGE_ROCKET - -DEFINE_GUID(GUID_MAX_POWER_SAVINGS, 0xA1841308, 0x3541, 0x4FAB, 0xBC, 0x81, 0xF7, 0x15, 0x56, 0xF2, 0x0B, 0x4A ); -DEFINE_GUID(GUID_MIN_POWER_SAVINGS, 0x8C5E7FDA, 0xE8BF, 0x4A96, 0x9A, 0x85, 0xA6, 0xE2, 0x3A, 0x8C, 0x63, 0x5C ); -DEFINE_GUID(GUID_TYPICAL_POWER_SAVINGS, 0x381B4222, 0xF694, 0x41F0, 0x96, 0x85, 0xFF, 0x5B, 0xB2, 0x60, 0xDF, 0x2E ); -DEFINE_GUID(NO_SUBGROUP_GUID, 0xFEA3413E, 0x7E05, 0x4911, 0x9A, 0x71, 0x70, 0x03, 0x31, 0xF1, 0xC2, 0x94 ); -DEFINE_GUID(ALL_POWERSCHEMES_GUID, 0x68A1E95E, 0x13EA, 0x41E1, 0x80, 0x11, 0x0C, 0x49, 0x6C, 0xA4, 0x90, 0xB0 ); -DEFINE_GUID(GUID_POWERSCHEME_PERSONALITY, 0x245D8541, 0x3943, 0x4422, 0xB0, 0x25, 0x13, 0xA7, 0x84, 0xF6, 0x79, 0xB7 ); -DEFINE_GUID(GUID_ACTIVE_POWERSCHEME, 0x31F9F286, 0x5084, 0x42FE, 0xB7, 0x20, 0x2B, 0x02, 0x64, 0x99, 0x37, 0x63 ); -DEFINE_GUID(GUID_VIDEO_SUBGROUP, 0x7516B95F, 0xF776, 0x4464, 0x8C, 0x53, 0x06, 0x16, 0x7F, 0x40, 0xCC, 0x99 ); -DEFINE_GUID(GUID_VIDEO_POWERDOWN_TIMEOUT, 0x3C0BC021, 0xC8A8, 0x4E07, 0xA9, 0x73, 0x6B, 0x14, 0xCB, 0xCB, 0x2B, 0x7E ); -DEFINE_GUID(GUID_VIDEO_ANNOYANCE_TIMEOUT, 0x82DBCF2D, 0xCD67, 0x40C5, 0xBF, 0xDC, 0x9F, 0x1A, 0x5C, 0xCD, 0x46, 0x63 ); -DEFINE_GUID(GUID_VIDEO_ADAPTIVE_PERCENT_INCREASE, 0xEED904DF, 0xB142, 0x4183, 0xB1, 0x0B, 0x5A, 0x11, 0x97, 0xA3, 0x78, 0x64 ); -DEFINE_GUID(GUID_VIDEO_DIM_TIMEOUT, 0x17aaa29b, 0x8b43, 0x4b94, 0xaa, 0xfe, 0x35, 0xf6, 0x4d, 0xaa, 0xf1, 0xee); -DEFINE_GUID(GUID_VIDEO_ADAPTIVE_POWERDOWN, 0x90959D22, 0xD6A1, 0x49B9, 0xAF, 0x93, 0xBC, 0xE8, 0x85, 0xAD, 0x33, 0x5B ); -DEFINE_GUID(GUID_MONITOR_POWER_ON, 0x02731015, 0x4510, 0x4526, 0x99, 0xE6, 0xE5, 0xA1, 0x7E, 0xBD, 0x1A, 0xEA ); -DEFINE_GUID(GUID_DEVICE_POWER_POLICY_VIDEO_BRIGHTNESS, 0xaded5e82L, 0xb909, 0x4619, 0x99, 0x49, 0xf5, 0xd7, 0x1d, 0xac, 0x0b, 0xcb); -DEFINE_GUID(GUID_DEVICE_POWER_POLICY_VIDEO_DIM_BRIGHTNESS, 0xf1fbfde2, 0xa960, 0x4165, 0x9f, 0x88, 0x50, 0x66, 0x79, 0x11, 0xce, 0x96); -DEFINE_GUID(GUID_VIDEO_CURRENT_MONITOR_BRIGHTNESS, 0x8ffee2c6, 0x2d01, 0x46be, 0xad, 0xb9, 0x39, 0x8a, 0xdd, 0xc5, 0xb4, 0xff); -DEFINE_GUID(GUID_VIDEO_ADAPTIVE_DISPLAY_BRIGHTNESS, 0xFBD9AA66, 0x9553, 0x4097, 0xBA, 0x44, 0xED, 0x6E, 0x9D, 0x65, 0xEA, 0xB8); -DEFINE_GUID(GUID_SESSION_DISPLAY_STATE, 0x73A5E93A, 0x5BB1, 0x4F93, 0x89, 0x5B, 0xDB, 0xD0, 0xDA, 0x85, 0x59, 0x67 ); -DEFINE_GUID(GUID_CONSOLE_DISPLAY_STATE, 0x6fe69556, 0x704a, 0x47a0, 0x8f, 0x24, 0xc2, 0x8d, 0x93, 0x6f, 0xda, 0x47); -DEFINE_GUID(GUID_ALLOW_DISPLAY_REQUIRED, 0xA9CEB8DA, 0xCD46, 0x44FB, 0xA9, 0x8B, 0x02, 0xAF, 0x69, 0xDE, 0x46, 0x23 ); -DEFINE_GUID(GUID_DISK_SUBGROUP, 0x0012EE47, 0x9041, 0x4B5D, 0x9B, 0x77, 0x53, 0x5F, 0xBA, 0x8B, 0x14, 0x42 ); -DEFINE_GUID(GUID_DISK_POWERDOWN_TIMEOUT, 0x6738E2C4, 0xE8A5, 0x4A42, 0xB1, 0x6A, 0xE0, 0x40, 0xE7, 0x69, 0x75, 0x6E ); -DEFINE_GUID(GUID_DISK_BURST_IGNORE_THRESHOLD, 0x80e3c60e, 0xbb94, 0x4ad8, 0xbb, 0xe0, 0x0d, 0x31, 0x95, 0xef, 0xc6, 0x63 ); -DEFINE_GUID(GUID_DISK_ADAPTIVE_POWERDOWN, 0x396A32E1, 0x499A, 0x40B2, 0x91, 0x24, 0xA9, 0x6A, 0xFE, 0x70, 0x76, 0x67 ); -DEFINE_GUID(GUID_SLEEP_SUBGROUP, 0x238C9FA8, 0x0AAD, 0x41ED, 0x83, 0xF4, 0x97, 0xBE, 0x24, 0x2C, 0x8F, 0x20 ); -DEFINE_GUID(GUID_SLEEP_IDLE_THRESHOLD, 0x81cd32e0, 0x7833, 0x44f3, 0x87, 0x37, 0x70, 0x81, 0xf3, 0x8d, 0x1f, 0x70 ); -DEFINE_GUID(GUID_STANDBY_TIMEOUT, 0x29F6C1DB, 0x86DA, 0x48C5, 0x9F, 0xDB, 0xF2, 0xB6, 0x7B, 0x1F, 0x44, 0xDA ); -DEFINE_GUID(GUID_UNATTEND_SLEEP_TIMEOUT, 0x7bc4a2f9, 0xd8fc, 0x4469, 0xb0, 0x7b, 0x33, 0xeb, 0x78, 0x5a, 0xac, 0xa0 ); -DEFINE_GUID(GUID_HIBERNATE_TIMEOUT, 0x9D7815A6, 0x7EE4, 0x497E, 0x88, 0x88, 0x51, 0x5A, 0x05, 0xF0, 0x23, 0x64 ); -DEFINE_GUID(GUID_HIBERNATE_FASTS4_POLICY, 0x94AC6D29, 0x73CE, 0x41A6, 0x80, 0x9F, 0x63, 0x63, 0xBA, 0x21, 0xB4, 0x7E ); -DEFINE_GUID(GUID_CRITICAL_POWER_TRANSITION, 0xB7A27025, 0xE569, 0x46c2, 0xA5, 0x04, 0x2B, 0x96, 0xCA, 0xD2, 0x25, 0xA1); -DEFINE_GUID(GUID_SYSTEM_AWAYMODE, 0x98A7F580, 0x01F7, 0x48AA, 0x9C, 0x0F, 0x44, 0x35, 0x2C, 0x29, 0xE5, 0xC0 ); -DEFINE_GUID(GUID_ALLOW_AWAYMODE, 0x25dfa149, 0x5dd1, 0x4736, 0xb5, 0xab, 0xe8, 0xa3, 0x7b, 0x5b, 0x81, 0x87 ); -DEFINE_GUID(GUID_ALLOW_STANDBY_STATES, 0xabfc2519, 0x3608, 0x4c2a, 0x94, 0xea, 0x17, 0x1b, 0x0e, 0xd5, 0x46, 0xab ); -DEFINE_GUID(GUID_ALLOW_RTC_WAKE, 0xBD3B718A, 0x0680, 0x4D9D, 0x8A, 0xB2, 0xE1, 0xD2, 0xB4, 0xAC, 0x80, 0x6D ); -DEFINE_GUID(GUID_ALLOW_SYSTEM_REQUIRED, 0xA4B195F5, 0x8225, 0x47D8, 0x80, 0x12, 0x9D, 0x41, 0x36, 0x97, 0x86, 0xE2 ); -DEFINE_GUID(GUID_SYSTEM_BUTTON_SUBGROUP, 0x4F971E89, 0xEEBD, 0x4455, 0xA8, 0xDE, 0x9E, 0x59, 0x04, 0x0E, 0x73, 0x47 ); -DEFINE_GUID(GUID_POWERBUTTON_ACTION, 0x7648EFA3, 0xDD9C, 0x4E3E, 0xB5, 0x66, 0x50, 0xF9, 0x29, 0x38, 0x62, 0x80 ); -DEFINE_GUID(GUID_POWERBUTTON_ACTION_FLAGS, 0x857E7FAC, 0x034B, 0x4704, 0xAB, 0xB1, 0xBC, 0xA5, 0x4A, 0xA3, 0x14, 0x78 ); -DEFINE_GUID(GUID_SLEEPBUTTON_ACTION, 0x96996BC0, 0xAD50, 0x47EC, 0x92, 0x3B, 0x6F, 0x41, 0x87, 0x4D, 0xD9, 0xEB ); -DEFINE_GUID(GUID_SLEEPBUTTON_ACTION_FLAGS, 0x2A160AB1, 0xB69D, 0x4743, 0xB7, 0x18, 0xBF, 0x14, 0x41, 0xD5, 0xE4, 0x93 ); -DEFINE_GUID(GUID_USERINTERFACEBUTTON_ACTION, 0xA7066653, 0x8D6C, 0x40A8, 0x91, 0x0E, 0xA1, 0xF5, 0x4B, 0x84, 0xC7, 0xE5 ); -DEFINE_GUID(GUID_LIDCLOSE_ACTION, 0x5CA83367, 0x6E45, 0x459F, 0xA2, 0x7B, 0x47, 0x6B, 0x1D, 0x01, 0xC9, 0x36 ); -DEFINE_GUID(GUID_LIDCLOSE_ACTION_FLAGS, 0x97E969AC, 0x0D6C, 0x4D08, 0x92, 0x7C, 0xD7, 0xBD, 0x7A, 0xD7, 0x85, 0x7B ); -DEFINE_GUID(GUID_LIDOPEN_POWERSTATE, 0x99FF10E7, 0x23B1, 0x4C07, 0xA9, 0xD1, 0x5C, 0x32, 0x06, 0xD7, 0x41, 0xB4 ); -DEFINE_GUID(GUID_BATTERY_SUBGROUP, 0xE73A048D, 0xBF27, 0x4F12, 0x97, 0x31, 0x8B, 0x20, 0x76, 0xE8, 0x89, 0x1F ); -DEFINE_GUID(GUID_BATTERY_DISCHARGE_ACTION_0, 0x637EA02F, 0xBBCB, 0x4015, 0x8E, 0x2C, 0xA1, 0xC7, 0xB9, 0xC0, 0xB5, 0x46 ); -DEFINE_GUID(GUID_BATTERY_DISCHARGE_LEVEL_0, 0x9A66D8D7, 0x4FF7, 0x4EF9, 0xB5, 0xA2, 0x5A, 0x32, 0x6C, 0xA2, 0xA4, 0x69 ); -DEFINE_GUID(GUID_BATTERY_DISCHARGE_FLAGS_0, 0x5dbb7c9f, 0x38e9, 0x40d2, 0x97, 0x49, 0x4f, 0x8a, 0x0e, 0x9f, 0x64, 0x0f ); -DEFINE_GUID(GUID_BATTERY_DISCHARGE_ACTION_1, 0xD8742DCB, 0x3E6A, 0x4B3C, 0xB3, 0xFE, 0x37, 0x46, 0x23, 0xCD, 0xCF, 0x06 ); -DEFINE_GUID(GUID_BATTERY_DISCHARGE_LEVEL_1, 0x8183BA9A, 0xE910, 0x48DA, 0x87, 0x69, 0x14, 0xAE, 0x6D, 0xC1, 0x17, 0x0A ); -DEFINE_GUID(GUID_BATTERY_DISCHARGE_FLAGS_1, 0xbcded951, 0x187b, 0x4d05, 0xbc, 0xcc, 0xf7, 0xe5, 0x19, 0x60, 0xc2, 0x58 ); -DEFINE_GUID(GUID_BATTERY_DISCHARGE_ACTION_2, 0x421CBA38, 0x1A8E, 0x4881, 0xAC, 0x89, 0xE3, 0x3A, 0x8B, 0x04, 0xEC, 0xE4 ); -DEFINE_GUID(GUID_BATTERY_DISCHARGE_LEVEL_2, 0x07A07CA2, 0xADAF, 0x40D7, 0xB0, 0x77, 0x53, 0x3A, 0xAD, 0xED, 0x1B, 0xFA ); -DEFINE_GUID(GUID_BATTERY_DISCHARGE_FLAGS_2, 0x7fd2f0c4, 0xfeb7, 0x4da3, 0x81, 0x17, 0xe3, 0xfb, 0xed, 0xc4, 0x65, 0x82 ); -DEFINE_GUID(GUID_BATTERY_DISCHARGE_ACTION_3, 0x80472613, 0x9780, 0x455E, 0xB3, 0x08, 0x72, 0xD3, 0x00, 0x3C, 0xF2, 0xF8 ); -DEFINE_GUID(GUID_BATTERY_DISCHARGE_LEVEL_3, 0x58AFD5A6, 0xC2DD, 0x47D2, 0x9F, 0xBF, 0xEF, 0x70, 0xCC, 0x5C, 0x59, 0x65 ); -DEFINE_GUID(GUID_BATTERY_DISCHARGE_FLAGS_3, 0x73613ccf, 0xdbfa, 0x4279, 0x83, 0x56, 0x49, 0x35, 0xf6, 0xbf, 0x62, 0xf3 ); -DEFINE_GUID(GUID_PROCESSOR_SETTINGS_SUBGROUP, 0x54533251, 0x82BE, 0x4824, 0x96, 0xC1, 0x47, 0xB6, 0x0B, 0x74, 0x0D, 0x00 ); -DEFINE_GUID(GUID_PROCESSOR_THROTTLE_POLICY, 0x57027304, 0x4AF6, 0x4104, 0x92, 0x60, 0xE3, 0xD9, 0x52, 0x48, 0xFC, 0x36 ); -DEFINE_GUID(GUID_PROCESSOR_THROTTLE_MAXIMUM, 0xBC5038F7, 0x23E0, 0x4960, 0x96, 0xDA, 0x33, 0xAB, 0xAF, 0x59, 0x35, 0xEC ); -DEFINE_GUID(GUID_PROCESSOR_THROTTLE_MINIMUM, 0x893DEE8E, 0x2BEF, 0x41E0, 0x89, 0xC6, 0xB5, 0x5D, 0x09, 0x29, 0x96, 0x4C ); -DEFINE_GUID(GUID_PROCESSOR_ALLOW_THROTTLING, 0x3b04d4fd, 0x1cc7, 0x4f23, 0xab, 0x1c, 0xd1, 0x33, 0x78, 0x19, 0xc4, 0xbb ); -DEFINE_GUID(GUID_PROCESSOR_IDLESTATE_POLICY, 0x68f262a7, 0xf621, 0x4069, 0xb9, 0xa5, 0x48, 0x74, 0x16, 0x9b, 0xe2, 0x3c); -DEFINE_GUID(GUID_PROCESSOR_PERFSTATE_POLICY, 0xBBDC3814, 0x18E9, 0x4463, 0x8A, 0x55, 0xD1, 0x97, 0x32, 0x7C, 0x45, 0xC0); -DEFINE_GUID(GUID_PROCESSOR_PERF_INCREASE_THRESHOLD, 0x06cadf0e, 0x64ed, 0x448a, 0x89, 0x27, 0xce, 0x7b, 0xf9, 0x0e, 0xb3, 0x5d ); -DEFINE_GUID(GUID_PROCESSOR_PERF_DECREASE_THRESHOLD, 0x12a0ab44, 0xfe28, 0x4fa9, 0xb3, 0xbd, 0x4b, 0x64, 0xf4, 0x49, 0x60, 0xa6 ); -DEFINE_GUID(GUID_PROCESSOR_PERF_INCREASE_POLICY, 0x465e1f50, 0xb610, 0x473a, 0xab, 0x58, 0x0, 0xd1, 0x7, 0x7d, 0xc4, 0x18); -DEFINE_GUID(GUID_PROCESSOR_PERF_DECREASE_POLICY, 0x40fbefc7, 0x2e9d, 0x4d25, 0xa1, 0x85, 0xc, 0xfd, 0x85, 0x74, 0xba, 0xc6); -DEFINE_GUID(GUID_PROCESSOR_PERF_INCREASE_TIME, 0x984cf492, 0x3bed, 0x4488, 0xa8, 0xf9, 0x42, 0x86, 0xc9, 0x7b, 0xf5, 0xaa); -DEFINE_GUID(GUID_PROCESSOR_PERF_DECREASE_TIME, 0xd8edeb9b, 0x95cf, 0x4f95, 0xa7, 0x3c, 0xb0, 0x61, 0x97, 0x36, 0x93, 0xc8); -DEFINE_GUID(GUID_PROCESSOR_PERF_TIME_CHECK, 0x4d2b0152, 0x7d5c, 0x498b, 0x88, 0xe2, 0x34, 0x34, 0x53, 0x92, 0xa2, 0xc5); -DEFINE_GUID(GUID_PROCESSOR_PERF_BOOST_POLICY, 0x45bcc044, 0xd885, 0x43e2, 0x86, 0x5, 0xee, 0xe, 0xc6, 0xe9, 0x6b, 0x59); -DEFINE_GUID(GUID_PROCESSOR_IDLE_ALLOW_SCALING, 0x6c2993b0, 0x8f48, 0x481f, 0xbc, 0xc6, 0x0, 0xdd, 0x27, 0x42, 0xaa, 0x6); -DEFINE_GUID(GUID_PROCESSOR_IDLE_DISABLE, 0x5d76a2ca, 0xe8c0, 0x402f, 0xa1, 0x33, 0x21, 0x58, 0x49, 0x2d, 0x58, 0xad); -DEFINE_GUID(GUID_PROCESSOR_IDLE_TIME_CHECK, 0xc4581c31, 0x89ab, 0x4597, 0x8e, 0x2b, 0x9c, 0x9c, 0xab, 0x44, 0xe, 0x6b); -DEFINE_GUID(GUID_PROCESSOR_IDLE_DEMOTE_THRESHOLD, 0x4b92d758, 0x5a24, 0x4851, 0xa4, 0x70, 0x81, 0x5d, 0x78, 0xae, 0xe1, 0x19); -DEFINE_GUID(GUID_PROCESSOR_IDLE_PROMOTE_THRESHOLD, 0x7b224883, 0xb3cc, 0x4d79, 0x81, 0x9f, 0x83, 0x74, 0x15, 0x2c, 0xbe, 0x7c); -DEFINE_GUID(GUID_PROCESSOR_CORE_PARKING_INCREASE_THRESHOLD, 0xdf142941, 0x20f3, 0x4edf, 0x9a, 0x4a, 0x9c, 0x83, 0xd3, 0xd7, 0x17, 0xd1 ); -DEFINE_GUID(GUID_PROCESSOR_CORE_PARKING_DECREASE_THRESHOLD, 0x68dd2f27, 0xa4ce, 0x4e11, 0x84, 0x87, 0x37, 0x94, 0xe4, 0x13, 0x5d, 0xfa); -DEFINE_GUID(GUID_PROCESSOR_CORE_PARKING_INCREASE_POLICY, 0xc7be0679, 0x2817, 0x4d69, 0x9d, 0x02, 0x51, 0x9a, 0x53, 0x7e, 0xd0, 0xc6); -DEFINE_GUID(GUID_PROCESSOR_CORE_PARKING_DECREASE_POLICY, 0x71021b41, 0xc749, 0x4d21, 0xbe, 0x74, 0xa0, 0x0f, 0x33, 0x5d, 0x58, 0x2b); -DEFINE_GUID(GUID_PROCESSOR_CORE_PARKING_MAX_CORES, 0xea062031, 0x0e34, 0x4ff1, 0x9b, 0x6d, 0xeb, 0x10, 0x59, 0x33, 0x40, 0x28); -DEFINE_GUID(GUID_PROCESSOR_CORE_PARKING_MIN_CORES, 0x0cc5b647, 0xc1df, 0x4637, 0x89, 0x1a, 0xde, 0xc3, 0x5c, 0x31, 0x85, 0x83); -DEFINE_GUID(GUID_PROCESSOR_CORE_PARKING_INCREASE_TIME, 0x2ddd5a84, 0x5a71, 0x437e, 0x91, 0x2a, 0xdb, 0x0b, 0x8c, 0x78, 0x87, 0x32); -DEFINE_GUID(GUID_PROCESSOR_CORE_PARKING_DECREASE_TIME, 0xdfd10d17, 0xd5eb, 0x45dd, 0x87, 0x7a, 0x9a, 0x34, 0xdd, 0xd1, 0x5c, 0x82); -DEFINE_GUID(GUID_PROCESSOR_CORE_PARKING_AFFINITY_HISTORY_DECREASE_FACTOR, 0x8f7b45e3, 0xc393, 0x480a, 0x87, 0x8c, 0xf6, 0x7a, 0xc3, 0xd0, 0x70, 0x82); -DEFINE_GUID(GUID_PROCESSOR_CORE_PARKING_AFFINITY_HISTORY_THRESHOLD, 0x5b33697b, 0xe89d, 0x4d38, 0xaa, 0x46, 0x9e, 0x7d, 0xfb, 0x7c, 0xd2, 0xf9); -DEFINE_GUID(GUID_PROCESSOR_CORE_PARKING_AFFINITY_WEIGHTING, 0xe70867f1, 0xfa2f, 0x4f4e, 0xae, 0xa1, 0x4d, 0x8a, 0x0b, 0xa2, 0x3b, 0x20); -DEFINE_GUID(GUID_PROCESSOR_CORE_PARKING_OVER_UTILIZATION_HISTORY_DECREASE_FACTOR, 0x1299023c, 0xbc28, 0x4f0a, 0x81, 0xec, 0xd3, 0x29, 0x5a, 0x8d, 0x81, 0x5d); -DEFINE_GUID(GUID_PROCESSOR_CORE_PARKING_OVER_UTILIZATION_HISTORY_THRESHOLD, 0x9ac18e92, 0xaa3c, 0x4e27, 0xb3, 0x07, 0x01, 0xae, 0x37, 0x30, 0x71, 0x29); -DEFINE_GUID(GUID_PROCESSOR_CORE_PARKING_OVER_UTILIZATION_WEIGHTING, 0x8809c2d8, 0xb155, 0x42d4, 0xbc, 0xda, 0x0d, 0x34, 0x56, 0x51, 0xb1, 0xdb); -DEFINE_GUID(GUID_PROCESSOR_CORE_PARKING_OVER_UTILIZATION_THRESHOLD, 0x943c8cb6, 0x6f93, 0x4227, 0xad, 0x87, 0xe9, 0xa3, 0xfe, 0xec, 0x08, 0xd1); -DEFINE_GUID(GUID_PROCESSOR_PARKING_CORE_OVERRIDE, 0xa55612aa, 0xf624, 0x42c6, 0xa4, 0x43, 0x73, 0x97, 0xd0, 0x64, 0xc0, 0x4f); -DEFINE_GUID(GUID_PROCESSOR_PARKING_PERF_STATE, 0x447235c7, 0x6a8d, 0x4cc0, 0x8e, 0x24, 0x9e, 0xaf, 0x70, 0xb9, 0x6e, 0x2b); -DEFINE_GUID(GUID_PROCESSOR_PERF_HISTORY, 0x7d24baa7, 0x0b84, 0x480f, 0x84, 0x0c, 0x1b, 0x07, 0x43, 0xc0, 0x0f, 0x5f); -DEFINE_GUID(GUID_SYSTEM_COOLING_POLICY, 0x94D3A615, 0xA899, 0x4AC5, 0xAE, 0x2B, 0xE4, 0xD8, 0xF6, 0x34, 0x36, 0x7F); -DEFINE_GUID(GUID_LOCK_CONSOLE_ON_WAKE, 0x0E796BDB, 0x100D, 0x47D6, 0xA2, 0xD5, 0xF7, 0xD2, 0xDA, 0xA5, 0x1F, 0x51 ); -DEFINE_GUID(GUID_DEVICE_IDLE_POLICY, 0x4faab71a, 0x92e5, 0x4726, 0xb5, 0x31, 0x22, 0x45, 0x59, 0x67, 0x2d, 0x19 ); -DEFINE_GUID(GUID_ACDC_POWER_SOURCE, 0x5D3E9A59, 0xE9D5, 0x4B00, 0xA6, 0xBD, 0xFF, 0x34, 0xFF, 0x51, 0x65, 0x48 ); -DEFINE_GUID(GUID_LIDSWITCH_STATE_CHANGE, 0xBA3E0F4D, 0xB817, 0x4094, 0xA2, 0xD1, 0xD5, 0x63, 0x79, 0xE6, 0xA0, 0xF3 ); -DEFINE_GUID(GUID_BATTERY_PERCENTAGE_REMAINING, 0xA7AD8041, 0xB45A, 0x4CAE, 0x87, 0xA3, 0xEE, 0xCB, 0xB4, 0x68, 0xA9, 0xE1 ); -DEFINE_GUID(GUID_IDLE_BACKGROUND_TASK, 0x515C31D8, 0xF734, 0x163D, 0xA0, 0xFD, 0x11, 0xA0, 0x8C, 0x91, 0xE8, 0xF1 ); -DEFINE_GUID(GUID_BACKGROUND_TASK_NOTIFICATION, 0xCF23F240, 0x2A54, 0x48D8, 0xB1, 0x14, 0xDE, 0x15, 0x18, 0xFF, 0x05, 0x2E ); -DEFINE_GUID(GUID_APPLAUNCH_BUTTON, 0x1A689231, 0x7399, 0x4E9A, 0x8F, 0x99, 0xB7, 0x1F, 0x99, 0x9D, 0xB3, 0xFA ); -DEFINE_GUID(GUID_PCIEXPRESS_SETTINGS_SUBGROUP, 0x501a4d13, 0x42af,0x4429, 0x9f, 0xd1, 0xa8, 0x21, 0x8c, 0x26, 0x8e, 0x20 ); -DEFINE_GUID(GUID_PCIEXPRESS_ASPM_POLICY, 0xee12f906, 0xd277, 0x404b, 0xb6, 0xda, 0xe5, 0xfa, 0x1a, 0x57, 0x6d, 0xf5 ); -DEFINE_GUID(GUID_ENABLE_SWITCH_FORCED_SHUTDOWN, 0x833a6b62, 0xdfa4, 0x46d1, 0x82, 0xf8, 0xe0, 0x9e, 0x34, 0xd0, 0x29, 0xd6 ); - -#define PERFSTATE_POLICY_CHANGE_IDEAL 0 -#define PERFSTATE_POLICY_CHANGE_SINGLE 1 -#define PERFSTATE_POLICY_CHANGE_ROCKET 2 -#define PERFSTATE_POLICY_CHANGE_MAX PERFSTATE_POLICY_CHANGE_ROCKET - -#define PROCESSOR_PERF_BOOST_POLICY_DISABLED 0 -#define PROCESSOR_PERF_BOOST_POLICY_MAX 100 - -#define POWER_DEVICE_IDLE_POLICY_PERFORMANCE 0 -#define POWER_DEVICE_IDLE_POLICY_CONSERVATIVE 1 - typedef VOID -(NTAPI REQUEST_POWER_COMPLETE)( +(DDKAPI *PREQUEST_POWER_COMPLETE)( IN struct _DEVICE_OBJECT *DeviceObject, IN UCHAR MinorFunction, IN POWER_STATE PowerState, IN PVOID Context, IN struct _IO_STATUS_BLOCK *IoStatus); -typedef REQUEST_POWER_COMPLETE *PREQUEST_POWER_COMPLETE; typedef NTSTATUS -(NTAPI POWER_SETTING_CALLBACK)( +(DDKAPI POWER_SETTING_CALLBACK)( IN LPCGUID SettingGuid, IN PVOID Value, IN ULONG ValueLength, IN OUT PVOID Context OPTIONAL); + typedef POWER_SETTING_CALLBACK *PPOWER_SETTING_CALLBACK; +#define PO_CB_SYSTEM_POWER_POLICY 0 +#define PO_CB_AC_STATUS 1 +#define PO_CB_BUTTON_COLLISION 2 +#define PO_CB_SYSTEM_STATE_LOCK 3 +#define PO_CB_LID_SWITCH_STATE 4 +#define PO_CB_PROCESSOR_POWER_POLICY 5 /****************************************************************************** * Configuration Manager Types * @@ -2699,11 +1936,11 @@ typedef int CM_RESOURCE_TYPE; #define CmResourceTypeDma 4 #define CmResourceTypeDeviceSpecific 5 #define CmResourceTypeBusNumber 6 -#define CmResourceTypeNonArbitrated 128 -#define CmResourceTypeConfigData 128 -#define CmResourceTypeDevicePrivate 129 -#define CmResourceTypePcCardConfig 130 -#define CmResourceTypeMfCardConfig 131 +#define CmResourceTypeNonArbitrated 128 +#define CmResourceTypeConfigData 128 +#define CmResourceTypeDevicePrivate 129 +#define CmResourceTypePcCardConfig 130 +#define CmResourceTypeMfCardConfig 131 /* KEY_VALUE_Xxx.Type */ #define REG_NONE 0 @@ -2717,9 +1954,9 @@ typedef int CM_RESOURCE_TYPE; #define REG_MULTI_SZ 7 #define REG_RESOURCE_LIST 8 #define REG_FULL_RESOURCE_DESCRIPTOR 9 -#define REG_RESOURCE_REQUIREMENTS_LIST 10 -#define REG_QWORD 11 -#define REG_QWORD_LITTLE_ENDIAN 11 +#define REG_RESOURCE_REQUIREMENTS_LIST 10 +#define REG_QWORD 11 +#define REG_QWORD_LITTLE_ENDIAN 11 /* Registry Access Rights */ #define KEY_QUERY_VALUE (0x0001) @@ -2775,15 +2012,6 @@ typedef int CM_RESOURCE_TYPE; REG_OPTION_BACKUP_RESTORE |\ REG_OPTION_OPEN_LINK) -#define REG_OPEN_LEGAL_OPTION \ - (REG_OPTION_RESERVED |\ - REG_OPTION_BACKUP_RESTORE |\ - REG_OPTION_OPEN_LINK) - -#define REG_STANDARD_FORMAT 1 -#define REG_LATEST_FORMAT 2 -#define REG_NO_COMPRESSION 4 - /* Key creation/open disposition */ #define REG_CREATED_NEW_KEY (0x00000001L) #define REG_OPENED_EXISTING_KEY (0x00000002L) @@ -2799,7 +2027,6 @@ typedef int CM_RESOURCE_TYPE; #define REG_HIVE_EXACT_FILE_GROWTH (0x00000080L) #define REG_HIVE_NO_RM (0x00000100L) #define REG_HIVE_SINGLE_LOG (0x00000200L) -#define REG_BOOT_HIVE (0x00000400L) /* Unload Flags */ #define REG_FORCE_UNLOAD 1 @@ -2816,6 +2043,27 @@ typedef int CM_RESOURCE_TYPE; REG_NOTIFY_CHANGE_LAST_SET |\ REG_NOTIFY_CHANGE_SECURITY) +typedef struct _CM_FLOPPY_DEVICE_DATA { + USHORT Version; + USHORT Revision; + CHAR Size[8]; + ULONG MaxDensity; + ULONG MountDensity; + UCHAR StepRateHeadUnloadTime; + UCHAR HeadLoadTime; + UCHAR MotorOffTime; + UCHAR SectorLengthCode; + UCHAR SectorPerTrack; + UCHAR ReadWriteGapLength; + UCHAR DataTransferLength; + UCHAR FormatGapLength; + UCHAR FormatFillCharacter; + UCHAR HeadSettleTime; + UCHAR MotorSettleTime; + UCHAR MaximumTrackValue; + UCHAR DataTransferRate; +} CM_FLOPPY_DEVICE_DATA, *PCM_FLOPPY_DEVICE_DATA; + #include typedef struct _CM_PARTIAL_RESOURCE_DESCRIPTOR { UCHAR Type; @@ -2915,15 +2163,15 @@ typedef struct _CM_PARTIAL_RESOURCE_DESCRIPTOR { #define CmResourceTypeDeviceSpecific 5 #define CmResourceTypeBusNumber 6 #define CmResourceTypeMemoryLarge 7 -#define CmResourceTypeNonArbitrated 128 -#define CmResourceTypeConfigData 128 -#define CmResourceTypeDevicePrivate 129 -#define CmResourceTypePcCardConfig 130 -#define CmResourceTypeMfCardConfig 131 +#define CmResourceTypeNonArbitrated 128 +#define CmResourceTypeConfigData 128 +#define CmResourceTypeDevicePrivate 129 +#define CmResourceTypePcCardConfig 130 +#define CmResourceTypeMfCardConfig 131 /* CM_PARTIAL_RESOURCE_DESCRIPTOR.ShareDisposition */ typedef enum _CM_SHARE_DISPOSITION { - CmResourceShareUndetermined = 0, + CmResourceShareUndetermined, CmResourceShareDeviceExclusive, CmResourceShareDriverExclusive, CmResourceShareShared @@ -2946,10 +2194,6 @@ typedef enum _CM_SHARE_DISPOSITION { #define CM_RESOURCE_INTERRUPT_MESSAGE 0x0002 #define CM_RESOURCE_INTERRUPT_POLICY_INCLUDED 0x0004 -#define CM_RESOURCE_INTERRUPT_LEVEL_LATCHED_BITS 0x0001 - -#define CM_RESOURCE_INTERRUPT_MESSAGE_TOKEN ((ULONG)-2) - /* CM_PARTIAL_RESOURCE_DESCRIPTOR.Flags if Type = CmResourceTypeMemory */ #define CM_RESOURCE_MEMORY_READ_WRITE 0x0000 #define CM_RESOURCE_MEMORY_READ_ONLY 0x0001 @@ -2963,15 +2207,6 @@ typedef enum _CM_SHARE_DISPOSITION { #define CM_RESOURCE_MEMORY_BAR 0x0080 #define CM_RESOURCE_MEMORY_COMPAT_FOR_INACCESSIBLE_RANGE 0x0100 -#define CM_RESOURCE_MEMORY_LARGE 0x0E00 -#define CM_RESOURCE_MEMORY_LARGE_40 0x0200 -#define CM_RESOURCE_MEMORY_LARGE_48 0x0400 -#define CM_RESOURCE_MEMORY_LARGE_64 0x0800 - -#define CM_RESOURCE_MEMORY_LARGE_40_MAXLEN 0x000000FFFFFFFF00 -#define CM_RESOURCE_MEMORY_LARGE_48_MAXLEN 0x0000FFFFFFFF0000 -#define CM_RESOURCE_MEMORY_LARGE_64_MAXLEN 0xFFFFFFFF00000000 - /* CM_PARTIAL_RESOURCE_DESCRIPTOR.Flags if Type = CmResourceTypeDma */ #define CM_RESOURCE_DMA_8 0x0000 #define CM_RESOURCE_DMA_16 0x0001 @@ -2982,92 +2217,33 @@ typedef enum _CM_SHARE_DISPOSITION { #define CM_RESOURCE_DMA_TYPE_B 0x0020 #define CM_RESOURCE_DMA_TYPE_F 0x0040 -typedef struct _DEVICE_FLAGS { - ULONG Failed:1; - ULONG ReadOnly:1; - ULONG Removable:1; - ULONG ConsoleIn:1; - ULONG ConsoleOut:1; - ULONG Input:1; - ULONG Output:1; -} DEVICE_FLAGS, *PDEVICE_FLAGS; - -typedef enum _INTERFACE_TYPE { - InterfaceTypeUndefined = -1, - Internal, - Isa, - Eisa, - MicroChannel, - TurboChannel, - PCIBus, - VMEBus, - NuBus, - PCMCIABus, - CBus, - MPIBus, - MPSABus, - ProcessorInternal, - InternalPowerBus, - PNPISABus, - PNPBus, - Vmcs, - MaximumInterfaceType -} INTERFACE_TYPE, *PINTERFACE_TYPE; - -typedef struct _CM_COMPONENT_INFORMATION { - DEVICE_FLAGS Flags; - ULONG Version; - ULONG Key; - KAFFINITY AffinityMask; -} CM_COMPONENT_INFORMATION, *PCM_COMPONENT_INFORMATION; - -typedef struct _CM_ROM_BLOCK { - ULONG Address; - ULONG Size; -} CM_ROM_BLOCK, *PCM_ROM_BLOCK; - typedef struct _CM_PARTIAL_RESOURCE_LIST { - USHORT Version; - USHORT Revision; - ULONG Count; + USHORT Version; + USHORT Revision; + ULONG Count; CM_PARTIAL_RESOURCE_DESCRIPTOR PartialDescriptors[1]; } CM_PARTIAL_RESOURCE_LIST, *PCM_PARTIAL_RESOURCE_LIST; typedef struct _CM_FULL_RESOURCE_DESCRIPTOR { - INTERFACE_TYPE InterfaceType; - ULONG BusNumber; - CM_PARTIAL_RESOURCE_LIST PartialResourceList; + INTERFACE_TYPE InterfaceType; + ULONG BusNumber; + CM_PARTIAL_RESOURCE_LIST PartialResourceList; } CM_FULL_RESOURCE_DESCRIPTOR, *PCM_FULL_RESOURCE_DESCRIPTOR; typedef struct _CM_RESOURCE_LIST { - ULONG Count; - CM_FULL_RESOURCE_DESCRIPTOR List[1]; + ULONG Count; + CM_FULL_RESOURCE_DESCRIPTOR List[1]; } CM_RESOURCE_LIST, *PCM_RESOURCE_LIST; -typedef struct _PNP_BUS_INFORMATION { - GUID BusTypeGuid; - INTERFACE_TYPE LegacyBusType; - ULONG BusNumber; -} PNP_BUS_INFORMATION, *PPNP_BUS_INFORMATION; - #include - typedef struct _CM_INT13_DRIVE_PARAMETER { - USHORT DriveSelect; - ULONG MaxCylinders; - USHORT SectorsPerTrack; - USHORT MaxHeads; - USHORT NumberDrives; + USHORT DriveSelect; + ULONG MaxCylinders; + USHORT SectorsPerTrack; + USHORT MaxHeads; + USHORT NumberDrives; } CM_INT13_DRIVE_PARAMETER, *PCM_INT13_DRIVE_PARAMETER; -typedef struct _CM_MCA_POS_DATA { - USHORT AdapterId; - UCHAR PosData1; - UCHAR PosData2; - UCHAR PosData3; - UCHAR PosData4; -} CM_MCA_POS_DATA, *PCM_MCA_POS_DATA; - typedef struct _CM_PNP_BIOS_DEVICE_NODE { USHORT Size; UCHAR Node; @@ -3091,99 +2267,66 @@ typedef struct _CM_PNP_BIOS_INSTALLATION_CHECK { USHORT RealModeDataBaseAddress; ULONG ProtectedModeDataBaseAddress; } CM_PNP_BIOS_INSTALLATION_CHECK, *PCM_PNP_BIOS_INSTALLATION_CHECK; - #include typedef struct _CM_DISK_GEOMETRY_DEVICE_DATA { - ULONG BytesPerSector; - ULONG NumberOfCylinders; - ULONG SectorsPerTrack; - ULONG NumberOfHeads; + ULONG BytesPerSector; + ULONG NumberOfCylinders; + ULONG SectorsPerTrack; + ULONG NumberOfHeads; } CM_DISK_GEOMETRY_DEVICE_DATA, *PCM_DISK_GEOMETRY_DEVICE_DATA; typedef struct _CM_KEYBOARD_DEVICE_DATA { - USHORT Version; - USHORT Revision; - UCHAR Type; - UCHAR Subtype; - USHORT KeyboardFlags; + USHORT Version; + USHORT Revision; + UCHAR Type; + UCHAR Subtype; + USHORT KeyboardFlags; } CM_KEYBOARD_DEVICE_DATA, *PCM_KEYBOARD_DEVICE_DATA; -typedef struct _CM_SCSI_DEVICE_DATA { - USHORT Version; - USHORT Revision; - UCHAR HostIdentifier; -} CM_SCSI_DEVICE_DATA, *PCM_SCSI_DEVICE_DATA; +typedef struct _CM_MCA_POS_DATA { + USHORT AdapterId; + UCHAR PosData1; + UCHAR PosData2; + UCHAR PosData3; + UCHAR PosData4; +} CM_MCA_POS_DATA, *PCM_MCA_POS_DATA; -typedef struct _CM_VIDEO_DEVICE_DATA { - USHORT Version; - USHORT Revision; - ULONG VideoClock; -} CM_VIDEO_DEVICE_DATA, *PCM_VIDEO_DEVICE_DATA; +#if (NTDDI_VERSION >= NTDDI_WINXP) +typedef struct CM_Power_Data_s { + ULONG PD_Size; + DEVICE_POWER_STATE PD_MostRecentPowerState; + ULONG PD_Capabilities; + ULONG PD_D1Latency; + ULONG PD_D2Latency; + ULONG PD_D3Latency; + DEVICE_POWER_STATE PD_PowerStateMapping[PowerSystemMaximum]; + SYSTEM_POWER_STATE PD_DeepestSystemWake; +} CM_POWER_DATA, *PCM_POWER_DATA; -typedef struct _CM_SONIC_DEVICE_DATA { - USHORT Version; - USHORT Revision; - USHORT DataConfigurationRegister; - UCHAR EthernetAddress[8]; -} CM_SONIC_DEVICE_DATA, *PCM_SONIC_DEVICE_DATA; +#define PDCAP_D0_SUPPORTED 0x00000001 +#define PDCAP_D1_SUPPORTED 0x00000002 +#define PDCAP_D2_SUPPORTED 0x00000004 +#define PDCAP_D3_SUPPORTED 0x00000008 +#define PDCAP_WAKE_FROM_D0_SUPPORTED 0x00000010 +#define PDCAP_WAKE_FROM_D1_SUPPORTED 0x00000020 +#define PDCAP_WAKE_FROM_D2_SUPPORTED 0x00000040 +#define PDCAP_WAKE_FROM_D3_SUPPORTED 0x00000080 +#define PDCAP_WARM_EJECT_SUPPORTED 0x00000100 -typedef struct _CM_SERIAL_DEVICE_DATA { - USHORT Version; - USHORT Revision; - ULONG BaudClock; -} CM_SERIAL_DEVICE_DATA, *PCM_SERIAL_DEVICE_DATA; +#endif /* (NTDDI_VERSION >= NTDDI_WINXP) */ -typedef struct _CM_MONITOR_DEVICE_DATA { - USHORT Version; - USHORT Revision; - USHORT HorizontalScreenSize; - USHORT VerticalScreenSize; - USHORT HorizontalResolution; - USHORT VerticalResolution; - USHORT HorizontalDisplayTimeLow; - USHORT HorizontalDisplayTime; - USHORT HorizontalDisplayTimeHigh; - USHORT HorizontalBackPorchLow; - USHORT HorizontalBackPorch; - USHORT HorizontalBackPorchHigh; - USHORT HorizontalFrontPorchLow; - USHORT HorizontalFrontPorch; - USHORT HorizontalFrontPorchHigh; - USHORT HorizontalSyncLow; - USHORT HorizontalSync; - USHORT HorizontalSyncHigh; - USHORT VerticalBackPorchLow; - USHORT VerticalBackPorch; - USHORT VerticalBackPorchHigh; - USHORT VerticalFrontPorchLow; - USHORT VerticalFrontPorch; - USHORT VerticalFrontPorchHigh; - USHORT VerticalSyncLow; - USHORT VerticalSync; - USHORT VerticalSyncHigh; -} CM_MONITOR_DEVICE_DATA, *PCM_MONITOR_DEVICE_DATA; +typedef struct _CM_SCSI_DEVICE_DATA { + USHORT Version; + USHORT Revision; + UCHAR HostIdentifier; +} CM_SCSI_DEVICE_DATA, *PCM_SCSI_DEVICE_DATA; -typedef struct _CM_FLOPPY_DEVICE_DATA { - USHORT Version; - USHORT Revision; - CHAR Size[8]; - ULONG MaxDensity; - ULONG MountDensity; - UCHAR StepRateHeadUnloadTime; - UCHAR HeadLoadTime; - UCHAR MotorOffTime; - UCHAR SectorLengthCode; - UCHAR SectorPerTrack; - UCHAR ReadWriteGapLength; - UCHAR DataTransferLength; - UCHAR FormatGapLength; - UCHAR FormatFillCharacter; - UCHAR HeadSettleTime; - UCHAR MotorSettleTime; - UCHAR MaximumTrackValue; - UCHAR DataTransferRate; -} CM_FLOPPY_DEVICE_DATA, *PCM_FLOPPY_DEVICE_DATA; +typedef struct _CM_SERIAL_DEVICE_DATA { + USHORT Version; + USHORT Revision; + ULONG BaudClock; +} CM_SERIAL_DEVICE_DATA, *PCM_SERIAL_DEVICE_DATA; typedef enum _KEY_INFORMATION_CLASS { KeyBasicInformation, @@ -3191,101 +2334,73 @@ typedef enum _KEY_INFORMATION_CLASS { KeyFullInformation, KeyNameInformation, KeyCachedInformation, - KeyFlagsInformation, - KeyVirtualizationInformation, - KeyHandleTagsInformation, - MaxKeyInfoClass + KeyFlagsInformation } KEY_INFORMATION_CLASS; typedef struct _KEY_BASIC_INFORMATION { - LARGE_INTEGER LastWriteTime; - ULONG TitleIndex; - ULONG NameLength; - WCHAR Name[1]; + LARGE_INTEGER LastWriteTime; + ULONG TitleIndex; + ULONG NameLength; + WCHAR Name[1]; } KEY_BASIC_INFORMATION, *PKEY_BASIC_INFORMATION; -typedef struct _KEY_CONTROL_FLAGS_INFORMATION { - ULONG ControlFlags; -} KEY_CONTROL_FLAGS_INFORMATION, *PKEY_CONTROL_FLAGS_INFORMATION; - typedef struct _KEY_FULL_INFORMATION { - LARGE_INTEGER LastWriteTime; - ULONG TitleIndex; - ULONG ClassOffset; - ULONG ClassLength; - ULONG SubKeys; - ULONG MaxNameLen; - ULONG MaxClassLen; - ULONG Values; - ULONG MaxValueNameLen; - ULONG MaxValueDataLen; - WCHAR Class[1]; + LARGE_INTEGER LastWriteTime; + ULONG TitleIndex; + ULONG ClassOffset; + ULONG ClassLength; + ULONG SubKeys; + ULONG MaxNameLen; + ULONG MaxClassLen; + ULONG Values; + ULONG MaxValueNameLen; + ULONG MaxValueDataLen; + WCHAR Class[1]; } KEY_FULL_INFORMATION, *PKEY_FULL_INFORMATION; -typedef struct _KEY_HANDLE_TAGS_INFORMATION { - ULONG HandleTags; -} KEY_HANDLE_TAGS_INFORMATION, *PKEY_HANDLE_TAGS_INFORMATION; - typedef struct _KEY_NODE_INFORMATION { - LARGE_INTEGER LastWriteTime; - ULONG TitleIndex; - ULONG ClassOffset; - ULONG ClassLength; - ULONG NameLength; - WCHAR Name[1]; + LARGE_INTEGER LastWriteTime; + ULONG TitleIndex; + ULONG ClassOffset; + ULONG ClassLength; + ULONG NameLength; + WCHAR Name[1]; } KEY_NODE_INFORMATION, *PKEY_NODE_INFORMATION; -typedef enum _KEY_SET_INFORMATION_CLASS { - KeyWriteTimeInformation, - KeyWow64FlagsInformation, - KeyControlFlagsInformation, - KeySetVirtualizationInformation, - KeySetDebugInformation, - KeySetHandleTagsInformation, - MaxKeySetInfoClass -} KEY_SET_INFORMATION_CLASS; - -typedef struct _KEY_SET_VIRTUALIZATION_INFORMATION { - ULONG VirtualTarget:1; - ULONG VirtualStore:1; - ULONG VirtualSource:1; - ULONG Reserved:29; -} KEY_SET_VIRTUALIZATION_INFORMATION, *PKEY_SET_VIRTUALIZATION_INFORMATION; - typedef struct _KEY_VALUE_BASIC_INFORMATION { - ULONG TitleIndex; - ULONG Type; - ULONG NameLength; - WCHAR Name[1]; + ULONG TitleIndex; + ULONG Type; + ULONG NameLength; + WCHAR Name[1]; } KEY_VALUE_BASIC_INFORMATION, *PKEY_VALUE_BASIC_INFORMATION; typedef struct _KEY_VALUE_FULL_INFORMATION { - ULONG TitleIndex; - ULONG Type; - ULONG DataOffset; - ULONG DataLength; - ULONG NameLength; - WCHAR Name[1]; + ULONG TitleIndex; + ULONG Type; + ULONG DataOffset; + ULONG DataLength; + ULONG NameLength; + WCHAR Name[1]; } KEY_VALUE_FULL_INFORMATION, *PKEY_VALUE_FULL_INFORMATION; typedef struct _KEY_VALUE_PARTIAL_INFORMATION { - ULONG TitleIndex; - ULONG Type; - ULONG DataLength; - UCHAR Data[1]; + ULONG TitleIndex; + ULONG Type; + ULONG DataLength; + UCHAR Data[1]; } KEY_VALUE_PARTIAL_INFORMATION, *PKEY_VALUE_PARTIAL_INFORMATION; typedef struct _KEY_VALUE_PARTIAL_INFORMATION_ALIGN64 { - ULONG Type; - ULONG DataLength; - UCHAR Data[1]; + ULONG Type; + ULONG DataLength; + UCHAR Data[1]; } KEY_VALUE_PARTIAL_INFORMATION_ALIGN64, *PKEY_VALUE_PARTIAL_INFORMATION_ALIGN64; typedef struct _KEY_VALUE_ENTRY { - PUNICODE_STRING ValueName; - ULONG DataLength; - ULONG DataOffset; - ULONG Type; + PUNICODE_STRING ValueName; + ULONG DataLength; + ULONG DataOffset; + ULONG Type; } KEY_VALUE_ENTRY, *PKEY_VALUE_ENTRY; typedef enum _KEY_VALUE_INFORMATION_CLASS { @@ -3296,14 +2411,20 @@ typedef enum _KEY_VALUE_INFORMATION_CLASS { KeyValuePartialInformationAlign64 } KEY_VALUE_INFORMATION_CLASS; -typedef struct _KEY_WOW64_FLAGS_INFORMATION { - ULONG UserFlags; -} KEY_WOW64_FLAGS_INFORMATION, *PKEY_WOW64_FLAGS_INFORMATION; - typedef struct _KEY_WRITE_TIME_INFORMATION { - LARGE_INTEGER LastWriteTime; + LARGE_INTEGER LastWriteTime; } KEY_WRITE_TIME_INFORMATION, *PKEY_WRITE_TIME_INFORMATION; +typedef enum _KEY_SET_INFORMATION_CLASS { + KeyWriteTimeInformation, + KeyWow64FlagsInformation, + KeyControlFlagsInformation, + KeySetVirtualizationInformation, + KeySetDebugInformation, + KeySetHandleTagsInformation, + MaxKeySetInfoClass +} KEY_SET_INFORMATION_CLASS; + typedef enum _REG_NOTIFY_CLASS { RegNtDeleteKey, RegNtPreDeleteKey = RegNtDeleteKey, @@ -3367,11 +2488,11 @@ typedef enum _REG_NOTIFY_CLASS { } REG_NOTIFY_CLASS, *PREG_NOTIFY_CLASS; typedef NTSTATUS -(NTAPI EX_CALLBACK_FUNCTION)( - IN PVOID CallbackContext, - IN PVOID Argument1, - IN PVOID Argument2); -typedef EX_CALLBACK_FUNCTION *PEX_CALLBACK_FUNCTION; +(NTAPI *PEX_CALLBACK_FUNCTION)( + IN PVOID CallbackContext, + IN PVOID Argument1, + IN PVOID Argument2 +); typedef struct _REG_DELETE_KEY_INFORMATION { PVOID Object; @@ -3473,54 +2594,6 @@ typedef struct _REG_QUERY_MULTIPLE_VALUE_KEY_INFORMATION { PVOID Reserved; } REG_QUERY_MULTIPLE_VALUE_KEY_INFORMATION, *PREG_QUERY_MULTIPLE_VALUE_KEY_INFORMATION; -typedef struct _REG_RENAME_KEY_INFORMATION { - PVOID Object; - PUNICODE_STRING NewName; - PVOID CallContext; - PVOID ObjectContext; - PVOID Reserved; -} REG_RENAME_KEY_INFORMATION, *PREG_RENAME_KEY_INFORMATION; - -typedef struct _REG_CREATE_KEY_INFORMATION { - PUNICODE_STRING CompleteName; - PVOID RootObject; - PVOID ObjectType; - ULONG CreateOptions; - PUNICODE_STRING Class; - PVOID SecurityDescriptor; - PVOID SecurityQualityOfService; - ACCESS_MASK DesiredAccess; - ACCESS_MASK GrantedAccess; - PULONG Disposition; - PVOID *ResultObject; - PVOID CallContext; - PVOID RootObjectContext; - PVOID Transaction; - PVOID Reserved; -} REG_CREATE_KEY_INFORMATION, REG_OPEN_KEY_INFORMATION,*PREG_CREATE_KEY_INFORMATION, *PREG_OPEN_KEY_INFORMATION; - -typedef struct _REG_CREATE_KEY_INFORMATION_V1 { - PUNICODE_STRING CompleteName; - PVOID RootObject; - PVOID ObjectType; - ULONG Options; - PUNICODE_STRING Class; - PVOID SecurityDescriptor; - PVOID SecurityQualityOfService; - ACCESS_MASK DesiredAccess; - ACCESS_MASK GrantedAccess; - PULONG Disposition; - PVOID *ResultObject; - PVOID CallContext; - PVOID RootObjectContext; - PVOID Transaction; - ULONG_PTR Version; - PUNICODE_STRING RemainingName; - ULONG Wow64Flags; - ULONG Attributes; - KPROCESSOR_MODE CheckAccessMode; -} REG_CREATE_KEY_INFORMATION_V1, REG_OPEN_KEY_INFORMATION_V1,*PREG_CREATE_KEY_INFORMATION_V1, *PREG_OPEN_KEY_INFORMATION_V1; - typedef struct _REG_PRE_CREATE_KEY_INFORMATION { PUNICODE_STRING CompleteName; } REG_PRE_CREATE_KEY_INFORMATION, REG_PRE_OPEN_KEY_INFORMATION,*PREG_PRE_CREATE_KEY_INFORMATION, *PREG_PRE_OPEN_KEY_INFORMATION;; @@ -3548,180 +2621,151 @@ typedef struct _REG_KEY_HANDLE_CLOSE_INFORMATION { PVOID Reserved; } REG_KEY_HANDLE_CLOSE_INFORMATION, *PREG_KEY_HANDLE_CLOSE_INFORMATION; -#if (NTDDI_VERSION >= NTDDI_VISTA) - -typedef struct _REG_LOAD_KEY_INFORMATION { - PVOID Object; - PUNICODE_STRING KeyName; - PUNICODE_STRING SourceFile; - ULONG Flags; - PVOID TrustClassObject; - PVOID UserEvent; - ACCESS_MASK DesiredAccess; - PHANDLE RootHandle; - PVOID CallContext; - PVOID ObjectContext; - PVOID Reserved; -} REG_LOAD_KEY_INFORMATION, *PREG_LOAD_KEY_INFORMATION; - -typedef struct _REG_UNLOAD_KEY_INFORMATION { - PVOID Object; - PVOID UserEvent; - PVOID CallContext; - PVOID ObjectContext; - PVOID Reserved; -} REG_UNLOAD_KEY_INFORMATION, *PREG_UNLOAD_KEY_INFORMATION; +/****************************************************************************** + * I/O Manager Types * + ******************************************************************************/ -typedef struct _REG_CALLBACK_CONTEXT_CLEANUP_INFORMATION { - PVOID Object; - PVOID ObjectContext; - PVOID Reserved; -} REG_CALLBACK_CONTEXT_CLEANUP_INFORMATION, *PREG_CALLBACK_CONTEXT_CLEANUP_INFORMATION; + /* PCI_COMMON_CONFIG.Command */ +#define PCI_ENABLE_IO_SPACE 0x0001 +#define PCI_ENABLE_MEMORY_SPACE 0x0002 +#define PCI_ENABLE_BUS_MASTER 0x0004 +#define PCI_ENABLE_SPECIAL_CYCLES 0x0008 +#define PCI_ENABLE_WRITE_AND_INVALIDATE 0x0010 +#define PCI_ENABLE_VGA_COMPATIBLE_PALETTE 0x0020 +#define PCI_ENABLE_PARITY 0x0040 +#define PCI_ENABLE_WAIT_CYCLE 0x0080 +#define PCI_ENABLE_SERR 0x0100 +#define PCI_ENABLE_FAST_BACK_TO_BACK 0x0200 +#define PCI_DISABLE_LEVEL_INTERRUPT 0x0400 -typedef struct _REG_QUERY_KEY_SECURITY_INFORMATION { - PVOID Object; - PSECURITY_INFORMATION SecurityInformation; - PSECURITY_DESCRIPTOR SecurityDescriptor; - PULONG Length; - PVOID CallContext; - PVOID ObjectContext; - PVOID Reserved; -} REG_QUERY_KEY_SECURITY_INFORMATION, *PREG_QUERY_KEY_SECURITY_INFORMATION; - -typedef struct _REG_SET_KEY_SECURITY_INFORMATION { - PVOID Object; - PSECURITY_INFORMATION SecurityInformation; - PSECURITY_DESCRIPTOR SecurityDescriptor; - PVOID CallContext; - PVOID ObjectContext; - PVOID Reserved; -} REG_SET_KEY_SECURITY_INFORMATION, *PREG_SET_KEY_SECURITY_INFORMATION; - -typedef struct _REG_RESTORE_KEY_INFORMATION { - PVOID Object; - HANDLE FileHandle; - ULONG Flags; - PVOID CallContext; - PVOID ObjectContext; - PVOID Reserved; -} REG_RESTORE_KEY_INFORMATION, *PREG_RESTORE_KEY_INFORMATION; - -typedef struct _REG_SAVE_KEY_INFORMATION { - PVOID Object; - HANDLE FileHandle; - ULONG Format; - PVOID CallContext; - PVOID ObjectContext; - PVOID Reserved; -} REG_SAVE_KEY_INFORMATION, *PREG_SAVE_KEY_INFORMATION; - -typedef struct _REG_REPLACE_KEY_INFORMATION { - PVOID Object; - PUNICODE_STRING OldFileName; - PUNICODE_STRING NewFileName; - PVOID CallContext; - PVOID ObjectContext; - PVOID Reserved; -} REG_REPLACE_KEY_INFORMATION, *PREG_REPLACE_KEY_INFORMATION; - -#endif /* NTDDI_VERSION >= NTDDI_VISTA */ +/* PCI_COMMON_CONFIG.Status */ +#define PCI_STATUS_INTERRUPT_PENDING 0x0008 +#define PCI_STATUS_CAPABILITIES_LIST 0x0010 +#define PCI_STATUS_66MHZ_CAPABLE 0x0020 +#define PCI_STATUS_UDF_SUPPORTED 0x0040 +#define PCI_STATUS_FAST_BACK_TO_BACK 0x0080 +#define PCI_STATUS_DATA_PARITY_DETECTED 0x0100 +#define PCI_STATUS_DEVSEL 0x0600 +#define PCI_STATUS_SIGNALED_TARGET_ABORT 0x0800 +#define PCI_STATUS_RECEIVED_TARGET_ABORT 0x1000 +#define PCI_STATUS_RECEIVED_MASTER_ABORT 0x2000 +#define PCI_STATUS_SIGNALED_SYSTEM_ERROR 0x4000 +#define PCI_STATUS_DETECTED_PARITY_ERROR 0x8000 -#define SERVICE_KERNEL_DRIVER 0x00000001 -#define SERVICE_FILE_SYSTEM_DRIVER 0x00000002 -#define SERVICE_ADAPTER 0x00000004 -#define SERVICE_RECOGNIZER_DRIVER 0x00000008 +/* PCI_COMMON_CONFIG.HeaderType */ +#define PCI_MULTIFUNCTION 0x80 +#define PCI_DEVICE_TYPE 0x00 +#define PCI_BRIDGE_TYPE 0x01 +#define PCI_CARDBUS_BRIDGE_TYPE 0x02 -#define SERVICE_DRIVER (SERVICE_KERNEL_DRIVER | \ - SERVICE_FILE_SYSTEM_DRIVER | \ - SERVICE_RECOGNIZER_DRIVER) +#define PCI_CONFIGURATION_TYPE(PciData) \ + (((PPCI_COMMON_CONFIG) (PciData))->HeaderType & ~PCI_MULTIFUNCTION) -#define SERVICE_WIN32_OWN_PROCESS 0x00000010 -#define SERVICE_WIN32_SHARE_PROCESS 0x00000020 -#define SERVICE_WIN32 (SERVICE_WIN32_OWN_PROCESS | \ - SERVICE_WIN32_SHARE_PROCESS) +#define PCI_MULTIFUNCTION_DEVICE(PciData) \ + ((((PPCI_COMMON_CONFIG) (PciData))->HeaderType & PCI_MULTIFUNCTION) != 0) -#define SERVICE_INTERACTIVE_PROCESS 0x00000100 +/* PCI device classes */ +#define PCI_CLASS_PRE_20 0x00 +#define PCI_CLASS_MASS_STORAGE_CTLR 0x01 +#define PCI_CLASS_NETWORK_CTLR 0x02 +#define PCI_CLASS_DISPLAY_CTLR 0x03 +#define PCI_CLASS_MULTIMEDIA_DEV 0x04 +#define PCI_CLASS_MEMORY_CTLR 0x05 +#define PCI_CLASS_BRIDGE_DEV 0x06 +#define PCI_CLASS_SIMPLE_COMMS_CTLR 0x07 +#define PCI_CLASS_BASE_SYSTEM_DEV 0x08 +#define PCI_CLASS_INPUT_DEV 0x09 +#define PCI_CLASS_DOCKING_STATION 0x0a +#define PCI_CLASS_PROCESSOR 0x0b +#define PCI_CLASS_SERIAL_BUS_CTLR 0x0c +#define PCI_CLASS_WIRELESS_CTLR 0x0d +#define PCI_CLASS_INTELLIGENT_IO_CTLR 0x0e +#define PCI_CLASS_SATELLITE_COMMS_CTLR 0x0f +#define PCI_CLASS_ENCRYPTION_DECRYPTION 0x10 +#define PCI_CLASS_DATA_ACQ_SIGNAL_PROC 0x11 -#define SERVICE_TYPE_ALL (SERVICE_WIN32 | \ - SERVICE_ADAPTER | \ - SERVICE_DRIVER | \ - SERVICE_INTERACTIVE_PROCESS) +/* PCI device subclasses for class 0 */ +#define PCI_SUBCLASS_PRE_20_NON_VGA 0x00 +#define PCI_SUBCLASS_PRE_20_VGA 0x01 -/* Service Start Types */ -#define SERVICE_BOOT_START 0x00000000 -#define SERVICE_SYSTEM_START 0x00000001 -#define SERVICE_AUTO_START 0x00000002 -#define SERVICE_DEMAND_START 0x00000003 -#define SERVICE_DISABLED 0x00000004 +/* PCI device subclasses for class 1 (mass storage controllers)*/ +#define PCI_SUBCLASS_MSC_SCSI_BUS_CTLR 0x00 +#define PCI_SUBCLASS_MSC_IDE_CTLR 0x01 +#define PCI_SUBCLASS_MSC_FLOPPY_CTLR 0x02 +#define PCI_SUBCLASS_MSC_IPI_CTLR 0x03 +#define PCI_SUBCLASS_MSC_RAID_CTLR 0x04 +#define PCI_SUBCLASS_MSC_OTHER 0x80 -#define SERVICE_ERROR_IGNORE 0x00000000 -#define SERVICE_ERROR_NORMAL 0x00000001 -#define SERVICE_ERROR_SEVERE 0x00000002 -#define SERVICE_ERROR_CRITICAL 0x00000003 - -typedef enum _CM_SERVICE_NODE_TYPE { - DriverType = SERVICE_KERNEL_DRIVER, - FileSystemType = SERVICE_FILE_SYSTEM_DRIVER, - Win32ServiceOwnProcess = SERVICE_WIN32_OWN_PROCESS, - Win32ServiceShareProcess = SERVICE_WIN32_SHARE_PROCESS, - AdapterType = SERVICE_ADAPTER, - RecognizerType = SERVICE_RECOGNIZER_DRIVER -} SERVICE_NODE_TYPE; - -typedef enum _CM_SERVICE_LOAD_TYPE { - BootLoad = SERVICE_BOOT_START, - SystemLoad = SERVICE_SYSTEM_START, - AutoLoad = SERVICE_AUTO_START, - DemandLoad = SERVICE_DEMAND_START, - DisableLoad = SERVICE_DISABLED -} SERVICE_LOAD_TYPE; - -typedef enum _CM_ERROR_CONTROL_TYPE { - IgnoreError = SERVICE_ERROR_IGNORE, - NormalError = SERVICE_ERROR_NORMAL, - SevereError = SERVICE_ERROR_SEVERE, - CriticalError = SERVICE_ERROR_CRITICAL -} SERVICE_ERROR_TYPE; - -#define CM_SERVICE_NETWORK_BOOT_LOAD 0x00000001 -#define CM_SERVICE_VIRTUAL_DISK_BOOT_LOAD 0x00000002 -#define CM_SERVICE_USB_DISK_BOOT_LOAD 0x00000004 - -#define CM_SERVICE_VALID_PROMOTION_MASK (CM_SERVICE_NETWORK_BOOT_LOAD | \ - CM_SERVICE_VIRTUAL_DISK_BOOT_LOAD | \ - CM_SERVICE_USB_DISK_BOOT_LOAD) +/* PCI device subclasses for class 2 (network controllers)*/ +#define PCI_SUBCLASS_NET_ETHERNET_CTLR 0x00 +#define PCI_SUBCLASS_NET_TOKEN_RING_CTLR 0x01 +#define PCI_SUBCLASS_NET_FDDI_CTLR 0x02 +#define PCI_SUBCLASS_NET_ATM_CTLR 0x03 +#define PCI_SUBCLASS_NET_ISDN_CTLR 0x04 +#define PCI_SUBCLASS_NET_OTHER 0x80 -/****************************************************************************** - * I/O Manager Types * - ******************************************************************************/ +/* PCI device subclasses for class 3 (display controllers)*/ +#define PCI_SUBCLASS_VID_VGA_CTLR 0x00 +#define PCI_SUBCLASS_VID_XGA_CTLR 0x01 +#define PCI_SUBCLASS_VID_3D_CTLR 0x02 +#define PCI_SUBCLASS_VID_OTHER 0x80 -#define WDM_MAJORVERSION 0x06 -#define WDM_MINORVERSION 0x00 +/* PCI device subclasses for class 4 (multimedia device)*/ +#define PCI_SUBCLASS_MM_VIDEO_DEV 0x00 +#define PCI_SUBCLASS_MM_AUDIO_DEV 0x01 +#define PCI_SUBCLASS_MM_TELEPHONY_DEV 0x02 +#define PCI_SUBCLASS_MM_OTHER 0x80 -#if defined(_WIN64) +/* PCI device subclasses for class 5 (memory controller)*/ +#define PCI_SUBCLASS_MEM_RAM 0x00 +#define PCI_SUBCLASS_MEM_FLASH 0x01 +#define PCI_SUBCLASS_MEM_OTHER 0x80 -#ifndef USE_DMA_MACROS -#define USE_DMA_MACROS -#endif +/* PCI device subclasses for class 6 (bridge device)*/ +#define PCI_SUBCLASS_BR_HOST 0x00 +#define PCI_SUBCLASS_BR_ISA 0x01 +#define PCI_SUBCLASS_BR_EISA 0x02 +#define PCI_SUBCLASS_BR_MCA 0x03 +#define PCI_SUBCLASS_BR_PCI_TO_PCI 0x04 +#define PCI_SUBCLASS_BR_PCMCIA 0x05 +#define PCI_SUBCLASS_BR_NUBUS 0x06 +#define PCI_SUBCLASS_BR_CARDBUS 0x07 +#define PCI_SUBCLASS_BR_RACEWAY 0x08 +#define PCI_SUBCLASS_BR_OTHER 0x80 -#ifndef NO_LEGACY_DRIVERS -#define NO_LEGACY_DRIVERS -#endif +/* PCI device subclasses for class C (serial bus controller)*/ +#define PCI_SUBCLASS_SB_IEEE1394 0x00 +#define PCI_SUBCLASS_SB_ACCESS 0x01 +#define PCI_SUBCLASS_SB_SSA 0x02 +#define PCI_SUBCLASS_SB_USB 0x03 +#define PCI_SUBCLASS_SB_FIBRE_CHANNEL 0x04 +#define PCI_SUBCLASS_SB_SMBUS 0x05 -#endif /* defined(_WIN64) */ +#define PCI_MAX_DEVICES 32 +#define PCI_MAX_FUNCTION 8 +#define PCI_MAX_BRIDGE_NUMBER 0xFF +#define PCI_INVALID_VENDORID 0xFFFF +#define PCI_COMMON_HDR_LENGTH (FIELD_OFFSET(PCI_COMMON_CONFIG, DeviceSpecific)) -#define STATUS_CONTINUE_COMPLETION STATUS_SUCCESS +#define PCI_ADDRESS_IO_SPACE 0x00000001 +#define PCI_ADDRESS_MEMORY_TYPE_MASK 0x00000006 +#define PCI_ADDRESS_MEMORY_PREFETCHABLE 0x00000008 +#define PCI_ADDRESS_IO_ADDRESS_MASK 0xfffffffc +#define PCI_ADDRESS_MEMORY_ADDRESS_MASK 0xfffffff0 +#define PCI_ADDRESS_ROM_ADDRESS_MASK 0xfffff800 -#define CONNECT_FULLY_SPECIFIED 0x1 -#define CONNECT_LINE_BASED 0x2 -#define CONNECT_MESSAGE_BASED 0x3 -#define CONNECT_FULLY_SPECIFIED_GROUP 0x4 -#define CONNECT_CURRENT_VERSION 0x4 +#define PCI_TYPE_32BIT 0 +#define PCI_TYPE_20BIT 2 +#define PCI_TYPE_64BIT 4 #define POOL_COLD_ALLOCATION 256 #define POOL_QUOTA_FAIL_INSTEAD_OF_RAISE 8 #define POOL_RAISE_IF_ALLOCATION_FAILURE 16 +#define PCI_TYPE0_ADDRESSES 6 +#define PCI_TYPE1_ADDRESSES 2 +#define PCI_TYPE2_ADDRESSES 5 + #define IO_TYPE_ADAPTER 1 #define IO_TYPE_CONTROLLER 2 #define IO_TYPE_DEVICE 3 @@ -3745,6 +2789,47 @@ typedef enum _CM_ERROR_CONTROL_TYPE { #define IO_RESOURCE_DEFAULT 0x02 #define IO_RESOURCE_ALTERNATIVE 0x08 +/* DEVICE_OBJECT.Flags */ +#define DO_VERIFY_VOLUME 0x00000002 +#define DO_BUFFERED_IO 0x00000004 +#define DO_EXCLUSIVE 0x00000008 +#define DO_DIRECT_IO 0x00000010 +#define DO_MAP_IO_BUFFER 0x00000020 +#define DO_DEVICE_INITIALIZING 0x00000080 +#define DO_SHUTDOWN_REGISTERED 0x00000800 +#define DO_BUS_ENUMERATED_DEVICE 0x00001000 +#define DO_POWER_PAGABLE 0x00002000 +#define DO_POWER_INRUSH 0x00004000 + +/* DEVICE_OBJECT.Characteristics */ +#define FILE_REMOVABLE_MEDIA 0x00000001 +#define FILE_READ_ONLY_DEVICE 0x00000002 +#define FILE_FLOPPY_DISKETTE 0x00000004 +#define FILE_WRITE_ONCE_MEDIA 0x00000008 +#define FILE_REMOTE_DEVICE 0x00000010 +#define FILE_DEVICE_IS_MOUNTED 0x00000020 +#define FILE_VIRTUAL_VOLUME 0x00000040 +#define FILE_AUTOGENERATED_DEVICE_NAME 0x00000080 +#define FILE_DEVICE_SECURE_OPEN 0x00000100 +#define FILE_CHARACTERISTIC_PNP_DEVICE 0x00000800 +#define FILE_CHARACTERISTIC_TS_DEVICE 0x00001000 +#define FILE_CHARACTERISTIC_WEBDAV_DEVICE 0x00002000 + +/* DEVICE_OBJECT.AlignmentRequirement */ +#define FILE_BYTE_ALIGNMENT 0x00000000 +#define FILE_WORD_ALIGNMENT 0x00000001 +#define FILE_LONG_ALIGNMENT 0x00000003 +#define FILE_QUAD_ALIGNMENT 0x00000007 +#define FILE_OCTA_ALIGNMENT 0x0000000f +#define FILE_32_BYTE_ALIGNMENT 0x0000001f +#define FILE_64_BYTE_ALIGNMENT 0x0000003f +#define FILE_128_BYTE_ALIGNMENT 0x0000007f +#define FILE_256_BYTE_ALIGNMENT 0x000000ff +#define FILE_512_BYTE_ALIGNMENT 0x000001ff + +/* DEVICE_OBJECT.DeviceType */ +#define DEVICE_TYPE ULONG + #define FILE_DEVICE_BEEP 0x00000001 #define FILE_DEVICE_CD_ROM 0x00000002 #define FILE_DEVICE_CD_ROM_FILE_SYSTEM 0x00000003 @@ -3813,44 +2898,6 @@ typedef enum _CM_ERROR_CONTROL_TYPE { #define FILE_DEVICE_BIOMETRIC 0x00000044 #define FILE_DEVICE_PMI 0x00000045 -#if defined(NT_PROCESSOR_GROUPS) - -typedef USHORT IRQ_DEVICE_POLICY, *PIRQ_DEVICE_POLICY; - -typedef enum _IRQ_DEVICE_POLICY_USHORT { - IrqPolicyMachineDefault = 0, - IrqPolicyAllCloseProcessors = 1, - IrqPolicyOneCloseProcessor = 2, - IrqPolicyAllProcessorsInMachine = 3, - IrqPolicyAllProcessorsInGroup = 3, - IrqPolicySpecifiedProcessors = 4, - IrqPolicySpreadMessagesAcrossAllProcessors = 5}; - -#else /* defined(NT_PROCESSOR_GROUPS) */ - -typedef enum _IRQ_DEVICE_POLICY { - IrqPolicyMachineDefault = 0, - IrqPolicyAllCloseProcessors, - IrqPolicyOneCloseProcessor, - IrqPolicyAllProcessorsInMachine, - IrqPolicySpecifiedProcessors, - IrqPolicySpreadMessagesAcrossAllProcessors -} IRQ_DEVICE_POLICY, *PIRQ_DEVICE_POLICY; - -#endif - -typedef enum _IRQ_PRIORITY { - IrqPriorityUndefined = 0, - IrqPriorityLow, - IrqPriorityNormal, - IrqPriorityHigh -} IRQ_PRIORITY, *PIRQ_PRIORITY; - -typedef enum _IRQ_GROUP_POLICY { - GroupAffinityAllGroupZero = 0, - GroupAffinityDontCare -} IRQ_GROUP_POLICY, *PIRQ_GROUP_POLICY; - #define MAXIMUM_VOLUME_LABEL_LENGTH (32 * sizeof(WCHAR)) typedef struct _OBJECT_HANDLE_INFORMATION { @@ -3859,20 +2906,24 @@ typedef struct _OBJECT_HANDLE_INFORMATION { } OBJECT_HANDLE_INFORMATION, *POBJECT_HANDLE_INFORMATION; typedef struct _CLIENT_ID { - HANDLE UniqueProcess; - HANDLE UniqueThread; + HANDLE UniqueProcess; + HANDLE UniqueThread; } CLIENT_ID, *PCLIENT_ID; +typedef VOID +(DDKAPI *PKSTART_ROUTINE)( + IN PVOID StartContext); + typedef struct _VPB { - CSHORT Type; - CSHORT Size; - USHORT Flags; - USHORT VolumeLabelLength; - struct _DEVICE_OBJECT *DeviceObject; - struct _DEVICE_OBJECT *RealDevice; - ULONG SerialNumber; - ULONG ReferenceCount; - WCHAR VolumeLabel[MAXIMUM_VOLUME_LABEL_LENGTH / sizeof(WCHAR)]; + CSHORT Type; + CSHORT Size; + USHORT Flags; + USHORT VolumeLabelLength; + struct _DEVICE_OBJECT *DeviceObject; + struct _DEVICE_OBJECT *RealDevice; + ULONG SerialNumber; + ULONG ReferenceCount; + WCHAR VolumeLabel[MAXIMUM_VOLUME_LABEL_LENGTH / sizeof(WCHAR)]; } VPB, *PVPB; typedef enum _IO_ALLOCATION_ACTION { @@ -3882,370 +2933,190 @@ typedef enum _IO_ALLOCATION_ACTION { } IO_ALLOCATION_ACTION, *PIO_ALLOCATION_ACTION; typedef IO_ALLOCATION_ACTION -(NTAPI DRIVER_CONTROL)( - IN struct _DEVICE_OBJECT *DeviceObject, - IN struct _IRP *Irp, - IN PVOID MapRegisterBase, - IN PVOID Context); -typedef DRIVER_CONTROL *PDRIVER_CONTROL; +(DDKAPI *PDRIVER_CONTROL)( + IN struct _DEVICE_OBJECT *DeviceObject, + IN struct _IRP *Irp, + IN PVOID MapRegisterBase, + IN PVOID Context); typedef struct _WAIT_CONTEXT_BLOCK { - KDEVICE_QUEUE_ENTRY WaitQueueEntry; - PDRIVER_CONTROL DeviceRoutine; - PVOID DeviceContext; - ULONG NumberOfMapRegisters; - PVOID DeviceObject; - PVOID CurrentIrp; - PKDPC BufferChainingDpc; + KDEVICE_QUEUE_ENTRY WaitQueueEntry; + PDRIVER_CONTROL DeviceRoutine; + PVOID DeviceContext; + ULONG NumberOfMapRegisters; + PVOID DeviceObject; + PVOID CurrentIrp; + PKDPC BufferChainingDpc; } WAIT_CONTEXT_BLOCK, *PWAIT_CONTEXT_BLOCK; -/* DEVICE_OBJECT.Flags */ -#define DO_VERIFY_VOLUME 0x00000002 -#define DO_BUFFERED_IO 0x00000004 -#define DO_EXCLUSIVE 0x00000008 -#define DO_DIRECT_IO 0x00000010 -#define DO_MAP_IO_BUFFER 0x00000020 -#define DO_DEVICE_INITIALIZING 0x00000080 -#define DO_SHUTDOWN_REGISTERED 0x00000800 -#define DO_BUS_ENUMERATED_DEVICE 0x00001000 -#define DO_POWER_PAGABLE 0x00002000 -#define DO_POWER_INRUSH 0x00004000 - -/* DEVICE_OBJECT.Characteristics */ -#define FILE_REMOVABLE_MEDIA 0x00000001 -#define FILE_READ_ONLY_DEVICE 0x00000002 -#define FILE_FLOPPY_DISKETTE 0x00000004 -#define FILE_WRITE_ONCE_MEDIA 0x00000008 -#define FILE_REMOTE_DEVICE 0x00000010 -#define FILE_DEVICE_IS_MOUNTED 0x00000020 -#define FILE_VIRTUAL_VOLUME 0x00000040 -#define FILE_AUTOGENERATED_DEVICE_NAME 0x00000080 -#define FILE_DEVICE_SECURE_OPEN 0x00000100 -#define FILE_CHARACTERISTIC_PNP_DEVICE 0x00000800 -#define FILE_CHARACTERISTIC_TS_DEVICE 0x00001000 -#define FILE_CHARACTERISTIC_WEBDAV_DEVICE 0x00002000 - -/* DEVICE_OBJECT.AlignmentRequirement */ -#define FILE_BYTE_ALIGNMENT 0x00000000 -#define FILE_WORD_ALIGNMENT 0x00000001 -#define FILE_LONG_ALIGNMENT 0x00000003 -#define FILE_QUAD_ALIGNMENT 0x00000007 -#define FILE_OCTA_ALIGNMENT 0x0000000f -#define FILE_32_BYTE_ALIGNMENT 0x0000001f -#define FILE_64_BYTE_ALIGNMENT 0x0000003f -#define FILE_128_BYTE_ALIGNMENT 0x0000007f -#define FILE_256_BYTE_ALIGNMENT 0x000000ff -#define FILE_512_BYTE_ALIGNMENT 0x000001ff - -/* DEVICE_OBJECT.DeviceType */ -#define DEVICE_TYPE ULONG - typedef struct _DEVICE_OBJECT { - CSHORT Type; - USHORT Size; - LONG ReferenceCount; - struct _DRIVER_OBJECT *DriverObject; - struct _DEVICE_OBJECT *NextDevice; - struct _DEVICE_OBJECT *AttachedDevice; - struct _IRP *CurrentIrp; - PIO_TIMER Timer; - ULONG Flags; - ULONG Characteristics; - volatile PVPB Vpb; - PVOID DeviceExtension; - DEVICE_TYPE DeviceType; - CCHAR StackSize; + CSHORT Type; + USHORT Size; + LONG ReferenceCount; + struct _DRIVER_OBJECT *DriverObject; + struct _DEVICE_OBJECT *NextDevice; + struct _DEVICE_OBJECT *AttachedDevice; + struct _IRP *CurrentIrp; + PIO_TIMER Timer; + ULONG Flags; + ULONG Characteristics; + volatile PVPB Vpb; + PVOID DeviceExtension; + DEVICE_TYPE DeviceType; + CCHAR StackSize; union { - LIST_ENTRY ListEntry; - WAIT_CONTEXT_BLOCK Wcb; + LIST_ENTRY ListEntry; + WAIT_CONTEXT_BLOCK Wcb; } Queue; - ULONG AlignmentRequirement; - KDEVICE_QUEUE DeviceQueue; - KDPC Dpc; - ULONG ActiveThreadCount; - PSECURITY_DESCRIPTOR SecurityDescriptor; - KEVENT DeviceLock; - USHORT SectorSize; - USHORT Spare1; - struct _DEVOBJ_EXTENSION *DeviceObjectExtension; - PVOID Reserved; + ULONG AlignmentRequirement; + KDEVICE_QUEUE DeviceQueue; + KDPC Dpc; + ULONG ActiveThreadCount; + PSECURITY_DESCRIPTOR SecurityDescriptor; + KEVENT DeviceLock; + USHORT SectorSize; + USHORT Spare1; + struct _DEVOBJ_EXTENSION *DeviceObjectExtension; + PVOID Reserved; } DEVICE_OBJECT, *PDEVICE_OBJECT; -typedef enum _IO_SESSION_STATE { - IoSessionStateCreated = 1, - IoSessionStateInitialized, - IoSessionStateConnected, - IoSessionStateDisconnected, - IoSessionStateDisconnectedLoggedOn, - IoSessionStateLoggedOn, - IoSessionStateLoggedOff, - IoSessionStateTerminated, - IoSessionStateMax -} IO_SESSION_STATE, *PIO_SESSION_STATE; - -typedef enum _IO_COMPLETION_ROUTINE_RESULT { - ContinueCompletion = STATUS_CONTINUE_COMPLETION, - StopCompletion = STATUS_MORE_PROCESSING_REQUIRED -} IO_COMPLETION_ROUTINE_RESULT, *PIO_COMPLETION_ROUTINE_RESULT; - -typedef struct _IO_INTERRUPT_MESSAGE_INFO_ENTRY { - PHYSICAL_ADDRESS MessageAddress; - KAFFINITY TargetProcessorSet; - PKINTERRUPT InterruptObject; - ULONG MessageData; - ULONG Vector; - KIRQL Irql; - KINTERRUPT_MODE Mode; - KINTERRUPT_POLARITY Polarity; -} IO_INTERRUPT_MESSAGE_INFO_ENTRY, *PIO_INTERRUPT_MESSAGE_INFO_ENTRY; - -typedef struct _IO_INTERRUPT_MESSAGE_INFO { - KIRQL UnifiedIrql; - ULONG MessageCount; - IO_INTERRUPT_MESSAGE_INFO_ENTRY MessageInfo[1]; -} IO_INTERRUPT_MESSAGE_INFO, *PIO_INTERRUPT_MESSAGE_INFO; - -typedef struct _IO_CONNECT_INTERRUPT_FULLY_SPECIFIED_PARAMETERS { - IN PDEVICE_OBJECT PhysicalDeviceObject; - OUT PKINTERRUPT *InterruptObject; - IN PKSERVICE_ROUTINE ServiceRoutine; - IN PVOID ServiceContext; - IN PKSPIN_LOCK SpinLock OPTIONAL; - IN KIRQL SynchronizeIrql; - IN BOOLEAN FloatingSave; - IN BOOLEAN ShareVector; - IN ULONG Vector; - IN KIRQL Irql; - IN KINTERRUPT_MODE InterruptMode; - IN KAFFINITY ProcessorEnableMask; - IN USHORT Group; -} IO_CONNECT_INTERRUPT_FULLY_SPECIFIED_PARAMETERS, *PIO_CONNECT_INTERRUPT_FULLY_SPECIFIED_PARAMETERS; - -typedef struct _IO_CONNECT_INTERRUPT_LINE_BASED_PARAMETERS { - IN PDEVICE_OBJECT PhysicalDeviceObject; - OUT PKINTERRUPT *InterruptObject; - IN PKSERVICE_ROUTINE ServiceRoutine; - IN PVOID ServiceContext; - IN PKSPIN_LOCK SpinLock OPTIONAL; - IN KIRQL SynchronizeIrql OPTIONAL; - IN BOOLEAN FloatingSave; -} IO_CONNECT_INTERRUPT_LINE_BASED_PARAMETERS, *PIO_CONNECT_INTERRUPT_LINE_BASED_PARAMETERS; - -typedef struct _IO_CONNECT_INTERRUPT_MESSAGE_BASED_PARAMETERS { - IN PDEVICE_OBJECT PhysicalDeviceObject; - union { - OUT PVOID *Generic; - OUT PIO_INTERRUPT_MESSAGE_INFO *InterruptMessageTable; - OUT PKINTERRUPT *InterruptObject; - } ConnectionContext; - IN PKMESSAGE_SERVICE_ROUTINE MessageServiceRoutine; - IN PVOID ServiceContext; - IN PKSPIN_LOCK SpinLock OPTIONAL; - IN KIRQL SynchronizeIrql OPTIONAL; - IN BOOLEAN FloatingSave; - IN PKSERVICE_ROUTINE FallBackServiceRoutine OPTIONAL; -} IO_CONNECT_INTERRUPT_MESSAGE_BASED_PARAMETERS, *PIO_CONNECT_INTERRUPT_MESSAGE_BASED_PARAMETERS; - -typedef struct _IO_CONNECT_INTERRUPT_PARAMETERS { - IN OUT ULONG Version; - union { - IO_CONNECT_INTERRUPT_FULLY_SPECIFIED_PARAMETERS FullySpecified; - IO_CONNECT_INTERRUPT_LINE_BASED_PARAMETERS LineBased; - IO_CONNECT_INTERRUPT_MESSAGE_BASED_PARAMETERS MessageBased; - }; -} IO_CONNECT_INTERRUPT_PARAMETERS, *PIO_CONNECT_INTERRUPT_PARAMETERS; +typedef struct _IO_REMOVE_LOCK_TRACKING_BLOCK * PIO_REMOVE_LOCK_TRACKING_BLOCK; -typedef struct _IO_DISCONNECT_INTERRUPT_PARAMETERS { - IN ULONG Version; - union { - IN PVOID Generic; - IN PKINTERRUPT InterruptObject; - IN PIO_INTERRUPT_MESSAGE_INFO InterruptMessageTable; - } ConnectionContext; -} IO_DISCONNECT_INTERRUPT_PARAMETERS, *PIO_DISCONNECT_INTERRUPT_PARAMETERS; - -typedef enum _IO_ACCESS_TYPE { - ReadAccess, - WriteAccess, - ModifyAccess -} IO_ACCESS_TYPE; - -typedef enum _IO_ACCESS_MODE { - SequentialAccess, - RandomAccess -} IO_ACCESS_MODE; - -typedef enum _IO_CONTAINER_NOTIFICATION_CLASS { - IoSessionStateNotification, - IoMaxContainerNotificationClass -} IO_CONTAINER_NOTIFICATION_CLASS; - -typedef struct _IO_SESSION_STATE_NOTIFICATION { - ULONG Size; - ULONG Flags; - PVOID IoObject; - ULONG EventMask; - PVOID Context; -} IO_SESSION_STATE_NOTIFICATION, *PIO_SESSION_STATE_NOTIFICATION; - -typedef enum _IO_CONTAINER_INFORMATION_CLASS { - IoSessionStateInformation, - IoMaxContainerInformationClass -} IO_CONTAINER_INFORMATION_CLASS; - -typedef struct _IO_SESSION_STATE_INFORMATION { - ULONG SessionId; - IO_SESSION_STATE SessionState; - BOOLEAN LocalSession; -} IO_SESSION_STATE_INFORMATION, *PIO_SESSION_STATE_INFORMATION; - -#if (NTDDI_VERSION >= NTDDI_WIN7) - -typedef NTSTATUS -(NTAPI *PIO_CONTAINER_NOTIFICATION_FUNCTION)( - VOID); - -typedef NTSTATUS -(NTAPI IO_SESSION_NOTIFICATION_FUNCTION)( - IN PVOID SessionObject, - IN PVOID IoObject, - IN ULONG Event, - IN PVOID Context, - IN PVOID NotificationPayload, - IN ULONG PayloadLength); - -typedef IO_SESSION_NOTIFICATION_FUNCTION *PIO_SESSION_NOTIFICATION_FUNCTION; - -#endif - -typedef struct _IO_REMOVE_LOCK_TRACKING_BLOCK * PIO_REMOVE_LOCK_TRACKING_BLOCK; - -typedef struct _IO_REMOVE_LOCK_COMMON_BLOCK { - BOOLEAN Removed; - BOOLEAN Reserved[3]; - volatile LONG IoCount; - KEVENT RemoveEvent; -} IO_REMOVE_LOCK_COMMON_BLOCK; +typedef struct _IO_REMOVE_LOCK_COMMON_BLOCK { + BOOLEAN Removed; + BOOLEAN Reserved[3]; + volatile LONG IoCount; + KEVENT RemoveEvent; +} IO_REMOVE_LOCK_COMMON_BLOCK; typedef struct _IO_REMOVE_LOCK_DBG_BLOCK { - LONG Signature; - LONG HighWatermark; - LONGLONG MaxLockedTicks; - LONG AllocateTag; - LIST_ENTRY LockList; - KSPIN_LOCK Spin; - volatile LONG LowMemoryCount; - ULONG Reserved1[4]; - PVOID Reserved2; - PIO_REMOVE_LOCK_TRACKING_BLOCK Blocks; + LONG Signature; + LONG HighWatermark; + LONGLONG MaxLockedTicks; + LONG AllocateTag; + LIST_ENTRY LockList; + KSPIN_LOCK Spin; + volatile LONG LowMemoryCount; + ULONG Reserved1[4]; + PVOID Reserved2; + PIO_REMOVE_LOCK_TRACKING_BLOCK Blocks; } IO_REMOVE_LOCK_DBG_BLOCK; typedef struct _IO_REMOVE_LOCK { - IO_REMOVE_LOCK_COMMON_BLOCK Common; + IO_REMOVE_LOCK_COMMON_BLOCK Common; #if DBG - IO_REMOVE_LOCK_DBG_BLOCK Dbg; + IO_REMOVE_LOCK_DBG_BLOCK Dbg; #endif } IO_REMOVE_LOCK, *PIO_REMOVE_LOCK; typedef struct _IO_WORKITEM *PIO_WORKITEM; typedef VOID -(NTAPI IO_WORKITEM_ROUTINE)( - IN PDEVICE_OBJECT DeviceObject, - IN PVOID Context); +(DDKAPI IO_WORKITEM_ROUTINE)( + IN PDEVICE_OBJECT DeviceObject, + IN PVOID Context); typedef IO_WORKITEM_ROUTINE *PIO_WORKITEM_ROUTINE; -typedef VOID -(NTAPI IO_WORKITEM_ROUTINE_EX)( - IN PVOID IoObject, - IN PVOID Context OPTIONAL, - IN PIO_WORKITEM IoWorkItem); -typedef IO_WORKITEM_ROUTINE_EX *PIO_WORKITEM_ROUTINE_EX; - typedef struct _SHARE_ACCESS { - ULONG OpenCount; - ULONG Readers; - ULONG Writers; - ULONG Deleters; - ULONG SharedRead; - ULONG SharedWrite; - ULONG SharedDelete; + ULONG OpenCount; + ULONG Readers; + ULONG Writers; + ULONG Deleters; + ULONG SharedRead; + ULONG SharedWrite; + ULONG SharedDelete; } SHARE_ACCESS, *PSHARE_ACCESS; /* While MS WDK uses inheritance in C++, we cannot do this with gcc, as inheritance, even from a struct renders the type non-POD. So we use this hack */ #define PCI_COMMON_HEADER_LAYOUT \ - USHORT VendorID; \ - USHORT DeviceID; \ - USHORT Command; \ - USHORT Status; \ - UCHAR RevisionID; \ - UCHAR ProgIf; \ - UCHAR SubClass; \ - UCHAR BaseClass; \ - UCHAR CacheLineSize; \ - UCHAR LatencyTimer; \ - UCHAR HeaderType; \ - UCHAR BIST; \ + USHORT VendorID; \ + USHORT DeviceID; \ + USHORT Command; \ + USHORT Status; \ + UCHAR RevisionID; \ + UCHAR ProgIf; \ + UCHAR SubClass; \ + UCHAR BaseClass; \ + UCHAR CacheLineSize; \ + UCHAR LatencyTimer; \ + UCHAR HeaderType; \ + UCHAR BIST; \ union { \ struct _PCI_HEADER_TYPE_0 { \ - ULONG BaseAddresses[PCI_TYPE0_ADDRESSES]; \ - ULONG CIS; \ - USHORT SubVendorID; \ - USHORT SubSystemID; \ - ULONG ROMBaseAddress; \ - UCHAR CapabilitiesPtr; \ - UCHAR Reserved1[3]; \ - ULONG Reserved2; \ - UCHAR InterruptLine; \ - UCHAR InterruptPin; \ - UCHAR MinimumGrant; \ - UCHAR MaximumLatency; \ + ULONG BaseAddresses[PCI_TYPE0_ADDRESSES]; \ + ULONG CIS; \ + USHORT SubVendorID; \ + USHORT SubSystemID; \ + ULONG ROMBaseAddress; \ + UCHAR CapabilitiesPtr; \ + UCHAR Reserved1[3]; \ + ULONG Reserved2; \ + UCHAR InterruptLine; \ + UCHAR InterruptPin; \ + UCHAR MinimumGrant; \ + UCHAR MaximumLatency; \ } type0; \ struct _PCI_HEADER_TYPE_1 { \ - ULONG BaseAddresses[PCI_TYPE1_ADDRESSES]; \ - UCHAR PrimaryBus; \ - UCHAR SecondaryBus; \ - UCHAR SubordinateBus; \ - UCHAR SecondaryLatency; \ - UCHAR IOBase; \ - UCHAR IOLimit; \ - USHORT SecondaryStatus; \ - USHORT MemoryBase; \ - USHORT MemoryLimit; \ - USHORT PrefetchBase; \ - USHORT PrefetchLimit; \ - ULONG PrefetchBaseUpper32; \ - ULONG PrefetchLimitUpper32; \ - USHORT IOBaseUpper16; \ - USHORT IOLimitUpper16; \ - UCHAR CapabilitiesPtr; \ - UCHAR Reserved1[3]; \ - ULONG ROMBaseAddress; \ - UCHAR InterruptLine; \ - UCHAR InterruptPin; \ - USHORT BridgeControl; \ + ULONG BaseAddresses[PCI_TYPE1_ADDRESSES]; \ + UCHAR PrimaryBus; \ + UCHAR SecondaryBus; \ + UCHAR SubordinateBus; \ + UCHAR SecondaryLatency; \ + UCHAR IOBase; \ + UCHAR IOLimit; \ + USHORT SecondaryStatus; \ + USHORT MemoryBase; \ + USHORT MemoryLimit; \ + USHORT PrefetchBase; \ + USHORT PrefetchLimit; \ + ULONG PrefetchBaseUpper32; \ + ULONG PrefetchLimitUpper32; \ + USHORT IOBaseUpper16; \ + USHORT IOLimitUpper16; \ + UCHAR CapabilitiesPtr; \ + UCHAR Reserved1[3]; \ + ULONG ROMBaseAddress; \ + UCHAR InterruptLine; \ + UCHAR InterruptPin; \ + USHORT BridgeControl; \ } type1; \ struct _PCI_HEADER_TYPE_2 { \ - ULONG SocketRegistersBaseAddress; \ - UCHAR CapabilitiesPtr; \ - UCHAR Reserved; \ - USHORT SecondaryStatus; \ - UCHAR PrimaryBus; \ - UCHAR SecondaryBus; \ - UCHAR SubordinateBus; \ - UCHAR SecondaryLatency; \ - struct { \ - ULONG Base; \ - ULONG Limit; \ + ULONG SocketRegistersBaseAddress; \ + UCHAR CapabilitiesPtr; \ + UCHAR Reserved; \ + USHORT SecondaryStatus; \ + UCHAR PrimaryBus; \ + UCHAR SecondaryBus; \ + UCHAR SubordinateBus; \ + UCHAR SecondaryLatency; \ + struct { \ + ULONG Base; \ + ULONG Limit; \ } Range[PCI_TYPE2_ADDRESSES-1]; \ - UCHAR InterruptLine; \ - UCHAR InterruptPin; \ - USHORT BridgeControl; \ + UCHAR InterruptLine; \ + UCHAR InterruptPin; \ + USHORT BridgeControl; \ } type2; \ } u; +typedef struct _PCI_COMMON_HEADER { + PCI_COMMON_HEADER_LAYOUT +} PCI_COMMON_HEADER, *PPCI_COMMON_HEADER; + +#ifdef __cplusplus +typedef struct _PCI_COMMON_CONFIG { + PCI_COMMON_HEADER_LAYOUT + UCHAR DeviceSpecific[192]; +} PCI_COMMON_CONFIG, *PPCI_COMMON_CONFIG; +#else +typedef struct _PCI_COMMON_CONFIG { + PCI_COMMON_HEADER DUMMYSTRUCTNAME; + UCHAR DeviceSpecific[192]; +} PCI_COMMON_CONFIG, *PPCI_COMMON_CONFIG; +#endif + typedef enum _CREATE_FILE_TYPE { CreateFileTypeNone, CreateFileTypeNamedPipe, @@ -4260,54 +3131,39 @@ typedef enum _CREATE_FILE_TYPE { typedef struct _IO_STATUS_BLOCK { _ANONYMOUS_UNION union { - NTSTATUS Status; - PVOID Pointer; + NTSTATUS Status; + PVOID Pointer; } DUMMYUNIONNAME; - ULONG_PTR Information; + ULONG_PTR Information; } IO_STATUS_BLOCK, *PIO_STATUS_BLOCK; -#if defined(_WIN64) -typedef struct _IO_STATUS_BLOCK32 { - NTSTATUS Status; - ULONG Information; -} IO_STATUS_BLOCK32, *PIO_STATUS_BLOCK32; -#endif +typedef struct _PCI_SLOT_NUMBER { + union { + struct { + ULONG DeviceNumber : 5; + ULONG FunctionNumber : 3; + ULONG Reserved : 24; + } bits; + ULONG AsULONG; + } u; +} PCI_SLOT_NUMBER, *PPCI_SLOT_NUMBER; typedef VOID -(NTAPI *PIO_APC_ROUTINE)( +(DDKAPI *PIO_APC_ROUTINE)( IN PVOID ApcContext, IN PIO_STATUS_BLOCK IoStatusBlock, IN ULONG Reserved); -#define PIO_APC_ROUTINE_DEFINED - -typedef enum _IO_SESSION_EVENT { - IoSessionEventIgnore = 0, - IoSessionEventCreated, - IoSessionEventTerminated, - IoSessionEventConnected, - IoSessionEventDisconnected, - IoSessionEventLogon, - IoSessionEventLogoff, - IoSessionEventMax -} IO_SESSION_EVENT, *PIO_SESSION_EVENT; - -#define IO_SESSION_STATE_ALL_EVENTS 0xffffffff -#define IO_SESSION_STATE_CREATION_EVENT 0x00000001 -#define IO_SESSION_STATE_TERMINATION_EVENT 0x00000002 -#define IO_SESSION_STATE_CONNECT_EVENT 0x00000004 -#define IO_SESSION_STATE_DISCONNECT_EVENT 0x00000008 -#define IO_SESSION_STATE_LOGON_EVENT 0x00000010 -#define IO_SESSION_STATE_LOGOFF_EVENT 0x00000020 - -#define IO_SESSION_STATE_VALID_EVENT_MASK 0x0000003f - -#define IO_SESSION_MAX_PAYLOAD_SIZE 256L - -typedef struct _IO_SESSION_CONNECT_INFO { - ULONG SessionId; - BOOLEAN LocalSession; -} IO_SESSION_CONNECT_INFO, *PIO_SESSION_CONNECT_INFO; +typedef VOID +(DDKAPI *WMI_NOTIFICATION_CALLBACK)( + PVOID Wnode, + PVOID Context); + +#define WMIREG_ACTION_REGISTER 1 +#define WMIREG_ACTION_DEREGISTER 2 +#define WMIREG_ACTION_REREGISTER 3 +#define WMIREG_ACTION_UPDATE_GUIDS 4 +#define WMIREG_ACTION_BLOCK_IRPS 5 #define EVENT_INCREMENT 1 #define IO_NO_INCREMENT 0 @@ -4327,148 +3183,105 @@ typedef struct _IO_SESSION_CONNECT_INFO { #define MM_MAXIMUM_DISK_IO_SIZE (0x10000) typedef struct _BOOTDISK_INFORMATION { - LONGLONG BootPartitionOffset; - LONGLONG SystemPartitionOffset; - ULONG BootDeviceSignature; - ULONG SystemDeviceSignature; + LONGLONG BootPartitionOffset; + LONGLONG SystemPartitionOffset; + ULONG BootDeviceSignature; + ULONG SystemDeviceSignature; } BOOTDISK_INFORMATION, *PBOOTDISK_INFORMATION; typedef struct _BOOTDISK_INFORMATION_EX { - LONGLONG BootPartitionOffset; - LONGLONG SystemPartitionOffset; - ULONG BootDeviceSignature; - ULONG SystemDeviceSignature; - GUID BootDeviceGuid; - GUID SystemDeviceGuid; - BOOLEAN BootDeviceIsGpt; - BOOLEAN SystemDeviceIsGpt; + LONGLONG BootPartitionOffset; + LONGLONG SystemPartitionOffset; + ULONG BootDeviceSignature; + ULONG SystemDeviceSignature; + GUID BootDeviceGuid; + GUID SystemDeviceGuid; + BOOLEAN BootDeviceIsGpt; + BOOLEAN SystemDeviceIsGpt; } BOOTDISK_INFORMATION_EX, *PBOOTDISK_INFORMATION_EX; -#if (NTDDI_VERSION >= NTDDI_WIN7) - -typedef struct _LOADER_PARTITION_INFORMATION_EX { - ULONG PartitionStyle; - ULONG PartitionNumber; - union { - ULONG Signature; - GUID DeviceId; - }; - ULONG Flags; -} LOADER_PARTITION_INFORMATION_EX, *PLOADER_PARTITION_INFORMATION_EX; - -typedef struct _BOOTDISK_INFORMATION_LITE { - ULONG NumberEntries; - LOADER_PARTITION_INFORMATION_EX Entries[1]; -} BOOTDISK_INFORMATION_LITE, *PBOOTDISK_INFORMATION_LITE; - -#else - -#if (NTDDI_VERSION >= NTDDI_VISTA) -typedef struct _BOOTDISK_INFORMATION_LITE { - ULONG BootDeviceSignature; - ULONG SystemDeviceSignature; - GUID BootDeviceGuid; - GUID SystemDeviceGuid; - BOOLEAN BootDeviceIsGpt; - BOOLEAN SystemDeviceIsGpt; -} BOOTDISK_INFORMATION_LITE, *PBOOTDISK_INFORMATION_LITE; -#endif /* (NTDDI_VERSION >= NTDDI_VISTA) */ - -#endif /* (NTDDI_VERSION >= NTDDI_WIN7) */ - -#include - typedef struct _EISA_MEMORY_TYPE { - UCHAR ReadWrite:1; - UCHAR Cached:1; - UCHAR Reserved0:1; - UCHAR Type:2; - UCHAR Shared:1; - UCHAR Reserved1:1; - UCHAR MoreEntries:1; + UCHAR ReadWrite : 1; + UCHAR Cached : 1; + UCHAR Reserved0 : 1; + UCHAR Type : 2; + UCHAR Shared : 1; + UCHAR Reserved1 : 1; + UCHAR MoreEntries : 1; } EISA_MEMORY_TYPE, *PEISA_MEMORY_TYPE; +#include typedef struct _EISA_MEMORY_CONFIGURATION { - EISA_MEMORY_TYPE ConfigurationByte; - UCHAR DataSize; - USHORT AddressLowWord; - UCHAR AddressHighByte; - USHORT MemorySize; + EISA_MEMORY_TYPE ConfigurationByte; + UCHAR DataSize; + USHORT AddressLowWord; + UCHAR AddressHighByte; + USHORT MemorySize; } EISA_MEMORY_CONFIGURATION, *PEISA_MEMORY_CONFIGURATION; +#include typedef struct _EISA_IRQ_DESCRIPTOR { - UCHAR Interrupt:4; - UCHAR Reserved:1; - UCHAR LevelTriggered:1; - UCHAR Shared:1; - UCHAR MoreEntries:1; + UCHAR Interrupt : 4; + UCHAR Reserved : 1; + UCHAR LevelTriggered : 1; + UCHAR Shared : 1; + UCHAR MoreEntries : 1; } EISA_IRQ_DESCRIPTOR, *PEISA_IRQ_DESCRIPTOR; typedef struct _EISA_IRQ_CONFIGURATION { - EISA_IRQ_DESCRIPTOR ConfigurationByte; - UCHAR Reserved; + EISA_IRQ_DESCRIPTOR ConfigurationByte; + UCHAR Reserved; } EISA_IRQ_CONFIGURATION, *PEISA_IRQ_CONFIGURATION; typedef struct _DMA_CONFIGURATION_BYTE0 { - UCHAR Channel:3; - UCHAR Reserved:3; - UCHAR Shared:1; - UCHAR MoreEntries:1; + UCHAR Channel : 3; + UCHAR Reserved : 3; + UCHAR Shared : 1; + UCHAR MoreEntries : 1; } DMA_CONFIGURATION_BYTE0; typedef struct _DMA_CONFIGURATION_BYTE1 { - UCHAR Reserved0:2; - UCHAR TransferSize:2; - UCHAR Timing:2; - UCHAR Reserved1:2; + UCHAR Reserved0 : 2; + UCHAR TransferSize : 2; + UCHAR Timing : 2; + UCHAR Reserved1 : 2; } DMA_CONFIGURATION_BYTE1; typedef struct _EISA_DMA_CONFIGURATION { - DMA_CONFIGURATION_BYTE0 ConfigurationByte0; - DMA_CONFIGURATION_BYTE1 ConfigurationByte1; + DMA_CONFIGURATION_BYTE0 ConfigurationByte0; + DMA_CONFIGURATION_BYTE1 ConfigurationByte1; } EISA_DMA_CONFIGURATION, *PEISA_DMA_CONFIGURATION; +#include typedef struct _EISA_PORT_DESCRIPTOR { - UCHAR NumberPorts:5; - UCHAR Reserved:1; - UCHAR Shared:1; - UCHAR MoreEntries:1; + UCHAR NumberPorts : 5; + UCHAR Reserved : 1; + UCHAR Shared : 1; + UCHAR MoreEntries : 1; } EISA_PORT_DESCRIPTOR, *PEISA_PORT_DESCRIPTOR; typedef struct _EISA_PORT_CONFIGURATION { - EISA_PORT_DESCRIPTOR Configuration; - USHORT PortAddress; + EISA_PORT_DESCRIPTOR Configuration; + USHORT PortAddress; } EISA_PORT_CONFIGURATION, *PEISA_PORT_CONFIGURATION; - -typedef struct _CM_EISA_SLOT_INFORMATION { - UCHAR ReturnCode; - UCHAR ReturnFlags; - UCHAR MajorRevision; - UCHAR MinorRevision; - USHORT Checksum; - UCHAR NumberFunctions; - UCHAR FunctionInformation; - ULONG CompressedId; -} CM_EISA_SLOT_INFORMATION, *PCM_EISA_SLOT_INFORMATION; +#include typedef struct _CM_EISA_FUNCTION_INFORMATION { - ULONG CompressedId; - UCHAR IdSlotFlags1; - UCHAR IdSlotFlags2; - UCHAR MinorRevision; - UCHAR MajorRevision; - UCHAR Selections[26]; - UCHAR FunctionFlags; - UCHAR TypeString[80]; - EISA_MEMORY_CONFIGURATION EisaMemory[9]; - EISA_IRQ_CONFIGURATION EisaIrq[7]; - EISA_DMA_CONFIGURATION EisaDma[4]; - EISA_PORT_CONFIGURATION EisaPort[20]; - UCHAR InitializationData[60]; + ULONG CompressedId; + UCHAR IdSlotFlags1; + UCHAR IdSlotFlags2; + UCHAR MinorRevision; + UCHAR MajorRevision; + UCHAR Selections[26]; + UCHAR FunctionFlags; + UCHAR TypeString[80]; + EISA_MEMORY_CONFIGURATION EisaMemory[9]; + EISA_IRQ_CONFIGURATION EisaIrq[7]; + EISA_DMA_CONFIGURATION EisaDma[4]; + EISA_PORT_CONFIGURATION EisaPort[20]; + UCHAR InitializationData[60]; } CM_EISA_FUNCTION_INFORMATION, *PCM_EISA_FUNCTION_INFORMATION; -#include - /* CM_EISA_FUNCTION_INFORMATION.FunctionFlags */ #define EISA_FUNCTION_ENABLED 0x80 @@ -4483,9 +3296,16 @@ typedef struct _CM_EISA_FUNCTION_INFORMATION { (EISA_HAS_PORT_RANGE + EISA_HAS_DMA_ENTRY + EISA_HAS_IRQ_ENTRY \ + EISA_HAS_MEMORY_ENTRY + EISA_HAS_TYPE_ENTRY) -#define EISA_MORE_ENTRIES 0x80 -#define EISA_SYSTEM_MEMORY 0x00 -#define EISA_MEMORY_TYPE_RAM 0x01 +typedef struct _CM_EISA_SLOT_INFORMATION { + UCHAR ReturnCode; + UCHAR ReturnFlags; + UCHAR MajorRevision; + UCHAR MinorRevision; + USHORT Checksum; + UCHAR NumberFunctions; + UCHAR FunctionInformation; + ULONG CompressedId; +} CM_EISA_SLOT_INFORMATION, *PCM_EISA_SLOT_INFORMATION; /* CM_EISA_SLOT_INFORMATION.ReturnCode */ @@ -4500,76 +3320,34 @@ typedef struct _CM_EISA_FUNCTION_INFORMATION { */ typedef VOID -(NTAPI *PINTERFACE_REFERENCE)( - PVOID Context); +(DDKAPI *PINTERFACE_REFERENCE)( + PVOID Context); typedef VOID -(NTAPI *PINTERFACE_DEREFERENCE)( +(DDKAPI *PINTERFACE_DEREFERENCE)( PVOID Context); typedef BOOLEAN -(NTAPI TRANSLATE_BUS_ADDRESS)( - IN PVOID Context, - IN PHYSICAL_ADDRESS BusAddress, - IN ULONG Length, - IN OUT PULONG AddressSpace, +(DDKAPI *PTRANSLATE_BUS_ADDRESS)( + IN PVOID Context, + IN PHYSICAL_ADDRESS BusAddress, + IN ULONG Length, + IN OUT PULONG AddressSpace, OUT PPHYSICAL_ADDRESS TranslatedAddress); -typedef TRANSLATE_BUS_ADDRESS *PTRANSLATE_BUS_ADDRESS; typedef struct _DMA_ADAPTER* -(NTAPI GET_DMA_ADAPTER)( - IN PVOID Context, - IN struct _DEVICE_DESCRIPTION *DeviceDescriptor, - OUT PULONG NumberOfMapRegisters); -typedef GET_DMA_ADAPTER *PGET_DMA_ADAPTER; +(DDKAPI *PGET_DMA_ADAPTER)( + IN PVOID Context, + IN struct _DEVICE_DESCRIPTION *DeviceDescriptor, + OUT PULONG NumberOfMapRegisters); typedef ULONG -(NTAPI GET_SET_DEVICE_DATA)( - IN PVOID Context, - IN ULONG DataType, - IN PVOID Buffer, - IN ULONG Offset, - IN ULONG Length); -typedef GET_SET_DEVICE_DATA *PGET_SET_DEVICE_DATA; - -typedef enum _DEVICE_INSTALL_STATE { - InstallStateInstalled, - InstallStateNeedsReinstall, - InstallStateFailedInstall, - InstallStateFinishInstall -} DEVICE_INSTALL_STATE, *PDEVICE_INSTALL_STATE; - -typedef struct _LEGACY_BUS_INFORMATION { - GUID BusTypeGuid; - INTERFACE_TYPE LegacyBusType; - ULONG BusNumber; -} LEGACY_BUS_INFORMATION, *PLEGACY_BUS_INFORMATION; - -typedef enum _DEVICE_REMOVAL_POLICY { - RemovalPolicyExpectNoRemoval = 1, - RemovalPolicyExpectOrderlyRemoval = 2, - RemovalPolicyExpectSurpriseRemoval = 3 -} DEVICE_REMOVAL_POLICY, *PDEVICE_REMOVAL_POLICY; - -typedef VOID -(NTAPI*PREENUMERATE_SELF)( - IN PVOID Context); - -typedef struct _REENUMERATE_SELF_INTERFACE_STANDARD { - USHORT Size; - USHORT Version; - PVOID Context; - PINTERFACE_REFERENCE InterfaceReference; - PINTERFACE_DEREFERENCE InterfaceDereference; - PREENUMERATE_SELF SurpriseRemoveAndReenumerateSelf; -} REENUMERATE_SELF_INTERFACE_STANDARD, *PREENUMERATE_SELF_INTERFACE_STANDARD; - -typedef VOID -(NTAPI *PIO_DEVICE_EJECT_CALLBACK)( - IN NTSTATUS Status, - IN OUT PVOID Context OPTIONAL); - -#define PCI_DEVICE_PRESENT_INTERFACE_VERSION 1 +(DDKAPI *PGET_SET_DEVICE_DATA)( + IN PVOID Context, + IN ULONG DataType, + IN PVOID Buffer, + IN ULONG Offset, + IN ULONG Length); /* PCI_DEVICE_PRESENCE_PARAMETERS.Flags */ #define PCI_USE_SUBSYSTEM_IDS 0x00000001 @@ -4581,116 +3359,283 @@ typedef VOID #define PCI_USE_LOCAL_DEVICE 0x00000040 typedef struct _PCI_DEVICE_PRESENCE_PARAMETERS { - ULONG Size; - ULONG Flags; - USHORT VendorID; - USHORT DeviceID; - UCHAR RevisionID; - USHORT SubVendorID; - USHORT SubSystemID; - UCHAR BaseClass; - UCHAR SubClass; - UCHAR ProgIf; + ULONG Size; + ULONG Flags; + USHORT VendorID; + USHORT DeviceID; + UCHAR RevisionID; + USHORT SubVendorID; + USHORT SubSystemID; + UCHAR BaseClass; + UCHAR SubClass; + UCHAR ProgIf; } PCI_DEVICE_PRESENCE_PARAMETERS, *PPCI_DEVICE_PRESENCE_PARAMETERS; typedef BOOLEAN -(NTAPI PCI_IS_DEVICE_PRESENT)( - IN USHORT VendorID, - IN USHORT DeviceID, - IN UCHAR RevisionID, - IN USHORT SubVendorID, - IN USHORT SubSystemID, - IN ULONG Flags); -typedef PCI_IS_DEVICE_PRESENT *PPCI_IS_DEVICE_PRESENT; +(DDKAPI *PPCI_IS_DEVICE_PRESENT)( + IN USHORT VendorID, + IN USHORT DeviceID, + IN UCHAR RevisionID, + IN USHORT SubVendorID, + IN USHORT SubSystemID, + IN ULONG Flags); typedef BOOLEAN -(NTAPI PCI_IS_DEVICE_PRESENT_EX)( +(DDKAPI *PPCI_IS_DEVICE_PRESENT_EX)( IN PVOID Context, IN PPCI_DEVICE_PRESENCE_PARAMETERS Parameters); -typedef PCI_IS_DEVICE_PRESENT_EX *PPCI_IS_DEVICE_PRESENT_EX; typedef struct _BUS_INTERFACE_STANDARD { - USHORT Size; - USHORT Version; - PVOID Context; - PINTERFACE_REFERENCE InterfaceReference; - PINTERFACE_DEREFERENCE InterfaceDereference; - PTRANSLATE_BUS_ADDRESS TranslateBusAddress; - PGET_DMA_ADAPTER GetDmaAdapter; - PGET_SET_DEVICE_DATA SetBusData; - PGET_SET_DEVICE_DATA GetBusData; + USHORT Size; + USHORT Version; + PVOID Context; + PINTERFACE_REFERENCE InterfaceReference; + PINTERFACE_DEREFERENCE InterfaceDereference; + PTRANSLATE_BUS_ADDRESS TranslateBusAddress; + PGET_DMA_ADAPTER GetDmaAdapter; + PGET_SET_DEVICE_DATA SetBusData; + PGET_SET_DEVICE_DATA GetBusData; } BUS_INTERFACE_STANDARD, *PBUS_INTERFACE_STANDARD; typedef struct _PCI_DEVICE_PRESENT_INTERFACE { - USHORT Size; - USHORT Version; - PVOID Context; - PINTERFACE_REFERENCE InterfaceReference; - PINTERFACE_DEREFERENCE InterfaceDereference; - PPCI_IS_DEVICE_PRESENT IsDevicePresent; - PPCI_IS_DEVICE_PRESENT_EX IsDevicePresentEx; + USHORT Size; + USHORT Version; + PVOID Context; + PINTERFACE_REFERENCE InterfaceReference; + PINTERFACE_DEREFERENCE InterfaceDereference; + PPCI_IS_DEVICE_PRESENT IsDevicePresent; + PPCI_IS_DEVICE_PRESENT_EX IsDevicePresentEx; } PCI_DEVICE_PRESENT_INTERFACE, *PPCI_DEVICE_PRESENT_INTERFACE; +typedef +BOOLEAN +(*PGPE_SERVICE_ROUTINE2)( + PVOID ObjectContext, + PVOID ServiceContext +); + +typedef +NTSTATUS +(*PGPE_CONNECT_VECTOR2)( + PVOID Context, + ULONG GpeNumber, + KINTERRUPT_MODE Mode, + BOOLEAN Shareable, + PGPE_SERVICE_ROUTINE2 ServiceRoutine, + PVOID ServiceContext, + PVOID *ObjectContext +); + +typedef +NTSTATUS +(*PGPE_DISCONNECT_VECTOR2)( + PVOID Context, + PVOID ObjectContext +); + +typedef +NTSTATUS +(*PGPE_ENABLE_EVENT2)( + PVOID Context, + PVOID ObjectContext +); + +typedef +NTSTATUS +(*PGPE_DISABLE_EVENT2)( + PVOID Context, + PVOID ObjectContext +); + +typedef +NTSTATUS +(*PGPE_CLEAR_STATUS2)( + PVOID Context, + PVOID ObjectContext +); + +typedef +VOID +(*PDEVICE_NOTIFY_CALLBACK2)( + PVOID NotificationContext, + ULONG NotifyCode +); + +typedef +NTSTATUS +(*PREGISTER_FOR_DEVICE_NOTIFICATIONS2)( + PVOID Context, + PDEVICE_NOTIFY_CALLBACK2 NotificationHandler, + PVOID NotificationContext +); + +typedef +VOID +(*PUNREGISTER_FOR_DEVICE_NOTIFICATIONS2)( + PVOID Context +); + +typedef struct +{ + USHORT Size; + USHORT Version; + PVOID Context; + PINTERFACE_REFERENCE InterfaceReference; + PINTERFACE_DEREFERENCE InterfaceDereference; + PGPE_CONNECT_VECTOR2 GpeConnectVector; + PGPE_DISCONNECT_VECTOR2 GpeDisconnectVector; + PGPE_ENABLE_EVENT2 GpeEnableEvent; + PGPE_DISABLE_EVENT2 GpeDisableEvent; + PGPE_CLEAR_STATUS2 GpeClearStatus; + PREGISTER_FOR_DEVICE_NOTIFICATIONS2 RegisterForDeviceNotifications; + PUNREGISTER_FOR_DEVICE_NOTIFICATIONS2 UnregisterForDeviceNotifications; +} ACPI_INTERFACE_STANDARD2, *PACPI_INTERFACE_STANDARD2; + +typedef +BOOLEAN +(*PGPE_SERVICE_ROUTINE)( + PDEVICE_OBJECT ObjectContext, + PVOID ServiceContext +); + +typedef +NTSTATUS +(*PGPE_CONNECT_VECTOR)( + PDEVICE_OBJECT Context, + ULONG GpeNumber, + KINTERRUPT_MODE Mode, + BOOLEAN Shareable, + PGPE_SERVICE_ROUTINE ServiceRoutine, + PVOID ServiceContext, + PVOID *ObjectContext +); + +typedef +NTSTATUS +(*PGPE_DISCONNECT_VECTOR)( + PDEVICE_OBJECT Context, + PVOID ObjectContext +); + +typedef +NTSTATUS +(*PGPE_ENABLE_EVENT)( + PDEVICE_OBJECT Context, + PVOID ObjectContext +); + +typedef +NTSTATUS +(*PGPE_DISABLE_EVENT)( + PDEVICE_OBJECT Context, + PVOID ObjectContext +); + +typedef +NTSTATUS +(*PGPE_CLEAR_STATUS)( + PDEVICE_OBJECT Context, + PVOID ObjectContext +); + +typedef +VOID +(*PDEVICE_NOTIFY_CALLBACK)( + PVOID NotificationContext, + ULONG NotifyCode +); + +typedef +NTSTATUS +(*PREGISTER_FOR_DEVICE_NOTIFICATIONS)( + PDEVICE_OBJECT Context, + PDEVICE_NOTIFY_CALLBACK NotificationHandler, + PVOID NotificationContext +); + +typedef +VOID +(*PUNREGISTER_FOR_DEVICE_NOTIFICATIONS)( + PDEVICE_OBJECT Context, + PDEVICE_NOTIFY_CALLBACK NotificationHandler +); + +typedef struct +{ + USHORT Size; + USHORT Version; + PVOID Context; + PINTERFACE_REFERENCE InterfaceReference; + PINTERFACE_DEREFERENCE InterfaceDereference; + PGPE_CONNECT_VECTOR GpeConnectVector; + PGPE_DISCONNECT_VECTOR GpeDisconnectVector; + PGPE_ENABLE_EVENT GpeEnableEvent; + PGPE_DISABLE_EVENT GpeDisableEvent; + PGPE_CLEAR_STATUS GpeClearStatus; + PREGISTER_FOR_DEVICE_NOTIFICATIONS RegisterForDeviceNotifications; + PUNREGISTER_FOR_DEVICE_NOTIFICATIONS UnregisterForDeviceNotifications; +} ACPI_INTERFACE_STANDARD, *PACPI_INTERFACE_STANDARD; + typedef struct _DEVICE_CAPABILITIES { - USHORT Size; - USHORT Version; - ULONG DeviceD1:1; - ULONG DeviceD2:1; - ULONG LockSupported:1; - ULONG EjectSupported:1; - ULONG Removable:1; - ULONG DockDevice:1; - ULONG UniqueID:1; - ULONG SilentInstall:1; - ULONG RawDeviceOK:1; - ULONG SurpriseRemovalOK:1; - ULONG WakeFromD0:1; - ULONG WakeFromD1:1; - ULONG WakeFromD2:1; - ULONG WakeFromD3:1; - ULONG HardwareDisabled:1; - ULONG NonDynamic:1; - ULONG WarmEjectSupported:1; - ULONG NoDisplayInUI:1; - ULONG Reserved:14; - ULONG Address; - ULONG UINumber; - DEVICE_POWER_STATE DeviceState[PowerSystemMaximum]; - SYSTEM_POWER_STATE SystemWake; - DEVICE_POWER_STATE DeviceWake; - ULONG D1Latency; - ULONG D2Latency; - ULONG D3Latency; + USHORT Size; + USHORT Version; + ULONG DeviceD1 : 1; + ULONG DeviceD2 : 1; + ULONG LockSupported : 1; + ULONG EjectSupported : 1; + ULONG Removable : 1; + ULONG DockDevice : 1; + ULONG UniqueID : 1; + ULONG SilentInstall : 1; + ULONG RawDeviceOK : 1; + ULONG SurpriseRemovalOK : 1; + ULONG WakeFromD0 : 1; + ULONG WakeFromD1 : 1; + ULONG WakeFromD2 : 1; + ULONG WakeFromD3 : 1; + ULONG HardwareDisabled : 1; + ULONG NonDynamic : 1; + ULONG WarmEjectSupported : 1; + ULONG NoDisplayInUI : 1; + ULONG Reserved : 14; + ULONG Address; + ULONG UINumber; + DEVICE_POWER_STATE DeviceState[PowerSystemMaximum]; + SYSTEM_POWER_STATE SystemWake; + DEVICE_POWER_STATE DeviceWake; + ULONG D1Latency; + ULONG D2Latency; + ULONG D3Latency; } DEVICE_CAPABILITIES, *PDEVICE_CAPABILITIES; typedef struct _DEVICE_INTERFACE_CHANGE_NOTIFICATION { - USHORT Version; - USHORT Size; - GUID Event; - GUID InterfaceClassGuid; - PUNICODE_STRING SymbolicLinkName; + USHORT Version; + USHORT Size; + GUID Event; + GUID InterfaceClassGuid; + PUNICODE_STRING SymbolicLinkName; } DEVICE_INTERFACE_CHANGE_NOTIFICATION, *PDEVICE_INTERFACE_CHANGE_NOTIFICATION; typedef struct _HWPROFILE_CHANGE_NOTIFICATION { - USHORT Version; - USHORT Size; - GUID Event; + USHORT Version; + USHORT Size; + GUID Event; } HWPROFILE_CHANGE_NOTIFICATION, *PHWPROFILE_CHANGE_NOTIFICATION; #undef INTERFACE typedef struct _INTERFACE { - USHORT Size; - USHORT Version; - PVOID Context; - PINTERFACE_REFERENCE InterfaceReference; - PINTERFACE_DEREFERENCE InterfaceDereference; + USHORT Size; + USHORT Version; + PVOID Context; + PINTERFACE_REFERENCE InterfaceReference; + PINTERFACE_DEREFERENCE InterfaceDereference; } INTERFACE, *PINTERFACE; typedef struct _PLUGPLAY_NOTIFICATION_HEADER { - USHORT Version; - USHORT Size; - GUID Event; + USHORT Version; + USHORT Size; + GUID Event; } PLUGPLAY_NOTIFICATION_HEADER, *PPLUGPLAY_NOTIFICATION_HEADER; typedef ULONG PNP_DEVICE_STATE, *PPNP_DEVICE_STATE; @@ -4705,154 +3650,21 @@ typedef ULONG PNP_DEVICE_STATE, *PPNP_DEVICE_STATE; #define PNP_DEVICE_NOT_DISABLEABLE 0x00000020 typedef struct _TARGET_DEVICE_CUSTOM_NOTIFICATION { - USHORT Version; - USHORT Size; - GUID Event; - struct _FILE_OBJECT *FileObject; - LONG NameBufferOffset; - UCHAR CustomDataBuffer[1]; + USHORT Version; + USHORT Size; + GUID Event; + struct _FILE_OBJECT *FileObject; + LONG NameBufferOffset; + UCHAR CustomDataBuffer[1]; } TARGET_DEVICE_CUSTOM_NOTIFICATION, *PTARGET_DEVICE_CUSTOM_NOTIFICATION; typedef struct _TARGET_DEVICE_REMOVAL_NOTIFICATION { - USHORT Version; - USHORT Size; - GUID Event; - struct _FILE_OBJECT *FileObject; + USHORT Version; + USHORT Size; + GUID Event; + struct _FILE_OBJECT *FileObject; } TARGET_DEVICE_REMOVAL_NOTIFICATION, *PTARGET_DEVICE_REMOVAL_NOTIFICATION; -#if (NTDDI_VERSION >= NTDDI_VISTA) -#include -#define PLUGPLAY_PROPERTY_PERSISTENT 0x00000001 -#endif - -#define PNP_REPLACE_NO_MAP MAXLONGLONG - -typedef NTSTATUS -(NTAPI *PREPLACE_MAP_MEMORY)( - IN PHYSICAL_ADDRESS TargetPhysicalAddress, - IN PHYSICAL_ADDRESS SparePhysicalAddress, - IN OUT PLARGE_INTEGER NumberOfBytes, - OUT PVOID *TargetAddress, - OUT PVOID *SpareAddress); - -typedef struct _PNP_REPLACE_MEMORY_LIST { - ULONG AllocatedCount; - ULONG Count; - ULONGLONG TotalLength; - struct { - PHYSICAL_ADDRESS Address; - ULONGLONG Length; - } Ranges[ANYSIZE_ARRAY]; -} PNP_REPLACE_MEMORY_LIST, *PPNP_REPLACE_MEMORY_LIST; - -typedef struct _PNP_REPLACE_PROCESSOR_LIST { - PKAFFINITY Affinity; - ULONG GroupCount; - ULONG AllocatedCount; - ULONG Count; - ULONG ApicIds[ANYSIZE_ARRAY]; -} PNP_REPLACE_PROCESSOR_LIST, *PPNP_REPLACE_PROCESSOR_LIST; - -typedef struct _PNP_REPLACE_PROCESSOR_LIST_V1 { - KAFFINITY AffinityMask; - ULONG AllocatedCount; - ULONG Count; - ULONG ApicIds[ANYSIZE_ARRAY]; -} PNP_REPLACE_PROCESSOR_LIST_V1, *PPNP_REPLACE_PROCESSOR_LIST_V1; - -#define PNP_REPLACE_PARAMETERS_VERSION 2 - -typedef struct _PNP_REPLACE_PARAMETERS { - ULONG Size; - ULONG Version; - ULONG64 Target; - ULONG64 Spare; - PPNP_REPLACE_PROCESSOR_LIST TargetProcessors; - PPNP_REPLACE_PROCESSOR_LIST SpareProcessors; - PPNP_REPLACE_MEMORY_LIST TargetMemory; - PPNP_REPLACE_MEMORY_LIST SpareMemory; - PREPLACE_MAP_MEMORY MapMemory; -} PNP_REPLACE_PARAMETERS, *PPNP_REPLACE_PARAMETERS; - -typedef VOID -(NTAPI *PREPLACE_UNLOAD)( - VOID); - -typedef NTSTATUS -(NTAPI *PREPLACE_BEGIN)( - IN PPNP_REPLACE_PARAMETERS Parameters, - OUT PVOID *Context); - -typedef NTSTATUS -(NTAPI *PREPLACE_END)( - IN PVOID Context); - -typedef NTSTATUS -(NTAPI *PREPLACE_MIRROR_PHYSICAL_MEMORY)( - IN PVOID Context, - IN PHYSICAL_ADDRESS PhysicalAddress, - IN LARGE_INTEGER ByteCount); - -typedef NTSTATUS -(NTAPI *PREPLACE_SET_PROCESSOR_ID)( - IN PVOID Context, - IN ULONG ApicId, - IN BOOLEAN Target); - -typedef NTSTATUS -(NTAPI *PREPLACE_SWAP)( - IN PVOID Context); - -typedef NTSTATUS -(NTAPI *PREPLACE_INITIATE_HARDWARE_MIRROR)( - IN PVOID Context); - -typedef NTSTATUS -(NTAPI *PREPLACE_MIRROR_PLATFORM_MEMORY)( - IN PVOID Context); - -typedef NTSTATUS -(NTAPI *PREPLACE_GET_MEMORY_DESTINATION)( - IN PVOID Context, - IN PHYSICAL_ADDRESS SourceAddress, - OUT PPHYSICAL_ADDRESS DestinationAddress); - -typedef NTSTATUS -(NTAPI *PREPLACE_ENABLE_DISABLE_HARDWARE_QUIESCE)( - IN PVOID Context, - IN BOOLEAN Enable); - -#define PNP_REPLACE_DRIVER_INTERFACE_VERSION 1 -#define PNP_REPLACE_DRIVER_INTERFACE_MINIMUM_SIZE \ - FIELD_OFFSET(PNP_REPLACE_DRIVER_INTERFACE, InitiateHardwareMirror) - -#define PNP_REPLACE_MEMORY_SUPPORTED 0x0001 -#define PNP_REPLACE_PROCESSOR_SUPPORTED 0x0002 -#define PNP_REPLACE_HARDWARE_MEMORY_MIRRORING 0x0004 -#define PNP_REPLACE_HARDWARE_PAGE_COPY 0x0008 -#define PNP_REPLACE_HARDWARE_QUIESCE 0x0010 - -typedef struct _PNP_REPLACE_DRIVER_INTERFACE { - ULONG Size; - ULONG Version; - ULONG Flags; - PREPLACE_UNLOAD Unload; - PREPLACE_BEGIN BeginReplace; - PREPLACE_END EndReplace; - PREPLACE_MIRROR_PHYSICAL_MEMORY MirrorPhysicalMemory; - PREPLACE_SET_PROCESSOR_ID SetProcessorId; - PREPLACE_SWAP Swap; - PREPLACE_INITIATE_HARDWARE_MIRROR InitiateHardwareMirror; - PREPLACE_MIRROR_PLATFORM_MEMORY MirrorPlatformMemory; - PREPLACE_GET_MEMORY_DESTINATION GetMemoryDestination; - PREPLACE_ENABLE_DISABLE_HARDWARE_QUIESCE EnableDisableHardwareQuiesce; -} PNP_REPLACE_DRIVER_INTERFACE, *PPNP_REPLACE_DRIVER_INTERFACE; - -typedef NTSTATUS -(NTAPI *PREPLACE_DRIVER_INIT)( - IN OUT PPNP_REPLACE_DRIVER_INTERFACE Interface, - IN PVOID Unused); - typedef enum _DEVICE_USAGE_NOTIFICATION_TYPE { DeviceUsageTypeUndefined, DeviceUsageTypePaging, @@ -4861,9 +3673,9 @@ typedef enum _DEVICE_USAGE_NOTIFICATION_TYPE { } DEVICE_USAGE_NOTIFICATION_TYPE; typedef struct _POWER_SEQUENCE { - ULONG SequenceD1; - ULONG SequenceD2; - ULONG SequenceD3; + ULONG SequenceD1; + ULONG SequenceD2; + ULONG SequenceD3; } POWER_SEQUENCE, *PPOWER_SEQUENCE; typedef enum { @@ -4899,27 +3711,16 @@ typedef enum _IO_NOTIFICATION_EVENT_CATEGORY { EventCategoryTargetDeviceChange } IO_NOTIFICATION_EVENT_CATEGORY; -typedef enum _IO_PRIORITY_HINT { - IoPriorityVeryLow = 0, - IoPriorityLow, - IoPriorityNormal, - IoPriorityHigh, - IoPriorityCritical, - MaxIoPriorityTypes -} IO_PRIORITY_HINT; - #define PNPNOTIFY_DEVICE_INTERFACE_INCLUDE_EXISTING_INTERFACES 0x00000001 typedef NTSTATUS -(NTAPI DRIVER_NOTIFICATION_CALLBACK_ROUTINE)( +(DDKAPI *PDRIVER_NOTIFICATION_CALLBACK_ROUTINE)( IN PVOID NotificationStructure, IN PVOID Context); -typedef DRIVER_NOTIFICATION_CALLBACK_ROUTINE *PDRIVER_NOTIFICATION_CALLBACK_ROUTINE; typedef VOID -(NTAPI DEVICE_CHANGE_COMPLETE_CALLBACK)( +(DDKAPI *PDEVICE_CHANGE_COMPLETE_CALLBACK)( IN PVOID Context); -typedef DEVICE_CHANGE_COMPLETE_CALLBACK *PDEVICE_CHANGE_COMPLETE_CALLBACK; typedef enum _FILE_INFORMATION_CLASS { FileDirectoryInformation = 1, @@ -4981,59 +3782,35 @@ typedef enum _FILE_INFORMATION_CLASS { } FILE_INFORMATION_CLASS, *PFILE_INFORMATION_CLASS; typedef struct _FILE_POSITION_INFORMATION { - LARGE_INTEGER CurrentByteOffset; + LARGE_INTEGER CurrentByteOffset; } FILE_POSITION_INFORMATION, *PFILE_POSITION_INFORMATION; +#include typedef struct _FILE_BASIC_INFORMATION { - LARGE_INTEGER CreationTime; - LARGE_INTEGER LastAccessTime; - LARGE_INTEGER LastWriteTime; - LARGE_INTEGER ChangeTime; - ULONG FileAttributes; + LARGE_INTEGER CreationTime; + LARGE_INTEGER LastAccessTime; + LARGE_INTEGER LastWriteTime; + LARGE_INTEGER ChangeTime; + ULONG FileAttributes; } FILE_BASIC_INFORMATION, *PFILE_BASIC_INFORMATION; - -typedef struct _FILE_IO_PRIORITY_HINT_INFORMATION { - IO_PRIORITY_HINT PriorityHint; -} FILE_IO_PRIORITY_HINT_INFORMATION, *PFILE_IO_PRIORITY_HINT_INFORMATION; - -typedef struct _FILE_IO_COMPLETION_NOTIFICATION_INFORMATION { - ULONG Flags; -} FILE_IO_COMPLETION_NOTIFICATION_INFORMATION, *PFILE_IO_COMPLETION_NOTIFICATION_INFORMATION; - -typedef struct _FILE_IOSTATUSBLOCK_RANGE_INFORMATION { - PUCHAR IoStatusBlockRange; - ULONG Length; -} FILE_IOSTATUSBLOCK_RANGE_INFORMATION, *PFILE_IOSTATUSBLOCK_RANGE_INFORMATION; - -typedef struct _FILE_IS_REMOTE_DEVICE_INFORMATION { - BOOLEAN IsRemote; -} FILE_IS_REMOTE_DEVICE_INFORMATION, *PFILE_IS_REMOTE_DEVICE_INFORMATION; - -typedef struct _FILE_NUMA_NODE_INFORMATION { - USHORT NodeNumber; -} FILE_NUMA_NODE_INFORMATION, *PFILE_NUMA_NODE_INFORMATION; - -typedef struct _FILE_PROCESS_IDS_USING_FILE_INFORMATION { - ULONG NumberOfProcessIdsInList; - ULONG_PTR ProcessIdList[1]; -} FILE_PROCESS_IDS_USING_FILE_INFORMATION, *PFILE_PROCESS_IDS_USING_FILE_INFORMATION; +#include typedef struct _FILE_STANDARD_INFORMATION { - LARGE_INTEGER AllocationSize; - LARGE_INTEGER EndOfFile; - ULONG NumberOfLinks; - BOOLEAN DeletePending; - BOOLEAN Directory; + LARGE_INTEGER AllocationSize; + LARGE_INTEGER EndOfFile; + ULONG NumberOfLinks; + BOOLEAN DeletePending; + BOOLEAN Directory; } FILE_STANDARD_INFORMATION, *PFILE_STANDARD_INFORMATION; typedef struct _FILE_NETWORK_OPEN_INFORMATION { - LARGE_INTEGER CreationTime; - LARGE_INTEGER LastAccessTime; - LARGE_INTEGER LastWriteTime; - LARGE_INTEGER ChangeTime; - LARGE_INTEGER AllocationSize; - LARGE_INTEGER EndOfFile; - ULONG FileAttributes; + LARGE_INTEGER CreationTime; + LARGE_INTEGER LastAccessTime; + LARGE_INTEGER LastWriteTime; + LARGE_INTEGER ChangeTime; + LARGE_INTEGER AllocationSize; + LARGE_INTEGER EndOfFile; + ULONG FileAttributes; } FILE_NETWORK_OPEN_INFORMATION, *PFILE_NETWORK_OPEN_INFORMATION; typedef enum _FSINFOCLASS { @@ -5051,329 +3828,321 @@ typedef enum _FSINFOCLASS { } FS_INFORMATION_CLASS, *PFS_INFORMATION_CLASS; typedef struct _FILE_FS_DEVICE_INFORMATION { - DEVICE_TYPE DeviceType; - ULONG Characteristics; + DEVICE_TYPE DeviceType; + ULONG Characteristics; } FILE_FS_DEVICE_INFORMATION, *PFILE_FS_DEVICE_INFORMATION; typedef struct _FILE_FULL_EA_INFORMATION { - ULONG NextEntryOffset; - UCHAR Flags; - UCHAR EaNameLength; - USHORT EaValueLength; - CHAR EaName[1]; + ULONG NextEntryOffset; + UCHAR Flags; + UCHAR EaNameLength; + USHORT EaValueLength; + CHAR EaName[1]; } FILE_FULL_EA_INFORMATION, *PFILE_FULL_EA_INFORMATION; -typedef struct _FILE_SFIO_RESERVE_INFORMATION { - ULONG RequestsPerPeriod; - ULONG Period; - BOOLEAN RetryFailures; - BOOLEAN Discardable; - ULONG RequestSize; - ULONG NumOutstandingRequests; -} FILE_SFIO_RESERVE_INFORMATION, *PFILE_SFIO_RESERVE_INFORMATION; - -typedef struct _FILE_SFIO_VOLUME_INFORMATION { - ULONG MaximumRequestsPerPeriod; - ULONG MinimumPeriod; - ULONG MinimumTransferSize; -} FILE_SFIO_VOLUME_INFORMATION, *PFILE_SFIO_VOLUME_INFORMATION; - -#define FILE_SKIP_COMPLETION_PORT_ON_SUCCESS 0x1 -#define FILE_SKIP_SET_EVENT_ON_HANDLE 0x2 -#define FILE_SKIP_SET_USER_EVENT_ON_FAST_IO 0x4 - #define FM_LOCK_BIT (0x1) #define FM_LOCK_BIT_V (0x0) #define FM_LOCK_WAITER_WOKEN (0x2) #define FM_LOCK_WAITER_INC (0x4) +typedef ULONG_PTR ERESOURCE_THREAD, *PERESOURCE_THREAD; + +typedef struct _OWNER_ENTRY { + ERESOURCE_THREAD OwnerThread; + _ANONYMOUS_UNION union { + LONG OwnerCount; + ULONG TableSize; + } DUMMYUNIONNAME; +} OWNER_ENTRY, *POWNER_ENTRY; + +typedef struct _ERESOURCE +{ + LIST_ENTRY SystemResourcesList; + POWNER_ENTRY OwnerTable; + SHORT ActiveCount; + USHORT Flag; + volatile PKSEMAPHORE SharedWaiters; + volatile PKEVENT ExclusiveWaiters; + OWNER_ENTRY OwnerEntry; + ULONG ActiveEntries; + ULONG ContentionCount; + ULONG NumberOfSharedWaiters; + ULONG NumberOfExclusiveWaiters; + __GNU_EXTENSION union + { + PVOID Address; + ULONG_PTR CreatorBackTraceIndex; + }; + KSPIN_LOCK SpinLock; +} ERESOURCE, *PERESOURCE; + +/* ERESOURCE.Flag */ +#define ResourceNeverExclusive 0x0010 +#define ResourceReleaseByOtherThread 0x0020 +#define ResourceOwnedExclusive 0x0080 + +#define RESOURCE_HASH_TABLE_SIZE 64 + typedef BOOLEAN -(NTAPI FAST_IO_CHECK_IF_POSSIBLE)( - IN struct _FILE_OBJECT *FileObject, - IN PLARGE_INTEGER FileOffset, - IN ULONG Length, - IN BOOLEAN Wait, - IN ULONG LockKey, - IN BOOLEAN CheckForReadOperation, - OUT PIO_STATUS_BLOCK IoStatus, - IN struct _DEVICE_OBJECT *DeviceObject); -typedef FAST_IO_CHECK_IF_POSSIBLE *PFAST_IO_CHECK_IF_POSSIBLE; +(DDKAPI *PFAST_IO_CHECK_IF_POSSIBLE)( + IN struct _FILE_OBJECT *FileObject, + IN PLARGE_INTEGER FileOffset, + IN ULONG Length, + IN BOOLEAN Wait, + IN ULONG LockKey, + IN BOOLEAN CheckForReadOperation, + OUT PIO_STATUS_BLOCK IoStatus, + IN struct _DEVICE_OBJECT *DeviceObject); typedef BOOLEAN -(NTAPI FAST_IO_READ)( - IN struct _FILE_OBJECT *FileObject, - IN PLARGE_INTEGER FileOffset, - IN ULONG Length, - IN BOOLEAN Wait, - IN ULONG LockKey, - OUT PVOID Buffer, - OUT PIO_STATUS_BLOCK IoStatus, - IN struct _DEVICE_OBJECT *DeviceObject); -typedef FAST_IO_READ *PFAST_IO_READ; +(DDKAPI *PFAST_IO_READ)( + IN struct _FILE_OBJECT *FileObject, + IN PLARGE_INTEGER FileOffset, + IN ULONG Length, + IN BOOLEAN Wait, + IN ULONG LockKey, + OUT PVOID Buffer, + OUT PIO_STATUS_BLOCK IoStatus, + IN struct _DEVICE_OBJECT *DeviceObject); typedef BOOLEAN -(NTAPI FAST_IO_WRITE)( - IN struct _FILE_OBJECT *FileObject, - IN PLARGE_INTEGER FileOffset, - IN ULONG Length, - IN BOOLEAN Wait, - IN ULONG LockKey, - IN PVOID Buffer, - OUT PIO_STATUS_BLOCK IoStatus, - IN struct _DEVICE_OBJECT *DeviceObject); -typedef FAST_IO_WRITE *PFAST_IO_WRITE; +(DDKAPI *PFAST_IO_WRITE)( + IN struct _FILE_OBJECT *FileObject, + IN PLARGE_INTEGER FileOffset, + IN ULONG Length, + IN BOOLEAN Wait, + IN ULONG LockKey, + IN PVOID Buffer, + OUT PIO_STATUS_BLOCK IoStatus, + IN struct _DEVICE_OBJECT *DeviceObject); typedef BOOLEAN -(NTAPI FAST_IO_QUERY_BASIC_INFO)( - IN struct _FILE_OBJECT *FileObject, - IN BOOLEAN Wait, - OUT PFILE_BASIC_INFORMATION Buffer, - OUT PIO_STATUS_BLOCK IoStatus, - IN struct _DEVICE_OBJECT *DeviceObject); -typedef FAST_IO_QUERY_BASIC_INFO *PFAST_IO_QUERY_BASIC_INFO; +(DDKAPI *PFAST_IO_QUERY_BASIC_INFO)( + IN struct _FILE_OBJECT *FileObject, + IN BOOLEAN Wait, + OUT PFILE_BASIC_INFORMATION Buffer, + OUT PIO_STATUS_BLOCK IoStatus, + IN struct _DEVICE_OBJECT *DeviceObject); typedef BOOLEAN -(NTAPI FAST_IO_QUERY_STANDARD_INFO)( - IN struct _FILE_OBJECT *FileObject, - IN BOOLEAN Wait, - OUT PFILE_STANDARD_INFORMATION Buffer, - OUT PIO_STATUS_BLOCK IoStatus, - IN struct _DEVICE_OBJECT *DeviceObject); -typedef FAST_IO_QUERY_STANDARD_INFO *PFAST_IO_QUERY_STANDARD_INFO; +(DDKAPI *PFAST_IO_QUERY_STANDARD_INFO)( + IN struct _FILE_OBJECT *FileObject, + IN BOOLEAN Wait, + OUT PFILE_STANDARD_INFORMATION Buffer, + OUT PIO_STATUS_BLOCK IoStatus, + IN struct _DEVICE_OBJECT *DeviceObject); typedef BOOLEAN -(NTAPI FAST_IO_LOCK)( - IN struct _FILE_OBJECT *FileObject, - IN PLARGE_INTEGER FileOffset, - IN PLARGE_INTEGER Length, - PEPROCESS ProcessId, - ULONG Key, - BOOLEAN FailImmediately, - BOOLEAN ExclusiveLock, - OUT PIO_STATUS_BLOCK IoStatus, - IN struct _DEVICE_OBJECT *DeviceObject); -typedef FAST_IO_LOCK *PFAST_IO_LOCK; +(DDKAPI *PFAST_IO_LOCK)( + IN struct _FILE_OBJECT *FileObject, + IN PLARGE_INTEGER FileOffset, + IN PLARGE_INTEGER Length, + PEPROCESS ProcessId, + ULONG Key, + BOOLEAN FailImmediately, + BOOLEAN ExclusiveLock, + OUT PIO_STATUS_BLOCK IoStatus, + IN struct _DEVICE_OBJECT *DeviceObject); typedef BOOLEAN -(NTAPI FAST_IO_UNLOCK_SINGLE)( - IN struct _FILE_OBJECT *FileObject, - IN PLARGE_INTEGER FileOffset, - IN PLARGE_INTEGER Length, - PEPROCESS ProcessId, - ULONG Key, - OUT PIO_STATUS_BLOCK IoStatus, - IN struct _DEVICE_OBJECT *DeviceObject); -typedef FAST_IO_UNLOCK_SINGLE *PFAST_IO_UNLOCK_SINGLE; +(DDKAPI *PFAST_IO_UNLOCK_SINGLE)( + IN struct _FILE_OBJECT *FileObject, + IN PLARGE_INTEGER FileOffset, + IN PLARGE_INTEGER Length, + PEPROCESS ProcessId, + ULONG Key, + OUT PIO_STATUS_BLOCK IoStatus, + IN struct _DEVICE_OBJECT *DeviceObject); typedef BOOLEAN -(NTAPI FAST_IO_UNLOCK_ALL)( - IN struct _FILE_OBJECT *FileObject, - PEPROCESS ProcessId, - OUT PIO_STATUS_BLOCK IoStatus, - IN struct _DEVICE_OBJECT *DeviceObject); -typedef FAST_IO_UNLOCK_ALL *PFAST_IO_UNLOCK_ALL; +(DDKAPI *PFAST_IO_UNLOCK_ALL)( + IN struct _FILE_OBJECT *FileObject, + PEPROCESS ProcessId, + OUT PIO_STATUS_BLOCK IoStatus, + IN struct _DEVICE_OBJECT *DeviceObject); typedef BOOLEAN -(NTAPI FAST_IO_UNLOCK_ALL_BY_KEY)( - IN struct _FILE_OBJECT *FileObject, - PVOID ProcessId, - ULONG Key, - OUT PIO_STATUS_BLOCK IoStatus, - IN struct _DEVICE_OBJECT *DeviceObject); -typedef FAST_IO_UNLOCK_ALL_BY_KEY *PFAST_IO_UNLOCK_ALL_BY_KEY; +(DDKAPI *PFAST_IO_UNLOCK_ALL_BY_KEY)( + IN struct _FILE_OBJECT *FileObject, + PVOID ProcessId, + ULONG Key, + OUT PIO_STATUS_BLOCK IoStatus, + IN struct _DEVICE_OBJECT *DeviceObject); typedef BOOLEAN -(NTAPI FAST_IO_DEVICE_CONTROL)( - IN struct _FILE_OBJECT *FileObject, - IN BOOLEAN Wait, - IN PVOID InputBuffer OPTIONAL, - IN ULONG InputBufferLength, - OUT PVOID OutputBuffer OPTIONAL, - IN ULONG OutputBufferLength, - IN ULONG IoControlCode, - OUT PIO_STATUS_BLOCK IoStatus, - IN struct _DEVICE_OBJECT *DeviceObject); -typedef FAST_IO_DEVICE_CONTROL *PFAST_IO_DEVICE_CONTROL; +(DDKAPI *PFAST_IO_DEVICE_CONTROL)( + IN struct _FILE_OBJECT *FileObject, + IN BOOLEAN Wait, + IN PVOID InputBuffer OPTIONAL, + IN ULONG InputBufferLength, + OUT PVOID OutputBuffer OPTIONAL, + IN ULONG OutputBufferLength, + IN ULONG IoControlCode, + OUT PIO_STATUS_BLOCK IoStatus, + IN struct _DEVICE_OBJECT *DeviceObject); typedef VOID -(NTAPI FAST_IO_ACQUIRE_FILE)( - IN struct _FILE_OBJECT *FileObject); -typedef FAST_IO_ACQUIRE_FILE *PFAST_IO_ACQUIRE_FILE; +(DDKAPI *PFAST_IO_ACQUIRE_FILE)( + IN struct _FILE_OBJECT *FileObject); typedef VOID -(NTAPI FAST_IO_RELEASE_FILE)( - IN struct _FILE_OBJECT *FileObject); -typedef FAST_IO_RELEASE_FILE *PFAST_IO_RELEASE_FILE; +(DDKAPI *PFAST_IO_RELEASE_FILE)( + IN struct _FILE_OBJECT *FileObject); typedef VOID -(NTAPI FAST_IO_DETACH_DEVICE)( - IN struct _DEVICE_OBJECT *SourceDevice, - IN struct _DEVICE_OBJECT *TargetDevice); -typedef FAST_IO_DETACH_DEVICE *PFAST_IO_DETACH_DEVICE; +(DDKAPI *PFAST_IO_DETACH_DEVICE)( + IN struct _DEVICE_OBJECT *SourceDevice, + IN struct _DEVICE_OBJECT *TargetDevice); typedef BOOLEAN -(NTAPI FAST_IO_QUERY_NETWORK_OPEN_INFO)( - IN struct _FILE_OBJECT *FileObject, - IN BOOLEAN Wait, - OUT struct _FILE_NETWORK_OPEN_INFORMATION *Buffer, - OUT struct _IO_STATUS_BLOCK *IoStatus, - IN struct _DEVICE_OBJECT *DeviceObject); -typedef FAST_IO_QUERY_NETWORK_OPEN_INFO *PFAST_IO_QUERY_NETWORK_OPEN_INFO; +(DDKAPI *PFAST_IO_QUERY_NETWORK_OPEN_INFO)( + IN struct _FILE_OBJECT *FileObject, + IN BOOLEAN Wait, + OUT struct _FILE_NETWORK_OPEN_INFORMATION *Buffer, + OUT struct _IO_STATUS_BLOCK *IoStatus, + IN struct _DEVICE_OBJECT *DeviceObject); typedef NTSTATUS -(NTAPI FAST_IO_ACQUIRE_FOR_MOD_WRITE)( - IN struct _FILE_OBJECT *FileObject, - IN PLARGE_INTEGER EndingOffset, - OUT struct _ERESOURCE **ResourceToRelease, - IN struct _DEVICE_OBJECT *DeviceObject); -typedef FAST_IO_ACQUIRE_FOR_MOD_WRITE *PFAST_IO_ACQUIRE_FOR_MOD_WRITE; +(DDKAPI *PFAST_IO_ACQUIRE_FOR_MOD_WRITE)( + IN struct _FILE_OBJECT *FileObject, + IN PLARGE_INTEGER EndingOffset, + OUT struct _ERESOURCE **ResourceToRelease, + IN struct _DEVICE_OBJECT *DeviceObject); typedef BOOLEAN -(NTAPI FAST_IO_MDL_READ)( - IN struct _FILE_OBJECT *FileObject, - IN PLARGE_INTEGER FileOffset, - IN ULONG Length, - IN ULONG LockKey, - OUT PMDL *MdlChain, - OUT PIO_STATUS_BLOCK IoStatus, - IN struct _DEVICE_OBJECT *DeviceObject); -typedef FAST_IO_MDL_READ *PFAST_IO_MDL_READ; +(DDKAPI *PFAST_IO_MDL_READ)( + IN struct _FILE_OBJECT *FileObject, + IN PLARGE_INTEGER FileOffset, + IN ULONG Length, + IN ULONG LockKey, + OUT PMDL *MdlChain, + OUT PIO_STATUS_BLOCK IoStatus, + IN struct _DEVICE_OBJECT *DeviceObject); typedef BOOLEAN -(NTAPI FAST_IO_MDL_READ_COMPLETE)( +(DDKAPI *PFAST_IO_MDL_READ_COMPLETE)( IN struct _FILE_OBJECT *FileObject, IN PMDL MdlChain, IN struct _DEVICE_OBJECT *DeviceObject); -typedef FAST_IO_MDL_READ_COMPLETE *PFAST_IO_MDL_READ_COMPLETE; typedef BOOLEAN -(NTAPI FAST_IO_PREPARE_MDL_WRITE)( - IN struct _FILE_OBJECT *FileObject, - IN PLARGE_INTEGER FileOffset, - IN ULONG Length, - IN ULONG LockKey, - OUT PMDL *MdlChain, - OUT PIO_STATUS_BLOCK IoStatus, - IN struct _DEVICE_OBJECT *DeviceObject); -typedef FAST_IO_PREPARE_MDL_WRITE *PFAST_IO_PREPARE_MDL_WRITE; +(DDKAPI *PFAST_IO_PREPARE_MDL_WRITE)( + IN struct _FILE_OBJECT *FileObject, + IN PLARGE_INTEGER FileOffset, + IN ULONG Length, + IN ULONG LockKey, + OUT PMDL *MdlChain, + OUT PIO_STATUS_BLOCK IoStatus, + IN struct _DEVICE_OBJECT *DeviceObject); typedef BOOLEAN -(NTAPI FAST_IO_MDL_WRITE_COMPLETE)( - IN struct _FILE_OBJECT *FileObject, - IN PLARGE_INTEGER FileOffset, - IN PMDL MdlChain, - IN struct _DEVICE_OBJECT *DeviceObject); -typedef FAST_IO_MDL_WRITE_COMPLETE *PFAST_IO_MDL_WRITE_COMPLETE; +(DDKAPI *PFAST_IO_MDL_WRITE_COMPLETE)( + IN struct _FILE_OBJECT *FileObject, + IN PLARGE_INTEGER FileOffset, + IN PMDL MdlChain, + IN struct _DEVICE_OBJECT *DeviceObject); typedef BOOLEAN -(NTAPI FAST_IO_READ_COMPRESSED)( - IN struct _FILE_OBJECT *FileObject, - IN PLARGE_INTEGER FileOffset, - IN ULONG Length, - IN ULONG LockKey, - OUT PVOID Buffer, - OUT PMDL *MdlChain, - OUT PIO_STATUS_BLOCK IoStatus, - OUT struct _COMPRESSED_DATA_INFO *CompressedDataInfo, - IN ULONG CompressedDataInfoLength, - IN struct _DEVICE_OBJECT *DeviceObject); -typedef FAST_IO_READ_COMPRESSED *PFAST_IO_READ_COMPRESSED; +(DDKAPI *PFAST_IO_READ_COMPRESSED)( + IN struct _FILE_OBJECT *FileObject, + IN PLARGE_INTEGER FileOffset, + IN ULONG Length, + IN ULONG LockKey, + OUT PVOID Buffer, + OUT PMDL *MdlChain, + OUT PIO_STATUS_BLOCK IoStatus, + OUT struct _COMPRESSED_DATA_INFO *CompressedDataInfo, + IN ULONG CompressedDataInfoLength, + IN struct _DEVICE_OBJECT *DeviceObject); typedef BOOLEAN -(NTAPI FAST_IO_WRITE_COMPRESSED)( - IN struct _FILE_OBJECT *FileObject, - IN PLARGE_INTEGER FileOffset, - IN ULONG Length, - IN ULONG LockKey, - IN PVOID Buffer, - OUT PMDL *MdlChain, - OUT PIO_STATUS_BLOCK IoStatus, - IN struct _COMPRESSED_DATA_INFO *CompressedDataInfo, - IN ULONG CompressedDataInfoLength, - IN struct _DEVICE_OBJECT *DeviceObject); -typedef FAST_IO_WRITE_COMPRESSED *PFAST_IO_WRITE_COMPRESSED; +(DDKAPI *PFAST_IO_WRITE_COMPRESSED)( + IN struct _FILE_OBJECT *FileObject, + IN PLARGE_INTEGER FileOffset, + IN ULONG Length, + IN ULONG LockKey, + IN PVOID Buffer, + OUT PMDL *MdlChain, + OUT PIO_STATUS_BLOCK IoStatus, + IN struct _COMPRESSED_DATA_INFO *CompressedDataInfo, + IN ULONG CompressedDataInfoLength, + IN struct _DEVICE_OBJECT *DeviceObject); typedef BOOLEAN -(NTAPI FAST_IO_MDL_READ_COMPLETE_COMPRESSED)( - IN struct _FILE_OBJECT *FileObject, - IN PMDL MdlChain, - IN struct _DEVICE_OBJECT *DeviceObject); -typedef FAST_IO_MDL_READ_COMPLETE_COMPRESSED *PFAST_IO_MDL_READ_COMPLETE_COMPRESSED; +(DDKAPI *PFAST_IO_MDL_READ_COMPLETE_COMPRESSED)( + IN struct _FILE_OBJECT *FileObject, + IN PMDL MdlChain, + IN struct _DEVICE_OBJECT *DeviceObject); typedef BOOLEAN -(NTAPI FAST_IO_MDL_WRITE_COMPLETE_COMPRESSED)( - IN struct _FILE_OBJECT *FileObject, - IN PLARGE_INTEGER FileOffset, - IN PMDL MdlChain, - IN struct _DEVICE_OBJECT *DeviceObject); -typedef FAST_IO_MDL_WRITE_COMPLETE_COMPRESSED *PFAST_IO_MDL_WRITE_COMPLETE_COMPRESSED; +(DDKAPI *PFAST_IO_MDL_WRITE_COMPLETE_COMPRESSED)( + IN struct _FILE_OBJECT *FileObject, + IN PLARGE_INTEGER FileOffset, + IN PMDL MdlChain, + IN struct _DEVICE_OBJECT *DeviceObject); typedef BOOLEAN -(NTAPI FAST_IO_QUERY_OPEN)( - IN struct _IRP *Irp, - OUT PFILE_NETWORK_OPEN_INFORMATION NetworkInformation, - IN struct _DEVICE_OBJECT *DeviceObject); -typedef FAST_IO_QUERY_OPEN *PFAST_IO_QUERY_OPEN; +(DDKAPI *PFAST_IO_QUERY_OPEN)( + IN struct _IRP *Irp, + OUT PFILE_NETWORK_OPEN_INFORMATION NetworkInformation, + IN struct _DEVICE_OBJECT *DeviceObject); typedef NTSTATUS -(NTAPI FAST_IO_RELEASE_FOR_MOD_WRITE)( - IN struct _FILE_OBJECT *FileObject, - IN struct _ERESOURCE *ResourceToRelease, - IN struct _DEVICE_OBJECT *DeviceObject); -typedef FAST_IO_RELEASE_FOR_MOD_WRITE *PFAST_IO_RELEASE_FOR_MOD_WRITE; +(DDKAPI *PFAST_IO_RELEASE_FOR_MOD_WRITE)( + IN struct _FILE_OBJECT *FileObject, + IN struct _ERESOURCE *ResourceToRelease, + IN struct _DEVICE_OBJECT *DeviceObject); typedef NTSTATUS -(NTAPI FAST_IO_ACQUIRE_FOR_CCFLUSH)( - IN struct _FILE_OBJECT *FileObject, - IN struct _DEVICE_OBJECT *DeviceObject); -typedef FAST_IO_ACQUIRE_FOR_CCFLUSH *PFAST_IO_ACQUIRE_FOR_CCFLUSH; +(DDKAPI *PFAST_IO_ACQUIRE_FOR_CCFLUSH)( + IN struct _FILE_OBJECT *FileObject, + IN struct _DEVICE_OBJECT *DeviceObject); typedef NTSTATUS -(NTAPI FAST_IO_RELEASE_FOR_CCFLUSH)( - IN struct _FILE_OBJECT *FileObject, - IN struct _DEVICE_OBJECT *DeviceObject); -typedef FAST_IO_RELEASE_FOR_CCFLUSH *PFAST_IO_RELEASE_FOR_CCFLUSH; +(DDKAPI *PFAST_IO_RELEASE_FOR_CCFLUSH) ( + IN struct _FILE_OBJECT *FileObject, + IN struct _DEVICE_OBJECT *DeviceObject); typedef struct _FAST_IO_DISPATCH { - ULONG SizeOfFastIoDispatch; - PFAST_IO_CHECK_IF_POSSIBLE FastIoCheckIfPossible; - PFAST_IO_READ FastIoRead; - PFAST_IO_WRITE FastIoWrite; - PFAST_IO_QUERY_BASIC_INFO FastIoQueryBasicInfo; - PFAST_IO_QUERY_STANDARD_INFO FastIoQueryStandardInfo; - PFAST_IO_LOCK FastIoLock; - PFAST_IO_UNLOCK_SINGLE FastIoUnlockSingle; - PFAST_IO_UNLOCK_ALL FastIoUnlockAll; - PFAST_IO_UNLOCK_ALL_BY_KEY FastIoUnlockAllByKey; - PFAST_IO_DEVICE_CONTROL FastIoDeviceControl; - PFAST_IO_ACQUIRE_FILE AcquireFileForNtCreateSection; - PFAST_IO_RELEASE_FILE ReleaseFileForNtCreateSection; - PFAST_IO_DETACH_DEVICE FastIoDetachDevice; - PFAST_IO_QUERY_NETWORK_OPEN_INFO FastIoQueryNetworkOpenInfo; - PFAST_IO_ACQUIRE_FOR_MOD_WRITE AcquireForModWrite; - PFAST_IO_MDL_READ MdlRead; - PFAST_IO_MDL_READ_COMPLETE MdlReadComplete; - PFAST_IO_PREPARE_MDL_WRITE PrepareMdlWrite; - PFAST_IO_MDL_WRITE_COMPLETE MdlWriteComplete; - PFAST_IO_READ_COMPRESSED FastIoReadCompressed; - PFAST_IO_WRITE_COMPRESSED FastIoWriteCompressed; - PFAST_IO_MDL_READ_COMPLETE_COMPRESSED MdlReadCompleteCompressed; - PFAST_IO_MDL_WRITE_COMPLETE_COMPRESSED MdlWriteCompleteCompressed; - PFAST_IO_QUERY_OPEN FastIoQueryOpen; - PFAST_IO_RELEASE_FOR_MOD_WRITE ReleaseForModWrite; - PFAST_IO_ACQUIRE_FOR_CCFLUSH AcquireForCcFlush; - PFAST_IO_RELEASE_FOR_CCFLUSH ReleaseForCcFlush; + ULONG SizeOfFastIoDispatch; + PFAST_IO_CHECK_IF_POSSIBLE FastIoCheckIfPossible; + PFAST_IO_READ FastIoRead; + PFAST_IO_WRITE FastIoWrite; + PFAST_IO_QUERY_BASIC_INFO FastIoQueryBasicInfo; + PFAST_IO_QUERY_STANDARD_INFO FastIoQueryStandardInfo; + PFAST_IO_LOCK FastIoLock; + PFAST_IO_UNLOCK_SINGLE FastIoUnlockSingle; + PFAST_IO_UNLOCK_ALL FastIoUnlockAll; + PFAST_IO_UNLOCK_ALL_BY_KEY FastIoUnlockAllByKey; + PFAST_IO_DEVICE_CONTROL FastIoDeviceControl; + PFAST_IO_ACQUIRE_FILE AcquireFileForNtCreateSection; + PFAST_IO_RELEASE_FILE ReleaseFileForNtCreateSection; + PFAST_IO_DETACH_DEVICE FastIoDetachDevice; + PFAST_IO_QUERY_NETWORK_OPEN_INFO FastIoQueryNetworkOpenInfo; + PFAST_IO_ACQUIRE_FOR_MOD_WRITE AcquireForModWrite; + PFAST_IO_MDL_READ MdlRead; + PFAST_IO_MDL_READ_COMPLETE MdlReadComplete; + PFAST_IO_PREPARE_MDL_WRITE PrepareMdlWrite; + PFAST_IO_MDL_WRITE_COMPLETE MdlWriteComplete; + PFAST_IO_READ_COMPRESSED FastIoReadCompressed; + PFAST_IO_WRITE_COMPRESSED FastIoWriteCompressed; + PFAST_IO_MDL_READ_COMPLETE_COMPRESSED MdlReadCompleteCompressed; + PFAST_IO_MDL_WRITE_COMPLETE_COMPRESSED MdlWriteCompleteCompressed; + PFAST_IO_QUERY_OPEN FastIoQueryOpen; + PFAST_IO_RELEASE_FOR_MOD_WRITE ReleaseForModWrite; + PFAST_IO_ACQUIRE_FOR_CCFLUSH AcquireForCcFlush; + PFAST_IO_RELEASE_FOR_CCFLUSH ReleaseForCcFlush; } FAST_IO_DISPATCH, *PFAST_IO_DISPATCH; typedef struct _SECTION_OBJECT_POINTERS { - PVOID DataSectionObject; - PVOID SharedCacheMap; - PVOID ImageSectionObject; + PVOID DataSectionObject; + PVOID SharedCacheMap; + PVOID ImageSectionObject; } SECTION_OBJECT_POINTERS, *PSECTION_OBJECT_POINTERS; typedef struct _IO_COMPLETION_CONTEXT { - PVOID Port; - PVOID Key; + PVOID Port; + PVOID Key; } IO_COMPLETION_CONTEXT, *PIO_COMPLETION_CONTEXT; /* FILE_OBJECT.Flags */ @@ -5406,7 +4175,6 @@ typedef struct _IO_COMPLETION_CONTEXT { #define FO_SKIP_COMPLETION_PORT 0x02000000 #define FO_SKIP_SET_EVENT 0x04000000 #define FO_SKIP_SET_FAST_IO 0x08000000 -#define FO_FLAGS_VALID_ONLY_DURING_CREATE FO_DISALLOW_EXCLUSIVE /* VPB.Flags */ #define VPB_MOUNTED 0x0001 @@ -5421,18 +4189,12 @@ typedef struct _IO_COMPLETION_CONTEXT { #define SL_FORCE_ACCESS_CHECK 0x01 #define SL_OPEN_PAGING_FILE 0x02 #define SL_OPEN_TARGET_DIRECTORY 0x04 -#define SL_STOP_ON_SYMLINK 0x08 #define SL_CASE_SENSITIVE 0x80 #define SL_KEY_SPECIFIED 0x01 #define SL_OVERRIDE_VERIFY_VOLUME 0x02 #define SL_WRITE_THROUGH 0x04 #define SL_FT_SEQUENTIAL_WRITE 0x08 -#define SL_FORCE_DIRECT_WRITE 0x10 -#define SL_REALTIME_STREAM 0x20 - -#define SL_READ_ACCESS_GRANTED 0x01 -#define SL_WRITE_ACCESS_GRANTED 0x04 #define SL_FAIL_IMMEDIATELY 0x01 #define SL_EXCLUSIVE_LOCK 0x02 @@ -5450,8 +4212,6 @@ typedef struct _IO_COMPLETION_CONTEXT { #define DEVICE_TYPE_FROM_CTL_CODE(ctl) (((ULONG) (ctl & 0xffff0000)) >> 16) -#define METHOD_FROM_CTL_CODE(ctrlCode) ((ULONG)(ctrlCode & 3)) - #define IRP_NOCACHE 0x00000001 #define IRP_PAGING_IO 0x00000002 #define IRP_MOUNT_COMPLETION 0x00000002 @@ -5537,9 +4297,6 @@ typedef struct _IO_COMPLETION_CONTEXT { #define IRP_MN_QUERY_BUS_INFORMATION 0x15 #define IRP_MN_DEVICE_USAGE_NOTIFICATION 0x16 #define IRP_MN_SURPRISE_REMOVAL 0x17 -#if (NTDDI_VERSION >= NTDDI_WIN7) -#define IRP_MN_DEVICE_ENUMERATED 0x19 -#endif #define IRP_MN_WAIT_WAKE 0x00 #define IRP_MN_POWER_SEQUENCE 0x01 @@ -5559,62 +4316,63 @@ typedef struct _IO_COMPLETION_CONTEXT { #define IRP_MN_REGINFO_EX 0x0b -typedef struct _FILE_OBJECT { - CSHORT Type; - CSHORT Size; - PDEVICE_OBJECT DeviceObject; - PVPB Vpb; - PVOID FsContext; - PVOID FsContext2; - PSECTION_OBJECT_POINTERS SectionObjectPointer; - PVOID PrivateCacheMap; - NTSTATUS FinalStatus; - struct _FILE_OBJECT *RelatedFileObject; - BOOLEAN LockOperation; - BOOLEAN DeletePending; - BOOLEAN ReadAccess; - BOOLEAN WriteAccess; - BOOLEAN DeleteAccess; - BOOLEAN SharedRead; - BOOLEAN SharedWrite; - BOOLEAN SharedDelete; - ULONG Flags; - UNICODE_STRING FileName; - LARGE_INTEGER CurrentByteOffset; - volatile ULONG Waiters; - volatile ULONG Busy; - PVOID LastLock; - KEVENT Lock; - KEVENT Event; - volatile PIO_COMPLETION_CONTEXT CompletionContext; - KSPIN_LOCK IrpListLock; - LIST_ENTRY IrpList; - volatile PVOID FileObjectExtension; +typedef struct _FILE_OBJECT +{ + CSHORT Type; + CSHORT Size; + PDEVICE_OBJECT DeviceObject; + PVPB Vpb; + PVOID FsContext; + PVOID FsContext2; + PSECTION_OBJECT_POINTERS SectionObjectPointer; + PVOID PrivateCacheMap; + NTSTATUS FinalStatus; + struct _FILE_OBJECT *RelatedFileObject; + BOOLEAN LockOperation; + BOOLEAN DeletePending; + BOOLEAN ReadAccess; + BOOLEAN WriteAccess; + BOOLEAN DeleteAccess; + BOOLEAN SharedRead; + BOOLEAN SharedWrite; + BOOLEAN SharedDelete; + ULONG Flags; + UNICODE_STRING FileName; + LARGE_INTEGER CurrentByteOffset; + volatile ULONG Waiters; + volatile ULONG Busy; + PVOID LastLock; + KEVENT Lock; + KEVENT Event; + volatile PIO_COMPLETION_CONTEXT CompletionContext; + KSPIN_LOCK IrpListLock; + LIST_ENTRY IrpList; + volatile PVOID FileObjectExtension; } FILE_OBJECT, *PFILE_OBJECT; typedef struct _IO_ERROR_LOG_PACKET { - UCHAR MajorFunctionCode; - UCHAR RetryCount; - USHORT DumpDataSize; - USHORT NumberOfStrings; - USHORT StringOffset; - USHORT EventCategory; - NTSTATUS ErrorCode; - ULONG UniqueErrorValue; - NTSTATUS FinalStatus; - ULONG SequenceNumber; - ULONG IoControlCode; - LARGE_INTEGER DeviceOffset; - ULONG DumpData[1]; + UCHAR MajorFunctionCode; + UCHAR RetryCount; + USHORT DumpDataSize; + USHORT NumberOfStrings; + USHORT StringOffset; + USHORT EventCategory; + NTSTATUS ErrorCode; + ULONG UniqueErrorValue; + NTSTATUS FinalStatus; + ULONG SequenceNumber; + ULONG IoControlCode; + LARGE_INTEGER DeviceOffset; + ULONG DumpData[1]; } IO_ERROR_LOG_PACKET, *PIO_ERROR_LOG_PACKET; typedef struct _IO_ERROR_LOG_MESSAGE { - USHORT Type; - USHORT Size; - USHORT DriverNameLength; - LARGE_INTEGER TimeStamp; - ULONG DriverNameOffset; - IO_ERROR_LOG_PACKET EntryData; + USHORT Type; + USHORT Size; + USHORT DriverNameLength; + LARGE_INTEGER TimeStamp; + ULONG DriverNameOffset; + IO_ERROR_LOG_PACKET EntryData; } IO_ERROR_LOG_MESSAGE, *PIO_ERROR_LOG_MESSAGE; #define ERROR_LOG_LIMIT_SIZE 240 @@ -5630,12 +4388,6 @@ typedef struct _IO_ERROR_LOG_MESSAGE { #define ERROR_LOG_MAXIMUM_SIZE (IO_ERROR_LOG_MESSAGE_LENGTH - \ IO_ERROR_LOG_MESSAGE_HEADER_LENGTH) -#ifdef _WIN64 -#define PORT_MAXIMUM_MESSAGE_LENGTH 512 -#else -#define PORT_MAXIMUM_MESSAGE_LENGTH 256 -#endif - typedef enum _DMA_WIDTH { Width8Bits, Width16Bits, @@ -5659,22 +4411,22 @@ typedef enum _DMA_SPEED { #define DEVICE_DESCRIPTION_VERSION2 0x0002 typedef struct _DEVICE_DESCRIPTION { - ULONG Version; - BOOLEAN Master; - BOOLEAN ScatterGather; - BOOLEAN DemandMode; - BOOLEAN AutoInitialize; - BOOLEAN Dma32BitAddresses; - BOOLEAN IgnoreCount; - BOOLEAN Reserved1; - BOOLEAN Dma64BitAddresses; - ULONG BusNumber; - ULONG DmaChannel; - INTERFACE_TYPE InterfaceType; - DMA_WIDTH DmaWidth; - DMA_SPEED DmaSpeed; - ULONG MaximumLength; - ULONG DmaPort; + ULONG Version; + BOOLEAN Master; + BOOLEAN ScatterGather; + BOOLEAN DemandMode; + BOOLEAN AutoInitialize; + BOOLEAN Dma32BitAddresses; + BOOLEAN IgnoreCount; + BOOLEAN Reserved1; + BOOLEAN Dma64BitAddresses; + ULONG BusNumber; + ULONG DmaChannel; + INTERFACE_TYPE InterfaceType; + DMA_WIDTH DmaWidth; + DMA_SPEED DmaSpeed; + ULONG MaximumLength; + ULONG DmaPort; } DEVICE_DESCRIPTION, *PDEVICE_DESCRIPTION; typedef enum _DEVICE_RELATION_TYPE { @@ -5688,20 +4440,21 @@ typedef enum _DEVICE_RELATION_TYPE { } DEVICE_RELATION_TYPE, *PDEVICE_RELATION_TYPE; typedef struct _DEVICE_RELATIONS { - ULONG Count; + ULONG Count; PDEVICE_OBJECT Objects[1]; } DEVICE_RELATIONS, *PDEVICE_RELATIONS; -typedef struct _DEVOBJ_EXTENSION { - CSHORT Type; - USHORT Size; - PDEVICE_OBJECT DeviceObject; +typedef struct _DEVOBJ_EXTENSION +{ + CSHORT Type; + USHORT Size; + PDEVICE_OBJECT DeviceObject; } DEVOBJ_EXTENSION, *PDEVOBJ_EXTENSION; typedef struct _SCATTER_GATHER_ELEMENT { - PHYSICAL_ADDRESS Address; - ULONG Length; - ULONG_PTR Reserved; + PHYSICAL_ADDRESS Address; + ULONG Length; + ULONG_PTR Reserved; } SCATTER_GATHER_ELEMENT, *PSCATTER_GATHER_ELEMENT; #if defined(_MSC_EXTENSIONS) @@ -5711,9 +4464,9 @@ typedef struct _SCATTER_GATHER_ELEMENT { #endif #pragma warning(disable:4200) typedef struct _SCATTER_GATHER_LIST { - ULONG NumberOfElements; - ULONG_PTR Reserved; - SCATTER_GATHER_ELEMENT Elements[1]; + ULONG NumberOfElements; + ULONG_PTR Reserved; + SCATTER_GATHER_ELEMENT Elements[1]; } SCATTER_GATHER_LIST, *PSCATTER_GATHER_LIST; #if _MSC_VER >= 1200 @@ -5730,16 +4483,16 @@ typedef struct _SCATTER_GATHER_LIST SCATTER_GATHER_LIST, *PSCATTER_GATHER_LIST; #endif typedef NTSTATUS -(NTAPI DRIVER_ADD_DEVICE)( - IN struct _DRIVER_OBJECT *DriverObject, - IN struct _DEVICE_OBJECT *PhysicalDeviceObject); +(DDKAPI DRIVER_ADD_DEVICE)( + IN struct _DRIVER_OBJECT *DriverObject, + IN struct _DEVICE_OBJECT *PhysicalDeviceObject); typedef DRIVER_ADD_DEVICE *PDRIVER_ADD_DEVICE; typedef struct _DRIVER_EXTENSION { - struct _DRIVER_OBJECT *DriverObject; - PDRIVER_ADD_DEVICE AddDevice; - ULONG Count; - UNICODE_STRING ServiceKeyName; + struct _DRIVER_OBJECT *DriverObject; + PDRIVER_ADD_DEVICE AddDevice; + ULONG Count; + UNICODE_STRING ServiceKeyName; } DRIVER_EXTENSION, *PDRIVER_EXTENSION; #define DRVO_UNLOAD_INVOKED 0x00000001 @@ -5747,319 +4500,320 @@ typedef struct _DRIVER_EXTENSION { #define DRVO_BUILTIN_DRIVER 0x00000004 typedef NTSTATUS -(NTAPI DRIVER_INITIALIZE)( - IN struct _DRIVER_OBJECT *DriverObject, - IN PUNICODE_STRING RegistryPath); +(DDKAPI DRIVER_INITIALIZE)( + IN struct _DRIVER_OBJECT *DriverObject, + IN PUNICODE_STRING RegistryPath); typedef DRIVER_INITIALIZE *PDRIVER_INITIALIZE; typedef VOID -(NTAPI DRIVER_STARTIO)( - IN struct _DEVICE_OBJECT *DeviceObject, - IN struct _IRP *Irp); +(DDKAPI DRIVER_STARTIO)( + IN struct _DEVICE_OBJECT *DeviceObject, + IN struct _IRP *Irp); typedef DRIVER_STARTIO *PDRIVER_STARTIO; typedef VOID -(NTAPI DRIVER_UNLOAD)( - IN struct _DRIVER_OBJECT *DriverObject); +(DDKAPI DRIVER_UNLOAD)( + IN struct _DRIVER_OBJECT *DriverObject); typedef DRIVER_UNLOAD *PDRIVER_UNLOAD; typedef NTSTATUS -(NTAPI DRIVER_DISPATCH)( - IN struct _DEVICE_OBJECT *DeviceObject, - IN struct _IRP *Irp); +(DDKAPI DRIVER_DISPATCH)( + IN struct _DEVICE_OBJECT *DeviceObject, + IN struct _IRP *Irp); typedef DRIVER_DISPATCH *PDRIVER_DISPATCH; typedef struct _DRIVER_OBJECT { - CSHORT Type; - CSHORT Size; - PDEVICE_OBJECT DeviceObject; - ULONG Flags; - PVOID DriverStart; - ULONG DriverSize; - PVOID DriverSection; - PDRIVER_EXTENSION DriverExtension; - UNICODE_STRING DriverName; - PUNICODE_STRING HardwareDatabase; + CSHORT Type; + CSHORT Size; + PDEVICE_OBJECT DeviceObject; + ULONG Flags; + PVOID DriverStart; + ULONG DriverSize; + PVOID DriverSection; + PDRIVER_EXTENSION DriverExtension; + UNICODE_STRING DriverName; + PUNICODE_STRING HardwareDatabase; struct _FAST_IO_DISPATCH *FastIoDispatch; - PDRIVER_INITIALIZE DriverInit; - PDRIVER_STARTIO DriverStartIo; - PDRIVER_UNLOAD DriverUnload; - PDRIVER_DISPATCH MajorFunction[IRP_MJ_MAXIMUM_FUNCTION + 1]; -} DRIVER_OBJECT, *PDRIVER_OBJECT; + PDRIVER_INITIALIZE DriverInit; + PDRIVER_STARTIO DriverStartIo; + PDRIVER_UNLOAD DriverUnload; + PDRIVER_DISPATCH MajorFunction[IRP_MJ_MAXIMUM_FUNCTION + 1]; +} DRIVER_OBJECT; +typedef struct _DRIVER_OBJECT *PDRIVER_OBJECT; typedef struct _DMA_ADAPTER { - USHORT Version; - USHORT Size; - struct _DMA_OPERATIONS* DmaOperations; + USHORT Version; + USHORT Size; + struct _DMA_OPERATIONS* DmaOperations; } DMA_ADAPTER, *PDMA_ADAPTER; typedef VOID -(NTAPI *PPUT_DMA_ADAPTER)( - IN PDMA_ADAPTER DmaAdapter); +(DDKAPI *PPUT_DMA_ADAPTER)( + IN PDMA_ADAPTER DmaAdapter); typedef PVOID -(NTAPI *PALLOCATE_COMMON_BUFFER)( - IN PDMA_ADAPTER DmaAdapter, - IN ULONG Length, - OUT PPHYSICAL_ADDRESS LogicalAddress, - IN BOOLEAN CacheEnabled); +(DDKAPI *PALLOCATE_COMMON_BUFFER)( + IN PDMA_ADAPTER DmaAdapter, + IN ULONG Length, + OUT PPHYSICAL_ADDRESS LogicalAddress, + IN BOOLEAN CacheEnabled); typedef VOID -(NTAPI *PFREE_COMMON_BUFFER)( - IN PDMA_ADAPTER DmaAdapter, - IN ULONG Length, - IN PHYSICAL_ADDRESS LogicalAddress, - IN PVOID VirtualAddress, - IN BOOLEAN CacheEnabled); +(DDKAPI *PFREE_COMMON_BUFFER)( + IN PDMA_ADAPTER DmaAdapter, + IN ULONG Length, + IN PHYSICAL_ADDRESS LogicalAddress, + IN PVOID VirtualAddress, + IN BOOLEAN CacheEnabled); typedef NTSTATUS -(NTAPI *PALLOCATE_ADAPTER_CHANNEL)( - IN PDMA_ADAPTER DmaAdapter, - IN PDEVICE_OBJECT DeviceObject, - IN ULONG NumberOfMapRegisters, - IN PDRIVER_CONTROL ExecutionRoutine, - IN PVOID Context); +(DDKAPI *PALLOCATE_ADAPTER_CHANNEL)( + IN PDMA_ADAPTER DmaAdapter, + IN PDEVICE_OBJECT DeviceObject, + IN ULONG NumberOfMapRegisters, + IN PDRIVER_CONTROL ExecutionRoutine, + IN PVOID Context); typedef BOOLEAN -(NTAPI *PFLUSH_ADAPTER_BUFFERS)( - IN PDMA_ADAPTER DmaAdapter, - IN PMDL Mdl, - IN PVOID MapRegisterBase, - IN PVOID CurrentVa, - IN ULONG Length, - IN BOOLEAN WriteToDevice); +(DDKAPI *PFLUSH_ADAPTER_BUFFERS)( + IN PDMA_ADAPTER DmaAdapter, + IN PMDL Mdl, + IN PVOID MapRegisterBase, + IN PVOID CurrentVa, + IN ULONG Length, + IN BOOLEAN WriteToDevice); typedef VOID -(NTAPI *PFREE_ADAPTER_CHANNEL)( - IN PDMA_ADAPTER DmaAdapter); +(DDKAPI *PFREE_ADAPTER_CHANNEL)( + IN PDMA_ADAPTER DmaAdapter); typedef VOID -(NTAPI *PFREE_MAP_REGISTERS)( - IN PDMA_ADAPTER DmaAdapter, - PVOID MapRegisterBase, - ULONG NumberOfMapRegisters); +(DDKAPI *PFREE_MAP_REGISTERS)( + IN PDMA_ADAPTER DmaAdapter, + PVOID MapRegisterBase, + ULONG NumberOfMapRegisters); typedef PHYSICAL_ADDRESS -(NTAPI *PMAP_TRANSFER)( - IN PDMA_ADAPTER DmaAdapter, - IN PMDL Mdl, - IN PVOID MapRegisterBase, - IN PVOID CurrentVa, - IN OUT PULONG Length, - IN BOOLEAN WriteToDevice); +(DDKAPI *PMAP_TRANSFER)( + IN PDMA_ADAPTER DmaAdapter, + IN PMDL Mdl, + IN PVOID MapRegisterBase, + IN PVOID CurrentVa, + IN OUT PULONG Length, + IN BOOLEAN WriteToDevice); typedef ULONG -(NTAPI *PGET_DMA_ALIGNMENT)( - IN PDMA_ADAPTER DmaAdapter); +(DDKAPI *PGET_DMA_ALIGNMENT)( + IN PDMA_ADAPTER DmaAdapter); typedef ULONG -(NTAPI *PREAD_DMA_COUNTER)( - IN PDMA_ADAPTER DmaAdapter); +(DDKAPI *PREAD_DMA_COUNTER)( + IN PDMA_ADAPTER DmaAdapter); typedef VOID -(NTAPI DRIVER_LIST_CONTROL)( - IN struct _DEVICE_OBJECT *DeviceObject, - IN struct _IRP *Irp, - IN struct _SCATTER_GATHER_LIST *ScatterGather, - IN PVOID Context); -typedef DRIVER_LIST_CONTROL *PDRIVER_LIST_CONTROL; +(DDKAPI *PDRIVER_LIST_CONTROL)( + IN struct _DEVICE_OBJECT *DeviceObject, + IN struct _IRP *Irp, + IN struct _SCATTER_GATHER_LIST *ScatterGather, + IN PVOID Context); typedef NTSTATUS -(NTAPI *PGET_SCATTER_GATHER_LIST)( - IN PDMA_ADAPTER DmaAdapter, - IN PDEVICE_OBJECT DeviceObject, - IN PMDL Mdl, - IN PVOID CurrentVa, - IN ULONG Length, - IN PDRIVER_LIST_CONTROL ExecutionRoutine, - IN PVOID Context, - IN BOOLEAN WriteToDevice); +(DDKAPI *PGET_SCATTER_GATHER_LIST)( + IN PDMA_ADAPTER DmaAdapter, + IN PDEVICE_OBJECT DeviceObject, + IN PMDL Mdl, + IN PVOID CurrentVa, + IN ULONG Length, + IN PDRIVER_LIST_CONTROL ExecutionRoutine, + IN PVOID Context, + IN BOOLEAN WriteToDevice); typedef VOID -(NTAPI *PPUT_SCATTER_GATHER_LIST)( - IN PDMA_ADAPTER DmaAdapter, - IN PSCATTER_GATHER_LIST ScatterGather, - IN BOOLEAN WriteToDevice); +(DDKAPI *PPUT_SCATTER_GATHER_LIST)( + IN PDMA_ADAPTER DmaAdapter, + IN PSCATTER_GATHER_LIST ScatterGather, + IN BOOLEAN WriteToDevice); typedef NTSTATUS -(NTAPI *PCALCULATE_SCATTER_GATHER_LIST_SIZE)( - IN PDMA_ADAPTER DmaAdapter, - IN PMDL Mdl OPTIONAL, - IN PVOID CurrentVa, - IN ULONG Length, - OUT PULONG ScatterGatherListSize, - OUT PULONG pNumberOfMapRegisters OPTIONAL); +(DDKAPI *PCALCULATE_SCATTER_GATHER_LIST_SIZE)( + IN PDMA_ADAPTER DmaAdapter, + IN PMDL Mdl OPTIONAL, + IN PVOID CurrentVa, + IN ULONG Length, + OUT PULONG ScatterGatherListSize, + OUT PULONG pNumberOfMapRegisters OPTIONAL); typedef NTSTATUS -(NTAPI *PBUILD_SCATTER_GATHER_LIST)( - IN PDMA_ADAPTER DmaAdapter, - IN PDEVICE_OBJECT DeviceObject, - IN PMDL Mdl, - IN PVOID CurrentVa, - IN ULONG Length, - IN PDRIVER_LIST_CONTROL ExecutionRoutine, - IN PVOID Context, - IN BOOLEAN WriteToDevice, - IN PVOID ScatterGatherBuffer, - IN ULONG ScatterGatherLength); +(DDKAPI *PBUILD_SCATTER_GATHER_LIST)( + IN PDMA_ADAPTER DmaAdapter, + IN PDEVICE_OBJECT DeviceObject, + IN PMDL Mdl, + IN PVOID CurrentVa, + IN ULONG Length, + IN PDRIVER_LIST_CONTROL ExecutionRoutine, + IN PVOID Context, + IN BOOLEAN WriteToDevice, + IN PVOID ScatterGatherBuffer, + IN ULONG ScatterGatherLength); typedef NTSTATUS -(NTAPI *PBUILD_MDL_FROM_SCATTER_GATHER_LIST)( - IN PDMA_ADAPTER DmaAdapter, - IN PSCATTER_GATHER_LIST ScatterGather, - IN PMDL OriginalMdl, - OUT PMDL *TargetMdl); +(DDKAPI *PBUILD_MDL_FROM_SCATTER_GATHER_LIST)( + IN PDMA_ADAPTER DmaAdapter, + IN PSCATTER_GATHER_LIST ScatterGather, + IN PMDL OriginalMdl, + OUT PMDL *TargetMdl); typedef struct _DMA_OPERATIONS { - ULONG Size; - PPUT_DMA_ADAPTER PutDmaAdapter; - PALLOCATE_COMMON_BUFFER AllocateCommonBuffer; - PFREE_COMMON_BUFFER FreeCommonBuffer; - PALLOCATE_ADAPTER_CHANNEL AllocateAdapterChannel; - PFLUSH_ADAPTER_BUFFERS FlushAdapterBuffers; - PFREE_ADAPTER_CHANNEL FreeAdapterChannel; - PFREE_MAP_REGISTERS FreeMapRegisters; - PMAP_TRANSFER MapTransfer; - PGET_DMA_ALIGNMENT GetDmaAlignment; - PREAD_DMA_COUNTER ReadDmaCounter; - PGET_SCATTER_GATHER_LIST GetScatterGatherList; - PPUT_SCATTER_GATHER_LIST PutScatterGatherList; - PCALCULATE_SCATTER_GATHER_LIST_SIZE CalculateScatterGatherList; - PBUILD_SCATTER_GATHER_LIST BuildScatterGatherList; - PBUILD_MDL_FROM_SCATTER_GATHER_LIST BuildMdlFromScatterGatherList; + ULONG Size; + PPUT_DMA_ADAPTER PutDmaAdapter; + PALLOCATE_COMMON_BUFFER AllocateCommonBuffer; + PFREE_COMMON_BUFFER FreeCommonBuffer; + PALLOCATE_ADAPTER_CHANNEL AllocateAdapterChannel; + PFLUSH_ADAPTER_BUFFERS FlushAdapterBuffers; + PFREE_ADAPTER_CHANNEL FreeAdapterChannel; + PFREE_MAP_REGISTERS FreeMapRegisters; + PMAP_TRANSFER MapTransfer; + PGET_DMA_ALIGNMENT GetDmaAlignment; + PREAD_DMA_COUNTER ReadDmaCounter; + PGET_SCATTER_GATHER_LIST GetScatterGatherList; + PPUT_SCATTER_GATHER_LIST PutScatterGatherList; + PCALCULATE_SCATTER_GATHER_LIST_SIZE CalculateScatterGatherList; + PBUILD_SCATTER_GATHER_LIST BuildScatterGatherList; + PBUILD_MDL_FROM_SCATTER_GATHER_LIST BuildMdlFromScatterGatherList; } DMA_OPERATIONS, *PDMA_OPERATIONS; typedef struct _IO_RESOURCE_DESCRIPTOR { - UCHAR Option; - UCHAR Type; - UCHAR ShareDisposition; - UCHAR Spare1; - USHORT Flags; - USHORT Spare2; + UCHAR Option; + UCHAR Type; + UCHAR ShareDisposition; + UCHAR Spare1; + USHORT Flags; + USHORT Spare2; union { struct { - ULONG Length; - ULONG Alignment; - PHYSICAL_ADDRESS MinimumAddress; - PHYSICAL_ADDRESS MaximumAddress; + ULONG Length; + ULONG Alignment; + PHYSICAL_ADDRESS MinimumAddress; + PHYSICAL_ADDRESS MaximumAddress; } Port; struct { - ULONG Length; - ULONG Alignment; - PHYSICAL_ADDRESS MinimumAddress; - PHYSICAL_ADDRESS MaximumAddress; + ULONG Length; + ULONG Alignment; + PHYSICAL_ADDRESS MinimumAddress; + PHYSICAL_ADDRESS MaximumAddress; } Memory; struct { - ULONG MinimumVector; - ULONG MaximumVector; + ULONG MinimumVector; + ULONG MaximumVector; } Interrupt; struct { - ULONG MinimumChannel; - ULONG MaximumChannel; + ULONG MinimumChannel; + ULONG MaximumChannel; } Dma; struct { - ULONG Length; - ULONG Alignment; - PHYSICAL_ADDRESS MinimumAddress; - PHYSICAL_ADDRESS MaximumAddress; + ULONG Length; + ULONG Alignment; + PHYSICAL_ADDRESS MinimumAddress; + PHYSICAL_ADDRESS MaximumAddress; } Generic; struct { - ULONG Data[3]; + ULONG Data[3]; } DevicePrivate; struct { - ULONG Length; - ULONG MinBusNumber; - ULONG MaxBusNumber; - ULONG Reserved; + ULONG Length; + ULONG MinBusNumber; + ULONG MaxBusNumber; + ULONG Reserved; } BusNumber; struct { - ULONG Priority; - ULONG Reserved1; - ULONG Reserved2; + ULONG Priority; + ULONG Reserved1; + ULONG Reserved2; } ConfigData; } u; } IO_RESOURCE_DESCRIPTOR, *PIO_RESOURCE_DESCRIPTOR; typedef struct _IO_RESOURCE_LIST { - USHORT Version; - USHORT Revision; - ULONG Count; - IO_RESOURCE_DESCRIPTOR Descriptors[1]; + USHORT Version; + USHORT Revision; + ULONG Count; + IO_RESOURCE_DESCRIPTOR Descriptors[1]; } IO_RESOURCE_LIST, *PIO_RESOURCE_LIST; typedef struct _IO_RESOURCE_REQUIREMENTS_LIST { - ULONG ListSize; - INTERFACE_TYPE InterfaceType; - ULONG BusNumber; - ULONG SlotNumber; - ULONG Reserved[3]; - ULONG AlternativeLists; - IO_RESOURCE_LIST List[1]; + ULONG ListSize; + INTERFACE_TYPE InterfaceType; + ULONG BusNumber; + ULONG SlotNumber; + ULONG Reserved[3]; + ULONG AlternativeLists; + IO_RESOURCE_LIST List[1]; } IO_RESOURCE_REQUIREMENTS_LIST, *PIO_RESOURCE_REQUIREMENTS_LIST; typedef VOID -(NTAPI DRIVER_CANCEL)( - IN struct _DEVICE_OBJECT *DeviceObject, - IN struct _IRP *Irp); +(DDKAPI DRIVER_CANCEL)( + IN struct _DEVICE_OBJECT *DeviceObject, + IN struct _IRP *Irp); typedef DRIVER_CANCEL *PDRIVER_CANCEL; typedef struct _IRP { - CSHORT Type; - USHORT Size; - struct _MDL *MdlAddress; - ULONG Flags; + CSHORT Type; + USHORT Size; + struct _MDL *MdlAddress; + ULONG Flags; union { - struct _IRP *MasterIrp; - volatile LONG IrpCount; - PVOID SystemBuffer; + struct _IRP *MasterIrp; + volatile LONG IrpCount; + PVOID SystemBuffer; } AssociatedIrp; - LIST_ENTRY ThreadListEntry; - IO_STATUS_BLOCK IoStatus; - KPROCESSOR_MODE RequestorMode; - BOOLEAN PendingReturned; - CHAR StackCount; - CHAR CurrentLocation; - BOOLEAN Cancel; - KIRQL CancelIrql; - CCHAR ApcEnvironment; - UCHAR AllocationFlags; - PIO_STATUS_BLOCK UserIosb; - PKEVENT UserEvent; + LIST_ENTRY ThreadListEntry; + IO_STATUS_BLOCK IoStatus; + KPROCESSOR_MODE RequestorMode; + BOOLEAN PendingReturned; + CHAR StackCount; + CHAR CurrentLocation; + BOOLEAN Cancel; + KIRQL CancelIrql; + CCHAR ApcEnvironment; + UCHAR AllocationFlags; + PIO_STATUS_BLOCK UserIosb; + PKEVENT UserEvent; union { struct { - _ANONYMOUS_UNION union { - PIO_APC_ROUTINE UserApcRoutine; + _ANONYMOUS_UNION union { + PIO_APC_ROUTINE UserApcRoutine; PVOID IssuingProcess; } DUMMYUNIONNAME; - PVOID UserApcContext; + PVOID UserApcContext; } AsynchronousParameters; - LARGE_INTEGER AllocationSize; + LARGE_INTEGER AllocationSize; } Overlay; - volatile PDRIVER_CANCEL CancelRoutine; - PVOID UserBuffer; + volatile PDRIVER_CANCEL CancelRoutine; + PVOID UserBuffer; union { struct { _ANONYMOUS_UNION union { - KDEVICE_QUEUE_ENTRY DeviceQueueEntry; + KDEVICE_QUEUE_ENTRY DeviceQueueEntry; _ANONYMOUS_STRUCT struct { - PVOID DriverContext[4]; + PVOID DriverContext[4]; } DUMMYSTRUCTNAME; } DUMMYUNIONNAME; - PETHREAD Thread; - PCHAR AuxiliaryBuffer; + PETHREAD Thread; + PCHAR AuxiliaryBuffer; _ANONYMOUS_STRUCT struct { - LIST_ENTRY ListEntry; + LIST_ENTRY ListEntry; _ANONYMOUS_UNION union { - struct _IO_STACK_LOCATION *CurrentStackLocation; - ULONG PacketType; + struct _IO_STACK_LOCATION *CurrentStackLocation; + ULONG PacketType; } DUMMYUNIONNAME; } DUMMYSTRUCTNAME; - struct _FILE_OBJECT *OriginalFileObject; + struct _FILE_OBJECT *OriginalFileObject; } Overlay; - KAPC Apc; - PVOID CompletionKey; + KAPC Apc; + PVOID CompletionKey; } Tail; -} IRP, *PIRP; +} IRP; +typedef struct _IRP *PIRP; typedef enum _IO_PAGING_PRIORITY { IoPagingPriorityInvalid, @@ -6070,96 +4824,93 @@ typedef enum _IO_PAGING_PRIORITY { } IO_PAGING_PRIORITY; typedef NTSTATUS -(NTAPI IO_COMPLETION_ROUTINE)( - IN struct _DEVICE_OBJECT *DeviceObject, - IN struct _IRP *Irp, - IN PVOID Context); +(DDKAPI IO_COMPLETION_ROUTINE)( + IN struct _DEVICE_OBJECT *DeviceObject, + IN struct _IRP *Irp, + IN PVOID Context); typedef IO_COMPLETION_ROUTINE *PIO_COMPLETION_ROUTINE; typedef VOID -(NTAPI IO_DPC_ROUTINE)( - IN struct _KDPC *Dpc, - IN struct _DEVICE_OBJECT *DeviceObject, - IN struct _IRP *Irp, - IN PVOID Context); -typedef IO_DPC_ROUTINE *PIO_DPC_ROUTINE; +(DDKAPI *PIO_DPC_ROUTINE)( + IN struct _KDPC *Dpc, + IN struct _DEVICE_OBJECT *DeviceObject, + IN struct _IRP *Irp, + IN PVOID Context); typedef NTSTATUS -(NTAPI *PMM_DLL_INITIALIZE)( - IN PUNICODE_STRING RegistryPath); +(DDKAPI *PMM_DLL_INITIALIZE)( + IN PUNICODE_STRING RegistryPath); typedef NTSTATUS -(NTAPI *PMM_DLL_UNLOAD)( +(DDKAPI *PMM_DLL_UNLOAD)( VOID); +typedef BOOLEAN +(DDKAPI KSERVICE_ROUTINE)( + IN struct _KINTERRUPT *Interrupt, + IN PVOID ServiceContext); +typedef KSERVICE_ROUTINE *PKSERVICE_ROUTINE; + typedef VOID -(NTAPI IO_TIMER_ROUTINE)( - IN struct _DEVICE_OBJECT *DeviceObject, - IN PVOID Context); -typedef IO_TIMER_ROUTINE *PIO_TIMER_ROUTINE; +(DDKAPI *PIO_TIMER_ROUTINE)( + IN struct _DEVICE_OBJECT *DeviceObject, + IN PVOID Context); typedef struct _IO_SECURITY_CONTEXT { - PSECURITY_QUALITY_OF_SERVICE SecurityQos; - PACCESS_STATE AccessState; - ACCESS_MASK DesiredAccess; - ULONG FullCreateOptions; + PSECURITY_QUALITY_OF_SERVICE SecurityQos; + PACCESS_STATE AccessState; + ACCESS_MASK DesiredAccess; + ULONG FullCreateOptions; } IO_SECURITY_CONTEXT, *PIO_SECURITY_CONTEXT; struct _IO_CSQ; typedef struct _IO_CSQ_IRP_CONTEXT { - ULONG Type; - struct _IRP *Irp; - struct _IO_CSQ *Csq; + ULONG Type; + struct _IRP *Irp; + struct _IO_CSQ *Csq; } IO_CSQ_IRP_CONTEXT, *PIO_CSQ_IRP_CONTEXT; typedef VOID -(NTAPI *PIO_CSQ_INSERT_IRP)( - IN struct _IO_CSQ *Csq, - IN PIRP Irp); - -typedef NTSTATUS -(NTAPI IO_CSQ_INSERT_IRP_EX)( - IN struct _IO_CSQ *Csq, - IN PIRP Irp, - IN PVOID InsertContext); -typedef IO_CSQ_INSERT_IRP_EX *PIO_CSQ_INSERT_IRP_EX; +(DDKAPI *PIO_CSQ_INSERT_IRP)( + IN struct _IO_CSQ *Csq, + IN PIRP Irp); typedef VOID -(NTAPI *PIO_CSQ_REMOVE_IRP)( - IN struct _IO_CSQ *Csq, - IN PIRP Irp); +(DDKAPI *PIO_CSQ_REMOVE_IRP)( + IN struct _IO_CSQ *Csq, + IN PIRP Irp); typedef PIRP -(NTAPI *PIO_CSQ_PEEK_NEXT_IRP)( - IN struct _IO_CSQ *Csq, - IN PIRP Irp, - IN PVOID PeekContext); +(DDKAPI *PIO_CSQ_PEEK_NEXT_IRP)( + IN struct _IO_CSQ *Csq, + IN PIRP Irp, + IN PVOID PeekContext); typedef VOID -(NTAPI *PIO_CSQ_ACQUIRE_LOCK)( - IN struct _IO_CSQ *Csq, - OUT PKIRQL Irql); +(DDKAPI *PIO_CSQ_ACQUIRE_LOCK)( + IN struct _IO_CSQ *Csq, + OUT PKIRQL Irql); typedef VOID -(NTAPI *PIO_CSQ_RELEASE_LOCK)( - IN struct _IO_CSQ *Csq, - IN KIRQL Irql); +(DDKAPI *PIO_CSQ_RELEASE_LOCK)( + IN struct _IO_CSQ *Csq, + IN KIRQL Irql); typedef VOID -(NTAPI *PIO_CSQ_COMPLETE_CANCELED_IRP)( - IN struct _IO_CSQ *Csq, - IN PIRP Irp); +(DDKAPI *PIO_CSQ_COMPLETE_CANCELED_IRP)( + IN struct _IO_CSQ *Csq, + IN PIRP Irp); typedef struct _IO_CSQ { - ULONG Type; - PIO_CSQ_INSERT_IRP CsqInsertIrp; - PIO_CSQ_REMOVE_IRP CsqRemoveIrp; - PIO_CSQ_PEEK_NEXT_IRP CsqPeekNextIrp; - PIO_CSQ_ACQUIRE_LOCK CsqAcquireLock; - PIO_CSQ_RELEASE_LOCK CsqReleaseLock; - PIO_CSQ_COMPLETE_CANCELED_IRP CsqCompleteCanceledIrp; - PVOID ReservePointer; + ULONG Type; + PIO_CSQ_INSERT_IRP CsqInsertIrp; + PIO_CSQ_REMOVE_IRP CsqRemoveIrp; + PIO_CSQ_PEEK_NEXT_IRP CsqPeekNextIrp; + PIO_CSQ_ACQUIRE_LOCK CsqAcquireLock; + PIO_CSQ_RELEASE_LOCK CsqReleaseLock; + PIO_CSQ_COMPLETE_CANCELED_IRP CsqCompleteCanceledIrp; + PVOID ReservePointer; } IO_CSQ, *PIO_CSQ; typedef enum _BUS_QUERY_ID_TYPE { @@ -6175,321 +4926,198 @@ typedef enum _DEVICE_TEXT_TYPE { DeviceTextLocationInformation } DEVICE_TEXT_TYPE, *PDEVICE_TEXT_TYPE; -typedef BOOLEAN -(NTAPI *PGPE_SERVICE_ROUTINE)( - PVOID, - PVOID); - -typedef NTSTATUS -(NTAPI *PGPE_CONNECT_VECTOR)( - PDEVICE_OBJECT, - ULONG, - KINTERRUPT_MODE, - BOOLEAN, - PGPE_SERVICE_ROUTINE, - PVOID, - PVOID); - -typedef NTSTATUS -(NTAPI *PGPE_DISCONNECT_VECTOR)( - PVOID); - -typedef NTSTATUS -(NTAPI *PGPE_ENABLE_EVENT)( - PDEVICE_OBJECT, - PVOID); - -typedef NTSTATUS -(NTAPI *PGPE_DISABLE_EVENT)( - PDEVICE_OBJECT, - PVOID); - -typedef NTSTATUS -(NTAPI *PGPE_CLEAR_STATUS)( - PDEVICE_OBJECT, - PVOID); - -typedef VOID -(NTAPI *PDEVICE_NOTIFY_CALLBACK)( - PVOID, - ULONG); - -typedef NTSTATUS -(NTAPI *PREGISTER_FOR_DEVICE_NOTIFICATIONS)( - PDEVICE_OBJECT, - PDEVICE_NOTIFY_CALLBACK, - PVOID); - -typedef VOID -(NTAPI *PUNREGISTER_FOR_DEVICE_NOTIFICATIONS)( - PDEVICE_OBJECT, - PDEVICE_NOTIFY_CALLBACK); - -typedef struct _ACPI_INTERFACE_STANDARD { - USHORT Size; - USHORT Version; - PVOID Context; - PINTERFACE_REFERENCE InterfaceReference; - PINTERFACE_DEREFERENCE InterfaceDereference; - PGPE_CONNECT_VECTOR GpeConnectVector; - PGPE_DISCONNECT_VECTOR GpeDisconnectVector; - PGPE_ENABLE_EVENT GpeEnableEvent; - PGPE_DISABLE_EVENT GpeDisableEvent; - PGPE_CLEAR_STATUS GpeClearStatus; - PREGISTER_FOR_DEVICE_NOTIFICATIONS RegisterForDeviceNotifications; - PUNREGISTER_FOR_DEVICE_NOTIFICATIONS UnregisterForDeviceNotifications; -} ACPI_INTERFACE_STANDARD, *PACPI_INTERFACE_STANDARD; - -typedef BOOLEAN -(NTAPI *PGPE_SERVICE_ROUTINE2)( - PVOID ObjectContext, - PVOID ServiceContext); - -typedef NTSTATUS -(NTAPI *PGPE_CONNECT_VECTOR2)( - PVOID Context, - ULONG GpeNumber, - KINTERRUPT_MODE Mode, - BOOLEAN Shareable, - PGPE_SERVICE_ROUTINE ServiceRoutine, - PVOID ServiceContext, - PVOID *ObjectContext); - -typedef NTSTATUS -(NTAPI *PGPE_DISCONNECT_VECTOR2)( - PVOID Context, - PVOID ObjectContext); - -typedef NTSTATUS -(NTAPI *PGPE_ENABLE_EVENT2)( - PVOID Context, - PVOID ObjectContext); - -typedef NTSTATUS -(NTAPI *PGPE_DISABLE_EVENT2)( - PVOID Context, - PVOID ObjectContext); - -typedef NTSTATUS -(NTAPI *PGPE_CLEAR_STATUS2)( - PVOID Context, - PVOID ObjectContext); - -typedef VOID -(NTAPI *PDEVICE_NOTIFY_CALLBACK2)( - PVOID NotificationContext, - ULONG NotifyCode); - -typedef NTSTATUS -(NTAPI *PREGISTER_FOR_DEVICE_NOTIFICATIONS2)( - PVOID Context, - PDEVICE_NOTIFY_CALLBACK2 NotificationHandler, - PVOID NotificationContext); - -typedef VOID -(NTAPI *PUNREGISTER_FOR_DEVICE_NOTIFICATIONS2)( - PVOID Context); - -typedef struct _ACPI_INTERFACE_STANDARD2 { - USHORT Size; - USHORT Version; - PVOID Context; - PINTERFACE_REFERENCE InterfaceReference; - PINTERFACE_DEREFERENCE InterfaceDereference; - PGPE_CONNECT_VECTOR2 GpeConnectVector; - PGPE_DISCONNECT_VECTOR2 GpeDisconnectVector; - PGPE_ENABLE_EVENT2 GpeEnableEvent; - PGPE_DISABLE_EVENT2 GpeDisableEvent; - PGPE_CLEAR_STATUS2 GpeClearStatus; - PREGISTER_FOR_DEVICE_NOTIFICATIONS2 RegisterForDeviceNotifications; - PUNREGISTER_FOR_DEVICE_NOTIFICATIONS2 UnregisterForDeviceNotifications; -} ACPI_INTERFACE_STANDARD2, *PACPI_INTERFACE_STANDARD2; +typedef enum _WORK_QUEUE_TYPE { + CriticalWorkQueue, + DelayedWorkQueue, + HyperCriticalWorkQueue, + MaximumWorkQueue +} WORK_QUEUE_TYPE; #if !defined(_AMD64_) && !defined(_IA64_) #include #endif typedef struct _IO_STACK_LOCATION { - UCHAR MajorFunction; - UCHAR MinorFunction; - UCHAR Flags; - UCHAR Control; + UCHAR MajorFunction; + UCHAR MinorFunction; + UCHAR Flags; + UCHAR Control; union { struct { - PIO_SECURITY_CONTEXT SecurityContext; - ULONG Options; - USHORT POINTER_ALIGNMENT FileAttributes; - USHORT ShareAccess; - ULONG POINTER_ALIGNMENT EaLength; + PIO_SECURITY_CONTEXT SecurityContext; + ULONG Options; + USHORT POINTER_ALIGNMENT FileAttributes; + USHORT ShareAccess; + ULONG POINTER_ALIGNMENT EaLength; } Create; struct { - ULONG Length; - ULONG POINTER_ALIGNMENT Key; - LARGE_INTEGER ByteOffset; + ULONG Length; + ULONG POINTER_ALIGNMENT Key; + LARGE_INTEGER ByteOffset; } Read; struct { - ULONG Length; - ULONG POINTER_ALIGNMENT Key; - LARGE_INTEGER ByteOffset; + ULONG Length; + ULONG POINTER_ALIGNMENT Key; + LARGE_INTEGER ByteOffset; } Write; struct { - ULONG Length; - PUNICODE_STRING FileName; - FILE_INFORMATION_CLASS FileInformationClass; - ULONG FileIndex; + ULONG Length; + PUNICODE_STRING FileName; + FILE_INFORMATION_CLASS FileInformationClass; + ULONG FileIndex; } QueryDirectory; struct { - ULONG Length; - ULONG CompletionFilter; + ULONG Length; + ULONG CompletionFilter; } NotifyDirectory; struct { - ULONG Length; - FILE_INFORMATION_CLASS POINTER_ALIGNMENT FileInformationClass; + ULONG Length; + FILE_INFORMATION_CLASS POINTER_ALIGNMENT FileInformationClass; } QueryFile; struct { - ULONG Length; - FILE_INFORMATION_CLASS POINTER_ALIGNMENT FileInformationClass; - PFILE_OBJECT FileObject; + ULONG Length; + FILE_INFORMATION_CLASS POINTER_ALIGNMENT FileInformationClass; + PFILE_OBJECT FileObject; _ANONYMOUS_UNION union { _ANONYMOUS_STRUCT struct { - BOOLEAN ReplaceIfExists; - BOOLEAN AdvanceOnly; + BOOLEAN ReplaceIfExists; + BOOLEAN AdvanceOnly; } DUMMYSTRUCTNAME; - ULONG ClusterCount; - HANDLE DeleteHandle; + ULONG ClusterCount; + HANDLE DeleteHandle; } DUMMYUNIONNAME; } SetFile; struct { - ULONG Length; - PVOID EaList; - ULONG EaListLength; - ULONG EaIndex; + ULONG Length; + PVOID EaList; + ULONG EaListLength; + ULONG EaIndex; } QueryEa; struct { - ULONG Length; + ULONG Length; } SetEa; struct { - ULONG Length; - FS_INFORMATION_CLASS POINTER_ALIGNMENT FsInformationClass; + ULONG Length; + FS_INFORMATION_CLASS POINTER_ALIGNMENT FsInformationClass; } QueryVolume; struct { - ULONG Length; - FS_INFORMATION_CLASS FsInformationClass; + ULONG Length; + FS_INFORMATION_CLASS FsInformationClass; } SetVolume; struct { - ULONG OutputBufferLength; - ULONG InputBufferLength; - ULONG FsControlCode; - PVOID Type3InputBuffer; + ULONG OutputBufferLength; + ULONG InputBufferLength; + ULONG FsControlCode; + PVOID Type3InputBuffer; } FileSystemControl; struct { - PLARGE_INTEGER Length; - ULONG Key; - LARGE_INTEGER ByteOffset; + PLARGE_INTEGER Length; + ULONG Key; + LARGE_INTEGER ByteOffset; } LockControl; struct { - ULONG OutputBufferLength; - ULONG POINTER_ALIGNMENT InputBufferLength; - ULONG POINTER_ALIGNMENT IoControlCode; - PVOID Type3InputBuffer; + ULONG OutputBufferLength; + ULONG POINTER_ALIGNMENT InputBufferLength; + ULONG POINTER_ALIGNMENT IoControlCode; + PVOID Type3InputBuffer; } DeviceIoControl; struct { - SECURITY_INFORMATION SecurityInformation; - ULONG POINTER_ALIGNMENT Length; + SECURITY_INFORMATION SecurityInformation; + ULONG POINTER_ALIGNMENT Length; } QuerySecurity; struct { - SECURITY_INFORMATION SecurityInformation; - PSECURITY_DESCRIPTOR SecurityDescriptor; + SECURITY_INFORMATION SecurityInformation; + PSECURITY_DESCRIPTOR SecurityDescriptor; } SetSecurity; struct { - PVPB Vpb; - PDEVICE_OBJECT DeviceObject; + PVPB Vpb; + PDEVICE_OBJECT DeviceObject; } MountVolume; struct { - PVPB Vpb; - PDEVICE_OBJECT DeviceObject; + PVPB Vpb; + PDEVICE_OBJECT DeviceObject; } VerifyVolume; struct { - struct _SCSI_REQUEST_BLOCK *Srb; + struct _SCSI_REQUEST_BLOCK *Srb; } Scsi; struct { - ULONG Length; - PSID StartSid; - struct _FILE_GET_QUOTA_INFORMATION *SidList; - ULONG SidListLength; + ULONG Length; + PSID StartSid; + struct _FILE_GET_QUOTA_INFORMATION *SidList; + ULONG SidListLength; } QueryQuota; struct { - ULONG Length; + ULONG Length; } SetQuota; struct { - DEVICE_RELATION_TYPE Type; + DEVICE_RELATION_TYPE Type; } QueryDeviceRelations; struct { - CONST GUID *InterfaceType; - USHORT Size; - USHORT Version; - PINTERFACE Interface; - PVOID InterfaceSpecificData; + CONST GUID *InterfaceType; + USHORT Size; + USHORT Version; + PINTERFACE Interface; + PVOID InterfaceSpecificData; } QueryInterface; struct { - PDEVICE_CAPABILITIES Capabilities; + PDEVICE_CAPABILITIES Capabilities; } DeviceCapabilities; struct { - PIO_RESOURCE_REQUIREMENTS_LIST IoResourceRequirementList; + PIO_RESOURCE_REQUIREMENTS_LIST IoResourceRequirementList; } FilterResourceRequirements; struct { - ULONG WhichSpace; - PVOID Buffer; - ULONG Offset; - ULONG POINTER_ALIGNMENT Length; + ULONG WhichSpace; + PVOID Buffer; + ULONG Offset; + ULONG POINTER_ALIGNMENT Length; } ReadWriteConfig; struct { - BOOLEAN Lock; + BOOLEAN Lock; } SetLock; struct { - BUS_QUERY_ID_TYPE IdType; + BUS_QUERY_ID_TYPE IdType; } QueryId; struct { - DEVICE_TEXT_TYPE DeviceTextType; - LCID POINTER_ALIGNMENT LocaleId; + DEVICE_TEXT_TYPE DeviceTextType; + LCID POINTER_ALIGNMENT LocaleId; } QueryDeviceText; struct { - BOOLEAN InPath; - BOOLEAN Reserved[3]; - DEVICE_USAGE_NOTIFICATION_TYPE POINTER_ALIGNMENT Type; + BOOLEAN InPath; + BOOLEAN Reserved[3]; + DEVICE_USAGE_NOTIFICATION_TYPE POINTER_ALIGNMENT Type; } UsageNotification; struct { - SYSTEM_POWER_STATE PowerState; + SYSTEM_POWER_STATE PowerState; } WaitWake; struct { - PPOWER_SEQUENCE PowerSequence; + PPOWER_SEQUENCE PowerSequence; } PowerSequence; struct { - ULONG SystemContext; - POWER_STATE_TYPE POINTER_ALIGNMENT Type; - POWER_STATE POINTER_ALIGNMENT State; - POWER_ACTION POINTER_ALIGNMENT ShutdownType; + ULONG SystemContext; + POWER_STATE_TYPE POINTER_ALIGNMENT Type; + POWER_STATE POINTER_ALIGNMENT State; + POWER_ACTION POINTER_ALIGNMENT ShutdownType; } Power; struct { - PCM_RESOURCE_LIST AllocatedResources; - PCM_RESOURCE_LIST AllocatedResourcesTranslated; + PCM_RESOURCE_LIST AllocatedResources; + PCM_RESOURCE_LIST AllocatedResourcesTranslated; } StartDevice; struct { - ULONG_PTR ProviderId; - PVOID DataPath; - ULONG BufferSize; - PVOID Buffer; + ULONG_PTR ProviderId; + PVOID DataPath; + ULONG BufferSize; + PVOID Buffer; } WMI; struct { - PVOID Argument1; - PVOID Argument2; - PVOID Argument3; - PVOID Argument4; + PVOID Argument1; + PVOID Argument2; + PVOID Argument3; + PVOID Argument4; } Others; } Parameters; - PDEVICE_OBJECT DeviceObject; - PFILE_OBJECT FileObject; - PIO_COMPLETION_ROUTINE CompletionRoutine; - PVOID Context; + PDEVICE_OBJECT DeviceObject; + PFILE_OBJECT FileObject; + PIO_COMPLETION_ROUTINE CompletionRoutine; + PVOID Context; } IO_STACK_LOCATION, *PIO_STACK_LOCATION; #if !defined(_AMD64_) && !defined(_IA64_) #include @@ -6503,13 +5131,16 @@ typedef struct _IO_STACK_LOCATION { #define SL_INVOKE_ON_SUCCESS 0x40 #define SL_INVOKE_ON_ERROR 0x80 +/* IO_STACK_LOCATION.Parameters.ReadWriteControl.WhichSpace */ + +#define PCI_WHICHSPACE_CONFIG 0x0 +#define PCI_WHICHSPACE_ROM 0x52696350 /* 'PciR' */ + #define METHOD_BUFFERED 0 #define METHOD_IN_DIRECT 1 #define METHOD_OUT_DIRECT 2 #define METHOD_NEITHER 3 -#define METHOD_DIRECT_TO_HARDWARE METHOD_IN_DIRECT -#define METHOD_DIRECT_FROM_HARDWARE METHOD_OUT_DIRECT #define FILE_SUPERSEDED 0x00000000 #define FILE_OPENED 0x00000001 @@ -6556,7 +5187,6 @@ typedef struct _IO_STACK_LOCATION { #define FILE_ATTRIBUTE_OFFLINE 0x00001000 #define FILE_ATTRIBUTE_NOT_CONTENT_INDEXED 0x00002000 #define FILE_ATTRIBUTE_ENCRYPTED 0x00004000 -#define FILE_ATTRIBUTE_VIRTUAL 0x00010000 #define FILE_ATTRIBUTE_VALID_FLAGS 0x00007fb7 #define FILE_ATTRIBUTE_VALID_SET_FLAGS 0x000031a7 @@ -6590,10 +5220,6 @@ typedef struct _IO_STACK_LOCATION { #define FILE_OPEN_BY_FILE_ID 0x00002000 #define FILE_OPEN_FOR_BACKUP_INTENT 0x00004000 #define FILE_NO_COMPRESSION 0x00008000 -#if (NTDDI_VERSION >= NTDDI_WIN7) -#define FILE_OPEN_REQUIRING_OPLOCK 0x00010000 -#define FILE_DISALLOW_EXCLUSIVE 0x00020000 -#endif /* (NTDDI_VERSION >= NTDDI_WIN7) */ #define FILE_RESERVE_OPFILTER 0x00100000 #define FILE_OPEN_REPARSE_POINT 0x00200000 #define FILE_OPEN_NO_RECALL 0x00400000 @@ -6632,8748 +5258,5806 @@ typedef struct _IO_STACK_LOCATION { /* end winnt.h */ -#define WMIREG_ACTION_REGISTER 1 -#define WMIREG_ACTION_DEREGISTER 2 -#define WMIREG_ACTION_REREGISTER 3 -#define WMIREG_ACTION_UPDATE_GUIDS 4 -#define WMIREG_ACTION_BLOCK_IRPS 5 +/****************************************************************************** + * Object Manager Types * + ******************************************************************************/ -#define WMIREGISTER 0 -#define WMIUPDATE 1 +typedef struct _OBJECT_NAME_INFORMATION { + UNICODE_STRING Name; +} OBJECT_NAME_INFORMATION, *POBJECT_NAME_INFORMATION; -typedef VOID -(NTAPI FWMI_NOTIFICATION_CALLBACK)( - PVOID Wnode, - PVOID Context); -typedef FWMI_NOTIFICATION_CALLBACK *WMI_NOTIFICATION_CALLBACK; +/* Exported object types */ +extern POBJECT_TYPE NTSYSAPI ExEventObjectType; +extern POBJECT_TYPE NTSYSAPI ExSemaphoreObjectType; +extern POBJECT_TYPE NTSYSAPI IoFileObjectType; +extern POBJECT_TYPE NTSYSAPI PsThreadType; +extern POBJECT_TYPE NTSYSAPI SeTokenObjectType; +extern POBJECT_TYPE NTSYSAPI PsProcessType; -#ifndef _PCI_X_ -#define _PCI_X_ -typedef struct _PCI_SLOT_NUMBER { - union { - struct { - ULONG DeviceNumber:5; - ULONG FunctionNumber:3; - ULONG Reserved:24; - } bits; - ULONG AsULONG; - } u; -} PCI_SLOT_NUMBER, *PPCI_SLOT_NUMBER; +/****************************************************************************** + * Process Manager Types * + ******************************************************************************/ -#define PCI_TYPE0_ADDRESSES 6 -#define PCI_TYPE1_ADDRESSES 2 -#define PCI_TYPE2_ADDRESSES 5 +#define QUOTA_LIMITS_HARDWS_MIN_ENABLE 0x00000001 +#define QUOTA_LIMITS_HARDWS_MIN_DISABLE 0x00000002 +#define QUOTA_LIMITS_HARDWS_MAX_ENABLE 0x00000004 +#define QUOTA_LIMITS_HARDWS_MAX_DISABLE 0x00000008 +#define QUOTA_LIMITS_USE_DEFAULT_LIMITS 0x00000010 -typedef struct _PCI_COMMON_HEADER { - PCI_COMMON_HEADER_LAYOUT -} PCI_COMMON_HEADER, *PPCI_COMMON_HEADER; +/* Process Qoutas */ +typedef struct _QUOTA_LIMITS { + SIZE_T PagedPoolLimit; + SIZE_T NonPagedPoolLimit; + SIZE_T MinimumWorkingSetSize; + SIZE_T MaximumWorkingSetSize; + SIZE_T PagefileLimit; + LARGE_INTEGER TimeLimit; +} QUOTA_LIMITS, *PQUOTA_LIMITS; -#ifdef __cplusplus -typedef struct _PCI_COMMON_CONFIG { - PCI_COMMON_HEADER_LAYOUT - UCHAR DeviceSpecific[192]; -} PCI_COMMON_CONFIG, *PPCI_COMMON_CONFIG; -#else -typedef struct _PCI_COMMON_CONFIG { - PCI_COMMON_HEADER DUMMYSTRUCTNAME; - UCHAR DeviceSpecific[192]; -} PCI_COMMON_CONFIG, *PPCI_COMMON_CONFIG; -#endif +/* Thread Access Rights */ +#define THREAD_TERMINATE 0x0001 +#define THREAD_SUSPEND_RESUME 0x0002 +#define THREAD_ALERT 0x0004 +#define THREAD_GET_CONTEXT 0x0008 +#define THREAD_SET_CONTEXT 0x0010 +#define THREAD_SET_INFORMATION 0x0020 +#define THREAD_SET_LIMITED_INFORMATION 0x0400 +#define THREAD_QUERY_LIMITED_INFORMATION 0x0800 -#define PCI_COMMON_HDR_LENGTH (FIELD_OFFSET(PCI_COMMON_CONFIG, DeviceSpecific)) +#define PROCESS_DUP_HANDLE (0x0040) -#define PCI_EXTENDED_CONFIG_LENGTH 0x1000 +#if (NTDDI_VERSION >= NTDDI_VISTA) +#define PROCESS_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0xFFFF) +#else +#define PROCESS_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0xFFF) +#endif -#define PCI_MAX_DEVICES 32 -#define PCI_MAX_FUNCTION 8 -#define PCI_MAX_BRIDGE_NUMBER 0xFF -#define PCI_INVALID_VENDORID 0xFFFF - -/* PCI_COMMON_CONFIG.HeaderType */ -#define PCI_MULTIFUNCTION 0x80 -#define PCI_DEVICE_TYPE 0x00 -#define PCI_BRIDGE_TYPE 0x01 -#define PCI_CARDBUS_BRIDGE_TYPE 0x02 - -#define PCI_CONFIGURATION_TYPE(PciData) \ - (((PPCI_COMMON_CONFIG) (PciData))->HeaderType & ~PCI_MULTIFUNCTION) - -#define PCI_MULTIFUNCTION_DEVICE(PciData) \ - ((((PPCI_COMMON_CONFIG) (PciData))->HeaderType & PCI_MULTIFUNCTION) != 0) - -/* PCI_COMMON_CONFIG.Command */ -#define PCI_ENABLE_IO_SPACE 0x0001 -#define PCI_ENABLE_MEMORY_SPACE 0x0002 -#define PCI_ENABLE_BUS_MASTER 0x0004 -#define PCI_ENABLE_SPECIAL_CYCLES 0x0008 -#define PCI_ENABLE_WRITE_AND_INVALIDATE 0x0010 -#define PCI_ENABLE_VGA_COMPATIBLE_PALETTE 0x0020 -#define PCI_ENABLE_PARITY 0x0040 -#define PCI_ENABLE_WAIT_CYCLE 0x0080 -#define PCI_ENABLE_SERR 0x0100 -#define PCI_ENABLE_FAST_BACK_TO_BACK 0x0200 -#define PCI_DISABLE_LEVEL_INTERRUPT 0x0400 - -/* PCI_COMMON_CONFIG.Status */ -#define PCI_STATUS_INTERRUPT_PENDING 0x0008 -#define PCI_STATUS_CAPABILITIES_LIST 0x0010 -#define PCI_STATUS_66MHZ_CAPABLE 0x0020 -#define PCI_STATUS_UDF_SUPPORTED 0x0040 -#define PCI_STATUS_FAST_BACK_TO_BACK 0x0080 -#define PCI_STATUS_DATA_PARITY_DETECTED 0x0100 -#define PCI_STATUS_DEVSEL 0x0600 -#define PCI_STATUS_SIGNALED_TARGET_ABORT 0x0800 -#define PCI_STATUS_RECEIVED_TARGET_ABORT 0x1000 -#define PCI_STATUS_RECEIVED_MASTER_ABORT 0x2000 -#define PCI_STATUS_SIGNALED_SYSTEM_ERROR 0x4000 -#define PCI_STATUS_DETECTED_PARITY_ERROR 0x8000 +#if (NTDDI_VERSION >= NTDDI_VISTA) +#define THREAD_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0xFFFF) +#else +#define THREAD_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x3FF) +#endif -/* IO_STACK_LOCATION.Parameters.ReadWriteControl.WhichSpace */ +#define ES_SYSTEM_REQUIRED 0x00000001 +#define ES_DISPLAY_REQUIRED 0x00000002 +#define ES_USER_PRESENT 0x00000004 +#define ES_CONTINUOUS 0x80000000 -#define PCI_WHICHSPACE_CONFIG 0x0 -#define PCI_WHICHSPACE_ROM 0x52696350 /* 'PciR' */ +#define LOW_PRIORITY 0 +#define LOW_REALTIME_PRIORITY 16 +#define HIGH_PRIORITY 31 +#define MAXIMUM_PRIORITY 32 -#define PCI_CAPABILITY_ID_POWER_MANAGEMENT 0x01 -#define PCI_CAPABILITY_ID_AGP 0x02 -#define PCI_CAPABILITY_ID_VPD 0x03 -#define PCI_CAPABILITY_ID_SLOT_ID 0x04 -#define PCI_CAPABILITY_ID_MSI 0x05 -#define PCI_CAPABILITY_ID_CPCI_HOTSWAP 0x06 -#define PCI_CAPABILITY_ID_PCIX 0x07 -#define PCI_CAPABILITY_ID_HYPERTRANSPORT 0x08 -#define PCI_CAPABILITY_ID_VENDOR_SPECIFIC 0x09 -#define PCI_CAPABILITY_ID_DEBUG_PORT 0x0A -#define PCI_CAPABILITY_ID_CPCI_RES_CTRL 0x0B -#define PCI_CAPABILITY_ID_SHPC 0x0C -#define PCI_CAPABILITY_ID_P2P_SSID 0x0D -#define PCI_CAPABILITY_ID_AGP_TARGET 0x0E -#define PCI_CAPABILITY_ID_SECURE 0x0F -#define PCI_CAPABILITY_ID_PCI_EXPRESS 0x10 -#define PCI_CAPABILITY_ID_MSIX 0x11 - -typedef struct _PCI_CAPABILITIES_HEADER { - UCHAR CapabilityID; - UCHAR Next; -} PCI_CAPABILITIES_HEADER, *PPCI_CAPABILITIES_HEADER; - -typedef struct _PCI_PMC { - UCHAR Version:3; - UCHAR PMEClock:1; - UCHAR Rsvd1:1; - UCHAR DeviceSpecificInitialization:1; - UCHAR Rsvd2:2; - struct _PM_SUPPORT { - UCHAR Rsvd2:1; - UCHAR D1:1; - UCHAR D2:1; - UCHAR PMED0:1; - UCHAR PMED1:1; - UCHAR PMED2:1; - UCHAR PMED3Hot:1; - UCHAR PMED3Cold:1; - } Support; -} PCI_PMC, *PPCI_PMC; - -typedef struct _PCI_PMCSR { - USHORT PowerState:2; - USHORT Rsvd1:6; - USHORT PMEEnable:1; - USHORT DataSelect:4; - USHORT DataScale:2; - USHORT PMEStatus:1; -} PCI_PMCSR, *PPCI_PMCSR; - -typedef struct _PCI_PMCSR_BSE { - UCHAR Rsvd1:6; - UCHAR D3HotSupportsStopClock:1; - UCHAR BusPowerClockControlEnabled:1; -} PCI_PMCSR_BSE, *PPCI_PMCSR_BSE; - -typedef struct _PCI_PM_CAPABILITY { - PCI_CAPABILITIES_HEADER Header; - union { - PCI_PMC Capabilities; - USHORT AsUSHORT; - } PMC; - union { - PCI_PMCSR ControlStatus; - USHORT AsUSHORT; - } PMCSR; - union { - PCI_PMCSR_BSE BridgeSupport; - UCHAR AsUCHAR; - } PMCSR_BSE; - UCHAR Data; -} PCI_PM_CAPABILITY, *PPCI_PM_CAPABILITY; -typedef struct { - PCI_CAPABILITIES_HEADER Header; - union { - struct { - USHORT DataParityErrorRecoveryEnable:1; - USHORT EnableRelaxedOrdering:1; - USHORT MaxMemoryReadByteCount:2; - USHORT MaxOutstandingSplitTransactions:3; - USHORT Reserved:9; - } bits; - USHORT AsUSHORT; - } Command; - union { - struct { - ULONG FunctionNumber:3; - ULONG DeviceNumber:5; - ULONG BusNumber:8; - ULONG Device64Bit:1; - ULONG Capable133MHz:1; - ULONG SplitCompletionDiscarded:1; - ULONG UnexpectedSplitCompletion:1; - ULONG DeviceComplexity:1; - ULONG DesignedMaxMemoryReadByteCount:2; - ULONG DesignedMaxOutstandingSplitTransactions:3; - ULONG DesignedMaxCumulativeReadSize:3; - ULONG ReceivedSplitCompletionErrorMessage:1; - ULONG CapablePCIX266:1; - ULONG CapablePCIX533:1; - } bits; - ULONG AsULONG; - } Status; -} PCI_X_CAPABILITY, *PPCI_X_CAPABILITY; - -#define PCI_EXPRESS_ADVANCED_ERROR_REPORTING_CAP_ID 0x0001 -#define PCI_EXPRESS_VIRTUAL_CHANNEL_CAP_ID 0x0002 -#define PCI_EXPRESS_DEVICE_SERIAL_NUMBER_CAP_ID 0x0003 -#define PCI_EXPRESS_POWER_BUDGETING_CAP_ID 0x0004 -#define PCI_EXPRESS_RC_LINK_DECLARATION_CAP_ID 0x0005 -#define PCI_EXPRESS_RC_INTERNAL_LINK_CONTROL_CAP_ID 0x0006 -#define PCI_EXPRESS_RC_EVENT_COLLECTOR_ENDPOINT_ASSOCIATION_CAP_ID 0x0007 -#define PCI_EXPRESS_MFVC_CAP_ID 0x0008 -#define PCI_EXPRESS_VC_AND_MFVC_CAP_ID 0x0009 -#define PCI_EXPRESS_RCRB_HEADER_CAP_ID 0x000A -#define PCI_EXPRESS_SINGLE_ROOT_IO_VIRTUALIZATION_CAP_ID 0x0010 - -typedef struct _PCI_EXPRESS_ENHANCED_CAPABILITY_HEADER { - USHORT CapabilityID; - USHORT Version:4; - USHORT Next:12; -} PCI_EXPRESS_ENHANCED_CAPABILITY_HEADER, *PPCI_EXPRESS_ENHANCED_CAPABILITY_HEADER; - -typedef struct _PCI_EXPRESS_SERIAL_NUMBER_CAPABILITY { - PCI_EXPRESS_ENHANCED_CAPABILITY_HEADER Header; - ULONG LowSerialNumber; - ULONG HighSerialNumber; -} PCI_EXPRESS_SERIAL_NUMBER_CAPABILITY, *PPCI_EXPRESS_SERIAL_NUMBER_CAPABILITY; - -typedef union _PCI_EXPRESS_UNCORRECTABLE_ERROR_STATUS { - struct { - ULONG Undefined:1; - ULONG Reserved1:3; - ULONG DataLinkProtocolError:1; - ULONG SurpriseDownError:1; - ULONG Reserved2:6; - ULONG PoisonedTLP:1; - ULONG FlowControlProtocolError:1; - ULONG CompletionTimeout:1; - ULONG CompleterAbort:1; - ULONG UnexpectedCompletion:1; - ULONG ReceiverOverflow:1; - ULONG MalformedTLP:1; - ULONG ECRCError:1; - ULONG UnsupportedRequestError:1; - ULONG Reserved3:11; - } DUMMYSTRUCTNAME; - ULONG AsULONG; -} PCI_EXPRESS_UNCORRECTABLE_ERROR_STATUS, *PPCI_EXPRESS_UNCORRECTABLE_ERROR_STATUS; - -typedef union _PCI_EXPRESS_UNCORRECTABLE_ERROR_MASK { - struct { - ULONG Undefined:1; - ULONG Reserved1:3; - ULONG DataLinkProtocolError:1; - ULONG SurpriseDownError:1; - ULONG Reserved2:6; - ULONG PoisonedTLP:1; - ULONG FlowControlProtocolError:1; - ULONG CompletionTimeout:1; - ULONG CompleterAbort:1; - ULONG UnexpectedCompletion:1; - ULONG ReceiverOverflow:1; - ULONG MalformedTLP:1; - ULONG ECRCError:1; - ULONG UnsupportedRequestError:1; - ULONG Reserved3:11; - } DUMMYSTRUCTNAME; - ULONG AsULONG; -} PCI_EXPRESS_UNCORRECTABLE_ERROR_MASK, *PPCI_EXPRESS_UNCORRECTABLE_ERROR_MASK; - -typedef union _PCI_EXPRESS_UNCORRECTABLE_ERROR_SEVERITY { - struct { - ULONG Undefined:1; - ULONG Reserved1:3; - ULONG DataLinkProtocolError:1; - ULONG SurpriseDownError:1; - ULONG Reserved2:6; - ULONG PoisonedTLP:1; - ULONG FlowControlProtocolError:1; - ULONG CompletionTimeout:1; - ULONG CompleterAbort:1; - ULONG UnexpectedCompletion:1; - ULONG ReceiverOverflow:1; - ULONG MalformedTLP:1; - ULONG ECRCError:1; - ULONG UnsupportedRequestError:1; - ULONG Reserved3:11; - } DUMMYSTRUCTNAME; - ULONG AsULONG; -} PCI_EXPRESS_UNCORRECTABLE_ERROR_SEVERITY, *PPCI_EXPRESS_UNCORRECTABLE_ERROR_SEVERITY; - -typedef union _PCI_EXPRESS_CORRECTABLE_ERROR_STATUS { - struct { - ULONG ReceiverError:1; - ULONG Reserved1:5; - ULONG BadTLP:1; - ULONG BadDLLP:1; - ULONG ReplayNumRollover:1; - ULONG Reserved2:3; - ULONG ReplayTimerTimeout:1; - ULONG AdvisoryNonFatalError:1; - ULONG Reserved3:18; - } DUMMYSTRUCTNAME; - ULONG AsULONG; -} PCI_EXPRESS_CORRECTABLE_ERROR_STATUS, *PPCI_CORRECTABLE_ERROR_STATUS; - -typedef union _PCI_EXPRESS_CORRECTABLE_ERROR_MASK { - struct { - ULONG ReceiverError:1; - ULONG Reserved1:5; - ULONG BadTLP:1; - ULONG BadDLLP:1; - ULONG ReplayNumRollover:1; - ULONG Reserved2:3; - ULONG ReplayTimerTimeout:1; - ULONG AdvisoryNonFatalError:1; - ULONG Reserved3:18; - } DUMMYSTRUCTNAME; - ULONG AsULONG; -} PCI_EXPRESS_CORRECTABLE_ERROR_MASK, *PPCI_CORRECTABLE_ERROR_MASK; - -typedef union _PCI_EXPRESS_AER_CAPABILITIES { - struct { - ULONG FirstErrorPointer:5; - ULONG ECRCGenerationCapable:1; - ULONG ECRCGenerationEnable:1; - ULONG ECRCCheckCapable:1; - ULONG ECRCCheckEnable:1; - ULONG Reserved:23; - } DUMMYSTRUCTNAME; - ULONG AsULONG; -} PCI_EXPRESS_AER_CAPABILITIES, *PPCI_EXPRESS_AER_CAPABILITIES; - -typedef union _PCI_EXPRESS_ROOT_ERROR_COMMAND { - struct { - ULONG CorrectableErrorReportingEnable:1; - ULONG NonFatalErrorReportingEnable:1; - ULONG FatalErrorReportingEnable:1; - ULONG Reserved:29; - } DUMMYSTRUCTNAME; - ULONG AsULONG; -} PCI_EXPRESS_ROOT_ERROR_COMMAND, *PPCI_EXPRESS_ROOT_ERROR_COMMAND; - -typedef union _PCI_EXPRESS_ROOT_ERROR_STATUS { - struct { - ULONG CorrectableErrorReceived:1; - ULONG MultipleCorrectableErrorsReceived:1; - ULONG UncorrectableErrorReceived:1; - ULONG MultipleUncorrectableErrorsReceived:1; - ULONG FirstUncorrectableFatal:1; - ULONG NonFatalErrorMessagesReceived:1; - ULONG FatalErrorMessagesReceived:1; - ULONG Reserved:20; - ULONG AdvancedErrorInterruptMessageNumber:5; - } DUMMYSTRUCTNAME; - ULONG AsULONG; -} PCI_EXPRESS_ROOT_ERROR_STATUS, *PPCI_EXPRESS_ROOT_ERROR_STATUS; - -typedef union _PCI_EXPRESS_ERROR_SOURCE_ID { - struct { - USHORT CorrectableSourceIdFun:3; - USHORT CorrectableSourceIdDev:5; - USHORT CorrectableSourceIdBus:8; - USHORT UncorrectableSourceIdFun:3; - USHORT UncorrectableSourceIdDev:5; - USHORT UncorrectableSourceIdBus:8; - } DUMMYSTRUCTNAME; - ULONG AsULONG; -} PCI_EXPRESS_ERROR_SOURCE_ID, *PPCI_EXPRESS_ERROR_SOURCE_ID; - -typedef union _PCI_EXPRESS_SEC_UNCORRECTABLE_ERROR_STATUS { - struct { - ULONG TargetAbortOnSplitCompletion:1; - ULONG MasterAbortOnSplitCompletion:1; - ULONG ReceivedTargetAbort:1; - ULONG ReceivedMasterAbort:1; - ULONG RsvdZ:1; - ULONG UnexpectedSplitCompletionError:1; - ULONG UncorrectableSplitCompletion:1; - ULONG UncorrectableDataError:1; - ULONG UncorrectableAttributeError:1; - ULONG UncorrectableAddressError:1; - ULONG DelayedTransactionDiscardTimerExpired:1; - ULONG PERRAsserted:1; - ULONG SERRAsserted:1; - ULONG InternalBridgeError:1; - ULONG Reserved:18; - } DUMMYSTRUCTNAME; - ULONG AsULONG; -} PCI_EXPRESS_SEC_UNCORRECTABLE_ERROR_STATUS, *PPCI_EXPRESS_SEC_UNCORRECTABLE_ERROR_STATUS; - -typedef union _PCI_EXPRESS_SEC_UNCORRECTABLE_ERROR_MASK { - struct { - ULONG TargetAbortOnSplitCompletion:1; - ULONG MasterAbortOnSplitCompletion:1; - ULONG ReceivedTargetAbort:1; - ULONG ReceivedMasterAbort:1; - ULONG RsvdZ:1; - ULONG UnexpectedSplitCompletionError:1; - ULONG UncorrectableSplitCompletion:1; - ULONG UncorrectableDataError:1; - ULONG UncorrectableAttributeError:1; - ULONG UncorrectableAddressError:1; - ULONG DelayedTransactionDiscardTimerExpired:1; - ULONG PERRAsserted:1; - ULONG SERRAsserted:1; - ULONG InternalBridgeError:1; - ULONG Reserved:18; - } DUMMYSTRUCTNAME; - ULONG AsULONG; -} PCI_EXPRESS_SEC_UNCORRECTABLE_ERROR_MASK, *PPCI_EXPRESS_SEC_UNCORRECTABLE_ERROR_MASK; - -typedef union _PCI_EXPRESS_SEC_UNCORRECTABLE_ERROR_SEVERITY { - struct { - ULONG TargetAbortOnSplitCompletion:1; - ULONG MasterAbortOnSplitCompletion:1; - ULONG ReceivedTargetAbort:1; - ULONG ReceivedMasterAbort:1; - ULONG RsvdZ:1; - ULONG UnexpectedSplitCompletionError:1; - ULONG UncorrectableSplitCompletion:1; - ULONG UncorrectableDataError:1; - ULONG UncorrectableAttributeError:1; - ULONG UncorrectableAddressError:1; - ULONG DelayedTransactionDiscardTimerExpired:1; - ULONG PERRAsserted:1; - ULONG SERRAsserted:1; - ULONG InternalBridgeError:1; - ULONG Reserved:18; - } DUMMYSTRUCTNAME; - ULONG AsULONG; -} PCI_EXPRESS_SEC_UNCORRECTABLE_ERROR_SEVERITY, *PPCI_EXPRESS_SEC_UNCORRECTABLE_ERROR_SEVERITY; - -typedef union _PCI_EXPRESS_SEC_AER_CAPABILITIES { - struct { - ULONG SecondaryUncorrectableFirstErrorPtr:5; - ULONG Reserved:27; - } DUMMYSTRUCTNAME; - ULONG AsULONG; -} PCI_EXPRESS_SEC_AER_CAPABILITIES, *PPCI_EXPRESS_SEC_AER_CAPABILITIES; - -#define ROOT_CMD_ENABLE_CORRECTABLE_ERROR_REPORTING 0x00000001 -#define ROOT_CMD_ENABLE_NONFATAL_ERROR_REPORTING 0x00000002 -#define ROOT_CMD_ENABLE_FATAL_ERROR_REPORTING 0x00000004 - -#define ROOT_CMD_ERROR_REPORTING_ENABLE_MASK \ - (ROOT_CMD_ENABLE_FATAL_ERROR_REPORTING | \ - ROOT_CMD_ENABLE_NONFATAL_ERROR_REPORTING | \ - ROOT_CMD_ENABLE_CORRECTABLE_ERROR_REPORTING) - -typedef struct _PCI_EXPRESS_AER_CAPABILITY { - PCI_EXPRESS_ENHANCED_CAPABILITY_HEADER Header; - PCI_EXPRESS_UNCORRECTABLE_ERROR_STATUS UncorrectableErrorStatus; - PCI_EXPRESS_UNCORRECTABLE_ERROR_MASK UncorrectableErrorMask; - PCI_EXPRESS_UNCORRECTABLE_ERROR_SEVERITY UncorrectableErrorSeverity; - PCI_EXPRESS_CORRECTABLE_ERROR_STATUS CorrectableErrorStatus; - PCI_EXPRESS_CORRECTABLE_ERROR_MASK CorrectableErrorMask; - PCI_EXPRESS_AER_CAPABILITIES CapabilitiesAndControl; - ULONG HeaderLog[4]; - PCI_EXPRESS_SEC_UNCORRECTABLE_ERROR_STATUS SecUncorrectableErrorStatus; - PCI_EXPRESS_SEC_UNCORRECTABLE_ERROR_MASK SecUncorrectableErrorMask; - PCI_EXPRESS_SEC_UNCORRECTABLE_ERROR_SEVERITY SecUncorrectableErrorSeverity; - PCI_EXPRESS_SEC_AER_CAPABILITIES SecCapabilitiesAndControl; - ULONG SecHeaderLog[4]; -} PCI_EXPRESS_AER_CAPABILITY, *PPCI_EXPRESS_AER_CAPABILITY; - -typedef struct _PCI_EXPRESS_ROOTPORT_AER_CAPABILITY { - PCI_EXPRESS_ENHANCED_CAPABILITY_HEADER Header; - PCI_EXPRESS_UNCORRECTABLE_ERROR_STATUS UncorrectableErrorStatus; - PCI_EXPRESS_UNCORRECTABLE_ERROR_MASK UncorrectableErrorMask; - PCI_EXPRESS_UNCORRECTABLE_ERROR_SEVERITY UncorrectableErrorSeverity; - PCI_EXPRESS_CORRECTABLE_ERROR_STATUS CorrectableErrorStatus; - PCI_EXPRESS_CORRECTABLE_ERROR_MASK CorrectableErrorMask; - PCI_EXPRESS_AER_CAPABILITIES CapabilitiesAndControl; - ULONG HeaderLog[4]; - PCI_EXPRESS_ROOT_ERROR_COMMAND RootErrorCommand; - PCI_EXPRESS_ROOT_ERROR_STATUS RootErrorStatus; - PCI_EXPRESS_ERROR_SOURCE_ID ErrorSourceId; -} PCI_EXPRESS_ROOTPORT_AER_CAPABILITY, *PPCI_EXPRESS_ROOTPORT_AER_CAPABILITY; - -typedef struct _PCI_EXPRESS_BRIDGE_AER_CAPABILITY { - PCI_EXPRESS_ENHANCED_CAPABILITY_HEADER Header; - PCI_EXPRESS_UNCORRECTABLE_ERROR_STATUS UncorrectableErrorStatus; - PCI_EXPRESS_UNCORRECTABLE_ERROR_MASK UncorrectableErrorMask; - PCI_EXPRESS_UNCORRECTABLE_ERROR_SEVERITY UncorrectableErrorSeverity; - PCI_EXPRESS_CORRECTABLE_ERROR_STATUS CorrectableErrorStatus; - PCI_EXPRESS_CORRECTABLE_ERROR_MASK CorrectableErrorMask; - PCI_EXPRESS_AER_CAPABILITIES CapabilitiesAndControl; - ULONG HeaderLog[4]; - PCI_EXPRESS_SEC_UNCORRECTABLE_ERROR_STATUS SecUncorrectableErrorStatus; - PCI_EXPRESS_SEC_UNCORRECTABLE_ERROR_MASK SecUncorrectableErrorMask; - PCI_EXPRESS_SEC_UNCORRECTABLE_ERROR_SEVERITY SecUncorrectableErrorSeverity; - PCI_EXPRESS_SEC_AER_CAPABILITIES SecCapabilitiesAndControl; - ULONG SecHeaderLog[4]; -} PCI_EXPRESS_BRIDGE_AER_CAPABILITY, *PPCI_EXPRESS_BRIDGE_AER_CAPABILITY; - -typedef union _PCI_EXPRESS_SRIOV_CAPS { - struct { - ULONG VFMigrationCapable:1; - ULONG Reserved1:20; - ULONG VFMigrationInterruptNumber:11; - } DUMMYSTRUCTNAME; - ULONG AsULONG; -} PCI_EXPRESS_SRIOV_CAPS, *PPCI_EXPRESS_SRIOV_CAPS; - -typedef union _PCI_EXPRESS_SRIOV_CONTROL { - struct { - USHORT VFEnable:1; - USHORT VFMigrationEnable:1; - USHORT VFMigrationInterruptEnable:1; - USHORT VFMemorySpaceEnable:1; - USHORT ARICapableHierarchy:1; - USHORT Reserved1:11; - } DUMMYSTRUCTNAME; - USHORT AsUSHORT; -} PCI_EXPRESS_SRIOV_CONTROL, *PPCI_EXPRESS_SRIOV_CONTROL; - -typedef union _PCI_EXPRESS_SRIOV_STATUS { - struct { - USHORT VFMigrationStatus:1; - USHORT Reserved1:15; - } DUMMYSTRUCTNAME; - USHORT AsUSHORT; -} PCI_EXPRESS_SRIOV_STATUS, *PPCI_EXPRESS_SRIOV_STATUS; - -typedef union _PCI_EXPRESS_SRIOV_MIGRATION_STATE_ARRAY { - struct { - ULONG VFMigrationStateBIR:3; - ULONG VFMigrationStateOffset:29; - } DUMMYSTRUCTNAME; - ULONG AsULONG; -} PCI_EXPRESS_SRIOV_MIGRATION_STATE_ARRAY, *PPCI_EXPRESS_SRIOV_MIGRATION_STATE_ARRAY; - -typedef struct _PCI_EXPRESS_SRIOV_CAPABILITY { - PCI_EXPRESS_ENHANCED_CAPABILITY_HEADER Header; - PCI_EXPRESS_SRIOV_CAPS SRIOVCapabilities; - PCI_EXPRESS_SRIOV_CONTROL SRIOVControl; - PCI_EXPRESS_SRIOV_STATUS SRIOVStatus; - USHORT InitialVFs; - USHORT TotalVFs; - USHORT NumVFs; - UCHAR FunctionDependencyLink; - UCHAR RsvdP1; - USHORT FirstVFOffset; - USHORT VFStride; - USHORT RsvdP2; - USHORT VFDeviceId; - ULONG SupportedPageSizes; - ULONG SystemPageSize; - ULONG BaseAddresses[PCI_TYPE0_ADDRESSES]; - PCI_EXPRESS_SRIOV_MIGRATION_STATE_ARRAY VFMigrationStateArrayOffset; -} PCI_EXPRESS_SRIOV_CAPABILITY, *PPCI_EXPRESS_SRIOV_CAPABILITY; +#ifdef _X86_ +/** Kernel definitions for x86 **/ -/* PCI device classes */ -#define PCI_CLASS_PRE_20 0x00 -#define PCI_CLASS_MASS_STORAGE_CTLR 0x01 -#define PCI_CLASS_NETWORK_CTLR 0x02 -#define PCI_CLASS_DISPLAY_CTLR 0x03 -#define PCI_CLASS_MULTIMEDIA_DEV 0x04 -#define PCI_CLASS_MEMORY_CTLR 0x05 -#define PCI_CLASS_BRIDGE_DEV 0x06 -#define PCI_CLASS_SIMPLE_COMMS_CTLR 0x07 -#define PCI_CLASS_BASE_SYSTEM_DEV 0x08 -#define PCI_CLASS_INPUT_DEV 0x09 -#define PCI_CLASS_DOCKING_STATION 0x0a -#define PCI_CLASS_PROCESSOR 0x0b -#define PCI_CLASS_SERIAL_BUS_CTLR 0x0c -#define PCI_CLASS_WIRELESS_CTLR 0x0d -#define PCI_CLASS_INTELLIGENT_IO_CTLR 0x0e -#define PCI_CLASS_SATELLITE_COMMS_CTLR 0x0f -#define PCI_CLASS_ENCRYPTION_DECRYPTION 0x10 -#define PCI_CLASS_DATA_ACQ_SIGNAL_PROC 0x11 -#define PCI_CLASS_NOT_DEFINED 0xff +/* Interrupt request levels */ +#define PASSIVE_LEVEL 0 +#define LOW_LEVEL 0 +#define APC_LEVEL 1 +#define DISPATCH_LEVEL 2 +#define CMCI_LEVEL 5 +#define PROFILE_LEVEL 27 +#define CLOCK1_LEVEL 28 +#define CLOCK2_LEVEL 28 +#define IPI_LEVEL 29 +#define POWER_LEVEL 30 +#define HIGH_LEVEL 31 +#define CLOCK_LEVEL (CLOCK2_LEVEL) -/* PCI device subclasses for class 0 */ -#define PCI_SUBCLASS_PRE_20_NON_VGA 0x00 -#define PCI_SUBCLASS_PRE_20_VGA 0x01 +#define KIP0PCRADDRESS 0xffdff000 +#define KI_USER_SHARED_DATA 0xffdf0000 +#define SharedUserData ((KUSER_SHARED_DATA * CONST) KI_USER_SHARED_DATA) -/* PCI device subclasses for class 1 (mass storage controllers)*/ -#define PCI_SUBCLASS_MSC_SCSI_BUS_CTLR 0x00 -#define PCI_SUBCLASS_MSC_IDE_CTLR 0x01 -#define PCI_SUBCLASS_MSC_FLOPPY_CTLR 0x02 -#define PCI_SUBCLASS_MSC_IPI_CTLR 0x03 -#define PCI_SUBCLASS_MSC_RAID_CTLR 0x04 -#define PCI_SUBCLASS_MSC_OTHER 0x80 +#define PAGE_SIZE 0x1000 +#define PAGE_SHIFT 12L +#define KeGetDcacheFillSize() 1L -/* PCI device subclasses for class 2 (network controllers)*/ -#define PCI_SUBCLASS_NET_ETHERNET_CTLR 0x00 -#define PCI_SUBCLASS_NET_TOKEN_RING_CTLR 0x01 -#define PCI_SUBCLASS_NET_FDDI_CTLR 0x02 -#define PCI_SUBCLASS_NET_ATM_CTLR 0x03 -#define PCI_SUBCLASS_NET_ISDN_CTLR 0x04 -#define PCI_SUBCLASS_NET_OTHER 0x80 +#define EFLAG_SIGN 0x8000 +#define EFLAG_ZERO 0x4000 +#define EFLAG_SELECT (EFLAG_SIGN | EFLAG_ZERO) -/* PCI device subclasses for class 3 (display controllers)*/ -#define PCI_SUBCLASS_VID_VGA_CTLR 0x00 -#define PCI_SUBCLASS_VID_XGA_CTLR 0x01 -#define PCI_SUBCLASS_VID_3D_CTLR 0x02 -#define PCI_SUBCLASS_VID_OTHER 0x80 +#define RESULT_NEGATIVE ((EFLAG_SIGN & ~EFLAG_ZERO) & EFLAG_SELECT) +#define RESULT_ZERO ((~EFLAG_SIGN & EFLAG_ZERO) & EFLAG_SELECT) +#define RESULT_POSITIVE ((~EFLAG_SIGN & ~EFLAG_ZERO) & EFLAG_SELECT) -/* PCI device subclasses for class 4 (multimedia device)*/ -#define PCI_SUBCLASS_MM_VIDEO_DEV 0x00 -#define PCI_SUBCLASS_MM_AUDIO_DEV 0x01 -#define PCI_SUBCLASS_MM_TELEPHONY_DEV 0x02 -#define PCI_SUBCLASS_MM_OTHER 0x80 -/* PCI device subclasses for class 5 (memory controller)*/ -#define PCI_SUBCLASS_MEM_RAM 0x00 -#define PCI_SUBCLASS_MEM_FLASH 0x01 -#define PCI_SUBCLASS_MEM_OTHER 0x80 +typedef struct _KFLOATING_SAVE { + ULONG ControlWord; + ULONG StatusWord; + ULONG ErrorOffset; + ULONG ErrorSelector; + ULONG DataOffset; + ULONG DataSelector; + ULONG Cr0NpxState; + ULONG Spare1; +} KFLOATING_SAVE, *PKFLOATING_SAVE; -/* PCI device subclasses for class 6 (bridge device)*/ -#define PCI_SUBCLASS_BR_HOST 0x00 -#define PCI_SUBCLASS_BR_ISA 0x01 -#define PCI_SUBCLASS_BR_EISA 0x02 -#define PCI_SUBCLASS_BR_MCA 0x03 -#define PCI_SUBCLASS_BR_PCI_TO_PCI 0x04 -#define PCI_SUBCLASS_BR_PCMCIA 0x05 -#define PCI_SUBCLASS_BR_NUBUS 0x06 -#define PCI_SUBCLASS_BR_CARDBUS 0x07 -#define PCI_SUBCLASS_BR_RACEWAY 0x08 -#define PCI_SUBCLASS_BR_OTHER 0x80 +extern NTKERNELAPI volatile KSYSTEM_TIME KeTickCount; -#define PCI_SUBCLASS_COM_SERIAL 0x00 -#define PCI_SUBCLASS_COM_PARALLEL 0x01 -#define PCI_SUBCLASS_COM_MULTIPORT 0x02 -#define PCI_SUBCLASS_COM_MODEM 0x03 -#define PCI_SUBCLASS_COM_OTHER 0x80 - -#define PCI_SUBCLASS_SYS_INTERRUPT_CTLR 0x00 -#define PCI_SUBCLASS_SYS_DMA_CTLR 0x01 -#define PCI_SUBCLASS_SYS_SYSTEM_TIMER 0x02 -#define PCI_SUBCLASS_SYS_REAL_TIME_CLOCK 0x03 -#define PCI_SUBCLASS_SYS_GEN_HOTPLUG_CTLR 0x04 -#define PCI_SUBCLASS_SYS_SDIO_CTRL 0x05 -#define PCI_SUBCLASS_SYS_OTHER 0x80 - -#define PCI_SUBCLASS_INP_KEYBOARD 0x00 -#define PCI_SUBCLASS_INP_DIGITIZER 0x01 -#define PCI_SUBCLASS_INP_MOUSE 0x02 -#define PCI_SUBCLASS_INP_SCANNER 0x03 -#define PCI_SUBCLASS_INP_GAMEPORT 0x04 -#define PCI_SUBCLASS_INP_OTHER 0x80 - -#define PCI_SUBCLASS_DOC_GENERIC 0x00 -#define PCI_SUBCLASS_DOC_OTHER 0x80 - -#define PCI_SUBCLASS_PROC_386 0x00 -#define PCI_SUBCLASS_PROC_486 0x01 -#define PCI_SUBCLASS_PROC_PENTIUM 0x02 -#define PCI_SUBCLASS_PROC_ALPHA 0x10 -#define PCI_SUBCLASS_PROC_POWERPC 0x20 -#define PCI_SUBCLASS_PROC_COPROCESSOR 0x40 +#define YieldProcessor _mm_pause -/* PCI device subclasses for class C (serial bus controller)*/ -#define PCI_SUBCLASS_SB_IEEE1394 0x00 -#define PCI_SUBCLASS_SB_ACCESS 0x01 -#define PCI_SUBCLASS_SB_SSA 0x02 -#define PCI_SUBCLASS_SB_USB 0x03 -#define PCI_SUBCLASS_SB_FIBRE_CHANNEL 0x04 -#define PCI_SUBCLASS_SB_SMBUS 0x05 +FORCEINLINE +VOID +KeMemoryBarrier( + VOID) +{ + volatile LONG Barrier; +#if defined(__GNUC__) + __asm__ __volatile__ ("xchg %%eax, %0" : : "m" (Barrier) : "%eax"); +#elif defined(_MSC_VER) + __asm xchg [Barrier], eax +#endif +} -#define PCI_SUBCLASS_WIRELESS_IRDA 0x00 -#define PCI_SUBCLASS_WIRELESS_CON_IR 0x01 -#define PCI_SUBCLASS_WIRELESS_RF 0x10 -#define PCI_SUBCLASS_WIRELESS_OTHER 0x80 +NTHALAPI +VOID +FASTCALL +KfLowerIrql( + IN KIRQL NewIrql); +#define KeLowerIrql(a) KfLowerIrql(a) -#define PCI_SUBCLASS_INTIO_I2O 0x00 +NTHALAPI +KIRQL +FASTCALL +KfRaiseIrql( + IN KIRQL NewIrql); +#define KeRaiseIrql(a,b) *(b) = KfRaiseIrql(a) -#define PCI_SUBCLASS_SAT_TV 0x01 -#define PCI_SUBCLASS_SAT_AUDIO 0x02 -#define PCI_SUBCLASS_SAT_VOICE 0x03 -#define PCI_SUBCLASS_SAT_DATA 0x04 +NTHALAPI +KIRQL +DDKAPI +KeRaiseIrqlToDpcLevel( + VOID); -#define PCI_SUBCLASS_CRYPTO_NET_COMP 0x00 -#define PCI_SUBCLASS_CRYPTO_ENTERTAINMENT 0x10 -#define PCI_SUBCLASS_CRYPTO_OTHER 0x80 +NTHALAPI +KIRQL +DDKAPI +KeRaiseIrqlToSynchLevel( + VOID); -#define PCI_SUBCLASS_DASP_DPIO 0x00 -#define PCI_SUBCLASS_DASP_OTHER 0x80 +NTHALAPI +KIRQL +FASTCALL +KfAcquireSpinLock( + IN PKSPIN_LOCK SpinLock); +#define KeAcquireSpinLock(a,b) *(b) = KfAcquireSpinLock(a) -#define PCI_ADDRESS_IO_SPACE 0x00000001 -#define PCI_ADDRESS_MEMORY_TYPE_MASK 0x00000006 -#define PCI_ADDRESS_MEMORY_PREFETCHABLE 0x00000008 -#define PCI_ADDRESS_IO_ADDRESS_MASK 0xfffffffc -#define PCI_ADDRESS_MEMORY_ADDRESS_MASK 0xfffffff0 -#define PCI_ADDRESS_ROM_ADDRESS_MASK 0xfffff800 +NTHALAPI +VOID +FASTCALL +KfReleaseSpinLock( + IN PKSPIN_LOCK SpinLock, + IN KIRQL NewIrql); +#define KeReleaseSpinLock(a,b) KfReleaseSpinLock(a,b) -#define PCI_TYPE_32BIT 0 -#define PCI_TYPE_20BIT 2 -#define PCI_TYPE_64BIT 4 +NTKERNELAPI +VOID +FASTCALL +KefAcquireSpinLockAtDpcLevel( + IN PKSPIN_LOCK SpinLock); +#define KeAcquireSpinLockAtDpcLevel(SpinLock) KefAcquireSpinLockAtDpcLevel(SpinLock) -#define PCI_ROMADDRESS_ENABLED 0x00000001 +NTKERNELAPI +VOID +FASTCALL +KefReleaseSpinLockFromDpcLevel( + IN PKSPIN_LOCK SpinLock); +#define KeReleaseSpinLockFromDpcLevel(SpinLock) KefReleaseSpinLockFromDpcLevel(SpinLock) -#endif /* _PCI_X_ */ +NTSYSAPI +PKTHREAD +NTAPI +KeGetCurrentThread( + VOID); -#define PCI_EXPRESS_LINK_QUIESCENT_INTERFACE_VERSION 1 +NTKERNELAPI +NTSTATUS +NTAPI +KeSaveFloatingPointState( + OUT PKFLOATING_SAVE FloatSave); -typedef NTSTATUS -(NTAPI PCI_EXPRESS_ENTER_LINK_QUIESCENT_MODE)( - IN OUT PVOID Context); -typedef PCI_EXPRESS_ENTER_LINK_QUIESCENT_MODE *PPCI_EXPRESS_ENTER_LINK_QUIESCENT_MODE; +NTKERNELAPI +NTSTATUS +NTAPI +KeRestoreFloatingPointState( + IN PKFLOATING_SAVE FloatSave); -typedef NTSTATUS -(NTAPI PCI_EXPRESS_EXIT_LINK_QUIESCENT_MODE)( - IN OUT PVOID Context); -typedef PCI_EXPRESS_EXIT_LINK_QUIESCENT_MODE *PPCI_EXPRESS_EXIT_LINK_QUIESCENT_MODE; +/* VOID + * KeFlushIoBuffers( + * IN PMDL Mdl, + * IN BOOLEAN ReadOperation, + * IN BOOLEAN DmaOperation) + */ +#define KeFlushIoBuffers(_Mdl, _ReadOperation, _DmaOperation) -typedef struct _PCI_EXPRESS_LINK_QUIESCENT_INTERFACE { - USHORT Size; - USHORT Version; - PVOID Context; - PINTERFACE_REFERENCE InterfaceReference; - PINTERFACE_DEREFERENCE InterfaceDereference; - PPCI_EXPRESS_ENTER_LINK_QUIESCENT_MODE PciExpressEnterLinkQuiescentMode; - PPCI_EXPRESS_EXIT_LINK_QUIESCENT_MODE PciExpressExitLinkQuiescentMode; -} PCI_EXPRESS_LINK_QUIESCENT_INTERFACE, *PPCI_EXPRESS_LINK_QUIESCENT_INTERFACE; +/* x86 and x64 performs a 0x2C interrupt */ +#define DbgRaiseAssertionFailure __int2c -#define PCI_EXPRESS_ROOT_PORT_INTERFACE_VERSION 1 +FORCEINLINE +VOID +_KeQueryTickCount( + OUT PLARGE_INTEGER CurrentCount) +{ + for (;;) + { + CurrentCount->HighPart = KeTickCount.High1Time; + CurrentCount->LowPart = KeTickCount.LowPart; + if (CurrentCount->HighPart == KeTickCount.High2Time) break; + YieldProcessor(); + } +} +#define KeQueryTickCount(CurrentCount) _KeQueryTickCount(CurrentCount) -typedef ULONG -(NTAPI *PPCI_EXPRESS_ROOT_PORT_READ_CONFIG_SPACE)( - IN PVOID Context, - OUT PVOID Buffer, - IN ULONG Offset, - IN ULONG Length); +#endif /* _X86_ */ -typedef ULONG -(NTAPI *PPCI_EXPRESS_ROOT_PORT_WRITE_CONFIG_SPACE)( - IN PVOID Context, - IN PVOID Buffer, - IN ULONG Offset, - IN ULONG Length); -typedef struct _PCI_EXPRESS_ROOT_PORT_INTERFACE { - USHORT Size; - USHORT Version; - PVOID Context; - PINTERFACE_REFERENCE InterfaceReference; - PINTERFACE_DEREFERENCE InterfaceDereference; - PPCI_EXPRESS_ROOT_PORT_READ_CONFIG_SPACE ReadConfigSpace; - PPCI_EXPRESS_ROOT_PORT_WRITE_CONFIG_SPACE WriteConfigSpace; -} PCI_EXPRESS_ROOT_PORT_INTERFACE, *PPCI_EXPRESS_ROOT_PORT_INTERFACE; -#define PCI_MSIX_TABLE_CONFIG_INTERFACE_VERSION 1 +/****************************************************************************** + * Runtime Library Functions * + ******************************************************************************/ -typedef NTSTATUS -(NTAPI PCI_MSIX_SET_ENTRY)( - IN PVOID Context, - IN ULONG TableEntry, - IN ULONG MessageNumber); -typedef PCI_MSIX_SET_ENTRY *PPCI_MSIX_SET_ENTRY; +FORCEINLINE +VOID +InitializeListHead( + OUT PLIST_ENTRY ListHead) +{ + ListHead->Flink = ListHead->Blink = ListHead; +} -typedef NTSTATUS -(NTAPI PCI_MSIX_MASKUNMASK_ENTRY)( - IN PVOID Context, - IN ULONG TableEntry); -typedef PCI_MSIX_MASKUNMASK_ENTRY *PPCI_MSIX_MASKUNMASK_ENTRY; - -typedef NTSTATUS -(NTAPI PCI_MSIX_GET_ENTRY)( - IN PVOID Context, - IN ULONG TableEntry, - OUT PULONG MessageNumber, - OUT PBOOLEAN Masked); -typedef PCI_MSIX_GET_ENTRY *PPCI_MSIX_GET_ENTRY; - -typedef NTSTATUS -(NTAPI PCI_MSIX_GET_TABLE_SIZE)( - IN PVOID Context, - OUT PULONG TableSize); -typedef PCI_MSIX_GET_TABLE_SIZE *PPCI_MSIX_GET_TABLE_SIZE; +FORCEINLINE +VOID +InsertHeadList( + IN OUT PLIST_ENTRY ListHead, + IN OUT PLIST_ENTRY Entry) +{ + PLIST_ENTRY OldFlink; + OldFlink = ListHead->Flink; + Entry->Flink = OldFlink; + Entry->Blink = ListHead; + OldFlink->Blink = Entry; + ListHead->Flink = Entry; +} -typedef struct _PCI_MSIX_TABLE_CONFIG_INTERFACE { - USHORT Size; - USHORT Version; - PVOID Context; - PINTERFACE_REFERENCE InterfaceReference; - PINTERFACE_DEREFERENCE InterfaceDereference; - PPCI_MSIX_SET_ENTRY SetTableEntry; - PPCI_MSIX_MASKUNMASK_ENTRY MaskTableEntry; - PPCI_MSIX_MASKUNMASK_ENTRY UnmaskTableEntry; - PPCI_MSIX_GET_ENTRY GetTableEntry; - PPCI_MSIX_GET_TABLE_SIZE GetTableSize; -} PCI_MSIX_TABLE_CONFIG_INTERFACE, *PPCI_MSIX_TABLE_CONFIG_INTERFACE; - -#define PCI_MSIX_TABLE_CONFIG_MINIMUM_SIZE \ - RTL_SIZEOF_THROUGH_FIELD(PCI_MSIX_TABLE_CONFIG_INTERFACE, UnmaskTableEntry) +FORCEINLINE +VOID +InsertTailList( + IN OUT PLIST_ENTRY ListHead, + IN OUT PLIST_ENTRY Entry) +{ + PLIST_ENTRY OldBlink; + OldBlink = ListHead->Blink; + Entry->Flink = ListHead; + Entry->Blink = OldBlink; + OldBlink->Flink = Entry; + ListHead->Blink = Entry; +} -/****************************************************************************** - * Object Manager Types * - ******************************************************************************/ +BOOLEAN +FORCEINLINE +IsListEmpty( + IN CONST LIST_ENTRY * ListHead) +{ + return (BOOLEAN)(ListHead->Flink == ListHead); +} -#define MAXIMUM_FILENAME_LENGTH 256 -#define OBJ_NAME_PATH_SEPARATOR ((WCHAR)L'\\') +FORCEINLINE +PSINGLE_LIST_ENTRY +PopEntryList( + IN OUT PSINGLE_LIST_ENTRY ListHead) +{ + PSINGLE_LIST_ENTRY FirstEntry; + FirstEntry = ListHead->Next; + if (FirstEntry != NULL) { + ListHead->Next = FirstEntry->Next; + } + return FirstEntry; +} -#define OBJECT_TYPE_CREATE 0x0001 -#define OBJECT_TYPE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0x1) +FORCEINLINE +VOID +PushEntryList( + IN OUT PSINGLE_LIST_ENTRY ListHead, + IN OUT PSINGLE_LIST_ENTRY Entry) +{ + Entry->Next = ListHead->Next; + ListHead->Next = Entry; +} -#define DIRECTORY_QUERY 0x0001 -#define DIRECTORY_TRAVERSE 0x0002 -#define DIRECTORY_CREATE_OBJECT 0x0004 -#define DIRECTORY_CREATE_SUBDIRECTORY 0x0008 -#define DIRECTORY_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0xF) +FORCEINLINE +BOOLEAN +RemoveEntryList( + IN PLIST_ENTRY Entry) +{ + PLIST_ENTRY OldFlink; + PLIST_ENTRY OldBlink; -#define SYMBOLIC_LINK_QUERY 0x0001 -#define SYMBOLIC_LINK_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0x1) + OldFlink = Entry->Flink; + OldBlink = Entry->Blink; + OldFlink->Blink = OldBlink; + OldBlink->Flink = OldFlink; + return (BOOLEAN)(OldFlink == OldBlink); +} -#define DUPLICATE_CLOSE_SOURCE 0x00000001 -#define DUPLICATE_SAME_ACCESS 0x00000002 -#define DUPLICATE_SAME_ATTRIBUTES 0x00000004 +FORCEINLINE +PLIST_ENTRY +RemoveHeadList( + IN OUT PLIST_ENTRY ListHead) +{ + PLIST_ENTRY Flink; + PLIST_ENTRY Entry; -#define OB_FLT_REGISTRATION_VERSION_0100 0x0100 -#define OB_FLT_REGISTRATION_VERSION OB_FLT_REGISTRATION_VERSION_0100 + Entry = ListHead->Flink; + Flink = Entry->Flink; + ListHead->Flink = Flink; + Flink->Blink = ListHead; + return Entry; +} -typedef ULONG OB_OPERATION; +FORCEINLINE +PLIST_ENTRY +RemoveTailList( + IN OUT PLIST_ENTRY ListHead) +{ + PLIST_ENTRY Blink; + PLIST_ENTRY Entry; -#define OB_OPERATION_HANDLE_CREATE 0x00000001 -#define OB_OPERATION_HANDLE_DUPLICATE 0x00000002 + Entry = ListHead->Blink; + Blink = Entry->Blink; + ListHead->Blink = Blink; + Blink->Flink = ListHead; + return Entry; +} -typedef struct _OB_PRE_CREATE_HANDLE_INFORMATION { - IN OUT ACCESS_MASK DesiredAccess; - IN ACCESS_MASK OriginalDesiredAccess; -} OB_PRE_CREATE_HANDLE_INFORMATION, *POB_PRE_CREATE_HANDLE_INFORMATION; +NTSYSAPI +VOID +NTAPI +RtlAssert( + IN PVOID FailedAssertion, + IN PVOID FileName, + IN ULONG LineNumber, + IN PSTR Message); -typedef struct _OB_PRE_DUPLICATE_HANDLE_INFORMATION { - IN OUT ACCESS_MASK DesiredAccess; - IN ACCESS_MASK OriginalDesiredAccess; - IN PVOID SourceProcess; - IN PVOID TargetProcess; -} OB_PRE_DUPLICATE_HANDLE_INFORMATION, *POB_PRE_DUPLICATE_HANDLE_INFORMATION; +/* VOID + * RtlCopyMemory( + * IN VOID UNALIGNED *Destination, + * IN CONST VOID UNALIGNED *Source, + * IN SIZE_T Length) + */ +#define RtlCopyMemory(Destination, Source, Length) \ + memcpy(Destination, Source, Length) -typedef union _OB_PRE_OPERATION_PARAMETERS { - IN OUT OB_PRE_CREATE_HANDLE_INFORMATION CreateHandleInformation; - IN OUT OB_PRE_DUPLICATE_HANDLE_INFORMATION DuplicateHandleInformation; -} OB_PRE_OPERATION_PARAMETERS, *POB_PRE_OPERATION_PARAMETERS; +#define RtlCopyBytes RtlCopyMemory -typedef struct _OB_PRE_OPERATION_INFORMATION { - IN OB_OPERATION Operation; - union { - IN ULONG Flags; - struct { - IN ULONG KernelHandle:1; - IN ULONG Reserved:31; - }; - }; - IN PVOID Object; - IN POBJECT_TYPE ObjectType; - OUT PVOID CallContext; - IN POB_PRE_OPERATION_PARAMETERS Parameters; -} OB_PRE_OPERATION_INFORMATION, *POB_PRE_OPERATION_INFORMATION; - -typedef struct _OB_POST_CREATE_HANDLE_INFORMATION { - IN ACCESS_MASK GrantedAccess; -} OB_POST_CREATE_HANDLE_INFORMATION, *POB_POST_CREATE_HANDLE_INFORMATION; - -typedef struct _OB_POST_DUPLICATE_HANDLE_INFORMATION { - IN ACCESS_MASK GrantedAccess; -} OB_POST_DUPLICATE_HANDLE_INFORMATION, *POB_POST_DUPLICATE_HANDLE_INFORMATION; - -typedef union _OB_POST_OPERATION_PARAMETERS { - IN OB_POST_CREATE_HANDLE_INFORMATION CreateHandleInformation; - IN OB_POST_DUPLICATE_HANDLE_INFORMATION DuplicateHandleInformation; -} OB_POST_OPERATION_PARAMETERS, *POB_POST_OPERATION_PARAMETERS; - -typedef struct _OB_POST_OPERATION_INFORMATION { - IN OB_OPERATION Operation; - union { - IN ULONG Flags; - struct { - IN ULONG KernelHandle:1; - IN ULONG Reserved:31; - }; - }; - IN PVOID Object; - IN POBJECT_TYPE ObjectType; - IN PVOID CallContext; - IN NTSTATUS ReturnStatus; - IN POB_POST_OPERATION_PARAMETERS Parameters; -} OB_POST_OPERATION_INFORMATION,*POB_POST_OPERATION_INFORMATION; - -typedef enum _OB_PREOP_CALLBACK_STATUS { - OB_PREOP_SUCCESS -} OB_PREOP_CALLBACK_STATUS, *POB_PREOP_CALLBACK_STATUS; - -typedef OB_PREOP_CALLBACK_STATUS -(NTAPI *POB_PRE_OPERATION_CALLBACK)( - IN PVOID RegistrationContext, - IN OUT POB_PRE_OPERATION_INFORMATION OperationInformation); +#if defined(_M_AMD64) +NTSYSAPI +VOID +NTAPI +RtlCopyMemoryNonTemporal( + VOID UNALIGNED *Destination, + CONST VOID UNALIGNED *Source, + SIZE_T Length); +#else +#define RtlCopyMemoryNonTemporal RtlCopyMemory +#endif -typedef VOID -(NTAPI *POB_POST_OPERATION_CALLBACK)( - IN PVOID RegistrationContext, - IN POB_POST_OPERATION_INFORMATION OperationInformation); - -typedef struct _OB_OPERATION_REGISTRATION { - IN POBJECT_TYPE *ObjectType; - IN OB_OPERATION Operations; - IN POB_PRE_OPERATION_CALLBACK PreOperation; - IN POB_POST_OPERATION_CALLBACK PostOperation; -} OB_OPERATION_REGISTRATION, *POB_OPERATION_REGISTRATION; - -typedef struct _OB_CALLBACK_REGISTRATION { - IN USHORT Version; - IN USHORT OperationRegistrationCount; - IN UNICODE_STRING Altitude; - IN PVOID RegistrationContext; - IN OB_OPERATION_REGISTRATION *OperationRegistration; -} OB_CALLBACK_REGISTRATION, *POB_CALLBACK_REGISTRATION; +/* BOOLEAN + * RtlEqualLuid( + * IN PLUID Luid1, + * IN PLUID Luid2) + */ +#define RtlEqualLuid(Luid1, Luid2) \ + (((Luid1)->LowPart == (Luid2)->LowPart) && ((Luid1)->HighPart == (Luid2)->HighPart)) -typedef struct _OBJECT_NAME_INFORMATION { - UNICODE_STRING Name; -} OBJECT_NAME_INFORMATION, *POBJECT_NAME_INFORMATION; +/* ULONG + * RtlEqualMemory( + * IN VOID UNALIGNED *Destination, + * IN CONST VOID UNALIGNED *Source, + * IN SIZE_T Length) + */ +#define RtlEqualMemory(Destination, Source, Length) \ + (!memcmp(Destination, Source, Length)) -/* Exported object types */ -extern POBJECT_TYPE NTSYSAPI CmKeyObjectType; -extern POBJECT_TYPE NTSYSAPI ExEventObjectType; -extern POBJECT_TYPE NTSYSAPI ExSemaphoreObjectType; -extern POBJECT_TYPE NTSYSAPI IoFileObjectType; -extern POBJECT_TYPE NTSYSAPI PsThreadType; -extern POBJECT_TYPE NTSYSAPI SeTokenObjectType; -extern POBJECT_TYPE NTSYSAPI PsProcessType; +/* VOID + * RtlFillMemory( + * IN VOID UNALIGNED *Destination, + * IN SIZE_T Length, + * IN UCHAR Fill) + */ +#define RtlFillMemory(Destination, Length, Fill) \ + memset(Destination, Fill, Length) +#define RtlFillBytes RtlFillMemory -/****************************************************************************** - * Process Manager Types * - ******************************************************************************/ +NTSYSAPI +VOID +NTAPI +RtlFreeUnicodeString( + IN OUT PUNICODE_STRING UnicodeString); -#define QUOTA_LIMITS_HARDWS_MIN_ENABLE 0x00000001 -#define QUOTA_LIMITS_HARDWS_MIN_DISABLE 0x00000002 -#define QUOTA_LIMITS_HARDWS_MAX_ENABLE 0x00000004 -#define QUOTA_LIMITS_HARDWS_MAX_DISABLE 0x00000008 -#define QUOTA_LIMITS_USE_DEFAULT_LIMITS 0x00000010 +NTSYSAPI +NTSTATUS +NTAPI +RtlGUIDFromString( + IN PUNICODE_STRING GuidString, + OUT GUID *Guid); -/* Thread Access Rights */ -#define THREAD_TERMINATE 0x0001 -#define THREAD_SUSPEND_RESUME 0x0002 -#define THREAD_ALERT 0x0004 -#define THREAD_GET_CONTEXT 0x0008 -#define THREAD_SET_CONTEXT 0x0010 -#define THREAD_SET_INFORMATION 0x0020 -#define THREAD_SET_LIMITED_INFORMATION 0x0400 -#define THREAD_QUERY_LIMITED_INFORMATION 0x0800 +NTSYSAPI +VOID +NTAPI +RtlInitUnicodeString( + IN OUT PUNICODE_STRING DestinationString, + IN PCWSTR SourceString OPTIONAL); -#define PROCESS_DUP_HANDLE (0x0040) +/* VOID + * RtlMoveMemory( + * IN VOID UNALIGNED *Destination, + * IN CONST VOID UNALIGNED *Source, + * IN SIZE_T Length) + */ +#define RtlMoveMemory(Destination, Source, Length) \ + memmove(Destination, Source, Length) -#if (NTDDI_VERSION >= NTDDI_VISTA) -#define PROCESS_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0xFFFF) -#else -#define PROCESS_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0xFFF) -#endif +NTSYSAPI +NTSTATUS +NTAPI +RtlStringFromGUID( + IN REFGUID Guid, + OUT PUNICODE_STRING GuidString); -#if (NTDDI_VERSION >= NTDDI_VISTA) -#define THREAD_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0xFFFF) -#else -#define THREAD_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x3FF) -#endif +/* VOID + * RtlZeroMemory( + * IN VOID UNALIGNED *Destination, + * IN SIZE_T Length) + */ +#define RtlZeroMemory(Destination, Length) \ + memset(Destination, 0, Length) -#define LOW_PRIORITY 0 -#define LOW_REALTIME_PRIORITY 16 -#define HIGH_PRIORITY 31 -#define MAXIMUM_PRIORITY 32 +#define RtlZeroBytes RtlZeroMemory -/****************************************************************************** - * WMI Library Support Types * - ******************************************************************************/ +#if (NTDDI_VERSION >= NTDDI_WIN2K) +NTSYSAPI +BOOLEAN +NTAPI +RtlAreBitsClear( + IN PRTL_BITMAP BitMapHeader, + IN ULONG StartingIndex, + IN ULONG Length); -#ifdef RUN_WPP -#include -#include -#endif +NTSYSAPI +BOOLEAN +NTAPI +RtlAreBitsSet( + IN PRTL_BITMAP BitMapHeader, + IN ULONG StartingIndex, + IN ULONG Length); -#ifndef _TRACEHANDLE_DEFINED -#define _TRACEHANDLE_DEFINED -typedef ULONG64 TRACEHANDLE, *PTRACEHANDLE; -#endif +NTSYSAPI +NTSTATUS +NTAPI +RtlAnsiStringToUnicodeString( + IN OUT PUNICODE_STRING DestinationString, + IN PANSI_STRING SourceString, + IN BOOLEAN AllocateDestinationString); -#ifndef TRACE_INFORMATION_CLASS_DEFINE +NTSYSAPI +ULONG +NTAPI +RtlxAnsiStringToUnicodeSize( + IN PCANSI_STRING AnsiString); -typedef struct _ETW_TRACE_SESSION_SETTINGS { - ULONG Version; - ULONG BufferSize; - ULONG MinimumBuffers; - ULONG MaximumBuffers; - ULONG LoggerMode; - ULONG FlushTimer; - ULONG FlushThreshold; - ULONG ClockType; -} ETW_TRACE_SESSION_SETTINGS, *PETW_TRACE_SESSION_SETTINGS; - -typedef enum _TRACE_INFORMATION_CLASS { - TraceIdClass, - TraceHandleClass, - TraceEnableFlagsClass, - TraceEnableLevelClass, - GlobalLoggerHandleClass, - EventLoggerHandleClass, - AllLoggerHandlesClass, - TraceHandleByNameClass, - LoggerEventsLostClass, - TraceSessionSettingsClass, - LoggerEventsLoggedClass, - MaxTraceInformationClass -} TRACE_INFORMATION_CLASS; +#define RtlAnsiStringToUnicodeSize(String) ( \ + NLS_MB_CODE_PAGE_TAG ? \ + RtlxAnsiStringToUnicodeSize(String) : \ + ((String)->Length + sizeof(ANSI_NULL)) * sizeof(WCHAR) \ +) -#endif /* TRACE_INFORMATION_CLASS_DEFINE */ +NTSYSAPI +NTSTATUS +NTAPI +RtlAppendUnicodeStringToString( + IN OUT PUNICODE_STRING Destination, + IN PCUNICODE_STRING Source); -#ifndef _ETW_KM_ -#define _ETW_KM_ -#endif +NTSYSAPI +NTSTATUS +NTAPI +RtlAppendUnicodeToString( + IN OUT PUNICODE_STRING Destination, + IN PCWSTR Source); -#include +NTSYSAPI +NTSTATUS +NTAPI +RtlCheckRegistryKey( + IN ULONG RelativeTo, + IN PWSTR Path); -typedef VOID -(NTAPI *PETWENABLECALLBACK)( - IN LPCGUID SourceId, - IN ULONG ControlCode, - IN UCHAR Level, - IN ULONGLONG MatchAnyKeyword, - IN ULONGLONG MatchAllKeyword, - IN PEVENT_FILTER_DESCRIPTOR FilterData OPTIONAL, - IN OUT PVOID CallbackContext OPTIONAL); +NTSYSAPI +VOID +NTAPI +RtlClearAllBits( + IN PRTL_BITMAP BitMapHeader); -#define EVENT_WRITE_FLAG_NO_FAULTING 0x00000001 +NTSYSAPI +VOID +NTAPI +RtlClearBits( + IN PRTL_BITMAP BitMapHeader, + IN ULONG StartingIndex, + IN ULONG NumberToClear); +NTSYSAPI +SIZE_T +NTAPI +RtlCompareMemory( + IN CONST VOID *Source1, + IN CONST VOID *Source2, + IN SIZE_T Length); -#if defined(_M_IX86) -/** Kernel definitions for x86 **/ +NTSYSAPI +LONG +NTAPI +RtlCompareUnicodeString( + IN PCUNICODE_STRING String1, + IN PCUNICODE_STRING String2, + IN BOOLEAN CaseInSensitive); -/* Interrupt request levels */ -#define PASSIVE_LEVEL 0 -#define LOW_LEVEL 0 -#define APC_LEVEL 1 -#define DISPATCH_LEVEL 2 -#define CMCI_LEVEL 5 -#define PROFILE_LEVEL 27 -#define CLOCK1_LEVEL 28 -#define CLOCK2_LEVEL 28 -#define IPI_LEVEL 29 -#define POWER_LEVEL 30 -#define HIGH_LEVEL 31 -#define CLOCK_LEVEL CLOCK2_LEVEL +NTSYSAPI +LONG +NTAPI +RtlCompareUnicodeStrings( + IN PCWCH String1, + IN SIZE_T String1Length, + IN PCWCH String2, + IN SIZE_T String2Length, + IN BOOLEAN CaseInSensitive); -#define KIP0PCRADDRESS 0xffdff000 -#define KI_USER_SHARED_DATA 0xffdf0000 -#define SharedUserData ((KUSER_SHARED_DATA * CONST)KI_USER_SHARED_DATA) +NTSYSAPI +VOID +NTAPI +RtlCopyUnicodeString( + IN OUT PUNICODE_STRING DestinationString, + IN PCUNICODE_STRING SourceString); -#define PAGE_SIZE 0x1000 -#define PAGE_SHIFT 12L -#define KeGetDcacheFillSize() 1L +NTSYSAPI +NTSTATUS +NTAPI +RtlCreateRegistryKey( + IN ULONG RelativeTo, + IN PWSTR Path); -#define EFLAG_SIGN 0x8000 -#define EFLAG_ZERO 0x4000 -#define EFLAG_SELECT (EFLAG_SIGN | EFLAG_ZERO) +NTSYSAPI +NTSTATUS +NTAPI +RtlCreateSecurityDescriptor( + IN OUT PSECURITY_DESCRIPTOR SecurityDescriptor, + IN ULONG Revision); -#define RESULT_NEGATIVE ((EFLAG_SIGN & ~EFLAG_ZERO) & EFLAG_SELECT) -#define RESULT_ZERO ((~EFLAG_SIGN & EFLAG_ZERO) & EFLAG_SELECT) -#define RESULT_POSITIVE ((~EFLAG_SIGN & ~EFLAG_ZERO) & EFLAG_SELECT) +NTSYSAPI +NTSTATUS +NTAPI +RtlDeleteRegistryValue( + IN ULONG RelativeTo, + IN PCWSTR Path, + IN PCWSTR ValueName); +NTSYSAPI +BOOLEAN +NTAPI +RtlEqualUnicodeString( + IN CONST UNICODE_STRING *String1, + IN CONST UNICODE_STRING *String2, + IN BOOLEAN CaseInSensitive); -typedef struct _KFLOATING_SAVE { - ULONG ControlWord; - ULONG StatusWord; - ULONG ErrorOffset; - ULONG ErrorSelector; - ULONG DataOffset; - ULONG DataSelector; - ULONG Cr0NpxState; - ULONG Spare1; -} KFLOATING_SAVE, *PKFLOATING_SAVE; +#if !defined(_AMD64_) && !defined(_IA64_) +NTSYSAPI +LARGE_INTEGER +NTAPI +RtlExtendedIntegerMultiply( + IN LARGE_INTEGER Multiplicand, + IN LONG Multiplier); -extern NTKERNELAPI volatile KSYSTEM_TIME KeTickCount; +NTSYSAPI +LARGE_INTEGER +NTAPI +RtlExtendedLargeIntegerDivide( + IN LARGE_INTEGER Dividend, + IN ULONG Divisor, + IN OUT PULONG Remainder); +#endif -#define YieldProcessor _mm_pause +#if defined(_X86_) || defined(_IA64_) +NTSYSAPI +LARGE_INTEGER +NTAPI +RtlExtendedMagicDivide( + IN LARGE_INTEGER Dividend, + IN LARGE_INTEGER MagicDivisor, + IN CCHAR ShiftCount); +#endif -FORCEINLINE +NTSYSAPI VOID -KeMemoryBarrier(VOID) -{ - volatile LONG Barrier; -#if defined(__GNUC__) - __asm__ __volatile__ ("xchg %%eax, %0" : : "m" (Barrier) : "%eax"); -#elif defined(_MSC_VER) - __asm xchg [Barrier], eax -#endif -} +NTAPI +RtlFreeAnsiString( + IN PANSI_STRING AnsiString); -NTHALAPI -KIRQL +NTSYSAPI +ULONG NTAPI -KeGetCurrentIrql(VOID); +RtlFindClearBits( + IN PRTL_BITMAP BitMapHeader, + IN ULONG NumberToFind, + IN ULONG HintIndex); -NTHALAPI -VOID -FASTCALL -KfLowerIrql( - IN KIRQL NewIrql); -#define KeLowerIrql(a) KfLowerIrql(a) +NTSYSAPI +ULONG +NTAPI +RtlFindClearBitsAndSet( + IN PRTL_BITMAP BitMapHeader, + IN ULONG NumberToFind, + IN ULONG HintIndex); -NTHALAPI -KIRQL -FASTCALL -KfRaiseIrql( - IN KIRQL NewIrql); -#define KeRaiseIrql(a,b) *(b) = KfRaiseIrql(a) +NTSYSAPI +ULONG +NTAPI +RtlFindFirstRunClear( + IN PRTL_BITMAP BitMapHeader, + OUT PULONG StartingIndex); -NTHALAPI -KIRQL +NTSYSAPI +ULONG NTAPI -KeRaiseIrqlToDpcLevel(VOID); +RtlFindClearRuns( + IN PRTL_BITMAP BitMapHeader, + OUT PRTL_BITMAP_RUN RunArray, + IN ULONG SizeOfRunArray, + IN BOOLEAN LocateLongestRuns); -NTHALAPI -KIRQL +NTSYSAPI +ULONG NTAPI -KeRaiseIrqlToSynchLevel(VOID); +RtlFindLastBackwardRunClear( + IN PRTL_BITMAP BitMapHeader, + IN ULONG FromIndex, + OUT PULONG StartingRunIndex); -NTHALAPI -KIRQL -FASTCALL -KfAcquireSpinLock( - IN OUT PKSPIN_LOCK SpinLock); -#define KeAcquireSpinLock(a,b) *(b) = KfAcquireSpinLock(a) +NTSYSAPI +CCHAR +NTAPI +RtlFindLeastSignificantBit( + IN ULONGLONG Set); -NTHALAPI -VOID -FASTCALL -KfReleaseSpinLock( - IN OUT PKSPIN_LOCK SpinLock, - IN KIRQL NewIrql); -#define KeReleaseSpinLock(a,b) KfReleaseSpinLock(a,b) +NTSYSAPI +ULONG +NTAPI +RtlFindLongestRunClear( + IN PRTL_BITMAP BitMapHeader, + OUT PULONG StartingIndex); -NTKERNELAPI -VOID -FASTCALL -KefAcquireSpinLockAtDpcLevel( - IN OUT PKSPIN_LOCK SpinLock); -#define KeAcquireSpinLockAtDpcLevel(SpinLock) KefAcquireSpinLockAtDpcLevel(SpinLock) +NTSYSAPI +CCHAR +NTAPI +RtlFindMostSignificantBit( + IN ULONGLONG Set); -NTKERNELAPI -VOID -FASTCALL -KefReleaseSpinLockFromDpcLevel( - IN OUT PKSPIN_LOCK SpinLock); -#define KeReleaseSpinLockFromDpcLevel(SpinLock) KefReleaseSpinLockFromDpcLevel(SpinLock) +NTSYSAPI +ULONG +NTAPI +RtlFindNextForwardRunClear( + IN PRTL_BITMAP BitMapHeader, + IN ULONG FromIndex, + OUT PULONG StartingRunIndex); NTSYSAPI -PKTHREAD +ULONG NTAPI -KeGetCurrentThread(VOID); +RtlFindSetBits( + IN PRTL_BITMAP BitMapHeader, + IN ULONG NumberToFind, + IN ULONG HintIndex); -NTKERNELAPI -NTSTATUS +NTSYSAPI +ULONG NTAPI -KeSaveFloatingPointState( - OUT PKFLOATING_SAVE FloatSave); +RtlFindSetBitsAndClear( + IN PRTL_BITMAP BitMapHeader, + IN ULONG NumberToFind, + IN ULONG HintIndex); -NTKERNELAPI +NTSYSAPI NTSTATUS NTAPI -KeRestoreFloatingPointState( - IN PKFLOATING_SAVE FloatSave); +RtlHashUnicodeString( + IN CONST UNICODE_STRING *String, + IN BOOLEAN CaseInSensitive, + IN ULONG HashAlgorithm, + OUT PULONG HashValue); -/* VOID - * KeFlushIoBuffers( - * IN PMDL Mdl, - * IN BOOLEAN ReadOperation, - * IN BOOLEAN DmaOperation) - */ -#define KeFlushIoBuffers(_Mdl, _ReadOperation, _DmaOperation) +NTSYSAPI +VOID +NTAPI +RtlInitAnsiString( + IN OUT PANSI_STRING DestinationString, + IN PCSZ SourceString); -/* x86 and x64 performs a 0x2C interrupt */ -#define DbgRaiseAssertionFailure __int2c +NTSYSAPI +VOID +NTAPI +RtlInitializeBitMap( + IN PRTL_BITMAP BitMapHeader, + IN PULONG BitMapBuffer, + IN ULONG SizeOfBitMap); -FORCEINLINE +NTSYSAPI VOID -_KeQueryTickCount( - OUT PLARGE_INTEGER CurrentCount) -{ - for (;;) { - CurrentCount->HighPart = KeTickCount.High1Time; - CurrentCount->LowPart = KeTickCount.LowPart; - if (CurrentCount->HighPart == KeTickCount.High2Time) break; - YieldProcessor(); - } -} -#define KeQueryTickCount(CurrentCount) _KeQueryTickCount(CurrentCount) +NTAPI +RtlInitString( + IN OUT PSTRING DestinationString, + IN PCSZ SourceString); +NTSYSAPI +NTSTATUS +NTAPI +RtlIntegerToUnicodeString( + IN ULONG Value, + IN ULONG Base OPTIONAL, + IN OUT PUNICODE_STRING String); +NTSYSAPI +NTSTATUS +NTAPI +RtlInt64ToUnicodeString( + IN ULONGLONG Value, + IN ULONG Base OPTIONAL, + IN OUT PUNICODE_STRING String); +#ifdef _WIN64 +#define RtlIntPtrToUnicodeString(Value, Base, String) \ + RtlInt64ToUnicodeString(Value, Base, String) +#else +#define RtlIntPtrToUnicodeString(Value, Base, String) \ + RtlIntegerToUnicodeString(Value, Base, String) +#endif +/* BOOLEAN + * RtlIsZeroLuid( + * IN PLUID L1); + */ +#define RtlIsZeroLuid(_L1) \ + ((BOOLEAN) ((!(_L1)->LowPart) && (!(_L1)->HighPart))) -#elif defined(_M_AMD64) -/** Kernel definitions for AMD64 **/ - -/* Interrupt request levels */ -#define PASSIVE_LEVEL 0 -#define LOW_LEVEL 0 -#define APC_LEVEL 1 -#define DISPATCH_LEVEL 2 -#define CMCI_LEVEL 5 -#define CLOCK_LEVEL 13 -#define IPI_LEVEL 14 -#define DRS_LEVEL 14 -#define POWER_LEVEL 14 -#define PROFILE_LEVEL 15 -#define HIGH_LEVEL 15 - -#define KI_USER_SHARED_DATA 0xFFFFF78000000000ULL -#define SharedUserData ((PKUSER_SHARED_DATA const)KI_USER_SHARED_DATA) -#define SharedInterruptTime (KI_USER_SHARED_DATA + 0x8) -#define SharedSystemTime (KI_USER_SHARED_DATA + 0x14) -#define SharedTickCount (KI_USER_SHARED_DATA + 0x320) - -#define PAGE_SIZE 0x1000 -#define PAGE_SHIFT 12L - -#define EFLAG_SIGN 0x8000 -#define EFLAG_ZERO 0x4000 -#define EFLAG_SELECT (EFLAG_SIGN | EFLAG_ZERO) - -#define RESULT_NEGATIVE ((EFLAG_SIGN & ~EFLAG_ZERO) & EFLAG_SELECT) -#define RESULT_ZERO ((~EFLAG_SIGN & EFLAG_ZERO) & EFLAG_SELECT) -#define RESULT_POSITIVE ((~EFLAG_SIGN & ~EFLAG_ZERO) & EFLAG_SELECT) - - -typedef struct _KFLOATING_SAVE { - ULONG Dummy; -} KFLOATING_SAVE, *PKFLOATING_SAVE; - -typedef XSAVE_FORMAT XMM_SAVE_AREA32, *PXMM_SAVE_AREA32; +NTSYSAPI +ULONG +NTAPI +RtlLengthSecurityDescriptor( + IN PSECURITY_DESCRIPTOR SecurityDescriptor); -#define KeQueryInterruptTime() \ - (*(volatile ULONG64*)SharedInterruptTime) +NTSYSAPI +ULONG +NTAPI +RtlNumberOfClearBits( + IN PRTL_BITMAP BitMapHeader); -#define KeQuerySystemTime(CurrentCount) \ - *(ULONG64*)(CurrentCount) = *(volatile ULONG64*)SharedSystemTime +NTSYSAPI +ULONG +NTAPI +RtlNumberOfSetBits( + IN PRTL_BITMAP BitMapHeader); -#define KeQueryTickCount(CurrentCount) \ - *(ULONG64*)(CurrentCount) = *(volatile ULONG64*)SharedTickCount +NTSYSAPI +NTSTATUS +NTAPI +RtlQueryRegistryValues( + IN ULONG RelativeTo, + IN PCWSTR Path, + IN PRTL_QUERY_REGISTRY_TABLE QueryTable, + IN PVOID Context, + IN PVOID Environment OPTIONAL); -#define KeGetDcacheFillSize() 1L +#define LONG_SIZE (sizeof(LONG)) +#define LONG_MASK (LONG_SIZE - 1) -#define YieldProcessor _mm_pause +/* VOID + * RtlRetrieveUlong( + * PULONG DestinationAddress, + * PULONG SourceAddress); + */ +#if defined(_AMD64_) +#define RtlRetrieveUlong(DestAddress,SrcAddress) \ + *(ULONG UNALIGNED *)(DestAddress) = *(PULONG)(SrcAddress) +#else +#define RtlRetrieveUlong(DestAddress,SrcAddress) \ + if ((ULONG_PTR)(SrcAddress) & LONG_MASK) \ + { \ + ((PUCHAR)(DestAddress))[0]=((PUCHAR)(SrcAddress))[0]; \ + ((PUCHAR)(DestAddress))[1]=((PUCHAR)(SrcAddress))[1]; \ + ((PUCHAR)(DestAddress))[2]=((PUCHAR)(SrcAddress))[2]; \ + ((PUCHAR)(DestAddress))[3]=((PUCHAR)(SrcAddress))[3]; \ + } \ + else \ + { \ + *((PULONG)(DestAddress))=*((PULONG)(SrcAddress)); \ + } +#endif -FORCEINLINE -KIRQL -KeGetCurrentIrql(VOID) -{ - return (KIRQL)__readcr8(); -} +/* VOID + * RtlRetrieveUshort( + * PUSHORT DestinationAddress, + * PUSHORT SourceAddress); + */ +#if defined(_AMD64_) +#define RtlRetrieveUshort(DestAddress,SrcAddress) \ + *(USHORT UNALIGNED *)(DestAddress) = *(USHORT)(SrcAddress) +#else +#define RtlRetrieveUshort(DestAddress,SrcAddress) \ + if ((ULONG_PTR)(SrcAddress) & LONG_MASK) \ + { \ + ((PUCHAR)(DestAddress))[0]=((PUCHAR)(SrcAddress))[0]; \ + ((PUCHAR)(DestAddress))[1]=((PUCHAR)(SrcAddress))[1]; \ + } \ + else \ + { \ + *((PUSHORT)(DestAddress))=*((PUSHORT)(SrcAddress)); \ + } +#endif -FORCEINLINE +NTSYSAPI VOID -KeLowerIrql(IN KIRQL NewIrql) -{ - //ASSERT(KeGetCurrentIrql() >= NewIrql); - __writecr8(NewIrql); -} - -FORCEINLINE -KIRQL -KfRaiseIrql(IN KIRQL NewIrql) -{ - KIRQL OldIrql; - - OldIrql = __readcr8(); - //ASSERT(OldIrql <= NewIrql); - __writecr8(NewIrql); - return OldIrql; -} -#define KeRaiseIrql(a,b) *(b) = KfRaiseIrql(a) +NTAPI +RtlSetAllBits( + IN PRTL_BITMAP BitMapHeader); -FORCEINLINE -KIRQL -KeRaiseIrqlToDpcLevel(VOID) -{ - return KfRaiseIrql(DISPATCH_LEVEL); -} +NTSYSAPI +VOID +NTAPI +RtlSetBits( + IN PRTL_BITMAP BitMapHeader, + IN ULONG StartingIndex, + IN ULONG NumberToSet); -FORCEINLINE -KIRQL -KeRaiseIrqlToSynchLevel(VOID) -{ - return KfRaiseIrql(12); // SYNCH_LEVEL = IPI_LEVEL - 2 -} +NTSYSAPI +NTSTATUS +NTAPI +RtlSetDaclSecurityDescriptor( + IN OUT PSECURITY_DESCRIPTOR SecurityDescriptor, + IN BOOLEAN DaclPresent, + IN PACL Dacl OPTIONAL, + IN BOOLEAN DaclDefaulted OPTIONAL); -FORCEINLINE -PKTHREAD -KeGetCurrentThread(VOID) -{ - return (struct _KTHREAD *)__readgsqword(0x188); -} +/* VOID + * RtlStoreUlong( + * IN PULONG Address, + * IN ULONG Value); + */ +#if defined(_AMD64_) +#define RtlStoreUlong(Address,Value) \ + *(ULONG UNALIGNED *)(Address) = (Value) +#else +#define RtlStoreUlong(Address,Value) \ + if ((ULONG_PTR)(Address) & LONG_MASK) { \ + ((PUCHAR) (Address))[LONG_LEAST_SIGNIFICANT_BIT] = (UCHAR)(FIRSTBYTE(Value)); \ + ((PUCHAR) (Address))[LONG_3RD_MOST_SIGNIFICANT_BIT] = (UCHAR)(SECONDBYTE(Value)); \ + ((PUCHAR) (Address))[LONG_2ND_MOST_SIGNIFICANT_BIT] = (UCHAR)(THIRDBYTE(Value)); \ + ((PUCHAR) (Address))[LONG_MOST_SIGNIFICANT_BIT] = (UCHAR)(FOURTHBYTE(Value)); \ + } \ + else { \ + *((PULONG)(Address)) = (ULONG) (Value); \ + } +#endif /* VOID - * KeFlushIoBuffers( - * IN PMDL Mdl, - * IN BOOLEAN ReadOperation, - * IN BOOLEAN DmaOperation) + * RtlStoreUlonglong( + * IN OUT PULONGLONG Address, + * ULONGLONG Value); */ -#define KeFlushIoBuffers(_Mdl, _ReadOperation, _DmaOperation) +#if defined(_AMD64_) +#define RtlStoreUlonglong(Address,Value) \ + *(ULONGLONG UNALIGNED *)(Address) = (Value) +#else +#define RtlStoreUlonglong(Address,Value) \ + if ((ULONG_PTR)(Address) & LONGLONG_MASK) { \ + RtlStoreUlong((ULONG_PTR)(Address), \ + (ULONGLONG)(Value) & 0xFFFFFFFF); \ + RtlStoreUlong((ULONG_PTR)(Address)+sizeof(ULONG), \ + (ULONGLONG)(Value) >> 32); \ + } else { \ + *((PULONGLONG)(Address)) = (ULONGLONG)(Value); \ + } +#endif -/* x86 and x64 performs a 0x2C interrupt */ -#define DbgRaiseAssertionFailure __int2c +/* VOID + * RtlStoreUlongPtr( + * IN OUT PULONG_PTR Address, + * IN ULONG_PTR Value); + */ +#ifdef _WIN64 +#define RtlStoreUlongPtr(Address,Value) \ + RtlStoreUlonglong(Address,Value) +#else +#define RtlStoreUlongPtr(Address,Value) \ + RtlStoreUlong(Address,Value) +#endif -#elif defined(_M_IA64) -/** Kernel definitions for IA64 **/ +/* VOID + * RtlStoreUshort( + * IN PUSHORT Address, + * IN USHORT Value); + */ +#if defined(_AMD64_) +#define RtlStoreUshort(Address,Value) \ + *(USHORT UNALIGNED *)(Address) = (Value) +#else +#define RtlStoreUshort(Address,Value) \ + if ((ULONG_PTR)(Address) & SHORT_MASK) { \ + ((PUCHAR) (Address))[SHORT_LEAST_SIGNIFICANT_BIT] = (UCHAR)(FIRSTBYTE(Value)); \ + ((PUCHAR) (Address))[SHORT_MOST_SIGNIFICANT_BIT ] = (UCHAR)(SECONDBYTE(Value)); \ + } \ + else { \ + *((PUSHORT) (Address)) = (USHORT)Value; \ + } +#endif -/* Interrupt request levels */ -#define PASSIVE_LEVEL 0 -#define LOW_LEVEL 0 -#define APC_LEVEL 1 -#define DISPATCH_LEVEL 2 -#define CMC_LEVEL 3 -#define DEVICE_LEVEL_BASE 4 -#define PC_LEVEL 12 -#define IPI_LEVEL 14 -#define DRS_LEVEL 14 -#define CLOCK_LEVEL 13 -#define POWER_LEVEL 15 -#define PROFILE_LEVEL 15 -#define HIGH_LEVEL 15 +NTSYSAPI +BOOLEAN +NTAPI +RtlTimeFieldsToTime( + IN PTIME_FIELDS TimeFields, + IN PLARGE_INTEGER Time); -#define KI_USER_SHARED_DATA ((ULONG_PTR)(KADDRESS_BASE + 0xFFFE0000)) -extern volatile LARGE_INTEGER KeTickCount; +NTSYSAPI +VOID +NTAPI +RtlTimeToTimeFields( + IN PLARGE_INTEGER Time, + IN PTIME_FIELDS TimeFields); -#define PAUSE_PROCESSOR __yield(); +NTSYSAPI +ULONG +FASTCALL +RtlUlongByteSwap( + IN ULONG Source); -FORCEINLINE -VOID -KeFlushWriteBuffer(VOID) -{ - __mf (); - return; -} +NTSYSAPI +ULONGLONG +FASTCALL +RtlUlonglongByteSwap( + IN ULONGLONG Source); NTSYSAPI -PKTHREAD +NTSTATUS NTAPI -KeGetCurrentThread(VOID); - +RtlUnicodeStringToAnsiString( + IN OUT PANSI_STRING DestinationString, + IN PCUNICODE_STRING SourceString, + IN BOOLEAN AllocateDestinationString); -#elif defined(_M_PPC) +NTSYSAPI +ULONG +NTAPI +RtlxUnicodeStringToAnsiSize( + IN PCUNICODE_STRING UnicodeString); -/* Interrupt request levels */ -#define PASSIVE_LEVEL 0 -#define LOW_LEVEL 0 -#define APC_LEVEL 1 -#define DISPATCH_LEVEL 2 -#define PROFILE_LEVEL 27 -#define CLOCK1_LEVEL 28 -#define CLOCK2_LEVEL 28 -#define IPI_LEVEL 29 -#define POWER_LEVEL 30 -#define HIGH_LEVEL 31 +#define RtlUnicodeStringToAnsiSize(String) ( \ + NLS_MB_CODE_PAGE_TAG ? \ + RtlxUnicodeStringToAnsiSize(String) : \ + ((String)->Length + sizeof(UNICODE_NULL)) / sizeof(WCHAR) \ +) -// -// Used to contain PFNs and PFN counts -// -typedef ULONG PFN_COUNT; -typedef ULONG PFN_NUMBER, *PPFN_NUMBER; -typedef LONG SPFN_NUMBER, *PSPFN_NUMBER; +NTSYSAPI +NTSTATUS +NTAPI +RtlUnicodeStringToInteger( + IN PCUNICODE_STRING String, + IN ULONG Base OPTIONAL, + OUT PULONG Value); +NTSYSAPI +WCHAR +NTAPI +RtlUpcaseUnicodeChar( + IN WCHAR SourceCharacter); -typedef struct _KFLOATING_SAVE { - ULONG Dummy; -} KFLOATING_SAVE, *PKFLOATING_SAVE; - -typedef struct _KPCR_TIB { - PVOID ExceptionList; /* 00 */ - PVOID StackBase; /* 04 */ - PVOID StackLimit; /* 08 */ - PVOID SubSystemTib; /* 0C */ - _ANONYMOUS_UNION union { - PVOID FiberData; /* 10 */ - ULONG Version; /* 10 */ - } DUMMYUNIONNAME; - PVOID ArbitraryUserPointer; /* 14 */ - struct _KPCR_TIB *Self; /* 18 */ -} KPCR_TIB, *PKPCR_TIB; /* 1C */ - -#define PCR_MINOR_VERSION 1 -#define PCR_MAJOR_VERSION 1 - -typedef struct _KPCR { - KPCR_TIB Tib; /* 00 */ - struct _KPCR *Self; /* 1C */ - struct _KPRCB *Prcb; /* 20 */ - KIRQL Irql; /* 24 */ - ULONG IRR; /* 28 */ - ULONG IrrActive; /* 2C */ - ULONG IDR; /* 30 */ - PVOID KdVersionBlock; /* 34 */ - PUSHORT IDT; /* 38 */ - PUSHORT GDT; /* 3C */ - struct _KTSS *TSS; /* 40 */ - USHORT MajorVersion; /* 44 */ - USHORT MinorVersion; /* 46 */ - KAFFINITY SetMember; /* 48 */ - ULONG StallScaleFactor; /* 4C */ - UCHAR SpareUnused; /* 50 */ - UCHAR Number; /* 51 */ -} KPCR, *PKPCR; /* 54 */ - -#define KeGetPcr() PCR - -#define YieldProcessor() __asm__ __volatile__("nop"); - -FORCEINLINE -ULONG -NTAPI -KeGetCurrentProcessorNumber(VOID) -{ - ULONG Number; - __asm__ __volatile__ ( - "lwz %0, %c1(12)\n" - : "=r" (Number) - : "i" (FIELD_OFFSET(KPCR, Number)) - ); - return Number; -} - -NTHALAPI -VOID -FASTCALL -KfLowerIrql( - IN KIRQL NewIrql); -#define KeLowerIrql(a) KfLowerIrql(a) - -NTHALAPI -KIRQL +NTSYSAPI +USHORT FASTCALL -KfRaiseIrql( - IN KIRQL NewIrql); -#define KeRaiseIrql(a,b) *(b) = KfRaiseIrql(a) +RtlUshortByteSwap( + IN USHORT Source); -NTHALAPI -KIRQL +NTSYSAPI +BOOLEAN NTAPI -KeRaiseIrqlToDpcLevel(VOID); +RtlValidRelativeSecurityDescriptor( + IN PSECURITY_DESCRIPTOR SecurityDescriptorInput, + IN ULONG SecurityDescriptorLength, + IN SECURITY_INFORMATION RequiredInformation); -NTHALAPI -KIRQL +NTSYSAPI +BOOLEAN NTAPI -KeRaiseIrqlToSynchLevel(VOID); +RtlValidSecurityDescriptor( + IN PSECURITY_DESCRIPTOR SecurityDescriptor); +NTSYSAPI +NTSTATUS +NTAPI +RtlWriteRegistryValue( + IN ULONG RelativeTo, + IN PCWSTR Path, + IN PCWSTR ValueName, + IN ULONG ValueType, + IN PVOID ValueData, + IN ULONG ValueLength); +#endif // (NTDDI_VERSION >= NTDDI_WIN2K) -#elif defined(_M_MIPS) -#error MIPS Headers are totally incorrect +#if (NTDDI_VERSION >= NTDDI_WIN2KSP3) +NTSYSAPI +VOID +FASTCALL +RtlPrefetchMemoryNonTemporal( + IN PVOID Source, + IN SIZE_T Length); +#endif -// -// Used to contain PFNs and PFN counts -// -typedef ULONG PFN_COUNT; -typedef ULONG PFN_NUMBER, *PPFN_NUMBER; -typedef LONG SPFN_NUMBER, *PSPFN_NUMBER; +#if (NTDDI_VERSION >= NTDDI_WINXP) +NTSYSAPI +VOID +NTAPI +RtlClearBit( + PRTL_BITMAP BitMapHeader, + ULONG BitNumber); -#define PASSIVE_LEVEL 0 -#define APC_LEVEL 1 -#define DISPATCH_LEVEL 2 -#define PROFILE_LEVEL 27 -#define IPI_LEVEL 29 -#define HIGH_LEVEL 31 +NTSYSAPI +WCHAR +NTAPI +RtlDowncaseUnicodeChar( + IN WCHAR SourceCharacter); -typedef struct _KPCR { - struct _KPRCB *Prcb; /* 20 */ - KIRQL Irql; /* 24 */ - ULONG IRR; /* 28 */ - ULONG IDR; /* 30 */ -} KPCR, *PKPCR; +NTSYSAPI +VOID +NTAPI +RtlSetBit( + PRTL_BITMAP BitMapHeader, + ULONG BitNumber); -#define KeGetPcr() PCR +NTSYSAPI +BOOLEAN +NTAPI +RtlTestBit( + IN PRTL_BITMAP BitMapHeader, + IN ULONG BitNumber); -typedef struct _KFLOATING_SAVE { -} KFLOATING_SAVE, *PKFLOATING_SAVE; +#endif // (NTDDI_VERSION >= NTDDI_WINXP) -static __inline +#if (NTDDI_VERSION >= NTDDI_VISTA) +NTSYSAPI ULONG NTAPI -KeGetCurrentProcessorNumber(VOID) -{ - return 0; -} - -#define YieldProcessor() __asm__ __volatile__("nop"); - -#define KeLowerIrql(a) KfLowerIrql(a) -#define KeRaiseIrql(a,b) *(b) = KfRaiseIrql(a) +RtlNumberOfSetBitsUlongPtr( + IN ULONG_PTR Target); -NTKERNELAPI -VOID +NTSYSAPI +ULONGLONG NTAPI -KfLowerIrql( - IN KIRQL NewIrql); +RtlIoDecodeMemIoResource ( + IN struct _IO_RESOURCE_DESCRIPTOR *Descriptor, + OUT PULONGLONG Alignment OPTIONAL, + OUT PULONGLONG MinimumAddress OPTIONAL, + OUT PULONGLONG MaximumAddress OPTIONAL); -NTKERNELAPI -KIRQL +NTSYSAPI +NTSTATUS NTAPI -KfRaiseIrql( - IN KIRQL NewIrql); +RtlIoEncodeMemIoResource( + IN struct _IO_RESOURCE_DESCRIPTOR *Descriptor, + IN UCHAR Type, + IN ULONGLONG Length, + IN ULONGLONG Alignment, + IN ULONGLONG MinimumAddress, + IN ULONGLONG MaximumAddress); -NTKERNELAPI -KIRQL +NTSYSAPI +ULONGLONG NTAPI -KeRaiseIrqlToDpcLevel(VOID); +RtlCmDecodeMemIoResource( + IN struct _CM_PARTIAL_RESOURCE_DESCRIPTOR *Descriptor, + OUT PULONGLONG Start OPTIONAL); -NTKERNELAPI -KIRQL +NTSYSAPI +NTSTATUS NTAPI -KeRaiseIrqlToSynchLevel(VOID); - +RtlFindClosestEncodableLength( + IN ULONGLONG SourceLength, + OUT PULONGLONG TargetLength); -#elif defined(_M_ARM) -#include -#else -#error Unknown Architecture #endif -/****************************************************************************** - * Runtime Library Functions * - ******************************************************************************/ - - -#if !defined(MIDL_PASS) && !defined(SORTPP_PASS) - -#define RTL_STATIC_LIST_HEAD(x) LIST_ENTRY x = { &x, &x } - -FORCEINLINE -VOID -InitializeListHead( - OUT PLIST_ENTRY ListHead) +#if !defined(MIDL_PASS) +/* inline funftions */ +//DECLSPEC_DEPRECATED_DDK_WINXP +static __inline +LARGE_INTEGER +NTAPI_INLINE +RtlConvertLongToLargeInteger(LONG SignedInteger) { - ListHead->Flink = ListHead->Blink = ListHead; + LARGE_INTEGER ret; + ret.QuadPart = SignedInteger; + return ret; } -BOOLEAN -FORCEINLINE -IsListEmpty( - IN CONST LIST_ENTRY * ListHead) +//DECLSPEC_DEPRECATED_DDK_WINXP +static __inline +LARGE_INTEGER +NTAPI_INLINE +RtlConvertUlongToLargeInteger( + ULONG UnsignedInteger) { - return (BOOLEAN)(ListHead->Flink == ListHead); + LARGE_INTEGER ret; + ret.QuadPart = UnsignedInteger; + return ret; } -FORCEINLINE -BOOLEAN -RemoveEntryList( - IN PLIST_ENTRY Entry) +//DECLSPEC_DEPRECATED_DDK +static __inline +ULONG +NTAPI_INLINE +RtlEnlargedUnsignedDivide( + IN ULARGE_INTEGER Dividend, + IN ULONG Divisor, + IN OUT PULONG Remainder) { - PLIST_ENTRY OldFlink; - PLIST_ENTRY OldBlink; - - OldFlink = Entry->Flink; - OldBlink = Entry->Blink; - OldFlink->Blink = OldBlink; - OldBlink->Flink = OldFlink; - return (BOOLEAN)(OldFlink == OldBlink); + if (Remainder) + *Remainder = (ULONG)(Dividend.QuadPart % Divisor); + return (ULONG)(Dividend.QuadPart / Divisor); } -FORCEINLINE -PLIST_ENTRY -RemoveHeadList( - IN OUT PLIST_ENTRY ListHead) +//DECLSPEC_DEPRECATED_DDK +static __inline +LARGE_INTEGER +NTAPI_INLINE +RtlEnlargedUnsignedMultiply( + IN ULONG Multiplicand, + IN ULONG Multiplier) { - PLIST_ENTRY Flink; - PLIST_ENTRY Entry; - - Entry = ListHead->Flink; - Flink = Entry->Flink; - ListHead->Flink = Flink; - Flink->Blink = ListHead; - return Entry; + LARGE_INTEGER ret; + ret.QuadPart = (ULONGLONG)Multiplicand * (ULONGLONG)Multiplier; + return ret; } -FORCEINLINE -PLIST_ENTRY -RemoveTailList( - IN OUT PLIST_ENTRY ListHead) +//DECLSPEC_DEPRECATED_DDK +static __inline +LARGE_INTEGER +NTAPI_INLINE +RtlEnlargedIntegerMultiply( + IN LONG Multiplicand, + IN LONG Multiplier) { - PLIST_ENTRY Blink; - PLIST_ENTRY Entry; - - Entry = ListHead->Blink; - Blink = Entry->Blink; - ListHead->Blink = Blink; - Blink->Flink = ListHead; - return Entry; + LARGE_INTEGER ret; + ret.QuadPart = (LONGLONG)Multiplicand * (ULONGLONG)Multiplier; + return ret; } FORCEINLINE VOID -InsertTailList( - IN OUT PLIST_ENTRY ListHead, - IN OUT PLIST_ENTRY Entry) +RtlInitEmptyAnsiString(OUT PANSI_STRING AnsiString, + IN PCHAR Buffer, + IN USHORT BufferSize) { - PLIST_ENTRY OldBlink; - OldBlink = ListHead->Blink; - Entry->Flink = ListHead; - Entry->Blink = OldBlink; - OldBlink->Flink = Entry; - ListHead->Blink = Entry; + AnsiString->Length = 0; + AnsiString->MaximumLength = BufferSize; + AnsiString->Buffer = Buffer; } FORCEINLINE VOID -InsertHeadList( - IN OUT PLIST_ENTRY ListHead, - IN OUT PLIST_ENTRY Entry) +RtlInitEmptyUnicodeString( + OUT PUNICODE_STRING UnicodeString, + IN PWSTR Buffer, + IN USHORT BufferSize) { - PLIST_ENTRY OldFlink; - OldFlink = ListHead->Flink; - Entry->Flink = OldFlink; - Entry->Blink = ListHead; - OldFlink->Blink = Entry; - ListHead->Flink = Entry; + UnicodeString->Length = 0; + UnicodeString->MaximumLength = BufferSize; + UnicodeString->Buffer = Buffer; } -FORCEINLINE -VOID -AppendTailList( - IN OUT PLIST_ENTRY ListHead, - IN OUT PLIST_ENTRY ListToAppend) +#if defined(_AMD64_) || defined(_IA64_) +static __inline +LARGE_INTEGER +NTAPI_INLINE +RtlExtendedIntegerMultiply( + LARGE_INTEGER Multiplicand, + LONG Multiplier) { - PLIST_ENTRY ListEnd = ListHead->Blink; - - ListHead->Blink->Flink = ListToAppend; - ListHead->Blink = ListToAppend->Blink; - ListToAppend->Blink->Flink = ListHead; - ListToAppend->Blink = ListEnd; + LARGE_INTEGER ret; + ret.QuadPart = Multiplicand.QuadPart * Multiplier; + return ret; } -FORCEINLINE -PSINGLE_LIST_ENTRY -PopEntryList( - IN OUT PSINGLE_LIST_ENTRY ListHead) +static __inline +LARGE_INTEGER +NTAPI_INLINE +RtlExtendedLargeIntegerDivide( + LARGE_INTEGER Dividend, + ULONG Divisor, + PULONG Remainder) { - PSINGLE_LIST_ENTRY FirstEntry; - FirstEntry = ListHead->Next; - if (FirstEntry != NULL) { - ListHead->Next = FirstEntry->Next; - } - return FirstEntry; + LARGE_INTEGER ret; + ret.QuadPart = (ULONG64)Dividend.QuadPart / Divisor; + if (Remainder) + *Remainder = (ULONG)(Dividend.QuadPart % Divisor); + return ret; } +#endif -FORCEINLINE -VOID -PushEntryList( - IN OUT PSINGLE_LIST_ENTRY ListHead, - IN OUT PSINGLE_LIST_ENTRY Entry) +#if defined(_AMD64_) + +#define MultiplyHigh __mulh +#define UnsignedMultiplyHigh __umulh + +//DECLSPEC_DEPRECATED_DDK +static __inline +LARGE_INTEGER +NTAPI_INLINE +RtlExtendedMagicDivide( + IN LARGE_INTEGER Dividend, + IN LARGE_INTEGER MagicDivisor, + IN CCHAR ShiftCount) { - Entry->Next = ListHead->Next; - ListHead->Next = Entry; + LARGE_INTEGER ret; + ULONG64 ret64; + BOOLEAN Pos; + Pos = (Dividend.QuadPart >= 0); + ret64 = UnsignedMultiplyHigh(Pos ? Dividend.QuadPart : -Dividend.QuadPart, + MagicDivisor.QuadPart); + ret64 >>= ShiftCount; + ret.QuadPart = Pos ? ret64 : -ret64; + return ret; } +#endif -#endif /* !defined(MIDL_PASS) && !defined(SORTPP_PASS) */ - -NTSYSAPI -VOID -NTAPI -RtlAssert( - IN PVOID FailedAssertion, - IN PVOID FileName, - IN ULONG LineNumber, - IN PSTR Message); +//DECLSPEC_DEPRECATED_DDK +static __inline +LARGE_INTEGER +NTAPI_INLINE +RtlLargeIntegerAdd( + IN LARGE_INTEGER Addend1, + IN LARGE_INTEGER Addend2) +{ + LARGE_INTEGER ret; + ret.QuadPart = Addend1.QuadPart + Addend2.QuadPart; + return ret; +} /* VOID - * RtlCopyMemory( - * IN VOID UNALIGNED *Destination, - * IN CONST VOID UNALIGNED *Source, - * IN SIZE_T Length) - */ -#define RtlCopyMemory(Destination, Source, Length) \ - memcpy(Destination, Source, Length) + * RtlLargeIntegerAnd( + * IN OUT LARGE_INTEGER Result, + * IN LARGE_INTEGER Source, + * IN LARGE_INTEGER Mask); + */ +#define RtlLargeIntegerAnd(Result, Source, Mask) \ + Result.QuadPart = Source.QuadPart & Mask.QuadPart -#define RtlCopyBytes RtlCopyMemory +//DECLSPEC_DEPRECATED_DDK +static __inline +LARGE_INTEGER +NTAPI_INLINE +RtlLargeIntegerArithmeticShift( + IN LARGE_INTEGER LargeInteger, + IN CCHAR ShiftCount) +{ + LARGE_INTEGER ret; + ret.QuadPart = LargeInteger.QuadPart >> ShiftCount; + return ret; +} + +/* BOOLEAN + * RtlLargeIntegerEqualTo( + * IN LARGE_INTEGER Operand1, + * IN LARGE_INTEGER Operand2); + */ +#define RtlLargeIntegerEqualTo(X,Y) \ + (!(((X).LowPart ^ (Y).LowPart) | ((X).HighPart ^ (Y).HighPart))) +FORCEINLINE +PVOID +RtlSecureZeroMemory( + OUT PVOID Pointer, + IN SIZE_T Size) +{ + volatile char* vptr = (volatile char*)Pointer; #if defined(_M_AMD64) -NTSYSAPI -VOID -NTAPI -RtlCopyMemoryNonTemporal( - VOID UNALIGNED *Destination, - CONST VOID UNALIGNED *Source, - SIZE_T Length); + __stosb((PUCHAR)vptr, 0, Size); #else -#define RtlCopyMemoryNonTemporal RtlCopyMemory + char * endptr = (char *)vptr + Size; + while (vptr < endptr) + { + *vptr = 0; vptr++; + } #endif + return Pointer; +} -/* BOOLEAN - * RtlEqualLuid( - * IN PLUID Luid1, - * IN PLUID Luid2) - */ -#define RtlEqualLuid(Luid1, Luid2) \ - (((Luid1)->LowPart == (Luid2)->LowPart) && ((Luid1)->HighPart == (Luid2)->HighPart)) - -/* ULONG - * RtlEqualMemory( - * IN VOID UNALIGNED *Destination, - * IN CONST VOID UNALIGNED *Source, - * IN SIZE_T Length) - */ -#define RtlEqualMemory(Destination, Source, Length) \ - (!memcmp(Destination, Source, Length)) +#if defined(_M_AMD64) +FORCEINLINE +ULONG +RtlCheckBit( + IN PRTL_BITMAP BitMapHeader, + IN ULONG BitPosition) +{ + return BitTest((LONG CONST*)BitMapHeader->Buffer, BitPosition); +} +#else +#define RtlCheckBit(BMH,BP) (((((PLONG)(BMH)->Buffer)[(BP)/32]) >> ((BP)%32)) & 0x1) +#endif // defined(_M_AMD64) -/* VOID - * RtlFillMemory( - * IN VOID UNALIGNED *Destination, - * IN SIZE_T Length, - * IN UCHAR Fill) - */ -#define RtlFillMemory(Destination, Length, Fill) \ - memset(Destination, Fill, Length) +#endif // !defined(MIDL_PASS) -#define RtlFillBytes RtlFillMemory +/* Byte Swap Functions */ +#if (defined(_M_IX86) && (_MSC_FULL_VER > 13009037 || defined(__GNUC__))) || \ + ((defined(_M_AMD64) || defined(_M_IA64)) \ + && (_MSC_FULL_VER > 13009175 || defined(__GNUC__))) -NTSYSAPI -VOID -NTAPI -RtlFreeUnicodeString( - IN OUT PUNICODE_STRING UnicodeString); +#define RtlUshortByteSwap(_x) _byteswap_ushort((USHORT)(_x)) +#define RtlUlongByteSwap(_x) _byteswap_ulong((_x)) +#define RtlUlonglongByteSwap(_x) _byteswap_uint64((_x)) -NTSYSAPI -NTSTATUS -NTAPI -RtlGUIDFromString( - IN PUNICODE_STRING GuidString, - OUT GUID *Guid); +#endif -NTSYSAPI -VOID -NTAPI -RtlInitUnicodeString( - IN OUT PUNICODE_STRING DestinationString, - IN PCWSTR SourceString OPTIONAL); +#if DBG -/* VOID - * RtlMoveMemory( - * IN VOID UNALIGNED *Destination, - * IN CONST VOID UNALIGNED *Source, - * IN SIZE_T Length) - */ -#define RtlMoveMemory(Destination, Source, Length) \ - memmove(Destination, Source, Length) +#define ASSERT(exp) \ + (VOID)((!(exp)) ? \ + RtlAssert( (PVOID)#exp, (PVOID)__FILE__, __LINE__, NULL ), FALSE : TRUE) -NTSYSAPI -NTSTATUS -NTAPI -RtlStringFromGUID( - IN REFGUID Guid, - OUT PUNICODE_STRING GuidString); +#define ASSERTMSG(msg, exp) \ + (VOID)((!(exp)) ? \ + RtlAssert( (PVOID)#exp, (PVOID)__FILE__, __LINE__, msg ), FALSE : TRUE) -/* VOID - * RtlZeroMemory( - * IN VOID UNALIGNED *Destination, - * IN SIZE_T Length) - */ -#define RtlZeroMemory(Destination, Length) \ - memset(Destination, 0, Length) +#define RTL_SOFT_ASSERT(exp) \ + (VOID)((!(exp)) ? \ + DbgPrint("%s(%d): Soft assertion failed\n Expression: %s\n", __FILE__, __LINE__, #exp), FALSE : TRUE) -#define RtlZeroBytes RtlZeroMemory +#define RTL_SOFT_ASSERTMSG(msg, exp) \ + (VOID)((!(exp)) ? \ + DbgPrint("%s(%d): Soft assertion failed\n Expression: %s\n Message: %s\n", __FILE__, __LINE__, #exp, (msg)), FALSE : TRUE) -#if (NTDDI_VERSION >= NTDDI_WIN2K) +#define RTL_VERIFY(exp) ASSERT(exp) +#define RTL_VERIFYMSG(msg, exp) ASSERTMSG(msg, exp) +#define RTL_SOFT_VERIFY(exp) RTL_SOFT_ASSERT(exp) +#define RTL_SOFT_VERIFYMSG(msg, exp) RTL_SOFT_ASSERTMSG(msg, exp) +#if defined(_MSC_VER) -NTSYSAPI -BOOLEAN -NTAPI -RtlAreBitsClear( - IN PRTL_BITMAP BitMapHeader, - IN ULONG StartingIndex, - IN ULONG Length); +#define NT_ASSERT(exp) \ + ((!(exp)) ? \ + (__annotation(L"Debug", L"AssertFail", L#exp), \ + DbgRaiseAssertionFailure(), FALSE) : TRUE) -NTSYSAPI -BOOLEAN -NTAPI -RtlAreBitsSet( - IN PRTL_BITMAP BitMapHeader, - IN ULONG StartingIndex, - IN ULONG Length); +#define NT_ASSERTMSG(msg, exp) \ + ((!(exp)) ? \ + (__annotation(L"Debug", L"AssertFail", L##msg), \ + DbgRaiseAssertionFailure(), FALSE) : TRUE) -NTSYSAPI -NTSTATUS -NTAPI -RtlAnsiStringToUnicodeString( - IN OUT PUNICODE_STRING DestinationString, - IN PANSI_STRING SourceString, - IN BOOLEAN AllocateDestinationString); +#define NT_ASSERTMSGW(msg, exp) \ + ((!(exp)) ? \ + (__annotation(L"Debug", L"AssertFail", msg), \ + DbgRaiseAssertionFailure(), FALSE) : TRUE) -NTSYSAPI -ULONG -NTAPI -RtlxAnsiStringToUnicodeSize( - IN PCANSI_STRING AnsiString); +#else -#define RtlAnsiStringToUnicodeSize(String) ( \ - NLS_MB_CODE_PAGE_TAG ? \ - RtlxAnsiStringToUnicodeSize(String) : \ - ((String)->Length + sizeof(ANSI_NULL)) * sizeof(WCHAR) \ -) +/* GCC doesn't support __annotation (nor PDB) */ +#define NT_ASSERT(exp) \ + (VOID)((!(exp)) ? (DbgRaiseAssertionFailure(), FALSE) : TRUE) -NTSYSAPI -NTSTATUS -NTAPI -RtlAppendUnicodeStringToString( - IN OUT PUNICODE_STRING Destination, - IN PCUNICODE_STRING Source); +#define NT_ASSERTMSG NT_ASSERT +#define NT_ASSERTMSGW NT_ASSERT -NTSYSAPI -NTSTATUS -NTAPI -RtlAppendUnicodeToString( - IN OUT PUNICODE_STRING Destination, - IN PCWSTR Source); +#endif -NTSYSAPI -NTSTATUS -NTAPI -RtlCheckRegistryKey( - IN ULONG RelativeTo, - IN PWSTR Path); +#else /* !DBG */ -NTSYSAPI -VOID -NTAPI -RtlClearAllBits( - IN PRTL_BITMAP BitMapHeader); +#define ASSERT(exp) ((VOID) 0) +#define ASSERTMSG(msg, exp) ((VOID) 0) -NTSYSAPI -VOID -NTAPI -RtlClearBits( - IN PRTL_BITMAP BitMapHeader, - IN ULONG StartingIndex, - IN ULONG NumberToClear); +#define RTL_SOFT_ASSERT(exp) ((VOID) 0) +#define RTL_SOFT_ASSERTMSG(msg, exp) ((VOID) 0) -NTSYSAPI -SIZE_T -NTAPI -RtlCompareMemory( - IN CONST VOID *Source1, - IN CONST VOID *Source2, - IN SIZE_T Length); +#define RTL_VERIFY(exp) ((exp) ? TRUE : FALSE) +#define RTL_VERIFYMSG(msg, exp) ((exp) ? TRUE : FALSE) -NTSYSAPI -LONG -NTAPI -RtlCompareUnicodeString( - IN PCUNICODE_STRING String1, - IN PCUNICODE_STRING String2, - IN BOOLEAN CaseInSensitive); +#define RTL_SOFT_VERIFY(exp) ((exp) ? TRUE : FALSE) +#define RTL_SOFT_VERIFYMSG(msg, exp) ((exp) ? TRUE : FALSE) -NTSYSAPI -LONG -NTAPI -RtlCompareUnicodeStrings( - IN PCWCH String1, - IN SIZE_T String1Length, - IN PCWCH String2, - IN SIZE_T String2Length, - IN BOOLEAN CaseInSensitive); +#define NT_ASSERT(exp) ((VOID)0) +#define NT_ASSERTMSG(exp) ((VOID)0) +#define NT_ASSERTMSGW(exp) ((VOID)0) -NTSYSAPI -VOID -NTAPI -RtlCopyUnicodeString( - IN OUT PUNICODE_STRING DestinationString, - IN PCUNICODE_STRING SourceString OPTIONAL); +#endif /* DBG */ -NTSYSAPI -NTSTATUS -NTAPI -RtlCreateRegistryKey( - IN ULONG RelativeTo, - IN PWSTR Path); +#if !defined(_WINBASE_) -NTSYSAPI -NTSTATUS -NTAPI -RtlCreateSecurityDescriptor( - IN OUT PSECURITY_DESCRIPTOR SecurityDescriptor, - IN ULONG Revision); +#if defined(_WIN64) && (defined(_NTDRIVER_) || defined(_NTDDK_) || defined(_NTIFS_) || defined(_NTHAL_) || defined(_NTOSP_)) -NTSYSAPI -NTSTATUS -NTAPI -RtlDeleteRegistryValue( - IN ULONG RelativeTo, - IN PCWSTR Path, - IN PCWSTR ValueName); +NTKERNELAPI +VOID +InitializeSListHead( + OUT PSLIST_HEADER SListHead); -NTSYSAPI -BOOLEAN -NTAPI -RtlEqualUnicodeString( - IN CONST UNICODE_STRING *String1, - IN CONST UNICODE_STRING *String2, - IN BOOLEAN CaseInSensitive); +#else -#if !defined(_AMD64_) && !defined(_IA64_) -NTSYSAPI -LARGE_INTEGER -NTAPI -RtlExtendedIntegerMultiply( - IN LARGE_INTEGER Multiplicand, - IN LONG Multiplier); +VOID +FORCEINLINE +InitializeSListHead( + OUT PSLIST_HEADER SListHead) +{ +#if defined(_IA64_) + ULONG64 FeatureBits; +#endif -NTSYSAPI -LARGE_INTEGER -NTAPI -RtlExtendedLargeIntegerDivide( - IN LARGE_INTEGER Dividend, - IN ULONG Divisor, - OUT PULONG Remainder OPTIONAL); +#if defined(_WIN64) + if (((ULONG_PTR)SListHead & 0xf) != 0) + { + RtlRaiseStatus(STATUS_DATATYPE_MISALIGNMENT); + } #endif -#if defined(_X86_) || defined(_IA64_) -NTSYSAPI -LARGE_INTEGER -NTAPI -RtlExtendedMagicDivide( - IN LARGE_INTEGER Dividend, - IN LARGE_INTEGER MagicDivisor, - IN CCHAR ShiftCount); + RtlZeroMemory(SListHead, sizeof(SLIST_HEADER)); + +#if defined(_IA64_) + FeatureBits = __getReg(CV_IA64_CPUID4); + if ((FeatureBits & KF_16BYTE_INSTR) != 0) + { + SListHead->Header16.HeaderType = 1; + SListHead->Header16.Init = 1; + } #endif +} -NTSYSAPI -VOID -NTAPI -RtlFreeAnsiString( - IN PANSI_STRING AnsiString); +#endif -NTSYSAPI -ULONG -NTAPI -RtlFindClearBits( - IN PRTL_BITMAP BitMapHeader, - IN ULONG NumberToFind, - IN ULONG HintIndex); +#if defined(_WIN64) -NTSYSAPI -ULONG +#define InterlockedPopEntrySList(Head) \ + ExpInterlockedPopEntrySList(Head) + +#define InterlockedPushEntrySList(Head, Entry) \ + ExpInterlockedPushEntrySList(Head, Entry) + +#define InterlockedFlushSList(Head) \ + ExpInterlockedFlushSList(Head) + +#define QueryDepthSList(Head) \ + ExQueryDepthSList(Head) + +#else /* !defined(_WIN64) */ + +NTKERNELAPI +PSLIST_ENTRY +FASTCALL +InterlockedPopEntrySList( + IN PSLIST_HEADER ListHead); + +NTKERNELAPI +PSLIST_ENTRY +FASTCALL +InterlockedPushEntrySList( + IN PSLIST_HEADER ListHead, + IN PSLIST_ENTRY ListEntry); + +#define InterlockedFlushSList(ListHead) \ + ExInterlockedFlushSList(ListHead) + +#define QueryDepthSList(Head) \ + ExQueryDepthSList(Head) + +#endif /* !defined(_WIN64) */ + +#endif /* !defined(_WINBASE_) */ + +/****************************************************************************** + * Kernel Functions * + ******************************************************************************/ + +NTHALAPI +KIRQL NTAPI -RtlFindClearBitsAndSet( - IN PRTL_BITMAP BitMapHeader, - IN ULONG NumberToFind, - IN ULONG HintIndex); +KeGetCurrentIrql( + VOID); -NTSYSAPI -ULONG +NTKERNELAPI +VOID NTAPI -RtlFindFirstRunClear( - IN PRTL_BITMAP BitMapHeader, - OUT PULONG StartingIndex); +KeInitializeEvent( + OUT PRKEVENT Event, + IN EVENT_TYPE Type, + IN BOOLEAN State); -NTSYSAPI -ULONG +NTKERNELAPI +VOID NTAPI -RtlFindClearRuns( - IN PRTL_BITMAP BitMapHeader, - OUT PRTL_BITMAP_RUN RunArray, - IN ULONG SizeOfRunArray, - IN BOOLEAN LocateLongestRuns); +KeClearEvent( + IN OUT PRKEVENT Event); -NTSYSAPI -ULONG +#if (NTDDI_VERSION >= NTDDI_WIN2K) + +NTKERNELAPI +VOID NTAPI -RtlFindLastBackwardRunClear( - IN PRTL_BITMAP BitMapHeader, - IN ULONG FromIndex, - OUT PULONG StartingRunIndex); +ProbeForRead( + IN CONST VOID *Address, /* CONST is added */ + IN SIZE_T Length, + IN ULONG Alignment); -NTSYSAPI -CCHAR +NTKERNELAPI +VOID NTAPI -RtlFindLeastSignificantBit( - IN ULONGLONG Set); +ProbeForWrite( + IN PVOID Address, + IN SIZE_T Length, + IN ULONG Alignment); -NTSYSAPI -ULONG +#if defined(SINGLE_GROUP_LEGACY_API) +NTKERNELAPI +VOID NTAPI -RtlFindLongestRunClear( - IN PRTL_BITMAP BitMapHeader, - OUT PULONG StartingIndex); +KeRevertToUserAffinityThread(VOID); -NTSYSAPI -CCHAR +NTKERNELAPI +VOID NTAPI -RtlFindMostSignificantBit( - IN ULONGLONG Set); +KeSetSystemAffinityThread( + IN KAFFINITY Affinity); -NTSYSAPI -ULONG +NTKERNELAPI +VOID NTAPI -RtlFindNextForwardRunClear( - IN PRTL_BITMAP BitMapHeader, - IN ULONG FromIndex, - OUT PULONG StartingRunIndex); +KeSetTargetProcessorDpc( + IN OUT PRKDPC Dpc, + IN CCHAR Number); -NTSYSAPI -ULONG +NTKERNELAPI +KAFFINITY NTAPI -RtlFindSetBits( - IN PRTL_BITMAP BitMapHeader, - IN ULONG NumberToFind, - IN ULONG HintIndex); +KeQueryActiveProcessors( + VOID); +#endif -NTSYSAPI -ULONG +#if !defined(_M_AMD64) +NTKERNELAPI +ULONGLONG NTAPI -RtlFindSetBitsAndClear( - IN PRTL_BITMAP BitMapHeader, - IN ULONG NumberToFind, - IN ULONG HintIndex); +KeQueryInterruptTime( + VOID); -NTSYSAPI +NTKERNELAPI VOID NTAPI -RtlInitAnsiString( - IN OUT PANSI_STRING DestinationString, - IN PCSZ SourceString); +KeQuerySystemTime( + OUT PLARGE_INTEGER CurrentTime); +#endif /* !_M_AMD64 */ -NTSYSAPI +#if defined(_X86_) && (defined(_WDM_INCLUDED_) || defined(WIN9X_COMPAT_SPINLOCK)) +NTKERNELAPI VOID NTAPI -RtlInitializeBitMap( - IN PRTL_BITMAP BitMapHeader, - IN PULONG BitMapBuffer, - IN ULONG SizeOfBitMap); +KeInitializeSpinLock( + IN PKSPIN_LOCK SpinLock); +#else +FORCEINLINE +VOID +KeInitializeSpinLock(IN PKSPIN_LOCK SpinLock) +{ + /* Clear the lock */ + *SpinLock = 0; +} +#endif -NTSYSAPI +NTKERNELAPI +DECLSPEC_NORETURN VOID NTAPI -RtlInitString( - IN OUT PSTRING DestinationString, - IN PCSZ SourceString); +KeBugCheckEx( + IN ULONG BugCheckCode, + IN ULONG_PTR BugCheckParameter1, + IN ULONG_PTR BugCheckParameter2, + IN ULONG_PTR BugCheckParameter3, + IN ULONG_PTR BugCheckParameter4); -NTSYSAPI -NTSTATUS +NTKERNELAPI +BOOLEAN NTAPI -RtlIntegerToUnicodeString( - IN ULONG Value, - IN ULONG Base OPTIONAL, - IN OUT PUNICODE_STRING String); +KeCancelTimer( + IN OUT PKTIMER); -NTSYSAPI +NTKERNELAPI NTSTATUS NTAPI -RtlInt64ToUnicodeString( - IN ULONGLONG Value, - IN ULONG Base OPTIONAL, - IN OUT PUNICODE_STRING String); - -#ifdef _WIN64 -#define RtlIntPtrToUnicodeString(Value, Base, String) \ - RtlInt64ToUnicodeString(Value, Base, String) -#else -#define RtlIntPtrToUnicodeString(Value, Base, String) \ - RtlIntegerToUnicodeString(Value, Base, String) -#endif - -/* BOOLEAN - * RtlIsZeroLuid( - * IN PLUID L1); - */ -#define RtlIsZeroLuid(_L1) \ - ((BOOLEAN) ((!(_L1)->LowPart) && (!(_L1)->HighPart))) +KeDelayExecutionThread( + IN KPROCESSOR_MODE WaitMode, + IN BOOLEAN Alertable, + IN PLARGE_INTEGER Interval); -NTSYSAPI -ULONG +NTKERNELAPI +BOOLEAN NTAPI -RtlLengthSecurityDescriptor( - IN PSECURITY_DESCRIPTOR SecurityDescriptor); +KeDeregisterBugCheckCallback( + IN OUT PKBUGCHECK_CALLBACK_RECORD CallbackRecord); -NTSYSAPI -ULONG +NTKERNELAPI +VOID NTAPI -RtlNumberOfClearBits( - IN PRTL_BITMAP BitMapHeader); +KeEnterCriticalRegion(VOID); -NTSYSAPI -ULONG +NTKERNELAPI +VOID NTAPI -RtlNumberOfSetBits( - IN PRTL_BITMAP BitMapHeader); +KeInitializeDeviceQueue( + OUT PKDEVICE_QUEUE DeviceQueue); -NTSYSAPI -NTSTATUS +NTKERNELAPI +VOID NTAPI -RtlQueryRegistryValues( - IN ULONG RelativeTo, - IN PCWSTR Path, - IN OUT PRTL_QUERY_REGISTRY_TABLE QueryTable, - IN PVOID Context OPTIONAL, - IN PVOID Environment OPTIONAL); +KeInitializeDpc( + OUT PRKDPC Dpc, + IN PKDEFERRED_ROUTINE DeferredRoutine, + IN PVOID DeferredContext OPTIONAL); -#define SHORT_SIZE (sizeof(USHORT)) -#define SHORT_MASK (SHORT_SIZE - 1) -#define LONG_SIZE (sizeof(LONG)) -#define LONGLONG_SIZE (sizeof(LONGLONG)) -#define LONG_MASK (LONG_SIZE - 1) -#define LONGLONG_MASK (LONGLONG_SIZE - 1) -#define LOWBYTE_MASK 0x00FF +NTKERNELAPI +VOID +NTAPI +KeInitializeMutex( + OUT PRKMUTEX Mutex, + IN ULONG Level); -#define FIRSTBYTE(VALUE) ((VALUE) & LOWBYTE_MASK) -#define SECONDBYTE(VALUE) (((VALUE) >> 8) & LOWBYTE_MASK) -#define THIRDBYTE(VALUE) (((VALUE) >> 16) & LOWBYTE_MASK) -#define FOURTHBYTE(VALUE) (((VALUE) >> 24) & LOWBYTE_MASK) +NTKERNELAPI +VOID +NTAPI +KeInitializeSemaphore( + OUT PRKSEMAPHORE Semaphore, + IN LONG Count, + IN LONG Limit); -NTSYSAPI +NTKERNELAPI VOID NTAPI -RtlSetAllBits( - IN PRTL_BITMAP BitMapHeader); +KeInitializeTimer( + OUT PKTIMER Timer); -NTSYSAPI +NTKERNELAPI VOID NTAPI -RtlSetBits( - IN PRTL_BITMAP BitMapHeader, - IN ULONG StartingIndex, - IN ULONG NumberToSet); +KeInitializeTimerEx( + OUT PKTIMER Timer, + IN TIMER_TYPE Type); -NTSYSAPI -NTSTATUS +NTKERNELAPI +BOOLEAN NTAPI -RtlSetDaclSecurityDescriptor( - IN OUT PSECURITY_DESCRIPTOR SecurityDescriptor, - IN BOOLEAN DaclPresent, - IN PACL Dacl OPTIONAL, - IN BOOLEAN DaclDefaulted OPTIONAL); +KeInsertByKeyDeviceQueue( + IN OUT PKDEVICE_QUEUE DeviceQueue, + IN OUT PKDEVICE_QUEUE_ENTRY DeviceQueueEntry, + IN ULONG SortKey); -#if defined(_AMD64_) +NTKERNELAPI +BOOLEAN +NTAPI +KeInsertDeviceQueue( + IN OUT PKDEVICE_QUEUE DeviceQueue, + IN OUT PKDEVICE_QUEUE_ENTRY DeviceQueueEntry); -/* VOID - * RtlStoreUlong( - * IN PULONG Address, - * IN ULONG Value); - */ -#define RtlStoreUlong(Address,Value) \ - *(ULONG UNALIGNED *)(Address) = (Value) +NTKERNELAPI +BOOLEAN +NTAPI +KeInsertQueueDpc( + IN OUT PRKDPC Dpc, + IN PVOID SystemArgument1 OPTIONAL, + IN PVOID SystemArgument2 OPTIONAL); -/* VOID - * RtlStoreUlonglong( - * IN OUT PULONGLONG Address, - * ULONGLONG Value); - */ -#define RtlStoreUlonglong(Address,Value) \ - *(ULONGLONG UNALIGNED *)(Address) = (Value) - -/* VOID - * RtlStoreUshort( - * IN PUSHORT Address, - * IN USHORT Value); - */ -#define RtlStoreUshort(Address,Value) \ - *(USHORT UNALIGNED *)(Address) = (Value) - -/* VOID - * RtlRetrieveUshort( - * PUSHORT DestinationAddress, - * PUSHORT SourceAddress); - */ -#define RtlRetrieveUshort(DestAddress,SrcAddress) \ - *(USHORT UNALIGNED *)(DestAddress) = *(USHORT)(SrcAddress) - -/* VOID - * RtlRetrieveUlong( - * PULONG DestinationAddress, - * PULONG SourceAddress); - */ -#define RtlRetrieveUlong(DestAddress,SrcAddress) \ - *(ULONG UNALIGNED *)(DestAddress) = *(PULONG)(SrcAddress) - -#else - -#define RtlStoreUlong(Address,Value) \ - if ((ULONG_PTR)(Address) & LONG_MASK) { \ - ((PUCHAR) (Address))[LONG_LEAST_SIGNIFICANT_BIT] = (UCHAR)(FIRSTBYTE(Value)); \ - ((PUCHAR) (Address))[LONG_3RD_MOST_SIGNIFICANT_BIT] = (UCHAR)(SECONDBYTE(Value)); \ - ((PUCHAR) (Address))[LONG_2ND_MOST_SIGNIFICANT_BIT] = (UCHAR)(THIRDBYTE(Value)); \ - ((PUCHAR) (Address))[LONG_MOST_SIGNIFICANT_BIT] = (UCHAR)(FOURTHBYTE(Value)); \ - } \ - else { \ - *((PULONG)(Address)) = (ULONG) (Value); \ - } - -#define RtlStoreUlonglong(Address,Value) \ - if ((ULONG_PTR)(Address) & LONGLONG_MASK) { \ - RtlStoreUlong((ULONG_PTR)(Address), \ - (ULONGLONG)(Value) & 0xFFFFFFFF); \ - RtlStoreUlong((ULONG_PTR)(Address)+sizeof(ULONG), \ - (ULONGLONG)(Value) >> 32); \ - } else { \ - *((PULONGLONG)(Address)) = (ULONGLONG)(Value); \ - } - -#define RtlStoreUshort(Address,Value) \ - if ((ULONG_PTR)(Address) & SHORT_MASK) { \ - ((PUCHAR) (Address))[SHORT_LEAST_SIGNIFICANT_BIT] = (UCHAR)(FIRSTBYTE(Value)); \ - ((PUCHAR) (Address))[SHORT_MOST_SIGNIFICANT_BIT ] = (UCHAR)(SECONDBYTE(Value)); \ - } \ - else { \ - *((PUSHORT) (Address)) = (USHORT)Value; \ - } - -#define RtlRetrieveUshort(DestAddress,SrcAddress) \ - if ((ULONG_PTR)(SrcAddress) & LONG_MASK) \ - { \ - ((PUCHAR)(DestAddress))[0]=((PUCHAR)(SrcAddress))[0]; \ - ((PUCHAR)(DestAddress))[1]=((PUCHAR)(SrcAddress))[1]; \ - } \ - else \ - { \ - *((PUSHORT)(DestAddress))=*((PUSHORT)(SrcAddress)); \ - } - -#define RtlRetrieveUlong(DestAddress,SrcAddress) \ - if ((ULONG_PTR)(SrcAddress) & LONG_MASK) \ - { \ - ((PUCHAR)(DestAddress))[0]=((PUCHAR)(SrcAddress))[0]; \ - ((PUCHAR)(DestAddress))[1]=((PUCHAR)(SrcAddress))[1]; \ - ((PUCHAR)(DestAddress))[2]=((PUCHAR)(SrcAddress))[2]; \ - ((PUCHAR)(DestAddress))[3]=((PUCHAR)(SrcAddress))[3]; \ - } \ - else \ - { \ - *((PULONG)(DestAddress))=*((PULONG)(SrcAddress)); \ - } - -#endif /* defined(_AMD64_) */ - -#ifdef _WIN64 -/* VOID - * RtlStoreUlongPtr( - * IN OUT PULONG_PTR Address, - * IN ULONG_PTR Value); - */ -#define RtlStoreUlongPtr(Address,Value) RtlStoreUlonglong(Address,Value) -#else -#define RtlStoreUlongPtr(Address,Value) RtlStoreUlong(Address,Value) -#endif /* _WIN64 */ - - -NTSYSAPI -BOOLEAN -NTAPI -RtlTimeFieldsToTime( - IN PTIME_FIELDS TimeFields, - IN PLARGE_INTEGER Time); - -NTSYSAPI +NTKERNELAPI VOID NTAPI -RtlTimeToTimeFields( - IN PLARGE_INTEGER Time, - IN PTIME_FIELDS TimeFields); - -NTSYSAPI -ULONG -FASTCALL -RtlUlongByteSwap( - IN ULONG Source); +KeLeaveCriticalRegion(VOID); -NTSYSAPI -ULONGLONG -FASTCALL -RtlUlonglongByteSwap( - IN ULONGLONG Source); +NTHALAPI +LARGE_INTEGER +NTAPI +KeQueryPerformanceCounter( + OUT PLARGE_INTEGER PerformanceFrequency OPTIONAL); -NTSYSAPI -NTSTATUS +NTKERNELAPI +KPRIORITY NTAPI -RtlUnicodeStringToAnsiString( - IN OUT PANSI_STRING DestinationString, - IN PCUNICODE_STRING SourceString, - IN BOOLEAN AllocateDestinationString); +KeQueryPriorityThread( + IN PRKTHREAD Thread); -NTSYSAPI +NTKERNELAPI ULONG NTAPI -RtlxUnicodeStringToAnsiSize( - IN PCUNICODE_STRING UnicodeString); - -#define RtlUnicodeStringToAnsiSize(String) ( \ - NLS_MB_CODE_PAGE_TAG ? \ - RtlxUnicodeStringToAnsiSize(String) : \ - ((String)->Length + sizeof(UNICODE_NULL)) / sizeof(WCHAR) \ -) +KeQueryTimeIncrement( + VOID); -NTSYSAPI -NTSTATUS +NTKERNELAPI +LONG NTAPI -RtlUnicodeStringToInteger( - IN PCUNICODE_STRING String, - IN ULONG Base OPTIONAL, - OUT PULONG Value); +KeReadStateEvent( + IN PRKEVENT Event); -NTSYSAPI -WCHAR +NTKERNELAPI +LONG NTAPI -RtlUpcaseUnicodeChar( - IN WCHAR SourceCharacter); +KeReadStateMutex( + IN PRKMUTEX Mutex); -NTSYSAPI -USHORT -FASTCALL -RtlUshortByteSwap( - IN USHORT Source); -NTSYSAPI -BOOLEAN +NTKERNELAPI +LONG NTAPI -RtlValidRelativeSecurityDescriptor( - IN PSECURITY_DESCRIPTOR SecurityDescriptorInput, - IN ULONG SecurityDescriptorLength, - IN SECURITY_INFORMATION RequiredInformation); +KeReadStateSemaphore( + IN PRKSEMAPHORE Semaphore); -NTSYSAPI +NTKERNELAPI BOOLEAN NTAPI -RtlValidSecurityDescriptor( - IN PSECURITY_DESCRIPTOR SecurityDescriptor); +KeReadStateTimer( + IN PKTIMER Timer); -NTSYSAPI -NTSTATUS +NTKERNELAPI +BOOLEAN NTAPI -RtlWriteRegistryValue( - IN ULONG RelativeTo, - IN PCWSTR Path, - IN PCWSTR ValueName, - IN ULONG ValueType, - IN PVOID ValueData, - IN ULONG ValueLength); - - -#endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */ - - -#if (NTDDI_VERSION >= NTDDI_WIN2KSP3) -NTSYSAPI -VOID -FASTCALL -RtlPrefetchMemoryNonTemporal( - IN PVOID Source, - IN SIZE_T Length); -#endif - - -#if (NTDDI_VERSION >= NTDDI_WINXP) - +KeRegisterBugCheckCallback( + OUT PKBUGCHECK_CALLBACK_RECORD CallbackRecord, + IN PKBUGCHECK_CALLBACK_ROUTINE CallbackRoutine, + IN PVOID Buffer, + IN ULONG Length, + IN PUCHAR Component); +NTKERNELAPI +LONG +NTAPI +KeReleaseMutex( + IN OUT PRKMUTEX Mutex, + IN BOOLEAN Wait); -NTSYSAPI -VOID +NTKERNELAPI +LONG NTAPI -RtlClearBit( - PRTL_BITMAP BitMapHeader, - ULONG BitNumber); +KeReleaseSemaphore( + IN OUT PRKSEMAPHORE Semaphore, + IN KPRIORITY Increment, + IN LONG Adjustment, + IN BOOLEAN Wait); -NTSYSAPI -WCHAR +NTKERNELAPI +PKDEVICE_QUEUE_ENTRY NTAPI -RtlDowncaseUnicodeChar( - IN WCHAR SourceCharacter); +KeRemoveByKeyDeviceQueue( + IN OUT PKDEVICE_QUEUE DeviceQueue, + IN ULONG SortKey); -NTSYSAPI -VOID +NTKERNELAPI +PKDEVICE_QUEUE_ENTRY NTAPI -RtlSetBit( - PRTL_BITMAP BitMapHeader, - ULONG BitNumber); +KeRemoveDeviceQueue( + IN OUT PKDEVICE_QUEUE DeviceQueue); -NTSYSAPI +NTKERNELAPI BOOLEAN NTAPI -RtlTestBit( - IN PRTL_BITMAP BitMapHeader, - IN ULONG BitNumber); +KeRemoveEntryDeviceQueue( + IN OUT PKDEVICE_QUEUE DeviceQueue, + IN OUT PKDEVICE_QUEUE_ENTRY DeviceQueueEntry); -NTSYSAPI -NTSTATUS +NTKERNELAPI +BOOLEAN NTAPI -RtlHashUnicodeString( - IN CONST UNICODE_STRING *String, - IN BOOLEAN CaseInSensitive, - IN ULONG HashAlgorithm, - OUT PULONG HashValue); - - -#endif /* (NTDDI_VERSION >= NTDDI_WINXP) */ - -#if (NTDDI_VERSION >= NTDDI_VISTA) - - +KeRemoveQueueDpc( + IN OUT PRKDPC Dpc); -NTSYSAPI -ULONG +NTKERNELAPI +LONG NTAPI -RtlNumberOfSetBitsUlongPtr( - IN ULONG_PTR Target); +KeResetEvent( + IN OUT PRKEVENT Event); -NTSYSAPI -ULONGLONG +NTKERNELAPI +LONG NTAPI -RtlIoDecodeMemIoResource( - IN struct _IO_RESOURCE_DESCRIPTOR *Descriptor, - OUT PULONGLONG Alignment OPTIONAL, - OUT PULONGLONG MinimumAddress OPTIONAL, - OUT PULONGLONG MaximumAddress OPTIONAL); +KeSetEvent( + IN OUT PRKEVENT Event, + IN KPRIORITY Increment, + IN BOOLEAN Wait); -NTSYSAPI -NTSTATUS +NTKERNELAPI +VOID NTAPI -RtlIoEncodeMemIoResource( - IN struct _IO_RESOURCE_DESCRIPTOR *Descriptor, - IN UCHAR Type, - IN ULONGLONG Length, - IN ULONGLONG Alignment, - IN ULONGLONG MinimumAddress, - IN ULONGLONG MaximumAddress); +KeSetImportanceDpc( + IN OUT PRKDPC Dpc, + IN KDPC_IMPORTANCE Importance); -NTSYSAPI -ULONGLONG +NTKERNELAPI +KPRIORITY NTAPI -RtlCmDecodeMemIoResource( - IN struct _CM_PARTIAL_RESOURCE_DESCRIPTOR *Descriptor, - OUT PULONGLONG Start OPTIONAL); +KeSetPriorityThread( + IN OUT PKTHREAD Thread, + IN KPRIORITY Priority); -NTSYSAPI -NTSTATUS +NTKERNELAPI +BOOLEAN NTAPI -RtlFindClosestEncodableLength( - IN ULONGLONG SourceLength, - OUT PULONGLONG TargetLength); +KeSetTimer( + IN OUT PKTIMER Timer, + IN LARGE_INTEGER DueTime, + IN PKDPC Dpc OPTIONAL); -NTSYSAPI -NTSTATUS +NTKERNELAPI +BOOLEAN NTAPI -RtlCmEncodeMemIoResource( - IN PCM_PARTIAL_RESOURCE_DESCRIPTOR Descriptor, - IN UCHAR Type, - IN ULONGLONG Length, - IN ULONGLONG Start); - - -#endif /* (NTDDI_VERSION >= NTDDI_VISTA) */ - -#if (NTDDI_VERSION >= NTDDI_WIN7) - - +KeSetTimerEx( + IN OUT PKTIMER Timer, + IN LARGE_INTEGER DueTime, + IN LONG Period OPTIONAL, + IN PKDPC Dpc OPTIONAL); -NTSYSAPI -NTSTATUS -NTAPI -RtlUnicodeToUTF8N( - OUT PCHAR UTF8StringDestination, - IN ULONG UTF8StringMaxByteCount, - OUT PULONG UTF8StringActualByteCount, - IN PCWCH UnicodeStringSource, - IN ULONG UnicodeStringByteCount); - -NTSYSAPI -NTSTATUS -NTAPI -RtlUTF8ToUnicodeN( - OUT PWSTR UnicodeStringDestination, - IN ULONG UnicodeStringMaxByteCount, - OUT PULONG UnicodeStringActualByteCount, - IN PCCH UTF8StringSource, - IN ULONG UTF8StringByteCount); - -NTSYSAPI -ULONG64 -NTAPI -RtlGetEnabledExtendedFeatures( - IN ULONG64 FeatureMask); - - -#endif /* (NTDDI_VERSION >= NTDDI_WIN7) */ - - -#if !defined(MIDL_PASS) -/* inline funftions */ -//DECLSPEC_DEPRECATED_DDK_WINXP -static __inline -LARGE_INTEGER -NTAPI_INLINE -RtlConvertLongToLargeInteger( - IN LONG SignedInteger) -{ - LARGE_INTEGER ret; - ret.QuadPart = SignedInteger; - return ret; -} - -//DECLSPEC_DEPRECATED_DDK_WINXP -static __inline -LARGE_INTEGER -NTAPI_INLINE -RtlConvertUlongToLargeInteger( - IN ULONG UnsignedInteger) -{ - LARGE_INTEGER ret; - ret.QuadPart = UnsignedInteger; - return ret; -} - -//DECLSPEC_DEPRECATED_DDK_WINXP -static __inline -LARGE_INTEGER -NTAPI_INLINE -RtlLargeIntegerShiftLeft( - IN LARGE_INTEGER LargeInteger, - IN CCHAR ShiftCount) -{ - LARGE_INTEGER Result; - - Result.QuadPart = LargeInteger.QuadPart << ShiftCount; - return Result; -} - -//DECLSPEC_DEPRECATED_DDK_WINXP -static __inline -LARGE_INTEGER -NTAPI_INLINE -RtlLargeIntegerShiftRight( - IN LARGE_INTEGER LargeInteger, - IN CCHAR ShiftCount) -{ - LARGE_INTEGER Result; - - Result.QuadPart = (ULONG64)LargeInteger.QuadPart >> ShiftCount; - return Result; -} - -//DECLSPEC_DEPRECATED_DDK -static __inline -ULONG -NTAPI_INLINE -RtlEnlargedUnsignedDivide( - IN ULARGE_INTEGER Dividend, - IN ULONG Divisor, - IN OUT PULONG Remainder) -{ - if (Remainder) - *Remainder = (ULONG)(Dividend.QuadPart % Divisor); - return (ULONG)(Dividend.QuadPart / Divisor); -} - -//DECLSPEC_DEPRECATED_DDK -static __inline -LARGE_INTEGER -NTAPI_INLINE -RtlLargeIntegerNegate( - IN LARGE_INTEGER Subtrahend) -{ - LARGE_INTEGER Difference; - - Difference.QuadPart = -Subtrahend.QuadPart; - return Difference; -} - -//DECLSPEC_DEPRECATED_DDK -static __inline -LARGE_INTEGER -NTAPI_INLINE -RtlLargeIntegerSubtract( - IN LARGE_INTEGER Minuend, - IN LARGE_INTEGER Subtrahend) -{ - LARGE_INTEGER Difference; - - Difference.QuadPart = Minuend.QuadPart - Subtrahend.QuadPart; - return Difference; -} - -//DECLSPEC_DEPRECATED_DDK -static __inline -LARGE_INTEGER -NTAPI_INLINE -RtlEnlargedUnsignedMultiply( - IN ULONG Multiplicand, - IN ULONG Multiplier) -{ - LARGE_INTEGER ret; - ret.QuadPart = (ULONGLONG)Multiplicand * (ULONGLONG)Multiplier; - return ret; -} - -//DECLSPEC_DEPRECATED_DDK -static __inline -LARGE_INTEGER -NTAPI_INLINE -RtlEnlargedIntegerMultiply( - IN LONG Multiplicand, - IN LONG Multiplier) -{ - LARGE_INTEGER ret; - ret.QuadPart = (LONGLONG)Multiplicand * (ULONGLONG)Multiplier; - return ret; -} - -FORCEINLINE -VOID -RtlInitEmptyAnsiString( - OUT PANSI_STRING AnsiString, - IN PCHAR Buffer, - IN USHORT BufferSize) -{ - AnsiString->Length = 0; - AnsiString->MaximumLength = BufferSize; - AnsiString->Buffer = Buffer; -} - -FORCEINLINE -VOID -RtlInitEmptyUnicodeString( - OUT PUNICODE_STRING UnicodeString, - IN PWSTR Buffer, - IN USHORT BufferSize) -{ - UnicodeString->Length = 0; - UnicodeString->MaximumLength = BufferSize; - UnicodeString->Buffer = Buffer; -} - -#if defined(_AMD64_) || defined(_IA64_) - - -static __inline -LARGE_INTEGER -NTAPI_INLINE -RtlExtendedIntegerMultiply( - IN LARGE_INTEGER Multiplicand, - IN LONG Multiplier) -{ - LARGE_INTEGER ret; - ret.QuadPart = Multiplicand.QuadPart * Multiplier; - return ret; -} - -static __inline -LARGE_INTEGER -NTAPI_INLINE -RtlExtendedLargeIntegerDivide( - IN LARGE_INTEGER Dividend, - IN ULONG Divisor, - OUT PULONG Remainder OPTIONAL) -{ - LARGE_INTEGER ret; - ret.QuadPart = (ULONG64)Dividend.QuadPart / Divisor; - if (Remainder) - *Remainder = (ULONG)(Dividend.QuadPart % Divisor); - return ret; -} - - - -#endif /* defined(_AMD64_) || defined(_IA64_) */ - - -#if defined(_AMD64_) - -#define MultiplyHigh __mulh -#define UnsignedMultiplyHigh __umulh - -//DECLSPEC_DEPRECATED_DDK -static __inline -LARGE_INTEGER -NTAPI_INLINE -RtlExtendedMagicDivide( - IN LARGE_INTEGER Dividend, - IN LARGE_INTEGER MagicDivisor, - IN CCHAR ShiftCount) -{ - LARGE_INTEGER ret; - ULONG64 ret64; - BOOLEAN Pos; - Pos = (Dividend.QuadPart >= 0); - ret64 = UnsignedMultiplyHigh(Pos ? Dividend.QuadPart : -Dividend.QuadPart, - MagicDivisor.QuadPart); - ret64 >>= ShiftCount; - ret.QuadPart = Pos ? ret64 : -ret64; - return ret; -} -#endif - -//DECLSPEC_DEPRECATED_DDK -static __inline -LARGE_INTEGER -NTAPI_INLINE -RtlLargeIntegerAdd( - IN LARGE_INTEGER Addend1, - IN LARGE_INTEGER Addend2) -{ - LARGE_INTEGER ret; - ret.QuadPart = Addend1.QuadPart + Addend2.QuadPart; - return ret; -} - -/* VOID - * RtlLargeIntegerAnd( - * IN OUT LARGE_INTEGER Result, - * IN LARGE_INTEGER Source, - * IN LARGE_INTEGER Mask); - */ -#define RtlLargeIntegerAnd(Result, Source, Mask) \ - Result.QuadPart = Source.QuadPart & Mask.QuadPart - -//DECLSPEC_DEPRECATED_DDK -static __inline -LARGE_INTEGER -NTAPI_INLINE -RtlLargeIntegerArithmeticShift( - IN LARGE_INTEGER LargeInteger, - IN CCHAR ShiftCount) -{ - LARGE_INTEGER ret; - ret.QuadPart = LargeInteger.QuadPart >> ShiftCount; - return ret; -} - -/* BOOLEAN - * RtlLargeIntegerEqualTo( - * IN LARGE_INTEGER Operand1, - * IN LARGE_INTEGER Operand2); - */ -#define RtlLargeIntegerEqualTo(X,Y) \ - (!(((X).LowPart ^ (Y).LowPart) | ((X).HighPart ^ (Y).HighPart))) - -FORCEINLINE -PVOID -RtlSecureZeroMemory( - OUT PVOID Pointer, - IN SIZE_T Size) -{ - volatile char* vptr = (volatile char*)Pointer; -#if defined(_M_AMD64) - __stosb((PUCHAR)vptr, 0, Size); -#else - char * endptr = (char *)vptr + Size; - while (vptr < endptr) { - *vptr = 0; vptr++; - } -#endif - return Pointer; -} - -#if defined(_M_AMD64) -FORCEINLINE -BOOLEAN -RtlCheckBit( - IN PRTL_BITMAP BitMapHeader, - IN ULONG BitPosition) -{ - return BitTest64((LONG64 CONST*)BitMapHeader->Buffer, (LONG64)BitPosition); -} -#else -#define RtlCheckBit(BMH,BP) (((((PLONG)(BMH)->Buffer)[(BP)/32]) >> ((BP)%32)) & 0x1) -#endif /* defined(_M_AMD64) */ - -#define RtlLargeIntegerGreaterThan(X,Y) ( \ - (((X).HighPart == (Y).HighPart) && ((X).LowPart > (Y).LowPart)) || \ - ((X).HighPart > (Y).HighPart) \ -) - -#define RtlLargeIntegerGreaterThanOrEqualTo(X,Y) ( \ - (((X).HighPart == (Y).HighPart) && ((X).LowPart >= (Y).LowPart)) || \ - ((X).HighPart > (Y).HighPart) \ -) - -#define RtlLargeIntegerNotEqualTo(X,Y) ( \ - (((X).LowPart ^ (Y).LowPart) | ((X).HighPart ^ (Y).HighPart)) \ -) - -#define RtlLargeIntegerLessThan(X,Y) ( \ - (((X).HighPart == (Y).HighPart) && ((X).LowPart < (Y).LowPart)) || \ - ((X).HighPart < (Y).HighPart) \ -) - -#define RtlLargeIntegerLessThanOrEqualTo(X,Y) ( \ - (((X).HighPart == (Y).HighPart) && ((X).LowPart <= (Y).LowPart)) || \ - ((X).HighPart < (Y).HighPart) \ -) - -#define RtlLargeIntegerGreaterThanZero(X) ( \ - (((X).HighPart == 0) && ((X).LowPart > 0)) || \ - ((X).HighPart > 0 ) \ -) - -#define RtlLargeIntegerGreaterOrEqualToZero(X) ( (X).HighPart >= 0 ) - -#define RtlLargeIntegerEqualToZero(X) ( !((X).LowPart | (X).HighPart) ) - -#define RtlLargeIntegerNotEqualToZero(X) ( ((X).LowPart | (X).HighPart) ) - -#define RtlLargeIntegerLessThanZero(X) ( ((X).HighPart < 0) ) - -#define RtlLargeIntegerLessOrEqualToZero(X) ( ((X).HighPart < 0) || !((X).LowPart | (X).HighPart) ) - -#endif /* !defined(MIDL_PASS) */ - -/* Byte Swap Functions */ -#if (defined(_M_IX86) && (_MSC_FULL_VER > 13009037 || defined(__GNUC__))) || \ - ((defined(_M_AMD64) || defined(_M_IA64)) \ - && (_MSC_FULL_VER > 13009175 || defined(__GNUC__))) - -#define RtlUshortByteSwap(_x) _byteswap_ushort((USHORT)(_x)) -#define RtlUlongByteSwap(_x) _byteswap_ulong((_x)) -#define RtlUlonglongByteSwap(_x) _byteswap_uint64((_x)) - -#endif - -#if DBG - -#define ASSERT(exp) \ - (VOID)((!(exp)) ? \ - RtlAssert( (PVOID)#exp, (PVOID)__FILE__, __LINE__, NULL ), FALSE : TRUE) - -#define ASSERTMSG(msg, exp) \ - (VOID)((!(exp)) ? \ - RtlAssert( (PVOID)#exp, (PVOID)__FILE__, __LINE__, msg ), FALSE : TRUE) - -#define RTL_SOFT_ASSERT(exp) \ - (VOID)((!(exp)) ? \ - DbgPrint("%s(%d): Soft assertion failed\n Expression: %s\n", __FILE__, __LINE__, #exp), FALSE : TRUE) - -#define RTL_SOFT_ASSERTMSG(msg, exp) \ - (VOID)((!(exp)) ? \ - DbgPrint("%s(%d): Soft assertion failed\n Expression: %s\n Message: %s\n", __FILE__, __LINE__, #exp, (msg)), FALSE : TRUE) - -#define RTL_VERIFY(exp) ASSERT(exp) -#define RTL_VERIFYMSG(msg, exp) ASSERTMSG(msg, exp) - -#define RTL_SOFT_VERIFY(exp) RTL_SOFT_ASSERT(exp) -#define RTL_SOFT_VERIFYMSG(msg, exp) RTL_SOFT_ASSERTMSG(msg, exp) - -#if defined(_MSC_VER) - -#define NT_ASSERT(exp) \ - ((!(exp)) ? \ - (__annotation(L"Debug", L"AssertFail", L#exp), \ - DbgRaiseAssertionFailure(), FALSE) : TRUE) - -#define NT_ASSERTMSG(msg, exp) \ - ((!(exp)) ? \ - (__annotation(L"Debug", L"AssertFail", L##msg), \ - DbgRaiseAssertionFailure(), FALSE) : TRUE) - -#define NT_ASSERTMSGW(msg, exp) \ - ((!(exp)) ? \ - (__annotation(L"Debug", L"AssertFail", msg), \ - DbgRaiseAssertionFailure(), FALSE) : TRUE) - -#define NT_VERIFY NT_ASSERT -#define NT_VERIFYMSG NT_ASSERTMSG -#define NT_VERIFYMSGW NT_ASSERTMSGW - -#else - -/* GCC doesn't support __annotation (nor PDB) */ -#define NT_ASSERT(exp) \ - (VOID)((!(exp)) ? (DbgRaiseAssertionFailure(), FALSE) : TRUE) - -#define NT_ASSERTMSG NT_ASSERT -#define NT_ASSERTMSGW NT_ASSERT - -#endif - -#else /* !DBG */ - -#define ASSERT(exp) ((VOID) 0) -#define ASSERTMSG(msg, exp) ((VOID) 0) - -#define RTL_SOFT_ASSERT(exp) ((VOID) 0) -#define RTL_SOFT_ASSERTMSG(msg, exp) ((VOID) 0) - -#define RTL_VERIFY(exp) ((exp) ? TRUE : FALSE) -#define RTL_VERIFYMSG(msg, exp) ((exp) ? TRUE : FALSE) - -#define RTL_SOFT_VERIFY(exp) ((exp) ? TRUE : FALSE) -#define RTL_SOFT_VERIFYMSG(msg, exp) ((exp) ? TRUE : FALSE) - -#define NT_ASSERT(exp) ((VOID)0) -#define NT_ASSERTMSG(msg, exp) ((VOID)0) -#define NT_ASSERTMSGW(msg, exp) ((VOID)0) - -#define NT_VERIFY(_exp) ((_exp) ? TRUE : FALSE) -#define NT_VERIFYMSG(_msg, _exp ) ((_exp) ? TRUE : FALSE) -#define NT_VERIFYMSGW(_msg, _exp) ((_exp) ? TRUE : FALSE) - -#endif /* DBG */ - -#define InitializeListHead32(ListHead) (\ - (ListHead)->Flink = (ListHead)->Blink = PtrToUlong((ListHead))) - -#if !defined(_WINBASE_) - -#if defined(_WIN64) && (defined(_NTDRIVER_) || defined(_NTDDK_) || defined(_NTIFS_) || defined(_NTHAL_) || defined(_NTOSP_)) - -NTKERNELAPI -VOID -InitializeSListHead( - OUT PSLIST_HEADER SListHead); - -#else - -VOID -FORCEINLINE -InitializeSListHead( - OUT PSLIST_HEADER SListHead) -{ -#if defined(_IA64_) - ULONG64 FeatureBits; -#endif - -#if defined(_WIN64) - if (((ULONG_PTR)SListHead & 0xf) != 0) { - RtlRaiseStatus(STATUS_DATATYPE_MISALIGNMENT); - } -#endif - RtlZeroMemory(SListHead, sizeof(SLIST_HEADER)); -#if defined(_IA64_) - FeatureBits = __getReg(CV_IA64_CPUID4); - if ((FeatureBits & KF_16BYTE_INSTR) != 0) { - SListHead->Header16.HeaderType = 1; - SListHead->Header16.Init = 1; - } -#endif -} - -#endif - -#if defined(_WIN64) - -#define InterlockedPopEntrySList(Head) \ - ExpInterlockedPopEntrySList(Head) - -#define InterlockedPushEntrySList(Head, Entry) \ - ExpInterlockedPushEntrySList(Head, Entry) - -#define InterlockedFlushSList(Head) \ - ExpInterlockedFlushSList(Head) - -#define QueryDepthSList(Head) \ - ExQueryDepthSList(Head) - -#else /* !defined(_WIN64) */ - -NTKERNELAPI -PSLIST_ENTRY -FASTCALL -InterlockedPopEntrySList( - IN PSLIST_HEADER ListHead); - -NTKERNELAPI -PSLIST_ENTRY -FASTCALL -InterlockedPushEntrySList( - IN PSLIST_HEADER ListHead, - IN PSLIST_ENTRY ListEntry); - -#define InterlockedFlushSList(ListHead) \ - ExInterlockedFlushSList(ListHead) - -#define QueryDepthSList(Head) \ - ExQueryDepthSList(Head) - -#endif /* !defined(_WIN64) */ - -#endif /* !defined(_WINBASE_) */ - -#define RTL_CONTEXT_EX_OFFSET(ContextEx, Chunk) ((ContextEx)->Chunk.Offset) -#define RTL_CONTEXT_EX_LENGTH(ContextEx, Chunk) ((ContextEx)->Chunk.Length) -#define RTL_CONTEXT_EX_CHUNK(Base, Layout, Chunk) \ - ((PVOID)((PCHAR)(Base) + RTL_CONTEXT_EX_OFFSET(Layout, Chunk))) -#define RTL_CONTEXT_OFFSET(Context, Chunk) \ - RTL_CONTEXT_EX_OFFSET((PCONTEXT_EX)(Context + 1), Chunk) -#define RTL_CONTEXT_LENGTH(Context, Chunk) \ - RTL_CONTEXT_EX_LENGTH((PCONTEXT_EX)(Context + 1), Chunk) -#define RTL_CONTEXT_CHUNK(Context, Chunk) \ - RTL_CONTEXT_EX_CHUNK((PCONTEXT_EX)(Context + 1), \ - (PCONTEXT_EX)(Context + 1), \ - Chunk) - -BOOLEAN -RTLVERLIB_DDI(RtlIsNtDdiVersionAvailable)( - IN ULONG Version); - -BOOLEAN -RTLVERLIB_DDI(RtlIsServicePackVersionInstalled)( - IN ULONG Version); - -#ifndef RtlIsNtDdiVersionAvailable -#define RtlIsNtDdiVersionAvailable WdmlibRtlIsNtDdiVersionAvailable -#endif - -#ifndef RtlIsServicePackVersionInstalled -#define RtlIsServicePackVersionInstalled WdmlibRtlIsServicePackVersionInstalled -#endif - -#define RtlInterlockedSetBits(Flags, Flag) \ - InterlockedOr((PLONG)(Flags), Flag) - -#define RtlInterlockedAndBits(Flags, Flag) \ - InterlockedAnd((PLONG)(Flags), Flag) - -#define RtlInterlockedClearBits(Flags, Flag) \ - RtlInterlockedAndBits(Flags, ~(Flag)) - -#define RtlInterlockedXorBits(Flags, Flag) \ - InterlockedXor(Flags, Flag) - -#define RtlInterlockedSetBitsDiscardReturn(Flags, Flag) \ - (VOID) RtlInterlockedSetBits(Flags, Flag) - -#define RtlInterlockedAndBitsDiscardReturn(Flags, Flag) \ - (VOID) RtlInterlockedAndBits(Flags, Flag) - -#define RtlInterlockedClearBitsDiscardReturn(Flags, Flag) \ - RtlInterlockedAndBitsDiscardReturn(Flags, ~(Flag)) - - -/****************************************************************************** - * Kernel Functions * - ******************************************************************************/ - -NTKERNELAPI -VOID -NTAPI -KeInitializeEvent( - OUT PRKEVENT Event, - IN EVENT_TYPE Type, - IN BOOLEAN State); - -NTKERNELAPI -VOID -NTAPI -KeClearEvent( - IN OUT PRKEVENT Event); - -#if (NTDDI_VERSION >= NTDDI_WIN2K) - - -#if defined(_NTDDK_) || defined(_NTIFS_) -NTKERNELAPI -VOID -NTAPI -ProbeForRead( - IN CONST VOID *Address, /* CONST is added */ - IN SIZE_T Length, - IN ULONG Alignment); -#endif /* defined(_NTDDK_) || defined(_NTIFS_) */ - -NTKERNELAPI -VOID -NTAPI -ProbeForWrite( - IN PVOID Address, - IN SIZE_T Length, - IN ULONG Alignment); - - -#if defined(SINGLE_GROUP_LEGACY_API) - -NTKERNELAPI -VOID -NTAPI -KeRevertToUserAffinityThread(VOID); - -NTKERNELAPI -VOID -NTAPI -KeSetSystemAffinityThread( - IN KAFFINITY Affinity); - -NTKERNELAPI -VOID -NTAPI -KeSetTargetProcessorDpc( - IN OUT PRKDPC Dpc, - IN CCHAR Number); - -NTKERNELAPI -KAFFINITY -NTAPI -KeQueryActiveProcessors(VOID); - - -#endif /* defined(SINGLE_GROUP_LEGACY_API) */ - -#if !defined(_M_AMD64) -NTKERNELAPI -ULONGLONG -NTAPI -KeQueryInterruptTime(VOID); - -NTKERNELAPI -VOID -NTAPI -KeQuerySystemTime( - OUT PLARGE_INTEGER CurrentTime); -#endif /* !_M_AMD64 */ - -#if !defined(_X86_) -NTKERNELAPI -KIRQL -NTAPI -KeAcquireSpinLockRaiseToDpc( - IN OUT PKSPIN_LOCK SpinLock); - -#define KeAcquireSpinLock(SpinLock, OldIrql) \ - *(OldIrql) = KeAcquireSpinLockRaiseToDpc(SpinLock) - -NTKERNELAPI -VOID -NTAPI -KeAcquireSpinLockAtDpcLevel( - IN OUT PKSPIN_LOCK SpinLock); - -NTKERNELAPI -VOID -NTAPI -KeReleaseSpinLock( - IN OUT PKSPIN_LOCK SpinLock, - IN KIRQL NewIrql); - -NTKERNELAPI -VOID -NTAPI -KeReleaseSpinLockFromDpcLevel( - IN OUT PKSPIN_LOCK SpinLock); -#endif /* !_X86_ */ - -#if defined(_X86_) && (defined(_WDM_INCLUDED_) || defined(WIN9X_COMPAT_SPINLOCK)) -NTKERNELAPI -VOID -NTAPI -KeInitializeSpinLock( - IN PKSPIN_LOCK SpinLock); -#else -FORCEINLINE -VOID -KeInitializeSpinLock(IN PKSPIN_LOCK SpinLock) -{ - /* Clear the lock */ - *SpinLock = 0; -} -#endif - -NTKERNELAPI -DECLSPEC_NORETURN -VOID -NTAPI -KeBugCheckEx( - IN ULONG BugCheckCode, - IN ULONG_PTR BugCheckParameter1, - IN ULONG_PTR BugCheckParameter2, - IN ULONG_PTR BugCheckParameter3, - IN ULONG_PTR BugCheckParameter4); - -NTKERNELAPI -BOOLEAN -NTAPI -KeCancelTimer( - IN OUT PKTIMER); - -NTKERNELAPI -NTSTATUS -NTAPI -KeDelayExecutionThread( - IN KPROCESSOR_MODE WaitMode, - IN BOOLEAN Alertable, - IN PLARGE_INTEGER Interval); - -NTKERNELAPI -BOOLEAN -NTAPI -KeDeregisterBugCheckCallback( - IN OUT PKBUGCHECK_CALLBACK_RECORD CallbackRecord); - -NTKERNELAPI -VOID -NTAPI -KeEnterCriticalRegion(VOID); - -NTKERNELAPI -VOID -NTAPI -KeInitializeDeviceQueue( - OUT PKDEVICE_QUEUE DeviceQueue); - -NTKERNELAPI -VOID -NTAPI -KeInitializeDpc( - OUT PRKDPC Dpc, - IN PKDEFERRED_ROUTINE DeferredRoutine, - IN PVOID DeferredContext OPTIONAL); - -NTKERNELAPI -VOID -NTAPI -KeInitializeMutex( - OUT PRKMUTEX Mutex, - IN ULONG Level); - -NTKERNELAPI -VOID -NTAPI -KeInitializeSemaphore( - OUT PRKSEMAPHORE Semaphore, - IN LONG Count, - IN LONG Limit); - -NTKERNELAPI -VOID -NTAPI -KeInitializeTimer( - OUT PKTIMER Timer); - -NTKERNELAPI -VOID -NTAPI -KeInitializeTimerEx( - OUT PKTIMER Timer, - IN TIMER_TYPE Type); - -NTKERNELAPI -BOOLEAN -NTAPI -KeInsertByKeyDeviceQueue( - IN OUT PKDEVICE_QUEUE DeviceQueue, - IN OUT PKDEVICE_QUEUE_ENTRY DeviceQueueEntry, - IN ULONG SortKey); - -NTKERNELAPI -BOOLEAN -NTAPI -KeInsertDeviceQueue( - IN OUT PKDEVICE_QUEUE DeviceQueue, - IN OUT PKDEVICE_QUEUE_ENTRY DeviceQueueEntry); - -NTKERNELAPI -BOOLEAN -NTAPI -KeInsertQueueDpc( - IN OUT PRKDPC Dpc, - IN PVOID SystemArgument1 OPTIONAL, - IN PVOID SystemArgument2 OPTIONAL); - -NTKERNELAPI -VOID -NTAPI -KeLeaveCriticalRegion(VOID); - -NTHALAPI -LARGE_INTEGER -NTAPI -KeQueryPerformanceCounter( - OUT PLARGE_INTEGER PerformanceFrequency OPTIONAL); - -NTKERNELAPI -KPRIORITY -NTAPI -KeQueryPriorityThread( - IN PRKTHREAD Thread); - -NTKERNELAPI -ULONG -NTAPI -KeQueryTimeIncrement(VOID); - -NTKERNELAPI -LONG -NTAPI -KeReadStateEvent( - IN PRKEVENT Event); - -NTKERNELAPI -LONG -NTAPI -KeReadStateMutex( - IN PRKMUTEX Mutex); - -NTKERNELAPI -LONG -NTAPI -KeReadStateSemaphore( - IN PRKSEMAPHORE Semaphore); - -NTKERNELAPI -BOOLEAN -NTAPI -KeReadStateTimer( - IN PKTIMER Timer); - -NTKERNELAPI -BOOLEAN -NTAPI -KeRegisterBugCheckCallback( - OUT PKBUGCHECK_CALLBACK_RECORD CallbackRecord, - IN PKBUGCHECK_CALLBACK_ROUTINE CallbackRoutine, - IN PVOID Buffer, - IN ULONG Length, - IN PUCHAR Component); - -NTKERNELAPI -LONG -NTAPI -KeReleaseMutex( - IN OUT PRKMUTEX Mutex, - IN BOOLEAN Wait); - -NTKERNELAPI -LONG -NTAPI -KeReleaseSemaphore( - IN OUT PRKSEMAPHORE Semaphore, - IN KPRIORITY Increment, - IN LONG Adjustment, - IN BOOLEAN Wait); - -NTKERNELAPI -PKDEVICE_QUEUE_ENTRY -NTAPI -KeRemoveByKeyDeviceQueue( - IN OUT PKDEVICE_QUEUE DeviceQueue, - IN ULONG SortKey); - -NTKERNELAPI -PKDEVICE_QUEUE_ENTRY -NTAPI -KeRemoveDeviceQueue( - IN OUT PKDEVICE_QUEUE DeviceQueue); - -NTKERNELAPI -BOOLEAN -NTAPI -KeRemoveEntryDeviceQueue( - IN OUT PKDEVICE_QUEUE DeviceQueue, - IN OUT PKDEVICE_QUEUE_ENTRY DeviceQueueEntry); - -NTKERNELAPI -BOOLEAN -NTAPI -KeRemoveQueueDpc( - IN OUT PRKDPC Dpc); - -NTKERNELAPI -LONG -NTAPI -KeResetEvent( - IN OUT PRKEVENT Event); - -NTKERNELAPI -LONG -NTAPI -KeSetEvent( - IN OUT PRKEVENT Event, - IN KPRIORITY Increment, - IN BOOLEAN Wait); - -NTKERNELAPI -VOID -NTAPI -KeSetImportanceDpc( - IN OUT PRKDPC Dpc, - IN KDPC_IMPORTANCE Importance); - -NTKERNELAPI -KPRIORITY -NTAPI -KeSetPriorityThread( - IN OUT PKTHREAD Thread, - IN KPRIORITY Priority); - -NTKERNELAPI -BOOLEAN -NTAPI -KeSetTimer( - IN OUT PKTIMER Timer, - IN LARGE_INTEGER DueTime, - IN PKDPC Dpc OPTIONAL); - -NTKERNELAPI -BOOLEAN -NTAPI -KeSetTimerEx( - IN OUT PKTIMER Timer, - IN LARGE_INTEGER DueTime, - IN LONG Period OPTIONAL, - IN PKDPC Dpc OPTIONAL); - -NTHALAPI -VOID -NTAPI -KeStallExecutionProcessor( - IN ULONG MicroSeconds); - -NTKERNELAPI -BOOLEAN -NTAPI -KeSynchronizeExecution( - IN OUT PKINTERRUPT Interrupt, - IN PKSYNCHRONIZE_ROUTINE SynchronizeRoutine, - IN PVOID SynchronizeContext OPTIONAL); - -NTKERNELAPI -NTSTATUS -NTAPI -KeWaitForMultipleObjects( - IN ULONG Count, - IN PVOID Object[], - IN WAIT_TYPE WaitType, - IN KWAIT_REASON WaitReason, - IN KPROCESSOR_MODE WaitMode, - IN BOOLEAN Alertable, - IN PLARGE_INTEGER Timeout OPTIONAL, - OUT PKWAIT_BLOCK WaitBlockArray OPTIONAL); - -#define KeWaitForMutexObject KeWaitForSingleObject - -NTKERNELAPI -NTSTATUS -NTAPI -KeWaitForSingleObject( - IN PVOID Object, - IN KWAIT_REASON WaitReason, - IN KPROCESSOR_MODE WaitMode, - IN BOOLEAN Alertable, - IN PLARGE_INTEGER Timeout OPTIONAL); - -#endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */ - -#if (NTDDI_VERSION >= NTDDI_WINXP) - -_DECL_HAL_KE_IMPORT -VOID -FASTCALL -KeAcquireInStackQueuedSpinLock( - IN OUT PKSPIN_LOCK SpinLock, - OUT PKLOCK_QUEUE_HANDLE LockHandle); - -NTKERNELAPI -VOID -FASTCALL -KeAcquireInStackQueuedSpinLockAtDpcLevel( - IN OUT PKSPIN_LOCK SpinLock, - OUT PKLOCK_QUEUE_HANDLE LockHandle); - -NTKERNELAPI -KIRQL -NTAPI -KeAcquireInterruptSpinLock( - IN OUT PKINTERRUPT Interrupt); - -NTKERNELAPI -BOOLEAN -NTAPI -KeAreApcsDisabled(VOID); - -NTKERNELAPI -ULONG -NTAPI -KeGetRecommendedSharedDataAlignment(VOID); - -NTKERNELAPI -ULONG -NTAPI -KeQueryRuntimeThread( - IN PKTHREAD Thread, - OUT PULONG UserTime); - -NTKERNELAPI -VOID -FASTCALL -KeReleaseInStackQueuedSpinLockFromDpcLevel( - IN PKLOCK_QUEUE_HANDLE LockHandle); - -NTKERNELAPI -VOID -NTAPI -KeReleaseInterruptSpinLock( - IN OUT PKINTERRUPT Interrupt, - IN KIRQL OldIrql); - -NTKERNELAPI -PKDEVICE_QUEUE_ENTRY -NTAPI -KeRemoveByKeyDeviceQueueIfBusy( - IN OUT PKDEVICE_QUEUE DeviceQueue, - IN ULONG SortKey); - -_DECL_HAL_KE_IMPORT -VOID -FASTCALL -KeReleaseInStackQueuedSpinLock( - IN PKLOCK_QUEUE_HANDLE LockHandle); - -#endif /* (NTDDI_VERSION >= NTDDI_WINXP) */ - -#if (NTDDI_VERSION >= NTDDI_WINXPSP1) - -NTKERNELAPI -BOOLEAN -NTAPI -KeDeregisterBugCheckReasonCallback( - IN OUT PKBUGCHECK_REASON_CALLBACK_RECORD CallbackRecord); - -NTKERNELAPI -BOOLEAN -NTAPI -KeRegisterBugCheckReasonCallback( - OUT PKBUGCHECK_REASON_CALLBACK_RECORD CallbackRecord, - IN PKBUGCHECK_REASON_CALLBACK_ROUTINE CallbackRoutine, - IN KBUGCHECK_CALLBACK_REASON Reason, - IN PUCHAR Component); - -#endif /* (NTDDI_VERSION >= NTDDI_WINXPSP1) */ - -#if (NTDDI_VERSION >= NTDDI_WINXPSP2) -NTKERNELAPI -VOID -NTAPI -KeFlushQueuedDpcs(VOID); -#endif /* (NTDDI_VERSION >= NTDDI_WINXPSP2) */ - -#if (NTDDI_VERSION >= NTDDI_WS03) - -NTKERNELAPI -PVOID -NTAPI -KeRegisterNmiCallback( - IN PNMI_CALLBACK CallbackRoutine, - IN PVOID Context OPTIONAL); - -NTKERNELAPI -NTSTATUS -NTAPI -KeDeregisterNmiCallback( - IN PVOID Handle); - -NTKERNELAPI -VOID -NTAPI -KeInitializeThreadedDpc( - OUT PRKDPC Dpc, - IN PKDEFERRED_ROUTINE DeferredRoutine, - IN PVOID DeferredContext OPTIONAL); - -NTKERNELAPI -ULONG_PTR -NTAPI -KeIpiGenericCall( - IN PKIPI_BROADCAST_WORKER BroadcastFunction, - IN ULONG_PTR Context); - -NTKERNELAPI -KIRQL -FASTCALL -KeAcquireSpinLockForDpc( - IN OUT PKSPIN_LOCK SpinLock); - -NTKERNELAPI -VOID -FASTCALL -KeReleaseSpinLockForDpc( - IN OUT PKSPIN_LOCK SpinLock, - IN KIRQL OldIrql); - -NTKERNELAPI -BOOLEAN -FASTCALL -KeTestSpinLock( - IN PKSPIN_LOCK SpinLock); - - -#endif /* (NTDDI_VERSION >= NTDDI_WS03) */ - -#if (NTDDI_VERSION >= NTDDI_WS03SP1) - - -NTKERNELAPI -BOOLEAN -FASTCALL -KeTryToAcquireSpinLockAtDpcLevel( - IN OUT PKSPIN_LOCK SpinLock); - -NTKERNELAPI -BOOLEAN -NTAPI -KeAreAllApcsDisabled(VOID); - -NTKERNELAPI -VOID -FASTCALL -KeAcquireGuardedMutex( - IN OUT PKGUARDED_MUTEX GuardedMutex); - -NTKERNELAPI -VOID -FASTCALL -KeAcquireGuardedMutexUnsafe( - IN OUT PKGUARDED_MUTEX GuardedMutex); - -NTKERNELAPI -VOID -NTAPI -KeEnterGuardedRegion(VOID); - -NTKERNELAPI -VOID -NTAPI -KeLeaveGuardedRegion(VOID); - -NTKERNELAPI -VOID -FASTCALL -KeInitializeGuardedMutex( - OUT PKGUARDED_MUTEX GuardedMutex); - -NTKERNELAPI -VOID -FASTCALL -KeReleaseGuardedMutexUnsafe( - IN OUT PKGUARDED_MUTEX GuardedMutex); - -NTKERNELAPI -VOID -FASTCALL -KeReleaseGuardedMutex( - IN OUT PKGUARDED_MUTEX GuardedMutex); - -NTKERNELAPI -BOOLEAN -FASTCALL -KeTryToAcquireGuardedMutex( - IN OUT PKGUARDED_MUTEX GuardedMutex); - -#endif /* (NTDDI_VERSION >= NTDDI_WS03SP1) */ - -#if (NTDDI_VERSION >= NTDDI_VISTA) - -NTKERNELAPI -VOID -FASTCALL -KeAcquireInStackQueuedSpinLockForDpc( - IN OUT PKSPIN_LOCK SpinLock, - OUT PKLOCK_QUEUE_HANDLE LockHandle); - -NTKERNELAPI -VOID -FASTCALL -KeReleaseInStackQueuedSpinLockForDpc( - IN PKLOCK_QUEUE_HANDLE LockHandle); - -NTKERNELAPI -NTSTATUS -NTAPI -KeQueryDpcWatchdogInformation( - OUT PKDPC_WATCHDOG_INFORMATION WatchdogInformation); - -#if defined(SINGLE_GROUP_LEGACY_API) - -NTKERNELAPI -KAFFINITY -NTAPI -KeSetSystemAffinityThreadEx( - IN KAFFINITY Affinity); - -NTKERNELAPI -VOID -NTAPI -KeRevertToUserAffinityThreadEx( - IN KAFFINITY Affinity); - -NTKERNELAPI -ULONG -NTAPI -KeQueryActiveProcessorCount( - OUT PKAFFINITY ActiveProcessors OPTIONAL); - -NTKERNELAPI -ULONG -NTAPI -KeQueryMaximumProcessorCount(VOID); -#endif /* SINGLE_GROUP_LEGACY_API */ - -#endif /* (NTDDI_VERSION >= NTDDI_VISTA) */ - -#if (NTDDI_VERSION >= NTDDI_WS08) - -PVOID -KeRegisterProcessorChangeCallback( - IN PPROCESSOR_CALLBACK_FUNCTION CallbackFunction, - IN PVOID CallbackContext OPTIONAL, - IN ULONG Flags); - -VOID -KeDeregisterProcessorChangeCallback( - IN PVOID CallbackHandle); - -#endif /* (NTDDI_VERSION >= NTDDI_WS08) */ - -#if (NTDDI_VERSION >= NTDDI_WIN7) - - -ULONG64 -NTAPI -KeQueryTotalCycleTimeProcess( - IN OUT PKPROCESS Process, - OUT PULONG64 CycleTimeStamp); - -ULONG64 -NTAPI -KeQueryTotalCycleTimeThread( - IN OUT PKTHREAD Thread, - OUT PULONG64 CycleTimeStamp); - -NTKERNELAPI -NTSTATUS -NTAPI -KeSetTargetProcessorDpcEx( - IN OUT PKDPC Dpc, - IN PPROCESSOR_NUMBER ProcNumber); - -NTKERNELAPI -VOID -NTAPI -KeSetSystemGroupAffinityThread( - IN PGROUP_AFFINITY Affinity, - OUT PGROUP_AFFINITY PreviousAffinity OPTIONAL); - -NTKERNELAPI -VOID -NTAPI -KeRevertToUserGroupAffinityThread( - IN PGROUP_AFFINITY PreviousAffinity); - -NTKERNELAPI -BOOLEAN -NTAPI -KeSetCoalescableTimer( - IN OUT PKTIMER Timer, - IN LARGE_INTEGER DueTime, - IN ULONG Period, - IN ULONG TolerableDelay, - IN PKDPC Dpc OPTIONAL); - -NTKERNELAPI -ULONGLONG -NTAPI -KeQueryUnbiasedInterruptTime(VOID); - -NTKERNELAPI -ULONG -NTAPI -KeQueryActiveProcessorCountEx( - IN USHORT GroupNumber); - -NTKERNELAPI -ULONG -NTAPI -KeQueryMaximumProcessorCountEx( - IN USHORT GroupNumber); - -NTKERNELAPI -USHORT -NTAPI -KeQueryActiveGroupCount(VOID); - -NTKERNELAPI -USHORT -NTAPI -KeQueryMaximumGroupCount(VOID); - -NTKERNELAPI -KAFFINITY -NTAPI -KeQueryGroupAffinity( - IN USHORT GroupNumber); - -NTKERNELAPI -ULONG -NTAPI -KeGetCurrentProcessorNumberEx( - OUT PPROCESSOR_NUMBER ProcNumber OPTIONAL); - -NTKERNELAPI -VOID -NTAPI -KeQueryNodeActiveAffinity( - IN USHORT NodeNumber, - OUT PGROUP_AFFINITY Affinity OPTIONAL, - OUT PUSHORT Count OPTIONAL); - -NTKERNELAPI -USHORT -NTAPI -KeQueryNodeMaximumProcessorCount( - IN USHORT NodeNumber); - -NTKERNELAPI -USHORT -NTAPI -KeQueryHighestNodeNumber(VOID); - -NTKERNELAPI -USHORT -NTAPI -KeGetCurrentNodeNumber(VOID); - -NTKERNELAPI -NTSTATUS -NTAPI -KeQueryLogicalProcessorRelationship( - IN PPROCESSOR_NUMBER ProcessorNumber OPTIONAL, - IN LOGICAL_PROCESSOR_RELATIONSHIP RelationshipType, - OUT PSYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX Information OPTIONAL, - IN OUT PULONG Length); - -NTKERNELAPI -NTSTATUS -NTAPI -KeSaveExtendedProcessorState( - IN ULONG64 Mask, - OUT PXSTATE_SAVE XStateSave); - -NTKERNELAPI -VOID -NTAPI -KeRestoreExtendedProcessorState( - IN PXSTATE_SAVE XStateSave); - -NTSTATUS -NTAPI -KeGetProcessorNumberFromIndex( - IN ULONG ProcIndex, - OUT PPROCESSOR_NUMBER ProcNumber); - -ULONG -NTAPI -KeGetProcessorIndexFromNumber( - IN PPROCESSOR_NUMBER ProcNumber); - -#endif /* (NTDDI_VERSION >= NTDDI_WIN7) */ - -#if !defined(_IA64_) -NTHALAPI -VOID -NTAPI -KeFlushWriteBuffer(VOID); -#endif - -/* VOID - * KeInitializeCallbackRecord( - * IN PKBUGCHECK_CALLBACK_RECORD CallbackRecord) - */ -#define KeInitializeCallbackRecord(CallbackRecord) \ - CallbackRecord->State = BufferEmpty; - -#if DBG - -#if (NTDDI_VERSION >= NTDDI_VISTA) -#define PAGED_ASSERT( exp ) NT_ASSERT( exp ) -#else -#define PAGED_ASSERT( exp ) ASSERT( exp ) -#endif - -#define PAGED_CODE() { \ - if (KeGetCurrentIrql() > APC_LEVEL) { \ - KdPrint( ("NTDDK: Pageable code called at IRQL > APC_LEVEL (%d)\n", KeGetCurrentIrql() )); \ - PAGED_ASSERT(FALSE); \ - } \ -} - -#else - -#define PAGED_CODE() - -#endif /* DBG */ - -#define PAGED_CODE_LOCKED() NOP_FUNCTION; - -/****************************************************************************** - * Memory manager Functions * - ******************************************************************************/ -/* Alignment Macros */ -#define ALIGN_DOWN_BY(size, align) \ - ((ULONG_PTR)(size) & ~((ULONG_PTR)(align) - 1)) - -#define ALIGN_UP_BY(size, align) \ - (ALIGN_DOWN_BY(((ULONG_PTR)(size) + align - 1), align)) - -#define ALIGN_DOWN_POINTER_BY(ptr, align) \ - ((PVOID)ALIGN_DOWN_BY(ptr, align)) - -#define ALIGN_UP_POINTER_BY(ptr, align) \ - ((PVOID)ALIGN_UP_BY(ptr, align)) - -#define ALIGN_DOWN(size, type) \ - ALIGN_DOWN_BY(size, sizeof(type)) - -#define ALIGN_UP(size, type) \ - ALIGN_UP_BY(size, sizeof(type)) - -#define ALIGN_DOWN_POINTER(ptr, type) \ - ALIGN_DOWN_POINTER_BY(ptr, sizeof(type)) - -#define ALIGN_UP_POINTER(ptr, type) \ - ALIGN_UP_POINTER_BY(ptr, sizeof(type)) - -#ifndef FIELD_OFFSET -#define FIELD_OFFSET(type, field) ((ULONG)&(((type *)0)->field)) -#endif - -#ifndef FIELD_SIZE -#define FIELD_SIZE(type, field) (sizeof(((type *)0)->field)) -#endif - -#define POOL_TAGGING 1 - -#if DBG -#define IF_DEBUG if (TRUE) -#else -#define IF_DEBUG if (FALSE) -#endif /* DBG */ - -/* ULONG - * BYTE_OFFSET( - * IN PVOID Va) - */ -#define BYTE_OFFSET(Va) \ - ((ULONG) ((ULONG_PTR) (Va) & (PAGE_SIZE - 1))) - -/* ULONG - * BYTES_TO_PAGES( - * IN ULONG Size) - */ -#define BYTES_TO_PAGES(Size) \ - (((Size) + PAGE_SIZE - 1) >> PAGE_SHIFT) - -/* PVOID - * PAGE_ALIGN( - * IN PVOID Va) - */ -#define PAGE_ALIGN(Va) \ - ((PVOID) ((ULONG_PTR)(Va) & ~(PAGE_SIZE - 1))) - -/* ULONG_PTR - * ROUND_TO_PAGES( - * IN ULONG_PTR Size) - */ -#define ROUND_TO_PAGES(Size) \ - (((ULONG_PTR) (Size) + PAGE_SIZE - 1) & ~(PAGE_SIZE - 1)) - -/* ULONG - * ADDRESS_AND_SIZE_TO_SPAN_PAGES( - * IN PVOID Va, - * IN ULONG Size) - */ -#define ADDRESS_AND_SIZE_TO_SPAN_PAGES(_Va, _Size) \ - ((ULONG) ((((ULONG_PTR) (_Va) & (PAGE_SIZE - 1)) \ - + (_Size) + (PAGE_SIZE - 1)) >> PAGE_SHIFT)) - -#define COMPUTE_PAGES_SPANNED(Va, Size) \ - ADDRESS_AND_SIZE_TO_SPAN_PAGES(Va,Size) - -/* - * ULONG - * MmGetMdlByteCount( - * IN PMDL Mdl) - */ -#define MmGetMdlByteCount(_Mdl) \ - ((_Mdl)->ByteCount) - -/* - * ULONG - * MmGetMdlByteOffset( - * IN PMDL Mdl) - */ -#define MmGetMdlByteOffset(_Mdl) \ - ((_Mdl)->ByteOffset) - -#define MmGetMdlBaseVa(Mdl) ((Mdl)->StartVa) - -/* - * PPFN_NUMBER - * MmGetMdlPfnArray( - * IN PMDL Mdl) - */ -#define MmGetMdlPfnArray(_Mdl) \ - ((PPFN_NUMBER) ((_Mdl) + 1)) - -/* - * PVOID - * MmGetMdlVirtualAddress( - * IN PMDL Mdl) - */ -#define MmGetMdlVirtualAddress(_Mdl) \ - ((PVOID) ((PCHAR) ((_Mdl)->StartVa) + (_Mdl)->ByteOffset)) - -#define MmGetProcedureAddress(Address) (Address) - -/* PVOID MmGetSystemAddressForMdl( - * IN PMDL Mdl); - */ -#define MmGetSystemAddressForMdl(Mdl) \ - (((Mdl)->MdlFlags & (MDL_MAPPED_TO_SYSTEM_VA | \ - MDL_SOURCE_IS_NONPAGED_POOL)) ? \ - ((Mdl)->MappedSystemVa) : \ - (MmMapLockedPages((Mdl), KernelMode))) - -/* PVOID - * MmGetSystemAddressForMdlSafe( - * IN PMDL Mdl, - * IN MM_PAGE_PRIORITY Priority) - */ -#define MmGetSystemAddressForMdlSafe(_Mdl, _Priority) \ - (((_Mdl)->MdlFlags & (MDL_MAPPED_TO_SYSTEM_VA \ - | MDL_SOURCE_IS_NONPAGED_POOL)) ? \ - (_Mdl)->MappedSystemVa : \ - (PVOID) MmMapLockedPagesSpecifyCache((_Mdl), \ - KernelMode, MmCached, NULL, FALSE, (_Priority))) - -/* - * VOID - * MmInitializeMdl( - * IN PMDL MemoryDescriptorList, - * IN PVOID BaseVa, - * IN SIZE_T Length) - */ -#define MmInitializeMdl(_MemoryDescriptorList, \ - _BaseVa, \ - _Length) \ -{ \ - (_MemoryDescriptorList)->Next = (PMDL) NULL; \ - (_MemoryDescriptorList)->Size = (CSHORT) (sizeof(MDL) + \ - (sizeof(PFN_NUMBER) * ADDRESS_AND_SIZE_TO_SPAN_PAGES(_BaseVa, _Length))); \ - (_MemoryDescriptorList)->MdlFlags = 0; \ - (_MemoryDescriptorList)->StartVa = (PVOID) PAGE_ALIGN(_BaseVa); \ - (_MemoryDescriptorList)->ByteOffset = BYTE_OFFSET(_BaseVa); \ - (_MemoryDescriptorList)->ByteCount = (ULONG) _Length; \ -} - -/* - * VOID - * MmPrepareMdlForReuse( - * IN PMDL Mdl) - */ -#define MmPrepareMdlForReuse(_Mdl) \ -{ \ - if (((_Mdl)->MdlFlags & MDL_PARTIAL_HAS_BEEN_MAPPED) != 0) { \ - ASSERT(((_Mdl)->MdlFlags & MDL_PARTIAL) != 0); \ - MmUnmapLockedPages((_Mdl)->MappedSystemVa, (_Mdl)); \ - } else if (((_Mdl)->MdlFlags & MDL_PARTIAL) == 0) { \ - ASSERT(((_Mdl)->MdlFlags & MDL_MAPPED_TO_SYSTEM_VA) == 0); \ - } \ -} - -#if (NTDDI_VERSION >= NTDDI_WIN2K) - -NTKERNELAPI -PVOID -NTAPI -MmAllocateContiguousMemory( - IN SIZE_T NumberOfBytes, - IN PHYSICAL_ADDRESS HighestAcceptableAddress); - -NTKERNELAPI -PVOID -NTAPI -MmAllocateContiguousMemorySpecifyCache( - IN SIZE_T NumberOfBytes, - IN PHYSICAL_ADDRESS LowestAcceptableAddress, - IN PHYSICAL_ADDRESS HighestAcceptableAddress, - IN PHYSICAL_ADDRESS BoundaryAddressMultiple OPTIONAL, - IN MEMORY_CACHING_TYPE CacheType); - -NTKERNELAPI -PMDL -NTAPI -MmAllocatePagesForMdl( - IN PHYSICAL_ADDRESS LowAddress, - IN PHYSICAL_ADDRESS HighAddress, - IN PHYSICAL_ADDRESS SkipBytes, - IN SIZE_T TotalBytes); - -NTKERNELAPI -VOID -NTAPI -MmBuildMdlForNonPagedPool( - IN OUT PMDLX MemoryDescriptorList); - -//DECLSPEC_DEPRECATED_DDK -NTKERNELAPI -PMDL -NTAPI -MmCreateMdl( - IN PMDL MemoryDescriptorList OPTIONAL, - IN PVOID Base, - IN SIZE_T Length); - -NTKERNELAPI -VOID -NTAPI -MmFreeContiguousMemory( - IN PVOID BaseAddress); - -NTKERNELAPI -VOID -NTAPI -MmFreeContiguousMemorySpecifyCache( - IN PVOID BaseAddress, - IN SIZE_T NumberOfBytes, - IN MEMORY_CACHING_TYPE CacheType); - -NTKERNELAPI -VOID -NTAPI -MmFreePagesFromMdl( - IN PMDLX MemoryDescriptorList); - -NTKERNELAPI -PVOID -NTAPI -MmGetSystemRoutineAddress( - IN PUNICODE_STRING SystemRoutineName); - -NTKERNELAPI -LOGICAL -NTAPI -MmIsDriverVerifying( - IN struct _DRIVER_OBJECT *DriverObject); - -NTKERNELAPI -PVOID -NTAPI -MmLockPagableDataSection( - IN PVOID AddressWithinSection); - -NTKERNELAPI -PVOID -NTAPI -MmMapIoSpace( - IN PHYSICAL_ADDRESS PhysicalAddress, - IN SIZE_T NumberOfBytes, - IN MEMORY_CACHING_TYPE CacheEnable); - -NTKERNELAPI -PVOID -NTAPI -MmMapLockedPages( - IN PMDL MemoryDescriptorList, - IN KPROCESSOR_MODE AccessMode); - -NTKERNELAPI -PVOID -NTAPI -MmMapLockedPagesSpecifyCache( - IN PMDLX MemoryDescriptorList, - IN KPROCESSOR_MODE AccessMode, - IN MEMORY_CACHING_TYPE CacheType, - IN PVOID BaseAddress OPTIONAL, - IN ULONG BugCheckOnFailure, - IN MM_PAGE_PRIORITY Priority); - -NTKERNELAPI -PVOID -NTAPI -MmPageEntireDriver( - IN PVOID AddressWithinSection); - -NTKERNELAPI -VOID -NTAPI -MmProbeAndLockPages( - IN OUT PMDL MemoryDescriptorList, - IN KPROCESSOR_MODE AccessMode, - IN LOCK_OPERATION Operation); - -NTKERNELAPI -MM_SYSTEMSIZE -NTAPI -MmQuerySystemSize(VOID); - -NTKERNELAPI -VOID -NTAPI -MmResetDriverPaging( - IN PVOID AddressWithinSection); - -NTKERNELAPI -SIZE_T -NTAPI -MmSizeOfMdl( - IN PVOID Base, - IN SIZE_T Length); - -NTKERNELAPI -VOID -NTAPI -MmUnlockPagableImageSection( - IN PVOID ImageSectionHandle); - -NTKERNELAPI -VOID -NTAPI -MmUnlockPages( - IN OUT PMDL MemoryDescriptorList); - -NTKERNELAPI -VOID -NTAPI -MmUnmapIoSpace( - IN PVOID BaseAddress, - IN SIZE_T NumberOfBytes); - -NTKERNELAPI -VOID -NTAPI -MmProbeAndLockProcessPages( - IN OUT PMDL MemoryDescriptorList, - IN PEPROCESS Process, - IN KPROCESSOR_MODE AccessMode, - IN LOCK_OPERATION Operation); - -NTKERNELAPI -VOID -NTAPI -MmUnmapLockedPages( - IN PVOID BaseAddress, - IN PMDL MemoryDescriptorList); - -NTKERNELAPI -PVOID -NTAPI -MmAllocateContiguousMemorySpecifyCacheNode( - IN SIZE_T NumberOfBytes, - IN PHYSICAL_ADDRESS LowestAcceptableAddress, - IN PHYSICAL_ADDRESS HighestAcceptableAddress, - IN PHYSICAL_ADDRESS BoundaryAddressMultiple OPTIONAL, - IN MEMORY_CACHING_TYPE CacheType, - IN NODE_REQUIREMENT PreferredNode); - -#endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */ - -#if (NTDDI_VERSION >= NTDDI_WINXP) - -NTKERNELAPI -NTSTATUS -NTAPI -MmAdvanceMdl( - IN OUT PMDL Mdl, - IN ULONG NumberOfBytes); - -NTKERNELAPI -PVOID -NTAPI -MmAllocateMappingAddress( - IN SIZE_T NumberOfBytes, - IN ULONG PoolTag); - -NTKERNELAPI -VOID -NTAPI -MmFreeMappingAddress( - IN PVOID BaseAddress, - IN ULONG PoolTag); - -NTKERNELAPI -NTSTATUS -NTAPI -MmIsVerifierEnabled( - OUT PULONG VerifierFlags); - -NTKERNELAPI -PVOID -NTAPI -MmMapLockedPagesWithReservedMapping( - IN PVOID MappingAddress, - IN ULONG PoolTag, - IN PMDL MemoryDescriptorList, - IN MEMORY_CACHING_TYPE CacheType); - -NTKERNELAPI -NTSTATUS -NTAPI -MmProtectMdlSystemAddress( - IN PMDL MemoryDescriptorList, - IN ULONG NewProtect); - -NTKERNELAPI -VOID -NTAPI -MmUnmapReservedMapping( - IN PVOID BaseAddress, - IN ULONG PoolTag, - IN PMDL MemoryDescriptorList); - -NTKERNELAPI -NTSTATUS -NTAPI -MmAddVerifierThunks( - IN PVOID ThunkBuffer, - IN ULONG ThunkBufferSize); - -#endif /* (NTDDI_VERSION >= NTDDI_WINXP) */ - -#if (NTDDI_VERSION >= NTDDI_WS03) -NTKERNELAPI -LOGICAL -NTAPI -MmIsIoSpaceActive( - IN PHYSICAL_ADDRESS StartAddress, - IN SIZE_T NumberOfBytes); -#endif - -#if (NTDDI_VERSION >= NTDDI_WS03SP1) -NTKERNELAPI -PMDL -NTAPI -MmAllocatePagesForMdlEx( - IN PHYSICAL_ADDRESS LowAddress, - IN PHYSICAL_ADDRESS HighAddress, - IN PHYSICAL_ADDRESS SkipBytes, - IN SIZE_T TotalBytes, - IN MEMORY_CACHING_TYPE CacheType, - IN ULONG Flags); -#endif - -#if (NTDDI_VERSION >= NTDDI_VISTA) - -NTKERNELAPI -LOGICAL -NTAPI -MmIsDriverVerifyingByAddress( - IN PVOID AddressWithinSection); -#endif - -/****************************************************************************** - * Security Manager Functions * - ******************************************************************************/ - -#if (NTDDI_VERSION >= NTDDI_WIN2K) - -NTKERNELAPI -BOOLEAN -NTAPI -SeAccessCheck( - IN PSECURITY_DESCRIPTOR SecurityDescriptor, - IN PSECURITY_SUBJECT_CONTEXT SubjectSecurityContext, - IN BOOLEAN SubjectContextLocked, - IN ACCESS_MASK DesiredAccess, - IN ACCESS_MASK PreviouslyGrantedAccess, - OUT PPRIVILEGE_SET *Privileges OPTIONAL, - IN PGENERIC_MAPPING GenericMapping, - IN KPROCESSOR_MODE AccessMode, - OUT PACCESS_MASK GrantedAccess, - OUT PNTSTATUS AccessStatus); - -NTKERNELAPI -NTSTATUS -NTAPI -SeAssignSecurity( - IN PSECURITY_DESCRIPTOR ParentDescriptor OPTIONAL, - IN PSECURITY_DESCRIPTOR ExplicitDescriptor OPTIONAL, - OUT PSECURITY_DESCRIPTOR *NewDescriptor, - IN BOOLEAN IsDirectoryObject, - IN PSECURITY_SUBJECT_CONTEXT SubjectContext, - IN PGENERIC_MAPPING GenericMapping, - IN POOL_TYPE PoolType); - -NTKERNELAPI -NTSTATUS -NTAPI -SeAssignSecurityEx( - IN PSECURITY_DESCRIPTOR ParentDescriptor OPTIONAL, - IN PSECURITY_DESCRIPTOR ExplicitDescriptor OPTIONAL, - OUT PSECURITY_DESCRIPTOR *NewDescriptor, - IN GUID *ObjectType OPTIONAL, - IN BOOLEAN IsDirectoryObject, - IN ULONG AutoInheritFlags, - IN PSECURITY_SUBJECT_CONTEXT SubjectContext, - IN PGENERIC_MAPPING GenericMapping, - IN POOL_TYPE PoolType); - -NTKERNELAPI -NTSTATUS -NTAPI -SeDeassignSecurity( - IN OUT PSECURITY_DESCRIPTOR *SecurityDescriptor); - -NTKERNELAPI -BOOLEAN -NTAPI -SeValidSecurityDescriptor( - IN ULONG Length, - IN PSECURITY_DESCRIPTOR SecurityDescriptor); - -NTKERNELAPI -ULONG -NTAPI -SeObjectCreateSaclAccessBits( - IN PSECURITY_DESCRIPTOR SecurityDescriptor); - -NTKERNELAPI -VOID -NTAPI -SeReleaseSubjectContext( - IN OUT PSECURITY_SUBJECT_CONTEXT SubjectContext); - -NTKERNELAPI -VOID -NTAPI -SeUnlockSubjectContext( - IN PSECURITY_SUBJECT_CONTEXT SubjectContext); - -NTKERNELAPI -VOID -NTAPI -SeCaptureSubjectContext( - OUT PSECURITY_SUBJECT_CONTEXT SubjectContext); - -NTKERNELAPI -VOID -NTAPI -SeLockSubjectContext( - IN PSECURITY_SUBJECT_CONTEXT SubjectContext); - -#endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */ - -#if (NTDDI_VERSION >= NTDDI_WS03SP1) - -NTSTATUS -NTAPI -SeSetAuditParameter( - IN OUT PSE_ADT_PARAMETER_ARRAY AuditParameters, - IN SE_ADT_PARAMETER_TYPE Type, - IN ULONG Index, - IN PVOID Data); - -NTSTATUS -NTAPI -SeReportSecurityEvent( - IN ULONG Flags, - IN PUNICODE_STRING SourceName, - IN PSID UserSid OPTIONAL, - IN PSE_ADT_PARAMETER_ARRAY AuditParameters); - -#endif /* (NTDDI_VERSION >= NTDDI_WS03SP1) */ - -#if (NTDDI_VERSION >= NTDDI_VISTA) - -NTKERNELAPI -ULONG -NTAPI -SeComputeAutoInheritByObjectType( - IN PVOID ObjectType, - IN PSECURITY_DESCRIPTOR SecurityDescriptor OPTIONAL, - IN PSECURITY_DESCRIPTOR ParentSecurityDescriptor OPTIONAL); - -#ifdef SE_NTFS_WORLD_CACHE -VOID -NTAPI -SeGetWorldRights( - IN PSECURITY_DESCRIPTOR SecurityDescriptor, - IN PGENERIC_MAPPING GenericMapping, - OUT PACCESS_MASK GrantedAccess); -#endif /* SE_NTFS_WORLD_CACHE */ - -#endif /* (NTDDI_VERSION >= NTDDI_VISTA) */ -/****************************************************************************** - * Configuration Manager Functions * - ******************************************************************************/ - -#if (NTDDI_VERSION >= NTDDI_WINXP) -NTKERNELAPI -NTSTATUS -NTAPI -CmRegisterCallback( - IN PEX_CALLBACK_FUNCTION Function, - IN PVOID Context OPTIONAL, - OUT PLARGE_INTEGER Cookie); - -NTKERNELAPI -NTSTATUS -NTAPI -CmUnRegisterCallback( - IN LARGE_INTEGER Cookie); -#endif - -#if (NTDDI_VERSION >= NTDDI_VISTA) - -NTKERNELAPI -NTSTATUS -NTAPI -CmRegisterCallbackEx( - PEX_CALLBACK_FUNCTION Function, - PCUNICODE_STRING Altitude, - PVOID Driver, - PVOID Context, - PLARGE_INTEGER Cookie, - PVOID Reserved); - -NTKERNELAPI -VOID -NTAPI -CmGetCallbackVersion( - OUT PULONG Major OPTIONAL, - OUT PULONG Minor OPTIONAL); - -NTKERNELAPI -NTSTATUS -NTAPI -CmSetCallbackObjectContext( - IN OUT PVOID Object, - IN PLARGE_INTEGER Cookie, - IN PVOID NewContext, - OUT PVOID *OldContext OPTIONAL); - -NTKERNELAPI -NTSTATUS -NTAPI -CmCallbackGetKeyObjectID( - IN PLARGE_INTEGER Cookie, - IN PVOID Object, - OUT PULONG_PTR ObjectID OPTIONAL, - OUT PCUNICODE_STRING *ObjectName OPTIONAL); - -NTKERNELAPI -PVOID -NTAPI -CmGetBoundTransaction( - IN PLARGE_INTEGER Cookie, - IN PVOID Object); - -#endif // NTDDI_VERSION >= NTDDI_VISTA - - -/****************************************************************************** - * I/O Manager Functions * - ******************************************************************************/ - - -/* - * NTSTATUS - * IoAcquireRemoveLock( - * IN PIO_REMOVE_LOCK RemoveLock, - * IN OPTIONAL PVOID Tag) - */ -#if DBG -#define IoAcquireRemoveLock(RemoveLock, Tag) \ - IoAcquireRemoveLockEx(RemoveLock, Tag, __FILE__, __LINE__, sizeof (IO_REMOVE_LOCK)) -#else -#define IoAcquireRemoveLock(RemoveLock, Tag) \ - IoAcquireRemoveLockEx(RemoveLock, Tag, "", 1, sizeof (IO_REMOVE_LOCK)) -#endif - -/* - * VOID - * IoAdjustPagingPathCount( - * IN PLONG Count, - * IN BOOLEAN Increment) - */ -#define IoAdjustPagingPathCount(_Count, \ - _Increment) \ -{ \ - if (_Increment) \ - { \ - InterlockedIncrement(_Count); \ - } \ - else \ - { \ - InterlockedDecrement(_Count); \ - } \ -} - -#if !defined(_M_AMD64) -NTHALAPI -VOID -NTAPI -READ_PORT_BUFFER_UCHAR( - IN PUCHAR Port, - IN PUCHAR Buffer, - IN ULONG Count); - -NTHALAPI -VOID -NTAPI -READ_PORT_BUFFER_ULONG( - IN PULONG Port, - IN PULONG Buffer, - IN ULONG Count); - -NTHALAPI -VOID -NTAPI -READ_PORT_BUFFER_USHORT( - IN PUSHORT Port, - IN PUSHORT Buffer, - IN ULONG Count); - -NTHALAPI -UCHAR -NTAPI -READ_PORT_UCHAR( - IN PUCHAR Port); - -NTHALAPI -ULONG -NTAPI -READ_PORT_ULONG( - IN PULONG Port); - -NTHALAPI -USHORT -NTAPI -READ_PORT_USHORT( - IN PUSHORT Port); - -NTKERNELAPI -VOID -NTAPI -READ_REGISTER_BUFFER_UCHAR( - IN PUCHAR Register, - IN PUCHAR Buffer, - IN ULONG Count); - -NTKERNELAPI -VOID -NTAPI -READ_REGISTER_BUFFER_ULONG( - IN PULONG Register, - IN PULONG Buffer, - IN ULONG Count); - -NTKERNELAPI -VOID -NTAPI -READ_REGISTER_BUFFER_USHORT( - IN PUSHORT Register, - IN PUSHORT Buffer, - IN ULONG Count); - -NTKERNELAPI -UCHAR -NTAPI -READ_REGISTER_UCHAR( - IN PUCHAR Register); - -NTKERNELAPI -ULONG -NTAPI -READ_REGISTER_ULONG( - IN PULONG Register); - -NTKERNELAPI -USHORT -NTAPI -READ_REGISTER_USHORT( - IN PUSHORT Register); - -NTHALAPI -VOID -NTAPI -WRITE_PORT_BUFFER_UCHAR( - IN PUCHAR Port, - IN PUCHAR Buffer, - IN ULONG Count); - -NTHALAPI -VOID -NTAPI -WRITE_PORT_BUFFER_ULONG( - IN PULONG Port, - IN PULONG Buffer, - IN ULONG Count); - -NTHALAPI -VOID -NTAPI -WRITE_PORT_BUFFER_USHORT( - IN PUSHORT Port, - IN PUSHORT Buffer, - IN ULONG Count); - -NTHALAPI -VOID -NTAPI -WRITE_PORT_UCHAR( - IN PUCHAR Port, - IN UCHAR Value); - -NTHALAPI -VOID -NTAPI -WRITE_PORT_ULONG( - IN PULONG Port, - IN ULONG Value); - -NTHALAPI -VOID -NTAPI -WRITE_PORT_USHORT( - IN PUSHORT Port, - IN USHORT Value); - -NTKERNELAPI -VOID -NTAPI -WRITE_REGISTER_BUFFER_UCHAR( - IN PUCHAR Register, - IN PUCHAR Buffer, - IN ULONG Count); - -NTKERNELAPI -VOID -NTAPI -WRITE_REGISTER_BUFFER_ULONG( - IN PULONG Register, - IN PULONG Buffer, - IN ULONG Count); - -NTKERNELAPI -VOID -NTAPI -WRITE_REGISTER_BUFFER_USHORT( - IN PUSHORT Register, - IN PUSHORT Buffer, - IN ULONG Count); - -NTKERNELAPI -VOID -NTAPI -WRITE_REGISTER_UCHAR( - IN PUCHAR Register, - IN UCHAR Value); - -NTKERNELAPI -VOID -NTAPI -WRITE_REGISTER_ULONG( - IN PULONG Register, - IN ULONG Value); - -NTKERNELAPI +NTHALAPI VOID NTAPI -WRITE_REGISTER_USHORT( - IN PUSHORT Register, - IN USHORT Value); - -#else - -FORCEINLINE -VOID -READ_PORT_BUFFER_UCHAR( - IN PUCHAR Port, - IN PUCHAR Buffer, - IN ULONG Count) -{ - __inbytestring((USHORT)(ULONG_PTR)Port, Buffer, Count); -} - -FORCEINLINE -VOID -READ_PORT_BUFFER_ULONG( - IN PULONG Port, - IN PULONG Buffer, - IN ULONG Count) -{ - __indwordstring((USHORT)(ULONG_PTR)Port, Buffer, Count); -} - -FORCEINLINE -VOID -READ_PORT_BUFFER_USHORT( - IN PUSHORT Port, - IN PUSHORT Buffer, - IN ULONG Count) -{ - __inwordstring((USHORT)(ULONG_PTR)Port, Buffer, Count); -} - -FORCEINLINE -UCHAR -READ_PORT_UCHAR( - IN PUCHAR Port) -{ - return __inbyte((USHORT)(ULONG_PTR)Port); -} - -FORCEINLINE -ULONG -READ_PORT_ULONG( - IN PULONG Port) -{ - return __indword((USHORT)(ULONG_PTR)Port); -} - -FORCEINLINE -USHORT -READ_PORT_USHORT( - IN PUSHORT Port) -{ - return __inword((USHORT)(ULONG_PTR)Port); -} - -FORCEINLINE -VOID -READ_REGISTER_BUFFER_UCHAR( - IN PUCHAR Register, - IN PUCHAR Buffer, - IN ULONG Count) -{ - __movsb(Register, Buffer, Count); -} - -FORCEINLINE -VOID -READ_REGISTER_BUFFER_ULONG( - IN PULONG Register, - IN PULONG Buffer, - IN ULONG Count) -{ - __movsd(Register, Buffer, Count); -} - -FORCEINLINE -VOID -READ_REGISTER_BUFFER_USHORT( - IN PUSHORT Register, - IN PUSHORT Buffer, - IN ULONG Count) -{ - __movsw(Register, Buffer, Count); -} - -FORCEINLINE -UCHAR -READ_REGISTER_UCHAR( - IN volatile UCHAR *Register) -{ - return *Register; -} - -FORCEINLINE -ULONG -READ_REGISTER_ULONG( - IN volatile ULONG *Register) -{ - return *Register; -} - -FORCEINLINE -USHORT -READ_REGISTER_USHORT( - IN volatile USHORT *Register) -{ - return *Register; -} - -FORCEINLINE -VOID -WRITE_PORT_BUFFER_UCHAR( - IN PUCHAR Port, - IN PUCHAR Buffer, - IN ULONG Count) -{ - __outbytestring((USHORT)(ULONG_PTR)Port, Buffer, Count); -} - -FORCEINLINE -VOID -WRITE_PORT_BUFFER_ULONG( - IN PULONG Port, - IN PULONG Buffer, - IN ULONG Count) -{ - __outdwordstring((USHORT)(ULONG_PTR)Port, Buffer, Count); -} - -FORCEINLINE -VOID -WRITE_PORT_BUFFER_USHORT( - IN PUSHORT Port, - IN PUSHORT Buffer, - IN ULONG Count) -{ - __outwordstring((USHORT)(ULONG_PTR)Port, Buffer, Count); -} - -FORCEINLINE -VOID -WRITE_PORT_UCHAR( - IN PUCHAR Port, - IN UCHAR Value) -{ - __outbyte((USHORT)(ULONG_PTR)Port, Value); -} - -FORCEINLINE -VOID -WRITE_PORT_ULONG( - IN PULONG Port, - IN ULONG Value) -{ - __outdword((USHORT)(ULONG_PTR)Port, Value); -} - -FORCEINLINE -VOID -WRITE_PORT_USHORT( - IN PUSHORT Port, - IN USHORT Value) -{ - __outword((USHORT)(ULONG_PTR)Port, Value); -} - -FORCEINLINE -VOID -WRITE_REGISTER_BUFFER_UCHAR( - IN PUCHAR Register, - IN PUCHAR Buffer, - IN ULONG Count) -{ - LONG Synch; - __movsb(Register, Buffer, Count); - InterlockedOr(&Synch, 1); -} - -FORCEINLINE -VOID -WRITE_REGISTER_BUFFER_ULONG( - IN PULONG Register, - IN PULONG Buffer, - IN ULONG Count) -{ - LONG Synch; - __movsd(Register, Buffer, Count); - InterlockedOr(&Synch, 1); -} - -FORCEINLINE -VOID -WRITE_REGISTER_BUFFER_USHORT( - IN PUSHORT Register, - IN PUSHORT Buffer, - IN ULONG Count) -{ - LONG Synch; - __movsw(Register, Buffer, Count); - InterlockedOr(&Synch, 1); -} - -FORCEINLINE -VOID -WRITE_REGISTER_UCHAR( - IN volatile UCHAR *Register, - IN UCHAR Value) -{ - LONG Synch; - *Register = Value; - InterlockedOr(&Synch, 1); -} - -FORCEINLINE -VOID -WRITE_REGISTER_ULONG( - IN volatile ULONG *Register, - IN ULONG Value) -{ - LONG Synch; - *Register = Value; - InterlockedOr(&Synch, 1); -} - -FORCEINLINE -VOID -WRITE_REGISTER_USHORT( - IN volatile USHORT *Register, - IN USHORT Value) -{ - LONG Sync; - *Register = Value; - InterlockedOr(&Sync, 1); -} -#endif - -#if defined(USE_DMA_MACROS) && !defined(_NTHAL_) && \ - (defined(_NTDDK_) || defined(_NTDRIVER_)) || defined(_WDM_INCLUDED_) - -#define DMA_MACROS_DEFINED - -FORCEINLINE -NTSTATUS -IoAllocateAdapterChannel( - IN PDMA_ADAPTER DmaAdapter, - IN PDEVICE_OBJECT DeviceObject, - IN ULONG NumberOfMapRegisters, - IN PDRIVER_CONTROL ExecutionRoutine, - IN PVOID Context) -{ - PALLOCATE_ADAPTER_CHANNEL AllocateAdapterChannel; - AllocateAdapterChannel = - *(DmaAdapter)->DmaOperations->AllocateAdapterChannel; - ASSERT(AllocateAdapterChannel); - return AllocateAdapterChannel(DmaAdapter, - DeviceObject, - NumberOfMapRegisters, - ExecutionRoutine, - Context ); -} +KeStallExecutionProcessor( + IN ULONG MicroSeconds); -FORCEINLINE +NTKERNELAPI BOOLEAN NTAPI -IoFlushAdapterBuffers( - IN PDMA_ADAPTER DmaAdapter, - IN PMDL Mdl, - IN PVOID MapRegisterBase, - IN PVOID CurrentVa, - IN ULONG Length, - IN BOOLEAN WriteToDevice) -{ - PFLUSH_ADAPTER_BUFFERS FlushAdapterBuffers; - FlushAdapterBuffers = *(DmaAdapter)->DmaOperations->FlushAdapterBuffers; - ASSERT(FlushAdapterBuffers); - return FlushAdapterBuffers(DmaAdapter, - Mdl, - MapRegisterBase, - CurrentVa, - Length, - WriteToDevice); -} +KeSynchronizeExecution( + IN OUT PKINTERRUPT Interrupt, + IN PKSYNCHRONIZE_ROUTINE SynchronizeRoutine, + IN PVOID SynchronizeContext OPTIONAL); -FORCEINLINE -VOID +NTKERNELAPI +NTSTATUS NTAPI -IoFreeAdapterChannel( - IN PDMA_ADAPTER DmaAdapter) -{ - PFREE_ADAPTER_CHANNEL FreeAdapterChannel; - FreeAdapterChannel = *(DmaAdapter)->DmaOperations->FreeAdapterChannel; - ASSERT(FreeAdapterChannel); - FreeAdapterChannel(DmaAdapter); -} +KeWaitForMultipleObjects( + IN ULONG Count, + IN PVOID Object[], + IN WAIT_TYPE WaitType, + IN KWAIT_REASON WaitReason, + IN KPROCESSOR_MODE WaitMode, + IN BOOLEAN Alertable, + IN PLARGE_INTEGER Timeout OPTIONAL, + OUT PKWAIT_BLOCK WaitBlockArray OPTIONAL); -FORCEINLINE -VOID -NTAPI -IoFreeMapRegisters( - IN PDMA_ADAPTER DmaAdapter, - IN PVOID MapRegisterBase, - IN ULONG NumberOfMapRegisters) -{ - PFREE_MAP_REGISTERS FreeMapRegisters; - FreeMapRegisters = *(DmaAdapter)->DmaOperations->FreeMapRegisters; - ASSERT(FreeMapRegisters); - FreeMapRegisters(DmaAdapter, MapRegisterBase, NumberOfMapRegisters); -} +#define KeWaitForMutexObject KeWaitForSingleObject -FORCEINLINE -PHYSICAL_ADDRESS +NTKERNELAPI +NTSTATUS NTAPI -IoMapTransfer( - IN PDMA_ADAPTER DmaAdapter, - IN PMDL Mdl, - IN PVOID MapRegisterBase, - IN PVOID CurrentVa, - IN OUT PULONG Length, - IN BOOLEAN WriteToDevice) -{ - PMAP_TRANSFER MapTransfer; - - MapTransfer = *(DmaAdapter)->DmaOperations->MapTransfer; - ASSERT(MapTransfer); - return MapTransfer(DmaAdapter, - Mdl, - MapRegisterBase, - CurrentVa, - Length, - WriteToDevice); -} -#endif +KeWaitForSingleObject( + IN PVOID Object, + IN KWAIT_REASON WaitReason, + IN KPROCESSOR_MODE WaitMode, + IN BOOLEAN Alertable, + IN PLARGE_INTEGER Timeout OPTIONAL); -#if (NTDDI_VERSION >= NTDDI_WIN2K) +#endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */ + +#if (NTDDI_VERSION >= NTDDI_WINXP) + +_DECL_HAL_KE_IMPORT +VOID +FASTCALL +KeAcquireInStackQueuedSpinLock( + IN OUT PKSPIN_LOCK SpinLock, + OUT PKLOCK_QUEUE_HANDLE LockHandle); NTKERNELAPI VOID +FASTCALL +KeAcquireInStackQueuedSpinLockAtDpcLevel( + IN OUT PKSPIN_LOCK SpinLock, + OUT PKLOCK_QUEUE_HANDLE LockHandle); + +NTKERNELAPI +KIRQL NTAPI -IoAcquireCancelSpinLock( - OUT PKIRQL Irql); +KeAcquireInterruptSpinLock( + IN OUT PKINTERRUPT Interrupt); NTKERNELAPI -NTSTATUS +BOOLEAN NTAPI -IoAcquireRemoveLockEx( - IN PIO_REMOVE_LOCK RemoveLock, - IN PVOID Tag OPTIONAL, - IN PCSTR File, - IN ULONG Line, - IN ULONG RemlockSize); +KeAreApcsDisabled(VOID); + NTKERNELAPI -NTSTATUS +ULONG NTAPI -IoAllocateDriverObjectExtension( - IN PDRIVER_OBJECT DriverObject, - IN PVOID ClientIdentificationAddress, - IN ULONG DriverObjectExtensionSize, - OUT PVOID *DriverObjectExtension); +KeGetRecommendedSharedDataAlignment(VOID); NTKERNELAPI -PVOID +ULONG NTAPI -IoAllocateErrorLogEntry( - IN PVOID IoObject, - IN UCHAR EntrySize); +KeQueryRuntimeThread( + IN PKTHREAD Thread, + OUT PULONG UserTime); NTKERNELAPI -PIRP +VOID +FASTCALL +KeReleaseInStackQueuedSpinLockFromDpcLevel( + IN PKLOCK_QUEUE_HANDLE LockHandle); + +NTKERNELAPI +VOID NTAPI -IoAllocateIrp( - IN CCHAR StackSize, - IN BOOLEAN ChargeQuota); +KeReleaseInterruptSpinLock( + IN OUT PKINTERRUPT Interrupt, + IN KIRQL OldIrql); NTKERNELAPI -PMDL +PKDEVICE_QUEUE_ENTRY NTAPI -IoAllocateMdl( - IN PVOID VirtualAddress OPTIONAL, - IN ULONG Length, - IN BOOLEAN SecondaryBuffer, - IN BOOLEAN ChargeQuota, - IN OUT PIRP Irp OPTIONAL); +KeRemoveByKeyDeviceQueueIfBusy( + IN OUT PKDEVICE_QUEUE DeviceQueue, + IN ULONG SortKey); + +_DECL_HAL_KE_IMPORT +VOID +FASTCALL +KeReleaseInStackQueuedSpinLock( + IN PKLOCK_QUEUE_HANDLE LockHandle); + +#endif /* (NTDDI_VERSION >= NTDDI_WINXP) */ + +#if (NTDDI_VERSION >= NTDDI_WINXPSP1) NTKERNELAPI -PIO_WORKITEM +BOOLEAN NTAPI -IoAllocateWorkItem( - IN PDEVICE_OBJECT DeviceObject); +KeDeregisterBugCheckReasonCallback( + IN OUT PKBUGCHECK_REASON_CALLBACK_RECORD CallbackRecord); NTKERNELAPI -NTSTATUS +BOOLEAN NTAPI -IoAttachDevice( - IN PDEVICE_OBJECT SourceDevice, - IN PUNICODE_STRING TargetDevice, - OUT PDEVICE_OBJECT *AttachedDevice); +KeRegisterBugCheckReasonCallback( + OUT PKBUGCHECK_REASON_CALLBACK_RECORD CallbackRecord, + IN PKBUGCHECK_REASON_CALLBACK_ROUTINE CallbackRoutine, + IN KBUGCHECK_CALLBACK_REASON Reason, + IN PUCHAR Component); + +#endif /* (NTDDI_VERSION >= NTDDI_WINXPSP1) */ + +#if (NTDDI_VERSION >= NTDDI_WINXPSP2) NTKERNELAPI -PDEVICE_OBJECT +VOID NTAPI -IoAttachDeviceToDeviceStack( - IN PDEVICE_OBJECT SourceDevice, - IN PDEVICE_OBJECT TargetDevice); +KeFlushQueuedDpcs( + VOID); + +#endif /* (NTDDI_VERSION >= NTDDI_WINXPSP2) */ + +#if (NTDDI_VERSION >= NTDDI_WS03) NTKERNELAPI -PIRP +PVOID NTAPI -IoBuildAsynchronousFsdRequest( - IN ULONG MajorFunction, - IN PDEVICE_OBJECT DeviceObject, - IN OUT PVOID Buffer OPTIONAL, - IN ULONG Length OPTIONAL, - IN PLARGE_INTEGER StartingOffset OPTIONAL, - IN PIO_STATUS_BLOCK IoStatusBlock OPTIONAL); +KeRegisterNmiCallback( + IN PNMI_CALLBACK CallbackRoutine, + IN PVOID Context OPTIONAL); NTKERNELAPI -PIRP +NTSTATUS NTAPI -IoBuildDeviceIoControlRequest( - IN ULONG IoControlCode, - IN PDEVICE_OBJECT DeviceObject, - IN PVOID InputBuffer OPTIONAL, - IN ULONG InputBufferLength, - OUT PVOID OutputBuffer OPTIONAL, - IN ULONG OutputBufferLength, - IN BOOLEAN InternalDeviceIoControl, - IN PKEVENT Event, - OUT PIO_STATUS_BLOCK IoStatusBlock); +KeDeregisterNmiCallback( + IN PVOID Handle); NTKERNELAPI VOID NTAPI -IoBuildPartialMdl( - IN PMDL SourceMdl, - IN OUT PMDL TargetMdl, - IN PVOID VirtualAddress, - IN ULONG Length); +KeInitializeThreadedDpc( + OUT PRKDPC Dpc, + IN PKDEFERRED_ROUTINE DeferredRoutine, + IN PVOID DeferredContext OPTIONAL); NTKERNELAPI -PIRP +ULONG_PTR NTAPI -IoBuildSynchronousFsdRequest( - IN ULONG MajorFunction, - IN PDEVICE_OBJECT DeviceObject, - IN OUT PVOID Buffer OPTIONAL, - IN ULONG Length OPTIONAL, - IN PLARGE_INTEGER StartingOffset OPTIONAL, - IN PKEVENT Event, - OUT PIO_STATUS_BLOCK IoStatusBlock); +KeIpiGenericCall( + IN PKIPI_BROADCAST_WORKER BroadcastFunction, + IN ULONG_PTR Context); NTKERNELAPI -NTSTATUS +KIRQL FASTCALL -IofCallDriver( - IN PDEVICE_OBJECT DeviceObject, - IN OUT PIRP Irp); -#define IoCallDriver IofCallDriver +KeAcquireSpinLockForDpc( + IN OUT PKSPIN_LOCK SpinLock); NTKERNELAPI VOID FASTCALL -IofCompleteRequest( - IN PIRP Irp, - IN CCHAR PriorityBoost); -#define IoCompleteRequest IofCompleteRequest +KeReleaseSpinLockForDpc( + IN OUT PKSPIN_LOCK SpinLock, + IN KIRQL OldIrql); NTKERNELAPI BOOLEAN -NTAPI -IoCancelIrp( - IN PIRP Irp); +FASTCALL +KeTestSpinLock( + IN PKSPIN_LOCK SpinLock); + +#endif /* (NTDDI_VERSION >= NTDDI_WS03) */ + +#if (NTDDI_VERSION >= NTDDI_WS03SP1) NTKERNELAPI -NTSTATUS +BOOLEAN +FASTCALL +KeTryToAcquireSpinLockAtDpcLevel( + IN OUT PKSPIN_LOCK SpinLock); + +NTKERNELAPI +BOOLEAN NTAPI -IoCheckShareAccess( - IN ACCESS_MASK DesiredAccess, - IN ULONG DesiredShareAccess, - IN OUT PFILE_OBJECT FileObject, - IN OUT PSHARE_ACCESS ShareAccess, - IN BOOLEAN Update); +KeAreAllApcsDisabled( + VOID); NTKERNELAPI VOID FASTCALL -IofCompleteRequest( - IN PIRP Irp, - IN CCHAR PriorityBoost); +KeAcquireGuardedMutex( + IN OUT PKGUARDED_MUTEX GuardedMutex +); NTKERNELAPI -NTSTATUS -NTAPI -IoConnectInterrupt( - OUT PKINTERRUPT *InterruptObject, - IN PKSERVICE_ROUTINE ServiceRoutine, - IN PVOID ServiceContext OPTIONAL, - IN PKSPIN_LOCK SpinLock OPTIONAL, - IN ULONG Vector, - IN KIRQL Irql, - IN KIRQL SynchronizeIrql, - IN KINTERRUPT_MODE InterruptMode, - IN BOOLEAN ShareVector, - IN KAFFINITY ProcessorEnableMask, - IN BOOLEAN FloatingSave); +VOID +FASTCALL +KeAcquireGuardedMutexUnsafe( + IN OUT PKGUARDED_MUTEX GuardedMutex +); NTKERNELAPI -NTSTATUS +VOID NTAPI -IoCreateDevice( - IN PDRIVER_OBJECT DriverObject, - IN ULONG DeviceExtensionSize, - IN PUNICODE_STRING DeviceName OPTIONAL, - IN DEVICE_TYPE DeviceType, - IN ULONG DeviceCharacteristics, - IN BOOLEAN Exclusive, - OUT PDEVICE_OBJECT *DeviceObject); +KeEnterGuardedRegion( + VOID +); NTKERNELAPI -NTSTATUS +VOID NTAPI -IoCreateFile( - OUT PHANDLE FileHandle, - IN ACCESS_MASK DesiredAccess, - IN POBJECT_ATTRIBUTES ObjectAttributes, - OUT PIO_STATUS_BLOCK IoStatusBlock, - IN PLARGE_INTEGER AllocationSize OPTIONAL, - IN ULONG FileAttributes, - IN ULONG ShareAccess, - IN ULONG Disposition, - IN ULONG CreateOptions, - IN PVOID EaBuffer OPTIONAL, - IN ULONG EaLength, - IN CREATE_FILE_TYPE CreateFileType, - IN PVOID InternalParameters OPTIONAL, - IN ULONG Options); +KeLeaveGuardedRegion( + VOID +); NTKERNELAPI -PKEVENT -NTAPI -IoCreateNotificationEvent( - IN PUNICODE_STRING EventName, - OUT PHANDLE EventHandle); +VOID +FASTCALL +KeInitializeGuardedMutex( + OUT PKGUARDED_MUTEX GuardedMutex +); + +NTKERNELAPI +VOID +FASTCALL +KeReleaseGuardedMutexUnsafe( + IN OUT PKGUARDED_MUTEX GuardedMutex +); + +NTKERNELAPI +VOID +FASTCALL +KeReleaseGuardedMutex( + IN OUT PKGUARDED_MUTEX GuardedMutex +); + +NTKERNELAPI +BOOLEAN +FASTCALL +KeTryToAcquireGuardedMutex( + IN OUT PKGUARDED_MUTEX GuardedMutex +); + +#endif /* (NTDDI_VERSION >= NTDDI_WS03SP1) */ + +#if (NTDDI_VERSION >= NTDDI_VISTA) + +NTKERNELAPI +VOID +FASTCALL +KeAcquireInStackQueuedSpinLockForDpc( + IN OUT PKSPIN_LOCK SpinLock, + OUT PKLOCK_QUEUE_HANDLE LockHandle); + +NTKERNELAPI +VOID +FASTCALL +KeReleaseInStackQueuedSpinLockForDpc( + IN PKLOCK_QUEUE_HANDLE LockHandle); NTKERNELAPI NTSTATUS NTAPI -IoCreateSymbolicLink( - IN PUNICODE_STRING SymbolicLinkName, - IN PUNICODE_STRING DeviceName); +KeQueryDpcWatchdogInformation( + OUT PKDPC_WATCHDOG_INFORMATION WatchdogInformation); + +#if defined(SINGLE_GROUP_LEGACY_API) +NTKERNELAPI +KAFFINITY +NTAPI +KeSetSystemAffinityThreadEx( + IN KAFFINITY Affinity); NTKERNELAPI -PKEVENT +ULONG NTAPI -IoCreateSynchronizationEvent( - IN PUNICODE_STRING EventName, - OUT PHANDLE EventHandle); +KeQueryActiveProcessorCount( + OUT PKAFFINITY ActiveProcessors OPTIONAL); NTKERNELAPI -NTSTATUS +ULONG NTAPI -IoCreateUnprotectedSymbolicLink( - IN PUNICODE_STRING SymbolicLinkName, - IN PUNICODE_STRING DeviceName); +KeQueryMaximumProcessorCount( + VOID); +#endif + +#endif /* (NTDDI_VERSION >= NTDDI_VISTA) */ + +#if (NTDDI_VERSION >= NTDDI_WS08) + +PVOID +KeRegisterProcessorChangeCallback( + IN PPROCESSOR_CALLBACK_FUNCTION CallbackFunction, + IN PVOID CallbackContext OPTIONAL, + IN ULONG Flags); -NTKERNELAPI VOID +KeDeregisterProcessorChangeCallback( + IN PVOID CallbackHandle); + +#endif /* (NTDDI_VERSION >= NTDDI_WS08) */ + +#if (NTDDI_VERSION >= NTDDI_WIN7) + +ULONG64 NTAPI -IoDeleteDevice( - IN PDEVICE_OBJECT DeviceObject); +KeQueryTotalCycleTimeProcess( + IN OUT PKPROCESS Process, + OUT PULONG64 CycleTimeStamp); + +ULONG64 +NTAPI +KeQueryTotalCycleTimeThread( + IN OUT PKTHREAD Thread, + OUT PULONG64 CycleTimeStamp); NTKERNELAPI NTSTATUS NTAPI -IoDeleteSymbolicLink( - IN PUNICODE_STRING SymbolicLinkName); +KeSetTargetProcessorDpcEx( + IN OUT PKDPC Dpc, + IN PPROCESSOR_NUMBER ProcNumber); NTKERNELAPI VOID NTAPI -IoDetachDevice( - IN OUT PDEVICE_OBJECT TargetDevice); +KeSetSystemGroupAffinityThread( + IN PGROUP_AFFINITY Affinity, + OUT PGROUP_AFFINITY PreviousAffinity OPTIONAL); NTKERNELAPI VOID NTAPI -IoDisconnectInterrupt( - IN PKINTERRUPT InterruptObject); +KeRevertToUserGroupAffinityThread( + IN PGROUP_AFFINITY PreviousAffinity); NTKERNELAPI -VOID +BOOLEAN NTAPI -IoFreeIrp( - IN PIRP Irp); +KeSetCoalescableTimer( + IN OUT PKTIMER Timer, + IN LARGE_INTEGER DueTime, + IN ULONG Period, + IN ULONG TolerableDelay, + IN PKDPC Dpc OPTIONAL); NTKERNELAPI -VOID +ULONGLONG NTAPI -IoFreeMdl( - IN PMDL Mdl); +KeQueryUnbiasedInterruptTime( + VOID); NTKERNELAPI -VOID +ULONG NTAPI -IoFreeWorkItem( - IN PIO_WORKITEM IoWorkItem); +KeQueryActiveProcessorCountEx( + IN USHORT GroupNumber); NTKERNELAPI -PDEVICE_OBJECT +ULONG NTAPI -IoGetAttachedDevice( - IN PDEVICE_OBJECT DeviceObject); +KeQueryMaximumProcessorCountEx( + IN USHORT GroupNumber); NTKERNELAPI -PDEVICE_OBJECT +USHORT NTAPI -IoGetAttachedDeviceReference( - IN PDEVICE_OBJECT DeviceObject); +KeQueryActiveGroupCount( + VOID); NTKERNELAPI -NTSTATUS +USHORT NTAPI -IoGetBootDiskInformation( - IN OUT PBOOTDISK_INFORMATION BootDiskInformation, - IN ULONG Size); +KeQueryMaximumGroupCount( + VOID); NTKERNELAPI -NTSTATUS +KAFFINITY NTAPI -IoGetDeviceInterfaceAlias( - IN PUNICODE_STRING SymbolicLinkName, - IN CONST GUID *AliasInterfaceClassGuid, - OUT PUNICODE_STRING AliasSymbolicLinkName); +KeQueryGroupAffinity + IN USHORT GroupNumber); NTKERNELAPI -PEPROCESS +ULONG NTAPI -IoGetCurrentProcess(VOID); +KeGetCurrentProcessorNumberEx( + OUT PPROCESSOR_NUMBER ProcNumber OPTIONAL); NTKERNELAPI -NTSTATUS +VOID NTAPI -IoGetDeviceInterfaces( - IN CONST GUID *InterfaceClassGuid, - IN PDEVICE_OBJECT PhysicalDeviceObject OPTIONAL, - IN ULONG Flags, - OUT PWSTR *SymbolicLinkList); +KeQueryNodeActiveAffinity( + IN USHORT NodeNumber, + OUT PGROUP_AFFINITY Affinity OPTIONAL, + OUT PUSHORT Count OPTIONAL); NTKERNELAPI -NTSTATUS +USHORT NTAPI -IoGetDeviceObjectPointer( - IN PUNICODE_STRING ObjectName, - IN ACCESS_MASK DesiredAccess, - OUT PFILE_OBJECT *FileObject, - OUT PDEVICE_OBJECT *DeviceObject); +KeQueryNodeMaximumProcessorCount( + IN USHORT NodeNumber); NTKERNELAPI -NTSTATUS +USHORT NTAPI -IoGetDeviceProperty( - IN PDEVICE_OBJECT DeviceObject, - IN DEVICE_REGISTRY_PROPERTY DeviceProperty, - IN ULONG BufferLength, - OUT PVOID PropertyBuffer, - OUT PULONG ResultLength); +KeQueryHighestNodeNumber( + VOID); NTKERNELAPI -PDMA_ADAPTER +USHORT NTAPI -IoGetDmaAdapter( - IN PDEVICE_OBJECT PhysicalDeviceObject OPTIONAL, - IN PDEVICE_DESCRIPTION DeviceDescription, - IN OUT PULONG NumberOfMapRegisters); +KeGetCurrentNodeNumber( + VOID); NTKERNELAPI -PVOID +NTSTATUS NTAPI -IoGetDriverObjectExtension( - IN PDRIVER_OBJECT DriverObject, - IN PVOID ClientIdentificationAddress); +KeQueryLogicalProcessorRelationship( + IN PPROCESSOR_NUMBER ProcessorNumber OPTIONAL, + IN LOGICAL_PROCESSOR_RELATIONSHIP RelationshipType, + OUT PSYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX Information OPTIONAL, + IN OUT PULONG Length); NTKERNELAPI -PVOID +NTSTATUS NTAPI -IoGetInitialStack(VOID); +KeSaveExtendedProcessorState( + IN ULONG64 Mask, + OUT PXSTATE_SAVE XStateSave); NTKERNELAPI -PDEVICE_OBJECT +VOID NTAPI -IoGetRelatedDeviceObject( - IN PFILE_OBJECT FileObject); +KeRestoreExtendedProcessorState( + IN PXSTATE_SAVE XStateSave); -NTKERNELAPI +#endif /* (NTDDI_VERSION >= NTDDI_WIN7) */ + +#if !defined(_IA64_) +NTHALAPI VOID NTAPI -IoQueueWorkItem( - IN PIO_WORKITEM IoWorkItem, - IN PIO_WORKITEM_ROUTINE WorkerRoutine, - IN WORK_QUEUE_TYPE QueueType, - IN PVOID Context OPTIONAL); +KeFlushWriteBuffer(VOID); +#endif + +/* VOID + * KeInitializeCallbackRecord( + * IN PKBUGCHECK_CALLBACK_RECORD CallbackRecord) + */ +#define KeInitializeCallbackRecord(CallbackRecord) \ + CallbackRecord->State = BufferEmpty; + +#if DBG + +#if (NTDDI_VERSION >= NTDDI_VISTA) +#define PAGED_ASSERT( exp ) NT_ASSERT( exp ) +#else +#define PAGED_ASSERT( exp ) ASSERT( exp ) +#endif + +#define PAGED_CODE() { \ + if (KeGetCurrentIrql() > APC_LEVEL) { \ + KdPrint( ("NTDDK: Pageable code called at IRQL > APC_LEVEL (%d)\n", KeGetCurrentIrql() )); \ + PAGED_ASSERT(FALSE); \ + } \ +} + +#else + +#define PAGED_CODE() + +#endif + +#define PAGED_CODE_LOCKED() NOP_FUNCTION; + +/****************************************************************************** + * Memory manager Functions * + ******************************************************************************/ + +/* + * Alignment Macros + */ +#define ALIGN_DOWN_BY(size, align) \ + ((ULONG_PTR)(size) & ~((ULONG_PTR)(align) - 1)) + +#define ALIGN_UP_BY(size, align) \ + (ALIGN_DOWN_BY(((ULONG_PTR)(size) + align - 1), align)) + +#define ALIGN_DOWN_POINTER_BY(ptr, align) \ + ((PVOID)ALIGN_DOWN_BY(ptr, align)) + +#define ALIGN_UP_POINTER_BY(ptr, align) \ + ((PVOID)ALIGN_UP_BY(ptr, align)) + +#define ALIGN_DOWN(size, type) \ + ALIGN_DOWN_BY(size, sizeof(type)) + +#define ALIGN_UP(size, type) \ + ALIGN_UP_BY(size, sizeof(type)) + +#define ALIGN_DOWN_POINTER(ptr, type) \ + ALIGN_DOWN_POINTER_BY(ptr, sizeof(type)) + +#define ALIGN_UP_POINTER(ptr, type) \ + ALIGN_UP_POINTER_BY(ptr, sizeof(type)) + +/* ULONG + * BYTE_OFFSET( + * IN PVOID Va) + */ +#define BYTE_OFFSET(Va) \ + ((ULONG) ((ULONG_PTR) (Va) & (PAGE_SIZE - 1))) + +/* ULONG + * BYTES_TO_PAGES( + * IN ULONG Size) + */ +#define BYTES_TO_PAGES(Size) \ + (((Size) >> PAGE_SHIFT) + (((Size) & (PAGE_SIZE - 1)) != 0)) + +/* PVOID + * PAGE_ALIGN( + * IN PVOID Va) + */ +#define PAGE_ALIGN(Va) \ + ((PVOID) ((ULONG_PTR)(Va) & ~(PAGE_SIZE - 1))) + +/* ULONG_PTR + * ROUND_TO_PAGES( + * IN ULONG_PTR Size) + */ +#define ROUND_TO_PAGES(Size) \ + (((ULONG_PTR) (Size) + PAGE_SIZE - 1) & ~(PAGE_SIZE - 1)) + +/* ULONG + * ADDRESS_AND_SIZE_TO_SPAN_PAGES( + * IN PVOID Va, + * IN ULONG Size) + */ +#define ADDRESS_AND_SIZE_TO_SPAN_PAGES(_Va, _Size) \ + ((ULONG) ((((ULONG_PTR) (_Va) & (PAGE_SIZE - 1)) \ + + (_Size) + (PAGE_SIZE - 1)) >> PAGE_SHIFT)) + +/* + * ULONG + * MmGetMdlByteCount( + * IN PMDL Mdl) + */ +#define MmGetMdlByteCount(_Mdl) \ + ((_Mdl)->ByteCount) + +/* + * ULONG + * MmGetMdlByteOffset( + * IN PMDL Mdl) + */ +#define MmGetMdlByteOffset(_Mdl) \ + ((_Mdl)->ByteOffset) -NTKERNELAPI -VOID -NTAPI -IoInitializeIrp( - IN OUT PIRP Irp, - IN USHORT PacketSize, - IN CCHAR StackSize); +/* + * PPFN_NUMBER + * MmGetMdlPfnArray( + * IN PMDL Mdl) + */ +#define MmGetMdlPfnArray(_Mdl) \ + ((PPFN_NUMBER) ((_Mdl) + 1)) -NTKERNELAPI -VOID -NTAPI -IoInitializeRemoveLockEx( - IN PIO_REMOVE_LOCK Lock, - IN ULONG AllocateTag, - IN ULONG MaxLockedMinutes, - IN ULONG HighWatermark, - IN ULONG RemlockSize); +/* + * PVOID + * MmGetMdlVirtualAddress( + * IN PMDL Mdl) + */ +#define MmGetMdlVirtualAddress(_Mdl) \ + ((PVOID) ((PCHAR) ((_Mdl)->StartVa) + (_Mdl)->ByteOffset)) -NTKERNELAPI -NTSTATUS -NTAPI -IoInitializeTimer( - IN PDEVICE_OBJECT DeviceObject, - IN PIO_TIMER_ROUTINE TimerRoutine, - IN PVOID Context OPTIONAL); +#define MmGetProcedureAddress(Address) (Address) -NTKERNELAPI -VOID -NTAPI -IoInvalidateDeviceRelations( - IN PDEVICE_OBJECT DeviceObject, - IN DEVICE_RELATION_TYPE Type); +/* PVOID MmGetSystemAddressForMdl( + * IN PMDL Mdl); + */ +#define MmGetSystemAddressForMdl(Mdl) \ + (((Mdl)->MdlFlags & (MDL_MAPPED_TO_SYSTEM_VA | \ + MDL_SOURCE_IS_NONPAGED_POOL)) ? \ + ((Mdl)->MappedSystemVa) : \ + (MmMapLockedPages((Mdl), KernelMode))) -NTKERNELAPI -VOID -NTAPI -IoInvalidateDeviceState( - IN PDEVICE_OBJECT PhysicalDeviceObject); +/* PVOID + * MmGetSystemAddressForMdlSafe( + * IN PMDL Mdl, + * IN MM_PAGE_PRIORITY Priority) + */ +#define MmGetSystemAddressForMdlSafe(_Mdl, _Priority) \ + (((_Mdl)->MdlFlags & (MDL_MAPPED_TO_SYSTEM_VA \ + | MDL_SOURCE_IS_NONPAGED_POOL)) ? \ + (_Mdl)->MappedSystemVa : \ + (PVOID) MmMapLockedPagesSpecifyCache((_Mdl), \ + KernelMode, MmCached, NULL, FALSE, (_Priority))) -NTKERNELAPI -BOOLEAN -NTAPI -IoIsWdmVersionAvailable( - IN UCHAR MajorVersion, - IN UCHAR MinorVersion); +/* + * VOID + * MmInitializeMdl( + * IN PMDL MemoryDescriptorList, + * IN PVOID BaseVa, + * IN SIZE_T Length) + */ +#define MmInitializeMdl(_MemoryDescriptorList, \ + _BaseVa, \ + _Length) \ +{ \ + (_MemoryDescriptorList)->Next = (PMDL) NULL; \ + (_MemoryDescriptorList)->Size = (CSHORT) (sizeof(MDL) + \ + (sizeof(PFN_NUMBER) * ADDRESS_AND_SIZE_TO_SPAN_PAGES(_BaseVa, _Length))); \ + (_MemoryDescriptorList)->MdlFlags = 0; \ + (_MemoryDescriptorList)->StartVa = (PVOID) PAGE_ALIGN(_BaseVa); \ + (_MemoryDescriptorList)->ByteOffset = BYTE_OFFSET(_BaseVa); \ + (_MemoryDescriptorList)->ByteCount = (ULONG) _Length; \ +} -NTKERNELAPI -NTSTATUS -NTAPI -IoOpenDeviceInterfaceRegistryKey( - IN PUNICODE_STRING SymbolicLinkName, - IN ACCESS_MASK DesiredAccess, - OUT PHANDLE DeviceInterfaceKey); +/* + * VOID + * MmPrepareMdlForReuse( + * IN PMDL Mdl) + */ +#define MmPrepareMdlForReuse(_Mdl) \ +{ \ + if (((_Mdl)->MdlFlags & MDL_PARTIAL_HAS_BEEN_MAPPED) != 0) { \ + ASSERT(((_Mdl)->MdlFlags & MDL_PARTIAL) != 0); \ + MmUnmapLockedPages((_Mdl)->MappedSystemVa, (_Mdl)); \ + } else if (((_Mdl)->MdlFlags & MDL_PARTIAL) == 0) { \ + ASSERT(((_Mdl)->MdlFlags & MDL_MAPPED_TO_SYSTEM_VA) == 0); \ + } \ +} -NTKERNELAPI -NTSTATUS -NTAPI -IoOpenDeviceRegistryKey( - IN PDEVICE_OBJECT DeviceObject, - IN ULONG DevInstKeyType, - IN ACCESS_MASK DesiredAccess, - OUT PHANDLE DevInstRegKey); +#if (NTDDI_VERSION >= NTDDI_WIN2K) NTKERNELAPI -NTSTATUS +PVOID NTAPI -IoRegisterDeviceInterface( - IN PDEVICE_OBJECT PhysicalDeviceObject, - IN CONST GUID *InterfaceClassGuid, - IN PUNICODE_STRING ReferenceString OPTIONAL, - OUT PUNICODE_STRING SymbolicLinkName); +MmAllocateContiguousMemory( + IN SIZE_T NumberOfBytes, + IN PHYSICAL_ADDRESS HighestAcceptableAddress); NTKERNELAPI -NTSTATUS +PVOID NTAPI -IoRegisterPlugPlayNotification( - IN IO_NOTIFICATION_EVENT_CATEGORY EventCategory, - IN ULONG EventCategoryFlags, - IN PVOID EventCategoryData OPTIONAL, - IN PDRIVER_OBJECT DriverObject, - IN PDRIVER_NOTIFICATION_CALLBACK_ROUTINE CallbackRoutine, - IN OUT PVOID Context OPTIONAL, - OUT PVOID *NotificationEntry); +MmAllocateContiguousMemorySpecifyCache( + IN SIZE_T NumberOfBytes, + IN PHYSICAL_ADDRESS LowestAcceptableAddress, + IN PHYSICAL_ADDRESS HighestAcceptableAddress, + IN PHYSICAL_ADDRESS BoundaryAddressMultiple OPTIONAL, + IN MEMORY_CACHING_TYPE CacheType); NTKERNELAPI -NTSTATUS +PMDL NTAPI -IoRegisterShutdownNotification( - IN PDEVICE_OBJECT DeviceObject); +MmAllocatePagesForMdl( + IN PHYSICAL_ADDRESS LowAddress, + IN PHYSICAL_ADDRESS HighAddress, + IN PHYSICAL_ADDRESS SkipBytes, + IN SIZE_T TotalBytes); NTKERNELAPI VOID NTAPI -IoReleaseCancelSpinLock( - IN KIRQL Irql); +MmBuildMdlForNonPagedPool( + IN OUT PMDLX MemoryDescriptorList); +//DECLSPEC_DEPRECATED_DDK NTKERNELAPI -VOID +PMDL NTAPI -IoReleaseRemoveLockAndWaitEx( - IN PIO_REMOVE_LOCK RemoveLock, - IN PVOID Tag OPTIONAL, - IN ULONG RemlockSize); +MmCreateMdl( + IN PMDL MemoryDescriptorList OPTIONAL, + IN PVOID Base, + IN SIZE_T Length); NTKERNELAPI VOID NTAPI -IoReleaseRemoveLockEx( - IN PIO_REMOVE_LOCK RemoveLock, - IN PVOID Tag OPTIONAL, - IN ULONG RemlockSize); +MmFreeContiguousMemory( + IN PVOID BaseAddress); NTKERNELAPI VOID NTAPI -IoRemoveShareAccess( - IN PFILE_OBJECT FileObject, - IN OUT PSHARE_ACCESS ShareAccess); +MmFreeContiguousMemorySpecifyCache( + IN PVOID BaseAddress, + IN SIZE_T NumberOfBytes, + IN MEMORY_CACHING_TYPE CacheType); NTKERNELAPI -NTSTATUS +VOID NTAPI -IoReportTargetDeviceChange( - IN PDEVICE_OBJECT PhysicalDeviceObject, - IN PVOID NotificationStructure); +MmFreePagesFromMdl( + IN PMDLX MemoryDescriptorList); NTKERNELAPI -NTSTATUS +PVOID NTAPI -IoReportTargetDeviceChangeAsynchronous( - IN PDEVICE_OBJECT PhysicalDeviceObject, - IN PVOID NotificationStructure, - IN PDEVICE_CHANGE_COMPLETE_CALLBACK Callback OPTIONAL, - IN PVOID Context OPTIONAL); +MmGetSystemRoutineAddress( + IN PUNICODE_STRING SystemRoutineName); NTKERNELAPI -VOID +LOGICAL NTAPI -IoRequestDeviceEject( - IN PDEVICE_OBJECT PhysicalDeviceObject); +MmIsDriverVerifying( + IN struct _DRIVER_OBJECT *DriverObject); NTKERNELAPI -VOID +PVOID NTAPI -IoReuseIrp( - IN OUT PIRP Irp, - IN NTSTATUS Status); +MmLockPagableDataSection( + IN PVOID AddressWithinSection); NTKERNELAPI -NTSTATUS +PVOID NTAPI -IoSetDeviceInterfaceState( - IN PUNICODE_STRING SymbolicLinkName, - IN BOOLEAN Enable); +MmMapIoSpace( + IN PHYSICAL_ADDRESS PhysicalAddress, + IN SIZE_T NumberOfBytes, + IN MEMORY_CACHING_TYPE CacheEnable); NTKERNELAPI -VOID +PVOID NTAPI -IoSetShareAccess( - IN ACCESS_MASK DesiredAccess, - IN ULONG DesiredShareAccess, - IN OUT PFILE_OBJECT FileObject, - OUT PSHARE_ACCESS ShareAccess); +MmMapLockedPages( + IN PMDL MemoryDescriptorList, + IN KPROCESSOR_MODE AccessMode); NTKERNELAPI -VOID +PVOID NTAPI -IoStartNextPacket( - IN PDEVICE_OBJECT DeviceObject, - IN BOOLEAN Cancelable); +MmMapLockedPagesSpecifyCache( + IN PMDLX MemoryDescriptorList, + IN KPROCESSOR_MODE AccessMode, + IN MEMORY_CACHING_TYPE CacheType, + IN PVOID BaseAddress OPTIONAL, + IN ULONG BugCheckOnFailure, + IN MM_PAGE_PRIORITY Priority); NTKERNELAPI -VOID +PVOID NTAPI -IoStartNextPacketByKey( - IN PDEVICE_OBJECT DeviceObject, - IN BOOLEAN Cancelable, - IN ULONG Key); +MmPageEntireDriver( + IN PVOID AddressWithinSection); NTKERNELAPI VOID NTAPI -IoStartPacket( - IN PDEVICE_OBJECT DeviceObject, - IN PIRP Irp, - IN PULONG Key OPTIONAL, - IN PDRIVER_CANCEL CancelFunction OPTIONAL); +MmProbeAndLockPages( + IN OUT PMDL MemoryDescriptorList, + IN KPROCESSOR_MODE AccessMode, + IN LOCK_OPERATION Operation); NTKERNELAPI -VOID +MM_SYSTEMSIZE NTAPI -IoStartTimer( - IN PDEVICE_OBJECT DeviceObject); +MmQuerySystemSize( + VOID); NTKERNELAPI VOID NTAPI -IoStopTimer( - IN PDEVICE_OBJECT DeviceObject); +MmResetDriverPaging( + IN PVOID AddressWithinSection); NTKERNELAPI -NTSTATUS +SIZE_T NTAPI -IoUnregisterPlugPlayNotification( - IN PVOID NotificationEntry); +MmSizeOfMdl( + IN PVOID Base, + IN SIZE_T Length); NTKERNELAPI VOID NTAPI -IoUnregisterShutdownNotification( - IN PDEVICE_OBJECT DeviceObject); +MmUnlockPagableImageSection( + IN PVOID ImageSectionHandle); NTKERNELAPI VOID NTAPI -IoUpdateShareAccess( - IN PFILE_OBJECT FileObject, - IN OUT PSHARE_ACCESS ShareAccess); - -NTKERNELAPI -NTSTATUS -NTAPI -IoWMIAllocateInstanceIds( - IN GUID *Guid, - IN ULONG InstanceCount, - OUT ULONG *FirstInstanceId); - -NTKERNELAPI -NTSTATUS -NTAPI -IoWMIQuerySingleInstanceMultiple( - IN PVOID *DataBlockObjectList, - IN PUNICODE_STRING InstanceNames, - IN ULONG ObjectCount, - IN OUT ULONG *InOutBufferSize, - OUT PVOID OutBuffer); - -NTKERNELAPI -NTSTATUS -NTAPI -IoWMIRegistrationControl( - IN PDEVICE_OBJECT DeviceObject, - IN ULONG Action); - -NTKERNELAPI -NTSTATUS -NTAPI -IoWMISuggestInstanceName( - IN PDEVICE_OBJECT PhysicalDeviceObject OPTIONAL, - IN PUNICODE_STRING SymbolicLinkName OPTIONAL, - IN BOOLEAN CombineNames, - OUT PUNICODE_STRING SuggestedInstanceName); - -NTKERNELAPI -NTSTATUS -NTAPI -IoWMIWriteEvent( - IN OUT PVOID WnodeEventItem); +MmUnlockPages( + IN OUT PMDL MemoryDescriptorList); NTKERNELAPI VOID NTAPI -IoWriteErrorLogEntry( - IN PVOID ElEntry); - -NTKERNELAPI -PIRP -NTAPI -IoGetTopLevelIrp(VOID); +MmUnmapIoSpace( + IN PVOID BaseAddress, + IN SIZE_T NumberOfBytes); NTKERNELAPI -NTSTATUS +VOID NTAPI -IoRegisterLastChanceShutdownNotification( - IN PDEVICE_OBJECT DeviceObject); +MmProbeAndLockProcessPages( + IN OUT PMDL MemoryDescriptorList, + IN PEPROCESS Process, + IN KPROCESSOR_MODE AccessMode, + IN LOCK_OPERATION Operation); NTKERNELAPI VOID NTAPI -IoSetTopLevelIrp( - IN PIRP Irp OPTIONAL); - -#endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */ +MmUnmapLockedPages( + IN PVOID BaseAddress, + IN PMDL MemoryDescriptorList); +#endif #if (NTDDI_VERSION >= NTDDI_WINXP) NTKERNELAPI NTSTATUS NTAPI -IoCsqInitialize( - IN PIO_CSQ Csq, - IN PIO_CSQ_INSERT_IRP CsqInsertIrp, - IN PIO_CSQ_REMOVE_IRP CsqRemoveIrp, - IN PIO_CSQ_PEEK_NEXT_IRP CsqPeekNextIrp, - IN PIO_CSQ_ACQUIRE_LOCK CsqAcquireLock, - IN PIO_CSQ_RELEASE_LOCK CsqReleaseLock, - IN PIO_CSQ_COMPLETE_CANCELED_IRP CsqCompleteCanceledIrp); - -NTKERNELAPI -VOID -NTAPI -IoCsqInsertIrp( - IN PIO_CSQ Csq, - IN PIRP Irp, - IN PIO_CSQ_IRP_CONTEXT Context OPTIONAL); +MmAdvanceMdl( + IN OUT PMDL Mdl, + IN ULONG NumberOfBytes); NTKERNELAPI -PIRP +PVOID NTAPI -IoCsqRemoveIrp( - IN PIO_CSQ Csq, - IN PIO_CSQ_IRP_CONTEXT Context); +MmAllocateMappingAddress( + IN SIZE_T NumberOfBytes, + IN ULONG PoolTag); NTKERNELAPI -PIRP +VOID NTAPI -IoCsqRemoveNextIrp( - IN PIO_CSQ Csq, - IN PVOID PeekContext OPTIONAL); +MmFreeMappingAddress( + IN PVOID BaseAddress, + IN ULONG PoolTag); NTKERNELAPI -BOOLEAN +NTSTATUS NTAPI -IoForwardIrpSynchronously( - IN PDEVICE_OBJECT DeviceObject, - IN PIRP Irp); - -#define IoForwardAndCatchIrp IoForwardIrpSynchronously +MmIsVerifierEnabled( + OUT PULONG VerifierFlags); NTKERNELAPI -VOID +PVOID NTAPI -IoFreeErrorLogEntry( - PVOID ElEntry); +MmMapLockedPagesWithReservedMapping( + IN PVOID MappingAddress, + IN ULONG PoolTag, + IN PMDL MemoryDescriptorList, + IN MEMORY_CACHING_TYPE CacheType); NTKERNELAPI NTSTATUS NTAPI -IoSetCompletionRoutineEx( - IN PDEVICE_OBJECT DeviceObject, - IN PIRP Irp, - IN PIO_COMPLETION_ROUTINE CompletionRoutine, - IN PVOID Context, - IN BOOLEAN InvokeOnSuccess, - IN BOOLEAN InvokeOnError, - IN BOOLEAN InvokeOnCancel); +MmProtectMdlSystemAddress( + IN PMDL MemoryDescriptorList, + IN ULONG NewProtect); +NTKERNELAPI VOID NTAPI -IoSetStartIoAttributes( - IN PDEVICE_OBJECT DeviceObject, - IN BOOLEAN DeferredStartIo, - IN BOOLEAN NonCancelable); +MmUnmapReservedMapping( + IN PVOID BaseAddress, + IN ULONG PoolTag, + IN PMDL MemoryDescriptorList); + +#endif +#if (NTDDI_VERSION >= NTDDI_WS03SP1) NTKERNELAPI -NTSTATUS +PMDL NTAPI -IoWMIDeviceObjectToInstanceName( - IN PVOID DataBlockObject, - IN PDEVICE_OBJECT DeviceObject, - OUT PUNICODE_STRING InstanceName); +MmAllocatePagesForMdlEx( + IN PHYSICAL_ADDRESS LowAddress, + IN PHYSICAL_ADDRESS HighAddress, + IN PHYSICAL_ADDRESS SkipBytes, + IN SIZE_T TotalBytes, + IN MEMORY_CACHING_TYPE CacheType, + IN ULONG Flags); +#endif + +/****************************************************************************** + * Security Manager Functions * + ******************************************************************************/ + +#if (NTDDI_VERSION >= NTDDI_WIN2K) NTKERNELAPI -NTSTATUS +BOOLEAN NTAPI -IoWMIExecuteMethod( - IN PVOID DataBlockObject, - IN PUNICODE_STRING InstanceName, - IN ULONG MethodId, - IN ULONG InBufferSize, - IN OUT PULONG OutBufferSize, - IN OUT PUCHAR InOutBuffer); +SeAccessCheck( + IN PSECURITY_DESCRIPTOR SecurityDescriptor, + IN PSECURITY_SUBJECT_CONTEXT SubjectSecurityContext, + IN BOOLEAN SubjectContextLocked, + IN ACCESS_MASK DesiredAccess, + IN ACCESS_MASK PreviouslyGrantedAccess, + OUT PPRIVILEGE_SET *Privileges OPTIONAL, + IN PGENERIC_MAPPING GenericMapping, + IN KPROCESSOR_MODE AccessMode, + OUT PACCESS_MASK GrantedAccess, + OUT PNTSTATUS AccessStatus); NTKERNELAPI NTSTATUS NTAPI -IoWMIHandleToInstanceName( - IN PVOID DataBlockObject, - IN HANDLE FileHandle, - OUT PUNICODE_STRING InstanceName); +SeAssignSecurity( + IN PSECURITY_DESCRIPTOR ParentDescriptor OPTIONAL, + IN PSECURITY_DESCRIPTOR ExplicitDescriptor OPTIONAL, + OUT PSECURITY_DESCRIPTOR *NewDescriptor, + IN BOOLEAN IsDirectoryObject, + IN PSECURITY_SUBJECT_CONTEXT SubjectContext, + IN PGENERIC_MAPPING GenericMapping, + IN POOL_TYPE PoolType); NTKERNELAPI NTSTATUS NTAPI -IoWMIOpenBlock( - IN GUID *DataBlockGuid, - IN ULONG DesiredAccess, - OUT PVOID *DataBlockObject); +SeAssignSecurityEx( + IN PSECURITY_DESCRIPTOR ParentDescriptor OPTIONAL, + IN PSECURITY_DESCRIPTOR ExplicitDescriptor OPTIONAL, + OUT PSECURITY_DESCRIPTOR *NewDescriptor, + IN GUID *ObjectType OPTIONAL, + IN BOOLEAN IsDirectoryObject, + IN ULONG AutoInheritFlags, + IN PSECURITY_SUBJECT_CONTEXT SubjectContext, + IN PGENERIC_MAPPING GenericMapping, + IN POOL_TYPE PoolType); NTKERNELAPI NTSTATUS NTAPI -IoWMIQueryAllData( - IN PVOID DataBlockObject, - IN OUT ULONG *InOutBufferSize, - OUT PVOID OutBuffer); +SeDeassignSecurity( + IN OUT PSECURITY_DESCRIPTOR *SecurityDescriptor); NTKERNELAPI -NTSTATUS +BOOLEAN NTAPI -IoWMIQueryAllDataMultiple( - IN PVOID *DataBlockObjectList, - IN ULONG ObjectCount, - IN OUT ULONG *InOutBufferSize, - OUT PVOID OutBuffer); +SeValidSecurityDescriptor( + IN ULONG Length, + IN PSECURITY_DESCRIPTOR SecurityDescriptor); NTKERNELAPI -NTSTATUS +ULONG NTAPI -IoWMIQuerySingleInstance( - IN PVOID DataBlockObject, - IN PUNICODE_STRING InstanceName, - IN OUT ULONG *InOutBufferSize, - OUT PVOID OutBuffer); +SeObjectCreateSaclAccessBits( + IN PSECURITY_DESCRIPTOR SecurityDescriptor); NTKERNELAPI -NTSTATUS +VOID NTAPI -IoWMISetNotificationCallback( - IN OUT PVOID Object, - IN WMI_NOTIFICATION_CALLBACK Callback, - IN PVOID Context OPTIONAL); +SeReleaseSubjectContext( + IN OUT PSECURITY_SUBJECT_CONTEXT SubjectContext); NTKERNELAPI -NTSTATUS +VOID NTAPI -IoWMISetSingleInstance( - IN PVOID DataBlockObject, - IN PUNICODE_STRING InstanceName, - IN ULONG Version, - IN ULONG ValueBufferSize, - IN PVOID ValueBuffer); +SeUnlockSubjectContext( + IN PSECURITY_SUBJECT_CONTEXT SubjectContext); NTKERNELAPI -NTSTATUS +VOID NTAPI -IoWMISetSingleItem( - IN PVOID DataBlockObject, - IN PUNICODE_STRING InstanceName, - IN ULONG DataItemId, - IN ULONG Version, - IN ULONG ValueBufferSize, - IN PVOID ValueBuffer); -#endif /* (NTDDI_VERSION >= NTDDI_WINXP) */ +SeCaptureSubjectContext( + OUT PSECURITY_SUBJECT_CONTEXT SubjectContext); -#if (NTDDI_VERSION >= NTDDI_WINXPSP1) NTKERNELAPI -NTSTATUS +VOID NTAPI -IoValidateDeviceIoControlAccess( - IN PIRP Irp, - IN ULONG RequiredAccess); -#endif +SeLockSubjectContext( + IN PSECURITY_SUBJECT_CONTEXT SubjectContext); -#if (NTDDI_VERSION >= NTDDI_WS03) +#endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */ + +#if (NTDDI_VERSION >= NTDDI_WS03SP1) -NTKERNELAPI NTSTATUS NTAPI -IoCsqInitializeEx( - IN PIO_CSQ Csq, - IN PIO_CSQ_INSERT_IRP_EX CsqInsertIrp, - IN PIO_CSQ_REMOVE_IRP CsqRemoveIrp, - IN PIO_CSQ_PEEK_NEXT_IRP CsqPeekNextIrp, - IN PIO_CSQ_ACQUIRE_LOCK CsqAcquireLock, - IN PIO_CSQ_RELEASE_LOCK CsqReleaseLock, - IN PIO_CSQ_COMPLETE_CANCELED_IRP CsqCompleteCanceledIrp); +SeSetAuditParameter( + IN OUT PSE_ADT_PARAMETER_ARRAY AuditParameters, + IN SE_ADT_PARAMETER_TYPE Type, + IN ULONG Index, + IN PVOID Data); -NTKERNELAPI NTSTATUS NTAPI -IoCsqInsertIrpEx( - IN PIO_CSQ Csq, - IN PIRP Irp, - IN PIO_CSQ_IRP_CONTEXT Context OPTIONAL, - IN PVOID InsertContext OPTIONAL); -#endif /* (NTDDI_VERSION >= NTDDI_WS03) */ +SeReportSecurityEvent( + IN ULONG Flags, + IN PUNICODE_STRING SourceName, + IN PSID UserSid OPTIONAL, + IN PSE_ADT_PARAMETER_ARRAY AuditParameters); +#endif /* (NTDDI_VERSION >= NTDDI_WS03SP1) */ #if (NTDDI_VERSION >= NTDDI_VISTA) NTKERNELAPI -NTSTATUS +ULONG +NTAPI +SeComputeAutoInheritByObjectType( + IN PVOID ObjectType, + IN PSECURITY_DESCRIPTOR SecurityDescriptor OPTIONAL, + IN PSECURITY_DESCRIPTOR ParentSecurityDescriptor OPTIONAL); + +#ifdef SE_NTFS_WORLD_CACHE +VOID NTAPI -IoGetBootDiskInformationLite( - OUT PBOOTDISK_INFORMATION_LITE *BootDiskInformation); +SeGetWorldRights( + IN PSECURITY_DESCRIPTOR SecurityDescriptor, + IN PGENERIC_MAPPING GenericMapping, + OUT PACCESS_MASK GrantedAccess); +#endif /* SE_NTFS_WORLD_CACHE */ + +#endif /* (NTDDI_VERSION >= NTDDI_VISTA) */ + +/****************************************************************************** + * Configuration Manager Functions * + ******************************************************************************/ +#if (NTDDI_VERSION >= NTDDI_WINXP) NTKERNELAPI NTSTATUS NTAPI -IoCheckShareAccessEx( - IN ACCESS_MASK DesiredAccess, - IN ULONG DesiredShareAccess, - IN OUT PFILE_OBJECT FileObject, - IN OUT PSHARE_ACCESS ShareAccess, - IN BOOLEAN Update, - IN PBOOLEAN WritePermission); +CmRegisterCallback( + IN PEX_CALLBACK_FUNCTION Function, + IN PVOID Context OPTIONAL, + OUT PLARGE_INTEGER Cookie); NTKERNELAPI NTSTATUS NTAPI -IoConnectInterruptEx( - IN OUT PIO_CONNECT_INTERRUPT_PARAMETERS Parameters); +CmUnRegisterCallback( + IN LARGE_INTEGER Cookie); +#endif -NTKERNELAPI + +/****************************************************************************** + * I/O Manager Functions * + ******************************************************************************/ + +#if !defined(_M_AMD64) +NTHALAPI VOID NTAPI -IoDisconnectInterruptEx( - IN PIO_DISCONNECT_INTERRUPT_PARAMETERS Parameters); +READ_PORT_BUFFER_UCHAR( + IN PUCHAR Port, + IN PUCHAR Buffer, + IN ULONG Count); -LOGICAL +NTHALAPI +VOID NTAPI -IoWithinStackLimits( - IN ULONG_PTR RegionStart, - IN SIZE_T RegionSize); +READ_PORT_BUFFER_ULONG( + IN PULONG Port, + IN PULONG Buffer, + IN ULONG Count); -NTKERNELAPI +NTHALAPI VOID NTAPI -IoSetShareAccessEx( - IN ACCESS_MASK DesiredAccess, - IN ULONG DesiredShareAccess, - IN OUT PFILE_OBJECT FileObject, - OUT PSHARE_ACCESS ShareAccess, - IN PBOOLEAN WritePermission); +READ_PORT_BUFFER_USHORT( + IN PUSHORT Port, + IN PUSHORT Buffer, + IN ULONG Count); + +NTHALAPI +UCHAR +NTAPI +READ_PORT_UCHAR( + IN PUCHAR Port); +NTHALAPI ULONG NTAPI -IoSizeofWorkItem(VOID); +READ_PORT_ULONG( + IN PULONG Port); + +NTHALAPI +USHORT +NTAPI +READ_PORT_USHORT( + IN PUSHORT Port); +NTKERNELAPI VOID NTAPI -IoInitializeWorkItem( - IN PVOID IoObject, - IN PIO_WORKITEM IoWorkItem); +READ_REGISTER_BUFFER_UCHAR( + IN PUCHAR Register, + IN PUCHAR Buffer, + IN ULONG Count); +NTKERNELAPI VOID NTAPI -IoUninitializeWorkItem( - IN PIO_WORKITEM IoWorkItem); +READ_REGISTER_BUFFER_ULONG( + IN PULONG Register, + IN PULONG Buffer, + IN ULONG Count); +NTKERNELAPI VOID NTAPI -IoQueueWorkItemEx( - IN PIO_WORKITEM IoWorkItem, - IN PIO_WORKITEM_ROUTINE_EX WorkerRoutine, - IN WORK_QUEUE_TYPE QueueType, - IN PVOID Context OPTIONAL); +READ_REGISTER_BUFFER_USHORT( + IN PUSHORT Register, + IN PUSHORT Buffer, + IN ULONG Count); -IO_PRIORITY_HINT +NTKERNELAPI +UCHAR NTAPI -IoGetIoPriorityHint( - IN PIRP Irp); +READ_REGISTER_UCHAR( + IN PUCHAR Register); -NTSTATUS +NTKERNELAPI +ULONG NTAPI -IoSetIoPriorityHint( - IN PIRP Irp, - IN IO_PRIORITY_HINT PriorityHint); +READ_REGISTER_ULONG( + IN PULONG Register); -NTSTATUS +NTKERNELAPI +USHORT NTAPI -IoAllocateSfioStreamIdentifier( - IN PFILE_OBJECT FileObject, - IN ULONG Length, - IN PVOID Signature, - OUT PVOID *StreamIdentifier); +READ_REGISTER_USHORT( + IN PUSHORT Register); + +NTHALAPI +VOID +NTAPI +WRITE_PORT_BUFFER_UCHAR( + IN PUCHAR Port, + IN PUCHAR Buffer, + IN ULONG Count); + +NTHALAPI +VOID +NTAPI +WRITE_PORT_BUFFER_ULONG( + IN PULONG Port, + IN PULONG Buffer, + IN ULONG Count); + +NTHALAPI +VOID +NTAPI +WRITE_PORT_BUFFER_USHORT( + IN PUSHORT Port, + IN PUSHORT Buffer, + IN ULONG Count); -PVOID +NTHALAPI +VOID NTAPI -IoGetSfioStreamIdentifier( - IN PFILE_OBJECT FileObject, - IN PVOID Signature); +WRITE_PORT_UCHAR( + IN PUCHAR Port, + IN UCHAR Value); -NTSTATUS +NTHALAPI +VOID NTAPI -IoFreeSfioStreamIdentifier( - IN PFILE_OBJECT FileObject, - IN PVOID Signature); +WRITE_PORT_ULONG( + IN PULONG Port, + IN ULONG Value); -NTKERNELAPI -NTSTATUS +NTHALAPI +VOID NTAPI -IoRequestDeviceEjectEx( - IN PDEVICE_OBJECT PhysicalDeviceObject, - IN PIO_DEVICE_EJECT_CALLBACK Callback OPTIONAL, - IN PVOID Context OPTIONAL, - IN PDRIVER_OBJECT DriverObject OPTIONAL); +WRITE_PORT_USHORT( + IN PUSHORT Port, + IN USHORT Value); NTKERNELAPI -NTSTATUS +VOID NTAPI -IoSetDevicePropertyData( - IN PDEVICE_OBJECT Pdo, - IN CONST DEVPROPKEY *PropertyKey, - IN LCID Lcid, - IN ULONG Flags, - IN DEVPROPTYPE Type, - IN ULONG Size, - IN PVOID Data OPTIONAL); +WRITE_REGISTER_BUFFER_UCHAR( + IN PUCHAR Register, + IN PUCHAR Buffer, + IN ULONG Count); NTKERNELAPI -NTSTATUS +VOID NTAPI -IoGetDevicePropertyData( - PDEVICE_OBJECT Pdo, - CONST DEVPROPKEY *PropertyKey, - LCID Lcid, - ULONG Flags, - ULONG Size, - PVOID Data, - PULONG RequiredSize, - PDEVPROPTYPE Type); - -#endif /* (NTDDI_VERSION >= NTDDI_VISTA) */ - -#define IoCallDriverStackSafeDefault(a, b) IoCallDriver(a, b) +WRITE_REGISTER_BUFFER_ULONG( + IN PULONG Register, + IN PULONG Buffer, + IN ULONG Count); -#if (NTDDI_VERSION >= NTDDI_WS08) NTKERNELAPI -NTSTATUS +VOID NTAPI -IoReplacePartitionUnit( - IN PDEVICE_OBJECT TargetPdo, - IN PDEVICE_OBJECT SparePdo, - IN ULONG Flags); -#endif - -#if (NTDDI_VERSION >= NTDDI_WIN7) +WRITE_REGISTER_BUFFER_USHORT( + IN PUSHORT Register, + IN PUSHORT Buffer, + IN ULONG Count); NTKERNELAPI -NTSTATUS -NTAPI -IoGetAffinityInterrupt( - IN PKINTERRUPT InterruptObject, - OUT PGROUP_AFFINITY GroupAffinity); - -NTSTATUS -NTAPI -IoGetContainerInformation( - IN IO_CONTAINER_INFORMATION_CLASS InformationClass, - IN PVOID ContainerObject OPTIONAL, - IN OUT PVOID Buffer OPTIONAL, - IN ULONG BufferLength); - -NTSTATUS -NTAPI -IoRegisterContainerNotification( - IN IO_CONTAINER_NOTIFICATION_CLASS NotificationClass, - IN PIO_CONTAINER_NOTIFICATION_FUNCTION CallbackFunction, - IN PVOID NotificationInformation OPTIONAL, - IN ULONG NotificationInformationLength, - OUT PVOID CallbackRegistration); - VOID NTAPI -IoUnregisterContainerNotification( - IN PVOID CallbackRegistration); +WRITE_REGISTER_UCHAR( + IN PUCHAR Register, + IN UCHAR Value); NTKERNELAPI -NTSTATUS +VOID NTAPI -IoUnregisterPlugPlayNotificationEx( - IN PVOID NotificationEntry); +WRITE_REGISTER_ULONG( + IN PULONG Register, + IN ULONG Value); NTKERNELAPI -NTSTATUS +VOID NTAPI -IoGetDeviceNumaNode( - IN PDEVICE_OBJECT Pdo, - OUT PUSHORT NodeNumber); - -#endif /* (NTDDI_VERSION >= NTDDI_WIN7) */ +WRITE_REGISTER_USHORT( + IN PUSHORT Register, + IN USHORT Value); -#if defined(_WIN64) -NTKERNELAPI -ULONG -NTAPI -IoWMIDeviceObjectToProviderId( - IN PDEVICE_OBJECT DeviceObject); #else -#define IoWMIDeviceObjectToProviderId(DeviceObject) ((ULONG)(DeviceObject)) -#endif -/* - * USHORT - * IoSizeOfIrp( - * IN CCHAR StackSize) - */ -#define IoSizeOfIrp(_StackSize) \ - ((USHORT) (sizeof(IRP) + ((_StackSize) * (sizeof(IO_STACK_LOCATION))))) +FORCEINLINE +VOID +READ_PORT_BUFFER_UCHAR( + IN PUCHAR Port, + IN PUCHAR Buffer, + IN ULONG Count) +{ + __inbytestring((USHORT)(ULONG_PTR)Port, Buffer, Count); +} FORCEINLINE VOID -IoSkipCurrentIrpStackLocation( - IN OUT PIRP Irp) +READ_PORT_BUFFER_ULONG( + IN PULONG Port, + IN PULONG Buffer, + IN ULONG Count) { - ASSERT(Irp->CurrentLocation <= Irp->StackCount); - Irp->CurrentLocation++; - Irp->Tail.Overlay.CurrentStackLocation++; + __indwordstring((USHORT)(ULONG_PTR)Port, Buffer, Count); } FORCEINLINE VOID -IoSetNextIrpStackLocation( - IN OUT PIRP Irp) +READ_PORT_BUFFER_USHORT( + IN PUSHORT Port, + IN PUSHORT Buffer, + IN ULONG Count) { - ASSERT(Irp->CurrentLocation > 0); - Irp->CurrentLocation--; - Irp->Tail.Overlay.CurrentStackLocation--; + __inwordstring((USHORT)(ULONG_PTR)Port, Buffer, Count); } FORCEINLINE -PIO_STACK_LOCATION -IoGetNextIrpStackLocation( - IN PIRP Irp) +UCHAR +READ_PORT_UCHAR( + IN PUCHAR Port) { - ASSERT(Irp->CurrentLocation > 0); - return ((Irp)->Tail.Overlay.CurrentStackLocation - 1 ); + return __inbyte((USHORT)(ULONG_PTR)Port); } FORCEINLINE -VOID -IoSetCompletionRoutine( - IN PIRP Irp, - IN PIO_COMPLETION_ROUTINE CompletionRoutine OPTIONAL, - IN PVOID Context OPTIONAL, - IN BOOLEAN InvokeOnSuccess, - IN BOOLEAN InvokeOnError, - IN BOOLEAN InvokeOnCancel) +ULONG +READ_PORT_ULONG( + IN PULONG Port) { - PIO_STACK_LOCATION irpSp; - ASSERT( (InvokeOnSuccess || InvokeOnError || InvokeOnCancel) ? (CompletionRoutine != NULL) : TRUE ); - irpSp = IoGetNextIrpStackLocation(Irp); - irpSp->CompletionRoutine = CompletionRoutine; - irpSp->Context = Context; - irpSp->Control = 0; + return __indword((USHORT)(ULONG_PTR)Port); +} - if (InvokeOnSuccess) { - irpSp->Control = SL_INVOKE_ON_SUCCESS; - } +FORCEINLINE +USHORT +READ_PORT_USHORT( + IN PUSHORT Port) +{ + return __inword((USHORT)(ULONG_PTR)Port); +} - if (InvokeOnError) { - irpSp->Control |= SL_INVOKE_ON_ERROR; - } +FORCEINLINE +VOID +READ_REGISTER_BUFFER_UCHAR( + IN PUCHAR Register, + IN PUCHAR Buffer, + IN ULONG Count) +{ + __movsb(Register, Buffer, Count); +} - if (InvokeOnCancel) { - irpSp->Control |= SL_INVOKE_ON_CANCEL; - } +FORCEINLINE +VOID +READ_REGISTER_BUFFER_ULONG( + IN PULONG Register, + IN PULONG Buffer, + IN ULONG Count) +{ + __movsd(Register, Buffer, Count); } -/* - * PDRIVER_CANCEL - * IoSetCancelRoutine( - * IN PIRP Irp, - * IN PDRIVER_CANCEL CancelRoutine) - */ -#define IoSetCancelRoutine(_Irp, \ - _CancelRoutine) \ - ((PDRIVER_CANCEL) (ULONG_PTR) InterlockedExchangePointer( \ - (PVOID *) &(_Irp)->CancelRoutine, (PVOID) (ULONG_PTR) (_CancelRoutine))) +FORCEINLINE +VOID +READ_REGISTER_BUFFER_USHORT( + IN PUSHORT Register, + IN PUSHORT Buffer, + IN ULONG Count) +{ + __movsw(Register, Buffer, Count); +} -/* - * VOID - * IoRequestDpc( - * IN PDEVICE_OBJECT DeviceObject, - * IN PIRP Irp, - * IN PVOID Context); - */ -#define IoRequestDpc(DeviceObject, Irp, Context)( \ - KeInsertQueueDpc(&(DeviceObject)->Dpc, (Irp), (Context))) +FORCEINLINE +UCHAR +READ_REGISTER_UCHAR( + IN volatile UCHAR *Register) +{ + return *Register; +} -/* - * VOID - * IoReleaseRemoveLock( - * IN PIO_REMOVE_LOCK RemoveLock, - * IN PVOID Tag) - */ -#define IoReleaseRemoveLock(_RemoveLock, \ - _Tag) \ - IoReleaseRemoveLockEx(_RemoveLock, _Tag, sizeof(IO_REMOVE_LOCK)) +FORCEINLINE +ULONG +READ_REGISTER_ULONG( + IN volatile ULONG *Register) +{ + return *Register; +} -/* - * VOID - * IoReleaseRemoveLockAndWait( - * IN PIO_REMOVE_LOCK RemoveLock, - * IN PVOID Tag) - */ -#define IoReleaseRemoveLockAndWait(_RemoveLock, \ - _Tag) \ - IoReleaseRemoveLockAndWaitEx(_RemoveLock, _Tag, sizeof(IO_REMOVE_LOCK)) +FORCEINLINE +USHORT +READ_REGISTER_USHORT( + IN volatile USHORT *Register) +{ + return *Register; +} -#if defined(_WIN64) -NTKERNELAPI -BOOLEAN -IoIs32bitProcess( - IN PIRP Irp OPTIONAL); -#endif +FORCEINLINE +VOID +WRITE_PORT_BUFFER_UCHAR( + IN PUCHAR Port, + IN PUCHAR Buffer, + IN ULONG Count) +{ + __outbytestring((USHORT)(ULONG_PTR)Port, Buffer, Count); +} -#define PLUGPLAY_REGKEY_DEVICE 1 -#define PLUGPLAY_REGKEY_DRIVER 2 -#define PLUGPLAY_REGKEY_CURRENT_HWPROFILE 4 +FORCEINLINE +VOID +WRITE_PORT_BUFFER_ULONG( + IN PULONG Port, + IN PULONG Buffer, + IN ULONG Count) +{ + __outdwordstring((USHORT)(ULONG_PTR)Port, Buffer, Count); +} FORCEINLINE -PIO_STACK_LOCATION -IoGetCurrentIrpStackLocation( - IN PIRP Irp) +VOID +WRITE_PORT_BUFFER_USHORT( + IN PUSHORT Port, + IN PUSHORT Buffer, + IN ULONG Count) +{ + __outwordstring((USHORT)(ULONG_PTR)Port, Buffer, Count); +} + +FORCEINLINE +VOID +WRITE_PORT_UCHAR( + IN PUCHAR Port, + IN UCHAR Value) { - ASSERT(Irp->CurrentLocation <= Irp->StackCount + 1); - return Irp->Tail.Overlay.CurrentStackLocation; + __outbyte((USHORT)(ULONG_PTR)Port, Value); } FORCEINLINE VOID -IoMarkIrpPending( - IN OUT PIRP Irp) +WRITE_PORT_ULONG( + IN PULONG Port, + IN ULONG Value) { - IoGetCurrentIrpStackLocation( (Irp) )->Control |= SL_PENDING_RETURNED; + __outdword((USHORT)(ULONG_PTR)Port, Value); } -/* - * BOOLEAN - * IoIsErrorUserInduced( - * IN NTSTATUS Status); - */ -#define IoIsErrorUserInduced(Status) \ - ((BOOLEAN)(((Status) == STATUS_DEVICE_NOT_READY) || \ - ((Status) == STATUS_IO_TIMEOUT) || \ - ((Status) == STATUS_MEDIA_WRITE_PROTECTED) || \ - ((Status) == STATUS_NO_MEDIA_IN_DEVICE) || \ - ((Status) == STATUS_VERIFY_REQUIRED) || \ - ((Status) == STATUS_UNRECOGNIZED_MEDIA) || \ - ((Status) == STATUS_WRONG_VOLUME))) - -/* VOID - * IoInitializeRemoveLock( - * IN PIO_REMOVE_LOCK Lock, - * IN ULONG AllocateTag, - * IN ULONG MaxLockedMinutes, - * IN ULONG HighWatermark) - */ -#define IoInitializeRemoveLock( \ - Lock, AllocateTag, MaxLockedMinutes, HighWatermark) \ - IoInitializeRemoveLockEx(Lock, AllocateTag, MaxLockedMinutes, \ - HighWatermark, sizeof(IO_REMOVE_LOCK)) - -VOID FORCEINLINE -IoInitializeDpcRequest( - IN PDEVICE_OBJECT DeviceObject, - IN PIO_DPC_ROUTINE DpcRoutine) +VOID +WRITE_PORT_USHORT( + IN PUSHORT Port, + IN USHORT Value) { - KeInitializeDpc( &DeviceObject->Dpc, - (PKDEFERRED_ROUTINE) DpcRoutine, - DeviceObject ); + __outword((USHORT)(ULONG_PTR)Port, Value); } -#define DEVICE_INTERFACE_INCLUDE_NONACTIVE 0x00000001 - -/* - * ULONG - * IoGetFunctionCodeFromCtlCode( - * IN ULONG ControlCode) - */ -#define IoGetFunctionCodeFromCtlCode(_ControlCode) \ - (((_ControlCode) >> 2) & 0x00000FFF) - FORCEINLINE VOID -IoCopyCurrentIrpStackLocationToNext( - IN OUT PIRP Irp) +WRITE_REGISTER_BUFFER_UCHAR( + IN PUCHAR Register, + IN PUCHAR Buffer, + IN ULONG Count) { - PIO_STACK_LOCATION irpSp; - PIO_STACK_LOCATION nextIrpSp; - irpSp = IoGetCurrentIrpStackLocation(Irp); - nextIrpSp = IoGetNextIrpStackLocation(Irp); - RtlCopyMemory( nextIrpSp, irpSp, FIELD_OFFSET(IO_STACK_LOCATION, CompletionRoutine)); - nextIrpSp->Control = 0; + LONG Synch; + __movsb(Register, Buffer, Count); + InterlockedOr(&Synch, 1); } -NTKERNELAPI +FORCEINLINE VOID -NTAPI -IoGetStackLimits( - OUT PULONG_PTR LowLimit, - OUT PULONG_PTR HighLimit); +WRITE_REGISTER_BUFFER_ULONG( + IN PULONG Register, + IN PULONG Buffer, + IN ULONG Count) +{ + LONG Synch; + __movsd(Register, Buffer, Count); + InterlockedOr(&Synch, 1); +} FORCEINLINE -ULONG_PTR -IoGetRemainingStackSize(VOID) +VOID +WRITE_REGISTER_BUFFER_USHORT( + IN PUSHORT Register, + IN PUSHORT Buffer, + IN ULONG Count) { - ULONG_PTR End, Begin; - ULONG_PTR Result; + LONG Synch; + __movsw(Register, Buffer, Count); + InterlockedOr(&Synch, 1); +} - IoGetStackLimits(&Begin, &End); - Result = (ULONG_PTR)(&End) - Begin; - return Result; +FORCEINLINE +VOID +WRITE_REGISTER_UCHAR( + IN volatile UCHAR *Register, + IN UCHAR Value) +{ + LONG Synch; + *Register = Value; + InterlockedOr(&Synch, 1); } -#if (NTDDI_VERSION >= NTDDI_WS03) +FORCEINLINE VOID +WRITE_REGISTER_ULONG( + IN volatile ULONG *Register, + IN ULONG Value) +{ + LONG Synch; + *Register = Value; + InterlockedOr(&Synch, 1); +} + FORCEINLINE -IoInitializeThreadedDpcRequest( - IN PDEVICE_OBJECT DeviceObject, - IN PIO_DPC_ROUTINE DpcRoutine) +VOID +WRITE_REGISTER_USHORT( + IN volatile USHORT *Register, + IN USHORT Value) { - KeInitializeThreadedDpc(&DeviceObject->Dpc, - (PKDEFERRED_ROUTINE) DpcRoutine, - DeviceObject ); + LONG Sync; + *Register = Value; + InterlockedOr(&Sync, 1); } #endif -/****************************************************************************** - * Power Management Support Functions * - ******************************************************************************/ - -#define PoSetDeviceBusy(IdlePointer) ((void)(*(IdlePointer) = 0)) +#if defined(USE_DMA_MACROS) && !defined(_NTHAL_) && \ + (defined(_NTDDK_) || defined(_NTDRIVER_)) || defined(_WDM_INCLUDED_) -#if (NTDDI_VERSION >= NTDDI_WIN2K) +#define DMA_MACROS_DEFINED -NTKERNELAPI +FORCEINLINE NTSTATUS -NTAPI -PoCallDriver( - IN struct _DEVICE_OBJECT *DeviceObject, - IN OUT struct _IRP *Irp); - -NTKERNELAPI -PULONG -NTAPI -PoRegisterDeviceForIdleDetection( - IN struct _DEVICE_OBJECT *DeviceObject, - IN ULONG ConservationIdleTime, - IN ULONG PerformanceIdleTime, - IN DEVICE_POWER_STATE State); - -NTKERNELAPI -PVOID -NTAPI -PoRegisterSystemState( - IN OUT PVOID StateHandle OPTIONAL, - IN EXECUTION_STATE Flags); +IoAllocateAdapterChannel( + IN PDMA_ADAPTER DmaAdapter, + IN PDEVICE_OBJECT DeviceObject, + IN ULONG NumberOfMapRegisters, + IN PDRIVER_CONTROL ExecutionRoutine, + IN PVOID Context) +{ + PALLOCATE_ADAPTER_CHANNEL AllocateAdapterChannel; + AllocateAdapterChannel = + *(DmaAdapter)->DmaOperations->AllocateAdapterChannel; + ASSERT(AllocateAdapterChannel); + return AllocateAdapterChannel(DmaAdapter, + DeviceObject, + NumberOfMapRegisters, + ExecutionRoutine, + Context ); +} -NTKERNELAPI -NTSTATUS +FORCEINLINE +BOOLEAN NTAPI -PoRequestPowerIrp( - IN struct _DEVICE_OBJECT *DeviceObject, - IN UCHAR MinorFunction, - IN POWER_STATE PowerState, - IN PREQUEST_POWER_COMPLETE CompletionFunction OPTIONAL, - IN PVOID Context OPTIONAL, - OUT struct _IRP **Irp OPTIONAL); +IoFlushAdapterBuffers( + IN PDMA_ADAPTER DmaAdapter, + IN PMDL Mdl, + IN PVOID MapRegisterBase, + IN PVOID CurrentVa, + IN ULONG Length, + IN BOOLEAN WriteToDevice) +{ + PFLUSH_ADAPTER_BUFFERS FlushAdapterBuffers; + FlushAdapterBuffers = *(DmaAdapter)->DmaOperations->FlushAdapterBuffers; + ASSERT(FlushAdapterBuffers); + return FlushAdapterBuffers(DmaAdapter, + Mdl, + MapRegisterBase, + CurrentVa, + Length, + WriteToDevice); +} -NTKERNELAPI -POWER_STATE +FORCEINLINE +VOID NTAPI -PoSetPowerState( - IN struct _DEVICE_OBJECT *DeviceObject, - IN POWER_STATE_TYPE Type, - IN POWER_STATE State); +IoFreeAdapterChannel( + IN PDMA_ADAPTER DmaAdapter) +{ + PFREE_ADAPTER_CHANNEL FreeAdapterChannel; + FreeAdapterChannel = *(DmaAdapter)->DmaOperations->FreeAdapterChannel; + ASSERT(FreeAdapterChannel); + FreeAdapterChannel(DmaAdapter); +} -NTKERNELAPI +FORCEINLINE VOID NTAPI -PoSetSystemState( - IN EXECUTION_STATE Flags); +IoFreeMapRegisters( + IN PDMA_ADAPTER DmaAdapter, + IN PVOID MapRegisterBase, + IN ULONG NumberOfMapRegisters) +{ + PFREE_MAP_REGISTERS FreeMapRegisters; + FreeMapRegisters = *(DmaAdapter)->DmaOperations->FreeMapRegisters; + ASSERT(FreeMapRegisters); + FreeMapRegisters(DmaAdapter, MapRegisterBase, NumberOfMapRegisters); +} -NTKERNELAPI -VOID +FORCEINLINE +PHYSICAL_ADDRESS NTAPI -PoStartNextPowerIrp( - IN OUT struct _IRP *Irp); +IoMapTransfer( + IN PDMA_ADAPTER DmaAdapter, + IN PMDL Mdl, + IN PVOID MapRegisterBase, + IN PVOID CurrentVa, + IN OUT PULONG Length, + IN BOOLEAN WriteToDevice) +{ + PMAP_TRANSFER MapTransfer; + + MapTransfer = *(DmaAdapter)->DmaOperations->MapTransfer; + ASSERT(MapTransfer); + return MapTransfer(DmaAdapter, + Mdl, + MapRegisterBase, + CurrentVa, + Length, + WriteToDevice); +} +#endif +#if (NTDDI_VERSION >= NTDDI_WIN2K) NTKERNELAPI VOID NTAPI -PoUnregisterSystemState( - IN OUT PVOID StateHandle); +IoAcquireCancelSpinLock( + OUT PKIRQL Irql); NTKERNELAPI NTSTATUS NTAPI -PoRequestShutdownEvent( - OUT PVOID *Event); - -#endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */ - -#if (NTDDI_VERSION >= NTDDI_VISTA) +IoAcquireRemoveLockEx( + IN PIO_REMOVE_LOCK RemoveLock, + IN PVOID Tag OPTIONAL, + IN PCSTR File, + IN ULONG Line, + IN ULONG RemlockSize); +#endif -NTKERNELAPI -VOID -NTAPI -PoSetSystemWake( - IN OUT struct _IRP *Irp); +/* + * NTSTATUS + * IoAcquireRemoveLock( + * IN PIO_REMOVE_LOCK RemoveLock, + * IN OPTIONAL PVOID Tag) + */ +#if DBG +#define IoAcquireRemoveLock(RemoveLock, Tag) \ + IoAcquireRemoveLockEx(RemoveLock, Tag, __FILE__, __LINE__, sizeof (IO_REMOVE_LOCK)) +#else +#define IoAcquireRemoveLock(RemoveLock, Tag) \ + IoAcquireRemoveLockEx(RemoveLock, Tag, "", 1, sizeof (IO_REMOVE_LOCK)) +#endif -NTKERNELAPI -BOOLEAN -NTAPI -PoGetSystemWake( - IN struct _IRP *Irp); +/* + * VOID + * IoAdjustPagingPathCount( + * IN PLONG Count, + * IN BOOLEAN Increment) + */ +#define IoAdjustPagingPathCount(_Count, \ + _Increment) \ +{ \ + if (_Increment) \ + { \ + InterlockedIncrement(_Count); \ + } \ + else \ + { \ + InterlockedDecrement(_Count); \ + } \ +} -NTKERNELAPI -NTSTATUS -NTAPI -PoRegisterPowerSettingCallback( - IN PDEVICE_OBJECT DeviceObject OPTIONAL, - IN LPCGUID SettingGuid, - IN PPOWER_SETTING_CALLBACK Callback, - IN PVOID Context OPTIONAL, - OUT PVOID *Handle OPTIONAL); +#if (NTDDI_VERSION >= NTDDI_WIN2K) NTKERNELAPI NTSTATUS -NTAPI -PoUnregisterPowerSettingCallback( - IN OUT PVOID Handle); - -#endif /* (NTDDI_VERSION >= NTDDI_VISTA) */ - -#if (NTDDI_VERSION >= NTDDI_VISTASP1) -NTKERNELAPI -VOID -NTAPI -PoSetDeviceBusyEx( - IN OUT PULONG IdlePointer); -#endif /* (NTDDI_VERSION >= NTDDI_VISTASP1) */ - -#if (NTDDI_VERSION >= NTDDI_WIN7) +NTAPI +IoAllocateDriverObjectExtension( + IN PDRIVER_OBJECT DriverObject, + IN PVOID ClientIdentificationAddress, + IN ULONG DriverObjectExtensionSize, + OUT PVOID *DriverObjectExtension); NTKERNELAPI -VOID +PVOID NTAPI -PoStartDeviceBusy( - IN OUT PULONG IdlePointer); +IoAllocateErrorLogEntry( + IN PVOID IoObject, + IN UCHAR EntrySize); NTKERNELAPI -VOID +PIRP NTAPI -PoEndDeviceBusy( - IN OUT PULONG IdlePointer); +IoAllocateIrp( + IN CCHAR StackSize, + IN BOOLEAN ChargeQuota); NTKERNELAPI -BOOLEAN +PMDL NTAPI -PoQueryWatchdogTime( - IN PDEVICE_OBJECT Pdo, - OUT PULONG SecondsRemaining); +IoAllocateMdl( + IN PVOID VirtualAddress OPTIONAL, + IN ULONG Length, + IN BOOLEAN SecondaryBuffer, + IN BOOLEAN ChargeQuota, + IN OUT PIRP Irp OPTIONAL); NTKERNELAPI -VOID +PIO_WORKITEM NTAPI -PoDeletePowerRequest( - IN OUT PVOID PowerRequest); +IoAllocateWorkItem( + IN PDEVICE_OBJECT DeviceObject); NTKERNELAPI NTSTATUS NTAPI -PoSetPowerRequest( - IN OUT PVOID PowerRequest, - IN POWER_REQUEST_TYPE Type); +IoAttachDevice( + IN PDEVICE_OBJECT SourceDevice, + IN PUNICODE_STRING TargetDevice, + OUT PDEVICE_OBJECT *AttachedDevice); NTKERNELAPI -NTSTATUS +PDEVICE_OBJECT NTAPI -PoClearPowerRequest( - IN OUT PVOID PowerRequest, - IN POWER_REQUEST_TYPE Type); +IoAttachDeviceToDeviceStack( + IN PDEVICE_OBJECT SourceDevice, + IN PDEVICE_OBJECT TargetDevice); NTKERNELAPI -NTSTATUS +PIRP NTAPI -PoCreatePowerRequest( - OUT PVOID *PowerRequest, - IN PDEVICE_OBJECT DeviceObject, - IN PCOUNTED_REASON_CONTEXT Context); - -#endif /* (NTDDI_VERSION >= NTDDI_WIN7) */ - -/****************************************************************************** - * Executive Functions * - ******************************************************************************/ - -#define ExInterlockedIncrementLong(Addend,Lock) Exfi386InterlockedIncrementLong(Addend) -#define ExInterlockedDecrementLong(Addend,Lock) Exfi386InterlockedDecrementLong(Addend) -#define ExInterlockedExchangeUlong(Target, Value, Lock) Exfi386InterlockedExchangeUlong(Target, Value) +IoBuildAsynchronousFsdRequest( + IN ULONG MajorFunction, + IN PDEVICE_OBJECT DeviceObject, + IN OUT PVOID Buffer OPTIONAL, + IN ULONG Length OPTIONAL, + IN PLARGE_INTEGER StartingOffset OPTIONAL, + IN PIO_STATUS_BLOCK IoStatusBlock OPTIONAL); -#define ExAcquireSpinLock(Lock, OldIrql) KeAcquireSpinLock((Lock), (OldIrql)) -#define ExReleaseSpinLock(Lock, OldIrql) KeReleaseSpinLock((Lock), (OldIrql)) -#define ExAcquireSpinLockAtDpcLevel(Lock) KeAcquireSpinLockAtDpcLevel(Lock) -#define ExReleaseSpinLockFromDpcLevel(Lock) KeReleaseSpinLockFromDpcLevel(Lock) +NTKERNELAPI +PIRP +NTAPI +IoBuildDeviceIoControlRequest( + IN ULONG IoControlCode, + IN PDEVICE_OBJECT DeviceObject, + IN PVOID InputBuffer OPTIONAL, + IN ULONG InputBufferLength, + OUT PVOID OutputBuffer OPTIONAL, + IN ULONG OutputBufferLength, + IN BOOLEAN InternalDeviceIoControl, + IN PKEVENT Event, + OUT PIO_STATUS_BLOCK IoStatusBlock); -#define ExInitializeSListHead InitializeSListHead +NTKERNELAPI +VOID +NTAPI +IoBuildPartialMdl( + IN PMDL SourceMdl, + IN OUT PMDL TargetMdl, + IN PVOID VirtualAddress, + IN ULONG Length); -#if defined(_NTHAL_) && defined(_X86_) +NTKERNELAPI +PIRP +NTAPI +IoBuildSynchronousFsdRequest( + IN ULONG MajorFunction, + IN PDEVICE_OBJECT DeviceObject, + IN OUT PVOID Buffer OPTIONAL, + IN ULONG Length OPTIONAL, + IN PLARGE_INTEGER StartingOffset OPTIONAL, + IN PKEVENT Event, + OUT PIO_STATUS_BLOCK IoStatusBlock); NTKERNELAPI -VOID +NTSTATUS FASTCALL -ExiAcquireFastMutex( - IN OUT PFAST_MUTEX FastMutex); +IofCallDriver( + IN PDEVICE_OBJECT DeviceObject, + IN OUT PIRP Irp); +#define IoCallDriver IofCallDriver NTKERNELAPI VOID FASTCALL -ExiReleaseFastMutex( - IN OUT PFAST_MUTEX FastMutex); +IofCompleteRequest( + IN PIRP Irp, + IN CCHAR PriorityBoost); +#define IoCompleteRequest IofCompleteRequest NTKERNELAPI BOOLEAN -FASTCALL -ExiTryToAcquireFastMutex( - IN OUT PFAST_MUTEX FastMutex); - -#define ExAcquireFastMutex ExiAcquireFastMutex -#define ExReleaseFastMutex ExiReleaseFastMutex -#define ExTryToAcquireFastMutex ExiTryToAcquireFastMutex - -#else - -#if (NTDDI_VERSION >= NTDDI_WIN2K) +NTAPI +IoCancelIrp( + IN PIRP Irp); NTKERNELAPI -VOID -FASTCALL -ExAcquireFastMutex( - IN OUT PFAST_MUTEX FastMutex); +NTSTATUS +NTAPI +IoCheckShareAccess( + IN ACCESS_MASK DesiredAccess, + IN ULONG DesiredShareAccess, + IN OUT PFILE_OBJECT FileObject, + IN OUT PSHARE_ACCESS ShareAccess, + IN BOOLEAN Update); NTKERNELAPI VOID FASTCALL -ExReleaseFastMutex( - IN OUT PFAST_MUTEX FastMutex); +IofCompleteRequest( + IN PIRP Irp, + IN CCHAR PriorityBoost); NTKERNELAPI -BOOLEAN -FASTCALL -ExTryToAcquireFastMutex( - IN OUT PFAST_MUTEX FastMutex); - -#endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */ - -#endif /* defined(_NTHAL_) && defined(_X86_) */ - -#if defined(_X86_) -#define ExInterlockedAddUlong ExfInterlockedAddUlong -#define ExInterlockedInsertHeadList ExfInterlockedInsertHeadList -#define ExInterlockedInsertTailList ExfInterlockedInsertTailList -#define ExInterlockedRemoveHeadList ExfInterlockedRemoveHeadList -#define ExInterlockedPopEntryList ExfInterlockedPopEntryList -#define ExInterlockedPushEntryList ExfInterlockedPushEntryList -#endif /* defined(_X86_) */ - -#if defined(_WIN64) +NTSTATUS +NTAPI +IoConnectInterrupt( + OUT PKINTERRUPT *InterruptObject, + IN PKSERVICE_ROUTINE ServiceRoutine, + IN PVOID ServiceContext OPTIONAL, + IN PKSPIN_LOCK SpinLock OPTIONAL, + IN ULONG Vector, + IN KIRQL Irql, + IN KIRQL SynchronizeIrql, + IN KINTERRUPT_MODE InterruptMode, + IN BOOLEAN ShareVector, + IN KAFFINITY ProcessorEnableMask, + IN BOOLEAN FloatingSave); -#if defined(_NTDRIVER_) || defined(_NTDDK_) || defined(_NTIFS_) || \ - defined(_NTHAL_) || defined(_NTOSP_) NTKERNELAPI -USHORT -ExQueryDepthSList(IN PSLIST_HEADER ListHead); -#else -FORCEINLINE -USHORT -ExQueryDepthSList(IN PSLIST_HEADER ListHead) -{ - return (USHORT)(ListHead->Alignment & 0xffff); -} -#endif +NTSTATUS +NTAPI +IoCreateDevice( + IN PDRIVER_OBJECT DriverObject, + IN ULONG DeviceExtensionSize, + IN PUNICODE_STRING DeviceName OPTIONAL, + IN DEVICE_TYPE DeviceType, + IN ULONG DeviceCharacteristics, + IN BOOLEAN Exclusive, + OUT PDEVICE_OBJECT *DeviceObject); NTKERNELAPI -PSLIST_ENTRY -ExpInterlockedFlushSList( - PSLIST_HEADER ListHead); +NTSTATUS +NTAPI +IoCreateFile( + OUT PHANDLE FileHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN PLARGE_INTEGER AllocationSize OPTIONAL, + IN ULONG FileAttributes, + IN ULONG ShareAccess, + IN ULONG Disposition, + IN ULONG CreateOptions, + IN PVOID EaBuffer OPTIONAL, + IN ULONG EaLength, + IN CREATE_FILE_TYPE CreateFileType, + IN PVOID InternalParameters OPTIONAL, + IN ULONG Options); NTKERNELAPI -PSLIST_ENTRY -ExpInterlockedPopEntrySList( - PSLIST_HEADER ListHead); +PKEVENT +NTAPI +IoCreateNotificationEvent( + IN PUNICODE_STRING EventName, + OUT PHANDLE EventHandle); NTKERNELAPI -PSLIST_ENTRY -ExpInterlockedPushEntrySList( - PSLIST_HEADER ListHead, - PSLIST_ENTRY ListEntry); - -#define ExInterlockedFlushSList(Head) \ - ExpInterlockedFlushSList(Head) -#define ExInterlockedPopEntrySList(Head, Lock) \ - ExpInterlockedPopEntrySList(Head) -#define ExInterlockedPushEntrySList(Head, Entry, Lock) \ - ExpInterlockedPushEntrySList(Head, Entry) - -#else /* !defined(_WIN64) */ - -#define ExQueryDepthSList(listhead) (listhead)->Depth +NTSTATUS +NTAPI +IoCreateSymbolicLink( + IN PUNICODE_STRING SymbolicLinkName, + IN PUNICODE_STRING DeviceName); NTKERNELAPI -PSINGLE_LIST_ENTRY -FASTCALL -ExInterlockedFlushSList( - IN OUT PSLIST_HEADER ListHead); - -#endif /* !defined(_WIN64) */ - -#if defined(_WIN2K_COMPAT_SLIST_USAGE) && defined(_X86_) +PKEVENT +NTAPI +IoCreateSynchronizationEvent( + IN PUNICODE_STRING EventName, + OUT PHANDLE EventHandle); NTKERNELAPI -PSINGLE_LIST_ENTRY -FASTCALL -ExInterlockedPopEntrySList( - IN PSLIST_HEADER ListHead, - IN PKSPIN_LOCK Lock); +NTSTATUS +NTAPI +IoCreateUnprotectedSymbolicLink( + IN PUNICODE_STRING SymbolicLinkName, + IN PUNICODE_STRING DeviceName); NTKERNELAPI -PSINGLE_LIST_ENTRY -FASTCALL -ExInterlockedPushEntrySList( - IN PSLIST_HEADER ListHead, - IN PSINGLE_LIST_ENTRY ListEntry, - IN PKSPIN_LOCK Lock); +VOID +NTAPI +IoDeleteDevice( + IN PDEVICE_OBJECT DeviceObject); NTKERNELAPI -PVOID +NTSTATUS NTAPI -ExAllocateFromPagedLookasideList( - IN OUT PPAGED_LOOKASIDE_LIST Lookaside); +IoDeleteSymbolicLink( + IN PUNICODE_STRING SymbolicLinkName); NTKERNELAPI VOID NTAPI -ExFreeToPagedLookasideList( - IN OUT PPAGED_LOOKASIDE_LIST Lookaside, - IN PVOID Entry); - -#else /* !_WIN2K_COMPAT_SLIST_USAGE */ - -#if !defined(_WIN64) -#define ExInterlockedPopEntrySList(_ListHead, _Lock) \ - InterlockedPopEntrySList(_ListHead) -#define ExInterlockedPushEntrySList(_ListHead, _ListEntry, _Lock) \ - InterlockedPushEntrySList(_ListHead, _ListEntry) -#endif - -static __inline -PVOID -ExAllocateFromPagedLookasideList( - IN OUT PPAGED_LOOKASIDE_LIST Lookaside) -{ - PVOID Entry; - - Lookaside->L.TotalAllocates++; - Entry = InterlockedPopEntrySList(&Lookaside->L.ListHead); - if (Entry == NULL) { - Lookaside->L.AllocateMisses++; - Entry = (Lookaside->L.Allocate)(Lookaside->L.Type, - Lookaside->L.Size, - Lookaside->L.Tag); - } - return Entry; -} +IoDetachDevice( + IN OUT PDEVICE_OBJECT TargetDevice); -static __inline +NTKERNELAPI VOID -ExFreeToPagedLookasideList( - IN OUT PPAGED_LOOKASIDE_LIST Lookaside, - IN PVOID Entry) -{ - Lookaside->L.TotalFrees++; - if (ExQueryDepthSList(&Lookaside->L.ListHead) >= Lookaside->L.Depth) { - Lookaside->L.FreeMisses++; - (Lookaside->L.Free)(Entry); - } else { - InterlockedPushEntrySList(&Lookaside->L.ListHead, (PSLIST_ENTRY)Entry); - } -} - -#endif /* _WIN2K_COMPAT_SLIST_USAGE */ - - -/* ERESOURCE_THREAD - * ExGetCurrentResourceThread( - * VOID); - */ -#define ExGetCurrentResourceThread() ((ULONG_PTR)PsGetCurrentThread()) - -#define ExReleaseResource(R) (ExReleaseResourceLite(R)) - -/* VOID - * ExInitializeWorkItem( - * IN PWORK_QUEUE_ITEM Item, - * IN PWORKER_THREAD_ROUTINE Routine, - * IN PVOID Context) - */ -#define ExInitializeWorkItem(Item, Routine, Context) \ -{ \ - (Item)->WorkerRoutine = Routine; \ - (Item)->Parameter = Context; \ - (Item)->List.Flink = NULL; \ -} +NTAPI +IoDisconnectInterrupt( + IN PKINTERRUPT InterruptObject); -FORCEINLINE +NTKERNELAPI VOID -ExInitializeFastMutex( - OUT PFAST_MUTEX FastMutex) -{ - FastMutex->Count = FM_LOCK_BIT; - FastMutex->Owner = NULL; - FastMutex->Contention = 0; - KeInitializeEvent(&FastMutex->Event, SynchronizationEvent, FALSE); - return; -} - -#if (NTDDI_VERSION >= NTDDI_WIN2K) +NTAPI +IoFreeIrp( + IN PIRP Irp); NTKERNELAPI VOID -FASTCALL -ExAcquireFastMutexUnsafe( - IN OUT PFAST_MUTEX FastMutex); +NTAPI +IoFreeMdl( + IN PMDL Mdl); NTKERNELAPI VOID -FASTCALL -ExReleaseFastMutexUnsafe( - IN OUT PFAST_MUTEX FastMutex); +NTAPI +IoFreeWorkItem( + IN PIO_WORKITEM IoWorkItem); NTKERNELAPI -BOOLEAN +PDEVICE_OBJECT NTAPI -ExAcquireResourceExclusiveLite( - IN OUT PERESOURCE Resource, - IN BOOLEAN Wait); +IoGetAttachedDevice( + IN PDEVICE_OBJECT DeviceObject); NTKERNELAPI -BOOLEAN +PDEVICE_OBJECT NTAPI -ExAcquireResourceSharedLite( - IN OUT PERESOURCE Resource, - IN BOOLEAN Wait); +IoGetAttachedDeviceReference( + IN PDEVICE_OBJECT DeviceObject); NTKERNELAPI -BOOLEAN +NTSTATUS NTAPI -ExAcquireSharedStarveExclusive( - IN OUT PERESOURCE Resource, - IN BOOLEAN Wait); +IoGetBootDiskInformation( + IN OUT PBOOTDISK_INFORMATION BootDiskInformation, + IN ULONG Size); NTKERNELAPI -BOOLEAN +NTSTATUS NTAPI -ExAcquireSharedWaitForExclusive( - IN OUT PERESOURCE Resource, - IN BOOLEAN Wait); +IoGetDeviceInterfaceAlias( + IN PUNICODE_STRING SymbolicLinkName, + IN CONST GUID *AliasInterfaceClassGuid, + OUT PUNICODE_STRING AliasSymbolicLinkName); NTKERNELAPI -PVOID +PEPROCESS NTAPI -ExAllocatePool( - IN POOL_TYPE PoolType, - IN SIZE_T NumberOfBytes); +IoGetCurrentProcess( + VOID); NTKERNELAPI -PVOID +NTSTATUS NTAPI -ExAllocatePoolWithQuota( - IN POOL_TYPE PoolType, - IN SIZE_T NumberOfBytes); +IoGetDeviceInterfaces( + IN CONST GUID *InterfaceClassGuid, + IN PDEVICE_OBJECT PhysicalDeviceObject OPTIONAL, + IN ULONG Flags, + OUT PWSTR *SymbolicLinkList); NTKERNELAPI -PVOID +NTSTATUS NTAPI -ExAllocatePoolWithQuotaTag( - IN POOL_TYPE PoolType, - IN SIZE_T NumberOfBytes, - IN ULONG Tag); +IoGetDeviceObjectPointer( + IN PUNICODE_STRING ObjectName, + IN ACCESS_MASK DesiredAccess, + OUT PFILE_OBJECT *FileObject, + OUT PDEVICE_OBJECT *DeviceObject); -#ifndef POOL_TAGGING -#define ExAllocatePoolWithQuotaTag(a,b,c) ExAllocatePoolWithQuota(a,b) -#endif +NTKERNELAPI +NTSTATUS +NTAPI +IoGetDeviceProperty( + IN PDEVICE_OBJECT DeviceObject, + IN DEVICE_REGISTRY_PROPERTY DeviceProperty, + IN ULONG BufferLength, + OUT PVOID PropertyBuffer, + OUT PULONG ResultLength); NTKERNELAPI -PVOID +PDMA_ADAPTER NTAPI -ExAllocatePoolWithTag( - IN POOL_TYPE PoolType, - IN SIZE_T NumberOfBytes, - IN ULONG Tag); +IoGetDmaAdapter( + IN PDEVICE_OBJECT PhysicalDeviceObject OPTIONAL, + IN PDEVICE_DESCRIPTION DeviceDescription, + IN OUT PULONG NumberOfMapRegisters); -#ifndef POOL_TAGGING -#define ExAllocatePoolWithTag(a,b,c) ExAllocatePool(a,b) -#endif +NTKERNELAPI +PVOID +NTAPI +IoGetDriverObjectExtension( + IN PDRIVER_OBJECT DriverObject, + IN PVOID ClientIdentificationAddress); NTKERNELAPI PVOID NTAPI -ExAllocatePoolWithTagPriority( - IN POOL_TYPE PoolType, - IN SIZE_T NumberOfBytes, - IN ULONG Tag, - IN EX_POOL_PRIORITY Priority); +IoGetInitialStack( + VOID); NTKERNELAPI -VOID +PDEVICE_OBJECT NTAPI -ExConvertExclusiveToSharedLite( - IN OUT PERESOURCE Resource); +IoGetRelatedDeviceObject( + IN PFILE_OBJECT FileObject); NTKERNELAPI -NTSTATUS +VOID NTAPI -ExCreateCallback( - OUT PCALLBACK_OBJECT *CallbackObject, - IN POBJECT_ATTRIBUTES ObjectAttributes, - IN BOOLEAN Create, - IN BOOLEAN AllowMultipleCallbacks); +IoQueueWorkItem( + IN PIO_WORKITEM IoWorkItem, + IN PIO_WORKITEM_ROUTINE WorkerRoutine, + IN WORK_QUEUE_TYPE QueueType, + IN PVOID Context OPTIONAL); NTKERNELAPI VOID NTAPI -ExDeleteNPagedLookasideList( - IN OUT PNPAGED_LOOKASIDE_LIST Lookaside); +IoInitializeIrp( + IN OUT PIRP Irp, + IN USHORT PacketSize, + IN CCHAR StackSize); NTKERNELAPI VOID NTAPI -ExDeletePagedLookasideList( - IN PPAGED_LOOKASIDE_LIST Lookaside); +IoInitializeRemoveLockEx( + IN PIO_REMOVE_LOCK Lock, + IN ULONG AllocateTag, + IN ULONG MaxLockedMinutes, + IN ULONG HighWatermark, + IN ULONG RemlockSize); NTKERNELAPI NTSTATUS NTAPI -ExDeleteResourceLite( - IN OUT PERESOURCE Resource); +IoInitializeTimer( + IN PDEVICE_OBJECT DeviceObject, + IN PIO_TIMER_ROUTINE TimerRoutine, + IN PVOID Context OPTIONAL); NTKERNELAPI VOID NTAPI -ExFreePool( - IN PVOID P); +IoInvalidateDeviceRelations( + IN PDEVICE_OBJECT DeviceObject, + IN DEVICE_RELATION_TYPE Type); NTKERNELAPI VOID NTAPI -ExFreePoolWithTag( - IN PVOID P, - IN ULONG Tag); +IoInvalidateDeviceState( + IN PDEVICE_OBJECT PhysicalDeviceObject); NTKERNELAPI -ULONG +BOOLEAN NTAPI -ExGetExclusiveWaiterCount( - IN PERESOURCE Resource); +IoIsWdmVersionAvailable( + IN UCHAR MajorVersion, + IN UCHAR MinorVersion); NTKERNELAPI -KPROCESSOR_MODE +NTSTATUS NTAPI -ExGetPreviousMode(VOID); +IoOpenDeviceInterfaceRegistryKey( + IN PUNICODE_STRING SymbolicLinkName, + IN ACCESS_MASK DesiredAccess, + OUT PHANDLE DeviceInterfaceKey); NTKERNELAPI -ULONG +NTSTATUS NTAPI -ExGetSharedWaiterCount( - IN PERESOURCE Resource); +IoOpenDeviceRegistryKey( + IN PDEVICE_OBJECT DeviceObject, + IN ULONG DevInstKeyType, + IN ACCESS_MASK DesiredAccess, + OUT PHANDLE DevInstRegKey); NTKERNELAPI -VOID +NTSTATUS NTAPI -ExInitializeNPagedLookasideList( - IN PNPAGED_LOOKASIDE_LIST Lookaside, - IN PALLOCATE_FUNCTION Allocate OPTIONAL, - IN PFREE_FUNCTION Free OPTIONAL, - IN ULONG Flags, - IN SIZE_T Size, - IN ULONG Tag, - IN USHORT Depth); +IoRegisterDeviceInterface( + IN PDEVICE_OBJECT PhysicalDeviceObject, + IN CONST GUID *InterfaceClassGuid, + IN PUNICODE_STRING ReferenceString OPTIONAL, + OUT PUNICODE_STRING SymbolicLinkName); NTKERNELAPI -VOID +NTSTATUS NTAPI -ExInitializePagedLookasideList( - IN PPAGED_LOOKASIDE_LIST Lookaside, - IN PALLOCATE_FUNCTION Allocate OPTIONAL, - IN PFREE_FUNCTION Free OPTIONAL, - IN ULONG Flags, - IN SIZE_T Size, - IN ULONG Tag, - IN USHORT Depth); +IoRegisterPlugPlayNotification( + IN IO_NOTIFICATION_EVENT_CATEGORY EventCategory, + IN ULONG EventCategoryFlags, + IN PVOID EventCategoryData OPTIONAL, + IN PDRIVER_OBJECT DriverObject, + IN PDRIVER_NOTIFICATION_CALLBACK_ROUTINE CallbackRoutine, + IN OUT PVOID Context OPTIONAL, + OUT PVOID *NotificationEntry); NTKERNELAPI NTSTATUS NTAPI -ExInitializeResourceLite( - OUT PERESOURCE Resource); +IoRegisterShutdownNotification( + IN PDEVICE_OBJECT DeviceObject); NTKERNELAPI -LARGE_INTEGER +VOID NTAPI -ExInterlockedAddLargeInteger( - IN PLARGE_INTEGER Addend, - IN LARGE_INTEGER Increment, - IN PKSPIN_LOCK Lock); - -#if defined(_WIN64) -#define ExInterlockedAddLargeStatistic(Addend, Increment) \ - (VOID)InterlockedAdd64(&(Addend)->QuadPart, Increment) -#else -#define ExInterlockedAddLargeStatistic(Addend, Increment) \ - _InterlockedAddLargeStatistic((PLONGLONG)&(Addend)->QuadPart, Increment) -#endif - -NTKERNELAPI -ULONG -FASTCALL -ExInterlockedAddUlong( - IN PULONG Addend, - IN ULONG Increment, - IN OUT PKSPIN_LOCK Lock); - -#if defined(_AMD64_) || defined(_IA64_) - -#define ExInterlockedCompareExchange64(Destination, Exchange, Comperand, Lock) \ - InterlockedCompareExchange64(Destination, *(Exchange), *(Comperand)) - -#elif defined(_X86_) - -NTKERNELAPI -LONGLONG -FASTCALL -ExfInterlockedCompareExchange64( - IN OUT LONGLONG volatile *Destination, - IN PLONGLONG Exchange, - IN PLONGLONG Comperand); - -#define ExInterlockedCompareExchange64(Destination, Exchange, Comperand, Lock) \ - ExfInterlockedCompareExchange64(Destination, Exchange, Comperand) - -#else +IoReleaseCancelSpinLock( + IN KIRQL Irql); NTKERNELAPI -LONGLONG -FASTCALL -ExInterlockedCompareExchange64( - IN OUT LONGLONG volatile *Destination, - IN PLONGLONG Exchange, - IN PLONGLONG Comparand, - IN PKSPIN_LOCK Lock); - -#endif /* defined(_AMD64_) || defined(_IA64_) */ +VOID +NTAPI +IoReleaseRemoveLockAndWaitEx( + IN PIO_REMOVE_LOCK RemoveLock, + IN PVOID Tag OPTIONAL, + IN ULONG RemlockSize); NTKERNELAPI -PLIST_ENTRY -FASTCALL -ExInterlockedInsertHeadList( - IN OUT PLIST_ENTRY ListHead, - IN OUT PLIST_ENTRY ListEntry, - IN OUT PKSPIN_LOCK Lock); +VOID +NTAPI +IoReleaseRemoveLockEx( + IN PIO_REMOVE_LOCK RemoveLock, + IN PVOID Tag OPTIONAL, + IN ULONG RemlockSize); NTKERNELAPI -PLIST_ENTRY -FASTCALL -ExInterlockedInsertTailList( - IN OUT PLIST_ENTRY ListHead, - IN OUT PLIST_ENTRY ListEntry, - IN OUT PKSPIN_LOCK Lock); +VOID +NTAPI +IoRemoveShareAccess( + IN PFILE_OBJECT FileObject, + IN OUT PSHARE_ACCESS ShareAccess); NTKERNELAPI -PSINGLE_LIST_ENTRY -FASTCALL -ExInterlockedPopEntryList( - IN OUT PSINGLE_LIST_ENTRY ListHead, - IN OUT PKSPIN_LOCK Lock); +NTSTATUS +NTAPI +IoReportTargetDeviceChange( + IN PDEVICE_OBJECT PhysicalDeviceObject, + IN PVOID NotificationStructure); NTKERNELAPI -PSINGLE_LIST_ENTRY -FASTCALL -ExInterlockedPushEntryList( - IN OUT PSINGLE_LIST_ENTRY ListHead, - IN OUT PSINGLE_LIST_ENTRY ListEntry, - IN OUT PKSPIN_LOCK Lock); +NTSTATUS +NTAPI +IoReportTargetDeviceChangeAsynchronous( + IN PDEVICE_OBJECT PhysicalDeviceObject, + IN PVOID NotificationStructure, + IN PDEVICE_CHANGE_COMPLETE_CALLBACK Callback OPTIONAL, + IN PVOID Context OPTIONAL); NTKERNELAPI -PLIST_ENTRY -FASTCALL -ExInterlockedRemoveHeadList( - IN OUT PLIST_ENTRY ListHead, - IN OUT PKSPIN_LOCK Lock); +VOID +NTAPI +IoRequestDeviceEject( + IN PDEVICE_OBJECT PhysicalDeviceObject); NTKERNELAPI -BOOLEAN +VOID NTAPI -ExIsProcessorFeaturePresent( - IN ULONG ProcessorFeature); +IoReuseIrp( + IN OUT PIRP Irp, + IN NTSTATUS Status); NTKERNELAPI -BOOLEAN +NTSTATUS NTAPI -ExIsResourceAcquiredExclusiveLite( - IN PERESOURCE Resource); +IoSetDeviceInterfaceState( + IN PUNICODE_STRING SymbolicLinkName, + IN BOOLEAN Enable); NTKERNELAPI -ULONG +VOID NTAPI -ExIsResourceAcquiredSharedLite( - IN PERESOURCE Resource); - -#define ExIsResourceAcquiredLite ExIsResourceAcquiredSharedLite +IoSetShareAccess( + IN ACCESS_MASK DesiredAccess, + IN ULONG DesiredShareAccess, + IN OUT PFILE_OBJECT FileObject, + OUT PSHARE_ACCESS ShareAccess); NTKERNELAPI VOID NTAPI -ExLocalTimeToSystemTime( - IN PLARGE_INTEGER LocalTime, - OUT PLARGE_INTEGER SystemTime); +IoStartNextPacket( + IN PDEVICE_OBJECT DeviceObject, + IN BOOLEAN Cancelable); NTKERNELAPI VOID NTAPI -ExNotifyCallback( - IN PCALLBACK_OBJECT CallbackObject, - IN PVOID Argument1 OPTIONAL, - IN PVOID Argument2 OPTIONAL); +IoStartNextPacketByKey( + IN PDEVICE_OBJECT DeviceObject, + IN BOOLEAN Cancelable, + IN ULONG Key); NTKERNELAPI VOID NTAPI -ExQueueWorkItem( - IN OUT PWORK_QUEUE_ITEM WorkItem, - IN WORK_QUEUE_TYPE QueueType); +IoStartPacket( + IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp, + IN PULONG Key OPTIONAL, + IN PDRIVER_CANCEL CancelFunction OPTIONAL); NTKERNELAPI -DECLSPEC_NORETURN VOID NTAPI -ExRaiseStatus( - IN NTSTATUS Status); +IoStartTimer( + IN PDEVICE_OBJECT DeviceObject); NTKERNELAPI -PVOID +VOID NTAPI -ExRegisterCallback( - IN PCALLBACK_OBJECT CallbackObject, - IN PCALLBACK_FUNCTION CallbackFunction, - IN PVOID CallbackContext OPTIONAL); +IoStopTimer( + IN PDEVICE_OBJECT DeviceObject); NTKERNELAPI NTSTATUS NTAPI -ExReinitializeResourceLite( - IN OUT PERESOURCE Resource); +IoUnregisterPlugPlayNotification( + IN PVOID NotificationEntry); NTKERNELAPI VOID NTAPI -ExReleaseResourceForThreadLite( - IN OUT PERESOURCE Resource, - IN ERESOURCE_THREAD ResourceThreadId); +IoUnregisterShutdownNotification( + IN PDEVICE_OBJECT DeviceObject); NTKERNELAPI VOID -FASTCALL -ExReleaseResourceLite( - IN OUT PERESOURCE Resource); +NTAPI +IoUpdateShareAccess( + IN PFILE_OBJECT FileObject, + IN OUT PSHARE_ACCESS ShareAccess); NTKERNELAPI -VOID +NTSTATUS NTAPI -ExSetResourceOwnerPointer( - IN OUT PERESOURCE Resource, - IN PVOID OwnerPointer); +IoWMIAllocateInstanceIds( + IN GUID *Guid, + IN ULONG InstanceCount, + OUT ULONG *FirstInstanceId); NTKERNELAPI -ULONG +NTSTATUS NTAPI -ExSetTimerResolution( - IN ULONG DesiredTime, - IN BOOLEAN SetResolution); +IoWMIQuerySingleInstanceMultiple( + IN PVOID *DataBlockObjectList, + IN PUNICODE_STRING InstanceNames, + IN ULONG ObjectCount, + IN OUT ULONG *InOutBufferSize, + OUT PVOID OutBuffer); NTKERNELAPI -VOID +NTSTATUS NTAPI -ExSystemTimeToLocalTime( - IN PLARGE_INTEGER SystemTime, - OUT PLARGE_INTEGER LocalTime); +IoWMIRegistrationControl( + IN PDEVICE_OBJECT DeviceObject, + IN ULONG Action); + +NTKERNELAPI +NTSTATUS +NTAPI +IoWMISuggestInstanceName( + IN PDEVICE_OBJECT PhysicalDeviceObject OPTIONAL, + IN PUNICODE_STRING SymbolicLinkName OPTIONAL, + IN BOOLEAN CombineNames, + OUT PUNICODE_STRING SuggestedInstanceName); + +NTKERNELAPI +NTSTATUS +NTAPI +IoWMIWriteEvent( + IN PVOID WnodeEventItem); NTKERNELAPI VOID NTAPI -ExUnregisterCallback( - IN OUT PVOID CbRegistration); +IoWriteErrorLogEntry( + IN PVOID ElEntry); -#endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */ +#endif #if (NTDDI_VERSION >= NTDDI_WINXP) NTKERNELAPI -BOOLEAN -FASTCALL -ExAcquireRundownProtection( - IN OUT PEX_RUNDOWN_REF RunRef); - -NTKERNELAPI -VOID -FASTCALL -ExInitializeRundownProtection( - OUT PEX_RUNDOWN_REF RunRef); +NTSTATUS +NTAPI +IoCsqInitialize( + IN PIO_CSQ Csq, + IN PIO_CSQ_INSERT_IRP CsqInsertIrp, + IN PIO_CSQ_REMOVE_IRP CsqRemoveIrp, + IN PIO_CSQ_PEEK_NEXT_IRP CsqPeekNextIrp, + IN PIO_CSQ_ACQUIRE_LOCK CsqAcquireLock, + IN PIO_CSQ_RELEASE_LOCK CsqReleaseLock, + IN PIO_CSQ_COMPLETE_CANCELED_IRP CsqCompleteCanceledIrp); NTKERNELAPI VOID -FASTCALL -ExReInitializeRundownProtection( - IN OUT PEX_RUNDOWN_REF RunRef); +NTAPI +IoCsqInsertIrp( + IN PIO_CSQ Csq, + IN PIRP Irp, + IN PIO_CSQ_IRP_CONTEXT Context OPTIONAL); NTKERNELAPI -VOID -FASTCALL -ExReleaseRundownProtection( - IN OUT PEX_RUNDOWN_REF RunRef); +PIRP +NTAPI +IoCsqRemoveIrp( + IN PIO_CSQ Csq, + IN PIO_CSQ_IRP_CONTEXT Context); NTKERNELAPI -VOID -FASTCALL -ExRundownCompleted( - OUT PEX_RUNDOWN_REF RunRef); +PIRP +NTAPI +IoCsqRemoveNextIrp( + IN PIO_CSQ Csq, + IN PVOID PeekContext); NTKERNELAPI BOOLEAN NTAPI -ExVerifySuite( - IN SUITE_TYPE SuiteType); +IoForwardIrpSynchronously( + IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp); + +#define IoForwardAndCatchIrp IoForwardIrpSynchronously NTKERNELAPI VOID -FASTCALL -ExWaitForRundownProtectionRelease( - IN OUT PEX_RUNDOWN_REF RunRef); - -#endif /* (NTDDI_VERSION >= NTDDI_WINXP) */ - -#if (NTDDI_VERSION >= NTDDI_WINXPSP2) +NTAPI +IoFreeErrorLogEntry( + PVOID ElEntry); NTKERNELAPI -BOOLEAN -FASTCALL -ExAcquireRundownProtectionEx( - IN OUT PEX_RUNDOWN_REF RunRef, - IN ULONG Count); +NTSTATUS +NTAPI +IoSetCompletionRoutineEx( + IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp, + IN PIO_COMPLETION_ROUTINE CompletionRoutine, + IN PVOID Context, + IN BOOLEAN InvokeOnSuccess, + IN BOOLEAN InvokeOnError, + IN BOOLEAN InvokeOnCancel); -NTKERNELAPI VOID -FASTCALL -ExReleaseRundownProtectionEx( - IN OUT PEX_RUNDOWN_REF RunRef, - IN ULONG Count); - -#endif /* (NTDDI_VERSION >= NTDDI_WINXPSP2) */ - -#if (NTDDI_VERSION >= NTDDI_WS03SP1) +NTAPI +IoSetStartIoAttributes( + IN PDEVICE_OBJECT DeviceObject, + IN BOOLEAN DeferredStartIo, + IN BOOLEAN NonCancelable); NTKERNELAPI -PEX_RUNDOWN_REF_CACHE_AWARE +NTSTATUS NTAPI -ExAllocateCacheAwareRundownProtection( - IN POOL_TYPE PoolType, - IN ULONG PoolTag); +IoWMIDeviceObjectToInstanceName( + IN PVOID DataBlockObject, + IN PDEVICE_OBJECT DeviceObject, + OUT PUNICODE_STRING InstanceName); NTKERNELAPI -SIZE_T +NTSTATUS NTAPI -ExSizeOfRundownProtectionCacheAware(VOID); +IoWMIExecuteMethod( + IN PVOID DataBlockObject, + IN PUNICODE_STRING InstanceName, + IN ULONG MethodId, + IN ULONG InBufferSize, + IN OUT PULONG OutBufferSize, + IN OUT PUCHAR InOutBuffer); NTKERNELAPI -PVOID +NTSTATUS NTAPI -ExEnterCriticalRegionAndAcquireResourceShared( - IN OUT PERESOURCE Resource); +IoWMIHandleToInstanceName( + IN PVOID DataBlockObject, + IN HANDLE FileHandle, + OUT PUNICODE_STRING InstanceName); NTKERNELAPI -PVOID +NTSTATUS NTAPI -ExEnterCriticalRegionAndAcquireResourceExclusive( - IN OUT PERESOURCE Resource); +IoWMIOpenBlock( + IN GUID *DataBlockGuid, + IN ULONG DesiredAccess, + OUT PVOID *DataBlockObject); NTKERNELAPI -PVOID +NTSTATUS NTAPI -ExEnterCriticalRegionAndAcquireSharedWaitForExclusive( - IN OUT PERESOURCE Resource); +IoWMIQueryAllData( + IN PVOID DataBlockObject, + IN OUT ULONG *InOutBufferSize, + OUT PVOID OutBuffer); NTKERNELAPI -VOID -FASTCALL -ExReleaseResourceAndLeaveCriticalRegion( - IN OUT PERESOURCE Resource); +NTSTATUS +NTAPI +IoWMIQueryAllDataMultiple( + IN PVOID *DataBlockObjectList, + IN ULONG ObjectCount, + IN OUT ULONG *InOutBufferSize, + OUT PVOID OutBuffer); NTKERNELAPI -VOID +NTSTATUS NTAPI -ExInitializeRundownProtectionCacheAware( - OUT PEX_RUNDOWN_REF_CACHE_AWARE RunRefCacheAware, - IN SIZE_T RunRefSize); +IoWMIQuerySingleInstance( + IN PVOID DataBlockObject, + IN PUNICODE_STRING InstanceName, + IN OUT ULONG *InOutBufferSize, + OUT PVOID OutBuffer); NTKERNELAPI -VOID +NTSTATUS NTAPI -ExFreeCacheAwareRundownProtection( - IN OUT PEX_RUNDOWN_REF_CACHE_AWARE RunRefCacheAware); +IoWMISetNotificationCallback( + IN OUT PVOID Object, + IN WMI_NOTIFICATION_CALLBACK Callback, + IN PVOID Context OPTIONAL); NTKERNELAPI -BOOLEAN -FASTCALL -ExAcquireRundownProtectionCacheAware( - IN OUT PEX_RUNDOWN_REF_CACHE_AWARE RunRefCacheAware); +NTSTATUS +NTAPI +IoWMISetSingleInstance( + IN PVOID DataBlockObject, + IN PUNICODE_STRING InstanceName, + IN ULONG Version, + IN ULONG ValueBufferSize, + IN PVOID ValueBuffer); NTKERNELAPI -VOID -FASTCALL -ExReleaseRundownProtectionCacheAware( - IN OUT PEX_RUNDOWN_REF_CACHE_AWARE RunRefCacheAware); +NTSTATUS +NTAPI +IoWMISetSingleItem( + IN PVOID DataBlockObject, + IN PUNICODE_STRING InstanceName, + IN ULONG DataItemId, + IN ULONG Version, + IN ULONG ValueBufferSize, + IN PVOID ValueBuffer); -NTKERNELAPI -BOOLEAN -FASTCALL -ExAcquireRundownProtectionCacheAwareEx( - IN OUT PEX_RUNDOWN_REF_CACHE_AWARE RunRefCacheAware, - IN ULONG Count); +#endif +#if defined(_WIN64) NTKERNELAPI -VOID -FASTCALL -ExReleaseRundownProtectionCacheAwareEx( - IN OUT PEX_RUNDOWN_REF_CACHE_AWARE RunRef, - IN ULONG Count); +ULONG +NTAPI +IoWMIDeviceObjectToProviderId( + IN PDEVICE_OBJECT DeviceObject); +#else +#define IoWMIDeviceObjectToProviderId(DeviceObject) ((ULONG)(DeviceObject)) +#endif -NTKERNELAPI +/* + * USHORT + * IoSizeOfIrp( + * IN CCHAR StackSize) + */ +#define IoSizeOfIrp(_StackSize) \ + ((USHORT) (sizeof(IRP) + ((_StackSize) * (sizeof(IO_STACK_LOCATION))))) + +FORCEINLINE VOID -FASTCALL -ExWaitForRundownProtectionReleaseCacheAware( - IN OUT PEX_RUNDOWN_REF_CACHE_AWARE RunRef); +IoSkipCurrentIrpStackLocation ( + IN OUT PIRP Irp) +{ + ASSERT(Irp->CurrentLocation <= Irp->StackCount); + Irp->CurrentLocation++; + Irp->Tail.Overlay.CurrentStackLocation++; +} -NTKERNELAPI +FORCEINLINE VOID -FASTCALL -ExReInitializeRundownProtectionCacheAware( - IN OUT PEX_RUNDOWN_REF_CACHE_AWARE RunRefCacheAware); +IoSetNextIrpStackLocation ( + IN OUT PIRP Irp) +{ + ASSERT(Irp->CurrentLocation > 0); + Irp->CurrentLocation--; + Irp->Tail.Overlay.CurrentStackLocation--; +} -NTKERNELAPI +FORCEINLINE +PIO_STACK_LOCATION +IoGetNextIrpStackLocation( + IN PIRP Irp) +{ + ASSERT(Irp->CurrentLocation > 0); + return ((Irp)->Tail.Overlay.CurrentStackLocation - 1 ); +} + +FORCEINLINE VOID -FASTCALL -ExRundownCompletedCacheAware( - IN OUT PEX_RUNDOWN_REF_CACHE_AWARE RunRefCacheAware); +IoSetCompletionRoutine( + IN PIRP Irp, + IN PIO_COMPLETION_ROUTINE CompletionRoutine OPTIONAL, + IN PVOID Context OPTIONAL, + IN BOOLEAN InvokeOnSuccess, + IN BOOLEAN InvokeOnError, + IN BOOLEAN InvokeOnCancel) +{ + PIO_STACK_LOCATION irpSp; + ASSERT( (InvokeOnSuccess || InvokeOnError || InvokeOnCancel) ? (CompletionRoutine != NULL) : TRUE ); + irpSp = IoGetNextIrpStackLocation(Irp); + irpSp->CompletionRoutine = CompletionRoutine; + irpSp->Context = Context; + irpSp->Control = 0; -#endif /* (NTDDI_VERSION >= NTDDI_WS03SP1) */ + if (InvokeOnSuccess) { + irpSp->Control = SL_INVOKE_ON_SUCCESS; + } -#if (NTDDI_VERSION >= NTDDI_VISTA) + if (InvokeOnError) { + irpSp->Control |= SL_INVOKE_ON_ERROR; + } -NTKERNELAPI -NTSTATUS -NTAPI -ExInitializeLookasideListEx( - OUT PLOOKASIDE_LIST_EX Lookaside, - IN PALLOCATE_FUNCTION_EX Allocate OPTIONAL, - IN PFREE_FUNCTION_EX Free OPTIONAL, - IN POOL_TYPE PoolType, - IN ULONG Flags, - IN SIZE_T Size, - IN ULONG Tag, - IN USHORT Depth); + if (InvokeOnCancel) { + irpSp->Control |= SL_INVOKE_ON_CANCEL; + } +} + +/* + * PDRIVER_CANCEL + * IoSetCancelRoutine( + * IN PIRP Irp, + * IN PDRIVER_CANCEL CancelRoutine) + */ +#define IoSetCancelRoutine(_Irp, \ + _CancelRoutine) \ + ((PDRIVER_CANCEL) (ULONG_PTR) InterlockedExchangePointer( \ + (PVOID *) &(_Irp)->CancelRoutine, (PVOID) (ULONG_PTR) (_CancelRoutine))) + +/* + * VOID + * IoRequestDpc( + * IN PDEVICE_OBJECT DeviceObject, + * IN PIRP Irp, + * IN PVOID Context); + */ +#define IoRequestDpc(DeviceObject, Irp, Context)( \ + KeInsertQueueDpc(&(DeviceObject)->Dpc, (Irp), (Context))) + +/* + * VOID + * IoReleaseRemoveLock( + * IN PIO_REMOVE_LOCK RemoveLock, + * IN PVOID Tag) + */ +#define IoReleaseRemoveLock(_RemoveLock, \ + _Tag) \ + IoReleaseRemoveLockEx(_RemoveLock, _Tag, sizeof(IO_REMOVE_LOCK)) + +/* + * VOID + * IoReleaseRemoveLockAndWait( + * IN PIO_REMOVE_LOCK RemoveLock, + * IN PVOID Tag) + */ +#define IoReleaseRemoveLockAndWait(_RemoveLock, \ + _Tag) \ + IoReleaseRemoveLockAndWaitEx(_RemoveLock, _Tag, sizeof(IO_REMOVE_LOCK)) + +#if defined(_WIN64) NTKERNELAPI +BOOLEAN +IoIs32bitProcess( + IN PIRP Irp OPTIONAL); + +#endif + +#define PLUGPLAY_REGKEY_DEVICE 1 +#define PLUGPLAY_REGKEY_DRIVER 2 +#define PLUGPLAY_REGKEY_CURRENT_HWPROFILE 4 + +FORCEINLINE +PIO_STACK_LOCATION +IoGetCurrentIrpStackLocation( + IN PIRP Irp) +{ + ASSERT(Irp->CurrentLocation <= Irp->StackCount + 1); + return Irp->Tail.Overlay.CurrentStackLocation; +} + +FORCEINLINE VOID -NTAPI -ExDeleteLookasideListEx( - IN OUT PLOOKASIDE_LIST_EX Lookaside); +IoMarkIrpPending( + IN OUT PIRP Irp) +{ + IoGetCurrentIrpStackLocation( (Irp) )->Control |= SL_PENDING_RETURNED; +} + +/* + * BOOLEAN + * IoIsErrorUserInduced( + * IN NTSTATUS Status); + */ +#define IoIsErrorUserInduced(Status) \ + ((BOOLEAN)(((Status) == STATUS_DEVICE_NOT_READY) || \ + ((Status) == STATUS_IO_TIMEOUT) || \ + ((Status) == STATUS_MEDIA_WRITE_PROTECTED) || \ + ((Status) == STATUS_NO_MEDIA_IN_DEVICE) || \ + ((Status) == STATUS_VERIFY_REQUIRED) || \ + ((Status) == STATUS_UNRECOGNIZED_MEDIA) || \ + ((Status) == STATUS_WRONG_VOLUME))) -NTKERNELAPI -VOID -NTAPI -ExFlushLookasideListEx( - IN OUT PLOOKASIDE_LIST_EX Lookaside); +/* VOID + * IoInitializeRemoveLock( + * IN PIO_REMOVE_LOCK Lock, + * IN ULONG AllocateTag, + * IN ULONG MaxLockedMinutes, + * IN ULONG HighWatermark) + */ +#define IoInitializeRemoveLock( \ + Lock, AllocateTag, MaxLockedMinutes, HighWatermark) \ + IoInitializeRemoveLockEx(Lock, AllocateTag, MaxLockedMinutes, \ + HighWatermark, sizeof(IO_REMOVE_LOCK)) +VOID FORCEINLINE -PVOID -ExAllocateFromLookasideListEx( - IN OUT PLOOKASIDE_LIST_EX Lookaside) +IoInitializeDpcRequest( + IN PDEVICE_OBJECT DeviceObject, + IN PIO_DPC_ROUTINE DpcRoutine) { - PVOID Entry; - - Lookaside->L.TotalAllocates += 1; - Entry = InterlockedPopEntrySList(&Lookaside->L.ListHead); - if (Entry == NULL) { - Lookaside->L.AllocateMisses += 1; - Entry = (Lookaside->L.AllocateEx)(Lookaside->L.Type, - Lookaside->L.Size, - Lookaside->L.Tag, - Lookaside); - } - return Entry; + KeInitializeDpc( &DeviceObject->Dpc, + (PKDEFERRED_ROUTINE) DpcRoutine, + DeviceObject ); } +#define DEVICE_INTERFACE_INCLUDE_NONACTIVE 0x00000001 + +/* + * ULONG + * IoGetFunctionCodeFromCtlCode( + * IN ULONG ControlCode) + */ +#define IoGetFunctionCodeFromCtlCode(_ControlCode) \ + (((_ControlCode) >> 2) & 0x00000FFF) + FORCEINLINE VOID -ExFreeToLookasideListEx( - IN OUT PLOOKASIDE_LIST_EX Lookaside, - IN PVOID Entry) +IoCopyCurrentIrpStackLocationToNext( + IN PIRP Irp) { - Lookaside->L.TotalFrees += 1; - if (ExQueryDepthSList(&Lookaside->L.ListHead) >= Lookaside->L.Depth) { - Lookaside->L.FreeMisses += 1; - (Lookaside->L.FreeEx)(Entry, Lookaside); - } else { - InterlockedPushEntrySList(&Lookaside->L.ListHead, (PSLIST_ENTRY)Entry); - } - return; + PIO_STACK_LOCATION irpSp; + PIO_STACK_LOCATION nextIrpSp; + irpSp = IoGetCurrentIrpStackLocation(Irp); + nextIrpSp = IoGetNextIrpStackLocation(Irp); + RtlCopyMemory( nextIrpSp, irpSp, FIELD_OFFSET(IO_STACK_LOCATION, CompletionRoutine)); + nextIrpSp->Control = 0; } -#endif /* (NTDDI_VERSION >= NTDDI_VISTA) */ - -#if (NTDDI_VERSION >= NTDDI_WIN7) - NTKERNELAPI VOID NTAPI -ExSetResourceOwnerPointerEx( - IN OUT PERESOURCE Resource, - IN PVOID OwnerPointer, - IN ULONG Flags); - -#define FLAG_OWNER_POINTER_IS_THREAD 0x1 - -#endif /* (NTDDI_VERSION >= NTDDI_WIN7) */ +IoGetStackLimits( + OUT PULONG_PTR LowLimit, + OUT PULONG_PTR HighLimit); -static __inline PVOID -ExAllocateFromNPagedLookasideList( - IN OUT PNPAGED_LOOKASIDE_LIST Lookaside) +FORCEINLINE +ULONG_PTR +IoGetRemainingStackSize( + VOID) { - PVOID Entry; - - Lookaside->L.TotalAllocates++; -#if defined(_WIN2K_COMPAT_SLIST_USAGE) && defined(_X86_) - Entry = ExInterlockedPopEntrySList(&Lookaside->L.ListHead, - &Lookaside->Lock__ObsoleteButDoNotDelete); -#else - Entry = InterlockedPopEntrySList(&Lookaside->L.ListHead); -#endif - if (Entry == NULL) { - Lookaside->L.AllocateMisses++; - Entry = (Lookaside->L.Allocate)(Lookaside->L.Type, - Lookaside->L.Size, - Lookaside->L.Tag); - } - return Entry; -} + ULONG_PTR End, Begin; + ULONG_PTR Result; -static __inline VOID -ExFreeToNPagedLookasideList( - IN OUT PNPAGED_LOOKASIDE_LIST Lookaside, - IN PVOID Entry) -{ - Lookaside->L.TotalFrees++; - if (ExQueryDepthSList(&Lookaside->L.ListHead) >= Lookaside->L.Depth) { - Lookaside->L.FreeMisses++; - (Lookaside->L.Free)(Entry); - } else { -#if defined(_WIN2K_COMPAT_SLIST_USAGE) && defined(_X86_) - ExInterlockedPushEntrySList(&Lookaside->L.ListHead, - (PSLIST_ENTRY)Entry, - &Lookaside->Lock__ObsoleteButDoNotDelete); -#else - InterlockedPushEntrySList(&Lookaside->L.ListHead, (PSLIST_ENTRY)Entry); -#endif - } + IoGetStackLimits(&Begin, &End); + Result = (ULONG_PTR)(&End) - Begin; + return Result; } - /****************************************************************************** - * Object Manager Functions * + * Power Management Support Functions * ******************************************************************************/ -#if (NTDDI_VERSION >= NTDDI_WIN2K) +#define PoSetDeviceBusy(IdlePointer) ((void)(*(IdlePointer) = 0)) -NTKERNELAPI -LONG_PTR -FASTCALL -ObfDereferenceObject( - IN PVOID Object); -#define ObDereferenceObject ObfDereferenceObject +#if (NTDDI_VERSION >= NTDDI_WIN2K) NTKERNELAPI NTSTATUS NTAPI -ObGetObjectSecurity( - IN PVOID Object, - OUT PSECURITY_DESCRIPTOR *SecurityDescriptor, - OUT PBOOLEAN MemoryAllocated); +PoCallDriver( + IN struct _DEVICE_OBJECT *DeviceObject, + IN OUT struct _IRP *Irp); NTKERNELAPI -LONG_PTR -FASTCALL -ObfReferenceObject( - IN PVOID Object); -#define ObReferenceObject ObfReferenceObject +PULONG +NTAPI +PoRegisterDeviceForIdleDetection( + IN struct _DEVICE_OBJECT *DeviceObject, + IN ULONG ConservationIdleTime, + IN ULONG PerformanceIdleTime, + IN DEVICE_POWER_STATE State); NTKERNELAPI -NTSTATUS +PVOID NTAPI -ObReferenceObjectByHandle( - IN HANDLE Handle, - IN ACCESS_MASK DesiredAccess, - IN POBJECT_TYPE ObjectType OPTIONAL, - IN KPROCESSOR_MODE AccessMode, - OUT PVOID *Object, - OUT POBJECT_HANDLE_INFORMATION HandleInformation OPTIONAL); +PoRegisterSystemState( + IN OUT PVOID StateHandle OPTIONAL, + IN EXECUTION_STATE Flags); NTKERNELAPI NTSTATUS NTAPI -ObReferenceObjectByPointer( - IN PVOID Object, - IN ACCESS_MASK DesiredAccess, - IN POBJECT_TYPE ObjectType OPTIONAL, - IN KPROCESSOR_MODE AccessMode); +PoRequestPowerIrp( + IN struct _DEVICE_OBJECT *DeviceObject, + IN UCHAR MinorFunction, + IN POWER_STATE PowerState, + IN PREQUEST_POWER_COMPLETE CompletionFunction OPTIONAL, + IN PVOID Context OPTIONAL, + OUT struct _IRP **Irp OPTIONAL); NTKERNELAPI -VOID +POWER_STATE NTAPI -ObReleaseObjectSecurity( - IN PSECURITY_DESCRIPTOR SecurityDescriptor, - IN BOOLEAN MemoryAllocated); - -#endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */ +PoSetPowerState( + IN struct _DEVICE_OBJECT *DeviceObject, + IN POWER_STATE_TYPE Type, + IN POWER_STATE State); -#if (NTDDI_VERSION >= NTDDI_VISTA) NTKERNELAPI VOID NTAPI -ObDereferenceObjectDeferDelete( - IN PVOID Object); -#endif - -#if (NTDDI_VERSION >= NTDDI_VISTASP1) -NTKERNELAPI -NTSTATUS -NTAPI -ObRegisterCallbacks( - IN POB_CALLBACK_REGISTRATION CallbackRegistration, - OUT PVOID *RegistrationHandle); +PoSetSystemState( + IN EXECUTION_STATE Flags); NTKERNELAPI VOID NTAPI -ObUnRegisterCallbacks( - IN PVOID RegistrationHandle); - -NTKERNELAPI -USHORT -NTAPI -ObGetFilterVersion(VOID); - -#endif /* (NTDDI_VERSION >= NTDDI_VISTASP1) */ - -#if (NTDDI_VERSION >= NTDDI_WIN7) - -NTKERNELAPI -NTSTATUS -NTAPI -ObReferenceObjectByHandleWithTag( - IN HANDLE Handle, - IN ACCESS_MASK DesiredAccess, - IN POBJECT_TYPE ObjectType OPTIONAL, - IN KPROCESSOR_MODE AccessMode, - IN ULONG Tag, - OUT PVOID *Object, - OUT POBJECT_HANDLE_INFORMATION HandleInformation OPTIONAL); - -NTKERNELAPI -LONG_PTR -FASTCALL -ObfReferenceObjectWithTag( - IN PVOID Object, - IN ULONG Tag); - -NTKERNELAPI -NTSTATUS -NTAPI -ObReferenceObjectByPointerWithTag( - IN PVOID Object, - IN ACCESS_MASK DesiredAccess, - IN POBJECT_TYPE ObjectType OPTIONAL, - IN KPROCESSOR_MODE AccessMode, - IN ULONG Tag); - -NTKERNELAPI -LONG_PTR -FASTCALL -ObfDereferenceObjectWithTag( - IN PVOID Object, - IN ULONG Tag); +PoStartNextPowerIrp( + IN OUT struct _IRP *Irp); NTKERNELAPI VOID NTAPI -ObDereferenceObjectDeferDeleteWithTag( - IN PVOID Object, - IN ULONG Tag); - -#define ObDereferenceObject ObfDereferenceObject -#define ObReferenceObject ObfReferenceObject -#define ObDereferenceObjectWithTag ObfDereferenceObjectWithTag -#define ObReferenceObjectWithTag ObfReferenceObjectWithTag - -#endif /* (NTDDI_VERSION >= NTDDI_WIN7) */ - - -/****************************************************************************** - * Process Manager Functions * - ******************************************************************************/ +PoUnregisterSystemState( + IN OUT PVOID StateHandle); NTKERNELAPI NTSTATUS NTAPI -PsWrapApcWow64Thread( - IN OUT PVOID *ApcContext, - IN OUT PVOID *ApcRoutine); - -/* - * PEPROCESS - * PsGetCurrentProcess(VOID) - */ -#define PsGetCurrentProcess IoGetCurrentProcess - -#if !defined(_PSGETCURRENTTHREAD_) -#define _PSGETCURRENTTHREAD_ -FORCEINLINE -PETHREAD -NTAPI -PsGetCurrentThread(VOID) -{ - return (PETHREAD)KeGetCurrentThread(); -} -#endif /* !_PSGETCURRENTTHREAD_ */ +PoRequestShutdownEvent( + OUT PVOID *Event); +#endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */ -#if (NTDDI_VERSION >= NTDDI_WIN2K) +#if (NTDDI_VERSION >= NTDDI_VISTA) NTKERNELAPI -NTSTATUS +VOID NTAPI -PsCreateSystemThread( - OUT PHANDLE ThreadHandle, - IN ULONG DesiredAccess, - IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, - IN HANDLE ProcessHandle OPTIONAL, - OUT PCLIENT_ID ClientId OPTIONAL, - IN PKSTART_ROUTINE StartRoutine, - IN PVOID StartContext OPTIONAL); +PoSetSystemWake( + IN OUT struct _IRP *Irp); NTKERNELAPI -NTSTATUS +BOOLEAN NTAPI -PsTerminateSystemThread( - IN NTSTATUS ExitStatus); - - -#endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */ - -/****************************************************************************** - * WMI Library Support Functions * - ******************************************************************************/ - -#ifdef RUN_WPP -#if (NTDDI_VERSION >= NTDDI_WINXP) -NTKERNELAPI -NTSTATUS -__cdecl -WmiTraceMessage( - IN TRACEHANDLE LoggerHandle, - IN ULONG MessageFlags, - IN LPGUID MessageGuid, - IN USHORT MessageNumber, - IN ...); -#endif -#endif /* RUN_WPP */ - - #if (NTDDI_VERSION >= NTDDI_WINXP) +PoGetSystemWake( + IN struct _IRP *Irp); NTKERNELAPI NTSTATUS NTAPI -WmiQueryTraceInformation( - IN TRACE_INFORMATION_CLASS TraceInformationClass, - OUT PVOID TraceInformation, - IN ULONG TraceInformationLength, - OUT PULONG RequiredLength OPTIONAL, - IN PVOID Buffer OPTIONAL); - -#if 0 -/* FIXME: Get va_list from where? */ -NTKERNELAPI -NTSTATUS -__cdecl -WmiTraceMessageVa( - IN TRACEHANDLE LoggerHandle, - IN ULONG MessageFlags, - IN LPGUID MessageGuid, - IN USHORT MessageNumber, - IN va_list MessageArgList); -#endif - -#endif /* (NTDDI_VERSION >= NTDDI_WINXP) */ - -#ifndef TRACE_INFORMATION_CLASS_DEFINE +PoRegisterPowerSettingCallback( + IN PDEVICE_OBJECT DeviceObject OPTIONAL, + IN LPCGUID SettingGuid, + IN PPOWER_SETTING_CALLBACK Callback, + IN PVOID Context OPTIONAL, + OUT PVOID *Handle OPTIONAL); -#if (NTDDI_VERSION >= NTDDI_WINXP) NTKERNELAPI NTSTATUS NTAPI -WmiQueryTraceInformation( - IN TRACE_INFORMATION_CLASS TraceInformationClass, - OUT PVOID TraceInformation, - IN ULONG TraceInformationLength, - OUT PULONG RequiredLength OPTIONAL, - IN PVOID Buffer OPTIONAL); -#endif - -#define TRACE_INFORMATION_CLASS_DEFINE +PoUnregisterPowerSettingCallback( + IN OUT PVOID Handle); -#endif /* TRACE_INFOPRMATION_CLASS_DEFINE */ +#endif /* (NTDDI_VERSION >= NTDDI_VISTA) */ -#if (NTDDI_VERSION >= NTDDI_VISTA) +#if (NTDDI_VERSION >= NTDDI_VISTASP1) -NTSTATUS NTKERNELAPI +VOID NTAPI -EtwRegister( - IN LPCGUID ProviderId, - IN PETWENABLECALLBACK EnableCallback OPTIONAL, - IN PVOID CallbackContext OPTIONAL, - OUT PREGHANDLE RegHandle); +PoSetDeviceBusyEx( + IN OUT PULONG IdlePointer); -NTSTATUS -NTKERNELAPI -NTAPI -EtwUnregister( - IN REGHANDLE RegHandle); +#endif /* (NTDDI_VERSION >= NTDDI_VISTASP1) */ -BOOLEAN +#if (NTDDI_VERSION >= NTDDI_WIN7) NTKERNELAPI +VOID NTAPI -EtwEventEnabled( - IN REGHANDLE RegHandle, - IN PCEVENT_DESCRIPTOR EventDescriptor); +PoStartDeviceBusy( + IN OUT PULONG IdlePointer); -BOOLEAN NTKERNELAPI +VOID NTAPI -EtwProviderEnabled( - IN REGHANDLE RegHandle, - IN UCHAR Level, - IN ULONGLONG Keyword); +PoEndDeviceBusy( + IN OUT PULONG IdlePointer); -NTSTATUS NTKERNELAPI +BOOLEAN NTAPI -EtwActivityIdControl( - IN ULONG ControlCode, - IN OUT LPGUID ActivityId); +PoQueryWatchdogTime( + IN PDEVICE_OBJECT Pdo, + OUT PULONG SecondsRemaining); -NTSTATUS NTKERNELAPI +VOID NTAPI -EtwWrite( - IN REGHANDLE RegHandle, - IN PCEVENT_DESCRIPTOR EventDescriptor, - IN LPCGUID ActivityId OPTIONAL, - IN ULONG UserDataCount, - IN PEVENT_DATA_DESCRIPTOR UserData OPTIONAL); +PoDeletePowerRequest( + IN OUT PVOID PowerRequest); -NTSTATUS NTKERNELAPI +NTSTATUS NTAPI -EtwWriteTransfer( - IN REGHANDLE RegHandle, - IN PCEVENT_DESCRIPTOR EventDescriptor, - IN LPCGUID ActivityId OPTIONAL, - IN LPCGUID RelatedActivityId OPTIONAL, - IN ULONG UserDataCount, - IN PEVENT_DATA_DESCRIPTOR UserData OPTIONAL); +PoSetPowerRequest( + IN OUT PVOID PowerRequest, + IN POWER_REQUEST_TYPE Type); -NTSTATUS NTKERNELAPI +NTSTATUS NTAPI -EtwWriteString( - IN REGHANDLE RegHandle, - IN UCHAR Level, - IN ULONGLONG Keyword, - IN LPCGUID ActivityId OPTIONAL, - IN PCWSTR String); - -#endif /* (NTDDI_VERSION >= NTDDI_VISTA) */ +PoClearPowerRequest( + IN OUT PVOID PowerRequest, + IN POWER_REQUEST_TYPE Type); -#if (NTDDI_VERSION >= NTDDI_WIN7) -NTSTATUS NTKERNELAPI +NTSTATUS NTAPI -EtwWriteEx( - IN REGHANDLE RegHandle, - IN PCEVENT_DESCRIPTOR EventDescriptor, - IN ULONG64 Filter, - IN ULONG Flags, - IN LPCGUID ActivityId OPTIONAL, - IN LPCGUID RelatedActivityId OPTIONAL, - IN ULONG UserDataCount, - IN PEVENT_DATA_DESCRIPTOR UserData OPTIONAL); -#endif - +PoCreatePowerRequest( + OUT PVOID *PowerRequest, + IN PDEVICE_OBJECT DeviceObject, + IN PCOUNTED_REASON_CONTEXT Context); +#endif /* (NTDDI_VERSION >= NTDDI_WIN7) */ /****************************************************************************** - * Kernel Debugger Functions * + * Executive Functions * ******************************************************************************/ -#ifndef _DBGNT_ +#define ExInterlockedIncrementLong(Addend,Lock) Exfi386InterlockedIncrementLong(Addend) +#define ExInterlockedDecrementLong(Addend,Lock) Exfi386InterlockedDecrementLong(Addend) +#define ExInterlockedExchangeUlong(Target, Value, Lock) Exfi386InterlockedExchangeUlong(Target, Value) -ULONG -__cdecl -DbgPrint( - IN PCSTR Format, - IN ...); +#define ExAcquireSpinLock(Lock, OldIrql) KeAcquireSpinLock((Lock), (OldIrql)) +#define ExReleaseSpinLock(Lock, OldIrql) KeReleaseSpinLock((Lock), (OldIrql)) +#define ExAcquireSpinLockAtDpcLevel(Lock) KeAcquireSpinLockAtDpcLevel(Lock) +#define ExReleaseSpinLockFromDpcLevel(Lock) KeReleaseSpinLockFromDpcLevel(Lock) -#if (NTDDI_VERSION >= NTDDI_WIN2K) -NTSYSAPI -ULONG -__cdecl -DbgPrintReturnControlC( - IN PCCH Format, - IN ...); +#define ExInitializeSListHead InitializeSListHead + +#if defined(_X86_) +#if defined(_NTHAL_) +#define ExAcquireFastMutex ExiAcquireFastMutex +#define ExReleaseFastMutex ExiReleaseFastMutex +#define ExTryToAcquireFastMutex ExiTryToAcquireFastMutex +#endif +#define ExInterlockedAddUlong ExfInterlockedAddUlong +#define ExInterlockedInsertHeadList ExfInterlockedInsertHeadList +#define ExInterlockedInsertTailList ExfInterlockedInsertTailList +#define ExInterlockedRemoveHeadList ExfInterlockedRemoveHeadList +#define ExInterlockedPopEntryList ExfInterlockedPopEntryList +#define ExInterlockedPushEntryList ExfInterlockedPushEntryList #endif -#if (NTDDI_VERSION >= NTDDI_WINXP) +#if defined(_WIN64) -NTSYSAPI -ULONG -__cdecl -DbgPrintEx( - IN ULONG ComponentId, - IN ULONG Level, - IN PCSTR Format, - IN ...); +#if defined(_NTDRIVER_) || defined(_NTDDK_) || defined(_NTIFS_) || \ + defined(_NTHAL_) || defined(_NTOSP_) +NTKERNELAPI +USHORT +ExQueryDepthSList(IN PSLIST_HEADER ListHead); +#else +FORCEINLINE +USHORT +ExQueryDepthSList(IN PSLIST_HEADER ListHead) +{ + return (USHORT)(ListHead->Alignment & 0xffff); +} +#endif -#ifdef _VA_LIST_DEFINED +NTKERNELAPI +PSLIST_ENTRY +ExpInterlockedFlushSList( + PSLIST_HEADER ListHead); -NTSYSAPI -ULONG -NTAPI -vDbgPrintEx( - IN ULONG ComponentId, - IN ULONG Level, - IN PCCH Format, - IN va_list ap); +NTKERNELAPI +PSLIST_ENTRY +ExpInterlockedPopEntrySList( + PSLIST_HEADER ListHead); -NTSYSAPI -ULONG -NTAPI -vDbgPrintExWithPrefix( - IN PCCH Prefix, - IN ULONG ComponentId, - IN ULONG Level, - IN PCCH Format, - IN va_list ap); +NTKERNELAPI +PSLIST_ENTRY +ExpInterlockedPushEntrySList( + PSLIST_HEADER ListHead, + PSLIST_ENTRY ListEntry); -#endif /* _VA_LIST_DEFINED */ +#define ExInterlockedFlushSList(Head) \ + ExpInterlockedFlushSList(Head) +#define ExInterlockedPopEntrySList(Head, Lock) \ + ExpInterlockedPopEntrySList(Head) +#define ExInterlockedPushEntrySList(Head, Entry, Lock) \ + ExpInterlockedPushEntrySList(Head, Entry) -NTSYSAPI -NTSTATUS -NTAPI -DbgQueryDebugFilterState( - IN ULONG ComponentId, - IN ULONG Level); +#else // !defined(_WIN64) -NTSYSAPI -NTSTATUS -NTAPI -DbgSetDebugFilterState( - IN ULONG ComponentId, - IN ULONG Level, - IN BOOLEAN State); +#define ExQueryDepthSList(listhead) (listhead)->Depth -#endif /* (NTDDI_VERSION >= NTDDI_WINXP) */ +NTKERNELAPI +PSINGLE_LIST_ENTRY +FASTCALL +ExInterlockedFlushSList( + IN PSLIST_HEADER ListHead); -#if (NTDDI_VERSION >= NTDDI_VISTA) +#if defined(_WIN2K_COMPAT_SLIST_USAGE) && defined(_X86_) +NTKERNELAPI +PSINGLE_LIST_ENTRY +FASTCALL +ExInterlockedPopEntrySList( + IN PSLIST_HEADER ListHead, + IN PKSPIN_LOCK Lock); -typedef VOID -(*PDEBUG_PRINT_CALLBACK)( - IN PSTRING Output, - IN ULONG ComponentId, - IN ULONG Level); +NTKERNELAPI +PSINGLE_LIST_ENTRY +FASTCALL +ExInterlockedPushEntrySList( + IN PSLIST_HEADER ListHead, + IN PSINGLE_LIST_ENTRY ListEntry, + IN PKSPIN_LOCK Lock); +#else +#define ExInterlockedPopEntrySList(_ListHead, _Lock) \ + InterlockedPopEntrySList(_ListHead) +#define ExInterlockedPushEntrySList(_ListHead, _ListEntry, _Lock) \ + InterlockedPushEntrySList(_ListHead, _ListEntry) +#endif // _WIN2K_COMPAT_SLIST_USAGE -NTSYSAPI -NTSTATUS -NTAPI -DbgSetDebugPrintCallback( - IN PDEBUG_PRINT_CALLBACK DebugPrintCallback, - IN BOOLEAN Enable); +#endif // !defined(_WIN64) -#endif /* (NTDDI_VERSION >= NTDDI_VISTA) */ +/* ERESOURCE_THREAD + * ExGetCurrentResourceThread( + * VOID); + */ +#define ExGetCurrentResourceThread() ((ERESOURCE_THREAD)PsGetCurrentThread()) -#endif /* _DBGNT_ */ +#define ExReleaseResource(R) (ExReleaseResourceLite(R)) -#if DBG +/* VOID + * ExInitializeWorkItem( + * IN PWORK_QUEUE_ITEM Item, + * IN PWORKER_THREAD_ROUTINE Routine, + * IN PVOID Context) + */ +#define ExInitializeWorkItem(Item, Routine, Context) \ +{ \ + (Item)->WorkerRoutine = Routine; \ + (Item)->Parameter = Context; \ + (Item)->List.Flink = NULL; \ +} -#define KdPrint(_x_) DbgPrint _x_ -#define KdPrintEx(_x_) DbgPrintEx _x_ -#define vKdPrintEx(_x_) vDbgPrintEx _x_ -#define vKdPrintExWithPrefix(_x_) vDbgPrintExWithPrefix _x_ -#define KdBreakPoint() DbgBreakPoint() -#define KdBreakPointWithStatus(s) DbgBreakPointWithStatus(s) +FORCEINLINE +VOID +ExInitializeFastMutex( + OUT PFAST_MUTEX FastMutex) +{ + FastMutex->Count = FM_LOCK_BIT; + FastMutex->Owner = NULL; + FastMutex->Contention = 0; + KeInitializeEvent(&FastMutex->Event, SynchronizationEvent, FALSE); + return; +} -#else /* !DBG */ +#if (NTDDI_VERSION >= NTDDI_WIN2K) -#define KdPrint(_x_) -#define KdPrintEx(_x_) -#define vKdPrintEx(_x_) -#define vKdPrintExWithPrefix(_x_) -#define KdBreakPoint() -#define KdBreakPointWithStatus(s) +NTKERNELAPI +VOID +FASTCALL +ExAcquireFastMutex( + IN OUT PFAST_MUTEX FastMutex); -#endif /* !DBG */ +NTKERNELAPI +VOID +FASTCALL +ExReleaseFastMutex( + IN OUT PFAST_MUTEX FastMutex); + +NTKERNELAPI +BOOLEAN +FASTCALL +ExTryToAcquireFastMutex( + IN OUT PFAST_MUTEX FastMutex); + +NTKERNELAPI +VOID +FASTCALL +ExAcquireFastMutexUnsafe( + IN OUT PFAST_MUTEX FastMutex); + +NTKERNELAPI +VOID +FASTCALL +ExReleaseFastMutexUnsafe( + IN OUT PFAST_MUTEX FastMutex); + +NTKERNELAPI +BOOLEAN +NTAPI +ExAcquireResourceExclusiveLite( + IN PERESOURCE Resource, + IN BOOLEAN Wait); + +NTKERNELAPI +BOOLEAN +NTAPI +ExAcquireResourceSharedLite( + IN PERESOURCE Resource, + IN BOOLEAN Wait); -#if defined(__GNUC__) +NTKERNELAPI +BOOLEAN +NTAPI +ExAcquireSharedStarveExclusive( + IN PERESOURCE Resource, + IN BOOLEAN Wait); -extern NTKERNELAPI BOOLEAN KdDebuggerNotPresent; -extern NTKERNELAPI BOOLEAN KdDebuggerEnabled; -#define KD_DEBUGGER_ENABLED KdDebuggerEnabled -#define KD_DEBUGGER_NOT_PRESENT KdDebuggerNotPresent +NTKERNELAPI +BOOLEAN +NTAPI +ExAcquireSharedWaitForExclusive( + IN PERESOURCE Resource, + IN BOOLEAN Wait); -#elif defined(_NTDDK_) || defined(_NTIFS_) || defined(_NTHAL_) || defined(_WDMDDK_) || defined(_NTOSP_) +NTKERNELAPI +PVOID +NTAPI +ExAllocatePool( + IN POOL_TYPE PoolType, + IN SIZE_T NumberOfBytes); -extern NTKERNELAPI PBOOLEAN KdDebuggerNotPresent; -extern NTKERNELAPI PBOOLEAN KdDebuggerEnabled; -#define KD_DEBUGGER_ENABLED *KdDebuggerEnabled -#define KD_DEBUGGER_NOT_PRESENT *KdDebuggerNotPresent +#ifdef POOL_TAGGING +#define ExAllocatePool(p,n) ExAllocatePoolWithTag(p,n,' kdD') +#endif /* POOL_TAGGING */ -#else +NTKERNELAPI +PVOID +NTAPI +ExAllocatePoolWithQuota( + IN POOL_TYPE PoolType, + IN SIZE_T NumberOfBytes); -extern BOOLEAN KdDebuggerNotPresent; -extern BOOLEAN KdDebuggerEnabled; -#define KD_DEBUGGER_ENABLED KdDebuggerEnabled -#define KD_DEBUGGER_NOT_PRESENT KdDebuggerNotPresent +#ifdef POOL_TAGGING +#define ExAllocatePoolWithQuota(p,n) ExAllocatePoolWithQuotaTag(p,n,' kdD') +#endif /* POOL_TAGGING */ -#endif +NTKERNELAPI +PVOID +NTAPI +ExAllocatePoolWithQuotaTag( + IN POOL_TYPE PoolType, + IN SIZE_T NumberOfBytes, + IN ULONG Tag); -#if (NTDDI_VERSION >= NTDDI_WIN2K) +#ifndef POOL_TAGGING +#define ExAllocatePoolWithQuotaTag(a,b,c) ExAllocatePoolWithQuota(a,b) +#endif /* POOL_TAGGING */ NTKERNELAPI -NTSTATUS +PVOID NTAPI -KdDisableDebugger(VOID); +ExAllocatePoolWithTag( + IN POOL_TYPE PoolType, + IN SIZE_T NumberOfBytes, + IN ULONG Tag); NTKERNELAPI -NTSTATUS +PVOID NTAPI -KdEnableDebugger(VOID); +ExAllocatePoolWithTagPriority( + IN POOL_TYPE PoolType, + IN SIZE_T NumberOfBytes, + IN ULONG Tag, + IN EX_POOL_PRIORITY Priority); -#if (_MSC_FULL_VER >= 150030729) && !defined(IMPORT_NATIVE_DBG_BREAK) -#define DbgBreakPoint __debugbreak -#else +NTKERNELAPI VOID NTAPI -DbgBreakPoint(VOID); -#endif +ExConvertExclusiveToSharedLite( + IN PERESOURCE Resource); -NTSYSAPI -VOID +NTKERNELAPI +NTSTATUS NTAPI -DbgBreakPointWithStatus( - IN ULONG Status); +ExCreateCallback( + OUT PCALLBACK_OBJECT *CallbackObject, + IN POBJECT_ATTRIBUTES ObjectAttributes, + IN BOOLEAN Create, + IN BOOLEAN AllowMultipleCallbacks); -#endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */ +NTKERNELAPI +VOID +NTAPI +ExDeleteNPagedLookasideList( + IN PNPAGED_LOOKASIDE_LIST Lookaside); -#if (NTDDI_VERSION >= NTDDI_WS03) NTKERNELAPI -BOOLEAN +VOID NTAPI -KdRefreshDebuggerNotPresent(VOID); -#endif +ExDeletePagedLookasideList( + IN PPAGED_LOOKASIDE_LIST Lookaside); -#if (NTDDI_VERSION >= NTDDI_WS03SP1) NTKERNELAPI NTSTATUS NTAPI -KdChangeOption( - IN KD_OPTION Option, - IN ULONG InBufferBytes OPTIONAL, - IN PVOID InBuffer, - IN ULONG OutBufferBytes OPTIONAL, - OUT PVOID OutBuffer, - OUT PULONG OutBufferNeeded OPTIONAL); -#endif -/* Hardware Abstraction Layer Functions */ - -#if (NTDDI_VERSION >= NTDDI_WIN2K) - -#if defined(USE_DMA_MACROS) && !defined(_NTHAL_) && (defined(_NTDDK_) || defined(_NTDRIVER_)) || defined(_WDM_INCLUDED_) +ExDeleteResourceLite( + IN PERESOURCE Resource); -FORCEINLINE -PVOID +NTKERNELAPI +VOID NTAPI -HalAllocateCommonBuffer( - IN PDMA_ADAPTER DmaAdapter, - IN ULONG Length, - OUT PPHYSICAL_ADDRESS LogicalAddress, - IN BOOLEAN CacheEnabled) -{ - PALLOCATE_COMMON_BUFFER allocateCommonBuffer; - PVOID commonBuffer; +ExFreePool( + IN PVOID P); - allocateCommonBuffer = *(DmaAdapter)->DmaOperations->AllocateCommonBuffer; - ASSERT( allocateCommonBuffer != NULL ); - commonBuffer = allocateCommonBuffer( DmaAdapter, Length, LogicalAddress, CacheEnabled ); - return commonBuffer; -} +#ifdef POOL_TAGGING +#define ExFreePool(P) ExFreePoolWithTag(P, 0) +#endif -FORCEINLINE +NTKERNELAPI VOID NTAPI -HalFreeCommonBuffer( - IN PDMA_ADAPTER DmaAdapter, - IN ULONG Length, - IN PHYSICAL_ADDRESS LogicalAddress, - IN PVOID VirtualAddress, - IN BOOLEAN CacheEnabled) -{ - PFREE_COMMON_BUFFER freeCommonBuffer; - - freeCommonBuffer = *(DmaAdapter)->DmaOperations->FreeCommonBuffer; - ASSERT( freeCommonBuffer != NULL ); - freeCommonBuffer( DmaAdapter, Length, LogicalAddress, VirtualAddress, CacheEnabled ); -} +ExFreePoolWithTag( + IN PVOID P, + IN ULONG Tag); -FORCEINLINE +NTKERNELAPI ULONG NTAPI -HalReadDmaCounter( - IN PDMA_ADAPTER DmaAdapter) -{ - PREAD_DMA_COUNTER readDmaCounter; - ULONG counter; +ExGetExclusiveWaiterCount( + IN PERESOURCE Resource); - readDmaCounter = *(DmaAdapter)->DmaOperations->ReadDmaCounter; - ASSERT( readDmaCounter != NULL ); - counter = readDmaCounter( DmaAdapter ); - return counter; -} +NTKERNELAPI +KPROCESSOR_MODE +NTAPI +ExGetPreviousMode( + VOID); -FORCEINLINE +NTKERNELAPI ULONG -HalGetDmaAlignment( - IN PDMA_ADAPTER DmaAdapter) -{ - PGET_DMA_ALIGNMENT getDmaAlignment; - ULONG alignment; - - getDmaAlignment = *(DmaAdapter)->DmaOperations->GetDmaAlignment; - ASSERT( getDmaAlignment != NULL ); - alignment = getDmaAlignment( DmaAdapter ); - return alignment; -} - -#endif /* USE_DMA_MACROS ... */ -#endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */ - -#ifndef _NTTMAPI_ -#define _NTTMAPI_ - -#include +NTAPI +ExGetSharedWaiterCount( + IN PERESOURCE Resource); -#define TRANSACTIONMANAGER_QUERY_INFORMATION (0x0001) -#define TRANSACTIONMANAGER_SET_INFORMATION (0x0002) -#define TRANSACTIONMANAGER_RECOVER (0x0004) -#define TRANSACTIONMANAGER_RENAME (0x0008) -#define TRANSACTIONMANAGER_CREATE_RM (0x0010) -#define TRANSACTIONMANAGER_BIND_TRANSACTION (0x0020) - -#define TRANSACTIONMANAGER_GENERIC_READ (STANDARD_RIGHTS_READ |\ - TRANSACTIONMANAGER_QUERY_INFORMATION) - -#define TRANSACTIONMANAGER_GENERIC_WRITE (STANDARD_RIGHTS_WRITE |\ - TRANSACTIONMANAGER_SET_INFORMATION |\ - TRANSACTIONMANAGER_RECOVER |\ - TRANSACTIONMANAGER_RENAME |\ - TRANSACTIONMANAGER_CREATE_RM) - -#define TRANSACTIONMANAGER_GENERIC_EXECUTE (STANDARD_RIGHTS_EXECUTE) - -#define TRANSACTIONMANAGER_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED |\ - TRANSACTIONMANAGER_GENERIC_READ |\ - TRANSACTIONMANAGER_GENERIC_WRITE |\ - TRANSACTIONMANAGER_GENERIC_EXECUTE |\ - TRANSACTIONMANAGER_BIND_TRANSACTION) - -#define TRANSACTION_QUERY_INFORMATION (0x0001) -#define TRANSACTION_SET_INFORMATION (0x0002) -#define TRANSACTION_ENLIST (0x0004) -#define TRANSACTION_COMMIT (0x0008) -#define TRANSACTION_ROLLBACK (0x0010) -#define TRANSACTION_PROPAGATE (0x0020) -#define TRANSACTION_RIGHT_RESERVED1 (0x0040) - -#define TRANSACTION_GENERIC_READ (STANDARD_RIGHTS_READ |\ - TRANSACTION_QUERY_INFORMATION |\ - SYNCHRONIZE) - -#define TRANSACTION_GENERIC_WRITE (STANDARD_RIGHTS_WRITE |\ - TRANSACTION_SET_INFORMATION |\ - TRANSACTION_COMMIT |\ - TRANSACTION_ENLIST |\ - TRANSACTION_ROLLBACK |\ - TRANSACTION_PROPAGATE |\ - SYNCHRONIZE) - -#define TRANSACTION_GENERIC_EXECUTE (STANDARD_RIGHTS_EXECUTE |\ - TRANSACTION_COMMIT |\ - TRANSACTION_ROLLBACK |\ - SYNCHRONIZE) - -#define TRANSACTION_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED |\ - TRANSACTION_GENERIC_READ |\ - TRANSACTION_GENERIC_WRITE |\ - TRANSACTION_GENERIC_EXECUTE) - -#define TRANSACTION_RESOURCE_MANAGER_RIGHTS (TRANSACTION_GENERIC_READ |\ - STANDARD_RIGHTS_WRITE |\ - TRANSACTION_SET_INFORMATION |\ - TRANSACTION_ENLIST |\ - TRANSACTION_ROLLBACK |\ - TRANSACTION_PROPAGATE |\ - SYNCHRONIZE) - -#define RESOURCEMANAGER_QUERY_INFORMATION (0x0001) -#define RESOURCEMANAGER_SET_INFORMATION (0x0002) -#define RESOURCEMANAGER_RECOVER (0x0004) -#define RESOURCEMANAGER_ENLIST (0x0008) -#define RESOURCEMANAGER_GET_NOTIFICATION (0x0010) -#define RESOURCEMANAGER_REGISTER_PROTOCOL (0x0020) -#define RESOURCEMANAGER_COMPLETE_PROPAGATION (0x0040) - -#define RESOURCEMANAGER_GENERIC_READ (STANDARD_RIGHTS_READ |\ - RESOURCEMANAGER_QUERY_INFORMATION |\ - SYNCHRONIZE) - -#define RESOURCEMANAGER_GENERIC_WRITE (STANDARD_RIGHTS_WRITE |\ - RESOURCEMANAGER_SET_INFORMATION |\ - RESOURCEMANAGER_RECOVER |\ - RESOURCEMANAGER_ENLIST |\ - RESOURCEMANAGER_GET_NOTIFICATION |\ - RESOURCEMANAGER_REGISTER_PROTOCOL |\ - RESOURCEMANAGER_COMPLETE_PROPAGATION |\ - SYNCHRONIZE) - -#define RESOURCEMANAGER_GENERIC_EXECUTE (STANDARD_RIGHTS_EXECUTE |\ - RESOURCEMANAGER_RECOVER |\ - RESOURCEMANAGER_ENLIST |\ - RESOURCEMANAGER_GET_NOTIFICATION |\ - RESOURCEMANAGER_COMPLETE_PROPAGATION |\ - SYNCHRONIZE) - -#define RESOURCEMANAGER_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED |\ - RESOURCEMANAGER_GENERIC_READ |\ - RESOURCEMANAGER_GENERIC_WRITE |\ - RESOURCEMANAGER_GENERIC_EXECUTE) - -#define ENLISTMENT_QUERY_INFORMATION (0x0001) -#define ENLISTMENT_SET_INFORMATION (0x0002) -#define ENLISTMENT_RECOVER (0x0004) -#define ENLISTMENT_SUBORDINATE_RIGHTS (0x0008) -#define ENLISTMENT_SUPERIOR_RIGHTS (0x0010) - -#define ENLISTMENT_GENERIC_READ (STANDARD_RIGHTS_READ |\ - ENLISTMENT_QUERY_INFORMATION) - -#define ENLISTMENT_GENERIC_WRITE (STANDARD_RIGHTS_WRITE |\ - ENLISTMENT_SET_INFORMATION |\ - ENLISTMENT_RECOVER |\ - ENLISTMENT_SUBORDINATE_RIGHTS |\ - ENLISTMENT_SUPERIOR_RIGHTS) - -#define ENLISTMENT_GENERIC_EXECUTE (STANDARD_RIGHTS_EXECUTE |\ - ENLISTMENT_RECOVER |\ - ENLISTMENT_SUBORDINATE_RIGHTS |\ - ENLISTMENT_SUPERIOR_RIGHTS) - -#define ENLISTMENT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED |\ - ENLISTMENT_GENERIC_READ |\ - ENLISTMENT_GENERIC_WRITE |\ - ENLISTMENT_GENERIC_EXECUTE) - -typedef enum _TRANSACTION_OUTCOME { - TransactionOutcomeUndetermined = 1, - TransactionOutcomeCommitted, - TransactionOutcomeAborted, -} TRANSACTION_OUTCOME; - - -typedef enum _TRANSACTION_STATE { - TransactionStateNormal = 1, - TransactionStateIndoubt, - TransactionStateCommittedNotify, -} TRANSACTION_STATE; - - -typedef struct _TRANSACTION_BASIC_INFORMATION { - GUID TransactionId; - ULONG State; - ULONG Outcome; -} TRANSACTION_BASIC_INFORMATION, *PTRANSACTION_BASIC_INFORMATION; - -typedef struct _TRANSACTIONMANAGER_BASIC_INFORMATION { - GUID TmIdentity; - LARGE_INTEGER VirtualClock; -} TRANSACTIONMANAGER_BASIC_INFORMATION, *PTRANSACTIONMANAGER_BASIC_INFORMATION; - -typedef struct _TRANSACTIONMANAGER_LOG_INFORMATION { - GUID LogIdentity; -} TRANSACTIONMANAGER_LOG_INFORMATION, *PTRANSACTIONMANAGER_LOG_INFORMATION; - -typedef struct _TRANSACTIONMANAGER_LOGPATH_INFORMATION { - ULONG LogPathLength; - WCHAR LogPath[1]; -} TRANSACTIONMANAGER_LOGPATH_INFORMATION, *PTRANSACTIONMANAGER_LOGPATH_INFORMATION; - -typedef struct _TRANSACTIONMANAGER_RECOVERY_INFORMATION { - ULONGLONG LastRecoveredLsn; -} TRANSACTIONMANAGER_RECOVERY_INFORMATION, *PTRANSACTIONMANAGER_RECOVERY_INFORMATION; - -typedef struct _TRANSACTION_PROPERTIES_INFORMATION { - ULONG IsolationLevel; - ULONG IsolationFlags; - LARGE_INTEGER Timeout; - ULONG Outcome; - ULONG DescriptionLength; - WCHAR Description[1]; -} TRANSACTION_PROPERTIES_INFORMATION, *PTRANSACTION_PROPERTIES_INFORMATION; - -typedef struct _TRANSACTION_BIND_INFORMATION { - HANDLE TmHandle; -} TRANSACTION_BIND_INFORMATION, *PTRANSACTION_BIND_INFORMATION; - -typedef struct _TRANSACTION_ENLISTMENT_PAIR { - GUID EnlistmentId; - GUID ResourceManagerId; -} TRANSACTION_ENLISTMENT_PAIR, *PTRANSACTION_ENLISTMENT_PAIR; - -typedef struct _TRANSACTION_ENLISTMENTS_INFORMATION { - ULONG NumberOfEnlistments; - TRANSACTION_ENLISTMENT_PAIR EnlistmentPair[1]; -} TRANSACTION_ENLISTMENTS_INFORMATION, *PTRANSACTION_ENLISTMENTS_INFORMATION; - -typedef struct _TRANSACTION_SUPERIOR_ENLISTMENT_INFORMATION { - TRANSACTION_ENLISTMENT_PAIR SuperiorEnlistmentPair; -} TRANSACTION_SUPERIOR_ENLISTMENT_INFORMATION, *PTRANSACTION_SUPERIOR_ENLISTMENT_INFORMATION; - -typedef struct _RESOURCEMANAGER_BASIC_INFORMATION { - GUID ResourceManagerId; - ULONG DescriptionLength; - WCHAR Description[1]; -} RESOURCEMANAGER_BASIC_INFORMATION, *PRESOURCEMANAGER_BASIC_INFORMATION; - -typedef struct _RESOURCEMANAGER_COMPLETION_INFORMATION { - HANDLE IoCompletionPortHandle; - ULONG_PTR CompletionKey; -} RESOURCEMANAGER_COMPLETION_INFORMATION, *PRESOURCEMANAGER_COMPLETION_INFORMATION; +NTKERNELAPI +VOID +NTAPI +ExInitializeNPagedLookasideList( + IN PNPAGED_LOOKASIDE_LIST Lookaside, + IN PALLOCATE_FUNCTION Allocate OPTIONAL, + IN PFREE_FUNCTION Free OPTIONAL, + IN ULONG Flags, + IN SIZE_T Size, + IN ULONG Tag, + IN USHORT Depth); -typedef enum _KTMOBJECT_TYPE { - KTMOBJECT_TRANSACTION, - KTMOBJECT_TRANSACTION_MANAGER, - KTMOBJECT_RESOURCE_MANAGER, - KTMOBJECT_ENLISTMENT, - KTMOBJECT_INVALID -} KTMOBJECT_TYPE, *PKTMOBJECT_TYPE; +NTKERNELAPI +VOID +NTAPI +ExInitializePagedLookasideList( + IN PPAGED_LOOKASIDE_LIST Lookaside, + IN PALLOCATE_FUNCTION Allocate OPTIONAL, + IN PFREE_FUNCTION Free OPTIONAL, + IN ULONG Flags, + IN SIZE_T Size, + IN ULONG Tag, + IN USHORT Depth); -typedef struct _KTMOBJECT_CURSOR { - GUID LastQuery; - ULONG ObjectIdCount; - GUID ObjectIds[1]; -} KTMOBJECT_CURSOR, *PKTMOBJECT_CURSOR; +NTKERNELAPI +NTSTATUS +NTAPI +ExInitializeResourceLite( + IN PERESOURCE Resource); -typedef enum _TRANSACTION_INFORMATION_CLASS { - TransactionBasicInformation, - TransactionPropertiesInformation, - TransactionEnlistmentInformation, - TransactionSuperiorEnlistmentInformation -} TRANSACTION_INFORMATION_CLASS; +NTKERNELAPI +LARGE_INTEGER +NTAPI +ExInterlockedAddLargeInteger( + IN PLARGE_INTEGER Addend, + IN LARGE_INTEGER Increment, + IN PKSPIN_LOCK Lock); -typedef enum _TRANSACTIONMANAGER_INFORMATION_CLASS { - TransactionManagerBasicInformation, - TransactionManagerLogInformation, - TransactionManagerLogPathInformation, - TransactionManagerRecoveryInformation = 4 -} TRANSACTIONMANAGER_INFORMATION_CLASS; +#if defined(_WIN64) +#define ExInterlockedAddLargeStatistic(Addend, Increment) \ + (VOID)InterlockedAdd64(&(Addend)->QuadPart, Increment) +#else +#define ExInterlockedAddLargeStatistic(Addend, Increment) \ + _InterlockedAddLargeStatistic((PLONGLONG)&(Addend)->QuadPart, Increment) +#endif -typedef enum _RESOURCEMANAGER_INFORMATION_CLASS { - ResourceManagerBasicInformation, - ResourceManagerCompletionInformation, -} RESOURCEMANAGER_INFORMATION_CLASS; +NTKERNELAPI +ULONG +FASTCALL +ExInterlockedAddUlong( + IN PULONG Addend, + IN ULONG Increment, + PKSPIN_LOCK Lock); -typedef struct _ENLISTMENT_BASIC_INFORMATION { - GUID EnlistmentId; - GUID TransactionId; - GUID ResourceManagerId; -} ENLISTMENT_BASIC_INFORMATION, *PENLISTMENT_BASIC_INFORMATION; +#if defined(_AMD64_) || defined(_IA64_) +#define ExInterlockedCompareExchange64(Destination, Exchange, Comperand, Lock) \ + InterlockedCompareExchange64(Destination, *(Exchange), *(Comperand)) +#elif defined(_X86_) +NTKERNELAPI +LONGLONG +FASTCALL +ExfInterlockedCompareExchange64( + IN OUT LONGLONG volatile *Destination, + IN PLONGLONG Exchange, + IN PLONGLONG Comperand); +#define ExInterlockedCompareExchange64(Destination, Exchange, Comperand, Lock) \ + ExfInterlockedCompareExchange64(Destination, Exchange, Comperand) +#else +NTKERNELAPI +LONGLONG +FASTCALL +ExInterlockedCompareExchange64( + IN OUT LONGLONG volatile *Destination, + IN PLONGLONG Exchange, + IN PLONGLONG Comparand, + IN PKSPIN_LOCK Lock); +#endif -typedef struct _ENLISTMENT_CRM_INFORMATION { - GUID CrmTransactionManagerId; - GUID CrmResourceManagerId; - GUID CrmEnlistmentId; -} ENLISTMENT_CRM_INFORMATION, *PENLISTMENT_CRM_INFORMATION; +NTKERNELAPI +PLIST_ENTRY +FASTCALL +ExInterlockedInsertHeadList( + IN PLIST_ENTRY ListHead, + IN PLIST_ENTRY ListEntry, + IN PKSPIN_LOCK Lock); -typedef enum _ENLISTMENT_INFORMATION_CLASS { - EnlistmentBasicInformation, - EnlistmentRecoveryInformation, - EnlistmentCrmInformation -} ENLISTMENT_INFORMATION_CLASS; +NTKERNELAPI +PLIST_ENTRY +FASTCALL +ExInterlockedInsertTailList( + IN PLIST_ENTRY ListHead, + IN PLIST_ENTRY ListEntry, + IN PKSPIN_LOCK Lock); -typedef struct _TRANSACTION_LIST_ENTRY { -#if defined(__cplusplus) - ::UOW UOW; -#else - UOW UOW; -#endif -} TRANSACTION_LIST_ENTRY, *PTRANSACTION_LIST_ENTRY; +NTKERNELAPI +PSINGLE_LIST_ENTRY +FASTCALL +ExInterlockedPopEntryList( + IN PSINGLE_LIST_ENTRY ListHead, + IN PKSPIN_LOCK Lock); -typedef struct _TRANSACTION_LIST_INFORMATION { - ULONG NumberOfTransactions; - TRANSACTION_LIST_ENTRY TransactionInformation[1]; -} TRANSACTION_LIST_INFORMATION, *PTRANSACTION_LIST_INFORMATION; +NTKERNELAPI +PSINGLE_LIST_ENTRY +FASTCALL +ExInterlockedPushEntryList( + IN PSINGLE_LIST_ENTRY ListHead, + IN PSINGLE_LIST_ENTRY ListEntry, + IN PKSPIN_LOCK Lock); -typedef NTSTATUS -(NTAPI *PFN_NT_CREATE_TRANSACTION)( - OUT PHANDLE TransactionHandle, - IN ACCESS_MASK DesiredAccess, - IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, - IN LPGUID Uow OPTIONAL, - IN HANDLE TmHandle OPTIONAL, - IN ULONG CreateOptions OPTIONAL, - IN ULONG IsolationLevel OPTIONAL, - IN ULONG IsolationFlags OPTIONAL, - IN PLARGE_INTEGER Timeout OPTIONAL, - IN PUNICODE_STRING Description OPTIONAL); +NTKERNELAPI +PLIST_ENTRY +FASTCALL +ExInterlockedRemoveHeadList( + IN PLIST_ENTRY ListHead, + IN PKSPIN_LOCK Lock); -typedef NTSTATUS -(NTAPI *PFN_NT_OPEN_TRANSACTION)( - OUT PHANDLE TransactionHandle, - IN ACCESS_MASK DesiredAccess, - IN POBJECT_ATTRIBUTES ObjectAttributes, - IN LPGUID Uow OPTIONAL, - IN HANDLE TmHandle OPTIONAL); +NTKERNELAPI +BOOLEAN +NTAPI +ExIsProcessorFeaturePresent( + IN ULONG ProcessorFeature); -typedef NTSTATUS -(NTAPI *PFN_NT_QUERY_INFORMATION_TRANSACTION)( - IN HANDLE TransactionHandle, - IN TRANSACTION_INFORMATION_CLASS TransactionInformationClass, - OUT PVOID TransactionInformation, - IN ULONG TransactionInformationLength, - OUT PULONG ReturnLength OPTIONAL); +NTKERNELAPI +BOOLEAN +NTAPI +ExIsResourceAcquiredExclusiveLite( + IN PERESOURCE Resource); -typedef NTSTATUS -(NTAPI *PFN_NT_SET_INFORMATION_TRANSACTION)( - IN HANDLE TransactionHandle, - IN TRANSACTION_INFORMATION_CLASS TransactionInformationClass, - IN PVOID TransactionInformation, - IN ULONG TransactionInformationLength); +NTKERNELAPI +ULONG +NTAPI +ExIsResourceAcquiredSharedLite( + IN PERESOURCE Resource); -typedef NTSTATUS -(NTAPI *PFN_NT_COMMIT_TRANSACTION)( - IN HANDLE TransactionHandle, - IN BOOLEAN Wait); +#define ExIsResourceAcquiredLite ExIsResourceAcquiredSharedLite -typedef NTSTATUS -(NTAPI *PFN_NT_ROLLBACK_TRANSACTION)( - IN HANDLE TransactionHandle, - IN BOOLEAN Wait); +NTKERNELAPI +VOID +NTAPI +ExLocalTimeToSystemTime( + IN PLARGE_INTEGER LocalTime, + OUT PLARGE_INTEGER SystemTime); -#if (NTDDI_VERSION >= NTDDI_VISTA) +NTKERNELAPI +VOID +NTAPI +ExNotifyCallback( + IN PCALLBACK_OBJECT CallbackObject, + IN PVOID Argument1, + IN PVOID Argument2); -NTSYSCALLAPI -NTSTATUS +NTKERNELAPI +VOID NTAPI -NtCreateTransactionManager( - OUT PHANDLE TmHandle, - IN ACCESS_MASK DesiredAccess, - IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, - IN PUNICODE_STRING LogFileName OPTIONAL, - IN ULONG CreateOptions OPTIONAL, - IN ULONG CommitStrength OPTIONAL); +ExQueueWorkItem( + IN PWORK_QUEUE_ITEM WorkItem, + IN WORK_QUEUE_TYPE QueueType); -NTSYSCALLAPI -NTSTATUS +NTKERNELAPI +DECLSPEC_NORETURN +VOID NTAPI -NtOpenTransactionManager( - OUT PHANDLE TmHandle, - IN ACCESS_MASK DesiredAccess, - IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, - IN PUNICODE_STRING LogFileName OPTIONAL, - IN LPGUID TmIdentity OPTIONAL, - IN ULONG OpenOptions OPTIONAL); +ExRaiseStatus( + IN NTSTATUS Status); -NTSYSCALLAPI -NTSTATUS +NTKERNELAPI +PVOID NTAPI -NtRenameTransactionManager( - IN PUNICODE_STRING LogFileName, - IN LPGUID ExistingTransactionManagerGuid); +ExRegisterCallback( + IN PCALLBACK_OBJECT CallbackObject, + IN PCALLBACK_FUNCTION CallbackFunction, + IN PVOID CallbackContext); -NTSYSCALLAPI +NTKERNELAPI NTSTATUS NTAPI -NtRollforwardTransactionManager( - IN HANDLE TransactionManagerHandle, - IN PLARGE_INTEGER TmVirtualClock OPTIONAL); +ExReinitializeResourceLite( + IN PERESOURCE Resource); -NTSYSCALLAPI -NTSTATUS +NTKERNELAPI +VOID NTAPI -NtRecoverTransactionManager( - IN HANDLE TransactionManagerHandle); +ExReleaseResourceForThreadLite( + IN PERESOURCE Resource, + IN ERESOURCE_THREAD ResourceThreadId); -NTSYSCALLAPI -NTSTATUS +NTKERNELAPI +VOID +FASTCALL +ExReleaseResourceLite( + IN PERESOURCE Resource); + +NTKERNELAPI +VOID NTAPI -NtQueryInformationTransactionManager( - IN HANDLE TransactionManagerHandle, - IN TRANSACTIONMANAGER_INFORMATION_CLASS TransactionManagerInformationClass, - OUT PVOID TransactionManagerInformation, - IN ULONG TransactionManagerInformationLength, - OUT PULONG ReturnLength); +ExSetResourceOwnerPointer( + IN PERESOURCE Resource, + IN PVOID OwnerPointer); -NTSYSCALLAPI -NTSTATUS +NTKERNELAPI +ULONG NTAPI -NtSetInformationTransactionManager( - IN HANDLE TmHandle OPTIONAL, - IN TRANSACTIONMANAGER_INFORMATION_CLASS TransactionManagerInformationClass, - IN PVOID TransactionManagerInformation, - IN ULONG TransactionManagerInformationLength); +ExSetTimerResolution( + IN ULONG DesiredTime, + IN BOOLEAN SetResolution); -NTSYSCALLAPI -NTSTATUS +NTKERNELAPI +VOID NTAPI -NtEnumerateTransactionObject( - IN HANDLE RootObjectHandle OPTIONAL, - IN KTMOBJECT_TYPE QueryType, - IN OUT PKTMOBJECT_CURSOR ObjectCursor, - IN ULONG ObjectCursorLength, - OUT PULONG ReturnLength); +ExSystemTimeToLocalTime( + IN PLARGE_INTEGER SystemTime, + OUT PLARGE_INTEGER LocalTime); -NTSYSCALLAPI -NTSTATUS +NTKERNELAPI +VOID NTAPI -NtCreateTransaction( - OUT PHANDLE TransactionHandle, - IN ACCESS_MASK DesiredAccess, - IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, - IN LPGUID Uow OPTIONAL, - IN HANDLE TmHandle OPTIONAL, - IN ULONG CreateOptions OPTIONAL, - IN ULONG IsolationLevel OPTIONAL, - IN ULONG IsolationFlags OPTIONAL, - IN PLARGE_INTEGER Timeout OPTIONAL, - IN PUNICODE_STRING Description OPTIONAL); +ExUnregisterCallback( + IN PVOID CbRegistration); -NTSYSCALLAPI -NTSTATUS + +#endif // (NTDDI_VERSION >= NTDDI_WIN2K) + +#if (NTDDI_VERSION >= NTDDI_WINXP) +NTKERNELAPI +BOOLEAN +FASTCALL +ExAcquireRundownProtection( + IN OUT PEX_RUNDOWN_REF RunRef); + +NTKERNELAPI +VOID +FASTCALL +ExInitializeRundownProtection( + OUT PEX_RUNDOWN_REF RunRef); + +NTKERNELAPI +VOID +FASTCALL +ExReInitializeRundownProtection( + OUT PEX_RUNDOWN_REF RunRef); + +NTKERNELAPI +VOID +FASTCALL +ExReleaseRundownProtection( + IN OUT PEX_RUNDOWN_REF RunRef); + +NTKERNELAPI +VOID +FASTCALL +ExRundownCompleted( + OUT PEX_RUNDOWN_REF RunRef); + +NTKERNELAPI +BOOLEAN NTAPI -NtOpenTransaction( - OUT PHANDLE TransactionHandle, - IN ACCESS_MASK DesiredAccess, - IN POBJECT_ATTRIBUTES ObjectAttributes, - IN LPGUID Uow, - IN HANDLE TmHandle OPTIONAL); +ExVerifySuite( + IN SUITE_TYPE SuiteType); -NTSYSCALLAPI -NTSTATUS +NTKERNELAPI +VOID +FASTCALL +ExWaitForRundownProtectionRelease( + IN OUT PEX_RUNDOWN_REF RunRef); + +#endif // (NTDDI_VERSION >= NTDDI_WINXP) + +#if (NTDDI_VERSION >= NTDDI_WINXPSP2) +NTKERNELAPI +BOOLEAN +FASTCALL +ExAcquireRundownProtectionEx( + IN OUT PEX_RUNDOWN_REF RunRef, + IN ULONG Count); + +NTKERNELAPI +VOID +FASTCALL +ExReleaseRundownProtectionEx( + IN OUT PEX_RUNDOWN_REF RunRef, + IN ULONG Count); +#endif // (NTDDI_VERSION >= NTDDI_WINXPSP2) + +#if (NTDDI_VERSION >= NTDDI_WS03SP1) +NTKERNELAPI +PEX_RUNDOWN_REF_CACHE_AWARE NTAPI -NtQueryInformationTransaction( - IN HANDLE TransactionHandle, - IN TRANSACTION_INFORMATION_CLASS TransactionInformationClass, - OUT PVOID TransactionInformation, - IN ULONG TransactionInformationLength, - OUT PULONG ReturnLength OPTIONAL); +ExAllocateCacheAwareRundownProtection( + IN POOL_TYPE PoolType, + IN ULONG PoolTag); -NTSYSCALLAPI -NTSTATUS +NTKERNELAPI +SIZE_T NTAPI -NtSetInformationTransaction( - IN HANDLE TransactionHandle, - IN TRANSACTION_INFORMATION_CLASS TransactionInformationClass, - IN PVOID TransactionInformation, - IN ULONG TransactionInformationLength); +ExSizeOfRundownProtectionCacheAware(VOID); +#endif // (NTDDI_VERSION >= NTDDI_WS03SP1) -NTSYSCALLAPI +#if (NTDDI_VERSION >= NTDDI_VISTA) +NTKERNELAPI NTSTATUS NTAPI -NtCommitTransaction( - IN HANDLE TransactionHandle, - IN BOOLEAN Wait); +ExInitializeLookasideListEx( + OUT PLOOKASIDE_LIST_EX Lookaside, + IN PALLOCATE_FUNCTION_EX Allocate OPTIONAL, + IN PFREE_FUNCTION_EX Free OPTIONAL, + IN POOL_TYPE PoolType, + IN ULONG Flags, + IN SIZE_T Size, + IN ULONG Tag, + IN USHORT Depth); +#endif -NTSYSCALLAPI +#if !defined(MIDL_PASS) + +static __inline PVOID +ExAllocateFromNPagedLookasideList( + IN PNPAGED_LOOKASIDE_LIST Lookaside) +{ + PVOID Entry; + + Lookaside->L.TotalAllocates++; + Entry = InterlockedPopEntrySList(&Lookaside->L.ListHead); + if (Entry == NULL) { + Lookaside->L.AllocateMisses++; + Entry = (Lookaside->L.Allocate)(Lookaside->L.Type, + Lookaside->L.Size, + Lookaside->L.Tag); + } + return Entry; +} + +static __inline PVOID +ExAllocateFromPagedLookasideList( + IN PPAGED_LOOKASIDE_LIST Lookaside) +{ + PVOID Entry; + + Lookaside->L.TotalAllocates++; + Entry = InterlockedPopEntrySList(&Lookaside->L.ListHead); + if (Entry == NULL) { + Lookaside->L.AllocateMisses++; + Entry = (Lookaside->L.Allocate)(Lookaside->L.Type, + Lookaside->L.Size, + Lookaside->L.Tag); + } + return Entry; +} + +static __inline VOID +ExFreeToNPagedLookasideList( + IN PNPAGED_LOOKASIDE_LIST Lookaside, + IN PVOID Entry) +{ + Lookaside->L.TotalFrees++; + if (ExQueryDepthSList(&Lookaside->L.ListHead) >= Lookaside->L.Depth) { + Lookaside->L.FreeMisses++; + (Lookaside->L.Free)(Entry); + } else { + InterlockedPushEntrySList(&Lookaside->L.ListHead, (PSLIST_ENTRY)Entry); + } +} + +static __inline VOID +ExFreeToPagedLookasideList( + IN PPAGED_LOOKASIDE_LIST Lookaside, + IN PVOID Entry) +{ + Lookaside->L.TotalFrees++; + if (ExQueryDepthSList(&Lookaside->L.ListHead) >= Lookaside->L.Depth) { + Lookaside->L.FreeMisses++; + (Lookaside->L.Free)(Entry); + } else { + InterlockedPushEntrySList(&Lookaside->L.ListHead, (PSLIST_ENTRY)Entry); + } +} + +#endif // !defined(MIDL_PASS) + +/****************************************************************************** + * Object Manager Functions * + ******************************************************************************/ + +#if (NTDDI_VERSION >= NTDDI_WIN2K) + +NTKERNELAPI +LONG_PTR +FASTCALL +ObfDereferenceObject( + IN PVOID Object); +#define ObDereferenceObject ObfDereferenceObject + +NTKERNELAPI NTSTATUS NTAPI -NtRollbackTransaction( - IN HANDLE TransactionHandle, - IN BOOLEAN Wait); +ObGetObjectSecurity( + IN PVOID Object, + OUT PSECURITY_DESCRIPTOR *SecurityDescriptor, + OUT PBOOLEAN MemoryAllocated); -NTSYSCALLAPI +NTKERNELAPI +LONG_PTR +FASTCALL +ObfReferenceObject( + IN PVOID Object); +#define ObReferenceObject ObfReferenceObject + +NTKERNELAPI NTSTATUS NTAPI -NtCreateEnlistment( - OUT PHANDLE EnlistmentHandle, +ObReferenceObjectByHandle( + IN HANDLE Handle, IN ACCESS_MASK DesiredAccess, - IN HANDLE ResourceManagerHandle, - IN HANDLE TransactionHandle, - IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, - IN ULONG CreateOptions OPTIONAL, - IN NOTIFICATION_MASK NotificationMask, - IN PVOID EnlistmentKey OPTIONAL); + IN POBJECT_TYPE ObjectType OPTIONAL, + IN KPROCESSOR_MODE AccessMode, + OUT PVOID *Object, + OUT POBJECT_HANDLE_INFORMATION HandleInformation OPTIONAL); -NTSYSCALLAPI +NTKERNELAPI NTSTATUS NTAPI -NtOpenEnlistment( - OUT PHANDLE EnlistmentHandle, +ObReferenceObjectByPointer( + IN PVOID Object, IN ACCESS_MASK DesiredAccess, - IN HANDLE ResourceManagerHandle, - IN LPGUID EnlistmentGuid, - IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL); + IN POBJECT_TYPE ObjectType OPTIONAL, + IN KPROCESSOR_MODE AccessMode); -NTSYSCALLAPI -NTSTATUS +NTKERNELAPI +VOID NTAPI -NtQueryInformationEnlistment( - IN HANDLE EnlistmentHandle, - IN ENLISTMENT_INFORMATION_CLASS EnlistmentInformationClass, - OUT PVOID EnlistmentInformation, - IN ULONG EnlistmentInformationLength, - OUT PULONG ReturnLength); +ObReleaseObjectSecurity( + IN PSECURITY_DESCRIPTOR SecurityDescriptor, + IN BOOLEAN MemoryAllocated); -NTSYSCALLAPI -NTSTATUS -NTAPI -NtSetInformationEnlistment( - IN HANDLE EnlistmentHandle OPTIONAL, - IN ENLISTMENT_INFORMATION_CLASS EnlistmentInformationClass, - IN PVOID EnlistmentInformation, - IN ULONG EnlistmentInformationLength); +#endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */ -NTSYSCALLAPI -NTSTATUS -NTAPI -NtRecoverEnlistment( - IN HANDLE EnlistmentHandle, - IN PVOID EnlistmentKey OPTIONAL); +/****************************************************************************** + * Process Manager Functions * + ******************************************************************************/ -NTSYSCALLAPI -NTSTATUS -NTAPI -NtPrePrepareEnlistment( - IN HANDLE EnlistmentHandle, - IN PLARGE_INTEGER TmVirtualClock OPTIONAL); +/* + * PEPROCESS + * PsGetCurrentProcess(VOID) + */ +#define PsGetCurrentProcess IoGetCurrentProcess -NTSYSCALLAPI -NTSTATUS +#if !defined(_PSGETCURRENTTHREAD_) + +#define _PSGETCURRENTTHREAD_ + +FORCEINLINE +PETHREAD NTAPI -NtPrepareEnlistment( - IN HANDLE EnlistmentHandle, - IN PLARGE_INTEGER TmVirtualClock OPTIONAL); +PsGetCurrentThread ( + VOID) +{ + return (PETHREAD)KeGetCurrentThread(); +} -NTSYSCALLAPI +#endif + +#if (NTDDI_VERSION >= NTDDI_WIN2K) + +NTKERNELAPI NTSTATUS NTAPI -NtCommitEnlistment( - IN HANDLE EnlistmentHandle, - IN PLARGE_INTEGER TmVirtualClock OPTIONAL); +PsCreateSystemThread( + OUT PHANDLE ThreadHandle, + IN ULONG DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, + IN HANDLE ProcessHandle OPTIONAL, + OUT PCLIENT_ID ClientId OPTIONAL, + IN PKSTART_ROUTINE StartRoutine, + IN PVOID StartContext OPTIONAL); -NTSYSCALLAPI +NTKERNELAPI NTSTATUS NTAPI -NtRollbackEnlistment( - IN HANDLE EnlistmentHandle, - IN PLARGE_INTEGER TmVirtualClock OPTIONAL); +PsTerminateSystemThread( + IN NTSTATUS ExitStatus); -NTSYSCALLAPI +#endif + +/****************************************************************************** + * WMI Library Support Functions * + ******************************************************************************/ + +#ifdef RUN_WPP + +#if (NTDDI_VERSION >= NTDDI_WINXP) +NTKERNELAPI NTSTATUS -NTAPI -NtPrePrepareComplete( - IN HANDLE EnlistmentHandle, - IN PLARGE_INTEGER TmVirtualClock OPTIONAL); +DDKCDECLAPI +WmiTraceMessage( + IN TRACEHANDLE LoggerHandle, + IN ULONG MessageFlags, + IN LPGUID MessageGuid, + IN USHORT MessageNumber, + IN ...); +#endif -NTSYSCALLAPI +#endif + + #if (NTDDI_VERSION >= NTDDI_WINXP) + +NTKERNELAPI NTSTATUS NTAPI -NtPrepareComplete( - IN HANDLE EnlistmentHandle, - IN PLARGE_INTEGER TmVirtualClock OPTIONAL); +WmiQueryTraceInformation( + IN TRACE_INFORMATION_CLASS TraceInformationClass, + OUT PVOID TraceInformation, + IN ULONG TraceInformationLength, + OUT PULONG RequiredLength OPTIONAL, + IN PVOID Buffer OPTIONAL); -NTSYSCALLAPI +#if 0 +/* FIXME: Get va_list from where? */ +NTKERNELAPI NTSTATUS +DDKCDECLAPI +WmiTraceMessageVa( + IN TRACEHANDLE LoggerHandle, + IN ULONG MessageFlags, + IN LPGUID MessageGuid, + IN USHORT MessageNumber, + IN va_list MessageArgList); +#endif + +#endif + +/****************************************************************************** + * Kernel Debugger Functions * + ******************************************************************************/ + +#ifndef _DBGNT_ +ULONG +DDKCDECLAPI +DbgPrint( + IN PCSTR Format, + IN ...); +#endif + +#if DBG + +#define KdPrint(_x_) DbgPrint _x_ +#define KdPrintEx(_x_) DbgPrintEx _x_ +#define vKdPrintExWithPrefix(_x_) vDbgPrintExWithPrefix _x_ +#define KdBreakPoint() DbgBreakPoint() +#define KdBreakPointWithStatus(s) DbgBreakPointWithStatus(s) + +#else /* !DBG */ + +#define KdPrint(_x_) +#define KdPrintEx(_x_) +#define vKdPrintExWithPrefix(_x_) +#define KdBreakPoint() +#define KdBreakPointWithStatus(s) + +#endif /* !DBG */ + +#if defined(__GNUC__) + +extern NTKERNELAPI BOOLEAN KdDebuggerNotPresent; +extern NTKERNELAPI BOOLEAN KdDebuggerEnabled; +#define KD_DEBUGGER_ENABLED KdDebuggerEnabled +#define KD_DEBUGGER_NOT_PRESENT KdDebuggerNotPresent + +#elif defined(_NTDDK_) || defined(_NTIFS_) || defined(_NTHAL_) || defined(_WDMDDK_) || defined(_NTOSP_) + +extern NTKERNELAPI PBOOLEAN KdDebuggerNotPresent; +extern NTKERNELAPI PBOOLEAN KdDebuggerEnabled; +#define KD_DEBUGGER_ENABLED *KdDebuggerEnabled +#define KD_DEBUGGER_NOT_PRESENT *KdDebuggerNotPresent + +#else + +extern BOOLEAN KdDebuggerNotPresent; +extern BOOLEAN KdDebuggerEnabled; +#define KD_DEBUGGER_ENABLED KdDebuggerEnabled +#define KD_DEBUGGER_NOT_PRESENT KdDebuggerNotPresent + +#endif + +#ifdef _VA_LIST_DEFINED +#if (NTDDI_VERSION >= NTDDI_WINXP) + +NTSYSAPI +ULONG NTAPI -NtCommitComplete( - IN HANDLE EnlistmentHandle, - IN PLARGE_INTEGER TmVirtualClock OPTIONAL); +vDbgPrintEx( + IN ULONG ComponentId, + IN ULONG Level, + IN PCCH Format, + IN va_list ap); -NTSYSCALLAPI -NTSTATUS +NTSYSAPI +ULONG NTAPI -NtReadOnlyEnlistment( - IN HANDLE EnlistmentHandle, - IN PLARGE_INTEGER TmVirtualClock OPTIONAL); +vDbgPrintExWithPrefix( + IN PCCH Prefix, + IN ULONG ComponentId, + IN ULONG Level, + IN PCCH Format, + IN va_list ap); -NTSYSCALLAPI +#endif +#endif // _VA_LIST_DEFINED + +#if (NTDDI_VERSION >= NTDDI_WIN2K) + +NTKERNELAPI NTSTATUS NTAPI -NtRollbackComplete( - IN HANDLE EnlistmentHandle, - IN PLARGE_INTEGER TmVirtualClock OPTIONAL); +KdDisableDebugger( + VOID); -NTSYSCALLAPI +NTKERNELAPI NTSTATUS NTAPI -NtSinglePhaseReject( - IN HANDLE EnlistmentHandle, - IN PLARGE_INTEGER TmVirtualClock OPTIONAL); +KdEnableDebugger( + VOID); -NTSYSCALLAPI -NTSTATUS +#if (_MSC_FULL_VER >= 150030729) && !defined(IMPORT_NATIVE_DBG_BREAK) +#define DbgBreakPoint __debugbreak +#else +VOID NTAPI -NtCreateResourceManager( - OUT PHANDLE ResourceManagerHandle, - IN ACCESS_MASK DesiredAccess, - IN HANDLE TmHandle, - IN LPGUID RmGuid, - IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, - IN ULONG CreateOptions OPTIONAL, - IN PUNICODE_STRING Description OPTIONAL); +DbgBreakPoint( + VOID); +#endif -NTSYSCALLAPI -NTSTATUS +NTSYSAPI +VOID NTAPI -NtOpenResourceManager( - OUT PHANDLE ResourceManagerHandle, - IN ACCESS_MASK DesiredAccess, - IN HANDLE TmHandle, - IN LPGUID ResourceManagerGuid OPTIONAL, - IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL); +DbgBreakPointWithStatus( + IN ULONG Status); -NTSYSCALLAPI +NTSYSAPI +ULONG +DDKCDECLAPI +DbgPrintReturnControlC( + IN PCCH Format, + IN ...); + +#endif + +#if (NTDDI_VERSION >= NTDDI_WINXP) + +NTSYSAPI +ULONG +DDKCDECLAPI +DbgPrintEx( + IN ULONG ComponentId, + IN ULONG Level, + IN PCSTR Format, + IN ...); + +NTSYSAPI NTSTATUS NTAPI -NtRecoverResourceManager( - IN HANDLE ResourceManagerHandle); +DbgQueryDebugFilterState( + IN ULONG ComponentId, + IN ULONG Level); -NTSYSCALLAPI +NTSYSAPI NTSTATUS NTAPI -NtGetNotificationResourceManager( - IN HANDLE ResourceManagerHandle, - OUT PTRANSACTION_NOTIFICATION TransactionNotification, - IN ULONG NotificationLength, - IN PLARGE_INTEGER Timeout OPTIONAL, - OUT PULONG ReturnLength OPTIONAL, - IN ULONG Asynchronous, - IN ULONG_PTR AsynchronousContext OPTIONAL); +DbgSetDebugFilterState( + IN ULONG ComponentId, + IN ULONG Level, + IN BOOLEAN State); -NTSYSCALLAPI -NTSTATUS +#endif + +#if (NTDDI_VERSION >= NTDDI_WS03) + +NTKERNELAPI +BOOLEAN NTAPI -NtQueryInformationResourceManager( - IN HANDLE ResourceManagerHandle, - IN RESOURCEMANAGER_INFORMATION_CLASS ResourceManagerInformationClass, - OUT PVOID ResourceManagerInformation, - IN ULONG ResourceManagerInformationLength, - OUT PULONG ReturnLength OPTIONAL); +KdRefreshDebuggerNotPresent( + VOID +); -NTSYSCALLAPI +#endif + +#if (NTDDI_VERSION >= NTDDI_WS03SP1) +NTKERNELAPI NTSTATUS NTAPI -NtSetInformationResourceManager( - IN HANDLE ResourceManagerHandle, - IN RESOURCEMANAGER_INFORMATION_CLASS ResourceManagerInformationClass, - IN PVOID ResourceManagerInformation, - IN ULONG ResourceManagerInformationLength); +KdChangeOption( + IN KD_OPTION Option, + IN ULONG InBufferBytes OPTIONAL, + IN PVOID InBuffer, + IN ULONG OutBufferBytes OPTIONAL, + OUT PVOID OutBuffer, + OUT PULONG OutBufferNeeded OPTIONAL); +#endif -NTSYSCALLAPI -NTSTATUS +#if defined(USE_DMA_MACROS) && !defined(_NTHAL_) && (defined(_NTDDK_) || defined(_NTDRIVER_)) || defined(_WDM_INCLUDED_) +FORCEINLINE +PVOID NTAPI -NtRegisterProtocolAddressInformation( - IN HANDLE ResourceManager, - IN PCRM_PROTOCOL_ID ProtocolId, - IN ULONG ProtocolInformationSize, - IN PVOID ProtocolInformation, - IN ULONG CreateOptions OPTIONAL); +HalAllocateCommonBuffer( + IN PDMA_ADAPTER DmaAdapter, + IN ULONG Length, + OUT PPHYSICAL_ADDRESS LogicalAddress, + IN BOOLEAN CacheEnabled) +{ + PALLOCATE_COMMON_BUFFER allocateCommonBuffer; + PVOID commonBuffer; -NTSYSCALLAPI -NTSTATUS + allocateCommonBuffer = *(DmaAdapter)->DmaOperations->AllocateCommonBuffer; + ASSERT( allocateCommonBuffer != NULL ); + commonBuffer = allocateCommonBuffer( DmaAdapter, Length, LogicalAddress, CacheEnabled ); + return commonBuffer; +} + +FORCEINLINE +VOID NTAPI -NtPropagationComplete( - IN HANDLE ResourceManagerHandle, - IN ULONG RequestCookie, - IN ULONG BufferLength, - IN PVOID Buffer); +HalFreeCommonBuffer( + IN PDMA_ADAPTER DmaAdapter, + IN ULONG Length, + IN PHYSICAL_ADDRESS LogicalAddress, + IN PVOID VirtualAddress, + IN BOOLEAN CacheEnabled) +{ + PFREE_COMMON_BUFFER freeCommonBuffer; -NTSYSCALLAPI -NTSTATUS + freeCommonBuffer = *(DmaAdapter)->DmaOperations->FreeCommonBuffer; + ASSERT( freeCommonBuffer != NULL ); + freeCommonBuffer( DmaAdapter, Length, LogicalAddress, VirtualAddress, CacheEnabled ); +} + +FORCEINLINE +ULONG NTAPI -NtPropagationFailed( - IN HANDLE ResourceManagerHandle, - IN ULONG RequestCookie, - IN NTSTATUS PropStatus); +HalReadDmaCounter( + IN PDMA_ADAPTER DmaAdapter) +{ + PREAD_DMA_COUNTER readDmaCounter; + ULONG counter; + + readDmaCounter = *(DmaAdapter)->DmaOperations->ReadDmaCounter; + ASSERT( readDmaCounter != NULL ); + counter = readDmaCounter( DmaAdapter ); + return counter; +} + +#endif + + +#ifndef _NTTMAPI_ +#define _NTTMAPI_ + +#include + +typedef enum _KTMOBJECT_TYPE { + KTMOBJECT_TRANSACTION, + KTMOBJECT_TRANSACTION_MANAGER, + KTMOBJECT_RESOURCE_MANAGER, + KTMOBJECT_ENLISTMENT, + KTMOBJECT_INVALID +} KTMOBJECT_TYPE, *PKTMOBJECT_TYPE; + +typedef struct _KTMOBJECT_CURSOR { + GUID LastQuery; + ULONG ObjectIdCount; + GUID ObjectIds[1]; +} KTMOBJECT_CURSOR, *PKTMOBJECT_CURSOR; + +typedef enum _TRANSACTION_INFORMATION_CLASS { + TransactionBasicInformation, + TransactionPropertiesInformation, + TransactionEnlistmentInformation, + TransactionSuperiorEnlistmentInformation +} TRANSACTION_INFORMATION_CLASS; + +typedef enum _TRANSACTIONMANAGER_INFORMATION_CLASS { + TransactionManagerBasicInformation, + TransactionManagerLogInformation, + TransactionManagerLogPathInformation, + TransactionManagerRecoveryInformation = 4 +} TRANSACTIONMANAGER_INFORMATION_CLASS; + +typedef enum _RESOURCEMANAGER_INFORMATION_CLASS { + ResourceManagerBasicInformation, + ResourceManagerCompletionInformation, +} RESOURCEMANAGER_INFORMATION_CLASS; -#endif /* NTDDI_VERSION >= NTDDI_VISTA */ +typedef enum _ENLISTMENT_INFORMATION_CLASS { + EnlistmentBasicInformation, + EnlistmentRecoveryInformation, + EnlistmentCrmInformation +} ENLISTMENT_INFORMATION_CLASS; #endif /* !_NTTMAPI_ */ /****************************************************************************** * ZwXxx Functions * ******************************************************************************/ - /* Constants */ #define NtCurrentProcess() ( (HANDLE)(LONG_PTR) -1 ) #define ZwCurrentProcess() NtCurrentProcess() #define NtCurrentThread() ( (HANDLE)(LONG_PTR) -2 ) #define ZwCurrentThread() NtCurrentThread() - - #if (NTDDI_VERSION >= NTDDI_WIN2K) - - NTSYSAPI NTSTATUS NTAPI ZwClose( - IN HANDLE Handle); + IN HANDLE Handle); NTSYSAPI NTSTATUS NTAPI ZwCreateDirectoryObject( - OUT PHANDLE DirectoryHandle, - IN ACCESS_MASK DesiredAccess, - IN POBJECT_ATTRIBUTES ObjectAttributes); + OUT PHANDLE DirectoryHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes); NTSYSAPI NTSTATUS NTAPI ZwCreateFile( - OUT PHANDLE FileHandle, - IN ACCESS_MASK DesiredAccess, - IN POBJECT_ATTRIBUTES ObjectAttributes, - OUT PIO_STATUS_BLOCK IoStatusBlock, - IN PLARGE_INTEGER AllocationSize OPTIONAL, - IN ULONG FileAttributes, - IN ULONG ShareAccess, - IN ULONG CreateDisposition, - IN ULONG CreateOptions, - IN PVOID EaBuffer OPTIONAL, - IN ULONG EaLength); + OUT PHANDLE FileHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN PLARGE_INTEGER AllocationSize OPTIONAL, + IN ULONG FileAttributes, + IN ULONG ShareAccess, + IN ULONG CreateDisposition, + IN ULONG CreateOptions, + IN PVOID EaBuffer OPTIONAL, + IN ULONG EaLength); NTSYSAPI NTSTATUS NTAPI ZwCreateKey( - OUT PHANDLE KeyHandle, - IN ACCESS_MASK DesiredAccess, - IN POBJECT_ATTRIBUTES ObjectAttributes, - IN ULONG TitleIndex, - IN PUNICODE_STRING Class OPTIONAL, - IN ULONG CreateOptions, - OUT PULONG Disposition OPTIONAL); + OUT PHANDLE KeyHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes, + IN ULONG TitleIndex, + IN PUNICODE_STRING Class OPTIONAL, + IN ULONG CreateOptions, + OUT PULONG Disposition OPTIONAL); NTSYSAPI NTSTATUS @@ -15397,7 +11081,7 @@ NTSYSAPI NTSTATUS NTAPI ZwDeleteValueKey( - IN HANDLE KeyHandle, + IN HANDLE KeyHandle, IN PUNICODE_STRING ValueName); NTSYSAPI @@ -15426,7 +11110,7 @@ NTSYSAPI NTSTATUS NTAPI ZwFlushKey( - IN HANDLE KeyHandle); + IN HANDLE KeyHandle); NTSYSAPI NTSTATUS @@ -15438,22 +11122,22 @@ NTSYSAPI NTSTATUS NTAPI ZwMakeTemporaryObject( - IN HANDLE Handle); + IN HANDLE Handle); NTSYSAPI NTSTATUS NTAPI ZwMapViewOfSection( - IN HANDLE SectionHandle, - IN HANDLE ProcessHandle, - IN OUT PVOID *BaseAddress, - IN ULONG_PTR ZeroBits, - IN SIZE_T CommitSize, - IN OUT PLARGE_INTEGER SectionOffset OPTIONAL, - IN OUT PSIZE_T ViewSize, - IN SECTION_INHERIT InheritDisposition, - IN ULONG AllocationType, - IN ULONG Protect); + IN HANDLE SectionHandle, + IN HANDLE ProcessHandle, + IN OUT PVOID *BaseAddress, + IN ULONG_PTR ZeroBits, + IN SIZE_T CommitSize, + IN OUT PLARGE_INTEGER SectionOffset OPTIONAL, + IN OUT PSIZE_T ViewSize, + IN SECTION_INHERIT InheritDisposition, + IN ULONG AllocationType, + IN ULONG Protect); NTSYSAPI NTSTATUS @@ -15470,35 +11154,35 @@ NTSYSAPI NTSTATUS NTAPI ZwOpenKey( - OUT PHANDLE KeyHandle, - IN ACCESS_MASK DesiredAccess, - IN POBJECT_ATTRIBUTES ObjectAttributes); + OUT PHANDLE KeyHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes); NTSYSAPI NTSTATUS NTAPI ZwOpenSection( - OUT PHANDLE SectionHandle, - IN ACCESS_MASK DesiredAccess, - IN POBJECT_ATTRIBUTES ObjectAttributes); + OUT PHANDLE SectionHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes); NTSYSAPI NTSTATUS NTAPI ZwOpenSymbolicLinkObject( - OUT PHANDLE LinkHandle, - IN ACCESS_MASK DesiredAccess, - IN POBJECT_ATTRIBUTES ObjectAttributes); + OUT PHANDLE LinkHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes); NTSYSAPI NTSTATUS NTAPI ZwQueryInformationFile( - IN HANDLE FileHandle, - OUT PIO_STATUS_BLOCK IoStatusBlock, - OUT PVOID FileInformation, - IN ULONG Length, - IN FILE_INFORMATION_CLASS FileInformationClass); + IN HANDLE FileHandle, + OUT PIO_STATUS_BLOCK IoStatusBlock, + OUT PVOID FileInformation, + IN ULONG Length, + IN FILE_INFORMATION_CLASS FileInformationClass); NTSYSAPI NTSTATUS @@ -15514,9 +11198,9 @@ NTSYSAPI NTSTATUS NTAPI ZwQuerySymbolicLinkObject( - IN HANDLE LinkHandle, - IN OUT PUNICODE_STRING LinkTarget, - OUT PULONG ReturnedLength OPTIONAL); + IN HANDLE LinkHandle, + IN OUT PUNICODE_STRING LinkTarget, + OUT PULONG ReturnedLength OPTIONAL); NTSYSAPI NTSTATUS @@ -15533,36 +11217,36 @@ NTSYSAPI NTSTATUS NTAPI ZwReadFile( - IN HANDLE FileHandle, - IN HANDLE Event OPTIONAL, - IN PIO_APC_ROUTINE ApcRoutine OPTIONAL, - IN PVOID ApcContext OPTIONAL, - OUT PIO_STATUS_BLOCK IoStatusBlock, - OUT PVOID Buffer, - IN ULONG Length, - IN PLARGE_INTEGER ByteOffset OPTIONAL, - IN PULONG Key OPTIONAL); + IN HANDLE FileHandle, + IN HANDLE Event OPTIONAL, + IN PIO_APC_ROUTINE ApcRoutine OPTIONAL, + IN PVOID ApcContext OPTIONAL, + OUT PIO_STATUS_BLOCK IoStatusBlock, + OUT PVOID Buffer, + IN ULONG Length, + IN PLARGE_INTEGER ByteOffset OPTIONAL, + IN PULONG Key OPTIONAL); NTSYSAPI NTSTATUS NTAPI ZwSetInformationFile( - IN HANDLE FileHandle, - OUT PIO_STATUS_BLOCK IoStatusBlock, - IN PVOID FileInformation, - IN ULONG Length, - IN FILE_INFORMATION_CLASS FileInformationClass); + IN HANDLE FileHandle, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN PVOID FileInformation, + IN ULONG Length, + IN FILE_INFORMATION_CLASS FileInformationClass); NTSYSAPI NTSTATUS NTAPI ZwSetValueKey( - IN HANDLE KeyHandle, - IN PUNICODE_STRING ValueName, - IN ULONG TitleIndex OPTIONAL, - IN ULONG Type, - IN PVOID Data OPTIONAL, - IN ULONG DataSize); + IN HANDLE KeyHandle, + IN PUNICODE_STRING ValueName, + IN ULONG TitleIndex OPTIONAL, + IN ULONG Type, + IN PVOID Data OPTIONAL, + IN ULONG DataSize); NTSYSAPI NTSTATUS @@ -15574,22 +11258,22 @@ NTSYSAPI NTSTATUS NTAPI ZwUnmapViewOfSection( - IN HANDLE ProcessHandle, - IN PVOID BaseAddress OPTIONAL); + IN HANDLE ProcessHandle, + IN PVOID BaseAddress OPTIONAL); NTSYSAPI NTSTATUS NTAPI ZwWriteFile( - IN HANDLE FileHandle, - IN HANDLE Event OPTIONAL, - IN PIO_APC_ROUTINE ApcRoutine OPTIONAL, - IN PVOID ApcContext OPTIONAL, - OUT PIO_STATUS_BLOCK IoStatusBlock, - IN PVOID Buffer, - IN ULONG Length, - IN PLARGE_INTEGER ByteOffset OPTIONAL, - IN PULONG Key OPTIONAL); + IN HANDLE FileHandle, + IN HANDLE Event OPTIONAL, + IN PIO_APC_ROUTINE ApcRoutine OPTIONAL, + IN PVOID ApcContext OPTIONAL, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN PVOID Buffer, + IN ULONG Length, + IN PLARGE_INTEGER ByteOffset OPTIONAL, + IN PULONG Key OPTIONAL); NTSYSAPI NTSTATUS @@ -15598,11 +11282,10 @@ ZwQueryFullAttributesFile( IN POBJECT_ATTRIBUTES ObjectAttributes, OUT PFILE_NETWORK_OPEN_INFORMATION FileInformation); +#endif -#endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */ - +#if (NTDDI_VERSION >= NTDDI_WIN2003) -#if (NTDDI_VERSION >= NTDDI_WS03) NTSYSCALLAPI NTSTATUS NTAPI @@ -15610,6 +11293,7 @@ ZwOpenEvent( OUT PHANDLE EventHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes); + #endif #if (NTDDI_VERSION >= NTDDI_VISTA) @@ -15936,13 +11620,10 @@ ZwSinglePhaseReject( IN PLARGE_INTEGER TmVirtualClock OPTIONAL); -#endif /* (NTDDI_VERSION >= NTDDI_VISTA) */ - +#endif #if (NTDDI_VERSION >= NTDDI_WIN7) - - NTSYSAPI NTSTATUS NTAPI @@ -16006,8 +11687,78 @@ ZwSetInformationKey( IN PVOID KeySetInformation, IN ULONG KeySetInformationLength); +#endif + +/****************************************************************************** + * Unsorted * + ******************************************************************************/ + +/* GUID Comparison */ +#ifndef __IID_ALIGNED__ +#define __IID_ALIGNED__ +#ifdef __cplusplus +inline int IsEqualGUIDAligned(REFGUID guid1, REFGUID guid2) +{ + return ( (*(PLONGLONG)(&guid1) == *(PLONGLONG)(&guid2)) && + (*((PLONGLONG)(&guid1) + 1) == *((PLONGLONG)(&guid2) + 1)) ); +} +#else +#define IsEqualGUIDAligned(guid1, guid2) \ + ( (*(PLONGLONG)(guid1) == *(PLONGLONG)(guid2)) && \ + (*((PLONGLONG)(guid1) + 1) == *((PLONGLONG)(guid2) + 1)) ) +#endif /* __cplusplus */ +#endif /* !__IID_ALIGNED__ */ + +typedef enum { + LT_DONT_CARE, + LT_LOWEST_LATENCY +} LATENCY_TIME; + +#define MAXIMUM_SUSPEND_COUNT MAXCHAR + +#define MAXIMUM_FILENAME_LENGTH 256 + +#define OBJ_NAME_PATH_SEPARATOR ((WCHAR)L'\\') + +#define OBJECT_TYPE_CREATE (0x0001) +#define OBJECT_TYPE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0x1) + +#define DIRECTORY_QUERY (0x0001) +#define DIRECTORY_TRAVERSE (0x0002) +#define DIRECTORY_CREATE_OBJECT (0x0004) +#define DIRECTORY_CREATE_SUBDIRECTORY (0x0008) +#define DIRECTORY_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0xF) + +#define EVENT_QUERY_STATE (0x0001) +#define EVENT_MODIFY_STATE (0x0002) +#define EVENT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x3) + +#define SEMAPHORE_QUERY_STATE (0x0001) +#define SEMAPHORE_MODIFY_STATE (0x0002) +#define SEMAPHORE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x3) + +#define SYMBOLIC_LINK_QUERY 0x0001 +#define SYMBOLIC_LINK_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0x1) + +#define DUPLICATE_CLOSE_SOURCE 0x00000001 +#define DUPLICATE_SAME_ACCESS 0x00000002 +#define DUPLICATE_SAME_ATTRIBUTES 0x00000004 + +/* Global debug flag */ +extern ULONG NtGlobalFlag; + +/* Service Start Types */ +#define SERVICE_BOOT_START 0x00000000 +#define SERVICE_SYSTEM_START 0x00000001 +#define SERVICE_AUTO_START 0x00000002 +#define SERVICE_DEMAND_START 0x00000003 +#define SERVICE_DISABLED 0x00000004 + +#ifndef _TRACEHANDLE_DEFINED +#define _TRACEHANDLE_DEFINED +typedef ULONG64 TRACEHANDLE, *PTRACEHANDLE; +#endif -#endif /* (NTDDI_VERSION >= NTDDI_WIN7) */ #ifdef __cplusplus diff --git a/reactos/include/ddk/wmilib.h b/reactos/include/ddk/wmilib.h index a0a5bdc5f22..22bb087a2a7 100644 --- a/reactos/include/ddk/wmilib.h +++ b/reactos/include/ddk/wmilib.h @@ -30,14 +30,6 @@ typedef NTSTATUS OUT PUNICODE_STRING *RegistryPath OPTIONAL, IN OUT PUNICODE_STRING MofResourceName, OUT PDEVICE_OBJECT *Pdo OPTIONAL); - -typedef NTSTATUS -(NTAPI *PWMI_FUNCTION_CONTROL) ( - IN OUT PDEVICE_OBJECT DeviceObject, - IN OUT PIRP Irp, - IN ULONG GuidIndex, - IN WMIENABLEDISABLECONTROL Function, - IN BOOLEAN Enable); typedef NTSTATUS (NTAPI *PWMI_QUERY_DATABLOCK) ( @@ -51,34 +43,42 @@ typedef NTSTATUS OUT PUCHAR Buffer OPTIONAL); typedef NTSTATUS -(NTAPI *PWMI_EXECUTE_METHOD) ( +(NTAPI *PWMI_SET_DATABLOCK) ( IN OUT PDEVICE_OBJECT DeviceObject, IN OUT PIRP Irp, IN ULONG GuidIndex, IN ULONG InstanceIndex, - IN ULONG MethodId, - IN ULONG InBufferSize, - IN ULONG OutBufferSize, - IN OUT PUCHAR Buffer); + IN ULONG BufferSize, + IN PUCHAR Buffer); typedef NTSTATUS -(NTAPI *PWMI_SET_DATABLOCK) ( +(NTAPI *PWMI_SET_DATAITEM) ( IN OUT PDEVICE_OBJECT DeviceObject, IN OUT PIRP Irp, IN ULONG GuidIndex, IN ULONG InstanceIndex, + IN ULONG DataItemId, IN ULONG BufferSize, IN PUCHAR Buffer); typedef NTSTATUS -(NTAPI *PWMI_SET_DATAITEM) ( +(NTAPI *PWMI_EXECUTE_METHOD) ( IN OUT PDEVICE_OBJECT DeviceObject, IN OUT PIRP Irp, IN ULONG GuidIndex, IN ULONG InstanceIndex, - IN ULONG DataItemId, - IN ULONG BufferSize, - IN PUCHAR Buffer); + IN ULONG MethodId, + IN ULONG InBufferSize, + IN ULONG OutBufferSize, + IN OUT PUCHAR Buffer); + +typedef NTSTATUS +(NTAPI *PWMI_FUNCTION_CONTROL) ( + IN OUT PDEVICE_OBJECT DeviceObject, + IN OUT PIRP Irp, + IN ULONG GuidIndex, + IN WMIENABLEDISABLECONTROL Function, + IN BOOLEAN Enable); typedef struct _WMILIB_CONTEXT { ULONG GuidCount; diff --git a/reactos/include/ddk/xmldsodid.h b/reactos/include/ddk/xmldsodid.h new file mode 100644 index 00000000000..d80d1463f92 --- /dev/null +++ b/reactos/include/ddk/xmldsodid.h @@ -0,0 +1,10 @@ + +#ifndef __XMLDSODID_H__ +#define __XMLDSODID_H__ +#define DISPID_XOBJ_MIN 0x00010000 +#define DISPID_XOBJ_MAX 0x0001FFFF +#define DISPID_XOBJ_BASE DISPID_XOBJ_MIN +#define DISPID_XMLDSO DISPID_XOBJ_BASE +#define DISPID_XMLDSO_DOCUMENT DISPID_XMLDSO + 1 +#define DISPID_XMLDSO_JAVADSOCOMPATIBLE DISPID_XMLDSO_DOCUMENT + 1 +#endif \ No newline at end of file diff --git a/reactos/include/ndk/ketypes.h b/reactos/include/ndk/ketypes.h index 67985379372..d4ae1c545f0 100644 --- a/reactos/include/ndk/ketypes.h +++ b/reactos/include/ndk/ketypes.h @@ -546,6 +546,17 @@ typedef enum _KAPC_ENVIRONMENT InsertApcEnvironment } KAPC_ENVIRONMENT; +// +// CPU Cache Types +// +typedef enum _PROCESSOR_CACHE_TYPE +{ + CacheUnified, + CacheInstruction, + CacheData, + CacheTrace, +} PROCESSOR_CACHE_TYPE; + // // PRCB DPC Data // @@ -566,6 +577,18 @@ typedef struct _PP_LOOKASIDE_LIST struct _GENERAL_LOOKASIDE *L; } PP_LOOKASIDE_LIST, *PPP_LOOKASIDE_LIST; +// +// CPU Cache Descriptor +// +typedef struct _CACHE_DESCRIPTOR +{ + UCHAR Level; + UCHAR Associativity; + USHORT LineSize; + ULONG Size; + PROCESSOR_CACHE_TYPE Type; +} CACHE_DESCRIPTOR, *PCACHE_DESCRIPTOR; + // // Architectural Types // diff --git a/reactos/include/ndk/peb_teb.h b/reactos/include/ndk/peb_teb.h index ec4b2d33617..38791b31a21 100644 --- a/reactos/include/ndk/peb_teb.h +++ b/reactos/include/ndk/peb_teb.h @@ -1,3 +1,4 @@ + #define PASTE2(x,y) x##y #define PASTE(x,y) PASTE2(x,y) @@ -18,10 +19,6 @@ #define GDI_HANDLE_BUFFER_SIZE 34 #endif -#if defined(_NTDDK_INCLUDED_) || defined(_NTIFS_) -#define PPEB PPEB_RENAMED -#endif - typedef struct STRUCT(_PEB) { BOOLEAN InheritedAddressSpace; @@ -155,7 +152,6 @@ typedef struct STRUCT(_PEB) #endif } STRUCT(PEB), *STRUCT(PPEB); -#undef PPEB #if defined(_WIN64) && !defined(EXPLICIT_32BIT) C_ASSERT(FIELD_OFFSET(STRUCT(PEB), Mutant) == 0x08); diff --git a/reactos/include/ndk/pstypes.h b/reactos/include/ndk/pstypes.h index 43b44680960..d423b7a2df2 100644 --- a/reactos/include/ndk/pstypes.h +++ b/reactos/include/ndk/pstypes.h @@ -703,7 +703,7 @@ typedef struct _PROCESS_BASIC_INFORMATION KPRIORITY BasePriority; ULONG_PTR UniqueProcessId; ULONG_PTR InheritedFromUniqueProcessId; -} PROCESS_BASIC_INFORMATION, *PPROCESS_BASIC_INFORMATION; +} PROCESS_BASIC_INFORMATION,*PPROCESS_BASIC_INFORMATION; typedef struct _PROCESS_ACCESS_TOKEN { diff --git a/reactos/include/ndk/rtlfuncs.h b/reactos/include/ndk/rtlfuncs.h index 18aa4749ad4..210dd2fffc5 100644 --- a/reactos/include/ndk/rtlfuncs.h +++ b/reactos/include/ndk/rtlfuncs.h @@ -1690,18 +1690,6 @@ RtlDuplicateUnicodeString( OUT PUNICODE_STRING DestinationString ); -// -// Memory Functions -// -NTSYSAPI -VOID -NTAPI -RtlFillMemoryUlong( - IN PVOID Destination, - IN ULONG Length, - IN ULONG Fill -); - #endif NTSYSAPI @@ -1924,6 +1912,18 @@ RtlLookupAtomInAtomTable( OUT PRTL_ATOM Atom ); +// +// Memory Functions +// +NTSYSAPI +VOID +NTAPI +RtlFillMemoryUlong( + IN PVOID Destination, + IN ULONG Length, + IN ULONG Fill +); + // // Process Management Functions // diff --git a/reactos/include/psdk/atsmedia.h b/reactos/include/psdk/atsmedia.h deleted file mode 100644 index 6f22e570d82..00000000000 --- a/reactos/include/psdk/atsmedia.h +++ /dev/null @@ -1,7 +0,0 @@ -#pragma once - -#define BDANETWORKTYPE_ATSC DEFINE_GUIDNAMED(BDANETWORKTYPE_ATSC) - -#define STATIC_BDANETWORKTYPE_ATSC 0x71985F51, 0x1CA1, 0x11D3, 0x9C, 0xC8, 0x0, 0xC0, 0x4F, 0x79, 0x71, 0xE0 - -DEFINE_GUIDSTRUCT("71985F51-1CA1-11D3-9CC8-00C04F7971E0", BDANETWORKTYPE_ATSC); diff --git a/reactos/include/psdk/batclass.h b/reactos/include/psdk/batclass.h index 24fc0892944..457212519d0 100644 --- a/reactos/include/psdk/batclass.h +++ b/reactos/include/psdk/batclass.h @@ -180,11 +180,11 @@ typedef struct _BATTERY_WAIT_STATUS { typedef NTSTATUS -(NTAPI *BCLASS_DISABLE_STATUS_NOTIFY)( +(DDKAPI*BCLASS_DISABLE_STATUS_NOTIFY)( IN PVOID Context); typedef NTSTATUS -(NTAPI *BCLASS_QUERY_INFORMATION)( +(DDKAPI*BCLASS_QUERY_INFORMATION)( IN PVOID Context, IN ULONG BatteryTag, IN BATTERY_QUERY_INFORMATION_LEVEL Level, @@ -194,25 +194,25 @@ typedef NTSTATUS OUT PULONG ReturnedLength); typedef NTSTATUS -(NTAPI *BCLASS_QUERY_STATUS)( +(DDKAPI*BCLASS_QUERY_STATUS)( IN PVOID Context, IN ULONG BatteryTag, OUT PBATTERY_STATUS BatteryStatus); typedef NTSTATUS -(NTAPI *BCLASS_QUERY_TAG)( +(DDKAPI*BCLASS_QUERY_TAG)( IN PVOID Context, OUT PULONG BatteryTag); typedef NTSTATUS -(NTAPI *BCLASS_SET_INFORMATION)( +(DDKAPI*BCLASS_SET_INFORMATION)( IN PVOID Context, IN ULONG BatteryTag, IN BATTERY_SET_INFORMATION_LEVEL Level, IN PVOID Buffer OPTIONAL); typedef NTSTATUS -(NTAPI *BCLASS_SET_STATUS_NOTIFY)( +(DDKAPI*BCLASS_SET_STATUS_NOTIFY)( IN PVOID Context, IN ULONG BatteryTag, IN PBATTERY_NOTIFY BatteryNotify); @@ -239,21 +239,21 @@ typedef struct _BATTERY_MINIPORT_INFO { BCLASSAPI NTSTATUS -NTAPI +DDKAPI BatteryClassInitializeDevice( IN PBATTERY_MINIPORT_INFO MiniportInfo, IN PVOID *ClassData); BCLASSAPI NTSTATUS -NTAPI +DDKAPI BatteryClassIoctl( IN PVOID ClassData, IN PIRP Irp); BCLASSAPI NTSTATUS -NTAPI +DDKAPI BatteryClassQueryWmiDataBlock( IN PVOID ClassData, IN PDEVICE_OBJECT DeviceObject, @@ -265,13 +265,13 @@ BatteryClassQueryWmiDataBlock( BCLASSAPI NTSTATUS -NTAPI +DDKAPI BatteryClassStatusNotify( IN PVOID ClassData); BCLASSAPI NTSTATUS -NTAPI +DDKAPI BatteryClassSystemControl( IN PVOID ClassData, IN PVOID WmiLibContext, /* PWMILIB_CONTEXT */ @@ -281,7 +281,7 @@ BatteryClassSystemControl( BCLASSAPI NTSTATUS -NTAPI +DDKAPI BatteryClassUnload( IN PVOID ClassData); diff --git a/reactos/include/psdk/cfgmgr32.h b/reactos/include/psdk/cfgmgr32.h deleted file mode 100644 index 4623a65c11f..00000000000 --- a/reactos/include/psdk/cfgmgr32.h +++ /dev/null @@ -1,3206 +0,0 @@ -/* - * cfgmgr32.h - * - * PnP configuration manager - * - * This file is part of the w32api package. - * - * Contributors: - * Created by Casper S. Hornstrup - * - * THIS SOFTWARE IS NOT COPYRIGHTED - * - * This source code is offered for use in the public domain. You may - * use, modify or distribute it freely. - * - * This code is distributed in the hope that it will be useful but - * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY - * DISCLAIMED. This includes but is not limited to warranties of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - * - */ - -#pragma once - -#define _CFGMGR32_H_ - -#include - -#ifndef GUID_DEFINED -#include -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -#if defined(_CFGMGR32_) -#define CMAPI -#else -#define CMAPI DECLSPEC_IMPORT -#endif - -typedef CONST VOID *PCVOID; - -#define MAX_CONFIG_VALUE 9999 -#define MAX_INSTANCE_VALUE 9999 - -#define MAX_DEVICE_ID_LEN 200 -#define MAX_DEVNODE_ID_LEN MAX_DEVICE_ID_LEN - -#define MAX_CLASS_NAME_LEN 32 -#define MAX_GUID_STRING_LEN 39 -#define MAX_PROFILE_LEN 80 - -#define MAX_MEM_REGISTERS 9 -#define MAX_IO_PORTS 20 -#define MAX_IRQS 7 -#define MAX_DMA_CHANNELS 7 - -#define DWORD_MAX 0xffffffffUL -#define DWORDLONG_MAX 0xffffffffffffffffui64 - -#define CONFIGMG_VERSION 0x0400 - -#ifdef NT_INCLUDED - -typedef unsigned __int64 DWORDLONG; -typedef DWORDLONG *PDWORDLONG; - -#endif /* NT_INCLUDED */ - -typedef DWORD RETURN_TYPE; -typedef RETURN_TYPE CONFIGRET; - -typedef DWORD DEVNODE, DEVINST; -typedef DEVNODE *PDEVNODE, *PDEVINST; - -typedef CHAR *DEVNODEID_A, *DEVINSTID_A; -typedef WCHAR *DEVNODEID_W, *DEVINSTID_W; - -#ifdef UNICODE -typedef DEVNODEID_W DEVNODEID; -typedef DEVINSTID_W DEVINSTID; -#else -typedef DEVNODEID_A DEVNODEID; -typedef DEVINSTID_A DEVINSTID; -#endif - -typedef DWORD_PTR LOG_CONF; -typedef LOG_CONF *PLOG_CONF; - -typedef DWORD_PTR RES_DES; -typedef RES_DES *PRES_DES; - -typedef ULONG RESOURCEID; -typedef RESOURCEID *PRESOURCEID; - -typedef ULONG PRIORITY; -typedef PRIORITY *PPRIORITY; - -typedef DWORD_PTR RANGE_LIST; -typedef RANGE_LIST *PRANGE_LIST; - -typedef DWORD_PTR RANGE_ELEMENT; -typedef RANGE_ELEMENT *PRANGE_ELEMENT; - -typedef HANDLE HMACHINE; -typedef HMACHINE *PHMACHINE; - -typedef ULONG_PTR CONFLICT_LIST; -typedef CONFLICT_LIST *PCONFLICT_LIST; - -typedef struct _CONFLICT_DETAILS_A { - ULONG CD_ulSize; - ULONG CD_ulMask; - DEVINST CD_dnDevInst; - RES_DES CD_rdResDes; - ULONG CD_ulFlags; - CHAR CD_szDescription[MAX_PATH]; -} CONFLICT_DETAILS_A, *PCONFLICT_DETAILS_A; - -typedef struct _CONFLICT_DETAILS_W { - ULONG CD_ulSize; - ULONG CD_ulMask; - DEVINST CD_dnDevInst; - RES_DES CD_rdResDes; - ULONG CD_ulFlags; - WCHAR CD_szDescription[MAX_PATH]; -} CONFLICT_DETAILS_W, *PCONFLICT_DETAILS_W; - -#ifdef UNICODE -typedef CONFLICT_DETAILS_W CONFLICT_DETAILS; -typedef PCONFLICT_DETAILS_W PCONFLICT_DETAILS; -#else -typedef CONFLICT_DETAILS_A CONFLICT_DETAILS; -typedef PCONFLICT_DETAILS_A PCONFLICT_DETAILS; -#endif - -/* CONFLICT_DETAILS.CD.ulMask constants */ -#define CM_CDMASK_DEVINST 0x00000001 -#define CM_CDMASK_RESDES 0x00000002 -#define CM_CDMASK_FLAGS 0x00000004 -#define CM_CDMASK_DESCRIPTION 0x00000008 -#define CM_CDMASK_VALID 0x0000000F - -/* CONFLICT_DETAILS.CD.ulFlags constants */ -#define CM_CDFLAGS_DRIVER 0x00000001 -#define CM_CDFLAGS_ROOT_OWNED 0x00000002 -#define CM_CDFLAGS_RESERVED 0x00000004 - -typedef ULONG REGDISPOSITION; - -#include - -/* MEM_DES.MD_Flags constants */ -#define mMD_MemoryType 0x1 -#define fMD_MemoryType mMD_MemoryType -#define fMD_ROM 0x0 -#define fMD_RAM 0x1 - -#define mMD_32_24 0x2 -#define fMD_32_24 mMD_32_24 -#define fMD_24 0x0 -#define fMD_32 0x2 - -#define mMD_Prefetchable 0x4 -#define fMD_Prefetchable mMD_Prefetchable -#define fMD_Pref mMD_Prefetchable -#define fMD_PrefetchDisallowed 0x0 -#define fMD_PrefetchAllowed 0x4 - -#define mMD_Readable 0x8 -#define fMD_Readable mMD_Readable -#define fMD_ReadAllowed 0x0 -#define fMD_ReadDisallowed 0x8 - -#define mMD_CombinedWrite 0x10 -#define fMD_CombinedWrite mMD_CombinedWrite -#define fMD_CombinedWriteDisallowed 0x0 -#define fMD_CombinedWriteAllowed 0x10 - -#define mMD_Cacheable 0x20 -#define fMD_NonCacheable 0x0 -#define fMD_Cacheable 0x20 -#define fMD_WINDOW_DECODE 0x40 -#define fMD_MEMORY_BAR 0x80 - -typedef struct Mem_Range_s { - DWORDLONG MR_Align; - ULONG MR_nBytes; - DWORDLONG MR_Min; - DWORDLONG MR_Max; - DWORD MR_Flags; - DWORD MR_Reserved; -} MEM_RANGE, *PMEM_RANGE; - -typedef struct Mem_Des_s { - DWORD MD_Count; - DWORD MD_Type; - DWORDLONG MD_Alloc_Base; - DWORDLONG MD_Alloc_End; - DWORD MD_Flags; - DWORD MD_Reserved; -} MEM_DES, *PMEM_DES; - -typedef struct Mem_Resource_s { - MEM_DES MEM_Header; - MEM_RANGE MEM_Data[ANYSIZE_ARRAY]; -} MEM_RESOURCE, *PMEM_RESOURCE; - -#define MType_Range sizeof(MEM_RANGE) - -typedef struct Mem_Large_Range_s { - DWORDLONG MLR_Align; - ULONGLONG MLR_nBytes; - DWORDLONG MLR_Min; - DWORDLONG MLR_Max; - DWORD MLR_Flags; - DWORD MLR_Reserved; -} MEM_LARGE_RANGE, *PMEM_LARGE_RANGE; - -typedef struct Mem_Large_Des_s { - DWORD MLD_Count; - DWORD MLD_Type; - DWORDLONG MLD_Alloc_Base; - DWORDLONG MLD_Alloc_End; - DWORD MLD_Flags; - DWORD MLD_Reserved; -} MEM_LARGE_DES, *PMEM_LARGE_DES; - -typedef struct Mem_Large_Resource_s { - MEM_LARGE_DES MEM_LARGE_Header; - MEM_LARGE_RANGE MEM_LARGE_Data[ANYSIZE_ARRAY]; -} MEM_LARGE_RESOURCE, *PMEM_LARGE_RESOURCE; - -#define MLType_Range sizeof(struct Mem_Large_Range_s) - -/* IO_DES.Type constants and masks */ -#define fIOD_PortType 0x1 -#define fIOD_Memory 0x0 -#define fIOD_IO 0x1 -#define fIOD_DECODE 0x00fc -#define fIOD_10_BIT_DECODE 0x0004 -#define fIOD_12_BIT_DECODE 0x0008 -#define fIOD_16_BIT_DECODE 0x0010 -#define fIOD_POSITIVE_DECODE 0x0020 -#define fIOD_PASSIVE_DECODE 0x0040 -#define fIOD_WINDOW_DECODE 0x0080 -#define fIOD_PORT_BAR 0x0100 - -/* IO_RANGE.IOR_Alias constants */ -#define IO_ALIAS_10_BIT_DECODE 0x00000004 -#define IO_ALIAS_12_BIT_DECODE 0x00000010 -#define IO_ALIAS_16_BIT_DECODE 0x00000000 -#define IO_ALIAS_POSITIVE_DECODE 0x000000FF - -typedef struct IO_Range_s { - DWORDLONG IOR_Align; - DWORD IOR_nPorts; - DWORDLONG IOR_Min; - DWORDLONG IOR_Max; - DWORD IOR_RangeFlags; - DWORDLONG IOR_Alias; -} IO_RANGE, *PIO_RANGE; - -typedef struct IO_Des_s { - DWORD IOD_Count; - DWORD IOD_Type; - DWORDLONG IOD_Alloc_Base; - DWORDLONG IOD_Alloc_End; - DWORD IOD_DesFlags; -} IO_DES, *PIO_DES; - -typedef struct IO_Resource_s { - IO_DES IO_Header; - IO_RANGE IO_Data[ANYSIZE_ARRAY]; -} IO_RESOURCE, *PIO_RESOURCE; - -#define IOA_Local 0xff - -#define IOType_Range sizeof(IO_RANGE) - -/* DMA_DES.DD_Flags constants and masks */ -#define mDD_Width 0x3 -#define fDD_BYTE 0x0 -#define fDD_WORD 0x1 -#define fDD_DWORD 0x2 -#define fDD_BYTE_AND_WORD 0x3 - -#define mDD_BusMaster 0x4 -#define fDD_NoBusMaster 0x0 -#define fDD_BusMaster 0x4 - -#define mDD_Type 0x18 -#define fDD_TypeStandard 0x00 -#define fDD_TypeA 0x08 -#define fDD_TypeB 0x10 -#define fDD_TypeF 0x18 - -typedef struct DMA_Des_s { - DWORD DD_Count; - DWORD DD_Type; - DWORD DD_Flags; - ULONG DD_Alloc_Chan; -} DMA_DES, *PDMA_DES; - -typedef struct DMA_Range_s { - ULONG DR_Min; - ULONG DR_Max; - ULONG DR_Flags; -} DMA_RANGE, *PDMA_RANGE; - -#define DType_Range sizeof(DMA_RANGE) - -typedef struct DMA_Resource_s { - DMA_DES DMA_Header; - DMA_RANGE DMA_Data[ANYSIZE_ARRAY]; -} DMA_RESOURCE, *PDMA_RESOURCE; - -/* IRQ_DES.IRQD_flags constants */ -#define mIRQD_Share 0x1 -#define fIRQD_Exclusive 0x0 -#define fIRQD_Share 0x1 - -#define fIRQD_Share_Bit 0 -#define fIRQD_Level_Bit 1 - -#define mIRQD_Edge_Level 0x2 -#define fIRQD_Level 0x0 -#define fIRQD_Edge 0x2 - -typedef struct IRQ_Range_s { - ULONG IRQR_Min; - ULONG IRQR_Max; -#if defined(NT_PROCESSOR_GROUPS) - USHORT IRQR_Flags; - USHORT IRQR_Rsvdz; -#else - ULONG IRQR_Flags; -#endif -} IRQ_RANGE, *PIRQ_RANGE; - -typedef struct IRQ_Des_32_s { - DWORD IRQD_Count; - DWORD IRQD_Type; -#if defined(NT_PROCESSOR_GROUPS) - USHORT IRQD_Flags; - USHORT IRQD_Group; -#else - DWORD IRQD_Flags; -#endif - ULONG IRQD_Alloc_Num; - ULONG32 IRQD_Affinity; -} IRQ_DES_32, *PIRQ_DES_32; - -typedef struct IRQ_Des_64_s { - DWORD IRQD_Count; - DWORD IRQD_Type; -#if defined(NT_PROCESSOR_GROUPS) - USHORT IRQD_Flags; - USHORT IRQD_Group; -#else - DWORD IRQD_Flags; -#endif - ULONG IRQD_Alloc_Num; - ULONG64 IRQD_Affinity; -} IRQ_DES_64, *PIRQ_DES_64; - -#ifdef _WIN64 -typedef IRQ_DES_64 IRQ_DES; -typedef PIRQ_DES_64 PIRQ_DES; -#else -typedef IRQ_DES_32 IRQ_DES; -typedef PIRQ_DES_32 PIRQ_DES; -#endif - -typedef struct IRQ_Resource_32_s { - IRQ_DES_32 IRQ_Header; - IRQ_RANGE IRQ_Data[ANYSIZE_ARRAY]; -} IRQ_RESOURCE_32, *PIRQ_RESOURCE_32; - -typedef struct IRQ_Resource_64_s { - IRQ_DES_64 IRQ_Header; - IRQ_RANGE IRQ_Data[ANYSIZE_ARRAY]; -} IRQ_RESOURCE_64, *PIRQ_RESOURCE_64; - -#ifdef _WIN64 -typedef IRQ_RESOURCE_64 IRQ_RESOURCE; -typedef PIRQ_RESOURCE_64 PIRQ_RESOURCE; -#else -typedef IRQ_RESOURCE_32 IRQ_RESOURCE; -typedef PIRQ_RESOURCE_32 PIRQ_RESOURCE; -#endif - -#define IRQType_Range sizeof(IRQ_RANGE) - -#if (WINVER >= _WIN32_WINNT_WINXP) -#define CM_RESDES_WIDTH_DEFAULT 0x00000000 -#define CM_RESDES_WIDTH_32 0x00000001 -#define CM_RESDES_WIDTH_64 0x00000002 -#define CM_RESDES_WIDTH_BITS 0x00000003 -#endif - -typedef struct DevPrivate_Range_s { - DWORD PR_Data1; - DWORD PR_Data2; - DWORD PR_Data3; -} DEVPRIVATE_RANGE, *PDEVPRIVATE_RANGE; - -typedef struct DevPrivate_Des_s { - DWORD PD_Count; - DWORD PD_Type; - DWORD PD_Data1; - DWORD PD_Data2; - DWORD PD_Data3; - DWORD PD_Flags; -} DEVPRIVATE_DES, *PDEVPRIVATE_DES; - -#define PType_Range sizeof(DEVPRIVATE_RANGE) - -typedef struct DevPrivate_Resource_s { - DEVPRIVATE_DES PRV_Header; - DEVPRIVATE_RANGE PRV_Data[ANYSIZE_ARRAY]; -} DEVPRIVATE_RESOURCE, *PDEVPRIVATE_RESOURCE; - -typedef struct CS_Des_s { - DWORD CSD_SignatureLength; - DWORD CSD_LegacyDataOffset; - DWORD CSD_LegacyDataSize; - DWORD CSD_Flags; - GUID CSD_ClassGuid; - BYTE CSD_Signature[ANYSIZE_ARRAY]; -} CS_DES, *PCS_DES; - -typedef struct CS_Resource_s { - CS_DES CS_Header; -} CS_RESOURCE, *PCS_RESOURCE; - -#define mPCD_IO_8_16 0x1 -#define fPCD_IO_8 0x0 -#define fPCD_IO_16 0x1 -#define mPCD_MEM_8_16 0x2 -#define fPCD_MEM_8 0x0 -#define fPCD_MEM_16 0x2 -#define mPCD_MEM_A_C 0xC -#define fPCD_MEM1_A 0x4 -#define fPCD_MEM2_A 0x8 -#define fPCD_IO_ZW_8 0x10 -#define fPCD_IO_SRC_16 0x20 -#define fPCD_IO_WS_16 0x40 -#define mPCD_MEM_WS 0x300 -#define fPCD_MEM_WS_ONE 0x100 -#define fPCD_MEM_WS_TWO 0x200 -#define fPCD_MEM_WS_THREE 0x300 - -#if (WINVER >= _WIN32_WINNT_WINXP) - -#define fPCD_MEM_A 0x4 - -#define fPCD_ATTRIBUTES_PER_WINDOW 0x8000 - -#define fPCD_IO1_16 0x00010000 -#define fPCD_IO1_ZW_8 0x00020000 -#define fPCD_IO1_SRC_16 0x00040000 -#define fPCD_IO1_WS_16 0x00080000 - -#define fPCD_IO2_16 0x00100000 -#define fPCD_IO2_ZW_8 0x00200000 -#define fPCD_IO2_SRC_16 0x00400000 -#define fPCD_IO2_WS_16 0x00800000 - -#define mPCD_MEM1_WS 0x03000000 -#define fPCD_MEM1_WS_ONE 0x01000000 -#define fPCD_MEM1_WS_TWO 0x02000000 -#define fPCD_MEM1_WS_THREE 0x03000000 -#define fPCD_MEM1_16 0x04000000 - -#define mPCD_MEM2_WS 0x30000000 -#define fPCD_MEM2_WS_ONE 0x10000000 -#define fPCD_MEM2_WS_TWO 0x20000000 -#define fPCD_MEM2_WS_THREE 0x30000000 -#define fPCD_MEM2_16 0x40000000 - -#define PCD_MAX_MEMORY 2 -#define PCD_MAX_IO 2 - -#endif /* (WINVER >= _WIN32_WINNT_WINXP) */ - -typedef struct PcCard_Des_s { - DWORD PCD_Count; - DWORD PCD_Type; - DWORD PCD_Flags; - BYTE PCD_ConfigIndex; - BYTE PCD_Reserved[3]; - DWORD PCD_MemoryCardBase1; - DWORD PCD_MemoryCardBase2; -#if (WINVER >= _WIN32_WINNT_WINXP) - DWORD PCD_MemoryCardBase[PCD_MAX_MEMORY]; - WORD PCD_MemoryFlags[PCD_MAX_MEMORY]; - BYTE PCD_IoFlags[PCD_MAX_IO]; -#endif -} PCCARD_DES, *PPCCARD_DES; - -typedef struct PcCard_Resource_s { - PCCARD_DES PcCard_Header; -} PCCARD_RESOURCE, *PPCCARD_RESOURCE; - -/* MFCARD_DES.PMF_Flags constants */ -#define fPMF_AUDIO_ENABLE 0x8 -#define mPMF_AUDIO_ENABLE fPMF_AUDIO_ENABLE - -typedef struct MfCard_Des_s { - DWORD PMF_Count; - DWORD PMF_Type; - DWORD PMF_Flags; - BYTE PMF_ConfigOptions; - BYTE PMF_IoResourceIndex; - BYTE PMF_Reserved[2]; - DWORD PMF_ConfigRegisterBase; -} MFCARD_DES, *PMFCARD_DES; - -typedef struct MfCard_Resource_s { - MFCARD_DES MfCard_Header; -} MFCARD_RESOURCE, *PMFCARD_RESOURCE; - -typedef struct BusNumber_Des_s { - DWORD BUSD_Count; - DWORD BUSD_Type; - DWORD BUSD_Flags; - ULONG BUSD_Alloc_Base; - ULONG BUSD_Alloc_End; -} BUSNUMBER_DES, *PBUSNUMBER_DES; - -typedef struct BusNumber_Range_s { - ULONG BUSR_Min; - ULONG BUSR_Max; - ULONG BUSR_nBusNumbers; - ULONG BUSR_Flags; -} BUSNUMBER_RANGE, *PBUSNUMBER_RANGE; - -#define BusNumberType_Range sizeof(BUSNUMBER_RANGE) - -typedef struct BusNumber_Resource_s { - BUSNUMBER_DES BusNumber_Header; - BUSNUMBER_RANGE BusNumber_Data[ANYSIZE_ARRAY]; -} BUSNUMBER_RESOURCE, *PBUSNUMBER_RESOURCE; - -#define CM_HWPI_NOT_DOCKABLE 0x00000000 -#define CM_HWPI_UNDOCKED 0x00000001 -#define CM_HWPI_DOCKED 0x00000002 - -typedef struct HWProfileInfo_sA { - ULONG HWPI_ulHWProfile; - CHAR HWPI_szFriendlyName[MAX_PROFILE_LEN]; - DWORD HWPI_dwFlags; -} HWPROFILEINFO_A, *PHWPROFILEINFO_A; - -typedef struct HWProfileInfo_sW { - ULONG HWPI_ulHWProfile; - WCHAR HWPI_szFriendlyName[MAX_PROFILE_LEN]; - DWORD HWPI_dwFlags; -} HWPROFILEINFO_W, *PHWPROFILEINFO_W; - -#ifdef UNICODE -typedef HWPROFILEINFO_W HWPROFILEINFO; -typedef PHWPROFILEINFO_W PHWPROFILEINFO; -#else -typedef HWPROFILEINFO_A HWPROFILEINFO; -typedef PHWPROFILEINFO_A PHWPROFILEINFO; -#endif - -#include - -#define ResType_All 0x00000000 -#define ResType_None 0x00000000 -#define ResType_Mem 0x00000001 -#define ResType_IO 0x00000002 -#define ResType_DMA 0x00000003 -#define ResType_IRQ 0x00000004 -#define ResType_DoNotUse 0x00000005 -#define ResType_BusNumber 0x00000006 -#define ResType_MemLarge 0x00000007 -#define ResType_MAX 0x00000007 -#define ResType_Ignored_Bit 0x00008000 -#define ResType_ClassSpecific 0x0000FFFF -#define ResType_Reserved 0x00008000 -#define ResType_DevicePrivate 0x00008001 -#define ResType_PcCardConfig 0x00008002 -#define ResType_MfCardConfig 0x00008003 - -#define CM_ADD_RANGE_ADDIFCONFLICT 0x00000000 -#define CM_ADD_RANGE_DONOTADDIFCONFLICT 0x00000001 -#define CM_ADD_RANGE_BITS 0x00000001 - -#define BASIC_LOG_CONF 0x00000000 -#define FILTERED_LOG_CONF 0x00000001 -#define ALLOC_LOG_CONF 0x00000002 -#define BOOT_LOG_CONF 0x00000003 -#define FORCED_LOG_CONF 0x00000004 -#define OVERRIDE_LOG_CONF 0x00000005 -#define NUM_LOG_CONF 0x00000006 -#define LOG_CONF_BITS 0x00000007 - -#define PRIORITY_EQUAL_FIRST 0x00000008 -#define PRIORITY_EQUAL_LAST 0x00000000 -#define PRIORITY_BIT 0x00000008 - -#define RegDisposition_OpenAlways 0x00000000 -#define RegDisposition_OpenExisting 0x00000001 -#define RegDisposition_Bits 0x00000001 - -/* CM_Add_ID.ulFlags constants */ -#define CM_ADD_ID_HARDWARE 0x00000000 -#define CM_ADD_ID_COMPATIBLE 0x00000001 -#define CM_ADD_ID_BITS 0x00000001 - -/* Flags for CM_Create_DevNode[_Ex].ulFlags constants */ -#define CM_CREATE_DEVNODE_NORMAL 0x00000000 -#define CM_CREATE_DEVNODE_NO_WAIT_INSTALL 0x00000001 -#define CM_CREATE_DEVNODE_PHANTOM 0x00000002 -#define CM_CREATE_DEVNODE_GENERATE_ID 0x00000004 -#define CM_CREATE_DEVNODE_DO_NOT_INSTALL 0x00000008 -#define CM_CREATE_DEVNODE_BITS 0x0000000F - -#define CM_CREATE_DEVINST_NORMAL CM_CREATE_DEVNODE_NORMAL -#define CM_CREATE_DEVINST_NO_WAIT_INSTALL CM_CREATE_DEVNODE_NO_WAIT_INSTALL -#define CM_CREATE_DEVINST_PHANTOM CM_CREATE_DEVNODE_PHANTOM -#define CM_CREATE_DEVINST_GENERATE_ID CM_CREATE_DEVNODE_GENERATE_ID -#define CM_CREATE_DEVINST_DO_NOT_INSTALL CM_CREATE_DEVNODE_DO_NOT_INSTALL -#define CM_CREATE_DEVINST_BITS CM_CREATE_DEVNODE_BITS - -/* Flags for CM_Delete_Class_Key.ulFlags constants */ -#define CM_DELETE_CLASS_ONLY 0x00000000 -#define CM_DELETE_CLASS_SUBKEYS 0x00000001 -#if (WINVER >= _WIN32_WINNT_VISTA) -#define CM_DELETE_CLASS_INTERFACE 0x00000002 -#endif -#define CM_DELETE_CLASS_BITS 0x00000003 - -/* CM_Run_Detection[_Ex].ulFlags constants */ -#define CM_DETECT_NEW_PROFILE 0x00000001 -#define CM_DETECT_CRASHED 0x00000002 -#define CM_DETECT_HWPROF_FIRST_BOOT 0x00000004 -#define CM_DETECT_RUN 0x80000000 -#define CM_DETECT_BITS 0x80000007 - -#define CM_DISABLE_POLITE 0x00000000 -#define CM_DISABLE_ABSOLUTE 0x00000001 -#define CM_DISABLE_HARDWARE 0x00000002 -#define CM_DISABLE_UI_NOT_OK 0x00000004 -#define CM_DISABLE_BITS 0x00000007 - -#define CM_GETIDLIST_FILTER_NONE 0x00000000 -#define CM_GETIDLIST_FILTER_ENUMERATOR 0x00000001 -#define CM_GETIDLIST_FILTER_SERVICE 0x00000002 -#define CM_GETIDLIST_FILTER_EJECTRELATIONS 0x00000004 -#define CM_GETIDLIST_FILTER_REMOVALRELATIONS 0x00000008 -#define CM_GETIDLIST_FILTER_POWERRELATIONS 0x00000010 -#define CM_GETIDLIST_FILTER_BUSRELATIONS 0x00000020 -#define CM_GETIDLIST_DONOTGENERATE 0x10000040 -#if (WINVER <= _WIN32_WINNT_VISTA) -#define CM_GETIDLIST_FILTER_BITS 0x1000007F -#endif -#if (WINVER >= _WIN32_WINNT_WIN7) -#define CM_GETIDLIST_FILTER_TRANSPORTRELATIONS 0x00000080 -#define CM_GETIDLIST_FILTER_PRESENT 0x00000100 -#define CM_GETIDLIST_FILTER_CLASS 0x00000200 -#define CM_GETIDLIST_FILTER_BITS 0x100003FF -#endif - -#define CM_GET_DEVICE_INTERFACE_LIST_PRESENT 0x00000000 -#define CM_GET_DEVICE_INTERFACE_LIST_ALL_DEVICES 0x00000001 -#define CM_GET_DEVICE_INTERFACE_LIST_BITS 0x00000001 - -#define CM_DRP_DEVICEDESC 0x00000001 -#define CM_DRP_HARDWAREID 0x00000002 -#define CM_DRP_COMPATIBLEIDS 0x00000003 -#define CM_DRP_UNUSED0 0x00000004 -#define CM_DRP_SERVICE 0x00000005 -#define CM_DRP_UNUSED1 0x00000006 -#define CM_DRP_UNUSED2 0x00000007 -#define CM_DRP_CLASS 0x00000008 -#define CM_DRP_CLASSGUID 0x00000009 -#define CM_DRP_DRIVER 0x0000000A -#define CM_DRP_CONFIGFLAGS 0x0000000B -#define CM_DRP_MFG 0x0000000C -#define CM_DRP_FRIENDLYNAME 0x0000000D -#define CM_DRP_LOCATION_INFORMATION 0x0000000E -#define CM_DRP_PHYSICAL_DEVICE_OBJECT_NAME 0x0000000F -#define CM_DRP_CAPABILITIES 0x00000010 -#define CM_DRP_UI_NUMBER 0x00000011 -#define CM_DRP_UPPERFILTERS 0x00000012 -#if (WINVER >= _WIN32_WINNT_VISTA) -#define CM_CRP_UPPERFILTERS CM_DRP_UPPERFILTERS -#endif -#define CM_DRP_LOWERFILTERS 0x00000013 -#if (WINVER >= _WIN32_WINNT_VISTA) -#define CM_CRP_LOWERFILTERS CM_DRP_LOWERFILTERS -#endif -#define CM_DRP_BUSTYPEGUID 0x00000014 -#define CM_DRP_LEGACYBUSTYPE 0x00000015 -#define CM_DRP_BUSNUMBER 0x00000016 -#define CM_DRP_ENUMERATOR_NAME 0x00000017 -#define CM_DRP_SECURITY 0x00000018 -#define CM_CRP_SECURITY CM_DRP_SECURITY -#define CM_DRP_SECURITY_SDS 0x00000019 -#define CM_CRP_SECURITY_SDS CM_DRP_SECURITY_SDS -#define CM_DRP_DEVTYPE 0x0000001A -#define CM_CRP_DEVTYPE CM_DRP_DEVTYPE -#define CM_DRP_EXCLUSIVE 0x0000001B -#define CM_CRP_EXCLUSIVE CM_DRP_EXCLUSIVE -#define CM_DRP_CHARACTERISTICS 0x0000001C -#define CM_CRP_CHARACTERISTICS CM_DRP_CHARACTERISTICS -#define CM_DRP_ADDRESS 0x0000001D -#define CM_DRP_UI_NUMBER_DESC_FORMAT 0x0000001E -#if (WINVER >= _WIN32_WINNT_WINXP) -#define CM_DRP_DEVICE_POWER_DATA 0x0000001F -#define CM_DRP_REMOVAL_POLICY 0x00000020 -#define CM_DRP_REMOVAL_POLICY_HW_DEFAULT 0x00000021 -#define CM_DRP_REMOVAL_POLICY_OVERRIDE 0x00000022 -#define CM_DRP_INSTALL_STATE 0x00000023 -#endif -#if (WINVER >= _WIN32_WINNT_WS03) -#define CM_DRP_LOCATION_PATHS 0x00000024 -#endif -#if (WINVER >= _WIN32_WINNT_WIN7) -#define CM_DRP_BASE_CONTAINERID 0x00000025 -#endif -#define CM_DRP_MIN 0x00000001 -#define CM_CRP_MIN CM_DRP_MIN -#define CM_DRP_MAX 0x00000025 -#define CM_CRP_MAX CM_DRP_MAX - -#define CM_DEVCAP_LOCKSUPPORTED 0x00000001 -#define CM_DEVCAP_EJECTSUPPORTED 0x00000002 -#define CM_DEVCAP_REMOVABLE 0x00000004 -#define CM_DEVCAP_DOCKDEVICE 0x00000008 -#define CM_DEVCAP_UNIQUEID 0x00000010 -#define CM_DEVCAP_SILENTINSTALL 0x00000020 -#define CM_DEVCAP_RAWDEVICEOK 0x00000040 -#define CM_DEVCAP_SURPRISEREMOVALOK 0x00000080 -#define CM_DEVCAP_HARDWAREDISABLED 0x00000100 -#define CM_DEVCAP_NONDYNAMIC 0x00000200 - -#if (WINVER >= _WIN32_WINNT_WINXP) - -#define CM_REMOVAL_POLICY_EXPECT_NO_REMOVAL 1 -#define CM_REMOVAL_POLICY_EXPECT_ORDERLY_REMOVAL 2 -#define CM_REMOVAL_POLICY_EXPECT_SURPRISE_REMOVAL 3 - -#define CM_INSTALL_STATE_INSTALLED 0 -#define CM_INSTALL_STATE_NEEDS_REINSTALL 1 -#define CM_INSTALL_STATE_FAILED_INSTALL 2 -#define CM_INSTALL_STATE_FINISH_INSTALL 3 - -#endif /* (WINVER >= _WIN32_WINNT_WINXP) */ - -/* CM_Locate_DevNode.ulFlags constants */ -#define CM_LOCATE_DEVNODE_NORMAL 0x00000000 -#define CM_LOCATE_DEVNODE_PHANTOM 0x00000001 -#define CM_LOCATE_DEVNODE_CANCELREMOVE 0x00000002 -#define CM_LOCATE_DEVNODE_NOVALIDATION 0x00000004 -#define CM_LOCATE_DEVNODE_BITS 0x00000007 - -#define CM_LOCATE_DEVINST_NORMAL CM_LOCATE_DEVNODE_NORMAL -#define CM_LOCATE_DEVINST_PHANTOM CM_LOCATE_DEVNODE_PHANTOM -#define CM_LOCATE_DEVINST_CANCELREMOVE CM_LOCATE_DEVNODE_CANCELREMOVE -#define CM_LOCATE_DEVINST_NOVALIDATION CM_LOCATE_DEVNODE_NOVALIDATION -#define CM_LOCATE_DEVINST_BITS CM_LOCATE_DEVNODE_BITS - -#define CM_OPEN_CLASS_KEY_INSTALLER 0x00000000 -#define CM_OPEN_CLASS_KEY_INTERFACE 0x00000001 -#define CM_OPEN_CLASS_KEY_BITS 0x00000001 - -/* CM_Query_And_Remove_SubTree.ulFlags constants */ -#define CM_REMOVE_UI_OK 0x00000000 -#define CM_REMOVE_UI_NOT_OK 0x00000001 -#define CM_REMOVE_NO_RESTART 0x00000002 -#define CM_REMOVE_BITS 0x00000003 - -#define CM_QUERY_REMOVE_UI_OK (CM_REMOVE_UI_OK) -#define CM_QUERY_REMOVE_UI_NOT_OK (CM_REMOVE_UI_NOT_OK) -#define CM_QUERY_REMOVE_BITS (CM_QUERY_REMOVE_UI_OK|CM_QUERY_REMOVE_UI_NOT_OK) - -/* CM_Reenumerate_DevNode.ulFlags constants */ -#define CM_REENUMERATE_NORMAL 0x00000000 -#define CM_REENUMERATE_SYNCHRONOUS 0x00000001 -#if (WINVER >= _WIN32_WINNT_WINXP) -#define CM_REENUMERATE_RETRY_INSTALLATION 0x00000002 -#define CM_REENUMERATE_ASYNCHRONOUS 0x00000004 -#endif -#define CM_REENUMERATE_BITS 0x00000007 - -#define CM_REGISTER_DEVICE_DRIVER_STATIC 0x00000000 -#define CM_REGISTER_DEVICE_DRIVER_DISABLEABLE 0x00000001 -#define CM_REGISTER_DEVICE_DRIVER_REMOVABLE 0x00000002 -#define CM_REGISTER_DEVICE_DRIVER_BITS 0x00000003 - -#define CM_REGISTRY_HARDWARE 0x00000000 -#define CM_REGISTRY_SOFTWARE 0x00000001 -#define CM_REGISTRY_USER 0x00000100 -#define CM_REGISTRY_CONFIG 0x00000200 -#define CM_REGISTRY_BITS 0x00000301 - -#define CM_SET_DEVNODE_PROBLEM_NORMAL 0x00000000 -#define CM_SET_DEVNODE_PROBLEM_OVERRIDE 0x00000001 -#define CM_SET_DEVNODE_PROBLEM_BITS 0x00000001 - -#define CM_SET_DEVINST_PROBLEM_NORMAL CM_SET_DEVNODE_PROBLEM_NORMAL -#define CM_SET_DEVINST_PROBLEM_OVERRIDE CM_SET_DEVNODE_PROBLEM_OVERRIDE -#define CM_SET_DEVINST_PROBLEM_BITS CM_SET_DEVNODE_PROBLEM_BITS - -/* CM_Set_HW_Prof_Flags[_Ex].ulFlags constants */ -#define CM_SET_HW_PROF_FLAGS_UI_NOT_OK 0x00000001 -#define CM_SET_HW_PROF_FLAGS_BITS 0x00000001 - -/* CM_Setup_DevInst[_Ex].ulFlags constants */ -#define CM_SETUP_DEVNODE_READY 0x00000000 -#define CM_SETUP_DEVINST_READY CM_SETUP_DEVNODE_READY -#define CM_SETUP_DOWNLOAD 0x00000001 -#define CM_SETUP_WRITE_LOG_CONFS 0x00000002 -#define CM_SETUP_PROP_CHANGE 0x00000003 -#if (WINVER >= _WIN32_WINNT_WINXP) -#define CM_SETUP_DEVNODE_RESET 0x00000004 -#define CM_SETUP_DEVINST_RESET CM_SETUP_DEVNODE_RESET -#endif -#define CM_SETUP_BITS 0x00000007 - -#define CM_QUERY_ARBITRATOR_RAW 0x00000000 -#define CM_QUERY_ARBITRATOR_TRANSLATED 0x00000001 -#define CM_QUERY_ARBITRATOR_BITS 0x00000001 - -#if (WINVER >= _WIN32_WINNT_WINXP) -#define CM_CUSTOMDEVPROP_MERGE_MULTISZ 0x00000001 -#define CM_CUSTOMDEVPROP_BITS 0x00000001 -#endif - -#define CM_NAME_ATTRIBUTE_NAME_RETRIEVED_FROM_DEVICE 0x1 -#define CM_NAME_ATTRIBUTE_USER_ASSIGNED_NAME 0x2 - -#define CR_SUCCESS 0x00000000 -#define CR_DEFAULT 0x00000001 -#define CR_OUT_OF_MEMORY 0x00000002 -#define CR_INVALID_POINTER 0x00000003 -#define CR_INVALID_FLAG 0x00000004 -#define CR_INVALID_DEVNODE 0x00000005 -#define CR_INVALID_DEVINST CR_INVALID_DEVNODE -#define CR_INVALID_RES_DES 0x00000006 -#define CR_INVALID_LOG_CONF 0x00000007 -#define CR_INVALID_ARBITRATOR 0x00000008 -#define CR_INVALID_NODELIST 0x00000009 -#define CR_DEVNODE_HAS_REQS 0x0000000A -#define CR_DEVINST_HAS_REQS CR_DEVNODE_HAS_REQS -#define CR_INVALID_RESOURCEID 0x0000000B -#define CR_DLVXD_NOT_FOUND 0x0000000C -#define CR_NO_SUCH_DEVNODE 0x0000000D -#define CR_NO_SUCH_DEVINST CR_NO_SUCH_DEVNODE -#define CR_NO_MORE_LOG_CONF 0x0000000E -#define CR_NO_MORE_RES_DES 0x0000000F -#define CR_ALREADY_SUCH_DEVNODE 0x00000010 -#define CR_ALREADY_SUCH_DEVINST CR_ALREADY_SUCH_DEVNODE -#define CR_INVALID_RANGE_LIST 0x00000011 -#define CR_INVALID_RANGE 0x00000012 -#define CR_FAILURE 0x00000013 -#define CR_NO_SUCH_LOGICAL_DEV 0x00000014 -#define CR_CREATE_BLOCKED 0x00000015 -#define CR_NOT_SYSTEM_VM 0x00000016 -#define CR_REMOVE_VETOED 0x00000017 -#define CR_APM_VETOED 0x00000018 -#define CR_INVALID_LOAD_TYPE 0x00000019 -#define CR_BUFFER_SMALL 0x0000001A -#define CR_NO_ARBITRATOR 0x0000001B -#define CR_NO_REGISTRY_HANDLE 0x0000001C -#define CR_REGISTRY_ERROR 0x0000001D -#define CR_INVALID_DEVICE_ID 0x0000001E -#define CR_INVALID_DATA 0x0000001F -#define CR_INVALID_API 0x00000020 -#define CR_DEVLOADER_NOT_READY 0x00000021 -#define CR_NEED_RESTART 0x00000022 -#define CR_NO_MORE_HW_PROFILES 0x00000023 -#define CR_DEVICE_NOT_THERE 0x00000024 -#define CR_NO_SUCH_VALUE 0x00000025 -#define CR_WRONG_TYPE 0x00000026 -#define CR_INVALID_PRIORITY 0x00000027 -#define CR_NOT_DISABLEABLE 0x00000028 -#define CR_FREE_RESOURCES 0x00000029 -#define CR_QUERY_VETOED 0x0000002A -#define CR_CANT_SHARE_IRQ 0x0000002B -#define CR_NO_DEPENDENT 0x0000002C -#define CR_SAME_RESOURCES 0x0000002D -#define CR_NO_SUCH_REGISTRY_KEY 0x0000002E -#define CR_INVALID_MACHINENAME 0x0000002F -#define CR_REMOTE_COMM_FAILURE 0x00000030 -#define CR_MACHINE_UNAVAILABLE 0x00000031 -#define CR_NO_CM_SERVICES 0x00000032 -#define CR_ACCESS_DENIED 0x00000033 -#define CR_CALL_NOT_IMPLEMENTED 0x00000034 -#define CR_INVALID_PROPERTY 0x00000035 -#define CR_DEVICE_INTERFACE_ACTIVE 0x00000036 -#define CR_NO_SUCH_DEVICE_INTERFACE 0x00000037 -#define CR_INVALID_REFERENCE_STRING 0x00000038 -#define CR_INVALID_CONFLICT_LIST 0x00000039 -#define CR_INVALID_INDEX 0x0000003A -#define CR_INVALID_STRUCTURE_SIZE 0x0000003B -#define NUM_CR_RESULTS 0x0000003C - -#define CM_GLOBAL_STATE_CAN_DO_UI 0x00000001 -#define CM_GLOBAL_STATE_ON_BIG_STACK 0x00000002 -#define CM_GLOBAL_STATE_SERVICES_AVAILABLE 0x00000004 -#define CM_GLOBAL_STATE_SHUTTING_DOWN 0x00000008 -#define CM_GLOBAL_STATE_DETECTION_PENDING 0x00000010 -#if (WINVER >= _WIN32_WINNT_WIN7) -#define CM_GLOBAL_STATE_REBOOT_REQUIRED 0x00000020 -#endif - -/* FIXME : These definitions don't exist in the official header - -#define CMP_MAGIC 0x01234567 - -CMAPI -CONFIGRET -WINAPI -CMP_Init_Detection(IN DWORD dwMagic); - -CMAPI -CONFIGRET -WINAPI -CMP_RegisterNotification( - IN HANDLE hRecipient, - IN LPVOID lpvNotificationFilter, - IN DWORD dwFlags, - OUT PULONG pluhDevNotify); - -CMAPI -CONFIGRET -WINAPI -CMP_Report_LogOn( - IN DWORD dwMagic, - IN DWORD dwProcessId); - -CMAPI -CONFIGRET -WINAPI -CMP_UnregisterNotification(IN ULONG luhDevNotify); - -*/ - -CMAPI -CONFIGRET -WINAPI -CM_Add_Empty_Log_Conf( - OUT PLOG_CONF plcLogConf, - IN DEVINST dnDevInst, - IN PRIORITY Priority, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Add_Empty_Log_Conf_Ex( - OUT PLOG_CONF plcLogConf, - IN DEVINST dnDevInst, - IN PRIORITY Priority, - IN ULONG ulFlags, - IN HMACHINE hMachine); - -CMAPI -CONFIGRET -WINAPI -CM_Add_IDA( - IN DEVINST dnDevInst, - IN PSTR pszID, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Add_ID_ExA( - IN DEVINST dnDevInst, - IN PSTR pszID, - IN ULONG ulFlags, - IN HMACHINE hMachine); - -CMAPI -CONFIGRET -WINAPI -CM_Add_ID_ExW( - IN DEVINST dnDevInst, - IN PWSTR pszID, - IN ULONG ulFlags, - IN HMACHINE hMachine); - -CMAPI -CONFIGRET -WINAPI -CM_Add_IDW( - IN DEVINST dnDevInst, - IN PWSTR pszID, - IN ULONG ulFlags); - -#ifdef UNICODE -#define CM_Add_ID CM_Add_IDW -#define CM_Add_ID_Ex CM_Add_ID_ExW -#else -#define CM_Add_ID CM_Add_IDA -#define CM_Add_ID_Ex CM_Add_ID_ExA -#endif /* UNICODE */ - -CMAPI -CONFIGRET -WINAPI -CM_Add_Range( - IN DWORDLONG ullStartValue, - IN DWORDLONG ullEndValue, - IN RANGE_LIST rlh, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Add_Res_Des( - OUT PRES_DES prdResDes OPTIONAL, - IN LOG_CONF lcLogConf, - IN RESOURCEID ResourceID, - IN PCVOID ResourceData, - IN ULONG ResourceLen, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Add_Res_Des_Ex( - OUT PRES_DES prdResDes OPTIONAL, - IN LOG_CONF lcLogConf, - IN RESOURCEID ResourceID, - IN PCVOID ResourceData, - IN ULONG ResourceLen, - IN ULONG ulFlags, - IN HMACHINE hMachine); - -CMAPI -CONFIGRET -WINAPI -CM_Connect_MachineA( - IN PCSTR UNCServerName OPTIONAL, - OUT PHMACHINE phMachine); - -CMAPI -CONFIGRET -WINAPI -CM_Connect_MachineW( - IN PCWSTR UNCServerName OPTIONAL, - OUT PHMACHINE phMachine); - -#ifdef UNICODE -#define CM_Connect_Machine CM_Connect_MachineW -#else -#define CM_Connect_Machine CM_Connect_MachineA -#endif /* UNICODE */ - -CMAPI -CONFIGRET -WINAPI -CM_Create_DevNodeA( - OUT PDEVINST pdnDevInst, - IN DEVINSTID_A pDeviceID, - IN DEVINST dnParent, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Create_DevNodeW( - OUT PDEVINST pdnDevInst, - IN DEVINSTID_W pDeviceID, - IN DEVINST dnParent, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Create_DevNode_ExA( - OUT PDEVINST pdnDevInst, - IN DEVINSTID_A pDeviceID, - IN DEVINST dnParent, - IN ULONG ulFlags, - IN HANDLE hMachine); - -CMAPI -CONFIGRET -WINAPI -CM_Create_DevNode_ExW( - OUT PDEVINST pdnDevInst, - IN DEVINSTID_W pDeviceID, - IN DEVINST dnParent, - IN ULONG ulFlags, - IN HANDLE hMachine); - -#define CM_Create_DevInstW CM_Create_DevNodeW -#define CM_Create_DevInstA CM_Create_DevNodeA -#define CM_Create_DevInst_ExW CM_Create_DevNode_ExW -#define CM_Create_DevInst_ExA CM_Create_DevNode_ExA -#ifdef UNICODE -#define CM_Create_DevNode CM_Create_DevNodeW -#define CM_Create_DevInst CM_Create_DevNodeW -#define CM_Create_DevNode_Ex CM_Create_DevNode_ExW -#define CM_Create_DevInst_Ex CM_Create_DevInst_ExW -#else -#define CM_Create_DevNode CM_Create_DevNodeA -#define CM_Create_DevInst CM_Create_DevNodeA -#define CM_Create_DevNode_Ex CM_Create_DevNode_ExA -#define CM_Create_DevInst_Ex CM_Create_DevNode_ExA -#endif /* UNICODE */ - -CMAPI -CONFIGRET -WINAPI -CM_Create_Range_List( - OUT PRANGE_LIST prlh, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Delete_Class_Key( - IN LPGUID ClassGuid, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Delete_Class_Key_Ex( - IN LPGUID ClassGuid, - IN ULONG ulFlags, - IN HANDLE hMachine); - -CMAPI -CONFIGRET -WINAPI -CM_Delete_DevNode_Key( - IN DEVNODE dnDevNode, - IN ULONG ulHardwareProfile, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Delete_DevNode_Key_Ex( - IN DEVNODE dnDevNode, - IN ULONG ulHardwareProfile, - IN ULONG ulFlags, - IN HANDLE hMachine); - -#define CM_Delete_DevInst_Key CM_Delete_DevNode_Key -#define CM_Delete_DevInst_Key_Ex CM_Delete_DevNode_Key_Ex - -CMAPI -CONFIGRET -WINAPI -CM_Delete_Range( - IN DWORDLONG ullStartValue, - IN DWORDLONG ullEndValue, - IN RANGE_LIST rlh, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Detect_Resource_Conflict( - IN DEVINST dnDevInst, - IN RESOURCEID ResourceID, - IN PCVOID ResourceData, - IN ULONG ResourceLen, - OUT PBOOL pbConflictDetected, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Detect_Resource_Conflict_Ex( - IN DEVINST dnDevInst, - IN RESOURCEID ResourceID, - IN PCVOID ResourceData, - IN ULONG ResourceLen, - OUT PBOOL pbConflictDetected, - IN ULONG ulFlags, - IN HMACHINE hMachine OPTIONAL); - -CMAPI -CONFIGRET -WINAPI -CM_Disable_DevNode( - IN DEVINST dnDevInst, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Disable_DevNode_Ex( - IN DEVINST dnDevInst, - IN ULONG ulFlags, - IN HMACHINE hMachine OPTIONAL); - -#define CM_Disable_DevInst CM_Disable_DevNode -#define CM_Disable_DevInst_Ex CM_Disable_DevNode_Ex - -CMAPI -CONFIGRET -WINAPI -CM_Disconnect_Machine( - IN HMACHINE hMachine OPTIONAL); - -CMAPI -CONFIGRET -WINAPI -CM_Dup_Range_List( - IN RANGE_LIST rlhOld, - IN RANGE_LIST rlhNew, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Enable_DevNode( - IN DEVINST dnDevInst, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Enable_DevNode_Ex( - IN DEVINST dnDevInst, - IN ULONG ulFlags, - IN HMACHINE hMachine OPTIONAL); - -#define CM_Enable_DevInst CM_Enable_DevNode -#define CM_Enable_DevInst_Ex CM_Enable_DevNode_Ex - -CMAPI -CONFIGRET -WINAPI -CM_Enumerate_Classes( - IN ULONG ulClassIndex, - OUT LPGUID ClassGuid, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Enumerate_Classes_Ex( - IN ULONG ulClassIndex, - OUT LPGUID ClassGuid, - IN ULONG ulFlags, - IN HMACHINE hMachine OPTIONAL); - -CMAPI -CONFIGRET -WINAPI -CM_Enumerate_EnumeratorsA( - IN ULONG ulEnumIndex, - OUT PCHAR Buffer, - IN OUT PULONG pulLength, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Enumerate_Enumerators_ExA( - IN ULONG ulEnumIndex, - OUT PCHAR Buffer, - IN OUT PULONG pulLength, - IN ULONG ulFlags, - IN HMACHINE hMachine OPTIONAL); - -CMAPI -CONFIGRET -WINAPI -CM_Enumerate_Enumerators_ExW( - IN ULONG ulEnumIndex, - OUT PWCHAR Buffer, - IN OUT PULONG pulLength, - IN ULONG ulFlags, - IN HMACHINE hMachine OPTIONAL); - -CMAPI -CONFIGRET -WINAPI -CM_Enumerate_EnumeratorsW( - IN ULONG ulEnumIndex, - OUT PWCHAR Buffer, - IN OUT PULONG pulLength, - IN ULONG ulFlags); - -#ifdef UNICODE -#define CM_Enumerate_Enumerators CM_Enumerate_EnumeratorsW -#define CM_Enumerate_Enumerators_Ex CM_Enumerate_Enumerators_ExW -#else -#define CM_Enumerate_Enumerators CM_Enumerate_EnumeratorsA -#define CM_Enumerate_Enumerators_Ex CM_Enumerate_Enumerators_ExA -#endif /* UNICODE */ - -CMAPI -CONFIGRET -WINAPI -CM_Find_Range( - OUT PDWORDLONG pullStart, - IN DWORDLONG ullStart, - IN ULONG ulLength, - IN DWORDLONG ullAlignment, - IN DWORDLONG ullEnd, - IN RANGE_LIST rlh, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_First_Range( - IN RANGE_LIST rlh, - OUT PDWORDLONG pullStart, - OUT PDWORDLONG pullEnd, - OUT PRANGE_ELEMENT preElement, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Free_Log_Conf( - IN LOG_CONF lcLogConfToBeFreed, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Free_Log_Conf_Ex( - IN LOG_CONF lcLogConfToBeFreed, - IN ULONG ulFlags, - IN HMACHINE hMachine); - -CMAPI -CONFIGRET -WINAPI -CM_Free_Log_Conf_Handle( - IN LOG_CONF lcLogConf); - -CMAPI -CONFIGRET -WINAPI -CM_Free_Range_List( - IN RANGE_LIST rlh, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Free_Res_Des( - OUT PRES_DES prdResDes, - IN RES_DES rdResDes, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Free_Res_Des_Ex( - OUT PRES_DES prdResDes, - IN RES_DES rdResDes, - IN ULONG ulFlags, - IN HMACHINE hMachine); - -CMAPI -CONFIGRET -WINAPI -CM_Free_Res_Des_Handle( - IN RES_DES rdResDes); - -CMAPI -CONFIGRET -WINAPI -CM_Free_Resource_Conflict_Handle( - IN CONFLICT_LIST clConflictList); - -CMAPI -CONFIGRET -WINAPI -CM_Get_Child( - OUT PDEVINST pdnDevInst, - IN DEVINST dnDevInst, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Get_Child_Ex( - OUT PDEVINST pdnDevInst, - IN DEVINST dnDevInst, - IN ULONG ulFlags, - IN HMACHINE hMachine); - -CMAPI -CONFIGRET -WINAPI -CM_Get_Class_NameA( - IN LPGUID ClassGuid, - OUT PCHAR Buffer, - IN OUT PULONG pulLength, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Get_Class_NameW( - IN LPGUID ClassGuid, - OUT PWCHAR Buffer, - IN OUT PULONG pulLength, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Get_Class_Name_ExA( - IN LPGUID ClassGuid, - OUT PCHAR Buffer, - IN OUT PULONG pulLength, - IN ULONG ulFlags, - IN HMACHINE hMachine); - -CMAPI -CONFIGRET -WINAPI -CM_Get_Class_Name_ExW( - IN LPGUID ClassGuid, - OUT PWCHAR Buffer, - IN OUT PULONG pulLength, - IN ULONG ulFlags, - IN HMACHINE hMachine); - -#ifdef UNICODE -#define CM_Get_Class_Name CM_Get_Class_NameW -#define CM_Get_Class_Name_Ex CM_Get_Class_Name_ExW -#else -#define CM_Get_Class_Name CM_Get_Class_NameA -#define CM_Get_Class_Name_Ex CM_Get_Class_Name_ExA -#endif /* UNICODE */ - -CMAPI -CONFIGRET -WINAPI -CM_Get_Class_Key_NameA( - IN LPGUID ClassGuid, - OUT LPSTR pszKeyName, - IN OUT PULONG pulLength, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Get_Class_Key_NameW( - IN LPGUID ClassGuid, - OUT LPWSTR pszKeyName, - IN OUT PULONG pulLength, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Get_Class_Key_Name_ExA( - IN LPGUID ClassGuid, - OUT LPSTR pszKeyName, - IN OUT PULONG pulLength, - IN ULONG ulFlags, - IN HMACHINE hMachine); - -CMAPI -CONFIGRET -WINAPI -CM_Get_Class_Key_Name_ExW( - IN LPGUID ClassGuid, - OUT LPWSTR pszKeyName, - IN OUT PULONG pulLength, - IN ULONG ulFlags, - IN HMACHINE hMachine); - -#ifdef UNICODE -#define CM_Get_Class_Key_Name CM_Get_Class_Key_NameW -#define CM_Get_Class_Key_Name_Ex CM_Get_Class_Key_Name_ExW -#else -#define CM_Get_Class_Key_Name CM_Get_Class_Key_NameA -#define CM_Get_Class_Key_Name_Ex CM_Get_Class_Key_Name_ExA -#endif /* UNICODE */ - -CMAPI -CONFIGRET -WINAPI -CM_Get_Depth( - OUT PULONG pulDepth, - IN DEVINST dnDevInst, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Get_Depth_Ex( - OUT PULONG pulDepth, - IN DEVINST dnDevInst, - IN ULONG ulFlags, - IN HMACHINE hMachine); - -CMAPI -CONFIGRET -WINAPI -CM_Get_Device_IDA( - IN DEVINST dnDevInst, - OUT PCHAR Buffer, - IN ULONG BufferLen, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Get_Device_ID_ExA( - IN DEVINST dnDevInst, - OUT PCHAR Buffer, - IN ULONG BufferLen, - IN ULONG ulFlags, - IN HMACHINE hMachine); - -CMAPI -CONFIGRET -WINAPI -CM_Get_Device_ID_ExW( - IN DEVINST dnDevInst, - OUT PWCHAR Buffer, - IN ULONG BufferLen, - IN ULONG ulFlags, - IN HMACHINE hMachine); - -CMAPI -CONFIGRET -WINAPI -CM_Get_Device_IDW( - IN DEVINST dnDevInst, - OUT PWCHAR Buffer, - IN ULONG BufferLen, - IN ULONG ulFlags); - -#ifdef UNICODE -#define CM_Get_Device_ID CM_Get_Device_IDW -#define CM_Get_Device_ID_Ex CM_Get_Device_ID_ExW -#else -#define CM_Get_Device_ID CM_Get_Device_IDA -#define CM_Get_Device_ID_Ex CM_Get_Device_ID_ExA -#endif /* UNICODE */ - -CMAPI -CONFIGRET -WINAPI -CM_Get_Device_ID_ListA( - IN PCSTR pszFilter OPTIONAL, - OUT PCHAR Buffer, - IN ULONG BufferLen, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Get_Device_ID_List_ExA( - IN PCSTR pszFilter OPTIONAL, - OUT PCHAR Buffer, - IN ULONG BufferLen, - IN ULONG ulFlags, - IN HMACHINE hMachine); - -CMAPI -CONFIGRET -WINAPI -CM_Get_Device_ID_List_ExW( - IN PCWSTR pszFilter OPTIONAL, - OUT PWCHAR Buffer, - IN ULONG BufferLen, - IN ULONG ulFlags, - IN HMACHINE hMachine); - -CMAPI -CONFIGRET -WINAPI -CM_Get_Device_ID_ListW( - IN PCWSTR pszFilter OPTIONAL, - OUT PWCHAR Buffer, - IN ULONG BufferLen, - IN ULONG ulFlags); - -#ifdef UNICODE -#define CM_Get_Device_ID_List CM_Get_Device_ID_ListW -#define CM_Get_Device_ID_List_Ex CM_Get_Device_ID_List_ExW -#else -#define CM_Get_Device_ID_List CM_Get_Device_ID_ListA -#define CM_Get_Device_ID_List_Ex CM_Get_Device_ID_List_ExA -#endif /* UNICODE */ - -CMAPI -CONFIGRET -WINAPI -CM_Get_Device_ID_List_SizeA( - OUT PULONG pulLen, - IN PCSTR pszFilter OPTIONAL, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Get_Device_ID_List_Size_ExA( - OUT PULONG pulLen, - IN PCSTR pszFilter OPTIONAL, - IN ULONG ulFlags, - IN HMACHINE hMachine); - -CMAPI -CONFIGRET -WINAPI -CM_Get_Device_ID_List_Size_ExW( - OUT PULONG pulLen, - IN PCWSTR pszFilter OPTIONAL, - IN ULONG ulFlags, - IN HMACHINE hMachine); - -CMAPI -CONFIGRET -WINAPI -CM_Get_Device_ID_List_SizeW( - OUT PULONG pulLen, - IN PCWSTR pszFilter OPTIONAL, - IN ULONG ulFlags); - -#ifdef UNICODE -#define CM_Get_Device_ID_List_Size CM_Get_Device_ID_List_SizeW -#define CM_Get_Device_ID_List_Size_Ex CM_Get_Device_ID_List_Size_ExW -#else -#define CM_Get_Device_ID_List_Size CM_Get_Device_ID_List_SizeA -#define CM_Get_Device_ID_List_Size_Ex CM_Get_Device_ID_List_Size_ExA -#endif /* UNICODE */ - -CMAPI -CONFIGRET -WINAPI -CM_Get_Device_ID_Size( - OUT PULONG pulLen, - IN DEVINST dnDevInst, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Get_Device_ID_Size_Ex( - OUT PULONG pulLen, - IN DEVINST dnDevInst, - IN ULONG ulFlags, - IN HMACHINE hMachine); - -CMAPI -CONFIGRET -WINAPI -CM_Get_DevNode_Registry_PropertyA( - IN DEVINST dnDevInst, - IN ULONG ulProperty, - OUT PULONG pulRegDataType OPTIONAL, - OUT PVOID Buffer OPTIONAL, - IN OUT PULONG pulLength, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Get_DevNode_Registry_PropertyW( - IN DEVINST dnDevInst, - IN ULONG ulProperty, - OUT PULONG pulRegDataType OPTIONAL, - OUT PVOID Buffer OPTIONAL, - IN OUT PULONG pulLength, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Get_DevNode_Registry_Property_ExA( - IN DEVINST dnDevInst, - IN ULONG ulProperty, - OUT PULONG pulRegDataType OPTIONAL, - OUT PVOID Buffer OPTIONAL, - IN OUT PULONG pulLength, - IN ULONG ulFlags, - IN HMACHINE hMachine); - -CMAPI -CONFIGRET -WINAPI -CM_Get_DevNode_Registry_Property_ExW( - IN DEVINST dnDevInst, - IN ULONG ulProperty, - OUT PULONG pulRegDataType OPTIONAL, - OUT PVOID Buffer OPTIONAL, - IN OUT PULONG pulLength, - IN ULONG ulFlags, - IN HMACHINE hMachine); - -#define CM_Get_DevInst_Registry_PropertyW CM_Get_DevNode_Registry_PropertyW -#define CM_Get_DevInst_Registry_PropertyA CM_Get_DevNode_Registry_PropertyA -#define CM_Get_DevInst_Registry_Property_ExW CM_Get_DevNode_Registry_Property_ExW -#define CM_Get_DevInst_Registry_Property_ExA CM_Get_DevNode_Registry_Property_ExA - -#ifdef UNICODE -#define CM_Get_DevInst_Registry_Property CM_Get_DevNode_Registry_PropertyW -#define CM_Get_DevInst_Registry_Property_Ex CM_Get_DevNode_Registry_Property_ExW -#define CM_Get_DevNode_Registry_Property CM_Get_DevNode_Registry_PropertyW -#define CM_Get_DevNode_Registry_Property_Ex CM_Get_DevNode_Registry_Property_ExW -#else -#define CM_Get_DevInst_Registry_Property CM_Get_DevNode_Registry_PropertyA -#define CM_Get_DevInst_Registry_Property_Ex CM_Get_DevNode_Registry_Property_ExA -#define CM_Get_DevNode_Registry_Property CM_Get_DevNode_Registry_PropertyA -#define CM_Get_DevNode_Registry_Property_Ex CM_Get_DevNode_Registry_Property_ExA -#endif /* UNICODE */ - -#if (WINVER >= _WIN32_WINNT_WINXP) - -CMAPI -CONFIGRET -WINAPI -CM_Get_DevNode_Custom_PropertyA( - IN DEVINST dnDevInst, - IN PCSTR pszCustomPropertyName, - OUT PULONG pulRegDataType OPTIONAL, - OUT PVOID Buffer OPTIONAL, - IN OUT PULONG pulLength, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Get_DevNode_Custom_PropertyW( - IN DEVINST dnDevInst, - IN PCWSTR pszCustomPropertyName, - OUT PULONG pulRegDataType OPTIONAL, - OUT PVOID Buffer OPTIONAL, - IN OUT PULONG pulLength, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Get_DevNode_Custom_Property_ExA( - IN DEVINST dnDevInst, - IN PCSTR pszCustomPropertyName, - OUT PULONG pulRegDataType OPTIONAL, - OUT PVOID Buffer OPTIONAL, - IN OUT PULONG pulLength, - IN ULONG ulFlags, - IN HMACHINE hMachine OPTIONAL); - -CMAPI -CONFIGRET -WINAPI -CM_Get_DevNode_Custom_Property_ExW( - IN DEVINST dnDevInst, - IN PCWSTR pszCustomPropertyName, - OUT PULONG pulRegDataType OPTIONAL, - OUT PVOID Buffer OPTIONAL, - IN OUT PULONG pulLength, - IN ULONG ulFlags, - IN HMACHINE hMachine OPTIONAL); - -#define CM_Get_DevInst_Custom_PropertyW CM_Get_DevNode_Custom_PropertyW -#define CM_Get_DevInst_Custom_PropertyA CM_Get_DevNode_Custom_PropertyA -#define CM_Get_DevInst_Custom_Property_ExW CM_Get_DevNode_Custom_Property_ExW -#define CM_Get_DevInst_Custom_Property_ExA CM_Get_DevNode_Custom_Property_ExA -#ifdef UNICODE -#define CM_Get_DevInst_Custom_Property CM_Get_DevNode_Custom_PropertyW -#define CM_Get_DevInst_Custom_Property_Ex CM_Get_DevNode_Custom_Property_ExW -#define CM_Get_DevNode_Custom_Property CM_Get_DevNode_Custom_PropertyW -#define CM_Get_DevNode_Custom_Property_Ex CM_Get_DevNode_Custom_Property_ExW -#else -#define CM_Get_DevInst_Custom_Property CM_Get_DevNode_Custom_PropertyA -#define CM_Get_DevInst_Custom_Property_Ex CM_Get_DevNode_Custom_Property_ExA -#define CM_Get_DevNode_Custom_Property CM_Get_DevNode_Custom_PropertyA -#define CM_Get_DevNode_Custom_Property_Ex CM_Get_DevNode_Custom_Property_ExA -#endif - -#endif /* (WINVER >= _WIN32_WINNT_WINXP) */ - -CMAPI -CONFIGRET -WINAPI -CM_Get_DevNode_Status( - OUT PULONG pulStatus, - OUT PULONG pulProblemNumber, - IN DEVINST dnDevInst, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Get_DevNode_Status_Ex( - OUT PULONG pulStatus, - OUT PULONG pulProblemNumber, - IN DEVINST dnDevInst, - IN ULONG ulFlags, - IN HMACHINE hMachine); - -#define CM_Get_DevInst_Status CM_Get_DevNode_Status -#define CM_Get_DevInst_Status_Ex CM_Get_DevNode_Status_Ex - -CMAPI -CONFIGRET -WINAPI -CM_Get_First_Log_Conf( - OUT PLOG_CONF plcLogConf OPTIONAL, - IN DEVINST dnDevInst, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Get_First_Log_Conf_Ex( - OUT PLOG_CONF plcLogConf OPTIONAL, - IN DEVINST dnDevInst, - IN ULONG ulFlags, - IN HMACHINE hMachine OPTIONAL); - -CMAPI -CONFIGRET -WINAPI -CM_Get_Global_State( - OUT PULONG pulState, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Get_Global_State_Ex( - OUT PULONG pulState, - IN ULONG ulFlags, - IN HMACHINE hMachine); - -CMAPI -CONFIGRET -WINAPI -CM_Get_Hardware_Profile_InfoA( - IN ULONG ulIndex, - OUT PHWPROFILEINFO_A pHWProfileInfo, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Get_Hardware_Profile_Info_ExA( - IN ULONG ulIndex, - OUT PHWPROFILEINFO_A pHWProfileInfo, - IN ULONG ulFlags, - IN HMACHINE hMachine OPTIONAL); - -CMAPI -CONFIGRET -WINAPI -CM_Get_Hardware_Profile_InfoW( - IN ULONG ulIndex, - OUT PHWPROFILEINFO_W pHWProfileInfo, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Get_Hardware_Profile_Info_ExW( - IN ULONG ulIndex, - OUT PHWPROFILEINFO_W pHWProfileInfo, - IN ULONG ulFlags, - IN HMACHINE hMachine OPTIONAL); - -#ifdef UNICODE -#define CM_Get_Hardware_Profile_Info CM_Get_Hardware_Profile_InfoW -#define CM_Get_Hardware_Profile_Info_Ex CM_Get_Hardware_Profile_Info_ExW -#else -#define CM_Get_Hardware_Profile_Info CM_Get_Hardware_Profile_InfoA -#define CM_Get_Hardware_Profile_Info_Ex CM_Get_Hardware_Profile_Info_ExA -#endif - -CMAPI -CONFIGRET -WINAPI -CM_Get_HW_Prof_FlagsA( - IN DEVINSTID_A szDevInstName, - IN ULONG ulHardwareProfile, - OUT PULONG pulValue, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Get_HW_Prof_FlagsW( - IN DEVINSTID_W szDevInstName, - IN ULONG ulHardwareProfile, - OUT PULONG pulValue, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Get_HW_Prof_Flags_ExA( - IN DEVINSTID_A szDevInstName, - IN ULONG ulHardwareProfile, - OUT PULONG pulValue, - IN ULONG ulFlags, - IN HMACHINE hMachine); - -CMAPI -CONFIGRET -WINAPI -CM_Get_HW_Prof_Flags_ExW( - IN DEVINSTID_W szDevInstName, - IN ULONG ulHardwareProfile, - OUT PULONG pulValue, - IN ULONG ulFlags, - IN HMACHINE hMachine); - -#ifdef UNICODE -#define CM_Get_HW_Prof_Flags CM_Get_HW_Prof_FlagsW -#define CM_Get_HW_Prof_Flags_Ex CM_Get_HW_Prof_Flags_ExW -#else -#define CM_Get_HW_Prof_Flags CM_Get_HW_Prof_FlagsA -#define CM_Get_HW_Prof_Flags_Ex CM_Get_HW_Prof_Flags_ExA -#endif - -CMAPI -CONFIGRET -WINAPI -CM_Get_Device_Interface_AliasA( - IN LPCSTR pszDeviceInterface, - IN LPGUID AliasInterfaceGuid, - OUT LPSTR pszAliasDeviceInterface, - IN OUT PULONG pulLength, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Get_Device_Interface_AliasW( - IN LPCWSTR pszDeviceInterface, - IN LPGUID AliasInterfaceGuid, - OUT LPWSTR pszAliasDeviceInterface, - IN OUT PULONG pulLength, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Get_Device_Interface_Alias_ExA( - IN LPCSTR pszDeviceInterface, - IN LPGUID AliasInterfaceGuid, - OUT LPSTR pszAliasDeviceInterface, - IN OUT PULONG pulLength, - IN ULONG ulFlags, - IN HMACHINE hMachine OPTIONAL); - -CMAPI -CONFIGRET -WINAPI -CM_Get_Device_Interface_Alias_ExW( - IN LPCWSTR pszDeviceInterface, - IN LPGUID AliasInterfaceGuid, - OUT LPWSTR pszAliasDeviceInterface, - IN OUT PULONG pulLength, - IN ULONG ulFlags, - IN HMACHINE hMachine OPTIONAL); - -#ifdef UNICODE -#define CM_Get_Device_Interface_Alias CM_Get_Device_Interface_AliasW -#define CM_Get_Device_Interface_Alias_Ex CM_Get_Device_Interface_Alias_ExW -#else -#define CM_Get_Device_Interface_Alias CM_Get_Device_Interface_AliasA -#define CM_Get_Device_Interface_Alias_Ex CM_Get_Device_Interface_Alias_ExA -#endif - -CMAPI -CONFIGRET -WINAPI -CM_Get_Device_Interface_ListA( - IN LPGUID InterfaceClassGuid, - IN DEVINSTID_A pDeviceID OPTIONAL, - OUT PCHAR Buffer, - IN ULONG BufferLen, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Get_Device_Interface_ListW( - IN LPGUID InterfaceClassGuid, - IN DEVINSTID_W pDeviceID OPTIONAL, - OUT PWCHAR Buffer, - IN ULONG BufferLen, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Get_Device_Interface_List_ExA( - IN LPGUID InterfaceClassGuid, - IN DEVINSTID_A pDeviceID OPTIONAL, - OUT PCHAR Buffer, - IN ULONG BufferLen, - IN ULONG ulFlags, - IN HMACHINE hMachine OPTIONAL); - -CMAPI -CONFIGRET -WINAPI -CM_Get_Device_Interface_List_ExW( - IN LPGUID InterfaceClassGuid, - IN DEVINSTID_W pDeviceID OPTIONAL, - OUT PWCHAR Buffer, - IN ULONG BufferLen, - IN ULONG ulFlags, - IN HMACHINE hMachine OPTIONAL); - -#ifdef UNICODE -#define CM_Get_Device_Interface_List CM_Get_Device_Interface_ListW -#define CM_Get_Device_Interface_List_Ex CM_Get_Device_Interface_List_ExW -#else -#define CM_Get_Device_Interface_List CM_Get_Device_Interface_ListA -#define CM_Get_Device_Interface_List_Ex CM_Get_Device_Interface_List_ExA -#endif - -CMAPI -CONFIGRET -WINAPI -CM_Get_Device_Interface_List_SizeA( - OUT PULONG pulLen, - IN LPGUID InterfaceClassGuid, - IN DEVINSTID_A pDeviceID OPTIONAL, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Get_Device_Interface_List_SizeW( - OUT PULONG pulLen, - IN LPGUID InterfaceClassGuid, - IN DEVINSTID_W pDeviceID OPTIONAL, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Get_Device_Interface_List_Size_ExA( - OUT PULONG pulLen, - IN LPGUID InterfaceClassGuid, - IN DEVINSTID_A pDeviceID OPTIONAL, - IN ULONG ulFlags, - IN HMACHINE hMachine OPTIONAL); - -CMAPI -CONFIGRET -WINAPI -CM_Get_Device_Interface_List_Size_ExW( - OUT PULONG pulLen, - IN LPGUID InterfaceClassGuid, - IN DEVINSTID_W pDeviceID OPTIONAL, - IN ULONG ulFlags, - IN HMACHINE hMachine OPTIONAL); - -#ifdef UNICODE -#define CM_Get_Device_Interface_List_Size CM_Get_Device_Interface_List_SizeW -#define CM_Get_Device_Interface_List_Size_Ex CM_Get_Device_Interface_List_Size_ExW -#else -#define CM_Get_Device_Interface_List_Size CM_Get_Device_Interface_List_SizeA -#define CM_Get_Device_Interface_List_Size_Ex CM_Get_Device_Interface_List_Size_ExA -#endif - -CMAPI -CONFIGRET -WINAPI -CM_Get_Log_Conf_Priority( - IN LOG_CONF lcLogConf, - OUT PPRIORITY pPriority, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Get_Log_Conf_Priority_Ex( - IN LOG_CONF lcLogConf, - OUT PPRIORITY pPriority, - IN ULONG ulFlags, - IN HMACHINE hMachine); - -CMAPI -CONFIGRET -WINAPI -CM_Get_Next_Log_Conf( - OUT PLOG_CONF plcLogConf OPTIONAL, - IN LOG_CONF lcLogConf, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Get_Next_Log_Conf_Ex( - OUT PLOG_CONF plcLogConf OPTIONAL, - IN LOG_CONF lcLogConf, - IN ULONG ulFlags, - IN HMACHINE hMachine); - -CMAPI -CONFIGRET -WINAPI -CM_Get_Next_Res_Des( - OUT PRES_DES prdResDes, - IN RES_DES rdResDes, - IN RESOURCEID ForResource, - OUT PRESOURCEID pResourceID, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Get_Next_Res_Des_Ex( - OUT PRES_DES prdResDes, - IN RES_DES rdResDes, - IN RESOURCEID ForResource, - OUT PRESOURCEID pResourceID, - IN ULONG ulFlags, - IN HMACHINE hMachine); - -CMAPI -CONFIGRET -WINAPI -CM_Get_Parent( - OUT PDEVINST pdnDevInst, - IN DEVINST dnDevInst, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Get_Parent_Ex( - OUT PDEVINST pdnDevInst, - IN DEVINST dnDevInst, - IN ULONG ulFlags, - IN HMACHINE hMachine); - -CMAPI -CONFIGRET -WINAPI -CM_Get_Res_Des_Data( - IN RES_DES rdResDes, - OUT PVOID Buffer, - IN ULONG BufferLen, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Get_Res_Des_Data_Ex( - IN RES_DES rdResDes, - OUT PVOID Buffer, - IN ULONG BufferLen, - IN ULONG ulFlags, - IN HMACHINE hMachine); - -CMAPI -CONFIGRET -WINAPI -CM_Get_Res_Des_Data_Size( - OUT PULONG pulSize, - IN RES_DES rdResDes, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Get_Res_Des_Data_Size_Ex( - OUT PULONG pulSize, - IN RES_DES rdResDes, - IN ULONG ulFlags, - IN HMACHINE hMachine); - -CMAPI -CONFIGRET -WINAPI -CM_Get_Resource_Conflict_Count( - IN CONFLICT_LIST clConflictList, - OUT PULONG pulCount); - -CMAPI -CONFIGRET -WINAPI -CM_Get_Resource_Conflict_DetailsA( - IN CONFLICT_LIST clConflictList, - IN ULONG ulIndex, - IN OUT PCONFLICT_DETAILS_A pConflictDetails); - -CMAPI -CONFIGRET -WINAPI -CM_Get_Resource_Conflict_DetailsW( - IN CONFLICT_LIST clConflictList, - IN ULONG ulIndex, - IN OUT PCONFLICT_DETAILS_W pConflictDetails); - -#ifdef UNICODE -#define CM_Get_Resource_Conflict_Details CM_Get_Resource_Conflict_DetailsW -#else -#define CM_Get_Resource_Conflict_Details CM_Get_Resource_Conflict_DetailsA -#endif /* UNICODE */ - -CMAPI -CONFIGRET -WINAPI -CM_Get_Class_Registry_PropertyW( - IN LPGUID ClassGuid, - IN ULONG ulProperty, - OUT PULONG pulRegDataType OPTIONAL, - OUT PVOID Buffer OPTIONAL, - IN OUT PULONG pulLength, - IN ULONG ulFlags, - IN HMACHINE hMachine OPTIONAL); - -CMAPI -CONFIGRET -WINAPI -CM_Set_Class_Registry_PropertyW( - IN LPGUID ClassGuid, - IN ULONG ulProperty, - IN PCVOID Buffer OPTIONAL, - IN ULONG ulLength, - IN ULONG ulFlags, - IN HMACHINE hMachine OPTIONAL); - -CMAPI -CONFIGRET -WINAPI -CM_Get_Class_Registry_PropertyA( - IN LPGUID ClassGuid, - IN ULONG ulProperty, - OUT PULONG pulRegDataType OPTIONAL, - OUT PVOID Buffer OPTIONAL, - IN OUT PULONG pulLength, - IN ULONG ulFlags, - IN HMACHINE hMachine OPTIONAL); - -CMAPI -CONFIGRET -WINAPI -CM_Set_Class_Registry_PropertyA( - IN LPGUID ClassGuid, - IN ULONG ulProperty, - IN PCVOID Buffer OPTIONAL, - IN ULONG ulLength, - IN ULONG ulFlags, - IN HMACHINE hMachine OPTIONAL); - -#ifdef UNICODE -#define CM_Get_Class_Registry_Property CM_Get_Class_Registry_PropertyW -#define CM_Set_Class_Registry_Property CM_Set_Class_Registry_PropertyW -#else -#define CM_Get_Class_Registry_Property CM_Get_Class_Registry_PropertyA -#define CM_Set_Class_Registry_Property CM_Set_Class_Registry_PropertyA -#endif // UNICODE - -CMAPI -CONFIGRET -WINAPI -CM_Get_Sibling( - OUT PDEVINST pdnDevInst, - IN DEVINST DevInst, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Get_Sibling_Ex( - OUT PDEVINST pdnDevInst, - IN DEVINST DevInst, - IN ULONG ulFlags, - IN HMACHINE hMachine); - -CMAPI -WORD -WINAPI -CM_Get_Version(VOID); - -CMAPI -WORD -WINAPI -CM_Get_Version_Ex( - IN HMACHINE hMachine); - -#if (WINVER >= _WIN32_WINNT_WINXP) - -CMAPI -BOOL -WINAPI -CM_Is_Version_Available( - IN WORD wVersion); - -CMAPI -BOOL -WINAPI -CM_Is_Version_Available_Ex( - IN WORD wVersion, - IN HMACHINE hMachine OPTIONAL); - -#endif /* (WINVER >= _WIN32_WINNT_WINXP) */ - -CMAPI -CONFIGRET -WINAPI -CM_Intersect_Range_List( - IN RANGE_LIST rlhOld1, - IN RANGE_LIST rlhOld2, - IN RANGE_LIST rlhNew, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Invert_Range_List( - IN RANGE_LIST rlhOld, - IN RANGE_LIST rlhNew, - IN DWORDLONG ullMaxValue, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Is_Dock_Station_Present( - OUT PBOOL pbPresent); - -CMAPI -CONFIGRET -WINAPI -CM_Is_Dock_Station_Present_Ex( - OUT PBOOL pbPresent, - IN HMACHINE hMachine OPTIONAL); - -CMAPI -CONFIGRET -WINAPI -CM_Locate_DevNodeA( - OUT PDEVINST pdnDevInst, - IN DEVINSTID_A pDeviceID OPTIONAL, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Locate_DevNode_ExA( - OUT PDEVINST pdnDevInst, - IN DEVINSTID_A pDeviceID OPTIONAL, - IN ULONG ulFlags, - IN HMACHINE hMachine); - -CMAPI -CONFIGRET -WINAPI -CM_Locate_DevNode_ExW( - OUT PDEVINST pdnDevInst, - IN DEVINSTID_W pDeviceID OPTIONAL, - IN ULONG ulFlags, - IN HMACHINE hMachine); - -CMAPI -CONFIGRET -WINAPI -CM_Locate_DevNodeW( - OUT PDEVINST pdnDevInst, - IN DEVINSTID_W pDeviceID OPTIONAL, - IN ULONG ulFlags); - -#define CM_Locate_DevInstA CM_Locate_DevNodeA -#define CM_Locate_DevInstW CM_Locate_DevNodeW -#define CM_Locate_DevInst_ExA CM_Locate_DevNode_ExA -#define CM_Locate_DevInst_ExW CM_Locate_DevNode_ExW - -#ifdef UNICODE -#define CM_Locate_DevNode CM_Locate_DevNodeW -#define CM_Locate_DevInst CM_Locate_DevNodeW -#define CM_Locate_DevNode_Ex CM_Locate_DevNode_ExW -#define CM_Locate_DevInst_Ex CM_Locate_DevNode_ExW -#else -#define CM_Locate_DevNode CM_Locate_DevNodeA -#define CM_Locate_DevInst CM_Locate_DevNodeA -#define CM_Locate_DevNode_Ex CM_Locate_DevNode_ExA -#define CM_Locate_DevInst_Ex CM_Locate_DevNode_ExA -#endif /* UNICODE */ - -CMAPI -CONFIGRET -WINAPI -CM_Merge_Range_List( - IN RANGE_LIST rlhOld1, - IN RANGE_LIST rlhOld2, - IN RANGE_LIST rlhNew, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Modify_Res_Des( - OUT PRES_DES prdResDes, - IN RES_DES rdResDes, - IN RESOURCEID ResourceID, - IN PCVOID ResourceData, - IN ULONG ResourceLen, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Modify_Res_Des_Ex( - OUT PRES_DES prdResDes, - IN RES_DES rdResDes, - IN RESOURCEID ResourceID, - IN PCVOID ResourceData, - IN ULONG ResourceLen, - IN ULONG ulFlags, - IN HMACHINE hMachine); - -CMAPI -CONFIGRET -WINAPI -CM_Move_DevNode( - IN DEVINST dnFromDevInst, - IN DEVINST dnToDevInst, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Move_DevNode_Ex( - IN DEVINST dnFromDevInst, - IN DEVINST dnToDevInst, - IN ULONG ulFlags, - IN HMACHINE hMachine OPTIONAL); - -#define CM_Move_DevInst CM_Move_DevNode -#define CM_Move_DevInst_Ex CM_Move_DevNode_Ex - -CMAPI -CONFIGRET -WINAPI -CM_Next_Range( - IN OUT PRANGE_ELEMENT preElement, - OUT PDWORDLONG pullStart, - OUT PDWORDLONG pullEnd, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Open_Class_KeyA( - IN LPGUID ClassGuid OPTIONAL, - IN LPCSTR pszClassName OPTIONAL, - IN REGSAM samDesired, - IN REGDISPOSITION Disposition, - OUT PHKEY phkClass, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Open_Class_KeyW( - IN LPGUID ClassGuid OPTIONAL, - IN LPCWSTR pszClassName OPTIONAL, - IN REGSAM samDesired, - IN REGDISPOSITION Disposition, - OUT PHKEY phkClass, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Open_Class_Key_ExA( - IN LPGUID pszClassGuid OPTIONAL, - IN LPCSTR pszClassName OPTIONAL, - IN REGSAM samDesired, - IN REGDISPOSITION Disposition, - OUT PHKEY phkClass, - IN ULONG ulFlags, - IN HMACHINE hMachine); - -CMAPI -CONFIGRET -WINAPI -CM_Open_Class_Key_ExW( - IN LPGUID pszClassGuid OPTIONAL, - IN LPCWSTR pszClassName OPTIONAL, - IN REGSAM samDesired, - IN REGDISPOSITION Disposition, - OUT PHKEY phkClass, - IN ULONG ulFlags, - IN HMACHINE hMachine); - -#ifdef UNICODE -#define CM_Open_Class_Key CM_Open_Class_KeyW -#define CM_Open_Class_Key_Ex CM_Open_Class_Key_ExW -#else -#define CM_Open_Class_Key CM_Open_Class_KeyA -#define CM_Open_Class_Key_Ex CM_Open_Class_Key_ExA -#endif /* UNICODE */ - -CMAPI -CONFIGRET -WINAPI -CM_Open_DevNode_Key( - IN DEVINST dnDevNode, - IN REGSAM samDesired, - IN ULONG ulHardwareProfile, - IN REGDISPOSITION Disposition, - OUT PHKEY phkDevice, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Open_DevNode_Key_Ex( - IN DEVINST dnDevNode, - IN REGSAM samDesired, - IN ULONG ulHardwareProfile, - IN REGDISPOSITION Disposition, - OUT PHKEY phkDevice, - IN ULONG ulFlags, - IN HMACHINE hMachine); - -#define CM_Open_DevInst_Key CM_Open_DevNode_Key -#define CM_Open_DevInst_Key_Ex CM_Open_DevNode_Key_Ex - -#if (WINVER >= _WIN32_WINNT_VISTA) - -CMAPI -CONFIGRET -WINAPI -CM_Open_Device_Interface_KeyA( - IN LPCSTR pszDeviceInterface, - IN REGSAM samDesired, - IN REGDISPOSITION Disposition, - OUT PHKEY phkDeviceInterface, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Open_Device_Interface_KeyW( - IN LPCWSTR pszDeviceInterface, - IN REGSAM samDesired, - IN REGDISPOSITION Disposition, - OUT PHKEY phkDeviceInterface, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Open_Device_Interface_Key_ExA( - IN LPCSTR pszDeviceInterface, - IN REGSAM samDesired, - IN REGDISPOSITION Disposition, - OUT PHKEY phkDeviceInterface, - IN ULONG ulFlags, - IN HMACHINE hMachine OPTIONAL); - -CMAPI -CONFIGRET -WINAPI -CM_Open_Device_Interface_Key_ExW( - IN LPCWSTR pszDeviceInterface, - IN REGSAM samDesired, - IN REGDISPOSITION Disposition, - OUT PHKEY phkDeviceInterface, - IN ULONG ulFlags, - IN HMACHINE hMachine OPTIONAL); - -#ifdef UNICODE -#define CM_Open_Device_Interface_Key CM_Open_Device_Interface_KeyW -#define CM_Open_Device_Interface_Key_Ex CM_Open_Device_Interface_Key_ExW -#else -#define CM_Open_Device_Interface_Key CM_Open_Device_Interface_KeyA -#define CM_Open_Device_Interface_Key_Ex CM_Open_Device_Interface_Key_ExA -#endif - -CMAPI -CONFIGRET -WINAPI -CM_Delete_Device_Interface_KeyA( - IN LPCSTR pszDeviceInterface, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Delete_Device_Interface_KeyW( - IN LPCWSTR pszDeviceInterface, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Delete_Device_Interface_Key_ExA( - IN LPCSTR pszDeviceInterface, - IN ULONG ulFlags, - IN HMACHINE hMachine OPTIONAL); - -CMAPI -CONFIGRET -WINAPI -CM_Delete_Device_Interface_Key_ExW( - IN LPCWSTR pszDeviceInterface, - IN ULONG ulFlags, - IN HMACHINE hMachine OPTIONAL); - -#ifdef UNICODE -#define CM_Delete_Device_Interface_Key CM_Delete_Device_Interface_KeyW -#define CM_Delete_Device_Interface_Key_Ex CM_Delete_Device_Interface_Key_ExW -#else -#define CM_Delete_Device_Interface_Key CM_Delete_Device_Interface_KeyA -#define CM_Delete_Device_Interface_Key_Ex CM_Delete_Device_Interface_Key_ExA -#endif - -#endif /* (WINVER >= _WIN32_WINNT_VISTA) */ - -CMAPI -CONFIGRET -WINAPI -CM_Query_Arbitrator_Free_Data( - OUT PVOID pData, - IN ULONG DataLen, - IN DEVINST dnDevInst, - IN RESOURCEID ResourceID, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Query_Arbitrator_Free_Data_Ex( - OUT PVOID pData, - IN ULONG DataLen, - IN DEVINST dnDevInst, - IN RESOURCEID ResourceID, - IN ULONG ulFlags, - IN HMACHINE hMachine OPTIONAL); - -CMAPI -CONFIGRET -WINAPI -CM_Query_Arbitrator_Free_Size( - OUT PULONG pulSize, - IN DEVINST dnDevInst, - IN RESOURCEID ResourceID, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Query_Arbitrator_Free_Size_Ex( - OUT PULONG pulSize, - IN DEVINST dnDevInst, - IN RESOURCEID ResourceID, - IN ULONG ulFlags, - IN HMACHINE hMachine OPTIONAL); - -CMAPI -CONFIGRET -WINAPI -CM_Query_Remove_SubTree( - IN DEVINST dnAncestor, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Query_Remove_SubTree_Ex( - IN DEVINST dnAncestor, - IN ULONG ulFlags, - IN HMACHINE hMachine OPTIONAL); - -CMAPI -CONFIGRET -WINAPI -CM_Query_And_Remove_SubTreeA( - IN DEVINST dnAncestor, - OUT PPNP_VETO_TYPE pVetoType, - OUT LPSTR pszVetoName, - IN ULONG ulNameLength, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Query_And_Remove_SubTreeW( - IN DEVINST dnAncestor, - OUT PPNP_VETO_TYPE pVetoType, - OUT LPWSTR pszVetoName, - IN ULONG ulNameLength, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Query_And_Remove_SubTree_ExA( - IN DEVINST dnAncestor, - OUT PPNP_VETO_TYPE pVetoType, - OUT LPSTR pszVetoName, - IN ULONG ulNameLength, - IN ULONG ulFlags, - IN HMACHINE hMachine); - -CMAPI -CONFIGRET -WINAPI -CM_Query_And_Remove_SubTree_ExW( - IN DEVINST dnAncestor, - OUT PPNP_VETO_TYPE pVetoType, - OUT LPWSTR pszVetoName, - IN ULONG ulNameLength, - IN ULONG ulFlags, - IN HMACHINE hMachine); - -#ifdef UNICODE -#define CM_Query_And_Remove_SubTree CM_Query_And_Remove_SubTreeW -#define CM_Query_And_Remove_SubTree_Ex CM_Query_And_Remove_SubTree_ExW -#else -#define CM_Query_And_Remove_SubTree CM_Query_And_Remove_SubTreeA -#define CM_Query_And_Remove_SubTree_Ex CM_Query_And_Remove_SubTree_ExA -#endif - -CMAPI -CONFIGRET -WINAPI -CM_Query_Resource_Conflict_List( - OUT PCONFLICT_LIST pclConflictList, - IN DEVINST dnDevInst, - IN RESOURCEID ResourceID, - IN PCVOID ResourceData, - IN ULONG ResourceLen, - IN ULONG ulFlags, - IN HMACHINE hMachine OPTIONAL); - -CMAPI -CONFIGRET -WINAPI -CM_Reenumerate_DevNode( - IN DEVINST dnDevInst, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Reenumerate_DevNode_Ex( - IN DEVINST dnDevInst, - IN ULONG ulFlags, - IN HMACHINE hMachine); - -#define CM_Reenumerate_DevInst CM_Reenumerate_DevNode -#define CM_Reenumerate_DevInst_Ex CM_Reenumerate_DevNode_Ex - -CMAPI -CONFIGRET -WINAPI -CM_Register_Device_InterfaceA( - IN DEVINST dnDevInst, - IN LPGUID InterfaceClassGuid, - IN LPCSTR pszReference OPTIONAL, - OUT LPSTR pszDeviceInterface, - IN OUT PULONG pulLength, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Register_Device_InterfaceW( - IN DEVINST dnDevInst, - IN LPGUID InterfaceClassGuid, - IN LPCWSTR pszReference OPTIONAL, - OUT LPWSTR pszDeviceInterface, - IN OUT PULONG pulLength, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Register_Device_Interface_ExA( - IN DEVINST dnDevInst, - IN LPGUID InterfaceClassGuid, - IN LPCSTR pszReference OPTIONAL, - OUT LPSTR pszDeviceInterface, - IN OUT PULONG pulLength, - IN ULONG ulFlags, - IN HMACHINE hMachine OPTIONAL); - -CMAPI -CONFIGRET -WINAPI -CM_Register_Device_Interface_ExW( - IN DEVINST dnDevInst, - IN LPGUID InterfaceClassGuid, - IN LPCWSTR pszReference OPTIONAL, - OUT LPWSTR pszDeviceInterface, - IN OUT PULONG pulLength, - IN ULONG ulFlags, - IN HMACHINE hMachine OPTIONAL); - -#ifdef UNICODE -#define CM_Register_Device_Interface CM_Register_Device_InterfaceW -#define CM_Register_Device_Interface_Ex CM_Register_Device_Interface_ExW -#else -#define CM_Register_Device_Interface CM_Register_Device_InterfaceA -#define CM_Register_Device_Interface_Ex CM_Register_Device_Interface_ExA -#endif - -CMAPI -CONFIGRET -WINAPI -CM_Request_Device_EjectA( - IN DEVINST dnDevInst, - OUT PPNP_VETO_TYPE pVetoType, - OUT LPSTR pszVetoName, - IN ULONG ulNameLength, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Request_Device_Eject_ExW( - IN DEVINST dnDevInst, - OUT PPNP_VETO_TYPE pVetoType, - OUT LPWSTR pszVetoName, - IN ULONG ulNameLength, - IN ULONG ulFlags, - IN HMACHINE hMachine); - -CMAPI -CONFIGRET -WINAPI -CM_Request_Device_Eject_ExA( - IN DEVINST dnDevInst, - OUT PPNP_VETO_TYPE pVetoType, - OUT LPSTR pszVetoName, - IN ULONG ulNameLength, - IN ULONG ulFlags, - IN HMACHINE hMachine); - -CMAPI -CONFIGRET -WINAPI -CM_Request_Device_EjectW( - IN DEVINST dnDevInst, - OUT PPNP_VETO_TYPE pVetoType, - OUT LPWSTR pszVetoName, - IN ULONG ulNameLength, - IN ULONG ulFlags); - -#ifdef UNICODE -#define CM_Request_Device_Eject CM_Request_Device_EjectW -#define CM_Request_Device_Eject_Ex CM_Request_Device_Eject_ExW -#else -#define CM_Request_Device_Eject CM_Request_Device_EjectA -#define CM_Request_Device_Eject_Ex CM_Request_Device_Eject_ExA -#endif - -CMAPI -CONFIGRET -WINAPI -CM_Request_Eject_PC(VOID); - -CMAPI -CONFIGRET -WINAPI -CM_Request_Eject_PC_Ex( - IN HMACHINE hMachine OPTIONAL); - -CMAPI -CONFIGRET -WINAPI -CM_Run_Detection( - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Run_Detection_Ex( - IN ULONG ulFlags, - IN HMACHINE hMachine OPTIONAL); - -#if (WINVER >= _WIN32_WINNT_VISTA) - -CONFIGRET -CM_Apply_PowerScheme(VOID); - -CONFIGRET -CM_Write_UserPowerKey( - IN CONST GUID *SchemeGuid OPTIONAL, - IN CONST GUID *SubGroupOfPowerSettingsGuid OPTIONAL, - IN CONST GUID *PowerSettingGuid OPTIONAL, - IN ULONG AccessFlags, - IN ULONG Type, - IN UCHAR *Buffer, - IN DWORD BufferSize, - OUT PDWORD Error); - -CONFIGRET -CM_Set_ActiveScheme( - IN CONST GUID *SchemeGuid, - OUT PDWORD Error); - -CONFIGRET -CM_Restore_DefaultPowerScheme( - IN CONST GUID *SchemeGuid, - OUT PDWORD Error); - -CONFIGRET -CM_RestoreAll_DefaultPowerSchemes( - OUT PDWORD Error); - -CONFIGRET -CM_Duplicate_PowerScheme( - IN CONST GUID *SourceSchemeGuid, - IN GUID **DestinationSchemeGuid, - OUT PDWORD Error); - -CONFIGRET -CM_Delete_PowerScheme( - IN CONST GUID *SchemeGuid, - OUT PDWORD Error); - -CONFIGRET -CM_Import_PowerScheme( - IN LPCWSTR ImportFileNamePath, - IN OUT GUID **DestinationSchemeGuid, - OUT PDWORD Error); - -#endif /* (WINVER >= _WIN32_WINNT_VISTA) */ - -CMAPI -CONFIGRET -WINAPI -CM_Set_DevNode_Problem( - IN DEVINST dnDevInst, - IN ULONG ulProblem, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Set_DevNode_Problem_Ex( - IN DEVINST dnDevInst, - IN ULONG ulProblem, - IN ULONG ulFlags, - IN HMACHINE hMachine); - -#define CM_Set_DevInst_Problem CM_Set_DevNode_Problem -#define CM_Set_DevInst_Problem_Ex CM_Set_DevNode_Problem_Ex - -CMAPI -CONFIGRET -WINAPI -CM_Unregister_Device_InterfaceA( - IN LPCSTR pszDeviceInterface, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Unregister_Device_InterfaceW( - IN LPCWSTR pszDeviceInterface, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Unregister_Device_Interface_ExA( - IN LPCSTR pszDeviceInterface, - IN ULONG ulFlags, - IN HMACHINE hMachine OPTIONAL); - -CMAPI -CONFIGRET -WINAPI -CM_Unregister_Device_Interface_ExW( - IN LPCWSTR pszDeviceInterface, - IN ULONG ulFlags, - IN HMACHINE hMachine OPTIONAL); - -#ifdef UNICODE -#define CM_Unregister_Device_Interface CM_Unregister_Device_InterfaceW -#define CM_Unregister_Device_Interface_Ex CM_Unregister_Device_Interface_ExW -#else -#define CM_Unregister_Device_Interface CM_Unregister_Device_InterfaceA -#define CM_Unregister_Device_Interface_Ex CM_Unregister_Device_Interface_ExA -#endif - -CMAPI -CONFIGRET -WINAPI -CM_Register_Device_Driver( - IN DEVINST dnDevInst, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Register_Device_Driver_Ex( - IN DEVINST dnDevInst, - IN ULONG ulFlags, - IN HMACHINE hMachine OPTIONAL); - -CMAPI -CONFIGRET -WINAPI -CM_Remove_SubTree( - IN DEVINST dnAncestor, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Remove_SubTree_Ex( - IN DEVINST dnAncestor, - IN ULONG ulFlags, - IN HMACHINE hMachine OPTIONAL); - -CMAPI -CONFIGRET -WINAPI -CM_Set_DevNode_Registry_PropertyA( - IN DEVINST dnDevInst, - IN ULONG ulProperty, - IN PCVOID Buffer OPTIONAL, - IN ULONG ulLength, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Set_DevNode_Registry_PropertyW( - IN DEVINST dnDevInst, - IN ULONG ulProperty, - IN PCVOID Buffer OPTIONAL, - IN ULONG ulLength, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Set_DevNode_Registry_Property_ExA( - IN DEVINST dnDevInst, - IN ULONG ulProperty, - IN PCVOID Buffer OPTIONAL, - IN ULONG ulLength, - IN ULONG ulFlags, - IN HMACHINE hMachine); - -CMAPI -CONFIGRET -WINAPI -CM_Set_DevNode_Registry_Property_ExW( - IN DEVINST dnDevInst, - IN ULONG ulProperty, - IN PCVOID Buffer OPTIONAL, - IN ULONG ulLength, - IN ULONG ulFlags, - IN HMACHINE hMachine); - -#define CM_Set_DevInst_Registry_PropertyW CM_Set_DevNode_Registry_PropertyW -#define CM_Set_DevInst_Registry_PropertyA CM_Set_DevNode_Registry_PropertyA -#define CM_Set_DevInst_Registry_Property_ExW CM_Set_DevNode_Registry_Property_ExW -#define CM_Set_DevInst_Registry_Property_ExA CM_Set_DevNode_Registry_Property_ExA - -#ifdef UNICODE -#define CM_Set_DevInst_Registry_Property CM_Set_DevNode_Registry_PropertyW -#define CM_Set_DevInst_Registry_Property_Ex CM_Set_DevNode_Registry_Property_ExW -#define CM_Set_DevNode_Registry_Property CM_Set_DevNode_Registry_PropertyW -#define CM_Set_DevNode_Registry_Property_Ex CM_Set_DevNode_Registry_Property_ExW -#else -#define CM_Set_DevInst_Registry_Property CM_Set_DevNode_Registry_PropertyA -#define CM_Set_DevInst_Registry_Property_Ex CM_Set_DevNode_Registry_Property_ExA -#define CM_Set_DevNode_Registry_Property CM_Set_DevNode_Registry_PropertyA -#define CM_Set_DevNode_Registry_Property_Ex CM_Set_DevNode_Registry_Property_ExA -#endif /* UNICODE */ - -CMAPI -CONFIGRET -WINAPI -CM_Set_HW_Prof( - IN ULONG ulHardwareProfile, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Set_HW_Prof_Ex( - IN ULONG ulHardwareProfile, - IN ULONG ulFlags, - IN HMACHINE hMachine); - -CMAPI -CONFIGRET -WINAPI -CM_Set_HW_Prof_FlagsA( - IN DEVINSTID_A szDevInstName, - IN ULONG ulConfig, - IN ULONG ulValue, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Set_HW_Prof_FlagsW( - IN DEVINSTID_W szDevInstName, - IN ULONG ulConfig, - IN ULONG ulValue, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Set_HW_Prof_Flags_ExA( - IN DEVINSTID_A szDevInstName, - IN ULONG ulConfig, - IN ULONG ulValue, - IN ULONG ulFlags, - IN HMACHINE hMachine); - -CMAPI -CONFIGRET -WINAPI -CM_Set_HW_Prof_Flags_ExW( - IN DEVINSTID_W szDevInstName, - IN ULONG ulConfig, - IN ULONG ulValue, - IN ULONG ulFlags, - IN HMACHINE hMachine); - -#ifdef UNICODE -#define CM_Set_HW_Prof_Flags CM_Set_HW_Prof_FlagsW -#define CM_Set_HW_Prof_Flags_Ex CM_Set_HW_Prof_Flags_ExW -#else -#define CM_Set_HW_Prof_Flags CM_Set_HW_Prof_FlagsA -#define CM_Set_HW_Prof_Flags_Ex CM_Set_HW_Prof_Flags_ExA -#endif /* UNICODE */ - -CMAPI -CONFIGRET -WINAPI -CM_Setup_DevNode( - IN DEVINST dnDevInst, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Setup_DevNode_Ex( - IN DEVINST dnDevInst, - IN ULONG ulFlags, - IN HMACHINE hMachine OPTIONAL); - -#define CM_Setup_DevInst CM_Setup_DevNode -#define CM_Setup_DevInst_Ex CM_Setup_DevNode_Ex - -CMAPI -CONFIGRET -WINAPI -CM_Test_Range_Available( - IN DWORDLONG ullStartValue, - IN DWORDLONG ullEndValue, - IN RANGE_LIST rlh, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Uninstall_DevNode( - IN DEVINST dnPhantom, - IN ULONG ulFlags); - -CMAPI -CONFIGRET -WINAPI -CM_Uninstall_DevNode_Ex( - IN DEVINST dnPhantom, - IN ULONG ulFlags, - IN HMACHINE hMachine); - -#define CM_Uninstall_DevInst CM_Uninstall_DevNode -#define CM_Uninstall_DevInst_Ex CM_Uninstall_DevNode_Ex - - -#if (WINVER >= _WIN32_WINNT_WIN2K) - -#define CM_WaitNoPendingInstallEvents CMP_WaitNoPendingInstallEvents - -CMAPI -DWORD -WINAPI -CMP_WaitNoPendingInstallEvents( - IN DWORD dwTimeout); - -#endif /* (WINVER >= _WIN32_WINNT_WIN2K) */ - -#ifdef __cplusplus -} -#endif diff --git a/reactos/include/psdk/devpropdef.h b/reactos/include/psdk/devpropdef.h deleted file mode 100644 index 49e4c91974a..00000000000 --- a/reactos/include/psdk/devpropdef.h +++ /dev/null @@ -1,84 +0,0 @@ -#ifndef _DEVPROPDEF_H_ -#define _DEVPROPDEF_H_ - -typedef ULONG DEVPROPTYPE, *PDEVPROPTYPE; - -#define DEVPROP_TYPEMOD_ARRAY 0x00001000 -#define DEVPROP_TYPEMOD_LIST 0x00002000 - -#define DEVPROP_TYPE_EMPTY 0x00000000 -#define DEVPROP_TYPE_NULL 0x00000001 -#define DEVPROP_TYPE_SBYTE 0x00000002 -#define DEVPROP_TYPE_BYTE 0x00000003 -#define DEVPROP_TYPE_INT16 0x00000004 -#define DEVPROP_TYPE_UINT16 0x00000005 -#define DEVPROP_TYPE_INT32 0x00000006 -#define DEVPROP_TYPE_UINT32 0x00000007 -#define DEVPROP_TYPE_INT64 0x00000008 -#define DEVPROP_TYPE_UINT64 0x00000009 -#define DEVPROP_TYPE_FLOAT 0x0000000A -#define DEVPROP_TYPE_DOUBLE 0x0000000B -#define DEVPROP_TYPE_DECIMAL 0x0000000C -#define DEVPROP_TYPE_GUID 0x0000000D -#define DEVPROP_TYPE_CURRENCY 0x0000000E -#define DEVPROP_TYPE_DATE 0x0000000F -#define DEVPROP_TYPE_FILETIME 0x00000010 -#define DEVPROP_TYPE_BOOLEAN 0x00000011 -#define DEVPROP_TYPE_STRING 0x00000012 -#define DEVPROP_TYPE_STRING_LIST (DEVPROP_TYPE_STRING|DEVPROP_TYPEMOD_LIST) -#define DEVPROP_TYPE_SECURITY_DESCRIPTOR 0x00000013 -#define DEVPROP_TYPE_SECURITY_DESCRIPTOR_STRING 0x00000014 -#define DEVPROP_TYPE_DEVPROPKEY 0x00000015 -#define DEVPROP_TYPE_DEVPROPTYPE 0x00000016 -#define DEVPROP_TYPE_BINARY (DEVPROP_TYPE_BYTE|DEVPROP_TYPEMOD_ARRAY) -#define DEVPROP_TYPE_ERROR 0x00000017 -#define DEVPROP_TYPE_NTSTATUS 0x00000018 -#define DEVPROP_TYPE_STRING_INDIRECT 0x00000019 - -#define MAX_DEVPROP_TYPE 0x00000019 -#define MAX_DEVPROP_TYPEMOD 0x00002000 - -#define DEVPROP_MASK_TYPE 0x00000FFF -#define DEVPROP_MASK_TYPEMOD 0x0000F000 - -typedef CHAR DEVPROP_BOOLEAN, *PDEVPROP_BOOLEAN; - -#define DEVPROP_TRUE ((DEVPROP_BOOLEAN)-1) -#define DEVPROP_FALSE ((DEVPROP_BOOLEAN) 0) - -#ifndef DEVPROPKEY_DEFINED -#define DEVPROPKEY_DEFINED - -typedef GUID DEVPROPGUID, *PDEVPROPGUID; -typedef ULONG DEVPROPID, *PDEVPROPID; - -typedef struct _DEVPROPKEY { - DEVPROPGUID fmtid; - DEVPROPID pid; -} DEVPROPKEY, *PDEVPROPKEY; - -#endif /* DEVPROPKEY_DEFINED */ - -#define DEVPROPID_FIRST_USABLE 2 - -#endif /* _DEVPROPDEF_H_ */ - -#ifdef DEFINE_DEVPROPKEY -#undef DEFINE_DEVPROPKEY -#endif -#ifdef INITGUID -#define DEFINE_DEVPROPKEY(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8, pid) EXTERN_C const DEVPROPKEY DECLSPEC_SELECTANY name = {{ l, w1, w2, {b1, b2, b3, b4, b5, b6, b7, b8}}, pid} -#else -#define DEFINE_DEVPROPKEY(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8, pid) EXTERN_C const DEVPROPKEY name -#endif /* INITGUID */ - -#ifndef IsEqualDevPropKey - -#ifdef __cplusplus -#define IsEqualDevPropKey(a, b) (((a).pid == (b).pid) && IsEqualIID((a).fmtid, (b).fmtid)) -#else -#define IsEqualDevPropKey(a, b) (((a).pid == (b).pid) && IsEqualIID(&(a).fmtid, &(b).fmtid)) -#endif - -#endif /* !IsEqualDevPropKey */ - diff --git a/reactos/include/psdk/evntprov.h b/reactos/include/psdk/evntprov.h deleted file mode 100644 index 69cc7ce94cf..00000000000 --- a/reactos/include/psdk/evntprov.h +++ /dev/null @@ -1,335 +0,0 @@ -#pragma once - -#ifndef EVNTAPI -#ifndef MIDL_PASS -#ifdef _EVNT_SOURCE_ -#define EVNTAPI __stdcall -#else -#define EVNTAPI DECLSPEC_IMPORT __stdcall -#endif /* _EVNT_SOURCE_ */ -#endif /* MIDL_PASS */ -#endif /* EVNTAPI */ - -#ifdef __cplusplus -extern "C" { -#endif - -#define EVENT_MIN_LEVEL (0) -#define EVENT_MAX_LEVEL (0xff) - -#define EVENT_ACTIVITY_CTRL_GET_ID (1) -#define EVENT_ACTIVITY_CTRL_SET_ID (2) -#define EVENT_ACTIVITY_CTRL_CREATE_ID (3) -#define EVENT_ACTIVITY_CTRL_GET_SET_ID (4) -#define EVENT_ACTIVITY_CTRL_CREATE_SET_ID (5) - -typedef ULONGLONG REGHANDLE, *PREGHANDLE; - -#define MAX_EVENT_DATA_DESCRIPTORS (128) -#define MAX_EVENT_FILTER_DATA_SIZE (1024) - -#define EVENT_FILTER_TYPE_SCHEMATIZED (0x80000000) - -typedef struct _EVENT_DATA_DESCRIPTOR { - ULONGLONG Ptr; - ULONG Size; - ULONG Reserved; -} EVENT_DATA_DESCRIPTOR, *PEVENT_DATA_DESCRIPTOR; - -typedef struct _EVENT_DESCRIPTOR { - USHORT Id; - UCHAR Version; - UCHAR Channel; - UCHAR Level; - UCHAR Opcode; - USHORT Task; - ULONGLONG Keyword; -} EVENT_DESCRIPTOR, *PEVENT_DESCRIPTOR; -typedef const EVENT_DESCRIPTOR *PCEVENT_DESCRIPTOR; - -typedef struct _EVENT_FILTER_DESCRIPTOR { - ULONGLONG Ptr; - ULONG Size; - ULONG Type; -} EVENT_FILTER_DESCRIPTOR, *PEVENT_FILTER_DESCRIPTOR; - -typedef struct _EVENT_FILTER_HEADER { - USHORT Id; - UCHAR Version; - UCHAR Reserved[5]; - ULONGLONG InstanceId; - ULONG Size; - ULONG NextOffset; -} EVENT_FILTER_HEADER, *PEVENT_FILTER_HEADER; - -#ifndef _ETW_KM_ - -typedef VOID -(NTAPI *PENABLECALLBACK)( - IN LPCGUID SourceId, - IN ULONG IsEnabled, - IN UCHAR Level, - IN ULONGLONG MatchAnyKeyword, - IN ULONGLONG MatchAllKeyword, - IN PEVENT_FILTER_DESCRIPTOR FilterData OPTIONAL, - IN OUT PVOID CallbackContext OPTIONAL); - -#if (WINVER >= _WIN32_WINNT_VISTA) -ULONG -EVNTAPI -EventRegister( - IN LPCGUID ProviderId, - IN PENABLECALLBACK EnableCallback OPTIONAL, - IN PVOID CallbackContext OPTIONAL, - OUT PREGHANDLE RegHandle); - -ULONG -EVNTAPI -EventUnregister( - IN REGHANDLE RegHandle); - -BOOLEAN -EVNTAPI -EventEnabled( - IN REGHANDLE RegHandle, - IN PCEVENT_DESCRIPTOR EventDescriptor); - -BOOLEAN -EVNTAPI -EventProviderEnabled( - IN REGHANDLE RegHandle, - IN UCHAR Level, - IN ULONGLONG Keyword); - -ULONG -EVNTAPI -EventWrite( - IN REGHANDLE RegHandle, - IN PCEVENT_DESCRIPTOR EventDescriptor, - IN ULONG UserDataCount, - IN PEVENT_DATA_DESCRIPTOR UserData); - -ULONG -EVNTAPI -EventWriteTransfer( - IN REGHANDLE RegHandle, - IN PCEVENT_DESCRIPTOR EventDescriptor, - IN LPCGUID ActivityId OPTIONAL, - IN LPCGUID RelatedActivityId OPTIONAL, - IN ULONG UserDataCount, - IN PEVENT_DATA_DESCRIPTOR UserData OPTIONAL); - -ULONG -EVNTAPI -EventWriteString( - IN REGHANDLE RegHandle, - IN UCHAR Level, - IN ULONGLONG Keyword, - IN PCWSTR String); - -ULONG -EVNTAPI -EventActivityIdControl( - IN ULONG ControlCode, - IN OUT LPGUID ActivityId); - -#endif /* (WINVER >= _WIN32_WINNT_VISTA) */ - -#if (WINVER >= _WIN32_WINNT_WIN7) -ULONG -EVNTAPI -EventWriteEx( - IN REGHANDLE RegHandle, - IN PCEVENT_DESCRIPTOR EventDescriptor, - IN ULONG64 Filter, - IN ULONG Flags, - IN LPCGUID ActivityId OPTIONAL, - IN LPCGUID RelatedActivityId OPTIONAL, - IN ULONG UserDataCount, - IN PEVENT_DATA_DESCRIPTOR UserData OPTIONAL); -#endif - -#endif // _ETW_KM_ - -FORCEINLINE -VOID -EventDataDescCreate( - OUT PEVENT_DATA_DESCRIPTOR EventDataDescriptor, - IN const VOID* DataPtr, - IN ULONG DataSize) -{ - EventDataDescriptor->Ptr = (ULONGLONG)(ULONG_PTR)DataPtr; - EventDataDescriptor->Size = DataSize; - EventDataDescriptor->Reserved = 0; -} - -FORCEINLINE -VOID -EventDescCreate( - OUT PEVENT_DESCRIPTOR EventDescriptor, - IN USHORT Id, - IN UCHAR Version, - IN UCHAR Channel, - IN UCHAR Level, - IN USHORT Task, - IN UCHAR Opcode, - IN ULONGLONG Keyword) -{ - EventDescriptor->Id = Id; - EventDescriptor->Version = Version; - EventDescriptor->Channel = Channel; - EventDescriptor->Level = Level; - EventDescriptor->Task = Task; - EventDescriptor->Opcode = Opcode; - EventDescriptor->Keyword = Keyword; -} - -FORCEINLINE -VOID -EventDescZero( - OUT PEVENT_DESCRIPTOR EventDescriptor) -{ - memset(EventDescriptor, 0, sizeof(EVENT_DESCRIPTOR)); -} - -FORCEINLINE -USHORT -EventDescGetId( - IN PCEVENT_DESCRIPTOR EventDescriptor) -{ - return (EventDescriptor->Id); -} - -FORCEINLINE -UCHAR -EventDescGetVersion( - IN PCEVENT_DESCRIPTOR EventDescriptor) -{ - return (EventDescriptor->Version); -} - -FORCEINLINE -USHORT -EventDescGetTask( - IN PCEVENT_DESCRIPTOR EventDescriptor) -{ - return (EventDescriptor->Task); -} - -FORCEINLINE -UCHAR -EventDescGetOpcode( - IN PCEVENT_DESCRIPTOR EventDescriptor) -{ - return (EventDescriptor->Opcode); -} - -FORCEINLINE -UCHAR -EventDescGetChannel( - IN PCEVENT_DESCRIPTOR EventDescriptor) -{ - return (EventDescriptor->Channel); -} - -FORCEINLINE -UCHAR -EventDescGetLevel( - IN PCEVENT_DESCRIPTOR EventDescriptor) -{ - return (EventDescriptor->Level); -} - -FORCEINLINE -ULONGLONG -EventDescGetKeyword( - IN PCEVENT_DESCRIPTOR EventDescriptor) -{ - return (EventDescriptor->Keyword); -} - -FORCEINLINE -PEVENT_DESCRIPTOR -EventDescSetId( - IN PEVENT_DESCRIPTOR EventDescriptor, - IN USHORT Id) -{ - EventDescriptor->Id = Id; - return (EventDescriptor); -} - -FORCEINLINE -PEVENT_DESCRIPTOR -EventDescSetVersion( - IN PEVENT_DESCRIPTOR EventDescriptor, - IN UCHAR Version) -{ - EventDescriptor->Version = Version; - return (EventDescriptor); -} - -FORCEINLINE -PEVENT_DESCRIPTOR -EventDescSetTask( - IN PEVENT_DESCRIPTOR EventDescriptor, - IN USHORT Task) -{ - EventDescriptor->Task = Task; - return (EventDescriptor); -} - -FORCEINLINE -PEVENT_DESCRIPTOR -EventDescSetOpcode( - IN PEVENT_DESCRIPTOR EventDescriptor, - IN UCHAR Opcode) -{ - EventDescriptor->Opcode = Opcode; - return (EventDescriptor); -} - -FORCEINLINE -PEVENT_DESCRIPTOR -EventDescSetLevel( - IN PEVENT_DESCRIPTOR EventDescriptor, - IN UCHAR Level) -{ - EventDescriptor->Level = Level; - return (EventDescriptor); -} - -FORCEINLINE -PEVENT_DESCRIPTOR -EventDescSetChannel( - IN PEVENT_DESCRIPTOR EventDescriptor, - IN UCHAR Channel) -{ - EventDescriptor->Channel = Channel; - return (EventDescriptor); -} - -FORCEINLINE -PEVENT_DESCRIPTOR -EventDescSetKeyword( - IN PEVENT_DESCRIPTOR EventDescriptor, - IN ULONGLONG Keyword) -{ - EventDescriptor->Keyword = Keyword; - return (EventDescriptor); -} - - -FORCEINLINE -PEVENT_DESCRIPTOR -EventDescOrKeyword( - IN PEVENT_DESCRIPTOR EventDescriptor, - IN ULONGLONG Keyword) -{ - EventDescriptor->Keyword |= Keyword; - return (EventDescriptor); -} - -#ifdef __cplusplus -} -#endif - diff --git a/reactos/include/psdk/ktmtypes.h b/reactos/include/psdk/ktmtypes.h index 90b042f3f0b..77cf5782858 100644 --- a/reactos/include/psdk/ktmtypes.h +++ b/reactos/include/psdk/ktmtypes.h @@ -72,10 +72,7 @@ #define MAX_TRANSACTION_DESCRIPTION_LENGTH 64 #define MAX_RESOURCEMANAGER_DESCRIPTION_LENGTH 64 -#ifndef _WDMDDK_ typedef GUID UOW, *PUOW; -#endif - typedef GUID CRM_PROTOCOL_ID, *PCRM_PROTOCOL_ID; typedef ULONG NOTIFICATION_MASK; typedef ULONG SAVEPOINT_ID, *PSAVEPOINT_ID; diff --git a/reactos/include/psdk/ntdef.h b/reactos/include/psdk/ntdef.h index fdc365085b2..a0aae3ec3a3 100644 --- a/reactos/include/psdk/ntdef.h +++ b/reactos/include/psdk/ntdef.h @@ -1,13 +1,15 @@ -#ifndef _NTDEF_ -#define _NTDEF_ +#ifndef _NTDEF_H +#define _NTDEF_H -/* Dependencies */ +// +// Dependencies +// #include #include #include #include -// FIXME: Shouldn't be included! +// FIXME: Should we include these here? #include #include @@ -22,8 +24,11 @@ typedef unsigned long POINTER_64; // FIXME! HACK!!! -/* Pseudo Modifiers for Input Parameters */ + +// +// Pseudo Modifiers for Input Parameters +// #ifndef IN #define IN #endif @@ -49,21 +54,29 @@ typedef unsigned long POINTER_64; // FIXME! HACK!!! #endif -/* Defines the "size" of an any-size array */ +// +// Defines the "size" of an any-size array +// #ifndef ANYSIZE_ARRAY #define ANYSIZE_ARRAY 1 #endif -/* Constant modifier */ +// +// Constant modifier +// #ifndef CONST #define CONST const #endif -/* TRUE/FALSE */ +// +// TRUE/FALSE +// #define FALSE 0 #define TRUE 1 -/* NULL/NULL64 */ +// +// NULL/NULL64 +// #ifndef NULL #ifdef __cplusplus #define NULL 0 @@ -72,8 +85,22 @@ typedef unsigned long POINTER_64; // FIXME! HACK!!! #define NULL ((void *)0) #define NULL64 ((void * POINTER_64)0) #endif -#endif /* NULL */ +#endif // NULL +typedef enum _EVENT_TYPE { + NotificationEvent, + SynchronizationEvent +} EVENT_TYPE; + +typedef enum _TIMER_TYPE { + NotificationTimer, + SynchronizationTimer +} TIMER_TYPE; + +typedef enum _WAIT_TYPE { + WaitAll, + WaitAny +} WAIT_TYPE; // // FIXME @@ -144,27 +171,35 @@ typedef unsigned long POINTER_64; // FIXME! HACK!!! #define ARGUMENT_PRESENT(ArgumentPointer) \ ((CHAR*)((ULONG_PTR)(ArgumentPointer)) != (CHAR*)NULL) -/* Returns the base address of a structure from a structure member */ +// +// Returns the base address of a structure from a structure member +// #ifndef CONTAINING_RECORD #define CONTAINING_RECORD(address, type, field) \ ((type *)(((ULONG_PTR)address) - (ULONG_PTR)(&(((type *)0)->field)))) #endif -/* Returns the byte offset of the specified structure's member */ +// +// Returns the byte offset of the specified structure's member +// #ifndef __GNUC__ #define FIELD_OFFSET(Type, Field) ((LONG)(LONG_PTR)&(((Type*) 0)->Field)) #else #define FIELD_OFFSET(Type, Field) __builtin_offsetof(Type, Field) #endif -/* Returns the type's alignment */ +// +// Returns the type's alignment +// #if defined(_MSC_VER) && (_MSC_VER >= 1300) #define TYPE_ALIGNMENT(t) __alignof(t) #else #define TYPE_ALIGNMENT(t) FIELD_OFFSET( struct { char x; t test; }, test ) #endif -/* Calling Conventions */ +// +// Calling Conventions +// #if defined(_M_IX86) #define FASTCALL __fastcall #else @@ -173,13 +208,21 @@ typedef unsigned long POINTER_64; // FIXME! HACK!!! #define NTAPI __stdcall +// +// Used by the DDK exclusively , don't put in drivers +// +#define DDKAPI __stdcall // Use NTAPI instead +#define DDKCDECLAPI __cdecl // Just use __cdecl -/* Import and Export Specifiers */ +// +// Import and Export Specifiers +// -/* Done the same way as in windef.h for now */ +// Done the same way as in windef.h for now #define DECLSPEC_IMPORT __declspec(dllimport) #define DECLSPEC_NORETURN __declspec(noreturn) + #ifndef DECLSPEC_ADDRSAFE #if (_MSC_VER >= 1200) && (defined(_M_ALPHA) || defined(_M_AXP64)) #define DECLSPEC_ADDRSAFE __declspec(address_safe) @@ -200,7 +243,9 @@ typedef unsigned long POINTER_64; // FIXME! HACK!!! #endif #endif -/* Inlines */ +// +// Inlines +// #ifndef FORCEINLINE #if (_MSC_VER >= 1200) #define FORCEINLINE __forceinline @@ -227,7 +272,9 @@ typedef unsigned long POINTER_64; // FIXME! HACK!!! #define NTAPI_INLINE #endif -/* Use to specify structure alignment */ +// +// Use to specify structure alignment +// #ifndef DECLSPEC_ALIGN #if defined(_MSC_VER) && (_MSC_VER >= 1300) && !defined(MIDL_PASS) #define DECLSPEC_ALIGN(x) __declspec(align(x)) @@ -238,13 +285,21 @@ typedef unsigned long POINTER_64; // FIXME! HACK!!! #endif #endif -/* Use to silence unused variable warnings when it is intentional */ + + +// +// Use to silence unused variable warnings when it is intentional +// #define UNREFERENCED_PARAMETER(P) {(P)=(P);} #define UNREFERENCED_LOCAL_VARIABLE(L) {(L)=(L);} #define DBG_UNREFERENCED_PARAMETER(P) #define DBG_UNREFERENCED_LOCAL_VARIABLE(L) -/* min/max helper macros */ + + +// +// min/max helper macros +// #ifndef NOMINMAX #ifndef min @@ -255,17 +310,25 @@ typedef unsigned long POINTER_64; // FIXME! HACK!!! #define max(a,b) (((a) > (b)) ? (a) : (b)) #endif -#endif /* NOMINMAX */ +#endif // NOMINMAX + + -/* Tell windef.h that we have defined some basic types */ +// +// Tell windef.h that we have defined some basic types +// #define BASETYPES -/* Void Pointers */ +// +// Void Pointers +// typedef void *PVOID; //typedef void * POINTER_64 PVOID64; typedef PVOID PVOID64; // FIXME! -/* Handle Type */ +// +// Handle Type +// #ifdef STRICT typedef void *HANDLE; #define DECLARE_HANDLE(n) typedef struct n##__{int i;}*n @@ -275,7 +338,9 @@ typedef PVOID HANDLE; #endif typedef HANDLE *PHANDLE; -/* Upper-Case Versions of Some Standard C Types */ +// +// Upper-Case Versions of Some Standard C Types +// #ifndef VOID #define VOID void typedef char CHAR; @@ -287,25 +352,47 @@ typedef int INT; #endif typedef double DOUBLE; -/* Unsigned Types */ +// +// Used to store a non-float 8 byte aligned structure +// +typedef struct _QUAD +{ + _ANONYMOUS_UNION union + { + __GNU_EXTENSION __int64 UseThisFieldToCopy; + double DoNotUseThisField; + }; +} QUAD, *PQUAD, UQUAD, *PUQUAD; + + +// +// Unsigned Types +// typedef unsigned char UCHAR, *PUCHAR; typedef unsigned short USHORT, *PUSHORT; typedef unsigned long ULONG, *PULONG; typedef CONST UCHAR *PCUCHAR; typedef CONST USHORT *PCUSHORT; typedef CONST ULONG *PCULONG; + typedef UCHAR FCHAR; typedef USHORT FSHORT; typedef ULONG FLONG; -typedef UCHAR BOOLEAN, *PBOOLEAN; +typedef UCHAR BOOLEAN; +typedef BOOLEAN *PBOOLEAN; + typedef ULONG LOGICAL; typedef ULONG *PLOGICAL; -/* Signed Types */ +// +// Signed Types +// typedef SHORT *PSHORT; typedef LONG *PLONG; + typedef LONG NTSTATUS; typedef NTSTATUS *PNTSTATUS; + typedef signed char SCHAR; typedef SCHAR *PSCHAR; @@ -314,15 +401,22 @@ typedef SCHAR *PSCHAR; typedef LONG HRESULT; #endif -/* 64-bit types */ +// +// 64-bit types +// __GNU_EXTENSION typedef __int64 LONGLONG, *PLONGLONG; __GNU_EXTENSION typedef unsigned __int64 ULONGLONG, *PULONGLONG; typedef ULONGLONG DWORDLONG, *PDWORDLONG; -/* Update Sequence Number */ +// +// Update Sequence Number +// typedef LONGLONG USN; -/* ANSI (Multi-byte Character) types */ + +// +// ANSI (Multi-byte Character) types +// typedef CHAR *PCHAR, *LPCH, *PCH; typedef CONST CHAR *LPCCH, *PCCH; typedef CHAR *NPSTR, *LPSTR, *PSTR; @@ -331,11 +425,15 @@ typedef CONST PSTR *PCZPSTR; typedef CONST CHAR *LPCSTR, *PCSTR; typedef PCSTR *PZPCSTR; -/* Pointer to an Asciiz string */ +// +// Pointer to an Asciiz string +// typedef CHAR *PSZ; typedef CONST char *PCSZ; -/* UNICODE (Wide Character) types */ +// +// UNICODE (Wide Character) types +// typedef wchar_t WCHAR; typedef WCHAR *PWCHAR, *LPWCH, *PWCH; typedef CONST WCHAR *LPCWCH, *PCWCH; @@ -347,27 +445,25 @@ typedef CONST WCHAR *LPCWSTR, *PCWSTR; typedef PCWSTR *PZPCWSTR; typedef CONST WCHAR UNALIGNED *LPCUWSTR, *PCUWSTR; -/* Cardinal Data Types */ +// +// Cardinal Data Types +// typedef char CCHAR, *PCCHAR; typedef short CSHORT, *PCSHORT; typedef ULONG CLONG, *PCLONG; -/* NLS basics (Locale and Language Ids) */ +// +// NLS basics (Locale and Language Ids) +// typedef ULONG LCID; typedef PULONG PLCID; typedef USHORT LANGID; -/* Used to store a non-float 8 byte aligned structure */ -typedef struct _QUAD -{ - _ANONYMOUS_UNION union - { - __GNU_EXTENSION __int64 UseThisFieldToCopy; - double DoNotUseThisField; - } DUMMYUNIONNAME; -} QUAD, *PQUAD, UQUAD, *PUQUAD; -/* Large Integer Unions */ + +// +// Large Integer Unions +// #if defined(MIDL_PASS) typedef struct _LARGE_INTEGER { #else @@ -382,7 +478,7 @@ typedef union _LARGE_INTEGER { ULONG LowPart; LONG HighPart; } u; -#endif /* MIDL_PASS */ +#endif //MIDL_PASS LONGLONG QuadPart; } LARGE_INTEGER, *PLARGE_INTEGER; @@ -400,26 +496,40 @@ typedef union _ULARGE_INTEGER { ULONG LowPart; ULONG HighPart; } u; -#endif /* MIDL_PASS */ +#endif //MIDL_PASS ULONGLONG QuadPart; } ULARGE_INTEGER, *PULARGE_INTEGER; -/* Physical Addresses are always treated as 64-bit wide */ +// +// Physical Addresses are always treated as 64-bit wide +// typedef LARGE_INTEGER PHYSICAL_ADDRESS, *PPHYSICAL_ADDRESS; -/* Locally Unique Identifier */ + + +// +// Locally Unique Identifier +// typedef struct _LUID { ULONG LowPart; LONG HighPart; } LUID, *PLUID; -/* Native API Return Value Macros */ + + +// +// Native API Return Value Macros +// #define NT_SUCCESS(Status) (((NTSTATUS)(Status)) >= 0) #define NT_INFORMATION(Status) ((((ULONG)(Status)) >> 30) == 1) #define NT_WARNING(Status) ((((ULONG)(Status)) >> 30) == 2) #define NT_ERROR(Status) ((((ULONG)(Status)) >> 30) == 3) -/* String Types */ + + +// +// String Types +// typedef struct _UNICODE_STRING { USHORT Length; USHORT MaximumLength; @@ -465,7 +575,9 @@ typedef struct _STRING64 { UNICODE_STRING64, *PUNICODE_STRING64, ANSI_STRING64, *PANSI_STRING64; -/* LangID and NLS */ +// +// LangID and NLS +// #define MAKELANGID(p, s) ((((USHORT)(s)) << 10) | (USHORT)(p)) #define PRIMARYLANGID(lgid) ((USHORT)(lgid) & 0x3ff) #define SUBLANGID(lgid) ((USHORT)(lgid) >> 10) @@ -482,7 +594,10 @@ typedef struct _STRING64 { #define SORTVERSIONFROMLCID(lcid) ((USHORT)((((ULONG)(lcid)) >> 20) & 0xf)) -/* Object Attributes */ + +// +// Object Attributes +// typedef struct _OBJECT_ATTRIBUTES { ULONG Length; HANDLE RootDirectory; @@ -493,7 +608,9 @@ typedef struct _OBJECT_ATTRIBUTES { } OBJECT_ATTRIBUTES, *POBJECT_ATTRIBUTES; typedef CONST OBJECT_ATTRIBUTES *PCOBJECT_ATTRIBUTES; -/* Values for the Attributes member */ +// +// Values for the Attributes member +// #define OBJ_INHERIT 0x00000002 #define OBJ_PERMANENT 0x00000010 #define OBJ_EXCLUSIVE 0x00000020 @@ -504,7 +621,9 @@ typedef CONST OBJECT_ATTRIBUTES *PCOBJECT_ATTRIBUTES; #define OBJ_FORCE_ACCESS_CHECK 0x00000400 #define OBJ_VALID_ATTRIBUTES 0x000007F2 -/* Helper Macro */ +// +// Helper Macro +// #define InitializeObjectAttributes(p,n,a,r,s) { \ (p)->Length = sizeof(OBJECT_ATTRIBUTES); \ (p)->RootDirectory = (r); \ @@ -514,29 +633,22 @@ typedef CONST OBJECT_ATTRIBUTES *PCOBJECT_ATTRIBUTES; (p)->SecurityQualityOfService = NULL; \ } -/* Product Types */ + + +// +// Product Types +// typedef enum _NT_PRODUCT_TYPE { NtProductWinNt = 1, NtProductLanManNt, NtProductServer } NT_PRODUCT_TYPE, *PNT_PRODUCT_TYPE; -typedef enum _EVENT_TYPE { - NotificationEvent, - SynchronizationEvent -} EVENT_TYPE; - -typedef enum _TIMER_TYPE { - NotificationTimer, - SynchronizationTimer -} TIMER_TYPE; -typedef enum _WAIT_TYPE { - WaitAll, - WaitAny -} WAIT_TYPE; -/* Doubly Linked Lists */ +// +// Doubly Linked Lists +// typedef struct _LIST_ENTRY { struct _LIST_ENTRY *Flink; struct _LIST_ENTRY *Blink; @@ -554,11 +666,14 @@ typedef struct LIST_ENTRY64 ULONGLONG Blink; } LIST_ENTRY64, *PLIST_ENTRY64; -/* Singly Linked Lists */ +// +// Singly Linked Lists +// typedef struct _SINGLE_LIST_ENTRY { struct _SINGLE_LIST_ENTRY *Next; } SINGLE_LIST_ENTRY, *PSINGLE_LIST_ENTRY; + typedef struct _PROCESSOR_NUMBER { USHORT Group; UCHAR Number; @@ -566,19 +681,16 @@ typedef struct _PROCESSOR_NUMBER { } PROCESSOR_NUMBER, *PPROCESSOR_NUMBER; typedef EXCEPTION_DISPOSITION -(NTAPI *PEXCEPTION_ROUTINE)( +(DDKAPI *PEXCEPTION_ROUTINE)( IN struct _EXCEPTION_RECORD *ExceptionRecord, IN PVOID EstablisherFrame, IN OUT struct _CONTEXT *ContextRecord, IN OUT PVOID DispatcherContext); -typedef struct _GROUP_AFFINITY { - KAFFINITY Mask; - USHORT Group; - USHORT Reserved[3]; -} GROUP_AFFINITY, *PGROUP_AFFINITY; -/* Helper Macros */ +// +// Helper Macros +// #define RTL_CONSTANT_STRING(s) { sizeof(s)-sizeof((s)[0]), sizeof(s), s } #define RTL_FIELD_SIZE(type, field) (sizeof(((type *)0)->field)) @@ -592,7 +704,11 @@ typedef struct _GROUP_AFFINITY { #endif #define ARRAYSIZE(A) RTL_NUMBER_OF_V2(A) -/* Type Limits */ + + +// +// Type Limits +// #define MINCHAR 0x80 #define MAXCHAR 0x7f #define MINSHORT 0x8000 @@ -604,17 +720,29 @@ typedef struct _GROUP_AFFINITY { #define MAXULONG 0xffffffff #define MAXLONGLONG (0x7fffffffffffffffLL) -/* Multiplication and Shift Operations */ + + +// +// Multiplication and Shift Operations +// #define Int32x32To64(a,b) ((LONGLONG)(a)*(LONGLONG)(b)) #define UInt32x32To64(a,b) ((DWORDLONG)(a)*(DWORDLONG)(b)) #define Int64ShllMod32(a,b) ((DWORDLONG)(a)<<(b)) #define Int64ShraMod32(a,b) ((LONGLONG)(a)>>(b)) #define Int64ShrlMod32(a,b) ((DWORDLONG)(a)>>(b)) -/* C_ASSERT Definition */ + + +// +// C_ASSERT Definition +// #define C_ASSERT(expr) extern char (*c_assert(void)) [(expr) ? 1 : -1] -/* Primary language IDs. */ + + +// +// Primary language IDs. +// #define LANG_NEUTRAL 0x00 #define LANG_INVARIANT 0x7f @@ -745,4 +873,6 @@ typedef struct _GROUP_AFFINITY { #define LANG_YORUBA 0x6a #define LANG_ZULU 0x35 -#endif /* _NTDEF_ */ + + +#endif /* _NTDEF_H */ diff --git a/reactos/include/psdk/ntiologc.h b/reactos/include/psdk/ntiologc.h deleted file mode 100644 index b807315bf8b..00000000000 --- a/reactos/include/psdk/ntiologc.h +++ /dev/null @@ -1,152 +0,0 @@ -#pragma once - -#define FACILITY_RPC_RUNTIME 0x2 -#define FACILITY_RPC_STUBS 0x3 -#define FACILITY_IO_ERROR_CODE 0x4 -#define FACILITY_MCA_ERROR_CODE 0x5 - -#define IO_ERR_RETRY_SUCCEEDED ((NTSTATUS)0x00040001L) -#define IO_ERR_INSUFFICIENT_RESOURCES ((NTSTATUS)0xC0040002L) -#define IO_ERR_CONFIGURATION_ERROR ((NTSTATUS)0xC0040003L) -#define IO_ERR_DRIVER_ERROR ((NTSTATUS)0xC0040004L) -#define IO_ERR_PARITY ((NTSTATUS)0xC0040005L) -#define IO_ERR_SEEK_ERROR ((NTSTATUS)0xC0040006L) -#define IO_ERR_BAD_BLOCK ((NTSTATUS)0xC0040007L) -#define IO_ERR_OVERRUN_ERROR ((NTSTATUS)0xC0040008L) -#define IO_ERR_TIMEOUT ((NTSTATUS)0xC0040009L) -#define IO_ERR_SEQUENCE ((NTSTATUS)0xC004000AL) -#define IO_ERR_CONTROLLER_ERROR ((NTSTATUS)0xC004000BL) -#define IO_ERR_INTERNAL_ERROR ((NTSTATUS)0xC004000CL) -#define IO_ERR_INCORRECT_IRQL ((NTSTATUS)0xC004000DL) -#define IO_ERR_INVALID_IOBASE ((NTSTATUS)0xC004000EL) -#define IO_ERR_NOT_READY ((NTSTATUS)0xC004000FL) -#define IO_ERR_INVALID_REQUEST ((NTSTATUS)0xC0040010L) -#define IO_ERR_VERSION ((NTSTATUS)0xC0040011L) -#define IO_ERR_LAYERED_FAILURE ((NTSTATUS)0xC0040012L) -#define IO_ERR_RESET ((NTSTATUS)0xC0040013L) -#define IO_ERR_PROTOCOL ((NTSTATUS)0xC0040014L) -#define IO_ERR_MEMORY_CONFLICT_DETECTED ((NTSTATUS)0xC0040015L) -#define IO_ERR_PORT_CONFLICT_DETECTED ((NTSTATUS)0xC0040016L) -#define IO_ERR_DMA_CONFLICT_DETECTED ((NTSTATUS)0xC0040017L) -#define IO_ERR_IRQ_CONFLICT_DETECTED ((NTSTATUS)0xC0040018L) -#define IO_ERR_BAD_FIRMWARE ((NTSTATUS)0xC0040019L) -#define IO_WRN_BAD_FIRMWARE ((NTSTATUS)0x8004001AL) -#define IO_ERR_DMA_RESOURCE_CONFLICT ((NTSTATUS)0xC004001BL) -#define IO_ERR_INTERRUPT_RESOURCE_CONFLICT ((NTSTATUS)0xC004001CL) -#define IO_ERR_MEMORY_RESOURCE_CONFLICT ((NTSTATUS)0xC004001DL) -#define IO_ERR_PORT_RESOURCE_CONFLICT ((NTSTATUS)0xC004001EL) -#define IO_BAD_BLOCK_WITH_NAME ((NTSTATUS)0xC004001FL) -#define IO_WRITE_CACHE_ENABLED ((NTSTATUS)0x80040020L) -#define IO_RECOVERED_VIA_ECC ((NTSTATUS)0x80040021L) -#define IO_WRITE_CACHE_DISABLED ((NTSTATUS)0x80040022L) -#define IO_FILE_QUOTA_THRESHOLD ((NTSTATUS)0x40040024L) -#define IO_FILE_QUOTA_LIMIT ((NTSTATUS)0x40040025L) -#define IO_FILE_QUOTA_STARTED ((NTSTATUS)0x40040026L) -#define IO_FILE_QUOTA_SUCCEEDED ((NTSTATUS)0x40040027L) -#define IO_FILE_QUOTA_FAILED ((NTSTATUS)0x80040028L) -#define IO_FILE_SYSTEM_CORRUPT ((NTSTATUS)0xC0040029L) -#define IO_FILE_QUOTA_CORRUPT ((NTSTATUS)0xC004002AL) -#define IO_SYSTEM_SLEEP_FAILED ((NTSTATUS)0xC004002BL) -#define IO_DUMP_POINTER_FAILURE ((NTSTATUS)0xC004002CL) -#define IO_DUMP_DRIVER_LOAD_FAILURE ((NTSTATUS)0xC004002DL) -#define IO_DUMP_INITIALIZATION_FAILURE ((NTSTATUS)0xC004002EL) -#define IO_DUMP_DUMPFILE_CONFLICT ((NTSTATUS)0xC004002FL) -#define IO_DUMP_DIRECT_CONFIG_FAILED ((NTSTATUS)0xC0040030L) -#define IO_DUMP_PAGE_CONFIG_FAILED ((NTSTATUS)0xC0040031L) -#define IO_LOST_DELAYED_WRITE ((NTSTATUS)0x80040032L) -#define IO_WARNING_PAGING_FAILURE ((NTSTATUS)0x80040033L) -#define IO_WRN_FAILURE_PREDICTED ((NTSTATUS)0x80040034L) -#define IO_WARNING_INTERRUPT_STILL_PENDING ((NTSTATUS)0x80040035L) -#define IO_DRIVER_CANCEL_TIMEOUT ((NTSTATUS)0x80040036L) -#define IO_FILE_SYSTEM_CORRUPT_WITH_NAME ((NTSTATUS)0xC0040037L) -#define IO_WARNING_ALLOCATION_FAILED ((NTSTATUS)0x80040038L) -#define IO_WARNING_LOG_FLUSH_FAILED ((NTSTATUS)0x80040039L) -#define IO_WARNING_DUPLICATE_SIGNATURE ((NTSTATUS)0x8004003AL) -#define IO_WARNING_DUPLICATE_PATH ((NTSTATUS)0x8004003BL) -#define IO_ERR_THREAD_STUCK_IN_DEVICE_DRIVER ((NTSTATUS)0xC004006CL) -#define IO_ERR_PORT_TIMEOUT ((NTSTATUS)0xC0040075L) -#define IO_WARNING_BUS_RESET ((NTSTATUS)0x80040076L) -#define IO_INFO_THROTTLE_COMPLETE ((NTSTATUS)0x40040077L) -#define IO_WARNING_RESET ((NTSTATUS)0x80040081L) -#define IO_FILE_SYSTEM_REPAIR_SUCCESS ((NTSTATUS)0x80040082L) -#define IO_FILE_SYSTEM_REPAIR_FAILED ((NTSTATUS)0xC0040083L) -#define IO_WARNING_WRITE_FUA_PROBLEM ((NTSTATUS)0x80040084L) -#define IO_CDROM_EXCLUSIVE_LOCK ((NTSTATUS)0x40040085L) -#define IO_FILE_SYSTEM_TXF_RECOVERY_FAILURE ((NTSTATUS)0x80040086L) -#define IO_FILE_SYSTEM_TXF_LOG_FULL_HANDLING_FAILED ((NTSTATUS)0xC0040087L) -#define IO_FILE_SYSTEM_TXF_RESOURCE_MANAGER_RESET ((NTSTATUS)0x80040088L) -#define IO_FILE_SYSTEM_TXF_RESOURCE_MANAGER_START_FAILED ((NTSTATUS)0xC0040089L) -#define IO_FILE_SYSTEM_TXF_RESOURCE_MANAGER_SHUT_DOWN ((NTSTATUS)0xC004008AL) -#define IO_LOST_DELAYED_WRITE_NETWORK_DISCONNECTED ((NTSTATUS)0x8004008BL) -#define IO_LOST_DELAYED_WRITE_NETWORK_SERVER_ERROR ((NTSTATUS)0x8004008CL) -#define IO_LOST_DELAYED_WRITE_NETWORK_LOCAL_DISK_ERROR ((NTSTATUS)0x8004008DL) - -#define MCA_WARNING_CACHE ((NTSTATUS)0x8005003CL) -#define MCA_ERROR_CACHE ((NTSTATUS)0xC005003DL) -#define MCA_WARNING_TLB ((NTSTATUS)0x8005003EL) -#define MCA_ERROR_TLB ((NTSTATUS)0xC005003FL) -#define MCA_WARNING_CPU_BUS ((NTSTATUS)0x80050040L) -#define MCA_ERROR_CPU_BUS ((NTSTATUS)0xC0050041L) -#define MCA_WARNING_REGISTER_FILE ((NTSTATUS)0x80050042L) -#define MCA_ERROR_REGISTER_FILE ((NTSTATUS)0xC0050043L) -#define MCA_WARNING_MAS ((NTSTATUS)0x80050044L) -#define MCA_ERROR_MAS ((NTSTATUS)0xC0050045L) -#define MCA_WARNING_MEM_UNKNOWN ((NTSTATUS)0x80050046L) -#define MCA_ERROR_MEM_UNKNOWN ((NTSTATUS)0xC0050047L) -#define MCA_WARNING_MEM_1_2 ((NTSTATUS)0x80050048L) -#define MCA_ERROR_MEM_1_2 ((NTSTATUS)0xC0050049L) -#define MCA_WARNING_MEM_1_2_5 ((NTSTATUS)0x8005004AL) -#define MCA_ERROR_MEM_1_2_5 ((NTSTATUS)0xC005004BL) -#define MCA_WARNING_MEM_1_2_5_4 ((NTSTATUS)0x8005004CL) -#define MCA_ERROR_MEM_1_2_5_4 ((NTSTATUS)0xC005004DL) -#define MCA_WARNING_SYSTEM_EVENT ((NTSTATUS)0x8005004EL) -#define MCA_ERROR_SYSTEM_EVENT ((NTSTATUS)0xC005004FL) -#define MCA_WARNING_PCI_BUS_PARITY ((NTSTATUS)0x80050050L) -#define MCA_ERROR_PCI_BUS_PARITY ((NTSTATUS)0xC0050051L) -#define MCA_WARNING_PCI_BUS_PARITY_NO_INFO ((NTSTATUS)0x80050052L) -#define MCA_ERROR_PCI_BUS_PARITY_NO_INFO ((NTSTATUS)0xC0050053L) -#define MCA_WARNING_PCI_BUS_SERR ((NTSTATUS)0x80050054L) -#define MCA_ERROR_PCI_BUS_SERR ((NTSTATUS)0xC0050055L) -#define MCA_WARNING_PCI_BUS_SERR_NO_INFO ((NTSTATUS)0x80050056L) -#define MCA_ERROR_PCI_BUS_SERR_NO_INFO ((NTSTATUS)0xC0050057L) -#define MCA_WARNING_PCI_BUS_MASTER_ABORT ((NTSTATUS)0x80050058L) -#define MCA_ERROR_PCI_BUS_MASTER_ABORT ((NTSTATUS)0xC0050059L) -#define MCA_WARNING_PCI_BUS_MASTER_ABORT_NO_INFO ((NTSTATUS)0x8005005AL) -#define MCA_ERROR_PCI_BUS_MASTER_ABORT_NO_INFO ((NTSTATUS)0xC005005BL) -#define MCA_WARNING_PCI_BUS_TIMEOUT ((NTSTATUS)0x8005005CL) -#define MCA_ERROR_PCI_BUS_TIMEOUT ((NTSTATUS)0xC005005DL) -#define MCA_WARNING_PCI_BUS_TIMEOUT_NO_INFO ((NTSTATUS)0x8005005EL) -#define MCA_ERROR_PCI_BUS_TIMEOUT_NO_INFO ((NTSTATUS)0xC005005FL) -#define MCA_WARNING_PCI_BUS_UNKNOWN ((NTSTATUS)0x80050060L) -#define MCA_ERROR_PCI_BUS_UNKNOWN ((NTSTATUS)0xC0050061L) -#define MCA_WARNING_PCI_DEVICE ((NTSTATUS)0x80050062L) -#define MCA_ERROR_PCI_DEVICE ((NTSTATUS)0xC0050063L) -#define MCA_WARNING_SMBIOS ((NTSTATUS)0x80050064L) -#define MCA_ERROR_SMBIOS ((NTSTATUS)0xC0050065L) -#define MCA_WARNING_PLATFORM_SPECIFIC ((NTSTATUS)0x80050066L) -#define MCA_ERROR_PLATFORM_SPECIFIC ((NTSTATUS)0xC0050067L) -#define MCA_WARNING_UNKNOWN ((NTSTATUS)0x80050068L) -#define MCA_ERROR_UNKNOWN ((NTSTATUS)0xC0050069L) -#define MCA_WARNING_UNKNOWN_NO_CPU ((NTSTATUS)0x8005006AL) -#define MCA_ERROR_UNKNOWN_NO_CPU ((NTSTATUS)0xC005006BL) -#define MCA_WARNING_CMC_THRESHOLD_EXCEEDED ((NTSTATUS)0x8005006DL) -#define MCA_WARNING_CPE_THRESHOLD_EXCEEDED ((NTSTATUS)0x8005006EL) -#define MCA_WARNING_CPU_THERMAL_THROTTLED ((NTSTATUS)0x8005006FL) -#define MCA_INFO_CPU_THERMAL_THROTTLING_REMOVED ((NTSTATUS)0x40050070L) -#define MCA_WARNING_CPU ((NTSTATUS)0x80050071L) -#define MCA_ERROR_CPU ((NTSTATUS)0xC0050072L) -#define MCA_INFO_NO_MORE_CORRECTED_ERROR_LOGS ((NTSTATUS)0x40050073L) -#define MCA_INFO_MEMORY_PAGE_MARKED_BAD ((NTSTATUS)0x40050074L) -#define MCA_MEMORYHIERARCHY_ERROR ((NTSTATUS)0xC0050078L) -#define MCA_TLB_ERROR ((NTSTATUS)0xC0050079L) -#define MCA_BUS_ERROR ((NTSTATUS)0xC005007AL) -#define MCA_BUS_TIMEOUT_ERROR ((NTSTATUS)0xC005007BL) -#define MCA_INTERNALTIMER_ERROR ((NTSTATUS)0xC005007CL) -#define MCA_MICROCODE_ROM_PARITY_ERROR ((NTSTATUS)0xC005007EL) -#define MCA_EXTERNAL_ERROR ((NTSTATUS)0xC005007FL) -#define MCA_FRC_ERROR ((NTSTATUS)0xC0050080L) - -#define STATUS_SEVERITY_SUCCESS 0x0 -#define STATUS_SEVERITY_INFORMATIONAL 0x1 -#define STATUS_SEVERITY_WARNING 0x2 -#define STATUS_SEVERITY_ERROR 0x3 diff --git a/reactos/include/psdk/ntstatus.h b/reactos/include/psdk/ntstatus.h index 9237221473c..688f996d3ff 100644 --- a/reactos/include/psdk/ntstatus.h +++ b/reactos/include/psdk/ntstatus.h @@ -27,1149 +27,1096 @@ extern "C" { #endif -#ifndef WIN32_NO_STATUS - -#define FACILITY_DEBUGGER 0x1 -#define FACILITY_RPC_RUNTIME 0x2 -#define FACILITY_RPC_STUBS 0x3 -#define FACILITY_IO_ERROR_CODE 0x4 -#define FACILITY_TERMINAL_SERVER 0xA -#define FACILITY_USB_ERROR_CODE 0x10 -#define FACILITY_HID_ERROR_CODE 0x11 -#define FACILITY_FIREWIRE_ERROR_CODE 0x12 -#define FACILITY_CLUSTER_ERROR_CODE 0x13 -#define FACILITY_ACPI_ERROR_CODE 0x14 -#define FACILITY_SXS_ERROR_CODE 0x15 - -/* Debug codes */ - -#define DBG_EXCEPTION_HANDLED ((NTSTATUS)0x00010001) -#define DBG_CONTINUE ((NTSTATUS)0x00010002) -#define DBG_REPLY_LATER ((NTSTATUS)0x40010001) -#define DBG_UNABLE_TO_PROVIDE_HANDLE ((NTSTATUS)0x40010002) -#define DBG_TERMINATE_THREAD ((NTSTATUS)0x40010003) -#define DBG_TERMINATE_PROCESS ((NTSTATUS)0x40010004) -#define DBG_CONTROL_C ((NTSTATUS)0x40010005) -#define DBG_PRINTEXCEPTION_C ((NTSTATUS)0x40010006) -#define DBG_RIPEXCEPTION ((NTSTATUS)0x40010007) -#define DBG_CONTROL_BREAK ((NTSTATUS)0x40010008) -#define DBG_COMMAND_EXCEPTION ((NTSTATUS)0x40010009) -#define DBG_EXCEPTION_NOT_HANDLED ((NTSTATUS)0x80010001) -#define DBG_NO_STATE_CHANGE ((NTSTATUS)0xC0010001) -#define DBG_APP_NOT_IDLE ((NTSTATUS)0xC0010002) - -/* Exception codes */ - #if !defined(STATUS_SUCCESS) -#define STATUS_SUCCESS ((NTSTATUS)0x00000000) -#endif -#define STATUS_SEVERITY_SUCCESS 0x0 -#define STATUS_SEVERITY_INFORMATIONAL 0x1 -#define STATUS_SEVERITY_WARNING 0x2 -#define STATUS_SEVERITY_ERROR 0x3 - -#define STATUS_WAIT_1 ((NTSTATUS)0x00000001) -#define STATUS_WAIT_2 ((NTSTATUS)0x00000002) -#define STATUS_WAIT_3 ((NTSTATUS)0x00000003) -#define STATUS_WAIT_63 ((NTSTATUS)0x0000003f) -#define STATUS_ABANDONED ((NTSTATUS)0x00000080) -#define STATUS_ABANDONED_WAIT_63 ((NTSTATUS)0x000000BF) -#define STATUS_USER_APC ((NTSTATUS)0x000000C0) -#define STATUS_KERNEL_APC ((NTSTATUS)0x00000100) -#define STATUS_ALERTED ((NTSTATUS)0x00000101) -#define STATUS_TIMEOUT ((NTSTATUS)0x00000102) -#define STATUS_PENDING ((NTSTATUS)0x00000103) -#define STATUS_REPARSE ((NTSTATUS)0x00000104) -#define STATUS_MORE_ENTRIES ((NTSTATUS)0x00000105) -#define STATUS_NOT_ALL_ASSIGNED ((NTSTATUS)0x00000106) -#define STATUS_SOME_NOT_MAPPED ((NTSTATUS)0x00000107) -#define STATUS_OPLOCK_BREAK_IN_PROGRESS ((NTSTATUS)0x00000108) -#define STATUS_VOLUME_MOUNTED ((NTSTATUS)0x00000109) -#define STATUS_RXACT_COMMITTED ((NTSTATUS)0x0000010A) -#define STATUS_NOTIFY_CLEANUP ((NTSTATUS)0x0000010B) -#define STATUS_NOTIFY_ENUM_DIR ((NTSTATUS)0x0000010C) -#define STATUS_NO_QUOTAS_FOR_ACCOUNT ((NTSTATUS)0x0000010D) -#define STATUS_PRIMARY_TRANSPORT_CONNECT_FAILED ((NTSTATUS)0x0000010E) -#define STATUS_PAGE_FAULT_TRANSITION ((NTSTATUS)0x00000110) -#define STATUS_PAGE_FAULT_DEMAND_ZERO ((NTSTATUS)0x00000111) -#define STATUS_PAGE_FAULT_COPY_ON_WRITE ((NTSTATUS)0x00000112) -#define STATUS_PAGE_FAULT_GUARD_PAGE ((NTSTATUS)0x00000113) -#define STATUS_PAGE_FAULT_PAGING_FILE ((NTSTATUS)0x00000114) -#define STATUS_CACHE_PAGE_LOCKED ((NTSTATUS)0x00000115) -#define STATUS_CRASH_DUMP ((NTSTATUS)0x00000116) -#define STATUS_BUFFER_ALL_ZEROS ((NTSTATUS)0x00000117) -#define STATUS_REPARSE_OBJECT ((NTSTATUS)0x00000118) -#define STATUS_RESOURCE_REQUIREMENTS_CHANGED ((NTSTATUS)0x00000119) -#define STATUS_TRANSLATION_COMPLETE ((NTSTATUS)0x00000120) -#define STATUS_DS_MEMBERSHIP_EVALUATED_LOCALLY ((NTSTATUS)0x00000121) -#define STATUS_NOTHING_TO_TERMINATE ((NTSTATUS)0x00000122) -#define STATUS_PROCESS_NOT_IN_JOB ((NTSTATUS)0x00000123) -#define STATUS_PROCESS_IN_JOB ((NTSTATUS)0x00000124) -#define STATUS_VOLSNAP_HIBERNATE_READY ((NTSTATUS)0x00000125) -#define STATUS_FSFILTER_OP_COMPLETED_SUCCESSFULLY ((NTSTATUS)0x00000126) - -#define STATUS_OBJECT_NAME_EXISTS ((NTSTATUS)0x40000000) -#define STATUS_THREAD_WAS_SUSPENDED ((NTSTATUS)0x40000001) -#define STATUS_WORKING_SET_LIMIT_RANGE ((NTSTATUS)0x40000002) -#define STATUS_IMAGE_NOT_AT_BASE ((NTSTATUS)0x40000003) -#define STATUS_RXACT_STATE_CREATED ((NTSTATUS)0x40000004) -#define STATUS_SEGMENT_NOTIFICATION ((NTSTATUS)0x40000005) -#define STATUS_LOCAL_USER_SESSION_KEY ((NTSTATUS)0x40000006) -#define STATUS_BAD_CURRENT_DIRECTORY ((NTSTATUS)0x40000007) -#define STATUS_SERIAL_MORE_WRITES ((NTSTATUS)0x40000008) -#define STATUS_REGISTRY_RECOVERED ((NTSTATUS)0x40000009) -#define STATUS_FT_READ_RECOVERY_FROM_BACKUP ((NTSTATUS)0x4000000A) -#define STATUS_FT_WRITE_RECOVERY ((NTSTATUS)0x4000000B) -#define STATUS_SERIAL_COUNTER_TIMEOUT ((NTSTATUS)0x4000000C) -#define STATUS_NULL_LM_PASSWORD ((NTSTATUS)0x4000000D) -#define STATUS_IMAGE_MACHINE_TYPE_MISMATCH ((NTSTATUS)0x4000000E) -#define STATUS_RECEIVE_PARTIAL ((NTSTATUS)0x4000000F) -#define STATUS_RECEIVE_EXPEDITED ((NTSTATUS)0x40000010) -#define STATUS_RECEIVE_PARTIAL_EXPEDITED ((NTSTATUS)0x40000011) -#define STATUS_EVENT_DONE ((NTSTATUS)0x40000012) -#define STATUS_EVENT_PENDING ((NTSTATUS)0x40000013) -#define STATUS_CHECKING_FILE_SYSTEM ((NTSTATUS)0x40000014) -#define STATUS_FATAL_APP_EXIT ((NTSTATUS)0x40000015) -#define STATUS_PREDEFINED_HANDLE ((NTSTATUS)0x40000016) -#define STATUS_WAS_UNLOCKED ((NTSTATUS)0x40000017) -#define STATUS_SERVICE_NOTIFICATION ((NTSTATUS)0x40000018) -#define STATUS_WAS_LOCKED ((NTSTATUS)0x40000019) -#define STATUS_LOG_HARD_ERROR ((NTSTATUS)0x4000001A) -#define STATUS_ALREADY_WIN32 ((NTSTATUS)0x4000001B) -#define STATUS_WX86_UNSIMULATE ((NTSTATUS)0x4000001C) -#define STATUS_WX86_CONTINUE ((NTSTATUS)0x4000001D) -#define STATUS_WX86_SINGLE_STEP ((NTSTATUS)0x4000001E) -#define STATUS_WX86_BREAKPOINT ((NTSTATUS)0x4000001F) -#define STATUS_WX86_EXCEPTION_CONTINUE ((NTSTATUS)0x40000020) -#define STATUS_WX86_EXCEPTION_LASTCHANCE ((NTSTATUS)0x40000021) -#define STATUS_WX86_EXCEPTION_CHAIN ((NTSTATUS)0x40000022) -#define STATUS_IMAGE_MACHINE_TYPE_MISMATCH_EXE ((NTSTATUS)0x40000023) -#define STATUS_NO_YIELD_PERFORMED ((NTSTATUS)0x40000024) -#define STATUS_TIMER_RESUME_IGNORED ((NTSTATUS)0x40000025) -#define STATUS_ARBITRATION_UNHANDLED ((NTSTATUS)0x40000026) -#define STATUS_CARDBUS_NOT_SUPPORTED ((NTSTATUS)0x40000027) -#define STATUS_WX86_CREATEWX86TIB ((NTSTATUS)0x40000028) -#define STATUS_MP_PROCESSOR_MISMATCH ((NTSTATUS)0x40000029) -#define STATUS_HIBERNATED ((NTSTATUS)0x4000002A) -#define STATUS_RESUME_HIBERNATION ((NTSTATUS)0x4000002B) -#define STATUS_FIRMWARE_UPDATED ((NTSTATUS)0x4000002C) -#define STATUS_WAKE_SYSTEM ((NTSTATUS)0x40000294) -#define STATUS_DS_SHUTTING_DOWN ((NTSTATUS)0x40000370) - -#define RPC_NT_UUID_LOCAL_ONLY ((NTSTATUS)0x40020056) -#define RPC_NT_SEND_INCOMPLETE ((NTSTATUS)0x400200AF) - -#define STATUS_CTX_CDM_CONNECT ((NTSTATUS)0x400A0004) -#define STATUS_CTX_CDM_DISCONNECT ((NTSTATUS)0x400A0005) - -#define STATUS_SXS_RELEASE_ACTIVATION_CONTEXT ((NTSTATUS)0x4015000D) - -#define STATUS_GUARD_PAGE_VIOLATION ((NTSTATUS)0x80000001) -#define STATUS_DATATYPE_MISALIGNMENT ((NTSTATUS)0x80000002) -#define STATUS_BREAKPOINT ((NTSTATUS)0x80000003) -#define STATUS_SINGLE_STEP ((NTSTATUS)0x80000004) -#define STATUS_BUFFER_OVERFLOW ((NTSTATUS)0x80000005) -#define STATUS_NO_MORE_FILES ((NTSTATUS)0x80000006) -#define STATUS_WAKE_SYSTEM_DEBUGGER ((NTSTATUS)0x80000007) - -#define STATUS_HANDLES_CLOSED ((NTSTATUS)0x8000000A) -#define STATUS_NO_INHERITANCE ((NTSTATUS)0x8000000B) -#define STATUS_GUID_SUBSTITUTION_MADE ((NTSTATUS)0x8000000C) -#define STATUS_PARTIAL_COPY ((NTSTATUS)0x8000000D) -#define STATUS_DEVICE_PAPER_EMPTY ((NTSTATUS)0x8000000E) -#define STATUS_DEVICE_POWERED_OFF ((NTSTATUS)0x8000000F) -#define STATUS_DEVICE_OFF_LINE ((NTSTATUS)0x80000010) -#define STATUS_DEVICE_BUSY ((NTSTATUS)0x80000011) -#define STATUS_NO_MORE_EAS ((NTSTATUS)0x80000012) -#define STATUS_INVALID_EA_NAME ((NTSTATUS)0x80000013) -#define STATUS_EA_LIST_INCONSISTENT ((NTSTATUS)0x80000014) -#define STATUS_INVALID_EA_FLAG ((NTSTATUS)0x80000015) -#define STATUS_VERIFY_REQUIRED ((NTSTATUS)0x80000016) -#define STATUS_EXTRANEOUS_INFORMATION ((NTSTATUS)0x80000017) -#define STATUS_RXACT_COMMIT_NECESSARY ((NTSTATUS)0x80000018) -#define STATUS_NO_MORE_ENTRIES ((NTSTATUS)0x8000001A) -#define STATUS_FILEMARK_DETECTED ((NTSTATUS)0x8000001B) -#define STATUS_MEDIA_CHANGED ((NTSTATUS)0x8000001C) -#define STATUS_BUS_RESET ((NTSTATUS)0x8000001D) -#define STATUS_END_OF_MEDIA ((NTSTATUS)0x8000001E) -#define STATUS_BEGINNING_OF_MEDIA ((NTSTATUS)0x8000001F) -#define STATUS_MEDIA_CHECK ((NTSTATUS)0x80000020) -#define STATUS_SETMARK_DETECTED ((NTSTATUS)0x80000021) -#define STATUS_NO_DATA_DETECTED ((NTSTATUS)0x80000022) -#define STATUS_REDIRECTOR_HAS_OPEN_HANDLES ((NTSTATUS)0x80000023) -#define STATUS_SERVER_HAS_OPEN_HANDLES ((NTSTATUS)0x80000024) -#define STATUS_ALREADY_DISCONNECTED ((NTSTATUS)0x80000025) -#define STATUS_LONGJUMP ((NTSTATUS)0x80000026) -#define STATUS_CLEANER_CARTRIDGE_INSTALLED ((NTSTATUS)0x80000027) -#define STATUS_PLUGPLAY_QUERY_VETOED ((NTSTATUS)0x80000028) -#define STATUS_UNWIND_CONSOLIDATE ((NTSTATUS)0x80000029) -#define STATUS_REGISTRY_HIVE_RECOVERED ((NTSTATUS)0x8000002A) -#define STATUS_DLL_MIGHT_BE_INSECURE ((NTSTATUS)0x8000002B) -#define STATUS_DLL_MIGHT_BE_INCOMPATIBLE ((NTSTATUS)0x8000002C) +#define STATUS_SUCCESS ((NTSTATUS)0x00000000L) +#endif /* !STATUS_SUCCESS */ +#define FACILITY_DEBUGGER 0x1 +#define FACILITY_RPC_RUNTIME 0x2 +#define FACILITY_RPC_STUBS 0x3 +#define FACILITY_IO_ERROR_CODE 0x4 +#define FACILITY_TERMINAL_SERVER 0xA +#define FACILITY_USB_ERROR_CODE 0x10 +#define FACILITY_HID_ERROR_CODE 0x11 +#define FACILITY_FIREWIRE_ERROR_CODE 0x12 +#define FACILITY_CLUSTER_ERROR_CODE 0x13 +#define FACILITY_ACPI_ERROR_CODE 0x14 +#define FACILITY_SXS_ERROR_CODE 0x15 +#define STATUS_SEVERITY_SUCCESS 0x0 +#define STATUS_SEVERITY_INFORMATIONAL 0x1 +#define STATUS_SEVERITY_WARNING 0x2 +#define STATUS_SEVERITY_ERROR 0x3 +#define STATUS_WAIT_0 ((NTSTATUS)0x00000000L) +#define STATUS_WAIT_1 ((NTSTATUS)0x00000001L) +#define STATUS_WAIT_2 ((NTSTATUS)0x00000002L) +#define STATUS_WAIT_3 ((NTSTATUS)0x00000003L) +#define STATUS_WAIT_63 ((NTSTATUS)0x0000003FL) +#define STATUS_ABANDONED ((NTSTATUS)0x00000080L) +#define STATUS_ABANDONED_WAIT_0 ((NTSTATUS)0x00000080L) +#define STATUS_ABANDONED_WAIT_63 ((NTSTATUS)0x000000BFL) +#define STATUS_USER_APC ((NTSTATUS)0x000000C0L) +#define STATUS_KERNEL_APC ((NTSTATUS)0x00000100L) +#define STATUS_ALERTED ((NTSTATUS)0x00000101L) +#define STATUS_TIMEOUT ((NTSTATUS)0x00000102L) +#define STATUS_PENDING ((NTSTATUS)0x00000103L) +#define STATUS_REPARSE ((NTSTATUS)0x00000104L) +#define STATUS_MORE_ENTRIES ((NTSTATUS)0x00000105L) +#define STATUS_NOT_ALL_ASSIGNED ((NTSTATUS)0x00000106L) +#define STATUS_SOME_NOT_MAPPED ((NTSTATUS)0x00000107L) +#define STATUS_OPLOCK_BREAK_IN_PROGRESS ((NTSTATUS)0x00000108L) +#define STATUS_VOLUME_MOUNTED ((NTSTATUS)0x00000109L) +#define STATUS_RXACT_COMMITTED ((NTSTATUS)0x0000010AL) +#define STATUS_NOTIFY_CLEANUP ((NTSTATUS)0x0000010BL) +#define STATUS_NOTIFY_ENUM_DIR ((NTSTATUS)0x0000010CL) +#define STATUS_NO_QUOTAS_FOR_ACCOUNT ((NTSTATUS)0x0000010DL) +#define STATUS_PRIMARY_TRANSPORT_CONNECT_FAILED ((NTSTATUS)0x0000010EL) +#define STATUS_PAGE_FAULT_TRANSITION ((NTSTATUS)0x00000110L) +#define STATUS_PAGE_FAULT_DEMAND_ZERO ((NTSTATUS)0x00000111L) +#define STATUS_PAGE_FAULT_COPY_ON_WRITE ((NTSTATUS)0x00000112L) +#define STATUS_PAGE_FAULT_GUARD_PAGE ((NTSTATUS)0x00000113L) +#define STATUS_PAGE_FAULT_PAGING_FILE ((NTSTATUS)0x00000114L) +#define STATUS_CACHE_PAGE_LOCKED ((NTSTATUS)0x00000115L) +#define STATUS_CRASH_DUMP ((NTSTATUS)0x00000116L) +#define STATUS_BUFFER_ALL_ZEROS ((NTSTATUS)0x00000117L) +#define STATUS_REPARSE_OBJECT ((NTSTATUS)0x00000118L) +#define STATUS_RESOURCE_REQUIREMENTS_CHANGED ((NTSTATUS)0x00000119L) +#define STATUS_TRANSLATION_COMPLETE ((NTSTATUS)0x00000120L) +#define STATUS_DS_MEMBERSHIP_EVALUATED_LOCALLY ((NTSTATUS)0x00000121L) +#define STATUS_NOTHING_TO_TERMINATE ((NTSTATUS)0x00000122L) +#define STATUS_PROCESS_NOT_IN_JOB ((NTSTATUS)0x00000123L) +#define STATUS_PROCESS_IN_JOB ((NTSTATUS)0x00000124L) +#define STATUS_OBJECT_NAME_EXISTS ((NTSTATUS)0x40000000L) +#define STATUS_THREAD_WAS_SUSPENDED ((NTSTATUS)0x40000001L) +#define STATUS_WORKING_SET_LIMIT_RANGE ((NTSTATUS)0x40000002L) +#define STATUS_IMAGE_NOT_AT_BASE ((NTSTATUS)0x40000003L) +#define STATUS_RXACT_STATE_CREATED ((NTSTATUS)0x40000004L) +#define STATUS_SEGMENT_NOTIFICATION ((NTSTATUS)0x40000005L) +#define STATUS_LOCAL_USER_SESSION_KEY ((NTSTATUS)0x40000006L) +#define STATUS_BAD_CURRENT_DIRECTORY ((NTSTATUS)0x40000007L) +#define STATUS_SERIAL_MORE_WRITES ((NTSTATUS)0x40000008L) +#define STATUS_REGISTRY_RECOVERED ((NTSTATUS)0x40000009L) +#define STATUS_FT_READ_RECOVERY_FROM_BACKUP ((NTSTATUS)0x4000000AL) +#define STATUS_FT_WRITE_RECOVERY ((NTSTATUS)0x4000000BL) +#define STATUS_SERIAL_COUNTER_TIMEOUT ((NTSTATUS)0x4000000CL) +#define STATUS_NULL_LM_PASSWORD ((NTSTATUS)0x4000000DL) +#define STATUS_IMAGE_MACHINE_TYPE_MISMATCH ((NTSTATUS)0x4000000EL) +#define STATUS_RECEIVE_PARTIAL ((NTSTATUS)0x4000000FL) +#define STATUS_RECEIVE_EXPEDITED ((NTSTATUS)0x40000010L) +#define STATUS_RECEIVE_PARTIAL_EXPEDITED ((NTSTATUS)0x40000011L) +#define STATUS_EVENT_DONE ((NTSTATUS)0x40000012L) +#define STATUS_EVENT_PENDING ((NTSTATUS)0x40000013L) +#define STATUS_CHECKING_FILE_SYSTEM ((NTSTATUS)0x40000014L) +#define STATUS_FATAL_APP_EXIT ((NTSTATUS)0x40000015L) +#define STATUS_PREDEFINED_HANDLE ((NTSTATUS)0x40000016L) +#define STATUS_WAS_UNLOCKED ((NTSTATUS)0x40000017L) +#define STATUS_SERVICE_NOTIFICATION ((NTSTATUS)0x40000018L) +#define STATUS_WAS_LOCKED ((NTSTATUS)0x40000019L) +#define STATUS_LOG_HARD_ERROR ((NTSTATUS)0x4000001AL) +#define STATUS_ALREADY_WIN32 ((NTSTATUS)0x4000001BL) +#define STATUS_WX86_UNSIMULATE ((NTSTATUS)0x4000001CL) +#define STATUS_WX86_CONTINUE ((NTSTATUS)0x4000001DL) +#define STATUS_WX86_SINGLE_STEP ((NTSTATUS)0x4000001EL) +#define STATUS_WX86_BREAKPOINT ((NTSTATUS)0x4000001FL) +#define STATUS_WX86_EXCEPTION_CONTINUE ((NTSTATUS)0x40000020L) +#define STATUS_WX86_EXCEPTION_LASTCHANCE ((NTSTATUS)0x40000021L) +#define STATUS_WX86_EXCEPTION_CHAIN ((NTSTATUS)0x40000022L) +#define STATUS_IMAGE_MACHINE_TYPE_MISMATCH_EXE ((NTSTATUS)0x40000023L) +#define STATUS_NO_YIELD_PERFORMED ((NTSTATUS)0x40000024L) +#define STATUS_TIMER_RESUME_IGNORED ((NTSTATUS)0x40000025L) +#define STATUS_ARBITRATION_UNHANDLED ((NTSTATUS)0x40000026L) +#define STATUS_CARDBUS_NOT_SUPPORTED ((NTSTATUS)0x40000027L) +#define STATUS_WX86_CREATEWX86TIB ((NTSTATUS)0x40000028L) +#define STATUS_MP_PROCESSOR_MISMATCH ((NTSTATUS)0x40000029L) +#define STATUS_HIBERNATED ((NTSTATUS)0x4000002AL) +#define STATUS_RESUME_HIBERNATION ((NTSTATUS)0x4000002BL) +#define STATUS_GUARD_PAGE_VIOLATION ((NTSTATUS)0x80000001L) +#define STATUS_DATATYPE_MISALIGNMENT ((NTSTATUS)0x80000002L) +#define STATUS_BREAKPOINT ((NTSTATUS)0x80000003L) +#define STATUS_SINGLE_STEP ((NTSTATUS)0x80000004L) +#define STATUS_BUFFER_OVERFLOW ((NTSTATUS)0x80000005L) +#define STATUS_NO_MORE_FILES ((NTSTATUS)0x80000006L) +#define STATUS_WAKE_SYSTEM_DEBUGGER ((NTSTATUS)0x80000007L) +#define STATUS_HANDLES_CLOSED ((NTSTATUS)0x8000000AL) +#define STATUS_NO_INHERITANCE ((NTSTATUS)0x8000000BL) +#define STATUS_GUID_SUBSTITUTION_MADE ((NTSTATUS)0x8000000CL) +#define STATUS_PARTIAL_COPY ((NTSTATUS)0x8000000DL) +#define STATUS_DEVICE_PAPER_EMPTY ((NTSTATUS)0x8000000EL) +#define STATUS_DEVICE_POWERED_OFF ((NTSTATUS)0x8000000FL) +#define STATUS_DEVICE_OFF_LINE ((NTSTATUS)0x80000010L) +#define STATUS_DEVICE_BUSY ((NTSTATUS)0x80000011L) +#define STATUS_NO_MORE_EAS ((NTSTATUS)0x80000012L) +#define STATUS_INVALID_EA_NAME ((NTSTATUS)0x80000013L) +#define STATUS_EA_LIST_INCONSISTENT ((NTSTATUS)0x80000014L) +#define STATUS_INVALID_EA_FLAG ((NTSTATUS)0x80000015L) +#define STATUS_VERIFY_REQUIRED ((NTSTATUS)0x80000016L) +#define STATUS_EXTRANEOUS_INFORMATION ((NTSTATUS)0x80000017L) +#define STATUS_RXACT_COMMIT_NECESSARY ((NTSTATUS)0x80000018L) +#define STATUS_NO_MORE_ENTRIES ((NTSTATUS)0x8000001AL) +#define STATUS_FILEMARK_DETECTED ((NTSTATUS)0x8000001BL) +#define STATUS_MEDIA_CHANGED ((NTSTATUS)0x8000001CL) +#define STATUS_BUS_RESET ((NTSTATUS)0x8000001DL) +#define STATUS_END_OF_MEDIA ((NTSTATUS)0x8000001EL) +#define STATUS_BEGINNING_OF_MEDIA ((NTSTATUS)0x8000001FL) +#define STATUS_MEDIA_CHECK ((NTSTATUS)0x80000020L) +#define STATUS_SETMARK_DETECTED ((NTSTATUS)0x80000021L) +#define STATUS_NO_DATA_DETECTED ((NTSTATUS)0x80000022L) +#define STATUS_REDIRECTOR_HAS_OPEN_HANDLES ((NTSTATUS)0x80000023L) +#define STATUS_SERVER_HAS_OPEN_HANDLES ((NTSTATUS)0x80000024L) +#define STATUS_ALREADY_DISCONNECTED ((NTSTATUS)0x80000025L) +#define STATUS_LONGJUMP ((NTSTATUS)0x80000026L) +#define STATUS_CLEANER_CARTRIDGE_INSTALLED ((NTSTATUS)0x80000027L) +#define STATUS_PLUGPLAY_QUERY_VETOED ((NTSTATUS)0x80000028L) +#define STATUS_UNWIND_CONSOLIDATE ((NTSTATUS)0x80000029L) +#define STATUS_CLUSTER_NODE_ALREADY_UP ((NTSTATUS)0x80130001L) +#define STATUS_CLUSTER_NODE_ALREADY_DOWN ((NTSTATUS)0x80130002L) +#define STATUS_CLUSTER_NETWORK_ALREADY_ONLINE ((NTSTATUS)0x80130003L) +#define STATUS_CLUSTER_NETWORK_ALREADY_OFFLINE ((NTSTATUS)0x80130004L) +#define STATUS_CLUSTER_NODE_ALREADY_MEMBER ((NTSTATUS)0x80130005L) +#define STATUS_UNSUCCESSFUL ((NTSTATUS)0xC0000001L) +#define STATUS_NOT_IMPLEMENTED ((NTSTATUS)0xC0000002L) +#define STATUS_INVALID_INFO_CLASS ((NTSTATUS)0xC0000003L) +#define STATUS_INFO_LENGTH_MISMATCH ((NTSTATUS)0xC0000004L) +#define STATUS_ACCESS_VIOLATION ((NTSTATUS)0xC0000005L) +#define STATUS_IN_PAGE_ERROR ((NTSTATUS)0xC0000006L) +#define STATUS_PAGEFILE_QUOTA ((NTSTATUS)0xC0000007L) +#define STATUS_INVALID_HANDLE ((NTSTATUS)0xC0000008L) +#define STATUS_BAD_INITIAL_STACK ((NTSTATUS)0xC0000009L) +#define STATUS_BAD_INITIAL_PC ((NTSTATUS)0xC000000AL) +#define STATUS_INVALID_CID ((NTSTATUS)0xC000000BL) +#define STATUS_TIMER_NOT_CANCELED ((NTSTATUS)0xC000000CL) +#define STATUS_INVALID_PARAMETER ((NTSTATUS)0xC000000DL) +#define STATUS_NO_SUCH_DEVICE ((NTSTATUS)0xC000000EL) +#define STATUS_NO_SUCH_FILE ((NTSTATUS)0xC000000FL) +#define STATUS_INVALID_DEVICE_REQUEST ((NTSTATUS)0xC0000010L) +#define STATUS_END_OF_FILE ((NTSTATUS)0xC0000011L) +#define STATUS_WRONG_VOLUME ((NTSTATUS)0xC0000012L) +#define STATUS_NO_MEDIA_IN_DEVICE ((NTSTATUS)0xC0000013L) +#define STATUS_UNRECOGNIZED_MEDIA ((NTSTATUS)0xC0000014L) +#define STATUS_NONEXISTENT_SECTOR ((NTSTATUS)0xC0000015L) +#define STATUS_MORE_PROCESSING_REQUIRED ((NTSTATUS)0xC0000016L) +#define STATUS_NO_MEMORY ((NTSTATUS)0xC0000017L) +#define STATUS_CONFLICTING_ADDRESSES ((NTSTATUS)0xC0000018L) +#define STATUS_NOT_MAPPED_VIEW ((NTSTATUS)0xC0000019L) +#define STATUS_UNABLE_TO_FREE_VM ((NTSTATUS)0xC000001AL) +#define STATUS_UNABLE_TO_DELETE_SECTION ((NTSTATUS)0xC000001BL) +#define STATUS_INVALID_SYSTEM_SERVICE ((NTSTATUS)0xC000001CL) +#define STATUS_ILLEGAL_INSTRUCTION ((NTSTATUS)0xC000001DL) +#define STATUS_INVALID_LOCK_SEQUENCE ((NTSTATUS)0xC000001EL) +#define STATUS_INVALID_VIEW_SIZE ((NTSTATUS)0xC000001FL) +#define STATUS_INVALID_FILE_FOR_SECTION ((NTSTATUS)0xC0000020L) +#define STATUS_ALREADY_COMMITTED ((NTSTATUS)0xC0000021L) +#define STATUS_ACCESS_DENIED ((NTSTATUS)0xC0000022L) +#define STATUS_BUFFER_TOO_SMALL ((NTSTATUS)0xC0000023L) +#define STATUS_OBJECT_TYPE_MISMATCH ((NTSTATUS)0xC0000024L) +#define STATUS_NONCONTINUABLE_EXCEPTION ((NTSTATUS)0xC0000025L) +#define STATUS_INVALID_DISPOSITION ((NTSTATUS)0xC0000026L) +#define STATUS_UNWIND ((NTSTATUS)0xC0000027L) +#define STATUS_BAD_STACK ((NTSTATUS)0xC0000028L) +#define STATUS_INVALID_UNWIND_TARGET ((NTSTATUS)0xC0000029L) +#define STATUS_NOT_LOCKED ((NTSTATUS)0xC000002AL) +#define STATUS_PARITY_ERROR ((NTSTATUS)0xC000002BL) +#define STATUS_UNABLE_TO_DECOMMIT_VM ((NTSTATUS)0xC000002CL) +#define STATUS_NOT_COMMITTED ((NTSTATUS)0xC000002DL) +#define STATUS_INVALID_PORT_ATTRIBUTES ((NTSTATUS)0xC000002EL) +#define STATUS_PORT_MESSAGE_TOO_LONG ((NTSTATUS)0xC000002FL) +#define STATUS_INVALID_PARAMETER_MIX ((NTSTATUS)0xC0000030L) +#define STATUS_INVALID_QUOTA_LOWER ((NTSTATUS)0xC0000031L) +#define STATUS_DISK_CORRUPT_ERROR ((NTSTATUS)0xC0000032L) +#define STATUS_OBJECT_NAME_INVALID ((NTSTATUS)0xC0000033L) +#define STATUS_OBJECT_NAME_NOT_FOUND ((NTSTATUS)0xC0000034L) +#define STATUS_OBJECT_NAME_COLLISION ((NTSTATUS)0xC0000035L) +#define STATUS_PORT_DISCONNECTED ((NTSTATUS)0xC0000037L) +#define STATUS_DEVICE_ALREADY_ATTACHED ((NTSTATUS)0xC0000038L) +#define STATUS_OBJECT_PATH_INVALID ((NTSTATUS)0xC0000039L) +#define STATUS_OBJECT_PATH_NOT_FOUND ((NTSTATUS)0xC000003AL) +#define STATUS_OBJECT_PATH_SYNTAX_BAD ((NTSTATUS)0xC000003BL) +#define STATUS_DATA_OVERRUN ((NTSTATUS)0xC000003CL) +#define STATUS_DATA_LATE_ERROR ((NTSTATUS)0xC000003DL) +#define STATUS_DATA_ERROR ((NTSTATUS)0xC000003EL) +#define STATUS_CRC_ERROR ((NTSTATUS)0xC000003FL) +#define STATUS_SECTION_TOO_BIG ((NTSTATUS)0xC0000040L) +#define STATUS_PORT_CONNECTION_REFUSED ((NTSTATUS)0xC0000041L) +#define STATUS_INVALID_PORT_HANDLE ((NTSTATUS)0xC0000042L) +#define STATUS_SHARING_VIOLATION ((NTSTATUS)0xC0000043L) +#define STATUS_QUOTA_EXCEEDED ((NTSTATUS)0xC0000044L) +#define STATUS_INVALID_PAGE_PROTECTION ((NTSTATUS)0xC0000045L) +#define STATUS_MUTANT_NOT_OWNED ((NTSTATUS)0xC0000046L) +#define STATUS_SEMAPHORE_LIMIT_EXCEEDED ((NTSTATUS)0xC0000047L) +#define STATUS_PORT_ALREADY_SET ((NTSTATUS)0xC0000048L) +#define STATUS_SECTION_NOT_IMAGE ((NTSTATUS)0xC0000049L) +#define STATUS_SUSPEND_COUNT_EXCEEDED ((NTSTATUS)0xC000004AL) +#define STATUS_THREAD_IS_TERMINATING ((NTSTATUS)0xC000004BL) +#define STATUS_BAD_WORKING_SET_LIMIT ((NTSTATUS)0xC000004CL) +#define STATUS_INCOMPATIBLE_FILE_MAP ((NTSTATUS)0xC000004DL) +#define STATUS_SECTION_PROTECTION ((NTSTATUS)0xC000004EL) +#define STATUS_EAS_NOT_SUPPORTED ((NTSTATUS)0xC000004FL) +#define STATUS_EA_TOO_LARGE ((NTSTATUS)0xC0000050L) +#define STATUS_NONEXISTENT_EA_ENTRY ((NTSTATUS)0xC0000051L) +#define STATUS_NO_EAS_ON_FILE ((NTSTATUS)0xC0000052L) +#define STATUS_EA_CORRUPT_ERROR ((NTSTATUS)0xC0000053L) +#define STATUS_FILE_LOCK_CONFLICT ((NTSTATUS)0xC0000054L) +#define STATUS_LOCK_NOT_GRANTED ((NTSTATUS)0xC0000055L) +#define STATUS_DELETE_PENDING ((NTSTATUS)0xC0000056L) +#define STATUS_CTL_FILE_NOT_SUPPORTED ((NTSTATUS)0xC0000057L) +#define STATUS_UNKNOWN_REVISION ((NTSTATUS)0xC0000058L) +#define STATUS_REVISION_MISMATCH ((NTSTATUS)0xC0000059L) +#define STATUS_INVALID_OWNER ((NTSTATUS)0xC000005AL) +#define STATUS_INVALID_PRIMARY_GROUP ((NTSTATUS)0xC000005BL) +#define STATUS_NO_IMPERSONATION_TOKEN ((NTSTATUS)0xC000005CL) +#define STATUS_CANT_DISABLE_MANDATORY ((NTSTATUS)0xC000005DL) +#define STATUS_NO_LOGON_SERVERS ((NTSTATUS)0xC000005EL) +#define STATUS_NO_SUCH_LOGON_SESSION ((NTSTATUS)0xC000005FL) +#define STATUS_NO_SUCH_PRIVILEGE ((NTSTATUS)0xC0000060L) +#define STATUS_PRIVILEGE_NOT_HELD ((NTSTATUS)0xC0000061L) +#define STATUS_INVALID_ACCOUNT_NAME ((NTSTATUS)0xC0000062L) +#define STATUS_USER_EXISTS ((NTSTATUS)0xC0000063L) +#define STATUS_NO_SUCH_USER ((NTSTATUS)0xC0000064L) +#define STATUS_GROUP_EXISTS ((NTSTATUS)0xC0000065L) +#define STATUS_NO_SUCH_GROUP ((NTSTATUS)0xC0000066L) +#define STATUS_MEMBER_IN_GROUP ((NTSTATUS)0xC0000067L) +#define STATUS_MEMBER_NOT_IN_GROUP ((NTSTATUS)0xC0000068L) +#define STATUS_LAST_ADMIN ((NTSTATUS)0xC0000069L) +#define STATUS_WRONG_PASSWORD ((NTSTATUS)0xC000006AL) +#define STATUS_ILL_FORMED_PASSWORD ((NTSTATUS)0xC000006BL) +#define STATUS_PASSWORD_RESTRICTION ((NTSTATUS)0xC000006CL) +#define STATUS_LOGON_FAILURE ((NTSTATUS)0xC000006DL) +#define STATUS_ACCOUNT_RESTRICTION ((NTSTATUS)0xC000006EL) +#define STATUS_INVALID_LOGON_HOURS ((NTSTATUS)0xC000006FL) +#define STATUS_INVALID_WORKSTATION ((NTSTATUS)0xC0000070L) +#define STATUS_PASSWORD_EXPIRED ((NTSTATUS)0xC0000071L) +#define STATUS_ACCOUNT_DISABLED ((NTSTATUS)0xC0000072L) +#define STATUS_NONE_MAPPED ((NTSTATUS)0xC0000073L) +#define STATUS_TOO_MANY_LUIDS_REQUESTED ((NTSTATUS)0xC0000074L) +#define STATUS_LUIDS_EXHAUSTED ((NTSTATUS)0xC0000075L) +#define STATUS_INVALID_SUB_AUTHORITY ((NTSTATUS)0xC0000076L) +#define STATUS_INVALID_ACL ((NTSTATUS)0xC0000077L) +#define STATUS_INVALID_SID ((NTSTATUS)0xC0000078L) +#define STATUS_INVALID_SECURITY_DESCR ((NTSTATUS)0xC0000079L) +#define STATUS_PROCEDURE_NOT_FOUND ((NTSTATUS)0xC000007AL) +#define STATUS_INVALID_IMAGE_FORMAT ((NTSTATUS)0xC000007BL) +#define STATUS_NO_TOKEN ((NTSTATUS)0xC000007CL) +#define STATUS_BAD_INHERITANCE_ACL ((NTSTATUS)0xC000007DL) +#define STATUS_RANGE_NOT_LOCKED ((NTSTATUS)0xC000007EL) +#define STATUS_DISK_FULL ((NTSTATUS)0xC000007FL) +#define STATUS_SERVER_DISABLED ((NTSTATUS)0xC0000080L) +#define STATUS_SERVER_NOT_DISABLED ((NTSTATUS)0xC0000081L) +#define STATUS_TOO_MANY_GUIDS_REQUESTED ((NTSTATUS)0xC0000082L) +#define STATUS_GUIDS_EXHAUSTED ((NTSTATUS)0xC0000083L) +#define STATUS_INVALID_ID_AUTHORITY ((NTSTATUS)0xC0000084L) +#define STATUS_AGENTS_EXHAUSTED ((NTSTATUS)0xC0000085L) +#define STATUS_INVALID_VOLUME_LABEL ((NTSTATUS)0xC0000086L) +#define STATUS_SECTION_NOT_EXTENDED ((NTSTATUS)0xC0000087L) +#define STATUS_NOT_MAPPED_DATA ((NTSTATUS)0xC0000088L) +#define STATUS_RESOURCE_DATA_NOT_FOUND ((NTSTATUS)0xC0000089L) +#define STATUS_RESOURCE_TYPE_NOT_FOUND ((NTSTATUS)0xC000008AL) +#define STATUS_RESOURCE_NAME_NOT_FOUND ((NTSTATUS)0xC000008BL) +#define STATUS_ARRAY_BOUNDS_EXCEEDED ((NTSTATUS)0xC000008CL) +#define STATUS_FLOAT_DENORMAL_OPERAND ((NTSTATUS)0xC000008DL) +#define STATUS_FLOAT_DIVIDE_BY_ZERO ((NTSTATUS)0xC000008EL) +#define STATUS_FLOAT_INEXACT_RESULT ((NTSTATUS)0xC000008FL) +#define STATUS_FLOAT_INVALID_OPERATION ((NTSTATUS)0xC0000090L) +#define STATUS_FLOAT_OVERFLOW ((NTSTATUS)0xC0000091L) +#define STATUS_FLOAT_STACK_CHECK ((NTSTATUS)0xC0000092L) +#define STATUS_FLOAT_UNDERFLOW ((NTSTATUS)0xC0000093L) +#define STATUS_INTEGER_DIVIDE_BY_ZERO ((NTSTATUS)0xC0000094L) +#define STATUS_INTEGER_OVERFLOW ((NTSTATUS)0xC0000095L) +#define STATUS_PRIVILEGED_INSTRUCTION ((NTSTATUS)0xC0000096L) +#define STATUS_TOO_MANY_PAGING_FILES ((NTSTATUS)0xC0000097L) +#define STATUS_FILE_INVALID ((NTSTATUS)0xC0000098L) +#define STATUS_ALLOTTED_SPACE_EXCEEDED ((NTSTATUS)0xC0000099L) +#define STATUS_INSUFFICIENT_RESOURCES ((NTSTATUS)0xC000009AL) +#define STATUS_DFS_EXIT_PATH_FOUND ((NTSTATUS)0xC000009BL) +#define STATUS_DEVICE_DATA_ERROR ((NTSTATUS)0xC000009CL) +#define STATUS_DEVICE_NOT_CONNECTED ((NTSTATUS)0xC000009DL) +#define STATUS_DEVICE_POWER_FAILURE ((NTSTATUS)0xC000009EL) +#define STATUS_FREE_VM_NOT_AT_BASE ((NTSTATUS)0xC000009FL) +#define STATUS_MEMORY_NOT_ALLOCATED ((NTSTATUS)0xC00000A0L) +#define STATUS_WORKING_SET_QUOTA ((NTSTATUS)0xC00000A1L) +#define STATUS_MEDIA_WRITE_PROTECTED ((NTSTATUS)0xC00000A2L) +#define STATUS_DEVICE_NOT_READY ((NTSTATUS)0xC00000A3L) +#define STATUS_INVALID_GROUP_ATTRIBUTES ((NTSTATUS)0xC00000A4L) +#define STATUS_BAD_IMPERSONATION_LEVEL ((NTSTATUS)0xC00000A5L) +#define STATUS_CANT_OPEN_ANONYMOUS ((NTSTATUS)0xC00000A6L) +#define STATUS_BAD_VALIDATION_CLASS ((NTSTATUS)0xC00000A7L) +#define STATUS_BAD_TOKEN_TYPE ((NTSTATUS)0xC00000A8L) +#define STATUS_BAD_MASTER_BOOT_RECORD ((NTSTATUS)0xC00000A9L) +#define STATUS_INSTRUCTION_MISALIGNMENT ((NTSTATUS)0xC00000AAL) +#define STATUS_INSTANCE_NOT_AVAILABLE ((NTSTATUS)0xC00000ABL) +#define STATUS_PIPE_NOT_AVAILABLE ((NTSTATUS)0xC00000ACL) +#define STATUS_INVALID_PIPE_STATE ((NTSTATUS)0xC00000ADL) +#define STATUS_PIPE_BUSY ((NTSTATUS)0xC00000AEL) +#define STATUS_ILLEGAL_FUNCTION ((NTSTATUS)0xC00000AFL) +#define STATUS_PIPE_DISCONNECTED ((NTSTATUS)0xC00000B0L) +#define STATUS_PIPE_CLOSING ((NTSTATUS)0xC00000B1L) +#define STATUS_PIPE_CONNECTED ((NTSTATUS)0xC00000B2L) +#define STATUS_PIPE_LISTENING ((NTSTATUS)0xC00000B3L) +#define STATUS_INVALID_READ_MODE ((NTSTATUS)0xC00000B4L) +#define STATUS_IO_TIMEOUT ((NTSTATUS)0xC00000B5L) +#define STATUS_FILE_FORCED_CLOSED ((NTSTATUS)0xC00000B6L) +#define STATUS_PROFILING_NOT_STARTED ((NTSTATUS)0xC00000B7L) +#define STATUS_PROFILING_NOT_STOPPED ((NTSTATUS)0xC00000B8L) +#define STATUS_COULD_NOT_INTERPRET ((NTSTATUS)0xC00000B9L) +#define STATUS_FILE_IS_A_DIRECTORY ((NTSTATUS)0xC00000BAL) +#define STATUS_NOT_SUPPORTED ((NTSTATUS)0xC00000BBL) +#define STATUS_REMOTE_NOT_LISTENING ((NTSTATUS)0xC00000BCL) +#define STATUS_DUPLICATE_NAME ((NTSTATUS)0xC00000BDL) +#define STATUS_BAD_NETWORK_PATH ((NTSTATUS)0xC00000BEL) +#define STATUS_NETWORK_BUSY ((NTSTATUS)0xC00000BFL) +#define STATUS_DEVICE_DOES_NOT_EXIST ((NTSTATUS)0xC00000C0L) +#define STATUS_TOO_MANY_COMMANDS ((NTSTATUS)0xC00000C1L) +#define STATUS_ADAPTER_HARDWARE_ERROR ((NTSTATUS)0xC00000C2L) +#define STATUS_INVALID_NETWORK_RESPONSE ((NTSTATUS)0xC00000C3L) +#define STATUS_UNEXPECTED_NETWORK_ERROR ((NTSTATUS)0xC00000C4L) +#define STATUS_BAD_REMOTE_ADAPTER ((NTSTATUS)0xC00000C5L) +#define STATUS_PRINT_QUEUE_FULL ((NTSTATUS)0xC00000C6L) +#define STATUS_NO_SPOOL_SPACE ((NTSTATUS)0xC00000C7L) +#define STATUS_PRINT_CANCELLED ((NTSTATUS)0xC00000C8L) +#define STATUS_NETWORK_NAME_DELETED ((NTSTATUS)0xC00000C9L) +#define STATUS_NETWORK_ACCESS_DENIED ((NTSTATUS)0xC00000CAL) +#define STATUS_BAD_DEVICE_TYPE ((NTSTATUS)0xC00000CBL) +#define STATUS_BAD_NETWORK_NAME ((NTSTATUS)0xC00000CCL) +#define STATUS_TOO_MANY_NAMES ((NTSTATUS)0xC00000CDL) +#define STATUS_TOO_MANY_SESSIONS ((NTSTATUS)0xC00000CEL) +#define STATUS_SHARING_PAUSED ((NTSTATUS)0xC00000CFL) +#define STATUS_REQUEST_NOT_ACCEPTED ((NTSTATUS)0xC00000D0L) +#define STATUS_REDIRECTOR_PAUSED ((NTSTATUS)0xC00000D1L) +#define STATUS_NET_WRITE_FAULT ((NTSTATUS)0xC00000D2L) +#define STATUS_PROFILING_AT_LIMIT ((NTSTATUS)0xC00000D3L) +#define STATUS_NOT_SAME_DEVICE ((NTSTATUS)0xC00000D4L) +#define STATUS_FILE_RENAMED ((NTSTATUS)0xC00000D5L) +#define STATUS_VIRTUAL_CIRCUIT_CLOSED ((NTSTATUS)0xC00000D6L) +#define STATUS_NO_SECURITY_ON_OBJECT ((NTSTATUS)0xC00000D7L) +#define STATUS_CANT_WAIT ((NTSTATUS)0xC00000D8L) +#define STATUS_PIPE_EMPTY ((NTSTATUS)0xC00000D9L) +#define STATUS_CANT_ACCESS_DOMAIN_INFO ((NTSTATUS)0xC00000DAL) +#define STATUS_CANT_TERMINATE_SELF ((NTSTATUS)0xC00000DBL) +#define STATUS_INVALID_SERVER_STATE ((NTSTATUS)0xC00000DCL) +#define STATUS_INVALID_DOMAIN_STATE ((NTSTATUS)0xC00000DDL) +#define STATUS_INVALID_DOMAIN_ROLE ((NTSTATUS)0xC00000DEL) +#define STATUS_NO_SUCH_DOMAIN ((NTSTATUS)0xC00000DFL) +#define STATUS_DOMAIN_EXISTS ((NTSTATUS)0xC00000E0L) +#define STATUS_DOMAIN_LIMIT_EXCEEDED ((NTSTATUS)0xC00000E1L) +#define STATUS_OPLOCK_NOT_GRANTED ((NTSTATUS)0xC00000E2L) +#define STATUS_INVALID_OPLOCK_PROTOCOL ((NTSTATUS)0xC00000E3L) +#define STATUS_INTERNAL_DB_CORRUPTION ((NTSTATUS)0xC00000E4L) +#define STATUS_INTERNAL_ERROR ((NTSTATUS)0xC00000E5L) +#define STATUS_GENERIC_NOT_MAPPED ((NTSTATUS)0xC00000E6L) +#define STATUS_BAD_DESCRIPTOR_FORMAT ((NTSTATUS)0xC00000E7L) +#define STATUS_INVALID_USER_BUFFER ((NTSTATUS)0xC00000E8L) +#define STATUS_UNEXPECTED_IO_ERROR ((NTSTATUS)0xC00000E9L) +#define STATUS_UNEXPECTED_MM_CREATE_ERR ((NTSTATUS)0xC00000EAL) +#define STATUS_UNEXPECTED_MM_MAP_ERROR ((NTSTATUS)0xC00000EBL) +#define STATUS_UNEXPECTED_MM_EXTEND_ERR ((NTSTATUS)0xC00000ECL) +#define STATUS_NOT_LOGON_PROCESS ((NTSTATUS)0xC00000EDL) +#define STATUS_LOGON_SESSION_EXISTS ((NTSTATUS)0xC00000EEL) +#define STATUS_INVALID_PARAMETER_1 ((NTSTATUS)0xC00000EFL) +#define STATUS_INVALID_PARAMETER_2 ((NTSTATUS)0xC00000F0L) +#define STATUS_INVALID_PARAMETER_3 ((NTSTATUS)0xC00000F1L) +#define STATUS_INVALID_PARAMETER_4 ((NTSTATUS)0xC00000F2L) +#define STATUS_INVALID_PARAMETER_5 ((NTSTATUS)0xC00000F3L) +#define STATUS_INVALID_PARAMETER_6 ((NTSTATUS)0xC00000F4L) +#define STATUS_INVALID_PARAMETER_7 ((NTSTATUS)0xC00000F5L) +#define STATUS_INVALID_PARAMETER_8 ((NTSTATUS)0xC00000F6L) +#define STATUS_INVALID_PARAMETER_9 ((NTSTATUS)0xC00000F7L) +#define STATUS_INVALID_PARAMETER_10 ((NTSTATUS)0xC00000F8L) +#define STATUS_INVALID_PARAMETER_11 ((NTSTATUS)0xC00000F9L) +#define STATUS_INVALID_PARAMETER_12 ((NTSTATUS)0xC00000FAL) +#define STATUS_REDIRECTOR_NOT_STARTED ((NTSTATUS)0xC00000FBL) +#define STATUS_REDIRECTOR_STARTED ((NTSTATUS)0xC00000FCL) +#define STATUS_STACK_OVERFLOW ((NTSTATUS)0xC00000FDL) +#define STATUS_NO_SUCH_PACKAGE ((NTSTATUS)0xC00000FEL) +#define STATUS_BAD_FUNCTION_TABLE ((NTSTATUS)0xC00000FFL) +#define STATUS_VARIABLE_NOT_FOUND ((NTSTATUS)0xC0000100L) +#define STATUS_DIRECTORY_NOT_EMPTY ((NTSTATUS)0xC0000101L) +#define STATUS_FILE_CORRUPT_ERROR ((NTSTATUS)0xC0000102L) +#define STATUS_NOT_A_DIRECTORY ((NTSTATUS)0xC0000103L) +#define STATUS_BAD_LOGON_SESSION_STATE ((NTSTATUS)0xC0000104L) +#define STATUS_LOGON_SESSION_COLLISION ((NTSTATUS)0xC0000105L) +#define STATUS_NAME_TOO_LONG ((NTSTATUS)0xC0000106L) +#define STATUS_FILES_OPEN ((NTSTATUS)0xC0000107L) +#define STATUS_CONNECTION_IN_USE ((NTSTATUS)0xC0000108L) +#define STATUS_MESSAGE_NOT_FOUND ((NTSTATUS)0xC0000109L) +#define STATUS_PROCESS_IS_TERMINATING ((NTSTATUS)0xC000010AL) +#define STATUS_INVALID_LOGON_TYPE ((NTSTATUS)0xC000010BL) +#define STATUS_NO_GUID_TRANSLATION ((NTSTATUS)0xC000010CL) +#define STATUS_CANNOT_IMPERSONATE ((NTSTATUS)0xC000010DL) +#define STATUS_IMAGE_ALREADY_LOADED ((NTSTATUS)0xC000010EL) +#define STATUS_ABIOS_NOT_PRESENT ((NTSTATUS)0xC000010FL) +#define STATUS_ABIOS_LID_NOT_EXIST ((NTSTATUS)0xC0000110L) +#define STATUS_ABIOS_LID_ALREADY_OWNED ((NTSTATUS)0xC0000111L) +#define STATUS_ABIOS_NOT_LID_OWNER ((NTSTATUS)0xC0000112L) +#define STATUS_ABIOS_INVALID_COMMAND ((NTSTATUS)0xC0000113L) +#define STATUS_ABIOS_INVALID_LID ((NTSTATUS)0xC0000114L) +#define STATUS_ABIOS_SELECTOR_NOT_AVAILABLE ((NTSTATUS)0xC0000115L) +#define STATUS_ABIOS_INVALID_SELECTOR ((NTSTATUS)0xC0000116L) +#define STATUS_NO_LDT ((NTSTATUS)0xC0000117L) +#define STATUS_INVALID_LDT_SIZE ((NTSTATUS)0xC0000118L) +#define STATUS_INVALID_LDT_OFFSET ((NTSTATUS)0xC0000119L) +#define STATUS_INVALID_LDT_DESCRIPTOR ((NTSTATUS)0xC000011AL) +#define STATUS_INVALID_IMAGE_NE_FORMAT ((NTSTATUS)0xC000011BL) +#define STATUS_RXACT_INVALID_STATE ((NTSTATUS)0xC000011CL) +#define STATUS_RXACT_COMMIT_FAILURE ((NTSTATUS)0xC000011DL) +#define STATUS_MAPPED_FILE_SIZE_ZERO ((NTSTATUS)0xC000011EL) +#define STATUS_TOO_MANY_OPENED_FILES ((NTSTATUS)0xC000011FL) +#define STATUS_CANCELLED ((NTSTATUS)0xC0000120L) +#define STATUS_CANNOT_DELETE ((NTSTATUS)0xC0000121L) +#define STATUS_INVALID_COMPUTER_NAME ((NTSTATUS)0xC0000122L) +#define STATUS_FILE_DELETED ((NTSTATUS)0xC0000123L) +#define STATUS_SPECIAL_ACCOUNT ((NTSTATUS)0xC0000124L) +#define STATUS_SPECIAL_GROUP ((NTSTATUS)0xC0000125L) +#define STATUS_SPECIAL_USER ((NTSTATUS)0xC0000126L) +#define STATUS_MEMBERS_PRIMARY_GROUP ((NTSTATUS)0xC0000127L) +#define STATUS_FILE_CLOSED ((NTSTATUS)0xC0000128L) +#define STATUS_TOO_MANY_THREADS ((NTSTATUS)0xC0000129L) +#define STATUS_THREAD_NOT_IN_PROCESS ((NTSTATUS)0xC000012AL) +#define STATUS_TOKEN_ALREADY_IN_USE ((NTSTATUS)0xC000012BL) +#define STATUS_PAGEFILE_QUOTA_EXCEEDED ((NTSTATUS)0xC000012CL) +#define STATUS_COMMITMENT_LIMIT ((NTSTATUS)0xC000012DL) +#define STATUS_INVALID_IMAGE_LE_FORMAT ((NTSTATUS)0xC000012EL) +#define STATUS_INVALID_IMAGE_NOT_MZ ((NTSTATUS)0xC000012FL) +#define STATUS_INVALID_IMAGE_PROTECT ((NTSTATUS)0xC0000130L) +#define STATUS_INVALID_IMAGE_WIN_16 ((NTSTATUS)0xC0000131L) +#define STATUS_LOGON_SERVER_CONFLICT ((NTSTATUS)0xC0000132L) +#define STATUS_TIME_DIFFERENCE_AT_DC ((NTSTATUS)0xC0000133L) +#define STATUS_SYNCHRONIZATION_REQUIRED ((NTSTATUS)0xC0000134L) +#define STATUS_DLL_NOT_FOUND ((NTSTATUS)0xC0000135L) +#define STATUS_OPEN_FAILED ((NTSTATUS)0xC0000136L) +#define STATUS_IO_PRIVILEGE_FAILED ((NTSTATUS)0xC0000137L) +#define STATUS_ORDINAL_NOT_FOUND ((NTSTATUS)0xC0000138L) +#define STATUS_ENTRYPOINT_NOT_FOUND ((NTSTATUS)0xC0000139L) +#define STATUS_CONTROL_C_EXIT ((NTSTATUS)0xC000013AL) +#define STATUS_LOCAL_DISCONNECT ((NTSTATUS)0xC000013BL) +#define STATUS_REMOTE_DISCONNECT ((NTSTATUS)0xC000013CL) +#define STATUS_REMOTE_RESOURCES ((NTSTATUS)0xC000013DL) +#define STATUS_LINK_FAILED ((NTSTATUS)0xC000013EL) +#define STATUS_LINK_TIMEOUT ((NTSTATUS)0xC000013FL) +#define STATUS_INVALID_CONNECTION ((NTSTATUS)0xC0000140L) +#define STATUS_INVALID_ADDRESS ((NTSTATUS)0xC0000141L) +#define STATUS_DLL_INIT_FAILED ((NTSTATUS)0xC0000142L) +#define STATUS_MISSING_SYSTEMFILE ((NTSTATUS)0xC0000143L) +#define STATUS_UNHANDLED_EXCEPTION ((NTSTATUS)0xC0000144L) +#define STATUS_APP_INIT_FAILURE ((NTSTATUS)0xC0000145L) +#define STATUS_PAGEFILE_CREATE_FAILED ((NTSTATUS)0xC0000146L) +#define STATUS_NO_PAGEFILE ((NTSTATUS)0xC0000147L) +#define STATUS_INVALID_LEVEL ((NTSTATUS)0xC0000148L) +#define STATUS_WRONG_PASSWORD_CORE ((NTSTATUS)0xC0000149L) +#define STATUS_ILLEGAL_FLOAT_CONTEXT ((NTSTATUS)0xC000014AL) +#define STATUS_PIPE_BROKEN ((NTSTATUS)0xC000014BL) +#define STATUS_REGISTRY_CORRUPT ((NTSTATUS)0xC000014CL) +#define STATUS_REGISTRY_IO_FAILED ((NTSTATUS)0xC000014DL) +#define STATUS_NO_EVENT_PAIR ((NTSTATUS)0xC000014EL) +#define STATUS_UNRECOGNIZED_VOLUME ((NTSTATUS)0xC000014FL) +#define STATUS_SERIAL_NO_DEVICE_INITED ((NTSTATUS)0xC0000150L) +#define STATUS_NO_SUCH_ALIAS ((NTSTATUS)0xC0000151L) +#define STATUS_MEMBER_NOT_IN_ALIAS ((NTSTATUS)0xC0000152L) +#define STATUS_MEMBER_IN_ALIAS ((NTSTATUS)0xC0000153L) +#define STATUS_ALIAS_EXISTS ((NTSTATUS)0xC0000154L) +#define STATUS_LOGON_NOT_GRANTED ((NTSTATUS)0xC0000155L) +#define STATUS_TOO_MANY_SECRETS ((NTSTATUS)0xC0000156L) +#define STATUS_SECRET_TOO_LONG ((NTSTATUS)0xC0000157L) +#define STATUS_INTERNAL_DB_ERROR ((NTSTATUS)0xC0000158L) +#define STATUS_FULLSCREEN_MODE ((NTSTATUS)0xC0000159L) +#define STATUS_TOO_MANY_CONTEXT_IDS ((NTSTATUS)0xC000015AL) +#define STATUS_LOGON_TYPE_NOT_GRANTED ((NTSTATUS)0xC000015BL) +#define STATUS_NOT_REGISTRY_FILE ((NTSTATUS)0xC000015CL) +#define STATUS_NT_CROSS_ENCRYPTION_REQUIRED ((NTSTATUS)0xC000015DL) +#define STATUS_DOMAIN_CTRLR_CONFIG_ERROR ((NTSTATUS)0xC000015EL) +#define STATUS_FT_MISSING_MEMBER ((NTSTATUS)0xC000015FL) +#define STATUS_ILL_FORMED_SERVICE_ENTRY ((NTSTATUS)0xC0000160L) +#define STATUS_ILLEGAL_CHARACTER ((NTSTATUS)0xC0000161L) +#define STATUS_UNMAPPABLE_CHARACTER ((NTSTATUS)0xC0000162L) +#define STATUS_UNDEFINED_CHARACTER ((NTSTATUS)0xC0000163L) +#define STATUS_FLOPPY_VOLUME ((NTSTATUS)0xC0000164L) +#define STATUS_FLOPPY_ID_MARK_NOT_FOUND ((NTSTATUS)0xC0000165L) +#define STATUS_FLOPPY_WRONG_CYLINDER ((NTSTATUS)0xC0000166L) +#define STATUS_FLOPPY_UNKNOWN_ERROR ((NTSTATUS)0xC0000167L) +#define STATUS_FLOPPY_BAD_REGISTERS ((NTSTATUS)0xC0000168L) +#define STATUS_DISK_RECALIBRATE_FAILED ((NTSTATUS)0xC0000169L) +#define STATUS_DISK_OPERATION_FAILED ((NTSTATUS)0xC000016AL) +#define STATUS_DISK_RESET_FAILED ((NTSTATUS)0xC000016BL) +#define STATUS_SHARED_IRQ_BUSY ((NTSTATUS)0xC000016CL) +#define STATUS_FT_ORPHANING ((NTSTATUS)0xC000016DL) +#define STATUS_BIOS_FAILED_TO_CONNECT_INTERRUPT ((NTSTATUS)0xC000016EL) +#define STATUS_PARTITION_FAILURE ((NTSTATUS)0xC0000172L) +#define STATUS_INVALID_BLOCK_LENGTH ((NTSTATUS)0xC0000173L) +#define STATUS_DEVICE_NOT_PARTITIONED ((NTSTATUS)0xC0000174L) +#define STATUS_UNABLE_TO_LOCK_MEDIA ((NTSTATUS)0xC0000175L) +#define STATUS_UNABLE_TO_UNLOAD_MEDIA ((NTSTATUS)0xC0000176L) +#define STATUS_EOM_OVERFLOW ((NTSTATUS)0xC0000177L) +#define STATUS_NO_MEDIA ((NTSTATUS)0xC0000178L) +#define STATUS_NO_SUCH_MEMBER ((NTSTATUS)0xC000017AL) +#define STATUS_INVALID_MEMBER ((NTSTATUS)0xC000017BL) +#define STATUS_KEY_DELETED ((NTSTATUS)0xC000017CL) +#define STATUS_NO_LOG_SPACE ((NTSTATUS)0xC000017DL) +#define STATUS_TOO_MANY_SIDS ((NTSTATUS)0xC000017EL) +#define STATUS_LM_CROSS_ENCRYPTION_REQUIRED ((NTSTATUS)0xC000017FL) +#define STATUS_KEY_HAS_CHILDREN ((NTSTATUS)0xC0000180L) +#define STATUS_CHILD_MUST_BE_VOLATILE ((NTSTATUS)0xC0000181L) +#define STATUS_DEVICE_CONFIGURATION_ERROR ((NTSTATUS)0xC0000182L) +#define STATUS_DRIVER_INTERNAL_ERROR ((NTSTATUS)0xC0000183L) +#define STATUS_INVALID_DEVICE_STATE ((NTSTATUS)0xC0000184L) +#define STATUS_IO_DEVICE_ERROR ((NTSTATUS)0xC0000185L) +#define STATUS_DEVICE_PROTOCOL_ERROR ((NTSTATUS)0xC0000186L) +#define STATUS_BACKUP_CONTROLLER ((NTSTATUS)0xC0000187L) +#define STATUS_LOG_FILE_FULL ((NTSTATUS)0xC0000188L) +#define STATUS_TOO_LATE ((NTSTATUS)0xC0000189L) +#define STATUS_NO_TRUST_LSA_SECRET ((NTSTATUS)0xC000018AL) +#define STATUS_NO_TRUST_SAM_ACCOUNT ((NTSTATUS)0xC000018BL) +#define STATUS_TRUSTED_DOMAIN_FAILURE ((NTSTATUS)0xC000018CL) +#define STATUS_TRUSTED_RELATIONSHIP_FAILURE ((NTSTATUS)0xC000018DL) +#define STATUS_EVENTLOG_FILE_CORRUPT ((NTSTATUS)0xC000018EL) +#define STATUS_EVENTLOG_CANT_START ((NTSTATUS)0xC000018FL) +#define STATUS_TRUST_FAILURE ((NTSTATUS)0xC0000190L) +#define STATUS_MUTANT_LIMIT_EXCEEDED ((NTSTATUS)0xC0000191L) +#define STATUS_NETLOGON_NOT_STARTED ((NTSTATUS)0xC0000192L) +#define STATUS_ACCOUNT_EXPIRED ((NTSTATUS)0xC0000193L) +#define STATUS_POSSIBLE_DEADLOCK ((NTSTATUS)0xC0000194L) +#define STATUS_NETWORK_CREDENTIAL_CONFLICT ((NTSTATUS)0xC0000195L) +#define STATUS_REMOTE_SESSION_LIMIT ((NTSTATUS)0xC0000196L) +#define STATUS_EVENTLOG_FILE_CHANGED ((NTSTATUS)0xC0000197L) +#define STATUS_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT ((NTSTATUS)0xC0000198L) +#define STATUS_NOLOGON_WORKSTATION_TRUST_ACCOUNT ((NTSTATUS)0xC0000199L) +#define STATUS_NOLOGON_SERVER_TRUST_ACCOUNT ((NTSTATUS)0xC000019AL) +#define STATUS_DOMAIN_TRUST_INCONSISTENT ((NTSTATUS)0xC000019BL) +#define STATUS_FS_DRIVER_REQUIRED ((NTSTATUS)0xC000019CL) +#define STATUS_NO_USER_SESSION_KEY ((NTSTATUS)0xC0000202L) +#define STATUS_USER_SESSION_DELETED ((NTSTATUS)0xC0000203L) +#define STATUS_RESOURCE_LANG_NOT_FOUND ((NTSTATUS)0xC0000204L) +#define STATUS_INSUFF_SERVER_RESOURCES ((NTSTATUS)0xC0000205L) +#define STATUS_INVALID_BUFFER_SIZE ((NTSTATUS)0xC0000206L) +#define STATUS_INVALID_ADDRESS_COMPONENT ((NTSTATUS)0xC0000207L) +#define STATUS_INVALID_ADDRESS_WILDCARD ((NTSTATUS)0xC0000208L) +#define STATUS_TOO_MANY_ADDRESSES ((NTSTATUS)0xC0000209L) +#define STATUS_ADDRESS_ALREADY_EXISTS ((NTSTATUS)0xC000020AL) +#define STATUS_ADDRESS_CLOSED ((NTSTATUS)0xC000020BL) +#define STATUS_CONNECTION_DISCONNECTED ((NTSTATUS)0xC000020CL) +#define STATUS_CONNECTION_RESET ((NTSTATUS)0xC000020DL) +#define STATUS_TOO_MANY_NODES ((NTSTATUS)0xC000020EL) +#define STATUS_TRANSACTION_ABORTED ((NTSTATUS)0xC000020FL) +#define STATUS_TRANSACTION_TIMED_OUT ((NTSTATUS)0xC0000210L) +#define STATUS_TRANSACTION_NO_RELEASE ((NTSTATUS)0xC0000211L) +#define STATUS_TRANSACTION_NO_MATCH ((NTSTATUS)0xC0000212L) +#define STATUS_TRANSACTION_RESPONDED ((NTSTATUS)0xC0000213L) +#define STATUS_TRANSACTION_INVALID_ID ((NTSTATUS)0xC0000214L) +#define STATUS_TRANSACTION_INVALID_TYPE ((NTSTATUS)0xC0000215L) +#define STATUS_NOT_SERVER_SESSION ((NTSTATUS)0xC0000216L) +#define STATUS_NOT_CLIENT_SESSION ((NTSTATUS)0xC0000217L) +#define STATUS_CANNOT_LOAD_REGISTRY_FILE ((NTSTATUS)0xC0000218L) +#define STATUS_DEBUG_ATTACH_FAILED ((NTSTATUS)0xC0000219L) +#define STATUS_SYSTEM_PROCESS_TERMINATED ((NTSTATUS)0xC000021AL) +#define STATUS_DATA_NOT_ACCEPTED ((NTSTATUS)0xC000021BL) +#define STATUS_NO_BROWSER_SERVERS_FOUND ((NTSTATUS)0xC000021CL) +#define STATUS_VDM_HARD_ERROR ((NTSTATUS)0xC000021DL) +#define STATUS_DRIVER_CANCEL_TIMEOUT ((NTSTATUS)0xC000021EL) +#define STATUS_REPLY_MESSAGE_MISMATCH ((NTSTATUS)0xC000021FL) +#define STATUS_MAPPED_ALIGNMENT ((NTSTATUS)0xC0000220L) +#define STATUS_IMAGE_CHECKSUM_MISMATCH ((NTSTATUS)0xC0000221L) +#define STATUS_LOST_WRITEBEHIND_DATA ((NTSTATUS)0xC0000222L) +#define STATUS_CLIENT_SERVER_PARAMETERS_INVALID ((NTSTATUS)0xC0000223L) +#define STATUS_PASSWORD_MUST_CHANGE ((NTSTATUS)0xC0000224L) +#define STATUS_NOT_FOUND ((NTSTATUS)0xC0000225L) +#define STATUS_NOT_TINY_STREAM ((NTSTATUS)0xC0000226L) +#define STATUS_RECOVERY_FAILURE ((NTSTATUS)0xC0000227L) +#define STATUS_STACK_OVERFLOW_READ ((NTSTATUS)0xC0000228L) +#define STATUS_FAIL_CHECK ((NTSTATUS)0xC0000229L) +#define STATUS_DUPLICATE_OBJECTID ((NTSTATUS)0xC000022AL) +#define STATUS_OBJECTID_EXISTS ((NTSTATUS)0xC000022BL) +#define STATUS_CONVERT_TO_LARGE ((NTSTATUS)0xC000022CL) +#define STATUS_RETRY ((NTSTATUS)0xC000022DL) +#define STATUS_FOUND_OUT_OF_SCOPE ((NTSTATUS)0xC000022EL) +#define STATUS_ALLOCATE_BUCKET ((NTSTATUS)0xC000022FL) +#define STATUS_PROPSET_NOT_FOUND ((NTSTATUS)0xC0000230L) +#define STATUS_MARSHALL_OVERFLOW ((NTSTATUS)0xC0000231L) +#define STATUS_INVALID_VARIANT ((NTSTATUS)0xC0000232L) +#define STATUS_DOMAIN_CONTROLLER_NOT_FOUND ((NTSTATUS)0xC0000233L) +#define STATUS_ACCOUNT_LOCKED_OUT ((NTSTATUS)0xC0000234L) +#define STATUS_HANDLE_NOT_CLOSABLE ((NTSTATUS)0xC0000235L) +#define STATUS_CONNECTION_REFUSED ((NTSTATUS)0xC0000236L) +#define STATUS_GRACEFUL_DISCONNECT ((NTSTATUS)0xC0000237L) +#define STATUS_ADDRESS_ALREADY_ASSOCIATED ((NTSTATUS)0xC0000238L) +#define STATUS_ADDRESS_NOT_ASSOCIATED ((NTSTATUS)0xC0000239L) +#define STATUS_CONNECTION_INVALID ((NTSTATUS)0xC000023AL) +#define STATUS_CONNECTION_ACTIVE ((NTSTATUS)0xC000023BL) +#define STATUS_NETWORK_UNREACHABLE ((NTSTATUS)0xC000023CL) +#define STATUS_HOST_UNREACHABLE ((NTSTATUS)0xC000023DL) +#define STATUS_PROTOCOL_UNREACHABLE ((NTSTATUS)0xC000023EL) +#define STATUS_PORT_UNREACHABLE ((NTSTATUS)0xC000023FL) +#define STATUS_REQUEST_ABORTED ((NTSTATUS)0xC0000240L) +#define STATUS_CONNECTION_ABORTED ((NTSTATUS)0xC0000241L) +#define STATUS_BAD_COMPRESSION_BUFFER ((NTSTATUS)0xC0000242L) +#define STATUS_USER_MAPPED_FILE ((NTSTATUS)0xC0000243L) +#define STATUS_AUDIT_FAILED ((NTSTATUS)0xC0000244L) +#define STATUS_TIMER_RESOLUTION_NOT_SET ((NTSTATUS)0xC0000245L) +#define STATUS_CONNECTION_COUNT_LIMIT ((NTSTATUS)0xC0000246L) +#define STATUS_LOGIN_TIME_RESTRICTION ((NTSTATUS)0xC0000247L) +#define STATUS_LOGIN_WKSTA_RESTRICTION ((NTSTATUS)0xC0000248L) +#define STATUS_IMAGE_MP_UP_MISMATCH ((NTSTATUS)0xC0000249L) +#define STATUS_INSUFFICIENT_LOGON_INFO ((NTSTATUS)0xC0000250L) +#define STATUS_BAD_DLL_ENTRYPOINT ((NTSTATUS)0xC0000251L) +#define STATUS_BAD_SERVICE_ENTRYPOINT ((NTSTATUS)0xC0000252L) +#define STATUS_LPC_REPLY_LOST ((NTSTATUS)0xC0000253L) +#define STATUS_IP_ADDRESS_CONFLICT1 ((NTSTATUS)0xC0000254L) +#define STATUS_IP_ADDRESS_CONFLICT2 ((NTSTATUS)0xC0000255L) +#define STATUS_REGISTRY_QUOTA_LIMIT ((NTSTATUS)0xC0000256L) +#define STATUS_PATH_NOT_COVERED ((NTSTATUS)0xC0000257L) +#define STATUS_NO_CALLBACK_ACTIVE ((NTSTATUS)0xC0000258L) +#define STATUS_LICENSE_QUOTA_EXCEEDED ((NTSTATUS)0xC0000259L) +#define STATUS_PWD_TOO_SHORT ((NTSTATUS)0xC000025AL) +#define STATUS_PWD_TOO_RECENT ((NTSTATUS)0xC000025BL) +#define STATUS_PWD_HISTORY_CONFLICT ((NTSTATUS)0xC000025CL) +#define STATUS_PLUGPLAY_NO_DEVICE ((NTSTATUS)0xC000025EL) +#define STATUS_UNSUPPORTED_COMPRESSION ((NTSTATUS)0xC000025FL) +#define STATUS_INVALID_HW_PROFILE ((NTSTATUS)0xC0000260L) +#define STATUS_INVALID_PLUGPLAY_DEVICE_PATH ((NTSTATUS)0xC0000261L) +#define STATUS_DRIVER_ORDINAL_NOT_FOUND ((NTSTATUS)0xC0000262L) +#define STATUS_DRIVER_ENTRYPOINT_NOT_FOUND ((NTSTATUS)0xC0000263L) +#define STATUS_RESOURCE_NOT_OWNED ((NTSTATUS)0xC0000264L) +#define STATUS_TOO_MANY_LINKS ((NTSTATUS)0xC0000265L) +#define STATUS_QUOTA_LIST_INCONSISTENT ((NTSTATUS)0xC0000266L) +#define STATUS_FILE_IS_OFFLINE ((NTSTATUS)0xC0000267L) +#define STATUS_EVALUATION_EXPIRATION ((NTSTATUS)0xC0000268L) +#define STATUS_ILLEGAL_DLL_RELOCATION ((NTSTATUS)0xC0000269L) +#define STATUS_LICENSE_VIOLATION ((NTSTATUS)0xC000026AL) +#define STATUS_DLL_INIT_FAILED_LOGOFF ((NTSTATUS)0xC000026BL) +#define STATUS_DRIVER_UNABLE_TO_LOAD ((NTSTATUS)0xC000026CL) +#define STATUS_DFS_UNAVAILABLE ((NTSTATUS)0xC000026DL) +#define STATUS_VOLUME_DISMOUNTED ((NTSTATUS)0xC000026EL) +#define STATUS_WX86_INTERNAL_ERROR ((NTSTATUS)0xC000026FL) +#define STATUS_WX86_FLOAT_STACK_CHECK ((NTSTATUS)0xC0000270L) +#define STATUS_VALIDATE_CONTINUE ((NTSTATUS)0xC0000271L) +#define STATUS_NO_MATCH ((NTSTATUS)0xC0000272L) +#define STATUS_NO_MORE_MATCHES ((NTSTATUS)0xC0000273L) +#define STATUS_NOT_A_REPARSE_POINT ((NTSTATUS)0xC0000275L) +#define STATUS_IO_REPARSE_TAG_INVALID ((NTSTATUS)0xC0000276L) +#define STATUS_IO_REPARSE_TAG_MISMATCH ((NTSTATUS)0xC0000277L) +#define STATUS_IO_REPARSE_DATA_INVALID ((NTSTATUS)0xC0000278L) +#define STATUS_IO_REPARSE_TAG_NOT_HANDLED ((NTSTATUS)0xC0000279L) +#define STATUS_REPARSE_POINT_NOT_RESOLVED ((NTSTATUS)0xC0000280L) +#define STATUS_DIRECTORY_IS_A_REPARSE_POINT ((NTSTATUS)0xC0000281L) +#define STATUS_RANGE_LIST_CONFLICT ((NTSTATUS)0xC0000282L) +#define STATUS_SOURCE_ELEMENT_EMPTY ((NTSTATUS)0xC0000283L) +#define STATUS_DESTINATION_ELEMENT_FULL ((NTSTATUS)0xC0000284L) +#define STATUS_ILLEGAL_ELEMENT_ADDRESS ((NTSTATUS)0xC0000285L) +#define STATUS_MAGAZINE_NOT_PRESENT ((NTSTATUS)0xC0000286L) +#define STATUS_REINITIALIZATION_NEEDED ((NTSTATUS)0xC0000287L) +#define STATUS_DEVICE_REQUIRES_CLEANING ((NTSTATUS)0x80000288L) +#define STATUS_DEVICE_DOOR_OPEN ((NTSTATUS)0x80000289L) +#define STATUS_ENCRYPTION_FAILED ((NTSTATUS)0xC000028AL) +#define STATUS_DECRYPTION_FAILED ((NTSTATUS)0xC000028BL) +#define STATUS_RANGE_NOT_FOUND ((NTSTATUS)0xC000028CL) +#define STATUS_NO_RECOVERY_POLICY ((NTSTATUS)0xC000028DL) +#define STATUS_NO_EFS ((NTSTATUS)0xC000028EL) +#define STATUS_WRONG_EFS ((NTSTATUS)0xC000028FL) +#define STATUS_NO_USER_KEYS ((NTSTATUS)0xC0000290L) +#define STATUS_FILE_NOT_ENCRYPTED ((NTSTATUS)0xC0000291L) +#define STATUS_NOT_EXPORT_FORMAT ((NTSTATUS)0xC0000292L) +#define STATUS_FILE_ENCRYPTED ((NTSTATUS)0xC0000293L) +#define STATUS_WAKE_SYSTEM ((NTSTATUS)0x40000294L) +#define STATUS_WMI_GUID_NOT_FOUND ((NTSTATUS)0xC0000295L) +#define STATUS_WMI_INSTANCE_NOT_FOUND ((NTSTATUS)0xC0000296L) +#define STATUS_WMI_ITEMID_NOT_FOUND ((NTSTATUS)0xC0000297L) +#define STATUS_WMI_TRY_AGAIN ((NTSTATUS)0xC0000298L) +#define STATUS_SHARED_POLICY ((NTSTATUS)0xC0000299L) +#define STATUS_POLICY_OBJECT_NOT_FOUND ((NTSTATUS)0xC000029AL) +#define STATUS_POLICY_ONLY_IN_DS ((NTSTATUS)0xC000029BL) +#define STATUS_VOLUME_NOT_UPGRADED ((NTSTATUS)0xC000029CL) +#define STATUS_REMOTE_STORAGE_NOT_ACTIVE ((NTSTATUS)0xC000029DL) +#define STATUS_REMOTE_STORAGE_MEDIA_ERROR ((NTSTATUS)0xC000029EL) +#define STATUS_NO_TRACKING_SERVICE ((NTSTATUS)0xC000029FL) +#define STATUS_SERVER_SID_MISMATCH ((NTSTATUS)0xC00002A0L) +#define STATUS_DS_NO_ATTRIBUTE_OR_VALUE ((NTSTATUS)0xC00002A1L) +#define STATUS_DS_INVALID_ATTRIBUTE_SYNTAX ((NTSTATUS)0xC00002A2L) +#define STATUS_DS_ATTRIBUTE_TYPE_UNDEFINED ((NTSTATUS)0xC00002A3L) +#define STATUS_DS_ATTRIBUTE_OR_VALUE_EXISTS ((NTSTATUS)0xC00002A4L) +#define STATUS_DS_BUSY ((NTSTATUS)0xC00002A5L) +#define STATUS_DS_UNAVAILABLE ((NTSTATUS)0xC00002A6L) +#define STATUS_DS_NO_RIDS_ALLOCATED ((NTSTATUS)0xC00002A7L) +#define STATUS_DS_NO_MORE_RIDS ((NTSTATUS)0xC00002A8L) +#define STATUS_DS_INCORRECT_ROLE_OWNER ((NTSTATUS)0xC00002A9L) +#define STATUS_DS_RIDMGR_INIT_ERROR ((NTSTATUS)0xC00002AAL) +#define STATUS_DS_OBJ_CLASS_VIOLATION ((NTSTATUS)0xC00002ABL) +#define STATUS_DS_CANT_ON_NON_LEAF ((NTSTATUS)0xC00002ACL) +#define STATUS_DS_CANT_ON_RDN ((NTSTATUS)0xC00002ADL) +#define STATUS_DS_CANT_MOD_OBJ_CLASS ((NTSTATUS)0xC00002AEL) +#define STATUS_DS_CROSS_DOM_MOVE_FAILED ((NTSTATUS)0xC00002AFL) +#define STATUS_DS_GC_NOT_AVAILABLE ((NTSTATUS)0xC00002B0L) +#define STATUS_DIRECTORY_SERVICE_REQUIRED ((NTSTATUS)0xC00002B1L) +#define STATUS_REPARSE_ATTRIBUTE_CONFLICT ((NTSTATUS)0xC00002B2L) +#define STATUS_CANT_ENABLE_DENY_ONLY ((NTSTATUS)0xC00002B3L) +#define STATUS_FLOAT_MULTIPLE_FAULTS ((NTSTATUS)0xC00002B4L) +#define STATUS_FLOAT_MULTIPLE_TRAPS ((NTSTATUS)0xC00002B5L) +#define STATUS_DEVICE_REMOVED ((NTSTATUS)0xC00002B6L) +#define STATUS_JOURNAL_DELETE_IN_PROGRESS ((NTSTATUS)0xC00002B7L) +#define STATUS_JOURNAL_NOT_ACTIVE ((NTSTATUS)0xC00002B8L) +#define STATUS_NOINTERFACE ((NTSTATUS)0xC00002B9L) +#define STATUS_DS_ADMIN_LIMIT_EXCEEDED ((NTSTATUS)0xC00002C1L) +#define STATUS_DRIVER_FAILED_SLEEP ((NTSTATUS)0xC00002C2L) +#define STATUS_MUTUAL_AUTHENTICATION_FAILED ((NTSTATUS)0xC00002C3L) +#define STATUS_CORRUPT_SYSTEM_FILE ((NTSTATUS)0xC00002C4L) +#define STATUS_DATATYPE_MISALIGNMENT_ERROR ((NTSTATUS)0xC00002C5L) +#define STATUS_WMI_READ_ONLY ((NTSTATUS)0xC00002C6L) +#define STATUS_WMI_SET_FAILURE ((NTSTATUS)0xC00002C7L) +#define STATUS_COMMITMENT_MINIMUM ((NTSTATUS)0xC00002C8L) +#define STATUS_REG_NAT_CONSUMPTION ((NTSTATUS)0xC00002C9L) +#define STATUS_TRANSPORT_FULL ((NTSTATUS)0xC00002CAL) +#define STATUS_DS_SAM_INIT_FAILURE ((NTSTATUS)0xC00002CBL) +#define STATUS_ONLY_IF_CONNECTED ((NTSTATUS)0xC00002CCL) +#define STATUS_DS_SENSITIVE_GROUP_VIOLATION ((NTSTATUS)0xC00002CDL) +#define STATUS_PNP_RESTART_ENUMERATION ((NTSTATUS)0xC00002CEL) +#define STATUS_JOURNAL_ENTRY_DELETED ((NTSTATUS)0xC00002CFL) +#define STATUS_DS_CANT_MOD_PRIMARYGROUPID ((NTSTATUS)0xC00002D0L) +#define STATUS_SYSTEM_IMAGE_BAD_SIGNATURE ((NTSTATUS)0xC00002D1L) +#define STATUS_PNP_REBOOT_REQUIRED ((NTSTATUS)0xC00002D2L) +#define STATUS_POWER_STATE_INVALID ((NTSTATUS)0xC00002D3L) +#define STATUS_DS_INVALID_GROUP_TYPE ((NTSTATUS)0xC00002D4L) +#define STATUS_DS_NO_NEST_GLOBALGROUP_IN_MIXEDDOMAIN ((NTSTATUS)0xC00002D5L) +#define STATUS_DS_NO_NEST_LOCALGROUP_IN_MIXEDDOMAIN ((NTSTATUS)0xC00002D6L) +#define STATUS_DS_GLOBAL_CANT_HAVE_LOCAL_MEMBER ((NTSTATUS)0xC00002D7L) +#define STATUS_DS_GLOBAL_CANT_HAVE_UNIVERSAL_MEMBER ((NTSTATUS)0xC00002D8L) +#define STATUS_DS_UNIVERSAL_CANT_HAVE_LOCAL_MEMBER ((NTSTATUS)0xC00002D9L) +#define STATUS_DS_GLOBAL_CANT_HAVE_CROSSDOMAIN_MEMBER ((NTSTATUS)0xC00002DAL) +#define STATUS_DS_LOCAL_CANT_HAVE_CROSSDOMAIN_LOCAL_MEMBER ((NTSTATUS)0xC00002DBL) +#define STATUS_DS_HAVE_PRIMARY_MEMBERS ((NTSTATUS)0xC00002DCL) +#define STATUS_WMI_NOT_SUPPORTED ((NTSTATUS)0xC00002DDL) +#define STATUS_INSUFFICIENT_POWER ((NTSTATUS)0xC00002DEL) +#define STATUS_SAM_NEED_BOOTKEY_PASSWORD ((NTSTATUS)0xC00002DFL) +#define STATUS_SAM_NEED_BOOTKEY_FLOPPY ((NTSTATUS)0xC00002E0L) +#define STATUS_DS_CANT_START ((NTSTATUS)0xC00002E1L) +#define STATUS_DS_INIT_FAILURE ((NTSTATUS)0xC00002E2L) +#define STATUS_SAM_INIT_FAILURE ((NTSTATUS)0xC00002E3L) +#define STATUS_DS_GC_REQUIRED ((NTSTATUS)0xC00002E4L) +#define STATUS_DS_LOCAL_MEMBER_OF_LOCAL_ONLY ((NTSTATUS)0xC00002E5L) +#define STATUS_DS_NO_FPO_IN_UNIVERSAL_GROUPS ((NTSTATUS)0xC00002E6L) +#define STATUS_DS_MACHINE_ACCOUNT_QUOTA_EXCEEDED ((NTSTATUS)0xC00002E7L) +#define STATUS_MULTIPLE_FAULT_VIOLATION ((NTSTATUS)0xC00002E8L) +#define STATUS_CURRENT_DOMAIN_NOT_ALLOWED ((NTSTATUS)0xC00002E9L) +#define STATUS_CANNOT_MAKE ((NTSTATUS)0xC00002EAL) +#define STATUS_SYSTEM_SHUTDOWN ((NTSTATUS)0xC00002EBL) +#define STATUS_DS_INIT_FAILURE_CONSOLE ((NTSTATUS)0xC00002ECL) +#define STATUS_DS_SAM_INIT_FAILURE_CONSOLE ((NTSTATUS)0xC00002EDL) +#define STATUS_UNFINISHED_CONTEXT_DELETED ((NTSTATUS)0xC00002EEL) +#define STATUS_NO_TGT_REPLY ((NTSTATUS)0xC00002EFL) +#define STATUS_OBJECTID_NOT_FOUND ((NTSTATUS)0xC00002F0L) +#define STATUS_NO_IP_ADDRESSES ((NTSTATUS)0xC00002F1L) +#define STATUS_WRONG_CREDENTIAL_HANDLE ((NTSTATUS)0xC00002F2L) +#define STATUS_CRYPTO_SYSTEM_INVALID ((NTSTATUS)0xC00002F3L) +#define STATUS_MAX_REFERRALS_EXCEEDED ((NTSTATUS)0xC00002F4L) +#define STATUS_MUST_BE_KDC ((NTSTATUS)0xC00002F5L) +#define STATUS_STRONG_CRYPTO_NOT_SUPPORTED ((NTSTATUS)0xC00002F6L) +#define STATUS_TOO_MANY_PRINCIPALS ((NTSTATUS)0xC00002F7L) +#define STATUS_NO_PA_DATA ((NTSTATUS)0xC00002F8L) +#define STATUS_PKINIT_NAME_MISMATCH ((NTSTATUS)0xC00002F9L) +#define STATUS_SMARTCARD_LOGON_REQUIRED ((NTSTATUS)0xC00002FAL) +#define STATUS_KDC_INVALID_REQUEST ((NTSTATUS)0xC00002FBL) +#define STATUS_KDC_UNABLE_TO_REFER ((NTSTATUS)0xC00002FCL) +#define STATUS_KDC_UNKNOWN_ETYPE ((NTSTATUS)0xC00002FDL) +#define STATUS_SHUTDOWN_IN_PROGRESS ((NTSTATUS)0xC00002FEL) +#define STATUS_SERVER_SHUTDOWN_IN_PROGRESS ((NTSTATUS)0xC00002FFL) +#define STATUS_NOT_SUPPORTED_ON_SBS ((NTSTATUS)0xC0000300L) +#define STATUS_WMI_GUID_DISCONNECTED ((NTSTATUS)0xC0000301L) +#define STATUS_WMI_ALREADY_DISABLED ((NTSTATUS)0xC0000302L) +#define STATUS_WMI_ALREADY_ENABLED ((NTSTATUS)0xC0000303L) +#define STATUS_MFT_TOO_FRAGMENTED ((NTSTATUS)0xC0000304L) +#define STATUS_COPY_PROTECTION_FAILURE ((NTSTATUS)0xC0000305L) +#define STATUS_CSS_AUTHENTICATION_FAILURE ((NTSTATUS)0xC0000306L) +#define STATUS_CSS_KEY_NOT_PRESENT ((NTSTATUS)0xC0000307L) +#define STATUS_CSS_KEY_NOT_ESTABLISHED ((NTSTATUS)0xC0000308L) +#define STATUS_CSS_SCRAMBLED_SECTOR ((NTSTATUS)0xC0000309L) +#define STATUS_CSS_REGION_MISMATCH ((NTSTATUS)0xC000030AL) +#define STATUS_CSS_RESETS_EXHAUSTED ((NTSTATUS)0xC000030BL) +#define STATUS_PKINIT_FAILURE ((NTSTATUS)0xC0000320L) +#define STATUS_SMARTCARD_SUBSYSTEM_FAILURE ((NTSTATUS)0xC0000321L) +#define STATUS_NO_KERB_KEY ((NTSTATUS)0xC0000322L) +#define STATUS_HOST_DOWN ((NTSTATUS)0xC0000350L) +#define STATUS_UNSUPPORTED_PREAUTH ((NTSTATUS)0xC0000351L) +#define STATUS_EFS_ALG_BLOB_TOO_BIG ((NTSTATUS)0xC0000352L) +#define STATUS_PORT_NOT_SET ((NTSTATUS)0xC0000353L) +#define STATUS_DEBUGGER_INACTIVE ((NTSTATUS)0xC0000354L) +#define STATUS_DS_VERSION_CHECK_FAILURE ((NTSTATUS)0xC0000355L) +#define STATUS_AUDITING_DISABLED ((NTSTATUS)0xC0000356L) +#define STATUS_PRENT4_MACHINE_ACCOUNT ((NTSTATUS)0xC0000357L) +#define STATUS_DS_AG_CANT_HAVE_UNIVERSAL_MEMBER ((NTSTATUS)0xC0000358L) +#define STATUS_INVALID_IMAGE_WIN_32 ((NTSTATUS)0xC0000359L) +#define STATUS_INVALID_IMAGE_WIN_64 ((NTSTATUS)0xC000035AL) +#define STATUS_BAD_BINDINGS ((NTSTATUS)0xC000035BL) +#define STATUS_NETWORK_SESSION_EXPIRED ((NTSTATUS)0xC000035CL) +#define STATUS_APPHELP_BLOCK ((NTSTATUS)0xC000035DL) +#define STATUS_ALL_SIDS_FILTERED ((NTSTATUS)0xC000035EL) +#define STATUS_NOT_SAFE_MODE_DRIVER ((NTSTATUS)0xC000035FL) +#define STATUS_ACCESS_DISABLED_BY_POLICY_DEFAULT ((NTSTATUS)0xC0000361L) +#define STATUS_ACCESS_DISABLED_BY_POLICY_PATH ((NTSTATUS)0xC0000362L) +#define STATUS_ACCESS_DISABLED_BY_POLICY_PUBLISHER ((NTSTATUS)0xC0000363L) +#define STATUS_ACCESS_DISABLED_BY_POLICY_OTHER ((NTSTATUS)0xC0000364L) +#define STATUS_FAILED_DRIVER_ENTRY ((NTSTATUS)0xC0000365L) +#define STATUS_DEVICE_ENUMERATION_ERROR ((NTSTATUS)0xC0000366L) +#define STATUS_WAIT_FOR_OPLOCK ((NTSTATUS)0x00000367L) +#define STATUS_MOUNT_POINT_NOT_RESOLVED ((NTSTATUS)0xC0000368L) +#define STATUS_INVALID_DEVICE_OBJECT_PARAMETER ((NTSTATUS)0xC0000369L) +#define STATUS_MCA_OCCURED ((NTSTATUS)0xC000036AL) +#define STATUS_DRIVER_BLOCKED_CRITICAL ((NTSTATUS)0xC000036BL) +#define STATUS_DRIVER_BLOCKED ((NTSTATUS)0xC000036CL) +#define STATUS_DRIVER_DATABASE_ERROR ((NTSTATUS)0xC000036DL) +#define STATUS_SYSTEM_HIVE_TOO_LARGE ((NTSTATUS)0xC000036EL) +#define STATUS_INVALID_IMPORT_OF_NON_DLL ((NTSTATUS)0xC000036FL) +#define STATUS_DS_SHUTTING_DOWN ((NTSTATUS)0x40000370L) +#define STATUS_SMARTCARD_WRONG_PIN ((NTSTATUS)0xC0000380L) +#define STATUS_SMARTCARD_CARD_BLOCKED ((NTSTATUS)0xC0000381L) +#define STATUS_SMARTCARD_CARD_NOT_AUTHENTICATED ((NTSTATUS)0xC0000382L) +#define STATUS_SMARTCARD_NO_CARD ((NTSTATUS)0xC0000383L) +#define STATUS_SMARTCARD_NO_KEY_CONTAINER ((NTSTATUS)0xC0000384L) +#define STATUS_SMARTCARD_NO_CERTIFICATE ((NTSTATUS)0xC0000385L) +#define STATUS_SMARTCARD_NO_KEYSET ((NTSTATUS)0xC0000386L) +#define STATUS_SMARTCARD_IO_ERROR ((NTSTATUS)0xC0000387L) +#define STATUS_DOWNGRADE_DETECTED ((NTSTATUS)0xC0000388L) +#define STATUS_SMARTCARD_CERT_REVOKED ((NTSTATUS)0xC0000389L) +#define STATUS_ISSUING_CA_UNTRUSTED ((NTSTATUS)0xC000038AL) +#define STATUS_REVOCATION_OFFLINE_C ((NTSTATUS)0xC000038BL) +#define STATUS_PKINIT_CLIENT_FAILURE ((NTSTATUS)0xC000038CL) +#define STATUS_SMARTCARD_CERT_EXPIRED ((NTSTATUS)0xC000038DL) +#define STATUS_DRIVER_FAILED_PRIOR_UNLOAD ((NTSTATUS)0xC000038EL) +#define STATUS_ASSERTION_FAILURE ((NTSTATUS)0xC0000420L) +#define STATUS_CALLBACK_POP_STACK ((NTSTATUS)0xC0000423L) +#define STATUS_WOW_ASSERTION ((NTSTATUS)0xC0009898L) +#define RPC_NT_INVALID_STRING_BINDING ((NTSTATUS)0xC0020001L) +#define RPC_NT_WRONG_KIND_OF_BINDING ((NTSTATUS)0xC0020002L) +#define RPC_NT_INVALID_BINDING ((NTSTATUS)0xC0020003L) +#define RPC_NT_PROTSEQ_NOT_SUPPORTED ((NTSTATUS)0xC0020004L) +#define RPC_NT_INVALID_RPC_PROTSEQ ((NTSTATUS)0xC0020005L) +#define RPC_NT_INVALID_STRING_UUID ((NTSTATUS)0xC0020006L) +#define RPC_NT_INVALID_ENDPOINT_FORMAT ((NTSTATUS)0xC0020007L) +#define RPC_NT_INVALID_NET_ADDR ((NTSTATUS)0xC0020008L) +#define RPC_NT_NO_ENDPOINT_FOUND ((NTSTATUS)0xC0020009L) +#define RPC_NT_INVALID_TIMEOUT ((NTSTATUS)0xC002000AL) +#define RPC_NT_OBJECT_NOT_FOUND ((NTSTATUS)0xC002000BL) +#define RPC_NT_ALREADY_REGISTERED ((NTSTATUS)0xC002000CL) +#define RPC_NT_TYPE_ALREADY_REGISTERED ((NTSTATUS)0xC002000DL) +#define RPC_NT_ALREADY_LISTENING ((NTSTATUS)0xC002000EL) +#define RPC_NT_NO_PROTSEQS_REGISTERED ((NTSTATUS)0xC002000FL) +#define RPC_NT_NOT_LISTENING ((NTSTATUS)0xC0020010L) +#define RPC_NT_UNKNOWN_MGR_TYPE ((NTSTATUS)0xC0020011L) +#define RPC_NT_UNKNOWN_IF ((NTSTATUS)0xC0020012L) +#define RPC_NT_NO_BINDINGS ((NTSTATUS)0xC0020013L) +#define RPC_NT_NO_PROTSEQS ((NTSTATUS)0xC0020014L) +#define RPC_NT_CANT_CREATE_ENDPOINT ((NTSTATUS)0xC0020015L) +#define RPC_NT_OUT_OF_RESOURCES ((NTSTATUS)0xC0020016L) +#define RPC_NT_SERVER_UNAVAILABLE ((NTSTATUS)0xC0020017L) +#define RPC_NT_SERVER_TOO_BUSY ((NTSTATUS)0xC0020018L) +#define RPC_NT_INVALID_NETWORK_OPTIONS ((NTSTATUS)0xC0020019L) +#define RPC_NT_NO_CALL_ACTIVE ((NTSTATUS)0xC002001AL) +#define RPC_NT_CALL_FAILED ((NTSTATUS)0xC002001BL) +#define RPC_NT_CALL_FAILED_DNE ((NTSTATUS)0xC002001CL) +#define RPC_NT_PROTOCOL_ERROR ((NTSTATUS)0xC002001DL) +#define RPC_NT_UNSUPPORTED_TRANS_SYN ((NTSTATUS)0xC002001FL) +#define RPC_NT_UNSUPPORTED_TYPE ((NTSTATUS)0xC0020021L) +#define RPC_NT_INVALID_TAG ((NTSTATUS)0xC0020022L) +#define RPC_NT_INVALID_BOUND ((NTSTATUS)0xC0020023L) +#define RPC_NT_NO_ENTRY_NAME ((NTSTATUS)0xC0020024L) +#define RPC_NT_INVALID_NAME_SYNTAX ((NTSTATUS)0xC0020025L) +#define RPC_NT_UNSUPPORTED_NAME_SYNTAX ((NTSTATUS)0xC0020026L) +#define RPC_NT_UUID_NO_ADDRESS ((NTSTATUS)0xC0020028L) +#define RPC_NT_DUPLICATE_ENDPOINT ((NTSTATUS)0xC0020029L) +#define RPC_NT_UNKNOWN_AUTHN_TYPE ((NTSTATUS)0xC002002AL) +#define RPC_NT_MAX_CALLS_TOO_SMALL ((NTSTATUS)0xC002002BL) +#define RPC_NT_STRING_TOO_LONG ((NTSTATUS)0xC002002CL) +#define RPC_NT_PROTSEQ_NOT_FOUND ((NTSTATUS)0xC002002DL) +#define RPC_NT_PROCNUM_OUT_OF_RANGE ((NTSTATUS)0xC002002EL) +#define RPC_NT_BINDING_HAS_NO_AUTH ((NTSTATUS)0xC002002FL) +#define RPC_NT_UNKNOWN_AUTHN_SERVICE ((NTSTATUS)0xC0020030L) +#define RPC_NT_UNKNOWN_AUTHN_LEVEL ((NTSTATUS)0xC0020031L) +#define RPC_NT_INVALID_AUTH_IDENTITY ((NTSTATUS)0xC0020032L) +#define RPC_NT_UNKNOWN_AUTHZ_SERVICE ((NTSTATUS)0xC0020033L) +#define EPT_NT_INVALID_ENTRY ((NTSTATUS)0xC0020034L) +#define EPT_NT_CANT_PERFORM_OP ((NTSTATUS)0xC0020035L) +#define EPT_NT_NOT_REGISTERED ((NTSTATUS)0xC0020036L) +#define RPC_NT_NOTHING_TO_EXPORT ((NTSTATUS)0xC0020037L) +#define RPC_NT_INCOMPLETE_NAME ((NTSTATUS)0xC0020038L) +#define RPC_NT_INVALID_VERS_OPTION ((NTSTATUS)0xC0020039L) +#define RPC_NT_NO_MORE_MEMBERS ((NTSTATUS)0xC002003AL) +#define RPC_NT_NOT_ALL_OBJS_UNEXPORTED ((NTSTATUS)0xC002003BL) +#define RPC_NT_INTERFACE_NOT_FOUND ((NTSTATUS)0xC002003CL) +#define RPC_NT_ENTRY_ALREADY_EXISTS ((NTSTATUS)0xC002003DL) +#define RPC_NT_ENTRY_NOT_FOUND ((NTSTATUS)0xC002003EL) +#define RPC_NT_NAME_SERVICE_UNAVAILABLE ((NTSTATUS)0xC002003FL) +#define RPC_NT_INVALID_NAF_ID ((NTSTATUS)0xC0020040L) +#define RPC_NT_CANNOT_SUPPORT ((NTSTATUS)0xC0020041L) +#define RPC_NT_NO_CONTEXT_AVAILABLE ((NTSTATUS)0xC0020042L) +#define RPC_NT_INTERNAL_ERROR ((NTSTATUS)0xC0020043L) +#define RPC_NT_ZERO_DIVIDE ((NTSTATUS)0xC0020044L) +#define RPC_NT_ADDRESS_ERROR ((NTSTATUS)0xC0020045L) +#define RPC_NT_FP_DIV_ZERO ((NTSTATUS)0xC0020046L) +#define RPC_NT_FP_UNDERFLOW ((NTSTATUS)0xC0020047L) +#define RPC_NT_FP_OVERFLOW ((NTSTATUS)0xC0020048L) +#define RPC_NT_NO_MORE_ENTRIES ((NTSTATUS)0xC0030001L) +#define RPC_NT_SS_CHAR_TRANS_OPEN_FAIL ((NTSTATUS)0xC0030002L) +#define RPC_NT_SS_CHAR_TRANS_SHORT_FILE ((NTSTATUS)0xC0030003L) +#define RPC_NT_SS_IN_NULL_CONTEXT ((NTSTATUS)0xC0030004L) +#define RPC_NT_SS_CONTEXT_MISMATCH ((NTSTATUS)0xC0030005L) +#define RPC_NT_SS_CONTEXT_DAMAGED ((NTSTATUS)0xC0030006L) +#define RPC_NT_SS_HANDLES_MISMATCH ((NTSTATUS)0xC0030007L) +#define RPC_NT_SS_CANNOT_GET_CALL_HANDLE ((NTSTATUS)0xC0030008L) +#define RPC_NT_NULL_REF_POINTER ((NTSTATUS)0xC0030009L) +#define RPC_NT_ENUM_VALUE_OUT_OF_RANGE ((NTSTATUS)0xC003000AL) +#define RPC_NT_BYTE_COUNT_TOO_SMALL ((NTSTATUS)0xC003000BL) +#define RPC_NT_BAD_STUB_DATA ((NTSTATUS)0xC003000CL) +#define RPC_NT_CALL_IN_PROGRESS ((NTSTATUS)0xC0020049L) +#define RPC_NT_NO_MORE_BINDINGS ((NTSTATUS)0xC002004AL) +#define RPC_NT_GROUP_MEMBER_NOT_FOUND ((NTSTATUS)0xC002004BL) +#define EPT_NT_CANT_CREATE ((NTSTATUS)0xC002004CL) +#define RPC_NT_INVALID_OBJECT ((NTSTATUS)0xC002004DL) +#define RPC_NT_NO_INTERFACES ((NTSTATUS)0xC002004FL) +#define RPC_NT_CALL_CANCELLED ((NTSTATUS)0xC0020050L) +#define RPC_NT_BINDING_INCOMPLETE ((NTSTATUS)0xC0020051L) +#define RPC_NT_COMM_FAILURE ((NTSTATUS)0xC0020052L) +#define RPC_NT_UNSUPPORTED_AUTHN_LEVEL ((NTSTATUS)0xC0020053L) +#define RPC_NT_NO_PRINC_NAME ((NTSTATUS)0xC0020054L) +#define RPC_NT_NOT_RPC_ERROR ((NTSTATUS)0xC0020055L) +#define RPC_NT_UUID_LOCAL_ONLY ((NTSTATUS)0x40020056L) +#define RPC_NT_SEC_PKG_ERROR ((NTSTATUS)0xC0020057L) +#define RPC_NT_NOT_CANCELLED ((NTSTATUS)0xC0020058L) +#define RPC_NT_INVALID_ES_ACTION ((NTSTATUS)0xC0030059L) +#define RPC_NT_WRONG_ES_VERSION ((NTSTATUS)0xC003005AL) +#define RPC_NT_WRONG_STUB_VERSION ((NTSTATUS)0xC003005BL) +#define RPC_NT_INVALID_PIPE_OBJECT ((NTSTATUS)0xC003005CL) +#define RPC_NT_INVALID_PIPE_OPERATION ((NTSTATUS)0xC003005DL) +#define RPC_NT_WRONG_PIPE_VERSION ((NTSTATUS)0xC003005EL) +#define RPC_NT_PIPE_CLOSED ((NTSTATUS)0xC003005FL) +#define RPC_NT_PIPE_DISCIPLINE_ERROR ((NTSTATUS)0xC0030060L) +#define RPC_NT_PIPE_EMPTY ((NTSTATUS)0xC0030061L) +#define RPC_NT_INVALID_ASYNC_HANDLE ((NTSTATUS)0xC0020062L) +#define RPC_NT_INVALID_ASYNC_CALL ((NTSTATUS)0xC0020063L) +#define RPC_NT_SEND_INCOMPLETE ((NTSTATUS)0x400200AFL) +#define STATUS_ACPI_INVALID_OPCODE ((NTSTATUS)0xC0140001L) +#define STATUS_ACPI_STACK_OVERFLOW ((NTSTATUS)0xC0140002L) +#define STATUS_ACPI_ASSERT_FAILED ((NTSTATUS)0xC0140003L) +#define STATUS_ACPI_INVALID_INDEX ((NTSTATUS)0xC0140004L) +#define STATUS_ACPI_INVALID_ARGUMENT ((NTSTATUS)0xC0140005L) +#define STATUS_ACPI_FATAL ((NTSTATUS)0xC0140006L) +#define STATUS_ACPI_INVALID_SUPERNAME ((NTSTATUS)0xC0140007L) +#define STATUS_ACPI_INVALID_ARGTYPE ((NTSTATUS)0xC0140008L) +#define STATUS_ACPI_INVALID_OBJTYPE ((NTSTATUS)0xC0140009L) +#define STATUS_ACPI_INVALID_TARGETTYPE ((NTSTATUS)0xC014000AL) +#define STATUS_ACPI_INCORRECT_ARGUMENT_COUNT ((NTSTATUS)0xC014000BL) +#define STATUS_ACPI_ADDRESS_NOT_MAPPED ((NTSTATUS)0xC014000CL) +#define STATUS_ACPI_INVALID_EVENTTYPE ((NTSTATUS)0xC014000DL) +#define STATUS_ACPI_HANDLER_COLLISION ((NTSTATUS)0xC014000EL) +#define STATUS_ACPI_INVALID_DATA ((NTSTATUS)0xC014000FL) +#define STATUS_ACPI_INVALID_REGION ((NTSTATUS)0xC0140010L) +#define STATUS_ACPI_INVALID_ACCESS_SIZE ((NTSTATUS)0xC0140011L) +#define STATUS_ACPI_ACQUIRE_GLOBAL_LOCK ((NTSTATUS)0xC0140012L) +#define STATUS_ACPI_ALREADY_INITIALIZED ((NTSTATUS)0xC0140013L) +#define STATUS_ACPI_NOT_INITIALIZED ((NTSTATUS)0xC0140014L) +#define STATUS_ACPI_INVALID_MUTEX_LEVEL ((NTSTATUS)0xC0140015L) +#define STATUS_ACPI_MUTEX_NOT_OWNED ((NTSTATUS)0xC0140016L) +#define STATUS_ACPI_MUTEX_NOT_OWNER ((NTSTATUS)0xC0140017L) +#define STATUS_ACPI_RS_ACCESS ((NTSTATUS)0xC0140018L) +#define STATUS_ACPI_INVALID_TABLE ((NTSTATUS)0xC0140019L) +#define STATUS_ACPI_REG_HANDLER_FAILED ((NTSTATUS)0xC0140020L) +#define STATUS_ACPI_POWER_REQUEST_FAILED ((NTSTATUS)0xC0140021L) +#define STATUS_CTX_WINSTATION_NAME_INVALID ((NTSTATUS)0xC00A0001L) +#define STATUS_CTX_INVALID_PD ((NTSTATUS)0xC00A0002L) +#define STATUS_CTX_PD_NOT_FOUND ((NTSTATUS)0xC00A0003L) +#define STATUS_CTX_CDM_CONNECT ((NTSTATUS)0x400A0004L) +#define STATUS_CTX_CDM_DISCONNECT ((NTSTATUS)0x400A0005L) +#define STATUS_CTX_CLOSE_PENDING ((NTSTATUS)0xC00A0006L) +#define STATUS_CTX_NO_OUTBUF ((NTSTATUS)0xC00A0007L) +#define STATUS_CTX_MODEM_INF_NOT_FOUND ((NTSTATUS)0xC00A0008L) +#define STATUS_CTX_INVALID_MODEMNAME ((NTSTATUS)0xC00A0009L) +#define STATUS_CTX_RESPONSE_ERROR ((NTSTATUS)0xC00A000AL) +#define STATUS_CTX_MODEM_RESPONSE_TIMEOUT ((NTSTATUS)0xC00A000BL) +#define STATUS_CTX_MODEM_RESPONSE_NO_CARRIER ((NTSTATUS)0xC00A000CL) +#define STATUS_CTX_MODEM_RESPONSE_NO_DIALTONE ((NTSTATUS)0xC00A000DL) +#define STATUS_CTX_MODEM_RESPONSE_BUSY ((NTSTATUS)0xC00A000EL) +#define STATUS_CTX_MODEM_RESPONSE_VOICE ((NTSTATUS)0xC00A000FL) +#define STATUS_CTX_TD_ERROR ((NTSTATUS)0xC00A0010L) +#define STATUS_CTX_LICENSE_CLIENT_INVALID ((NTSTATUS)0xC00A0012L) +#define STATUS_CTX_LICENSE_NOT_AVAILABLE ((NTSTATUS)0xC00A0013L) +#define STATUS_CTX_LICENSE_EXPIRED ((NTSTATUS)0xC00A0014L) +#define STATUS_CTX_WINSTATION_NOT_FOUND ((NTSTATUS)0xC00A0015L) +#define STATUS_CTX_WINSTATION_NAME_COLLISION ((NTSTATUS)0xC00A0016L) +#define STATUS_CTX_WINSTATION_BUSY ((NTSTATUS)0xC00A0017L) +#define STATUS_CTX_BAD_VIDEO_MODE ((NTSTATUS)0xC00A0018L) +#define STATUS_CTX_GRAPHICS_INVALID ((NTSTATUS)0xC00A0022L) +#define STATUS_CTX_NOT_CONSOLE ((NTSTATUS)0xC00A0024L) +#define STATUS_CTX_CLIENT_QUERY_TIMEOUT ((NTSTATUS)0xC00A0026L) +#define STATUS_CTX_CONSOLE_DISCONNECT ((NTSTATUS)0xC00A0027L) +#define STATUS_CTX_CONSOLE_CONNECT ((NTSTATUS)0xC00A0028L) +#define STATUS_CTX_SHADOW_DENIED ((NTSTATUS)0xC00A002AL) +#define STATUS_CTX_WINSTATION_ACCESS_DENIED ((NTSTATUS)0xC00A002BL) +#define STATUS_CTX_INVALID_WD ((NTSTATUS)0xC00A002EL) +#define STATUS_CTX_WD_NOT_FOUND ((NTSTATUS)0xC00A002FL) +#define STATUS_CTX_SHADOW_INVALID ((NTSTATUS)0xC00A0030L) +#define STATUS_CTX_SHADOW_DISABLED ((NTSTATUS)0xC00A0031L) +#define STATUS_RDP_PROTOCOL_ERROR ((NTSTATUS)0xC00A0032L) +#define STATUS_CTX_CLIENT_LICENSE_NOT_SET ((NTSTATUS)0xC00A0033L) +#define STATUS_CTX_CLIENT_LICENSE_IN_USE ((NTSTATUS)0xC00A0034L) +#define STATUS_CTX_SHADOW_ENDED_BY_MODE_CHANGE ((NTSTATUS)0xC00A0035L) +#define STATUS_CTX_SHADOW_NOT_RUNNING ((NTSTATUS)0xC00A0036L) +#define STATUS_PNP_BAD_MPS_TABLE ((NTSTATUS)0xC0040035L) +#define STATUS_PNP_TRANSLATION_FAILED ((NTSTATUS)0xC0040036L) +#define STATUS_PNP_IRQ_TRANSLATION_FAILED ((NTSTATUS)0xC0040037L) +#define STATUS_SXS_SECTION_NOT_FOUND ((NTSTATUS)0xC0150001L) +#define STATUS_SXS_CANT_GEN_ACTCTX ((NTSTATUS)0xC0150002L) +#define STATUS_SXS_INVALID_ACTCTXDATA_FORMAT ((NTSTATUS)0xC0150003L) +#define STATUS_SXS_ASSEMBLY_NOT_FOUND ((NTSTATUS)0xC0150004L) +#define STATUS_SXS_MANIFEST_FORMAT_ERROR ((NTSTATUS)0xC0150005L) +#define STATUS_SXS_MANIFEST_PARSE_ERROR ((NTSTATUS)0xC0150006L) +#define STATUS_SXS_ACTIVATION_CONTEXT_DISABLED ((NTSTATUS)0xC0150007L) +#define STATUS_SXS_KEY_NOT_FOUND ((NTSTATUS)0xC0150008L) +#define STATUS_SXS_VERSION_CONFLICT ((NTSTATUS)0xC0150009L) +#define STATUS_SXS_WRONG_SECTION_TYPE ((NTSTATUS)0xC015000AL) +#define STATUS_SXS_THREAD_QUERIES_DISABLED ((NTSTATUS)0xC015000BL) +#define STATUS_SXS_ASSEMBLY_MISSING ((NTSTATUS)0xC015000CL) +#define STATUS_SXS_RELEASE_ACTIVATION_CONTEXT ((NTSTATUS)0x4015000DL) +#define STATUS_SXS_PROCESS_DEFAULT_ALREADY_SET ((NTSTATUS)0xC015000EL) +#define STATUS_SXS_EARLY_DEACTIVATION ((NTSTATUS)0xC015000FL) +#define STATUS_SXS_INVALID_DEACTIVATION ((NTSTATUS)0xC0150010L) +#define STATUS_SXS_MULTIPLE_DEACTIVATION ((NTSTATUS)0xC0150011L) +#define STATUS_SXS_SYSTEM_DEFAULT_ACTIVATION_CONTEXT_EMPTY ((NTSTATUS)0xC0150012L) +#define STATUS_SXS_PROCESS_TERMINATION_REQUESTED ((NTSTATUS)0xC0150013L) +#define STATUS_CLUSTER_INVALID_NODE ((NTSTATUS)0xC0130001L) +#define STATUS_CLUSTER_NODE_EXISTS ((NTSTATUS)0xC0130002L) +#define STATUS_CLUSTER_JOIN_IN_PROGRESS ((NTSTATUS)0xC0130003L) +#define STATUS_CLUSTER_NODE_NOT_FOUND ((NTSTATUS)0xC0130004L) +#define STATUS_CLUSTER_LOCAL_NODE_NOT_FOUND ((NTSTATUS)0xC0130005L) +#define STATUS_CLUSTER_NETWORK_EXISTS ((NTSTATUS)0xC0130006L) +#define STATUS_CLUSTER_NETWORK_NOT_FOUND ((NTSTATUS)0xC0130007L) +#define STATUS_CLUSTER_NETINTERFACE_EXISTS ((NTSTATUS)0xC0130008L) +#define STATUS_CLUSTER_NETINTERFACE_NOT_FOUND ((NTSTATUS)0xC0130009L) +#define STATUS_CLUSTER_INVALID_REQUEST ((NTSTATUS)0xC013000AL) +#define STATUS_CLUSTER_INVALID_NETWORK_PROVIDER ((NTSTATUS)0xC013000BL) +#define STATUS_CLUSTER_NODE_DOWN ((NTSTATUS)0xC013000CL) +#define STATUS_CLUSTER_NODE_UNREACHABLE ((NTSTATUS)0xC013000DL) +#define STATUS_CLUSTER_NODE_NOT_MEMBER ((NTSTATUS)0xC013000EL) +#define STATUS_CLUSTER_JOIN_NOT_IN_PROGRESS ((NTSTATUS)0xC013000FL) +#define STATUS_CLUSTER_INVALID_NETWORK ((NTSTATUS)0xC0130010L) +#define STATUS_CLUSTER_NO_NET_ADAPTERS ((NTSTATUS)0xC0130011L) +#define STATUS_CLUSTER_NODE_UP ((NTSTATUS)0xC0130012L) +#define STATUS_CLUSTER_NODE_PAUSED ((NTSTATUS)0xC0130013L) +#define STATUS_CLUSTER_NODE_NOT_PAUSED ((NTSTATUS)0xC0130014L) +#define STATUS_CLUSTER_NO_SECURITY_CONTEXT ((NTSTATUS)0xC0130015L) +#define STATUS_CLUSTER_NETWORK_NOT_INTERNAL ((NTSTATUS)0xC0130016L) +#define STATUS_CLUSTER_POISONED ((NTSTATUS)0xC0130017L) -#define STATUS_DEVICE_REQUIRES_CLEANING ((NTSTATUS)0x80000288) -#define STATUS_DEVICE_DOOR_OPEN ((NTSTATUS)0x80000289) - -#define STATUS_CLUSTER_NODE_ALREADY_UP ((NTSTATUS)0x80130001) -#define STATUS_CLUSTER_NODE_ALREADY_DOWN ((NTSTATUS)0x80130002) -#define STATUS_CLUSTER_NETWORK_ALREADY_ONLINE ((NTSTATUS)0x80130003) -#define STATUS_CLUSTER_NETWORK_ALREADY_OFFLINE ((NTSTATUS)0x80130004) -#define STATUS_CLUSTER_NODE_ALREADY_MEMBER ((NTSTATUS)0x80130005) - -#define STATUS_WAIT_0 ((NTSTATUS)0x00000000) -#define STATUS_UNSUCCESSFUL ((NTSTATUS)0xC0000001) -#define STATUS_NOT_IMPLEMENTED ((NTSTATUS)0xC0000002) -#define STATUS_INVALID_INFO_CLASS ((NTSTATUS)0xC0000003) -#define STATUS_INFO_LENGTH_MISMATCH ((NTSTATUS)0xC0000004) -#define STATUS_ACCESS_VIOLATION ((NTSTATUS)0xC0000005) -#define STATUS_IN_PAGE_ERROR ((NTSTATUS)0xC0000006) -#define STATUS_PAGEFILE_QUOTA ((NTSTATUS)0xC0000007) -#define STATUS_INVALID_HANDLE ((NTSTATUS)0xC0000008) -#define STATUS_BAD_INITIAL_STACK ((NTSTATUS)0xC0000009) -#define STATUS_BAD_INITIAL_PC ((NTSTATUS)0xC000000A) -#define STATUS_INVALID_CID ((NTSTATUS)0xC000000B) -#define STATUS_TIMER_NOT_CANCELED ((NTSTATUS)0xC000000C) -#define STATUS_INVALID_PARAMETER ((NTSTATUS)0xC000000D) -#define STATUS_NO_SUCH_DEVICE ((NTSTATUS)0xC000000E) -#define STATUS_NO_SUCH_FILE ((NTSTATUS)0xC000000F) -#define STATUS_INVALID_DEVICE_REQUEST ((NTSTATUS)0xC0000010) -#define STATUS_END_OF_FILE ((NTSTATUS)0xC0000011) -#define STATUS_WRONG_VOLUME ((NTSTATUS)0xC0000012) -#define STATUS_NO_MEDIA_IN_DEVICE ((NTSTATUS)0xC0000013) -#define STATUS_UNRECOGNIZED_MEDIA ((NTSTATUS)0xC0000014) -#define STATUS_NONEXISTENT_SECTOR ((NTSTATUS)0xC0000015) -#define STATUS_MORE_PROCESSING_REQUIRED ((NTSTATUS)0xC0000016) -#define STATUS_NO_MEMORY ((NTSTATUS)0xC0000017) -#define STATUS_CONFLICTING_ADDRESSES ((NTSTATUS)0xC0000018) -#define STATUS_NOT_MAPPED_VIEW ((NTSTATUS)0xC0000019) -#define STATUS_UNABLE_TO_FREE_VM ((NTSTATUS)0xC000001A) -#define STATUS_UNABLE_TO_DELETE_SECTION ((NTSTATUS)0xC000001B) -#define STATUS_INVALID_SYSTEM_SERVICE ((NTSTATUS)0xC000001C) -#define STATUS_ILLEGAL_INSTRUCTION ((NTSTATUS)0xC000001D) -#define STATUS_INVALID_LOCK_SEQUENCE ((NTSTATUS)0xC000001E) -#define STATUS_INVALID_VIEW_SIZE ((NTSTATUS)0xC000001F) -#define STATUS_INVALID_FILE_FOR_SECTION ((NTSTATUS)0xC0000020) -#define STATUS_ALREADY_COMMITTED ((NTSTATUS)0xC0000021) -#define STATUS_ACCESS_DENIED ((NTSTATUS)0xC0000022) -#define STATUS_BUFFER_TOO_SMALL ((NTSTATUS)0xC0000023) -#define STATUS_OBJECT_TYPE_MISMATCH ((NTSTATUS)0xC0000024) -#define STATUS_NONCONTINUABLE_EXCEPTION ((NTSTATUS)0xC0000025) -#define STATUS_INVALID_DISPOSITION ((NTSTATUS)0xC0000026) -#define STATUS_UNWIND ((NTSTATUS)0xC0000027) -#define STATUS_BAD_STACK ((NTSTATUS)0xC0000028) -#define STATUS_INVALID_UNWIND_TARGET ((NTSTATUS)0xC0000029) -#define STATUS_NOT_LOCKED ((NTSTATUS)0xC000002A) -#define STATUS_PARITY_ERROR ((NTSTATUS)0xC000002B) -#define STATUS_UNABLE_TO_DECOMMIT_VM ((NTSTATUS)0xC000002C) -#define STATUS_NOT_COMMITTED ((NTSTATUS)0xC000002D) -#define STATUS_INVALID_PORT_ATTRIBUTES ((NTSTATUS)0xC000002E) -#define STATUS_PORT_MESSAGE_TOO_LONG ((NTSTATUS)0xC000002F) -#define STATUS_INVALID_PARAMETER_MIX ((NTSTATUS)0xC0000030) -#define STATUS_INVALID_QUOTA_LOWER ((NTSTATUS)0xC0000031) -#define STATUS_DISK_CORRUPT_ERROR ((NTSTATUS)0xC0000032) -#define STATUS_OBJECT_NAME_INVALID ((NTSTATUS)0xC0000033) -#define STATUS_OBJECT_NAME_NOT_FOUND ((NTSTATUS)0xC0000034) -#define STATUS_OBJECT_NAME_COLLISION ((NTSTATUS)0xC0000035) -#define STATUS_PORT_DISCONNECTED ((NTSTATUS)0xC0000037) -#define STATUS_DEVICE_ALREADY_ATTACHED ((NTSTATUS)0xC0000038) -#define STATUS_OBJECT_PATH_INVALID ((NTSTATUS)0xC0000039) -#define STATUS_OBJECT_PATH_NOT_FOUND ((NTSTATUS)0xC000003A) -#define STATUS_OBJECT_PATH_SYNTAX_BAD ((NTSTATUS)0xC000003B) -#define STATUS_DATA_OVERRUN ((NTSTATUS)0xC000003C) -#define STATUS_DATA_LATE_ERROR ((NTSTATUS)0xC000003D) -#define STATUS_DATA_ERROR ((NTSTATUS)0xC000003E) -#define STATUS_CRC_ERROR ((NTSTATUS)0xC000003F) -#define STATUS_SECTION_TOO_BIG ((NTSTATUS)0xC0000040) -#define STATUS_PORT_CONNECTION_REFUSED ((NTSTATUS)0xC0000041) -#define STATUS_INVALID_PORT_HANDLE ((NTSTATUS)0xC0000042) -#define STATUS_SHARING_VIOLATION ((NTSTATUS)0xC0000043) -#define STATUS_QUOTA_EXCEEDED ((NTSTATUS)0xC0000044) -#define STATUS_INVALID_PAGE_PROTECTION ((NTSTATUS)0xC0000045) -#define STATUS_MUTANT_NOT_OWNED ((NTSTATUS)0xC0000046) -#define STATUS_SEMAPHORE_LIMIT_EXCEEDED ((NTSTATUS)0xC0000047) -#define STATUS_PORT_ALREADY_SET ((NTSTATUS)0xC0000048) -#define STATUS_SECTION_NOT_IMAGE ((NTSTATUS)0xC0000049) -#define STATUS_SUSPEND_COUNT_EXCEEDED ((NTSTATUS)0xC000004A) -#define STATUS_THREAD_IS_TERMINATING ((NTSTATUS)0xC000004B) -#define STATUS_BAD_WORKING_SET_LIMIT ((NTSTATUS)0xC000004C) -#define STATUS_INCOMPATIBLE_FILE_MAP ((NTSTATUS)0xC000004D) -#define STATUS_SECTION_PROTECTION ((NTSTATUS)0xC000004E) -#define STATUS_EAS_NOT_SUPPORTED ((NTSTATUS)0xC000004F) -#define STATUS_EA_TOO_LARGE ((NTSTATUS)0xC0000050) -#define STATUS_NONEXISTENT_EA_ENTRY ((NTSTATUS)0xC0000051) -#define STATUS_NO_EAS_ON_FILE ((NTSTATUS)0xC0000052) -#define STATUS_EA_CORRUPT_ERROR ((NTSTATUS)0xC0000053) -#define STATUS_FILE_LOCK_CONFLICT ((NTSTATUS)0xC0000054) -#define STATUS_LOCK_NOT_GRANTED ((NTSTATUS)0xC0000055) -#define STATUS_DELETE_PENDING ((NTSTATUS)0xC0000056) -#define STATUS_CTL_FILE_NOT_SUPPORTED ((NTSTATUS)0xC0000057) -#define STATUS_UNKNOWN_REVISION ((NTSTATUS)0xC0000058) -#define STATUS_REVISION_MISMATCH ((NTSTATUS)0xC0000059) -#define STATUS_INVALID_OWNER ((NTSTATUS)0xC000005A) -#define STATUS_INVALID_PRIMARY_GROUP ((NTSTATUS)0xC000005B) -#define STATUS_NO_IMPERSONATION_TOKEN ((NTSTATUS)0xC000005C) -#define STATUS_CANT_DISABLE_MANDATORY ((NTSTATUS)0xC000005D) -#define STATUS_NO_LOGON_SERVERS ((NTSTATUS)0xC000005E) -#define STATUS_NO_SUCH_LOGON_SESSION ((NTSTATUS)0xC000005F) -#define STATUS_NO_SUCH_PRIVILEGE ((NTSTATUS)0xC0000060) -#define STATUS_PRIVILEGE_NOT_HELD ((NTSTATUS)0xC0000061) -#define STATUS_INVALID_ACCOUNT_NAME ((NTSTATUS)0xC0000062) -#define STATUS_USER_EXISTS ((NTSTATUS)0xC0000063) -#define STATUS_NO_SUCH_USER ((NTSTATUS)0xC0000064) -#define STATUS_GROUP_EXISTS ((NTSTATUS)0xC0000065) -#define STATUS_NO_SUCH_GROUP ((NTSTATUS)0xC0000066) -#define STATUS_MEMBER_IN_GROUP ((NTSTATUS)0xC0000067) -#define STATUS_MEMBER_NOT_IN_GROUP ((NTSTATUS)0xC0000068) -#define STATUS_LAST_ADMIN ((NTSTATUS)0xC0000069) -#define STATUS_WRONG_PASSWORD ((NTSTATUS)0xC000006A) -#define STATUS_ILL_FORMED_PASSWORD ((NTSTATUS)0xC000006B) -#define STATUS_PASSWORD_RESTRICTION ((NTSTATUS)0xC000006C) -#define STATUS_LOGON_FAILURE ((NTSTATUS)0xC000006D) -#define STATUS_ACCOUNT_RESTRICTION ((NTSTATUS)0xC000006E) -#define STATUS_INVALID_LOGON_HOURS ((NTSTATUS)0xC000006F) -#define STATUS_INVALID_WORKSTATION ((NTSTATUS)0xC0000070) -#define STATUS_PASSWORD_EXPIRED ((NTSTATUS)0xC0000071) -#define STATUS_ACCOUNT_DISABLED ((NTSTATUS)0xC0000072) -#define STATUS_NONE_MAPPED ((NTSTATUS)0xC0000073) -#define STATUS_TOO_MANY_LUIDS_REQUESTED ((NTSTATUS)0xC0000074) -#define STATUS_LUIDS_EXHAUSTED ((NTSTATUS)0xC0000075) -#define STATUS_INVALID_SUB_AUTHORITY ((NTSTATUS)0xC0000076) -#define STATUS_INVALID_ACL ((NTSTATUS)0xC0000077) -#define STATUS_INVALID_SID ((NTSTATUS)0xC0000078) -#define STATUS_INVALID_SECURITY_DESCR ((NTSTATUS)0xC0000079) -#define STATUS_PROCEDURE_NOT_FOUND ((NTSTATUS)0xC000007A) -#define STATUS_INVALID_IMAGE_FORMAT ((NTSTATUS)0xC000007B) -#define STATUS_NO_TOKEN ((NTSTATUS)0xC000007C) -#define STATUS_BAD_INHERITANCE_ACL ((NTSTATUS)0xC000007D) -#define STATUS_RANGE_NOT_LOCKED ((NTSTATUS)0xC000007E) -#define STATUS_DISK_FULL ((NTSTATUS)0xC000007F) -#define STATUS_SERVER_DISABLED ((NTSTATUS)0xC0000080) -#define STATUS_SERVER_NOT_DISABLED ((NTSTATUS)0xC0000081) -#define STATUS_TOO_MANY_GUIDS_REQUESTED ((NTSTATUS)0xC0000082) -#define STATUS_GUIDS_EXHAUSTED ((NTSTATUS)0xC0000083) -#define STATUS_INVALID_ID_AUTHORITY ((NTSTATUS)0xC0000084) -#define STATUS_AGENTS_EXHAUSTED ((NTSTATUS)0xC0000085) -#define STATUS_INVALID_VOLUME_LABEL ((NTSTATUS)0xC0000086) -#define STATUS_SECTION_NOT_EXTENDED ((NTSTATUS)0xC0000087) -#define STATUS_NOT_MAPPED_DATA ((NTSTATUS)0xC0000088) -#define STATUS_RESOURCE_DATA_NOT_FOUND ((NTSTATUS)0xC0000089) -#define STATUS_RESOURCE_TYPE_NOT_FOUND ((NTSTATUS)0xC000008A) -#define STATUS_RESOURCE_NAME_NOT_FOUND ((NTSTATUS)0xC000008B) -#define STATUS_ARRAY_BOUNDS_EXCEEDED ((NTSTATUS)0xC000008C) -#define STATUS_FLOAT_DENORMAL_OPERAND ((NTSTATUS)0xC000008D) -#define STATUS_FLOAT_DIVIDE_BY_ZERO ((NTSTATUS)0xC000008E) -#define STATUS_FLOAT_INEXACT_RESULT ((NTSTATUS)0xC000008F) -#define STATUS_FLOAT_INVALID_OPERATION ((NTSTATUS)0xC0000090) -#define STATUS_FLOAT_OVERFLOW ((NTSTATUS)0xC0000091) -#define STATUS_FLOAT_STACK_CHECK ((NTSTATUS)0xC0000092) -#define STATUS_FLOAT_UNDERFLOW ((NTSTATUS)0xC0000093) -#define STATUS_INTEGER_DIVIDE_BY_ZERO ((NTSTATUS)0xC0000094) -#define STATUS_INTEGER_OVERFLOW ((NTSTATUS)0xC0000095) -#define STATUS_PRIVILEGED_INSTRUCTION ((NTSTATUS)0xC0000096) -#define STATUS_TOO_MANY_PAGING_FILES ((NTSTATUS)0xC0000097) -#define STATUS_FILE_INVALID ((NTSTATUS)0xC0000098) -#define STATUS_ALLOTTED_SPACE_EXCEEDED ((NTSTATUS)0xC0000099) -#define STATUS_INSUFFICIENT_RESOURCES ((NTSTATUS)0xC000009A) -#define STATUS_DFS_EXIT_PATH_FOUND ((NTSTATUS)0xC000009B) -#define STATUS_DEVICE_DATA_ERROR ((NTSTATUS)0xC000009C) -#define STATUS_DEVICE_NOT_CONNECTED ((NTSTATUS)0xC000009D) -#define STATUS_DEVICE_POWER_FAILURE ((NTSTATUS)0xC000009E) -#define STATUS_FREE_VM_NOT_AT_BASE ((NTSTATUS)0xC000009F) -#define STATUS_MEMORY_NOT_ALLOCATED ((NTSTATUS)0xC00000A0) -#define STATUS_WORKING_SET_QUOTA ((NTSTATUS)0xC00000A1) -#define STATUS_MEDIA_WRITE_PROTECTED ((NTSTATUS)0xC00000A2) -#define STATUS_DEVICE_NOT_READY ((NTSTATUS)0xC00000A3) -#define STATUS_INVALID_GROUP_ATTRIBUTES ((NTSTATUS)0xC00000A4) -#define STATUS_BAD_IMPERSONATION_LEVEL ((NTSTATUS)0xC00000A5) -#define STATUS_CANT_OPEN_ANONYMOUS ((NTSTATUS)0xC00000A6) -#define STATUS_BAD_VALIDATION_CLASS ((NTSTATUS)0xC00000A7) -#define STATUS_BAD_TOKEN_TYPE ((NTSTATUS)0xC00000A8) -#define STATUS_BAD_MASTER_BOOT_RECORD ((NTSTATUS)0xC00000A9) -#define STATUS_INSTRUCTION_MISALIGNMENT ((NTSTATUS)0xC00000AA) -#define STATUS_INSTANCE_NOT_AVAILABLE ((NTSTATUS)0xC00000AB) -#define STATUS_PIPE_NOT_AVAILABLE ((NTSTATUS)0xC00000AC) -#define STATUS_INVALID_PIPE_STATE ((NTSTATUS)0xC00000AD) -#define STATUS_PIPE_BUSY ((NTSTATUS)0xC00000AE) -#define STATUS_ILLEGAL_FUNCTION ((NTSTATUS)0xC00000AF) -#define STATUS_PIPE_DISCONNECTED ((NTSTATUS)0xC00000B0) -#define STATUS_PIPE_CLOSING ((NTSTATUS)0xC00000B1) -#define STATUS_PIPE_CONNECTED ((NTSTATUS)0xC00000B2) -#define STATUS_PIPE_LISTENING ((NTSTATUS)0xC00000B3) -#define STATUS_INVALID_READ_MODE ((NTSTATUS)0xC00000B4) -#define STATUS_IO_TIMEOUT ((NTSTATUS)0xC00000B5) -#define STATUS_FILE_FORCED_CLOSED ((NTSTATUS)0xC00000B6) -#define STATUS_PROFILING_NOT_STARTED ((NTSTATUS)0xC00000B7) -#define STATUS_PROFILING_NOT_STOPPED ((NTSTATUS)0xC00000B8) -#define STATUS_COULD_NOT_INTERPRET ((NTSTATUS)0xC00000B9) -#define STATUS_FILE_IS_A_DIRECTORY ((NTSTATUS)0xC00000BA) -#define STATUS_NOT_SUPPORTED ((NTSTATUS)0xC00000BB) -#define STATUS_REMOTE_NOT_LISTENING ((NTSTATUS)0xC00000BC) -#define STATUS_DUPLICATE_NAME ((NTSTATUS)0xC00000BD) -#define STATUS_BAD_NETWORK_PATH ((NTSTATUS)0xC00000BE) -#define STATUS_NETWORK_BUSY ((NTSTATUS)0xC00000BF) -#define STATUS_DEVICE_DOES_NOT_EXIST ((NTSTATUS)0xC00000C0) -#define STATUS_TOO_MANY_COMMANDS ((NTSTATUS)0xC00000C1) -#define STATUS_ADAPTER_HARDWARE_ERROR ((NTSTATUS)0xC00000C2) -#define STATUS_INVALID_NETWORK_RESPONSE ((NTSTATUS)0xC00000C3) -#define STATUS_UNEXPECTED_NETWORK_ERROR ((NTSTATUS)0xC00000C4) -#define STATUS_BAD_REMOTE_ADAPTER ((NTSTATUS)0xC00000C5) -#define STATUS_PRINT_QUEUE_FULL ((NTSTATUS)0xC00000C6) -#define STATUS_NO_SPOOL_SPACE ((NTSTATUS)0xC00000C7) -#define STATUS_PRINT_CANCELLED ((NTSTATUS)0xC00000C8) -#define STATUS_NETWORK_NAME_DELETED ((NTSTATUS)0xC00000C9) -#define STATUS_NETWORK_ACCESS_DENIED ((NTSTATUS)0xC00000CA) -#define STATUS_BAD_DEVICE_TYPE ((NTSTATUS)0xC00000CB) -#define STATUS_BAD_NETWORK_NAME ((NTSTATUS)0xC00000CC) -#define STATUS_TOO_MANY_NAMES ((NTSTATUS)0xC00000CD) -#define STATUS_TOO_MANY_SESSIONS ((NTSTATUS)0xC00000CE) -#define STATUS_SHARING_PAUSED ((NTSTATUS)0xC00000CF) -#define STATUS_REQUEST_NOT_ACCEPTED ((NTSTATUS)0xC00000D0) -#define STATUS_REDIRECTOR_PAUSED ((NTSTATUS)0xC00000D1) -#define STATUS_NET_WRITE_FAULT ((NTSTATUS)0xC00000D2) -#define STATUS_PROFILING_AT_LIMIT ((NTSTATUS)0xC00000D3) -#define STATUS_NOT_SAME_DEVICE ((NTSTATUS)0xC00000D4) -#define STATUS_FILE_RENAMED ((NTSTATUS)0xC00000D5) -#define STATUS_VIRTUAL_CIRCUIT_CLOSED ((NTSTATUS)0xC00000D6) -#define STATUS_NO_SECURITY_ON_OBJECT ((NTSTATUS)0xC00000D7) -#define STATUS_CANT_WAIT ((NTSTATUS)0xC00000D8) -#define STATUS_PIPE_EMPTY ((NTSTATUS)0xC00000D9) -#define STATUS_CANT_ACCESS_DOMAIN_INFO ((NTSTATUS)0xC00000DA) -#define STATUS_CANT_TERMINATE_SELF ((NTSTATUS)0xC00000DB) -#define STATUS_INVALID_SERVER_STATE ((NTSTATUS)0xC00000DC) -#define STATUS_INVALID_DOMAIN_STATE ((NTSTATUS)0xC00000DD) -#define STATUS_INVALID_DOMAIN_ROLE ((NTSTATUS)0xC00000DE) -#define STATUS_NO_SUCH_DOMAIN ((NTSTATUS)0xC00000DF) -#define STATUS_DOMAIN_EXISTS ((NTSTATUS)0xC00000E0) -#define STATUS_DOMAIN_LIMIT_EXCEEDED ((NTSTATUS)0xC00000E1) -#define STATUS_OPLOCK_NOT_GRANTED ((NTSTATUS)0xC00000E2) -#define STATUS_INVALID_OPLOCK_PROTOCOL ((NTSTATUS)0xC00000E3) -#define STATUS_INTERNAL_DB_CORRUPTION ((NTSTATUS)0xC00000E4) -#define STATUS_INTERNAL_ERROR ((NTSTATUS)0xC00000E5) -#define STATUS_GENERIC_NOT_MAPPED ((NTSTATUS)0xC00000E6) -#define STATUS_BAD_DESCRIPTOR_FORMAT ((NTSTATUS)0xC00000E7) -#define STATUS_INVALID_USER_BUFFER ((NTSTATUS)0xC00000E8) -#define STATUS_UNEXPECTED_IO_ERROR ((NTSTATUS)0xC00000E9) -#define STATUS_UNEXPECTED_MM_CREATE_ERR ((NTSTATUS)0xC00000EA) -#define STATUS_UNEXPECTED_MM_MAP_ERROR ((NTSTATUS)0xC00000EB) -#define STATUS_UNEXPECTED_MM_EXTEND_ERR ((NTSTATUS)0xC00000EC) -#define STATUS_NOT_LOGON_PROCESS ((NTSTATUS)0xC00000ED) -#define STATUS_LOGON_SESSION_EXISTS ((NTSTATUS)0xC00000EE) -#define STATUS_INVALID_PARAMETER_1 ((NTSTATUS)0xC00000EF) -#define STATUS_INVALID_PARAMETER_2 ((NTSTATUS)0xC00000F0) -#define STATUS_INVALID_PARAMETER_3 ((NTSTATUS)0xC00000F1) -#define STATUS_INVALID_PARAMETER_4 ((NTSTATUS)0xC00000F2) -#define STATUS_INVALID_PARAMETER_5 ((NTSTATUS)0xC00000F3) -#define STATUS_INVALID_PARAMETER_6 ((NTSTATUS)0xC00000F4) -#define STATUS_INVALID_PARAMETER_7 ((NTSTATUS)0xC00000F5) -#define STATUS_INVALID_PARAMETER_8 ((NTSTATUS)0xC00000F6) -#define STATUS_INVALID_PARAMETER_9 ((NTSTATUS)0xC00000F7) -#define STATUS_INVALID_PARAMETER_10 ((NTSTATUS)0xC00000F8) -#define STATUS_INVALID_PARAMETER_11 ((NTSTATUS)0xC00000F9) -#define STATUS_INVALID_PARAMETER_12 ((NTSTATUS)0xC00000FA) -#define STATUS_REDIRECTOR_NOT_STARTED ((NTSTATUS)0xC00000FB) -#define STATUS_REDIRECTOR_STARTED ((NTSTATUS)0xC00000FC) -#define STATUS_STACK_OVERFLOW ((NTSTATUS)0xC00000FD) -#define STATUS_NO_SUCH_PACKAGE ((NTSTATUS)0xC00000FE) -#define STATUS_BAD_FUNCTION_TABLE ((NTSTATUS)0xC00000FF) -#define STATUS_VARIABLE_NOT_FOUND ((NTSTATUS)0xC0000100) -#define STATUS_DIRECTORY_NOT_EMPTY ((NTSTATUS)0xC0000101) -#define STATUS_FILE_CORRUPT_ERROR ((NTSTATUS)0xC0000102) -#define STATUS_NOT_A_DIRECTORY ((NTSTATUS)0xC0000103) -#define STATUS_BAD_LOGON_SESSION_STATE ((NTSTATUS)0xC0000104) -#define STATUS_LOGON_SESSION_COLLISION ((NTSTATUS)0xC0000105) -#define STATUS_NAME_TOO_LONG ((NTSTATUS)0xC0000106) -#define STATUS_FILES_OPEN ((NTSTATUS)0xC0000107) -#define STATUS_CONNECTION_IN_USE ((NTSTATUS)0xC0000108) -#define STATUS_MESSAGE_NOT_FOUND ((NTSTATUS)0xC0000109) -#define STATUS_PROCESS_IS_TERMINATING ((NTSTATUS)0xC000010A) -#define STATUS_INVALID_LOGON_TYPE ((NTSTATUS)0xC000010B) -#define STATUS_NO_GUID_TRANSLATION ((NTSTATUS)0xC000010C) -#define STATUS_CANNOT_IMPERSONATE ((NTSTATUS)0xC000010D) -#define STATUS_IMAGE_ALREADY_LOADED ((NTSTATUS)0xC000010E) -#define STATUS_ABIOS_NOT_PRESENT ((NTSTATUS)0xC000010F) -#define STATUS_ABIOS_LID_NOT_EXIST ((NTSTATUS)0xC0000110) -#define STATUS_ABIOS_LID_ALREADY_OWNED ((NTSTATUS)0xC0000111) -#define STATUS_ABIOS_NOT_LID_OWNER ((NTSTATUS)0xC0000112) -#define STATUS_ABIOS_INVALID_COMMAND ((NTSTATUS)0xC0000113) -#define STATUS_ABIOS_INVALID_LID ((NTSTATUS)0xC0000114) -#define STATUS_ABIOS_SELECTOR_NOT_AVAILABLE ((NTSTATUS)0xC0000115) -#define STATUS_ABIOS_INVALID_SELECTOR ((NTSTATUS)0xC0000116) -#define STATUS_NO_LDT ((NTSTATUS)0xC0000117) -#define STATUS_INVALID_LDT_SIZE ((NTSTATUS)0xC0000118) -#define STATUS_INVALID_LDT_OFFSET ((NTSTATUS)0xC0000119) -#define STATUS_INVALID_LDT_DESCRIPTOR ((NTSTATUS)0xC000011A) -#define STATUS_INVALID_IMAGE_NE_FORMAT ((NTSTATUS)0xC000011B) -#define STATUS_RXACT_INVALID_STATE ((NTSTATUS)0xC000011C) -#define STATUS_RXACT_COMMIT_FAILURE ((NTSTATUS)0xC000011D) -#define STATUS_MAPPED_FILE_SIZE_ZERO ((NTSTATUS)0xC000011E) -#define STATUS_TOO_MANY_OPENED_FILES ((NTSTATUS)0xC000011F) -#define STATUS_CANCELLED ((NTSTATUS)0xC0000120) -#define STATUS_CANNOT_DELETE ((NTSTATUS)0xC0000121) -#define STATUS_INVALID_COMPUTER_NAME ((NTSTATUS)0xC0000122) -#define STATUS_FILE_DELETED ((NTSTATUS)0xC0000123) -#define STATUS_SPECIAL_ACCOUNT ((NTSTATUS)0xC0000124) -#define STATUS_SPECIAL_GROUP ((NTSTATUS)0xC0000125) -#define STATUS_SPECIAL_USER ((NTSTATUS)0xC0000126) -#define STATUS_MEMBERS_PRIMARY_GROUP ((NTSTATUS)0xC0000127) -#define STATUS_FILE_CLOSED ((NTSTATUS)0xC0000128) -#define STATUS_TOO_MANY_THREADS ((NTSTATUS)0xC0000129) -#define STATUS_THREAD_NOT_IN_PROCESS ((NTSTATUS)0xC000012A) -#define STATUS_TOKEN_ALREADY_IN_USE ((NTSTATUS)0xC000012B) -#define STATUS_PAGEFILE_QUOTA_EXCEEDED ((NTSTATUS)0xC000012C) -#define STATUS_COMMITMENT_LIMIT ((NTSTATUS)0xC000012D) -#define STATUS_INVALID_IMAGE_LE_FORMAT ((NTSTATUS)0xC000012E) -#define STATUS_INVALID_IMAGE_NOT_MZ ((NTSTATUS)0xC000012F) -#define STATUS_INVALID_IMAGE_PROTECT ((NTSTATUS)0xC0000130) -#define STATUS_INVALID_IMAGE_WIN_16 ((NTSTATUS)0xC0000131) -#define STATUS_LOGON_SERVER_CONFLICT ((NTSTATUS)0xC0000132) -#define STATUS_TIME_DIFFERENCE_AT_DC ((NTSTATUS)0xC0000133) -#define STATUS_SYNCHRONIZATION_REQUIRED ((NTSTATUS)0xC0000134) -#define STATUS_DLL_NOT_FOUND ((NTSTATUS)0xC0000135) -#define STATUS_OPEN_FAILED ((NTSTATUS)0xC0000136) -#define STATUS_IO_PRIVILEGE_FAILED ((NTSTATUS)0xC0000137) -#define STATUS_ORDINAL_NOT_FOUND ((NTSTATUS)0xC0000138) -#define STATUS_ENTRYPOINT_NOT_FOUND ((NTSTATUS)0xC0000139) -#define STATUS_CONTROL_C_EXIT ((NTSTATUS)0xC000013A) -#define STATUS_LOCAL_DISCONNECT ((NTSTATUS)0xC000013B) -#define STATUS_REMOTE_DISCONNECT ((NTSTATUS)0xC000013C) -#define STATUS_REMOTE_RESOURCES ((NTSTATUS)0xC000013D) -#define STATUS_LINK_FAILED ((NTSTATUS)0xC000013E) -#define STATUS_LINK_TIMEOUT ((NTSTATUS)0xC000013F) -#define STATUS_INVALID_CONNECTION ((NTSTATUS)0xC0000140) -#define STATUS_INVALID_ADDRESS ((NTSTATUS)0xC0000141) -#define STATUS_DLL_INIT_FAILED ((NTSTATUS)0xC0000142) -#define STATUS_MISSING_SYSTEMFILE ((NTSTATUS)0xC0000143) -#define STATUS_UNHANDLED_EXCEPTION ((NTSTATUS)0xC0000144) -#define STATUS_APP_INIT_FAILURE ((NTSTATUS)0xC0000145) -#define STATUS_PAGEFILE_CREATE_FAILED ((NTSTATUS)0xC0000146) -#define STATUS_NO_PAGEFILE ((NTSTATUS)0xC0000147) -#define STATUS_INVALID_LEVEL ((NTSTATUS)0xC0000148) -#define STATUS_WRONG_PASSWORD_CORE ((NTSTATUS)0xC0000149) -#define STATUS_ILLEGAL_FLOAT_CONTEXT ((NTSTATUS)0xC000014A) -#define STATUS_PIPE_BROKEN ((NTSTATUS)0xC000014B) -#define STATUS_REGISTRY_CORRUPT ((NTSTATUS)0xC000014C) -#define STATUS_REGISTRY_IO_FAILED ((NTSTATUS)0xC000014D) -#define STATUS_NO_EVENT_PAIR ((NTSTATUS)0xC000014E) -#define STATUS_UNRECOGNIZED_VOLUME ((NTSTATUS)0xC000014F) -#define STATUS_SERIAL_NO_DEVICE_INITED ((NTSTATUS)0xC0000150) -#define STATUS_NO_SUCH_ALIAS ((NTSTATUS)0xC0000151) -#define STATUS_MEMBER_NOT_IN_ALIAS ((NTSTATUS)0xC0000152) -#define STATUS_MEMBER_IN_ALIAS ((NTSTATUS)0xC0000153) -#define STATUS_ALIAS_EXISTS ((NTSTATUS)0xC0000154) -#define STATUS_LOGON_NOT_GRANTED ((NTSTATUS)0xC0000155) -#define STATUS_TOO_MANY_SECRETS ((NTSTATUS)0xC0000156) -#define STATUS_SECRET_TOO_LONG ((NTSTATUS)0xC0000157) -#define STATUS_INTERNAL_DB_ERROR ((NTSTATUS)0xC0000158) -#define STATUS_FULLSCREEN_MODE ((NTSTATUS)0xC0000159) -#define STATUS_TOO_MANY_CONTEXT_IDS ((NTSTATUS)0xC000015A) -#define STATUS_LOGON_TYPE_NOT_GRANTED ((NTSTATUS)0xC000015B) -#define STATUS_NOT_REGISTRY_FILE ((NTSTATUS)0xC000015C) -#define STATUS_NT_CROSS_ENCRYPTION_REQUIRED ((NTSTATUS)0xC000015D) -#define STATUS_DOMAIN_CTRLR_CONFIG_ERROR ((NTSTATUS)0xC000015E) -#define STATUS_FT_MISSING_MEMBER ((NTSTATUS)0xC000015F) -#define STATUS_ILL_FORMED_SERVICE_ENTRY ((NTSTATUS)0xC0000160) -#define STATUS_ILLEGAL_CHARACTER ((NTSTATUS)0xC0000161) -#define STATUS_UNMAPPABLE_CHARACTER ((NTSTATUS)0xC0000162) -#define STATUS_UNDEFINED_CHARACTER ((NTSTATUS)0xC0000163) -#define STATUS_FLOPPY_VOLUME ((NTSTATUS)0xC0000164) -#define STATUS_FLOPPY_ID_MARK_NOT_FOUND ((NTSTATUS)0xC0000165) -#define STATUS_FLOPPY_WRONG_CYLINDER ((NTSTATUS)0xC0000166) -#define STATUS_FLOPPY_UNKNOWN_ERROR ((NTSTATUS)0xC0000167) -#define STATUS_FLOPPY_BAD_REGISTERS ((NTSTATUS)0xC0000168) -#define STATUS_DISK_RECALIBRATE_FAILED ((NTSTATUS)0xC0000169) -#define STATUS_DISK_OPERATION_FAILED ((NTSTATUS)0xC000016A) -#define STATUS_DISK_RESET_FAILED ((NTSTATUS)0xC000016B) -#define STATUS_SHARED_IRQ_BUSY ((NTSTATUS)0xC000016C) -#define STATUS_FT_ORPHANING ((NTSTATUS)0xC000016D) -#define STATUS_BIOS_FAILED_TO_CONNECT_INTERRUPT ((NTSTATUS)0xC000016E) - -#define STATUS_PARTITION_FAILURE ((NTSTATUS)0xC0000172) -#define STATUS_INVALID_BLOCK_LENGTH ((NTSTATUS)0xC0000173) -#define STATUS_DEVICE_NOT_PARTITIONED ((NTSTATUS)0xC0000174) -#define STATUS_UNABLE_TO_LOCK_MEDIA ((NTSTATUS)0xC0000175) -#define STATUS_UNABLE_TO_UNLOAD_MEDIA ((NTSTATUS)0xC0000176) -#define STATUS_EOM_OVERFLOW ((NTSTATUS)0xC0000177) -#define STATUS_NO_MEDIA ((NTSTATUS)0xC0000178) -#define STATUS_NO_SUCH_MEMBER ((NTSTATUS)0xC000017A) -#define STATUS_INVALID_MEMBER ((NTSTATUS)0xC000017B) -#define STATUS_KEY_DELETED ((NTSTATUS)0xC000017C) -#define STATUS_NO_LOG_SPACE ((NTSTATUS)0xC000017D) -#define STATUS_TOO_MANY_SIDS ((NTSTATUS)0xC000017E) -#define STATUS_LM_CROSS_ENCRYPTION_REQUIRED ((NTSTATUS)0xC000017F) -#define STATUS_KEY_HAS_CHILDREN ((NTSTATUS)0xC0000180) -#define STATUS_CHILD_MUST_BE_VOLATILE ((NTSTATUS)0xC0000181) -#define STATUS_DEVICE_CONFIGURATION_ERROR ((NTSTATUS)0xC0000182) -#define STATUS_DRIVER_INTERNAL_ERROR ((NTSTATUS)0xC0000183) -#define STATUS_INVALID_DEVICE_STATE ((NTSTATUS)0xC0000184) -#define STATUS_IO_DEVICE_ERROR ((NTSTATUS)0xC0000185) -#define STATUS_DEVICE_PROTOCOL_ERROR ((NTSTATUS)0xC0000186) -#define STATUS_BACKUP_CONTROLLER ((NTSTATUS)0xC0000187) -#define STATUS_LOG_FILE_FULL ((NTSTATUS)0xC0000188) -#define STATUS_TOO_LATE ((NTSTATUS)0xC0000189) -#define STATUS_NO_TRUST_LSA_SECRET ((NTSTATUS)0xC000018A) -#define STATUS_NO_TRUST_SAM_ACCOUNT ((NTSTATUS)0xC000018B) -#define STATUS_TRUSTED_DOMAIN_FAILURE ((NTSTATUS)0xC000018C) -#define STATUS_TRUSTED_RELATIONSHIP_FAILURE ((NTSTATUS)0xC000018D) -#define STATUS_EVENTLOG_FILE_CORRUPT ((NTSTATUS)0xC000018E) -#define STATUS_EVENTLOG_CANT_START ((NTSTATUS)0xC000018F) -#define STATUS_TRUST_FAILURE ((NTSTATUS)0xC0000190) -#define STATUS_MUTANT_LIMIT_EXCEEDED ((NTSTATUS)0xC0000191) -#define STATUS_NETLOGON_NOT_STARTED ((NTSTATUS)0xC0000192) -#define STATUS_ACCOUNT_EXPIRED ((NTSTATUS)0xC0000193) -#define STATUS_POSSIBLE_DEADLOCK ((NTSTATUS)0xC0000194) -#define STATUS_NETWORK_CREDENTIAL_CONFLICT ((NTSTATUS)0xC0000195) -#define STATUS_REMOTE_SESSION_LIMIT ((NTSTATUS)0xC0000196) -#define STATUS_EVENTLOG_FILE_CHANGED ((NTSTATUS)0xC0000197) -#define STATUS_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT ((NTSTATUS)0xC0000198) -#define STATUS_NOLOGON_WORKSTATION_TRUST_ACCOUNT ((NTSTATUS)0xC0000199) -#define STATUS_NOLOGON_SERVER_TRUST_ACCOUNT ((NTSTATUS)0xC000019A) -#define STATUS_DOMAIN_TRUST_INCONSISTENT ((NTSTATUS)0xC000019B) -#define STATUS_FS_DRIVER_REQUIRED ((NTSTATUS)0xC000019C) -#define STATUS_NO_USER_SESSION_KEY ((NTSTATUS)0xC0000202) -#define STATUS_USER_SESSION_DELETED ((NTSTATUS)0xC0000203) -#define STATUS_RESOURCE_LANG_NOT_FOUND ((NTSTATUS)0xC0000204) -#define STATUS_INSUFF_SERVER_RESOURCES ((NTSTATUS)0xC0000205) -#define STATUS_INVALID_BUFFER_SIZE ((NTSTATUS)0xC0000206) -#define STATUS_INVALID_ADDRESS_COMPONENT ((NTSTATUS)0xC0000207) -#define STATUS_INVALID_ADDRESS_WILDCARD ((NTSTATUS)0xC0000208) -#define STATUS_TOO_MANY_ADDRESSES ((NTSTATUS)0xC0000209) -#define STATUS_ADDRESS_ALREADY_EXISTS ((NTSTATUS)0xC000020A) -#define STATUS_ADDRESS_CLOSED ((NTSTATUS)0xC000020B) -#define STATUS_CONNECTION_DISCONNECTED ((NTSTATUS)0xC000020C) -#define STATUS_CONNECTION_RESET ((NTSTATUS)0xC000020D) -#define STATUS_TOO_MANY_NODES ((NTSTATUS)0xC000020E) -#define STATUS_TRANSACTION_ABORTED ((NTSTATUS)0xC000020F) -#define STATUS_TRANSACTION_TIMED_OUT ((NTSTATUS)0xC0000210) -#define STATUS_TRANSACTION_NO_RELEASE ((NTSTATUS)0xC0000211) -#define STATUS_TRANSACTION_NO_MATCH ((NTSTATUS)0xC0000212) -#define STATUS_TRANSACTION_RESPONDED ((NTSTATUS)0xC0000213) -#define STATUS_TRANSACTION_INVALID_ID ((NTSTATUS)0xC0000214) -#define STATUS_TRANSACTION_INVALID_TYPE ((NTSTATUS)0xC0000215) -#define STATUS_NOT_SERVER_SESSION ((NTSTATUS)0xC0000216) -#define STATUS_NOT_CLIENT_SESSION ((NTSTATUS)0xC0000217) -#define STATUS_CANNOT_LOAD_REGISTRY_FILE ((NTSTATUS)0xC0000218) -#define STATUS_DEBUG_ATTACH_FAILED ((NTSTATUS)0xC0000219) -#define STATUS_SYSTEM_PROCESS_TERMINATED ((NTSTATUS)0xC000021A) -#define STATUS_DATA_NOT_ACCEPTED ((NTSTATUS)0xC000021B) -#define STATUS_NO_BROWSER_SERVERS_FOUND ((NTSTATUS)0xC000021C) -#define STATUS_VDM_HARD_ERROR ((NTSTATUS)0xC000021D) -#define STATUS_DRIVER_CANCEL_TIMEOUT ((NTSTATUS)0xC000021E) -#define STATUS_REPLY_MESSAGE_MISMATCH ((NTSTATUS)0xC000021F) -#define STATUS_MAPPED_ALIGNMENT ((NTSTATUS)0xC0000220) -#define STATUS_IMAGE_CHECKSUM_MISMATCH ((NTSTATUS)0xC0000221) -#define STATUS_LOST_WRITEBEHIND_DATA ((NTSTATUS)0xC0000222) -#define STATUS_CLIENT_SERVER_PARAMETERS_INVALID ((NTSTATUS)0xC0000223) -#define STATUS_PASSWORD_MUST_CHANGE ((NTSTATUS)0xC0000224) -#define STATUS_NOT_FOUND ((NTSTATUS)0xC0000225) -#define STATUS_NOT_TINY_STREAM ((NTSTATUS)0xC0000226) -#define STATUS_RECOVERY_FAILURE ((NTSTATUS)0xC0000227) -#define STATUS_STACK_OVERFLOW_READ ((NTSTATUS)0xC0000228) -#define STATUS_FAIL_CHECK ((NTSTATUS)0xC0000229) -#define STATUS_DUPLICATE_OBJECTID ((NTSTATUS)0xC000022A) -#define STATUS_OBJECTID_EXISTS ((NTSTATUS)0xC000022B) -#define STATUS_CONVERT_TO_LARGE ((NTSTATUS)0xC000022C) -#define STATUS_RETRY ((NTSTATUS)0xC000022D) -#define STATUS_FOUND_OUT_OF_SCOPE ((NTSTATUS)0xC000022E) -#define STATUS_ALLOCATE_BUCKET ((NTSTATUS)0xC000022F) -#define STATUS_PROPSET_NOT_FOUND ((NTSTATUS)0xC0000230) -#define STATUS_MARSHALL_OVERFLOW ((NTSTATUS)0xC0000231) -#define STATUS_INVALID_VARIANT ((NTSTATUS)0xC0000232) -#define STATUS_DOMAIN_CONTROLLER_NOT_FOUND ((NTSTATUS)0xC0000233) -#define STATUS_ACCOUNT_LOCKED_OUT ((NTSTATUS)0xC0000234) -#define STATUS_HANDLE_NOT_CLOSABLE ((NTSTATUS)0xC0000235) -#define STATUS_CONNECTION_REFUSED ((NTSTATUS)0xC0000236) -#define STATUS_GRACEFUL_DISCONNECT ((NTSTATUS)0xC0000237) -#define STATUS_ADDRESS_ALREADY_ASSOCIATED ((NTSTATUS)0xC0000238) -#define STATUS_ADDRESS_NOT_ASSOCIATED ((NTSTATUS)0xC0000239) -#define STATUS_CONNECTION_INVALID ((NTSTATUS)0xC000023A) -#define STATUS_CONNECTION_ACTIVE ((NTSTATUS)0xC000023B) -#define STATUS_NETWORK_UNREACHABLE ((NTSTATUS)0xC000023C) -#define STATUS_HOST_UNREACHABLE ((NTSTATUS)0xC000023D) -#define STATUS_PROTOCOL_UNREACHABLE ((NTSTATUS)0xC000023E) -#define STATUS_PORT_UNREACHABLE ((NTSTATUS)0xC000023F) -#define STATUS_REQUEST_ABORTED ((NTSTATUS)0xC0000240) -#define STATUS_CONNECTION_ABORTED ((NTSTATUS)0xC0000241) -#define STATUS_BAD_COMPRESSION_BUFFER ((NTSTATUS)0xC0000242) -#define STATUS_USER_MAPPED_FILE ((NTSTATUS)0xC0000243) -#define STATUS_AUDIT_FAILED ((NTSTATUS)0xC0000244) -#define STATUS_TIMER_RESOLUTION_NOT_SET ((NTSTATUS)0xC0000245) -#define STATUS_CONNECTION_COUNT_LIMIT ((NTSTATUS)0xC0000246) -#define STATUS_LOGIN_TIME_RESTRICTION ((NTSTATUS)0xC0000247) -#define STATUS_LOGIN_WKSTA_RESTRICTION ((NTSTATUS)0xC0000248) -#define STATUS_IMAGE_MP_UP_MISMATCH ((NTSTATUS)0xC0000249) -#define STATUS_INSUFFICIENT_LOGON_INFO ((NTSTATUS)0xC0000250) -#define STATUS_BAD_DLL_ENTRYPOINT ((NTSTATUS)0xC0000251) -#define STATUS_BAD_SERVICE_ENTRYPOINT ((NTSTATUS)0xC0000252) -#define STATUS_LPC_REPLY_LOST ((NTSTATUS)0xC0000253) -#define STATUS_IP_ADDRESS_CONFLICT1 ((NTSTATUS)0xC0000254) -#define STATUS_IP_ADDRESS_CONFLICT2 ((NTSTATUS)0xC0000255) -#define STATUS_REGISTRY_QUOTA_LIMIT ((NTSTATUS)0xC0000256) -#define STATUS_PATH_NOT_COVERED ((NTSTATUS)0xC0000257) -#define STATUS_NO_CALLBACK_ACTIVE ((NTSTATUS)0xC0000258) -#define STATUS_LICENSE_QUOTA_EXCEEDED ((NTSTATUS)0xC0000259) -#define STATUS_PWD_TOO_SHORT ((NTSTATUS)0xC000025A) -#define STATUS_PWD_TOO_RECENT ((NTSTATUS)0xC000025B) -#define STATUS_PWD_HISTORY_CONFLICT ((NTSTATUS)0xC000025C) -#define STATUS_PLUGPLAY_NO_DEVICE ((NTSTATUS)0xC000025E) -#define STATUS_UNSUPPORTED_COMPRESSION ((NTSTATUS)0xC000025F) -#define STATUS_INVALID_HW_PROFILE ((NTSTATUS)0xC0000260) -#define STATUS_INVALID_PLUGPLAY_DEVICE_PATH ((NTSTATUS)0xC0000261) -#define STATUS_DRIVER_ORDINAL_NOT_FOUND ((NTSTATUS)0xC0000262) -#define STATUS_DRIVER_ENTRYPOINT_NOT_FOUND ((NTSTATUS)0xC0000263) -#define STATUS_RESOURCE_NOT_OWNED ((NTSTATUS)0xC0000264) -#define STATUS_TOO_MANY_LINKS ((NTSTATUS)0xC0000265) -#define STATUS_QUOTA_LIST_INCONSISTENT ((NTSTATUS)0xC0000266) -#define STATUS_FILE_IS_OFFLINE ((NTSTATUS)0xC0000267) -#define STATUS_EVALUATION_EXPIRATION ((NTSTATUS)0xC0000268) -#define STATUS_ILLEGAL_DLL_RELOCATION ((NTSTATUS)0xC0000269) -#define STATUS_LICENSE_VIOLATION ((NTSTATUS)0xC000026A) -#define STATUS_DLL_INIT_FAILED_LOGOFF ((NTSTATUS)0xC000026B) -#define STATUS_DRIVER_UNABLE_TO_LOAD ((NTSTATUS)0xC000026C) -#define STATUS_DFS_UNAVAILABLE ((NTSTATUS)0xC000026D) -#define STATUS_VOLUME_DISMOUNTED ((NTSTATUS)0xC000026E) -#define STATUS_WX86_INTERNAL_ERROR ((NTSTATUS)0xC000026F) -#define STATUS_WX86_FLOAT_STACK_CHECK ((NTSTATUS)0xC0000270) -#define STATUS_VALIDATE_CONTINUE ((NTSTATUS)0xC0000271) -#define STATUS_NO_MATCH ((NTSTATUS)0xC0000272) -#define STATUS_NO_MORE_MATCHES ((NTSTATUS)0xC0000273) -#define STATUS_NOT_A_REPARSE_POINT ((NTSTATUS)0xC0000275) -#define STATUS_IO_REPARSE_TAG_INVALID ((NTSTATUS)0xC0000276) -#define STATUS_IO_REPARSE_TAG_MISMATCH ((NTSTATUS)0xC0000277) -#define STATUS_IO_REPARSE_DATA_INVALID ((NTSTATUS)0xC0000278) -#define STATUS_IO_REPARSE_TAG_NOT_HANDLED ((NTSTATUS)0xC0000279) -#define STATUS_REPARSE_POINT_NOT_RESOLVED ((NTSTATUS)0xC0000280) -#define STATUS_DIRECTORY_IS_A_REPARSE_POINT ((NTSTATUS)0xC0000281) -#define STATUS_RANGE_LIST_CONFLICT ((NTSTATUS)0xC0000282) -#define STATUS_SOURCE_ELEMENT_EMPTY ((NTSTATUS)0xC0000283) -#define STATUS_DESTINATION_ELEMENT_FULL ((NTSTATUS)0xC0000284) -#define STATUS_ILLEGAL_ELEMENT_ADDRESS ((NTSTATUS)0xC0000285) -#define STATUS_MAGAZINE_NOT_PRESENT ((NTSTATUS)0xC0000286) -#define STATUS_REINITIALIZATION_NEEDED ((NTSTATUS)0xC0000287) -#define STATUS_ENCRYPTION_FAILED ((NTSTATUS)0xC000028A) -#define STATUS_DECRYPTION_FAILED ((NTSTATUS)0xC000028B) -#define STATUS_RANGE_NOT_FOUND ((NTSTATUS)0xC000028C) -#define STATUS_NO_RECOVERY_POLICY ((NTSTATUS)0xC000028D) -#define STATUS_NO_EFS ((NTSTATUS)0xC000028E) -#define STATUS_WRONG_EFS ((NTSTATUS)0xC000028F) -#define STATUS_NO_USER_KEYS ((NTSTATUS)0xC0000290) -#define STATUS_FILE_NOT_ENCRYPTED ((NTSTATUS)0xC0000291) -#define STATUS_NOT_EXPORT_FORMAT ((NTSTATUS)0xC0000292) -#define STATUS_FILE_ENCRYPTED ((NTSTATUS)0xC0000293) -#define STATUS_WMI_GUID_NOT_FOUND ((NTSTATUS)0xC0000295) -#define STATUS_WMI_INSTANCE_NOT_FOUND ((NTSTATUS)0xC0000296) -#define STATUS_WMI_ITEMID_NOT_FOUND ((NTSTATUS)0xC0000297) -#define STATUS_WMI_TRY_AGAIN ((NTSTATUS)0xC0000298) -#define STATUS_SHARED_POLICY ((NTSTATUS)0xC0000299) -#define STATUS_POLICY_OBJECT_NOT_FOUND ((NTSTATUS)0xC000029A) -#define STATUS_POLICY_ONLY_IN_DS ((NTSTATUS)0xC000029B) -#define STATUS_VOLUME_NOT_UPGRADED ((NTSTATUS)0xC000029C) -#define STATUS_REMOTE_STORAGE_NOT_ACTIVE ((NTSTATUS)0xC000029D) -#define STATUS_REMOTE_STORAGE_MEDIA_ERROR ((NTSTATUS)0xC000029E) -#define STATUS_NO_TRACKING_SERVICE ((NTSTATUS)0xC000029F) -#define STATUS_SERVER_SID_MISMATCH ((NTSTATUS)0xC00002A0) -#define STATUS_DS_NO_ATTRIBUTE_OR_VALUE ((NTSTATUS)0xC00002A1) -#define STATUS_DS_INVALID_ATTRIBUTE_SYNTAX ((NTSTATUS)0xC00002A2) -#define STATUS_DS_ATTRIBUTE_TYPE_UNDEFINED ((NTSTATUS)0xC00002A3) -#define STATUS_DS_ATTRIBUTE_OR_VALUE_EXISTS ((NTSTATUS)0xC00002A4) -#define STATUS_DS_BUSY ((NTSTATUS)0xC00002A5) -#define STATUS_DS_UNAVAILABLE ((NTSTATUS)0xC00002A6) -#define STATUS_DS_NO_RIDS_ALLOCATED ((NTSTATUS)0xC00002A7) -#define STATUS_DS_NO_MORE_RIDS ((NTSTATUS)0xC00002A8) -#define STATUS_DS_INCORRECT_ROLE_OWNER ((NTSTATUS)0xC00002A9) -#define STATUS_DS_RIDMGR_INIT_ERROR ((NTSTATUS)0xC00002AA) -#define STATUS_DS_OBJ_CLASS_VIOLATION ((NTSTATUS)0xC00002AB) -#define STATUS_DS_CANT_ON_NON_LEAF ((NTSTATUS)0xC00002AC) -#define STATUS_DS_CANT_ON_RDN ((NTSTATUS)0xC00002AD) -#define STATUS_DS_CANT_MOD_OBJ_CLASS ((NTSTATUS)0xC00002AE) -#define STATUS_DS_CROSS_DOM_MOVE_FAILED ((NTSTATUS)0xC00002AF) -#define STATUS_DS_GC_NOT_AVAILABLE ((NTSTATUS)0xC00002B0) -#define STATUS_DIRECTORY_SERVICE_REQUIRED ((NTSTATUS)0xC00002B1) -#define STATUS_REPARSE_ATTRIBUTE_CONFLICT ((NTSTATUS)0xC00002B2) -#define STATUS_CANT_ENABLE_DENY_ONLY ((NTSTATUS)0xC00002B3) -#define STATUS_FLOAT_MULTIPLE_FAULTS ((NTSTATUS)0xC00002B4) -#define STATUS_FLOAT_MULTIPLE_TRAPS ((NTSTATUS)0xC00002B5) -#define STATUS_DEVICE_REMOVED ((NTSTATUS)0xC00002B6) -#define STATUS_JOURNAL_DELETE_IN_PROGRESS ((NTSTATUS)0xC00002B7) -#define STATUS_JOURNAL_NOT_ACTIVE ((NTSTATUS)0xC00002B8) -#define STATUS_NOINTERFACE ((NTSTATUS)0xC00002B9) -#define STATUS_DS_ADMIN_LIMIT_EXCEEDED ((NTSTATUS)0xC00002C1) -#define STATUS_DRIVER_FAILED_SLEEP ((NTSTATUS)0xC00002C2) -#define STATUS_MUTUAL_AUTHENTICATION_FAILED ((NTSTATUS)0xC00002C3) -#define STATUS_CORRUPT_SYSTEM_FILE ((NTSTATUS)0xC00002C4) -#define STATUS_DATATYPE_MISALIGNMENT_ERROR ((NTSTATUS)0xC00002C5) -#define STATUS_WMI_READ_ONLY ((NTSTATUS)0xC00002C6) -#define STATUS_WMI_SET_FAILURE ((NTSTATUS)0xC00002C7) -#define STATUS_COMMITMENT_MINIMUM ((NTSTATUS)0xC00002C8) -#define STATUS_REG_NAT_CONSUMPTION ((NTSTATUS)0xC00002C9) -#define STATUS_TRANSPORT_FULL ((NTSTATUS)0xC00002CA) -#define STATUS_DS_SAM_INIT_FAILURE ((NTSTATUS)0xC00002CB) -#define STATUS_ONLY_IF_CONNECTED ((NTSTATUS)0xC00002CC) -#define STATUS_DS_SENSITIVE_GROUP_VIOLATION ((NTSTATUS)0xC00002CD) -#define STATUS_PNP_RESTART_ENUMERATION ((NTSTATUS)0xC00002CE) -#define STATUS_JOURNAL_ENTRY_DELETED ((NTSTATUS)0xC00002CF) -#define STATUS_DS_CANT_MOD_PRIMARYGROUPID ((NTSTATUS)0xC00002D0) -#define STATUS_SYSTEM_IMAGE_BAD_SIGNATURE ((NTSTATUS)0xC00002D1) -#define STATUS_PNP_REBOOT_REQUIRED ((NTSTATUS)0xC00002D2) -#define STATUS_POWER_STATE_INVALID ((NTSTATUS)0xC00002D3) -#define STATUS_DS_INVALID_GROUP_TYPE ((NTSTATUS)0xC00002D4) -#define STATUS_DS_NO_NEST_GLOBALGROUP_IN_MIXEDDOMAIN ((NTSTATUS)0xC00002D5) -#define STATUS_DS_NO_NEST_LOCALGROUP_IN_MIXEDDOMAIN ((NTSTATUS)0xC00002D6) -#define STATUS_DS_GLOBAL_CANT_HAVE_LOCAL_MEMBER ((NTSTATUS)0xC00002D7) -#define STATUS_DS_GLOBAL_CANT_HAVE_UNIVERSAL_MEMBER ((NTSTATUS)0xC00002D8) -#define STATUS_DS_UNIVERSAL_CANT_HAVE_LOCAL_MEMBER ((NTSTATUS)0xC00002D9) -#define STATUS_DS_GLOBAL_CANT_HAVE_CROSSDOMAIN_MEMBER ((NTSTATUS)0xC00002DA) -#define STATUS_DS_LOCAL_CANT_HAVE_CROSSDOMAIN_LOCAL_MEMBER ((NTSTATUS)0xC00002DB) -#define STATUS_DS_HAVE_PRIMARY_MEMBERS ((NTSTATUS)0xC00002DC) -#define STATUS_WMI_NOT_SUPPORTED ((NTSTATUS)0xC00002DD) -#define STATUS_INSUFFICIENT_POWER ((NTSTATUS)0xC00002DE) -#define STATUS_SAM_NEED_BOOTKEY_PASSWORD ((NTSTATUS)0xC00002DF) -#define STATUS_SAM_NEED_BOOTKEY_FLOPPY ((NTSTATUS)0xC00002E0) -#define STATUS_DS_CANT_START ((NTSTATUS)0xC00002E1) -#define STATUS_DS_INIT_FAILURE ((NTSTATUS)0xC00002E2) -#define STATUS_SAM_INIT_FAILURE ((NTSTATUS)0xC00002E3) -#define STATUS_DS_GC_REQUIRED ((NTSTATUS)0xC00002E4) -#define STATUS_DS_LOCAL_MEMBER_OF_LOCAL_ONLY ((NTSTATUS)0xC00002E5) -#define STATUS_DS_NO_FPO_IN_UNIVERSAL_GROUPS ((NTSTATUS)0xC00002E6) -#define STATUS_DS_MACHINE_ACCOUNT_QUOTA_EXCEEDED ((NTSTATUS)0xC00002E7) -#define STATUS_MULTIPLE_FAULT_VIOLATION ((NTSTATUS)0xC00002E8) -#define STATUS_CURRENT_DOMAIN_NOT_ALLOWED ((NTSTATUS)0xC00002E9) -#define STATUS_CANNOT_MAKE ((NTSTATUS)0xC00002EA) -#define STATUS_SYSTEM_SHUTDOWN ((NTSTATUS)0xC00002EB) -#define STATUS_DS_INIT_FAILURE_CONSOLE ((NTSTATUS)0xC00002EC) -#define STATUS_DS_SAM_INIT_FAILURE_CONSOLE ((NTSTATUS)0xC00002ED) -#define STATUS_UNFINISHED_CONTEXT_DELETED ((NTSTATUS)0xC00002EE) -#define STATUS_NO_TGT_REPLY ((NTSTATUS)0xC00002EF) -#define STATUS_OBJECTID_NOT_FOUND ((NTSTATUS)0xC00002F0) -#define STATUS_NO_IP_ADDRESSES ((NTSTATUS)0xC00002F1) -#define STATUS_WRONG_CREDENTIAL_HANDLE ((NTSTATUS)0xC00002F2) -#define STATUS_CRYPTO_SYSTEM_INVALID ((NTSTATUS)0xC00002F3) -#define STATUS_MAX_REFERRALS_EXCEEDED ((NTSTATUS)0xC00002F4) -#define STATUS_MUST_BE_KDC ((NTSTATUS)0xC00002F5) -#define STATUS_STRONG_CRYPTO_NOT_SUPPORTED ((NTSTATUS)0xC00002F6) -#define STATUS_TOO_MANY_PRINCIPALS ((NTSTATUS)0xC00002F7) -#define STATUS_NO_PA_DATA ((NTSTATUS)0xC00002F8) -#define STATUS_PKINIT_NAME_MISMATCH ((NTSTATUS)0xC00002F9) -#define STATUS_SMARTCARD_LOGON_REQUIRED ((NTSTATUS)0xC00002FA) -#define STATUS_KDC_INVALID_REQUEST ((NTSTATUS)0xC00002FB) -#define STATUS_KDC_UNABLE_TO_REFER ((NTSTATUS)0xC00002FC) -#define STATUS_KDC_UNKNOWN_ETYPE ((NTSTATUS)0xC00002FD) -#define STATUS_SHUTDOWN_IN_PROGRESS ((NTSTATUS)0xC00002FE) -#define STATUS_SERVER_SHUTDOWN_IN_PROGRESS ((NTSTATUS)0xC00002FF) -#define STATUS_NOT_SUPPORTED_ON_SBS ((NTSTATUS)0xC0000300) -#define STATUS_WMI_GUID_DISCONNECTED ((NTSTATUS)0xC0000301) -#define STATUS_WMI_ALREADY_DISABLED ((NTSTATUS)0xC0000302) -#define STATUS_WMI_ALREADY_ENABLED ((NTSTATUS)0xC0000303) -#define STATUS_MFT_TOO_FRAGMENTED ((NTSTATUS)0xC0000304) -#define STATUS_COPY_PROTECTION_FAILURE ((NTSTATUS)0xC0000305) -#define STATUS_CSS_AUTHENTICATION_FAILURE ((NTSTATUS)0xC0000306) -#define STATUS_CSS_KEY_NOT_PRESENT ((NTSTATUS)0xC0000307) -#define STATUS_CSS_KEY_NOT_ESTABLISHED ((NTSTATUS)0xC0000308) -#define STATUS_CSS_SCRAMBLED_SECTOR ((NTSTATUS)0xC0000309) -#define STATUS_CSS_REGION_MISMATCH ((NTSTATUS)0xC000030A) -#define STATUS_CSS_RESETS_EXHAUSTED ((NTSTATUS)0xC000030B) -#define STATUS_PKINIT_FAILURE ((NTSTATUS)0xC0000320) -#define STATUS_SMARTCARD_SUBSYSTEM_FAILURE ((NTSTATUS)0xC0000321) -#define STATUS_NO_KERB_KEY ((NTSTATUS)0xC0000322) -#define STATUS_HOST_DOWN ((NTSTATUS)0xC0000350) -#define STATUS_UNSUPPORTED_PREAUTH ((NTSTATUS)0xC0000351) -#define STATUS_EFS_ALG_BLOB_TOO_BIG ((NTSTATUS)0xC0000352) -#define STATUS_PORT_NOT_SET ((NTSTATUS)0xC0000353) -#define STATUS_DEBUGGER_INACTIVE ((NTSTATUS)0xC0000354) -#define STATUS_DS_VERSION_CHECK_FAILURE ((NTSTATUS)0xC0000355) -#define STATUS_AUDITING_DISABLED ((NTSTATUS)0xC0000356) -#define STATUS_PRENT4_MACHINE_ACCOUNT ((NTSTATUS)0xC0000357) -#define STATUS_DS_AG_CANT_HAVE_UNIVERSAL_MEMBER ((NTSTATUS)0xC0000358) -#define STATUS_INVALID_IMAGE_WIN_32 ((NTSTATUS)0xC0000359) -#define STATUS_INVALID_IMAGE_WIN_64 ((NTSTATUS)0xC000035A) -#define STATUS_BAD_BINDINGS ((NTSTATUS)0xC000035B) -#define STATUS_NETWORK_SESSION_EXPIRED ((NTSTATUS)0xC000035C) -#define STATUS_APPHELP_BLOCK ((NTSTATUS)0xC000035D) -#define STATUS_ALL_SIDS_FILTERED ((NTSTATUS)0xC000035E) -#define STATUS_NOT_SAFE_MODE_DRIVER ((NTSTATUS)0xC000035F) -#define STATUS_ACCESS_DISABLED_BY_POLICY_DEFAULT ((NTSTATUS)0xC0000361) -#define STATUS_ACCESS_DISABLED_BY_POLICY_PATH ((NTSTATUS)0xC0000362) -#define STATUS_ACCESS_DISABLED_BY_POLICY_PUBLISHER ((NTSTATUS)0xC0000363) -#define STATUS_ACCESS_DISABLED_BY_POLICY_OTHER ((NTSTATUS)0xC0000364) -#define STATUS_FAILED_DRIVER_ENTRY ((NTSTATUS)0xC0000365) -#define STATUS_DEVICE_ENUMERATION_ERROR ((NTSTATUS)0xC0000366) -#define STATUS_WAIT_FOR_OPLOCK ((NTSTATUS)0x00000367) -#define STATUS_MOUNT_POINT_NOT_RESOLVED ((NTSTATUS)0xC0000368) -#define STATUS_INVALID_DEVICE_OBJECT_PARAMETER ((NTSTATUS)0xC0000369) -#define STATUS_MCA_OCCURED ((NTSTATUS)0xC000036A) -#define STATUS_DRIVER_BLOCKED_CRITICAL ((NTSTATUS)0xC000036B) -#define STATUS_DRIVER_BLOCKED ((NTSTATUS)0xC000036C) -#define STATUS_DRIVER_DATABASE_ERROR ((NTSTATUS)0xC000036D) -#define STATUS_SYSTEM_HIVE_TOO_LARGE ((NTSTATUS)0xC000036E) -#define STATUS_INVALID_IMPORT_OF_NON_DLL ((NTSTATUS)0xC000036F) -#define STATUS_SMARTCARD_WRONG_PIN ((NTSTATUS)0xC0000380) -#define STATUS_SMARTCARD_CARD_BLOCKED ((NTSTATUS)0xC0000381) -#define STATUS_SMARTCARD_CARD_NOT_AUTHENTICATED ((NTSTATUS)0xC0000382) -#define STATUS_SMARTCARD_NO_CARD ((NTSTATUS)0xC0000383) -#define STATUS_SMARTCARD_NO_KEY_CONTAINER ((NTSTATUS)0xC0000384) -#define STATUS_SMARTCARD_NO_CERTIFICATE ((NTSTATUS)0xC0000385) -#define STATUS_SMARTCARD_NO_KEYSET ((NTSTATUS)0xC0000386) -#define STATUS_SMARTCARD_IO_ERROR ((NTSTATUS)0xC0000387) -#define STATUS_DOWNGRADE_DETECTED ((NTSTATUS)0xC0000388) -#define STATUS_SMARTCARD_CERT_REVOKED ((NTSTATUS)0xC0000389) -#define STATUS_ISSUING_CA_UNTRUSTED ((NTSTATUS)0xC000038A) -#define STATUS_REVOCATION_OFFLINE_C ((NTSTATUS)0xC000038B) -#define STATUS_PKINIT_CLIENT_FAILURE ((NTSTATUS)0xC000038C) -#define STATUS_SMARTCARD_CERT_EXPIRED ((NTSTATUS)0xC000038D) -#define STATUS_DRIVER_FAILED_PRIOR_UNLOAD ((NTSTATUS)0xC000038E) -#define STATUS_SMARTCARD_SILENT_CONTEXT ((NTSTATUS)0xC000038F) -#define STATUS_PER_USER_TRUST_QUOTA_EXCEEDED ((NTSTATUS)0xC0000401) -#define STATUS_ALL_USER_TRUST_QUOTA_EXCEEDED ((NTSTATUS)0xC0000402) -#define STATUS_USER_DELETE_TRUST_QUOTA_EXCEEDED ((NTSTATUS)0xC0000403) -#define STATUS_DS_NAME_NOT_UNIQUE ((NTSTATUS)0xC0000404) -#define STATUS_DS_DUPLICATE_ID_FOUND ((NTSTATUS)0xC0000405) -#define STATUS_DS_GROUP_CONVERSION_ERROR ((NTSTATUS)0xC0000406) -#define STATUS_VOLSNAP_PREPARE_HIBERNATE ((NTSTATUS)0xC0000407) -#define STATUS_USER2USER_REQUIRED ((NTSTATUS)0xC0000408) -#define STATUS_STACK_BUFFER_OVERRUN ((NTSTATUS)0xC0000409) -#define STATUS_NO_S4U_PROT_SUPPORT ((NTSTATUS)0xC000040A) -#define STATUS_CROSSREALM_DELEGATION_FAILURE ((NTSTATUS)0xC000040B) -#define STATUS_REVOCATION_OFFLINE_KDC ((NTSTATUS)0xC000040C) -#define STATUS_ISSUING_CA_UNTRUSTED_KDC ((NTSTATUS)0xC000040D) -#define STATUS_KDC_CERT_EXPIRED ((NTSTATUS)0xC000040E) -#define STATUS_KDC_CERT_REVOKED ((NTSTATUS)0xC000040F) -#define STATUS_PARAMETER_QUOTA_EXCEEDED ((NTSTATUS)0xC0000410) -#define STATUS_HIBERNATION_FAILURE ((NTSTATUS)0xC0000411) -#define STATUS_DELAY_LOAD_FAILED ((NTSTATUS)0xC0000412) -#define STATUS_AUTHENTICATION_FIREWALL_FAILED ((NTSTATUS)0xC0000413) -#define STATUS_VDM_DISALLOWED ((NTSTATUS)0xC0000414) -#define STATUS_HUNG_DISPLAY_DRIVER_THREAD ((NTSTATUS)0xC0000415) -#define STATUS_ASSERTION_FAILURE ((NTSTATUS)0xC0000420L) -#define STATUS_CALLBACK_POP_STACK ((NTSTATUS)0xC0000423) -#define STATUS_WOW_ASSERTION ((NTSTATUS)0xC0009898) - -#define RPC_NT_INVALID_STRING_BINDING ((NTSTATUS)0xC0020001) -#define RPC_NT_WRONG_KIND_OF_BINDING ((NTSTATUS)0xC0020002) -#define RPC_NT_INVALID_BINDING ((NTSTATUS)0xC0020003) -#define RPC_NT_PROTSEQ_NOT_SUPPORTED ((NTSTATUS)0xC0020004) -#define RPC_NT_INVALID_RPC_PROTSEQ ((NTSTATUS)0xC0020005) -#define RPC_NT_INVALID_STRING_UUID ((NTSTATUS)0xC0020006) -#define RPC_NT_INVALID_ENDPOINT_FORMAT ((NTSTATUS)0xC0020007) -#define RPC_NT_INVALID_NET_ADDR ((NTSTATUS)0xC0020008) -#define RPC_NT_NO_ENDPOINT_FOUND ((NTSTATUS)0xC0020009) -#define RPC_NT_INVALID_TIMEOUT ((NTSTATUS)0xC002000A) -#define RPC_NT_OBJECT_NOT_FOUND ((NTSTATUS)0xC002000B) -#define RPC_NT_ALREADY_REGISTERED ((NTSTATUS)0xC002000C) -#define RPC_NT_TYPE_ALREADY_REGISTERED ((NTSTATUS)0xC002000D) -#define RPC_NT_ALREADY_LISTENING ((NTSTATUS)0xC002000E) -#define RPC_NT_NO_PROTSEQS_REGISTERED ((NTSTATUS)0xC002000F) -#define RPC_NT_NOT_LISTENING ((NTSTATUS)0xC0020010) -#define RPC_NT_UNKNOWN_MGR_TYPE ((NTSTATUS)0xC0020011) -#define RPC_NT_UNKNOWN_IF ((NTSTATUS)0xC0020012) -#define RPC_NT_NO_BINDINGS ((NTSTATUS)0xC0020013) -#define RPC_NT_NO_PROTSEQS ((NTSTATUS)0xC0020014) -#define RPC_NT_CANT_CREATE_ENDPOINT ((NTSTATUS)0xC0020015) -#define RPC_NT_OUT_OF_RESOURCES ((NTSTATUS)0xC0020016) -#define RPC_NT_SERVER_UNAVAILABLE ((NTSTATUS)0xC0020017) -#define RPC_NT_SERVER_TOO_BUSY ((NTSTATUS)0xC0020018) -#define RPC_NT_INVALID_NETWORK_OPTIONS ((NTSTATUS)0xC0020019) -#define RPC_NT_NO_CALL_ACTIVE ((NTSTATUS)0xC002001A) -#define RPC_NT_CALL_FAILED ((NTSTATUS)0xC002001B) -#define RPC_NT_CALL_FAILED_DNE ((NTSTATUS)0xC002001C) -#define RPC_NT_PROTOCOL_ERROR ((NTSTATUS)0xC002001D) -#define RPC_NT_UNSUPPORTED_TRANS_SYN ((NTSTATUS)0xC002001F) -#define RPC_NT_UNSUPPORTED_TYPE ((NTSTATUS)0xC0020021) -#define RPC_NT_INVALID_TAG ((NTSTATUS)0xC0020022) -#define RPC_NT_INVALID_BOUND ((NTSTATUS)0xC0020023) -#define RPC_NT_NO_ENTRY_NAME ((NTSTATUS)0xC0020024) -#define RPC_NT_INVALID_NAME_SYNTAX ((NTSTATUS)0xC0020025) -#define RPC_NT_UNSUPPORTED_NAME_SYNTAX ((NTSTATUS)0xC0020026) -#define RPC_NT_UUID_NO_ADDRESS ((NTSTATUS)0xC0020028) -#define RPC_NT_DUPLICATE_ENDPOINT ((NTSTATUS)0xC0020029) -#define RPC_NT_UNKNOWN_AUTHN_TYPE ((NTSTATUS)0xC002002A) -#define RPC_NT_MAX_CALLS_TOO_SMALL ((NTSTATUS)0xC002002B) -#define RPC_NT_STRING_TOO_LONG ((NTSTATUS)0xC002002C) -#define RPC_NT_PROTSEQ_NOT_FOUND ((NTSTATUS)0xC002002D) -#define RPC_NT_PROCNUM_OUT_OF_RANGE ((NTSTATUS)0xC002002E) -#define RPC_NT_BINDING_HAS_NO_AUTH ((NTSTATUS)0xC002002F) -#define RPC_NT_UNKNOWN_AUTHN_SERVICE ((NTSTATUS)0xC0020030) -#define RPC_NT_UNKNOWN_AUTHN_LEVEL ((NTSTATUS)0xC0020031) -#define RPC_NT_INVALID_AUTH_IDENTITY ((NTSTATUS)0xC0020032) -#define RPC_NT_UNKNOWN_AUTHZ_SERVICE ((NTSTATUS)0xC0020033) -#define EPT_NT_INVALID_ENTRY ((NTSTATUS)0xC0020034) -#define EPT_NT_CANT_PERFORM_OP ((NTSTATUS)0xC0020035) -#define EPT_NT_NOT_REGISTERED ((NTSTATUS)0xC0020036) -#define RPC_NT_NOTHING_TO_EXPORT ((NTSTATUS)0xC0020037) -#define RPC_NT_INCOMPLETE_NAME ((NTSTATUS)0xC0020038) -#define RPC_NT_INVALID_VERS_OPTION ((NTSTATUS)0xC0020039) -#define RPC_NT_NO_MORE_MEMBERS ((NTSTATUS)0xC002003A) -#define RPC_NT_NOT_ALL_OBJS_UNEXPORTED ((NTSTATUS)0xC002003B) -#define RPC_NT_INTERFACE_NOT_FOUND ((NTSTATUS)0xC002003C) -#define RPC_NT_ENTRY_ALREADY_EXISTS ((NTSTATUS)0xC002003D) -#define RPC_NT_ENTRY_NOT_FOUND ((NTSTATUS)0xC002003E) -#define RPC_NT_NAME_SERVICE_UNAVAILABLE ((NTSTATUS)0xC002003F) -#define RPC_NT_INVALID_NAF_ID ((NTSTATUS)0xC0020040) -#define RPC_NT_CANNOT_SUPPORT ((NTSTATUS)0xC0020041) -#define RPC_NT_NO_CONTEXT_AVAILABLE ((NTSTATUS)0xC0020042) -#define RPC_NT_INTERNAL_ERROR ((NTSTATUS)0xC0020043) -#define RPC_NT_ZERO_DIVIDE ((NTSTATUS)0xC0020044) -#define RPC_NT_ADDRESS_ERROR ((NTSTATUS)0xC0020045) -#define RPC_NT_FP_DIV_ZERO ((NTSTATUS)0xC0020046) -#define RPC_NT_FP_UNDERFLOW ((NTSTATUS)0xC0020047) -#define RPC_NT_FP_OVERFLOW ((NTSTATUS)0xC0020048) -#define RPC_NT_CALL_IN_PROGRESS ((NTSTATUS)0xC0020049) -#define RPC_NT_NO_MORE_BINDINGS ((NTSTATUS)0xC002004A) -#define RPC_NT_GROUP_MEMBER_NOT_FOUND ((NTSTATUS)0xC002004B) -#define EPT_NT_CANT_CREATE ((NTSTATUS)0xC002004C) -#define RPC_NT_INVALID_OBJECT ((NTSTATUS)0xC002004D) -#define RPC_NT_NO_INTERFACES ((NTSTATUS)0xC002004F) -#define RPC_NT_CALL_CANCELLED ((NTSTATUS)0xC0020050) -#define RPC_NT_BINDING_INCOMPLETE ((NTSTATUS)0xC0020051) -#define RPC_NT_COMM_FAILURE ((NTSTATUS)0xC0020052) -#define RPC_NT_UNSUPPORTED_AUTHN_LEVEL ((NTSTATUS)0xC0020053) -#define RPC_NT_NO_PRINC_NAME ((NTSTATUS)0xC0020054) -#define RPC_NT_NOT_RPC_ERROR ((NTSTATUS)0xC0020055) -#define RPC_NT_SEC_PKG_ERROR ((NTSTATUS)0xC0020057) -#define RPC_NT_NOT_CANCELLED ((NTSTATUS)0xC0020058) -#define RPC_NT_INVALID_ASYNC_HANDLE ((NTSTATUS)0xC0020062) -#define RPC_NT_INVALID_ASYNC_CALL ((NTSTATUS)0xC0020063) - -#define RPC_NT_NO_MORE_ENTRIES ((NTSTATUS)0xC0030001) -#define RPC_NT_SS_CHAR_TRANS_OPEN_FAIL ((NTSTATUS)0xC0030002) -#define RPC_NT_SS_CHAR_TRANS_SHORT_FILE ((NTSTATUS)0xC0030003) -#define RPC_NT_SS_IN_NULL_CONTEXT ((NTSTATUS)0xC0030004) -#define RPC_NT_SS_CONTEXT_MISMATCH ((NTSTATUS)0xC0030005) -#define RPC_NT_SS_CONTEXT_DAMAGED ((NTSTATUS)0xC0030006) -#define RPC_NT_SS_HANDLES_MISMATCH ((NTSTATUS)0xC0030007) -#define RPC_NT_SS_CANNOT_GET_CALL_HANDLE ((NTSTATUS)0xC0030008) -#define RPC_NT_NULL_REF_POINTER ((NTSTATUS)0xC0030009) -#define RPC_NT_ENUM_VALUE_OUT_OF_RANGE ((NTSTATUS)0xC003000A) -#define RPC_NT_BYTE_COUNT_TOO_SMALL ((NTSTATUS)0xC003000B) -#define RPC_NT_BAD_STUB_DATA ((NTSTATUS)0xC003000C) -#define RPC_NT_INVALID_ES_ACTION ((NTSTATUS)0xC0030059) -#define RPC_NT_WRONG_ES_VERSION ((NTSTATUS)0xC003005A) -#define RPC_NT_WRONG_STUB_VERSION ((NTSTATUS)0xC003005B) -#define RPC_NT_INVALID_PIPE_OBJECT ((NTSTATUS)0xC003005C) -#define RPC_NT_INVALID_PIPE_OPERATION ((NTSTATUS)0xC003005D) -#define RPC_NT_WRONG_PIPE_VERSION ((NTSTATUS)0xC003005E) -#define RPC_NT_PIPE_CLOSED ((NTSTATUS)0xC003005F) -#define RPC_NT_PIPE_DISCIPLINE_ERROR ((NTSTATUS)0xC0030060) -#define RPC_NT_PIPE_EMPTY ((NTSTATUS)0xC0030061) - -#define STATUS_PNP_BAD_MPS_TABLE ((NTSTATUS)0xC0040035) -#define STATUS_PNP_TRANSLATION_FAILED ((NTSTATUS)0xC0040036) -#define STATUS_PNP_IRQ_TRANSLATION_FAILED ((NTSTATUS)0xC0040037) -#define STATUS_PNP_INVALID_ID ((NTSTATUS)0xC0040038) - -#define STATUS_ACPI_INVALID_OPCODE ((NTSTATUS)0xC0140001L) -#define STATUS_ACPI_STACK_OVERFLOW ((NTSTATUS)0xC0140002L) -#define STATUS_ACPI_ASSERT_FAILED ((NTSTATUS)0xC0140003L) -#define STATUS_ACPI_INVALID_INDEX ((NTSTATUS)0xC0140004L) -#define STATUS_ACPI_INVALID_ARGUMENT ((NTSTATUS)0xC0140005L) -#define STATUS_ACPI_FATAL ((NTSTATUS)0xC0140006L) -#define STATUS_ACPI_INVALID_SUPERNAME ((NTSTATUS)0xC0140007L) -#define STATUS_ACPI_INVALID_ARGTYPE ((NTSTATUS)0xC0140008L) -#define STATUS_ACPI_INVALID_OBJTYPE ((NTSTATUS)0xC0140009L) -#define STATUS_ACPI_INVALID_TARGETTYPE ((NTSTATUS)0xC014000AL) -#define STATUS_ACPI_INCORRECT_ARGUMENT_COUNT ((NTSTATUS)0xC014000BL) -#define STATUS_ACPI_ADDRESS_NOT_MAPPED ((NTSTATUS)0xC014000CL) -#define STATUS_ACPI_INVALID_EVENTTYPE ((NTSTATUS)0xC014000DL) -#define STATUS_ACPI_HANDLER_COLLISION ((NTSTATUS)0xC014000EL) -#define STATUS_ACPI_INVALID_DATA ((NTSTATUS)0xC014000FL) -#define STATUS_ACPI_INVALID_REGION ((NTSTATUS)0xC0140010L) -#define STATUS_ACPI_INVALID_ACCESS_SIZE ((NTSTATUS)0xC0140011L) -#define STATUS_ACPI_ACQUIRE_GLOBAL_LOCK ((NTSTATUS)0xC0140012L) -#define STATUS_ACPI_ALREADY_INITIALIZED ((NTSTATUS)0xC0140013L) -#define STATUS_ACPI_NOT_INITIALIZED ((NTSTATUS)0xC0140014L) -#define STATUS_ACPI_INVALID_MUTEX_LEVEL ((NTSTATUS)0xC0140015L) -#define STATUS_ACPI_MUTEX_NOT_OWNED ((NTSTATUS)0xC0140016L) -#define STATUS_ACPI_MUTEX_NOT_OWNER ((NTSTATUS)0xC0140017L) -#define STATUS_ACPI_RS_ACCESS ((NTSTATUS)0xC0140018L) -#define STATUS_ACPI_INVALID_TABLE ((NTSTATUS)0xC0140019L) -#define STATUS_ACPI_REG_HANDLER_FAILED ((NTSTATUS)0xC0140020L) -#define STATUS_ACPI_POWER_REQUEST_FAILED ((NTSTATUS)0xC0140021L) - -#define STATUS_CTX_WINSTATION_NAME_INVALID ((NTSTATUS)0xC00A0001) -#define STATUS_CTX_INVALID_PD ((NTSTATUS)0xC00A0002) -#define STATUS_CTX_PD_NOT_FOUND ((NTSTATUS)0xC00A0003) -#define STATUS_CTX_CLOSE_PENDING ((NTSTATUS)0xC00A0006) -#define STATUS_CTX_NO_OUTBUF ((NTSTATUS)0xC00A0007) -#define STATUS_CTX_MODEM_INF_NOT_FOUND ((NTSTATUS)0xC00A0008) -#define STATUS_CTX_INVALID_MODEMNAME ((NTSTATUS)0xC00A0009) -#define STATUS_CTX_RESPONSE_ERROR ((NTSTATUS)0xC00A000A) -#define STATUS_CTX_MODEM_RESPONSE_TIMEOUT ((NTSTATUS)0xC00A000B) -#define STATUS_CTX_MODEM_RESPONSE_NO_CARRIER ((NTSTATUS)0xC00A000C) -#define STATUS_CTX_MODEM_RESPONSE_NO_DIALTONE ((NTSTATUS)0xC00A000D) -#define STATUS_CTX_MODEM_RESPONSE_BUSY ((NTSTATUS)0xC00A000E) -#define STATUS_CTX_MODEM_RESPONSE_VOICE ((NTSTATUS)0xC00A000F) -#define STATUS_CTX_TD_ERROR ((NTSTATUS)0xC00A0010) -#define STATUS_CTX_LICENSE_CLIENT_INVALID ((NTSTATUS)0xC00A0012) -#define STATUS_CTX_LICENSE_NOT_AVAILABLE ((NTSTATUS)0xC00A0013) -#define STATUS_CTX_LICENSE_EXPIRED ((NTSTATUS)0xC00A0014) -#define STATUS_CTX_WINSTATION_NOT_FOUND ((NTSTATUS)0xC00A0015) -#define STATUS_CTX_WINSTATION_NAME_COLLISION ((NTSTATUS)0xC00A0016) -#define STATUS_CTX_WINSTATION_BUSY ((NTSTATUS)0xC00A0017) -#define STATUS_CTX_BAD_VIDEO_MODE ((NTSTATUS)0xC00A0018) -#define STATUS_CTX_GRAPHICS_INVALID ((NTSTATUS)0xC00A0022) -#define STATUS_CTX_NOT_CONSOLE ((NTSTATUS)0xC00A0024) -#define STATUS_CTX_CLIENT_QUERY_TIMEOUT ((NTSTATUS)0xC00A0026) -#define STATUS_CTX_CONSOLE_DISCONNECT ((NTSTATUS)0xC00A0027) -#define STATUS_CTX_CONSOLE_CONNECT ((NTSTATUS)0xC00A0028) -#define STATUS_CTX_SHADOW_DENIED ((NTSTATUS)0xC00A002A) -#define STATUS_CTX_WINSTATION_ACCESS_DENIED ((NTSTATUS)0xC00A002B) -#define STATUS_CTX_INVALID_WD ((NTSTATUS)0xC00A002E) -#define STATUS_CTX_WD_NOT_FOUND ((NTSTATUS)0xC00A002F) -#define STATUS_CTX_SHADOW_INVALID ((NTSTATUS)0xC00A0030) -#define STATUS_CTX_SHADOW_DISABLED ((NTSTATUS)0xC00A0031) -#define STATUS_RDP_PROTOCOL_ERROR ((NTSTATUS)0xC00A0032) -#define STATUS_CTX_CLIENT_LICENSE_NOT_SET ((NTSTATUS)0xC00A0033) -#define STATUS_CTX_CLIENT_LICENSE_IN_USE ((NTSTATUS)0xC00A0034) -#define STATUS_CTX_SHADOW_ENDED_BY_MODE_CHANGE ((NTSTATUS)0xC00A0035) -#define STATUS_CTX_SHADOW_NOT_RUNNING ((NTSTATUS)0xC00A0036) - -#define STATUS_CLUSTER_INVALID_NODE ((NTSTATUS)0xC0130001) -#define STATUS_CLUSTER_NODE_EXISTS ((NTSTATUS)0xC0130002) -#define STATUS_CLUSTER_JOIN_IN_PROGRESS ((NTSTATUS)0xC0130003) -#define STATUS_CLUSTER_NODE_NOT_FOUND ((NTSTATUS)0xC0130004) -#define STATUS_CLUSTER_LOCAL_NODE_NOT_FOUND ((NTSTATUS)0xC0130005) -#define STATUS_CLUSTER_NETWORK_EXISTS ((NTSTATUS)0xC0130006) -#define STATUS_CLUSTER_NETWORK_NOT_FOUND ((NTSTATUS)0xC0130007) -#define STATUS_CLUSTER_NETINTERFACE_EXISTS ((NTSTATUS)0xC0130008) -#define STATUS_CLUSTER_NETINTERFACE_NOT_FOUND ((NTSTATUS)0xC0130009) -#define STATUS_CLUSTER_INVALID_REQUEST ((NTSTATUS)0xC013000A) -#define STATUS_CLUSTER_INVALID_NETWORK_PROVIDER ((NTSTATUS)0xC013000B) -#define STATUS_CLUSTER_NODE_DOWN ((NTSTATUS)0xC013000C) -#define STATUS_CLUSTER_NODE_UNREACHABLE ((NTSTATUS)0xC013000D) -#define STATUS_CLUSTER_NODE_NOT_MEMBER ((NTSTATUS)0xC013000E) -#define STATUS_CLUSTER_JOIN_NOT_IN_PROGRESS ((NTSTATUS)0xC013000F) -#define STATUS_CLUSTER_INVALID_NETWORK ((NTSTATUS)0xC0130010) -#define STATUS_CLUSTER_NO_NET_ADAPTERS ((NTSTATUS)0xC0130011) -#define STATUS_CLUSTER_NODE_UP ((NTSTATUS)0xC0130012) -#define STATUS_CLUSTER_NODE_PAUSED ((NTSTATUS)0xC0130013) -#define STATUS_CLUSTER_NODE_NOT_PAUSED ((NTSTATUS)0xC0130014) -#define STATUS_CLUSTER_NO_SECURITY_CONTEXT ((NTSTATUS)0xC0130015) -#define STATUS_CLUSTER_NETWORK_NOT_INTERNAL ((NTSTATUS)0xC0130016) -#define STATUS_CLUSTER_POISONED ((NTSTATUS)0xC0130017) - -#define STATUS_SXS_SECTION_NOT_FOUND ((NTSTATUS)0xC0150001) -#define STATUS_SXS_CANT_GEN_ACTCTX ((NTSTATUS)0xC0150002) -#define STATUS_SXS_INVALID_ACTCTXDATA_FORMAT ((NTSTATUS)0xC0150003) -#define STATUS_SXS_ASSEMBLY_NOT_FOUND ((NTSTATUS)0xC0150004) -#define STATUS_SXS_MANIFEST_FORMAT_ERROR ((NTSTATUS)0xC0150005) -#define STATUS_SXS_MANIFEST_PARSE_ERROR ((NTSTATUS)0xC0150006) -#define STATUS_SXS_ACTIVATION_CONTEXT_DISABLED ((NTSTATUS)0xC0150007) -#define STATUS_SXS_KEY_NOT_FOUND ((NTSTATUS)0xC0150008) -#define STATUS_SXS_VERSION_CONFLICT ((NTSTATUS)0xC0150009) -#define STATUS_SXS_WRONG_SECTION_TYPE ((NTSTATUS)0xC015000A) -#define STATUS_SXS_THREAD_QUERIES_DISABLED ((NTSTATUS)0xC015000B) -#define STATUS_SXS_ASSEMBLY_MISSING ((NTSTATUS)0xC015000C) -#define STATUS_SXS_PROCESS_DEFAULT_ALREADY_SET ((NTSTATUS)0xC015000E) -#define STATUS_SXS_EARLY_DEACTIVATION ((NTSTATUS)0xC015000F) -#define STATUS_SXS_INVALID_DEACTIVATION ((NTSTATUS)0xC0150010) -#define STATUS_SXS_MULTIPLE_DEACTIVATION ((NTSTATUS)0xC0150011) -#define STATUS_SXS_SYSTEM_DEFAULT_ACTIVATION_CONTEXT_EMPTY ((NTSTATUS)0xC0150012) -#define STATUS_SXS_PROCESS_TERMINATION_REQUESTED ((NTSTATUS)0xC0150013) -#define STATUS_SXS_CORRUPT_ACTIVATION_STACK ((NTSTATUS)0xC0150014) -#define STATUS_SXS_CORRUPTION ((NTSTATUS)0xC0150015) +/* +* Debug codes +*/ -#endif /* WIN32_NO_STATUS */ +#define DBG_EXCEPTION_HANDLED ((NTSTATUS)0x00010001) +#define DBG_CONTINUE ((NTSTATUS)0x00010002) +#define DBG_REPLY_LATER ((NTSTATUS)0x40010001) +#define DBG_UNABLE_TO_PROVIDE_HANDLE ((NTSTATUS)0x40010002) +#define DBG_TERMINATE_THREAD ((NTSTATUS)0x40010003) +#define DBG_TERMINATE_PROCESS ((NTSTATUS)0x40010004) +#define DBG_CONTROL_C ((NTSTATUS)0x40010005) +#define DBG_PRINTEXCEPTION_C ((NTSTATUS)0x40010006) +#define DBG_RIPEXCEPTION ((NTSTATUS)0x40010007) +#define DBG_CONTROL_BREAK ((NTSTATUS)0x40010008) +#define DBG_COMMAND_EXCEPTION ((NTSTATUS)0x40010009) +#define DBG_EXCEPTION_NOT_HANDLED ((NTSTATUS)0x80010001) +#define DBG_NO_STATE_CHANGE ((NTSTATUS)0xC0010001) +#define DBG_APP_NOT_IDLE ((NTSTATUS)0xC0010002) #ifdef __cplusplus } #endif -#endif /* _NTSTATUS_ */ +#endif diff --git a/reactos/include/psdk/usbioctl.h b/reactos/include/psdk/usbioctl.h index d9aebda5d3f..69541cb0052 100644 --- a/reactos/include/psdk/usbioctl.h +++ b/reactos/include/psdk/usbioctl.h @@ -665,8 +665,6 @@ typedef struct _USB_DEVICE_PERFORMANCE_INFO { #include -#endif /* USB_KERNEL_IOCTL */ - #ifdef __cplusplus } #endif diff --git a/reactos/include/psdk/winbase.h b/reactos/include/psdk/winbase.h index 6b38dacb365..b7a5fd2776d 100644 --- a/reactos/include/psdk/winbase.h +++ b/reactos/include/psdk/winbase.h @@ -1505,14 +1505,14 @@ DWORD WINAPI GetFirmwareEnvironmentVariableA(LPCSTR,LPCSTR,PVOID,DWORD); DWORD WINAPI GetFirmwareEnvironmentVariableW(LPCWSTR,LPCWSTR,PVOID,DWORD); #endif BOOL WINAPI FlushFileBuffers(HANDLE); -BOOL WINAPI FlushInstructionCache(HANDLE,LPCVOID,SIZE_T); -BOOL WINAPI FlushViewOfFile(LPCVOID,SIZE_T); +BOOL WINAPI FlushInstructionCache(HANDLE,PCVOID,DWORD); +BOOL WINAPI FlushViewOfFile(PCVOID,SIZE_T); DWORD WINAPI FlsAlloc(PFLS_CALLBACK_FUNCTION); PVOID WINAPI FlsGetValue(DWORD); BOOL WINAPI FlsSetValue(DWORD,PVOID); BOOL WINAPI FlsFree(DWORD); -DWORD WINAPI FormatMessageA(DWORD,LPCVOID,DWORD,DWORD,LPSTR,DWORD,va_list*); -DWORD WINAPI FormatMessageW(DWORD,LPCVOID,DWORD,DWORD,LPWSTR,DWORD,va_list*); +DWORD WINAPI FormatMessageA(DWORD,PCVOID,DWORD,DWORD,LPSTR,DWORD,va_list*); +DWORD WINAPI FormatMessageW(DWORD,PCVOID,DWORD,DWORD,LPWSTR,DWORD,va_list*); BOOL WINAPI FreeEnvironmentStringsA(LPSTR); BOOL WINAPI FreeEnvironmentStringsW(LPWSTR); BOOL WINAPI FreeLibrary(HMODULE); @@ -1763,7 +1763,7 @@ UINT WINAPI GlobalFlags(HGLOBAL); /* Obsolete: Has no effect. */ HGLOBAL WINAPI GlobalFree(HGLOBAL); UINT WINAPI GlobalGetAtomNameA(ATOM,LPSTR,int); UINT WINAPI GlobalGetAtomNameW(ATOM,LPWSTR,int); -HGLOBAL WINAPI GlobalHandle(LPCVOID); +HGLOBAL WINAPI GlobalHandle(PCVOID); LPVOID WINAPI GlobalLock(HGLOBAL); VOID WINAPI GlobalMemoryStatus(LPMEMORYSTATUS); #if (_WIN32_WINNT >= 0x0500) @@ -1789,9 +1789,9 @@ PVOID WINAPI HeapReAlloc(HANDLE,DWORD,PVOID,DWORD); #if (_WIN32_WINNT >= 0x0501) BOOL WINAPI HeapSetInformation(HANDLE,HEAP_INFORMATION_CLASS,PVOID,SIZE_T); #endif -SIZE_T WINAPI HeapSize(HANDLE,DWORD,LPCVOID); +DWORD WINAPI HeapSize(HANDLE,DWORD,PCVOID); BOOL WINAPI HeapUnlock(HANDLE); -BOOL WINAPI HeapValidate(HANDLE,DWORD,LPCVOID); +BOOL WINAPI HeapValidate(HANDLE,DWORD,PCVOID); BOOL WINAPI HeapWalk(HANDLE,LPPROCESS_HEAP_ENTRY); BOOL WINAPI ImpersonateAnonymousToken(HANDLE); BOOL WINAPI ImpersonateLoggedOnUser(HANDLE); @@ -1948,9 +1948,9 @@ InterlockedOr_Inline(IN OUT volatile LONG *Target, #endif /* __INTERLOCKED_DECLARED */ BOOL WINAPI IsBadCodePtr(FARPROC); -BOOL WINAPI IsBadHugeReadPtr(CONST VOID*,UINT_PTR); +BOOL WINAPI IsBadHugeReadPtr(PCVOID,UINT_PTR); BOOL WINAPI IsBadHugeWritePtr(PVOID,UINT_PTR); -BOOL WINAPI IsBadReadPtr(CONST VOID*,UINT_PTR); +BOOL WINAPI IsBadReadPtr(PCVOID,UINT_PTR); BOOL WINAPI IsBadStringPtrA(LPCSTR,UINT_PTR); BOOL WINAPI IsBadStringPtrW(LPCWSTR,UINT_PTR); BOOL WINAPI IsBadWritePtr(PVOID,UINT_PTR); @@ -1960,7 +1960,7 @@ BOOL WINAPI IsProcessInJob(HANDLE,HANDLE,PBOOL); #endif BOOL WINAPI IsProcessorFeaturePresent(DWORD); BOOL WINAPI IsSystemResumeAutomatic(void); -BOOL WINAPI IsTextUnicode(CONST VOID*,int,LPINT); +BOOL WINAPI IsTextUnicode(PCVOID,int,LPINT); #if (_WIN32_WINNT >= 0x0600) BOOL WINAPI IsThreadAFiber(VOID); #endif @@ -2100,7 +2100,7 @@ BOOL WINAPI ReadEventLogW(HANDLE,DWORD,DWORD,PVOID,DWORD,DWORD *,DWORD *); BOOL WINAPI ReadFile(HANDLE,PVOID,DWORD,PDWORD,LPOVERLAPPED); BOOL WINAPI ReadFileEx(HANDLE,PVOID,DWORD,LPOVERLAPPED,LPOVERLAPPED_COMPLETION_ROUTINE); BOOL WINAPI ReadFileScatter(HANDLE,FILE_SEGMENT_ELEMENT*,DWORD,LPDWORD,LPOVERLAPPED); -BOOL WINAPI ReadProcessMemory(HANDLE,LPCVOID,LPVOID,SIZE_T,PSIZE_T); +BOOL WINAPI ReadProcessMemory(HANDLE,PCVOID,PVOID,SIZE_T,PSIZE_T); #if (_WIN32_WINNT >= 0x0600) VOID WINAPI RecoveryFinished(BOOL); HRESULT WINAPI RecoveryInProgress(OUT PBOOL); @@ -2301,8 +2301,8 @@ VOID WINAPI WakeConditionVariable(PCONDITION_VARIABLE); VOID WINAPI WakeAllConditionVariable(PCONDITION_VARIABLE); #endif BOOL WINAPI WinLoadTrustProvider(GUID*); -BOOL WINAPI WriteFile(HANDLE,LPCVOID,DWORD,LPDWORD,LPOVERLAPPED); -BOOL WINAPI WriteFileEx(HANDLE,LPCVOID,DWORD,LPOVERLAPPED,LPOVERLAPPED_COMPLETION_ROUTINE); +BOOL WINAPI WriteFile(HANDLE,PCVOID,DWORD,PDWORD,LPOVERLAPPED); +BOOL WINAPI WriteFileEx(HANDLE,PCVOID,DWORD,LPOVERLAPPED,LPOVERLAPPED_COMPLETION_ROUTINE); BOOL WINAPI WriteFileGather(HANDLE,FILE_SEGMENT_ELEMENT*,DWORD,LPDWORD,LPOVERLAPPED); BOOL WINAPI WritePrivateProfileSectionA(LPCSTR,LPCSTR,LPCSTR); BOOL WINAPI WritePrivateProfileSectionW(LPCWSTR,LPCWSTR,LPCWSTR); diff --git a/reactos/include/psdk/wincon.h b/reactos/include/psdk/wincon.h index a7916b46834..f2dd6fa6f95 100644 --- a/reactos/include/psdk/wincon.h +++ b/reactos/include/psdk/wincon.h @@ -223,8 +223,8 @@ BOOL WINAPI SetConsoleTextAttribute(HANDLE,WORD); BOOL WINAPI SetConsoleTitleA(LPCSTR); BOOL WINAPI SetConsoleTitleW(LPCWSTR); BOOL WINAPI SetConsoleWindowInfo(HANDLE,BOOL,const SMALL_RECT*); -BOOL WINAPI WriteConsoleA(HANDLE,CONST VOID*,DWORD,LPDWORD,LPVOID); -BOOL WINAPI WriteConsoleW(HANDLE,CONST VOID*,DWORD,LPDWORD,LPVOID); +BOOL WINAPI WriteConsoleA(HANDLE,PCVOID,DWORD,PDWORD,PVOID); +BOOL WINAPI WriteConsoleW(HANDLE,PCVOID,DWORD,PDWORD,PVOID); BOOL WINAPI WriteConsoleInputA(HANDLE,const INPUT_RECORD*,DWORD,PDWORD); BOOL WINAPI WriteConsoleInputW(HANDLE,const INPUT_RECORD*,DWORD,PDWORD); BOOL WINAPI WriteConsoleOutputA(HANDLE,const CHAR_INFO*,COORD,COORD,PSMALL_RECT); diff --git a/reactos/include/psdk/windef.h b/reactos/include/psdk/windef.h index bcd7c4dcd76..97ccf73368a 100644 --- a/reactos/include/psdk/windef.h +++ b/reactos/include/psdk/windef.h @@ -305,7 +305,7 @@ typedef long *LPLONG; typedef int *LPLONG; #endif typedef DWORD *PDWORD,*LPDWORD; -typedef CONST void *LPCVOID; +typedef CONST void *PCVOID,*LPCVOID; typedef unsigned int UINT,*PUINT,*LPUINT; diff --git a/reactos/include/psdk/wingdi.h b/reactos/include/psdk/wingdi.h index a4338d2d64a..b7bd62b1aae 100644 --- a/reactos/include/psdk/wingdi.h +++ b/reactos/include/psdk/wingdi.h @@ -2831,7 +2831,7 @@ HENHMETAFILE WINAPI CopyEnhMetaFileA(HENHMETAFILE,LPCSTR); HENHMETAFILE WINAPI CopyEnhMetaFileW(HENHMETAFILE,LPCWSTR); HMETAFILE WINAPI CopyMetaFileA(HMETAFILE,LPCSTR); HMETAFILE WINAPI CopyMetaFileW(HMETAFILE,LPCWSTR); -HBITMAP WINAPI CreateBitmap(int,int,UINT,UINT,CONST VOID*); +HBITMAP WINAPI CreateBitmap(int,int,UINT,UINT,PCVOID); HBITMAP WINAPI CreateBitmapIndirect(const BITMAP*); HBRUSH WINAPI CreateBrushIndirect(const LOGBRUSH*); HCOLORSPACE WINAPI CreateColorSpaceA(LPLOGCOLORSPACEA); @@ -2840,9 +2840,9 @@ HBITMAP WINAPI CreateCompatibleBitmap(HDC,int,int); HDC WINAPI CreateCompatibleDC(HDC); HDC WINAPI CreateDCA(LPCSTR,LPCSTR,LPCSTR,const DEVMODEA*); HDC WINAPI CreateDCW(LPCWSTR,LPCWSTR,LPCWSTR,const DEVMODEW*); -HBITMAP WINAPI CreateDIBitmap(HDC,CONST BITMAPINFOHEADER*,DWORD,CONST VOID*,CONST BITMAPINFO*,UINT); +HBITMAP WINAPI CreateDIBitmap(HDC,const BITMAPINFOHEADER*,DWORD,PCVOID,const BITMAPINFO*,UINT); HBRUSH WINAPI CreateDIBPatternBrush(HGLOBAL,UINT); -HBRUSH WINAPI CreateDIBPatternBrushPt(CONST VOID*,UINT); +HBRUSH WINAPI CreateDIBPatternBrushPt(PCVOID,UINT); HBITMAP WINAPI CreateDIBSection(HDC,const BITMAPINFO*,UINT,PVOID*,HANDLE,DWORD); HBITMAP WINAPI CreateDiscardableBitmap(HDC,int,int); HRGN WINAPI CreateEllipticRgn(int,int,int,int); @@ -3094,7 +3094,7 @@ HGDIOBJ WINAPI SelectObject(HDC,HGDIOBJ); HPALETTE WINAPI SelectPalette(HDC,HPALETTE,BOOL); int WINAPI SetAbortProc(HDC,ABORTPROC); int WINAPI SetArcDirection(HDC,int); -LONG WINAPI SetBitmapBits(HBITMAP,DWORD,CONST VOID*); +LONG WINAPI SetBitmapBits(HBITMAP,DWORD,PCVOID); BOOL WINAPI SetBitmapDimensionEx(HBITMAP,int,int,LPSIZE); COLORREF WINAPI SetBkColor(HDC,COLORREF); int WINAPI SetBkMode(HDC,int); @@ -3108,8 +3108,8 @@ COLORREF WINAPI SetDCPenColor(HDC,COLORREF); #endif BOOL WINAPI SetDeviceGammaRamp(HDC,PVOID); UINT WINAPI SetDIBColorTable(HDC,UINT,UINT,const RGBQUAD*); -int WINAPI SetDIBits(HDC,HBITMAP,UINT,UINT,CONST VOID*,CONST BITMAPINFO*,UINT); -int WINAPI SetDIBitsToDevice(HDC,int,int,DWORD,DWORD,int,int,UINT,UINT,CONST VOID*,CONST BITMAPINFO*,UINT); +int WINAPI SetDIBits(HDC,HBITMAP,UINT,UINT,PCVOID,const BITMAPINFO*,UINT); +int WINAPI SetDIBitsToDevice(HDC,int,int,DWORD,DWORD,int,int,UINT,UINT,PCVOID,const BITMAPINFO*,UINT); HENHMETAFILE WINAPI SetEnhMetaFileBits(UINT,const BYTE*); int WINAPI SetGraphicsMode(HDC,int); int WINAPI SetICMMode(HDC,int); diff --git a/reactos/include/psdk/winnt.h b/reactos/include/psdk/winnt.h index f856b079970..bd0fac136b9 100644 --- a/reactos/include/psdk/winnt.h +++ b/reactos/include/psdk/winnt.h @@ -3411,12 +3411,6 @@ typedef LONG struct _EXCEPTION_POINTERS *ExceptionInfo ); -typedef struct _GROUP_AFFINITY { - KAFFINITY Mask; - WORD Group; - WORD Reserved[3]; -} GROUP_AFFINITY, *PGROUP_AFFINITY; - typedef struct _EVENTLOGRECORD { DWORD Length; DWORD Reserved; diff --git a/reactos/include/psdk/winuser.h b/reactos/include/psdk/winuser.h index 563904bcbd7..57c1ac13aac 100644 --- a/reactos/include/psdk/winuser.h +++ b/reactos/include/psdk/winuser.h @@ -3879,7 +3879,7 @@ int WINAPI CountClipboardFormats(void); HACCEL WINAPI CreateAcceleratorTableA(LPACCEL,int); HACCEL WINAPI CreateAcceleratorTableW(LPACCEL,int); BOOL WINAPI CreateCaret(HWND,HBITMAP,int,int); -HCURSOR WINAPI CreateCursor(HINSTANCE,int,int,int,int,CONST VOID*,CONST VOID*); +HCURSOR WINAPI CreateCursor(HINSTANCE,int,int,int,int,PCVOID,PCVOID); #if defined(_WINGDI_) && !defined(NOGDI) HDESK WINAPI CreateDesktopA(LPCSTR,LPCSTR,LPDEVMODEA,DWORD,ACCESS_MASK,LPSECURITY_ATTRIBUTES); HDESK WINAPI CreateDesktopW(LPCWSTR,LPCWSTR,LPDEVMODEW,DWORD,ACCESS_MASK,LPSECURITY_ATTRIBUTES); diff --git a/reactos/include/reactos/idl/pnp.idl b/reactos/include/reactos/idl/pnp.idl index ff5f5cca14c..44fd06a9654 100644 --- a/reactos/include/reactos/idl/pnp.idl +++ b/reactos/include/reactos/idl/pnp.idl @@ -16,13 +16,6 @@ const unsigned long PNP_MAX_BUFFER_SIZE = 16000000; cpp_quote("#ifndef _CFGMGR32_H_") typedef unsigned long RESOURCEID; - -typedef struct _HWPROFILEINFO { - DWORD HWPI_ulHWProfile; - WCHAR HWPI_szFriendlyName[80]; - DWORD HWPI_dwFlags; -} HWPROFILEINFO; - cpp_quote("#endif") typedef unsigned long DEVPROPTYPE; typedef [range(0, PNP_MAX_PROP_SIZE)] unsigned long PNP_PROP_SIZE; @@ -249,6 +242,12 @@ typedef struct _DEVPROPKEY { DWORD pid; } DEVPROPKEY; +typedef struct _HWPROFILEINFO { + DWORD HWPI_ulHWProfile; + WCHAR HWPI_szFriendlyName[80]; + DWORD HWPI_dwFlags; +} HWPROFILEINFO; + [ uuid (809F4e40-A03D-11CE-8F69-08003E30051B), version(1.0), diff --git a/reactos/include/reactos/wine/cfgmgr32.h b/reactos/include/reactos/wine/cfgmgr32.h new file mode 100644 index 00000000000..7837f2a485b --- /dev/null +++ b/reactos/include/reactos/wine/cfgmgr32.h @@ -0,0 +1,373 @@ +/* + * Copyright (C) 2005 Mike McCormack + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef _CFGMGR32_H_ +#define _CFGMGR32_H_ + +/* cfgmgr32 doesn't use the normal convention, it adds an underscore before A/W */ +#ifdef __WINESRC__ +# define DECL_WINELIB_CFGMGR32_TYPE_AW(type) /* nothing */ +#else /* __WINESRC__ */ +# define DECL_WINELIB_CFGMGR32_TYPE_AW(type) typedef WINELIB_NAME_AW(type##_) type; +#endif /* __WINESRC__ */ + +typedef DWORD CONFIGRET; +typedef HANDLE HMACHINE; +typedef HMACHINE *PHMACHINE; +typedef DWORD DEVINST; +typedef DEVINST *PDEVINST; +typedef DWORD DEVNODE; +typedef DEVNODE *PDEVNODE; +typedef ULONG REGDISPOSITION; +typedef DWORD_PTR LOG_CONF; +typedef LOG_CONF *PLOG_CONF; +typedef ULONG PRIORITY; +typedef PRIORITY *PPRIORITY; + + +typedef CHAR *DEVINSTID_A; +typedef WCHAR *DEVINSTID_W; +DECL_WINELIB_CFGMGR32_TYPE_AW(DEVINSTID) + +#define CR_SUCCESS 0x00000000 +#define CR_OUT_OF_MEMORY 0x00000002 +#define CR_INVALID_POINTER 0x00000003 +#define CR_INVALID_FLAG 0x00000004 +#define CR_INVALID_DEVNODE 0x00000005 +#define CR_INVALID_DEVINST CR_INVALID_DEVNODE +#define CR_INVALID_LOG_CONF 0x00000007 +#define CR_NO_SUCH_DEVNODE 0x0000000D +#define CR_NO_SUCH_DEVINST CR_NO_SUCH_DEVNODE +#define CR_FAILURE 0x00000013 +#define CR_BUFFER_SMALL 0x0000001A +#define CR_REGISTRY_ERROR 0x0000001D +#define CR_INVALID_DEVICE_ID 0x0000001E +#define CR_INVALID_DATA 0x0000001F +#define CR_NO_SUCH_VALUE 0x00000025 +#define CR_INVALID_PRIORITY 0x00000027 +#define CR_NO_SUCH_REGISTRY_KEY 0x0000002E +#define CR_INVALID_MACHINENAME 0x0000002F +#define CR_ACCESS_DENIED 0x00000033 +#define CR_CALL_NOT_IMPLEMENTED 0x00000034 +#define CR_INVALID_PROPERTY 0x00000035 + +#define MAX_CLASS_NAME_LEN 32 +#define MAX_GUID_STRING_LEN 39 +#define MAX_PROFILE_LEN 80 +#define MAX_DEVICE_ID_LEN 200 +#define MAX_DEVNODE_ID_LEN MAX_DEVICE_ID_LEN + +/* Disposition values for CM_Open_Class_Key[_Ex] */ +#define RegDisposition_OpenAlways 0x00000000 +#define RegDisposition_OpenExisting 0x00000001 +#define RegDisposition_Bits 0x00000001 + +/* ulFlags for CM_Add_ID[_Ex] */ +#define CM_ADD_ID_HARDWARE 0x00000000 +#define CM_ADD_ID_COMPATIBLE 0x00000001 +#define CM_ADD_ID_BITS 0x00000001 + +/* ulFlags for CM_Open_Class_Key[_Ex] */ +#define CM_OPEN_CLASS_KEY_INSTALLER 0x00000000 +#define CM_OPEN_CLASS_KEY_INTERFACE 0x00000001 +#define CM_OPEN_CLASS_KEY_BITS 0x00000001 + +/* ulFlags for CM_Locate_DevNode[_Ex] */ +#define CM_LOCATE_DEVNODE_NORMAL 0x00000000 +#define CM_LOCATE_DEVNODE_PHANTOM 0x00000001 +#define CM_LOCATE_DEVNODE_CANCELREMOVE 0x00000002 +#define CM_LOCATE_DEVNODE_NOVALIDATION 0x00000004 +#define CM_LOCATE_DEVNODE_BITS 0x00000007 + +#define CM_LOCATE_DEVINST_NORMAL CM_LOCATE_DEVNODE_NORMAL +#define CM_LOCATE_DEVINST_PHANTOM CM_LOCATE_DEVNODE_PHANTOM +#define CM_LOCATE_DEVINST_CANCELREMOVE CM_LOCATE_DEVNODE_CANCELREMOVE +#define CM_LOCATE_DEVINST_NOVALIDATION CM_LOCATE_DEVNODE_NOVALIDATION +#define CM_LOCATE_DEVINST_BITS CM_LOCATE_DEVNODE_BITS + +/* ulFlags for CM_Set_DevNode_Problem[_Ex] */ +#define CM_SET_DEVNODE_PROBLEM_NORMAL 0x00000000 +#define CM_SET_DEVNODE_PROBLEM_OVERRIDE 0x00000001 +#define CM_SET_DEVNODE_PROBLEM_BITS 0x00000001 + +#define CM_SET_DEVINST_PROBLEM_NORMAL CM_SET_DEVNODE_PROBLEM_NORMAL +#define CM_SET_DEVINST_PROBLEM_OVERRIDE CM_SET_DEVNODE_PROBLEM_OVERRIDE +#define CM_SET_DEVINST_PROBLEM_BITS CM_SET_DEVNODE_PROBLEM_BITS + +/* Properties for CM_Get/Set_DevNode_Registry_Property[_Ex]A/W */ +#define CM_DRP_DEVICEDESC 0x00000001 +#define CM_DRP_HARDWAREID 0x00000002 +#define CM_DRP_COMPATIBLEIDS 0x00000003 +#define CM_DRP_UNUSED0 0x00000004 +#define CM_DRP_SERVICE 0x00000005 +#define CM_DRP_UNUSED1 0x00000006 +#define CM_DRP_UNUSED2 0x00000007 +#define CM_DRP_CLASS 0x00000008 +#define CM_DRP_CLASSGUID 0x00000009 +#define CM_DRP_DRIVER 0x0000000A +#define CM_DRP_CONFIGFLAGS 0x0000000B +#define CM_DRP_MFG 0x0000000C +#define CM_DRP_FRIENDLYNAME 0x0000000D +#define CM_DRP_LOCATION_INFORMATION 0x0000000E +#define CM_DRP_PHYSICAL_DEVICE_OBJECT_NAME 0x0000000F +#define CM_DRP_CAPABILITIES 0x00000010 +#define CM_DRP_UI_NUMBER 0x00000011 +#define CM_DRP_UPPERFILTERS 0x00000012 +#define CM_DRP_LOWERFILTERS 0x00000013 +#define CM_DRP_BUSTYPEGUID 0x00000014 +#define CM_DRP_LEGACYBUSTYPE 0x00000015 +#define CM_DRP_BUSNUMBER 0x00000016 +#define CM_DRP_ENUMERATOR_NAME 0x00000017 + +#define CM_DRP_MIN 0x00000001 +#define CM_DRP_MAX 0x00000017 + +/* ulFlags for CM_Delete_Class_Key[_Ex] */ +#define CM_DELETE_CLASS_ONLY 0x00000000 +#define CM_DELETE_CLASS_SUBKEYS 0x00000001 +#define CM_DELETE_CLASS_BITS 0x00000001 + +/* ulFlags for CM_Get_Device_ID_List and CM_Get_Device_ID_List_Size */ +#define CM_GETIDLIST_FILTER_NONE (0x00000000) +#define CM_GETIDLIST_FILTER_ENUMERATOR (0x00000001) +#define CM_GETIDLIST_FILTER_SERVICE (0x00000002) +#define CM_GETIDLIST_FILTER_EJECTRELATIONS (0x00000004) +#define CM_GETIDLIST_FILTER_REMOVALRELATIONS (0x00000008) +#define CM_GETIDLIST_FILTER_POWERRELATIONS (0x00000010) +#define CM_GETIDLIST_FILTER_BUSRELATIONS (0x00000020) +#define CM_GETIDLIST_DONOTGENERATE (0x10000040) +#define CM_GETIDLIST_FILTER_BITS (0x1000007F) + +/* ulFlags for CM_Reenumerate_DevNode[_Ex] */ +#define CM_REENUMERATE_NORMAL 0x00000000 +#define CM_REENUMERATE_SYNCHRONOUS 0x00000001 +#define CM_REENUMERATE_RETRY_INSTALLATION 0x00000002 +#define CM_REENUMERATE_ASYNCHRONOUS 0x00000004 +#define CM_REENUMERATE_BITS 0x00000007 + +/* ulFlags for CM_Run_Detection[_Ex] */ +#define CM_DETECT_NEW_PROFILE 0x00000001 +#define CM_DETECT_CRASHED 0x00000002 +#define CM_DETECT_HWPROF_FIRST_BOOT 0x00000004 +#define CM_DETECT_RUN 0x80000000 +#define CM_DETECT_BITS 0x80000007 + +/* ulFlags for CM_Setup_DevInst[_Ex] */ +#define CM_SETUP_DEVNODE_READY 0x00000000 +#define CM_SETUP_DEVINST_READY CM_SETUP_DEVNODE_READY +#define CM_SETUP_DOWNLOAD 0x00000001 +#define CM_SETUP_WRITE_LOG_CONFS 0x00000002 +#define CM_SETUP_PROP_CHANGE 0x00000003 +#define CM_SETUP_DEVNODE_RESET 0x00000004 +#define CM_SETUP_DEVINST_RESET CM_SETUP_DEVNODE_RESET +#define CM_SETUP_BITS 0x00000007 + +/* ulFlags for CM_Create_DevNode[_Ex]A/W */ +#define CM_CREATE_DEVNODE_NORMAL 0x00000000 +#define CM_CREATE_DEVNODE_NO_WAIT_INSTALL 0x00000001 +#define CM_CREATE_DEVNODE_PHANTOM 0x00000002 +#define CM_CREATE_DEVNODE_GENERATE_ID 0x00000004 +#define CM_CREATE_DEVNODE_DO_NOT_INSTALL 0x00000008 +#define CM_CREATE_DEVNODE_BITS 0x0000000F + +#define CM_CREATE_DEVINST_NORMAL CM_CREATE_DEVNODE_NORMAL +#define CM_CREATE_DEVINST_NO_WAIT_INSTALL CM_CREATE_DEVNODE_NO_WAIT_INSTALL +#define CM_CREATE_DEVINST_PHANTOM CM_CREATE_DEVNODE_PHANTOM +#define CM_CREATE_DEVINST_GENERATE_ID CM_CREATE_DEVNODE_GENERATE_ID +#define CM_CREATE_DEVINST_DO_NOT_INSTALL CM_CREATE_DEVNODE_DO_NOT_INSTALL +#define CM_CREATE_DEVINST_BITS CM_CREATE_DEVNODE_BITS + +/* ulFlags for CM_Set_HW_Prof_Flags[_Ex]A/W */ +#define CM_SET_HW_PROF_FLAGS_UI_NOT_OK 0x00000001 +#define CM_SET_HW_PROF_FLAGS_BITS 0x00000001 + +/* ulFlags for Log_Conf functions */ +#define BASIC_LOG_CONF 0x00000000 +#define FILTERED_LOG_CONF 0x00000001 +#define ALLOC_LOG_CONF 0x00000002 +#define BOOT_LOG_CONF 0x00000003 +#define FORCED_LOG_CONF 0x00000004 +#define OVERRIDE_LOG_CONF 0x00000005 +#define NUM_LOG_CONF 0x00000006 +#define LOG_CONF_BITS 0x00000007 + +#define PRIORITY_EQUAL_FIRST 0x00000008 +#define PRIORITY_EQUAL_LAST 0x00000000 +#define PRIORITY_BIT 0x00000008 + +#define CMP_MAGIC 0x01234567 + + +CONFIGRET WINAPI CMP_Init_Detection( DWORD ); +CONFIGRET WINAPI CMP_Report_LogOn( DWORD, DWORD ); + +CONFIGRET WINAPI CM_Add_Empty_Log_Conf( PLOG_CONF, DEVINST, PRIORITY, ULONG ); +CONFIGRET WINAPI CM_Add_Empty_Log_Conf_Ex( PLOG_CONF, DEVINST, PRIORITY, ULONG, HMACHINE ); +CONFIGRET WINAPI CM_Add_IDA( DEVINST, PSTR, ULONG ); +CONFIGRET WINAPI CM_Add_IDW( DEVINST, PWSTR, ULONG ); +#define CM_Add_ID WINELIB_NAME_AW(CM_Add_ID) +CONFIGRET WINAPI CM_Add_ID_ExA( DEVINST, PSTR, ULONG, HMACHINE ); +CONFIGRET WINAPI CM_Add_ID_ExW( DEVINST, PWSTR, ULONG, HMACHINE ); +#define CM_Add_ID_Ex WINELIB_NAME_AW(CM_Add_ID_Ex) +CONFIGRET WINAPI CM_Connect_MachineA( PCSTR, PHMACHINE ); +CONFIGRET WINAPI CM_Connect_MachineW( PCWSTR, PHMACHINE ); +#define CM_Connect_Machine WINELIB_NAME_AW(CM_Connect_Machine) +CONFIGRET WINAPI CM_Create_DevNodeA( PDEVINST, DEVINSTID_A, DEVINST, ULONG ); +CONFIGRET WINAPI CM_Create_DevNodeW( PDEVINST, DEVINSTID_W, DEVINST, ULONG ); +#define CM_Create_DevNode WINELIB_NAME_AW(CM_Create_DevNode) +CONFIGRET WINAPI CM_Create_DevNode_ExA( PDEVINST, DEVINSTID_A, DEVINST, ULONG, HANDLE ); +CONFIGRET WINAPI CM_Create_DevNode_ExW( PDEVINST, DEVINSTID_W, DEVINST, ULONG, HANDLE ); +#define CM_Create_DevNode_Ex WINELIB_NAME_AW(CM_Create_DevNode_Ex) +CONFIGRET WINAPI CM_Delete_Class_Key( LPGUID, ULONG ); +CONFIGRET WINAPI CM_Delete_Class_Key_Ex( LPGUID, ULONG, HANDLE ); +CONFIGRET WINAPI CM_Delete_DevNode_Key( DEVNODE, ULONG, ULONG ); +CONFIGRET WINAPI CM_Delete_DevNode_Key_Ex( DEVNODE, ULONG, ULONG, HANDLE ); +CONFIGRET WINAPI CM_Disable_DevNode( DEVINST, ULONG ); +CONFIGRET WINAPI CM_Disable_DevNode_Ex( DEVINST, ULONG, HMACHINE ); +CONFIGRET WINAPI CM_Disconnect_Machine( HMACHINE ); +CONFIGRET WINAPI CM_Enable_DevNode( DEVINST, ULONG ); +CONFIGRET WINAPI CM_Enable_DevNode_Ex( DEVINST, ULONG, HMACHINE ); +CONFIGRET WINAPI CM_Enumerate_Classes( ULONG, LPGUID, ULONG ); +CONFIGRET WINAPI CM_Enumerate_Classes_Ex( ULONG, LPGUID, ULONG, HMACHINE ); +CONFIGRET WINAPI CM_Enumerate_EnumeratorsA( ULONG, PCHAR, PULONG, ULONG ); +CONFIGRET WINAPI CM_Enumerate_EnumeratorsW( ULONG, PWCHAR, PULONG, ULONG ); +#define CM_Enumerate_Enumerators WINELIB_NAME_AW(CM_Enumerate_Enumerators) +CONFIGRET WINAPI CM_Enumerate_Enumerators_ExA( ULONG, PCHAR, PULONG, ULONG, HMACHINE ); +CONFIGRET WINAPI CM_Enumerate_Enumerators_ExW( ULONG, PWCHAR, PULONG, ULONG, HMACHINE ); +#define CM_Enumerate_Enumerators_Ex WINELIB_NAME_AW(CM_Enumerate_Enumerators_Ex) +CONFIGRET WINAPI CM_Free_Log_Conf( LOG_CONF, ULONG ); +CONFIGRET WINAPI CM_Free_Log_Conf_Ex( LOG_CONF, ULONG, HMACHINE ); +CONFIGRET WINAPI CM_Free_Log_Conf_Handle( LOG_CONF ); +CONFIGRET WINAPI CM_Get_Child( PDEVINST, DEVINST, ULONG ); +CONFIGRET WINAPI CM_Get_Child_Ex( PDEVINST, DEVINST, ULONG, HMACHINE ); +CONFIGRET WINAPI CM_Get_Class_Key_NameA( LPGUID, LPSTR, PULONG, ULONG ); +CONFIGRET WINAPI CM_Get_Class_Key_NameW( LPGUID, LPWSTR, PULONG, ULONG ); +#define CM_Get_Class_Key_Name WINELIB_NAME_AW(CM_Get_Class_Key_Name) +CONFIGRET WINAPI CM_Get_Class_Key_Name_ExA( LPGUID, LPSTR, PULONG, ULONG, HMACHINE ); +CONFIGRET WINAPI CM_Get_Class_Key_Name_ExW( LPGUID, LPWSTR, PULONG, ULONG, HMACHINE ); +#define CM_Get_Class_Key_Name_Ex WINELIB_NAME_AW(CM_Get_Class_Key_Name_Ex) +CONFIGRET WINAPI CM_Get_Class_NameA( LPGUID, PCHAR, PULONG, ULONG ); +CONFIGRET WINAPI CM_Get_Class_NameW( LPGUID, PWCHAR, PULONG, ULONG ); +#define CM_Get_Class_Name WINELIB_NAME_AW(CM_Get_Class_Name) +CONFIGRET WINAPI CM_Get_Class_Name_ExA( LPGUID, PCHAR, PULONG, ULONG, HMACHINE ); +CONFIGRET WINAPI CM_Get_Class_Name_ExW( LPGUID, PWCHAR, PULONG, ULONG, HMACHINE ); +#define CM_Get_Class_Name_Ex WINELIB_NAME_AW(CM_Get_Class_Name_Ex) +CONFIGRET WINAPI CM_Get_Depth( PULONG, DEVINST, ULONG ); +CONFIGRET WINAPI CM_Get_Depth_Ex( PULONG, DEVINST, ULONG, HMACHINE ); +CONFIGRET WINAPI CM_Get_DevNode_Registry_PropertyA( DEVINST, ULONG, PULONG, PVOID, PULONG, ULONG ); +CONFIGRET WINAPI CM_Get_DevNode_Registry_PropertyW( DEVINST, ULONG, PULONG, PVOID, PULONG, ULONG ); +#define CM_Get_DevNode_Registry_Property WINELIB_NAME_AW(CM_Get_DevNode_Registry_Property) +CONFIGRET WINAPI CM_Get_DevNode_Registry_Property_ExA( DEVINST, ULONG, PULONG, PVOID, PULONG, ULONG, HMACHINE ); +CONFIGRET WINAPI CM_Get_DevNode_Registry_Property_ExW( DEVINST, ULONG, PULONG, PVOID, PULONG, ULONG, HMACHINE ); +#define CM_Get_DevNode_Registry_Property_Ex WINELIB_NAME_AW(CM_Get_DevNode_Registry_Property_Ex) +CONFIGRET WINAPI CM_Get_DevNode_Status( PULONG, PULONG, DEVINST, ULONG ); +CONFIGRET WINAPI CM_Get_DevNode_Status_Ex( PULONG, PULONG, DEVINST, ULONG, HMACHINE ); +CONFIGRET WINAPI CM_Get_Device_IDA( DEVINST, PCHAR, ULONG, ULONG ); +CONFIGRET WINAPI CM_Get_Device_IDW( DEVINST, PWCHAR, ULONG, ULONG ); +#define CM_Get_Device_ID WINELIB_NAME_AW(CM_Get_Device_ID) +CONFIGRET WINAPI CM_Get_Device_ID_ExW( DEVINST, PWCHAR, ULONG, ULONG, HMACHINE ); +CONFIGRET WINAPI CM_Get_Device_ID_ExA( DEVINST, PCHAR, ULONG, ULONG, HMACHINE ); +#define CM_Get_Device_ID_Ex WINELIB_NAME_AW(CM_Get_Device_ID_Ex) +CONFIGRET WINAPI CM_Get_Device_ID_ListA( PCSTR, PCHAR, ULONG, ULONG ); +CONFIGRET WINAPI CM_Get_Device_ID_ListW( PCWSTR, PWCHAR, ULONG, ULONG ); +#define CM_Get_Device_ID_List WINELIB_NAME_AW(CM_Get_Device_ID_List) +CONFIGRET WINAPI CM_Get_Device_ID_List_ExA( PCSTR, PCHAR, ULONG, ULONG, HMACHINE ); +CONFIGRET WINAPI CM_Get_Device_ID_List_ExW( PCWSTR, PWCHAR, ULONG, ULONG, HMACHINE ); +#define CM_Get_Device_ID_List_Ex WINELIB_NAME_AW(CM_Get_Device_ID_List_Ex) +CONFIGRET WINAPI CM_Get_Device_ID_List_SizeA( PULONG, PCSTR, ULONG ); +CONFIGRET WINAPI CM_Get_Device_ID_List_SizeW( PULONG, PCWSTR, ULONG ); +#define CM_Get_Device_ID_List_Size WINELIB_NAME_AW(CM_Get_Device_ID_List_Size) +CONFIGRET WINAPI CM_Get_Device_ID_List_Size_ExA( PULONG, PCSTR, ULONG, HMACHINE ); +CONFIGRET WINAPI CM_Get_Device_ID_List_Size_ExW( PULONG, PCWSTR, ULONG, HMACHINE ); +#define CM_Get_Device_ID_List_Size_Ex WINELIB_NAME_AW(CM_Get_Device_ID_List_Size_Ex) +CONFIGRET WINAPI CM_Get_Device_ID_Size( PULONG, DEVINST, ULONG ); +CONFIGRET WINAPI CM_Get_Device_ID_Size_Ex( PULONG, DEVINST, ULONG, HMACHINE ); +CONFIGRET WINAPI CM_Get_First_Log_Conf( PLOG_CONF, DEVINST, ULONG ); +CONFIGRET WINAPI CM_Get_First_Log_Conf_Ex( PLOG_CONF, DEVINST, ULONG, HMACHINE ); +CONFIGRET WINAPI CM_Get_Global_State( PULONG, ULONG ); +CONFIGRET WINAPI CM_Get_Global_State_Ex( PULONG, ULONG, HMACHINE ); +CONFIGRET WINAPI CM_Set_HW_Prof( ULONG, ULONG ); +CONFIGRET WINAPI CM_Set_HW_Prof_Ex( ULONG, ULONG, HMACHINE ); +CONFIGRET WINAPI CM_Get_HW_Prof_FlagsA( DEVINSTID_A, ULONG, PULONG, ULONG ); +CONFIGRET WINAPI CM_Get_HW_Prof_FlagsW( DEVINSTID_W, ULONG, PULONG, ULONG ); +#define CM_Get_HW_Prof_Flags WINELIB_NAME_AW(CM_Get_HW_Prof_Flags) +CONFIGRET WINAPI CM_Get_HW_Prof_Flags_ExA( DEVINSTID_A, ULONG, PULONG, ULONG, HMACHINE ); +CONFIGRET WINAPI CM_Get_HW_Prof_Flags_ExW( DEVINSTID_W, ULONG, PULONG, ULONG, HMACHINE ); +#define CM_Get_HW_Prof_Flags_Ex WINELIB_NAME_AW(CM_Get_HW_Prof_Flags_Ex) +CONFIGRET WINAPI CM_Get_Log_Conf_Priority( LOG_CONF, PPRIORITY, ULONG ); +CONFIGRET WINAPI CM_Get_Log_Conf_Priority_Ex( LOG_CONF, PPRIORITY, ULONG, HMACHINE ); +CONFIGRET WINAPI CM_Get_Next_Log_Conf( PLOG_CONF, LOG_CONF, ULONG ); +CONFIGRET WINAPI CM_Get_Next_Log_Conf_Ex( PLOG_CONF, LOG_CONF, ULONG, HMACHINE ); +CONFIGRET WINAPI CM_Get_Parent( PDEVINST, DEVINST, ULONG ); +CONFIGRET WINAPI CM_Get_Parent_Ex( PDEVINST, DEVINST, ULONG, HMACHINE ); +CONFIGRET WINAPI CM_Get_Sibling( PDEVINST, DEVINST, ULONG ); +CONFIGRET WINAPI CM_Get_Sibling_Ex( PDEVINST, DEVINST, ULONG, HMACHINE ); +WORD WINAPI CM_Get_Version( VOID ); +WORD WINAPI CM_Get_Version_Ex( HMACHINE ); + +CONFIGRET WINAPI CM_Is_Dock_Station_Present( PBOOL ); +CONFIGRET WINAPI CM_Is_Dock_Station_Present_Ex( PBOOL, HMACHINE ); +CONFIGRET WINAPI CM_Locate_DevNodeA( PDEVINST, DEVINSTID_A, ULONG ); +CONFIGRET WINAPI CM_Locate_DevNodeW( PDEVINST, DEVINSTID_W, ULONG ); +#define CM_Locate_DevNode WINELIB_NAME_AW(CM_Locate_DevNode) +CONFIGRET WINAPI CM_Locate_DevNode_ExA( PDEVINST, DEVINSTID_A, ULONG, HMACHINE ); +CONFIGRET WINAPI CM_Locate_DevNode_ExW( PDEVINST, DEVINSTID_W, ULONG, HMACHINE ); +#define CM_Locate_DevNode_Ex WINELIB_NAME_AW(CM_Locate_DevNode_Ex) + +CONFIGRET WINAPI CM_Move_DevNode( DEVINST, DEVINST, ULONG ); +CONFIGRET WINAPI CM_Move_DevNode_Ex( DEVINST, DEVINST, ULONG, HMACHINE ); + +CONFIGRET WINAPI CM_Open_Class_KeyA( LPGUID, LPCSTR, REGSAM, REGDISPOSITION, PHKEY, ULONG ); +CONFIGRET WINAPI CM_Open_Class_KeyW( LPGUID, LPCWSTR, REGSAM, REGDISPOSITION, PHKEY, ULONG ); +#define CM_Open_Class_Key WINELIB_NAME_AW(CM_Open_Class_Key) +CONFIGRET WINAPI CM_Open_Class_Key_ExA( LPGUID, LPCSTR, REGSAM, REGDISPOSITION, PHKEY, ULONG, HMACHINE ); +CONFIGRET WINAPI CM_Open_Class_Key_ExW( LPGUID, LPCWSTR, REGSAM, REGDISPOSITION, PHKEY, ULONG, HMACHINE ); +#define CM_Open_Class_Key_Ex WINELIB_NAME_AW(CM_Open_Class_Key_Ex) +CONFIGRET WINAPI CM_Open_DevNode_Key( DEVINST, REGSAM, ULONG, REGDISPOSITION, PHKEY, ULONG ); +CONFIGRET WINAPI CM_Open_DevNode_Key_Ex( DEVINST, REGSAM, ULONG, REGDISPOSITION, PHKEY, ULONG, HMACHINE ); + +CONFIGRET WINAPI CM_Reenumerate_DevNode( DEVINST, ULONG ); +CONFIGRET WINAPI CM_Reenumerate_DevNode_Ex( DEVINST, ULONG, HMACHINE ); + +CONFIGRET WINAPI CM_Request_Eject_PC( VOID ); +CONFIGRET WINAPI CM_Request_Eject_PC_Ex( HMACHINE ); + +CONFIGRET WINAPI CM_Run_Detection( ULONG ); +CONFIGRET WINAPI CM_Run_Detection_Ex( ULONG, HMACHINE ); +CONFIGRET WINAPI CM_Set_DevNode_Problem( DEVINST, ULONG, ULONG ); +CONFIGRET WINAPI CM_Set_DevNode_Problem_Ex( DEVINST, ULONG, ULONG, HMACHINE ); +CONFIGRET WINAPI CM_Set_DevNode_Registry_PropertyA( DEVINST, ULONG, PCVOID, ULONG, ULONG ); +CONFIGRET WINAPI CM_Set_DevNode_Registry_PropertyW( DEVINST, ULONG, PCVOID, ULONG, ULONG ); +#define CM_Set_DevNode_Registry_Property WINELIB_NAME_AW(CM_Set_DevNode_Registry_Property) +CONFIGRET WINAPI CM_Set_DevNode_Registry_Property_ExA( DEVINST, ULONG, PCVOID, ULONG, ULONG, HMACHINE ); +CONFIGRET WINAPI CM_Set_DevNode_Registry_Property_ExW( DEVINST, ULONG, PCVOID, ULONG, ULONG, HMACHINE ); +#define CM_Set_DevNode_Registry_Property_Ex WINELIB_NAME_AW(CM_Set_DevNode_Registry_Property_Ex) + +CONFIGRET WINAPI CM_Set_HW_Prof_FlagsA( DEVINSTID_A, ULONG, ULONG, ULONG ); +CONFIGRET WINAPI CM_Set_HW_Prof_FlagsW( DEVINSTID_W, ULONG, ULONG, ULONG ); +#define CM_Set_HW_Prof_Flags WINELIB_NAME_AW(CM_Set_HW_Prof_Flags) +CONFIGRET WINAPI CM_Set_HW_Prof_Flags_ExA( DEVINSTID_A, ULONG, ULONG, ULONG, HMACHINE ); +CONFIGRET WINAPI CM_Set_HW_Prof_Flags_ExW( DEVINSTID_W, ULONG, ULONG, ULONG, HMACHINE ); +#define CM_Set_HW_Prof_Flags_Ex WINELIB_NAME_AW(CM_Set_HW_Prof_Flags_Ex) +CONFIGRET WINAPI CM_Setup_DevNode( DEVINST, ULONG ); +CONFIGRET WINAPI CM_Setup_DevNode_Ex( DEVINST, ULONG, HMACHINE ); + +CONFIGRET WINAPI CM_Uninstall_DevNode( DEVINST, ULONG ); +CONFIGRET WINAPI CM_Uninstall_DevNode_Ex( DEVINST, ULONG, HMACHINE ); + +#endif /* _CFGMGR32_H_ */ diff --git a/reactos/include/xdk/amd64/ke.h b/reactos/include/xdk/amd64/ke.h deleted file mode 100644 index d744cd5eca7..00000000000 --- a/reactos/include/xdk/amd64/ke.h +++ /dev/null @@ -1,278 +0,0 @@ -$if (_WDMDDK_) -/** Kernel definitions for AMD64 **/ - -/* Interrupt request levels */ -#define PASSIVE_LEVEL 0 -#define LOW_LEVEL 0 -#define APC_LEVEL 1 -#define DISPATCH_LEVEL 2 -#define CMCI_LEVEL 5 -#define CLOCK_LEVEL 13 -#define IPI_LEVEL 14 -#define DRS_LEVEL 14 -#define POWER_LEVEL 14 -#define PROFILE_LEVEL 15 -#define HIGH_LEVEL 15 - -#define KI_USER_SHARED_DATA 0xFFFFF78000000000ULL -#define SharedUserData ((PKUSER_SHARED_DATA const)KI_USER_SHARED_DATA) -#define SharedInterruptTime (KI_USER_SHARED_DATA + 0x8) -#define SharedSystemTime (KI_USER_SHARED_DATA + 0x14) -#define SharedTickCount (KI_USER_SHARED_DATA + 0x320) - -#define PAGE_SIZE 0x1000 -#define PAGE_SHIFT 12L - -#define EFLAG_SIGN 0x8000 -#define EFLAG_ZERO 0x4000 -#define EFLAG_SELECT (EFLAG_SIGN | EFLAG_ZERO) - -#define RESULT_NEGATIVE ((EFLAG_SIGN & ~EFLAG_ZERO) & EFLAG_SELECT) -#define RESULT_ZERO ((~EFLAG_SIGN & EFLAG_ZERO) & EFLAG_SELECT) -#define RESULT_POSITIVE ((~EFLAG_SIGN & ~EFLAG_ZERO) & EFLAG_SELECT) - - -typedef struct _KFLOATING_SAVE { - ULONG Dummy; -} KFLOATING_SAVE, *PKFLOATING_SAVE; - -typedef XSAVE_FORMAT XMM_SAVE_AREA32, *PXMM_SAVE_AREA32; - -#define KeQueryInterruptTime() \ - (*(volatile ULONG64*)SharedInterruptTime) - -#define KeQuerySystemTime(CurrentCount) \ - *(ULONG64*)(CurrentCount) = *(volatile ULONG64*)SharedSystemTime - -#define KeQueryTickCount(CurrentCount) \ - *(ULONG64*)(CurrentCount) = *(volatile ULONG64*)SharedTickCount - -#define KeGetDcacheFillSize() 1L - -#define YieldProcessor _mm_pause - -FORCEINLINE -KIRQL -KeGetCurrentIrql(VOID) -{ - return (KIRQL)__readcr8(); -} - -FORCEINLINE -VOID -KeLowerIrql(IN KIRQL NewIrql) -{ - //ASSERT(KeGetCurrentIrql() >= NewIrql); - __writecr8(NewIrql); -} - -FORCEINLINE -KIRQL -KfRaiseIrql(IN KIRQL NewIrql) -{ - KIRQL OldIrql; - - OldIrql = __readcr8(); - //ASSERT(OldIrql <= NewIrql); - __writecr8(NewIrql); - return OldIrql; -} -#define KeRaiseIrql(a,b) *(b) = KfRaiseIrql(a) - -FORCEINLINE -KIRQL -KeRaiseIrqlToDpcLevel(VOID) -{ - return KfRaiseIrql(DISPATCH_LEVEL); -} - -FORCEINLINE -KIRQL -KeRaiseIrqlToSynchLevel(VOID) -{ - return KfRaiseIrql(12); // SYNCH_LEVEL = IPI_LEVEL - 2 -} - -FORCEINLINE -PKTHREAD -KeGetCurrentThread(VOID) -{ - return (struct _KTHREAD *)__readgsqword(0x188); -} - -/* VOID - * KeFlushIoBuffers( - * IN PMDL Mdl, - * IN BOOLEAN ReadOperation, - * IN BOOLEAN DmaOperation) - */ -#define KeFlushIoBuffers(_Mdl, _ReadOperation, _DmaOperation) - -/* x86 and x64 performs a 0x2C interrupt */ -#define DbgRaiseAssertionFailure __int2c - -$endif /* _WDMDDK_ */ -$if (_NTDDK_) - -#define PAUSE_PROCESSOR YieldProcessor(); - -#define KERNEL_STACK_SIZE 0x6000 -#define KERNEL_LARGE_STACK_SIZE 0x12000 -#define KERNEL_LARGE_STACK_COMMIT KERNEL_STACK_SIZE - -#define KERNEL_MCA_EXCEPTION_STACK_SIZE 0x2000 - -#define EXCEPTION_READ_FAULT 0 -#define EXCEPTION_WRITE_FAULT 1 -#define EXCEPTION_EXECUTE_FAULT 8 - -#if !defined(RC_INVOKED) - -#define CONTEXT_AMD64 0x100000 - -#define CONTEXT_CONTROL (CONTEXT_AMD64 | 0x1L) -#define CONTEXT_INTEGER (CONTEXT_AMD64 | 0x2L) -#define CONTEXT_SEGMENTS (CONTEXT_AMD64 | 0x4L) -#define CONTEXT_FLOATING_POINT (CONTEXT_AMD64 | 0x8L) -#define CONTEXT_DEBUG_REGISTERS (CONTEXT_AMD64 | 0x10L) - -#define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_FLOATING_POINT) -#define CONTEXT_ALL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS | CONTEXT_FLOATING_POINT | CONTEXT_DEBUG_REGISTERS) - -#define CONTEXT_XSTATE (CONTEXT_AMD64 | 0x20L) - -#define CONTEXT_EXCEPTION_ACTIVE 0x8000000 -#define CONTEXT_SERVICE_ACTIVE 0x10000000 -#define CONTEXT_EXCEPTION_REQUEST 0x40000000 -#define CONTEXT_EXCEPTION_REPORTING 0x80000000 - -#endif /* !defined(RC_INVOKED) */ - -#define INITIAL_MXCSR 0x1f80 -#define INITIAL_FPCSR 0x027f - -typedef struct DECLSPEC_ALIGN(16) _CONTEXT { - ULONG64 P1Home; - ULONG64 P2Home; - ULONG64 P3Home; - ULONG64 P4Home; - ULONG64 P5Home; - ULONG64 P6Home; - ULONG ContextFlags; - ULONG MxCsr; - USHORT SegCs; - USHORT SegDs; - USHORT SegEs; - USHORT SegFs; - USHORT SegGs; - USHORT SegSs; - ULONG EFlags; - ULONG64 Dr0; - ULONG64 Dr1; - ULONG64 Dr2; - ULONG64 Dr3; - ULONG64 Dr6; - ULONG64 Dr7; - ULONG64 Rax; - ULONG64 Rcx; - ULONG64 Rdx; - ULONG64 Rbx; - ULONG64 Rsp; - ULONG64 Rbp; - ULONG64 Rsi; - ULONG64 Rdi; - ULONG64 R8; - ULONG64 R9; - ULONG64 R10; - ULONG64 R11; - ULONG64 R12; - ULONG64 R13; - ULONG64 R14; - ULONG64 R15; - ULONG64 Rip; - union { - XMM_SAVE_AREA32 FltSave; - struct { - M128A Header[2]; - M128A Legacy[8]; - M128A Xmm0; - M128A Xmm1; - M128A Xmm2; - M128A Xmm3; - M128A Xmm4; - M128A Xmm5; - M128A Xmm6; - M128A Xmm7; - M128A Xmm8; - M128A Xmm9; - M128A Xmm10; - M128A Xmm11; - M128A Xmm12; - M128A Xmm13; - M128A Xmm14; - M128A Xmm15; - } DUMMYSTRUCTNAME; - } DUMMYUNIONNAME; - M128A VectorRegister[26]; - ULONG64 VectorControl; - ULONG64 DebugControl; - ULONG64 LastBranchToRip; - ULONG64 LastBranchFromRip; - ULONG64 LastExceptionToRip; - ULONG64 LastExceptionFromRip; -} CONTEXT; - -#define PCR_MINOR_VERSION 1 -#define PCR_MAJOR_VERSION 1 - -typedef struct _KPCR -{ - _ANONYMOUS_UNION union - { - NT_TIB NtTib; - _ANONYMOUS_STRUCT struct - { - union _KGDTENTRY64 *GdtBase; - struct _KTSS64 *TssBase; - ULONG64 UserRsp; - struct _KPCR *Self; - struct _KPRCB *CurrentPrcb; - PKSPIN_LOCK_QUEUE LockArray; - PVOID Used_Self; - }; - }; - union _KIDTENTRY64 *IdtBase; - ULONG64 Unused[2]; - KIRQL Irql; - UCHAR SecondLevelCacheAssociativity; - UCHAR ObsoleteNumber; - UCHAR Fill0; - ULONG Unused0[3]; - USHORT MajorVersion; - USHORT MinorVersion; - ULONG StallScaleFactor; - PVOID Unused1[3]; - ULONG KernelReserved[15]; - ULONG SecondLevelCacheSize; - ULONG HalReserved[16]; - ULONG Unused2; - PVOID KdVersionBlock; - PVOID Unused3; - ULONG PcrAlign1[24]; -} KPCR, *PKPCR; - -FORCEINLINE -PKPCR -KeGetPcr(VOID) -{ - return (PKPCR)__readgsqword(FIELD_OFFSET(KPCR, Self)); -} - -FORCEINLINE -ULONG -KeGetCurrentProcessorNumber(VOID) -{ - return (ULONG)__readgsword(0x184); -} - -$endif /* _NTDDK_ */ diff --git a/reactos/include/xdk/amd64/mm.h b/reactos/include/xdk/amd64/mm.h deleted file mode 100644 index 2c390a14d26..00000000000 --- a/reactos/include/xdk/amd64/mm.h +++ /dev/null @@ -1,37 +0,0 @@ -$if (_NTDDK_) - -#define PTI_SHIFT 12L -#define PDI_SHIFT 21L -#define PPI_SHIFT 30L -#define PXI_SHIFT 39L -#define PTE_PER_PAGE 512 -#define PDE_PER_PAGE 512 -#define PPE_PER_PAGE 512 -#define PXE_PER_PAGE 512 -#define PTI_MASK_AMD64 (PTE_PER_PAGE - 1) -#define PDI_MASK_AMD64 (PDE_PER_PAGE - 1) -#define PPI_MASK (PPE_PER_PAGE - 1) -#define PXI_MASK (PXE_PER_PAGE - 1) - -#define PXE_BASE 0xFFFFF6FB7DBED000ULL -#define PXE_SELFMAP 0xFFFFF6FB7DBEDF68ULL -#define PPE_BASE 0xFFFFF6FB7DA00000ULL -#define PDE_BASE 0xFFFFF6FB40000000ULL -#define PTE_BASE 0xFFFFF68000000000ULL -#define PXE_TOP 0xFFFFF6FB7DBEDFFFULL -#define PPE_TOP 0xFFFFF6FB7DBFFFFFULL -#define PDE_TOP 0xFFFFF6FB7FFFFFFFULL -#define PTE_TOP 0xFFFFF6FFFFFFFFFFULL - -extern NTKERNELAPI PVOID MmHighestUserAddress; -extern NTKERNELAPI PVOID MmSystemRangeStart; -extern NTKERNELAPI ULONG64 MmUserProbeAddress; - -#define MM_HIGHEST_USER_ADDRESS MmHighestUserAddress -#define MM_SYSTEM_RANGE_START MmSystemRangeStart -#define MM_USER_PROBE_ADDRESS MmUserProbeAddress -#define MM_LOWEST_USER_ADDRESS (PVOID)0x10000 -#define MM_LOWEST_SYSTEM_ADDRESS (PVOID)0xFFFF080000000000ULL - -$endif /* _NTDDK_ */ - diff --git a/reactos/include/xdk/arm/ke.h b/reactos/include/xdk/arm/ke.h deleted file mode 100644 index 372e5658328..00000000000 --- a/reactos/include/xdk/arm/ke.h +++ /dev/null @@ -1,3 +0,0 @@ -$if (_WDMDDK_) -#include -$endif diff --git a/reactos/include/xdk/cmfuncs.h b/reactos/include/xdk/cmfuncs.h deleted file mode 100644 index 9fb3de09a7f..00000000000 --- a/reactos/include/xdk/cmfuncs.h +++ /dev/null @@ -1,70 +0,0 @@ -/****************************************************************************** - * Configuration Manager Functions * - ******************************************************************************/ - -$if (_WDMDDK_) -#if (NTDDI_VERSION >= NTDDI_WINXP) -NTKERNELAPI -NTSTATUS -NTAPI -CmRegisterCallback( - IN PEX_CALLBACK_FUNCTION Function, - IN PVOID Context OPTIONAL, - OUT PLARGE_INTEGER Cookie); - -NTKERNELAPI -NTSTATUS -NTAPI -CmUnRegisterCallback( - IN LARGE_INTEGER Cookie); -#endif - -#if (NTDDI_VERSION >= NTDDI_VISTA) - -NTKERNELAPI -NTSTATUS -NTAPI -CmRegisterCallbackEx( - PEX_CALLBACK_FUNCTION Function, - PCUNICODE_STRING Altitude, - PVOID Driver, - PVOID Context, - PLARGE_INTEGER Cookie, - PVOID Reserved); - -NTKERNELAPI -VOID -NTAPI -CmGetCallbackVersion( - OUT PULONG Major OPTIONAL, - OUT PULONG Minor OPTIONAL); - -NTKERNELAPI -NTSTATUS -NTAPI -CmSetCallbackObjectContext( - IN OUT PVOID Object, - IN PLARGE_INTEGER Cookie, - IN PVOID NewContext, - OUT PVOID *OldContext OPTIONAL); - -NTKERNELAPI -NTSTATUS -NTAPI -CmCallbackGetKeyObjectID( - IN PLARGE_INTEGER Cookie, - IN PVOID Object, - OUT PULONG_PTR ObjectID OPTIONAL, - OUT PCUNICODE_STRING *ObjectName OPTIONAL); - -NTKERNELAPI -PVOID -NTAPI -CmGetBoundTransaction( - IN PLARGE_INTEGER Cookie, - IN PVOID Object); - -#endif // NTDDI_VERSION >= NTDDI_VISTA - -$endif - diff --git a/reactos/include/xdk/cmtypes.h b/reactos/include/xdk/cmtypes.h deleted file mode 100644 index 2599a78cfc4..00000000000 --- a/reactos/include/xdk/cmtypes.h +++ /dev/null @@ -1,1048 +0,0 @@ -/****************************************************************************** - * Configuration Manager Types * - ******************************************************************************/ - -$if (_WDMDDK_) -/* Resource list definitions */ -typedef int CM_RESOURCE_TYPE; - -#define CmResourceTypeNull 0 -#define CmResourceTypePort 1 -#define CmResourceTypeInterrupt 2 -#define CmResourceTypeMemory 3 -#define CmResourceTypeDma 4 -#define CmResourceTypeDeviceSpecific 5 -#define CmResourceTypeBusNumber 6 -#define CmResourceTypeNonArbitrated 128 -#define CmResourceTypeConfigData 128 -#define CmResourceTypeDevicePrivate 129 -#define CmResourceTypePcCardConfig 130 -#define CmResourceTypeMfCardConfig 131 - -/* KEY_VALUE_Xxx.Type */ -#define REG_NONE 0 -#define REG_SZ 1 -#define REG_EXPAND_SZ 2 -#define REG_BINARY 3 -#define REG_DWORD 4 -#define REG_DWORD_LITTLE_ENDIAN 4 -#define REG_DWORD_BIG_ENDIAN 5 -#define REG_LINK 6 -#define REG_MULTI_SZ 7 -#define REG_RESOURCE_LIST 8 -#define REG_FULL_RESOURCE_DESCRIPTOR 9 -#define REG_RESOURCE_REQUIREMENTS_LIST 10 -#define REG_QWORD 11 -#define REG_QWORD_LITTLE_ENDIAN 11 - -/* Registry Access Rights */ -#define KEY_QUERY_VALUE (0x0001) -#define KEY_SET_VALUE (0x0002) -#define KEY_CREATE_SUB_KEY (0x0004) -#define KEY_ENUMERATE_SUB_KEYS (0x0008) -#define KEY_NOTIFY (0x0010) -#define KEY_CREATE_LINK (0x0020) -#define KEY_WOW64_32KEY (0x0200) -#define KEY_WOW64_64KEY (0x0100) -#define KEY_WOW64_RES (0x0300) - -#define KEY_READ ((STANDARD_RIGHTS_READ |\ - KEY_QUERY_VALUE |\ - KEY_ENUMERATE_SUB_KEYS |\ - KEY_NOTIFY) \ - & \ - (~SYNCHRONIZE)) - -#define KEY_WRITE ((STANDARD_RIGHTS_WRITE |\ - KEY_SET_VALUE |\ - KEY_CREATE_SUB_KEY) \ - & \ - (~SYNCHRONIZE)) - -#define KEY_EXECUTE ((KEY_READ) \ - & \ - (~SYNCHRONIZE)) - -#define KEY_ALL_ACCESS ((STANDARD_RIGHTS_ALL |\ - KEY_QUERY_VALUE |\ - KEY_SET_VALUE |\ - KEY_CREATE_SUB_KEY |\ - KEY_ENUMERATE_SUB_KEYS |\ - KEY_NOTIFY |\ - KEY_CREATE_LINK) \ - & \ - (~SYNCHRONIZE)) - -/* Registry Open/Create Options */ -#define REG_OPTION_RESERVED (0x00000000L) -#define REG_OPTION_NON_VOLATILE (0x00000000L) -#define REG_OPTION_VOLATILE (0x00000001L) -#define REG_OPTION_CREATE_LINK (0x00000002L) -#define REG_OPTION_BACKUP_RESTORE (0x00000004L) -#define REG_OPTION_OPEN_LINK (0x00000008L) - -#define REG_LEGAL_OPTION \ - (REG_OPTION_RESERVED |\ - REG_OPTION_NON_VOLATILE |\ - REG_OPTION_VOLATILE |\ - REG_OPTION_CREATE_LINK |\ - REG_OPTION_BACKUP_RESTORE |\ - REG_OPTION_OPEN_LINK) - -#define REG_OPEN_LEGAL_OPTION \ - (REG_OPTION_RESERVED |\ - REG_OPTION_BACKUP_RESTORE |\ - REG_OPTION_OPEN_LINK) - -#define REG_STANDARD_FORMAT 1 -#define REG_LATEST_FORMAT 2 -#define REG_NO_COMPRESSION 4 - -/* Key creation/open disposition */ -#define REG_CREATED_NEW_KEY (0x00000001L) -#define REG_OPENED_EXISTING_KEY (0x00000002L) - -/* Key restore & hive load flags */ -#define REG_WHOLE_HIVE_VOLATILE (0x00000001L) -#define REG_REFRESH_HIVE (0x00000002L) -#define REG_NO_LAZY_FLUSH (0x00000004L) -#define REG_FORCE_RESTORE (0x00000008L) -#define REG_APP_HIVE (0x00000010L) -#define REG_PROCESS_PRIVATE (0x00000020L) -#define REG_START_JOURNAL (0x00000040L) -#define REG_HIVE_EXACT_FILE_GROWTH (0x00000080L) -#define REG_HIVE_NO_RM (0x00000100L) -#define REG_HIVE_SINGLE_LOG (0x00000200L) -#define REG_BOOT_HIVE (0x00000400L) - -/* Unload Flags */ -#define REG_FORCE_UNLOAD 1 - -/* Notify Filter Values */ -#define REG_NOTIFY_CHANGE_NAME (0x00000001L) -#define REG_NOTIFY_CHANGE_ATTRIBUTES (0x00000002L) -#define REG_NOTIFY_CHANGE_LAST_SET (0x00000004L) -#define REG_NOTIFY_CHANGE_SECURITY (0x00000008L) - -#define REG_LEGAL_CHANGE_FILTER \ - (REG_NOTIFY_CHANGE_NAME |\ - REG_NOTIFY_CHANGE_ATTRIBUTES |\ - REG_NOTIFY_CHANGE_LAST_SET |\ - REG_NOTIFY_CHANGE_SECURITY) - -#include -typedef struct _CM_PARTIAL_RESOURCE_DESCRIPTOR { - UCHAR Type; - UCHAR ShareDisposition; - USHORT Flags; - union { - struct { - PHYSICAL_ADDRESS Start; - ULONG Length; - } Generic; - struct { - PHYSICAL_ADDRESS Start; - ULONG Length; - } Port; - struct { -#if defined(NT_PROCESSOR_GROUPS) - USHORT Level; - USHORT Group; -#else - ULONG Level; -#endif - ULONG Vector; - KAFFINITY Affinity; - } Interrupt; -#if (NTDDI_VERSION >= NTDDI_LONGHORN) - struct { - __GNU_EXTENSION union { - struct { -#if defined(NT_PROCESSOR_GROUPS) - USHORT Group; -#else - USHORT Reserved; -#endif - USHORT MessageCount; - ULONG Vector; - KAFFINITY Affinity; - } Raw; - struct { -#if defined(NT_PROCESSOR_GROUPS) - USHORT Level; - USHORT Group; -#else - ULONG Level; -#endif - ULONG Vector; - KAFFINITY Affinity; - } Translated; - } DUMMYUNIONNAME; - } MessageInterrupt; -#endif - struct { - PHYSICAL_ADDRESS Start; - ULONG Length; - } Memory; - struct { - ULONG Channel; - ULONG Port; - ULONG Reserved1; - } Dma; - struct { - ULONG Data[3]; - } DevicePrivate; - struct { - ULONG Start; - ULONG Length; - ULONG Reserved; - } BusNumber; - struct { - ULONG DataSize; - ULONG Reserved1; - ULONG Reserved2; - } DeviceSpecificData; -#if (NTDDI_VERSION >= NTDDI_LONGHORN) - struct { - PHYSICAL_ADDRESS Start; - ULONG Length40; - } Memory40; - struct { - PHYSICAL_ADDRESS Start; - ULONG Length48; - } Memory48; - struct { - PHYSICAL_ADDRESS Start; - ULONG Length64; - } Memory64; -#endif - } u; -} CM_PARTIAL_RESOURCE_DESCRIPTOR, *PCM_PARTIAL_RESOURCE_DESCRIPTOR; -#include - -/* CM_PARTIAL_RESOURCE_DESCRIPTOR.Type */ -#define CmResourceTypeNull 0 -#define CmResourceTypePort 1 -#define CmResourceTypeInterrupt 2 -#define CmResourceTypeMemory 3 -#define CmResourceTypeDma 4 -#define CmResourceTypeDeviceSpecific 5 -#define CmResourceTypeBusNumber 6 -#define CmResourceTypeMemoryLarge 7 -#define CmResourceTypeNonArbitrated 128 -#define CmResourceTypeConfigData 128 -#define CmResourceTypeDevicePrivate 129 -#define CmResourceTypePcCardConfig 130 -#define CmResourceTypeMfCardConfig 131 - -/* CM_PARTIAL_RESOURCE_DESCRIPTOR.ShareDisposition */ -typedef enum _CM_SHARE_DISPOSITION { - CmResourceShareUndetermined = 0, - CmResourceShareDeviceExclusive, - CmResourceShareDriverExclusive, - CmResourceShareShared -} CM_SHARE_DISPOSITION; - -/* CM_PARTIAL_RESOURCE_DESCRIPTOR.Flags if Type = CmResourceTypePort */ -#define CM_RESOURCE_PORT_MEMORY 0x0000 -#define CM_RESOURCE_PORT_IO 0x0001 -#define CM_RESOURCE_PORT_10_BIT_DECODE 0x0004 -#define CM_RESOURCE_PORT_12_BIT_DECODE 0x0008 -#define CM_RESOURCE_PORT_16_BIT_DECODE 0x0010 -#define CM_RESOURCE_PORT_POSITIVE_DECODE 0x0020 -#define CM_RESOURCE_PORT_PASSIVE_DECODE 0x0040 -#define CM_RESOURCE_PORT_WINDOW_DECODE 0x0080 -#define CM_RESOURCE_PORT_BAR 0x0100 - -/* CM_PARTIAL_RESOURCE_DESCRIPTOR.Flags if Type = CmResourceTypeInterrupt */ -#define CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE 0x0000 -#define CM_RESOURCE_INTERRUPT_LATCHED 0x0001 -#define CM_RESOURCE_INTERRUPT_MESSAGE 0x0002 -#define CM_RESOURCE_INTERRUPT_POLICY_INCLUDED 0x0004 - -#define CM_RESOURCE_INTERRUPT_LEVEL_LATCHED_BITS 0x0001 - -#define CM_RESOURCE_INTERRUPT_MESSAGE_TOKEN ((ULONG)-2) - -/* CM_PARTIAL_RESOURCE_DESCRIPTOR.Flags if Type = CmResourceTypeMemory */ -#define CM_RESOURCE_MEMORY_READ_WRITE 0x0000 -#define CM_RESOURCE_MEMORY_READ_ONLY 0x0001 -#define CM_RESOURCE_MEMORY_WRITE_ONLY 0x0002 -#define CM_RESOURCE_MEMORY_WRITEABILITY_MASK 0x0003 -#define CM_RESOURCE_MEMORY_PREFETCHABLE 0x0004 -#define CM_RESOURCE_MEMORY_COMBINEDWRITE 0x0008 -#define CM_RESOURCE_MEMORY_24 0x0010 -#define CM_RESOURCE_MEMORY_CACHEABLE 0x0020 -#define CM_RESOURCE_MEMORY_WINDOW_DECODE 0x0040 -#define CM_RESOURCE_MEMORY_BAR 0x0080 -#define CM_RESOURCE_MEMORY_COMPAT_FOR_INACCESSIBLE_RANGE 0x0100 - -#define CM_RESOURCE_MEMORY_LARGE 0x0E00 -#define CM_RESOURCE_MEMORY_LARGE_40 0x0200 -#define CM_RESOURCE_MEMORY_LARGE_48 0x0400 -#define CM_RESOURCE_MEMORY_LARGE_64 0x0800 - -#define CM_RESOURCE_MEMORY_LARGE_40_MAXLEN 0x000000FFFFFFFF00 -#define CM_RESOURCE_MEMORY_LARGE_48_MAXLEN 0x0000FFFFFFFF0000 -#define CM_RESOURCE_MEMORY_LARGE_64_MAXLEN 0xFFFFFFFF00000000 - -/* CM_PARTIAL_RESOURCE_DESCRIPTOR.Flags if Type = CmResourceTypeDma */ -#define CM_RESOURCE_DMA_8 0x0000 -#define CM_RESOURCE_DMA_16 0x0001 -#define CM_RESOURCE_DMA_32 0x0002 -#define CM_RESOURCE_DMA_8_AND_16 0x0004 -#define CM_RESOURCE_DMA_BUS_MASTER 0x0008 -#define CM_RESOURCE_DMA_TYPE_A 0x0010 -#define CM_RESOURCE_DMA_TYPE_B 0x0020 -#define CM_RESOURCE_DMA_TYPE_F 0x0040 - -typedef struct _DEVICE_FLAGS { - ULONG Failed:1; - ULONG ReadOnly:1; - ULONG Removable:1; - ULONG ConsoleIn:1; - ULONG ConsoleOut:1; - ULONG Input:1; - ULONG Output:1; -} DEVICE_FLAGS, *PDEVICE_FLAGS; - -typedef enum _INTERFACE_TYPE { - InterfaceTypeUndefined = -1, - Internal, - Isa, - Eisa, - MicroChannel, - TurboChannel, - PCIBus, - VMEBus, - NuBus, - PCMCIABus, - CBus, - MPIBus, - MPSABus, - ProcessorInternal, - InternalPowerBus, - PNPISABus, - PNPBus, - Vmcs, - MaximumInterfaceType -} INTERFACE_TYPE, *PINTERFACE_TYPE; - -typedef struct _CM_COMPONENT_INFORMATION { - DEVICE_FLAGS Flags; - ULONG Version; - ULONG Key; - KAFFINITY AffinityMask; -} CM_COMPONENT_INFORMATION, *PCM_COMPONENT_INFORMATION; - -typedef struct _CM_ROM_BLOCK { - ULONG Address; - ULONG Size; -} CM_ROM_BLOCK, *PCM_ROM_BLOCK; - -typedef struct _CM_PARTIAL_RESOURCE_LIST { - USHORT Version; - USHORT Revision; - ULONG Count; - CM_PARTIAL_RESOURCE_DESCRIPTOR PartialDescriptors[1]; -} CM_PARTIAL_RESOURCE_LIST, *PCM_PARTIAL_RESOURCE_LIST; - -typedef struct _CM_FULL_RESOURCE_DESCRIPTOR { - INTERFACE_TYPE InterfaceType; - ULONG BusNumber; - CM_PARTIAL_RESOURCE_LIST PartialResourceList; -} CM_FULL_RESOURCE_DESCRIPTOR, *PCM_FULL_RESOURCE_DESCRIPTOR; - -typedef struct _CM_RESOURCE_LIST { - ULONG Count; - CM_FULL_RESOURCE_DESCRIPTOR List[1]; -} CM_RESOURCE_LIST, *PCM_RESOURCE_LIST; - -typedef struct _PNP_BUS_INFORMATION { - GUID BusTypeGuid; - INTERFACE_TYPE LegacyBusType; - ULONG BusNumber; -} PNP_BUS_INFORMATION, *PPNP_BUS_INFORMATION; - -#include - -typedef struct _CM_INT13_DRIVE_PARAMETER { - USHORT DriveSelect; - ULONG MaxCylinders; - USHORT SectorsPerTrack; - USHORT MaxHeads; - USHORT NumberDrives; -} CM_INT13_DRIVE_PARAMETER, *PCM_INT13_DRIVE_PARAMETER; - -typedef struct _CM_MCA_POS_DATA { - USHORT AdapterId; - UCHAR PosData1; - UCHAR PosData2; - UCHAR PosData3; - UCHAR PosData4; -} CM_MCA_POS_DATA, *PCM_MCA_POS_DATA; - -typedef struct _CM_PNP_BIOS_DEVICE_NODE { - USHORT Size; - UCHAR Node; - ULONG ProductId; - UCHAR DeviceType[3]; - USHORT DeviceAttributes; -} CM_PNP_BIOS_DEVICE_NODE,*PCM_PNP_BIOS_DEVICE_NODE; - -typedef struct _CM_PNP_BIOS_INSTALLATION_CHECK { - UCHAR Signature[4]; - UCHAR Revision; - UCHAR Length; - USHORT ControlField; - UCHAR Checksum; - ULONG EventFlagAddress; - USHORT RealModeEntryOffset; - USHORT RealModeEntrySegment; - USHORT ProtectedModeEntryOffset; - ULONG ProtectedModeCodeBaseAddress; - ULONG OemDeviceId; - USHORT RealModeDataBaseAddress; - ULONG ProtectedModeDataBaseAddress; -} CM_PNP_BIOS_INSTALLATION_CHECK, *PCM_PNP_BIOS_INSTALLATION_CHECK; - -#include - -typedef struct _CM_DISK_GEOMETRY_DEVICE_DATA { - ULONG BytesPerSector; - ULONG NumberOfCylinders; - ULONG SectorsPerTrack; - ULONG NumberOfHeads; -} CM_DISK_GEOMETRY_DEVICE_DATA, *PCM_DISK_GEOMETRY_DEVICE_DATA; - -typedef struct _CM_KEYBOARD_DEVICE_DATA { - USHORT Version; - USHORT Revision; - UCHAR Type; - UCHAR Subtype; - USHORT KeyboardFlags; -} CM_KEYBOARD_DEVICE_DATA, *PCM_KEYBOARD_DEVICE_DATA; - -typedef struct _CM_SCSI_DEVICE_DATA { - USHORT Version; - USHORT Revision; - UCHAR HostIdentifier; -} CM_SCSI_DEVICE_DATA, *PCM_SCSI_DEVICE_DATA; - -typedef struct _CM_VIDEO_DEVICE_DATA { - USHORT Version; - USHORT Revision; - ULONG VideoClock; -} CM_VIDEO_DEVICE_DATA, *PCM_VIDEO_DEVICE_DATA; - -typedef struct _CM_SONIC_DEVICE_DATA { - USHORT Version; - USHORT Revision; - USHORT DataConfigurationRegister; - UCHAR EthernetAddress[8]; -} CM_SONIC_DEVICE_DATA, *PCM_SONIC_DEVICE_DATA; - -typedef struct _CM_SERIAL_DEVICE_DATA { - USHORT Version; - USHORT Revision; - ULONG BaudClock; -} CM_SERIAL_DEVICE_DATA, *PCM_SERIAL_DEVICE_DATA; - -typedef struct _CM_MONITOR_DEVICE_DATA { - USHORT Version; - USHORT Revision; - USHORT HorizontalScreenSize; - USHORT VerticalScreenSize; - USHORT HorizontalResolution; - USHORT VerticalResolution; - USHORT HorizontalDisplayTimeLow; - USHORT HorizontalDisplayTime; - USHORT HorizontalDisplayTimeHigh; - USHORT HorizontalBackPorchLow; - USHORT HorizontalBackPorch; - USHORT HorizontalBackPorchHigh; - USHORT HorizontalFrontPorchLow; - USHORT HorizontalFrontPorch; - USHORT HorizontalFrontPorchHigh; - USHORT HorizontalSyncLow; - USHORT HorizontalSync; - USHORT HorizontalSyncHigh; - USHORT VerticalBackPorchLow; - USHORT VerticalBackPorch; - USHORT VerticalBackPorchHigh; - USHORT VerticalFrontPorchLow; - USHORT VerticalFrontPorch; - USHORT VerticalFrontPorchHigh; - USHORT VerticalSyncLow; - USHORT VerticalSync; - USHORT VerticalSyncHigh; -} CM_MONITOR_DEVICE_DATA, *PCM_MONITOR_DEVICE_DATA; - -typedef struct _CM_FLOPPY_DEVICE_DATA { - USHORT Version; - USHORT Revision; - CHAR Size[8]; - ULONG MaxDensity; - ULONG MountDensity; - UCHAR StepRateHeadUnloadTime; - UCHAR HeadLoadTime; - UCHAR MotorOffTime; - UCHAR SectorLengthCode; - UCHAR SectorPerTrack; - UCHAR ReadWriteGapLength; - UCHAR DataTransferLength; - UCHAR FormatGapLength; - UCHAR FormatFillCharacter; - UCHAR HeadSettleTime; - UCHAR MotorSettleTime; - UCHAR MaximumTrackValue; - UCHAR DataTransferRate; -} CM_FLOPPY_DEVICE_DATA, *PCM_FLOPPY_DEVICE_DATA; - -typedef enum _KEY_INFORMATION_CLASS { - KeyBasicInformation, - KeyNodeInformation, - KeyFullInformation, - KeyNameInformation, - KeyCachedInformation, - KeyFlagsInformation, - KeyVirtualizationInformation, - KeyHandleTagsInformation, - MaxKeyInfoClass -} KEY_INFORMATION_CLASS; - -typedef struct _KEY_BASIC_INFORMATION { - LARGE_INTEGER LastWriteTime; - ULONG TitleIndex; - ULONG NameLength; - WCHAR Name[1]; -} KEY_BASIC_INFORMATION, *PKEY_BASIC_INFORMATION; - -typedef struct _KEY_CONTROL_FLAGS_INFORMATION { - ULONG ControlFlags; -} KEY_CONTROL_FLAGS_INFORMATION, *PKEY_CONTROL_FLAGS_INFORMATION; - -typedef struct _KEY_FULL_INFORMATION { - LARGE_INTEGER LastWriteTime; - ULONG TitleIndex; - ULONG ClassOffset; - ULONG ClassLength; - ULONG SubKeys; - ULONG MaxNameLen; - ULONG MaxClassLen; - ULONG Values; - ULONG MaxValueNameLen; - ULONG MaxValueDataLen; - WCHAR Class[1]; -} KEY_FULL_INFORMATION, *PKEY_FULL_INFORMATION; - -typedef struct _KEY_HANDLE_TAGS_INFORMATION { - ULONG HandleTags; -} KEY_HANDLE_TAGS_INFORMATION, *PKEY_HANDLE_TAGS_INFORMATION; - -typedef struct _KEY_NODE_INFORMATION { - LARGE_INTEGER LastWriteTime; - ULONG TitleIndex; - ULONG ClassOffset; - ULONG ClassLength; - ULONG NameLength; - WCHAR Name[1]; -} KEY_NODE_INFORMATION, *PKEY_NODE_INFORMATION; - -typedef enum _KEY_SET_INFORMATION_CLASS { - KeyWriteTimeInformation, - KeyWow64FlagsInformation, - KeyControlFlagsInformation, - KeySetVirtualizationInformation, - KeySetDebugInformation, - KeySetHandleTagsInformation, - MaxKeySetInfoClass -} KEY_SET_INFORMATION_CLASS; - -typedef struct _KEY_SET_VIRTUALIZATION_INFORMATION { - ULONG VirtualTarget:1; - ULONG VirtualStore:1; - ULONG VirtualSource:1; - ULONG Reserved:29; -} KEY_SET_VIRTUALIZATION_INFORMATION, *PKEY_SET_VIRTUALIZATION_INFORMATION; - -typedef struct _KEY_VALUE_BASIC_INFORMATION { - ULONG TitleIndex; - ULONG Type; - ULONG NameLength; - WCHAR Name[1]; -} KEY_VALUE_BASIC_INFORMATION, *PKEY_VALUE_BASIC_INFORMATION; - -typedef struct _KEY_VALUE_FULL_INFORMATION { - ULONG TitleIndex; - ULONG Type; - ULONG DataOffset; - ULONG DataLength; - ULONG NameLength; - WCHAR Name[1]; -} KEY_VALUE_FULL_INFORMATION, *PKEY_VALUE_FULL_INFORMATION; - -typedef struct _KEY_VALUE_PARTIAL_INFORMATION { - ULONG TitleIndex; - ULONG Type; - ULONG DataLength; - UCHAR Data[1]; -} KEY_VALUE_PARTIAL_INFORMATION, *PKEY_VALUE_PARTIAL_INFORMATION; - -typedef struct _KEY_VALUE_PARTIAL_INFORMATION_ALIGN64 { - ULONG Type; - ULONG DataLength; - UCHAR Data[1]; -} KEY_VALUE_PARTIAL_INFORMATION_ALIGN64, *PKEY_VALUE_PARTIAL_INFORMATION_ALIGN64; - -typedef struct _KEY_VALUE_ENTRY { - PUNICODE_STRING ValueName; - ULONG DataLength; - ULONG DataOffset; - ULONG Type; -} KEY_VALUE_ENTRY, *PKEY_VALUE_ENTRY; - -typedef enum _KEY_VALUE_INFORMATION_CLASS { - KeyValueBasicInformation, - KeyValueFullInformation, - KeyValuePartialInformation, - KeyValueFullInformationAlign64, - KeyValuePartialInformationAlign64 -} KEY_VALUE_INFORMATION_CLASS; - -typedef struct _KEY_WOW64_FLAGS_INFORMATION { - ULONG UserFlags; -} KEY_WOW64_FLAGS_INFORMATION, *PKEY_WOW64_FLAGS_INFORMATION; - -typedef struct _KEY_WRITE_TIME_INFORMATION { - LARGE_INTEGER LastWriteTime; -} KEY_WRITE_TIME_INFORMATION, *PKEY_WRITE_TIME_INFORMATION; - -typedef enum _REG_NOTIFY_CLASS { - RegNtDeleteKey, - RegNtPreDeleteKey = RegNtDeleteKey, - RegNtSetValueKey, - RegNtPreSetValueKey = RegNtSetValueKey, - RegNtDeleteValueKey, - RegNtPreDeleteValueKey = RegNtDeleteValueKey, - RegNtSetInformationKey, - RegNtPreSetInformationKey = RegNtSetInformationKey, - RegNtRenameKey, - RegNtPreRenameKey = RegNtRenameKey, - RegNtEnumerateKey, - RegNtPreEnumerateKey = RegNtEnumerateKey, - RegNtEnumerateValueKey, - RegNtPreEnumerateValueKey = RegNtEnumerateValueKey, - RegNtQueryKey, - RegNtPreQueryKey = RegNtQueryKey, - RegNtQueryValueKey, - RegNtPreQueryValueKey = RegNtQueryValueKey, - RegNtQueryMultipleValueKey, - RegNtPreQueryMultipleValueKey = RegNtQueryMultipleValueKey, - RegNtPreCreateKey, - RegNtPostCreateKey, - RegNtPreOpenKey, - RegNtPostOpenKey, - RegNtKeyHandleClose, - RegNtPreKeyHandleClose = RegNtKeyHandleClose, - RegNtPostDeleteKey, - RegNtPostSetValueKey, - RegNtPostDeleteValueKey, - RegNtPostSetInformationKey, - RegNtPostRenameKey, - RegNtPostEnumerateKey, - RegNtPostEnumerateValueKey, - RegNtPostQueryKey, - RegNtPostQueryValueKey, - RegNtPostQueryMultipleValueKey, - RegNtPostKeyHandleClose, - RegNtPreCreateKeyEx, - RegNtPostCreateKeyEx, - RegNtPreOpenKeyEx, - RegNtPostOpenKeyEx, - RegNtPreFlushKey, - RegNtPostFlushKey, - RegNtPreLoadKey, - RegNtPostLoadKey, - RegNtPreUnLoadKey, - RegNtPostUnLoadKey, - RegNtPreQueryKeySecurity, - RegNtPostQueryKeySecurity, - RegNtPreSetKeySecurity, - RegNtPostSetKeySecurity, - RegNtCallbackObjectContextCleanup, - RegNtPreRestoreKey, - RegNtPostRestoreKey, - RegNtPreSaveKey, - RegNtPostSaveKey, - RegNtPreReplaceKey, - RegNtPostReplaceKey, - MaxRegNtNotifyClass -} REG_NOTIFY_CLASS, *PREG_NOTIFY_CLASS; - -typedef NTSTATUS -(NTAPI EX_CALLBACK_FUNCTION)( - IN PVOID CallbackContext, - IN PVOID Argument1, - IN PVOID Argument2); -typedef EX_CALLBACK_FUNCTION *PEX_CALLBACK_FUNCTION; - -typedef struct _REG_DELETE_KEY_INFORMATION { - PVOID Object; - PVOID CallContext; - PVOID ObjectContext; - PVOID Reserved; -} REG_DELETE_KEY_INFORMATION, *PREG_DELETE_KEY_INFORMATION -#if (NTDDI_VERSION >= NTDDI_VISTA) -, REG_FLUSH_KEY_INFORMATION, *PREG_FLUSH_KEY_INFORMATION -#endif -; - -typedef struct _REG_SET_VALUE_KEY_INFORMATION { - PVOID Object; - PUNICODE_STRING ValueName; - ULONG TitleIndex; - ULONG Type; - PVOID Data; - ULONG DataSize; - PVOID CallContext; - PVOID ObjectContext; - PVOID Reserved; -} REG_SET_VALUE_KEY_INFORMATION, *PREG_SET_VALUE_KEY_INFORMATION; - -typedef struct _REG_DELETE_VALUE_KEY_INFORMATION { - PVOID Object; - PUNICODE_STRING ValueName; - PVOID CallContext; - PVOID ObjectContext; - PVOID Reserved; -} REG_DELETE_VALUE_KEY_INFORMATION, *PREG_DELETE_VALUE_KEY_INFORMATION; - -typedef struct _REG_SET_INFORMATION_KEY_INFORMATION { - PVOID Object; - KEY_SET_INFORMATION_CLASS KeySetInformationClass; - PVOID KeySetInformation; - ULONG KeySetInformationLength; - PVOID CallContext; - PVOID ObjectContext; - PVOID Reserved; -} REG_SET_INFORMATION_KEY_INFORMATION, *PREG_SET_INFORMATION_KEY_INFORMATION; - -typedef struct _REG_ENUMERATE_KEY_INFORMATION { - PVOID Object; - ULONG Index; - KEY_INFORMATION_CLASS KeyInformationClass; - PVOID KeyInformation; - ULONG Length; - PULONG ResultLength; - PVOID CallContext; - PVOID ObjectContext; - PVOID Reserved; -} REG_ENUMERATE_KEY_INFORMATION, *PREG_ENUMERATE_KEY_INFORMATION; - -typedef struct _REG_ENUMERATE_VALUE_KEY_INFORMATION { - PVOID Object; - ULONG Index; - KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass; - PVOID KeyValueInformation; - ULONG Length; - PULONG ResultLength; - PVOID CallContext; - PVOID ObjectContext; - PVOID Reserved; -} REG_ENUMERATE_VALUE_KEY_INFORMATION, *PREG_ENUMERATE_VALUE_KEY_INFORMATION; - -typedef struct _REG_QUERY_KEY_INFORMATION { - PVOID Object; - KEY_INFORMATION_CLASS KeyInformationClass; - PVOID KeyInformation; - ULONG Length; - PULONG ResultLength; - PVOID CallContext; - PVOID ObjectContext; - PVOID Reserved; -} REG_QUERY_KEY_INFORMATION, *PREG_QUERY_KEY_INFORMATION; - -typedef struct _REG_QUERY_VALUE_KEY_INFORMATION { - PVOID Object; - PUNICODE_STRING ValueName; - KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass; - PVOID KeyValueInformation; - ULONG Length; - PULONG ResultLength; - PVOID CallContext; - PVOID ObjectContext; - PVOID Reserved; -} REG_QUERY_VALUE_KEY_INFORMATION, *PREG_QUERY_VALUE_KEY_INFORMATION; - -typedef struct _REG_QUERY_MULTIPLE_VALUE_KEY_INFORMATION { - PVOID Object; - PKEY_VALUE_ENTRY ValueEntries; - ULONG EntryCount; - PVOID ValueBuffer; - PULONG BufferLength; - PULONG RequiredBufferLength; - PVOID CallContext; - PVOID ObjectContext; - PVOID Reserved; -} REG_QUERY_MULTIPLE_VALUE_KEY_INFORMATION, *PREG_QUERY_MULTIPLE_VALUE_KEY_INFORMATION; - -typedef struct _REG_RENAME_KEY_INFORMATION { - PVOID Object; - PUNICODE_STRING NewName; - PVOID CallContext; - PVOID ObjectContext; - PVOID Reserved; -} REG_RENAME_KEY_INFORMATION, *PREG_RENAME_KEY_INFORMATION; - -typedef struct _REG_CREATE_KEY_INFORMATION { - PUNICODE_STRING CompleteName; - PVOID RootObject; - PVOID ObjectType; - ULONG CreateOptions; - PUNICODE_STRING Class; - PVOID SecurityDescriptor; - PVOID SecurityQualityOfService; - ACCESS_MASK DesiredAccess; - ACCESS_MASK GrantedAccess; - PULONG Disposition; - PVOID *ResultObject; - PVOID CallContext; - PVOID RootObjectContext; - PVOID Transaction; - PVOID Reserved; -} REG_CREATE_KEY_INFORMATION, REG_OPEN_KEY_INFORMATION,*PREG_CREATE_KEY_INFORMATION, *PREG_OPEN_KEY_INFORMATION; - -typedef struct _REG_CREATE_KEY_INFORMATION_V1 { - PUNICODE_STRING CompleteName; - PVOID RootObject; - PVOID ObjectType; - ULONG Options; - PUNICODE_STRING Class; - PVOID SecurityDescriptor; - PVOID SecurityQualityOfService; - ACCESS_MASK DesiredAccess; - ACCESS_MASK GrantedAccess; - PULONG Disposition; - PVOID *ResultObject; - PVOID CallContext; - PVOID RootObjectContext; - PVOID Transaction; - ULONG_PTR Version; - PUNICODE_STRING RemainingName; - ULONG Wow64Flags; - ULONG Attributes; - KPROCESSOR_MODE CheckAccessMode; -} REG_CREATE_KEY_INFORMATION_V1, REG_OPEN_KEY_INFORMATION_V1,*PREG_CREATE_KEY_INFORMATION_V1, *PREG_OPEN_KEY_INFORMATION_V1; - -typedef struct _REG_PRE_CREATE_KEY_INFORMATION { - PUNICODE_STRING CompleteName; -} REG_PRE_CREATE_KEY_INFORMATION, REG_PRE_OPEN_KEY_INFORMATION,*PREG_PRE_CREATE_KEY_INFORMATION, *PREG_PRE_OPEN_KEY_INFORMATION;; - -typedef struct _REG_POST_CREATE_KEY_INFORMATION { - PUNICODE_STRING CompleteName; - PVOID Object; - NTSTATUS Status; -} REG_POST_CREATE_KEY_INFORMATION,REG_POST_OPEN_KEY_INFORMATION, *PREG_POST_CREATE_KEY_INFORMATION, *PREG_POST_OPEN_KEY_INFORMATION; - -typedef struct _REG_POST_OPERATION_INFORMATION { - PVOID Object; - NTSTATUS Status; - PVOID PreInformation; - NTSTATUS ReturnStatus; - PVOID CallContext; - PVOID ObjectContext; - PVOID Reserved; -} REG_POST_OPERATION_INFORMATION,*PREG_POST_OPERATION_INFORMATION; - -typedef struct _REG_KEY_HANDLE_CLOSE_INFORMATION { - PVOID Object; - PVOID CallContext; - PVOID ObjectContext; - PVOID Reserved; -} REG_KEY_HANDLE_CLOSE_INFORMATION, *PREG_KEY_HANDLE_CLOSE_INFORMATION; - -#if (NTDDI_VERSION >= NTDDI_VISTA) - -typedef struct _REG_LOAD_KEY_INFORMATION { - PVOID Object; - PUNICODE_STRING KeyName; - PUNICODE_STRING SourceFile; - ULONG Flags; - PVOID TrustClassObject; - PVOID UserEvent; - ACCESS_MASK DesiredAccess; - PHANDLE RootHandle; - PVOID CallContext; - PVOID ObjectContext; - PVOID Reserved; -} REG_LOAD_KEY_INFORMATION, *PREG_LOAD_KEY_INFORMATION; - -typedef struct _REG_UNLOAD_KEY_INFORMATION { - PVOID Object; - PVOID UserEvent; - PVOID CallContext; - PVOID ObjectContext; - PVOID Reserved; -} REG_UNLOAD_KEY_INFORMATION, *PREG_UNLOAD_KEY_INFORMATION; - -typedef struct _REG_CALLBACK_CONTEXT_CLEANUP_INFORMATION { - PVOID Object; - PVOID ObjectContext; - PVOID Reserved; -} REG_CALLBACK_CONTEXT_CLEANUP_INFORMATION, *PREG_CALLBACK_CONTEXT_CLEANUP_INFORMATION; - -typedef struct _REG_QUERY_KEY_SECURITY_INFORMATION { - PVOID Object; - PSECURITY_INFORMATION SecurityInformation; - PSECURITY_DESCRIPTOR SecurityDescriptor; - PULONG Length; - PVOID CallContext; - PVOID ObjectContext; - PVOID Reserved; -} REG_QUERY_KEY_SECURITY_INFORMATION, *PREG_QUERY_KEY_SECURITY_INFORMATION; - -typedef struct _REG_SET_KEY_SECURITY_INFORMATION { - PVOID Object; - PSECURITY_INFORMATION SecurityInformation; - PSECURITY_DESCRIPTOR SecurityDescriptor; - PVOID CallContext; - PVOID ObjectContext; - PVOID Reserved; -} REG_SET_KEY_SECURITY_INFORMATION, *PREG_SET_KEY_SECURITY_INFORMATION; - -typedef struct _REG_RESTORE_KEY_INFORMATION { - PVOID Object; - HANDLE FileHandle; - ULONG Flags; - PVOID CallContext; - PVOID ObjectContext; - PVOID Reserved; -} REG_RESTORE_KEY_INFORMATION, *PREG_RESTORE_KEY_INFORMATION; - -typedef struct _REG_SAVE_KEY_INFORMATION { - PVOID Object; - HANDLE FileHandle; - ULONG Format; - PVOID CallContext; - PVOID ObjectContext; - PVOID Reserved; -} REG_SAVE_KEY_INFORMATION, *PREG_SAVE_KEY_INFORMATION; - -typedef struct _REG_REPLACE_KEY_INFORMATION { - PVOID Object; - PUNICODE_STRING OldFileName; - PUNICODE_STRING NewFileName; - PVOID CallContext; - PVOID ObjectContext; - PVOID Reserved; -} REG_REPLACE_KEY_INFORMATION, *PREG_REPLACE_KEY_INFORMATION; - -#endif /* NTDDI_VERSION >= NTDDI_VISTA */ - -#define SERVICE_KERNEL_DRIVER 0x00000001 -#define SERVICE_FILE_SYSTEM_DRIVER 0x00000002 -#define SERVICE_ADAPTER 0x00000004 -#define SERVICE_RECOGNIZER_DRIVER 0x00000008 - -#define SERVICE_DRIVER (SERVICE_KERNEL_DRIVER | \ - SERVICE_FILE_SYSTEM_DRIVER | \ - SERVICE_RECOGNIZER_DRIVER) - -#define SERVICE_WIN32_OWN_PROCESS 0x00000010 -#define SERVICE_WIN32_SHARE_PROCESS 0x00000020 -#define SERVICE_WIN32 (SERVICE_WIN32_OWN_PROCESS | \ - SERVICE_WIN32_SHARE_PROCESS) - -#define SERVICE_INTERACTIVE_PROCESS 0x00000100 - -#define SERVICE_TYPE_ALL (SERVICE_WIN32 | \ - SERVICE_ADAPTER | \ - SERVICE_DRIVER | \ - SERVICE_INTERACTIVE_PROCESS) - -/* Service Start Types */ -#define SERVICE_BOOT_START 0x00000000 -#define SERVICE_SYSTEM_START 0x00000001 -#define SERVICE_AUTO_START 0x00000002 -#define SERVICE_DEMAND_START 0x00000003 -#define SERVICE_DISABLED 0x00000004 - -#define SERVICE_ERROR_IGNORE 0x00000000 -#define SERVICE_ERROR_NORMAL 0x00000001 -#define SERVICE_ERROR_SEVERE 0x00000002 -#define SERVICE_ERROR_CRITICAL 0x00000003 - -typedef enum _CM_SERVICE_NODE_TYPE { - DriverType = SERVICE_KERNEL_DRIVER, - FileSystemType = SERVICE_FILE_SYSTEM_DRIVER, - Win32ServiceOwnProcess = SERVICE_WIN32_OWN_PROCESS, - Win32ServiceShareProcess = SERVICE_WIN32_SHARE_PROCESS, - AdapterType = SERVICE_ADAPTER, - RecognizerType = SERVICE_RECOGNIZER_DRIVER -} SERVICE_NODE_TYPE; - -typedef enum _CM_SERVICE_LOAD_TYPE { - BootLoad = SERVICE_BOOT_START, - SystemLoad = SERVICE_SYSTEM_START, - AutoLoad = SERVICE_AUTO_START, - DemandLoad = SERVICE_DEMAND_START, - DisableLoad = SERVICE_DISABLED -} SERVICE_LOAD_TYPE; - -typedef enum _CM_ERROR_CONTROL_TYPE { - IgnoreError = SERVICE_ERROR_IGNORE, - NormalError = SERVICE_ERROR_NORMAL, - SevereError = SERVICE_ERROR_SEVERE, - CriticalError = SERVICE_ERROR_CRITICAL -} SERVICE_ERROR_TYPE; - -#define CM_SERVICE_NETWORK_BOOT_LOAD 0x00000001 -#define CM_SERVICE_VIRTUAL_DISK_BOOT_LOAD 0x00000002 -#define CM_SERVICE_USB_DISK_BOOT_LOAD 0x00000004 - -#define CM_SERVICE_VALID_PROMOTION_MASK (CM_SERVICE_NETWORK_BOOT_LOAD | \ - CM_SERVICE_VIRTUAL_DISK_BOOT_LOAD | \ - CM_SERVICE_USB_DISK_BOOT_LOAD) - -$endif -$if (_NTDDK_) - -typedef struct _KEY_NAME_INFORMATION { - ULONG NameLength; - WCHAR Name[1]; -} KEY_NAME_INFORMATION, *PKEY_NAME_INFORMATION; - -typedef struct _KEY_CACHED_INFORMATION { - LARGE_INTEGER LastWriteTime; - ULONG TitleIndex; - ULONG SubKeys; - ULONG MaxNameLen; - ULONG Values; - ULONG MaxValueNameLen; - ULONG MaxValueDataLen; - ULONG NameLength; -} KEY_CACHED_INFORMATION, *PKEY_CACHED_INFORMATION; - -typedef struct _KEY_VIRTUALIZATION_INFORMATION { - ULONG VirtualizationCandidate:1; - ULONG VirtualizationEnabled:1; - ULONG VirtualTarget:1; - ULONG VirtualStore:1; - ULONG VirtualSource:1; - ULONG Reserved:27; -} KEY_VIRTUALIZATION_INFORMATION, *PKEY_VIRTUALIZATION_INFORMATION; - -#define CmResourceTypeMaximum 8 - -typedef struct _CM_PCCARD_DEVICE_DATA { - UCHAR Flags; - UCHAR ErrorCode; - USHORT Reserved; - ULONG BusData; - ULONG DeviceId; - ULONG LegacyBaseAddress; - UCHAR IRQMap[16]; -} CM_PCCARD_DEVICE_DATA, *PCM_PCCARD_DEVICE_DATA; - -$endif /* _NTDDK_ */ diff --git a/reactos/include/xdk/exfuncs.h b/reactos/include/xdk/exfuncs.h deleted file mode 100644 index 46a5387733a..00000000000 --- a/reactos/include/xdk/exfuncs.h +++ /dev/null @@ -1,1040 +0,0 @@ -/****************************************************************************** - * Executive Functions * - ******************************************************************************/ -$if (_NTDDK_) -static __inline PVOID -ExAllocateFromZone( - IN PZONE_HEADER Zone) -{ - if (Zone->FreeList.Next) - Zone->FreeList.Next = Zone->FreeList.Next->Next; - return (PVOID) Zone->FreeList.Next; -} - -static __inline PVOID -ExFreeToZone( - IN PZONE_HEADER Zone, - IN PVOID Block) -{ - ((PSINGLE_LIST_ENTRY) Block)->Next = Zone->FreeList.Next; - Zone->FreeList.Next = ((PSINGLE_LIST_ENTRY) Block); - return ((PSINGLE_LIST_ENTRY) Block)->Next; -} - -/* - * PVOID - * ExInterlockedAllocateFromZone( - * IN PZONE_HEADER Zone, - * IN PKSPIN_LOCK Lock) - */ -#define ExInterlockedAllocateFromZone(Zone, Lock) \ - ((PVOID) ExInterlockedPopEntryList(&Zone->FreeList, Lock)) - -/* PVOID - * ExInterlockedFreeToZone( - * IN PZONE_HEADER Zone, - * IN PVOID Block, - * IN PKSPIN_LOCK Lock); - */ -#define ExInterlockedFreeToZone(Zone, Block, Lock) \ - ExInterlockedPushEntryList(&(Zone)->FreeList, (PSINGLE_LIST_ENTRY)(Block), Lock) - -/* - * BOOLEAN - * ExIsFullZone( - * IN PZONE_HEADER Zone) - */ -#define ExIsFullZone(Zone) \ - ((Zone)->FreeList.Next == (PSINGLE_LIST_ENTRY) NULL) - -/* BOOLEAN - * ExIsObjectInFirstZoneSegment( - * IN PZONE_HEADER Zone, - * IN PVOID Object); - */ -#define ExIsObjectInFirstZoneSegment(Zone,Object) \ - ((BOOLEAN)( ((PUCHAR)(Object) >= (PUCHAR)(Zone)->SegmentList.Next) && \ - ((PUCHAR)(Object) < (PUCHAR)(Zone)->SegmentList.Next + \ - (Zone)->TotalSegmentSize)) ) - -#define ExAcquireResourceExclusive ExAcquireResourceExclusiveLite -#define ExAcquireResourceShared ExAcquireResourceSharedLite -#define ExConvertExclusiveToShared ExConvertExclusiveToSharedLite -#define ExDeleteResource ExDeleteResourceLite -#define ExInitializeResource ExInitializeResourceLite -#define ExIsResourceAcquiredExclusive ExIsResourceAcquiredExclusiveLite -#define ExIsResourceAcquiredShared ExIsResourceAcquiredSharedLite -#define ExIsResourceAcquired ExIsResourceAcquiredSharedLite -#define ExReleaseResourceForThread ExReleaseResourceForThreadLite - -typedef enum _INTERLOCKED_RESULT { - ResultNegative = RESULT_NEGATIVE, - ResultZero = RESULT_ZERO, - ResultPositive = RESULT_POSITIVE -} INTERLOCKED_RESULT; - -#ifdef _X86_ -NTKERNELAPI -INTERLOCKED_RESULT -FASTCALL -Exfi386InterlockedIncrementLong( - IN OUT LONG volatile *Addend); - -NTKERNELAPI -INTERLOCKED_RESULT -FASTCALL -Exfi386InterlockedDecrementLong( - IN PLONG Addend); - -NTKERNELAPI -ULONG -FASTCALL -Exfi386InterlockedExchangeUlong( - IN PULONG Target, - IN ULONG Value); -#endif - -$endif - -$if (_WDMDDK_) -#define ExInterlockedIncrementLong(Addend,Lock) Exfi386InterlockedIncrementLong(Addend) -#define ExInterlockedDecrementLong(Addend,Lock) Exfi386InterlockedDecrementLong(Addend) -#define ExInterlockedExchangeUlong(Target, Value, Lock) Exfi386InterlockedExchangeUlong(Target, Value) - -#define ExAcquireSpinLock(Lock, OldIrql) KeAcquireSpinLock((Lock), (OldIrql)) -#define ExReleaseSpinLock(Lock, OldIrql) KeReleaseSpinLock((Lock), (OldIrql)) -#define ExAcquireSpinLockAtDpcLevel(Lock) KeAcquireSpinLockAtDpcLevel(Lock) -#define ExReleaseSpinLockFromDpcLevel(Lock) KeReleaseSpinLockFromDpcLevel(Lock) - -#define ExInitializeSListHead InitializeSListHead - -#if defined(_NTHAL_) && defined(_X86_) - -NTKERNELAPI -VOID -FASTCALL -ExiAcquireFastMutex( - IN OUT PFAST_MUTEX FastMutex); - -NTKERNELAPI -VOID -FASTCALL -ExiReleaseFastMutex( - IN OUT PFAST_MUTEX FastMutex); - -NTKERNELAPI -BOOLEAN -FASTCALL -ExiTryToAcquireFastMutex( - IN OUT PFAST_MUTEX FastMutex); - -#define ExAcquireFastMutex ExiAcquireFastMutex -#define ExReleaseFastMutex ExiReleaseFastMutex -#define ExTryToAcquireFastMutex ExiTryToAcquireFastMutex - -#else - -#if (NTDDI_VERSION >= NTDDI_WIN2K) - -NTKERNELAPI -VOID -FASTCALL -ExAcquireFastMutex( - IN OUT PFAST_MUTEX FastMutex); - -NTKERNELAPI -VOID -FASTCALL -ExReleaseFastMutex( - IN OUT PFAST_MUTEX FastMutex); - -NTKERNELAPI -BOOLEAN -FASTCALL -ExTryToAcquireFastMutex( - IN OUT PFAST_MUTEX FastMutex); - -#endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */ - -#endif /* defined(_NTHAL_) && defined(_X86_) */ - -#if defined(_X86_) -#define ExInterlockedAddUlong ExfInterlockedAddUlong -#define ExInterlockedInsertHeadList ExfInterlockedInsertHeadList -#define ExInterlockedInsertTailList ExfInterlockedInsertTailList -#define ExInterlockedRemoveHeadList ExfInterlockedRemoveHeadList -#define ExInterlockedPopEntryList ExfInterlockedPopEntryList -#define ExInterlockedPushEntryList ExfInterlockedPushEntryList -#endif /* defined(_X86_) */ - -#if defined(_WIN64) - -#if defined(_NTDRIVER_) || defined(_NTDDK_) || defined(_NTIFS_) || \ - defined(_NTHAL_) || defined(_NTOSP_) -NTKERNELAPI -USHORT -ExQueryDepthSList(IN PSLIST_HEADER ListHead); -#else -FORCEINLINE -USHORT -ExQueryDepthSList(IN PSLIST_HEADER ListHead) -{ - return (USHORT)(ListHead->Alignment & 0xffff); -} -#endif - -NTKERNELAPI -PSLIST_ENTRY -ExpInterlockedFlushSList( - PSLIST_HEADER ListHead); - -NTKERNELAPI -PSLIST_ENTRY -ExpInterlockedPopEntrySList( - PSLIST_HEADER ListHead); - -NTKERNELAPI -PSLIST_ENTRY -ExpInterlockedPushEntrySList( - PSLIST_HEADER ListHead, - PSLIST_ENTRY ListEntry); - -#define ExInterlockedFlushSList(Head) \ - ExpInterlockedFlushSList(Head) -#define ExInterlockedPopEntrySList(Head, Lock) \ - ExpInterlockedPopEntrySList(Head) -#define ExInterlockedPushEntrySList(Head, Entry, Lock) \ - ExpInterlockedPushEntrySList(Head, Entry) - -#else /* !defined(_WIN64) */ - -#define ExQueryDepthSList(listhead) (listhead)->Depth - -NTKERNELAPI -PSINGLE_LIST_ENTRY -FASTCALL -ExInterlockedFlushSList( - IN OUT PSLIST_HEADER ListHead); - -#endif /* !defined(_WIN64) */ - -#if defined(_WIN2K_COMPAT_SLIST_USAGE) && defined(_X86_) - -NTKERNELAPI -PSINGLE_LIST_ENTRY -FASTCALL -ExInterlockedPopEntrySList( - IN PSLIST_HEADER ListHead, - IN PKSPIN_LOCK Lock); - -NTKERNELAPI -PSINGLE_LIST_ENTRY -FASTCALL -ExInterlockedPushEntrySList( - IN PSLIST_HEADER ListHead, - IN PSINGLE_LIST_ENTRY ListEntry, - IN PKSPIN_LOCK Lock); - -NTKERNELAPI -PVOID -NTAPI -ExAllocateFromPagedLookasideList( - IN OUT PPAGED_LOOKASIDE_LIST Lookaside); - -NTKERNELAPI -VOID -NTAPI -ExFreeToPagedLookasideList( - IN OUT PPAGED_LOOKASIDE_LIST Lookaside, - IN PVOID Entry); - -#else /* !_WIN2K_COMPAT_SLIST_USAGE */ - -#if !defined(_WIN64) -#define ExInterlockedPopEntrySList(_ListHead, _Lock) \ - InterlockedPopEntrySList(_ListHead) -#define ExInterlockedPushEntrySList(_ListHead, _ListEntry, _Lock) \ - InterlockedPushEntrySList(_ListHead, _ListEntry) -#endif - -static __inline -PVOID -ExAllocateFromPagedLookasideList( - IN OUT PPAGED_LOOKASIDE_LIST Lookaside) -{ - PVOID Entry; - - Lookaside->L.TotalAllocates++; - Entry = InterlockedPopEntrySList(&Lookaside->L.ListHead); - if (Entry == NULL) { - Lookaside->L.AllocateMisses++; - Entry = (Lookaside->L.Allocate)(Lookaside->L.Type, - Lookaside->L.Size, - Lookaside->L.Tag); - } - return Entry; -} - -static __inline -VOID -ExFreeToPagedLookasideList( - IN OUT PPAGED_LOOKASIDE_LIST Lookaside, - IN PVOID Entry) -{ - Lookaside->L.TotalFrees++; - if (ExQueryDepthSList(&Lookaside->L.ListHead) >= Lookaside->L.Depth) { - Lookaside->L.FreeMisses++; - (Lookaside->L.Free)(Entry); - } else { - InterlockedPushEntrySList(&Lookaside->L.ListHead, (PSLIST_ENTRY)Entry); - } -} - -#endif /* _WIN2K_COMPAT_SLIST_USAGE */ - - -/* ERESOURCE_THREAD - * ExGetCurrentResourceThread( - * VOID); - */ -#define ExGetCurrentResourceThread() ((ULONG_PTR)PsGetCurrentThread()) - -#define ExReleaseResource(R) (ExReleaseResourceLite(R)) - -/* VOID - * ExInitializeWorkItem( - * IN PWORK_QUEUE_ITEM Item, - * IN PWORKER_THREAD_ROUTINE Routine, - * IN PVOID Context) - */ -#define ExInitializeWorkItem(Item, Routine, Context) \ -{ \ - (Item)->WorkerRoutine = Routine; \ - (Item)->Parameter = Context; \ - (Item)->List.Flink = NULL; \ -} - -FORCEINLINE -VOID -ExInitializeFastMutex( - OUT PFAST_MUTEX FastMutex) -{ - FastMutex->Count = FM_LOCK_BIT; - FastMutex->Owner = NULL; - FastMutex->Contention = 0; - KeInitializeEvent(&FastMutex->Event, SynchronizationEvent, FALSE); - return; -} -$endif - -#if (NTDDI_VERSION >= NTDDI_WIN2K) -$if (_NTDDK_) -NTKERNELAPI -NTSTATUS -NTAPI -ExExtendZone( - IN OUT PZONE_HEADER Zone, - IN OUT PVOID Segment, - IN ULONG SegmentSize); - -NTKERNELAPI -NTSTATUS -NTAPI -ExInitializeZone( - OUT PZONE_HEADER Zone, - IN ULONG BlockSize, - IN OUT PVOID InitialSegment, - IN ULONG InitialSegmentSize); - -NTKERNELAPI -NTSTATUS -NTAPI -ExInterlockedExtendZone( - IN OUT PZONE_HEADER Zone, - IN OUT PVOID Segment, - IN ULONG SegmentSize, - IN OUT PKSPIN_LOCK Lock); - -NTKERNELAPI -NTSTATUS -NTAPI -ExUuidCreate( - OUT UUID *Uuid); - -NTKERNELAPI -DECLSPEC_NORETURN -VOID -NTAPI -ExRaiseAccessViolation(VOID); - -NTKERNELAPI -DECLSPEC_NORETURN -VOID -NTAPI -ExRaiseDatatypeMisalignment(VOID); -$endif - -$if (_WDMDDK_) -NTKERNELAPI -VOID -FASTCALL -ExAcquireFastMutexUnsafe( - IN OUT PFAST_MUTEX FastMutex); - -NTKERNELAPI -VOID -FASTCALL -ExReleaseFastMutexUnsafe( - IN OUT PFAST_MUTEX FastMutex); - -NTKERNELAPI -BOOLEAN -NTAPI -ExAcquireResourceExclusiveLite( - IN OUT PERESOURCE Resource, - IN BOOLEAN Wait); - -NTKERNELAPI -BOOLEAN -NTAPI -ExAcquireResourceSharedLite( - IN OUT PERESOURCE Resource, - IN BOOLEAN Wait); - -NTKERNELAPI -BOOLEAN -NTAPI -ExAcquireSharedStarveExclusive( - IN OUT PERESOURCE Resource, - IN BOOLEAN Wait); - -NTKERNELAPI -BOOLEAN -NTAPI -ExAcquireSharedWaitForExclusive( - IN OUT PERESOURCE Resource, - IN BOOLEAN Wait); - -NTKERNELAPI -PVOID -NTAPI -ExAllocatePool( - IN POOL_TYPE PoolType, - IN SIZE_T NumberOfBytes); - -NTKERNELAPI -PVOID -NTAPI -ExAllocatePoolWithQuota( - IN POOL_TYPE PoolType, - IN SIZE_T NumberOfBytes); - -NTKERNELAPI -PVOID -NTAPI -ExAllocatePoolWithQuotaTag( - IN POOL_TYPE PoolType, - IN SIZE_T NumberOfBytes, - IN ULONG Tag); - -#ifndef POOL_TAGGING -#define ExAllocatePoolWithQuotaTag(a,b,c) ExAllocatePoolWithQuota(a,b) -#endif - -NTKERNELAPI -PVOID -NTAPI -ExAllocatePoolWithTag( - IN POOL_TYPE PoolType, - IN SIZE_T NumberOfBytes, - IN ULONG Tag); - -#ifndef POOL_TAGGING -#define ExAllocatePoolWithTag(a,b,c) ExAllocatePool(a,b) -#endif - -NTKERNELAPI -PVOID -NTAPI -ExAllocatePoolWithTagPriority( - IN POOL_TYPE PoolType, - IN SIZE_T NumberOfBytes, - IN ULONG Tag, - IN EX_POOL_PRIORITY Priority); - -NTKERNELAPI -VOID -NTAPI -ExConvertExclusiveToSharedLite( - IN OUT PERESOURCE Resource); - -NTKERNELAPI -NTSTATUS -NTAPI -ExCreateCallback( - OUT PCALLBACK_OBJECT *CallbackObject, - IN POBJECT_ATTRIBUTES ObjectAttributes, - IN BOOLEAN Create, - IN BOOLEAN AllowMultipleCallbacks); - -NTKERNELAPI -VOID -NTAPI -ExDeleteNPagedLookasideList( - IN OUT PNPAGED_LOOKASIDE_LIST Lookaside); - -NTKERNELAPI -VOID -NTAPI -ExDeletePagedLookasideList( - IN PPAGED_LOOKASIDE_LIST Lookaside); - -NTKERNELAPI -NTSTATUS -NTAPI -ExDeleteResourceLite( - IN OUT PERESOURCE Resource); - -NTKERNELAPI -VOID -NTAPI -ExFreePool( - IN PVOID P); - -NTKERNELAPI -VOID -NTAPI -ExFreePoolWithTag( - IN PVOID P, - IN ULONG Tag); - -NTKERNELAPI -ULONG -NTAPI -ExGetExclusiveWaiterCount( - IN PERESOURCE Resource); - -NTKERNELAPI -KPROCESSOR_MODE -NTAPI -ExGetPreviousMode(VOID); - -NTKERNELAPI -ULONG -NTAPI -ExGetSharedWaiterCount( - IN PERESOURCE Resource); - -NTKERNELAPI -VOID -NTAPI -ExInitializeNPagedLookasideList( - IN PNPAGED_LOOKASIDE_LIST Lookaside, - IN PALLOCATE_FUNCTION Allocate OPTIONAL, - IN PFREE_FUNCTION Free OPTIONAL, - IN ULONG Flags, - IN SIZE_T Size, - IN ULONG Tag, - IN USHORT Depth); - -NTKERNELAPI -VOID -NTAPI -ExInitializePagedLookasideList( - IN PPAGED_LOOKASIDE_LIST Lookaside, - IN PALLOCATE_FUNCTION Allocate OPTIONAL, - IN PFREE_FUNCTION Free OPTIONAL, - IN ULONG Flags, - IN SIZE_T Size, - IN ULONG Tag, - IN USHORT Depth); - -NTKERNELAPI -NTSTATUS -NTAPI -ExInitializeResourceLite( - OUT PERESOURCE Resource); - -NTKERNELAPI -LARGE_INTEGER -NTAPI -ExInterlockedAddLargeInteger( - IN PLARGE_INTEGER Addend, - IN LARGE_INTEGER Increment, - IN PKSPIN_LOCK Lock); - -#if defined(_WIN64) -#define ExInterlockedAddLargeStatistic(Addend, Increment) \ - (VOID)InterlockedAdd64(&(Addend)->QuadPart, Increment) -#else -#define ExInterlockedAddLargeStatistic(Addend, Increment) \ - _InterlockedAddLargeStatistic((PLONGLONG)&(Addend)->QuadPart, Increment) -#endif - -NTKERNELAPI -ULONG -FASTCALL -ExInterlockedAddUlong( - IN PULONG Addend, - IN ULONG Increment, - IN OUT PKSPIN_LOCK Lock); - -#if defined(_AMD64_) || defined(_IA64_) - -#define ExInterlockedCompareExchange64(Destination, Exchange, Comperand, Lock) \ - InterlockedCompareExchange64(Destination, *(Exchange), *(Comperand)) - -#elif defined(_X86_) - -NTKERNELAPI -LONGLONG -FASTCALL -ExfInterlockedCompareExchange64( - IN OUT LONGLONG volatile *Destination, - IN PLONGLONG Exchange, - IN PLONGLONG Comperand); - -#define ExInterlockedCompareExchange64(Destination, Exchange, Comperand, Lock) \ - ExfInterlockedCompareExchange64(Destination, Exchange, Comperand) - -#else - -NTKERNELAPI -LONGLONG -FASTCALL -ExInterlockedCompareExchange64( - IN OUT LONGLONG volatile *Destination, - IN PLONGLONG Exchange, - IN PLONGLONG Comparand, - IN PKSPIN_LOCK Lock); - -#endif /* defined(_AMD64_) || defined(_IA64_) */ - -NTKERNELAPI -PLIST_ENTRY -FASTCALL -ExInterlockedInsertHeadList( - IN OUT PLIST_ENTRY ListHead, - IN OUT PLIST_ENTRY ListEntry, - IN OUT PKSPIN_LOCK Lock); - -NTKERNELAPI -PLIST_ENTRY -FASTCALL -ExInterlockedInsertTailList( - IN OUT PLIST_ENTRY ListHead, - IN OUT PLIST_ENTRY ListEntry, - IN OUT PKSPIN_LOCK Lock); - -NTKERNELAPI -PSINGLE_LIST_ENTRY -FASTCALL -ExInterlockedPopEntryList( - IN OUT PSINGLE_LIST_ENTRY ListHead, - IN OUT PKSPIN_LOCK Lock); - -NTKERNELAPI -PSINGLE_LIST_ENTRY -FASTCALL -ExInterlockedPushEntryList( - IN OUT PSINGLE_LIST_ENTRY ListHead, - IN OUT PSINGLE_LIST_ENTRY ListEntry, - IN OUT PKSPIN_LOCK Lock); - -NTKERNELAPI -PLIST_ENTRY -FASTCALL -ExInterlockedRemoveHeadList( - IN OUT PLIST_ENTRY ListHead, - IN OUT PKSPIN_LOCK Lock); - -NTKERNELAPI -BOOLEAN -NTAPI -ExIsProcessorFeaturePresent( - IN ULONG ProcessorFeature); - -NTKERNELAPI -BOOLEAN -NTAPI -ExIsResourceAcquiredExclusiveLite( - IN PERESOURCE Resource); - -NTKERNELAPI -ULONG -NTAPI -ExIsResourceAcquiredSharedLite( - IN PERESOURCE Resource); - -#define ExIsResourceAcquiredLite ExIsResourceAcquiredSharedLite - -NTKERNELAPI -VOID -NTAPI -ExLocalTimeToSystemTime( - IN PLARGE_INTEGER LocalTime, - OUT PLARGE_INTEGER SystemTime); - -NTKERNELAPI -VOID -NTAPI -ExNotifyCallback( - IN PCALLBACK_OBJECT CallbackObject, - IN PVOID Argument1 OPTIONAL, - IN PVOID Argument2 OPTIONAL); - -NTKERNELAPI -VOID -NTAPI -ExQueueWorkItem( - IN OUT PWORK_QUEUE_ITEM WorkItem, - IN WORK_QUEUE_TYPE QueueType); - -NTKERNELAPI -DECLSPEC_NORETURN -VOID -NTAPI -ExRaiseStatus( - IN NTSTATUS Status); - -NTKERNELAPI -PVOID -NTAPI -ExRegisterCallback( - IN PCALLBACK_OBJECT CallbackObject, - IN PCALLBACK_FUNCTION CallbackFunction, - IN PVOID CallbackContext OPTIONAL); - -NTKERNELAPI -NTSTATUS -NTAPI -ExReinitializeResourceLite( - IN OUT PERESOURCE Resource); - -NTKERNELAPI -VOID -NTAPI -ExReleaseResourceForThreadLite( - IN OUT PERESOURCE Resource, - IN ERESOURCE_THREAD ResourceThreadId); - -NTKERNELAPI -VOID -FASTCALL -ExReleaseResourceLite( - IN OUT PERESOURCE Resource); - -NTKERNELAPI -VOID -NTAPI -ExSetResourceOwnerPointer( - IN OUT PERESOURCE Resource, - IN PVOID OwnerPointer); - -NTKERNELAPI -ULONG -NTAPI -ExSetTimerResolution( - IN ULONG DesiredTime, - IN BOOLEAN SetResolution); - -NTKERNELAPI -VOID -NTAPI -ExSystemTimeToLocalTime( - IN PLARGE_INTEGER SystemTime, - OUT PLARGE_INTEGER LocalTime); - -NTKERNELAPI -VOID -NTAPI -ExUnregisterCallback( - IN OUT PVOID CbRegistration); -$endif - -#endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */ - -$if (_WDMDDK_) -#if (NTDDI_VERSION >= NTDDI_WINXP) - -NTKERNELAPI -BOOLEAN -FASTCALL -ExAcquireRundownProtection( - IN OUT PEX_RUNDOWN_REF RunRef); - -NTKERNELAPI -VOID -FASTCALL -ExInitializeRundownProtection( - OUT PEX_RUNDOWN_REF RunRef); - -NTKERNELAPI -VOID -FASTCALL -ExReInitializeRundownProtection( - IN OUT PEX_RUNDOWN_REF RunRef); - -NTKERNELAPI -VOID -FASTCALL -ExReleaseRundownProtection( - IN OUT PEX_RUNDOWN_REF RunRef); - -NTKERNELAPI -VOID -FASTCALL -ExRundownCompleted( - OUT PEX_RUNDOWN_REF RunRef); - -NTKERNELAPI -BOOLEAN -NTAPI -ExVerifySuite( - IN SUITE_TYPE SuiteType); - -NTKERNELAPI -VOID -FASTCALL -ExWaitForRundownProtectionRelease( - IN OUT PEX_RUNDOWN_REF RunRef); - -#endif /* (NTDDI_VERSION >= NTDDI_WINXP) */ - -#if (NTDDI_VERSION >= NTDDI_WINXPSP2) - -NTKERNELAPI -BOOLEAN -FASTCALL -ExAcquireRundownProtectionEx( - IN OUT PEX_RUNDOWN_REF RunRef, - IN ULONG Count); - -NTKERNELAPI -VOID -FASTCALL -ExReleaseRundownProtectionEx( - IN OUT PEX_RUNDOWN_REF RunRef, - IN ULONG Count); - -#endif /* (NTDDI_VERSION >= NTDDI_WINXPSP2) */ - -#if (NTDDI_VERSION >= NTDDI_WS03SP1) - -NTKERNELAPI -PEX_RUNDOWN_REF_CACHE_AWARE -NTAPI -ExAllocateCacheAwareRundownProtection( - IN POOL_TYPE PoolType, - IN ULONG PoolTag); - -NTKERNELAPI -SIZE_T -NTAPI -ExSizeOfRundownProtectionCacheAware(VOID); - -NTKERNELAPI -PVOID -NTAPI -ExEnterCriticalRegionAndAcquireResourceShared( - IN OUT PERESOURCE Resource); - -NTKERNELAPI -PVOID -NTAPI -ExEnterCriticalRegionAndAcquireResourceExclusive( - IN OUT PERESOURCE Resource); - -NTKERNELAPI -PVOID -NTAPI -ExEnterCriticalRegionAndAcquireSharedWaitForExclusive( - IN OUT PERESOURCE Resource); - -NTKERNELAPI -VOID -FASTCALL -ExReleaseResourceAndLeaveCriticalRegion( - IN OUT PERESOURCE Resource); - -NTKERNELAPI -VOID -NTAPI -ExInitializeRundownProtectionCacheAware( - OUT PEX_RUNDOWN_REF_CACHE_AWARE RunRefCacheAware, - IN SIZE_T RunRefSize); - -NTKERNELAPI -VOID -NTAPI -ExFreeCacheAwareRundownProtection( - IN OUT PEX_RUNDOWN_REF_CACHE_AWARE RunRefCacheAware); - -NTKERNELAPI -BOOLEAN -FASTCALL -ExAcquireRundownProtectionCacheAware( - IN OUT PEX_RUNDOWN_REF_CACHE_AWARE RunRefCacheAware); - -NTKERNELAPI -VOID -FASTCALL -ExReleaseRundownProtectionCacheAware( - IN OUT PEX_RUNDOWN_REF_CACHE_AWARE RunRefCacheAware); - -NTKERNELAPI -BOOLEAN -FASTCALL -ExAcquireRundownProtectionCacheAwareEx( - IN OUT PEX_RUNDOWN_REF_CACHE_AWARE RunRefCacheAware, - IN ULONG Count); - -NTKERNELAPI -VOID -FASTCALL -ExReleaseRundownProtectionCacheAwareEx( - IN OUT PEX_RUNDOWN_REF_CACHE_AWARE RunRef, - IN ULONG Count); - -NTKERNELAPI -VOID -FASTCALL -ExWaitForRundownProtectionReleaseCacheAware( - IN OUT PEX_RUNDOWN_REF_CACHE_AWARE RunRef); - -NTKERNELAPI -VOID -FASTCALL -ExReInitializeRundownProtectionCacheAware( - IN OUT PEX_RUNDOWN_REF_CACHE_AWARE RunRefCacheAware); - -NTKERNELAPI -VOID -FASTCALL -ExRundownCompletedCacheAware( - IN OUT PEX_RUNDOWN_REF_CACHE_AWARE RunRefCacheAware); - -#endif /* (NTDDI_VERSION >= NTDDI_WS03SP1) */ - -#if (NTDDI_VERSION >= NTDDI_VISTA) - -NTKERNELAPI -NTSTATUS -NTAPI -ExInitializeLookasideListEx( - OUT PLOOKASIDE_LIST_EX Lookaside, - IN PALLOCATE_FUNCTION_EX Allocate OPTIONAL, - IN PFREE_FUNCTION_EX Free OPTIONAL, - IN POOL_TYPE PoolType, - IN ULONG Flags, - IN SIZE_T Size, - IN ULONG Tag, - IN USHORT Depth); - -NTKERNELAPI -VOID -NTAPI -ExDeleteLookasideListEx( - IN OUT PLOOKASIDE_LIST_EX Lookaside); - -NTKERNELAPI -VOID -NTAPI -ExFlushLookasideListEx( - IN OUT PLOOKASIDE_LIST_EX Lookaside); - -FORCEINLINE -PVOID -ExAllocateFromLookasideListEx( - IN OUT PLOOKASIDE_LIST_EX Lookaside) -{ - PVOID Entry; - - Lookaside->L.TotalAllocates += 1; - Entry = InterlockedPopEntrySList(&Lookaside->L.ListHead); - if (Entry == NULL) { - Lookaside->L.AllocateMisses += 1; - Entry = (Lookaside->L.AllocateEx)(Lookaside->L.Type, - Lookaside->L.Size, - Lookaside->L.Tag, - Lookaside); - } - return Entry; -} - -FORCEINLINE -VOID -ExFreeToLookasideListEx( - IN OUT PLOOKASIDE_LIST_EX Lookaside, - IN PVOID Entry) -{ - Lookaside->L.TotalFrees += 1; - if (ExQueryDepthSList(&Lookaside->L.ListHead) >= Lookaside->L.Depth) { - Lookaside->L.FreeMisses += 1; - (Lookaside->L.FreeEx)(Entry, Lookaside); - } else { - InterlockedPushEntrySList(&Lookaside->L.ListHead, (PSLIST_ENTRY)Entry); - } - return; -} - -#endif /* (NTDDI_VERSION >= NTDDI_VISTA) */ - -#if (NTDDI_VERSION >= NTDDI_WIN7) - -NTKERNELAPI -VOID -NTAPI -ExSetResourceOwnerPointerEx( - IN OUT PERESOURCE Resource, - IN PVOID OwnerPointer, - IN ULONG Flags); - -#define FLAG_OWNER_POINTER_IS_THREAD 0x1 - -#endif /* (NTDDI_VERSION >= NTDDI_WIN7) */ - -static __inline PVOID -ExAllocateFromNPagedLookasideList( - IN OUT PNPAGED_LOOKASIDE_LIST Lookaside) -{ - PVOID Entry; - - Lookaside->L.TotalAllocates++; -#if defined(_WIN2K_COMPAT_SLIST_USAGE) && defined(_X86_) - Entry = ExInterlockedPopEntrySList(&Lookaside->L.ListHead, - &Lookaside->Lock__ObsoleteButDoNotDelete); -#else - Entry = InterlockedPopEntrySList(&Lookaside->L.ListHead); -#endif - if (Entry == NULL) { - Lookaside->L.AllocateMisses++; - Entry = (Lookaside->L.Allocate)(Lookaside->L.Type, - Lookaside->L.Size, - Lookaside->L.Tag); - } - return Entry; -} - -static __inline VOID -ExFreeToNPagedLookasideList( - IN OUT PNPAGED_LOOKASIDE_LIST Lookaside, - IN PVOID Entry) -{ - Lookaside->L.TotalFrees++; - if (ExQueryDepthSList(&Lookaside->L.ListHead) >= Lookaside->L.Depth) { - Lookaside->L.FreeMisses++; - (Lookaside->L.Free)(Entry); - } else { -#if defined(_WIN2K_COMPAT_SLIST_USAGE) && defined(_X86_) - ExInterlockedPushEntrySList(&Lookaside->L.ListHead, - (PSLIST_ENTRY)Entry, - &Lookaside->Lock__ObsoleteButDoNotDelete); -#else - InterlockedPushEntrySList(&Lookaside->L.ListHead, (PSLIST_ENTRY)Entry); -#endif - } -} - -$endif - diff --git a/reactos/include/xdk/extypes.h b/reactos/include/xdk/extypes.h deleted file mode 100644 index 4d18ac12f04..00000000000 --- a/reactos/include/xdk/extypes.h +++ /dev/null @@ -1,289 +0,0 @@ -/****************************************************************************** - * Executive Types * - ******************************************************************************/ -$if (_WDMDDK_) - -#define EX_RUNDOWN_ACTIVE 0x1 -#define EX_RUNDOWN_COUNT_SHIFT 0x1 -#define EX_RUNDOWN_COUNT_INC (1 << EX_RUNDOWN_COUNT_SHIFT) - -typedef struct _FAST_MUTEX { - volatile LONG Count; - PKTHREAD Owner; - ULONG Contention; - KEVENT Event; - ULONG OldIrql; -} FAST_MUTEX, *PFAST_MUTEX; - -typedef enum _SUITE_TYPE { - SmallBusiness, - Enterprise, - BackOffice, - CommunicationServer, - TerminalServer, - SmallBusinessRestricted, - EmbeddedNT, - DataCenter, - SingleUserTS, - Personal, - Blade, - EmbeddedRestricted, - SecurityAppliance, - StorageServer, - ComputeServer, - WHServer, - MaxSuiteType -} SUITE_TYPE; - -typedef enum _EX_POOL_PRIORITY { - LowPoolPriority, - LowPoolPrioritySpecialPoolOverrun = 8, - LowPoolPrioritySpecialPoolUnderrun = 9, - NormalPoolPriority = 16, - NormalPoolPrioritySpecialPoolOverrun = 24, - NormalPoolPrioritySpecialPoolUnderrun = 25, - HighPoolPriority = 32, - HighPoolPrioritySpecialPoolOverrun = 40, - HighPoolPrioritySpecialPoolUnderrun = 41 -} EX_POOL_PRIORITY; - -#if !defined(_WIN64) && (defined(_NTDDK_) || defined(_NTIFS_) || defined(_NDIS_)) -#define LOOKASIDE_ALIGN -#else -#define LOOKASIDE_ALIGN /* FIXME: DECLSPEC_CACHEALIGN */ -#endif - -typedef struct _LOOKASIDE_LIST_EX *PLOOKASIDE_LIST_EX; - -typedef PVOID -(NTAPI *PALLOCATE_FUNCTION)( - IN POOL_TYPE PoolType, - IN SIZE_T NumberOfBytes, - IN ULONG Tag); - -typedef PVOID -(NTAPI *PALLOCATE_FUNCTION_EX)( - IN POOL_TYPE PoolType, - IN SIZE_T NumberOfBytes, - IN ULONG Tag, - IN OUT PLOOKASIDE_LIST_EX Lookaside); - -typedef VOID -(NTAPI *PFREE_FUNCTION)( - IN PVOID Buffer); - -typedef VOID -(NTAPI *PFREE_FUNCTION_EX)( - IN PVOID Buffer, - IN OUT PLOOKASIDE_LIST_EX Lookaside); - -typedef VOID -(NTAPI CALLBACK_FUNCTION)( - IN PVOID CallbackContext OPTIONAL, - IN PVOID Argument1 OPTIONAL, - IN PVOID Argument2 OPTIONAL); -typedef CALLBACK_FUNCTION *PCALLBACK_FUNCTION; - -#define GENERAL_LOOKASIDE_LAYOUT \ - union { \ - SLIST_HEADER ListHead; \ - SINGLE_LIST_ENTRY SingleListHead; \ - } DUMMYUNIONNAME; \ - USHORT Depth; \ - USHORT MaximumDepth; \ - ULONG TotalAllocates; \ - union { \ - ULONG AllocateMisses; \ - ULONG AllocateHits; \ - } DUMMYUNIONNAME2; \ - \ - ULONG TotalFrees; \ - union { \ - ULONG FreeMisses; \ - ULONG FreeHits; \ - } DUMMYUNIONNAME3; \ - \ - POOL_TYPE Type; \ - ULONG Tag; \ - ULONG Size; \ - union { \ - PALLOCATE_FUNCTION_EX AllocateEx; \ - PALLOCATE_FUNCTION Allocate; \ - } DUMMYUNIONNAME4; \ - \ - union { \ - PFREE_FUNCTION_EX FreeEx; \ - PFREE_FUNCTION Free; \ - } DUMMYUNIONNAME5; \ - \ - LIST_ENTRY ListEntry; \ - ULONG LastTotalAllocates; \ - union { \ - ULONG LastAllocateMisses; \ - ULONG LastAllocateHits; \ - } DUMMYUNIONNAME6; \ - ULONG Future[2]; - -typedef struct LOOKASIDE_ALIGN _GENERAL_LOOKASIDE { - GENERAL_LOOKASIDE_LAYOUT -} GENERAL_LOOKASIDE, *PGENERAL_LOOKASIDE; - -typedef struct _GENERAL_LOOKASIDE_POOL { - GENERAL_LOOKASIDE_LAYOUT -} GENERAL_LOOKASIDE_POOL, *PGENERAL_LOOKASIDE_POOL; - -#define LOOKASIDE_CHECK(f) \ - C_ASSERT(FIELD_OFFSET(GENERAL_LOOKASIDE,f) == FIELD_OFFSET(GENERAL_LOOKASIDE_POOL,f)) - -LOOKASIDE_CHECK(TotalFrees); -LOOKASIDE_CHECK(Tag); -LOOKASIDE_CHECK(Future); - -typedef struct _PAGED_LOOKASIDE_LIST { - GENERAL_LOOKASIDE L; -#if !defined(_AMD64_) && !defined(_IA64_) - FAST_MUTEX Lock__ObsoleteButDoNotDelete; -#endif -} PAGED_LOOKASIDE_LIST, *PPAGED_LOOKASIDE_LIST; - -typedef struct LOOKASIDE_ALIGN _NPAGED_LOOKASIDE_LIST { - GENERAL_LOOKASIDE L; -#if !defined(_AMD64_) && !defined(_IA64_) - KSPIN_LOCK Lock__ObsoleteButDoNotDelete; -#endif -} NPAGED_LOOKASIDE_LIST, *PNPAGED_LOOKASIDE_LIST; - -#define LOOKASIDE_MINIMUM_BLOCK_SIZE (RTL_SIZEOF_THROUGH_FIELD (SLIST_ENTRY, Next)) - -typedef struct _LOOKASIDE_LIST_EX { - GENERAL_LOOKASIDE_POOL L; -} LOOKASIDE_LIST_EX; - -#if (NTDDI_VERSION >= NTDDI_VISTA) - -#define EX_LOOKASIDE_LIST_EX_FLAGS_RAISE_ON_FAIL 0x00000001UL -#define EX_LOOKASIDE_LIST_EX_FLAGS_FAIL_NO_RAISE 0x00000002UL - -#define EX_MAXIMUM_LOOKASIDE_DEPTH_BASE 256 -#define EX_MAXIMUM_LOOKASIDE_DEPTH_LIMIT 1024 - -#endif /* (NTDDI_VERSION >= NTDDI_VISTA) */ - -typedef struct _EX_RUNDOWN_REF { - __GNU_EXTENSION union { - volatile ULONG_PTR Count; - volatile PVOID Ptr; - }; -} EX_RUNDOWN_REF, *PEX_RUNDOWN_REF; - -typedef struct _EX_RUNDOWN_REF_CACHE_AWARE *PEX_RUNDOWN_REF_CACHE_AWARE; - -typedef enum _WORK_QUEUE_TYPE { - CriticalWorkQueue, - DelayedWorkQueue, - HyperCriticalWorkQueue, - MaximumWorkQueue -} WORK_QUEUE_TYPE; - -typedef VOID -(NTAPI WORKER_THREAD_ROUTINE)( - IN PVOID Parameter); -typedef WORKER_THREAD_ROUTINE *PWORKER_THREAD_ROUTINE; - -typedef struct _WORK_QUEUE_ITEM { - LIST_ENTRY List; - PWORKER_THREAD_ROUTINE WorkerRoutine; - volatile PVOID Parameter; -} WORK_QUEUE_ITEM, *PWORK_QUEUE_ITEM; - -typedef ULONG_PTR ERESOURCE_THREAD, *PERESOURCE_THREAD; - -typedef struct _OWNER_ENTRY { - ERESOURCE_THREAD OwnerThread; - union { - struct { - ULONG IoPriorityBoosted:1; - ULONG OwnerReferenced:1; - ULONG OwnerCount:30; - }; - ULONG TableSize; - }; -} OWNER_ENTRY, *POWNER_ENTRY; - -typedef struct _ERESOURCE { - LIST_ENTRY SystemResourcesList; - POWNER_ENTRY OwnerTable; - SHORT ActiveCount; - USHORT Flag; - volatile PKSEMAPHORE SharedWaiters; - volatile PKEVENT ExclusiveWaiters; - OWNER_ENTRY OwnerEntry; - ULONG ActiveEntries; - ULONG ContentionCount; - ULONG NumberOfSharedWaiters; - ULONG NumberOfExclusiveWaiters; -#if defined(_WIN64) - PVOID Reserved2; -#endif - __GNU_EXTENSION union { - PVOID Address; - ULONG_PTR CreatorBackTraceIndex; - }; - KSPIN_LOCK SpinLock; -} ERESOURCE, *PERESOURCE; - -/* ERESOURCE.Flag */ -#define ResourceNeverExclusive 0x0010 -#define ResourceReleaseByOtherThread 0x0020 -#define ResourceOwnedExclusive 0x0080 - -#define RESOURCE_HASH_TABLE_SIZE 64 - -typedef struct _RESOURCE_HASH_ENTRY { - LIST_ENTRY ListEntry; - PVOID Address; - ULONG ContentionCount; - ULONG Number; -} RESOURCE_HASH_ENTRY, *PRESOURCE_HASH_ENTRY; - -typedef struct _RESOURCE_PERFORMANCE_DATA { - ULONG ActiveResourceCount; - ULONG TotalResourceCount; - ULONG ExclusiveAcquire; - ULONG SharedFirstLevel; - ULONG SharedSecondLevel; - ULONG StarveFirstLevel; - ULONG StarveSecondLevel; - ULONG WaitForExclusive; - ULONG OwnerTableExpands; - ULONG MaximumTableExpand; - LIST_ENTRY HashTable[RESOURCE_HASH_TABLE_SIZE]; -} RESOURCE_PERFORMANCE_DATA, *PRESOURCE_PERFORMANCE_DATA; - -/* Global debug flag */ -#if DEVL -extern ULONG NtGlobalFlag; -#define IF_NTOS_DEBUG(FlagName) if (NtGlobalFlag & (FLG_##FlagName)) -#else -#define IF_NTOS_DEBUG(FlagName) if(FALSE) -#endif - -$endif /* _WDMDDK_ */ -$if (_NTDDK_) - -typedef struct _ZONE_SEGMENT_HEADER { - SINGLE_LIST_ENTRY SegmentList; - PVOID Reserved; -} ZONE_SEGMENT_HEADER, *PZONE_SEGMENT_HEADER; - -typedef struct _ZONE_HEADER { - SINGLE_LIST_ENTRY FreeList; - SINGLE_LIST_ENTRY SegmentList; - ULONG BlockSize; - ULONG TotalSegmentSize; -} ZONE_HEADER, *PZONE_HEADER; - -#define PROTECTED_POOL 0x80000000 - -$endif /* _NTDDK_ */ - diff --git a/reactos/include/xdk/generate.bat b/reactos/include/xdk/generate.bat deleted file mode 100644 index e26f34aa105..00000000000 --- a/reactos/include/xdk/generate.bat +++ /dev/null @@ -1,4 +0,0 @@ - - -..\..\output-i386\tools\hpp\hpp.exe wdm.template.h wdm.h -..\..\output-i386\tools\hpp\hpp.exe ntddk.template.h ntddk.h diff --git a/reactos/include/xdk/halfuncs.h b/reactos/include/xdk/halfuncs.h deleted file mode 100644 index 547f4e4b7ce..00000000000 --- a/reactos/include/xdk/halfuncs.h +++ /dev/null @@ -1,346 +0,0 @@ -/* Hardware Abstraction Layer Functions */ - -#if (NTDDI_VERSION >= NTDDI_WIN2K) - -#if defined(USE_DMA_MACROS) && !defined(_NTHAL_) && (defined(_NTDDK_) || defined(_NTDRIVER_)) || defined(_WDM_INCLUDED_) -$if (_WDMDDK_) - -FORCEINLINE -PVOID -NTAPI -HalAllocateCommonBuffer( - IN PDMA_ADAPTER DmaAdapter, - IN ULONG Length, - OUT PPHYSICAL_ADDRESS LogicalAddress, - IN BOOLEAN CacheEnabled) -{ - PALLOCATE_COMMON_BUFFER allocateCommonBuffer; - PVOID commonBuffer; - - allocateCommonBuffer = *(DmaAdapter)->DmaOperations->AllocateCommonBuffer; - ASSERT( allocateCommonBuffer != NULL ); - commonBuffer = allocateCommonBuffer( DmaAdapter, Length, LogicalAddress, CacheEnabled ); - return commonBuffer; -} - -FORCEINLINE -VOID -NTAPI -HalFreeCommonBuffer( - IN PDMA_ADAPTER DmaAdapter, - IN ULONG Length, - IN PHYSICAL_ADDRESS LogicalAddress, - IN PVOID VirtualAddress, - IN BOOLEAN CacheEnabled) -{ - PFREE_COMMON_BUFFER freeCommonBuffer; - - freeCommonBuffer = *(DmaAdapter)->DmaOperations->FreeCommonBuffer; - ASSERT( freeCommonBuffer != NULL ); - freeCommonBuffer( DmaAdapter, Length, LogicalAddress, VirtualAddress, CacheEnabled ); -} - -FORCEINLINE -ULONG -NTAPI -HalReadDmaCounter( - IN PDMA_ADAPTER DmaAdapter) -{ - PREAD_DMA_COUNTER readDmaCounter; - ULONG counter; - - readDmaCounter = *(DmaAdapter)->DmaOperations->ReadDmaCounter; - ASSERT( readDmaCounter != NULL ); - counter = readDmaCounter( DmaAdapter ); - return counter; -} - -FORCEINLINE -ULONG -HalGetDmaAlignment( - IN PDMA_ADAPTER DmaAdapter) -{ - PGET_DMA_ALIGNMENT getDmaAlignment; - ULONG alignment; - - getDmaAlignment = *(DmaAdapter)->DmaOperations->GetDmaAlignment; - ASSERT( getDmaAlignment != NULL ); - alignment = getDmaAlignment( DmaAdapter ); - return alignment; -} - -$endif -$if (_NTDDK_) - -/* Nothing here */ - -#else /* USE_DMA_MACROS ... */ - -//DECLSPEC_DEPRECATED_DDK -NTHALAPI -VOID -NTAPI -IoFreeAdapterChannel( - IN PADAPTER_OBJECT AdapterObject); - -//DECLSPEC_DEPRECATED_DDK -NTHALAPI -BOOLEAN -NTAPI -IoFlushAdapterBuffers( - IN PADAPTER_OBJECT AdapterObject, - IN PMDL Mdl, - IN PVOID MapRegisterBase, - IN PVOID CurrentVa, - IN ULONG Length, - IN BOOLEAN WriteToDevice); - -//DECLSPEC_DEPRECATED_DDK -NTHALAPI -VOID -NTAPI -IoFreeMapRegisters( - IN PADAPTER_OBJECT AdapterObject, - IN PVOID MapRegisterBase, - IN ULONG NumberOfMapRegisters); - -//DECLSPEC_DEPRECATED_DDK -NTHALAPI -PVOID -NTAPI -HalAllocateCommonBuffer( - IN PADAPTER_OBJECT AdapterObject, - IN ULONG Length, - OUT PPHYSICAL_ADDRESS LogicalAddress, - IN BOOLEAN CacheEnabled); - -//DECLSPEC_DEPRECATED_DDK -NTHALAPI -VOID -NTAPI -HalFreeCommonBuffer( - IN PADAPTER_OBJECT AdapterObject, - IN ULONG Length, - IN PHYSICAL_ADDRESS LogicalAddress, - IN PVOID VirtualAddress, - IN BOOLEAN CacheEnabled); - -//DECLSPEC_DEPRECATED_DDK -NTHALAPI -ULONG -NTAPI -HalReadDmaCounter( - IN PADAPTER_OBJECT AdapterObject); - -NTHALAPI -NTSTATUS -NTAPI -HalAllocateAdapterChannel( - IN PADAPTER_OBJECT AdapterObject, - IN PWAIT_CONTEXT_BLOCK Wcb, - IN ULONG NumberOfMapRegisters, - IN PDRIVER_CONTROL ExecutionRoutine); - -$endif /* _NTDDK_ */ -#endif /* USE_DMA_MACROS ... */ -$if (_NTDDK_) - -#if !defined(NO_LEGACY_DRIVERS) -NTHALAPI -NTSTATUS -NTAPI -HalAssignSlotResources( - IN PUNICODE_STRING RegistryPath, - IN PUNICODE_STRING DriverClassName, - IN PDRIVER_OBJECT DriverObject, - IN PDEVICE_OBJECT DeviceObject, - IN INTERFACE_TYPE BusType, - IN ULONG BusNumber, - IN ULONG SlotNumber, - IN OUT PCM_RESOURCE_LIST *AllocatedResources); - -NTHALAPI -ULONG -NTAPI -HalGetInterruptVector( - IN INTERFACE_TYPE InterfaceType, - IN ULONG BusNumber, - IN ULONG BusInterruptLevel, - IN ULONG BusInterruptVector, - OUT PKIRQL Irql, - OUT PKAFFINITY Affinity); - -NTHALAPI -ULONG -NTAPI -HalSetBusData( - IN BUS_DATA_TYPE BusDataType, - IN ULONG BusNumber, - IN ULONG SlotNumber, - IN PVOID Buffer, - IN ULONG Length); - -NTHALAPI -ULONG -NTAPI -HalGetBusData( - IN BUS_DATA_TYPE BusDataType, - IN ULONG BusNumber, - IN ULONG SlotNumber, - OUT PVOID Buffer, - IN ULONG Length); - -NTHALAPI -BOOLEAN -NTAPI -HalMakeBeep( - IN ULONG Frequency); -#endif /* !defined(NO_LEGACY_DRIVERS) */ - -NTHALAPI -PADAPTER_OBJECT -NTAPI -HalGetAdapter( - IN PDEVICE_DESCRIPTION DeviceDescription, - OUT PULONG NumberOfMapRegisters); - -VOID -NTAPI -HalPutDmaAdapter( - IN PADAPTER_OBJECT DmaAdapter); - -NTHALAPI -VOID -NTAPI -HalAcquireDisplayOwnership( - IN PHAL_RESET_DISPLAY_PARAMETERS ResetDisplayParameters); - -NTHALAPI -ULONG -NTAPI -HalGetBusDataByOffset( - IN BUS_DATA_TYPE BusDataType, - IN ULONG BusNumber, - IN ULONG SlotNumber, - OUT PVOID Buffer, - IN ULONG Offset, - IN ULONG Length); - -NTHALAPI -ULONG -NTAPI -HalSetBusDataByOffset( - IN BUS_DATA_TYPE BusDataType, - IN ULONG BusNumber, - IN ULONG SlotNumber, - IN PVOID Buffer, - IN ULONG Offset, - IN ULONG Length); - -NTHALAPI -BOOLEAN -NTAPI -HalTranslateBusAddress( - IN INTERFACE_TYPE InterfaceType, - IN ULONG BusNumber, - IN PHYSICAL_ADDRESS BusAddress, - IN OUT PULONG AddressSpace, - OUT PPHYSICAL_ADDRESS TranslatedAddress); - -NTHALAPI -PVOID -NTAPI -HalAllocateCrashDumpRegisters( - IN PADAPTER_OBJECT AdapterObject, - IN OUT PULONG NumberOfMapRegisters); - -NTSTATUS -NTAPI -HalGetScatterGatherList( - IN PADAPTER_OBJECT DmaAdapter, - IN PDEVICE_OBJECT DeviceObject, - IN PMDL Mdl, - IN PVOID CurrentVa, - IN ULONG Length, - IN PDRIVER_LIST_CONTROL ExecutionRoutine, - IN PVOID Context, - IN BOOLEAN WriteToDevice); - -VOID -NTAPI -HalPutScatterGatherList( - IN PADAPTER_OBJECT DmaAdapter, - IN PSCATTER_GATHER_LIST ScatterGather, - IN BOOLEAN WriteToDevice); - -$endif /* _NTDDK_ */ -#endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */ -$if (_NTDDK_) - -#if (NTDDI_VERSION >= NTDDI_WINXP) -NTKERNELAPI -VOID -FASTCALL -HalExamineMBR( - IN PDEVICE_OBJECT DeviceObject, - IN ULONG SectorSize, - IN ULONG MBRTypeIdentifier, - OUT PVOID *Buffer); -#endif /* (NTDDI_VERSION >= NTDDI_WINXP) */ - -#if (NTDDI_VERSION >= NTDDI_WIN7) - -NTSTATUS -NTAPI -HalAllocateHardwareCounters( - IN PGROUP_AFFINITY GroupAffinty, - IN ULONG GroupCount, - IN PPHYSICAL_COUNTER_RESOURCE_LIST ResourceList, - OUT PHANDLE CounterSetHandle); - -NTSTATUS -NTAPI -HalFreeHardwareCounters( - IN HANDLE CounterSetHandle); - -#endif /* (NTDDI_VERSION >= NTDDI_WIN7) */ - -#if defined(_IA64_) -#if (NTDDI_VERSION >= NTDDI_WIN2K) -NTHALAPI -ULONG -NTAPI -HalGetDmaAlignmentRequirement(VOID); -#endif -#endif /* defined(_IA64_) */ - -#if defined(_M_IX86) || defined(_M_AMD64) -#define HalGetDmaAlignmentRequirement() 1L -#endif - -#if (NTDDI_VERSION >= NTDDI_WIN7) - -typedef struct _WHEA_ERROR_SOURCE_DESCRIPTOR *PWHEA_ERROR_SOURCE_DESCRIPTOR; -typedef struct _WHEA_ERROR_RECORD *PWHEA_ERROR_RECORD; - -NTHALAPI -VOID -NTAPI -HalBugCheckSystem( - IN PWHEA_ERROR_SOURCE_DESCRIPTOR ErrorSource, - IN PWHEA_ERROR_RECORD ErrorRecord); - -#else - -typedef struct _WHEA_ERROR_RECORD *PWHEA_ERROR_RECORD; - -NTHALAPI -VOID -NTAPI -HalBugCheckSystem( - IN PWHEA_ERROR_RECORD ErrorRecord); - -#endif /* (NTDDI_VERSION >= NTDDI_WIN7) */ - -$endif /* _NTDDK_ */ - diff --git a/reactos/include/xdk/haltypes.h b/reactos/include/xdk/haltypes.h deleted file mode 100644 index a9a031776fd..00000000000 --- a/reactos/include/xdk/haltypes.h +++ /dev/null @@ -1,551 +0,0 @@ -/* Hardware Abstraction Layer Types */ - -$if (_NTDDK_) -typedef BOOLEAN -(NTAPI *PHAL_RESET_DISPLAY_PARAMETERS)( - IN ULONG Columns, - IN ULONG Rows); - -typedef PBUS_HANDLER -(FASTCALL *pHalHandlerForBus)( - IN INTERFACE_TYPE InterfaceType, - IN ULONG BusNumber); - -typedef VOID -(FASTCALL *pHalReferenceBusHandler)( - IN PBUS_HANDLER BusHandler); - -typedef enum _HAL_QUERY_INFORMATION_CLASS { - HalInstalledBusInformation, - HalProfileSourceInformation, - HalInformationClassUnused1, - HalPowerInformation, - HalProcessorSpeedInformation, - HalCallbackInformation, - HalMapRegisterInformation, - HalMcaLogInformation, - HalFrameBufferCachingInformation, - HalDisplayBiosInformation, - HalProcessorFeatureInformation, - HalNumaTopologyInterface, - HalErrorInformation, - HalCmcLogInformation, - HalCpeLogInformation, - HalQueryMcaInterface, - HalQueryAMLIIllegalIOPortAddresses, - HalQueryMaxHotPlugMemoryAddress, - HalPartitionIpiInterface, - HalPlatformInformation, - HalQueryProfileSourceList, - HalInitLogInformation, - HalFrequencyInformation, - HalProcessorBrandString, - HalHypervisorInformation, - HalPlatformTimerInformation, - HalAcpiAuditInformation -} HAL_QUERY_INFORMATION_CLASS, *PHAL_QUERY_INFORMATION_CLASS; - -typedef enum _HAL_SET_INFORMATION_CLASS { - HalProfileSourceInterval, - HalProfileSourceInterruptHandler, - HalMcaRegisterDriver, - HalKernelErrorHandler, - HalCmcRegisterDriver, - HalCpeRegisterDriver, - HalMcaLog, - HalCmcLog, - HalCpeLog, - HalGenerateCmcInterrupt, - HalProfileSourceTimerHandler, - HalEnlightenment, - HalProfileDpgoSourceInterruptHandler -} HAL_SET_INFORMATION_CLASS, *PHAL_SET_INFORMATION_CLASS; - -typedef NTSTATUS -(NTAPI *pHalQuerySystemInformation)( - IN HAL_QUERY_INFORMATION_CLASS InformationClass, - IN ULONG BufferSize, - IN OUT PVOID Buffer, - OUT PULONG ReturnedLength); - -typedef NTSTATUS -(NTAPI *pHalSetSystemInformation)( - IN HAL_SET_INFORMATION_CLASS InformationClass, - IN ULONG BufferSize, - IN PVOID Buffer); - -typedef VOID -(FASTCALL *pHalExamineMBR)( - IN PDEVICE_OBJECT DeviceObject, - IN ULONG SectorSize, - IN ULONG MBRTypeIdentifier, - OUT PVOID *Buffer); - -typedef NTSTATUS -(FASTCALL *pHalIoReadPartitionTable)( - IN PDEVICE_OBJECT DeviceObject, - IN ULONG SectorSize, - IN BOOLEAN ReturnRecognizedPartitions, - OUT struct _DRIVE_LAYOUT_INFORMATION **PartitionBuffer); - -typedef NTSTATUS -(FASTCALL *pHalIoSetPartitionInformation)( - IN PDEVICE_OBJECT DeviceObject, - IN ULONG SectorSize, - IN ULONG PartitionNumber, - IN ULONG PartitionType); - -typedef NTSTATUS -(FASTCALL *pHalIoWritePartitionTable)( - IN PDEVICE_OBJECT DeviceObject, - IN ULONG SectorSize, - IN ULONG SectorsPerTrack, - IN ULONG NumberOfHeads, - IN struct _DRIVE_LAYOUT_INFORMATION *PartitionBuffer); - -typedef NTSTATUS -(NTAPI *pHalQueryBusSlots)( - IN PBUS_HANDLER BusHandler, - IN ULONG BufferSize, - OUT PULONG SlotNumbers, - OUT PULONG ReturnedLength); - -typedef NTSTATUS -(NTAPI *pHalInitPnpDriver)( - VOID); - -typedef struct _PM_DISPATCH_TABLE { - ULONG Signature; - ULONG Version; - PVOID Function[1]; -} PM_DISPATCH_TABLE, *PPM_DISPATCH_TABLE; - -typedef NTSTATUS -(NTAPI *pHalInitPowerManagement)( - IN PPM_DISPATCH_TABLE PmDriverDispatchTable, - OUT PPM_DISPATCH_TABLE *PmHalDispatchTable); - -typedef struct _DMA_ADAPTER* -(NTAPI *pHalGetDmaAdapter)( - IN PVOID Context, - IN struct _DEVICE_DESCRIPTION *DeviceDescriptor, - OUT PULONG NumberOfMapRegisters); - -typedef NTSTATUS -(NTAPI *pHalGetInterruptTranslator)( - IN INTERFACE_TYPE ParentInterfaceType, - IN ULONG ParentBusNumber, - IN INTERFACE_TYPE BridgeInterfaceType, - IN USHORT Size, - IN USHORT Version, - OUT PTRANSLATOR_INTERFACE Translator, - OUT PULONG BridgeBusNumber); - -typedef NTSTATUS -(NTAPI *pHalStartMirroring)( - VOID); - -typedef NTSTATUS -(NTAPI *pHalEndMirroring)( - IN ULONG PassNumber); - -typedef NTSTATUS -(NTAPI *pHalMirrorPhysicalMemory)( - IN PHYSICAL_ADDRESS PhysicalAddress, - IN LARGE_INTEGER NumberOfBytes); - -typedef NTSTATUS -(NTAPI *pHalMirrorVerify)( - IN PHYSICAL_ADDRESS PhysicalAddress, - IN LARGE_INTEGER NumberOfBytes); - -typedef BOOLEAN -(NTAPI *pHalTranslateBusAddress)( - IN INTERFACE_TYPE InterfaceType, - IN ULONG BusNumber, - IN PHYSICAL_ADDRESS BusAddress, - IN OUT PULONG AddressSpace, - OUT PPHYSICAL_ADDRESS TranslatedAddress); - -typedef NTSTATUS -(NTAPI *pHalAssignSlotResources)( - IN PUNICODE_STRING RegistryPath, - IN PUNICODE_STRING DriverClassName OPTIONAL, - IN PDRIVER_OBJECT DriverObject, - IN PDEVICE_OBJECT DeviceObject, - IN INTERFACE_TYPE BusType, - IN ULONG BusNumber, - IN ULONG SlotNumber, - IN OUT PCM_RESOURCE_LIST *AllocatedResources); - -typedef VOID -(NTAPI *pHalHaltSystem)( - VOID); - -typedef BOOLEAN -(NTAPI *pHalResetDisplay)( - VOID); - -typedef struct _MAP_REGISTER_ENTRY { - PVOID MapRegister; - BOOLEAN WriteToDevice; -} MAP_REGISTER_ENTRY, *PMAP_REGISTER_ENTRY; - -typedef UCHAR -(NTAPI *pHalVectorToIDTEntry)( - ULONG Vector); - -typedef BOOLEAN -(NTAPI *pHalFindBusAddressTranslation)( - IN PHYSICAL_ADDRESS BusAddress, - IN OUT PULONG AddressSpace, - OUT PPHYSICAL_ADDRESS TranslatedAddress, - IN OUT PULONG_PTR Context, - IN BOOLEAN NextBus); - -typedef VOID -(NTAPI *pHalEndOfBoot)( - VOID); - -typedef PVOID -(NTAPI *pHalGetAcpiTable)( - IN ULONG Signature, - IN PCSTR OemId OPTIONAL, - IN PCSTR OemTableId OPTIONAL); - -#if defined(_IA64_) -typedef NTSTATUS -(*pHalGetErrorCapList)( - IN OUT PULONG CapsListLength, - IN OUT PUCHAR ErrorCapList); - -typedef NTSTATUS -(*pHalInjectError)( - IN ULONG BufferLength, - IN PUCHAR Buffer); -#endif - -typedef VOID -(NTAPI *PCI_ERROR_HANDLER_CALLBACK)( - VOID); - -typedef VOID -(NTAPI *pHalSetPciErrorHandlerCallback)( - IN PCI_ERROR_HANDLER_CALLBACK Callback); - -#if 1 /* Not present in WDK 7600 */ -typedef VOID -(FASTCALL *pHalIoAssignDriveLetters)( - IN struct _LOADER_PARAMETER_BLOCK *LoaderBlock, - IN PSTRING NtDeviceName, - OUT PUCHAR NtSystemPath, - OUT PSTRING NtSystemPathString); -#endif - -typedef struct { - ULONG Version; - pHalQuerySystemInformation HalQuerySystemInformation; - pHalSetSystemInformation HalSetSystemInformation; - pHalQueryBusSlots HalQueryBusSlots; - ULONG Spare1; - pHalExamineMBR HalExamineMBR; -#if 1 /* Not present in WDK 7600 */ - pHalIoAssignDriveLetters HalIoAssignDriveLetters; -#endif - pHalIoReadPartitionTable HalIoReadPartitionTable; - pHalIoSetPartitionInformation HalIoSetPartitionInformation; - pHalIoWritePartitionTable HalIoWritePartitionTable; - pHalHandlerForBus HalReferenceHandlerForBus; - pHalReferenceBusHandler HalReferenceBusHandler; - pHalReferenceBusHandler HalDereferenceBusHandler; - pHalInitPnpDriver HalInitPnpDriver; - pHalInitPowerManagement HalInitPowerManagement; - pHalGetDmaAdapter HalGetDmaAdapter; - pHalGetInterruptTranslator HalGetInterruptTranslator; - pHalStartMirroring HalStartMirroring; - pHalEndMirroring HalEndMirroring; - pHalMirrorPhysicalMemory HalMirrorPhysicalMemory; - pHalEndOfBoot HalEndOfBoot; - pHalMirrorVerify HalMirrorVerify; - pHalGetAcpiTable HalGetCachedAcpiTable; - pHalSetPciErrorHandlerCallback HalSetPciErrorHandlerCallback; -#if defined(_IA64_) - pHalGetErrorCapList HalGetErrorCapList; - pHalInjectError HalInjectError; -#endif -} HAL_DISPATCH, *PHAL_DISPATCH; - -/* GCC/MSVC and WDK compatible declaration */ -extern NTKERNELAPI HAL_DISPATCH HalDispatchTable; - -#if defined(_NTOSKRNL_) || defined(_BLDR_) -#define HALDISPATCH (&HalDispatchTable) -#else -/* This is a WDK compatibility definition */ -#define HalDispatchTable (&HalDispatchTable) -#define HALDISPATCH HalDispatchTable -#endif - -#define HAL_DISPATCH_VERSION 3 /* FIXME: when to use 4? */ -#define HalDispatchTableVersion HALDISPATCH->Version -#define HalQuerySystemInformation HALDISPATCH->HalQuerySystemInformation -#define HalSetSystemInformation HALDISPATCH->HalSetSystemInformation -#define HalQueryBusSlots HALDISPATCH->HalQueryBusSlots -#define HalReferenceHandlerForBus HALDISPATCH->HalReferenceHandlerForBus -#define HalReferenceBusHandler HALDISPATCH->HalReferenceBusHandler -#define HalDereferenceBusHandler HALDISPATCH->HalDereferenceBusHandler -#define HalInitPnpDriver HALDISPATCH->HalInitPnpDriver -#define HalInitPowerManagement HALDISPATCH->HalInitPowerManagement -#define HalGetDmaAdapter HALDISPATCH->HalGetDmaAdapter -#define HalGetInterruptTranslator HALDISPATCH->HalGetInterruptTranslator -#define HalStartMirroring HALDISPATCH->HalStartMirroring -#define HalEndMirroring HALDISPATCH->HalEndMirroring -#define HalMirrorPhysicalMemory HALDISPATCH->HalMirrorPhysicalMemory -#define HalEndOfBoot HALDISPATCH->HalEndOfBoot -#define HalMirrorVerify HALDISPATCH->HalMirrorVerify -#define HalGetCachedAcpiTable HALDISPATCH->HalGetCachedAcpiTable -#define HalSetPciErrorHandlerCallback HALDISPATCH->HalSetPciErrorHandlerCallback -#if defined(_IA64_) -#define HalGetErrorCapList HALDISPATCH->HalGetErrorCapList -#define HalInjectError HALDISPATCH->HalInjectError -#endif - -typedef struct _HAL_BUS_INFORMATION { - INTERFACE_TYPE BusType; - BUS_DATA_TYPE ConfigurationType; - ULONG BusNumber; - ULONG Reserved; -} HAL_BUS_INFORMATION, *PHAL_BUS_INFORMATION; - -typedef struct _HAL_PROFILE_SOURCE_INFORMATION { - KPROFILE_SOURCE Source; - BOOLEAN Supported; - ULONG Interval; -} HAL_PROFILE_SOURCE_INFORMATION, *PHAL_PROFILE_SOURCE_INFORMATION; - -typedef struct _HAL_PROFILE_SOURCE_INFORMATION_EX { - KPROFILE_SOURCE Source; - BOOLEAN Supported; - ULONG_PTR Interval; - ULONG_PTR DefInterval; - ULONG_PTR MaxInterval; - ULONG_PTR MinInterval; -} HAL_PROFILE_SOURCE_INFORMATION_EX, *PHAL_PROFILE_SOURCE_INFORMATION_EX; - -typedef struct _HAL_PROFILE_SOURCE_INTERVAL { - KPROFILE_SOURCE Source; - ULONG_PTR Interval; -} HAL_PROFILE_SOURCE_INTERVAL, *PHAL_PROFILE_SOURCE_INTERVAL; - -typedef struct _HAL_PROFILE_SOURCE_LIST { - KPROFILE_SOURCE Source; - PWSTR Description; -} HAL_PROFILE_SOURCE_LIST, *PHAL_PROFILE_SOURCE_LIST; - -typedef enum _HAL_DISPLAY_BIOS_INFORMATION { - HalDisplayInt10Bios, - HalDisplayEmulatedBios, - HalDisplayNoBios -} HAL_DISPLAY_BIOS_INFORMATION, *PHAL_DISPLAY_BIOS_INFORMATION; - -typedef struct _HAL_POWER_INFORMATION { - ULONG TBD; -} HAL_POWER_INFORMATION, *PHAL_POWER_INFORMATION; - -typedef struct _HAL_PROCESSOR_SPEED_INFO { - ULONG ProcessorSpeed; -} HAL_PROCESSOR_SPEED_INFORMATION, *PHAL_PROCESSOR_SPEED_INFORMATION; - -typedef struct _HAL_CALLBACKS { - PCALLBACK_OBJECT SetSystemInformation; - PCALLBACK_OBJECT BusCheck; -} HAL_CALLBACKS, *PHAL_CALLBACKS; - -typedef struct _HAL_PROCESSOR_FEATURE { - ULONG UsableFeatureBits; -} HAL_PROCESSOR_FEATURE; - -typedef NTSTATUS -(NTAPI *PHALIOREADWRITEHANDLER)( - IN BOOLEAN fRead, - IN ULONG dwAddr, - IN ULONG dwSize, - IN OUT PULONG pdwData); - -typedef struct _HAL_AMLI_BAD_IO_ADDRESS_LIST { - ULONG BadAddrBegin; - ULONG BadAddrSize; - ULONG OSVersionTrigger; - PHALIOREADWRITEHANDLER IOHandler; -} HAL_AMLI_BAD_IO_ADDRESS_LIST, *PHAL_AMLI_BAD_IO_ADDRESS_LIST; - -#if defined(_X86_) || defined(_IA64_) || defined(_AMD64_) - -typedef VOID -(NTAPI *PHALMCAINTERFACELOCK)( - VOID); - -typedef VOID -(NTAPI *PHALMCAINTERFACEUNLOCK)( - VOID); - -typedef NTSTATUS -(NTAPI *PHALMCAINTERFACEREADREGISTER)( - IN UCHAR BankNumber, - IN OUT PVOID Exception); - -typedef struct _HAL_MCA_INTERFACE { - PHALMCAINTERFACELOCK Lock; - PHALMCAINTERFACEUNLOCK Unlock; - PHALMCAINTERFACEREADREGISTER ReadRegister; -} HAL_MCA_INTERFACE; - -typedef enum { - ApicDestinationModePhysical = 1, - ApicDestinationModeLogicalFlat, - ApicDestinationModeLogicalClustered, - ApicDestinationModeUnknown -} HAL_APIC_DESTINATION_MODE, *PHAL_APIC_DESTINATION_MODE; - -#if defined(_AMD64_) - -struct _KTRAP_FRAME; -struct _KEXCEPTION_FRAME; - -typedef ERROR_SEVERITY -(NTAPI *PDRIVER_EXCPTN_CALLBACK)( - IN PVOID Context, - IN struct _KTRAP_FRAME *TrapFrame, - IN struct _KEXCEPTION_FRAME *ExceptionFrame, - IN PMCA_EXCEPTION Exception); - -#endif - -#if defined(_X86_) || defined(_IA64_) -typedef -#if defined(_IA64_) -ERROR_SEVERITY -#else -VOID -#endif -(NTAPI *PDRIVER_EXCPTN_CALLBACK)( - IN PVOID Context, - IN PMCA_EXCEPTION BankLog); -#endif - -typedef PDRIVER_EXCPTN_CALLBACK PDRIVER_MCA_EXCEPTION_CALLBACK; - -typedef struct _MCA_DRIVER_INFO { - PDRIVER_MCA_EXCEPTION_CALLBACK ExceptionCallback; - PKDEFERRED_ROUTINE DpcCallback; - PVOID DeviceContext; -} MCA_DRIVER_INFO, *PMCA_DRIVER_INFO; - -typedef struct _HAL_ERROR_INFO { - ULONG Version; - ULONG InitMaxSize; - ULONG McaMaxSize; - ULONG McaPreviousEventsCount; - ULONG McaCorrectedEventsCount; - ULONG McaKernelDeliveryFails; - ULONG McaDriverDpcQueueFails; - ULONG McaReserved; - ULONG CmcMaxSize; - ULONG CmcPollingInterval; - ULONG CmcInterruptsCount; - ULONG CmcKernelDeliveryFails; - ULONG CmcDriverDpcQueueFails; - ULONG CmcGetStateFails; - ULONG CmcClearStateFails; - ULONG CmcReserved; - ULONGLONG CmcLogId; - ULONG CpeMaxSize; - ULONG CpePollingInterval; - ULONG CpeInterruptsCount; - ULONG CpeKernelDeliveryFails; - ULONG CpeDriverDpcQueueFails; - ULONG CpeGetStateFails; - ULONG CpeClearStateFails; - ULONG CpeInterruptSources; - ULONGLONG CpeLogId; - ULONGLONG KernelReserved[4]; -} HAL_ERROR_INFO, *PHAL_ERROR_INFO; - -#define HAL_MCE_INTERRUPTS_BASED ((ULONG)-1) -#define HAL_MCE_DISABLED ((ULONG)0) - -#define HAL_CMC_INTERRUPTS_BASED HAL_MCE_INTERRUPTS_BASED -#define HAL_CMC_DISABLED HAL_MCE_DISABLED - -#define HAL_CPE_INTERRUPTS_BASED HAL_MCE_INTERRUPTS_BASED -#define HAL_CPE_DISABLED HAL_MCE_DISABLED - -#define HAL_MCA_INTERRUPTS_BASED HAL_MCE_INTERRUPTS_BASED -#define HAL_MCA_DISABLED HAL_MCE_DISABLED - -typedef VOID -(NTAPI *PDRIVER_CMC_EXCEPTION_CALLBACK)( - IN PVOID Context, - IN PCMC_EXCEPTION CmcLog); - -typedef VOID -(NTAPI *PDRIVER_CPE_EXCEPTION_CALLBACK)( - IN PVOID Context, - IN PCPE_EXCEPTION CmcLog); - -typedef struct _CMC_DRIVER_INFO { - PDRIVER_CMC_EXCEPTION_CALLBACK ExceptionCallback; - PKDEFERRED_ROUTINE DpcCallback; - PVOID DeviceContext; -} CMC_DRIVER_INFO, *PCMC_DRIVER_INFO; - -typedef struct _CPE_DRIVER_INFO { - PDRIVER_CPE_EXCEPTION_CALLBACK ExceptionCallback; - PKDEFERRED_ROUTINE DpcCallback; - PVOID DeviceContext; -} CPE_DRIVER_INFO, *PCPE_DRIVER_INFO; - -#endif // defined(_X86_) || defined(_IA64_) || defined(_AMD64_) - -#if defined(_IA64_) - -typedef NTSTATUS -(*HALSENDCROSSPARTITIONIPI)( - IN USHORT ProcessorID, - IN UCHAR HardwareVector); - -typedef NTSTATUS -(*HALRESERVECROSSPARTITIONINTERRUPTVECTOR)( - OUT PULONG Vector, - OUT PKIRQL Irql, - IN OUT PGROUP_AFFINITY Affinity, - OUT PUCHAR HardwareVector); - -typedef VOID -(*HALFREECROSSPARTITIONINTERRUPTVECTOR)( - IN ULONG Vector, - IN PGROUP_AFFINITY Affinity); - -typedef struct _HAL_CROSS_PARTITION_IPI_INTERFACE { - HALSENDCROSSPARTITIONIPI HalSendCrossPartitionIpi; - HALRESERVECROSSPARTITIONINTERRUPTVECTOR HalReserveCrossPartitionInterruptVector; - HALFREECROSSPARTITIONINTERRUPTVECTOR HalFreeCrossPartitionInterruptVector; -} HAL_CROSS_PARTITION_IPI_INTERFACE; - -#define HAL_CROSS_PARTITION_IPI_INTERFACE_MINIMUM_SIZE \ - FIELD_OFFSET(HAL_CROSS_PARTITION_IPI_INTERFACE, \ - HalFreeCrossPartitionInterruptVector) - -#endif /* defined(_IA64_) */ - -typedef struct _HAL_PLATFORM_INFORMATION { - ULONG PlatformFlags; -} HAL_PLATFORM_INFORMATION, *PHAL_PLATFORM_INFORMATION; - -#define HAL_PLATFORM_DISABLE_WRITE_COMBINING 0x01L -#define HAL_PLATFORM_DISABLE_PTCG 0x04L -#define HAL_PLATFORM_DISABLE_UC_MAIN_MEMORY 0x08L -#define HAL_PLATFORM_ENABLE_WRITE_COMBINING_MMIO 0x10L -#define HAL_PLATFORM_ACPI_TABLES_CACHED 0x20L -$endif - diff --git a/reactos/include/xdk/ia64/ke.h b/reactos/include/xdk/ia64/ke.h deleted file mode 100644 index 2920636bf54..00000000000 --- a/reactos/include/xdk/ia64/ke.h +++ /dev/null @@ -1,38 +0,0 @@ -$if (_WDMDDK_) -/** Kernel definitions for IA64 **/ - -/* Interrupt request levels */ -#define PASSIVE_LEVEL 0 -#define LOW_LEVEL 0 -#define APC_LEVEL 1 -#define DISPATCH_LEVEL 2 -#define CMC_LEVEL 3 -#define DEVICE_LEVEL_BASE 4 -#define PC_LEVEL 12 -#define IPI_LEVEL 14 -#define DRS_LEVEL 14 -#define CLOCK_LEVEL 13 -#define POWER_LEVEL 15 -#define PROFILE_LEVEL 15 -#define HIGH_LEVEL 15 - -#define KI_USER_SHARED_DATA ((ULONG_PTR)(KADDRESS_BASE + 0xFFFE0000)) -extern volatile LARGE_INTEGER KeTickCount; - -#define PAUSE_PROCESSOR __yield(); - -FORCEINLINE -VOID -KeFlushWriteBuffer(VOID) -{ - __mf (); - return; -} - -NTSYSAPI -PKTHREAD -NTAPI -KeGetCurrentThread(VOID); - -$endif - diff --git a/reactos/include/xdk/interlocked.h b/reactos/include/xdk/interlocked.h deleted file mode 100644 index 722096bf18e..00000000000 --- a/reactos/include/xdk/interlocked.h +++ /dev/null @@ -1,193 +0,0 @@ -/****************************************************************************** - * INTERLOCKED Functions * - ******************************************************************************/ -// -// Intrinsics (note: taken from our winnt.h) -// FIXME: 64-bit -// -#if defined(__GNUC__) - -static __inline__ BOOLEAN -InterlockedBitTestAndSet( - IN LONG volatile *Base, - IN LONG Bit) -{ -#if defined(_M_IX86) - LONG OldBit; - __asm__ __volatile__("lock " - "btsl %2,%1\n\t" - "sbbl %0,%0\n\t" - :"=r" (OldBit),"+m" (*Base) - :"Ir" (Bit) - : "memory"); - return OldBit; -#else - return (_InterlockedOr(Base, 1 << Bit) >> Bit) & 1; -#endif -} - -static __inline__ BOOLEAN -InterlockedBitTestAndReset( - IN LONG volatile *Base, - IN LONG Bit) -{ -#if defined(_M_IX86) - LONG OldBit; - __asm__ __volatile__("lock " - "btrl %2,%1\n\t" - "sbbl %0,%0\n\t" - :"=r" (OldBit),"+m" (*Base) - :"Ir" (Bit) - : "memory"); - return OldBit; -#else - return (_InterlockedAnd(Base, ~(1 << Bit)) >> Bit) & 1; -#endif -} - -#endif /* defined(__GNUC__) */ - -#define BitScanForward _BitScanForward -#define BitScanReverse _BitScanReverse -#define BitTest _bittest -#define BitTestAndComplement _bittestandcomplement -#define BitTestAndSet _bittestandset -#define BitTestAndReset _bittestandreset -#define InterlockedBitTestAndSet _interlockedbittestandset -#define InterlockedBitTestAndReset _interlockedbittestandreset - -#ifdef _M_AMD64 -#define BitTest64 _bittest64 -#define BitTestAndComplement64 _bittestandcomplement64 -#define BitTestAndSet64 _bittestandset64 -#define BitTestAndReset64 _bittestandreset64 -#define InterlockedBitTestAndSet64 _interlockedbittestandset64 -#define InterlockedBitTestAndReset64 _interlockedbittestandreset64 -#endif - -#if !defined(__INTERLOCKED_DECLARED) -#define __INTERLOCKED_DECLARED - -#if defined (_X86_) -#if defined(NO_INTERLOCKED_INTRINSICS) -NTKERNELAPI -LONG -FASTCALL -InterlockedIncrement( - IN OUT LONG volatile *Addend); - -NTKERNELAPI -LONG -FASTCALL -InterlockedDecrement( - IN OUT LONG volatile *Addend); - -NTKERNELAPI -LONG -FASTCALL -InterlockedCompareExchange( - IN OUT LONG volatile *Destination, - IN LONG Exchange, - IN LONG Comparand); - -NTKERNELAPI -LONG -FASTCALL -InterlockedExchange( - IN OUT LONG volatile *Destination, - IN LONG Value); - -NTKERNELAPI -LONG -FASTCALL -InterlockedExchangeAdd( - IN OUT LONG volatile *Addend, - IN LONG Value); - -#else /* !defined(NO_INTERLOCKED_INTRINSICS) */ - -#define InterlockedExchange _InterlockedExchange -#define InterlockedIncrement _InterlockedIncrement -#define InterlockedDecrement _InterlockedDecrement -#define InterlockedExchangeAdd _InterlockedExchangeAdd -#define InterlockedCompareExchange _InterlockedCompareExchange -#define InterlockedOr _InterlockedOr -#define InterlockedAnd _InterlockedAnd -#define InterlockedXor _InterlockedXor - -#endif /* !defined(NO_INTERLOCKED_INTRINSICS) */ - -#endif /* defined (_X86_) */ - -#if !defined (_WIN64) -/* - * PVOID - * InterlockedExchangePointer( - * IN OUT PVOID volatile *Target, - * IN PVOID Value) - */ -#define InterlockedExchangePointer(Target, Value) \ - ((PVOID) InterlockedExchange((PLONG) Target, (LONG) Value)) - -/* - * PVOID - * InterlockedCompareExchangePointer( - * IN OUT PVOID *Destination, - * IN PVOID Exchange, - * IN PVOID Comparand) - */ -#define InterlockedCompareExchangePointer(Destination, Exchange, Comparand) \ - ((PVOID) InterlockedCompareExchange((PLONG) Destination, (LONG) Exchange, (LONG) Comparand)) - -#define InterlockedExchangeAddSizeT(a, b) InterlockedExchangeAdd((LONG *)a, b) -#define InterlockedIncrementSizeT(a) InterlockedIncrement((LONG *)a) -#define InterlockedDecrementSizeT(a) InterlockedDecrement((LONG *)a) - -#endif // !defined (_WIN64) - -#if defined (_M_AMD64) - -#define InterlockedExchangeAddSizeT(a, b) InterlockedExchangeAdd64((LONGLONG *)a, (LONGLONG)b) -#define InterlockedIncrementSizeT(a) InterlockedIncrement64((LONGLONG *)a) -#define InterlockedDecrementSizeT(a) InterlockedDecrement64((LONGLONG *)a) -#define InterlockedAnd _InterlockedAnd -#define InterlockedOr _InterlockedOr -#define InterlockedXor _InterlockedXor -#define InterlockedIncrement _InterlockedIncrement -#define InterlockedDecrement _InterlockedDecrement -#define InterlockedAdd _InterlockedAdd -#define InterlockedExchange _InterlockedExchange -#define InterlockedExchangeAdd _InterlockedExchangeAdd -#define InterlockedCompareExchange _InterlockedCompareExchange -#define InterlockedAnd64 _InterlockedAnd64 -#define InterlockedOr64 _InterlockedOr64 -#define InterlockedXor64 _InterlockedXor64 -#define InterlockedIncrement64 _InterlockedIncrement64 -#define InterlockedDecrement64 _InterlockedDecrement64 -#define InterlockedAdd64 _InterlockedAdd64 -#define InterlockedExchange64 _InterlockedExchange64 -#define InterlockedExchangeAdd64 _InterlockedExchangeAdd64 -#define InterlockedCompareExchange64 _InterlockedCompareExchange64 -#define InterlockedCompareExchangePointer _InterlockedCompareExchangePointer -#define InterlockedExchangePointer _InterlockedExchangePointer -#define InterlockedBitTestAndSet64 _interlockedbittestandset64 -#define InterlockedBitTestAndReset64 _interlockedbittestandreset64 - -#endif // _M_AMD64 - -#if defined(_M_AMD64) && !defined(RC_INVOKED) && !defined(MIDL_PASS) -//#if !defined(_X86AMD64_) // FIXME: what's _X86AMD64_ used for? -FORCEINLINE -LONG64 -InterlockedAdd64( - IN OUT LONG64 volatile *Addend, - IN LONG64 Value) -{ - return InterlockedExchangeAdd64(Addend, Value) + Value; -} -//#endif -#endif - -#endif /* !__INTERLOCKED_DECLARED */ - - diff --git a/reactos/include/xdk/iofuncs.h b/reactos/include/xdk/iofuncs.h deleted file mode 100644 index a1a2fcf88ee..00000000000 --- a/reactos/include/xdk/iofuncs.h +++ /dev/null @@ -1,2284 +0,0 @@ -/****************************************************************************** - * I/O Manager Functions * - ******************************************************************************/ -$if (_NTDDK_) -/* - * VOID IoAssignArcName( - * IN PUNICODE_STRING ArcName, - * IN PUNICODE_STRING DeviceName); - */ -#define IoAssignArcName(_ArcName, _DeviceName) ( \ - IoCreateSymbolicLink((_ArcName), (_DeviceName))) - -/* - * VOID - * IoDeassignArcName( - * IN PUNICODE_STRING ArcName) - */ -#define IoDeassignArcName IoDeleteSymbolicLink - -VOID -FORCEINLINE -NTAPI -IoInitializeDriverCreateContext( - PIO_DRIVER_CREATE_CONTEXT DriverContext) -{ - RtlZeroMemory(DriverContext, sizeof(IO_DRIVER_CREATE_CONTEXT)); - DriverContext->Size = sizeof(IO_DRIVER_CREATE_CONTEXT); -} -$endif - - -$if (_WDMDDK_) -/* - * NTSTATUS - * IoAcquireRemoveLock( - * IN PIO_REMOVE_LOCK RemoveLock, - * IN OPTIONAL PVOID Tag) - */ -#if DBG -#define IoAcquireRemoveLock(RemoveLock, Tag) \ - IoAcquireRemoveLockEx(RemoveLock, Tag, __FILE__, __LINE__, sizeof (IO_REMOVE_LOCK)) -#else -#define IoAcquireRemoveLock(RemoveLock, Tag) \ - IoAcquireRemoveLockEx(RemoveLock, Tag, "", 1, sizeof (IO_REMOVE_LOCK)) -#endif - -/* - * VOID - * IoAdjustPagingPathCount( - * IN PLONG Count, - * IN BOOLEAN Increment) - */ -#define IoAdjustPagingPathCount(_Count, \ - _Increment) \ -{ \ - if (_Increment) \ - { \ - InterlockedIncrement(_Count); \ - } \ - else \ - { \ - InterlockedDecrement(_Count); \ - } \ -} - -#if !defined(_M_AMD64) -NTHALAPI -VOID -NTAPI -READ_PORT_BUFFER_UCHAR( - IN PUCHAR Port, - IN PUCHAR Buffer, - IN ULONG Count); - -NTHALAPI -VOID -NTAPI -READ_PORT_BUFFER_ULONG( - IN PULONG Port, - IN PULONG Buffer, - IN ULONG Count); - -NTHALAPI -VOID -NTAPI -READ_PORT_BUFFER_USHORT( - IN PUSHORT Port, - IN PUSHORT Buffer, - IN ULONG Count); - -NTHALAPI -UCHAR -NTAPI -READ_PORT_UCHAR( - IN PUCHAR Port); - -NTHALAPI -ULONG -NTAPI -READ_PORT_ULONG( - IN PULONG Port); - -NTHALAPI -USHORT -NTAPI -READ_PORT_USHORT( - IN PUSHORT Port); - -NTKERNELAPI -VOID -NTAPI -READ_REGISTER_BUFFER_UCHAR( - IN PUCHAR Register, - IN PUCHAR Buffer, - IN ULONG Count); - -NTKERNELAPI -VOID -NTAPI -READ_REGISTER_BUFFER_ULONG( - IN PULONG Register, - IN PULONG Buffer, - IN ULONG Count); - -NTKERNELAPI -VOID -NTAPI -READ_REGISTER_BUFFER_USHORT( - IN PUSHORT Register, - IN PUSHORT Buffer, - IN ULONG Count); - -NTKERNELAPI -UCHAR -NTAPI -READ_REGISTER_UCHAR( - IN PUCHAR Register); - -NTKERNELAPI -ULONG -NTAPI -READ_REGISTER_ULONG( - IN PULONG Register); - -NTKERNELAPI -USHORT -NTAPI -READ_REGISTER_USHORT( - IN PUSHORT Register); - -NTHALAPI -VOID -NTAPI -WRITE_PORT_BUFFER_UCHAR( - IN PUCHAR Port, - IN PUCHAR Buffer, - IN ULONG Count); - -NTHALAPI -VOID -NTAPI -WRITE_PORT_BUFFER_ULONG( - IN PULONG Port, - IN PULONG Buffer, - IN ULONG Count); - -NTHALAPI -VOID -NTAPI -WRITE_PORT_BUFFER_USHORT( - IN PUSHORT Port, - IN PUSHORT Buffer, - IN ULONG Count); - -NTHALAPI -VOID -NTAPI -WRITE_PORT_UCHAR( - IN PUCHAR Port, - IN UCHAR Value); - -NTHALAPI -VOID -NTAPI -WRITE_PORT_ULONG( - IN PULONG Port, - IN ULONG Value); - -NTHALAPI -VOID -NTAPI -WRITE_PORT_USHORT( - IN PUSHORT Port, - IN USHORT Value); - -NTKERNELAPI -VOID -NTAPI -WRITE_REGISTER_BUFFER_UCHAR( - IN PUCHAR Register, - IN PUCHAR Buffer, - IN ULONG Count); - -NTKERNELAPI -VOID -NTAPI -WRITE_REGISTER_BUFFER_ULONG( - IN PULONG Register, - IN PULONG Buffer, - IN ULONG Count); - -NTKERNELAPI -VOID -NTAPI -WRITE_REGISTER_BUFFER_USHORT( - IN PUSHORT Register, - IN PUSHORT Buffer, - IN ULONG Count); - -NTKERNELAPI -VOID -NTAPI -WRITE_REGISTER_UCHAR( - IN PUCHAR Register, - IN UCHAR Value); - -NTKERNELAPI -VOID -NTAPI -WRITE_REGISTER_ULONG( - IN PULONG Register, - IN ULONG Value); - -NTKERNELAPI -VOID -NTAPI -WRITE_REGISTER_USHORT( - IN PUSHORT Register, - IN USHORT Value); - -#else - -FORCEINLINE -VOID -READ_PORT_BUFFER_UCHAR( - IN PUCHAR Port, - IN PUCHAR Buffer, - IN ULONG Count) -{ - __inbytestring((USHORT)(ULONG_PTR)Port, Buffer, Count); -} - -FORCEINLINE -VOID -READ_PORT_BUFFER_ULONG( - IN PULONG Port, - IN PULONG Buffer, - IN ULONG Count) -{ - __indwordstring((USHORT)(ULONG_PTR)Port, Buffer, Count); -} - -FORCEINLINE -VOID -READ_PORT_BUFFER_USHORT( - IN PUSHORT Port, - IN PUSHORT Buffer, - IN ULONG Count) -{ - __inwordstring((USHORT)(ULONG_PTR)Port, Buffer, Count); -} - -FORCEINLINE -UCHAR -READ_PORT_UCHAR( - IN PUCHAR Port) -{ - return __inbyte((USHORT)(ULONG_PTR)Port); -} - -FORCEINLINE -ULONG -READ_PORT_ULONG( - IN PULONG Port) -{ - return __indword((USHORT)(ULONG_PTR)Port); -} - -FORCEINLINE -USHORT -READ_PORT_USHORT( - IN PUSHORT Port) -{ - return __inword((USHORT)(ULONG_PTR)Port); -} - -FORCEINLINE -VOID -READ_REGISTER_BUFFER_UCHAR( - IN PUCHAR Register, - IN PUCHAR Buffer, - IN ULONG Count) -{ - __movsb(Register, Buffer, Count); -} - -FORCEINLINE -VOID -READ_REGISTER_BUFFER_ULONG( - IN PULONG Register, - IN PULONG Buffer, - IN ULONG Count) -{ - __movsd(Register, Buffer, Count); -} - -FORCEINLINE -VOID -READ_REGISTER_BUFFER_USHORT( - IN PUSHORT Register, - IN PUSHORT Buffer, - IN ULONG Count) -{ - __movsw(Register, Buffer, Count); -} - -FORCEINLINE -UCHAR -READ_REGISTER_UCHAR( - IN volatile UCHAR *Register) -{ - return *Register; -} - -FORCEINLINE -ULONG -READ_REGISTER_ULONG( - IN volatile ULONG *Register) -{ - return *Register; -} - -FORCEINLINE -USHORT -READ_REGISTER_USHORT( - IN volatile USHORT *Register) -{ - return *Register; -} - -FORCEINLINE -VOID -WRITE_PORT_BUFFER_UCHAR( - IN PUCHAR Port, - IN PUCHAR Buffer, - IN ULONG Count) -{ - __outbytestring((USHORT)(ULONG_PTR)Port, Buffer, Count); -} - -FORCEINLINE -VOID -WRITE_PORT_BUFFER_ULONG( - IN PULONG Port, - IN PULONG Buffer, - IN ULONG Count) -{ - __outdwordstring((USHORT)(ULONG_PTR)Port, Buffer, Count); -} - -FORCEINLINE -VOID -WRITE_PORT_BUFFER_USHORT( - IN PUSHORT Port, - IN PUSHORT Buffer, - IN ULONG Count) -{ - __outwordstring((USHORT)(ULONG_PTR)Port, Buffer, Count); -} - -FORCEINLINE -VOID -WRITE_PORT_UCHAR( - IN PUCHAR Port, - IN UCHAR Value) -{ - __outbyte((USHORT)(ULONG_PTR)Port, Value); -} - -FORCEINLINE -VOID -WRITE_PORT_ULONG( - IN PULONG Port, - IN ULONG Value) -{ - __outdword((USHORT)(ULONG_PTR)Port, Value); -} - -FORCEINLINE -VOID -WRITE_PORT_USHORT( - IN PUSHORT Port, - IN USHORT Value) -{ - __outword((USHORT)(ULONG_PTR)Port, Value); -} - -FORCEINLINE -VOID -WRITE_REGISTER_BUFFER_UCHAR( - IN PUCHAR Register, - IN PUCHAR Buffer, - IN ULONG Count) -{ - LONG Synch; - __movsb(Register, Buffer, Count); - InterlockedOr(&Synch, 1); -} - -FORCEINLINE -VOID -WRITE_REGISTER_BUFFER_ULONG( - IN PULONG Register, - IN PULONG Buffer, - IN ULONG Count) -{ - LONG Synch; - __movsd(Register, Buffer, Count); - InterlockedOr(&Synch, 1); -} - -FORCEINLINE -VOID -WRITE_REGISTER_BUFFER_USHORT( - IN PUSHORT Register, - IN PUSHORT Buffer, - IN ULONG Count) -{ - LONG Synch; - __movsw(Register, Buffer, Count); - InterlockedOr(&Synch, 1); -} - -FORCEINLINE -VOID -WRITE_REGISTER_UCHAR( - IN volatile UCHAR *Register, - IN UCHAR Value) -{ - LONG Synch; - *Register = Value; - InterlockedOr(&Synch, 1); -} - -FORCEINLINE -VOID -WRITE_REGISTER_ULONG( - IN volatile ULONG *Register, - IN ULONG Value) -{ - LONG Synch; - *Register = Value; - InterlockedOr(&Synch, 1); -} - -FORCEINLINE -VOID -WRITE_REGISTER_USHORT( - IN volatile USHORT *Register, - IN USHORT Value) -{ - LONG Sync; - *Register = Value; - InterlockedOr(&Sync, 1); -} -#endif - -#if defined(USE_DMA_MACROS) && !defined(_NTHAL_) && \ - (defined(_NTDDK_) || defined(_NTDRIVER_)) || defined(_WDM_INCLUDED_) - -#define DMA_MACROS_DEFINED - -FORCEINLINE -NTSTATUS -IoAllocateAdapterChannel( - IN PDMA_ADAPTER DmaAdapter, - IN PDEVICE_OBJECT DeviceObject, - IN ULONG NumberOfMapRegisters, - IN PDRIVER_CONTROL ExecutionRoutine, - IN PVOID Context) -{ - PALLOCATE_ADAPTER_CHANNEL AllocateAdapterChannel; - AllocateAdapterChannel = - *(DmaAdapter)->DmaOperations->AllocateAdapterChannel; - ASSERT(AllocateAdapterChannel); - return AllocateAdapterChannel(DmaAdapter, - DeviceObject, - NumberOfMapRegisters, - ExecutionRoutine, - Context ); -} - -FORCEINLINE -BOOLEAN -NTAPI -IoFlushAdapterBuffers( - IN PDMA_ADAPTER DmaAdapter, - IN PMDL Mdl, - IN PVOID MapRegisterBase, - IN PVOID CurrentVa, - IN ULONG Length, - IN BOOLEAN WriteToDevice) -{ - PFLUSH_ADAPTER_BUFFERS FlushAdapterBuffers; - FlushAdapterBuffers = *(DmaAdapter)->DmaOperations->FlushAdapterBuffers; - ASSERT(FlushAdapterBuffers); - return FlushAdapterBuffers(DmaAdapter, - Mdl, - MapRegisterBase, - CurrentVa, - Length, - WriteToDevice); -} - -FORCEINLINE -VOID -NTAPI -IoFreeAdapterChannel( - IN PDMA_ADAPTER DmaAdapter) -{ - PFREE_ADAPTER_CHANNEL FreeAdapterChannel; - FreeAdapterChannel = *(DmaAdapter)->DmaOperations->FreeAdapterChannel; - ASSERT(FreeAdapterChannel); - FreeAdapterChannel(DmaAdapter); -} - -FORCEINLINE -VOID -NTAPI -IoFreeMapRegisters( - IN PDMA_ADAPTER DmaAdapter, - IN PVOID MapRegisterBase, - IN ULONG NumberOfMapRegisters) -{ - PFREE_MAP_REGISTERS FreeMapRegisters; - FreeMapRegisters = *(DmaAdapter)->DmaOperations->FreeMapRegisters; - ASSERT(FreeMapRegisters); - FreeMapRegisters(DmaAdapter, MapRegisterBase, NumberOfMapRegisters); -} - -FORCEINLINE -PHYSICAL_ADDRESS -NTAPI -IoMapTransfer( - IN PDMA_ADAPTER DmaAdapter, - IN PMDL Mdl, - IN PVOID MapRegisterBase, - IN PVOID CurrentVa, - IN OUT PULONG Length, - IN BOOLEAN WriteToDevice) -{ - PMAP_TRANSFER MapTransfer; - - MapTransfer = *(DmaAdapter)->DmaOperations->MapTransfer; - ASSERT(MapTransfer); - return MapTransfer(DmaAdapter, - Mdl, - MapRegisterBase, - CurrentVa, - Length, - WriteToDevice); -} -#endif -$endif - -#if (NTDDI_VERSION >= NTDDI_WIN2K) -$if (_NTDDK_) -#if !(defined(USE_DMA_MACROS) && (defined(_NTDDK_) || defined(_NTDRIVER_)) || defined(_WDM_INCLUDED_)) -NTKERNELAPI -NTSTATUS -NTAPI -IoAllocateAdapterChannel( - IN PADAPTER_OBJECT AdapterObject, - IN PDEVICE_OBJECT DeviceObject, - IN ULONG NumberOfMapRegisters, - IN PDRIVER_CONTROL ExecutionRoutine, - IN PVOID Context); -#endif - -#if !defined(DMA_MACROS_DEFINED) -//DECLSPEC_DEPRECATED_DDK -NTHALAPI -PHYSICAL_ADDRESS -NTAPI -IoMapTransfer( - IN PADAPTER_OBJECT AdapterObject, - IN PMDL Mdl, - IN PVOID MapRegisterBase, - IN PVOID CurrentVa, - IN OUT PULONG Length, - IN BOOLEAN WriteToDevice); -#endif - -NTKERNELAPI -VOID -NTAPI -IoAllocateController( - IN PCONTROLLER_OBJECT ControllerObject, - IN PDEVICE_OBJECT DeviceObject, - IN PDRIVER_CONTROL ExecutionRoutine, - IN PVOID Context OPTIONAL); - -NTKERNELAPI -PCONTROLLER_OBJECT -NTAPI -IoCreateController( - IN ULONG Size); - -NTKERNELAPI -VOID -NTAPI -IoDeleteController( - IN PCONTROLLER_OBJECT ControllerObject); - -NTKERNELAPI -VOID -NTAPI -IoFreeController( - IN PCONTROLLER_OBJECT ControllerObject); - -NTKERNELAPI -PCONFIGURATION_INFORMATION -NTAPI -IoGetConfigurationInformation(VOID); - -NTKERNELAPI -PDEVICE_OBJECT -NTAPI -IoGetDeviceToVerify( - IN PETHREAD Thread); - -NTKERNELAPI -VOID -NTAPI -IoCancelFileOpen( - IN PDEVICE_OBJECT DeviceObject, - IN PFILE_OBJECT FileObject); - -NTKERNELAPI -PGENERIC_MAPPING -NTAPI -IoGetFileObjectGenericMapping(VOID); - -NTKERNELAPI -PIRP -NTAPI -IoMakeAssociatedIrp( - IN PIRP Irp, - IN CCHAR StackSize); - -NTKERNELAPI -NTSTATUS -NTAPI -IoQueryDeviceDescription( - IN PINTERFACE_TYPE BusType OPTIONAL, - IN PULONG BusNumber OPTIONAL, - IN PCONFIGURATION_TYPE ControllerType OPTIONAL, - IN PULONG ControllerNumber OPTIONAL, - IN PCONFIGURATION_TYPE PeripheralType OPTIONAL, - IN PULONG PeripheralNumber OPTIONAL, - IN PIO_QUERY_DEVICE_ROUTINE CalloutRoutine, - IN OUT PVOID Context OPTIONAL); - -NTKERNELAPI -VOID -NTAPI -IoRaiseHardError( - IN PIRP Irp, - IN PVPB Vpb OPTIONAL, - IN PDEVICE_OBJECT RealDeviceObject); - -NTKERNELAPI -BOOLEAN -NTAPI -IoRaiseInformationalHardError( - IN NTSTATUS ErrorStatus, - IN PUNICODE_STRING String OPTIONAL, - IN PKTHREAD Thread OPTIONAL); - -NTKERNELAPI -VOID -NTAPI -IoRegisterBootDriverReinitialization( - IN PDRIVER_OBJECT DriverObject, - IN PDRIVER_REINITIALIZE DriverReinitializationRoutine, - IN PVOID Context OPTIONAL); - -NTKERNELAPI -VOID -NTAPI -IoRegisterDriverReinitialization( - IN PDRIVER_OBJECT DriverObject, - IN PDRIVER_REINITIALIZE DriverReinitializationRoutine, - IN PVOID Context OPTIONAL); - -NTKERNELAPI -NTSTATUS -NTAPI -IoAttachDeviceByPointer( - IN PDEVICE_OBJECT SourceDevice, - IN PDEVICE_OBJECT TargetDevice); - -NTKERNELAPI -NTSTATUS -NTAPI -IoReportDetectedDevice( - IN PDRIVER_OBJECT DriverObject, - IN INTERFACE_TYPE LegacyBusType, - IN ULONG BusNumber, - IN ULONG SlotNumber, - IN PCM_RESOURCE_LIST ResourceList OPTIONAL, - IN PIO_RESOURCE_REQUIREMENTS_LIST ResourceRequirements OPTIONAL, - IN BOOLEAN ResourceAssigned, - IN OUT PDEVICE_OBJECT *DeviceObject OPTIONAL); - -NTKERNELAPI -NTSTATUS -NTAPI -IoReportResourceForDetection( - IN PDRIVER_OBJECT DriverObject, - IN PCM_RESOURCE_LIST DriverList OPTIONAL, - IN ULONG DriverListSize OPTIONAL, - IN PDEVICE_OBJECT DeviceObject OPTIONAL, - IN PCM_RESOURCE_LIST DeviceList OPTIONAL, - IN ULONG DeviceListSize OPTIONAL, - OUT PBOOLEAN ConflictDetected); - -NTKERNELAPI -NTSTATUS -NTAPI -IoReportResourceUsage( - IN PUNICODE_STRING DriverClassName OPTIONAL, - IN PDRIVER_OBJECT DriverObject, - IN PCM_RESOURCE_LIST DriverList OPTIONAL, - IN ULONG DriverListSize OPTIONAL, - IN PDEVICE_OBJECT DeviceObject, - IN PCM_RESOURCE_LIST DeviceList OPTIONAL, - IN ULONG DeviceListSize OPTIONAL, - IN BOOLEAN OverrideConflict, - OUT PBOOLEAN ConflictDetected); - -NTKERNELAPI -VOID -NTAPI -IoSetHardErrorOrVerifyDevice( - IN PIRP Irp, - IN PDEVICE_OBJECT DeviceObject); - -NTKERNELAPI -NTSTATUS -NTAPI -IoAssignResources( - IN PUNICODE_STRING RegistryPath, - IN PUNICODE_STRING DriverClassName OPTIONAL, - IN PDRIVER_OBJECT DriverObject, - IN PDEVICE_OBJECT DeviceObject OPTIONAL, - IN PIO_RESOURCE_REQUIREMENTS_LIST RequestedResources OPTIONAL, - IN OUT PCM_RESOURCE_LIST *AllocatedResources); - -NTKERNELAPI -BOOLEAN -NTAPI -IoSetThreadHardErrorMode( - IN BOOLEAN EnableHardErrors); -$endif - -$if (_WDMDDK_) -NTKERNELAPI -VOID -NTAPI -IoAcquireCancelSpinLock( - OUT PKIRQL Irql); - -NTKERNELAPI -NTSTATUS -NTAPI -IoAcquireRemoveLockEx( - IN PIO_REMOVE_LOCK RemoveLock, - IN PVOID Tag OPTIONAL, - IN PCSTR File, - IN ULONG Line, - IN ULONG RemlockSize); -NTKERNELAPI -NTSTATUS -NTAPI -IoAllocateDriverObjectExtension( - IN PDRIVER_OBJECT DriverObject, - IN PVOID ClientIdentificationAddress, - IN ULONG DriverObjectExtensionSize, - OUT PVOID *DriverObjectExtension); - -NTKERNELAPI -PVOID -NTAPI -IoAllocateErrorLogEntry( - IN PVOID IoObject, - IN UCHAR EntrySize); - -NTKERNELAPI -PIRP -NTAPI -IoAllocateIrp( - IN CCHAR StackSize, - IN BOOLEAN ChargeQuota); - -NTKERNELAPI -PMDL -NTAPI -IoAllocateMdl( - IN PVOID VirtualAddress OPTIONAL, - IN ULONG Length, - IN BOOLEAN SecondaryBuffer, - IN BOOLEAN ChargeQuota, - IN OUT PIRP Irp OPTIONAL); - -NTKERNELAPI -PIO_WORKITEM -NTAPI -IoAllocateWorkItem( - IN PDEVICE_OBJECT DeviceObject); - -NTKERNELAPI -NTSTATUS -NTAPI -IoAttachDevice( - IN PDEVICE_OBJECT SourceDevice, - IN PUNICODE_STRING TargetDevice, - OUT PDEVICE_OBJECT *AttachedDevice); - -NTKERNELAPI -PDEVICE_OBJECT -NTAPI -IoAttachDeviceToDeviceStack( - IN PDEVICE_OBJECT SourceDevice, - IN PDEVICE_OBJECT TargetDevice); - -NTKERNELAPI -PIRP -NTAPI -IoBuildAsynchronousFsdRequest( - IN ULONG MajorFunction, - IN PDEVICE_OBJECT DeviceObject, - IN OUT PVOID Buffer OPTIONAL, - IN ULONG Length OPTIONAL, - IN PLARGE_INTEGER StartingOffset OPTIONAL, - IN PIO_STATUS_BLOCK IoStatusBlock OPTIONAL); - -NTKERNELAPI -PIRP -NTAPI -IoBuildDeviceIoControlRequest( - IN ULONG IoControlCode, - IN PDEVICE_OBJECT DeviceObject, - IN PVOID InputBuffer OPTIONAL, - IN ULONG InputBufferLength, - OUT PVOID OutputBuffer OPTIONAL, - IN ULONG OutputBufferLength, - IN BOOLEAN InternalDeviceIoControl, - IN PKEVENT Event, - OUT PIO_STATUS_BLOCK IoStatusBlock); - -NTKERNELAPI -VOID -NTAPI -IoBuildPartialMdl( - IN PMDL SourceMdl, - IN OUT PMDL TargetMdl, - IN PVOID VirtualAddress, - IN ULONG Length); - -NTKERNELAPI -PIRP -NTAPI -IoBuildSynchronousFsdRequest( - IN ULONG MajorFunction, - IN PDEVICE_OBJECT DeviceObject, - IN OUT PVOID Buffer OPTIONAL, - IN ULONG Length OPTIONAL, - IN PLARGE_INTEGER StartingOffset OPTIONAL, - IN PKEVENT Event, - OUT PIO_STATUS_BLOCK IoStatusBlock); - -NTKERNELAPI -NTSTATUS -FASTCALL -IofCallDriver( - IN PDEVICE_OBJECT DeviceObject, - IN OUT PIRP Irp); -#define IoCallDriver IofCallDriver - -NTKERNELAPI -VOID -FASTCALL -IofCompleteRequest( - IN PIRP Irp, - IN CCHAR PriorityBoost); -#define IoCompleteRequest IofCompleteRequest - -NTKERNELAPI -BOOLEAN -NTAPI -IoCancelIrp( - IN PIRP Irp); - -NTKERNELAPI -NTSTATUS -NTAPI -IoCheckShareAccess( - IN ACCESS_MASK DesiredAccess, - IN ULONG DesiredShareAccess, - IN OUT PFILE_OBJECT FileObject, - IN OUT PSHARE_ACCESS ShareAccess, - IN BOOLEAN Update); - -NTKERNELAPI -VOID -FASTCALL -IofCompleteRequest( - IN PIRP Irp, - IN CCHAR PriorityBoost); - -NTKERNELAPI -NTSTATUS -NTAPI -IoConnectInterrupt( - OUT PKINTERRUPT *InterruptObject, - IN PKSERVICE_ROUTINE ServiceRoutine, - IN PVOID ServiceContext OPTIONAL, - IN PKSPIN_LOCK SpinLock OPTIONAL, - IN ULONG Vector, - IN KIRQL Irql, - IN KIRQL SynchronizeIrql, - IN KINTERRUPT_MODE InterruptMode, - IN BOOLEAN ShareVector, - IN KAFFINITY ProcessorEnableMask, - IN BOOLEAN FloatingSave); - -NTKERNELAPI -NTSTATUS -NTAPI -IoCreateDevice( - IN PDRIVER_OBJECT DriverObject, - IN ULONG DeviceExtensionSize, - IN PUNICODE_STRING DeviceName OPTIONAL, - IN DEVICE_TYPE DeviceType, - IN ULONG DeviceCharacteristics, - IN BOOLEAN Exclusive, - OUT PDEVICE_OBJECT *DeviceObject); - -NTKERNELAPI -NTSTATUS -NTAPI -IoCreateFile( - OUT PHANDLE FileHandle, - IN ACCESS_MASK DesiredAccess, - IN POBJECT_ATTRIBUTES ObjectAttributes, - OUT PIO_STATUS_BLOCK IoStatusBlock, - IN PLARGE_INTEGER AllocationSize OPTIONAL, - IN ULONG FileAttributes, - IN ULONG ShareAccess, - IN ULONG Disposition, - IN ULONG CreateOptions, - IN PVOID EaBuffer OPTIONAL, - IN ULONG EaLength, - IN CREATE_FILE_TYPE CreateFileType, - IN PVOID InternalParameters OPTIONAL, - IN ULONG Options); - -NTKERNELAPI -PKEVENT -NTAPI -IoCreateNotificationEvent( - IN PUNICODE_STRING EventName, - OUT PHANDLE EventHandle); - -NTKERNELAPI -NTSTATUS -NTAPI -IoCreateSymbolicLink( - IN PUNICODE_STRING SymbolicLinkName, - IN PUNICODE_STRING DeviceName); - -NTKERNELAPI -PKEVENT -NTAPI -IoCreateSynchronizationEvent( - IN PUNICODE_STRING EventName, - OUT PHANDLE EventHandle); - -NTKERNELAPI -NTSTATUS -NTAPI -IoCreateUnprotectedSymbolicLink( - IN PUNICODE_STRING SymbolicLinkName, - IN PUNICODE_STRING DeviceName); - -NTKERNELAPI -VOID -NTAPI -IoDeleteDevice( - IN PDEVICE_OBJECT DeviceObject); - -NTKERNELAPI -NTSTATUS -NTAPI -IoDeleteSymbolicLink( - IN PUNICODE_STRING SymbolicLinkName); - -NTKERNELAPI -VOID -NTAPI -IoDetachDevice( - IN OUT PDEVICE_OBJECT TargetDevice); - -NTKERNELAPI -VOID -NTAPI -IoDisconnectInterrupt( - IN PKINTERRUPT InterruptObject); - -NTKERNELAPI -VOID -NTAPI -IoFreeIrp( - IN PIRP Irp); - -NTKERNELAPI -VOID -NTAPI -IoFreeMdl( - IN PMDL Mdl); - -NTKERNELAPI -VOID -NTAPI -IoFreeWorkItem( - IN PIO_WORKITEM IoWorkItem); - -NTKERNELAPI -PDEVICE_OBJECT -NTAPI -IoGetAttachedDevice( - IN PDEVICE_OBJECT DeviceObject); - -NTKERNELAPI -PDEVICE_OBJECT -NTAPI -IoGetAttachedDeviceReference( - IN PDEVICE_OBJECT DeviceObject); - -NTKERNELAPI -NTSTATUS -NTAPI -IoGetBootDiskInformation( - IN OUT PBOOTDISK_INFORMATION BootDiskInformation, - IN ULONG Size); - -NTKERNELAPI -NTSTATUS -NTAPI -IoGetDeviceInterfaceAlias( - IN PUNICODE_STRING SymbolicLinkName, - IN CONST GUID *AliasInterfaceClassGuid, - OUT PUNICODE_STRING AliasSymbolicLinkName); - -NTKERNELAPI -PEPROCESS -NTAPI -IoGetCurrentProcess(VOID); - -NTKERNELAPI -NTSTATUS -NTAPI -IoGetDeviceInterfaces( - IN CONST GUID *InterfaceClassGuid, - IN PDEVICE_OBJECT PhysicalDeviceObject OPTIONAL, - IN ULONG Flags, - OUT PWSTR *SymbolicLinkList); - -NTKERNELAPI -NTSTATUS -NTAPI -IoGetDeviceObjectPointer( - IN PUNICODE_STRING ObjectName, - IN ACCESS_MASK DesiredAccess, - OUT PFILE_OBJECT *FileObject, - OUT PDEVICE_OBJECT *DeviceObject); - -NTKERNELAPI -NTSTATUS -NTAPI -IoGetDeviceProperty( - IN PDEVICE_OBJECT DeviceObject, - IN DEVICE_REGISTRY_PROPERTY DeviceProperty, - IN ULONG BufferLength, - OUT PVOID PropertyBuffer, - OUT PULONG ResultLength); - -NTKERNELAPI -PDMA_ADAPTER -NTAPI -IoGetDmaAdapter( - IN PDEVICE_OBJECT PhysicalDeviceObject OPTIONAL, - IN PDEVICE_DESCRIPTION DeviceDescription, - IN OUT PULONG NumberOfMapRegisters); - -NTKERNELAPI -PVOID -NTAPI -IoGetDriverObjectExtension( - IN PDRIVER_OBJECT DriverObject, - IN PVOID ClientIdentificationAddress); - -NTKERNELAPI -PVOID -NTAPI -IoGetInitialStack(VOID); - -NTKERNELAPI -PDEVICE_OBJECT -NTAPI -IoGetRelatedDeviceObject( - IN PFILE_OBJECT FileObject); - -NTKERNELAPI -VOID -NTAPI -IoQueueWorkItem( - IN PIO_WORKITEM IoWorkItem, - IN PIO_WORKITEM_ROUTINE WorkerRoutine, - IN WORK_QUEUE_TYPE QueueType, - IN PVOID Context OPTIONAL); - -NTKERNELAPI -VOID -NTAPI -IoInitializeIrp( - IN OUT PIRP Irp, - IN USHORT PacketSize, - IN CCHAR StackSize); - -NTKERNELAPI -VOID -NTAPI -IoInitializeRemoveLockEx( - IN PIO_REMOVE_LOCK Lock, - IN ULONG AllocateTag, - IN ULONG MaxLockedMinutes, - IN ULONG HighWatermark, - IN ULONG RemlockSize); - -NTKERNELAPI -NTSTATUS -NTAPI -IoInitializeTimer( - IN PDEVICE_OBJECT DeviceObject, - IN PIO_TIMER_ROUTINE TimerRoutine, - IN PVOID Context OPTIONAL); - -NTKERNELAPI -VOID -NTAPI -IoInvalidateDeviceRelations( - IN PDEVICE_OBJECT DeviceObject, - IN DEVICE_RELATION_TYPE Type); - -NTKERNELAPI -VOID -NTAPI -IoInvalidateDeviceState( - IN PDEVICE_OBJECT PhysicalDeviceObject); - -NTKERNELAPI -BOOLEAN -NTAPI -IoIsWdmVersionAvailable( - IN UCHAR MajorVersion, - IN UCHAR MinorVersion); - -NTKERNELAPI -NTSTATUS -NTAPI -IoOpenDeviceInterfaceRegistryKey( - IN PUNICODE_STRING SymbolicLinkName, - IN ACCESS_MASK DesiredAccess, - OUT PHANDLE DeviceInterfaceKey); - -NTKERNELAPI -NTSTATUS -NTAPI -IoOpenDeviceRegistryKey( - IN PDEVICE_OBJECT DeviceObject, - IN ULONG DevInstKeyType, - IN ACCESS_MASK DesiredAccess, - OUT PHANDLE DevInstRegKey); - -NTKERNELAPI -NTSTATUS -NTAPI -IoRegisterDeviceInterface( - IN PDEVICE_OBJECT PhysicalDeviceObject, - IN CONST GUID *InterfaceClassGuid, - IN PUNICODE_STRING ReferenceString OPTIONAL, - OUT PUNICODE_STRING SymbolicLinkName); - -NTKERNELAPI -NTSTATUS -NTAPI -IoRegisterPlugPlayNotification( - IN IO_NOTIFICATION_EVENT_CATEGORY EventCategory, - IN ULONG EventCategoryFlags, - IN PVOID EventCategoryData OPTIONAL, - IN PDRIVER_OBJECT DriverObject, - IN PDRIVER_NOTIFICATION_CALLBACK_ROUTINE CallbackRoutine, - IN OUT PVOID Context OPTIONAL, - OUT PVOID *NotificationEntry); - -NTKERNELAPI -NTSTATUS -NTAPI -IoRegisterShutdownNotification( - IN PDEVICE_OBJECT DeviceObject); - -NTKERNELAPI -VOID -NTAPI -IoReleaseCancelSpinLock( - IN KIRQL Irql); - -NTKERNELAPI -VOID -NTAPI -IoReleaseRemoveLockAndWaitEx( - IN PIO_REMOVE_LOCK RemoveLock, - IN PVOID Tag OPTIONAL, - IN ULONG RemlockSize); - -NTKERNELAPI -VOID -NTAPI -IoReleaseRemoveLockEx( - IN PIO_REMOVE_LOCK RemoveLock, - IN PVOID Tag OPTIONAL, - IN ULONG RemlockSize); - -NTKERNELAPI -VOID -NTAPI -IoRemoveShareAccess( - IN PFILE_OBJECT FileObject, - IN OUT PSHARE_ACCESS ShareAccess); - -NTKERNELAPI -NTSTATUS -NTAPI -IoReportTargetDeviceChange( - IN PDEVICE_OBJECT PhysicalDeviceObject, - IN PVOID NotificationStructure); - -NTKERNELAPI -NTSTATUS -NTAPI -IoReportTargetDeviceChangeAsynchronous( - IN PDEVICE_OBJECT PhysicalDeviceObject, - IN PVOID NotificationStructure, - IN PDEVICE_CHANGE_COMPLETE_CALLBACK Callback OPTIONAL, - IN PVOID Context OPTIONAL); - -NTKERNELAPI -VOID -NTAPI -IoRequestDeviceEject( - IN PDEVICE_OBJECT PhysicalDeviceObject); - -NTKERNELAPI -VOID -NTAPI -IoReuseIrp( - IN OUT PIRP Irp, - IN NTSTATUS Status); - -NTKERNELAPI -NTSTATUS -NTAPI -IoSetDeviceInterfaceState( - IN PUNICODE_STRING SymbolicLinkName, - IN BOOLEAN Enable); - -NTKERNELAPI -VOID -NTAPI -IoSetShareAccess( - IN ACCESS_MASK DesiredAccess, - IN ULONG DesiredShareAccess, - IN OUT PFILE_OBJECT FileObject, - OUT PSHARE_ACCESS ShareAccess); - -NTKERNELAPI -VOID -NTAPI -IoStartNextPacket( - IN PDEVICE_OBJECT DeviceObject, - IN BOOLEAN Cancelable); - -NTKERNELAPI -VOID -NTAPI -IoStartNextPacketByKey( - IN PDEVICE_OBJECT DeviceObject, - IN BOOLEAN Cancelable, - IN ULONG Key); - -NTKERNELAPI -VOID -NTAPI -IoStartPacket( - IN PDEVICE_OBJECT DeviceObject, - IN PIRP Irp, - IN PULONG Key OPTIONAL, - IN PDRIVER_CANCEL CancelFunction OPTIONAL); - -NTKERNELAPI -VOID -NTAPI -IoStartTimer( - IN PDEVICE_OBJECT DeviceObject); - -NTKERNELAPI -VOID -NTAPI -IoStopTimer( - IN PDEVICE_OBJECT DeviceObject); - -NTKERNELAPI -NTSTATUS -NTAPI -IoUnregisterPlugPlayNotification( - IN PVOID NotificationEntry); - -NTKERNELAPI -VOID -NTAPI -IoUnregisterShutdownNotification( - IN PDEVICE_OBJECT DeviceObject); - -NTKERNELAPI -VOID -NTAPI -IoUpdateShareAccess( - IN PFILE_OBJECT FileObject, - IN OUT PSHARE_ACCESS ShareAccess); - -NTKERNELAPI -NTSTATUS -NTAPI -IoWMIAllocateInstanceIds( - IN GUID *Guid, - IN ULONG InstanceCount, - OUT ULONG *FirstInstanceId); - -NTKERNELAPI -NTSTATUS -NTAPI -IoWMIQuerySingleInstanceMultiple( - IN PVOID *DataBlockObjectList, - IN PUNICODE_STRING InstanceNames, - IN ULONG ObjectCount, - IN OUT ULONG *InOutBufferSize, - OUT PVOID OutBuffer); - -NTKERNELAPI -NTSTATUS -NTAPI -IoWMIRegistrationControl( - IN PDEVICE_OBJECT DeviceObject, - IN ULONG Action); - -NTKERNELAPI -NTSTATUS -NTAPI -IoWMISuggestInstanceName( - IN PDEVICE_OBJECT PhysicalDeviceObject OPTIONAL, - IN PUNICODE_STRING SymbolicLinkName OPTIONAL, - IN BOOLEAN CombineNames, - OUT PUNICODE_STRING SuggestedInstanceName); - -NTKERNELAPI -NTSTATUS -NTAPI -IoWMIWriteEvent( - IN OUT PVOID WnodeEventItem); - -NTKERNELAPI -VOID -NTAPI -IoWriteErrorLogEntry( - IN PVOID ElEntry); - -NTKERNELAPI -PIRP -NTAPI -IoGetTopLevelIrp(VOID); - -NTKERNELAPI -NTSTATUS -NTAPI -IoRegisterLastChanceShutdownNotification( - IN PDEVICE_OBJECT DeviceObject); - -NTKERNELAPI -VOID -NTAPI -IoSetTopLevelIrp( - IN PIRP Irp OPTIONAL); - -$endif -#endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */ - -$if (_NTDDK_) -#if (NTDDI_VERSION >= NTDDI_WIN2KSP3) - -NTKERNELAPI -BOOLEAN -NTAPI -IoIsFileOriginRemote( - IN PFILE_OBJECT FileObject); - -NTKERNELAPI -NTSTATUS -NTAPI -IoSetFileOrigin( - IN PFILE_OBJECT FileObject, - IN BOOLEAN Remote); - -#endif /* (NTDDI_VERSION >= NTDDI_WIN2KSP3) */ -$endif - -#if (NTDDI_VERSION >= NTDDI_WINXP) -$if (_NTDDK_) -NTKERNELAPI -NTSTATUS -FASTCALL -IoReadPartitionTable( - IN PDEVICE_OBJECT DeviceObject, - IN ULONG SectorSize, - IN BOOLEAN ReturnRecognizedPartitions, - OUT struct _DRIVE_LAYOUT_INFORMATION **PartitionBuffer); - -NTKERNELAPI -NTSTATUS -FASTCALL -IoSetPartitionInformation( - IN PDEVICE_OBJECT DeviceObject, - IN ULONG SectorSize, - IN ULONG PartitionNumber, - IN ULONG PartitionType); - -NTKERNELAPI -NTSTATUS -FASTCALL -IoWritePartitionTable( - IN PDEVICE_OBJECT DeviceObject, - IN ULONG SectorSize, - IN ULONG SectorsPerTrack, - IN ULONG NumberOfHeads, - IN struct _DRIVE_LAYOUT_INFORMATION *PartitionBuffer); - -NTKERNELAPI -NTSTATUS -NTAPI -IoCreateDisk( - IN PDEVICE_OBJECT DeviceObject, - IN struct _CREATE_DISK* Disk OPTIONAL); - -NTKERNELAPI -NTSTATUS -NTAPI -IoReadDiskSignature( - IN PDEVICE_OBJECT DeviceObject, - IN ULONG BytesPerSector, - OUT PDISK_SIGNATURE Signature); - -NTKERNELAPI -NTSTATUS -NTAPI -IoReadPartitionTableEx( - IN PDEVICE_OBJECT DeviceObject, - OUT struct _DRIVE_LAYOUT_INFORMATION_EX **PartitionBuffer); - -NTKERNELAPI -NTSTATUS -NTAPI -IoSetPartitionInformationEx( - IN PDEVICE_OBJECT DeviceObject, - IN ULONG PartitionNumber, - IN struct _SET_PARTITION_INFORMATION_EX *PartitionInfo); - -NTKERNELAPI -NTSTATUS -NTAPI -IoSetSystemPartition( - IN PUNICODE_STRING VolumeNameString); - -NTKERNELAPI -NTSTATUS -NTAPI -IoVerifyPartitionTable( - IN PDEVICE_OBJECT DeviceObject, - IN BOOLEAN FixErrors); - -NTKERNELAPI -NTSTATUS -NTAPI -IoVolumeDeviceToDosName( - IN PVOID VolumeDeviceObject, - OUT PUNICODE_STRING DosName); - -NTKERNELAPI -NTSTATUS -NTAPI -IoWritePartitionTableEx( - IN PDEVICE_OBJECT DeviceObject, - IN struct _DRIVE_LAYOUT_INFORMATION_EX *DriveLayout); - -NTKERNELAPI -NTSTATUS -NTAPI -IoCreateFileSpecifyDeviceObjectHint( - OUT PHANDLE FileHandle, - IN ACCESS_MASK DesiredAccess, - IN POBJECT_ATTRIBUTES ObjectAttributes, - OUT PIO_STATUS_BLOCK IoStatusBlock, - IN PLARGE_INTEGER AllocationSize OPTIONAL, - IN ULONG FileAttributes, - IN ULONG ShareAccess, - IN ULONG Disposition, - IN ULONG CreateOptions, - IN PVOID EaBuffer OPTIONAL, - IN ULONG EaLength, - IN CREATE_FILE_TYPE CreateFileType, - IN PVOID InternalParameters OPTIONAL, - IN ULONG Options, - IN PVOID DeviceObject OPTIONAL); - -NTKERNELAPI -NTSTATUS -NTAPI -IoAttachDeviceToDeviceStackSafe( - IN PDEVICE_OBJECT SourceDevice, - IN PDEVICE_OBJECT TargetDevice, - OUT PDEVICE_OBJECT *AttachedToDeviceObject); -$endif - -$if (_WDMDDK_) -NTKERNELAPI -NTSTATUS -NTAPI -IoCsqInitialize( - IN PIO_CSQ Csq, - IN PIO_CSQ_INSERT_IRP CsqInsertIrp, - IN PIO_CSQ_REMOVE_IRP CsqRemoveIrp, - IN PIO_CSQ_PEEK_NEXT_IRP CsqPeekNextIrp, - IN PIO_CSQ_ACQUIRE_LOCK CsqAcquireLock, - IN PIO_CSQ_RELEASE_LOCK CsqReleaseLock, - IN PIO_CSQ_COMPLETE_CANCELED_IRP CsqCompleteCanceledIrp); - -NTKERNELAPI -VOID -NTAPI -IoCsqInsertIrp( - IN PIO_CSQ Csq, - IN PIRP Irp, - IN PIO_CSQ_IRP_CONTEXT Context OPTIONAL); - -NTKERNELAPI -PIRP -NTAPI -IoCsqRemoveIrp( - IN PIO_CSQ Csq, - IN PIO_CSQ_IRP_CONTEXT Context); - -NTKERNELAPI -PIRP -NTAPI -IoCsqRemoveNextIrp( - IN PIO_CSQ Csq, - IN PVOID PeekContext OPTIONAL); - -NTKERNELAPI -BOOLEAN -NTAPI -IoForwardIrpSynchronously( - IN PDEVICE_OBJECT DeviceObject, - IN PIRP Irp); - -#define IoForwardAndCatchIrp IoForwardIrpSynchronously - -NTKERNELAPI -VOID -NTAPI -IoFreeErrorLogEntry( - PVOID ElEntry); - -NTKERNELAPI -NTSTATUS -NTAPI -IoSetCompletionRoutineEx( - IN PDEVICE_OBJECT DeviceObject, - IN PIRP Irp, - IN PIO_COMPLETION_ROUTINE CompletionRoutine, - IN PVOID Context, - IN BOOLEAN InvokeOnSuccess, - IN BOOLEAN InvokeOnError, - IN BOOLEAN InvokeOnCancel); - -VOID -NTAPI -IoSetStartIoAttributes( - IN PDEVICE_OBJECT DeviceObject, - IN BOOLEAN DeferredStartIo, - IN BOOLEAN NonCancelable); - -NTKERNELAPI -NTSTATUS -NTAPI -IoWMIDeviceObjectToInstanceName( - IN PVOID DataBlockObject, - IN PDEVICE_OBJECT DeviceObject, - OUT PUNICODE_STRING InstanceName); - -NTKERNELAPI -NTSTATUS -NTAPI -IoWMIExecuteMethod( - IN PVOID DataBlockObject, - IN PUNICODE_STRING InstanceName, - IN ULONG MethodId, - IN ULONG InBufferSize, - IN OUT PULONG OutBufferSize, - IN OUT PUCHAR InOutBuffer); - -NTKERNELAPI -NTSTATUS -NTAPI -IoWMIHandleToInstanceName( - IN PVOID DataBlockObject, - IN HANDLE FileHandle, - OUT PUNICODE_STRING InstanceName); - -NTKERNELAPI -NTSTATUS -NTAPI -IoWMIOpenBlock( - IN GUID *DataBlockGuid, - IN ULONG DesiredAccess, - OUT PVOID *DataBlockObject); - -NTKERNELAPI -NTSTATUS -NTAPI -IoWMIQueryAllData( - IN PVOID DataBlockObject, - IN OUT ULONG *InOutBufferSize, - OUT PVOID OutBuffer); - -NTKERNELAPI -NTSTATUS -NTAPI -IoWMIQueryAllDataMultiple( - IN PVOID *DataBlockObjectList, - IN ULONG ObjectCount, - IN OUT ULONG *InOutBufferSize, - OUT PVOID OutBuffer); - -NTKERNELAPI -NTSTATUS -NTAPI -IoWMIQuerySingleInstance( - IN PVOID DataBlockObject, - IN PUNICODE_STRING InstanceName, - IN OUT ULONG *InOutBufferSize, - OUT PVOID OutBuffer); - -NTKERNELAPI -NTSTATUS -NTAPI -IoWMISetNotificationCallback( - IN OUT PVOID Object, - IN WMI_NOTIFICATION_CALLBACK Callback, - IN PVOID Context OPTIONAL); - -NTKERNELAPI -NTSTATUS -NTAPI -IoWMISetSingleInstance( - IN PVOID DataBlockObject, - IN PUNICODE_STRING InstanceName, - IN ULONG Version, - IN ULONG ValueBufferSize, - IN PVOID ValueBuffer); - -NTKERNELAPI -NTSTATUS -NTAPI -IoWMISetSingleItem( - IN PVOID DataBlockObject, - IN PUNICODE_STRING InstanceName, - IN ULONG DataItemId, - IN ULONG Version, - IN ULONG ValueBufferSize, - IN PVOID ValueBuffer); -$endif -#endif /* (NTDDI_VERSION >= NTDDI_WINXP) */ - -$if (_WDMDDK_) -#if (NTDDI_VERSION >= NTDDI_WINXPSP1) -NTKERNELAPI -NTSTATUS -NTAPI -IoValidateDeviceIoControlAccess( - IN PIRP Irp, - IN ULONG RequiredAccess); -#endif -$endif - -#if (NTDDI_VERSION >= NTDDI_WS03) -$if (_NTDDK_) -NTKERNELAPI -IO_PAGING_PRIORITY -FASTCALL -IoGetPagingIoPriority( - IN PIRP Irp); -$endif - -$if (_WDMDDK_) -NTKERNELAPI -NTSTATUS -NTAPI -IoCsqInitializeEx( - IN PIO_CSQ Csq, - IN PIO_CSQ_INSERT_IRP_EX CsqInsertIrp, - IN PIO_CSQ_REMOVE_IRP CsqRemoveIrp, - IN PIO_CSQ_PEEK_NEXT_IRP CsqPeekNextIrp, - IN PIO_CSQ_ACQUIRE_LOCK CsqAcquireLock, - IN PIO_CSQ_RELEASE_LOCK CsqReleaseLock, - IN PIO_CSQ_COMPLETE_CANCELED_IRP CsqCompleteCanceledIrp); - -NTKERNELAPI -NTSTATUS -NTAPI -IoCsqInsertIrpEx( - IN PIO_CSQ Csq, - IN PIRP Irp, - IN PIO_CSQ_IRP_CONTEXT Context OPTIONAL, - IN PVOID InsertContext OPTIONAL); -$endif -#endif /* (NTDDI_VERSION >= NTDDI_WS03) */ - -$if (_NTDDK_) -#if (NTDDI_VERSION >= NTDDI_WS03SP1) -BOOLEAN -NTAPI -IoTranslateBusAddress( - IN INTERFACE_TYPE InterfaceType, - IN ULONG BusNumber, - IN PHYSICAL_ADDRESS BusAddress, - IN OUT PULONG AddressSpace, - OUT PPHYSICAL_ADDRESS TranslatedAddress); -#endif -$endif - -#if (NTDDI_VERSION >= NTDDI_VISTA) -$if (_NTDDK_) -NTKERNELAPI -NTSTATUS -NTAPI -IoUpdateDiskGeometry( - IN PDEVICE_OBJECT DeviceObject, - IN struct _DISK_GEOMETRY_EX* OldDiskGeometry, - IN struct _DISK_GEOMETRY_EX* NewDiskGeometry); - -PTXN_PARAMETER_BLOCK -NTAPI -IoGetTransactionParameterBlock( - IN PFILE_OBJECT FileObject); - -NTKERNELAPI -NTSTATUS -NTAPI -IoCreateFileEx( - OUT PHANDLE FileHandle, - IN ACCESS_MASK DesiredAccess, - IN POBJECT_ATTRIBUTES ObjectAttributes, - OUT PIO_STATUS_BLOCK IoStatusBlock, - IN PLARGE_INTEGER AllocationSize OPTIONAL, - IN ULONG FileAttributes, - IN ULONG ShareAccess, - IN ULONG Disposition, - IN ULONG CreateOptions, - IN PVOID EaBuffer OPTIONAL, - IN ULONG EaLength, - IN CREATE_FILE_TYPE CreateFileType, - IN PVOID InternalParameters OPTIONAL, - IN ULONG Options, - IN PIO_DRIVER_CREATE_CONTEXT DriverContext OPTIONAL); - -NTSTATUS -NTAPI -IoSetIrpExtraCreateParameter( - IN OUT PIRP Irp, - IN struct _ECP_LIST *ExtraCreateParameter); - -VOID -NTAPI -IoClearIrpExtraCreateParameter( - IN OUT PIRP Irp); - -NTSTATUS -NTAPI -IoGetIrpExtraCreateParameter( - IN PIRP Irp, - OUT struct _ECP_LIST **ExtraCreateParameter OPTIONAL); - -BOOLEAN -NTAPI -IoIsFileObjectIgnoringSharing( - IN PFILE_OBJECT FileObject); -$endif - -$if (_WDMDDK_) -NTKERNELAPI -NTSTATUS -NTAPI -IoGetBootDiskInformationLite( - OUT PBOOTDISK_INFORMATION_LITE *BootDiskInformation); - -NTKERNELAPI -NTSTATUS -NTAPI -IoCheckShareAccessEx( - IN ACCESS_MASK DesiredAccess, - IN ULONG DesiredShareAccess, - IN OUT PFILE_OBJECT FileObject, - IN OUT PSHARE_ACCESS ShareAccess, - IN BOOLEAN Update, - IN PBOOLEAN WritePermission); - -NTKERNELAPI -NTSTATUS -NTAPI -IoConnectInterruptEx( - IN OUT PIO_CONNECT_INTERRUPT_PARAMETERS Parameters); - -NTKERNELAPI -VOID -NTAPI -IoDisconnectInterruptEx( - IN PIO_DISCONNECT_INTERRUPT_PARAMETERS Parameters); - -LOGICAL -NTAPI -IoWithinStackLimits( - IN ULONG_PTR RegionStart, - IN SIZE_T RegionSize); - -NTKERNELAPI -VOID -NTAPI -IoSetShareAccessEx( - IN ACCESS_MASK DesiredAccess, - IN ULONG DesiredShareAccess, - IN OUT PFILE_OBJECT FileObject, - OUT PSHARE_ACCESS ShareAccess, - IN PBOOLEAN WritePermission); - -ULONG -NTAPI -IoSizeofWorkItem(VOID); - -VOID -NTAPI -IoInitializeWorkItem( - IN PVOID IoObject, - IN PIO_WORKITEM IoWorkItem); - -VOID -NTAPI -IoUninitializeWorkItem( - IN PIO_WORKITEM IoWorkItem); - -VOID -NTAPI -IoQueueWorkItemEx( - IN PIO_WORKITEM IoWorkItem, - IN PIO_WORKITEM_ROUTINE_EX WorkerRoutine, - IN WORK_QUEUE_TYPE QueueType, - IN PVOID Context OPTIONAL); - -IO_PRIORITY_HINT -NTAPI -IoGetIoPriorityHint( - IN PIRP Irp); - -NTSTATUS -NTAPI -IoSetIoPriorityHint( - IN PIRP Irp, - IN IO_PRIORITY_HINT PriorityHint); - -NTSTATUS -NTAPI -IoAllocateSfioStreamIdentifier( - IN PFILE_OBJECT FileObject, - IN ULONG Length, - IN PVOID Signature, - OUT PVOID *StreamIdentifier); - -PVOID -NTAPI -IoGetSfioStreamIdentifier( - IN PFILE_OBJECT FileObject, - IN PVOID Signature); - -NTSTATUS -NTAPI -IoFreeSfioStreamIdentifier( - IN PFILE_OBJECT FileObject, - IN PVOID Signature); - -NTKERNELAPI -NTSTATUS -NTAPI -IoRequestDeviceEjectEx( - IN PDEVICE_OBJECT PhysicalDeviceObject, - IN PIO_DEVICE_EJECT_CALLBACK Callback OPTIONAL, - IN PVOID Context OPTIONAL, - IN PDRIVER_OBJECT DriverObject OPTIONAL); - -NTKERNELAPI -NTSTATUS -NTAPI -IoSetDevicePropertyData( - IN PDEVICE_OBJECT Pdo, - IN CONST DEVPROPKEY *PropertyKey, - IN LCID Lcid, - IN ULONG Flags, - IN DEVPROPTYPE Type, - IN ULONG Size, - IN PVOID Data OPTIONAL); - -NTKERNELAPI -NTSTATUS -NTAPI -IoGetDevicePropertyData( - PDEVICE_OBJECT Pdo, - CONST DEVPROPKEY *PropertyKey, - LCID Lcid, - ULONG Flags, - ULONG Size, - PVOID Data, - PULONG RequiredSize, - PDEVPROPTYPE Type); -$endif - -#endif /* (NTDDI_VERSION >= NTDDI_VISTA) */ - -$if (_WDMDDK_) -#define IoCallDriverStackSafeDefault(a, b) IoCallDriver(a, b) - -#if (NTDDI_VERSION >= NTDDI_WS08) -NTKERNELAPI -NTSTATUS -NTAPI -IoReplacePartitionUnit( - IN PDEVICE_OBJECT TargetPdo, - IN PDEVICE_OBJECT SparePdo, - IN ULONG Flags); -#endif -$endif - -#if (NTDDI_VERSION >= NTDDI_WIN7) -$if (_NTDDK_) -NTSTATUS -NTAPI -IoSetFileObjectIgnoreSharing( - IN PFILE_OBJECT FileObject); -$endif - -$if (_WDMDDK_) -NTKERNELAPI -NTSTATUS -NTAPI -IoGetAffinityInterrupt( - IN PKINTERRUPT InterruptObject, - OUT PGROUP_AFFINITY GroupAffinity); - -NTSTATUS -NTAPI -IoGetContainerInformation( - IN IO_CONTAINER_INFORMATION_CLASS InformationClass, - IN PVOID ContainerObject OPTIONAL, - IN OUT PVOID Buffer OPTIONAL, - IN ULONG BufferLength); - -NTSTATUS -NTAPI -IoRegisterContainerNotification( - IN IO_CONTAINER_NOTIFICATION_CLASS NotificationClass, - IN PIO_CONTAINER_NOTIFICATION_FUNCTION CallbackFunction, - IN PVOID NotificationInformation OPTIONAL, - IN ULONG NotificationInformationLength, - OUT PVOID CallbackRegistration); - -VOID -NTAPI -IoUnregisterContainerNotification( - IN PVOID CallbackRegistration); - -NTKERNELAPI -NTSTATUS -NTAPI -IoUnregisterPlugPlayNotificationEx( - IN PVOID NotificationEntry); - -NTKERNELAPI -NTSTATUS -NTAPI -IoGetDeviceNumaNode( - IN PDEVICE_OBJECT Pdo, - OUT PUSHORT NodeNumber); -$endif - -#endif /* (NTDDI_VERSION >= NTDDI_WIN7) */ - -$if (_WDMDDK_) -#if defined(_WIN64) -NTKERNELAPI -ULONG -NTAPI -IoWMIDeviceObjectToProviderId( - IN PDEVICE_OBJECT DeviceObject); -#else -#define IoWMIDeviceObjectToProviderId(DeviceObject) ((ULONG)(DeviceObject)) -#endif - -/* - * USHORT - * IoSizeOfIrp( - * IN CCHAR StackSize) - */ -#define IoSizeOfIrp(_StackSize) \ - ((USHORT) (sizeof(IRP) + ((_StackSize) * (sizeof(IO_STACK_LOCATION))))) - -FORCEINLINE -VOID -IoSkipCurrentIrpStackLocation( - IN OUT PIRP Irp) -{ - ASSERT(Irp->CurrentLocation <= Irp->StackCount); - Irp->CurrentLocation++; - Irp->Tail.Overlay.CurrentStackLocation++; -} - -FORCEINLINE -VOID -IoSetNextIrpStackLocation( - IN OUT PIRP Irp) -{ - ASSERT(Irp->CurrentLocation > 0); - Irp->CurrentLocation--; - Irp->Tail.Overlay.CurrentStackLocation--; -} - -FORCEINLINE -PIO_STACK_LOCATION -IoGetNextIrpStackLocation( - IN PIRP Irp) -{ - ASSERT(Irp->CurrentLocation > 0); - return ((Irp)->Tail.Overlay.CurrentStackLocation - 1 ); -} - -FORCEINLINE -VOID -IoSetCompletionRoutine( - IN PIRP Irp, - IN PIO_COMPLETION_ROUTINE CompletionRoutine OPTIONAL, - IN PVOID Context OPTIONAL, - IN BOOLEAN InvokeOnSuccess, - IN BOOLEAN InvokeOnError, - IN BOOLEAN InvokeOnCancel) -{ - PIO_STACK_LOCATION irpSp; - ASSERT( (InvokeOnSuccess || InvokeOnError || InvokeOnCancel) ? (CompletionRoutine != NULL) : TRUE ); - irpSp = IoGetNextIrpStackLocation(Irp); - irpSp->CompletionRoutine = CompletionRoutine; - irpSp->Context = Context; - irpSp->Control = 0; - - if (InvokeOnSuccess) { - irpSp->Control = SL_INVOKE_ON_SUCCESS; - } - - if (InvokeOnError) { - irpSp->Control |= SL_INVOKE_ON_ERROR; - } - - if (InvokeOnCancel) { - irpSp->Control |= SL_INVOKE_ON_CANCEL; - } -} - -/* - * PDRIVER_CANCEL - * IoSetCancelRoutine( - * IN PIRP Irp, - * IN PDRIVER_CANCEL CancelRoutine) - */ -#define IoSetCancelRoutine(_Irp, \ - _CancelRoutine) \ - ((PDRIVER_CANCEL) (ULONG_PTR) InterlockedExchangePointer( \ - (PVOID *) &(_Irp)->CancelRoutine, (PVOID) (ULONG_PTR) (_CancelRoutine))) - -/* - * VOID - * IoRequestDpc( - * IN PDEVICE_OBJECT DeviceObject, - * IN PIRP Irp, - * IN PVOID Context); - */ -#define IoRequestDpc(DeviceObject, Irp, Context)( \ - KeInsertQueueDpc(&(DeviceObject)->Dpc, (Irp), (Context))) - -/* - * VOID - * IoReleaseRemoveLock( - * IN PIO_REMOVE_LOCK RemoveLock, - * IN PVOID Tag) - */ -#define IoReleaseRemoveLock(_RemoveLock, \ - _Tag) \ - IoReleaseRemoveLockEx(_RemoveLock, _Tag, sizeof(IO_REMOVE_LOCK)) - -/* - * VOID - * IoReleaseRemoveLockAndWait( - * IN PIO_REMOVE_LOCK RemoveLock, - * IN PVOID Tag) - */ -#define IoReleaseRemoveLockAndWait(_RemoveLock, \ - _Tag) \ - IoReleaseRemoveLockAndWaitEx(_RemoveLock, _Tag, sizeof(IO_REMOVE_LOCK)) - -#if defined(_WIN64) -NTKERNELAPI -BOOLEAN -IoIs32bitProcess( - IN PIRP Irp OPTIONAL); -#endif - -#define PLUGPLAY_REGKEY_DEVICE 1 -#define PLUGPLAY_REGKEY_DRIVER 2 -#define PLUGPLAY_REGKEY_CURRENT_HWPROFILE 4 - -FORCEINLINE -PIO_STACK_LOCATION -IoGetCurrentIrpStackLocation( - IN PIRP Irp) -{ - ASSERT(Irp->CurrentLocation <= Irp->StackCount + 1); - return Irp->Tail.Overlay.CurrentStackLocation; -} - -FORCEINLINE -VOID -IoMarkIrpPending( - IN OUT PIRP Irp) -{ - IoGetCurrentIrpStackLocation( (Irp) )->Control |= SL_PENDING_RETURNED; -} - -/* - * BOOLEAN - * IoIsErrorUserInduced( - * IN NTSTATUS Status); - */ -#define IoIsErrorUserInduced(Status) \ - ((BOOLEAN)(((Status) == STATUS_DEVICE_NOT_READY) || \ - ((Status) == STATUS_IO_TIMEOUT) || \ - ((Status) == STATUS_MEDIA_WRITE_PROTECTED) || \ - ((Status) == STATUS_NO_MEDIA_IN_DEVICE) || \ - ((Status) == STATUS_VERIFY_REQUIRED) || \ - ((Status) == STATUS_UNRECOGNIZED_MEDIA) || \ - ((Status) == STATUS_WRONG_VOLUME))) - -/* VOID - * IoInitializeRemoveLock( - * IN PIO_REMOVE_LOCK Lock, - * IN ULONG AllocateTag, - * IN ULONG MaxLockedMinutes, - * IN ULONG HighWatermark) - */ -#define IoInitializeRemoveLock( \ - Lock, AllocateTag, MaxLockedMinutes, HighWatermark) \ - IoInitializeRemoveLockEx(Lock, AllocateTag, MaxLockedMinutes, \ - HighWatermark, sizeof(IO_REMOVE_LOCK)) - -VOID -FORCEINLINE -IoInitializeDpcRequest( - IN PDEVICE_OBJECT DeviceObject, - IN PIO_DPC_ROUTINE DpcRoutine) -{ - KeInitializeDpc( &DeviceObject->Dpc, - (PKDEFERRED_ROUTINE) DpcRoutine, - DeviceObject ); -} - -#define DEVICE_INTERFACE_INCLUDE_NONACTIVE 0x00000001 - -/* - * ULONG - * IoGetFunctionCodeFromCtlCode( - * IN ULONG ControlCode) - */ -#define IoGetFunctionCodeFromCtlCode(_ControlCode) \ - (((_ControlCode) >> 2) & 0x00000FFF) - -FORCEINLINE -VOID -IoCopyCurrentIrpStackLocationToNext( - IN OUT PIRP Irp) -{ - PIO_STACK_LOCATION irpSp; - PIO_STACK_LOCATION nextIrpSp; - irpSp = IoGetCurrentIrpStackLocation(Irp); - nextIrpSp = IoGetNextIrpStackLocation(Irp); - RtlCopyMemory( nextIrpSp, irpSp, FIELD_OFFSET(IO_STACK_LOCATION, CompletionRoutine)); - nextIrpSp->Control = 0; -} - -NTKERNELAPI -VOID -NTAPI -IoGetStackLimits( - OUT PULONG_PTR LowLimit, - OUT PULONG_PTR HighLimit); - -FORCEINLINE -ULONG_PTR -IoGetRemainingStackSize(VOID) -{ - ULONG_PTR End, Begin; - ULONG_PTR Result; - - IoGetStackLimits(&Begin, &End); - Result = (ULONG_PTR)(&End) - Begin; - return Result; -} - -#if (NTDDI_VERSION >= NTDDI_WS03) -VOID -FORCEINLINE -IoInitializeThreadedDpcRequest( - IN PDEVICE_OBJECT DeviceObject, - IN PIO_DPC_ROUTINE DpcRoutine) -{ - KeInitializeThreadedDpc(&DeviceObject->Dpc, - (PKDEFERRED_ROUTINE) DpcRoutine, - DeviceObject ); -} -#endif -$endif - diff --git a/reactos/include/xdk/iotypes.h b/reactos/include/xdk/iotypes.h deleted file mode 100644 index aac22cb3668..00000000000 --- a/reactos/include/xdk/iotypes.h +++ /dev/null @@ -1,4869 +0,0 @@ -/****************************************************************************** - * I/O Manager Types * - ******************************************************************************/ - -$if (_WDMDDK_) -#define WDM_MAJORVERSION 0x06 -#define WDM_MINORVERSION 0x00 - -#if defined(_WIN64) - -#ifndef USE_DMA_MACROS -#define USE_DMA_MACROS -#endif - -#ifndef NO_LEGACY_DRIVERS -#define NO_LEGACY_DRIVERS -#endif - -#endif /* defined(_WIN64) */ - -#define STATUS_CONTINUE_COMPLETION STATUS_SUCCESS - -#define CONNECT_FULLY_SPECIFIED 0x1 -#define CONNECT_LINE_BASED 0x2 -#define CONNECT_MESSAGE_BASED 0x3 -#define CONNECT_FULLY_SPECIFIED_GROUP 0x4 -#define CONNECT_CURRENT_VERSION 0x4 - -#define POOL_COLD_ALLOCATION 256 -#define POOL_QUOTA_FAIL_INSTEAD_OF_RAISE 8 -#define POOL_RAISE_IF_ALLOCATION_FAILURE 16 - -#define IO_TYPE_ADAPTER 1 -#define IO_TYPE_CONTROLLER 2 -#define IO_TYPE_DEVICE 3 -#define IO_TYPE_DRIVER 4 -#define IO_TYPE_FILE 5 -#define IO_TYPE_IRP 6 -#define IO_TYPE_MASTER_ADAPTER 7 -#define IO_TYPE_OPEN_PACKET 8 -#define IO_TYPE_TIMER 9 -#define IO_TYPE_VPB 10 -#define IO_TYPE_ERROR_LOG 11 -#define IO_TYPE_ERROR_MESSAGE 12 -#define IO_TYPE_DEVICE_OBJECT_EXTENSION 13 - -#define IO_TYPE_CSQ_IRP_CONTEXT 1 -#define IO_TYPE_CSQ 2 -#define IO_TYPE_CSQ_EX 3 - -/* IO_RESOURCE_DESCRIPTOR.Option */ -#define IO_RESOURCE_PREFERRED 0x01 -#define IO_RESOURCE_DEFAULT 0x02 -#define IO_RESOURCE_ALTERNATIVE 0x08 - -#define FILE_DEVICE_BEEP 0x00000001 -#define FILE_DEVICE_CD_ROM 0x00000002 -#define FILE_DEVICE_CD_ROM_FILE_SYSTEM 0x00000003 -#define FILE_DEVICE_CONTROLLER 0x00000004 -#define FILE_DEVICE_DATALINK 0x00000005 -#define FILE_DEVICE_DFS 0x00000006 -#define FILE_DEVICE_DISK 0x00000007 -#define FILE_DEVICE_DISK_FILE_SYSTEM 0x00000008 -#define FILE_DEVICE_FILE_SYSTEM 0x00000009 -#define FILE_DEVICE_INPORT_PORT 0x0000000a -#define FILE_DEVICE_KEYBOARD 0x0000000b -#define FILE_DEVICE_MAILSLOT 0x0000000c -#define FILE_DEVICE_MIDI_IN 0x0000000d -#define FILE_DEVICE_MIDI_OUT 0x0000000e -#define FILE_DEVICE_MOUSE 0x0000000f -#define FILE_DEVICE_MULTI_UNC_PROVIDER 0x00000010 -#define FILE_DEVICE_NAMED_PIPE 0x00000011 -#define FILE_DEVICE_NETWORK 0x00000012 -#define FILE_DEVICE_NETWORK_BROWSER 0x00000013 -#define FILE_DEVICE_NETWORK_FILE_SYSTEM 0x00000014 -#define FILE_DEVICE_NULL 0x00000015 -#define FILE_DEVICE_PARALLEL_PORT 0x00000016 -#define FILE_DEVICE_PHYSICAL_NETCARD 0x00000017 -#define FILE_DEVICE_PRINTER 0x00000018 -#define FILE_DEVICE_SCANNER 0x00000019 -#define FILE_DEVICE_SERIAL_MOUSE_PORT 0x0000001a -#define FILE_DEVICE_SERIAL_PORT 0x0000001b -#define FILE_DEVICE_SCREEN 0x0000001c -#define FILE_DEVICE_SOUND 0x0000001d -#define FILE_DEVICE_STREAMS 0x0000001e -#define FILE_DEVICE_TAPE 0x0000001f -#define FILE_DEVICE_TAPE_FILE_SYSTEM 0x00000020 -#define FILE_DEVICE_TRANSPORT 0x00000021 -#define FILE_DEVICE_UNKNOWN 0x00000022 -#define FILE_DEVICE_VIDEO 0x00000023 -#define FILE_DEVICE_VIRTUAL_DISK 0x00000024 -#define FILE_DEVICE_WAVE_IN 0x00000025 -#define FILE_DEVICE_WAVE_OUT 0x00000026 -#define FILE_DEVICE_8042_PORT 0x00000027 -#define FILE_DEVICE_NETWORK_REDIRECTOR 0x00000028 -#define FILE_DEVICE_BATTERY 0x00000029 -#define FILE_DEVICE_BUS_EXTENDER 0x0000002a -#define FILE_DEVICE_MODEM 0x0000002b -#define FILE_DEVICE_VDM 0x0000002c -#define FILE_DEVICE_MASS_STORAGE 0x0000002d -#define FILE_DEVICE_SMB 0x0000002e -#define FILE_DEVICE_KS 0x0000002f -#define FILE_DEVICE_CHANGER 0x00000030 -#define FILE_DEVICE_SMARTCARD 0x00000031 -#define FILE_DEVICE_ACPI 0x00000032 -#define FILE_DEVICE_DVD 0x00000033 -#define FILE_DEVICE_FULLSCREEN_VIDEO 0x00000034 -#define FILE_DEVICE_DFS_FILE_SYSTEM 0x00000035 -#define FILE_DEVICE_DFS_VOLUME 0x00000036 -#define FILE_DEVICE_SERENUM 0x00000037 -#define FILE_DEVICE_TERMSRV 0x00000038 -#define FILE_DEVICE_KSEC 0x00000039 -#define FILE_DEVICE_FIPS 0x0000003A -#define FILE_DEVICE_INFINIBAND 0x0000003B -#define FILE_DEVICE_VMBUS 0x0000003E -#define FILE_DEVICE_CRYPT_PROVIDER 0x0000003F -#define FILE_DEVICE_WPD 0x00000040 -#define FILE_DEVICE_BLUETOOTH 0x00000041 -#define FILE_DEVICE_MT_COMPOSITE 0x00000042 -#define FILE_DEVICE_MT_TRANSPORT 0x00000043 -#define FILE_DEVICE_BIOMETRIC 0x00000044 -#define FILE_DEVICE_PMI 0x00000045 - -#if defined(NT_PROCESSOR_GROUPS) - -typedef USHORT IRQ_DEVICE_POLICY, *PIRQ_DEVICE_POLICY; - -typedef enum _IRQ_DEVICE_POLICY_USHORT { - IrqPolicyMachineDefault = 0, - IrqPolicyAllCloseProcessors = 1, - IrqPolicyOneCloseProcessor = 2, - IrqPolicyAllProcessorsInMachine = 3, - IrqPolicyAllProcessorsInGroup = 3, - IrqPolicySpecifiedProcessors = 4, - IrqPolicySpreadMessagesAcrossAllProcessors = 5}; - -#else /* defined(NT_PROCESSOR_GROUPS) */ - -typedef enum _IRQ_DEVICE_POLICY { - IrqPolicyMachineDefault = 0, - IrqPolicyAllCloseProcessors, - IrqPolicyOneCloseProcessor, - IrqPolicyAllProcessorsInMachine, - IrqPolicySpecifiedProcessors, - IrqPolicySpreadMessagesAcrossAllProcessors -} IRQ_DEVICE_POLICY, *PIRQ_DEVICE_POLICY; - -#endif - -typedef enum _IRQ_PRIORITY { - IrqPriorityUndefined = 0, - IrqPriorityLow, - IrqPriorityNormal, - IrqPriorityHigh -} IRQ_PRIORITY, *PIRQ_PRIORITY; - -typedef enum _IRQ_GROUP_POLICY { - GroupAffinityAllGroupZero = 0, - GroupAffinityDontCare -} IRQ_GROUP_POLICY, *PIRQ_GROUP_POLICY; - -#define MAXIMUM_VOLUME_LABEL_LENGTH (32 * sizeof(WCHAR)) - -typedef struct _OBJECT_HANDLE_INFORMATION { - ULONG HandleAttributes; - ACCESS_MASK GrantedAccess; -} OBJECT_HANDLE_INFORMATION, *POBJECT_HANDLE_INFORMATION; - -typedef struct _CLIENT_ID { - HANDLE UniqueProcess; - HANDLE UniqueThread; -} CLIENT_ID, *PCLIENT_ID; - -typedef struct _VPB { - CSHORT Type; - CSHORT Size; - USHORT Flags; - USHORT VolumeLabelLength; - struct _DEVICE_OBJECT *DeviceObject; - struct _DEVICE_OBJECT *RealDevice; - ULONG SerialNumber; - ULONG ReferenceCount; - WCHAR VolumeLabel[MAXIMUM_VOLUME_LABEL_LENGTH / sizeof(WCHAR)]; -} VPB, *PVPB; - -typedef enum _IO_ALLOCATION_ACTION { - KeepObject = 1, - DeallocateObject, - DeallocateObjectKeepRegisters -} IO_ALLOCATION_ACTION, *PIO_ALLOCATION_ACTION; - -typedef IO_ALLOCATION_ACTION -(NTAPI DRIVER_CONTROL)( - IN struct _DEVICE_OBJECT *DeviceObject, - IN struct _IRP *Irp, - IN PVOID MapRegisterBase, - IN PVOID Context); -typedef DRIVER_CONTROL *PDRIVER_CONTROL; - -typedef struct _WAIT_CONTEXT_BLOCK { - KDEVICE_QUEUE_ENTRY WaitQueueEntry; - PDRIVER_CONTROL DeviceRoutine; - PVOID DeviceContext; - ULONG NumberOfMapRegisters; - PVOID DeviceObject; - PVOID CurrentIrp; - PKDPC BufferChainingDpc; -} WAIT_CONTEXT_BLOCK, *PWAIT_CONTEXT_BLOCK; - -$endif -/* DEVICE_OBJECT.Flags */ -$if (_NTDDK_) -#define DO_DEVICE_HAS_NAME 0x00000040 -#define DO_SYSTEM_BOOT_PARTITION 0x00000100 -#define DO_LONG_TERM_REQUESTS 0x00000200 -#define DO_NEVER_LAST_DEVICE 0x00000400 -#define DO_LOW_PRIORITY_FILESYSTEM 0x00010000 -#define DO_SUPPORTS_TRANSACTIONS 0x00040000 -#define DO_FORCE_NEITHER_IO 0x00080000 -#define DO_VOLUME_DEVICE_OBJECT 0x00100000 -#define DO_SYSTEM_SYSTEM_PARTITION 0x00200000 -#define DO_SYSTEM_CRITICAL_PARTITION 0x00400000 -#define DO_DISALLOW_EXECUTE 0x00800000 -$endif -$if (_WDMDDK_) -#define DO_VERIFY_VOLUME 0x00000002 -#define DO_BUFFERED_IO 0x00000004 -#define DO_EXCLUSIVE 0x00000008 -#define DO_DIRECT_IO 0x00000010 -#define DO_MAP_IO_BUFFER 0x00000020 -#define DO_DEVICE_INITIALIZING 0x00000080 -#define DO_SHUTDOWN_REGISTERED 0x00000800 -#define DO_BUS_ENUMERATED_DEVICE 0x00001000 -#define DO_POWER_PAGABLE 0x00002000 -#define DO_POWER_INRUSH 0x00004000 - -/* DEVICE_OBJECT.Characteristics */ -#define FILE_REMOVABLE_MEDIA 0x00000001 -#define FILE_READ_ONLY_DEVICE 0x00000002 -#define FILE_FLOPPY_DISKETTE 0x00000004 -#define FILE_WRITE_ONCE_MEDIA 0x00000008 -#define FILE_REMOTE_DEVICE 0x00000010 -#define FILE_DEVICE_IS_MOUNTED 0x00000020 -#define FILE_VIRTUAL_VOLUME 0x00000040 -#define FILE_AUTOGENERATED_DEVICE_NAME 0x00000080 -#define FILE_DEVICE_SECURE_OPEN 0x00000100 -#define FILE_CHARACTERISTIC_PNP_DEVICE 0x00000800 -#define FILE_CHARACTERISTIC_TS_DEVICE 0x00001000 -#define FILE_CHARACTERISTIC_WEBDAV_DEVICE 0x00002000 - -/* DEVICE_OBJECT.AlignmentRequirement */ -#define FILE_BYTE_ALIGNMENT 0x00000000 -#define FILE_WORD_ALIGNMENT 0x00000001 -#define FILE_LONG_ALIGNMENT 0x00000003 -#define FILE_QUAD_ALIGNMENT 0x00000007 -#define FILE_OCTA_ALIGNMENT 0x0000000f -#define FILE_32_BYTE_ALIGNMENT 0x0000001f -#define FILE_64_BYTE_ALIGNMENT 0x0000003f -#define FILE_128_BYTE_ALIGNMENT 0x0000007f -#define FILE_256_BYTE_ALIGNMENT 0x000000ff -#define FILE_512_BYTE_ALIGNMENT 0x000001ff - -/* DEVICE_OBJECT.DeviceType */ -#define DEVICE_TYPE ULONG - -typedef struct _DEVICE_OBJECT { - CSHORT Type; - USHORT Size; - LONG ReferenceCount; - struct _DRIVER_OBJECT *DriverObject; - struct _DEVICE_OBJECT *NextDevice; - struct _DEVICE_OBJECT *AttachedDevice; - struct _IRP *CurrentIrp; - PIO_TIMER Timer; - ULONG Flags; - ULONG Characteristics; - volatile PVPB Vpb; - PVOID DeviceExtension; - DEVICE_TYPE DeviceType; - CCHAR StackSize; - union { - LIST_ENTRY ListEntry; - WAIT_CONTEXT_BLOCK Wcb; - } Queue; - ULONG AlignmentRequirement; - KDEVICE_QUEUE DeviceQueue; - KDPC Dpc; - ULONG ActiveThreadCount; - PSECURITY_DESCRIPTOR SecurityDescriptor; - KEVENT DeviceLock; - USHORT SectorSize; - USHORT Spare1; - struct _DEVOBJ_EXTENSION *DeviceObjectExtension; - PVOID Reserved; -} DEVICE_OBJECT, *PDEVICE_OBJECT; - -typedef enum _IO_SESSION_STATE { - IoSessionStateCreated = 1, - IoSessionStateInitialized, - IoSessionStateConnected, - IoSessionStateDisconnected, - IoSessionStateDisconnectedLoggedOn, - IoSessionStateLoggedOn, - IoSessionStateLoggedOff, - IoSessionStateTerminated, - IoSessionStateMax -} IO_SESSION_STATE, *PIO_SESSION_STATE; - -typedef enum _IO_COMPLETION_ROUTINE_RESULT { - ContinueCompletion = STATUS_CONTINUE_COMPLETION, - StopCompletion = STATUS_MORE_PROCESSING_REQUIRED -} IO_COMPLETION_ROUTINE_RESULT, *PIO_COMPLETION_ROUTINE_RESULT; - -typedef struct _IO_INTERRUPT_MESSAGE_INFO_ENTRY { - PHYSICAL_ADDRESS MessageAddress; - KAFFINITY TargetProcessorSet; - PKINTERRUPT InterruptObject; - ULONG MessageData; - ULONG Vector; - KIRQL Irql; - KINTERRUPT_MODE Mode; - KINTERRUPT_POLARITY Polarity; -} IO_INTERRUPT_MESSAGE_INFO_ENTRY, *PIO_INTERRUPT_MESSAGE_INFO_ENTRY; - -typedef struct _IO_INTERRUPT_MESSAGE_INFO { - KIRQL UnifiedIrql; - ULONG MessageCount; - IO_INTERRUPT_MESSAGE_INFO_ENTRY MessageInfo[1]; -} IO_INTERRUPT_MESSAGE_INFO, *PIO_INTERRUPT_MESSAGE_INFO; - -typedef struct _IO_CONNECT_INTERRUPT_FULLY_SPECIFIED_PARAMETERS { - IN PDEVICE_OBJECT PhysicalDeviceObject; - OUT PKINTERRUPT *InterruptObject; - IN PKSERVICE_ROUTINE ServiceRoutine; - IN PVOID ServiceContext; - IN PKSPIN_LOCK SpinLock OPTIONAL; - IN KIRQL SynchronizeIrql; - IN BOOLEAN FloatingSave; - IN BOOLEAN ShareVector; - IN ULONG Vector; - IN KIRQL Irql; - IN KINTERRUPT_MODE InterruptMode; - IN KAFFINITY ProcessorEnableMask; - IN USHORT Group; -} IO_CONNECT_INTERRUPT_FULLY_SPECIFIED_PARAMETERS, *PIO_CONNECT_INTERRUPT_FULLY_SPECIFIED_PARAMETERS; - -typedef struct _IO_CONNECT_INTERRUPT_LINE_BASED_PARAMETERS { - IN PDEVICE_OBJECT PhysicalDeviceObject; - OUT PKINTERRUPT *InterruptObject; - IN PKSERVICE_ROUTINE ServiceRoutine; - IN PVOID ServiceContext; - IN PKSPIN_LOCK SpinLock OPTIONAL; - IN KIRQL SynchronizeIrql OPTIONAL; - IN BOOLEAN FloatingSave; -} IO_CONNECT_INTERRUPT_LINE_BASED_PARAMETERS, *PIO_CONNECT_INTERRUPT_LINE_BASED_PARAMETERS; - -typedef struct _IO_CONNECT_INTERRUPT_MESSAGE_BASED_PARAMETERS { - IN PDEVICE_OBJECT PhysicalDeviceObject; - union { - OUT PVOID *Generic; - OUT PIO_INTERRUPT_MESSAGE_INFO *InterruptMessageTable; - OUT PKINTERRUPT *InterruptObject; - } ConnectionContext; - IN PKMESSAGE_SERVICE_ROUTINE MessageServiceRoutine; - IN PVOID ServiceContext; - IN PKSPIN_LOCK SpinLock OPTIONAL; - IN KIRQL SynchronizeIrql OPTIONAL; - IN BOOLEAN FloatingSave; - IN PKSERVICE_ROUTINE FallBackServiceRoutine OPTIONAL; -} IO_CONNECT_INTERRUPT_MESSAGE_BASED_PARAMETERS, *PIO_CONNECT_INTERRUPT_MESSAGE_BASED_PARAMETERS; - -typedef struct _IO_CONNECT_INTERRUPT_PARAMETERS { - IN OUT ULONG Version; - union { - IO_CONNECT_INTERRUPT_FULLY_SPECIFIED_PARAMETERS FullySpecified; - IO_CONNECT_INTERRUPT_LINE_BASED_PARAMETERS LineBased; - IO_CONNECT_INTERRUPT_MESSAGE_BASED_PARAMETERS MessageBased; - }; -} IO_CONNECT_INTERRUPT_PARAMETERS, *PIO_CONNECT_INTERRUPT_PARAMETERS; - -typedef struct _IO_DISCONNECT_INTERRUPT_PARAMETERS { - IN ULONG Version; - union { - IN PVOID Generic; - IN PKINTERRUPT InterruptObject; - IN PIO_INTERRUPT_MESSAGE_INFO InterruptMessageTable; - } ConnectionContext; -} IO_DISCONNECT_INTERRUPT_PARAMETERS, *PIO_DISCONNECT_INTERRUPT_PARAMETERS; - -typedef enum _IO_ACCESS_TYPE { - ReadAccess, - WriteAccess, - ModifyAccess -} IO_ACCESS_TYPE; - -typedef enum _IO_ACCESS_MODE { - SequentialAccess, - RandomAccess -} IO_ACCESS_MODE; - -typedef enum _IO_CONTAINER_NOTIFICATION_CLASS { - IoSessionStateNotification, - IoMaxContainerNotificationClass -} IO_CONTAINER_NOTIFICATION_CLASS; - -typedef struct _IO_SESSION_STATE_NOTIFICATION { - ULONG Size; - ULONG Flags; - PVOID IoObject; - ULONG EventMask; - PVOID Context; -} IO_SESSION_STATE_NOTIFICATION, *PIO_SESSION_STATE_NOTIFICATION; - -typedef enum _IO_CONTAINER_INFORMATION_CLASS { - IoSessionStateInformation, - IoMaxContainerInformationClass -} IO_CONTAINER_INFORMATION_CLASS; - -typedef struct _IO_SESSION_STATE_INFORMATION { - ULONG SessionId; - IO_SESSION_STATE SessionState; - BOOLEAN LocalSession; -} IO_SESSION_STATE_INFORMATION, *PIO_SESSION_STATE_INFORMATION; - -#if (NTDDI_VERSION >= NTDDI_WIN7) - -typedef NTSTATUS -(NTAPI *PIO_CONTAINER_NOTIFICATION_FUNCTION)( - VOID); - -typedef NTSTATUS -(NTAPI IO_SESSION_NOTIFICATION_FUNCTION)( - IN PVOID SessionObject, - IN PVOID IoObject, - IN ULONG Event, - IN PVOID Context, - IN PVOID NotificationPayload, - IN ULONG PayloadLength); - -typedef IO_SESSION_NOTIFICATION_FUNCTION *PIO_SESSION_NOTIFICATION_FUNCTION; - -#endif - -typedef struct _IO_REMOVE_LOCK_TRACKING_BLOCK * PIO_REMOVE_LOCK_TRACKING_BLOCK; - -typedef struct _IO_REMOVE_LOCK_COMMON_BLOCK { - BOOLEAN Removed; - BOOLEAN Reserved[3]; - volatile LONG IoCount; - KEVENT RemoveEvent; -} IO_REMOVE_LOCK_COMMON_BLOCK; - -typedef struct _IO_REMOVE_LOCK_DBG_BLOCK { - LONG Signature; - LONG HighWatermark; - LONGLONG MaxLockedTicks; - LONG AllocateTag; - LIST_ENTRY LockList; - KSPIN_LOCK Spin; - volatile LONG LowMemoryCount; - ULONG Reserved1[4]; - PVOID Reserved2; - PIO_REMOVE_LOCK_TRACKING_BLOCK Blocks; -} IO_REMOVE_LOCK_DBG_BLOCK; - -typedef struct _IO_REMOVE_LOCK { - IO_REMOVE_LOCK_COMMON_BLOCK Common; -#if DBG - IO_REMOVE_LOCK_DBG_BLOCK Dbg; -#endif -} IO_REMOVE_LOCK, *PIO_REMOVE_LOCK; - -typedef struct _IO_WORKITEM *PIO_WORKITEM; - -typedef VOID -(NTAPI IO_WORKITEM_ROUTINE)( - IN PDEVICE_OBJECT DeviceObject, - IN PVOID Context); -typedef IO_WORKITEM_ROUTINE *PIO_WORKITEM_ROUTINE; - -typedef VOID -(NTAPI IO_WORKITEM_ROUTINE_EX)( - IN PVOID IoObject, - IN PVOID Context OPTIONAL, - IN PIO_WORKITEM IoWorkItem); -typedef IO_WORKITEM_ROUTINE_EX *PIO_WORKITEM_ROUTINE_EX; - -typedef struct _SHARE_ACCESS { - ULONG OpenCount; - ULONG Readers; - ULONG Writers; - ULONG Deleters; - ULONG SharedRead; - ULONG SharedWrite; - ULONG SharedDelete; -} SHARE_ACCESS, *PSHARE_ACCESS; - -/* While MS WDK uses inheritance in C++, we cannot do this with gcc, as - inheritance, even from a struct renders the type non-POD. So we use - this hack */ -#define PCI_COMMON_HEADER_LAYOUT \ - USHORT VendorID; \ - USHORT DeviceID; \ - USHORT Command; \ - USHORT Status; \ - UCHAR RevisionID; \ - UCHAR ProgIf; \ - UCHAR SubClass; \ - UCHAR BaseClass; \ - UCHAR CacheLineSize; \ - UCHAR LatencyTimer; \ - UCHAR HeaderType; \ - UCHAR BIST; \ - union { \ - struct _PCI_HEADER_TYPE_0 { \ - ULONG BaseAddresses[PCI_TYPE0_ADDRESSES]; \ - ULONG CIS; \ - USHORT SubVendorID; \ - USHORT SubSystemID; \ - ULONG ROMBaseAddress; \ - UCHAR CapabilitiesPtr; \ - UCHAR Reserved1[3]; \ - ULONG Reserved2; \ - UCHAR InterruptLine; \ - UCHAR InterruptPin; \ - UCHAR MinimumGrant; \ - UCHAR MaximumLatency; \ - } type0; \ - struct _PCI_HEADER_TYPE_1 { \ - ULONG BaseAddresses[PCI_TYPE1_ADDRESSES]; \ - UCHAR PrimaryBus; \ - UCHAR SecondaryBus; \ - UCHAR SubordinateBus; \ - UCHAR SecondaryLatency; \ - UCHAR IOBase; \ - UCHAR IOLimit; \ - USHORT SecondaryStatus; \ - USHORT MemoryBase; \ - USHORT MemoryLimit; \ - USHORT PrefetchBase; \ - USHORT PrefetchLimit; \ - ULONG PrefetchBaseUpper32; \ - ULONG PrefetchLimitUpper32; \ - USHORT IOBaseUpper16; \ - USHORT IOLimitUpper16; \ - UCHAR CapabilitiesPtr; \ - UCHAR Reserved1[3]; \ - ULONG ROMBaseAddress; \ - UCHAR InterruptLine; \ - UCHAR InterruptPin; \ - USHORT BridgeControl; \ - } type1; \ - struct _PCI_HEADER_TYPE_2 { \ - ULONG SocketRegistersBaseAddress; \ - UCHAR CapabilitiesPtr; \ - UCHAR Reserved; \ - USHORT SecondaryStatus; \ - UCHAR PrimaryBus; \ - UCHAR SecondaryBus; \ - UCHAR SubordinateBus; \ - UCHAR SecondaryLatency; \ - struct { \ - ULONG Base; \ - ULONG Limit; \ - } Range[PCI_TYPE2_ADDRESSES-1]; \ - UCHAR InterruptLine; \ - UCHAR InterruptPin; \ - USHORT BridgeControl; \ - } type2; \ - } u; - -typedef enum _CREATE_FILE_TYPE { - CreateFileTypeNone, - CreateFileTypeNamedPipe, - CreateFileTypeMailslot -} CREATE_FILE_TYPE; - -#define IO_FORCE_ACCESS_CHECK 0x001 -#define IO_NO_PARAMETER_CHECKING 0x100 - -#define IO_REPARSE 0x0 -#define IO_REMOUNT 0x1 - -typedef struct _IO_STATUS_BLOCK { - _ANONYMOUS_UNION union { - NTSTATUS Status; - PVOID Pointer; - } DUMMYUNIONNAME; - ULONG_PTR Information; -} IO_STATUS_BLOCK, *PIO_STATUS_BLOCK; - -#if defined(_WIN64) -typedef struct _IO_STATUS_BLOCK32 { - NTSTATUS Status; - ULONG Information; -} IO_STATUS_BLOCK32, *PIO_STATUS_BLOCK32; -#endif - -typedef VOID -(NTAPI *PIO_APC_ROUTINE)( - IN PVOID ApcContext, - IN PIO_STATUS_BLOCK IoStatusBlock, - IN ULONG Reserved); - -#define PIO_APC_ROUTINE_DEFINED - -typedef enum _IO_SESSION_EVENT { - IoSessionEventIgnore = 0, - IoSessionEventCreated, - IoSessionEventTerminated, - IoSessionEventConnected, - IoSessionEventDisconnected, - IoSessionEventLogon, - IoSessionEventLogoff, - IoSessionEventMax -} IO_SESSION_EVENT, *PIO_SESSION_EVENT; - -#define IO_SESSION_STATE_ALL_EVENTS 0xffffffff -#define IO_SESSION_STATE_CREATION_EVENT 0x00000001 -#define IO_SESSION_STATE_TERMINATION_EVENT 0x00000002 -#define IO_SESSION_STATE_CONNECT_EVENT 0x00000004 -#define IO_SESSION_STATE_DISCONNECT_EVENT 0x00000008 -#define IO_SESSION_STATE_LOGON_EVENT 0x00000010 -#define IO_SESSION_STATE_LOGOFF_EVENT 0x00000020 - -#define IO_SESSION_STATE_VALID_EVENT_MASK 0x0000003f - -#define IO_SESSION_MAX_PAYLOAD_SIZE 256L - -typedef struct _IO_SESSION_CONNECT_INFO { - ULONG SessionId; - BOOLEAN LocalSession; -} IO_SESSION_CONNECT_INFO, *PIO_SESSION_CONNECT_INFO; - -#define EVENT_INCREMENT 1 -#define IO_NO_INCREMENT 0 -#define IO_CD_ROM_INCREMENT 1 -#define IO_DISK_INCREMENT 1 -#define IO_KEYBOARD_INCREMENT 6 -#define IO_MAILSLOT_INCREMENT 2 -#define IO_MOUSE_INCREMENT 6 -#define IO_NAMED_PIPE_INCREMENT 2 -#define IO_NETWORK_INCREMENT 2 -#define IO_PARALLEL_INCREMENT 1 -#define IO_SERIAL_INCREMENT 2 -#define IO_SOUND_INCREMENT 8 -#define IO_VIDEO_INCREMENT 1 -#define SEMAPHORE_INCREMENT 1 - -#define MM_MAXIMUM_DISK_IO_SIZE (0x10000) - -typedef struct _BOOTDISK_INFORMATION { - LONGLONG BootPartitionOffset; - LONGLONG SystemPartitionOffset; - ULONG BootDeviceSignature; - ULONG SystemDeviceSignature; -} BOOTDISK_INFORMATION, *PBOOTDISK_INFORMATION; - -typedef struct _BOOTDISK_INFORMATION_EX { - LONGLONG BootPartitionOffset; - LONGLONG SystemPartitionOffset; - ULONG BootDeviceSignature; - ULONG SystemDeviceSignature; - GUID BootDeviceGuid; - GUID SystemDeviceGuid; - BOOLEAN BootDeviceIsGpt; - BOOLEAN SystemDeviceIsGpt; -} BOOTDISK_INFORMATION_EX, *PBOOTDISK_INFORMATION_EX; - -#if (NTDDI_VERSION >= NTDDI_WIN7) - -typedef struct _LOADER_PARTITION_INFORMATION_EX { - ULONG PartitionStyle; - ULONG PartitionNumber; - union { - ULONG Signature; - GUID DeviceId; - }; - ULONG Flags; -} LOADER_PARTITION_INFORMATION_EX, *PLOADER_PARTITION_INFORMATION_EX; - -typedef struct _BOOTDISK_INFORMATION_LITE { - ULONG NumberEntries; - LOADER_PARTITION_INFORMATION_EX Entries[1]; -} BOOTDISK_INFORMATION_LITE, *PBOOTDISK_INFORMATION_LITE; - -#else - -#if (NTDDI_VERSION >= NTDDI_VISTA) -typedef struct _BOOTDISK_INFORMATION_LITE { - ULONG BootDeviceSignature; - ULONG SystemDeviceSignature; - GUID BootDeviceGuid; - GUID SystemDeviceGuid; - BOOLEAN BootDeviceIsGpt; - BOOLEAN SystemDeviceIsGpt; -} BOOTDISK_INFORMATION_LITE, *PBOOTDISK_INFORMATION_LITE; -#endif /* (NTDDI_VERSION >= NTDDI_VISTA) */ - -#endif /* (NTDDI_VERSION >= NTDDI_WIN7) */ - -#include - -typedef struct _EISA_MEMORY_TYPE { - UCHAR ReadWrite:1; - UCHAR Cached:1; - UCHAR Reserved0:1; - UCHAR Type:2; - UCHAR Shared:1; - UCHAR Reserved1:1; - UCHAR MoreEntries:1; -} EISA_MEMORY_TYPE, *PEISA_MEMORY_TYPE; - -typedef struct _EISA_MEMORY_CONFIGURATION { - EISA_MEMORY_TYPE ConfigurationByte; - UCHAR DataSize; - USHORT AddressLowWord; - UCHAR AddressHighByte; - USHORT MemorySize; -} EISA_MEMORY_CONFIGURATION, *PEISA_MEMORY_CONFIGURATION; - -typedef struct _EISA_IRQ_DESCRIPTOR { - UCHAR Interrupt:4; - UCHAR Reserved:1; - UCHAR LevelTriggered:1; - UCHAR Shared:1; - UCHAR MoreEntries:1; -} EISA_IRQ_DESCRIPTOR, *PEISA_IRQ_DESCRIPTOR; - -typedef struct _EISA_IRQ_CONFIGURATION { - EISA_IRQ_DESCRIPTOR ConfigurationByte; - UCHAR Reserved; -} EISA_IRQ_CONFIGURATION, *PEISA_IRQ_CONFIGURATION; - -typedef struct _DMA_CONFIGURATION_BYTE0 { - UCHAR Channel:3; - UCHAR Reserved:3; - UCHAR Shared:1; - UCHAR MoreEntries:1; -} DMA_CONFIGURATION_BYTE0; - -typedef struct _DMA_CONFIGURATION_BYTE1 { - UCHAR Reserved0:2; - UCHAR TransferSize:2; - UCHAR Timing:2; - UCHAR Reserved1:2; -} DMA_CONFIGURATION_BYTE1; - -typedef struct _EISA_DMA_CONFIGURATION { - DMA_CONFIGURATION_BYTE0 ConfigurationByte0; - DMA_CONFIGURATION_BYTE1 ConfigurationByte1; -} EISA_DMA_CONFIGURATION, *PEISA_DMA_CONFIGURATION; - -typedef struct _EISA_PORT_DESCRIPTOR { - UCHAR NumberPorts:5; - UCHAR Reserved:1; - UCHAR Shared:1; - UCHAR MoreEntries:1; -} EISA_PORT_DESCRIPTOR, *PEISA_PORT_DESCRIPTOR; - -typedef struct _EISA_PORT_CONFIGURATION { - EISA_PORT_DESCRIPTOR Configuration; - USHORT PortAddress; -} EISA_PORT_CONFIGURATION, *PEISA_PORT_CONFIGURATION; - -typedef struct _CM_EISA_SLOT_INFORMATION { - UCHAR ReturnCode; - UCHAR ReturnFlags; - UCHAR MajorRevision; - UCHAR MinorRevision; - USHORT Checksum; - UCHAR NumberFunctions; - UCHAR FunctionInformation; - ULONG CompressedId; -} CM_EISA_SLOT_INFORMATION, *PCM_EISA_SLOT_INFORMATION; - -typedef struct _CM_EISA_FUNCTION_INFORMATION { - ULONG CompressedId; - UCHAR IdSlotFlags1; - UCHAR IdSlotFlags2; - UCHAR MinorRevision; - UCHAR MajorRevision; - UCHAR Selections[26]; - UCHAR FunctionFlags; - UCHAR TypeString[80]; - EISA_MEMORY_CONFIGURATION EisaMemory[9]; - EISA_IRQ_CONFIGURATION EisaIrq[7]; - EISA_DMA_CONFIGURATION EisaDma[4]; - EISA_PORT_CONFIGURATION EisaPort[20]; - UCHAR InitializationData[60]; -} CM_EISA_FUNCTION_INFORMATION, *PCM_EISA_FUNCTION_INFORMATION; - -#include - -/* CM_EISA_FUNCTION_INFORMATION.FunctionFlags */ - -#define EISA_FUNCTION_ENABLED 0x80 -#define EISA_FREE_FORM_DATA 0x40 -#define EISA_HAS_PORT_INIT_ENTRY 0x20 -#define EISA_HAS_PORT_RANGE 0x10 -#define EISA_HAS_DMA_ENTRY 0x08 -#define EISA_HAS_IRQ_ENTRY 0x04 -#define EISA_HAS_MEMORY_ENTRY 0x02 -#define EISA_HAS_TYPE_ENTRY 0x01 -#define EISA_HAS_INFORMATION \ - (EISA_HAS_PORT_RANGE + EISA_HAS_DMA_ENTRY + EISA_HAS_IRQ_ENTRY \ - + EISA_HAS_MEMORY_ENTRY + EISA_HAS_TYPE_ENTRY) - -#define EISA_MORE_ENTRIES 0x80 -#define EISA_SYSTEM_MEMORY 0x00 -#define EISA_MEMORY_TYPE_RAM 0x01 - -/* CM_EISA_SLOT_INFORMATION.ReturnCode */ - -#define EISA_INVALID_SLOT 0x80 -#define EISA_INVALID_FUNCTION 0x81 -#define EISA_INVALID_CONFIGURATION 0x82 -#define EISA_EMPTY_SLOT 0x83 -#define EISA_INVALID_BIOS_CALL 0x86 - -/* -** Plug and Play structures -*/ - -typedef VOID -(NTAPI *PINTERFACE_REFERENCE)( - PVOID Context); - -typedef VOID -(NTAPI *PINTERFACE_DEREFERENCE)( - PVOID Context); - -typedef BOOLEAN -(NTAPI TRANSLATE_BUS_ADDRESS)( - IN PVOID Context, - IN PHYSICAL_ADDRESS BusAddress, - IN ULONG Length, - IN OUT PULONG AddressSpace, - OUT PPHYSICAL_ADDRESS TranslatedAddress); -typedef TRANSLATE_BUS_ADDRESS *PTRANSLATE_BUS_ADDRESS; - -typedef struct _DMA_ADAPTER* -(NTAPI GET_DMA_ADAPTER)( - IN PVOID Context, - IN struct _DEVICE_DESCRIPTION *DeviceDescriptor, - OUT PULONG NumberOfMapRegisters); -typedef GET_DMA_ADAPTER *PGET_DMA_ADAPTER; - -typedef ULONG -(NTAPI GET_SET_DEVICE_DATA)( - IN PVOID Context, - IN ULONG DataType, - IN PVOID Buffer, - IN ULONG Offset, - IN ULONG Length); -typedef GET_SET_DEVICE_DATA *PGET_SET_DEVICE_DATA; - -typedef enum _DEVICE_INSTALL_STATE { - InstallStateInstalled, - InstallStateNeedsReinstall, - InstallStateFailedInstall, - InstallStateFinishInstall -} DEVICE_INSTALL_STATE, *PDEVICE_INSTALL_STATE; - -typedef struct _LEGACY_BUS_INFORMATION { - GUID BusTypeGuid; - INTERFACE_TYPE LegacyBusType; - ULONG BusNumber; -} LEGACY_BUS_INFORMATION, *PLEGACY_BUS_INFORMATION; - -typedef enum _DEVICE_REMOVAL_POLICY { - RemovalPolicyExpectNoRemoval = 1, - RemovalPolicyExpectOrderlyRemoval = 2, - RemovalPolicyExpectSurpriseRemoval = 3 -} DEVICE_REMOVAL_POLICY, *PDEVICE_REMOVAL_POLICY; - -typedef VOID -(NTAPI*PREENUMERATE_SELF)( - IN PVOID Context); - -typedef struct _REENUMERATE_SELF_INTERFACE_STANDARD { - USHORT Size; - USHORT Version; - PVOID Context; - PINTERFACE_REFERENCE InterfaceReference; - PINTERFACE_DEREFERENCE InterfaceDereference; - PREENUMERATE_SELF SurpriseRemoveAndReenumerateSelf; -} REENUMERATE_SELF_INTERFACE_STANDARD, *PREENUMERATE_SELF_INTERFACE_STANDARD; - -typedef VOID -(NTAPI *PIO_DEVICE_EJECT_CALLBACK)( - IN NTSTATUS Status, - IN OUT PVOID Context OPTIONAL); - -#define PCI_DEVICE_PRESENT_INTERFACE_VERSION 1 - -/* PCI_DEVICE_PRESENCE_PARAMETERS.Flags */ -#define PCI_USE_SUBSYSTEM_IDS 0x00000001 -#define PCI_USE_REVISION 0x00000002 -#define PCI_USE_VENDEV_IDS 0x00000004 -#define PCI_USE_CLASS_SUBCLASS 0x00000008 -#define PCI_USE_PROGIF 0x00000010 -#define PCI_USE_LOCAL_BUS 0x00000020 -#define PCI_USE_LOCAL_DEVICE 0x00000040 - -typedef struct _PCI_DEVICE_PRESENCE_PARAMETERS { - ULONG Size; - ULONG Flags; - USHORT VendorID; - USHORT DeviceID; - UCHAR RevisionID; - USHORT SubVendorID; - USHORT SubSystemID; - UCHAR BaseClass; - UCHAR SubClass; - UCHAR ProgIf; -} PCI_DEVICE_PRESENCE_PARAMETERS, *PPCI_DEVICE_PRESENCE_PARAMETERS; - -typedef BOOLEAN -(NTAPI PCI_IS_DEVICE_PRESENT)( - IN USHORT VendorID, - IN USHORT DeviceID, - IN UCHAR RevisionID, - IN USHORT SubVendorID, - IN USHORT SubSystemID, - IN ULONG Flags); -typedef PCI_IS_DEVICE_PRESENT *PPCI_IS_DEVICE_PRESENT; - -typedef BOOLEAN -(NTAPI PCI_IS_DEVICE_PRESENT_EX)( - IN PVOID Context, - IN PPCI_DEVICE_PRESENCE_PARAMETERS Parameters); -typedef PCI_IS_DEVICE_PRESENT_EX *PPCI_IS_DEVICE_PRESENT_EX; - -typedef struct _BUS_INTERFACE_STANDARD { - USHORT Size; - USHORT Version; - PVOID Context; - PINTERFACE_REFERENCE InterfaceReference; - PINTERFACE_DEREFERENCE InterfaceDereference; - PTRANSLATE_BUS_ADDRESS TranslateBusAddress; - PGET_DMA_ADAPTER GetDmaAdapter; - PGET_SET_DEVICE_DATA SetBusData; - PGET_SET_DEVICE_DATA GetBusData; -} BUS_INTERFACE_STANDARD, *PBUS_INTERFACE_STANDARD; - -typedef struct _PCI_DEVICE_PRESENT_INTERFACE { - USHORT Size; - USHORT Version; - PVOID Context; - PINTERFACE_REFERENCE InterfaceReference; - PINTERFACE_DEREFERENCE InterfaceDereference; - PPCI_IS_DEVICE_PRESENT IsDevicePresent; - PPCI_IS_DEVICE_PRESENT_EX IsDevicePresentEx; -} PCI_DEVICE_PRESENT_INTERFACE, *PPCI_DEVICE_PRESENT_INTERFACE; - -typedef struct _DEVICE_CAPABILITIES { - USHORT Size; - USHORT Version; - ULONG DeviceD1:1; - ULONG DeviceD2:1; - ULONG LockSupported:1; - ULONG EjectSupported:1; - ULONG Removable:1; - ULONG DockDevice:1; - ULONG UniqueID:1; - ULONG SilentInstall:1; - ULONG RawDeviceOK:1; - ULONG SurpriseRemovalOK:1; - ULONG WakeFromD0:1; - ULONG WakeFromD1:1; - ULONG WakeFromD2:1; - ULONG WakeFromD3:1; - ULONG HardwareDisabled:1; - ULONG NonDynamic:1; - ULONG WarmEjectSupported:1; - ULONG NoDisplayInUI:1; - ULONG Reserved:14; - ULONG Address; - ULONG UINumber; - DEVICE_POWER_STATE DeviceState[PowerSystemMaximum]; - SYSTEM_POWER_STATE SystemWake; - DEVICE_POWER_STATE DeviceWake; - ULONG D1Latency; - ULONG D2Latency; - ULONG D3Latency; -} DEVICE_CAPABILITIES, *PDEVICE_CAPABILITIES; - -typedef struct _DEVICE_INTERFACE_CHANGE_NOTIFICATION { - USHORT Version; - USHORT Size; - GUID Event; - GUID InterfaceClassGuid; - PUNICODE_STRING SymbolicLinkName; -} DEVICE_INTERFACE_CHANGE_NOTIFICATION, *PDEVICE_INTERFACE_CHANGE_NOTIFICATION; - -typedef struct _HWPROFILE_CHANGE_NOTIFICATION { - USHORT Version; - USHORT Size; - GUID Event; -} HWPROFILE_CHANGE_NOTIFICATION, *PHWPROFILE_CHANGE_NOTIFICATION; - -#undef INTERFACE - -typedef struct _INTERFACE { - USHORT Size; - USHORT Version; - PVOID Context; - PINTERFACE_REFERENCE InterfaceReference; - PINTERFACE_DEREFERENCE InterfaceDereference; -} INTERFACE, *PINTERFACE; - -typedef struct _PLUGPLAY_NOTIFICATION_HEADER { - USHORT Version; - USHORT Size; - GUID Event; -} PLUGPLAY_NOTIFICATION_HEADER, *PPLUGPLAY_NOTIFICATION_HEADER; - -typedef ULONG PNP_DEVICE_STATE, *PPNP_DEVICE_STATE; - -/* PNP_DEVICE_STATE */ - -#define PNP_DEVICE_DISABLED 0x00000001 -#define PNP_DEVICE_DONT_DISPLAY_IN_UI 0x00000002 -#define PNP_DEVICE_FAILED 0x00000004 -#define PNP_DEVICE_REMOVED 0x00000008 -#define PNP_DEVICE_RESOURCE_REQUIREMENTS_CHANGED 0x00000010 -#define PNP_DEVICE_NOT_DISABLEABLE 0x00000020 - -typedef struct _TARGET_DEVICE_CUSTOM_NOTIFICATION { - USHORT Version; - USHORT Size; - GUID Event; - struct _FILE_OBJECT *FileObject; - LONG NameBufferOffset; - UCHAR CustomDataBuffer[1]; -} TARGET_DEVICE_CUSTOM_NOTIFICATION, *PTARGET_DEVICE_CUSTOM_NOTIFICATION; - -typedef struct _TARGET_DEVICE_REMOVAL_NOTIFICATION { - USHORT Version; - USHORT Size; - GUID Event; - struct _FILE_OBJECT *FileObject; -} TARGET_DEVICE_REMOVAL_NOTIFICATION, *PTARGET_DEVICE_REMOVAL_NOTIFICATION; - -#if (NTDDI_VERSION >= NTDDI_VISTA) -#include -#define PLUGPLAY_PROPERTY_PERSISTENT 0x00000001 -#endif - -#define PNP_REPLACE_NO_MAP MAXLONGLONG - -typedef NTSTATUS -(NTAPI *PREPLACE_MAP_MEMORY)( - IN PHYSICAL_ADDRESS TargetPhysicalAddress, - IN PHYSICAL_ADDRESS SparePhysicalAddress, - IN OUT PLARGE_INTEGER NumberOfBytes, - OUT PVOID *TargetAddress, - OUT PVOID *SpareAddress); - -typedef struct _PNP_REPLACE_MEMORY_LIST { - ULONG AllocatedCount; - ULONG Count; - ULONGLONG TotalLength; - struct { - PHYSICAL_ADDRESS Address; - ULONGLONG Length; - } Ranges[ANYSIZE_ARRAY]; -} PNP_REPLACE_MEMORY_LIST, *PPNP_REPLACE_MEMORY_LIST; - -typedef struct _PNP_REPLACE_PROCESSOR_LIST { - PKAFFINITY Affinity; - ULONG GroupCount; - ULONG AllocatedCount; - ULONG Count; - ULONG ApicIds[ANYSIZE_ARRAY]; -} PNP_REPLACE_PROCESSOR_LIST, *PPNP_REPLACE_PROCESSOR_LIST; - -typedef struct _PNP_REPLACE_PROCESSOR_LIST_V1 { - KAFFINITY AffinityMask; - ULONG AllocatedCount; - ULONG Count; - ULONG ApicIds[ANYSIZE_ARRAY]; -} PNP_REPLACE_PROCESSOR_LIST_V1, *PPNP_REPLACE_PROCESSOR_LIST_V1; - -#define PNP_REPLACE_PARAMETERS_VERSION 2 - -typedef struct _PNP_REPLACE_PARAMETERS { - ULONG Size; - ULONG Version; - ULONG64 Target; - ULONG64 Spare; - PPNP_REPLACE_PROCESSOR_LIST TargetProcessors; - PPNP_REPLACE_PROCESSOR_LIST SpareProcessors; - PPNP_REPLACE_MEMORY_LIST TargetMemory; - PPNP_REPLACE_MEMORY_LIST SpareMemory; - PREPLACE_MAP_MEMORY MapMemory; -} PNP_REPLACE_PARAMETERS, *PPNP_REPLACE_PARAMETERS; - -typedef VOID -(NTAPI *PREPLACE_UNLOAD)( - VOID); - -typedef NTSTATUS -(NTAPI *PREPLACE_BEGIN)( - IN PPNP_REPLACE_PARAMETERS Parameters, - OUT PVOID *Context); - -typedef NTSTATUS -(NTAPI *PREPLACE_END)( - IN PVOID Context); - -typedef NTSTATUS -(NTAPI *PREPLACE_MIRROR_PHYSICAL_MEMORY)( - IN PVOID Context, - IN PHYSICAL_ADDRESS PhysicalAddress, - IN LARGE_INTEGER ByteCount); - -typedef NTSTATUS -(NTAPI *PREPLACE_SET_PROCESSOR_ID)( - IN PVOID Context, - IN ULONG ApicId, - IN BOOLEAN Target); - -typedef NTSTATUS -(NTAPI *PREPLACE_SWAP)( - IN PVOID Context); - -typedef NTSTATUS -(NTAPI *PREPLACE_INITIATE_HARDWARE_MIRROR)( - IN PVOID Context); - -typedef NTSTATUS -(NTAPI *PREPLACE_MIRROR_PLATFORM_MEMORY)( - IN PVOID Context); - -typedef NTSTATUS -(NTAPI *PREPLACE_GET_MEMORY_DESTINATION)( - IN PVOID Context, - IN PHYSICAL_ADDRESS SourceAddress, - OUT PPHYSICAL_ADDRESS DestinationAddress); - -typedef NTSTATUS -(NTAPI *PREPLACE_ENABLE_DISABLE_HARDWARE_QUIESCE)( - IN PVOID Context, - IN BOOLEAN Enable); - -#define PNP_REPLACE_DRIVER_INTERFACE_VERSION 1 -#define PNP_REPLACE_DRIVER_INTERFACE_MINIMUM_SIZE \ - FIELD_OFFSET(PNP_REPLACE_DRIVER_INTERFACE, InitiateHardwareMirror) - -#define PNP_REPLACE_MEMORY_SUPPORTED 0x0001 -#define PNP_REPLACE_PROCESSOR_SUPPORTED 0x0002 -#define PNP_REPLACE_HARDWARE_MEMORY_MIRRORING 0x0004 -#define PNP_REPLACE_HARDWARE_PAGE_COPY 0x0008 -#define PNP_REPLACE_HARDWARE_QUIESCE 0x0010 - -typedef struct _PNP_REPLACE_DRIVER_INTERFACE { - ULONG Size; - ULONG Version; - ULONG Flags; - PREPLACE_UNLOAD Unload; - PREPLACE_BEGIN BeginReplace; - PREPLACE_END EndReplace; - PREPLACE_MIRROR_PHYSICAL_MEMORY MirrorPhysicalMemory; - PREPLACE_SET_PROCESSOR_ID SetProcessorId; - PREPLACE_SWAP Swap; - PREPLACE_INITIATE_HARDWARE_MIRROR InitiateHardwareMirror; - PREPLACE_MIRROR_PLATFORM_MEMORY MirrorPlatformMemory; - PREPLACE_GET_MEMORY_DESTINATION GetMemoryDestination; - PREPLACE_ENABLE_DISABLE_HARDWARE_QUIESCE EnableDisableHardwareQuiesce; -} PNP_REPLACE_DRIVER_INTERFACE, *PPNP_REPLACE_DRIVER_INTERFACE; - -typedef NTSTATUS -(NTAPI *PREPLACE_DRIVER_INIT)( - IN OUT PPNP_REPLACE_DRIVER_INTERFACE Interface, - IN PVOID Unused); - -typedef enum _DEVICE_USAGE_NOTIFICATION_TYPE { - DeviceUsageTypeUndefined, - DeviceUsageTypePaging, - DeviceUsageTypeHibernation, - DeviceUsageTypeDumpFile -} DEVICE_USAGE_NOTIFICATION_TYPE; - -typedef struct _POWER_SEQUENCE { - ULONG SequenceD1; - ULONG SequenceD2; - ULONG SequenceD3; -} POWER_SEQUENCE, *PPOWER_SEQUENCE; - -typedef enum { - DevicePropertyDeviceDescription = 0x0, - DevicePropertyHardwareID = 0x1, - DevicePropertyCompatibleIDs = 0x2, - DevicePropertyBootConfiguration = 0x3, - DevicePropertyBootConfigurationTranslated = 0x4, - DevicePropertyClassName = 0x5, - DevicePropertyClassGuid = 0x6, - DevicePropertyDriverKeyName = 0x7, - DevicePropertyManufacturer = 0x8, - DevicePropertyFriendlyName = 0x9, - DevicePropertyLocationInformation = 0xa, - DevicePropertyPhysicalDeviceObjectName = 0xb, - DevicePropertyBusTypeGuid = 0xc, - DevicePropertyLegacyBusType = 0xd, - DevicePropertyBusNumber = 0xe, - DevicePropertyEnumeratorName = 0xf, - DevicePropertyAddress = 0x10, - DevicePropertyUINumber = 0x11, - DevicePropertyInstallState = 0x12, - DevicePropertyRemovalPolicy = 0x13, - DevicePropertyResourceRequirements = 0x14, - DevicePropertyAllocatedResources = 0x15, - DevicePropertyContainerID = 0x16 -} DEVICE_REGISTRY_PROPERTY; - -typedef enum _IO_NOTIFICATION_EVENT_CATEGORY { - EventCategoryReserved, - EventCategoryHardwareProfileChange, - EventCategoryDeviceInterfaceChange, - EventCategoryTargetDeviceChange -} IO_NOTIFICATION_EVENT_CATEGORY; - -typedef enum _IO_PRIORITY_HINT { - IoPriorityVeryLow = 0, - IoPriorityLow, - IoPriorityNormal, - IoPriorityHigh, - IoPriorityCritical, - MaxIoPriorityTypes -} IO_PRIORITY_HINT; - -#define PNPNOTIFY_DEVICE_INTERFACE_INCLUDE_EXISTING_INTERFACES 0x00000001 - -typedef NTSTATUS -(NTAPI DRIVER_NOTIFICATION_CALLBACK_ROUTINE)( - IN PVOID NotificationStructure, - IN PVOID Context); -typedef DRIVER_NOTIFICATION_CALLBACK_ROUTINE *PDRIVER_NOTIFICATION_CALLBACK_ROUTINE; - -typedef VOID -(NTAPI DEVICE_CHANGE_COMPLETE_CALLBACK)( - IN PVOID Context); -typedef DEVICE_CHANGE_COMPLETE_CALLBACK *PDEVICE_CHANGE_COMPLETE_CALLBACK; - -typedef enum _FILE_INFORMATION_CLASS { - FileDirectoryInformation = 1, - FileFullDirectoryInformation, - FileBothDirectoryInformation, - FileBasicInformation, - FileStandardInformation, - FileInternalInformation, - FileEaInformation, - FileAccessInformation, - FileNameInformation, - FileRenameInformation, - FileLinkInformation, - FileNamesInformation, - FileDispositionInformation, - FilePositionInformation, - FileFullEaInformation, - FileModeInformation, - FileAlignmentInformation, - FileAllInformation, - FileAllocationInformation, - FileEndOfFileInformation, - FileAlternateNameInformation, - FileStreamInformation, - FilePipeInformation, - FilePipeLocalInformation, - FilePipeRemoteInformation, - FileMailslotQueryInformation, - FileMailslotSetInformation, - FileCompressionInformation, - FileObjectIdInformation, - FileCompletionInformation, - FileMoveClusterInformation, - FileQuotaInformation, - FileReparsePointInformation, - FileNetworkOpenInformation, - FileAttributeTagInformation, - FileTrackingInformation, - FileIdBothDirectoryInformation, - FileIdFullDirectoryInformation, - FileValidDataLengthInformation, - FileShortNameInformation, - FileIoCompletionNotificationInformation, - FileIoStatusBlockRangeInformation, - FileIoPriorityHintInformation, - FileSfioReserveInformation, - FileSfioVolumeInformation, - FileHardLinkInformation, - FileProcessIdsUsingFileInformation, - FileNormalizedNameInformation, - FileNetworkPhysicalNameInformation, - FileIdGlobalTxDirectoryInformation, - FileIsRemoteDeviceInformation, - FileAttributeCacheInformation, - FileNumaNodeInformation, - FileStandardLinkInformation, - FileRemoteProtocolInformation, - FileMaximumInformation -} FILE_INFORMATION_CLASS, *PFILE_INFORMATION_CLASS; - -typedef struct _FILE_POSITION_INFORMATION { - LARGE_INTEGER CurrentByteOffset; -} FILE_POSITION_INFORMATION, *PFILE_POSITION_INFORMATION; - -typedef struct _FILE_BASIC_INFORMATION { - LARGE_INTEGER CreationTime; - LARGE_INTEGER LastAccessTime; - LARGE_INTEGER LastWriteTime; - LARGE_INTEGER ChangeTime; - ULONG FileAttributes; -} FILE_BASIC_INFORMATION, *PFILE_BASIC_INFORMATION; - -typedef struct _FILE_IO_PRIORITY_HINT_INFORMATION { - IO_PRIORITY_HINT PriorityHint; -} FILE_IO_PRIORITY_HINT_INFORMATION, *PFILE_IO_PRIORITY_HINT_INFORMATION; - -typedef struct _FILE_IO_COMPLETION_NOTIFICATION_INFORMATION { - ULONG Flags; -} FILE_IO_COMPLETION_NOTIFICATION_INFORMATION, *PFILE_IO_COMPLETION_NOTIFICATION_INFORMATION; - -typedef struct _FILE_IOSTATUSBLOCK_RANGE_INFORMATION { - PUCHAR IoStatusBlockRange; - ULONG Length; -} FILE_IOSTATUSBLOCK_RANGE_INFORMATION, *PFILE_IOSTATUSBLOCK_RANGE_INFORMATION; - -typedef struct _FILE_IS_REMOTE_DEVICE_INFORMATION { - BOOLEAN IsRemote; -} FILE_IS_REMOTE_DEVICE_INFORMATION, *PFILE_IS_REMOTE_DEVICE_INFORMATION; - -typedef struct _FILE_NUMA_NODE_INFORMATION { - USHORT NodeNumber; -} FILE_NUMA_NODE_INFORMATION, *PFILE_NUMA_NODE_INFORMATION; - -typedef struct _FILE_PROCESS_IDS_USING_FILE_INFORMATION { - ULONG NumberOfProcessIdsInList; - ULONG_PTR ProcessIdList[1]; -} FILE_PROCESS_IDS_USING_FILE_INFORMATION, *PFILE_PROCESS_IDS_USING_FILE_INFORMATION; - -typedef struct _FILE_STANDARD_INFORMATION { - LARGE_INTEGER AllocationSize; - LARGE_INTEGER EndOfFile; - ULONG NumberOfLinks; - BOOLEAN DeletePending; - BOOLEAN Directory; -} FILE_STANDARD_INFORMATION, *PFILE_STANDARD_INFORMATION; - -typedef struct _FILE_NETWORK_OPEN_INFORMATION { - LARGE_INTEGER CreationTime; - LARGE_INTEGER LastAccessTime; - LARGE_INTEGER LastWriteTime; - LARGE_INTEGER ChangeTime; - LARGE_INTEGER AllocationSize; - LARGE_INTEGER EndOfFile; - ULONG FileAttributes; -} FILE_NETWORK_OPEN_INFORMATION, *PFILE_NETWORK_OPEN_INFORMATION; - -typedef enum _FSINFOCLASS { - FileFsVolumeInformation = 1, - FileFsLabelInformation, - FileFsSizeInformation, - FileFsDeviceInformation, - FileFsAttributeInformation, - FileFsControlInformation, - FileFsFullSizeInformation, - FileFsObjectIdInformation, - FileFsDriverPathInformation, - FileFsVolumeFlagsInformation, - FileFsMaximumInformation -} FS_INFORMATION_CLASS, *PFS_INFORMATION_CLASS; - -typedef struct _FILE_FS_DEVICE_INFORMATION { - DEVICE_TYPE DeviceType; - ULONG Characteristics; -} FILE_FS_DEVICE_INFORMATION, *PFILE_FS_DEVICE_INFORMATION; - -typedef struct _FILE_FULL_EA_INFORMATION { - ULONG NextEntryOffset; - UCHAR Flags; - UCHAR EaNameLength; - USHORT EaValueLength; - CHAR EaName[1]; -} FILE_FULL_EA_INFORMATION, *PFILE_FULL_EA_INFORMATION; - -typedef struct _FILE_SFIO_RESERVE_INFORMATION { - ULONG RequestsPerPeriod; - ULONG Period; - BOOLEAN RetryFailures; - BOOLEAN Discardable; - ULONG RequestSize; - ULONG NumOutstandingRequests; -} FILE_SFIO_RESERVE_INFORMATION, *PFILE_SFIO_RESERVE_INFORMATION; - -typedef struct _FILE_SFIO_VOLUME_INFORMATION { - ULONG MaximumRequestsPerPeriod; - ULONG MinimumPeriod; - ULONG MinimumTransferSize; -} FILE_SFIO_VOLUME_INFORMATION, *PFILE_SFIO_VOLUME_INFORMATION; - -#define FILE_SKIP_COMPLETION_PORT_ON_SUCCESS 0x1 -#define FILE_SKIP_SET_EVENT_ON_HANDLE 0x2 -#define FILE_SKIP_SET_USER_EVENT_ON_FAST_IO 0x4 - -#define FM_LOCK_BIT (0x1) -#define FM_LOCK_BIT_V (0x0) -#define FM_LOCK_WAITER_WOKEN (0x2) -#define FM_LOCK_WAITER_INC (0x4) - -typedef BOOLEAN -(NTAPI FAST_IO_CHECK_IF_POSSIBLE)( - IN struct _FILE_OBJECT *FileObject, - IN PLARGE_INTEGER FileOffset, - IN ULONG Length, - IN BOOLEAN Wait, - IN ULONG LockKey, - IN BOOLEAN CheckForReadOperation, - OUT PIO_STATUS_BLOCK IoStatus, - IN struct _DEVICE_OBJECT *DeviceObject); -typedef FAST_IO_CHECK_IF_POSSIBLE *PFAST_IO_CHECK_IF_POSSIBLE; - -typedef BOOLEAN -(NTAPI FAST_IO_READ)( - IN struct _FILE_OBJECT *FileObject, - IN PLARGE_INTEGER FileOffset, - IN ULONG Length, - IN BOOLEAN Wait, - IN ULONG LockKey, - OUT PVOID Buffer, - OUT PIO_STATUS_BLOCK IoStatus, - IN struct _DEVICE_OBJECT *DeviceObject); -typedef FAST_IO_READ *PFAST_IO_READ; - -typedef BOOLEAN -(NTAPI FAST_IO_WRITE)( - IN struct _FILE_OBJECT *FileObject, - IN PLARGE_INTEGER FileOffset, - IN ULONG Length, - IN BOOLEAN Wait, - IN ULONG LockKey, - IN PVOID Buffer, - OUT PIO_STATUS_BLOCK IoStatus, - IN struct _DEVICE_OBJECT *DeviceObject); -typedef FAST_IO_WRITE *PFAST_IO_WRITE; - -typedef BOOLEAN -(NTAPI FAST_IO_QUERY_BASIC_INFO)( - IN struct _FILE_OBJECT *FileObject, - IN BOOLEAN Wait, - OUT PFILE_BASIC_INFORMATION Buffer, - OUT PIO_STATUS_BLOCK IoStatus, - IN struct _DEVICE_OBJECT *DeviceObject); -typedef FAST_IO_QUERY_BASIC_INFO *PFAST_IO_QUERY_BASIC_INFO; - -typedef BOOLEAN -(NTAPI FAST_IO_QUERY_STANDARD_INFO)( - IN struct _FILE_OBJECT *FileObject, - IN BOOLEAN Wait, - OUT PFILE_STANDARD_INFORMATION Buffer, - OUT PIO_STATUS_BLOCK IoStatus, - IN struct _DEVICE_OBJECT *DeviceObject); -typedef FAST_IO_QUERY_STANDARD_INFO *PFAST_IO_QUERY_STANDARD_INFO; - -typedef BOOLEAN -(NTAPI FAST_IO_LOCK)( - IN struct _FILE_OBJECT *FileObject, - IN PLARGE_INTEGER FileOffset, - IN PLARGE_INTEGER Length, - PEPROCESS ProcessId, - ULONG Key, - BOOLEAN FailImmediately, - BOOLEAN ExclusiveLock, - OUT PIO_STATUS_BLOCK IoStatus, - IN struct _DEVICE_OBJECT *DeviceObject); -typedef FAST_IO_LOCK *PFAST_IO_LOCK; - -typedef BOOLEAN -(NTAPI FAST_IO_UNLOCK_SINGLE)( - IN struct _FILE_OBJECT *FileObject, - IN PLARGE_INTEGER FileOffset, - IN PLARGE_INTEGER Length, - PEPROCESS ProcessId, - ULONG Key, - OUT PIO_STATUS_BLOCK IoStatus, - IN struct _DEVICE_OBJECT *DeviceObject); -typedef FAST_IO_UNLOCK_SINGLE *PFAST_IO_UNLOCK_SINGLE; - -typedef BOOLEAN -(NTAPI FAST_IO_UNLOCK_ALL)( - IN struct _FILE_OBJECT *FileObject, - PEPROCESS ProcessId, - OUT PIO_STATUS_BLOCK IoStatus, - IN struct _DEVICE_OBJECT *DeviceObject); -typedef FAST_IO_UNLOCK_ALL *PFAST_IO_UNLOCK_ALL; - -typedef BOOLEAN -(NTAPI FAST_IO_UNLOCK_ALL_BY_KEY)( - IN struct _FILE_OBJECT *FileObject, - PVOID ProcessId, - ULONG Key, - OUT PIO_STATUS_BLOCK IoStatus, - IN struct _DEVICE_OBJECT *DeviceObject); -typedef FAST_IO_UNLOCK_ALL_BY_KEY *PFAST_IO_UNLOCK_ALL_BY_KEY; - -typedef BOOLEAN -(NTAPI FAST_IO_DEVICE_CONTROL)( - IN struct _FILE_OBJECT *FileObject, - IN BOOLEAN Wait, - IN PVOID InputBuffer OPTIONAL, - IN ULONG InputBufferLength, - OUT PVOID OutputBuffer OPTIONAL, - IN ULONG OutputBufferLength, - IN ULONG IoControlCode, - OUT PIO_STATUS_BLOCK IoStatus, - IN struct _DEVICE_OBJECT *DeviceObject); -typedef FAST_IO_DEVICE_CONTROL *PFAST_IO_DEVICE_CONTROL; - -typedef VOID -(NTAPI FAST_IO_ACQUIRE_FILE)( - IN struct _FILE_OBJECT *FileObject); -typedef FAST_IO_ACQUIRE_FILE *PFAST_IO_ACQUIRE_FILE; - -typedef VOID -(NTAPI FAST_IO_RELEASE_FILE)( - IN struct _FILE_OBJECT *FileObject); -typedef FAST_IO_RELEASE_FILE *PFAST_IO_RELEASE_FILE; - -typedef VOID -(NTAPI FAST_IO_DETACH_DEVICE)( - IN struct _DEVICE_OBJECT *SourceDevice, - IN struct _DEVICE_OBJECT *TargetDevice); -typedef FAST_IO_DETACH_DEVICE *PFAST_IO_DETACH_DEVICE; - -typedef BOOLEAN -(NTAPI FAST_IO_QUERY_NETWORK_OPEN_INFO)( - IN struct _FILE_OBJECT *FileObject, - IN BOOLEAN Wait, - OUT struct _FILE_NETWORK_OPEN_INFORMATION *Buffer, - OUT struct _IO_STATUS_BLOCK *IoStatus, - IN struct _DEVICE_OBJECT *DeviceObject); -typedef FAST_IO_QUERY_NETWORK_OPEN_INFO *PFAST_IO_QUERY_NETWORK_OPEN_INFO; - -typedef NTSTATUS -(NTAPI FAST_IO_ACQUIRE_FOR_MOD_WRITE)( - IN struct _FILE_OBJECT *FileObject, - IN PLARGE_INTEGER EndingOffset, - OUT struct _ERESOURCE **ResourceToRelease, - IN struct _DEVICE_OBJECT *DeviceObject); -typedef FAST_IO_ACQUIRE_FOR_MOD_WRITE *PFAST_IO_ACQUIRE_FOR_MOD_WRITE; - -typedef BOOLEAN -(NTAPI FAST_IO_MDL_READ)( - IN struct _FILE_OBJECT *FileObject, - IN PLARGE_INTEGER FileOffset, - IN ULONG Length, - IN ULONG LockKey, - OUT PMDL *MdlChain, - OUT PIO_STATUS_BLOCK IoStatus, - IN struct _DEVICE_OBJECT *DeviceObject); -typedef FAST_IO_MDL_READ *PFAST_IO_MDL_READ; - -typedef BOOLEAN -(NTAPI FAST_IO_MDL_READ_COMPLETE)( - IN struct _FILE_OBJECT *FileObject, - IN PMDL MdlChain, - IN struct _DEVICE_OBJECT *DeviceObject); -typedef FAST_IO_MDL_READ_COMPLETE *PFAST_IO_MDL_READ_COMPLETE; - -typedef BOOLEAN -(NTAPI FAST_IO_PREPARE_MDL_WRITE)( - IN struct _FILE_OBJECT *FileObject, - IN PLARGE_INTEGER FileOffset, - IN ULONG Length, - IN ULONG LockKey, - OUT PMDL *MdlChain, - OUT PIO_STATUS_BLOCK IoStatus, - IN struct _DEVICE_OBJECT *DeviceObject); -typedef FAST_IO_PREPARE_MDL_WRITE *PFAST_IO_PREPARE_MDL_WRITE; - -typedef BOOLEAN -(NTAPI FAST_IO_MDL_WRITE_COMPLETE)( - IN struct _FILE_OBJECT *FileObject, - IN PLARGE_INTEGER FileOffset, - IN PMDL MdlChain, - IN struct _DEVICE_OBJECT *DeviceObject); -typedef FAST_IO_MDL_WRITE_COMPLETE *PFAST_IO_MDL_WRITE_COMPLETE; - -typedef BOOLEAN -(NTAPI FAST_IO_READ_COMPRESSED)( - IN struct _FILE_OBJECT *FileObject, - IN PLARGE_INTEGER FileOffset, - IN ULONG Length, - IN ULONG LockKey, - OUT PVOID Buffer, - OUT PMDL *MdlChain, - OUT PIO_STATUS_BLOCK IoStatus, - OUT struct _COMPRESSED_DATA_INFO *CompressedDataInfo, - IN ULONG CompressedDataInfoLength, - IN struct _DEVICE_OBJECT *DeviceObject); -typedef FAST_IO_READ_COMPRESSED *PFAST_IO_READ_COMPRESSED; - -typedef BOOLEAN -(NTAPI FAST_IO_WRITE_COMPRESSED)( - IN struct _FILE_OBJECT *FileObject, - IN PLARGE_INTEGER FileOffset, - IN ULONG Length, - IN ULONG LockKey, - IN PVOID Buffer, - OUT PMDL *MdlChain, - OUT PIO_STATUS_BLOCK IoStatus, - IN struct _COMPRESSED_DATA_INFO *CompressedDataInfo, - IN ULONG CompressedDataInfoLength, - IN struct _DEVICE_OBJECT *DeviceObject); -typedef FAST_IO_WRITE_COMPRESSED *PFAST_IO_WRITE_COMPRESSED; - -typedef BOOLEAN -(NTAPI FAST_IO_MDL_READ_COMPLETE_COMPRESSED)( - IN struct _FILE_OBJECT *FileObject, - IN PMDL MdlChain, - IN struct _DEVICE_OBJECT *DeviceObject); -typedef FAST_IO_MDL_READ_COMPLETE_COMPRESSED *PFAST_IO_MDL_READ_COMPLETE_COMPRESSED; - -typedef BOOLEAN -(NTAPI FAST_IO_MDL_WRITE_COMPLETE_COMPRESSED)( - IN struct _FILE_OBJECT *FileObject, - IN PLARGE_INTEGER FileOffset, - IN PMDL MdlChain, - IN struct _DEVICE_OBJECT *DeviceObject); -typedef FAST_IO_MDL_WRITE_COMPLETE_COMPRESSED *PFAST_IO_MDL_WRITE_COMPLETE_COMPRESSED; - -typedef BOOLEAN -(NTAPI FAST_IO_QUERY_OPEN)( - IN struct _IRP *Irp, - OUT PFILE_NETWORK_OPEN_INFORMATION NetworkInformation, - IN struct _DEVICE_OBJECT *DeviceObject); -typedef FAST_IO_QUERY_OPEN *PFAST_IO_QUERY_OPEN; - -typedef NTSTATUS -(NTAPI FAST_IO_RELEASE_FOR_MOD_WRITE)( - IN struct _FILE_OBJECT *FileObject, - IN struct _ERESOURCE *ResourceToRelease, - IN struct _DEVICE_OBJECT *DeviceObject); -typedef FAST_IO_RELEASE_FOR_MOD_WRITE *PFAST_IO_RELEASE_FOR_MOD_WRITE; - -typedef NTSTATUS -(NTAPI FAST_IO_ACQUIRE_FOR_CCFLUSH)( - IN struct _FILE_OBJECT *FileObject, - IN struct _DEVICE_OBJECT *DeviceObject); -typedef FAST_IO_ACQUIRE_FOR_CCFLUSH *PFAST_IO_ACQUIRE_FOR_CCFLUSH; - -typedef NTSTATUS -(NTAPI FAST_IO_RELEASE_FOR_CCFLUSH)( - IN struct _FILE_OBJECT *FileObject, - IN struct _DEVICE_OBJECT *DeviceObject); -typedef FAST_IO_RELEASE_FOR_CCFLUSH *PFAST_IO_RELEASE_FOR_CCFLUSH; - -typedef struct _FAST_IO_DISPATCH { - ULONG SizeOfFastIoDispatch; - PFAST_IO_CHECK_IF_POSSIBLE FastIoCheckIfPossible; - PFAST_IO_READ FastIoRead; - PFAST_IO_WRITE FastIoWrite; - PFAST_IO_QUERY_BASIC_INFO FastIoQueryBasicInfo; - PFAST_IO_QUERY_STANDARD_INFO FastIoQueryStandardInfo; - PFAST_IO_LOCK FastIoLock; - PFAST_IO_UNLOCK_SINGLE FastIoUnlockSingle; - PFAST_IO_UNLOCK_ALL FastIoUnlockAll; - PFAST_IO_UNLOCK_ALL_BY_KEY FastIoUnlockAllByKey; - PFAST_IO_DEVICE_CONTROL FastIoDeviceControl; - PFAST_IO_ACQUIRE_FILE AcquireFileForNtCreateSection; - PFAST_IO_RELEASE_FILE ReleaseFileForNtCreateSection; - PFAST_IO_DETACH_DEVICE FastIoDetachDevice; - PFAST_IO_QUERY_NETWORK_OPEN_INFO FastIoQueryNetworkOpenInfo; - PFAST_IO_ACQUIRE_FOR_MOD_WRITE AcquireForModWrite; - PFAST_IO_MDL_READ MdlRead; - PFAST_IO_MDL_READ_COMPLETE MdlReadComplete; - PFAST_IO_PREPARE_MDL_WRITE PrepareMdlWrite; - PFAST_IO_MDL_WRITE_COMPLETE MdlWriteComplete; - PFAST_IO_READ_COMPRESSED FastIoReadCompressed; - PFAST_IO_WRITE_COMPRESSED FastIoWriteCompressed; - PFAST_IO_MDL_READ_COMPLETE_COMPRESSED MdlReadCompleteCompressed; - PFAST_IO_MDL_WRITE_COMPLETE_COMPRESSED MdlWriteCompleteCompressed; - PFAST_IO_QUERY_OPEN FastIoQueryOpen; - PFAST_IO_RELEASE_FOR_MOD_WRITE ReleaseForModWrite; - PFAST_IO_ACQUIRE_FOR_CCFLUSH AcquireForCcFlush; - PFAST_IO_RELEASE_FOR_CCFLUSH ReleaseForCcFlush; -} FAST_IO_DISPATCH, *PFAST_IO_DISPATCH; - -typedef struct _SECTION_OBJECT_POINTERS { - PVOID DataSectionObject; - PVOID SharedCacheMap; - PVOID ImageSectionObject; -} SECTION_OBJECT_POINTERS, *PSECTION_OBJECT_POINTERS; - -typedef struct _IO_COMPLETION_CONTEXT { - PVOID Port; - PVOID Key; -} IO_COMPLETION_CONTEXT, *PIO_COMPLETION_CONTEXT; - -/* FILE_OBJECT.Flags */ -#define FO_FILE_OPEN 0x00000001 -#define FO_SYNCHRONOUS_IO 0x00000002 -#define FO_ALERTABLE_IO 0x00000004 -#define FO_NO_INTERMEDIATE_BUFFERING 0x00000008 -#define FO_WRITE_THROUGH 0x00000010 -#define FO_SEQUENTIAL_ONLY 0x00000020 -#define FO_CACHE_SUPPORTED 0x00000040 -#define FO_NAMED_PIPE 0x00000080 -#define FO_STREAM_FILE 0x00000100 -#define FO_MAILSLOT 0x00000200 -#define FO_GENERATE_AUDIT_ON_CLOSE 0x00000400 -#define FO_QUEUE_IRP_TO_THREAD 0x00000400 -#define FO_DIRECT_DEVICE_OPEN 0x00000800 -#define FO_FILE_MODIFIED 0x00001000 -#define FO_FILE_SIZE_CHANGED 0x00002000 -#define FO_CLEANUP_COMPLETE 0x00004000 -#define FO_TEMPORARY_FILE 0x00008000 -#define FO_DELETE_ON_CLOSE 0x00010000 -#define FO_OPENED_CASE_SENSITIVE 0x00020000 -#define FO_HANDLE_CREATED 0x00040000 -#define FO_FILE_FAST_IO_READ 0x00080000 -#define FO_RANDOM_ACCESS 0x00100000 -#define FO_FILE_OPEN_CANCELLED 0x00200000 -#define FO_VOLUME_OPEN 0x00400000 -#define FO_REMOTE_ORIGIN 0x01000000 -#define FO_DISALLOW_EXCLUSIVE 0x02000000 -#define FO_SKIP_COMPLETION_PORT 0x02000000 -#define FO_SKIP_SET_EVENT 0x04000000 -#define FO_SKIP_SET_FAST_IO 0x08000000 -#define FO_FLAGS_VALID_ONLY_DURING_CREATE FO_DISALLOW_EXCLUSIVE - -/* VPB.Flags */ -#define VPB_MOUNTED 0x0001 -#define VPB_LOCKED 0x0002 -#define VPB_PERSISTENT 0x0004 -#define VPB_REMOVE_PENDING 0x0008 -#define VPB_RAW_MOUNT 0x0010 -#define VPB_DIRECT_WRITES_ALLOWED 0x0020 - -/* IRP.Flags */ - -#define SL_FORCE_ACCESS_CHECK 0x01 -#define SL_OPEN_PAGING_FILE 0x02 -#define SL_OPEN_TARGET_DIRECTORY 0x04 -#define SL_STOP_ON_SYMLINK 0x08 -#define SL_CASE_SENSITIVE 0x80 - -#define SL_KEY_SPECIFIED 0x01 -#define SL_OVERRIDE_VERIFY_VOLUME 0x02 -#define SL_WRITE_THROUGH 0x04 -#define SL_FT_SEQUENTIAL_WRITE 0x08 -#define SL_FORCE_DIRECT_WRITE 0x10 -#define SL_REALTIME_STREAM 0x20 - -#define SL_READ_ACCESS_GRANTED 0x01 -#define SL_WRITE_ACCESS_GRANTED 0x04 - -#define SL_FAIL_IMMEDIATELY 0x01 -#define SL_EXCLUSIVE_LOCK 0x02 - -#define SL_RESTART_SCAN 0x01 -#define SL_RETURN_SINGLE_ENTRY 0x02 -#define SL_INDEX_SPECIFIED 0x04 - -#define SL_WATCH_TREE 0x01 - -#define SL_ALLOW_RAW_MOUNT 0x01 - -#define CTL_CODE(DeviceType, Function, Method, Access) \ - (((DeviceType) << 16) | ((Access) << 14) | ((Function) << 2) | (Method)) - -#define DEVICE_TYPE_FROM_CTL_CODE(ctl) (((ULONG) (ctl & 0xffff0000)) >> 16) - -#define METHOD_FROM_CTL_CODE(ctrlCode) ((ULONG)(ctrlCode & 3)) - -#define IRP_NOCACHE 0x00000001 -#define IRP_PAGING_IO 0x00000002 -#define IRP_MOUNT_COMPLETION 0x00000002 -#define IRP_SYNCHRONOUS_API 0x00000004 -#define IRP_ASSOCIATED_IRP 0x00000008 -#define IRP_BUFFERED_IO 0x00000010 -#define IRP_DEALLOCATE_BUFFER 0x00000020 -#define IRP_INPUT_OPERATION 0x00000040 -#define IRP_SYNCHRONOUS_PAGING_IO 0x00000040 -#define IRP_CREATE_OPERATION 0x00000080 -#define IRP_READ_OPERATION 0x00000100 -#define IRP_WRITE_OPERATION 0x00000200 -#define IRP_CLOSE_OPERATION 0x00000400 -#define IRP_DEFER_IO_COMPLETION 0x00000800 -#define IRP_OB_QUERY_NAME 0x00001000 -#define IRP_HOLD_DEVICE_QUEUE 0x00002000 - -#define IRP_QUOTA_CHARGED 0x01 -#define IRP_ALLOCATED_MUST_SUCCEED 0x02 -#define IRP_ALLOCATED_FIXED_SIZE 0x04 -#define IRP_LOOKASIDE_ALLOCATION 0x08 - -/* -** IRP function codes -*/ - -#define IRP_MJ_CREATE 0x00 -#define IRP_MJ_CREATE_NAMED_PIPE 0x01 -#define IRP_MJ_CLOSE 0x02 -#define IRP_MJ_READ 0x03 -#define IRP_MJ_WRITE 0x04 -#define IRP_MJ_QUERY_INFORMATION 0x05 -#define IRP_MJ_SET_INFORMATION 0x06 -#define IRP_MJ_QUERY_EA 0x07 -#define IRP_MJ_SET_EA 0x08 -#define IRP_MJ_FLUSH_BUFFERS 0x09 -#define IRP_MJ_QUERY_VOLUME_INFORMATION 0x0a -#define IRP_MJ_SET_VOLUME_INFORMATION 0x0b -#define IRP_MJ_DIRECTORY_CONTROL 0x0c -#define IRP_MJ_FILE_SYSTEM_CONTROL 0x0d -#define IRP_MJ_DEVICE_CONTROL 0x0e -#define IRP_MJ_INTERNAL_DEVICE_CONTROL 0x0f -#define IRP_MJ_SCSI 0x0f -#define IRP_MJ_SHUTDOWN 0x10 -#define IRP_MJ_LOCK_CONTROL 0x11 -#define IRP_MJ_CLEANUP 0x12 -#define IRP_MJ_CREATE_MAILSLOT 0x13 -#define IRP_MJ_QUERY_SECURITY 0x14 -#define IRP_MJ_SET_SECURITY 0x15 -#define IRP_MJ_POWER 0x16 -#define IRP_MJ_SYSTEM_CONTROL 0x17 -#define IRP_MJ_DEVICE_CHANGE 0x18 -#define IRP_MJ_QUERY_QUOTA 0x19 -#define IRP_MJ_SET_QUOTA 0x1a -#define IRP_MJ_PNP 0x1b -#define IRP_MJ_PNP_POWER 0x1b -#define IRP_MJ_MAXIMUM_FUNCTION 0x1b - -#define IRP_MN_SCSI_CLASS 0x01 - -#define IRP_MN_START_DEVICE 0x00 -#define IRP_MN_QUERY_REMOVE_DEVICE 0x01 -#define IRP_MN_REMOVE_DEVICE 0x02 -#define IRP_MN_CANCEL_REMOVE_DEVICE 0x03 -#define IRP_MN_STOP_DEVICE 0x04 -#define IRP_MN_QUERY_STOP_DEVICE 0x05 -#define IRP_MN_CANCEL_STOP_DEVICE 0x06 - -#define IRP_MN_QUERY_DEVICE_RELATIONS 0x07 -#define IRP_MN_QUERY_INTERFACE 0x08 -#define IRP_MN_QUERY_CAPABILITIES 0x09 -#define IRP_MN_QUERY_RESOURCES 0x0A -#define IRP_MN_QUERY_RESOURCE_REQUIREMENTS 0x0B -#define IRP_MN_QUERY_DEVICE_TEXT 0x0C -#define IRP_MN_FILTER_RESOURCE_REQUIREMENTS 0x0D - -#define IRP_MN_READ_CONFIG 0x0F -#define IRP_MN_WRITE_CONFIG 0x10 -#define IRP_MN_EJECT 0x11 -#define IRP_MN_SET_LOCK 0x12 -#define IRP_MN_QUERY_ID 0x13 -#define IRP_MN_QUERY_PNP_DEVICE_STATE 0x14 -#define IRP_MN_QUERY_BUS_INFORMATION 0x15 -#define IRP_MN_DEVICE_USAGE_NOTIFICATION 0x16 -#define IRP_MN_SURPRISE_REMOVAL 0x17 -#if (NTDDI_VERSION >= NTDDI_WIN7) -#define IRP_MN_DEVICE_ENUMERATED 0x19 -#endif - -#define IRP_MN_WAIT_WAKE 0x00 -#define IRP_MN_POWER_SEQUENCE 0x01 -#define IRP_MN_SET_POWER 0x02 -#define IRP_MN_QUERY_POWER 0x03 - -#define IRP_MN_QUERY_ALL_DATA 0x00 -#define IRP_MN_QUERY_SINGLE_INSTANCE 0x01 -#define IRP_MN_CHANGE_SINGLE_INSTANCE 0x02 -#define IRP_MN_CHANGE_SINGLE_ITEM 0x03 -#define IRP_MN_ENABLE_EVENTS 0x04 -#define IRP_MN_DISABLE_EVENTS 0x05 -#define IRP_MN_ENABLE_COLLECTION 0x06 -#define IRP_MN_DISABLE_COLLECTION 0x07 -#define IRP_MN_REGINFO 0x08 -#define IRP_MN_EXECUTE_METHOD 0x09 - -#define IRP_MN_REGINFO_EX 0x0b - -typedef struct _FILE_OBJECT { - CSHORT Type; - CSHORT Size; - PDEVICE_OBJECT DeviceObject; - PVPB Vpb; - PVOID FsContext; - PVOID FsContext2; - PSECTION_OBJECT_POINTERS SectionObjectPointer; - PVOID PrivateCacheMap; - NTSTATUS FinalStatus; - struct _FILE_OBJECT *RelatedFileObject; - BOOLEAN LockOperation; - BOOLEAN DeletePending; - BOOLEAN ReadAccess; - BOOLEAN WriteAccess; - BOOLEAN DeleteAccess; - BOOLEAN SharedRead; - BOOLEAN SharedWrite; - BOOLEAN SharedDelete; - ULONG Flags; - UNICODE_STRING FileName; - LARGE_INTEGER CurrentByteOffset; - volatile ULONG Waiters; - volatile ULONG Busy; - PVOID LastLock; - KEVENT Lock; - KEVENT Event; - volatile PIO_COMPLETION_CONTEXT CompletionContext; - KSPIN_LOCK IrpListLock; - LIST_ENTRY IrpList; - volatile PVOID FileObjectExtension; -} FILE_OBJECT, *PFILE_OBJECT; - -typedef struct _IO_ERROR_LOG_PACKET { - UCHAR MajorFunctionCode; - UCHAR RetryCount; - USHORT DumpDataSize; - USHORT NumberOfStrings; - USHORT StringOffset; - USHORT EventCategory; - NTSTATUS ErrorCode; - ULONG UniqueErrorValue; - NTSTATUS FinalStatus; - ULONG SequenceNumber; - ULONG IoControlCode; - LARGE_INTEGER DeviceOffset; - ULONG DumpData[1]; -} IO_ERROR_LOG_PACKET, *PIO_ERROR_LOG_PACKET; - -typedef struct _IO_ERROR_LOG_MESSAGE { - USHORT Type; - USHORT Size; - USHORT DriverNameLength; - LARGE_INTEGER TimeStamp; - ULONG DriverNameOffset; - IO_ERROR_LOG_PACKET EntryData; -} IO_ERROR_LOG_MESSAGE, *PIO_ERROR_LOG_MESSAGE; - -#define ERROR_LOG_LIMIT_SIZE 240 -#define IO_ERROR_LOG_MESSAGE_HEADER_LENGTH (sizeof(IO_ERROR_LOG_MESSAGE) - \ - sizeof(IO_ERROR_LOG_PACKET) + \ - (sizeof(WCHAR) * 40)) -#define ERROR_LOG_MESSAGE_LIMIT_SIZE \ - (ERROR_LOG_LIMIT_SIZE + IO_ERROR_LOG_MESSAGE_HEADER_LENGTH) -#define IO_ERROR_LOG_MESSAGE_LENGTH \ - ((PORT_MAXIMUM_MESSAGE_LENGTH > ERROR_LOG_MESSAGE_LIMIT_SIZE) ? \ - ERROR_LOG_MESSAGE_LIMIT_SIZE : \ - PORT_MAXIMUM_MESSAGE_LENGTH) -#define ERROR_LOG_MAXIMUM_SIZE (IO_ERROR_LOG_MESSAGE_LENGTH - \ - IO_ERROR_LOG_MESSAGE_HEADER_LENGTH) - -#ifdef _WIN64 -#define PORT_MAXIMUM_MESSAGE_LENGTH 512 -#else -#define PORT_MAXIMUM_MESSAGE_LENGTH 256 -#endif - -typedef enum _DMA_WIDTH { - Width8Bits, - Width16Bits, - Width32Bits, - MaximumDmaWidth -} DMA_WIDTH, *PDMA_WIDTH; - -typedef enum _DMA_SPEED { - Compatible, - TypeA, - TypeB, - TypeC, - TypeF, - MaximumDmaSpeed -} DMA_SPEED, *PDMA_SPEED; - -/* DEVICE_DESCRIPTION.Version */ - -#define DEVICE_DESCRIPTION_VERSION 0x0000 -#define DEVICE_DESCRIPTION_VERSION1 0x0001 -#define DEVICE_DESCRIPTION_VERSION2 0x0002 - -typedef struct _DEVICE_DESCRIPTION { - ULONG Version; - BOOLEAN Master; - BOOLEAN ScatterGather; - BOOLEAN DemandMode; - BOOLEAN AutoInitialize; - BOOLEAN Dma32BitAddresses; - BOOLEAN IgnoreCount; - BOOLEAN Reserved1; - BOOLEAN Dma64BitAddresses; - ULONG BusNumber; - ULONG DmaChannel; - INTERFACE_TYPE InterfaceType; - DMA_WIDTH DmaWidth; - DMA_SPEED DmaSpeed; - ULONG MaximumLength; - ULONG DmaPort; -} DEVICE_DESCRIPTION, *PDEVICE_DESCRIPTION; - -typedef enum _DEVICE_RELATION_TYPE { - BusRelations, - EjectionRelations, - PowerRelations, - RemovalRelations, - TargetDeviceRelation, - SingleBusRelations, - TransportRelations -} DEVICE_RELATION_TYPE, *PDEVICE_RELATION_TYPE; - -typedef struct _DEVICE_RELATIONS { - ULONG Count; - PDEVICE_OBJECT Objects[1]; -} DEVICE_RELATIONS, *PDEVICE_RELATIONS; - -typedef struct _DEVOBJ_EXTENSION { - CSHORT Type; - USHORT Size; - PDEVICE_OBJECT DeviceObject; -} DEVOBJ_EXTENSION, *PDEVOBJ_EXTENSION; - -typedef struct _SCATTER_GATHER_ELEMENT { - PHYSICAL_ADDRESS Address; - ULONG Length; - ULONG_PTR Reserved; -} SCATTER_GATHER_ELEMENT, *PSCATTER_GATHER_ELEMENT; - -#if defined(_MSC_EXTENSIONS) - -#if _MSC_VER >= 1200 -#pragma warning(push) -#endif -#pragma warning(disable:4200) -typedef struct _SCATTER_GATHER_LIST { - ULONG NumberOfElements; - ULONG_PTR Reserved; - SCATTER_GATHER_ELEMENT Elements[1]; -} SCATTER_GATHER_LIST, *PSCATTER_GATHER_LIST; - -#if _MSC_VER >= 1200 -#pragma warning(pop) -#else -#pragma warning(default:4200) -#endif - -#else - -struct _SCATTER_GATHER_LIST; -typedef struct _SCATTER_GATHER_LIST SCATTER_GATHER_LIST, *PSCATTER_GATHER_LIST; - -#endif - -typedef NTSTATUS -(NTAPI DRIVER_ADD_DEVICE)( - IN struct _DRIVER_OBJECT *DriverObject, - IN struct _DEVICE_OBJECT *PhysicalDeviceObject); -typedef DRIVER_ADD_DEVICE *PDRIVER_ADD_DEVICE; - -typedef struct _DRIVER_EXTENSION { - struct _DRIVER_OBJECT *DriverObject; - PDRIVER_ADD_DEVICE AddDevice; - ULONG Count; - UNICODE_STRING ServiceKeyName; -} DRIVER_EXTENSION, *PDRIVER_EXTENSION; - -#define DRVO_UNLOAD_INVOKED 0x00000001 -#define DRVO_LEGACY_DRIVER 0x00000002 -#define DRVO_BUILTIN_DRIVER 0x00000004 - -typedef NTSTATUS -(NTAPI DRIVER_INITIALIZE)( - IN struct _DRIVER_OBJECT *DriverObject, - IN PUNICODE_STRING RegistryPath); -typedef DRIVER_INITIALIZE *PDRIVER_INITIALIZE; - -typedef VOID -(NTAPI DRIVER_STARTIO)( - IN struct _DEVICE_OBJECT *DeviceObject, - IN struct _IRP *Irp); -typedef DRIVER_STARTIO *PDRIVER_STARTIO; - -typedef VOID -(NTAPI DRIVER_UNLOAD)( - IN struct _DRIVER_OBJECT *DriverObject); -typedef DRIVER_UNLOAD *PDRIVER_UNLOAD; - -typedef NTSTATUS -(NTAPI DRIVER_DISPATCH)( - IN struct _DEVICE_OBJECT *DeviceObject, - IN struct _IRP *Irp); -typedef DRIVER_DISPATCH *PDRIVER_DISPATCH; - -typedef struct _DRIVER_OBJECT { - CSHORT Type; - CSHORT Size; - PDEVICE_OBJECT DeviceObject; - ULONG Flags; - PVOID DriverStart; - ULONG DriverSize; - PVOID DriverSection; - PDRIVER_EXTENSION DriverExtension; - UNICODE_STRING DriverName; - PUNICODE_STRING HardwareDatabase; - struct _FAST_IO_DISPATCH *FastIoDispatch; - PDRIVER_INITIALIZE DriverInit; - PDRIVER_STARTIO DriverStartIo; - PDRIVER_UNLOAD DriverUnload; - PDRIVER_DISPATCH MajorFunction[IRP_MJ_MAXIMUM_FUNCTION + 1]; -} DRIVER_OBJECT, *PDRIVER_OBJECT; - -typedef struct _DMA_ADAPTER { - USHORT Version; - USHORT Size; - struct _DMA_OPERATIONS* DmaOperations; -} DMA_ADAPTER, *PDMA_ADAPTER; - -typedef VOID -(NTAPI *PPUT_DMA_ADAPTER)( - IN PDMA_ADAPTER DmaAdapter); - -typedef PVOID -(NTAPI *PALLOCATE_COMMON_BUFFER)( - IN PDMA_ADAPTER DmaAdapter, - IN ULONG Length, - OUT PPHYSICAL_ADDRESS LogicalAddress, - IN BOOLEAN CacheEnabled); - -typedef VOID -(NTAPI *PFREE_COMMON_BUFFER)( - IN PDMA_ADAPTER DmaAdapter, - IN ULONG Length, - IN PHYSICAL_ADDRESS LogicalAddress, - IN PVOID VirtualAddress, - IN BOOLEAN CacheEnabled); - -typedef NTSTATUS -(NTAPI *PALLOCATE_ADAPTER_CHANNEL)( - IN PDMA_ADAPTER DmaAdapter, - IN PDEVICE_OBJECT DeviceObject, - IN ULONG NumberOfMapRegisters, - IN PDRIVER_CONTROL ExecutionRoutine, - IN PVOID Context); - -typedef BOOLEAN -(NTAPI *PFLUSH_ADAPTER_BUFFERS)( - IN PDMA_ADAPTER DmaAdapter, - IN PMDL Mdl, - IN PVOID MapRegisterBase, - IN PVOID CurrentVa, - IN ULONG Length, - IN BOOLEAN WriteToDevice); - -typedef VOID -(NTAPI *PFREE_ADAPTER_CHANNEL)( - IN PDMA_ADAPTER DmaAdapter); - -typedef VOID -(NTAPI *PFREE_MAP_REGISTERS)( - IN PDMA_ADAPTER DmaAdapter, - PVOID MapRegisterBase, - ULONG NumberOfMapRegisters); - -typedef PHYSICAL_ADDRESS -(NTAPI *PMAP_TRANSFER)( - IN PDMA_ADAPTER DmaAdapter, - IN PMDL Mdl, - IN PVOID MapRegisterBase, - IN PVOID CurrentVa, - IN OUT PULONG Length, - IN BOOLEAN WriteToDevice); - -typedef ULONG -(NTAPI *PGET_DMA_ALIGNMENT)( - IN PDMA_ADAPTER DmaAdapter); - -typedef ULONG -(NTAPI *PREAD_DMA_COUNTER)( - IN PDMA_ADAPTER DmaAdapter); - -typedef VOID -(NTAPI DRIVER_LIST_CONTROL)( - IN struct _DEVICE_OBJECT *DeviceObject, - IN struct _IRP *Irp, - IN struct _SCATTER_GATHER_LIST *ScatterGather, - IN PVOID Context); -typedef DRIVER_LIST_CONTROL *PDRIVER_LIST_CONTROL; - -typedef NTSTATUS -(NTAPI *PGET_SCATTER_GATHER_LIST)( - IN PDMA_ADAPTER DmaAdapter, - IN PDEVICE_OBJECT DeviceObject, - IN PMDL Mdl, - IN PVOID CurrentVa, - IN ULONG Length, - IN PDRIVER_LIST_CONTROL ExecutionRoutine, - IN PVOID Context, - IN BOOLEAN WriteToDevice); - -typedef VOID -(NTAPI *PPUT_SCATTER_GATHER_LIST)( - IN PDMA_ADAPTER DmaAdapter, - IN PSCATTER_GATHER_LIST ScatterGather, - IN BOOLEAN WriteToDevice); - -typedef NTSTATUS -(NTAPI *PCALCULATE_SCATTER_GATHER_LIST_SIZE)( - IN PDMA_ADAPTER DmaAdapter, - IN PMDL Mdl OPTIONAL, - IN PVOID CurrentVa, - IN ULONG Length, - OUT PULONG ScatterGatherListSize, - OUT PULONG pNumberOfMapRegisters OPTIONAL); - -typedef NTSTATUS -(NTAPI *PBUILD_SCATTER_GATHER_LIST)( - IN PDMA_ADAPTER DmaAdapter, - IN PDEVICE_OBJECT DeviceObject, - IN PMDL Mdl, - IN PVOID CurrentVa, - IN ULONG Length, - IN PDRIVER_LIST_CONTROL ExecutionRoutine, - IN PVOID Context, - IN BOOLEAN WriteToDevice, - IN PVOID ScatterGatherBuffer, - IN ULONG ScatterGatherLength); - -typedef NTSTATUS -(NTAPI *PBUILD_MDL_FROM_SCATTER_GATHER_LIST)( - IN PDMA_ADAPTER DmaAdapter, - IN PSCATTER_GATHER_LIST ScatterGather, - IN PMDL OriginalMdl, - OUT PMDL *TargetMdl); - -typedef struct _DMA_OPERATIONS { - ULONG Size; - PPUT_DMA_ADAPTER PutDmaAdapter; - PALLOCATE_COMMON_BUFFER AllocateCommonBuffer; - PFREE_COMMON_BUFFER FreeCommonBuffer; - PALLOCATE_ADAPTER_CHANNEL AllocateAdapterChannel; - PFLUSH_ADAPTER_BUFFERS FlushAdapterBuffers; - PFREE_ADAPTER_CHANNEL FreeAdapterChannel; - PFREE_MAP_REGISTERS FreeMapRegisters; - PMAP_TRANSFER MapTransfer; - PGET_DMA_ALIGNMENT GetDmaAlignment; - PREAD_DMA_COUNTER ReadDmaCounter; - PGET_SCATTER_GATHER_LIST GetScatterGatherList; - PPUT_SCATTER_GATHER_LIST PutScatterGatherList; - PCALCULATE_SCATTER_GATHER_LIST_SIZE CalculateScatterGatherList; - PBUILD_SCATTER_GATHER_LIST BuildScatterGatherList; - PBUILD_MDL_FROM_SCATTER_GATHER_LIST BuildMdlFromScatterGatherList; -} DMA_OPERATIONS, *PDMA_OPERATIONS; - -typedef struct _IO_RESOURCE_DESCRIPTOR { - UCHAR Option; - UCHAR Type; - UCHAR ShareDisposition; - UCHAR Spare1; - USHORT Flags; - USHORT Spare2; - union { - struct { - ULONG Length; - ULONG Alignment; - PHYSICAL_ADDRESS MinimumAddress; - PHYSICAL_ADDRESS MaximumAddress; - } Port; - struct { - ULONG Length; - ULONG Alignment; - PHYSICAL_ADDRESS MinimumAddress; - PHYSICAL_ADDRESS MaximumAddress; - } Memory; - struct { - ULONG MinimumVector; - ULONG MaximumVector; - } Interrupt; - struct { - ULONG MinimumChannel; - ULONG MaximumChannel; - } Dma; - struct { - ULONG Length; - ULONG Alignment; - PHYSICAL_ADDRESS MinimumAddress; - PHYSICAL_ADDRESS MaximumAddress; - } Generic; - struct { - ULONG Data[3]; - } DevicePrivate; - struct { - ULONG Length; - ULONG MinBusNumber; - ULONG MaxBusNumber; - ULONG Reserved; - } BusNumber; - struct { - ULONG Priority; - ULONG Reserved1; - ULONG Reserved2; - } ConfigData; - } u; -} IO_RESOURCE_DESCRIPTOR, *PIO_RESOURCE_DESCRIPTOR; - -typedef struct _IO_RESOURCE_LIST { - USHORT Version; - USHORT Revision; - ULONG Count; - IO_RESOURCE_DESCRIPTOR Descriptors[1]; -} IO_RESOURCE_LIST, *PIO_RESOURCE_LIST; - -typedef struct _IO_RESOURCE_REQUIREMENTS_LIST { - ULONG ListSize; - INTERFACE_TYPE InterfaceType; - ULONG BusNumber; - ULONG SlotNumber; - ULONG Reserved[3]; - ULONG AlternativeLists; - IO_RESOURCE_LIST List[1]; -} IO_RESOURCE_REQUIREMENTS_LIST, *PIO_RESOURCE_REQUIREMENTS_LIST; - -typedef VOID -(NTAPI DRIVER_CANCEL)( - IN struct _DEVICE_OBJECT *DeviceObject, - IN struct _IRP *Irp); -typedef DRIVER_CANCEL *PDRIVER_CANCEL; - -typedef struct _IRP { - CSHORT Type; - USHORT Size; - struct _MDL *MdlAddress; - ULONG Flags; - union { - struct _IRP *MasterIrp; - volatile LONG IrpCount; - PVOID SystemBuffer; - } AssociatedIrp; - LIST_ENTRY ThreadListEntry; - IO_STATUS_BLOCK IoStatus; - KPROCESSOR_MODE RequestorMode; - BOOLEAN PendingReturned; - CHAR StackCount; - CHAR CurrentLocation; - BOOLEAN Cancel; - KIRQL CancelIrql; - CCHAR ApcEnvironment; - UCHAR AllocationFlags; - PIO_STATUS_BLOCK UserIosb; - PKEVENT UserEvent; - union { - struct { - _ANONYMOUS_UNION union { - PIO_APC_ROUTINE UserApcRoutine; - PVOID IssuingProcess; - } DUMMYUNIONNAME; - PVOID UserApcContext; - } AsynchronousParameters; - LARGE_INTEGER AllocationSize; - } Overlay; - volatile PDRIVER_CANCEL CancelRoutine; - PVOID UserBuffer; - union { - struct { - _ANONYMOUS_UNION union { - KDEVICE_QUEUE_ENTRY DeviceQueueEntry; - _ANONYMOUS_STRUCT struct { - PVOID DriverContext[4]; - } DUMMYSTRUCTNAME; - } DUMMYUNIONNAME; - PETHREAD Thread; - PCHAR AuxiliaryBuffer; - _ANONYMOUS_STRUCT struct { - LIST_ENTRY ListEntry; - _ANONYMOUS_UNION union { - struct _IO_STACK_LOCATION *CurrentStackLocation; - ULONG PacketType; - } DUMMYUNIONNAME; - } DUMMYSTRUCTNAME; - struct _FILE_OBJECT *OriginalFileObject; - } Overlay; - KAPC Apc; - PVOID CompletionKey; - } Tail; -} IRP, *PIRP; - -typedef enum _IO_PAGING_PRIORITY { - IoPagingPriorityInvalid, - IoPagingPriorityNormal, - IoPagingPriorityHigh, - IoPagingPriorityReserved1, - IoPagingPriorityReserved2 -} IO_PAGING_PRIORITY; - -typedef NTSTATUS -(NTAPI IO_COMPLETION_ROUTINE)( - IN struct _DEVICE_OBJECT *DeviceObject, - IN struct _IRP *Irp, - IN PVOID Context); -typedef IO_COMPLETION_ROUTINE *PIO_COMPLETION_ROUTINE; - -typedef VOID -(NTAPI IO_DPC_ROUTINE)( - IN struct _KDPC *Dpc, - IN struct _DEVICE_OBJECT *DeviceObject, - IN struct _IRP *Irp, - IN PVOID Context); -typedef IO_DPC_ROUTINE *PIO_DPC_ROUTINE; - -typedef NTSTATUS -(NTAPI *PMM_DLL_INITIALIZE)( - IN PUNICODE_STRING RegistryPath); - -typedef NTSTATUS -(NTAPI *PMM_DLL_UNLOAD)( - VOID); - -typedef VOID -(NTAPI IO_TIMER_ROUTINE)( - IN struct _DEVICE_OBJECT *DeviceObject, - IN PVOID Context); -typedef IO_TIMER_ROUTINE *PIO_TIMER_ROUTINE; - -typedef struct _IO_SECURITY_CONTEXT { - PSECURITY_QUALITY_OF_SERVICE SecurityQos; - PACCESS_STATE AccessState; - ACCESS_MASK DesiredAccess; - ULONG FullCreateOptions; -} IO_SECURITY_CONTEXT, *PIO_SECURITY_CONTEXT; - -struct _IO_CSQ; - -typedef struct _IO_CSQ_IRP_CONTEXT { - ULONG Type; - struct _IRP *Irp; - struct _IO_CSQ *Csq; -} IO_CSQ_IRP_CONTEXT, *PIO_CSQ_IRP_CONTEXT; - -typedef VOID -(NTAPI *PIO_CSQ_INSERT_IRP)( - IN struct _IO_CSQ *Csq, - IN PIRP Irp); - -typedef NTSTATUS -(NTAPI IO_CSQ_INSERT_IRP_EX)( - IN struct _IO_CSQ *Csq, - IN PIRP Irp, - IN PVOID InsertContext); -typedef IO_CSQ_INSERT_IRP_EX *PIO_CSQ_INSERT_IRP_EX; - -typedef VOID -(NTAPI *PIO_CSQ_REMOVE_IRP)( - IN struct _IO_CSQ *Csq, - IN PIRP Irp); - -typedef PIRP -(NTAPI *PIO_CSQ_PEEK_NEXT_IRP)( - IN struct _IO_CSQ *Csq, - IN PIRP Irp, - IN PVOID PeekContext); - -typedef VOID -(NTAPI *PIO_CSQ_ACQUIRE_LOCK)( - IN struct _IO_CSQ *Csq, - OUT PKIRQL Irql); - -typedef VOID -(NTAPI *PIO_CSQ_RELEASE_LOCK)( - IN struct _IO_CSQ *Csq, - IN KIRQL Irql); - -typedef VOID -(NTAPI *PIO_CSQ_COMPLETE_CANCELED_IRP)( - IN struct _IO_CSQ *Csq, - IN PIRP Irp); - -typedef struct _IO_CSQ { - ULONG Type; - PIO_CSQ_INSERT_IRP CsqInsertIrp; - PIO_CSQ_REMOVE_IRP CsqRemoveIrp; - PIO_CSQ_PEEK_NEXT_IRP CsqPeekNextIrp; - PIO_CSQ_ACQUIRE_LOCK CsqAcquireLock; - PIO_CSQ_RELEASE_LOCK CsqReleaseLock; - PIO_CSQ_COMPLETE_CANCELED_IRP CsqCompleteCanceledIrp; - PVOID ReservePointer; -} IO_CSQ, *PIO_CSQ; - -typedef enum _BUS_QUERY_ID_TYPE { - BusQueryDeviceID, - BusQueryHardwareIDs, - BusQueryCompatibleIDs, - BusQueryInstanceID, - BusQueryDeviceSerialNumber -} BUS_QUERY_ID_TYPE, *PBUS_QUERY_ID_TYPE; - -typedef enum _DEVICE_TEXT_TYPE { - DeviceTextDescription, - DeviceTextLocationInformation -} DEVICE_TEXT_TYPE, *PDEVICE_TEXT_TYPE; - -typedef BOOLEAN -(NTAPI *PGPE_SERVICE_ROUTINE)( - PVOID, - PVOID); - -typedef NTSTATUS -(NTAPI *PGPE_CONNECT_VECTOR)( - PDEVICE_OBJECT, - ULONG, - KINTERRUPT_MODE, - BOOLEAN, - PGPE_SERVICE_ROUTINE, - PVOID, - PVOID); - -typedef NTSTATUS -(NTAPI *PGPE_DISCONNECT_VECTOR)( - PVOID); - -typedef NTSTATUS -(NTAPI *PGPE_ENABLE_EVENT)( - PDEVICE_OBJECT, - PVOID); - -typedef NTSTATUS -(NTAPI *PGPE_DISABLE_EVENT)( - PDEVICE_OBJECT, - PVOID); - -typedef NTSTATUS -(NTAPI *PGPE_CLEAR_STATUS)( - PDEVICE_OBJECT, - PVOID); - -typedef VOID -(NTAPI *PDEVICE_NOTIFY_CALLBACK)( - PVOID, - ULONG); - -typedef NTSTATUS -(NTAPI *PREGISTER_FOR_DEVICE_NOTIFICATIONS)( - PDEVICE_OBJECT, - PDEVICE_NOTIFY_CALLBACK, - PVOID); - -typedef VOID -(NTAPI *PUNREGISTER_FOR_DEVICE_NOTIFICATIONS)( - PDEVICE_OBJECT, - PDEVICE_NOTIFY_CALLBACK); - -typedef struct _ACPI_INTERFACE_STANDARD { - USHORT Size; - USHORT Version; - PVOID Context; - PINTERFACE_REFERENCE InterfaceReference; - PINTERFACE_DEREFERENCE InterfaceDereference; - PGPE_CONNECT_VECTOR GpeConnectVector; - PGPE_DISCONNECT_VECTOR GpeDisconnectVector; - PGPE_ENABLE_EVENT GpeEnableEvent; - PGPE_DISABLE_EVENT GpeDisableEvent; - PGPE_CLEAR_STATUS GpeClearStatus; - PREGISTER_FOR_DEVICE_NOTIFICATIONS RegisterForDeviceNotifications; - PUNREGISTER_FOR_DEVICE_NOTIFICATIONS UnregisterForDeviceNotifications; -} ACPI_INTERFACE_STANDARD, *PACPI_INTERFACE_STANDARD; - -typedef BOOLEAN -(NTAPI *PGPE_SERVICE_ROUTINE2)( - PVOID ObjectContext, - PVOID ServiceContext); - -typedef NTSTATUS -(NTAPI *PGPE_CONNECT_VECTOR2)( - PVOID Context, - ULONG GpeNumber, - KINTERRUPT_MODE Mode, - BOOLEAN Shareable, - PGPE_SERVICE_ROUTINE ServiceRoutine, - PVOID ServiceContext, - PVOID *ObjectContext); - -typedef NTSTATUS -(NTAPI *PGPE_DISCONNECT_VECTOR2)( - PVOID Context, - PVOID ObjectContext); - -typedef NTSTATUS -(NTAPI *PGPE_ENABLE_EVENT2)( - PVOID Context, - PVOID ObjectContext); - -typedef NTSTATUS -(NTAPI *PGPE_DISABLE_EVENT2)( - PVOID Context, - PVOID ObjectContext); - -typedef NTSTATUS -(NTAPI *PGPE_CLEAR_STATUS2)( - PVOID Context, - PVOID ObjectContext); - -typedef VOID -(NTAPI *PDEVICE_NOTIFY_CALLBACK2)( - PVOID NotificationContext, - ULONG NotifyCode); - -typedef NTSTATUS -(NTAPI *PREGISTER_FOR_DEVICE_NOTIFICATIONS2)( - PVOID Context, - PDEVICE_NOTIFY_CALLBACK2 NotificationHandler, - PVOID NotificationContext); - -typedef VOID -(NTAPI *PUNREGISTER_FOR_DEVICE_NOTIFICATIONS2)( - PVOID Context); - -typedef struct _ACPI_INTERFACE_STANDARD2 { - USHORT Size; - USHORT Version; - PVOID Context; - PINTERFACE_REFERENCE InterfaceReference; - PINTERFACE_DEREFERENCE InterfaceDereference; - PGPE_CONNECT_VECTOR2 GpeConnectVector; - PGPE_DISCONNECT_VECTOR2 GpeDisconnectVector; - PGPE_ENABLE_EVENT2 GpeEnableEvent; - PGPE_DISABLE_EVENT2 GpeDisableEvent; - PGPE_CLEAR_STATUS2 GpeClearStatus; - PREGISTER_FOR_DEVICE_NOTIFICATIONS2 RegisterForDeviceNotifications; - PUNREGISTER_FOR_DEVICE_NOTIFICATIONS2 UnregisterForDeviceNotifications; -} ACPI_INTERFACE_STANDARD2, *PACPI_INTERFACE_STANDARD2; - -#if !defined(_AMD64_) && !defined(_IA64_) -#include -#endif -typedef struct _IO_STACK_LOCATION { - UCHAR MajorFunction; - UCHAR MinorFunction; - UCHAR Flags; - UCHAR Control; - union { - struct { - PIO_SECURITY_CONTEXT SecurityContext; - ULONG Options; - USHORT POINTER_ALIGNMENT FileAttributes; - USHORT ShareAccess; - ULONG POINTER_ALIGNMENT EaLength; - } Create; - struct { - ULONG Length; - ULONG POINTER_ALIGNMENT Key; - LARGE_INTEGER ByteOffset; - } Read; - struct { - ULONG Length; - ULONG POINTER_ALIGNMENT Key; - LARGE_INTEGER ByteOffset; - } Write; - struct { - ULONG Length; - PUNICODE_STRING FileName; - FILE_INFORMATION_CLASS FileInformationClass; - ULONG FileIndex; - } QueryDirectory; - struct { - ULONG Length; - ULONG CompletionFilter; - } NotifyDirectory; - struct { - ULONG Length; - FILE_INFORMATION_CLASS POINTER_ALIGNMENT FileInformationClass; - } QueryFile; - struct { - ULONG Length; - FILE_INFORMATION_CLASS POINTER_ALIGNMENT FileInformationClass; - PFILE_OBJECT FileObject; - _ANONYMOUS_UNION union { - _ANONYMOUS_STRUCT struct { - BOOLEAN ReplaceIfExists; - BOOLEAN AdvanceOnly; - } DUMMYSTRUCTNAME; - ULONG ClusterCount; - HANDLE DeleteHandle; - } DUMMYUNIONNAME; - } SetFile; - struct { - ULONG Length; - PVOID EaList; - ULONG EaListLength; - ULONG EaIndex; - } QueryEa; - struct { - ULONG Length; - } SetEa; - struct { - ULONG Length; - FS_INFORMATION_CLASS POINTER_ALIGNMENT FsInformationClass; - } QueryVolume; - struct { - ULONG Length; - FS_INFORMATION_CLASS FsInformationClass; - } SetVolume; - struct { - ULONG OutputBufferLength; - ULONG InputBufferLength; - ULONG FsControlCode; - PVOID Type3InputBuffer; - } FileSystemControl; - struct { - PLARGE_INTEGER Length; - ULONG Key; - LARGE_INTEGER ByteOffset; - } LockControl; - struct { - ULONG OutputBufferLength; - ULONG POINTER_ALIGNMENT InputBufferLength; - ULONG POINTER_ALIGNMENT IoControlCode; - PVOID Type3InputBuffer; - } DeviceIoControl; - struct { - SECURITY_INFORMATION SecurityInformation; - ULONG POINTER_ALIGNMENT Length; - } QuerySecurity; - struct { - SECURITY_INFORMATION SecurityInformation; - PSECURITY_DESCRIPTOR SecurityDescriptor; - } SetSecurity; - struct { - PVPB Vpb; - PDEVICE_OBJECT DeviceObject; - } MountVolume; - struct { - PVPB Vpb; - PDEVICE_OBJECT DeviceObject; - } VerifyVolume; - struct { - struct _SCSI_REQUEST_BLOCK *Srb; - } Scsi; - struct { - ULONG Length; - PSID StartSid; - struct _FILE_GET_QUOTA_INFORMATION *SidList; - ULONG SidListLength; - } QueryQuota; - struct { - ULONG Length; - } SetQuota; - struct { - DEVICE_RELATION_TYPE Type; - } QueryDeviceRelations; - struct { - CONST GUID *InterfaceType; - USHORT Size; - USHORT Version; - PINTERFACE Interface; - PVOID InterfaceSpecificData; - } QueryInterface; - struct { - PDEVICE_CAPABILITIES Capabilities; - } DeviceCapabilities; - struct { - PIO_RESOURCE_REQUIREMENTS_LIST IoResourceRequirementList; - } FilterResourceRequirements; - struct { - ULONG WhichSpace; - PVOID Buffer; - ULONG Offset; - ULONG POINTER_ALIGNMENT Length; - } ReadWriteConfig; - struct { - BOOLEAN Lock; - } SetLock; - struct { - BUS_QUERY_ID_TYPE IdType; - } QueryId; - struct { - DEVICE_TEXT_TYPE DeviceTextType; - LCID POINTER_ALIGNMENT LocaleId; - } QueryDeviceText; - struct { - BOOLEAN InPath; - BOOLEAN Reserved[3]; - DEVICE_USAGE_NOTIFICATION_TYPE POINTER_ALIGNMENT Type; - } UsageNotification; - struct { - SYSTEM_POWER_STATE PowerState; - } WaitWake; - struct { - PPOWER_SEQUENCE PowerSequence; - } PowerSequence; - struct { - ULONG SystemContext; - POWER_STATE_TYPE POINTER_ALIGNMENT Type; - POWER_STATE POINTER_ALIGNMENT State; - POWER_ACTION POINTER_ALIGNMENT ShutdownType; - } Power; - struct { - PCM_RESOURCE_LIST AllocatedResources; - PCM_RESOURCE_LIST AllocatedResourcesTranslated; - } StartDevice; - struct { - ULONG_PTR ProviderId; - PVOID DataPath; - ULONG BufferSize; - PVOID Buffer; - } WMI; - struct { - PVOID Argument1; - PVOID Argument2; - PVOID Argument3; - PVOID Argument4; - } Others; - } Parameters; - PDEVICE_OBJECT DeviceObject; - PFILE_OBJECT FileObject; - PIO_COMPLETION_ROUTINE CompletionRoutine; - PVOID Context; -} IO_STACK_LOCATION, *PIO_STACK_LOCATION; -#if !defined(_AMD64_) && !defined(_IA64_) -#include -#endif - -/* IO_STACK_LOCATION.Control */ - -#define SL_PENDING_RETURNED 0x01 -#define SL_ERROR_RETURNED 0x02 -#define SL_INVOKE_ON_CANCEL 0x20 -#define SL_INVOKE_ON_SUCCESS 0x40 -#define SL_INVOKE_ON_ERROR 0x80 - -#define METHOD_BUFFERED 0 -#define METHOD_IN_DIRECT 1 -#define METHOD_OUT_DIRECT 2 -#define METHOD_NEITHER 3 - -#define METHOD_DIRECT_TO_HARDWARE METHOD_IN_DIRECT -#define METHOD_DIRECT_FROM_HARDWARE METHOD_OUT_DIRECT - -#define FILE_SUPERSEDED 0x00000000 -#define FILE_OPENED 0x00000001 -#define FILE_CREATED 0x00000002 -#define FILE_OVERWRITTEN 0x00000003 -#define FILE_EXISTS 0x00000004 -#define FILE_DOES_NOT_EXIST 0x00000005 - -#define FILE_USE_FILE_POINTER_POSITION 0xfffffffe -#define FILE_WRITE_TO_END_OF_FILE 0xffffffff - -/* also in winnt.h */ -#define FILE_LIST_DIRECTORY 0x00000001 -#define FILE_READ_DATA 0x00000001 -#define FILE_ADD_FILE 0x00000002 -#define FILE_WRITE_DATA 0x00000002 -#define FILE_ADD_SUBDIRECTORY 0x00000004 -#define FILE_APPEND_DATA 0x00000004 -#define FILE_CREATE_PIPE_INSTANCE 0x00000004 -#define FILE_READ_EA 0x00000008 -#define FILE_WRITE_EA 0x00000010 -#define FILE_EXECUTE 0x00000020 -#define FILE_TRAVERSE 0x00000020 -#define FILE_DELETE_CHILD 0x00000040 -#define FILE_READ_ATTRIBUTES 0x00000080 -#define FILE_WRITE_ATTRIBUTES 0x00000100 - -#define FILE_SHARE_READ 0x00000001 -#define FILE_SHARE_WRITE 0x00000002 -#define FILE_SHARE_DELETE 0x00000004 -#define FILE_SHARE_VALID_FLAGS 0x00000007 - -#define FILE_ATTRIBUTE_READONLY 0x00000001 -#define FILE_ATTRIBUTE_HIDDEN 0x00000002 -#define FILE_ATTRIBUTE_SYSTEM 0x00000004 -#define FILE_ATTRIBUTE_DIRECTORY 0x00000010 -#define FILE_ATTRIBUTE_ARCHIVE 0x00000020 -#define FILE_ATTRIBUTE_DEVICE 0x00000040 -#define FILE_ATTRIBUTE_NORMAL 0x00000080 -#define FILE_ATTRIBUTE_TEMPORARY 0x00000100 -#define FILE_ATTRIBUTE_SPARSE_FILE 0x00000200 -#define FILE_ATTRIBUTE_REPARSE_POINT 0x00000400 -#define FILE_ATTRIBUTE_COMPRESSED 0x00000800 -#define FILE_ATTRIBUTE_OFFLINE 0x00001000 -#define FILE_ATTRIBUTE_NOT_CONTENT_INDEXED 0x00002000 -#define FILE_ATTRIBUTE_ENCRYPTED 0x00004000 -#define FILE_ATTRIBUTE_VIRTUAL 0x00010000 - -#define FILE_ATTRIBUTE_VALID_FLAGS 0x00007fb7 -#define FILE_ATTRIBUTE_VALID_SET_FLAGS 0x000031a7 - -#define FILE_VALID_OPTION_FLAGS 0x00ffffff -#define FILE_VALID_PIPE_OPTION_FLAGS 0x00000032 -#define FILE_VALID_MAILSLOT_OPTION_FLAGS 0x00000032 -#define FILE_VALID_SET_FLAGS 0x00000036 - -#define FILE_SUPERSEDE 0x00000000 -#define FILE_OPEN 0x00000001 -#define FILE_CREATE 0x00000002 -#define FILE_OPEN_IF 0x00000003 -#define FILE_OVERWRITE 0x00000004 -#define FILE_OVERWRITE_IF 0x00000005 -#define FILE_MAXIMUM_DISPOSITION 0x00000005 - -#define FILE_DIRECTORY_FILE 0x00000001 -#define FILE_WRITE_THROUGH 0x00000002 -#define FILE_SEQUENTIAL_ONLY 0x00000004 -#define FILE_NO_INTERMEDIATE_BUFFERING 0x00000008 -#define FILE_SYNCHRONOUS_IO_ALERT 0x00000010 -#define FILE_SYNCHRONOUS_IO_NONALERT 0x00000020 -#define FILE_NON_DIRECTORY_FILE 0x00000040 -#define FILE_CREATE_TREE_CONNECTION 0x00000080 -#define FILE_COMPLETE_IF_OPLOCKED 0x00000100 -#define FILE_NO_EA_KNOWLEDGE 0x00000200 -#define FILE_OPEN_REMOTE_INSTANCE 0x00000400 -#define FILE_RANDOM_ACCESS 0x00000800 -#define FILE_DELETE_ON_CLOSE 0x00001000 -#define FILE_OPEN_BY_FILE_ID 0x00002000 -#define FILE_OPEN_FOR_BACKUP_INTENT 0x00004000 -#define FILE_NO_COMPRESSION 0x00008000 -#if (NTDDI_VERSION >= NTDDI_WIN7) -#define FILE_OPEN_REQUIRING_OPLOCK 0x00010000 -#define FILE_DISALLOW_EXCLUSIVE 0x00020000 -#endif /* (NTDDI_VERSION >= NTDDI_WIN7) */ -#define FILE_RESERVE_OPFILTER 0x00100000 -#define FILE_OPEN_REPARSE_POINT 0x00200000 -#define FILE_OPEN_NO_RECALL 0x00400000 -#define FILE_OPEN_FOR_FREE_SPACE_QUERY 0x00800000 - -#define FILE_ANY_ACCESS 0x00000000 -#define FILE_SPECIAL_ACCESS FILE_ANY_ACCESS -#define FILE_READ_ACCESS 0x00000001 -#define FILE_WRITE_ACCESS 0x00000002 - -#define FILE_ALL_ACCESS \ - (STANDARD_RIGHTS_REQUIRED | \ - SYNCHRONIZE | \ - 0x1FF) - -#define FILE_GENERIC_EXECUTE \ - (STANDARD_RIGHTS_EXECUTE | \ - FILE_READ_ATTRIBUTES | \ - FILE_EXECUTE | \ - SYNCHRONIZE) - -#define FILE_GENERIC_READ \ - (STANDARD_RIGHTS_READ | \ - FILE_READ_DATA | \ - FILE_READ_ATTRIBUTES | \ - FILE_READ_EA | \ - SYNCHRONIZE) - -#define FILE_GENERIC_WRITE \ - (STANDARD_RIGHTS_WRITE | \ - FILE_WRITE_DATA | \ - FILE_WRITE_ATTRIBUTES | \ - FILE_WRITE_EA | \ - FILE_APPEND_DATA | \ - SYNCHRONIZE) - -/* end winnt.h */ - -#define WMIREG_ACTION_REGISTER 1 -#define WMIREG_ACTION_DEREGISTER 2 -#define WMIREG_ACTION_REREGISTER 3 -#define WMIREG_ACTION_UPDATE_GUIDS 4 -#define WMIREG_ACTION_BLOCK_IRPS 5 - -#define WMIREGISTER 0 -#define WMIUPDATE 1 - -typedef VOID -(NTAPI FWMI_NOTIFICATION_CALLBACK)( - PVOID Wnode, - PVOID Context); -typedef FWMI_NOTIFICATION_CALLBACK *WMI_NOTIFICATION_CALLBACK; - -#ifndef _PCI_X_ -#define _PCI_X_ - -typedef struct _PCI_SLOT_NUMBER { - union { - struct { - ULONG DeviceNumber:5; - ULONG FunctionNumber:3; - ULONG Reserved:24; - } bits; - ULONG AsULONG; - } u; -} PCI_SLOT_NUMBER, *PPCI_SLOT_NUMBER; - -#define PCI_TYPE0_ADDRESSES 6 -#define PCI_TYPE1_ADDRESSES 2 -#define PCI_TYPE2_ADDRESSES 5 - -typedef struct _PCI_COMMON_HEADER { - PCI_COMMON_HEADER_LAYOUT -} PCI_COMMON_HEADER, *PPCI_COMMON_HEADER; - -#ifdef __cplusplus -typedef struct _PCI_COMMON_CONFIG { - PCI_COMMON_HEADER_LAYOUT - UCHAR DeviceSpecific[192]; -} PCI_COMMON_CONFIG, *PPCI_COMMON_CONFIG; -#else -typedef struct _PCI_COMMON_CONFIG { - PCI_COMMON_HEADER DUMMYSTRUCTNAME; - UCHAR DeviceSpecific[192]; -} PCI_COMMON_CONFIG, *PPCI_COMMON_CONFIG; -#endif - -#define PCI_COMMON_HDR_LENGTH (FIELD_OFFSET(PCI_COMMON_CONFIG, DeviceSpecific)) - -#define PCI_EXTENDED_CONFIG_LENGTH 0x1000 - -#define PCI_MAX_DEVICES 32 -#define PCI_MAX_FUNCTION 8 -#define PCI_MAX_BRIDGE_NUMBER 0xFF -#define PCI_INVALID_VENDORID 0xFFFF - -/* PCI_COMMON_CONFIG.HeaderType */ -#define PCI_MULTIFUNCTION 0x80 -#define PCI_DEVICE_TYPE 0x00 -#define PCI_BRIDGE_TYPE 0x01 -#define PCI_CARDBUS_BRIDGE_TYPE 0x02 - -#define PCI_CONFIGURATION_TYPE(PciData) \ - (((PPCI_COMMON_CONFIG) (PciData))->HeaderType & ~PCI_MULTIFUNCTION) - -#define PCI_MULTIFUNCTION_DEVICE(PciData) \ - ((((PPCI_COMMON_CONFIG) (PciData))->HeaderType & PCI_MULTIFUNCTION) != 0) - -/* PCI_COMMON_CONFIG.Command */ -#define PCI_ENABLE_IO_SPACE 0x0001 -#define PCI_ENABLE_MEMORY_SPACE 0x0002 -#define PCI_ENABLE_BUS_MASTER 0x0004 -#define PCI_ENABLE_SPECIAL_CYCLES 0x0008 -#define PCI_ENABLE_WRITE_AND_INVALIDATE 0x0010 -#define PCI_ENABLE_VGA_COMPATIBLE_PALETTE 0x0020 -#define PCI_ENABLE_PARITY 0x0040 -#define PCI_ENABLE_WAIT_CYCLE 0x0080 -#define PCI_ENABLE_SERR 0x0100 -#define PCI_ENABLE_FAST_BACK_TO_BACK 0x0200 -#define PCI_DISABLE_LEVEL_INTERRUPT 0x0400 - -/* PCI_COMMON_CONFIG.Status */ -#define PCI_STATUS_INTERRUPT_PENDING 0x0008 -#define PCI_STATUS_CAPABILITIES_LIST 0x0010 -#define PCI_STATUS_66MHZ_CAPABLE 0x0020 -#define PCI_STATUS_UDF_SUPPORTED 0x0040 -#define PCI_STATUS_FAST_BACK_TO_BACK 0x0080 -#define PCI_STATUS_DATA_PARITY_DETECTED 0x0100 -#define PCI_STATUS_DEVSEL 0x0600 -#define PCI_STATUS_SIGNALED_TARGET_ABORT 0x0800 -#define PCI_STATUS_RECEIVED_TARGET_ABORT 0x1000 -#define PCI_STATUS_RECEIVED_MASTER_ABORT 0x2000 -#define PCI_STATUS_SIGNALED_SYSTEM_ERROR 0x4000 -#define PCI_STATUS_DETECTED_PARITY_ERROR 0x8000 - -/* IO_STACK_LOCATION.Parameters.ReadWriteControl.WhichSpace */ - -#define PCI_WHICHSPACE_CONFIG 0x0 -#define PCI_WHICHSPACE_ROM 0x52696350 /* 'PciR' */ - -#define PCI_CAPABILITY_ID_POWER_MANAGEMENT 0x01 -#define PCI_CAPABILITY_ID_AGP 0x02 -#define PCI_CAPABILITY_ID_VPD 0x03 -#define PCI_CAPABILITY_ID_SLOT_ID 0x04 -#define PCI_CAPABILITY_ID_MSI 0x05 -#define PCI_CAPABILITY_ID_CPCI_HOTSWAP 0x06 -#define PCI_CAPABILITY_ID_PCIX 0x07 -#define PCI_CAPABILITY_ID_HYPERTRANSPORT 0x08 -#define PCI_CAPABILITY_ID_VENDOR_SPECIFIC 0x09 -#define PCI_CAPABILITY_ID_DEBUG_PORT 0x0A -#define PCI_CAPABILITY_ID_CPCI_RES_CTRL 0x0B -#define PCI_CAPABILITY_ID_SHPC 0x0C -#define PCI_CAPABILITY_ID_P2P_SSID 0x0D -#define PCI_CAPABILITY_ID_AGP_TARGET 0x0E -#define PCI_CAPABILITY_ID_SECURE 0x0F -#define PCI_CAPABILITY_ID_PCI_EXPRESS 0x10 -#define PCI_CAPABILITY_ID_MSIX 0x11 - -typedef struct _PCI_CAPABILITIES_HEADER { - UCHAR CapabilityID; - UCHAR Next; -} PCI_CAPABILITIES_HEADER, *PPCI_CAPABILITIES_HEADER; - -typedef struct _PCI_PMC { - UCHAR Version:3; - UCHAR PMEClock:1; - UCHAR Rsvd1:1; - UCHAR DeviceSpecificInitialization:1; - UCHAR Rsvd2:2; - struct _PM_SUPPORT { - UCHAR Rsvd2:1; - UCHAR D1:1; - UCHAR D2:1; - UCHAR PMED0:1; - UCHAR PMED1:1; - UCHAR PMED2:1; - UCHAR PMED3Hot:1; - UCHAR PMED3Cold:1; - } Support; -} PCI_PMC, *PPCI_PMC; - -typedef struct _PCI_PMCSR { - USHORT PowerState:2; - USHORT Rsvd1:6; - USHORT PMEEnable:1; - USHORT DataSelect:4; - USHORT DataScale:2; - USHORT PMEStatus:1; -} PCI_PMCSR, *PPCI_PMCSR; - -typedef struct _PCI_PMCSR_BSE { - UCHAR Rsvd1:6; - UCHAR D3HotSupportsStopClock:1; - UCHAR BusPowerClockControlEnabled:1; -} PCI_PMCSR_BSE, *PPCI_PMCSR_BSE; - -typedef struct _PCI_PM_CAPABILITY { - PCI_CAPABILITIES_HEADER Header; - union { - PCI_PMC Capabilities; - USHORT AsUSHORT; - } PMC; - union { - PCI_PMCSR ControlStatus; - USHORT AsUSHORT; - } PMCSR; - union { - PCI_PMCSR_BSE BridgeSupport; - UCHAR AsUCHAR; - } PMCSR_BSE; - UCHAR Data; -} PCI_PM_CAPABILITY, *PPCI_PM_CAPABILITY; - -typedef struct { - PCI_CAPABILITIES_HEADER Header; - union { - struct { - USHORT DataParityErrorRecoveryEnable:1; - USHORT EnableRelaxedOrdering:1; - USHORT MaxMemoryReadByteCount:2; - USHORT MaxOutstandingSplitTransactions:3; - USHORT Reserved:9; - } bits; - USHORT AsUSHORT; - } Command; - union { - struct { - ULONG FunctionNumber:3; - ULONG DeviceNumber:5; - ULONG BusNumber:8; - ULONG Device64Bit:1; - ULONG Capable133MHz:1; - ULONG SplitCompletionDiscarded:1; - ULONG UnexpectedSplitCompletion:1; - ULONG DeviceComplexity:1; - ULONG DesignedMaxMemoryReadByteCount:2; - ULONG DesignedMaxOutstandingSplitTransactions:3; - ULONG DesignedMaxCumulativeReadSize:3; - ULONG ReceivedSplitCompletionErrorMessage:1; - ULONG CapablePCIX266:1; - ULONG CapablePCIX533:1; - } bits; - ULONG AsULONG; - } Status; -} PCI_X_CAPABILITY, *PPCI_X_CAPABILITY; - -#define PCI_EXPRESS_ADVANCED_ERROR_REPORTING_CAP_ID 0x0001 -#define PCI_EXPRESS_VIRTUAL_CHANNEL_CAP_ID 0x0002 -#define PCI_EXPRESS_DEVICE_SERIAL_NUMBER_CAP_ID 0x0003 -#define PCI_EXPRESS_POWER_BUDGETING_CAP_ID 0x0004 -#define PCI_EXPRESS_RC_LINK_DECLARATION_CAP_ID 0x0005 -#define PCI_EXPRESS_RC_INTERNAL_LINK_CONTROL_CAP_ID 0x0006 -#define PCI_EXPRESS_RC_EVENT_COLLECTOR_ENDPOINT_ASSOCIATION_CAP_ID 0x0007 -#define PCI_EXPRESS_MFVC_CAP_ID 0x0008 -#define PCI_EXPRESS_VC_AND_MFVC_CAP_ID 0x0009 -#define PCI_EXPRESS_RCRB_HEADER_CAP_ID 0x000A -#define PCI_EXPRESS_SINGLE_ROOT_IO_VIRTUALIZATION_CAP_ID 0x0010 - -typedef struct _PCI_EXPRESS_ENHANCED_CAPABILITY_HEADER { - USHORT CapabilityID; - USHORT Version:4; - USHORT Next:12; -} PCI_EXPRESS_ENHANCED_CAPABILITY_HEADER, *PPCI_EXPRESS_ENHANCED_CAPABILITY_HEADER; - -typedef struct _PCI_EXPRESS_SERIAL_NUMBER_CAPABILITY { - PCI_EXPRESS_ENHANCED_CAPABILITY_HEADER Header; - ULONG LowSerialNumber; - ULONG HighSerialNumber; -} PCI_EXPRESS_SERIAL_NUMBER_CAPABILITY, *PPCI_EXPRESS_SERIAL_NUMBER_CAPABILITY; - -typedef union _PCI_EXPRESS_UNCORRECTABLE_ERROR_STATUS { - struct { - ULONG Undefined:1; - ULONG Reserved1:3; - ULONG DataLinkProtocolError:1; - ULONG SurpriseDownError:1; - ULONG Reserved2:6; - ULONG PoisonedTLP:1; - ULONG FlowControlProtocolError:1; - ULONG CompletionTimeout:1; - ULONG CompleterAbort:1; - ULONG UnexpectedCompletion:1; - ULONG ReceiverOverflow:1; - ULONG MalformedTLP:1; - ULONG ECRCError:1; - ULONG UnsupportedRequestError:1; - ULONG Reserved3:11; - } DUMMYSTRUCTNAME; - ULONG AsULONG; -} PCI_EXPRESS_UNCORRECTABLE_ERROR_STATUS, *PPCI_EXPRESS_UNCORRECTABLE_ERROR_STATUS; - -typedef union _PCI_EXPRESS_UNCORRECTABLE_ERROR_MASK { - struct { - ULONG Undefined:1; - ULONG Reserved1:3; - ULONG DataLinkProtocolError:1; - ULONG SurpriseDownError:1; - ULONG Reserved2:6; - ULONG PoisonedTLP:1; - ULONG FlowControlProtocolError:1; - ULONG CompletionTimeout:1; - ULONG CompleterAbort:1; - ULONG UnexpectedCompletion:1; - ULONG ReceiverOverflow:1; - ULONG MalformedTLP:1; - ULONG ECRCError:1; - ULONG UnsupportedRequestError:1; - ULONG Reserved3:11; - } DUMMYSTRUCTNAME; - ULONG AsULONG; -} PCI_EXPRESS_UNCORRECTABLE_ERROR_MASK, *PPCI_EXPRESS_UNCORRECTABLE_ERROR_MASK; - -typedef union _PCI_EXPRESS_UNCORRECTABLE_ERROR_SEVERITY { - struct { - ULONG Undefined:1; - ULONG Reserved1:3; - ULONG DataLinkProtocolError:1; - ULONG SurpriseDownError:1; - ULONG Reserved2:6; - ULONG PoisonedTLP:1; - ULONG FlowControlProtocolError:1; - ULONG CompletionTimeout:1; - ULONG CompleterAbort:1; - ULONG UnexpectedCompletion:1; - ULONG ReceiverOverflow:1; - ULONG MalformedTLP:1; - ULONG ECRCError:1; - ULONG UnsupportedRequestError:1; - ULONG Reserved3:11; - } DUMMYSTRUCTNAME; - ULONG AsULONG; -} PCI_EXPRESS_UNCORRECTABLE_ERROR_SEVERITY, *PPCI_EXPRESS_UNCORRECTABLE_ERROR_SEVERITY; - -typedef union _PCI_EXPRESS_CORRECTABLE_ERROR_STATUS { - struct { - ULONG ReceiverError:1; - ULONG Reserved1:5; - ULONG BadTLP:1; - ULONG BadDLLP:1; - ULONG ReplayNumRollover:1; - ULONG Reserved2:3; - ULONG ReplayTimerTimeout:1; - ULONG AdvisoryNonFatalError:1; - ULONG Reserved3:18; - } DUMMYSTRUCTNAME; - ULONG AsULONG; -} PCI_EXPRESS_CORRECTABLE_ERROR_STATUS, *PPCI_CORRECTABLE_ERROR_STATUS; - -typedef union _PCI_EXPRESS_CORRECTABLE_ERROR_MASK { - struct { - ULONG ReceiverError:1; - ULONG Reserved1:5; - ULONG BadTLP:1; - ULONG BadDLLP:1; - ULONG ReplayNumRollover:1; - ULONG Reserved2:3; - ULONG ReplayTimerTimeout:1; - ULONG AdvisoryNonFatalError:1; - ULONG Reserved3:18; - } DUMMYSTRUCTNAME; - ULONG AsULONG; -} PCI_EXPRESS_CORRECTABLE_ERROR_MASK, *PPCI_CORRECTABLE_ERROR_MASK; - -typedef union _PCI_EXPRESS_AER_CAPABILITIES { - struct { - ULONG FirstErrorPointer:5; - ULONG ECRCGenerationCapable:1; - ULONG ECRCGenerationEnable:1; - ULONG ECRCCheckCapable:1; - ULONG ECRCCheckEnable:1; - ULONG Reserved:23; - } DUMMYSTRUCTNAME; - ULONG AsULONG; -} PCI_EXPRESS_AER_CAPABILITIES, *PPCI_EXPRESS_AER_CAPABILITIES; - -typedef union _PCI_EXPRESS_ROOT_ERROR_COMMAND { - struct { - ULONG CorrectableErrorReportingEnable:1; - ULONG NonFatalErrorReportingEnable:1; - ULONG FatalErrorReportingEnable:1; - ULONG Reserved:29; - } DUMMYSTRUCTNAME; - ULONG AsULONG; -} PCI_EXPRESS_ROOT_ERROR_COMMAND, *PPCI_EXPRESS_ROOT_ERROR_COMMAND; - -typedef union _PCI_EXPRESS_ROOT_ERROR_STATUS { - struct { - ULONG CorrectableErrorReceived:1; - ULONG MultipleCorrectableErrorsReceived:1; - ULONG UncorrectableErrorReceived:1; - ULONG MultipleUncorrectableErrorsReceived:1; - ULONG FirstUncorrectableFatal:1; - ULONG NonFatalErrorMessagesReceived:1; - ULONG FatalErrorMessagesReceived:1; - ULONG Reserved:20; - ULONG AdvancedErrorInterruptMessageNumber:5; - } DUMMYSTRUCTNAME; - ULONG AsULONG; -} PCI_EXPRESS_ROOT_ERROR_STATUS, *PPCI_EXPRESS_ROOT_ERROR_STATUS; - -typedef union _PCI_EXPRESS_ERROR_SOURCE_ID { - struct { - USHORT CorrectableSourceIdFun:3; - USHORT CorrectableSourceIdDev:5; - USHORT CorrectableSourceIdBus:8; - USHORT UncorrectableSourceIdFun:3; - USHORT UncorrectableSourceIdDev:5; - USHORT UncorrectableSourceIdBus:8; - } DUMMYSTRUCTNAME; - ULONG AsULONG; -} PCI_EXPRESS_ERROR_SOURCE_ID, *PPCI_EXPRESS_ERROR_SOURCE_ID; - -typedef union _PCI_EXPRESS_SEC_UNCORRECTABLE_ERROR_STATUS { - struct { - ULONG TargetAbortOnSplitCompletion:1; - ULONG MasterAbortOnSplitCompletion:1; - ULONG ReceivedTargetAbort:1; - ULONG ReceivedMasterAbort:1; - ULONG RsvdZ:1; - ULONG UnexpectedSplitCompletionError:1; - ULONG UncorrectableSplitCompletion:1; - ULONG UncorrectableDataError:1; - ULONG UncorrectableAttributeError:1; - ULONG UncorrectableAddressError:1; - ULONG DelayedTransactionDiscardTimerExpired:1; - ULONG PERRAsserted:1; - ULONG SERRAsserted:1; - ULONG InternalBridgeError:1; - ULONG Reserved:18; - } DUMMYSTRUCTNAME; - ULONG AsULONG; -} PCI_EXPRESS_SEC_UNCORRECTABLE_ERROR_STATUS, *PPCI_EXPRESS_SEC_UNCORRECTABLE_ERROR_STATUS; - -typedef union _PCI_EXPRESS_SEC_UNCORRECTABLE_ERROR_MASK { - struct { - ULONG TargetAbortOnSplitCompletion:1; - ULONG MasterAbortOnSplitCompletion:1; - ULONG ReceivedTargetAbort:1; - ULONG ReceivedMasterAbort:1; - ULONG RsvdZ:1; - ULONG UnexpectedSplitCompletionError:1; - ULONG UncorrectableSplitCompletion:1; - ULONG UncorrectableDataError:1; - ULONG UncorrectableAttributeError:1; - ULONG UncorrectableAddressError:1; - ULONG DelayedTransactionDiscardTimerExpired:1; - ULONG PERRAsserted:1; - ULONG SERRAsserted:1; - ULONG InternalBridgeError:1; - ULONG Reserved:18; - } DUMMYSTRUCTNAME; - ULONG AsULONG; -} PCI_EXPRESS_SEC_UNCORRECTABLE_ERROR_MASK, *PPCI_EXPRESS_SEC_UNCORRECTABLE_ERROR_MASK; - -typedef union _PCI_EXPRESS_SEC_UNCORRECTABLE_ERROR_SEVERITY { - struct { - ULONG TargetAbortOnSplitCompletion:1; - ULONG MasterAbortOnSplitCompletion:1; - ULONG ReceivedTargetAbort:1; - ULONG ReceivedMasterAbort:1; - ULONG RsvdZ:1; - ULONG UnexpectedSplitCompletionError:1; - ULONG UncorrectableSplitCompletion:1; - ULONG UncorrectableDataError:1; - ULONG UncorrectableAttributeError:1; - ULONG UncorrectableAddressError:1; - ULONG DelayedTransactionDiscardTimerExpired:1; - ULONG PERRAsserted:1; - ULONG SERRAsserted:1; - ULONG InternalBridgeError:1; - ULONG Reserved:18; - } DUMMYSTRUCTNAME; - ULONG AsULONG; -} PCI_EXPRESS_SEC_UNCORRECTABLE_ERROR_SEVERITY, *PPCI_EXPRESS_SEC_UNCORRECTABLE_ERROR_SEVERITY; - -typedef union _PCI_EXPRESS_SEC_AER_CAPABILITIES { - struct { - ULONG SecondaryUncorrectableFirstErrorPtr:5; - ULONG Reserved:27; - } DUMMYSTRUCTNAME; - ULONG AsULONG; -} PCI_EXPRESS_SEC_AER_CAPABILITIES, *PPCI_EXPRESS_SEC_AER_CAPABILITIES; - -#define ROOT_CMD_ENABLE_CORRECTABLE_ERROR_REPORTING 0x00000001 -#define ROOT_CMD_ENABLE_NONFATAL_ERROR_REPORTING 0x00000002 -#define ROOT_CMD_ENABLE_FATAL_ERROR_REPORTING 0x00000004 - -#define ROOT_CMD_ERROR_REPORTING_ENABLE_MASK \ - (ROOT_CMD_ENABLE_FATAL_ERROR_REPORTING | \ - ROOT_CMD_ENABLE_NONFATAL_ERROR_REPORTING | \ - ROOT_CMD_ENABLE_CORRECTABLE_ERROR_REPORTING) - -typedef struct _PCI_EXPRESS_AER_CAPABILITY { - PCI_EXPRESS_ENHANCED_CAPABILITY_HEADER Header; - PCI_EXPRESS_UNCORRECTABLE_ERROR_STATUS UncorrectableErrorStatus; - PCI_EXPRESS_UNCORRECTABLE_ERROR_MASK UncorrectableErrorMask; - PCI_EXPRESS_UNCORRECTABLE_ERROR_SEVERITY UncorrectableErrorSeverity; - PCI_EXPRESS_CORRECTABLE_ERROR_STATUS CorrectableErrorStatus; - PCI_EXPRESS_CORRECTABLE_ERROR_MASK CorrectableErrorMask; - PCI_EXPRESS_AER_CAPABILITIES CapabilitiesAndControl; - ULONG HeaderLog[4]; - PCI_EXPRESS_SEC_UNCORRECTABLE_ERROR_STATUS SecUncorrectableErrorStatus; - PCI_EXPRESS_SEC_UNCORRECTABLE_ERROR_MASK SecUncorrectableErrorMask; - PCI_EXPRESS_SEC_UNCORRECTABLE_ERROR_SEVERITY SecUncorrectableErrorSeverity; - PCI_EXPRESS_SEC_AER_CAPABILITIES SecCapabilitiesAndControl; - ULONG SecHeaderLog[4]; -} PCI_EXPRESS_AER_CAPABILITY, *PPCI_EXPRESS_AER_CAPABILITY; - -typedef struct _PCI_EXPRESS_ROOTPORT_AER_CAPABILITY { - PCI_EXPRESS_ENHANCED_CAPABILITY_HEADER Header; - PCI_EXPRESS_UNCORRECTABLE_ERROR_STATUS UncorrectableErrorStatus; - PCI_EXPRESS_UNCORRECTABLE_ERROR_MASK UncorrectableErrorMask; - PCI_EXPRESS_UNCORRECTABLE_ERROR_SEVERITY UncorrectableErrorSeverity; - PCI_EXPRESS_CORRECTABLE_ERROR_STATUS CorrectableErrorStatus; - PCI_EXPRESS_CORRECTABLE_ERROR_MASK CorrectableErrorMask; - PCI_EXPRESS_AER_CAPABILITIES CapabilitiesAndControl; - ULONG HeaderLog[4]; - PCI_EXPRESS_ROOT_ERROR_COMMAND RootErrorCommand; - PCI_EXPRESS_ROOT_ERROR_STATUS RootErrorStatus; - PCI_EXPRESS_ERROR_SOURCE_ID ErrorSourceId; -} PCI_EXPRESS_ROOTPORT_AER_CAPABILITY, *PPCI_EXPRESS_ROOTPORT_AER_CAPABILITY; - -typedef struct _PCI_EXPRESS_BRIDGE_AER_CAPABILITY { - PCI_EXPRESS_ENHANCED_CAPABILITY_HEADER Header; - PCI_EXPRESS_UNCORRECTABLE_ERROR_STATUS UncorrectableErrorStatus; - PCI_EXPRESS_UNCORRECTABLE_ERROR_MASK UncorrectableErrorMask; - PCI_EXPRESS_UNCORRECTABLE_ERROR_SEVERITY UncorrectableErrorSeverity; - PCI_EXPRESS_CORRECTABLE_ERROR_STATUS CorrectableErrorStatus; - PCI_EXPRESS_CORRECTABLE_ERROR_MASK CorrectableErrorMask; - PCI_EXPRESS_AER_CAPABILITIES CapabilitiesAndControl; - ULONG HeaderLog[4]; - PCI_EXPRESS_SEC_UNCORRECTABLE_ERROR_STATUS SecUncorrectableErrorStatus; - PCI_EXPRESS_SEC_UNCORRECTABLE_ERROR_MASK SecUncorrectableErrorMask; - PCI_EXPRESS_SEC_UNCORRECTABLE_ERROR_SEVERITY SecUncorrectableErrorSeverity; - PCI_EXPRESS_SEC_AER_CAPABILITIES SecCapabilitiesAndControl; - ULONG SecHeaderLog[4]; -} PCI_EXPRESS_BRIDGE_AER_CAPABILITY, *PPCI_EXPRESS_BRIDGE_AER_CAPABILITY; - -typedef union _PCI_EXPRESS_SRIOV_CAPS { - struct { - ULONG VFMigrationCapable:1; - ULONG Reserved1:20; - ULONG VFMigrationInterruptNumber:11; - } DUMMYSTRUCTNAME; - ULONG AsULONG; -} PCI_EXPRESS_SRIOV_CAPS, *PPCI_EXPRESS_SRIOV_CAPS; - -typedef union _PCI_EXPRESS_SRIOV_CONTROL { - struct { - USHORT VFEnable:1; - USHORT VFMigrationEnable:1; - USHORT VFMigrationInterruptEnable:1; - USHORT VFMemorySpaceEnable:1; - USHORT ARICapableHierarchy:1; - USHORT Reserved1:11; - } DUMMYSTRUCTNAME; - USHORT AsUSHORT; -} PCI_EXPRESS_SRIOV_CONTROL, *PPCI_EXPRESS_SRIOV_CONTROL; - -typedef union _PCI_EXPRESS_SRIOV_STATUS { - struct { - USHORT VFMigrationStatus:1; - USHORT Reserved1:15; - } DUMMYSTRUCTNAME; - USHORT AsUSHORT; -} PCI_EXPRESS_SRIOV_STATUS, *PPCI_EXPRESS_SRIOV_STATUS; - -typedef union _PCI_EXPRESS_SRIOV_MIGRATION_STATE_ARRAY { - struct { - ULONG VFMigrationStateBIR:3; - ULONG VFMigrationStateOffset:29; - } DUMMYSTRUCTNAME; - ULONG AsULONG; -} PCI_EXPRESS_SRIOV_MIGRATION_STATE_ARRAY, *PPCI_EXPRESS_SRIOV_MIGRATION_STATE_ARRAY; - -typedef struct _PCI_EXPRESS_SRIOV_CAPABILITY { - PCI_EXPRESS_ENHANCED_CAPABILITY_HEADER Header; - PCI_EXPRESS_SRIOV_CAPS SRIOVCapabilities; - PCI_EXPRESS_SRIOV_CONTROL SRIOVControl; - PCI_EXPRESS_SRIOV_STATUS SRIOVStatus; - USHORT InitialVFs; - USHORT TotalVFs; - USHORT NumVFs; - UCHAR FunctionDependencyLink; - UCHAR RsvdP1; - USHORT FirstVFOffset; - USHORT VFStride; - USHORT RsvdP2; - USHORT VFDeviceId; - ULONG SupportedPageSizes; - ULONG SystemPageSize; - ULONG BaseAddresses[PCI_TYPE0_ADDRESSES]; - PCI_EXPRESS_SRIOV_MIGRATION_STATE_ARRAY VFMigrationStateArrayOffset; -} PCI_EXPRESS_SRIOV_CAPABILITY, *PPCI_EXPRESS_SRIOV_CAPABILITY; - -/* PCI device classes */ -#define PCI_CLASS_PRE_20 0x00 -#define PCI_CLASS_MASS_STORAGE_CTLR 0x01 -#define PCI_CLASS_NETWORK_CTLR 0x02 -#define PCI_CLASS_DISPLAY_CTLR 0x03 -#define PCI_CLASS_MULTIMEDIA_DEV 0x04 -#define PCI_CLASS_MEMORY_CTLR 0x05 -#define PCI_CLASS_BRIDGE_DEV 0x06 -#define PCI_CLASS_SIMPLE_COMMS_CTLR 0x07 -#define PCI_CLASS_BASE_SYSTEM_DEV 0x08 -#define PCI_CLASS_INPUT_DEV 0x09 -#define PCI_CLASS_DOCKING_STATION 0x0a -#define PCI_CLASS_PROCESSOR 0x0b -#define PCI_CLASS_SERIAL_BUS_CTLR 0x0c -#define PCI_CLASS_WIRELESS_CTLR 0x0d -#define PCI_CLASS_INTELLIGENT_IO_CTLR 0x0e -#define PCI_CLASS_SATELLITE_COMMS_CTLR 0x0f -#define PCI_CLASS_ENCRYPTION_DECRYPTION 0x10 -#define PCI_CLASS_DATA_ACQ_SIGNAL_PROC 0x11 -#define PCI_CLASS_NOT_DEFINED 0xff - -/* PCI device subclasses for class 0 */ -#define PCI_SUBCLASS_PRE_20_NON_VGA 0x00 -#define PCI_SUBCLASS_PRE_20_VGA 0x01 - -/* PCI device subclasses for class 1 (mass storage controllers)*/ -#define PCI_SUBCLASS_MSC_SCSI_BUS_CTLR 0x00 -#define PCI_SUBCLASS_MSC_IDE_CTLR 0x01 -#define PCI_SUBCLASS_MSC_FLOPPY_CTLR 0x02 -#define PCI_SUBCLASS_MSC_IPI_CTLR 0x03 -#define PCI_SUBCLASS_MSC_RAID_CTLR 0x04 -#define PCI_SUBCLASS_MSC_OTHER 0x80 - -/* PCI device subclasses for class 2 (network controllers)*/ -#define PCI_SUBCLASS_NET_ETHERNET_CTLR 0x00 -#define PCI_SUBCLASS_NET_TOKEN_RING_CTLR 0x01 -#define PCI_SUBCLASS_NET_FDDI_CTLR 0x02 -#define PCI_SUBCLASS_NET_ATM_CTLR 0x03 -#define PCI_SUBCLASS_NET_ISDN_CTLR 0x04 -#define PCI_SUBCLASS_NET_OTHER 0x80 - -/* PCI device subclasses for class 3 (display controllers)*/ -#define PCI_SUBCLASS_VID_VGA_CTLR 0x00 -#define PCI_SUBCLASS_VID_XGA_CTLR 0x01 -#define PCI_SUBCLASS_VID_3D_CTLR 0x02 -#define PCI_SUBCLASS_VID_OTHER 0x80 - -/* PCI device subclasses for class 4 (multimedia device)*/ -#define PCI_SUBCLASS_MM_VIDEO_DEV 0x00 -#define PCI_SUBCLASS_MM_AUDIO_DEV 0x01 -#define PCI_SUBCLASS_MM_TELEPHONY_DEV 0x02 -#define PCI_SUBCLASS_MM_OTHER 0x80 - -/* PCI device subclasses for class 5 (memory controller)*/ -#define PCI_SUBCLASS_MEM_RAM 0x00 -#define PCI_SUBCLASS_MEM_FLASH 0x01 -#define PCI_SUBCLASS_MEM_OTHER 0x80 - -/* PCI device subclasses for class 6 (bridge device)*/ -#define PCI_SUBCLASS_BR_HOST 0x00 -#define PCI_SUBCLASS_BR_ISA 0x01 -#define PCI_SUBCLASS_BR_EISA 0x02 -#define PCI_SUBCLASS_BR_MCA 0x03 -#define PCI_SUBCLASS_BR_PCI_TO_PCI 0x04 -#define PCI_SUBCLASS_BR_PCMCIA 0x05 -#define PCI_SUBCLASS_BR_NUBUS 0x06 -#define PCI_SUBCLASS_BR_CARDBUS 0x07 -#define PCI_SUBCLASS_BR_RACEWAY 0x08 -#define PCI_SUBCLASS_BR_OTHER 0x80 - -#define PCI_SUBCLASS_COM_SERIAL 0x00 -#define PCI_SUBCLASS_COM_PARALLEL 0x01 -#define PCI_SUBCLASS_COM_MULTIPORT 0x02 -#define PCI_SUBCLASS_COM_MODEM 0x03 -#define PCI_SUBCLASS_COM_OTHER 0x80 - -#define PCI_SUBCLASS_SYS_INTERRUPT_CTLR 0x00 -#define PCI_SUBCLASS_SYS_DMA_CTLR 0x01 -#define PCI_SUBCLASS_SYS_SYSTEM_TIMER 0x02 -#define PCI_SUBCLASS_SYS_REAL_TIME_CLOCK 0x03 -#define PCI_SUBCLASS_SYS_GEN_HOTPLUG_CTLR 0x04 -#define PCI_SUBCLASS_SYS_SDIO_CTRL 0x05 -#define PCI_SUBCLASS_SYS_OTHER 0x80 - -#define PCI_SUBCLASS_INP_KEYBOARD 0x00 -#define PCI_SUBCLASS_INP_DIGITIZER 0x01 -#define PCI_SUBCLASS_INP_MOUSE 0x02 -#define PCI_SUBCLASS_INP_SCANNER 0x03 -#define PCI_SUBCLASS_INP_GAMEPORT 0x04 -#define PCI_SUBCLASS_INP_OTHER 0x80 - -#define PCI_SUBCLASS_DOC_GENERIC 0x00 -#define PCI_SUBCLASS_DOC_OTHER 0x80 - -#define PCI_SUBCLASS_PROC_386 0x00 -#define PCI_SUBCLASS_PROC_486 0x01 -#define PCI_SUBCLASS_PROC_PENTIUM 0x02 -#define PCI_SUBCLASS_PROC_ALPHA 0x10 -#define PCI_SUBCLASS_PROC_POWERPC 0x20 -#define PCI_SUBCLASS_PROC_COPROCESSOR 0x40 - -/* PCI device subclasses for class C (serial bus controller)*/ -#define PCI_SUBCLASS_SB_IEEE1394 0x00 -#define PCI_SUBCLASS_SB_ACCESS 0x01 -#define PCI_SUBCLASS_SB_SSA 0x02 -#define PCI_SUBCLASS_SB_USB 0x03 -#define PCI_SUBCLASS_SB_FIBRE_CHANNEL 0x04 -#define PCI_SUBCLASS_SB_SMBUS 0x05 - -#define PCI_SUBCLASS_WIRELESS_IRDA 0x00 -#define PCI_SUBCLASS_WIRELESS_CON_IR 0x01 -#define PCI_SUBCLASS_WIRELESS_RF 0x10 -#define PCI_SUBCLASS_WIRELESS_OTHER 0x80 - -#define PCI_SUBCLASS_INTIO_I2O 0x00 - -#define PCI_SUBCLASS_SAT_TV 0x01 -#define PCI_SUBCLASS_SAT_AUDIO 0x02 -#define PCI_SUBCLASS_SAT_VOICE 0x03 -#define PCI_SUBCLASS_SAT_DATA 0x04 - -#define PCI_SUBCLASS_CRYPTO_NET_COMP 0x00 -#define PCI_SUBCLASS_CRYPTO_ENTERTAINMENT 0x10 -#define PCI_SUBCLASS_CRYPTO_OTHER 0x80 - -#define PCI_SUBCLASS_DASP_DPIO 0x00 -#define PCI_SUBCLASS_DASP_OTHER 0x80 - -#define PCI_ADDRESS_IO_SPACE 0x00000001 -#define PCI_ADDRESS_MEMORY_TYPE_MASK 0x00000006 -#define PCI_ADDRESS_MEMORY_PREFETCHABLE 0x00000008 -#define PCI_ADDRESS_IO_ADDRESS_MASK 0xfffffffc -#define PCI_ADDRESS_MEMORY_ADDRESS_MASK 0xfffffff0 -#define PCI_ADDRESS_ROM_ADDRESS_MASK 0xfffff800 - -#define PCI_TYPE_32BIT 0 -#define PCI_TYPE_20BIT 2 -#define PCI_TYPE_64BIT 4 - -#define PCI_ROMADDRESS_ENABLED 0x00000001 - -#endif /* _PCI_X_ */ - -#define PCI_EXPRESS_LINK_QUIESCENT_INTERFACE_VERSION 1 - -typedef NTSTATUS -(NTAPI PCI_EXPRESS_ENTER_LINK_QUIESCENT_MODE)( - IN OUT PVOID Context); -typedef PCI_EXPRESS_ENTER_LINK_QUIESCENT_MODE *PPCI_EXPRESS_ENTER_LINK_QUIESCENT_MODE; - -typedef NTSTATUS -(NTAPI PCI_EXPRESS_EXIT_LINK_QUIESCENT_MODE)( - IN OUT PVOID Context); -typedef PCI_EXPRESS_EXIT_LINK_QUIESCENT_MODE *PPCI_EXPRESS_EXIT_LINK_QUIESCENT_MODE; - -typedef struct _PCI_EXPRESS_LINK_QUIESCENT_INTERFACE { - USHORT Size; - USHORT Version; - PVOID Context; - PINTERFACE_REFERENCE InterfaceReference; - PINTERFACE_DEREFERENCE InterfaceDereference; - PPCI_EXPRESS_ENTER_LINK_QUIESCENT_MODE PciExpressEnterLinkQuiescentMode; - PPCI_EXPRESS_EXIT_LINK_QUIESCENT_MODE PciExpressExitLinkQuiescentMode; -} PCI_EXPRESS_LINK_QUIESCENT_INTERFACE, *PPCI_EXPRESS_LINK_QUIESCENT_INTERFACE; - -#define PCI_EXPRESS_ROOT_PORT_INTERFACE_VERSION 1 - -typedef ULONG -(NTAPI *PPCI_EXPRESS_ROOT_PORT_READ_CONFIG_SPACE)( - IN PVOID Context, - OUT PVOID Buffer, - IN ULONG Offset, - IN ULONG Length); - -typedef ULONG -(NTAPI *PPCI_EXPRESS_ROOT_PORT_WRITE_CONFIG_SPACE)( - IN PVOID Context, - IN PVOID Buffer, - IN ULONG Offset, - IN ULONG Length); - -typedef struct _PCI_EXPRESS_ROOT_PORT_INTERFACE { - USHORT Size; - USHORT Version; - PVOID Context; - PINTERFACE_REFERENCE InterfaceReference; - PINTERFACE_DEREFERENCE InterfaceDereference; - PPCI_EXPRESS_ROOT_PORT_READ_CONFIG_SPACE ReadConfigSpace; - PPCI_EXPRESS_ROOT_PORT_WRITE_CONFIG_SPACE WriteConfigSpace; -} PCI_EXPRESS_ROOT_PORT_INTERFACE, *PPCI_EXPRESS_ROOT_PORT_INTERFACE; - -#define PCI_MSIX_TABLE_CONFIG_INTERFACE_VERSION 1 - -typedef NTSTATUS -(NTAPI PCI_MSIX_SET_ENTRY)( - IN PVOID Context, - IN ULONG TableEntry, - IN ULONG MessageNumber); -typedef PCI_MSIX_SET_ENTRY *PPCI_MSIX_SET_ENTRY; - -typedef NTSTATUS -(NTAPI PCI_MSIX_MASKUNMASK_ENTRY)( - IN PVOID Context, - IN ULONG TableEntry); -typedef PCI_MSIX_MASKUNMASK_ENTRY *PPCI_MSIX_MASKUNMASK_ENTRY; - -typedef NTSTATUS -(NTAPI PCI_MSIX_GET_ENTRY)( - IN PVOID Context, - IN ULONG TableEntry, - OUT PULONG MessageNumber, - OUT PBOOLEAN Masked); -typedef PCI_MSIX_GET_ENTRY *PPCI_MSIX_GET_ENTRY; - -typedef NTSTATUS -(NTAPI PCI_MSIX_GET_TABLE_SIZE)( - IN PVOID Context, - OUT PULONG TableSize); -typedef PCI_MSIX_GET_TABLE_SIZE *PPCI_MSIX_GET_TABLE_SIZE; - -typedef struct _PCI_MSIX_TABLE_CONFIG_INTERFACE { - USHORT Size; - USHORT Version; - PVOID Context; - PINTERFACE_REFERENCE InterfaceReference; - PINTERFACE_DEREFERENCE InterfaceDereference; - PPCI_MSIX_SET_ENTRY SetTableEntry; - PPCI_MSIX_MASKUNMASK_ENTRY MaskTableEntry; - PPCI_MSIX_MASKUNMASK_ENTRY UnmaskTableEntry; - PPCI_MSIX_GET_ENTRY GetTableEntry; - PPCI_MSIX_GET_TABLE_SIZE GetTableSize; -} PCI_MSIX_TABLE_CONFIG_INTERFACE, *PPCI_MSIX_TABLE_CONFIG_INTERFACE; - -#define PCI_MSIX_TABLE_CONFIG_MINIMUM_SIZE \ - RTL_SIZEOF_THROUGH_FIELD(PCI_MSIX_TABLE_CONFIG_INTERFACE, UnmaskTableEntry) -$endif -$if (_NTDDK_) - -#ifndef _ARC_DDK_ -#define _ARC_DDK_ -typedef enum _CONFIGURATION_TYPE { - ArcSystem, - CentralProcessor, - FloatingPointProcessor, - PrimaryIcache, - PrimaryDcache, - SecondaryIcache, - SecondaryDcache, - SecondaryCache, - EisaAdapter, - TcAdapter, - ScsiAdapter, - DtiAdapter, - MultiFunctionAdapter, - DiskController, - TapeController, - CdromController, - WormController, - SerialController, - NetworkController, - DisplayController, - ParallelController, - PointerController, - KeyboardController, - AudioController, - OtherController, - DiskPeripheral, - FloppyDiskPeripheral, - TapePeripheral, - ModemPeripheral, - MonitorPeripheral, - PrinterPeripheral, - PointerPeripheral, - KeyboardPeripheral, - TerminalPeripheral, - OtherPeripheral, - LinePeripheral, - NetworkPeripheral, - SystemMemory, - DockingInformation, - RealModeIrqRoutingTable, - RealModePCIEnumeration, - MaximumType -} CONFIGURATION_TYPE, *PCONFIGURATION_TYPE; -#endif /* !_ARC_DDK_ */ - -/* -** IRP function codes -*/ - -#define IRP_MN_QUERY_DIRECTORY 0x01 -#define IRP_MN_NOTIFY_CHANGE_DIRECTORY 0x02 - -#define IRP_MN_USER_FS_REQUEST 0x00 -#define IRP_MN_MOUNT_VOLUME 0x01 -#define IRP_MN_VERIFY_VOLUME 0x02 -#define IRP_MN_LOAD_FILE_SYSTEM 0x03 -#define IRP_MN_TRACK_LINK 0x04 -#define IRP_MN_KERNEL_CALL 0x04 - -#define IRP_MN_LOCK 0x01 -#define IRP_MN_UNLOCK_SINGLE 0x02 -#define IRP_MN_UNLOCK_ALL 0x03 -#define IRP_MN_UNLOCK_ALL_BY_KEY 0x04 - -#define IRP_MN_FLUSH_AND_PURGE 0x01 - -#define IRP_MN_NORMAL 0x00 -#define IRP_MN_DPC 0x01 -#define IRP_MN_MDL 0x02 -#define IRP_MN_COMPLETE 0x04 -#define IRP_MN_COMPRESSED 0x08 - -#define IRP_MN_MDL_DPC (IRP_MN_MDL | IRP_MN_DPC) -#define IRP_MN_COMPLETE_MDL (IRP_MN_COMPLETE | IRP_MN_MDL) -#define IRP_MN_COMPLETE_MDL_DPC (IRP_MN_COMPLETE_MDL | IRP_MN_DPC) - -#define IRP_MN_QUERY_LEGACY_BUS_INFORMATION 0x18 - -#define IO_CHECK_CREATE_PARAMETERS 0x0200 -#define IO_ATTACH_DEVICE 0x0400 -#define IO_IGNORE_SHARE_ACCESS_CHECK 0x0800 - -typedef -NTSTATUS -(NTAPI *PIO_QUERY_DEVICE_ROUTINE)( - IN PVOID Context, - IN PUNICODE_STRING PathName, - IN INTERFACE_TYPE BusType, - IN ULONG BusNumber, - IN PKEY_VALUE_FULL_INFORMATION *BusInformation, - IN CONFIGURATION_TYPE ControllerType, - IN ULONG ControllerNumber, - IN PKEY_VALUE_FULL_INFORMATION *ControllerInformation, - IN CONFIGURATION_TYPE PeripheralType, - IN ULONG PeripheralNumber, - IN PKEY_VALUE_FULL_INFORMATION *PeripheralInformation); - -typedef enum _IO_QUERY_DEVICE_DATA_FORMAT { - IoQueryDeviceIdentifier = 0, - IoQueryDeviceConfigurationData, - IoQueryDeviceComponentInformation, - IoQueryDeviceMaxData -} IO_QUERY_DEVICE_DATA_FORMAT, *PIO_QUERY_DEVICE_DATA_FORMAT; - -typedef VOID -(NTAPI *PDRIVER_REINITIALIZE)( - IN struct _DRIVER_OBJECT *DriverObject, - IN PVOID Context OPTIONAL, - IN ULONG Count); - -typedef struct _CONTROLLER_OBJECT { - CSHORT Type; - CSHORT Size; - PVOID ControllerExtension; - KDEVICE_QUEUE DeviceWaitQueue; - ULONG Spare1; - LARGE_INTEGER Spare2; -} CONTROLLER_OBJECT, *PCONTROLLER_OBJECT; - -#define DRVO_REINIT_REGISTERED 0x00000008 -#define DRVO_INITIALIZED 0x00000010 -#define DRVO_BOOTREINIT_REGISTERED 0x00000020 -#define DRVO_LEGACY_RESOURCES 0x00000040 - -typedef struct _CONFIGURATION_INFORMATION { - ULONG DiskCount; - ULONG FloppyCount; - ULONG CdRomCount; - ULONG TapeCount; - ULONG ScsiPortCount; - ULONG SerialCount; - ULONG ParallelCount; - BOOLEAN AtDiskPrimaryAddressClaimed; - BOOLEAN AtDiskSecondaryAddressClaimed; - ULONG Version; - ULONG MediumChangerCount; -} CONFIGURATION_INFORMATION, *PCONFIGURATION_INFORMATION; - -typedef struct _DISK_SIGNATURE { - ULONG PartitionStyle; - _ANONYMOUS_UNION union { - struct { - ULONG Signature; - ULONG CheckSum; - } Mbr; - struct { - GUID DiskId; - } Gpt; - } DUMMYUNIONNAME; -} DISK_SIGNATURE, *PDISK_SIGNATURE; - -typedef struct _TXN_PARAMETER_BLOCK { - USHORT Length; - USHORT TxFsContext; - PVOID TransactionObject; -} TXN_PARAMETER_BLOCK, *PTXN_PARAMETER_BLOCK; - -#define TXF_MINIVERSION_DEFAULT_VIEW (0xFFFE) - -typedef struct _IO_DRIVER_CREATE_CONTEXT { - CSHORT Size; - struct _ECP_LIST *ExtraCreateParameter; - PVOID DeviceObjectHint; - PTXN_PARAMETER_BLOCK TxnParameters; -} IO_DRIVER_CREATE_CONTEXT, *PIO_DRIVER_CREATE_CONTEXT; - -typedef struct _AGP_TARGET_BUS_INTERFACE_STANDARD { - USHORT Size; - USHORT Version; - PVOID Context; - PINTERFACE_REFERENCE InterfaceReference; - PINTERFACE_DEREFERENCE InterfaceDereference; - PGET_SET_DEVICE_DATA SetBusData; - PGET_SET_DEVICE_DATA GetBusData; - UCHAR CapabilityID; -} AGP_TARGET_BUS_INTERFACE_STANDARD, *PAGP_TARGET_BUS_INTERFACE_STANDARD; - -typedef NTSTATUS -(NTAPI *PGET_LOCATION_STRING)( - IN OUT PVOID Context OPTIONAL, - OUT PWCHAR *LocationStrings); - -typedef struct _PNP_LOCATION_INTERFACE { - USHORT Size; - USHORT Version; - PVOID Context; - PINTERFACE_REFERENCE InterfaceReference; - PINTERFACE_DEREFERENCE InterfaceDereference; - PGET_LOCATION_STRING GetLocationString; -} PNP_LOCATION_INTERFACE, *PPNP_LOCATION_INTERFACE; - -typedef enum _ARBITER_ACTION { - ArbiterActionTestAllocation, - ArbiterActionRetestAllocation, - ArbiterActionCommitAllocation, - ArbiterActionRollbackAllocation, - ArbiterActionQueryAllocatedResources, - ArbiterActionWriteReservedResources, - ArbiterActionQueryConflict, - ArbiterActionQueryArbitrate, - ArbiterActionAddReserved, - ArbiterActionBootAllocation -} ARBITER_ACTION, *PARBITER_ACTION; - -typedef struct _ARBITER_CONFLICT_INFO { - PDEVICE_OBJECT OwningObject; - ULONGLONG Start; - ULONGLONG End; -} ARBITER_CONFLICT_INFO, *PARBITER_CONFLICT_INFO; - -typedef struct _ARBITER_TEST_ALLOCATION_PARAMETERS { - IN OUT PLIST_ENTRY ArbitrationList; - IN ULONG AllocateFromCount; - IN PCM_PARTIAL_RESOURCE_DESCRIPTOR AllocateFrom; -} ARBITER_TEST_ALLOCATION_PARAMETERS, *PARBITER_TEST_ALLOCATION_PARAMETERS; - -typedef struct _ARBITER_RETEST_ALLOCATION_PARAMETERS { - IN OUT PLIST_ENTRY ArbitrationList; - IN ULONG AllocateFromCount; - IN PCM_PARTIAL_RESOURCE_DESCRIPTOR AllocateFrom; -} ARBITER_RETEST_ALLOCATION_PARAMETERS, *PARBITER_RETEST_ALLOCATION_PARAMETERS; - -typedef struct _ARBITER_BOOT_ALLOCATION_PARAMETERS { - IN OUT PLIST_ENTRY ArbitrationList; -} ARBITER_BOOT_ALLOCATION_PARAMETERS, *PARBITER_BOOT_ALLOCATION_PARAMETERS; - -typedef struct _ARBITER_QUERY_ALLOCATED_RESOURCES_PARAMETERS { - OUT PCM_PARTIAL_RESOURCE_LIST *AllocatedResources; -} ARBITER_QUERY_ALLOCATED_RESOURCES_PARAMETERS, *PARBITER_QUERY_ALLOCATED_RESOURCES_PARAMETERS; - -typedef struct _ARBITER_QUERY_CONFLICT_PARAMETERS { - IN PDEVICE_OBJECT PhysicalDeviceObject; - IN PIO_RESOURCE_DESCRIPTOR ConflictingResource; - OUT PULONG ConflictCount; - OUT PARBITER_CONFLICT_INFO *Conflicts; -} ARBITER_QUERY_CONFLICT_PARAMETERS, *PARBITER_QUERY_CONFLICT_PARAMETERS; - -typedef struct _ARBITER_QUERY_ARBITRATE_PARAMETERS { - IN PLIST_ENTRY ArbitrationList; -} ARBITER_QUERY_ARBITRATE_PARAMETERS, *PARBITER_QUERY_ARBITRATE_PARAMETERS; - -typedef struct _ARBITER_ADD_RESERVED_PARAMETERS { - IN PDEVICE_OBJECT ReserveDevice; -} ARBITER_ADD_RESERVED_PARAMETERS, *PARBITER_ADD_RESERVED_PARAMETERS; - -typedef struct _ARBITER_PARAMETERS { - union { - ARBITER_TEST_ALLOCATION_PARAMETERS TestAllocation; - ARBITER_RETEST_ALLOCATION_PARAMETERS RetestAllocation; - ARBITER_BOOT_ALLOCATION_PARAMETERS BootAllocation; - ARBITER_QUERY_ALLOCATED_RESOURCES_PARAMETERS QueryAllocatedResources; - ARBITER_QUERY_CONFLICT_PARAMETERS QueryConflict; - ARBITER_QUERY_ARBITRATE_PARAMETERS QueryArbitrate; - ARBITER_ADD_RESERVED_PARAMETERS AddReserved; - } Parameters; -} ARBITER_PARAMETERS, *PARBITER_PARAMETERS; - -typedef enum _ARBITER_REQUEST_SOURCE { - ArbiterRequestUndefined = -1, - ArbiterRequestLegacyReported, - ArbiterRequestHalReported, - ArbiterRequestLegacyAssigned, - ArbiterRequestPnpDetected, - ArbiterRequestPnpEnumerated -} ARBITER_REQUEST_SOURCE; - -typedef enum _ARBITER_RESULT { - ArbiterResultUndefined = -1, - ArbiterResultSuccess, - ArbiterResultExternalConflict, - ArbiterResultNullRequest -} ARBITER_RESULT; - -#define ARBITER_FLAG_BOOT_CONFIG 0x00000001 - -typedef struct _ARBITER_LIST_ENTRY { - LIST_ENTRY ListEntry; - ULONG AlternativeCount; - PIO_RESOURCE_DESCRIPTOR Alternatives; - PDEVICE_OBJECT PhysicalDeviceObject; - ARBITER_REQUEST_SOURCE RequestSource; - ULONG Flags; - LONG_PTR WorkSpace; - INTERFACE_TYPE InterfaceType; - ULONG SlotNumber; - ULONG BusNumber; - PCM_PARTIAL_RESOURCE_DESCRIPTOR Assignment; - PIO_RESOURCE_DESCRIPTOR SelectedAlternative; - ARBITER_RESULT Result; -} ARBITER_LIST_ENTRY, *PARBITER_LIST_ENTRY; - -typedef NTSTATUS -(NTAPI *PARBITER_HANDLER)( - IN OUT PVOID Context, - IN ARBITER_ACTION Action, - IN OUT PARBITER_PARAMETERS Parameters); - -#define ARBITER_PARTIAL 0x00000001 - -typedef struct _ARBITER_INTERFACE { - USHORT Size; - USHORT Version; - PVOID Context; - PINTERFACE_REFERENCE InterfaceReference; - PINTERFACE_DEREFERENCE InterfaceDereference; - PARBITER_HANDLER ArbiterHandler; - ULONG Flags; -} ARBITER_INTERFACE, *PARBITER_INTERFACE; - -typedef enum _RESOURCE_TRANSLATION_DIRECTION { - TranslateChildToParent, - TranslateParentToChild -} RESOURCE_TRANSLATION_DIRECTION; - -typedef NTSTATUS -(NTAPI *PTRANSLATE_RESOURCE_HANDLER)( - IN OUT PVOID Context OPTIONAL, - IN PCM_PARTIAL_RESOURCE_DESCRIPTOR Source, - IN RESOURCE_TRANSLATION_DIRECTION Direction, - IN ULONG AlternativesCount OPTIONAL, - IN IO_RESOURCE_DESCRIPTOR Alternatives[], - IN PDEVICE_OBJECT PhysicalDeviceObject, - OUT PCM_PARTIAL_RESOURCE_DESCRIPTOR Target); - -typedef NTSTATUS -(NTAPI *PTRANSLATE_RESOURCE_REQUIREMENTS_HANDLER)( - IN OUT PVOID Context OPTIONAL, - IN PIO_RESOURCE_DESCRIPTOR Source, - IN PDEVICE_OBJECT PhysicalDeviceObject, - OUT PULONG TargetCount, - OUT PIO_RESOURCE_DESCRIPTOR *Target); - -typedef struct _TRANSLATOR_INTERFACE { - USHORT Size; - USHORT Version; - PVOID Context; - PINTERFACE_REFERENCE InterfaceReference; - PINTERFACE_DEREFERENCE InterfaceDereference; - PTRANSLATE_RESOURCE_HANDLER TranslateResources; - PTRANSLATE_RESOURCE_REQUIREMENTS_HANDLER TranslateResourceRequirements; -} TRANSLATOR_INTERFACE, *PTRANSLATOR_INTERFACE; - -typedef struct _PCI_AGP_CAPABILITY { - PCI_CAPABILITIES_HEADER Header; - USHORT Minor:4; - USHORT Major:4; - USHORT Rsvd1:8; - struct _PCI_AGP_STATUS { - ULONG Rate:3; - ULONG Agp3Mode:1; - ULONG FastWrite:1; - ULONG FourGB:1; - ULONG HostTransDisable:1; - ULONG Gart64:1; - ULONG ITA_Coherent:1; - ULONG SideBandAddressing:1; - ULONG CalibrationCycle:3; - ULONG AsyncRequestSize:3; - ULONG Rsvd1:1; - ULONG Isoch:1; - ULONG Rsvd2:6; - ULONG RequestQueueDepthMaximum:8; - } AGPStatus; - struct _PCI_AGP_COMMAND { - ULONG Rate:3; - ULONG Rsvd1:1; - ULONG FastWriteEnable:1; - ULONG FourGBEnable:1; - ULONG Rsvd2:1; - ULONG Gart64:1; - ULONG AGPEnable:1; - ULONG SBAEnable:1; - ULONG CalibrationCycle:3; - ULONG AsyncReqSize:3; - ULONG Rsvd3:8; - ULONG RequestQueueDepth:8; - } AGPCommand; -} PCI_AGP_CAPABILITY, *PPCI_AGP_CAPABILITY; - -typedef enum _EXTENDED_AGP_REGISTER { - IsochStatus, - AgpControl, - ApertureSize, - AperturePageSize, - GartLow, - GartHigh, - IsochCommand -} EXTENDED_AGP_REGISTER, *PEXTENDED_AGP_REGISTER; - -typedef struct _PCI_AGP_ISOCH_STATUS { - ULONG ErrorCode:2; - ULONG Rsvd1:1; - ULONG Isoch_L:3; - ULONG Isoch_Y:2; - ULONG Isoch_N:8; - ULONG Rsvd2:16; -} PCI_AGP_ISOCH_STATUS, *PPCI_AGP_ISOCH_STATUS; - -typedef struct _PCI_AGP_CONTROL { - ULONG Rsvd1:7; - ULONG GTLB_Enable:1; - ULONG AP_Enable:1; - ULONG CAL_Disable:1; - ULONG Rsvd2:22; -} PCI_AGP_CONTROL, *PPCI_AGP_CONTROL; - -typedef struct _PCI_AGP_APERTURE_PAGE_SIZE { - USHORT PageSizeMask:11; - USHORT Rsvd1:1; - USHORT PageSizeSelect:4; -} PCI_AGP_APERTURE_PAGE_SIZE, *PPCI_AGP_APERTURE_PAGE_SIZE; - -typedef struct _PCI_AGP_ISOCH_COMMAND { - USHORT Rsvd1:6; - USHORT Isoch_Y:2; - USHORT Isoch_N:8; -} PCI_AGP_ISOCH_COMMAND, *PPCI_AGP_ISOCH_COMMAND; - -typedef struct PCI_AGP_EXTENDED_CAPABILITY { - PCI_AGP_ISOCH_STATUS IsochStatus; - PCI_AGP_CONTROL AgpControl; - USHORT ApertureSize; - PCI_AGP_APERTURE_PAGE_SIZE AperturePageSize; - ULONG GartLow; - ULONG GartHigh; - PCI_AGP_ISOCH_COMMAND IsochCommand; -} PCI_AGP_EXTENDED_CAPABILITY, *PPCI_AGP_EXTENDED_CAPABILITY; - -#define PCI_AGP_RATE_1X 0x1 -#define PCI_AGP_RATE_2X 0x2 -#define PCI_AGP_RATE_4X 0x4 - -#define PCIX_MODE_CONVENTIONAL_PCI 0x0 -#define PCIX_MODE1_66MHZ 0x1 -#define PCIX_MODE1_100MHZ 0x2 -#define PCIX_MODE1_133MHZ 0x3 -#define PCIX_MODE2_266_66MHZ 0x9 -#define PCIX_MODE2_266_100MHZ 0xA -#define PCIX_MODE2_266_133MHZ 0xB -#define PCIX_MODE2_533_66MHZ 0xD -#define PCIX_MODE2_533_100MHZ 0xE -#define PCIX_MODE2_533_133MHZ 0xF - -#define PCIX_VERSION_MODE1_ONLY 0x0 -#define PCIX_VERSION_MODE2_ECC 0x1 -#define PCIX_VERSION_DUAL_MODE_ECC 0x2 - -typedef struct _PCIX_BRIDGE_CAPABILITY { - PCI_CAPABILITIES_HEADER Header; - union { - struct { - USHORT Bus64Bit:1; - USHORT Bus133MHzCapable:1; - USHORT SplitCompletionDiscarded:1; - USHORT UnexpectedSplitCompletion:1; - USHORT SplitCompletionOverrun:1; - USHORT SplitRequestDelayed:1; - USHORT BusModeFrequency:4; - USHORT Rsvd:2; - USHORT Version:2; - USHORT Bus266MHzCapable:1; - USHORT Bus533MHzCapable:1; - } DUMMYSTRUCTNAME; - USHORT AsUSHORT; - } SecondaryStatus; - union { - struct { - ULONG FunctionNumber:3; - ULONG DeviceNumber:5; - ULONG BusNumber:8; - ULONG Device64Bit:1; - ULONG Device133MHzCapable:1; - ULONG SplitCompletionDiscarded:1; - ULONG UnexpectedSplitCompletion:1; - ULONG SplitCompletionOverrun:1; - ULONG SplitRequestDelayed:1; - ULONG Rsvd:7; - ULONG DIMCapable:1; - ULONG Device266MHzCapable:1; - ULONG Device533MHzCapable:1; - } DUMMYSTRUCTNAME; - ULONG AsULONG; - } BridgeStatus; - USHORT UpstreamSplitTransactionCapacity; - USHORT UpstreamSplitTransactionLimit; - USHORT DownstreamSplitTransactionCapacity; - USHORT DownstreamSplitTransactionLimit; - union { - struct { - ULONG SelectSecondaryRegisters:1; - ULONG ErrorPresentInOtherBank:1; - ULONG AdditionalCorrectableError:1; - ULONG AdditionalUncorrectableError:1; - ULONG ErrorPhase:3; - ULONG ErrorCorrected:1; - ULONG Syndrome:8; - ULONG ErrorFirstCommand:4; - ULONG ErrorSecondCommand:4; - ULONG ErrorUpperAttributes:4; - ULONG ControlUpdateEnable:1; - ULONG Rsvd:1; - ULONG DisableSingleBitCorrection:1; - ULONG EccMode:1; - } DUMMYSTRUCTNAME; - ULONG AsULONG; - } EccControlStatus; - ULONG EccFirstAddress; - ULONG EccSecondAddress; - ULONG EccAttribute; -} PCIX_BRIDGE_CAPABILITY, *PPCIX_BRIDGE_CAPABILITY; - -typedef struct _PCI_SUBSYSTEM_IDS_CAPABILITY { - PCI_CAPABILITIES_HEADER Header; - USHORT Reserved; - USHORT SubVendorID; - USHORT SubSystemID; -} PCI_SUBSYSTEM_IDS_CAPABILITY, *PPCI_SUBSYSTEM_IDS_CAPABILITY; - -#define OSC_FIRMWARE_FAILURE 0x02 -#define OSC_UNRECOGNIZED_UUID 0x04 -#define OSC_UNRECOGNIZED_REVISION 0x08 -#define OSC_CAPABILITIES_MASKED 0x10 - -#define PCI_ROOT_BUS_OSC_METHOD_CAPABILITY_REVISION 0x01 - -typedef struct _PCI_ROOT_BUS_OSC_SUPPORT_FIELD { - union { - struct { - ULONG ExtendedConfigOpRegions:1; - ULONG ActiveStatePowerManagement:1; - ULONG ClockPowerManagement:1; - ULONG SegmentGroups:1; - ULONG MessageSignaledInterrupts:1; - ULONG WindowsHardwareErrorArchitecture:1; - ULONG Reserved:26; - } DUMMYSTRUCTNAME; - ULONG AsULONG; - } u; -} PCI_ROOT_BUS_OSC_SUPPORT_FIELD, *PPCI_ROOT_BUS_OSC_SUPPORT_FIELD; - -typedef struct _PCI_ROOT_BUS_OSC_CONTROL_FIELD { - union { - struct { - ULONG ExpressNativeHotPlug:1; - ULONG ShpcNativeHotPlug:1; - ULONG ExpressNativePME:1; - ULONG ExpressAdvancedErrorReporting:1; - ULONG ExpressCapabilityStructure:1; - ULONG Reserved:27; - } DUMMYSTRUCTNAME; - ULONG AsULONG; - } u; -} PCI_ROOT_BUS_OSC_CONTROL_FIELD, *PPCI_ROOT_BUS_OSC_CONTROL_FIELD; - -typedef enum _PCI_HARDWARE_INTERFACE { - PciConventional, - PciXMode1, - PciXMode2, - PciExpress -} PCI_HARDWARE_INTERFACE, *PPCI_HARDWARE_INTERFACE; - -typedef enum { - BusWidth32Bits, - BusWidth64Bits -} PCI_BUS_WIDTH; - -typedef struct _PCI_ROOT_BUS_HARDWARE_CAPABILITY { - PCI_HARDWARE_INTERFACE SecondaryInterface; - struct { - BOOLEAN BusCapabilitiesFound; - ULONG CurrentSpeedAndMode; - ULONG SupportedSpeedsAndModes; - BOOLEAN DeviceIDMessagingCapable; - PCI_BUS_WIDTH SecondaryBusWidth; - } DUMMYSTRUCTNAME; - PCI_ROOT_BUS_OSC_SUPPORT_FIELD OscFeatureSupport; - PCI_ROOT_BUS_OSC_CONTROL_FIELD OscControlRequest; - PCI_ROOT_BUS_OSC_CONTROL_FIELD OscControlGranted; -} PCI_ROOT_BUS_HARDWARE_CAPABILITY, *PPCI_ROOT_BUS_HARDWARE_CAPABILITY; - -typedef union _PCI_EXPRESS_CAPABILITIES_REGISTER { - struct { - USHORT CapabilityVersion:4; - USHORT DeviceType:4; - USHORT SlotImplemented:1; - USHORT InterruptMessageNumber:5; - USHORT Rsvd:2; - } DUMMYSTRUCTNAME; - USHORT AsUSHORT; -} PCI_EXPRESS_CAPABILITIES_REGISTER, *PPCI_EXPRESS_CAPABILITIES_REGISTER; - -typedef union _PCI_EXPRESS_DEVICE_CAPABILITIES_REGISTER { - struct { - ULONG MaxPayloadSizeSupported:3; - ULONG PhantomFunctionsSupported:2; - ULONG ExtendedTagSupported:1; - ULONG L0sAcceptableLatency:3; - ULONG L1AcceptableLatency:3; - ULONG Undefined:3; - ULONG RoleBasedErrorReporting:1; - ULONG Rsvd1:2; - ULONG CapturedSlotPowerLimit:8; - ULONG CapturedSlotPowerLimitScale:2; - ULONG Rsvd2:4; - } DUMMYSTRUCTNAME; - ULONG AsULONG; -} PCI_EXPRESS_DEVICE_CAPABILITIES_REGISTER, *PPCI_EXPRESS_DEVICE_CAPABILITIES_REGISTER; - -#define PCI_EXPRESS_AER_DEVICE_CONTROL_MASK 0x07; - -typedef union _PCI_EXPRESS_DEVICE_CONTROL_REGISTER { - struct { - USHORT CorrectableErrorEnable:1; - USHORT NonFatalErrorEnable:1; - USHORT FatalErrorEnable:1; - USHORT UnsupportedRequestErrorEnable:1; - USHORT EnableRelaxedOrder:1; - USHORT MaxPayloadSize:3; - USHORT ExtendedTagEnable:1; - USHORT PhantomFunctionsEnable:1; - USHORT AuxPowerEnable:1; - USHORT NoSnoopEnable:1; - USHORT MaxReadRequestSize:3; - USHORT BridgeConfigRetryEnable:1; - } DUMMYSTRUCTNAME; - USHORT AsUSHORT; -} PCI_EXPRESS_DEVICE_CONTROL_REGISTER, *PPCI_EXPRESS_DEVICE_CONTROL_REGISTER; - -#define PCI_EXPRESS_AER_DEVICE_STATUS_MASK 0x0F; - -typedef union _PCI_EXPRESS_DEVICE_STATUS_REGISTER { - struct { - USHORT CorrectableErrorDetected:1; - USHORT NonFatalErrorDetected:1; - USHORT FatalErrorDetected:1; - USHORT UnsupportedRequestDetected:1; - USHORT AuxPowerDetected:1; - USHORT TransactionsPending:1; - USHORT Rsvd:10; - } DUMMYSTRUCTNAME; - USHORT AsUSHORT; -} PCI_EXPRESS_DEVICE_STATUS_REGISTER, *PPCI_EXPRESS_DEVICE_STATUS_REGISTER; - -typedef union _PCI_EXPRESS_LINK_CAPABILITIES_REGISTER { - struct { - ULONG MaximumLinkSpeed:4; - ULONG MaximumLinkWidth:6; - ULONG ActiveStatePMSupport:2; - ULONG L0sExitLatency:3; - ULONG L1ExitLatency:3; - ULONG ClockPowerManagement:1; - ULONG SurpriseDownErrorReportingCapable:1; - ULONG DataLinkLayerActiveReportingCapable:1; - ULONG Rsvd:3; - ULONG PortNumber:8; - } DUMMYSTRUCTNAME; - ULONG AsULONG; -} PCI_EXPRESS_LINK_CAPABILITIES_REGISTER, *PPCI_EXPRESS_LINK_CAPABILITIES_REGISTER; - -typedef union _PCI_EXPRESS_LINK_CONTROL_REGISTER { - struct { - USHORT ActiveStatePMControl:2; - USHORT Rsvd1:1; - USHORT ReadCompletionBoundary:1; - USHORT LinkDisable:1; - USHORT RetrainLink:1; - USHORT CommonClockConfig:1; - USHORT ExtendedSynch:1; - USHORT EnableClockPowerManagement:1; - USHORT Rsvd2:7; - } DUMMYSTRUCTNAME; - USHORT AsUSHORT; -} PCI_EXPRESS_LINK_CONTROL_REGISTER, *PPCI_EXPRESS_LINK_CONTROL_REGISTER; - -typedef union _PCI_EXPRESS_LINK_STATUS_REGISTER { - struct { - USHORT LinkSpeed:4; - USHORT LinkWidth:6; - USHORT Undefined:1; - USHORT LinkTraining:1; - USHORT SlotClockConfig:1; - USHORT DataLinkLayerActive:1; - USHORT Rsvd:2; - } DUMMYSTRUCTNAME; - USHORT AsUSHORT; -} PCI_EXPRESS_LINK_STATUS_REGISTER, *PPCI_EXPRESS_LINK_STATUS_REGISTER; - -typedef union _PCI_EXPRESS_SLOT_CAPABILITIES_REGISTER { - struct { - ULONG AttentionButtonPresent:1; - ULONG PowerControllerPresent:1; - ULONG MRLSensorPresent:1; - ULONG AttentionIndicatorPresent:1; - ULONG PowerIndicatorPresent:1; - ULONG HotPlugSurprise:1; - ULONG HotPlugCapable:1; - ULONG SlotPowerLimit:8; - ULONG SlotPowerLimitScale:2; - ULONG ElectromechanicalLockPresent:1; - ULONG NoCommandCompletedSupport:1; - ULONG PhysicalSlotNumber:13; - } DUMMYSTRUCTNAME; - ULONG AsULONG; -} PCI_EXPRESS_SLOT_CAPABILITIES_REGISTER, *PPCI_EXPRESS_SLOT_CAPABILITIES_REGISTER; - -typedef union _PCI_EXPRESS_SLOT_CONTROL_REGISTER { - struct { - USHORT AttentionButtonEnable:1; - USHORT PowerFaultDetectEnable:1; - USHORT MRLSensorEnable:1; - USHORT PresenceDetectEnable:1; - USHORT CommandCompletedEnable:1; - USHORT HotPlugInterruptEnable:1; - USHORT AttentionIndicatorControl:2; - USHORT PowerIndicatorControl:2; - USHORT PowerControllerControl:1; - USHORT ElectromechanicalLockControl:1; - USHORT DataLinkStateChangeEnable:1; - USHORT Rsvd:3; - } DUMMYSTRUCTNAME; - USHORT AsUSHORT; -} PCI_EXPRESS_SLOT_CONTROL_REGISTER, *PPCI_EXPRESS_SLOT_CONTROL_REGISTER; - -typedef union _PCI_EXPRESS_SLOT_STATUS_REGISTER { - struct { - USHORT AttentionButtonPressed:1; - USHORT PowerFaultDetected:1; - USHORT MRLSensorChanged:1; - USHORT PresenceDetectChanged:1; - USHORT CommandCompleted:1; - USHORT MRLSensorState:1; - USHORT PresenceDetectState:1; - USHORT ElectromechanicalLockEngaged:1; - USHORT DataLinkStateChanged:1; - USHORT Rsvd:7; - } DUMMYSTRUCTNAME; - USHORT AsUSHORT; -} PCI_EXPRESS_SLOT_STATUS_REGISTER, *PPCI_EXPRESS_SLOT_STATUS_REGISTER; - -typedef union _PCI_EXPRESS_ROOT_CONTROL_REGISTER { - struct { - USHORT CorrectableSerrEnable:1; - USHORT NonFatalSerrEnable:1; - USHORT FatalSerrEnable:1; - USHORT PMEInterruptEnable:1; - USHORT CRSSoftwareVisibilityEnable:1; - USHORT Rsvd:11; - } DUMMYSTRUCTNAME; - USHORT AsUSHORT; -} PCI_EXPRESS_ROOT_CONTROL_REGISTER, *PPCI_EXPRESS_ROOT_CONTROL_REGISTER; - -typedef union _PCI_EXPRESS_ROOT_CAPABILITIES_REGISTER { - struct { - USHORT CRSSoftwareVisibility:1; - USHORT Rsvd:15; - } DUMMYSTRUCTNAME; - USHORT AsUSHORT; -} PCI_EXPRESS_ROOT_CAPABILITIES_REGISTER, *PPCI_EXPRESS_ROOT_CAPABILITIES_REGISTER; - -typedef union _PCI_EXPRESS_ROOT_STATUS_REGISTER { - struct { - ULONG PMERequestorId:16; - ULONG PMEStatus:1; - ULONG PMEPending:1; - ULONG Rsvd:14; - } DUMMYSTRUCTNAME; - ULONG AsULONG; -} PCI_EXPRESS_ROOT_STATUS_REGISTER, *PPCI_EXPRESS_ROOT_STATUS_REGISTER; - -typedef struct _PCI_EXPRESS_CAPABILITY { - PCI_CAPABILITIES_HEADER Header; - PCI_EXPRESS_CAPABILITIES_REGISTER ExpressCapabilities; - PCI_EXPRESS_DEVICE_CAPABILITIES_REGISTER DeviceCapabilities; - PCI_EXPRESS_DEVICE_CONTROL_REGISTER DeviceControl; - PCI_EXPRESS_DEVICE_STATUS_REGISTER DeviceStatus; - PCI_EXPRESS_LINK_CAPABILITIES_REGISTER LinkCapabilities; - PCI_EXPRESS_LINK_CONTROL_REGISTER LinkControl; - PCI_EXPRESS_LINK_STATUS_REGISTER LinkStatus; - PCI_EXPRESS_SLOT_CAPABILITIES_REGISTER SlotCapabilities; - PCI_EXPRESS_SLOT_CONTROL_REGISTER SlotControl; - PCI_EXPRESS_SLOT_STATUS_REGISTER SlotStatus; - PCI_EXPRESS_ROOT_CONTROL_REGISTER RootControl; - PCI_EXPRESS_ROOT_CAPABILITIES_REGISTER RootCapabilities; - PCI_EXPRESS_ROOT_STATUS_REGISTER RootStatus; -} PCI_EXPRESS_CAPABILITY, *PPCI_EXPRESS_CAPABILITY; - -typedef enum { - MRLClosed = 0, - MRLOpen -} PCI_EXPRESS_MRL_STATE; - -typedef enum { - SlotEmpty = 0, - CardPresent -} PCI_EXPRESS_CARD_PRESENCE; - -typedef enum { - IndicatorOn = 1, - IndicatorBlink, - IndicatorOff -} PCI_EXPRESS_INDICATOR_STATE; - -typedef enum { - PowerOn = 0, - PowerOff -} PCI_EXPRESS_POWER_STATE; - -typedef enum { - L0sEntrySupport = 1, - L0sAndL1EntrySupport = 3 -} PCI_EXPRESS_ASPM_SUPPORT; - -typedef enum { - L0sAndL1EntryDisabled, - L0sEntryEnabled, - L1EntryEnabled, - L0sAndL1EntryEnabled -} PCI_EXPRESS_ASPM_CONTROL; - -typedef enum { - L0s_Below64ns = 0, - L0s_64ns_128ns, - L0s_128ns_256ns, - L0s_256ns_512ns, - L0s_512ns_1us, - L0s_1us_2us, - L0s_2us_4us, - L0s_Above4us -} PCI_EXPRESS_L0s_EXIT_LATENCY; - -typedef enum { - L1_Below1us = 0, - L1_1us_2us, - L1_2us_4us, - L1_4us_8us, - L1_8us_16us, - L1_16us_32us, - L1_32us_64us, - L1_Above64us -} PCI_EXPRESS_L1_EXIT_LATENCY; - -typedef enum { - PciExpressEndpoint = 0, - PciExpressLegacyEndpoint, - PciExpressRootPort = 4, - PciExpressUpstreamSwitchPort, - PciExpressDownstreamSwitchPort, - PciExpressToPciXBridge, - PciXToExpressBridge, - PciExpressRootComplexIntegratedEndpoint, - PciExpressRootComplexEventCollector -} PCI_EXPRESS_DEVICE_TYPE; - -typedef enum { - MaxPayload128Bytes = 0, - MaxPayload256Bytes, - MaxPayload512Bytes, - MaxPayload1024Bytes, - MaxPayload2048Bytes, - MaxPayload4096Bytes -} PCI_EXPRESS_MAX_PAYLOAD_SIZE; - -typedef union _PCI_EXPRESS_PME_REQUESTOR_ID { - struct { - USHORT FunctionNumber:3; - USHORT DeviceNumber:5; - USHORT BusNumber:8; - } DUMMYSTRUCTNAME; - USHORT AsUSHORT; -} PCI_EXPRESS_PME_REQUESTOR_ID, *PPCI_EXPRESS_PME_REQUESTOR_ID; - -#if defined(_WIN64) - -#ifndef USE_DMA_MACROS -#define USE_DMA_MACROS -#endif - -#ifndef NO_LEGACY_DRIVERS -#define NO_LEGACY_DRIVERS -#endif - -#endif /* defined(_WIN64) */ - -typedef enum _PHYSICAL_COUNTER_RESOURCE_DESCRIPTOR_TYPE { - ResourceTypeSingle = 0, - ResourceTypeRange, - ResourceTypeExtendedCounterConfiguration, - ResourceTypeOverflow, - ResourceTypeMax -} PHYSICAL_COUNTER_RESOURCE_DESCRIPTOR_TYPE; - -typedef struct _PHYSICAL_COUNTER_RESOURCE_DESCRIPTOR { - PHYSICAL_COUNTER_RESOURCE_DESCRIPTOR_TYPE Type; - ULONG Flags; - union { - ULONG CounterIndex; - ULONG ExtendedRegisterAddress; - struct { - ULONG Begin; - ULONG End; - } Range; - } u; -} PHYSICAL_COUNTER_RESOURCE_DESCRIPTOR, *PPHYSICAL_COUNTER_RESOURCE_DESCRIPTOR; - -typedef struct _PHYSICAL_COUNTER_RESOURCE_LIST { - ULONG Count; - PHYSICAL_COUNTER_RESOURCE_DESCRIPTOR Descriptors[ANYSIZE_ARRAY]; -} PHYSICAL_COUNTER_RESOURCE_LIST, *PPHYSICAL_COUNTER_RESOURCE_LIST; - -typedef VOID -(NTAPI *PciPin2Line)( - IN struct _BUS_HANDLER *BusHandler, - IN struct _BUS_HANDLER *RootHandler, - IN PCI_SLOT_NUMBER SlotNumber, - IN PPCI_COMMON_CONFIG PciData); - -typedef VOID -(NTAPI *PciLine2Pin)( - IN struct _BUS_HANDLER *BusHandler, - IN struct _BUS_HANDLER *RootHandler, - IN PCI_SLOT_NUMBER SlotNumber, - IN PPCI_COMMON_CONFIG PciNewData, - IN PPCI_COMMON_CONFIG PciOldData); - -typedef VOID -(NTAPI *PciReadWriteConfig)( - IN struct _BUS_HANDLER *BusHandler, - IN PCI_SLOT_NUMBER Slot, - IN PVOID Buffer, - IN ULONG Offset, - IN ULONG Length); - -#define PCI_DATA_TAG ' ICP' -#define PCI_DATA_VERSION 1 - -typedef struct _PCIBUSDATA { - ULONG Tag; - ULONG Version; - PciReadWriteConfig ReadConfig; - PciReadWriteConfig WriteConfig; - PciPin2Line Pin2Line; - PciLine2Pin Line2Pin; - PCI_SLOT_NUMBER ParentSlot; - PVOID Reserved[4]; -} PCIBUSDATA, *PPCIBUSDATA; - -#ifndef _PCIINTRF_X_ -#define _PCIINTRF_X_ - -typedef ULONG -(NTAPI *PCI_READ_WRITE_CONFIG)( - IN PVOID Context, - IN ULONG BusOffset, - IN ULONG Slot, - IN PVOID Buffer, - IN ULONG Offset, - IN ULONG Length); - -typedef VOID -(NTAPI *PCI_PIN_TO_LINE)( - IN PVOID Context, - IN PPCI_COMMON_CONFIG PciData); - -typedef VOID -(NTAPI *PCI_LINE_TO_PIN)( - IN PVOID Context, - IN PPCI_COMMON_CONFIG PciNewData, - IN PPCI_COMMON_CONFIG PciOldData); - -typedef VOID -(NTAPI *PCI_ROOT_BUS_CAPABILITY)( - IN PVOID Context, - OUT PPCI_ROOT_BUS_HARDWARE_CAPABILITY HardwareCapability); - -typedef VOID -(NTAPI *PCI_EXPRESS_WAKE_CONTROL)( - IN PVOID Context, - IN BOOLEAN EnableWake); - -typedef struct _PCI_BUS_INTERFACE_STANDARD { - USHORT Size; - USHORT Version; - PVOID Context; - PINTERFACE_REFERENCE InterfaceReference; - PINTERFACE_DEREFERENCE InterfaceDereference; - PCI_READ_WRITE_CONFIG ReadConfig; - PCI_READ_WRITE_CONFIG WriteConfig; - PCI_PIN_TO_LINE PinToLine; - PCI_LINE_TO_PIN LineToPin; - PCI_ROOT_BUS_CAPABILITY RootBusCapability; - PCI_EXPRESS_WAKE_CONTROL ExpressWakeControl; -} PCI_BUS_INTERFACE_STANDARD, *PPCI_BUS_INTERFACE_STANDARD; - -#define PCI_BUS_INTERFACE_STANDARD_VERSION 1 - -#endif /* _PCIINTRF_X_ */ - -#if (NTDDI_VERSION >= NTDDI_WIN7) - -#define FILE_CHARACTERISTICS_EXPECT_ORDERLY_REMOVAL_EX 0x00004000 -#define FILE_CHARACTERISTICS_EXPECT_SURPRISE_REMOVAL_EX 0x00008000 -#define FILE_CHARACTERISTICS_REMOVAL_POLICY_MASK_EX \ - (FILE_CHARACTERISTICS_EXPECT_ORDERLY_REMOVAL_EX | \ - FILE_CHARACTERISTICS_EXPECT_SURPRISE_REMOVAL_EX) - -#define FILE_CHARACTERISTICS_EXPECT_ORDERLY_REMOVAL_DEPRECATED 0x00000200 -#define FILE_CHARACTERISTICS_EXPECT_SURPRISE_REMOVAL_DEPRECATED 0x00000300 -#define FILE_CHARACTERISTICS_REMOVAL_POLICY_MASK_DEPRECATED 0x00000300 - -#else - -#define FILE_CHARACTERISTICS_EXPECT_ORDERLY_REMOVAL 0x00000200 -#define FILE_CHARACTERISTICS_EXPECT_SURPRISE_REMOVAL 0x00000300 -#define FILE_CHARACTERISTICS_REMOVAL_POLICY_MASK 0x00000300 - -#define FILE_CHARACTERISTICS_EXPECT_ORDERLY_REMOVAL_EX FILE_CHARACTERISTICS_EXPECT_ORDERLY_REMOVAL -#define FILE_CHARACTERISTICS_EXPECT_SURPRISE_REMOVAL_EX FILE_CHARACTERISTICS_EXPECT_SURPRISE_REMOVAL -#define FILE_CHARACTERISTICS_REMOVAL_POLICY_MASK_EX FILE_CHARACTERISTICS_REMOVAL_POLICY_MASK - -#endif /* (NTDDI_VERSION >= NTDDI_WIN7) */ - -#define FILE_CHARACTERISTICS_PROPAGATED ( FILE_REMOVABLE_MEDIA | \ - FILE_READ_ONLY_DEVICE | \ - FILE_FLOPPY_DISKETTE | \ - FILE_WRITE_ONCE_MEDIA | \ - FILE_DEVICE_SECURE_OPEN ) - -typedef struct _FILE_ALIGNMENT_INFORMATION { - ULONG AlignmentRequirement; -} FILE_ALIGNMENT_INFORMATION, *PFILE_ALIGNMENT_INFORMATION; - -typedef struct _FILE_NAME_INFORMATION { - ULONG FileNameLength; - WCHAR FileName[1]; -} FILE_NAME_INFORMATION, *PFILE_NAME_INFORMATION; - - -typedef struct _FILE_ATTRIBUTE_TAG_INFORMATION { - ULONG FileAttributes; - ULONG ReparseTag; -} FILE_ATTRIBUTE_TAG_INFORMATION, *PFILE_ATTRIBUTE_TAG_INFORMATION; - -typedef struct _FILE_DISPOSITION_INFORMATION { - BOOLEAN DeleteFile; -} FILE_DISPOSITION_INFORMATION, *PFILE_DISPOSITION_INFORMATION; - -typedef struct _FILE_END_OF_FILE_INFORMATION { - LARGE_INTEGER EndOfFile; -} FILE_END_OF_FILE_INFORMATION, *PFILE_END_OF_FILE_INFORMATION; - -typedef struct _FILE_VALID_DATA_LENGTH_INFORMATION { - LARGE_INTEGER ValidDataLength; -} FILE_VALID_DATA_LENGTH_INFORMATION, *PFILE_VALID_DATA_LENGTH_INFORMATION; - -typedef struct _FILE_FS_LABEL_INFORMATION { - ULONG VolumeLabelLength; - WCHAR VolumeLabel[1]; -} FILE_FS_LABEL_INFORMATION, *PFILE_FS_LABEL_INFORMATION; - -typedef struct _FILE_FS_VOLUME_INFORMATION { - LARGE_INTEGER VolumeCreationTime; - ULONG VolumeSerialNumber; - ULONG VolumeLabelLength; - BOOLEAN SupportsObjects; - WCHAR VolumeLabel[1]; -} FILE_FS_VOLUME_INFORMATION, *PFILE_FS_VOLUME_INFORMATION; - -typedef struct _FILE_FS_SIZE_INFORMATION { - LARGE_INTEGER TotalAllocationUnits; - LARGE_INTEGER AvailableAllocationUnits; - ULONG SectorsPerAllocationUnit; - ULONG BytesPerSector; -} FILE_FS_SIZE_INFORMATION, *PFILE_FS_SIZE_INFORMATION; - -typedef struct _FILE_FS_FULL_SIZE_INFORMATION { - LARGE_INTEGER TotalAllocationUnits; - LARGE_INTEGER CallerAvailableAllocationUnits; - LARGE_INTEGER ActualAvailableAllocationUnits; - ULONG SectorsPerAllocationUnit; - ULONG BytesPerSector; -} FILE_FS_FULL_SIZE_INFORMATION, *PFILE_FS_FULL_SIZE_INFORMATION; - -typedef struct _FILE_FS_OBJECTID_INFORMATION { - UCHAR ObjectId[16]; - UCHAR ExtendedInfo[48]; -} FILE_FS_OBJECTID_INFORMATION, *PFILE_FS_OBJECTID_INFORMATION; - -typedef union _FILE_SEGMENT_ELEMENT { - PVOID64 Buffer; - ULONGLONG Alignment; -}FILE_SEGMENT_ELEMENT, *PFILE_SEGMENT_ELEMENT; - -#define IOCTL_AVIO_ALLOCATE_STREAM CTL_CODE(FILE_DEVICE_AVIO, 1, METHOD_BUFFERED, FILE_SPECIAL_ACCESS) -#define IOCTL_AVIO_FREE_STREAM CTL_CODE(FILE_DEVICE_AVIO, 2, METHOD_BUFFERED, FILE_SPECIAL_ACCESS) -#define IOCTL_AVIO_MODIFY_STREAM CTL_CODE(FILE_DEVICE_AVIO, 3, METHOD_BUFFERED, FILE_SPECIAL_ACCESS) - -typedef enum _BUS_DATA_TYPE { - ConfigurationSpaceUndefined = -1, - Cmos, - EisaConfiguration, - Pos, - CbusConfiguration, - PCIConfiguration, - VMEConfiguration, - NuBusConfiguration, - PCMCIAConfiguration, - MPIConfiguration, - MPSAConfiguration, - PNPISAConfiguration, - SgiInternalConfiguration, - MaximumBusDataType -} BUS_DATA_TYPE, *PBUS_DATA_TYPE; -$endif - diff --git a/reactos/include/xdk/kdfuncs.h b/reactos/include/xdk/kdfuncs.h deleted file mode 100644 index 1817849b425..00000000000 --- a/reactos/include/xdk/kdfuncs.h +++ /dev/null @@ -1,192 +0,0 @@ -/****************************************************************************** - * Kernel Debugger Functions * - ******************************************************************************/ -$if (_NTDDK_) -NTSYSAPI -ULONG -NTAPI -DbgPrompt( - IN PCCH Prompt, - OUT PCH Response, - IN ULONG MaximumResponseLength); -$endif - -$if (_WDMDDK_) -#ifndef _DBGNT_ - -ULONG -__cdecl -DbgPrint( - IN PCSTR Format, - IN ...); - -#if (NTDDI_VERSION >= NTDDI_WIN2K) -NTSYSAPI -ULONG -__cdecl -DbgPrintReturnControlC( - IN PCCH Format, - IN ...); -#endif - -#if (NTDDI_VERSION >= NTDDI_WINXP) - -NTSYSAPI -ULONG -__cdecl -DbgPrintEx( - IN ULONG ComponentId, - IN ULONG Level, - IN PCSTR Format, - IN ...); - -#ifdef _VA_LIST_DEFINED - -NTSYSAPI -ULONG -NTAPI -vDbgPrintEx( - IN ULONG ComponentId, - IN ULONG Level, - IN PCCH Format, - IN va_list ap); - -NTSYSAPI -ULONG -NTAPI -vDbgPrintExWithPrefix( - IN PCCH Prefix, - IN ULONG ComponentId, - IN ULONG Level, - IN PCCH Format, - IN va_list ap); - -#endif /* _VA_LIST_DEFINED */ - -NTSYSAPI -NTSTATUS -NTAPI -DbgQueryDebugFilterState( - IN ULONG ComponentId, - IN ULONG Level); - -NTSYSAPI -NTSTATUS -NTAPI -DbgSetDebugFilterState( - IN ULONG ComponentId, - IN ULONG Level, - IN BOOLEAN State); - -#endif /* (NTDDI_VERSION >= NTDDI_WINXP) */ - -#if (NTDDI_VERSION >= NTDDI_VISTA) - -typedef VOID -(*PDEBUG_PRINT_CALLBACK)( - IN PSTRING Output, - IN ULONG ComponentId, - IN ULONG Level); - -NTSYSAPI -NTSTATUS -NTAPI -DbgSetDebugPrintCallback( - IN PDEBUG_PRINT_CALLBACK DebugPrintCallback, - IN BOOLEAN Enable); - -#endif /* (NTDDI_VERSION >= NTDDI_VISTA) */ - -#endif /* _DBGNT_ */ - -#if DBG - -#define KdPrint(_x_) DbgPrint _x_ -#define KdPrintEx(_x_) DbgPrintEx _x_ -#define vKdPrintEx(_x_) vDbgPrintEx _x_ -#define vKdPrintExWithPrefix(_x_) vDbgPrintExWithPrefix _x_ -#define KdBreakPoint() DbgBreakPoint() -#define KdBreakPointWithStatus(s) DbgBreakPointWithStatus(s) - -#else /* !DBG */ - -#define KdPrint(_x_) -#define KdPrintEx(_x_) -#define vKdPrintEx(_x_) -#define vKdPrintExWithPrefix(_x_) -#define KdBreakPoint() -#define KdBreakPointWithStatus(s) - -#endif /* !DBG */ - -#if defined(__GNUC__) - -extern NTKERNELAPI BOOLEAN KdDebuggerNotPresent; -extern NTKERNELAPI BOOLEAN KdDebuggerEnabled; -#define KD_DEBUGGER_ENABLED KdDebuggerEnabled -#define KD_DEBUGGER_NOT_PRESENT KdDebuggerNotPresent - -#elif defined(_NTDDK_) || defined(_NTIFS_) || defined(_NTHAL_) || defined(_WDMDDK_) || defined(_NTOSP_) - -extern NTKERNELAPI PBOOLEAN KdDebuggerNotPresent; -extern NTKERNELAPI PBOOLEAN KdDebuggerEnabled; -#define KD_DEBUGGER_ENABLED *KdDebuggerEnabled -#define KD_DEBUGGER_NOT_PRESENT *KdDebuggerNotPresent - -#else - -extern BOOLEAN KdDebuggerNotPresent; -extern BOOLEAN KdDebuggerEnabled; -#define KD_DEBUGGER_ENABLED KdDebuggerEnabled -#define KD_DEBUGGER_NOT_PRESENT KdDebuggerNotPresent - -#endif - -#if (NTDDI_VERSION >= NTDDI_WIN2K) - -NTKERNELAPI -NTSTATUS -NTAPI -KdDisableDebugger(VOID); - -NTKERNELAPI -NTSTATUS -NTAPI -KdEnableDebugger(VOID); - -#if (_MSC_FULL_VER >= 150030729) && !defined(IMPORT_NATIVE_DBG_BREAK) -#define DbgBreakPoint __debugbreak -#else -VOID -NTAPI -DbgBreakPoint(VOID); -#endif - -NTSYSAPI -VOID -NTAPI -DbgBreakPointWithStatus( - IN ULONG Status); - -#endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */ - -#if (NTDDI_VERSION >= NTDDI_WS03) -NTKERNELAPI -BOOLEAN -NTAPI -KdRefreshDebuggerNotPresent(VOID); -#endif - -#if (NTDDI_VERSION >= NTDDI_WS03SP1) -NTKERNELAPI -NTSTATUS -NTAPI -KdChangeOption( - IN KD_OPTION Option, - IN ULONG InBufferBytes OPTIONAL, - IN PVOID InBuffer, - IN ULONG OutBufferBytes OPTIONAL, - OUT PVOID OutBuffer, - OUT PULONG OutBufferNeeded OPTIONAL); -#endif -$endif diff --git a/reactos/include/xdk/kdtypes.h b/reactos/include/xdk/kdtypes.h deleted file mode 100644 index b030a2349f0..00000000000 --- a/reactos/include/xdk/kdtypes.h +++ /dev/null @@ -1,94 +0,0 @@ -/****************************************************************************** - * Kernel Debugger Types * - ******************************************************************************/ -$if (_NTDDK_) -typedef struct _DEBUG_DEVICE_ADDRESS { - UCHAR Type; - BOOLEAN Valid; - UCHAR Reserved[2]; - PUCHAR TranslatedAddress; - ULONG Length; -} DEBUG_DEVICE_ADDRESS, *PDEBUG_DEVICE_ADDRESS; - -typedef struct _DEBUG_MEMORY_REQUIREMENTS { - PHYSICAL_ADDRESS Start; - PHYSICAL_ADDRESS MaxEnd; - PVOID VirtualAddress; - ULONG Length; - BOOLEAN Cached; - BOOLEAN Aligned; -} DEBUG_MEMORY_REQUIREMENTS, *PDEBUG_MEMORY_REQUIREMENTS; - -typedef struct _DEBUG_DEVICE_DESCRIPTOR { - ULONG Bus; - ULONG Slot; - USHORT Segment; - USHORT VendorID; - USHORT DeviceID; - UCHAR BaseClass; - UCHAR SubClass; - UCHAR ProgIf; - BOOLEAN Initialized; - BOOLEAN Configured; - DEBUG_DEVICE_ADDRESS BaseAddress[6]; - DEBUG_MEMORY_REQUIREMENTS Memory; -} DEBUG_DEVICE_DESCRIPTOR, *PDEBUG_DEVICE_DESCRIPTOR; - -typedef NTSTATUS -(NTAPI *pKdSetupPciDeviceForDebugging)( - IN PVOID LoaderBlock OPTIONAL, - IN OUT PDEBUG_DEVICE_DESCRIPTOR PciDevice); - -typedef NTSTATUS -(NTAPI *pKdReleasePciDeviceForDebugging)( - IN OUT PDEBUG_DEVICE_DESCRIPTOR PciDevice); - -typedef PVOID -(NTAPI *pKdGetAcpiTablePhase0)( - IN struct _LOADER_PARAMETER_BLOCK *LoaderBlock, - IN ULONG Signature); - -typedef VOID -(NTAPI *pKdCheckPowerButton)( - VOID); - -#if (NTDDI_VERSION >= NTDDI_VISTA) -typedef PVOID -(NTAPI *pKdMapPhysicalMemory64)( - IN PHYSICAL_ADDRESS PhysicalAddress, - IN ULONG NumberPages, - IN BOOLEAN FlushCurrentTLB); - -typedef VOID -(NTAPI *pKdUnmapVirtualAddress)( - IN PVOID VirtualAddress, - IN ULONG NumberPages, - IN BOOLEAN FlushCurrentTLB); -#else -typedef PVOID -(NTAPI *pKdMapPhysicalMemory64)( - IN PHYSICAL_ADDRESS PhysicalAddress, - IN ULONG NumberPages); - -typedef VOID -(NTAPI *pKdUnmapVirtualAddress)( - IN PVOID VirtualAddress, - IN ULONG NumberPages); -#endif - -typedef ULONG -(NTAPI *pKdGetPciDataByOffset)( - IN ULONG BusNumber, - IN ULONG SlotNumber, - OUT PVOID Buffer, - IN ULONG Offset, - IN ULONG Length); - -typedef ULONG -(NTAPI *pKdSetPciDataByOffset)( - IN ULONG BusNumber, - IN ULONG SlotNumber, - IN PVOID Buffer, - IN ULONG Offset, - IN ULONG Length); -$endif diff --git a/reactos/include/xdk/kefuncs.h b/reactos/include/xdk/kefuncs.h deleted file mode 100644 index 716ee872db8..00000000000 --- a/reactos/include/xdk/kefuncs.h +++ /dev/null @@ -1,1075 +0,0 @@ -/****************************************************************************** - * Kernel Functions * - ******************************************************************************/ -$if (_NTDDK_) -NTKERNELAPI -VOID -FASTCALL -KeInvalidateRangeAllCaches( - IN PVOID BaseAddress, - IN ULONG Length); -$endif - -$if (_WDMDDK_) -NTKERNELAPI -VOID -NTAPI -KeInitializeEvent( - OUT PRKEVENT Event, - IN EVENT_TYPE Type, - IN BOOLEAN State); - -NTKERNELAPI -VOID -NTAPI -KeClearEvent( - IN OUT PRKEVENT Event); -$endif - -#if (NTDDI_VERSION >= NTDDI_WIN2K) - -$if (_NTDDK_) -NTKERNELAPI -VOID -NTAPI -KeSetImportanceDpc( - IN OUT PRKDPC Dpc, - IN KDPC_IMPORTANCE Importance); - -NTKERNELAPI -LONG -NTAPI -KePulseEvent( - IN OUT PRKEVENT Event, - IN KPRIORITY Increment, - IN BOOLEAN Wait); - -NTKERNELAPI -LONG -NTAPI -KeSetBasePriorityThread( - IN OUT PRKTHREAD Thread, - IN LONG Increment); - -NTKERNELAPI -VOID -NTAPI -KeEnterCriticalRegion(VOID); - -NTKERNELAPI -VOID -NTAPI -KeLeaveCriticalRegion(VOID); - -NTKERNELAPI -DECLSPEC_NORETURN -VOID -NTAPI -KeBugCheck( - IN ULONG BugCheckCode); -$endif /* _NTDDK_ */ - -$if (_WDMDDK_) -#if defined(_NTDDK_) || defined(_NTIFS_) -NTKERNELAPI -VOID -NTAPI -ProbeForRead( - IN CONST VOID *Address, /* CONST is added */ - IN SIZE_T Length, - IN ULONG Alignment); -#endif /* defined(_NTDDK_) || defined(_NTIFS_) */ - -NTKERNELAPI -VOID -NTAPI -ProbeForWrite( - IN PVOID Address, - IN SIZE_T Length, - IN ULONG Alignment); - -$endif /* _WDMDDK_ */ - -#if defined(SINGLE_GROUP_LEGACY_API) - -$if (_WDMDDK_) -NTKERNELAPI -VOID -NTAPI -KeRevertToUserAffinityThread(VOID); - -NTKERNELAPI -VOID -NTAPI -KeSetSystemAffinityThread( - IN KAFFINITY Affinity); - -NTKERNELAPI -VOID -NTAPI -KeSetTargetProcessorDpc( - IN OUT PRKDPC Dpc, - IN CCHAR Number); - -NTKERNELAPI -KAFFINITY -NTAPI -KeQueryActiveProcessors(VOID); -$endif - -$if (_NTDDK_) -NTKERNELAPI -VOID -NTAPI -KeSetTargetProcessorDpc( - IN OUT PRKDPC Dpc, - IN CCHAR Number); - -NTKERNELAPI -KAFFINITY -NTAPI -KeQueryActiveProcessors(VOID); -$endif - -#endif /* defined(SINGLE_GROUP_LEGACY_API) */ - -$if (_WDMDDK_) -#if !defined(_M_AMD64) -NTKERNELAPI -ULONGLONG -NTAPI -KeQueryInterruptTime(VOID); - -NTKERNELAPI -VOID -NTAPI -KeQuerySystemTime( - OUT PLARGE_INTEGER CurrentTime); -#endif /* !_M_AMD64 */ - -#if !defined(_X86_) -NTKERNELAPI -KIRQL -NTAPI -KeAcquireSpinLockRaiseToDpc( - IN OUT PKSPIN_LOCK SpinLock); - -#define KeAcquireSpinLock(SpinLock, OldIrql) \ - *(OldIrql) = KeAcquireSpinLockRaiseToDpc(SpinLock) - -NTKERNELAPI -VOID -NTAPI -KeAcquireSpinLockAtDpcLevel( - IN OUT PKSPIN_LOCK SpinLock); - -NTKERNELAPI -VOID -NTAPI -KeReleaseSpinLock( - IN OUT PKSPIN_LOCK SpinLock, - IN KIRQL NewIrql); - -NTKERNELAPI -VOID -NTAPI -KeReleaseSpinLockFromDpcLevel( - IN OUT PKSPIN_LOCK SpinLock); -#endif /* !_X86_ */ - -#if defined(_X86_) && (defined(_WDM_INCLUDED_) || defined(WIN9X_COMPAT_SPINLOCK)) -NTKERNELAPI -VOID -NTAPI -KeInitializeSpinLock( - IN PKSPIN_LOCK SpinLock); -#else -FORCEINLINE -VOID -KeInitializeSpinLock(IN PKSPIN_LOCK SpinLock) -{ - /* Clear the lock */ - *SpinLock = 0; -} -#endif - -NTKERNELAPI -DECLSPEC_NORETURN -VOID -NTAPI -KeBugCheckEx( - IN ULONG BugCheckCode, - IN ULONG_PTR BugCheckParameter1, - IN ULONG_PTR BugCheckParameter2, - IN ULONG_PTR BugCheckParameter3, - IN ULONG_PTR BugCheckParameter4); - -NTKERNELAPI -BOOLEAN -NTAPI -KeCancelTimer( - IN OUT PKTIMER); - -NTKERNELAPI -NTSTATUS -NTAPI -KeDelayExecutionThread( - IN KPROCESSOR_MODE WaitMode, - IN BOOLEAN Alertable, - IN PLARGE_INTEGER Interval); - -NTKERNELAPI -BOOLEAN -NTAPI -KeDeregisterBugCheckCallback( - IN OUT PKBUGCHECK_CALLBACK_RECORD CallbackRecord); - -NTKERNELAPI -VOID -NTAPI -KeEnterCriticalRegion(VOID); - -NTKERNELAPI -VOID -NTAPI -KeInitializeDeviceQueue( - OUT PKDEVICE_QUEUE DeviceQueue); - -NTKERNELAPI -VOID -NTAPI -KeInitializeDpc( - OUT PRKDPC Dpc, - IN PKDEFERRED_ROUTINE DeferredRoutine, - IN PVOID DeferredContext OPTIONAL); - -NTKERNELAPI -VOID -NTAPI -KeInitializeMutex( - OUT PRKMUTEX Mutex, - IN ULONG Level); - -NTKERNELAPI -VOID -NTAPI -KeInitializeSemaphore( - OUT PRKSEMAPHORE Semaphore, - IN LONG Count, - IN LONG Limit); - -NTKERNELAPI -VOID -NTAPI -KeInitializeTimer( - OUT PKTIMER Timer); - -NTKERNELAPI -VOID -NTAPI -KeInitializeTimerEx( - OUT PKTIMER Timer, - IN TIMER_TYPE Type); - -NTKERNELAPI -BOOLEAN -NTAPI -KeInsertByKeyDeviceQueue( - IN OUT PKDEVICE_QUEUE DeviceQueue, - IN OUT PKDEVICE_QUEUE_ENTRY DeviceQueueEntry, - IN ULONG SortKey); - -NTKERNELAPI -BOOLEAN -NTAPI -KeInsertDeviceQueue( - IN OUT PKDEVICE_QUEUE DeviceQueue, - IN OUT PKDEVICE_QUEUE_ENTRY DeviceQueueEntry); - -NTKERNELAPI -BOOLEAN -NTAPI -KeInsertQueueDpc( - IN OUT PRKDPC Dpc, - IN PVOID SystemArgument1 OPTIONAL, - IN PVOID SystemArgument2 OPTIONAL); - -NTKERNELAPI -VOID -NTAPI -KeLeaveCriticalRegion(VOID); - -NTHALAPI -LARGE_INTEGER -NTAPI -KeQueryPerformanceCounter( - OUT PLARGE_INTEGER PerformanceFrequency OPTIONAL); - -NTKERNELAPI -KPRIORITY -NTAPI -KeQueryPriorityThread( - IN PRKTHREAD Thread); - -NTKERNELAPI -ULONG -NTAPI -KeQueryTimeIncrement(VOID); - -NTKERNELAPI -LONG -NTAPI -KeReadStateEvent( - IN PRKEVENT Event); - -NTKERNELAPI -LONG -NTAPI -KeReadStateMutex( - IN PRKMUTEX Mutex); - -NTKERNELAPI -LONG -NTAPI -KeReadStateSemaphore( - IN PRKSEMAPHORE Semaphore); - -NTKERNELAPI -BOOLEAN -NTAPI -KeReadStateTimer( - IN PKTIMER Timer); - -NTKERNELAPI -BOOLEAN -NTAPI -KeRegisterBugCheckCallback( - OUT PKBUGCHECK_CALLBACK_RECORD CallbackRecord, - IN PKBUGCHECK_CALLBACK_ROUTINE CallbackRoutine, - IN PVOID Buffer, - IN ULONG Length, - IN PUCHAR Component); - -NTKERNELAPI -LONG -NTAPI -KeReleaseMutex( - IN OUT PRKMUTEX Mutex, - IN BOOLEAN Wait); - -NTKERNELAPI -LONG -NTAPI -KeReleaseSemaphore( - IN OUT PRKSEMAPHORE Semaphore, - IN KPRIORITY Increment, - IN LONG Adjustment, - IN BOOLEAN Wait); - -NTKERNELAPI -PKDEVICE_QUEUE_ENTRY -NTAPI -KeRemoveByKeyDeviceQueue( - IN OUT PKDEVICE_QUEUE DeviceQueue, - IN ULONG SortKey); - -NTKERNELAPI -PKDEVICE_QUEUE_ENTRY -NTAPI -KeRemoveDeviceQueue( - IN OUT PKDEVICE_QUEUE DeviceQueue); - -NTKERNELAPI -BOOLEAN -NTAPI -KeRemoveEntryDeviceQueue( - IN OUT PKDEVICE_QUEUE DeviceQueue, - IN OUT PKDEVICE_QUEUE_ENTRY DeviceQueueEntry); - -NTKERNELAPI -BOOLEAN -NTAPI -KeRemoveQueueDpc( - IN OUT PRKDPC Dpc); - -NTKERNELAPI -LONG -NTAPI -KeResetEvent( - IN OUT PRKEVENT Event); - -NTKERNELAPI -LONG -NTAPI -KeSetEvent( - IN OUT PRKEVENT Event, - IN KPRIORITY Increment, - IN BOOLEAN Wait); - -NTKERNELAPI -VOID -NTAPI -KeSetImportanceDpc( - IN OUT PRKDPC Dpc, - IN KDPC_IMPORTANCE Importance); - -NTKERNELAPI -KPRIORITY -NTAPI -KeSetPriorityThread( - IN OUT PKTHREAD Thread, - IN KPRIORITY Priority); - -NTKERNELAPI -BOOLEAN -NTAPI -KeSetTimer( - IN OUT PKTIMER Timer, - IN LARGE_INTEGER DueTime, - IN PKDPC Dpc OPTIONAL); - -NTKERNELAPI -BOOLEAN -NTAPI -KeSetTimerEx( - IN OUT PKTIMER Timer, - IN LARGE_INTEGER DueTime, - IN LONG Period OPTIONAL, - IN PKDPC Dpc OPTIONAL); - -NTHALAPI -VOID -NTAPI -KeStallExecutionProcessor( - IN ULONG MicroSeconds); - -NTKERNELAPI -BOOLEAN -NTAPI -KeSynchronizeExecution( - IN OUT PKINTERRUPT Interrupt, - IN PKSYNCHRONIZE_ROUTINE SynchronizeRoutine, - IN PVOID SynchronizeContext OPTIONAL); - -NTKERNELAPI -NTSTATUS -NTAPI -KeWaitForMultipleObjects( - IN ULONG Count, - IN PVOID Object[], - IN WAIT_TYPE WaitType, - IN KWAIT_REASON WaitReason, - IN KPROCESSOR_MODE WaitMode, - IN BOOLEAN Alertable, - IN PLARGE_INTEGER Timeout OPTIONAL, - OUT PKWAIT_BLOCK WaitBlockArray OPTIONAL); - -#define KeWaitForMutexObject KeWaitForSingleObject - -NTKERNELAPI -NTSTATUS -NTAPI -KeWaitForSingleObject( - IN PVOID Object, - IN KWAIT_REASON WaitReason, - IN KPROCESSOR_MODE WaitMode, - IN BOOLEAN Alertable, - IN PLARGE_INTEGER Timeout OPTIONAL); -$endif - -#endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */ - -#if (NTDDI_VERSION >= NTDDI_WINXP) -$if (_NTDDK_) -NTKERNELAPI -BOOLEAN -NTAPI -KeAreApcsDisabled(VOID); -$endif - -$if (_WDMDDK_) -_DECL_HAL_KE_IMPORT -VOID -FASTCALL -KeAcquireInStackQueuedSpinLock( - IN OUT PKSPIN_LOCK SpinLock, - OUT PKLOCK_QUEUE_HANDLE LockHandle); - -NTKERNELAPI -VOID -FASTCALL -KeAcquireInStackQueuedSpinLockAtDpcLevel( - IN OUT PKSPIN_LOCK SpinLock, - OUT PKLOCK_QUEUE_HANDLE LockHandle); - -NTKERNELAPI -KIRQL -NTAPI -KeAcquireInterruptSpinLock( - IN OUT PKINTERRUPT Interrupt); - -NTKERNELAPI -BOOLEAN -NTAPI -KeAreApcsDisabled(VOID); - -NTKERNELAPI -ULONG -NTAPI -KeGetRecommendedSharedDataAlignment(VOID); - -NTKERNELAPI -ULONG -NTAPI -KeQueryRuntimeThread( - IN PKTHREAD Thread, - OUT PULONG UserTime); - -NTKERNELAPI -VOID -FASTCALL -KeReleaseInStackQueuedSpinLockFromDpcLevel( - IN PKLOCK_QUEUE_HANDLE LockHandle); - -NTKERNELAPI -VOID -NTAPI -KeReleaseInterruptSpinLock( - IN OUT PKINTERRUPT Interrupt, - IN KIRQL OldIrql); - -NTKERNELAPI -PKDEVICE_QUEUE_ENTRY -NTAPI -KeRemoveByKeyDeviceQueueIfBusy( - IN OUT PKDEVICE_QUEUE DeviceQueue, - IN ULONG SortKey); - -_DECL_HAL_KE_IMPORT -VOID -FASTCALL -KeReleaseInStackQueuedSpinLock( - IN PKLOCK_QUEUE_HANDLE LockHandle); -$endif - -#endif /* (NTDDI_VERSION >= NTDDI_WINXP) */ - -$if (_WDMDDK_) -#if (NTDDI_VERSION >= NTDDI_WINXPSP1) - -NTKERNELAPI -BOOLEAN -NTAPI -KeDeregisterBugCheckReasonCallback( - IN OUT PKBUGCHECK_REASON_CALLBACK_RECORD CallbackRecord); - -NTKERNELAPI -BOOLEAN -NTAPI -KeRegisterBugCheckReasonCallback( - OUT PKBUGCHECK_REASON_CALLBACK_RECORD CallbackRecord, - IN PKBUGCHECK_REASON_CALLBACK_ROUTINE CallbackRoutine, - IN KBUGCHECK_CALLBACK_REASON Reason, - IN PUCHAR Component); - -#endif /* (NTDDI_VERSION >= NTDDI_WINXPSP1) */ - -#if (NTDDI_VERSION >= NTDDI_WINXPSP2) -NTKERNELAPI -VOID -NTAPI -KeFlushQueuedDpcs(VOID); -#endif /* (NTDDI_VERSION >= NTDDI_WINXPSP2) */ -$endif /* _WDMDDK_ */ - -#if (NTDDI_VERSION >= NTDDI_WS03) - -$if (_WDMDDK_) -NTKERNELAPI -PVOID -NTAPI -KeRegisterNmiCallback( - IN PNMI_CALLBACK CallbackRoutine, - IN PVOID Context OPTIONAL); - -NTKERNELAPI -NTSTATUS -NTAPI -KeDeregisterNmiCallback( - IN PVOID Handle); - -NTKERNELAPI -VOID -NTAPI -KeInitializeThreadedDpc( - OUT PRKDPC Dpc, - IN PKDEFERRED_ROUTINE DeferredRoutine, - IN PVOID DeferredContext OPTIONAL); - -NTKERNELAPI -ULONG_PTR -NTAPI -KeIpiGenericCall( - IN PKIPI_BROADCAST_WORKER BroadcastFunction, - IN ULONG_PTR Context); - -NTKERNELAPI -KIRQL -FASTCALL -KeAcquireSpinLockForDpc( - IN OUT PKSPIN_LOCK SpinLock); - -NTKERNELAPI -VOID -FASTCALL -KeReleaseSpinLockForDpc( - IN OUT PKSPIN_LOCK SpinLock, - IN KIRQL OldIrql); - -NTKERNELAPI -BOOLEAN -FASTCALL -KeTestSpinLock( - IN PKSPIN_LOCK SpinLock); -$endif /* _WDMDDK_ */ - -$if (_NTDDK_) -NTKERNELAPI -BOOLEAN -NTAPI -KeInvalidateAllCaches(VOID); -$endif /* _NTDDK_ */ - -#endif /* (NTDDI_VERSION >= NTDDI_WS03) */ - -#if (NTDDI_VERSION >= NTDDI_WS03SP1) - -$if (_NTDDK_) -NTKERNELAPI -NTSTATUS -NTAPI -KeExpandKernelStackAndCallout( - IN PEXPAND_STACK_CALLOUT Callout, - IN PVOID Parameter OPTIONAL, - IN SIZE_T Size); - -NTKERNELAPI -VOID -NTAPI -KeEnterGuardedRegion(VOID); - -NTKERNELAPI -VOID -NTAPI -KeLeaveGuardedRegion(VOID); -$endif /* _NTDDK_ */ - -$if (_WDMDDK_) -NTKERNELAPI -BOOLEAN -FASTCALL -KeTryToAcquireSpinLockAtDpcLevel( - IN OUT PKSPIN_LOCK SpinLock); - -NTKERNELAPI -BOOLEAN -NTAPI -KeAreAllApcsDisabled(VOID); - -NTKERNELAPI -VOID -FASTCALL -KeAcquireGuardedMutex( - IN OUT PKGUARDED_MUTEX GuardedMutex); - -NTKERNELAPI -VOID -FASTCALL -KeAcquireGuardedMutexUnsafe( - IN OUT PKGUARDED_MUTEX GuardedMutex); - -NTKERNELAPI -VOID -NTAPI -KeEnterGuardedRegion(VOID); - -NTKERNELAPI -VOID -NTAPI -KeLeaveGuardedRegion(VOID); - -NTKERNELAPI -VOID -FASTCALL -KeInitializeGuardedMutex( - OUT PKGUARDED_MUTEX GuardedMutex); - -NTKERNELAPI -VOID -FASTCALL -KeReleaseGuardedMutexUnsafe( - IN OUT PKGUARDED_MUTEX GuardedMutex); - -NTKERNELAPI -VOID -FASTCALL -KeReleaseGuardedMutex( - IN OUT PKGUARDED_MUTEX GuardedMutex); - -NTKERNELAPI -BOOLEAN -FASTCALL -KeTryToAcquireGuardedMutex( - IN OUT PKGUARDED_MUTEX GuardedMutex); -$endif /* _WDMDDK_ */ - -#endif /* (NTDDI_VERSION >= NTDDI_WS03SP1) */ - -#if (NTDDI_VERSION >= NTDDI_VISTA) - -$if (_WDMDDK_) -NTKERNELAPI -VOID -FASTCALL -KeAcquireInStackQueuedSpinLockForDpc( - IN OUT PKSPIN_LOCK SpinLock, - OUT PKLOCK_QUEUE_HANDLE LockHandle); - -NTKERNELAPI -VOID -FASTCALL -KeReleaseInStackQueuedSpinLockForDpc( - IN PKLOCK_QUEUE_HANDLE LockHandle); - -NTKERNELAPI -NTSTATUS -NTAPI -KeQueryDpcWatchdogInformation( - OUT PKDPC_WATCHDOG_INFORMATION WatchdogInformation); -$endif /* _WDMDDK_ */ - -#if defined(SINGLE_GROUP_LEGACY_API) -$if (_NTDDK_) -NTKERNELAPI -ULONG -NTAPI -KeQueryActiveProcessorCount( - OUT PKAFFINITY ActiveProcessors OPTIONAL); - -NTKERNELAPI -ULONG -NTAPI -KeQueryMaximumProcessorCount(VOID); -$endif /* _NTDDK_ */ - -$if (_WDMDDK_) -NTKERNELAPI -KAFFINITY -NTAPI -KeSetSystemAffinityThreadEx( - IN KAFFINITY Affinity); - -NTKERNELAPI -VOID -NTAPI -KeRevertToUserAffinityThreadEx( - IN KAFFINITY Affinity); - -NTKERNELAPI -ULONG -NTAPI -KeQueryActiveProcessorCount( - OUT PKAFFINITY ActiveProcessors OPTIONAL); - -NTKERNELAPI -ULONG -NTAPI -KeQueryMaximumProcessorCount(VOID); -$endif /* _WDMDDK_ */ -#endif /* SINGLE_GROUP_LEGACY_API */ - -#endif /* (NTDDI_VERSION >= NTDDI_VISTA) */ - -$if (_WDMDDK_) -#if (NTDDI_VERSION >= NTDDI_WS08) - -PVOID -KeRegisterProcessorChangeCallback( - IN PPROCESSOR_CALLBACK_FUNCTION CallbackFunction, - IN PVOID CallbackContext OPTIONAL, - IN ULONG Flags); - -VOID -KeDeregisterProcessorChangeCallback( - IN PVOID CallbackHandle); - -#endif /* (NTDDI_VERSION >= NTDDI_WS08) */ -$endif /* _WDMDDK_ */ - -#if (NTDDI_VERSION >= NTDDI_WIN7) - -$if (_NTDDK_) -NTKERNELAPI -ULONG -NTAPI -KeQueryActiveProcessorCountEx( - IN USHORT GroupNumber); - -NTKERNELAPI -ULONG -NTAPI -KeQueryMaximumProcessorCountEx( - IN USHORT GroupNumber); - -NTKERNELAPI -USHORT -NTAPI -KeQueryActiveGroupCount(VOID); - -NTKERNELAPI -USHORT -NTAPI -KeQueryMaximumGroupCount(VOID); - -NTKERNELAPI -KAFFINITY -NTAPI -KeQueryGroupAffinity( - IN USHORT GroupNumber); - -NTKERNELAPI -ULONG -NTAPI -KeGetCurrentProcessorNumberEx( - OUT PPROCESSOR_NUMBER ProcNumber OPTIONAL); - -NTKERNELAPI -VOID -NTAPI -KeQueryNodeActiveAffinity( - IN USHORT NodeNumber, - OUT PGROUP_AFFINITY Affinity OPTIONAL, - OUT PUSHORT Count OPTIONAL); - -NTKERNELAPI -USHORT -NTAPI -KeQueryNodeMaximumProcessorCount( - IN USHORT NodeNumber); - -NTKERNELAPI -USHORT -NTAPI -KeQueryHighestNodeNumber(VOID); - -NTKERNELAPI -USHORT -NTAPI -KeGetCurrentNodeNumber(VOID); - -NTKERNELAPI -NTSTATUS -NTAPI -KeQueryLogicalProcessorRelationship( - IN PPROCESSOR_NUMBER ProcessorNumber OPTIONAL, - IN LOGICAL_PROCESSOR_RELATIONSHIP RelationshipType, - OUT PSYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX Information OPTIONAL, - IN OUT PULONG Length); - -NTKERNELAPI -NTSTATUS -NTAPI -KeSetHardwareCounterConfiguration( - IN PHARDWARE_COUNTER CounterArray, - IN ULONG Count); - -NTKERNELAPI -NTSTATUS -NTAPI -KeQueryHardwareCounterConfiguration( - OUT PHARDWARE_COUNTER CounterArray, - IN ULONG MaximumCount, - OUT PULONG Count); -$endif /* _NTDDK_ */ - -$if (_WDMDDK_) -ULONG64 -NTAPI -KeQueryTotalCycleTimeProcess( - IN OUT PKPROCESS Process, - OUT PULONG64 CycleTimeStamp); - -ULONG64 -NTAPI -KeQueryTotalCycleTimeThread( - IN OUT PKTHREAD Thread, - OUT PULONG64 CycleTimeStamp); - -NTKERNELAPI -NTSTATUS -NTAPI -KeSetTargetProcessorDpcEx( - IN OUT PKDPC Dpc, - IN PPROCESSOR_NUMBER ProcNumber); - -NTKERNELAPI -VOID -NTAPI -KeSetSystemGroupAffinityThread( - IN PGROUP_AFFINITY Affinity, - OUT PGROUP_AFFINITY PreviousAffinity OPTIONAL); - -NTKERNELAPI -VOID -NTAPI -KeRevertToUserGroupAffinityThread( - IN PGROUP_AFFINITY PreviousAffinity); - -NTKERNELAPI -BOOLEAN -NTAPI -KeSetCoalescableTimer( - IN OUT PKTIMER Timer, - IN LARGE_INTEGER DueTime, - IN ULONG Period, - IN ULONG TolerableDelay, - IN PKDPC Dpc OPTIONAL); - -NTKERNELAPI -ULONGLONG -NTAPI -KeQueryUnbiasedInterruptTime(VOID); - -NTKERNELAPI -ULONG -NTAPI -KeQueryActiveProcessorCountEx( - IN USHORT GroupNumber); - -NTKERNELAPI -ULONG -NTAPI -KeQueryMaximumProcessorCountEx( - IN USHORT GroupNumber); - -NTKERNELAPI -USHORT -NTAPI -KeQueryActiveGroupCount(VOID); - -NTKERNELAPI -USHORT -NTAPI -KeQueryMaximumGroupCount(VOID); - -NTKERNELAPI -KAFFINITY -NTAPI -KeQueryGroupAffinity( - IN USHORT GroupNumber); - -NTKERNELAPI -ULONG -NTAPI -KeGetCurrentProcessorNumberEx( - OUT PPROCESSOR_NUMBER ProcNumber OPTIONAL); - -NTKERNELAPI -VOID -NTAPI -KeQueryNodeActiveAffinity( - IN USHORT NodeNumber, - OUT PGROUP_AFFINITY Affinity OPTIONAL, - OUT PUSHORT Count OPTIONAL); - -NTKERNELAPI -USHORT -NTAPI -KeQueryNodeMaximumProcessorCount( - IN USHORT NodeNumber); - -NTKERNELAPI -USHORT -NTAPI -KeQueryHighestNodeNumber(VOID); - -NTKERNELAPI -USHORT -NTAPI -KeGetCurrentNodeNumber(VOID); - -NTKERNELAPI -NTSTATUS -NTAPI -KeQueryLogicalProcessorRelationship( - IN PPROCESSOR_NUMBER ProcessorNumber OPTIONAL, - IN LOGICAL_PROCESSOR_RELATIONSHIP RelationshipType, - OUT PSYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX Information OPTIONAL, - IN OUT PULONG Length); - -NTKERNELAPI -NTSTATUS -NTAPI -KeSaveExtendedProcessorState( - IN ULONG64 Mask, - OUT PXSTATE_SAVE XStateSave); - -NTKERNELAPI -VOID -NTAPI -KeRestoreExtendedProcessorState( - IN PXSTATE_SAVE XStateSave); - -NTSTATUS -NTAPI -KeGetProcessorNumberFromIndex( - IN ULONG ProcIndex, - OUT PPROCESSOR_NUMBER ProcNumber); - -ULONG -NTAPI -KeGetProcessorIndexFromNumber( - IN PPROCESSOR_NUMBER ProcNumber); -$endif - -#endif /* (NTDDI_VERSION >= NTDDI_WIN7) */ - -$if (_WDMDDK_) -#if !defined(_IA64_) -NTHALAPI -VOID -NTAPI -KeFlushWriteBuffer(VOID); -#endif - -/* VOID - * KeInitializeCallbackRecord( - * IN PKBUGCHECK_CALLBACK_RECORD CallbackRecord) - */ -#define KeInitializeCallbackRecord(CallbackRecord) \ - CallbackRecord->State = BufferEmpty; - -#if DBG - -#if (NTDDI_VERSION >= NTDDI_VISTA) -#define PAGED_ASSERT( exp ) NT_ASSERT( exp ) -#else -#define PAGED_ASSERT( exp ) ASSERT( exp ) -#endif - -#define PAGED_CODE() { \ - if (KeGetCurrentIrql() > APC_LEVEL) { \ - KdPrint( ("NTDDK: Pageable code called at IRQL > APC_LEVEL (%d)\n", KeGetCurrentIrql() )); \ - PAGED_ASSERT(FALSE); \ - } \ -} - -#else - -#define PAGED_CODE() - -#endif /* DBG */ - -#define PAGED_CODE_LOCKED() NOP_FUNCTION; -$endif - diff --git a/reactos/include/xdk/ketypes.h b/reactos/include/xdk/ketypes.h deleted file mode 100644 index a4bb36303a2..00000000000 --- a/reactos/include/xdk/ketypes.h +++ /dev/null @@ -1,1183 +0,0 @@ -/****************************************************************************** - * Kernel Types * - ******************************************************************************/ -$if (_WDMDDK_) - -typedef UCHAR KIRQL, *PKIRQL; -typedef CCHAR KPROCESSOR_MODE; -typedef LONG KPRIORITY; - -typedef enum _MODE { - KernelMode, - UserMode, - MaximumMode -} MODE; - -#define CACHE_FULLY_ASSOCIATIVE 0xFF -#define MAXIMUM_SUSPEND_COUNT MAXCHAR - -#define EVENT_QUERY_STATE (0x0001) -#define EVENT_MODIFY_STATE (0x0002) -#define EVENT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x3) - -#define LTP_PC_SMT 0x1 - -#if (NTDDI_VERSION < NTDDI_WIN7) || defined(_X86_) || !defined(NT_PROCESSOR_GROUPS) -#define SINGLE_GROUP_LEGACY_API 1 -#endif - -#define SEMAPHORE_QUERY_STATE (0x0001) -#define SEMAPHORE_MODIFY_STATE (0x0002) -#define SEMAPHORE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x3) - -typedef enum _LOGICAL_PROCESSOR_RELATIONSHIP { - RelationProcessorCore, - RelationNumaNode, - RelationCache, - RelationProcessorPackage, - RelationGroup, - RelationAll = 0xffff -} LOGICAL_PROCESSOR_RELATIONSHIP; - -typedef enum _PROCESSOR_CACHE_TYPE { - CacheUnified, - CacheInstruction, - CacheData, - CacheTrace -} PROCESSOR_CACHE_TYPE; - -typedef struct _CACHE_DESCRIPTOR { - UCHAR Level; - UCHAR Associativity; - USHORT LineSize; - ULONG Size; - PROCESSOR_CACHE_TYPE Type; -} CACHE_DESCRIPTOR, *PCACHE_DESCRIPTOR; - -typedef struct _SYSTEM_LOGICAL_PROCESSOR_INFORMATION { - ULONG_PTR ProcessorMask; - LOGICAL_PROCESSOR_RELATIONSHIP Relationship; - union { - struct { - UCHAR Flags; - } ProcessorCore; - struct { - ULONG NodeNumber; - } NumaNode; - CACHE_DESCRIPTOR Cache; - ULONGLONG Reserved[2]; - } DUMMYUNIONNAME; -} SYSTEM_LOGICAL_PROCESSOR_INFORMATION, *PSYSTEM_LOGICAL_PROCESSOR_INFORMATION; - -typedef struct _PROCESSOR_RELATIONSHIP { - UCHAR Flags; - UCHAR Reserved[21]; - USHORT GroupCount; - GROUP_AFFINITY GroupMask[ANYSIZE_ARRAY]; -} PROCESSOR_RELATIONSHIP, *PPROCESSOR_RELATIONSHIP; - -typedef struct _NUMA_NODE_RELATIONSHIP { - ULONG NodeNumber; - UCHAR Reserved[20]; - GROUP_AFFINITY GroupMask; -} NUMA_NODE_RELATIONSHIP, *PNUMA_NODE_RELATIONSHIP; - -typedef struct _CACHE_RELATIONSHIP { - UCHAR Level; - UCHAR Associativity; - USHORT LineSize; - ULONG CacheSize; - PROCESSOR_CACHE_TYPE Type; - UCHAR Reserved[20]; - GROUP_AFFINITY GroupMask; -} CACHE_RELATIONSHIP, *PCACHE_RELATIONSHIP; - -typedef struct _PROCESSOR_GROUP_INFO { - UCHAR MaximumProcessorCount; - UCHAR ActiveProcessorCount; - UCHAR Reserved[38]; - KAFFINITY ActiveProcessorMask; -} PROCESSOR_GROUP_INFO, *PPROCESSOR_GROUP_INFO; - -typedef struct _GROUP_RELATIONSHIP { - USHORT MaximumGroupCount; - USHORT ActiveGroupCount; - UCHAR Reserved[20]; - PROCESSOR_GROUP_INFO GroupInfo[ANYSIZE_ARRAY]; -} GROUP_RELATIONSHIP, *PGROUP_RELATIONSHIP; - -typedef struct _SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX { - LOGICAL_PROCESSOR_RELATIONSHIP Relationship; - ULONG Size; - union { - PROCESSOR_RELATIONSHIP Processor; - NUMA_NODE_RELATIONSHIP NumaNode; - CACHE_RELATIONSHIP Cache; - GROUP_RELATIONSHIP Group; - } DUMMYUNIONNAME; -} SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX, *PSYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX;; - -/* Processor features */ -#define PF_FLOATING_POINT_PRECISION_ERRATA 0 -#define PF_FLOATING_POINT_EMULATED 1 -#define PF_COMPARE_EXCHANGE_DOUBLE 2 -#define PF_MMX_INSTRUCTIONS_AVAILABLE 3 -#define PF_PPC_MOVEMEM_64BIT_OK 4 -#define PF_ALPHA_BYTE_INSTRUCTIONS 5 -#define PF_XMMI_INSTRUCTIONS_AVAILABLE 6 -#define PF_3DNOW_INSTRUCTIONS_AVAILABLE 7 -#define PF_RDTSC_INSTRUCTION_AVAILABLE 8 -#define PF_PAE_ENABLED 9 -#define PF_XMMI64_INSTRUCTIONS_AVAILABLE 10 -#define PF_SSE_DAZ_MODE_AVAILABLE 11 -#define PF_NX_ENABLED 12 -#define PF_SSE3_INSTRUCTIONS_AVAILABLE 13 -#define PF_COMPARE_EXCHANGE128 14 -#define PF_COMPARE64_EXCHANGE128 15 -#define PF_CHANNELS_ENABLED 16 -#define PF_XSAVE_ENABLED 17 - -#define MAXIMUM_WAIT_OBJECTS 64 - -#define ASSERT_APC(Object) NT_ASSERT((Object)->Type == ApcObject) - -#define ASSERT_DPC(Object) \ - ASSERT(((Object)->Type == 0) || \ - ((Object)->Type == DpcObject) || \ - ((Object)->Type == ThreadedDpcObject)) - -#define ASSERT_GATE(object) \ - NT_ASSERT((((object)->Header.Type & KOBJECT_TYPE_MASK) == GateObject) || \ - (((object)->Header.Type & KOBJECT_TYPE_MASK) == EventSynchronizationObject)) - -#define ASSERT_DEVICE_QUEUE(Object) \ - NT_ASSERT((Object)->Type == DeviceQueueObject) - -#define ASSERT_TIMER(E) \ - NT_ASSERT(((E)->Header.Type == TimerNotificationObject) || \ - ((E)->Header.Type == TimerSynchronizationObject)) - -#define ASSERT_MUTANT(E) \ - NT_ASSERT((E)->Header.Type == MutantObject) - -#define ASSERT_SEMAPHORE(E) \ - NT_ASSERT((E)->Header.Type == SemaphoreObject) - -#define ASSERT_EVENT(E) \ - NT_ASSERT(((E)->Header.Type == NotificationEvent) || \ - ((E)->Header.Type == SynchronizationEvent)) - -#define DPC_NORMAL 0 -#define DPC_THREADED 1 - -#define GM_LOCK_BIT 0x1 -#define GM_LOCK_BIT_V 0x0 -#define GM_LOCK_WAITER_WOKEN 0x2 -#define GM_LOCK_WAITER_INC 0x4 - -#define LOCK_QUEUE_WAIT_BIT 0 -#define LOCK_QUEUE_OWNER_BIT 1 - -#define LOCK_QUEUE_WAIT 1 -#define LOCK_QUEUE_OWNER 2 -#define LOCK_QUEUE_TIMER_LOCK_SHIFT 4 -#define LOCK_QUEUE_TIMER_TABLE_LOCKS (1 << (8 - LOCK_QUEUE_TIMER_LOCK_SHIFT)) - -#define PROCESSOR_FEATURE_MAX 64 - -#define DBG_STATUS_CONTROL_C 1 -#define DBG_STATUS_SYSRQ 2 -#define DBG_STATUS_BUGCHECK_FIRST 3 -#define DBG_STATUS_BUGCHECK_SECOND 4 -#define DBG_STATUS_FATAL 5 -#define DBG_STATUS_DEBUG_CONTROL 6 -#define DBG_STATUS_WORKER 7 - -#if defined(_WIN64) -#define MAXIMUM_PROC_PER_GROUP 64 -#else -#define MAXIMUM_PROC_PER_GROUP 32 -#endif -#define MAXIMUM_PROCESSORS MAXIMUM_PROC_PER_GROUP - -/* Exception Records */ -#define EXCEPTION_NONCONTINUABLE 1 -#define EXCEPTION_MAXIMUM_PARAMETERS 15 - -#define EXCEPTION_DIVIDED_BY_ZERO 0 -#define EXCEPTION_DEBUG 1 -#define EXCEPTION_NMI 2 -#define EXCEPTION_INT3 3 -#define EXCEPTION_BOUND_CHECK 5 -#define EXCEPTION_INVALID_OPCODE 6 -#define EXCEPTION_NPX_NOT_AVAILABLE 7 -#define EXCEPTION_DOUBLE_FAULT 8 -#define EXCEPTION_NPX_OVERRUN 9 -#define EXCEPTION_INVALID_TSS 0x0A -#define EXCEPTION_SEGMENT_NOT_PRESENT 0x0B -#define EXCEPTION_STACK_FAULT 0x0C -#define EXCEPTION_GP_FAULT 0x0D -#define EXCEPTION_RESERVED_TRAP 0x0F -#define EXCEPTION_NPX_ERROR 0x010 -#define EXCEPTION_ALIGNMENT_CHECK 0x011 - -typedef struct _EXCEPTION_RECORD { - NTSTATUS ExceptionCode; - ULONG ExceptionFlags; - struct _EXCEPTION_RECORD *ExceptionRecord; - PVOID ExceptionAddress; - ULONG NumberParameters; - ULONG_PTR ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS]; -} EXCEPTION_RECORD, *PEXCEPTION_RECORD; - -typedef struct _EXCEPTION_RECORD32 { - NTSTATUS ExceptionCode; - ULONG ExceptionFlags; - ULONG ExceptionRecord; - ULONG ExceptionAddress; - ULONG NumberParameters; - ULONG ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS]; -} EXCEPTION_RECORD32, *PEXCEPTION_RECORD32; - -typedef struct _EXCEPTION_RECORD64 { - NTSTATUS ExceptionCode; - ULONG ExceptionFlags; - ULONG64 ExceptionRecord; - ULONG64 ExceptionAddress; - ULONG NumberParameters; - ULONG __unusedAlignment; - ULONG64 ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS]; -} EXCEPTION_RECORD64, *PEXCEPTION_RECORD64; - -typedef struct _EXCEPTION_POINTERS { - PEXCEPTION_RECORD ExceptionRecord; - PCONTEXT ContextRecord; -} EXCEPTION_POINTERS, *PEXCEPTION_POINTERS; - -typedef enum _KBUGCHECK_CALLBACK_REASON { - KbCallbackInvalid, - KbCallbackReserved1, - KbCallbackSecondaryDumpData, - KbCallbackDumpIo, - KbCallbackAddPages -} KBUGCHECK_CALLBACK_REASON; - -struct _KBUGCHECK_REASON_CALLBACK_RECORD; - -typedef VOID -(NTAPI KBUGCHECK_REASON_CALLBACK_ROUTINE)( - IN KBUGCHECK_CALLBACK_REASON Reason, - IN struct _KBUGCHECK_REASON_CALLBACK_RECORD *Record, - IN OUT PVOID ReasonSpecificData, - IN ULONG ReasonSpecificDataLength); -typedef KBUGCHECK_REASON_CALLBACK_ROUTINE *PKBUGCHECK_REASON_CALLBACK_ROUTINE; - -typedef struct _KBUGCHECK_ADD_PAGES { - IN OUT PVOID Context; - IN OUT ULONG Flags; - IN ULONG BugCheckCode; - OUT ULONG_PTR Address; - OUT ULONG_PTR Count; -} KBUGCHECK_ADD_PAGES, *PKBUGCHECK_ADD_PAGES; - -typedef struct _KBUGCHECK_SECONDARY_DUMP_DATA { - IN PVOID InBuffer; - IN ULONG InBufferLength; - IN ULONG MaximumAllowed; - OUT GUID Guid; - OUT PVOID OutBuffer; - OUT ULONG OutBufferLength; -} KBUGCHECK_SECONDARY_DUMP_DATA, *PKBUGCHECK_SECONDARY_DUMP_DATA; - -typedef enum _KBUGCHECK_DUMP_IO_TYPE { - KbDumpIoInvalid, - KbDumpIoHeader, - KbDumpIoBody, - KbDumpIoSecondaryData, - KbDumpIoComplete -} KBUGCHECK_DUMP_IO_TYPE; - -typedef struct _KBUGCHECK_DUMP_IO { - IN ULONG64 Offset; - IN PVOID Buffer; - IN ULONG BufferLength; - IN KBUGCHECK_DUMP_IO_TYPE Type; -} KBUGCHECK_DUMP_IO, *PKBUGCHECK_DUMP_IO; - -#define KB_ADD_PAGES_FLAG_VIRTUAL_ADDRESS 0x00000001UL -#define KB_ADD_PAGES_FLAG_PHYSICAL_ADDRESS 0x00000002UL -#define KB_ADD_PAGES_FLAG_ADDITIONAL_RANGES_EXIST 0x80000000UL - -typedef struct _KBUGCHECK_REASON_CALLBACK_RECORD { - LIST_ENTRY Entry; - PKBUGCHECK_REASON_CALLBACK_ROUTINE CallbackRoutine; - PUCHAR Component; - ULONG_PTR Checksum; - KBUGCHECK_CALLBACK_REASON Reason; - UCHAR State; -} KBUGCHECK_REASON_CALLBACK_RECORD, *PKBUGCHECK_REASON_CALLBACK_RECORD; - -typedef enum _KBUGCHECK_BUFFER_DUMP_STATE { - BufferEmpty, - BufferInserted, - BufferStarted, - BufferFinished, - BufferIncomplete -} KBUGCHECK_BUFFER_DUMP_STATE; - -typedef VOID -(NTAPI KBUGCHECK_CALLBACK_ROUTINE)( - IN PVOID Buffer, - IN ULONG Length); -typedef KBUGCHECK_CALLBACK_ROUTINE *PKBUGCHECK_CALLBACK_ROUTINE; - -typedef struct _KBUGCHECK_CALLBACK_RECORD { - LIST_ENTRY Entry; - PKBUGCHECK_CALLBACK_ROUTINE CallbackRoutine; - PVOID Buffer; - ULONG Length; - PUCHAR Component; - ULONG_PTR Checksum; - UCHAR State; -} KBUGCHECK_CALLBACK_RECORD, *PKBUGCHECK_CALLBACK_RECORD; - -typedef BOOLEAN -(NTAPI NMI_CALLBACK)( - IN PVOID Context, - IN BOOLEAN Handled); -typedef NMI_CALLBACK *PNMI_CALLBACK; - -typedef enum _KE_PROCESSOR_CHANGE_NOTIFY_STATE { - KeProcessorAddStartNotify = 0, - KeProcessorAddCompleteNotify, - KeProcessorAddFailureNotify -} KE_PROCESSOR_CHANGE_NOTIFY_STATE; - -typedef struct _KE_PROCESSOR_CHANGE_NOTIFY_CONTEXT { - KE_PROCESSOR_CHANGE_NOTIFY_STATE State; - ULONG NtNumber; - NTSTATUS Status; -#if (NTDDI_VERSION >= NTDDI_WIN7) - PROCESSOR_NUMBER ProcNumber; -#endif -} KE_PROCESSOR_CHANGE_NOTIFY_CONTEXT, *PKE_PROCESSOR_CHANGE_NOTIFY_CONTEXT; - -typedef VOID -(NTAPI PROCESSOR_CALLBACK_FUNCTION)( - IN PVOID CallbackContext, - IN PKE_PROCESSOR_CHANGE_NOTIFY_CONTEXT ChangeContext, - IN OUT PNTSTATUS OperationStatus); -typedef PROCESSOR_CALLBACK_FUNCTION *PPROCESSOR_CALLBACK_FUNCTION; - -#define KE_PROCESSOR_CHANGE_ADD_EXISTING 1 - -#define INVALID_PROCESSOR_INDEX 0xffffffff - -typedef enum _KINTERRUPT_POLARITY { - InterruptPolarityUnknown, - InterruptActiveHigh, - InterruptActiveLow -} KINTERRUPT_POLARITY, *PKINTERRUPT_POLARITY; - -typedef enum _KPROFILE_SOURCE { - ProfileTime, - ProfileAlignmentFixup, - ProfileTotalIssues, - ProfilePipelineDry, - ProfileLoadInstructions, - ProfilePipelineFrozen, - ProfileBranchInstructions, - ProfileTotalNonissues, - ProfileDcacheMisses, - ProfileIcacheMisses, - ProfileCacheMisses, - ProfileBranchMispredictions, - ProfileStoreInstructions, - ProfileFpInstructions, - ProfileIntegerInstructions, - Profile2Issue, - Profile3Issue, - Profile4Issue, - ProfileSpecialInstructions, - ProfileTotalCycles, - ProfileIcacheIssues, - ProfileDcacheAccesses, - ProfileMemoryBarrierCycles, - ProfileLoadLinkedIssues, - ProfileMaximum -} KPROFILE_SOURCE; - -typedef enum _KWAIT_REASON { - Executive, - FreePage, - PageIn, - PoolAllocation, - DelayExecution, - Suspended, - UserRequest, - WrExecutive, - WrFreePage, - WrPageIn, - WrPoolAllocation, - WrDelayExecution, - WrSuspended, - WrUserRequest, - WrEventPair, - WrQueue, - WrLpcReceive, - WrLpcReply, - WrVirtualMemory, - WrPageOut, - WrRendezvous, - WrKeyedEvent, - WrTerminated, - WrProcessInSwap, - WrCpuRateControl, - WrCalloutStack, - WrKernel, - WrResource, - WrPushLock, - WrMutex, - WrQuantumEnd, - WrDispatchInt, - WrPreempted, - WrYieldExecution, - WrFastMutex, - WrGuardedMutex, - WrRundown, - MaximumWaitReason -} KWAIT_REASON; - -typedef struct _KWAIT_BLOCK { - LIST_ENTRY WaitListEntry; - struct _KTHREAD *Thread; - PVOID Object; - struct _KWAIT_BLOCK *NextWaitBlock; - USHORT WaitKey; - UCHAR WaitType; - volatile UCHAR BlockState; -#if defined(_WIN64) - LONG SpareLong; -#endif -} KWAIT_BLOCK, *PKWAIT_BLOCK, *PRKWAIT_BLOCK; - -typedef enum _KINTERRUPT_MODE { - LevelSensitive, - Latched -} KINTERRUPT_MODE; - -#define THREAD_WAIT_OBJECTS 3 - -typedef VOID -(NTAPI KSTART_ROUTINE)( - IN PVOID StartContext); -typedef KSTART_ROUTINE *PKSTART_ROUTINE; - -typedef VOID -(NTAPI *PKINTERRUPT_ROUTINE)( - VOID); - -typedef BOOLEAN -(NTAPI KSERVICE_ROUTINE)( - IN struct _KINTERRUPT *Interrupt, - IN PVOID ServiceContext); -typedef KSERVICE_ROUTINE *PKSERVICE_ROUTINE; - -typedef BOOLEAN -(NTAPI KMESSAGE_SERVICE_ROUTINE)( - IN struct _KINTERRUPT *Interrupt, - IN PVOID ServiceContext, - IN ULONG MessageID); -typedef KMESSAGE_SERVICE_ROUTINE *PKMESSAGE_SERVICE_ROUTINE; - -typedef enum _KD_OPTION { - KD_OPTION_SET_BLOCK_ENABLE, -} KD_OPTION; - -typedef VOID -(NTAPI *PKNORMAL_ROUTINE)( - IN PVOID NormalContext OPTIONAL, - IN PVOID SystemArgument1 OPTIONAL, - IN PVOID SystemArgument2 OPTIONAL); - -typedef VOID -(NTAPI *PKRUNDOWN_ROUTINE)( - IN struct _KAPC *Apc); - -typedef VOID -(NTAPI *PKKERNEL_ROUTINE)( - IN struct _KAPC *Apc, - IN OUT PKNORMAL_ROUTINE *NormalRoutine OPTIONAL, - IN OUT PVOID *NormalContext OPTIONAL, - IN OUT PVOID *SystemArgument1 OPTIONAL, - IN OUT PVOID *SystemArgument2 OPTIONAL); - -typedef struct _KAPC { - UCHAR Type; - UCHAR SpareByte0; - UCHAR Size; - UCHAR SpareByte1; - ULONG SpareLong0; - struct _KTHREAD *Thread; - LIST_ENTRY ApcListEntry; - PKKERNEL_ROUTINE KernelRoutine; - PKRUNDOWN_ROUTINE RundownRoutine; - PKNORMAL_ROUTINE NormalRoutine; - PVOID NormalContext; - PVOID SystemArgument1; - PVOID SystemArgument2; - CCHAR ApcStateIndex; - KPROCESSOR_MODE ApcMode; - BOOLEAN Inserted; -} KAPC, *PKAPC, *RESTRICTED_POINTER PRKAPC; - -#define KAPC_OFFSET_TO_SPARE_BYTE0 FIELD_OFFSET(KAPC, SpareByte0) -#define KAPC_OFFSET_TO_SPARE_BYTE1 FIELD_OFFSET(KAPC, SpareByte1) -#define KAPC_OFFSET_TO_SPARE_LONG FIELD_OFFSET(KAPC, SpareLong0) -#define KAPC_OFFSET_TO_SYSTEMARGUMENT1 FIELD_OFFSET(KAPC, SystemArgument1) -#define KAPC_OFFSET_TO_SYSTEMARGUMENT2 FIELD_OFFSET(KAPC, SystemArgument2) -#define KAPC_OFFSET_TO_APCSTATEINDEX FIELD_OFFSET(KAPC, ApcStateIndex) -#define KAPC_ACTUAL_LENGTH (FIELD_OFFSET(KAPC, Inserted) + sizeof(BOOLEAN)) - -typedef struct _KDEVICE_QUEUE_ENTRY { - LIST_ENTRY DeviceListEntry; - ULONG SortKey; - BOOLEAN Inserted; -} KDEVICE_QUEUE_ENTRY, *PKDEVICE_QUEUE_ENTRY, -*RESTRICTED_POINTER PRKDEVICE_QUEUE_ENTRY; - -typedef PVOID PKIPI_CONTEXT; - -typedef VOID -(NTAPI *PKIPI_WORKER)( - IN OUT PKIPI_CONTEXT PacketContext, - IN PVOID Parameter1 OPTIONAL, - IN PVOID Parameter2 OPTIONAL, - IN PVOID Parameter3 OPTIONAL); - -typedef struct _KIPI_COUNTS { - ULONG Freeze; - ULONG Packet; - ULONG DPC; - ULONG APC; - ULONG FlushSingleTb; - ULONG FlushMultipleTb; - ULONG FlushEntireTb; - ULONG GenericCall; - ULONG ChangeColor; - ULONG SweepDcache; - ULONG SweepIcache; - ULONG SweepIcacheRange; - ULONG FlushIoBuffers; - ULONG GratuitousDPC; -} KIPI_COUNTS, *PKIPI_COUNTS; - -typedef ULONG_PTR -(NTAPI KIPI_BROADCAST_WORKER)( - IN ULONG_PTR Argument); -typedef KIPI_BROADCAST_WORKER *PKIPI_BROADCAST_WORKER; - -typedef ULONG_PTR KSPIN_LOCK, *PKSPIN_LOCK; - -typedef struct _KSPIN_LOCK_QUEUE { - struct _KSPIN_LOCK_QUEUE *volatile Next; - PKSPIN_LOCK volatile Lock; -} KSPIN_LOCK_QUEUE, *PKSPIN_LOCK_QUEUE; - -typedef struct _KLOCK_QUEUE_HANDLE { - KSPIN_LOCK_QUEUE LockQueue; - KIRQL OldIrql; -} KLOCK_QUEUE_HANDLE, *PKLOCK_QUEUE_HANDLE; - -#if defined(_AMD64_) - -typedef ULONG64 KSPIN_LOCK_QUEUE_NUMBER; - -#define LockQueueDispatcherLock 0 -#define LockQueueExpansionLock 1 -#define LockQueuePfnLock 2 -#define LockQueueSystemSpaceLock 3 -#define LockQueueVacbLock 4 -#define LockQueueMasterLock 5 -#define LockQueueNonPagedPoolLock 6 -#define LockQueueIoCancelLock 7 -#define LockQueueWorkQueueLock 8 -#define LockQueueIoVpbLock 9 -#define LockQueueIoDatabaseLock 10 -#define LockQueueIoCompletionLock 11 -#define LockQueueNtfsStructLock 12 -#define LockQueueAfdWorkQueueLock 13 -#define LockQueueBcbLock 14 -#define LockQueueMmNonPagedPoolLock 15 -#define LockQueueUnusedSpare16 16 -#define LockQueueTimerTableLock 17 -#define LockQueueMaximumLock (LockQueueTimerTableLock + LOCK_QUEUE_TIMER_TABLE_LOCKS) - -#else - -typedef enum _KSPIN_LOCK_QUEUE_NUMBER { - LockQueueDispatcherLock, - LockQueueExpansionLock, - LockQueuePfnLock, - LockQueueSystemSpaceLock, - LockQueueVacbLock, - LockQueueMasterLock, - LockQueueNonPagedPoolLock, - LockQueueIoCancelLock, - LockQueueWorkQueueLock, - LockQueueIoVpbLock, - LockQueueIoDatabaseLock, - LockQueueIoCompletionLock, - LockQueueNtfsStructLock, - LockQueueAfdWorkQueueLock, - LockQueueBcbLock, - LockQueueMmNonPagedPoolLock, - LockQueueUnusedSpare16, - LockQueueTimerTableLock, - LockQueueMaximumLock = LockQueueTimerTableLock + LOCK_QUEUE_TIMER_TABLE_LOCKS -} KSPIN_LOCK_QUEUE_NUMBER, *PKSPIN_LOCK_QUEUE_NUMBER; - -#endif /* defined(_AMD64_) */ - -typedef VOID -(NTAPI *PKDEFERRED_ROUTINE)( - IN struct _KDPC *Dpc, - IN PVOID DeferredContext OPTIONAL, - IN PVOID SystemArgument1 OPTIONAL, - IN PVOID SystemArgument2 OPTIONAL); - -typedef enum _KDPC_IMPORTANCE { - LowImportance, - MediumImportance, - HighImportance, - MediumHighImportance -} KDPC_IMPORTANCE; - -typedef struct _KDPC { - UCHAR Type; - UCHAR Importance; - volatile USHORT Number; - LIST_ENTRY DpcListEntry; - PKDEFERRED_ROUTINE DeferredRoutine; - PVOID DeferredContext; - PVOID SystemArgument1; - PVOID SystemArgument2; - volatile PVOID DpcData; -} KDPC, *PKDPC, *RESTRICTED_POINTER PRKDPC; - -typedef struct _KDPC_WATCHDOG_INFORMATION { - ULONG DpcTimeLimit; - ULONG DpcTimeCount; - ULONG DpcWatchdogLimit; - ULONG DpcWatchdogCount; - ULONG Reserved; -} KDPC_WATCHDOG_INFORMATION, *PKDPC_WATCHDOG_INFORMATION; - -typedef struct _KDEVICE_QUEUE { - CSHORT Type; - CSHORT Size; - LIST_ENTRY DeviceListHead; - KSPIN_LOCK Lock; - #if defined(_AMD64_) - union { - BOOLEAN Busy; - struct { - LONG64 Reserved:8; - LONG64 Hint:56; - }; - }; - #else - BOOLEAN Busy; - #endif -} KDEVICE_QUEUE, *PKDEVICE_QUEUE, *RESTRICTED_POINTER PRKDEVICE_QUEUE; - -#define TIMER_EXPIRED_INDEX_BITS 6 -#define TIMER_PROCESSOR_INDEX_BITS 5 - -typedef struct _DISPATCHER_HEADER { - _ANONYMOUS_UNION union { - _ANONYMOUS_STRUCT struct { - UCHAR Type; - _ANONYMOUS_UNION union { - _ANONYMOUS_UNION union { - UCHAR TimerControlFlags; - _ANONYMOUS_STRUCT struct { - UCHAR Absolute:1; - UCHAR Coalescable:1; - UCHAR KeepShifting:1; - UCHAR EncodedTolerableDelay:5; - } DUMMYSTRUCTNAME; - } DUMMYUNIONNAME; - UCHAR Abandoned; -#if (NTDDI_VERSION < NTDDI_WIN7) - UCHAR NpxIrql; -#endif - BOOLEAN Signalling; - } DUMMYUNIONNAME; - _ANONYMOUS_UNION union { - _ANONYMOUS_UNION union { - UCHAR ThreadControlFlags; - _ANONYMOUS_STRUCT struct { - UCHAR CpuThrottled:1; - UCHAR CycleProfiling:1; - UCHAR CounterProfiling:1; - UCHAR Reserved:5; - } DUMMYSTRUCTNAME; - } DUMMYUNIONNAME; - UCHAR Size; - UCHAR Hand; - } DUMMYUNIONNAME2; - _ANONYMOUS_UNION union { -#if (NTDDI_VERSION >= NTDDI_WIN7) - _ANONYMOUS_UNION union { - UCHAR TimerMiscFlags; - _ANONYMOUS_STRUCT struct { -#if !defined(_X86_) - UCHAR Index:TIMER_EXPIRED_INDEX_BITS; -#else - UCHAR Index:1; - UCHAR Processor:TIMER_PROCESSOR_INDEX_BITS; -#endif - UCHAR Inserted:1; - volatile UCHAR Expired:1; - } DUMMYSTRUCTNAME; - } DUMMYUNIONNAME; -#else - /* Pre Win7 compatibility fix to latest WDK */ - UCHAR Inserted; -#endif - _ANONYMOUS_UNION union { - BOOLEAN DebugActive; - _ANONYMOUS_STRUCT struct { - BOOLEAN ActiveDR7:1; - BOOLEAN Instrumented:1; - BOOLEAN Reserved2:4; - BOOLEAN UmsScheduled:1; - BOOLEAN UmsPrimary:1; - } DUMMYSTRUCTNAME; - } DUMMYUNIONNAME; /* should probably be DUMMYUNIONNAME2, but this is what WDK says */ - BOOLEAN DpcActive; - } DUMMYUNIONNAME3; - } DUMMYSTRUCTNAME; - volatile LONG Lock; - } DUMMYUNIONNAME; - LONG SignalState; - LIST_ENTRY WaitListHead; -} DISPATCHER_HEADER, *PDISPATCHER_HEADER; - -typedef struct _KEVENT { - DISPATCHER_HEADER Header; -} KEVENT, *PKEVENT, *RESTRICTED_POINTER PRKEVENT; - -typedef struct _KSEMAPHORE { - DISPATCHER_HEADER Header; - LONG Limit; -} KSEMAPHORE, *PKSEMAPHORE, *RESTRICTED_POINTER PRKSEMAPHORE; - -#define KSEMAPHORE_ACTUAL_LENGTH (FIELD_OFFSET(KSEMAPHORE, Limit) + sizeof(LONG)) - -typedef struct _KGATE { - DISPATCHER_HEADER Header; -} KGATE, *PKGATE, *RESTRICTED_POINTER PRKGATE; - -typedef struct _KGUARDED_MUTEX { - volatile LONG Count; - PKTHREAD Owner; - ULONG Contention; - KGATE Gate; - __GNU_EXTENSION union { - __GNU_EXTENSION struct { - SHORT KernelApcDisable; - SHORT SpecialApcDisable; - }; - ULONG CombinedApcDisable; - }; -} KGUARDED_MUTEX, *PKGUARDED_MUTEX; - -typedef struct _KMUTANT { - DISPATCHER_HEADER Header; - LIST_ENTRY MutantListEntry; - struct _KTHREAD *RESTRICTED_POINTER OwnerThread; - BOOLEAN Abandoned; - UCHAR ApcDisable; -} KMUTANT, *PKMUTANT, *RESTRICTED_POINTER PRKMUTANT, KMUTEX, *PKMUTEX, *RESTRICTED_POINTER PRKMUTEX; - -#define TIMER_TABLE_SIZE 512 -#define TIMER_TABLE_SHIFT 9 - -typedef struct _KTIMER { - DISPATCHER_HEADER Header; - ULARGE_INTEGER DueTime; - LIST_ENTRY TimerListEntry; - struct _KDPC *Dpc; - #if !defined(_X86_) - ULONG Processor; - #endif - ULONG Period; -} KTIMER, *PKTIMER, *RESTRICTED_POINTER PRKTIMER; - -typedef enum _LOCK_OPERATION { - IoReadAccess, - IoWriteAccess, - IoModifyAccess -} LOCK_OPERATION; - -#define KTIMER_ACTUAL_LENGTH (FIELD_OFFSET(KTIMER, Period) + sizeof(LONG)) - -typedef BOOLEAN -(NTAPI *PKSYNCHRONIZE_ROUTINE)( - IN PVOID SynchronizeContext); - -typedef enum _POOL_TYPE { - NonPagedPool, - PagedPool, - NonPagedPoolMustSucceed, - DontUseThisType, - NonPagedPoolCacheAligned, - PagedPoolCacheAligned, - NonPagedPoolCacheAlignedMustS, - MaxPoolType, - NonPagedPoolSession = 32, - PagedPoolSession, - NonPagedPoolMustSucceedSession, - DontUseThisTypeSession, - NonPagedPoolCacheAlignedSession, - PagedPoolCacheAlignedSession, - NonPagedPoolCacheAlignedMustSSession -} POOL_TYPE; - -typedef enum _ALTERNATIVE_ARCHITECTURE_TYPE { - StandardDesign, - NEC98x86, - EndAlternatives -} ALTERNATIVE_ARCHITECTURE_TYPE; - -#ifndef _X86_ - -#ifndef IsNEC_98 -#define IsNEC_98 (FALSE) -#endif - -#ifndef IsNotNEC_98 -#define IsNotNEC_98 (TRUE) -#endif - -#ifndef SetNEC_98 -#define SetNEC_98 -#endif - -#ifndef SetNotNEC_98 -#define SetNotNEC_98 -#endif - -#endif - -typedef struct _KSYSTEM_TIME { - ULONG LowPart; - LONG High1Time; - LONG High2Time; -} KSYSTEM_TIME, *PKSYSTEM_TIME; - -typedef struct DECLSPEC_ALIGN(16) _M128A { - ULONGLONG Low; - LONGLONG High; -} M128A, *PM128A; - -typedef struct DECLSPEC_ALIGN(16) _XSAVE_FORMAT { - USHORT ControlWord; - USHORT StatusWord; - UCHAR TagWord; - UCHAR Reserved1; - USHORT ErrorOpcode; - ULONG ErrorOffset; - USHORT ErrorSelector; - USHORT Reserved2; - ULONG DataOffset; - USHORT DataSelector; - USHORT Reserved3; - ULONG MxCsr; - ULONG MxCsr_Mask; - M128A FloatRegisters[8]; -#if defined(_WIN64) - M128A XmmRegisters[16]; - UCHAR Reserved4[96]; -#else - M128A XmmRegisters[8]; - UCHAR Reserved4[192]; - ULONG StackControl[7]; - ULONG Cr0NpxState; -#endif -} XSAVE_FORMAT, *PXSAVE_FORMAT; - -typedef struct DECLSPEC_ALIGN(8) _XSAVE_AREA_HEADER { - ULONG64 Mask; - ULONG64 Reserved[7]; -} XSAVE_AREA_HEADER, *PXSAVE_AREA_HEADER; - -typedef struct DECLSPEC_ALIGN(16) _XSAVE_AREA { - XSAVE_FORMAT LegacyState; - XSAVE_AREA_HEADER Header; -} XSAVE_AREA, *PXSAVE_AREA; - -typedef struct _XSTATE_CONTEXT { - ULONG64 Mask; - ULONG Length; - ULONG Reserved1; - PXSAVE_AREA Area; -#if defined(_X86_) - ULONG Reserved2; -#endif - PVOID Buffer; -#if defined(_X86_) - ULONG Reserved3; -#endif -} XSTATE_CONTEXT, *PXSTATE_CONTEXT; - -typedef struct _XSTATE_SAVE { -#if defined(_AMD64_) - struct _XSTATE_SAVE* Prev; - struct _KTHREAD* Thread; - UCHAR Level; - XSTATE_CONTEXT XStateContext; -#elif defined(_IA64_) - ULONG Dummy; -#elif defined(_X86_) - union { - struct { - LONG64 Reserved1; - ULONG Reserved2; - struct _XSTATE_SAVE* Prev; - PXSAVE_AREA Reserved3; - struct _KTHREAD* Thread; - PVOID Reserved4; - UCHAR Level; - }; - XSTATE_CONTEXT XStateContext; - }; -#endif -} XSTATE_SAVE, *PXSTATE_SAVE; - -#ifdef _X86_ - -#define MAXIMUM_SUPPORTED_EXTENSION 512 - -#if !defined(__midl) && !defined(MIDL_PASS) -C_ASSERT(sizeof(XSAVE_FORMAT) == MAXIMUM_SUPPORTED_EXTENSION); -#endif - -#endif /* _X86_ */ - -#define XSAVE_ALIGN 64 -#define MINIMAL_XSTATE_AREA_LENGTH sizeof(XSAVE_AREA) - -#if !defined(__midl) && !defined(MIDL_PASS) -C_ASSERT((sizeof(XSAVE_FORMAT) & (XSAVE_ALIGN - 1)) == 0); -C_ASSERT((FIELD_OFFSET(XSAVE_AREA, Header) & (XSAVE_ALIGN - 1)) == 0); -C_ASSERT(MINIMAL_XSTATE_AREA_LENGTH == 512 + 64); -#endif - -typedef struct _CONTEXT_CHUNK { - LONG Offset; - ULONG Length; -} CONTEXT_CHUNK, *PCONTEXT_CHUNK; - -typedef struct _CONTEXT_EX { - CONTEXT_CHUNK All; - CONTEXT_CHUNK Legacy; - CONTEXT_CHUNK XState; -} CONTEXT_EX, *PCONTEXT_EX; - -#define CONTEXT_EX_LENGTH ALIGN_UP_BY(sizeof(CONTEXT_EX), STACK_ALIGN) - -#if (NTDDI_VERSION >= NTDDI_VISTA) -extern NTSYSAPI volatile CCHAR KeNumberProcessors; -#elif (NTDDI_VERSION >= NTDDI_WINXP) -extern NTSYSAPI CCHAR KeNumberProcessors; -#else -extern PCCHAR KeNumberProcessors; -#endif - -$endif /* _WDMDDK_ */ -$if (_NTDDK_) - -#define NX_SUPPORT_POLICY_ALWAYSOFF 0 -#define NX_SUPPORT_POLICY_ALWAYSON 1 -#define NX_SUPPORT_POLICY_OPTIN 2 -#define NX_SUPPORT_POLICY_OPTOUT 3 - -typedef VOID -(NTAPI *PEXPAND_STACK_CALLOUT)( - IN PVOID Parameter OPTIONAL); - -typedef VOID -(NTAPI *PTIMER_APC_ROUTINE)( - IN PVOID TimerContext, - IN ULONG TimerLowValue, - IN LONG TimerHighValue); - -typedef enum _TIMER_SET_INFORMATION_CLASS { - TimerSetCoalescableTimer, - MaxTimerInfoClass -} TIMER_SET_INFORMATION_CLASS; - -#if (NTDDI_VERSION >= NTDDI_WIN7) -typedef struct _TIMER_SET_COALESCABLE_TIMER_INFO { - IN LARGE_INTEGER DueTime; - IN PTIMER_APC_ROUTINE TimerApcRoutine OPTIONAL; - IN PVOID TimerContext OPTIONAL; - IN struct _COUNTED_REASON_CONTEXT *WakeContext OPTIONAL; - IN ULONG Period OPTIONAL; - IN ULONG TolerableDelay; - OUT PBOOLEAN PreviousState OPTIONAL; -} TIMER_SET_COALESCABLE_TIMER_INFO, *PTIMER_SET_COALESCABLE_TIMER_INFO; -#endif /* (NTDDI_VERSION >= NTDDI_WIN7) */ - -#define XSTATE_LEGACY_FLOATING_POINT 0 -#define XSTATE_LEGACY_SSE 1 -#define XSTATE_GSSE 2 - -#define XSTATE_MASK_LEGACY_FLOATING_POINT (1i64 << (XSTATE_LEGACY_FLOATING_POINT)) -#define XSTATE_MASK_LEGACY_SSE (1i64 << (XSTATE_LEGACY_SSE)) -#define XSTATE_MASK_LEGACY (XSTATE_MASK_LEGACY_FLOATING_POINT | XSTATE_MASK_LEGACY_SSE) -#define XSTATE_MASK_GSSE (1i64 << (XSTATE_GSSE)) - -#define MAXIMUM_XSTATE_FEATURES 64 - -typedef struct _XSTATE_FEATURE { - ULONG Offset; - ULONG Size; -} XSTATE_FEATURE, *PXSTATE_FEATURE; - -typedef struct _XSTATE_CONFIGURATION { - ULONG64 EnabledFeatures; - ULONG Size; - ULONG OptimizedSave:1; - XSTATE_FEATURE Features[MAXIMUM_XSTATE_FEATURES]; -} XSTATE_CONFIGURATION, *PXSTATE_CONFIGURATION; - -#define MAX_WOW64_SHARED_ENTRIES 16 - -typedef struct _KUSER_SHARED_DATA { - ULONG TickCountLowDeprecated; - ULONG TickCountMultiplier; - volatile KSYSTEM_TIME InterruptTime; - volatile KSYSTEM_TIME SystemTime; - volatile KSYSTEM_TIME TimeZoneBias; - USHORT ImageNumberLow; - USHORT ImageNumberHigh; - WCHAR NtSystemRoot[260]; - ULONG MaxStackTraceDepth; - ULONG CryptoExponent; - ULONG TimeZoneId; - ULONG LargePageMinimum; - ULONG Reserved2[7]; - NT_PRODUCT_TYPE NtProductType; - BOOLEAN ProductTypeIsValid; - ULONG NtMajorVersion; - ULONG NtMinorVersion; - BOOLEAN ProcessorFeatures[PROCESSOR_FEATURE_MAX]; - ULONG Reserved1; - ULONG Reserved3; - volatile ULONG TimeSlip; - ALTERNATIVE_ARCHITECTURE_TYPE AlternativeArchitecture; - ULONG AltArchitecturePad[1]; - LARGE_INTEGER SystemExpirationDate; - ULONG SuiteMask; - BOOLEAN KdDebuggerEnabled; -#if (NTDDI_VERSION >= NTDDI_WINXPSP2) - UCHAR NXSupportPolicy; -#endif - volatile ULONG ActiveConsoleId; - volatile ULONG DismountCount; - ULONG ComPlusPackage; - ULONG LastSystemRITEventTickCount; - ULONG NumberOfPhysicalPages; - BOOLEAN SafeBootMode; -#if (NTDDI_VERSION >= NTDDI_WIN7) - union { - UCHAR TscQpcData; - struct { - UCHAR TscQpcEnabled:1; - UCHAR TscQpcSpareFlag:1; - UCHAR TscQpcShift:6; - } DUMMYSTRUCTNAME; - } DUMMYUNIONNAME; - UCHAR TscQpcPad[2]; -#endif -#if (NTDDI_VERSION >= NTDDI_VISTA) - union { - ULONG SharedDataFlags; - struct { - ULONG DbgErrorPortPresent:1; - ULONG DbgElevationEnabled:1; - ULONG DbgVirtEnabled:1; - ULONG DbgInstallerDetectEnabled:1; - ULONG DbgSystemDllRelocated:1; - ULONG DbgDynProcessorEnabled:1; - ULONG DbgSEHValidationEnabled:1; - ULONG SpareBits:25; - } DUMMYSTRUCTNAME2; - } DUMMYUNIONNAME2; -#else - ULONG TraceLogging; -#endif - ULONG DataFlagsPad[1]; - ULONGLONG TestRetInstruction; - ULONG SystemCall; - ULONG SystemCallReturn; - ULONGLONG SystemCallPad[3]; - _ANONYMOUS_UNION union { - volatile KSYSTEM_TIME TickCount; - volatile ULONG64 TickCountQuad; - _ANONYMOUS_STRUCT struct { - ULONG ReservedTickCountOverlay[3]; - ULONG TickCountPad[1]; - } DUMMYSTRUCTNAME; - } DUMMYUNIONNAME3; - ULONG Cookie; - ULONG CookiePad[1]; -#if (NTDDI_VERSION >= NTDDI_WS03) - LONGLONG ConsoleSessionForegroundProcessId; - ULONG Wow64SharedInformation[MAX_WOW64_SHARED_ENTRIES]; -#endif -#if (NTDDI_VERSION >= NTDDI_VISTA) -#if (NTDDI_VERSION >= NTDDI_WIN7) - USHORT UserModeGlobalLogger[16]; -#else - USHORT UserModeGlobalLogger[8]; - ULONG HeapTracingPid[2]; - ULONG CritSecTracingPid[2]; -#endif - ULONG ImageFileExecutionOptions; -#if (NTDDI_VERSION >= NTDDI_VISTASP1) - ULONG LangGenerationCount; -#else - /* 4 bytes padding */ -#endif - ULONGLONG Reserved5; - volatile ULONG64 InterruptTimeBias; -#endif -#if (NTDDI_VERSION >= NTDDI_WIN7) - volatile ULONG64 TscQpcBias; - volatile ULONG ActiveProcessorCount; - volatile USHORT ActiveGroupCount; - USHORT Reserved4; - volatile ULONG AitSamplingValue; - volatile ULONG AppCompatFlag; - ULONGLONG SystemDllNativeRelocation; - ULONG SystemDllWowRelocation; - ULONG XStatePad[1]; - XSTATE_CONFIGURATION XState; -#endif -} KUSER_SHARED_DATA, *PKUSER_SHARED_DATA; - -#if (NTDDI_VERSION >= NTDDI_VISTA) -extern NTSYSAPI volatile CCHAR KeNumberProcessors; -#elif (NTDDI_VERSION >= NTDDI_WINXP) -extern NTSYSAPI CCHAR KeNumberProcessors; -#else -extern PCCHAR KeNumberProcessors; -#endif - -$endif /* _NTDDK_ */ - diff --git a/reactos/include/xdk/mips/ke.h b/reactos/include/xdk/mips/ke.h deleted file mode 100644 index 31384ad4d27..00000000000 --- a/reactos/include/xdk/mips/ke.h +++ /dev/null @@ -1,66 +0,0 @@ -$if (_WDMDDK_) -#error MIPS Headers are totally incorrect - -// -// Used to contain PFNs and PFN counts -// -typedef ULONG PFN_COUNT; -typedef ULONG PFN_NUMBER, *PPFN_NUMBER; -typedef LONG SPFN_NUMBER, *PSPFN_NUMBER; - -#define PASSIVE_LEVEL 0 -#define APC_LEVEL 1 -#define DISPATCH_LEVEL 2 -#define PROFILE_LEVEL 27 -#define IPI_LEVEL 29 -#define HIGH_LEVEL 31 - -typedef struct _KPCR { - struct _KPRCB *Prcb; /* 20 */ - KIRQL Irql; /* 24 */ - ULONG IRR; /* 28 */ - ULONG IDR; /* 30 */ -} KPCR, *PKPCR; - -#define KeGetPcr() PCR - -typedef struct _KFLOATING_SAVE { -} KFLOATING_SAVE, *PKFLOATING_SAVE; - -static __inline -ULONG -NTAPI -KeGetCurrentProcessorNumber(VOID) -{ - return 0; -} - -#define YieldProcessor() __asm__ __volatile__("nop"); - -#define KeLowerIrql(a) KfLowerIrql(a) -#define KeRaiseIrql(a,b) *(b) = KfRaiseIrql(a) - -NTKERNELAPI -VOID -NTAPI -KfLowerIrql( - IN KIRQL NewIrql); - -NTKERNELAPI -KIRQL -NTAPI -KfRaiseIrql( - IN KIRQL NewIrql); - -NTKERNELAPI -KIRQL -NTAPI -KeRaiseIrqlToDpcLevel(VOID); - -NTKERNELAPI -KIRQL -NTAPI -KeRaiseIrqlToSynchLevel(VOID); - -$endif - diff --git a/reactos/include/xdk/mmfuncs.h b/reactos/include/xdk/mmfuncs.h deleted file mode 100644 index b714f97845a..00000000000 --- a/reactos/include/xdk/mmfuncs.h +++ /dev/null @@ -1,658 +0,0 @@ -/****************************************************************************** - * Memory manager Functions * - ******************************************************************************/ -$if (_WDMDDK_) -/* Alignment Macros */ -#define ALIGN_DOWN_BY(size, align) \ - ((ULONG_PTR)(size) & ~((ULONG_PTR)(align) - 1)) - -#define ALIGN_UP_BY(size, align) \ - (ALIGN_DOWN_BY(((ULONG_PTR)(size) + align - 1), align)) - -#define ALIGN_DOWN_POINTER_BY(ptr, align) \ - ((PVOID)ALIGN_DOWN_BY(ptr, align)) - -#define ALIGN_UP_POINTER_BY(ptr, align) \ - ((PVOID)ALIGN_UP_BY(ptr, align)) - -#define ALIGN_DOWN(size, type) \ - ALIGN_DOWN_BY(size, sizeof(type)) - -#define ALIGN_UP(size, type) \ - ALIGN_UP_BY(size, sizeof(type)) - -#define ALIGN_DOWN_POINTER(ptr, type) \ - ALIGN_DOWN_POINTER_BY(ptr, sizeof(type)) - -#define ALIGN_UP_POINTER(ptr, type) \ - ALIGN_UP_POINTER_BY(ptr, sizeof(type)) - -#ifndef FIELD_OFFSET -#define FIELD_OFFSET(type, field) ((ULONG)&(((type *)0)->field)) -#endif - -#ifndef FIELD_SIZE -#define FIELD_SIZE(type, field) (sizeof(((type *)0)->field)) -#endif - -#define POOL_TAGGING 1 - -#if DBG -#define IF_DEBUG if (TRUE) -#else -#define IF_DEBUG if (FALSE) -#endif /* DBG */ - -/* ULONG - * BYTE_OFFSET( - * IN PVOID Va) - */ -#define BYTE_OFFSET(Va) \ - ((ULONG) ((ULONG_PTR) (Va) & (PAGE_SIZE - 1))) - -/* ULONG - * BYTES_TO_PAGES( - * IN ULONG Size) - */ -#define BYTES_TO_PAGES(Size) \ - (((Size) + PAGE_SIZE - 1) >> PAGE_SHIFT) - -/* PVOID - * PAGE_ALIGN( - * IN PVOID Va) - */ -#define PAGE_ALIGN(Va) \ - ((PVOID) ((ULONG_PTR)(Va) & ~(PAGE_SIZE - 1))) - -/* ULONG_PTR - * ROUND_TO_PAGES( - * IN ULONG_PTR Size) - */ -#define ROUND_TO_PAGES(Size) \ - (((ULONG_PTR) (Size) + PAGE_SIZE - 1) & ~(PAGE_SIZE - 1)) - -/* ULONG - * ADDRESS_AND_SIZE_TO_SPAN_PAGES( - * IN PVOID Va, - * IN ULONG Size) - */ -#define ADDRESS_AND_SIZE_TO_SPAN_PAGES(_Va, _Size) \ - ((ULONG) ((((ULONG_PTR) (_Va) & (PAGE_SIZE - 1)) \ - + (_Size) + (PAGE_SIZE - 1)) >> PAGE_SHIFT)) - -#define COMPUTE_PAGES_SPANNED(Va, Size) \ - ADDRESS_AND_SIZE_TO_SPAN_PAGES(Va,Size) - -/* - * ULONG - * MmGetMdlByteCount( - * IN PMDL Mdl) - */ -#define MmGetMdlByteCount(_Mdl) \ - ((_Mdl)->ByteCount) - -/* - * ULONG - * MmGetMdlByteOffset( - * IN PMDL Mdl) - */ -#define MmGetMdlByteOffset(_Mdl) \ - ((_Mdl)->ByteOffset) - -#define MmGetMdlBaseVa(Mdl) ((Mdl)->StartVa) - -/* - * PPFN_NUMBER - * MmGetMdlPfnArray( - * IN PMDL Mdl) - */ -#define MmGetMdlPfnArray(_Mdl) \ - ((PPFN_NUMBER) ((_Mdl) + 1)) - -/* - * PVOID - * MmGetMdlVirtualAddress( - * IN PMDL Mdl) - */ -#define MmGetMdlVirtualAddress(_Mdl) \ - ((PVOID) ((PCHAR) ((_Mdl)->StartVa) + (_Mdl)->ByteOffset)) - -#define MmGetProcedureAddress(Address) (Address) - -/* PVOID MmGetSystemAddressForMdl( - * IN PMDL Mdl); - */ -#define MmGetSystemAddressForMdl(Mdl) \ - (((Mdl)->MdlFlags & (MDL_MAPPED_TO_SYSTEM_VA | \ - MDL_SOURCE_IS_NONPAGED_POOL)) ? \ - ((Mdl)->MappedSystemVa) : \ - (MmMapLockedPages((Mdl), KernelMode))) - -/* PVOID - * MmGetSystemAddressForMdlSafe( - * IN PMDL Mdl, - * IN MM_PAGE_PRIORITY Priority) - */ -#define MmGetSystemAddressForMdlSafe(_Mdl, _Priority) \ - (((_Mdl)->MdlFlags & (MDL_MAPPED_TO_SYSTEM_VA \ - | MDL_SOURCE_IS_NONPAGED_POOL)) ? \ - (_Mdl)->MappedSystemVa : \ - (PVOID) MmMapLockedPagesSpecifyCache((_Mdl), \ - KernelMode, MmCached, NULL, FALSE, (_Priority))) - -/* - * VOID - * MmInitializeMdl( - * IN PMDL MemoryDescriptorList, - * IN PVOID BaseVa, - * IN SIZE_T Length) - */ -#define MmInitializeMdl(_MemoryDescriptorList, \ - _BaseVa, \ - _Length) \ -{ \ - (_MemoryDescriptorList)->Next = (PMDL) NULL; \ - (_MemoryDescriptorList)->Size = (CSHORT) (sizeof(MDL) + \ - (sizeof(PFN_NUMBER) * ADDRESS_AND_SIZE_TO_SPAN_PAGES(_BaseVa, _Length))); \ - (_MemoryDescriptorList)->MdlFlags = 0; \ - (_MemoryDescriptorList)->StartVa = (PVOID) PAGE_ALIGN(_BaseVa); \ - (_MemoryDescriptorList)->ByteOffset = BYTE_OFFSET(_BaseVa); \ - (_MemoryDescriptorList)->ByteCount = (ULONG) _Length; \ -} - -/* - * VOID - * MmPrepareMdlForReuse( - * IN PMDL Mdl) - */ -#define MmPrepareMdlForReuse(_Mdl) \ -{ \ - if (((_Mdl)->MdlFlags & MDL_PARTIAL_HAS_BEEN_MAPPED) != 0) { \ - ASSERT(((_Mdl)->MdlFlags & MDL_PARTIAL) != 0); \ - MmUnmapLockedPages((_Mdl)->MappedSystemVa, (_Mdl)); \ - } else if (((_Mdl)->MdlFlags & MDL_PARTIAL) == 0) { \ - ASSERT(((_Mdl)->MdlFlags & MDL_MAPPED_TO_SYSTEM_VA) == 0); \ - } \ -} -$endif - -#if (NTDDI_VERSION >= NTDDI_WIN2K) -$if (_NTDDK_) -NTKERNELAPI -PPHYSICAL_MEMORY_RANGE -NTAPI -MmGetPhysicalMemoryRanges(VOID); - -NTKERNELAPI -PHYSICAL_ADDRESS -NTAPI -MmGetPhysicalAddress( - IN PVOID BaseAddress); - -NTKERNELAPI -BOOLEAN -NTAPI -MmIsNonPagedSystemAddressValid( - IN PVOID VirtualAddress); - -NTKERNELAPI -PVOID -NTAPI -MmAllocateNonCachedMemory( - IN SIZE_T NumberOfBytes); - -NTKERNELAPI -VOID -NTAPI -MmFreeNonCachedMemory( - IN PVOID BaseAddress, - IN SIZE_T NumberOfBytes); - -NTKERNELAPI -PVOID -NTAPI -MmGetVirtualForPhysical( - IN PHYSICAL_ADDRESS PhysicalAddress); - -NTKERNELAPI -NTSTATUS -NTAPI -MmMapUserAddressesToPage( - IN PVOID BaseAddress, - IN SIZE_T NumberOfBytes, - IN PVOID PageAddress); - -NTKERNELAPI -PVOID -NTAPI -MmMapVideoDisplay( - IN PHYSICAL_ADDRESS PhysicalAddress, - IN SIZE_T NumberOfBytes, - IN MEMORY_CACHING_TYPE CacheType); - -NTKERNELAPI -NTSTATUS -NTAPI -MmMapViewInSessionSpace( - IN PVOID Section, - OUT PVOID *MappedBase, - IN OUT PSIZE_T ViewSize); - -NTKERNELAPI -NTSTATUS -NTAPI -MmMapViewInSystemSpace( - IN PVOID Section, - OUT PVOID *MappedBase, - IN OUT PSIZE_T ViewSize); - -NTKERNELAPI -BOOLEAN -NTAPI -MmIsAddressValid( - IN PVOID VirtualAddress); - -NTKERNELAPI -BOOLEAN -NTAPI -MmIsThisAnNtAsSystem(VOID); - -NTKERNELAPI -VOID -NTAPI -MmLockPagableSectionByHandle( - IN PVOID ImageSectionHandle); - -NTKERNELAPI -NTSTATUS -NTAPI -MmUnmapViewInSessionSpace( - IN PVOID MappedBase); - -NTKERNELAPI -NTSTATUS -NTAPI -MmUnmapViewInSystemSpace( - IN PVOID MappedBase); - -NTKERNELAPI -VOID -NTAPI -MmUnsecureVirtualMemory( - IN HANDLE SecureHandle); - -NTKERNELAPI -NTSTATUS -NTAPI -MmRemovePhysicalMemory( - IN PPHYSICAL_ADDRESS StartAddress, - IN OUT PLARGE_INTEGER NumberOfBytes); - -NTKERNELAPI -HANDLE -NTAPI -MmSecureVirtualMemory( - IN PVOID Address, - IN SIZE_T Size, - IN ULONG ProbeMode); - -NTKERNELAPI -VOID -NTAPI -MmUnmapVideoDisplay( - IN PVOID BaseAddress, - IN SIZE_T NumberOfBytes); - -NTKERNELAPI -NTSTATUS -NTAPI -MmAddPhysicalMemory( - IN PPHYSICAL_ADDRESS StartAddress, - IN OUT PLARGE_INTEGER NumberOfBytes); - -NTKERNELAPI -PVOID -NTAPI -MmAllocateContiguousMemory( - IN SIZE_T NumberOfBytes, - IN PHYSICAL_ADDRESS HighestAcceptableAddress); - -NTKERNELAPI -PVOID -NTAPI -MmAllocateContiguousMemorySpecifyCache( - IN SIZE_T NumberOfBytes, - IN PHYSICAL_ADDRESS LowestAcceptableAddress, - IN PHYSICAL_ADDRESS HighestAcceptableAddress, - IN PHYSICAL_ADDRESS BoundaryAddressMultiple OPTIONAL, - IN MEMORY_CACHING_TYPE CacheType); - -NTKERNELAPI -PVOID -NTAPI -MmAllocateContiguousMemorySpecifyCacheNode( - IN SIZE_T NumberOfBytes, - IN PHYSICAL_ADDRESS LowestAcceptableAddress, - IN PHYSICAL_ADDRESS HighestAcceptableAddress, - IN PHYSICAL_ADDRESS BoundaryAddressMultiple OPTIONAL, - IN MEMORY_CACHING_TYPE CacheType, - IN NODE_REQUIREMENT PreferredNode); - -NTKERNELAPI -VOID -NTAPI -MmFreeContiguousMemory( - IN PVOID BaseAddress); - -NTKERNELAPI -VOID -NTAPI -MmFreeContiguousMemorySpecifyCache( - IN PVOID BaseAddress, - IN SIZE_T NumberOfBytes, - IN MEMORY_CACHING_TYPE CacheType); -$endif - -$if (_WDMDDK_) -NTKERNELAPI -PVOID -NTAPI -MmAllocateContiguousMemory( - IN SIZE_T NumberOfBytes, - IN PHYSICAL_ADDRESS HighestAcceptableAddress); - -NTKERNELAPI -PVOID -NTAPI -MmAllocateContiguousMemorySpecifyCache( - IN SIZE_T NumberOfBytes, - IN PHYSICAL_ADDRESS LowestAcceptableAddress, - IN PHYSICAL_ADDRESS HighestAcceptableAddress, - IN PHYSICAL_ADDRESS BoundaryAddressMultiple OPTIONAL, - IN MEMORY_CACHING_TYPE CacheType); - -NTKERNELAPI -PMDL -NTAPI -MmAllocatePagesForMdl( - IN PHYSICAL_ADDRESS LowAddress, - IN PHYSICAL_ADDRESS HighAddress, - IN PHYSICAL_ADDRESS SkipBytes, - IN SIZE_T TotalBytes); - -NTKERNELAPI -VOID -NTAPI -MmBuildMdlForNonPagedPool( - IN OUT PMDLX MemoryDescriptorList); - -//DECLSPEC_DEPRECATED_DDK -NTKERNELAPI -PMDL -NTAPI -MmCreateMdl( - IN PMDL MemoryDescriptorList OPTIONAL, - IN PVOID Base, - IN SIZE_T Length); - -NTKERNELAPI -VOID -NTAPI -MmFreeContiguousMemory( - IN PVOID BaseAddress); - -NTKERNELAPI -VOID -NTAPI -MmFreeContiguousMemorySpecifyCache( - IN PVOID BaseAddress, - IN SIZE_T NumberOfBytes, - IN MEMORY_CACHING_TYPE CacheType); - -NTKERNELAPI -VOID -NTAPI -MmFreePagesFromMdl( - IN PMDLX MemoryDescriptorList); - -NTKERNELAPI -PVOID -NTAPI -MmGetSystemRoutineAddress( - IN PUNICODE_STRING SystemRoutineName); - -NTKERNELAPI -LOGICAL -NTAPI -MmIsDriverVerifying( - IN struct _DRIVER_OBJECT *DriverObject); - -NTKERNELAPI -PVOID -NTAPI -MmLockPagableDataSection( - IN PVOID AddressWithinSection); - -NTKERNELAPI -PVOID -NTAPI -MmMapIoSpace( - IN PHYSICAL_ADDRESS PhysicalAddress, - IN SIZE_T NumberOfBytes, - IN MEMORY_CACHING_TYPE CacheEnable); - -NTKERNELAPI -PVOID -NTAPI -MmMapLockedPages( - IN PMDL MemoryDescriptorList, - IN KPROCESSOR_MODE AccessMode); - -NTKERNELAPI -PVOID -NTAPI -MmMapLockedPagesSpecifyCache( - IN PMDLX MemoryDescriptorList, - IN KPROCESSOR_MODE AccessMode, - IN MEMORY_CACHING_TYPE CacheType, - IN PVOID BaseAddress OPTIONAL, - IN ULONG BugCheckOnFailure, - IN MM_PAGE_PRIORITY Priority); - -NTKERNELAPI -PVOID -NTAPI -MmPageEntireDriver( - IN PVOID AddressWithinSection); - -NTKERNELAPI -VOID -NTAPI -MmProbeAndLockPages( - IN OUT PMDL MemoryDescriptorList, - IN KPROCESSOR_MODE AccessMode, - IN LOCK_OPERATION Operation); - -NTKERNELAPI -MM_SYSTEMSIZE -NTAPI -MmQuerySystemSize(VOID); - -NTKERNELAPI -VOID -NTAPI -MmResetDriverPaging( - IN PVOID AddressWithinSection); - -NTKERNELAPI -SIZE_T -NTAPI -MmSizeOfMdl( - IN PVOID Base, - IN SIZE_T Length); - -NTKERNELAPI -VOID -NTAPI -MmUnlockPagableImageSection( - IN PVOID ImageSectionHandle); - -NTKERNELAPI -VOID -NTAPI -MmUnlockPages( - IN OUT PMDL MemoryDescriptorList); - -NTKERNELAPI -VOID -NTAPI -MmUnmapIoSpace( - IN PVOID BaseAddress, - IN SIZE_T NumberOfBytes); - -NTKERNELAPI -VOID -NTAPI -MmProbeAndLockProcessPages( - IN OUT PMDL MemoryDescriptorList, - IN PEPROCESS Process, - IN KPROCESSOR_MODE AccessMode, - IN LOCK_OPERATION Operation); - -NTKERNELAPI -VOID -NTAPI -MmUnmapLockedPages( - IN PVOID BaseAddress, - IN PMDL MemoryDescriptorList); - -NTKERNELAPI -PVOID -NTAPI -MmAllocateContiguousMemorySpecifyCacheNode( - IN SIZE_T NumberOfBytes, - IN PHYSICAL_ADDRESS LowestAcceptableAddress, - IN PHYSICAL_ADDRESS HighestAcceptableAddress, - IN PHYSICAL_ADDRESS BoundaryAddressMultiple OPTIONAL, - IN MEMORY_CACHING_TYPE CacheType, - IN NODE_REQUIREMENT PreferredNode); -$endif - -#endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */ - -#if (NTDDI_VERSION >= NTDDI_WINXP) - -NTKERNELAPI -NTSTATUS -NTAPI -MmAdvanceMdl( - IN OUT PMDL Mdl, - IN ULONG NumberOfBytes); - -NTKERNELAPI -PVOID -NTAPI -MmAllocateMappingAddress( - IN SIZE_T NumberOfBytes, - IN ULONG PoolTag); - -NTKERNELAPI -VOID -NTAPI -MmFreeMappingAddress( - IN PVOID BaseAddress, - IN ULONG PoolTag); - -NTKERNELAPI -NTSTATUS -NTAPI -MmIsVerifierEnabled( - OUT PULONG VerifierFlags); - -NTKERNELAPI -PVOID -NTAPI -MmMapLockedPagesWithReservedMapping( - IN PVOID MappingAddress, - IN ULONG PoolTag, - IN PMDL MemoryDescriptorList, - IN MEMORY_CACHING_TYPE CacheType); - -NTKERNELAPI -NTSTATUS -NTAPI -MmProtectMdlSystemAddress( - IN PMDL MemoryDescriptorList, - IN ULONG NewProtect); - -NTKERNELAPI -VOID -NTAPI -MmUnmapReservedMapping( - IN PVOID BaseAddress, - IN ULONG PoolTag, - IN PMDL MemoryDescriptorList); - -NTKERNELAPI -NTSTATUS -NTAPI -MmAddVerifierThunks( - IN PVOID ThunkBuffer, - IN ULONG ThunkBufferSize); - -#endif /* (NTDDI_VERSION >= NTDDI_WINXP) */ - -#if (NTDDI_VERSION >= NTDDI_WS03) -$if (_NTDDK_) -NTKERNELAPI -NTSTATUS -NTAPI -MmCreateMirror(VOID); -$endif -$if (_WDMDDK_) -NTKERNELAPI -LOGICAL -NTAPI -MmIsIoSpaceActive( - IN PHYSICAL_ADDRESS StartAddress, - IN SIZE_T NumberOfBytes); -$endif -#endif - -$if (_WDMDDK_) -#if (NTDDI_VERSION >= NTDDI_WS03SP1) -NTKERNELAPI -PMDL -NTAPI -MmAllocatePagesForMdlEx( - IN PHYSICAL_ADDRESS LowAddress, - IN PHYSICAL_ADDRESS HighAddress, - IN PHYSICAL_ADDRESS SkipBytes, - IN SIZE_T TotalBytes, - IN MEMORY_CACHING_TYPE CacheType, - IN ULONG Flags); -#endif -$endif - -#if (NTDDI_VERSION >= NTDDI_VISTA) -$if (_NTDDK_) -NTSTATUS -NTAPI -MmRotatePhysicalView( - IN PVOID VirtualAddress, - IN OUT PSIZE_T NumberOfBytes, - IN PMDLX NewMdl OPTIONAL, - IN MM_ROTATE_DIRECTION Direction, - IN PMM_ROTATE_COPY_CALLBACK_FUNCTION CopyFunction, - IN PVOID Context OPTIONAL); -$endif - -$if (_WDMDDK_) -NTKERNELAPI -LOGICAL -NTAPI -MmIsDriverVerifyingByAddress( - IN PVOID AddressWithinSection); -$endif -#endif - diff --git a/reactos/include/xdk/mmtypes.h b/reactos/include/xdk/mmtypes.h deleted file mode 100644 index e4a23f48215..00000000000 --- a/reactos/include/xdk/mmtypes.h +++ /dev/null @@ -1,171 +0,0 @@ -/****************************************************************************** - * Memory manager Types * - ******************************************************************************/ -$if (_WDMDDK_) - -#if (NTDDI_VERSION >= NTDDI_WIN2K) -typedef ULONG NODE_REQUIREMENT; -#define MM_ANY_NODE_OK 0x80000000 -#endif - -#define MM_DONT_ZERO_ALLOCATION 0x00000001 -#define MM_ALLOCATE_FROM_LOCAL_NODE_ONLY 0x00000002 -#define MM_ALLOCATE_FULLY_REQUIRED 0x00000004 -#define MM_ALLOCATE_NO_WAIT 0x00000008 -#define MM_ALLOCATE_PREFER_CONTIGUOUS 0x00000010 -#define MM_ALLOCATE_REQUIRE_CONTIGUOUS_CHUNKS 0x00000020 - -#define MDL_MAPPED_TO_SYSTEM_VA 0x0001 -#define MDL_PAGES_LOCKED 0x0002 -#define MDL_SOURCE_IS_NONPAGED_POOL 0x0004 -#define MDL_ALLOCATED_FIXED_SIZE 0x0008 -#define MDL_PARTIAL 0x0010 -#define MDL_PARTIAL_HAS_BEEN_MAPPED 0x0020 -#define MDL_IO_PAGE_READ 0x0040 -#define MDL_WRITE_OPERATION 0x0080 -#define MDL_PARENT_MAPPED_SYSTEM_VA 0x0100 -#define MDL_FREE_EXTRA_PTES 0x0200 -#define MDL_DESCRIBES_AWE 0x0400 -#define MDL_IO_SPACE 0x0800 -#define MDL_NETWORK_HEADER 0x1000 -#define MDL_MAPPING_CAN_FAIL 0x2000 -#define MDL_ALLOCATED_MUST_SUCCEED 0x4000 -#define MDL_INTERNAL 0x8000 - -#define MDL_MAPPING_FLAGS ( \ - MDL_MAPPED_TO_SYSTEM_VA | \ - MDL_PAGES_LOCKED | \ - MDL_SOURCE_IS_NONPAGED_POOL | \ - MDL_PARTIAL_HAS_BEEN_MAPPED | \ - MDL_PARENT_MAPPED_SYSTEM_VA | \ - MDL_SYSTEM_VA | \ - MDL_IO_SPACE) - -#define FLUSH_MULTIPLE_MAXIMUM 32 - -/* Section access rights */ -#define SECTION_QUERY 0x0001 -#define SECTION_MAP_WRITE 0x0002 -#define SECTION_MAP_READ 0x0004 -#define SECTION_MAP_EXECUTE 0x0008 -#define SECTION_EXTEND_SIZE 0x0010 -#define SECTION_MAP_EXECUTE_EXPLICIT 0x0020 - -#define SECTION_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SECTION_QUERY|\ - SECTION_MAP_WRITE | \ - SECTION_MAP_READ | \ - SECTION_MAP_EXECUTE | \ - SECTION_EXTEND_SIZE) - -#define SESSION_QUERY_ACCESS 0x0001 -#define SESSION_MODIFY_ACCESS 0x0002 - -#define SESSION_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | \ - SESSION_QUERY_ACCESS | \ - SESSION_MODIFY_ACCESS) - -#define SEGMENT_ALL_ACCESS SECTION_ALL_ACCESS - -#define PAGE_NOACCESS 0x01 -#define PAGE_READONLY 0x02 -#define PAGE_READWRITE 0x04 -#define PAGE_WRITECOPY 0x08 -#define PAGE_EXECUTE 0x10 -#define PAGE_EXECUTE_READ 0x20 -#define PAGE_EXECUTE_READWRITE 0x40 -#define PAGE_EXECUTE_WRITECOPY 0x80 -#define PAGE_GUARD 0x100 -#define PAGE_NOCACHE 0x200 -#define PAGE_WRITECOMBINE 0x400 - -#define MEM_COMMIT 0x1000 -#define MEM_RESERVE 0x2000 -#define MEM_DECOMMIT 0x4000 -#define MEM_RELEASE 0x8000 -#define MEM_FREE 0x10000 -#define MEM_PRIVATE 0x20000 -#define MEM_MAPPED 0x40000 -#define MEM_RESET 0x80000 -#define MEM_TOP_DOWN 0x100000 -#define MEM_LARGE_PAGES 0x20000000 -#define MEM_4MB_PAGES 0x80000000 - -#define SEC_RESERVE 0x4000000 -#define SEC_COMMIT 0x8000000 -#define SEC_LARGE_PAGES 0x80000000 - -/* Section map options */ -typedef enum _SECTION_INHERIT { - ViewShare = 1, - ViewUnmap = 2 -} SECTION_INHERIT; - -typedef ULONG PFN_COUNT; -typedef LONG_PTR SPFN_NUMBER, *PSPFN_NUMBER; -typedef ULONG_PTR PFN_NUMBER, *PPFN_NUMBER; - -typedef struct _MDL { - struct _MDL *Next; - CSHORT Size; - CSHORT MdlFlags; - struct _EPROCESS *Process; - PVOID MappedSystemVa; - PVOID StartVa; - ULONG ByteCount; - ULONG ByteOffset; -} MDL, *PMDL; -typedef MDL *PMDLX; - -typedef enum _MEMORY_CACHING_TYPE_ORIG { - MmFrameBufferCached = 2 -} MEMORY_CACHING_TYPE_ORIG; - -typedef enum _MEMORY_CACHING_TYPE { - MmNonCached = FALSE, - MmCached = TRUE, - MmWriteCombined = MmFrameBufferCached, - MmHardwareCoherentCached, - MmNonCachedUnordered, - MmUSWCCached, - MmMaximumCacheType -} MEMORY_CACHING_TYPE; - -typedef enum _MM_PAGE_PRIORITY { - LowPagePriority, - NormalPagePriority = 16, - HighPagePriority = 32 -} MM_PAGE_PRIORITY; - -typedef enum _MM_SYSTEM_SIZE { - MmSmallSystem, - MmMediumSystem, - MmLargeSystem -} MM_SYSTEMSIZE; - -extern NTKERNELAPI BOOLEAN Mm64BitPhysicalAddress; -extern PVOID MmBadPointer; - -$endif /* _WDMDDK_ */ -$if (_NTDDK_) - -typedef struct _PHYSICAL_MEMORY_RANGE { - PHYSICAL_ADDRESS BaseAddress; - LARGE_INTEGER NumberOfBytes; -} PHYSICAL_MEMORY_RANGE, *PPHYSICAL_MEMORY_RANGE; - -typedef NTSTATUS -(NTAPI *PMM_ROTATE_COPY_CALLBACK_FUNCTION)( - IN PMDL DestinationMdl, - IN PMDL SourceMdl, - IN PVOID Context); - -typedef enum _MM_ROTATE_DIRECTION { - MmToFrameBuffer, - MmToFrameBufferNoCopy, - MmToRegularMemory, - MmToRegularMemoryNoCopy, - MmMaximumRotateDirection -} MM_ROTATE_DIRECTION, *PMM_ROTATE_DIRECTION; - -$endif /* _NTDDK_ */ - diff --git a/reactos/include/xdk/ntddk.template.h b/reactos/include/xdk/ntddk.template.h deleted file mode 100644 index 003e9b7397d..00000000000 --- a/reactos/include/xdk/ntddk.template.h +++ /dev/null @@ -1,262 +0,0 @@ -/* - * ntddk.h - * - * Windows NT Device Driver Kit - * - * This file is part of the ReactOS DDK package. - * - * Contributors: - * Amine Khaldi - * Timo Kreuzer (timo.kreuzer@reactos.org) - * - * THIS SOFTWARE IS NOT COPYRIGHTED - * - * This source code is offered for use in the public domain. You may - * use, modify or distribute it freely. - * - * This code is distributed in the hope that it will be useful but - * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY - * DISCLAIMED. This includes but is not limited to warranties of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - * - */ - -#pragma once - -#define _NTDDK_ - -#if !defined(_NTHAL_) && !defined(_NTIFS_) -#define _NTDDK_INCLUDED_ -#define _DDK_DRIVER_ -#endif - -/* Dependencies */ - -#define NT_INCLUDED -#define _CTYPE_DISABLE_MACROS - -#include -#include -#include -#include -#include - -/* FIXME -#include -#include -*/ - -#include // FIXME -#include // FIXME - - -#ifdef __cplusplus -extern "C" { -#endif - -/* GUID and UUID */ -#ifndef _NTLSA_IFS_ -#ifndef _NTLSA_AUDIT_ -#define _NTLSA_AUDIT_ - -#ifndef GUID_DEFINED -#include -#endif - -#endif /* _NTLSA_AUDIT_ */ -#endif /* _NTLSA_IFS_ */ - -typedef GUID UUID; - -struct _LOADER_PARAMETER_BLOCK; -struct _CREATE_DISK; -struct _DRIVE_LAYOUT_INFORMATION_EX; -struct _SET_PARTITION_INFORMATION_EX; - -typedef struct _BUS_HANDLER *PBUS_HANDLER; -typedef struct _DEVICE_HANDLER_OBJECT *PDEVICE_HANDLER_OBJECT; -#if defined(_NTHAL_INCLUDED_) -typedef struct _KAFFINITY_EX *PKAFFINITY_EX; -#endif -typedef struct _PEB *PPEB; - -#ifndef _NTIMAGE_ - -typedef struct _IMAGE_NT_HEADERS *PIMAGE_NT_HEADERS32; -typedef struct _IMAGE_NT_HEADERS64 *PIMAGE_NT_HEADERS64; - -#ifdef _WIN64 -typedef PIMAGE_NT_HEADERS64 PIMAGE_NT_HEADERS; -#else -typedef PIMAGE_NT_HEADERS32 PIMAGE_NT_HEADERS; -#endif - -#endif /* _NTIMAGE_ */ - -$define (_NTDDK_) -$include (extypes.h) -$include (iotypes.h) -$include (haltypes.h) -$include (ketypes.h) -$include (kdtypes.h) -$include (mmtypes.h) -$include (pstypes.h) -$include (rtltypes.h) -$include (setypes.h) - -#if defined(_M_IX86) -$include(x86/ke.h) -$include(x86/mm.h) -#elif defined(_M_AMD64) -$include(amd64/ke.h) -$include(amd64/mm.h) -#elif defined(_M_IA64) -$include(ia64/ke.h) -#elif defined(_M_PPC) -$include(ppc/ke.h) -#elif defined(_M_MIPS) -$include(mips/ke.h) -#elif defined(_M_ARM) -$include(arm/ke.h) -#else -#error Unknown Architecture -#endif - -$include (exfuncs.h) -$include (halfuncs.h) -$include (iofuncs.h) -$include (kdfuncs.h) -$include (kefuncs.h) -$include (mmfuncs.h) -$include (psfuncs.h) -$include (rtlfuncs.h) -$include (sefuncs.h) -$include (zwfuncs.h) - - -/* UNSORTED */ - -#define VER_SET_CONDITION(ConditionMask, TypeBitMask, ComparisonType) \ - ((ConditionMask) = VerSetConditionMask((ConditionMask), \ - (TypeBitMask), (ComparisonType))) - -#if (NTDDI_VERSION >= NTDDI_WIN2K) -NTSYSAPI -ULONGLONG -NTAPI -VerSetConditionMask( - IN ULONGLONG ConditionMask, - IN ULONG TypeMask, - IN UCHAR Condition); -#endif - -typedef struct _KERNEL_USER_TIMES { - LARGE_INTEGER CreateTime; - LARGE_INTEGER ExitTime; - LARGE_INTEGER KernelTime; - LARGE_INTEGER UserTime; -} KERNEL_USER_TIMES, *PKERNEL_USER_TIMES; - -/* NtXxx Functions */ - -typedef enum _SYSTEM_FIRMWARE_TABLE_ACTION { - SystemFirmwareTable_Enumerate, - SystemFirmwareTable_Get -} SYSTEM_FIRMWARE_TABLE_ACTION; - -typedef struct _SYSTEM_FIRMWARE_TABLE_INFORMATION { - ULONG ProviderSignature; - SYSTEM_FIRMWARE_TABLE_ACTION Action; - ULONG TableID; - ULONG TableBufferLength; - UCHAR TableBuffer[ANYSIZE_ARRAY]; -} SYSTEM_FIRMWARE_TABLE_INFORMATION, *PSYSTEM_FIRMWARE_TABLE_INFORMATION; - -typedef NTSTATUS -(__cdecl *PFNFTH)( - IN OUT PSYSTEM_FIRMWARE_TABLE_INFORMATION SystemFirmwareTableInfo); - -typedef struct _SYSTEM_FIRMWARE_TABLE_HANDLER { - ULONG ProviderSignature; - BOOLEAN Register; - PFNFTH FirmwareTableHandler; - PVOID DriverObject; -} SYSTEM_FIRMWARE_TABLE_HANDLER, *PSYSTEM_FIRMWARE_TABLE_HANDLER; - -typedef ULONG_PTR -(NTAPI *PDRIVER_VERIFIER_THUNK_ROUTINE)( - IN PVOID Context); - -typedef struct _DRIVER_VERIFIER_THUNK_PAIRS { - PDRIVER_VERIFIER_THUNK_ROUTINE PristineRoutine; - PDRIVER_VERIFIER_THUNK_ROUTINE NewRoutine; -} DRIVER_VERIFIER_THUNK_PAIRS, *PDRIVER_VERIFIER_THUNK_PAIRS; - -#define DRIVER_VERIFIER_SPECIAL_POOLING 0x0001 -#define DRIVER_VERIFIER_FORCE_IRQL_CHECKING 0x0002 -#define DRIVER_VERIFIER_INJECT_ALLOCATION_FAILURES 0x0004 -#define DRIVER_VERIFIER_TRACK_POOL_ALLOCATIONS 0x0008 -#define DRIVER_VERIFIER_IO_CHECKING 0x0010 - -#define SHARED_GLOBAL_FLAGS_ERROR_PORT_V 0x0 -#define SHARED_GLOBAL_FLAGS_ERROR_PORT (1UL << SHARED_GLOBAL_FLAGS_ERROR_PORT_V) - -#define SHARED_GLOBAL_FLAGS_ELEVATION_ENABLED_V 0x1 -#define SHARED_GLOBAL_FLAGS_ELEVATION_ENABLED (1UL << SHARED_GLOBAL_FLAGS_ELEVATION_ENABLED_V) - -#define SHARED_GLOBAL_FLAGS_VIRT_ENABLED_V 0x2 -#define SHARED_GLOBAL_FLAGS_VIRT_ENABLED (1UL << SHARED_GLOBAL_FLAGS_VIRT_ENABLED_V) - -#define SHARED_GLOBAL_FLAGS_INSTALLER_DETECT_ENABLED_V 0x3 -#define SHARED_GLOBAL_FLAGS_INSTALLER_DETECT_ENABLED \ - (1UL << SHARED_GLOBAL_FLAGS_INSTALLER_DETECT_ENABLED_V) - -#define SHARED_GLOBAL_FLAGS_SPARE_V 0x4 -#define SHARED_GLOBAL_FLAGS_SPARE \ - (1UL << SHARED_GLOBAL_FLAGS_SPARE_V) - -#define SHARED_GLOBAL_FLAGS_DYNAMIC_PROC_ENABLED_V 0x5 -#define SHARED_GLOBAL_FLAGS_DYNAMIC_PROC_ENABLED \ - (1UL << SHARED_GLOBAL_FLAGS_DYNAMIC_PROC_ENABLED_V) - -#define SHARED_GLOBAL_FLAGS_SEH_VALIDATION_ENABLED_V 0x6 -#define SHARED_GLOBAL_FLAGS_SEH_VALIDATION_ENABLED \ - (1UL << SHARED_GLOBAL_FLAGS_SEH_VALIDATION_ENABLED_V) - -#define EX_INIT_BITS(Flags, Bit) \ - *((Flags)) |= (Bit) // Safe to use before concurrently accessible - -#define EX_TEST_SET_BIT(Flags, Bit) \ - InterlockedBitTestAndSet ((PLONG)(Flags), (Bit)) - -#define EX_TEST_CLEAR_BIT(Flags, Bit) \ - InterlockedBitTestAndReset ((PLONG)(Flags), (Bit)) - -#define PCCARD_MAP_ERROR 0x01 -#define PCCARD_DEVICE_PCI 0x10 - -#define PCCARD_SCAN_DISABLED 0x01 -#define PCCARD_MAP_ZERO 0x02 -#define PCCARD_NO_TIMER 0x03 -#define PCCARD_NO_PIC 0x04 -#define PCCARD_NO_LEGACY_BASE 0x05 -#define PCCARD_DUP_LEGACY_BASE 0x06 -#define PCCARD_NO_CONTROLLERS 0x07 - -#define MAXIMUM_EXPANSION_SIZE (KERNEL_LARGE_STACK_SIZE - (PAGE_SIZE / 2)) - -/* Filesystem runtime library routines */ - -#if (NTDDI_VERSION >= NTDDI_WIN2K) -NTKERNELAPI -BOOLEAN -NTAPI -FsRtlIsTotalDeviceFailure( - IN NTSTATUS Status); -#endif - -/* FIXME : These definitions below doesn't belong to NTDDK */ - -#ifdef __cplusplus -} -#endif diff --git a/reactos/include/xdk/nttmapi.h b/reactos/include/xdk/nttmapi.h deleted file mode 100644 index 721005fdd88..00000000000 --- a/reactos/include/xdk/nttmapi.h +++ /dev/null @@ -1,652 +0,0 @@ -$if (_WDMDDK_) -#ifndef _NTTMAPI_ -#define _NTTMAPI_ - -#include - -#define TRANSACTIONMANAGER_QUERY_INFORMATION (0x0001) -#define TRANSACTIONMANAGER_SET_INFORMATION (0x0002) -#define TRANSACTIONMANAGER_RECOVER (0x0004) -#define TRANSACTIONMANAGER_RENAME (0x0008) -#define TRANSACTIONMANAGER_CREATE_RM (0x0010) -#define TRANSACTIONMANAGER_BIND_TRANSACTION (0x0020) - -#define TRANSACTIONMANAGER_GENERIC_READ (STANDARD_RIGHTS_READ |\ - TRANSACTIONMANAGER_QUERY_INFORMATION) - -#define TRANSACTIONMANAGER_GENERIC_WRITE (STANDARD_RIGHTS_WRITE |\ - TRANSACTIONMANAGER_SET_INFORMATION |\ - TRANSACTIONMANAGER_RECOVER |\ - TRANSACTIONMANAGER_RENAME |\ - TRANSACTIONMANAGER_CREATE_RM) - -#define TRANSACTIONMANAGER_GENERIC_EXECUTE (STANDARD_RIGHTS_EXECUTE) - -#define TRANSACTIONMANAGER_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED |\ - TRANSACTIONMANAGER_GENERIC_READ |\ - TRANSACTIONMANAGER_GENERIC_WRITE |\ - TRANSACTIONMANAGER_GENERIC_EXECUTE |\ - TRANSACTIONMANAGER_BIND_TRANSACTION) - -#define TRANSACTION_QUERY_INFORMATION (0x0001) -#define TRANSACTION_SET_INFORMATION (0x0002) -#define TRANSACTION_ENLIST (0x0004) -#define TRANSACTION_COMMIT (0x0008) -#define TRANSACTION_ROLLBACK (0x0010) -#define TRANSACTION_PROPAGATE (0x0020) -#define TRANSACTION_RIGHT_RESERVED1 (0x0040) - -#define TRANSACTION_GENERIC_READ (STANDARD_RIGHTS_READ |\ - TRANSACTION_QUERY_INFORMATION |\ - SYNCHRONIZE) - -#define TRANSACTION_GENERIC_WRITE (STANDARD_RIGHTS_WRITE |\ - TRANSACTION_SET_INFORMATION |\ - TRANSACTION_COMMIT |\ - TRANSACTION_ENLIST |\ - TRANSACTION_ROLLBACK |\ - TRANSACTION_PROPAGATE |\ - SYNCHRONIZE) - -#define TRANSACTION_GENERIC_EXECUTE (STANDARD_RIGHTS_EXECUTE |\ - TRANSACTION_COMMIT |\ - TRANSACTION_ROLLBACK |\ - SYNCHRONIZE) - -#define TRANSACTION_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED |\ - TRANSACTION_GENERIC_READ |\ - TRANSACTION_GENERIC_WRITE |\ - TRANSACTION_GENERIC_EXECUTE) - -#define TRANSACTION_RESOURCE_MANAGER_RIGHTS (TRANSACTION_GENERIC_READ |\ - STANDARD_RIGHTS_WRITE |\ - TRANSACTION_SET_INFORMATION |\ - TRANSACTION_ENLIST |\ - TRANSACTION_ROLLBACK |\ - TRANSACTION_PROPAGATE |\ - SYNCHRONIZE) - -#define RESOURCEMANAGER_QUERY_INFORMATION (0x0001) -#define RESOURCEMANAGER_SET_INFORMATION (0x0002) -#define RESOURCEMANAGER_RECOVER (0x0004) -#define RESOURCEMANAGER_ENLIST (0x0008) -#define RESOURCEMANAGER_GET_NOTIFICATION (0x0010) -#define RESOURCEMANAGER_REGISTER_PROTOCOL (0x0020) -#define RESOURCEMANAGER_COMPLETE_PROPAGATION (0x0040) - -#define RESOURCEMANAGER_GENERIC_READ (STANDARD_RIGHTS_READ |\ - RESOURCEMANAGER_QUERY_INFORMATION |\ - SYNCHRONIZE) - -#define RESOURCEMANAGER_GENERIC_WRITE (STANDARD_RIGHTS_WRITE |\ - RESOURCEMANAGER_SET_INFORMATION |\ - RESOURCEMANAGER_RECOVER |\ - RESOURCEMANAGER_ENLIST |\ - RESOURCEMANAGER_GET_NOTIFICATION |\ - RESOURCEMANAGER_REGISTER_PROTOCOL |\ - RESOURCEMANAGER_COMPLETE_PROPAGATION |\ - SYNCHRONIZE) - -#define RESOURCEMANAGER_GENERIC_EXECUTE (STANDARD_RIGHTS_EXECUTE |\ - RESOURCEMANAGER_RECOVER |\ - RESOURCEMANAGER_ENLIST |\ - RESOURCEMANAGER_GET_NOTIFICATION |\ - RESOURCEMANAGER_COMPLETE_PROPAGATION |\ - SYNCHRONIZE) - -#define RESOURCEMANAGER_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED |\ - RESOURCEMANAGER_GENERIC_READ |\ - RESOURCEMANAGER_GENERIC_WRITE |\ - RESOURCEMANAGER_GENERIC_EXECUTE) - -#define ENLISTMENT_QUERY_INFORMATION (0x0001) -#define ENLISTMENT_SET_INFORMATION (0x0002) -#define ENLISTMENT_RECOVER (0x0004) -#define ENLISTMENT_SUBORDINATE_RIGHTS (0x0008) -#define ENLISTMENT_SUPERIOR_RIGHTS (0x0010) - -#define ENLISTMENT_GENERIC_READ (STANDARD_RIGHTS_READ |\ - ENLISTMENT_QUERY_INFORMATION) - -#define ENLISTMENT_GENERIC_WRITE (STANDARD_RIGHTS_WRITE |\ - ENLISTMENT_SET_INFORMATION |\ - ENLISTMENT_RECOVER |\ - ENLISTMENT_SUBORDINATE_RIGHTS |\ - ENLISTMENT_SUPERIOR_RIGHTS) - -#define ENLISTMENT_GENERIC_EXECUTE (STANDARD_RIGHTS_EXECUTE |\ - ENLISTMENT_RECOVER |\ - ENLISTMENT_SUBORDINATE_RIGHTS |\ - ENLISTMENT_SUPERIOR_RIGHTS) - -#define ENLISTMENT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED |\ - ENLISTMENT_GENERIC_READ |\ - ENLISTMENT_GENERIC_WRITE |\ - ENLISTMENT_GENERIC_EXECUTE) - -typedef enum _TRANSACTION_OUTCOME { - TransactionOutcomeUndetermined = 1, - TransactionOutcomeCommitted, - TransactionOutcomeAborted, -} TRANSACTION_OUTCOME; - - -typedef enum _TRANSACTION_STATE { - TransactionStateNormal = 1, - TransactionStateIndoubt, - TransactionStateCommittedNotify, -} TRANSACTION_STATE; - - -typedef struct _TRANSACTION_BASIC_INFORMATION { - GUID TransactionId; - ULONG State; - ULONG Outcome; -} TRANSACTION_BASIC_INFORMATION, *PTRANSACTION_BASIC_INFORMATION; - -typedef struct _TRANSACTIONMANAGER_BASIC_INFORMATION { - GUID TmIdentity; - LARGE_INTEGER VirtualClock; -} TRANSACTIONMANAGER_BASIC_INFORMATION, *PTRANSACTIONMANAGER_BASIC_INFORMATION; - -typedef struct _TRANSACTIONMANAGER_LOG_INFORMATION { - GUID LogIdentity; -} TRANSACTIONMANAGER_LOG_INFORMATION, *PTRANSACTIONMANAGER_LOG_INFORMATION; - -typedef struct _TRANSACTIONMANAGER_LOGPATH_INFORMATION { - ULONG LogPathLength; - WCHAR LogPath[1]; -} TRANSACTIONMANAGER_LOGPATH_INFORMATION, *PTRANSACTIONMANAGER_LOGPATH_INFORMATION; - -typedef struct _TRANSACTIONMANAGER_RECOVERY_INFORMATION { - ULONGLONG LastRecoveredLsn; -} TRANSACTIONMANAGER_RECOVERY_INFORMATION, *PTRANSACTIONMANAGER_RECOVERY_INFORMATION; - -typedef struct _TRANSACTION_PROPERTIES_INFORMATION { - ULONG IsolationLevel; - ULONG IsolationFlags; - LARGE_INTEGER Timeout; - ULONG Outcome; - ULONG DescriptionLength; - WCHAR Description[1]; -} TRANSACTION_PROPERTIES_INFORMATION, *PTRANSACTION_PROPERTIES_INFORMATION; - -typedef struct _TRANSACTION_BIND_INFORMATION { - HANDLE TmHandle; -} TRANSACTION_BIND_INFORMATION, *PTRANSACTION_BIND_INFORMATION; - -typedef struct _TRANSACTION_ENLISTMENT_PAIR { - GUID EnlistmentId; - GUID ResourceManagerId; -} TRANSACTION_ENLISTMENT_PAIR, *PTRANSACTION_ENLISTMENT_PAIR; - -typedef struct _TRANSACTION_ENLISTMENTS_INFORMATION { - ULONG NumberOfEnlistments; - TRANSACTION_ENLISTMENT_PAIR EnlistmentPair[1]; -} TRANSACTION_ENLISTMENTS_INFORMATION, *PTRANSACTION_ENLISTMENTS_INFORMATION; - -typedef struct _TRANSACTION_SUPERIOR_ENLISTMENT_INFORMATION { - TRANSACTION_ENLISTMENT_PAIR SuperiorEnlistmentPair; -} TRANSACTION_SUPERIOR_ENLISTMENT_INFORMATION, *PTRANSACTION_SUPERIOR_ENLISTMENT_INFORMATION; - -typedef struct _RESOURCEMANAGER_BASIC_INFORMATION { - GUID ResourceManagerId; - ULONG DescriptionLength; - WCHAR Description[1]; -} RESOURCEMANAGER_BASIC_INFORMATION, *PRESOURCEMANAGER_BASIC_INFORMATION; - -typedef struct _RESOURCEMANAGER_COMPLETION_INFORMATION { - HANDLE IoCompletionPortHandle; - ULONG_PTR CompletionKey; -} RESOURCEMANAGER_COMPLETION_INFORMATION, *PRESOURCEMANAGER_COMPLETION_INFORMATION; - -typedef enum _KTMOBJECT_TYPE { - KTMOBJECT_TRANSACTION, - KTMOBJECT_TRANSACTION_MANAGER, - KTMOBJECT_RESOURCE_MANAGER, - KTMOBJECT_ENLISTMENT, - KTMOBJECT_INVALID -} KTMOBJECT_TYPE, *PKTMOBJECT_TYPE; - -typedef struct _KTMOBJECT_CURSOR { - GUID LastQuery; - ULONG ObjectIdCount; - GUID ObjectIds[1]; -} KTMOBJECT_CURSOR, *PKTMOBJECT_CURSOR; - -typedef enum _TRANSACTION_INFORMATION_CLASS { - TransactionBasicInformation, - TransactionPropertiesInformation, - TransactionEnlistmentInformation, - TransactionSuperiorEnlistmentInformation -} TRANSACTION_INFORMATION_CLASS; - -typedef enum _TRANSACTIONMANAGER_INFORMATION_CLASS { - TransactionManagerBasicInformation, - TransactionManagerLogInformation, - TransactionManagerLogPathInformation, - TransactionManagerRecoveryInformation = 4 -} TRANSACTIONMANAGER_INFORMATION_CLASS; - -typedef enum _RESOURCEMANAGER_INFORMATION_CLASS { - ResourceManagerBasicInformation, - ResourceManagerCompletionInformation, -} RESOURCEMANAGER_INFORMATION_CLASS; - -typedef struct _ENLISTMENT_BASIC_INFORMATION { - GUID EnlistmentId; - GUID TransactionId; - GUID ResourceManagerId; -} ENLISTMENT_BASIC_INFORMATION, *PENLISTMENT_BASIC_INFORMATION; - -typedef struct _ENLISTMENT_CRM_INFORMATION { - GUID CrmTransactionManagerId; - GUID CrmResourceManagerId; - GUID CrmEnlistmentId; -} ENLISTMENT_CRM_INFORMATION, *PENLISTMENT_CRM_INFORMATION; - -typedef enum _ENLISTMENT_INFORMATION_CLASS { - EnlistmentBasicInformation, - EnlistmentRecoveryInformation, - EnlistmentCrmInformation -} ENLISTMENT_INFORMATION_CLASS; - -typedef struct _TRANSACTION_LIST_ENTRY { -#if defined(__cplusplus) - ::UOW UOW; -#else - UOW UOW; -#endif -} TRANSACTION_LIST_ENTRY, *PTRANSACTION_LIST_ENTRY; - -typedef struct _TRANSACTION_LIST_INFORMATION { - ULONG NumberOfTransactions; - TRANSACTION_LIST_ENTRY TransactionInformation[1]; -} TRANSACTION_LIST_INFORMATION, *PTRANSACTION_LIST_INFORMATION; - -typedef NTSTATUS -(NTAPI *PFN_NT_CREATE_TRANSACTION)( - OUT PHANDLE TransactionHandle, - IN ACCESS_MASK DesiredAccess, - IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, - IN LPGUID Uow OPTIONAL, - IN HANDLE TmHandle OPTIONAL, - IN ULONG CreateOptions OPTIONAL, - IN ULONG IsolationLevel OPTIONAL, - IN ULONG IsolationFlags OPTIONAL, - IN PLARGE_INTEGER Timeout OPTIONAL, - IN PUNICODE_STRING Description OPTIONAL); - -typedef NTSTATUS -(NTAPI *PFN_NT_OPEN_TRANSACTION)( - OUT PHANDLE TransactionHandle, - IN ACCESS_MASK DesiredAccess, - IN POBJECT_ATTRIBUTES ObjectAttributes, - IN LPGUID Uow OPTIONAL, - IN HANDLE TmHandle OPTIONAL); - -typedef NTSTATUS -(NTAPI *PFN_NT_QUERY_INFORMATION_TRANSACTION)( - IN HANDLE TransactionHandle, - IN TRANSACTION_INFORMATION_CLASS TransactionInformationClass, - OUT PVOID TransactionInformation, - IN ULONG TransactionInformationLength, - OUT PULONG ReturnLength OPTIONAL); - -typedef NTSTATUS -(NTAPI *PFN_NT_SET_INFORMATION_TRANSACTION)( - IN HANDLE TransactionHandle, - IN TRANSACTION_INFORMATION_CLASS TransactionInformationClass, - IN PVOID TransactionInformation, - IN ULONG TransactionInformationLength); - -typedef NTSTATUS -(NTAPI *PFN_NT_COMMIT_TRANSACTION)( - IN HANDLE TransactionHandle, - IN BOOLEAN Wait); - -typedef NTSTATUS -(NTAPI *PFN_NT_ROLLBACK_TRANSACTION)( - IN HANDLE TransactionHandle, - IN BOOLEAN Wait); - -#if (NTDDI_VERSION >= NTDDI_VISTA) - -NTSYSCALLAPI -NTSTATUS -NTAPI -NtCreateTransactionManager( - OUT PHANDLE TmHandle, - IN ACCESS_MASK DesiredAccess, - IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, - IN PUNICODE_STRING LogFileName OPTIONAL, - IN ULONG CreateOptions OPTIONAL, - IN ULONG CommitStrength OPTIONAL); - -NTSYSCALLAPI -NTSTATUS -NTAPI -NtOpenTransactionManager( - OUT PHANDLE TmHandle, - IN ACCESS_MASK DesiredAccess, - IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, - IN PUNICODE_STRING LogFileName OPTIONAL, - IN LPGUID TmIdentity OPTIONAL, - IN ULONG OpenOptions OPTIONAL); - -NTSYSCALLAPI -NTSTATUS -NTAPI -NtRenameTransactionManager( - IN PUNICODE_STRING LogFileName, - IN LPGUID ExistingTransactionManagerGuid); - -NTSYSCALLAPI -NTSTATUS -NTAPI -NtRollforwardTransactionManager( - IN HANDLE TransactionManagerHandle, - IN PLARGE_INTEGER TmVirtualClock OPTIONAL); - -NTSYSCALLAPI -NTSTATUS -NTAPI -NtRecoverTransactionManager( - IN HANDLE TransactionManagerHandle); - -NTSYSCALLAPI -NTSTATUS -NTAPI -NtQueryInformationTransactionManager( - IN HANDLE TransactionManagerHandle, - IN TRANSACTIONMANAGER_INFORMATION_CLASS TransactionManagerInformationClass, - OUT PVOID TransactionManagerInformation, - IN ULONG TransactionManagerInformationLength, - OUT PULONG ReturnLength); - -NTSYSCALLAPI -NTSTATUS -NTAPI -NtSetInformationTransactionManager( - IN HANDLE TmHandle OPTIONAL, - IN TRANSACTIONMANAGER_INFORMATION_CLASS TransactionManagerInformationClass, - IN PVOID TransactionManagerInformation, - IN ULONG TransactionManagerInformationLength); - -NTSYSCALLAPI -NTSTATUS -NTAPI -NtEnumerateTransactionObject( - IN HANDLE RootObjectHandle OPTIONAL, - IN KTMOBJECT_TYPE QueryType, - IN OUT PKTMOBJECT_CURSOR ObjectCursor, - IN ULONG ObjectCursorLength, - OUT PULONG ReturnLength); - -NTSYSCALLAPI -NTSTATUS -NTAPI -NtCreateTransaction( - OUT PHANDLE TransactionHandle, - IN ACCESS_MASK DesiredAccess, - IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, - IN LPGUID Uow OPTIONAL, - IN HANDLE TmHandle OPTIONAL, - IN ULONG CreateOptions OPTIONAL, - IN ULONG IsolationLevel OPTIONAL, - IN ULONG IsolationFlags OPTIONAL, - IN PLARGE_INTEGER Timeout OPTIONAL, - IN PUNICODE_STRING Description OPTIONAL); - -NTSYSCALLAPI -NTSTATUS -NTAPI -NtOpenTransaction( - OUT PHANDLE TransactionHandle, - IN ACCESS_MASK DesiredAccess, - IN POBJECT_ATTRIBUTES ObjectAttributes, - IN LPGUID Uow, - IN HANDLE TmHandle OPTIONAL); - -NTSYSCALLAPI -NTSTATUS -NTAPI -NtQueryInformationTransaction( - IN HANDLE TransactionHandle, - IN TRANSACTION_INFORMATION_CLASS TransactionInformationClass, - OUT PVOID TransactionInformation, - IN ULONG TransactionInformationLength, - OUT PULONG ReturnLength OPTIONAL); - -NTSYSCALLAPI -NTSTATUS -NTAPI -NtSetInformationTransaction( - IN HANDLE TransactionHandle, - IN TRANSACTION_INFORMATION_CLASS TransactionInformationClass, - IN PVOID TransactionInformation, - IN ULONG TransactionInformationLength); - -NTSYSCALLAPI -NTSTATUS -NTAPI -NtCommitTransaction( - IN HANDLE TransactionHandle, - IN BOOLEAN Wait); - -NTSYSCALLAPI -NTSTATUS -NTAPI -NtRollbackTransaction( - IN HANDLE TransactionHandle, - IN BOOLEAN Wait); - -NTSYSCALLAPI -NTSTATUS -NTAPI -NtCreateEnlistment( - OUT PHANDLE EnlistmentHandle, - IN ACCESS_MASK DesiredAccess, - IN HANDLE ResourceManagerHandle, - IN HANDLE TransactionHandle, - IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, - IN ULONG CreateOptions OPTIONAL, - IN NOTIFICATION_MASK NotificationMask, - IN PVOID EnlistmentKey OPTIONAL); - -NTSYSCALLAPI -NTSTATUS -NTAPI -NtOpenEnlistment( - OUT PHANDLE EnlistmentHandle, - IN ACCESS_MASK DesiredAccess, - IN HANDLE ResourceManagerHandle, - IN LPGUID EnlistmentGuid, - IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL); - -NTSYSCALLAPI -NTSTATUS -NTAPI -NtQueryInformationEnlistment( - IN HANDLE EnlistmentHandle, - IN ENLISTMENT_INFORMATION_CLASS EnlistmentInformationClass, - OUT PVOID EnlistmentInformation, - IN ULONG EnlistmentInformationLength, - OUT PULONG ReturnLength); - -NTSYSCALLAPI -NTSTATUS -NTAPI -NtSetInformationEnlistment( - IN HANDLE EnlistmentHandle OPTIONAL, - IN ENLISTMENT_INFORMATION_CLASS EnlistmentInformationClass, - IN PVOID EnlistmentInformation, - IN ULONG EnlistmentInformationLength); - -NTSYSCALLAPI -NTSTATUS -NTAPI -NtRecoverEnlistment( - IN HANDLE EnlistmentHandle, - IN PVOID EnlistmentKey OPTIONAL); - -NTSYSCALLAPI -NTSTATUS -NTAPI -NtPrePrepareEnlistment( - IN HANDLE EnlistmentHandle, - IN PLARGE_INTEGER TmVirtualClock OPTIONAL); - -NTSYSCALLAPI -NTSTATUS -NTAPI -NtPrepareEnlistment( - IN HANDLE EnlistmentHandle, - IN PLARGE_INTEGER TmVirtualClock OPTIONAL); - -NTSYSCALLAPI -NTSTATUS -NTAPI -NtCommitEnlistment( - IN HANDLE EnlistmentHandle, - IN PLARGE_INTEGER TmVirtualClock OPTIONAL); - -NTSYSCALLAPI -NTSTATUS -NTAPI -NtRollbackEnlistment( - IN HANDLE EnlistmentHandle, - IN PLARGE_INTEGER TmVirtualClock OPTIONAL); - -NTSYSCALLAPI -NTSTATUS -NTAPI -NtPrePrepareComplete( - IN HANDLE EnlistmentHandle, - IN PLARGE_INTEGER TmVirtualClock OPTIONAL); - -NTSYSCALLAPI -NTSTATUS -NTAPI -NtPrepareComplete( - IN HANDLE EnlistmentHandle, - IN PLARGE_INTEGER TmVirtualClock OPTIONAL); - -NTSYSCALLAPI -NTSTATUS -NTAPI -NtCommitComplete( - IN HANDLE EnlistmentHandle, - IN PLARGE_INTEGER TmVirtualClock OPTIONAL); - -NTSYSCALLAPI -NTSTATUS -NTAPI -NtReadOnlyEnlistment( - IN HANDLE EnlistmentHandle, - IN PLARGE_INTEGER TmVirtualClock OPTIONAL); - -NTSYSCALLAPI -NTSTATUS -NTAPI -NtRollbackComplete( - IN HANDLE EnlistmentHandle, - IN PLARGE_INTEGER TmVirtualClock OPTIONAL); - -NTSYSCALLAPI -NTSTATUS -NTAPI -NtSinglePhaseReject( - IN HANDLE EnlistmentHandle, - IN PLARGE_INTEGER TmVirtualClock OPTIONAL); - -NTSYSCALLAPI -NTSTATUS -NTAPI -NtCreateResourceManager( - OUT PHANDLE ResourceManagerHandle, - IN ACCESS_MASK DesiredAccess, - IN HANDLE TmHandle, - IN LPGUID RmGuid, - IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, - IN ULONG CreateOptions OPTIONAL, - IN PUNICODE_STRING Description OPTIONAL); - -NTSYSCALLAPI -NTSTATUS -NTAPI -NtOpenResourceManager( - OUT PHANDLE ResourceManagerHandle, - IN ACCESS_MASK DesiredAccess, - IN HANDLE TmHandle, - IN LPGUID ResourceManagerGuid OPTIONAL, - IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL); - -NTSYSCALLAPI -NTSTATUS -NTAPI -NtRecoverResourceManager( - IN HANDLE ResourceManagerHandle); - -NTSYSCALLAPI -NTSTATUS -NTAPI -NtGetNotificationResourceManager( - IN HANDLE ResourceManagerHandle, - OUT PTRANSACTION_NOTIFICATION TransactionNotification, - IN ULONG NotificationLength, - IN PLARGE_INTEGER Timeout OPTIONAL, - OUT PULONG ReturnLength OPTIONAL, - IN ULONG Asynchronous, - IN ULONG_PTR AsynchronousContext OPTIONAL); - -NTSYSCALLAPI -NTSTATUS -NTAPI -NtQueryInformationResourceManager( - IN HANDLE ResourceManagerHandle, - IN RESOURCEMANAGER_INFORMATION_CLASS ResourceManagerInformationClass, - OUT PVOID ResourceManagerInformation, - IN ULONG ResourceManagerInformationLength, - OUT PULONG ReturnLength OPTIONAL); - -NTSYSCALLAPI -NTSTATUS -NTAPI -NtSetInformationResourceManager( - IN HANDLE ResourceManagerHandle, - IN RESOURCEMANAGER_INFORMATION_CLASS ResourceManagerInformationClass, - IN PVOID ResourceManagerInformation, - IN ULONG ResourceManagerInformationLength); - -NTSYSCALLAPI -NTSTATUS -NTAPI -NtRegisterProtocolAddressInformation( - IN HANDLE ResourceManager, - IN PCRM_PROTOCOL_ID ProtocolId, - IN ULONG ProtocolInformationSize, - IN PVOID ProtocolInformation, - IN ULONG CreateOptions OPTIONAL); - -NTSYSCALLAPI -NTSTATUS -NTAPI -NtPropagationComplete( - IN HANDLE ResourceManagerHandle, - IN ULONG RequestCookie, - IN ULONG BufferLength, - IN PVOID Buffer); - -NTSYSCALLAPI -NTSTATUS -NTAPI -NtPropagationFailed( - IN HANDLE ResourceManagerHandle, - IN ULONG RequestCookie, - IN NTSTATUS PropStatus); - -#endif /* NTDDI_VERSION >= NTDDI_VISTA */ - -#endif /* !_NTTMAPI_ */ -$endif diff --git a/reactos/include/xdk/obfuncs.h b/reactos/include/xdk/obfuncs.h deleted file mode 100644 index 40912fa411c..00000000000 --- a/reactos/include/xdk/obfuncs.h +++ /dev/null @@ -1,141 +0,0 @@ -/****************************************************************************** - * Object Manager Functions * - ******************************************************************************/ - -$if (_WDMDDK_) -#if (NTDDI_VERSION >= NTDDI_WIN2K) - -NTKERNELAPI -LONG_PTR -FASTCALL -ObfDereferenceObject( - IN PVOID Object); -#define ObDereferenceObject ObfDereferenceObject - -NTKERNELAPI -NTSTATUS -NTAPI -ObGetObjectSecurity( - IN PVOID Object, - OUT PSECURITY_DESCRIPTOR *SecurityDescriptor, - OUT PBOOLEAN MemoryAllocated); - -NTKERNELAPI -LONG_PTR -FASTCALL -ObfReferenceObject( - IN PVOID Object); -#define ObReferenceObject ObfReferenceObject - -NTKERNELAPI -NTSTATUS -NTAPI -ObReferenceObjectByHandle( - IN HANDLE Handle, - IN ACCESS_MASK DesiredAccess, - IN POBJECT_TYPE ObjectType OPTIONAL, - IN KPROCESSOR_MODE AccessMode, - OUT PVOID *Object, - OUT POBJECT_HANDLE_INFORMATION HandleInformation OPTIONAL); - -NTKERNELAPI -NTSTATUS -NTAPI -ObReferenceObjectByPointer( - IN PVOID Object, - IN ACCESS_MASK DesiredAccess, - IN POBJECT_TYPE ObjectType OPTIONAL, - IN KPROCESSOR_MODE AccessMode); - -NTKERNELAPI -VOID -NTAPI -ObReleaseObjectSecurity( - IN PSECURITY_DESCRIPTOR SecurityDescriptor, - IN BOOLEAN MemoryAllocated); - -#endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */ - -#if (NTDDI_VERSION >= NTDDI_VISTA) -NTKERNELAPI -VOID -NTAPI -ObDereferenceObjectDeferDelete( - IN PVOID Object); -#endif - -#if (NTDDI_VERSION >= NTDDI_VISTASP1) -NTKERNELAPI -NTSTATUS -NTAPI -ObRegisterCallbacks( - IN POB_CALLBACK_REGISTRATION CallbackRegistration, - OUT PVOID *RegistrationHandle); - -NTKERNELAPI -VOID -NTAPI -ObUnRegisterCallbacks( - IN PVOID RegistrationHandle); - -NTKERNELAPI -USHORT -NTAPI -ObGetFilterVersion(VOID); - -#endif /* (NTDDI_VERSION >= NTDDI_VISTASP1) */ - -#if (NTDDI_VERSION >= NTDDI_WIN7) - -NTKERNELAPI -NTSTATUS -NTAPI -ObReferenceObjectByHandleWithTag( - IN HANDLE Handle, - IN ACCESS_MASK DesiredAccess, - IN POBJECT_TYPE ObjectType OPTIONAL, - IN KPROCESSOR_MODE AccessMode, - IN ULONG Tag, - OUT PVOID *Object, - OUT POBJECT_HANDLE_INFORMATION HandleInformation OPTIONAL); - -NTKERNELAPI -LONG_PTR -FASTCALL -ObfReferenceObjectWithTag( - IN PVOID Object, - IN ULONG Tag); - -NTKERNELAPI -NTSTATUS -NTAPI -ObReferenceObjectByPointerWithTag( - IN PVOID Object, - IN ACCESS_MASK DesiredAccess, - IN POBJECT_TYPE ObjectType OPTIONAL, - IN KPROCESSOR_MODE AccessMode, - IN ULONG Tag); - -NTKERNELAPI -LONG_PTR -FASTCALL -ObfDereferenceObjectWithTag( - IN PVOID Object, - IN ULONG Tag); - -NTKERNELAPI -VOID -NTAPI -ObDereferenceObjectDeferDeleteWithTag( - IN PVOID Object, - IN ULONG Tag); - -#define ObDereferenceObject ObfDereferenceObject -#define ObReferenceObject ObfReferenceObject -#define ObDereferenceObjectWithTag ObfDereferenceObjectWithTag -#define ObReferenceObjectWithTag ObfReferenceObjectWithTag - -#endif /* (NTDDI_VERSION >= NTDDI_WIN7) */ - -$endif - diff --git a/reactos/include/xdk/obtypes.h b/reactos/include/xdk/obtypes.h deleted file mode 100644 index 84310a968db..00000000000 --- a/reactos/include/xdk/obtypes.h +++ /dev/null @@ -1,135 +0,0 @@ -/****************************************************************************** - * Object Manager Types * - ******************************************************************************/ - -#define MAXIMUM_FILENAME_LENGTH 256 -#define OBJ_NAME_PATH_SEPARATOR ((WCHAR)L'\\') - -#define OBJECT_TYPE_CREATE 0x0001 -#define OBJECT_TYPE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0x1) - -#define DIRECTORY_QUERY 0x0001 -#define DIRECTORY_TRAVERSE 0x0002 -#define DIRECTORY_CREATE_OBJECT 0x0004 -#define DIRECTORY_CREATE_SUBDIRECTORY 0x0008 -#define DIRECTORY_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0xF) - -#define SYMBOLIC_LINK_QUERY 0x0001 -#define SYMBOLIC_LINK_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0x1) - -#define DUPLICATE_CLOSE_SOURCE 0x00000001 -#define DUPLICATE_SAME_ACCESS 0x00000002 -#define DUPLICATE_SAME_ATTRIBUTES 0x00000004 - -#define OB_FLT_REGISTRATION_VERSION_0100 0x0100 -#define OB_FLT_REGISTRATION_VERSION OB_FLT_REGISTRATION_VERSION_0100 - -typedef ULONG OB_OPERATION; - -#define OB_OPERATION_HANDLE_CREATE 0x00000001 -#define OB_OPERATION_HANDLE_DUPLICATE 0x00000002 - -typedef struct _OB_PRE_CREATE_HANDLE_INFORMATION { - IN OUT ACCESS_MASK DesiredAccess; - IN ACCESS_MASK OriginalDesiredAccess; -} OB_PRE_CREATE_HANDLE_INFORMATION, *POB_PRE_CREATE_HANDLE_INFORMATION; - -typedef struct _OB_PRE_DUPLICATE_HANDLE_INFORMATION { - IN OUT ACCESS_MASK DesiredAccess; - IN ACCESS_MASK OriginalDesiredAccess; - IN PVOID SourceProcess; - IN PVOID TargetProcess; -} OB_PRE_DUPLICATE_HANDLE_INFORMATION, *POB_PRE_DUPLICATE_HANDLE_INFORMATION; - -typedef union _OB_PRE_OPERATION_PARAMETERS { - IN OUT OB_PRE_CREATE_HANDLE_INFORMATION CreateHandleInformation; - IN OUT OB_PRE_DUPLICATE_HANDLE_INFORMATION DuplicateHandleInformation; -} OB_PRE_OPERATION_PARAMETERS, *POB_PRE_OPERATION_PARAMETERS; - -typedef struct _OB_PRE_OPERATION_INFORMATION { - IN OB_OPERATION Operation; - union { - IN ULONG Flags; - struct { - IN ULONG KernelHandle:1; - IN ULONG Reserved:31; - }; - }; - IN PVOID Object; - IN POBJECT_TYPE ObjectType; - OUT PVOID CallContext; - IN POB_PRE_OPERATION_PARAMETERS Parameters; -} OB_PRE_OPERATION_INFORMATION, *POB_PRE_OPERATION_INFORMATION; - -typedef struct _OB_POST_CREATE_HANDLE_INFORMATION { - IN ACCESS_MASK GrantedAccess; -} OB_POST_CREATE_HANDLE_INFORMATION, *POB_POST_CREATE_HANDLE_INFORMATION; - -typedef struct _OB_POST_DUPLICATE_HANDLE_INFORMATION { - IN ACCESS_MASK GrantedAccess; -} OB_POST_DUPLICATE_HANDLE_INFORMATION, *POB_POST_DUPLICATE_HANDLE_INFORMATION; - -typedef union _OB_POST_OPERATION_PARAMETERS { - IN OB_POST_CREATE_HANDLE_INFORMATION CreateHandleInformation; - IN OB_POST_DUPLICATE_HANDLE_INFORMATION DuplicateHandleInformation; -} OB_POST_OPERATION_PARAMETERS, *POB_POST_OPERATION_PARAMETERS; - -typedef struct _OB_POST_OPERATION_INFORMATION { - IN OB_OPERATION Operation; - union { - IN ULONG Flags; - struct { - IN ULONG KernelHandle:1; - IN ULONG Reserved:31; - }; - }; - IN PVOID Object; - IN POBJECT_TYPE ObjectType; - IN PVOID CallContext; - IN NTSTATUS ReturnStatus; - IN POB_POST_OPERATION_PARAMETERS Parameters; -} OB_POST_OPERATION_INFORMATION,*POB_POST_OPERATION_INFORMATION; - -typedef enum _OB_PREOP_CALLBACK_STATUS { - OB_PREOP_SUCCESS -} OB_PREOP_CALLBACK_STATUS, *POB_PREOP_CALLBACK_STATUS; - -typedef OB_PREOP_CALLBACK_STATUS -(NTAPI *POB_PRE_OPERATION_CALLBACK)( - IN PVOID RegistrationContext, - IN OUT POB_PRE_OPERATION_INFORMATION OperationInformation); - -typedef VOID -(NTAPI *POB_POST_OPERATION_CALLBACK)( - IN PVOID RegistrationContext, - IN POB_POST_OPERATION_INFORMATION OperationInformation); - -typedef struct _OB_OPERATION_REGISTRATION { - IN POBJECT_TYPE *ObjectType; - IN OB_OPERATION Operations; - IN POB_PRE_OPERATION_CALLBACK PreOperation; - IN POB_POST_OPERATION_CALLBACK PostOperation; -} OB_OPERATION_REGISTRATION, *POB_OPERATION_REGISTRATION; - -typedef struct _OB_CALLBACK_REGISTRATION { - IN USHORT Version; - IN USHORT OperationRegistrationCount; - IN UNICODE_STRING Altitude; - IN PVOID RegistrationContext; - IN OB_OPERATION_REGISTRATION *OperationRegistration; -} OB_CALLBACK_REGISTRATION, *POB_CALLBACK_REGISTRATION; - -typedef struct _OBJECT_NAME_INFORMATION { - UNICODE_STRING Name; -} OBJECT_NAME_INFORMATION, *POBJECT_NAME_INFORMATION; - -/* Exported object types */ -extern POBJECT_TYPE NTSYSAPI CmKeyObjectType; -extern POBJECT_TYPE NTSYSAPI ExEventObjectType; -extern POBJECT_TYPE NTSYSAPI ExSemaphoreObjectType; -extern POBJECT_TYPE NTSYSAPI IoFileObjectType; -extern POBJECT_TYPE NTSYSAPI PsThreadType; -extern POBJECT_TYPE NTSYSAPI SeTokenObjectType; -extern POBJECT_TYPE NTSYSAPI PsProcessType; - - diff --git a/reactos/include/xdk/pofuncs.h b/reactos/include/xdk/pofuncs.h deleted file mode 100644 index 9fd1ec6d2b0..00000000000 --- a/reactos/include/xdk/pofuncs.h +++ /dev/null @@ -1,167 +0,0 @@ -/****************************************************************************** - * Power Management Support Functions * - ******************************************************************************/ - -#define PoSetDeviceBusy(IdlePointer) ((void)(*(IdlePointer) = 0)) - -#if (NTDDI_VERSION >= NTDDI_WIN2K) - -NTKERNELAPI -NTSTATUS -NTAPI -PoCallDriver( - IN struct _DEVICE_OBJECT *DeviceObject, - IN OUT struct _IRP *Irp); - -NTKERNELAPI -PULONG -NTAPI -PoRegisterDeviceForIdleDetection( - IN struct _DEVICE_OBJECT *DeviceObject, - IN ULONG ConservationIdleTime, - IN ULONG PerformanceIdleTime, - IN DEVICE_POWER_STATE State); - -NTKERNELAPI -PVOID -NTAPI -PoRegisterSystemState( - IN OUT PVOID StateHandle OPTIONAL, - IN EXECUTION_STATE Flags); - -NTKERNELAPI -NTSTATUS -NTAPI -PoRequestPowerIrp( - IN struct _DEVICE_OBJECT *DeviceObject, - IN UCHAR MinorFunction, - IN POWER_STATE PowerState, - IN PREQUEST_POWER_COMPLETE CompletionFunction OPTIONAL, - IN PVOID Context OPTIONAL, - OUT struct _IRP **Irp OPTIONAL); - -NTKERNELAPI -POWER_STATE -NTAPI -PoSetPowerState( - IN struct _DEVICE_OBJECT *DeviceObject, - IN POWER_STATE_TYPE Type, - IN POWER_STATE State); - -NTKERNELAPI -VOID -NTAPI -PoSetSystemState( - IN EXECUTION_STATE Flags); - -NTKERNELAPI -VOID -NTAPI -PoStartNextPowerIrp( - IN OUT struct _IRP *Irp); - -NTKERNELAPI -VOID -NTAPI -PoUnregisterSystemState( - IN OUT PVOID StateHandle); - -NTKERNELAPI -NTSTATUS -NTAPI -PoRequestShutdownEvent( - OUT PVOID *Event); - -#endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */ - -#if (NTDDI_VERSION >= NTDDI_VISTA) - -NTKERNELAPI -VOID -NTAPI -PoSetSystemWake( - IN OUT struct _IRP *Irp); - -NTKERNELAPI -BOOLEAN -NTAPI -PoGetSystemWake( - IN struct _IRP *Irp); - -NTKERNELAPI -NTSTATUS -NTAPI -PoRegisterPowerSettingCallback( - IN PDEVICE_OBJECT DeviceObject OPTIONAL, - IN LPCGUID SettingGuid, - IN PPOWER_SETTING_CALLBACK Callback, - IN PVOID Context OPTIONAL, - OUT PVOID *Handle OPTIONAL); - -NTKERNELAPI -NTSTATUS -NTAPI -PoUnregisterPowerSettingCallback( - IN OUT PVOID Handle); - -#endif /* (NTDDI_VERSION >= NTDDI_VISTA) */ - -#if (NTDDI_VERSION >= NTDDI_VISTASP1) -NTKERNELAPI -VOID -NTAPI -PoSetDeviceBusyEx( - IN OUT PULONG IdlePointer); -#endif /* (NTDDI_VERSION >= NTDDI_VISTASP1) */ - -#if (NTDDI_VERSION >= NTDDI_WIN7) - -NTKERNELAPI -VOID -NTAPI -PoStartDeviceBusy( - IN OUT PULONG IdlePointer); - -NTKERNELAPI -VOID -NTAPI -PoEndDeviceBusy( - IN OUT PULONG IdlePointer); - -NTKERNELAPI -BOOLEAN -NTAPI -PoQueryWatchdogTime( - IN PDEVICE_OBJECT Pdo, - OUT PULONG SecondsRemaining); - -NTKERNELAPI -VOID -NTAPI -PoDeletePowerRequest( - IN OUT PVOID PowerRequest); - -NTKERNELAPI -NTSTATUS -NTAPI -PoSetPowerRequest( - IN OUT PVOID PowerRequest, - IN POWER_REQUEST_TYPE Type); - -NTKERNELAPI -NTSTATUS -NTAPI -PoClearPowerRequest( - IN OUT PVOID PowerRequest, - IN POWER_REQUEST_TYPE Type); - -NTKERNELAPI -NTSTATUS -NTAPI -PoCreatePowerRequest( - OUT PVOID *PowerRequest, - IN PDEVICE_OBJECT DeviceObject, - IN PCOUNTED_REASON_CONTEXT Context); - -#endif /* (NTDDI_VERSION >= NTDDI_WIN7) */ - diff --git a/reactos/include/xdk/potypes.h b/reactos/include/xdk/potypes.h deleted file mode 100644 index 3caf8254d55..00000000000 --- a/reactos/include/xdk/potypes.h +++ /dev/null @@ -1,412 +0,0 @@ -/****************************************************************************** - * Power Management Support Types * - ******************************************************************************/ - -#ifndef _PO_DDK_ -#define _PO_DDK_ - -#define PO_CB_SYSTEM_POWER_POLICY 0 -#define PO_CB_AC_STATUS 1 -#define PO_CB_BUTTON_COLLISION 2 -#define PO_CB_SYSTEM_STATE_LOCK 3 -#define PO_CB_LID_SWITCH_STATE 4 -#define PO_CB_PROCESSOR_POWER_POLICY 5 - -/* Power States/Levels */ -typedef enum _SYSTEM_POWER_STATE { - PowerSystemUnspecified = 0, - PowerSystemWorking, - PowerSystemSleeping1, - PowerSystemSleeping2, - PowerSystemSleeping3, - PowerSystemHibernate, - PowerSystemShutdown, - PowerSystemMaximum -} SYSTEM_POWER_STATE, *PSYSTEM_POWER_STATE; - -#define POWER_SYSTEM_MAXIMUM PowerSystemMaximum - -typedef enum _POWER_INFORMATION_LEVEL { - SystemPowerPolicyAc, - SystemPowerPolicyDc, - VerifySystemPolicyAc, - VerifySystemPolicyDc, - SystemPowerCapabilities, - SystemBatteryState, - SystemPowerStateHandler, - ProcessorStateHandler, - SystemPowerPolicyCurrent, - AdministratorPowerPolicy, - SystemReserveHiberFile, - ProcessorInformation, - SystemPowerInformation, - ProcessorStateHandler2, - LastWakeTime, - LastSleepTime, - SystemExecutionState, - SystemPowerStateNotifyHandler, - ProcessorPowerPolicyAc, - ProcessorPowerPolicyDc, - VerifyProcessorPowerPolicyAc, - VerifyProcessorPowerPolicyDc, - ProcessorPowerPolicyCurrent, - SystemPowerStateLogging, - SystemPowerLoggingEntry, - SetPowerSettingValue, - NotifyUserPowerSetting, - PowerInformationLevelUnused0, - PowerInformationLevelUnused1, - SystemVideoState, - TraceApplicationPowerMessage, - TraceApplicationPowerMessageEnd, - ProcessorPerfStates, - ProcessorIdleStates, - ProcessorCap, - SystemWakeSource, - SystemHiberFileInformation, - TraceServicePowerMessage, - ProcessorLoad, - PowerShutdownNotification, - MonitorCapabilities, - SessionPowerInit, - SessionDisplayState, - PowerRequestCreate, - PowerRequestAction, - GetPowerRequestList, - ProcessorInformationEx, - NotifyUserModeLegacyPowerEvent, - GroupPark, - ProcessorIdleDomains, - WakeTimerList, - SystemHiberFileSize, - PowerInformationLevelMaximum -} POWER_INFORMATION_LEVEL; - -typedef enum { - PowerActionNone = 0, - PowerActionReserved, - PowerActionSleep, - PowerActionHibernate, - PowerActionShutdown, - PowerActionShutdownReset, - PowerActionShutdownOff, - PowerActionWarmEject -} POWER_ACTION, *PPOWER_ACTION; - -typedef enum _DEVICE_POWER_STATE { - PowerDeviceUnspecified = 0, - PowerDeviceD0, - PowerDeviceD1, - PowerDeviceD2, - PowerDeviceD3, - PowerDeviceMaximum -} DEVICE_POWER_STATE, *PDEVICE_POWER_STATE; - -typedef enum _MONITOR_DISPLAY_STATE { - PowerMonitorOff = 0, - PowerMonitorOn, - PowerMonitorDim -} MONITOR_DISPLAY_STATE, *PMONITOR_DISPLAY_STATE; - -typedef union _POWER_STATE { - SYSTEM_POWER_STATE SystemState; - DEVICE_POWER_STATE DeviceState; -} POWER_STATE, *PPOWER_STATE; - -typedef enum _POWER_STATE_TYPE { - SystemPowerState = 0, - DevicePowerState -} POWER_STATE_TYPE, *PPOWER_STATE_TYPE; - -#if (NTDDI_VERSION >= NTDDI_VISTA) -typedef struct _SYSTEM_POWER_STATE_CONTEXT { - union { - struct { - ULONG Reserved1:8; - ULONG TargetSystemState:4; - ULONG EffectiveSystemState:4; - ULONG CurrentSystemState:4; - ULONG IgnoreHibernationPath:1; - ULONG PseudoTransition:1; - ULONG Reserved2:10; - } DUMMYSTRUCTNAME; - ULONG ContextAsUlong; - } DUMMYUNIONNAME; -} SYSTEM_POWER_STATE_CONTEXT, *PSYSTEM_POWER_STATE_CONTEXT; -#endif - -#if (NTDDI_VERSION >= NTDDI_WIN7) -typedef struct _COUNTED_REASON_CONTEXT { - ULONG Version; - ULONG Flags; - union { - struct { - UNICODE_STRING ResourceFileName; - USHORT ResourceReasonId; - ULONG StringCount; - PUNICODE_STRING ReasonStrings; - } DUMMYSTRUCTNAME; - UNICODE_STRING SimpleString; - } DUMMYUNIONNAME; -} COUNTED_REASON_CONTEXT, *PCOUNTED_REASON_CONTEXT; -#endif - -#define IOCTL_QUERY_DEVICE_POWER_STATE \ - CTL_CODE(FILE_DEVICE_BATTERY, 0x0, METHOD_BUFFERED, FILE_READ_ACCESS) - -#define IOCTL_SET_DEVICE_WAKE \ - CTL_CODE(FILE_DEVICE_BATTERY, 0x1, METHOD_BUFFERED, FILE_WRITE_ACCESS) - -#define IOCTL_CANCEL_DEVICE_WAKE \ - CTL_CODE(FILE_DEVICE_BATTERY, 0x2, METHOD_BUFFERED, FILE_WRITE_ACCESS) - -#define ES_SYSTEM_REQUIRED 0x00000001 -#define ES_DISPLAY_REQUIRED 0x00000002 -#define ES_USER_PRESENT 0x00000004 -#define ES_CONTINUOUS 0x80000000 - -typedef ULONG EXECUTION_STATE, *PEXECUTION_STATE; - -typedef enum { - LT_DONT_CARE, - LT_LOWEST_LATENCY -} LATENCY_TIME; - -#if (_WIN32_WINNT >= _WIN32_WINNT_WIN7) -#define DIAGNOSTIC_REASON_VERSION 0 -#define DIAGNOSTIC_REASON_SIMPLE_STRING 0x00000001 -#define DIAGNOSTIC_REASON_DETAILED_STRING 0x00000002 -#define DIAGNOSTIC_REASON_NOT_SPECIFIED 0x80000000 -#define DIAGNOSTIC_REASON_INVALID_FLAGS (~0x80000003) -#endif - -#define POWER_REQUEST_CONTEXT_VERSION 0 -#define POWER_REQUEST_CONTEXT_SIMPLE_STRING 0x00000001 -#define POWER_REQUEST_CONTEXT_DETAILED_STRING 0x00000002 - -#define PowerRequestMaximum 3 - -typedef enum _POWER_REQUEST_TYPE { - PowerRequestDisplayRequired, - PowerRequestSystemRequired, - PowerRequestAwayModeRequired -} POWER_REQUEST_TYPE, *PPOWER_REQUEST_TYPE; - -#if (NTDDI_VERSION >= NTDDI_WINXP) - -#define PDCAP_D0_SUPPORTED 0x00000001 -#define PDCAP_D1_SUPPORTED 0x00000002 -#define PDCAP_D2_SUPPORTED 0x00000004 -#define PDCAP_D3_SUPPORTED 0x00000008 -#define PDCAP_WAKE_FROM_D0_SUPPORTED 0x00000010 -#define PDCAP_WAKE_FROM_D1_SUPPORTED 0x00000020 -#define PDCAP_WAKE_FROM_D2_SUPPORTED 0x00000040 -#define PDCAP_WAKE_FROM_D3_SUPPORTED 0x00000080 -#define PDCAP_WARM_EJECT_SUPPORTED 0x00000100 - -typedef struct CM_Power_Data_s { - ULONG PD_Size; - DEVICE_POWER_STATE PD_MostRecentPowerState; - ULONG PD_Capabilities; - ULONG PD_D1Latency; - ULONG PD_D2Latency; - ULONG PD_D3Latency; - DEVICE_POWER_STATE PD_PowerStateMapping[PowerSystemMaximum]; - SYSTEM_POWER_STATE PD_DeepestSystemWake; -} CM_POWER_DATA, *PCM_POWER_DATA; - -#endif /* (NTDDI_VERSION >= NTDDI_WINXP) */ - -typedef enum _SYSTEM_POWER_CONDITION { - PoAc, - PoDc, - PoHot, - PoConditionMaximum -} SYSTEM_POWER_CONDITION; - -typedef struct _SET_POWER_SETTING_VALUE { - ULONG Version; - GUID Guid; - SYSTEM_POWER_CONDITION PowerCondition; - ULONG DataLength; - UCHAR Data[ANYSIZE_ARRAY]; -} SET_POWER_SETTING_VALUE, *PSET_POWER_SETTING_VALUE; - -#define POWER_SETTING_VALUE_VERSION (0x1) - -typedef struct _NOTIFY_USER_POWER_SETTING { - GUID Guid; -} NOTIFY_USER_POWER_SETTING, *PNOTIFY_USER_POWER_SETTING; - -typedef struct _APPLICATIONLAUNCH_SETTING_VALUE { - LARGE_INTEGER ActivationTime; - ULONG Flags; - ULONG ButtonInstanceID; -} APPLICATIONLAUNCH_SETTING_VALUE, *PAPPLICATIONLAUNCH_SETTING_VALUE; - -typedef enum _POWER_PLATFORM_ROLE { - PlatformRoleUnspecified = 0, - PlatformRoleDesktop, - PlatformRoleMobile, - PlatformRoleWorkstation, - PlatformRoleEnterpriseServer, - PlatformRoleSOHOServer, - PlatformRoleAppliancePC, - PlatformRolePerformanceServer, - PlatformRoleMaximum -} POWER_PLATFORM_ROLE; - -#if (NTDDI_VERSION >= NTDDI_WINXP) || !defined(_BATCLASS_) -typedef struct { - ULONG Granularity; - ULONG Capacity; -} BATTERY_REPORTING_SCALE, *PBATTERY_REPORTING_SCALE; -#endif /* (NTDDI_VERSION >= NTDDI_WINXP) || !defined(_BATCLASS_) */ - -#endif /* !_PO_DDK_ */ - -#define CORE_PARKING_POLICY_CHANGE_IDEAL 0 -#define CORE_PARKING_POLICY_CHANGE_SINGLE 1 -#define CORE_PARKING_POLICY_CHANGE_ROCKET 2 -#define CORE_PARKING_POLICY_CHANGE_MAX CORE_PARKING_POLICY_CHANGE_ROCKET - -DEFINE_GUID(GUID_MAX_POWER_SAVINGS, 0xA1841308, 0x3541, 0x4FAB, 0xBC, 0x81, 0xF7, 0x15, 0x56, 0xF2, 0x0B, 0x4A ); -DEFINE_GUID(GUID_MIN_POWER_SAVINGS, 0x8C5E7FDA, 0xE8BF, 0x4A96, 0x9A, 0x85, 0xA6, 0xE2, 0x3A, 0x8C, 0x63, 0x5C ); -DEFINE_GUID(GUID_TYPICAL_POWER_SAVINGS, 0x381B4222, 0xF694, 0x41F0, 0x96, 0x85, 0xFF, 0x5B, 0xB2, 0x60, 0xDF, 0x2E ); -DEFINE_GUID(NO_SUBGROUP_GUID, 0xFEA3413E, 0x7E05, 0x4911, 0x9A, 0x71, 0x70, 0x03, 0x31, 0xF1, 0xC2, 0x94 ); -DEFINE_GUID(ALL_POWERSCHEMES_GUID, 0x68A1E95E, 0x13EA, 0x41E1, 0x80, 0x11, 0x0C, 0x49, 0x6C, 0xA4, 0x90, 0xB0 ); -DEFINE_GUID(GUID_POWERSCHEME_PERSONALITY, 0x245D8541, 0x3943, 0x4422, 0xB0, 0x25, 0x13, 0xA7, 0x84, 0xF6, 0x79, 0xB7 ); -DEFINE_GUID(GUID_ACTIVE_POWERSCHEME, 0x31F9F286, 0x5084, 0x42FE, 0xB7, 0x20, 0x2B, 0x02, 0x64, 0x99, 0x37, 0x63 ); -DEFINE_GUID(GUID_VIDEO_SUBGROUP, 0x7516B95F, 0xF776, 0x4464, 0x8C, 0x53, 0x06, 0x16, 0x7F, 0x40, 0xCC, 0x99 ); -DEFINE_GUID(GUID_VIDEO_POWERDOWN_TIMEOUT, 0x3C0BC021, 0xC8A8, 0x4E07, 0xA9, 0x73, 0x6B, 0x14, 0xCB, 0xCB, 0x2B, 0x7E ); -DEFINE_GUID(GUID_VIDEO_ANNOYANCE_TIMEOUT, 0x82DBCF2D, 0xCD67, 0x40C5, 0xBF, 0xDC, 0x9F, 0x1A, 0x5C, 0xCD, 0x46, 0x63 ); -DEFINE_GUID(GUID_VIDEO_ADAPTIVE_PERCENT_INCREASE, 0xEED904DF, 0xB142, 0x4183, 0xB1, 0x0B, 0x5A, 0x11, 0x97, 0xA3, 0x78, 0x64 ); -DEFINE_GUID(GUID_VIDEO_DIM_TIMEOUT, 0x17aaa29b, 0x8b43, 0x4b94, 0xaa, 0xfe, 0x35, 0xf6, 0x4d, 0xaa, 0xf1, 0xee); -DEFINE_GUID(GUID_VIDEO_ADAPTIVE_POWERDOWN, 0x90959D22, 0xD6A1, 0x49B9, 0xAF, 0x93, 0xBC, 0xE8, 0x85, 0xAD, 0x33, 0x5B ); -DEFINE_GUID(GUID_MONITOR_POWER_ON, 0x02731015, 0x4510, 0x4526, 0x99, 0xE6, 0xE5, 0xA1, 0x7E, 0xBD, 0x1A, 0xEA ); -DEFINE_GUID(GUID_DEVICE_POWER_POLICY_VIDEO_BRIGHTNESS, 0xaded5e82L, 0xb909, 0x4619, 0x99, 0x49, 0xf5, 0xd7, 0x1d, 0xac, 0x0b, 0xcb); -DEFINE_GUID(GUID_DEVICE_POWER_POLICY_VIDEO_DIM_BRIGHTNESS, 0xf1fbfde2, 0xa960, 0x4165, 0x9f, 0x88, 0x50, 0x66, 0x79, 0x11, 0xce, 0x96); -DEFINE_GUID(GUID_VIDEO_CURRENT_MONITOR_BRIGHTNESS, 0x8ffee2c6, 0x2d01, 0x46be, 0xad, 0xb9, 0x39, 0x8a, 0xdd, 0xc5, 0xb4, 0xff); -DEFINE_GUID(GUID_VIDEO_ADAPTIVE_DISPLAY_BRIGHTNESS, 0xFBD9AA66, 0x9553, 0x4097, 0xBA, 0x44, 0xED, 0x6E, 0x9D, 0x65, 0xEA, 0xB8); -DEFINE_GUID(GUID_SESSION_DISPLAY_STATE, 0x73A5E93A, 0x5BB1, 0x4F93, 0x89, 0x5B, 0xDB, 0xD0, 0xDA, 0x85, 0x59, 0x67 ); -DEFINE_GUID(GUID_CONSOLE_DISPLAY_STATE, 0x6fe69556, 0x704a, 0x47a0, 0x8f, 0x24, 0xc2, 0x8d, 0x93, 0x6f, 0xda, 0x47); -DEFINE_GUID(GUID_ALLOW_DISPLAY_REQUIRED, 0xA9CEB8DA, 0xCD46, 0x44FB, 0xA9, 0x8B, 0x02, 0xAF, 0x69, 0xDE, 0x46, 0x23 ); -DEFINE_GUID(GUID_DISK_SUBGROUP, 0x0012EE47, 0x9041, 0x4B5D, 0x9B, 0x77, 0x53, 0x5F, 0xBA, 0x8B, 0x14, 0x42 ); -DEFINE_GUID(GUID_DISK_POWERDOWN_TIMEOUT, 0x6738E2C4, 0xE8A5, 0x4A42, 0xB1, 0x6A, 0xE0, 0x40, 0xE7, 0x69, 0x75, 0x6E ); -DEFINE_GUID(GUID_DISK_BURST_IGNORE_THRESHOLD, 0x80e3c60e, 0xbb94, 0x4ad8, 0xbb, 0xe0, 0x0d, 0x31, 0x95, 0xef, 0xc6, 0x63 ); -DEFINE_GUID(GUID_DISK_ADAPTIVE_POWERDOWN, 0x396A32E1, 0x499A, 0x40B2, 0x91, 0x24, 0xA9, 0x6A, 0xFE, 0x70, 0x76, 0x67 ); -DEFINE_GUID(GUID_SLEEP_SUBGROUP, 0x238C9FA8, 0x0AAD, 0x41ED, 0x83, 0xF4, 0x97, 0xBE, 0x24, 0x2C, 0x8F, 0x20 ); -DEFINE_GUID(GUID_SLEEP_IDLE_THRESHOLD, 0x81cd32e0, 0x7833, 0x44f3, 0x87, 0x37, 0x70, 0x81, 0xf3, 0x8d, 0x1f, 0x70 ); -DEFINE_GUID(GUID_STANDBY_TIMEOUT, 0x29F6C1DB, 0x86DA, 0x48C5, 0x9F, 0xDB, 0xF2, 0xB6, 0x7B, 0x1F, 0x44, 0xDA ); -DEFINE_GUID(GUID_UNATTEND_SLEEP_TIMEOUT, 0x7bc4a2f9, 0xd8fc, 0x4469, 0xb0, 0x7b, 0x33, 0xeb, 0x78, 0x5a, 0xac, 0xa0 ); -DEFINE_GUID(GUID_HIBERNATE_TIMEOUT, 0x9D7815A6, 0x7EE4, 0x497E, 0x88, 0x88, 0x51, 0x5A, 0x05, 0xF0, 0x23, 0x64 ); -DEFINE_GUID(GUID_HIBERNATE_FASTS4_POLICY, 0x94AC6D29, 0x73CE, 0x41A6, 0x80, 0x9F, 0x63, 0x63, 0xBA, 0x21, 0xB4, 0x7E ); -DEFINE_GUID(GUID_CRITICAL_POWER_TRANSITION, 0xB7A27025, 0xE569, 0x46c2, 0xA5, 0x04, 0x2B, 0x96, 0xCA, 0xD2, 0x25, 0xA1); -DEFINE_GUID(GUID_SYSTEM_AWAYMODE, 0x98A7F580, 0x01F7, 0x48AA, 0x9C, 0x0F, 0x44, 0x35, 0x2C, 0x29, 0xE5, 0xC0 ); -DEFINE_GUID(GUID_ALLOW_AWAYMODE, 0x25dfa149, 0x5dd1, 0x4736, 0xb5, 0xab, 0xe8, 0xa3, 0x7b, 0x5b, 0x81, 0x87 ); -DEFINE_GUID(GUID_ALLOW_STANDBY_STATES, 0xabfc2519, 0x3608, 0x4c2a, 0x94, 0xea, 0x17, 0x1b, 0x0e, 0xd5, 0x46, 0xab ); -DEFINE_GUID(GUID_ALLOW_RTC_WAKE, 0xBD3B718A, 0x0680, 0x4D9D, 0x8A, 0xB2, 0xE1, 0xD2, 0xB4, 0xAC, 0x80, 0x6D ); -DEFINE_GUID(GUID_ALLOW_SYSTEM_REQUIRED, 0xA4B195F5, 0x8225, 0x47D8, 0x80, 0x12, 0x9D, 0x41, 0x36, 0x97, 0x86, 0xE2 ); -DEFINE_GUID(GUID_SYSTEM_BUTTON_SUBGROUP, 0x4F971E89, 0xEEBD, 0x4455, 0xA8, 0xDE, 0x9E, 0x59, 0x04, 0x0E, 0x73, 0x47 ); -DEFINE_GUID(GUID_POWERBUTTON_ACTION, 0x7648EFA3, 0xDD9C, 0x4E3E, 0xB5, 0x66, 0x50, 0xF9, 0x29, 0x38, 0x62, 0x80 ); -DEFINE_GUID(GUID_POWERBUTTON_ACTION_FLAGS, 0x857E7FAC, 0x034B, 0x4704, 0xAB, 0xB1, 0xBC, 0xA5, 0x4A, 0xA3, 0x14, 0x78 ); -DEFINE_GUID(GUID_SLEEPBUTTON_ACTION, 0x96996BC0, 0xAD50, 0x47EC, 0x92, 0x3B, 0x6F, 0x41, 0x87, 0x4D, 0xD9, 0xEB ); -DEFINE_GUID(GUID_SLEEPBUTTON_ACTION_FLAGS, 0x2A160AB1, 0xB69D, 0x4743, 0xB7, 0x18, 0xBF, 0x14, 0x41, 0xD5, 0xE4, 0x93 ); -DEFINE_GUID(GUID_USERINTERFACEBUTTON_ACTION, 0xA7066653, 0x8D6C, 0x40A8, 0x91, 0x0E, 0xA1, 0xF5, 0x4B, 0x84, 0xC7, 0xE5 ); -DEFINE_GUID(GUID_LIDCLOSE_ACTION, 0x5CA83367, 0x6E45, 0x459F, 0xA2, 0x7B, 0x47, 0x6B, 0x1D, 0x01, 0xC9, 0x36 ); -DEFINE_GUID(GUID_LIDCLOSE_ACTION_FLAGS, 0x97E969AC, 0x0D6C, 0x4D08, 0x92, 0x7C, 0xD7, 0xBD, 0x7A, 0xD7, 0x85, 0x7B ); -DEFINE_GUID(GUID_LIDOPEN_POWERSTATE, 0x99FF10E7, 0x23B1, 0x4C07, 0xA9, 0xD1, 0x5C, 0x32, 0x06, 0xD7, 0x41, 0xB4 ); -DEFINE_GUID(GUID_BATTERY_SUBGROUP, 0xE73A048D, 0xBF27, 0x4F12, 0x97, 0x31, 0x8B, 0x20, 0x76, 0xE8, 0x89, 0x1F ); -DEFINE_GUID(GUID_BATTERY_DISCHARGE_ACTION_0, 0x637EA02F, 0xBBCB, 0x4015, 0x8E, 0x2C, 0xA1, 0xC7, 0xB9, 0xC0, 0xB5, 0x46 ); -DEFINE_GUID(GUID_BATTERY_DISCHARGE_LEVEL_0, 0x9A66D8D7, 0x4FF7, 0x4EF9, 0xB5, 0xA2, 0x5A, 0x32, 0x6C, 0xA2, 0xA4, 0x69 ); -DEFINE_GUID(GUID_BATTERY_DISCHARGE_FLAGS_0, 0x5dbb7c9f, 0x38e9, 0x40d2, 0x97, 0x49, 0x4f, 0x8a, 0x0e, 0x9f, 0x64, 0x0f ); -DEFINE_GUID(GUID_BATTERY_DISCHARGE_ACTION_1, 0xD8742DCB, 0x3E6A, 0x4B3C, 0xB3, 0xFE, 0x37, 0x46, 0x23, 0xCD, 0xCF, 0x06 ); -DEFINE_GUID(GUID_BATTERY_DISCHARGE_LEVEL_1, 0x8183BA9A, 0xE910, 0x48DA, 0x87, 0x69, 0x14, 0xAE, 0x6D, 0xC1, 0x17, 0x0A ); -DEFINE_GUID(GUID_BATTERY_DISCHARGE_FLAGS_1, 0xbcded951, 0x187b, 0x4d05, 0xbc, 0xcc, 0xf7, 0xe5, 0x19, 0x60, 0xc2, 0x58 ); -DEFINE_GUID(GUID_BATTERY_DISCHARGE_ACTION_2, 0x421CBA38, 0x1A8E, 0x4881, 0xAC, 0x89, 0xE3, 0x3A, 0x8B, 0x04, 0xEC, 0xE4 ); -DEFINE_GUID(GUID_BATTERY_DISCHARGE_LEVEL_2, 0x07A07CA2, 0xADAF, 0x40D7, 0xB0, 0x77, 0x53, 0x3A, 0xAD, 0xED, 0x1B, 0xFA ); -DEFINE_GUID(GUID_BATTERY_DISCHARGE_FLAGS_2, 0x7fd2f0c4, 0xfeb7, 0x4da3, 0x81, 0x17, 0xe3, 0xfb, 0xed, 0xc4, 0x65, 0x82 ); -DEFINE_GUID(GUID_BATTERY_DISCHARGE_ACTION_3, 0x80472613, 0x9780, 0x455E, 0xB3, 0x08, 0x72, 0xD3, 0x00, 0x3C, 0xF2, 0xF8 ); -DEFINE_GUID(GUID_BATTERY_DISCHARGE_LEVEL_3, 0x58AFD5A6, 0xC2DD, 0x47D2, 0x9F, 0xBF, 0xEF, 0x70, 0xCC, 0x5C, 0x59, 0x65 ); -DEFINE_GUID(GUID_BATTERY_DISCHARGE_FLAGS_3, 0x73613ccf, 0xdbfa, 0x4279, 0x83, 0x56, 0x49, 0x35, 0xf6, 0xbf, 0x62, 0xf3 ); -DEFINE_GUID(GUID_PROCESSOR_SETTINGS_SUBGROUP, 0x54533251, 0x82BE, 0x4824, 0x96, 0xC1, 0x47, 0xB6, 0x0B, 0x74, 0x0D, 0x00 ); -DEFINE_GUID(GUID_PROCESSOR_THROTTLE_POLICY, 0x57027304, 0x4AF6, 0x4104, 0x92, 0x60, 0xE3, 0xD9, 0x52, 0x48, 0xFC, 0x36 ); -DEFINE_GUID(GUID_PROCESSOR_THROTTLE_MAXIMUM, 0xBC5038F7, 0x23E0, 0x4960, 0x96, 0xDA, 0x33, 0xAB, 0xAF, 0x59, 0x35, 0xEC ); -DEFINE_GUID(GUID_PROCESSOR_THROTTLE_MINIMUM, 0x893DEE8E, 0x2BEF, 0x41E0, 0x89, 0xC6, 0xB5, 0x5D, 0x09, 0x29, 0x96, 0x4C ); -DEFINE_GUID(GUID_PROCESSOR_ALLOW_THROTTLING, 0x3b04d4fd, 0x1cc7, 0x4f23, 0xab, 0x1c, 0xd1, 0x33, 0x78, 0x19, 0xc4, 0xbb ); -DEFINE_GUID(GUID_PROCESSOR_IDLESTATE_POLICY, 0x68f262a7, 0xf621, 0x4069, 0xb9, 0xa5, 0x48, 0x74, 0x16, 0x9b, 0xe2, 0x3c); -DEFINE_GUID(GUID_PROCESSOR_PERFSTATE_POLICY, 0xBBDC3814, 0x18E9, 0x4463, 0x8A, 0x55, 0xD1, 0x97, 0x32, 0x7C, 0x45, 0xC0); -DEFINE_GUID(GUID_PROCESSOR_PERF_INCREASE_THRESHOLD, 0x06cadf0e, 0x64ed, 0x448a, 0x89, 0x27, 0xce, 0x7b, 0xf9, 0x0e, 0xb3, 0x5d ); -DEFINE_GUID(GUID_PROCESSOR_PERF_DECREASE_THRESHOLD, 0x12a0ab44, 0xfe28, 0x4fa9, 0xb3, 0xbd, 0x4b, 0x64, 0xf4, 0x49, 0x60, 0xa6 ); -DEFINE_GUID(GUID_PROCESSOR_PERF_INCREASE_POLICY, 0x465e1f50, 0xb610, 0x473a, 0xab, 0x58, 0x0, 0xd1, 0x7, 0x7d, 0xc4, 0x18); -DEFINE_GUID(GUID_PROCESSOR_PERF_DECREASE_POLICY, 0x40fbefc7, 0x2e9d, 0x4d25, 0xa1, 0x85, 0xc, 0xfd, 0x85, 0x74, 0xba, 0xc6); -DEFINE_GUID(GUID_PROCESSOR_PERF_INCREASE_TIME, 0x984cf492, 0x3bed, 0x4488, 0xa8, 0xf9, 0x42, 0x86, 0xc9, 0x7b, 0xf5, 0xaa); -DEFINE_GUID(GUID_PROCESSOR_PERF_DECREASE_TIME, 0xd8edeb9b, 0x95cf, 0x4f95, 0xa7, 0x3c, 0xb0, 0x61, 0x97, 0x36, 0x93, 0xc8); -DEFINE_GUID(GUID_PROCESSOR_PERF_TIME_CHECK, 0x4d2b0152, 0x7d5c, 0x498b, 0x88, 0xe2, 0x34, 0x34, 0x53, 0x92, 0xa2, 0xc5); -DEFINE_GUID(GUID_PROCESSOR_PERF_BOOST_POLICY, 0x45bcc044, 0xd885, 0x43e2, 0x86, 0x5, 0xee, 0xe, 0xc6, 0xe9, 0x6b, 0x59); -DEFINE_GUID(GUID_PROCESSOR_IDLE_ALLOW_SCALING, 0x6c2993b0, 0x8f48, 0x481f, 0xbc, 0xc6, 0x0, 0xdd, 0x27, 0x42, 0xaa, 0x6); -DEFINE_GUID(GUID_PROCESSOR_IDLE_DISABLE, 0x5d76a2ca, 0xe8c0, 0x402f, 0xa1, 0x33, 0x21, 0x58, 0x49, 0x2d, 0x58, 0xad); -DEFINE_GUID(GUID_PROCESSOR_IDLE_TIME_CHECK, 0xc4581c31, 0x89ab, 0x4597, 0x8e, 0x2b, 0x9c, 0x9c, 0xab, 0x44, 0xe, 0x6b); -DEFINE_GUID(GUID_PROCESSOR_IDLE_DEMOTE_THRESHOLD, 0x4b92d758, 0x5a24, 0x4851, 0xa4, 0x70, 0x81, 0x5d, 0x78, 0xae, 0xe1, 0x19); -DEFINE_GUID(GUID_PROCESSOR_IDLE_PROMOTE_THRESHOLD, 0x7b224883, 0xb3cc, 0x4d79, 0x81, 0x9f, 0x83, 0x74, 0x15, 0x2c, 0xbe, 0x7c); -DEFINE_GUID(GUID_PROCESSOR_CORE_PARKING_INCREASE_THRESHOLD, 0xdf142941, 0x20f3, 0x4edf, 0x9a, 0x4a, 0x9c, 0x83, 0xd3, 0xd7, 0x17, 0xd1 ); -DEFINE_GUID(GUID_PROCESSOR_CORE_PARKING_DECREASE_THRESHOLD, 0x68dd2f27, 0xa4ce, 0x4e11, 0x84, 0x87, 0x37, 0x94, 0xe4, 0x13, 0x5d, 0xfa); -DEFINE_GUID(GUID_PROCESSOR_CORE_PARKING_INCREASE_POLICY, 0xc7be0679, 0x2817, 0x4d69, 0x9d, 0x02, 0x51, 0x9a, 0x53, 0x7e, 0xd0, 0xc6); -DEFINE_GUID(GUID_PROCESSOR_CORE_PARKING_DECREASE_POLICY, 0x71021b41, 0xc749, 0x4d21, 0xbe, 0x74, 0xa0, 0x0f, 0x33, 0x5d, 0x58, 0x2b); -DEFINE_GUID(GUID_PROCESSOR_CORE_PARKING_MAX_CORES, 0xea062031, 0x0e34, 0x4ff1, 0x9b, 0x6d, 0xeb, 0x10, 0x59, 0x33, 0x40, 0x28); -DEFINE_GUID(GUID_PROCESSOR_CORE_PARKING_MIN_CORES, 0x0cc5b647, 0xc1df, 0x4637, 0x89, 0x1a, 0xde, 0xc3, 0x5c, 0x31, 0x85, 0x83); -DEFINE_GUID(GUID_PROCESSOR_CORE_PARKING_INCREASE_TIME, 0x2ddd5a84, 0x5a71, 0x437e, 0x91, 0x2a, 0xdb, 0x0b, 0x8c, 0x78, 0x87, 0x32); -DEFINE_GUID(GUID_PROCESSOR_CORE_PARKING_DECREASE_TIME, 0xdfd10d17, 0xd5eb, 0x45dd, 0x87, 0x7a, 0x9a, 0x34, 0xdd, 0xd1, 0x5c, 0x82); -DEFINE_GUID(GUID_PROCESSOR_CORE_PARKING_AFFINITY_HISTORY_DECREASE_FACTOR, 0x8f7b45e3, 0xc393, 0x480a, 0x87, 0x8c, 0xf6, 0x7a, 0xc3, 0xd0, 0x70, 0x82); -DEFINE_GUID(GUID_PROCESSOR_CORE_PARKING_AFFINITY_HISTORY_THRESHOLD, 0x5b33697b, 0xe89d, 0x4d38, 0xaa, 0x46, 0x9e, 0x7d, 0xfb, 0x7c, 0xd2, 0xf9); -DEFINE_GUID(GUID_PROCESSOR_CORE_PARKING_AFFINITY_WEIGHTING, 0xe70867f1, 0xfa2f, 0x4f4e, 0xae, 0xa1, 0x4d, 0x8a, 0x0b, 0xa2, 0x3b, 0x20); -DEFINE_GUID(GUID_PROCESSOR_CORE_PARKING_OVER_UTILIZATION_HISTORY_DECREASE_FACTOR, 0x1299023c, 0xbc28, 0x4f0a, 0x81, 0xec, 0xd3, 0x29, 0x5a, 0x8d, 0x81, 0x5d); -DEFINE_GUID(GUID_PROCESSOR_CORE_PARKING_OVER_UTILIZATION_HISTORY_THRESHOLD, 0x9ac18e92, 0xaa3c, 0x4e27, 0xb3, 0x07, 0x01, 0xae, 0x37, 0x30, 0x71, 0x29); -DEFINE_GUID(GUID_PROCESSOR_CORE_PARKING_OVER_UTILIZATION_WEIGHTING, 0x8809c2d8, 0xb155, 0x42d4, 0xbc, 0xda, 0x0d, 0x34, 0x56, 0x51, 0xb1, 0xdb); -DEFINE_GUID(GUID_PROCESSOR_CORE_PARKING_OVER_UTILIZATION_THRESHOLD, 0x943c8cb6, 0x6f93, 0x4227, 0xad, 0x87, 0xe9, 0xa3, 0xfe, 0xec, 0x08, 0xd1); -DEFINE_GUID(GUID_PROCESSOR_PARKING_CORE_OVERRIDE, 0xa55612aa, 0xf624, 0x42c6, 0xa4, 0x43, 0x73, 0x97, 0xd0, 0x64, 0xc0, 0x4f); -DEFINE_GUID(GUID_PROCESSOR_PARKING_PERF_STATE, 0x447235c7, 0x6a8d, 0x4cc0, 0x8e, 0x24, 0x9e, 0xaf, 0x70, 0xb9, 0x6e, 0x2b); -DEFINE_GUID(GUID_PROCESSOR_PERF_HISTORY, 0x7d24baa7, 0x0b84, 0x480f, 0x84, 0x0c, 0x1b, 0x07, 0x43, 0xc0, 0x0f, 0x5f); -DEFINE_GUID(GUID_SYSTEM_COOLING_POLICY, 0x94D3A615, 0xA899, 0x4AC5, 0xAE, 0x2B, 0xE4, 0xD8, 0xF6, 0x34, 0x36, 0x7F); -DEFINE_GUID(GUID_LOCK_CONSOLE_ON_WAKE, 0x0E796BDB, 0x100D, 0x47D6, 0xA2, 0xD5, 0xF7, 0xD2, 0xDA, 0xA5, 0x1F, 0x51 ); -DEFINE_GUID(GUID_DEVICE_IDLE_POLICY, 0x4faab71a, 0x92e5, 0x4726, 0xb5, 0x31, 0x22, 0x45, 0x59, 0x67, 0x2d, 0x19 ); -DEFINE_GUID(GUID_ACDC_POWER_SOURCE, 0x5D3E9A59, 0xE9D5, 0x4B00, 0xA6, 0xBD, 0xFF, 0x34, 0xFF, 0x51, 0x65, 0x48 ); -DEFINE_GUID(GUID_LIDSWITCH_STATE_CHANGE, 0xBA3E0F4D, 0xB817, 0x4094, 0xA2, 0xD1, 0xD5, 0x63, 0x79, 0xE6, 0xA0, 0xF3 ); -DEFINE_GUID(GUID_BATTERY_PERCENTAGE_REMAINING, 0xA7AD8041, 0xB45A, 0x4CAE, 0x87, 0xA3, 0xEE, 0xCB, 0xB4, 0x68, 0xA9, 0xE1 ); -DEFINE_GUID(GUID_IDLE_BACKGROUND_TASK, 0x515C31D8, 0xF734, 0x163D, 0xA0, 0xFD, 0x11, 0xA0, 0x8C, 0x91, 0xE8, 0xF1 ); -DEFINE_GUID(GUID_BACKGROUND_TASK_NOTIFICATION, 0xCF23F240, 0x2A54, 0x48D8, 0xB1, 0x14, 0xDE, 0x15, 0x18, 0xFF, 0x05, 0x2E ); -DEFINE_GUID(GUID_APPLAUNCH_BUTTON, 0x1A689231, 0x7399, 0x4E9A, 0x8F, 0x99, 0xB7, 0x1F, 0x99, 0x9D, 0xB3, 0xFA ); -DEFINE_GUID(GUID_PCIEXPRESS_SETTINGS_SUBGROUP, 0x501a4d13, 0x42af,0x4429, 0x9f, 0xd1, 0xa8, 0x21, 0x8c, 0x26, 0x8e, 0x20 ); -DEFINE_GUID(GUID_PCIEXPRESS_ASPM_POLICY, 0xee12f906, 0xd277, 0x404b, 0xb6, 0xda, 0xe5, 0xfa, 0x1a, 0x57, 0x6d, 0xf5 ); -DEFINE_GUID(GUID_ENABLE_SWITCH_FORCED_SHUTDOWN, 0x833a6b62, 0xdfa4, 0x46d1, 0x82, 0xf8, 0xe0, 0x9e, 0x34, 0xd0, 0x29, 0xd6 ); - -#define PERFSTATE_POLICY_CHANGE_IDEAL 0 -#define PERFSTATE_POLICY_CHANGE_SINGLE 1 -#define PERFSTATE_POLICY_CHANGE_ROCKET 2 -#define PERFSTATE_POLICY_CHANGE_MAX PERFSTATE_POLICY_CHANGE_ROCKET - -#define PROCESSOR_PERF_BOOST_POLICY_DISABLED 0 -#define PROCESSOR_PERF_BOOST_POLICY_MAX 100 - -#define POWER_DEVICE_IDLE_POLICY_PERFORMANCE 0 -#define POWER_DEVICE_IDLE_POLICY_CONSERVATIVE 1 - -typedef VOID -(NTAPI REQUEST_POWER_COMPLETE)( - IN struct _DEVICE_OBJECT *DeviceObject, - IN UCHAR MinorFunction, - IN POWER_STATE PowerState, - IN PVOID Context, - IN struct _IO_STATUS_BLOCK *IoStatus); -typedef REQUEST_POWER_COMPLETE *PREQUEST_POWER_COMPLETE; - -typedef -NTSTATUS -(NTAPI POWER_SETTING_CALLBACK)( - IN LPCGUID SettingGuid, - IN PVOID Value, - IN ULONG ValueLength, - IN OUT PVOID Context OPTIONAL); -typedef POWER_SETTING_CALLBACK *PPOWER_SETTING_CALLBACK; - - diff --git a/reactos/include/xdk/ppc/ke.h b/reactos/include/xdk/ppc/ke.h deleted file mode 100644 index b3a81bc7aa9..00000000000 --- a/reactos/include/xdk/ppc/ke.h +++ /dev/null @@ -1,107 +0,0 @@ -$if (_WDMDDK_) - -/* Interrupt request levels */ -#define PASSIVE_LEVEL 0 -#define LOW_LEVEL 0 -#define APC_LEVEL 1 -#define DISPATCH_LEVEL 2 -#define PROFILE_LEVEL 27 -#define CLOCK1_LEVEL 28 -#define CLOCK2_LEVEL 28 -#define IPI_LEVEL 29 -#define POWER_LEVEL 30 -#define HIGH_LEVEL 31 - -// -// Used to contain PFNs and PFN counts -// -typedef ULONG PFN_COUNT; -typedef ULONG PFN_NUMBER, *PPFN_NUMBER; -typedef LONG SPFN_NUMBER, *PSPFN_NUMBER; - - -typedef struct _KFLOATING_SAVE { - ULONG Dummy; -} KFLOATING_SAVE, *PKFLOATING_SAVE; - -typedef struct _KPCR_TIB { - PVOID ExceptionList; /* 00 */ - PVOID StackBase; /* 04 */ - PVOID StackLimit; /* 08 */ - PVOID SubSystemTib; /* 0C */ - _ANONYMOUS_UNION union { - PVOID FiberData; /* 10 */ - ULONG Version; /* 10 */ - } DUMMYUNIONNAME; - PVOID ArbitraryUserPointer; /* 14 */ - struct _KPCR_TIB *Self; /* 18 */ -} KPCR_TIB, *PKPCR_TIB; /* 1C */ - -#define PCR_MINOR_VERSION 1 -#define PCR_MAJOR_VERSION 1 - -typedef struct _KPCR { - KPCR_TIB Tib; /* 00 */ - struct _KPCR *Self; /* 1C */ - struct _KPRCB *Prcb; /* 20 */ - KIRQL Irql; /* 24 */ - ULONG IRR; /* 28 */ - ULONG IrrActive; /* 2C */ - ULONG IDR; /* 30 */ - PVOID KdVersionBlock; /* 34 */ - PUSHORT IDT; /* 38 */ - PUSHORT GDT; /* 3C */ - struct _KTSS *TSS; /* 40 */ - USHORT MajorVersion; /* 44 */ - USHORT MinorVersion; /* 46 */ - KAFFINITY SetMember; /* 48 */ - ULONG StallScaleFactor; /* 4C */ - UCHAR SpareUnused; /* 50 */ - UCHAR Number; /* 51 */ -} KPCR, *PKPCR; /* 54 */ - -#define KeGetPcr() PCR - -#define YieldProcessor() __asm__ __volatile__("nop"); - -FORCEINLINE -ULONG -NTAPI -KeGetCurrentProcessorNumber(VOID) -{ - ULONG Number; - __asm__ __volatile__ ( - "lwz %0, %c1(12)\n" - : "=r" (Number) - : "i" (FIELD_OFFSET(KPCR, Number)) - ); - return Number; -} - -NTHALAPI -VOID -FASTCALL -KfLowerIrql( - IN KIRQL NewIrql); -#define KeLowerIrql(a) KfLowerIrql(a) - -NTHALAPI -KIRQL -FASTCALL -KfRaiseIrql( - IN KIRQL NewIrql); -#define KeRaiseIrql(a,b) *(b) = KfRaiseIrql(a) - -NTHALAPI -KIRQL -NTAPI -KeRaiseIrqlToDpcLevel(VOID); - -NTHALAPI -KIRQL -NTAPI -KeRaiseIrqlToSynchLevel(VOID); - -$endif - - diff --git a/reactos/include/xdk/psfuncs.h b/reactos/include/xdk/psfuncs.h deleted file mode 100644 index 48666e64ab8..00000000000 --- a/reactos/include/xdk/psfuncs.h +++ /dev/null @@ -1,184 +0,0 @@ -/****************************************************************************** - * Process Manager Functions * - ******************************************************************************/ -$if (_WDMDDK_) - -NTKERNELAPI -NTSTATUS -NTAPI -PsWrapApcWow64Thread( - IN OUT PVOID *ApcContext, - IN OUT PVOID *ApcRoutine); - -/* - * PEPROCESS - * PsGetCurrentProcess(VOID) - */ -#define PsGetCurrentProcess IoGetCurrentProcess - -#if !defined(_PSGETCURRENTTHREAD_) -#define _PSGETCURRENTTHREAD_ -FORCEINLINE -PETHREAD -NTAPI -PsGetCurrentThread(VOID) -{ - return (PETHREAD)KeGetCurrentThread(); -} -#endif /* !_PSGETCURRENTTHREAD_ */ - -$endif /* _WDMDDK_ */ -$if (_NTDDK_) - -NTSYSCALLAPI -NTSTATUS -NTAPI -NtOpenProcess( - OUT PHANDLE ProcessHandle, - IN ACCESS_MASK DesiredAccess, - IN POBJECT_ATTRIBUTES ObjectAttributes, - IN PCLIENT_ID ClientId OPTIONAL); - -NTSYSCALLAPI -NTSTATUS -NTAPI -NtQueryInformationProcess( - IN HANDLE ProcessHandle, - IN PROCESSINFOCLASS ProcessInformationClass, - OUT PVOID ProcessInformation OPTIONAL, - IN ULONG ProcessInformationLength, - OUT PULONG ReturnLength OPTIONAL); -$endif /* _NTDDK_ */ - -#if (NTDDI_VERSION >= NTDDI_WIN2K) - -$if (_WDMDDK_) -NTKERNELAPI -NTSTATUS -NTAPI -PsCreateSystemThread( - OUT PHANDLE ThreadHandle, - IN ULONG DesiredAccess, - IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, - IN HANDLE ProcessHandle OPTIONAL, - OUT PCLIENT_ID ClientId OPTIONAL, - IN PKSTART_ROUTINE StartRoutine, - IN PVOID StartContext OPTIONAL); - -NTKERNELAPI -NTSTATUS -NTAPI -PsTerminateSystemThread( - IN NTSTATUS ExitStatus); - -$endif /* _WDMDDK_ */ -$if (_NTDDK_) - -NTKERNELAPI -NTSTATUS -NTAPI -PsSetCreateProcessNotifyRoutine( - IN PCREATE_PROCESS_NOTIFY_ROUTINE NotifyRoutine, - IN BOOLEAN Remove); - -NTKERNELAPI -NTSTATUS -NTAPI -PsSetCreateThreadNotifyRoutine( - IN PCREATE_THREAD_NOTIFY_ROUTINE NotifyRoutine); - -NTKERNELAPI -NTSTATUS -NTAPI -PsSetLoadImageNotifyRoutine( - IN PLOAD_IMAGE_NOTIFY_ROUTINE NotifyRoutine); - -NTKERNELAPI -HANDLE -NTAPI -PsGetCurrentProcessId(VOID); - -NTKERNELAPI -HANDLE -NTAPI -PsGetCurrentThreadId(VOID); - -NTKERNELAPI -BOOLEAN -NTAPI -PsGetVersion( - OUT PULONG MajorVersion OPTIONAL, - OUT PULONG MinorVersion OPTIONAL, - OUT PULONG BuildNumber OPTIONAL, - OUT PUNICODE_STRING CSDVersion OPTIONAL); -$endif /* _NTDDK_ */ - -#endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */ - -$if (_NTDDK_) -#if (NTDDI_VERSION >= NTDDI_WINXP) - -NTKERNELAPI -HANDLE -NTAPI -PsGetProcessId( - IN PEPROCESS Process); - -NTKERNELAPI -HANDLE -NTAPI -PsGetThreadId( - IN PETHREAD Thread); - -NTKERNELAPI -NTSTATUS -NTAPI -PsRemoveCreateThreadNotifyRoutine( - IN PCREATE_THREAD_NOTIFY_ROUTINE NotifyRoutine); - -NTKERNELAPI -NTSTATUS -NTAPI -PsRemoveLoadImageNotifyRoutine( - IN PLOAD_IMAGE_NOTIFY_ROUTINE NotifyRoutine); - -NTKERNELAPI -LONGLONG -NTAPI -PsGetProcessCreateTimeQuadPart( - IN PEPROCESS Process); - -#endif /* (NTDDI_VERSION >= NTDDI_WINXP) */ - -#if (NTDDI_VERSION >= NTDDI_WS03) -NTKERNELAPI -HANDLE -NTAPI -PsGetThreadProcessId( - IN PETHREAD Thread); -#endif /* (NTDDI_VERSION >= NTDDI_WS03) */ - -#if (NTDDI_VERSION >= NTDDI_VISTA) - -NTKERNELAPI -BOOLEAN -NTAPI -PsSetCurrentThreadPrefetching( - IN BOOLEAN Prefetching); - -NTKERNELAPI -BOOLEAN -NTAPI -PsIsCurrentThreadPrefetching(VOID); - -#endif /* (NTDDI_VERSION >= NTDDI_VISTA) */ - -#if (NTDDI_VERSION >= NTDDI_VISTASP1) -NTKERNELAPI -NTSTATUS -NTAPI -PsSetCreateProcessNotifyRoutineEx( - IN PCREATE_PROCESS_NOTIFY_ROUTINE_EX NotifyRoutine, - IN BOOLEAN Remove); -#endif /* (NTDDI_VERSION >= NTDDI_VISTASP1) */ -$endif diff --git a/reactos/include/xdk/pstypes.h b/reactos/include/xdk/pstypes.h deleted file mode 100644 index adda1fb12b5..00000000000 --- a/reactos/include/xdk/pstypes.h +++ /dev/null @@ -1,451 +0,0 @@ -/****************************************************************************** - * Process Manager Types * - ******************************************************************************/ -$if (_WDMDDK_) - -#define QUOTA_LIMITS_HARDWS_MIN_ENABLE 0x00000001 -#define QUOTA_LIMITS_HARDWS_MIN_DISABLE 0x00000002 -#define QUOTA_LIMITS_HARDWS_MAX_ENABLE 0x00000004 -#define QUOTA_LIMITS_HARDWS_MAX_DISABLE 0x00000008 -#define QUOTA_LIMITS_USE_DEFAULT_LIMITS 0x00000010 - -/* Thread Access Rights */ -#define THREAD_TERMINATE 0x0001 -#define THREAD_SUSPEND_RESUME 0x0002 -#define THREAD_ALERT 0x0004 -#define THREAD_GET_CONTEXT 0x0008 -#define THREAD_SET_CONTEXT 0x0010 -#define THREAD_SET_INFORMATION 0x0020 -#define THREAD_SET_LIMITED_INFORMATION 0x0400 -#define THREAD_QUERY_LIMITED_INFORMATION 0x0800 - -#define PROCESS_DUP_HANDLE (0x0040) - -#if (NTDDI_VERSION >= NTDDI_VISTA) -#define PROCESS_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0xFFFF) -#else -#define PROCESS_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0xFFF) -#endif - -#if (NTDDI_VERSION >= NTDDI_VISTA) -#define THREAD_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0xFFFF) -#else -#define THREAD_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x3FF) -#endif - -#define LOW_PRIORITY 0 -#define LOW_REALTIME_PRIORITY 16 -#define HIGH_PRIORITY 31 -#define MAXIMUM_PRIORITY 32 - -$endif /* _WDMDDK_ */ -$if (_NTDDK_) - -#define QUOTA_LIMITS_HARDWS_MIN_ENABLE 0x00000001 -#define QUOTA_LIMITS_HARDWS_MIN_DISABLE 0x00000002 -#define QUOTA_LIMITS_HARDWS_MAX_ENABLE 0x00000004 -#define QUOTA_LIMITS_HARDWS_MAX_DISABLE 0x00000008 -#define QUOTA_LIMITS_USE_DEFAULT_LIMITS 0x00000010 - -typedef struct _QUOTA_LIMITS { - SIZE_T PagedPoolLimit; - SIZE_T NonPagedPoolLimit; - SIZE_T MinimumWorkingSetSize; - SIZE_T MaximumWorkingSetSize; - SIZE_T PagefileLimit; - LARGE_INTEGER TimeLimit; -} QUOTA_LIMITS, *PQUOTA_LIMITS; - -typedef union _RATE_QUOTA_LIMIT { - ULONG RateData; - struct { - ULONG RatePercent:7; - ULONG Reserved0:25; - } DUMMYSTRUCTNAME; -} RATE_QUOTA_LIMIT, *PRATE_QUOTA_LIMIT; - -typedef struct _QUOTA_LIMITS_EX { - SIZE_T PagedPoolLimit; - SIZE_T NonPagedPoolLimit; - SIZE_T MinimumWorkingSetSize; - SIZE_T MaximumWorkingSetSize; - SIZE_T PagefileLimit; - LARGE_INTEGER TimeLimit; - SIZE_T WorkingSetLimit; - SIZE_T Reserved2; - SIZE_T Reserved3; - SIZE_T Reserved4; - ULONG Flags; - RATE_QUOTA_LIMIT CpuRateLimit; -} QUOTA_LIMITS_EX, *PQUOTA_LIMITS_EX; - -typedef struct _IO_COUNTERS { - ULONGLONG ReadOperationCount; - ULONGLONG WriteOperationCount; - ULONGLONG OtherOperationCount; - ULONGLONG ReadTransferCount; - ULONGLONG WriteTransferCount; - ULONGLONG OtherTransferCount; -} IO_COUNTERS, *PIO_COUNTERS; - -typedef struct _VM_COUNTERS { - SIZE_T PeakVirtualSize; - SIZE_T VirtualSize; - ULONG PageFaultCount; - SIZE_T PeakWorkingSetSize; - SIZE_T WorkingSetSize; - SIZE_T QuotaPeakPagedPoolUsage; - SIZE_T QuotaPagedPoolUsage; - SIZE_T QuotaPeakNonPagedPoolUsage; - SIZE_T QuotaNonPagedPoolUsage; - SIZE_T PagefileUsage; - SIZE_T PeakPagefileUsage; -} VM_COUNTERS, *PVM_COUNTERS; - -typedef struct _VM_COUNTERS_EX { - SIZE_T PeakVirtualSize; - SIZE_T VirtualSize; - ULONG PageFaultCount; - SIZE_T PeakWorkingSetSize; - SIZE_T WorkingSetSize; - SIZE_T QuotaPeakPagedPoolUsage; - SIZE_T QuotaPagedPoolUsage; - SIZE_T QuotaPeakNonPagedPoolUsage; - SIZE_T QuotaNonPagedPoolUsage; - SIZE_T PagefileUsage; - SIZE_T PeakPagefileUsage; - SIZE_T PrivateUsage; -} VM_COUNTERS_EX, *PVM_COUNTERS_EX; - -#define MAX_HW_COUNTERS 16 -#define THREAD_PROFILING_FLAG_DISPATCH 0x00000001 - -typedef enum _HARDWARE_COUNTER_TYPE { - PMCCounter, - MaxHardwareCounterType -} HARDWARE_COUNTER_TYPE, *PHARDWARE_COUNTER_TYPE; - -typedef struct _HARDWARE_COUNTER { - HARDWARE_COUNTER_TYPE Type; - ULONG Reserved; - ULONG64 Index; -} HARDWARE_COUNTER, *PHARDWARE_COUNTER; - -typedef struct _POOLED_USAGE_AND_LIMITS { - SIZE_T PeakPagedPoolUsage; - SIZE_T PagedPoolUsage; - SIZE_T PagedPoolLimit; - SIZE_T PeakNonPagedPoolUsage; - SIZE_T NonPagedPoolUsage; - SIZE_T NonPagedPoolLimit; - SIZE_T PeakPagefileUsage; - SIZE_T PagefileUsage; - SIZE_T PagefileLimit; -} POOLED_USAGE_AND_LIMITS, *PPOOLED_USAGE_AND_LIMITS; - -typedef struct _PROCESS_ACCESS_TOKEN { - HANDLE Token; - HANDLE Thread; -} PROCESS_ACCESS_TOKEN, *PPROCESS_ACCESS_TOKEN; - -#define PROCESS_EXCEPTION_PORT_ALL_STATE_BITS 0x00000003UL -#define PROCESS_EXCEPTION_PORT_ALL_STATE_FLAGS ((ULONG_PTR)((1UL << PROCESS_EXCEPTION_PORT_ALL_STATE_BITS) - 1)) - -typedef struct _PROCESS_EXCEPTION_PORT { - IN HANDLE ExceptionPortHandle; - IN OUT ULONG StateFlags; -} PROCESS_EXCEPTION_PORT, *PPROCESS_EXCEPTION_PORT; - -typedef VOID -(NTAPI *PCREATE_PROCESS_NOTIFY_ROUTINE)( - IN HANDLE ParentId, - IN HANDLE ProcessId, - IN BOOLEAN Create); - -typedef struct _PS_CREATE_NOTIFY_INFO { - IN SIZE_T Size; - union { - IN ULONG Flags; - struct { - IN ULONG FileOpenNameAvailable:1; - IN ULONG Reserved:31; - }; - }; - IN HANDLE ParentProcessId; - IN CLIENT_ID CreatingThreadId; - IN OUT struct _FILE_OBJECT *FileObject; - IN PCUNICODE_STRING ImageFileName; - IN PCUNICODE_STRING CommandLine OPTIONAL; - IN OUT NTSTATUS CreationStatus; -} PS_CREATE_NOTIFY_INFO, *PPS_CREATE_NOTIFY_INFO; - -typedef VOID -(NTAPI *PCREATE_PROCESS_NOTIFY_ROUTINE_EX)( - IN OUT PEPROCESS Process, - IN HANDLE ProcessId, - IN PPS_CREATE_NOTIFY_INFO CreateInfo OPTIONAL); - -typedef VOID -(NTAPI *PCREATE_THREAD_NOTIFY_ROUTINE)( - IN HANDLE ProcessId, - IN HANDLE ThreadId, - IN BOOLEAN Create); - -#define IMAGE_ADDRESSING_MODE_32BIT 3 - -typedef struct _IMAGE_INFO { - _ANONYMOUS_UNION union { - ULONG Properties; - _ANONYMOUS_STRUCT struct { - ULONG ImageAddressingMode:8; - ULONG SystemModeImage:1; - ULONG ImageMappedToAllPids:1; - ULONG ExtendedInfoPresent:1; - ULONG Reserved:21; - } DUMMYSTRUCTNAME; - } DUMMYUNIONNAME; - PVOID ImageBase; - ULONG ImageSelector; - SIZE_T ImageSize; - ULONG ImageSectionNumber; -} IMAGE_INFO, *PIMAGE_INFO; - -typedef struct _IMAGE_INFO_EX { - SIZE_T Size; - IMAGE_INFO ImageInfo; - struct _FILE_OBJECT *FileObject; -} IMAGE_INFO_EX, *PIMAGE_INFO_EX; - -typedef VOID -(NTAPI *PLOAD_IMAGE_NOTIFY_ROUTINE)( - IN PUNICODE_STRING FullImageName, - IN HANDLE ProcessId, - IN PIMAGE_INFO ImageInfo); - -#define THREAD_CSWITCH_PMU_DISABLE FALSE -#define THREAD_CSWITCH_PMU_ENABLE TRUE - -#define PROCESS_LUID_DOSDEVICES_ONLY 0x00000001 - -#define PROCESS_HANDLE_TRACING_MAX_STACKS 16 - -typedef struct _NT_TIB { - struct _EXCEPTION_REGISTRATION_RECORD *ExceptionList; - PVOID StackBase; - PVOID StackLimit; - PVOID SubSystemTib; - _ANONYMOUS_UNION union { - PVOID FiberData; - ULONG Version; - } DUMMYUNIONNAME; - PVOID ArbitraryUserPointer; - struct _NT_TIB *Self; -} NT_TIB, *PNT_TIB; - -typedef struct _NT_TIB32 { - ULONG ExceptionList; - ULONG StackBase; - ULONG StackLimit; - ULONG SubSystemTib; - __GNU_EXTENSION union { - ULONG FiberData; - ULONG Version; - }; - ULONG ArbitraryUserPointer; - ULONG Self; -} NT_TIB32,*PNT_TIB32; - -typedef struct _NT_TIB64 { - ULONG64 ExceptionList; - ULONG64 StackBase; - ULONG64 StackLimit; - ULONG64 SubSystemTib; - __GNU_EXTENSION union { - ULONG64 FiberData; - ULONG Version; - }; - ULONG64 ArbitraryUserPointer; - ULONG64 Self; -} NT_TIB64,*PNT_TIB64; - -typedef enum _PROCESSINFOCLASS { - ProcessBasicInformation, - ProcessQuotaLimits, - ProcessIoCounters, - ProcessVmCounters, - ProcessTimes, - ProcessBasePriority, - ProcessRaisePriority, - ProcessDebugPort, - ProcessExceptionPort, - ProcessAccessToken, - ProcessLdtInformation, - ProcessLdtSize, - ProcessDefaultHardErrorMode, - ProcessIoPortHandlers, - ProcessPooledUsageAndLimits, - ProcessWorkingSetWatch, - ProcessUserModeIOPL, - ProcessEnableAlignmentFaultFixup, - ProcessPriorityClass, - ProcessWx86Information, - ProcessHandleCount, - ProcessAffinityMask, - ProcessPriorityBoost, - ProcessDeviceMap, - ProcessSessionInformation, - ProcessForegroundInformation, - ProcessWow64Information, - ProcessImageFileName, - ProcessLUIDDeviceMapsEnabled, - ProcessBreakOnTermination, - ProcessDebugObjectHandle, - ProcessDebugFlags, - ProcessHandleTracing, - ProcessIoPriority, - ProcessExecuteFlags, - ProcessTlsInformation, - ProcessCookie, - ProcessImageInformation, - ProcessCycleTime, - ProcessPagePriority, - ProcessInstrumentationCallback, - ProcessThreadStackAllocation, - ProcessWorkingSetWatchEx, - ProcessImageFileNameWin32, - ProcessImageFileMapping, - ProcessAffinityUpdateMode, - ProcessMemoryAllocationMode, - ProcessGroupInformation, - ProcessTokenVirtualizationEnabled, - ProcessConsoleHostProcess, - ProcessWindowInformation, - MaxProcessInfoClass -} PROCESSINFOCLASS; - -typedef enum _THREADINFOCLASS { - ThreadBasicInformation, - ThreadTimes, - ThreadPriority, - ThreadBasePriority, - ThreadAffinityMask, - ThreadImpersonationToken, - ThreadDescriptorTableEntry, - ThreadEnableAlignmentFaultFixup, - ThreadEventPair_Reusable, - ThreadQuerySetWin32StartAddress, - ThreadZeroTlsCell, - ThreadPerformanceCount, - ThreadAmILastThread, - ThreadIdealProcessor, - ThreadPriorityBoost, - ThreadSetTlsArrayAddress, - ThreadIsIoPending, - ThreadHideFromDebugger, - ThreadBreakOnTermination, - ThreadSwitchLegacyState, - ThreadIsTerminated, - ThreadLastSystemCall, - ThreadIoPriority, - ThreadCycleTime, - ThreadPagePriority, - ThreadActualBasePriority, - ThreadTebInformation, - ThreadCSwitchMon, - ThreadCSwitchPmu, - ThreadWow64Context, - ThreadGroupInformation, - ThreadUmsInformation, - ThreadCounterProfiling, - ThreadIdealProcessorEx, - MaxThreadInfoClass -} THREADINFOCLASS; - -typedef struct _PAGE_PRIORITY_INFORMATION { - ULONG PagePriority; -} PAGE_PRIORITY_INFORMATION, *PPAGE_PRIORITY_INFORMATION; - -typedef struct _PROCESS_WS_WATCH_INFORMATION { - PVOID FaultingPc; - PVOID FaultingVa; -} PROCESS_WS_WATCH_INFORMATION, *PPROCESS_WS_WATCH_INFORMATION; - -typedef struct _PROCESS_BASIC_INFORMATION { - NTSTATUS ExitStatus; - struct _PEB *PebBaseAddress; - ULONG_PTR AffinityMask; - KPRIORITY BasePriority; - ULONG_PTR UniqueProcessId; - ULONG_PTR InheritedFromUniqueProcessId; -} PROCESS_BASIC_INFORMATION,*PPROCESS_BASIC_INFORMATION; - -typedef struct _PROCESS_EXTENDED_BASIC_INFORMATION { - SIZE_T Size; - PROCESS_BASIC_INFORMATION BasicInfo; - union { - ULONG Flags; - struct { - ULONG IsProtectedProcess:1; - ULONG IsWow64Process:1; - ULONG IsProcessDeleting:1; - ULONG IsCrossSessionCreate:1; - ULONG SpareBits:28; - } DUMMYSTRUCTNAME; - } DUMMYUNIONNAME; -} PROCESS_EXTENDED_BASIC_INFORMATION, *PPROCESS_EXTENDED_BASIC_INFORMATION; - -typedef struct _PROCESS_DEVICEMAP_INFORMATION { - __GNU_EXTENSION union { - struct { - HANDLE DirectoryHandle; - } Set; - struct { - ULONG DriveMap; - UCHAR DriveType[32]; - } Query; - }; -} PROCESS_DEVICEMAP_INFORMATION, *PPROCESS_DEVICEMAP_INFORMATION; - -typedef struct _PROCESS_DEVICEMAP_INFORMATION_EX { - union { - struct { - HANDLE DirectoryHandle; - } Set; - struct { - ULONG DriveMap; - UCHAR DriveType[32]; - } Query; - } DUMMYUNIONNAME; - ULONG Flags; -} PROCESS_DEVICEMAP_INFORMATION_EX, *PPROCESS_DEVICEMAP_INFORMATION_EX; - -typedef struct _PROCESS_SESSION_INFORMATION { - ULONG SessionId; -} PROCESS_SESSION_INFORMATION, *PPROCESS_SESSION_INFORMATION; - -typedef struct _PROCESS_HANDLE_TRACING_ENABLE { - ULONG Flags; -} PROCESS_HANDLE_TRACING_ENABLE, *PPROCESS_HANDLE_TRACING_ENABLE; - -typedef struct _PROCESS_HANDLE_TRACING_ENABLE_EX { - ULONG Flags; - ULONG TotalSlots; -} PROCESS_HANDLE_TRACING_ENABLE_EX, *PPROCESS_HANDLE_TRACING_ENABLE_EX; - -typedef struct _PROCESS_HANDLE_TRACING_ENTRY { - HANDLE Handle; - CLIENT_ID ClientId; - ULONG Type; - PVOID Stacks[PROCESS_HANDLE_TRACING_MAX_STACKS]; -} PROCESS_HANDLE_TRACING_ENTRY, *PPROCESS_HANDLE_TRACING_ENTRY; - -typedef struct _PROCESS_HANDLE_TRACING_QUERY { - HANDLE Handle; - ULONG TotalTraces; - PROCESS_HANDLE_TRACING_ENTRY HandleTrace[1]; -} PROCESS_HANDLE_TRACING_QUERY, *PPROCESS_HANDLE_TRACING_QUERY; - -extern NTKERNELAPI PEPROCESS PsInitialSystemProcess; - -$endif /* _NTDDK_ */ - diff --git a/reactos/include/xdk/rtlfuncs.h b/reactos/include/xdk/rtlfuncs.h deleted file mode 100644 index a5302dcea9f..00000000000 --- a/reactos/include/xdk/rtlfuncs.h +++ /dev/null @@ -1,2259 +0,0 @@ -/****************************************************************************** - * Runtime Library Functions * - ******************************************************************************/ - -$if (_WDMDDK_) - -#if !defined(MIDL_PASS) && !defined(SORTPP_PASS) - -#define RTL_STATIC_LIST_HEAD(x) LIST_ENTRY x = { &x, &x } - -FORCEINLINE -VOID -InitializeListHead( - OUT PLIST_ENTRY ListHead) -{ - ListHead->Flink = ListHead->Blink = ListHead; -} - -BOOLEAN -FORCEINLINE -IsListEmpty( - IN CONST LIST_ENTRY * ListHead) -{ - return (BOOLEAN)(ListHead->Flink == ListHead); -} - -FORCEINLINE -BOOLEAN -RemoveEntryList( - IN PLIST_ENTRY Entry) -{ - PLIST_ENTRY OldFlink; - PLIST_ENTRY OldBlink; - - OldFlink = Entry->Flink; - OldBlink = Entry->Blink; - OldFlink->Blink = OldBlink; - OldBlink->Flink = OldFlink; - return (BOOLEAN)(OldFlink == OldBlink); -} - -FORCEINLINE -PLIST_ENTRY -RemoveHeadList( - IN OUT PLIST_ENTRY ListHead) -{ - PLIST_ENTRY Flink; - PLIST_ENTRY Entry; - - Entry = ListHead->Flink; - Flink = Entry->Flink; - ListHead->Flink = Flink; - Flink->Blink = ListHead; - return Entry; -} - -FORCEINLINE -PLIST_ENTRY -RemoveTailList( - IN OUT PLIST_ENTRY ListHead) -{ - PLIST_ENTRY Blink; - PLIST_ENTRY Entry; - - Entry = ListHead->Blink; - Blink = Entry->Blink; - ListHead->Blink = Blink; - Blink->Flink = ListHead; - return Entry; -} - -FORCEINLINE -VOID -InsertTailList( - IN OUT PLIST_ENTRY ListHead, - IN OUT PLIST_ENTRY Entry) -{ - PLIST_ENTRY OldBlink; - OldBlink = ListHead->Blink; - Entry->Flink = ListHead; - Entry->Blink = OldBlink; - OldBlink->Flink = Entry; - ListHead->Blink = Entry; -} - -FORCEINLINE -VOID -InsertHeadList( - IN OUT PLIST_ENTRY ListHead, - IN OUT PLIST_ENTRY Entry) -{ - PLIST_ENTRY OldFlink; - OldFlink = ListHead->Flink; - Entry->Flink = OldFlink; - Entry->Blink = ListHead; - OldFlink->Blink = Entry; - ListHead->Flink = Entry; -} - -FORCEINLINE -VOID -AppendTailList( - IN OUT PLIST_ENTRY ListHead, - IN OUT PLIST_ENTRY ListToAppend) -{ - PLIST_ENTRY ListEnd = ListHead->Blink; - - ListHead->Blink->Flink = ListToAppend; - ListHead->Blink = ListToAppend->Blink; - ListToAppend->Blink->Flink = ListHead; - ListToAppend->Blink = ListEnd; -} - -FORCEINLINE -PSINGLE_LIST_ENTRY -PopEntryList( - IN OUT PSINGLE_LIST_ENTRY ListHead) -{ - PSINGLE_LIST_ENTRY FirstEntry; - FirstEntry = ListHead->Next; - if (FirstEntry != NULL) { - ListHead->Next = FirstEntry->Next; - } - return FirstEntry; -} - -FORCEINLINE -VOID -PushEntryList( - IN OUT PSINGLE_LIST_ENTRY ListHead, - IN OUT PSINGLE_LIST_ENTRY Entry) -{ - Entry->Next = ListHead->Next; - ListHead->Next = Entry; -} - -#endif /* !defined(MIDL_PASS) && !defined(SORTPP_PASS) */ - -NTSYSAPI -VOID -NTAPI -RtlAssert( - IN PVOID FailedAssertion, - IN PVOID FileName, - IN ULONG LineNumber, - IN PSTR Message); - -/* VOID - * RtlCopyMemory( - * IN VOID UNALIGNED *Destination, - * IN CONST VOID UNALIGNED *Source, - * IN SIZE_T Length) - */ -#define RtlCopyMemory(Destination, Source, Length) \ - memcpy(Destination, Source, Length) - -#define RtlCopyBytes RtlCopyMemory - -#if defined(_M_AMD64) -NTSYSAPI -VOID -NTAPI -RtlCopyMemoryNonTemporal( - VOID UNALIGNED *Destination, - CONST VOID UNALIGNED *Source, - SIZE_T Length); -#else -#define RtlCopyMemoryNonTemporal RtlCopyMemory -#endif - -/* BOOLEAN - * RtlEqualLuid( - * IN PLUID Luid1, - * IN PLUID Luid2) - */ -#define RtlEqualLuid(Luid1, Luid2) \ - (((Luid1)->LowPart == (Luid2)->LowPart) && ((Luid1)->HighPart == (Luid2)->HighPart)) - -/* ULONG - * RtlEqualMemory( - * IN VOID UNALIGNED *Destination, - * IN CONST VOID UNALIGNED *Source, - * IN SIZE_T Length) - */ -#define RtlEqualMemory(Destination, Source, Length) \ - (!memcmp(Destination, Source, Length)) - -/* VOID - * RtlFillMemory( - * IN VOID UNALIGNED *Destination, - * IN SIZE_T Length, - * IN UCHAR Fill) - */ -#define RtlFillMemory(Destination, Length, Fill) \ - memset(Destination, Fill, Length) - -#define RtlFillBytes RtlFillMemory - -NTSYSAPI -VOID -NTAPI -RtlFreeUnicodeString( - IN OUT PUNICODE_STRING UnicodeString); - -NTSYSAPI -NTSTATUS -NTAPI -RtlGUIDFromString( - IN PUNICODE_STRING GuidString, - OUT GUID *Guid); - -NTSYSAPI -VOID -NTAPI -RtlInitUnicodeString( - IN OUT PUNICODE_STRING DestinationString, - IN PCWSTR SourceString OPTIONAL); - -/* VOID - * RtlMoveMemory( - * IN VOID UNALIGNED *Destination, - * IN CONST VOID UNALIGNED *Source, - * IN SIZE_T Length) - */ -#define RtlMoveMemory(Destination, Source, Length) \ - memmove(Destination, Source, Length) - -NTSYSAPI -NTSTATUS -NTAPI -RtlStringFromGUID( - IN REFGUID Guid, - OUT PUNICODE_STRING GuidString); - -/* VOID - * RtlZeroMemory( - * IN VOID UNALIGNED *Destination, - * IN SIZE_T Length) - */ -#define RtlZeroMemory(Destination, Length) \ - memset(Destination, 0, Length) - -#define RtlZeroBytes RtlZeroMemory - -$endif -#if (NTDDI_VERSION >= NTDDI_WIN2K) - -$if (_NTIFS_) -NTSYSAPI -PVOID -NTAPI -RtlAllocateHeap( - IN HANDLE HeapHandle, - IN ULONG Flags OPTIONAL, - IN SIZE_T Size); - -NTSYSAPI -BOOLEAN -NTAPI -RtlFreeHeap( - IN PVOID HeapHandle, - IN ULONG Flags OPTIONAL, - IN PVOID BaseAddress); - -$endif - -$if (_NTDDK_) - -#ifndef RTL_USE_AVL_TABLES - -NTSYSAPI -VOID -NTAPI -RtlInitializeGenericTable( - OUT PRTL_GENERIC_TABLE Table, - IN PRTL_GENERIC_COMPARE_ROUTINE CompareRoutine, - IN PRTL_GENERIC_ALLOCATE_ROUTINE AllocateRoutine, - IN PRTL_GENERIC_FREE_ROUTINE FreeRoutine, - IN PVOID TableContext OPTIONAL); - -NTSYSAPI -PVOID -NTAPI -RtlInsertElementGenericTable( - IN PRTL_GENERIC_TABLE Table, - IN PVOID Buffer, - IN CLONG BufferSize, - OUT PBOOLEAN NewElement OPTIONAL); - -NTSYSAPI -PVOID -NTAPI -RtlInsertElementGenericTableFull( - IN PRTL_GENERIC_TABLE Table, - IN PVOID Buffer, - IN CLONG BufferSize, - OUT PBOOLEAN NewElement OPTIONAL, - IN PVOID NodeOrParent, - IN TABLE_SEARCH_RESULT SearchResult); - -NTSYSAPI -BOOLEAN -NTAPI -RtlDeleteElementGenericTable( - IN PRTL_GENERIC_TABLE Table, - IN PVOID Buffer); - -NTSYSAPI -PVOID -NTAPI -RtlLookupElementGenericTable( - IN PRTL_GENERIC_TABLE Table, - IN PVOID Buffer); - -NTSYSAPI -PVOID -NTAPI -RtlLookupElementGenericTableFull( - IN PRTL_GENERIC_TABLE Table, - IN PVOID Buffer, - OUT PVOID *NodeOrParent, - OUT TABLE_SEARCH_RESULT *SearchResult); - -NTSYSAPI -PVOID -NTAPI -RtlEnumerateGenericTable( - IN PRTL_GENERIC_TABLE Table, - IN BOOLEAN Restart); - -NTSYSAPI -PVOID -NTAPI -RtlEnumerateGenericTableWithoutSplaying( - IN PRTL_GENERIC_TABLE Table, - IN OUT PVOID *RestartKey); - -NTSYSAPI -PVOID -NTAPI -RtlGetElementGenericTable( - IN PRTL_GENERIC_TABLE Table, - IN ULONG I); - -NTSYSAPI -ULONG -NTAPI -RtlNumberGenericTableElements( - IN PRTL_GENERIC_TABLE Table); - -NTSYSAPI -BOOLEAN -NTAPI -RtlIsGenericTableEmpty( - IN PRTL_GENERIC_TABLE Table); - -#endif /* !RTL_USE_AVL_TABLES */ - -#define RTL_STACK_WALKING_MODE_FRAMES_TO_SKIP_SHIFT 8 - -NTSYSAPI -PRTL_SPLAY_LINKS -NTAPI -RtlSplay( - IN OUT PRTL_SPLAY_LINKS Links); - -NTSYSAPI -PRTL_SPLAY_LINKS -NTAPI -RtlDelete( - IN PRTL_SPLAY_LINKS Links); - -NTSYSAPI -VOID -NTAPI -RtlDeleteNoSplay( - IN PRTL_SPLAY_LINKS Links, - IN OUT PRTL_SPLAY_LINKS *Root); - -NTSYSAPI -PRTL_SPLAY_LINKS -NTAPI -RtlSubtreeSuccessor( - IN PRTL_SPLAY_LINKS Links); - -NTSYSAPI -PRTL_SPLAY_LINKS -NTAPI -RtlSubtreePredecessor( - IN PRTL_SPLAY_LINKS Links); - -NTSYSAPI -PRTL_SPLAY_LINKS -NTAPI -RtlRealSuccessor( - IN PRTL_SPLAY_LINKS Links); - -NTSYSAPI -PRTL_SPLAY_LINKS -NTAPI -RtlRealPredecessor( - IN PRTL_SPLAY_LINKS Links); - -NTSYSAPI -BOOLEAN -NTAPI -RtlPrefixUnicodeString( - IN PCUNICODE_STRING String1, - IN PCUNICODE_STRING String2, - IN BOOLEAN CaseInSensitive); - -NTSYSAPI -VOID -NTAPI -RtlUpperString( - IN OUT PSTRING DestinationString, - IN const PSTRING SourceString); - -NTSYSAPI -NTSTATUS -NTAPI -RtlUpcaseUnicodeString( - IN OUT PUNICODE_STRING DestinationString, - IN PCUNICODE_STRING SourceString, - IN BOOLEAN AllocateDestinationString); - -NTSYSAPI -VOID -NTAPI -RtlMapGenericMask( - IN OUT PACCESS_MASK AccessMask, - IN PGENERIC_MAPPING GenericMapping); - -NTSYSAPI -NTSTATUS -NTAPI -RtlVolumeDeviceToDosName( - IN PVOID VolumeDeviceObject, - OUT PUNICODE_STRING DosName); - -NTSYSAPI -NTSTATUS -NTAPI -RtlGetVersion( - IN OUT PRTL_OSVERSIONINFOW lpVersionInformation); - -NTSYSAPI -NTSTATUS -NTAPI -RtlVerifyVersionInfo( - IN PRTL_OSVERSIONINFOEXW VersionInfo, - IN ULONG TypeMask, - IN ULONGLONG ConditionMask); - -NTSYSAPI -LONG -NTAPI -RtlCompareString( - IN const PSTRING String1, - IN const PSTRING String2, - IN BOOLEAN CaseInSensitive); - -NTSYSAPI -VOID -NTAPI -RtlCopyString( - OUT PSTRING DestinationString, - IN const PSTRING SourceString OPTIONAL); - -NTSYSAPI -BOOLEAN -NTAPI -RtlEqualString( - IN const PSTRING String1, - IN const PSTRING String2, - IN BOOLEAN CaseInSensitive); - -NTSYSAPI -NTSTATUS -NTAPI -RtlCharToInteger( - IN PCSZ String, - IN ULONG Base OPTIONAL, - OUT PULONG Value); - -NTSYSAPI -CHAR -NTAPI -RtlUpperChar( - IN CHAR Character); - -NTSYSAPI -ULONG -NTAPI -RtlWalkFrameChain( - OUT PVOID *Callers, - IN ULONG Count, - IN ULONG Flags); - -$endif - -$if (_WDMDDK_) -NTSYSAPI -BOOLEAN -NTAPI -RtlAreBitsClear( - IN PRTL_BITMAP BitMapHeader, - IN ULONG StartingIndex, - IN ULONG Length); - -NTSYSAPI -BOOLEAN -NTAPI -RtlAreBitsSet( - IN PRTL_BITMAP BitMapHeader, - IN ULONG StartingIndex, - IN ULONG Length); - -NTSYSAPI -NTSTATUS -NTAPI -RtlAnsiStringToUnicodeString( - IN OUT PUNICODE_STRING DestinationString, - IN PANSI_STRING SourceString, - IN BOOLEAN AllocateDestinationString); - -NTSYSAPI -ULONG -NTAPI -RtlxAnsiStringToUnicodeSize( - IN PCANSI_STRING AnsiString); - -#define RtlAnsiStringToUnicodeSize(String) ( \ - NLS_MB_CODE_PAGE_TAG ? \ - RtlxAnsiStringToUnicodeSize(String) : \ - ((String)->Length + sizeof(ANSI_NULL)) * sizeof(WCHAR) \ -) - -NTSYSAPI -NTSTATUS -NTAPI -RtlAppendUnicodeStringToString( - IN OUT PUNICODE_STRING Destination, - IN PCUNICODE_STRING Source); - -NTSYSAPI -NTSTATUS -NTAPI -RtlAppendUnicodeToString( - IN OUT PUNICODE_STRING Destination, - IN PCWSTR Source); - -NTSYSAPI -NTSTATUS -NTAPI -RtlCheckRegistryKey( - IN ULONG RelativeTo, - IN PWSTR Path); - -NTSYSAPI -VOID -NTAPI -RtlClearAllBits( - IN PRTL_BITMAP BitMapHeader); - -NTSYSAPI -VOID -NTAPI -RtlClearBits( - IN PRTL_BITMAP BitMapHeader, - IN ULONG StartingIndex, - IN ULONG NumberToClear); - -NTSYSAPI -SIZE_T -NTAPI -RtlCompareMemory( - IN CONST VOID *Source1, - IN CONST VOID *Source2, - IN SIZE_T Length); - -NTSYSAPI -LONG -NTAPI -RtlCompareUnicodeString( - IN PCUNICODE_STRING String1, - IN PCUNICODE_STRING String2, - IN BOOLEAN CaseInSensitive); - -NTSYSAPI -LONG -NTAPI -RtlCompareUnicodeStrings( - IN PCWCH String1, - IN SIZE_T String1Length, - IN PCWCH String2, - IN SIZE_T String2Length, - IN BOOLEAN CaseInSensitive); - -NTSYSAPI -VOID -NTAPI -RtlCopyUnicodeString( - IN OUT PUNICODE_STRING DestinationString, - IN PCUNICODE_STRING SourceString OPTIONAL); - -NTSYSAPI -NTSTATUS -NTAPI -RtlCreateRegistryKey( - IN ULONG RelativeTo, - IN PWSTR Path); - -NTSYSAPI -NTSTATUS -NTAPI -RtlCreateSecurityDescriptor( - IN OUT PSECURITY_DESCRIPTOR SecurityDescriptor, - IN ULONG Revision); - -NTSYSAPI -NTSTATUS -NTAPI -RtlDeleteRegistryValue( - IN ULONG RelativeTo, - IN PCWSTR Path, - IN PCWSTR ValueName); - -NTSYSAPI -BOOLEAN -NTAPI -RtlEqualUnicodeString( - IN CONST UNICODE_STRING *String1, - IN CONST UNICODE_STRING *String2, - IN BOOLEAN CaseInSensitive); - -#if !defined(_AMD64_) && !defined(_IA64_) -NTSYSAPI -LARGE_INTEGER -NTAPI -RtlExtendedIntegerMultiply( - IN LARGE_INTEGER Multiplicand, - IN LONG Multiplier); - -NTSYSAPI -LARGE_INTEGER -NTAPI -RtlExtendedLargeIntegerDivide( - IN LARGE_INTEGER Dividend, - IN ULONG Divisor, - OUT PULONG Remainder OPTIONAL); -#endif - -#if defined(_X86_) || defined(_IA64_) -NTSYSAPI -LARGE_INTEGER -NTAPI -RtlExtendedMagicDivide( - IN LARGE_INTEGER Dividend, - IN LARGE_INTEGER MagicDivisor, - IN CCHAR ShiftCount); -#endif - -NTSYSAPI -VOID -NTAPI -RtlFreeAnsiString( - IN PANSI_STRING AnsiString); - -NTSYSAPI -ULONG -NTAPI -RtlFindClearBits( - IN PRTL_BITMAP BitMapHeader, - IN ULONG NumberToFind, - IN ULONG HintIndex); - -NTSYSAPI -ULONG -NTAPI -RtlFindClearBitsAndSet( - IN PRTL_BITMAP BitMapHeader, - IN ULONG NumberToFind, - IN ULONG HintIndex); - -NTSYSAPI -ULONG -NTAPI -RtlFindFirstRunClear( - IN PRTL_BITMAP BitMapHeader, - OUT PULONG StartingIndex); - -NTSYSAPI -ULONG -NTAPI -RtlFindClearRuns( - IN PRTL_BITMAP BitMapHeader, - OUT PRTL_BITMAP_RUN RunArray, - IN ULONG SizeOfRunArray, - IN BOOLEAN LocateLongestRuns); - -NTSYSAPI -ULONG -NTAPI -RtlFindLastBackwardRunClear( - IN PRTL_BITMAP BitMapHeader, - IN ULONG FromIndex, - OUT PULONG StartingRunIndex); - -NTSYSAPI -CCHAR -NTAPI -RtlFindLeastSignificantBit( - IN ULONGLONG Set); - -NTSYSAPI -ULONG -NTAPI -RtlFindLongestRunClear( - IN PRTL_BITMAP BitMapHeader, - OUT PULONG StartingIndex); - -NTSYSAPI -CCHAR -NTAPI -RtlFindMostSignificantBit( - IN ULONGLONG Set); - -NTSYSAPI -ULONG -NTAPI -RtlFindNextForwardRunClear( - IN PRTL_BITMAP BitMapHeader, - IN ULONG FromIndex, - OUT PULONG StartingRunIndex); - -NTSYSAPI -ULONG -NTAPI -RtlFindSetBits( - IN PRTL_BITMAP BitMapHeader, - IN ULONG NumberToFind, - IN ULONG HintIndex); - -NTSYSAPI -ULONG -NTAPI -RtlFindSetBitsAndClear( - IN PRTL_BITMAP BitMapHeader, - IN ULONG NumberToFind, - IN ULONG HintIndex); - -NTSYSAPI -VOID -NTAPI -RtlInitAnsiString( - IN OUT PANSI_STRING DestinationString, - IN PCSZ SourceString); - -NTSYSAPI -VOID -NTAPI -RtlInitializeBitMap( - IN PRTL_BITMAP BitMapHeader, - IN PULONG BitMapBuffer, - IN ULONG SizeOfBitMap); - -NTSYSAPI -VOID -NTAPI -RtlInitString( - IN OUT PSTRING DestinationString, - IN PCSZ SourceString); - -NTSYSAPI -NTSTATUS -NTAPI -RtlIntegerToUnicodeString( - IN ULONG Value, - IN ULONG Base OPTIONAL, - IN OUT PUNICODE_STRING String); - -NTSYSAPI -NTSTATUS -NTAPI -RtlInt64ToUnicodeString( - IN ULONGLONG Value, - IN ULONG Base OPTIONAL, - IN OUT PUNICODE_STRING String); - -#ifdef _WIN64 -#define RtlIntPtrToUnicodeString(Value, Base, String) \ - RtlInt64ToUnicodeString(Value, Base, String) -#else -#define RtlIntPtrToUnicodeString(Value, Base, String) \ - RtlIntegerToUnicodeString(Value, Base, String) -#endif - -/* BOOLEAN - * RtlIsZeroLuid( - * IN PLUID L1); - */ -#define RtlIsZeroLuid(_L1) \ - ((BOOLEAN) ((!(_L1)->LowPart) && (!(_L1)->HighPart))) - -NTSYSAPI -ULONG -NTAPI -RtlLengthSecurityDescriptor( - IN PSECURITY_DESCRIPTOR SecurityDescriptor); - -NTSYSAPI -ULONG -NTAPI -RtlNumberOfClearBits( - IN PRTL_BITMAP BitMapHeader); - -NTSYSAPI -ULONG -NTAPI -RtlNumberOfSetBits( - IN PRTL_BITMAP BitMapHeader); - -NTSYSAPI -NTSTATUS -NTAPI -RtlQueryRegistryValues( - IN ULONG RelativeTo, - IN PCWSTR Path, - IN OUT PRTL_QUERY_REGISTRY_TABLE QueryTable, - IN PVOID Context OPTIONAL, - IN PVOID Environment OPTIONAL); - -#define SHORT_SIZE (sizeof(USHORT)) -#define SHORT_MASK (SHORT_SIZE - 1) -#define LONG_SIZE (sizeof(LONG)) -#define LONGLONG_SIZE (sizeof(LONGLONG)) -#define LONG_MASK (LONG_SIZE - 1) -#define LONGLONG_MASK (LONGLONG_SIZE - 1) -#define LOWBYTE_MASK 0x00FF - -#define FIRSTBYTE(VALUE) ((VALUE) & LOWBYTE_MASK) -#define SECONDBYTE(VALUE) (((VALUE) >> 8) & LOWBYTE_MASK) -#define THIRDBYTE(VALUE) (((VALUE) >> 16) & LOWBYTE_MASK) -#define FOURTHBYTE(VALUE) (((VALUE) >> 24) & LOWBYTE_MASK) - -NTSYSAPI -VOID -NTAPI -RtlSetAllBits( - IN PRTL_BITMAP BitMapHeader); - -NTSYSAPI -VOID -NTAPI -RtlSetBits( - IN PRTL_BITMAP BitMapHeader, - IN ULONG StartingIndex, - IN ULONG NumberToSet); - -NTSYSAPI -NTSTATUS -NTAPI -RtlSetDaclSecurityDescriptor( - IN OUT PSECURITY_DESCRIPTOR SecurityDescriptor, - IN BOOLEAN DaclPresent, - IN PACL Dacl OPTIONAL, - IN BOOLEAN DaclDefaulted OPTIONAL); - -#if defined(_AMD64_) - -/* VOID - * RtlStoreUlong( - * IN PULONG Address, - * IN ULONG Value); - */ -#define RtlStoreUlong(Address,Value) \ - *(ULONG UNALIGNED *)(Address) = (Value) - -/* VOID - * RtlStoreUlonglong( - * IN OUT PULONGLONG Address, - * ULONGLONG Value); - */ -#define RtlStoreUlonglong(Address,Value) \ - *(ULONGLONG UNALIGNED *)(Address) = (Value) - -/* VOID - * RtlStoreUshort( - * IN PUSHORT Address, - * IN USHORT Value); - */ -#define RtlStoreUshort(Address,Value) \ - *(USHORT UNALIGNED *)(Address) = (Value) - -/* VOID - * RtlRetrieveUshort( - * PUSHORT DestinationAddress, - * PUSHORT SourceAddress); - */ -#define RtlRetrieveUshort(DestAddress,SrcAddress) \ - *(USHORT UNALIGNED *)(DestAddress) = *(USHORT)(SrcAddress) - -/* VOID - * RtlRetrieveUlong( - * PULONG DestinationAddress, - * PULONG SourceAddress); - */ -#define RtlRetrieveUlong(DestAddress,SrcAddress) \ - *(ULONG UNALIGNED *)(DestAddress) = *(PULONG)(SrcAddress) - -#else - -#define RtlStoreUlong(Address,Value) \ - if ((ULONG_PTR)(Address) & LONG_MASK) { \ - ((PUCHAR) (Address))[LONG_LEAST_SIGNIFICANT_BIT] = (UCHAR)(FIRSTBYTE(Value)); \ - ((PUCHAR) (Address))[LONG_3RD_MOST_SIGNIFICANT_BIT] = (UCHAR)(SECONDBYTE(Value)); \ - ((PUCHAR) (Address))[LONG_2ND_MOST_SIGNIFICANT_BIT] = (UCHAR)(THIRDBYTE(Value)); \ - ((PUCHAR) (Address))[LONG_MOST_SIGNIFICANT_BIT] = (UCHAR)(FOURTHBYTE(Value)); \ - } \ - else { \ - *((PULONG)(Address)) = (ULONG) (Value); \ - } - -#define RtlStoreUlonglong(Address,Value) \ - if ((ULONG_PTR)(Address) & LONGLONG_MASK) { \ - RtlStoreUlong((ULONG_PTR)(Address), \ - (ULONGLONG)(Value) & 0xFFFFFFFF); \ - RtlStoreUlong((ULONG_PTR)(Address)+sizeof(ULONG), \ - (ULONGLONG)(Value) >> 32); \ - } else { \ - *((PULONGLONG)(Address)) = (ULONGLONG)(Value); \ - } - -#define RtlStoreUshort(Address,Value) \ - if ((ULONG_PTR)(Address) & SHORT_MASK) { \ - ((PUCHAR) (Address))[SHORT_LEAST_SIGNIFICANT_BIT] = (UCHAR)(FIRSTBYTE(Value)); \ - ((PUCHAR) (Address))[SHORT_MOST_SIGNIFICANT_BIT ] = (UCHAR)(SECONDBYTE(Value)); \ - } \ - else { \ - *((PUSHORT) (Address)) = (USHORT)Value; \ - } - -#define RtlRetrieveUshort(DestAddress,SrcAddress) \ - if ((ULONG_PTR)(SrcAddress) & LONG_MASK) \ - { \ - ((PUCHAR)(DestAddress))[0]=((PUCHAR)(SrcAddress))[0]; \ - ((PUCHAR)(DestAddress))[1]=((PUCHAR)(SrcAddress))[1]; \ - } \ - else \ - { \ - *((PUSHORT)(DestAddress))=*((PUSHORT)(SrcAddress)); \ - } - -#define RtlRetrieveUlong(DestAddress,SrcAddress) \ - if ((ULONG_PTR)(SrcAddress) & LONG_MASK) \ - { \ - ((PUCHAR)(DestAddress))[0]=((PUCHAR)(SrcAddress))[0]; \ - ((PUCHAR)(DestAddress))[1]=((PUCHAR)(SrcAddress))[1]; \ - ((PUCHAR)(DestAddress))[2]=((PUCHAR)(SrcAddress))[2]; \ - ((PUCHAR)(DestAddress))[3]=((PUCHAR)(SrcAddress))[3]; \ - } \ - else \ - { \ - *((PULONG)(DestAddress))=*((PULONG)(SrcAddress)); \ - } - -#endif /* defined(_AMD64_) */ - -#ifdef _WIN64 -/* VOID - * RtlStoreUlongPtr( - * IN OUT PULONG_PTR Address, - * IN ULONG_PTR Value); - */ -#define RtlStoreUlongPtr(Address,Value) RtlStoreUlonglong(Address,Value) -#else -#define RtlStoreUlongPtr(Address,Value) RtlStoreUlong(Address,Value) -#endif /* _WIN64 */ - - -NTSYSAPI -BOOLEAN -NTAPI -RtlTimeFieldsToTime( - IN PTIME_FIELDS TimeFields, - IN PLARGE_INTEGER Time); - -NTSYSAPI -VOID -NTAPI -RtlTimeToTimeFields( - IN PLARGE_INTEGER Time, - IN PTIME_FIELDS TimeFields); - -NTSYSAPI -ULONG -FASTCALL -RtlUlongByteSwap( - IN ULONG Source); - -NTSYSAPI -ULONGLONG -FASTCALL -RtlUlonglongByteSwap( - IN ULONGLONG Source); - -NTSYSAPI -NTSTATUS -NTAPI -RtlUnicodeStringToAnsiString( - IN OUT PANSI_STRING DestinationString, - IN PCUNICODE_STRING SourceString, - IN BOOLEAN AllocateDestinationString); - -NTSYSAPI -ULONG -NTAPI -RtlxUnicodeStringToAnsiSize( - IN PCUNICODE_STRING UnicodeString); - -#define RtlUnicodeStringToAnsiSize(String) ( \ - NLS_MB_CODE_PAGE_TAG ? \ - RtlxUnicodeStringToAnsiSize(String) : \ - ((String)->Length + sizeof(UNICODE_NULL)) / sizeof(WCHAR) \ -) - -NTSYSAPI -NTSTATUS -NTAPI -RtlUnicodeStringToInteger( - IN PCUNICODE_STRING String, - IN ULONG Base OPTIONAL, - OUT PULONG Value); - -NTSYSAPI -WCHAR -NTAPI -RtlUpcaseUnicodeChar( - IN WCHAR SourceCharacter); - -NTSYSAPI -USHORT -FASTCALL -RtlUshortByteSwap( - IN USHORT Source); - -NTSYSAPI -BOOLEAN -NTAPI -RtlValidRelativeSecurityDescriptor( - IN PSECURITY_DESCRIPTOR SecurityDescriptorInput, - IN ULONG SecurityDescriptorLength, - IN SECURITY_INFORMATION RequiredInformation); - -NTSYSAPI -BOOLEAN -NTAPI -RtlValidSecurityDescriptor( - IN PSECURITY_DESCRIPTOR SecurityDescriptor); - -NTSYSAPI -NTSTATUS -NTAPI -RtlWriteRegistryValue( - IN ULONG RelativeTo, - IN PCWSTR Path, - IN PCWSTR ValueName, - IN ULONG ValueType, - IN PVOID ValueData, - IN ULONG ValueLength); - -$endif - -#endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */ - -$if (_WDMDDK_) - -#if (NTDDI_VERSION >= NTDDI_WIN2KSP3) -NTSYSAPI -VOID -FASTCALL -RtlPrefetchMemoryNonTemporal( - IN PVOID Source, - IN SIZE_T Length); -#endif - -$endif - -#if (NTDDI_VERSION >= NTDDI_WINXP) - -$if (_NTDDK_) - -NTSYSAPI -VOID -NTAPI -RtlInitializeGenericTableAvl( - OUT PRTL_AVL_TABLE Table, - IN PRTL_AVL_COMPARE_ROUTINE CompareRoutine, - IN PRTL_AVL_ALLOCATE_ROUTINE AllocateRoutine, - IN PRTL_AVL_FREE_ROUTINE FreeRoutine, - IN PVOID TableContext OPTIONAL); - -NTSYSAPI -PVOID -NTAPI -RtlInsertElementGenericTableAvl( - IN PRTL_AVL_TABLE Table, - IN PVOID Buffer, - IN CLONG BufferSize, - OUT PBOOLEAN NewElement OPTIONAL); - -NTSYSAPI -PVOID -NTAPI -RtlInsertElementGenericTableFullAvl( - IN PRTL_AVL_TABLE Table, - IN PVOID Buffer, - IN CLONG BufferSize, - OUT PBOOLEAN NewElement OPTIONAL, - IN PVOID NodeOrParent, - IN TABLE_SEARCH_RESULT SearchResult); - -NTSYSAPI -BOOLEAN -NTAPI -RtlDeleteElementGenericTableAvl( - IN PRTL_AVL_TABLE Table, - IN PVOID Buffer); - -NTSYSAPI -PVOID -NTAPI -RtlLookupElementGenericTableAvl( - IN PRTL_AVL_TABLE Table, - IN PVOID Buffer); - -NTSYSAPI -PVOID -NTAPI -RtlLookupElementGenericTableFullAvl( - IN PRTL_AVL_TABLE Table, - IN PVOID Buffer, - OUT PVOID *NodeOrParent, - OUT TABLE_SEARCH_RESULT *SearchResult); - -NTSYSAPI -PVOID -NTAPI -RtlEnumerateGenericTableAvl( - IN PRTL_AVL_TABLE Table, - IN BOOLEAN Restart); - -NTSYSAPI -PVOID -NTAPI -RtlEnumerateGenericTableWithoutSplayingAvl( - IN PRTL_AVL_TABLE Table, - IN OUT PVOID *RestartKey); - -NTSYSAPI -PVOID -NTAPI -RtlLookupFirstMatchingElementGenericTableAvl( - IN PRTL_AVL_TABLE Table, - IN PVOID Buffer, - OUT PVOID *RestartKey); - -NTSYSAPI -PVOID -NTAPI -RtlEnumerateGenericTableLikeADirectory( - IN PRTL_AVL_TABLE Table, - IN PRTL_AVL_MATCH_FUNCTION MatchFunction OPTIONAL, - IN PVOID MatchData OPTIONAL, - IN ULONG NextFlag, - IN OUT PVOID *RestartKey, - IN OUT PULONG DeleteCount, - IN PVOID Buffer); - -NTSYSAPI -PVOID -NTAPI -RtlGetElementGenericTableAvl( - IN PRTL_AVL_TABLE Table, - IN ULONG I); - -NTSYSAPI -ULONG -NTAPI -RtlNumberGenericTableElementsAvl( - IN PRTL_AVL_TABLE Table); - -NTSYSAPI -BOOLEAN -NTAPI -RtlIsGenericTableEmptyAvl( - IN PRTL_AVL_TABLE Table); - -$endif - -$if (_WDMDDK_) - -NTSYSAPI -VOID -NTAPI -RtlClearBit( - PRTL_BITMAP BitMapHeader, - ULONG BitNumber); - -NTSYSAPI -WCHAR -NTAPI -RtlDowncaseUnicodeChar( - IN WCHAR SourceCharacter); - -NTSYSAPI -VOID -NTAPI -RtlSetBit( - PRTL_BITMAP BitMapHeader, - ULONG BitNumber); - -NTSYSAPI -BOOLEAN -NTAPI -RtlTestBit( - IN PRTL_BITMAP BitMapHeader, - IN ULONG BitNumber); - -NTSYSAPI -NTSTATUS -NTAPI -RtlHashUnicodeString( - IN CONST UNICODE_STRING *String, - IN BOOLEAN CaseInSensitive, - IN ULONG HashAlgorithm, - OUT PULONG HashValue); - -$endif - -#endif /* (NTDDI_VERSION >= NTDDI_WINXP) */ - -#if (NTDDI_VERSION >= NTDDI_VISTA) - -$if (_NTDDK_) - -NTSYSAPI -VOID -NTAPI -RtlRunOnceInitialize( - OUT PRTL_RUN_ONCE RunOnce); - -NTSYSAPI -NTSTATUS -NTAPI -RtlRunOnceExecuteOnce( - IN OUT PRTL_RUN_ONCE RunOnce, - IN PRTL_RUN_ONCE_INIT_FN InitFn, - IN OUT PVOID Parameter OPTIONAL, - OUT PVOID *Context OPTIONAL); - -NTSYSAPI -NTSTATUS -NTAPI -RtlRunOnceBeginInitialize( - IN OUT PRTL_RUN_ONCE RunOnce, - IN ULONG Flags, - OUT PVOID *Context OPTIONAL); - -NTSYSAPI -NTSTATUS -NTAPI -RtlRunOnceComplete( - IN OUT PRTL_RUN_ONCE RunOnce, - IN ULONG Flags, - IN PVOID Context OPTIONAL); - -NTSYSAPI -BOOLEAN -NTAPI -RtlGetProductInfo( - IN ULONG OSMajorVersion, - IN ULONG OSMinorVersion, - IN ULONG SpMajorVersion, - IN ULONG SpMinorVersion, - OUT PULONG ReturnedProductType); - -$endif - -$if (_WDMDDK_) - -NTSYSAPI -ULONG -NTAPI -RtlNumberOfSetBitsUlongPtr( - IN ULONG_PTR Target); - -NTSYSAPI -ULONGLONG -NTAPI -RtlIoDecodeMemIoResource( - IN struct _IO_RESOURCE_DESCRIPTOR *Descriptor, - OUT PULONGLONG Alignment OPTIONAL, - OUT PULONGLONG MinimumAddress OPTIONAL, - OUT PULONGLONG MaximumAddress OPTIONAL); - -NTSYSAPI -NTSTATUS -NTAPI -RtlIoEncodeMemIoResource( - IN struct _IO_RESOURCE_DESCRIPTOR *Descriptor, - IN UCHAR Type, - IN ULONGLONG Length, - IN ULONGLONG Alignment, - IN ULONGLONG MinimumAddress, - IN ULONGLONG MaximumAddress); - -NTSYSAPI -ULONGLONG -NTAPI -RtlCmDecodeMemIoResource( - IN struct _CM_PARTIAL_RESOURCE_DESCRIPTOR *Descriptor, - OUT PULONGLONG Start OPTIONAL); - -NTSYSAPI -NTSTATUS -NTAPI -RtlFindClosestEncodableLength( - IN ULONGLONG SourceLength, - OUT PULONGLONG TargetLength); - -NTSYSAPI -NTSTATUS -NTAPI -RtlCmEncodeMemIoResource( - IN PCM_PARTIAL_RESOURCE_DESCRIPTOR Descriptor, - IN UCHAR Type, - IN ULONGLONG Length, - IN ULONGLONG Start); - -$endif - -#endif /* (NTDDI_VERSION >= NTDDI_VISTA) */ - -#if (NTDDI_VERSION >= NTDDI_WIN7) - -$if (_NTDDK_) - -NTSYSAPI -BOOLEAN -NTAPI -RtlCreateHashTable( - IN OUT PRTL_DYNAMIC_HASH_TABLE *HashTable OPTIONAL, - IN ULONG Shift, - IN ULONG Flags); - -NTSYSAPI -VOID -NTAPI -RtlDeleteHashTable( - IN PRTL_DYNAMIC_HASH_TABLE HashTable); - -NTSYSAPI -BOOLEAN -NTAPI -RtlInsertEntryHashTable( - IN PRTL_DYNAMIC_HASH_TABLE HashTable, - IN PRTL_DYNAMIC_HASH_TABLE_ENTRY Entry, - IN ULONG_PTR Signature, - IN OUT PRTL_DYNAMIC_HASH_TABLE_CONTEXT Context OPTIONAL); - -NTSYSAPI -BOOLEAN -NTAPI -RtlRemoveEntryHashTable( - IN PRTL_DYNAMIC_HASH_TABLE HashTable, - IN PRTL_DYNAMIC_HASH_TABLE_ENTRY Entry, - IN OUT PRTL_DYNAMIC_HASH_TABLE_CONTEXT Context OPTIONAL); - -NTSYSAPI -PRTL_DYNAMIC_HASH_TABLE_ENTRY -NTAPI -RtlLookupEntryHashTable( - IN PRTL_DYNAMIC_HASH_TABLE HashTable, - IN ULONG_PTR Signature, - OUT PRTL_DYNAMIC_HASH_TABLE_CONTEXT Context OPTIONAL); - -NTSYSAPI -PRTL_DYNAMIC_HASH_TABLE_ENTRY -NTAPI -RtlGetNextEntryHashTable( - IN PRTL_DYNAMIC_HASH_TABLE HashTable, - IN PRTL_DYNAMIC_HASH_TABLE_CONTEXT Context); - -NTSYSAPI -BOOLEAN -NTAPI -RtlInitEnumerationHashTable( - IN PRTL_DYNAMIC_HASH_TABLE HashTable, - OUT PRTL_DYNAMIC_HASH_TABLE_ENUMERATOR Enumerator); - -NTSYSAPI -PRTL_DYNAMIC_HASH_TABLE_ENTRY -NTAPI -RtlEnumerateEntryHashTable( - IN PRTL_DYNAMIC_HASH_TABLE HashTable, - IN OUT PRTL_DYNAMIC_HASH_TABLE_ENUMERATOR Enumerator); - -NTSYSAPI -VOID -NTAPI -RtlEndEnumerationHashTable( - IN PRTL_DYNAMIC_HASH_TABLE HashTable, - IN OUT PRTL_DYNAMIC_HASH_TABLE_ENUMERATOR Enumerator); - -NTSYSAPI -BOOLEAN -NTAPI -RtlInitWeakEnumerationHashTable( - IN PRTL_DYNAMIC_HASH_TABLE HashTable, - OUT PRTL_DYNAMIC_HASH_TABLE_ENUMERATOR Enumerator); - -NTSYSAPI -PRTL_DYNAMIC_HASH_TABLE_ENTRY -NTAPI -RtlWeaklyEnumerateEntryHashTable( - IN PRTL_DYNAMIC_HASH_TABLE HashTable, - IN OUT PRTL_DYNAMIC_HASH_TABLE_ENUMERATOR Enumerator); - -NTSYSAPI -VOID -NTAPI -RtlEndWeakEnumerationHashTable( - IN PRTL_DYNAMIC_HASH_TABLE HashTable, - IN OUT PRTL_DYNAMIC_HASH_TABLE_ENUMERATOR Enumerator); - -NTSYSAPI -BOOLEAN -NTAPI -RtlExpandHashTable( - IN PRTL_DYNAMIC_HASH_TABLE HashTable); - -NTSYSAPI -BOOLEAN -NTAPI -RtlContractHashTable( - IN PRTL_DYNAMIC_HASH_TABLE HashTable); - -$endif - -$if (_WDMDDK_) - -NTSYSAPI -NTSTATUS -NTAPI -RtlUnicodeToUTF8N( - OUT PCHAR UTF8StringDestination, - IN ULONG UTF8StringMaxByteCount, - OUT PULONG UTF8StringActualByteCount, - IN PCWCH UnicodeStringSource, - IN ULONG UnicodeStringByteCount); - -NTSYSAPI -NTSTATUS -NTAPI -RtlUTF8ToUnicodeN( - OUT PWSTR UnicodeStringDestination, - IN ULONG UnicodeStringMaxByteCount, - OUT PULONG UnicodeStringActualByteCount, - IN PCCH UTF8StringSource, - IN ULONG UTF8StringByteCount); - -NTSYSAPI -ULONG64 -NTAPI -RtlGetEnabledExtendedFeatures( - IN ULONG64 FeatureMask); - -$endif - -#endif /* (NTDDI_VERSION >= NTDDI_WIN7) */ - -$if (_WDMDDK_) - -#if !defined(MIDL_PASS) -/* inline funftions */ -//DECLSPEC_DEPRECATED_DDK_WINXP -static __inline -LARGE_INTEGER -NTAPI_INLINE -RtlConvertLongToLargeInteger( - IN LONG SignedInteger) -{ - LARGE_INTEGER ret; - ret.QuadPart = SignedInteger; - return ret; -} - -//DECLSPEC_DEPRECATED_DDK_WINXP -static __inline -LARGE_INTEGER -NTAPI_INLINE -RtlConvertUlongToLargeInteger( - IN ULONG UnsignedInteger) -{ - LARGE_INTEGER ret; - ret.QuadPart = UnsignedInteger; - return ret; -} - -//DECLSPEC_DEPRECATED_DDK_WINXP -static __inline -LARGE_INTEGER -NTAPI_INLINE -RtlLargeIntegerShiftLeft( - IN LARGE_INTEGER LargeInteger, - IN CCHAR ShiftCount) -{ - LARGE_INTEGER Result; - - Result.QuadPart = LargeInteger.QuadPart << ShiftCount; - return Result; -} - -//DECLSPEC_DEPRECATED_DDK_WINXP -static __inline -LARGE_INTEGER -NTAPI_INLINE -RtlLargeIntegerShiftRight( - IN LARGE_INTEGER LargeInteger, - IN CCHAR ShiftCount) -{ - LARGE_INTEGER Result; - - Result.QuadPart = (ULONG64)LargeInteger.QuadPart >> ShiftCount; - return Result; -} - -//DECLSPEC_DEPRECATED_DDK -static __inline -ULONG -NTAPI_INLINE -RtlEnlargedUnsignedDivide( - IN ULARGE_INTEGER Dividend, - IN ULONG Divisor, - IN OUT PULONG Remainder) -{ - if (Remainder) - *Remainder = (ULONG)(Dividend.QuadPart % Divisor); - return (ULONG)(Dividend.QuadPart / Divisor); -} - -//DECLSPEC_DEPRECATED_DDK -static __inline -LARGE_INTEGER -NTAPI_INLINE -RtlLargeIntegerNegate( - IN LARGE_INTEGER Subtrahend) -{ - LARGE_INTEGER Difference; - - Difference.QuadPart = -Subtrahend.QuadPart; - return Difference; -} - -//DECLSPEC_DEPRECATED_DDK -static __inline -LARGE_INTEGER -NTAPI_INLINE -RtlLargeIntegerSubtract( - IN LARGE_INTEGER Minuend, - IN LARGE_INTEGER Subtrahend) -{ - LARGE_INTEGER Difference; - - Difference.QuadPart = Minuend.QuadPart - Subtrahend.QuadPart; - return Difference; -} - -//DECLSPEC_DEPRECATED_DDK -static __inline -LARGE_INTEGER -NTAPI_INLINE -RtlEnlargedUnsignedMultiply( - IN ULONG Multiplicand, - IN ULONG Multiplier) -{ - LARGE_INTEGER ret; - ret.QuadPart = (ULONGLONG)Multiplicand * (ULONGLONG)Multiplier; - return ret; -} - -//DECLSPEC_DEPRECATED_DDK -static __inline -LARGE_INTEGER -NTAPI_INLINE -RtlEnlargedIntegerMultiply( - IN LONG Multiplicand, - IN LONG Multiplier) -{ - LARGE_INTEGER ret; - ret.QuadPart = (LONGLONG)Multiplicand * (ULONGLONG)Multiplier; - return ret; -} - -FORCEINLINE -VOID -RtlInitEmptyAnsiString( - OUT PANSI_STRING AnsiString, - IN PCHAR Buffer, - IN USHORT BufferSize) -{ - AnsiString->Length = 0; - AnsiString->MaximumLength = BufferSize; - AnsiString->Buffer = Buffer; -} - -FORCEINLINE -VOID -RtlInitEmptyUnicodeString( - OUT PUNICODE_STRING UnicodeString, - IN PWSTR Buffer, - IN USHORT BufferSize) -{ - UnicodeString->Length = 0; - UnicodeString->MaximumLength = BufferSize; - UnicodeString->Buffer = Buffer; -} -$endif - -#if defined(_AMD64_) || defined(_IA64_) - -$if (_WDMDDK_) - -static __inline -LARGE_INTEGER -NTAPI_INLINE -RtlExtendedIntegerMultiply( - IN LARGE_INTEGER Multiplicand, - IN LONG Multiplier) -{ - LARGE_INTEGER ret; - ret.QuadPart = Multiplicand.QuadPart * Multiplier; - return ret; -} - -static __inline -LARGE_INTEGER -NTAPI_INLINE -RtlExtendedLargeIntegerDivide( - IN LARGE_INTEGER Dividend, - IN ULONG Divisor, - OUT PULONG Remainder OPTIONAL) -{ - LARGE_INTEGER ret; - ret.QuadPart = (ULONG64)Dividend.QuadPart / Divisor; - if (Remainder) - *Remainder = (ULONG)(Dividend.QuadPart % Divisor); - return ret; -} - -$endif - -$if (_NTDDK_) - -//DECLSPEC_DEPRECATED_DDK_WINXP -FORCEINLINE -LARGE_INTEGER -NTAPI_INLINE -RtlLargeIntegerDivide( - IN LARGE_INTEGER Dividend, - IN LARGE_INTEGER Divisor, - OUT PLARGE_INTEGER Remainder OPTIONAL) -{ - LARGE_INTEGER ret; - ret.QuadPart = Dividend.QuadPart / Divisor.QuadPart; - if (Remainder) - Remainder->QuadPart = Dividend.QuadPart % Divisor.QuadPart; - return ret; -} - -#else - -#if (NTDDI_VERSION >= NTDDI_WIN2K) -NTSYSAPI -LARGE_INTEGER -NTAPI -RtlLargeIntegerDivide( - IN LARGE_INTEGER Dividend, - IN LARGE_INTEGER Divisor, - OUT PLARGE_INTEGER Remainder OPTIONAL); -#endif - -$endif - -#endif /* defined(_AMD64_) || defined(_IA64_) */ - -$if (_WDMDDK_) - -#if defined(_AMD64_) - -#define MultiplyHigh __mulh -#define UnsignedMultiplyHigh __umulh - -//DECLSPEC_DEPRECATED_DDK -static __inline -LARGE_INTEGER -NTAPI_INLINE -RtlExtendedMagicDivide( - IN LARGE_INTEGER Dividend, - IN LARGE_INTEGER MagicDivisor, - IN CCHAR ShiftCount) -{ - LARGE_INTEGER ret; - ULONG64 ret64; - BOOLEAN Pos; - Pos = (Dividend.QuadPart >= 0); - ret64 = UnsignedMultiplyHigh(Pos ? Dividend.QuadPart : -Dividend.QuadPart, - MagicDivisor.QuadPart); - ret64 >>= ShiftCount; - ret.QuadPart = Pos ? ret64 : -ret64; - return ret; -} -#endif - -//DECLSPEC_DEPRECATED_DDK -static __inline -LARGE_INTEGER -NTAPI_INLINE -RtlLargeIntegerAdd( - IN LARGE_INTEGER Addend1, - IN LARGE_INTEGER Addend2) -{ - LARGE_INTEGER ret; - ret.QuadPart = Addend1.QuadPart + Addend2.QuadPart; - return ret; -} - -/* VOID - * RtlLargeIntegerAnd( - * IN OUT LARGE_INTEGER Result, - * IN LARGE_INTEGER Source, - * IN LARGE_INTEGER Mask); - */ -#define RtlLargeIntegerAnd(Result, Source, Mask) \ - Result.QuadPart = Source.QuadPart & Mask.QuadPart - -//DECLSPEC_DEPRECATED_DDK -static __inline -LARGE_INTEGER -NTAPI_INLINE -RtlLargeIntegerArithmeticShift( - IN LARGE_INTEGER LargeInteger, - IN CCHAR ShiftCount) -{ - LARGE_INTEGER ret; - ret.QuadPart = LargeInteger.QuadPart >> ShiftCount; - return ret; -} - -/* BOOLEAN - * RtlLargeIntegerEqualTo( - * IN LARGE_INTEGER Operand1, - * IN LARGE_INTEGER Operand2); - */ -#define RtlLargeIntegerEqualTo(X,Y) \ - (!(((X).LowPart ^ (Y).LowPart) | ((X).HighPart ^ (Y).HighPart))) - -FORCEINLINE -PVOID -RtlSecureZeroMemory( - OUT PVOID Pointer, - IN SIZE_T Size) -{ - volatile char* vptr = (volatile char*)Pointer; -#if defined(_M_AMD64) - __stosb((PUCHAR)vptr, 0, Size); -#else - char * endptr = (char *)vptr + Size; - while (vptr < endptr) { - *vptr = 0; vptr++; - } -#endif - return Pointer; -} - -#if defined(_M_AMD64) -FORCEINLINE -BOOLEAN -RtlCheckBit( - IN PRTL_BITMAP BitMapHeader, - IN ULONG BitPosition) -{ - return BitTest64((LONG64 CONST*)BitMapHeader->Buffer, (LONG64)BitPosition); -} -#else -#define RtlCheckBit(BMH,BP) (((((PLONG)(BMH)->Buffer)[(BP)/32]) >> ((BP)%32)) & 0x1) -#endif /* defined(_M_AMD64) */ - -#define RtlLargeIntegerGreaterThan(X,Y) ( \ - (((X).HighPart == (Y).HighPart) && ((X).LowPart > (Y).LowPart)) || \ - ((X).HighPart > (Y).HighPart) \ -) - -#define RtlLargeIntegerGreaterThanOrEqualTo(X,Y) ( \ - (((X).HighPart == (Y).HighPart) && ((X).LowPart >= (Y).LowPart)) || \ - ((X).HighPart > (Y).HighPart) \ -) - -#define RtlLargeIntegerNotEqualTo(X,Y) ( \ - (((X).LowPart ^ (Y).LowPart) | ((X).HighPart ^ (Y).HighPart)) \ -) - -#define RtlLargeIntegerLessThan(X,Y) ( \ - (((X).HighPart == (Y).HighPart) && ((X).LowPart < (Y).LowPart)) || \ - ((X).HighPart < (Y).HighPart) \ -) - -#define RtlLargeIntegerLessThanOrEqualTo(X,Y) ( \ - (((X).HighPart == (Y).HighPart) && ((X).LowPart <= (Y).LowPart)) || \ - ((X).HighPart < (Y).HighPart) \ -) - -#define RtlLargeIntegerGreaterThanZero(X) ( \ - (((X).HighPart == 0) && ((X).LowPart > 0)) || \ - ((X).HighPart > 0 ) \ -) - -#define RtlLargeIntegerGreaterOrEqualToZero(X) ( (X).HighPart >= 0 ) - -#define RtlLargeIntegerEqualToZero(X) ( !((X).LowPart | (X).HighPart) ) - -#define RtlLargeIntegerNotEqualToZero(X) ( ((X).LowPart | (X).HighPart) ) - -#define RtlLargeIntegerLessThanZero(X) ( ((X).HighPart < 0) ) - -#define RtlLargeIntegerLessOrEqualToZero(X) ( ((X).HighPart < 0) || !((X).LowPart | (X).HighPart) ) - -#endif /* !defined(MIDL_PASS) */ - -/* Byte Swap Functions */ -#if (defined(_M_IX86) && (_MSC_FULL_VER > 13009037 || defined(__GNUC__))) || \ - ((defined(_M_AMD64) || defined(_M_IA64)) \ - && (_MSC_FULL_VER > 13009175 || defined(__GNUC__))) - -#define RtlUshortByteSwap(_x) _byteswap_ushort((USHORT)(_x)) -#define RtlUlongByteSwap(_x) _byteswap_ulong((_x)) -#define RtlUlonglongByteSwap(_x) _byteswap_uint64((_x)) - -#endif - -#if DBG - -#define ASSERT(exp) \ - (VOID)((!(exp)) ? \ - RtlAssert( (PVOID)#exp, (PVOID)__FILE__, __LINE__, NULL ), FALSE : TRUE) - -#define ASSERTMSG(msg, exp) \ - (VOID)((!(exp)) ? \ - RtlAssert( (PVOID)#exp, (PVOID)__FILE__, __LINE__, msg ), FALSE : TRUE) - -#define RTL_SOFT_ASSERT(exp) \ - (VOID)((!(exp)) ? \ - DbgPrint("%s(%d): Soft assertion failed\n Expression: %s\n", __FILE__, __LINE__, #exp), FALSE : TRUE) - -#define RTL_SOFT_ASSERTMSG(msg, exp) \ - (VOID)((!(exp)) ? \ - DbgPrint("%s(%d): Soft assertion failed\n Expression: %s\n Message: %s\n", __FILE__, __LINE__, #exp, (msg)), FALSE : TRUE) - -#define RTL_VERIFY(exp) ASSERT(exp) -#define RTL_VERIFYMSG(msg, exp) ASSERTMSG(msg, exp) - -#define RTL_SOFT_VERIFY(exp) RTL_SOFT_ASSERT(exp) -#define RTL_SOFT_VERIFYMSG(msg, exp) RTL_SOFT_ASSERTMSG(msg, exp) - -#if defined(_MSC_VER) - -#define NT_ASSERT(exp) \ - ((!(exp)) ? \ - (__annotation(L"Debug", L"AssertFail", L#exp), \ - DbgRaiseAssertionFailure(), FALSE) : TRUE) - -#define NT_ASSERTMSG(msg, exp) \ - ((!(exp)) ? \ - (__annotation(L"Debug", L"AssertFail", L##msg), \ - DbgRaiseAssertionFailure(), FALSE) : TRUE) - -#define NT_ASSERTMSGW(msg, exp) \ - ((!(exp)) ? \ - (__annotation(L"Debug", L"AssertFail", msg), \ - DbgRaiseAssertionFailure(), FALSE) : TRUE) - -#define NT_VERIFY NT_ASSERT -#define NT_VERIFYMSG NT_ASSERTMSG -#define NT_VERIFYMSGW NT_ASSERTMSGW - -#else - -/* GCC doesn't support __annotation (nor PDB) */ -#define NT_ASSERT(exp) \ - (VOID)((!(exp)) ? (DbgRaiseAssertionFailure(), FALSE) : TRUE) - -#define NT_ASSERTMSG NT_ASSERT -#define NT_ASSERTMSGW NT_ASSERT - -#endif - -#else /* !DBG */ - -#define ASSERT(exp) ((VOID) 0) -#define ASSERTMSG(msg, exp) ((VOID) 0) - -#define RTL_SOFT_ASSERT(exp) ((VOID) 0) -#define RTL_SOFT_ASSERTMSG(msg, exp) ((VOID) 0) - -#define RTL_VERIFY(exp) ((exp) ? TRUE : FALSE) -#define RTL_VERIFYMSG(msg, exp) ((exp) ? TRUE : FALSE) - -#define RTL_SOFT_VERIFY(exp) ((exp) ? TRUE : FALSE) -#define RTL_SOFT_VERIFYMSG(msg, exp) ((exp) ? TRUE : FALSE) - -#define NT_ASSERT(exp) ((VOID)0) -#define NT_ASSERTMSG(msg, exp) ((VOID)0) -#define NT_ASSERTMSGW(msg, exp) ((VOID)0) - -#define NT_VERIFY(_exp) ((_exp) ? TRUE : FALSE) -#define NT_VERIFYMSG(_msg, _exp ) ((_exp) ? TRUE : FALSE) -#define NT_VERIFYMSGW(_msg, _exp) ((_exp) ? TRUE : FALSE) - -#endif /* DBG */ - -#define InitializeListHead32(ListHead) (\ - (ListHead)->Flink = (ListHead)->Blink = PtrToUlong((ListHead))) - -#if !defined(_WINBASE_) - -#if defined(_WIN64) && (defined(_NTDRIVER_) || defined(_NTDDK_) || defined(_NTIFS_) || defined(_NTHAL_) || defined(_NTOSP_)) - -NTKERNELAPI -VOID -InitializeSListHead( - OUT PSLIST_HEADER SListHead); - -#else - -VOID -FORCEINLINE -InitializeSListHead( - OUT PSLIST_HEADER SListHead) -{ -#if defined(_IA64_) - ULONG64 FeatureBits; -#endif - -#if defined(_WIN64) - if (((ULONG_PTR)SListHead & 0xf) != 0) { - RtlRaiseStatus(STATUS_DATATYPE_MISALIGNMENT); - } -#endif - RtlZeroMemory(SListHead, sizeof(SLIST_HEADER)); -#if defined(_IA64_) - FeatureBits = __getReg(CV_IA64_CPUID4); - if ((FeatureBits & KF_16BYTE_INSTR) != 0) { - SListHead->Header16.HeaderType = 1; - SListHead->Header16.Init = 1; - } -#endif -} - -#endif - -#if defined(_WIN64) - -#define InterlockedPopEntrySList(Head) \ - ExpInterlockedPopEntrySList(Head) - -#define InterlockedPushEntrySList(Head, Entry) \ - ExpInterlockedPushEntrySList(Head, Entry) - -#define InterlockedFlushSList(Head) \ - ExpInterlockedFlushSList(Head) - -#define QueryDepthSList(Head) \ - ExQueryDepthSList(Head) - -#else /* !defined(_WIN64) */ - -NTKERNELAPI -PSLIST_ENTRY -FASTCALL -InterlockedPopEntrySList( - IN PSLIST_HEADER ListHead); - -NTKERNELAPI -PSLIST_ENTRY -FASTCALL -InterlockedPushEntrySList( - IN PSLIST_HEADER ListHead, - IN PSLIST_ENTRY ListEntry); - -#define InterlockedFlushSList(ListHead) \ - ExInterlockedFlushSList(ListHead) - -#define QueryDepthSList(Head) \ - ExQueryDepthSList(Head) - -#endif /* !defined(_WIN64) */ - -#endif /* !defined(_WINBASE_) */ - -#define RTL_CONTEXT_EX_OFFSET(ContextEx, Chunk) ((ContextEx)->Chunk.Offset) -#define RTL_CONTEXT_EX_LENGTH(ContextEx, Chunk) ((ContextEx)->Chunk.Length) -#define RTL_CONTEXT_EX_CHUNK(Base, Layout, Chunk) \ - ((PVOID)((PCHAR)(Base) + RTL_CONTEXT_EX_OFFSET(Layout, Chunk))) -#define RTL_CONTEXT_OFFSET(Context, Chunk) \ - RTL_CONTEXT_EX_OFFSET((PCONTEXT_EX)(Context + 1), Chunk) -#define RTL_CONTEXT_LENGTH(Context, Chunk) \ - RTL_CONTEXT_EX_LENGTH((PCONTEXT_EX)(Context + 1), Chunk) -#define RTL_CONTEXT_CHUNK(Context, Chunk) \ - RTL_CONTEXT_EX_CHUNK((PCONTEXT_EX)(Context + 1), \ - (PCONTEXT_EX)(Context + 1), \ - Chunk) - -BOOLEAN -RTLVERLIB_DDI(RtlIsNtDdiVersionAvailable)( - IN ULONG Version); - -BOOLEAN -RTLVERLIB_DDI(RtlIsServicePackVersionInstalled)( - IN ULONG Version); - -#ifndef RtlIsNtDdiVersionAvailable -#define RtlIsNtDdiVersionAvailable WdmlibRtlIsNtDdiVersionAvailable -#endif - -#ifndef RtlIsServicePackVersionInstalled -#define RtlIsServicePackVersionInstalled WdmlibRtlIsServicePackVersionInstalled -#endif - -#define RtlInterlockedSetBits(Flags, Flag) \ - InterlockedOr((PLONG)(Flags), Flag) - -#define RtlInterlockedAndBits(Flags, Flag) \ - InterlockedAnd((PLONG)(Flags), Flag) - -#define RtlInterlockedClearBits(Flags, Flag) \ - RtlInterlockedAndBits(Flags, ~(Flag)) - -#define RtlInterlockedXorBits(Flags, Flag) \ - InterlockedXor(Flags, Flag) - -#define RtlInterlockedSetBitsDiscardReturn(Flags, Flag) \ - (VOID) RtlInterlockedSetBits(Flags, Flag) - -#define RtlInterlockedAndBitsDiscardReturn(Flags, Flag) \ - (VOID) RtlInterlockedAndBits(Flags, Flag) - -#define RtlInterlockedClearBitsDiscardReturn(Flags, Flag) \ - RtlInterlockedAndBitsDiscardReturn(Flags, ~(Flag)) - -$endif - -$if (_NTDDK_) - -#ifdef RTL_USE_AVL_TABLES - -#define RtlInitializeGenericTable RtlInitializeGenericTableAvl -#define RtlInsertElementGenericTable RtlInsertElementGenericTableAvl -#define RtlInsertElementGenericTableFull RtlInsertElementGenericTableFullAvl -#define RtlDeleteElementGenericTable RtlDeleteElementGenericTableAvl -#define RtlLookupElementGenericTable RtlLookupElementGenericTableAvl -#define RtlLookupElementGenericTableFull RtlLookupElementGenericTableFullAvl -#define RtlEnumerateGenericTable RtlEnumerateGenericTableAvl -#define RtlEnumerateGenericTableWithoutSplaying RtlEnumerateGenericTableWithoutSplayingAvl -#define RtlGetElementGenericTable RtlGetElementGenericTableAvl -#define RtlNumberGenericTableElements RtlNumberGenericTableElementsAvl -#define RtlIsGenericTableEmpty RtlIsGenericTableEmptyAvl - -#endif /* RTL_USE_AVL_TABLES */ - -#define RtlInitializeSplayLinks(Links) { \ - PRTL_SPLAY_LINKS _SplayLinks; \ - _SplayLinks = (PRTL_SPLAY_LINKS)(Links); \ - _SplayLinks->Parent = _SplayLinks; \ - _SplayLinks->LeftChild = NULL; \ - _SplayLinks->RightChild = NULL; \ -} - -#define RtlIsLeftChild(Links) \ - (RtlLeftChild(RtlParent(Links)) == (PRTL_SPLAY_LINKS)(Links)) - -#define RtlIsRightChild(Links) \ - (RtlRightChild(RtlParent(Links)) == (PRTL_SPLAY_LINKS)(Links)) - -#define RtlRightChild(Links) \ - ((PRTL_SPLAY_LINKS)(Links))->RightChild - -#define RtlIsRoot(Links) \ - (RtlParent(Links) == (PRTL_SPLAY_LINKS)(Links)) - -#define RtlLeftChild(Links) \ - ((PRTL_SPLAY_LINKS)(Links))->LeftChild - -#define RtlParent(Links) \ - ((PRTL_SPLAY_LINKS)(Links))->Parent - -#define RtlInsertAsLeftChild(ParentLinks,ChildLinks) \ - { \ - PRTL_SPLAY_LINKS _SplayParent; \ - PRTL_SPLAY_LINKS _SplayChild; \ - _SplayParent = (PRTL_SPLAY_LINKS)(ParentLinks); \ - _SplayChild = (PRTL_SPLAY_LINKS)(ChildLinks); \ - _SplayParent->LeftChild = _SplayChild; \ - _SplayChild->Parent = _SplayParent; \ - } - -#define RtlInsertAsRightChild(ParentLinks,ChildLinks) \ - { \ - PRTL_SPLAY_LINKS _SplayParent; \ - PRTL_SPLAY_LINKS _SplayChild; \ - _SplayParent = (PRTL_SPLAY_LINKS)(ParentLinks); \ - _SplayChild = (PRTL_SPLAY_LINKS)(ChildLinks); \ - _SplayParent->RightChild = _SplayChild; \ - _SplayChild->Parent = _SplayParent; \ - } - -#if !defined(MIDL_PASS) - -FORCEINLINE -LUID -NTAPI_INLINE -RtlConvertLongToLuid( - IN LONG Val) -{ - LUID Luid; - LARGE_INTEGER Temp; - - Temp.QuadPart = Val; - Luid.LowPart = Temp.u.LowPart; - Luid.HighPart = Temp.u.HighPart; - return Luid; -} - -FORCEINLINE -LUID -NTAPI_INLINE -RtlConvertUlongToLuid( - IN ULONG Val) -{ - LUID Luid; - - Luid.LowPart = Val; - Luid.HighPart = 0; - return Luid; -} - -#endif /* !defined(MIDL_PASS) */ - -#if (defined(_M_AMD64) || defined(_M_IA64)) && !defined(_REALLY_GET_CALLERS_CALLER_) -#define RtlGetCallersAddress(CallersAddress, CallersCaller) \ - *CallersAddress = (PVOID)_ReturnAddress(); \ - *CallersCaller = NULL; -#else -#if (NTDDI_VERSION >= NTDDI_WIN2K) -NTSYSAPI -VOID -NTAPI -RtlGetCallersAddress( - OUT PVOID *CallersAddress, - OUT PVOID *CallersCaller); -#endif -#endif - -#if !defined(MIDL_PASS) && !defined(SORTPP_PASS) - -#if (NTDDI_VERSION >= NTDDI_WIN7) - -FORCEINLINE -VOID -NTAPI -RtlInitHashTableContext( - IN OUT PRTL_DYNAMIC_HASH_TABLE_CONTEXT Context) -{ - Context->ChainHead = NULL; - Context->PrevLinkage = NULL; -} - -FORCEINLINE -VOID -NTAPI -RtlInitHashTableContextFromEnumerator( - IN OUT PRTL_DYNAMIC_HASH_TABLE_CONTEXT Context, - IN PRTL_DYNAMIC_HASH_TABLE_ENUMERATOR Enumerator) -{ - Context->ChainHead = Enumerator->ChainHead; - Context->PrevLinkage = Enumerator->HashEntry.Linkage.Blink; -} - -FORCEINLINE -VOID -NTAPI -RtlReleaseHashTableContext( - IN OUT PRTL_DYNAMIC_HASH_TABLE_CONTEXT Context) -{ - UNREFERENCED_PARAMETER(Context); - return; -} - -FORCEINLINE -ULONG -NTAPI -RtlTotalBucketsHashTable( - IN PRTL_DYNAMIC_HASH_TABLE HashTable) -{ - return HashTable->TableSize; -} - -FORCEINLINE -ULONG -NTAPI -RtlNonEmptyBucketsHashTable( - IN PRTL_DYNAMIC_HASH_TABLE HashTable) -{ - return HashTable->NonEmptyBuckets; -} - -FORCEINLINE -ULONG -NTAPI -RtlEmptyBucketsHashTable( - IN PRTL_DYNAMIC_HASH_TABLE HashTable) -{ - return HashTable->TableSize - HashTable->NonEmptyBuckets; -} - -FORCEINLINE -ULONG -NTAPI -RtlTotalEntriesHashTable( - IN PRTL_DYNAMIC_HASH_TABLE HashTable) -{ - return HashTable->NumEntries; -} - -FORCEINLINE -ULONG -NTAPI -RtlActiveEnumeratorsHashTable( - IN PRTL_DYNAMIC_HASH_TABLE HashTable) -{ - return HashTable->NumEnumerators; -} - -#endif /* (NTDDI_VERSION >= NTDDI_WIN7) */ - -#endif /* !defined(MIDL_PASS) && !defined(SORTPP_PASS) */ - -$endif diff --git a/reactos/include/xdk/rtltypes.h b/reactos/include/xdk/rtltypes.h deleted file mode 100644 index ab74f7016c1..00000000000 --- a/reactos/include/xdk/rtltypes.h +++ /dev/null @@ -1,448 +0,0 @@ -/****************************************************************************** - * Runtime Library Types * - ******************************************************************************/ - -$if (_WDMDDK_) -#define RTL_REGISTRY_ABSOLUTE 0 -#define RTL_REGISTRY_SERVICES 1 -#define RTL_REGISTRY_CONTROL 2 -#define RTL_REGISTRY_WINDOWS_NT 3 -#define RTL_REGISTRY_DEVICEMAP 4 -#define RTL_REGISTRY_USER 5 -#define RTL_REGISTRY_MAXIMUM 6 -#define RTL_REGISTRY_HANDLE 0x40000000 -#define RTL_REGISTRY_OPTIONAL 0x80000000 - -/* RTL_QUERY_REGISTRY_TABLE.Flags */ -#define RTL_QUERY_REGISTRY_SUBKEY 0x00000001 -#define RTL_QUERY_REGISTRY_TOPKEY 0x00000002 -#define RTL_QUERY_REGISTRY_REQUIRED 0x00000004 -#define RTL_QUERY_REGISTRY_NOVALUE 0x00000008 -#define RTL_QUERY_REGISTRY_NOEXPAND 0x00000010 -#define RTL_QUERY_REGISTRY_DIRECT 0x00000020 -#define RTL_QUERY_REGISTRY_DELETE 0x00000040 - -#define HASH_STRING_ALGORITHM_DEFAULT 0 -#define HASH_STRING_ALGORITHM_X65599 1 -#define HASH_STRING_ALGORITHM_INVALID 0xffffffff - -typedef struct _RTL_BITMAP { - ULONG SizeOfBitMap; - PULONG Buffer; -} RTL_BITMAP, *PRTL_BITMAP; - -typedef struct _RTL_BITMAP_RUN { - ULONG StartingIndex; - ULONG NumberOfBits; -} RTL_BITMAP_RUN, *PRTL_BITMAP_RUN; - -typedef NTSTATUS -(NTAPI *PRTL_QUERY_REGISTRY_ROUTINE)( - IN PWSTR ValueName, - IN ULONG ValueType, - IN PVOID ValueData, - IN ULONG ValueLength, - IN PVOID Context, - IN PVOID EntryContext); - -typedef struct _RTL_QUERY_REGISTRY_TABLE { - PRTL_QUERY_REGISTRY_ROUTINE QueryRoutine; - ULONG Flags; - PCWSTR Name; - PVOID EntryContext; - ULONG DefaultType; - PVOID DefaultData; - ULONG DefaultLength; -} RTL_QUERY_REGISTRY_TABLE, *PRTL_QUERY_REGISTRY_TABLE; - -typedef struct _TIME_FIELDS { - CSHORT Year; - CSHORT Month; - CSHORT Day; - CSHORT Hour; - CSHORT Minute; - CSHORT Second; - CSHORT Milliseconds; - CSHORT Weekday; -} TIME_FIELDS, *PTIME_FIELDS; - -/* Slist Header */ -#ifndef _SLIST_HEADER_ -#define _SLIST_HEADER_ - -#if defined(_WIN64) - -typedef struct DECLSPEC_ALIGN(16) _SLIST_ENTRY { - struct _SLIST_ENTRY *Next; -} SLIST_ENTRY, *PSLIST_ENTRY; - -typedef struct _SLIST_ENTRY32 { - ULONG Next; -} SLIST_ENTRY32, *PSLIST_ENTRY32; - -typedef union DECLSPEC_ALIGN(16) _SLIST_HEADER { - struct { - ULONGLONG Alignment; - ULONGLONG Region; - } DUMMYSTRUCTNAME; - struct { - ULONGLONG Depth:16; - ULONGLONG Sequence:9; - ULONGLONG NextEntry:39; - ULONGLONG HeaderType:1; - ULONGLONG Init:1; - ULONGLONG Reserved:59; - ULONGLONG Region:3; - } Header8; - struct { - ULONGLONG Depth:16; - ULONGLONG Sequence:48; - ULONGLONG HeaderType:1; - ULONGLONG Init:1; - ULONGLONG Reserved:2; - ULONGLONG NextEntry:60; - } Header16; - struct { - ULONGLONG Depth:16; - ULONGLONG Sequence:48; - ULONGLONG HeaderType:1; - ULONGLONG Reserved:3; - ULONGLONG NextEntry:60; - } HeaderX64; -} SLIST_HEADER, *PSLIST_HEADER; - -typedef union _SLIST_HEADER32 { - ULONGLONG Alignment; - struct { - SLIST_ENTRY32 Next; - USHORT Depth; - USHORT Sequence; - } DUMMYSTRUCTNAME; -} SLIST_HEADER32, *PSLIST_HEADER32; - -#else - -#define SLIST_ENTRY SINGLE_LIST_ENTRY -#define _SLIST_ENTRY _SINGLE_LIST_ENTRY -#define PSLIST_ENTRY PSINGLE_LIST_ENTRY - -typedef SLIST_ENTRY SLIST_ENTRY32, *PSLIST_ENTRY32; - -typedef union _SLIST_HEADER { - ULONGLONG Alignment; - struct { - SLIST_ENTRY Next; - USHORT Depth; - USHORT Sequence; - } DUMMYSTRUCTNAME; -} SLIST_HEADER, *PSLIST_HEADER; - -typedef SLIST_HEADER SLIST_HEADER32, *PSLIST_HEADER32; - -#endif /* defined(_WIN64) */ - -#endif /* _SLIST_HEADER_ */ - -/* MS definition is broken! */ -extern BOOLEAN NTSYSAPI NlsMbCodePageTag; -extern BOOLEAN NTSYSAPI NlsMbOemCodePageTag; -#define NLS_MB_CODE_PAGE_TAG NlsMbCodePageTag -#define NLS_MB_OEM_CODE_PAGE_TAG NlsMbOemCodePageTag - -#define SHORT_LEAST_SIGNIFICANT_BIT 0 -#define SHORT_MOST_SIGNIFICANT_BIT 1 - -#define LONG_LEAST_SIGNIFICANT_BIT 0 -#define LONG_3RD_MOST_SIGNIFICANT_BIT 1 -#define LONG_2ND_MOST_SIGNIFICANT_BIT 2 -#define LONG_MOST_SIGNIFICANT_BIT 3 - -#define RTLVERLIB_DDI(x) Wdmlib##x - -typedef BOOLEAN -(*PFN_RTL_IS_NTDDI_VERSION_AVAILABLE)( - IN ULONG Version); - -typedef BOOLEAN -(*PFN_RTL_IS_SERVICE_PACK_VERSION_INSTALLED)( - IN ULONG Version); - -$endif - -$if (_NTDDK_) - -#ifndef _RTL_RUN_ONCE_DEF -#define _RTL_RUN_ONCE_DEF - -#define RTL_RUN_ONCE_INIT {0} - -#define RTL_RUN_ONCE_CHECK_ONLY 0x00000001UL -#define RTL_RUN_ONCE_ASYNC 0x00000002UL -#define RTL_RUN_ONCE_INIT_FAILED 0x00000004UL - -#define RTL_RUN_ONCE_CTX_RESERVED_BITS 2 - -#define RTL_HASH_ALLOCATED_HEADER 0x00000001 - -#define RTL_HASH_RESERVED_SIGNATURE 0 - -/* RtlVerifyVersionInfo() ComparisonType */ - -#define VER_EQUAL 1 -#define VER_GREATER 2 -#define VER_GREATER_EQUAL 3 -#define VER_LESS 4 -#define VER_LESS_EQUAL 5 -#define VER_AND 6 -#define VER_OR 7 - -#define VER_CONDITION_MASK 7 -#define VER_NUM_BITS_PER_CONDITION_MASK 3 - -/* RtlVerifyVersionInfo() TypeMask */ - -#define VER_MINORVERSION 0x0000001 -#define VER_MAJORVERSION 0x0000002 -#define VER_BUILDNUMBER 0x0000004 -#define VER_PLATFORMID 0x0000008 -#define VER_SERVICEPACKMINOR 0x0000010 -#define VER_SERVICEPACKMAJOR 0x0000020 -#define VER_SUITENAME 0x0000040 -#define VER_PRODUCT_TYPE 0x0000080 - -#define VER_NT_WORKSTATION 0x0000001 -#define VER_NT_DOMAIN_CONTROLLER 0x0000002 -#define VER_NT_SERVER 0x0000003 - -#define VER_PLATFORM_WIN32s 0 -#define VER_PLATFORM_WIN32_WINDOWS 1 -#define VER_PLATFORM_WIN32_NT 2 - -typedef union _RTL_RUN_ONCE { - PVOID Ptr; -} RTL_RUN_ONCE, *PRTL_RUN_ONCE; - -typedef ULONG /* LOGICAL */ -(NTAPI *PRTL_RUN_ONCE_INIT_FN) ( - IN OUT PRTL_RUN_ONCE RunOnce, - IN OUT PVOID Parameter OPTIONAL, - IN OUT PVOID *Context OPTIONAL); - -#endif /* _RTL_RUN_ONCE_DEF */ - -typedef enum _TABLE_SEARCH_RESULT { - TableEmptyTree, - TableFoundNode, - TableInsertAsLeft, - TableInsertAsRight -} TABLE_SEARCH_RESULT; - -typedef enum _RTL_GENERIC_COMPARE_RESULTS { - GenericLessThan, - GenericGreaterThan, - GenericEqual -} RTL_GENERIC_COMPARE_RESULTS; - -// Forwarder -struct _RTL_AVL_TABLE; - -typedef RTL_GENERIC_COMPARE_RESULTS -(NTAPI *PRTL_AVL_COMPARE_ROUTINE) ( - IN struct _RTL_AVL_TABLE *Table, - IN PVOID FirstStruct, - IN PVOID SecondStruct); - -typedef PVOID -(NTAPI *PRTL_AVL_ALLOCATE_ROUTINE) ( - IN struct _RTL_AVL_TABLE *Table, - IN CLONG ByteSize); - -typedef VOID -(NTAPI *PRTL_AVL_FREE_ROUTINE) ( - IN struct _RTL_AVL_TABLE *Table, - IN PVOID Buffer); - -typedef NTSTATUS -(NTAPI *PRTL_AVL_MATCH_FUNCTION) ( - IN struct _RTL_AVL_TABLE *Table, - IN PVOID UserData, - IN PVOID MatchData); - -typedef struct _RTL_BALANCED_LINKS { - struct _RTL_BALANCED_LINKS *Parent; - struct _RTL_BALANCED_LINKS *LeftChild; - struct _RTL_BALANCED_LINKS *RightChild; - CHAR Balance; - UCHAR Reserved[3]; -} RTL_BALANCED_LINKS, *PRTL_BALANCED_LINKS; - -typedef struct _RTL_AVL_TABLE { - RTL_BALANCED_LINKS BalancedRoot; - PVOID OrderedPointer; - ULONG WhichOrderedElement; - ULONG NumberGenericTableElements; - ULONG DepthOfTree; - PRTL_BALANCED_LINKS RestartKey; - ULONG DeleteCount; - PRTL_AVL_COMPARE_ROUTINE CompareRoutine; - PRTL_AVL_ALLOCATE_ROUTINE AllocateRoutine; - PRTL_AVL_FREE_ROUTINE FreeRoutine; - PVOID TableContext; -} RTL_AVL_TABLE, *PRTL_AVL_TABLE; - -#ifndef RTL_USE_AVL_TABLES - -struct _RTL_GENERIC_TABLE; - -typedef RTL_GENERIC_COMPARE_RESULTS -(NTAPI *PRTL_GENERIC_COMPARE_ROUTINE) ( - IN struct _RTL_GENERIC_TABLE *Table, - IN PVOID FirstStruct, - IN PVOID SecondStruct); - -typedef PVOID -(NTAPI *PRTL_GENERIC_ALLOCATE_ROUTINE) ( - IN struct _RTL_GENERIC_TABLE *Table, - IN CLONG ByteSize); - -typedef VOID -(NTAPI *PRTL_GENERIC_FREE_ROUTINE) ( - IN struct _RTL_GENERIC_TABLE *Table, - IN PVOID Buffer); - -typedef struct _RTL_SPLAY_LINKS { - struct _RTL_SPLAY_LINKS *Parent; - struct _RTL_SPLAY_LINKS *LeftChild; - struct _RTL_SPLAY_LINKS *RightChild; -} RTL_SPLAY_LINKS, *PRTL_SPLAY_LINKS; - -typedef struct _RTL_GENERIC_TABLE { - PRTL_SPLAY_LINKS TableRoot; - LIST_ENTRY InsertOrderList; - PLIST_ENTRY OrderedPointer; - ULONG WhichOrderedElement; - ULONG NumberGenericTableElements; - PRTL_GENERIC_COMPARE_ROUTINE CompareRoutine; - PRTL_GENERIC_ALLOCATE_ROUTINE AllocateRoutine; - PRTL_GENERIC_FREE_ROUTINE FreeRoutine; - PVOID TableContext; -} RTL_GENERIC_TABLE, *PRTL_GENERIC_TABLE; - -#endif /* !RTL_USE_AVL_TABLES */ - -#ifdef RTL_USE_AVL_TABLES - -#undef PRTL_GENERIC_COMPARE_ROUTINE -#undef RTL_GENERIC_COMPARE_ROUTINE -#undef PRTL_GENERIC_ALLOCATE_ROUTINE -#undef RTL_GENERIC_ALLOCATE_ROUTINE -#undef PRTL_GENERIC_FREE_ROUTINE -#undef RTL_GENERIC_FREE_ROUTINE -#undef RTL_GENERIC_TABLE -#undef PRTL_GENERIC_TABLE - -#define PRTL_GENERIC_COMPARE_ROUTINE PRTL_AVL_COMPARE_ROUTINE -#define RTL_GENERIC_COMPARE_ROUTINE RTL_AVL_COMPARE_ROUTINE -#define PRTL_GENERIC_ALLOCATE_ROUTINE PRTL_AVL_ALLOCATE_ROUTINE -#define RTL_GENERIC_ALLOCATE_ROUTINE RTL_AVL_ALLOCATE_ROUTINE -#define PRTL_GENERIC_FREE_ROUTINE PRTL_AVL_FREE_ROUTINE -#define RTL_GENERIC_FREE_ROUTINE RTL_AVL_FREE_ROUTINE -#define RTL_GENERIC_TABLE RTL_AVL_TABLE -#define PRTL_GENERIC_TABLE PRTL_AVL_TABLE - -#endif /* RTL_USE_AVL_TABLES */ - -typedef struct _RTL_DYNAMIC_HASH_TABLE_ENTRY { - LIST_ENTRY Linkage; - ULONG_PTR Signature; -} RTL_DYNAMIC_HASH_TABLE_ENTRY, *PRTL_DYNAMIC_HASH_TABLE_ENTRY; - -typedef struct _RTL_DYNAMIC_HASH_TABLE_CONTEXT { - PLIST_ENTRY ChainHead; - PLIST_ENTRY PrevLinkage; - ULONG_PTR Signature; -} RTL_DYNAMIC_HASH_TABLE_CONTEXT, *PRTL_DYNAMIC_HASH_TABLE_CONTEXT; - -typedef struct _RTL_DYNAMIC_HASH_TABLE_ENUMERATOR { - RTL_DYNAMIC_HASH_TABLE_ENTRY HashEntry; - PLIST_ENTRY ChainHead; - ULONG BucketIndex; -} RTL_DYNAMIC_HASH_TABLE_ENUMERATOR, *PRTL_DYNAMIC_HASH_TABLE_ENUMERATOR; - -typedef struct _RTL_DYNAMIC_HASH_TABLE { - ULONG Flags; - ULONG Shift; - ULONG TableSize; - ULONG Pivot; - ULONG DivisorMask; - ULONG NumEntries; - ULONG NonEmptyBuckets; - ULONG NumEnumerators; - PVOID Directory; -} RTL_DYNAMIC_HASH_TABLE, *PRTL_DYNAMIC_HASH_TABLE; - -typedef struct _OSVERSIONINFOA { - ULONG dwOSVersionInfoSize; - ULONG dwMajorVersion; - ULONG dwMinorVersion; - ULONG dwBuildNumber; - ULONG dwPlatformId; - CHAR szCSDVersion[128]; -} OSVERSIONINFOA, *POSVERSIONINFOA, *LPOSVERSIONINFOA; - -typedef struct _OSVERSIONINFOW { - ULONG dwOSVersionInfoSize; - ULONG dwMajorVersion; - ULONG dwMinorVersion; - ULONG dwBuildNumber; - ULONG dwPlatformId; - WCHAR szCSDVersion[128]; -} OSVERSIONINFOW, *POSVERSIONINFOW, *LPOSVERSIONINFOW, RTL_OSVERSIONINFOW, *PRTL_OSVERSIONINFOW; - -typedef struct _OSVERSIONINFOEXA { - ULONG dwOSVersionInfoSize; - ULONG dwMajorVersion; - ULONG dwMinorVersion; - ULONG dwBuildNumber; - ULONG dwPlatformId; - CHAR szCSDVersion[128]; - USHORT wServicePackMajor; - USHORT wServicePackMinor; - USHORT wSuiteMask; - UCHAR wProductType; - UCHAR wReserved; -} OSVERSIONINFOEXA, *POSVERSIONINFOEXA, *LPOSVERSIONINFOEXA; - -typedef struct _OSVERSIONINFOEXW { - ULONG dwOSVersionInfoSize; - ULONG dwMajorVersion; - ULONG dwMinorVersion; - ULONG dwBuildNumber; - ULONG dwPlatformId; - WCHAR szCSDVersion[128]; - USHORT wServicePackMajor; - USHORT wServicePackMinor; - USHORT wSuiteMask; - UCHAR wProductType; - UCHAR wReserved; -} OSVERSIONINFOEXW, *POSVERSIONINFOEXW, *LPOSVERSIONINFOEXW, RTL_OSVERSIONINFOEXW, *PRTL_OSVERSIONINFOEXW; - -#ifdef UNICODE -typedef OSVERSIONINFOEXW OSVERSIONINFOEX; -typedef POSVERSIONINFOEXW POSVERSIONINFOEX; -typedef LPOSVERSIONINFOEXW LPOSVERSIONINFOEX; -typedef OSVERSIONINFOW OSVERSIONINFO; -typedef POSVERSIONINFOW POSVERSIONINFO; -typedef LPOSVERSIONINFOW LPOSVERSIONINFO; -#else -typedef OSVERSIONINFOEXA OSVERSIONINFOEX; -typedef POSVERSIONINFOEXA POSVERSIONINFOEX; -typedef LPOSVERSIONINFOEXA LPOSVERSIONINFOEX; -typedef OSVERSIONINFOA OSVERSIONINFO; -typedef POSVERSIONINFOA POSVERSIONINFO; -typedef LPOSVERSIONINFOA LPOSVERSIONINFO; -#endif /* UNICODE */ - -#define HASH_ENTRY_KEY(x) ((x)->Signature) - -$endif diff --git a/reactos/include/xdk/sefuncs.h b/reactos/include/xdk/sefuncs.h deleted file mode 100644 index 6c8922024ec..00000000000 --- a/reactos/include/xdk/sefuncs.h +++ /dev/null @@ -1,144 +0,0 @@ -/****************************************************************************** - * Security Manager Functions * - ******************************************************************************/ - -#if (NTDDI_VERSION >= NTDDI_WIN2K) -$if (_NTDDK_) -NTKERNELAPI -BOOLEAN -NTAPI -SeSinglePrivilegeCheck( - IN LUID PrivilegeValue, - IN KPROCESSOR_MODE PreviousMode); -$endif - -$if (_WDMDDK_) -NTKERNELAPI -BOOLEAN -NTAPI -SeAccessCheck( - IN PSECURITY_DESCRIPTOR SecurityDescriptor, - IN PSECURITY_SUBJECT_CONTEXT SubjectSecurityContext, - IN BOOLEAN SubjectContextLocked, - IN ACCESS_MASK DesiredAccess, - IN ACCESS_MASK PreviouslyGrantedAccess, - OUT PPRIVILEGE_SET *Privileges OPTIONAL, - IN PGENERIC_MAPPING GenericMapping, - IN KPROCESSOR_MODE AccessMode, - OUT PACCESS_MASK GrantedAccess, - OUT PNTSTATUS AccessStatus); - -NTKERNELAPI -NTSTATUS -NTAPI -SeAssignSecurity( - IN PSECURITY_DESCRIPTOR ParentDescriptor OPTIONAL, - IN PSECURITY_DESCRIPTOR ExplicitDescriptor OPTIONAL, - OUT PSECURITY_DESCRIPTOR *NewDescriptor, - IN BOOLEAN IsDirectoryObject, - IN PSECURITY_SUBJECT_CONTEXT SubjectContext, - IN PGENERIC_MAPPING GenericMapping, - IN POOL_TYPE PoolType); - -NTKERNELAPI -NTSTATUS -NTAPI -SeAssignSecurityEx( - IN PSECURITY_DESCRIPTOR ParentDescriptor OPTIONAL, - IN PSECURITY_DESCRIPTOR ExplicitDescriptor OPTIONAL, - OUT PSECURITY_DESCRIPTOR *NewDescriptor, - IN GUID *ObjectType OPTIONAL, - IN BOOLEAN IsDirectoryObject, - IN ULONG AutoInheritFlags, - IN PSECURITY_SUBJECT_CONTEXT SubjectContext, - IN PGENERIC_MAPPING GenericMapping, - IN POOL_TYPE PoolType); - -NTKERNELAPI -NTSTATUS -NTAPI -SeDeassignSecurity( - IN OUT PSECURITY_DESCRIPTOR *SecurityDescriptor); - -NTKERNELAPI -BOOLEAN -NTAPI -SeValidSecurityDescriptor( - IN ULONG Length, - IN PSECURITY_DESCRIPTOR SecurityDescriptor); - -NTKERNELAPI -ULONG -NTAPI -SeObjectCreateSaclAccessBits( - IN PSECURITY_DESCRIPTOR SecurityDescriptor); - -NTKERNELAPI -VOID -NTAPI -SeReleaseSubjectContext( - IN OUT PSECURITY_SUBJECT_CONTEXT SubjectContext); - -NTKERNELAPI -VOID -NTAPI -SeUnlockSubjectContext( - IN PSECURITY_SUBJECT_CONTEXT SubjectContext); - -NTKERNELAPI -VOID -NTAPI -SeCaptureSubjectContext( - OUT PSECURITY_SUBJECT_CONTEXT SubjectContext); - -NTKERNELAPI -VOID -NTAPI -SeLockSubjectContext( - IN PSECURITY_SUBJECT_CONTEXT SubjectContext); -$endif - -#endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */ - -$if (_WDMDDK_) -#if (NTDDI_VERSION >= NTDDI_WS03SP1) - -NTSTATUS -NTAPI -SeSetAuditParameter( - IN OUT PSE_ADT_PARAMETER_ARRAY AuditParameters, - IN SE_ADT_PARAMETER_TYPE Type, - IN ULONG Index, - IN PVOID Data); - -NTSTATUS -NTAPI -SeReportSecurityEvent( - IN ULONG Flags, - IN PUNICODE_STRING SourceName, - IN PSID UserSid OPTIONAL, - IN PSE_ADT_PARAMETER_ARRAY AuditParameters); - -#endif /* (NTDDI_VERSION >= NTDDI_WS03SP1) */ - -#if (NTDDI_VERSION >= NTDDI_VISTA) - -NTKERNELAPI -ULONG -NTAPI -SeComputeAutoInheritByObjectType( - IN PVOID ObjectType, - IN PSECURITY_DESCRIPTOR SecurityDescriptor OPTIONAL, - IN PSECURITY_DESCRIPTOR ParentSecurityDescriptor OPTIONAL); - -#ifdef SE_NTFS_WORLD_CACHE -VOID -NTAPI -SeGetWorldRights( - IN PSECURITY_DESCRIPTOR SecurityDescriptor, - IN PGENERIC_MAPPING GenericMapping, - OUT PACCESS_MASK GrantedAccess); -#endif /* SE_NTFS_WORLD_CACHE */ - -#endif /* (NTDDI_VERSION >= NTDDI_VISTA) */ -$endif diff --git a/reactos/include/xdk/setypes.h b/reactos/include/xdk/setypes.h deleted file mode 100644 index 6892aee0d2d..00000000000 --- a/reactos/include/xdk/setypes.h +++ /dev/null @@ -1,396 +0,0 @@ -/****************************************************************************** - * Security Manager Types * - ******************************************************************************/ -$if (_NTDDK_) -#define SE_UNSOLICITED_INPUT_PRIVILEGE 6 - -typedef enum _WELL_KNOWN_SID_TYPE { - WinNullSid = 0, - WinWorldSid = 1, - WinLocalSid = 2, - WinCreatorOwnerSid = 3, - WinCreatorGroupSid = 4, - WinCreatorOwnerServerSid = 5, - WinCreatorGroupServerSid = 6, - WinNtAuthoritySid = 7, - WinDialupSid = 8, - WinNetworkSid = 9, - WinBatchSid = 10, - WinInteractiveSid = 11, - WinServiceSid = 12, - WinAnonymousSid = 13, - WinProxySid = 14, - WinEnterpriseControllersSid = 15, - WinSelfSid = 16, - WinAuthenticatedUserSid = 17, - WinRestrictedCodeSid = 18, - WinTerminalServerSid = 19, - WinRemoteLogonIdSid = 20, - WinLogonIdsSid = 21, - WinLocalSystemSid = 22, - WinLocalServiceSid = 23, - WinNetworkServiceSid = 24, - WinBuiltinDomainSid = 25, - WinBuiltinAdministratorsSid = 26, - WinBuiltinUsersSid = 27, - WinBuiltinGuestsSid = 28, - WinBuiltinPowerUsersSid = 29, - WinBuiltinAccountOperatorsSid = 30, - WinBuiltinSystemOperatorsSid = 31, - WinBuiltinPrintOperatorsSid = 32, - WinBuiltinBackupOperatorsSid = 33, - WinBuiltinReplicatorSid = 34, - WinBuiltinPreWindows2000CompatibleAccessSid = 35, - WinBuiltinRemoteDesktopUsersSid = 36, - WinBuiltinNetworkConfigurationOperatorsSid = 37, - WinAccountAdministratorSid = 38, - WinAccountGuestSid = 39, - WinAccountKrbtgtSid = 40, - WinAccountDomainAdminsSid = 41, - WinAccountDomainUsersSid = 42, - WinAccountDomainGuestsSid = 43, - WinAccountComputersSid = 44, - WinAccountControllersSid = 45, - WinAccountCertAdminsSid = 46, - WinAccountSchemaAdminsSid = 47, - WinAccountEnterpriseAdminsSid = 48, - WinAccountPolicyAdminsSid = 49, - WinAccountRasAndIasServersSid = 50, - WinNTLMAuthenticationSid = 51, - WinDigestAuthenticationSid = 52, - WinSChannelAuthenticationSid = 53, - WinThisOrganizationSid = 54, - WinOtherOrganizationSid = 55, - WinBuiltinIncomingForestTrustBuildersSid = 56, - WinBuiltinPerfMonitoringUsersSid = 57, - WinBuiltinPerfLoggingUsersSid = 58, - WinBuiltinAuthorizationAccessSid = 59, - WinBuiltinTerminalServerLicenseServersSid = 60, - WinBuiltinDCOMUsersSid = 61, - WinBuiltinIUsersSid = 62, - WinIUserSid = 63, - WinBuiltinCryptoOperatorsSid = 64, - WinUntrustedLabelSid = 65, - WinLowLabelSid = 66, - WinMediumLabelSid = 67, - WinHighLabelSid = 68, - WinSystemLabelSid = 69, - WinWriteRestrictedCodeSid = 70, - WinCreatorOwnerRightsSid = 71, - WinCacheablePrincipalsGroupSid = 72, - WinNonCacheablePrincipalsGroupSid = 73, - WinEnterpriseReadonlyControllersSid = 74, - WinAccountReadonlyControllersSid = 75, - WinBuiltinEventLogReadersGroup = 76, - WinNewEnterpriseReadonlyControllersSid = 77, - WinBuiltinCertSvcDComAccessGroup = 78, - WinMediumPlusLabelSid = 79, - WinLocalLogonSid = 80, - WinConsoleLogonSid = 81, - WinThisOrganizationCertificateSid = 82, -} WELL_KNOWN_SID_TYPE; -$endif - -$if (_WDMDDK_) -/* Simple types */ -typedef PVOID PSECURITY_DESCRIPTOR; -typedef ULONG SECURITY_INFORMATION, *PSECURITY_INFORMATION; -typedef ULONG ACCESS_MASK, *PACCESS_MASK; -typedef PVOID PACCESS_TOKEN; -typedef PVOID PSID; - -#define DELETE 0x00010000L -#define READ_CONTROL 0x00020000L -#define WRITE_DAC 0x00040000L -#define WRITE_OWNER 0x00080000L -#define SYNCHRONIZE 0x00100000L -#define STANDARD_RIGHTS_REQUIRED 0x000F0000L -#define STANDARD_RIGHTS_READ READ_CONTROL -#define STANDARD_RIGHTS_WRITE READ_CONTROL -#define STANDARD_RIGHTS_EXECUTE READ_CONTROL -#define STANDARD_RIGHTS_ALL 0x001F0000L -#define SPECIFIC_RIGHTS_ALL 0x0000FFFFL -#define ACCESS_SYSTEM_SECURITY 0x01000000L -#define MAXIMUM_ALLOWED 0x02000000L -#define GENERIC_READ 0x80000000L -#define GENERIC_WRITE 0x40000000L -#define GENERIC_EXECUTE 0x20000000L -#define GENERIC_ALL 0x10000000L - -typedef struct _GENERIC_MAPPING { - ACCESS_MASK GenericRead; - ACCESS_MASK GenericWrite; - ACCESS_MASK GenericExecute; - ACCESS_MASK GenericAll; -} GENERIC_MAPPING, *PGENERIC_MAPPING; - -#define ACL_REVISION 2 -#define ACL_REVISION_DS 4 - -#define ACL_REVISION1 1 -#define ACL_REVISION2 2 -#define ACL_REVISION3 3 -#define ACL_REVISION4 4 -#define MIN_ACL_REVISION ACL_REVISION2 -#define MAX_ACL_REVISION ACL_REVISION4 - -typedef struct _ACL { - UCHAR AclRevision; - UCHAR Sbz1; - USHORT AclSize; - USHORT AceCount; - USHORT Sbz2; -} ACL, *PACL; - -/* Current security descriptor revision value */ -#define SECURITY_DESCRIPTOR_REVISION (1) -#define SECURITY_DESCRIPTOR_REVISION1 (1) - -/* Privilege attributes */ -#define SE_PRIVILEGE_ENABLED_BY_DEFAULT (0x00000001L) -#define SE_PRIVILEGE_ENABLED (0x00000002L) -#define SE_PRIVILEGE_REMOVED (0X00000004L) -#define SE_PRIVILEGE_USED_FOR_ACCESS (0x80000000L) - -#define SE_PRIVILEGE_VALID_ATTRIBUTES (SE_PRIVILEGE_ENABLED_BY_DEFAULT | \ - SE_PRIVILEGE_ENABLED | \ - SE_PRIVILEGE_REMOVED | \ - SE_PRIVILEGE_USED_FOR_ACCESS) - -#include -typedef struct _LUID_AND_ATTRIBUTES { - LUID Luid; - ULONG Attributes; -} LUID_AND_ATTRIBUTES, *PLUID_AND_ATTRIBUTES; -#include - -typedef LUID_AND_ATTRIBUTES LUID_AND_ATTRIBUTES_ARRAY[ANYSIZE_ARRAY]; -typedef LUID_AND_ATTRIBUTES_ARRAY *PLUID_AND_ATTRIBUTES_ARRAY; - -/* Privilege sets */ -#define PRIVILEGE_SET_ALL_NECESSARY (1) - -typedef struct _PRIVILEGE_SET { - ULONG PrivilegeCount; - ULONG Control; - LUID_AND_ATTRIBUTES Privilege[ANYSIZE_ARRAY]; -} PRIVILEGE_SET,*PPRIVILEGE_SET; - -typedef enum _SECURITY_IMPERSONATION_LEVEL { - SecurityAnonymous, - SecurityIdentification, - SecurityImpersonation, - SecurityDelegation -} SECURITY_IMPERSONATION_LEVEL, * PSECURITY_IMPERSONATION_LEVEL; - -#define SECURITY_MAX_IMPERSONATION_LEVEL SecurityDelegation -#define SECURITY_MIN_IMPERSONATION_LEVEL SecurityAnonymous -#define DEFAULT_IMPERSONATION_LEVEL SecurityImpersonation -#define VALID_IMPERSONATION_LEVEL(Level) (((Level) >= SECURITY_MIN_IMPERSONATION_LEVEL) && ((Level) <= SECURITY_MAX_IMPERSONATION_LEVEL)) - -#define SECURITY_DYNAMIC_TRACKING (TRUE) -#define SECURITY_STATIC_TRACKING (FALSE) - -typedef BOOLEAN SECURITY_CONTEXT_TRACKING_MODE, *PSECURITY_CONTEXT_TRACKING_MODE; - -typedef struct _SECURITY_QUALITY_OF_SERVICE { - ULONG Length; - SECURITY_IMPERSONATION_LEVEL ImpersonationLevel; - SECURITY_CONTEXT_TRACKING_MODE ContextTrackingMode; - BOOLEAN EffectiveOnly; -} SECURITY_QUALITY_OF_SERVICE, *PSECURITY_QUALITY_OF_SERVICE; - -typedef struct _SE_IMPERSONATION_STATE { - PACCESS_TOKEN Token; - BOOLEAN CopyOnOpen; - BOOLEAN EffectiveOnly; - SECURITY_IMPERSONATION_LEVEL Level; -} SE_IMPERSONATION_STATE, *PSE_IMPERSONATION_STATE; - -#define OWNER_SECURITY_INFORMATION (0x00000001L) -#define GROUP_SECURITY_INFORMATION (0x00000002L) -#define DACL_SECURITY_INFORMATION (0x00000004L) -#define SACL_SECURITY_INFORMATION (0x00000008L) -#define LABEL_SECURITY_INFORMATION (0x00000010L) - -#define PROTECTED_DACL_SECURITY_INFORMATION (0x80000000L) -#define PROTECTED_SACL_SECURITY_INFORMATION (0x40000000L) -#define UNPROTECTED_DACL_SECURITY_INFORMATION (0x20000000L) -#define UNPROTECTED_SACL_SECURITY_INFORMATION (0x10000000L) - -typedef enum _SECURITY_OPERATION_CODE { - SetSecurityDescriptor, - QuerySecurityDescriptor, - DeleteSecurityDescriptor, - AssignSecurityDescriptor -} SECURITY_OPERATION_CODE, *PSECURITY_OPERATION_CODE; - -#define INITIAL_PRIVILEGE_COUNT 3 - -typedef struct _INITIAL_PRIVILEGE_SET { - ULONG PrivilegeCount; - ULONG Control; - LUID_AND_ATTRIBUTES Privilege[INITIAL_PRIVILEGE_COUNT]; -} INITIAL_PRIVILEGE_SET, * PINITIAL_PRIVILEGE_SET; - -#define SE_MIN_WELL_KNOWN_PRIVILEGE 2 -#define SE_CREATE_TOKEN_PRIVILEGE 2 -#define SE_ASSIGNPRIMARYTOKEN_PRIVILEGE 3 -#define SE_LOCK_MEMORY_PRIVILEGE 4 -#define SE_INCREASE_QUOTA_PRIVILEGE 5 -#define SE_MACHINE_ACCOUNT_PRIVILEGE 6 -#define SE_TCB_PRIVILEGE 7 -#define SE_SECURITY_PRIVILEGE 8 -#define SE_TAKE_OWNERSHIP_PRIVILEGE 9 -#define SE_LOAD_DRIVER_PRIVILEGE 10 -#define SE_SYSTEM_PROFILE_PRIVILEGE 11 -#define SE_SYSTEMTIME_PRIVILEGE 12 -#define SE_PROF_SINGLE_PROCESS_PRIVILEGE 13 -#define SE_INC_BASE_PRIORITY_PRIVILEGE 14 -#define SE_CREATE_PAGEFILE_PRIVILEGE 15 -#define SE_CREATE_PERMANENT_PRIVILEGE 16 -#define SE_BACKUP_PRIVILEGE 17 -#define SE_RESTORE_PRIVILEGE 18 -#define SE_SHUTDOWN_PRIVILEGE 19 -#define SE_DEBUG_PRIVILEGE 20 -#define SE_AUDIT_PRIVILEGE 21 -#define SE_SYSTEM_ENVIRONMENT_PRIVILEGE 22 -#define SE_CHANGE_NOTIFY_PRIVILEGE 23 -#define SE_REMOTE_SHUTDOWN_PRIVILEGE 24 -#define SE_UNDOCK_PRIVILEGE 25 -#define SE_SYNC_AGENT_PRIVILEGE 26 -#define SE_ENABLE_DELEGATION_PRIVILEGE 27 -#define SE_MANAGE_VOLUME_PRIVILEGE 28 -#define SE_IMPERSONATE_PRIVILEGE 29 -#define SE_CREATE_GLOBAL_PRIVILEGE 30 -#define SE_TRUSTED_CREDMAN_ACCESS_PRIVILEGE 31 -#define SE_RELABEL_PRIVILEGE 32 -#define SE_INC_WORKING_SET_PRIVILEGE 33 -#define SE_TIME_ZONE_PRIVILEGE 34 -#define SE_CREATE_SYMBOLIC_LINK_PRIVILEGE 35 -#define SE_MAX_WELL_KNOWN_PRIVILEGE SE_CREATE_SYMBOLIC_LINK_PRIVILEGE - -typedef struct _SECURITY_SUBJECT_CONTEXT { - PACCESS_TOKEN ClientToken; - SECURITY_IMPERSONATION_LEVEL ImpersonationLevel; - PACCESS_TOKEN PrimaryToken; - PVOID ProcessAuditId; -} SECURITY_SUBJECT_CONTEXT, *PSECURITY_SUBJECT_CONTEXT; - -typedef struct _ACCESS_STATE { - LUID OperationID; - BOOLEAN SecurityEvaluated; - BOOLEAN GenerateAudit; - BOOLEAN GenerateOnClose; - BOOLEAN PrivilegesAllocated; - ULONG Flags; - ACCESS_MASK RemainingDesiredAccess; - ACCESS_MASK PreviouslyGrantedAccess; - ACCESS_MASK OriginalDesiredAccess; - SECURITY_SUBJECT_CONTEXT SubjectSecurityContext; - PSECURITY_DESCRIPTOR SecurityDescriptor; - PVOID AuxData; - union { - INITIAL_PRIVILEGE_SET InitialPrivilegeSet; - PRIVILEGE_SET PrivilegeSet; - } Privileges; - BOOLEAN AuditPrivileges; - UNICODE_STRING ObjectName; - UNICODE_STRING ObjectTypeName; -} ACCESS_STATE, *PACCESS_STATE; - -typedef VOID -(NTAPI *PNTFS_DEREF_EXPORTED_SECURITY_DESCRIPTOR)( - IN PVOID Vcb, - IN PSECURITY_DESCRIPTOR SecurityDescriptor); - -#ifndef _NTLSA_IFS_ - -#ifndef _NTLSA_AUDIT_ -#define _NTLSA_AUDIT_ - -#define SE_MAX_AUDIT_PARAMETERS 32 -#define SE_MAX_GENERIC_AUDIT_PARAMETERS 28 - -#define SE_ADT_OBJECT_ONLY 0x1 - -#define SE_ADT_PARAMETERS_SELF_RELATIVE 0x00000001 -#define SE_ADT_PARAMETERS_SEND_TO_LSA 0x00000002 -#define SE_ADT_PARAMETER_EXTENSIBLE_AUDIT 0x00000004 -#define SE_ADT_PARAMETER_GENERIC_AUDIT 0x00000008 -#define SE_ADT_PARAMETER_WRITE_SYNCHRONOUS 0x00000010 - -#define LSAP_SE_ADT_PARAMETER_ARRAY_TRUE_SIZE(Parameters) \ - ( sizeof(SE_ADT_PARAMETER_ARRAY) - sizeof(SE_ADT_PARAMETER_ARRAY_ENTRY) * \ - (SE_MAX_AUDIT_PARAMETERS - Parameters->ParameterCount) ) - -typedef enum _SE_ADT_PARAMETER_TYPE { - SeAdtParmTypeNone = 0, - SeAdtParmTypeString, - SeAdtParmTypeFileSpec, - SeAdtParmTypeUlong, - SeAdtParmTypeSid, - SeAdtParmTypeLogonId, - SeAdtParmTypeNoLogonId, - SeAdtParmTypeAccessMask, - SeAdtParmTypePrivs, - SeAdtParmTypeObjectTypes, - SeAdtParmTypeHexUlong, - SeAdtParmTypePtr, - SeAdtParmTypeTime, - SeAdtParmTypeGuid, - SeAdtParmTypeLuid, - SeAdtParmTypeHexInt64, - SeAdtParmTypeStringList, - SeAdtParmTypeSidList, - SeAdtParmTypeDuration, - SeAdtParmTypeUserAccountControl, - SeAdtParmTypeNoUac, - SeAdtParmTypeMessage, - SeAdtParmTypeDateTime, - SeAdtParmTypeSockAddr, - SeAdtParmTypeSD, - SeAdtParmTypeLogonHours, - SeAdtParmTypeLogonIdNoSid, - SeAdtParmTypeUlongNoConv, - SeAdtParmTypeSockAddrNoPort, - SeAdtParmTypeAccessReason -} SE_ADT_PARAMETER_TYPE, *PSE_ADT_PARAMETER_TYPE; - -typedef struct _SE_ADT_OBJECT_TYPE { - GUID ObjectType; - USHORT Flags; - USHORT Level; - ACCESS_MASK AccessMask; -} SE_ADT_OBJECT_TYPE, *PSE_ADT_OBJECT_TYPE; - -typedef struct _SE_ADT_PARAMETER_ARRAY_ENTRY { - SE_ADT_PARAMETER_TYPE Type; - ULONG Length; - ULONG_PTR Data[2]; - PVOID Address; -} SE_ADT_PARAMETER_ARRAY_ENTRY, *PSE_ADT_PARAMETER_ARRAY_ENTRY; - -typedef struct _SE_ADT_ACCESS_REASON { - ACCESS_MASK AccessMask; - ULONG AccessReasons[32]; - ULONG ObjectTypeIndex; - ULONG AccessGranted; - PSECURITY_DESCRIPTOR SecurityDescriptor; -} SE_ADT_ACCESS_REASON, *PSE_ADT_ACCESS_REASON; - -typedef struct _SE_ADT_PARAMETER_ARRAY { - ULONG CategoryId; - ULONG AuditId; - ULONG ParameterCount; - ULONG Length; - USHORT FlatSubCategoryId; - USHORT Type; - ULONG Flags; - SE_ADT_PARAMETER_ARRAY_ENTRY Parameters[ SE_MAX_AUDIT_PARAMETERS ]; -} SE_ADT_PARAMETER_ARRAY, *PSE_ADT_PARAMETER_ARRAY; - -#endif /* !_NTLSA_AUDIT_ */ -#endif /* !_NTLSA_IFS_ */ -$endif - diff --git a/reactos/include/xdk/wdm.template.h b/reactos/include/xdk/wdm.template.h deleted file mode 100644 index 1005bf13d94..00000000000 --- a/reactos/include/xdk/wdm.template.h +++ /dev/null @@ -1,243 +0,0 @@ -/* - * wdm.h - * - * Windows NT WDM Driver Developer Kit - * - * This file is part of the ReactOS DDK package. - * - * Contributors: - * Amine Khaldi - * Timo Kreuzer (timo.kreuzer@reactos.org) - * - * THIS SOFTWARE IS NOT COPYRIGHTED - * - * This source code is offered for use in the public domain. You may - * use, modify or distribute it freely. - * - * This code is distributed in the hope that it will be useful but - * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY - * DISCLAIMED. This includes but is not limited to warranties of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - * - */ -#pragma once - -#ifndef _WDMDDK_ -#define _WDMDDK_ - -/* Included via ntddk.h? */ -#ifndef _NTDDK_ -#define _NTDDK_ -#define _WDM_INCLUDED_ -#define _DDK_DRIVER_ -#define NO_INTERLOCKED_INTRINSICS -#endif /* _NTDDK_ */ - -/* Dependencies */ -#define NT_INCLUDED -#include -#include -#include -#include - -#ifndef GUID_DEFINED -#include -#endif - -#ifdef _MAC -#ifndef _INC_STRING -#include -#endif /* _INC_STRING */ -#else -#include -#endif /* _MAC */ - -#ifndef _KTMTYPES_ -typedef GUID UOW, *PUOW; -#endif - -typedef GUID *PGUID; - -#if (NTDDI_VERSION >= NTDDI_WINXP) -#include -#endif - -#include "intrin.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#if !defined(_NTHALDLL_) && !defined(_BLDR_) -#define NTHALAPI DECLSPEC_IMPORT -#else -#define NTHALAPI -#endif - -/* For ReactOS */ -#if !defined(_NTOSKRNL_) && !defined(_BLDR_) -#define NTKERNELAPI DECLSPEC_IMPORT -#else -#define NTKERNELAPI -#endif - -#if defined(_X86_) && !defined(_NTHAL_) -#define _DECL_HAL_KE_IMPORT DECLSPEC_IMPORT -#elif defined(_X86_) -#define _DECL_HAL_KE_IMPORT -#else -#define _DECL_HAL_KE_IMPORT NTKERNELAPI -#endif - -#if defined(_WIN64) -#define POINTER_ALIGNMENT DECLSPEC_ALIGN(8) -#else -#define POINTER_ALIGNMENT -#endif - -/* Helper macro to enable gcc's extension. */ -#ifndef __GNU_EXTENSION -#ifdef __GNUC__ -#define __GNU_EXTENSION __extension__ -#else -#define __GNU_EXTENSION -#endif -#endif - -#if defined(_MSC_VER) - -/* Disable some warnings */ -#pragma warning(disable:4115) /* Named type definition in parentheses */ -#pragma warning(disable:4201) /* Nameless unions and structs */ -#pragma warning(disable:4214) /* Bit fields of other types than int */ -#pragma warning(disable:4820) /* Padding added, due to alignemnet requirement */ - -/* Indicate if #pragma alloc_text() is supported */ -#if defined(_M_IX86) || defined(_M_AMD64) || defined(_M_IA64) -#define ALLOC_PRAGMA 1 -#endif - -/* Indicate if #pragma data_seg() is supported */ -#if defined(_M_IX86) || defined(_M_AMD64) -#define ALLOC_DATA_PRAGMA 1 -#endif - -#endif - -/* Forward declarations */ -struct _IRP; -struct _MDL; -struct _KAPC; -struct _KDPC; -struct _FILE_OBJECT; -struct _DMA_ADAPTER; -struct _DEVICE_OBJECT; -struct _DRIVER_OBJECT; -struct _IO_STATUS_BLOCK; -struct _DEVICE_DESCRIPTION; -struct _SCATTER_GATHER_LIST; -struct _DRIVE_LAYOUT_INFORMATION; -struct _COMPRESSED_DATA_INFO; -struct _IO_RESOURCE_DESCRIPTOR; - -/* Structures not exposed to drivers */ -typedef struct _OBJECT_TYPE *POBJECT_TYPE; -typedef struct _HAL_DISPATCH_TABLE *PHAL_DISPATCH_TABLE; -typedef struct _HAL_PRIVATE_DISPATCH_TABLE *PHAL_PRIVATE_DISPATCH_TABLE; -typedef struct _CALLBACK_OBJECT *PCALLBACK_OBJECT; -typedef struct _EPROCESS *PEPROCESS; -typedef struct _ETHREAD *PETHREAD; -typedef struct _IO_TIMER *PIO_TIMER; -typedef struct _KINTERRUPT *PKINTERRUPT; -typedef struct _KPROCESS *PKPROCESS; -typedef struct _KTHREAD *PKTHREAD, *PRKTHREAD; -typedef struct _CONTEXT *PCONTEXT; - -#if defined(USE_DMA_MACROS) && !defined(_NTHAL_) && ( defined(_NTDDK_) || defined(_NTDRIVER_) || defined(_NTOSP_)) -typedef struct _DMA_ADAPTER *PADAPTER_OBJECT; -#elif defined(_WDM_INCLUDED_) -typedef struct _DMA_ADAPTER *PADAPTER_OBJECT; -#else -typedef struct _ADAPTER_OBJECT *PADAPTER_OBJECT; -#endif - -#ifndef DEFINE_GUIDEX -#ifdef _MSC_VER -#define DEFINE_GUIDEX(name) EXTERN_C const CDECL GUID name -#else -#define DEFINE_GUIDEX(name) EXTERN_C const GUID name -#endif -#endif /* DEFINE_GUIDEX */ - -#ifndef STATICGUIDOF -#define STATICGUIDOF(guid) STATIC_##guid -#endif - -/* GUID Comparison */ -#ifndef __IID_ALIGNED__ -#define __IID_ALIGNED__ -#ifdef __cplusplus -inline int IsEqualGUIDAligned(REFGUID guid1, REFGUID guid2) -{ - return ( (*(PLONGLONG)(&guid1) == *(PLONGLONG)(&guid2)) && - (*((PLONGLONG)(&guid1) + 1) == *((PLONGLONG)(&guid2) + 1)) ); -} -#else -#define IsEqualGUIDAligned(guid1, guid2) \ - ( (*(PLONGLONG)(guid1) == *(PLONGLONG)(guid2)) && \ - (*((PLONGLONG)(guid1) + 1) == *((PLONGLONG)(guid2) + 1)) ) -#endif /* __cplusplus */ -#endif /* !__IID_ALIGNED__ */ - - -$define (_WDMDDK_) -$include (interlocked.h) -$include (rtltypes.h) -$include (ketypes.h) -$include (mmtypes.h) -$include (extypes.h) -$include (setypes.h) -$include (potypes.h) -$include (cmtypes.h) -$include (iotypes.h) -$include (obtypes.h) -$include (pstypes.h) -$include (wmitypes.h) - -#if defined(_M_IX86) -$include(x86/ke.h) -#elif defined(_M_AMD64) -$include(amd64/ke.h) -#elif defined(_M_IA64) -$include(ia64/ke.h) -#elif defined(_M_PPC) -$include(ppc/ke.h) -#elif defined(_M_MIPS) -$include(mips/ke.h) -#elif defined(_M_ARM) -$include(arm/ke.h) -#else -#error Unknown Architecture -#endif - -$include (rtlfuncs.h) -$include (kefuncs.h) -$include (mmfuncs.h) -$include (sefuncs.h) -$include (cmfuncs.h) -$include (iofuncs.h) -$include (pofuncs.h) -$include (exfuncs.h) -$include (obfuncs.h) -$include (psfuncs.h) -$include (wmifuncs.h) -$include (kdfuncs.h) -$include (halfuncs.h) -$include (nttmapi.h) -$include (zwfuncs.h) - -#ifdef __cplusplus -} -#endif - -#endif /* !_WDMDDK_ */ diff --git a/reactos/include/xdk/wmifuncs.h b/reactos/include/xdk/wmifuncs.h deleted file mode 100644 index 6279a55ff90..00000000000 --- a/reactos/include/xdk/wmifuncs.h +++ /dev/null @@ -1,152 +0,0 @@ -/****************************************************************************** - * WMI Library Support Functions * - ******************************************************************************/ - -#ifdef RUN_WPP -#if (NTDDI_VERSION >= NTDDI_WINXP) -NTKERNELAPI -NTSTATUS -__cdecl -WmiTraceMessage( - IN TRACEHANDLE LoggerHandle, - IN ULONG MessageFlags, - IN LPGUID MessageGuid, - IN USHORT MessageNumber, - IN ...); -#endif -#endif /* RUN_WPP */ - - #if (NTDDI_VERSION >= NTDDI_WINXP) - -NTKERNELAPI -NTSTATUS -NTAPI -WmiQueryTraceInformation( - IN TRACE_INFORMATION_CLASS TraceInformationClass, - OUT PVOID TraceInformation, - IN ULONG TraceInformationLength, - OUT PULONG RequiredLength OPTIONAL, - IN PVOID Buffer OPTIONAL); - -#if 0 -/* FIXME: Get va_list from where? */ -NTKERNELAPI -NTSTATUS -__cdecl -WmiTraceMessageVa( - IN TRACEHANDLE LoggerHandle, - IN ULONG MessageFlags, - IN LPGUID MessageGuid, - IN USHORT MessageNumber, - IN va_list MessageArgList); -#endif - -#endif /* (NTDDI_VERSION >= NTDDI_WINXP) */ - -#ifndef TRACE_INFORMATION_CLASS_DEFINE - -#if (NTDDI_VERSION >= NTDDI_WINXP) -NTKERNELAPI -NTSTATUS -NTAPI -WmiQueryTraceInformation( - IN TRACE_INFORMATION_CLASS TraceInformationClass, - OUT PVOID TraceInformation, - IN ULONG TraceInformationLength, - OUT PULONG RequiredLength OPTIONAL, - IN PVOID Buffer OPTIONAL); -#endif - -#define TRACE_INFORMATION_CLASS_DEFINE - -#endif /* TRACE_INFOPRMATION_CLASS_DEFINE */ - -#if (NTDDI_VERSION >= NTDDI_VISTA) - -NTSTATUS -NTKERNELAPI -NTAPI -EtwRegister( - IN LPCGUID ProviderId, - IN PETWENABLECALLBACK EnableCallback OPTIONAL, - IN PVOID CallbackContext OPTIONAL, - OUT PREGHANDLE RegHandle); - -NTSTATUS -NTKERNELAPI -NTAPI -EtwUnregister( - IN REGHANDLE RegHandle); - -BOOLEAN -NTKERNELAPI -NTAPI -EtwEventEnabled( - IN REGHANDLE RegHandle, - IN PCEVENT_DESCRIPTOR EventDescriptor); - -BOOLEAN -NTKERNELAPI -NTAPI -EtwProviderEnabled( - IN REGHANDLE RegHandle, - IN UCHAR Level, - IN ULONGLONG Keyword); - -NTSTATUS -NTKERNELAPI -NTAPI -EtwActivityIdControl( - IN ULONG ControlCode, - IN OUT LPGUID ActivityId); - -NTSTATUS -NTKERNELAPI -NTAPI -EtwWrite( - IN REGHANDLE RegHandle, - IN PCEVENT_DESCRIPTOR EventDescriptor, - IN LPCGUID ActivityId OPTIONAL, - IN ULONG UserDataCount, - IN PEVENT_DATA_DESCRIPTOR UserData OPTIONAL); - -NTSTATUS -NTKERNELAPI -NTAPI -EtwWriteTransfer( - IN REGHANDLE RegHandle, - IN PCEVENT_DESCRIPTOR EventDescriptor, - IN LPCGUID ActivityId OPTIONAL, - IN LPCGUID RelatedActivityId OPTIONAL, - IN ULONG UserDataCount, - IN PEVENT_DATA_DESCRIPTOR UserData OPTIONAL); - -NTSTATUS -NTKERNELAPI -NTAPI -EtwWriteString( - IN REGHANDLE RegHandle, - IN UCHAR Level, - IN ULONGLONG Keyword, - IN LPCGUID ActivityId OPTIONAL, - IN PCWSTR String); - -#endif /* (NTDDI_VERSION >= NTDDI_VISTA) */ - -#if (NTDDI_VERSION >= NTDDI_WIN7) -NTSTATUS -NTKERNELAPI -NTAPI -EtwWriteEx( - IN REGHANDLE RegHandle, - IN PCEVENT_DESCRIPTOR EventDescriptor, - IN ULONG64 Filter, - IN ULONG Flags, - IN LPCGUID ActivityId OPTIONAL, - IN LPCGUID RelatedActivityId OPTIONAL, - IN ULONG UserDataCount, - IN PEVENT_DATA_DESCRIPTOR UserData OPTIONAL); -#endif - - - diff --git a/reactos/include/xdk/wmitypes.h b/reactos/include/xdk/wmitypes.h deleted file mode 100644 index c4fd0bac146..00000000000 --- a/reactos/include/xdk/wmitypes.h +++ /dev/null @@ -1,62 +0,0 @@ -/****************************************************************************** - * WMI Library Support Types * - ******************************************************************************/ - -#ifdef RUN_WPP -#include -#include -#endif - -#ifndef _TRACEHANDLE_DEFINED -#define _TRACEHANDLE_DEFINED -typedef ULONG64 TRACEHANDLE, *PTRACEHANDLE; -#endif - -#ifndef TRACE_INFORMATION_CLASS_DEFINE - -typedef struct _ETW_TRACE_SESSION_SETTINGS { - ULONG Version; - ULONG BufferSize; - ULONG MinimumBuffers; - ULONG MaximumBuffers; - ULONG LoggerMode; - ULONG FlushTimer; - ULONG FlushThreshold; - ULONG ClockType; -} ETW_TRACE_SESSION_SETTINGS, *PETW_TRACE_SESSION_SETTINGS; - -typedef enum _TRACE_INFORMATION_CLASS { - TraceIdClass, - TraceHandleClass, - TraceEnableFlagsClass, - TraceEnableLevelClass, - GlobalLoggerHandleClass, - EventLoggerHandleClass, - AllLoggerHandlesClass, - TraceHandleByNameClass, - LoggerEventsLostClass, - TraceSessionSettingsClass, - LoggerEventsLoggedClass, - MaxTraceInformationClass -} TRACE_INFORMATION_CLASS; - -#endif /* TRACE_INFORMATION_CLASS_DEFINE */ - -#ifndef _ETW_KM_ -#define _ETW_KM_ -#endif - -#include - -typedef VOID -(NTAPI *PETWENABLECALLBACK)( - IN LPCGUID SourceId, - IN ULONG ControlCode, - IN UCHAR Level, - IN ULONGLONG MatchAnyKeyword, - IN ULONGLONG MatchAllKeyword, - IN PEVENT_FILTER_DESCRIPTOR FilterData OPTIONAL, - IN OUT PVOID CallbackContext OPTIONAL); - -#define EVENT_WRITE_FLAG_NO_FAULTING 0x00000001 - diff --git a/reactos/include/xdk/x86/ke.h b/reactos/include/xdk/x86/ke.h deleted file mode 100644 index 19d42740ee4..00000000000 --- a/reactos/include/xdk/x86/ke.h +++ /dev/null @@ -1,288 +0,0 @@ -$if (_WDMDDK_) -/** Kernel definitions for x86 **/ - -/* Interrupt request levels */ -#define PASSIVE_LEVEL 0 -#define LOW_LEVEL 0 -#define APC_LEVEL 1 -#define DISPATCH_LEVEL 2 -#define CMCI_LEVEL 5 -#define PROFILE_LEVEL 27 -#define CLOCK1_LEVEL 28 -#define CLOCK2_LEVEL 28 -#define IPI_LEVEL 29 -#define POWER_LEVEL 30 -#define HIGH_LEVEL 31 -#define CLOCK_LEVEL CLOCK2_LEVEL - -#define KIP0PCRADDRESS 0xffdff000 -#define KI_USER_SHARED_DATA 0xffdf0000 -#define SharedUserData ((KUSER_SHARED_DATA * CONST)KI_USER_SHARED_DATA) - -#define PAGE_SIZE 0x1000 -#define PAGE_SHIFT 12L -#define KeGetDcacheFillSize() 1L - -#define EFLAG_SIGN 0x8000 -#define EFLAG_ZERO 0x4000 -#define EFLAG_SELECT (EFLAG_SIGN | EFLAG_ZERO) - -#define RESULT_NEGATIVE ((EFLAG_SIGN & ~EFLAG_ZERO) & EFLAG_SELECT) -#define RESULT_ZERO ((~EFLAG_SIGN & EFLAG_ZERO) & EFLAG_SELECT) -#define RESULT_POSITIVE ((~EFLAG_SIGN & ~EFLAG_ZERO) & EFLAG_SELECT) - - -typedef struct _KFLOATING_SAVE { - ULONG ControlWord; - ULONG StatusWord; - ULONG ErrorOffset; - ULONG ErrorSelector; - ULONG DataOffset; - ULONG DataSelector; - ULONG Cr0NpxState; - ULONG Spare1; -} KFLOATING_SAVE, *PKFLOATING_SAVE; - -extern NTKERNELAPI volatile KSYSTEM_TIME KeTickCount; - -#define YieldProcessor _mm_pause - -FORCEINLINE -VOID -KeMemoryBarrier(VOID) -{ - volatile LONG Barrier; -#if defined(__GNUC__) - __asm__ __volatile__ ("xchg %%eax, %0" : : "m" (Barrier) : "%eax"); -#elif defined(_MSC_VER) - __asm xchg [Barrier], eax -#endif -} - -NTHALAPI -KIRQL -NTAPI -KeGetCurrentIrql(VOID); - -NTHALAPI -VOID -FASTCALL -KfLowerIrql( - IN KIRQL NewIrql); -#define KeLowerIrql(a) KfLowerIrql(a) - -NTHALAPI -KIRQL -FASTCALL -KfRaiseIrql( - IN KIRQL NewIrql); -#define KeRaiseIrql(a,b) *(b) = KfRaiseIrql(a) - -NTHALAPI -KIRQL -NTAPI -KeRaiseIrqlToDpcLevel(VOID); - -NTHALAPI -KIRQL -NTAPI -KeRaiseIrqlToSynchLevel(VOID); - -NTHALAPI -KIRQL -FASTCALL -KfAcquireSpinLock( - IN OUT PKSPIN_LOCK SpinLock); -#define KeAcquireSpinLock(a,b) *(b) = KfAcquireSpinLock(a) - -NTHALAPI -VOID -FASTCALL -KfReleaseSpinLock( - IN OUT PKSPIN_LOCK SpinLock, - IN KIRQL NewIrql); -#define KeReleaseSpinLock(a,b) KfReleaseSpinLock(a,b) - -NTKERNELAPI -VOID -FASTCALL -KefAcquireSpinLockAtDpcLevel( - IN OUT PKSPIN_LOCK SpinLock); -#define KeAcquireSpinLockAtDpcLevel(SpinLock) KefAcquireSpinLockAtDpcLevel(SpinLock) - -NTKERNELAPI -VOID -FASTCALL -KefReleaseSpinLockFromDpcLevel( - IN OUT PKSPIN_LOCK SpinLock); -#define KeReleaseSpinLockFromDpcLevel(SpinLock) KefReleaseSpinLockFromDpcLevel(SpinLock) - -NTSYSAPI -PKTHREAD -NTAPI -KeGetCurrentThread(VOID); - -NTKERNELAPI -NTSTATUS -NTAPI -KeSaveFloatingPointState( - OUT PKFLOATING_SAVE FloatSave); - -NTKERNELAPI -NTSTATUS -NTAPI -KeRestoreFloatingPointState( - IN PKFLOATING_SAVE FloatSave); - -/* VOID - * KeFlushIoBuffers( - * IN PMDL Mdl, - * IN BOOLEAN ReadOperation, - * IN BOOLEAN DmaOperation) - */ -#define KeFlushIoBuffers(_Mdl, _ReadOperation, _DmaOperation) - -/* x86 and x64 performs a 0x2C interrupt */ -#define DbgRaiseAssertionFailure __int2c - -FORCEINLINE -VOID -_KeQueryTickCount( - OUT PLARGE_INTEGER CurrentCount) -{ - for (;;) { - CurrentCount->HighPart = KeTickCount.High1Time; - CurrentCount->LowPart = KeTickCount.LowPart; - if (CurrentCount->HighPart == KeTickCount.High2Time) break; - YieldProcessor(); - } -} -#define KeQueryTickCount(CurrentCount) _KeQueryTickCount(CurrentCount) - -$endif /* _WDMDDK_ */ -$if (_NTDDK_) - -#define PAUSE_PROCESSOR YieldProcessor(); - -#define KERNEL_STACK_SIZE 12288 -#define KERNEL_LARGE_STACK_SIZE 61440 -#define KERNEL_LARGE_STACK_COMMIT 12288 - -#define SIZE_OF_80387_REGISTERS 80 - -#if !defined(RC_INVOKED) - -#define CONTEXT_i386 0x10000 -#define CONTEXT_i486 0x10000 -#define CONTEXT_CONTROL (CONTEXT_i386|0x00000001L) -#define CONTEXT_INTEGER (CONTEXT_i386|0x00000002L) -#define CONTEXT_SEGMENTS (CONTEXT_i386|0x00000004L) -#define CONTEXT_FLOATING_POINT (CONTEXT_i386|0x00000008L) -#define CONTEXT_DEBUG_REGISTERS (CONTEXT_i386|0x00000010L) -#define CONTEXT_EXTENDED_REGISTERS (CONTEXT_i386|0x00000020L) - -#define CONTEXT_FULL (CONTEXT_CONTROL|CONTEXT_INTEGER|CONTEXT_SEGMENTS) -#define CONTEXT_ALL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS | \ - CONTEXT_FLOATING_POINT | CONTEXT_DEBUG_REGISTERS | \ - CONTEXT_EXTENDED_REGISTERS) - -#define CONTEXT_XSTATE (CONTEXT_i386 | 0x00000040L) - -#endif /* !defined(RC_INVOKED) */ - -typedef struct _FLOATING_SAVE_AREA { - ULONG ControlWord; - ULONG StatusWord; - ULONG TagWord; - ULONG ErrorOffset; - ULONG ErrorSelector; - ULONG DataOffset; - ULONG DataSelector; - UCHAR RegisterArea[SIZE_OF_80387_REGISTERS]; - ULONG Cr0NpxState; -} FLOATING_SAVE_AREA, *PFLOATING_SAVE_AREA; - -#include "pshpack4.h" -typedef struct _CONTEXT { - ULONG ContextFlags; - ULONG Dr0; - ULONG Dr1; - ULONG Dr2; - ULONG Dr3; - ULONG Dr6; - ULONG Dr7; - FLOATING_SAVE_AREA FloatSave; - ULONG SegGs; - ULONG SegFs; - ULONG SegEs; - ULONG SegDs; - ULONG Edi; - ULONG Esi; - ULONG Ebx; - ULONG Edx; - ULONG Ecx; - ULONG Eax; - ULONG Ebp; - ULONG Eip; - ULONG SegCs; - ULONG EFlags; - ULONG Esp; - ULONG SegSs; - UCHAR ExtendedRegisters[MAXIMUM_SUPPORTED_EXTENSION]; -} CONTEXT; -#include "poppack.h" - -#define KeGetPcr() PCR - -#define PCR_MINOR_VERSION 1 -#define PCR_MAJOR_VERSION 1 - -typedef struct _KPCR { - union { - NT_TIB NtTib; - struct { - struct _EXCEPTION_REGISTRATION_RECORD *Used_ExceptionList; - PVOID Used_StackBase; - PVOID Spare2; - PVOID TssCopy; - ULONG ContextSwitches; - KAFFINITY SetMemberCopy; - PVOID Used_Self; - }; - }; - struct _KPCR *SelfPcr; - struct _KPRCB *Prcb; - KIRQL Irql; - ULONG IRR; - ULONG IrrActive; - ULONG IDR; - PVOID KdVersionBlock; - struct _KIDTENTRY *IDT; - struct _KGDTENTRY *GDT; - struct _KTSS *TSS; - USHORT MajorVersion; - USHORT MinorVersion; - KAFFINITY SetMember; - ULONG StallScaleFactor; - UCHAR SpareUnused; - UCHAR Number; - UCHAR Spare0; - UCHAR SecondLevelCacheAssociativity; - ULONG VdmAlert; - ULONG KernelReserved[14]; - ULONG SecondLevelCacheSize; - ULONG HalReserved[16]; -} KPCR, *PKPCR; - -FORCEINLINE -ULONG -KeGetCurrentProcessorNumber(VOID) -{ - return (ULONG)__readfsbyte(FIELD_OFFSET(KPCR, Number)); -} - -$endif /* _NTDDK_ */ - - - - diff --git a/reactos/include/xdk/x86/mm.h b/reactos/include/xdk/x86/mm.h deleted file mode 100644 index d2cddd13701..00000000000 --- a/reactos/include/xdk/x86/mm.h +++ /dev/null @@ -1,24 +0,0 @@ -$if (_NTDDK_) - -extern NTKERNELAPI PVOID MmHighestUserAddress; -extern NTKERNELAPI PVOID MmSystemRangeStart; -extern NTKERNELAPI ULONG MmUserProbeAddress; - -#define MM_HIGHEST_USER_ADDRESS MmHighestUserAddress -#define MM_SYSTEM_RANGE_START MmSystemRangeStart -#if defined(_LOCAL_COPY_USER_PROBE_ADDRESS_) -#define MM_USER_PROBE_ADDRESS _LOCAL_COPY_USER_PROBE_ADDRESS_ -extern ULONG _LOCAL_COPY_USER_PROBE_ADDRESS_; -#else -#define MM_USER_PROBE_ADDRESS MmUserProbeAddress -#endif -#define MM_LOWEST_USER_ADDRESS (PVOID)0x10000 -#define MM_KSEG0_BASE MM_SYSTEM_RANGE_START -#define MM_SYSTEM_SPACE_END 0xFFFFFFFF -#if !defined (_X86PAE_) -#define MM_LOWEST_SYSTEM_ADDRESS (PVOID)0xC0800000 -#else -#define MM_LOWEST_SYSTEM_ADDRESS (PVOID)0xC0C00000 -#endif - -$endif /* _NTDDK_ */ diff --git a/reactos/include/xdk/zwfuncs.h b/reactos/include/xdk/zwfuncs.h deleted file mode 100644 index 3299df523ee..00000000000 --- a/reactos/include/xdk/zwfuncs.h +++ /dev/null @@ -1,820 +0,0 @@ -/****************************************************************************** - * ZwXxx Functions * - ******************************************************************************/ - -$if (_WDMDDK_) - -/* Constants */ -#define NtCurrentProcess() ( (HANDLE)(LONG_PTR) -1 ) -#define ZwCurrentProcess() NtCurrentProcess() -#define NtCurrentThread() ( (HANDLE)(LONG_PTR) -2 ) -#define ZwCurrentThread() NtCurrentThread() - -$endif - -$if (_NTDDK_) - -NTSYSAPI -NTSTATUS -NTAPI -ZwAllocateLocallyUniqueId( - OUT PLUID Luid); - -NTSYSAPI -NTSTATUS -NTAPI -ZwTerminateProcess( - IN HANDLE ProcessHandle OPTIONAL, - IN NTSTATUS ExitStatus); - -NTSYSAPI -NTSTATUS -NTAPI -ZwOpenProcess( - OUT PHANDLE ProcessHandle, - IN ACCESS_MASK DesiredAccess, - IN POBJECT_ATTRIBUTES ObjectAttributes, - IN PCLIENT_ID ClientId OPTIONAL); - -$endif - -#if (NTDDI_VERSION >= NTDDI_WIN2K) - -$if (_NTDDK_) - -NTSTATUS -NTAPI -ZwCancelTimer( - IN HANDLE TimerHandle, - OUT PBOOLEAN CurrentState OPTIONAL); - -NTSTATUS -NTAPI -ZwCreateTimer( - OUT PHANDLE TimerHandle, - IN ACCESS_MASK DesiredAccess, - IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, - IN TIMER_TYPE TimerType); - -NTSTATUS -NTAPI -ZwOpenTimer( - OUT PHANDLE TimerHandle, - IN ACCESS_MASK DesiredAccess, - IN POBJECT_ATTRIBUTES ObjectAttributes); - -NTSYSAPI -NTSTATUS -NTAPI -ZwSetInformationThread( - IN HANDLE ThreadHandle, - IN THREADINFOCLASS ThreadInformationClass, - IN PVOID ThreadInformation, - IN ULONG ThreadInformationLength); - -NTSTATUS -NTAPI -ZwSetTimer( - IN HANDLE TimerHandle, - IN PLARGE_INTEGER DueTime, - IN PTIMER_APC_ROUTINE TimerApcRoutine OPTIONAL, - IN PVOID TimerContext OPTIONAL, - IN BOOLEAN ResumeTimer, - IN LONG Period OPTIONAL, - OUT PBOOLEAN PreviousState OPTIONAL); - -NTSYSAPI -NTSTATUS -NTAPI -ZwDisplayString( - IN PUNICODE_STRING String); - -NTSYSAPI -NTSTATUS -NTAPI -ZwPowerInformation( - IN POWER_INFORMATION_LEVEL PowerInformationLevel, - IN PVOID InputBuffer OPTIONAL, - IN ULONG InputBufferLength, - OUT PVOID OutputBuffer OPTIONAL, - IN ULONG OutputBufferLength); - -NTSYSAPI -NTSTATUS -NTAPI -ZwQueryVolumeInformationFile( - IN HANDLE FileHandle, - OUT PIO_STATUS_BLOCK IoStatusBlock, - OUT PVOID FsInformation, - IN ULONG Length, - IN FS_INFORMATION_CLASS FsInformationClass); - -NTSYSAPI -NTSTATUS -NTAPI -ZwDeviceIoControlFile( - IN HANDLE FileHandle, - IN HANDLE Event OPTIONAL, - IN PIO_APC_ROUTINE ApcRoutine OPTIONAL, - IN PVOID ApcContext OPTIONAL, - OUT PIO_STATUS_BLOCK IoStatusBlock, - IN ULONG IoControlCode, - IN PVOID InputBuffer OPTIONAL, - IN ULONG InputBufferLength, - OUT PVOID OutputBuffer OPTIONAL, - IN ULONG OutputBufferLength); - -$endif - -$if (_WDMDDK_) - -NTSYSAPI -NTSTATUS -NTAPI -ZwClose( - IN HANDLE Handle); - -NTSYSAPI -NTSTATUS -NTAPI -ZwCreateDirectoryObject( - OUT PHANDLE DirectoryHandle, - IN ACCESS_MASK DesiredAccess, - IN POBJECT_ATTRIBUTES ObjectAttributes); - -NTSYSAPI -NTSTATUS -NTAPI -ZwCreateFile( - OUT PHANDLE FileHandle, - IN ACCESS_MASK DesiredAccess, - IN POBJECT_ATTRIBUTES ObjectAttributes, - OUT PIO_STATUS_BLOCK IoStatusBlock, - IN PLARGE_INTEGER AllocationSize OPTIONAL, - IN ULONG FileAttributes, - IN ULONG ShareAccess, - IN ULONG CreateDisposition, - IN ULONG CreateOptions, - IN PVOID EaBuffer OPTIONAL, - IN ULONG EaLength); - -NTSYSAPI -NTSTATUS -NTAPI -ZwCreateKey( - OUT PHANDLE KeyHandle, - IN ACCESS_MASK DesiredAccess, - IN POBJECT_ATTRIBUTES ObjectAttributes, - IN ULONG TitleIndex, - IN PUNICODE_STRING Class OPTIONAL, - IN ULONG CreateOptions, - OUT PULONG Disposition OPTIONAL); - -NTSYSAPI -NTSTATUS -NTAPI -ZwCreateSection( - OUT PHANDLE SectionHandle, - IN ACCESS_MASK DesiredAccess, - IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, - IN PLARGE_INTEGER MaximumSize OPTIONAL, - IN ULONG SectionPageProtection, - IN ULONG AllocationAttributes, - IN HANDLE FileHandle OPTIONAL); - -NTSYSAPI -NTSTATUS -NTAPI -ZwDeleteKey( - IN HANDLE KeyHandle); - -NTSYSAPI -NTSTATUS -NTAPI -ZwDeleteValueKey( - IN HANDLE KeyHandle, - IN PUNICODE_STRING ValueName); - -NTSYSAPI -NTSTATUS -NTAPI -ZwEnumerateKey( - IN HANDLE KeyHandle, - IN ULONG Index, - IN KEY_INFORMATION_CLASS KeyInformationClass, - OUT PVOID KeyInformation OPTIONAL, - IN ULONG Length, - OUT PULONG ResultLength); - -NTSYSAPI -NTSTATUS -NTAPI -ZwEnumerateValueKey( - IN HANDLE KeyHandle, - IN ULONG Index, - IN KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass, - OUT PVOID KeyValueInformation OPTIONAL, - IN ULONG Length, - OUT PULONG ResultLength); - -NTSYSAPI -NTSTATUS -NTAPI -ZwFlushKey( - IN HANDLE KeyHandle); - -NTSYSAPI -NTSTATUS -NTAPI -ZwLoadDriver( - IN PUNICODE_STRING DriverServiceName); - -NTSYSAPI -NTSTATUS -NTAPI -ZwMakeTemporaryObject( - IN HANDLE Handle); - -NTSYSAPI -NTSTATUS -NTAPI -ZwMapViewOfSection( - IN HANDLE SectionHandle, - IN HANDLE ProcessHandle, - IN OUT PVOID *BaseAddress, - IN ULONG_PTR ZeroBits, - IN SIZE_T CommitSize, - IN OUT PLARGE_INTEGER SectionOffset OPTIONAL, - IN OUT PSIZE_T ViewSize, - IN SECTION_INHERIT InheritDisposition, - IN ULONG AllocationType, - IN ULONG Protect); - -NTSYSAPI -NTSTATUS -NTAPI -ZwOpenFile( - OUT PHANDLE FileHandle, - IN ACCESS_MASK DesiredAccess, - IN POBJECT_ATTRIBUTES ObjectAttributes, - OUT PIO_STATUS_BLOCK IoStatusBlock, - IN ULONG ShareAccess, - IN ULONG OpenOptions); - -NTSYSAPI -NTSTATUS -NTAPI -ZwOpenKey( - OUT PHANDLE KeyHandle, - IN ACCESS_MASK DesiredAccess, - IN POBJECT_ATTRIBUTES ObjectAttributes); - -NTSYSAPI -NTSTATUS -NTAPI -ZwOpenSection( - OUT PHANDLE SectionHandle, - IN ACCESS_MASK DesiredAccess, - IN POBJECT_ATTRIBUTES ObjectAttributes); - -NTSYSAPI -NTSTATUS -NTAPI -ZwOpenSymbolicLinkObject( - OUT PHANDLE LinkHandle, - IN ACCESS_MASK DesiredAccess, - IN POBJECT_ATTRIBUTES ObjectAttributes); - -NTSYSAPI -NTSTATUS -NTAPI -ZwQueryInformationFile( - IN HANDLE FileHandle, - OUT PIO_STATUS_BLOCK IoStatusBlock, - OUT PVOID FileInformation, - IN ULONG Length, - IN FILE_INFORMATION_CLASS FileInformationClass); - -NTSYSAPI -NTSTATUS -NTAPI -ZwQueryKey( - IN HANDLE KeyHandle, - IN KEY_INFORMATION_CLASS KeyInformationClass, - OUT PVOID KeyInformation OPTIONAL, - IN ULONG Length, - OUT PULONG ResultLength); - -NTSYSAPI -NTSTATUS -NTAPI -ZwQuerySymbolicLinkObject( - IN HANDLE LinkHandle, - IN OUT PUNICODE_STRING LinkTarget, - OUT PULONG ReturnedLength OPTIONAL); - -NTSYSAPI -NTSTATUS -NTAPI -ZwQueryValueKey( - IN HANDLE KeyHandle, - IN PUNICODE_STRING ValueName, - IN KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass, - OUT PVOID KeyValueInformation OPTIONAL, - IN ULONG Length, - OUT PULONG ResultLength); - -NTSYSAPI -NTSTATUS -NTAPI -ZwReadFile( - IN HANDLE FileHandle, - IN HANDLE Event OPTIONAL, - IN PIO_APC_ROUTINE ApcRoutine OPTIONAL, - IN PVOID ApcContext OPTIONAL, - OUT PIO_STATUS_BLOCK IoStatusBlock, - OUT PVOID Buffer, - IN ULONG Length, - IN PLARGE_INTEGER ByteOffset OPTIONAL, - IN PULONG Key OPTIONAL); - -NTSYSAPI -NTSTATUS -NTAPI -ZwSetInformationFile( - IN HANDLE FileHandle, - OUT PIO_STATUS_BLOCK IoStatusBlock, - IN PVOID FileInformation, - IN ULONG Length, - IN FILE_INFORMATION_CLASS FileInformationClass); - -NTSYSAPI -NTSTATUS -NTAPI -ZwSetValueKey( - IN HANDLE KeyHandle, - IN PUNICODE_STRING ValueName, - IN ULONG TitleIndex OPTIONAL, - IN ULONG Type, - IN PVOID Data OPTIONAL, - IN ULONG DataSize); - -NTSYSAPI -NTSTATUS -NTAPI -ZwUnloadDriver( - IN PUNICODE_STRING DriverServiceName); - -NTSYSAPI -NTSTATUS -NTAPI -ZwUnmapViewOfSection( - IN HANDLE ProcessHandle, - IN PVOID BaseAddress OPTIONAL); - -NTSYSAPI -NTSTATUS -NTAPI -ZwWriteFile( - IN HANDLE FileHandle, - IN HANDLE Event OPTIONAL, - IN PIO_APC_ROUTINE ApcRoutine OPTIONAL, - IN PVOID ApcContext OPTIONAL, - OUT PIO_STATUS_BLOCK IoStatusBlock, - IN PVOID Buffer, - IN ULONG Length, - IN PLARGE_INTEGER ByteOffset OPTIONAL, - IN PULONG Key OPTIONAL); - -NTSYSAPI -NTSTATUS -NTAPI -ZwQueryFullAttributesFile( - IN POBJECT_ATTRIBUTES ObjectAttributes, - OUT PFILE_NETWORK_OPEN_INFORMATION FileInformation); - -$endif - -#endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */ - -$if (_WDMDDK_) - -#if (NTDDI_VERSION >= NTDDI_WS03) -NTSYSCALLAPI -NTSTATUS -NTAPI -ZwOpenEvent( - OUT PHANDLE EventHandle, - IN ACCESS_MASK DesiredAccess, - IN POBJECT_ATTRIBUTES ObjectAttributes); -#endif - -#if (NTDDI_VERSION >= NTDDI_VISTA) - -NTSYSAPI -NTSTATUS -ZwCreateKeyTransacted( - OUT PHANDLE KeyHandle, - IN ACCESS_MASK DesiredAccess, - IN POBJECT_ATTRIBUTES ObjectAttributes, - IN ULONG TitleIndex, - IN PUNICODE_STRING Class OPTIONAL, - IN ULONG CreateOptions, - IN HANDLE TransactionHandle, - OUT PULONG Disposition OPTIONAL); - -NTSYSAPI -NTSTATUS -NTAPI -ZwOpenKeyTransacted( - OUT PHANDLE KeyHandle, - IN ACCESS_MASK DesiredAccess, - IN POBJECT_ATTRIBUTES ObjectAttributes, - IN HANDLE TransactionHandle); - -NTSYSCALLAPI -NTSTATUS -NTAPI -ZwCreateTransactionManager( - OUT PHANDLE TmHandle, - IN ACCESS_MASK DesiredAccess, - IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, - IN PUNICODE_STRING LogFileName OPTIONAL, - IN ULONG CreateOptions OPTIONAL, - IN ULONG CommitStrength OPTIONAL); - -NTSYSCALLAPI -NTSTATUS -NTAPI -ZwOpenTransactionManager( - OUT PHANDLE TmHandle, - IN ACCESS_MASK DesiredAccess, - IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, - IN PUNICODE_STRING LogFileName OPTIONAL, - IN LPGUID TmIdentity OPTIONAL, - IN ULONG OpenOptions OPTIONAL); - -NTSYSCALLAPI -NTSTATUS -NTAPI -ZwRollforwardTransactionManager( - IN HANDLE TransactionManagerHandle, - IN PLARGE_INTEGER TmVirtualClock OPTIONAL); - -NTSYSCALLAPI -NTSTATUS -NTAPI -ZwRecoverTransactionManager( - IN HANDLE TransactionManagerHandle); - -NTSYSCALLAPI -NTSTATUS -NTAPI -ZwQueryInformationTransactionManager( - IN HANDLE TransactionManagerHandle, - IN TRANSACTIONMANAGER_INFORMATION_CLASS TransactionManagerInformationClass, - OUT PVOID TransactionManagerInformation, - IN ULONG TransactionManagerInformationLength, - OUT PULONG ReturnLength OPTIONAL); - -NTSYSCALLAPI -NTSTATUS -NTAPI -ZwSetInformationTransactionManager( - IN HANDLE TmHandle, - IN TRANSACTIONMANAGER_INFORMATION_CLASS TransactionManagerInformationClass, - IN PVOID TransactionManagerInformation, - IN ULONG TransactionManagerInformationLength); - -NTSYSCALLAPI -NTSTATUS -NTAPI -ZwEnumerateTransactionObject( - IN HANDLE RootObjectHandle OPTIONAL, - IN KTMOBJECT_TYPE QueryType, - IN OUT PKTMOBJECT_CURSOR ObjectCursor, - IN ULONG ObjectCursorLength, - OUT PULONG ReturnLength); - -NTSYSCALLAPI -NTSTATUS -NTAPI -ZwCreateTransaction( - OUT PHANDLE TransactionHandle, - IN ACCESS_MASK DesiredAccess, - IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, - IN LPGUID Uow OPTIONAL, - IN HANDLE TmHandle OPTIONAL, - IN ULONG CreateOptions OPTIONAL, - IN ULONG IsolationLevel OPTIONAL, - IN ULONG IsolationFlags OPTIONAL, - IN PLARGE_INTEGER Timeout OPTIONAL, - IN PUNICODE_STRING Description OPTIONAL); - -NTSYSCALLAPI -NTSTATUS -NTAPI -ZwOpenTransaction( - OUT PHANDLE TransactionHandle, - IN ACCESS_MASK DesiredAccess, - IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, - IN LPGUID Uow, - IN HANDLE TmHandle OPTIONAL); - -NTSYSCALLAPI -NTSTATUS -NTAPI -ZwQueryInformationTransaction( - IN HANDLE TransactionHandle, - IN TRANSACTION_INFORMATION_CLASS TransactionInformationClass, - OUT PVOID TransactionInformation, - IN ULONG TransactionInformationLength, - OUT PULONG ReturnLength OPTIONAL); - -NTSYSCALLAPI -NTSTATUS -NTAPI -ZwSetInformationTransaction( - IN HANDLE TransactionHandle, - IN TRANSACTION_INFORMATION_CLASS TransactionInformationClass, - IN PVOID TransactionInformation, - IN ULONG TransactionInformationLength); - -NTSYSCALLAPI -NTSTATUS -NTAPI -ZwCommitTransaction( - IN HANDLE TransactionHandle, - IN BOOLEAN Wait); - -NTSYSCALLAPI -NTSTATUS -NTAPI -ZwRollbackTransaction( - IN HANDLE TransactionHandle, - IN BOOLEAN Wait); - -NTSYSCALLAPI -NTSTATUS -NTAPI -ZwCreateResourceManager( - OUT PHANDLE ResourceManagerHandle, - IN ACCESS_MASK DesiredAccess, - IN HANDLE TmHandle, - IN LPGUID ResourceManagerGuid OPTIONAL, - IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, - IN ULONG CreateOptions OPTIONAL, - IN PUNICODE_STRING Description OPTIONAL); - -NTSYSCALLAPI -NTSTATUS -NTAPI -ZwOpenResourceManager( - OUT PHANDLE ResourceManagerHandle, - IN ACCESS_MASK DesiredAccess, - IN HANDLE TmHandle, - IN LPGUID ResourceManagerGuid, - IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL); - -NTSYSCALLAPI -NTSTATUS -NTAPI -ZwRecoverResourceManager( - IN HANDLE ResourceManagerHandle); - -NTSYSCALLAPI -NTSTATUS -NTAPI -ZwGetNotificationResourceManager( - IN HANDLE ResourceManagerHandle, - OUT PTRANSACTION_NOTIFICATION TransactionNotification, - IN ULONG NotificationLength, - IN PLARGE_INTEGER Timeout, - IN PULONG ReturnLength OPTIONAL, - IN ULONG Asynchronous, - IN ULONG_PTR AsynchronousContext OPTIONAL); - -NTSYSCALLAPI -NTSTATUS -NTAPI -ZwQueryInformationResourceManager( - IN HANDLE ResourceManagerHandle, - IN RESOURCEMANAGER_INFORMATION_CLASS ResourceManagerInformationClass, - OUT PVOID ResourceManagerInformation, - IN ULONG ResourceManagerInformationLength, - IN PULONG ReturnLength OPTIONAL); - -NTSYSCALLAPI -NTSTATUS -NTAPI -ZwSetInformationResourceManager( - IN HANDLE ResourceManagerHandle, - IN RESOURCEMANAGER_INFORMATION_CLASS ResourceManagerInformationClass, - IN PVOID ResourceManagerInformation, - IN ULONG ResourceManagerInformationLength); - -NTSYSCALLAPI -NTSTATUS -NTAPI -ZwCreateEnlistment( - OUT PHANDLE EnlistmentHandle, - IN ACCESS_MASK DesiredAccess, - IN HANDLE ResourceManagerHandle, - IN HANDLE TransactionHandle, - IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, - IN ULONG CreateOptions OPTIONAL, - IN NOTIFICATION_MASK NotificationMask, - IN PVOID EnlistmentKey OPTIONAL); - -NTSYSCALLAPI -NTSTATUS -NTAPI -ZwOpenEnlistment( - OUT PHANDLE EnlistmentHandle, - IN ACCESS_MASK DesiredAccess, - IN HANDLE RmHandle, - IN LPGUID EnlistmentGuid, - IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL); - -NTSYSCALLAPI -NTSTATUS -NTAPI -ZwQueryInformationEnlistment( - IN HANDLE EnlistmentHandle, - IN ENLISTMENT_INFORMATION_CLASS EnlistmentInformationClass, - OUT PVOID EnlistmentInformation, - IN ULONG EnlistmentInformationLength, - IN PULONG ReturnLength OPTIONAL); - -NTSYSCALLAPI -NTSTATUS -NTAPI -ZwSetInformationEnlistment( - IN HANDLE EnlistmentHandle, - IN ENLISTMENT_INFORMATION_CLASS EnlistmentInformationClass, - IN PVOID EnlistmentInformation, - IN ULONG EnlistmentInformationLength); - -NTSYSCALLAPI -NTSTATUS -NTAPI -ZwRecoverEnlistment( - IN HANDLE EnlistmentHandle, - IN PVOID EnlistmentKey OPTIONAL); - -NTSYSCALLAPI -NTSTATUS -NTAPI -ZwPrePrepareEnlistment( - IN HANDLE EnlistmentHandle, - IN PLARGE_INTEGER TmVirtualClock OPTIONAL); - -NTSYSCALLAPI -NTSTATUS -NTAPI -ZwPrepareEnlistment( - IN HANDLE EnlistmentHandle, - IN PLARGE_INTEGER TmVirtualClock OPTIONAL); - -NTSYSCALLAPI -NTSTATUS -NTAPI -ZwCommitEnlistment( - IN HANDLE EnlistmentHandle, - IN PLARGE_INTEGER TmVirtualClock OPTIONAL); - -NTSYSCALLAPI -NTSTATUS -NTAPI -ZwRollbackEnlistment( - IN HANDLE EnlistmentHandle, - IN PLARGE_INTEGER TmVirtualClock OPTIONAL); - -NTSYSCALLAPI -NTSTATUS -NTAPI -ZwPrePrepareComplete( - IN HANDLE EnlistmentHandle, - IN PLARGE_INTEGER TmVirtualClock OPTIONAL); - -NTSYSCALLAPI -NTSTATUS -NTAPI -ZwPrepareComplete( - IN HANDLE EnlistmentHandle, - IN PLARGE_INTEGER TmVirtualClock OPTIONAL); - -NTSYSCALLAPI -NTSTATUS -NTAPI -ZwCommitComplete( - IN HANDLE EnlistmentHandle, - IN PLARGE_INTEGER TmVirtualClock OPTIONAL); - -NTSYSCALLAPI -NTSTATUS -NTAPI -ZwReadOnlyEnlistment( - IN HANDLE EnlistmentHandle, - IN PLARGE_INTEGER TmVirtualClock OPTIONAL); - -NTSYSCALLAPI -NTSTATUS -NTAPI -ZwRollbackComplete( - IN HANDLE EnlistmentHandle, - IN PLARGE_INTEGER TmVirtualClock OPTIONAL); - -NTSYSCALLAPI -NTSTATUS -NTAPI -ZwSinglePhaseReject( - IN HANDLE EnlistmentHandle, - IN PLARGE_INTEGER TmVirtualClock OPTIONAL); - - -#endif /* (NTDDI_VERSION >= NTDDI_VISTA) */ - -$endif - -#if (NTDDI_VERSION >= NTDDI_WIN7) - -$if (_NTDDK_) -NTSTATUS -NTAPI -ZwSetTimerEx( - IN HANDLE TimerHandle, - IN TIMER_SET_INFORMATION_CLASS TimerSetInformationClass, - IN OUT PVOID TimerSetInformation, - IN ULONG TimerSetInformationLength); -$endif - -$if (_WDMDDK_) - -NTSYSAPI -NTSTATUS -NTAPI -ZwOpenKeyEx( - OUT PHANDLE KeyHandle, - IN ACCESS_MASK DesiredAccess, - IN POBJECT_ATTRIBUTES ObjectAttributes, - IN ULONG OpenOptions); - -NTSYSAPI -NTSTATUS -NTAPI -ZwOpenKeyTransactedEx( - OUT PHANDLE KeyHandle, - IN ACCESS_MASK DesiredAccess, - IN POBJECT_ATTRIBUTES ObjectAttributes, - IN ULONG OpenOptions, - IN HANDLE TransactionHandle); - -NTSYSAPI -NTSTATUS -NTAPI -ZwNotifyChangeMultipleKeys( - IN HANDLE MasterKeyHandle, - IN ULONG Count OPTIONAL, - IN OBJECT_ATTRIBUTES SubordinateObjects[] OPTIONAL, - IN HANDLE Event OPTIONAL, - IN PIO_APC_ROUTINE ApcRoutine OPTIONAL, - IN PVOID ApcContext OPTIONAL, - OUT PIO_STATUS_BLOCK IoStatusBlock, - IN ULONG CompletionFilter, - IN BOOLEAN WatchTree, - OUT PVOID Buffer OPTIONAL, - IN ULONG BufferSize, - IN BOOLEAN Asynchronous); - -NTSYSAPI -NTSTATUS -NTAPI -ZwQueryMultipleValueKey( - IN HANDLE KeyHandle, - IN OUT PKEY_VALUE_ENTRY ValueEntries, - IN ULONG EntryCount, - OUT PVOID ValueBuffer, - IN OUT PULONG BufferLength, - OUT PULONG RequiredBufferLength OPTIONAL); - -NTSYSAPI -NTSTATUS -NTAPI -ZwRenameKey( - IN HANDLE KeyHandle, - IN PUNICODE_STRING NewName); - -NTSYSAPI -NTSTATUS -NTAPI -ZwSetInformationKey( - IN HANDLE KeyHandle, - IN KEY_SET_INFORMATION_CLASS KeySetInformationClass, - IN PVOID KeySetInformation, - IN ULONG KeySetInformationLength); - -$endif - -#endif /* (NTDDI_VERSION >= NTDDI_WIN7) */ - diff --git a/reactos/ntoskrnl/include/ntoskrnl.h b/reactos/ntoskrnl/include/ntoskrnl.h index 3b56d34afac..f1052ed38df 100644 --- a/reactos/ntoskrnl/include/ntoskrnl.h +++ b/reactos/ntoskrnl/include/ntoskrnl.h @@ -19,6 +19,7 @@ /* DDK/IFS/NDK Headers */ #define _REALLY_GET_CALLERS_CALLER +#define SINGLE_GROUP_LEGACY_API #include #include #include diff --git a/reactos/ntoskrnl/mm/mminit.c b/reactos/ntoskrnl/mm/mminit.c index 8a9fd4297c3..6a3492415c0 100644 --- a/reactos/ntoskrnl/mm/mminit.c +++ b/reactos/ntoskrnl/mm/mminit.c @@ -48,7 +48,7 @@ MemType[] = "LoaderXIPRom " }; -BOOLEAN Mm64BitPhysicalAddress = FALSE; +PBOOLEAN Mm64BitPhysicalAddress = FALSE; ULONG MmReadClusterSize; // // 0 | 1 is on/off paging, 2 is undocumented diff --git a/reactos/subsystems/subsystems.rbuild b/reactos/subsystems/subsystems.rbuild index 3bbdd8c4034..8dc879444d4 100644 --- a/reactos/subsystems/subsystems.rbuild +++ b/reactos/subsystems/subsystems.rbuild @@ -2,9 +2,9 @@ - - - + + + diff --git a/reactos/subsystems/win32/win32k/pch.h b/reactos/subsystems/win32/win32k/pch.h index 4bbbeb9c148..3eae2acdda9 100644 --- a/reactos/subsystems/win32/win32k/pch.h +++ b/reactos/subsystems/win32/win32k/pch.h @@ -13,11 +13,11 @@ #define _NO_COM /* DDK/NDK/SDK Headers */ -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include /* Win32 Headers */ /* FIXME: Defines in winbase.h that we need... */ -- 2.17.1