cxl7980
驱动牛犊
驱动牛犊
  • 注册日期2003-01-22
  • 最后登录2012-03-07
  • 粉丝0
  • 关注0
  • 积分67分
  • 威望17点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
阅读:1763回复:3

关于ASPI和CDROM

楼主#
更多 发布于:2004-04-05 11:39
我现在在做刻录光盘的项目,我看的资料是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]
cxl7980
驱动牛犊
驱动牛犊
  • 注册日期2003-01-22
  • 最后登录2012-03-07
  • 粉丝0
  • 关注0
  • 积分67分
  • 威望17点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
沙发#
发布于: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;
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-04-07 10:15
实现你不能疯:),如果这样项目怎么继续

在Windows中
SELECT MODE 10命令应该对于结构
MODE_SELECT10,
你需要对该结构填充
如果可能将程序Mail给我,我找个时间帮你调试一下
mfczmh@sina.com
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
地板#
发布于: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规范。
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
游客

返回顶部