IoReplaceFileObjectName
NTSTATUS __stdcall IoReplaceFileObjectName(_FILE_OBJECT *FileObject, WCHAR *NewFileName, UINT16 FileNameLength){
UINT16 MaximumLength;
size_t v5;
wchar_t *Buffer;
UINT16 v9;
VOID **PoolWithTag;
wchar_t *v11;
MaximumLength = FileObject->FileName.MaximumLength;
v5 = FileNameLength;
if( FileNameLength <= MaximumLength )
{
LABEL_2:
Buffer = FileObject->FileName.Buffer;
FileObject->FileName.Length = v5;
memset(Buffer, 0i64, MaximumLength);
memmove(FileObject->FileName.Buffer, NewFileName, v5);
return 0;
}
MaximumLength = 56;
if( FileNameLength >= 0x38u )
{
MaximumLength = 120;
if( FileNameLength >= 0x78u )
{
v9 = 248;
if( FileNameLength >= 0xF8u )
v9 = FileNameLength;
MaximumLength = v9;
}
}
PoolWithTag = ExAllocatePoolWithTag(1ui64, MaximumLength, 1833856841i64);
if( PoolWithTag )
{
v11 = FileObject->FileName.Buffer;
if( v11 )
ExFreePoolWithTag(v11, 0);
FileObject->FileName.Buffer = (wchar_t *)PoolWithTag;
FileObject->FileName.MaximumLength = MaximumLength;
goto LABEL_2;
}
return -1073741670;
}Referenced by:
No references.