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

📄 inquiry.c

📁 对SCSI设备 直接存取的通用库
💻 C
字号:
#include <stdio.h>#include <stdlib.h>#include <errno.h>#include <scsi/all.h>char *prg;char *types[] = {    "direct access",    "sequential access",    "printer",    "processor",    "write once",    "cdrom",    "scanner",    "optical memory",    "medium changer",    "communication",    "graphics arts pre-press (0x0a)",    "graphics arts pre-press (0x0b)",    "reserved", "reserved", "reserved", "reserved", "reserved",    "reserved", "reserved", "reserved", "reserved", "reserved",    "reserved", "reserved", "reserved", "reserved", "reserved",    "reserved", "reserved", "reserved", "reserved",    "unknown"};intmain(int argc, char **argv){    SCSI *fd;    int i;    struct sc_inquiry page;        prg = argv[0];    if (argc != 2) {	fprintf(stderr, "usage: %s device\n", prg);	exit(1);    }    if ((fd=sc_open(argv[1])) == NULL) {	fprintf(stderr, "%s: can't open device %s: %s\n",		prg, argv[1], strerror(errno));	exit(1);    }        if (sc_inquiry(fd, &page) < 0) {	sc_fstatus(fd, stderr, prg, "inquiry", 3);	sc_close(fd);	exit(1);    }    printf("Type:     %s", types[page.type]);    if (page.type_qual)	printf(" (qualifier %02x", page.type_qual);    if (page.type_mod)	printf("%smodifier %d",	       (page.type_qual ? ", " : " ("), page.type_mod);     if (page.type_qual || page.type_mod)	printf(")");    printf("\n");    printf("Vendor:   %s\n", page.vendor);    printf("Product:  %s\n", page.product);    printf("Revision: %s\n", page.revision);    printf("Conforms: ");    if (page.iso_ver)	printf("iso-%d ", page.iso_ver);    if (page.ecma_ver)	printf("ecma-%d ", page.ecma_ver);    if (page.ansi_ver)	printf("ansi-%d", page.ansi_ver);    if (!page.iso_ver && !page.ecma_ver && !page.ansi_ver)	printf("none");    printf("\n");#define FLAG(f)	(page.f ? #f " " : "")     printf("Flags:    %s%s%s%s%s%s%s%s%s%s\n",	   (page.removable ? "rmb " : ""),	   FLAG(aenc), FLAG(trmiop),	   FLAG(reladr), FLAG(wbus32), FLAG(wbus16), FLAG(sync),	   FLAG(linked), FLAG(cmdque), FLAG(sftre));    if (page.vlen1 || page.vlen2) {	printf("Vendor specific:\n\t");	if (page.vlen1)	    disp_hex(page.vspec1, page.vlen1);	if (page.vlen2) {	    if (page.vlen1)		printf("\n\t");	    disp_hex(page.vspec2, page.vlen2);	}    }    sc_close(fd);    exit(0);}intdisp_hex(unsigned char *hex, int len){    int i;    for (i=0; i<len; i++) {	printf("%02x ", hex[i]);	if (i%16 == 15 && i<len-1)	    printf("\n\t");    }    printf("\n");    return 0;}

⌨️ 快捷键说明

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