阅读:955回复:3
初学者,请求帮助,关于pci的wdm
硬件不是我做的,我只是做驱动,有几个问题如下:
1,我用driverworks生成wdm驱动,如果我什么代码也不加,只是将vendorID和DeviceID加上,此时安装驱动,系统提示:无法确定驱动是否与硬件兼容,怎样才能让系统监测到驱动与硬件兼容那? 2,我不管兼容与否,安装完成,此时我用Ioctl与应用程序通信,只是发几个字符到wdm,再收回这几个字符,这时候,没问题,一切正常,后来我在wdm中添加kmemoryrange变量,如果只是添加,而不利用,也没问题,但是如果我加入kmeoryrang的执行语句(outb),在执行时,驱动接收到的应用程序数据却少了,不知为什么?例如:应用程序传送数据“abcdefg”,驱动收到是“aceg”请问为什么? |
|
沙发#
发布于:2003-01-03 11:34
第二个问题算是解决了,后来我把应用程序发送和驱动接收的数据类型完全统一起来,就没事了。但是现在又有一个问题,我不会用kmemoryrange这个东西,我在创建wdm时添加一个变量,在驱动中我先发送几个字符(outw),后再接收几个字符(inw),我只是想看看能不能写到硬件中去,可是inw总是接收不到,为什么?
driverworks定义kememoryrange如下: 在函数::OnStartDevice(KIrp I)中 { PCM_RESOURCE_LIST pResListRaw = I.AllocatedResources(); PCM_RESOURCE_LIST pResListTranslated = I.TranslatedResources(); KPciConfiguration PciConfig(m_Lower.TopOfStack()); status = m_MemoryRange0.Initialize( pResListTranslated, pResListRaw, PciConfig.BaseAddressIndexToOrdinal(0) ); } 以上由driverworks自动生成,我未改动,然后我就直接使用m_MemoryRange0.outw(0x100,sBuffer2,10)和m_MemoryRange0.inw(0x100,sBuffer1,10),我不知道这样写对不对,大家帮忙看看,我是想把数据写到0X100中,接着从0X100中读出。 |
|
板凳#
发布于:2003-01-03 12:19
我问的问题是不是太简单了,不值得去回答?怎么没人回答那??
|
|
地板#
发布于:2003-01-03 14:22
用户被禁言,该主题自动屏蔽! |
|