Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Platformoproep is een service waarmee beheerde code onbeheerde functies kan aanroepen die zijn geïmplementeerd in DLL's (Dynamic Link Libraries), zoals die in de Windows-API. De functie zoekt en roept een geëxporteerde functie aan en roept de argumenten ervan (gehele getallen, tekenreeksen, matrices, structuren, enzovoort) waar nodig aan over de interoperatiegrens.
In deze sectie worden taken geïntroduceerd die zijn gekoppeld aan het gebruik van niet-beheerde DLL-functies en vindt u meer informatie over het aanroepen van platforms. Naast de volgende taken zijn er algemene overwegingen en een koppeling die aanvullende informatie en voorbeelden biedt.
Geëxporteerde DLL-functies gebruiken
Functies in DLLs identificeren.
U moet minimaal de naam van de functie en de naam van het DLL-bestand opgeven dat deze bevat.
Maak een klasse voor het opslaan van DLL-functies.
U kunt een bestaande klasse gebruiken, een afzonderlijke klasse maken voor elke onbeheerde functie of een klasse maken die een set gerelateerde niet-beheerde functies bevat.
Maak prototypen in beheerde code.
[Visual Basic] Gebruik de
Declareinstructie met deFunctionenLibtrefwoorden. In sommige zeldzame gevallen kunt u deDllImportAttributetrefwoorden voor de gedeelde functie gebruiken. Deze gevallen worden verderop in deze sectie uitgelegd.[C#] Gebruik de
DllImportAttributefunctie om het DLL-bestand en de functie te identificeren. Markeer de methode met destaticenexternmodificeerders.[C++] Gebruik de
DllImportAttributefunctie om het DLL-bestand en de functie te identificeren. Markeer de wrappermethode of -functie met extern C.Roep een DLL-functie aan.
Roep de methode aan in uw beheerde klasse, net zoals elke andere beheerde methode. Het doorgeven van structuren en het implementeren van callback-functies zijn speciale gevallen.
Voor voorbeelden die laten zien hoe u .NET-gebaseerde declaraties kunt opstellen voor gebruik met platformaanroepen, zie Marshalling Data with Platform Invoke.
Een nadere blik op platform-aanroepen
Platformaanroep is afhankelijk van metagegevens om geëxporteerde functies te lokaliseren en hun argumenten tijdens runtime te marshallen. In de volgende afbeelding ziet u dit proces.
Wanneer het platform een onbeheerde functie aanroept, wordt de volgende reeks acties uitgevoerd:
Zoekt het DLL-bestand met de functie.
Laadt het DLL-bestand in het geheugen.
Hiermee wordt het adres van de functie in het geheugen gevonden en worden de argumenten naar de stack gepusht, waarbij gegevens naar behoefte worden gemarshalled.
Opmerking
Het zoeken en laden van het DLL-bestand en het vinden van het adres van de functie in het geheugen vindt alleen plaats bij de eerste aanroep van de functie.
Hiermee wordt het besturingselement overgedragen naar de onbeheerde functie.
Bij platformaanroep werpt de onbeheerde functie uitzonderingen naar de beheerde aanroeper.