2009-12-22 31 views
11

Tôi đang cố gắng tìm ra không gian đĩa sẵn có trong cửa sổ. Đối với điều này, tôi cần phải có được một danh sách các ổ đĩa có sẵn, sau đó kiểm tra xem ổ đĩa nào là ổ đĩa cục bộ và sau đó truy vấn các byte có sẵn trên mỗi ổ đĩa cục bộ.Số ổ đĩa tối đa trong cửa sổ?

tôi là một chút khó khăn về phía trước, nơi mà các API trình bày hai chức năng:

  1. GetLogicalDrives (http://msdn.microsoft.com/en-us/library/aa364972(VS.85).aspx) mang đến cho bạn một DWORD với các bit set (bit 0 nếu ổ đĩa A là hiện tại, bit 1 nếu ổ B vv)
  2. GetLogicalDriveStrings (http://msdn.microsoft.com/en-us/library/aa364975(VS.85).aspx) cung cấp cho bạn chuỗi thực tế.

Bây giờ, mặc dù tôi sẽ sử dụng chuỗi sau này, tôi muốn sử dụng tùy chọn đầu tiên để truy vấn. Tuy nhiên, trên hệ thống của tôi một DWORD là typedef-ed để "unsigned long", là 4 byte, trong khi ký tự ổ đĩa chỉ có phạm vi A-Z (26 - tôi nghĩ - ký tự). Rõ ràng, người ta có thể xác định hơn 26 ổ đĩa trên hệ thống của họ (tuy nhiên không chắc họ sẽ làm như vậy) - vì vậy tôi đã tự hỏi nếu có bất kỳ quy ước nào cho các ổ đĩa đó. Ai đó có thể chỉ cho tôi một nguồn tài nguyên về điều này?

Cảm ơn.

+0

"Rõ ràng, người ta có thể xác định hơn 26 ổ đĩa trên hệ thống của họ" - bạn có chắc không? Tôi đang có một thời gian khó tưởng tượng như thế nào. –

+6

Bạn có thể gắn ổ đĩa trong một thư mục thay vì chỉ định chúng –

+0

Thêm vị trí mạng sẽ là một cách để thực hiện nó (mở MyComputer-> nhấp chuột phải-> thêm vị trí mạng). Tôi có một trong những người được xác định ngay bây giờ trên máy tính của tôi. – laura

Trả lời

9
  1. DWORD luôn là 4 byte, bất kể hệ thống (là loại Win32).

  2. Tối đa cho chữ cái ổ đĩa trong Windows là 26. Vì bảng chữ cái tiếng Anh chỉ có 26 chữ cái :). Tuy nhiên, Windows cho phép hai cách để gắn kết một khối lượng:

    • đến một ký tự ổ đĩa
    • vào một thư mục (trên ổ đĩa NTFS). Bạn có thể gắn một ổ đĩa vào nhiều vị trí (nhưng không nhiều hơn một ký tự ổ đĩa, IIRC). GUI cho tác vụ này được trình bày bởi Bảng điều khiển -> Công cụ quản trị -> Quản lý máy tính -> Quản lý đĩa.

Nếu bạn muốn có nhiều hơn 26 ổ đĩa với các ổ đĩa thêm là chuyển hướng để ổ đĩa đã hoạt động và đang ổn với họ không hoạt động bình thường trong hầu hết các chương trình, sau đó bạn có thể gán nhiều hơn với những điều sau đây phương pháp (được cảnh báo họ thậm chí sẽ không hiển thị trong file explorer):

subst ♪: C:\Temp\ 
cd /D ♪:\ 

và để xóa chúng (họ cũng không được bảo quản thông qua khởi động lại):

subst /D ♪: 

Bạn có thể liệt kê tất cả các ổ đĩa và điểm lắp của chúng như được mô tả trong this article.

+0

(1) vì vậy, tôi đang sửa chữa. – laura

1

Bạn có thể sử dụng WMI. Các truy vấn WMI sau nên liệt kê tất cả các ổ đĩa:

SELECT * FROM Win32_DiskDrive 
+0

Tôi đang sử dụng gcc dưới mingw, vì vậy tôi không nghĩ rằng tôi có quyền truy cập vào WMI. 'GetLogicalDriveStrings' làm điều tương tự, nhưng nó không phải là những gì tôi hỏi. – laura

+0

Đúng, tôi đã đọc sai. Xin lỗi –

1

Nó không đủ để liệt kê MS-DOS ổ đĩa (có thể có nhiều nhất 26 trong số họ, bằng cách này, mặc dù mỗi thể bị ràng buộc hai lần, một lần trên toàn cầu và một lần cục bộ trong phiên của bạn), ví dụ, một ổ đĩa có thể được gắn vào một thư mục. Những gì bạn muốn có lẽ là liệt kê tất cả các tập trong hệ thống, sử dụng FindFirstVolume et al. Hãy xem MSDN example có liên quan.

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