在SCSI模式中,函数是有效的
但在Direct IO模式,使用函数会直接报错
——我遇到的问题是,Rust语言使用canonicalize函数获得文件的绝对路径,当canonicalize失败的时候,`cargo build`命令会直接失败
一个简单的例子,如果B盘是SCSI而Z盘是DirectIO
代码: 全选
cd/d Z:\
cargo build hello
cd/d B:\
cargo build hello
cd hello
rem rust函数开始
echo fn main() { > src/main.rs
echo println!("{:?}",std::fs::canonicalize(r"B:\hello\src")); >> src/main.rs
echo println!("{:?}",std::fs::canonicalize(r"Z:\hello\src")); >> src/main.rs
echo } >> src/main.rs
rem rust函数结束
cargo run
代码: 全选
Compiling hello v0.1.0 (B:\hello)
Finished dev [unoptimized + debuginfo] target(s) in 1.20s
Running `target\debug\hello.exe`
Ok("\\\\?\\B:\\hello\\src")
Err(Os { code: 1, kind: Other, message: "函数不正确。" })
希望在Primo Ramdisk的Direct IO功能能在下一个版本中加入对Rust语言的支持
(类似的东西似乎在.net 4.8版本也出现了(https://docs.microsoft.com/en-us/dotnet ... mework-4.8),虽然标记了过时,虽然我没测试这东西是否支持directIO盘,但我仍然有点害怕那天把unity游戏拷到directIO盘之后报BUG)
(现在只好SCSI保平安了)