ATAPI(磁盘端口驱动)级文件保护简单实现
来源:互联网 发布:谷原章介 知乎 编辑:程序博客网 时间:2024/06/02 02:23
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(磁盘端口驱动)级文件保护简单实现
- ATAPI(磁盘端口驱动)级文件保护简单实现
- 学NTFS格式磁盘解析及atapi磁盘读写
- Win64 驱动内核编程-17. MINIFILTER(文件保护)
- 实现磁盘搜索文件
- 驱动层双机调试,文件保护,进程保护
- [原创]也学NTFS格式磁盘解析及atapi磁盘读写
- 【转】 xx_学驱动 -- INLINE HOOK 过简单驱动保护、、
- 驱动笔记:SSDT HOOK实现进程保护
- 在驱动中写磁盘文件
- SSDT HOOK实现文件保护
- 安装程序无法复制文件 Atapi.sys的解决方法
- java实现磁盘文件检索!
- subst实现文件映射磁盘
- 磁盘保护原理简介
- 磁盘加密保护
- 磁盘驱动
- 使用I/O完成端口模型监测磁盘文件状态
- 流
- Static与函数指针
- png图片在ie6中不兼容,在ie6中有灰色块解决方案
- 如何处理SQL Server死锁问题
- ASP.NET系统开发(一):层层递进之SQLHelper助手类的持续优化 .
- ATAPI(磁盘端口驱动)级文件保护简单实现
- 改变UITabBarController的高度方法
- Reporting service runningvalue 函数解决累计值问题
- FM收音机 RDS的强大功能
- wms - ListCell 相关
- 正在做的一款HTML5多人在线扑克牌游戏:99分
- NYOJ 27 水池数目 深搜或广搜
- 临时表的增删改
- SQL 2012 正式版安装