MiFormFullImageName

UINT64 __stdcall MiFormFullImageName(
        UNICODE_STRING *ImageFileDirectory,
        UNICODE_STRING *ImageFileName,
        UNICODE_STRING *FullImageName){
  wchar_t *v6; 
  int appended; 
  wchar_t *Buffer; 
  FullImageName->MaximumLength = ImageFileName->Length + 2 + ImageFileDirectory->Length;
  LODWORD(v6) = MiAllocatePool((struct _SLIST_ENTRY *)0x100);
  FullImageName->Buffer = v6;
  if( v6 )
  {
    FullImageName->Length = ImageFileDirectory->Length;
    memmove((UINT8 *)v6, (UINT8 *)ImageFileDirectory->Buffer, ImageFileDirectory->Length);
    appended = RtlAppendStringToString((_STRING *)FullImageName, (const _STRING *)ImageFileName);
    Buffer = FullImageName->Buffer;
    if( appended >= 0 )
    {
      Buffer[(unsigned __int64)FullImageName->Length >> 1] = 0;
      return 1i64;
    }
    ExFreePoolWithTag(Buffer, 0);
  }
  return 0i64;
}

Referenced by:

MiResolveImageReferences