Peter,
Yes, it’s at dispatch_level. It’s touching paged memory. Now
MmGetSystemAddressForMdlSafe(irp->MdlAddress, NormalPagePriority)
and
NdisMoveMappedMemory
Also give me this problem.
I was porting some code from NDIS packet sample to my driver(PCAUSA indeed).
This is the start part of DeviceInit:
NTSTATUS DeviceInit
IN PDRIVER_OBJECT DriverObject,
IN PUNICODE_STRING RegistryPath
)
{
UNICODE_STRING DeviceName;
UNICODE_STRING SymbolicLinkName;
PDEVICE_OBJECT DeviceObject = NULL;
UINT Counter = 0;
NTSTATUS Status = STATUS_SUCCESS;
POPEN_INSTANCE open = NULL;
Globals.DriverObject = DriverObject;
// Initialize device name string
RtlInitUnicodeString ( &DeviceName, L"\Device\Ndishk" );
// Create new device
Status = IoCreateDevice (
DriverObject,
sizeof(OPEN_INSTANCE),
&DeviceName,
FILE_DEVICE_NETWORK,
0,
FALSE,
&DeviceObject
);
open = (POPEN_INSTANCE) DeviceObject->DeviceExtension;
open->DeviceObject = DeviceObject;
The OPEN_INSTANCE I just copied from packet. Now I am suspicious the open
instance is not initialized successfully.
This is the debug information: Thank you for any comments!
kd> !analyze -v
****************************************************************************
***
* *
* Bugcheck Analysis *
* *
****************************************************************************
***
DRIVER_IRQL_NOT_LESS_OR_EQUAL (d1)
An attempt was made to access a pagable (or completely invalid) address at
an
interrupt request level (IRQL) that is too high. This is usually
caused by drivers using improper addresses.
If kernel debugger is available get stack backtrace.
Arguments:
Arg1: 00000008, memory referenced
Arg2: 00000002, IRQL
Arg3: 00000000, value 0 = read operation, 1 = write operation
Arg4: fc699ee8, address which referenced memory
Debugging Details:
READ_ADDRESS: 00000008
CURRENT_IRQL: 2
FAULTING_IP:
ndishk!TCPIP_ReceiveHandler+1d7
fc699ee8 8b4240 mov eax,[edx+0x40]
DEFAULT_BUCKET_ID: DRIVER_FAULT
BUGCHECK_STR: 0xD1
----- Original Message -----
From: “Peter Wieland”
To: “NT Developers Interest List”
Sent: Thursday, September 05, 2002 11:54 AM
Subject: [ntdev] RE: DRIVER_IRQL_NOT_LESS_OR_EQUAL
are you at dispatch_level when the crash occurs? Is the routine
touching paged memory while at dispatch level?
-p
-----Original Message-----
From: Yuanhui Zhao [mailto:xxxxx@nexland.com]
Sent: Thursday, September 05, 2002 7:04 AM
To: NT Developers Interest List
Subject: [ntdev] DRIVER_IRQL_NOT_LESS_OR_EQUAL
Hi all,
I was using functions:
ExInterlockedRemoveHeadList
and
IoGetCurrentIrpStackLocation
in a routine whose IRQL <= DISPATCH_LEVEL, accordint to DDK, this should
be ok. But my system crashes with error DRIVER_IRQL_NOT_LESS_OR_EQUAL.
Any comments?
Thanks!
Yuanhui
—
You are currently subscribed to ntdev as: xxxxx@microsoft.com To
unsubscribe send a blank email to %%email.unsub%%
—
You are currently subscribed to ntdev as: xxxxx@nexland.com
To unsubscribe send a blank email to %%email.unsub%%