Tôi đã cố gắng sử dụng DriveInfo.IsReady, nhưng nó trả về false nếu đĩa mềm chưa định dạng nằm trong ổ đĩa.Làm cách nào để phát hiện xem có đĩa mềm trong ổ đĩa?
Trả lời
Bạn luôn có thể thử đọc một sector từ đĩa mềm và xem nó có thành công hay không.
Tôi không có đầu mối làm thế nào để làm điều đó trong .NET, nhưng đây là tương đương C/C++.
SetLastError(0);
HANDLE h = CreateFile("\\\\.\\A:", ...);
if (!ReadFile(h, buf, 512, &bytes_read, 0))
{
DWORD err = GetLastError();
}
Nói đơn giản: bạn không thể. Ổ đĩa mềm không hỗ trợ điều đó.
Ổ đĩa mềm DO hỗ trợ phát hiện phương tiện truyền thông, Hãy thử lưu từ Notepad vào một ổ đĩa trống hoặc ổ đĩa với một đĩa chưa định dạng trong đó. Notepad đưa ra hai câu trả lời khác nhau. –
Lưu ý rằng trước khi nó không thành công, đèn truy cập đĩa sẽ sáng. Notepad cố gắng đọc một sector trên đĩa, và nếu nó thất bại, nó sẽ hiển thị thông báo "please insert a disk". – OwenP
còn khoảng DriveNotFoundException?
Tôi không có ổ đĩa mềm trong máy tính tôi đang sử dụng, vì vậy tôi không thể kiểm tra nó. Ngoại lệ này được ném khi ổ đĩa không khả dụng, đó là điều kiện mà tôi tin rằng sẽ được đáp ứng khi ổ đĩa mềm rỗng.
Cho đến nay tôi không thể tìm thấy bất kỳ phương thức .Net nào hoạt động khác với trường hợp không có đĩa mềm và trường hợp đĩa mềm chưa định dạng –
lẽ bạn có thể nhìn vào các API quản lý đĩa ... Điều đó sẽ có thể cho bạn biết dung lượng của đĩa (dù là định dạng hay không) ...
Và nếu không có năng lực, không có đĩa mềm chèn ...
Bẫy cả DiscNotReady (Không có đĩa trong ổ đĩa), và viết Ngoại lệ (Đối với hệ thống tệp không hợp lệ/không được định dạng).
Jonas thứ làm việc:
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;
}
Ngọt ngào :) Hacking vui vẻ! –
Rất đẹp nhưng nó không thực sự giống như .NET như bạn đã hỏi .. –
Nếu bạn chèn một đĩa mềm chưa định dạng trong ổ đĩa mềm của bạn, mục đích của họ bình thường để sử dụng ổ đĩa mềm với đĩa mềm đó. Bước đầu tiên sau đó là logic để định dạng đĩa mềm đó.
Vì vậy, nếu bạn phát hiện một ổ đĩa mềm không sẵn sàng, bạn có thể thử để định dạng đĩa, và nếu điều đó thành công, ổ đĩa mềm của bạn sẽ trở nên sẵn sàng với một đĩa mềm mới được định dạng trong đó. Nếu định dạng của ổ đĩa mềm chưa được giải quyết không thành công, thì không có đĩa mềm trong đó, hoặc đĩa mềm trong đó bị lỗi. Sau đó, bạn có thể hiển thị một thông báo để chèn một đĩa mềm vào ổ đĩa.
- 1. Phát hiện xem đĩa có nằm trong ổ đĩa DVD
- 2. Có cách nào để phát hiện xem ổ đĩa có phải là ổ SSD không?
- 3. Làm cách nào để phát hiện xem ổ đĩa có thùng rác trong C#?
- 4. Làm cách nào để phát hiện xem có ổ đĩa cụ thể nào là ổ cứng không?
- 5. Làm cách nào để hủy kích hoạt ổ đĩa vật lý LVM2 để tháo ổ đĩa?
- 6. Phân biệt theo chương trình giữa Ổ đĩa mềm USB và Ổ đĩa Flash USB trong Windows
- 7. Phát hiện sự kiện gắn ổ đĩa trong C#
- 8. Làm thế nào tôi có thể phát hiện khi ổ đĩa flash được cắm trong Linux?
- 9. Phát hiện khi ổ đĩa được lắp trên OS X
- 10. OpenCV: Phát hiện các đốm tròn/ổ đĩa Domino
- 11. Phát hiện hoạt động đĩa trong Delphi
- 12. Làm thế nào để phát hiện khi ổ đĩa di động được lắp bằng C#?
- 13. Làm thế nào để thực hiện IO mức thấp với ổ flash USB trong BIOS (so với đĩa mềm)?
- 14. Ổ đĩa thể rắn có đủ tốt để ngăn chặn sự lo lắng về tắc nghẽn ổ đĩa IO không?
- 15. Lập trình kiểm tra xem ký tự ổ đĩa có phải là ổ đĩa mạng/chia sẻ
- 16. Làm thế nào để bạn phát hiện các ký tự ổ đĩa cứng chính như ổ C:?
- 17. Lỗi khi lắp ổ đĩa
- 18. Làm thế nào để kiểm tra xem ổ đĩa CD được mở hay đóng trong linux?
- 19. Làm thế nào để phát hiện ổ đĩa flash plug-in trong Windows bằng cách sử dụng Python?
- 20. Liệt kê các ổ đĩa ngoài
- 21. Nhanh chóng phát hiện loại bỏ các ổ đĩa IDE cố định trong Windows XP
- 22. Làm cách nào để nhận được số ổ đĩa cứng của ổ USB trên OS X?
- 23. Lấy tên ổ đĩa (như trái ngược với ký tự ổ đĩa) trong Java
- 24. Làm thế nào để xác định xem một ổ đĩa là ảo hoặc vật lý
- 25. script để ánh xạ ổ đĩa mạng
- 26. Làm thế nào để phát hiện bằng cách sử dụng C# nếu một ổ đĩa được cắm vào cổng USB?
- 27. Ổ đĩa danh sách Haskell trong Windows
- 28. Làm cách nào để phát triển ứng dụng Amiga có khả năng khởi động từ đĩa mềm (NON-DOS)?
- 29. IOKhông đủ dung lượng ổ đĩa khi truy cập ổ đĩa gắn Citrix
- 30. Tăng dung lượng ổ đĩa thể hiện AWS EC2 ubuntu
Có một đĩa mềm :) – FlySwat
Phản hồi đầu tiên của tôi là: "Nhìn xuống ổ đĩa." Nhưng tôi nhận ra điều đó có lẽ vô giá trị. Tại sao có ổ đĩa mềm nữa? –
Điều đó có ý nghĩa phải không? Đĩa UNFORMATTED rõ ràng là chưa sẵn sàng :-) –