windows-nt/Source/XPSP1/NT/base/mvdm/xms.486/xms.h
2020-09-26 16:20:57 +08:00

157 lines
2.6 KiB
C

/* xms.h - main include file for dem
*
* Modification History
*
* Sudeepb 31-Mar-1991 Created
*
* williamh 25-Sept-1992 Added UMB support
*/
/*
#define WIN
#define FLAT_32
#include <nt.h>
#include <ntrtl.h>
#include <nturtl.h>
#define _WINDOWS
#include <windows.h>
*/
#ifdef DOS
#define SIGNALS
#endif
#ifdef OS2_16
#define OS2
#define SIGNALS
#endif
#ifdef OS2_32
#define OS2
#define FLAT_32
#endif
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <malloc.h>
#include <process.h>
#ifdef WIN_16
#define WIN
#define API16
#endif
#ifdef WIN_32
#define WIN
#define FLAT_32
#define TRUE_IF_WIN32 1
#include <nt.h>
#include <ntrtl.h>
#include <nturtl.h>
#else
#define TRUE_IF_WIN32 0
#endif
#ifdef FLAT_32
#ifndef i386
#define ALIGN_32
#else
#define NOALIGN_32
#endif
#endif
#ifdef WIN
#define _WINDOWS
#include <windows.h>
#endif
#ifdef SIGNALS
#include <conio.h>
#include <signal.h>
#endif
#ifdef OS2_32
#include <excpt.h>
#define XCPT_SIGNAL 0xC0010003
#endif
#include <xmsexp.h>
#include <suballoc.h>
#define SIZE_PARAGRAPH 16
#define XMSUMB_THRESHOLD 3 * SIZE_PARAGRAPH
/** Basic Typedefs of XMS **/
typedef VOID (*PFNSVC)(VOID);
typedef struct _ExtMemMove {
ULONG mm_len; // Move Length
USHORT mm_hSource; // Source Handle
ULONG mm_SourceOffset; // Source Offset
USHORT mm_hDest; // Dest Handle
ULONG mm_DestOffset; // Dest. offset
} EXTMEMMOVE, *PEXTMEMMOVE;
typedef struct _XMSUMB_ {
WORD Segment;
WORD Size;
WORD Owner;
struct _XMSUMB_ *Next;
} XMSUMB, *PXMSUMB;
/** Function Prototypes */
VOID xmsA20 (VOID);
VOID xmsAllocBlock (VOID);
VOID xmsFreeBlock (VOID);
VOID xmsReallocBlock (VOID);
VOID xmsMoveBlock (VOID);
VOID xmsSysPageSize (VOID);
VOID xmsQueryExtMem (VOID);
VOID xmsQueryFreeExtMem (VOID);
ULONG xmsGetMemorySize (BOOL);
ULONG xmsGetDefaultVDMSize (VOID);
VOID xmsInitUMB (VOID);
VOID xmsRequestUMB (VOID);
VOID xmsReleaseUMB (VOID);
VOID xmsReleaseUMBNotify (PVOID, ULONG);
VOID xmsInsertUMB (PVOID, ULONG);
VOID xmsNotifyHookI15 (VOID);
VOID xmsDisableA20Wrapping (VOID);
VOID xmsEnableA20Wrapping (VOID);
NTSTATUS
xmsCommitBlock(
ULONG BaseAddress,
ULONG Size
);
NTSTATUS
xmsDecommitBlock(
ULONG BaseAddress,
ULONG Size
);
VOID
xmsMoveMemory(
ULONG Source,
ULONG Destination,
ULONG Count
);
#ifndef i386
BOOL sas_manage_xms (VOID * start_addr, ULONG cb, INT a_or_f);
#endif
/** External Data */
extern ULONG xmsMemorySize;
extern BYTE * pHimemA20State;