cch7701
驱动牛犊
驱动牛犊
  • 注册日期2002-08-25
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分60分
  • 威望8点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
阅读:1579回复:8

SCSI Miniport驱动求助

楼主#
更多 发布于:2005-02-24 09:45
最近根据DDK的例子Initio,编了一个自制PCI接口SCSI卡(不带BIOS)的驱动。由于是第一次写这类的驱动,很多地方都是照抄Initio的。现在有如下问题请教:
1、插卡安装完驱动后,总是提示要重新启动才能生效。如何才能不用重启就能使用??
2、安装驱动的时候,我想用SoftIce跟进DriverEntry和FindAdpter,可怎么也跟不进去,为什么??这两个函数到底是在什么时候才运行呢??
idaxsy
驱动大牛
驱动大牛
  • 注册日期2004-12-09
  • 最后登录2006-03-17
  • 粉丝0
  • 关注0
  • 积分386分
  • 威望54点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-02-24 17:47
si启动太晚了。
[b]万水千山总是情,回个帖子行不行?[/b]
cch7701
驱动牛犊
驱动牛犊
  • 注册日期2002-08-25
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分60分
  • 威望8点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-02-24 17:52
不会的,我设的SoftIce的启动方式为Boot
cch7701
驱动牛犊
驱动牛犊
  • 注册日期2002-08-25
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分60分
  • 威望8点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-02-27 14:17
现在我的程序是这样的:只在DriveEntry中设置了HW_INITIALIZATION_DATA的结构体,然后调用了ScsiPortInitialize。其他例程HwScsiFindAdapter是空的,仅返回SP_RETURN_FOUND;HwScsiInitialize、HwScsiStartIo、HwScsiResetBus也都是空的,仅返回TRUE。编译通过,安装后,报要重新启动才能生效。重启过后,报代码31错误,不能正确加载。
为什么???请高手指教。
zhangshengyu
驱动老牛
驱动老牛
  • 注册日期2003-10-03
  • 最后登录2016-07-26
  • 粉丝0
  • 关注0
  • 积分792分
  • 威望696点
  • 贡献值41点
  • 好评度499点
  • 原创分0分
  • 专家分0分
  • 社区居民
地下室#
发布于:2005-02-28 10:12
最近根据DDK的例子Initio,编了一个自制PCI接口SCSI卡(不带BIOS)的驱动。由于是第一次写这类的驱动,很多地方都是照抄Initio的。现在有如下问题请教:
1、插卡安装完驱动后,总是提示要重新启动才能生效。如何才能不用重启就能使用??
2、安装驱动的时候,我想用SoftIce跟进DriverEntry和FindAdpter,可怎么也跟不进去,为什么??这两个函数到底是在什么时候才运行呢??


1。INF是怎么写的
2。因为还没启动系统,所以
安装的时候跟不了,驱动还没有起来呢,DriverEntry是在驱动加载时 也就时操作系统启动时,
---内核开发合作或提供基础技术服务QQ:22863668 ---
liuge
驱动牛犊
驱动牛犊
  • 注册日期2004-06-02
  • 最后登录2005-07-06
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望4点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2005-03-06 00:10
这儿有一个inf的例子,是我为USB写的miniport的inf。或许有帮助。
附件名称/大小 下载次数 最后更新
2005-03-06_usb_hdc.inf (3KB)  11
cch7701
驱动牛犊
驱动牛犊
  • 注册日期2002-08-25
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分60分
  • 威望8点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2005-03-08 11:46

1。INF是怎么写的


也是抄Initio例子的,就是把VID和DID改了
liuge
驱动牛犊
驱动牛犊
  • 注册日期2004-06-02
  • 最后登录2005-07-06
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望4点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2005-03-09 10:48
inf是这样一个结构:

一般来说,读一个inf文件总是从[Manufacturer]开始的。

[Manufacturer]下会有一些本inf文件支持的硬件列表,每一行代表一个支持的硬件种类。比如,如果[Manufacturer]是
[Manufacturer]
%Manufacturer1%=sbp2_device
%Manufacturer2%=usb_device

就代表支持sbp2_device的硬件种类,这个种类的名字是Manufacturer1字符串定义的。%Manufacturer1%代表一个字符串变量。

这个硬件种类可以包括很多硬件型号,它们都列在[sbp2_device]中。

[sbp2_device]
%DeviceDesc1%=sbp2_install1, 1394\\609E&10111
%DeviceDesc2%=sbp2_install2, 1394\\609E&10483

%DeviceDesc1%=sbp2_install1, 1394\\609E&10111 代表支持硬件ID为1394\\609E&10111的设备。一旦发现这个设备,Windows会去根据[sbp2_install1]定义的行为来安装驱动程序。%DeviceDesc1%是给设备的名称。

假如[sbp2_install1]为:
[sbp2_install1]
CopyFiles=sbp2_CopyFiles
AddReg=sbp2_AddReg

CopyFiles=sbp2_CopyFiles 表示要执行复制文件操作。要复制的文件列在sbp2_CopyFiles中。

[sbp2_CopyFiles]
sbp2.pdr
helper.sys

表示要复制sbp2.sys和helper.sys的文件。

要复制的目的位置在[DestinationDirs]中定义,在本例中为:

[DestinationDirs]
sbp2_CopyFiles=12

sbp2_CopyFiles=12 表示把[sbp2_CopyFiles]中的文件复制到%windows目录的system32\\drivers中。12代表system32\\drivers目录。

在[sbp2_install1]中的AddReg=sbp2_AddReg代表执行一个注册表操作。[sbp2_AddReg]如下:

[sbp2_AddReg]
HKR,,DevLoader,0,*IOS
HKR,,PortDriver,0,sbp2.sys
HKR,,DriverDesc,0,SBP2 Port Driver

表示在设备相关注册表项上加入DevLoader、PortDriver、DriverDesc键值。键值的值是*IOS等等。

注册表项的位置在LOCAL_MACHINE下由[Version]中的Class项指定的设备类型决定。比如,

[Version]
Signature=$CHICAGO$
Class=hdc
provider=%Numega%

Class=hdc表示在hdc设备类型中。这个类型的定义由[ClassInstall]决定的。

[ClassInstall]
AddReg=HDC_Class

[HDC_Class]指明了这个类型需要添加的注册表项
[HDC_Class]
HKR,,,0,%HDCClassName%
HKR,,Icon,0,-9

以上inf文件格式是Windows 98上的。NT/2000上的略有不同。NT/2000的inf文件会有一个[sbp2_install1.Services]指明要执行的驱动安装动作。

[sbp2_install1.Services]
AddService = sbp2_install1, 0x00000002, sbp2_Service_Inst

[sbp2_Service_Inst]
DisplayName=%sbp2_ServiceDesc%
ServiceType = 1 ; SERVICE_KERNEL_DRIVER
StartType = 1 ; SERVICE_SYSTEM_START
ErrorControl = 0 ; SERVICE_ERROR_IGNORE
ServiceBinary = %12%\\sbp2.sys

ServiceBinary指定了要为本设备装入的驱动程序。

可以看这个帖子:http://www.driverdevelop.com/forum/viewthread.php?tid=69281#pid529009
cch7701
驱动牛犊
驱动牛犊
  • 注册日期2002-08-25
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分60分
  • 威望8点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2005-03-11 17:50
问题找到了,果然是INF文件出的问题。谢谢各位的帮忙!!
游客

返回顶部