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

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

?? scsi.c

?? 通用SCSI設備備份/讀寫程序
?? C
字號:
/* SCSI.C - VMS-specific SCSI routines.**** TECSys Development, Inc., April 1998**** This module began life as a program called CDWRITE20, a CD-R control** program for VMS. No real functionality from the original CDWRITE20** is present in this module, but in the interest of making certain that** proper credit is given where it may be due, the copyrights and inclusions** from the CDWRITE20 program are included below.**** The portions of coding in this module ascribable to TECSys Development** are hereby also released under the terms and conditions of version 2** of the GNU General Public License as described below....*//* The remainder of these credits are included directly from the CDWRITE20** sources. *//* Copyright 1994 Yggdrasil Computing, Inc. *//* Written by Adam J. Richter (adam@yggdrasil.com) *//* Rewritten February 1997 by Eberhard Heuser-Hofmann*//* using the OpenVMS generic scsi-interface *//* see the README-file, how to setup your machine *//***  Modified March 1997 by John Vottero to use overlapped, async I/O**  and lots of buffers to help prevent buffer underruns.**  Also improved error reporting.*//* This file may be copied under the terms and conditions of version 2   of the GNU General Public License, as published by the Free   Software Foundation (Cambridge, Massachusetts).   This program is distributed in the hope that it will be useful,   but WITHOUT ANY WARRANTY; without even the implied warranty of   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the   GNU General Public License for more details.   You should have received a copy of the GNU General Public License   along with this program; if not, write to the Free Software   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  *//* The second notice comes from sys$examples:gktest.c (OpenVMS 7.0)*//*** COPYRIGHT (c) 1993 BY** DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASSACHUSETTS.** ALL RIGHTS RESERVED.**** THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED** ONLY  IN  ACCORDANCE  OF  THE  TERMS  OF  SUCH  LICENSE  AND WITH THE** INCLUSION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR  ANY  OTHER** COPIES THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY** OTHER PERSON.  NO TITLE TO AND  OWNERSHIP OF THE  SOFTWARE IS  HEREBY** TRANSFERRED.**** THE INFORMATION IN THIS SOFTWARE IS	SUBJECT TO CHANGE WITHOUT NOTICE** AND	SHOULD	NOT  BE  CONSTRUED  AS A COMMITMENT BY DIGITAL EQUIPMENT** CORPORATION.**** DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE  OR  RELIABILITY OF ITS** SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DIGITAL.*//*  Define the Generic SCSI Command Descriptor.*/typedef struct scsi$desc{  unsigned int SCSI$L_OPCODE;	    /* SCSI Operation Code */  unsigned int SCSI$L_FLAGS;	    /* SCSI Flags Bit Map */  unsigned char *SCSI$A_CMD_ADDR;   /* ->SCSI Command Buffer */  unsigned int SCSI$L_CMD_LEN;	    /* SCSI Command Length (bytes) */  unsigned char *SCSI$A_DATA_ADDR;  /* ->SCSI Data Buffer */  unsigned int SCSI$L_DATA_LEN;	    /* SCSI Data Length (bytes) */  unsigned int SCSI$L_PAD_LEN;	    /* SCSI Pad Length (bytes) */  unsigned int SCSI$L_PH_CH_TMOUT;  /* SCSI Phase Change Timeout (seconds) */  unsigned int SCSI$L_DISCON_TMOUT; /* SCSI Disconnect Timeout (seconds) */  unsigned int SCSI$L_RES_1;	    /* Reserved */  unsigned int SCSI$L_RES_2;	    /* Reserved */  unsigned int SCSI$L_RES_3;	    /* Reserved */  unsigned int SCSI$L_RES_4;	    /* Reserved */  unsigned int SCSI$L_RES_5;	    /* Reserved */  unsigned int SCSI$L_RES_6;	    /* Reserved */}SCSI$DESC;/*  Define the SCSI Input/Output Status Block.*/typedef struct scsi$iosb{  unsigned short SCSI$W_VMS_STAT;   /* VMS Status Code */  unsigned long SCSI$L_IOSB_TFR_CNT; /* Actual Byte Count Transferred */  unsigned char SCSI$B_IOSB_FILL_1; /* Unused */  unsigned char SCSI$B_IOSB_STS;    /* SCSI Device Status */}SCSI$IOSB;/*  Define the VMS symbolic representation for a successful SCSI command.*/#define SCSI$K_GOOD		0/*  Define the SCSI Flag Field Constants.*/#define SCSI$K_WRITE        	0x0 /* Data Transfer Direction: Write */#define SCSI$K_READ         	0x1 /* Data Transfer Direction: Read */#define SCSI$K_FL_ENAB_DIS  	0x2 /* Enable Disconnect/Reconnect *//*  Define DESCR_CNT.  It must be a power of two and large enough  for the maximum concurrent usage of descriptors.*/#define DESCR_CNT 16#define MK_EFN			0   /* Event Flag Number */#define FailureStatusP(Status)	(~(Status) & 1)static struct dsc$descriptor_s *descr(char *String){  static struct dsc$descriptor_s d_descrtbl[DESCR_CNT];  static unsigned short descridx = 0;  struct dsc$descriptor_s *d_ret = &d_descrtbl[descridx];  descridx = (descridx + 1) & (DESCR_CNT - 1);  d_ret->dsc$w_length = strlen((const char *) String);  d_ret->dsc$a_pointer = String;  d_ret->dsc$b_class = 0;  d_ret->dsc$b_dtype = 0;  return d_ret;}static int SCSI_OpenDevice(char *DeviceName){  unsigned long d_dev[2], iosb[2], Status;  union prvdef setprivs, newprivs;  unsigned long ismnt = 0;  unsigned long dvcls = 0;  unsigned long dchr2 = 0;  int DeviceFD = 0;  struct itmlst_3 {    unsigned short ilen;    unsigned short code;    unsigned long *returnP;    unsigned long ignored;  } dvi_itmlst[] = { { 4, DVI$_MNT, 0 /*&ismnt*/, 0 },		     { 4, DVI$_DEVCLASS, 0 /*&dvcls*/, 0 },		     { 4, DVI$_DEVCHAR2, 0 /*&dchr2*/, 0 },		     { 0, 0, 0, 0 } };  dvi_itmlst[0].returnP = &ismnt;  dvi_itmlst[1].returnP = &dvcls;  dvi_itmlst[2].returnP = &dchr2;  Status = sys$alloc(descr(DeviceName), 0, 0, 0, 0);  if (FailureStatusP(Status))    {      VMS_ExitCode = Status;      FatalError("cannot allocate device '%s' - %X\n", DeviceName, Status);    }  Status = sys$assign(descr(DeviceName), &DeviceFD, 0, 0);  if (FailureStatusP(Status))    {      VMS_ExitCode = Status;      FatalError("cannot open device '%s' - %X\n", DeviceName, Status);    }  Status = sys$getdviw(0, DeviceFD, 0, &dvi_itmlst, &iosb, 0, 0, 0);  if (FailureStatusP(Status))    {      VMS_ExitCode = Status;      FatalError("cannot $getdvi(1) on device '%s' - %X\n", DeviceName, Status);    }  if (FailureStatusP(Status = iosb[0]))    {      VMS_ExitCode = Status;      FatalError("cannot $getdvi(2) on device '%s' - %X\n", DeviceName, Status);    }  if (dvcls != DC$_TAPE)    {      VMS_ExitCode = SS$_IVDEVNAM;      FatalError("specified device is NOT a magtape: operation denied\n");    }#ifndef __DECC#ifndef DEV$M_SCSI#define DEV$M_SCSI 0x1000000#endif#endif  if (~dchr2 & DEV$M_SCSI)    {      VMS_ExitCode = SS$_IVDEVNAM;      FatalError("specified magtape is NOT a SCSI device: operation denied\n");    }#if USING_DEC_DRIVE | USING_LDRSET#ifndef __DECC#ifndef DEV$M_LDR#define DEV$M_LDR 0x100000#endif#endif  if (~dchr2 & DEV$M_LDR)    {      VMS_ExitCode = SS$_IVDEVNAM;      FatalError(	"specified SCSI magtape does not have a loader: operation denied\n");    }#endif  if (ismnt)    {      VMS_ExitCode = SS$_DEVMOUNT;      FatalError("specified device is mounted: operation denied\n");    }  ots$move5(0, 0, 0, sizeof(newprivs), &newprivs);  newprivs.prv$v_diagnose = 1;  newprivs.prv$v_log_io = 1;  newprivs.prv$v_phy_io = 1;  Status = sys$setprv(1, &newprivs, 0, 0);  if (FailureStatusP(Status))    {      VMS_ExitCode = Status;      FatalError(	"error enabling privs (diagnose,log_io,phy_io): operation denied\n");    }  Status = sys$setprv(1, 0, 0, &setprivs);  if (FailureStatusP(Status))    {      VMS_ExitCode = Status;      FatalError("error retrieving current privs: operation denied\n");    }  if (!setprivs.prv$v_diagnose)    {      VMS_ExitCode = SS$_NODIAGNOSE;      FatalError("DIAGNOSE privilege is required: operation denied\n");    }  if (!setprivs.prv$v_phy_io && !setprivs.prv$v_log_io)    {      VMS_ExitCode = SS$_NOPHY_IO;      FatalError("PHY_IO or LOG_IO privilege is required: operation denied\n");    }  return DeviceFD;}static void SCSI_CloseDevice(char *DeviceName,			     int DeviceFD){  unsigned long Status;  Status = sys$dassgn(DeviceFD);  if (FailureStatusP(Status))    FatalError("cannot close SCSI device '%s' - %X\n", DeviceName, Status);}static int SCSI_ExecuteCommand(int DeviceFD,			       Direction_T Direction,			       CDB_T *CDB,			       int CDB_Length,			       void *DataBuffer,			       int DataBufferLength,			       RequestSense_T *RequestSense){  SCSI$DESC cmd_desc;  SCSI$IOSB cmd_iosb;  unsigned long Status;  int Result;  memset(RequestSense, 0, sizeof(RequestSense_T));  /* Issue the QIO to send the SCSI Command. */  ots$move5(0, 0, 0, sizeof(cmd_desc), &cmd_desc);  cmd_desc.SCSI$L_OPCODE = 1; /* Only defined SCSI opcode... a VMS thing */  cmd_desc.SCSI$A_CMD_ADDR = CDB;  cmd_desc.SCSI$L_CMD_LEN = CDB_Length;  cmd_desc.SCSI$A_DATA_ADDR = DataBuffer;  cmd_desc.SCSI$L_DATA_LEN = DataBufferLength;  cmd_desc.SCSI$L_PAD_LEN = 0;  cmd_desc.SCSI$L_PH_CH_TMOUT = 180; /* SCSI Phase Change Timeout (seconds) */  cmd_desc.SCSI$L_DISCON_TMOUT = 180; /* SCSI Disconnect Timeout (seconds) */  switch (Direction)    {      /*	NOTE: Do NOT include flag SCSI$K_FL_ENAB_SYNC.	      It does NOT work for this case.      */    case Input:      cmd_desc.SCSI$L_FLAGS = SCSI$K_READ | SCSI$K_FL_ENAB_DIS;      break;    case Output:      cmd_desc.SCSI$L_FLAGS = SCSI$K_WRITE | SCSI$K_FL_ENAB_DIS;      break;    }  /* Issue the SCSI Command. */  Status = sys$qiow(MK_EFN, DeviceFD, IO$_DIAGNOSE, &cmd_iosb, 0, 0,                    &cmd_desc, sizeof(cmd_desc), 0, 0, 0, 0);  Result = SCSI$K_GOOD;  if (Status & 1)    Status = cmd_iosb.SCSI$W_VMS_STAT;  if (Status & 1)    Result = cmd_iosb.SCSI$B_IOSB_STS;  if (Result != SCSI$K_GOOD)    {      unsigned char RequestSenseCDB[6] =	{ 0x03 /* REQUEST_SENSE */, 0, 0, 0, sizeof(RequestSense_T), 0 };      printf("SCSI command error: %d - requesting sense data\n", Result);      /* Execute Request Sense to determine the failure reason. */      ots$move5(0, 0, 0, sizeof(cmd_desc), &cmd_desc);      cmd_desc.SCSI$L_OPCODE = 1; /* Only defined SCSI opcode... a VMS thing */      cmd_desc.SCSI$L_FLAGS = SCSI$K_READ | SCSI$K_FL_ENAB_DIS;      cmd_desc.SCSI$A_CMD_ADDR = RequestSenseCDB;      cmd_desc.SCSI$L_CMD_LEN = 6;      cmd_desc.SCSI$A_DATA_ADDR = RequestSense;      cmd_desc.SCSI$L_DATA_LEN = sizeof(RequestSense_T);      cmd_desc.SCSI$L_PH_CH_TMOUT = 180;      cmd_desc.SCSI$L_DISCON_TMOUT = 180;      /* Issue the QIO to send the Request Sense Command. */      Status = sys$qiow(MK_EFN, DeviceFD, IO$_DIAGNOSE, &cmd_iosb, 0, 0,			&cmd_desc, sizeof(cmd_desc), 0, 0, 0, 0);      if (FailureStatusP(Status))	{	  printf("?Error returned from REQUEST_SENSE(1): %%X%08lX\n", Status);	  sys$exit(Status);	}      /* Check the VMS Status from QIO. */      Status = cmd_iosb.SCSI$W_VMS_STAT;      if (FailureStatusP(Status))	{	  printf("?Error returned from REQUEST_SENSE(2): %%X%08lX\n", Status);	  sys$exit(Status);	}    }  return Result;}static void VMS_DefineStatusSymbols(void){  char SymbolName[32], SymbolValue[32];  int StorageElementNumber;  if (DataTransferElementFull)    {      /* Define MTX_DTE Symbol (environment variable) as 'FULL:n'. */      sprintf(SymbolValue, "FULL:%d",	      DataTransferElementSourceStorageElementNumber);      lib$set_symbol(descr("MTX_DTE"), descr(SymbolValue), &2);    }  else    {      /* Define MTX_DTE Symbol (environment variable) as 'EMPTY'. */      lib$set_symbol(descr("MTX_DTE"), descr("EMPTY"), &2);    }  /* Define MTX_MSZ Symbol (environment variable) "Magazine SiZe" as 'n'. */  sprintf(SymbolValue, "%d", StorageElementCount);  lib$set_symbol(descr("MTX_MSZ"), descr(SymbolValue), &2);  for (StorageElementNumber = 1;       StorageElementNumber <= StorageElementCount;       StorageElementNumber++)    {      sprintf(SymbolName, "MTX_STE%02d", StorageElementNumber);      strcpy(SymbolValue,	     (StorageElementFull[StorageElementNumber] ? "FULL" : "EMPTY"));      lib$set_symbol(descr(SymbolName), descr(SymbolValue), &2);    }}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久国产尿小便嘘嘘尿| 国产精品久久国产精麻豆99网站| 亚洲国产精品久久不卡毛片| 欧美亚一区二区| 三级亚洲高清视频| 精品国产自在久精品国产| 成人一区二区三区中文字幕| 久久久久久久久伊人| 99久久综合99久久综合网站| 亚洲日本青草视频在线怡红院| 色网站国产精品| 丝袜美腿亚洲色图| 26uuu国产一区二区三区| www.亚洲国产| 午夜精品一区二区三区免费视频| 555www色欧美视频| 国产一区二区三区免费看| 国产精品久线在线观看| 欧美日韩一本到| 激情久久五月天| 综合久久久久久久| 91超碰这里只有精品国产| 激情五月婷婷综合网| 日韩美女视频19| 欧美精品日韩一区| 国产一区不卡精品| 亚洲精品亚洲人成人网| 日韩欧美一区二区在线视频| 大尺度一区二区| 婷婷开心久久网| 国产精品欧美久久久久一区二区| 在线观看中文字幕不卡| 国产在线精品免费| 亚洲国产美女搞黄色| 久久精品夜色噜噜亚洲a∨| 欧美日韩黄色一区二区| 国产福利一区二区三区视频| 丝袜诱惑亚洲看片| 欧美国产欧美亚州国产日韩mv天天看完整| 一本大道久久a久久精品综合| 久久黄色级2电影| 亚洲一区二区三区小说| 国产精品毛片久久久久久| 欧美一级一区二区| 欧美亚洲动漫精品| www.av亚洲| 国产乱码精品1区2区3区| 亚洲v日本v欧美v久久精品| 日本一区二区免费在线观看视频 | 亚洲精品一区二区三区影院| 色伊人久久综合中文字幕| 国产精品综合网| 蜜桃视频在线观看一区二区| 亚洲一二三区不卡| 亚洲视频免费看| 中文字幕va一区二区三区| 欧美精品一区二区在线播放| 欧美精品电影在线播放| 欧美特级限制片免费在线观看| 成人综合婷婷国产精品久久免费| 免费观看在线色综合| 无码av免费一区二区三区试看| 亚洲蜜桃精久久久久久久| 国产精品丝袜一区| 国产网红主播福利一区二区| 日韩精品一区二区三区在线观看| 欧美日韩国产123区| 欧美日韩一区二区三区四区五区| 91尤物视频在线观看| 一道本成人在线| 972aa.com艺术欧美| av亚洲精华国产精华精| 成人久久18免费网站麻豆 | 久久成人综合网| 奇米精品一区二区三区在线观看| 亚洲成av人片www| 偷窥少妇高潮呻吟av久久免费| 亚洲二区视频在线| 五月婷婷综合在线| 丝袜亚洲另类欧美综合| 蜜臀av亚洲一区中文字幕| 奇米影视一区二区三区小说| 裸体健美xxxx欧美裸体表演| 老司机精品视频导航| 玖玖九九国产精品| 国产综合色视频| 国产成人精品在线看| 成人v精品蜜桃久久一区| 91无套直看片红桃| 在线观看一区二区视频| 91精品国产91久久综合桃花| 日韩美一区二区三区| 国产亚洲制服色| 中文字幕一区二区三区av| 一区二区免费视频| 美日韩一区二区| 国产激情一区二区三区四区| 99久久久无码国产精品| 在线观看亚洲专区| 欧美一区二区成人| 中文字幕乱码一区二区免费| 亚洲综合自拍偷拍| 蜜臀av一级做a爰片久久| 国产成a人亚洲精品| 欧美性做爰猛烈叫床潮| 欧美一区欧美二区| 日本一区二区视频在线| 亚洲高清不卡在线观看| 精东粉嫩av免费一区二区三区| 丰满岳乱妇一区二区三区| 欧美性生活久久| 精品国产91九色蝌蚪| 一二三区精品视频| 奇米888四色在线精品| www.欧美日韩| 日韩欧美精品在线视频| 亚洲免费观看高清| 美女视频黄久久| 在线一区二区三区四区五区| 日韩三级电影网址| 亚洲欧美福利一区二区| 极品少妇一区二区| 欧美性感一区二区三区| 国产三级一区二区三区| 天天综合色天天| av不卡在线观看| 日韩欧美高清dvd碟片| 亚洲乱码中文字幕| 国产成人综合精品三级| 666欧美在线视频| 中文字幕五月欧美| 国产一区视频导航| 777欧美精品| 亚洲激情av在线| 高清日韩电视剧大全免费| 欧美精品色综合| 亚洲精品一卡二卡| 粗大黑人巨茎大战欧美成人| 精品日产卡一卡二卡麻豆| 一区二区三区中文免费| 成人精品在线视频观看| 久久亚洲精精品中文字幕早川悠里 | 亚洲色图视频网站| 国产黄色91视频| 日韩欧美在线不卡| 日韩精品乱码免费| 欧美在线你懂得| 亚洲黄色免费网站| gogogo免费视频观看亚洲一| 久久久精品黄色| 美女www一区二区| 欧美一区二区三区四区高清| 亚洲亚洲人成综合网络| 色老汉av一区二区三区| 国产精品全国免费观看高清| 国产精品一区二区不卡| 欧美变态凌虐bdsm| 琪琪久久久久日韩精品| 欧美嫩在线观看| 日韩高清在线一区| 91精品欧美一区二区三区综合在 | 亚洲欧美日韩国产另类专区| 粉嫩蜜臀av国产精品网站| 国产丝袜在线精品| 国产精品99久久久久久似苏梦涵| 亚洲精品一线二线三线| 国产一区 二区| 欧美国产日产图区| 99久久免费视频.com| 亚洲图片激情小说| 色一情一乱一乱一91av| 亚洲精品国产视频| 欧美日韩高清在线| 青草国产精品久久久久久| 欧美本精品男人aⅴ天堂| 精品亚洲欧美一区| 欧美国产日韩精品免费观看| av在线不卡免费看| 亚洲精品欧美在线| 欧美日高清视频| 热久久一区二区| 国产亚洲一区字幕| 一本到不卡免费一区二区| 五月综合激情日本mⅴ| 日韩欧美国产wwwww| 成人三级伦理片| 一级中文字幕一区二区| 91精品国产一区二区三区蜜臀| 美女视频第一区二区三区免费观看网站| 精品国产3级a| 99re66热这里只有精品3直播| 一区二区三区四区蜜桃| 制服丝袜亚洲网站| 国产成人夜色高潮福利影视| 综合久久给合久久狠狠狠97色| 欧美午夜宅男影院| 精品中文字幕一区二区| 国产精品成人免费精品自在线观看| 99国产精品久久久| 日本女优在线视频一区二区|