Nem felügyelt DLL-függvények használata
A platformhívás olyan szolgáltatás, amely lehetővé teszi, hogy a felügyelt kód meghívja a dinamikus kapcsolatkódtárakban (DLL-ekben) implementált nem felügyelt függvényeket, például a Windows API-ban. Megkeresi és meghívja az exportált függvényeket, és szükség szerint meghozza az argumentumait (egész számokat, sztringeket, tömböket, struktúrákat stb.) az együttműködés határán.
Ez a szakasz bemutatja a nem felügyelt DLL-függvények használatával kapcsolatos feladatokat, és további információt nyújt a platformhívásról. A következő feladatok mellett általános szempontok és további információkat és példákat tartalmazó hivatkozás is elérhető.
Exportált DLL-függvények használata
Függvények azonosítása DLL-ekben.
Minimálisan meg kell adnia a függvény nevét és az azt tartalmazó DLL nevét.
Hozzon létre egy osztályt a DLL-függvények tárolásához.
Használhat egy meglévő osztályt, létrehozhat egy külön osztályt minden nem felügyelt függvényhez, vagy létrehozhat egy osztályt, amely a kapcsolódó nem felügyelt függvények készletét tartalmazza.
Prototípusok létrehozása felügyelt kódban.
[Visual Basic] Használja a Deklarált utasítást a Függvény és a Lib kulcsszavakkal. Néhány ritka esetben használhatja a DllImportAttribute parancsot a megosztott függvény kulcsszavaival. Ezeket az eseteket a szakasz későbbi részében ismertetjük.
[C#] A DLL és a függvény azonosításához használja a DllImportAttribute parancsot. Jelölje meg a metódust a statikus és extern módosítókkal.
[C++] A DLL és a függvény azonosításához használja a DllImportAttribute parancsot. Jelölje meg a burkolómetódust vagy -függvényt a "C" externnel.
DLL-függvény meghívása.
Hívja meg a metódust a felügyelt osztályon, ahogyan bármely más felügyelt metódust. A struktúrák átadása és a visszahívási függvények megvalósítása különleges esetek.
Példák a konstruktálásra. A platformhíváshoz használandó NET-alapú deklarációkat lásd: Adatok platformhívással történő rendezése.
A platformhívások részletesebb bemutatása
A platformhívás metaadatokra támaszkodik az exportált függvények megkereséséhez és argumentumaik futásidőben történő alkalmazásához. Az alábbi ábrán ez a folyamat látható.
Amikor a platform meghív egy nem felügyelt függvényt, a következő műveletsort hajtja végre:
Megkeresi a függvényt tartalmazó DLL-t.
Betölti a DLL-t a memóriába.
Megkeresi a függvény címét a memóriában, és leküldi az argumentumait a verembe, és szükség szerint rendezi az adatokat.
Feljegyzés
A DLL keresése és betöltése, valamint a függvény címének a memóriában való keresése csak a függvény első hívásakor történik.
Átviszi a vezérlőt a nem felügyelt függvénybe.
A platformhívás a nem felügyelt függvény által generált kivételeket a felügyelt hívónak dobja.
Lásd még
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: