mirror of
https://github.com/winfsp/winfsp.git
synced 2026-03-05 23:29:19 -06:00
Compare commits
1 Commits
master
...
pvt-dirfix
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9db17294da |
20
Changelog.md
20
Changelog.md
@@ -1,26 +1,6 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
|
||||||
## v2.1 (2025)
|
|
||||||
|
|
||||||
- [FIX] Fixes a compatibility problem with certain AntiVirus products (e.g. Trend Micro).
|
|
||||||
|
|
||||||
- [FIX] Fixes a couple of rare BSODs on recent versions of Windows 11. See commits a482183, a2cd697 for details.
|
|
||||||
|
|
||||||
- [FIX] Fixes a rare problem when using `NtCreateFile` to perform "relative" opens on a network drive (see GitHub issue #561).
|
|
||||||
|
|
||||||
- [FIX] Fixes a racing issue with two processes competing to start the FSD discovered during testing.
|
|
||||||
|
|
||||||
|
|
||||||
## v2.1B2 (2024 Beta2)
|
|
||||||
|
|
||||||
- [FIX] Fixes a rare BSOD on recent versions of Windows. See commit a482183 for details.
|
|
||||||
|
|
||||||
- [FIX] Fixes a rare problem when using `NtCreateFile` to perform "relative" opens on a network drive (see GitHub issue #561).
|
|
||||||
|
|
||||||
- [FIX] Fixes a racing issue with two processes competing to start the FSD discovered during testing.
|
|
||||||
|
|
||||||
|
|
||||||
## v2.1B1 (2024 Beta1)
|
## v2.1B1 (2024 Beta1)
|
||||||
|
|
||||||
- [FIX] Fixes a rare BSOD on recent versions of Windows. See commit a482183 for details.
|
- [FIX] Fixes a rare BSOD on recent versions of Windows. See commit a482183 for details.
|
||||||
|
|||||||
@@ -60,7 +60,6 @@ CONTRIBUTOR LIST
|
|||||||
|Brett Dutro |brett.dutro at gmail.com
|
|Brett Dutro |brett.dutro at gmail.com
|
||||||
|Changjian Gao (Juicedata, https://juicefs.com) |gcj at juicedata.io
|
|Changjian Gao (Juicedata, https://juicefs.com) |gcj at juicedata.io
|
||||||
|Colin Atkinson (Atakama, https://atakama.com) |colin at atakama.com
|
|Colin Atkinson (Atakama, https://atakama.com) |colin at atakama.com
|
||||||
|Ethan Chan (Juicedata, https://juicefs.com) |ethan at juicedata.io
|
|
||||||
|Felix Croes |felix at dworkin.nl
|
|Felix Croes |felix at dworkin.nl
|
||||||
|Francois Karam (KS2, http://www.ks2.fr) |francois.karam at ks2.fr
|
|Francois Karam (KS2, http://www.ks2.fr) |francois.karam at ks2.fr
|
||||||
|Fritz Elfert |fritz-github at fritz-elfert.de
|
|Fritz Elfert |fritz-github at fritz-elfert.de
|
||||||
@@ -68,15 +67,12 @@ CONTRIBUTOR LIST
|
|||||||
|John Oberschelp |john at oberschelp.net
|
|John Oberschelp |john at oberschelp.net
|
||||||
|John Tyner |jtyner at gmail.com
|
|John Tyner |jtyner at gmail.com
|
||||||
|Konstantinos Karakostas |noiredev at protonmail.com
|
|Konstantinos Karakostas |noiredev at protonmail.com
|
||||||
|Naoki Ikeguchi |me at s6n.jp
|
|
||||||
|Paweł Wegner (Google LLC, https://google.com) |lemourin at google.com
|
|Paweł Wegner (Google LLC, https://google.com) |lemourin at google.com
|
||||||
|Pedro Frejo (Arpa System, https://arpasystem.com) |pedro.frejo at arpasystem.com
|
|Pedro Frejo (Arpa System, https://arpasystem.com) |pedro.frejo at arpasystem.com
|
||||||
|Ronny Chan |ronny at ronnychan.ca
|
|Ronny Chan |ronny at ronnychan.ca
|
||||||
|Sam Kelly (DuroSoft Technologies LLC, https://durosoft.com) |sam at durosoft.com
|
|Sam Kelly (DuroSoft Technologies LLC, https://durosoft.com) |sam at durosoft.com
|
||||||
|Santiago Ganis |sganis at gmail.com
|
|Santiago Ganis |sganis at gmail.com
|
||||||
|Thomas Gibson-Robinson |tom at cocotec.io
|
|
||||||
|Tobias Urlaub |saibotu at outlook.de
|
|Tobias Urlaub |saibotu at outlook.de
|
||||||
|Victor Gao |victgm at outlook.com
|
|Victor Gao |victgm at outlook.com
|
||||||
|Zeho Huang |zeho11 at protonmail.com
|
|Zeho Huang |zeho11 at protonmail.com
|
||||||
|Zhangfen Duan |lzcgwushuang at 163.com
|
|
||||||
|===
|
|===
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
<Import Project="$(MsbuildThisFileDirectory)\build.version.props" />
|
<Import Project="$(MsbuildThisFileDirectory)\build.version.props" />
|
||||||
<ItemDefinitionGroup>
|
<ItemDefinitionGroup>
|
||||||
<ClCompile>
|
<ClCompile>
|
||||||
<PreprocessorDefinitions>NTDDI_VERSION=$(MyNtddiVersion);_WIN32_WINNT=$(MyWin32Version);MyProductName=$(MyProductName);MyProductFileName=$(MyProductFileName);MyDescription=$(MyDescription);MyCompanyName=$(MyCompanyName);MyCopyright=$(MyCopyright);MyProductVersion=$(MyProductVersion);MyProductStage=$(MyProductStage);MyVersion=$(MyVersion);MyVersionWithCommas=$(MyVersionWithCommas);MyFullVersion=$(MyFullVersion);MyFspFsctlDeviceClassGuid=$(MyFspFsctlDeviceClassGuid);MyFspFsvrtDeviceClassGuid=$(MyFspFsvrtDeviceClassGuid);MyFsctlRegisterPath=$(MyFsctlRegisterPath);MyNpRegisterPath=$(MyNpRegisterPath);MyEventLogRegisterPath=$(MyEventLogRegisterPath)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>NTDDI_VERSION=0x06010000;_WIN32_WINNT=0x0601;MyProductName=$(MyProductName);MyProductFileName=$(MyProductFileName);MyDescription=$(MyDescription);MyCompanyName=$(MyCompanyName);MyCopyright=$(MyCopyright);MyProductVersion=$(MyProductVersion);MyProductStage=$(MyProductStage);MyVersion=$(MyVersion);MyVersionWithCommas=$(MyVersionWithCommas);MyFullVersion=$(MyFullVersion);MyFspFsctlDeviceClassGuid=$(MyFspFsctlDeviceClassGuid);MyFspFsvrtDeviceClassGuid=$(MyFspFsvrtDeviceClassGuid);MyFsctlRegisterPath=$(MyFsctlRegisterPath);MyNpRegisterPath=$(MyNpRegisterPath);MyEventLogRegisterPath=$(MyEventLogRegisterPath)</PreprocessorDefinitions>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ResourceCompile>
|
<ResourceCompile>
|
||||||
<PreprocessorDefinitions>MyProductName=$(MyProductName);MyProductFileName=$(MyProductFileName);MyDescription=$(MyDescription);MyCompanyName=$(MyCompanyName);MyCopyright=$(MyCopyright);MyProductVersion=$(MyProductVersion);MyProductStage=$(MyProductStage);MyVersion=$(MyVersion);MyVersionWithCommas=$(MyVersionWithCommas);MyFullVersion=$(MyFullVersion);MyFspFsctlDeviceClassGuid=$(MyFspFsctlDeviceClassGuid);MyFspFsvrtDeviceClassGuid=$(MyFspFsvrtDeviceClassGuid);MyFsctlRegisterPath=$(MyFsctlRegisterPath);MyNpRegisterPath=$(MyNpRegisterPath);MyEventLogRegisterPath=$(MyEventLogRegisterPath)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>MyProductName=$(MyProductName);MyProductFileName=$(MyProductFileName);MyDescription=$(MyDescription);MyCompanyName=$(MyCompanyName);MyCopyright=$(MyCopyright);MyProductVersion=$(MyProductVersion);MyProductStage=$(MyProductStage);MyVersion=$(MyVersion);MyVersionWithCommas=$(MyVersionWithCommas);MyFullVersion=$(MyFullVersion);MyFspFsctlDeviceClassGuid=$(MyFspFsctlDeviceClassGuid);MyFspFsvrtDeviceClassGuid=$(MyFspFsvrtDeviceClassGuid);MyFsctlRegisterPath=$(MyFsctlRegisterPath);MyNpRegisterPath=$(MyNpRegisterPath);MyEventLogRegisterPath=$(MyEventLogRegisterPath)</PreprocessorDefinitions>
|
||||||
|
|||||||
@@ -18,12 +18,12 @@
|
|||||||
<MyCompanyName>Navimatics LLC</MyCompanyName>
|
<MyCompanyName>Navimatics LLC</MyCompanyName>
|
||||||
<MyCopyright>2015-$([System.DateTime]::Now.ToString(`yyyy`)) Bill Zissimopoulos</MyCopyright>
|
<MyCopyright>2015-$([System.DateTime]::Now.ToString(`yyyy`)) Bill Zissimopoulos</MyCopyright>
|
||||||
|
|
||||||
<MyCanonicalVersion>2.2</MyCanonicalVersion>
|
<MyCanonicalVersion>2.1</MyCanonicalVersion>
|
||||||
|
|
||||||
<MyProductVersion>2026 Beta1</MyProductVersion>
|
<MyProductVersion>2024 Beta1</MyProductVersion>
|
||||||
<MyProductStage>Beta</MyProductStage>
|
<MyProductStage>Beta</MyProductStage>
|
||||||
|
|
||||||
<MyCrossCert>CrossCert.cer</MyCrossCert>
|
<MyCrossCert>DigiCertGlobalG3CodeSigningECCSHA3842021CA1.cer</MyCrossCert>
|
||||||
<MyCertIssuer>DigiCert</MyCertIssuer>
|
<MyCertIssuer>DigiCert</MyCertIssuer>
|
||||||
|
|
||||||
<MyVersion>$(MyCanonicalVersion).$(MyBuildNumber)</MyVersion>
|
<MyVersion>$(MyCanonicalVersion).$(MyBuildNumber)</MyVersion>
|
||||||
@@ -72,22 +72,5 @@
|
|||||||
<MyFsctlRegisterPath>"."</MyFsctlRegisterPath>
|
<MyFsctlRegisterPath>"."</MyFsctlRegisterPath>
|
||||||
<MyNpRegisterPath>"."</MyNpRegisterPath>
|
<MyNpRegisterPath>"."</MyNpRegisterPath>
|
||||||
<MyEventLogRegisterPath>"."</MyEventLogRegisterPath>
|
<MyEventLogRegisterPath>"."</MyEventLogRegisterPath>
|
||||||
|
|
||||||
<!--
|
|
||||||
Target SDK/WDK version
|
|
||||||
|
|
||||||
For VS2019 builds (supports Win7/Win8/Win10+ x86/x64/a64):
|
|
||||||
MyTargetPlatformVersion = 10.0.19041.0
|
|
||||||
MyNtddiVersion = 0x06010000
|
|
||||||
MyWin32Version = 0x0601
|
|
||||||
|
|
||||||
For latest SDK/WDK builds (supports Win10+ x64/a64):
|
|
||||||
MyTargetPlatformVersion = $(LatestTargetPlatformVersion)
|
|
||||||
MyNtddiVersion = 0x0A000006
|
|
||||||
MyWin32Version = 0x0A00
|
|
||||||
-->
|
|
||||||
<MyTargetPlatformVersion>10.0.19041.0</MyTargetPlatformVersion>
|
|
||||||
<MyNtddiVersion>0x06010000</MyNtddiVersion>
|
|
||||||
<MyWin32Version>0x0601</MyWin32Version>
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
</Project>
|
</Project>
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* @file CustomActions.cpp
|
* @file CustomActions.cpp
|
||||||
*
|
*
|
||||||
* @copyright 2015-2026 Bill Zissimopoulos
|
* @copyright 2015-2024 Bill Zissimopoulos
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* This file is part of WinFsp.
|
* This file is part of WinFsp.
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
<ProjectGuid>{95C223E6-B5F1-4FD0-9376-41CDBC824445}</ProjectGuid>
|
<ProjectGuid>{95C223E6-B5F1-4FD0-9376-41CDBC824445}</ProjectGuid>
|
||||||
<RootNamespace>CustomActions</RootNamespace>
|
<RootNamespace>CustomActions</RootNamespace>
|
||||||
<Keyword>Win32Proj</Keyword>
|
<Keyword>Win32Proj</Keyword>
|
||||||
<WindowsTargetPlatformVersion>$(MyTargetPlatformVersion)</WindowsTargetPlatformVersion>
|
<WindowsTargetPlatformVersion>$(LatestTargetPlatformVersion)</WindowsTargetPlatformVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||||
|
|||||||
@@ -31,7 +31,7 @@
|
|||||||
<ProjectGuid>{C4E1E9E5-0959-488E-8C6A-C327CC81BEFB}</ProjectGuid>
|
<ProjectGuid>{C4E1E9E5-0959-488E-8C6A-C327CC81BEFB}</ProjectGuid>
|
||||||
<Keyword>Win32Proj</Keyword>
|
<Keyword>Win32Proj</Keyword>
|
||||||
<RootNamespace>fsbench</RootNamespace>
|
<RootNamespace>fsbench</RootNamespace>
|
||||||
<WindowsTargetPlatformVersion>$(MyTargetPlatformVersion)</WindowsTargetPlatformVersion>
|
<WindowsTargetPlatformVersion>$(LatestTargetPlatformVersion)</WindowsTargetPlatformVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||||
|
|||||||
@@ -31,7 +31,7 @@
|
|||||||
<ProjectGuid>{10757011-749D-4954-873B-AE38D8145472}</ProjectGuid>
|
<ProjectGuid>{10757011-749D-4954-873B-AE38D8145472}</ProjectGuid>
|
||||||
<Keyword>Win32Proj</Keyword>
|
<Keyword>Win32Proj</Keyword>
|
||||||
<RootNamespace>fscrash</RootNamespace>
|
<RootNamespace>fscrash</RootNamespace>
|
||||||
<WindowsTargetPlatformVersion>$(MyTargetPlatformVersion)</WindowsTargetPlatformVersion>
|
<WindowsTargetPlatformVersion>$(LatestTargetPlatformVersion)</WindowsTargetPlatformVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||||
|
|||||||
@@ -31,7 +31,7 @@
|
|||||||
<ProjectGuid>{AA7190E8-877F-4827-8CDD-E0D85F83C8C1}</ProjectGuid>
|
<ProjectGuid>{AA7190E8-877F-4827-8CDD-E0D85F83C8C1}</ProjectGuid>
|
||||||
<Keyword>Win32Proj</Keyword>
|
<Keyword>Win32Proj</Keyword>
|
||||||
<RootNamespace>memfs</RootNamespace>
|
<RootNamespace>memfs</RootNamespace>
|
||||||
<WindowsTargetPlatformVersion>$(MyTargetPlatformVersion)</WindowsTargetPlatformVersion>
|
<WindowsTargetPlatformVersion>$(LatestTargetPlatformVersion)</WindowsTargetPlatformVersion>
|
||||||
<ProjectName>memfs</ProjectName>
|
<ProjectName>memfs</ProjectName>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
|
|||||||
@@ -31,7 +31,7 @@
|
|||||||
<ProjectGuid>{262DF8CC-E7A8-4460-A22C-683CBA322C32}</ProjectGuid>
|
<ProjectGuid>{262DF8CC-E7A8-4460-A22C-683CBA322C32}</ProjectGuid>
|
||||||
<Keyword>Win32Proj</Keyword>
|
<Keyword>Win32Proj</Keyword>
|
||||||
<RootNamespace>winfsptests</RootNamespace>
|
<RootNamespace>winfsptests</RootNamespace>
|
||||||
<WindowsTargetPlatformVersion>$(MyTargetPlatformVersion)</WindowsTargetPlatformVersion>
|
<WindowsTargetPlatformVersion>$(LatestTargetPlatformVersion)</WindowsTargetPlatformVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||||
|
|||||||
@@ -31,7 +31,7 @@
|
|||||||
<ProjectGuid>{1E997BEC-1642-4A5C-B252-852DA094E11E}</ProjectGuid>
|
<ProjectGuid>{1E997BEC-1642-4A5C-B252-852DA094E11E}</ProjectGuid>
|
||||||
<Keyword>Win32Proj</Keyword>
|
<Keyword>Win32Proj</Keyword>
|
||||||
<RootNamespace>fsptool</RootNamespace>
|
<RootNamespace>fsptool</RootNamespace>
|
||||||
<WindowsTargetPlatformVersion>$(MyTargetPlatformVersion)</WindowsTargetPlatformVersion>
|
<WindowsTargetPlatformVersion>$(LatestTargetPlatformVersion)</WindowsTargetPlatformVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||||
|
|||||||
@@ -31,7 +31,7 @@
|
|||||||
<ProjectGuid>{264A5D09-126F-4760-A3F1-4B3B95C925AA}</ProjectGuid>
|
<ProjectGuid>{264A5D09-126F-4760-A3F1-4B3B95C925AA}</ProjectGuid>
|
||||||
<Keyword>Win32Proj</Keyword>
|
<Keyword>Win32Proj</Keyword>
|
||||||
<RootNamespace>launchctl</RootNamespace>
|
<RootNamespace>launchctl</RootNamespace>
|
||||||
<WindowsTargetPlatformVersion>$(MyTargetPlatformVersion)</WindowsTargetPlatformVersion>
|
<WindowsTargetPlatformVersion>$(LatestTargetPlatformVersion)</WindowsTargetPlatformVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||||
|
|||||||
@@ -31,7 +31,7 @@
|
|||||||
<ProjectGuid>{6CDF9411-B852-4EAC-822D-8F930675F17B}</ProjectGuid>
|
<ProjectGuid>{6CDF9411-B852-4EAC-822D-8F930675F17B}</ProjectGuid>
|
||||||
<Keyword>Win32Proj</Keyword>
|
<Keyword>Win32Proj</Keyword>
|
||||||
<RootNamespace>launcher</RootNamespace>
|
<RootNamespace>launcher</RootNamespace>
|
||||||
<WindowsTargetPlatformVersion>$(MyTargetPlatformVersion)</WindowsTargetPlatformVersion>
|
<WindowsTargetPlatformVersion>$(LatestTargetPlatformVersion)</WindowsTargetPlatformVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||||
|
|||||||
@@ -163,7 +163,7 @@ copy /b $(OutDir)fuse3-$(MyProductFileArch).pc + %(FullPath) $(OutDir)fuse3-$(My
|
|||||||
<ProjectGuid>{4A7C0B21-9E10-4C81-92DE-1493EFCF24EB}</ProjectGuid>
|
<ProjectGuid>{4A7C0B21-9E10-4C81-92DE-1493EFCF24EB}</ProjectGuid>
|
||||||
<Keyword>Win32Proj</Keyword>
|
<Keyword>Win32Proj</Keyword>
|
||||||
<RootNamespace>winfspdll</RootNamespace>
|
<RootNamespace>winfspdll</RootNamespace>
|
||||||
<WindowsTargetPlatformVersion>$(MyTargetPlatformVersion)</WindowsTargetPlatformVersion>
|
<WindowsTargetPlatformVersion>$(LatestTargetPlatformVersion)</WindowsTargetPlatformVersion>
|
||||||
<ProjectName>winfsp.dll</ProjectName>
|
<ProjectName>winfsp.dll</ProjectName>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
|
|||||||
@@ -35,7 +35,7 @@
|
|||||||
<Configuration>Debug</Configuration>
|
<Configuration>Debug</Configuration>
|
||||||
<Platform Condition="'$(Platform)' == ''">Win32</Platform>
|
<Platform Condition="'$(Platform)' == ''">Win32</Platform>
|
||||||
<RootNamespace>winfsp</RootNamespace>
|
<RootNamespace>winfsp</RootNamespace>
|
||||||
<WindowsTargetPlatformVersion>$(MyTargetPlatformVersion)</WindowsTargetPlatformVersion>
|
<WindowsTargetPlatformVersion>$(LatestTargetPlatformVersion)</WindowsTargetPlatformVersion>
|
||||||
<ProjectName>winfsp.sys</ProjectName>
|
<ProjectName>winfsp.sys</ProjectName>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
|
|||||||
@@ -5,7 +5,6 @@ This document contains a list of known open-source file systems and file system
|
|||||||
== File Systems
|
== File Systems
|
||||||
|
|
||||||
- https://github.com/wesley1975/blobfs-win[blobfs-win] - The native porting of the blobfs on the windows platform, blobfs can help you mount the Azure Blob storage as the local disk driver, no matter it is a Linux system or a Windows system.
|
- https://github.com/wesley1975/blobfs-win[blobfs-win] - The native porting of the blobfs on the windows platform, blobfs can help you mount the Azure Blob storage as the local disk driver, no matter it is a Linux system or a Windows system.
|
||||||
- https://github.com/buildbarn/bb-remote-execution[buildbarn] - A bazel-compatible remote execution service that uses WinFSP to provide a virtual directory for performing builds
|
|
||||||
- https://github.com/cryptomator/cryptomator[Cryptomator] - Multi-platform transparent client-side encryption of your files in the cloud
|
- https://github.com/cryptomator/cryptomator[Cryptomator] - Multi-platform transparent client-side encryption of your files in the cloud
|
||||||
- https://github.com/vgough/encfs[EncFS] - an Encrypted Filesystem for FUSE
|
- https://github.com/vgough/encfs[EncFS] - an Encrypted Filesystem for FUSE
|
||||||
- https://github.com/lowleveldesign/fsmemfs[fsmemfs] - Memory File System written in F#
|
- https://github.com/lowleveldesign/fsmemfs[fsmemfs] - Memory File System written in F#
|
||||||
@@ -29,7 +28,6 @@ This document contains a list of known open-source file systems and file system
|
|||||||
== File System Libraries
|
== File System Libraries
|
||||||
|
|
||||||
- https://github.com/winfsp/cgofuse[Go: cgofuse] - Cross-platform FUSE library for Go
|
- https://github.com/winfsp/cgofuse[Go: cgofuse] - Cross-platform FUSE library for Go
|
||||||
- https://github.com/aegistudio/go-winfsp[Go: go-winfsp] - WinFSP bindings for Go
|
|
||||||
- https://github.com/SerCeMan/jnr-fuse[Java: jnr-fuse] - FUSE implementation in Java using Java Native Runtime (JNR)
|
- https://github.com/SerCeMan/jnr-fuse[Java: jnr-fuse] - FUSE implementation in Java using Java Native Runtime (JNR)
|
||||||
- https://github.com/jnr-winfsp-team/jnr-winfsp[Java: jnr-winfsp] - A Java binding for WinFsp using Java Native Runtime (JNR)
|
- https://github.com/jnr-winfsp-team/jnr-winfsp[Java: jnr-winfsp] - A Java binding for WinFsp using Java Native Runtime (JNR)
|
||||||
- https://github.com/billziss-gh/fusepy[Python: fusepy] - Simple ctypes bindings for FUSE
|
- https://github.com/billziss-gh/fusepy[Python: fusepy] - Simple ctypes bindings for FUSE
|
||||||
|
|||||||
@@ -416,7 +416,7 @@ typedef struct _FSP_LAUNCH_REG_RECORD {
|
|||||||
<br/>
|
<br/>
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<sub>
|
<sub>
|
||||||
Copyright © 2015-2026 Bill Zissimopoulos
|
Copyright © 2015-2021 Bill Zissimopoulos
|
||||||
<br/>
|
<br/>
|
||||||
Generated with <a href="https://github.com/billziss-gh/prettydoc">prettydoc</a>
|
Generated with <a href="https://github.com/billziss-gh/prettydoc">prettydoc</a>
|
||||||
</sub>
|
</sub>
|
||||||
|
|||||||
@@ -404,59 +404,6 @@ NTSTATUS ( *DeleteReparsePoint)(
|
|||||||
STATUS\_SUCCESS or error code.
|
STATUS\_SUCCESS or error code.
|
||||||
|
|
||||||
|
|
||||||
</blockquote>
|
|
||||||
</details>
|
|
||||||
|
|
||||||
<details>
|
|
||||||
<summary>
|
|
||||||
<b>DispatcherStopped</b> - Inform the file system that its dispatcher has been stopped.
|
|
||||||
</summary>
|
|
||||||
<blockquote>
|
|
||||||
<br/>
|
|
||||||
|
|
||||||
```c
|
|
||||||
VOID ( *DispatcherStopped)(
|
|
||||||
FSP_FILE_SYSTEM *FileSystem,
|
|
||||||
BOOLEAN Normally);
|
|
||||||
```
|
|
||||||
|
|
||||||
**Parameters**
|
|
||||||
|
|
||||||
- _FileSystem_ \- The file system on which this request is posted.
|
|
||||||
- _Normally_ \- TRUE if the file system is being stopped via FspFileSystemStopDispatcher.
|
|
||||||
FALSE if the file system is being stopped because of another reason such
|
|
||||||
as driver unload/uninstall.
|
|
||||||
|
|
||||||
**Discussion**
|
|
||||||
|
|
||||||
Prior to WinFsp v2.0 the FSD would never unmount a file system volume unless
|
|
||||||
the user mode file system requested the unmount. Since WinFsp v2.0 it is possible
|
|
||||||
for the FSD to unmount a file system volume without an explicit user mode file system
|
|
||||||
request. For example, this happens when the FSD is being uninstalled.
|
|
||||||
|
|
||||||
A user mode file system can use this operation to determine when its dispatcher
|
|
||||||
has been stopped. The Normally parameter can be used to determine why the dispatcher
|
|
||||||
was stopped: it is TRUE when the file system is being stopped via
|
|
||||||
FspFileSystemStopDispatcher and FALSE otherwise.
|
|
||||||
|
|
||||||
When the file system receives a request with Normally == TRUE it need not take any
|
|
||||||
extra steps. This case is the same as for pre-v2.0 versions: since the file system
|
|
||||||
stopped the dispatcher via FspFileSystemStopDispatcher, it will likely exit its
|
|
||||||
process soon.
|
|
||||||
|
|
||||||
When the file system receives a request with Normally == FALSE it may need to take
|
|
||||||
extra steps to exit its process as this is not done by default.
|
|
||||||
|
|
||||||
A file system that uses the FspService infrastructure may use the
|
|
||||||
FspFileSystemStopServiceIfNecessary API to correctly handle all cases.
|
|
||||||
|
|
||||||
This operation is the last one that a file system will receive.
|
|
||||||
|
|
||||||
**See Also**
|
|
||||||
|
|
||||||
- FspFileSystemStopServiceIfNecessary
|
|
||||||
|
|
||||||
|
|
||||||
</blockquote>
|
</blockquote>
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
@@ -1708,7 +1655,7 @@ FSP_API NTSTATUS FspFileSystemCreate(
|
|||||||
- _DevicePath_ \- The name of the control device for this file system. This must be either
|
- _DevicePath_ \- The name of the control device for this file system. This must be either
|
||||||
FSP\_FSCTL\_DISK\_DEVICE\_NAME or FSP\_FSCTL\_NET\_DEVICE\_NAME.
|
FSP\_FSCTL\_DISK\_DEVICE\_NAME or FSP\_FSCTL\_NET\_DEVICE\_NAME.
|
||||||
- _VolumeParams_ \- Volume parameters for the newly created file system.
|
- _VolumeParams_ \- Volume parameters for the newly created file system.
|
||||||
- _Interface_ \- A pointer to the operations that implement this user mode file system.
|
- _Interface_ \- A pointer to the actual operations that actually implement this user mode file system.
|
||||||
- _PFileSystem_ \- [out]
|
- _PFileSystem_ \- [out]
|
||||||
Pointer that will receive the file system object created on successful return from this
|
Pointer that will receive the file system object created on successful return from this
|
||||||
call.
|
call.
|
||||||
@@ -2362,39 +2309,6 @@ FSP_API VOID FspFileSystemStopDispatcher(
|
|||||||
- _FileSystem_ \- The file system object.
|
- _FileSystem_ \- The file system object.
|
||||||
|
|
||||||
|
|
||||||
</blockquote>
|
|
||||||
</details>
|
|
||||||
|
|
||||||
<details>
|
|
||||||
<summary>
|
|
||||||
<b>FspFileSystemStopServiceIfNecessary</b> - Stop a file system service, if any.
|
|
||||||
</summary>
|
|
||||||
<blockquote>
|
|
||||||
<br/>
|
|
||||||
|
|
||||||
```c
|
|
||||||
FSP_API VOID FspFileSystemStopServiceIfNecessary(
|
|
||||||
FSP_FILE_SYSTEM *FileSystem,
|
|
||||||
BOOLEAN Normally);
|
|
||||||
```
|
|
||||||
|
|
||||||
**Parameters**
|
|
||||||
|
|
||||||
- _FileSystem_ \- The file system object.
|
|
||||||
- _Normally_ \- TRUE if the file system is being stopped via FspFileSystemStopDispatcher.
|
|
||||||
FALSE if the file system is being stopped because of another reason such
|
|
||||||
as driver unload/uninstall.
|
|
||||||
|
|
||||||
**Discussion**
|
|
||||||
|
|
||||||
This is a helper for implementing the DispatcherStopped operation, but only for file systems
|
|
||||||
that use the FspService infrastructure.
|
|
||||||
|
|
||||||
**See Also**
|
|
||||||
|
|
||||||
- DispatcherStopped
|
|
||||||
|
|
||||||
|
|
||||||
</blockquote>
|
</blockquote>
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
@@ -2737,8 +2651,6 @@ This function starts and runs a service. It executes the Windows StartServiceCtr
|
|||||||
to connect the service process to the Service Control Manager. If the Service Control Manager is
|
to connect the service process to the Service Control Manager. If the Service Control Manager is
|
||||||
not available (and console mode is allowed) it will enter console mode.
|
not available (and console mode is allowed) it will enter console mode.
|
||||||
|
|
||||||
This function should be called once per process.
|
|
||||||
|
|
||||||
|
|
||||||
</blockquote>
|
</blockquote>
|
||||||
</details>
|
</details>
|
||||||
@@ -2863,7 +2775,7 @@ in a clean manner by calling this function.
|
|||||||
<br/>
|
<br/>
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<sub>
|
<sub>
|
||||||
Copyright © 2015-2026 Bill Zissimopoulos
|
Copyright © 2015-2021 Bill Zissimopoulos
|
||||||
<br/>
|
<br/>
|
||||||
Generated with <a href="https://github.com/billziss-gh/prettydoc">prettydoc</a>
|
Generated with <a href="https://github.com/billziss-gh/prettydoc">prettydoc</a>
|
||||||
</sub>
|
</sub>
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* @file tlib/callstack.c
|
* @file tlib/callstack.c
|
||||||
*
|
*
|
||||||
* @copyright 2014-2026 Bill Zissimopoulos
|
* @copyright 2014-2024 Bill Zissimopoulos
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <tlib/callstack.h>
|
#include <tlib/callstack.h>
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* @file tlib/callstack.h
|
* @file tlib/callstack.h
|
||||||
*
|
*
|
||||||
* @copyright 2014-2026 Bill Zissimopoulos
|
* @copyright 2014-2024 Bill Zissimopoulos
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef TLIB_CALLSTACK_H_INCLUDED
|
#ifndef TLIB_CALLSTACK_H_INCLUDED
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* @file tlib/injected/allfunc.h
|
* @file tlib/injected/allfunc.h
|
||||||
*
|
*
|
||||||
* @copyright 2014-2026 Bill Zissimopoulos
|
* @copyright 2014-2024 Bill Zissimopoulos
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef TLIB_INJECTED_ALLFUNC_H_INCLUDED
|
#ifndef TLIB_INJECTED_ALLFUNC_H_INCLUDED
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* @file tlib/injected/curlfunc.c
|
* @file tlib/injected/curlfunc.c
|
||||||
*
|
*
|
||||||
* @copyright 2014-2026 Bill Zissimopoulos
|
* @copyright 2014-2024 Bill Zissimopoulos
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <tlib/injected/curlfunc.h>
|
#include <tlib/injected/curlfunc.h>
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* @file tlib/injected/curlfunc.h
|
* @file tlib/injected/curlfunc.h
|
||||||
*
|
*
|
||||||
* @copyright 2014-2026 Bill Zissimopoulos
|
* @copyright 2014-2024 Bill Zissimopoulos
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef TLIB_INJECTED_CURLFUNC_H_INCLUDED
|
#ifndef TLIB_INJECTED_CURLFUNC_H_INCLUDED
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* @file tlib/injected/stdfunc.c
|
* @file tlib/injected/stdfunc.c
|
||||||
*
|
*
|
||||||
* @copyright 2014-2026 Bill Zissimopoulos
|
* @copyright 2014-2024 Bill Zissimopoulos
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <tlib/injected/stdfunc.h>
|
#include <tlib/injected/stdfunc.h>
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* @file tlib/injected/stdfunc.h
|
* @file tlib/injected/stdfunc.h
|
||||||
*
|
*
|
||||||
* @copyright 2014-2026 Bill Zissimopoulos
|
* @copyright 2014-2024 Bill Zissimopoulos
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef TLIB_INJECTED_STDFUNC_H_INCLUDED
|
#ifndef TLIB_INJECTED_STDFUNC_H_INCLUDED
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* @file tlib/injection.c
|
* @file tlib/injection.c
|
||||||
*
|
*
|
||||||
* @copyright 2014-2026 Bill Zissimopoulos
|
* @copyright 2014-2024 Bill Zissimopoulos
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <tlib/injection.h>
|
#include <tlib/injection.h>
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* @file tlib/injection.h
|
* @file tlib/injection.h
|
||||||
*
|
*
|
||||||
* @copyright 2014-2026 Bill Zissimopoulos
|
* @copyright 2014-2024 Bill Zissimopoulos
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* NOTE: This header may usefully be included multiple times.
|
/* NOTE: This header may usefully be included multiple times.
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* @file tlib/testsuite.c
|
* @file tlib/testsuite.c
|
||||||
*
|
*
|
||||||
* @copyright 2014-2026 Bill Zissimopoulos
|
* @copyright 2014-2024 Bill Zissimopoulos
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <tlib/testsuite.h>
|
#include <tlib/testsuite.h>
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* @file tlib/testsuite.h
|
* @file tlib/testsuite.h
|
||||||
*
|
*
|
||||||
* @copyright 2014-2026 Bill Zissimopoulos
|
* @copyright 2014-2024 Bill Zissimopoulos
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef TLIB_TESTSUITE_H_INCLUDED
|
#ifndef TLIB_TESTSUITE_H_INCLUDED
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
* FUSE: Filesystem in Userspace
|
* FUSE: Filesystem in Userspace
|
||||||
* Copyright (C) 2001-2007 Miklos Szeredi <miklos@szeredi.hu>
|
* Copyright (C) 2001-2007 Miklos Szeredi <miklos@szeredi.hu>
|
||||||
*
|
*
|
||||||
* @copyright 2015-2026 Bill Zissimopoulos
|
* @copyright 2015-2024 Bill Zissimopoulos
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* This file is part of WinFsp.
|
* This file is part of WinFsp.
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
* FUSE: Filesystem in Userspace
|
* FUSE: Filesystem in Userspace
|
||||||
* Copyright (C) 2001-2007 Miklos Szeredi <miklos@szeredi.hu>
|
* Copyright (C) 2001-2007 Miklos Szeredi <miklos@szeredi.hu>
|
||||||
*
|
*
|
||||||
* @copyright 2015-2026 Bill Zissimopoulos
|
* @copyright 2015-2024 Bill Zissimopoulos
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* This file is part of WinFsp.
|
* This file is part of WinFsp.
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
* FUSE: Filesystem in Userspace
|
* FUSE: Filesystem in Userspace
|
||||||
* Copyright (C) 2001-2007 Miklos Szeredi <miklos@szeredi.hu>
|
* Copyright (C) 2001-2007 Miklos Szeredi <miklos@szeredi.hu>
|
||||||
*
|
*
|
||||||
* @copyright 2015-2026 Bill Zissimopoulos
|
* @copyright 2015-2024 Bill Zissimopoulos
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* This file is part of WinFsp.
|
* This file is part of WinFsp.
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
* @file fuse/winfsp_fuse.h
|
* @file fuse/winfsp_fuse.h
|
||||||
* WinFsp FUSE compatible API.
|
* WinFsp FUSE compatible API.
|
||||||
*
|
*
|
||||||
* @copyright 2015-2026 Bill Zissimopoulos
|
* @copyright 2015-2024 Bill Zissimopoulos
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* This file is part of WinFsp.
|
* This file is part of WinFsp.
|
||||||
@@ -27,7 +27,6 @@
|
|||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#if !defined(WINFSP_DLL_INTERNAL)
|
#if !defined(WINFSP_DLL_INTERNAL)
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
* FUSE: Filesystem in Userspace
|
* FUSE: Filesystem in Userspace
|
||||||
* Copyright (C) 2001-2007 Miklos Szeredi <miklos@szeredi.hu>
|
* Copyright (C) 2001-2007 Miklos Szeredi <miklos@szeredi.hu>
|
||||||
*
|
*
|
||||||
* @copyright 2015-2026 Bill Zissimopoulos
|
* @copyright 2015-2024 Bill Zissimopoulos
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* This file is part of WinFsp.
|
* This file is part of WinFsp.
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
* FUSE: Filesystem in Userspace
|
* FUSE: Filesystem in Userspace
|
||||||
* Copyright (C) 2001-2007 Miklos Szeredi <miklos@szeredi.hu>
|
* Copyright (C) 2001-2007 Miklos Szeredi <miklos@szeredi.hu>
|
||||||
*
|
*
|
||||||
* @copyright 2015-2026 Bill Zissimopoulos
|
* @copyright 2015-2024 Bill Zissimopoulos
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* This file is part of WinFsp.
|
* This file is part of WinFsp.
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
* @file fuse3/fuse_opt.h
|
* @file fuse3/fuse_opt.h
|
||||||
* WinFsp FUSE3 compatible API.
|
* WinFsp FUSE3 compatible API.
|
||||||
*
|
*
|
||||||
* @copyright 2015-2026 Bill Zissimopoulos
|
* @copyright 2015-2024 Bill Zissimopoulos
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* This file is part of WinFsp.
|
* This file is part of WinFsp.
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
* @file fuse3/winfsp_fuse.h
|
* @file fuse3/winfsp_fuse.h
|
||||||
* WinFsp FUSE3 compatible API.
|
* WinFsp FUSE3 compatible API.
|
||||||
*
|
*
|
||||||
* @copyright 2015-2026 Bill Zissimopoulos
|
* @copyright 2015-2024 Bill Zissimopoulos
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* This file is part of WinFsp.
|
* This file is part of WinFsp.
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* @file winfsp/fsctl.h
|
* @file winfsp/fsctl.h
|
||||||
*
|
*
|
||||||
* @copyright 2015-2026 Bill Zissimopoulos
|
* @copyright 2015-2024 Bill Zissimopoulos
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* This file is part of WinFsp.
|
* This file is part of WinFsp.
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
* In order to use the WinFsp Launch API a program must include <winfsp/launch.h>
|
* In order to use the WinFsp Launch API a program must include <winfsp/launch.h>
|
||||||
* and link with the winfsp_x64.dll (or winfsp_x86.dll) library.
|
* and link with the winfsp_x64.dll (or winfsp_x86.dll) library.
|
||||||
*
|
*
|
||||||
* @copyright 2015-2026 Bill Zissimopoulos
|
* @copyright 2015-2024 Bill Zissimopoulos
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* This file is part of WinFsp.
|
* This file is part of WinFsp.
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
* In order to use the WinFsp API the user mode file system must include <winfsp/winfsp.h>
|
* In order to use the WinFsp API the user mode file system must include <winfsp/winfsp.h>
|
||||||
* and link with the winfsp_x64.dll (or winfsp_x86.dll) library.
|
* and link with the winfsp_x64.dll (or winfsp_x86.dll) library.
|
||||||
*
|
*
|
||||||
* @copyright 2015-2026 Bill Zissimopoulos
|
* @copyright 2015-2024 Bill Zissimopoulos
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* This file is part of WinFsp.
|
* This file is part of WinFsp.
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
* @file winfsp/winfsp.hpp
|
* @file winfsp/winfsp.hpp
|
||||||
* WinFsp C++ Layer.
|
* WinFsp C++ Layer.
|
||||||
*
|
*
|
||||||
* @copyright 2015-2026 Bill Zissimopoulos
|
* @copyright 2015-2024 Bill Zissimopoulos
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* This file is part of WinFsp.
|
* This file is part of WinFsp.
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* @file fuse/cygfuse.c
|
* @file fuse/cygfuse.c
|
||||||
*
|
*
|
||||||
* @copyright 2015-2026 Bill Zissimopoulos
|
* @copyright 2015-2022 Bill Zissimopoulos
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* This file is part of WinFsp.
|
* This file is part of WinFsp.
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* @file fuse3/cygfuse.c
|
* @file fuse3/cygfuse.c
|
||||||
*
|
*
|
||||||
* @copyright 2015-2026 Bill Zissimopoulos
|
* @copyright 2015-2022 Bill Zissimopoulos
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* This file is part of WinFsp.
|
* This file is part of WinFsp.
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* @file winfsp/fsext.h
|
* @file winfsp/fsext.h
|
||||||
*
|
*
|
||||||
* @copyright 2015-2026 Bill Zissimopoulos
|
* @copyright 2015-2022 Bill Zissimopoulos
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* This file is part of WinFsp.
|
* This file is part of WinFsp.
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* @file dll/debug.c
|
* @file dll/debug.c
|
||||||
*
|
*
|
||||||
* @copyright 2015-2026 Bill Zissimopoulos
|
* @copyright 2015-2024 Bill Zissimopoulos
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* This file is part of WinFsp.
|
* This file is part of WinFsp.
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* @file dll/debuglog.c
|
* @file dll/debuglog.c
|
||||||
*
|
*
|
||||||
* @copyright 2015-2026 Bill Zissimopoulos
|
* @copyright 2015-2024 Bill Zissimopoulos
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* This file is part of WinFsp.
|
* This file is part of WinFsp.
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* @file dll/dirbuf.c
|
* @file dll/dirbuf.c
|
||||||
*
|
*
|
||||||
* @copyright 2015-2026 Bill Zissimopoulos
|
* @copyright 2015-2024 Bill Zissimopoulos
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* This file is part of WinFsp.
|
* This file is part of WinFsp.
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* @file dll/eventlog.c
|
* @file dll/eventlog.c
|
||||||
*
|
*
|
||||||
* @copyright 2015-2026 Bill Zissimopoulos
|
* @copyright 2015-2024 Bill Zissimopoulos
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* This file is part of WinFsp.
|
* This file is part of WinFsp.
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* @file dll/fs.c
|
* @file dll/fs.c
|
||||||
*
|
*
|
||||||
* @copyright 2015-2026 Bill Zissimopoulos
|
* @copyright 2015-2024 Bill Zissimopoulos
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* This file is part of WinFsp.
|
* This file is part of WinFsp.
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* @file dll/fsctl.c
|
* @file dll/fsctl.c
|
||||||
*
|
*
|
||||||
* @copyright 2015-2026 Bill Zissimopoulos
|
* @copyright 2015-2024 Bill Zissimopoulos
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* This file is part of WinFsp.
|
* This file is part of WinFsp.
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* @file dll/fsop.c
|
* @file dll/fsop.c
|
||||||
*
|
*
|
||||||
* @copyright 2015-2026 Bill Zissimopoulos
|
* @copyright 2015-2024 Bill Zissimopoulos
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* This file is part of WinFsp.
|
* This file is part of WinFsp.
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* @file dll/fuse/fuse.c
|
* @file dll/fuse/fuse.c
|
||||||
*
|
*
|
||||||
* @copyright 2015-2026 Bill Zissimopoulos
|
* @copyright 2015-2024 Bill Zissimopoulos
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* This file is part of WinFsp.
|
* This file is part of WinFsp.
|
||||||
@@ -98,7 +98,6 @@ static struct fuse_opt fsp_fuse_core_opts[] =
|
|||||||
FSP_FUSE_CORE_OPT("VolumeInfoTimeout=", set_VolumeInfoTimeout, 1),
|
FSP_FUSE_CORE_OPT("VolumeInfoTimeout=", set_VolumeInfoTimeout, 1),
|
||||||
FSP_FUSE_CORE_OPT("VolumeInfoTimeout=%d", VolumeParams.VolumeInfoTimeout, 0),
|
FSP_FUSE_CORE_OPT("VolumeInfoTimeout=%d", VolumeParams.VolumeInfoTimeout, 0),
|
||||||
FSP_FUSE_CORE_OPT("KeepFileCache=", set_KeepFileCache, 1),
|
FSP_FUSE_CORE_OPT("KeepFileCache=", set_KeepFileCache, 1),
|
||||||
FSP_FUSE_CORE_OPT("FlushOnCleanup=", set_FlushOnCleanup, 1),
|
|
||||||
FSP_FUSE_CORE_OPT("LegacyUnlinkRename=", set_LegacyUnlinkRename, 1),
|
FSP_FUSE_CORE_OPT("LegacyUnlinkRename=", set_LegacyUnlinkRename, 1),
|
||||||
FSP_FUSE_CORE_OPT("ThreadCount=%u", ThreadCount, 0),
|
FSP_FUSE_CORE_OPT("ThreadCount=%u", ThreadCount, 0),
|
||||||
FUSE_OPT_KEY("UNC=", 'U'),
|
FUSE_OPT_KEY("UNC=", 'U'),
|
||||||
@@ -120,8 +119,6 @@ static struct fuse_opt fsp_fuse_core_opts[] =
|
|||||||
FUSE_OPT_KEY("GroupName=", 'g'),
|
FUSE_OPT_KEY("GroupName=", 'g'),
|
||||||
FSP_FUSE_CORE_OPT("--GroupName=", set_gid, 1),
|
FSP_FUSE_CORE_OPT("--GroupName=", set_gid, 1),
|
||||||
FUSE_OPT_KEY("--GroupName=", 'g'),
|
FUSE_OPT_KEY("--GroupName=", 'g'),
|
||||||
|
|
||||||
FSP_FUSE_CORE_OPT("AddWriteEaAccess", add_write_ea_access, 1),
|
|
||||||
|
|
||||||
FUSE_OPT_END,
|
FUSE_OPT_END,
|
||||||
};
|
};
|
||||||
@@ -883,7 +880,7 @@ FSP_FUSE_API struct fuse *fsp_fuse_new(struct fsp_fuse_env *env,
|
|||||||
opt_data.VolumeParams.ReparsePointsAccessCheck = FALSE;
|
opt_data.VolumeParams.ReparsePointsAccessCheck = FALSE;
|
||||||
opt_data.VolumeParams.NamedStreams = FALSE;
|
opt_data.VolumeParams.NamedStreams = FALSE;
|
||||||
opt_data.VolumeParams.ReadOnlyVolume = FALSE;
|
opt_data.VolumeParams.ReadOnlyVolume = FALSE;
|
||||||
opt_data.VolumeParams.PostCleanupWhenModifiedOnly = !opt_data.set_FlushOnCleanup;
|
opt_data.VolumeParams.PostCleanupWhenModifiedOnly = TRUE;
|
||||||
opt_data.VolumeParams.PassQueryDirectoryFileName = TRUE;
|
opt_data.VolumeParams.PassQueryDirectoryFileName = TRUE;
|
||||||
opt_data.VolumeParams.DeviceControl = TRUE;
|
opt_data.VolumeParams.DeviceControl = TRUE;
|
||||||
#if defined(FSP_CFG_REJECT_EARLY_IRP)
|
#if defined(FSP_CFG_REJECT_EARLY_IRP)
|
||||||
@@ -905,11 +902,9 @@ FSP_FUSE_API struct fuse *fsp_fuse_new(struct fsp_fuse_env *env,
|
|||||||
f->set_create_dir_umask = opt_data.set_create_dir_umask; f->create_dir_umask = opt_data.create_dir_umask;
|
f->set_create_dir_umask = opt_data.set_create_dir_umask; f->create_dir_umask = opt_data.create_dir_umask;
|
||||||
f->set_uid = opt_data.set_uid; f->uid = opt_data.uid;
|
f->set_uid = opt_data.set_uid; f->uid = opt_data.uid;
|
||||||
f->set_gid = opt_data.set_gid; f->gid = opt_data.gid;
|
f->set_gid = opt_data.set_gid; f->gid = opt_data.gid;
|
||||||
f->add_write_ea_access = opt_data.add_write_ea_access;
|
|
||||||
f->rellinks = opt_data.rellinks;
|
f->rellinks = opt_data.rellinks;
|
||||||
f->dothidden = opt_data.dothidden;
|
f->dothidden = opt_data.dothidden;
|
||||||
f->ThreadCount = opt_data.ThreadCount;
|
f->ThreadCount = opt_data.ThreadCount;
|
||||||
f->FlushOnCleanup = !!opt_data.set_FlushOnCleanup;
|
|
||||||
memcpy(&f->ops, ops, opsize);
|
memcpy(&f->ops, ops, opsize);
|
||||||
f->data = data;
|
f->data = data;
|
||||||
f->DebugLog = opt_data.debug ? -1 : 0;
|
f->DebugLog = opt_data.debug ? -1 : 0;
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* @file dll/fuse/fuse_compat.c
|
* @file dll/fuse/fuse_compat.c
|
||||||
*
|
*
|
||||||
* @copyright 2015-2026 Bill Zissimopoulos
|
* @copyright 2015-2024 Bill Zissimopoulos
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* This file is part of WinFsp.
|
* This file is part of WinFsp.
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* @file dll/fuse/fuse_intf.c
|
* @file dll/fuse/fuse_intf.c
|
||||||
*
|
*
|
||||||
* @copyright 2015-2026 Bill Zissimopoulos
|
* @copyright 2015-2024 Bill Zissimopoulos
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* This file is part of WinFsp.
|
* This file is part of WinFsp.
|
||||||
@@ -545,39 +545,6 @@ static NTSTATUS fsp_fuse_intf_GetFileInfoFunnel(FSP_FILE_SYSTEM *FileSystem,
|
|||||||
return STATUS_SUCCESS;
|
return STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
static VOID fsp_fuse_intf_AddWriteEaAccess(
|
|
||||||
PSECURITY_DESCRIPTOR SecurityDescriptor)
|
|
||||||
{
|
|
||||||
BOOL DaclPresent, DaclDefaulted;
|
|
||||||
PACL Acl;
|
|
||||||
ACL_SIZE_INFORMATION AclSizeInfo;
|
|
||||||
PACE_HEADER Ace;
|
|
||||||
PACCESS_MASK AccessMask;
|
|
||||||
|
|
||||||
if (!GetSecurityDescriptorDacl(SecurityDescriptor, &DaclPresent, &Acl, &DaclDefaulted))
|
|
||||||
return;
|
|
||||||
if (0 == Acl)
|
|
||||||
return;
|
|
||||||
if (!GetAclInformation(Acl, &AclSizeInfo, sizeof AclSizeInfo, AclSizeInformation))
|
|
||||||
return;
|
|
||||||
|
|
||||||
for (DWORD I = 0; I < AclSizeInfo.AceCount; I++)
|
|
||||||
{
|
|
||||||
if (!GetAce(Acl, I, &Ace))
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (Ace->AceType == ACCESS_ALLOWED_ACE_TYPE)
|
|
||||||
AccessMask = &((PACCESS_ALLOWED_ACE)Ace)->Mask;
|
|
||||||
else if (Ace->AceType == ACCESS_DENIED_ACE_TYPE)
|
|
||||||
AccessMask = &((PACCESS_DENIED_ACE)Ace)->Mask;
|
|
||||||
else
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (*AccessMask & FILE_WRITE_DATA)
|
|
||||||
*AccessMask |= FILE_WRITE_EA;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static NTSTATUS fsp_fuse_intf_GetSecurityEx(FSP_FILE_SYSTEM *FileSystem,
|
static NTSTATUS fsp_fuse_intf_GetSecurityEx(FSP_FILE_SYSTEM *FileSystem,
|
||||||
const char *PosixPath, struct fuse_file_info *fi,
|
const char *PosixPath, struct fuse_file_info *fi,
|
||||||
PUINT32 PFileAttributes,
|
PUINT32 PFileAttributes,
|
||||||
@@ -611,12 +578,8 @@ static NTSTATUS fsp_fuse_intf_GetSecurityEx(FSP_FILE_SYSTEM *FileSystem,
|
|||||||
}
|
}
|
||||||
|
|
||||||
*PSecurityDescriptorSize = SecurityDescriptorSize;
|
*PSecurityDescriptorSize = SecurityDescriptorSize;
|
||||||
if (0 != SecurityDescriptorBuf)
|
if (0 != SecurityDescriptorBuf)
|
||||||
{
|
|
||||||
memcpy(SecurityDescriptorBuf, SecurityDescriptor, SecurityDescriptorSize);
|
memcpy(SecurityDescriptorBuf, SecurityDescriptor, SecurityDescriptorSize);
|
||||||
if (f->add_write_ea_access)
|
|
||||||
fsp_fuse_intf_AddWriteEaAccess(SecurityDescriptorBuf);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (0 != PFileAttributes)
|
if (0 != PFileAttributes)
|
||||||
@@ -1083,12 +1046,13 @@ static NTSTATUS fsp_fuse_intf_Create(FSP_FILE_SYSTEM *FileSystem,
|
|||||||
goto exit;
|
goto exit;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Ignore fuse_file_info::keep_cache.
|
* Ignore fuse_file_info::direct_io, fuse_file_info::keep_cache.
|
||||||
|
* NOTE: Originally WinFsp did not support disabling the cache manager
|
||||||
|
* for an individual file. This is now possible and we should revisit.
|
||||||
|
*
|
||||||
* Ignore fuse_file_info::nonseekable.
|
* Ignore fuse_file_info::nonseekable.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
FspFileSystemGetOperationContext()->Response->Rsp.Create.Opened.DisableCache = fi.direct_io;
|
|
||||||
|
|
||||||
*PFileDesc = filedesc;
|
*PFileDesc = filedesc;
|
||||||
memcpy(FileInfo, &FileInfoBuf, sizeof FileInfoBuf);
|
memcpy(FileInfo, &FileInfoBuf, sizeof FileInfoBuf);
|
||||||
|
|
||||||
@@ -1227,12 +1191,13 @@ static NTSTATUS fsp_fuse_intf_Open(FSP_FILE_SYSTEM *FileSystem,
|
|||||||
goto exit;
|
goto exit;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Ignore fuse_file_info::keep_cache.
|
* Ignore fuse_file_info::direct_io, fuse_file_info::keep_cache.
|
||||||
|
* NOTE: Originally WinFsp did not support disabling the cache manager
|
||||||
|
* for an individual file. This is now possible and we should revisit.
|
||||||
|
*
|
||||||
* Ignore fuse_file_info::nonseekable.
|
* Ignore fuse_file_info::nonseekable.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
FspFileSystemGetOperationContext()->Response->Rsp.Create.Opened.DisableCache = fi.direct_io;
|
|
||||||
|
|
||||||
*PFileDesc = filedesc;
|
*PFileDesc = filedesc;
|
||||||
memcpy(FileInfo, &FileInfoBuf, sizeof FileInfoBuf);
|
memcpy(FileInfo, &FileInfoBuf, sizeof FileInfoBuf);
|
||||||
|
|
||||||
@@ -1340,7 +1305,6 @@ static VOID fsp_fuse_intf_Cleanup(FSP_FILE_SYSTEM *FileSystem,
|
|||||||
{
|
{
|
||||||
struct fuse *f = FileSystem->UserContext;
|
struct fuse *f = FileSystem->UserContext;
|
||||||
struct fsp_fuse_file_desc *filedesc = FileDesc;
|
struct fsp_fuse_file_desc *filedesc = FileDesc;
|
||||||
struct fuse_file_info fi;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* In Windows a DeleteFile/RemoveDirectory is the sequence of the following:
|
* In Windows a DeleteFile/RemoveDirectory is the sequence of the following:
|
||||||
@@ -1367,14 +1331,6 @@ static VOID fsp_fuse_intf_Cleanup(FSP_FILE_SYSTEM *FileSystem,
|
|||||||
* LegacyUnlinkRename option to opt out of the POSIX unlink semantics.
|
* LegacyUnlinkRename option to opt out of the POSIX unlink semantics.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (f->FlushOnCleanup && !filedesc->IsDirectory && !filedesc->IsReparsePoint) {
|
|
||||||
memset(&fi, 0, sizeof fi);
|
|
||||||
fi.flags = filedesc->OpenFlags;
|
|
||||||
fi.fh = filedesc->FileHandle;
|
|
||||||
if (0 != f->ops.flush)
|
|
||||||
f->ops.flush(filedesc->PosixPath, &fi);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Flags & FspCleanupDelete)
|
if (Flags & FspCleanupDelete)
|
||||||
if (filedesc->IsDirectory && !filedesc->IsReparsePoint)
|
if (filedesc->IsDirectory && !filedesc->IsReparsePoint)
|
||||||
{
|
{
|
||||||
@@ -1410,7 +1366,7 @@ static VOID fsp_fuse_intf_Close(FSP_FILE_SYSTEM *FileSystem,
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (!f->FlushOnCleanup && 0 != f->ops.flush)
|
if (0 != f->ops.flush)
|
||||||
f->ops.flush(filedesc->PosixPath, &fi);
|
f->ops.flush(filedesc->PosixPath, &fi);
|
||||||
if (0 != f->ops.release)
|
if (0 != f->ops.release)
|
||||||
f->ops.release(filedesc->PosixPath, &fi);
|
f->ops.release(filedesc->PosixPath, &fi);
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* @file dll/fuse/fuse_loop.c
|
* @file dll/fuse/fuse_loop.c
|
||||||
*
|
*
|
||||||
* @copyright 2015-2026 Bill Zissimopoulos
|
* @copyright 2015-2024 Bill Zissimopoulos
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* This file is part of WinFsp.
|
* This file is part of WinFsp.
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* @file dll/fuse/fuse_main.c
|
* @file dll/fuse/fuse_main.c
|
||||||
*
|
*
|
||||||
* @copyright 2015-2026 Bill Zissimopoulos
|
* @copyright 2015-2024 Bill Zissimopoulos
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* This file is part of WinFsp.
|
* This file is part of WinFsp.
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* @file dll/fuse/fuse_opt.c
|
* @file dll/fuse/fuse_opt.c
|
||||||
*
|
*
|
||||||
* @copyright 2015-2026 Bill Zissimopoulos
|
* @copyright 2015-2024 Bill Zissimopoulos
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* This file is part of WinFsp.
|
* This file is part of WinFsp.
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* @file dll/fuse/library.h
|
* @file dll/fuse/library.h
|
||||||
*
|
*
|
||||||
* @copyright 2015-2026 Bill Zissimopoulos
|
* @copyright 2015-2024 Bill Zissimopoulos
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* This file is part of WinFsp.
|
* This file is part of WinFsp.
|
||||||
@@ -55,7 +55,6 @@ struct fuse
|
|||||||
int set_create_dir_umask, create_dir_umask;
|
int set_create_dir_umask, create_dir_umask;
|
||||||
int set_uid, uid;
|
int set_uid, uid;
|
||||||
int set_gid, gid;
|
int set_gid, gid;
|
||||||
int add_write_ea_access;
|
|
||||||
int rellinks;
|
int rellinks;
|
||||||
int dothidden;
|
int dothidden;
|
||||||
unsigned ThreadCount;
|
unsigned ThreadCount;
|
||||||
@@ -64,7 +63,6 @@ struct fuse
|
|||||||
unsigned conn_want;
|
unsigned conn_want;
|
||||||
BOOLEAN fsinit;
|
BOOLEAN fsinit;
|
||||||
BOOLEAN has_symlinks, has_slashdot;
|
BOOLEAN has_symlinks, has_slashdot;
|
||||||
BOOLEAN FlushOnCleanup;
|
|
||||||
UINT32 DebugLog;
|
UINT32 DebugLog;
|
||||||
FSP_FILE_SYSTEM_OPERATION_GUARD_STRATEGY OpGuardStrategy;
|
FSP_FILE_SYSTEM_OPERATION_GUARD_STRATEGY OpGuardStrategy;
|
||||||
FSP_FSCTL_VOLUME_PARAMS VolumeParams;
|
FSP_FSCTL_VOLUME_PARAMS VolumeParams;
|
||||||
@@ -149,7 +147,6 @@ struct fsp_fuse_core_opt_data
|
|||||||
set_create_dir_umask, create_dir_umask,
|
set_create_dir_umask, create_dir_umask,
|
||||||
set_uid, uid, username_to_uid_result,
|
set_uid, uid, username_to_uid_result,
|
||||||
set_gid, gid,
|
set_gid, gid,
|
||||||
add_write_ea_access,
|
|
||||||
set_uidmap,
|
set_uidmap,
|
||||||
set_attr_timeout, attr_timeout,
|
set_attr_timeout, attr_timeout,
|
||||||
rellinks,
|
rellinks,
|
||||||
@@ -159,7 +156,6 @@ struct fsp_fuse_core_opt_data
|
|||||||
set_EaTimeout,
|
set_EaTimeout,
|
||||||
set_VolumeInfoTimeout,
|
set_VolumeInfoTimeout,
|
||||||
set_KeepFileCache,
|
set_KeepFileCache,
|
||||||
set_FlushOnCleanup,
|
|
||||||
set_LegacyUnlinkRename;
|
set_LegacyUnlinkRename;
|
||||||
unsigned ThreadCount;
|
unsigned ThreadCount;
|
||||||
FSP_FSCTL_VOLUME_PARAMS VolumeParams;
|
FSP_FSCTL_VOLUME_PARAMS VolumeParams;
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* @file dll/fuse3/fuse2to3.c
|
* @file dll/fuse3/fuse2to3.c
|
||||||
*
|
*
|
||||||
* @copyright 2015-2026 Bill Zissimopoulos
|
* @copyright 2015-2024 Bill Zissimopoulos
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* This file is part of WinFsp.
|
* This file is part of WinFsp.
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* @file dll/fuse3/fuse3.c
|
* @file dll/fuse3/fuse3.c
|
||||||
*
|
*
|
||||||
* @copyright 2015-2026 Bill Zissimopoulos
|
* @copyright 2015-2024 Bill Zissimopoulos
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* This file is part of WinFsp.
|
* This file is part of WinFsp.
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* @file dll/fuse/fuse3_compat.c
|
* @file dll/fuse/fuse3_compat.c
|
||||||
*
|
*
|
||||||
* @copyright 2015-2026 Bill Zissimopoulos
|
* @copyright 2015-2024 Bill Zissimopoulos
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* This file is part of WinFsp.
|
* This file is part of WinFsp.
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* @file dll/fuse3/library.h
|
* @file dll/fuse3/library.h
|
||||||
*
|
*
|
||||||
* @copyright 2015-2026 Bill Zissimopoulos
|
* @copyright 2015-2024 Bill Zissimopoulos
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* This file is part of WinFsp.
|
* This file is part of WinFsp.
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* @file dll/launch.c
|
* @file dll/launch.c
|
||||||
*
|
*
|
||||||
* @copyright 2015-2026 Bill Zissimopoulos
|
* @copyright 2015-2024 Bill Zissimopoulos
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* This file is part of WinFsp.
|
* This file is part of WinFsp.
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* @file dll/ldap.c
|
* @file dll/ldap.c
|
||||||
*
|
*
|
||||||
* @copyright 2015-2026 Bill Zissimopoulos
|
* @copyright 2015-2024 Bill Zissimopoulos
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* This file is part of WinFsp.
|
* This file is part of WinFsp.
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* @file dll/library.c
|
* @file dll/library.c
|
||||||
*
|
*
|
||||||
* @copyright 2015-2026 Bill Zissimopoulos
|
* @copyright 2015-2024 Bill Zissimopoulos
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* This file is part of WinFsp.
|
* This file is part of WinFsp.
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* @file dll/library.h
|
* @file dll/library.h
|
||||||
*
|
*
|
||||||
* @copyright 2015-2026 Bill Zissimopoulos
|
* @copyright 2015-2024 Bill Zissimopoulos
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* This file is part of WinFsp.
|
* This file is part of WinFsp.
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* @file dll/mount.c
|
* @file dll/mount.c
|
||||||
*
|
*
|
||||||
* @copyright 2015-2026 Bill Zissimopoulos
|
* @copyright 2015-2024 Bill Zissimopoulos
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* This file is part of WinFsp.
|
* This file is part of WinFsp.
|
||||||
|
|||||||
55
src/dll/np.c
55
src/dll/np.c
@@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* @file dll/np.c
|
* @file dll/np.c
|
||||||
*
|
*
|
||||||
* @copyright 2015-2026 Bill Zissimopoulos
|
* @copyright 2015-2024 Bill Zissimopoulos
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* This file is part of WinFsp.
|
* This file is part of WinFsp.
|
||||||
@@ -454,41 +454,6 @@ exit:
|
|||||||
return NpResult;
|
return NpResult;
|
||||||
}
|
}
|
||||||
|
|
||||||
static BOOLEAN FspNpCheckRemoteVolume(PWSTR RemoteName)
|
|
||||||
{
|
|
||||||
PWSTR ClassName, InstanceName, P;
|
|
||||||
ULONG ClassNameLen, InstanceNameLen;
|
|
||||||
WCHAR RemoteNameBuf[9 + sizeof(((FSP_FSCTL_VOLUME_PARAMS *)0)->Prefix) / sizeof(WCHAR)];
|
|
||||||
HANDLE Handle;
|
|
||||||
DWORD Bytes;
|
|
||||||
BOOLEAN Result;
|
|
||||||
|
|
||||||
if (!FspNpParseRemoteName(RemoteName,
|
|
||||||
&ClassName, &ClassNameLen, &InstanceName, &InstanceNameLen))
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
Result = FALSE;
|
|
||||||
|
|
||||||
P = RemoteNameBuf;
|
|
||||||
*P++ = L'\\'; *P++ = L'\\'; *P++ = L'?'; *P++ = L'\\';
|
|
||||||
*P++ = L'U'; *P++ = L'N'; *P++ = L'C'; *P++ = L'\\';
|
|
||||||
memcpy(P, ClassName, ClassNameLen * sizeof(WCHAR)); P += ClassNameLen; *P++ = L'\\';
|
|
||||||
memcpy(P, InstanceName, InstanceNameLen * sizeof(WCHAR)); P += InstanceNameLen; *P++ = L'\\';
|
|
||||||
*P++ = L'\0';
|
|
||||||
|
|
||||||
Handle = CreateFileW(RemoteNameBuf,
|
|
||||||
FILE_READ_ATTRIBUTES, 0, 0, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0);
|
|
||||||
if (INVALID_HANDLE_VALUE != Handle)
|
|
||||||
{
|
|
||||||
/* the file system is up and running; is it WinFsp? */
|
|
||||||
if (DeviceIoControl(Handle, FSP_FSCTL_QUERY_WINFSP, 0, 0, 0, 0, &Bytes, 0))
|
|
||||||
Result = TRUE;
|
|
||||||
CloseHandle(Handle);
|
|
||||||
}
|
|
||||||
|
|
||||||
return Result;
|
|
||||||
}
|
|
||||||
|
|
||||||
DWORD APIENTRY NPGetConnection(
|
DWORD APIENTRY NPGetConnection(
|
||||||
LPWSTR lpLocalName, LPWSTR lpRemoteName, LPDWORD lpnBufferLen)
|
LPWSTR lpLocalName, LPWSTR lpRemoteName, LPDWORD lpnBufferLen)
|
||||||
{
|
{
|
||||||
@@ -608,16 +573,7 @@ DWORD APIENTRY NPAddConnection(LPNETRESOURCEW lpNetResource, LPWSTR lpPassword,
|
|||||||
|
|
||||||
NpResult = FspNpGetRemoteInfo(lpRemoteName, 0, &CredentialsKind, &AllowImpersonation);
|
NpResult = FspNpGetRemoteInfo(lpRemoteName, 0, &CredentialsKind, &AllowImpersonation);
|
||||||
if (WN_SUCCESS != NpResult)
|
if (WN_SUCCESS != NpResult)
|
||||||
{
|
|
||||||
/*
|
|
||||||
* This may still be a WinFsp network file system, but not managed by the Launcher.
|
|
||||||
* So if it is already live, one of ours and we do not need to map a drive, then go
|
|
||||||
* ahead and report success.
|
|
||||||
*/
|
|
||||||
if (L'\0' == LocalNameBuf[0] && FspNpCheckRemoteVolume(lpRemoteName))
|
|
||||||
NpResult = WN_SUCCESS;
|
|
||||||
return NpResult;
|
return NpResult;
|
||||||
}
|
|
||||||
|
|
||||||
#if defined(FSP_NP_CREDENTIAL_MANAGER)
|
#if defined(FSP_NP_CREDENTIAL_MANAGER)
|
||||||
/* if we need credentials and none were passed check with the credential manager */
|
/* if we need credentials and none were passed check with the credential manager */
|
||||||
@@ -764,15 +720,6 @@ DWORD APIENTRY NPAddConnection(LPNETRESOURCEW lpNetResource, LPWSTR lpPassword,
|
|||||||
/* we are not being asked for a drive mapping, so whatever we have is good! */
|
/* we are not being asked for a drive mapping, so whatever we have is good! */
|
||||||
NpResult = WN_SUCCESS;
|
NpResult = WN_SUCCESS;
|
||||||
break;
|
break;
|
||||||
case WN_NO_NETWORK:
|
|
||||||
/*
|
|
||||||
* This may still be a WinFsp network file system, but not managed by the Launcher.
|
|
||||||
* So if it is already live, one of ours and we do not need to map a drive, then go
|
|
||||||
* ahead and report success.
|
|
||||||
*/
|
|
||||||
if (L'\0' == LocalNameBuf[0] && FspNpCheckRemoteVolume(lpRemoteName))
|
|
||||||
NpResult = WN_SUCCESS;
|
|
||||||
break;
|
|
||||||
default:
|
default:
|
||||||
NpResult = WN_NO_NETWORK;
|
NpResult = WN_NO_NETWORK;
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* @file dll/ntstatus.c
|
* @file dll/ntstatus.c
|
||||||
*
|
*
|
||||||
* @copyright 2015-2026 Bill Zissimopoulos
|
* @copyright 2015-2024 Bill Zissimopoulos
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* This file is part of WinFsp.
|
* This file is part of WinFsp.
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* @file dll/path.c
|
* @file dll/path.c
|
||||||
*
|
*
|
||||||
* @copyright 2015-2026 Bill Zissimopoulos
|
* @copyright 2015-2024 Bill Zissimopoulos
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* This file is part of WinFsp.
|
* This file is part of WinFsp.
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* @file dll/security.c
|
* @file dll/security.c
|
||||||
*
|
*
|
||||||
* @copyright 2015-2026 Bill Zissimopoulos
|
* @copyright 2015-2024 Bill Zissimopoulos
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* This file is part of WinFsp.
|
* This file is part of WinFsp.
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* @file dll/service.c
|
* @file dll/service.c
|
||||||
*
|
*
|
||||||
* @copyright 2015-2026 Bill Zissimopoulos
|
* @copyright 2015-2024 Bill Zissimopoulos
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* This file is part of WinFsp.
|
* This file is part of WinFsp.
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* @file dll/sxs.c
|
* @file dll/sxs.c
|
||||||
*
|
*
|
||||||
* @copyright 2015-2026 Bill Zissimopoulos
|
* @copyright 2015-2024 Bill Zissimopoulos
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* This file is part of WinFsp.
|
* This file is part of WinFsp.
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* @file dll/util.c
|
* @file dll/util.c
|
||||||
*
|
*
|
||||||
* @copyright 2015-2026 Bill Zissimopoulos
|
* @copyright 2015-2024 Bill Zissimopoulos
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* This file is part of WinFsp.
|
* This file is part of WinFsp.
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* @file dll/wksid.c
|
* @file dll/wksid.c
|
||||||
*
|
*
|
||||||
* @copyright 2015-2026 Bill Zissimopoulos
|
* @copyright 2015-2024 Bill Zissimopoulos
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* This file is part of WinFsp.
|
* This file is part of WinFsp.
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* dotnet/FileSystemBase+Const.cs
|
* dotnet/FileSystemBase+Const.cs
|
||||||
*
|
*
|
||||||
* Copyright 2015-2026 Bill Zissimopoulos
|
* Copyright 2015-2024 Bill Zissimopoulos
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* This file is part of WinFsp.
|
* This file is part of WinFsp.
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* dotnet/FileSystemBase.cs
|
* dotnet/FileSystemBase.cs
|
||||||
*
|
*
|
||||||
* Copyright 2015-2026 Bill Zissimopoulos
|
* Copyright 2015-2024 Bill Zissimopoulos
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* This file is part of WinFsp.
|
* This file is part of WinFsp.
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* dotnet/FileSystemHost.cs
|
* dotnet/FileSystemHost.cs
|
||||||
*
|
*
|
||||||
* Copyright 2015-2026 Bill Zissimopoulos
|
* Copyright 2015-2024 Bill Zissimopoulos
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* This file is part of WinFsp.
|
* This file is part of WinFsp.
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* dotnet/Interop.cs
|
* dotnet/Interop.cs
|
||||||
*
|
*
|
||||||
* Copyright 2015-2026 Bill Zissimopoulos
|
* Copyright 2015-2024 Bill Zissimopoulos
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* This file is part of WinFsp.
|
* This file is part of WinFsp.
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* dotnet/Service.cs
|
* dotnet/Service.cs
|
||||||
*
|
*
|
||||||
* Copyright 2015-2026 Bill Zissimopoulos
|
* Copyright 2015-2024 Bill Zissimopoulos
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* This file is part of WinFsp.
|
* This file is part of WinFsp.
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* @file fsptool/fsptool.c
|
* @file fsptool/fsptool.c
|
||||||
*
|
*
|
||||||
* @copyright 2015-2026 Bill Zissimopoulos
|
* @copyright 2015-2024 Bill Zissimopoulos
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* This file is part of WinFsp.
|
* This file is part of WinFsp.
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* @file launcher/launchctl.c
|
* @file launcher/launchctl.c
|
||||||
*
|
*
|
||||||
* @copyright 2015-2026 Bill Zissimopoulos
|
* @copyright 2015-2024 Bill Zissimopoulos
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* This file is part of WinFsp.
|
* This file is part of WinFsp.
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* @file launcher/launcher.c
|
* @file launcher/launcher.c
|
||||||
*
|
*
|
||||||
* @copyright 2015-2026 Bill Zissimopoulos
|
* @copyright 2015-2024 Bill Zissimopoulos
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* This file is part of WinFsp.
|
* This file is part of WinFsp.
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* @file launcher/ptrans.c
|
* @file launcher/ptrans.c
|
||||||
*
|
*
|
||||||
* @copyright 2015-2026 Bill Zissimopoulos
|
* @copyright 2015-2024 Bill Zissimopoulos
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* This file is part of WinFsp.
|
* This file is part of WinFsp.
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
* Shared kernel/user configuration. This file is to be included by the
|
* Shared kernel/user configuration. This file is to be included by the
|
||||||
* FSD and DLL components ONLY!
|
* FSD and DLL components ONLY!
|
||||||
*
|
*
|
||||||
* @copyright 2015-2026 Bill Zissimopoulos
|
* @copyright 2015-2024 Bill Zissimopoulos
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* This file is part of WinFsp.
|
* This file is part of WinFsp.
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* @file shared/ku/library.h
|
* @file shared/ku/library.h
|
||||||
*
|
*
|
||||||
* @copyright 2015-2026 Bill Zissimopoulos
|
* @copyright 2015-2024 Bill Zissimopoulos
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* This file is part of WinFsp.
|
* This file is part of WinFsp.
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* @file shared/ku/mountmgr.c
|
* @file shared/ku/mountmgr.c
|
||||||
*
|
*
|
||||||
* @copyright 2015-2026 Bill Zissimopoulos
|
* @copyright 2015-2024 Bill Zissimopoulos
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* This file is part of WinFsp.
|
* This file is part of WinFsp.
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
* [SNAME]
|
* [SNAME]
|
||||||
* https://www.cygwin.com/cygwin-ug-net/using-specialnames.html
|
* https://www.cygwin.com/cygwin-ug-net/using-specialnames.html
|
||||||
*
|
*
|
||||||
* @copyright 2015-2026 Bill Zissimopoulos
|
* @copyright 2015-2024 Bill Zissimopoulos
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* This file is part of WinFsp.
|
* This file is part of WinFsp.
|
||||||
@@ -1416,7 +1416,7 @@ FSP_API NTSTATUS FspPosixMapPosixToWindowsPathEx(const char *PosixPath, PWSTR *P
|
|||||||
goto lasterror;
|
goto lasterror;
|
||||||
|
|
||||||
WindowsPath = MemAlloc(Size * sizeof(WCHAR));
|
WindowsPath = MemAlloc(Size * sizeof(WCHAR));
|
||||||
if (0 == WindowsPath)
|
if (0 == PosixPath)
|
||||||
{
|
{
|
||||||
Result = STATUS_INSUFFICIENT_RESOURCES;
|
Result = STATUS_INSUFFICIENT_RESOURCES;
|
||||||
goto exit;
|
goto exit;
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* @file shared/ku/uuid5.c
|
* @file shared/ku/uuid5.c
|
||||||
*
|
*
|
||||||
* @copyright 2015-2026 Bill Zissimopoulos
|
* @copyright 2015-2024 Bill Zissimopoulos
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* This file is part of WinFsp.
|
* This file is part of WinFsp.
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* @file shared/um/minimal.h
|
* @file shared/um/minimal.h
|
||||||
*
|
*
|
||||||
* @copyright 2015-2026 Bill Zissimopoulos
|
* @copyright 2015-2024 Bill Zissimopoulos
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* This file is part of WinFsp.
|
* This file is part of WinFsp.
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
* @file sys/callbacks.c
|
* @file sys/callbacks.c
|
||||||
* Fast I/O and resource acquisition callbacks.
|
* Fast I/O and resource acquisition callbacks.
|
||||||
*
|
*
|
||||||
* @copyright 2015-2026 Bill Zissimopoulos
|
* @copyright 2015-2024 Bill Zissimopoulos
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* This file is part of WinFsp.
|
* This file is part of WinFsp.
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* @file sys/cleanup.c
|
* @file sys/cleanup.c
|
||||||
*
|
*
|
||||||
* @copyright 2015-2026 Bill Zissimopoulos
|
* @copyright 2015-2024 Bill Zissimopoulos
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* This file is part of WinFsp.
|
* This file is part of WinFsp.
|
||||||
@@ -242,7 +242,8 @@ static VOID FspFsvolCleanupRequestFini(FSP_FSCTL_TRANSACT_REQ *Request, PVOID Co
|
|||||||
FspFileNodeReleaseOwner(FileNode, Pgio, Request);
|
FspFileNodeReleaseOwner(FileNode, Pgio, Request);
|
||||||
|
|
||||||
FspFileNodeCleanupComplete(FileNode, FileObject, !!Request->Req.Cleanup.Delete);
|
FspFileNodeCleanupComplete(FileNode, FileObject, !!Request->Req.Cleanup.Delete);
|
||||||
FspFileNodeOplockCheck(FileNode, Irp);
|
if (!FileNode->IsDirectory)
|
||||||
|
FspFileNodeOplockCheck(FileNode, Irp);
|
||||||
SetFlag(FileObject->Flags, FO_CLEANUP_COMPLETE);
|
SetFlag(FileObject->Flags, FO_CLEANUP_COMPLETE);
|
||||||
|
|
||||||
MainFileHandle = FileDesc->MainFileHandle;
|
MainFileHandle = FileDesc->MainFileHandle;
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* @file sys/close.c
|
* @file sys/close.c
|
||||||
*
|
*
|
||||||
* @copyright 2015-2026 Bill Zissimopoulos
|
* @copyright 2015-2024 Bill Zissimopoulos
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* This file is part of WinFsp.
|
* This file is part of WinFsp.
|
||||||
@@ -75,9 +75,6 @@ static NTSTATUS FspFsvolClose(
|
|||||||
|
|
||||||
ASSERT(FileNode == FileDesc->FileNode);
|
ASSERT(FileNode == FileDesc->FileNode);
|
||||||
|
|
||||||
if (!FlagOn(FileObject->Flags, FO_CLEANUP_COMPLETE))
|
|
||||||
FspFileNodeOplockCheck(FileNode, Irp);
|
|
||||||
|
|
||||||
/* create the user-mode file system request; MustSucceed because IRP_MJ_CLOSE cannot fail */
|
/* create the user-mode file system request; MustSucceed because IRP_MJ_CLOSE cannot fail */
|
||||||
FspIopCreateRequestMustSucceed(0, 0, 0, &Request);
|
FspIopCreateRequestMustSucceed(0, 0, 0, &Request);
|
||||||
Request->Kind = FspFsctlTransactCloseKind;
|
Request->Kind = FspFsctlTransactCloseKind;
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* @file sys/create.c
|
* @file sys/create.c
|
||||||
*
|
*
|
||||||
* @copyright 2015-2026 Bill Zissimopoulos
|
* @copyright 2015-2024 Bill Zissimopoulos
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* This file is part of WinFsp.
|
* This file is part of WinFsp.
|
||||||
@@ -298,8 +298,6 @@ static NTSTATUS FspFsvolCreateNoLock(
|
|||||||
ULONG CreateOptions = IrpSp->Parameters.Create.Options;
|
ULONG CreateOptions = IrpSp->Parameters.Create.Options;
|
||||||
USHORT FileAttributes = IrpSp->Parameters.Create.FileAttributes;
|
USHORT FileAttributes = IrpSp->Parameters.Create.FileAttributes;
|
||||||
PSECURITY_DESCRIPTOR SecurityDescriptor = AccessState->SecurityDescriptor;
|
PSECURITY_DESCRIPTOR SecurityDescriptor = AccessState->SecurityDescriptor;
|
||||||
BOOLEAN SecurityDescriptorRelative = 0 != SecurityDescriptor &&
|
|
||||||
BooleanFlagOn(((SECURITY_DESCRIPTOR *)SecurityDescriptor)->Control, SE_SELF_RELATIVE);
|
|
||||||
ULONG SecurityDescriptorSize = 0;
|
ULONG SecurityDescriptorSize = 0;
|
||||||
UINT64 AllocationSize = Irp->Overlay.AllocationSize.QuadPart;
|
UINT64 AllocationSize = Irp->Overlay.AllocationSize.QuadPart;
|
||||||
UINT64 AllocationUnit;
|
UINT64 AllocationUnit;
|
||||||
@@ -408,10 +406,7 @@ static NTSTATUS FspFsvolCreateNoLock(
|
|||||||
if (!RtlValidSecurityDescriptor(SecurityDescriptor))
|
if (!RtlValidSecurityDescriptor(SecurityDescriptor))
|
||||||
return STATUS_INVALID_PARAMETER;
|
return STATUS_INVALID_PARAMETER;
|
||||||
#endif
|
#endif
|
||||||
if (SecurityDescriptorRelative)
|
SecurityDescriptorSize = RtlLengthSecurityDescriptor(SecurityDescriptor);
|
||||||
SecurityDescriptorSize = RtlLengthSecurityDescriptor(SecurityDescriptor);
|
|
||||||
else
|
|
||||||
RtlAbsoluteToSelfRelativeSD(SecurityDescriptor, 0, &SecurityDescriptorSize);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* align allocation size */
|
/* align allocation size */
|
||||||
@@ -707,18 +702,8 @@ static NTSTATUS FspFsvolCreateNoLock(
|
|||||||
|
|
||||||
/* copy the security descriptor (if any) into the request */
|
/* copy the security descriptor (if any) into the request */
|
||||||
if (0 != SecurityDescriptorSize)
|
if (0 != SecurityDescriptorSize)
|
||||||
{
|
RtlCopyMemory(Request->Buffer + Request->Req.Create.SecurityDescriptor.Offset,
|
||||||
if (SecurityDescriptorRelative)
|
SecurityDescriptor, SecurityDescriptorSize);
|
||||||
RtlCopyMemory(
|
|
||||||
Request->Buffer + Request->Req.Create.SecurityDescriptor.Offset,
|
|
||||||
SecurityDescriptor,
|
|
||||||
SecurityDescriptorSize);
|
|
||||||
else
|
|
||||||
RtlAbsoluteToSelfRelativeSD(
|
|
||||||
SecurityDescriptor,
|
|
||||||
(PSECURITY_DESCRIPTOR)(Request->Buffer + Request->Req.Create.SecurityDescriptor.Offset),
|
|
||||||
&SecurityDescriptorSize);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* copy the extra buffer (if any) into the request */
|
/* copy the extra buffer (if any) into the request */
|
||||||
if (0 != ExtraBuffer)
|
if (0 != ExtraBuffer)
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* @file sys/debug.c
|
* @file sys/debug.c
|
||||||
*
|
*
|
||||||
* @copyright 2015-2026 Bill Zissimopoulos
|
* @copyright 2015-2024 Bill Zissimopoulos
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* This file is part of WinFsp.
|
* This file is part of WinFsp.
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* @file sys/devctl.c
|
* @file sys/devctl.c
|
||||||
*
|
*
|
||||||
* @copyright 2015-2026 Bill Zissimopoulos
|
* @copyright 2015-2024 Bill Zissimopoulos
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* This file is part of WinFsp.
|
* This file is part of WinFsp.
|
||||||
@@ -72,32 +72,15 @@ BOOLEAN FspFastIoDeviceControl(
|
|||||||
if (!Result)
|
if (!Result)
|
||||||
FSP_RETURN();
|
FSP_RETURN();
|
||||||
|
|
||||||
if (0 != InputBufferLength &&
|
#if 0
|
||||||
FSP_FSCTL_DEFAULT_ALIGN_UP(sizeof(FSP_FSCTL_TRANSACT_RSP)) > InputBufferLength)
|
PDEVICE_OBJECT FsctlDeviceObject = DeviceObject;
|
||||||
FSP_RETURN(IoStatus->Status = STATUS_INVALID_PARAMETER);
|
if (!FspDeviceReference(FsctlDeviceObject))
|
||||||
if (0 != OutputBufferLength &&
|
|
||||||
FSP_FSCTL_TRANSACT_BUFFER_SIZEMIN > OutputBufferLength)
|
|
||||||
FSP_RETURN(IoStatus->Status = STATUS_BUFFER_TOO_SMALL);
|
|
||||||
|
|
||||||
PVOID SystemBuffer = 0;
|
|
||||||
|
|
||||||
if (0 != InputBufferLength || 0 != OutputBufferLength)
|
|
||||||
{
|
{
|
||||||
SystemBuffer = FspAllocNonPaged(
|
IoStatus->Status = STATUS_CANCELLED;
|
||||||
InputBufferLength > OutputBufferLength ? InputBufferLength : OutputBufferLength);
|
IoStatus->Information = 0;
|
||||||
if (0 == SystemBuffer)
|
FSP_RETURN();
|
||||||
FSP_RETURN(Result = FALSE);
|
|
||||||
if (0 != InputBuffer)
|
|
||||||
try
|
|
||||||
{
|
|
||||||
RtlCopyMemory(SystemBuffer, InputBuffer, InputBufferLength);
|
|
||||||
}
|
|
||||||
except (EXCEPTION_EXECUTE_HANDLER)
|
|
||||||
{
|
|
||||||
FspFree(SystemBuffer);
|
|
||||||
FSP_RETURN(Result = FALSE);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
ASSERT(0 == IoGetTopLevelIrp());
|
ASSERT(0 == IoGetTopLevelIrp());
|
||||||
IoSetTopLevelIrp((PIRP)FSRTL_FAST_IO_TOP_LEVEL_IRP);
|
IoSetTopLevelIrp((PIRP)FSRTL_FAST_IO_TOP_LEVEL_IRP);
|
||||||
@@ -105,29 +88,18 @@ BOOLEAN FspFastIoDeviceControl(
|
|||||||
IoStatus->Status = FspVolumeFastTransact(
|
IoStatus->Status = FspVolumeFastTransact(
|
||||||
FileObject->FsContext2,
|
FileObject->FsContext2,
|
||||||
IoControlCode,
|
IoControlCode,
|
||||||
SystemBuffer,
|
InputBuffer,
|
||||||
InputBufferLength,
|
InputBufferLength,
|
||||||
0 != OutputBufferLength ? SystemBuffer : 0,
|
OutputBuffer,
|
||||||
OutputBufferLength,
|
OutputBufferLength,
|
||||||
IoStatus,
|
IoStatus,
|
||||||
(PIRP)FSRTL_FAST_IO_TOP_LEVEL_IRP);
|
(PIRP)FSRTL_FAST_IO_TOP_LEVEL_IRP);
|
||||||
|
|
||||||
IoSetTopLevelIrp(0);
|
IoSetTopLevelIrp(0);
|
||||||
|
|
||||||
if (0 != SystemBuffer)
|
#if 0
|
||||||
{
|
FspDeviceDereference(FsctlDeviceObject);
|
||||||
if (NT_SUCCESS(IoStatus->Status) && 0 != OutputBuffer)
|
#endif
|
||||||
try
|
|
||||||
{
|
|
||||||
RtlCopyMemory(OutputBuffer, SystemBuffer, IoStatus->Information);
|
|
||||||
}
|
|
||||||
except (EXCEPTION_EXECUTE_HANDLER)
|
|
||||||
{
|
|
||||||
IoStatus->Status = GetExceptionCode();
|
|
||||||
IoStatus->Information = 0;
|
|
||||||
}
|
|
||||||
FspFree(SystemBuffer);
|
|
||||||
}
|
|
||||||
|
|
||||||
FSP_LEAVE_BOOL(
|
FSP_LEAVE_BOOL(
|
||||||
"%s, FileObject=%p",
|
"%s, FileObject=%p",
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* @file sys/device.c
|
* @file sys/device.c
|
||||||
*
|
*
|
||||||
* @copyright 2015-2026 Bill Zissimopoulos
|
* @copyright 2015-2024 Bill Zissimopoulos
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* This file is part of WinFsp.
|
* This file is part of WinFsp.
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* @file sys/devtimer.c
|
* @file sys/devtimer.c
|
||||||
*
|
*
|
||||||
* @copyright 2015-2026 Bill Zissimopoulos
|
* @copyright 2015-2024 Bill Zissimopoulos
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* This file is part of WinFsp.
|
* This file is part of WinFsp.
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* @file sys/dirctl.c
|
* @file sys/dirctl.c
|
||||||
*
|
*
|
||||||
* @copyright 2015-2026 Bill Zissimopoulos
|
* @copyright 2015-2024 Bill Zissimopoulos
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* This file is part of WinFsp.
|
* This file is part of WinFsp.
|
||||||
@@ -348,7 +348,9 @@ static NTSTATUS FspFsvolQueryDirectoryCopyCache(
|
|||||||
|
|
||||||
FSP_FILE_NODE *FileNode = FileDesc->FileNode;
|
FSP_FILE_NODE *FileNode = FileDesc->FileNode;
|
||||||
|
|
||||||
if (ResetCache || FileDesc->DirInfo != FileNode->NonPaged->DirInfo)
|
if (ResetCache ||
|
||||||
|
FileDesc->DirInfo != FileNode->NonPaged->DirInfo ||
|
||||||
|
FileDesc->DirInfoCacheHint >= DirInfoSize)
|
||||||
FileDesc->DirInfoCacheHint = 0; /* reset the DirInfo hint if anything looks fishy! */
|
FileDesc->DirInfoCacheHint = 0; /* reset the DirInfo hint if anything looks fishy! */
|
||||||
|
|
||||||
FileDesc->DirInfo = FileNode->NonPaged->DirInfo;
|
FileDesc->DirInfo = FileNode->NonPaged->DirInfo;
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* @file sys/driver.c
|
* @file sys/driver.c
|
||||||
*
|
*
|
||||||
* @copyright 2015-2026 Bill Zissimopoulos
|
* @copyright 2015-2024 Bill Zissimopoulos
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* This file is part of WinFsp.
|
* This file is part of WinFsp.
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user