PopSetHiberFileType
NTSTATUS __stdcall PopSetHiberFileType(UINT64 HiberFileType, UINT64 *HiberFileSize){
int v3;
UINT64 v4;
INT64 v5;
int v6;
VOID *Data;
INT64 DataSize;
UINT64 DataSizea;
_UNICODE_STRING DestinationString[2];
VOID *Handle;
UINT64 HiberFileSizea;
HiberFileSizea = 0i64;
Handle = 0i64;
DestinationString[0] = 0i64;
if( (unsigned int)PopHiberFileSizePercent >= 0x28 && (_DWORD)HiberFileType != 2
|| (unsigned int)(HiberFileType - 1) > 1 )
{
return -1073741811;
}
v3 = PopHiberFileType;
PopHiberFileType = HiberFileType;
PopCalculateHiberFileSize(&HiberFileSizea, 0i64);
v4 = HiberFileSizea;
v6 = PopValidateHiberFileSize(
HiberFileSizea,
0i64,
0i64,
v5,
(INT64)Data,
DataSize,
*(INT64 *)&DestinationString[0].Length,
(INT64)DestinationString[0].Buffer);
if( v6 < 0
|| (v6 = PopOpenKey(&Handle, (WCHAR *)L"Control\\Power", 0x20006ui64), v6 < 0)
|| (RtlInitUnicodeString(DestinationString, L"HiberFileType"),
LODWORD(DataSizea) = 4,
v6 = ZwSetValueKey(Handle, DestinationString, 0i64, 4ui64, &PopHiberFileType, DataSizea),
ZwClose((_HANDLE)Handle),
v6 < 0) )
{
PopHiberFileType = v3;
}
else
{
PopHiberFileTypeReg = PopHiberFileType;
if( HiberFileSize )
*HiberFileSize = v4;
}
return v6;
}Referenced by:
NtPowerInformation
PopSetHiberFileSize