قم بإنشاء النماذج الأولية في تعليمات برمجية المدارة

يصف هذا الموضوع كيفية الوصول إلى وظائف غير مدار و يقدم عدة حقول سمات إضافة تعليق توضيحي له تعريف الأسلوب في تعليمات برمجية مُدارة. للأمثلة التي توضح كيفية إنشاء استدعاء المستندة إلى.NET تصريحات للاستخدام مع النظام الأساسي، راجع التنظيم والإرسال بيانات باستخدام "استدعاء النظام الأساسي".

قبل أن يمكنك الوصول إلى دالة DLL غير مدارة من تعليمات برمجية مُدارة، يجب عليك معرفة اسم الدالة و اسم مكتبة الارتباط الحيوي التي يصدرها عليه. بترتيب هو المعلومات، يمكنك بدء كتابة تعريف المدارة للعمل مدار هو في ملف DLL. علاوة على ذلك، يمكنك ضبط الطريقة استدعاء النظام الأساسي لهذه دالة بإنشاء و marshals البيانات إلى و عن دالة.

ملاحظةملاحظة

تمكين وظائف واجهة برمجة تطبيقات Win32 يخصص سلسلة إلى تحرير السلسلة باستخدام أسلوب مثل LocalFree.استدعاء النظام الأساسي لمعالجة هذه المعلمات بشكل مختلف.للنظام الأساسي استدعاء المكالمات، إجراء معلمة IntPtrنوع عوضاً Stringنوع.استخدم الطرق التي يتم توفيرها بواسطة System.Runtime.InteropServices.Marshalفئة لتحويل النوع يدوياً إلى سلسلة و تحرير يدوياً.

أساسيات إعلان

إدارة ملفات تعريف إلى تعتبر الدالات غير مدار تعتمد على اللغة، كما ترى في الأمثلة التالية. ل المزيد أمثلة تعليمات برمجية، راجع من أمثلة استدعاء النظام الأساسي.

Imports System.Runtime.InteropServices
Public Class Win32
    Declare Auto Function MessageBox Lib "user32.dll" _
       (ByVal hWnd As Integer, _
        ByVal txt As String, ByVal caption As String, _
        ByVal Typ As Integer) As IntPtr
End Class

لتطبيق BestFitMapping، CallingConvention، ExactSpelling، PreserveSig، SetLastError، أو ThrowOnUnmappableCharحقول إلى Microsoft Visual Basic 2005تصريح، يجب أن استخدم DllImportAttributeالسمة بدلاً من Declareالعبارة.

Imports System.Runtime.InteropServices
Public Class Win32
   <DllImport ("user32.dll", CharSet := CharSet.Auto)> _
   Public Shared Function MessageBox (ByVal hWnd As Integer, _
        ByVal txt As String, ByVal caption As String, _
        ByVal Typ As Integer) As IntPtr
   End Function
End Class
using System.Runtime.InteropServices;
[DllImport("user32.dll")]
    public static extern IntPtr MessageBox(int hWnd, String text, 
                                       String caption, uint type);
using namespace System::Runtime::InteropServices;
[DllImport("user32.dll")]
    extern "C" IntPtr MessageBox(int hWnd, String* pText,
    String* pCaption unsigned int uType);

ضبط تعريف

ما إذا كانت تقوم بتعيينها بوضوح أم لا، حقول سمات في العمل بتعريف السلوك مدارة تعليمات برمجية. استدعاء النظام الأساسي يعمل وفقا الافتراضي قيم مجموعة على حقول متنوع موجودة كبيانات التعريف في تجميع. يمكنك تغيير هذا سلوك الافتراضي بواسطة ضبط قيم حقول أو أكثر. في معظم الحالات، يمكنك استخدام DllImportAttributeإلى تعيين قيمة.

يسرد الجدول التالي التعيين كاملة من حقول سمات تتعلق إلى استدعاء النظام الأساسي. بالنسبة لكل حقل، يتضمن الجدول الافتراضي الالقيمة وارتباط للحصول تشغيل معلومات حول استخدام هذه حقول لتعريف دالات DLL غير مدار.

الحقل

الوصف

BestFitMapping

تمكين أو تعطيل الأكثر تناسبا للتعيين.

CallingConvention

تعين اصطلاح استدعاء إلى تستخدم في تمرير الأسلوب وسيطات. القيمة الافتراضية هو WinAPI، الذي يتوافق مع __stdcall32-بت المستندة إلى Intel الأنظمة الأساسية.

CharSet

عناصر التحكم يجب أن يمكن تنظيم mangling الاسم والطريقة التي سلسلة وسيطة للدالة. يكون الإعداد الافتراضي هو CharSet.Ansi.

EntryPoint

تقوم بتحديد يؤشر إدخال ملف DLL إلى يمكن استدعاء.

ExactSpelling

عناصر التحكم ما إذا كان يجب تعديلها يؤشر إدخال لتتوافق مع التعيين الأحرف. تختلف القيمة افتراضية حسب لغة البرمجة.

PreserveSig

عناصر التحكم فيما إذا كان مدار أسلوب يجب أن يتم تحويل التوقيع إلى غير مدار توقيع بريد إرجاع HRESULT ويحتوي على وسيطة إضافى retval] [خارج، لقيمة الإرجاع.

الافتراضي هو true(the توقيع should not be transformed).

SetLastError

تمكن المتصل باستخدام Marshal.GetLastWin32Errorدالة API لتحديد ما إذا حدث خطأ أثناء تنفيذ الأسلوب. في Visual أساسى، يكون الافتراضي هو true؛ في C# و C + +، يكون الافتراضي false.

ThrowOnUnmappableChar

يتحكم بالتخلص من استثناء تشغيل حرف Unicode unmappable يتم تحويلها إلى ‏‫ANSI "؟" حرف.

لمعلومات مرجعية مُفصل، راجع فئة DllImportAttribute.

راجع أيضًا:

المبادئ

التي تستخدم دالات DLL غير مدار

تحديد يؤشر إدخال

تحديد التعيين أحرف

استدعاء النظام الأساسي أمثلة

استدعاء النظام الأساسي اعتبارات الأمان

التعرف على وظائف في مكتبات الارتباط الديناميكي

قم بإنشاء دالات DLL إلى الضغط على فئة

موارد أخرى

استدعاء دالة DLL