IoReplaceFileObjectName
NTSTATUS __stdcall IoReplaceFileObjectName(PFILE_OBJECT FileObject, PWSTR NewFileName, USHORT FileNameLength){
UINT64 v4;
wchar_t *Buffer;
unsigned __int16 v8;
USHORT v9;
wchar_t *PoolWithTag;
wchar_t *v11;
v4 = FileNameLength;
if( FileNameLength <= FileObject->FileName.MaximumLength )
{
LABEL_2:
Buffer = FileObject->FileName.Buffer;
FileObject->FileName.Length = v4;
memset((INT64)Buffer, 0i64);
memmove((UINT8 *)FileObject->FileName.Buffer, (UINT8 *)NewFileName, v4);
return 0;
}
v8 = 56;
if( FileNameLength >= 0x38u )
{
v8 = 120;
if( FileNameLength >= 0x78u )
{
v9 = 248;
if( FileNameLength >= 0xF8u )
v9 = FileNameLength;
v8 = v9;
}
}
PoolWithTag = (wchar_t *)ExAllocatePoolWithTag(PagedPool, v8, 0x6D4E6F49ui64);
if( PoolWithTag )
{
v11 = FileObject->FileName.Buffer;
if( v11 )
ExFreePoolWithTag(v11, 0);
FileObject->FileName.Buffer = PoolWithTag;
FileObject->FileName.MaximumLength = v8;
goto LABEL_2;
}
return -1073741670;
}Referenced by:
No references.