在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
芯片精品文章合集(500篇!) 创芯人才网--重磅上线啦!
查看: 3974|回复: 4

wdm驱动程序如何能够访问pci设备的配置空间

[复制链接]
发表于 2005-5-21 09:44:44 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
wdm驱动程序发访问设备配置空间,请大家指教
发表于 2005-5-23 14:21:43 | 显示全部楼层

wdm驱动程序如何能够访问pci设备的配置空间

NTSTATUS PciConfigRegisterRead(PDEVICE_OBJECT fdo,ULONG *pReadValue,USHORT offset,UCHAR Length)
{
PIRP pIrp;
KEVENT event;
NTSTATUS status;
PIO_STACK_LOCATION stack;
UCHAR ReadLen;
pIrp = IoAllocateIrp(fdo->StackSize,FALSE
if (pIrp == NULL)
{
return STATUS_INSUFFICIENT_RESOURCES;
}
// Initialize kernel event
KeInitializeEvent(&event,NotificationEvent,FALSE);
stack =IoGetNextIrpStackLocation(pIrp);
switch ( Length )
{
case 1:ReadLen = sizeof(UCHAR);break;
case 2:ReadLen = sizeof(USHORT);break;
case 4:ReadLen = sizeof(ULONG);break;
default:ReadLen = sizeof(ULONG);break;
}
// Fill the IRP
pIrp->IoStatus.Status = STATUS_NOT_SUPPORTED;
stack->MajorFunction = IRP_MJ_PNP;
stack->MinorFunction = IRP_MN_READ_CONFIG;
stack->arameters.ReadWriteConfig.WhichSpace = 0;
stack->arameters.ReadWriteConfig.Buffer = pReadValue;
stack->arameters.ReadWriteConfig.Offset = offset;
stack->Parameters.ReadWriteConfig.Length = ReadLen;

IoSetCompletionRoutine(pIrp,(PIO_COMPLETION_ROUTINE)OnRequestComplete,(PVOID)&event,TRUE,TRUE,TRUE);
// Send the packet
status =IoCallDriver(fdo,pIrp);
if (status == STATUS_PENDING)
{
// Wait for completion
KeWaitForSingleObject(&event,Executive,KernelMode,FALSE,NULL);
status = pIrp->IoStatus.Status;
}
// Release the IRP
IoFreeIrp(pIrp);
return status;
}
NTSTATUS OnRequestComplete(PDEVICE_OBJECT fdo,PIRP pIrp,PKEVENT pKEvent)
{
KeSetEvent(pKEvent,0,FALSE);
return STATUS_MORE_PROCESSING_REQUIRED;
}
发表于 2009-1-19 01:34:36 | 显示全部楼层
不错的代码,谢谢
发表于 2009-11-20 15:15:33 | 显示全部楼层
不错!
发表于 2009-11-22 11:50:02 | 显示全部楼层
不错,谢谢分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条


小黑屋| 手机版| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-1-18 18:14 , Processed in 0.026653 second(s), 23 queries , Gzip On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表