2009-01-27 20 views
17

क्या सी/सी ++ से "स्टार्ट फैन", "कमी की गति" या जैसे चीजों को करने के लिए एक विंडोज मानक तरीका है?प्रोग्राम पर कंप्यूटर पर सीपीयू प्रशंसक का उपयोग करें? (विंडोज़)

मुझे संदेह है कि यह एसीपीआई हो सकता है, लेकिन मैं एक कमजोर प्राणघातक हूं और इस तरह के दस्तावेज नहीं पढ़ सकता।

संपादित करें: उदा। विंडोज 7 आपको अपने पावर प्लान विकल्पों जैसे "निष्क्रिय शीतलन" (केवल तभी जब गर्म हो जाता है) में चयन करने देता है। बनाम "सक्रिय शीतलन" (सीपीयू को सक्रिय रूप से ठंडा रखें?)। ऐसा लगता है कि ओएस के पास आम तौर पर प्रशंसक को नियंत्रित करने का एक तरीका है।

उत्तर

20

मैं इस समय एक परियोजना पर काम कर रहा हूं कि, अन्य चीजों के साथ, कंप्यूटर प्रशंसकों को नियंत्रित करता है। असल में, प्रशंसकों को आपके कंप्यूटर के सुपरियो चिप द्वारा नियंत्रित किया जाता है। हम सीधे पोर्ट-मैप किए गए आईओ का उपयोग करके चिप तक पहुंचते हैं, और वहां से हम लॉजिकल फैन डिवाइस पर जा सकते हैं। पोर्ट मैप किए गए आईओ का उपयोग करने के लिए कोड को कर्नेल मोड में चलाने की आवश्यकता होती है, लेकिन विंडोज जेनेरिक पोर्ट आईओ के लिए किसी भी ड्राइवर की आपूर्ति नहीं करता है (अच्छे कारण से, क्योंकि यह एक बहुत शक्तिशाली उपकरण है), इसलिए हमने अपना खुद का ड्राइवर लिखा, और इसका इस्तेमाल किया।

यदि आप इस मार्ग पर जाना चाहते हैं, तो आपको मूल रूप से दो क्षेत्रों में ज्ञान की आवश्यकता है: ड्राइवर विकास और सुपरियो चिप जानकारी तक पहुंचने और व्याख्या करने के लिए कैसे। जब हमने परियोजना शुरू की, हम इन क्षेत्रों में से किसी एक में कुछ भी नहीं जानते थे, इसलिए यह ब्राउज़िंग, पढ़ना और आखिरकार कर रहा है। ज्ञान हासिल करने के लिए हम विशेष रूप से इन कड़ियों को देखकर मदद की गई है:

  1. WDK, जो Windows ड्राइवर किट है। आपको विंडोज़ के लिए लिखने वाले किसी भी ड्राइवर को संकलित करने की आवश्यकता है, इसके साथ ही पोर्टियो नामक सामान्य पोर्ट-मैप किए गए आईओ के लिए ड्राइवर समेत ड्राइवरों के लिए बहुत सारे स्रोत कोड आते हैं।
  2. WinIO सी में ड्राइवर के लिए स्रोत कोड है, सी में एक डीएल जो प्रोग्रामेटिक रूप से उस ड्राइवर को स्थापित करता है और लोड करता है, और एक जीयूआई के लिए कुछ सी # कोड, जो डीएलएल लोड करता है और बंदरगाहों को पढ़ता/लिखता है। चालक पोर्टियो में एक जैसा ही है।
  3. lm-sensors, एक लिनक्स परियोजना है कि अन्य बातों के अलावा, अपने superio चिप का पता लगाता है।/Prog/पता लगाने/सेंसर: पता लगाएं पर्ल कार्यक्रम, कि पता लगाने करता है, और हम कुछ समय के कोड के माध्यम से जा एक superio चिप के साथ इंटरफेस करने के लिए कैसे को देखने के लिए खर्च किया है।
  4. जब हम एलएम-सेंसर कोड के माध्यम से जा रहे थे, तो RapidDriver और RW-everything जैसे टूल रखना बहुत अच्छा था, क्योंकि उन्होंने हमें सेंसर-डिटेक्ट के एक अनुकरण को अनुकरण करने की अनुमति दी थी।उत्तरार्द्ध अधिक शक्तिशाली है, और आईओ स्पेस को देखने में बहुत मददगार है, जबकि पूर्व कुछ परिचालनों तक आसान पहुंच प्रदान करता है जो सेंसर-डिटेक्ट (पोर्ट को बाइट पढ़ना/लिखना) में बेहतर नक्शा देता है
  5. अंत में, आप अपने सुपरियो चिप के डेटाशीट को खोजने की आवश्यकता है। उदाहरणों से, मैंने देखा है, प्रत्येक चिप के पर्यावरण नियंत्रक समान कार्यक्षमता प्रदान करते हैं (आर/डब्ल्यू प्रशंसक गति, पढ़ने का तापमान, चिप वोल्टेज पढ़ें), लेकिन इस कार्यक्षमता को प्राप्त करने के लिए आपको किस रजिस्ट्रार को लिखना है, उसमें भिन्नता है । This स्थान में सभी डेटाशीट हैं, हमें अभी तक इसकी आवश्यकता है।
+1

एसीपीआई यहां खेलता है? सैद्धांतिक रूप से, कोई डीएसडीटी को पैच कर सकता है, एएसएल कंपाइलर के साथ संकलित कर सकता है, पैच की गई तालिका लोड कर सकता है, और फिर प्रशंसक गति उस पैच किए गए तर्क द्वारा नियंत्रित की जाएगी। एक और विकल्प nhc.exe का उपयोग करना है, जिसमें एक प्लगइन मॉडल है, जो कि एक डेवलपर को एसीपीआई-प्रबंधित ऑब्जेक्ट्स को नियंत्रित करने के लिए कोड लिखने की अनुमति देता है। – Cheeso

1

हां, यह एसीपीआई होगा, और मेरे ज्ञान के लिए विंडोज उपयोगकर्ता स्थान से उस पर अधिक नियंत्रण नहीं देता है। तो आपको ड्राइवरों के साथ मिलना शुरू करना होगा, जो खिड़कियों पर असंभव है।

जिसके अनुसार, google reveals विशिष्ट हार्डवेयर के लिए इस बात के लिए कुछ खुला स्रोत विंडोज़ पुस्तकालयों देखते हैं ... इसलिए आपके हार्डवेयर पर निर्भर करता है कि आप कुछ खोजने के लिए सक्षम हो सकता है।

0

एसीपीआई आपको प्रशंसक सेटिंग्स को समायोजित करने की अनुमति दे सकता है या नहीं। कुछ BIOS कार्यान्वयन हालांकि उस नियंत्रण को अनुमति नहीं दे सकते हैं - वे BIOS/CMOS सेटिंग्स के आधार पर नियंत्रण को मजबूर कर सकते हैं। अच्छा उपयोग केस जहां बीआईओएस नियंत्रण (यहां तक ​​कि अनुकूलित) अपर्याप्त है, के लिए शायद एक दबाया जा सकता है। मैं उन परिस्थितियों में आया हूं जहां बीआईओएस नियंत्रण वास्तव में अपर्याप्त था, लेकिन सभी संभावित मदरबोर्ड प्लेटफ़ॉर्म के लिए नहीं।

0

विन्डोज़ मैनेजमेंट इंस्ट्रूमेंटेशन लाइब्रेरी (डब्लूएमआई) Win32_Fan Class और यहां तक ​​कि एक सेटस्पेड विधि प्रदान करता है। हां, दस्तावेज़ कहते हैं कि यह लागू नहीं किया गया है, इसलिए मुझे लगता है कि यह बहुत उपयोगी नहीं है। लेकिन आप पावर स्टेटस सेट करके चीजों को नियंत्रित करने में सक्षम हो सकते हैं।

2

आप कुछ असली त्वरित एक स्तर है जहाँ आप चीजों को ज़्यादा गरम नहीं होगा पता करने के लिए करने के लिए सिर्फ निचले प्रशंसकों चाहते हैं, तो ऐसा करने के लिए SpeedFan कार्यक्रम है। कंप्यूटर स्टार्टअप पर 50% तक प्रशंसकों को स्वचालित रूप से कम करने के लिए शुरुआती संस्करणों में इसे कॉन्फ़िगर करने के तरीके को समझना इतना दर्दनाक था कि मेरा पहला दृष्टिकोण केवल एक ही सुपरियो प्रबंधित प्रशंसक को शुरू करने के लिए बाइट-पैच करना था जो मेरे पास कम गति पर था। नए संस्करण अभी भी कठिन हैं लेकिन यह करने योग्य है - एक ग्राफिकल स्लाइडर सिस्टम है जो ऑडियो तुल्यकारक जैसा दिखता है सिवाय इसके कि एक्स अक्ष अस्थायी है और वाई प्रशंसक गति है। आप उन्हें एक-एक करके नीचे खींचें। आपके इच्छित प्रशंसक के लिए मैन्युअल नियंत्रण कैसे प्राप्त करें, यह जानने के बाद, यह अगला कदम है।

साथ सी # हार्डवेयर (प्रशंसकों) की तरह नजर रखने के लिए एक परियोजना है: http://code.google.com/p/open-hardware-monitor/

मैं बड़े पैमाने पर इसे देखा नहीं है, लेकिन स्रोत कोड और WinRing0.sys के उपयोग कम से कम धारणा है कि यदि आप जानते हैं देता है आपके पास कौन सा प्रशंसक नियंत्रक है और डेटाशीट है, इसे केवल उन्हें प्राप्त करने के बजाय मूल्य निर्धारित करने के लिए संशोधित होना चाहिए। मुझे पता नहीं है कि स्पीडफ़ान क्या करता है, यह देखने के लिए कि कौन सा टूल उपयुक्त है (कर्नेल डीबगर के बगल में), यदि आप डेटाशीट को देखने और चीजों को आजमाने की बजाय स्पीडफ़ान को घूमना और नकल करना पसंद करते हैं।

संबंधित मुद्दे