STATUS_MUTANT_NOT_OWNED

[关键词]: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)


原文地址:https://www.cnblogs.com/bugchecker/p/3041605.html