mirror of
https://github.com/ApfelTeeSaft/reactos.git
synced 2026-09-02 19:26:32 +00:00
Sync with trunk r63270.
svn path=/branches/shell-experiments/; revision=63271
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
/*
|
||||
* isvbop.h
|
||||
*
|
||||
* Windows NT Device Driver Kit
|
||||
*
|
||||
* This file is part of the ReactOS DDK package.
|
||||
*
|
||||
* Contributors:
|
||||
* Hermes Belusca-Maito ([email protected])
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* The corresponding ASM header of this file is isvbop.inc.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
/* BOP Identifiers */
|
||||
#define BOP_3RDPARTY 0x58 // 3rd-party VDD BOP
|
||||
#define BOP_UNSIMULATE 0xFE // Stop execution
|
||||
|
||||
#if defined(__GNUC__)
|
||||
|
||||
#define RegisterModule() __asm__(".byte 0xC4, 0xC4, %c0, 0" : : "i"(BOP_3RDPARTY))
|
||||
#define UnRegisterModule() __asm__(".byte 0xC4, 0xC4, %c0, 1" : : "i"(BOP_3RDPARTY))
|
||||
#define DispatchCall() __asm__(".byte 0xC4, 0xC4, %c0, 2" : : "i"(BOP_3RDPARTY))
|
||||
#define VDDUnSimulate16() __asm__(".byte 0xC4, 0xC4, %c0" : : "i"(BOP_UNSIMULATE))
|
||||
|
||||
#elif defined(_MSC_VER)
|
||||
|
||||
#define RegisterModule() _asm _emit 0xC4 _asm _emit 0xC4 _asm _emit BOP_3RDPARTY _asm _emit 0
|
||||
#define UnRegisterModule() _asm _emit 0xC4 _asm _emit 0xC4 _asm _emit BOP_3RDPARTY _asm _emit 1
|
||||
#define DispatchCall() _asm _emit 0xC4 _asm _emit 0xC4 _asm _emit BOP_3RDPARTY _asm _emit 2
|
||||
#define VDDUnSimulate16() _asm _emit 0xC4 _asm _emit 0xC4 _asm _emit BOP_UNSIMULATE
|
||||
|
||||
#else
|
||||
#error Unknown compiler for inline assembler
|
||||
#endif
|
||||
|
||||
/* EOF */
|
||||
@@ -0,0 +1,49 @@
|
||||
/*
|
||||
* isvbop.inc
|
||||
*
|
||||
* Windows NT Device Driver Kit
|
||||
*
|
||||
* This file is part of the ReactOS DDK package.
|
||||
*
|
||||
* Contributors:
|
||||
* Hermes Belusca-Maito ([email protected])
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* This is the corresponding ASM header for isvbop.h.
|
||||
* Please refer to isvbop.h for information about these interfaces.
|
||||
*/
|
||||
|
||||
#include <asm.inc>
|
||||
|
||||
BOP_3RDPARTY = HEX(58)
|
||||
BOP_UNSIMULATE = HEX(FE)
|
||||
|
||||
MACRO(RegisterModule)
|
||||
.byte HEX(C4), HEX(C4), BOP_3RDPARTY, 0
|
||||
ENDM
|
||||
|
||||
MACRO(UnRegisterModule)
|
||||
.byte HEX(C4), HEX(C4), BOP_3RDPARTY, 1
|
||||
ENDM
|
||||
|
||||
MACRO(DispatchCall)
|
||||
.byte HEX(C4), HEX(C4), BOP_3RDPARTY, 2
|
||||
ENDM
|
||||
|
||||
MACRO(VDDUnSimulate16)
|
||||
.byte HEX(C4), HEX(C4), BOP_UNSIMULATE
|
||||
ENDM
|
||||
|
||||
/* EOF */
|
||||
@@ -0,0 +1,161 @@
|
||||
/*
|
||||
* nt_vdd.h
|
||||
*
|
||||
* Windows NT Device Driver Kit
|
||||
*
|
||||
* This file is part of the ReactOS DDK package.
|
||||
*
|
||||
* Contributors:
|
||||
* Hermes Belusca-Maito ([email protected])
|
||||
*
|
||||
* 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 _NT_VDD
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
* VDM Control
|
||||
*/
|
||||
|
||||
VOID
|
||||
WINAPI
|
||||
VDDSimulate16(VOID);
|
||||
|
||||
VOID
|
||||
WINAPI
|
||||
VDDTerminateVDM(VOID);
|
||||
|
||||
|
||||
/*
|
||||
* I/O Port services
|
||||
*/
|
||||
|
||||
typedef VOID (*PFNVDD_INB) (WORD iport, PBYTE data);
|
||||
typedef VOID (*PFNVDD_INW) (WORD iport, PWORD data);
|
||||
typedef VOID (*PFNVDD_INSB) (WORD iport, PBYTE data, WORD count);
|
||||
typedef VOID (*PFNVDD_INSW) (WORD iport, PWORD data, WORD count);
|
||||
typedef VOID (*PFNVDD_OUTB) (WORD iport, BYTE data);
|
||||
typedef VOID (*PFNVDD_OUTW) (WORD iport, WORD data);
|
||||
typedef VOID (*PFNVDD_OUTSB) (WORD iport, PBYTE data, WORD count);
|
||||
typedef VOID (*PFNVDD_OUTSW) (WORD iport, PWORD data, WORD count);
|
||||
|
||||
typedef struct _VDD_IO_HANDLERS
|
||||
{
|
||||
PFNVDD_INB inb_handler;
|
||||
PFNVDD_INW inw_handler;
|
||||
PFNVDD_INSB insb_handler;
|
||||
PFNVDD_INSW insw_handler;
|
||||
PFNVDD_OUTB outb_handler;
|
||||
PFNVDD_OUTW outw_handler;
|
||||
PFNVDD_OUTSB outsb_handler;
|
||||
PFNVDD_OUTSW outsw_handler;
|
||||
} VDD_IO_HANDLERS, *PVDD_IO_HANDLERS;
|
||||
|
||||
typedef struct _VDD_IO_PORTRANGE
|
||||
{
|
||||
WORD First;
|
||||
WORD Last;
|
||||
} VDD_IO_PORTRANGE, *PVDD_IO_PORTRANGE;
|
||||
|
||||
BOOL
|
||||
WINAPI
|
||||
VDDInstallIOHook
|
||||
(
|
||||
HANDLE hVdd,
|
||||
WORD cPortRange,
|
||||
PVDD_IO_PORTRANGE pPortRange,
|
||||
PVDD_IO_HANDLERS IOhandler
|
||||
);
|
||||
|
||||
VOID
|
||||
WINAPI
|
||||
VDDDeInstallIOHook
|
||||
(
|
||||
HANDLE hVdd,
|
||||
WORD cPortRange,
|
||||
PVDD_IO_PORTRANGE pPortRange
|
||||
);
|
||||
|
||||
|
||||
/*
|
||||
* Memory services
|
||||
*/
|
||||
|
||||
typedef enum
|
||||
{
|
||||
VDM_V86,
|
||||
VDM_PM
|
||||
} VDM_MODE;
|
||||
|
||||
#ifndef MSW_PE
|
||||
#define MSW_PE 0x0001
|
||||
#endif
|
||||
|
||||
#define getMODE() ((getMSW() & MSW_PE) ? VDM_PM : VDM_V86)
|
||||
|
||||
PBYTE
|
||||
WINAPI
|
||||
Sim32pGetVDMPointer
|
||||
(
|
||||
IN ULONG Address,
|
||||
IN BOOLEAN ProtectedMode
|
||||
);
|
||||
|
||||
PBYTE
|
||||
WINAPI
|
||||
MGetVdmPointer
|
||||
(
|
||||
IN ULONG Address,
|
||||
IN ULONG Size,
|
||||
IN BOOLEAN ProtectedMode
|
||||
);
|
||||
|
||||
PVOID
|
||||
WINAPI
|
||||
VdmMapFlat
|
||||
(
|
||||
IN USHORT Segment,
|
||||
IN ULONG Offset,
|
||||
IN VDM_MODE Mode
|
||||
);
|
||||
|
||||
BOOL
|
||||
WINAPI
|
||||
VdmFlushCache
|
||||
(
|
||||
IN USHORT Segment,
|
||||
IN ULONG Offset,
|
||||
IN ULONG Size,
|
||||
IN VDM_MODE Mode
|
||||
);
|
||||
|
||||
BOOL
|
||||
WINAPI
|
||||
VdmUnmapFlat
|
||||
(
|
||||
IN USHORT Segment,
|
||||
IN ULONG Offset,
|
||||
IN PVOID Buffer,
|
||||
IN VDM_MODE Mode
|
||||
);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
/* EOF */
|
||||
+4
-6
@@ -1666,14 +1666,12 @@ typedef struct {
|
||||
#endif
|
||||
} HAL_DISPATCH, *PHAL_DISPATCH;
|
||||
|
||||
/* GCC/MSVC and WDK compatible declaration */
|
||||
extern NTKERNELAPI HAL_DISPATCH HalDispatchTable;
|
||||
|
||||
#if defined(_NTOSKRNL_) || defined(_BLDR_)
|
||||
#ifdef _NTSYSTEM_
|
||||
extern HAL_DISPATCH HalDispatchTable;
|
||||
#define HALDISPATCH (&HalDispatchTable)
|
||||
#else
|
||||
/* This is a WDK compatibility definition */
|
||||
#define HalDispatchTable (&HalDispatchTable)
|
||||
extern PHAL_DISPATCH HalDispatchTable;
|
||||
__CREATE_NTOS_DATA_IMPORT_ALIAS(HalDispatchTable)
|
||||
#define HALDISPATCH HalDispatchTable
|
||||
#endif
|
||||
|
||||
|
||||
+29
-44
@@ -4937,35 +4937,13 @@ FsRtlNotifyStreamFileObject(
|
||||
_In_ BOOLEAN SafeToRecurse);
|
||||
#endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
|
||||
|
||||
#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
|
||||
|
||||
extern KSPIN_LOCK IoStatisticsLock;
|
||||
extern ULONG IoReadOperationCount;
|
||||
extern ULONG IoWriteOperationCount;
|
||||
extern ULONG IoOtherOperationCount;
|
||||
extern LARGE_INTEGER IoReadTransferCount;
|
||||
extern LARGE_INTEGER IoWriteTransferCount;
|
||||
extern LARGE_INTEGER IoOtherTransferCount;
|
||||
extern NTKERNELAPI KSPIN_LOCK IoStatisticsLock;
|
||||
extern NTKERNELAPI ULONG IoReadOperationCount;
|
||||
extern NTKERNELAPI ULONG IoWriteOperationCount;
|
||||
extern NTKERNELAPI ULONG IoOtherOperationCount;
|
||||
extern NTKERNELAPI LARGE_INTEGER IoReadTransferCount;
|
||||
extern NTKERNELAPI LARGE_INTEGER IoWriteTransferCount;
|
||||
extern NTKERNELAPI LARGE_INTEGER IoOtherTransferCount;
|
||||
|
||||
#define IO_FILE_OBJECT_NON_PAGED_POOL_CHARGE 64
|
||||
#define IO_FILE_OBJECT_PAGED_POOL_CHARGE 1024
|
||||
@@ -5731,6 +5709,7 @@ SeLocateProcessImageName(
|
||||
((PSECURITY_SUBJECT_CONTEXT) SubjectContext)->PrimaryToken )
|
||||
|
||||
extern NTKERNELAPI PSE_EXPORTS SeExports;
|
||||
|
||||
/******************************************************************************
|
||||
* Process Manager Functions *
|
||||
******************************************************************************/
|
||||
@@ -8413,26 +8392,31 @@ FsRtlRemovePerFileObjectContext(
|
||||
(InterlockedDecrement((LONG volatile *)&((FL)->LockRequestsInProgress)));\
|
||||
}
|
||||
|
||||
/* GCC compatible definition, MS one is retarded */
|
||||
extern NTKERNELAPI const UCHAR * const FsRtlLegalAnsiCharacterArray;
|
||||
#define LEGAL_ANSI_CHARACTER_ARRAY FsRtlLegalAnsiCharacterArray
|
||||
#ifdef _NTSYSTEM_
|
||||
extern const UCHAR * const FsRtlLegalAnsiCharacterArray;
|
||||
#define LEGAL_ANSI_CHARACTER_ARRAY FsRtlLegalAnsiCharacterArray
|
||||
#else
|
||||
extern const UCHAR * const *FsRtlLegalAnsiCharacterArray;
|
||||
__CREATE_NTOS_DATA_IMPORT_ALIAS(FsRtlLegalAnsiCharacterArray)
|
||||
#define LEGAL_ANSI_CHARACTER_ARRAY (*FsRtlLegalAnsiCharacterArray)
|
||||
#endif
|
||||
|
||||
#define FsRtlIsAnsiCharacterWild(C) ( \
|
||||
FlagOn(FsRtlLegalAnsiCharacterArray[(UCHAR)(C)], FSRTL_WILD_CHARACTER ) \
|
||||
FlagOn(LEGAL_ANSI_CHARACTER_ARRAY[(UCHAR)(C)], FSRTL_WILD_CHARACTER ) \
|
||||
)
|
||||
|
||||
#define FsRtlIsAnsiCharacterLegalFat(C, WILD) ( \
|
||||
FlagOn(FsRtlLegalAnsiCharacterArray[(UCHAR)(C)], (FSRTL_FAT_LEGAL) | \
|
||||
FlagOn(LEGAL_ANSI_CHARACTER_ARRAY[(UCHAR)(C)], (FSRTL_FAT_LEGAL) | \
|
||||
((WILD) ? FSRTL_WILD_CHARACTER : 0 )) \
|
||||
)
|
||||
|
||||
#define FsRtlIsAnsiCharacterLegalHpfs(C, WILD) ( \
|
||||
FlagOn(FsRtlLegalAnsiCharacterArray[(UCHAR)(C)], (FSRTL_HPFS_LEGAL) | \
|
||||
FlagOn(LEGAL_ANSI_CHARACTER_ARRAY[(UCHAR)(C)], (FSRTL_HPFS_LEGAL) | \
|
||||
((WILD) ? FSRTL_WILD_CHARACTER : 0 )) \
|
||||
)
|
||||
|
||||
#define FsRtlIsAnsiCharacterLegalNtfs(C, WILD) ( \
|
||||
FlagOn(FsRtlLegalAnsiCharacterArray[(UCHAR)(C)], (FSRTL_NTFS_LEGAL) | \
|
||||
FlagOn(LEGAL_ANSI_CHARACTER_ARRAY[(UCHAR)(C)], (FSRTL_NTFS_LEGAL) | \
|
||||
((WILD) ? FSRTL_WILD_CHARACTER : 0 )) \
|
||||
)
|
||||
|
||||
@@ -8460,7 +8444,7 @@ extern NTKERNELAPI const UCHAR * const FsRtlLegalAnsiCharacterArray;
|
||||
#define FsRtlIsUnicodeCharacterWild(C) ( \
|
||||
(((C) >= 0x40) ? \
|
||||
FALSE : \
|
||||
FlagOn(FsRtlLegalAnsiCharacterArray[(C)], FSRTL_WILD_CHARACTER )) \
|
||||
FlagOn(LEGAL_ANSI_CHARACTER_ARRAY[(C)], FSRTL_WILD_CHARACTER )) \
|
||||
)
|
||||
|
||||
#define FsRtlInitPerFileContext( _fc, _owner, _inst, _cb) \
|
||||
@@ -8623,7 +8607,7 @@ typedef VOID
|
||||
(((PSECTION_OBJECT_POINTERS)(FO)->SectionObjectPointer)->SharedCacheMap != NULL) \
|
||||
)
|
||||
|
||||
extern ULONG CcFastMdlReadWait;
|
||||
extern NTKERNELAPI ULONG CcFastMdlReadWait;
|
||||
|
||||
#if (NTDDI_VERSION >= NTDDI_WIN2K)
|
||||
|
||||
@@ -11005,13 +10989,14 @@ HalGetDmaAlignmentRequirement(
|
||||
#define HalGetDmaAlignmentRequirement() 1L
|
||||
#endif
|
||||
|
||||
extern NTKERNELAPI PUSHORT NlsOemLeadByteInfo;
|
||||
#define NLS_OEM_LEAD_BYTE_INFO NlsOemLeadByteInfo
|
||||
|
||||
#ifdef NLS_MB_CODE_PAGE_TAG
|
||||
#undef NLS_MB_CODE_PAGE_TAG
|
||||
#ifdef _NTSYSTEM_
|
||||
extern PUSHORT NlsOemLeadByteInfo;
|
||||
#define NLS_OEM_LEAD_BYTE_INFO NlsOemLeadByteInfo
|
||||
#else
|
||||
extern PUSHORT *NlsOemLeadByteInfo;
|
||||
__CREATE_NTOS_DATA_IMPORT_ALIAS(NlsOemLeadByteInfo)
|
||||
#define NLS_OEM_LEAD_BYTE_INFO (*NlsOemLeadByteInfo)
|
||||
#endif
|
||||
#define NLS_MB_CODE_PAGE_TAG NlsMbOemCodePageTag
|
||||
|
||||
#if (NTDDI_VERSION >= NTDDI_VISTA)
|
||||
|
||||
|
||||
@@ -0,0 +1,254 @@
|
||||
/*
|
||||
* vddsvc.h
|
||||
*
|
||||
* Windows NT Device Driver Kit
|
||||
*
|
||||
* This file is part of the ReactOS DDK package.
|
||||
*
|
||||
* Contributors:
|
||||
* Hermes Belusca-Maito ([email protected])
|
||||
*
|
||||
* 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 _NT_VDD
|
||||
#include <nt_vdd.h>
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Interrupts services
|
||||
*/
|
||||
#define ICA_MASTER 0
|
||||
#define ICA_SLAVE 1
|
||||
|
||||
VOID
|
||||
WINAPI
|
||||
call_ica_hw_interrupt
|
||||
(
|
||||
INT ms,
|
||||
BYTE line,
|
||||
INT count
|
||||
);
|
||||
|
||||
#define VDDSimulateInterrupt(ms, line, count) \
|
||||
call_ica_hw_interrupt((ms), (line), (count)) // Windows specifies a count of 1 ...
|
||||
|
||||
|
||||
/*
|
||||
* Registers manipulation
|
||||
*/
|
||||
PVOID WINAPI getIntelRegistersPointer(VOID);
|
||||
|
||||
#ifndef _M_MIPS
|
||||
|
||||
ULONG WINAPI getEAX(VOID);
|
||||
VOID WINAPI setEAX(ULONG);
|
||||
USHORT WINAPI getAX(VOID);
|
||||
VOID WINAPI setAX(USHORT);
|
||||
UCHAR WINAPI getAH(VOID);
|
||||
VOID WINAPI setAH(UCHAR);
|
||||
UCHAR WINAPI getAL(VOID);
|
||||
VOID WINAPI setAL(UCHAR);
|
||||
|
||||
ULONG WINAPI getEBX(VOID);
|
||||
VOID WINAPI setEBX(ULONG);
|
||||
USHORT WINAPI getBX(VOID);
|
||||
VOID WINAPI setBX(USHORT);
|
||||
UCHAR WINAPI getBH(VOID);
|
||||
VOID WINAPI setBH(UCHAR);
|
||||
UCHAR WINAPI getBL(VOID);
|
||||
VOID WINAPI setBL(UCHAR);
|
||||
|
||||
ULONG WINAPI getECX(VOID);
|
||||
VOID WINAPI setECX(ULONG);
|
||||
USHORT WINAPI getCX(VOID);
|
||||
VOID WINAPI setCX(USHORT);
|
||||
UCHAR WINAPI getCH(VOID);
|
||||
VOID WINAPI setCH(UCHAR);
|
||||
UCHAR WINAPI getCL(VOID);
|
||||
VOID WINAPI setCL(UCHAR);
|
||||
|
||||
ULONG WINAPI getEDX(VOID);
|
||||
VOID WINAPI setEDX(ULONG);
|
||||
USHORT WINAPI getDX(VOID);
|
||||
VOID WINAPI setDX(USHORT);
|
||||
UCHAR WINAPI getDH(VOID);
|
||||
VOID WINAPI setDH(UCHAR);
|
||||
UCHAR WINAPI getDL(VOID);
|
||||
VOID WINAPI setDL(UCHAR);
|
||||
|
||||
|
||||
|
||||
ULONG WINAPI getESP(VOID);
|
||||
VOID WINAPI setESP(ULONG);
|
||||
USHORT WINAPI getSP(VOID);
|
||||
VOID WINAPI setSP(USHORT);
|
||||
|
||||
ULONG WINAPI getEBP(VOID);
|
||||
VOID WINAPI setEBP(ULONG);
|
||||
USHORT WINAPI getBP(VOID);
|
||||
VOID WINAPI setBP(USHORT);
|
||||
|
||||
ULONG WINAPI getESI(VOID);
|
||||
VOID WINAPI setESI(ULONG);
|
||||
USHORT WINAPI getSI(VOID);
|
||||
VOID WINAPI setSI(USHORT);
|
||||
|
||||
ULONG WINAPI getEDI(VOID);
|
||||
VOID WINAPI setEDI(ULONG);
|
||||
USHORT WINAPI getDI(VOID);
|
||||
VOID WINAPI setDI(USHORT);
|
||||
|
||||
ULONG WINAPI getEIP(VOID);
|
||||
VOID WINAPI setEIP(ULONG);
|
||||
USHORT WINAPI getIP(VOID);
|
||||
VOID WINAPI setIP(USHORT);
|
||||
|
||||
USHORT WINAPI getCS(VOID);
|
||||
VOID WINAPI setCS(USHORT);
|
||||
USHORT WINAPI getSS(VOID);
|
||||
VOID WINAPI setSS(USHORT);
|
||||
USHORT WINAPI getDS(VOID);
|
||||
VOID WINAPI setDS(USHORT);
|
||||
USHORT WINAPI getES(VOID);
|
||||
VOID WINAPI setES(USHORT);
|
||||
USHORT WINAPI getFS(VOID);
|
||||
VOID WINAPI setFS(USHORT);
|
||||
USHORT WINAPI getGS(VOID);
|
||||
VOID WINAPI setGS(USHORT);
|
||||
|
||||
ULONG WINAPI getCF(VOID);
|
||||
VOID WINAPI setCF(ULONG);
|
||||
ULONG WINAPI getPF(VOID);
|
||||
VOID WINAPI setPF(ULONG);
|
||||
ULONG WINAPI getAF(VOID);
|
||||
VOID WINAPI setAF(ULONG);
|
||||
ULONG WINAPI getZF(VOID);
|
||||
VOID WINAPI setZF(ULONG);
|
||||
ULONG WINAPI getSF(VOID);
|
||||
VOID WINAPI setSF(ULONG);
|
||||
ULONG WINAPI getIF(VOID);
|
||||
VOID WINAPI setIF(ULONG);
|
||||
ULONG WINAPI getDF(VOID);
|
||||
VOID WINAPI setDF(ULONG);
|
||||
ULONG WINAPI getOF(VOID);
|
||||
VOID WINAPI setOF(ULONG);
|
||||
|
||||
ULONG WINAPI getEFLAGS(VOID);
|
||||
VOID WINAPI setEFLAGS(ULONG);
|
||||
|
||||
USHORT WINAPI getMSW(VOID);
|
||||
VOID WINAPI setMSW(USHORT);
|
||||
|
||||
#else
|
||||
|
||||
ULONG WINAPI c_getEAX(VOID);
|
||||
VOID WINAPI c_setEAX(ULONG);
|
||||
USHORT WINAPI c_getAX(VOID);
|
||||
VOID WINAPI c_setAX(USHORT);
|
||||
UCHAR WINAPI c_getAH(VOID);
|
||||
VOID WINAPI c_setAH(UCHAR);
|
||||
UCHAR WINAPI c_getAL(VOID);
|
||||
VOID WINAPI c_setAL(UCHAR);
|
||||
|
||||
ULONG WINAPI c_getEBX(VOID);
|
||||
VOID WINAPI c_setEBX(ULONG);
|
||||
USHORT WINAPI c_getBX(VOID);
|
||||
VOID WINAPI c_setBX(USHORT);
|
||||
UCHAR WINAPI c_getBH(VOID);
|
||||
VOID WINAPI c_setBH(UCHAR);
|
||||
UCHAR WINAPI c_getBL(VOID);
|
||||
VOID WINAPI c_setBL(UCHAR);
|
||||
|
||||
ULONG WINAPI c_getECX(VOID);
|
||||
VOID WINAPI c_setECX(ULONG);
|
||||
USHORT WINAPI c_getCX(VOID);
|
||||
VOID WINAPI c_setCX(USHORT);
|
||||
UCHAR WINAPI c_getCH(VOID);
|
||||
VOID WINAPI c_setCH(UCHAR);
|
||||
UCHAR WINAPI c_getCL(VOID);
|
||||
VOID WINAPI c_setCL(UCHAR);
|
||||
|
||||
ULONG WINAPI c_getEDX(VOID);
|
||||
VOID WINAPI c_setEDX(ULONG);
|
||||
USHORT WINAPI c_getDX(VOID);
|
||||
VOID WINAPI c_setDX(USHORT);
|
||||
UCHAR WINAPI c_getDH(VOID);
|
||||
VOID WINAPI c_setDH(UCHAR);
|
||||
UCHAR WINAPI c_getDL(VOID);
|
||||
VOID WINAPI c_setDL(UCHAR);
|
||||
|
||||
|
||||
|
||||
ULONG WINAPI c_getESP(VOID);
|
||||
VOID WINAPI c_setESP(ULONG);
|
||||
USHORT WINAPI c_getSP(VOID);
|
||||
VOID WINAPI c_setSP(USHORT);
|
||||
|
||||
ULONG WINAPI c_getEBP(VOID);
|
||||
VOID WINAPI c_setEBP(ULONG);
|
||||
USHORT WINAPI c_getBP(VOID);
|
||||
VOID WINAPI c_setBP(USHORT);
|
||||
|
||||
ULONG WINAPI c_getESI(VOID);
|
||||
VOID WINAPI c_setESI(ULONG);
|
||||
USHORT WINAPI c_getSI(VOID);
|
||||
VOID WINAPI c_setSI(USHORT);
|
||||
|
||||
ULONG WINAPI c_getEDI(VOID);
|
||||
VOID WINAPI c_setEDI(ULONG);
|
||||
USHORT WINAPI c_getDI(VOID);
|
||||
VOID WINAPI c_setDI(USHORT);
|
||||
|
||||
ULONG WINAPI c_getEIP(VOID);
|
||||
VOID WINAPI c_setEIP(ULONG);
|
||||
USHORT WINAPI c_getIP(VOID);
|
||||
VOID WINAPI c_setIP(USHORT);
|
||||
|
||||
USHORT WINAPI c_getCS(VOID);
|
||||
VOID WINAPI c_setCS(USHORT);
|
||||
USHORT WINAPI c_getSS(VOID);
|
||||
VOID WINAPI c_setSS(USHORT);
|
||||
USHORT WINAPI c_getDS(VOID);
|
||||
VOID WINAPI c_setDS(USHORT);
|
||||
USHORT WINAPI c_getES(VOID);
|
||||
VOID WINAPI c_setES(USHORT);
|
||||
USHORT WINAPI c_getFS(VOID);
|
||||
VOID WINAPI c_setFS(USHORT);
|
||||
USHORT WINAPI c_getGS(VOID);
|
||||
VOID WINAPI c_setGS(USHORT);
|
||||
|
||||
ULONG WINAPI c_getCF(VOID);
|
||||
VOID WINAPI c_setCF(ULONG);
|
||||
ULONG WINAPI c_getPF(VOID);
|
||||
VOID WINAPI c_setPF(ULONG);
|
||||
ULONG WINAPI c_getAF(VOID);
|
||||
VOID WINAPI c_setAF(ULONG);
|
||||
ULONG WINAPI c_getZF(VOID);
|
||||
VOID WINAPI c_setZF(ULONG);
|
||||
ULONG WINAPI c_getSF(VOID);
|
||||
VOID WINAPI c_setSF(ULONG);
|
||||
ULONG WINAPI c_getIF(VOID);
|
||||
VOID WINAPI c_setIF(ULONG);
|
||||
ULONG WINAPI c_getDF(VOID);
|
||||
VOID WINAPI c_setDF(ULONG);
|
||||
ULONG WINAPI c_getOF(VOID);
|
||||
VOID WINAPI c_setOF(ULONG);
|
||||
|
||||
USHORT WINAPI c_getMSW(VOID);
|
||||
VOID WINAPI c_setMSW(USHORT);
|
||||
|
||||
#endif
|
||||
|
||||
/* EOF */
|
||||
+80
-26
@@ -82,10 +82,13 @@ extern "C" {
|
||||
#endif
|
||||
|
||||
/* For ReactOS */
|
||||
#if !defined(_NTOSKRNL_) && !defined(_BLDR_)
|
||||
#if !defined(_NTOSKRNL_) && !defined(_BLDR_) && !defined(_NTSYSTEM_)
|
||||
#define NTKERNELAPI DECLSPEC_IMPORT
|
||||
#else
|
||||
#define NTKERNELAPI
|
||||
#ifndef _NTSYSTEM_
|
||||
#define _NTSYSTEM_
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined(_X86_) && !defined(_NTHAL_)
|
||||
@@ -129,6 +132,29 @@ extern "C" {
|
||||
#define ALLOC_DATA_PRAGMA 1
|
||||
#endif
|
||||
|
||||
#endif /* _MSC_VER */
|
||||
|
||||
/* These macros are used to create aliases for imported data. We need to do
|
||||
this to have declarations that are compatible with MS DDK */
|
||||
#ifdef _M_IX86
|
||||
#define __SYMBOL(_Name) "_"#_Name
|
||||
#define __IMPORTSYMBOL(_Name) "__imp__"#_Name
|
||||
#define __IMPORTNAME(_Name) _imp__##_Name
|
||||
#else
|
||||
#define __SYMBOL(_Name) #_Name
|
||||
#define __IMPORTSYMBOL(_Name) "__imp_"#_Name
|
||||
#define __IMPORTNAME(_Name) __imp_##_Name
|
||||
#endif
|
||||
#ifdef _MSC_VER
|
||||
#define __CREATE_NTOS_DATA_IMPORT_ALIAS(_Name) \
|
||||
__pragma(comment(linker, "/alternatename:"__SYMBOL(_Name) "=" __IMPORTSYMBOL(_Name)))
|
||||
#else /* !_MSC_VER */
|
||||
#ifndef __STRINGIFY
|
||||
#define __STRINGIFY(_exp) #_exp
|
||||
#endif
|
||||
#define _Pragma_redefine_extname(_Name, _Target) _Pragma(__STRINGIFY(redefine_extname _Name _Target))
|
||||
#define __CREATE_NTOS_DATA_IMPORT_ALIAS(_Name) \
|
||||
_Pragma_redefine_extname(_Name,__IMPORTNAME(_Name))
|
||||
#endif
|
||||
|
||||
#if defined(_WIN64)
|
||||
@@ -599,11 +625,19 @@ typedef struct _EXCEPTION_POINTERS {
|
||||
PCONTEXT ContextRecord;
|
||||
} EXCEPTION_POINTERS, *PEXCEPTION_POINTERS;
|
||||
|
||||
/* MS definition is broken! */
|
||||
extern BOOLEAN NTSYSAPI NlsMbCodePageTag;
|
||||
extern BOOLEAN NTSYSAPI NlsMbOemCodePageTag;
|
||||
#ifdef _NTSYSTEM_
|
||||
extern BOOLEAN NlsMbCodePageTag;
|
||||
#define NLS_MB_CODE_PAGE_TAG NlsMbCodePageTag
|
||||
extern BOOLEAN NlsMbOemCodePageTag;
|
||||
#define NLS_MB_OEM_CODE_PAGE_TAG NlsMbOemCodePageTag
|
||||
#else
|
||||
extern BOOLEAN *NlsMbCodePageTag;
|
||||
__CREATE_NTOS_DATA_IMPORT_ALIAS(NlsMbCodePageTag)
|
||||
#define NLS_MB_CODE_PAGE_TAG (*NlsMbCodePageTag)
|
||||
extern BOOLEAN *NlsMbOemCodePageTag;
|
||||
__CREATE_NTOS_DATA_IMPORT_ALIAS(NlsMbOemCodePageTag)
|
||||
#define NLS_MB_OEM_CODE_PAGE_TAG (*NlsMbOemCodePageTag)
|
||||
#endif
|
||||
|
||||
#define SHORT_LEAST_SIGNIFICANT_BIT 0
|
||||
#define SHORT_MOST_SIGNIFICANT_BIT 1
|
||||
@@ -1673,6 +1707,7 @@ extern NTSYSAPI volatile CCHAR KeNumberProcessors;
|
||||
extern NTSYSAPI CCHAR KeNumberProcessors;
|
||||
#else
|
||||
extern PCCHAR KeNumberProcessors;
|
||||
__CREATE_NTOS_DATA_IMPORT_ALIAS(KeNumberProcessors)
|
||||
#endif
|
||||
|
||||
|
||||
@@ -1824,8 +1859,11 @@ typedef enum _MM_SYSTEM_SIZE {
|
||||
MmLargeSystem
|
||||
} MM_SYSTEMSIZE;
|
||||
|
||||
extern NTKERNELAPI BOOLEAN Mm64BitPhysicalAddress;
|
||||
extern PVOID MmBadPointer;
|
||||
#ifndef _NTSYSTEM_
|
||||
extern PBOOLEAN Mm64BitPhysicalAddress;
|
||||
__CREATE_NTOS_DATA_IMPORT_ALIAS(Mm64BitPhysicalAddress)
|
||||
#endif
|
||||
extern NTKERNELAPI PVOID MmBadPointer;
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
@@ -2098,7 +2136,7 @@ typedef struct _RESOURCE_PERFORMANCE_DATA {
|
||||
|
||||
/* Global debug flag */
|
||||
#if DEVL
|
||||
extern ULONG NtGlobalFlag;
|
||||
extern NTKERNELAPI ULONG NtGlobalFlag;
|
||||
#define IF_NTOS_DEBUG(FlagName) if (NtGlobalFlag & (FLG_##FlagName))
|
||||
#else
|
||||
#define IF_NTOS_DEBUG(FlagName) if(FALSE)
|
||||
@@ -7857,6 +7895,7 @@ typedef struct _OBJECT_NAME_INFORMATION {
|
||||
} OBJECT_NAME_INFORMATION, *POBJECT_NAME_INFORMATION;
|
||||
|
||||
/* Exported object types */
|
||||
#ifdef _NTSYSTEM_
|
||||
extern POBJECT_TYPE NTSYSAPI CmKeyObjectType;
|
||||
extern POBJECT_TYPE NTSYSAPI ExEventObjectType;
|
||||
extern POBJECT_TYPE NTSYSAPI ExSemaphoreObjectType;
|
||||
@@ -7864,6 +7903,30 @@ extern POBJECT_TYPE NTSYSAPI IoFileObjectType;
|
||||
extern POBJECT_TYPE NTSYSAPI PsThreadType;
|
||||
extern POBJECT_TYPE NTSYSAPI SeTokenObjectType;
|
||||
extern POBJECT_TYPE NTSYSAPI PsProcessType;
|
||||
#else
|
||||
extern POBJECT_TYPE *CmKeyObjectType;
|
||||
extern POBJECT_TYPE *IoFileObjectType;
|
||||
extern POBJECT_TYPE *ExEventObjectType;
|
||||
extern POBJECT_TYPE *ExSemaphoreObjectType;
|
||||
extern POBJECT_TYPE *TmTransactionManagerObjectType;
|
||||
extern POBJECT_TYPE *TmResourceManagerObjectType;
|
||||
extern POBJECT_TYPE *TmEnlistmentObjectType;
|
||||
extern POBJECT_TYPE *TmTransactionObjectType;
|
||||
extern POBJECT_TYPE *PsProcessType;
|
||||
extern POBJECT_TYPE *PsThreadType;
|
||||
extern POBJECT_TYPE *SeTokenObjectType;
|
||||
__CREATE_NTOS_DATA_IMPORT_ALIAS(CmKeyObjectType)
|
||||
__CREATE_NTOS_DATA_IMPORT_ALIAS(IoFileObjectType)
|
||||
__CREATE_NTOS_DATA_IMPORT_ALIAS(ExEventObjectType)
|
||||
__CREATE_NTOS_DATA_IMPORT_ALIAS(ExSemaphoreObjectType)
|
||||
__CREATE_NTOS_DATA_IMPORT_ALIAS(TmTransactionManagerObjectType)
|
||||
__CREATE_NTOS_DATA_IMPORT_ALIAS(TmResourceManagerObjectType)
|
||||
__CREATE_NTOS_DATA_IMPORT_ALIAS(TmEnlistmentObjectType)
|
||||
__CREATE_NTOS_DATA_IMPORT_ALIAS(TmTransactionObjectType)
|
||||
__CREATE_NTOS_DATA_IMPORT_ALIAS(PsProcessType)
|
||||
__CREATE_NTOS_DATA_IMPORT_ALIAS(PsThreadType)
|
||||
__CREATE_NTOS_DATA_IMPORT_ALIAS(SeTokenObjectType)
|
||||
#endif
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
@@ -8339,7 +8402,7 @@ KeRestoreFloatingPointState(PVOID FloatingState)
|
||||
#define HIGH_LEVEL 15
|
||||
|
||||
#define KI_USER_SHARED_DATA ((ULONG_PTR)(KADDRESS_BASE + 0xFFFE0000))
|
||||
extern volatile LARGE_INTEGER KeTickCount;
|
||||
extern NTKERNELAPI volatile LARGE_INTEGER KeTickCount;
|
||||
|
||||
#define PAUSE_PROCESSOR __yield();
|
||||
|
||||
@@ -15770,27 +15833,18 @@ DbgSetDebugPrintCallback(
|
||||
|
||||
#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;
|
||||
#ifdef _NTSYSTEM_
|
||||
extern BOOLEAN KdDebuggerEnabled;
|
||||
#define KD_DEBUGGER_ENABLED KdDebuggerEnabled
|
||||
extern BOOLEAN KdDebuggerNotPresent;
|
||||
#define KD_DEBUGGER_NOT_PRESENT KdDebuggerNotPresent
|
||||
|
||||
#else
|
||||
extern BOOLEAN *KdDebuggerEnabled;
|
||||
__CREATE_NTOS_DATA_IMPORT_ALIAS(KdDebuggerEnabled)
|
||||
#define KD_DEBUGGER_ENABLED (*KdDebuggerEnabled)
|
||||
extern BOOLEAN *KdDebuggerNotPresent;
|
||||
__CREATE_NTOS_DATA_IMPORT_ALIAS(KdDebuggerNotPresent)
|
||||
#define KD_DEBUGGER_NOT_PRESENT (*KdDebuggerNotPresent)
|
||||
#endif
|
||||
|
||||
#if (NTDDI_VERSION >= NTDDI_WIN2K)
|
||||
|
||||
+12
-1
@@ -3654,7 +3654,7 @@ RtlFindActivationContextSectionString(
|
||||
_In_ ULONG dwFlags,
|
||||
_In_ const GUID *ExtensionGuid,
|
||||
_In_ ULONG SectionType,
|
||||
_In_ PUNICODE_STRING SectionName,
|
||||
_In_ const UNICODE_STRING *SectionName,
|
||||
_Inout_ PVOID ReturnedData
|
||||
);
|
||||
|
||||
@@ -4419,6 +4419,17 @@ RtlCloneMemoryStream(
|
||||
|
||||
#endif // NTOS_MODE_USER
|
||||
|
||||
NTSYSAPI
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
RtlFindActivationContextSectionGuid(
|
||||
ULONG flags,
|
||||
const GUID *extguid,
|
||||
ULONG section_kind,
|
||||
const GUID *guid,
|
||||
void *ptr
|
||||
);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
+5
-5
@@ -3525,7 +3525,7 @@ NTAPI
|
||||
KsMethodHandler(
|
||||
_In_ PIRP Irp,
|
||||
_In_ ULONG MethodSetsCount,
|
||||
_In_reads_(MethodSetsCount) const PKSMETHOD_SET MethodSet);
|
||||
_In_reads_(MethodSetsCount) const KSMETHOD_SET* MethodSet);
|
||||
|
||||
_IRQL_requires_max_(PASSIVE_LEVEL)
|
||||
KSDDKAPI
|
||||
@@ -3534,7 +3534,7 @@ NTAPI
|
||||
KsMethodHandlerWithAllocator(
|
||||
_In_ PIRP Irp,
|
||||
_In_ ULONG MethodSetsCount,
|
||||
_In_reads_(MethodSetsCount) const PKSMETHOD_SET MethodSet,
|
||||
_In_reads_(MethodSetsCount) const KSMETHOD_SET* MethodSet,
|
||||
_In_opt_ PFNKSALLOCATOR Allocator,
|
||||
_In_opt_ ULONG MethodItemSize);
|
||||
|
||||
@@ -3576,7 +3576,7 @@ NTAPI
|
||||
KsPropertyHandlerWithAllocator(
|
||||
_In_ PIRP Irp,
|
||||
_In_ ULONG PropertySetsCount,
|
||||
_In_reads_(PropertySetsCount) const PKSPROPERTY_SET PropertySet,
|
||||
_In_reads_(PropertySetsCount) const KSPROPERTY_SET* PropertySet,
|
||||
_In_opt_ PFNKSALLOCATOR Allocator,
|
||||
_In_opt_ ULONG PropertyItemSize);
|
||||
|
||||
@@ -3659,7 +3659,7 @@ NTAPI
|
||||
KsEnableEventWithAllocator(
|
||||
_In_ PIRP Irp,
|
||||
_In_ ULONG EventSetsCount,
|
||||
_In_reads_(EventSetsCount) const PKSEVENT_SET EventSet,
|
||||
_In_reads_(EventSetsCount) const KSEVENT_SET* EventSet,
|
||||
_Inout_opt_ PLIST_ENTRY EventsList,
|
||||
_In_opt_ KSEVENTS_LOCKTYPE EventsFlags,
|
||||
_In_opt_ PVOID EventsLock,
|
||||
@@ -4819,7 +4819,7 @@ DEFINE_GUID(IID_IKsControl, 0x28F54685L, 0x06FD, 0x11D2, 0xB2, 0x7A, 0x00, 0xA0,
|
||||
|
||||
DECLARE_INTERFACE_(IKsControl,IUnknown)
|
||||
{
|
||||
STDMETHOD_(NTSTATUS, QueryInterface)( THIS_
|
||||
STDMETHOD_(NTSTATUS, QueryInterface)( THIS_
|
||||
REFIID InterfaceId,
|
||||
PVOID* Interface)PURE;
|
||||
|
||||
|
||||
@@ -0,0 +1,562 @@
|
||||
/*
|
||||
* Fast486 386/486 CPU Emulation Library
|
||||
* fast486.h
|
||||
*
|
||||
* Copyright (C) 2013 Aleksandar Andrejevic <theflash AT sdf DOT lonestar DOT org>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program 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 General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#ifndef _FAST486_H_
|
||||
#define _FAST486_H_
|
||||
|
||||
#pragma once
|
||||
|
||||
/* DEFINES ********************************************************************/
|
||||
|
||||
#ifndef FASTCALL
|
||||
#define FASTCALL __fastcall
|
||||
#endif
|
||||
|
||||
#define FAST486_NUM_GEN_REGS 8
|
||||
#define FAST486_NUM_SEG_REGS 6
|
||||
#define FAST486_NUM_CTRL_REGS 3
|
||||
#define FAST486_NUM_DBG_REGS 6
|
||||
#define FAST486_NUM_FPU_REGS 8
|
||||
|
||||
#define FAST486_CR0_PE (1 << 0)
|
||||
#define FAST486_CR0_MP (1 << 1)
|
||||
#define FAST486_CR0_EM (1 << 2)
|
||||
#define FAST486_CR0_TS (1 << 3)
|
||||
#define FAST486_CR0_ET (1 << 4)
|
||||
#define FAST486_CR0_NE (1 << 5)
|
||||
#define FAST486_CR0_WP (1 << 16)
|
||||
#define FAST486_CR0_AM (1 << 18)
|
||||
#define FAST486_CR0_NW (1 << 29)
|
||||
#define FAST486_CR0_CD (1 << 30)
|
||||
#define FAST486_CR0_PG (1 << 31)
|
||||
|
||||
#define FAST486_DR4_B0 (1 << 0)
|
||||
#define FAST486_DR4_B1 (1 << 1)
|
||||
#define FAST486_DR4_B2 (1 << 2)
|
||||
#define FAST486_DR4_B3 (1 << 3)
|
||||
#define FAST486_DR4_BD (1 << 13)
|
||||
#define FAST486_DR4_BS (1 << 14)
|
||||
#define FAST486_DR4_BT (1 << 15)
|
||||
|
||||
#define FAST486_DR5_L0 (1 << 0)
|
||||
#define FAST486_DR5_G0 (1 << 1)
|
||||
#define FAST486_DR5_L1 (1 << 2)
|
||||
#define FAST486_DR5_G1 (1 << 3)
|
||||
#define FAST486_DR5_L2 (1 << 4)
|
||||
#define FAST486_DR5_G2 (1 << 5)
|
||||
#define FAST486_DR5_L3 (1 << 6)
|
||||
#define FAST486_DR5_G3 (1 << 7)
|
||||
#define FAST486_DR5_LE (1 << 8)
|
||||
#define FAST486_DR5_GE (1 << 9)
|
||||
#define FAST486_DR5_GD (1 << 13)
|
||||
|
||||
#define FAST486_DBG_BREAK_EXEC 0
|
||||
#define FAST486_DBG_BREAK_WRITE 1
|
||||
#define FAST486_DBG_BREAK_READWRITE 3
|
||||
|
||||
#define FAST486_DR4_RESERVED 0xFFFF1FF0
|
||||
#define FAST486_DR5_RESERVED 0x0000DC00
|
||||
|
||||
#define FAST486_IDT_TASK_GATE 0x5
|
||||
#define FAST486_IDT_INT_GATE 0x6
|
||||
#define FAST486_IDT_TRAP_GATE 0x7
|
||||
#define FAST486_IDT_INT_GATE_32 0xE
|
||||
#define FAST486_IDT_TRAP_GATE_32 0xF
|
||||
|
||||
#define FAST486_LDT_SIGNATURE 0x02
|
||||
#define FAST486_TSS_SIGNATURE 0x09
|
||||
|
||||
#define FAST486_PREFIX_SEG (1 << 0)
|
||||
#define FAST486_PREFIX_OPSIZE (1 << 1)
|
||||
#define FAST486_PREFIX_ADSIZE (1 << 2)
|
||||
#define FAST486_PREFIX_LOCK (1 << 3)
|
||||
#define FAST486_PREFIX_REPNZ (1 << 4)
|
||||
#define FAST486_PREFIX_REP (1 << 5)
|
||||
|
||||
struct _FAST486_STATE;
|
||||
typedef struct _FAST486_STATE FAST486_STATE, *PFAST486_STATE;
|
||||
|
||||
typedef enum _FAST486_GEN_REGS
|
||||
{
|
||||
FAST486_REG_EAX,
|
||||
FAST486_REG_ECX,
|
||||
FAST486_REG_EDX,
|
||||
FAST486_REG_EBX,
|
||||
FAST486_REG_ESP,
|
||||
FAST486_REG_EBP,
|
||||
FAST486_REG_ESI,
|
||||
FAST486_REG_EDI
|
||||
} FAST486_GEN_REGS, *PFAST486_GEN_REGS;
|
||||
|
||||
typedef enum _FAST486_SEG_REGS
|
||||
{
|
||||
FAST486_REG_ES,
|
||||
FAST486_REG_CS,
|
||||
FAST486_REG_SS,
|
||||
FAST486_REG_DS,
|
||||
FAST486_REG_FS,
|
||||
FAST486_REG_GS
|
||||
} FAST486_SEG_REGS, *PFAST486_SEG_REGS;
|
||||
|
||||
typedef enum _FAST486_CTRL_REGS
|
||||
{
|
||||
FAST486_REG_CR0 = 0,
|
||||
FAST486_REG_CR2 = 1,
|
||||
FAST486_REG_CR3 = 2,
|
||||
} FAST486_CTRL_REGS, *PFAST486_CTRL_REGS;
|
||||
|
||||
typedef enum _FAST486_DBG_REGS
|
||||
{
|
||||
FAST486_REG_DR0 = 0,
|
||||
FAST486_REG_DR1 = 1,
|
||||
FAST486_REG_DR2 = 2,
|
||||
FAST486_REG_DR3 = 3,
|
||||
FAST486_REG_DR4 = 4,
|
||||
FAST486_REG_DR5 = 5,
|
||||
FAST486_REG_DR6 = 4, // alias to DR4
|
||||
FAST486_REG_DR7 = 5 // alias to DR5
|
||||
} FAST486_DBG_REGS, *PFAST486_DBG_REGS;
|
||||
|
||||
typedef enum _FAST486_EXCEPTIONS
|
||||
{
|
||||
FAST486_EXCEPTION_DE = 0x00,
|
||||
FAST486_EXCEPTION_DB = 0x01,
|
||||
FAST486_EXCEPTION_BP = 0x03,
|
||||
FAST486_EXCEPTION_OF = 0x04,
|
||||
FAST486_EXCEPTION_BR = 0x05,
|
||||
FAST486_EXCEPTION_UD = 0x06,
|
||||
FAST486_EXCEPTION_NM = 0x07,
|
||||
FAST486_EXCEPTION_DF = 0x08,
|
||||
FAST486_EXCEPTION_TS = 0x0A,
|
||||
FAST486_EXCEPTION_NP = 0x0B,
|
||||
FAST486_EXCEPTION_SS = 0x0C,
|
||||
FAST486_EXCEPTION_GP = 0x0D,
|
||||
FAST486_EXCEPTION_PF = 0x0E,
|
||||
FAST486_EXCEPTION_MF = 0x10,
|
||||
FAST486_EXCEPTION_AC = 0x11,
|
||||
FAST486_EXCEPTION_MC = 0x12
|
||||
} FAST486_EXCEPTIONS, *PFAST486_EXCEPTIONS;
|
||||
|
||||
typedef enum _FAST486_INT_STATUS
|
||||
{
|
||||
FAST486_INT_NONE = 0,
|
||||
FAST486_INT_EXECUTE = 1,
|
||||
FAST486_INT_SIGNAL = 2
|
||||
} FAST486_INT_STATUS, *PFAST486_INT_STATUS;
|
||||
|
||||
typedef
|
||||
VOID
|
||||
(NTAPI *FAST486_MEM_READ_PROC)
|
||||
(
|
||||
PFAST486_STATE State,
|
||||
ULONG Address,
|
||||
PVOID Buffer,
|
||||
ULONG Size
|
||||
);
|
||||
|
||||
typedef
|
||||
VOID
|
||||
(NTAPI *FAST486_MEM_WRITE_PROC)
|
||||
(
|
||||
PFAST486_STATE State,
|
||||
ULONG Address,
|
||||
PVOID Buffer,
|
||||
ULONG Size
|
||||
);
|
||||
|
||||
typedef
|
||||
VOID
|
||||
(NTAPI *FAST486_IO_READ_PROC)
|
||||
(
|
||||
PFAST486_STATE State,
|
||||
ULONG Port,
|
||||
PVOID Buffer,
|
||||
ULONG DataCount,
|
||||
UCHAR DataSize
|
||||
);
|
||||
|
||||
typedef
|
||||
VOID
|
||||
(NTAPI *FAST486_IO_WRITE_PROC)
|
||||
(
|
||||
PFAST486_STATE State,
|
||||
ULONG Port,
|
||||
PVOID Buffer,
|
||||
ULONG DataCount,
|
||||
UCHAR DataSize
|
||||
);
|
||||
|
||||
typedef
|
||||
VOID
|
||||
(NTAPI *FAST486_IDLE_PROC)
|
||||
(
|
||||
PFAST486_STATE State
|
||||
);
|
||||
|
||||
typedef
|
||||
VOID
|
||||
(NTAPI *FAST486_BOP_PROC)
|
||||
(
|
||||
PFAST486_STATE State,
|
||||
UCHAR BopCode
|
||||
);
|
||||
|
||||
typedef
|
||||
UCHAR
|
||||
(NTAPI *FAST486_INT_ACK_PROC)
|
||||
(
|
||||
PFAST486_STATE State
|
||||
);
|
||||
|
||||
typedef union _FAST486_REG
|
||||
{
|
||||
union
|
||||
{
|
||||
struct
|
||||
{
|
||||
UCHAR LowByte;
|
||||
UCHAR HighByte;
|
||||
};
|
||||
USHORT LowWord;
|
||||
};
|
||||
ULONG Long;
|
||||
} FAST486_REG, *PFAST486_REG;
|
||||
|
||||
typedef struct _FAST486_SEG_REG
|
||||
{
|
||||
USHORT Selector;
|
||||
|
||||
/* Descriptor cache */
|
||||
ULONG Accessed : 1;
|
||||
ULONG ReadWrite : 1;
|
||||
ULONG DirConf : 1;
|
||||
ULONG Executable : 1;
|
||||
ULONG SystemType : 1;
|
||||
ULONG Dpl : 2;
|
||||
ULONG Present : 1;
|
||||
ULONG Size : 1;
|
||||
ULONG Limit;
|
||||
ULONG Base;
|
||||
} FAST486_SEG_REG, *PFAST486_SEG_REG;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
USHORT Selector;
|
||||
ULONG Base;
|
||||
ULONG Limit;
|
||||
} FAST486_LDT_REG;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
USHORT Selector;
|
||||
ULONG Base;
|
||||
ULONG Limit;
|
||||
BOOLEAN Busy;
|
||||
} FAST486_TASK_REG, *PFAST486_TASK_REG;
|
||||
|
||||
#pragma pack(push, 1)
|
||||
|
||||
typedef struct
|
||||
{
|
||||
ULONG Limit : 16;
|
||||
ULONG Base : 16;
|
||||
ULONG BaseMid : 8;
|
||||
ULONG Accessed : 1;
|
||||
ULONG ReadWrite : 1;
|
||||
ULONG DirConf : 1;
|
||||
ULONG Executable : 1;
|
||||
ULONG SystemType : 1;
|
||||
ULONG Dpl : 2;
|
||||
ULONG Present : 1;
|
||||
ULONG LimitHigh : 4;
|
||||
ULONG Avl : 1;
|
||||
ULONG Reserved : 1;
|
||||
ULONG Size : 1;
|
||||
ULONG Granularity : 1;
|
||||
ULONG BaseHigh : 8;
|
||||
} FAST486_GDT_ENTRY, *PFAST486_GDT_ENTRY;
|
||||
|
||||
/* Verify the structure size */
|
||||
C_ASSERT(sizeof(FAST486_GDT_ENTRY) == sizeof(ULONGLONG));
|
||||
|
||||
typedef struct
|
||||
{
|
||||
ULONG Limit : 16;
|
||||
ULONG Base : 16;
|
||||
ULONG BaseMid : 8;
|
||||
ULONG Signature : 5;
|
||||
ULONG Dpl : 2;
|
||||
ULONG Present : 1;
|
||||
ULONG LimitHigh : 4;
|
||||
ULONG Avl : 1;
|
||||
ULONG Reserved : 2;
|
||||
ULONG Granularity : 1;
|
||||
ULONG BaseHigh : 8;
|
||||
} FAST486_SYSTEM_DESCRIPTOR, *PFAST486_SYSTEM_DESCRIPTOR;
|
||||
|
||||
/* Verify the structure size */
|
||||
C_ASSERT(sizeof(FAST486_SYSTEM_DESCRIPTOR) == sizeof(ULONGLONG));
|
||||
|
||||
typedef struct
|
||||
{
|
||||
ULONG Offset : 16;
|
||||
ULONG Selector : 16;
|
||||
ULONG ParamCount : 5;
|
||||
ULONG Reserved : 3;
|
||||
ULONG Type : 4;
|
||||
ULONG SystemType : 1;
|
||||
ULONG Dpl : 2;
|
||||
ULONG Present : 1;
|
||||
ULONG OffsetHigh : 16;
|
||||
} FAST486_CALL_GATE, *PFAST486_CALL_GATE;
|
||||
|
||||
/* Verify the structure size */
|
||||
C_ASSERT(sizeof(FAST486_CALL_GATE) == sizeof(ULONGLONG));
|
||||
|
||||
typedef struct
|
||||
{
|
||||
ULONG Offset : 16;
|
||||
ULONG Selector : 16;
|
||||
ULONG Zero : 8;
|
||||
ULONG Type : 4;
|
||||
ULONG Storage : 1;
|
||||
ULONG Dpl : 2;
|
||||
ULONG Present : 1;
|
||||
ULONG OffsetHigh : 16;
|
||||
} FAST486_IDT_ENTRY, *PFAST486_IDT_ENTRY;
|
||||
|
||||
/* Verify the structure size */
|
||||
C_ASSERT(sizeof(FAST486_IDT_ENTRY) == sizeof(ULONGLONG));
|
||||
|
||||
#pragma pack(pop)
|
||||
|
||||
typedef struct _FAST486_TABLE_REG
|
||||
{
|
||||
USHORT Size;
|
||||
ULONG Address;
|
||||
} FAST486_TABLE_REG, *PFAST486_TABLE_REG;
|
||||
|
||||
typedef union _FAST486_FLAGS_REG
|
||||
{
|
||||
USHORT LowWord;
|
||||
ULONG Long;
|
||||
|
||||
struct
|
||||
{
|
||||
ULONG Cf : 1;
|
||||
ULONG AlwaysSet : 1;
|
||||
ULONG Pf : 1;
|
||||
ULONG Reserved0 : 1;
|
||||
ULONG Af : 1;
|
||||
ULONG Reserved1 : 1;
|
||||
ULONG Zf : 1;
|
||||
ULONG Sf : 1;
|
||||
ULONG Tf : 1;
|
||||
ULONG If : 1;
|
||||
ULONG Df : 1;
|
||||
ULONG Of : 1;
|
||||
ULONG Iopl : 2;
|
||||
ULONG Nt : 1;
|
||||
ULONG Reserved2 : 1;
|
||||
ULONG Rf : 1;
|
||||
ULONG Vm : 1;
|
||||
ULONG Ac : 1;
|
||||
|
||||
// ULONG Reserved : 13;
|
||||
};
|
||||
} FAST486_FLAGS_REG, *PFAST486_FLAGS_REG;
|
||||
|
||||
typedef struct _FAST486_TSS
|
||||
{
|
||||
ULONG Link;
|
||||
ULONG Esp0;
|
||||
ULONG Ss0;
|
||||
ULONG Esp1;
|
||||
ULONG Ss1;
|
||||
ULONG Esp2;
|
||||
ULONG Ss2;
|
||||
ULONG Cr3;
|
||||
ULONG Eip;
|
||||
ULONG Eflags;
|
||||
ULONG Eax;
|
||||
ULONG Ecx;
|
||||
ULONG Edx;
|
||||
ULONG Ebx;
|
||||
ULONG Esp;
|
||||
ULONG Ebp;
|
||||
ULONG Esi;
|
||||
ULONG Edi;
|
||||
ULONG Es;
|
||||
ULONG Cs;
|
||||
ULONG Ss;
|
||||
ULONG Ds;
|
||||
ULONG Fs;
|
||||
ULONG Gs;
|
||||
ULONG Ldtr;
|
||||
ULONG IopbOffset;
|
||||
} FAST486_TSS, *PFAST486_TSS;
|
||||
|
||||
typedef struct _FAST486_FPU_DATA_REG
|
||||
{
|
||||
ULONGLONG Mantissa;
|
||||
USHORT Exponent;
|
||||
} FAST486_FPU_DATA_REG, *PFAST486_FPU_DATA_REG;
|
||||
|
||||
typedef union _FAST486_FPU_STATUS_REG
|
||||
{
|
||||
USHORT Value;
|
||||
|
||||
struct
|
||||
{
|
||||
ULONG Ie : 1;
|
||||
ULONG De : 1;
|
||||
ULONG Ze : 1;
|
||||
ULONG Oe : 1;
|
||||
ULONG Ue : 1;
|
||||
ULONG Pe : 1;
|
||||
ULONG Sf : 1;
|
||||
ULONG Es : 1;
|
||||
ULONG Code0 : 1;
|
||||
ULONG Code1 : 1;
|
||||
ULONG Code2 : 1;
|
||||
ULONG Top : 3;
|
||||
ULONG Code3 : 1;
|
||||
ULONG Busy : 1;
|
||||
};
|
||||
} FAST486_FPU_STATUS_REG, *PFAST486_FPU_STATUS_REG;
|
||||
|
||||
typedef union _FAST486_FPU_CONTROL_REG
|
||||
{
|
||||
USHORT Value;
|
||||
|
||||
struct
|
||||
{
|
||||
ULONG Im : 1;
|
||||
ULONG Dm : 1;
|
||||
ULONG Zm : 1;
|
||||
ULONG Om : 1;
|
||||
ULONG Um : 1;
|
||||
ULONG Pm : 1;
|
||||
ULONG Reserved : 2;
|
||||
ULONG Pc : 2;
|
||||
ULONG Rc : 2;
|
||||
ULONG Inf : 1;
|
||||
// ULONG Reserved1 : 3;
|
||||
};
|
||||
} FAST486_FPU_CONTROL_REG, *PFAST486_FPU_CONTROL_REG;
|
||||
|
||||
struct _FAST486_STATE
|
||||
{
|
||||
FAST486_MEM_READ_PROC MemReadCallback;
|
||||
FAST486_MEM_WRITE_PROC MemWriteCallback;
|
||||
FAST486_IO_READ_PROC IoReadCallback;
|
||||
FAST486_IO_WRITE_PROC IoWriteCallback;
|
||||
FAST486_IDLE_PROC IdleCallback;
|
||||
FAST486_BOP_PROC BopCallback;
|
||||
FAST486_INT_ACK_PROC IntAckCallback;
|
||||
FAST486_REG GeneralRegs[FAST486_NUM_GEN_REGS];
|
||||
FAST486_SEG_REG SegmentRegs[FAST486_NUM_SEG_REGS];
|
||||
FAST486_REG InstPtr, SavedInstPtr;
|
||||
FAST486_FLAGS_REG Flags;
|
||||
FAST486_TABLE_REG Gdtr, Idtr;
|
||||
FAST486_LDT_REG Ldtr;
|
||||
FAST486_TASK_REG TaskReg;
|
||||
UCHAR Cpl;
|
||||
ULONG ControlRegisters[FAST486_NUM_CTRL_REGS];
|
||||
ULONG DebugRegisters[FAST486_NUM_DBG_REGS];
|
||||
ULONG ExceptionCount;
|
||||
ULONG PrefixFlags;
|
||||
FAST486_SEG_REGS SegmentOverride;
|
||||
FAST486_INT_STATUS IntStatus;
|
||||
UCHAR PendingIntNum;
|
||||
PULONG Tlb;
|
||||
FAST486_FPU_DATA_REG FpuRegisters[FAST486_NUM_FPU_REGS];
|
||||
FAST486_FPU_STATUS_REG FpuStatus;
|
||||
FAST486_FPU_CONTROL_REG FpuControl;
|
||||
USHORT FpuTag;
|
||||
};
|
||||
|
||||
/* FUNCTIONS ******************************************************************/
|
||||
|
||||
VOID
|
||||
NTAPI
|
||||
Fast486Initialize(PFAST486_STATE State,
|
||||
FAST486_MEM_READ_PROC MemReadCallback,
|
||||
FAST486_MEM_WRITE_PROC MemWriteCallback,
|
||||
FAST486_IO_READ_PROC IoReadCallback,
|
||||
FAST486_IO_WRITE_PROC IoWriteCallback,
|
||||
FAST486_IDLE_PROC IdleCallback,
|
||||
FAST486_BOP_PROC BopCallback,
|
||||
FAST486_INT_ACK_PROC IntAckCallback,
|
||||
PULONG Tlb);
|
||||
|
||||
VOID
|
||||
NTAPI
|
||||
Fast486Reset(PFAST486_STATE State);
|
||||
|
||||
VOID
|
||||
NTAPI
|
||||
Fast486Continue(PFAST486_STATE State);
|
||||
|
||||
VOID
|
||||
NTAPI
|
||||
Fast486StepInto(PFAST486_STATE State);
|
||||
|
||||
VOID
|
||||
NTAPI
|
||||
Fast486StepOver(PFAST486_STATE State);
|
||||
|
||||
VOID
|
||||
NTAPI
|
||||
Fast486StepOut(PFAST486_STATE State);
|
||||
|
||||
VOID
|
||||
NTAPI
|
||||
Fast486DumpState(PFAST486_STATE State);
|
||||
|
||||
VOID
|
||||
NTAPI
|
||||
Fast486Interrupt(PFAST486_STATE State, UCHAR Number);
|
||||
|
||||
VOID
|
||||
NTAPI
|
||||
Fast486InterruptSignal(PFAST486_STATE State);
|
||||
|
||||
VOID
|
||||
NTAPI
|
||||
Fast486ExecuteAt(PFAST486_STATE State, USHORT Segment, ULONG Offset);
|
||||
|
||||
VOID
|
||||
NTAPI
|
||||
Fast486SetStack(PFAST486_STATE State, USHORT Segment, ULONG Offset);
|
||||
|
||||
VOID
|
||||
NTAPI
|
||||
Fast486SetSegment
|
||||
(
|
||||
PFAST486_STATE State,
|
||||
FAST486_SEG_REGS Segment,
|
||||
USHORT Selector
|
||||
);
|
||||
|
||||
#endif // _FAST486_H_
|
||||
|
||||
/* EOF */
|
||||
@@ -120,7 +120,7 @@ void * __cdecl __attribute__((error("Can only be used inside an exception filter
|
||||
#define _SEH3$_EnforceFramePointer() asm volatile ("#\n" : : "m"(*(char*)__builtin_alloca(4)) : "%esp", "memory")
|
||||
|
||||
/* CLANG doesn't have asm goto! */
|
||||
#define _SEH3$_ASM_GOTO(_Label, ...)
|
||||
#define _SEH3$_ASM_GOTO(...)
|
||||
|
||||
int
|
||||
__attribute__((regparm(3)))
|
||||
@@ -167,7 +167,7 @@ _SEH3$_RegisterTryLevelWithNonVolatiles(
|
||||
/* This will make GCC use ebp, even if it was disabled by -fomit-frame-pointer */
|
||||
#define _SEH3$_EnforceFramePointer() asm volatile ("#\n" : : "m"(*(char*)__builtin_alloca(0)) : "%esp", "memory")
|
||||
|
||||
#define _SEH3$_ASM_GOTO(_Label, ...) asm goto ("#\n" : : : "memory", ## __VA_ARGS__ : _Label)
|
||||
#define _SEH3$_ASM_GOTO(...) asm goto ("#\n" : : : "memory" : __VA_ARGS__)
|
||||
|
||||
#ifdef __cplusplus
|
||||
#define _SEH3$_CALL_WRAPPER(_Function, _TrylevelFrame, _DataTable) \
|
||||
@@ -177,7 +177,7 @@ _SEH3$_RegisterTryLevelWithNonVolatiles(
|
||||
: \
|
||||
: "m" (*(_TrylevelFrame)), "m" (*(_DataTable)), "c"(__builtin_alloca(0)) \
|
||||
: "eax", "edx", "memory" \
|
||||
: _SEH3$_l_HandlerTarget, _SEH3$_l_FilterOrFinally)
|
||||
: _SEH3$_l_BeforeTry, _SEH3$_l_HandlerTarget, _SEH3$_l_OnException, _SEH3$_l_BeforeFilterOrFinally, _SEH3$_l_FilterOrFinally)
|
||||
|
||||
#else
|
||||
#define _SEH3$_CALL_WRAPPER(_Function, _TrylevelFrame, _DataTable) \
|
||||
@@ -187,7 +187,7 @@ _SEH3$_RegisterTryLevelWithNonVolatiles(
|
||||
: \
|
||||
: "m" (*(_TrylevelFrame)), "m" (*(_DataTable)) \
|
||||
: "eax", "edx", "ecx", "memory" \
|
||||
: _SEH3$_l_HandlerTarget)
|
||||
: _SEH3$_l_BeforeTry, _SEH3$_l_HandlerTarget, _SEH3$_l_OnException, _SEH3$_l_BeforeFilterOrFinally, _SEH3$_l_FilterOrFinally)
|
||||
#endif
|
||||
|
||||
/* This is an asm wrapper around _SEH3$_RegisterFrame */
|
||||
@@ -202,10 +202,8 @@ _SEH3$_RegisterTryLevelWithNonVolatiles(
|
||||
around into places that are never executed. */
|
||||
#define _SEH3$_SCARE_GCC() \
|
||||
void *plabel; \
|
||||
_SEH3$_ASM_GOTO(_SEH3$_l_BeforeTry); \
|
||||
_SEH3$_ASM_GOTO(_SEH3$_l_HandlerTarget); \
|
||||
_SEH3$_ASM_GOTO(_SEH3$_l_OnException); \
|
||||
asm volatile ("#" : "=a"(plabel) : "p"(&&_SEH3$_l_BeforeTry), "p"(&&_SEH3$_l_HandlerTarget), "p"(&&_SEH3$_l_OnException) \
|
||||
_SEH3$_ASM_GOTO(_SEH3$_l_BeforeTry, _SEH3$_l_HandlerTarget, _SEH3$_l_OnException, _SEH3$_l_BeforeFilterOrFinally, _SEH3$_l_FilterOrFinally); \
|
||||
asm volatile ("#" : "=a"(plabel) : "p"(&&_SEH3$_l_BeforeTry), "p"(&&_SEH3$_l_HandlerTarget), "p"(&&_SEH3$_l_OnException), "p"(&&_SEH3$_l_FilterOrFinally) \
|
||||
: "ebx", "ecx", "edx", "esi", "edi", "flags", "memory" ); \
|
||||
goto _SEH3$_l_OnException;
|
||||
|
||||
|
||||
@@ -0,0 +1,117 @@
|
||||
/*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS Base API Server DLL
|
||||
* FILE: include/reactos/subsys/win/vdm.h
|
||||
* PURPOSE: Public definitions for the Virtual Dos Machine
|
||||
* PROGRAMMERS: Aleksandar Andrejevic <theflash AT sdf DOT lonestar DOT org>
|
||||
* Alex Ionescu ([email protected])
|
||||
*/
|
||||
|
||||
#ifndef _VDM_H
|
||||
#define _VDM_H
|
||||
|
||||
#pragma once
|
||||
|
||||
/* CONSTANTS & TYPES **********************************************************/
|
||||
|
||||
typedef enum _VDM_ENTRY_CODE
|
||||
{
|
||||
VdmEntryUndo,
|
||||
VdmEntryUpdateProcess,
|
||||
VdmEntryUpdateControlCHandler
|
||||
} VDM_ENTRY_CODE;
|
||||
|
||||
//
|
||||
// Undo States
|
||||
//
|
||||
#define VDM_UNDO_PARTIAL 0x01
|
||||
#define VDM_UNDO_FULL 0x02
|
||||
#define VDM_UNDO_REUSE 0x04
|
||||
#define VDM_UNDO_COMPLETED 0x08
|
||||
|
||||
//
|
||||
// Binary Types to share with VDM
|
||||
//
|
||||
#define BINARY_TYPE_EXE 0x01
|
||||
#define BINARY_TYPE_COM 0x02
|
||||
#define BINARY_TYPE_PIF 0x03
|
||||
#define BINARY_TYPE_DOS 0x10
|
||||
#define BINARY_TYPE_SEPARATE_WOW 0x20
|
||||
#define BINARY_TYPE_WOW 0x40
|
||||
#define BINARY_TYPE_WOW_EX 0x80
|
||||
|
||||
//
|
||||
// VDM States
|
||||
//
|
||||
#define VDM_NOT_LOADED 0x01
|
||||
#define VDM_NOT_READY 0x02
|
||||
#define VDM_READY 0x04
|
||||
|
||||
//
|
||||
// VDM Flags
|
||||
//
|
||||
#define VDM_FLAG_FIRST_TASK 0x01
|
||||
#define VDM_FLAG_WOW 0x02
|
||||
#define VDM_FLAG_DOS 0x04
|
||||
#define VDM_FLAG_RETRY 0x08
|
||||
#define VDM_INC_REENTER_COUNT 0x10
|
||||
#define VDM_DEC_REENTER_COUNT 0x20
|
||||
#define VDM_FLAG_NESTED_TASK 0x40
|
||||
#define VDM_FLAG_DONT_WAIT 0x80
|
||||
#define VDM_GET_FIRST_COMMAND 0x100
|
||||
#define VDM_GET_ENVIRONMENT 0x400
|
||||
#define VDM_FLAG_SEPARATE_WOW 0x800
|
||||
#define VDM_LIST_WOW_PROCESSES 0x1000
|
||||
#define VDM_LIST_WOW_TASKS 0x4000
|
||||
#define VDM_ADD_WOW_TASK 0x8000
|
||||
|
||||
typedef struct
|
||||
{
|
||||
ULONG TaskId;
|
||||
ULONG CreationFlags;
|
||||
ULONG ExitCode;
|
||||
ULONG CodePage;
|
||||
HANDLE StdIn;
|
||||
HANDLE StdOut;
|
||||
HANDLE StdErr;
|
||||
LPSTR CmdLine;
|
||||
LPSTR AppName;
|
||||
LPSTR PifFile;
|
||||
LPSTR CurDirectory;
|
||||
LPSTR Env;
|
||||
ULONG EnvLen;
|
||||
STARTUPINFOA StartupInfo;
|
||||
LPSTR Desktop;
|
||||
ULONG DesktopLen;
|
||||
LPSTR Title;
|
||||
ULONG TitleLen;
|
||||
LPVOID Reserved;
|
||||
ULONG ReservedLen;
|
||||
USHORT CmdLen;
|
||||
USHORT AppLen;
|
||||
USHORT PifLen;
|
||||
USHORT CurDirectoryLen;
|
||||
USHORT VDMState;
|
||||
USHORT CurrentDrive;
|
||||
BOOLEAN ComingFromBat;
|
||||
} VDM_COMMAND_INFO, *PVDM_COMMAND_INFO;
|
||||
|
||||
|
||||
/* FUNCTION PROTOTYPES ********************************************************/
|
||||
|
||||
BOOL
|
||||
WINAPI
|
||||
GetNextVDMCommand(
|
||||
IN OUT PVDM_COMMAND_INFO CommandData OPTIONAL
|
||||
);
|
||||
|
||||
VOID
|
||||
WINAPI
|
||||
ExitVDM(
|
||||
IN BOOL IsWow,
|
||||
IN ULONG iWowTask
|
||||
);
|
||||
|
||||
#endif // _VDM_H
|
||||
|
||||
/* EOF */
|
||||
@@ -278,7 +278,7 @@ ssize_t pwrite( int fd, const void *buf, size_t count, off_t offset );
|
||||
#endif /* HAVE_PWRITE */
|
||||
#endif /* __REACTOS__ */
|
||||
|
||||
#ifdef WIN32
|
||||
#ifdef _WIN32
|
||||
#ifndef HAVE_SIGSETJMP
|
||||
# include <setjmp.h>
|
||||
typedef jmp_buf sigjmp_buf;
|
||||
@@ -343,9 +343,9 @@ extern int spawnvp(int mode, const char *cmdname, const char * const argv[]);
|
||||
#if defined(_MSC_VER) || (defined(__i386__) && defined(__GNUC__) && !defined(WINE_PORT_NO_INTERLOCKED))
|
||||
|
||||
#define interlocked_cmpxchg InterlockedCompareExchange
|
||||
#define interlocked_cmpxchg_ptr InterlockedCompareExchangePtr
|
||||
#define interlocked_cmpxchg_ptr InterlockedCompareExchangePointer
|
||||
#define interlocked_xchg InterlockedExchange
|
||||
#define interlocked_xchg_ptr InterlockedExchangePtr
|
||||
#define interlocked_xchg_ptr InterlockedExchangePointer
|
||||
#define interlocked_xchg_add InterlockedExchangeAdd
|
||||
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ $if (_NTIFS_)
|
||||
(((PSECTION_OBJECT_POINTERS)(FO)->SectionObjectPointer)->SharedCacheMap != NULL) \
|
||||
)
|
||||
|
||||
extern ULONG CcFastMdlReadWait;
|
||||
extern NTKERNELAPI ULONG CcFastMdlReadWait;
|
||||
|
||||
#if (NTDDI_VERSION >= NTDDI_WIN2K)
|
||||
|
||||
|
||||
@@ -271,7 +271,7 @@ typedef struct _RESOURCE_PERFORMANCE_DATA {
|
||||
|
||||
/* Global debug flag */
|
||||
#if DEVL
|
||||
extern ULONG NtGlobalFlag;
|
||||
extern NTKERNELAPI ULONG NtGlobalFlag;
|
||||
#define IF_NTOS_DEBUG(FlagName) if (NtGlobalFlag & (FLG_##FlagName))
|
||||
#else
|
||||
#define IF_NTOS_DEBUG(FlagName) if(FALSE)
|
||||
|
||||
@@ -1580,26 +1580,31 @@ FsRtlRemovePerFileObjectContext(
|
||||
(InterlockedDecrement((LONG volatile *)&((FL)->LockRequestsInProgress)));\
|
||||
}
|
||||
|
||||
/* GCC compatible definition, MS one is retarded */
|
||||
extern NTKERNELAPI const UCHAR * const FsRtlLegalAnsiCharacterArray;
|
||||
#define LEGAL_ANSI_CHARACTER_ARRAY FsRtlLegalAnsiCharacterArray
|
||||
#ifdef _NTSYSTEM_
|
||||
extern const UCHAR * const FsRtlLegalAnsiCharacterArray;
|
||||
#define LEGAL_ANSI_CHARACTER_ARRAY FsRtlLegalAnsiCharacterArray
|
||||
#else
|
||||
extern const UCHAR * const *FsRtlLegalAnsiCharacterArray;
|
||||
__CREATE_NTOS_DATA_IMPORT_ALIAS(FsRtlLegalAnsiCharacterArray)
|
||||
#define LEGAL_ANSI_CHARACTER_ARRAY (*FsRtlLegalAnsiCharacterArray)
|
||||
#endif
|
||||
|
||||
#define FsRtlIsAnsiCharacterWild(C) ( \
|
||||
FlagOn(FsRtlLegalAnsiCharacterArray[(UCHAR)(C)], FSRTL_WILD_CHARACTER ) \
|
||||
FlagOn(LEGAL_ANSI_CHARACTER_ARRAY[(UCHAR)(C)], FSRTL_WILD_CHARACTER ) \
|
||||
)
|
||||
|
||||
#define FsRtlIsAnsiCharacterLegalFat(C, WILD) ( \
|
||||
FlagOn(FsRtlLegalAnsiCharacterArray[(UCHAR)(C)], (FSRTL_FAT_LEGAL) | \
|
||||
FlagOn(LEGAL_ANSI_CHARACTER_ARRAY[(UCHAR)(C)], (FSRTL_FAT_LEGAL) | \
|
||||
((WILD) ? FSRTL_WILD_CHARACTER : 0 )) \
|
||||
)
|
||||
|
||||
#define FsRtlIsAnsiCharacterLegalHpfs(C, WILD) ( \
|
||||
FlagOn(FsRtlLegalAnsiCharacterArray[(UCHAR)(C)], (FSRTL_HPFS_LEGAL) | \
|
||||
FlagOn(LEGAL_ANSI_CHARACTER_ARRAY[(UCHAR)(C)], (FSRTL_HPFS_LEGAL) | \
|
||||
((WILD) ? FSRTL_WILD_CHARACTER : 0 )) \
|
||||
)
|
||||
|
||||
#define FsRtlIsAnsiCharacterLegalNtfs(C, WILD) ( \
|
||||
FlagOn(FsRtlLegalAnsiCharacterArray[(UCHAR)(C)], (FSRTL_NTFS_LEGAL) | \
|
||||
FlagOn(LEGAL_ANSI_CHARACTER_ARRAY[(UCHAR)(C)], (FSRTL_NTFS_LEGAL) | \
|
||||
((WILD) ? FSRTL_WILD_CHARACTER : 0 )) \
|
||||
)
|
||||
|
||||
@@ -1627,7 +1632,7 @@ extern NTKERNELAPI const UCHAR * const FsRtlLegalAnsiCharacterArray;
|
||||
#define FsRtlIsUnicodeCharacterWild(C) ( \
|
||||
(((C) >= 0x40) ? \
|
||||
FALSE : \
|
||||
FlagOn(FsRtlLegalAnsiCharacterArray[(C)], FSRTL_WILD_CHARACTER )) \
|
||||
FlagOn(LEGAL_ANSI_CHARACTER_ARRAY[(C)], FSRTL_WILD_CHARACTER )) \
|
||||
)
|
||||
|
||||
#define FsRtlInitPerFileContext( _fc, _owner, _inst, _cb) \
|
||||
|
||||
@@ -269,14 +269,12 @@ typedef struct {
|
||||
#endif
|
||||
} HAL_DISPATCH, *PHAL_DISPATCH;
|
||||
|
||||
/* GCC/MSVC and WDK compatible declaration */
|
||||
extern NTKERNELAPI HAL_DISPATCH HalDispatchTable;
|
||||
|
||||
#if defined(_NTOSKRNL_) || defined(_BLDR_)
|
||||
#ifdef _NTSYSTEM_
|
||||
extern HAL_DISPATCH HalDispatchTable;
|
||||
#define HALDISPATCH (&HalDispatchTable)
|
||||
#else
|
||||
/* This is a WDK compatibility definition */
|
||||
#define HalDispatchTable (&HalDispatchTable)
|
||||
extern PHAL_DISPATCH HalDispatchTable;
|
||||
__CREATE_NTOS_DATA_IMPORT_ALIAS(HalDispatchTable)
|
||||
#define HALDISPATCH HalDispatchTable
|
||||
#endif
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ $if (_WDMDDK_)
|
||||
#define HIGH_LEVEL 15
|
||||
|
||||
#define KI_USER_SHARED_DATA ((ULONG_PTR)(KADDRESS_BASE + 0xFFFE0000))
|
||||
extern volatile LARGE_INTEGER KeTickCount;
|
||||
extern NTKERNELAPI volatile LARGE_INTEGER KeTickCount;
|
||||
|
||||
#define PAUSE_PROCESSOR __yield();
|
||||
|
||||
|
||||
+7
-29
@@ -7037,35 +7037,13 @@ FsRtlNotifyStreamFileObject(
|
||||
_In_ BOOLEAN SafeToRecurse);
|
||||
#endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
|
||||
|
||||
#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
|
||||
|
||||
extern KSPIN_LOCK IoStatisticsLock;
|
||||
extern ULONG IoReadOperationCount;
|
||||
extern ULONG IoWriteOperationCount;
|
||||
extern ULONG IoOtherOperationCount;
|
||||
extern LARGE_INTEGER IoReadTransferCount;
|
||||
extern LARGE_INTEGER IoWriteTransferCount;
|
||||
extern LARGE_INTEGER IoOtherTransferCount;
|
||||
extern NTKERNELAPI KSPIN_LOCK IoStatisticsLock;
|
||||
extern NTKERNELAPI ULONG IoReadOperationCount;
|
||||
extern NTKERNELAPI ULONG IoWriteOperationCount;
|
||||
extern NTKERNELAPI ULONG IoOtherOperationCount;
|
||||
extern NTKERNELAPI LARGE_INTEGER IoReadTransferCount;
|
||||
extern NTKERNELAPI LARGE_INTEGER IoWriteTransferCount;
|
||||
extern NTKERNELAPI LARGE_INTEGER IoOtherTransferCount;
|
||||
|
||||
#define IO_FILE_OBJECT_NON_PAGED_POOL_CHARGE 64
|
||||
#define IO_FILE_OBJECT_PAGED_POOL_CHARGE 1024
|
||||
|
||||
+9
-18
@@ -119,27 +119,18 @@ DbgSetDebugPrintCallback(
|
||||
|
||||
#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;
|
||||
#ifdef _NTSYSTEM_
|
||||
extern BOOLEAN KdDebuggerEnabled;
|
||||
#define KD_DEBUGGER_ENABLED KdDebuggerEnabled
|
||||
extern BOOLEAN KdDebuggerNotPresent;
|
||||
#define KD_DEBUGGER_NOT_PRESENT KdDebuggerNotPresent
|
||||
|
||||
#else
|
||||
extern BOOLEAN *KdDebuggerEnabled;
|
||||
__CREATE_NTOS_DATA_IMPORT_ALIAS(KdDebuggerEnabled)
|
||||
#define KD_DEBUGGER_ENABLED (*KdDebuggerEnabled)
|
||||
extern BOOLEAN *KdDebuggerNotPresent;
|
||||
__CREATE_NTOS_DATA_IMPORT_ALIAS(KdDebuggerNotPresent)
|
||||
#define KD_DEBUGGER_NOT_PRESENT (*KdDebuggerNotPresent)
|
||||
#endif
|
||||
|
||||
#if (NTDDI_VERSION >= NTDDI_WIN2K)
|
||||
|
||||
@@ -987,6 +987,7 @@ extern NTSYSAPI volatile CCHAR KeNumberProcessors;
|
||||
extern NTSYSAPI CCHAR KeNumberProcessors;
|
||||
#else
|
||||
extern PCCHAR KeNumberProcessors;
|
||||
__CREATE_NTOS_DATA_IMPORT_ALIAS(KeNumberProcessors)
|
||||
#endif
|
||||
|
||||
$endif (_WDMDDK_)
|
||||
|
||||
@@ -147,8 +147,11 @@ typedef enum _MM_SYSTEM_SIZE {
|
||||
MmLargeSystem
|
||||
} MM_SYSTEMSIZE;
|
||||
|
||||
extern NTKERNELAPI BOOLEAN Mm64BitPhysicalAddress;
|
||||
extern PVOID MmBadPointer;
|
||||
#ifndef _NTSYSTEM_
|
||||
extern PBOOLEAN Mm64BitPhysicalAddress;
|
||||
__CREATE_NTOS_DATA_IMPORT_ALIAS(Mm64BitPhysicalAddress)
|
||||
#endif
|
||||
extern NTKERNELAPI PVOID MmBadPointer;
|
||||
|
||||
$endif (_WDMDDK_)
|
||||
$if (_NTDDK_)
|
||||
|
||||
@@ -1124,13 +1124,14 @@ HalGetDmaAlignmentRequirement(
|
||||
#define HalGetDmaAlignmentRequirement() 1L
|
||||
#endif
|
||||
|
||||
extern NTKERNELAPI PUSHORT NlsOemLeadByteInfo;
|
||||
#define NLS_OEM_LEAD_BYTE_INFO NlsOemLeadByteInfo
|
||||
|
||||
#ifdef NLS_MB_CODE_PAGE_TAG
|
||||
#undef NLS_MB_CODE_PAGE_TAG
|
||||
#ifdef _NTSYSTEM_
|
||||
extern PUSHORT NlsOemLeadByteInfo;
|
||||
#define NLS_OEM_LEAD_BYTE_INFO NlsOemLeadByteInfo
|
||||
#else
|
||||
extern PUSHORT *NlsOemLeadByteInfo;
|
||||
__CREATE_NTOS_DATA_IMPORT_ALIAS(NlsOemLeadByteInfo)
|
||||
#define NLS_OEM_LEAD_BYTE_INFO (*NlsOemLeadByteInfo)
|
||||
#endif
|
||||
#define NLS_MB_CODE_PAGE_TAG NlsMbOemCodePageTag
|
||||
|
||||
#if (NTDDI_VERSION >= NTDDI_VISTA)
|
||||
|
||||
|
||||
@@ -125,6 +125,7 @@ typedef struct _OBJECT_NAME_INFORMATION {
|
||||
} OBJECT_NAME_INFORMATION, *POBJECT_NAME_INFORMATION;
|
||||
|
||||
/* Exported object types */
|
||||
#ifdef _NTSYSTEM_
|
||||
extern POBJECT_TYPE NTSYSAPI CmKeyObjectType;
|
||||
extern POBJECT_TYPE NTSYSAPI ExEventObjectType;
|
||||
extern POBJECT_TYPE NTSYSAPI ExSemaphoreObjectType;
|
||||
@@ -132,6 +133,30 @@ extern POBJECT_TYPE NTSYSAPI IoFileObjectType;
|
||||
extern POBJECT_TYPE NTSYSAPI PsThreadType;
|
||||
extern POBJECT_TYPE NTSYSAPI SeTokenObjectType;
|
||||
extern POBJECT_TYPE NTSYSAPI PsProcessType;
|
||||
#else
|
||||
extern POBJECT_TYPE *CmKeyObjectType;
|
||||
extern POBJECT_TYPE *IoFileObjectType;
|
||||
extern POBJECT_TYPE *ExEventObjectType;
|
||||
extern POBJECT_TYPE *ExSemaphoreObjectType;
|
||||
extern POBJECT_TYPE *TmTransactionManagerObjectType;
|
||||
extern POBJECT_TYPE *TmResourceManagerObjectType;
|
||||
extern POBJECT_TYPE *TmEnlistmentObjectType;
|
||||
extern POBJECT_TYPE *TmTransactionObjectType;
|
||||
extern POBJECT_TYPE *PsProcessType;
|
||||
extern POBJECT_TYPE *PsThreadType;
|
||||
extern POBJECT_TYPE *SeTokenObjectType;
|
||||
__CREATE_NTOS_DATA_IMPORT_ALIAS(CmKeyObjectType)
|
||||
__CREATE_NTOS_DATA_IMPORT_ALIAS(IoFileObjectType)
|
||||
__CREATE_NTOS_DATA_IMPORT_ALIAS(ExEventObjectType)
|
||||
__CREATE_NTOS_DATA_IMPORT_ALIAS(ExSemaphoreObjectType)
|
||||
__CREATE_NTOS_DATA_IMPORT_ALIAS(TmTransactionManagerObjectType)
|
||||
__CREATE_NTOS_DATA_IMPORT_ALIAS(TmResourceManagerObjectType)
|
||||
__CREATE_NTOS_DATA_IMPORT_ALIAS(TmEnlistmentObjectType)
|
||||
__CREATE_NTOS_DATA_IMPORT_ALIAS(TmTransactionObjectType)
|
||||
__CREATE_NTOS_DATA_IMPORT_ALIAS(PsProcessType)
|
||||
__CREATE_NTOS_DATA_IMPORT_ALIAS(PsThreadType)
|
||||
__CREATE_NTOS_DATA_IMPORT_ALIAS(SeTokenObjectType)
|
||||
#endif
|
||||
|
||||
$endif (_WDMDDK_)
|
||||
$if (_NTIFS_)
|
||||
|
||||
+11
-3
@@ -197,11 +197,19 @@ typedef struct _EXCEPTION_POINTERS {
|
||||
PCONTEXT ContextRecord;
|
||||
} EXCEPTION_POINTERS, *PEXCEPTION_POINTERS;
|
||||
|
||||
/* MS definition is broken! */
|
||||
extern BOOLEAN NTSYSAPI NlsMbCodePageTag;
|
||||
extern BOOLEAN NTSYSAPI NlsMbOemCodePageTag;
|
||||
#ifdef _NTSYSTEM_
|
||||
extern BOOLEAN NlsMbCodePageTag;
|
||||
#define NLS_MB_CODE_PAGE_TAG NlsMbCodePageTag
|
||||
extern BOOLEAN NlsMbOemCodePageTag;
|
||||
#define NLS_MB_OEM_CODE_PAGE_TAG NlsMbOemCodePageTag
|
||||
#else
|
||||
extern BOOLEAN *NlsMbCodePageTag;
|
||||
__CREATE_NTOS_DATA_IMPORT_ALIAS(NlsMbCodePageTag)
|
||||
#define NLS_MB_CODE_PAGE_TAG (*NlsMbCodePageTag)
|
||||
extern BOOLEAN *NlsMbOemCodePageTag;
|
||||
__CREATE_NTOS_DATA_IMPORT_ALIAS(NlsMbOemCodePageTag)
|
||||
#define NLS_MB_OEM_CODE_PAGE_TAG (*NlsMbOemCodePageTag)
|
||||
#endif
|
||||
|
||||
#define SHORT_LEAST_SIGNIFICANT_BIT 0
|
||||
#define SHORT_MOST_SIGNIFICANT_BIT 1
|
||||
|
||||
@@ -588,4 +588,5 @@ SeLocateProcessImageName(
|
||||
((PSECURITY_SUBJECT_CONTEXT) SubjectContext)->PrimaryToken )
|
||||
|
||||
extern NTKERNELAPI PSE_EXPORTS SeExports;
|
||||
|
||||
$endif (_NTIFS_)
|
||||
|
||||
@@ -82,10 +82,13 @@ extern "C" {
|
||||
#endif
|
||||
|
||||
/* For ReactOS */
|
||||
#if !defined(_NTOSKRNL_) && !defined(_BLDR_)
|
||||
#if !defined(_NTOSKRNL_) && !defined(_BLDR_) && !defined(_NTSYSTEM_)
|
||||
#define NTKERNELAPI DECLSPEC_IMPORT
|
||||
#else
|
||||
#define NTKERNELAPI
|
||||
#ifndef _NTSYSTEM_
|
||||
#define _NTSYSTEM_
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined(_X86_) && !defined(_NTHAL_)
|
||||
@@ -129,6 +132,29 @@ extern "C" {
|
||||
#define ALLOC_DATA_PRAGMA 1
|
||||
#endif
|
||||
|
||||
#endif /* _MSC_VER */
|
||||
|
||||
/* These macros are used to create aliases for imported data. We need to do
|
||||
this to have declarations that are compatible with MS DDK */
|
||||
#ifdef _M_IX86
|
||||
#define __SYMBOL(_Name) "_"#_Name
|
||||
#define __IMPORTSYMBOL(_Name) "__imp__"#_Name
|
||||
#define __IMPORTNAME(_Name) _imp__##_Name
|
||||
#else
|
||||
#define __SYMBOL(_Name) #_Name
|
||||
#define __IMPORTSYMBOL(_Name) "__imp_"#_Name
|
||||
#define __IMPORTNAME(_Name) __imp_##_Name
|
||||
#endif
|
||||
#ifdef _MSC_VER
|
||||
#define __CREATE_NTOS_DATA_IMPORT_ALIAS(_Name) \
|
||||
__pragma(comment(linker, "/alternatename:"__SYMBOL(_Name) "=" __IMPORTSYMBOL(_Name)))
|
||||
#else /* !_MSC_VER */
|
||||
#ifndef __STRINGIFY
|
||||
#define __STRINGIFY(_exp) #_exp
|
||||
#endif
|
||||
#define _Pragma_redefine_extname(_Name, _Target) _Pragma(__STRINGIFY(redefine_extname _Name _Target))
|
||||
#define __CREATE_NTOS_DATA_IMPORT_ALIAS(_Name) \
|
||||
_Pragma_redefine_extname(_Name,__IMPORTNAME(_Name))
|
||||
#endif
|
||||
|
||||
#if defined(_WIN64)
|
||||
|
||||
Reference in New Issue
Block a user