VmpDecodePreallocationRangeHandle
UINT64 __stdcall VmpDecodePreallocationRangeHandle(_DEVICE_OBJECT *LowerDeviceObject){
__int64 v1;
_QWORD *v2;
_QWORD *v3;
if( _InterlockedDecrement64((volatile signed __int64 *)&LowerDeviceObject->gap4D[3]) == -1 )
NT_ASSERT("NewCount != 0xffffffffffffffffui64");
v2 = (_QWORD *)(v1 ^ (unsigned __int64)LowerDeviceObject);
if( v2[2] != -1i64 )
NT_ASSERT("VaMemoryRange->VaTreeNode.ParentValue == 0xffffffffffffffffui64");
if( v2[3] )
NT_ASSERT("VaMemoryRange->StartVpn == 0");
if( v2[4] )
NT_ASSERT("VaMemoryRange->LastVpn == 0");
v3 = (_QWORD *)v2[5];
if( v3 == v2 + 5 )
NT_ASSERT("IsListEmpty(&VaMemoryRange->GpaRangeList) == 0");
if( (_QWORD *)*v3 != v2 + 5 )
NT_ASSERT("VaMemoryRange->GpaRangeList.Flink->Flink == &VaMemoryRange->GpaRangeList");
return(UINT64)v2;
}Referenced by:
VmCreateMemoryRange
VmFreePreallocationForRangeCreate