PpBootDDBHelper
NTSTATUS __stdcall PpBootDDBHelper(VOID *Src, size_t Size){
VOID ***v2;
_QWORD *v3;
_QWORD *v4;
VOID ***v5;
VOID **PoolWithTag;
VOID **v9;
INT64 v10;
VOID *inited;
_UNICODE_STRING DestinationString[2];
*v2 = 0i64;
v4 = v3;
*v3 = 0i64;
v5 = v2;
if( !Size || !Src )
{
if( (PiLoggedErrorEventsMask & 1) == 0 )
PiLoggedErrorEventsMask |= 1u;
return -1073741823;
}
PoolWithTag = ExAllocatePoolWithTag(1ui64, Size, 538996816i64);
v9 = PoolWithTag;
if( PoolWithTag )
{
memmove(PoolWithTag, Src, Size);
inited = SdbInitDatabaseInMemory(v9, Size, v10);
if( inited )
{
*v5 = v9;
*v4 = inited;
return 0;
}
ExFreePoolWithTag(v9, 0);
if( (PiLoggedErrorEventsMask & 4) == 0 )
{
PiLoggedErrorEventsMask |= 4u;
DestinationString[0] = 0i64;
RtlInitUnicodeString(DestinationString, L"INIT DATABASE FAILED");
PnpLogEvent((const VOID **)DestinationString, 0i64, -1073740947, 0i64, 0);
}
return -1073741823;
}
if( (PiLoggedErrorEventsMask & 2) == 0 )
{
PiLoggedErrorEventsMask |= 2u;
DestinationString[0] = 0i64;
RtlInitUnicodeString(DestinationString, L"OUT OF MEMORY");
PnpLogEvent((const VOID **)DestinationString, 0i64, -1073740947, 0i64, 0);
}
return -1073741670;
}Referenced by:
PpInitializeBootDDB