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).