[BASESRV][NTVDM][TESTVDD] Improve the FILE header section. Brought to you by Adam...
[reactos.git] / reactos / subsystems / mvdm / ntvdm / dos / dos32krnl / himem.h
1 /*
2 * COPYRIGHT: GPLv2+ - See COPYING in the top level directory
3 * PROJECT: ReactOS Virtual DOS Machine
4 * FILE: subsystems/mvdm/ntvdm/dos/dos32krnl/himem.h
5 * PURPOSE: DOS XMS Driver and UMB Provider
6 * PROGRAMMERS: Aleksandar Andrejevic <theflash AT sdf DOT lonestar DOT org>
7 * Hermes Belusca-Maito (hermes.belusca@sfr.fr)
8 */
9
10 #ifndef _HIMEM_H_
11 #define _HIMEM_H_
12
13 /* DEFINITIONS ****************************************************************/
14
15 #define XMS_ADDRESS 0x110000 // Just above HMA
16 #define XMS_BLOCKS 0x3BC0 // XMS_ADDRESS + (XMS_BLOCKS * XMS_BLOCK_SIZE) == 16 MB
17 #define XMS_BLOCK_SIZE 1024
18 #define XMS_MAX_HANDLES 16 // Specification: min 1, max 128, default 32
19
20 #define XMS_STATUS_SUCCESS 0x00
21 #define XMS_STATUS_NOT_IMPLEMENTED 0x80
22 #define XMS_STATUS_A20_ERROR 0x82
23 #define XMS_STATUS_HMA_DOES_NOT_EXIST 0x90
24 #define XMS_STATUS_HMA_IN_USE 0x91
25 #define XMS_STATUS_HMA_MIN_SIZE 0x92
26 #define XMS_STATUS_HMA_NOT_ALLOCATED 0x93
27 #define XMS_STATUS_A20_STILL_ENABLED 0x94
28 #define XMS_STATUS_OUT_OF_MEMORY 0xA0
29 #define XMS_STATUS_OUT_OF_HANDLES 0xA1
30 #define XMS_STATUS_INVALID_HANDLE 0xA2
31 #define XMS_STATUS_BAD_SRC_HANDLE 0xA3
32 #define XMS_STATUS_BAD_DEST_HANDLE 0xA4
33 #define XMS_STATUS_BAD_SRC_OFFSET 0xA5
34 #define XMS_STATUS_BAD_DEST_OFFSET 0xA6
35 #define XMS_STATUS_NOT_LOCKED 0xAA
36 #define XMS_STATUS_LOCKED 0xAB
37 #define XMS_STATUS_LOCK_OVERFLOW 0xAC
38 #define XMS_STATUS_CANNOT_LOCK 0xAD
39 #define XMS_STATUS_SMALLER_UMB 0xB0
40 #define XMS_STATUS_OUT_OF_UMBS 0xB1
41 #define XMS_STATUS_INVALID_UMB 0xB2
42
43 typedef struct _XMS_HANDLE
44 {
45 BYTE Handle;
46 BYTE LockCount;
47 WORD Size;
48 DWORD Address;
49 } XMS_HANDLE, *PXMS_HANDLE;
50
51 #pragma pack(push, 1)
52 typedef struct _XMS_COPY_DATA
53 {
54 DWORD Count;
55 WORD SourceHandle;
56 DWORD SourceOffset;
57 WORD DestHandle;
58 DWORD DestOffset;
59 } XMS_COPY_DATA, *PXMS_COPY_DATA;
60 #pragma pack(pop)
61
62 /* FUNCTIONS ******************************************************************/
63
64 BOOLEAN XmsGetDriverEntry(PDWORD Pointer);
65 VOID XmsInitialize(VOID);
66 VOID XmsCleanup(VOID);
67
68 #endif // _HIMEM_H_
69
70 /* EOF */