I agree we should probably just fix the headers to say cdecl and change the import lib accordingly. Wine does the same thing. Windows's latest headers and import lib still have only the fastcall version, but I don't think that needs to bother us.
On 2014-10-16 12:19, Hermès BÉLUSCA - MAÏTO wrote: > How is this function really exported *and* used through windows? > > -----Message d'origine----- > De : Ros-dev [mailto:ros-dev-boun...@reactos.org] De la part de Timo Kreuzer > Envoyé : mercredi 15 octobre 2014 21:45 > À : ReactOS Development List > Objet : Re: [ros-dev] [ros-diffs] [tfaber] 64749: [PSDK] - Use macro version > of RtlUlonglongByteSwap in winternl.h because using the fastcall version > causes stack corruption CORE-8632 #resolve > > > What I really wonder: since the function behaves like cdecl, why does wine > declare it as fastcall? Or is this also our own hack, because the function > has fastcall symbols and it's declared as fastcall in wdm.h for compilers > with _MSC_FULL_VER <= 13009037? > IMO we should remove all traces of it being fastcall and simply declare it > as cdecl. There is no reason to reproduce MS header bugs. > And we should probably also kill the asm file for it. There is no need for > it. > > Am 15.10.2014 19:11, schrieb Thomas Faber: >> It's there for Wine compatibility. Things we would put in NDK, they >> put in winternl.h. >> >> >> On 2014-10-15 19:08, Ged Murphy wrote: >>> There shouldn't really be anything using this header >>> >>> -----Original Message----- >>> From: Ros-diffs [mailto:ros-diffs-boun...@reactos.org] On Behalf Of >>> tfa...@svn.reactos.org >>> Sent: 15 October 2014 17:38 >>> To: ros-di...@reactos.org >>> Subject: [ros-diffs] [tfaber] 64749: [PSDK] - Use macro version of >>> RtlUlonglongByteSwap in winternl.h because using the fastcall version >>> causes stack corruption CORE-8632 #resolve >>> >>> Author: tfaber >>> Date: Wed Oct 15 16:38:13 2014 >>> New Revision: 64749 >>> >>> URL: http://svn.reactos.org/svn/reactos?rev=64749&view=rev >>> Log: >>> [PSDK] >>> - Use macro version of RtlUlonglongByteSwap in winternl.h because >>> using the fastcall version causes stack corruption >>> CORE-8632 #resolve >>> >>> Modified: >>> trunk/reactos/include/psdk/winternl.h >>> >>> Modified: trunk/reactos/include/psdk/winternl.h >>> URL: >>> http://svn.reactos.org/svn/reactos/trunk/reactos/include/psdk/wintern >>> l.h?rev=64749&r1=64748&r2=64749&view=diff >>> > ============================================================================ > == >>> --- trunk/reactos/include/psdk/winternl.h [iso-8859-1] (original) >>> +++ trunk/reactos/include/psdk/winternl.h [iso-8859-1] Wed Oct 15 > 16:38:13 2014 >>> @@ -2310,7 +2310,12 @@ >>> BOOLEAN WINAPI RtlTimeToSecondsSince1980(const LARGE_INTEGER > *,LPDWORD); >>> BOOL WINAPI RtlTryEnterCriticalSection(RTL_CRITICAL_SECTION *); >>> >>> +#ifdef __REACTOS__ >>> ULONGLONG __fastcall RtlUlonglongByteSwap(ULONGLONG); >>> +#define RtlUlonglongByteSwap(_x) _byteswap_uint64((_x)) #else >>> +ULONGLONG __cdecl RtlUlonglongByteSwap(ULONGLONG); #endif >>> DWORD WINAPI RtlUnicodeStringToAnsiSize(const UNICODE_STRING*); >>> NTSTATUS WINAPI > RtlUnicodeStringToAnsiString(PANSI_STRING,PCUNICODE_STRING,BOOLEAN); >>> NTSTATUS WINAPI RtlUnicodeStringToInteger(const UNICODE_STRING >>> *,ULONG,ULONG *); >>> _______________________________________________ Ros-dev mailing list Ros-dev@reactos.org http://www.reactos.org/mailman/listinfo/ros-dev