سلسلة الدوال الغير نمطية : الجزء الرابع

في هذا الدرس سنقوم بشرح دالة EnumDisplayMonitors وهي دالة تستخدم لجلب شاشات العرض المتاحة داخل نظام التشغيل.
الشرح البرمجي :-
ملاحظة : سيتم ترك روابط للتعرف على الدوال بشكل مفصل لأن شرحها هو خارج اطار هذا الدرس.
سنقوم بتشغيل الشل كود باستخدام دالة EnumDisplayMonitors وهي دالة تستخدم بالاصل لجلب شاشات العرض المتاحة داخل نظام التشغيل .
. الاستغلال سيكون كما في الدالة السابقة عن طريق استبدال الcallback function بالشيل كود الخاص بنا.
في البداية نقوم بتخزين الشيل كود داخل مصفوفة من نوع unsigned char ومن ثم نقوم بحجز مساحة من الذاكرة بحجم الشيل كود ونخزنها داخل متغير من نوع LPVOID
بعدها ننقل الشيل كود الى مساحة الذاكرة التي قمنا بحجزها عن طريق استخدام دالة RtlMoveMemory
والان نقوم باستدعاء دالة EnumDisplayMonitors والتي بدورها تحتوي على عدد من
المتغيرات . المتغير الأول نعطيه قيمة NULL لجلب الشاشة الحالية , وكذلك المتغير الثاني مسؤول عن مساحة المستطيل الذي نريد ان نجلب من خلاله الشاشة, نعطيه قيمة NULL لاننا نريد جلب كافة الشاشة,
, والمتغير الثالث هو عبارة عن دالة من نوع
callback وهي عبارة عن دالة تكون كمدخل في دالة أخرى , يتم استدعائها فور استدعاء الدالة الأولى
ونعطيها قيمة المساحة التي قمنا بحجزها والتي تحتوي على الشيل كود ,لذلك عند
البدأ بعملية الاستدعاء لدالة , سيتم فوراً استدعاء هذه المساحة ومن ثم تشغيل الشيل كود
ونعطي المتغير الاخير قيمة NULL كما في الشكل التالي :-
نقوم الأن بعمل كومبايل ونشغل البرنامج #️⃣
والى هنا نصل لنهاية هذا الدرس , نلتقي في الجزء القادم .
المصادر #️⃣