برمجيا الوصول مروحة وحدة المعالجة المركزية على جهاز كمبيوتر محمول ؟ (ويندوز)

StackOverflow https://stackoverflow.com/questions/485448

  •  20-08-2019
  •  | 
  •  

سؤال

هل هناك معيار Windows الطريقة أن تفعل أشياء مثل "تبدأ مروحة" ، "انخفاض السرعة" أو ما شابه ذلك ، من C/C++?

لدي شكوك قد تكون ACPI, ولكن أنا ضعيف فانية و لا يمكن قراءة هذا النوع من المستندات.

تحرير:على سبيل المثالويندوز 7 يتيح لك الاختيار في خيارات خطة الطاقة الخاصة بك مثل "التبريد السلبي" (فقط عند الحصول على أشياء مثيرة؟) مقابل"التبريد الفعال" (الحفاظ على وحدة المعالجة المركزية بشكل استباقي بارد؟).يبدو أن نظام التشغيل لا يكون وسيلة للتحكم في المروحة بشكل عام.

هل كانت مفيدة؟

المحلول

أنا في هذه اللحظة العمل على المشروع ، من بين أمور أخرى ، ضوابط الكمبيوتر المشجعين.في الأساس فإن الجماهير هي التي تسيطر عليها superIO رقاقة جهاز الكمبيوتر الخاص بك.يمكننا الوصول إلى الشريحة مباشرة باستخدام منفذ تعيينها IO, و من هنا يمكن أن نصل إلى المنطقية مروحة الجهاز.باستخدام منفذ تعيينها IO يتطلب رمز لتشغيل في وضع kernel ، ولكن ويندوز لا تقدم أي برامج تشغيل عام ميناء IO (لسبب وجيه ، لأنه هو أداة قوية جدا) ، لذلك كتبنا الخاصة بنا السائق المستخدمة في ذلك.

إذا كنت ترغب في السير في هذا الطريق ، تحتاج أساسا المعرفة في مجالين:سائق التنمية و كيفية الوصول وتفسير superIO رقاقة المعلومات.عندما بدأنا هذا المشروع ، لم نكن نعرف أي شيء في أي من هذه المجالات ، لذلك تم التعلم من خلال التصفح و القراءة و أخيرا القيام.إلى اكتساب المعرفة ، كنا خصوصا ساعدت من خلال النظر في هذه الروابط:

  1. على WDK, وهو برنامج تشغيل Windows عدة.تحتاج هذه إلى ترجمة أي سائق تكتب ويندوز ، مع أنه يأتي الكثير من التعليمات البرمجية المصدر على سبيل المثال برامج التشغيل ، بما في ذلك سائق العامة الميناء المعين IO ، ودعا الأزيز.
  2. WinIO وقد البرمجية المصدر ل سائق في C ، a dll في C التي برمجيا تثبيت وتحميل برنامج التشغيل هذا ، وبعض C# رمز واجهة المستخدم الرسومية التي تحميل dll ويقرأ/يكتب إلى الموانئ.السائق هي مشابهة جدا في الأزيز.
  3. lm-أجهزة الاستشعار هو لينكس المشروع, أن, من بين أمور أخرى ، بالكشف عن superIO رقاقة./prog/كشف/أجهزة الاستشعار الكشف هو برنامج perl, التي لا يكشف, ونحن قد قضيت بعض الوقت في الذهاب من خلال كود لمعرفة كيفية واجهة مع superIO رقاقة.
  4. عندما كنا نمر lm-أجهزة الاستشعار رمز, كان من الجميل جدا أن يكون لديك أدوات مثل RapidDriver و RW-كل شيء, لأنها سمحت لنا محاكاة تشغيل أجهزة الاستشعار الكشف.هذا الأخير هو أكثر قوة و مفيد جدا لتصوير IO الفضاء ، بينما يوفر سهولة الوصول إلى بعض العمليات التي خريطة أفضل منها في مجسات الكشف عن (قراءة/كتابة بايت إلى ميناء)
  5. أخيرا, كنت بحاجة إلى العثور على ورقة البيانات الخاصة بك superIO رقاقة.من الأمثلة التي رأيتها ، والبيئة تحكم كل رقاقة توفر وظائف مماثلة (r/w سرعة المروحة قراءة درجة الحرارة قراءة رقاقة جهد فلطي) ، ولكن تختلف في ما يسجل عليك أن تكتب من أجل الحصول على هذه الوظيفة. هذا المكان كان جميع أوراق البيانات لدينا اللازمة حتى الآن.

نصائح أخرى

إذا كنت تريد شيئا سريعا فقط أقل من المشجعين إلى مستوى حيث يمكنك معرفة الأشياء لا افراط هناك برنامج سبيدفان للقيام بذلك.معرفة كيفية تكوين ذلك في الإصدارات في وقت مبكر تلقائيا أقل من المشجعين إلى 50% على بدء تشغيل الكمبيوتر مؤلم جدا أن أول النهج ببساطة بايت-التصحيح أن تبدأ فقط superio تمكنت فان كان في سرعة أقل.أحدث الإصدارات لا تزال صعبة بعض الشيء لكن ممكن هناك الرسومية المنزلق نظام يشبه الصوت التعادل إلا أن المحور x هو temp و y هو سرعة المروحة.قمت بسحب عليهم واحدا تلو الآخر.بعد معرفة كيفية الحصول على تحكم يدوي للمروحة تريد, هذا هو الخطوة التالية.

هناك مشروع يهدف إلى رصد الأجهزة (مثل المشجعين) مع C#:http://code.google.com/p/open-hardware-monitor/

لم يكن على نطاق واسع بدا في ذلك ، ولكن البرمجية المصدر و استخدام WinRing0.sys على الأقل يعطي الانطباع أنه إذا كنت تعرف ما مروحة وحدة تحكم لديك ورقة البيانات ، ينبغي أن تكون قابلة للتعديل أيضا مجموعة القيم بدلا من مجرد الحصول عليها.أنا لا أعرف ما هو أداة مناسبة (بجوار مصحح أخطاء kernel) أن ننظر إلى ما سبيدفان لا ، إذا كنت تفضل أن تتجسس وتقليد سبيدفان بدلا من النظر في أوراق البيانات و يحاولون.

نعم، سيكون ACPI، ونافذتي المعرفة لا تعطي الكثير / أي سيطرة على أن من الفضاء المستخدم. لذلك عليك أن تبدأ التلويث مع السائقين، والذي هو شبه مستحيل على النوافذ.

وقال ذلك، جوجل يكشف هناك عدد قليل من النوافذ المفتوحة المصدر المكتبات لهذا لأجهزة معينة. .. وذلك اعتمادا على الجهاز كنت قد تكون قادرة على العثور على شيء.

وACPI قد أو قد لا تسمح لك لضبط إعدادات المروحة. بعض تطبيقات BIOS قد لا تسمح أن تحكم على الرغم - أنها قد يجبر تحكم اعتمادا على إعدادات BIOS / CMOS. يمكن للمرء أن يكون من الصعب، ل<م> جيدة حالة الاستخدام حيث السيطرة BIOS (حتى مخصصة) غير كافية. لقد جئت عبر الحالات التي كانت تحكم BIOS في الواقع غير كاف، ولكن ليس لجميع المنصات اللوحة الممكنة.

ويندوز إدارة الأجهزة مكتبة (WMI) يفعل توفير Win32_Fan الدرجة و حتى طريقة SetSpeed. للأسف، وتقول مستندات لم يتم تنفيذ هذا، لذلك اعتقد انها ليست مفيدة للغاية. ولكن قد تكون قادرة على السيطرة على الامور من خلال تحديد سلطة الدولة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top