مدير مراقبة الخدمة
مدير التحكم بالخدمات ( SCM ) هو عملية نظام خاصة ضمن عائلة أنظمة تشغيل ويندوز NT ، تتولى بدء وإيقاف عمليات خدمات ويندوز والتفاعل معها. [ 1 ] وهو موجود في الملف التنفيذي. تتفاعل عمليات الخدمات مع مدير التحكم بالخدمات (SCM) من خلال واجهة برمجة تطبيقات (API) محددة جيدًا ، وتُستخدم واجهة برمجة التطبيقات نفسها داخليًا بواسطة أدوات إدارة خدمات ويندوز التفاعلية، مثل وحدة التحكم الإضافية MMC وأداة سطر الأوامر للتحكم بالخدمات .%SystemRoot%\System32\services.exeServices.mscsc.exe
تطبيق
يعمل ملف SCM التنفيذي Services.exeكبرنامج طرفية في نظام ويندوز، ويتم تشغيله بواسطة عملية Wininit في بداية بدء تشغيل النظام . [ 2 ] وتتمثل وظيفته الرئيسية SvcCtrlMain()في تشغيل جميع الخدمات المُهيأة للتشغيل التلقائي. في البداية، يتم تهيئة قاعدة بيانات داخلية للخدمات المُثبتة عن طريق قراءة مفتاحي التسجيل التاليين:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ServiceGroupOrder\List، والتي تحتوي على أسماء وترتيب مجموعات الخدمات. يحتوي مفتاح التسجيل الخاص بكل خدمة علىGroupقيمة اختيارية تحدد ترتيب تهيئة الخدمة المعنية أو برنامج تشغيل الجهاز ، بالنسبة لمجموعات الخدمات الأخرى.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services[ 3 ] تحتوي قاعدة البيانات الفعلية للخدمات وبرامج تشغيل الأجهزة على ملف `.org/script/services`، ويتم قراءته في قاعدة البيانات الداخلية لنظام إدارة خدمات البرمجيات (SCM). [ 4 ] يقرأ نظام إدارة خدمات البرمجيات قيمة كل خدمةGroup، بالإضافة إلى تبعيات ترتيب التحميل، من مفاتيح التسجيلDependOnGroupالخاصة بهاDependOnService.
في الخطوة التالية، SvcCtrlMain()تستدعي الدالة الرئيسية لـ SCM ScGetBootAndSystemDriverState()الدالة التي تتحقق من تحميل برامج تشغيل الأجهزة التي يجب تشغيلها أثناء بدء التشغيل أو بدء تشغيل النظام بنجاح، ويتم تخزين تلك التي فشل تحميلها في قائمة ScFailedDrivers. ثم يتم إنشاء قناة اتصال مُسماة كواجهة استدعاء إجراء عن بُعد بين SCM وعمليات التحكم في الخدمة (SCPs) التي تتفاعل مع خدمات محددة.\Pipe\Ntsvcs
بعد ذلك، يستدعي ScAutoStartServices()البرنامج الدالة التي تتكرر عبر جميع الخدمات المُصنفة على أنها تبدأ تلقائيًا، مع مراعاة تبعيات ترتيب التحميل المحسوبة. في حالة وجود تبعية دائرية، يتم تسجيل خطأ، ويتم تخطي الخدمة التي تعتمد على خدمة تنتمي إلى مجموعة تأتي لاحقًا في ترتيب التحميل. بالنسبة لخدمات البدء التلقائي المؤجل، لا يؤثر التجميع، ويتم تحميلها في مرحلة لاحقة من بدء تشغيل النظام. [ 5 ]
لكل خدمة يرغب نظام إدارة الخدمات (SCM) في تشغيلها، يستدعي ScStartService()الدالة التي تتحقق من اسم الملف الذي يُشغّل عملية الخدمة، للتأكد من أن الحساب المُحدد للخدمة هو نفسه الحساب الذي تُشغّل عملية الخدمة به. أما كل خدمة لا تُشغّل بهذا الحساب، فيتم تسجيل دخولها Systemعن طريق استدعاء دالة LSASSLogonUserEx() ، التي تبحث بدورها عن كلمات المرور "السرية" المخزنة في HKLM\SECURITY\Policy\Secrets\مفتاح التسجيل، والتي خزّنها نظام إدارة الخدمات (SCP) باستخدام واجهة برمجة التطبيقات LsaStorePrivateData()(API) عند تهيئة الخدمة في الأصل. [ 6 ]
بعد ذلك، ScLogonAndStartImage()يتم استدعاء الدالة لكل خدمة لم يتم تشغيل عملية خدمتها بعد. تُنشأ عمليات الخدمة في حالة تعليق عبر CreateProcessAsUser()واجهة برمجة التطبيقات (API). قبل استئناف تنفيذ عملية الخدمة، \Pipe\Net\NtControlPipeXيتم إنشاء قناة اتصال مُسماة (حيث X هو رقم يتم زيادته مع كل تكرار للخدمة) تعمل كقناة اتصال بين نظام إدارة الخدمة (SCM) وعملية الخدمة. تتصل عملية الخدمة بقناة الاتصال عن طريق استدعاء الدالة StartServiceCtrlDispatcher()، وبعد ذلك يرسل نظام إدارة الخدمة (SCM) أمر "بدء" إلى الخدمة. [ 7 ]
خدمات التشغيل التلقائي المتأخر
أُضيفت خدمات التشغيل التلقائي المؤجل في نظام التشغيل ويندوز فيستا لحل مشكلة تأخر بدء تشغيل النظام، ولتسريع بدء تشغيل الخدمات الحيوية التي لا يمكن تأجيلها. [ 8 ] صُممت طريقة بدء التشغيل التلقائي لتهيئة الخدمات في الأصل لخدمات النظام الأساسية التي تعتمد عليها التطبيقات والخدمات الأخرى. يقوم مدير تكوين الخدمات (SCM) بتهيئة الخدمات المؤجلة فقط بعد معالجة جميع خدمات التشغيل التلقائي غير المؤجلة، وذلك باستدعاء الدالة ScInitDelayStart(). تُضيف هذه الدالة عنصر عمل مؤجل (120 ثانية افتراضيًا) مرتبطًا بخيط عامل مُناسب إلى قائمة الانتظار. باستثناء التهيئة بعد فترة تأخير، لا توجد فروق أخرى بين الخدمات المؤجلة وغير المؤجلة.
برامج تشغيل الأجهزة
الخدمات التي تُعالج Typeقيمتها في سجل النظام بشكل خاص: تمثل هذه الخدمات برامج تشغيل الأجهزة التي تستدعي الدالة التي تُحمّل برنامج التشغيل المناسب (عادةً ملف بامتداد .) والذي يجب أن يكون موجودًا في الدليل. ولهذا الغرض، يتم استدعاء استدعاء النظام ، ويُضاف إلى عملية إدارة التحكم في البرامج.SERVICE_KERNEL_DRIVERSERVICE_FILE_SYSTEM_DRIVERScStartService()ScLoadDeviceDriver().sys%SystemRoot%\System32\Drivers\NtLoadDriverSeLoadDriverPrivilege
أحرف محركات الأقراص الشبكية
يوفر SCM وظيفة إضافية لا علاقة لها بخدمات Windows على الإطلاق: فهو يُعلم تطبيقات واجهة المستخدم الرسومية مثل مستكشف Windows عند إنشاء أو حذف اتصال حرف محرك أقراص الشبكة، عن طريق بث رسائلWM_DEVICECHANGE Windows .
انظر أيضاً
ملحوظات
- ^ روسينوفيتش، سولومون ويونسكو (2009 :79)
- ^ روسينوفيتش، سولومون ويونسكو (2009 :291)
- ↑ "قاعدة بيانات الخدمات المثبتة" . شبكة مطوري مايكروسوفت . تم الاسترجاع في 2011-03-06 .
- ^ روسينوفيتش، سولومون ويونسكو (2009 :292)
- ^ روسينوفيتش، سولومون ويونسكو (2009 :294)
- ^ روسينوفيتش، سولومون ويونسكو (2009 :295)
- ^ روسينوفيتش، سولومون ويونيسكو (2009 :296)
- ^ روسينوفيتش، سولومون ويونسكو (2009 :297)
مراجع
- روسينوفيتش, مارك ; سليمان، داود؛ Ionescu، Alex (2009)، Windows® Internals ( الطبعة الخامسة)، Microsoft Press ، ISBN 978-0-7356-2530-3
- خدمات ويندوز
- مكونات ويندوز
