STDMETHODIMP_ (void)
WaveStream: : CopyFrom
(
IN PVOID Destination,
IN PVOID Source,
IN ULONG ByteCount
)
{
For (int I=0; i
BYTE b=data [I];
Destination [I]=b;//this code cause blue screen
}
}
In the Destination memory assignment, trigger a blue screen DRIVER_IRQL_NOT_LESS_OR_EQUAL, give me feeling, like is Destination has failed, what reason is this?
CodePudding user response:
This is the dump file information:DRIVER_IRQL_NOT_LESS_OR_EQUAL (d1)
An attempt was made to access a pageable (or completely invalid) address at An
Interrupt request level (IRQL) that is too high. This is usually
Under caused by drivers using improper addresses.
If the kernel debugger is get stack backtrace.
The Arguments:
Arg1: ffffd000227fd000, referenced memory
Arg2:0000000000000002, IRQL
Arg3:0000000000000001, the value 0=read operation, 1=write operation
Arg4: fffff80182381470, address which referenced memory
As Destination [I]=b; Perform the IRQL is too high, if is really the IRQL is too high, that is to say the Destination is belong to the paging memory?
But the dump file analysis, continue to look down, and the message:
FAULTING_MODULE: fffff800d6417000 nt
5 d69d7b1 DEBUG_FLR_IMAGE_TIMESTAMP:
WRITE_ADDRESS: unable to get the nt! MmSpecialPoolStart
Unable to get the nt! MmSpecialPoolEnd
Unable to get the nt! MmPoolCodeStart
Unable to get the nt! MmPoolCodeEnd
Ffffd000227fd000
CURRENT_IRQL: 0
FAULTING_IP:
The monster! Data_transfer_record + 50
82381470 8802 mov fffff801 ` byte PTR (RDX), al
CUSTOMER_CRASH_COUNT: 1
DEFAULT_BUCKET_ID: VISTA_DRIVER_FAULT
BUGCHECK_STR: 0 xd1
LAST_CONTROL_TRANSFER: from fffff800d6563fe9 to fffff800d6559480
This information added CURRENT_IRQL: 0, it executes code, IRQL is 0 or 2? Don't understand the
CodePudding user response:
Should be set interrupt request