hongpengtao
驱动小牛
驱动小牛
  • 注册日期2006-03-16
  • 最后登录2015-06-03
  • 粉丝0
  • 关注0
  • 积分14分
  • 威望190点
  • 贡献值0点
  • 好评度104点
  • 原创分0分
  • 专家分0分
阅读:1255回复:2

关于shadow device的问题

楼主#
更多 发布于:2007-05-30 10:38
参考tooflat 大牛的代码
在sfilter中增加shadow device

status = IoCreateDevice( gSFilterDriverObject,
                             sizeof( SFILTER_DEVICE_EXTENSION ),
                             NULL,
                             DeviceObject->DeviceType,
                             0,
                             FALSE,
                             &newDeviceObject );
之后加上
status = IoCreateDevice( gSFilterDriverObject,
                            sizeof( SFILTER_DEVICE_EXTENSION ),
                            &ShadowDeviceName,
                            DeviceObject->DeviceType,
                            0,
                            FALSE,
                            &ShadowDeviceObject);
在确定成功后

用类似
           WCHAR wszFile[MAX_PATH] = {0};
        // FilterDevice
        // 我们需要再次打开该文件,为了避免重入...

        GetFileNameFromFileObject(IrpSp->FileObject, wszFile);
        // 假设 wszFile 里面原来内容为 L"1.txt"
        // 修改为 L"\\Device\\FDFilterShadowA\\1.txt"
        // 然后...

        OBJECT_ATTRIBUTES oa;
        InitializeObjectAttributes(&oa, wszFile, ...);

        ZwCreateFile(..., &oa, ...); // 不会再有重入的问题了,:)))
        // 因为会进入ShadowDevice's DispatchCreate
这样语句打开设备返回
STATUS_NO_SUCH_DEVICE
想问问大牛们打开设备返
STATUS_NO_SUCH_DEVICE有什么解决方法
谢谢
tooflat
论坛版主
论坛版主
  • 注册日期2002-07-08
  • 最后登录2014-03-11
  • 粉丝2
  • 关注0
  • 积分1007分
  • 威望551点
  • 贡献值3点
  • 好评度476点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-05-30 17:45
你的shadow device创建了L"\\Device\\FDFilterShadowA"的symbol了吗
hongpengtao
驱动小牛
驱动小牛
  • 注册日期2006-03-16
  • 最后登录2015-06-03
  • 粉丝0
  • 关注0
  • 积分14分
  • 威望190点
  • 贡献值0点
  • 好评度104点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-05-31 10:11
谢谢tooflat的回复以上的问题解决了
是没有对ShadowDeviceName->type设备
游客

返回顶部