64bit values in API args...

Vincent Béron vberon at mecano.gme.usherb.ca
Thu May 16 21:26:25 CDT 2002


I have a little problem implementing VerifyVersionInfo{A,W}. Here's the
prototype of the function (W):

BOOL WINAPI VerifyVersionInfoW( LPOSVERSIONINFOEXW lpVersionInfo, DWORD
dwTypeMask, DWORDLONG dwlConditionMask)

with DWORDLONG being a 64bit value. Now, how do I translate that in
kernel32.spec? The current declaration in kernel32.spec is

@ stdcall VerifyVersionInfoW(long long long long) VerifyVersionInfoW

with either a try to get a "long long" type (undistinguishable from 2
longs), or by just assuming a virtual fourth argument to get the right
total argument size. Now, this seems really fishy. I'm not very familiar
with the way a C compiler places arguments either in registers or on the
stack, but I'm not sure the way it is currently declared is the best way
to do it. I'd prefer to define a new type for use in spec files, meaning
a 64bit argument. Comments?

BTW, for the moment VerifyVersionInfo seems to be the only place in Wine
where the DWORDLONG type is used, but that doesn't mean there are no
other unimplemented API using it.

Vincent



More information about the wine-devel mailing list