home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / ddkx86v5.zip / DDKX86 / SRC / DEV / TESTCFG / TCFGSCSI.H < prev    next >
C/C++ Source or Header  |  1995-04-14  |  3KB  |  88 lines

  1. /*DDK*************************************************************************/
  2. /*                                                                           */
  3. /* COPYRIGHT    Copyright (C) 1995 IBM Corporation                           */
  4. /*                                                                           */
  5. /*    The following IBM OS/2 WARP source code is provided to you solely for  */
  6. /*    the purpose of assisting you in your development of OS/2 WARP device   */
  7. /*    drivers. You may use this code in accordance with the IBM License      */
  8. /*    Agreement provided in the IBM Device Driver Source Kit for OS/2. This  */
  9. /*    Copyright statement may not be removed.                                */
  10. /*                                                                           */
  11. /*****************************************************************************/
  12.  
  13. #define MAX_SCSI_DEVICES 32
  14. #define MAX_DT_ADAPTERS  8
  15. #define MAX_DT_UNITS     56
  16. #define MAX_DT_SIZE (sizeof(DEVICETABLE) + ((MAX_DT_ADAPTERS-1) * 2) +        \
  17.               (MAX_DT_ADAPTERS * (sizeof(ADAPTERINFO)-sizeof(UNITINFO))) +    \
  18.               (MAX_DT_UNITS * sizeof(UNITINFO))  )
  19. #define FILTER_WORKSPACE_SIZE   24
  20.  
  21. struct SCSI_command {
  22.         UCHAR   byte_0;
  23.         UCHAR   byte_1;
  24.         UCHAR   byte_2;
  25.         UCHAR   byte_3;
  26.         UCHAR   byte_4;
  27.         UCHAR   byte_5;
  28.         UCHAR   byte_6;
  29.         UCHAR   byte_7;
  30.         UCHAR   byte_8;
  31.         UCHAR   byte_9;
  32.         UCHAR   byte_10;
  33.         UCHAR   byte_11;
  34.         UCHAR   byte_12;
  35.         UCHAR   byte_13;
  36.         UCHAR   byte_14;
  37.         UCHAR   byte_15;
  38. };
  39.  
  40. typedef struct _IORB_CDB           {  /* IOCDB */
  41.  
  42.   IORB_ADAPTER_PASSTHRU  apt;
  43.   struct SCSI_command    CDB;
  44.   UCHAR                  CDB_data[64];
  45.   UCHAR                  filter_workspace[FILTER_WORKSPACE_SIZE];
  46.  
  47. } IORB_CDB, FAR *PIORB_CDB, *NPIORB_CDB;
  48.  
  49. #define ATAPI_Cmd_Length 12
  50.  
  51. /************************************************/
  52. /* SCSI Inquiry Command  (0x12)                 */
  53. /************************************************/
  54. struct CDB_Inquiry {
  55.  
  56.         UCHAR   OpCode;
  57.  
  58.         UCHAR   EVPD       : 1;
  59.         UCHAR   reserved_1 : 4;
  60.         UCHAR   LUN        : 3;
  61.  
  62.         UCHAR   page_code;
  63.         UCHAR   reserved_2;
  64.         UCHAR   alloc_length;
  65.         UCHAR   control;
  66. };
  67.  
  68. typedef struct _IORB_DMWORK
  69. {
  70.    PUNITINFO    pUnitInfo;
  71.    USHORT        Reserved_1;
  72.    PBYTE         pRequest;
  73.    SCATGATENTRY  SGList;
  74.    NPIORB        WaitingQueueLink;
  75.    NPIORB        pCoReqIORB;
  76.  
  77. } IORB_DMWORK, *PIORB_DMWORK;
  78.  
  79.  
  80.  
  81. void near BuildCDB_Inquiry(PUNITINFO pUnitInfo, PIORB_CDB  pIORB, USHORT DevBus);
  82. void near BuildIORB_PassthruCDB (PUNITINFO pU,ULONG dl,ULONG pD, PIORB_CDB pI);
  83. #pragma alloc_text(SWAPCODE,BuildCDB_Inquiry)
  84. #pragma alloc_text(SWAPCODE,BuildIORB_PassthruCDB)
  85.  
  86. void _loadds far IORBPost(PIORBH pIORB);
  87. #pragma alloc_text(STATICCODE, IORBPost)
  88.