2009-05-13 5 views
6

सोने के लिए हार्ड डिस्क ड्राइव कैसे भेज सकता हूं मेरे पास मेरे कंप्यूटर (7) में बहुत सी हार्ड डिस्क ड्राइव हैं।कोड के आधार पर, मैं

जब उनका उपयोग नहीं किया जाता है तो बिजली विकल्प उन्हें थोड़ी देर बाद सोने के लिए भेजता है। लेकिन चूंकि सबकुछ बहुत शोर करता है, इसलिए जब मैं चाहता हूं कि मैं डिफ़ॉल्ट सिस्टम टाइमआउट के बाद ही उन्हें सोना चाहूंगा।

Windows (XP और ऊपर), अधिमानतः सी # में पर,

मैं कैसे कोड से सोने के लिए एक डिस्क भेज सकते हैं?

धन्यवाद आपकी मदद के लिए अग्रिम में एक बहुत ...

+0

आप कुछ एसएसडी प्राप्त कर सकते हैं। :) – BobbyShaftoe

+0

डब्ल्यूडी कैवियार ग्रीन एसएसडी के लिए एक अच्छा और अधिक किफायती विकल्प है। बहुत अच्छा और शांत। – Michael

+0

मुझे यकीन है कि ऐसा करने का कोई तरीका है, बस किसी ऐसे व्यक्ति से उत्तर प्राप्त करने में उम्र लग सकती है जो इसे अच्छी तरह जानता है। – thomasrutter

उत्तर

0

मैं ईमानदारी से नहीं लगता कि यह करने के लिए संभव है है कि केवल का उपयोग कर सी # (अर्थात .NET फ़्रेमवर्क) द्वारा।

भले ही, मैं WMI और ACPI सीखकर शुरू करूंगा।

यह ऐसी चीज है जो आपको निम्न स्तर की भाषा में ले जाने की आवश्यकता होती है (कम से कम पी \ Invoke के साथ उपयोग करने के लिए एपीआई कॉल को समझने के लिए) क्योंकि इसमें आम तौर पर ऑपरेटिंग सिस्टम या संभवतः निकटता से बातचीत करना शामिल होता है सीधे एक ड्राइवर के साथ।

शायद आप Windows Power Management Functions की जांच करके शुरू कर सकते हैं हालांकि मुझे नहीं लगता कि यह व्यक्तिगत हार्ड ड्राइव के नियंत्रण की अनुमति देता है।

+2

हालांकि ऐसा करने के लिए कोई मूल सी # तरीका नहीं हो सकता है, फिर भी उच्च संभावना है कि इसे अभी भी PInvoke या COM interop के माध्यम से C# से नियंत्रित किया जा सकता है। –

+0

हां, मैंने एक सुधार किया है। मैं जो कहना चाहता था वह यह है कि संभवतः आपको देशी सी ++ में समाधान की तलाश करनी होगी और फिर P \ Invoke का उपयोग करके कार्यान्वयन को सी # में कार्यान्वित करना होगा। –

+0

पिछली बार मैंने wmi के साथ setpowerstate की जांच की, यह कहा कि यह लागू नहीं किया गया है। भी, आप सही हैं, ऐसा लगता है कि मैं बिजली मैंगमेंट कार्यों के साथ व्यक्तिगत ड्राइव को नियंत्रित नहीं कर सकता। या कम से कम मुझे नहीं पता कि यह कैसे करें। आखिरकार, अगर मेरे पास विकल्प नहीं है तो मैं किसी भी भाषा में समाधान ले रहा हूं ... – Jonx

1

मुझे एपीआई को सीधे ऐसा करने के बारे में पता नहीं है लेकिन ऐसे उपकरण हैं जो इसे कर सकते हैं। मैंने देखा है कि Hard Disk Sleeper है। मैंने इसे अपनी मशीनों पर उपयोग नहीं किया है, इसलिए मैं इसकी गुणवत्ता या प्रभावशीलता से बात नहीं कर सकता।

+0

उपकरण 99 की तारीख से है और ऐसा लगता है कि यह एक शेयरवेयर है (पढ़ें, अब और इस्तेमाल नहीं किया जा सकता है) लेकिन धन्यवाद I कोड पसंद करें ... – Jonx

+0

आईडीई/ईआईडी ड्राइव तक सीमित दिखता है। –

+0

शायद मैं एक संकेत यहाँ हैं: http://smartmontools.sourceforge.net/ http://hdparm-win32.dyndns.org/hdparm/ दुर्भाग्य से, मैं अटक कर रहा हूँ के रूप में ऐसा लगता है कि मेरी डिस्क 'कर सकते हैं उस सामान का उपयोग करें क्योंकि वे RAID हैं और इसे स्मार्ट/एटा/सटा डिस्क या विशिष्ट RAID उपचार की आवश्यकता है। – Jonx

1

यदि आप IOCTL_ATA_PASS_THROUGH का उपयोग कर सीधे ड्राइव पर एटीए आदेश भेजते हैं तो ऐसा करना संभव है। आपको SLEEP कमांड को पास करने की आवश्यकता होगी।

मुझे नहीं लगता कि यह सी # के लिए एक परियोजना है।

+0

इसका उपयोग कैसे करें इसका कोई नमूना? किसी भी भाषा में;) msdn पृष्ठ बहुत मदद नहीं करता है ... क्या इसका उपयोग ड्राइवरों में किया जाएगा या इसका उपयोग उपयोगकर्ता मोड प्रोग्राम में किया जा सकता है? – Jonx

1

AFAIK, यह एक एटीए कमांड है जो * स्पिन डाउन टाइम 8 सेट करता है - जिसका अर्थ है कि यह ड्राइव ही बंद हो जाती है। आप सीधे ड्राइव पर कमांड भेजने के लिए IOCTL_ATA_PASS_THROUGH का उपयोग कर सकते हैं - लेकिन मुझे डर है कि आप इसे कुछ न्यूनतम मान पर सेट करने से बेहतर नहीं करेंगे (जो मुझे नहीं पता कि यह क्या है, लेकिन यह एटीए चश्मे में होना चाहिए)।

संपादित करें:

-y , एक IDE ड्राइव बल तुरंत कम बिजली की खपत स्टैंडबाई मोड में प्रवेश करने की आम तौर पर यह नीचे स्पिन के कारण: तो यह एटीए कल्पना में होना चाहिए, सम्मानित hdparm supports it तरह लग रहा है ।

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

hdparm के बाद से

(और अंतर्निहित लिनक्स कर्नेल यह ड्राइव के साथ संवाद करने का उपयोग करता है) जीपीएल है - अगर आप एक एटीए कल्पना आसान नहीं है तुम वहाँ से विशेष पालना करने के लिए सक्षम होना चाहिए।

या, बस win32 port का उपयोग करें।

+0

इसका यह भी अर्थ है कि यह केवल एटा/सटा डिस्क के साथ काम करेगा और जैसा? नोटिस के लिए धन्यवाद कि डिस्क स्वयं ही बंद हो जाती है और आप केवल डाउन टाइम सेट कर सकते हैं ... – Jonx

+0

हाँ - यह केवल एटीए ड्राइव के लिए है। यदि आपके पास एससीएसआई है, तो मुझे लगता है कि आपको एक एससीएसआई स्टॉप यूनिट कमांड भेजना होगा। इसके लिए लिनक्स में एससीआई-टूल्स और एससीआई-निष्क्रिय है। –