ohmygod_zl
驱动牛犊
驱动牛犊
  • 注册日期2004-08-02
  • 最后登录2004-08-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2153回复:18

写的驱动装不上怎么办?

楼主#
更多 发布于:2004-08-17 22:47
安装出错。用Monitor监测也告知The driver is marked as disabled....只进入了DriverEntry例程,然后就不行了,AddDevice也不调用,从哪入手修改程序啊?
谢谢指点!
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
沙发#
发布于:2004-08-17 22:59
代码贴出来看看。
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
ohmygod_zl
驱动牛犊
驱动牛犊
  • 注册日期2004-08-02
  • 最后登录2004-08-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-08-17 23:55
我用了DS的框架

NTSTATUS Test1::DriverEntry(PUNICODE_STRING RegistryPath)
{
t << "In DriverEntry\n";
// Open the "Parameters" key under the driver
// KRegistryKey Params(RegistryPath, L"Parameters");
// if ( NT_SUCCESS(Params.LastError()) )
// {
#if DBG

ULONG bBreakOnEntry = FALSE;
// Read "BreakOnEntry" value from registry
Params.QueryValue(L"BreakOnEntry", &bBreakOnEntry);

// If requested, break into debugger
if (bBreakOnEntry) DbgBreakPoint();
#endif

// Load driver data members from the registry
LoadRegistryParameters(Params);
// }

m_Unit = 0;

return STATUS_SUCCESS;
}



void Test1::LoadRegistryParameters(KRegistryKey &Params)
{
m_bBreakOnEntry = FALSE;
Params.QueryValue(L"BreakOnEntry", &m_bBreakOnEntry);
t << "m_bBreakOnEntry loaded from registry, resulting value: [" << m_bBreakOnEntry << "]\n";

}

#pragma code_seg()

NTSTATUS Test1::AddDevice(PDEVICE_OBJECT Pdo)
{
t << "AddDevice called\n";
.......(略)

到AddDevice就不执行了
谢谢!
zhouandraw
驱动牛犊
驱动牛犊
  • 注册日期2004-03-19
  • 最后登录2005-10-21
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-08-18 08:57
你用的是调试程序的开发框架,下面省略了调试信息;
我估计你的错误在于笔误:用//屏蔽了几条必须的语句,现修改如下:

NTSTATUS Test1:riverEntry(PUNICODE_STRING RegistryPath)
{

   KRegistryKey Params(RegistryPath, L"Parameters");

   if ( NT_SUCCESS(Params.LastError()) )
   {
     LoadRegistryParameters(Params);
   }

   m_Unit = 0;

   return STATUS_SUCCESS;
}

void Test1::LoadRegistryParameters(KRegistryKey &Params)
{
   m_bBreakOnEntry = FALSE;
   Params.QueryValue(L"BreakOnEntry", &m_bBreakOnEntry);
}

NTSTATUS Test1::AddDevice(PDEVICE_OBJECT Pdo)
{
t << "AddDevice calledn";
.......(略)
扒皮周
ohmygod_zl
驱动牛犊
驱动牛犊
  • 注册日期2004-08-02
  • 最后登录2004-08-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-08-18 13:41
那几句是我故意屏蔽的,否则连LoadRegistryParameters(Params);都不执行,请问怎么回事啊,谢谢!
是不是GUID不一致造成的?
我用命令行运行用DS生成的测试exe时CreateFile()也不成功

[编辑 -  8/18/04 by  ohmygod_zl]
jerry_2002
驱动牛犊
驱动牛犊
  • 注册日期2004-08-04
  • 最后登录2004-10-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-08-18 14:55
你用什么来安装驱动程序呀,你编译的时候通过吗?你是否可以在.inf文件上点击右键,后选择安装,应该可以呀
ohmygod_zl
驱动牛犊
驱动牛犊
  • 注册日期2004-08-02
  • 最后登录2004-08-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-08-18 15:24
编译通过
用EzDriInstalller安装的
ohmygod_zl
驱动牛犊
驱动牛犊
  • 注册日期2004-08-02
  • 最后登录2004-08-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-08-18 18:51
用命令行运行exe告知ERROR opening device: <0> return from CreateFile
ohmygod_zl
驱动牛犊
驱动牛犊
  • 注册日期2004-08-02
  • 最后登录2004-08-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-08-18 22:44
大侠来帮帮忙啊
Sundsea
驱动老牛
驱动老牛
  • 注册日期2003-05-06
  • 最后登录2012-06-05
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望35点
  • 贡献值0点
  • 好评度15点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-08-18 23:46
ding !!!!!!!!!!
peter_wu
驱动小牛
驱动小牛
  • 注册日期2002-03-14
  • 最后登录2008-10-26
  • 粉丝0
  • 关注0
  • 积分27分
  • 威望5点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2004-08-19 10:57
是不是没有安装上.
再装一次看看.
有分
zhouandraw
驱动牛犊
驱动牛犊
  • 注册日期2004-03-19
  • 最后登录2005-10-21
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2004-08-19 11:09
你写的是什么设备的驱动程序?你的设备连接在电脑上了吗?
举个例子:
你用driverworks做一块PCI卡的驱动,得先将PCI卡插入电脑的PCI插槽中,然后用WIZARD生成驱动程序框架。这个时候生成的DriverEntry和AddDevice两个例程应该是没有问题的,包括你怀疑的GUID;即使你没有其他的控制代码,在系统的设备管理器中刷新,然后按提示安装驱动程序,也应该安装成功(可能会有一个问号标记,解决方法在*。inf文件中修改)。

另外注意:是不是你在框架程序中填写的VID、DID错误呢?
扒皮周
ohmygod_zl
驱动牛犊
驱动牛犊
  • 注册日期2004-08-02
  • 最后登录2004-08-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2004-08-19 12:52
谢谢指点,不过你说的那些问题都不存在呵呵
不过我写的是一个usb批量传输的驱动
OS本身带的有,会不会是因为原驱动没有卸载不能装新的?
ohmygod_zl
驱动牛犊
驱动牛犊
  • 注册日期2004-08-02
  • 最后登录2004-08-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2004-08-19 14:28
我试了两种方法,都装不上
1. 在设备管理器中找到我的usb设备所连的那个hub,选更新设备驱动,然后安装我写的驱动,出错:“指定位置不包括有关硬件的信息”
2. 在设备管理器中找到我的usb设备所连的那个hub,卸载了操作系统自带的驱动,然后设备就被删除了,然后添加新硬件,系统又自动装上驱动了
大侠们,怎么办?
ohmygod_zl
驱动牛犊
驱动牛犊
  • 注册日期2004-08-02
  • 最后登录2004-08-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2004-08-19 16:44
大侠救命!
ohmygod_zl
驱动牛犊
驱动牛犊
  • 注册日期2004-08-02
  • 最后登录2004-08-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2004-08-19 19:03
另外多问一句:
我用UsbView得到的端点信息是:
(控制端点省略不写了)
Endpoint Descriptor:
bEndpointAddress:     0x81
Transfer Type:        Bulk
wMaxPacketSize:     0x0200 (512)
bInterval:            0x01

Endpoint Descriptor:
bEndpointAddress:     0x02
Transfer Type:        Bulk
wMaxPacketSize:     0x0200 (512)
bInterval:            0x01

用Bus Hound得到的信息是:
Endpoint 2  OUT: TYPE=BULK CLASS=08 SUBCLASS=06 PROTOCOL=50 MAXTRANSFER=65536
Endpoint 1   IN: TYPE=BULK CLASS=08 SUBCLASS=06 PROTOCOL=50 MAXTRANSFER=65536

请问用DS生成框架时,自己定义的两个端点的EndPoint Address和Max Transfer Size怎么填???

大侠帮帮忙!!!


[编辑 -  8/19/04 by  ohmygod_zl]
ohmygod_zl
驱动牛犊
驱动牛犊
  • 注册日期2004-08-02
  • 最后登录2004-08-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2004-08-19 21:26
为啥一堆老大来逛都不回我的帖???
不要见死不救啊!!!
帮帮小弟!!!
多谢!!!
zhouandraw
驱动牛犊
驱动牛犊
  • 注册日期2004-03-19
  • 最后登录2005-10-21
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2004-08-20 09:45
USB的我不太懂

但是刚才你说的卸载问题,我在调试程序的时候不仅要在设备管理器中卸载设备,还要在\WINNT\inf\中删除一个安装信息文件(文件名可能是你命名的,也可能是oem?.inf),另外再删除\WINNT\system32\drivers\中你编写生成的*.SYS驱动文件

之后你再在设备管理器中刷新,按提示添加设备及驱动。
扒皮周
terrace
驱动牛犊
驱动牛犊
  • 注册日期2004-02-11
  • 最后登录2005-12-04
  • 粉丝0
  • 关注0
  • 积分15分
  • 威望3点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2004-08-20 10:48
强顶!
我也遇到过这样的问题,我在win2k下用DriverWorks开发一PCI驱动(选WDM模式),好不容易将驱动编译成功,兴冲冲的安装,却总安装不成功。我采用手动安装,用DriverMonitor打开sys下的驱动文件(.sys),然后StartDriver,没有使用INF文件,结果总是出现这样的错误:

ERROR(1058):The driver is marked as disabled(Start=4) in its Service Database entry.
用EzDriverInstaller装载也弹出出错对话框“An error occured while installing the driver”
我的驱动是驱动向导模板自动生成的,还没有添加任何代码,设备也插上了。在WinNT下选NT4.0 Style,其它选同样的选项,则没有任何问题,能安装成功。
另外,我试着在Win2K下选NT4.0 Style生成驱动安装后,总是重启。

这个到底是怎么回事?


游客

返回顶部