[关键词]:MUTEX,完成例程,
[状况]:驱动IoCallDirver之前先WaitForSingleObject以获取MUTEX,然后设置完成例程。在完成例程里ReleaseMutex,系统蓝屏。
[原因]:“A mutex object can be released only by the thread that currently holds the mutex. ”获取MUTEX的线程和完成例程中试图释放MUTEX的线程不是同一个。
[Debug过程]:略
[DUMP]: 部分
SYSTEM_THREAD_EXCEPTION_NOT_HANDLED (7e)
This is a very common bugcheck. Usually the exception address pinpointsthe driver/function that caused the problem. Always note this address as well as the link date of the driver/image that contains this address.
Arguments:
Arg1: c0000046, The exception code that was not handled
Arg2: 808255e9, The address that the exception occurred at
Arg3: ba57b964, Exception Record Address
Arg4: ba57b9b4, Context Record Address
附ntstatus.h中的错误说明:
//
// MessageId: STATUS_MUTANT_NOT_OWNED
//
// MessageText:
//
// An attempt to release a mutant object was made by a thread that was not the owner of the mutant object.
//
#define STATUS_MUTANT_NOT_OWNED ((NTSTATUS)0xC0000046L)