阅读:1549回复:7
基于wdm的pci驱动程序中怎么找到自己卡和卡的资源
是在IRP_MN_START_DEVICE例程中么?
通过什么结构,或者函数? 通过HalGetBusData好像可以得到 但在ddk帮助中,说这个函数过时了 HalGetBusData is obsolete and is exported only to support existing drivers. Drivers should use the PnP Manager's IRP_MN_QUERY_INTERFACE and IRP_MN_READ_CONF IG requests instead. |
|
沙发#
发布于:2004-08-28 21:15
Input
The Parameters.StartDevice.AllocatedResources member of the IO_STACK_LOCATION structure points to a CM_RESOURCE_LIST describing the hardware resources that the PnP Manager assigned to the device. This list contains the resources in raw form. Use the raw resources to program the device. Parameters.StartDevice.AllocatedResourcesTranslated points to a CM_RESOURCE_LIST describing the hardware resources that the PnP Manager assigned to the device. This list contains the resources in translated form. Use the translated resources to connect the interrupt vector, map I/O space, and map memory. 请仔细看DDK |
|
板凳#
发布于:2004-08-28 21:30
CM_RESOURCE_LIST 这个我看过,但我怎么知道这里面描述的资源是我的pci卡的资源,而不是别的卡的资源里,这里面并没有出现厂商id和设备id啊?
谢谢。 |
|
地板#
发布于:2004-08-28 21:45
vid和pid在inf文件用,到IRP_MN_START_DEVICE的时候已经不需要了
|
|
地下室#
发布于:2004-08-28 23:33
谢谢。。解决了我的一个大问题。。给分!
|
|
5楼#
发布于:2004-08-28 23:34
还有一个问题,我如何得到pci配置寄存器的内容,然后如何读写他们?在dos下面可以往cf8写数据,然后从cfc端口就可以读数据出来了。那在wdm程序下面那,怎么得到?
[编辑 - 8/28/04 by suiyi] |
|
6楼#
发布于:2004-08-29 01:12
刚看了一个例子,可以由IRP_MN_READ_CONFIG IRP得到pci的配置寄存器的内容。pci配置寄存器保存了一些基地址寄存器和中断的一些内容。我在IRP_MN_START_DEVICE中可以得到内存的开始地址和中断内容。
我想知道,这两个方法得到的数据是不是一样,一般驱动中是采取后一种方法么? 谢谢,给分 |
|
7楼#
发布于:2004-08-30 14:23
IRP_MN_READ_CONFIG
Bus drivers for buses with configuration space must handle this request for their child devices (child PDOs). Filter and function drivers do not handle this request. 还是请仔细看DDK 我想你写的应该是function driver,由START_DEVICE得到资源 |
|