PCI驱动求助!望大侠指导!
目前小弟在做一个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;
}