PopBcdReadElement
NTSTATUS __stdcall PopBcdReadElement(VOID *ObjectHandle, UINT64 ElementType, VOID **BufferOut, UINT64 *BufferSizeOut){
unsigned int v6;
VOID **PoolWithTag;
VOID *v9;
int ElementDataWithFlags;
UINT64 NumberOfBytes[3];
LODWORD(NumberOfBytes[0]) = 0;
v6 = ElementType;
if( BcdGetElementDataWithFlags(ObjectHandle, ElementType, BufferOut, 0i64, NumberOfBytes) != -1073741789 )
return -1073741275;
PoolWithTag = ExAllocatePoolWithTag(1ui64, LODWORD(NumberOfBytes[0]), 1684226640i64);
if( !PoolWithTag )
return -1073741670;
ElementDataWithFlags = BcdGetElementDataWithFlags(ObjectHandle, v6, v9, PoolWithTag, NumberOfBytes);
if( ElementDataWithFlags < 0 )
{
ExFreePoolWithTag(PoolWithTag, 0);
}
else
{
ElementDataWithFlags = 0;
*(_DWORD *)BufferSizeOut = NumberOfBytes[0];
*BufferOut = PoolWithTag;
}
return ElementDataWithFlags;
}Referenced by:
PopBcdRegenerateResumeObject
PopBcdSetDefaultResumeObjectElements