home *** CD-ROM | disk | FTP | other *** search
- #ifndef __INC_POS_PDOS_DOSDEV_H
- #define __INC_POS_PDOS_DOSDEV_H
- /*******************************************************************
- Includes Release 24
- (C) Copyright 1995-1997 proDAD
- All Rights Reserved
-
- $AUT Holger Burkarth
- $DAT >>DosDev.h<< 02 Mar 1997 17:45:04 - (C) ProDAD
- *******************************************************************/
- #ifndef __INC_POS_PDOS_DOSTYPES_H
- #include <pDOS/DosTypes.h>
- #endif
- #ifndef __INC_POS_PEXEC_DEVICE_H
- #include <pExec/Device.h>
- #endif
- #ifndef __INC_POS_PEXEC_SEMA_H
- #include <pExec/Sema.h>
- #endif
- #ifndef __INC_POS_PDOS_DATE_H
- #include <pDOS/Date.h>
- #endif
-
-
-
- /*----------------------------------
- Size=66 Bytes
- -----------------------------------*/
- struct pOS_DosIOReq
- {
- struct pOS_Message dr_Message;
- struct pOS_DosDevice *dr_Device; /* device node pointer */
- struct pOS_Unit *dr_Unit; /* unit (driver private)*/
- UWORD dr_Command; /* enum pOS_DosIOReqCommands */
- UBYTE dr_Flags; /* enum pOS_IOReqFlags */
- SBYTE dr_Error2; /* enum pOS_DosErrors */
- ULONG dr_UserData; /* for Handler own use */
- ULONG dr_CretData; /* creater own data */
-
- /*\
- *** Das Result-Argument steht immer an Offset 0x10.
- \*/
- union {
- UBYTE dr_Reserved[24]; /* 8 Bytes Reserved */
-
- struct { /*** DOSCMD_LockObject ***/
- const struct pOS_FileLock *drlk_CurrLock; /* CurrentDir-Lock oder NULL */
- const dosname_t *drlk_Name; /* local path */
- ULONG drlk_Mode; /* enum pOS_FileLockAccess */
- struct pOS_FileLock *drlk_ResLock; /* Result */
- } dr_LockObj;
-
- struct { /*** DOSCMD_UnlockObject ***/
- struct pOS_FileLock *drul_Lock;
- } dr_UnlockObj;
-
- struct { /*** DOSCMD_ExamineObject ***/
- const struct pOS_FileLock *drex_Lock; /* ==NULL => FH */
- const struct pOS_FileHandle *drex_FH;
- struct pOS_FileInfoBlock *drex_FIB;
- } dr_ExamineObj;
-
- struct { /*** DOSCMD_ExNextObject ***/
- const struct pOS_FileLock *dren_Lock;
- UBYTE dren_d[4];
- struct pOS_FileInfoBlock *dren_FIB;
- } dr_ExNextObj;
-
- struct { /*** DOSCMD_DupObjectLock ***/
- const struct pOS_FileLock *drdp_Lock;
- UBYTE drdp_d[8];
- struct pOS_FileLock *drdp_ResLock; /* Result */
- } dr_DupObjLock;
-
- struct { /*** DOSCMD_ParentObject ***/
- const struct pOS_FileLock *drpr_Lock;
- UBYTE drpr_d[8];
- struct pOS_FileLock *drpr_ResLock; /* Result */
- } dr_ParentObj;
-
- struct { /*** DOSCMD_LockName ***/
- const struct pOS_FileLock *drna_Lock;
- const struct pOS_FileHandle *drna_FH; /* drna_Lock==NULL => use this */
- dosname_t *drna_Name;
- size_t drna_NameSize;
- } dr_LockName;
-
-
- struct { /*** DOSCMD_OpenFH ***/
- const struct pOS_FileLock *drop_CurrLock; /* CurrentDir-Lock oder NULL */
- const dosname_t *drop_Name; /* local path */
- UWORD drop_Mode; /* enum pOS_FileHandleMode */
- UBYTE drop_d[2];
- struct pOS_FileHandle *drop_ResFH; /* Result */
- } dr_OpenFH;
-
- struct { /*** DOSCMD_CloseFH ***/
- struct pOS_FileHandle *drcl_FH; /* */
- } dr_CloseFH;
-
- struct { /*** DOSCMD_ReadFH ***/
- struct pOS_FileHandle *drrd_FH; /* */
- VOID *drrd_Adr;
- dossize_t drrd_Size;
- dossize_t drrd_ResSize;
- } dr_ReadFH;
-
- struct { /*** DOSCMD_WriteFH ***/
- struct pOS_FileHandle *drwd_FH; /* */
- const VOID *drwd_Adr;
- dossize_t drwd_Size;
- dossize_t drwd_ResSize;
- } dr_WriteFH;
-
- struct { /*** DOSCMD_SeekFH ***/
- struct pOS_FileHandle *drsk_FH; /* */
- SWORD drsk_Mode; /* enum pOS_FileHandleSeek */
- UBYTE drsk_d[2];
- dospos_t drsk_Pos; /* kann negativ sein */
- dossize_t drsk_OldPos;
- } dr_SeekFH;
-
- struct { /*** DOSCMD_CreateDir ***/
- const struct pOS_FileLock *drcd_CurrLock; /* CurrentDir-Lock oder NULL */
- const dosname_t *drcd_Name; /* local path */
- UBYTE drcd_d[4];
- struct pOS_FileLock *drcd_ResLock; /* Result */
- } dr_CreateDir;
-
- struct { /*** DOSCMD_DeleteObject ***/
- struct pOS_FileLock *drdo_Lock;
- } dr_DeleteObj;
-
- struct { /*** DOSCMD_RenameObject ***/
- const struct pOS_FileLock *drrn_CurrLock; /* CurrentDir-Lock oder NULL */
- struct pOS_FileLock *drrn_Obj; /* zu änderndes Objekt */
- const dosname_t *drrn_Name; /* new object-name */
- } dr_RenameObj;
-
- struct { /*** DOSCMD_DupFH ***/
- const struct pOS_FileHandle *drdf_FH;
- UBYTE drdf_d[8];
- struct pOS_FileHandle *drdf_ResFH; /* Result */
- } dr_DupFH;
-
- struct { /*** DOSCMD_SetDate ***/
- struct pOS_FileLock *drsd_Lock; /* zu änderndes Objekt */
- struct pOS_FileHandle *drsd_FH; /* drsd_Lock==NULL => use this */
- const struct pOS_DateStamp *drsd_Date; /* neue Zeit */
- } dr_SetDate;
-
- struct { /*** DOSCMD_SetSize ***/
- struct pOS_FileLock *drss_Lock; /* zu änderndes Objekt */
- struct pOS_FileHandle *drss_FH; /* drss_Lock==NULL => use this */
- dossize_t drss_Size; /* neue Länge */
- } dr_SetSize;
-
- struct { /*** DOSCMD_WaitForChar ***/
- struct pOS_FileHandle *drwc_FH;
- const struct pOS_TimeVal *drwc_Time;
- dossize_t drwc_ResSize; /* Zeichen im Puffer */
- } dr_WaitForChar;
-
- struct { /*** DOSCMD_InfoData ***/
- const struct pOS_FileLock *drid_Lock; /* NULL => use drid_FH */
- const struct pOS_FileHandle *drid_FH; /* NULL => use DDev direct */
- struct pOS_DosInfoData *drid_InfoData;
- } dr_InfoData;
-
- struct { /*** DOSCMD_SetComment ***/
- struct pOS_FileLock *drct_Lock; /* zu änderndes Objekt */
- struct pOS_FileHandle *drct_FH; /* drct_Lock==NULL => use this */
- const CHAR *drct_String;
- } dr_SetComment;
-
- struct { /*** DOSCMD_SetProtection ***/
- struct pOS_FileLock *drpt_Lock; /* zu änderndes Objekt */
- struct pOS_FileHandle *drpt_FH; /* drpt_Lock==NULL => use this */
- ULONG drpt_Bits;
- } dr_SetProtection;
-
- struct { /*** DOSCMD_SameObject ***/
- const struct pOS_FileLock *drso_Lock1;
- const struct pOS_FileLock *drso_Lock2;
- ULONG drso_Result; /* enum pOS_SameFileLockType */
- } dr_SameObject;
-
- struct { /*** DOSCMD_AddBuffers ***/
- SLONG drab_Add; /* bytes */
- dossize_t drab_OldBuffers; /* bytes */
- } dr_AddBuffers;
-
- struct { /*** DOSCMD_ChangeAccess ***/
- struct pOS_FileLock *drca_Lock; /* Lock==NULL => drca_FH is use */
- struct pOS_FileHandle *drca_FH;
- ULONG drca_NewMode; /* enum pOS_FileLockAccess or enum pOS_FileHandleMode */
- } dr_ChangeAccess;
-
- struct { /*** DOSCMD_Inhibit ***/
- ULONG drin_OnOff;
- } dr_Inhibit;
-
- struct { /*** DOSCMD_Relabel ***/
- const CHAR *drrb_VolName;
- } dr_Relabel;
-
- struct { /*** DOSCMD_OpenFromLock ***/
- __ARID__ struct pOS_FileLock *drol_Lock; /* transform Lock => FH */
- UBYTE drol_d[8];
- struct pOS_FileHandle *drol_ResFH; /* Result */
- } dr_OpenFromLock;
-
- struct { /*** DOSCMD_SetScreenMode ***/
- struct pOS_FileHandle *drsm_FH;
- ULONG drsm_Mode; /* 0==CON, 1==RAW */
- } dr_SetScreenMode;
-
- struct { /*** DOSCMD_AddNotify ***/
- struct pOS_DosNotifyReq *draf_Req;
- } dr_AddNotify;
-
- struct { /*** DOSCMD_RemNotify ***/
- struct pOS_DosNotifyReq *drrf_Req;
- } dr_RemNotify;
-
- struct { /*** DOSCMD_IsFileSystem ***/
- const struct pOS_FileLock *dris_Lock; /* NULL => use dris_FH */
- const struct pOS_FileHandle *dris_FH; /* NULL => use DDev direct */
- ULONG dris_Result; /* TRUE,FALSE */
- } dr_IsFileSys;
-
- struct { /*** DOSCMD_GetUniqueID ***/
- const struct pOS_FileLock *drgq_Lock;
- const struct pOS_FileHandle *drgq_FH; /* drpt_Lock==NULL => use this */
- ULONG drgq_Result; /* Result-ID */
- } dr_GetUniqueID;
-
- struct { /*** DOSCMD_GetWindow ***/
- const struct pOS_FileLock *drgw_Lock;
- const struct pOS_FileHandle *drgw_FH; /* drpt_Lock==NULL => use this */
- struct pOS_Window *drgw_ResWin; /* Result-Window */
- UBYTE drgw_Reserved[4];
- } dr_GetWindow;
-
- } dr_U;
- };
-
-
-
-
-
-
-
- /*----------------------------------
- -----------------------------------*/
- struct pOS_DosDevice
- {
- struct pOS_Library ddv_Dev; /* ln_Name => Device-Name */
- /* ddv_Dev.lib_OpenCnt num. of used */
- UWORD ddv_Type; /* (enum pOS_DosDeviceTypes) */
-
- ULONG ddv_LockCnt; /* Lock-Counter (Handler private) */
- ULONG ddv_FHCnt; /* FH-Counter (Handler private) */
- struct pOS_List ddv_LockList; /* List of pOS_FileLock (Handler private) */
- struct pOS_List ddv_FileList; /* Liste of pOS_FileHandle (Handler private) */
- struct pOS_List ddv_Lst; /* custom for Assigns, .... */
- struct pOS_DosIOReq ddv_IOMaster; /* Master for pOS_InitDosIOReq() (internal) */
- UBYTE ddv_Reserved1[32];
-
- union {
- UBYTE ddv_Reserved2[32];
-
- struct {
- struct pOS_DateStamp ddvv_Date;
- struct pOS_DosDevice *ddvv_Handler;
- } ddv_Volume;
-
- struct {
- struct pOS_DosDevice *ddvh_ActVolume; /* inserted Volume */
- const struct pOS_DosMountDevice *ddvh_Mount;
- } ddv_Handler;
-
- struct {
- const dosname_t *ddva_Name; /* ddv_Lst => (struct pOS_AssignNode) */
- struct pOS_FileLock *ddva_Lock;
- } ddv_Assign;
-
- } ddv_U;
- };
-
-
-
- /*----------------------------------
- -----------------------------------*/
- struct pOS_AssignNode
- {
- struct pOS_Node an_Node;
- struct pOS_FileLock *an_Lock;
- };
-
-
-
- /*----------------------------------
- -----------------------------------*/
- struct pOS_DosDefDevice
- {
- struct pOS_ExNode dfd_Node;
-
- struct pOS_DosDevice* (*GetDevice_func)(_R_LB struct pOS_DosBase*,_R_A0 struct pOS_DosDefDevice*,_R_A1 struct pOS_DosDevPathInfo*);
- };
-
-
-
-
- /*----------------------------------
- -----------------------------------*/
- struct pOS_DosMountDevice
- {
- struct pOS_ExNode dmd_Node; /* ln_Name, pOS_AllocVec() */
-
- UWORD dmd_Type; /* enum pOS_DosMountDevType */
- ULONG dmd_Flags; /* enum pOS_DosMountDevFlags */
- SBYTE dmd_BootPri; /* Boot priority for autoboot */
-
- UBYTE dmd_Reserved[11];
-
- union {
- UBYTE dmd_UReserved[128];
-
- struct { /* DMDTYP_Pico */
- const CHAR* dmpic_DDName; /* DosDevice-Name (Handler) */
- APTR dmpic_DDPrivate; /* DosDevice-Private-Datas pOS_AllocVec() */
- CHAR *dmpic_Startup; /* Startup-String pOS_AllocVec() */
- } dmd_Pico;
-
-
- struct { /* DMDTYP_BOD */
- const CHAR* dmbod_DDName; /* DosDevice-Name (Handler) */
- APTR dmbod_DDPrivate; /* DosDevice-Private-Datas pOS_AllocVec() */
- CHAR *dmbod_Startup; /* Startup-String pOS_AllocVec() */
-
- ULONG dmbod_BytesPerBlock; /* Bytes pro Block */
- ULONG dmbod_BlockPerCyl; /* Block pro Zylinder */
- ULONG dmbod_StartCyl; /* Start-Zylinder */
- ULONG dmbod_EndCyl; /* End-Zylinder */
- ULONG dmbod_Surfaces; /* */
- UWORD dmbod_StartReserved; /* Reservierte Blocks am Anfang */
- UWORD dmbod_EndReserved; /* Reservierte Blocks am Ende */
- UWORD dmbod_Interleave;
- ULONG dmbod_BufferSize; /* Bytes for buffers */
- ULONG dmbod_BufMemType; /* type of mem to allocate for buffers */
- ULONG dmbod_MaxTransfer; /* Max number of bytes to transfer at a time */
- ULONG dmbod_Mask; /* Address Mask to block out certain memory */
- UWORD dmbod_BootBlocks; /* Number of blocks containing boot code */
- UBYTE dmbod_UnitNum; /* exec device-unit number */
- UBYTE dmbod_Pad1;
- const CHAR* dmbod_DevName; /* exec device-name */
- ULONG dmbod_Flags; /* flags for pOS_OpenDevice() */
- } dmd_BOD;
-
-
- struct { /* DMDTYP_Net */
- const CHAR* dmnet_DDName; /* DosDevice-Name (Handler) */
- APTR dmnet_DDPrivate; /* DosDevice-Private-Datas pOS_AllocVec() */
- CHAR *dmnet_Startup; /* Startup-String pOS_AllocVec() */
- UBYTE dmnet_UnitNum; /* Net device-unit number */
- UBYTE dmnet_AckgTimeout; /* Net-Timeout (1/10) sec. */
- const CHAR* dmnet_DevName; /* Net device-name */
- ULONG dmnet_Flags; /* flags for pOS_OpenDevice() */
- } dmd_Net;
-
- } dmd_U;
- };
-
-
-
- enum pOS_DosMountDevType
- {
- DMDTYP_Pico=1, /* Minimal-Device */
- DMDTYP_BOD, /* Block orientiertes Device */
- DMDTYP_Net, /* Network-Device */
- };
-
- enum pOS_DosMountDevFlags
- {
- DMDF_NameAllocVec = 0x0001, /* ln_Name, pOS_AllocVec() */
- DMDF_EnableBoot = 0x0002, /* Device ist boot-fähig */
- };
-
-
-
-
-
- /*----------------------------------
- -----------------------------------*/
- struct pOS_DosDevPathInfo
- {
- const struct pOS_FileLock *dopi_CurrDir; /* Absolutly path, NULL are possible */
- const dosname_t *dopi_PathName; /* String-Name */
- dosname_t *dopi_Buffer;
- size_t dopi_BufSize;
-
- const struct pOS_FileLock *dopi_ResDir; /* Result-Lock */
- const dosname_t *dopi_ResName;
-
- struct pOS_DosDevice *dopi_Device;
- struct pOS_DosDevice *dopi_2thDev;
-
- UBYTE dopi_Reserved[8];
- };
-
-
-
-
- enum pOS_DosDeviceTypes
- {
- DDTYP_Handler=1,
- DDTYP_Assign,
- DDTYP_Volume,
- DDTYP_LateAssign,
- DDTYP_NonBindingAssign,
- DDTYP_Foreign,
- };
-
-
-
-
-
- enum pOS_DosIOReqCommands
- {
- DOSCMD_INVALID = 0,
- DOSCMD_RESET = 1, /* unused */
- DOSCMD_READ = 2, /* unused */
- DOSCMD_WRITE = 3, /* unused */
- DOSCMD_UPDATE = 4, /* unused */
- DOSCMD_CLEAR = 5, /* unused */
- DOSCMD_STOP = 6, /* unused */
- DOSCMD_START = 7, /* unused */
- DOSCMD_FLUSH = 8, /* unused */
-
- DOSCMD_NONSTD = 9, /* unused */
-
- DOSCMD_LockObject, /* dr_LockObj */
- DOSCMD_UnlockObject, /* dr_UnlockObj */
- DOSCMD_ExamineObject, /* dr_ExamineObj */
- DOSCMD_ExNextObject, /* dr_ExNextObj */
- DOSCMD_DupObjectLock, /* dr_DupObjLock */
- DOSCMD_ParentObject, /* dr_ParentObj */
- DOSCMD_LockName, /* dr_LockName */
- DOSCMD_OpenFH, /* dr_OpenFH */
- DOSCMD_CloseFH, /* dr_CloseFH */
- DOSCMD_ReadFH, /* dr_ReadFH */
- DOSCMD_WriteFH, /* dr_WriteFH */
- DOSCMD_SeekFH, /* dr_SeekFH */
- DOSCMD_IsFileSystem, /* dr_IsFileSys */
- DOSCMD_CreateDir, /* dr_CreateDir */
- DOSCMD_DeleteObject, /* dr_DeleteObj */
- DOSCMD_RenameObject, /* dr_RenameObj */
- DOSCMD_DupFH, /* dr_DupFH */
- DOSCMD_SetDate, /* dr_SetDate */
- DOSCMD_SetSize, /* dr_SetSize */
- DOSCMD_WaitForChar, /* dr_WaitForCharz */
- DOSCMD_InfoData, /* dr_InfoData */
- DOSCMD_SetComment, /* dr_SetComment */
- DOSCMD_SetProtection, /* dr_SetProtection */
- DOSCMD_SameObject, /* dr_SameObject */
- DOSCMD_AddBuffers, /* dr_AddBuffers */
- DOSCMD_ChangeAccess, /* dr_ChangeAccess */
- DOSCMD_Inhibit, /* dr_Inhibit */
- DOSCMD_Relabel, /* dr_Relabel */
- DOSCMD_OpenFromLock, /* dr_OpenFromLock */
- DOSCMD_SetScreenMode, /* dr_SetScreenMode */
- DOSCMD_AddNotify, /* dr_AddNotify */
- DOSCMD_RemNotify, /* dr_RemNotify */
- DOSCMD_GetUniqueID, /* dr_GetUniqueID */
- DOSCMD_GetWindow, /* dr_GetWindow */
-
- DOSCMD_MAX
- };
-
-
-
-
-
-
-
-
-
-
- /*----------------------------------
- -----------------------------------*/
- struct pOS_DosResidentLibInit
- {
- size_t dlit_DataSize; /* device data space size */
- __CONST__ ULONG **dlit_FuncTable; /* table of entry points */
- VOID *dlit_DataInit; /* table of data initializers */
- BOOL (*dlit_InitFunc)(_R_LB struct pOS_ExecBase*,_R_A0 struct pOS_DosDevice*); /* initialization function to run */
- const struct pOS_DosMountDevice* dlit_Mount;
- UBYTE dlit_Reserved[4];
- };
-
-
-
-
-
- /*----------------------------------
- -----------------------------------*/
- struct pOS_StdDosDevFunction
- {
- struct pOS_LibraryFunction Reserved2[8];
-
- VOID (*AbortIO_func)(_R_LB struct pOS_DosDevice*,_R_A0 struct pOS_DosIOReq*);
- UBYTE _d5[8];
- VOID (*BeginIO_func)(_R_LB struct pOS_DosDevice*,_R_A0 struct pOS_DosIOReq*);
- UBYTE _d4[8];
-
- struct pOS_LibraryFunction Reserved1[8];
-
- struct pOS_SegmentLst* (*Expunge_func)(_R_LB struct pOS_DosDevice*);
- UBYTE _d3[8];
- struct pOS_LibraryFunction Res2;
- struct pOS_LibraryFunction Res1;
- };
-
-
- #define _pOS_GetStdDosDevFunction(dev) \
- ( (struct pOS_StdDosDevFunction*)((ULONG)(dev) - sizeof(struct pOS_StdDosDevFunction)) )
-
-
- #endif
-