I'm about to start work on a DLL project (part of our free downloads) and beforehand I decided to do a little research on the current situation ...
32bit:
A few years ago I discovered that initially it was intended that each "new DLL(...)" EFS statement, would create a separate instance of the DLL for each EFS. So each EFS would have it's own unique copy of the DLL data.
but there was a technical constraint outside the control of eSignal EFS ...
Each time a DLL object is created in EFS, internally ::LoadLibrary is called. This is a function of the Win32 SDK. LoadLibrary does create brand new copies of the DLL if it is called from two separate programs (aka processes). But if LoadLibrary is called multiple times in the same program (aka process, ie eSignal), then each call would be pointing to the same copy of the DLL being loaded. Therefore 2 or more charts using the same DLL could all be working on the same data potentially causing some confusion.
This problem was overcome using a DLL function to create a unique class instance and return a pointer to it that would be stored in the EFS. So any EFS DLL calls would include the pointer to make sure it was using data unique to the chart.
Can anyone enlighten me on the current 32bit and 64bit situation?
32bit:
A few years ago I discovered that initially it was intended that each "new DLL(...)" EFS statement, would create a separate instance of the DLL for each EFS. So each EFS would have it's own unique copy of the DLL data.
but there was a technical constraint outside the control of eSignal EFS ...
Each time a DLL object is created in EFS, internally ::LoadLibrary is called. This is a function of the Win32 SDK. LoadLibrary does create brand new copies of the DLL if it is called from two separate programs (aka processes). But if LoadLibrary is called multiple times in the same program (aka process, ie eSignal), then each call would be pointing to the same copy of the DLL being loaded. Therefore 2 or more charts using the same DLL could all be working on the same data potentially causing some confusion.
This problem was overcome using a DLL function to create a unique class instance and return a pointer to it that would be stored in the EFS. So any EFS DLL calls would include the pointer to make sure it was using data unique to the chart.
Can anyone enlighten me on the current 32bit and 64bit situation?
Comment