home *** CD-ROM | disk | FTP | other *** search
/ Crawly Crypt Collection 1 / crawlyvol1.bin / program / books / xhdi_110 / xhdi.h < prev    next >
C/C++ Source or Header  |  1993-05-15  |  3KB  |  114 lines

  1. /*
  2.     @(#)XHDI/xhdi.h
  3.     
  4.     Julian F. Reschke, 15. Mai 1993
  5.     
  6.      Bindings for the XHDI functions
  7.     --- NOT FULLY TESTED, USE AT YOUR OWN RISK ---
  8.  
  9.     Important:
  10.     
  11.     Do calls only if XHGetVersion() was successful
  12. */
  13.  
  14. #ifndef __XHDI__
  15. #define __XHDI__
  16.  
  17. #ifndef BPB
  18. #include <tos.h>
  19. #endif
  20.  
  21. #ifndef UWORD
  22. #define UWORD unsigned int
  23. #endif
  24.  
  25. #ifndef LONG
  26. #define LONG long
  27. #endif
  28.  
  29. #ifndef ULONG
  30. #define ULONG unsigned long
  31. #endif
  32.  
  33. #define XH_TARGET_STOPPABLE 0x00000001L
  34. #define XH_TARGET_REMOVABLE 0x00000002L
  35. #define XH_TARGET_LOCKABLE  0x00000004L
  36. #define XH_TARGET_EJECTABLE 0x00000008L
  37. #define XH_TARGET_RESERVED  0x80000000L
  38.  
  39.  
  40. /* Inquire protocol version number */
  41. UWORD
  42. XHGetVersion (void);
  43.  
  44. /* Inquire informations about one target */
  45. LONG
  46. XHInqTarget (UWORD major, UWORD minor, ULONG *block_size,
  47.              ULONG *device_flags, char *product_name);
  48.  
  49. /* Reserve or release a target */
  50. LONG
  51. XHReserve (UWORD major, UWORD minor, UWORD do_reserve, UWORD key);
  52.  
  53. /* Lock or unlock a target with removable media */
  54. LONG
  55. XHLock (UWORD major, UWORD minor, UWORD do_lock, UWORD key);
  56.  
  57. /* Stop or start target */
  58. LONG
  59. XHStop (UWORD major, UWORD minor, UWORD do_stop, UWORD key);
  60.  
  61. /* Eject medium */
  62. LONG
  63. XHEject (UWORD major, UWORD minor, UWORD do_eject, UWORD key);
  64.  
  65. /* Get bit mask of available XHDI devices */
  66. ULONG
  67. XHDrvMap (void);
  68.  
  69. /* Get major device number (eg. target), minor device number (eg.
  70.    LUN), starting sector and BPB */
  71. LONG
  72. XHInqDev (UWORD bios_device, UWORD *major, UWORD *minor,
  73.           ULONG *start_sector, BPB *bpb);
  74.  
  75. /* Get informations about the driver */
  76. LONG
  77. XHInqDriver (UWORD bios_device, char *name, char *version,
  78.              char *company, UWORD *ahdi_version,
  79.              UWORD *maxIPL);
  80.  
  81. /* Install additional XHDI handler */
  82. LONG
  83. XHNewCookie (void *newcookie);
  84.  
  85. /* Do a physical access */
  86. LONG
  87. XHReadWrite (UWORD major, UWORD minor, UWORD rwflag,
  88.              ULONG recno, UWORD count, void *buf);
  89.  
  90. /* Make printable device name */
  91. void
  92. XHMakeName (UWORD major, UWORD minor, ULONG start_sector, char *name);
  93.  
  94. /* New version of XHInqTarget */
  95. LONG
  96. XHInqTarget2 (UWORD major, UWORD minor, ULONG *block_size,
  97.               ULONG *device_flags, char *product_name,
  98.               UWORD stringlen);
  99.               
  100. /* New version of XHInqDev */
  101. LONG
  102. XHInqDev2 (UWORD bios_device, UWORD *major, UWORD *minor,
  103.            ULONG *start_sector, BPB *bpb, ULONG *blocks, char *partid);
  104.  
  105. /* Special opcode for custom driver extensions */
  106. LONG
  107. XHDriverSpecial (ULONG key1, ULONG key2, UWORD subopcode, void *data);
  108.  
  109. /* Inquire drive capacity */
  110. LONG
  111. XHGetCapacity (UWORD major, UWORD minor, ULONG *blocks, ULONG *bs);
  112.  
  113. #endif
  114.