RtlpProbeUserBufferSafe
_HEAP_ENTRY *__stdcall RtlpProbeUserBufferSafe(_HEAP *Heap, VOID *BaseAddress){
_HEAP_ENTRY *v2;
VOID *v3;
_HEAP *v4;
_HEAP_FAILURE_TYPE v5;
if( ((unsigned __int8)BaseAddress & 0xF) != 0 )
{
v3 = BaseAddress;
v4 = Heap;
v5 = heap_failure_invalid_argument;
goto LABEL_7;
}
v2 = (_HEAP_ENTRY *)((char *)BaseAddress - 16);
_m_prefetchw(v2);
if( v2->UnpackedEntry.UnusedBytes == 5 )
v2 -= v2->UnpackedEntry.SegmentOffset;
if( (v2->UnpackedEntry.UnusedBytes & 0x3F) == 0 )
{
v3 = v2;
v4 = Heap;
v5 = heap_failure_block_not_busy;
LABEL_7:
RtlpLogHeapFailure(v5, v4, v3, 0i64, 0i64);
return 0i64;
}
return v2;
}Referenced by:
RtlpFreeHeapInternal
RtlpSizeHeapInternal