阅读:2153回复:18
写的驱动装不上怎么办?
安装出错。用Monitor监测也告知The driver is marked as disabled....只进入了DriverEntry例程,然后就不行了,AddDevice也不调用,从哪入手修改程序啊?
谢谢指点! |
|
沙发#
发布于:2004-08-17 22:59
代码贴出来看看。
|
|
|
板凳#
发布于: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就不执行了 谢谢! |
|
地板#
发布于: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"; .......(略) |
|
|
地下室#
发布于:2004-08-18 13:41
那几句是我故意屏蔽的,否则连LoadRegistryParameters(Params);都不执行,请问怎么回事啊,谢谢!
是不是GUID不一致造成的? 我用命令行运行用DS生成的测试exe时CreateFile()也不成功 [编辑 - 8/18/04 by ohmygod_zl] |
|
5楼#
发布于:2004-08-18 14:55
你用什么来安装驱动程序呀,你编译的时候通过吗?你是否可以在.inf文件上点击右键,后选择安装,应该可以呀
|
|
6楼#
发布于:2004-08-18 15:24
编译通过
用EzDriInstalller安装的 |
|
7楼#
发布于:2004-08-18 18:51
用命令行运行exe告知ERROR opening device: <0> return from CreateFile
|
|
8楼#
发布于:2004-08-18 22:44
大侠来帮帮忙啊
|
|
9楼#
发布于:2004-08-18 23:46
ding !!!!!!!!!!
|
|
10楼#
发布于:2004-08-19 10:57
是不是没有安装上.
再装一次看看. |
|
|
11楼#
发布于:2004-08-19 11:09
你写的是什么设备的驱动程序?你的设备连接在电脑上了吗?
举个例子: 你用driverworks做一块PCI卡的驱动,得先将PCI卡插入电脑的PCI插槽中,然后用WIZARD生成驱动程序框架。这个时候生成的DriverEntry和AddDevice两个例程应该是没有问题的,包括你怀疑的GUID;即使你没有其他的控制代码,在系统的设备管理器中刷新,然后按提示安装驱动程序,也应该安装成功(可能会有一个问号标记,解决方法在*。inf文件中修改)。 另外注意:是不是你在框架程序中填写的VID、DID错误呢? |
|
|
12楼#
发布于:2004-08-19 12:52
谢谢指点,不过你说的那些问题都不存在呵呵
不过我写的是一个usb批量传输的驱动 OS本身带的有,会不会是因为原驱动没有卸载不能装新的? |
|
13楼#
发布于:2004-08-19 14:28
我试了两种方法,都装不上
1. 在设备管理器中找到我的usb设备所连的那个hub,选更新设备驱动,然后安装我写的驱动,出错:“指定位置不包括有关硬件的信息” 2. 在设备管理器中找到我的usb设备所连的那个hub,卸载了操作系统自带的驱动,然后设备就被删除了,然后添加新硬件,系统又自动装上驱动了 大侠们,怎么办? |
|
14楼#
发布于:2004-08-19 16:44
大侠救命!
|
|
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] |
|
16楼#
发布于:2004-08-19 21:26
为啥一堆老大来逛都不回我的帖???
不要见死不救啊!!! 帮帮小弟!!! 多谢!!! |
|
17楼#
发布于:2004-08-20 09:45
USB的我不太懂
但是刚才你说的卸载问题,我在调试程序的时候不仅要在设备管理器中卸载设备,还要在\WINNT\inf\中删除一个安装信息文件(文件名可能是你命名的,也可能是oem?.inf),另外再删除\WINNT\system32\drivers\中你编写生成的*.SYS驱动文件 之后你再在设备管理器中刷新,按提示添加设备及驱动。 |
|
|
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生成驱动安装后,总是重启。 这个到底是怎么回事? |
|