2015-03-07 00:43:17 +00:00
|
|
|
/*
|
|
|
|
* COPYRIGHT: GPLv2+ - See COPYING in the top level directory
|
|
|
|
* PROJECT: ReactOS Virtual DOS Machine
|
2015-04-21 22:48:28 +00:00
|
|
|
* FILE: emsdrv.h
|
|
|
|
* PURPOSE: DOS EMS Driver
|
2015-03-07 00:43:17 +00:00
|
|
|
* PROGRAMMERS: Aleksandar Andrejevic <theflash AT sdf DOT lonestar DOT org>
|
|
|
|
*/
|
|
|
|
|
2015-04-21 22:48:28 +00:00
|
|
|
#ifndef _EMSDRV_H_
|
|
|
|
#define _EMSDRV_H_
|
2015-03-07 00:43:17 +00:00
|
|
|
|
|
|
|
/* DEFINITIONS ****************************************************************/
|
|
|
|
|
2015-05-06 22:41:22 +00:00
|
|
|
#define EMS_VERSION_NUM 0x40
|
2015-03-07 00:43:17 +00:00
|
|
|
#define EMS_INTERRUPT_NUM 0x67
|
2015-03-13 17:57:51 +00:00
|
|
|
#define EMS_SEGMENT 0xD000
|
2015-03-07 00:43:17 +00:00
|
|
|
#define EMS_MAX_HANDLES 16
|
|
|
|
#define EMS_PAGE_BITS 14
|
|
|
|
#define EMS_PAGE_SIZE (1 << EMS_PAGE_BITS)
|
|
|
|
#define EMS_PHYSICAL_PAGES 4
|
|
|
|
|
|
|
|
#define EMS_STATUS_OK 0x00
|
|
|
|
#define EMS_STATUS_INTERNAL_ERROR 0x80
|
|
|
|
#define EMS_STATUS_INVALID_HANDLE 0x83
|
|
|
|
#define EMS_STATUS_NO_MORE_HANDLES 0x85
|
|
|
|
#define EMS_STATUS_INSUFFICIENT_PAGES 0x88
|
|
|
|
#define EMS_STATUS_ZERO_PAGES 0x89
|
|
|
|
#define EMS_STATUS_INV_LOGICAL_PAGE 0x8A
|
|
|
|
#define EMS_STATUS_INV_PHYSICAL_PAGE 0x8B
|
|
|
|
#define EMS_STATUS_UNKNOWN_FUNCTION 0x8F
|
|
|
|
|
|
|
|
typedef struct _EMS_HANDLE
|
|
|
|
{
|
|
|
|
BOOLEAN Allocated;
|
|
|
|
USHORT PageCount;
|
|
|
|
LIST_ENTRY PageList;
|
2015-05-06 03:38:41 +00:00
|
|
|
UCHAR Name[8];
|
2015-03-07 00:43:17 +00:00
|
|
|
} EMS_HANDLE, *PEMS_HANDLE;
|
|
|
|
|
|
|
|
typedef struct _EMS_PAGE
|
|
|
|
{
|
|
|
|
LIST_ENTRY Entry;
|
|
|
|
USHORT Handle;
|
|
|
|
} EMS_PAGE, *PEMS_PAGE;
|
|
|
|
|
2015-03-08 00:36:46 +00:00
|
|
|
#pragma pack(push, 1)
|
|
|
|
|
|
|
|
typedef struct _EMS_COPY_DATA
|
|
|
|
{
|
|
|
|
ULONG RegionLength;
|
|
|
|
UCHAR SourceType;
|
|
|
|
USHORT SourceHandle;
|
|
|
|
USHORT SourceOffset;
|
|
|
|
USHORT SourceSegment;
|
|
|
|
UCHAR DestType;
|
|
|
|
USHORT DestHandle;
|
|
|
|
USHORT DestOffset;
|
|
|
|
USHORT DestSegment;
|
|
|
|
} EMS_COPY_DATA, *PEMS_COPY_DATA;
|
|
|
|
|
|
|
|
#pragma pack(pop)
|
|
|
|
|
2015-04-21 22:48:28 +00:00
|
|
|
#endif
|
2015-03-07 00:43:17 +00:00
|
|
|
|
2015-04-21 22:48:28 +00:00
|
|
|
/* FUNCTIONS ******************************************************************/
|
2015-03-07 00:43:17 +00:00
|
|
|
|
2015-04-21 22:48:28 +00:00
|
|
|
BOOLEAN EmsDrvInitialize(ULONG TotalPages);
|
|
|
|
VOID EmsDrvCleanup(VOID);
|