xiaohuating
驱动牛犊
驱动牛犊
  • 注册日期2004-04-15
  • 最后登录2018-01-09
  • 粉丝0
  • 关注0
  • 积分48分
  • 威望27点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
  • 社区居民
阅读:1435回复:2

怎么样针对某个设备拦截某些操作(读/写/安装等).

楼主#
更多 发布于:2004-09-01 16:53
首先我想知道怎么样给分,因为上次的帖子我还没给分.


我想知道怎么拦截此DriverObject的IRP_MJ_CREATE、IRP_MJ_SET_INFORMATION、IRP_MJ_DEVICE_CONT;
我写了个Driver,用于屏蔽CDROM,似乎不用用IoGetRelatedDeviceObject吧:

//申明
DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL]
= MyDrvDeviceControl;
DriverObject->MajorFunction[IRP_MJ_SET_INFORMATION]
= MyDrvDeviceControl;

//实体
NTSTATUS MyDrvDeviceControl(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp )
{
NTSTATUS ntStatus;
Irp->IoStatus.Status = STATUS_SUCCESS;
Irp->IoStatus.Information = 0;

//#define FILE_DEVICE_CD_ROM 0x00000002
//#define FILE_DEVICE_CD_ROM_FILE_SYSTEM 0x00000003

if(DeviceObject->DeviceType == FILE_DEVICE_CD_ROM ||
DeviceObject->DeviceType ==
FILE_DEVICE_CD_ROM_FILE_SYSTEM)
{
//????????????
Irp->IoStatus.Information = 1;
}

ntStatus = Irp->IoStatus.Status;
IoCompleteRequest( Irp, IO_NO_INCREMENT );
return ntStatus;
}
我试了下怎么这样子不可以达到目的.WHY????

最新喜欢:

wjhwdmwjhwdm
lu0
lu0
论坛版主
论坛版主
  • 注册日期2001-06-10
  • 最后登录2016-04-05
  • 粉丝2
  • 关注0
  • 积分-6311分
  • 威望21111点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-09-03 17:00
首先你需要一些背景知识. 从你提供的代码来看. 你不具备DDK的基本知识. 你先从头啃一下DDK的文档. 比乱来好很多.
Regards, Lu Lin Webmaster of Inside Programming http://www.lu0s1.com
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
板凳#
发布于:2004-09-03 17:42
一般情况下不要去修改原来驱动程序中的处理例程,你可以做过滤驱动,然后在你的过滤驱动中进行拦截即可.
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
游客

返回顶部