Hello, I am new to the list and my interests are using PCSClite on a wide
variety of hardware.
The two issues I would like to raise are:
(a) Use of DWORD/LONG data types on 64bit systems. The DWORD type originates
way before 16bit windows, and was even used in Intel's PLM language to define a
32 bit quantity, Windows maintained this, and even though they limited the size
of "long" on 64bit systems to 32bit, the definition of DWORD is 32bits, not the
size of an unsigned long. For comparison go back to the OLE32 implementation on
the DEC Alpha and you will find DWORD being defined in "cooldefs.h" as a 32 bit
quantity. Both MacOSX and Solaris have now updated their headers to make
pcsclite.h and winscard.h use uint32_t or equivalents. My intermediate solution
has been to
a. Disable PCSC/wintypes.h by definining __wintypes_h__ before-hand.
b. #define DWORD to a different type before the inclusion of winscard.h
then #undef DWORD afterwards.
This does not break binary compatibility, but requires special types when using
calling SCard* APIs. If the intent is to mimic windows types in wintypes.h then
it should maintain size compatibility, else types like GUID which contain a
DWORD break.
(b) Use of #include <pcsclite.h> within "PCSC/winscard.h" should be changed to
#include <PCSC/pcsclite.h> otherwise /usr/include/PCSC is required as part of
the include path.
I'm sure we can come up with a common solution that does not break existing
64bit binaries on Linux, (Solaris and MacOSX are already consistent).
_______________________________________________
Muscle mailing list
[email protected]
http://lists.drizzle.com/mailman/listinfo/muscle