This is the mail archive of the cygwin@sourceware.cygnus.com mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

LARGE_INTEGER in w32API 0.1.5


Hi

I'm having problems with LARGE_INTEGER (defined in winnt.h). Via the cygwin
mailing list I found out that in the distributed W32 API, LARGE_INTEGER and
LONGLONG are flawed. Mumit advised to download your w32api 0.1.5 which I
did. However, even
there, the LARGE_INTEGER is not compatible with Microsoft's. The following
code does not work:

LARGE_INTEGER a;
DWORD b = a.LowPart;

instead, we have to use
DWORD b = a.u.LowPart;

This fits (of course) with your definition

typedef union _LARGE_INTEGER {
	struct {
		DWORD LowPart;
		LONG HighPart;
	}_STRUCT_NAME(u);
	LONGLONG QuadPart;
} LARGE_INTEGER,*PLARGE_INTEGER;

compared to Visual C++ 5.0 (an extra struct in the union):

 #if defined(MIDL_PASS)
 typedef struct _LARGE_INTEGER {
 #else // MIDL_PASS
 typedef union _LARGE_INTEGER {
     struct {
         DWORD LowPart;
         LONG HighPart;
     };
     struct {
         DWORD LowPart;
         LONG HighPart;
     } u;
 #endif //MIDL_PASS
     LONGLONG QuadPart;
 } LARGE_INTEGER;



Thanks for providng the API !

Kris

PS :
for cygwin people. This API can be found on
http://www.acc.umu.se/~anorland/gnu-win32/

The standard distribution defines LONGLONG as double, and
typedef struct _LARGE_INTEGER
 {
   DWORD LowPart;
  LONG  HighPart;
 } LARGE_INTEGER, *PLARGE_INTEGER;



--
Want to unsubscribe from this list?
Send a message to cygwin-unsubscribe@sourceware.cygnus.com


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]