阅读:1381回复:6
tooflat老大或者konglord进来看看.SfPreCreate的菜菜问题
tooflat老大提供了SfPreCreate的代码.
很激动的把那段函数弄的编译通过. 有几个问题想请教2位高人. SfPreCreate是放到MJ Create里处理的么.传入的是参数能说明下吗? Status = IoCallDriver(DevExt->NLExtHeader.AttachedToDeviceObject, Irp); if (STATUS_PENDING == Status) { KeWaitForSingleObject(&MyFileObject->Event, Executive, KernelMode, TRUE, NULL); Status = Irp->IoStatus.Status; } if (NT_SUCCESS(Status) && (STATUS_REPARSE != Status)) { // U can read write file here 下发驱动后.关于文件的读能说说吗?这个时候应该已经完成了文件的打开操作了.是不是可以调用ZwReadFile?好象又没有句柄,具体这里该怎么读呢?请指明.谢谢!!! |
|
沙发#
发布于:2007-01-16 17:30
你用tooflat的代码运行了吗? 我运行了以后所有的文件都不能访问了.... 好像有问题....
|
|
板凳#
发布于:2007-01-17 01:51
运行了,什么也没改,放在MJ_CREATE与MJ_READ里都测试过。
比你还惨:STOP:0x50 不运行就没事,晕了。 可否贴出你那部分的代码。或者发到 我 email:chz|at|china-isi.com (|at| -> @) 如果你需要我也可贴出我的垃圾代码。呵呵 希望能 留个e-mail或者联系方式,以后多交流嘛。 我的联系方法: e-mail:上面就是,每天都会收发 qq:8454748 Moblie : 15915899552 广州号码 |
|
地板#
发布于:2007-01-17 01:54
惟一改的地方就是
DevExt->NLExtHeader.AttachedToDeviceObject DevExt结构主要就是NLExtHeader 原来是DevExt->AttachedToDeviceObject 原来的结构不清楚 |
|
地下室#
发布于:2007-01-17 11:29
对复制的FileObject要清除FO_FILE_OBJECT_HAS_EXTENSION标志。
还有你是怎么使用的。 |
|
5楼#
发布于:2007-01-17 17:44
case IRP_MJ_CREATE:
在此调用了,也就是对文件系统的IRP_MJ_CREATE的处理中调用的.... .... 清楚标志是这个吧? MyFileObject->Flags = FileObject->Flags & ~(FO_FILE_OBJECT_HAS_EXTENSION | FO_STREAM_FILE | FO_HANDLE_CREATED | FO_CLEANUP_COMPLETE); |
|
6楼#
发布于:2007-01-17 17:52
调用的具体代码:
SfPreCreate(HookDevice ,Irp ,currentIrpStack,FileObject); 参数来源: HookDevice ,Irp: NTSTATUS ISIFSHookRoutine( PDEVICE_OBJECT HookDevice, IN PIRP Irp ) currentIrpStack,FileObject: PIO_STACK_LOCATION currentIrpStack = IoGetCurrentIrpStackLocation(Irp); PIO_STACK_LOCATION nextIrpStack = IoGetNextIrpStackLocation(Irp); FileObject = currentIrpStack->FileObject; 可以告诉我下面的代码执行完后怎么读文件么? Status = IoCallDriver(DevExt->NLExtHeader.AttachedToDeviceObject, Irp); if (STATUS_PENDING == Status) { KeWaitForSingleObject(&MyFileObject->Event, Executive, KernelMode, TRUE, NULL); Status = Irp->IoStatus.Status; } if (NT_SUCCESS(Status) && (STATUS_REPARSE != Status)) { // U can read write file here //就是在这里应该怎么对文件操作.希望给我提示,谢谢 |
|