Megosztás a következőn keresztül:


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

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

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

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

  4. 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ó.

Diagram that shows a platform invoke call.

Amikor a platform meghív egy nem felügyelt függvényt, a következő műveletsort hajtja végre:

  1. Megkeresi a függvényt tartalmazó DLL-t.

  2. Betölti a DLL-t a memóriába.

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

  4. Á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