2012-12-05 31 views
11

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

ManagementClass driveClass = new ManagementClass("Win32_DiskDrive"); 
    ManagementObjectCollection drives = driveClass.GetInstances(); 

लेकिन इसकी केवल स्ट्रिंग्स कि संपत्तियों में एसएसडी शामिल देता है, मुझे लगता है कि इस पर निर्भर नहीं कर सकते?

मुझे इसे जांचने का सीधा तरीका चाहिए?

+0

आप एसएसडी ड्राइव के हार्डवेयर पहचानकर्ताओं की एक सूची बनाए रख सकते हैं, और इसके खिलाफ जांच सकते हैं। निश्चित रूप से, यह एक विकसित सूची है ... – ppeterka

+2

+1 बीट होने के लिए। मैं देख सकता था कि आप स्मृति या डिस्क आधारित दृष्टिकोण के बीच फ़्लॉप करने के लिए इसका उपयोग कैसे कर सकते हैं। पहुंच समय को मापने में समय लगता है। – Paparazzi

+0

हाइब्रिड ड्राइव भी एक खो कारण है। मेरे नए लैपटॉप में एक मिला, सी: ड्राइव 20 जीबी एसएसडी के साथ एक हार्ड डिस्क है। यह सिर्फ एक समस्या नहीं है जिसे कभी हल करने की आवश्यकता है। –

उत्तर

9

डब्लूएमआई इसे आसानी से निर्धारित करने में सक्षम नहीं होगा। Tell whether SSD or not in C#

MSDN ब्लॉग से एक उद्धरण: वहाँ एक समाधान यहाँ है कि एक ही एल्गोरिथ्म विंडोज 7 यदि एक डिस्क (: Windows 7 Enhancements for Solid-State Drives, पृष्ठ 8 और भी यहाँ: Windows 7 Disk Defragmenter User Interface Overview एल्गोरिथ्म के बारे में अधिक यहाँ) एसएसडी है निर्धारित करने के लिए उपयोग करता है पर आधारित होता है :

डिस्क डिफ़्रेगमेंटर डिवाइस डिवाइस एटीए पहचान डिवाइस कमांड के माध्यम से सीधे पूछताछ के परिणाम को देखता है। Defragmenter IOCTL_ATA_PASS_THROUGH अनुरोध करता है और IDENTIFY_DEVICE_DATA संरचना की जांच करता है। यदि NomimalMediaRotationRate को 1 पर सेट किया गया है, तो यह डिस्क एक एसएसडी मानी जाती है। नवीनतम एसएसडी सेटिंग 217 (जिसे नाममात्र मीडिया रोटेशन दर 1 तक रिपोर्ट करने के लिए उपयोग किया जाता है) द्वारा आदेश का जवाब देगा। शब्द 217 को 2007 में एटीए 8-एसीएस विनिर्देशन में पेश किया गया था।

+0

इस दृष्टिकोण के साथ समस्या यह है कि यह पता नहीं लगाएगा कि स्टोरेज एक एसएसडी है, लेकिन जांच करें कि इसमें कम विलंबता और उच्च थ्रूपुट है या नहीं। इसलिए ओपी को मेरा सवाल। :-) – CodeCaster

+2

@ कोडकस्टर - मैं सहमत नहीं हूं। यह नाममात्र एटीए मीडिया रोटेशन दर का परीक्षण करने में सक्षम है जिसे एसएसडी के लिए 1 ('नॉन रोटेटिंग मीडिया') पर सेट किया जाना चाहिए। Http://www.t13.org/documents/UploadedDocuments/docs2007/D1699r4a-ATA8-ACS देखें।पीडीएफ पेज 13 9, हालांकि कुछ एसएसडी डिस्क/ड्राइवर वास्तव में इसे लागू नहीं कर सकते हैं। –

+0

आप सही हैं, मैंने बस कोड स्किम किया और उसे याद किया। – CodeCaster