home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD2.mdf / c / library / mslang / vm / h / ems.h next >
Encoding:
C/C++ Source or Header  |  1993-12-15  |  4.1 KB  |  102 lines

  1. /***
  2. *ems.h -
  3. *
  4. *       Copyright (c) 1989-1992, Microsoft Corporation.  All rights reserved.
  5. *
  6. *******************************************************************************/
  7.  
  8. typedef unsigned HEMS;
  9. typedef HEMS _far *PHEMS;
  10.  
  11. #pragma pack(1)
  12.  
  13. typedef struct handle_page_struct {
  14.    HEMS     hems;
  15.    unsigned cPage;
  16.    } handle_page;
  17.  
  18. typedef struct log_phys_map_struct {
  19.    unsigned iPageLogical;
  20.    union {
  21.       unsigned iPagePhysical;
  22.       _segment segPage;
  23.       };
  24.    } log_phys_map;
  25.  
  26. typedef struct map_and_jump_struct {
  27.    void _far           *pTarget;
  28.    unsigned char        cPage;
  29.    log_phys_map _far   *pMap;
  30.    } map_and_jump;
  31.  
  32. typedef struct map_and_call_struct {
  33.    void _far           *pTarget;
  34.    unsigned char        cPageNew;
  35.    log_phys_map _far   *pMapNew;
  36.    unsigned char        cPageOld;
  37.    log_phys_map _far   *pMapOld;
  38.    unsigned             reserved[4];
  39.    } map_and_call;
  40.  
  41. typedef struct move_source_dest_struct {
  42.    unsigned long        cb;
  43.    unsigned char        fEmsSource;
  44.    HEMS                 hemsSource;
  45.    unsigned             ibSource;
  46.    union {
  47.       unsigned          iPageSource;
  48.       _segment          segSource;
  49.       };
  50.    unsigned char        fEmsDest;
  51.    HEMS                 hemsDest;
  52.    unsigned             ibDest;
  53.    union {
  54.       unsigned          iPageDest;
  55.       _segment          segDest;
  56.       };
  57.    } move_source_dest;
  58.  
  59. #pragma pack()
  60.  
  61. int PUBLIC _far __FEmsCheckInstalled(void);
  62.  
  63. ERR PUBLIC _far __ErrEmsGetStatus(void);
  64. ERR PUBLIC _far __ErrEmsGetPageFrameAddress(_segment _far *pseg);
  65. ERR PUBLIC _far __ErrEmsGetUnallocatedPageCount(unsigned _far *pcPage, unsigned _far *pcPageTotal);
  66. ERR PUBLIC _far __ErrEmsAllocatePages(PHEMS phems, unsigned cPage);
  67. ERR PUBLIC _far __ErrEmsMapHandlePage(HEMS hems, unsigned char iPagePhysical, unsigned iPageLogical);
  68. ERR PUBLIC _far __ErrEmsDeallocatePages(HEMS hems);
  69. ERR PUBLIC _far __ErrEmsGetVersion(unsigned char _far *pbVersion);
  70. ERR PUBLIC _far __ErrEmsSavePageMap(HEMS hems);
  71. ERR PUBLIC _far __ErrEmsRestorePageMap(HEMS hems);
  72. ERR PUBLIC _far __ErrEmsGetHandleCount(unsigned _far *pcOpenHandles);
  73. ERR PUBLIC _far __ErrEmsGetHandlePages(HEMS hems, unsigned _far *pcPage);
  74. ERR PUBLIC _far __ErrEmsGetAllHandlePages(handle_page (*pHandlePage)[], unsigned _far *pcOpenHandles);
  75. ERR PUBLIC _far __ErrEmsGetPageMap(void _far *pPageMap);
  76. ERR PUBLIC _far __ErrEmsSetPageMap(void _far *pPageMap);
  77. ERR PUBLIC _far __ErrEmsGetSetPageMap(void _far *pPageMapIn, void _far *pPageMapOut);
  78. ERR PUBLIC _far __ErrEmsGetSizeOfPageMap(unsigned char _far *pcbPageMap);
  79. ERR PUBLIC _far __ErrEmsGetPartialPageMap(log_phys_map _far *pMap, void _far *pPageMap);
  80. ERR PUBLIC _far __ErrEmsSetPartialPageMap(void _far *pPageMap);
  81. ERR PUBLIC _far __ErrEmsGetSizeOfPartialPageMap(unsigned cPage, unsigned char _far *pcbPageMap);
  82. ERR PUBLIC _far __ErrEmsMapMultipleHandlePages(HEMS hems, unsigned cPage, log_phys_map _far *pMap, int fSegment);
  83. ERR PUBLIC _far __ErrEmsReallocatePages(HEMS hems, unsigned cPage);
  84. ERR PUBLIC _far __ErrEmsGetHandleAttribute(HEMS hems, unsigned char _far *pbAttribute);
  85. ERR PUBLIC _far __ErrEmsSetHandleAttribute(HEMS hems, char bAttribute);
  86. ERR PUBLIC _far __ErrEmsGetAttributeCapability(unsigned char _far *pbCapability);
  87. ERR PUBLIC _far __ErrEmsGetHandleName(HEMS hems, char (*pName)[8]);
  88. ERR PUBLIC _far __ErrEmsSetHandleName(HEMS hems, char (*pName)[8]);
  89. ERR PUBLIC _far __ErrEmsGetHandleDirectory(void _far * /* UNDONE */ pDirectory, unsigned char _far *pcEntries);
  90. ERR PUBLIC _far __ErrEmsSearchForNamedHandle(PHEMS phems, char (*pName)[8]);
  91. ERR PUBLIC _far __ErrEmsGetTotalHandles(unsigned _far *pcHandles);
  92. ERR PUBLIC _far __ErrEmsAlterPageMapAndJump(HEMS hems, int fPhysical, map_and_jump _far *p);
  93. ERR PUBLIC _far __ErrEmsAlterPageMapAndCall(HEMS hems, int fPhysical, map_and_call _far *p);
  94. ERR PUBLIC _far __ErrEmsGetPageMapStackSpaceSize(unsigned _far *pcbStack);
  95. ERR PUBLIC _far __ErrEmsMoveMemoryRegion(move_source_dest _far *p);
  96. ERR PUBLIC _far __ErrEmsExchangeMemoryRegion(move_source_dest _far *p);
  97.  
  98.  
  99. #define cEmsPagesLim 2048U
  100.  
  101. #define errEmsBase   0x3000
  102.