There is some pretty heavy-duty stuff going on in InitializeCryptoBuffers, using a subset of the available threadpool APIs. I am nothing like as well-read on this subject as I would like to be but I suspect that
Code: Select all
WaitForThreadpoolWorkCallbacks(Work0,FALSE)
WaitForThreadpoolWorkCallbacks(Work0plus,FALSE)
dislike being in a Constructor environment. There again it may be something else.
On a side note, at the very beginning of InitializeCryptoBuffers, before any of the exported procedures, I inserted ' Print "I'm here" '. "I'm here" got printed followed by the execution of an exported Function. So, dlls, without Constructor/Destructor, are not passive modules as I thought they were. At least they are not passive in FreeBASIC, I am not sure I could get a PowerBASIC dll to print anything by just inserting a statement. The entry point to exes and dlls are different at the source level for PowerBASIC and FreeBASIC although, ultimately, they will be the same on compiling.