سلام
متاسفانه خودم هم اطلاع دقیقی ندارم!
ولی حدود یک سال قبل یک DLL با ++C طراحی کرده بودم (به صورت کتابخانه API جدید) که یک چیز خاص را با سرعت فوق العاده ای جستجو میکرد و لازم بود به محض یافتن مورد جدید آن را به برنامه فراخوان اطلاع دهد.
و برنامه اصلی با VB.Net بودم، توانستم اشاره گر تابعی را در VB.Net بدست آورم و آن را به عنوان پارامتر به API مورد نظر پاس دادم تا در بدنه C هر کجا جواب جدیدی پیدا شد با این فراخانی این اشاره گر و ارسال مقادیر مورد نظر خبر دهد.
ولی به محض اینکه تابع مدیریت شده VB.Net از خارج از محیط Net. و به صورت بومی با اشاره گر آن از ++C فراخانی میشد فورا یک بخش امنیتی گیر میداد و خطا خفن میداد و همه چیز متوقف میشد و پس از جستجو در کلاسس های فریم وروک اینها را یافتم و نمیدانم بالاخره با کدامشان مشکلم بکل حل شد و در آن پروژه توانستم کدهای سه زبان VB.Net و ++C و ASM را با هم مخلوط کنم. البته همه را میشد با VB.Net انجام داد ولی مشکل سر الگوریتم سنگین و زمان پاسخ بود.
بحرحال باید به این ترتیب از این کلاسها استفاده کنید.
(البته توابع و کلاس های دیگری هم یافتم ولی الان یادم نیست)
<System.Runtime.InteropServices.UnmanagedFunctionP ointer(System.Runtime.InteropServices.CallingConve ntion.StdCall)> _
Public Delegate Sub UnmanagedSub()
<System.Runtime.CompilerServices.UnsafeValueType() > _
Public Structure Unsafe
Public Value As Integer
End Structure
<System.Security.SuppressUnmanagedCodeSecurity() > _
Public Shared Function ddd() As Long
End Function
این کدها هر کدام موضوع مورد نظر را برای استفاده در محیط های غیر امن آماده میکند.
اگر وقت کردید سری به MSDN بزنید، بدون شک اطلاعات خوبی پیدا میکنید.
اگر دوستان دیگر هم به نتایج جالبی رسیدند، ما هم بدمان نمی آید!!!