磁盘过滤驱动问题求助

maxwellxxx 2013-05-22 02:30:09
本人本科在读,因为个人兴趣接触了windows内核开发,最近在做磁盘过滤驱动时遇到个问题,望各位大神帮助:
  KeInitializeEvent(&WaitEvent1,NotificationEvent,FALSE);  
NewIrp1 = IoBuildDeviceIoControlRequest(FSCTL_LOCK_VOLUME,
DevExt->FltDevObj,
NULL,
0,
NULL,
0,
FALSE,
&WaitEvent1,
&IoStatus);
if (NULL == NewIrp1) // can't create new irp
{
KdPrint(("xxxdiskg::xLoginOut2 %#x\n",status));
return status;
}

status = IoCallDriver(DevExt->FltDevObj, NewIrp1);

if (status == STATUS_PENDING)
{
status = KeWaitForSingleObject(&WaitEvent1, Executive, KernelMode, FALSE, NULL);
status = IoStatus.Status;
}

if (!NT_SUCCESS(status))
{
KdPrint(("xxxdiskg::xLoginOut3 %#x\n",status));
return status;
}


代码如上,想要实现的是在内核层对磁盘进行lock,上面的代码执行后status返回都是参数错误,前前后后已经纠结了2个月了,查了无数资料,毫无头绪望各位大神指点
...全文
83 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
olivertang 2013-07-09
  • 打赏
  • 举报
回复
你是磁盘过滤,你的下层是磁盘,你发FSCTL_LOCK_VOLUME ,这明显是文件系统的IRP, DevExt->FltDevObj 这个Obj是文件系统的吗?

21,597

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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