PopSanityCheckHiberFile
NTSTATUS __stdcall PopSanityCheckHiberFile(
VOID *FileHandle,
_FILE_OBJECT *FileObject,
_LARGE_INTEGER *FileSize,
_LARGE_INTEGER **Mcb,
UINT64 *McbSize){
int Status;
LONGLONG v9;
__int64 v10;
_LARGE_INTEGER v11;
_LARGE_INTEGER *v13;
_IO_STATUS_BLOCK v14;
v13 = 0i64;
v14 = 0i64;
Status = ZwFsControlFile((_HANDLE)FileHandle, 0, 0i64, 0i64, &v14, 0x9003Bu, FileSize, 8u, &v13, 8u);
if( Status == 259 )
{
KeWaitForSingleObject((UINT64)&FileObject->gap80[24], 0, 0, 0, 0i64);
Status = v14.Status;
}
if( Status >= 0 )
{
v9 = 0i64;
LODWORD(v10) = 0;
if( v13->QuadPart )
{
v11 = *v13;
do
{
v9 += v11.QuadPart;
if( v13[(unsigned int)(v10 + 1)].anonymous_0.HighPart < 0 )
return -1073741823;
v10 = (unsigned int)(v10 + 2);
v11 = v13[v10];
}
while( v11.QuadPart );
}
if( v9 < FileSize->QuadPart )
return -1073741823;
*Mcb = v13;
*(_DWORD *)McbSize = 8 * v10 + 16;
}
return Status;
}Referenced by:
PopResizeHiberFile