MmZeroPageWrite
NTSTATUS __stdcall MmZeroPageWrite(
FILE_OBJECT *FileObject,
LARGE_INTEGER *FileOffset,
LARGE_INTEGER *LargeNumberOfBytes,
UINT64 MaximumWriteSize){
LONGLONG QuadPart;
NTSTATUS v5;
unsigned int v6;
NTSTATUS result;
int v10;
QuadPart = LargeNumberOfBytes->QuadPart;
v5 = 0;
v6 = MaximumWriteSize;
if( HIDWORD(LargeNumberOfBytes->QuadPart) )
{
LABEL_5:
v10 = 0;
while( 1 )
{
LOBYTE(result) = MiZeroPageWrite((_KPRCB *)FileObject, (_KWAIT_BLOCK *)FileOffset, 0x40000000i64, (_KTHREAD **)v6);
v5 = result;
if( result < 0 )
break;
QuadPart -= 0x40000000i64;
if( (unsigned int)++v10 >= 4 )
{
if( HIDWORD(QuadPart) )
goto LABEL_5;
goto LABEL_2;
}
}
}
else
{
LABEL_2:
if( !(_DWORD)QuadPart )
return v5;
LOBYTE(result) = MiZeroPageWrite(
(_KPRCB *)FileObject,
(_KWAIT_BLOCK *)FileOffset,
(unsigned int)QuadPart,
(_KTHREAD **)v6);
v5 = result;
if( result >= 0 )
return v5;
}
return result;
}Referenced by:
CcZeroDataOnDisk
MiZeroPageFile
PopZeroHiberFile