2,643
社区成员
发帖
与我相关
我的任务
分享
NTSTATUS SfCleanupClose ( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp )
{
NTSTATUS status;
PAGED_CODE();
VALIDATE_IRQL(Irp);
if (IS_MY_CONTROL_DEVICE_OBJECT(DeviceObject)) {
Irp->IoStatus.Status = STATUS_SUCCESS;
Irp->IoStatus.Information = 0;
IoCompleteRequest( Irp, IO_NO_INCREMENT );
return STATUS_SUCCESS;
}
ASSERT(IS_MY_DEVICE_OBJECT( DeviceObject ));
SfDisplayCreateFileName( Irp ); //**********************这一句是我自己加的
IoSkipCurrentIrpStackLocation( Irp );
return IoCallDriver( ((PSFILTER_DEVICE_EXTENSION) DeviceObject->DeviceExtension)->AttachedToDeviceObject, Irp );
}
kd> !analyze -v
*******************************************************************************
* *
* Bugcheck Analysis *
* *
*******************************************************************************
PAGE_FAULT_IN_NONPAGED_AREA (50)
Invalid system memory was referenced. This cannot be protected by try-except,
it must be protected by a Probe. Typically the address is just plain bad or it
is pointing at freed memory.
Arguments:
Arg1: bad0b148, memory referenced.
Arg2: 00000000, value 0 = read operation, 1 = write operation.
Arg3: 8092b6e2, If non-zero, the instruction address which referenced the bad memory
address.
Arg4: 00000000, (reserved)
Debugging Details:
------------------
READ_ADDRESS: bad0b148
FAULTING_IP:
nt!ObpRemoveObjectRoutine+c4
8092b6e2 3918 cmp dword ptr [eax],ebx
MM_INTERNAL_CODE: 0
DEFAULT_BUCKET_ID: DRIVER_FAULT
BUGCHECK_STR: 0x50
PROCESS_NAME: System
CURRENT_IRQL: 1
TRAP_FRAME: f78c2ce4 -- (.trap 0xfffffffff78c2ce4)
ErrCode = 00000000
eax=bad0b148 ebx=00000000 ecx=8246e028 edx=00000000 esi=00000000 edi=00000000
eip=8092b6e2 esp=f78c2d58 ebp=f78c2d68 iopl=0 nv up ei ng nz na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00010286
nt!ObpRemoveObjectRoutine+0xc4:
8092b6e2 3918 cmp dword ptr [eax],ebx ds:0023:bad0b148=????????
Resetting default scope
LAST_CONTROL_TRANSFER: from 80825b3b to 8086cf14
STACK_TEXT:
f78c2854 80825b3b 00000003 bad0b148 00000000 nt!RtlpBreakWithStatusInstruction
f78c28a0 80826a2f 00000003 c05d6858 82595b40 nt!KiBugCheckDebugBreak+0x19
f78c2c38 80826dc7 00000050 bad0b148 00000000 nt!KeBugCheck2+0x5d1
f78c2c58 8085a507 00000050 bad0b148 00000000 nt!KeBugCheckEx+0x1b
f78c2ccc 808868a0 00000000 bad0b148 00000000 nt!MmAccessFault+0xa91
f78c2ccc 8092b6e2 00000000 bad0b148 00000000 nt!KiTrap0E+0xd8
f78c2d68 8092b744 8246e028 00000001 82595b40 nt!ObpRemoveObjectRoutine+0xc4
f78c2d80 8087adbd 00000000 00000000 82595b40 nt!ObpProcessRemoveObjectQueue+0x36
f78c2dac 809418f4 00000000 00000000 00000000 nt!ExpWorkerThread+0xeb
f78c2ddc 80887f4a 8087acd2 00000000 00000000 nt!PspSystemThreadStartup+0x2e
00000000 00000000 00000000 00000000 00000000 nt!KiThreadStartup+0x16
STACK_COMMAND: kb
FOLLOWUP_IP:
nt!ObpRemoveObjectRoutine+c4
8092b6e2 3918 cmp dword ptr [eax],ebx
SYMBOL_STACK_INDEX: 6
SYMBOL_NAME: nt!ObpRemoveObjectRoutine+c4
FOLLOWUP_NAME: MachineOwner
MODULE_NAME: nt
IMAGE_NAME: ntkrnlpa.exe
DEBUG_FLR_IMAGE_TIMESTAMP: 45ec0a19
FAILURE_BUCKET_ID: 0x50_BADMEMREF_nt!ObpRemoveObjectRoutine+c4
BUCKET_ID: 0x50_BADMEMREF_nt!ObpRemoveObjectRoutine+c4
Followup: MachineOwner
---------
NTSTATUS SfCleanupClose ( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp )
{
NTSTATUS status;
PAGED_CODE();
VALIDATE_IRQL(Irp);
if (IS_MY_CONTROL_DEVICE_OBJECT(DeviceObject)) {
Irp->IoStatus.Status = STATUS_SUCCESS;
Irp->IoStatus.Information = 0;
SfDisplayCreateFileName( Irp ); //加这里看看
IoCompleteRequest( Irp, IO_NO_INCREMENT );
return STATUS_SUCCESS;
}
ASSERT(IS_MY_DEVICE_OBJECT( DeviceObject ));
IoSkipCurrentIrpStackLocation( Irp );
return IoCallDriver( ((PSFILTER_DEVICE_EXTENSION) DeviceObject->DeviceExtension)->AttachedToDeviceObject, Irp );
}