NtOpenMutant
NTSTATUS __stdcall NtOpenMutant(VOID **MutantHandle, _ACCESS_MASK DesiredAccess, POBJECT_ATTRIBUTES ObjectAttributes){
char PreviousMode;
__int64 v7;
int v8;
UINT64 DesiredAccessa;
UINT64 DesiredAccessb;
VOID *Handle[3];
Handle[0] = 0i64;
PreviousMode = KeGetCurrentThread()->PreviousMode;
if( PreviousMode )
{
v7 = 0x7FFFFFFF0000i64;
if( (unsigned __int64)MutantHandle < 0x7FFFFFFF0000i64 )
v7 = (__int64)MutantHandle;
*(_QWORD *)v7 = *(_QWORD *)v7;
}
LODWORD(DesiredAccessa) = DesiredAccess;
v8 = ObOpenObjectByName(ObjectAttributes, ExMutantObjectType, PreviousMode, 0i64, DesiredAccessa, 0i64, Handle);
if( v8 == -1073741788 && *(&WheapDeferredInternalLogsEventLock + 56) )
{
LODWORD(DesiredAccessb) = DesiredAccess;
v8 = ObOpenObjectByName(
ObjectAttributes,
*(&WheapDeferredInternalLogsEventLock + 56),
PreviousMode,
0i64,
DesiredAccessb,
0i64,
Handle);
}
if( v8 >= 0 )
*MutantHandle = Handle[0];
return v8;
}Referenced by:
No references.