⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sscsi.h

📁 scsi脚本文件(scripts)编程例子
💻 H
字号:
/*--------------------------------------------------*/
/*                                                  */
/* Module SSCSI.H                                   */
/*                                                  */
/* SCSI utility routines for Symbios 53C8XX.        */
/*                                                  */
/* Adapted from Symbios Logic                       */
/*    Software Development Kit                      */
/*                                                  */
/* Project: A Programmer's Guide to SCSI            */
/* Copyright (C) 1997, Brian Sawert.                */
/* All rights reserved.                             */
/*                                                  */
/*--------------------------------------------------*/


#ifndef _SSCSI_H
#define _SSCSI_H


/*---------- constant definitions ----------*/

#define DEF_TIMEOUT           5

// SCSI command definitions
#define CMD_TEST_UNIT_READY   0x00
#define CMD_REQUEST_SENSE     0x03
#define CMD_READ_6            0x08
#define CMD_INQUIRY           0x12
#define CMD_READ_CAPACITY     0x25

// SCSI status definitions
#define STAT_GOOD             0x00
#define STAT_CHECK_CONDITION  0x02
#define STAT_BUSY             0x08

// return codes
enum {ERR_SUCCESS = 0, ERR_SELECT, ERR_SENSE,
   ERR_TIMEOUT, ERR_OTHER};

// SCRIPTS table entry definition
typedef struct {
   DWORD count;               // byte count
   DWORD address;             // physical address
} table_entry;

// SCSI device information
typedef struct {
	BYTE targ_id;              // target SCSI ID
   BYTE dev_type;             // device type
   DWORD blocks;              // number of blocks
	WORD blk_size;             // block size
} scsi_device;


/*---------- macro definitions ----------*/

/*---------- global variables ----------*/

extern BYTE stat_buf;         // status byte
extern BYTE datain_buf[];     // data in buffer
extern BYTE block_buf[];      // block read buffer
extern BYTE sense_buf[];      // sense data buffer
extern BYTE sense_key;        // sense data
extern BYTE sense_asc;
extern BYTE sense_ascq;


/*---------- function declarations ----------*/

// allocate aligned buffers
extern DWORD *alloc_buffer(WORD size);

// poll for SCRIPTS completion
extern int poll_istat(DWORD io_base, DWORD *vector,
   BYTE *dstat, BYTE *istat, WORD *sist);

// set up script and data buffers
extern int init_buffers(void);

// check status and sense data
extern int check_status(pci_device *ppcidev,
   scsi_device *pscsidev);

// execute Test Unit Ready command
extern int test_unit_ready(pci_device *ppcidev,
   scsi_device *pscsidev);

// execute Request Sense command
extern int request_sense(pci_device *ppcidev,
   scsi_device *pscsidev);

// execute Inquiry command
extern int device_inquiry(pci_device *ppcidev,
   scsi_device *pscsidev);

// execute Read Capacity command
extern int read_capacity(pci_device *ppcidev,
   scsi_device *pscsidev);

// execute Read 6 command
extern int read_block(pci_device *ppcidev,
   scsi_device *pscsidev, DWORD blk_num, BYTE nblocks);


#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -