亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? tapeinfo.c

?? 通用SCSI設備備份/讀寫程序
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* Copyright 2000 Enhanced Software Technologies Inc. *   Released under terms of the GNU General Public License as * required by the license on 'mtxl.c'. * $Date: 2001/06/19 21:51:32 $ * $Revision: 1.2 $ *//*#define DEBUG_PARTITION *//*#define DEBUG 1 *//* What this does: This basically dumps out the contents of the following * pages: * * Inquiry -- prints full inquiry info. If it's not a tape drive, this is * the end of things. *    DeviceType: *    Manufacturer: *    ProdID:   *    ProdRevision: * * Log Sense: TapeAlert Page (if supported): *    TapeAlert:[message#]<Message>  e.g. "TapeAlert:[22]Cleaning Cartridge Worn Out" *   * Mode Sense:  *  Data Compression Page: *    DataCompEnabled:<yes|no> *    DataCompCapable:<yes|no> *    DataDeCompEnabled:<yes|no> *    CompType:<number> *    DeCompType:<number> * *  Device Configuration Page: *    ActivePartition:<#> *    DevConfigComp:<#>    -- the compression byte in device config page. *    EarlyWarningSize:<#> -- size of early warning buffer? * *  Medium Partition Page: *    NumPartitions:<#> *    MaxPartitions:<#> *    Partition[0]:<size> *    Partition[1]:<size>... * * Read Block Limits command: *    MinBlock:<#>  -- Minimum block size. *    MaxBlock:<#>  -- Maximum block size.  */#include <stdio.h>#include <string.h>#include "mtx.h"#include "mtxl.h"char  *argv0;void usage(void) {  FatalError("Usage: tapeinfo -f <generic-device>\n");}/* A table for printing out the peripheral device type as ASCII. */ static char *PeripheralDeviceType[32] = {  "Disk Drive",  "Tape Drive",  "Printer",  "Processor",  "Write-once",  "CD-ROM",  "Scanner",  "Optical",  "Medium Changer",  "Communications",  "ASC IT8",  "ASC IT8",  "RAID Array",  "Enclosure Services",  "OCR/W",  "Bridging Expander", /* 0x10 */  "Reserved",  /* 0x11 */  "Reserved", /* 0x12 */  "Reserved",  /* 0x13 */  "Reserved",  /* 0x14 */  "Reserved",  /* 0x15 */  "Reserved",  /* 0x16 */  "Reserved",  /* 0x17 */  "Reserved",  /* 0x18 */  "Reserved",  /* 0x19 */  "Reserved",  /* 0x1a */  "Reserved",  /* 0x1b */  "Reserved",  /* 0x1c */  "Reserved",  /* 0x1d */  "Reserved",  /* 0x1e */  "Unknown"    /* 0x1f */};/* we call it MediumChangerFD for history reasons, sigh. *//* now to print inquiry information: Copied from other one.... */static void ReportInquiry(DEVICE_TYPE MediumChangerFD){  RequestSense_T RequestSense;  Inquiry_T *Inquiry;  int i;  Inquiry = RequestInquiry(MediumChangerFD,&RequestSense);  if (Inquiry == NULL)     {      PrintRequestSense(&RequestSense);      FatalError("INQUIRY Command Failed\n");    }    printf("Product Type: %s\n",PeripheralDeviceType[Inquiry->PeripheralDeviceType]);  printf("Vendor ID: '");  for (i = 0; i < sizeof(Inquiry->VendorIdentification); i++)    printf("%c", Inquiry->VendorIdentification[i]);  printf("'\nProduct ID: '");  for (i = 0; i < sizeof(Inquiry->ProductIdentification); i++)    printf("%c", Inquiry->ProductIdentification[i]);  printf("'\nRevision: '");  for (i = 0; i < sizeof(Inquiry->ProductRevisionLevel); i++)    printf("%c", Inquiry->ProductRevisionLevel[i]);  printf("'\n");\  if (Inquiry->MChngr) {  /* check the attached-media-changer bit... */    printf("Attached Changer: Yes\n");  } else {    printf("Attached Changer: No\n");  }  free(Inquiry);  /* well, we're about to exit, but ... */}/* Okay, now for the Log Sense Tape Alert Page (if supported): */#define TAPEALERT_SIZE 2048  /* max size of tapealert buffer. */ #define MAX_TAPE_ALERT 0x41static char *tapealert_messages[]= {  "Undefined", /* 0 */  "         Read: Having problems reading (slowing down)", /* 1 */  "        Write: Having problems writing (losing capacity)", /* 2 */  "   Hard Error: Uncorrectable read/write error", /* 3 */  "        Media: Media Performance Degraded, Data Is At Risk", /* 4 */  " Read Failure: Tape faulty or tape drive broken", /* 5 */  "Write Failure: Tape faulty or tape drive broken", /* 6 */  "   Media Life: The tape has reached the end of its useful life", /* 7 */  "Not Data Grade:Replace cartridge with one  containing data grade tape",/*8*/  "Write Protect: Attempted to write to a write-protected cartridge",/*9 */  "   No Removal: Cannot unload, initiator is preventing media removal", /*a*/  "Cleaning Media:Cannot back up or restore to a cleaning cartridge", /* b */  "   Bad Format: The loaded tape contains data in an unsupported format", /*c */  " Snapped Tape: The data cartridge contains a broken tape", /* d */  "Undefined", /* e */  "Undefined", /* f */  "Undefined", /* 10 */  "Undefined", /* 11 */  "Undefined", /* 12 */  "Undefined", /* 13 */  "    Clean Now: The tape drive neads cleaning NOW", /* 0x14 */  "Clean Periodic:The tape drive needs to be cleaned at next opportunity", /* 0x15 */  "Cleaning Media:Cannot clean because cleaning cartridge used up, insert new cleaning cartridge to clean the drive", /* 0x16 */  "Undefined", /* 0x17 */  "Undefined", /* 0x18 */  "Undefined", /* 0x19 */  "Undefined", /* 0x1a */  "Undefined", /* 0x1b */  "Undefined", /* 0x1c */  "Undefined", /* 0x1d */  "   Hardware A: Tape drive has a problem not read/write related", /* 0x1e */  "   Hardware B: Tape drive has a problem not read/write related", /* 0x1f */  "    Interface: Problem with SCSI interface between tape drive and initiator", /* 0x20 */  "  Eject Media: The current operation has failed. Eject and reload media", /* 0x21 */  "Download Fail: Attempt to download new firmware failed", /* 0x22 */  "Undefined", /* 0x23 */  "Undefined", /* 0x24 */  "Undefined", /* 0x25 */  "Undefined", /* 0x26 */  "Undefined", /* 0x27 */  "Loader Hardware A: Changer having problems communicating with tape drive", /* 0x28   40 */  "Loader Stray Tape: Stray tape left in drive from prior error", /* 0x29 41 */  "Loader Hardware B: Autoloader mechanism has a fault", /* 0x2a 42 */  "  Loader Door: Loader door is open, please close it", /* 0x2b 43 */  "Undefined", /* 0x2c */  "Undefined", /* 0x2d */  "Undefined", /* 0x2e */  "Undefined", /* 0x2f */  "Undefined", /* 0x30 */  "Undefined", /* 0x31 */  "Undefined", /* 0x32 */  "Undefined", /* 0x33 */  "Undefined", /* 0x34 */  "Undefined", /* 0x35 */  "Undefined", /* 0x36 */  "Undefined", /* 0x37 */  "Undefined", /* 0x38 */  "Undefined", /* 0x39 */  "Undefined", /* 0x3a */  "Undefined", /* 0x3b */  "Undefined", /* 0x3c */  "Undefined", /* 0x3d */  "Undefined", /* 0x3e */  "Undefined", /* 0x3f */  "Undefined" /* 0x40 */};struct tapealert_struct {  int length;  unsigned char *data;};    static struct tapealert_struct *RequestTapeAlert(DEVICE_TYPE fd, RequestSense_T *sense) {  CDB_T CDB;    struct tapealert_struct *result;  int i,tapealert_len,result_idx;    unsigned char buffer[TAPEALERT_SIZE];  unsigned char *walkptr;  slow_bzero(buffer,TAPEALERT_SIZE); /*zero it... */  /* now to create the CDB block: */  CDB[0]=0x4d;   /* Log Sense */  CDB[1]=0;     CDB[2]=0x2e;   /* Tape Alert Page. */  CDB[3]=0;  CDB[4]=0;  CDB[5]=0;  CDB[6]=0;  CDB[7]=TAPEALERT_SIZE>>8 & 0xff;  /* hi byte, allocation size */  CDB[8]=TAPEALERT_SIZE & 0xff;     /* lo byte, allocation size */  CDB[9]=0;  /* reserved */   if (SCSI_ExecuteCommand(fd,Input,&CDB,10,buffer,TAPEALERT_SIZE,sense)!=0){    return NULL;  }  result=xmalloc(sizeof(struct tapealert_struct));  /* okay, we have stuff in the result buffer: the first 4 bytes are a header:   * byte 0 should be 0x2e, byte 1 == 0, bytes 2,3 tell how long the   * tapealert page is.    */  if ((buffer[0]&0x3f) != 0x2e) {    result->data=NULL;    result->length=0;    return result;  }  tapealert_len=(((int)buffer[2])<<8) + buffer[3];    if (!tapealert_len) {    result->length=0;    result->data=NULL;    return result;  }  /* okay, now allocate data and move the buffer over there: */  result->length=MAX_TAPE_ALERT;  result->data=xzmalloc(MAX_TAPE_ALERT); /* alloc & zero. */    walkptr=&buffer[4];  i=0;  while (i<tapealert_len) {        result_idx=(((int)walkptr[0])<<8) + walkptr[1]; /* the parameter #. */    if (result_idx > 0 && result_idx < MAX_TAPE_ALERT) {      if (walkptr[4]) {	result->data[result_idx]=1;       } else {	result->data[result_idx]=0;      }#ifdef DEBUGOLD1      fprintf(stderr,"Alert[0x%x]=%d\n",result_idx,result->data[result_idx]);      fflush(stderr);#endif    } else {      FatalError("Invalid tapealert page: %d\n",result_idx);    }    i=i+4+walkptr[3]; /* length byte! */    walkptr=walkptr+4+walkptr[3]; /* next! */  }  return result;}static void ReportTapeAlert(DEVICE_TYPE fd) {  /* we actually ignore a bad sense reading, like might happen if the    * tape drive does not support the tapealert page.    */    RequestSense_T RequestSense;    struct tapealert_struct *result;  int i;  result=RequestTapeAlert(fd,&RequestSense);  if (!result) return; /* sorry. Don't print sense here. */  if (!result->length) return; /* sorry, no alerts valid. */    for (i=0;i<result->length;i++) {    if (result->data[i]) {      printf("TapeAlert[%d]:%s.\n",i,tapealert_messages[i]);    }  }  free(result->data);  free(result);  return;}static unsigned char*mode_sense(DEVICE_TYPE fd, int pagenum, int alloc_len,  RequestSense_T *RequestSense) {  CDB_T CDB;  unsigned char *input_buffer; /*the input buffer -- has junk prepended to				* actual sense page. 				*/  unsigned char *tmp;  unsigned char *retval;  /* the return value. */  int i,pagelen;  if (alloc_len > 255) {    FatalError("mode_sense(6) can only read up to 255 characters!\n");  }  input_buffer=(unsigned char *)xzmalloc(256); /* overdo it, eh? */  /* clear the sense buffer: */  slow_bzero((char *)RequestSense,sizeof(RequestSense_T));    /* returns an array of bytes in the page, or, if not possible, NULL. */  CDB[0]=0x1a; /* Mode Sense(6) */  CDB[1]=0;   CDB[2]=pagenum; /* the page to read. */  CDB[3]=0;  CDB[4]=255; /* allocation length. This does max of 256 bytes! */  CDB[5]=0;    if (SCSI_ExecuteCommand(fd,Input,&CDB,6,			  input_buffer,255,RequestSense) != 0) {#ifdef DEBUG_MODE_SENSE    fprintf(stderr,"Could not execute mode sense...\n");    fflush(stderr);#endif    return NULL; /* sorry, couldn't do it. */  }  /* Oh hell, write protect is the only thing I have: always print   * it if our mode page was 0x0fh, before skipping past buffer:    * if the media is *NOT* write protected, just skip, sigh.    *   * Oh poops, the blocksize is reported in the block descriptor header<   * too. Again, just print if our mode page was 0x0f...   */  if (pagenum == 0x0f) {    int blocklen;    if (input_buffer[2] & 0x80) {      printf("WriteProtect: yes\n");    }    if (input_buffer[2] & 0x70) {      printf("BufferedMode: yes\n");    }    if (input_buffer[1] ) {      printf("Medium Type: 0x%x\n", input_buffer[1]);    } else {      printf("Medium Type: Not Loaded\n");    }    printf("Density Code: 0x%x\n", input_buffer[4]);    /* Put out the block size: */    blocklen=((int)input_buffer[9]<<16)+      ((int)input_buffer[10]<<8)+      input_buffer[11];

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精品第一页| 久久久久久麻豆| 欧美视频一区二区三区在线观看| 成人短视频下载| 成人av在线一区二区| 成人精品在线视频观看| 成人免费视频视频| www.日本不卡| 91福利在线导航| 欧美日韩五月天| 在线不卡欧美精品一区二区三区| 欧美群妇大交群中文字幕| 7777精品伊人久久久大香线蕉最新版 | 国产亚洲精品中文字幕| 久久品道一品道久久精品| 久久精品在线免费观看| 国产精品三级电影| 亚洲精品久久嫩草网站秘色| 依依成人综合视频| 日韩国产欧美三级| 国产美女精品人人做人人爽| 高清成人在线观看| 99国产精品久| 欧美电影一区二区三区| 精品国产乱码久久久久久蜜臀 | 久久久久久久久久久久久久久99 | 久久久三级国产网站| 日本一区二区三区四区| 中文字幕一区二区在线播放| 一区二区三区色| 蜜桃av一区二区| 成人蜜臀av电影| 欧美日韩在线播放三区四区| 精品日韩一区二区| 国产精品污网站| 亚洲第一久久影院| 狠狠色综合播放一区二区| 99国产精品久久久久久久久久| 欧美三级日韩在线| 久久精品在线免费观看| 一区二区三区欧美视频| 狠狠狠色丁香婷婷综合久久五月| caoporen国产精品视频| 91精品国产乱码| 国产精品久久久久久久久免费丝袜 | 97久久精品人人爽人人爽蜜臀| 欧美三级午夜理伦三级中视频| 精品精品国产高清a毛片牛牛 | 免费精品视频在线| 成人av在线看| 在线播放日韩导航| 中文字幕高清不卡| 青青草国产精品97视觉盛宴 | 久久综合色鬼综合色| 亚洲视频狠狠干| 久久97超碰国产精品超碰| 色欧美88888久久久久久影院| 精品久久久久久久久久久久包黑料| 国产精品视频一二三| 视频一区在线播放| aaa亚洲精品| 日韩久久精品一区| 亚洲国产精品视频| av男人天堂一区| 精品999久久久| 婷婷久久综合九色国产成人 | 精品视频一区二区三区免费| 中文在线资源观看网站视频免费不卡 | 中文字幕av在线一区二区三区| 日本美女视频一区二区| 99久久伊人久久99| 久久亚洲捆绑美女| 免费高清在线一区| 欧美亚洲国产一区在线观看网站 | 视频一区二区不卡| 菠萝蜜视频在线观看一区| 欧美一区二区三区在线电影| 亚洲免费观看高清| av色综合久久天堂av综合| 久久女同精品一区二区| 免费成人av在线播放| 在线观看日韩毛片| 最新中文字幕一区二区三区| 国产乱码精品一区二区三区五月婷 | 精品国产乱码久久久久久夜甘婷婷 | 欧美色图免费看| 亚洲同性同志一二三专区| 国产永久精品大片wwwapp| 91精品国产综合久久香蕉麻豆 | 91高清视频在线| 亚洲欧美在线视频| 成人黄色在线看| 久久精品在线免费观看| 毛片av一区二区| 欧美伦理电影网| 亚洲国产日日夜夜| 在线亚洲一区观看| 亚洲靠逼com| 色综合天天综合给合国产| 中国av一区二区三区| 福利91精品一区二区三区| 久久久久久久国产精品影院| 久久综合综合久久综合| 欧美一级黄色片| 麻豆成人久久精品二区三区小说| 日韩一级黄色片| 麻豆91免费看| 精品久久久久久久一区二区蜜臀| 蜜桃精品视频在线| 精品久久久久av影院| 国产真实精品久久二三区| 久久久久久久久久久久久久久99 | 精品国产一区二区精华| 精品一区二区三区蜜桃| xfplay精品久久| 国产成人综合在线| 亚洲欧洲一区二区在线播放| 色狠狠色噜噜噜综合网| 亚洲综合在线免费观看| 69精品人人人人| 久久99国产精品尤物| 中文字幕不卡在线| 色哟哟亚洲精品| 日韩激情中文字幕| 欧美大片在线观看一区| 国产成人午夜精品5599| 亚洲天堂成人网| 欧美日韩中文另类| 久久精品国产久精国产爱| 久久精品男人的天堂| 91色在线porny| 三级一区在线视频先锋 | 91传媒视频在线播放| 亚洲午夜免费福利视频| 欧美一区二区福利视频| 国产一区二区电影| 国产精品久久久久四虎| 欧美图片一区二区三区| 极品少妇xxxx偷拍精品少妇| 欧美国产精品专区| 欧美中文字幕一区| 国产一区视频导航| 亚洲欧美成人一区二区三区| 欧美日本高清视频在线观看| 国产成人综合在线观看| 亚洲国产成人精品视频| 久久亚洲免费视频| 欧美日韩免费一区二区三区视频| 久久99精品久久只有精品| 亚洲欧洲综合另类| 欧美一级黄色大片| 91免费看片在线观看| 久久爱www久久做| 亚洲精品日日夜夜| 精品国产露脸精彩对白| 在线观看日韩精品| 国产白丝网站精品污在线入口| 亚洲一区二三区| 欧美国产激情一区二区三区蜜月| 欧美午夜影院一区| 成人午夜av影视| 另类小说图片综合网| 一区二区免费在线| 国产精品丝袜一区| 日韩写真欧美这视频| 99re在线视频这里只有精品| 久久精品久久精品| 亚洲精品乱码久久久久久久久| 久久婷婷一区二区三区| 欧美日韩在线不卡| 99re热这里只有精品视频| 久久99精品国产91久久来源| 亚洲国产毛片aaaaa无费看| 国产午夜精品一区二区三区视频 | 成人精品免费网站| 久久成人久久鬼色| 亚洲伊人伊色伊影伊综合网| 国产精品美女久久久久av爽李琼| 欧美一区二区三区四区视频| 欧洲精品视频在线观看| 成人黄色软件下载| 极品美女销魂一区二区三区免费| 亚洲国产精品精华液网站| 亚洲欧洲成人自拍| 中文字幕精品综合| 国产日韩欧美电影| 精品久久久久久久久久久久久久久 | 欧洲国产伦久久久久久久| 顶级嫩模精品视频在线看| 麻豆久久久久久| 舔着乳尖日韩一区| 一二三区精品福利视频| 亚洲欧美一区二区不卡| 国产精品九色蝌蚪自拍| 国产亚洲制服色| 国产亚洲1区2区3区| 精品国产乱码久久| 91精品国产综合久久香蕉麻豆| 欧美日韩二区三区| 欧美日韩黄视频|