阅读:3818回复:3
MiniFilter中 precleanup 中FltCreateFile , FltWriteFile 死锁 (tooflat大牛来看下)
我把Sfilter的加密代码移植到MiniFilter框架上. 现在在加尾的地方卡住了.
1. precleanup中 或 postclose中 FltCreateFile 在vista系统发生死锁. xp系统下正常. 2. precleanup中 FltWritedfile NoCache写尾时,在vista系统发生死锁. xp系统下正常. 3. precleanup中 PagintIo写尾 FltSetFileInformatione 时,在vista系统发生死锁. 4. 想通过发IRP的方法,但无法得到下层设备. 要如何解决这个死锁问题呢? |
|
|
沙发#
发布于:2008-11-19 09:35
{
NTSTATUS status; PDEVICE_OBJECT pFltDevObj=NULL,pFsdDevObj=NULL; LARGE_INTEGER off,len; status=FltGetDeviceObject(FltObjects->Volume,&pFltDevObj); if (NT_SUCCESS(status)) { pFsdDevObj=IoGetDeviceAttachmentBaseRef(pFltDevObj); if (pFsdDevObj!=NULL) { off.LowPart=0x0; off.HighPart=0x40000000; len.LowPart=0x100; len.HighPart=0x0; status = HelpFunc_Lock(IRP_MJ_LOCK_CONTROL,IRP_MN_LOCK, FltObjects->FileObject,pFsdDevObj,off,len); ObDereferenceObject(pFsdDevObj); } else { status=STATUS_UNSUCCESSFUL; } ObDereferenceObject(pFltDevObj); } return status; } 使用底层的 DeviceObject可以发irp请求到文件长度,但无法发irp 读取数据.. |
|
|
板凳#
发布于:2008-11-19 09:37
我在网上看到将 FltWriteFile 同步写形式改写成异步形式写. 不过这样安全吗?
|
|
|
地板#
发布于:2009-11-16 14:49
弄了半天是老帖,编辑了
|
|