To clarify with an example. At Saturn's website, his sha2.dll can hash a large filename like:
//echo -a $dll(sha2.dll,sha224,reallybigfilename)
and the 'return 3' answer can be stored in a variable or echoed. However, it can freeze mIRC's focus when the filesize is very large.
The description for $dllcall makes it seem like you can have the dll work in the background and report the answer to the alias when finished.
//echo -a nothing on this line $dllcall(sha2.dll,echo 4,sha224,0 abc)
Instead, this shows the dll's full pathname\filename in red, but returns no other info.
Perhaps a 4th parameter to allow the normal 'return 3' output to be filled instead into a binvar similar to the way regsubex does
$dll(filename,procname,[datastring],[&binvar]) would return $null and instead fill the binvar.
$dllcall(filename,alias,procname,datastring,[&binvar])
... could maintain backwards compat by continuing to return $1- to the alias filled with the path\filename, but the presence of the &binvar parameters could make it give the alias' context a &binvar containing the 'return 3' string instead of discarding it.