Kontroller DLL for Windows API-niveau

Indlæg af Hanne Mølgaard Plasc

Problem



Er der et værktøj, der kan kontrollere en DLL mod et bestemt API-niveau? Vi har kørt ind i problemer med en DLL fra en ekstern udvikler, der ikke virker under Windows 2000, og nu forsøger vi at finde alle Windows API-opkald, der ikke findes i Win2k.


Er der sådan noget?

Bedste reference


Det er ikke sådan det virker. Du skal angive, hvilket OS-support du har brug for, når du bygger DLL'en.


#define \_WIN32\_WINNT 0x0500  // supporting Windows 2000
#include <windows.h>
// etc...


Du får en kompileringsfejl, når du forsøger at bruge en api-funktion, der ikke er tilgængelig.

Andre referencer 1


Jeg ville få en Windows 2000-installation, måske i en VM. Og så kører jeg Dependency Viewer og indlæser DLL'en. Dette giver dig en liste over de manglende API-funktioner.


Problemerne kan måske løbe dybere end dette dog. Selvom den plagsomme DLL bruger en API-funktion, der findes i Windows 2000, kan den bruge bestemte funktioner i API-funktionen, som kun er tilgængelige i nyere versioner af Windows. Det kan meget vel være nødvendigt at studere dette på kildekodeniveau.