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

 找回密码
 注册

手机号码,快捷登录

手机号码,快捷登录

搜全文
查看: 4220|回复: 4

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

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

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

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

×
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-9-14 12:49 , Processed in 0.016833 second(s), 7 queries , Gzip On, Redis On.

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