home *** CD-ROM | disk | FTP | other *** search
/ TopWare Tools / TOOLS.iso / tools / top1576 / gepackt.exe / SAMPLES.ZIP / SAMPLES / DLINK.H < prev    next >
Encoding:
C/C++ Source or Header  |  1993-05-25  |  5.3 KB  |  215 lines

  1. //
  2. // include file for dynamically linked functions:
  3. //    decode()
  4. //    cure()
  5. //    jmp()
  6. //
  7. //    use:        bcc -mh -c -K filename.c
  8. //
  9. //    Any model except Tiny.
  10. //    Use Huge model if static data present.
  11. //
  12.  
  13. #ifdef    __EV_LIB_C
  14. #define C
  15. #else
  16. #ifdef __cplusplus
  17. #define C    extern "C"
  18. #else
  19. #define C    extern
  20. #endif
  21. #endif
  22.  
  23. #ifndef FALSE
  24. #define FALSE 0
  25. #define TRUE  1
  26. #endif
  27.  
  28. typedef unsigned long ulong;
  29. typedef unsigned char uchar;
  30. typedef unsigned int  uint;
  31.  
  32. typedef struct _NE_HEADER{
  33.     uint     Signature;
  34.     uint     Link_Version;
  35.     uint     ET_Offset_NE;
  36.     uint     ET_Length;
  37.     ulong   Check_Sum;
  38.     uint    M_Flag;
  39.     uint    Auto_Data_Segment;
  40.     uint    LHeap_Size;
  41.     uint    Stack_Size;
  42.     uint    IP;
  43.     uint    CS;
  44.     uint    SP;
  45.     uint    SS;
  46.     uint    ST_Size;
  47.     uint    MRT_Size;
  48.     uint    NNT_Length;
  49.     uint    ST_Offset_NE;
  50.     uint    RT_Offset_NE;
  51.     uint    RNT_Offset_NE;
  52.     uint    MRT_Offset_NE;
  53.     uint    INT_Offset_NE;
  54.     ulong   NNT_Offset;
  55.     uint    Number_MEP;
  56.     uint    Alignment;
  57.     uchar   Reserved[12];
  58. }NE_HEADER;
  59.  
  60. #define        MAX_FILE_TAIL 9999
  61.  
  62. #define     SIZE_HEADER    0x400
  63. #define     SIZE_PAGE_A    0x400
  64. #define     SIZE_PAGE_B    0x400
  65. #define     SIZE_PAGE_C    0x8000
  66.  
  67. #define     FAT_BITS_12    12
  68. #define     FAT_BITS_16 16
  69.  
  70. #define        R_CLEAN          0
  71. #define         R_CURE        1
  72. #define         R_DETECT    2
  73. #define         R_DELETE    3
  74. #define         R_WARNING        4
  75. #define         R_ERROR          5
  76. #define         R_MEMORY         6
  77. #define         R_CANCEL         7
  78. #define         R_SKIP           8
  79. #define         R_USER        9
  80. #define         R_FAIL        10
  81.  
  82. #define     M_TEST       0
  83. #define     M_CURE       1
  84. #define     M_CURE_ALL   2
  85. #define     M_DELETE     3
  86. #define     M_DELETE_ALL 4
  87. #define     M_CANCEL     5
  88. #define     M_SKIP       6
  89. #define     M_AGAIN      7
  90. #define     M_FAIL       8
  91.  
  92. #ifndef  _COM_
  93. #define        _COM_            0x0008
  94. #define        _EXE_            0x0010
  95. #define        _SYS_            0x0020
  96. #define     _WIN_           0x0200
  97. #endif
  98.  
  99. C void far*    List_of_List;
  100.  
  101. typedef struct    DISK_INFO_tag {
  102.  
  103.     uchar    Drive;                // Drive 0=A:, 1=B:, 2=C: etc
  104.     uchar    Disk;                // Disk  0=A, 1=B, 80h=C, 81h=D, 40h=driver
  105.  
  106.     uchar    Sect_per_Clust;        // Logical Disk Info
  107.     uchar    Media;
  108.     uint    Total_Clust;
  109.     uint    Bytes_per_Sect;
  110.     uchar    FAT_Count;
  111.     uint    Root_Dir_Entries;
  112.     uint    Sector_before_FAT;
  113.     uint    Root_Sectors;
  114.     uint    First_Data_Sector;
  115.     uint    Sectors_into_FAT;
  116.     uchar    FAT_12_16;            // 12 or 16 bit  FAT
  117.  
  118.     uint    Num_of_Heads;        // Absolute Disk Info
  119.     uint    Sect_per_Track;
  120.  
  121. }DISK_INFO;
  122.  
  123.  
  124. C DISK_INFO far* Disk_Info;
  125.  
  126. C uchar far* Message_Str;
  127. C char  far* Tail_Str;
  128. C char  far* Name_Ptr;
  129. C uchar far* Header;
  130. C uchar far* Page_A;
  131. C uchar far* Page_B;
  132. C uchar far* Page_C;
  133.  
  134. C int    far    Handle;
  135. C int    far    File_Mode;          // M_TEST,M_CURE,M_CURE_ALL,M_DELETE,M_DELETE_ALL
  136. C char far*    File_Full_Name;
  137. C char far*    File_Directory;
  138. C char far*    File_Name;
  139. C char far*    File_Ext;
  140. C char far*    File_Drive;
  141.  
  142. C uint far    File_Format;
  143. C uint far    File_Extension;
  144. C ulong far    File_Length;
  145. C ulong far    File_Tail;
  146.  
  147. C ulong far    EP;
  148. C ulong far    EP_Next;
  149.  
  150. C ulong    far    Exe_Header_Len;
  151. C uint far    Exe_IP;
  152. C uint far    Exe_CS;
  153.  
  154. C uint far    Sys_Interrupt;
  155. C uint far    Sys_Strategy;
  156.  
  157. C uint far    First_MCB;
  158. C uint far    Z_MCB;
  159. C uint far    BIOS_Mem;
  160. C uint far    DOS_Mem;
  161. C uint far    DOS_Segm;
  162. C uint far    Mem_Segm;
  163. C uint far    Mem_Offs;
  164.  
  165. C ulong    far    Check_Sum(    uchar far* mass,  uchar len);
  166. C int    far    Ch_Size(ulong size);
  167. C int    far    Ch_Size_Lehigh(ulong size);
  168. C long  far    Seek(long set);
  169. C int    far    Read(char far* buf,unsigned len);
  170. C int    far    Write(char far* buf,unsigned len);
  171. C int    far    Read_13(int CX_Sector,int DH_Head,char far *Buffer);
  172. C int    far    Write_13(int CX_Sector,int DH_Head,char far *Buffer);
  173. C int    far    Read_25(int Num_Read, long Sector, char far *Buffer);
  174. C int    far    Write_26(int Num_Write, long Sector, char far *Buffer);
  175. C int    far    Read_MBR(char far* Page);
  176. C int    far    Read_BOOT(char far* Page);
  177. C int    far    Write_MBR(char far* Page);
  178. C int    far    Write_BOOT(char far* Page);
  179. C int    far    Move_AbsSect_to_Boot(int Sector, char Head);
  180. C int    far    Move_LogSect_to_Boot(long Sector);
  181. C int    far    Move_AbsSect_to_MBR(int Sector, char Head);
  182. C int    far    Move_LogSect_to_MBR(long Sector);
  183. C long    far    Next_Buffer(long Cur_Buff);
  184. C int    far    Cure_EXE(long nSize, uint nCS, uint nIP, uint nSS, uint nSP);
  185. C int    far    Strncmp(char far*s1,char far*s2,int n);
  186. C int    far    Access(char far*filename,int amode);
  187. C int    far    _Chmod(char far*filename,int func,int attr);
  188. C int    far    Strlen(char far*s);
  189.  
  190. C long    far     Jmp_Far ( uint Off_CS, uint Off_IP, signed int Data);
  191. C int    far     Cure_COM_Immediate ( char far* p, int len , long cut );
  192. C int     far     Cure_COM ( long from, int len , long cut );
  193. C int     far     Xor_Byte ( char far *from , char far *to , char key, int len );
  194. C int     far     Xor_Word ( char far *from , char far *to , int key, int len );
  195. C int     far     Add_Byte ( char far *from , char far *to , signed char key, int len );
  196. C int     far     Add_Word ( char far *from , char far *to , signed int key, int len );
  197.  
  198.  
  199. C int    far    Printf (const char far *format , ...);   // Must be HUGE model
  200. C int    far    Stop ();
  201. C int    far    Line_outtext (char far*);
  202. C int    far    Line_stop ();
  203.  
  204.  
  205. C ulong    far    NE_Seek;
  206. C NE_HEADER far* NE_Ptr;
  207. C long far Get_Win_SD(int no, char far* buffer);
  208.  
  209.  
  210. //---- User Defined Functions --------------
  211.  
  212. C int     far    decode();
  213. C int     far    cure();
  214. C long     far    jmp();
  215.