windows驱动编程,IRP_MJ_CREATE控制U盘读取后无法弹出U盘!

weixin_41227334 2018-04-08 11:27:11
在做一个基于minifilter的对U盘读写控制的驱动
在IRP_MJ_CREATE中实现了对U盘的禁止访问!
但是发现在弹出U盘的时候总是提示U盘正在使用!

由于网络问题上不了图,贴出precreate的代码:
FLT_PREOP_CALLBACK_STATUS
FsFilter3PreCreate(
_Inout_ PFLT_CALLBACK_DATA Data,
_In_ PCFLT_RELATED_OBJECTS FltObjects,
_Flt_CompletionContext_Outptr_ PVOID *CompletionContext
)
/*++

Routine Description:

This routine is a pre-operation dispatch routine for this miniFilter.

This is non-pageable because it could be called on the paging path

Arguments:

Data - Pointer to the filter callbackData that is passed to us.

FltObjects - Pointer to the FLT_RELATED_OBJECTS data structure containing
opaque handles to this filter, instance, its associated volume and
file object.

CompletionContext - The context for the completion routine for this
operation.

Return Value:

The return value is the status of the operation.

--*/
{
NTSTATUS status;

UNREFERENCED_PARAMETER(FltObjects);
UNREFERENCED_PARAMETER(CompletionContext);



//PFLT_FILE_NAME_INFORMATION pinfo;
//BOOLEAN bMatchFound;
PFsFilter3_INSTANCE_CONTEXT pAIC = NULL;
BOOLEAN ucFlags=FALSE;

PAGED_CODE();


status = FltGetInstanceContext(Data->Iopb->TargetInstance, &pAIC);
if (!NT_SUCCESS(status))
return FLT_PREOP_SUCCESS_NO_CALLBACK;
//true代表是USB设备
ucFlags = pAIC->ucFlags;
if (pAIC != NULL)
FltReleaseContext(pAIC);




ULONG CreatePosition;
ULONG Position;
Position = Data->Iopb->Parameters.Create.Options;

CreatePosition = (Data->Iopb->Parameters.Create.Options >> 24) & 0xFF;


//拒绝USB操作

if (ucFlags && (CreatePosition == FILE_OPEN))
{
//拒绝文件操作
DbgPrint("pasthrough pre Create: access denied");
DbgPrint("%s", ucFlags == FALSE ? "FALSE" : "TRUE");
Data->IoStatus.Status = STATUS_ACCESS_DENIED;
Data->IoStatus.Information = 0;

return FLT_PREOP_COMPLETE;
}

else
{
return FLT_PREOP_SUCCESS_WITH_CALLBACK;
}

}


跪求大神提示下可能哪里出了问题!
...全文
1007 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
yiyefangzhou24 2018-04-11
  • 打赏
  • 举报
回复
FltReleaseContext();检查一下打开的设备是否关闭了
赵4老师 2018-04-09
  • 打赏
  • 举报
回复
这个网站上难道没有问答论坛吗?
weixin_41227334 2018-04-08
  • 打赏
  • 举报
回复
up 实在是小白,看了一些资料也没能解决。。
赵4老师 2018-04-08
  • 打赏
  • 举报
回复
Windows驱动开发 http://www.osronline.com/

69,374

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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