سؤال

ما الفرق بين الوظائف الثلاث ومتى نستخدمها؟؟

هل كانت مفيدة؟

المحلول

يتم استخدام WinMain لتطبيق (ينتهي بـ .exe) للإشارة إلى بدء العملية.سيوفر وسيطات سطر الأوامر للعملية ويعمل كنقطة إدخال رمز المستخدم للعملية.يعد WinMain (أو إصدار مختلف من main) وظيفة مطلوبة أيضًا.يحتاج نظام التشغيل إلى وظيفة للاتصال بها يبدأ عملية قيد التشغيل.

يتم استخدام DllMain لـ DLL للإشارة إلى الكثير من السيناريوهات المختلفة.والجدير بالذكر أنه سيتم استدعاؤه متى

  1. يتم تحميل DLL في العملية:DLL_PROCESS_ATTACH
  2. يتم إلغاء تحميل DLL من العملية:DLL_PROCESS_DETACH
  3. يبدأ الخيط في العملية:DLL_THREAD_ATTACH
  4. تم إنهاء الخيط في العملية:DLL_THREAD_DETACH

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

نصائح أخرى

رئيسي() يعني برنامجك هو استمارة القنصلية.

وينمين () يعني البرنامج هو تطبيق واجهة المستخدم الرسومية - أي أنه يعرض النوافذ ومربعات الحوار بدلاً من إظهار وحدة التحكم.

دللين () يعني البرنامج هو DLL.لا يمكن تشغيل DLL مباشرة ولكن يتم استخدامه بواسطة النوعين المذكورين أعلاه من التطبيقات.

لذلك:

  • استخدم WinMain عندما تكتب برنامجًا سيعرض النوافذ وما إلى ذلك.
  • استخدم DLLMain عند كتابة DLL.
  • استخدم main في جميع الحالات الأخرى.

[إضافة لسؤالك]

ولا تنس أيضًا DllEntryPoint:

  • عندما يتعلق الأمر بوقت التحميل، تكون نقطة الإدخال هي DllMain.
    (السابق.COM خادم قيد التشغيل DLL).

  • عندما يتعلق الأمر بوقت التشغيل، تكون نقطة الإدخال هي DllEntryPoint.
    (السابق.يتم استدعاء LoadLibrary).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top