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.