MiRetryNonPagedAllocation
VOID __fastcall MiRetryNonPagedAllocation(){
_BYTE *v0;
CHAR v1;
char v2;
const _LARGE_INTEGER *v3;
NTSTATUS i;
_KLOCK_QUEUE_HANDLE LockHandle;
memset(&LockHandle, 0, sizeof(LockHandle));
if( KeGetCurrentIrql() <= 1u && (KeGetPcr()->Prcb._bf_0 & 0x10001) == 0 )
{
KeAreInterruptsEnabled(v1, v0);
if( v2 )
{
if( (*(_DWORD *)&KeGetCurrentThread()[1].gapD8[12] & 2) == 0
&& !MiSufficientAvailablePages((INT64)&Irp, 0xA0ui64) )
{
v3 = &Mi30Milliseconds;
for( i = 1; ; i = KeWaitForSingleObject((UINT64)&stru_140C50B28 + 4864, 8, 0, 0, (INT64)v3) )
{
KeAcquireInStackQueuedSpinLock((PKSPIN_LOCK)&stru_140C50B28 + 603, &LockHandle);
if( MiSufficientAvailablePages((INT64)&Irp, 0xA0ui64) )
break;
if( i == 1 )
{
if( byte_140C4C624 == 1 )
{
if( dword_140C4C620 == *(&stru_140C50B28 + 1222) )
goto LABEL_21;
byte_140C4C624 = 0;
}
}
else
{
if( i == 258 )
{
if( !byte_140C4C624 )
{
dword_140C4C620 = *(&stru_140C50B28 + 1222);
byte_140C4C624 = 1;
}
goto LABEL_21;
}
v3 = &Mi10Milliseconds;
}
KeResetEvent((_KEVENT *)((char *)&stru_140C50B28 + 4864));
KeReleaseInStackQueuedSpinLockFromDpcLevel(&LockHandle);
__writecr8(LockHandle.OldIrql);
}
if( byte_140C4C624 == 1 )
byte_140C4C624 = 0;
LABEL_21:
KeReleaseInStackQueuedSpinLockFromDpcLevel(&LockHandle);
__writecr8(LockHandle.OldIrql);
}
}
}
}Referenced by:
MiGetPoolPages