- Thread starter
- #11
FireDTV Remote does not work on VISTA x64
Mhhh... I think that Digital Everywhere itself loads the FiresatApi.dll
inside its FireDTVViewer.exe (why duplicating code, in fact) and the
FireDTV Remote control works fine with the FireDTVViewer.exe in my
system (64 bit environment).
So, there must be something else.
I had a look to the Mediaportal source code and I found something interesting:
- first:
this was my first log pointed out by chemelli:
I found that the following code (FireSATControl.cs at Ln64)
in Vista 64 bit fails because the FireDTV 5.3 beta drivers install themselves under the
default "C:\Program Files" directory (default for every 64 bit full compatible software)
while Mediaportal installs itself under the default "C:\Program Files (x86)" dir.
In fact after having copied the FiresatAPI.dll in the Mediaportal install dir my log
changed as follows:
Other issue but the dll has been found.
Last observation, the FiresatAPI.dll original dir is also provided in the path environment variable.
- second:
Spying the FiresatAPI.dll functions entry points and comparing them (the decorations of their names)
with them used in the "DLLImport" calls in FireSATDefines.cs, I found differences.
I.e:
- FireSATDefines.cs:
EntryPoint = "?FS_RegisterGeneralNotifications@@YAKPAUHWND__@@@Z"
- FiresatAPI.dll:
EntryPoint = "?FS_RegisterGeneralNotifications@@YAKPEAUHWND__@@@Z"
Many others differs by many more characters.
Is this perhaps due to the fact that I have the latest FiresatAPI.dll (FireDTV 5.3 beta drivers)
installed while the FireSATDefines.cs code refers to a previous dll version?
Anyway, by now I could not go ahead with deeper test because of my development
environment (I guess): I installed Visual Studio 2008 in my Vista 64 bit (I have only
VS 2008 and 2003 to install, not 2005) and downloaded the latest codes with svn. The problem
is that in the same machine I also have the original installation of MP and TVserver so
the exe that I compile with VS 2008 crashed due to a dll version conflict problem
(i.e. bass.dll version).
Under VS in debugging mode (F5) the run time goes but I cannot (I donno why yet)
step into some code (set active breackpoints) to see what really happens (need more time to tune the system up).
Anyway I hope my feedback will be useful to point out the right holes.
Bye
maybe this dll doesn't like to be loaded in a x64
env.
Mhhh... I think that Digital Everywhere itself loads the FiresatApi.dll
inside its FireDTVViewer.exe (why duplicating code, in fact) and the
FireDTV Remote control works fine with the FireDTVViewer.exe in my
system (64 bit environment).
So, there must be something else.
I had a look to the Mediaportal source code and I found something interesting:
- first:
this was my first log pointed out by chemelli:
2009-02-04 00.21.43.451544 [Info.][Config Main]: FireDTV: FiresatApi.dll could not be found on your system!
2009-02-04 00.21.43.451544 [ERROR][Config Main]: FireDTV: FiresatApi.dll could not be found on your system!
I found that the following code (FireSATControl.cs at Ln64)
Code:
// First try in MediaPortal's base directory
string fullDllPath = Config.GetFile(Config.Dir.Base, "FiresatApi.dll");
if (File.Exists(fullDllPath))
{
Log.Info("FireDTV: Using FiresatApi.dll located in MediaPortal's base dir {0}", fullDllPath);
}
else
{
// Look for Digital Everywhere's software which uses a hardcoded path
fullDllPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles),
@"FireDTV\Tools\FiresatApi.dll");
if (File.Exists(fullDllPath))
{
Log.Info("FireDTV: Using FiresatApi.dll located in FireDTV's install path {0}", fullDllPath);
}
else
{
Log.Error("FireDTV: FiresatApi.dll could not be found on your system!");
return;
}
}
in Vista 64 bit fails because the FireDTV 5.3 beta drivers install themselves under the
default "C:\Program Files" directory (default for every 64 bit full compatible software)
while Mediaportal installs itself under the default "C:\Program Files (x86)" dir.
In fact after having copied the FiresatAPI.dll in the Mediaportal install dir my log
changed as follows:
Code:
2009-02-08 23.45.02.446822 [Info.][Config Main]: FireDTV: Using FiresatApi.dll located in MediaPortal's base dir C:\Program Files (x86)\Team MediaPortal\MediaPortal\FiresatApi.dll
2009-02-08 23.45.02.462422 [Info.][Config Main]: FireDTV: error initializing Tentativo di caricare un programma con un formato non corretto. (Eccezione da HRESULT: 0x8007000B)
2009-02-08 23.45.02.462422 [ERROR][Config Main]: FireDTV: error initializing Tentativo di caricare un programma con un formato non corretto. (Eccezione da HRESULT: 0x8007000B)
Other issue but the dll has been found.
Last observation, the FiresatAPI.dll original dir is also provided in the path environment variable.
- second:
Spying the FiresatAPI.dll functions entry points and comparing them (the decorations of their names)
with them used in the "DLLImport" calls in FireSATDefines.cs, I found differences.
I.e:
- FireSATDefines.cs:
EntryPoint = "?FS_RegisterGeneralNotifications@@YAKPAUHWND__@@@Z"
- FiresatAPI.dll:
EntryPoint = "?FS_RegisterGeneralNotifications@@YAKPEAUHWND__@@@Z"
Many others differs by many more characters.
Is this perhaps due to the fact that I have the latest FiresatAPI.dll (FireDTV 5.3 beta drivers)
installed while the FireSATDefines.cs code refers to a previous dll version?
Anyway, by now I could not go ahead with deeper test because of my development
environment (I guess): I installed Visual Studio 2008 in my Vista 64 bit (I have only
VS 2008 and 2003 to install, not 2005) and downloaded the latest codes with svn. The problem
is that in the same machine I also have the original installation of MP and TVserver so
the exe that I compile with VS 2008 crashed due to a dll version conflict problem
(i.e. bass.dll version).
Under VS in debugging mode (F5) the run time goes but I cannot (I donno why yet)
step into some code (set active breackpoints) to see what really happens (need more time to tune the system up).
Anyway I hope my feedback will be useful to point out the right holes.
Bye