阅读:1763回复:3
关于ASPI和CDROM
我现在在做刻录光盘的项目,我看的资料是SFF-8020i,现在写光盘老是出问题:
1。 这个SEL(10)命令必须用吗,在刻录前,我不用时可写入783个扇区,然后就STATUS_CHKCOND。到底怎么用SEL(10),我实在是不明白怎么写参数,我只是想DISK at once按扇区(2048)写入数据即可。 2。写时我看一般都要差除,我不差除也可写入一扇区(DVD+RW).是不是不差除,还有其他影响? 3.要写入光盘时,必须发送那种page code 的select命令? [编辑 - 4/5/04 by cxl7980] |
|
沙发#
发布于:2004-04-06 16:22
BYTE *page = new BYTE[2000];
memset(page,0,1000); //header Resived page[8] = 0x05; // page code = CDRom data type page[9] = 0x32; // page Length page[10] = 0x02; //session at once; page[11] = 0x4; //set pf, track mode is dvd-r page[12] = 8; // mode1 page[13] = 0; page[14] = 0; page[15] = 0; page[16] = 0; //session format is date disk page[17] = 0; //Reseived page[18] = 0; // pack size page[21] = 0; // pack size BYTE cdb[10]; memset(cdb,0,10); cdb[0] = 0x55;//SCSI_MODE_SEL10 ; cdb[1] = 1<<4; cdb[7] = HIBYTE(0x32+8+1); cdb[8] = LOBYTE(0x32+8+1); 这里长度值为什么不能设定,非0就失败!到底是为什么,要疯了! if( !ExecScsiCmd(cdb,10,page,1000,SRB_DIR_OUT)) { // return 0; } delete page; |
|
板凳#
发布于:2004-04-07 10:15
实现你不能疯:),如果这样项目怎么继续
在Windows中 SELECT MODE 10命令应该对于结构 MODE_SELECT10, 你需要对该结构填充 如果可能将程序Mail给我,我找个时间帮你调试一下 mfczmh@sina.com |
|
|
地板#
发布于:2004-04-14 09:38
邮件已经收到,
首先你的是在App中运行的程序,并且ASPI是9X DDK的接口,在2K/XP下恐怕不能运行。 写光驱的具体命令你可参见SCSI命令规范 cdb[7] = HIBYTE(0x32+8+1); cdb[8] = LOBYTE(0x32+8+1); 应该改为 cdb[6] = HIBYTE(0x32+8+1); cdb[7] = LOBYTE(0x32+8+1); 至于其它CDB命令,请自己查阅SCSI规范。 |
|
|