BOOL Apientry DllMain
Results 1 to 10 of 10

Thread: BOOL Apientry DllMain

  1. #1
    مرحبا؛

    مجرد سؤال صغير: نظرت إلى عدد لا بأس به من ملفات المصدر MT4 dll ولاحظت أن بعض الاستخدام: BOOL APIENTRY DllMain بينما الآخرين لا.

    (على سبيل المثال ، خبراء MT4 الرسميونالعيناتDLLSample

    كود PHP: <code> <span style = ”color: # 000000”> <span style = ”color: # 0000BB”> </span> <span style = ”color: # FF8000”>/ ---- -------------------------------------------------- ------------
    /||
    / ---------------------- --------------------------------------------
    <span> <span style = ”color: # 0000BB”> BOOLAPIENTRYDllMain </span> <span style = ”color: # 007700”> (</span> <span style = ”color: # 0000BB”> HANDLEhModule </span > <span style = ”color: # 007700”> ، </span> <span style = ”color: # 0000BB”> DWORDul_reason_for_call </span> <span style = ”color: # 007700”> ، </span> < span span = ”color: # 0000BB”> LPVOIDlpReserved </span> <span style = ”color: # 007700”>)
    {
    </span> <span style = ”color: # FF8000” >/----
    </span> <span style = ”color: # 007700”> التبديل (</span> <span style = ”color: # 0000BB”> ul_reason_for_call </span> <span style = ”color: # 007700”>)
    {
    case </span> <span style = ”color: # 0000BB”> DLL_PROCESS_ATTACH </span> <span style = ”color: # 00 7700 ”>:
    case </span> <span style =” color: # 0000BB ”> DLL_THREAD_ATTACH </span> <span style =” color: # 007700 ”>:
    case </span> <span style = ”color: # 0000BB”> DLL_THREAD_DETACH </span> <span style = ”color: # 007700”>:
    case </span> <span style = ”color: # 0000BB”> DLL_PROCESS_DETACH <span> <span style = ”color: # 007700”>:
    فاصل ؛
    }
    </span> <span style = ”color: # FF8000”>/--- -
    </span> <span style = ”color: # 007700”> return (</span> <span style = ”color: # 0000BB”> TRUE </span> <span style = ”color: # 007700 ”>) ؛
    }
    </span> <span style =” color: # 0000BB ”> </span> </span> </code> سؤالي: هل هناك أي قاعدة أساسية أنه مثل نموذج MTF ينبغي أن تدرج كإعداد افتراضي؟

  2. #2
    شكرا جزيلا 7bit. لطيف جدا

  3. #3
    يتم استدعاء الدالة APIENTRY (في حالة وجودها) بواسطة windows عندما يتم تحميلإلغاء تحميل DLL ، ويمكن استخدامها إلى alloefree memory وتشغيل إجراءات الإعداد. منذ يتم توفير السياق يمكن تنفيذ التعليمات البرمجية المناسبة. يمكن أن يكون هذا مفيدًا لإدارة موارد DLL الداخلية عند استخدام DLL عدة مرات بواسطة appliion EG بواسطة indiors متعددة و أو بواسطة عدة EAs. اقرأ هنا للمزيد من المعلومات
    http://support.microsoft.com/kb/815065

  4. #4
    شكرا النطاق محدد. ولكن هل يمكن أن نقول أنه من المستحسن استخدام شيء مثل المثال MT4 في معظم الحالات. أو اتركها فقط كعدد من dlls mt4 الأخرى.

  5. #5
    أنت فقط بحاجة إليها إذا كنت تحتاج إلى ربط في التحميلالتفريغ الخ. وإلا فإن كل ما يفعله هو إرجاع true (مما يعني النجاح) ، ويجب أن يتم تثبيت نفس الوظيفة الافتراضية الفارغة (التي تعيد فقط النجاح ولا تفعل شيئًا آخر) تلقائيًا المترجمالرابط عندما لا تعلن ذلك بنفسك.

  6. #6
    مرحبا 7bit ، سؤال صغير: هو BOOL Apientry DllMain مماثلة إلى حد ما ما فعلته في أنت باسكال دلل. مع كود PHP: <code> <span style = ”color: # 000000”> <span style = ”color: # 0000BB”> التهيئة
    PyStatus </span> <span style = ”color: # 007700”> : = </span> <span style = ”color: # 0000BB”> 0 </span> <span style = ”color: # 007700”> ؛
    </span> <span style = ”color: # 0000BB ”> LoadPyDll </span> <span style =” color: # 007700 ”> () ؛
    </span> <span style =” color: # 0000BB ”> وضع اللمسات الأخيرة
    UnloadPyDll </span > <span style = ”color: # 007700”> () ؛
    </span> <span style = ”color: # 0000BB”> النهاية </span> <span style = ”color: # 007700”> .
    </span> <span style = ”color: # 0000BB”> </span> </span> </code> من شأن ذلك أن يدخل في BOOL Apientry DllMain إذا كنت ستكتبه في C إذا كان الأمر كذلك ، كيف التي تبدو مثل: رمز PHP: <code> <span style = ”color: # 000000”> <span style = ”color: # 0000BB”> </span> <span style = ”color: # FF8000”>/ -------------------------------------------------- ----------------
    /||
    / ------------------ ------------------------------------------------ < br> </span> <span style = ”color: # 0000BB”> BOOLAPIENTRYDllMain </span> <span style = ”color: # 007700”> (</span> <span style = ”color: # 0000BB”> HANDLEhModule </span> <span style = ”color: # 007700”> ، </span> <span style = ”color: # 0000BB”> DWORDul_reason_for_call </span> <span style = ”color: # 007700”> ، <span> <span style = ”color: # 0000BB”> LPVOIDlpReserved </span> <span style = ”color: # 007700”>)
    {
    </span> <span style = ”color : # FF8000 ”>/----
    </span> <span style =” color: # 007700 ”> التبديل (</span> <span style =” color: # 0000BB ”> ul_reason_for_call </span> <span style =” color: # 007700 ”>)
    {
    case </span> <span style =” color: # 0000BB ”> DLL_PROCESS_ATTACH <span> <span style = ”color: # 007700”>:
    </span> <span style = ”color: # 0000BB”> PyStatus </span> <span style = ”color: # 007700”> = </span> <span style = ”color: # 0000BB”> 0 </span> <span style = ”color: # 007700”> ؛
    </span> <span style = ”color: # 0000BB ”> LoadPyDll </span> <span style =” color: # 007700 ”> () ؛

    الحالة </span> <span style =” color: # 0000BB ”> DLL_THREAD_ATTACH </span> <span style = ”color: # 007700”>:
    case </span> <span style = ”color: # 0000BB”> DLL_THREAD_DETACH </span> <span style = ”color: # 007700”>: < br> case </span> <span style = ”color: # 0000BB”> DLL_PROCESS_DETACH </span> <span style = ”color: # 007700”>:
    </span> <span style = ”color : # 0000BB ”> UnloadPyDll </span> <span style =” color: # 007700 ”> () ؛

    فاصل ؛
    }
    </span> <span style = ”color: # FF8000”>/----
    </span> <span style = ”color: # 007700”> return (</span> <span style = ”color: # 0000BB”> TRUE </span> <span style = ”color: # 007700”>) ؛
    }
    </span> <span style = ”color: # 0000BB”> </span> </span> </code> أو قد يضع ذلك مع DLL_THREAD_ATTACH ، DLL_THREAD_DETACH

  7. #7

    Quote Originally Posted by ;
    مرحبا 7bit ، سؤال صغير: هو BOOL Apientry DllMain مماثلة إلى حد ما ما فعلته في أنت باسكال دلل. مع كود PHP: <code> <span style = ”color: # 000000”> <span style = ”color: # 0000BB”> التهيئة
    PyStatus </span> <span style = ”color: # 007700”> : = </span> <span style = ”color: # 0000BB”> 0 </span> <span style = ”color: # 007700”> ؛
    </span> <span style = ”color: # 0000BB ”> LoadPyDll </span> <span style =” color: # 007700 ”> () ؛
    </span> <span style =” color: # 0000BB ”> وضع اللمسات الأخيرة
    UnloadPyDll </span > <span style = ”color: # 007700”> () ؛
    </span> <span style = ”color: # 0000BB”> النهاية </span> <span style = ”color: # 007700”> .
    </span> <span style = ”color: # 0000BB”> </span> </span> </code> من شأن ذلك أن يدخل في BOOL Apientry DllMain إذا كنت ستكتبه في C إذا كان الأمر كذلك ، كيف تبدو كالتالي: [php]/ ---------------------------------------- -------------------------- /| |/ ----------------------------------------------- ------------------- BOOL ...
    تحميل DLLs في DllMain فكرة سيئة للغاية: http://msdn.microsoft.com/en-us/library/ms682583٪28v=VS.85٪29.aspx

  8. #8
    [quote = M_j؛ 4969179] مرحبا ، سؤال صغير: هو BOOL Apientry DllMain يشبه إلى حد ما ما فعلته في Pascal dll. مع كود PHP: <code> <span style = ”color: # 000000”> <span style = ”color: # 0000BB”> التهيئة
    PyStatus </span> <span style = ”color: # 007700”> : = </span> <span style = ”color: # 0000BB”> 0 </span> <span style = ”color: # 007700”> ؛
    </span> <span style = ”color: # 0000BB ”> LoadPyDll </span> <span style =” color: # 007700 ”> () ؛
    </span> <span style =” color: # 0000BB ”> وضع اللمسات الأخيرة
    UnloadPyDll </span > <span style = ”color: # 007700”> () ؛
    </span> <span style = ”color: # 0000BB”> النهاية </span> <span style = ”color: # 007700”> .
    </span> <span style = ”color: # 0000BB”> </span> </span> </code> نعم ، يتم استدعائها من داخل هذه الوظيفة بالضبط. سيحتوي الملف الثنائي المترجم تلقائياً بشكل تلقائي على تعليمات برمجية من مكتبة وقت التشغيل المطلوبة دائمًا وجزء واحد من هذه التعليمة البرمجية هو دالة DllMain (مضبوطة ومرنة تمامًا) تقوم بالكثير من الأشياء تلقائيًا (تهيئةإلغاء تهيئة إدارة الكومة ، معالجة الاستثناء ، مؤشر الترابط التخزين المحلي ، وما إلى ذلك) ، الأشياء التي يجب عليك القيام بها يدويًا في C. هناك عدد قليل من الأماكن التي يمكنك فيها ربط كل هذا بطريقة قياسية تشبه لغة باسكال ، أحد هذه الأماكن (يوجد عدد قليل آخر) هو التهيئة وأقسام النهاية. يتم استدعاؤها من withing DllMain (). هنا في السطر 27 هي وظيفة RTL التي ستقوم بمعالجة الجزء الأكبر من استدعاء DllMain () (لا يسمى مباشرة DllMain () ، لا يزال هناك سحر مجمّع أكثر قليلاً يلتف حوله)
    http://svn.freepascal.org/cgi-bin/vi...nc?view=markupيتم استدعاء أقسام التهيئة والإكمال من مكان ما داخل إجراءات PascalMain و FPC_Do_Exit التي تسمى هناك. كما ترون هناك عدد قليل من الأماكن الممكنة للربط بها عن طريق تعيين متغيرات إجراءات معينة تسمى هناك. هذا هو كل الاشياء المتشددين حقا داخل مكتبة وقت التشغيل التي يقصد فقط أن يفهم من قبل تلك اختراق على المجمع و RTL نفسها. إذا قمت بتنزيل هذه المصادر ومحاولة اتباع جميع هذه المكالمات لمعرفة ما يجري (أو من خلال خطوة مع مصحح الأخطاء) ستجد أنه في الواقع ممتثل تماما وهناك الكثير من الأشياء التي تجري تحت غطاء محرك السيارة لجعل يقوم برنامج Pascal (أو المكتبة) المتطابق بتجميع وتشغيل ذلك بسهولة على مجموعة واسعة من البنى وأنظمة التشغيل. يستخدم المستخدمون العاديون (المبرمجون) فقط أقسام التهيئة والنهائية (إذا كانوا بحاجة إليها أو يبتعدوا عنها) (وربما بعض وظائف الخطاف الأخرى كما هي موثقة) ولا تقلق بشأن كل هذا وكل شيء يجب أن يعمل فقط. ولكن لا يزال من المثير للاهتمام أن ننظر إلى هذا الكود ونحاول على الأقل فهمه (لم أفهم حتى الآن سوى أجزاء منه ، لكنني لست أحد المتسللين الذين يقومون بالتجميع ، لذلك لست بحاجة إلى معرفة كل شيء).

  9. #9

    Quote Originally Posted by ;
    تحميل DLLs في DllMain فكرة سيئة للغاية:
    http://msdn.microsoft.com/en-us/libr...(v=VS.85).aspx
    لأنه قد يؤدي ذلك إلى إنشاء حلقات التبعية في ترتيب تحميل DLL. في هذه الحالة البسيطة (ملزمة بيثون الخاصة بي) لا يمكن أن تنشأ هذه المشكلة. ولكن من الصحيح أن هناك حاجة إلى توخي الحذر وأن الأشياء البسيطة والمكتفية ذاتياً تتم داخل DllMain () لأن نظام التشغيل هو الذي يطلق هذه الوظيفة في النهاية ، وليس من السهل الاعتماد على الترتيب الدقيق الذي يطلق عليه في الحالات المعقدة أو في أي الأوقات تسمى بالضبط.

  10. #10
    شكرا معلومات مفيدة جدا.

أذونات النشر

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •  
  • رمز BB مفعل
  • الابتسامات مفعلة
  • رمز[IMG] مفعل
  • رمز [VIDEO] مفعل
  • رمز HTML غير مفعل
This website uses cookies
We use cookies to store session information to facilitate remembering your login information, to allow you to save website preferences, to personalise content and ads, to provide social media features and to analyse our traffic. We also share information about your use of our site with our social media, advertising and analytics partners.