2012-12-25 34 views
7

Tôi sử dụng GetLogicalDrives() để lấy tất cả ổ đĩa trên máy tính nhưng chức năng này không chỉ hiển thị sẵn sàng để sử dụng khối lượng mà còn có trình đọc flash trống mà không có thẻ trong đó. Tiếp theo, GetDriveType() hiển thị mã 2 cho khối lượng đó. Và đó là không có vấn đề nếu thẻ flash có mặt hay không trong khe. Một số người đọc đa sản xuất nhiều ổ đĩa không tồn tại như vậy, câu hỏi là làm thế nào tôi có thể xác định được trạng thái chính xác của ổ đĩa đó.cách kiểm tra xem đầu đọc thẻ flash trống có có trong khe cắm USB không?

Đang cố gắng để gọi FindFirstFile() trên ổ không hiện diện như vậy tạo ra lỗi hình ảnh ngay cả trong giao diện điều khiển ứng dụng: Exception Processing Message c0000013 Parameters 75b3bf7c 4 75b3bf7c 75b3bf7c Sau khi báo lỗi như vậy mã tiếp tục chạy, nhưng lỗi này gây phiền nhiễu xuất hiện cho người dùng trong một cửa sổ như các ứng dụng sẽ tạo ra một tai nạn lớn.

Vì vậy, một phương pháp xử lý việc đó sẽ sử dụng FindFirstFile nhưng tôi không biết cách nào để có được lỗi đó ngoài cách của người dùng.

Trả lời

5

Cuối cùng tôi đã tìm thấy! Chìa khóa thành công ở đây là GetVolumeInformation().

Trả về 0 và đặt lỗi cuối cùng thành 21 khi có đầu đọc thẻ trống trong khe cắm USB. :)

1

Dưới đây là một vài sự lựa chọn tuyệt vời:

Đặc biệt:

if(2 == ::getDriveType(<driveletter>))

giá trị trả về của hàm:

DRIVE_UNKNOWN 0: Th không thể xác định loại ổ đĩa e.

DRIVE_NO_ROOT_DIR 1: Đường dẫn gốc không hợp lệ; ví dụ, không có ổ đĩa nào được gắn ở đường dẫn đã chỉ định.

DRIVE_REMOVABLE 2: Biến tần có phương tiện lưu động; ví dụ: ổ đĩa mềm, ổ USB hoặc đầu đọc thẻ flash.

DRIVE_FIXED 3: Biến tần có phương tiện cố định; ví dụ: ổ đĩa cứng hoặc ổ đĩa flash.

DRIVE_REMOTE 4: Biến tần là ổ đĩa từ xa (mạng).

DRIVE_CDROM 5: Biến tần là ổ đĩa CD-ROM.

DRIVE_RAMDISK 6: Ổ đĩa là đĩa RAM.

http://msdn.microsoft.com/en-us/library/windows/desktop/aa364939(v=vs.85).aspx

+0

Đợi đã, tôi biết * rằng ổ USB là loại 2, nhưng đó có thể là ổ đĩa bút hoặc đầu đọc USB có thẻ flash hay không, và tất cả những gì tôi muốn biết là thẻ là hiện tại hoặc đây chỉ là trình giữ chỗ ổ đĩa giả đọc giả. – rsk82

Các vấn đề liên quan