home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Misc / DC-POS24.LZX / pOS / IncPOS.lzx / pGFX / MonDev.h < prev    next >
Encoding:
C/C++ Source or Header  |  1997-03-18  |  7.1 KB  |  275 lines

  1. #ifndef __INC_POS_PGFX_MONDEV_H
  2. #define __INC_POS_PGFX_MONDEV_H
  3. /*******************************************************************
  4.  Includes Release 24
  5.  (C) Copyright 1995-1997 proDAD
  6.      All Rights Reserved
  7.  
  8.  $AUT Holger Burkarth
  9.  $DAT >>MonDev.h<<   25 Jan 1997    09:34:07 - (C) ProDAD
  10. *******************************************************************/
  11. #ifndef __INC_POS_PEXEC_DEVICE_H
  12. #include <pExec/Device.h>
  13. #endif
  14. #ifndef __INC_POS_PDOS_DOSTYPES_H
  15. #include <pDos/DosTypes.h>
  16. #endif
  17.  
  18.  
  19. /*----------------------------------
  20. -----------------------------------*/
  21. struct pOS_MonIOReq
  22. {
  23.   struct pOS_Message    mr_Message;
  24.   struct pOS_MonDevice *mr_Device;   /* device node pointer  */
  25.   struct pOS_Unit      *mr_Unit;     /* unit (driver private) */
  26.   UWORD                 mr_Command;  /* (enum pOS_MonitorIOReqCommands) */
  27.   UBYTE                 mr_Flags;    /* (enum pOS_IOReqFlags) */
  28.   SBYTE                 mr_Error2;   /* (enum pOS_DosErrors) */
  29.   ULONG                 mr_UserData; /* for Handler own use */
  30.   ULONG                 mr_CretData; /* creater own data */
  31.  
  32.   union {
  33.     UBYTE mr_Reserved[24];
  34.  
  35.     struct {  /*** MONCMD_LockObject ***/
  36.       const struct pOS_MonLock  *mrlk_CurrLock;
  37.       const dosname_t           *mrlk_Name;
  38.             ULONG                mrlk_Mode;     /* (enum pOS_MonLockAccess) */
  39.             struct pOS_MonLock  *mrlk_ResLock;
  40.     } mr_LockObj;
  41.  
  42.     struct {  /*** MONCMD_UnlockObject ***/
  43.       struct pOS_MonLock        *mrul_Lock;
  44.     } mr_UnlockObj;
  45.  
  46.     struct {  /*** MONCMD_ExamineObject ***/
  47.       const struct pOS_MonLock      *mrex_Lock; /** ==NULL => File **/
  48.       const struct pOS_MonFile      *mrex_FH;
  49.             struct pOS_MonInfoBlock *mrex_MIB;
  50.     } mr_ExamineObj;
  51.  
  52.     struct {  /*** MONCMD_ExNextObject ***/
  53.       const struct pOS_MonLock      *mren_Lock;
  54.             UBYTE dren_d[4];
  55.             struct pOS_MonInfoBlock *mren_MIB;
  56.     } mr_ExNextObj;
  57.  
  58.     struct {  /*** MONCMD_DupObjectLock ***/
  59.       const struct pOS_MonLock      *mrdp_Lock;
  60.             UBYTE drdp_d[8];
  61.             struct pOS_MonLock      *mrdp_ResLock;  /* Result */
  62.     } mr_DupObjLock;
  63.  
  64.  
  65.     struct {  /*** MONCMD_OpenFH ***/
  66.       const struct pOS_MonLock       *mrop_CurrLock; /* CurrentDir-Lock oder NULL */
  67.       const dosname_t                *mrop_Name;      /* local path */
  68.             UWORD                     mrop_Mode;     /* (enum pOS_MonFileMode) */
  69.             UBYTE mrop_d[2];
  70.             struct pOS_MonFile       *mrop_ResFH;    /* Result */
  71.     } mr_OpenFH;
  72.  
  73.     struct {  /*** MONCMD_CloseFH ***/
  74.             struct pOS_MonFile    *mrcl_FH;    /*  */
  75.     } mr_CloseFH;
  76.  
  77.  
  78.     struct {  /*** MONCMD_DupFH ***/
  79.       const struct pOS_MonFile    *mrdf_FH;
  80.             UBYTE mrdf_d[8];
  81.             struct pOS_MonFile    *mrdf_ResFH;  /* Result */
  82.     } mr_DupFH;
  83.  
  84.  
  85.     struct {  /*** MONCMD_Form ***/
  86.       struct pOS_MonForm  *mrfm_MF;
  87.     } mr_Form;
  88.  
  89.     struct {  /*** MONCMD_UpdateView ***/
  90.       struct pOS_MonFile *mruv_FH;    /*  */
  91.       ULONG               mruv_Flags; /* enum pOS_MonitorUpdateViewFlags */
  92.     } mr_UpView;
  93.  
  94.   } mr_U;
  95.  
  96. };
  97.  
  98.  
  99.  
  100. enum pOS_MonitorIOReqCommands
  101. {
  102.   MONCMD_LockObject =CMD_NONSTD,
  103.   MONCMD_UnlockObject,
  104.   MONCMD_ExamineObject,
  105.   MONCMD_ExNextObject,
  106.   MONCMD_DupObjectLock,
  107.   MONCMD_Pad1,
  108.   MONCMD_Pad2,
  109.   MONCMD_OpenFH,
  110.   MONCMD_CloseFH,
  111.   MONCMD_DupFH,
  112.   MONCMD_Pad3,
  113.   MONCMD_Pad4,
  114.   MONCMD_Pad5,
  115.   MONCMD_OpenFromLock,
  116.   MONCMD_Form,
  117.   MONCMD_UpdateView,
  118.  
  119.  
  120.   MONCMD_MAX
  121. };
  122.  
  123.  
  124.  
  125. enum pOS_MonitorUpdateViewFlags /** MONCMD_UpdateView mruv_Flags **/
  126. {
  127.   MONUPVF_All      = ~0,
  128.   MONUPVF_Colors   = 0x0001,
  129.   MONUPVF_Sprits   = 0x0002,
  130.   MONUPVF_Position = 0x0004,
  131. };
  132.  
  133.  
  134. /*----------------------------------
  135. -----------------------------------*/
  136. struct pOS_MonDevice
  137. {
  138.   struct pOS_Library  mdv_Dev;
  139.  
  140.   UWORD               mdv_Type;     /* (enum pOS_MonDeviceTypes) */
  141.  
  142.   ULONG               mdv_LockCnt;  /* Lock-Counter (Handler privat) */
  143.   ULONG               mdv_FHCnt;    /* FH-Counter   (Handler privat) */
  144.   struct pOS_List     mdv_LockList; /* Liste der aktiven Locks (Handler privat) */
  145.   struct pOS_List     mdv_FileList; /* Liste der aktiven FileHandle (Handler privat) */
  146.   struct pOS_List     mdv_Lst;      /* Ist für Assigns, .... */
  147.   struct pOS_MonIOReq mdv_IOMaster;
  148.  
  149.   union {
  150.     UBYTE  mdv_Reserved2[32];
  151.  
  152.     struct {
  153.             UBYTE mdvh_Pad[4];
  154.       const struct pOS_MonMountDevice *mdvh_Mount;
  155.     } mdv_Handler;
  156.  
  157.   } mdv_U;
  158. };
  159.  
  160.  
  161.  
  162. enum pOS_MonDeviceTypes
  163. {
  164.   MDTYP_Handler=1,
  165.   MDTYP_Assign,
  166. };
  167.  
  168.  
  169.  
  170.  
  171. /*----------------------------------
  172. -----------------------------------*/
  173. struct pOS_MonMountDevice
  174. {
  175.   struct pOS_ExNode mmd_Node;    /* ln_Name, pOS_AllocVec() */
  176.  
  177.   UWORD             mmd_Type;    /* (enum pOS_MonMountDevType) */
  178.   ULONG             mmd_Flags;   /* (enum pOS_MonMountDevFlags) */
  179.  
  180.   UBYTE             mmd_Reserved[12];
  181.  
  182.   union {
  183.     UBYTE mmd_UReserved[128];
  184.  
  185.     struct { /* MMDTYP_StdGfx */
  186.       const CHAR* mmstd_MDName;    /* MonDevice-Name (Handler) */
  187.       APTR  mmstd_MDPrivate;       /* MonDevice-Private-Datas pOS_AllocVec() */
  188.       CHAR *mmstd_Startup;         /* Startup-String pOS_AllocVec() */
  189.       const CHAR* mmstd_LibName;   /* Gfx-Library */
  190.     } mmd_StdGfx;
  191.  
  192.  
  193.  
  194.   } mmd_U;
  195. };
  196.  
  197.  
  198.  
  199. enum pOS_MonMountDevType
  200. {
  201.   MMDTYP_StdGfx =0x21,  /* Standard-Device */
  202.   MMDTYP_NetGfx =0x23,  /* Network-Device */
  203. };
  204.  
  205.  
  206. enum pOS_MonMountDevFlags
  207. {
  208.   MMDF_NameAllocVec = 0x0001,   /* ln_Name, pOS_AllocVec() */
  209. };
  210.  
  211.  
  212.  
  213.  
  214.  
  215. /*----------------------------------
  216. -----------------------------------*/
  217. struct pOS_MonDevPathInfo
  218. {
  219.   const struct pOS_MonLock   *mopi_CurrDir;   /* Absoluter Pfad, kann null sein */
  220.   const dosname_t            *mopi_PathName;  /* String-Name */
  221.         dosname_t            *mopi_Buffer;
  222.         size_t               mopi_BufSize;
  223.  
  224.   const struct pOS_MonLock   *mopi_ResDir;    /* Result-Lock */
  225.   const dosname_t            *mopi_ResName;
  226.  
  227.         struct pOS_MonDevice *mopi_Device;
  228.         struct pOS_MonDevice *mopi_2thDev;
  229.  
  230.         UBYTE mopi_Reserved[16];
  231. };
  232.  
  233.  
  234.  
  235.  
  236. /*----------------------------------
  237. -----------------------------------*/
  238. struct pOS_MonResidentLibInit
  239. {
  240.             size_t  mlit_DataSize;         /* device data space size */
  241.   __CONST__ ULONG **mlit_FuncTable;        /* table of entry points   */
  242.             VOID   *mlit_DataInit;         /* table of data initializers */
  243.             BOOL  (*mlit_InitFunc)(_R_LB struct pOS_ExecBase*,_R_A0 struct pOS_MonDevice*); /* initialization function to run */
  244.   const struct pOS_MonMountDevice* mlit_Mount;
  245.   UBYTE mlit_Reserved[4];
  246. };
  247.  
  248.  
  249.  
  250. /*----------------------------------
  251. -----------------------------------*/
  252. struct pOS_StdMonDevFunction
  253. {
  254.   struct pOS_LibraryFunction Reserved2[8];
  255.  
  256.   VOID  (*AbortIO_func)(_R_LB struct pOS_MonDevice*,_R_A0 struct pOS_MonIOReq*);
  257.   UBYTE _d5[8];
  258.   VOID  (*BeginIO_func)(_R_LB struct pOS_MonDevice*,_R_A0 struct pOS_MonIOReq*);
  259.   UBYTE _d4[8];
  260.  
  261.   struct pOS_LibraryFunction Reserved1[8];
  262.  
  263.   struct pOS_SegmentLst* (*Expunge_func)(_R_LB struct pOS_MonDevice*);
  264.   UBYTE _d3[8];
  265.   struct pOS_LibraryFunction Res2;
  266.   struct pOS_LibraryFunction Res1;
  267. };
  268.  
  269.  
  270. #define _pOS_GetStdMonDevFunction(dev) \
  271.  ( (struct pOS_StdMonDevFunction*)((ULONG)(dev) - sizeof(struct pOS_StdMonDevFunction)) )
  272.  
  273.  
  274. #endif
  275.