[clean-list] htoclean and dlls

John van Groningen johnvg@cs.kun.nl
Thu, 6 Dec 2001 14:55:30 +0100


Jerzy Karczmarczuk wrote:
>In the doc of htoclean it says that because of some not implemented
>relocations the DLL (under Windows) library must be accompanied by an
>ASCII file containing the names of the routines.
>
>Well, it (examples: gdi, user, etc.) contains a bit more, say
>
>AppendMenu@16
>
>or something like that. I understand that @N means that the parameter list
>is 16 bytes long (4 double words), isn't it?

Yes.

>But some functions have "corrupted" names, with an additional "A" before @,
>say
>
>VeryUsefulCallA@4
>
>while the incriminated dll has no such A in the name, unless the huge 
>help file collection of Dev Studio hides The Truth.

The dll's have such an A in the name. The Truth can be found in the .h files, for example:

WINGDIAPI BOOL WINAPI GetTextMetricsA(HDC, LPTEXTMETRICA);
WINGDIAPI BOOL WINAPI GetTextMetricsW(HDC, LPTEXTMETRICW);
#ifdef UNICODE
#define GetTextMetrics  GetTextMetricsW
#else
#define GetTextMetrics  GetTextMetricsA
#endif // !UNICODE

So there are two versions for system functions that use strings, one for
unicode and one for ascii. The first contains an additional 'W', the other
an additional 'A'.

Regards,
John van Groningen