VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

有编程疑问吗?还请到提问专区发帖提问!
搜索
查看: 351|回复: 1

[求助] minifilter应用层通信及SetupInstance函数问题

[复制链接]
39_avatar_middle
在线会员 535638819zsm 发表于 2018-7-28 21:34:20 | 显示全部楼层 |阅读模式
3驿站币
目的:通过应用层传过来的信息对特定的磁盘进行过滤。
通过Msg_MessageNotifyCallback接收应用层的的消息,可以确认arr接收到了应用层的消息。
message.cpp:
char arr[50];
sg_MessageNotifyCallback(
          IN PVOID PortCookie,
          IN PVOID InputBuffer,
          IN ULONG InputBufferLength,
          OUT PVOID OutputBuffer,
          IN ULONG OutputBufferLength,
          OUT PULONG ReturnOutputBufferLength
          )
{
        NTSTATUS status = STATUS_SUCCESS;

        PAGED_CODE();

       
        if (InputBuffer)
        {
                char* data = (char*)InputBuffer;
                DbgPrint("~~~~~%s",data);
                strcpy(arr, data);
                DbgPrint("~~~~~%s",arr);
               
        }
SetupInstance里面有设置对某个特定磁盘进行过滤的函数,通过arr里面的内容进行设置
main.cpp:
extern char arr[50];
NTSTATUS
SetupInstance(
    __in PCFLT_RELATED_OBJECTS FltObjects,
    __in FLT_INSTANCE_SETUP_FLAGS Flags,
    __in DEVICE_TYPE VolumeDeviceType,
    __in FLT_FILESYSTEM_TYPE VolumeFilesystemType
    )

但是我用debugview调试的时候发现SetupInstance这个函数根本不执行,可是如果我在SetupInstance函数里面手动写入代码进行某个磁盘的过滤就可以。
if (!(ctx->Name.Buffer[0] == L‘D’))
                                {
                                        FltDeleteContext(ctx);
                                        status = STATUS_FLT_DO_NOT_ATTACH;
                                }
想问一下SetupInstance这个函数到底什么时候才被调用,通过我这种办法实现可不可以,或者说该如何实现。我方便提供源码





上一篇:无法打开包括文件SDKDDKVer.h
下一篇:ABCD不同的组合方式算法,怎么写啊,帮帮忙吧

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

39_avatar_middle
ico_lz  楼主| 535638819zsm 发表于 2018-7-28 21:36:59 | 显示全部楼层
if (!(ctx->Name.Buffer[0] == L‘D’))
                                {
                                        FltDeleteContext(ctx);
                                        status = STATUS_FLT_DO_NOT_ATTACH;
                                }
此函数是SetupInstance里面对特定磁盘,也就是D盘进行的过滤。但是D这个字母是我手动写上去的

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2018-12-10 13:31

Powered by Discuz! X3.4

© 2009-2018 cctry.com

快速回复 返回顶部 返回列表