Subject: LARGE_INTEGER in w32API 0.1.5
From: "Kris Thielemans" <[email-masked]>
To: <[email-masked]>
Cc: "Gnuwin" <[email-masked]>
Date: Fri, 28 Jan 2000 12:17:42 -0000

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 [email-masked]