PopBcdSetupResumeObject
NTSTATUS __stdcall PopBcdSetupResumeObject(VOID *ResumeObjectHandle){
size_t v2;
VOID **PoolWithTag;
_DWORD *v4;
VOID *v5;
int v6;
VOID *v7;
UINT64 DataSize;
UINT64 DataSizea;
_UNICODE_STRING DestinationString;
v2 = PoHiberFileRoot.Length + 22;
DestinationString = 0i64;
PoolWithTag = ExAllocatePoolWithTag(1ui64, v2, 1684226640i64);
v4 = PoolWithTag;
if( !PoolWithTag )
return -1073741670;
memset(PoolWithTag, 0i64, v2);
*v4 = 2;
memmove(v4 + 5, PoHiberFileRoot.Buffer, PoHiberFileRoot.Length);
LODWORD(DataSize) = v2;
v6 = BcdSetElementDataWithFlags(ResumeObjectHandle, 0x21000001ui64, v5, v4, DataSize);
if( v6 >= 0 )
{
RtlInitUnicodeString(&DestinationString, L"\\hiberfil.sys");
LODWORD(DataSizea) = DestinationString.Length + 2;
v6 = BcdSetElementDataWithFlags(ResumeObjectHandle, 0x22000002ui64, v7, DestinationString.Buffer, DataSizea);
}
ExFreePoolWithTag(v4, 0);
return v6;
}Referenced by:
PopBcdSetDefaultResumeObjectElements
PopBcdSetPendingResume