home *** CD-ROM | disk | FTP | other *** search
/ Media Share 9 / MEDIASHARE_09.ISO / pascal / vdl020d.zip / VASPI.DOC < prev    next >
Text File  |  1993-04-14  |  9KB  |  431 lines

  1. {
  2.  ════════════════════════════════════════════════════════════════════════════
  3.  
  4.  Visionix SCSI Programming Interface Library (VASPI)
  5.  Copyright 1991,92,93 Visionix
  6.  ALL RIGHTS RESERVED
  7.  
  8.  ────────────────────────────────────────────────────────────────────────────
  9.  
  10.  Revision history in reverse chronological order:
  11.  
  12.  Initials  Date      Comment
  13.  ────────  ────────  ────────────────────────────────────────────────────────
  14.  
  15.  lpg       03/15/93  Added Source Documentation
  16.  
  17.  mep       02/11/93  Cleaned up code for beta release
  18.  
  19.  mep       02/08/93  Sync with beta 0.12 release
  20.  
  21.  jrt       02/08/93  Sync with beta 0.12
  22.  
  23.  jrt       01/26/92  Work on Windows/ASPI support
  24.  
  25.  jrt       01/25/92  Reintegrated with mainline VDL version
  26.  
  27.  jrt       11/15/92  Completed SIRS/Window version
  28.  
  29.  jrt       09/10/92  First SIRS working version
  30.  
  31.  ════════════════════════════════════════════════════════════════════════════
  32. }
  33.  
  34. Unit VASPI;
  35.  
  36.  
  37. Uses
  38.  
  39.   DOS;
  40.  
  41. {────────────────────────────────────────────────────────────────────────────}
  42.  
  43. Const
  44.  
  45.   asReqInProc   = $00;
  46.   asReqDone     = $01;
  47.   asReqAborted  = $02;
  48.   asReqDoneErr  = $03;
  49.   asReqInvalid  = $04;
  50.   asReqBadHost  = $05;
  51.   asReqBadDev   = $06;
  52.  
  53. Type
  54.  
  55.   TError = WORD;
  56.  
  57.  
  58.  
  59.   {---------------------------}
  60.   { Ascii ID for Host Inquiry }
  61.   {---------------------------}
  62.  
  63.   TAspiAsciiID = ARray[1..16] of CHAR;
  64.   PAspiAsciiID = ^TAspiAsciiId;
  65.  
  66.  
  67.  
  68.   {--------------------------}
  69.   { Host Inquiry Unique data }
  70.   {--------------------------}
  71.  
  72.   TAspiHostInqUnique = Array[1..16] of BYTE;
  73.   PAspiHostInqUnique = ^TAspiHostInqUnique;
  74.  
  75.  
  76.  
  77.   {---------------------}
  78.   { ASPI Caps structure }
  79.   {---------------------}
  80.  
  81.   TAspiCaps = RECORD
  82.  
  83.     Reserved : BYTE;
  84.  
  85.   END;
  86.  
  87.   PAspiCaps = ^TAspiCaps;
  88.  
  89.  
  90.  
  91.   {---------------------}
  92.   { Host Inquiry Packet }
  93.   {---------------------}
  94.  
  95.   TAspiHostInqPacket = RECORD
  96.  
  97.     Command             : BYTE;
  98.     Status              : BYTE;
  99.     HostNum             : BYTE;
  100.     SCSIReqFlags        : BYTE;
  101.     Reserved            : LONGINT;
  102.  
  103.     NumHosts            : BYTE;
  104.     HostSCSIid          : BYTE;
  105.     SCSIManagerID       : TAspiAsciiID;
  106.     HostAdapterID       : TAspiAsciiID;
  107.     HostUniqueParams    : TAspiHostInqUnique;
  108.  
  109.   END;
  110.  
  111.   PAsipHostInqPacket = ^TAspiHostInqPacket;
  112.  
  113.  
  114.  
  115.   {---------------------}
  116.   { Get Dev Type Packet }
  117.   {---------------------}
  118.  
  119.   TAspiGetDevTypePacket = RECORD
  120.  
  121.     Command             : BYTE;
  122.     Status              : BYTE;
  123.     HostNum             : BYTE;
  124.     SCSIReqFlags        : BYTE;
  125.     Reserved            : LONGINT;
  126.  
  127.     Target              : BYTE;
  128.     LUN                 : BYTE;
  129.     DevType             : BYTE;
  130.  
  131.   END;
  132.  
  133.   PAspiGetDevTypePacket = ^TAspiGetDevTypePacket;
  134.  
  135.  
  136.  
  137.   {-----------------}
  138.   { Exec SCI Packet }
  139.   {-----------------}
  140.  
  141.   TAspiExecSCSIPacket = RECORD
  142.  
  143.     Command             : BYTE;
  144.     Status              : BYTE;
  145.     HostNum             : BYTE;
  146.     SCSIReqFlags        : BYTE;
  147.     Reserved            : LONGINT;
  148.  
  149.     Target              : BYTE;
  150.     LUN                 : BYTE;
  151.     DataSize            : LONGINT;
  152.     SenseSize           : BYTE;
  153.     DataBuff            : POINTER;
  154.     SRBLink             : POINTER;
  155.     CDBSize             : BYTE;
  156.     HostStatus          : BYTE;
  157.     DevStatus           : BYTE;
  158.     PostRoutine         : POINTER;
  159.     ASPIWorkSpace       : Array[1..34] of BYTE;
  160.  
  161.     CDB                 : Array[1..16+64] of BYTE;
  162.  
  163.   END;
  164.  
  165.   PAspiExecSCSIPacket = ^TAspiExecSCSIPacket;
  166.  
  167.  
  168.  
  169.   {-----------------------------}
  170.   { ASPI Get Int 13 info packet }
  171.   {-----------------------------}
  172.  
  173.   TAspiGetInt13InfoPacket = RECORD
  174.  
  175.     Command             : BYTE;
  176.     Status              : BYTE;
  177.     HostNum             : BYTE;
  178.     SCSIReqFlags        : BYTE;
  179.     Reserved            : LONGINT;
  180.  
  181.     Target              : BYTE;
  182.     LUN                 : BYTE;
  183.     Int13Flags          : BYTE;
  184.     Int13Drive          : BYTE;
  185.     PrefHeadTrans       : BYTE;
  186.     PrefSecTrans        : BYTE;
  187.     Reserved2           : Array[1..10] of BYTE;
  188.  
  189.   END;
  190.  
  191.   PAspiGetInt13InfoPacket = ^TAspiGetInt13InfoPacket;
  192.  
  193.  
  194.  
  195.   {-----------------------------}
  196.   { ASPI Host Inquiry structure }
  197.   {-----------------------------}
  198.  
  199.   TAspiHostInq = RECORD
  200.  
  201.     HostSCSIid          : BYTE;
  202.     HostAdapterID       : TAspiAsciiID;
  203.     SCSIManagerID       : TAspiAsciiID;
  204.     HostUniqueParams    : TAspiHostInqUnique;
  205.  
  206.   END;
  207.  
  208.   PAspiHostInq = ^TAspiHostInq;
  209.  
  210.  
  211.  
  212.   {-----------------------------------}
  213.   { ASPI Int13 (Drive) Info structure }
  214.   {-----------------------------------}
  215.  
  216.   TAspiInt13Info = RECORD
  217.  
  218.     Int13Flags          : BYTE;
  219.     Int13Drive          : BYTE;
  220.     PrefHeadTrans       : BYTE;
  221.     PrefSecTrans        : BYTE;
  222.  
  223.   END;
  224.  
  225.   PAspiInt13Info = ^TAspiInt13Info;
  226.  
  227. {────────────────────────────────────────────────────────────────────────────}
  228.  
  229. Procedure ASPI_GetCaps(           AspiCaps       : PAspiCaps );
  230.  
  231. Function  ASPI_LibInit                                        : WORD;
  232.  
  233. Procedure ASPI_ExecPacket(        ASPIPacket     : POINTER   );
  234.  
  235. Function  ASPI_GetNumHosts                                    : BYTE;
  236.  
  237. Function  ASPI_HostInquiry(       HostNum        : BYTE;
  238.                                   HostInq        : PAspiHostInq ) : TError;
  239.  
  240. Function  ASPI_GetDevType(        HostNum        : BYTE;
  241.                                   Target         : BYTE;
  242.                                   Lun            : BYTE      ) : BYTE;
  243.  
  244. Function  ASPI_GetINT13Info(      HostNum        : BYTE;
  245.                                   Target         : BYTE;
  246.                                   Lun            : BYTE;
  247.                                   Int13Info      : PAspiInt13Info ) : TError;
  248.  
  249.  
  250. Var
  251.  
  252.   ASPIEntry : POINTER;
  253.  
  254. {────────────────────────────────────────────────────────────────────────────}
  255.  
  256.  
  257. ──────────────────────────────────────────────────────────────────────────────
  258.  
  259.  
  260. [FUNCTION]
  261.  
  262. Procedure ASPI_GetCaps(           AspiCaps       : PAspiCaps );
  263.  
  264. [PARAMETERS]
  265.  
  266. AspiCaps    ?
  267.  
  268. [RETURNS]
  269.  
  270. (None)
  271.  
  272. [DESCRIPTION]
  273.  
  274. Gets the capabilities of VASPI in the current environment.
  275.  
  276.  
  277. [SEE-ALSO]
  278.  
  279. [EXAMPLE]
  280.  
  281.  
  282. ──────────────────────────────────────────────────────────────────────────────
  283.  
  284.  
  285. [FUNCTION]
  286.  
  287. Function ASPI_LibInit                                          : WORD;
  288.  
  289. [PARAMETERS]
  290.  
  291. (None)
  292.  
  293. [RETURNS]
  294.  
  295. [DESCRIPTION]
  296.  
  297. Intializes the library; returns 0 if ASPI is present otherwise non-zero.
  298.  
  299. [SEE-ALSO]
  300.  
  301. [EXAMPLE]
  302.  
  303.  
  304. ──────────────────────────────────────────────────────────────────────────────
  305.  
  306.  
  307. [FUNCTION]
  308.  
  309. Procedure ASPI_ExecPacket(        ASPIPacket     : POINTER   );
  310.  
  311. [PARAMETERS]
  312.  
  313. ASPIPacket  Pointer to ASPI Packet
  314.  
  315. [RETURNS]
  316.  
  317. (None)
  318.  
  319. [DESCRIPTION]
  320.  
  321. Executes any ASPI request packet.
  322.  
  323. [SEE-ALSO]
  324.  
  325. [EXAMPLE]
  326.  
  327.  
  328. ──────────────────────────────────────────────────────────────────────────────
  329.  
  330.  
  331. [FUNCTION]
  332.  
  333. Function  ASPI_GetNumHosts                                     : BYTE;
  334.  
  335. [PARAMETERS]
  336.  
  337. (None)
  338.  
  339. [RETURNS]
  340.  
  341. Number of Attached Host Adapters
  342.  
  343. [DESCRIPTION]
  344.  
  345. Returns number of ASPI managers in the system.
  346.  
  347. [SEE-ALSO]
  348.  
  349. [EXAMPLE]
  350.  
  351.  
  352. ──────────────────────────────────────────────────────────────────────────────
  353.  
  354.  
  355. [FUNCTION]
  356.  
  357. Function  ASPI_HostInquiry(       HostNum        : BYTE;
  358.                                   HostInq        : PAspiHostInq ) : TError;
  359.  
  360. [PARAMETERS]
  361.  
  362. HostNum     Host Adapter Number
  363. HostInq     Pointer to ASPI Host Adapter Inquiry Data
  364.  
  365. [RETURNS]
  366.  
  367. [DESCRIPTION]
  368.  
  369. Performs a ASPI Host Inquiry request.
  370.  
  371. [SEE-ALSO]
  372.  
  373. [EXAMPLE]
  374.  
  375.  
  376. ──────────────────────────────────────────────────────────────────────────────
  377.  
  378.  
  379. [FUNCTION]
  380.  
  381. Function  ASPI_GetDevType(        HostNum        : BYTE;
  382.                                   Target         : BYTE;
  383.                                   Lun            : BYTE      ) : BYTE;
  384.  
  385. [PARAMETERS]
  386.  
  387. HostNum     Host Adapter Number
  388. Target      Device Target ID Number
  389. Lun         Device Logical Unit Number
  390.  
  391. [RETURNS]
  392.  
  393. Device Type Number
  394.  
  395. [DESCRIPTION]
  396.  
  397. Performs an ASPI get device type request.
  398.  
  399. [SEE-ALSO]
  400.  
  401. [EXAMPLE]
  402.  
  403.  
  404. ──────────────────────────────────────────────────────────────────────────────
  405.  
  406.  
  407. [FUNCTION]
  408.  
  409. Function  ASPI_GetINT13Info(      HostNum        : BYTE;
  410.                                   Target         : BYTE;
  411.                                   Lun            : BYTE;
  412.                                   Int13Info      : PAspiInt13Info ) : TError;
  413.  
  414. [PARAMETERS]
  415.  
  416. HostNum     Host Adapter Number
  417. Target      Device Target ID Number
  418. Lun         Device Logical Unit Number
  419. Int13Info   Pointer to ASPI INT13h Information Request Packet
  420.  
  421. [RETURNS]
  422.  
  423. [DESCRIPTION]
  424.  
  425. Performs an ASPI get int 13 info request.
  426.  
  427. [SEE-ALSO]
  428.  
  429. [EXAMPLE]
  430.  
  431.