This post aims to clarify some issues regarding compatibility between
various ubCore versions. Several clients had questions and fears about
compatibility issues thus a clear explanation is due.
DEFINITION: What is ubCore?
ubCore is comprised by a set of device drivers and a DLL.
The device drivers are:
(*) UBOHCI.SYS (OHCI Miniport Driver)
(*) UB1394.SYS (1394 Class Driver)
(*) UBSBM.SYS (Serial Bus Manager Driver)
(*) UBUMAPI.SYS (User Mode API Support Driver)
(*) UBFWET.SYS (FireNet Driver)
(*) UBSBP2.SYS (SBP2 Driver)
(*) UBDCAM.SYS (IIDC Digital Camera Driver)
The DLL is UB1394.DLL
UB1394.DLL is part of ubCore and you should treat it as such. You
should treat it exactly the same as you treat the rest of the drivers.
This means YOU CAN'T REDISTRIBUTE UB1394.DLL with your application.
END OF DEFINITION
With that said, let's discuss compatibility issues.
ubCore presents 2 interfaces to the outside world:
(1) The User Mode FireAPI interface.
(2) The Kernel Mode FireAPI interface.
For the time being Unibrain seems to be the only user of the Kernel
FireAPI interface so we won't discuss it's compatibility issues here.
The User Mode FireAPI interface is what gets exposed by UB1394.DLL.
The User Mode FireAPI interface is and will always be BACKWARDS
compatible on both the BINARY and SOURCE level.
This means that applications compiled with previous versions of the
FireAPI SDK which worked successfully with older versions of ubCore
will run without problems on the latest version of ubCore. There is no
need to recompile the application (binary compatibility). If you choose
to recompile with the latest FireAPI SDK the source code should compile
with no changes (source compatibility).
If you try the above and have problems then let us know and if it's a
compatibility bug we will fix it asap.
The official FireAPI interfaces that ubCore exposes are the so called
EXTERNAL interfaces. So external FireAPI interfaces are guaranteed to
stay binary and source compatible.
However apart from the external interfaces, ubCore also has internal
interfaces. Internal interfaces are the interfaces used by the various
ubCore components when they talk to each other. Internal interface are
SUBJECT TO CHANGE WITHOUT NOTICE.
Having said that, the interface between UB1394.DLL and UBUMAPI.SYS is
an internal interface and is subject to change without notice. Thus you
CAN'T and SHOULDN'T redistribute UB1394.DLL with your application.
Similarly the interface between UBUMAPI.SYS and UB1394.SYS is an
internal interface and (guess what) is also subject to change without
notice. This means that you can use an older version of UBUMAPI.SYS
with the latest ubCore.
I believe that all the above are pretty clear. In case you have any
questions whatsoever please direct them to sup...@unibrain.com.
Warm Regards,
Dimitris Staikos
Unibrain