tree4520
驱动牛犊
驱动牛犊
  • 注册日期2005-04-13
  • 最后登录2005-04-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:840回复:2

SCSI卡驱动的问题

楼主#
更多 发布于:2005-04-13 12:39
我是一个新手,正在写一个PCI接口的SCSI卡的驱动,现在刚写了一个框架,就发现不少问题,向高手们请教。我的程序大致如下:
#include \"miniport.h\"  
#include \"scsi.h\"

ULONG
DriverEntry(
IN PVOID DriverObject,
IN PVOID Argument2
)
{
    HW_INITIALIZATION_DATA hwInitializationData;
    ULONG Status;
    ULONG i;
    ULONG AdpterNo;
    static int    cardNo = 0;
    UCHAR VendorId[4] = { \'1\', \'5\', \'0\', \'6\'};
    UCHAR DeviceId[4] = { \'3\', \'2\', \'0\', \'0\'};
    for (i = 0; i < sizeof(HW_INITIALIZATION_DATA); i++) {
        ((PUCHAR) & hwInitializationData)[ i ] = 0;
    }
    
    hwInitializationData.HwInitializationDataSize = sizeof(HW_INITIALIZATION_DATA);

........
    hwInitializationData.SrbExtensionSize = 0;
........
}

BOOLEAN
MyStartIo(
IN PVOID HwDeviceExtension,
IN PSCSI_REQUEST_BLOCK srb
)
{
   BYTE Buf[36] = {0,0,20,0,.....};
   .....
   switch (srb->Function) {
       case SRB_FUNCTION_EXECUTE_SCSI:
          if(srb->Cdb[0]==0x12){
              for(i=0;i<36;i++)
                 (BYTE *)(srb->DataBuf+i) = Buf[ i ];
          }
    .....
}

我是想在系统发查询命令的时候,不去执行而是用Buf里的数据直接返回,但是好像srb->DataBuf的数据不能写入,而且我用Softice跟的时候,发现很多变量无法添加到Watchs中,为什么??有什么方法可以解决吗?恳请高手看看

[编辑 -  4/13/05 by  tree4520]

[编辑 -  4/13/05 by  tree4520]
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-04-13 14:22
本地变量并不一定所有的都可以同Symbol名称来得到
这个是因为DDK编译后,编译器优化了部分变量,使用寄存器来代替了
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
tree4520
驱动牛犊
驱动牛犊
  • 注册日期2005-04-13
  • 最后登录2005-04-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-04-13 19:36
那修改srb->DataBuffer指向的数据呢?为什么不能修改?
游客

返回顶部