by SVMirador » Sat Jun 21, 2008 6:06 pm
YES - I did receive a reply from Abacus - they are trying to be helpful and have been prompt in their replies but I guess I am in a unique situation?? FSX lives on a RAID array and VISTA on a separate drive.
How did you know Abacus responded to me???
Here are some of the details:
From Abacus:
I am out of suggestions. There is a spot in the Registry that hold the registration information but we're not even sure where it is - that apparently prevents us from telling people how to re-set the trial period...
Anyway, I'll contact the author and see what he says on this. I can say that your setup is a-typical and has not be tested by us or the author ;+}
If he gets a new version, we may be interested in using you as a guinea pig though ;+}
My response (that I have not yet sent since I am still doing research):
When I use PE Explorer to analyze AbacusPremierCollectionFSX.dll I find all dependencies are met and there appear to be no errors in the dll. I do note that it wants simconnect 10.0.60905.0 and the version I am using is 10.0.61637.0 but since that is a build change it should be compatible.
When I try to load AbacusPremierCollectionFSX.dll from G:\Windows\System32 (I copied it there manually) using the VISTA command line regsvr32 (run as administrator) I receive an error message "The module "AbacusPremierCollectionFSX.dll" failed to load. Make sure the binary is stored at the specific path or debug it to check for problems with the binary or dependent .DLL files. The referenced assembly is not installed on your system."
I know the AbacusPremierCollectionFSX.dll is in the folder because I do a dir abacus*.dll and see the file info
When I run from the VISTA Start/Run process (as an adminstrator) I Browse to the System32 folder and select the AbacusPremierCollectionFSX.dll and then execute regsvr32 against it - same result.
I then tried another approach - I used the RemoteDLL injector. I tested it with FSUIPC and was able to succesfully inject FSUIPC4.DLL in the the FSX.exe process. When I tried the same procedure with AbacusPremierCollectionFSX.dll I saw the messages:
"Load LibraryA on remote process failed with error: 87
Here is what MSDN says about error87:
"A dynamic-link library (DLL) uses __declspec(thread) to allocate static thread local storage (TLS). There are no problems associated with running an application that is linked with the corresponding static library. However, when an application uses the LoadLibrary function to load the DLL instead of using the static version, LoadLibrary fails on Win32s with an error code 87: invalid parameter.
LoadLibrary succeeds on a computer that is running Windows 98, Windows NT, or Windows 2000 in this situation. However, the behavior of calling functions in the DLL that reference static TLS variables is undefined. On Microsoft Windows 95, LoadLibrary fails and the GetLastError function returns 1114 - ERROR_DLL_INIT_FAILED (A dynamic link library initialization routine failed). On Windows 2000, the LoadLibrary function succeeds. However, any attempt to access the TLS data causes an access violation (AV).
CAUSE
This is a limitation of LoadLibrary and __declspec. The global variable space for a thread is allocated at run time. The size is based on a calculation of the requirements of the application plus the requirements of all of the libraries that are statically linked. If a DLL uses static TLS and is dynamic-linked in an application, when LoadLibrary or FreeLibrary is called, the system must find all the threads that exist in the process and enlarge or compact their TLS memory according to the size of static TLS in the newly loaded DLL. This process is too much for operating systems to manage, which can cause an exception either when the DLL is dynamically loaded or code references the data.
RESOLUTION
DLLs that use __declspec(thread) should not be loaded with LoadLibrary.
The DLL code should be modified to use such TLS functions as TlsAlloc, and to allocate TLS if the DLL might be loaded with LoadLibrary. Or, the DLL that is using __declspec(thread) should only be implicitly loaded into the application."
Everything I see says there is no problem with the dll - yet I get load errors from two different loaders and I can verify that FSX does not load the dll.
I have reviewed all the UAC and security logs and there is no mention of a problem. I have NO/ZERO/Absolutely NONE security on this system. UAC is turn off and there is no security running as far as I can tell.
Any suggestions on how to get more details about the load error would be appreciated.