mirror of
https://github.com/VirtualHotBar/NetMount.git
synced 2026-06-08 07:32:23 +08:00
fix: #51 自动分配盘符与现有盘符冲突
修复 Rust 端 find_first_available_drive_letter() 函数中位掩码与盘符映射错误: - 原代码遍历 A-Z 但用 idx=25-i 反转检查位,导致返回的盘符与实际检查的位不匹配 - 修复为正确的遍历方式:从 i=25(Z) 到 i=0(A),确保盘符与位索引一致 同时在前端添加自动分配盘符后的重复检查: - 检查获取的可用盘符是否为空 - 检查获取的盘符是否已被其他挂载占用
This commit is contained in:
@@ -44,9 +44,10 @@ pub fn find_first_available_drive_letter() -> Result<Option<String>, io::Error>
|
||||
}
|
||||
|
||||
// 从 Z 到 A 遍历,找第一个未被占用的盘符
|
||||
for (i, c) in ('A'..='Z').enumerate() {
|
||||
let idx = 25 - i; // Z=25, Y=24, ..., A=0
|
||||
if drive_mask & (1 << idx) == 0 {
|
||||
// 注意:位掩码中 bit 0 = A, bit 1 = B, ..., bit 25 = Z
|
||||
for i in (0..26).rev() {
|
||||
let c = (b'A' + i as u8) as char;
|
||||
if drive_mask & (1 << i) == 0 {
|
||||
return Ok(Some(format!("{}:", c)));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user