阅读:2043回复:1
帮忙看下驱动这个驱动蓝屏问题,用windbg分析过
用windbg分下了dump,给出的解释如下:
NO_MORE_IRP_STACK_LOCATIONS (35) A higher level driver has attempted to call a lower level driver through the IoCallDriver() interface, but there are no more stack locations in the packet, hence, the lower level driver would not be able to access its parameters, as there are no parameters for it. This is a disasterous situation, since the higher level driver "thinks" it has filled in the parameters for the lower level driver (something it MUST do before it calls it), but since there is no stack location for the latter driver, the former has written off of the end of the packet. This means that some other memory has probably been trashed at this point. Arguments: Arg1: 86428b58, Address of the IRP Arg2: 00000000 Arg3: 00000000 Arg4: 00000000 FAULTING_SOURCE_CODE: 297: KeInitializeEvent(&Event, NotificationEvent, FALSE); 298: IoCopyCurrentIrpStackLocationToNext(Irp); 299: IoSetCompletionRoutine(Irp, EPOSFsfCallNextDriverCompletion, &Event, TRUE, TRUE, TRUE); 300: status = IoCallDriver(DeviceObject, Irp); > 301: if (STATUS_PENDING == status) 302: { 303: KeWaitForSingleObject(&Event, Executive, KernelMode, FALSE, NULL); 304: status = Irp->IoStatus.Status; 305: } 306: return status; 我现在刚开始学习驱动,不知道怎么入手,希望大家帮忙看下,非常感谢 |
|
沙发#
发布于:2013-07-15 13:37
300: status = IoCallDriver(DeviceObject, Irp);
检查DeviceObject,应该是这个DO已经被释放了 |
|