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

Reply via email to