ATAPI(磁盘端口驱动)级文件保护简单实现
ATAPI(磁盘端口驱动)级文件保护简单实现
#define IoGetIrpStackLocation( Irp , Level) (\
(Irp)->Tail.Overlay.CurrentStackLocation + Level )
BOOL IfIrpHasFobj(PIRP pIrp , LPCWSTR FileName)
{
ULONG i , j ;
PIO_STACK_LOCATION irpStack ;
PVOID NamePool ;
for ( i = 0 ; i < (ULONG)(pIrp->StackCount - pIrp->CurrentLocation + 1) ; i ++)
{
irpStack = IoGetIrpStackLocation(pIrp , i );
if (irpStack->FileObject)
{
if (irpStack->FileObject->FileName.Buffer)
{
NamePool = ExAllocatePool(NonPagedPool , irpStack->FileObject->FileName.Length + 2);
if (NamePool)
{
KDMSG(("%ws" , irpStack->FileObject->FileName.Buffer));
RtlCopyMemory(NamePool ,
irpStack->FileObject->FileName.Buffer ,
irpStack->FileObject->FileName.Length + 2);
_wcsupr((wchar_t*)NamePool);
if (wcsstr((wchar_t*)NamePool , FileName))
{
ExFreePool(NamePool);
return TRUE ;
}
ExFreePool(NamePool);
}
}
}
}
return FALSE ;
}
NTSTATUS ProxyAtapiScsi(PDEVICE_OBJECT devobj , PIRP pIrp)
{
NTSTATUS stat ;
if (IfIrpHasFobj(pIrp , L"123.TXT"))
{
pIrp->IoStatus.Status = 0xc0000001;
pIrp->IoStatus.Information = 0 ;
IoCompleteRequest(pIrp , IO_NO_INCREMENT);
return 0xc0000001;
}
__asm
{
push pIrp
push devobj
call OldAtapiScsiDispatch
mov stat ,eax
}
return stat ;
}
http://hi.baidu.com/new/mj0011
ATAPI(磁盘端口驱动)级文件保护简单实现相关推荐
- Windows网络驱动、NDIS驱动(微端口驱动、中间层驱动、协议驱动)、TDI驱动(网络传输层过滤)、WFP(Windows Filtering Platfrom))
catalog 0.引言 1.Windows 2000网络结构和OSI模型 2.NDIS驱动 3.NDIS微端口驱动编程实例 4.NDIS中间层驱动编程实例 5.TDI驱动 6.TDI驱动 7.TDI ...
- NDIS小端口驱动ndisEdge学习二——小端口驱动的初始化
目录 1 首先进入DriverEntry检查版本号(可选) 2 WDF_NO_EVENT_CALLBACK初始化驱动标志 3 设置WdfDriverInitNoDispatchOverride表示框架 ...
- 为设计指定输入端口驱动强度:set_driving_cell、set_drive 和set_input_transition
为设计指定输入端口驱动强度: 1. set_driving_cell命令: 2. set_drive命令: 3. set_input_transition命令: 这三个命令之间的关系与区别. 一.为设 ...
- 【Android取证篇】ADB端口驱动更新详细步骤
[Android取证篇]ADB端口驱动更新详细步骤 更新ADB端口驱动,解决无法连接设备问题-[蘇小沐] 1.[记录VID]路径:设备管理器->便携设备->属性->(记录)VID 查 ...
- 台式计算机的速度,USB3.0有多快?平民级最简单测试告诉你
[IT168 应用]说到USB3.0,估计大家已经很熟悉了.但是由于现在这项技术还没有被广泛应用,并且只有一小部分高端PC产品才使用它,所以它还是给了我们一种神秘的感觉.但是总是听说USB3.0的传输 ...
- linux下spi flash驱动程序,关于spi flash芯片m25p80驱动以及其简单的mtd驱动分析
项目中用到了spi flash芯片MX25L25635E,之前在uboot下简单分析了驱动代码,调试该flash擦除的bug,一直没有时间分 析内核中关于该芯片的驱动,以下是对该芯片驱动的一个简单分析 ...
- linux 字符设备驱动测试,一个简单字符型设备驱动及其测试
驱动对一些人来说很难,而对一些人来说很容易.窃以为,理解简单设备驱动模型不难,深入理解并与Linux内核设计联系到一起需要花费时间.对于移植者来说,如何将自己自定义的模块天衣无缝放到内核中,是比较重要 ...
- 电脑添加夏普(sharp)打印机 从磁盘安装驱动过程
今天打算连实验室的打印机,是夏普的,但是我不知道具体的型号.不过有一个word文档说明怎么连,大概率需要自己下载驱动,下面就开始吧! 控制面板的操作 前面都是一样的,控制面板–>设备和打印机–& ...
- 操作系统实验:模拟电梯调度算法,实现对磁盘的驱动调度C++实现
设计一个以电梯调度思想为主并考虑旋转优化的程序,对磁盘进行移臂和旋转调度,对磁盘进行移臂和旋转调度. 假定某个磁盘组共有 200 个柱面,由外向里顺序编号(0-199) ...
- 驱动及驱动开发的简单理解
一直对驱动有着强烈的好奇心,怎奈工作始终与其无缘,且未来也不大可能接触驱动.因此,今天用了一些时间,去简单的了解了一下驱动及驱动开发.如果有错误的理解,请予以指正,不胜感激! 什么是驱动 在计算中,设 ...
最新文章
- xml文件上传服务器读取不了,本地读取服务器Xml文件及本地读本地的xml
- 常用解决方案技术一览
- IE6 CSS的一个bug
- Java实现算法导论中朴素字符串匹配算法
- 太原未来小使者英语大赛_哥伦比亚2020年中学生“汉语桥”大赛成功在线举办...
- python读取文本并且替换_lin如何读取和替换python行文件中的文本
- C++对C的函数扩展
- MacOS 系统使用命令安装软件包
- java提高篇四_(转)java提高篇(四)-----理解java的三大特性之多态
- html5录音怎么保存到本地,详解HTML5 录音遇到的坑
- Tcp keepalive详解
- DAY16-Django之model
- 配置Web.Config连接数据库
- hmcl启动器安装游戏版本失败_HMCL 启动器教程 #2 安装游戏版本、模组加载器与高清修复...
- javaweb学习笔记(XML基础)
- 区块链技术与应用(北大公开课,肖臻)- 课程总结
- 国家测绘局干部双向挂职锻炼管理暂行办法
- 芯片行业相关公司及就业岗位汇总
- 又一股份制银行,菊风「视频能力平台」承包了
- web仿微信发朋友圈选择位置