MiInitializeHugePfnDatabase
NTSTATUS __stdcall MiInitializeHugePfnDatabase(){
unsigned __int64 OldIrql;
void *Pool;
NTSTATUS result;
VOID *v3;
_KLOCK_QUEUE_HANDLE LockHandle;
memset(&LockHandle, 0, sizeof(LockHandle));
KeAcquireInStackQueuedSpinLock((PKSPIN_LOCK)&stru_140C4DB30 + 274, &LockHandle);
if( *(&stru_140C4DB30 + 272) )
{
KeReleaseInStackQueuedSpinLockFromDpcLevel(&LockHandle);
OldIrql = LockHandle.OldIrql;
LABEL_8:
result = 1;
goto LABEL_9;
}
Pool = MiAllocatePool(64i64, 0x8000ui64, 0x7048694Dui64);
if( Pool )
{
v3 = MiAllocatePool(64i64, 0x200000ui64, 0x7048694Dui64);
if( !v3 )
{
KeReleaseInStackQueuedSpinLockFromDpcLevel(&LockHandle);
__writecr8(LockHandle.OldIrql);
ExFreePoolWithTag(Pool, 0);
return 0;
}
*(&stru_140C4DB30 + 270) = 0x40000i64;
*(&stru_140C4DB30 + 271) = Pool;
*(&stru_140C4DB30 + 272) = v3;
KeReleaseInStackQueuedSpinLockFromDpcLevel(&LockHandle);
OldIrql = LockHandle.OldIrql;
goto LABEL_8;
}
KeReleaseInStackQueuedSpinLockFromDpcLevel(&LockHandle);
OldIrql = LockHandle.OldIrql;
result = 0;
LABEL_9:
__writecr8(OldIrql);
return result;
}Referenced by:
MiHotAddHugeRange