20 个版本 (8 个破坏性版本)
0.11.3+winfsp-2.0 | 2024年1月19日 |
---|---|
0.10.0+winfsp-2.0 | 2024年1月19日 |
0.10.0-beta.2+winfsp-2.0 | 2023年9月23日 |
0.7.1+winfsp-2.0 | 2023年5月3日 |
0.5.2+winfsp-1.11 |
|
#242 in Windows API
每月 30 次下载
在 ntptfs-winfsp-rs 中使用
1.5MB
13K SLoC
winfsp-rs
带有示例的 WinFSP 安全 Rust 绑定。
警告
已尽力考虑 Rust 的别名规则,并提供了对 WinFSP 的安全和可靠的包装。然而,与 WinFSP 的 FFI 涉及大量指针,最终变为引用,而 FFI 的性质使得使用 miri 进行测试变得困难。虽然使用 ntptfs 来测试绑定的正确性,但这些绑定仍然可能存在不可靠的情况。
如果您在使用这些绑定的安全 API 时遇到不可靠的情况,请提交错误报告。
用法
默认情况下,winfsp-rs 针对包含的导入库进行构建。要针对已安装的 WinFSP 库进行构建,请启用 system
功能。路径将通过注册表自动确定。
[dependencies.winfsp]
version = "0.11"
features = ["system"]
延迟加载
要启用 WinFSP 的延迟加载,请将 winfsp
添加到 build-dependencies
,并在构建脚本中调用 winfsp::build::winfsp_link_delayload()
。这对于 winfsp-rs 是必需的。
Cargo.toml
[build-dependencies]
winfsp = "0.11"
build.rs
fn main() {
winfsp::build::winfsp_link_delayload();
}
调试
可以使用 debug
功能启用调试输出。调试输出将写入标准输出,并且目前无法配置输出重定向。
[dependencies.winfsp]
features = ["debug"]
在稳定 Rust 上构建
建议您在 nightly Rust 上构建 winfsp-rs,因为它依赖于 io_error_more
和 strict_provenance
。然而,可以在不支持这些功能的情况下在稳定 Rust 上构建 winfsp-rs。
[dependencies.winfsp]
default-features = false
features = ["stable"]
与 windows-sys
一起使用
默认功能下,winfsp
库包含了辅助工具和对 windows
库中错误类型的 From
实现支持。如果希望在未使用 windows
类型的情况下使用 winfsp
,请禁用 windows-rs
库功能。
[dependencies.winfsp]
default-features = false
features = ["stable", "nightly"]
测试
ntptfs-winfsp-rs
,是将 ntptfs
端口移植到 winfsp-rs
,用于测试绑定。它在相同提升级别上通过了 ntptfs
所通过的所有测试。
测试结果
❯ F:\winfsp-tests-x64 --external --resilient +* --case-insensitive-cmp -delete_access_test -getfileattr_test -exec_rename_dir_test -rename_flipflop_test -stream_rename_flipflop_test -stream_getstreaminfo_test -ea*
create_test............................ OK 0.02s
create_fileattr_test................... OK 0.01s
create_readonlydir_test................ OK 0.01s
create_related_test.................... OK 0.00s
create_allocation_test................. OK 0.01s
create_sd_test......................... OK 0.01s
create_notraverse_test................. OK 0.00s
create_backup_test..................... OK 0.00s
create_restore_test.................... OK 0.00s
create_share_test...................... OK 0.01s
create_curdir_test..................... OK 0.00s
create_namelen_test.................... OK 0.01s
getfileinfo_test....................... OK 0.00s
getfileinfo_name_test.................. OK 0.00s
setfileinfo_test....................... OK 0.00s
delete_test............................ OK 0.00s
delete_pending_test.................... OK 0.00s
delete_mmap_test....................... OK 0.00s
delete_standby_test.................... OK 0.07s
delete_ex_test......................... OK 0.01s
rename_test............................ OK 0.02s
rename_backslash_test.................. OK 0.01s
rename_open_test....................... OK 0.00s
rename_caseins_test.................... OK 0.01s
rename_mmap_test....................... OK 0.01s
rename_standby_test.................... OK 0.15s
rename_ex_test......................... OK 0.01s
getvolinfo_test........................ OK 0.00s
setvolinfo_test........................ OK 0.00s
getsecurity_test....................... OK 0.00s
setsecurity_test....................... OK 0.00s
security_stress_meta_test.............. OK 0.24s
rdwr_noncached_test.................... OK 0.02s
rdwr_noncached_overlapped_test......... OK 0.02s
rdwr_cached_test....................... OK 0.02s
rdwr_cached_append_test................ OK 0.01s
rdwr_cached_overlapped_test............ OK 0.02s
rdwr_writethru_test.................... OK 0.01s
rdwr_writethru_append_test............. OK 0.01s
rdwr_writethru_overlapped_test......... OK 0.01s
rdwr_mmap_test......................... OK 0.15s
rdwr_mixed_test........................ OK 0.01s
flush_test............................. OK 0.05s
flush_volume_test...................... OK 0.00s
lock_noncached_test.................... OK 0.02s
lock_noncached_overlapped_test......... OK 0.01s
lock_cached_test....................... OK 0.01s
lock_cached_overlapped_test............ OK 0.01s
querydir_test.......................... OK 0.64s
querydir_nodup_test.................... OK 4.43s
querydir_single_test................... OK 1.78s
querydir_expire_cache_test............. OK 0.00s
querydir_buffer_overflow_test.......... OK 0.00s
querydir_namelen_test.................. OK 0.01s
dirnotify_test......................... OK 1.01s
exec_test.............................. OK 0.02s
exec_delete_test....................... OK 1.03s
exec_rename_test....................... OK 1.03s
reparse_guid_test...................... OK 4.83s
reparse_nfs_test....................... OK 0.00s
reparse_symlink_test................... OK 0.01s
reparse_symlink_relative_test.......... OK 0.04s
stream_create_test..................... OK 0.02s
stream_create_overwrite_test........... OK 0.01s
stream_create_related_test............. OK 0.00s
stream_create_sd_test.................. OK 0.00s
stream_create_share_test............... OK 0.03s
stream_getfileinfo_test................ OK 0.00s
stream_setfileinfo_test................ OK 0.01s
stream_delete_test..................... OK 0.01s
stream_delete_pending_test............. OK 0.01s
stream_getsecurity_test................ OK 0.00s
stream_setsecurity_test................ OK 0.00s
stream_getstreaminfo_expire_cache_test. OK 0.00s
stream_dirnotify_test.................. OK 1.01s
oplock_level1_test..................... OK 1.31s
oplock_level2_test..................... OK 2.48s
oplock_batch_test...................... OK 1.25s
oplock_filter_test..................... OK 1.24s
oplock_rwh_test........................ OK 1.24s
oplock_rw_test......................... OK 1.24s
oplock_rh_test......................... OK 2.48s
oplock_r_test.......................... OK 2.48s
oplock_not_granted_test................ OK 0.00s
wsl_stat_test.......................... OK 0.00s
--- COMPLETE ---
法律
winfsp-rs 依照自由软件基金会发布的 GNU 通用公共许可证第 3 版的条款进行许可。
归属
WinFsp - Windows 文件系统代理
版权(C)Bill Zissimopoulos
https://github.com/winfsp/winfsp
依赖
~130MB
~2M SLoC