home *** CD-ROM | disk | FTP | other *** search
/ High Voltage Shareware / high1.zip / high1 / DIR24 / EDMI5.ZIP / IFSR0.ZIP / R0DEVHLP.H < prev    next >
C/C++ Source or Header  |  1993-07-02  |  4KB  |  136 lines

  1. /******************************************************************************
  2. *******************************************************************************
  3. **
  4. ** EXR0R3 - A ring 0/ring 3 IFS skeleton
  5. ** Copyright (C) 1993 by Andre Asselin
  6. **
  7. ** R0DEVHLP.H - C interface to DevHelps
  8. **
  9. ** History:
  10. ** 6/23/93 - created
  11. **
  12. *******************************************************************************
  13. ******************************************************************************/
  14.  
  15. #if defined(__cplusplus)
  16. extern "C" {
  17. #endif
  18.  
  19. typedef unsigned short SEL;
  20. typedef char HLOCK[12];
  21. typedef unsigned long LINADDR;
  22. typedef unsigned long PHYSADDR;
  23. typedef struct PageList_s {
  24.    PHYSADDR pl_PhysAddr;
  25.    unsigned long pl_cb;
  26. } PAGELIST;
  27.  
  28. unsigned short pascal AllocGDTSelector(unsigned short NumSels,
  29.                                        SEL far *pSelArr);
  30.  
  31. /* Dos variable indexes used in DevHlp_GetDOSVar */
  32. #define DHGETDOSV_SYSINFOSEG         1
  33. #define DHGETDOSV_LOCINFOSEG         2
  34. #define DHGETDOSV_VECTORSDF          4
  35. #define DHGETDOSV_VECTORREBOOT       5
  36. #define DHGETDOSV_YIELDFLAG          7
  37. #define DHGETDOSV_TCYIELDFLAG        8
  38. #define DHGETDOSV_DOSCPTAG          11
  39.  
  40. /* Global Info Seg */
  41.  
  42. typedef struct _GINFOSEG {      
  43.     ULONG   time;
  44.     ULONG   msecs;
  45.     UCHAR   hour;
  46.     UCHAR   minutes;
  47.     UCHAR   seconds;
  48.     UCHAR   hundredths;
  49.     USHORT  timezone;
  50.     USHORT  cusecTimerInterval;
  51.     UCHAR   day;
  52.     UCHAR   month;
  53.     USHORT  year;
  54.     UCHAR   weekday;
  55.     UCHAR   uchMajorVersion;
  56.     UCHAR   uchMinorVersion;
  57.     UCHAR   chRevisionLetter;
  58.     UCHAR   sgCurrent;
  59.     UCHAR   sgMax;
  60.     UCHAR   cHugeShift;
  61.     UCHAR   fProtectModeOnly;
  62.     USHORT  pidForeground;
  63.     UCHAR   fDynamicSched;
  64.     UCHAR   csecMaxWait;
  65.     USHORT  cmsecMinSlice;
  66.     USHORT  cmsecMaxSlice;
  67.     USHORT  bootdrive;
  68.     UCHAR   amecRAS[32];
  69.     UCHAR   csgWindowableVioMax;
  70.     UCHAR   csgPMMax;
  71. } GINFOSEG;
  72. typedef GINFOSEG far *PGINFOSEG;
  73.  
  74. /* local info seg */
  75.  
  76. typedef struct _LINFOSEG {      
  77.     PID     pidCurrent;
  78.     PID     pidParent;
  79.     USHORT  prtyCurrent;
  80.     TID     tidCurrent;
  81.     USHORT  sgCurrent;
  82.     UCHAR   rfProcStatus;
  83.     UCHAR   dummy1;
  84.     USHORT  fForeground;
  85.     UCHAR   typeProcess;
  86.     UCHAR   dummy2;
  87.     SEL     selEnvironment;
  88.     USHORT  offCmdLine;
  89.     USHORT  cbDataSegment;
  90.     USHORT  cbStack;
  91.     USHORT  cbHeap;
  92.     USHORT  hmod;
  93.     SEL     selDS;
  94. } LINFOSEG;
  95. typedef LINFOSEG far *PLINFOSEG;
  96.  
  97. unsigned short pascal GetDOSVar(USHORT Index, unsigned long far *Result);
  98.  
  99. unsigned short pascal LinToGDTSelector(SEL Selector,
  100.                                        LINADDR LinearAddress,
  101.                                        unsigned long Size);
  102.  
  103. #define VMAF_16M              0x0001
  104. #define VMAF_FIXED            0x0002
  105. #define VMAF_SWAPPABLE        0x0004
  106. #define VMAF_CONTIGUOUS       0x0008
  107. #define VMAF_MAPPHYS          0x0010
  108. #define VMAF_GLOBALSPACE      0x0020
  109. #define VMAF_SCREENGROUP      0x0040
  110. #define VMAF_NOCOMMIT         0x0100
  111. #define VMAPA_NOPHYSADDR      -1L
  112.  
  113. unsigned short pascal VMAlloc(PHYSADDR PhysAddr, ULONG Size, ULONG Flags,
  114.                               LINADDR far *LinAddr);
  115.  
  116. #define VMLAF_NOBLOCK         0x0001
  117. #define VMLAF_CONTIGUOUS      0x0002
  118. #define VMLAF_16M             0x0004
  119. #define VMLAF_WRITE           0x0008
  120. #define VMLAF_LONG            0x0010
  121. #define VMLAF_VERIFY          0x0020
  122. #define VMLPL_NOPAGELIST      -1L
  123.  
  124. unsigned short pascal VMLock(LINADDR LinearAddress,
  125.                              unsigned long Length,
  126.                              LINADDR pPageList,
  127.                              LINADDR pLockHandle,
  128.                              unsigned long ActionFlags,
  129.                              unsigned long far *NumElements);
  130.  
  131. unsigned short pascal VMUnlock(LINADDR LockHandle);
  132.  
  133. #if defined(__cplusplus)
  134. }
  135. #endif
  136.