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

  1. #ifndef __INC_POS_PDOS_DOSDEV_H
  2. #define __INC_POS_PDOS_DOSDEV_H
  3. /*******************************************************************
  4.  Includes Release 24
  5.  (C) Copyright 1995-1997 proDAD
  6.      All Rights Reserved
  7.  
  8.  $AUT Holger Burkarth
  9.  $DAT >>DosDev.h<<   02 Mar 1997    17:45:04 - (C) ProDAD
  10. *******************************************************************/
  11. #ifndef __INC_POS_PDOS_DOSTYPES_H
  12. #include <pDOS/DosTypes.h>
  13. #endif
  14. #ifndef __INC_POS_PEXEC_DEVICE_H
  15. #include <pExec/Device.h>
  16. #endif
  17. #ifndef __INC_POS_PEXEC_SEMA_H
  18. #include <pExec/Sema.h>
  19. #endif
  20. #ifndef __INC_POS_PDOS_DATE_H
  21. #include <pDOS/Date.h>
  22. #endif
  23.  
  24.  
  25.  
  26. /*----------------------------------
  27.   Size=66 Bytes
  28. -----------------------------------*/
  29. struct pOS_DosIOReq
  30. {
  31.   struct pOS_Message    dr_Message;
  32.   struct pOS_DosDevice *dr_Device;      /* device node pointer  */
  33.   struct pOS_Unit      *dr_Unit;        /* unit (driver private)*/
  34.   UWORD                 dr_Command;     /* enum pOS_DosIOReqCommands */
  35.   UBYTE                 dr_Flags;       /* enum pOS_IOReqFlags */
  36.   SBYTE                 dr_Error2;      /* enum pOS_DosErrors */
  37.   ULONG                 dr_UserData;    /* for Handler own use */
  38.   ULONG                 dr_CretData;    /* creater own data */
  39.  
  40. /*\
  41. *** Das Result-Argument steht immer an Offset 0x10.
  42. \*/
  43.   union {
  44.     UBYTE dr_Reserved[24];  /* 8 Bytes Reserved */
  45.  
  46.     struct {  /*** DOSCMD_LockObject ***/
  47.       const struct pOS_FileLock *drlk_CurrLock; /* CurrentDir-Lock oder NULL */
  48.       const dosname_t           *drlk_Name;     /* local path */
  49.             ULONG                drlk_Mode;     /* enum pOS_FileLockAccess */
  50.             struct pOS_FileLock *drlk_ResLock;  /* Result */
  51.     } dr_LockObj;
  52.  
  53.     struct {  /*** DOSCMD_UnlockObject ***/
  54.       struct pOS_FileLock       *drul_Lock;
  55.     } dr_UnlockObj;
  56.  
  57.     struct {  /*** DOSCMD_ExamineObject ***/
  58.       const struct pOS_FileLock      *drex_Lock;    /* ==NULL => FH */
  59.       const struct pOS_FileHandle    *drex_FH;
  60.             struct pOS_FileInfoBlock *drex_FIB;
  61.     } dr_ExamineObj;
  62.  
  63.     struct {  /*** DOSCMD_ExNextObject ***/
  64.       const struct pOS_FileLock      *dren_Lock;
  65.             UBYTE dren_d[4];
  66.             struct pOS_FileInfoBlock *dren_FIB;
  67.     } dr_ExNextObj;
  68.  
  69.     struct {  /*** DOSCMD_DupObjectLock ***/
  70.       const struct pOS_FileLock      *drdp_Lock;
  71.             UBYTE drdp_d[8];
  72.             struct pOS_FileLock      *drdp_ResLock;  /* Result */
  73.     } dr_DupObjLock;
  74.  
  75.     struct {  /*** DOSCMD_ParentObject ***/
  76.       const struct pOS_FileLock    *drpr_Lock;
  77.             UBYTE drpr_d[8];
  78.             struct pOS_FileLock    *drpr_ResLock;  /* Result */
  79.     } dr_ParentObj;
  80.  
  81.     struct {  /*** DOSCMD_LockName ***/
  82.       const struct pOS_FileLock   *drna_Lock;
  83.       const struct pOS_FileHandle *drna_FH;       /* drna_Lock==NULL => use this */
  84.             dosname_t             *drna_Name;
  85.             size_t                 drna_NameSize;
  86.     } dr_LockName;
  87.  
  88.  
  89.     struct {  /*** DOSCMD_OpenFH ***/
  90.       const struct pOS_FileLock   *drop_CurrLock; /* CurrentDir-Lock oder NULL */
  91.       const dosname_t             *drop_Name;     /* local path */
  92.             UWORD                  drop_Mode;     /* enum pOS_FileHandleMode */
  93.             UBYTE drop_d[2];
  94.             struct pOS_FileHandle *drop_ResFH;    /* Result */
  95.     } dr_OpenFH;
  96.  
  97.     struct {  /*** DOSCMD_CloseFH ***/
  98.       struct pOS_FileHandle    *drcl_FH;    /*  */
  99.     } dr_CloseFH;
  100.  
  101.     struct {  /*** DOSCMD_ReadFH ***/
  102.       struct pOS_FileHandle   *drrd_FH;    /*  */
  103.             VOID              *drrd_Adr;
  104.             dossize_t          drrd_Size;
  105.             dossize_t          drrd_ResSize;
  106.     } dr_ReadFH;
  107.  
  108.     struct {  /*** DOSCMD_WriteFH ***/
  109.       struct pOS_FileHandle    *drwd_FH;    /*  */
  110.       const VOID               *drwd_Adr;
  111.             dossize_t           drwd_Size;
  112.             dossize_t           drwd_ResSize;
  113.     } dr_WriteFH;
  114.  
  115.     struct {  /*** DOSCMD_SeekFH ***/
  116.       struct pOS_FileHandle    *drsk_FH;    /*  */
  117.             SWORD               drsk_Mode;  /* enum pOS_FileHandleSeek */
  118.             UBYTE drsk_d[2];
  119.             dospos_t            drsk_Pos;   /* kann negativ sein */
  120.             dossize_t           drsk_OldPos;
  121.     } dr_SeekFH;
  122.  
  123.     struct {  /*** DOSCMD_CreateDir ***/
  124.       const struct pOS_FileLock  *drcd_CurrLock; /* CurrentDir-Lock oder NULL */
  125.       const dosname_t            *drcd_Name;     /* local path */
  126.             UBYTE drcd_d[4];
  127.             struct pOS_FileLock  *drcd_ResLock;  /* Result */
  128.     } dr_CreateDir;
  129.  
  130.     struct {  /*** DOSCMD_DeleteObject ***/
  131.       struct pOS_FileLock        *drdo_Lock;
  132.     } dr_DeleteObj;
  133.  
  134.     struct {  /*** DOSCMD_RenameObject ***/
  135.       const struct pOS_FileLock  *drrn_CurrLock; /* CurrentDir-Lock oder NULL */
  136.             struct pOS_FileLock  *drrn_Obj;      /* zu änderndes Objekt */
  137.       const dosname_t            *drrn_Name;     /* new object-name */
  138.     } dr_RenameObj;
  139.  
  140.     struct {  /*** DOSCMD_DupFH ***/
  141.       const struct pOS_FileHandle  *drdf_FH;
  142.             UBYTE drdf_d[8];
  143.             struct pOS_FileHandle  *drdf_ResFH;  /* Result */
  144.     } dr_DupFH;
  145.  
  146.     struct {  /*** DOSCMD_SetDate ***/
  147.             struct pOS_FileLock   *drsd_Lock;     /* zu änderndes Objekt */
  148.             struct pOS_FileHandle *drsd_FH;       /* drsd_Lock==NULL => use this */
  149.       const struct pOS_DateStamp  *drsd_Date;     /* neue Zeit */
  150.     } dr_SetDate;
  151.  
  152.     struct {  /*** DOSCMD_SetSize ***/
  153.             struct pOS_FileLock   *drss_Lock;     /* zu änderndes Objekt */
  154.             struct pOS_FileHandle *drss_FH;       /* drss_Lock==NULL => use this */
  155.             dossize_t              drss_Size;     /* neue Länge */
  156.     } dr_SetSize;
  157.  
  158.     struct {  /*** DOSCMD_WaitForChar ***/
  159.             struct pOS_FileHandle *drwc_FH;
  160.       const struct pOS_TimeVal    *drwc_Time;
  161.             dossize_t              drwc_ResSize;  /* Zeichen im Puffer */
  162.     } dr_WaitForChar;
  163.  
  164.     struct {  /*** DOSCMD_InfoData ***/
  165.       const struct pOS_FileLock    *drid_Lock;   /* NULL => use drid_FH */
  166.       const struct pOS_FileHandle  *drid_FH;     /* NULL => use DDev direct */
  167.             struct pOS_DosInfoData *drid_InfoData;
  168.     } dr_InfoData;
  169.  
  170.     struct {  /*** DOSCMD_SetComment ***/
  171.             struct pOS_FileLock   *drct_Lock;      /* zu änderndes Objekt */
  172.             struct pOS_FileHandle *drct_FH;        /* drct_Lock==NULL => use this */
  173.       const CHAR                  *drct_String;
  174.     } dr_SetComment;
  175.  
  176.     struct {  /*** DOSCMD_SetProtection ***/
  177.             struct pOS_FileLock   *drpt_Lock;      /* zu änderndes Objekt */
  178.             struct pOS_FileHandle *drpt_FH;        /* drpt_Lock==NULL => use this */
  179.             ULONG                  drpt_Bits;
  180.     } dr_SetProtection;
  181.  
  182.     struct {  /*** DOSCMD_SameObject ***/
  183.       const struct pOS_FileLock  *drso_Lock1;
  184.       const struct pOS_FileLock  *drso_Lock2;
  185.             ULONG                 drso_Result;    /* enum pOS_SameFileLockType */
  186.     } dr_SameObject;
  187.  
  188.     struct {  /*** DOSCMD_AddBuffers ***/
  189.             SLONG              drab_Add;         /* bytes */
  190.             dossize_t          drab_OldBuffers;  /* bytes */
  191.     } dr_AddBuffers;
  192.  
  193.     struct {  /*** DOSCMD_ChangeAccess ***/
  194.             struct pOS_FileLock    *drca_Lock;      /* Lock==NULL => drca_FH is use */
  195.             struct pOS_FileHandle  *drca_FH;
  196.             ULONG                   drca_NewMode;   /* enum pOS_FileLockAccess or enum pOS_FileHandleMode */
  197.     } dr_ChangeAccess;
  198.  
  199.     struct {  /*** DOSCMD_Inhibit ***/
  200.             ULONG              drin_OnOff;
  201.     } dr_Inhibit;
  202.  
  203.     struct {  /*** DOSCMD_Relabel ***/
  204.       const CHAR              *drrb_VolName;
  205.     } dr_Relabel;
  206.  
  207.     struct {  /*** DOSCMD_OpenFromLock ***/
  208.    __ARID__ struct pOS_FileLock   *drol_Lock;     /* transform Lock => FH */
  209.             UBYTE drol_d[8];
  210.             struct pOS_FileHandle *drol_ResFH;    /* Result */
  211.     } dr_OpenFromLock;
  212.  
  213.     struct {  /*** DOSCMD_SetScreenMode ***/
  214.       struct pOS_FileHandle    *drsm_FH;
  215.             ULONG               drsm_Mode;      /* 0==CON, 1==RAW */
  216.     } dr_SetScreenMode;
  217.  
  218.     struct {  /*** DOSCMD_AddNotify ***/
  219.       struct pOS_DosNotifyReq  *draf_Req;
  220.     } dr_AddNotify;
  221.  
  222.     struct {  /*** DOSCMD_RemNotify ***/
  223.       struct pOS_DosNotifyReq  *drrf_Req;
  224.     } dr_RemNotify;
  225.  
  226.     struct {  /*** DOSCMD_IsFileSystem ***/
  227.       const struct pOS_FileLock   *dris_Lock;   /* NULL => use dris_FH */
  228.       const struct pOS_FileHandle *dris_FH;     /* NULL => use DDev direct */
  229.             ULONG                  dris_Result; /* TRUE,FALSE */
  230.     } dr_IsFileSys;
  231.  
  232.     struct {  /*** DOSCMD_GetUniqueID ***/
  233.       const struct pOS_FileLock   *drgq_Lock;
  234.       const struct pOS_FileHandle *drgq_FH;        /* drpt_Lock==NULL => use this */
  235.             ULONG                  drgq_Result;    /* Result-ID */
  236.     } dr_GetUniqueID;
  237.  
  238.     struct {  /*** DOSCMD_GetWindow ***/
  239.       const struct pOS_FileLock   *drgw_Lock;
  240.       const struct pOS_FileHandle *drgw_FH;        /* drpt_Lock==NULL => use this */
  241.             struct pOS_Window     *drgw_ResWin;    /* Result-Window */
  242.             UBYTE                  drgw_Reserved[4];
  243.     } dr_GetWindow;
  244.  
  245.   } dr_U;
  246. };
  247.  
  248.  
  249.  
  250.  
  251.  
  252.  
  253.  
  254. /*----------------------------------
  255. -----------------------------------*/
  256. struct pOS_DosDevice
  257. {
  258.   struct pOS_Library  ddv_Dev;      /* ln_Name => Device-Name */
  259.                                     /* ddv_Dev.lib_OpenCnt num. of used */
  260.   UWORD               ddv_Type;     /* (enum pOS_DosDeviceTypes) */
  261.  
  262.   ULONG               ddv_LockCnt;  /* Lock-Counter (Handler private) */
  263.   ULONG               ddv_FHCnt;    /* FH-Counter   (Handler private) */
  264.   struct pOS_List     ddv_LockList; /* List of pOS_FileLock (Handler private) */
  265.   struct pOS_List     ddv_FileList; /* Liste of pOS_FileHandle (Handler private) */
  266.   struct pOS_List     ddv_Lst;      /* custom for Assigns, .... */
  267.   struct pOS_DosIOReq ddv_IOMaster; /* Master for pOS_InitDosIOReq() (internal) */
  268.   UBYTE               ddv_Reserved1[32];
  269.  
  270.   union {
  271.     UBYTE  ddv_Reserved2[32];
  272.  
  273.     struct {
  274.       struct pOS_DateStamp  ddvv_Date;
  275.       struct pOS_DosDevice *ddvv_Handler;
  276.     } ddv_Volume;
  277.  
  278.     struct {
  279.             struct pOS_DosDevice      *ddvh_ActVolume; /* inserted Volume */
  280.       const struct pOS_DosMountDevice *ddvh_Mount;
  281.     } ddv_Handler;
  282.  
  283.     struct {
  284.       const dosname_t     *ddva_Name;   /* ddv_Lst => (struct pOS_AssignNode) */
  285.       struct pOS_FileLock *ddva_Lock;
  286.     } ddv_Assign;
  287.  
  288.   } ddv_U;
  289. };
  290.  
  291.  
  292.  
  293. /*----------------------------------
  294. -----------------------------------*/
  295. struct pOS_AssignNode
  296. {
  297.   struct pOS_Node      an_Node;
  298.   struct pOS_FileLock *an_Lock;
  299. };
  300.  
  301.  
  302.  
  303. /*----------------------------------
  304. -----------------------------------*/
  305. struct pOS_DosDefDevice
  306. {
  307.   struct pOS_ExNode  dfd_Node;
  308.  
  309.   struct pOS_DosDevice* (*GetDevice_func)(_R_LB struct pOS_DosBase*,_R_A0 struct pOS_DosDefDevice*,_R_A1 struct pOS_DosDevPathInfo*);
  310. };
  311.  
  312.  
  313.  
  314.  
  315. /*----------------------------------
  316. -----------------------------------*/
  317. struct pOS_DosMountDevice
  318. {
  319.   struct pOS_ExNode dmd_Node;    /* ln_Name, pOS_AllocVec() */
  320.  
  321.   UWORD       dmd_Type;    /* enum pOS_DosMountDevType */
  322.   ULONG       dmd_Flags;   /* enum pOS_DosMountDevFlags */
  323.   SBYTE       dmd_BootPri; /* Boot priority for autoboot */
  324.  
  325.   UBYTE       dmd_Reserved[11];
  326.  
  327.   union {
  328.     UBYTE dmd_UReserved[128];
  329.  
  330.     struct { /* DMDTYP_Pico */
  331.       const CHAR* dmpic_DDName;    /* DosDevice-Name (Handler) */
  332.       APTR  dmpic_DDPrivate;       /* DosDevice-Private-Datas pOS_AllocVec() */
  333.       CHAR *dmpic_Startup;         /* Startup-String pOS_AllocVec() */
  334.     } dmd_Pico;
  335.  
  336.  
  337.     struct { /* DMDTYP_BOD */
  338.       const CHAR* dmbod_DDName;    /* DosDevice-Name (Handler) */
  339.       APTR  dmbod_DDPrivate;       /* DosDevice-Private-Datas pOS_AllocVec() */
  340.       CHAR *dmbod_Startup;         /* Startup-String pOS_AllocVec() */
  341.  
  342.       ULONG dmbod_BytesPerBlock;   /* Bytes pro Block */
  343.       ULONG dmbod_BlockPerCyl;     /* Block pro Zylinder */
  344.       ULONG dmbod_StartCyl;        /* Start-Zylinder */
  345.       ULONG dmbod_EndCyl;          /* End-Zylinder */
  346.       ULONG dmbod_Surfaces;        /*  */
  347.       UWORD dmbod_StartReserved;   /* Reservierte Blocks am Anfang */
  348.       UWORD dmbod_EndReserved;     /* Reservierte Blocks am Ende */
  349.       UWORD dmbod_Interleave;
  350.       ULONG dmbod_BufferSize;      /* Bytes for buffers */
  351.       ULONG dmbod_BufMemType;      /* type of mem to allocate for buffers */
  352.       ULONG dmbod_MaxTransfer;     /* Max number of bytes to transfer at a time */
  353.       ULONG dmbod_Mask;            /* Address Mask to block out certain memory */
  354.       UWORD dmbod_BootBlocks;      /* Number of blocks containing boot code */
  355.       UBYTE dmbod_UnitNum;         /* exec device-unit number */
  356.       UBYTE dmbod_Pad1;
  357.       const CHAR* dmbod_DevName;   /* exec device-name */
  358.       ULONG dmbod_Flags;           /* flags for pOS_OpenDevice() */
  359.     } dmd_BOD;
  360.  
  361.  
  362.     struct { /* DMDTYP_Net */
  363.       const CHAR* dmnet_DDName;    /* DosDevice-Name (Handler) */
  364.       APTR  dmnet_DDPrivate;       /* DosDevice-Private-Datas pOS_AllocVec() */
  365.       CHAR *dmnet_Startup;         /* Startup-String pOS_AllocVec() */
  366.       UBYTE dmnet_UnitNum;         /* Net device-unit number */
  367.       UBYTE dmnet_AckgTimeout;     /* Net-Timeout (1/10) sec. */
  368.       const CHAR* dmnet_DevName;   /* Net device-name */
  369.       ULONG dmnet_Flags;           /* flags for pOS_OpenDevice() */
  370.     } dmd_Net;
  371.  
  372.   } dmd_U;
  373. };
  374.  
  375.  
  376.  
  377. enum pOS_DosMountDevType
  378. {
  379.   DMDTYP_Pico=1,        /* Minimal-Device */
  380.   DMDTYP_BOD,           /* Block orientiertes Device */
  381.   DMDTYP_Net,           /* Network-Device */
  382. };
  383.  
  384. enum pOS_DosMountDevFlags
  385. {
  386.   DMDF_NameAllocVec = 0x0001,   /* ln_Name, pOS_AllocVec() */
  387.   DMDF_EnableBoot   = 0x0002,   /* Device ist boot-fähig */
  388. };
  389.  
  390.  
  391.  
  392.  
  393.  
  394. /*----------------------------------
  395. -----------------------------------*/
  396. struct pOS_DosDevPathInfo
  397. {
  398.   const struct pOS_FileLock  *dopi_CurrDir;  /* Absolutly path, NULL are possible */
  399.   const dosname_t            *dopi_PathName; /* String-Name */
  400.         dosname_t            *dopi_Buffer;
  401.         size_t                dopi_BufSize;
  402.  
  403.   const struct pOS_FileLock  *dopi_ResDir;   /* Result-Lock */
  404.   const dosname_t            *dopi_ResName;
  405.  
  406.         struct pOS_DosDevice *dopi_Device;
  407.         struct pOS_DosDevice *dopi_2thDev;
  408.  
  409.         UBYTE dopi_Reserved[8];
  410. };
  411.  
  412.  
  413.  
  414.  
  415. enum pOS_DosDeviceTypes
  416. {
  417.   DDTYP_Handler=1,
  418.   DDTYP_Assign,
  419.   DDTYP_Volume,
  420.   DDTYP_LateAssign,
  421.   DDTYP_NonBindingAssign,
  422.   DDTYP_Foreign,
  423. };
  424.  
  425.  
  426.  
  427.  
  428.  
  429. enum pOS_DosIOReqCommands
  430. {
  431.   DOSCMD_INVALID   = 0,
  432.   DOSCMD_RESET     = 1, /* unused */
  433.   DOSCMD_READ      = 2, /* unused */
  434.   DOSCMD_WRITE     = 3, /* unused */
  435.   DOSCMD_UPDATE    = 4, /* unused */
  436.   DOSCMD_CLEAR     = 5, /* unused */
  437.   DOSCMD_STOP      = 6, /* unused */
  438.   DOSCMD_START     = 7, /* unused */
  439.   DOSCMD_FLUSH     = 8, /* unused */
  440.  
  441.   DOSCMD_NONSTD    = 9, /* unused */
  442.  
  443.   DOSCMD_LockObject,            /* dr_LockObj */
  444.   DOSCMD_UnlockObject,          /* dr_UnlockObj */
  445.   DOSCMD_ExamineObject,         /* dr_ExamineObj */
  446.   DOSCMD_ExNextObject,          /* dr_ExNextObj */
  447.   DOSCMD_DupObjectLock,         /* dr_DupObjLock */
  448.   DOSCMD_ParentObject,          /* dr_ParentObj */
  449.   DOSCMD_LockName,              /* dr_LockName */
  450.   DOSCMD_OpenFH,                /* dr_OpenFH */
  451.   DOSCMD_CloseFH,               /* dr_CloseFH */
  452.   DOSCMD_ReadFH,                /* dr_ReadFH */
  453.   DOSCMD_WriteFH,               /* dr_WriteFH */
  454.   DOSCMD_SeekFH,                /* dr_SeekFH */
  455.   DOSCMD_IsFileSystem,          /* dr_IsFileSys */
  456.   DOSCMD_CreateDir,             /* dr_CreateDir */
  457.   DOSCMD_DeleteObject,          /* dr_DeleteObj */
  458.   DOSCMD_RenameObject,          /* dr_RenameObj */
  459.   DOSCMD_DupFH,                 /* dr_DupFH */
  460.   DOSCMD_SetDate,               /* dr_SetDate */
  461.   DOSCMD_SetSize,               /* dr_SetSize */
  462.   DOSCMD_WaitForChar,           /* dr_WaitForCharz */
  463.   DOSCMD_InfoData,              /* dr_InfoData */
  464.   DOSCMD_SetComment,            /* dr_SetComment */
  465.   DOSCMD_SetProtection,         /* dr_SetProtection */
  466.   DOSCMD_SameObject,            /* dr_SameObject */
  467.   DOSCMD_AddBuffers,            /* dr_AddBuffers */
  468.   DOSCMD_ChangeAccess,          /* dr_ChangeAccess */
  469.   DOSCMD_Inhibit,               /* dr_Inhibit */
  470.   DOSCMD_Relabel,               /* dr_Relabel */
  471.   DOSCMD_OpenFromLock,          /* dr_OpenFromLock */
  472.   DOSCMD_SetScreenMode,         /* dr_SetScreenMode */
  473.   DOSCMD_AddNotify,             /* dr_AddNotify */
  474.   DOSCMD_RemNotify,             /* dr_RemNotify */
  475.   DOSCMD_GetUniqueID,           /* dr_GetUniqueID */
  476.   DOSCMD_GetWindow,             /* dr_GetWindow */
  477.  
  478.   DOSCMD_MAX
  479. };
  480.  
  481.  
  482.  
  483.  
  484.  
  485.  
  486.  
  487.  
  488.  
  489.  
  490. /*----------------------------------
  491. -----------------------------------*/
  492. struct pOS_DosResidentLibInit
  493. {
  494.             size_t  dlit_DataSize;         /* device data space size */
  495.   __CONST__ ULONG **dlit_FuncTable;        /* table of entry points   */
  496.             VOID   *dlit_DataInit;         /* table of data initializers */
  497.             BOOL  (*dlit_InitFunc)(_R_LB struct pOS_ExecBase*,_R_A0 struct pOS_DosDevice*); /* initialization function to run */
  498.   const struct pOS_DosMountDevice* dlit_Mount;
  499.   UBYTE dlit_Reserved[4];
  500. };
  501.  
  502.  
  503.  
  504.  
  505.  
  506. /*----------------------------------
  507. -----------------------------------*/
  508. struct pOS_StdDosDevFunction
  509. {
  510.   struct pOS_LibraryFunction Reserved2[8];
  511.  
  512.   VOID  (*AbortIO_func)(_R_LB struct pOS_DosDevice*,_R_A0 struct pOS_DosIOReq*);
  513.   UBYTE _d5[8];
  514.   VOID  (*BeginIO_func)(_R_LB struct pOS_DosDevice*,_R_A0 struct pOS_DosIOReq*);
  515.   UBYTE _d4[8];
  516.  
  517.   struct pOS_LibraryFunction Reserved1[8];
  518.  
  519.   struct pOS_SegmentLst* (*Expunge_func)(_R_LB struct pOS_DosDevice*);
  520.   UBYTE _d3[8];
  521.   struct pOS_LibraryFunction Res2;
  522.   struct pOS_LibraryFunction Res1;
  523. };
  524.  
  525.  
  526. #define _pOS_GetStdDosDevFunction(dev) \
  527.  ( (struct pOS_StdDosDevFunction*)((ULONG)(dev) - sizeof(struct pOS_StdDosDevFunction)) )
  528.  
  529.  
  530. #endif
  531.