PopSetHiberFileType
INT64 __stdcall PopSetHiberFileType(UINT64 HiberFileType, UINT64 *HiberFileSize){
int v3;
UINT64 v4;
int v5;
WCHAR v6;
UINT64 DataSize;
struct _UNICODE_STRING DestinationString;
HANDLE KeyHandle;
UINT64 HiberFileSizea;
HiberFileSizea = 0i64;
KeyHandle = 0i64;
DestinationString = 0i64;
if( ((unsigned int)PopHiberFileSizePercent < 0x28 || (_DWORD)HiberFileType == 2)
&& (unsigned int)(HiberFileType - 1) <= 1 )
{
v3 = PopHiberFileType;
PopHiberFileType = HiberFileType;
PopCalculateHiberFileSize(&HiberFileSizea, 0i64);
v4 = HiberFileSizea;
v5 = PopValidateHiberFileSize(HiberFileSizea, 0i64);
if( v5 < 0
|| (v5 = PopOpenKey(&KeyHandle, (PWCHAR)L"Control\\Power", 0x20006ui64), v5 < 0)
|| (RtlInitUnicodeString(&DestinationString, L"HiberFileType", v6),
LODWORD(DataSize) = 4,
v5 = ZwSetValueKey(KeyHandle, &DestinationString, 0i64, 4ui64, &PopHiberFileType, DataSize),
ZwClose(KeyHandle),
v5 < 0) )
{
PopHiberFileType = v3;
}
else
{
PopHiberFileTypeReg = PopHiberFileType;
if( HiberFileSize )
*HiberFileSize = v4;
}
}
else
{
return(unsigned int)-1073741811;
}
return(unsigned int)v5;
}Referenced by:
NtPowerInformation
PopSetHiberFileSize