Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Platform invoke adalah layanan yang memungkinkan kode terkelola untuk memanggil fungsi tidak terkelola yang diimplementasikan dalam pustaka tautan dinamis (DLL), seperti yang ada di Windows API. Ini menemukan dan memanggil fungsi yang diekspor dan mengatur argumennya (bilangan bulat, string, array, struktur, dan sebagainya) melintasi batas interoperabilitas sesuai kebutuhan.
Bagian ini memperkenalkan tugas yang terkait dengan penggunaan fungsi DLL yang tidak dikelola dan menyediakan informasi selengkapnya tentang pemanggilan platform. Selain tugas-tugas berikut, ada pertimbangan umum dan tautan yang memberikan informasi dan contoh tambahan.
Untuk menggunakan fungsi DLL yang diekspor
-
Minimal, Anda harus menentukan nama fungsi dan nama DLL yang berisinya.
Buat kelas untuk menyimpan fungsi DLL.
Anda dapat menggunakan kelas yang ada, membuat kelas individual untuk setiap fungsi yang tidak dikelola, atau membuat satu kelas yang berisi sekumpulan fungsi tidak terkelola terkait.
Buat prototipe dalam kode terkelola.
[Visual Basic] Gunakan pernyataan
Declaredengan kata kunciFunctiondanLib. Dalam beberapa kasus yang jarang terjadi, Anda dapat menggunakanDllImportAttributedengan kata kunci Fungsi Bersama . Kasus-kasus ini dijelaskan nanti di bagian ini.[C#]
DllImportAttributeGunakan untuk mengidentifikasi DLL dan fungsi. Tandai metode dengan pengubahstaticdanextern.[C++]
DllImportAttributeGunakan untuk mengidentifikasi DLL dan fungsi. Tandai metode atau fungsi pembungkus dengan ekstern "C".-
Panggil metode di kelas terkelola Anda seperti yang Anda lakukan pada metode terkelola lainnya. Melewati struktur dan menerapkan fungsi panggilan balik adalah kasus khusus.
Misalnya yang menunjukkan cara membuat deklarasi berbasis .NET untuk digunakan dengan Platform Invoke, lihat Marshalling Data dengan Platform Invoke.
Melihat lebih dekat pemanggilan platform
Platform invoke mengandalkan metadata untuk menemukan fungsi yang diekspor dan mengelola argumennya selama waktu eksekusi. Ilustrasi berikut menunjukkan proses ini.
Ketika platform memanggil fungsi yang tidak dikelola, platform melakukan urutan tindakan berikut:
Menemukan DLL yang berisi fungsi .
Memuat DLL ke dalam memori.
Menemukan alamat fungsi dalam memori dan menempatkan argumennya ke dalam tumpukan, mengemas data sesuai kebutuhan.
Nota
Menemukan dan memuat DLL, dan menemukan alamat fungsi dalam memori hanya terjadi pada panggilan pertama ke fungsi.
Mentransfer kontrol ke fungsi yang tidak dikelola.
Pemanggilan platform melemparkan pengecualian yang dihasilkan oleh fungsi yang tidak dikelola ke pemanggil terkelola.