Windows: make fs to use workspace windows crate (#9350)

Release Notes:

- N/A
This commit is contained in:
张小白 2024-03-15 01:43:06 +08:00 committed by GitHub
parent a183c33367
commit cbf960e979
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 6 additions and 11 deletions

2
Cargo.lock generated
View file

@ -3920,7 +3920,7 @@ dependencies = [
"text",
"time",
"util",
"windows-sys 0.52.0",
"windows 0.53.0",
]
[[package]]

View file

@ -343,6 +343,7 @@ features = [
"Win32_Graphics_DirectComposition",
"Win32_Graphics_Gdi",
"Win32_Security",
"Win32_Storage_FileSystem",
"Win32_System_Com",
"Win32_System_Com_StructuredStorage",
"Win32_System_DataExchange",

View file

@ -43,10 +43,7 @@ fsevent.workspace = true
notify = "6.1.1"
[target.'cfg(target_os = "windows")'.dependencies]
windows-sys = { version = "0.52", features = [
"Win32_Foundation",
"Win32_Storage_FileSystem",
] }
windows.workspace = true
[dev-dependencies]
gpui = { workspace = true, features = ["test-support"] }

View file

@ -1495,7 +1495,7 @@ async fn file_id(path: impl AsRef<Path>) -> Result<u64> {
use std::os::windows::io::AsRawHandle;
use smol::fs::windows::OpenOptionsExt;
use windows_sys::Win32::{
use windows::Win32::{
Foundation::HANDLE,
Storage::FileSystem::{
GetFileInformationByHandle, BY_HANDLE_FILE_INFORMATION, FILE_FLAG_BACKUP_SEMANTICS,
@ -1504,7 +1504,7 @@ async fn file_id(path: impl AsRef<Path>) -> Result<u64> {
let file = smol::fs::OpenOptions::new()
.read(true)
.custom_flags(FILE_FLAG_BACKUP_SEMANTICS)
.custom_flags(FILE_FLAG_BACKUP_SEMANTICS.0)
.open(path)
.await?;
@ -1512,10 +1512,7 @@ async fn file_id(path: impl AsRef<Path>) -> Result<u64> {
// https://learn.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-getfileinformationbyhandle
// This function supports Windows XP+
smol::unblock(move || {
let ret = unsafe { GetFileInformationByHandle(file.as_raw_handle() as HANDLE, &mut info) };
if ret == 0 {
return Err(anyhow!(format!("{}", std::io::Error::last_os_error())));
};
unsafe { GetFileInformationByHandle(HANDLE(file.as_raw_handle() as _), &mut info)? };
Ok(((info.nFileIndexHigh as u64) << 32) | (info.nFileIndexLow as u64))
})