-
-
[求助]求助一个一个防止删除的问题
-
发表于: 2008-8-21 13:51 3830
-
代码如下
if (stack->MajorFunction == IRP_MJ_SET_INFORMATION) {
RtlUnicodeStringToAnsiString(&ProtectFile, &stack->FileObject->FileName, TRUE);
if (stack->Parameters.SetFile.FileInformationClass == FileDispositionInformation) {
Irp->IoStatus.Status = STATUS_ACCESS_DENIED;
Irp->IoStatus.Information = 0;
IoCompleteRequest(Irp, IO_NO_INCREMENT);
KdPrint(("IRP_MJ_SET_INFORMATION \t Process:%s File: %s\n", (PUCHAR)PsGetCurrentProcess()+pdx->ProcessNameOffset, ProtectFile.Buffer));
return STATUS_ACCESS_DENIED;
}
}
我在XP SP2的虚拟机下跑,断点看到能到这里,但是IRP完成, return 以后,虚拟机就会假死,为什么啊,我觉得代码没问题啊。
if (stack->MajorFunction == IRP_MJ_SET_INFORMATION) {
RtlUnicodeStringToAnsiString(&ProtectFile, &stack->FileObject->FileName, TRUE);
if (stack->Parameters.SetFile.FileInformationClass == FileDispositionInformation) {
Irp->IoStatus.Status = STATUS_ACCESS_DENIED;
Irp->IoStatus.Information = 0;
IoCompleteRequest(Irp, IO_NO_INCREMENT);
KdPrint(("IRP_MJ_SET_INFORMATION \t Process:%s File: %s\n", (PUCHAR)PsGetCurrentProcess()+pdx->ProcessNameOffset, ProtectFile.Buffer));
return STATUS_ACCESS_DENIED;
}
}
我在XP SP2的虚拟机下跑,断点看到能到这里,但是IRP完成, return 以后,虚拟机就会假死,为什么啊,我觉得代码没问题啊。
赞赏
赞赏
雪币:
留言: