Bagikan melalui


Mengonsumsi Fungsi DLL yang Tidak Terkelola

Pemanggilan platform adalah layanan yang memungkinkan kode terkelola untuk memanggil fungsi tidak terkelola yang diterapkan di pustaka link dinamis (DLL), seperti yang ada di Windows API. Ini menempatkan dan memanggil fungsi yang diekspor dan menyusun argumennya (bilangan bulat, string, array, struktur, dan sebagainya) melintasi batas interoperasi sesuai kebutuhan.

Bagian ini memperkenalkan tugas yang terkait dengan penggunaan fungsi DLL yang tidak dikelola dan memberikan informasi lebih lanjut tentang pemanggilan platform. Selain tugas-tugas berikut, ada pertimbangan umum dan link yang memberikan informasi dan contoh tambahan.

Untuk menggunakan fungsi DLL yang diekspor

  1. Identifikasi fungsi di DLL.

    Minimal, Anda harus menentukan nama fungsi dan nama DLL yang memuatnya.

  2. Buat kelas untuk menyimpan fungsi DLL.

    Anda dapat menggunakan kelas yang sudah ada, membuat kelas individual untuk setiap fungsi yang tidak dikelola, atau membuat satu kelas yang berisi sekumpulan fungsi tidak terkelola terkait.

  3. Buat prototipe dalam kode terkelola.

    [Visual Basic] Gunakan pernyataan Deklarasi dengan kata kunci Fungsi dan Lib. Dalam beberapa kasus yang jarang terjadi, Anda dapat menggunakan DllImportAttribute dengan kata kunci Fungsi Bersama. Kasus-kasus ini dijelaskan kemudian di bagian ini.

    [C#] Gunakan DllImportAttribute untuk mengidentifikasi DLL dan fungsinya. Tandai metode dengan pengubah statik dan eksternal.

    [C++] Gunakan DllImportAttribute untuk mengidentifikasi DLL dan fungsinya. Tandai metode atau fungsi pembungkus dengan extern "C".

  4. Memanggil fungsi DLL.

    Panggil metode di kelas terkelola seperti yang Anda lakukan pada metode terkelola lainnya. Meneruskan struktur dan menerapkan fungsi panggilan balik adalah kasus khusus.

Misalnya yang menunjukkan cara membuat . Deklarasi berbasis NET yang akan digunakan dengan pemanggilan platform, lihat Menyusun Data dengan Platform Invoke.

Melihat lebih dekat pada pemanggilan platform

Pemanggilan platform bergantung pada metadata untuk menemukan fungsi yang diekspor dan menyusun argumennya saat dijalankan. Ilustrasi berikut menunjukkan proses ini.

Diagram that shows a platform invoke call.

Saat platform pemanggilan memanggil fungsi yang tidak dikelola, ia melakukan urutan tindakan berikut:

  1. Menemukan DLL yang berisi fungsi.

  2. Memuat DLL ke dalam memori.

  3. Menempatkan alamat fungsi dalam memori dan mendorong argumennya ke tumpukan, menyusun data sesuai kebutuhan.

    Catatan

    Menemukan dan memuat DLL, dan menemukan alamat fungsi dalam memori hanya terjadi pada panggilan pertama ke fungsi tersebut.

  4. Mentransfer kontrol ke fungsi yang tidak dikelola.

Pemanggilan platform menampilkan pengecualian yang dihasilkan oleh fungsi tidak terkelola ke pemanggil terkelola.

Lihat juga