Compare commits

..

22 Commits

Author SHA1 Message Date
068270fa7f update changelog 2021-06-13 12:40:41 -07:00
f51bdef534 dll: fuse: fix path arg to release on Create error
When the kernel sends a `Create` message the WinFsp-FUSE layer creates
and opens the file (as per Windows semantics). Sometimes an additional
operation needs to be performed after the file has been opened, which
may fail. In this case the just opened file must be released.

In this particular case the WinFsp-FUSE layer used to call `release`
with an uninitialized path. This commit fixes the problem.

This problem was originally reported in cgofuse (billziss-gh/cgofuse#58)
2021-06-09 10:17:59 -07:00
63f91cc667 build: bump version 2021-06-09 10:13:41 -07:00
6e3e469fcb doc: update known file systems 2021-06-08 12:22:26 -07:00
efcc82b5dd build: update version 2021-06-08 10:38:27 -07:00
cad5e68ac8 art: update logo 2021-06-01 13:49:00 -07:00
6e3a8f70b2 update source copyright to 2021 2021-05-21 15:57:05 -07:00
6bc0fe4ac5 art: update logo 2021-05-21 14:53:52 -07:00
07f097220f changelog: update for v1.10B1 2021-05-21 11:41:35 -07:00
ca832988ed dll,sys: fix issue #369
The original WinFsp protocol for shutting down a file system was to issue
an FSP_FSCTL_STOP control code to the fsctl device. This would set the IOQ
to the "stopped" state and would also cancel all active IRP's. Cancelation
of IRP's would sometimes free buffers that may have still been in use by
the user mode file system threads; hence access violation.

To fix this problem a new control code FSP_FSCTL_STOP0 is introduced. The
new file system shutdown protocol is backwards compatible with the original
one and works as follows:

- First the file system process issues an FSP_FSCTL_STOP0 control code which
sets the IOQ to the "stopped" state but does NOT cancel IRP's.

- Then the file system process waits for its dispatcher threads to complete
(see FspFileSystemStopDispatcher).

- Finally the file system process issues an FSP_FSCTL_STOP control code
which stops the (already stopped) IOQ and cancels all IRP's.
2021-05-18 12:30:17 -07:00
23e401e312 Merge pull request #371 from lemourin/mingw-fix
inc: don't redeclare _FILE_FULL_EA_INFORMATION for mingw
2021-05-17 10:00:17 -07:00
bde57697f9 Add Paweł Wegner to contributors. 2021-05-15 14:59:10 +02:00
f62aa00a1e inc: don't redeclare _FILE_FULL_EA_INFORMATION for mingw
mingw-w64 declares _FILE_FULL_EA_INFORMATION since Jan 18, 2010 [1].

The change allows the winfsp client library to be consumed by projects built with mingw.

[1]: afd1465722
2021-05-14 14:08:02 +02:00
a27994289d art: update 2021-05-07 16:50:58 -07:00
3b10145e93 tst: winfsp-tests: disable new tests that fail on passthrough 2021-04-19 13:34:35 -07:00
33c6e7ee61 sys: fix issue #364 2021-04-16 16:43:34 -07:00
d0d67998c1 inc: fsctl.h: fix class guid's when used outside our build system 2021-04-13 15:33:57 -07:00
aa7888effc tools: wixguid.py 2021-04-13 15:22:42 -07:00
3c7e712e57 tools: build.bat: skip choco build for non-WinFsp brands 2021-04-13 14:38:51 -07:00
f8ee12f592 build: fix inadvertently broken DLL build on VS2015 2021-04-12 22:07:04 -07:00
c84d47aa3e doc: WinFsp rebranding document 2021-04-12 21:38:09 -07:00
023c925fb6 WinFsp rebranding support 2021-04-12 17:47:34 -07:00
195 changed files with 659 additions and 359 deletions

View File

@ -1,6 +1,44 @@
= Changelog
v1.10B2 (2021.1 Beta2)::
Changes since v1.9:
* [NEW] WinFsp now supports rebranding of the build products. This is primarily useful to commercial licensees. See https://github.com/billziss-gh/winfsp/wiki/WinFsp-Rebranding for more information.
* [NEW] WinFsp-FUSE has a new method for determining file access in the case where the user's primary SID (Windows Security Identifier) and group SID are the same (for example, this can happen when someone uses a Microsoft account as their primary login).
** Previously when the user SID and group SID were the same WinFsp-FUSE looked at the UNIX permissions for the owner and the UNIX permissions for the group and used the MOST restrictive permissions, which often resulted in inadvertent "access denied" errors. (For example, if the owner permission was `rw-` and the group permission was `---` the result was `---` and therefore access denied).
** Going forward this behavior will change. The user and group mode permissions will not be considered together even in the case where the user SID and group SID are the same. This will resolve the access denied errors.
** However to preserve backward compatibility (there might be some file systems that rely on the old behavior) we will do so in stages. For release v1.10 (2021.1) there is a new registry setting under `HKLM\SOFTWARE\WinFsp` (or `HKLM\SOFTWARE\WOW6432Node\WinFsp` on a 64-bit system) called `DistinctPermsForSameOwnerGroup`, which if set to 1 will direct WinFsp-FUSE to use the new behavior. The default value is 0 which directs WinFsp-FUSE to use the old behavior. This default will change in a future release.
* [FIX] File share access when overwriting a file (e.g. when using `TRUNCATE_EXISTING`) is now done in a manner compatible with NTFS (previously there were cases when overwriting a file where behavior diverged from the NTFS one). (See GitHub issue #364.)
* [FIX] Fixed a problem in the file system shutdown protocol which resolves an occasional access violation in the user mode file system process. Previously it was possible for a file system to crash when stopping itself using `FspFileSystemStopDispatcher`; this problem has been rectified. (See GitHub issue #369.)
* [FIX] Fixed a problem in the FUSE layer where in some rare circumstances the `release` operation could be called with an uninitialized `path` argument. (See GitHub issue billziss-gh/cgofuse#58 and commit f51bdef53427d1bba688fb6c768792fdc22ffc7b).
* [FIX] The `winfsp.h` header no longer defines `FILE_FULL_EA_INFORMATION` when compiled under mingw. This is because the mingw tool chain already includes a definition of this type. (GitHub PR #371. Thanks @lemourin.)
v1.10B1 (2021.1 Beta1)::
Changes since v1.9:
* [NEW] WinFsp now supports rebranding of the build products. This is primarily useful to commercial licensees. See https://github.com/billziss-gh/winfsp/wiki/WinFsp-Rebranding for more information.
* [NEW] WinFsp-FUSE has a new method for determining file access in the case where the user's primary SID (Windows Security Identifier) and group SID are the same (for example, this can happen when someone uses a Microsoft account as their primary login).
** Previously when the user SID and group SID were the same WinFsp-FUSE looked at the UNIX permissions for the owner and the UNIX permissions for the group and used the MOST restrictive permissions, which often resulted in inadvertent "access denied" errors. (For example, if the owner permission was `rw-` and the group permission was `---` the result was `---` and therefore access denied).
** Going forward this behavior will change. The user and group mode permissions will not be considered together even in the case where the user SID and group SID are the same. This will resolve the access denied errors.
** However to preserve backward compatibility (there might be some file systems that rely on the old behavior) we will do so in stages. For release v1.10 (2021.1) there is a new registry setting under `HKLM\SOFTWARE\WinFsp` (or `HKLM\SOFTWARE\WOW6432Node\WinFsp` on a 64-bit system) called `DistinctPermsForSameOwnerGroup`, which if set to 1 will direct WinFsp-FUSE to use the new behavior. The default value is 0 which directs WinFsp-FUSE to use the old behavior. This default will change in a future release.
* [FIX] File share access when overwriting a file (e.g. when using `TRUNCATE_EXISTING`) is now done in a manner compatible with NTFS (previously there were cases when overwriting a file where behavior diverged from the NTFS one). (See GitHub issue #364.)
* [FIX] Fixed a problem in the file system shutdown protocol which resolves an occasional access violation in the user mode file system process. Previously it was possible for a file system to crash when stopping itself using `FspFileSystemStopDispatcher`; this problem has been rectified. (See GitHub issue #369.)
* [FIX] The `winfsp.h` header no longer defines `FILE_FULL_EA_INFORMATION` when compiled under mingw. This is because the mingw tool chain already includes a definition of this type. (GitHub PR #371. Thanks @lemourin.)
v1.9 (2021)::
Changes since v1.8:

View File

@ -65,6 +65,7 @@ CONTRIBUTOR LIST
|Gal Hammer (Red Hat, https://www.redhat.com) |ghammer at redhat.com
|John Oberschelp |john at oberschelp.net
|John Tyner |jtyner at gmail.com
|Paweł Wegner (Google LLC, https://google.com) |lemourin at google.com
|Pedro Frejo (Arpa System, https://arpasystem.com) |pedro.frejo at arpasystem.com
|Sam Kelly (DuroSoft Technologies LLC, https://durosoft.com) |sam at durosoft.com
|Santiago Ganis |sganis at gmail.com

View File

@ -1,8 +1,8 @@
<h1 align="center">
<img src="art/winfsp-glow.png" width="256"/>
<br/>
<br/>
WinFsp &middot; Windows File System Proxy
<a href="https://twitter.com/intent/tweet?url=https%3A%2F%2Fgithub.com%2Fbillziss-gh%2Fwinfsp&text=Do%20you%20want%20to%20write%20a%20file%20system%20on%20Windows%3F%20WinFsp%20is%20well%20tested%2C%20very%20fast%20and%20easy%20to%20use%21&hashtags=windows%2Cfilesystem">
<img src="https://img.shields.io/twitter/url/http/shields.io.svg?style=social&label=Share"/>
</a>
</h1>
<p align="center">
@ -17,24 +17,12 @@
<img src="https://img.shields.io/badge/choco-install%20winfsp-black.svg?style=for-the-badge"/>
</a>
<br/>
<b>Quick Links</b><br/>
<a href="#benefits">Benefits</a> |
<a href="https://github.com/billziss-gh/winfsp/wiki">Wiki</a> |
<a href="https://groups.google.com/forum/#!forum/winfsp">Questions</a> |
<a href="https://twitter.com/BZissimopoulos">Author's Twitter</a>
<br/>
<br/>
<a href="https://ci.appveyor.com/project/billziss-gh/winfsp">
<img src="https://img.shields.io/appveyor/ci/billziss-gh/winfsp.svg"/>
</a>
<br/>
<br/>
<b>Check out my new kernel driver project <a href="https://github.com/billziss-gh/winspd">WinSpd</a>.</b>
<br/>
<br/>
</p>
<p align="center">
WinFsp is a set of software components for Windows computers that allows the creation of user mode file systems. In this sense it is similar to FUSE (Filesystem in Userspace), which provides the same functionality on UNIX-like computers.
<br/>
<br/>

BIN
art/winfsp-glow.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 12 KiB

BIN
art/winfsp.afdesign Normal file

Binary file not shown.

BIN
art/wixbanner.afdesign Normal file

Binary file not shown.

Binary file not shown.

BIN
art/wixdialog.afdesign Normal file

Binary file not shown.

Binary file not shown.

View File

@ -9,7 +9,7 @@
<OutputType>Library</OutputType>
<ProjectName>winfsp.net</ProjectName>
<RootNamespace>Fsp</RootNamespace>
<AssemblyName>winfsp-msil</AssemblyName>
<AssemblyName>$(MyProductFileName)-msil</AssemblyName>
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<TargetFrameworkProfile />
@ -25,7 +25,7 @@
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<DocumentationFile>$(BaseIntermediateOutputPath)$(Configuration)\winfsp-msil.xml</DocumentationFile>
<DocumentationFile>$(BaseIntermediateOutputPath)$(Configuration)\$(MyProductFileName)-msil.xml</DocumentationFile>
<NoWarn>1591</NoWarn>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
@ -38,7 +38,7 @@
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<DocumentationFile>$(BaseIntermediateOutputPath)$(Configuration)\winfsp-msil.xml</DocumentationFile>
<DocumentationFile>$(BaseIntermediateOutputPath)$(Configuration)\$(MyProductFileName)-msil.xml</DocumentationFile>
<NoWarn>1591</NoWarn>
</PropertyGroup>
<PropertyGroup>

View File

@ -1,7 +1,7 @@
/**
* @file CustomActions.cpp
*
* @copyright 2015-2020 Bill Zissimopoulos
* @copyright 2015-2021 Bill Zissimopoulos
*/
/*
* This file is part of WinFsp.

View File

@ -20,7 +20,7 @@
AllowSameVersionUpgrades="no"
DisallowUpgradeErrorMessage="An older version of $(var.MyProductName) is already installed. You must uninstall it before you can install this version."
DowngradeErrorMessage="A newer version of $(var.MyProductName) is already installed." />
<Media Id="1" Cabinet="WinFsp.cab" EmbedCab="yes" />
<Media Id="1" Cabinet="$(var.MyProductName).cab" EmbedCab="yes" />
<Property Id="P.LauncherName">$(var.MyProductName).Launcher</Property>
<Property Id="P.LauncherRegistryKey">Software\$(var.MyProductName)\Services</Property>
@ -36,7 +36,7 @@
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<Directory Id="INSTALLDIR" Name="WinFsp">
<Directory Id="INSTALLDIR" Name="$(var.MyProductName)">
<Directory Id="BINDIR" Name="bin" />
<Directory Id="INCDIR" Name="inc" />
<Directory Id="LIBDIR" Name="lib" />
@ -55,54 +55,54 @@
Name="InstallDir"
Type="string"
Value="[INSTALLDIR]" />
<dep:Provides Key="WinFsp" />
<dep:Provides Key="$(var.MyProductName)" />
</Component>
<Component Id="C.License.txt">
<File Name="License.txt" Source="..\..\..\License.txt" KeyPath="yes" />
</Component>
</DirectoryRef>
<DirectoryRef Id="BINDIR" FileSource="..\build\$(var.Configuration)">
<Component Id="C.winfsp_x64.sys">
<File Name="winfsp-x64.sys" KeyPath="yes" />
<Component Id="C.$(var.MyProductFileName)_x64.sys">
<File Name="$(var.MyProductFileName)-x64.sys" KeyPath="yes" />
</Component>
<Component Id="C.winfsp_x86.sys">
<File Name="winfsp-x86.sys" KeyPath="yes" />
<Component Id="C.$(var.MyProductFileName)_x86.sys">
<File Name="$(var.MyProductFileName)-x86.sys" KeyPath="yes" />
</Component>
<!-- On Win64 register winfsp-x64.dll -->
<Component Id="C.winfsp_x64.dll.selfreg" Guid="F0A67746-1A9C-4976-8EC0-882E9407FA6D">
<File Id="FILE.winfsp_x64.dll.selfreg" Name="winfsp-x64.dll" KeyPath="yes" SelfRegCost="1" />
<!-- On Win64 register $(var.MyProductFileName)-x64.dll -->
<Component Id="C.$(var.MyProductFileName)_x64.dll.selfreg" Guid="F0A67746-1A9C-4976-8EC0-882E9407FA6D">
<File Id="FILE.$(var.MyProductFileName)_x64.dll.selfreg" Name="$(var.MyProductFileName)-x64.dll" KeyPath="yes" SelfRegCost="1" />
<Condition>VersionNT64</Condition>
</Component>
<Component Id="C.winfsp_x86.dll" Guid="950492FB-12F7-4E27-9124-8325A2BC9927">
<File Name="winfsp-x86.dll" KeyPath="yes" />
<Component Id="C.$(var.MyProductFileName)_x86.dll" Guid="950492FB-12F7-4E27-9124-8325A2BC9927">
<File Name="$(var.MyProductFileName)-x86.dll" KeyPath="yes" />
<Condition>VersionNT64</Condition>
</Component>
<!-- On Win32 register winfsp-x86.dll -->
<Component Id="C.winfsp_x64.dll" Guid="4D6E7A8E-0CA6-49BE-B312-1EDADE725756">
<File Name="winfsp-x64.dll" KeyPath="yes" />
<!-- On Win32 register $(var.MyProductFileName)-x86.dll -->
<Component Id="C.$(var.MyProductFileName)_x64.dll" Guid="4D6E7A8E-0CA6-49BE-B312-1EDADE725756">
<File Name="$(var.MyProductFileName)-x64.dll" KeyPath="yes" />
<Condition>NOT VersionNT64</Condition>
</Component>
<Component Id="C.winfsp_x86.dll.selfreg" Guid="F0DEF7A6-AF55-419F-A58A-DF4018C6FA73">
<File Id="FILE.winfsp_x86.dll.selfreg" Name="winfsp-x86.dll" KeyPath="yes" SelfRegCost="1" />
<Component Id="C.$(var.MyProductFileName)_x86.dll.selfreg" Guid="F0DEF7A6-AF55-419F-A58A-DF4018C6FA73">
<File Id="FILE.$(var.MyProductFileName)_x86.dll.selfreg" Name="$(var.MyProductFileName)-x86.dll" KeyPath="yes" SelfRegCost="1" />
<Condition>NOT VersionNT64</Condition>
</Component>
<!-- install assembly -->
<Component Id="C.winfsp_msil.dll" Guid="0D8BA6AE-9F87-402B-AE1A-95B0AE3BE179">
<File Id="FILE.winfsp_msil.dll" Name="winfsp-msil.dll" KeyPath="yes" />
<Component Id="C.$(var.MyProductFileName)_msil.dll" Guid="0D8BA6AE-9F87-402B-AE1A-95B0AE3BE179">
<File Id="FILE.$(var.MyProductFileName)_msil.dll" Name="$(var.MyProductFileName)-msil.dll" KeyPath="yes" />
</Component>
<Component Id="C.winfsp_msil.xml" Guid="1657F707-C112-454C-91AE-0FDEBBF454AB">
<File Id="FILE.winfsp_msil.xml" Name="winfsp-msil.xml" KeyPath="yes" />
<Component Id="C.$(var.MyProductFileName)_msil.xml" Guid="1657F707-C112-454C-91AE-0FDEBBF454AB">
<File Id="FILE.$(var.MyProductFileName)_msil.xml" Name="$(var.MyProductFileName)-msil.xml" KeyPath="yes" />
</Component>
<!--
<Component Id="C.winfsp_msil.dll.GAC" Guid="6469467D-8C90-4889-8138-4028F9DA6E85">
<File Id="FILE.winfsp_msil.dll.GAC" Name="winfsp-msil.dll" KeyPath="yes" Assembly=".net" />
<Component Id="C.$(var.MyProductFileName)_msil.dll.GAC" Guid="6469467D-8C90-4889-8138-4028F9DA6E85">
<File Id="FILE.$(var.MyProductFileName)_msil.dll.GAC" Name="$(var.MyProductFileName)-msil.dll" KeyPath="yes" Assembly=".net" />
</Component>
<Component Id="C.policy.winfsp_msil.dll.GAC">
<File Name="policy.1.0.winfsp-msil.dll" KeyPath="yes" Assembly=".net" />
<File Name="policy.1.0.winfsp-msil.config" KeyPath="no" />
<Component Id="C.policy.$(var.MyProductFileName)_msil.dll.GAC">
<File Name="policy.1.0.$(var.MyProductFileName)-msil.dll" KeyPath="yes" Assembly=".net" />
<File Name="policy.1.0.$(var.MyProductFileName)-msil.config" KeyPath="no" />
</Component>
-->
@ -297,11 +297,11 @@
</Directory>
</DirectoryRef>
<DirectoryRef Id="LIBDIR" FileSource="..\build\$(var.Configuration)">
<Component Id="C.winfsp_x64.lib">
<File Name="winfsp-x64.lib" KeyPath="yes" />
<Component Id="C.$(var.MyProductFileName)_x64.lib">
<File Name="$(var.MyProductFileName)-x64.lib" KeyPath="yes" />
</Component>
<Component Id="C.winfsp_x86.lib">
<File Name="winfsp-x86.lib" KeyPath="yes" />
<Component Id="C.$(var.MyProductFileName)_x86.lib">
<File Name="$(var.MyProductFileName)-x86.lib" KeyPath="yes" />
</Component>
<!-- On Win64 copy fuse-x64.pc -->
@ -565,17 +565,17 @@
</Directory>
</DirectoryRef>
<DirectoryRef Id="SYMDIR">
<Component Id="C.winfsp_x64.sys.pdb">
<File Name="winfsp-x64.sys.pdb" Source="..\build\$(var.Configuration)\winfsp-x64.sys.public.pdb" KeyPath="yes" />
<Component Id="C.$(var.MyProductFileName)_x64.sys.pdb">
<File Name="$(var.MyProductFileName)-x64.sys.pdb" Source="..\build\$(var.Configuration)\$(var.MyProductFileName)-x64.sys.public.pdb" KeyPath="yes" />
</Component>
<Component Id="C.winfsp_x86.sys.pdb">
<File Name="winfsp-x86.sys.pdb" Source="..\build\$(var.Configuration)\winfsp-x86.sys.public.pdb" KeyPath="yes" />
<Component Id="C.$(var.MyProductFileName)_x86.sys.pdb">
<File Name="$(var.MyProductFileName)-x86.sys.pdb" Source="..\build\$(var.Configuration)\$(var.MyProductFileName)-x86.sys.public.pdb" KeyPath="yes" />
</Component>
<Component Id="C.winfsp_x64.dll.pdb">
<File Name="winfsp-x64.dll.pdb" Source="..\build\$(var.Configuration)\winfsp-x64.dll.public.pdb" KeyPath="yes" />
<Component Id="C.$(var.MyProductFileName)_x64.dll.pdb">
<File Name="$(var.MyProductFileName)-x64.dll.pdb" Source="..\build\$(var.Configuration)\$(var.MyProductFileName)-x64.dll.public.pdb" KeyPath="yes" />
</Component>
<Component Id="C.winfsp_x86.dll.pdb">
<File Name="winfsp-x86.dll.pdb" Source="..\build\$(var.Configuration)\winfsp-x86.dll.public.pdb" KeyPath="yes" />
<Component Id="C.$(var.MyProductFileName)_x86.dll.pdb">
<File Name="$(var.MyProductFileName)-x86.dll.pdb" Source="..\build\$(var.Configuration)\$(var.MyProductFileName)-x86.dll.public.pdb" KeyPath="yes" />
</Component>
<Component Id="C.launcher_x64.pdb">
<File Name="launcher-x64.pdb" Source="..\build\$(var.Configuration)\launcher-x64.public.pdb" KeyPath="yes" />
@ -603,13 +603,13 @@
</Component>
</DirectoryRef>
<ComponentGroup Id="C.WinFsp.bin">
<ComponentRef Id="C.winfsp_x64.sys" />
<ComponentRef Id="C.winfsp_x86.sys" />
<ComponentRef Id="C.winfsp_x64.dll.selfreg" />
<ComponentRef Id="C.winfsp_x86.dll" />
<ComponentRef Id="C.winfsp_x64.dll" />
<ComponentRef Id="C.winfsp_x86.dll.selfreg" />
<ComponentGroup Id="C.$(var.MyProductName).bin">
<ComponentRef Id="C.$(var.MyProductFileName)_x64.sys" />
<ComponentRef Id="C.$(var.MyProductFileName)_x86.sys" />
<ComponentRef Id="C.$(var.MyProductFileName)_x64.dll.selfreg" />
<ComponentRef Id="C.$(var.MyProductFileName)_x86.dll" />
<ComponentRef Id="C.$(var.MyProductFileName)_x64.dll" />
<ComponentRef Id="C.$(var.MyProductFileName)_x86.dll.selfreg" />
<ComponentRef Id="C.launcher_x64.exe.svcinst" />
<ComponentRef Id="C.launcher_x86.exe" />
<ComponentRef Id="C.launcher_x64.exe" />
@ -621,7 +621,7 @@
<ComponentRef Id="C.diag.bat" />
<ComponentRef Id="C.fsreg.bat" />
</ComponentGroup>
<ComponentGroup Id="C.WinFsp.inc">
<ComponentGroup Id="C.$(var.MyProductName).inc">
<ComponentRef Id="C.fsctl.h" />
<ComponentRef Id="C.winfsp.h" />
<ComponentRef Id="C.launch.h" />
@ -635,15 +635,15 @@
<ComponentRef Id="C.fuse3_opt.h" />
<ComponentRef Id="C.winfsp_fuse3.h" />
</ComponentGroup>
<ComponentGroup Id="C.WinFsp.lib">
<ComponentRef Id="C.winfsp_x64.lib" />
<ComponentRef Id="C.winfsp_x86.lib" />
<ComponentGroup Id="C.$(var.MyProductName).lib">
<ComponentRef Id="C.$(var.MyProductFileName)_x64.lib" />
<ComponentRef Id="C.$(var.MyProductFileName)_x86.lib" />
<ComponentRef Id="C.fuse_x64.pc" />
<ComponentRef Id="C.fuse_x86.pc" />
<ComponentRef Id="C.fuse3_x64.pc" />
<ComponentRef Id="C.fuse3_x86.pc" />
</ComponentGroup>
<ComponentGroup Id="C.WinFsp.opt.fuse">
<ComponentGroup Id="C.$(var.MyProductName).opt.fuse">
<ComponentRef Id="C.fuse.tar.xz.x64" />
<ComponentRef Id="C.fuse.tar.xz.x86" />
<ComponentRef Id="C.fuse3.tar.xz.x64" />
@ -651,12 +651,12 @@
<ComponentRef Id="C.fuse.install.sh" />
<ComponentRef Id="C.fuse.uninstall.sh" />
</ComponentGroup>
<ComponentGroup Id="C.WinFsp.opt.fsext">
<ComponentGroup Id="C.$(var.MyProductName).opt.fsext">
<ComponentRef Id="C.fsext.h" />
<ComponentRef Id="C.fsext.winfsp_x64.lib" />
<ComponentRef Id="C.fsext.winfsp_x86.lib" />
</ComponentGroup>
<ComponentGroup Id="C.WinFsp.smp">
<ComponentGroup Id="C.$(var.MyProductName).smp">
<ComponentRef Id="C.memfs_x64.exe" />
<ComponentRef Id="C.memfs_x86.exe" />
<ComponentRef Id="C.memfs.h" />
@ -704,11 +704,11 @@
<ComponentRef Id="C.notifyfs.vcxproj" />
<ComponentRef Id="C.notifyfs.vcxproj.filters" />
</ComponentGroup>
<ComponentGroup Id="C.WinFsp.sym">
<ComponentRef Id="C.winfsp_x64.sys.pdb" />
<ComponentRef Id="C.winfsp_x86.sys.pdb" />
<ComponentRef Id="C.winfsp_x86.dll.pdb" />
<ComponentRef Id="C.winfsp_x64.dll.pdb" />
<ComponentGroup Id="C.$(var.MyProductName).sym">
<ComponentRef Id="C.$(var.MyProductFileName)_x64.sys.pdb" />
<ComponentRef Id="C.$(var.MyProductFileName)_x86.sys.pdb" />
<ComponentRef Id="C.$(var.MyProductFileName)_x86.dll.pdb" />
<ComponentRef Id="C.$(var.MyProductFileName)_x64.dll.pdb" />
<ComponentRef Id="C.launcher_x86.pdb" />
<ComponentRef Id="C.launcher_x64.pdb" />
<ComponentRef Id="C.launchctl_x64.pdb" />
@ -718,15 +718,15 @@
<ComponentRef Id="C.memfs_x64.pdb" />
<ComponentRef Id="C.memfs_x86.pdb" />
</ComponentGroup>
<ComponentGroup Id="C.WinFsp.net">
<ComponentRef Id="C.winfsp_msil.dll" />
<ComponentRef Id="C.winfsp_msil.xml" />
<ComponentGroup Id="C.$(var.MyProductName).net">
<ComponentRef Id="C.$(var.MyProductFileName)_msil.dll" />
<ComponentRef Id="C.$(var.MyProductFileName)_msil.xml" />
<!--
<ComponentRef Id="C.winfsp_msil.dll.GAC" />
<ComponentRef Id="C.policy.winfsp_msil.dll.GAC" />
<ComponentRef Id="C.$(var.MyProductFileName)_msil.dll.GAC" />
<ComponentRef Id="C.policy.$(var.MyProductFileName)_msil.dll.GAC" />
-->
</ComponentGroup>
<ComponentGroup Id="C.WinFsp.smp.net">
<ComponentGroup Id="C.$(var.MyProductName).smp.net">
<ComponentRef Id="C.memfs_dotnet_msil.exe" />
<ComponentRef Id="C.memfs_dotnet.Program.cs" />
<ComponentRef Id="C.passthrough_dotnet.Program.cs" />
@ -757,8 +757,8 @@
AllowAdvertise="no"
InstallDefault="local"
Absent="disallow">
<ComponentGroupRef Id="C.WinFsp.bin" />
<ComponentGroupRef Id="C.WinFsp.net" />
<ComponentGroupRef Id="C.$(var.MyProductName).bin" />
<ComponentGroupRef Id="C.$(var.MyProductName).net" />
</Feature>
<!--
<Feature
@ -769,7 +769,7 @@
AllowAdvertise="no"
InstallDefault="local"
Absent="allow">
<ComponentGroupRef Id="C.WinFsp.net" />
<ComponentGroupRef Id="C.$(var.MyProductName).net" />
</Feature>
-->
<Feature
@ -780,11 +780,11 @@
AllowAdvertise="no"
InstallDefault="local"
Absent="allow">
<ComponentGroupRef Id="C.WinFsp.inc" />
<ComponentGroupRef Id="C.WinFsp.lib" />
<ComponentGroupRef Id="C.WinFsp.smp" />
<ComponentGroupRef Id="C.WinFsp.smp.net" />
<ComponentGroupRef Id="C.WinFsp.sym" />
<ComponentGroupRef Id="C.$(var.MyProductName).inc" />
<ComponentGroupRef Id="C.$(var.MyProductName).lib" />
<ComponentGroupRef Id="C.$(var.MyProductName).smp" />
<ComponentGroupRef Id="C.$(var.MyProductName).smp.net" />
<ComponentGroupRef Id="C.$(var.MyProductName).sym" />
</Feature>
<Feature
Id="F.KernelDeveloper"
@ -794,7 +794,7 @@
AllowAdvertise="no"
InstallDefault="local"
Absent="allow">
<ComponentGroupRef Id="C.WinFsp.opt.fsext" />
<ComponentGroupRef Id="C.$(var.MyProductName).opt.fsext" />
</Feature>
<Feature
Id="F.Cygfuse"
@ -804,7 +804,7 @@
AllowAdvertise="no"
InstallDefault="local"
Absent="allow">
<ComponentGroupRef Id="C.WinFsp.opt.fuse" />
<ComponentGroupRef Id="C.$(var.MyProductName).opt.fuse" />
</Feature>
</Feature>

View File

@ -7,7 +7,7 @@
<ProductVersion>3.10</ProductVersion>
<ProjectGuid>d53aac39-4c57-4ca5-a4f3-c2b24888c594</ProjectGuid>
<SchemaVersion>2.0</SchemaVersion>
<OutputName>winfsp-$(MyVersion)</OutputName>
<OutputName>$(MyProductFileName)-$(MyVersion)</OutputName>
<OutputType>Package</OutputType>
<WixTargetsPath Condition=" '$(WixTargetsPath)' == '' AND '$(MSBuildExtensionsPath32)' != '' ">$(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Wix.targets</WixTargetsPath>
<WixTargetsPath Condition=" '$(WixTargetsPath)' == '' ">$(MSBuildExtensionsPath)\Microsoft\WiX\v3.x\Wix.targets</WixTargetsPath>
@ -16,7 +16,7 @@
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
<OutputPath>$(SolutionDir)build\$(Configuration)\</OutputPath>
<IntermediateOutputPath>$(SolutionDir)build\$(Name).build\$(Configuration)\$(Platform)\</IntermediateOutputPath>
<DefineConstants>Debug;MyProductName=$(MyProductName);MyDescription=$(MyDescription);MyCompanyName=$(MyCompanyName);MyCopyright=$(MyCopyright);MyProductVersion=$(MyProductVersion);MyProductStage=$(MyProductStage);MyVersion=$(MyVersion);MyFullVersion=$(MyFullVersion)</DefineConstants>
<DefineConstants>Debug;MyProductName=$(MyProductName);MyProductFileName=$(MyProductFileName);MyDescription=$(MyDescription);MyCompanyName=$(MyCompanyName);MyCopyright=$(MyCopyright);MyProductVersion=$(MyProductVersion);MyProductStage=$(MyProductStage);MyVersion=$(MyVersion);MyFullVersion=$(MyFullVersion)</DefineConstants>
<SuppressAllWarnings>False</SuppressAllWarnings>
<Pedantic>True</Pedantic>
<SuppressPdbOutput>True</SuppressPdbOutput>
@ -25,7 +25,7 @@
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
<OutputPath>$(SolutionDir)build\$(Configuration)\</OutputPath>
<IntermediateOutputPath>$(SolutionDir)build\$(Name).build\$(Configuration)\$(Platform)\</IntermediateOutputPath>
<DefineConstants>MyProductName=$(MyProductName);MyDescription=$(MyDescription);MyCompanyName=$(MyCompanyName);MyCopyright=$(MyCopyright);MyProductVersion=$(MyProductVersion);MyProductStage=$(MyProductStage);MyVersion=$(MyVersion);MyFullVersion=$(MyFullVersion)</DefineConstants>
<DefineConstants>MyProductName=$(MyProductName);MyProductFileName=$(MyProductFileName);MyDescription=$(MyDescription);MyCompanyName=$(MyCompanyName);MyCopyright=$(MyCopyright);MyProductVersion=$(MyProductVersion);MyProductStage=$(MyProductStage);MyVersion=$(MyVersion);MyFullVersion=$(MyFullVersion)</DefineConstants>
<SuppressAllWarnings>False</SuppressAllWarnings>
<Pedantic>True</Pedantic>
<SuppressPdbOutput>True</SuppressPdbOutput>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 112 KiB

After

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 601 KiB

After

Width:  |  Height:  |  Size: 451 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 601 KiB

After

Width:  |  Height:  |  Size: 451 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 601 KiB

After

Width:  |  Height:  |  Size: 451 KiB

View File

@ -12,14 +12,15 @@
<MyGitRevision Condition="!$(MyGitHead.StartsWith(ref: ))">$(MyGitHead.Substring(0, 7))</MyGitRevision>
<MyProductName>WinFsp</MyProductName>
<MyProductFileName>winfsp</MyProductFileName>
<MyDescription>Windows File System Proxy</MyDescription>
<MyCompanyName>Navimatics LLC</MyCompanyName>
<MyCopyright>2015-$([System.DateTime]::Now.ToString(`yyyy`)) Bill Zissimopoulos</MyCopyright>
<MyCanonicalVersion>1.9</MyCanonicalVersion>
<MyCanonicalVersion>1.10</MyCanonicalVersion>
<MyProductVersion>2021</MyProductVersion>
<MyProductStage>Gold</MyProductStage>
<MyProductVersion>2021.1 Beta2</MyProductVersion>
<MyProductStage>Beta</MyProductStage>
<MyVersion>$(MyCanonicalVersion).$(MyBuildNumber)</MyVersion>
<MyVersionWithCommas>$(MyVersion.Replace('.',',')),0</MyVersionWithCommas>
@ -27,14 +28,18 @@
<MyAssemblyPolicyVersion>$(MyCanonicalVersion.Substring(0,$(MyVersion.IndexOf('.')))).0</MyAssemblyPolicyVersion>
<MyAssemblyVersion>$(MyAssemblyPolicyVersion).0.0</MyAssemblyVersion>
<!-- When rebranding WinFsp you MUST change the following GUIDs - use VS "Create GUID" tool -->
<MyFspFsctlDeviceClassGuid>{ 0x6f9d25fa, 0x6dee, 0x4a9d, { 0x80, 0xf5, 0xe9, 0x8e, 0x14, 0xf3, 0x5e, 0x54 } }</MyFspFsctlDeviceClassGuid>
<MyFspFsvrtDeviceClassGuid>{ 0xb48171c3, 0xdd50, 0x4852, { 0x83, 0xa3, 0x34, 0x4c, 0x50, 0xd9, 0x3b, 0x17 } }</MyFspFsvrtDeviceClassGuid>
</PropertyGroup>
<ItemDefinitionGroup>
<ClCompile>
<PreprocessorDefinitions>NTDDI_VERSION=0x06010000;_WIN32_WINNT=0x0601</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)</PreprocessorDefinitions>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>MyProductName=$(MyProductName);MyDescription=$(MyDescription);MyCompanyName=$(MyCompanyName);MyCopyright=$(MyCopyright);MyProductVersion=$(MyProductVersion);MyProductStage=$(MyProductStage);MyVersion=$(MyVersion);MyVersionWithCommas=$(MyVersionWithCommas);MyFullVersion=$(MyFullVersion)</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)</PreprocessorDefinitions>
</ResourceCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(IsKernelModeToolset)'=='true'">

View File

@ -182,25 +182,25 @@ copy /b $(OutDir)fuse3-$(PlatformTarget).pc + %(FullPath) $(OutDir)fuse3-$(Platf
<LinkIncremental>true</LinkIncremental>
<OutDir>$(SolutionDir)build\$(Configuration)\</OutDir>
<IntDir>$(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(PlatformTarget)\</IntDir>
<TargetName>$(SolutionName)-$(PlatformTarget)</TargetName>
<TargetName>$(MyProductFileName)-$(PlatformTarget)</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<LinkIncremental>true</LinkIncremental>
<OutDir>$(SolutionDir)build\$(Configuration)\</OutDir>
<IntDir>$(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(PlatformTarget)\</IntDir>
<TargetName>$(SolutionName)-$(PlatformTarget)</TargetName>
<TargetName>$(MyProductFileName)-$(PlatformTarget)</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<LinkIncremental>false</LinkIncremental>
<OutDir>$(SolutionDir)build\$(Configuration)\</OutDir>
<IntDir>$(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(PlatformTarget)\</IntDir>
<TargetName>$(SolutionName)-$(PlatformTarget)</TargetName>
<TargetName>$(MyProductFileName)-$(PlatformTarget)</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<LinkIncremental>false</LinkIncremental>
<OutDir>$(SolutionDir)build\$(Configuration)\</OutDir>
<IntDir>$(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(PlatformTarget)\</IntDir>
<TargetName>$(SolutionName)-$(PlatformTarget)</TargetName>
<TargetName>$(MyProductFileName)-$(PlatformTarget)</TargetName>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>

View File

@ -75,28 +75,28 @@
<DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor>
<OutDir>$(SolutionDir)build\$(Configuration)\</OutDir>
<IntDir>$(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(PlatformTarget)\</IntDir>
<TargetName>$(SolutionName)-$(PlatformTarget)</TargetName>
<TargetName>$(MyProductFileName)-$(PlatformTarget)</TargetName>
<EnableInf2cat>false</EnableInf2cat>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor>
<OutDir>$(SolutionDir)build\$(Configuration)\</OutDir>
<IntDir>$(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(PlatformTarget)\</IntDir>
<TargetName>$(SolutionName)-$(PlatformTarget)</TargetName>
<TargetName>$(MyProductFileName)-$(PlatformTarget)</TargetName>
<EnableInf2cat>false</EnableInf2cat>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor>
<OutDir>$(SolutionDir)build\$(Configuration)\</OutDir>
<IntDir>$(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(PlatformTarget)\</IntDir>
<TargetName>$(SolutionName)-$(PlatformTarget)</TargetName>
<TargetName>$(MyProductFileName)-$(PlatformTarget)</TargetName>
<EnableInf2cat>false</EnableInf2cat>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor>
<OutDir>$(SolutionDir)build\$(Configuration)\</OutDir>
<IntDir>$(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(PlatformTarget)\</IntDir>
<TargetName>$(SolutionName)-$(PlatformTarget)</TargetName>
<TargetName>$(MyProductFileName)-$(PlatformTarget)</TargetName>
<EnableInf2cat>false</EnableInf2cat>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">

View File

@ -1,6 +1,6 @@
= Known File Systems and File System Libraries
This document contains a list of known file systems and file system libraries that run on WinFsp. Please contact the WinFsp project to have your file system solution added to this list.
This document contains a list of known open-source file systems and file system libraries that run on WinFsp. Please contact the WinFsp project to have your file system solution added to this list.
== File Systems
@ -9,13 +9,16 @@ This document contains a list of known file systems and file system libraries th
- https://github.com/lowleveldesign/fsmemfs[fsmemfs] - Memory File System written in F#
- https://github.com/ihaveamac/fuse-3ds[fuse-3ds] - FUSE Filesystem Python scripts for Nintendo 3DS files
- https://github.com/sganis/golddrive[golddrive] - Windows ssh network drive
- https://github.com/billziss-gh/hubfs[hubfs] - File system for GitHub
- https://github.com/FrKaram/KS2.Drive[KS2.Drive] - Mount a webDAV/AOS server as a local drive
- https://github.com/billziss-gh/nfs-win[nfs-win] - NFS for Windows
- https://github.com/billziss-gh/objfs[objfs] - Object Storage File System
- https://github.com/ncw/rclone[rclone] - rsync for cloud storage
- https://github.com/hasse69/rar2fs[rar2fs] - FUSE file system for reading RAR archives
- https://github.com/billziss-gh/redditfs[redditfs] - ls -l /r/programming
- https://github.com/netheril96/securefs[securefs] - Filesystem in userspace (FUSE) with transparent authenticated encryption
- https://github.com/billziss-gh/sshfs-win[sshfs-win] - SSHFS for Windows
- https://github.com/printpagestopdf/WordpressDrive[WordpressDrive] - Windows Userspace Filesystem based on WinFsp that presents a Wordpress Site as a Windows Drive
- https://github.com/emoose/xbox-winfsp[xbox-winfsp] - Adds native support to Windows for the FATX, STFS & GDFX (aka XGD/XDVDFS) Xbox filesystems.
- https://github.com/UtrechtUniversity/YodaDrive[YodaDrive] - Mount a Yoda drive as a local drive

View File

@ -0,0 +1,59 @@
= WinFsp Rebranding
If you have a commercial WinFsp license and wish to produce a rebranded version of WinFsp, you can follow the instructions in this document.
== Overview
The WinFsp build is controlled by the file `build\VStudio\version.properties`. The file contains properties that control the final build output in a number of ways. Some of the properties in this file control how the final build product is branded, others how it is versioned, etc.
=== Branding
The properties that control branding are the following:
* `MyProductName`: This is the overall product name. It should be a short name without spaces. For example: `MyCompanyFSP`. The default value is `WinFsp`.
* `MyProductFileName`: This is the file name that will be used for the primary WinFsp components. For example: if you use `mycompanyfsp` the FSD will be named `mycompanyfsp-x64.sys` and `mycompanyfsp-x86.sys`, the DLL will be named `mycompanyfsp-x64.dll` and `mycompanyfsp-x86.dll`, etc. The default value is `winfsp`. (Note that due to a limitation the WinFsp .NET implementation assumes that `MyProductFileName` is the lowercase version of `MyProductName`.)
* `MyDescription`: This is a longer product description. For example: `MyCompany File System Proxy`. The default value is `Windows File System Proxy`.
* `MyCompanyName`: This is the company name.
* `MyCopyright`: This is the product's copyright.
* `MyFspFsctlDeviceClassGuid`, `MyFspFsvrtDeviceClassGuid`: When creating devices the FSD needs to assign GUID classes to them; it uses the GUIDs specified by these properties. You MUST change these GUIDs when rebranding; otherwise your product and "official" WinFsp releases may interfere with each other. From the Visual Studio main menu use Tools > Create GUID and select option "3. static const struct GUID" to produce GUIDs in the correct format.
=== Versioning
The properties that control versioning are the following:
* `MyCanonicalVersion`: This is the "canonical" (i.e. non-marketing) version of the product. WinFsp uses a `major.minor.build` versioning scheme. The `major.minor` portion of the version comes from this property; build numbers are computed automatically from the current date.
** Some WinFsp components check that canonical versions of different components match. For example, the WinFsp .NET implementation checks that its major version matches the one from the WinFsp DLL.
* `MyProductVersion`: This is the product (i.e. marketing) version of the product. WinFsp uses the release year as the product version; it also adds a point release for subsequent releases (thus 2021 is the first release in 2021, and 2021.1 is the second release, etc). This property may be an arbitrary string.
* `MyProductStage`: This specifies the kind of the build. Allowed values are `Beta`, `RC` (Release Candidate) and `Gold` (Final).
== Limitations
Currently WinFsp supports rebranding of the core WinFsp components:
* The WinFsp FSD (File System Driver).
* The WinFsp DLL (user mode DLL). This includes the DLL import libraries.
* The WinFsp Launcher (Windows service that allows for easy launching of file systems).
Currently WinFsp does not support rebranding of the following components:
* Development files such as header files, samples, etc. These are not end-user visible and therefore are not necessary to be rebranded.
* WinFsp test suites.
* FUSE for Cygwin.
* Chocolatey builds.
Additional limitations:
* The default installer (in file `build\VStudio\installer\Product.wxs`) contains a number of GUIDs. These MUST be changed if the default installer is used by a rebranded product; otherwise installation of your product and "official" WinFsp releases may interfere with each other. There is a Python script at `tools\gensrc\wixguid.py` that can help with this.

View File

@ -1,7 +1,7 @@
/**
* @file tlib/callstack.c
*
* @copyright 2014-2020 Bill Zissimopoulos
* @copyright 2014-2021 Bill Zissimopoulos
*/
#include <tlib/callstack.h>

View File

@ -1,7 +1,7 @@
/**
* @file tlib/callstack.h
*
* @copyright 2014-2020 Bill Zissimopoulos
* @copyright 2014-2021 Bill Zissimopoulos
*/
#ifndef TLIB_CALLSTACK_H_INCLUDED

View File

@ -1,7 +1,7 @@
/**
* @file tlib/injected/allfunc.h
*
* @copyright 2014-2020 Bill Zissimopoulos
* @copyright 2014-2021 Bill Zissimopoulos
*/
#ifndef TLIB_INJECTED_ALLFUNC_H_INCLUDED

View File

@ -1,7 +1,7 @@
/**
* @file tlib/injected/curlfunc.c
*
* @copyright 2014-2020 Bill Zissimopoulos
* @copyright 2014-2021 Bill Zissimopoulos
*/
#include <tlib/injected/curlfunc.h>

View File

@ -1,7 +1,7 @@
/**
* @file tlib/injected/curlfunc.h
*
* @copyright 2014-2020 Bill Zissimopoulos
* @copyright 2014-2021 Bill Zissimopoulos
*/
#ifndef TLIB_INJECTED_CURLFUNC_H_INCLUDED

View File

@ -1,7 +1,7 @@
/**
* @file tlib/injected/stdfunc.c
*
* @copyright 2014-2020 Bill Zissimopoulos
* @copyright 2014-2021 Bill Zissimopoulos
*/
#include <tlib/injected/stdfunc.h>

View File

@ -1,7 +1,7 @@
/**
* @file tlib/injected/stdfunc.h
*
* @copyright 2014-2020 Bill Zissimopoulos
* @copyright 2014-2021 Bill Zissimopoulos
*/
#ifndef TLIB_INJECTED_STDFUNC_H_INCLUDED

View File

@ -1,7 +1,7 @@
/**
* @file tlib/injection.c
*
* @copyright 2014-2020 Bill Zissimopoulos
* @copyright 2014-2021 Bill Zissimopoulos
*/
#include <tlib/injection.h>

View File

@ -1,7 +1,7 @@
/**
* @file tlib/injection.h
*
* @copyright 2014-2020 Bill Zissimopoulos
* @copyright 2014-2021 Bill Zissimopoulos
*/
/* NOTE: This header may usefully be included multiple times.

View File

@ -1,7 +1,7 @@
/**
* @file tlib/testsuite.c
*
* @copyright 2014-2020 Bill Zissimopoulos
* @copyright 2014-2021 Bill Zissimopoulos
*/
#include <tlib/testsuite.h>

View File

@ -1,7 +1,7 @@
/**
* @file tlib/testsuite.h
*
* @copyright 2014-2020 Bill Zissimopoulos
* @copyright 2014-2021 Bill Zissimopoulos
*/
#ifndef TLIB_TESTSUITE_H_INCLUDED

View File

@ -6,7 +6,7 @@
* FUSE: Filesystem in Userspace
* Copyright (C) 2001-2007 Miklos Szeredi <miklos@szeredi.hu>
*
* @copyright 2015-2020 Bill Zissimopoulos
* @copyright 2015-2021 Bill Zissimopoulos
*/
/*
* This file is part of WinFsp.

View File

@ -6,7 +6,7 @@
* FUSE: Filesystem in Userspace
* Copyright (C) 2001-2007 Miklos Szeredi <miklos@szeredi.hu>
*
* @copyright 2015-2020 Bill Zissimopoulos
* @copyright 2015-2021 Bill Zissimopoulos
*/
/*
* This file is part of WinFsp.

View File

@ -6,7 +6,7 @@
* FUSE: Filesystem in Userspace
* Copyright (C) 2001-2007 Miklos Szeredi <miklos@szeredi.hu>
*
* @copyright 2015-2020 Bill Zissimopoulos
* @copyright 2015-2021 Bill Zissimopoulos
*/
/*
* This file is part of WinFsp.

View File

@ -2,7 +2,7 @@
* @file fuse/winfsp_fuse.h
* WinFsp FUSE compatible API.
*
* @copyright 2015-2020 Bill Zissimopoulos
* @copyright 2015-2021 Bill Zissimopoulos
*/
/*
* This file is part of WinFsp.

View File

@ -6,7 +6,7 @@
* FUSE: Filesystem in Userspace
* Copyright (C) 2001-2007 Miklos Szeredi <miklos@szeredi.hu>
*
* @copyright 2015-2020 Bill Zissimopoulos
* @copyright 2015-2021 Bill Zissimopoulos
*/
/*
* This file is part of WinFsp.

View File

@ -6,7 +6,7 @@
* FUSE: Filesystem in Userspace
* Copyright (C) 2001-2007 Miklos Szeredi <miklos@szeredi.hu>
*
* @copyright 2015-2020 Bill Zissimopoulos
* @copyright 2015-2021 Bill Zissimopoulos
*/
/*
* This file is part of WinFsp.

View File

@ -2,7 +2,7 @@
* @file fuse3/fuse_opt.h
* WinFsp FUSE3 compatible API.
*
* @copyright 2015-2020 Bill Zissimopoulos
* @copyright 2015-2021 Bill Zissimopoulos
*/
/*
* This file is part of WinFsp.

View File

@ -2,7 +2,7 @@
* @file fuse3/winfsp_fuse.h
* WinFsp FUSE3 compatible API.
*
* @copyright 2015-2020 Bill Zissimopoulos
* @copyright 2015-2021 Bill Zissimopoulos
*/
/*
* This file is part of WinFsp.

View File

@ -1,7 +1,7 @@
/**
* @file winfsp/fsctl.h
*
* @copyright 2015-2020 Bill Zissimopoulos
* @copyright 2015-2021 Bill Zissimopoulos
*/
/*
* This file is part of WinFsp.
@ -35,17 +35,36 @@ extern "C" {
#define FSP_FSCTL_STATIC_ASSERT(e,m) static_assert(1,"")
#endif
#define FSP_FSCTL_DRIVER_NAME "WinFsp"
#define FSP_FSCTL_DISK_DEVICE_NAME "WinFsp.Disk"
#define FSP_FSCTL_NET_DEVICE_NAME "WinFsp.Net"
#define FSP_FSCTL_MUP_DEVICE_NAME "WinFsp.Mup"
#define FSP_FSCTL_STR(x) FSP_FSCTL_STR_(x)
#define FSP_FSCTL_STR_(x) #x
#if defined(MyProductName)
#define FSP_FSCTL_PRODUCT_NAME FSP_FSCTL_STR(MyProductName)
#else
#define FSP_FSCTL_PRODUCT_NAME "WinFsp"
#endif
#if defined(MyProductFileName)
#define FSP_FSCTL_PRODUCT_FILE_NAME FSP_FSCTL_STR(MyProductFileName)
#else
#define FSP_FSCTL_PRODUCT_FILE_NAME "winfsp"
#endif
// {6F9D25FA-6DEE-4A9D-80F5-E98E14F35E54}
#define FSP_FSCTL_DRIVER_NAME FSP_FSCTL_PRODUCT_NAME
#define FSP_FSCTL_DISK_DEVICE_NAME FSP_FSCTL_DRIVER_NAME ".Disk"
#define FSP_FSCTL_NET_DEVICE_NAME FSP_FSCTL_DRIVER_NAME ".Net"
#define FSP_FSCTL_MUP_DEVICE_NAME FSP_FSCTL_DRIVER_NAME ".Mup"
#if defined(MyFspFsctlDeviceClassGuid)
extern const __declspec(selectany) GUID FspFsctlDeviceClassGuid = MyFspFsctlDeviceClassGuid;
#else
extern const __declspec(selectany) GUID FspFsctlDeviceClassGuid =
{ 0x6f9d25fa, 0x6dee, 0x4a9d, { 0x80, 0xf5, 0xe9, 0x8e, 0x14, 0xf3, 0x5e, 0x54 } };
// {B48171C3-DD50-4852-83A3-344C50D93B17}
#endif
#if defined(MyFspFsvrtDeviceClassGuid)
extern const __declspec(selectany) GUID FspFsvrtDeviceClassGuid = MyFspFsvrtDeviceClassGuid;
#else
extern const __declspec(selectany) GUID FspFsvrtDeviceClassGuid =
{ 0xb48171c3, 0xdd50, 0x4852, { 0x83, 0xa3, 0x34, 0x4c, 0x50, 0xd9, 0x3b, 0x17 } };
#endif
/* alignment macros */
#define FSP_FSCTL_ALIGN_UP(x, s) (((x) + ((s) - 1L)) & ~((s) - 1L))
@ -66,6 +85,8 @@ extern const __declspec(selectany) GUID FspFsvrtDeviceClassGuid =
CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 0x800 + 't', METHOD_OUT_DIRECT, FILE_ANY_ACCESS)
#define FSP_FSCTL_STOP \
CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 0x800 + 'S', METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSP_FSCTL_STOP0 \
CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 0x800 + 's', METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSP_FSCTL_NOTIFY \
CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 0x800 + 'n', METHOD_NEITHER, FILE_ANY_ACCESS)
@ -628,6 +649,7 @@ FSP_API NTSTATUS FspFsctlTransact(HANDLE VolumeHandle,
PVOID RequestBuf, SIZE_T *PRequestBufSize,
BOOLEAN Batch);
FSP_API NTSTATUS FspFsctlStop(HANDLE VolumeHandle);
FSP_API NTSTATUS FspFsctlStop0(HANDLE VolumeHandle);
FSP_API NTSTATUS FspFsctlNotify(HANDLE VolumeHandle,
FSP_FSCTL_NOTIFY_INFO *NotifyInfo, SIZE_T Size);
FSP_API NTSTATUS FspFsctlGetVolumeList(PWSTR DevicePath,

View File

@ -5,7 +5,7 @@
* In order to use the WinFsp Launch API a program must include &lt;winfsp/launch.h&gt;
* and link with the winfsp_x64.dll (or winfsp_x86.dll) library.
*
* @copyright 2015-2020 Bill Zissimopoulos
* @copyright 2015-2021 Bill Zissimopoulos
*/
/*
* This file is part of WinFsp.
@ -32,10 +32,10 @@
extern "C" {
#endif
#define FSP_LAUNCH_REGKEY "Software\\WinFsp\\Services"
#define FSP_LAUNCH_REGKEY "Software\\" FSP_FSCTL_PRODUCT_NAME "\\Services"
#define FSP_LAUNCH_REGKEY_WOW64 KEY_WOW64_32KEY
#define FSP_LAUNCH_PIPE_NAME "\\\\.\\pipe\\WinFsp.{14E7137D-22B4-437A-B0C1-D21D1BDF3767}"
#define FSP_LAUNCH_PIPE_NAME "\\\\.\\pipe\\" FSP_FSCTL_PRODUCT_NAME ".{14E7137D-22B4-437A-B0C1-D21D1BDF3767}"
#define FSP_LAUNCH_PIPE_BUFFER_SIZE 4096
#define FSP_LAUNCH_PIPE_OWNER ((PSID)WinLocalSystemSid)

View File

@ -5,7 +5,7 @@
* In order to use the WinFsp API the user mode file system must include &lt;winfsp/winfsp.h&gt;
* and link with the winfsp_x64.dll (or winfsp_x86.dll) library.
*
* @copyright 2015-2020 Bill Zissimopoulos
* @copyright 2015-2021 Bill Zissimopoulos
*/
/*
* This file is part of WinFsp.
@ -91,6 +91,7 @@ typedef struct _REPARSE_DATA_BUFFER
#if !defined(FILE_NEED_EA)
#define FILE_NEED_EA 0x00000080
#endif
#if !defined(__MINGW32__)
typedef struct _FILE_FULL_EA_INFORMATION
{
ULONG NextEntryOffset;
@ -99,6 +100,7 @@ typedef struct _FILE_FULL_EA_INFORMATION
USHORT EaValueLength;
CHAR EaName[1];
} FILE_FULL_EA_INFORMATION, *PFILE_FULL_EA_INFORMATION;
#endif
/**
* @group File System
@ -2112,9 +2114,9 @@ static inline
NTSTATUS FspLoad(PVOID *PModule)
{
#if defined(_WIN64)
#define FSP_DLLNAME "winfsp-x64.dll"
#define FSP_DLLNAME FSP_FSCTL_PRODUCT_FILE_NAME "-x64.dll"
#else
#define FSP_DLLNAME "winfsp-x86.dll"
#define FSP_DLLNAME FSP_FSCTL_PRODUCT_FILE_NAME "-x86.dll"
#endif
#define FSP_DLLPATH "bin\\" FSP_DLLNAME
@ -2142,7 +2144,7 @@ NTSTATUS FspLoad(PVOID *PModule)
Module = LoadLibraryW(L"" FSP_DLLNAME);
if (0 == Module)
{
Result = RegOpenKeyExW(HKEY_LOCAL_MACHINE, L"Software\\WinFsp",
Result = RegOpenKeyExW(HKEY_LOCAL_MACHINE, L"Software\\" FSP_FSCTL_PRODUCT_NAME,
0, KEY_READ | KEY_WOW64_32KEY, &RegKey);
if (ERROR_SUCCESS == Result)
{

View File

@ -2,7 +2,7 @@
* @file winfsp/winfsp.hpp
* WinFsp C++ Layer.
*
* @copyright 2015-2020 Bill Zissimopoulos
* @copyright 2015-2021 Bill Zissimopoulos
*/
/*
* This file is part of WinFsp.
@ -649,7 +649,7 @@ public:
NTSTATUS Preflight(PWSTR MountPoint)
{
return FspFileSystemPreflight(
_VolumeParams.Prefix[0] ? L"WinFsp.Net" : L"WinFsp.Disk",
_VolumeParams.Prefix[0] ? L"" FSP_FSCTL_NET_DEVICE_NAME : L"" FSP_FSCTL_DISK_DEVICE_NAME,
MountPoint);
}
NTSTATUS Mount(PWSTR MountPoint,
@ -669,7 +669,7 @@ public:
if (!NT_SUCCESS(Result))
return Result;
Result = FspFileSystemCreate(
_VolumeParams.Prefix[0] ? L"WinFsp.Net" : L"WinFsp.Disk",
_VolumeParams.Prefix[0] ? L"" FSP_FSCTL_NET_DEVICE_NAME : L"" FSP_FSCTL_DISK_DEVICE_NAME,
&_VolumeParams, Interface(), &_FileSystemPtr);
if (!NT_SUCCESS(Result))
return Result;

View File

@ -1,7 +1,7 @@
/**
* @file fuse/cygfuse.c
*
* @copyright 2015-2020 Bill Zissimopoulos
* @copyright 2015-2021 Bill Zissimopoulos
*/
/*
* This file is part of WinFsp.

View File

@ -1,7 +1,7 @@
/**
* @file fuse3/cygfuse.c
*
* @copyright 2015-2020 Bill Zissimopoulos
* @copyright 2015-2021 Bill Zissimopoulos
*/
/*
* This file is part of WinFsp.

View File

@ -1,7 +1,7 @@
/**
* @file winfsp/fsext.h
*
* @copyright 2015-2020 Bill Zissimopoulos
* @copyright 2015-2021 Bill Zissimopoulos
*/
/*
* This file is part of WinFsp.

View File

@ -1,7 +1,7 @@
/**
* @file dll/debug.c
*
* @copyright 2015-2020 Bill Zissimopoulos
* @copyright 2015-2021 Bill Zissimopoulos
*/
/*
* This file is part of WinFsp.

View File

@ -1,7 +1,7 @@
/**
* @file dll/dirbuf.c
*
* @copyright 2015-2020 Bill Zissimopoulos
* @copyright 2015-2021 Bill Zissimopoulos
*/
/*
* This file is part of WinFsp.

View File

@ -1,7 +1,7 @@
/**
* @file dll/eventlog.c
*
* @copyright 2015-2020 Bill Zissimopoulos
* @copyright 2015-2021 Bill Zissimopoulos
*/
/*
* This file is part of WinFsp.

View File

@ -1,7 +1,7 @@
/**
* @file dll/fs.c
*
* @copyright 2015-2020 Bill Zissimopoulos
* @copyright 2015-2021 Bill Zissimopoulos
*/
/*
* This file is part of WinFsp.
@ -349,7 +349,7 @@ exit:
FspFileSystemSetDispatcherResult(FileSystem, Result);
FspFsctlStop(FileSystem->VolumeHandle);
FspFsctlStop0(FileSystem->VolumeHandle);
if (0 != DispatcherThread)
{
@ -398,11 +398,13 @@ FSP_API VOID FspFileSystemStopDispatcher(FSP_FILE_SYSTEM *FileSystem)
if (0 == FileSystem->DispatcherThread)
return;
FspFsctlStop(FileSystem->VolumeHandle);
FspFsctlStop0(FileSystem->VolumeHandle);
WaitForSingleObject(FileSystem->DispatcherThread, INFINITE);
CloseHandle(FileSystem->DispatcherThread);
FileSystem->DispatcherThread = 0;
FspFsctlStop(FileSystem->VolumeHandle);
}
FSP_API VOID FspFileSystemSendResponse(FSP_FILE_SYSTEM *FileSystem,
@ -423,7 +425,7 @@ FSP_API VOID FspFileSystemSendResponse(FSP_FILE_SYSTEM *FileSystem,
{
FspFileSystemSetDispatcherResult(FileSystem, Result);
FspFsctlStop(FileSystem->VolumeHandle);
FspFsctlStop0(FileSystem->VolumeHandle);
}
}

View File

@ -1,7 +1,7 @@
/**
* @file dll/fsctl.c
*
* @copyright 2015-2020 Bill Zissimopoulos
* @copyright 2015-2021 Bill Zissimopoulos
*/
/*
* This file is part of WinFsp.
@ -161,6 +161,16 @@ FSP_API NTSTATUS FspFsctlStop(HANDLE VolumeHandle)
return STATUS_SUCCESS;
}
FSP_API NTSTATUS FspFsctlStop0(HANDLE VolumeHandle)
{
DWORD Bytes;
if (!DeviceIoControl(VolumeHandle, FSP_FSCTL_STOP0, 0, 0, 0, 0, &Bytes, 0))
return FspNtStatusFromWin32(GetLastError());
return STATUS_SUCCESS;
}
FSP_API NTSTATUS FspFsctlNotify(HANDLE VolumeHandle,
FSP_FSCTL_NOTIFY_INFO *NotifyInfo, SIZE_T Size)
{

View File

@ -1,7 +1,7 @@
/**
* @file dll/fsop.c
*
* @copyright 2015-2020 Bill Zissimopoulos
* @copyright 2015-2021 Bill Zissimopoulos
*/
/*
* This file is part of WinFsp.

View File

@ -1,7 +1,7 @@
/**
* @file dll/fuse/fuse.c
*
* @copyright 2015-2020 Bill Zissimopoulos
* @copyright 2015-2021 Bill Zissimopoulos
*/
/*
* This file is part of WinFsp.

View File

@ -1,7 +1,7 @@
/**
* @file dll/fuse/fuse_compat.c
*
* @copyright 2015-2020 Bill Zissimopoulos
* @copyright 2015-2021 Bill Zissimopoulos
*/
/*
* This file is part of WinFsp.

View File

@ -1,7 +1,7 @@
/**
* @file dll/fuse/fuse_intf.c
*
* @copyright 2015-2020 Bill Zissimopoulos
* @copyright 2015-2021 Bill Zissimopoulos
*/
/*
* This file is part of WinFsp.
@ -951,12 +951,12 @@ exit:
if (CreateOptions & FILE_DIRECTORY_FILE)
{
if (0 != f->ops.releasedir)
f->ops.releasedir(filedesc->PosixPath, &fi);
f->ops.releasedir(contexthdr->PosixPath, &fi);
}
else
{
if (0 != f->ops.release)
f->ops.release(filedesc->PosixPath, &fi);
f->ops.release(contexthdr->PosixPath, &fi);
}
}

View File

@ -1,7 +1,7 @@
/**
* @file dll/fuse/fuse_loop.c
*
* @copyright 2015-2020 Bill Zissimopoulos
* @copyright 2015-2021 Bill Zissimopoulos
*/
/*
* This file is part of WinFsp.

View File

@ -1,7 +1,7 @@
/**
* @file dll/fuse/fuse_main.c
*
* @copyright 2015-2020 Bill Zissimopoulos
* @copyright 2015-2021 Bill Zissimopoulos
*/
/*
* This file is part of WinFsp.

View File

@ -1,7 +1,7 @@
/**
* @file dll/fuse/fuse_opt.c
*
* @copyright 2015-2020 Bill Zissimopoulos
* @copyright 2015-2021 Bill Zissimopoulos
*/
/*
* This file is part of WinFsp.

View File

@ -1,7 +1,7 @@
/**
* @file dll/fuse/library.h
*
* @copyright 2015-2020 Bill Zissimopoulos
* @copyright 2015-2021 Bill Zissimopoulos
*/
/*
* This file is part of WinFsp.

View File

@ -1,7 +1,7 @@
/**
* @file dll/fuse3/fuse2to3.c
*
* @copyright 2015-2020 Bill Zissimopoulos
* @copyright 2015-2021 Bill Zissimopoulos
*/
/*
* This file is part of WinFsp.

View File

@ -1,7 +1,7 @@
/**
* @file dll/fuse3/fuse3.c
*
* @copyright 2015-2020 Bill Zissimopoulos
* @copyright 2015-2021 Bill Zissimopoulos
*/
/*
* This file is part of WinFsp.

View File

@ -1,7 +1,7 @@
/**
* @file dll/fuse/fuse3_compat.c
*
* @copyright 2015-2020 Bill Zissimopoulos
* @copyright 2015-2021 Bill Zissimopoulos
*/
/*
* This file is part of WinFsp.

View File

@ -1,7 +1,7 @@
/**
* @file dll/fuse3/library.h
*
* @copyright 2015-2020 Bill Zissimopoulos
* @copyright 2015-2021 Bill Zissimopoulos
*/
/*
* This file is part of WinFsp.

View File

@ -1,7 +1,7 @@
/**
* @file dll/launch.c
*
* @copyright 2015-2020 Bill Zissimopoulos
* @copyright 2015-2021 Bill Zissimopoulos
*/
/*
* This file is part of WinFsp.

View File

@ -1,7 +1,7 @@
/**
* @file dll/ldap.c
*
* @copyright 2015-2020 Bill Zissimopoulos
* @copyright 2015-2021 Bill Zissimopoulos
*/
/*
* This file is part of WinFsp.

View File

@ -1,7 +1,7 @@
/**
* @file dll/library.c
*
* @copyright 2015-2020 Bill Zissimopoulos
* @copyright 2015-2021 Bill Zissimopoulos
*/
/*
* This file is part of WinFsp.

View File

@ -1,7 +1,7 @@
/**
* @file dll/library.h
*
* @copyright 2015-2020 Bill Zissimopoulos
* @copyright 2015-2021 Bill Zissimopoulos
*/
/*
* This file is part of WinFsp.
@ -30,7 +30,7 @@
#include <shared/ku/config.h>
#define LIBRARY_NAME "WinFsp"
#define LIBRARY_NAME FSP_FSCTL_PRODUCT_NAME
/* DEBUGLOG */
#if !defined(NDEBUG)

View File

@ -1,7 +1,7 @@
/**
* @file dll/mount.c
*
* @copyright 2015-2020 Bill Zissimopoulos
* @copyright 2015-2021 Bill Zissimopoulos
*/
/*
* This file is part of WinFsp.

View File

@ -1,7 +1,7 @@
/**
* @file dll/np.c
*
* @copyright 2015-2020 Bill Zissimopoulos
* @copyright 2015-2021 Bill Zissimopoulos
*/
/*
* This file is part of WinFsp.

View File

@ -1,7 +1,7 @@
/**
* @file dll/ntstatus.c
*
* @copyright 2015-2020 Bill Zissimopoulos
* @copyright 2015-2021 Bill Zissimopoulos
*/
/*
* This file is part of WinFsp.

View File

@ -1,7 +1,7 @@
/**
* @file dll/path.c
*
* @copyright 2015-2020 Bill Zissimopoulos
* @copyright 2015-2021 Bill Zissimopoulos
*/
/*
* This file is part of WinFsp.

View File

@ -1,7 +1,7 @@
/**
* @file dll/security.c
*
* @copyright 2015-2020 Bill Zissimopoulos
* @copyright 2015-2021 Bill Zissimopoulos
*/
/*
* This file is part of WinFsp.

View File

@ -1,7 +1,7 @@
/**
* @file dll/service.c
*
* @copyright 2015-2020 Bill Zissimopoulos
* @copyright 2015-2021 Bill Zissimopoulos
*/
/*
* This file is part of WinFsp.

View File

@ -1,7 +1,7 @@
/**
* @file dll/util.c
*
* @copyright 2015-2020 Bill Zissimopoulos
* @copyright 2015-2021 Bill Zissimopoulos
*/
/*
* This file is part of WinFsp.

View File

@ -23,9 +23,9 @@ BEGIN
VALUE "CompanyName", STR(MyCompanyName)
VALUE "FileDescription", STR(MyDescription)
VALUE "FileVersion", STR(MyFullVersion)
VALUE "InternalName", "winfsp.dll"
VALUE "InternalName", STR(MyProductFileName) ".dll"
VALUE "LegalCopyright", STR(MyCopyright)
VALUE "OriginalFilename", "winfsp.dll"
VALUE "OriginalFilename", STR(MyProductFileName) ".dll"
VALUE "ProductName", STR(MyProductName)
VALUE "ProductVersion", STR(MyProductVersion)
END

View File

@ -1,7 +1,7 @@
/**
* @file dll/wksid.c
*
* @copyright 2015-2020 Bill Zissimopoulos
* @copyright 2015-2021 Bill Zissimopoulos
*/
/*
* This file is part of WinFsp.

View File

@ -1,7 +1,7 @@
/*
* dotnet/FileSystemBase+Const.cs
*
* Copyright 2015-2020 Bill Zissimopoulos
* Copyright 2015-2021 Bill Zissimopoulos
*/
/*
* This file is part of WinFsp.

View File

@ -1,7 +1,7 @@
/*
* dotnet/FileSystemBase.cs
*
* Copyright 2015-2020 Bill Zissimopoulos
* Copyright 2015-2021 Bill Zissimopoulos
*/
/*
* This file is part of WinFsp.

View File

@ -1,7 +1,7 @@
/*
* dotnet/FileSystemHost.cs
*
* Copyright 2015-2020 Bill Zissimopoulos
* Copyright 2015-2021 Bill Zissimopoulos
*/
/*
* This file is part of WinFsp.
@ -342,7 +342,7 @@ namespace Fsp
public Int32 Preflight(String MountPoint)
{
return Api.FspFileSystemPreflight(
_VolumeParams.IsPrefixEmpty() ? "WinFsp.Disk" : "WinFsp.Net",
_VolumeParams.IsPrefixEmpty() ? Api.ProductName + ".Disk" : Api.ProductName + ".Net",
MountPoint);
}
/// <summary>
@ -416,7 +416,7 @@ namespace Fsp
if (0 > Result)
return Result;
Result = Api.FspFileSystemCreate(
_VolumeParams.IsPrefixEmpty() ? "WinFsp.Disk" : "WinFsp.Net",
_VolumeParams.IsPrefixEmpty() ? Api.ProductName + ".Disk" : Api.ProductName + ".Net",
ref _VolumeParams, _FileSystemInterfacePtr, out _FileSystemPtr);
if (0 > Result)
return Result;

View File

@ -1,7 +1,7 @@
/*
* dotnet/Interop.cs
*
* Copyright 2015-2020 Bill Zissimopoulos
* Copyright 2015-2021 Bill Zissimopoulos
*/
/*
* This file is part of WinFsp.
@ -1425,13 +1425,17 @@ namespace Fsp.Interop
}
/* initialization */
internal static String ProductName = "WinFsp";
internal static String ProductFileName = "winfsp";
private static IntPtr LoadDll()
{
String DllPath = null;
String DllName = 8 == IntPtr.Size ? "winfsp-x64.dll" : "winfsp-x86.dll";
String DllName = 8 == IntPtr.Size ?
ProductFileName + "-x64.dll" :
ProductFileName + "-x86.dll";
String KeyName = 8 == IntPtr.Size ?
"HKEY_LOCAL_MACHINE\\SOFTWARE\\WOW6432Node\\WinFsp" :
"HKEY_LOCAL_MACHINE\\Software\\WinFsp";
"HKEY_LOCAL_MACHINE\\SOFTWARE\\WOW6432Node\\" + ProductName :
"HKEY_LOCAL_MACHINE\\Software\\" + ProductName;
IntPtr Module;
Module = LoadLibraryW(DllName);
if (IntPtr.Zero == Module)
@ -1525,6 +1529,15 @@ namespace Fsp.Interop
if (Debugger.IsAttached)
Debugger.Break();
#endif
object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(
typeof(AssemblyProductAttribute), false);
if (null != attributes &&
0 < attributes.Length &&
null != attributes[0] as AssemblyProductAttribute)
{
ProductName = (attributes[0] as AssemblyProductAttribute).Product;
ProductFileName = ProductName.ToLowerInvariant();
}
LoadProto(LoadDll());
CheckVersion();
}

View File

@ -1,7 +1,7 @@
/*
* dotnet/Service.cs
*
* Copyright 2015-2020 Bill Zissimopoulos
* Copyright 2015-2021 Bill Zissimopoulos
*/
/*
* This file is part of WinFsp.

View File

@ -1,7 +1,7 @@
/**
* @file fsptool/fsptool.c
*
* @copyright 2015-2020 Bill Zissimopoulos
* @copyright 2015-2021 Bill Zissimopoulos
*/
/*
* This file is part of WinFsp.

View File

@ -1,7 +1,7 @@
/**
* @file launcher/launchctl.c
*
* @copyright 2015-2020 Bill Zissimopoulos
* @copyright 2015-2021 Bill Zissimopoulos
*/
/*
* This file is part of WinFsp.

View File

@ -1,7 +1,7 @@
/**
* @file launcher/launcher.c
*
* @copyright 2015-2020 Bill Zissimopoulos
* @copyright 2015-2021 Bill Zissimopoulos
*/
/*
* This file is part of WinFsp.
@ -25,7 +25,7 @@
#include <sddl.h>
#include <userenv.h>
#define PROGNAME "WinFsp.Launcher"
#define PROGNAME FSP_FSCTL_PRODUCT_NAME ".Launcher"
static NTSTATUS (NTAPI *SvcNtOpenSymbolicLinkObject)(
PHANDLE LinkHandle,

View File

@ -1,7 +1,7 @@
/**
* @file launcher/ptrans.c
*
* @copyright 2015-2020 Bill Zissimopoulos
* @copyright 2015-2021 Bill Zissimopoulos
*/
/*
* This file is part of WinFsp.

View File

@ -4,7 +4,7 @@
* Shared kernel/user configuration. This file is to be included by the
* FSD and DLL components ONLY!
*
* @copyright 2015-2020 Bill Zissimopoulos
* @copyright 2015-2021 Bill Zissimopoulos
*/
/*
* This file is part of WinFsp.

View File

@ -1,7 +1,7 @@
/**
* @file shared/ku/library.h
*
* @copyright 2015-2020 Bill Zissimopoulos
* @copyright 2015-2021 Bill Zissimopoulos
*/
/*
* This file is part of WinFsp.

View File

@ -14,7 +14,7 @@
* [SNAME]
* https://www.cygwin.com/cygwin-ug-net/using-specialnames.html
*
* @copyright 2015-2020 Bill Zissimopoulos
* @copyright 2015-2021 Bill Zissimopoulos
*/
/*
* This file is part of WinFsp.
@ -181,7 +181,7 @@ static VOID FspPosixInitializeFromRegistry(VOID)
DistinctPermsForSameOwnerGroup = 0;
Result = RegOpenKeyExW(HKEY_LOCAL_MACHINE, L"Software\\WinFsp",
Result = RegOpenKeyExW(HKEY_LOCAL_MACHINE, L"Software\\" FSP_FSCTL_PRODUCT_NAME,
0, KEY_READ | KEY_WOW64_32KEY, &RegKey);
if (ERROR_SUCCESS == Result)
{

View File

@ -1,7 +1,7 @@
/**
* @file shared/ku/uuid5.c
*
* @copyright 2015-2020 Bill Zissimopoulos
* @copyright 2015-2021 Bill Zissimopoulos
*/
/*
* This file is part of WinFsp.

View File

@ -1,7 +1,7 @@
/**
* @file shared/um/minimal.h
*
* @copyright 2015-2020 Bill Zissimopoulos
* @copyright 2015-2021 Bill Zissimopoulos
*/
/*
* This file is part of WinFsp.

View File

@ -2,7 +2,7 @@
* @file sys/callbacks.c
* Fast I/O and resource acquisition callbacks.
*
* @copyright 2015-2020 Bill Zissimopoulos
* @copyright 2015-2021 Bill Zissimopoulos
*/
/*
* This file is part of WinFsp.

View File

@ -1,7 +1,7 @@
/**
* @file sys/cleanup.c
*
* @copyright 2015-2020 Bill Zissimopoulos
* @copyright 2015-2021 Bill Zissimopoulos
*/
/*
* This file is part of WinFsp.

View File

@ -1,7 +1,7 @@
/**
* @file sys/close.c
*
* @copyright 2015-2020 Bill Zissimopoulos
* @copyright 2015-2021 Bill Zissimopoulos
*/
/*
* This file is part of WinFsp.

View File

@ -1,7 +1,7 @@
/**
* @file sys/create.c
*
* @copyright 2015-2020 Bill Zissimopoulos
* @copyright 2015-2021 Bill Zissimopoulos
*/
/*
* This file is part of WinFsp.
@ -1051,8 +1051,21 @@ NTSTATUS FspFsvolCreateComplete(
}
/* open the FileNode */
UINT32 AdditionalGrantedAccess = 0;
switch ((IrpSp->Parameters.Create.Options >> 24) & 0xff)
{
case FILE_OVERWRITE: case FILE_OVERWRITE_IF:
/* Additional granted access for share check. Fixes GitHub issue #364. */
AdditionalGrantedAccess = FILE_WRITE_DATA;
break;
case FILE_SUPERSEDE:
/* Additional granted access for share check. Fixes GitHub issue #364. */
AdditionalGrantedAccess = DELETE;
break;
}
Result = FspFileNodeOpen(FileNode, FileObject,
Response->Rsp.Create.Opened.GrantedAccess, IrpSp->Parameters.Create.ShareAccess,
Response->Rsp.Create.Opened.GrantedAccess, AdditionalGrantedAccess,
IrpSp->Parameters.Create.ShareAccess,
&OpenedFileNode, &SharingViolationReason);
if (!NT_SUCCESS(Result))
{

View File

@ -1,7 +1,7 @@
/**
* @file sys/debug.c
*
* @copyright 2015-2020 Bill Zissimopoulos
* @copyright 2015-2021 Bill Zissimopoulos
*/
/*
* This file is part of WinFsp.

Some files were not shown because too many files have changed in this diff Show More