PDA

View Full Version : كنترل حافظه



pm_hamze
سه شنبه 25 تیر 1387, 23:04 عصر
با سلام
آيا برنامه اي مي توان نوشت كه مرتب حافظه را چك كند و اطلاعات مقيم در حافظه را بررسي و نسبت به بعضي از كارها رفتار هاي خاصي را تعريف كنيم.مانند برنامه هاي آنتي ويروس كه حافظه را كنترل مي كنند و اگر رفتار برنامه در حال اجرا مشكل داشت فايل را از كار مي اندازند.

Hsimple11
سه شنبه 25 تیر 1387, 23:39 عصر
برنامه نویسی Low-Level را در همین سایت جستجو کنید.

pm_hamze
یک شنبه 30 تیر 1387, 14:51 عصر
دوست عزیز بررسی کردم اصلا ربطی به سوال من نداشت

Hsimple11
یک شنبه 30 تیر 1387, 15:57 عصر
مانند برنامه هاي آنتي ويروس كه حافظه را كنترل مي كنند و اگر رفتار برنامه در حال اجرا مشكل داشت فايل را از كار مي اندازند.

برنامه نویسی Low-Level بر خلاف High-Level و Very-High Level Programming بطور ویژه با سخت افزارها سر و کار دارند. اعمالی شبیه کنترل کردن حافظه رم مانند آن چیزی که آنتی ویروس ها انجام میدهند اغلب با اینچنین زبانهایی نوشته میشود مانند اسمبلی.

دنیای دلفی
یک شنبه 30 تیر 1387, 16:44 عصر
وقتي حرف حافظه پيش مي آيد بايد چند نكته را در نظر گرفت :
آيا مي خواهيد مستقيم روي حافظه كار كنيد .
آيا مي خواهيد روي حافظه اشغال شده توسط فايلها در Ram كار كنيد .

به صورت كلي با داشتن هندل فايلهاي لود شده درون حافظه هم اطلاعات را خواند و هم در حافظه نوشت .

براي توضيحات بيشتر توابع WriteProcessMemory و ReadProcessMemory را بررسي كنيد .

vcldeveloper
یک شنبه 30 تیر 1387, 21:00 عصر
برنامه نویسی Low-Level بر خلاف High-Level و Very-High Level Programming بطور ویژه با سخت افزارها سر و کار دارند. اعمالی شبیه کنترل کردن حافظه رم مانند آن چیزی که آنتی ویروس ها انجام میدهند اغلب با اینچنین زبانهایی نوشته میشود مانند اسمبلی.
توی ویندوز زبان اهمیت خاصی نداره. بطور معمول، هر چیزی شما با هر کدوم از اون زبان ها (اسمبلی، C و...) بنویسید، یک برنامه در سطح User Mode محسوب میشه و نمیتونه مستقیما به سخت افزار دسترسی داشته باشه و همیشه محدودیت هایی از طرف سیستم عامل بر آن اعمال میشه. برای نوشتن برنامه هایی که مستقیما به سخت افزار دسترسی دارند، یا محدودیت User Mode را ندارند، باید برای سطح کرنل ویندوز برنامه نوشت. SDK این کار هم با SDK معمولی ویندوز فرق میکنه و بهش DDK گفته میشه. آنتی ویروس ها هم از توابع سطح کرنل برای کنترل پروسه ها استفاده می کنند.

Hsimple11
یک شنبه 30 تیر 1387, 21:29 عصر
برای نوشتن برنامه هایی که مستقیما به سخت افزار دسترسی دارند، یا محدودیت User Mode را ندارند، باید برای سطح کرنل ویندوز برنامه نوشت. SDK این کار هم با SDK معمولی ویندوز فرق میکنه و بهش DDK گفته میشه.

با تشکر.

اگر امکان دارد در مورد توابع Kernel و DDK توضیح بیشتری بدین.

vcldeveloper
یک شنبه 30 تیر 1387, 21:43 عصر
اگر امکان دارد در مورد توابع Kernel و DDK توضیح بیشتری بدین.
من خودم با DDK کار نکردم، از طرفی، کامپایلر دلفی هم کدهای Kernel Mode تولید نمیکنه، ولی کامپایلر C++ Builder میکنه.
معماری فوق بخاطر ساختار CPUهای x86 هست که دو سطح برای برنامه ها و اختیارات آنها در نظر میگیرند، یکی Ring 0 یا Kernel Mode، یکی هم Ring 3 یا User Mode. برای اطلاع بیشتر می تونید اینجا را ببینید:
http://en.wikipedia.org/wiki/Kernel_mode

برای برنامه های Kernel Mode هم می تونید اینجا را ببینید:
http://en.wikipedia.org/wiki/Windows_Driver_Model
http://www.cmkrnl.com/faq.html
و سایت رسمی اش:
http://www.microsoft.com/whdc/devtools/WDK/default.mspx