2008-09-25 8 views
5

मैंने DriveInfo.IsReady का उपयोग करने का प्रयास किया, लेकिन ड्राइव में एक unformatted फ्लॉपी है, तो यह झूठी वापसी करता है।ड्राइव में फ्लॉपी होने पर मैं कैसे पता लगा सकता हूं?

+1

क्या एक फ्लॉपी :) – FlySwat

+0

मेरी पहली प्रतिक्रिया थी: "ड्राइव पर नीचे देखो।" लेकिन मुझे एहसास हुआ कि शायद बेकार है। अब फ्लॉपी ड्राइव क्यों है? –

+0

क्या यह समझ में आता है? एक अनौपचारिक डिस्क स्पष्ट रूप से तैयार नहीं है :-) –

उत्तर

3

आप हमेशा फ्लॉपी से एक क्षेत्र को पढ़ने की कोशिश कर सकते हैं और देख सकते हैं कि यह सफल होता है या नहीं।

मुझे कोई संकेत नहीं है कि इसे .NET में कैसे किया जाए, लेकिन यहां सी/सी ++ समतुल्य है।

SetLastError(0); 
HANDLE h = CreateFile("\\\\.\\A:", ...); 
if (!ReadFile(h, buf, 512, &bytes_read, 0)) 
{ 
    DWORD err = GetLastError(); 
} 

CreateFile, ReadFile

1

बस बोल रहा है: आप नहीं कर सकते। फ्लॉपी ड्राइव इसका समर्थन नहीं करते हैं।

+0

फ्लॉपी ड्राइव डीओ से इस ब्लॉग एंट्री को भी देखें समर्थन मीडिया खोज, नोटपैड से एक खाली ड्राइव में या एक ड्राइव में एक अनफॉर्म डिस्क के साथ ड्राइव करने की कोशिश करें। नोटपैड दो अलग-अलग प्रतिक्रिया देता है। –

+0

ध्यान दें कि इससे पहले कि यह विफल हो जाए, डिस्क एक्सेस लाइट चालू हो जाता है। नोटपैड डिस्क पर किसी सेक्टर को पढ़ने की कोशिश करता है, और यदि यह विफल रहता है तो यह "डिस्क डालें" संदेश प्रदर्शित करता है। – OwenP

0

DriveNotFoundException के बारे में क्या?

मेरे पास वर्तमान में कंप्यूटर में फ्लॉपी ड्राइव नहीं है, इसलिए मैं इसका परीक्षण नहीं कर सकता। ड्राइव अप अनुपलब्ध होने पर यह अपवाद फेंक दिया जाता है, जो एक शर्त है जिसे मेरा मानना ​​है कि फ़्लॉपी ड्राइव खाली होने पर मुझे मिलेगा।

+0

अब तक मुझे कोई भी नेट विधि नहीं मिल रही है जो फ्लॉपी केस और अनफॉर्मेटेड फ्लॉपी केस –

0

शायद आप डिस्क प्रबंधन एपीआई देख सकते हैं ... यही कारण है कि आप डिस्क (चाहे स्वरूपित या नहीं) की क्षमता बताने के लिए सक्षम होना चाहिए ...

और कोई क्षमता नहीं है, तो वहाँ कोई फ्लॉपी है डाला गया ...

0

डिस्कनोट्रेडी (ड्राइव में डिस्क के लिए) दोनों ट्रैप करें, और अपवाद लिखें (अमान्य फ़ाइल सिस्टम के लिए/स्वरूपित नहीं)।

0

जोनास सामान काम किया:

bool MyDll::Class1::HasFloppy(wchar_t driveLetter) { 
wchar_t path[] = L"\\\\.\\A:"; 
path[ 4 ] = driveLetter; 

SetLastError(0); 
HANDLE drive = CreateFile(path, //__in  LPCTSTR lpFileName, 
      GENERIC_READ,  //__in  DWORD dwDesiredAccess, 
      0,    //__in  DWORD dwShareMode, 
      0,    //__in_opt LPSECURITY_ATTRIBUTES lpSecurityAttributes, 
      OPEN_EXISTING, //__in  DWORD dwCreationDisposition, 
      0,    //__in  DWORD dwFlagsAndAttributes, 
      0     //__in_opt HANDLE hTemplateFile 
); 

DWORD bytes_read; 
char buf[ 512 ]; 
DWORD err(0); 
if(!ReadFile(drive, buf, 512, &bytes_read, 0)) 
    err = GetLastError(); 

CloseHandle(drive); 
return err != ERROR_NOT_READY; 

}

+0

मीठे के लिए अलग-अलग कार्य करती है :) हैप्पी हैकिंग! –

+0

बहुत अच्छा है लेकिन यह वास्तव में .NET जैसा नहीं है जैसा आपने पूछा था .. –

0

आप अपने फ्लॉपी ड्राइव में एक अस्वरूपित फ्लॉपी डिस्क सम्मिलित हैं, उद्देश्य सामान्य रूप से उपयोग करने के लिए है कि हो सकता है उस फ्लॉपी डिस्क के साथ फ्लॉपी ड्राइव। फ्लॉपी डिस्क को प्रारूपित करने के लिए पहला चरण तार्किक रूप से होता है।

तो, यदि आप एक गैर-तैयार फ्लॉपी ड्राइव का पता लगाते हैं, तो आप डिस्क को प्रारूपित करने का प्रयास कर सकते हैं, और यदि यह सफल होता है, तो आपकी फ्लॉपी ड्राइव उसमें एक नए स्वरूपित फ्लॉपी के साथ तैयार होनी चाहिए। यदि पहले से ही फ्लॉपी ड्राइव का प्रारूप विफल रहता है, तो इसमें कोई फ्लॉपी डिस्क नहीं है, या इसमें फ्लॉपी डिस्क दोषपूर्ण है। फिर आप ड्राइव में फ्लॉपी डिस्क डालने के लिए एक संदेश दिखा सकते हैं।

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

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