MmCreateMirror
NTSTATUS MmCreateMirror(void){
INT8 v0;
UNICODE_STRING ValueName;
__int64 v3[4];
int v4;
int v5;
int Data;
UINT64 ResultDataSize;
UINT64 Type;
v5 = 0;
LODWORD(Type) = 0;
Data = 0;
ValueName.Buffer = L"Kernel-MemoryMirroringSupported";
*(_QWORD *)&ValueName.Length = 4194366i64;
LODWORD(ResultDataSize) = 4;
if( ZwQueryLicenseValue(&ValueName, &Type, &Data, 4ui64, &ResultDataSize) < 0 || Data != 1 )
return -1073741206;
v0 = *((_BYTE *)KeGetCurrentThread() + 562);
if( v0 && !SeSinglePrivilegeCheck(*(_QWORD *)&SeShutdownPrivilege, v0) )
return -1073741727;
if( (dword_140CFA184 & 1) == 0 )
return -1073741637;
v3[0] = (__int64)off_140C00AE0[0];
v3[1] = (__int64)off_140C00AE8[0];
v3[2] = (__int64)off_140C00AF0[0];
v3[3] = (unsigned __int64)off_140C00B00 & -(__int64)((dword_140CFA184 & 2) != 0);
v4 = 2;
return MmDuplicateMemory((__int64)v3);
}Referenced by:
NtSetSystemInformation