نمایش نتایج 1 تا 5 از 5

نام تاپیک: Marshalling

  1. #1

    Post Marshalling

    سلام
    چند وقتی هست که به مبحث Marshalling برخورد کردم. ولی هنوز چیز زیادی دستگیرم نشده. اگه دوستان زحمت بکشن که در این تاپیک، به آموزش Marshalling با ذکر مثال برپدازند، خیلی خیلی ممنون می شم.

  2. #2

    نقل قول: Marshalling

    سلام

    مارشالینگ پروسسی هستش برای تغییر شکل دادن حالات object ها در حافظه به طوری که برای ذخیره یا انتقال به محیط دیگه مناسب بشه

    در .net مارشالینگ برای تبدیل بین unmanaged تایپ و CLR تایپ در P/invoke ,COM intropاستفاده می شه

    متاسفانه چون بحث مارشالینگ طولانی و پر از نکات هستش و شما چیز کلی گفتید شما رو به خوندن مطالب موجود در لینک زیر توصیه می کنم

    http://msdn.microsoft.com/en-us/library/eaw10et3.aspx
    آخرین ویرایش به وسیله r00tkit : جمعه 16 مهر 1389 در 01:48 صبح
    Kernel Mode Developer
    RootKitSMM@Yahoo.com

  3. #3
    مدیر بخش آواتار salehbagheri
    تاریخ عضویت
    خرداد 1386
    محل زندگی
    In Hearts
    سن
    30
    پست
    2,224

    نقل قول: Marshalling

    در ادامه صحبتهاي آقاي geek1982:

    مارشالينگ به نام هاي ديگري همچون Inflating و Serialize نيز معروف هست.
    امیدم به دستان زیبای اوست . آنکه می آید . همان که نامش منجی ست ....

    به راستی اگر غرق نبودیم چرا مارا به منجی ای نیازمند کرده اند؟ ... دنیا دریاست ....

    دلنوشته های من


  4. #4

    نقل قول: Marshalling

    از اینکه به این موضوع بها می دید ممنونم. ولی اگه موضوع رو بازتر کنید، عالی می شه.

  5. #5

    نقل قول: Marshalling

    سلام

    مثال:


    class PlatformInvokeTest
    {
    [DllImport("msvcrt.dll")]
    public static extern int puts([MarshalAs(UnmanagedType.LPStr)]string m);
    [DllImport("msvcrt.dll")]internal static extern int _flushall();


    public static void Main()
    {
    puts("Hello World!");
    _flushall();
    }
    }
    توضیح: وقتی توی C#‎‎‎ تابع های unmanaged رو فراخوانی می کنید CLR باید پارامتر ها و نوع بازگشتی رو مارشالینگ بکند

    برای هر نوع در .net یه نوع پیش فرض در محیط غیر مدیریت شده وجود داره که CLR از این پیش فرش ها استفاده می کنه برای مارشال کردن خود کار در موقع فراخوانی توابع unmanaged

    که به طور مثال string در .net به LPTSTR مارشال می شه( تبدیل می شه)

    شما می تونی از MarshalAs استفاده کنی و بگی که فلان نوع از .net به چی مارشال بشه



    و یه نکته می مونه در کنار تائید صحبت های اقای salehbagheri این رو بگم که در بعضی زبان ها Serialize و مارشالینگ فرق دارن(مثل همین C#‎‎‎) و در بعضی زبان ها نه ( مثل Ruby روبی با Marshal.dump و Marshal.load مارشالینگ یا Serialize می کنیم)

    مثال در روبی

    def marshaling(x)
    y=Marshal.dump(x)
    end

    def unmarshaling(x)
    y=Marshal.load(x)
    end

    x=marshaling('ten')

    puts unmarshaling(x)
    اگه سوالی بود در خدمتیم
    آخرین ویرایش به وسیله r00tkit : جمعه 16 مهر 1389 در 16:04 عصر
    Kernel Mode Developer
    RootKitSMM@Yahoo.com

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •