PCI驱动求助!望大侠指导!

chengduligang 2012-06-05 11:26:56
目前小弟在做一个WDF模式下的PCI驱动程序,完成了基本的读写功能和上层测试程序的开发,但是驱动的写入和读出是不一样的。目前小弟想查找在驱动中具体进行读写的端口地址是什么(我用的是IO端口进行读写),但是对hardwardorepare函数中获取设备资源的函数有一些不理解!希望大侠能够指导一下,再次先行谢过了哈!
PCISample_EvtDevicePrepareHardware(
IN WDFDEVICE Device,
IN WDFCMRESLIST ResourceList,
IN WDFCMRESLIST ResourceListTranslated
)
{
PDEVICE_CONTEXT pDeviceContext;
ULONG i;
PCM_PARTIAL_RESOURCE_DESCRIPTOR descriptor;

PAGED_CODE();

DbgPrint("EvtDevicePrepareHardware - begins\n");

pDeviceContext = GetDeviceContext(Device);
pDeviceContext->IoBaseAddress = NULL;

//
// WdfCmResourceListGetCount函数获取配置资源的个数,
// WdfCmResourceListGetDescriptor函数获取该资源的描述符
//
for (i=0; i < WdfCmResourceListGetCount(ResourceListTranslated); i++) {

descriptor = WdfCmResourceListGetDescriptor(ResourceListTranslated, i);

switch (descriptor->Type) {

case CmResourceTypePort:
//将IO空间地址赋给设备上下文中
pDeviceContext->IoBaseAddress =descriptor->u.Port.Start.LowPart;
pDeviceContext->IoLength = descriptor->u.Port.Length;

break;

default:
break;
}

}

DbgPrint("EvtDevicePrepareHardware - ends\n");

return STATUS_SUCCESS;
}
...全文
199 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
你是不是想找个pci_resource_start(pdev,0)这个函数啊。最后面的0标示IO,如果是1则标示memery。 这个函数是把pci的寄存器映射到内存中,然后返回内存的基地址。

6,849

社区成员

发帖
与我相关
我的任务
社区描述
Windows 2016/2012/2008/2003/2000/NT
社区管理员
  • Windows Server社区
  • qishine
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧