Dela via


Identifiera funktioner i DLL:er

Identiteten för en DLL-funktion består av följande element:

  • Funktionsnamn eller ordningstal

  • Namnet på DLL-filen där implementeringen finns

Om du till exempel anger funktionen MessageBox i User32.dll identifierar funktionen (MessageBox) och dess plats (User32.dll, User32 eller user32). Programmeringsgränssnittet för Microsoft Windows-program (Windows API) kan innehålla två versioner av varje funktion som hanterar tecken och strängar: en ANSI-version med 1 byte och en Unicode-version med 2 byte. När det är ospecificerat är teckenuppsättningen, som representeras av fältet CharSet , som standard ANSI. Vissa funktioner kan ha fler än två versioner.

MessageBoxA är ANSI-startpunkten för funktionen MessageBox . MessageBoxW är Unicode-versionen. Du kan lista funktionsnamn för en specifik DLL, till exempel user32.dll, genom att köra en mängd olika kommandoradsverktyg. Du kan till exempel använda dumpbin /exports user32.dll eller link /dump /exports user32.dll hämta funktionsnamn.

Du kan byta namn på en ohanterad funktion till vad du vill i koden så länge du mappar det nya namnet till den ursprungliga startpunkten i DLL-filen. Anvisningar om hur du byter namn på en ohanterad DLL-funktion i hanterad källkod finns i Ange en startpunkt.

Med plattformsanrop kan du styra en betydande del av operativsystemet genom att anropa funktioner i Windows API och andra DLL:er. Förutom Windows-API:et finns det många andra API:er och DLL:er tillgängliga för dig via plattformsanrop.

I följande tabell beskrivs flera vanliga DLL:er i Windows-API:et.

DLL Beskrivning av innehållet
GDI32.dll GDI-funktioner (Graphics Device Interface) för enhetsutdata, till exempel funktioner för ritning och teckensnittshantering.
Kernel32.dll Operativsystemfunktioner på låg nivå för minneshantering och resurshantering.
User32.dll Windows-hanteringsfunktioner för meddelandehantering, timers, menyer och kommunikation.

Fullständig dokumentation om Windows-API:et finns i Platform SDK. Exempel som visar hur du konstruerar . NET-baserade deklarationer som ska användas med plattformsanrop finns i Marshalling Data with Platform Invoke (Marshalling Data with Platform Invoke).

Se även