Xman
驱动大牛
驱动大牛
  • 注册日期2001-08-24
  • 最后登录2011-10-07
  • 粉丝0
  • 关注0
  • 积分343分
  • 威望127点
  • 贡献值0点
  • 好评度34点
  • 原创分0分
  • 专家分0分
阅读:1398回复:11

前进了几步,但还是有问题!

楼主#
更多 发布于:2003-03-10 22:48
我的pci驱动程序能够正常安装(2k),可以读写寄存器!

当时通过设备管理器察看资源时,没有响应!
而且察看网卡和显卡的资源时也没有响应.

请问:可能的原因?
1。inf文件
2。驱动本身
3。硬件本身
4。资源冲突。
[img]http://www.driverdevelop.com/forum/upload/Xman/2004-04-05_2004324183110706.jpg[/img]
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2003-03-10 22:56
什么叫“没有响应”啊?
Xman
驱动大牛
驱动大牛
  • 注册日期2001-08-24
  • 最后登录2011-10-07
  • 粉丝0
  • 关注0
  • 积分343分
  • 威望127点
  • 贡献值0点
  • 好评度34点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-03-11 08:35
就是说通过设备管理器察看资源时,资源显示不出,,一段时间后出现
该程序(指2k下的设备管理器)无回应,立即结束的对话框!
[img]http://www.driverdevelop.com/forum/upload/Xman/2004-04-05_2004324183110706.jpg[/img]
changer
驱动牛犊
驱动牛犊
  • 注册日期2001-10-19
  • 最后登录2005-05-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-03-11 13:26
问题可能还是在驱动程序中或硬件的资源申请中,inf文件只涉及到驱动程序的安装。不过如果你有用到手动资源分配将要在inf文件中合理的定义(具体可以查找MSDN中inf文件的文档说明)。驱动程序中在开始设备驱动程序的状态就要对资源分配。如果你的硬件分配的资源合理的的话就不会有问题的咯!^_^
备注:本人在外租房地址不详(不是黑市)也无主页,但我很希望加人,给我个机会,我很有诚意的看大家!
Xman
驱动大牛
驱动大牛
  • 注册日期2001-08-24
  • 最后登录2011-10-07
  • 粉丝0
  • 关注0
  • 积分343分
  • 威望127点
  • 贡献值0点
  • 好评度34点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-03-11 15:38
pci的卡难道还有手工配置吗?
至少我的不要!
我初步断定是硬件的eprom有问题,因为我的板上只有8M ddr ram,可是windriver监测到有32M :P
[img]http://www.driverdevelop.com/forum/upload/Xman/2004-04-05_2004324183110706.jpg[/img]
mailme
驱动老牛
驱动老牛
  • 注册日期2001-05-21
  • 最后登录2010-02-25
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望3点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-03-11 23:12
有可能是你的驱动本身的问题,也就是响应IRP_MN_QUERY_***的函数有问题,你用softice跟进去看看
早起早睡 精神百倍
Xman
驱动大牛
驱动大牛
  • 注册日期2001-08-24
  • 最后登录2011-10-07
  • 粉丝0
  • 关注0
  • 积分343分
  • 威望127点
  • 贡献值0点
  • 好评度34点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-03-12 08:55
对,有可能,我去查!
你看我这样对吗?(还有,不但我的卡不能看资源,其他网卡。显卡也不能看!why?)        
case IRP_MN_QUERY_STOP_DEVICE://只是往下传

            if (!devExt->DeviceStarted)
            {
               IoSkipCurrentIrpStackLocation(Irp);
                nStatus =IoCallDriver(devExt->StackDeviceObject,Irp);
break;
case IRP_MN_QUERY_REMOVE_DEVICE://只是往下传,但是要等待

            if (!devExt->DeviceStarted)
            {
                               IoSkipCurrentIrpStackLocation(Irp);
                nStatus =IoCallDriver(devExt->StackDeviceObject, Irp);
break;
case IRP_MN_QUERY_ID:
case IRP_MN_QUERY_RESOURCES:
        case IRP_MN_QUERY_INTERFACE:
case IRP_MN_QUERY_DEVICE_TEXT:
        case IRP_MN_QUERY_DEVICE_RELATIONS:
case IRP_MN_QUERY_BUS_INFORMATION:
case IRP_MN_QUERY_PNP_DEVICE_STATE:
case IRP_MN_DEVICE_USAGE_NOTIFICATION:
        case IRP_MN_QUERY_RESOURCE_REQUIREMENTS:
            IoSkipCurrentIrpStackLocation(Irp);
            nStatus =IoCallDriver(devExt->StackDeviceObject, Irp);
            break;

        default:  //只是往下传
    IoSkipCurrentIrpStackLocation(Irp);
                 nStatus = IoCallDriver(stackDeviceObject, Irp);

[编辑 -  3/12/03 by  Xman]
[img]http://www.driverdevelop.com/forum/upload/Xman/2004-04-05_2004324183110706.jpg[/img]
Xman
驱动大牛
驱动大牛
  • 注册日期2001-08-24
  • 最后登录2011-10-07
  • 粉丝0
  • 关注0
  • 积分343分
  • 威望127点
  • 贡献值0点
  • 好评度34点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-03-12 09:05
可能真的是驱动问题,因为非正常安装时,
(此设备的配置不正确。 (代码 1)

要重新为这个设备安装驱动程序, 请单击“重新安装驱动程序”。)

此时可以看到资源,和windriver显示的一样!
[img]http://www.driverdevelop.com/forum/upload/Xman/2004-04-05_2004324183110706.jpg[/img]
changer
驱动牛犊
驱动牛犊
  • 注册日期2001-10-19
  • 最后登录2005-05-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2003-03-12 10:16
你申请分配的资源和网卡等有冲突就会有这重情况,偶也有遇到,可以在本网上下一个前辈写的PCI卡检测程序(简单清晰),检测一下,再跟踪驱动程序看看!
备注:本人在外租房地址不详(不是黑市)也无主页,但我很希望加人,给我个机会,我很有诚意的看大家!
Xman
驱动大牛
驱动大牛
  • 注册日期2001-08-24
  • 最后登录2011-10-07
  • 粉丝0
  • 关注0
  • 积分343分
  • 威望127点
  • 贡献值0点
  • 好评度34点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2003-03-13 10:44
我用windriver检测,没有冲突!
[img]http://www.driverdevelop.com/forum/upload/Xman/2004-04-05_2004324183110706.jpg[/img]
mailme
驱动老牛
驱动老牛
  • 注册日期2001-05-21
  • 最后登录2010-02-25
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望3点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2003-03-18 23:38
其实这种查询只用往下传就可以了,具体事务由总线驱动程序负责。给你贴贴oney的代码,希望对你有帮助:

//////////////////////////////////////////////////////

NTSTATUS HandleQueryCapabilities(IN PDEVICE_OBJECT fdo, IN PIRP Irp)
{ // HandleQueryCapabilities
ASSERT(IoGetCurrentIrpStackLocation(Irp)->MinorFunction == IRP_MN_QUERY_CAPABILITIES);
PIO_STACK_LOCATION stack = IoGetCurrentIrpStackLocation(Irp);
PDEVICE_CAPABILITIES pdc = stack->Parameters.DeviceCapabilities.Capabilities;
PDEVICE_EXTENSION pdx = (PDEVICE_EXTENSION) fdo->DeviceExtension;

// Check to be sure we know how to handle this version of the capabilities structure

if (pdc->Version < 1)
return DefaultPnpHandler(fdo, Irp);

NTSTATUS status = ForwardAndWait(fdo, Irp);
if (NT_SUCCESS(status))
{ // IRP succeeded
stack = IoGetCurrentIrpStackLocation(Irp);
pdc = stack->Parameters.DeviceCapabilities.Capabilities;

// TODO Modify any capabilities that must be set on the way back up

pdx->devcaps = *pdc; // save capabilities for whoever needs to see them
} // IRP succeeded

return CompleteRequest(Irp, status);
} // HandleQueryCapabilities

//////////////////////////////////////////////////////

NTSTATUS ForwardAndWait(IN PDEVICE_OBJECT fdo, IN PIRP Irp)
{ // ForwardAndWait
ASSERT(KeGetCurrentIrql() == PASSIVE_LEVEL);
PAGED_CODE();

KEVENT event;
KeInitializeEvent(&event, NotificationEvent, FALSE);

IoCopyCurrentIrpStackLocationToNext(Irp);
IoSetCompletionRoutine(Irp, (PIO_COMPLETION_ROUTINE) OnRequestComplete,
(PVOID) &event, TRUE, TRUE, TRUE);

PDEVICE_EXTENSION pdx = (PDEVICE_EXTENSION) fdo->DeviceExtension;
IoCallDriver(pdx->LowerDeviceObject, Irp);
KeWaitForSingleObject(&event, Executive, KernelMode, FALSE, NULL);
return Irp->IoStatus.Status;
}
// ForwardAndWait

//////////////////////////////////////////////////////

NTSTATUS OnRequestComplete(IN PDEVICE_OBJECT fdo, IN PIRP Irp, IN PKEVENT pev)
{ // OnRequestComplete
KeSetEvent(pev, 0, FALSE);
return STATUS_MORE_PROCESSING_REQUIRED;
} // OnRequestComplete

//////////////////////////////////////////////////////

NTSTATUS CompleteRequest(IN PIRP Irp, IN NTSTATUS status)
{ // CompleteRequest
Irp->IoStatus.Status = status;
IoCompleteRequest(Irp, IO_NO_INCREMENT);
return status;
} // CompleteRequest

早起早睡 精神百倍
Xman
驱动大牛
驱动大牛
  • 注册日期2001-08-24
  • 最后登录2011-10-07
  • 粉丝0
  • 关注0
  • 积分343分
  • 威望127点
  • 贡献值0点
  • 好评度34点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2003-03-19 11:16
98下通过了,2k下却不行,郁闷 :(
[img]http://www.driverdevelop.com/forum/upload/Xman/2004-04-05_2004324183110706.jpg[/img]
游客

返回顶部