I see using mapped files as being flawed because this can interfere with other applications that want to communicate with mIRC at the same time.
CreateFileMapping can act as an inter-process synchronization primitive, it's just that noone bothers to check its return values. The problem here is with the current DLL coders, not with mIRC. However, that's why the lParam index value was added..
Using indexed file mappings is somehow better but that's still not unique.
It is good enough. If the return+error values from CreateFileMapping indicate that the mapping already existed, the trying process can close it, pick a different index and try again. This will eventually succeed as it's rather unlikely that all four billion possible file mapping indices are in use.
Some possible slutions fore a more reliable communication:
No matter how good the solution, it will never really work if the majority of mIRC DLL coders are people who can't read documentation. That is not directed at you by the way - 38 out of 40 DLLs I checked a few months ago, got their file mapping stuff wrong. The two others only got it half right.