ملفات مكتبة مايكروسوفت ويندوز
يدعم نظام التشغيل مايكروسوفت ويندوز ومجموعة تطوير البرامج (SDK) الخاصة به مجموعة من المكتبات المشتركة التي يمكن للبرامج استخدامها للوصول إلى واجهة برمجة تطبيقات ويندوز (Windows API) . تقدم هذه المقالة نظرة عامة على المكتبات الأساسية المضمنة في تثبيت ويندوز الحديث، والتي تُبنى عليها معظم تطبيقات ويندوز .
مصادر المكتبة
يحتوي نظام التشغيل ويندوز على نسخ مُجمّعة من هذه المكتبات تُعرف باسم المكتبات المرتبطة ديناميكيًا ( .dll )، وهي مكتبات تنفيذية يمكن استخدامها من قِبل برامج متعددة مع تحميل نسخة واحدة فقط من المكتبة في الذاكرة . تُعرف هذه المكتبات عادةً باسم مكتبات النظام ، ويمكن لجميع البرامج المُثبّتة على النظام استخدامها.
يُوزّع نظام Windows SDK أيضًا نسخًا مُجمّعة من هذه المكتبات، تُعرف باسم المكتبات المرتبطة ثابتًا ( .lib )، وهي مكتبات غير قابلة للتنفيذ، يُمكن تضمينها كليًا أو جزئيًا في البرنامج عند تجميعه. ومن أشهر مُجمّعات Windows: Microsoft Visual Studio و MinGW .
المكونات الداخلية
NTDLL.DLL
يُصدّر ملف NTDLL.DLL واجهة برمجة تطبيقات ويندوز الأصلية (Native API ). تُعدّ واجهة برمجة التطبيقات الأصلية هي الواجهة التي تستخدمها مكونات نظام التشغيل في وضع المستخدم والتي يجب أن تعمل دون دعم من Win32 أو أنظمة واجهات برمجة التطبيقات الفرعية الأخرى. يتم تنفيذ معظم هذه الواجهة في ملف NTDLL.DLL وفي الجزء العلوي من ntoskrnl.exe (ومشتقاته)، وتُسبق غالبية الرموز المُصدّرة داخل هذه المكتبات بالبادئة Nt ، على سبيل المثال. تُستخدم واجهات برمجة التطبيقات الأصلية أيضًا لتنفيذ العديد من "واجهات برمجة تطبيقات النواة" أو "واجهات برمجة التطبيقات الأساسية" التي يُصدّرها ملف KERNEL32.DLL . [ 1 ] [ 2 ] [ 3 ] لا تستدعي الغالبية العظمى من تطبيقات ويندوز ملف NTDLL.DLL مباشرةً. [ 4 ]NtDisplayString()
تُعتبر التطبيقات المرتبطة مباشرةً بهذه المكتبة مستخدمةً للنظام الفرعي الأصلي ؛ والسبب الرئيسي لوجودها هو تنفيذ مهام يجب تشغيلها في المراحل الأولى من بدء تشغيل النظام قبل توفر نظام Win32 الفرعي. ومن الأمثلة الواضحة والمهمة على ذلك إنشاء عملية نظام Win32 الفرعي، csrss.exe . قبل وجود عملية csrss.exe ، لا يمكن إنشاء أي عمليات Win32، وبالتالي يجب على العملية التي تُنشئها ( Smss.exe ، "مدير الجلسات") استخدام النظام الفرعي الأصلي. وتُعدّ csrss.exe نفسها تطبيقًا من هذا النوع.
على الرغم من أن امتداد ملفاتها هو " .exe "، إلا أنه لا يمكن للمستخدم (أو أي برنامج في نظام التشغيل Win32 أو الأنظمة الفرعية الأخرى) تشغيل التطبيقات الأصلية. ومن الأمثلة على ذلك ملف autochk.exe الذي يُشغّل أداة chkdsk أثناء ظهور شاشة الموت الزرقاء عند بدء تشغيل النظام . ومن الأمثلة البارزة الأخرى الخدمات التي تُنفّذ الأنظمة الفرعية المختلفة، مثل csrss.exe .
على عكس تطبيقات Win32 ، تُنشأ التطبيقات الأصلية داخل كود وقت تشغيل النواة ( ntoskrnl.exe )، ولذلك يجب أن يكون لها نقطة دخول مختلفة ( بدلاً من نقطة الدخول الموجودة في تطبيقات Win32)، [ 2 ] وتحصل على وسائط سطر الأوامر عبر مؤشر إلى بنية في الذاكرة، وتدير ذاكرتها الخاصة باستخدام واجهة برمجة تطبيقات Rtl heap (والتي تُعد واجهات برمجة تطبيقات Win32 heap مجرد أغلفة لها - لا فرق حقيقي هنا)، وتُنهي التنفيذ باستدعاء (بدلاً من ). تُعد مكتبة nt.lib مكتبة شائعة مرتبطة بالتطبيقات الأصلية ، وتحتوي على كود بدء التشغيل للتطبيقات الأصلية، على غرار كيفية توفير وقت تشغيل C لكود بدء التشغيل لتطبيقات Win32. [ 2 ]NtProcessStartup()WinMainCRTStartup()RtlExitUserProcess()ExitProcess()
معظم واجهات برمجة التطبيقات الأصلية غير موثقة أو مدعومة علنًا. وهذا يسمح بتطويرها دون ضمان التوافق مع الإصدارات السابقة ، وبالتالي قد تحدث تغييرات جذرية دون إشعار. يمكن إنشاء التطبيقات الأصلية باستخدام حزمة تطوير برامج تشغيل ويندوز. [ 5 ]
واجهة برمجة تطبيقات Win32
تُنفذ المكتبات الموجودة في هذا القسم مجموعات فرعية مختلفة من واجهة برمجة تطبيقات Win32.
KERNEL32.DLL
يوفر ملف KERNEL32.DLL للتطبيقات معظم واجهات برمجة التطبيقات الأساسية لنظام التشغيل Win32، مثل إدارة الذاكرة ،وعمليات الإدخال/الإخراج ، وإنشاء العمليات والخيوط، ووظائف المزامنة. [ 6 ]
GDI32.DLL
يُصدّر ملف GDI32.DLL وظائف واجهة جهاز الرسومات (GDI) التي تُنفّذ وظائف الرسم الأساسية لإخراجها إلى شاشات العرض والطابعات. ويُستخدم، على سبيل المثال، في إصدار XP من برنامج الرسام (Paint). تستدعي التطبيقات وظائف GDI مباشرةً لتنفيذ عمليات الرسم الأساسية (الخط، المستطيل، القطع الناقص)، وإخراج النصوص، وإدارة الخطوط، ووظائف مماثلة. [ 6 ] [ 7 ]
في البداية، دعمت واجهة برمجة تطبيقات الرسومات (GDI) بطاقات عرض EGA / VGA ذات 16 و256 لونًا، بالإضافة إلى الطابعات أحادية اللون . وقد توسعت وظائفها على مر السنين، وتشمل الآن دعمًا لأشياء مثل خطوط TrueType ، وقنوات ألفا ، وشاشات متعددة . [ 8 ]
USER32.DLL
تُنفّذ مكتبة USER32.DLL مُكوّن المستخدم (USER) الخاص بنظام ويندوز، والذي يُنشئ ويُدير العناصر القياسية لواجهة المستخدم في ويندوز، مثل سطح المكتب والنوافذ والقوائم. وبذلك، تُمكّن البرامج من إنشاء واجهة مستخدم رسومية (GUI) تُحاكي مظهر ويندوز. تستدعي البرامج وظائف من مُكوّن المستخدم (USER) لتنفيذ عمليات مثل إنشاء النوافذ وإدارتها، واستقبال رسائل النوافذ (والتي تتضمن في الغالب مُدخلات المستخدم مثل أحداث الماوس ولوحة المفاتيح، بالإضافة إلى إشعارات نظام التشغيل)، وعرض النصوص في النوافذ، وعرض مربعات الرسائل.
تستدعي العديد من الدوال في ملف USER32.DLL دوال GDI المُصدَّرة من ملف GDI32.DLL لتنفيذ عملية عرض عناصر واجهة المستخدم. كما تستدعي بعض البرامج دوال GDI مباشرةً لتنفيذ عمليات رسم منخفضة المستوى داخل نافذة تم إنشاؤها مسبقًا باستخدام دوال USER32.
COMCTL32.DLL
تُنفّذ مكتبة COMCTL32.DLL مجموعة واسعة من عناصر التحكم القياسية في نظام ويندوز، مثل أشرطة التقدم وقوائم العرض. وتستدعي هذه المكتبة وظائف من كلٍّ من USER32.DLL و GDI32.DLL لإنشاء وإدارة نوافذ عناصر واجهة المستخدم هذه، ووضع عناصر رسومية متنوعة داخلها، وجمع مدخلات المستخدم.
COMDLG32.DLL
تُنفّذ مكتبة COMDLG32.DLL ، مكتبة مربعات الحوار الشائعة، مجموعة واسعة من مربعات حوار ويندوز المصممة لأداء ما تعتبره مايكروسوفت "مهام التطبيقات الشائعة"، مثل مربعات حوار فتح الملفات وحفظها وحفظها باسم. [ 9 ] بدءًا من إصدار ويندوز فيستا، تعتبر مايكروسوفت مربعي حوار "فتح" و"حفظ باسم" اللذين توفرهما هذه المكتبة قديمين، وقد استبدلتهما بواجهة برمجة تطبيقات "Common Item Dialog API". [ 10 ]
WS2_32.DLL
تُنفّذ مكتبة WS2_32.DLL واجهة برمجة تطبيقات Winsock ، التي توفر وظائف شبكات TCP/IP، وتوفر توافقًا جزئيًا مع واجهات برمجة تطبيقات الشبكة الأخرى. يُعدّ كل من wsock.dll و wsock32.dll إصدارات أقدم متوافقة مع نظامي التشغيل ويندوز 3.11 وويندوز 95.
ADVAPI32.DLL
ADVAPI32.DLL ، مكتبة DLL لواجهة برمجة تطبيقات Windows 32 الأساسية المتقدمة، [ 11 ] توفر استدعاءات ووظائف أمان لمعالجة سجل Windows .
NETAPI32.DLL
يوفر ملف NETAPI32.DLL وظائف للاستعلام عن واجهات الشبكة وإدارتها.
OLE32.DLL
يوفر OLE32.DLL نموذج كائن المكون ، بالإضافة إلى ربط الكائنات وتضمينها .
واجهات برمجة التطبيقات الأخرى
SHSCRAP.DLL
يُعدّ ملف SHSCRAP.DLL جزءًا من آلية ربط وتضمين الكائنات (OLE) . وهو يدعم ملفات shell scrap ، التي تُنشأ تلقائيًا عند سحب محتوى مُحدد من تطبيق يدعم OLE إلى نافذة مستكشف الملفات أو سطح المكتب، [ 12 ] ولكن يُمكنك أيضًا استخدام مُجمّع الكائنات لإنشائها. بعد ذلك، يُمكن سحبها إلى تطبيق آخر يدعم OLE.
أُزيلت هذه الخاصية من نظام التشغيل ويندوز فيستا (وبالتالي الإصدارات اللاحقة) لتحسين الأمان والتخلص من الوظائف غير المستخدمة بشكل عام. [ 13 ] استُخدمت ملفات Scrap ( .shs ) من قِبل الفيروسات لأنها قد تحتوي على مجموعة واسعة من الملفات (بما في ذلك التعليمات البرمجية القابلة للتنفيذ)، ولا يظهر امتداد الملف حتى عند تعطيل خيار "إخفاء امتدادات الملفات عن أنواع الملفات المعروفة". [ 14 ] يمكن استعادة هذه الخاصية بنسخ إدخالات التسجيل وملف DLL من نظام ويندوز XP . [ 15 ]
WINMM.DLL
يوفر ملف WINMM.DLL إمكانية الوصول إلى واجهة برمجة تطبيقات الصوت الأصلية لبرنامج WinMM .
IMM32.DLL
IMM32 مسؤول عن استدعاء محرر أساليب الإدخال والتفاعل معه .
مكتبات وقت التشغيل
MSVCRT.DLL، MSVCP*.DLLوCRTDLL.DLL
MSVCRT.DLL هي مكتبة C القياسية لمترجم Visual C++ (MSVC) من الإصدار 4.2 إلى 6.0. توفر هذه المكتبة للبرامج المُجمّعة بواسطة هذه الإصدارات من MSVC معظم وظائف مكتبة C القياسية، بما في ذلك معالجة النصوص، وتخصيص الذاكرة، واستدعاءات الإدخال/الإخراج على نمط C، وغيرها. أما MSVCP*.DLL فهي مكتبة C++ المقابلة.
تم تضمين مكتبة MSVCRT.DLL مع إصدارات ويندوز منذ ويندوز 95 OSR2.5 لاستخدامها من قبل مكونات ويندوز الأخرى؛ أما الإصدارات السابقة فكانت تُشحن مع مكتبة CRTDLL.DLL بدلاً منها. في الإصدارات القديمة من ويندوز، كان يُتوقع من البرامج التي ترتبط بمكتبة MSVCRT.DLL تثبيت نسخة متوافقة منها في مجلد System32، لكن هذا ساهم في مشكلة DLL Hell لأن العديد من برامج التثبيت لم تتحقق من إصدار المكتبة مقارنةً بالإصدار المُثبّت قبل استبداله.
استخدمت إصدارات MSVC السابقة للإصدار 4.0، ومن الإصدار 7.0 إلى الإصدار 12.0، ملفات DLL بأسماء مختلفة لكل إصدار ( MSVCRT20.DLL ، MSVCR70.DLL ، MSVCR71.DLL ، MSVCP110.DLL ، إلخ). يتطلب تثبيت التطبيقات الإصدار المناسب، [ 16 ] وتوفر مايكروسوفت حزم Visual C++ القابلة لإعادة التوزيع لهذا الغرض، مع العلم أن نظام ويندوز عادةً ما يأتي مزودًا بإصدار واحد مثبت مسبقًا.
تُستخدم مكتبة وقت التشغيل هذه بواسطة البرامج المكتوبة بلغة Visual C++ وبعض المترجمات الأخرى (مثل MinGW ). بعض المترجمات لديها مكتبات وقت تشغيل خاصة بها.
UCRT
مع الإصدار 14.0 ( Visual Studio 2015 )، نُقل معظم وقت تشغيل لغة C/C++ إلى مكتبة DLL جديدة، UCRTBASE.DLL، والتي تتوافق بشكل كبير مع معيار C99. [ 17 ] أصبح وقت تشغيل لغة C العالمي ( UCRT ) جزءًا أساسيًا من نظام التشغيل Windows بدءًا من Windows 10، [ 17 ] مما يسمح لجميع المترجمات (سواءً كانت من غير Microsoft، مثل GCC أو Clang / LLVM ) بالربط مع UCRT. [ 18 ] بالإضافة إلى ذلك، تحتاج برامج C/C++ التي تستخدم UCRTBASE.DLL إلى الربط مع مكتبة DLL جديدة أخرى، وهي وقت تشغيل Visual C++. في الإصدار 14.0، كانت هذه المكتبة هي VCRUNTIME140.DLL. [ 19 ] من المحتمل أن يتغير الاسم في الإصدارات اللاحقة، ولكنه لم يتغير حتى الإصدار 17.0.
يتم تضمين شفرة المصدر لمكتبات وقت التشغيل في Visual C++ [ 20 ] للرجوع إليها وتصحيح الأخطاء (على سبيل المثال في C:\Program Files\Microsoft Visual Studio 11.0\VC\crt\src).
مكتبات وقت التشغيل الأخرى
- ATL*.DLL – مكتبة القوالب النشطة
- MFC*.DLL – فئات مؤسسة مايكروسوفت
- MSVBVM60.DLL – آلة افتراضية لـ Visual Basic 6.0 ( برامج Visual Basic.NET تتطلب .NET Framework بدلاً من ذلك)
- VCOMP*.DLL – وقت تشغيلMicrosoft OpenMP
- VCRUNTIME*.DLL – بيئة تشغيل Microsoft Visual C++، لإصدار MSVC 14.0 والإصدارات الأحدث
- MSVCIRT.DLL – مكتبة مايكروسوفت سي++، تحتوي على فئات سي++ المهملة من
<iostream.h>(لاحظ امتداد الملف) لـ MS C 9 و10 (MSVC 2.x، 4.x) (في ذلك الوقت، تم دمج مسودة مكتبة سي++ القياسية داخل MSVCRT.DLL . تم فصلها مع إصدار Visual C++ 5.0)
مكتبات إطار عمل .NET
تتطلب البرامج المكتوبة بلغات C# و Visual Basic.NET و C++/CLI وغيرها من لغات .NET إطار عمل .NET . يحتوي هذا الإطار على العديد من المكتبات (إحداها mscorlib.dll - مكتبة وقت تشغيل الكائنات المشتركة القياسية متعددة اللغات، والتي كانت تُعرف سابقًا باسم مكتبة وقت تشغيل الكائنات المشتركة من Microsoft [ 21 ] ) وما يُسمى بالتجميعات (مثل System.Windows.Forms.dll ).
انظر أيضاً
مراجع
- ↑ إيلام، إلداد (2011). الهندسة العكسية: أسرار الهندسة العكسية . جون وايلي وأولاده. ص 68-69 . ISBN 978-1-118-07976-8.
- 1 2 3 "داخل التطبيقات الأصلية" . مايكروسوفت ليرن . تم الاطلاع عليه بتاريخ 21-07-2025 .
- ↑ روسينوفيتش، مارك أ. وسولومون، ديفيد أ. (2009). أساسيات نظام ويندوز® . دار نشر أورايلي. ص 136. ISBN 978-0-7356-3796-2.
- ↑ مارسو، كارلا وستيلرمان، مات (2006). "ملامح السلوك المعياري في الأنظمة ذات المكتبات المشتركة" . في: نينغ، بينغ؛ وآخرون (محررون). أمن المعلومات والاتصالات: المؤتمر الدولي الثامن، ICICS 2006 - رالي، كارولاينا الشمالية، الولايات المتحدة الأمريكية، 4-7 ديسمبر 2006 - وقائع المؤتمر . سبرينغر. ص 371. ISBN 978-3-540-49496-6.
- ↑ "Windows Server 2003 DDK" . مايكروسوفت .
- 1 2 "تحديد الوظائف في ملفات DLL" . وثائق إطار عمل .NET . مايكروسوفت. 11-03-2022 - عبر Microsoft Learn .
- ↑ انظر أيضًا إلى وثائق تطبيق Wine لملف GDI32.DLL : واجهة برمجة تطبيقات Wine: gdi32.dll
- ↑ يوان ، فينغ (2001). برمجة الرسومات في ويندوز: Win32 GDI و DirectDraw . برنتيس هول بروفيشنال. ص 71. ISBN 978-0-13-086985-2.
- ↑ "ملف رأس Commdlg.h - تطبيقات Win32" . مايكروسوفت ليرن . تم الاطلاع عليه بتاريخ 11 يوليو 2026 .
- ↑ "مكتبة مربعات الحوار الشائعة - تطبيقات Win32" . مايكروسوفت ليرن . تم الاطلاع عليه بتاريخ 21-07-2025 .
- ↑ مايكروسوفت (8 أكتوبر 2009). "كيف يعمل RPC: استدعاء الإجراء عن بُعد (RPC) | مايكروسوفت ليرن" . تم الاطلاع عليه في 11 سبتمبر 2023 .
- ↑ "WD: ما هو ملف Scrap (.shs)؟" . قاعدة معارف مايكروسوفت . مؤرشف من الأصل بتاريخ 11-08-2015.
- ↑ ريموند تشين. "أسرار ويندوز: التخلص من الخردة" . تم الاسترجاع في 21-07-2025 .
- ↑ "VBS.Stages.A" . سيمانتك . مؤرشف من الأصل في 10 نوفمبر 2006.
- ↑ "كيفية فتح ملفات SHS" . تم الاطلاع عليه بتاريخ 14-12-2011 .
- ↑ "مكتبات وقت التشغيل للغة سي" . مؤرشف من الأصل بتاريخ 7 ديسمبر 2011. تم الاطلاع عليه بتاريخ 14 ديسمبر 2011 .
- 1 2 "قم بترقية الكود الخاص بك إلى Universal CRT" .
- ↑ "MSYS2 - البيئات" .
- ↑ "التوافق الثنائي للغة C++ 2015-2022" . 30 يناير 2025.
- ↑ "شفرة المصدر لوظائف وقت التشغيل بلغة C" . 15 سبتمبر 2006.
- ↑ ماذا تعني "ms" في "mscorlib"؟ - تلميح: إنها ليست "Microsoft"" . 31 يناير 2004.
روابط خارجية
- قائمة استدعاءات واجهة برمجة التطبيقات (USER32.DLL) مؤرشفة بتاريخ 21 نوفمبر 2015 على موقع Wayback Machine – نصائح لاستخدام مكتبة عميل واجهة برمجة تطبيقات المستخدم مع Visual Basic
- قائمة استدعاءات واجهة برمجة التطبيقات (KERNEL32.DLL) مؤرشفة بتاريخ 21 نوفمبر 2015 على موقع Wayback Machine – نصائح لاستخدام مكتبة عميل واجهة برمجة تطبيقات النواة مع Visual Basic
- مرجع واجهة برمجة التطبيقات الأصلية
- موقع إلكتروني غير رسمي يوثق معظم طرق واجهة برمجة التطبيقات الأصلية
- استرجاع عنوان قاعدة بيانات KERNEL32.DLL
- واجهات برمجة تطبيقات مايكروسوفت
- مكونات ويندوز
- ملفات ويندوز
