From 39fcce0e88ae4dde8a6c6bdc2e93adabcf7b5fe8 Mon Sep 17 00:00:00 2001 From: "Scott E. Graves" Date: Mon, 21 Jul 2025 10:59:07 -0500 Subject: [PATCH] upgraded winfsp to v2.1 --- CHANGELOG.md | 1 + README.md | 2 +- cmake/libraries/winfsp.cmake | 4 +- scripts/copy_mingw64_deps.sh | 2 +- .../3rd_party/winfsp-2.0/bin/memfs-a64.exe | Bin 152352 -> 0 bytes .../3rd_party/winfsp-2.0/bin/memfs-x64.exe | Bin 171296 -> 0 bytes .../3rd_party/winfsp-2.0/bin/memfs-x86.exe | Bin 134944 -> 0 bytes .../3rd_party/winfsp-2.0/bin/winfsp-a64.dll | Bin 206624 -> 0 bytes .../3rd_party/winfsp-2.0/bin/winfsp-x64.dll | Bin 197920 -> 0 bytes .../3rd_party/winfsp-2.0/bin/winfsp-x64.sys | Bin 168512 -> 0 bytes .../3rd_party/winfsp-2.0/bin/winfsp-x86.dll | Bin 162592 -> 0 bytes .../3rd_party/winfsp-2.0/inc/winfsp/fsctl.h | 839 --- .../winfsp-2.0/inc/winfsp/winfsp.hpp | 902 ---- .../3rd_party/winfsp-2.0/lib/winfsp-a64.lib | Bin 54816 -> 0 bytes .../3rd_party/winfsp-2.0/lib/winfsp-x64.lib | Bin 54816 -> 0 bytes .../3rd_party/winfsp-2.0/lib/winfsp-x86.lib | Bin 55986 -> 0 bytes .../{winfsp-2.0 => winfsp-2.1}/License.txt | 1416 +++--- .../{winfsp-2.0 => winfsp-2.1}/bin/diag.bat | 108 +- .../bin/fsptool-a64.exe | Bin 19744 -> 19680 bytes .../bin/fsptool-x64.exe | Bin 20256 -> 20200 bytes .../bin/fsptool-x86.exe | Bin 18720 -> 18656 bytes .../{winfsp-2.0 => winfsp-2.1}/bin/fsreg.bat | 84 +- .../bin/launchctl-a64.exe | Bin 16160 -> 16096 bytes .../bin/launchctl-x64.exe | Bin 15648 -> 15592 bytes .../bin/launchctl-x86.exe | Bin 15648 -> 15584 bytes .../bin/launcher-a64.exe | Bin 34080 -> 34016 bytes .../bin/launcher-x64.exe | Bin 34592 -> 34536 bytes .../bin/launcher-x86.exe | Bin 28960 -> 28896 bytes .../3rd_party/winfsp-2.1/bin/memfs-a64.exe | Bin 0 -> 150752 bytes .../bin/memfs-dotnet-msil.exe | Bin 35616 -> 35552 bytes .../3rd_party/winfsp-2.1/bin/memfs-x64.exe | Bin 0 -> 161000 bytes .../3rd_party/winfsp-2.1/bin/memfs-x86.exe | Bin 0 -> 132328 bytes .../3rd_party/winfsp-2.1/bin/winfsp-a64.dll | Bin 0 -> 207080 bytes .../bin/winfsp-a64.sys | Bin 172056 -> 172184 bytes .../bin/winfsp-msil.dll | Bin 188704 -> 188648 bytes .../bin/winfsp-msil.xml | 2750 +++++----- .../3rd_party/winfsp-2.1/bin/winfsp-x64.dll | Bin 0 -> 198376 bytes .../3rd_party/winfsp-2.1/bin/winfsp-x64.sys | Bin 0 -> 168600 bytes .../3rd_party/winfsp-2.1/bin/winfsp-x86.dll | Bin 0 -> 163552 bytes .../bin/winfsp-x86.sys | Bin 140312 -> 140440 bytes .../inc/fuse/fuse.h | 542 +- .../inc/fuse/fuse_common.h | 404 +- .../inc/fuse/fuse_opt.h | 266 +- .../inc/fuse/winfsp_fuse.h | 869 ++-- .../inc/fuse3/fuse.h | 676 +-- .../inc/fuse3/fuse_common.h | 476 +- .../inc/fuse3/fuse_opt.h | 46 +- .../inc/fuse3/winfsp_fuse.h | 164 +- .../3rd_party/winfsp-2.1/inc/winfsp/fsctl.h | 812 +++ .../inc/winfsp/launch.h | 700 +-- .../inc/winfsp/winfsp.h | 4480 ++++++++--------- .../winfsp-2.1/inc/winfsp/winfsp.hpp | 1320 +++++ .../{winfsp-2.0 => winfsp-2.1}/lib/fuse.pc | 22 +- .../{winfsp-2.0 => winfsp-2.1}/lib/fuse3.pc | 22 +- .../3rd_party/winfsp-2.1/lib/winfsp-a64.lib | Bin 0 -> 55054 bytes .../3rd_party/winfsp-2.1/lib/winfsp-x64.lib | Bin 0 -> 55054 bytes .../3rd_party/winfsp-2.1/lib/winfsp-x86.lib | Bin 0 -> 56230 bytes 57 files changed, 8650 insertions(+), 8257 deletions(-) delete mode 100644 support/3rd_party/winfsp-2.0/bin/memfs-a64.exe delete mode 100644 support/3rd_party/winfsp-2.0/bin/memfs-x64.exe delete mode 100644 support/3rd_party/winfsp-2.0/bin/memfs-x86.exe delete mode 100644 support/3rd_party/winfsp-2.0/bin/winfsp-a64.dll delete mode 100644 support/3rd_party/winfsp-2.0/bin/winfsp-x64.dll delete mode 100644 support/3rd_party/winfsp-2.0/bin/winfsp-x64.sys delete mode 100644 support/3rd_party/winfsp-2.0/bin/winfsp-x86.dll delete mode 100644 support/3rd_party/winfsp-2.0/inc/winfsp/fsctl.h delete mode 100644 support/3rd_party/winfsp-2.0/inc/winfsp/winfsp.hpp delete mode 100644 support/3rd_party/winfsp-2.0/lib/winfsp-a64.lib delete mode 100644 support/3rd_party/winfsp-2.0/lib/winfsp-x64.lib delete mode 100644 support/3rd_party/winfsp-2.0/lib/winfsp-x86.lib rename support/3rd_party/{winfsp-2.0 => winfsp-2.1}/License.txt (98%) rename support/3rd_party/{winfsp-2.0 => winfsp-2.1}/bin/diag.bat (95%) rename support/3rd_party/{winfsp-2.0 => winfsp-2.1}/bin/fsptool-a64.exe (72%) rename support/3rd_party/{winfsp-2.0 => winfsp-2.1}/bin/fsptool-x64.exe (72%) rename support/3rd_party/{winfsp-2.0 => winfsp-2.1}/bin/fsptool-x86.exe (70%) rename support/3rd_party/{winfsp-2.0 => winfsp-2.1}/bin/fsreg.bat (95%) rename support/3rd_party/{winfsp-2.0 => winfsp-2.1}/bin/launchctl-a64.exe (69%) rename support/3rd_party/{winfsp-2.0 => winfsp-2.1}/bin/launchctl-x64.exe (66%) rename support/3rd_party/{winfsp-2.0 => winfsp-2.1}/bin/launchctl-x86.exe (67%) rename support/3rd_party/{winfsp-2.0 => winfsp-2.1}/bin/launcher-a64.exe (79%) rename support/3rd_party/{winfsp-2.0 => winfsp-2.1}/bin/launcher-x64.exe (81%) rename support/3rd_party/{winfsp-2.0 => winfsp-2.1}/bin/launcher-x86.exe (76%) create mode 100644 support/3rd_party/winfsp-2.1/bin/memfs-a64.exe rename support/3rd_party/{winfsp-2.0 => winfsp-2.1}/bin/memfs-dotnet-msil.exe (88%) create mode 100644 support/3rd_party/winfsp-2.1/bin/memfs-x64.exe create mode 100644 support/3rd_party/winfsp-2.1/bin/memfs-x86.exe create mode 100644 support/3rd_party/winfsp-2.1/bin/winfsp-a64.dll rename support/3rd_party/{winfsp-2.0 => winfsp-2.1}/bin/winfsp-a64.sys (61%) rename support/3rd_party/{winfsp-2.0 => winfsp-2.1}/bin/winfsp-msil.dll (97%) rename support/3rd_party/{winfsp-2.0 => winfsp-2.1}/bin/winfsp-msil.xml (97%) create mode 100644 support/3rd_party/winfsp-2.1/bin/winfsp-x64.dll create mode 100644 support/3rd_party/winfsp-2.1/bin/winfsp-x64.sys create mode 100644 support/3rd_party/winfsp-2.1/bin/winfsp-x86.dll rename support/3rd_party/{winfsp-2.0 => winfsp-2.1}/bin/winfsp-x86.sys (53%) rename support/3rd_party/{winfsp-2.0 => winfsp-2.1}/inc/fuse/fuse.h (96%) rename support/3rd_party/{winfsp-2.0 => winfsp-2.1}/inc/fuse/fuse_common.h (96%) rename support/3rd_party/{winfsp-2.0 => winfsp-2.1}/inc/fuse/fuse_opt.h (95%) rename support/3rd_party/{winfsp-2.0 => winfsp-2.1}/inc/fuse/winfsp_fuse.h (95%) rename support/3rd_party/{winfsp-2.0 => winfsp-2.1}/inc/fuse3/fuse.h (96%) rename support/3rd_party/{winfsp-2.0 => winfsp-2.1}/inc/fuse3/fuse_common.h (95%) rename support/3rd_party/{winfsp-2.0 => winfsp-2.1}/inc/fuse3/fuse_opt.h (91%) rename support/3rd_party/{winfsp-2.0 => winfsp-2.1}/inc/fuse3/winfsp_fuse.h (96%) create mode 100644 support/3rd_party/winfsp-2.1/inc/winfsp/fsctl.h rename support/3rd_party/{winfsp-2.0 => winfsp-2.1}/inc/winfsp/launch.h (97%) rename support/3rd_party/{winfsp-2.0 => winfsp-2.1}/inc/winfsp/winfsp.h (97%) create mode 100644 support/3rd_party/winfsp-2.1/inc/winfsp/winfsp.hpp rename support/3rd_party/{winfsp-2.0 => winfsp-2.1}/lib/fuse.pc (95%) rename support/3rd_party/{winfsp-2.0 => winfsp-2.1}/lib/fuse3.pc (95%) create mode 100644 support/3rd_party/winfsp-2.1/lib/winfsp-a64.lib create mode 100644 support/3rd_party/winfsp-2.1/lib/winfsp-x64.lib create mode 100644 support/3rd_party/winfsp-2.1/lib/winfsp-x86.lib diff --git a/CHANGELOG.md b/CHANGELOG.md index b8711912..8ba52c19 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,7 @@ * Drive letters in UI should always be lowercase * Fixed WinFSP directory rename for non-empty directories * Migrated to v2 error handling +* Upgraded WinFSP to v2.1 (20205) ## v2.0.5-rc diff --git a/README.md b/README.md index fafe53d7..e4ccd0ee 100644 --- a/README.md +++ b/README.md @@ -48,7 +48,7 @@ on Windows. * [Sia renterd](https://github.com/SiaFoundation/renterd/releases) v2.0.0+ for Sia support * Linux requires `fusermount3`; otherwise, `repertory` must be manually compiled with `libfuse2` support * Windows requires the following dependencies to be installed: - * [WinFSP 2023](https://github.com/winfsp/winfsp/releases/download/v2.0/winfsp-2.0.23075.msi) + * [WinFSP 2025](https://github.com/winfsp/winfsp/releases/download/v2.1/winfsp-2.1.25156.msi) ### Supported Operating Systems diff --git a/cmake/libraries/winfsp.cmake b/cmake/libraries/winfsp.cmake index 5b7b4586..9fd0900a 100644 --- a/cmake/libraries/winfsp.cmake +++ b/cmake/libraries/winfsp.cmake @@ -2,9 +2,9 @@ if(PROJECT_ENABLE_WINFSP AND PROJECT_IS_MINGW) if(PROJECT_BUILD) add_definitions(-DPROJECT_ENABLE_WINFSP) - include_directories(BEFORE SYSTEM ${PROJECT_3RD_PARTY_DIR}/winfsp-2.0/inc) + include_directories(BEFORE SYSTEM ${PROJECT_3RD_PARTY_DIR}/winfsp-2.1/inc) - link_directories(BEFORE ${PROJECT_3RD_PARTY_DIR}/winfsp-2.0/lib) + link_directories(BEFORE ${PROJECT_3RD_PARTY_DIR}/winfsp-2.1/lib) if(PROJECT_IS_ARM64) link_libraries(winfsp-a64) diff --git a/scripts/copy_mingw64_deps.sh b/scripts/copy_mingw64_deps.sh index 51cf3416..ab905e7e 100755 --- a/scripts/copy_mingw64_deps.sh +++ b/scripts/copy_mingw64_deps.sh @@ -194,7 +194,7 @@ if [ "${PROJECT_ENABLE_WINFSP}" == "ON" ]; then fi if [ "${WINFSP_DLL_PART}" != "" ]; then - PROJECT_MINGW64_COPY_DEPENDENCIES+=(${PROJECT_3RD_PARTY_DIR}/winfsp-2.0/bin/winfsp-${WINFSP_DLL_PART}.dll) + PROJECT_MINGW64_COPY_DEPENDENCIES+=(${PROJECT_3RD_PARTY_DIR}/winfsp-2.1/bin/winfsp-${WINFSP_DLL_PART}.dll) fi fi diff --git a/support/3rd_party/winfsp-2.0/bin/memfs-a64.exe b/support/3rd_party/winfsp-2.0/bin/memfs-a64.exe deleted file mode 100644 index bf44ad4bf4bdb906140e8d9785ad901fd66b9389..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 152352 zcmd?S3wV^}ng9R1GYQNj;SiEQ05ua(m<*l?ht#&2B(^4qwnAF9-CYvsVFJ~PU@LWP zf^N5iX?Go=rHlJp0``!ZtzEi=*0j4z&~7(CyDQkbZTI)90n|>2cBKerRLuYLeGkbb z1Z#i0d;PEf_0M%p-qUlqpZmE_&wbzT^WOB4hmGGDlf!Rl$e1TM>Mv^lfBSy{%b3Y! zKbUN~f&|mZg%Ph44bxYjEwI=)me^+k&_`Mr>R{Y0Q5&vrU+1`*W7c03GP=?!W*)BKK?s}_b7XAUe^Fz4uDr`BXpfPxn#q)ybzZsXm3MEr zdkv3loPZmnBH{7Mef(3Orl4>nT$upJ$a&>zx%>a?zp0klGu3AjQ+?4)nVC9JV@zX@ zf7P?+?)#_YIY0N^=Y<@vnd6kZhO)2RU?u-;w%KOPdw=$J2=p84aI5hRJe6k}pR!C> zxoOL+3Yk+U{3bQWXBt$N1G6 z->Er6LyfC_S1*R-i$gil$LAE(Jbr0$?c?(Z0+T*>>LzM z{hU7lPIrUT@~P&?8h)Wr6Sxgc+6`{Y1Ki^mGTbvE2gh%&TDtnpvZWWovG97r#jo&O z{>r0+!ml4(XXCdA{FWPw{-Vouyi~_mwhxxSvUP9`*G(a_T*r@b6ux$YuPNXf_>Tz3 z!Zo-&BD@R#UR~i>xE9Wvz`cj--QZgNs7>{$_IHEx@;1iEFVw-k4&4haE{}4LU+6CG z-KBe_i_1gYbQ5*s^+Q zAQ)^nR@t+W>C-NnSyDLZ((+4YmljVgsF*kAZw#SF*Y7NdmhYbwEjN=iN5j`vXw-F$ zKJvie(7y5NWe=%-QuKEn@MNII97+2FhigsXaCCiqdBdCU-&z*(|9tGv z?xWo8qd59V?HfZ~!ta7JLyhWN^m*XbAzNmtpP>iM5&zfQj;^`(vELzMlE?C`B=-`6 zOTW`Ae~>)$Q7ie{8ecNA&Yyf^Lr(JCeYweVbyi}-2cyY*ZmUUtwy8F`DOQ)f@2=~U z&EaS!YO0Zk@1yMX)TyIxEp5~!Pp|xO=l@ijLr+;p&fRCxhmXGe^qE87xxg?XS#F}4 zV}6r44eh<^w^C>PzSLR2KXsg6&(P5JK7Uc_n7^3olGF+R^wdhm^&!S}E91JIaeb6= z{W0S*j7x3&z^gMQitKDV`giX28yntFpYNmZ>w%#TSZcvlO%m8_dS4_}f*t z4!Je=&AP1}8=o64Q=4Nd*W{Q}&CpkQz-hM}o;~Kb4u2!ZqP>x_$9<-90`g>+FB(IAwU=sD3_0+5a;%G~*k{$m}}b0RD2z z{I&U7)6M3h@|#WPU3dBzLv6sUP`PMMTf5qxi1n9?v4k8pmT~@u>dX;accL>-t-0p# zsfi||vhHJ}XRl0*W^A3h=IX;`zQTdcz(YM7$Kr=R|J0Pvv7C%(;vCPWy*0F5bCKPa z+PozX-MrzdfmaqjyhCl((U!_g{nw3;Tr(khq#8J?eNzW^F;?AQ6=mF|rm^l4Gc^`l zy>v|=aJb2o4a4UTALtBUdZ4q+@()-SnZ{+4dVW>GFKPt``X=t2WiD;|h}!Z0S#&VW zPv!cA&w`#`1t`~qyckvP`sfp3e#7Mglnahit~k0h%ar_dqt<#u2ro1w- zeU{mF?!E)IE<1PM50LW~^4^Es_apyvl5Z?98Lb6=ip&|R^Bu`IZPPxqyu5wr!JOnk zwdu}pYg;jJo#}35Ecv016+=V06$495_iWR)q7-@^T41_oaz0dKGP87?YceyqKb_xx zU-3Y2rfJ-QTnby!O=bJc`kG?X7|xAu$}6;PS@q9meE|7%Fl?rVZ%;iD^m7abY+Gs@ z>k+&D4AZ!k`aaq|w#G_G|2?w6Y>WA#o9YWqW%{aU=5$ds6QKR{RI}&}zlnSSc{*Ib z#58`5`mNlXWja^fpY^N)Sk(4uV87RXzGuZf+0Tni<943km342+v@CcYbl|zug{QXw zcovSp6Du%_`WBk*=Ir`Yv+6(Q)c+H&ejfFgWYy23KDfUnyZ+>?`sixm<7TgZfcn>E z)elhrD$`w)UB4i!{t2i4d%gM-s9&8`e**QH-)pk#v(}4)lQi=j$+~|qnANV|XTueC z+YO-W({&^5cKT`8rlFB}Iyf<_{#>VisaGHUpS~fhzD0e}W_JIqU%m=l-@``eg*Gan zmom$&uPXejS)vb*9y$kx8gY3Pi?+h>y`J4}%%Xqyo37g?n69+VH&)`9zckhKKC`Wd zXPw489e7_f(`2es&ao@izQbe=o4ZN;C_pP%#995?gpqrS?P<(ThEuBctB z#!4h%Q+;PQq@F`$24m^3C%T-t)eE-?i{%;^lKg+uv9a&1BYH5AW8& z!?o~o4K~}4ZQi!)Cu%ZkGwPoi$*j4d;w*OL^XuMUk)CTM&diNwegmzXdCVkVobkSj z#yueTg#083U)YEr0i|K5zqG1I$HP(yW&q zlb!$%f*R0OC zq~@H&OW4kNjPE6XehP!grkQxwb3e~s=9!*XTjtcu3r$jW1LZl1NMZX9-3xN;UtlHo z`^+i(*{+<#x2Co4(DekK>7F~cdjiaDKiB0oxrrCR`|~#bOCxO_9Wb}WoEPPqjK=XG z<9K6eXy_Zrcni}pSkaey$z@dRohM#-w zeu#S?=Z8Esr&pq%Tpd-E6U}srR;otkF*YyS4X!G?xF5eHI?NloA0HYL|LqBknfHA@ zXWqYpj4wC|3`s~h+;Gia5WV!N*c z6B2>;8jej(1kK3W;}03nzqqzSfHpMNv14QU%pcO;Ua!5H3%4iuP5H#cyDqXl z#wHMmcGn|EgtKo%OmTL9;3#E}e^NBl{7^L6aVKt%)n{y-$anl3(0nQfF&nvG$E}BEHCcfh4R(rjgZiq-f~CiWr7a7VFmTBKpgvXB zgDJbL2b0Rid=n4PI#;tb?z0Zh=D5l~d)@7OAD#6zY>lgaRMkG{pNN0MN)1`ofcW?z zI(hQ^=)FIk7rnRBnj9%>o_Y5H?C;JmShpl!wr;7g0?Q)z`&Zs*&7PL_FNhrC-a(!f zSd;SVt>Cge_gO#B!q((GV-?&O@|i`G&|5>+^nviXp~k_wXw?jGW6xz_H1jAvg<-S4CBe{!$hKl?^x z;(9YRJ}ZQ+BD`wu!>qFb+ zL$achJ4LB)RXA&gz@jKJz$8S&d6s#&q5t|!+8@nqr4P+d%O$={Y!<)i{HF1n?8}66 zO`^U(C-b9m`Ygl8v4a?p#&LS(KiPce$y#_M_49YtW=hcQUFdAt;;qnC5B5^i^l0W1 z#?*q(BmD86s!n`9E$Dll!}p8AL6r>*h)+)YgQ<#K=UM&GP^GSshs8R!(577<`C^x| z+-u6IuLExmH3|mwNmmDDrJrJ-=&6d+$7=dM29EmpO)7Te{szie6WWgcZ3$}-%B9~L zs#HDQ`zH4+pYU0ddW`eu-sQ_Y_x_x2$sfn3_@q4#qvf09qib4Rn>o%LtiF;X_6TEq z+B|-JCW(9xmyFm+O_AEnFDR!udzNFiYzstdGvH}ofti|!UlvVfr#7BQwfkW-t%hRy^7wV8@Qmj2N^=S!yk zqrEP@+O$2gXNt)PKKV4ecvgmdE-7r=kp%Z!psj<9+0o-qb)Lx=-8#53;PbuUQnbAn z`ZwUY_46iK#XZR~$SN6VGF5?(nJV}c`_rM*z2IInE8kj=F{S738{IB4@@FG-`41!d zV7AG;Q6|{`!G=8py!+`_W9akGOzoLrGP~+b;#K^zvU{}-X05y8Dg3I@g25$QCPy~~ zku~w@(W-@3puK6HNxaECy$1Z>r=45#OxJ4eNrqmXVa@F`-KwMVVJnb7yTlYe!T3wy zxxLW4Xsn*~(i70ZXQo9nxvb9vbwv2#O}>Q7_nRA0!-z4T+t#u}$T_45F2Jx{%C*_hqeF`mh;c_VDL zMd?fM2l(xWN72oVTNq!QadyDh8s~JzIS;rT{whuVun^v1ZhsD+sa!q$o~FIdRaSC0 z_}=xD#!{N9W38ew^jW4R7VX(Im}fHg_)JwR$FK5yTw0vq(Bf!1 zd~y_hkEX+a9Hzr;8Tm8lz>|$ltaE1|8$=KHfJ@1m6uz4dqDRS7)e|kO;GSa_ zPfvY-bIH1q`E+y|{C}Qak#6jw4cQf2IjY@Wt)B=2d+9F6;)sWqRJuZ@E)A^IJz=2M6NcL2&m$__WM#s$^e?pMMFx zHLmn07cur#`KJ5(z@BDaW6bMmd==LrKRnv_kxd)LHf_8HEu49CXnUJ0J5^V5Rr2$r zoO?1f44rh+9x`juZkJBfjzcHKspn|}8e1ZmoQW0d#oLa+54V*OgsuHc2OKgqP+shKaQQ#p8vE{x?^} ziLDm)zZr;kvVPuwo&V>yosP|qylIT%w@D*kYiVD4NVNRN=r75*h2(MA^NJl9<+*68 z9yywA^D%ELY`w}ng8Rh#nS;0UP5l|;*LXhU{N;LjS8Fc$qec5y(1zA}qGjNaFDiBK z6!ccE>56IH z=jlQ5xH%%;mVOt1i?=1KuqRe*2lekUMKNrs@D)AxrlE}m*7U>ovTiM#XiiC{Y27Tl zFUt86j-9?9>XoFj>#WYSK5~qh*YfP|gJxR*+c5wxB`cw2hZn}w{lDeKZ{QowUfYIW z9XfAq``45S(f3eYY2w$f4Q)R^Zs7PA{sX)F^vbOD4|y}5?Kuda6oD7Xri{%i{?vu! zQ;tV>%vbpL&`OXtC7+_qv1mng|0}eTA2^>@CIUlr;vYsU2e7S0my!dbOHT%9j>FJq z5ZcVUx8>ed@}=RYI_9613i+#_)m#(Ps`Ta)x&4lP6#;OexfJjG!l~>vC zQr6SMnrGRUqy0yYOf>wBnqTQ5*B9^2?`!t_ok$v@> z%2qZZ|5p*?Eb+Ci*yoGS+V%PSpV@mUF-v?|Ez_gjO{_ofnP$3Ulq*D=-mjm z;o9lOj=4O9J=B0bBzv*p+=#vC(NwlCrWgHXHcwO><>B!CPOK3*x-B1{*{5bkyFW$V z*CgVXsRNg(&0gB%80htE(9Z7bGoQ>cxBWT4;HLURk^3h;T7So~Ln=S{{t1u9%A?&= zY&gcRd-(pF4`tVzM4dS0>kU3na+OPgE`;*o8=kUu-R$pWA^9n{gxdNv6NmS0Q~P{?AJYulAhX zl09d@nOFn7qvOLPa$vmieZU=`{8NLB?=<66zTp|h_bTJt!uSGL;ZyKUKP-FOSkv1d zaL1QdSDWd7&^m972N{Q8Px_|cD7aq+4;t62i~}LEufXs48|9nqyv*3X$iC^-rp->Zq*znJO!Prpn5nsq+1^qupWrlfj9#ne=RYl=;9o z*O&BgD*R(d+A*3meDQX;oO%IVj`hdCb;h9)*C!tl4zB}mzn=z5&ZB{Y*7-DW8oa&g z&VT3cf%ycmjP?6_@_rJ0`dj9>rvbm(WwjN%k|t4cf9InIE#?LP`QLJ{J_s*cfy43p zgOB#+LX)>dHytcDn|5=|Vcw;4q-(~;H|6IMZ-kBXCvnp({Ta3_TX)W>DqFdFh1s;q zSnIc7p9KPKD`H&xI5ws5f1DoL-ZH1QqM7ryWr8g*TfSk*ua;@i?f|ewfK76&9{A$O zx0V&rO#Kj`0wo#ThUb5bAX-p}ZFJYS0A zBOrEyK75(Ah4i84TOH4Tl+LoxNBjaMsb5pq$?Y$KZ6gF zC(Ycv{>kgHLvtcCptG~cmN$sC32v>G(`$%P;Wvq4ON^$wqQiO7wxg?Z;{y$4rm+t^ zuQKLt$+2IWojZPq9nlAGu~z8nC^MzMV@xW8@6GltlrkpUuW+&HI?4ThXi)r7R#P#s z2K{&RLh@@0n{Q3Za31j=h?9drex>?t7#4nSAaC{Uz-u^=yJkM011fKGvYZSq{(6 zPK~_K-E0fxm@d{ro4P17 z9$(2PaGbK@s~PWruR62Vs;aAc>MKCq9{g>c^dr7ver>*zpCkZ1pN4Lq^Iddztk#$5 z_07Ka;I#Ox7GF;HQtT#sE-cN1lfPyDH2O@_JYS|AJEtk)%XDB@Xv|aa^+YF|QgU31 zSI?`(t}IRc!|#T+f0Qw%Ppr0m#`q7Owsu{fcpkp6`RXe*8F&O5n2mqenS1Cf(na2r z+I$_ju^}QKq)lXax7NJ(T7N&|LKCB#xHhhTSXGPc_Y|qa%N9=K45zSzu9XaW*NUgT=9-E0 zw0p!SS)M3ISG}E2vMl8PIg9h2lRncUf8;`br&ngjU!0hbWRGNy2O~bC$RPUREV3y! zO2>`Jnl$u=AB33Wljp@NgjeD88R$o{r3-sV_X7E*RI*euP0uqt_vGo=n8&`H`o;0u z+Dt6R?28jW4MTH5Xg18R%nI6iB(Efzxv{XPYTd-aCHcs#wIA=PLSa?rqvv&=2k)$v zEVJ_L7_%-y3>K5I;aqvRE?KE>OzUjaZB>B(_p5@!#tvDezgXDr2 zCsckx56@NppE#z0V;gXkS;gymndd>|S0DX--!4;5(t$Q?oqBK^EQxlP)m04Z&PHfXG0ZvS;(D;%OZ)xcCX7FHSawy6$gVZ6 z>>~fM*p_S1zGRs})^{M!omBu@^^W?{dPn_ey`z5Oao*h}A{nbz8hfqJe*D^KQ=JK}ff zcmuQ&6wg{kZ%ZqGG!Ct(PtnU>=tccCz?XZW2iC2N`{-A8ZaZ>Wc5pquMf6}o_sft6 z$cjW+&}2NBVEggK$1@z>uMqD8m&%LBYiLK$JRT2|D<>M2ZWV7QIet~VO`Uhb+ey}{ z;_V}$5#IK2(#x8{*6r~2L7t1Z|AiyEdK7Q>(boYzcgI=^jG~{Lp@H#y3LDN2b(#4d zeP`i&9Qy7%Gt|{-`@cr#liI$m-xHI&+a22ucWlRzTcQ=k=P zt$Nzc(>*UfG}npAO%{#USx0ba+A(DLL$Ah9+7CUPW<9usc(Qc$!ubX{?@Lvl@F%7J zTYbTS#mIZD1^UqUE1;=Z?WOHs5>22NOA=dlkQ|?h;~NX}Zbm*Zuf^9jo^LFMZ){nf zxvjmR?Wp79%6l}(wftj2*1D1V8xGY65AO&j^B;ZaV%8g0-a6j1R4g|W&Ntb9jKXZ6 z5d8Oa;6skDZn}XECbk_tnQyj zr!Jdo668#;uyKq`C7`h_gkFzgcZ7*~#G%!4Xs3->LKC@4O`*0GQ@};#iMr&H|ENhW zoFC0B!Y-5za0Z@8OZWJS@Ryb1FDq*Q?SBq!Px^{(baMiTSy+kho+4&3SNS{H?>aa! zix98?OEwR}+t)=3bBW>lF^`{qf_2e?ebE4>~ynx2=iVxn7cUx7GQR${+YJ zbfWl2qpjQhsoVcOC;6ImJ96Mw=C_w)82;V@z3hi3R`ZTdCv+ehU`4%SCAhi-d?c|K zze1T0f%i1BMD}W&>%Ej!nO4>+_&bByo1AM!Ky*2IJl`8Ss_da?SG20Wun)gSi3 zz?0Bl9GtH91rIxX5NyBYm7(ohkzGGwo<)E4(BA;^`+IWCiS1;1puc+7 zNdfGk8f=n2=D*LSKgBjzq7y#+$?KDit7?-US`f|LX0NZOry8L_2VW)lG-qO)l(gRj z4Yv47Zqzys9|~));?%eCMHui7Z6qd%9?yICW`rI$kgM=9ejYup!j8Ywy&g-CHR78n zx*FU6ayM5~{nWepn#T$FCRq zGVkN~jS^qx{T#nJ6FUvRneh5;*M<^YX&0|2UA(4UyqUv*6Y7VD;?S?DuZgfNux) zIVob|+dJ@KXzh&eVBeQm55)0{Xv{I!)?Vw{+A-JGUhCT0F>Lzm@pw7Y@3d}<&*8(h zKGqw|eGEHYV{E}r&u&-r@A>OR7lt+YZ?S*+$zhh=2~VsK74Dp+I-)Vj8;cw{r{0C% z@BKMA8}b((nN6Ev#+$vCReb+-?3{bh;oIrsZT)ks<)DFSSFuk1eSYsj=oK4%oE)ZE zsWR2~jri!uuV~zgo!ZK~b3dB4^7RgM-}hOoy~O(SDad}Gbh_E!9?$KmJ4iAnCXCatSy-M#@?e<5F);FYiE zz0B{0*6v|9FYUX+7xw)xFCNKDlROY_+cw@98~EQSCp-VAIx-fGOZjEro?OY6QuK42_4VIicXzn46Ji6!Unw-DALf{ypAHV~+{yqx zjPr6UY2(YZ5v2|FXTu{ux@~JZaP)G2KX#SqX|G}{&`-S;TD%Y$YL{Px-EhKPo02o0 zo#!Z@)`fEgi&M*)lQ!mLBe;-^*19BpfjMc5)MnP&bAnG_xVwO#YxDc7+U4tNd;ik* zi0FzKI)3|SE_-=syRTJ#c==X~Q{`NXew;kW;?xpsm8J=UOEk}~;jhu0@3dyD>*SrI z66RgJDBqE{zWg>ed(mwd_8B1`ZJ$w*OLx}+^J?iK#%SYBy5#Si9CL5ob*(+VqSVzK zJ-?CQkngAy-%-SVUJ^kLCAxq6_CAST^4rbkfZ|b4d$|TbCWle-PJY`t{N&ejT^hgn(!IXbwQxPs>K9&n<#@jh%8 zm9eO+GIseEXWiC@F1>?3NAew=9O=`P6JIJ$AUX2ajKOQe#vAn|18f+8=g>uF+t21X zI{xPoU*@)P+AIUVo*o^QFW}~{)=_83KW#XdQtM)^;gz#~2A_~(r+eM8*zvA9WP=~s zFxTNR!EBEWKGpaIx8O@ZMjiov6veXSM~T57u`&L2@r87D`;ePg09_<{-Q0phf&3w?sSD;35xf#S{N+Mp~reHGY zLdKey%$Uc|H@&dF&A^{S4^A7-OBbF#$eQIV$Rp|7#u-{u=A@8Mn}~BpZf6buntwv- zHgXm|#9B~(hg(^1#@SP%gF4F9eidGPgLdvSW?yt+v>U&1@zz|kuNPjiZV4vp=lT*` zh&Kw44ajQ6;f2dEG5OKBbmH+pxd1M2Muy+CVKgqI5Bd@wF2~~WtpS_v_Ke`M6gu+{vB!~ZGrNXDauKNS9deFyLd*qcK( zhUVh>I?=TD;hLU0L7YkBLqAozYa2M{hKR+Ez%PH@ZHbd$Di8 z1MBE%iR<8txAR4ZDA$31fXyOC*3$6Aqg;<&M~{+EZobxR@g48bDDGa0t*dyN)?MNO z!gKPOh^H6Z@$@IjD^@&Re(m={Kg#v8>DZ2? z7q>r2e)m%DAM_QspX6ERm{|HXJTtPxc=j|ljO0Tl?>g8tB%7*kT)D{{jh35&eLQ&W zco}lilaZ2}FZ;|U$xTl-_U*P3>2EqQhLhiMVhrhTIx&Wm-*I9L>3JqIL9j9}KISx} zcRuQ-CJrJyNBibR-mj}1qnGu*!*B4HzKC4=IJ`m*1m`)a=h2_aFM-zBZ^X_$*%Q9q z(Rs@A_trS087&{-bU1TE#u~!6lTyPUh_wX$^&Y*9b0x=P7a0a zkCNdWiWG8iBl#A}wNNfaeb(5r>uS9%8!7ueZjDX0pvI)}2o7-S@bfUNIgTxce?!kd zfgBYat@PDOzv8i0`VMX?nWmf$&4(Ae=&;{m9=Z1B7xNTY+O`1tun!p_x#rtdCLL<$(R|aT?_pcP#??q0%)f0bhz=Ng;x2G7p4}O! zXj{=4+;evse$idXpyy1^I_A{Q_Y)7Ui(cB^YVrqG6CeGy@gH7mqE+?he1*Y_%}Vl& z*Y~p)uD^fex<%IqN3N5!Ro^gj-Kp!J`U@rh>lc~AJlc7vW$w~7IqZo;KYsSqc;1+9 z!L9y*rBp|@H1C-zJ{gr)GqP68UNdMO1Mp3-iggt}lS(V=ooB{Kp2HsH@5@dPe6|K& zb8K}F=V4+1ExeNu{`mjgUJ({+*tl%Gdq%Gpvgd6)S)A>UlrIun>tW@EAzSx^$q74c z>q39z1o}+tIgRQ63w}x)7n^G`<;ZMfm9dZRh1Wy-kflR)!6SWBOn3UTO_7u9YBH~W z5?{?@rXo;arj_NI^=H@AWL{igx(~xQEt`Xhq3aC3KJxaD1rx+9^{xYP{rHZd)|@19 z*a-REnKZU^5jg`f_-zww>KT7pwi4a?bZ8g3G7Ic@{KM9Pt z$k9QjOtkSG^N~+c!aiW?uO=@+e%YzEX>qOR_XN;UCmzHegU8FEam^2UXp#NwGG{$+ zpRadpm;VKyn8|HNKaUQQ{M|aubZOs!ilK>#*3VnX$hn4RT0ieg*55v3W$Wkt$!6Y9 zZvA{tvhNbZb#Ait^AnQy&hb^G7eu>1cc;Gs-*dP8x7di0uE5}uzBN|DSMBWOax3yE zP|f}aQQ{nX&89H$^?%=NO8?Movgu3yt;ZbMq})86D< zU(Q=;e93|d+urei7N`D$eY))agx{we{1OLp_RCS6aV~jK?3I)K?s0swZ+NeqJl@%P z2pxY0xZCi>U<;C0TAbR1ufcA2%zkH^+;QGM&N$n0Ws?UJ&qE7ux3)SCOvk{@1NeXn z8I$nm`48t~7o%Szi|ky~;?%7U91oA(ckNaejwKEp4+lo!yCm{!ay)>4)P3crNjDV1 zzt8gg?fgrB%NX=7%2{Aj&e1a*UuB(b`;mzy>}D?g_>bjJmLK_fU$m+~zEIbXjLs>J ze}Z>nS&y%F-(TyXj#t*AEIG*QH~#&$9cQ7N4LnoZ_3VS9dca@@Jpcfk8<15N1UykIm#-cO*`e`{$^>w{Nliz}h|+24_JfhTgPTob&}sIY@8bQ0SwTl_Ui~z zZa+CfZR`iwNx9!LPT4^g*PCg3KYQXG`UNx|-`A;LE<&^BaJz8aV$9eo$L+%7(fABKIq(JD;P*@CU(tV`lo7xG!8oDLFiyaQXj`~h&bj8p!%0276k!}5PAt|ZVQ}Q(WHa(nAARhNE;0(ay@JCmG_b&oD24Bwg!Ij#z@eeN4@4wNn4X2AU8&1)W`}|)7r;9t4XMeOA zHXUhR%;@iPt{5*ln4@^* z_x4L$qxz+d;eORm)^p8C_O<#Q>;JOze?HMuCHqpgP0ZDqw*LS<@hbT#vSmG;`3O4H z)0wso$wv=)`{LQ{XYJd-TFBYA?uYh!%i0TR|3bYdXHt9Sn#^bXB|j7bTya_qf;-^LgOZyGMh-DI2>9 z`K8THs{H<^Ym$Pa7o7B>>z<*%xNOIo zXvTvpK65v)-u3o7 zGVmPmc3H$;F1FZ@5ISc1_;c@*lgplN!}sMcpB#!Nk54qn4eSDFzuHV5Xy$04x3tE4 zYLZDl1D#jdq)Ru` z?@iqMHvN2nwzK7+o?XFxJ*(&06||{y@)V21(t|GEt{Mjx;qBd&TW*i9V4zucHt^VZ zqn#~Tuw4jm%`V;ov}5CnI>MFi3opXO<+Rn#xo{-B%0~OZIPloGp}yu8I#sw(|2BR&|1#xbj9E0d<)xv@Ud~0&Q-H;zXPZr+&nEE?JbM%MJ^pe0 z?<0FR%GaX38$UiRnp~4tlWg|YCS$W4UqF)lCJR23dw&FVxE6p{amQM)vRHf z^Vm;gPEArW@2hGHURGNbhv-=Ic2z>AMy9pYLTfV!GcQ~`l zXU7*bHpx--`CIlv>_hJA`~}XNhK9PbV+E}f%y*;A!;k3WFu$YJ8yTPDe~pn36xikL za~?yUF>i~t*Wwvh2W7XH4M&JEJ%F4&h}`@YJ^ri(Tfx#fc5Ht@|qXZGLlUS4a8P>nZn_ z_+7rq^)LB#Am^NU9Epqc(f`vt(|A36@3F5(_AT)4pXB~le%I26#yd<`!~54dw52ia zbjK9VH(1h9y{4d8BsrYIQZGfkvO}^@9zmQeG7oJMG^{G?YME#Y_=_SA*8|6!! zD`()(Iijn&9e+YmDva+)bN)Hnvf~}h^M{y=cT>)yFX8Lwv@4i{j6r2T?UqdgXJ=j1 zS*uW9WyFWs@iomMzTRy*@~Kk0%yn+r`5e9ZOVh_!pjU71>~U|NYVV7`792FxjNTXD z+mE;pT`4+e{KUSdCUpIO0&3UUuUOafU7w$2&9a~Woadh_a`?#W|9imJgbyU`pO*Rw z{XNuNmdHnjku%sEBM0inbHQHiFBkv^lEF>rVU@9;6Pxs&>pjrG(9k~SXn1c8;qV+b zb2c3xqL2DpR#nM=Rl)NL_JL@)rL5{WcsK!knhS7X^Mv}$BfhA6arfRy%4BHMZhI8H zBNN;`p=?^NZK~3o#aM45OV-23jlAQztxYtB{^|t|v$-sBH+<7U+xGRbvc#QStBl4W zKb-CdD0h%!1<&)aN%Ja9GQuwpeIlFL=9Ah`l?RizZ$}4h{F-q&<9GNl)zH2IUkiR) zBfsq?-d$d2kwj$}Bw#%lS z8I0v9G-l6P9%HS)j64`@UX5LLmc}D_t!wE#9YyDoG1>A|^5ar)+XMgYb#WPJE=!c1 z+u19+xR4ySaSJV|eg(gJ>ch*6#7|#k9(25u`4$}6Z3v&){cCQ*r|R%;8TlT*EB*Z< zJSN!XdkZmt6KGE~*W}x|BfBk+W?q7qcz&v{Xy->fUbOqMzx(0v)X#{?#E~!fJ#W){ z05!`05`FBl5<}SI!E?{`Dux;)7ST+3ZX(URgn1^ti*1_;660atlS6i0D>u>4 zbJex$xzGC^WNy7OeD@=}Og}#G0r*?*_vUR59wMfJA0l`tVC5eQ{$unJy-yXl%xwX_ z9T7(__WQ%BUSO9mM|+5S^jXH5;o9BLUGY~7j9KU&HOHD?;oQ+Bar;Pp_$6e^_%Ppp zao~0Kpc0iBw_tY!kjc<+DqwimoO`+sTCHq5=)6nd=`q@Q zI-vKfd1s)HJv6=hY3bwgdBgqL*Vf3jY!H>@+n=N4Pt2Y#2Y$wSR5c0S7Rc3usJeCpfm`dSogjYuNaX|2H zp6lSRc?5r>)^z}f=Fg^Y_r05r3ARmR?^W`cdwxIfIIh`nM_(v+>r4~b{?P^Q@WVcZk9^Q)wSSc{1*b&+p7(Fi_z{0|-d)rAG4OJF z$Vy7a4z==rEb{lqvOlqr7&-3wAygb(?831pn*%QR}>R8C#5J9<7dAhh}{*%WLmKaNg>*2QEA~?K-=auCXu=&$pW|cC+UDDZ{?=*fzi|-{H@J?P+oqz)eKwivOi8Vwk&q$>&y^D$zmD zYLl1={YV!+<1^h)aeV;Vwf%I=$6DD1JnLl*E;`U0_P{^bY>AJ0a|oQBHXce+z>rv| zc^m$=o%^0c7Jh}-7;Sj%iTBms4YbF*W9*sD_d({kbL77FpKb4`zP;8Z=ipt``9tvE z#ykqg!U^B?bH3Y!{U|)ox7%{~%%hF5@l^SIyYL|h29GcH0sl^9z;1BU$zCC6fnV<; zPKK}J$j~72Me=d+HGESH-fu!azRsR9uAV&lfbId4e8?B|4Q=1}5ohe#x?{Zjx+BO3 z%{j4ld(O$PWA85KJ14KKFv&AV4SO8;QpYBnOdOfmNx#t5(^j)XR~z8(USKZ@+PwO- z)|*;;%1%3u&OHV#=-o1{IYk4`b#bbidb&<$(L|q16VEa(@M zoy>mlvU8r5Brm5*ysmT6%eNTEh2q(P9CM4-N^R?a{nf@n@+MN&FE>7+wc_Q_Irw?S+FWR_ z6_?>3GW@BoX`VsOinDGUp$BI@QyCgf3+0Br-R9LKwMX_&^kXM*$I%V3JVUN?QA%=9 zvh*`9kM;0u=X2zXke6Q8vS?`l*pIWeR(`eo^o~EiD0MyG2NBIVw9Z=F{=T{UeI4K& ziBmXmg^d%V7|sX1xMyjab*$!Mk@DrOyugN_<+P}7Psr#muw@&u9VZ9$J$?Z!7k<~ zjK3rVJt;>s%C%^0#E$apMF-!Kxt+i#xgwq`o|Mf~j%|o;jU0p4MEkN6dx_n6eO9>r z9-yCq+wVcw2KM^4eJo?V3H0XS1Tfas`TSuLHo$pj3-|uYgt#@ zH1##;-=nQ;J!aGYfth34AND^!En8rC9%(yUPwv8RsQQ8CSr^umwq9`Hwae1pF&kds z0#`BGl#QWwrF+wBOjY~1?T+UMerIrg)@u(xk@_1?pLl*H8(+Y66nu5s@}k(57w<)v zICP%9|D4l*ujEfnd14XxM?Xi1(QPY5=O|9sGN-P)m?LYR%AG6B`jf1^;-8OhExD=m zQF2%!9mwrIe1x6&uFI_H_Ijw37#q0iBHq-k=hx6)2Yf?(V%vUrBSxEfd>do!9KXFc z5V;kR$ho0K8@^hT+4|&H9!gI5YV4r29gfR}GHv(}@2{awL8;J{!ic z^ zL9ei0-Mk`3dx7!`m$RQA^XTFHcI@ZY`SqRg|Goxox}1ZrL^0O0*$2MGN1BPpjYBi7Utycd*BdzO#H`yN++U zOpbQ5PKuny|M^vHOZ;57;5Xft)V{@6vwz~8>5oPaRI~?jqTT5BbzhdO=DiG^-@*CT zw}xQx@xK!_+J3dakz>o6`*{2x1c+L;(BWt{p)RXuZ$NKJ_{>HAa9U1)^x=nm^23#qAuKmVk zcjnP&4BnD_iz7on#6I$x>zU0H5<9@KdYlK={RA0k{88eJZAZgH&-F@YYHmOE&6*1KPF^7&B5~&K$+U4fa}~Qk`b@BD z)}xV0ZQZMCt{5=b4eQvyfw=WL`C)Wi!~E>SKV|2(0%y>Q+TSen?3MA>)eauA<+S;dN-{PonV&fpI zP2#j&N!pFuzVzU_pMsMlZQFg}S6eQ-lxM>C0DbAc&cDR@bGhc4e=TgE^&)*ccr00` z_d|4l5Z&C%-X+>2Q`hA0cc&-*`7EvB(+k+2i1qu)2W8{TNTsp;>$y&2=gaRpR^L3u z`=FkD`I}$s-2&ecXy%o?&BckAS4A_+YkY|TKXUN01D&zUHh0Rmzl-@ahWUfGDw-pS zdgc*3G1L2}(XG$V^(Vhx!uz8Bx~l#uz9ck%w83X?d*O>Y$#0ZLGrK5ze6F$crPJTa zO`=mCNneM)luX+^B9rv3_6LB+lYwQdb!=au_;AcRwi#MyJ+m!vIWc-{)(61fqwcll zhdz$RSd)E~dwk#gJli5$?n~}{$*sGSwvK6z+-rnbR}nU%?zhoL8eUIh1Mq$E8Q5`l z+u3seQ{Yzg>*4n^lrhLKZ%p3(yL7*D`q`BEQn`*?=$hA(&9S;lc9bPeAejdPz|rWHZp_udthOvr-YdRm)1E4@qdS{o+{-GLkpGl?po=?R`9Ua>*orb zcZ51ODf(QxH(X8@ygE2__l@>IN1dKG!*vyO6%nq$Dm~u_WPDDemM8Qy9=p% z^}F`m8K6#_oP=v=C#-YE9;ECf>eQE;TY~E^UYWe?;Eu4Be=^D*IRT#K(ax4h%i0w? z3)8pCS8y+keBLstzCBc9jx?xGCzg5i{haTeuRJ!fxp`bM_*LtBB1@Ux*a+4Vm&9h(8W zu~#+Ph@2CfxT>Y(4Cd)~wSAUL=Z_^|OPYt~Em zM%-(yL4sF1??u}1xpAdAJl7tF8<1nv*;Z6+GQY_)+g8-o_1*M=x<26pGz`n%>69^T zBk#j|@^`B4cZ}SBHqY}jjrY9^haR*CLi!WYDJ z<9%yPqTqjHf9CStOxBKfh-S%;s$kE3&BFo8$9`R_oV~85a^hHQUi zIrPy->`1hye&=v~8aps#_f?cS`5)whaQ`@E{PZC?{K6c*3(xze<&=qGN6Lo$4dpbh z0qSbZ+80~negHiDvmGmSa(dFNvA@mpB5=CXSFr8@a@WbRi+l%sXg%EvPYDlmg$L{^ zoj*xDT)3TJ&Az+I&R1w#K>)1s@2K-FevhwM(B4VC)>?4M*gL7Gb7-ltzcAX}$xnEZ z@2S6lYjPNL-NvIh+_AYIOMVsSAG7-lOl~c%tG??)SE36HC7? z&Na8OCsLR297Ddm3Qxw|dEN5Bs=FFWtZP1ueRl#nJM*9~`2b@(`<#^&t-#l%b~^_~>^gl@`ZaO}96jvBB|N*% zivxS(^7xau->94%`5M42#GD^>0VqItW8*Bd{oFDGJ z(&pD|+`^m=?Rz$;TY6 z8;v=M-Ha`eX<#2|bFk%!vVgf}Gi}V_ULSeVVfwfAVwQhZJ_EhK5G2kOyM#HVtnz9q z(5>v@(JlMgv+*k~!so$r-@%F}>~`#U=CBPP@!C2|yvJ)RLOW`&fwm+|ZUUahT;sIs z=}p?SfGvD=O;y8Gb42>~2D4>HhYO|4a5hjg!~;Sr`6&i_&zCZ1$<`lF`jMad$=3_$B`8>Cjp^-@QanwE;tjy^40>H~ki|618!e+92-N$+%84?$0u|V9!E(+!`0W zxPtE_k^676h0T}_+nBO6~W z%(Y-Ivo5)N8GTgnyRC4`tS9jIq4OictHVd(ELa$8V}{q3Qd`T5BI?-%0K1COhiH3B` z2f?6km1}+dIQZDeJ1HBmt6rkqZ;-9WdB^5O;#p@tX_7C{ZW0?%`+B4wt0ks1J(bf_ zLF}+Jm1gboMd|<(dqG|JyJBy*@5GE>$v5OD&TXZBvw(a##`GF~9QomBw@UFgt?SR? zBYuKB%Gdo9B7kcz=9+=I$Xocf+8>6)lMSi9B3uQ{Ag=iJ9pcrLq0 zKBeN+?--kGjR5a~_0k7=5&Pb(|LH}h@fYZs?f4z{5?A_DVCZ$_)!KP89_4+N?giM~ zpBZz1CHL2JF983G{{qmp^;9rn%1z=KXgD+ryPtmW>lW_Eetu{sJ}G4ES@xmmWKDGX zvAkq@mMPsr8P?J3noCB;YUzB=2tMP*%mwrlz@GsvMf9GSzFSA$ROHxWz65(|C;mp? z9N_rUW0aGR@q~q6ka*x$$&G?_bNFWU%Qr+bf5|x0)vSpgjCQ|Ftbny`CfFK%=C|Y% z@1OE$KC(B(x^o@z?HFyX<$f=19V*0^xkl~HTvxyxr$6b?$G2G=xuqT036Te9(%54^xdKdsMAM#v)>neqUNdV+SAmzn6+XP@g??#y=91RXMG93 zi{N;cIncPDV;=gDS<1a4mM|mz#c0+0srwto{u+5#FVNm`=EuWtdJVZY4@Rp*KjL-q zYI*@QJJDp)3t8LwP4|n?nc5Z&sEwEBvkx(IP&&~R3eRQ!f_3bl*f>aEG3NRqzJV27 zZ>ACNTUW=LDaJf^BKLpI{OMeBzXJUco5y+3x3Xe_sgw;Rx%++hyDaGNMc(sZfOEHv zpSo>i%UZ#{(53xea@|j?;oE$)=kff%(x%3YFLBxl@H)sC<%=J>RdNfv5xRDK_cKy| zO#AY0i56q<#4mUU8{7u2_E_c96S_{K8v?W~Kf?r$+T$fqY%)KkuIFzl zR}Sk1^+C5CPjmEv!QUC}ejOS52J-UtPy3Vo`PQ}aB}m@sTd^5`Zsb*Dr@ndB$M-M# z)ju(|IJ!HA3<+#@Y*TcxZF|dx?{mw@pA&`l)Q7jem(AQi$&q!?ZR2mi;fu(u7tkNi zGvCgBt+Sac?T1{N8e+fiP(FJ-z-wn7%SlS7Bzae7ba`aLTr1J{l$H1^<~GgorFK^) zF!#1hxX+OZ#I_n=zb=~j3+VR^c;YO)9V4!E5Pp4`vW`5MY|DdX#H6z2K_@(%l05jR zBM)A}W=gMe z`NNBy{_@vZ^tT%yn3qqr4H&gfZO?b`uXtsIb7X2nww20B?#hpPqYX#iI>GlKwofbd zKGxCjxfD9J4I7&G9cE<9=mz-yz0|SgE@Kw#%Yq|%d#QS#7ILgKOD8DD+tCRj!`weAYq|6JHAJH8nD@oC$Qgd;e00c zG6C;Q7kn+4Kyf{!A-Vx9JHSo0|Gd*}?T%SUp%mk1B$&rs1W?J~} zKqr2I2tK^LgB64FtDU>A_k#N)h%P-lBs>0+$9h`66ylfN1?+2<&#w|Z)`Jh(>IdMz zdT?aNu7J6|{Qn{E-Q%OYs{Q|GX1L5G(3aeQ^pXi!I~iInC0yd=FbTCzN~;o5t(UI^ zuy%&@mI9Tuwh8oW9UAp?3R(q~07p*}Z&ZRddOQTGo=`kT2yKs-ucryLnvkkRdP!Po zzVFX|o+o)S1oZsA=f7WGugQL%z4x>C+H0@9_S$Q&y|&f@*=B9UTv=TLeZ=WY@wA=5 zzm9U;Z+n&B`Bv@qejBvY)YtodM4R&HD~&IGFW$(I8DkqZ7XI<*+4jSs{go%6QQ1)L zg=Y3bSK7DU2aO;jugM2@RuI+hSGVP4E0%(RgAo?ZX(f(2heN~A4q#cv2 zxnIcn(7iVzqv-kHIdj|sU1%?24bNYC;QlSsD6<6}l6YNd@}4K!q1`E-xTvq7N$ax6Um)U=F@%3%`*bD!& z4)|o{CbOOwIzeN|& zK-#+NVow;|7<${~e7lagKIm}g!BWmM<+h3TQpk-pR|L1;&wSO1K9jZIGVQ&otQXmj z5^a?MhhVa0&0y`f-jJQ+Omi;$Tyxu#$UgGx*2`G3eD=Pv`;H&xsN&pxlor{IZk(U4 zB#ac>I(|QO$|lk1`QdGCq{TPiXvVz8S>@)b9g;o0dU#tOEd80I2ZkQqI?(67bnM|9 zJB~4)R9_zT#R>DvC#9!juPb}N);FK)s;Qd3U3GSmmwJ{RdU$HbJZ$U5Ya}0L?lEb; zR5>AJh?AUsj&HmyE!%<^G}O(ZaCLTF{9+ z8npIQ;lrr5m2}mqHW8O2TOjc`?VF!o?%`)+&d2%Mw!!1kgF*NH=sn1wztKJ#HYd;G z&$7U>I$pqbNOCgg&PrRdIDfI3v+B@{=0fF(JZY7&9&TIkcKHQjO+h?;(e2|WUa*tz zH?uZMUTGOS0(klm>%Y8swv}EU;JyfS&AP{^WOuBrA9|8}{2S(V>0?vCmV0?@gYq!{ zM1A<#_&3Unf!{8F(KQV}u8cT_d7M{y9nQNyO0b*rZmw#~HjY?`_37VdEE(Q--d&i+wt2jU-n@We?{GF6Muyhf5o!pCcdO@H9WoHV2Kl7vW&eE z%9&HQ8=1J_;2bA@&a(HK_^ayh1wi~&PW)BN%1!*-y4favt`k3Z**i`Ayt>usS{e?{ zbK>VMn{VRh*X?G1y5Zn_Cw~62w=2G)tnLJ|a>JT3JHDc9S&4~%XWeWQ|4t|Voy#Nx zHEeoU-D>ztL)*LT_)YIxraS3E!A%B-4{AOS={Z;{90!SKvds(q)k%kT;%7YR#7o~5 zeDkYS34bspRhC2s+!Bv)SBVuei8V4s&hJ zP0)5D=dh=So+-?v!=yupYMbyj9vvpnL5InMEuVI5LI=k6-={0x4*NHo-_tVUGK|`mx#y;ft?0<_+?;#w-HX;T8 z-9|py%PFf=e7$ml&DTrd=^HF-A^bT<`&Q!Pzhcf| zoQ?2umV;H&lV-%_1c|$uysrhOFE#w%^9}14WPt-MW7oJ|zqRO09RDTKnWT2b%5=V8 z^1sG#ymd)OsQ$8?%GN+f>R_y_h4xE!+wwMaZ|Goi!&XP?xF>!=tOMS)HTNyre;z&S zYp+vmc?#Tc{@Av8P@S67Qx)jLk>|S@yTS`{=TNG`D%0Gieq`-7BzfKNj}diT!kE-`iWSX&-G0;xF0@!+)p#PyCJg_k#OI>M(oy4h*+~kN;^n zD*gr>oGEVKk`-&+xQeq}*J~Y{+m_-yYVtbvk#nq}4??e-!0ATT#!9(C-Dg zhrZ~VO8Owt7U1!dk=$yIiH>~kaZ*(1TP#5#tN>4uR}hG+ZAxQDuIc(t#L zwc-30*?IS7r9&my&YiH*NqpGMq5J{z^-T7)GRL+vMp*YFJJ82EAOBtH-Dj7}-(%FJ z$CIq5y!6<&q}--Q@}GWxtm8B6mx>q zD-ApwnCD{i$heX$SOaYTiGJ2@x2#@JF+a`Q! z?AUOOJ+CF)Xnp5Hey6S7KLw|(^V%$)|H$)NWM4gJF}6*a#liGCd|PWAuYzW^zH0+l$K!JP_2 zjo^tqkN8(!ZPp#Zop$?90PhRXdbId!4zX8oS4Ryw@-E;OFPqt%>$UUs~7n)5hy9>u@}o+z`3k+K`aW z4cg%x-9Df5{S|y4XZ{j?f57)Ko?kNcH&*@0fx~NeRR@pBrOl^-KaV+-*~>e4tD#cMROs%6a3Eafo8kGqf4_ZjVm8ZnUn}nvXS`;RSAaHXpFzyJ;O{vH zf2^Cw!Jk(zVdGKy8QnK&?9+g~)>HQD#vW)-&bz_o2f?Mo&#KCJH~fXRzn}UBz-!`b zMi0Kv-g_y4_vE+z3uzJZCZOTz2j-@m-x}LcWKF26Kt`Q%N$gl(7QSoiZ`-h0`(yM= zUh+0`-aZe#fo#!wS6k^na8HxU&wH1(yz_5-A9B7AdA|Qo=lc-fH~K?Mh39qP8GXyq zEpH6(J70fi>RQ~smF!wcKUK1SgFd=G3%(H{M6Y7(t1a%%D&|*$@9q%1Bt)9hMQ7^Q zm#5nF0-YVPe3OU9()Z}Ri=M>HC(EfPF8RXaLqj}M{G^7qgc-+@AK{Z@bkJVDq_lrw zZ=X8%gs@wglW*lPQ5}i<-aEv(ou`&xb$FZd{F*$OykI=NQkR9%U=jEY0-Z9Izr>Z<)rRQ+IPke;+)KCfgw5nU@ z`&id>Y-a!O9_;zG$I*p;A;vF6oZguys}BY3=T2bW>^xgMS31w!HxeyIml3%LU)cO) z+t@|;G{0FqCkWT^WB$pD6IS!nndlVZR(>;i4mo>=ratyCRJWm5ZuSl;t$$7Vujx4*u}c<7i7GT(mVP0 zWI>DBLDq=SW0Lbl!7C4K3;MF2`W9s+LUvx(O5HmwbSwPm`*v_VR2pL2VujDDJBh3rXP%bam9k<(=uy+~n4wL48|+!JA&y*7!T8iOvU}-C{1+5$wCX0z zth{$4I%nlu(Nna+&-Xo?YmlAr=eaL5sBuhw<*gB2UT)VJq%6rlS~JUkrtB8Ha3&lW zlE9!cv@Q_r>aXCHu?_fxnO0Qit80cn)sBty_4Ph$;V&55!3pS#h%+=#J+>E)y?rdjZSbY&UhEH$iHx70 ze)?=L{LPg;DtJDIJa`jj(SCf1*z16Ho;PkCZoi&og|VonYQ_b=H~(KfpZr>SxPaD}Yz~JU`-H@=G2v=05^MiZK~P zzEpdjqpe$bzZ#e}T~N@ZGF6^!N0#6AZoX~6=V~$dkvzjVd1+mx(ZO^Fp#gaMOYx0X z$7Ou4b>=X8FPbaf!`evrKrSuSo$EiN9>pvDAkQE(Pclyk7~+gc`4mslzQpHagUn;; zF6J@Sh0NEXZ(4ZHa_ap)-@EmEk7wC(Gl#GaeR7OU?_I}%+;F5Ne$3c`?sQ)40l&-@(67O^DX=+I|A<2>uI!KS3K)_@d#RI>p1e63A|Aj@tDKbUx~@sj*u;o9Sze zofUyoO=hrb$} zBlpxG4}lliE@^BD2i=kpis2iKol^P3u7TE+&&xYU;k5Oa^6w(gE z20A~|M%vDKK)d~(e)`p$E*-f3x9qw!rgf&n+&jjY{2=qgdi=A3T*p7FEni7yQXX(! zZRqT*{r7X1TjMGBnQ_W(WR5X+hEXkLOPGIH+QnJW$d)|y7&Sv&n{@p$C-x{b`+CXTfQ zduUrzZk^yHjtuGRy+C{Sd%`O(NHYOHX5xx3wBvjirawnq3VJti@(uE2Rm&zH=cur6 zIv?&^<5fgk`tPZp6!3e-!Wq@ zifpyDh53I!_PE%W4Ye+}(k;yEt@tB}1AC>~^3Q>i-D|D%uH9C8=Yv+d`Mp;9es_Fg z2a|&KWyj*`c2urUYfBIRP`mPo(>aegeATpVqb(1qUFQ9Ot0&EM&OhcxVVqlSJlJU} zTlqy#uKq&ufzCWxl3B1x2+pN1eu6z}ad7z>`Xfvm9C^;r^@#lFITuJB+=Gyp7GF|d zN6@A2U*a>mRINpKffJ1jQ@8e6mH$9qx|u#T@b!+iMdKMcsNKYmT~kLzfBL4`P46Am zS7wfv7SZWdqjrn4sGm7ZbX--(oT7JkzPg=v=-i~^_teZcd~e3fw<#yZIC0lOwXB0Q zW_CjNp(_vLS0n4Ghn;#}c-<~X<=*U+ zQT?{7iwd;uV}C{b3ITenp?PqVcVG(pV0mpn0AG9ID=Fq5cTPUEX<|A7KhT! zyXLCj=8DhZLxH@~8#Kf7c2Q=gOlt8bxPmMFX~PQ~JPF1#_t|sd3C7%U=u7%2=@L`m za5KNYfA*Jf&lxsiXZ!8fc={9ewZWDp9oLgrWf%F1?ymH0E<}Ex8)hA}7CMzIFW%pf zg%5V%Z}Rj@AySqJ;~(re${d~J)gSgc!Nz@NIoVD*Ydz&$dCqdY=W*?} z%XYU9dYQ^Rbvx&5p8$VT0-R^yJ?fkCR4cltCg!gXGEbTJP;BUZ&hw3g&-tbf^kNUv z;ww0ucV@|!9sb~{P>iz{8@Fx?`SQM%h5!AVxEo+Ua=>i*)z8|%-d8DTTLn#u_kic_ zTUhrY1MT}_j@EYhZOW&$;fFnWKBhd_~DB)!g~~)K}mei5=xb^Y~V>ip6}U zdEpTGROcM(R9y+-fcy#SzLC89ebWc@zLe)0-_5UceyRF3?je1J-ynLVm-!us7oo#^ zypg_>ZU9@UttwM(R6kt_&Y$90_{F{%|50im^@2zBrEqvIn@7$PYprKwr($sA`pnRr z+43NA!;}8jX87x<+~6<# zND%mfVXGBAn1Rv#&aGekvuCou_4t#cJe0Gm>HghTy6=inIY#{S&&cX--KOk~6Qy@K z68VacdBL_vbmu3xt-k_h^Nf7>4A08vorm1~U96YAX-3y@u=Id7gRU{ds>Cx zg^w#d;=KET(JjZ7sYJ(aJr?y(=N@beS;`AXhW_Ko!w*&HE})e3HeNrULH5ZSNi#5& zXXBeAcYr>qz8PBC@{r%)LFJC?l<_v=UJ@bTIeN2an4TnZjQrKU z8NMc*N%ruT^OJoF^S)xPs5+q zbMzfN{)n~K){#u6ox!y+-Ho*`L4G%H4Ltd2^1AuXXznIo!lC^l;HEv$h|kdDLi`BI zKL|F`-Rmf)Fx1$MoicN@Z8uzV5dAd#TV=GqdEJ(_g4m78h=x!x@AG zx}~C!bqah`*B4qk@0^wnXYDFq8oxQq+R;mkmekkd**1;JPd2Z-8XV8%M|pc>S1kV~ zg6#*izw2&nEY>6jSCFpfB+qTw8;8*u#Ncm|lT_!^+P@|JC$#^$yX`e{<~md52Ya1$ zPbYU5_-y-X6YsO_r`Zu0iO+LG7aCVHkj|m0`UbXL>_S)nHzGa7iZyxfJ;8VY4>d?d|&IuQ|^TOqhCulFz zuA$5ak8}Vrb`2#~tPEaX zmc`tk1y9Phe1{{KTDibqiVv4XiR8*fN@G1!%AM&;L-!Xg58r>i+2d3@z5Gsl^$G0X zq}S`BEO7aVYagdITLgR|3lAkKtg=edBG|sU_HIGwSTaNc*{1P=V3U{ksUG0jV|~## zvX6S^K6}lscw@7L3@Tp^!zcI!u-U>UOFT9OKO3>xVlGO$He2MAO$@whtK|KcUa`-C zxbxZ=zQlPQx1V0dCP(|}jm+8F8?z@TVo|s1Xi1aV7Q5Nfx_T2x2d_idN;8}w{ zkG=W{Y$$c#i+nIhMv&}bcmQW8M&&1ael~62ImPS`{1bDZ+9Vwed(K7=qqU>I_{F|p?L3}o1N*rX>JGxY3?9Eho%P8LVP9_6 zRQgKiT>7uD>a_+Qo^93lE`=ZPd;oqAE=v1m$LcNeI zsZ;ppN!D^qDpcEpOs)O075l6@`QHuRz~0V#u-68TX7)`aqXb{_bL*W|m&N-b*0r&; zZ9~18auS?d2`3Xzs4uj^BV^<-^8yG+()s zuhB{?kD<+x{V1)6Y~C#TFQxr83#^WH$E~t|qpTYIFReQ$-P7n?Zt>@S!#EkK$8zAY zfJgZSznkx0z4;t?EZ}kTjcun-G9u%md?*Q>(w_s;%a}Gl9`6XTUL|hLO7Qt7Z27c? z_O?mzdCN0pnf1A^EvtUjpj~FxIm`U@IAwav6P`?&pQ-qp@I8QD>F|m`W}2{AwT)57!HKJRAJbf7(wS>AQ^+jSsg*`VBo$M;yJ{6YTj(rfa1B)qkV@%y!LHyKJ55 z(8It{3>-0jUxO#AJ@5Z-mM8x;E}p{Rsgd>s|7y#=!M}!5tq!ibfIB6=Y~5BtIrCjIqAivX5nLF&kYG@2&j$cTXs35#2+p{ZEnx-_|}n zJZea~oa~6zapFOE7B=c}_)qA-1!?WC9zVgFWeepm!B&a2*-7GD_?BWj*Ux+8J$8JO z^>AgquU_AUJ`*ru(NW*fU5xb;yLIl*m+swbm$j2P>14;@Lv35oJxWinHOEJ3d*=9a z*HwL#*|XcsZ0K$7b2)2e_qn%xD8jSRr9C;i z4qPkTtOYkGh`F+X*;^L$6pRKZqxp|($UjCI)Str z=sFKMW(M)TdSp?apMY zKY%ZNbA)dUtd8uYc}ubtWz$ys?kVpc$GtB*cBr2F#HjqGMyFlkEk~(~_8OW*K6^Zj z?n|~z%A>Y%-g7JZ<5IUx_#QR+m43`=(@)7G_*zJt#<%jx!+9ptCa0Y4AM>vMc+Iql zv!PC#w)2hRy?u1U2;A;|l|9G)J^l1G!F!H=GJIy7etI7;WcJfPI&E63G^d{)cG}cz zSsw5y+x_p60- z;mzCU4s4IE5d6sPZolONlfGBF+i&>U$h)`SwmWUSif@9@ zdE@(n+p$SC`yH;l5@bAC#h0b8;oB7SW_{Ra#*t(WV6KAq^NY|ks5_ahRtFUe2(vqOe=+WQeB<@zk{rT4X}42!?a^^5IaV`R@a zYWr4gteQued)arCT_t+SYGkeI9qdyy^SmR6{R)MJwr}RQ(2gB%9NNzsR`@yquI^wgT#PLCW9H^so>SOm1~0-tgVOn4Z3?{`Js)*vO$#-ltUr=0 zM<>X$_Rm)^Pj}M373hJlFSpV7oP?Hb?21ufgw zE|WKU`N?tcHjDLni+I&nt{pP)>_i4cZ^XQ3Uxncio`M+d_Y6uJCbA{0i_h zy?))G-`ZFu9h77d*_{c0qM`7-KQ%XyVjvQby^qrhyY{I+4C1&g=xPX z7o=~H>w(>kZ+v68T`)=C;_ltMHq3%63*Af9f#-LO5w9E@=R1Gz+_XZU?;82SZd-B@ zHVlErs(av#!udSra#OcQKO}junf6L2B>eifw5SbgKsw=J6ub7n^LY}&o@?dDu7@=MgTf8*QJuc9Yg61LJ|#@1^Aj~}zZ}d)m}zLU@13zBd}iSb%k`Nx9sOAWcN@9Ba`K|4zXFS&m0n6?SMQ%;ePznp zXpd>z-V11!IO>Fl{Sn@)`SYeRG-BJK;X_isV@$i79UgCBEVpeo+%(a);elt_sr|kEcy&fU zUOm!}7J9eLeuNMIkM|=y*6ByPZT~O*m^okBePFkdbDlP>_FirJAV&K*>t^h@F+%mw zWuBo+_Vf+@8^OQq{6%vQIcrU?JTCe<>F-A9H!2r)-t$oyStprex$c=B&8yqI8z_ zShzz=HcJPP!8C@AUPJcy=-x-2&rc2c+Ivl?Wc z7UplwJq??R23@;Hm22n~`>av>T~{Az%f@>tyXG&~8k-kn@%gehAj@k1v0;<-cpRC@^nJN6%^uYwoya?ylWf1* zdB(0<^ve$i5f z{eXV<2GFl~A0(H`CxiSAch>FZ8$Mv%F)_6$82}Q3r z_Dra)qsrtPMUB?u3HnLN6wPQos7kE7v|sf7Lks^#-`Jcpf9y z@{Rh+m22Nb4nC`|JY&SAv)#~BGrw|s&1L*-^f2ZQ@LNqh@YcVMoHC1aJ@-+ryN3D{ z&*DKEe;V5-p;_IpJb-Mxxop(CM%0^+FP_i`UJt(2~2Tk z5A*#z$9TpTgf!p4D!yS1=7{&|y$9bX?)vw9{@}M9H2&mu*FAf8zP3SN`KAXC^Bp`i zs9aG>x8mB92U zc6xbBKNA~F_&V$R>9>T|#3ScavJaO`PBoS3oQf}R-~jva71Yu#fL-M6B;nyKrXyvsfg9e6dmh8)d}tS8Z{R?n{zWK{e_1kz*Ic>;ln4uRUd0;tzlxwkLW1pOE3Sa+WCX~uyrtHPYO1z zWPJ;rbQjQtEdQ zDV%lr)xHA!W$W%!+lGH^TMI_c2%QX+whjBU2H2OVZbT;3*c?xP(&x`>ngL$qGqM~w z3QapX)4=$%?>w}9E2{4}cl%h+By`P_@|t{sJn%Rjnk#6NT~?U*gf9dsxW7_MM z4dhJr-(n8kTtXRwN$~1SoNzeZ#N|eR#yAg7$!p>)N^59JL6g$t^FaQNljvg5E8z=) z`irR>orUy1^4l<8zx?8NcE4yp>GX16>nk7ix4yPI(2BE`p)-uPFC5Sv5uu}+rx#m! z1F}gSm}=cj+pD9m@2HA!wvscewy!bvrRlHg1b6+V@O8vF@T2;smob7pMg8J_s}BBK zo#O1f&OP>!SM#t-C(d49XgIKV7vv<7r?imJ9}Ny zh&|JqS+UlTFYE9e${+S;5BR`^f&0J&qgzp4!A5^pY2N4?9)2mXa$Y(%b$ZiE-}J+x zkqP*Jkxln_-(f==rLWQ@^x4pC*-I>;KP%|ha^x+0zs(n95QZ)5fwRv0*fONX9qZAy zAHd7Q*rNZ5`8Xw7M&^yOcUittHsJVf?9EL#6CXyNV2)~^6>h9rvVZt7ohhY?Jl-|- zt6n88AAOkObI}R?6Mitg<=t@0g!H$d)h5b$k#ZjPO-QGlduey*9DwW`C@(>L!~Gju z8W?|)vn|S0d5@?((YoN{H=a#lMD{LDo-lcUe~)*MRsN0zlk_W_$)|D>v^CB++DyFO zm-3!;_P3Ls{q0VFtm7~^l8o!Mzbbm9t>~v7hDK^X39O`Nrg_(97Jpi&oYuOFvA3dA^2{Yi4IGoWqXZe8J<{4v zd`3pZFQ6&$iC%DN#vOM{1%Xqxxw0J#V#`p3ozHIQEgSg?o=`Th+bZk-C}V)}|04OK z6Jv-1@((|uZWnlKs*E__Wz{D6E^<|DQ6F}Nw@^R#V^lrAdrCS$JC5^hG4JBtzr)_| zR;3faGN*j#h20a)0FRRe5d-k^SdhHpVD*z^&>k^qyDt&|IS~B=hM&W z0qE;Avj17@P3U3x$|Yzi}jwyZpn?Jt-Z*}>Yul>ZY0dPmUNAq9&8@`?}7Fyud@7%xciQpgBmQ&_`)So}kq%$j6YQMdAE>R*yC(*GIu1F5QN?(4DbcygH|-9AVl zpXs@ze1_)FJwabyI>9~eJZepyURjvX@Hj`G<;u%n(!2-X z_hH|qd&HDS^Te6^eljA*i3eWBm_UyU5A?O&Nne5IXlagBDi{hjUSjMFvnO$G2V29I z2eP+^@Q1#by~P@Mq_H*3cWe#eot*cntzo|;BHp>u=ADiIU@aH#WDllP{8f2YYAjE( zI>g%>uDzB4!Cfs>LbI9|Im%c!(W1Ukj zw&Qi>>`C@r94k9{F?ZQ(?*(2QB&_ts%AlRv1aQb-KW9m%%~9W0%xQvWEEDgr`QBxQ zx81-T6NgU+;nR{W)$U|Pv}wheK%JfMQj>29{JaJ}9Rl_e^3~8j@ud*Y$lo1Zj8XMT zaN2u1f}9z)=+iRNz3uou?GWxKm0yzPPVw$9@a@kC|Bb$HSukGr0@v_FTj#T;g1a1(pIoH2{F$H4GlNm_OMRzrT9Lb(XxCx*Gkh}rAGG~X z@Ji9vx?NU@aQ*C=;m44pyVaK4uHkGuX%_?l2FKWTn zBeYX}I1xP1#wzG5{keZ-ojW3H+IPS*9a}9Aec8;pDd10i=F7;2_#3_)AHR&j{%T~A z%ex8_tQCq{kgXZRk`tzZv*599=DTLTi#)U4JSTZhJZnE6qHRHEKCj`~o!iSPx7fNg zCn6f{MK{a*9`+SItGuRebe)2!|Fb&^B@4vIf$Jo2#epm3x8b_b15b|!o=OiqB|N+E zbOM75k9bY-h8a1c6SWOJPhDT`XSXT*eeOfslJL&=!e54wW&gms-N1cd6z)tuY0`JP z>GuBQT4(;5O&tk;tbTyLf%Z$KyBO=kBipQ>qx5GjK0Ffm@Q`eh@S!_F_c;Gd`IctZ zquI#A;>YVKS9%@EH@nO_Rd+AswN?I$>G$rn$lwN^jW#@@35{Ll$>fz|>@JMobbGzQ z94p`ZQ6|uR+3;F-&I5;er&$l}M2{qSPHUs-J+^M;Ilp!4r#Uyh9xK2;lJQoJ?ZmGp z#p=JpbA)vdJjk3M799V=ysEaKkQ~}N(b~6_Ji3SGhZvR+hg)_zIvJJy4NuwmL@r{JQ-4hiB3+DdwqHsT2N&4-~CAgGS%)Orf1 zPxDhe2bo7V<9{bIF*fup=W-%i2kBkwBJ`E^xlY;V=e51aSsCG1u>YBMY^A(H>XB|x z`oJ&VyI^oS?;9k$K>uyP^J<{r@ByO(C>Yqy9e47NBz-^y&-Pi+ytZdO<^Gy-*PUj+ z85rDh^Y6D>)u;GOEp0J+qx=lLSUzno--4{4E(eycQik9}Rxz^LPk9$S(h+LUQ}C!g zR}Mhi+>;lXjNdGDWYG7X;L1Q+cQPzS|Joa{bqmTXT92`|{9n*c9Gz#7F|7FSP`2by zn~rkZ?lAl^ukD|mc#RXSgT*_w=DN{Cd!oCq*=aeFW5+xDG@c&kBfnO8XYa2_K1F^p zZ8l@lvyYJw&43%}N>lKlxX0g-^jcx~#QT6ncw2`*nh^SGlM zjr&4}^Tk7;8R2{}-*&EFVZL8QIXlU76#qFr&_xnD-F(LQtm*zZ`GiBx zGLEaS3e(PPzI$;*e{uFXXCLR$tYBkz5oM|U;*X-6Ft`rJHg&J_2b;97hF-LK{Xr}J zA@pn5L_PY0gVs@hK2`4QD0`i+jQc^ z+Xyd??$3(Vt)}c2))^7-BAQ;vbJ*xu&%P&EW2lGUC(wHf$NL%cUuN!w7?1SNsx<4S zIh0rMU|zcG-nD~q=xhr8@F+5C=e_f^@40U)Wvh&O%AoI~zo+l}_%`J8P3xZ((iyn4 ze7VRDQ|H;B)gwX9AV$wzx1}UM_Gqwv&0sct9xl$_J_np6dnb;ZCHuSbd(NJXcOH&D zh%TSV{nDzpxUz#aMD0OjPtNUaL8d=4A6W9vTz9MhSX!_znhq>a&6>WwvNu+?Ibbb7 zXEDSc>*HbQ?N#^-`@D5NWSx1;(byo>HN&fskB!}0jju6h0{Dp$N@f7>l4a0W*>fy1 zM7Q{k>VYm0`&9iD!>if8tUI>-Yr8UH+};SUx?hJ&S-@WAq*1I19Mn ziLcBrLAPDN)OT-U@DMP~<7_Cf4M|qS-ttr{bdWeMz0k~S5}enf?RobRzKpE8Lq0o5 zAD2$id5Z^0rfZ>1(EKU(K&qt+S9~+L;Cyt>`T}c6>$i;~^%P#CF|TvXJHew}_odhL z5~t^T$shC;8d%iEP#wBh_(-Jwp25PIRtINyr|r1Fs#E)lhiv~-=dxMy>L+`^%L4Y8 z=~F{%KW07C$b57w^zco7^N3fT<>V2ah(_JB;ofz>V9EpUqK%q0>juG3`xhvyVNL1a z+FA0~a?vTR9mAAm${2Ir0y~J2b8^@kVq;5rkK~ny)AHAz;>UO!h=Hrebbd02IDT&2 zql%;NQvBSw&npgDQ}U)8mr@))2UGmqxCa$Ci#UF6+yjbxD{=hXxO&AcAda6Kw@z{I zAda6Kcc)UNxHNmw*b~bBpm5|&^BaK)>`zaOo(@ckzON5F!ZYHNk@wjrY4CHW7xIjBEXC7O zg%b%Sue;}(CExs*^|kg1?{U^d@-hAlJh_E6cBowbnu7!3jXSn=GG`T87oDP=)z}%O znF|NdJy-WV_v!Cnc;?z;O9bcIw;zV)(#R6+sjqy+-0^g=Blm8B54HSwdsPB`@7fCV zxzOTr#*5bS$Pw&?=C)nXG5pvI>>JwmsM=?*i%nWy6r=mc^o{s-L^6oamO;>0Mo(aO zYTqwD)9CAzk99&+vWwOfnsexr_K0uA6K%kNeO&EIU=NpDM{l7&X`dIJ;nL|WNJHNe)>^%$xj=re0hk5q-kM`^N3-&^72#1nYEgch9Z~Y4Ocxpq-Ro_?tc;{58VUy|6yRx1GctBTQ}j_+S_9Xhf!J zblMZAJ-;AL{zSHJGP2dOFM>PK`_G9NFUj;x0gbmun8$+$7MrugVd~AgYohT37Gz!L z^-&{VV3N%l5;-nE@yZpN1J-)VL!KPyf%X$0FE_TCDd4*sTne6D4m_@0@i*WY<11%8 zIC>`Imw$9jEc2el&KMJ8)5ea8v1wz+#Mrd4V`5BN;_n|5%l?irF(yyunD{=jqWZ!s zm)(fmCf$Yhlmv_RxEK#>YUqnC*Bd{q`x>FOee9vrCwqK4M_b`fXG4?fL!~`U+Fs~N zedV3|PvSem;?G;3_E?TF#@LH$&$Fb5%pDNV)3?%T=UUQZ=C&Q9@7Lk$UwV$MT6=IN z$>?DPBWoDxFKf_gD}55_vfa_#<*i@y9%GmL7w};QJ!Rvcq?I|agt-piBpVd}@HoCn zGW83>kM`Yk=R9_I&Kad=IHOcBa1hwPiGDQY=m7)+M4#7g@R8T{Ep&9klg5H%-+d1h zY!}S(=_WZtW$!>&dk4DOU6i#8y^-dfMt^S8T|cz-JZ4_^=%id(ID!lu?DaePd+raT zf2^-eKo+x3^-SJTsPEL@iZ3EQOu2UdkMHMNZIo;iW8E%)iVG?K9(c&Bw59Ls<=o3; z-$CAqy|;WgQEsW`%m%)Zji16A_^4#M9(V(C{m}$GCkW2gQ_eFZ<=A={a8=bzS(I@! z0UweMXd~q)UicEcYC|R;8n1suSE8jx>RkZb>#0}ubs4zNu1_$^=E|+ZYnNivtF7rpOmZ0-vO>cNsWd79UEv$zl6RjMr-9*=mCl=maP8jmvydZ%* z%{S)WQGL&RFcfmXo#)M<5 zEk{qi#478foc<;Fa-gn${NV-}qr=1gk`Q74?m)>2`4ymi<5vKmxb4)@w}k$|C$4lV z?3;FkkxyNJbD4Cfag9!(L%w`;7R|*)Ie1gQTf$#etTo@4w{#tLkNc5(u^sBT5gpeK z`j>M^*iPmnJLk2%6JKDY*J@5(Q{~8O*noKFCX4=_qQ0k2)fWu;m-jISNAl~ALXX@; zelvc&v~B3Z*h$$wkktQPA4qCbrXQq)c&>YQ9r*J4L4xn^Q$4K9q(_d*mR`0(;^D$) z4e-JDjE~Y0xUb4y-a@?c{4enEPxwFRVeLV_D(R)ZdcxHujQS)N++or`3k{6+gFQwi zNAKqhhef|;LmO*(|03=B62HBit?j}Wob*)|{n3JK7W(zt!AjuP9!x8=9dX8B5SoTp zl`4-#o(H(!NMn#TRHx9NK${)z_wtJth0ny%E!+F2=o_8y?qN>VbJ4Ho4YqTB1l`rN z|I+*fd?DbI{GMqGr}kyaM0gt<<_YlwYrLl>(X4o|5&LIZAk^3`7&!xEY;%V$5ZwguM z3;40uR0dtmXOYv++*W^`Xm(eu3_3FMzhe*Icf# zDYpHh=C$2HKZw^cuhoSgZ!DZgdGW8oD}a9;>%SIsgemHYs6Tmz_t3}v8#V_97cAjC zPXoH-8!7)ef1oy-5SUKA!2GB?1GKMIOurPdj{!dB8@|dn&mAloc#?i^nPl2hs(6cd z&FxyZRY`d^8DXvPJclJDWUi*+I%iRw)e=C*GZ+okic6puNm-$0zN0#9c>* zeMQJ?-hBug_tGD7uTFcMvZf!nRC=|lb(d&OkeeO4Kc2lSOXqX*+ZNpK%l#GW=HQ<{ zeax5q)ZlZ^4?or{+OY-~JdG|@^XxI`llidrDrfFBb8g1IONj6L;NwwzW1W0+c;Sk4 zpl%oWffaeIG+lZBr?<#&)+sYS&xY5wuL(pO;DLf2o*9)Lt$POWkKlSGa7s4%%RcGk zb8B-aSkrQww-ioBZo<}Y2;0E!(er!mefI@Xwez=(1KC)N2mAT-7)3weyC*M{9>d6Y zL(uW->^mP|uDjYZHuhu3M85RJS+M<; z*}?QHf3{k&6YO57ehw63SMcmM*&D1V#@8b}swhx6&_C0vKISh(&pu<|W%MeH_i9@P zv(L2}duql>m~*Qd7wZmg-F6I_QTb)}F~Hn%5_|p~yjy(xIsc5qabKrw0*`J^o?Mhl zMi-%9Uxcm7z8UN_tIia5-UH|w_COQyGv&u}?=RTy*0~N?q@T9yEgY%$^OXG}bq&yO zD*}0@t~J<7B=S2KRZ<_eL`RVm%95vw7GXoQ&n?d`YlhJoxouEcF5D{uHrzJ^&JFk3 zWwGDv;KN(i--CnG;P@4TuiOFlC&0aMnKw|u^VoW@WB1_w-@&!!WEc05zau|qXI_%8 z;eGys!~3bDgm2_e_|MoZjN%wOcc(4irjGr{wgF^o8$bEjMCKb@-{#LhXTM68-! z+jQ!CigEb{`|UgY)6HEJ@?M1IHQXpJF^fhw1xfTj?J?WDROO3=k*U6|8>R z`8qf*17^kPn+=|C_IkcinX5=23`}pklKlE!G|m~GqXQqZTB+mc8|;hDIX?WuA0c;c zfWBvwPxION_`*zhkkN0#Q(g&7h`wjCg`WYdPV&(koWGXOg;&vSz807q74O<-ko5#3SH8($KIaCNbIy*$}%i_Q<7;9L8S$BU!) zykyRxN9QBEeANGe1qImt?DrScej8f2mVWS-A^ocNTb1=m=lh$m6BKOk0q&Lu#^ND{ z|MT;;|H*c{{V&sg?1@J7zuRfQ*4|rbzx2Pz4;@=s%RY@>a4cN*-9nkLEe1Btqsps! z$?iYk+tth^e3Eit5O>!M+i5<$6ugR zZ+;(pAIkq<_B{UNIrn#6`BnQS(nDwr^>E*vE33NcDb26kE87L$k?r=q z3%deW);)}U45Cv`2z-~LXX?8z_Wc#?A);fd{u1rbzEc4F5*q(+w%)|u$FlJv`jPxA z9RcIWtbHW; z0;d7SWV5$JXPK@$7Egc3h9`gV9d}0wr4O_Mz`Mu^K(ZgXkg9N9<+ItTRq&PkmvYwZ>4N zi4M;~ zS4_6=+!KFV!MZt1^B=yuuD=4DvS)F;5Zg;&t7Sjo4&Q78+xxDV+?rtRxKQ6r=8RJS zy9(BbE3nhviLHGt@L>;L6zlfC$AJX{hx3qq0@+R3Lst6w*?#u^rbZ>VmavZ$ zcg|I1QQvdS`&Th%$!7Ql^4YTO)NE|Nr>*c6)TR!VNRF;1Z?|1vRugIF+zn?Xn-*j1 zcBAa)`F6$b39WIJIgLF~!iDIUj^o>0zL%HG_NB|0_|malEBz!o5!uc(Ps67e>ojOM zFTvXO*+YGcx@607ATlr~hqVIbtoY?b&Su(oJ$(pSVx+v)l=q-r-uImH!WW{KJ-DFh zO3J$t{M>fm?Sol?DNRdXVSVnqEJx+Zwk-~BD`-!W{wQCeyG|fzhu&_ zG}EuASwAo?^JY2e%BwujJ9!#8PZ66P>u~4VZ_w6jSNqeO zSx_E(d%^UF79xvc@1*_ZC2JXH%tz&Xt8?GtS2f)KDZ0D~JP61s)RTyuMq$w`}0ADrYRaWj6wc$_px_eA(cr+y9ASw-&I{3xWUbk;d+2gpy;$W3`@6X>Nz74fB1bjidOPXkr~a zOMF-BxP|bsUG(Lv^pEtx-=ZH+ZQ9g*a`jxZ&RYepMeCxY#p-K#em3jYV&wQBV>tvr zkpG(9;3?l%u(X$YGil(&644j>T*`N8AclD8sg#QPeEdXDa1DA`d zqi5kNR=-yE>7%%+=PdiQAog(~&cL|1>IWAFS3cYBnRXu0xOB&jaJK8-qUAQu3e1?y z#M$DB`L)8Ei?h|EIK$R-)VJPvIQt&B7{%A$o47xZNx4q!Vz!Ux+nRy{xa;`DLKGx8U6<%R5(o3#dOF6qUe5&ewb%Ow-_U0s`~#gqt@Kt&|MaE(;9T%&{e8?Hzhm(2(x>n)oQX!4 zgSYdoF*MFI*BQ2dQCpXfOdV~9H#+wtu&xNS?cmI|4;)2kk8CX)@R2Xwt89p*e`UWf zFAv*e(@)4_JJ9uSLXVb0zL=Q!fiQKngFgZJ90v6XFTrRXCN+@5RWJgYfE^;5K;QeS^B^24@;W(bq=mB=VRs#ws(d}8j3o(^2Y_(|XIFB}+Ty|sxwyMilX8{|J?6260h525*}px`?J4W zk6lF;-+ANyg*fSiym9i!&-fnF9$DWBD;)!O;%}l4@i!Z%HXlE6+Lo&Xn`Ej^)&eHo z!<&2FX?65dP6RpeWPpBQF9p5uP$gxFfAmdeosLfs=DUtg+EA2d%`)Xo&+SmSy#WB3L11n!vjj^_{A z<+7$6wHX-MUz|H-xpdsXTY3sQeia;XVK`^=ZQVC8>O5Oic@!^Rr@eWzFAFR#exzR% z@4=ALz$KVkfK7U#R$vvH)wJx+b@c!U?6H6Ar?YQVMZrh3o~nYAY8uQtQmO`B~x9dmX_=T%x*1FnI8 zbC+XQqE~m*jP>av{QW{>ia&cldz4OvgF5hDbdhx`$e56C#eVz%%HLlrVadi+;d1&3 z9d*5-%aMC>#yihpmn$D^xyZ=Ob0hnA=yeH{o#AzS=;#~;0LsA{w$us z7xzWk@618n#-=6i!rJorS^1Czvee1;NcPM8gw5q+|Pkz_t1r6j?yuFWH&{jh{ zJSf`Ee6oe#SiOEOdej2?IFJ2`eEN9?{A_yLfA$YQCb_Q3pIe)_zbH3UUz8J_YE6rS zZ_D>^p{<+7CM{!sT=eepdt_J?Q5;DeFqB^+Q%KB zJ?KTH2Nk|fthV){KZ1w4GPLSc-Gbo-#=h#;JR%q*Lra#_JSUp_I<^jk%yIU*ZdIFEd!{!#u`@@w64Xj5J~oBqv0u8!2# z4ytb}i>GW~49`6V4LS2*^v_NkUHQe#XC7No(Pa=E6n&ceS7#u%eSmf9Md-FVeS^qY zLq(qZtQT9Bxg$?B!kl9B8K-~25m(LQM@rR^^%;Tjdt8^#A&`yaNfA+K%fpkZq=V7u8*H| ztwG)S)(jvFCsPMtXD#uIsHocz1+WBz27&b zR=T78z6%HXi$A~Zmps1TKHwM&^dDJS!)AW_EO#J?{W|vc+u%G61c;cuR9)!o^|PJ#LkKJqf29UUZ3%Q|0&Ap0YUj2~nUpc@!PGyV_%i?F_|IK#0@Cl9{a3I*mgU8-yI@^|6 z_;K5sxPvAI7oa%_48GYt3LK zdF7We>a$GVY2T7OKAxR-pl!=#_WhHx!_pm;lIvID%SPw=2cVS}{P!H1(pWWzx~}Jk ze6}V*T$1@uX9IfZL)$Ot=pB^b_>bYo#DiS;GHtfi&fvRZ9odwZ)fs83EQ!_Mz_^e2 zvYM=wR{9srm04lzUMI#n7RO3(AtxTo-XJvjtMxv_fTqv$GbIp$q;2-dOZA@H+G zAME}m^Sgt0;rjsj6YNp8`m7nM#|oC;+en-jmgXbuZC+#zeVs55UjE77Fpq@;&#Yd1 zdynwYBDtP5cFpkcBUbpzk^3H*&z@Gg&)?YHjIJT|^HIK_c*XtFDa(9&*Sxd7HSw_p zXT|&Qi`2}X(AtbL$-l>H44suf_8@j~8F?eXos}Lrvo_|u4CTCJS^l%ikuLLr?~QFo zn7y=xKN}kt2e$K{&jW3#RFtr=y<*jo!{md!fkTxB<^53H=S%Z4w1AhYZzIro}T zcJpd{Q)R@RLH_B5&LfX+)2RpOD1G-y-Mzt4VspF82Vo$yg7+~9<(obU!Gj5%Sc6GokIh7$&z@a2o_ z`ud#k&8hbLj0^1WZBBTt6Mn=AH#p(LPWW{v{I(PR)CvEO6Ta?*ITzaHUg?DIaKiUF zVT}{s<%FMh!iSyk%TBn<3BT`z2c7VU6aJSIzV3tzuIK2@_6uuM>XG z3BT@yKX<}kIicxv{#43TW=-rxM$^U zNnpGC*7djFa>qI+yLHE%;kD~mC&G8#edp?1)~@A!UHFze?p%LsB7FNTx8Hd;_V(uQ z&bw~8+cYVx9K76~T(|C)Pgob;ZNPU{nw@UdDQUaFjaKwu^?)S`H5ntMbtlJHIHqnsoP1?|1Ru ze2)Cexz&?j@6EjTc=E4ZcX#rRTf^(_yfb{;op;=74LWp?+3#I{u=``tKaQn`cZ4aF zzYp|{pWfrd2c7R4x7y!d?SwaPamsVTFFWC_x7=~d-O1HfO}|}kCOkdoh_|7!EY>jA zRDM6?hc5vgp0I?kJbt7}l{4_RHXAZw>_-*6|>6!Mdbl^R~cS+(d;HU3+HT7La zC>)khfX3Z35Ua|Y>BNT#Ri9`W+XD+7xydhFDE?A_R2U=t1YtShErg2+KS?;B@K(Z^ zgn(kbhj0zyjfAy?*Ad=ExRCI6!pjH+<1#|Ep_EX#%_9^HZzU9*al$&n2%+FwM7Wml z{e!@V$heB76s-a9&CH0O10{M#6U!ZX$dq;b#fU2$8?78wejJ zoJaUMLibN?)Zax9*z_wL=R&Ca`U zsJ}hVJ94V|>vG=1&ik*Nci~!pea`!>_N!$z*zl?k^cQyC)ff6(aW>(7oF-4Wp+$s0NW|^*X6vc@AUU8=RIP-S}!^8q6z&4 z8}08kuJspo-lO)bwa9rF9qaD{&bw$xe;b^4(USh$c}n!Hzm$`%v7x^&JMS8A`fG9C zMRWRl!g+Tmo-XHIw5PvcIq#xD{q;HTqDAw!(QZ$c^Lml_%s2PGRD*wk_$3EOF*TWv6pcx<7*g)8Ba5sDDYR-&B%s$}1^S=TqwZQ|Ls=D}?jim~-VheYsw@$6q3HNd84o z+)*HU;2dwsdS|i8ncHUloq4V za$S^~kj5M$50h(mzS~I?@S>6pGXL(vLT7=a(3G>u?=<<45od8O1wtM@u%5^3c7Wk7 zp$g#lmK2&I6K)Z+yV#G6lzL>%kn?$;)2W&aAw@=65x39eFhz`nxq~Qclh3_b)wS5^ z-&o>Zk9xCF9Wo?FDXN7daeNkWzmQX!pO5VMJPzalIM?OIgkRo3aQg69OOq(w6=>@^ ziNIf~6vK-8i->>`v%e%)HHo;V;_#{hCKQdRJrQ|K<(-bA$o-EfZ^WbC=S1(1xK@c^ zq>qNL>ZfA0p5SguV@frI+I}^@0{f6vQMVbZstA4kF>Rap+KwVp+@@RyYDS@~H&OqX zW~M~_V`GZ?i~Fz~vOW|*F{8}rCQW2my@T`lsAi+ax@B@o#MoS$A~-e~+}EK4DJe#m zr&`Fj$>(>{+z0iiv=BX#=#{*VV(wpjeyZOT3EC~1g_j!*7na{$qu6oNrT6PD!CVSFNt5Lgxl&A=Mb% zEthgS)lD-k~9|Jw-Ww`D!$k?!lr z(LRj$^-0ps7*)Zponqc1=jqCg0?Ydn17pcgV%(Rrm&{ns zThrpOm9d=HWygijV=U*Lo;ZG49Ijw2^{Zqo(+@H3&-yjTg@1yvES;wqC$dKyV;O%t zV_D|!GM4k;jyT*ICm)XEe-?+k;&3-(Y460FM0v>c42-2d1LF9`I6OE`J}C|li^C?y za$Y|&j-MQd$H!qaW2x_yIDT3je^wmd633qx$G67e%s6a|3%?=`XUE}-FeeJ;hk|KW&Vq{W}=Tb(k*3QXk_jLVsx=GviU5em3KgjLYKqA;#mF z-_BUZ-_6*>eADkldh$Nf$~c+%0mfq)hZslJSs2UyxSg?Fm+4|G`_K6PQu)0|U&<#j zmhq=Cmi5cVSlY+KSPqi$@f)~4%Kk0Be~NG4@%=$^T=@9jWhOvTQ~vJz&$ zg-*XynGOFra};IPEJYcP-?QN{9M?sch=jzvTHHLRK#uCqI8@4%6kPNh7q!WhIb)TH zpj5vRl`;!)KwOyvIvzB6j95>-6u-CNItPKa;Kx|-$KguBH4)b+Tyqd;79uzYzqjDJ z6qkKNzIt~%8ez%VH{`@&GU8~(PBYY!d?}{bX-lfmMALB0bqh)z-aM6O7aJc@xeZj_ zunPQ3=?0rQc2QiyT(naXCt=TX<~wNSkNZ~{)RbFT;w$w!DGEE)1qa=Mz}!8B=lHe3 z-MHm-unN)iBe84Qu!CBiOhWx*#X|OSd;O)bM4sE{Da0KtZHD2F!XxwPbeWE$im-cB zE@}x=R3&?q|Ent5b4xtxs!t?a8l#cjO7rNJ$zSR%hSgB6^R0?~`HB^bR4u?4j z`fH^SPo(nvYH|^|-=rMn`xkaRPW&=?1yT=H5%UD5^It5?GZyhT9WjvBfzQnC@dV3g4 zxiIImnW^-b;s0NyCMEta8Rr7TUp%KLY{hAWU;Dd8`Q=}%{8pS7kbgSmxBY2j*oOUb z`KQO3g5UBd!<+tJE%r#h%eHR2`kHIEUst~4`WtrMc+<@lxBTw+yKcSh_R2f%yleN} z_uLz-s;=2nyLVq`e_ee;n`8{`s+%$Deresi&X$OY5`G zJ^#XsFa5Rc(&<*6_SG3kFdY;i~i3P>Hm^@;Qg`>{14~>bz38Uy5Hzz4@PvGF8Zg}{kA_D zUYnoamS1fM`fcc;|36tr@tY%@!8i|RRD`b)zvVBI`i&W8v3U94mfNV5QHlN*zi1;V z>Il%89GZjCMe{O zTwYwHYZ)%mbt}_tpyYowE{f+GTofMjZuPw3J&dbBNzXmFD4l({NbZlgNUxW05&unG z#J>;*q&1x+7=`R3T~oD~-#y5*ndu>>Eli(c+RF3=rmr#WU>auH%`~w_#BXFejH!v~ zNT$h5$1^oEox(JY=`5xert_FuncA3UGtFaK$W+GfXS{{!HB2j*2APJKHZy&SX)Dt< zrX5VXnd;cUhCQ5rrb$dqOp}?KnWizdFtstYGxabnXBuSM#I%)Z8`E~C9ZbVayO?$} zRceKv2Bt=)NlZ;llbNP5wK26bmGOHRmocqi8f4ncw3TTG({Gp_Wop7@lqmeZpw#RBb;k`2l{XRaDC z!eA|O6NU4tKj4e-xh_z|;imopaX3jB@jzSnmll-zc!2_O;^0A!lllvCh`)po($IQS zdJ&wy80Q^vkz2fYVqV_FO=`S^^West7Q>n7$0j)PR;<<;MMX2{gp+VtI5kTLXBOk0 zm*@&$QgSu^=c(AGo~vDep3DuLg$KGxWf3k9NW?3`N3n>C(xdpj zalR-UH9Z+xrc07hKMH?7;wQZqAm$v<#lU34bo9VP36qBBb3TbuS)_v&fMy{a_0>z2 zTs2=yV22IB^WaYxK((lFin+Tic;r}L0e#nRZ z#$z-i8TvCtd`MDATNSG^13DJrzYl-X;Y1bo6IQ~$!Ws98_HAQY!L);^B_#M2Oxu_m z_j5R=6-?Whn(73v^YxS=tv|D@pLxLeg1og@4e&^u4HZ`5|u2FHt!;-DU=7_C-nM7Eb2 z9Y6dggr)W=LzBg1=;Pbphx+bQ)6Yk~v~dWlA1{4TqrAw446D`t_~{2!D~dWuF^KYx z=Ah^FDZOYNE(W3=hI$iO$McYzjXmhpb9@vw7jaNY_+gP0#71@z{Zu|UWMgV0G@4LL zik5WL)>Mg{N&s^4?JZWrJj6paz652Sga3hlGd@uUBFCgNSu?g3MazV0>IO(quP|BD zQrD~2qj9V-#-B8oYsHkmp6y4z9`qk2kfj(>U`euBPrZt08M3^j4zcmZ+fm#%(LE1s zH#oe`EcJ1)`2qDliu@NvwuLgh*dW3NSr&F9aC{On*J>O2%YEazVy) zZ%8i0nC>0PH8G}pJ#x*A<-J}DW4cEq*UI<=0hKn!RL11m85;#uIvCTvCAl!;lLb_| z7!P9H&3G_l<&dzKJa=JWO!v6tjEv>;3rUQJ2)1HkEYHOxGnVI0%#7*Ynp_%V?1!n& z!uU+aR>tz&k&Us5`PqzzGqy7x!FX_^$j{k~UCbZJ*u!`f;{aniLqV>L@n`{+a>ipA zS1_h~c5;=B#|fwe8INZiVw}RbiSb0n&5WlpZee^b<5tFLjN2GbXWY(M?2_X79LDD{ zKg`&|xQlT*<8H_yWde#0yhcF9&REXeU5u|{zH(UPPsbgAhxvNOWsDOTS1?XwY~cFU zi*bKjRMO4`AHIcpzit&qDtb7#kU%$k@c#$k@#I zB*yIxBK*mWyBQB+Y+?DqjBSihVQgo7Dq|1hB*tZo)rYH*!wSYjnIB|)I^!nB!x*

+Mycs%1K#wm-R+#umnvjMEv17-ukUW;~B^8{_$mI~Xru+{Jhy zW94y?-$jg#jL&CmVtfH(GviFg7RE~$+ZZopY-em^>|snFk0n>ecopLc#;X|z8Lwg7 z#MsHWh4FgEZHx;UcQD?{xQnq)PC%Xz`A=jV=Jwo&v61{@84qCWVmy>_fbmSm6^z$24l>3@kLsEjCo*nf+=p=+fIoHpYD!+Zp#`>|s2BaT(*Gj4K$= zWE^6w;|XIkp~21kPqWl(CDkScS%O%jzmK zo*Tw}DLHvRYUP#DT&$9iqxD5W#Y~e{2guPns-QxS))C3&W95LH3lf5gHxRfvK3bn4 zNB6_z=)RX+F~?iX*u&Vv^0aD4j@Bi}(YhTuAKx4M)VFaErd4u!_lAq9kfXIBa&F{^ z9IaiG^F{I_^eW`=g`93a>$!pR=fb)YIR`98&dK@|u^tZfts|5#kw03MBj@7qw2n(| zJ_Jjm?BA8a|7Gb|eII2e} zSXGhXi;*M3^1h4eRSH&NB%kURDX^xD zpXwv=r9G%#ra)V6)<~V=TM>zm>M7|bdY`QvT@+E98cHRVP2nyc>jlLe?gQ+m?A zv{p{#C)20;odWITeJ0g&!qR?J-zhzrKdSdBke2tcRR1Y|yuAnM%_?4l|CvDkNWVaK zi`E-zA1MeW^F?wgs712g1ys94@n+TTQB3VhD^Kl<>XpowSp8lQDK~0wln<$Qk($rN zk$lpMv9?}_{guTLJ5u|k^*CA2shtv*?Sk4XVVOR)TPl}$J5W2;)}I_T-%-7&eQWik zcCN+L-ea+7A2MIm{C`M7kE<=9EGIP0P#OiyrT#M9lS`x9d=#LgD%Q$_}pJYVZi`c)5>PP!H zlv*~+i~eM8q+Dpcq5ev?H_<;t`NeAfwfzIh+cfor?3V?f*!nHnb+jMTwu20{k1bR+ z67?+F{zW~T8?m>x-e|)~yUmC0&?{4;2i3P|xk$Nc7u|@bIoyAp30j0b~so>8yyTA^f70R)Ym#s~G8gRoF}$2{|4sEeaSwI+nF!-W#m4kf%#$P*D&s8{32sRyRdfy<0Qtk+a>jC=T*C3p8`7bkWW&9rFcE)rr zmt2_fa{?;ej2~ibcuUyhamGoEUt^ricn{+=#*K`vj6YzU&G`3>U5q;z2N*xXxSa7z zj4K%*W*lPt4&!FV?=x;?{1)SO#?LSgaCc#QaRga-VYo<7DRh7|VV0{*2R@zl*VzaV_I)#s?U?7|U@z!1xc$FK2v+ zv5niC+-I$1emV2yKB(Nc4KZKtJIa0i0W9Cle0hH%_i-mOzm@rZ#>s5YB*yK`Kgc-D zSk4RDxc(1hemC=%GM4+)$&3x}i1Jy-*v{#l#W;!i4#x5v!U>F%na|5^k#h+rGCz&^ zw=%XeUdC9STQD-tX1=`NZe@K^nD1gfkJd_<`KingFh9W9%;h(OaXIt1G46Uqy)mJHA7Ph#B6e6cEq_gpf66!Tk|U%lGnV`CGZ`l{{~E>}oSs?AGyiVJR>m6{XEQEk>|(r< zu{?)zGUEXAZ)04}cm?B1#gIcS2GSXu4LTJcqe1SdqTf^87DCgNzCz|$~c+%*^EuhKaFu3^Tld{qF5dk@y}wu zmHF2)&St!iv5WBr#sS8=8Jju1A&kqJe-UF3^G7hQWPTpw5aT~HZf5)><5tE^jN2JE zGY&I;o^dzhzc5bY^oKGwyf5;9F=M%oe}r)o^PgaBX8b5)E91S4?TqhWY~l1yXB=Su zos7#FU&6SXxj-#>vdLGgdhMDU8#Y ze-C3DYmiKjU`Bb&SJ|7clN- z>|rd{W$EO%aN<7Kf%|DK&cW)g7U%IUhrG{r@@|yG_<(wh{5sx6k^J?%TOx5GR{6E@ z7h(lYi)pPxi%YQjpv9NP@oAM*%coUNEtad?GW|`O{L*TtSPjh8tOE)k@xKs!83XM@ zr9gWbzu13~yK}T3L+cK7zFau59+iU_=nQi-9hL zNx2@B8!2bOr}Nj^@a~9yg1;_O&H@+5#qWvKOTm}BZZbVO<*bcATF-_2=14sh>oHXO zr97>_(CKh3&PAEU;&^^+csdiVl^4(ckdH_&THXQ|M9NQKSESwuT!gdg+W3ki>>J8m zX4+?_eLA_jD)ybp-ZDP1z8bAR63c!_VEQl9qxILqNPQIiBJ7U~C-y<2`iXs-XuA~q zmeJ>`#Qu|(Pw`W`6;7;c%Ux{RAEx|^XWB?Y?6Wx{^;hfz%H3<)$ENa-yXu6=p3(Ly zu-t8z=g-%n1cej(X9W>^iT$qik@g|>m7@B~eIMyVI0e0jw4c}?TOaAi#lE84MW^SG zY2Q)quG90#v_BVZk79pN?xGW)_MK#EgsH!v|H6rVEiGTPwayPLS*| zB$h2+V%Z|aKD9g*A^CK|*m*HvuQ=YDn`^xmBk>t~u z8np^*qWh2v*?T2bPona6hvA^-l@lg2tVE3Nn zg}-+E6#IEHb;>W*SE(&w+V7>OY@|M<14)RHTkO+D?Jb^A(_-59m#0$b{08MdT7Sej z0QxVS*f*A^UFcj0l?OfDDV#Vb;E9aiqV|aYTKj1IwfPnM`Wv8yaAN;Gs*l(&p#DVk z$Wbg>ki;^)z^;fs0@D*k!U^n)^bZ32Bjcyo?~kU>!PNIz$={Od@S{zyS3H{cX=Pw1 zi1x@FrZ;oDih}XLp7x>j77H@o< zh%X()eC~nnVHZ1#@_h^NF^DB4c}_gaHNP02OT$|zoePR*nDAOH**se|mnL+T;S{(*vI+u$rjP zvHtTQCHlUlcz&36WfwA?2WrC`V$zkF_*=kqrh5KiOb`APwkQA9IMFi(`q0^hXl;Uh zVvu-0oT|9ypANsn|BQV_3*wpil6uoeoJra!uP>I zdsD#gbV~R4zkI)(lrQ{7$nOLt`4-T?uf*T-wUF-s?FD%wulQ2P7lM*}5VY+W^2BfN67peCO3w)S&@tqRZ)JHqD21;8ZH<$+esi+AtVH~C zaOHibQ}W&y3tt4|FE+{l@qh(|lsRB;G%Q z|FiUoB=GP3u%yN2ORKJNvR(;&jCzObSdKU?8h)GRH-(`%q(kxlOusF-C|<48qF}0C zF@1ve6epvVr&!YS^I<~PZkkCC51oSZiHF6ht& zKECbPQ{6+q4cy)i|nwa;ZyYEaWYzY%A*M~(xu^de3=lB;*wI@^eKL=)1stFdZiqE zeEU)>67!qV4{G?$_}x=Iqqt-&+Vm-YtRxsUj^xE-LcXqsY*?p+E5fX#e;A8YNLwzP33Fsflu0-HU8Qd zIuLIdJbe2%CN2WRlR4Mso8+Zio;5G)+t0EmU!Q+?>0{>?Z29Ai#j}Zv5Ax>wQXJE! zOz`C8u<$#ebWxmd;aZrnB9mU)7RHAB1p1f~{P2xs%={RS%u{cXjo6@QSfmp&Ba77A zq(e@flG#Vf1r$S(PJI`e8qdg0>Rdqa=#(@VWddFS<#&u!wz6@t*|C0W$j=_*w@8i873W8uo;W{>FaWb6-(fe>eB4)-g@=B23-D=$R_RZQ*A8j#ANd8f}f_I zOd&t|W__js@d-JxC2Z0wL2UL<;3R22fGQ?1vQP7q3WQbpBfaYFBfiQMwc{K_a^;iu{ik>k31bT-pJAa(eae$SRa+q?Ce zR{af~M~)nEW}y2L`YqGE zLa`GSgTXA@huC3h09LZgpX4~m!Kr0Zy$9^bGYg*f;?VOqwMH1q%^+!yK7 zeUwa}(l}eO8PA~fua4Tnu1TB1oAZxti!$8PSV)Ln5@h3@l^0fApu!$D1DZ}m4@xgZ zDKm~lOk+rwt*vUg;LRt-xsW?dC9EmKQpIMX1%vqVZ$bH+5!YRmSvaYO{a5t2;GWMS z1wpMn=--UmN_x-Z8rqA?vp4Li%?G8OrkIU~TlH7V`q&OVE>_G*hhJ9f>2=b-8U8P! z?4Lorhh;6^A?hjJBaT-r#u2J5M7f+xafrGe6UXvn_>U(&;_Ci6XgBm?`gps^c7s*P zlLjMAY8&fuT}J6&O?C2|&ZlAXL!|35+T0z;%XT#{zs%=V;L)Dp;g`9!BA--N3hY&n zypjW3b%)sgp|~>BgG;uia`@)!*fR6SmDvEB8kI5&l;qz9rSM_K-OL||^272_q#lw! z)zI~3_-V_8bZtBGOI?!+D0a;MLA80%>KeovghiDS|JveoCExaCqJ8dME@TdYQp|-| zETp&spoGgo$;InUy5X!vU+UK;;G(|^aUI?|qI05BW;hkUQJ+*i8+BkDB0E+&o(A~= zkR7DTcOIFI{&G0dq=6y69a@i3uRBmzUL^Urx1R9If5nbrtQlDlr*z{v z4B>0+!hWAQ1b0@Buvasv9$rr|ZUZG3Z$Hwh0Od~SJ9=tkD4vtZe&^zvi_41Z@K(_- zhT+o?24J%NX{vwcku;^nXvFWcaZOVFL>nHCJ}wD(nCkbMj`{+#+F!)>Z<)ui>r|8t zg%xp*=>!=v>@3@J?lIz713k_}JgZbaL|;2cXEF5FQNB8ltb;A=#M==&CV5~d zs^{ez+ar0!zFF9R*yV(T7)vfD%;Q{lji?*;t@NF3 zMcIu!5pBWMrosJ?Rv+j_V@4TD1d_gJx`0{K*9BMe$FLRfWPeqxG zQ}Zm^&OF7EG+SVv`5ZaYmu);AeKW0ZQhlWQ97crM2)~@RMQo81>>Dzh>AyaPC&Y9y}33TS7tTpIIcs8 zizxa4!}Lg8iUHM70aocCrdFo8O#2{AqMAnMkpS9P3H{czFVZ^!@fiP%dW37|I-N?} zaVReg90De1c?|OqToQ|TMg2scBIDULNMkdladWf{N9z0|xTnGOlpEy@YR6^3;Qkpf zIpp6k9F%M|3uQEg;<@@2!?S8BjqR+0-z{ohqJEpvzSKPNd_ku5ZapGu6!l~Zs0kNQ zN{Q&X2q*e8(MQViD+EtDAmogoOVQU&MxbN$b+l|dNBx_r`iZ{xY^uBH2eL7LC%gDxz_){NQJ+L~xEgLm=UIr0#%79R zpkg#0rUJqkBE#ALin#(Vii0T4Q%OMWPgz#l_nTKy*IvWii0c)`FxX1eqaDys^i40T zbH8M@zZ)U$OLpmK+%R6C>LK{ib}hvhU7$ex5e41_$)bL2$ULCSW0peWtAj&gqc zLRQ`j4X5$uT2U5KK8QyB8Lm9UP3|O$4>NCdyt-BR4gQ1@Dx&yjs7-Ss+|8 zee};5ucG>yzQaBMF3DH>P7U7!UW0~zR$TZX;tp%#zY~4UD7Ack+1CvC8T}@%a<*e8 zYNs8S#DnAF9{eNjH*rbb%3vFH+`cy2uF)rPzu$S}Ud%ObK`|VwUvMJ)sj97_w%r1K zeH2D>KSE;+-FMaWFdv(Q`Um?*>@C~dQ@EKLITUL}oVR?%Zai#h8BL{fwK~?u-UqHy z=QXkQZ2TaMPlI)l{JsT!U!=6I7QJmU>hcVfH~KQ9FT!Gs6604~U%O(IPN~4v#`*;D zyIF&K>IaNtu~&ghhFQq{XdAj!Mq&Hreqs2C+LN70%Pzo>%&vOk}sT9 zjAL{%n;Qjz>46*kNYkx(zb5LIDJW12WjoCWIgzFINRg8MKNUe9#b~ZB3 z9u=2h9)?TW19e0l&*c0}%*)FZ9VX_O0~>*HOZ^#5(=irVjF{i(KGe_coC}X36gS2^ zX{VMvos#H;y`c|LnnPp0t@h_Lw9(6n--f7-38SIj@DzonOu*D_HqiXHylzoI+sk&%;nQ#uux*T*}VPN;`;D25jJ z_hcX110$!6Klx$REAo%@G@uNRRhA@3dpYE^@pNt#mQMmN{J|ydt%!7 zlH=kdX_@bET)qu`ggzwm6V}?3u#isc@Y3b<$8Y%A`$qk~7>M77i=nR=LR=kPKgZ|L!Y_AGy%)lr;R=%nvW zW#HxOI7W!0g{zgd3G^2BrNz0<`2lBcsozOImBk5Gr^6%U6y=`SchTd4$E7NNf!B%n z7WOX07o%~W5&q@9vI?E}w$5F#A=2^m4{4E!53kSndgjY%tVNR?77AfCm;lAJou!%6Dxl)JXn98+pC&BDVD_^ER?WDjniVe z8IEG)pS}mLHG{IzU7YXps7Ef;8h=6JvQnpalg;VHr@`?>?p$XE)hT3aD7Bf4Qm+@E zljn~eFUnKS)cEq(7xGXZYU>vt8PCde`}}D3dCI0yJxS6b*4jRI|FhmuiP;$y5#*3Bo~;yzfRD1T1KbUHRTf8n36(JPLL z_I0vO6mT3zc|CEtzc90;WPPb;L20r0CPuLzjYoN#I4g@`L}W*KlaMWUMG3V@$}w`~ zNL=o4`_KvI;xk^TT8c7*tf1+!cIy@t`a~C{+(W;S=~a$Ge9i1$LJ$_{ZbEABH4(Ya z#o=wW9U+Zxx#t!3N1v#p4^m6isG~rc?i_r6e3NoOi_%H$sN}|Yd(RKR;%D?;jowe~ z))jwLg7UZoANzpB5b}+!8H!!iL4Fkb_FgOa6CO_KrQAoM2%(;P(Hmjsj(S_PX;izs zOtkBC<*hg$d@JnOC5YT)dE98csISUX=P20QodCAn^eCgIABCxtCgJzi+m^vcU}gW-cjIG9whD3Gi*42MR{2|e=+@jQq|d} zw%dOsEG{kdyXS85{?Ja+T(>@dmfIq__xeObjYMXxgBb zSx>Aps4i(3s~ldpBZstINgU1Syp&?6jHsVOd54flfH2Z%CLb;v8l$n+Pccvku4eQZ zm=)@Hn&sY%KDP?>vDD`xiMi-?opf?VPqCo)M0e|4TI%n5a`M ziRAx(_dmu0ld3;RxdUfjUcAKgO8#qfr}p#DI%sFvAkLZ7eIq%+`T1utD;0jn`mZw` zi}UaK>k%*M_8;vi-rth1UrX1!Ti6ThE$Z1pvKPsFZWsPiZ%K)#{Z07ST9V69XtLjtJDz7dMV1Xw=aF$q^x~=-P^cPk8@jJZGXSxUy71?rO+(I{r1R3qJRB& z=~e6+INoHA_y3emfZlZd#N%pQHvZQ_-Eo{g&Lyyu876y>E3Fhh@pA-vqlyD-C{8>_ zOHUosO2|??QM&?fuB9iqv+yACU}JU?!Nj(%uQUpe*0rR4_q_j42~0?n-lR@>qjxfp zt?1n<(P!8xwdfa6V{?}O8`3fC$&q$%m{% zvZZ*wIyO~5_|krhAVF4H0ln$Tb$V)^_>?NW8HCD+p1_Wcfl^qE*aMMxmLMcq)E857 zR2O39vJl&5RnMrEFG8Kzgj6YXY&!HsX%U{vpX%2p_{9H_rlbqypcEHboZcj`5x=M| zi#jGlQ+b(wC2uxxZAi@v8&awI)w(A`%d{_2-(L`wA-hv)#;5FuKc(it*>5Tx@zw)+ zClh_AI5xM-!CwwZdc#3Ja@upAFM>oK-gr*+fl7+%ImL`MCR|hl$woq(*wo^+i%oq2 zLdjZ@g*Yg7dXvEt#7i|p+aj|dyBulIyBxBh4Sm;ES|&=hEs``VfTn)LOZ^Q!uRk7? zp8C&K+bO*>!lc$``gShK=K{xvTNo2=LYxIl5#nNKMB%9wdR637EkiaEe;4816ie{F zcPb5GYd30-2`BW#_nYYrLnKY_GRZ}`QJFgM--YKWVr@osjlOFy-ZWvuFDh5jeq?IY zlCqKKEqHQ<(x4RS9WwMrB_}LLJqXntdNYQpN6kd4vR{|fU{NeO06SAdy1c>w6eHH7+*+}t6eHMEe1#Z|M2RgO{cT#rK+z;lJ;;h&5(&qJW56h)bZ=kS_9 zr|R5_uSFE7u z7nMB1nJ5QP^ye6@9Xj;qN)XtH2Wv9Ffj%qo4Ar-Icf~5KvxB1l#vHgqLI16c2S)#` zWP+mqRxSp$T#EC}py63q_D0eHl z`c}{zK`Vc+DA&T@ybI4SAYM9uM(K5cuEfWy>D(LPa?lsRZvuT($=7>s6ZI(!dLh!a z+)nx+eNZ>bF$_xncHDmsC%b@B`wcN}Wf}%eM8A=J2fbUcQ`ZVQoAPxh;aq(Hw3p76 zP<9vU5z_D2jdnzO-i`GO(i5~B*m933&upe1&{5!5GNm)-S0JC3dllslq|**M75wfh zv;(ByT#fn&np}f58_*U|syFRS=}cvn-kliSOV3<=ln~fQdUhzyprb%dA@o}aX8}D0 z{Yv(J(JtFSsh(KssNNjbm4hx)KGfOj(SCnG`81;4fF>PKl$VuH6T+aKz{wB7F6bxA z{s8+SzTh8G|HvQb_ozH7K?ehe4k^k*u(Rt?v=gLneT@2#Jbf4F#o$9(lw*gI4T^cZ zKJ5wggT2H0a4VHlj?VTh>G`3q6|@5B*`7oF2Q@vfC{HUNCWJvlz)3Hl9)X5HJ3!4Z zQvZ8I7X)nrZhZ;m18V&%`fJcK(7U0hy^ZwkP?|t@pk1WBjQ0N{`Tg zrSi|}f& z{TBF5pqC(A(g!5hsq=td0@?;T_$P$#K)xVnI*fJ-s(grigW5r@l0Mt%9hu@)GL2aNG&=$~Vk#6}vMgP?d`Z@9+>Lxu=PX9tX zhdzey(H=lsKtDo#3;lp`7ua)D*tZ3g`ulFsLx{KOM^O&lpk=^zMW@_{a7LX@&5sB4 zUHE$vbZY)PnA#F`I6>h~DDS01`E}}&dJAmqqk|of=*mH<{|$puzhgI0_#?VjP&e#l z?yH0S?YaQy(+F?rr^EchuD9Y~dKKitpj}9}djOtG01cdo=W7(bVmt|L3DhtMZ40z% zuuj>J^K99t=+Ixmo}jznA3hCZDrngd%9CEP4%MmipJq_%U)w=5;U79v2fH58dCt-) zF95fXK%E0^JzJ-|h<>|rB$1?-VV{&u}_y0B|I=tGJl zp>hVsaPU1d$^NhtD2=zqS;!yy%ktTfny*7Y`AI_M z0%5;qP?~=k7wRy6AJKP#Qv0=7(Z@i(8?;L4&{ZzdDGk7$B}gAMv=nv(ZMWf!J?5#| z%XP{%z`-nx^`J?ssT@0$N>CH{=4{Hx5nVTE5%S@>kje$)(i*ZC#s|=OkaJy3a`}4m zB|7v!cAW<_8~)0rI*bz?x;D^nVXq`R>Jt1r98|6johOI#JXCQ6_Zpwo_ zAxF>IghA>38X?Sc>75)wPU{sbmaGVwt_GyJ!eVb==n+;#yNVn^C z&q`5vdd`UC=vf`2^sEh0dZvct=(!o9^lS|I({mbx>Dd#)^sEO_ddA{4Dxd!=9m)au z!c`WVJ@IU%xd;EgiMU^ZFujlF3UvSRZq|8$qCyjn&H8X0ZuaQZ3FgrzC!J@*>qTde zUb$jHO4?|X&yO=;j>3{+=j_p&oW9ZL%^BElmc!?B7UdLfG9iLu-|W$)-r^ZP9JwrV z_)?18x!w|ANxnZNx1?x>!&fw6L+WS~PLjFvoj(66ZEA?hWSZsomiqj3NQ+||ah%vD zk5I!Qq>s-7Glq}Xd08n^apu{)?hQB(Rp9hRm|C_t3XN=MIyX2A@vc__Hnqxuw-uYiu>H8c$82rmUvCCRh`yX{u?fX|L(13DmJ*l>^=59u05VTfj!~cuG;QeWv^kcaj$7_@?P`aw7r(S*1fj9*?aAKU3&w2%l4M< zt=L<+H@G)#zjc51e%JoM{__2m`$PMi_qXnE-yh!Jz28umRF_dNaX z>q2$Sb***nb>X`1IzxR@eR6$Ty|q5O-c=u{FR!nx57jrR$qi`@ z)`si`S3{toyrHro)X?0}+R)w*Zs=|>G$u7BH>NdO8?zf-je*AU#>&P}V{>C`V|!z` zvAfZLIXS&l2~#DdxwfUYwYClUQq(+|ksllK;z3R-kc+0hEqmMccI@ritL!uGGwn0) zv+T3&v+wilE8ADGFSxI1U(3F>eI5I{_9-D_$P_Y%EFoLS9`c0BLKUH4s43JEY72FQ zxI+kX3g&;GLg75jtxoA$TtZ`ZdwmN&Ar>?B7 zqApn1RM%41R@YJ2Rj1S&>rM6MdP}{n-d^viFRQPp57sx;x74@Qchq;)D-Fg5Q-is| z(qL<_H+UM#8Y&us4NVO#4Q&k_4N8Shu^_*m+Opb;+REBsZK$@XR^-0Dwxd>CvdJjb zXqk2$>^_KqLG+W1ui!EmrE*d0`=3{}Req$*QYa+SF%t;$kmtIDpjSGlS@Re`Fqs`9Fe zs>-ThRj8_|s=2DAs)@fN!6z6ayzc>Wb>h>R@%K+7nY7Lnz5+lw~VQvmNCbMu~Q#On<$eBppaTkaoa&Ap3yp zK;S_6fyx7+1I-6o540Z$ALu?{IGA)W`C!^X>%r`Uu7iPtl*0lcIMr*dB zCA-jy%lB073GHd#)4Hd9Pk2xF9z$(XZE|f|t+h70)>Rv*El2$bp>DL+wxeEj*BbUF zp{=K(PGqZXyd3R21Z%d!l3`fUurFy}^1ifv)_vLgT>Aq1%J)_73+-#(*SfELUwB{l zK0_!elpIP6Swq<&S11rF4^@Ujq2^F)s67-8b%zZ5llCX?Px}w)FO(L{!(sFPZSAwG zL1{ELni|cGmPT8nz0uQH)>zRPY;0<5X>4okXzXfK4j2!Z4ww&E4%iOZ4|oog9jG`E zJkWHYl!L~Dri12#mV>r~_Jf{-Wd|z`1`jqJY&qC=u;XACwc$40cY!Eq z!6vj`3tFxnt+os;Hi*{Rf|lBWR;r+dn$S9_ZQ9W;%g`o+Xpb#uiydf(3fiCv?azX? zXGgm$Lz@d$H&wS(w^eskcU3Dj#u`(NxyFK##*UGutfm6vOjAt@#+eR`F$%^P6UG+{ z#uhuqm9jk*dxCqK_O$G2+tab9YmZWEtTok|Yb~|5T6?WW?XiNj(7OX;7)T|0F3(>4 zFzK-)h^|rifN6 z?9>iRg<&hST{G@+5cjY3ce1yG@sM^`RT3=Xf-Rb11taor#~RcB6lWR^O>qBW-ZuQ? z-hIbzw{HLEKwTewaNF<%^ET7ZdYvxyMDxJjeeK(=SiMQq>v}2Xi+lGQ*ISpU+jg#A zml#}P&NQE<@j21lHv#t)iPict#he-!HqkU;$e-SCd;9f*A75@5eci~xXMC{prn_`Y zR<%B;%)Y1atJx0)xApnJye;8E^EUkl!34cduQ#69ywCEdQ*KOHmT~C9x4JB2%>8;B zpy^Aq6B825j@16GjuA|VzQmgG1JP0LI0a{Psp&1arAa8jyy%B1OL)vY;g z;N)q5X_F>Toj!H?8gpK(3a6P*5h|P@BOFgUOh}z&o*`12EEy(FY2joOJ!fFbau*b1 zVr-h9kzvZRrcX|rVwz;0lxoUIPc?5a8+-Rrv#r}qB0^OM@f9-!G_Vb)`8Vo zYj2*gbi z#d`JXgA(2#f9rIK>&!0mNQuq5?MW`b-!o(4#FAW}C#G1@fJ@0O>q>Ohfy4+MAS-ipWeL+ zwhquGm<_#q(~m@*wjL+A6th!r4m`T(R_A59wgszQ&J$ew-<@W7{EHu7yXhT^^SpsS z|Nh_;2XeR9T>1Qix2y?#)+eE$&lY{E^2xntec9)thAGda9eSwN_R`0HOS^K;ri#uz z7uD+rhWi{{wRg?+?>%6<|Glri&-dTcc51G9TjG_t61i~=XzYK%?ypwO8THViu?gOD zU(hP`UsSWHeN8f-i_Su}uSrt@C&~7;^`+E7=97B&=T2vqUYDS@_0!Emw4VAw{Z>1C zF0>ziNpb2K=F?&O#1jV$rrR|7y2Vm&0d5dCtIzzU4p!@PVy{8{(UeV7Qm31yPMsdx zjwwyVV2FwKB=d>n*=La9fyt27Nj&|&?Q34KkMHQa#dTZC(MN82dh2P=KX`M&j)`xF{!o4LkWrT( z>Ug2*_Dgp-JHFrM)0@jLy!?+JpLM|v=gtW2d_JQtC97teejIwv(J@W0$F>=5y6^m< z;lW!M-D|OwOw0IoS?wv6Gw!T4Poau?QeujETyTtRNrr?VtU6%G%B+;t=~>oAOBSwJ zx+Fzozu5NNr>y7pytSUlc}HNZW6tu=p?C+L>Gxx zTlmZPruwzUfu)#gB75YYsk;x-Dt1d0SF7CKu+w ze@!2wH~ylZi=EU2w_tdUPHP6Fl68heW<-4xQU_?*iRjp)!u?ZEfLWvX6!XMrz{J!M ziKbCw_g2p=y!-X9+ix4c`sj1B_CNTC@SOBp-+TAgh7*UMc~*_Nf22R?r6gL-3-rU4 zmRZ}s-f_#z6@ywbu08Fv`=4xibmX#o?-{o@Ywb_Z54-iPR*3xT3Ae*N{hl3nEql9j z$xnknS>t-6(fi)qX?;$3)OW}0t4vkfPMdAscG~oaZV3sx)NQAYf#0ZzhBVnb?NoT3 zjDGc(lf8|-`}3@@uMx97S7N?74+SS?gxh~C?4#>pk~jR>w7fGezG>&BPmEinU-;M+ z%|oBfw6uFa$ST-&VeRITwR+=~3+rt64zsPk;gdHPzIAWunxqrah$ovTr%p>XPn|S* z(wgA5L4C~IdbePx3dx~rvDYj`quPi0642 zMszd+%=jirhG_+@4?6Qq3#XWtXQfXuPoGBfuSrvqZ&zcrs9;QwPCz+>X zLMR8T$&*u4C#A~4YC)_LJYMu0WRPj4jx>)D$)7I0)I_idTI8YW-Xv2B$Ts~5ZT>Lt zPS~bD5%Y9?Km9h$z5e=H?Kv}^+5gr0M{az4;GOSOg$G~jpFH%OhPGiV&pdNl(V^e1 z9N_ro?!FsmpK_aF;`+QjKlZ-*)HiSWUD~iz{cS&Z@4J1*%7c?Xb6o%F-sE>GaxZ># zM^?v-l%3bjJ#fyR&PM`)KW#qs@TzB89?r{pWbCP**sPC~y9bm%^W~pACSEb~zUQ)T zv|N4WC(nBqC7+pDcILIKKDqYuuN;T!X7st@yZYjf^56UL;%_H@e&cJ4Z@tEKr0n^1 zn_hm!c*}w@f1h*CR}b!dG4oIPt&h~%(guFCbJrz9);#v@<(A@-Q$u&|zIEaDYd6gq zaB2R|q5Vewd3W6_yZ`XdrNx1#lFzFdcA~BKxepuOn!5L)Gv5wmpD{h$oq3D#wksDO ze(#CK+AF(LPCx6jaSM`ahI}{upWi;d^s)&%5>BeV;E~G5zF*pT`LuuZp4YkZ=V^cY zXiMrRUq7+@sgF;+e9e`$qkQkQth-})O72G&e!F;L#aW~O_)7iYkJ9q5TV`1QLsrK0 zw!H6G{k7wpejg7m$_qSF`Qxr9eZ#+=_{0R$n_C-R{j$$%haY|Gk_(Dcca6E>4kzpeeQfb@cA?4txd&~HvOglg;(GB%opE|-*Wj)&*$y<^1i2qG`5v zW^FK=$lsKRo1@62RFAGmz1b5@TRVe)_|&(G7GFEjH)g|~6H9llGu?boYl-F#Am{q` z+Z;!4P96OD?fqYzJ$BdN50>vXub~vqO3X4ZGcOG;4qmW*ksQm8Ifv$^xNr(LM9~hl z%`hWf9qG4L$T5-4)uef&@F^_5R59{v*Hz#3c$U3yxTg8;Hyh6y*8Evzde?U+l>N~8^9Oeu_x)XY zcSHZXqfB(7i{&Q|k z8&W=R@JIbFtX}`gh&l6yzjEHNmb*URV!glpcLQ!&IxBzI!Ata6f4}F$dpch|Yr8IQ zxAMfNYy71HXCK~F{@5_x?avN5yX?(rYu4U&>V3Hbo>^d-`O+m*U%PNl#+^wAo_zNC zCx5tW(Asqm{iWmUUQb^5!RVZE@25YT^{1bw7z@5TXHwick>s1^ip%e+=b!vX_swm{INQGyMM`qx6eFd=bF|t?|l7< zu4hJsmfrPf`>;EgJvH&p@7C@cefz_=O}KV-i~W$cs`4(+w& z;maOcviXj}Z^HMywx+W6-p6iyBwGd@%Bd_efRNQ?_N3ng`ZE$T&z^Lzo9#!`Gzk(?(nYMF@E$A$9Efb zJ28eGz!-KLk70eLo%_d;E4H*RZ1^!bf9$0f#Z?(|PVDgUf4-bCT%G!3a7&7gEY;#-Wqckk$b)!k>^bK>N)Y=ior zdv!>E#g7>eUi0=zU;6HQ;EQo(*IYj$>4U$&J^QKCuBsn0ZqD3y3vT+`ve{j4ta|N} z4zufFw}`-8VCu3Mm7{?5Gg9q(>gw|aBexts32q~ZDSHF*y% z|7yd+e>$!n^4{79SM(q5Dn57kBbJ7>_rHJs6)$}|{p5mwoKTxv*tz%VGhUoF@Z#4$ zK0Wk!p5L;s#ryQbOU}CQq3p$*etPp}-|rj7Pyevi`bJk%>Y)9r$J{o0!nfD$y?M!o zQ&yhisXXVZ;LwGpj3XJjWtW#0j~-P~IV0_)2fq96o{wi<^x4+;M+|;z+t|PS?y=ze zN9I)fzW?N`HHEvrT7K(E z=yh`&h5t`HPm@zFGG5v_*?= zFugK<_0&z{LSN6fA3FQS?0>%Nc>ni5O>gFKAF$jktktO?*5+Ne8 zh6oWO&U2KGt~#gAb*}6E|G9sE-Ouy6zn|}YJr;Txwli_f5zL1!gb8NXz!_Hev$E0n zSqeR}d29V9b69=3)}u&+j}bFNGC$%uVwG`@ky?xj5^VVX>6Ces1;AE$B(>xP=3yrU zoygoNU))}}%{Oz9Z>GPHPd_EoPIS%myv269n%n3P$=GR3l;iVxSy10I^XKx30r1*p z1;`jQVE>zh(b`@G5=QZVAk3D1QrNOjI$y{MIzvDuO({(wL~eV|ugLjrh~sYn{`({J z7P0(HqpIV`&UhkHklNq&WiL#7xPVKB^(1=-aQ0~x7p3vE`G}r4#U*TSj=250eN6|H zeoEb{sdvwq*@Ye_+*+`Jhyuc{oy?ZtTz6XkB9xf{o6T8CH16PVkE9k9d3wuUsVD5>bmLd(9+QOlQfhYeT^_#09=?)yK!OElp$HFA4!InJfF zsN6Hr!Cfx?IV+M?W(d1TA3W}H$jNm?nwjUlKzFkM)LLBn>5RpxrnpbAKa&-v=^89% zE^t>&H+Qt>Drj03`q;krYC4u}YhrTO@LUwLWGN~O=rexba@G88UNg#KOmPCy`YO(1 zASycW6*&g4dGpE>??!TAU5Nvi3Jq&yZ zpH9>Aef2|nv{Y?=ytkf2ufU3m_LV*gSm=&$k zji_&N;}m2Z^40g$u%3Zg)(M+7iWIOdB0Q1BS01S?Q-d+6gS(>3a{BVq38Y=`-P3S+JBvrzVyk zfOTb?G9a6r0Q7INNoRW%$R_1&ru?_`^Yvvsj{Fx`wz8K8p!
Hx?m@CJj@zblsi zNT(miIBp4cFn}@vV5PL17R;hlJI}-5*M$a44c-GxtI{zunozM!%kbb)BXjnwRGH9M zCgrB%q-L&L5V;=-e!_9v8w$=6Zg@FWa_?VaKj9-QU8*v-v>EvDQ~Jt++n{iT0Zr4X zXA*;J(#9RDODnm6Pf~c1MOVjj9b~c&Y&yX${aA5gYYHlBHx0X&D6(rJVA3>uzDjma z=G211;h7bhMqGBMzUD#2BM$b41!d{RQ8R>YwaLPP&%C`$UgymWBb?{bPphqC7%vCk zb#Cbwh*Y%V-9^(XP>_2r4WemXj~A>dGW}?T?hqw8VxBq+NiX@kItZZ!H`&SzrA7UF zRr}`2xP;Fao}1-zJvn*Ty_A}G*CfY6Y~*1)0!xDdD^WL4y8&K*i{%1!=}%nSjt)5O z+H-*Wn|%ZA=-%%%A*e^U%^V{gf(7h%cB(xv8Fm=U}HHvo2owEGuvf+s`dv9XH8 z_=?KtgsBZ)U-uteDwSAYa@k3CDJ%Ry?mngZPqUNh%Ap9z=o;hVOQVs*7C?FDbXkNL z00%(C&3l$)Zz*Qe}*R7+*y?Lc=p6LgAnxqMpkk@u@Jy5sNVs}yHwDq)N zV;o}AIzu|!eUE;uhcu_0E!#*r3)z3b^b|{LLmd6Wp8m-b%LUQv!WTJU<#lp~F#eu` zke(E3|=H0@J>&T8=21Qo55wv7a9T)wzi$MI?=DvvNtr&2Sl?z|I0 zi=9p!}nL2LOsrBcH7-%+IYeAiAU^g?AIsPcADo62od^>++=P}0^+PrRk#m^@ss0eE`apbqaRBGT#Z&bKv)eO9q!CYMfFcf=mO>d diff --git a/support/3rd_party/winfsp-2.0/bin/memfs-x64.exe b/support/3rd_party/winfsp-2.0/bin/memfs-x64.exe deleted file mode 100644 index 930f5aedcf35047485162ac1a3b7302c397a2b62..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 171296 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

yTmze^eYZKS12>3slhEj!=_=w&Y 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 z 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 diff --git a/support/3rd_party/winfsp-2.0/bin/memfs-x86.exe b/support/3rd_party/winfsp-2.0/bin/memfs-x86.exe deleted file mode 100644 index a9c1c99551d03263b523ad3841355e332949646b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 134944 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 e8Hv}w=9=_qX0&Pn`(SF{F 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 Q{$**|g^%;m4if4A0sSAuIsgCw diff --git a/support/3rd_party/winfsp-2.0/bin/winfsp-a64.dll b/support/3rd_party/winfsp-2.0/bin/winfsp-a64.dll deleted file mode 100644 index 43f11e9e2cfeab3a0b5dbb29bcfc4da403c0b175..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 206624 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 KrU!Q(kVO7g9vWi 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%0Dw6nDLubSk!ryrbu4au8|V!)g_g3OlFAJobm44 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

-*Dqm%ic2uN9jaochjjAkGqg+E&Vb7pW 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 I+DGL701+i1z5oCK diff --git a/support/3rd_party/winfsp-2.0/inc/winfsp/fsctl.h b/support/3rd_party/winfsp-2.0/inc/winfsp/fsctl.h deleted file mode 100644 index 1d8c1fcb..00000000 --- a/support/3rd_party/winfsp-2.0/inc/winfsp/fsctl.h +++ /dev/null @@ -1,839 +0,0 @@ -/** - * @file winfsp/fsctl.h - * - * @copyright 2015-2022 Bill Zissimopoulos - */ -/* - * This file is part of WinFsp. - * - * You can redistribute it and/or modify it under the terms of the GNU - * General Public License version 3 as published by the Free Software - * Foundation. - * - * Licensees holding a valid commercial license may use this software - * in accordance with the commercial license agreement provided in - * conjunction with the software. The terms and conditions of any such - * commercial license agreement shall govern, supersede, and render - * ineffective any application of the GPLv3 license to this software, - * notwithstanding of any reference thereto in the software or - * associated repository. - */ - -#ifndef WINFSP_FSCTL_H_INCLUDED -#define WINFSP_FSCTL_H_INCLUDED - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* static_assert is a C++11 feature, but seems to work with C on MSVC 2015 */ -#if defined(WINFSP_SYS_INTERNAL) || defined(WINFSP_DLL_INTERNAL) -#define FSP_FSCTL_STATIC_ASSERT(e, m) static_assert(e, m) -#else -#define FSP_FSCTL_STATIC_ASSERT(e, m) static_assert(1, "") -#endif - -#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 - -#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}}; -#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 - -/* locations */ -#define FSP_FSCTL_PRODUCT_REGKEY "Software\\" FSP_FSCTL_PRODUCT_NAME -#define FSP_FSCTL_PRODUCT_REGKEY_WOW64 KEY_WOW64_32KEY -#if defined(_ARM64_) -#define FSP_FSCTL_PRODUCT_FULL_REGKEY \ - "Software\\WOW6432Node\\" FSP_FSCTL_PRODUCT_NAME -#define FSP_FSCTL_PRODUCT_FILE_ARCH "a64" -#elif defined(_AMD64_) -#define FSP_FSCTL_PRODUCT_FULL_REGKEY \ - "Software\\WOW6432Node\\" FSP_FSCTL_PRODUCT_NAME -#define FSP_FSCTL_PRODUCT_FILE_ARCH "x64" -#elif defined(_X86_) -#define FSP_FSCTL_PRODUCT_FULL_REGKEY "Software\\" FSP_FSCTL_PRODUCT_NAME -#define FSP_FSCTL_PRODUCT_FILE_ARCH "x86" -#else -#error unknown architecture -#endif - -/* alignment macros */ -#define FSP_FSCTL_ALIGN_UP(x, s) (((x) + ((s)-1L)) & ~((s)-1L)) -#define FSP_FSCTL_DEFAULT_ALIGNMENT 8 -#define FSP_FSCTL_DEFAULT_ALIGN_UP(x) \ - FSP_FSCTL_ALIGN_UP(x, FSP_FSCTL_DEFAULT_ALIGNMENT) -#define FSP_FSCTL_DECLSPEC_ALIGN __declspec(align(FSP_FSCTL_DEFAULT_ALIGNMENT)) - -/* fsctl device codes */ -#define FSP_FSCTL_MOUNTDEV \ - CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 0x800 + 'M', METHOD_BUFFERED, \ - FILE_ANY_ACCESS) -#define FSP_FSCTL_MOUNTMGR \ - CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 0x800 + 'm', METHOD_BUFFERED, \ - FILE_ANY_ACCESS) -#define FSP_FSCTL_VOLUME_NAME \ - CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 0x800 + 'N', METHOD_BUFFERED, \ - FILE_ANY_ACCESS) -#define FSP_FSCTL_VOLUME_LIST \ - CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 0x800 + 'L', METHOD_BUFFERED, \ - FILE_ANY_ACCESS) -#define FSP_FSCTL_TRANSACT \ - CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 0x800 + 'T', METHOD_BUFFERED, \ - FILE_ANY_ACCESS) -#define FSP_IOCTL_TRANSACT \ - CTL_CODE(0x8000 | ('F' << 8) | 'W', 0x800 + 'T', METHOD_BUFFERED, \ - FILE_ANY_ACCESS) -#define FSP_FSCTL_TRANSACT_BATCH \ - CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 0x800 + 't', METHOD_OUT_DIRECT, \ - FILE_ANY_ACCESS) -#define FSP_IOCTL_TRANSACT_BATCH \ - CTL_CODE(0x8000 | ('F' << 8) | 'W', 0x800 + 't', METHOD_BUFFERED, \ - 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) -#define FSP_FSCTL_UNLOAD \ - CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 0x800 + 'U', METHOD_NEITHER, \ - FILE_ANY_ACCESS) - -/* fsctl internal device codes (usable only in-kernel) */ -#define FSP_FSCTL_TRANSACT_INTERNAL \ - CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 0x800 + 'I', METHOD_NEITHER, \ - FILE_ANY_ACCESS) -#define FSP_IOCTL_TRANSACT_INTERNAL \ - CTL_CODE(0x8000 | ('F' << 8) | 'W', 0x800 + 'I', METHOD_BUFFERED, \ - FILE_ANY_ACCESS) - -/* fsvol device codes */ -#define FSP_FSCTL_QUERY_WINFSP \ - CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 0x800 + '?', METHOD_BUFFERED, \ - FILE_ANY_ACCESS) - -#define FSP_FSCTL_VOLUME_PARAMS_PREFIX "\\VolumeParams=" - -#define FSP_FSCTL_VOLUME_NAME_SIZE (64 * sizeof(WCHAR)) -#define FSP_FSCTL_VOLUME_PREFIX_SIZE (192 * sizeof(WCHAR)) -#define FSP_FSCTL_VOLUME_FSNAME_SIZE (16 * sizeof(WCHAR)) -#define FSP_FSCTL_VOLUME_NAME_SIZEMAX \ - (FSP_FSCTL_VOLUME_NAME_SIZE + FSP_FSCTL_VOLUME_PREFIX_SIZE) -FSP_FSCTL_STATIC_ASSERT(FSP_FSCTL_VOLUME_NAME_SIZEMAX <= 260 * sizeof(WCHAR), - "Max volume name size is greater than MAX_PATH."); - -#define FSP_FSCTL_TRANSACT_PATH_SIZEMAX (1024 * sizeof(WCHAR)) - -#define FSP_FSCTL_TRANSACT_REQ_SIZEMAX \ - (16 * 1024 - 64) /* 64: size for internal request header */ -#define FSP_FSCTL_TRANSACT_RSP_SIZEMAX (16 * 1024) -#define FSP_FSCTL_TRANSACT_REQ_BUFFER_SIZEMAX \ - (FSP_FSCTL_TRANSACT_REQ_SIZEMAX - sizeof(FSP_FSCTL_TRANSACT_REQ)) -#define FSP_FSCTL_TRANSACT_RSP_BUFFER_SIZEMAX \ - (FSP_FSCTL_TRANSACT_RSP_SIZEMAX - sizeof(FSP_FSCTL_TRANSACT_RSP)) -#define FSP_FSCTL_TRANSACT_BATCH_BUFFER_SIZEMIN (64 * 1024) -#define FSP_FSCTL_TRANSACT_BUFFER_SIZEMIN FSP_FSCTL_TRANSACT_REQ_SIZEMAX - -#define FSP_FSCTL_TRANSACT_REQ_TOKEN_HANDLE(T) \ - ((HANDLE)((UINT_PTR)((T) & 0xffffffff))) -#define FSP_FSCTL_TRANSACT_REQ_TOKEN_PID(T) ((UINT32)(((T) >> 32) & 0xffffffff)) - -#define FSP_FSCTL_DEVICECONTROL_SIZEMAX \ - (4 * 1024) /* must be < FSP_FSCTL_TRANSACT_{REQ,RSP}_SIZEMAX */ - -/* marshalling */ -#pragma warning(push) -#pragma warning(disable : 4200 4201) /* zero-sized array in struct/union; \ - nameless struct/union */ -enum { - FspFsctlTransactReservedKind = 0, - FspFsctlTransactCreateKind, - FspFsctlTransactOverwriteKind, - FspFsctlTransactCleanupKind, - FspFsctlTransactCloseKind, - FspFsctlTransactReadKind, - FspFsctlTransactWriteKind, - FspFsctlTransactQueryInformationKind, - FspFsctlTransactSetInformationKind, - FspFsctlTransactQueryEaKind, - FspFsctlTransactSetEaKind, - FspFsctlTransactFlushBuffersKind, - FspFsctlTransactQueryVolumeInformationKind, - FspFsctlTransactSetVolumeInformationKind, - FspFsctlTransactQueryDirectoryKind, - FspFsctlTransactFileSystemControlKind, - FspFsctlTransactDeviceControlKind, - FspFsctlTransactShutdownKind, - FspFsctlTransactLockControlKind, - FspFsctlTransactQuerySecurityKind, - FspFsctlTransactSetSecurityKind, - FspFsctlTransactQueryStreamInformationKind, - FspFsctlTransactKindCount, -}; -enum { - FspFsctlTransactTimeoutMinimum = 1000, - FspFsctlTransactTimeoutMaximum = 10000, - FspFsctlTransactTimeoutDefault = - 1000, /* DEPRECATED: default is unspecified */ - FspFsctlIrpTimeoutMinimum = 60000, - FspFsctlIrpTimeoutMaximum = 600000, - FspFsctlIrpTimeoutDefault = 300000, - FspFsctlIrpTimeoutDebug = 142, /* special value for IRP timeout testing */ - FspFsctlIrpCapacityMinimum = 100, - FspFsctlIrpCapacityMaximum = 1000, - FspFsctlIrpCapacityDefault = 1000, -}; -#define FSP_FSCTL_VOLUME_PARAMS_V0_FIELD_DEFN \ - UINT16 Version; /* set to 0 or sizeof(FSP_FSCTL_VOLUME_PARAMS) */ \ - /* volume information */ \ - UINT16 SectorSize; \ - UINT16 SectorsPerAllocationUnit; \ - UINT16 MaxComponentLength; /* maximum file name component length (bytes) */ \ - UINT64 VolumeCreationTime; \ - UINT32 VolumeSerialNumber; \ - /* I/O timeouts, capacity, etc. */ \ - UINT32 TransactTimeout; /* DEPRECATED: (millis; 1 sec - 10 sec) */ \ - UINT32 IrpTimeout; /* pending IRP timeout (millis; 1 min - 10 min) */ \ - UINT32 IrpCapacity; /* maximum number of pending IRP's (100 - 1000)*/ \ - UINT32 FileInfoTimeout; /* FileInfo/Security/VolumeInfo timeout (millis) */ \ - /* FILE_FS_ATTRIBUTE_INFORMATION::FileSystemAttributes */ \ - UINT32 CaseSensitiveSearch : 1; /* file system supports case-sensitive file \ - names */ \ - UINT32 CasePreservedNames : 1; /* file system preserves the case of file \ - names */ \ - UINT32 UnicodeOnDisk : 1; /* file system supports Unicode in file names */ \ - UINT32 PersistentAcls : 1; /* file system preserves and enforces access \ - control lists */ \ - UINT32 ReparsePoints : 1; /* file system supports reparse points */ \ - UINT32 ReparsePointsAccessCheck : 1; /* file system performs reparse point \ - access checks */ \ - UINT32 NamedStreams : 1; /* file system supports named streams */ \ - UINT32 HardLinks : 1; /* unimplemented; set to 0 */ \ - UINT32 \ - ExtendedAttributes: \ - 1; /* file system supports extended attributes */ \ - UINT32 ReadOnlyVolume : 1; \ - /* kernel-mode flags */ \ - UINT32 PostCleanupWhenModifiedOnly : 1; /* post Cleanup when a file was \ - modified/deleted */ \ - UINT32 PassQueryDirectoryPattern : 1; /* pass Pattern during QueryDirectory \ - operations */ \ - UINT32 AlwaysUseDoubleBuffering : 1; \ - UINT32 \ - PassQueryDirectoryFileName: \ - 1; /* pass FileName during QueryDirectory \ - (GetDirInfoByName) */ \ - UINT32 FlushAndPurgeOnCleanup : 1; /* keeps file off "standby" list */ \ - UINT32 DeviceControl : 1; /* support user-mode ioctl handling */ \ - /* user-mode flags */ \ - UINT32 UmFileContextIsUserContext2 : 1; /* user mode: FileContext parameter \ - is UserContext2 */ \ - UINT32 UmFileContextIsFullContext : 1; /* user mode: FileContext parameter \ - is FullContext */ \ - UINT32 UmNoReparsePointsDirCheck : 1; /* user mode: no dir option check for \ - reparse points */ \ - UINT32 UmReservedFlags : 5; \ - /* additional kernel-mode flags */ \ - UINT32 AllowOpenInKernelMode : 1; /* allow kernel mode to open files when \ - possible */ \ - UINT32 CasePreservedExtendedAttributes : 1; /* preserve case of EA (default \ - is UPPERCASE) */ \ - UINT32 WslFeatures : 1; /* support features required for WSLinux */ \ - UINT32 DirectoryMarkerAsNextOffset : 1; /* directory marker is next offset \ - instead of last name */ \ - UINT32 RejectIrpPriorToTransact0 : 1; /* DEPRECATED: reject IRP's prior to \ - FspFsctlTransact0 */ \ - UINT32 SupportsPosixUnlinkRename : 1; /* file system supports POSIX-style \ - unlink and rename */ \ - UINT32 PostDispositionWhenNecessaryOnly : 1; /* post Disposition for dirs or \ - READONLY attr check */ \ - UINT32 KmReservedFlags : 1; \ - WCHAR Prefix[FSP_FSCTL_VOLUME_PREFIX_SIZE / \ - sizeof(WCHAR)]; /* UNC prefix (\Server\Share) */ \ - WCHAR FileSystemName[FSP_FSCTL_VOLUME_FSNAME_SIZE / sizeof(WCHAR)]; -#define FSP_FSCTL_VOLUME_PARAMS_V1_FIELD_DEFN \ - /* additional fields; specify .Version == sizeof(FSP_FSCTL_VOLUME_PARAMS) */ \ - UINT32 VolumeInfoTimeoutValid : 1; /* VolumeInfoTimeout field is valid */ \ - UINT32 DirInfoTimeoutValid : 1; /* DirInfoTimeout field is valid */ \ - UINT32 SecurityTimeoutValid : 1; /* SecurityTimeout field is valid*/ \ - UINT32 StreamInfoTimeoutValid : 1; /* StreamInfoTimeout field is valid */ \ - UINT32 EaTimeoutValid : 1; /* EaTimeout field is valid */ \ - UINT32 KmAdditionalReservedFlags : 27; \ - UINT32 VolumeInfoTimeout; /* volume info timeout (millis); overrides \ - FileInfoTimeout */ \ - UINT32 DirInfoTimeout; /* dir info timeout (millis); overrides \ - FileInfoTimeout */ \ - UINT32 SecurityTimeout; /* security info timeout (millis); overrides \ - FileInfoTimeout */ \ - UINT32 StreamInfoTimeout; /* stream info timeout (millis); overrides \ - FileInfoTimeout */ \ - UINT32 EaTimeout; /* EA timeout (millis); overrides FileInfoTimeout */ \ - UINT32 FsextControlCode; \ - UINT32 Reserved32[1]; \ - UINT64 Reserved64[2]; -typedef struct { - FSP_FSCTL_VOLUME_PARAMS_V0_FIELD_DEFN -} FSP_FSCTL_VOLUME_PARAMS_V0; -FSP_FSCTL_STATIC_ASSERT( - 456 == sizeof(FSP_FSCTL_VOLUME_PARAMS_V0), - "sizeof(FSP_FSCTL_VOLUME_PARAMS_V0) must be exactly 456."); -typedef struct { - FSP_FSCTL_VOLUME_PARAMS_V0_FIELD_DEFN - FSP_FSCTL_VOLUME_PARAMS_V1_FIELD_DEFN -} FSP_FSCTL_VOLUME_PARAMS; -FSP_FSCTL_STATIC_ASSERT(504 == sizeof(FSP_FSCTL_VOLUME_PARAMS), - "sizeof(FSP_FSCTL_VOLUME_PARAMS) is currently 504. " - "Update this assertion check if it changes."); -typedef struct { - UINT64 TotalSize; - UINT64 FreeSize; - UINT16 VolumeLabelLength; - WCHAR VolumeLabel[32]; -} FSP_FSCTL_VOLUME_INFO; -FSP_FSCTL_STATIC_ASSERT(88 == sizeof(FSP_FSCTL_VOLUME_INFO), - "sizeof(FSP_FSCTL_VOLUME_INFO) must be exactly 88."); -typedef struct { - UINT32 FileAttributes; - UINT32 ReparseTag; - UINT64 AllocationSize; - UINT64 FileSize; - UINT64 CreationTime; - UINT64 LastAccessTime; - UINT64 LastWriteTime; - UINT64 ChangeTime; - UINT64 IndexNumber; - UINT32 HardLinks; /* unimplemented: set to 0 */ - UINT32 EaSize; -} FSP_FSCTL_FILE_INFO; -FSP_FSCTL_STATIC_ASSERT(72 == sizeof(FSP_FSCTL_FILE_INFO), - "sizeof(FSP_FSCTL_FILE_INFO) must be exactly 72."); -typedef struct { - FSP_FSCTL_FILE_INFO FileInfo; - PWSTR NormalizedName; - UINT16 NormalizedNameSize; -} FSP_FSCTL_OPEN_FILE_INFO; -typedef struct { - UINT16 Size; - FSP_FSCTL_FILE_INFO FileInfo; - union { - UINT64 NextOffset; - UINT8 Padding[24]; - /* make struct as big as FILE_ID_BOTH_DIR_INFORMATION; allows for in-place - * copying */ - } DUMMYUNIONNAME; - WCHAR FileNameBuf[]; -} FSP_FSCTL_DIR_INFO; -FSP_FSCTL_STATIC_ASSERT(104 == sizeof(FSP_FSCTL_DIR_INFO), - "sizeof(FSP_FSCTL_DIR_INFO) must be exactly 104."); -typedef struct { - UINT16 Size; - UINT64 StreamSize; - UINT64 StreamAllocationSize; - WCHAR StreamNameBuf[]; -} FSP_FSCTL_STREAM_INFO; -FSP_FSCTL_STATIC_ASSERT(24 == sizeof(FSP_FSCTL_STREAM_INFO), - "sizeof(FSP_FSCTL_STREAM_INFO) must be exactly 24."); -typedef struct { - UINT16 Size; - UINT32 Filter; - UINT32 Action; - WCHAR FileNameBuf[]; -} FSP_FSCTL_NOTIFY_INFO; -FSP_FSCTL_STATIC_ASSERT(12 == sizeof(FSP_FSCTL_NOTIFY_INFO), - "sizeof(FSP_FSCTL_NOTIFY_INFO) must be exactly 12."); -typedef struct { - UINT64 UserContext; - UINT64 UserContext2; -} FSP_FSCTL_TRANSACT_FULL_CONTEXT; -typedef struct { - UINT16 Offset; - UINT16 Size; -} FSP_FSCTL_TRANSACT_BUF; -typedef struct { - UINT16 Version; - UINT16 Size; - UINT32 Kind; - UINT64 Hint; - union { - struct { - UINT32 CreateOptions; /* Disposition: high 8 bits; Options: low 24 bits */ - UINT32 FileAttributes; /* file attributes for new files */ - FSP_FSCTL_TRANSACT_BUF - SecurityDescriptor; /* security descriptor for new files */ - UINT64 AllocationSize; /* initial allocation size */ - UINT64 AccessToken; /* request access token (PID,HANDLE) */ - UINT32 DesiredAccess; /* FILE_{READ_DATA,WRITE_DATA,etc.} */ - UINT32 GrantedAccess; /* FILE_{READ_DATA,WRITE_DATA,etc.} */ - UINT32 ShareAccess; /* FILE_SHARE_{READ,WRITE,DELETE} */ - FSP_FSCTL_TRANSACT_BUF - Ea; /* extended attributes or reparse point buffer */ - UINT32 UserMode : 1; /* request originated in user mode */ - UINT32 HasTraversePrivilege : 1; /* requestor has - TOKEN_HAS_TRAVERSE_PRIVILEGE */ - UINT32 - HasBackupPrivilege : 1; /* requestor has TOKEN_HAS_BACKUP_PRIVILEGE */ - UINT32 HasRestorePrivilege : 1; /* requestor has - TOKEN_HAS_RESTORE_PRIVILEGE */ - UINT32 OpenTargetDirectory : 1; /* open target dir and report - FILE_{EXISTS,DOES_NOT_EXIST} */ - UINT32 - CaseSensitive : 1; /* FileName comparisons should be case-sensitive */ - UINT32 HasTrailingBackslash : 1; /* FileName had trailing backslash */ - UINT32 AcceptsSecurityDescriptor : 1; - UINT32 EaIsReparsePoint : 1; /* Ea buffer is reparse point */ - UINT32 ReservedFlags : 24; - UINT16 NamedStream; /* request targets named stream; colon offset in - FileName */ - } Create; - struct { - UINT64 UserContext; - UINT64 UserContext2; - UINT32 - FileAttributes; /* file attributes for overwritten/superseded files */ - UINT64 - AllocationSize; /* allocation size for overwritten/superseded files */ - UINT32 Supersede : 1; /* 0: FILE_OVERWRITE operation, 1: FILE_SUPERSEDE - operation */ - FSP_FSCTL_TRANSACT_BUF Ea; /* extended attributes buffer */ - } Overwrite; - struct { - UINT64 UserContext; - UINT64 UserContext2; - UINT32 Delete : 1; /* file must be deleted */ - UINT32 SetAllocationSize : 1; - UINT32 SetArchiveBit : 1; - UINT32 SetLastAccessTime : 1; - UINT32 SetLastWriteTime : 1; - UINT32 SetChangeTime : 1; - } Cleanup; - struct { - UINT64 UserContext; - UINT64 UserContext2; - } Close; - struct { - UINT64 UserContext; - UINT64 UserContext2; - UINT64 Address; - UINT64 Offset; - UINT32 Length; - UINT32 Key; - } Read; - struct { - UINT64 UserContext; - UINT64 UserContext2; - UINT64 Address; - UINT64 Offset; - UINT32 Length; - UINT32 Key; - UINT32 ConstrainedIo : 1; - } Write; - struct { - UINT64 UserContext; - UINT64 UserContext2; - } QueryInformation; - struct { - UINT64 UserContext; - UINT64 UserContext2; - UINT32 FileInformationClass; - union { - struct { - UINT64 AllocationSize; - } Allocation; - struct { - UINT32 FileAttributes; - UINT64 CreationTime; - UINT64 LastAccessTime; - UINT64 LastWriteTime; - UINT64 ChangeTime; - } Basic; - struct { - UINT32 Delete : 1; - } Disposition; - struct { - UINT32 Flags; - } DispositionEx; - struct { - UINT64 FileSize; - } EndOfFile; - struct { - FSP_FSCTL_TRANSACT_BUF NewFileName; - UINT64 AccessToken; /* request access token (PID,HANDLE) */ - } Rename; - struct { - FSP_FSCTL_TRANSACT_BUF NewFileName; - UINT64 AccessToken; /* request access token (PID,HANDLE) */ - UINT32 Flags; - } RenameEx; - } Info; - } SetInformation; - struct { - UINT64 UserContext; - UINT64 UserContext2; - } QueryEa; - struct { - UINT64 UserContext; - UINT64 UserContext2; - FSP_FSCTL_TRANSACT_BUF Ea; - } SetEa; - struct { - UINT64 UserContext; - UINT64 UserContext2; - } FlushBuffers; - struct { - UINT32 FsInformationClass; - union { - struct { - FSP_FSCTL_TRANSACT_BUF VolumeLabel; - } Label; - } Info; - } SetVolumeInformation; - struct { - UINT64 UserContext; - UINT64 UserContext2; - UINT64 Address; - UINT32 Length; - FSP_FSCTL_TRANSACT_BUF Pattern; - FSP_FSCTL_TRANSACT_BUF Marker; - UINT32 - CaseSensitive : 1; /* FileName comparisons should be case-sensitive */ - UINT32 PatternIsFileName : 1; /* Pattern does not contain wildcards */ - } QueryDirectory; - struct { - UINT64 UserContext; - UINT64 UserContext2; - UINT32 FsControlCode; - FSP_FSCTL_TRANSACT_BUF Buffer; - UINT16 TargetOnFileSystem; /* the target of the symbolic link is on this - file system */ - } FileSystemControl; - struct { - UINT64 UserContext; - UINT64 UserContext2; - UINT32 IoControlCode; - FSP_FSCTL_TRANSACT_BUF Buffer; - UINT32 OutputLength; - } DeviceControl; - struct { - UINT64 UserContext; - UINT64 UserContext2; - } QuerySecurity; - struct { - UINT64 UserContext; - UINT64 UserContext2; - UINT32 SecurityInformation; - FSP_FSCTL_TRANSACT_BUF SecurityDescriptor; - } SetSecurity; - struct { - UINT64 UserContext; - UINT64 UserContext2; - } QueryStreamInformation; - } Req; - FSP_FSCTL_TRANSACT_BUF FileName; - /* Create,Cleanup,SetInformation{Disposition,Rename},FileSystemControl{ReparsePoint} - */ - FSP_FSCTL_DECLSPEC_ALIGN UINT8 Buffer[]; -} FSP_FSCTL_TRANSACT_REQ; -typedef struct { - UINT16 Version; - UINT16 Size; - UINT32 Kind; - UINT64 Hint; - struct { - UINT32 Information; - UINT32 Status; - } IoStatus; - union { - union { - /* IoStatus.Status == STATUS_SUCCESS */ - struct { - UINT64 UserContext; /* user context associated with file node */ - UINT64 UserContext2; /* user context associated with file descriptor - (handle) */ - UINT32 GrantedAccess; /* FILE_{READ_DATA,WRITE_DATA,etc.} */ - FSP_FSCTL_TRANSACT_BUF SecurityDescriptor; - FSP_FSCTL_FILE_INFO FileInfo; - FSP_FSCTL_TRANSACT_BUF FileName; - UINT32 DisableCache : 1; - UINT32 HasSecurityDescriptor : 1; - } Opened; - /* IoStatus.Status == STATUS_REPARSE */ - struct { - FSP_FSCTL_TRANSACT_BUF Buffer; - } Reparse; - } Create; - struct { - FSP_FSCTL_FILE_INFO FileInfo; - } Overwrite; - struct { - FSP_FSCTL_FILE_INFO FileInfo; - } Write; - struct { - FSP_FSCTL_FILE_INFO FileInfo; - } QueryInformation; - struct { - FSP_FSCTL_FILE_INFO - FileInfo; /* valid: File{Allocation,Basic,EndOfFile}Information */ - } SetInformation; - struct { - FSP_FSCTL_TRANSACT_BUF Ea; - } QueryEa; - struct { - FSP_FSCTL_FILE_INFO FileInfo; - FSP_FSCTL_TRANSACT_BUF - Ea; /* Size==0 means no extended atttributed returned */ - } SetEa; - struct { - FSP_FSCTL_FILE_INFO FileInfo; /* valid when flushing file (not volume) */ - } FlushBuffers; - struct { - FSP_FSCTL_VOLUME_INFO VolumeInfo; - } QueryVolumeInformation; - struct { - FSP_FSCTL_VOLUME_INFO VolumeInfo; - } SetVolumeInformation; - struct { - FSP_FSCTL_TRANSACT_BUF Buffer; - } FileSystemControl; - struct { - FSP_FSCTL_TRANSACT_BUF Buffer; - } DeviceControl; - struct { - FSP_FSCTL_TRANSACT_BUF SecurityDescriptor; - } QuerySecurity; - struct { - FSP_FSCTL_TRANSACT_BUF SecurityDescriptor; /* Size==0 means no security - descriptor returned */ - } SetSecurity; - struct { - FSP_FSCTL_TRANSACT_BUF Buffer; - } QueryStreamInformation; - } Rsp; - FSP_FSCTL_DECLSPEC_ALIGN UINT8 Buffer[]; -} FSP_FSCTL_TRANSACT_RSP; -#pragma warning(pop) -FSP_FSCTL_STATIC_ASSERT(FSP_FSCTL_TRANSACT_RSP_BUFFER_SIZEMAX > - FSP_FSCTL_TRANSACT_PATH_SIZEMAX, - "FSP_FSCTL_TRANSACT_RSP_BUFFER_SIZEMAX must be greater " - "than FSP_FSCTL_TRANSACT_PATH_SIZEMAX " - "to detect when a normalized name has been set during " - "a Create/Open request."); -static inline BOOLEAN -FspFsctlTransactCanProduceRequest(FSP_FSCTL_TRANSACT_REQ *Request, - PVOID RequestBufEnd) { - return (PUINT8)Request + FSP_FSCTL_TRANSACT_REQ_SIZEMAX <= - (PUINT8)RequestBufEnd; -} -static inline FSP_FSCTL_TRANSACT_REQ * -FspFsctlTransactProduceRequest(FSP_FSCTL_TRANSACT_REQ *Request, - SIZE_T RequestSize) { - PVOID NextRequest = (PUINT8)Request + FSP_FSCTL_DEFAULT_ALIGN_UP(RequestSize); - return (FSP_FSCTL_TRANSACT_REQ *)NextRequest; -} -static inline FSP_FSCTL_TRANSACT_REQ * -FspFsctlTransactConsumeRequest(FSP_FSCTL_TRANSACT_REQ *Request, - PVOID RequestBufEnd) { - if ((PUINT8)Request + sizeof(Request->Size) > (PUINT8)RequestBufEnd || - sizeof(FSP_FSCTL_TRANSACT_REQ) > Request->Size) - return 0; - PVOID NextRequest = - (PUINT8)Request + FSP_FSCTL_DEFAULT_ALIGN_UP(Request->Size); - return NextRequest <= RequestBufEnd ? (FSP_FSCTL_TRANSACT_REQ *)NextRequest - : 0; -} -static inline BOOLEAN -FspFsctlTransactCanProduceResponse(FSP_FSCTL_TRANSACT_RSP *Response, - PVOID ResponseBufEnd) { - return (PUINT8)Response + FSP_FSCTL_TRANSACT_RSP_SIZEMAX <= - (PUINT8)ResponseBufEnd; -} -static inline FSP_FSCTL_TRANSACT_RSP * -FspFsctlTransactProduceResponse(FSP_FSCTL_TRANSACT_RSP *Response, - SIZE_T ResponseSize) { - PVOID NextResponse = - (PUINT8)Response + FSP_FSCTL_DEFAULT_ALIGN_UP(ResponseSize); - return (FSP_FSCTL_TRANSACT_RSP *)NextResponse; -} -static inline FSP_FSCTL_TRANSACT_RSP * -FspFsctlTransactConsumeResponse(FSP_FSCTL_TRANSACT_RSP *Response, - PVOID ResponseBufEnd) { - if ((PUINT8)Response + sizeof(Response->Size) > (PUINT8)ResponseBufEnd || - sizeof(FSP_FSCTL_TRANSACT_RSP) > Response->Size) - return 0; - PVOID NextResponse = - (PUINT8)Response + FSP_FSCTL_DEFAULT_ALIGN_UP(Response->Size); - return NextResponse <= ResponseBufEnd ? (FSP_FSCTL_TRANSACT_RSP *)NextResponse - : 0; -} - -#if !defined(_KERNEL_MODE) -FSP_API NTSTATUS FspFsctlCreateVolume( - PWSTR DevicePath, const FSP_FSCTL_VOLUME_PARAMS *VolumeParams, - PWCHAR VolumeNameBuf, SIZE_T VolumeNameSize, PHANDLE PVolumeHandle); -FSP_API NTSTATUS FspFsctlMakeMountdev(HANDLE VolumeHandle, BOOLEAN Persistent, - GUID *UniqueId); -FSP_API NTSTATUS FspFsctlUseMountmgr(HANDLE VolumeHandle, PWSTR MountPoint); -FSP_API NTSTATUS FspFsctlTransact(HANDLE VolumeHandle, PVOID ResponseBuf, - SIZE_T ResponseBufSize, 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, PWCHAR VolumeListBuf, - PSIZE_T PVolumeListSize); -FSP_API NTSTATUS FspFsctlPreflight(PWSTR DevicePath); -FSP_API NTSTATUS FspFsctlStartService(VOID); -FSP_API NTSTATUS FspFsctlStopService(VOID); -FSP_API NTSTATUS FspFsctlEnumServices(VOID (*EnumFn)(PVOID Context, - PWSTR ServiceName, - BOOLEAN Running), - PVOID Context); - -typedef struct { - /* in */ - HANDLE VolumeHandle; /* volume handle returned by FspFsctlCreateVolume */ - PWSTR VolumeName; /* volume name returned by FspFsctlCreateVolume */ - PSECURITY_DESCRIPTOR - Security; /* optional: security descriptor for directories */ - UINT64 Reserved; /* reserved for future use */ - /* in/out */ - PWSTR MountPoint; /* FspMountSet sets drive in buffer when passed "*:" */ - HANDLE MountHandle; /* FspMountSet sets, FspMountRemove uses */ -} FSP_MOUNT_DESC; -FSP_API NTSTATUS FspMountSet(FSP_MOUNT_DESC *Desc); -FSP_API NTSTATUS FspMountRemove(FSP_MOUNT_DESC *Desc); -#endif - -/* - * Atomics - * - * See https://www.cl.cam.ac.uk/~pes20/cpp/cpp0xmappings.html - * (https://archive.is/mJfFX) - */ -#if _MSC_VER >= 1920 /* VS2019 or later */ -__int32 __iso_volatile_load32(const volatile __int32 *); -void __iso_volatile_store32(volatile __int32 *, __int32); -__int64 __iso_volatile_load64(const volatile __int64 *); -void __iso_volatile_store64(volatile __int64 *, __int64); -#define FSP_INTERLOCKED__LOAD32(p) __iso_volatile_load32(p) -#define FSP_INTERLOCKED__STORE32(p, v) __iso_volatile_store32(p, v) -#define FSP_INTERLOCKED__LOAD64(p) __iso_volatile_load64(p) -#define FSP_INTERLOCKED__STORE64(p, v) __iso_volatile_store64(p, v) -#else -#define FSP_INTERLOCKED__LOAD32(p) (*(p)) -#define FSP_INTERLOCKED__STORE32(p, v) (*(p) = (v)) -#define FSP_INTERLOCKED__LOAD64(p) (*(p)) -#define FSP_INTERLOCKED__STORE64(p, v) (*(p) = (v)) -#endif -static inline INT32 FspInterlockedLoad32(INT32 volatile *p) { -#if defined(_M_ARM64) - void __dmb(unsigned int); - INT32 v = FSP_INTERLOCKED__LOAD32(p); - __dmb(0xb); - return v; - -#elif defined(_M_X64) || defined(_M_IX86) -#ifndef _ReadWriteBarrier - void _ReadWriteBarrier(void); -#endif - INT32 v = FSP_INTERLOCKED__LOAD32(p); - _ReadWriteBarrier(); - return v; - -#endif -} -static inline VOID FspInterlockedStore32(INT32 volatile *p, INT32 v) { -#if defined(_M_ARM64) - void __dmb(unsigned int); - __dmb(0xb); - FSP_INTERLOCKED__STORE32(p, v); - __dmb(0xb); - -#elif defined(_M_X64) || defined(_M_IX86) - long _InterlockedExchange(long volatile *, long); - _InterlockedExchange((long volatile *)p, v); - -#endif -} -static inline VOID *FspInterlockedLoadPointer(VOID *volatile *p) { -#if defined(_M_ARM64) - void __dmb(unsigned int); - VOID *v = (VOID *)FSP_INTERLOCKED__LOAD64((__int64 volatile *)(p)); - __dmb(0xb); - return v; - -#elif defined(_M_X64) -#ifndef _ReadWriteBarrier - void _ReadWriteBarrier(void); -#endif - VOID *v = (VOID *)FSP_INTERLOCKED__LOAD64((__int64 volatile *)(p)); - _ReadWriteBarrier(); - return v; - -#elif defined(_M_IX86) -#ifndef _ReadWriteBarrier - void _ReadWriteBarrier(void); -#endif - VOID *v = (VOID *)FSP_INTERLOCKED__LOAD32((__int32 volatile *)(p)); - _ReadWriteBarrier(); - return v; - -#endif -} -static inline VOID FspInterlockedStorePointer(VOID *volatile *p, VOID *v) { -#if defined(_M_ARM64) - void __dmb(unsigned int); - __dmb(0xb); - FSP_INTERLOCKED__STORE64((__int64 volatile *)(p), (__int64)(v)); - __dmb(0xb); - -#elif defined(_M_X64) || defined(_M_IX86) - void *_InterlockedExchangePointer(void *volatile *, void *); - _InterlockedExchangePointer(p, v); - -#endif -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/support/3rd_party/winfsp-2.0/inc/winfsp/winfsp.hpp b/support/3rd_party/winfsp-2.0/inc/winfsp/winfsp.hpp deleted file mode 100644 index eb17aee6..00000000 --- a/support/3rd_party/winfsp-2.0/inc/winfsp/winfsp.hpp +++ /dev/null @@ -1,902 +0,0 @@ -/** - * @file winfsp/winfsp.hpp - * WinFsp C++ Layer. - * - * @copyright 2015-2022 Bill Zissimopoulos - */ -/* - * This file is part of WinFsp. - * - * You can redistribute it and/or modify it under the terms of the GNU - * General Public License version 3 as published by the Free Software - * Foundation. - * - * Licensees holding a valid commercial license may use this software - * in accordance with the commercial license agreement provided in - * conjunction with the software. The terms and conditions of any such - * commercial license agreement shall govern, supersede, and render - * ineffective any application of the GPLv3 license to this software, - * notwithstanding of any reference thereto in the software or - * associated repository. - */ - -#ifndef WINFSP_WINFSP_HPP_INCLUDED -#define WINFSP_WINFSP_HPP_INCLUDED - -#ifndef __cplusplus -#error this header requires a C++ compiler -#endif - -#include - -#define FSP_CPP_EXCEPTION_GUARD(...) \ - try { \ - __VA_ARGS__ \ - } catch (...) { \ - return self->ExceptionHandler(); \ - } -#define FSP_CPP_EXCEPTION_GUARD_VOID(...) \ - try { \ - __VA_ARGS__ \ - } catch (...) { \ - self->ExceptionHandler(); \ - return; \ - } - -namespace Fsp { - -inline NTSTATUS Initialize() { - static NTSTATUS LoadResult = FspLoad(0); - return LoadResult; -} - -class FileSystemBase { -public: - typedef FSP_FSCTL_VOLUME_INFO VolumeInfo; - typedef FSP_FSCTL_FILE_INFO FileInfo; - typedef FSP_FSCTL_OPEN_FILE_INFO OpenFileInfo; - typedef FSP_FSCTL_DIR_INFO DirInfo; - typedef FSP_FSCTL_STREAM_INFO StreamInfo; - enum CleanupFlags { - CleanupDelete = FspCleanupDelete, - CleanupSetAllocationSize = FspCleanupSetAllocationSize, - CleanupSetArchiveBit = FspCleanupSetArchiveBit, - CleanupSetLastAccessTime = FspCleanupSetLastAccessTime, - CleanupSetLastWriteTime = FspCleanupSetLastWriteTime, - CleanupSetChangeTime = FspCleanupSetChangeTime, - }; - -public: - FileSystemBase() {} - virtual ~FileSystemBase() {} - - /* operations */ - virtual NTSTATUS ExceptionHandler() { return STATUS_UNEXPECTED_IO_ERROR; } - virtual NTSTATUS Init(PVOID Host) { return STATUS_SUCCESS; } - virtual NTSTATUS Mounted(PVOID Host) { return STATUS_SUCCESS; } - virtual VOID Unmounted(PVOID Host) {} - virtual NTSTATUS GetVolumeInfo(VolumeInfo *VolumeInfo) { - return STATUS_INVALID_DEVICE_REQUEST; - } - virtual NTSTATUS SetVolumeLabel_(PWSTR VolumeLabel, VolumeInfo *VolumeInfo) { - return STATUS_INVALID_DEVICE_REQUEST; - } - virtual NTSTATUS - GetSecurityByName(PWSTR FileName, - PUINT32 PFileAttributes /* or ReparsePointIndex */, - PSECURITY_DESCRIPTOR SecurityDescriptor, - SIZE_T *PSecurityDescriptorSize) { - return STATUS_INVALID_DEVICE_REQUEST; - } - virtual NTSTATUS Create(PWSTR FileName, UINT32 CreateOptions, - UINT32 GrantedAccess, UINT32 FileAttributes, - PSECURITY_DESCRIPTOR SecurityDescriptor, - UINT64 AllocationSize, PVOID *PFileNode, - PVOID *PFileDesc, OpenFileInfo *OpenFileInfo) { - return STATUS_INVALID_DEVICE_REQUEST; - } - virtual NTSTATUS Open(PWSTR FileName, UINT32 CreateOptions, - UINT32 GrantedAccess, PVOID *PFileNode, - PVOID *PFileDesc, OpenFileInfo *OpenFileInfo) { - return STATUS_INVALID_DEVICE_REQUEST; - } - virtual NTSTATUS Overwrite(PVOID FileNode, PVOID FileDesc, - UINT32 FileAttributes, - BOOLEAN ReplaceFileAttributes, - UINT64 AllocationSize, FileInfo *FileInfo) { - return STATUS_INVALID_DEVICE_REQUEST; - } - virtual VOID Cleanup(PVOID FileNode, PVOID FileDesc, PWSTR FileName, - ULONG Flags) {} - virtual VOID Close(PVOID FileNode, PVOID FileDesc) {} - virtual NTSTATUS Read(PVOID FileNode, PVOID FileDesc, PVOID Buffer, - UINT64 Offset, ULONG Length, PULONG PBytesTransferred) { - return STATUS_INVALID_DEVICE_REQUEST; - } - virtual NTSTATUS Write(PVOID FileNode, PVOID FileDesc, PVOID Buffer, - UINT64 Offset, ULONG Length, BOOLEAN WriteToEndOfFile, - BOOLEAN ConstrainedIo, PULONG PBytesTransferred, - FileInfo *FileInfo) { - return STATUS_INVALID_DEVICE_REQUEST; - } - virtual NTSTATUS Flush(PVOID FileNode, PVOID FileDesc, FileInfo *FileInfo) { - return STATUS_INVALID_DEVICE_REQUEST; - } - virtual NTSTATUS GetFileInfo(PVOID FileNode, PVOID FileDesc, - FileInfo *FileInfo) { - return STATUS_INVALID_DEVICE_REQUEST; - } - virtual NTSTATUS SetBasicInfo(PVOID FileNode, PVOID FileDesc, - UINT32 FileAttributes, UINT64 CreationTime, - UINT64 LastAccessTime, UINT64 LastWriteTime, - UINT64 ChangeTime, FileInfo *FileInfo) { - return STATUS_INVALID_DEVICE_REQUEST; - } - virtual NTSTATUS SetFileSize(PVOID FileNode, PVOID FileDesc, UINT64 NewSize, - BOOLEAN SetAllocationSize, FileInfo *FileInfo) { - return STATUS_INVALID_DEVICE_REQUEST; - } - virtual NTSTATUS CanDelete(PVOID FileNode, PVOID FileDesc, PWSTR FileName) { - return STATUS_INVALID_DEVICE_REQUEST; - } - virtual NTSTATUS Rename(PVOID FileNode, PVOID FileDesc, PWSTR FileName, - PWSTR NewFileName, BOOLEAN ReplaceIfExists) { - return STATUS_INVALID_DEVICE_REQUEST; - } - virtual NTSTATUS GetSecurity(PVOID FileNode, PVOID FileDesc, - PSECURITY_DESCRIPTOR SecurityDescriptor, - SIZE_T *PSecurityDescriptorSize) { - return STATUS_INVALID_DEVICE_REQUEST; - } - virtual NTSTATUS SetSecurity(PVOID FileNode, PVOID FileDesc, - SECURITY_INFORMATION SecurityInformation, - PSECURITY_DESCRIPTOR ModificationDescriptor) { - return STATUS_INVALID_DEVICE_REQUEST; - } - virtual NTSTATUS ReadDirectory(PVOID FileNode, PVOID FileDesc, PWSTR Pattern, - PWSTR Marker, PVOID Buffer, ULONG Length, - PULONG PBytesTransferred) { - return SeekableReadDirectory(FileNode, FileDesc, Pattern, Marker, Buffer, - Length, PBytesTransferred); - } - virtual NTSTATUS ReadDirectoryEntry(PVOID FileNode, PVOID FileDesc, - PWSTR Pattern, PWSTR Marker, - PVOID *PContext, DirInfo *DirInfo) { - return STATUS_INVALID_DEVICE_REQUEST; - } - virtual NTSTATUS ResolveReparsePoints(PWSTR FileName, - UINT32 ReparsePointIndex, - BOOLEAN ResolveLastPathComponent, - PIO_STATUS_BLOCK PIoStatus, - PVOID Buffer, PSIZE_T PSize) { - return FspFileSystemResolveReparsePoints( - 0, GetReparsePointByName, this, FileName, ReparsePointIndex, - ResolveLastPathComponent, PIoStatus, Buffer, PSize); - } - virtual NTSTATUS GetReparsePointByName(PWSTR FileName, BOOLEAN IsDirectory, - PVOID Buffer, PSIZE_T PSize) { - return STATUS_INVALID_DEVICE_REQUEST; - } - virtual NTSTATUS GetReparsePoint(PVOID FileNode, PVOID FileDesc, - PWSTR FileName, PVOID Buffer, - PSIZE_T PSize) { - return STATUS_INVALID_DEVICE_REQUEST; - } - virtual NTSTATUS SetReparsePoint(PVOID FileNode, PVOID FileDesc, - PWSTR FileName, PVOID Buffer, SIZE_T Size) { - return STATUS_INVALID_DEVICE_REQUEST; - } - virtual NTSTATUS DeleteReparsePoint(PVOID FileNode, PVOID FileDesc, - PWSTR FileName, PVOID Buffer, - SIZE_T Size) { - return STATUS_INVALID_DEVICE_REQUEST; - } - virtual NTSTATUS GetStreamInfo(PVOID FileNode, PVOID FileDesc, PVOID Buffer, - ULONG Length, PULONG PBytesTransferred) { - return STATUS_INVALID_DEVICE_REQUEST; - } - - /* helpers */ - static NTSTATUS NtStatusFromWin32(DWORD Error) { - return FspNtStatusFromWin32(Error); - } - static DWORD Win32FromNtStatus(NTSTATUS Status) { - return FspWin32FromNtStatus(Status); - } - static VOID DeleteDirectoryBuffer(PVOID *PDirBuffer) { - FspFileSystemDeleteDirectoryBuffer(PDirBuffer); - } - NTSTATUS SeekableReadDirectory(PVOID FileNode, PVOID FileDesc, PWSTR Pattern, - PWSTR Marker, PVOID Buffer, ULONG Length, - PULONG PBytesTransferred) { - PVOID Context = 0; - union { - UINT8 B[FIELD_OFFSET(FileSystemBase::DirInfo, FileNameBuf) + - MAX_PATH * sizeof(WCHAR)]; - FileSystemBase::DirInfo D; - } DirInfoBuf; - FileSystemBase::DirInfo *DirInfo = &DirInfoBuf.D; - NTSTATUS Result = STATUS_SUCCESS; - *PBytesTransferred = 0; - for (;;) { - Result = ReadDirectoryEntry(FileNode, FileDesc, Pattern, Marker, &Context, - DirInfo); - if (STATUS_NO_MORE_FILES == Result) { - Result = STATUS_SUCCESS; - break; - } - if (!NT_SUCCESS(Result)) - break; - if (!FspFileSystemAddDirInfo(DirInfo, Buffer, Length, PBytesTransferred)) - break; - } - if (!NT_SUCCESS(Result)) - return Result; - return STATUS_SUCCESS; - } - NTSTATUS BufferedReadDirectory(PVOID *PDirBuffer, PVOID FileNode, - PVOID FileDesc, PWSTR Pattern, PWSTR Marker, - PVOID Buffer, ULONG Length, - PULONG PBytesTransferred) { - PVOID Context = 0; - union { - UINT8 B[FIELD_OFFSET(FileSystemBase::DirInfo, FileNameBuf) + - MAX_PATH * sizeof(WCHAR)]; - FileSystemBase::DirInfo D; - } DirInfoBuf; - FileSystemBase::DirInfo *DirInfo = &DirInfoBuf.D; - NTSTATUS Result = STATUS_SUCCESS; - *PBytesTransferred = 0; - if (FspFileSystemAcquireDirectoryBuffer(PDirBuffer, 0 == Marker, &Result)) { - try { - for (;;) { - Result = ReadDirectoryEntry(FileNode, FileDesc, Pattern, Marker, - &Context, DirInfo); - if (STATUS_NO_MORE_FILES == Result) { - Result = STATUS_SUCCESS; - break; - } - if (!NT_SUCCESS(Result)) - break; - if (!FspFileSystemFillDirectoryBuffer(PDirBuffer, DirInfo, &Result)) - break; - } - } catch (...) { - FspFileSystemReleaseDirectoryBuffer(PDirBuffer); - throw; - } - FspFileSystemReleaseDirectoryBuffer(PDirBuffer); - } - if (!NT_SUCCESS(Result)) - return Result; - FspFileSystemReadDirectoryBuffer(PDirBuffer, Marker, Buffer, Length, - PBytesTransferred); - return STATUS_SUCCESS; - } - BOOLEAN FindReparsePoint(PWSTR FileName, PUINT32 PReparsePointIndex) { - return FspFileSystemFindReparsePoint(0, GetReparsePointByName, this, - FileName, PReparsePointIndex); - } - static NTSTATUS CanReplaceReparsePoint(PVOID CurrentReparseData, - SIZE_T CurrentReparseDataSize, - PVOID ReplaceReparseData, - SIZE_T ReplaceReparseDataSize) { - return FspFileSystemCanReplaceReparsePoint( - CurrentReparseData, CurrentReparseDataSize, ReplaceReparseData, - ReplaceReparseDataSize); - } - static BOOLEAN AddStreamInfo(StreamInfo *StreamInfo, PVOID Buffer, - ULONG Length, PULONG PBytesTransferred) { - return FspFileSystemAddStreamInfo(StreamInfo, Buffer, Length, - PBytesTransferred); - } - -private: - static NTSTATUS GetReparsePointByName(FSP_FILE_SYSTEM *FileSystem, - PVOID Context, PWSTR FileName, - BOOLEAN IsDirectory, PVOID Buffer, - PSIZE_T PSize) { - FileSystemBase *self = (FileSystemBase *)Context; - FSP_CPP_EXCEPTION_GUARD(return self->GetReparsePointByName( - FileName, IsDirectory, Buffer, PSize);) - } - -private: - /* disallow copy and assignment */ - FileSystemBase(const FileSystemBase &); - FileSystemBase &operator=(const FileSystemBase &); -}; - -class FileSystemHost { -public: - /* ctor/dtor */ - FileSystemHost(FileSystemBase &FileSystem) - : _VolumeParams(), _FileSystemPtr(0), _FileSystem(&FileSystem) { - Initialize(); - _VolumeParams.UmFileContextIsFullContext = 1; - } - virtual ~FileSystemHost() { - if (0 != _FileSystemPtr) - FspFileSystemDelete(_FileSystemPtr); - } - - /* properties */ - UINT16 SectorSize() { return _VolumeParams.SectorSize; } - VOID SetSectorSize(UINT16 SectorSize) { - _VolumeParams.SectorSize = SectorSize; - } - UINT16 SectorsPerAllocationUnit() { - return _VolumeParams.SectorsPerAllocationUnit; - } - VOID SetSectorsPerAllocationUnit(UINT16 SectorsPerAllocationUnit) { - _VolumeParams.SectorsPerAllocationUnit = SectorsPerAllocationUnit; - } - UINT16 MaxComponentLength() { return _VolumeParams.MaxComponentLength; } - VOID SetMaxComponentLength(UINT16 MaxComponentLength) { - _VolumeParams.MaxComponentLength = MaxComponentLength; - } - UINT64 VolumeCreationTime() { return _VolumeParams.VolumeCreationTime; } - VOID SetVolumeCreationTime(UINT64 VolumeCreationTime) { - _VolumeParams.VolumeCreationTime = VolumeCreationTime; - } - UINT32 VolumeSerialNumber() { return _VolumeParams.VolumeSerialNumber; } - VOID SetVolumeSerialNumber(UINT32 VolumeSerialNumber) { - _VolumeParams.VolumeSerialNumber = VolumeSerialNumber; - } - UINT32 FileInfoTimeout() { return _VolumeParams.FileInfoTimeout; } - VOID SetFileInfoTimeout(UINT32 FileInfoTimeout) { - _VolumeParams.FileInfoTimeout = FileInfoTimeout; - } - BOOLEAN CaseSensitiveSearch() { return _VolumeParams.CaseSensitiveSearch; } - VOID SetCaseSensitiveSearch(BOOLEAN CaseSensitiveSearch) { - _VolumeParams.CaseSensitiveSearch = !!CaseSensitiveSearch; - } - BOOLEAN CasePreservedNames() { return _VolumeParams.CasePreservedNames; } - VOID SetCasePreservedNames(BOOLEAN CasePreservedNames) { - _VolumeParams.CasePreservedNames = !!CasePreservedNames; - } - BOOLEAN UnicodeOnDisk() { return _VolumeParams.UnicodeOnDisk; } - VOID SetUnicodeOnDisk(BOOLEAN UnicodeOnDisk) { - _VolumeParams.UnicodeOnDisk = !!UnicodeOnDisk; - } - BOOLEAN PersistentAcls() { return _VolumeParams.PersistentAcls; } - VOID SetPersistentAcls(BOOLEAN PersistentAcls) { - _VolumeParams.PersistentAcls = !!PersistentAcls; - } - BOOLEAN ReparsePoints() { return _VolumeParams.ReparsePoints; } - VOID SetReparsePoints(BOOLEAN ReparsePoints) { - _VolumeParams.ReparsePoints = !!ReparsePoints; - } - BOOLEAN ReparsePointsAccessCheck() { - return _VolumeParams.ReparsePointsAccessCheck; - } - VOID SetReparsePointsAccessCheck(BOOLEAN ReparsePointsAccessCheck) { - _VolumeParams.ReparsePointsAccessCheck = !!ReparsePointsAccessCheck; - } - BOOLEAN NamedStreams() { return _VolumeParams.NamedStreams; } - VOID SetNamedStreams(BOOLEAN NamedStreams) { - _VolumeParams.NamedStreams = !!NamedStreams; - } - BOOLEAN PostCleanupWhenModifiedOnly() { - return _VolumeParams.PostCleanupWhenModifiedOnly; - } - VOID SetPostCleanupWhenModifiedOnly(BOOLEAN PostCleanupWhenModifiedOnly) { - _VolumeParams.PostCleanupWhenModifiedOnly = !!PostCleanupWhenModifiedOnly; - } - BOOLEAN PassQueryDirectoryPattern() { - return _VolumeParams.PassQueryDirectoryPattern; - } - VOID SetPassQueryDirectoryPattern(BOOLEAN PassQueryDirectoryPattern) { - _VolumeParams.PassQueryDirectoryPattern = !!PassQueryDirectoryPattern; - } - BOOLEAN FlushAndPurgeOnCleanup() { - return _VolumeParams.FlushAndPurgeOnCleanup; - } - VOID SetFlushAndPurgeOnCleanup(BOOLEAN FlushAndPurgeOnCleanup) { - _VolumeParams.FlushAndPurgeOnCleanup = !!FlushAndPurgeOnCleanup; - } - PWSTR Prefix() { return _VolumeParams.Prefix; } - VOID SetPrefix(PWSTR Prefix) { - int Size = lstrlenW(Prefix) * sizeof(WCHAR); - if (Size > sizeof _VolumeParams.Prefix - sizeof(WCHAR)) - Size = sizeof _VolumeParams.Prefix - sizeof(WCHAR); - RtlCopyMemory(_VolumeParams.Prefix, Prefix, Size); - _VolumeParams.Prefix[Size / sizeof(WCHAR)] = L'\0'; - } - PWSTR FileSystemName() { return _VolumeParams.FileSystemName; } - VOID SetFileSystemName(PWSTR FileSystemName) { - int Size = lstrlenW(FileSystemName) * sizeof(WCHAR); - if (Size > sizeof _VolumeParams.FileSystemName - sizeof(WCHAR)) - Size = sizeof _VolumeParams.FileSystemName - sizeof(WCHAR); - RtlCopyMemory(_VolumeParams.FileSystemName, FileSystemName, Size); - _VolumeParams.FileSystemName[Size / sizeof(WCHAR)] = L'\0'; - } - - /* control */ - NTSTATUS Preflight(PWSTR MountPoint) { - return FspFileSystemPreflight((PWSTR)(_VolumeParams.Prefix[0] - ? L"" FSP_FSCTL_NET_DEVICE_NAME - : L"" FSP_FSCTL_DISK_DEVICE_NAME), - MountPoint); - } - NTSTATUS Mount(PWSTR MountPoint, PSECURITY_DESCRIPTOR SecurityDescriptor = 0, - BOOLEAN Synchronized = FALSE, UINT32 DebugLog = 0) { - NTSTATUS Result; - try { - Result = _FileSystem->Init(this); - } catch (...) { - Result = _FileSystem->ExceptionHandler(); - } - if (!NT_SUCCESS(Result)) - return Result; - Result = FspFileSystemCreate((PWSTR)(_VolumeParams.Prefix[0] - ? L"" FSP_FSCTL_NET_DEVICE_NAME - : L"" FSP_FSCTL_DISK_DEVICE_NAME), - &_VolumeParams, Interface(), &_FileSystemPtr); - if (!NT_SUCCESS(Result)) - return Result; - _FileSystemPtr->UserContext = _FileSystem; - FspFileSystemSetOperationGuardStrategy( - _FileSystemPtr, Synchronized - ? FSP_FILE_SYSTEM_OPERATION_GUARD_STRATEGY_COARSE - : FSP_FILE_SYSTEM_OPERATION_GUARD_STRATEGY_FINE); - FspFileSystemSetDebugLog(_FileSystemPtr, DebugLog); - Result = FspFileSystemSetMountPointEx(_FileSystemPtr, MountPoint, - SecurityDescriptor); - if (NT_SUCCESS(Result)) { - try { - Result = _FileSystem->Mounted(this); - } catch (...) { - Result = _FileSystem->ExceptionHandler(); - } - if (NT_SUCCESS(Result)) { - Result = FspFileSystemStartDispatcher(_FileSystemPtr, 0); - if (!NT_SUCCESS(Result)) - try { - _FileSystem->Unmounted(this); - } catch (...) { - _FileSystem->ExceptionHandler(); - } - } - } - if (!NT_SUCCESS(Result)) { - FspFileSystemDelete(_FileSystemPtr); - _FileSystemPtr = 0; - } - return Result; - } - VOID Unmount() { - FspFileSystemStopDispatcher(_FileSystemPtr); - try { - _FileSystem->Unmounted(this); - } catch (...) { - _FileSystem->ExceptionHandler(); - } - _FileSystemPtr->UserContext = 0; - FspFileSystemDelete(_FileSystemPtr); - _FileSystemPtr = 0; - } - PWSTR MountPoint() { - return 0 != _FileSystemPtr ? FspFileSystemMountPoint(_FileSystemPtr) : 0; - } - FSP_FILE_SYSTEM *FileSystemHandle() { return _FileSystemPtr; } - FileSystemBase &FileSystem() { return *_FileSystem; } - static NTSTATUS SetDebugLogFile(PWSTR FileName) { - HANDLE Handle; - if ('-' == FileName[0] && '\0' == FileName[1]) - Handle = GetStdHandle(STD_ERROR_HANDLE); - else - Handle = CreateFileW(FileName, FILE_APPEND_DATA, - FILE_SHARE_READ | FILE_SHARE_WRITE, 0, OPEN_ALWAYS, - FILE_ATTRIBUTE_NORMAL, 0); - if (INVALID_HANDLE_VALUE == Handle) - return FspNtStatusFromWin32(GetLastError()); - FspDebugLogSetHandle(Handle); - return STATUS_SUCCESS; - } - -private: - /* FSP_FILE_SYSTEM_INTERFACE */ - static NTSTATUS GetVolumeInfo(FSP_FILE_SYSTEM *FileSystem0, - FSP_FSCTL_VOLUME_INFO *VolumeInfo) { - FileSystemBase *self = (FileSystemBase *)FileSystem0->UserContext; - FSP_CPP_EXCEPTION_GUARD(return self->GetVolumeInfo(VolumeInfo);) - } - static NTSTATUS SetVolumeLabel_(FSP_FILE_SYSTEM *FileSystem0, - PWSTR VolumeLabel, - FSP_FSCTL_VOLUME_INFO *VolumeInfo) { - FileSystemBase *self = (FileSystemBase *)FileSystem0->UserContext; - FSP_CPP_EXCEPTION_GUARD( - return self->SetVolumeLabel_(VolumeLabel, VolumeInfo);) - } - static NTSTATUS - GetSecurityByName(FSP_FILE_SYSTEM *FileSystem0, PWSTR FileName, - PUINT32 PFileAttributes /* or ReparsePointIndex */, - PSECURITY_DESCRIPTOR SecurityDescriptor, - SIZE_T *PSecurityDescriptorSize) { - FileSystemBase *self = (FileSystemBase *)FileSystem0->UserContext; - FSP_CPP_EXCEPTION_GUARD(return self->GetSecurityByName( - FileName, PFileAttributes, SecurityDescriptor, - PSecurityDescriptorSize);) - } - static NTSTATUS Create(FSP_FILE_SYSTEM *FileSystem0, PWSTR FileName, - UINT32 CreateOptions, UINT32 GrantedAccess, - UINT32 FileAttributes, - PSECURITY_DESCRIPTOR SecurityDescriptor, - UINT64 AllocationSize, PVOID *FullContext, - FSP_FSCTL_FILE_INFO *FileInfo) { - FileSystemBase *self = (FileSystemBase *)FileSystem0->UserContext; - PVOID FileNode, FileDesc; - NTSTATUS Result; - FSP_CPP_EXCEPTION_GUARD( - Result = - self->Create(FileName, CreateOptions, GrantedAccess, FileAttributes, - SecurityDescriptor, AllocationSize, &FileNode, - &FileDesc, FspFileSystemGetOpenFileInfo(FileInfo));) - ((FSP_FSCTL_TRANSACT_FULL_CONTEXT *)FullContext)->UserContext = - (UINT64)(UINT_PTR)FileNode; - ((FSP_FSCTL_TRANSACT_FULL_CONTEXT *)FullContext)->UserContext2 = - (UINT64)(UINT_PTR)FileDesc; - return Result; - } - static NTSTATUS Open(FSP_FILE_SYSTEM *FileSystem0, PWSTR FileName, - UINT32 CreateOptions, UINT32 GrantedAccess, - PVOID *FullContext, FSP_FSCTL_FILE_INFO *FileInfo) { - FileSystemBase *self = (FileSystemBase *)FileSystem0->UserContext; - PVOID FileNode, FileDesc; - NTSTATUS Result; - FSP_CPP_EXCEPTION_GUARD( - Result = self->Open(FileName, CreateOptions, GrantedAccess, &FileNode, - &FileDesc, FspFileSystemGetOpenFileInfo(FileInfo));) - ((FSP_FSCTL_TRANSACT_FULL_CONTEXT *)FullContext)->UserContext = - (UINT64)(UINT_PTR)FileNode; - ((FSP_FSCTL_TRANSACT_FULL_CONTEXT *)FullContext)->UserContext2 = - (UINT64)(UINT_PTR)FileDesc; - return Result; - } - static NTSTATUS Overwrite(FSP_FILE_SYSTEM *FileSystem0, PVOID FullContext, - UINT32 FileAttributes, - BOOLEAN ReplaceFileAttributes, - UINT64 AllocationSize, - FSP_FSCTL_FILE_INFO *FileInfo) { - FileSystemBase *self = (FileSystemBase *)FileSystem0->UserContext; - FSP_CPP_EXCEPTION_GUARD(return self->Overwrite( - (PVOID)(UINT_PTR)((FSP_FSCTL_TRANSACT_FULL_CONTEXT *)FullContext) - ->UserContext, - (PVOID)(UINT_PTR)((FSP_FSCTL_TRANSACT_FULL_CONTEXT *)FullContext) - ->UserContext2, - FileAttributes, ReplaceFileAttributes, AllocationSize, FileInfo);) - } - static VOID Cleanup(FSP_FILE_SYSTEM *FileSystem0, PVOID FullContext, - PWSTR FileName, ULONG Flags) { - FileSystemBase *self = (FileSystemBase *)FileSystem0->UserContext; - FSP_CPP_EXCEPTION_GUARD_VOID(return self->Cleanup( - (PVOID)(UINT_PTR)((FSP_FSCTL_TRANSACT_FULL_CONTEXT *)FullContext) - ->UserContext, - (PVOID)(UINT_PTR)((FSP_FSCTL_TRANSACT_FULL_CONTEXT *)FullContext) - ->UserContext2, - FileName, Flags);) - } - static VOID Close(FSP_FILE_SYSTEM *FileSystem0, PVOID FullContext) { - FileSystemBase *self = (FileSystemBase *)FileSystem0->UserContext; - FSP_CPP_EXCEPTION_GUARD_VOID(return self->Close( - (PVOID)(UINT_PTR)((FSP_FSCTL_TRANSACT_FULL_CONTEXT *)FullContext) - ->UserContext, - (PVOID)(UINT_PTR)((FSP_FSCTL_TRANSACT_FULL_CONTEXT *)FullContext) - ->UserContext2);) - } - static NTSTATUS Read(FSP_FILE_SYSTEM *FileSystem0, PVOID FullContext, - PVOID Buffer, UINT64 Offset, ULONG Length, - PULONG PBytesTransferred) { - FileSystemBase *self = (FileSystemBase *)FileSystem0->UserContext; - FSP_CPP_EXCEPTION_GUARD(return self->Read( - (PVOID)(UINT_PTR)((FSP_FSCTL_TRANSACT_FULL_CONTEXT *)FullContext) - ->UserContext, - (PVOID)(UINT_PTR)((FSP_FSCTL_TRANSACT_FULL_CONTEXT *)FullContext) - ->UserContext2, - Buffer, Offset, Length, PBytesTransferred);) - } - static NTSTATUS Write(FSP_FILE_SYSTEM *FileSystem0, PVOID FullContext, - PVOID Buffer, UINT64 Offset, ULONG Length, - BOOLEAN WriteToEndOfFile, BOOLEAN ConstrainedIo, - PULONG PBytesTransferred, - FSP_FSCTL_FILE_INFO *FileInfo) { - FileSystemBase *self = (FileSystemBase *)FileSystem0->UserContext; - FSP_CPP_EXCEPTION_GUARD(return self->Write( - (PVOID)(UINT_PTR)((FSP_FSCTL_TRANSACT_FULL_CONTEXT *)FullContext) - ->UserContext, - (PVOID)(UINT_PTR)((FSP_FSCTL_TRANSACT_FULL_CONTEXT *)FullContext) - ->UserContext2, - Buffer, Offset, Length, WriteToEndOfFile, ConstrainedIo, - PBytesTransferred, FileInfo);) - } - static NTSTATUS Flush(FSP_FILE_SYSTEM *FileSystem0, PVOID FullContext, - FSP_FSCTL_FILE_INFO *FileInfo) { - FileSystemBase *self = (FileSystemBase *)FileSystem0->UserContext; - FSP_CPP_EXCEPTION_GUARD(return self->Flush( - (PVOID)(UINT_PTR)((FSP_FSCTL_TRANSACT_FULL_CONTEXT *)FullContext) - ->UserContext, - (PVOID)(UINT_PTR)((FSP_FSCTL_TRANSACT_FULL_CONTEXT *)FullContext) - ->UserContext2, - FileInfo);) - } - static NTSTATUS GetFileInfo(FSP_FILE_SYSTEM *FileSystem0, PVOID FullContext, - FSP_FSCTL_FILE_INFO *FileInfo) { - FileSystemBase *self = (FileSystemBase *)FileSystem0->UserContext; - FSP_CPP_EXCEPTION_GUARD(return self->GetFileInfo( - (PVOID)(UINT_PTR)((FSP_FSCTL_TRANSACT_FULL_CONTEXT *)FullContext) - ->UserContext, - (PVOID)(UINT_PTR)((FSP_FSCTL_TRANSACT_FULL_CONTEXT *)FullContext) - ->UserContext2, - FileInfo);) - } - static NTSTATUS SetBasicInfo(FSP_FILE_SYSTEM *FileSystem0, PVOID FullContext, - UINT32 FileAttributes, UINT64 CreationTime, - UINT64 LastAccessTime, UINT64 LastWriteTime, - UINT64 ChangeTime, - FSP_FSCTL_FILE_INFO *FileInfo) { - FileSystemBase *self = (FileSystemBase *)FileSystem0->UserContext; - FSP_CPP_EXCEPTION_GUARD(return self->SetBasicInfo( - (PVOID)(UINT_PTR)((FSP_FSCTL_TRANSACT_FULL_CONTEXT *)FullContext) - ->UserContext, - (PVOID)(UINT_PTR)((FSP_FSCTL_TRANSACT_FULL_CONTEXT *)FullContext) - ->UserContext2, - FileAttributes, CreationTime, LastAccessTime, LastWriteTime, ChangeTime, - FileInfo);) - } - static NTSTATUS SetFileSize(FSP_FILE_SYSTEM *FileSystem0, PVOID FullContext, - UINT64 NewSize, BOOLEAN SetAllocationSize, - FSP_FSCTL_FILE_INFO *FileInfo) { - FileSystemBase *self = (FileSystemBase *)FileSystem0->UserContext; - FSP_CPP_EXCEPTION_GUARD(return self->SetFileSize( - (PVOID)(UINT_PTR)((FSP_FSCTL_TRANSACT_FULL_CONTEXT *)FullContext) - ->UserContext, - (PVOID)(UINT_PTR)((FSP_FSCTL_TRANSACT_FULL_CONTEXT *)FullContext) - ->UserContext2, - NewSize, SetAllocationSize, FileInfo);) - } - static NTSTATUS CanDelete(FSP_FILE_SYSTEM *FileSystem0, PVOID FullContext, - PWSTR FileName) { - FileSystemBase *self = (FileSystemBase *)FileSystem0->UserContext; - FSP_CPP_EXCEPTION_GUARD(return self->CanDelete( - (PVOID)(UINT_PTR)((FSP_FSCTL_TRANSACT_FULL_CONTEXT *)FullContext) - ->UserContext, - (PVOID)(UINT_PTR)((FSP_FSCTL_TRANSACT_FULL_CONTEXT *)FullContext) - ->UserContext2, - FileName);) - } - static NTSTATUS Rename(FSP_FILE_SYSTEM *FileSystem0, PVOID FullContext, - PWSTR FileName, PWSTR NewFileName, - BOOLEAN ReplaceIfExists) { - FileSystemBase *self = (FileSystemBase *)FileSystem0->UserContext; - FSP_CPP_EXCEPTION_GUARD(return self->Rename( - (PVOID)(UINT_PTR)((FSP_FSCTL_TRANSACT_FULL_CONTEXT *)FullContext) - ->UserContext, - (PVOID)(UINT_PTR)((FSP_FSCTL_TRANSACT_FULL_CONTEXT *)FullContext) - ->UserContext2, - FileName, NewFileName, ReplaceIfExists);) - } - static NTSTATUS GetSecurity(FSP_FILE_SYSTEM *FileSystem0, PVOID FullContext, - PSECURITY_DESCRIPTOR SecurityDescriptor, - SIZE_T *PSecurityDescriptorSize) { - FileSystemBase *self = (FileSystemBase *)FileSystem0->UserContext; - FSP_CPP_EXCEPTION_GUARD(return self->GetSecurity( - (PVOID)(UINT_PTR)((FSP_FSCTL_TRANSACT_FULL_CONTEXT *)FullContext) - ->UserContext, - (PVOID)(UINT_PTR)((FSP_FSCTL_TRANSACT_FULL_CONTEXT *)FullContext) - ->UserContext2, - SecurityDescriptor, PSecurityDescriptorSize);) - } - static NTSTATUS SetSecurity(FSP_FILE_SYSTEM *FileSystem0, PVOID FullContext, - SECURITY_INFORMATION SecurityInformation, - PSECURITY_DESCRIPTOR ModificationDescriptor) { - FileSystemBase *self = (FileSystemBase *)FileSystem0->UserContext; - FSP_CPP_EXCEPTION_GUARD(return self->SetSecurity( - (PVOID)(UINT_PTR)((FSP_FSCTL_TRANSACT_FULL_CONTEXT *)FullContext) - ->UserContext, - (PVOID)(UINT_PTR)((FSP_FSCTL_TRANSACT_FULL_CONTEXT *)FullContext) - ->UserContext2, - SecurityInformation, ModificationDescriptor);) - } - static NTSTATUS ReadDirectory(FSP_FILE_SYSTEM *FileSystem0, PVOID FullContext, - PWSTR Pattern, PWSTR Marker, PVOID Buffer, - ULONG Length, PULONG PBytesTransferred) { - FileSystemBase *self = (FileSystemBase *)FileSystem0->UserContext; - FSP_CPP_EXCEPTION_GUARD(return self->ReadDirectory( - (PVOID)(UINT_PTR)((FSP_FSCTL_TRANSACT_FULL_CONTEXT *)FullContext) - ->UserContext, - (PVOID)(UINT_PTR)((FSP_FSCTL_TRANSACT_FULL_CONTEXT *)FullContext) - ->UserContext2, - Pattern, Marker, Buffer, Length, PBytesTransferred);) - } - static NTSTATUS ResolveReparsePoints(FSP_FILE_SYSTEM *FileSystem0, - PWSTR FileName, UINT32 ReparsePointIndex, - BOOLEAN ResolveLastPathComponent, - PIO_STATUS_BLOCK PIoStatus, PVOID Buffer, - PSIZE_T PSize) { - FileSystemBase *self = (FileSystemBase *)FileSystem0->UserContext; - FSP_CPP_EXCEPTION_GUARD(return self->ResolveReparsePoints( - FileName, ReparsePointIndex, ResolveLastPathComponent, PIoStatus, - Buffer, PSize);) - } - static NTSTATUS GetReparsePoint(FSP_FILE_SYSTEM *FileSystem0, - PVOID FullContext, PWSTR FileName, - PVOID Buffer, PSIZE_T PSize) { - FileSystemBase *self = (FileSystemBase *)FileSystem0->UserContext; - FSP_CPP_EXCEPTION_GUARD(return self->GetReparsePoint( - (PVOID)(UINT_PTR)((FSP_FSCTL_TRANSACT_FULL_CONTEXT *)FullContext) - ->UserContext, - (PVOID)(UINT_PTR)((FSP_FSCTL_TRANSACT_FULL_CONTEXT *)FullContext) - ->UserContext2, - FileName, Buffer, PSize);) - } - static NTSTATUS SetReparsePoint(FSP_FILE_SYSTEM *FileSystem0, - PVOID FullContext, PWSTR FileName, - PVOID Buffer, SIZE_T Size) { - FileSystemBase *self = (FileSystemBase *)FileSystem0->UserContext; - FSP_CPP_EXCEPTION_GUARD(return self->SetReparsePoint( - (PVOID)(UINT_PTR)((FSP_FSCTL_TRANSACT_FULL_CONTEXT *)FullContext) - ->UserContext, - (PVOID)(UINT_PTR)((FSP_FSCTL_TRANSACT_FULL_CONTEXT *)FullContext) - ->UserContext2, - FileName, Buffer, Size);) - } - static NTSTATUS DeleteReparsePoint(FSP_FILE_SYSTEM *FileSystem0, - PVOID FullContext, PWSTR FileName, - PVOID Buffer, SIZE_T Size) { - FileSystemBase *self = (FileSystemBase *)FileSystem0->UserContext; - FSP_CPP_EXCEPTION_GUARD(return self->DeleteReparsePoint( - (PVOID)(UINT_PTR)((FSP_FSCTL_TRANSACT_FULL_CONTEXT *)FullContext) - ->UserContext, - (PVOID)(UINT_PTR)((FSP_FSCTL_TRANSACT_FULL_CONTEXT *)FullContext) - ->UserContext2, - FileName, Buffer, Size);) - } - static NTSTATUS GetStreamInfo(FSP_FILE_SYSTEM *FileSystem0, PVOID FullContext, - PVOID Buffer, ULONG Length, - PULONG PBytesTransferred) { - FileSystemBase *self = (FileSystemBase *)FileSystem0->UserContext; - FSP_CPP_EXCEPTION_GUARD(return self->GetStreamInfo( - (PVOID)(UINT_PTR)((FSP_FSCTL_TRANSACT_FULL_CONTEXT *)FullContext) - ->UserContext, - (PVOID)(UINT_PTR)((FSP_FSCTL_TRANSACT_FULL_CONTEXT *)FullContext) - ->UserContext2, - Buffer, Length, PBytesTransferred);) - } - static FSP_FILE_SYSTEM_INTERFACE *Interface() { - static FSP_FILE_SYSTEM_INTERFACE _Interface = { - GetVolumeInfo, - SetVolumeLabel_, - GetSecurityByName, - Create, - Open, - Overwrite, - Cleanup, - Close, - Read, - Write, - Flush, - GetFileInfo, - SetBasicInfo, - SetFileSize, - CanDelete, - Rename, - GetSecurity, - SetSecurity, - ReadDirectory, - ResolveReparsePoints, - GetReparsePoint, - SetReparsePoint, - DeleteReparsePoint, - GetStreamInfo, - }; - return &_Interface; - } - -private: - /* disallow copy and assignment */ - FileSystemHost(const FileSystemHost &); - FileSystemHost &operator=(const FileSystemHost &); - -private: - FSP_FSCTL_VOLUME_PARAMS _VolumeParams; - FSP_FILE_SYSTEM *_FileSystemPtr; - FileSystemBase *_FileSystem; -}; - -class Service { -public: - /* ctor/dtor */ - Service(PWSTR ServiceName) : _Service(0) { - Initialize(); - FspServiceCreate(ServiceName, OnStart, OnStop, 0, &_Service); - if (0 != _Service) - _Service->UserContext = this; - } - virtual ~Service() { - if (0 != _Service) - FspServiceDelete(_Service); - } - - /* control */ - ULONG Run() { - if (0 == _Service) { - FspServiceLog(EVENTLOG_ERROR_TYPE, - L"The service cannot be created (Status=%lx).", - STATUS_INSUFFICIENT_RESOURCES); - return FspWin32FromNtStatus(STATUS_INSUFFICIENT_RESOURCES); - } - FspServiceAllowConsoleMode(_Service); - NTSTATUS Result = FspServiceLoop(_Service); - ULONG ExitCode = FspServiceGetExitCode(_Service); - if (!NT_SUCCESS(Result)) { - FspServiceLog(EVENTLOG_ERROR_TYPE, - L"The service has failed to run (Status=%lx).", Result); - return FspWin32FromNtStatus(Result); - } - return ExitCode; - } - VOID Stop() { - if (0 == _Service) - return; - FspServiceStop(_Service); - } - VOID RequestTime(ULONG Time) { - if (0 == _Service) - return; - FspServiceRequestTime(_Service, Time); - } - ULONG GetExitCode() { - return 0 != _Service ? FspServiceGetExitCode(_Service) - : ERROR_NO_SYSTEM_RESOURCES; - } - VOID SetExitCode(ULONG ExitCode) { - if (0 == _Service) - return; - FspServiceSetExitCode(_Service, ExitCode); - } - FSP_SERVICE *ServiceHandle() { return _Service; } - static VOID Log(ULONG Type, PWSTR Format, ...) { - va_list ap; - va_start(ap, Format); - FspServiceLogV(Type, Format, ap); - va_end(ap); - } - static VOID LogV(ULONG Type, PWSTR Format, va_list ap) { - FspServiceLogV(Type, Format, ap); - } - -protected: - /* start/stop */ - virtual NTSTATUS ExceptionHandler() { - return 0xE06D7363 /*STATUS_CPP_EH_EXCEPTION*/; - } - virtual NTSTATUS OnStart(ULONG Argc, PWSTR *Argv) { return STATUS_SUCCESS; } - virtual NTSTATUS OnStop() { return STATUS_SUCCESS; } - -private: - /* callbacks */ - static NTSTATUS OnStart(FSP_SERVICE *Service0, ULONG Argc, PWSTR *Argv) { - Service *self = (Service *)Service0->UserContext; - FSP_CPP_EXCEPTION_GUARD(return self->OnStart(Argc, Argv);) - } - static NTSTATUS OnStop(FSP_SERVICE *Service0) { - Service *self = (Service *)Service0->UserContext; - FSP_CPP_EXCEPTION_GUARD(return self->OnStop();) - } - -private: - /* disallow copy and assignment */ - Service(const Service &); - Service &operator=(const Service &); - -private: - FSP_SERVICE *_Service; -}; - -} // namespace Fsp - -#undef FSP_CPP_EXCEPTION_GUARD -#undef FSP_CPP_EXCEPTION_GUARD_VOID - -#endif diff --git a/support/3rd_party/winfsp-2.0/lib/winfsp-a64.lib b/support/3rd_party/winfsp-2.0/lib/winfsp-a64.lib deleted file mode 100644 index 06bc179fd3d29af8b35340e47b7ede6b69b69851..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54816 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 diff --git a/support/3rd_party/winfsp-2.0/lib/winfsp-x64.lib b/support/3rd_party/winfsp-2.0/lib/winfsp-x64.lib deleted file mode 100644 index 004d6402badb34355401397324b126a6c5cac6d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54816 zcmeHwcbHT~*7pHLR`hjUbrlhJ$DB#S47#FA7L?>LV0>+cnFd;Bx|{BvA*hIoVHGhU zAgCx}LInc~A|e7JVTd9q2qL0l!muv7>IdIBRk!Y~s(Wq+di>*io{#4_+^MQl^{a5| zR6cz|+pHv*`)24L{10M}j(Fk}M2uwNwo zt2=<8TKpo7h)POM2OvtFE-85~x{(sdL-bOGq**5e5Ir|u(k%QEy;$F&@9~TD(nd+o z9gTcQFD4{Cp8^nc5Pp$fSRrXRuE=Q?yDevy`7 zxQ2?R^>m@D0x+Hr0b4iPvVK~y# zt`051FVcbmlHNQD^G9^Eq<7W=2wny>hCg zm$AHp5cg%I*DjPa8}ml=#ym-{A|BEFGbOFWyb`V1E~)l<06~Z17ilGym1xBRNo!Kb zhqR(Z((+vZM5~rLbPaxymSZ|ZYcLI>+HWMSZVf=Rq0}MF%Lb(7he>+xBLG3y;uq=t zu98+y!+1#V&z7`)901X}7LwL31Rz@XjHLBgUqowrOIrUsx{==KAZhk)tQVrul3v9; z6V0oY^g5P_XznP7uny-E{VM78IEEw5!L}fpccr9B6##-Z;}_{6#3!2gy+epM5oz*t zhp;XtBR#ZK(!>KX9BIOxlBOI1APD13K^nSK(z959MA6G7Rqg>Gnt=R7@d8P)nE-;? z;TLIWjimT^3`dG?kTkSD`Xk-fOw#yy07MT|O1l470HXV_4T$a^D`|Xp_$C=l$t4NOag%D zHmnb#TQDxsjWZ;To(w>A^UacO$F?OJ^NXZge*_@91ti@z5Ys`rrAE?CO#p~)-y!MN zQOJ)pYN10H;}_}XMv`u9jkriRO^`Gi%S3cXKS|d`0f_EeA!%$U0HTqVlJ1@lKs4?( zhl=rwblp#qhL6PhLAoAgP7uoG^+-2taOi6MB8|j4BDxD@j_96w4qb>}q&v}%=x&q+ zqOnUQ4I6{{pXhK&cWlIbBhA3JCYth%q=)+h5IxdX(!;CKjr7z^hcL~jke>Km(v!;o zh@Sae($h@=h@LEw^h_N6k)FO&(i2#pg0S75K$^b8A#CgENY8+zXKPXZk!GALscIX5 zpn>>BdSr&AM<)OXIvKx6QzuJ$d@KObV@)JYI~0IuDwdxpfn_9mY`Ub!8zVo`v`Ivv zP`4hvdzF-iI(6>Tv7}q?(q1K@VUg&-Wc-}r#jPO}>e;t@cRvr@=rKu_(yo1bUJ~lm zzO+4bNyfWGD#Lw7Bvaw4PT|UMD%>fO2$!c~i4h&D2M!D;Fx^O1Jd_2a!BP?~tH>fH zj?GG^GF+C-CQ~Jtdxq0U4a-`YMXoqDBc1l;L#wfxvPdd`GmF$Z59g|$PY-!9#m+V1 zXsUZ`P(LrC=cR@FgB_oN$#`gBbuwHSs*YC0s-r3J`$%!{{B1tzwz(?8$y6dXLQ7Bi z*qqVuFpY~`3`eN2g~>!7HeYOP zES^eg7;LbeM!YPM3)*z8RozbhIi>H!b;jOMG?h%1rK*#m zfr(gE2zy^N=BhU~(2B3Ce>F^pbWe+4st*l9C>TpGhp1PQR#3Tg+*Vq$8|yrFI&OO^ zCgowJq)!7vT8~oEBFPZ-D;#g|CFhO-p$=X`!5n zO4kP+!$afK6*$RBNcYhAJk>2a7|uPEf>*Unk#&_VQqw)O)JzpldGl#-Lu^D^j2w9x zmbr4|NkdYyL!74EC?6S9NRJlJ(epA;IjnFmP_F|eR3gvHp~Y0nT9+(QccxVNy|gqu z6)jLar^XYYlSPDpFfBHxltol7K#S)oXIXw%cWXS1CKb$#zaC5Kud0g5NK_65IJFS- zSjS7_Rh>&Ds~lRmH{hB*j4EAqCJ|RTw7A&qLsey|ayh9XE#NpUp0bJx5g1OEm&Kh) zjqtDo_;^ydD0PQlmof4lmGPSURIisXflkmKIHb2)%+}O0yJ2ahs7tV z-%C(B9Ui5t%pu>?;g-J@OLaI`!zmAj&r6e-R4plduWPtzd0tj(rZ~C$rneQxYkrsC z^I~}I#y4Wwfx+>;LNgMg%5F&s@6BLnl3`>|^JiiyAu*yTPln%-9z9pmt4lK8y{tM~ zKDZ=2s0#{tNw_?gsBjuKAW-+dD4Yt6;)Urk`lN~Bg}E^>k)CB$;qH-S%FdM@r1N*f zr8>hayj{LNxTv$4grCNND>Qv`Mpjgxl=L?F{7E4f?bXOg9m^^!Ul4UFT~&;T8;Z+9J372c)OJP+0akp=o8WUr-CI`V6D1ERy=>jiLKl(R#|N;7r||YsTe)=C6nc;oKyz2M``-$E~emA z{{p)-Q5H>>mD>eyy%k^IWLR|QszF+x6e;K-in~YI5XoK zWp13okB@D#Sn)fBNgsB^P5VTwl8rDPSc@EkI40 zwpCb8D>Z?YWqJX;R*Hzq_uF1H39CX`L-bsj61B4Ir|Sgv(0E0r#l z)ycu~yq4|Xz2XLk75g%r$Z1m+Pj-66Wst>RLMI(;K1GPd-LW#JPl)u?Wsr|w9Ef(XHa;i zmcXH=x-u1*f{)Kg38!D3d>o7{9Du_5~q?TE>~mv002<2%$_L-)1r5iGl)XOm)S(e>#>AzAC-xjT&95~M zD>kl%v_K~BV(&s@G2+Y30@aI0`@g8y1xF_3vaRn$LHV;0JGKQUIZ7(2{Dl5 z3Wno$LJV$i>B!Wn7l?5#i$n`sb;0wzo++$rJlyjj{6WaC*eHr%@c8{f$ln{!_dCX_ z2GFj&n-|^F;pu}{x+2=WB4Tm;91hC1&EfbVhqK-`?-=Qx29K8&kA+&taXFny?8^99 zjX*C>w`4aOP;nKEqnR&~8S2HN?%`t=o*qwkZ{ynX^qknoJL5TM$5@3QTMzSMpkxNd z(8IhKCE=m8DO4J%@?+>>UJTmBiesj%C52PVW~dgcvNARdBjExO*Z)j`+S?3XT)R^_ zP+pHxEo@D%Om8o}lIp0g792L|OI*WoA{5qF!LAR6_H*udxpJ>OFpPFUX`8r$Hdn>w zVYqUH4i&@@6xWj?HYQ1T?^rT2yc6!1SA?X!Ssh4>X1Hx6z&e8NS{oyL6tbP`Z z?sbX)#fw{;A|ItOEsuJ|h|nM|EfptvX-q^Q3@#OxOH0MSuZszW6IBs$V@uPPDqEQ% zxM_zIgTh)$r7?d@t7&><6U9v*>(R?+HmPThfN9I7w03l<5uN>9w;Cc9rLn&H#;-3# z%PBHq4moZ&L~)~TLO*POt8zU5{dft~M!f|367N%=IvC*UYw_K{5P)BX0d)TtzSTgA zj=($DNr2N+0O#Vj7VlqIyaaIaEWGpo91?!(zX(nj<@8vPRZcj|e7gOFCd0MHii zg{@rvT^1q31DBcCQ5Gl0;-yysWuowNuAAr^L#P8gf zF)q@D=x#I{-)y{r@m>Wu6ZxC11lYa?@731=9E$WPx)-d#JfdF-es?X$w>hf-u0gsU z|2`D`zd^p%c>lc=@8PdSIt=|kdJo@KA$5Hp?}}sCZ2XQ}571&AzBO8l_t){;1l_&y z@89v;0rRjM^D-Lg8q7;A-r3*vI=(NMi+M!)6)BGH30RgZF|1+|z-FZ04`E$S#CS;4 zCu2U4mZIN*=)M#0y&o|J!;p3k#r!=BaCsD9PbKDM4X(&{_0 zTq6)Cg>o?l^Kl!7P3%fnlT2f8i*A zi;)`Pdw|v$cLIi;it+p1fiij>%Gq52oyKB*N8+2NyYb!AILs5$PZ%~5^Ao=w>l10i z4JeC9yOFOq#+i2y$^lYu%x61{w-nPDGYsHxq>Y&Nv>DjGSbzN=Mmc^2%Y)yUPa!YT z?@ypCJc%;)49fJ=C?EKD9RI!(|89g~HzVzsj^#$8M+>!B|L0!Bltxo`i>CGCYpiod(lk3Ooi+!z@?|4d5Vn8z#a6cnMyH#jprw!)x#=EQGh< zKDZZdg@3_4a3|aWx5HSt3vPqEVI155HBb#hAr4g#g&3qD2?-bm!(kaLhn27bw!wDz z7(Rnf;8XYlcEJwV317ndun|_n2e1j&!x~rxwXhC0z=!Z2tc8)V8MeT?P!H<=|JrbC z<48CRj)uQN6F3%*fyQtg{15yY4u_-QFK{Rv0T)19I3Lb~e?mD7fC^|27s5Z_To?j_ zVGu;%S{MkG5QZ{n2OXdoT0$#09$LVea0;9ZP2nUs5l(=!;WRiE&Ve)FEGU3B&>9M% z88nB#!{6X^D1uVx375dd&=oquMbHI0LvQE--QiNW9C|@F!1GSH8m@x>g=^qS=nws% zFO)zZxD2j<|MyF90L?djhuDELQ#JsnYnX^!-ZFC|3{$&)#Hao?kDi@%iO%5ebZC*x zlV+SsIA_T^i#o3slO6vZ1Hr0Igw*>Mf>wX`BZs%Oz`vNuhDTP7mXddZWg_^G4)L%{ zZYa^Fy@h3*4jKt%bEL;@M0g7?FSF9mJ>iju17=RrZsY}?ZX$&54V6)f^v8g>PWE=1 z)Ml^|KjThXmK)Y-_c^@{DQg2Yc)O9=8w}WL>=h3CJG7J+{gRJY}UJZ3qFz>PI-WcDxs;c{QX@0&9D1=PEX_(6{9oD|Hn}v{$&}O|a?nMbWlkjF_PSW0V z%<(`Gb58-hpGJ(5gZ?0inZ+5}r?MSl0*dx98VrIn@&gD?+8843V;V#^&b&fB(yV~)E z;F`zp=dOJGLHh2jvkUBB1!>XLTFCWMs~`_n`DkVVys1OL>c~wl6Q^F?8n3rf;!+ap zB|bn~HSrAI9MCJF2OO}1Vv=%tEfeB&-@p)iro}MYD=U^I?d4J|l5ds8q~cp^F+8Y! zyjhA`aq)cal*v(bTonhezL+%aH5kLzSR%F>KIcqvBCmAL1 zdNJ3Y?COz8%UDCQ;hFCsW^+Ff+ai624F-OULl#$EvYJb0aMqc8k=$gg>wz4%wdQ15 zjJsd~9M0@gUw?X>zE!9hl;&X%jy2kf)Qo1VOU)pkk~i0=CbO|pwS)AFKH93)&*oHs zCar|&u3*gw`okGF1j|Z#*;>uI!TieA!{ftsS#y`OVts2RjOgwv*9tP%y8b|n8u&O9 zg_aMKt6wWIwFdTi>&+l~nzJ5u8HFc;dG+C68@tT32xhOhIqPJD(Ras4oWJ>qmXbJgv} zQla*hGn>I!f%^ijnVFNQJ)L*Fu@ks!Vml>sWp0Pk`ke98mRAl0d!Ne_u#NL z19K|Y@LDq5O5O`r>v`8lt?FG5Zf#HI{{}iw#0x{|%-^_76?lV@%)QBUy~trQKW2Ll z(yW--VXo~YUx0UA(@UPWP*50h{5g|kL52tlO`{ZU$^52h3dx8FYkw}Yv7f?_-$IcK zW!cPd{cDU1kE-;pr6jYaguxZ7$}J--PQr$<7b}spW_74`Z3Mn0&`5_e*k%D#32TFv zr@yWp%Q!X~XEMo3OPOdOn;HQ@$dV=~q-=;Vv3)i_RFx8HdW#LxiV2gZw8LNp2+vTt zX>3J-r8nonOOtD9#Q~}&z6A+U6n zAv_p$;rc6UOM0Tn?=x&vXjnXf%JS`{iAu&*lRjj)2*h7R!@e! zsB#4M+$2GU%e1-6svnPEo7Q-qs$Y9PcFnonSFy;>Yq)ePgj_vYHUQnYLQxwoy{5E& zC`6*(#KQpj@y|WNSEv|B4I-aTpy*l zCA+7yrCYa&sC<;B)~)4wT}~t{Wyt;08RlgITBi~Wj`WDXMQ4(KX?j=2<9m`|)_alk z@as02NPt?Cft*HjLb#z?1^EYQ8RCk7$dcQI(WMQ^#On2Ca=0y~24KNrH=Z%*Dh_A3 z6;8Y5^dVL<7=x?ua+}Q^P=&YIV$L8cLR5RHfm3=~P3Mk^K0AG)OH-NI?yLf|uB^QD zZmj&AF07nR_a&#*b%hr%AVI^PC|8hpxI>-bQth1X*93+|)UOdVtEjAOUT{u^Uk55` zQSAIqQ2$01w;cdiRUce?1im@=6Fy&{f6Xe$uGYzYqzm6$;2-#0!uZz?4)4&6tX!9! z+)4!;g@3F?+Ua;4fZuk|VxhxV?0DmCb$ok*c#4nw+d;v?`uP1TzHFd>hna;s4URm# zA$n8t^zSgdw7#hNh#ryhL@XH_m?}8E2CavbFh|OVi(qR8>)b zRUJb4wS#u5zqM9=#P@-6IA7xXBWgIC+AY95)TLw=sp`f01)x4#aa)^X>hB?(`q3&#Y;9&m8sX+S3v50Ex%mk+Og+XBN0jIhS42^NTYP_rNr`c(`R2 z(Q;;ith&Bd;^$9n_~TiK+`vH=#{mA*6AKG+?meyBIBG}3?l9=cjmIJOK@wYC9?Ku= zJU`aYE1Rz;ebCUv!i#EFrRH3+qSk)2%C=AMJrU9VWTL4na2BNL%-oJeMSjHO#KSk! z7<90W=-5m#G4`YVm^y87;{9Jyoi;Kt@z!3xXhmvjqe)A>gWlYIGNK(~p}F?~El|^$ zMXfUWp!|!O>;8tAhgz6;(a=oZa%M&=X8PioBdhmNU;H117VwVCg3eiDTc7KfpK&MD z|D-8mA7)_ZUrw&yFZyq{)4n$FB^?)(@lb{?ELUJ>NW$IXQ3J_t$qx&X2K?11=C-S;$?&nDK7v1+`z$ zc-PpM2YHd|xxh0V=W*cS%I=0Q}pVHF236E)Cr?#?SIAsug z`QkIuJ>|l`e02`u|ILqYSrWFubM9NkjP^dZ_<;YkMD)Mg=ofL9;q%S`Q~yUdnDQOf ze*u#N_rj;TW^ZM{bY_Uk&Hxv(Dw z<}U9{Sr=V4WC@k^ z6dqGPlCXeHXJ#oYVx;_$+A(`hMch+)TzY+B!dTAzLw)elmOm5fX*R0&tRr7kX7!dh zru0)bsdATfQT*Kuu@n{>$xACMR{=N7|~nAJcoFWCB^$o&_#5C;8<3 z@W(VKY2nAUUOrjixz{u!Wm_*;`6X$smI3H>u)1S3$mXH9{JS}#whBPiA8X}XYEGAQ zn)RyCC4~X_YNOU_V9S}gy}6x)yB41LHSHv{4#IYSr9=IGLB2J><>KYb>%C98C<@4h z|5aGNx!`6ca~iZI-dD>dSS!qr&ZK9g?yj4P ze;i`gLKfIeslOb)cq5hiA_m*t&FW$m({g5k%*$Gx(ITK{5SKCCC<7P#rmq79h!Y4wNemeKn35=+oHfV9XxE0Y`Lp5v# zSfHjei`r%OOV5e^_$}RvxKzXBw`X%kWBSiwecP-%0nth{w7}_Moz&?+=f^%G>FJ{( z8g>)RV&yD7-2IDF4*2B1bWfqwz{K|{`C>8ifPP0m^d8;Y>1$!Nu)%V#O=b-EcI3Ce z)7rV8h32TA{4tpkx8#O~etOc2Ky>k12 zyBbUrcNMRYn5b$PgBljF>CD{wi!9%#l=4O9Za;RLcG?cQ{W!!xcC8v)kft-UhT+QE z_Wl=lQ&}rDM8DA|6DjvT(uUc&KC@q^&;NnQRT^>@=A^8wn9eNffEh{p9J1#(+GB}Y zIpOS7nRsSwBnn2E2BOM)z5Sy?finQMZZ1>dotNk2l*%^YUQ^vSH56gt2BNS)ekr$Ih3GTUCIl z!%bB7;*<%$e|Tqiow}LuMi_Yf)#{w_m|lF;#K#xY3SgvxhpUdx>Q`z_l)91LCnwHd zPSSgwfoj^!%NLiM1HEu}$(J+-y57JgYkc{lakI%oMiu`~v&kE5w7lQlaA^NMa`zrW z8)c#S7anF=vyf9pZu%cSK-?<4(LmEJ6PhUdAvesf%S!`ht^7NdakPmle)~6XJf@Ua z-t($hmEUCG(Z!QG>mAI<_S-XkexsJW*+ivZptcHWIy1K!&q>pGjr{7Ct4@=zenhR2Mn}9n#EBQC3lJC zRF|CdPh94l_m$ zUi|BCG)6vTVhSsf`QmYNs>6=m{vFM!CL4HU{wQBG?gV1tlOuN)Aleigjcm(VfTlBZ z3v#-(`Ozn?Al>?~fyWx$GU2SuWJc#klRkSp2$_AvMEA^c=8MVn%ma^mZy)u{M-5D6 zvC9I?y=O9ryKne(DqqQ{}XD*Cv{X|8qNaCy&V}TeWaw%-U38>%0^>` zNE1JE>9{#Z*TxgRqB+OYI$q#ll`|qU=eTm*7wc&z_l$wa4OO|Kakoo)e^vN1-7a}n zM`H%6T(OFnKKNSWaSN#r&M>f~#ZNQ+-1{JRw{PJ8nJr$)K4;)D7DX*^)0u_bF#Z3s zZ{Por`v3Dfwz6ADmJLl1%ejA;^;Z;rOqeflm}ERLPfV_kuO4;SCv<;uW&oyZZZ%JA zPTvg}^LO!Hb(W3onSjg}mDy#U`q>XlX`k*z8&$J1X~E{M`IvjkO?G$QLz?I%8&_Jg zv>;7q7V^X(Hm@15jSye95v8$A6T%X%ED)Lf?80fa@6ibMijHX7|U`_4-BLrE&WW7tu2!oi83YqkL=b#?3UNobTZ|Mym5h zV@B%#EZgt_?SsDQqH&856FH0i$F$t0^PB!eEw{i$O0yuyz2z9h>WNL)5aL?~qO##_ zmMQl+7dOX?k8HG)WM!d_=op&L8;>brNvyHhGke>`(=A!&jmVsT9CVyKECwDe*#*njCP@h=hq1DBnCo?9M*8cEY0V2I)AUPJ`t%@|A zS@c0hmyO!;!ETbzr7m9JVlL+%$erkXe#v9|=tSpT506{Q<&MSdtbRYO<&VcA)-o51 zS;*y##GP+^v~{V_E6Y73&5FC(PPyw9ZZ2{A=*7R#Tw;Zb_=oH_G7>tkH2PfuBCqt2 z>uj%)JA1rtQR{E$?6KCv^IM;{s@Qa9?it)lZt_(ff25V%Di=54*AGmvoM%wnZNcOf zO+KRAf~#HZB=c)X7I4mz%*oZP&J`b%T&?ktxgT$^piO5M_04Fa)&qL3pfa!3ko~_6 zVIt+;m$>=WN&UXwMf0n5E^@%4Bj+0C(B?j|W(%RMchLft966(L=b(MxnkHVLz2~55 zznx)KrRmJvhTQJi-c28UM!RPlTr_^7nll!o-P_DL=snWz?<*{BnwoPRa%0v%AN)mF z;oYbs)x|zJqg`J(^Y{-6uvD8AR+=esuC>UWl@;Chr+tL?fsPk2A6>Qtdo-sPM4gr_+;_UbDNG-7pEGGRNna9 zv)_|ceyp$pC&6ZwW>JUC3j2lwAKOT)iR~^LHwDfaiP^E-a$@PS#)$NZLSiPsIpZ*E zz+P8>_#MsaceprpbBe)ftoD;)9~U6jrzTb?j?JFIvZcZnd7HqTUtj}rm`C6g< z;U^P2zFD`C&YHe)5i>3YbDjZm@2Rgl?-=oW6W=P_?3RMLV>4~q|HEc0sekTP*jX$E mbJpq1*;Dh?JvPx?{yT*muqdhvtS3^_zay;g6;{BK=>Gy>r-UH@ diff --git a/support/3rd_party/winfsp-2.0/lib/winfsp-x86.lib b/support/3rd_party/winfsp-2.0/lib/winfsp-x86.lib deleted file mode 100644 index c2fbc9dec84573871a23570193e8c83a6644f0d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 55986 zcmeHwcbJq#@_zw_JI{2=`BjcXL{vltBtNcZX$kcW0TIB?x9j#c&9y zh=_=YiWxH^A|QfFkcuTZrab~M_EnBL;uRa8z)>44$W&>3G01$5mFl>^hdm8~L znu=ef8|rBq+!a94Li{2PTJ6xa_(ghcw5C@s03dpChNf3$q8sVeCYoMDeMGO<*7Raa zltX%Tf~J?o0VryWU!<3JX_|300MW}gI&=trk!D~#h~_6W&Bb^UecV9PM^gZZ7B18D z{sI6+MfgRUzr`WIFVZ~3C;H%6O$(j_Ao_T`rVoBbKGM9CH7)FqdXW}%(DcD5^hf$| zx~7jX-9&R=*YsW~fTET7Mf$LXrbSp5M2ip7G-n$C(W1_p-YxQHGOgw@{yKfz7Vb5sA=7m07Q#1&O~bmXj=0F0MWYD znpV_9JxHH+)wHHA`XjBH;ZR5XBCS5%p~?6~TDe5inh_|E^zJ>H-f9Ry^d^QUdTWfP zcTp$NY}7+E3(G{&`S?Y82h*wORs15oyb;rK++v3cpAKvtk9W{Cc?r6arq6b$4}OuJK1kCuYXOL! z`&rYoSPn$bT%+l^5y(e+7UMwl6sAGZDEuNlz1yK1@r(2v<_XdBTQt3ZSVRL8nyP-p zdVuse#-C`)c!x0GrXW3m7(`Ew(KNLI0MRtWC3?c4>b+P`kfx#zq9;*?Xd2q+w8@c3 z_nv)v7ZydjcI(@vuzR1P-i49DvC96*sxyYPZwrw~uZw&12+F`szK|9vI{)Hc7e=~v zD(VE0f@D=etUTIxXfhS8=o&4LrlMVAiD*eGo*3G>x_|#@0u{$9sv=oQGHr#?;?it% ziE@^v@@R1~tB4h15+qTk4^v#8P0U0&rm0iOz-r8{Y?OtGW}&a!5U~(sjUYvgo9Jg2Ecw|7e1Z0i)muzJgFYA_62;}{H6E)lJW4~j;Tv9ikI^2mVV%F=Rd z8r>WS^EEXjsjkSuMK3dKX)(fA#;*5jj=?bHuBq;i#a>07g-WyUwxyDWGLq76Q;Mp9 zPG`i+d#zRSVIj?aL&ZbrGZf$J9JFH3X=;=E0Ubd0GegVmzmpEJ?{GppeR`xal}r_< zs*{oaiFic>D{5sNb2qK8rGfP#UP#8ZLg*I9gi)=M-Lglh0;_h!jgHH(^f{H@lnUtb z%h(n3IF>dx$cUKr&J7t$MyU2-kIu#p5sPo>^;!upk35bg={6lM9&bHdu4hf2K9A$* zLmP|)x-iZ$Bw0T|78GF|L(=a7bVbAgj@wgs`A*?k%da#tj-k=&3Mh`joC1H3oWY6jpwC6HHdyPJ`J(Zu9 z-3dHHkI~XAEW>R`g*ELeNSLP)UToV{VA012X|(Y=FZ@oxkdhi>B`$fG;dJ9yQCc3W zbh;HB#i+rw%QK|Cny6HJELkQ>D4h!UQg%GY)nQ?P? z1<9%&#nqK10}7*M1y~6Rqb2bKPF1v)Fkh2@UNjXR$nZ47^i3DW@bto;kp!;m+QZx zi9WHasGwRB@lb5f0ANr6!}g@bszNohF#<5ID}{w%izpWQ>-EsS(UR&!EH$(%Hp_`v z6|RgL^5G&F9`&RR9O925yWqk=Dw;NMxCn;tR8oSA7hMKKORi%XZt+nPZHg9v&x=+@ z6S0z>IPZv6Vq@=FUWh-2>>9nMx(rts3!}-ZIQA1ppr99%A6Shmf11hKwM={ISH&S2JWm(C|Zz1<8_BdAG{yioVgrpcs~h5kl~D zLr`sWLf8SAmoJaiEi{1X=Z5H$i1sg!l?^ZpKt;&#aAmRZ`^C$v1I>|=w>;f2z1WP- z=DKc5ObaQ6$TVdn5nrMxQCyiUE(s*X=exQtPDWMjuP8HXuSy5=a^-s#U#A0uM!ZxlVT`Wxr7P?DuWnr|cyto8Aan-x`iR1KAjCPnP z(}yisynGN-#;U7VSh66~RS>Hz%^0ho5YvIVgF8y;vc~gf;d)nHR2@wW_46%(^A5F8 zAy`wmu%*-JrNk`mZT54Pg}5M27a9^?$J&#z@ViE-{p^C97>PJ8U5iPvWGoH7?Wflw z$XS|HOugN{kjU6VmJZBM-AYgar!OH{)Y7Nmveg(SZ0SVckUFhOJJ1q1sps;*% z{Hze&XkRG=#PPF2P%niIVV^{tI@s=|1tFmYIi{(5vUimu(*=(i^o>>~W2xAnsH`uI zG}DT;z#X*8inu@^Y%Gbpbh!JN!2YSaJQc1ZD9Ci-h^}i;M6gd;kmvO$dc9fdLoudD*`*nKA(H|!OoOu13>pG5OoJNFs*#VJ2pju(Lt225UO*uEQY5ng#6Lr9Df!P&CAOf>ao?~1wn%-$24ID z#nD(`e(Fb_3-GWwMe(bHm;@TUn<7?toPL?ULJHKXiYdc1=miYF9K|>Ug_sVkhrR-~ z7GP$AB@?bei~_^3YKmSU5res23{6j!M0wYX$s4m)A%6{D40TDYvQ^6h-0kd@!i>kQ zPXk8q!w{|@1yT}52*D3S^uhBIUE&qjsJ#a-MvUu7^~K|LG4o^>3As#1hT1o$UX076jOhD9s>B?pQ{B|cQBaus`kK2ZyHl5pGjZ$-gTX9sKOEJcpt$DxQay|{ zd7JCIu`%d|yT)DOr9uptrym9lH#`jU^urWJ2h#FYQLIA1VV-^%T6U|#sM%8(C(|u& zBV2iTd@u&X=_#&8ND1o{knlsh^~+ahSlXE1JZ$9?c+-060JfkiW@OyS){x}#SA@;f}*$z zK`^2oSOlb4B8`3x;DT51{?v0LmSNe-Fa%1iasN9a8{c!%PAqz>=k zJvXG~n3l=NzjPwz8&bie0Gl7dy9-EkH|TVvS;+fg0^Y|!I`lD22hz>eSa#22x&~sL zt1yqz@69B}3u$!%;7Ig8J%uv(_XPYN`2gNm7?1h&5bA#r!=O8X-}cD+5P9_;#yBJG zMgD|w0LLJmJrv7v2*z(XmI?md@_N*9AKquW0iYN1&%G1VHwy2M-GTXY8|Kvrw4;$| zb9ZC;px^Af(9Y1^8f7}7%m(zIfqoYtfB3CfPDsmc2lx)Zm*aOU>S%)ZSQ^}fcJwcR z`lB&kH=@1VkM=VL^AKqo`ZdD%G`<=02kD+$0FFYMh;mIZ%!IKR4yg&ovmS<)~@42Dib@a1-1Jx55ax1%|>__!Arge}F&2!!Q=czyt6gypI*>0C*F| z!ND*dUV(SuC3pkgf|)Q2-iGP$3_J&q!V547ror>@EIbBJz>_c$P2+KR8m7QhcmyWH zQ}7}zfCJ$mcn=EBZilK7g z0E3_!20|57KqbT>1xZN2U>E`mVG(=;AHoLM2w%WgunE3|uVEW(hAr?7tb*0B1lGbD zSPn~JF?%;B+_zPKGn!R5%S9LOW;;t)Lk+hvT6EG=Vly1ij!wxB$+FE^rc*I87AT{q!>!94Rjn-xEtiA5RFxoTMd7N0~Nlf zBkJB&QsG<&US>i;f8j#D0hN`IlTn5)W7Ca;2s@v+L#LOoXy3uc<9nM-S617R#;nVa zo-t{&ncjYs-n_7)lYS8~e2W%Qf|ul2VlwPv;+)%G+45GVnTE^@c-bzYr(bOKSHSFr z+%)T*(#mAmT4(R7u)UO!eHnQxB>gs~DoLw!aZk!yyY;n#Jvy*KtTADCWXq?e6b5!Jw z!A#pwd|A`C07{rwHezd#)&1BEOUhW6h2s(|XVNXJv&}9mRK^wqGu5xmmYFcWK>Loq z-ll@x3YdOs|0tt?u^+{gK*uEgX3vgc`uzg$=odQ)MEdD4neG;}Nol>oBWA8FHmq7u zpCfhI^2sH$4J4J8brDPLQ#fmVKDM_|tKvs4>-1J2M23S|7*C8j*|U8f5q;$Iq$)PD zmtz9j6ZLw1wa4*K+Isq})4?VmRk-JWO*R@&fUWY&h?;V<_;`7z%-KDvih7kBb*j)= z>@i>vTDdbe1;}acBZRDNQb6q$Tx3kMT1g9wnbyl()!8gUy6vZbyw+MgG?d|*m$Oi2 zFoR282%BNeGN%TdlkOQ(7hGh6H+GR z1lLIr&+6Fxx*+bMti<4yZyL2p3jG>l?q zrgjJL)7oT+!Md>{Yzlw{6D^Fns zZG0jt3S@D1Gpj?DSS%T0%_KtlMU?ScRk?LDCEUrboG?$3eWp?pw#pf{z~lWa>j#=xIyTYlDrJLrpn-T8IU6OB2<)0u)> zLA;50fX_-rRYZ4E?ujZcA{tpEOwc`Xnup6r0o}z## zf-eIEeC>gr0~?qwIDD)h{*2sKW-Slc-fEFRV48C|2Sz@H$(9XlMIna;F>AvktQQgt zP2zHb@9!-tcr0&e!Q)5^4C+nG{?0oAts-gPTk@nz@!+R=u~4h_gGbeqc{aDqe0
    _~5HCZnjg%3{QJF58?=Fo##3% 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 diff --git a/support/3rd_party/winfsp-2.0/License.txt b/support/3rd_party/winfsp-2.1/License.txt similarity index 98% rename from support/3rd_party/winfsp-2.0/License.txt rename to support/3rd_party/winfsp-2.1/License.txt index 7fc809bd..372164f9 100644 --- a/support/3rd_party/winfsp-2.0/License.txt +++ b/support/3rd_party/winfsp-2.1/License.txt @@ -1,708 +1,708 @@ -The WinFsp project is Copyright (C) Bill Zissimopoulos. It is licensed -under the terms of the GPLv3. - -As a special exception to GPLv3, Bill Zissimopoulos grants additional -permissions to Free/Libre and Open Source Software ("FLOSS") without requiring -that such software is covered by the GPLv3. - - 1. Permission to link with a platform specific version of the WinFsp DLL - (one of: winfsp-a64.dll, winfsp-x64.dll, winfsp-x86.dll, winfsp-msil.dll). - - 2. Permission to distribute unmodified binary releases of the WinFsp - installer (as released by the WinFsp project). - - These permissions (and no other) are granted provided that the software: - - 1. Is distributed under a license that satisfies the Free Software - Definition Version 1.141 (https://www.gnu.org/philosophy/free-sw.en.html) - or the Open Source Definition Version 1.9 (https://opensource.org/osd). - - 2. Includes the copyright notice "WinFsp - Windows File System Proxy, - Copyright (C) Bill Zissimopoulos" and a link to the WinFsp repository in - its user-interface and any user-facing documentation. - - 3. Is not linked or distributed with proprietary (non-FLOSS) software. - [You cannot mix FLOSS and proprietary software while using WinFsp under - this special exception.] - -Commercial licensing options are also available: Please contact -Bill Zissimopoulos . - -The full text of the GPLv3 license follows below. - ------------------------------------------------------------------------ - - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - - If the program does terminal interaction, make it output a short -notice like this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, your program's commands -might be different; for a GUI interface, you would use an "about box". - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU GPL, see -. - - The GNU General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications with -the library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. But first, please read -. +The WinFsp project is Copyright (C) Bill Zissimopoulos. It is licensed +under the terms of the GPLv3. + +As a special exception to GPLv3, Bill Zissimopoulos grants additional +permissions to Free/Libre and Open Source Software ("FLOSS") without requiring +that such software is covered by the GPLv3. + + 1. Permission to link with a platform specific version of the WinFsp DLL + (one of: winfsp-a64.dll, winfsp-x64.dll, winfsp-x86.dll, winfsp-msil.dll). + + 2. Permission to distribute unmodified binary releases of the WinFsp + installer (as released by the WinFsp project). + + These permissions (and no other) are granted provided that the software: + + 1. Is distributed under a license that satisfies the Free Software + Definition Version 1.141 (https://www.gnu.org/philosophy/free-sw.en.html) + or the Open Source Definition Version 1.9 (https://opensource.org/osd). + + 2. Includes the copyright notice "WinFsp - Windows File System Proxy, + Copyright (C) Bill Zissimopoulos" and a link to the WinFsp repository in + its user-interface and any user-facing documentation. + + 3. Is not linked or distributed with proprietary (non-FLOSS) software. + [You cannot mix FLOSS and proprietary software while using WinFsp under + this special exception.] + +Commercial licensing options are also available: Please contact +Bill Zissimopoulos . + +The full text of the GPLv3 license follows below. + +----------------------------------------------------------------------- + + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/support/3rd_party/winfsp-2.0/bin/diag.bat b/support/3rd_party/winfsp-2.1/bin/diag.bat similarity index 95% rename from support/3rd_party/winfsp-2.0/bin/diag.bat rename to support/3rd_party/winfsp-2.1/bin/diag.bat index d282601a..676e257b 100644 --- a/support/3rd_party/winfsp-2.0/bin/diag.bat +++ b/support/3rd_party/winfsp-2.1/bin/diag.bat @@ -1,54 +1,54 @@ -@echo off - -setlocal -setlocal EnableDelayedExpansion - -REM Determine the SxS (side-by-side) identifier. -set SxsDir= -set RegKey="HKLM\SOFTWARE\WinFsp" -set RegVal="SxsDir" -reg query !RegKey! /v !RegVal! /reg:32 >nul 2>&1 -if !ERRORLEVEL! equ 0 ( - for /f "tokens=2,*" %%i in ('reg query !RegKey! /v !RegVal! /reg:32 ^| findstr !RegVal!') do ( - set SxsDir=%%j - ) -) -set SxsSuffix= -if defined SxsDir ( - set SxsSuffix=!SxsDir:*SxS\sxs.=! - if !SxsSuffix:~-1!==\ set SxsSuffix=!SxsSuffix:~0,-1! - set SxsSuffix=+!SxsSuffix! -) - -echo WINFSP FSD -sc query WinFsp!SxsSuffix! -sc qc WinFsp!SxsSuffix! -sc sdshow WinFsp!SxsSuffix! -echo. -echo. - -echo WINFSP DLL -reg query HKLM\SYSTEM\CurrentControlSet\Control\NetworkProvider\Order -reg query HKLM\SYSTEM\CurrentControlSet\Services\WinFsp.Np\NetworkProvider -reg query HKLM\SYSTEM\CurrentControlSet\Services\EventLog\Application\WinFsp -echo. - -echo WINFSP LAUNCHER -sc query WinFsp.Launcher -sc qc WinFsp.Launcher -sc sdshow WinFsp.Launcher -echo. -echo. - -echo WINFSP REGISTRY -reg query HKLM\SOFTWARE\WinFsp /s /reg:32 -echo. - -echo FILE SYSTEM FILTERS (REQUIRES ADMINISTRATOR) -fltmc filters -echo. -echo. - -echo OS INFORMATION -systeminfo -echo. +@echo off + +setlocal +setlocal EnableDelayedExpansion + +REM Determine the SxS (side-by-side) identifier. +set SxsDir= +set RegKey="HKLM\SOFTWARE\WinFsp" +set RegVal="SxsDir" +reg query !RegKey! /v !RegVal! /reg:32 >nul 2>&1 +if !ERRORLEVEL! equ 0 ( + for /f "tokens=2,*" %%i in ('reg query !RegKey! /v !RegVal! /reg:32 ^| findstr !RegVal!') do ( + set SxsDir=%%j + ) +) +set SxsSuffix= +if defined SxsDir ( + set SxsSuffix=!SxsDir:*SxS\sxs.=! + if !SxsSuffix:~-1!==\ set SxsSuffix=!SxsSuffix:~0,-1! + set SxsSuffix=+!SxsSuffix! +) + +echo WINFSP FSD +sc query WinFsp!SxsSuffix! +sc qc WinFsp!SxsSuffix! +sc sdshow WinFsp!SxsSuffix! +echo. +echo. + +echo WINFSP DLL +reg query HKLM\SYSTEM\CurrentControlSet\Control\NetworkProvider\Order +reg query HKLM\SYSTEM\CurrentControlSet\Services\WinFsp.Np\NetworkProvider +reg query HKLM\SYSTEM\CurrentControlSet\Services\EventLog\Application\WinFsp +echo. + +echo WINFSP LAUNCHER +sc query WinFsp.Launcher +sc qc WinFsp.Launcher +sc sdshow WinFsp.Launcher +echo. +echo. + +echo WINFSP REGISTRY +reg query HKLM\SOFTWARE\WinFsp /s /reg:32 +echo. + +echo FILE SYSTEM FILTERS (REQUIRES ADMINISTRATOR) +fltmc filters +echo. +echo. + +echo OS INFORMATION +systeminfo +echo. diff --git a/support/3rd_party/winfsp-2.0/bin/fsptool-a64.exe b/support/3rd_party/winfsp-2.1/bin/fsptool-a64.exe similarity index 72% rename from support/3rd_party/winfsp-2.0/bin/fsptool-a64.exe rename to support/3rd_party/winfsp-2.1/bin/fsptool-a64.exe index 534e3b02df8e68d37fcb066ba58d83f6516d229f..c80656315da8021851149a5f4e38d6585f0fd2a3 100644 GIT binary patch delta 3179 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 diff --git a/support/3rd_party/winfsp-2.0/bin/fsptool-x64.exe b/support/3rd_party/winfsp-2.1/bin/fsptool-x64.exe similarity index 72% rename from support/3rd_party/winfsp-2.0/bin/fsptool-x64.exe rename to support/3rd_party/winfsp-2.1/bin/fsptool-x64.exe index e8c5307a17640ea2f0b941d5322595191dbbc6b6..56fafd7b56b083f5bfdb6345a01e53a47543b4ce 100644 GIT binary patch delta 3218 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 a%kinI^UgI)=hdTX@@=}giNb$6(fAM9U{rJf delta 3336 zcmZuz4Lp-=7r*aq#)>HNH6I(15$Y)Y7d?>*PvxVc@^0Rz=hyrG-s}FI-?^^;xz4%HbmDry%geyrb>O2s zduQh4lvYneL89a*#SaRK>SSx`u%PJb0xpo0$$0!=Tv7c3&ydJ@L&3xXj~`50z&EkO zcgSr3e-A%b0AOYyfY_;J%)Bu#SneIM9k>aG!PXuExv)G)=@KGMbDdl&SAfaLOh!s1 z8KLC}u%IdD$}-ZB5hRmAzsSVxy4nc20r4|kNX?-$x`9|7>eR4;eRZRzl}oK2dbNU( zitvwTaT8rQJQvn3b~q~t;KJNkd@s&+b~q!-h0ET>;sL-mxI2pxOX0Fu05Al~Y~n|Gb9S-3Sfq zRlxq|!0Tc>)({*Q`(vv>L-BWPHi!~u8DTxB0EHJz;f3>~sC)*OPi1lC*93qJIUdB0 zArdHDPPC8AKL$TucGUlcr#+D zY-Rw5#%2O(a+E6Ic`#+s00PBr#>>I<+WW?H2(|xY(U|^|*AAL#gZdC)1rPut00FiD zNj4_|;j%dqV9Gwcc)2+TB#P6`Z-T^HPm4O3AqFeUGz6yxF1hCMCBsIm$d~}p>Vwv zNQ6L?!(ku{rlwrI*t6tQ;Chp~E9P*n?H%z_LV^MTvW4)qIRqH!j;_g|_lK?;L?!Py zYWc0@(9OMCJ(mw}&$50}S$}+)j!Dv$!8^waw`H*gXGJ_1lo_1VFk)1Fgoa#*;B55?LI$dO)nb+Cgki%0ns3EvSRw zy!aYPQwXWKRIapzy+zx=KX&%vDWgg36F9#2$U6N(Bk2}{ar-Yf{p!vd754h-U6_lw zn}LAgfs2t~Rrm}C9X8Nb<=z#{p)2;4bcJ9_?R#&dEKnH(k;~!=YUZXCwoiOtA4|Vb zix+91fJEBmFc5?U5EH)`LdkqUAk|?su?1oCvi}p;cAIG7Ax*PEHKwTfovOy};-Xeq zOe5qH(6NhLk=TqaRsU!SEk-KJlG|$!0~G)S1#*F5;;=*0{H3_Gm6_vD1R?CUt}oBB zbjC#^Iml_xCyh%E!!XPZlEc=yUrl>V6kN+juV7&5fD>6XNwhXYQFK#{k$b*tJH1ZG7oo2uu8TmG4gWqg_qq<L5YFg1hBv|91w zvO~^QLQ`+So2fj%k|HQa*)=qKHOjXQq#Pe5Mrme?w2D}T>cKn&z6PfsX zzgivz_kO+Ur^^TLdNoDdYB}q-MrHV5{#G4&+jNp+3`et4T2kPak)F6-d0WIm-9;;| zmYnS`ssHR7Be-GaP@$*lhqP^0dQ3W1XYfR@S)VK%{o<9Ub~MF%=y^x=$&@daXu~lJ zigtz04Egi)HQzX^Ecnvno-LBLS>M-5Hh&>qUeo4n-VGc_UV zZ>toSL@JWQbh;m;3)LUzB;E_VIX0BkbZ5J|qV$?zyfgFG#TY_j*W%!PIh_;JtCEur z^)RzO*4$`(L){ia>))e;3x@m5Zhhy<(@RTv*o$~IV3#0HUYn;8cHl)H=h%TLc`p3|3=9M z3%_sZx-umQHT&A~Au22JD{3UOcMrNT@_6wzYA9;7qOtU0wa`$naZKX$VP;9{-0S(5 zrD~_&1I-~D59``(y8NyU<*}S(6D(B?=)Z&(rffr1?+Q4;kG|cnu-#(U`+3PF(}FcR znJyZ`i-M2ud}FlU1>5hS*IqoH?0)Id5#>DJbrJa&w!*0I%U+ee{=+Z>WR?IOZ|VGa z75kyY%r-r+uvvP5GA(3@mgOdu^ zgI}%;vv}duO>LTAt+su}lpsm^v1LR4-h5H%xkcHXp367>A<1;5O=H6PHl^{rG4h-^c2Sf&M}IEd%NOjt`wimA=KTkA!+s{~OlQnUK>f3!9Hx zr3bZ#z7YfpBme3ska{kK-4c~_>nbES$JP1lE{d8OEgPUqZvEDl)1tk_dAiSh^i|k| z0P(c-_ql&9s*FwfP?#q8QwhG+ZB=-s$(lm2-@)$5@bJt?@w1dwcjmRcyn*A79)L?4 zvnNIdxwNcRD|Hx%nFR1)?FxqmWi{phX;b3&o{qv_TN`BYOW%Yk zv;NJ(*jXQC$o5z3)_60>6j~vKWSU)5LstoAS(vISurLr}C#p1Or5t=XNQ^H_fi=Z_$!=;~Hp9PB|3~pWLlfSXohxYMO* z>P)U`^pD=y2R`NY{Thqix17W|P9AaC-#lzPe|qMK@K8{g^3)4-`YeOeDVO+7orYFb%K()ESfVsf)n!hkMMOP6 z=8mmFKZ-A^?nyY~;4x*4_G>j&2%I_t-^ndMcgwo94^N8xmwUIgF1`LL*cGv8`RolG zdA#eZ(9su{Q?+kjx5El_SH-tmpy#m$7*@QGdTp; z;Yx|(>8|!I_E?8%j^^HRzCl9T0V|ESZv(u}=Vbm~Za39+Fx0|coxn9VnR_s#U-LBl zQPYWj#OE%{2b0FH+u+B08^A7FM&b9lk!iH*#90-$NG#>n)FDIk=9-SNF~ivRrZ4n+ z0vx&zuZ?O93gE?h1ed24#CKx4A6yOd^zZa{zq#>##&fqw(dBxzs( diff --git a/support/3rd_party/winfsp-2.0/bin/fsptool-x86.exe b/support/3rd_party/winfsp-2.1/bin/fsptool-x86.exe similarity index 70% rename from support/3rd_party/winfsp-2.0/bin/fsptool-x86.exe rename to support/3rd_party/winfsp-2.1/bin/fsptool-x86.exe index bb76fef696cd52b63649ae02e29ce2ed7b26225a..a18c73071e60d520ab8103b62c004de14dba9bf8 100644 GIT binary patch delta 3173 zcmZWq3p`X?7eD9BGzdk+BpUCO(iw~zD(^vgk4K2xV5-rK(aab_n2a|)Fp)=j^yCuN zl*%)uB;!#c85NKne>{oU`o`~22kXaCn)|F!l$`?pSU7C4v*W^5PFJFK}e zrx9)V8CvcynTe<7nTgk%&r1{#sNxtUlsALIA`>X$h50W( zO8^MwORZJgYQMy8Nu|<*fNrEai|RyYlby&kIwKP3MmW;Ng)F5efwmk9%auV7A~Tu5 zEx!L+3^>e>Sz8XS=5J6<2POG8RW;Ul00d?jff>Z25?Le$i%4cH?h62t`BSROYYr@0 zoyE10Sm8_pgHH3Ngc=zF0E3TFGXlf-M77OeC_hfk*6i@2rz@RF;W&}Ph?HOtx+f(V zNL)mT9Hv7sIg|x>|05SY>{qHJ0l2Ock^=!q{3&b#e`&#>IvP~N0tSE~fCI2%F%iE9 zi=QBX1Z)KY#mBK)lMdqeiJA{UoM5-sO(bSeUCaSN0L)YGMoDcB;lei?v*4u|rwS{?z zwqgVXLXaFX=;y9S0|EEZGV7o^^neUsepAFU9E>yEDmcCg0`1?6it=IQv@(^@s(>UZ8HJLBOSU^DDP-wX+GyK( z9{3sNfgkwKH*Zp;?rxS8#HZsld_KbX8tjiU?~&Vl^(_{BXM=A3zAc$tDHOs}O#unP z0K6O}Dc)zt4kQABI0(RG2n$R$u|E>-orvtLRGtohUzY4b9LP#>QozQ3@1MHe`R&l~ zX_{y&?ZGONxNyp^IT2`V2oBrv3YDzQHuEqR?JmgE&8eEz7IRbNtlTzRF&6 z4H9-)E9iawl+@z^OQR%~3WvaD0FnUPK=IKyi?QTM-Bl%Tv}7gBt&HA(U5%p%r{-!(ICcoIC9NVtYolTJGxs1!4aHA#PXVl*B9i zqn3W1s>x|c&L(X%p57PKD&g~U!1RS3fL>_`8{%LS7>8Y&eT#Vt2$+YegL%jce_a^q z%Kde|HQemvhu_AK!$wGctzo2^F^o4fftQA_vaAsfi#5a<8sYFbyf19UcQex9LmL!i zJt#CXlSQJ1sf*L_H(F|P8$y^xGuayDIdF|1?XA!Go9`DgG3e$Lvyi;ui%kp5VRh?O z4U)|)LPTTw#1-slB+X$DNx#x4y{k~VD=OR0+i17hGwU<9Q#&QCDBoFZv&VW|)maUnKCVNjLgB5EzpKYH~ix<-*6>mEbm4h=_jVAx}u9FJTq z?63D3bMrab;7I(`o-b0rvFCAgLR-z#UbikiU+;$FNu1d~uxKZ)8>crqAwKs=%IMVG z*XLbT@`?5pu@zgL3|mh6mF%v}{Vni?x#I1T%d@X)V%B+&+bf@p!tdeOc}yKgZ9teg zTy)22ZyIgth}4+Fced}MFvI&e^4}j+W;>mo*v1S1K>kYW3M9-zOd*DdiZry-#&eQbF(~&{nn>9~`8MJL)uFSBPTWeK5z!Hspv?PCGq zSMLe;K5L6z9U^#FmsnortFFK6*k_1KO8)t~jD;j?>Tzar#TM-zQywSMw3cV?p$Pry zUYoknpDGA1lhB!r z^T4L8A$lGgkG?88(mjSOZi;m&r`&iToBiJ1u2%SUb426o`ry&!?b9A$!u3ZE+}!Hc zv7D}-YsmAQj_I6s&oQtucrc27$)Lb(N>l%0=~SJgL}t6c}KB#8+Zt(pI__Gmi2DV# zm3K?^2di-b7aV1NAdg`1CCvI}i-a2E9JS57_3)4^Gr0J(+GCC5=KasANvm+BA&pb&}kE>bc{*p5*%0e7PgW z7P5N_Q$O1ieO_~hp#>bOec$W77csKsI`=1;3fJS@)j|34HZ?)9Zsp%L5C$zr5J`z2r2bBh5MC!{MO$s1J0r#)_8x)xczq=*0#9B~_tQ>-Wq&r>xsCU|-%sA-o zj?d0LSIlLvIu^BazrQN1ny!6nygw$fAS3{(5W)O#ATF1N zhpZYHqrLOpoN65 zasdA{PkR7x0}(*+oGc~hgBx5N3-T;M8<@IAeG15hIX!@9H}ffdKfK)9A(F##Z#F8-~)G}l4BhhR4M=rf&#lOJvy2k zLvf?U2qMtD+sbkTH{mEIixEYQ@dJRDs~jX2#Yx~3C5X`!_G8dkR0o=1;QGtY1^}o$ zBwEGHYmMC|DvBNgyhiL`MY+@CsqWNhIwKKy1$UzhCbE`#4`|P(u{;^{5Gs=iwD1Da zYT!6;Kl(hV#?!|f1(Cc4jD`{kaA3wdFhf{TBo>*$B2gKu{{;Z)yiXWKrO;LDcEQ}p ztT?6vgC6Zii^1anU@uQi1rO4BBo$*Yns-3O-ZFO8)057mvE9kBBpSt=?n9#hhgP*D zHq)6xjbQ=4zvZIG{z{cr52`+bNdo{(uoYSXzhpgM9R;dDfC+#D@Bjpu0R%yx0E7to zcz`1Ku)Ot}bP&%=)4U7f>s_@P5Nhfg0uC4qfVdhm!bpR3r}VFqpa`s-s{wOXjD zdOJ2WsePQJPhSYSll4SbDCtS9$sd;n+lgH%@Ad_?JbG$cUd|O6s?XQk4acNFTm+&V z4g+B@X^C2K*U~S(TeKTm4B!m22Rs?01R)$`24U;7jbNY?x-LDSf431InH*kVywZH^ z?g7P~tH;AKOZH+Ohk_$70 zxG-JbGh-u{!D|<;<~#psZA~ZI&U;m@FS01Ef;I}neNA_^~8 zfzT34J|ts58zcvdqKWX&oqbq`sU+GNeU|&gW|czC;$5oKR*QE%8)`HQdp$6hmO~$=BVbtI zas+rjWPy&}Gthe8>7GA5K%}qqUa)$ZRquVIAu@d+LUwO{-SV7J*vIc%VgoMKW4Wj* zh>JQ613`!lQLy3=QZNUEupG>XXK1uj_W!JF8x+kMB_1I>P*{%ST#FL!<};nWClaLf zzF7V}&8<()9*c5>#Dzr!o7-yz1BC#DBV-TL0Nxw{WA<+gz12UmqvpY>Z6~8G!B~aA zUR}K{-Jtb7O0B-T;LMpJ-{HB~VpaEm(S2G>=4q~?6~t9E z7uFFItS$oNn!({9maC{QP-_3zX;M@WsAPGMu`Z$2i#t=s&JNzI`jmOs#z-;|UFOu3 zfqPf!+dae^mgAj;NpC^UxHwlFiRn0gA}%mb>M&{@4#MFfJeG)s2sk`0pqwiw0&#`g z1gEX~*J*R7F5HUV1@I2w5>;@JISvc0wE#s)JRXb1VR3kZIl(*ta^NZA zHMBQCnybqTmqXjp!f3Ws220(W7ENWc$kDOtf~+`oV|5&F+FFD2=tGr`Mdx2%BAc^s zOBN5Fo{~>v;gxkR^kIBdRf*9pxjqu)xiVye)%pTa(@4sh@4^Qap5^3j!eC(q%Z$20 z3!h8)59A|n&*}}H2-$Trlf<_$&N{s9qRyGIW;VNNpTe+jXWI=5so6kb($lFqgC>#D z`S}*#biZZYeNwhH=b-9j55rkc)h$&u&37_w`U|suiI;@ zQWlNTY99<8P?bsx=3nP;d+asIgv(U8HW#%nd5k3yKMC87`TQil8&Aeg&bIHkGog?a zkW!`19Bhj?sbL&4?mzEtdO}UNvH!gM_@>aqUZRo9BwO=7%98IR{+!r^d^CmKT=YG! zgQ+oV+HRu$?7#)ilg}ap!#7_9y2fDh^p8&1oT28m?HnIB(LZsvkxW^7p&o_u+I{2f zfpti2(&tvox93HqB1FvhD0M$geazCV2XQs6s#CgxDevtGo=fJFjtA0bD6&yhEM z(z*GkmFNhpgij^%l0#aR^moIo~CJiUip@9UZOqmm2sq~ zBVmBDvVNJ^?(Aj6&Is{AI+z11w1N92`pcDD+q!`gIhD&rnXlMi9ww(fB$Zv-GeQon zlsB+H>{7JN&~pXda7q+HE{z#KLuMv^Lr!G$?nhsbs3^Hj+Krs5yk7RKmZOHb{-MZb zWQ#+!VKfz z|17$qlfOwR!%lu&%)cUXQge%)M*mh!Tgh~?)0OAB5;-25L-Q^L!btB=jhq^LqLvO) zN`dyb0jxMltKr0qRt#9!t;EqveMSrjE>Nfok?3@=w(Jcg4ES%cEk<4J=9p73%OG(%obD#-^Lp^mC(h*n$qODCx(pZFvXsxMdf_j&{1PcX?8D!hSbCm9OIE=n(pa%ZZ6@kyq25C3*P>~Br_q?e`_fcfz?E)4_hu3&L`8-9q?U^>|2If zp*L$=v*al$ZuPYG)Mk1ZWcE9|DOL~Cfi`d;LFB!;;afPpO!f04Iu^H-@2q%CurbDz zKDX33zjCdHYfF&izp230n}Q1i(zjmxrbNwZ6cd+j-Ct<5Krup3&?Q85_&0Q07DmM@ zti%1G4Q%~yQ{<~&_K%yJX)6~mAUdy3B%YV>kaxn3+9DO`#K6fc&Xq$oVWYFV6{!#z z=5`dPGW(;)JyedDmYXOewHHmO9~HA0Mn&{a#*FsI?!8&G@hfxwMXu0h6hn(rBjrsW zVyX#EN6thKbv|6zQ6(-%6Ey*e-8~mU0D;kAU#tMFIkS@mq#nesZJg%iS!>&l738bAoN8Z zLI&ivkPQ?JD<8nMOHJXy@%QIWJI5#F54C0oh8nhuTb+%V=}c!=bH4Qk$@sB5LWfW5 ztIQK*r*Lw|#6)U;q&kPku0;Ip%4XVcgBAvHtfg3?F7awR z_-5eU`{$Y47qc0RMoK*}u5rEWU3<_ao0xspE=eEFe2c^IUl++uO)J)c$qjkKTAIeU z$%ea+XZlO{g>R`EWcvPeXH!qysi^Wv{bo25wSVkOa9{V~Hh?R)&-83}78f7pEnO0~ Z(Ltv+#zs#CXsC*hdi`)o85Fz`{{yeOShxTH diff --git a/support/3rd_party/winfsp-2.0/bin/fsreg.bat b/support/3rd_party/winfsp-2.1/bin/fsreg.bat similarity index 95% rename from support/3rd_party/winfsp-2.0/bin/fsreg.bat rename to support/3rd_party/winfsp-2.1/bin/fsreg.bat index 519132ce..8cad12a8 100644 --- a/support/3rd_party/winfsp-2.0/bin/fsreg.bat +++ b/support/3rd_party/winfsp-2.1/bin/fsreg.bat @@ -1,42 +1,42 @@ -@echo off - -setlocal -setlocal EnableDelayedExpansion - -set RegKey=HKLM\Software\WinFsp\Services - -if not X%1==X-u ( - set unreg=0 - - if not X%1==X set fsname=%1 - if not X%2==X set fsexec="%~f2" - if not X%3==X set fscmdl=%3 - if not X%4==X set fssecu=%4 - - if X!fscmdl!==X goto usage - if not exist !fsexec! goto notfound - - reg add !RegKey!\!fsname! /v Executable /t REG_SZ /d !fsexec! /f /reg:32 - reg add !RegKey!\!fsname! /v CommandLine /t REG_SZ /d !fscmdl! /f /reg:32 - reg add !RegKey!\!fsname! /v JobControl /t REG_DWORD /d 1 /f /reg:32 - if not X!fssecu!==X reg add !RegKey!\!fsname! /v Security /t REG_SZ /d !fssecu! /f /reg:32 -) else ( - set unreg=1 - - if not X%2==X set fsname=%2 - - if X!fsname!==X goto usage - - reg delete !RegKey!\!fsname! /f /reg:32 -) - -exit /b 0 - -:notfound -echo executable !fsexec! not found >&2 -exit /b 2 - -:usage -echo usage: fsreg NAME EXECUTABLE COMMANDLINE [SECURITY] >&2 -echo usage: fsreg -u NAME >&2 -exit /b 2 +@echo off + +setlocal +setlocal EnableDelayedExpansion + +set RegKey=HKLM\Software\WinFsp\Services + +if not X%1==X-u ( + set unreg=0 + + if not X%1==X set fsname=%1 + if not X%2==X set fsexec="%~f2" + if not X%3==X set fscmdl=%3 + if not X%4==X set fssecu=%4 + + if X!fscmdl!==X goto usage + if not exist !fsexec! goto notfound + + reg add !RegKey!\!fsname! /v Executable /t REG_SZ /d !fsexec! /f /reg:32 + reg add !RegKey!\!fsname! /v CommandLine /t REG_SZ /d !fscmdl! /f /reg:32 + reg add !RegKey!\!fsname! /v JobControl /t REG_DWORD /d 1 /f /reg:32 + if not X!fssecu!==X reg add !RegKey!\!fsname! /v Security /t REG_SZ /d !fssecu! /f /reg:32 +) else ( + set unreg=1 + + if not X%2==X set fsname=%2 + + if X!fsname!==X goto usage + + reg delete !RegKey!\!fsname! /f /reg:32 +) + +exit /b 0 + +:notfound +echo executable !fsexec! not found >&2 +exit /b 2 + +:usage +echo usage: fsreg NAME EXECUTABLE COMMANDLINE [SECURITY] >&2 +echo usage: fsreg -u NAME >&2 +exit /b 2 diff --git a/support/3rd_party/winfsp-2.0/bin/launchctl-a64.exe b/support/3rd_party/winfsp-2.1/bin/launchctl-a64.exe similarity index 69% rename from support/3rd_party/winfsp-2.0/bin/launchctl-a64.exe rename to support/3rd_party/winfsp-2.1/bin/launchctl-a64.exe index f77c16efd04fafc48638cb09a8a82e132cace934..1a381b359dfe515314de4c169afd11370aa31115 100644 GIT binary patch delta 3017 zcmZWq2UJtp7JV-XAv7ftOhif`bQE5IP^6at3P=rAnV}O5J#-`xfquL&;d4uZ_WTCVU-9W{I6&jH$|Ci z_5`k>|C7IU#>S&@h@TsMG){PaFSB~xKEtB8uF^I+#o2gA(aDjKVUYk}4!8364mY9E z!hC^2wjM?TY+<`&q;|i7$Hqj3M^Z!S0o*K#6WLKiUDc090{|48jgbaf&8?W-2w@P| zx`4UQFKnK|;Xnx@pbDr1B!I{@E$-fr`}hLhfHvR*__0OBqCgTmORNVZH9PHYfJsf^ zxiw%g0Ak`FBl(mwtTI-GKwcP!iNDLGZn32#9c3#}oZ8-~38#n2?VkvJsRw6MtQpm% zMJpGl=Bs+-*LHB2yw%NxlE1^n$q*CX$AQB@7)%)9`{Tfa39o6GsB{Dkm%jI2zU`|$=fm~H!z^J$&H z#H*c`yfXL%MJm#&$%ZJZzd%;VY~Oh%_z7Zy@7YfXdoVQXJE-Pk*(7QA50Gvjcy@a|U32aDUM;vY6* zzeF$8vh18D@-uBkh{@lcFSk8hKQdh`_+2$WM0{u}J!I;PY&{GzoDa4+A=EWg3KB?K zxHA*REoPKE8JT%s^9_1)*BZXgPfj+r=B*w#d$q3x{UM*vg2=>GKup|Oc9ML^Kfleo zdFR1uPShp|SUMcAsT2bVAbEc_4g+}rge63V;Z;Rd zHdbY2aXMmVz0Z2P?}4@*kv`{MHV9@)81f4nPs5~v4;mRoZ|yNUM)iuxFBLZ=4qf&u z(5`-RtJp=6FV&zxse*~sg_u|p(vDvR2_itIHXIHTnOHe4Dg8eaf!)ESw!uI+aXTc0 z4xccH-~=H8AV0RIqI7_v2~g9t#LlS}K_ueVTit`h6oErbWGBQ# zRQ)wt0*wKk9_@@m*1h#b#Iy#2-KiLFpb6=!Ye7Gk2UbXfL?o({)HO)DBwY{4lqdjg zO#lKZ0;4z)(a`oShhGF`P7S1*`A5>(pcF>PnHu6BMfVN~$8%d?t7ywGx`Lz1R|=); zilBDSkU97BtqU7@Qn)*rdcmdB7jA9vLwK_tU8p;Bi`bjlZyJcR@ge)&yj2=CvWLzI z3?&p=x@uVKJvKW-UN%ITQoqq-^m-MSE4IBq6{7k^?(Xvq(@R=GHA?W2n;XfwB2(g2 zyYU`QSxVCnTstN#+3~119TS9I8Zi@Z*l8QO6zMM z9&;E{^l^uvN0^H(3N z%5zP2MklMlKbnsUsnoi$X|3)u7u&m}Wnb)2KOjc>O}Y;c&pH}$UHX`m)ZE2F}qWuA2(ewGc8?Gp+ z)=Rs`m3@|u=JanUP?l&r?Gy_8iWu_N{X0vC`p%%Aq-I5Ko;Axrq$$p>v#+bRndPmZ$4?(bNjy@tdpI(Y zm})KWRTnp$omU+1`|XZQg^Ti}qSEc=Wn{qNMoMa!$#SiM<{9T=roW2dc}LR$w*Ye7}OLZn@?sB4>SW0RdPaIi9aBd~r)lpmS3KcFm zT6XlW?Tx+p@`m3m|G*b#Fzw2N{fv^UJ&Q#{KX&Syg=bHHIJW>0Jh7yTeRhbvNU!&S|w$D6t zfn9!Tg@|6_)ue9}$Cx3Eic>Eqk25|awVBt%H|aMwNPY=Mfu$CzpTo^s@AFDTR?_;6 zdLmv4Mfq_)N%Y21VAdVfod*%O>-SYPd#ha&6#j=QDe4A)rg9aJS5A2xS26A?1&pV=mE~PolI@9nlzuolSh0taFmip?ThcZ61(q?{?pbV|*Au$y;se$+ zEvma*=uu(_FebI@j;7}HW4puYBPNy1QwC~`eS|&wuibThlDx8g)U*^lkw?00 V;#f6T?_w-Pub_wdmHUn({tc+t>g)gj delta 3072 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 hR{x!px21(dI(QqgER0x>=B{l( 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 F{0DB|3DW=o diff --git a/support/3rd_party/winfsp-2.0/bin/launchctl-x86.exe b/support/3rd_party/winfsp-2.1/bin/launchctl-x86.exe similarity index 67% rename from support/3rd_party/winfsp-2.0/bin/launchctl-x86.exe rename to support/3rd_party/winfsp-2.1/bin/launchctl-x86.exe index 46e0b8f6d45d14542458bc9d64ac36b65ef367dc..ac018f906681b4f772aaa9c0f93a48827f82b5d9 100644 GIT binary patch delta 2979 zcmZWr2|Scr8-L$-#u!;LS!S|in6YGiXEfGCG02j#L_~?H#+^ZC3<;A7Llk2|i$bZ$ zQa9S{xm4B&Ek^DXC0ca*x|Ss0)OWkT@B8jKzvuj)^M9W6oaJ|Z&p9Ot;)A*CL9xKj zk;}3sNLvPY`u>!86AwR%q)#yS@PmKw9=_HRoHwERS^U83zTeR@VB`nRn|S@;z3E~5 zzsCUnuWY3PfCq>KT(583|I;J}AW#-m&;-zcV9pxaStulfn;&TK7_@Ca8 zWQd_ehy;nO{LlFBHess*4*5eF{i)0=z=|@dE+NMeV;*PE&)=3}XJc!vRyKm%5zvLk zc8p>&LnFgI=#eykzyZZzv11stNPhqrh9p)WcDSp=%Af&&D#|~G&ZarjB^~>pej5QG z{JWn=D2q*viHV8<09S-7Ei`%~gAo-53?jYR49_SI&6CEAia7{`g4B3AduvQo7>&h( zfLp>?jF$R1B96m~j-f}g_e#R~`B1&h$)@291^}RiS25Zkzjgq#3@L)Z_f0$P`H8h+ zWgMtU0!#riKmkY+v5@HDk{Skt0+zrYAY7=T$^t3EOw~@1QtN}QMrw)ik{A#Kz&!jA zO2#nVHGNJVl!i)p_znqmSE!}oO+1z}G+bE(yDJ45NNrDO7Ijo+$*ducb#>Y|OlA*W z?kV9(U#iX5*p1Mj!aPKG2?7EkND&#f?Dk+Z zZ$!nXVeHW&rJ!I#D~0R+~Yd_5HqQto9wc*?2W1T}Do+ zH1!g71DZ~g&1AmnzQ6-N!94JT@QJpuGQ+(cU3(;pqP^oIY+X)+m&N@vuowY^*kZP14lcgwykJ9FgSm)sMy>EC61x^OGWFqr~dz!cK=);zF; zr-Xocs79EFEc@%m$kyy_46Nto^Y1N8A;-;;!UnyAn(JU|vIYF31Y+gQDI^k^LN=#Z zQ>+8wO~P&Z+CoTEN#2*vq_Nnc%xJu18lfRYhua*%DxS^Pt}KA-gP5;(T)6RONuY&m z&#;X+HGc8#(h3;wxT+c5&UTJ#$$DE&dUcSwIUv-i#yqS4oNRwWzKg%PyX}x;5p`w* zdJ}z-&9Ut=m?>5GaGYuSR<~nhY137U{g>Aw23wYrbCtvzbT3h7$?3z_mT~pUQOVv( zq1+ea34L0eDPxaA7tf6}?U>rOBd6KJ=a1ggB79vyS7K^+{iDa*`V9j8n~$Z(&%Gnz zJh|KAA19_BIe94K)y$XqC;eA3X|7etRhFLQ`#C|S?lmWO?RjRee7p4W+*p0m8vkim zY)*o8K)j3Z%rVqjgze^w-db!CvIX-d5&NeUm#!B3@Wf@O7av`Vb2qBSCL1CCa2l33 zst6D=ZtT!0uW!~SK3_$4Q={zC?#3fBlMdWj??z|EK8?pLcGTp1o_%Y@3dziTx)4Gb z=5#I;2NUjvR@^(HF-@2#EqRf3K1_3L4|9(G`rU(&b1Mg>CJu`>pl90Xtr0#>@xmGH zX)a2ab508Vz$o}pL1Lf$qxW~L9859Qon86|f^rD0Y8iUx_2QoQx~M-NzFe_+Jj99G z+Q9IYqc%oVbvRh)U46X8V$y=F+>>RgP1!WH)eV>m8hPL3kJh?zRb6DbXF4gTXG!00 znxX2YpWj`;)pPGrJ=Nb`gn5#Z8T0L|V>&X`;MIcg_F92*vA;1QPQgGWckjipkPlvY zTAY%g+F(Nj$hE6pqs2KDG;Wo;%H^4(U=|}fvjwd=VBqy|aP&}$yIx3T{G%*E;lZ%Q zcAe7ghGPb6+iGV}dxLBIQld7_RM@R6@-5`ijN~qOZz>gXPTs%vwb|s-MNg*TcH1Eo zR=P*Yv~CT*cPb?IT3gS~q3&drh}y}Cx{!$U%n#efM(Bh3HViJ#9FA>k}_8N_+?KgUK1S}oI;k|P4=p!*LBF}zwvfy=$SW(Yx%t?{MCxy z&%R*l^#_}|CvSF674$E!rhSd?`&`iLHwCtYixZ+QnV#7;qhoZj{H#;{Tf!@I>B`mu zudlxZHAElHAJi{?`TCUdgl7U3@4%jpeO9$z8y$*RY-j91W(1#(R8PxNL6qJML{LM^ zW#u%cPJ6`;rsei#m93-ICpGVuWt6wRMBlbrIq`5i^y^bsWbCx`I`&c_ z#}R2?nDT3~i2E;;CGVETH+IVsB|O1?-zjI)e?>dqxG$|4bDq&{-+ADLJS)89lV(@E zALQOZSKWeatFkGp-EDG9PVpa^N8iRF;=i*MY=n~i>v5D(gycvXuo{emRgub~!L$#1 zM2|KcnwUM{x|L5HP7k8OW`E~R86-&uiT511WYL1?D`Key>Q!I3Zj6Y$7RFh)X~%DM z=DVpT@`VF7tGOIbarvh(Gc8A18vlwWS^cU1ZOqp~r6Hon zH$f_9-R!+;{PR?UcV_7EW%Z)cN8{w)eOy>m)E(5BF0*U7W3|T4h{}=G11sg`Kr=;S ze!v|>TDdN>lJq2FZ~MU4C*h3A!vhg*f6g-YN5`SU%H@ZM*HV;;iw}FG$G667>G+ec z+*P0BA5Hoex%B$Wr}r;Erwc~q+5nGa*$Ml>UHdJz&3&wBtD<6^Gn!_bj2DN+soq@2 zETsaB^-yP>ci_2{hrx^Boy@UfLg#{#&arb<#zf;9?+)`evUy*R8B+w>YdQ(P1F|yuthW z$F^M;lI+#lpKbl`3@c<@bhU03@%vo3ia6-5@0<0~_gQUqVD!WWcAN(>m>r&v%*3gB z;>xYKB_?VLqu-wD{o%#kizu+K&^(ZkR#;IG=HiDkX&j}toyfC!byPo7Ej8>Z-{Lo_Lde*@eY2Lw7mYVD z#6fYtLRX}NCn}1^UhoAg6zqoeSEe^RTP_DjU(3?=+}u!6o?ynfV0`@2AwSLG`E{ay E1KKX~jsO4v delta 3084 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 delta 3533 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 X%3$Zkm-qC83%cdTIDgqNW&q${55%s@ diff --git a/support/3rd_party/winfsp-2.0/bin/launcher-x64.exe b/support/3rd_party/winfsp-2.1/bin/launcher-x64.exe similarity index 81% rename from support/3rd_party/winfsp-2.0/bin/launcher-x64.exe rename to support/3rd_party/winfsp-2.1/bin/launcher-x64.exe index c5172f9f26eec00e1887f9860c2b4e729b0e2ddf..d6dbb588ffcefa9c37935df42b9549a0e79eedf9 100644 GIT binary patch delta 3668 zcmZWr2|QG58$V}eY@rAZ;u=dNH4PdfNyZq7Ft+f8VGc&KFq_?ELPVBM6e_eUOGO*9 zwc5(fr7Z1aX;IxuLVai4`hI=C`_Au~_niN;y#M!k-uIa)%R!CrL*?0kQ(Pff%DkC&P5+h$% zJ^z_3M(5(@i2OG$sP1;y8lRe*k>7N16h(a@Hk?f%DBbEi*Lx@9xpVf}CfX@gD7LnXGACm>h@tYCjtnN#6=HF? zaX=h~3eo5Y00DrllqbaB!VcqbSu{R_!*=F`xP?SQp?qK?{KE}v>5X=RXi<(_2(jHP zv2~&G_+&1Z!v%o#AeqgFxFjxv&j_V4JrOS?0sw@gC@|=*W`#phAU;XJi;BJK-#XjB}csDVq|wLt^;n)`CKqf%ZFm&IVy_|UHq zKoUIRZoGV4%9qCAJ94w{7yvD;)<0je#q6wjYv5SP0JeGr#aFK^T zcExWDy&||sR<_Uqpcn4-pm?mq{9JGg-HYRia7Xqg(MC#qe#=6)ly?;UC%u1SZ07U1 zj1U1I0t_V?BMXuJ1Aqa%lS%~na5+^Q?1G!AYsel8x!ufUazcS)lBjM%h|8o!ML~2b z#6xxkJeE|>l_P|HR_?0ANb;}GIX5=#&5tg?qi)!B6lJZ+);8ZuN#Wf&oWflnYJ34vnBf;mCSaD3rsc z13@s$N5dpVqVD$CNx$JPoNyo({@|mbA^r`Oln}`%i9?5g-L?9@RWeH8!d-O;`8C%*3seWSO#wV$ z1`q*LL@bbJI`RnxXn-XU0?=W#U>-<>GlSbfVy!2w3ZpZQL+&#Q1rWrzK54mC=}zg> zil7XtOpLpYKy9#27}em*lVezS50;?Hs^m_T+}YOak1{of+NbM^Y8^vm{B&*0#4@L9 z3&MiYT4aJ4-C2f4fhd#`CiI8%-QmC+>I#3L8r6ptVCBddDI$SrW?8#05(PSq50w@Z zuzL?XaI4qIzv?oRI;Oj;rF4IM)R?M)9>;HQ)moHmeUDek`tXFyjWvPkatbQtsi(-c zvJ6N*lQr6TTnv6Bh{1R8!=0;DnOkql*6z+C>iWGWSk;?;ukanY3gcLI@HS>I9L&lW z$w{NVwN)@E0zgjg9~a5XuyI+bVqT*p?G_zZ&~VFkZ38&2xBvhO3Hc z^6cQ$)%!C$UmjGL!|!Kl^*l>sJv(eri6YpJMY?1wHuV&N`a}!$!^3uUB=4K)8TsG# zZ|unXTJ>%0$&>0!`O|wz&#mi}-|v@mG!?5KBZ$?H!ij9wzjHIgW{FG)U2!*VcYMPa zHSn@=qK{P?j*Ix$9Gh^D3c?dFz5xjG(lQIgQJ@rnp%BO@U0|x=rt8_-zS7B_#sTF- zyp~F_J>>7HxVWa3o_A>u*N4I_`gDcoF=eehw##SeZR_1{2N$mq8L7(jcUl#a>>I!2 zm5Z^~1Toe^+HH}EG>8GkmS{9+D#jWjpx*zT2&@VMEkS{3(_RIw4r8x$!kBZY?N3b%pAS?`jtfD#5)YOb{O)Nf{Nh%9<}vUPqD0Y_TeBzu$Z z7}K2fy2^Akj@SzetD4Q?|19j9I>LL&wUg^2P6RSoqf~ zZVk@c*H}cHHb(b0&nM@pJkw&h4YijQ?>hfOy~1Io8n9|{T?*ra;3{Pgsb`lLU6C!Mgl@mAYoDPB|iq>a%Vww$Eu z@P{zX%HxUH&r%|Wrr`d8(+7A)>(lvOz)XZ6v z7^K^YLuV#MU$b#$@C1)ym1l2N7q}jIy`C4CnfYiYP`^*uK2y3w|2D1S_HM07{gLvr z=UK->wV#BrrWvo^+zmXsq*rQW*O0C3R2!ou($gUpp3u; zR(_b0$^CwWl#WSVIXVMh;pMBA`mRRDEMBRW7j`l<@SWR!9bs8O?SJ@aP_(h?4;^7q zz{~ZiODO}S{4dHwCEH}R|6J*IzjrtxWvgM}x!4C;`3K`dXK(72`>cAh(zva5N;+&u zwRZ|<^Hjygb%(tUiXjt)<5c@{Sa|5p`MIVwr%t-ER{3oBOByTFrGl^fV^8-)px}I4 z*MI)%Oje7m9cxTGSK*H{anAmT64CbjIICbM%b)7V-&48PpwC(y8)w}h-sGi<`b=%e zT;(+;=aW4^IpD#WyB{-^tL{39^_;%7^O4UAIeZtZNv64ku;JCNAhiP}f(n@xZ&SQX zGc-KCvnLbJ4<+}TFG?ToyF)z9n&_d#8Fn+~R2NFEaXEo~{j zqV=8MJWr&@ZwfDR#Qz;dx^zcIn|qAexv4$+xgw8V_EEbd)*H38fw62GrmfQYL~T&a z6$Pb#bsoc1JNe(b6&#(aNgnD=dlxeFz&2szOSF^w9)rI005W0i|C*^B##9f3yJeIV zT^-xG#BSZ0uj}XP^YVoO_dh!0Y&T_ewOxO>+6nGS)es4VrDr~duGJyQTk8|5`+Wr8 zAM%Ez`k`x5@F7xe@sOku|LnY=%9BgOXWcT1@ zDFZ1E$%2%=O(Qz&IHQQdaH9`LW`awSKL|reGHcihmF=HvqKZB0P`j>~P*lrHHAU-n zVUxNGCFuupVw&aR+w8=X+n2ww(cf*cE|q%;zZ31b7GO6ypLwv-H$+}zbajh$?U|%& zvxIJ|WLo=_+wtcwZUk&SK66rUDD3_56%SDg7q!>o6zDdl2Q5mxo!9Lvwb+)O;M`RfAiFVjb0F`$U~O&72S5CTZUY#T?`fB_h?eqA9Lg~@~D z&*GLjulyB(LBmYY))0{hrv2(mo2=m2$LIDRBi2yb}MkE%-!2BQpu*L_Wq3|q`kXf7) zmy8-NAfPh0(j90L}{^7w2q{3`{JhK%@`XphSUv3X)wfzUfXM$C(gf&b+# z0)Rw>;%`T~gY|;h3Gn}6CqlOPYlGjB{r(1;MspZ4HVIKxJkZ)bMeh5%`8(i#PUyj9 z2|Ye77Kad@nRUTk}2krfUX|^43X#n8!#TJ2+#!| zAT0qD7uKw{PBAe84p1q}>YD%yW7u(VFgE}ep{oLhWtH<5B)~r_*DUjr(Q@K)g)%vT zzY!{3Rr@*COMq5jwoIEqmn7bQ^j?gF($&FhNIcy@B9%pZ3%KzyusfU2je*e`EW!uz zxUlmkwvZv16>?27%6q=d(^O_Zc1F599#T z0PIArFcDHH;3|sqV#o72n*!iSbiM$XBM@?d5F|E`WVTgirNhDm9tRGH=er~UnKA?= zYi;E!6vX<7>0-7x9#tp;sSVULk<9gnH^;*w@htPyIk=Y~65TtW0!gH8b5L0YQ9+#r zTo{nn83dgqr~rWMRW)G!>g)PLv_M@5umG$8YXAc502}n#2H>F2)&Lj1sfc=*2((7B z!#Y6gIy(C#ZV_1@&4IxHkW^mPXYJd$3pI89JYN-Pm(L^EknL@dg@Vu@dA`GjO21#+aax4bKU{sV&Dy}R09JtD` zzS$Hjw7ZSWk4luYg6tq_U2YTxbl0xUWc7rZ_Y+e$6;h^}cHh{h*?DeHWVYp_qYZ}^ zkPK6r`)^kig=EA16H*Zd$_h?7Ke%Y!E<5|9Ii1eODfGiqj2R@w7$ber=AMrmPMj<7 z_;dAYfvxkHf0cT%eMuFx43A~%&c{(8vvL!>ycr&plOxDu%XJ}bB@&ZP338&ld-%99 ze0?ak&@%EeDvfMoLqh^%dJ(M{N5nKXkEkTepbCOB$dy)-3%okaOk>4G$UsAMlIM}P&@fmF7o~KsyNo^I;vEw5|V0_V?Yo}g1A&gh=_8) z;Z-qA#4Kw4g8xU?R(`BRVVUBfFbVD)@Z5HB~ao*sge=11aJO zXmPt7FrXZObA{Go$SyGB&u0}?jl1(SNy`k?FDzX8K7|SDe)+@x!*9!`e>}mE#c{i8 z62GtTHw#_bW~Z9E|5$qJt1!oj123YTrpK!V7b~Qi4vASNyr_h$|sp_nXtqeWtN zY#bS-V@0Nrt&k6C`jWe&RYvx0$390l#fXJ4cQzeY}^m;Zioe-=31QW6dd} z%GXUvNf-XmcoEpvdXYs_#Y)2pqWQOWmuRPtO+-mWtGd@kpX*M*4o zrsICgl?QV2HH1Q~!#eZ) z@OBsFAKDzL*L#$-UY8~r{_d5hQkdrb;_20sRcYTT+KWcbT(u69#%bTiuJ~@Y$i~h; zw63YRWy1G$itPvd+Skk(+cyKL)S)j|1FjEhq_EPe3`LJyqxS1lI0M0B-j;h88K3W| zQ5#quvBO_JdXnx;>*h`b-tGUYFsK&GO=>Eh&c7zo|6+O7g50<5gyjAwLhp-94>zvk zQ}a!B4LViA`K{{*1}seW9y!nEPCO*XX!(a-JhE*b(UAVBWyMGh;kPIPEu7TxAVZ@1 zFgN*b_>IvQDHm=>suD`BB)x0PYCprbO1`NWoSxhEe#|^IWp^hx`%~@p#vyu0D6?k^ z$s`!-GqLfFi%4gCT3;9LWv_iAk}Aqm3*Y&yn?1FMs`jo(@s5LOzS{GEvO0Y+7L+iL zn=bs~`XwpI4w{O8<@+GR;M3GU1+-Gb!EeHy#n%#hxl`(swpTs;&6Bb?Ork3dnBw)` zDm9rr?AY1?l&b2UDb9Y9^!ZL|#vS^B)8Q}K5r@@GU3PdDuQBtR(yl)!4-qF`Q~HS6 z$^Q@sv%0ouH%1*Qy+RKo4j*nj(05X@NT+eM*y-c=Z(Ao{&pbb%QvDXV80xuap?$!) zH!VaDbsO8@l6j1tv)Yoh5aP)M#!hkUtsc2ZvxK)Z#b=EQmXos9stqUvABrAYylSm} zkE2d&>AO_-vw!bX%JW?rk$-w4hW_^8%Y(1)FUkbDWx&-DmN;J7;YD&*iw;=SL6R73 z?XzWt7HZUTl-gWZujtxn(;K|XxkT&KwT{kflclPmQS~?bzsOw+er_CY_ROh+eqm;r zO60haRdLFX4QukZ#h9;&%R?T$6ee8x*D--+=iWOHz%H) zJ~Uh;_OW=Rr<=oS*DLw!>c_UlM}12#{VmZc@xN|aG9FrOTy(L}A|t3ZY$z#E67}I~ zLCL!Ln09Gd$3nT(i<|3x{@5S$b@*T}tGNBomfR+-4bEfTro%78-zVW7U%EH>yTZ}9 zw2wvGlU~VVH@cZ~jv6j60(%_o9}NtQ50*YjGrv8f>E#U^`uhR+TjQ?xgZ)Bgwz)Bh zjT=t{bLy5Po>x*)`mbXOd7HjkGWTeM%;ub%7$vF>v=GvQG;nHPb}aVJw3hC(IhNmi zX;0zE51mvIWci;%j)Q@S~Oo<_`A+@3fB)M|YNeZDDFb zc5|~^QkOzT&=LuRM&A7T;uTS|7Ch1VP-CkScgUSu+8z$zSr?O9t z6a$d!107Oby0-n%t+=6f*$DRjyzya=r#EncA$?lndPc>Q{q0=Mt0_;Mg4XB#bGNMP zkc(uq(YDIrhs^5d+d~+SUZ_)Cby}!-l7WUO!=f3d1*TL(AH|aOnJa%>7|was`+(8p zU|-x9y_%s9-97H}V8=^vO`f~$IB~CvetI?ZTFDu z6d!5HUBC3aoEdfCNAH_A-wf4R_v34x*VgwBFMUY6m+zGQbRw?(o&7K{y6qJPYsz8~KfP&HY-uXkqq(AjC1NrB%nPRiRQRRy|@B;@euiC23vu5?&G zqq8(W#3|hy#VA~lB(jfn=k@g+q%81!CJFZ~#s`)s9(&`+-F1z6_e>^B$@j*2x_TrrKvy5|MRbuZ_5p~XsgaNkL;52^RBs*C>nP)_xRpy$TPfcak$C5^HM=L zW!G@tnDJl6dMms2yp@+^_PA1VzPH9N?@Tan=w3MXl=;SvmI7!oOFgfCJeoQP|+0`v(>__%?pp0at7!EdT%j diff --git a/support/3rd_party/winfsp-2.0/bin/launcher-x86.exe b/support/3rd_party/winfsp-2.1/bin/launcher-x86.exe similarity index 76% rename from support/3rd_party/winfsp-2.0/bin/launcher-x86.exe rename to support/3rd_party/winfsp-2.1/bin/launcher-x86.exe index 5abcc6a70c58d4e18864c9db0185bd4f9f457a5c..6ebc1ab85a2348b2052396b982f2fe9c7f657120 100644 GIT binary patch delta 3637 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�x~33(fjb6}Rra}MCq1bCqq&;> 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 literal 0 HcmV?d00001 diff --git a/support/3rd_party/winfsp-2.0/bin/memfs-dotnet-msil.exe b/support/3rd_party/winfsp-2.1/bin/memfs-dotnet-msil.exe similarity index 88% rename from support/3rd_party/winfsp-2.0/bin/memfs-dotnet-msil.exe rename to support/3rd_party/winfsp-2.1/bin/memfs-dotnet-msil.exe index 90dcb721e31a82a4386b7f259b4e8a4a556c5af9..fd5c7db3f93aeabb1e3d6d1d42c64ea30581b16f 100644 GIT binary patch delta 2622 zcmZXVX*kr27st(S#u&zgOonV@7p33O5EU}kY}vz2D7j?HHpn(imJx-fv1iE=S!+;P z%Pq+|HxUNOzQiaYBDd~ypZ|0J&pj{Bi|?EBJ?Hs8pOc>kOwfT8Dy*wsY&kW_4CqKt z9nk|OunY-En>~N0bXwsbx`07q^R1#s_TgNNRfk$GSn{DS>$K7f$N0x;zvtz~HW+7^ z_Fkb|hL|xvT|o0lPGC7WH~@eHq+s8{xs~FK<2F$cE+C(Ref3j%L6h{hmW}t`2855S z=5jNmE&Z3)J31mH$;S<3Y(8rqxj(?%ShXN1);D=q@JJT`h z@`o_51kfZr%1aZt8qA3Y@v0h(TUP;y@jNRp3&h;a(f6-9f}HJE<-9Ky^*rxRsP7zF zR{EOb&B~*Ic>~in`?zOVeN(kd95=6EK}?B(Hp0sTnLwQBDx^TZfE36I?ftdGXdly; z2*!;>yp-cAsM&z~QRXoHl!o=wrCIp)(_H;h$=qM8P%;N*u9LSrf%Ok)tU0Ga(ixkys9pB^Csb=R;|G59d1J$ zMYsT@2;ZZH`xF0rn=OALxnMm$;HBaSivG;v)5*6PBdt9Am~*jwmm|iehPOJoXFw#J z>u=)#gp&hi2TZgOfM)8pH>7GP6qFj`~ab@5}Mrm8ylcR68DYIqz@ z6|bs>*Tic&fqFD6k`xWNB8al}B6_i(MWNOW5Cnco}FI+?u#liJQ4jG&$#{T&0%C%tbOo=|&D}rYGJJ zatzqo2tBXwfk7ua71;&*R&EnjmgHWI?CMpk|Nh_*w7+#XGDUDg%*&GXCO<2xW>2^Q zeJ#>D!j1fKDzsNJXyLF~SaI%1v*Uu5V{(g`&F7vh7Pj_WXLw9k!`neCrlONW%dNPO z%}+RCbFx*)V0g@pj4hPmqNWak3Ys*DTn!#e1v1rIjI8zLke z7L75C%Q4DcQ08s%H-3FGzJ^p$QRw&rY843Lp)I2z-B4MK`~Tt>B>*t(~Vre7TZC=m4ZS+HE zY^g;uTrMb=6Vai3{%u-#FY4{`v*Wrd0+nw%75to&Wu70T%HNj{9_uj@9UFL1W-{fX zZ}7a)$ClTi$-Cl}uDX2npoRLJx+=OmQ9}x^w{Z3h$Aa_7aja z@{VLszBA)|2oyp-RVg7El<7QmJZ8VqFd=nAfR$~55dTxrvaf$MEZS7wr99+qVru&J zi{D>L7uYL}D;{cNu;G`_SJ_2hJIyXTbu7m=o#LU)TWGCUKnu!vU9;12q@>uKsAPZQ z9UQ~eEvQl}5#O`mLaJ%&{_R~?=wWGkXIKG$nH#yuQ)0@ zphXF}uGL7+TC>3u zvr!ig+|4GHamg)5+v2DqHg-vi;WezV{smb6i%83Iui95A`nb8n~4r zdBqm8EJ^*bDLsjF^=|(H>)xwk!G`k(`Mp=Rlw_RA@kZLQ<<^*G^;Es-NT$H;?wBI~ z3QXg(?jq+WSv)h*HA3ISCQ}cb9j(j|e^Ep&eLjhJdYo^%&mMR*WDFxMavclYO%Ec# zbkd_AMY70ia1F{6u^)l0yZB3?I-Z$^Dr>%ky4PId{`Y;lbl&)VLv`O>{0rO&He~z)kX7RKu57*VlDY(#O3zkZ?r$D zBIKZ;ywWchk4h4dS~6hOpgrlw`v4Z_pvN;#S_UCGi}j1n|KJ$%>r+qwj(c57En~_; z8;6&2!`Bd>e2k^&`kzZ>bjQ$VHz(Js#$FHeH>rG9|0EFa-cqlItnR`%1-Fma_4#z5 z;iqORG)A)x9y8d37@1TCiYzWNz3Z~{_!4^k`a>mE!NKE3_G|_pB`o^ zz%E+AeM+6N3DFLufRzkH-Q4JzVs3j4y|47UD+F0m`&PnT#cT5|XmXB|-E`z?c@$pz zE|44lUb)_0%BIrhtY_R0xdDRU&PTtZp*ZjG_HLJSPMwYV`bV+dVq}~vbJ;y?z*rQ}X31KTk2)%IPbsOwD=67QIfY zqn5`!XDN{=5hs(Hmzs!h4}xo=l}Xe}^kkRI>p?K!$)_7^B*pGN=y delta 2735 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 - Provides the base class that user mode file systems must inherit from. - - - - - Provides a means to customize the returned status code when an exception happens. - - - STATUS_SUCCESS or error code. - - - - Occurs just before the file system is mounted. - File systems may override this method to configure the file system host. - - - The file system host that is mounting this file system. - - STATUS_SUCCESS or error code. - - - - Occurs just after the file system is mounted, - but prior to receiving any file system operation. - - - The file system host that is mounting this file system. - - STATUS_SUCCESS or error code. - - - - Occurs just after the file system is unmounted. - No other file system operations will be received on this file system. - - - The file system host that is mounting this file system. - - - - - Gets the volume information. - - - Receives the volume information. - - STATUS_SUCCESS or error code. - - - - Sets the volume label. - - - The new label for the volume. - - - Receives the updated volume information. - - STATUS_SUCCESS or error code. - - - - Gets file or directory attributes and security descriptor given a file name. - - - The name of the file or directory to get the attributes and security descriptor for. - - - Receives the file attributes on successful return. - If this call returns STATUS_REPARSE, the file system may place here the index of the - first reparse point within FileName. - - - Receives the file security descriptor. If the SecurityDescriptor parameter is null - on input the file system should not fill this value. - - - STATUS_SUCCESS, STATUS_REPARSE or error code. - STATUS_REPARSE should be returned by file systems that support reparse points when - they encounter a FileName that contains reparse points anywhere but the final path - component. - - - - - Creates a new file or directory. - - - The name of the file or directory to be created. - - - Create options for this request. - - - Determines the specific access rights that have been granted for this request. - - - File attributes to apply to the newly created file or directory. - - - Security descriptor to apply to the newly created file or directory. - - - Allocation size for the newly created file. - - - Receives the file node for the newly created file. - - - Receives the file descriptor for the newly created file. - - - Receives the file information for the newly created file. - - - Receives the normalized name for the newly created file. - - STATUS_SUCCESS or error code. - - - - Opens a file or directory. - - - The name of the file or directory to be opened. - - - Create options for this request. - - - Determines the specific access rights that have been granted for this request. - - - Receives the file node for the newly opened file. - - - Receives the file descriptor for the newly opened file. - - - Receives the file information for the newly opened file. - - - Receives the normalized name for the newly opened file. - - STATUS_SUCCESS or error code. - - - - Overwrites a file. - - - The file node for the file to be overwritten. - - - The file descriptor for the file to be overwritten. - - - File attributes to apply to the overwritten file. - - - When true the existing file attributes should be replaced with the new ones. - When false the existing file attributes should be merged (or'ed) with the new ones. - - - Allocation size for the overwritten file. - - - Receives the updated file information. - - STATUS_SUCCESS or error code. - - - - Cleans up a file or directory. - - - - When CreateFile is used to open or create a file the kernel creates a kernel mode file - object (type FILE_OBJECT) and a handle for it, which it returns to user-mode. The handle may - be duplicated (using DuplicateHandle), but all duplicate handles always refer to the same - file object. When all handles for a particular file object get closed (using CloseHandle) - the system sends a Cleanup request to the file system. - - There will be a Cleanup operation for every Create or Open operation posted to the user mode - file system. However the Cleanup operation is not the final close operation on a file. - The file system must be ready to receive additional operations until close time. This is true - even when the file is being deleted! - - The Flags parameter contains information about the cleanup operation: - - CleanupDelete - - An important function of the Cleanup operation is to complete a delete operation. Deleting - a file or directory in Windows is a three-stage process where the file is first opened, then - tested to see if the delete can proceed and if the answer is positive the file is then - deleted during Cleanup. - When this flag is set, this is the last outstanding cleanup for this particular file node. - - CleanupSetAllocationSize - - The NTFS and FAT file systems reset a file's allocation size when they receive the last - outstanding cleanup for a particular file node. User mode file systems that implement - allocation size and wish to duplicate the NTFS and FAT behavior can use this flag. - - CleanupSetArchiveBit - - File systems that support the archive bit should set the file node's archive bit when this - flag is set. - - CleanupSetLastAccessTime, CleanupSetLastWriteTime, CleanupSetChangeTime - - File systems should set the corresponding file time when each one of these flags is set. - Note that updating the last access time is expensive and a file system may choose to not - implement it. - - - - There is no way to report failure of this operation. This is a Windows limitation. - - - - The file node of the file or directory to cleanup. - - - The file descriptor of the file or directory to cleanup. - - - The name of the file or directory to cleanup. Sent only when a Delete is requested. - - - These flags determine whether the file was modified and whether to delete the file. - - - - - - - - Closes a file or directory. - - - The file node of the file or directory to close. - - - The file descriptor of the file or directory to close. - - - - - Reads a file. - - - The file node of the file to read. - - - The file descriptor of the file to read. - - - Pointer to a buffer that receives the results of the read operation. - - - Offset within the file to read from. - - - Length of data to read. - - - Receives the actual number of bytes read. - - STATUS_SUCCESS or error code. - - - - Writes a file. - - - The file node of the file to write. - - - The file descriptor of the file to write. - - - Pointer to a buffer that receives the results of the write operation. - - - Offset within the file to write to. - - - Length of data to write. - - - When true the file system must write to the current end of file. In this case the Offset - parameter will contain the value -1. - - - When true the file system must not extend the file (i.e. change the file size). - - - Receives the actual number of bytes written. - - - Receives the updated file information. - - STATUS_SUCCESS or error code. - - - - Flushes a file or volume. - - - Note that the FSD will also flush all file/volume caches prior to invoking this operation. - - - The file node of the file to flush. - When this and the FileDesc parameter are null the whole volume is being flushed. - - - The file descriptor of the file to flush. - When this and the FileNode parameter are null the whole volume is being flushed. - - - Receives the updated file information. - - STATUS_SUCCESS or error code. - - - - Gets file or directory information. - - - The file node of the file to get information for. - - - The file descriptor of the file to get information for. - - - Receives the file information. - - STATUS_SUCCESS or error code. - - - - Sets file or directory basic information. - - - The file node of the file to set information for. - - - The file descriptor of the file to set information for. - - - File attributes to apply to the file or directory. - If the value -1 is sent, the file attributes should not be changed. - - - Creation time to apply to the file or directory. - If the value 0 is sent, the creation time should not be changed. - - - Last access time to apply to the file or directory. - If the value 0 is sent, the last access time should not be changed. - - - Last write time to apply to the file or directory. - If the value 0 is sent, the last write time should not be changed. - - - Change time to apply to the file or directory. - If the value 0 is sent, the change time should not be changed. - - - Receives the updated file information. - - STATUS_SUCCESS or error code. - - - - Sets file/allocation size. - - - - This function is used to change a file's sizes. Windows file systems maintain two kinds - of sizes: the file size is where the End Of File (EOF) is, and the allocation size is the - actual size that a file takes up on the "disk". - - The rules regarding file/allocation size are: - - - Allocation size must always be aligned to the allocation unit boundary. The allocation - unit is the product SectorSize * SectorsPerAllocationUnit. The FSD will always send - properly aligned allocation sizes when setting the allocation size. - - - Allocation size is always greater or equal to the file size. - - - A file size of more than the current allocation size will also extend the allocation - size to the next allocation unit boundary. - - - An allocation size of less than the current file size should also truncate the current - file size. - - - - - - The file node of the file to set the file/allocation size for. - - - The file descriptor of the file to set the file/allocation size for. - - - New file/allocation size to apply to the file. - - - If true, then the allocation size is being set. if false, then the file size is being set. - - - Receives the updated file information. - - STATUS_SUCCESS or error code. - - - - Determines whether a file or directory can be deleted. - - - - This function tests whether a file or directory can be safely deleted. This function does - not need to perform access checks, but may performs tasks such as check for empty - directories, etc. - - This function should NEVER delete the file or directory in question. Deletion should - happen during Cleanup with the CleanupDelete flag set. - - This function gets called when Win32 API's such as DeleteFile or RemoveDirectory are used. - It does not get called when a file or directory is opened with FILE_DELETE_ON_CLOSE. - - NOTE: If both CanDelete and SetDelete are defined, SetDelete takes precedence. However - most file systems need only implement the CanDelete operation. - - - - The file node of the file or directory to test for deletion. - - - The file descriptor of the file or directory to test for deletion. - - - The name of the file or directory to test for deletion. - - STATUS_SUCCESS or error code. - - - - - - Renames a file or directory. - - - The kernel mode FSD provides certain guarantees prior to posting a rename operation: - - - A file cannot be renamed if a file with the same name exists and has open handles. - - - A directory cannot be renamed if it or any of its subdirectories contains a file that - has open handles. - - - - - The file node of the file or directory to be renamed. - - - The file descriptor of the file or directory to be renamed. - - - The current name of the file or directory to rename. - - - The new name for the file or directory. - - - Whether to replace a file that already exists at NewFileName. - - STATUS_SUCCESS or error code. - - - - Gets file or directory security descriptor. - - - The file node of the file or directory to get the security descriptor for. - - - The file descriptor of the file or directory to get the security descriptor for. - - - Receives the file security descriptor. - - STATUS_SUCCESS or error code. - - - - Sets file or directory security descriptor. - - - The file node of the file or directory to set the security descriptor for. - - - The file descriptor of the file or directory to set the security descriptor for. - - - Describes what parts of the file or directory security descriptor should be modified. - - - Describes the modifications to apply to the file or directory security descriptor. - - STATUS_SUCCESS or error code. - - - - - Reads a directory. - - - - - - Reads a directory entry. - - - The file node of the directory to be read. - - - The file descriptor of the directory to be read. - - - The pattern to match against files in this directory. Can be null. The file system - can choose to ignore this parameter as the FSD will always perform its own pattern - matching on the returned results. - - - A file name that marks where in the directory to start reading. Files with names - that are greater than (not equal to) this marker (in the directory order determined - by the file system) should be returned. Can be null. - - - Can be used by the file system to track the ReadDirectory operation. - - - Receives the file name for the directory entry. - - - Receives the file information for the directory entry. - - True if there are additional directory entries to return. False otherwise. - - - - - Resolves reparse points. - - - - - Gets a reparse point given a file name. - - - The name of the file or directory to get the reparse point for. - - - Determines whether the passed file name is assumed to be a directory. - - - Receives the reparse data for the file or directory. - - STATUS_SUCCESS or error code. - - - - Gets a reparse point. - - - The file node of the reparse point. - - - The file descriptor of the reparse point. - - - The file name of the reparse point. - - - Receives the reparse data for the reparse point. - - STATUS_SUCCESS or error code. - - - - Sets a reparse point. - - - The file node of the reparse point. - - - The file descriptor of the reparse point. - - - The file name of the reparse point. - - - The new reparse data for the reparse point. - - STATUS_SUCCESS or error code. - - - - Deletes a reparse point. - - - The file node of the reparse point. - - - The file descriptor of the reparse point. - - - The file name of the reparse point. - - - The reparse data for the reparse point. - - STATUS_SUCCESS or error code. - - - - Gets named streams information. - - - - - Gets named streams information entry. - - - The file node of the file or directory to get stream information for. - - - The file descriptor of the file or directory to get stream information for. - - - Can be used by the file system to track the GetStreamInfo operation. - - - Receives the stream name for the stream entry. - - - Receives the stream size for the stream entry. - - - Receives the stream allocation size for the stream entry. - - True if there are additional stream entries to return. False otherwise. - - - - Gets directory information for a single file or directory within a parent directory. - - - The file node of the parent directory. - - - The file descriptor of the parent directory. - - - The name of the file or directory to get information for. This name is relative - to the parent directory and is a single path component. - - - Receives the normalized name from the directory entry. - - - Receives the file information. - - STATUS_SUCCESS or error code. - - - - Processes a control code. - - - This function is called when a program uses the DeviceIoControl API. - - - The file node of the file or directory to be controled. - - - The file descriptor of the file or directory to be controled. - - - The control code for the operation. This code must have a DeviceType with bit - 0x8000 set and must have a TransferType of METHOD_BUFFERED. - - - Pointer to a buffer that contains the input data. - - - Input data length. - - - Pointer to a buffer that will receive the output data. - - - Output data length. - - - Receives the actual number of bytes transferred. - - STATUS_SUCCESS or error code. - - - - Sets the file delete flag. - - - - This function sets a flag to indicates whether the FSD file should delete a file - when it is closed. This function does not need to perform access checks, but may - performs tasks such as check for empty directories, etc. - - This function should NEVER delete the file or directory in question. Deletion should - happen during Cleanup with the CleanupDelete flag set. - - This function gets called when Win32 API's such as DeleteFile or RemoveDirectory are used. - It does not get called when a file or directory is opened with FILE_DELETE_ON_CLOSE. - - NOTE: If both CanDelete and SetDelete are defined, SetDelete takes precedence. However - most file systems need only implement the CanDelete operation. - - - - The file node of the file or directory to set the delete flag for. - - - The file descriptor of the file or directory to set the delete flag for. - - - The name of the file or directory to set the delete flag for. - - - If set to TRUE the FSD indicates that the file will be deleted on Cleanup; otherwise - it will not be deleted. It is legal to receive multiple SetDelete calls for the same - file with different DeleteFile parameters. - - STATUS_SUCCESS or error code. - - - - - - Inform the file system that its dispatcher has been stopped. - - - - 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 normally (i.e. via the - native FspFileSystemStopDispatcher) and FALSE otherwise. - - A file system that uses the Service class infrastructure may use the - StopServiceIfNecessary method to correctly handle all cases. The base implementation - of this method calls the StopServiceIfNecessary method. - - This operation is the last one that a file system will receive. - - - - TRUE if the file system is being stopped via the native FspFileSystemStopDispatcher. - FALSE if the file system is being stopped because of another reason such - as driver unload/uninstall. - - - - - - Converts a Win32 error code to a Windows kernel status code. - - - - - Converts a Windows kernel status code to a Win32 error code. - - - - - Gets the originating process ID. - - - Valid only during Create, Open and Rename requests when the target exists. - - - - - Modifies a security descriptor. [OBSOLETE] - - - This is a helper for implementing the SetSecurity operation. - - - The original security descriptor. - - - Describes what parts of the file or directory security descriptor should be modified. - - - Describes the modifications to apply to the file or directory security descriptor. - - The modified security descriptor. - - - - - Modifies a security descriptor. - - - This is a helper for implementing the SetSecurity operation. - - - The original security descriptor. - - - Describes what parts of the file or directory security descriptor should be modified. - - - Describes the modifications to apply to the file or directory security descriptor. - - - The modified security descriptor. This parameter is modified only on success. - - STATUS_SUCCESS or error code. - - - - - Finds a reparse point in file name. - - - This is a helper for implementing the GetSecurityByName operation in file systems - that support reparse points. - - - The name of the file or directory. - - - Receives the index of the first reparse point within FileName. - - True if a reparse point was found, false otherwise. - - - - - Makes a byte array that contains a reparse point. - - The reparse point byte array. - - - - Gets the reparse tag from reparse data. - - - The reparse data to extract the reparse tag from. - - The reparse tag. - - - - Tests whether reparse data can be replaced. - - - This is a helper for implementing the SetReparsePoint/DeleteReparsePoint operation - in file systems that support reparse points. - - - The current reparse data. - - - The replacement reparse data. - - STATUS_SUCCESS or error code. - - - - - - Provides a means to host (mount) a file system. - - - - - Creates an instance of the FileSystemHost class. - - The file system to host. - - - - Unmounts the file system and releases all associated resources. - - - - - Gets or sets the sector size used by the file system. - - - - - Gets or sets the sectors per allocation unit used by the file system. - - - - - Gets or sets the maximum path component length used by the file system. - - - - - Gets or sets the volume creation time. - - - - - Gets or sets the volume serial number. - - - - - Gets or sets the file information timeout. - - - - - Gets or sets the volume information timeout. - - - - - Gets or sets the directory information timeout. - - - - - Gets or sets the security information timeout. - - - - - Gets or sets the stream information timeout. - - - - - Gets or sets the EA information timeout. - - - - - Gets or sets a value that determines whether the file system is case sensitive. - - - - - Gets or sets a value that determines whether a case insensitive file system - preserves case in file names. - - - - - Gets or sets a value that determines whether file names support unicode characters. - - - - - Gets or sets a value that determines whether the file system supports ACL security. - - - - - Gets or sets a value that determines whether the file system supports reparse points. - - - - - Gets or sets a value that determines whether the file system allows creation of - symbolic links without additional privileges. - - - - - Gets or sets a value that determines whether the file system supports named streams. - - - - - Gets or sets a value that determines whether the file system supports extended attributes. - - - - - Gets or sets the prefix for a network file system. - - - - - Gets or sets the file system name. - - - - - Checks whether mounting a file system is possible. - - - The mount point for the new file system. A value of null means that - the file system should use the next available drive letter counting - downwards from Z: as its mount point. - - STATUS_SUCCESS or error code. - - - - Mounts a file system. - - - The mount point for the new file system. A value of null means that - the file system should use the next available drive letter counting - downwards from Z: as its mount point. - - - Security descriptor to use if mounting on (newly created) directory. - A value of null means the directory should be created with default - security. - - - If true file system operations are synchronized using an exclusive lock. - - - A value of 0 disables all debug logging. - A value of -1 enables all debug logging. - - STATUS_SUCCESS or error code. - - - - Mounts a file system. - - - The mount point for the new file system. A value of null means that - the file system should use the next available drive letter counting - downwards from Z: as its mount point. - - - Number of threads to use to service file system requests. A value - of 0 means that the default number of threads should be used. - - - Security descriptor to use if mounting on (newly created) directory. - A value of null means the directory should be created with default - security. - - - If true file system operations are synchronized using an exclusive lock. - - - A value of 0 disables all debug logging. - A value of -1 enables all debug logging. - - STATUS_SUCCESS or error code. - - - - Unmounts the file system and releases all associated resources. - - - - - Gets the file system mount point. - - The file system mount point. - - - - Gets the hosted file system. - - The hosted file system. - - - - Sets the debug log file to use when debug logging is enabled. - - - The debug log file name. A value of "-" means standard error output. - - STATUS_SUCCESS or error code. - - - - Return the installed version of WinFsp. - - - - - Returns a RequestHint to reference the current operation asynchronously. - - - - - Asynchronously complete a Read operation. - - - A reference to the operation to complete. - - - STATUS_SUCCESS or error code. - - - Number of bytes read. - - - - - Asynchronously complete a Write operation. - - - A reference to the operation to complete. - - - STATUS_SUCCESS or error code. - - - The number of bytes written. - - - Updated file information. - - - - - Asynchronously complete a ReadDirectory operation. - - - A reference to the operation to complete. - - - STATUS_SUCCESS or error code. - - - Number of bytes read. - - - - - Begin notifying Windows that the file system has file changes. - - - - A file system that wishes to notify Windows about file changes must - first issue an FspFileSystemBegin call, followed by 0 or more - FspFileSystemNotify calls, followed by an FspFileSystemNotifyEnd call. - - This operation blocks concurrent file rename operations. File rename - operations may interfere with file notification, because a file being - notified may also be concurrently renamed. After all file change - notifications have been issued, you must make sure to call - FspFileSystemNotifyEnd to allow file rename operations to proceed. - - - - STATUS_SUCCESS or error code. The error code STATUS_CANT_WAIT means that - a file rename operation is currently in progress and the operation must be - retried at a later time. - - - - - End notifying Windows that the file system has file changes. - - - - A file system that wishes to notify Windows about file changes must - first issue an FspFileSystemBegin call, followed by 0 or more - FspFileSystemNotify calls, followed by an FspFileSystemNotifyEnd call. - - This operation allows any blocked file rename operations to proceed. - - - STATUS_SUCCESS or error code. - - - - Notify Windows that the file system has file changes. - - - - A file system that wishes to notify Windows about file changes must - first issue an FspFileSystemBegin call, followed by 0 or more - FspFileSystemNotify calls, followed by an FspFileSystemNotifyEnd call. - - Note that FspFileSystemNotify requires file names to be normalized. A - normalized file name is one that contains the correct case of all characters - in the file name. - - For case-sensitive file systems all file names are normalized by definition. - For case-insensitive file systems that implement file name normalization, - a normalized file name is the one that the file system specifies in the - response to Create or Open (see also FspFileSystemGetOpenFileInfo). For - case-insensitive file systems that do not implement file name normalization - a normalized file name is the upper case version of the file name used - to open the file. - - - STATUS_SUCCESS or error code. - - - - Contains volume information about a file system. - - - - - Total size of volume in bytes. - - - - - Free size of volume in bytes. - - - - - Sets the volume label. - - - - - Contains metadata information about a file or directory. - - - - - The file or directory attributes. - - - - - The reparse tag of the file or directory. - This value is 0 if the file or directory is not a reparse point. - - - - - The allocation size of the file. - - - - - The file size of the file (end of file). - - - - - The time that the file or directory was created. - - - - - The time that the file or directory was last accessed. - - - - - The time that the file or direcotry was last modified. - - - - - The time that the file or directory metadata was last modified. - - - - - A unique identifier that is associated with the file or directory. - Not all file systems support this value. - - - - - The number of hard links. - Not currently implemented. Set to 0. - - - - - The extended attribute size of the file. - - - - - Enumeration of all the possible values for NotifyInfo.Action - - - - - Enumeration of all the possible values for NotifyInfo.Filter - - - - - Contains file change notification information. - - - - - Provides the base class for a process that can be run as a service, - command line application or under the control of the WinFsp launcher. - - - - - Creates an instance of the Service class. - - The name of the service. - - - - Runs a service. - - Service process exit code. - - - - Stops a running service. - - - - - Gets or sets the service process exit code. - - - - - Provides a means to customize the returned status code when an exception happens. - - - STATUS_SUCCESS or error code. - - - - Occurs when the service starts. - - Command line arguments passed to the service. - - - - Occurs when the service stops. - - - - + + + + winfsp-msil + + + + + Provides the base class that user mode file systems must inherit from. + + + + + Provides a means to customize the returned status code when an exception happens. + + + STATUS_SUCCESS or error code. + + + + Occurs just before the file system is mounted. + File systems may override this method to configure the file system host. + + + The file system host that is mounting this file system. + + STATUS_SUCCESS or error code. + + + + Occurs just after the file system is mounted, + but prior to receiving any file system operation. + + + The file system host that is mounting this file system. + + STATUS_SUCCESS or error code. + + + + Occurs just after the file system is unmounted. + No other file system operations will be received on this file system. + + + The file system host that is mounting this file system. + + + + + Gets the volume information. + + + Receives the volume information. + + STATUS_SUCCESS or error code. + + + + Sets the volume label. + + + The new label for the volume. + + + Receives the updated volume information. + + STATUS_SUCCESS or error code. + + + + Gets file or directory attributes and security descriptor given a file name. + + + The name of the file or directory to get the attributes and security descriptor for. + + + Receives the file attributes on successful return. + If this call returns STATUS_REPARSE, the file system may place here the index of the + first reparse point within FileName. + + + Receives the file security descriptor. If the SecurityDescriptor parameter is null + on input the file system should not fill this value. + + + STATUS_SUCCESS, STATUS_REPARSE or error code. + STATUS_REPARSE should be returned by file systems that support reparse points when + they encounter a FileName that contains reparse points anywhere but the final path + component. + + + + + Creates a new file or directory. + + + The name of the file or directory to be created. + + + Create options for this request. + + + Determines the specific access rights that have been granted for this request. + + + File attributes to apply to the newly created file or directory. + + + Security descriptor to apply to the newly created file or directory. + + + Allocation size for the newly created file. + + + Receives the file node for the newly created file. + + + Receives the file descriptor for the newly created file. + + + Receives the file information for the newly created file. + + + Receives the normalized name for the newly created file. + + STATUS_SUCCESS or error code. + + + + Opens a file or directory. + + + The name of the file or directory to be opened. + + + Create options for this request. + + + Determines the specific access rights that have been granted for this request. + + + Receives the file node for the newly opened file. + + + Receives the file descriptor for the newly opened file. + + + Receives the file information for the newly opened file. + + + Receives the normalized name for the newly opened file. + + STATUS_SUCCESS or error code. + + + + Overwrites a file. + + + The file node for the file to be overwritten. + + + The file descriptor for the file to be overwritten. + + + File attributes to apply to the overwritten file. + + + When true the existing file attributes should be replaced with the new ones. + When false the existing file attributes should be merged (or'ed) with the new ones. + + + Allocation size for the overwritten file. + + + Receives the updated file information. + + STATUS_SUCCESS or error code. + + + + Cleans up a file or directory. + + + + When CreateFile is used to open or create a file the kernel creates a kernel mode file + object (type FILE_OBJECT) and a handle for it, which it returns to user-mode. The handle may + be duplicated (using DuplicateHandle), but all duplicate handles always refer to the same + file object. When all handles for a particular file object get closed (using CloseHandle) + the system sends a Cleanup request to the file system. + + There will be a Cleanup operation for every Create or Open operation posted to the user mode + file system. However the Cleanup operation is not the final close operation on a file. + The file system must be ready to receive additional operations until close time. This is true + even when the file is being deleted! + + The Flags parameter contains information about the cleanup operation: + + CleanupDelete - + An important function of the Cleanup operation is to complete a delete operation. Deleting + a file or directory in Windows is a three-stage process where the file is first opened, then + tested to see if the delete can proceed and if the answer is positive the file is then + deleted during Cleanup. + When this flag is set, this is the last outstanding cleanup for this particular file node. + + CleanupSetAllocationSize - + The NTFS and FAT file systems reset a file's allocation size when they receive the last + outstanding cleanup for a particular file node. User mode file systems that implement + allocation size and wish to duplicate the NTFS and FAT behavior can use this flag. + + CleanupSetArchiveBit - + File systems that support the archive bit should set the file node's archive bit when this + flag is set. + + CleanupSetLastAccessTime, CleanupSetLastWriteTime, CleanupSetChangeTime - + File systems should set the corresponding file time when each one of these flags is set. + Note that updating the last access time is expensive and a file system may choose to not + implement it. + + + + There is no way to report failure of this operation. This is a Windows limitation. + + + + The file node of the file or directory to cleanup. + + + The file descriptor of the file or directory to cleanup. + + + The name of the file or directory to cleanup. Sent only when a Delete is requested. + + + These flags determine whether the file was modified and whether to delete the file. + + + + + + + + Closes a file or directory. + + + The file node of the file or directory to close. + + + The file descriptor of the file or directory to close. + + + + + Reads a file. + + + The file node of the file to read. + + + The file descriptor of the file to read. + + + Pointer to a buffer that receives the results of the read operation. + + + Offset within the file to read from. + + + Length of data to read. + + + Receives the actual number of bytes read. + + STATUS_SUCCESS or error code. + + + + Writes a file. + + + The file node of the file to write. + + + The file descriptor of the file to write. + + + Pointer to a buffer that receives the results of the write operation. + + + Offset within the file to write to. + + + Length of data to write. + + + When true the file system must write to the current end of file. In this case the Offset + parameter will contain the value -1. + + + When true the file system must not extend the file (i.e. change the file size). + + + Receives the actual number of bytes written. + + + Receives the updated file information. + + STATUS_SUCCESS or error code. + + + + Flushes a file or volume. + + + Note that the FSD will also flush all file/volume caches prior to invoking this operation. + + + The file node of the file to flush. + When this and the FileDesc parameter are null the whole volume is being flushed. + + + The file descriptor of the file to flush. + When this and the FileNode parameter are null the whole volume is being flushed. + + + Receives the updated file information. + + STATUS_SUCCESS or error code. + + + + Gets file or directory information. + + + The file node of the file to get information for. + + + The file descriptor of the file to get information for. + + + Receives the file information. + + STATUS_SUCCESS or error code. + + + + Sets file or directory basic information. + + + The file node of the file to set information for. + + + The file descriptor of the file to set information for. + + + File attributes to apply to the file or directory. + If the value -1 is sent, the file attributes should not be changed. + + + Creation time to apply to the file or directory. + If the value 0 is sent, the creation time should not be changed. + + + Last access time to apply to the file or directory. + If the value 0 is sent, the last access time should not be changed. + + + Last write time to apply to the file or directory. + If the value 0 is sent, the last write time should not be changed. + + + Change time to apply to the file or directory. + If the value 0 is sent, the change time should not be changed. + + + Receives the updated file information. + + STATUS_SUCCESS or error code. + + + + Sets file/allocation size. + + + + This function is used to change a file's sizes. Windows file systems maintain two kinds + of sizes: the file size is where the End Of File (EOF) is, and the allocation size is the + actual size that a file takes up on the "disk". + + The rules regarding file/allocation size are: + + + Allocation size must always be aligned to the allocation unit boundary. The allocation + unit is the product SectorSize * SectorsPerAllocationUnit. The FSD will always send + properly aligned allocation sizes when setting the allocation size. + + + Allocation size is always greater or equal to the file size. + + + A file size of more than the current allocation size will also extend the allocation + size to the next allocation unit boundary. + + + An allocation size of less than the current file size should also truncate the current + file size. + + + + + + The file node of the file to set the file/allocation size for. + + + The file descriptor of the file to set the file/allocation size for. + + + New file/allocation size to apply to the file. + + + If true, then the allocation size is being set. if false, then the file size is being set. + + + Receives the updated file information. + + STATUS_SUCCESS or error code. + + + + Determines whether a file or directory can be deleted. + + + + This function tests whether a file or directory can be safely deleted. This function does + not need to perform access checks, but may performs tasks such as check for empty + directories, etc. + + This function should NEVER delete the file or directory in question. Deletion should + happen during Cleanup with the CleanupDelete flag set. + + This function gets called when Win32 API's such as DeleteFile or RemoveDirectory are used. + It does not get called when a file or directory is opened with FILE_DELETE_ON_CLOSE. + + NOTE: If both CanDelete and SetDelete are defined, SetDelete takes precedence. However + most file systems need only implement the CanDelete operation. + + + + The file node of the file or directory to test for deletion. + + + The file descriptor of the file or directory to test for deletion. + + + The name of the file or directory to test for deletion. + + STATUS_SUCCESS or error code. + + + + + + Renames a file or directory. + + + The kernel mode FSD provides certain guarantees prior to posting a rename operation: + + + A file cannot be renamed if a file with the same name exists and has open handles. + + + A directory cannot be renamed if it or any of its subdirectories contains a file that + has open handles. + + + + + The file node of the file or directory to be renamed. + + + The file descriptor of the file or directory to be renamed. + + + The current name of the file or directory to rename. + + + The new name for the file or directory. + + + Whether to replace a file that already exists at NewFileName. + + STATUS_SUCCESS or error code. + + + + Gets file or directory security descriptor. + + + The file node of the file or directory to get the security descriptor for. + + + The file descriptor of the file or directory to get the security descriptor for. + + + Receives the file security descriptor. + + STATUS_SUCCESS or error code. + + + + Sets file or directory security descriptor. + + + The file node of the file or directory to set the security descriptor for. + + + The file descriptor of the file or directory to set the security descriptor for. + + + Describes what parts of the file or directory security descriptor should be modified. + + + Describes the modifications to apply to the file or directory security descriptor. + + STATUS_SUCCESS or error code. + + + + + Reads a directory. + + + + + + Reads a directory entry. + + + The file node of the directory to be read. + + + The file descriptor of the directory to be read. + + + The pattern to match against files in this directory. Can be null. The file system + can choose to ignore this parameter as the FSD will always perform its own pattern + matching on the returned results. + + + A file name that marks where in the directory to start reading. Files with names + that are greater than (not equal to) this marker (in the directory order determined + by the file system) should be returned. Can be null. + + + Can be used by the file system to track the ReadDirectory operation. + + + Receives the file name for the directory entry. + + + Receives the file information for the directory entry. + + True if there are additional directory entries to return. False otherwise. + + + + + Resolves reparse points. + + + + + Gets a reparse point given a file name. + + + The name of the file or directory to get the reparse point for. + + + Determines whether the passed file name is assumed to be a directory. + + + Receives the reparse data for the file or directory. + + STATUS_SUCCESS or error code. + + + + Gets a reparse point. + + + The file node of the reparse point. + + + The file descriptor of the reparse point. + + + The file name of the reparse point. + + + Receives the reparse data for the reparse point. + + STATUS_SUCCESS or error code. + + + + Sets a reparse point. + + + The file node of the reparse point. + + + The file descriptor of the reparse point. + + + The file name of the reparse point. + + + The new reparse data for the reparse point. + + STATUS_SUCCESS or error code. + + + + Deletes a reparse point. + + + The file node of the reparse point. + + + The file descriptor of the reparse point. + + + The file name of the reparse point. + + + The reparse data for the reparse point. + + STATUS_SUCCESS or error code. + + + + Gets named streams information. + + + + + Gets named streams information entry. + + + The file node of the file or directory to get stream information for. + + + The file descriptor of the file or directory to get stream information for. + + + Can be used by the file system to track the GetStreamInfo operation. + + + Receives the stream name for the stream entry. + + + Receives the stream size for the stream entry. + + + Receives the stream allocation size for the stream entry. + + True if there are additional stream entries to return. False otherwise. + + + + Gets directory information for a single file or directory within a parent directory. + + + The file node of the parent directory. + + + The file descriptor of the parent directory. + + + The name of the file or directory to get information for. This name is relative + to the parent directory and is a single path component. + + + Receives the normalized name from the directory entry. + + + Receives the file information. + + STATUS_SUCCESS or error code. + + + + Processes a control code. + + + This function is called when a program uses the DeviceIoControl API. + + + The file node of the file or directory to be controled. + + + The file descriptor of the file or directory to be controled. + + + The control code for the operation. This code must have a DeviceType with bit + 0x8000 set and must have a TransferType of METHOD_BUFFERED. + + + Pointer to a buffer that contains the input data. + + + Input data length. + + + Pointer to a buffer that will receive the output data. + + + Output data length. + + + Receives the actual number of bytes transferred. + + STATUS_SUCCESS or error code. + + + + Sets the file delete flag. + + + + This function sets a flag to indicates whether the FSD file should delete a file + when it is closed. This function does not need to perform access checks, but may + performs tasks such as check for empty directories, etc. + + This function should NEVER delete the file or directory in question. Deletion should + happen during Cleanup with the CleanupDelete flag set. + + This function gets called when Win32 API's such as DeleteFile or RemoveDirectory are used. + It does not get called when a file or directory is opened with FILE_DELETE_ON_CLOSE. + + NOTE: If both CanDelete and SetDelete are defined, SetDelete takes precedence. However + most file systems need only implement the CanDelete operation. + + + + The file node of the file or directory to set the delete flag for. + + + The file descriptor of the file or directory to set the delete flag for. + + + The name of the file or directory to set the delete flag for. + + + If set to TRUE the FSD indicates that the file will be deleted on Cleanup; otherwise + it will not be deleted. It is legal to receive multiple SetDelete calls for the same + file with different DeleteFile parameters. + + STATUS_SUCCESS or error code. + + + + + + Inform the file system that its dispatcher has been stopped. + + + + 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 normally (i.e. via the + native FspFileSystemStopDispatcher) and FALSE otherwise. + + A file system that uses the Service class infrastructure may use the + StopServiceIfNecessary method to correctly handle all cases. The base implementation + of this method calls the StopServiceIfNecessary method. + + This operation is the last one that a file system will receive. + + + + TRUE if the file system is being stopped via the native FspFileSystemStopDispatcher. + FALSE if the file system is being stopped because of another reason such + as driver unload/uninstall. + + + + + + Converts a Win32 error code to a Windows kernel status code. + + + + + Converts a Windows kernel status code to a Win32 error code. + + + + + Gets the originating process ID. + + + Valid only during Create, Open and Rename requests when the target exists. + + + + + Modifies a security descriptor. [OBSOLETE] + + + This is a helper for implementing the SetSecurity operation. + + + The original security descriptor. + + + Describes what parts of the file or directory security descriptor should be modified. + + + Describes the modifications to apply to the file or directory security descriptor. + + The modified security descriptor. + + + + + Modifies a security descriptor. + + + This is a helper for implementing the SetSecurity operation. + + + The original security descriptor. + + + Describes what parts of the file or directory security descriptor should be modified. + + + Describes the modifications to apply to the file or directory security descriptor. + + + The modified security descriptor. This parameter is modified only on success. + + STATUS_SUCCESS or error code. + + + + + Finds a reparse point in file name. + + + This is a helper for implementing the GetSecurityByName operation in file systems + that support reparse points. + + + The name of the file or directory. + + + Receives the index of the first reparse point within FileName. + + True if a reparse point was found, false otherwise. + + + + + Makes a byte array that contains a reparse point. + + The reparse point byte array. + + + + Gets the reparse tag from reparse data. + + + The reparse data to extract the reparse tag from. + + The reparse tag. + + + + Tests whether reparse data can be replaced. + + + This is a helper for implementing the SetReparsePoint/DeleteReparsePoint operation + in file systems that support reparse points. + + + The current reparse data. + + + The replacement reparse data. + + STATUS_SUCCESS or error code. + + + + + + Provides a means to host (mount) a file system. + + + + + Creates an instance of the FileSystemHost class. + + The file system to host. + + + + Unmounts the file system and releases all associated resources. + + + + + Gets or sets the sector size used by the file system. + + + + + Gets or sets the sectors per allocation unit used by the file system. + + + + + Gets or sets the maximum path component length used by the file system. + + + + + Gets or sets the volume creation time. + + + + + Gets or sets the volume serial number. + + + + + Gets or sets the file information timeout. + + + + + Gets or sets the volume information timeout. + + + + + Gets or sets the directory information timeout. + + + + + Gets or sets the security information timeout. + + + + + Gets or sets the stream information timeout. + + + + + Gets or sets the EA information timeout. + + + + + Gets or sets a value that determines whether the file system is case sensitive. + + + + + Gets or sets a value that determines whether a case insensitive file system + preserves case in file names. + + + + + Gets or sets a value that determines whether file names support unicode characters. + + + + + Gets or sets a value that determines whether the file system supports ACL security. + + + + + Gets or sets a value that determines whether the file system supports reparse points. + + + + + Gets or sets a value that determines whether the file system allows creation of + symbolic links without additional privileges. + + + + + Gets or sets a value that determines whether the file system supports named streams. + + + + + Gets or sets a value that determines whether the file system supports extended attributes. + + + + + Gets or sets the prefix for a network file system. + + + + + Gets or sets the file system name. + + + + + Checks whether mounting a file system is possible. + + + The mount point for the new file system. A value of null means that + the file system should use the next available drive letter counting + downwards from Z: as its mount point. + + STATUS_SUCCESS or error code. + + + + Mounts a file system. + + + The mount point for the new file system. A value of null means that + the file system should use the next available drive letter counting + downwards from Z: as its mount point. + + + Security descriptor to use if mounting on (newly created) directory. + A value of null means the directory should be created with default + security. + + + If true file system operations are synchronized using an exclusive lock. + + + A value of 0 disables all debug logging. + A value of -1 enables all debug logging. + + STATUS_SUCCESS or error code. + + + + Mounts a file system. + + + The mount point for the new file system. A value of null means that + the file system should use the next available drive letter counting + downwards from Z: as its mount point. + + + Number of threads to use to service file system requests. A value + of 0 means that the default number of threads should be used. + + + Security descriptor to use if mounting on (newly created) directory. + A value of null means the directory should be created with default + security. + + + If true file system operations are synchronized using an exclusive lock. + + + A value of 0 disables all debug logging. + A value of -1 enables all debug logging. + + STATUS_SUCCESS or error code. + + + + Unmounts the file system and releases all associated resources. + + + + + Gets the file system mount point. + + The file system mount point. + + + + Gets the hosted file system. + + The hosted file system. + + + + Sets the debug log file to use when debug logging is enabled. + + + The debug log file name. A value of "-" means standard error output. + + STATUS_SUCCESS or error code. + + + + Return the installed version of WinFsp. + + + + + Returns a RequestHint to reference the current operation asynchronously. + + + + + Asynchronously complete a Read operation. + + + A reference to the operation to complete. + + + STATUS_SUCCESS or error code. + + + Number of bytes read. + + + + + Asynchronously complete a Write operation. + + + A reference to the operation to complete. + + + STATUS_SUCCESS or error code. + + + The number of bytes written. + + + Updated file information. + + + + + Asynchronously complete a ReadDirectory operation. + + + A reference to the operation to complete. + + + STATUS_SUCCESS or error code. + + + Number of bytes read. + + + + + Begin notifying Windows that the file system has file changes. + + + + A file system that wishes to notify Windows about file changes must + first issue an FspFileSystemBegin call, followed by 0 or more + FspFileSystemNotify calls, followed by an FspFileSystemNotifyEnd call. + + This operation blocks concurrent file rename operations. File rename + operations may interfere with file notification, because a file being + notified may also be concurrently renamed. After all file change + notifications have been issued, you must make sure to call + FspFileSystemNotifyEnd to allow file rename operations to proceed. + + + + STATUS_SUCCESS or error code. The error code STATUS_CANT_WAIT means that + a file rename operation is currently in progress and the operation must be + retried at a later time. + + + + + End notifying Windows that the file system has file changes. + + + + A file system that wishes to notify Windows about file changes must + first issue an FspFileSystemBegin call, followed by 0 or more + FspFileSystemNotify calls, followed by an FspFileSystemNotifyEnd call. + + This operation allows any blocked file rename operations to proceed. + + + STATUS_SUCCESS or error code. + + + + Notify Windows that the file system has file changes. + + + + A file system that wishes to notify Windows about file changes must + first issue an FspFileSystemBegin call, followed by 0 or more + FspFileSystemNotify calls, followed by an FspFileSystemNotifyEnd call. + + Note that FspFileSystemNotify requires file names to be normalized. A + normalized file name is one that contains the correct case of all characters + in the file name. + + For case-sensitive file systems all file names are normalized by definition. + For case-insensitive file systems that implement file name normalization, + a normalized file name is the one that the file system specifies in the + response to Create or Open (see also FspFileSystemGetOpenFileInfo). For + case-insensitive file systems that do not implement file name normalization + a normalized file name is the upper case version of the file name used + to open the file. + + + STATUS_SUCCESS or error code. + + + + Contains volume information about a file system. + + + + + Total size of volume in bytes. + + + + + Free size of volume in bytes. + + + + + Sets the volume label. + + + + + Contains metadata information about a file or directory. + + + + + The file or directory attributes. + + + + + The reparse tag of the file or directory. + This value is 0 if the file or directory is not a reparse point. + + + + + The allocation size of the file. + + + + + The file size of the file (end of file). + + + + + The time that the file or directory was created. + + + + + The time that the file or directory was last accessed. + + + + + The time that the file or direcotry was last modified. + + + + + The time that the file or directory metadata was last modified. + + + + + A unique identifier that is associated with the file or directory. + Not all file systems support this value. + + + + + The number of hard links. + Not currently implemented. Set to 0. + + + + + The extended attribute size of the file. + + + + + Enumeration of all the possible values for NotifyInfo.Action + + + + + Enumeration of all the possible values for NotifyInfo.Filter + + + + + Contains file change notification information. + + + + + Provides the base class for a process that can be run as a service, + command line application or under the control of the WinFsp launcher. + + + + + Creates an instance of the Service class. + + The name of the service. + + + + Runs a service. + + Service process exit code. + + + + Stops a running service. + + + + + Gets or sets the service process exit code. + + + + + Provides a means to customize the returned status code when an exception happens. + + + STATUS_SUCCESS or error code. + + + + Occurs when the service starts. + + Command line arguments passed to the service. + + + + Occurs when the service stops. + + + + diff --git a/support/3rd_party/winfsp-2.1/bin/winfsp-x64.dll b/support/3rd_party/winfsp-2.1/bin/winfsp-x64.dll new file mode 100644 index 0000000000000000000000000000000000000000..2ab0e8f546a0443a735720cc28cebabe043eb550 GIT binary patch literal 198376 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
    >3>snX(5)2Y;FMXGkB(X{?dQ94o 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
    Z%ZWpNVhW~%A(#qJEI})91IZIVaBc?n1)j~_ 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 A&Hw-a literal 0 HcmV?d00001 diff --git a/support/3rd_party/winfsp-2.0/bin/winfsp-x86.sys b/support/3rd_party/winfsp-2.1/bin/winfsp-x86.sys similarity index 53% rename from support/3rd_party/winfsp-2.0/bin/winfsp-x86.sys rename to support/3rd_party/winfsp-2.1/bin/winfsp-x86.sys index 1bb5e01cb11220b5cbe9cd08fb88f6bb9faf9d56..6176ff7e8a54b4bad127040130ebfe841becb259 100644 GIT binary patch delta 22654 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 E04W%I!~g&Q delta 22294 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 diff --git a/support/3rd_party/winfsp-2.0/inc/fuse/fuse.h b/support/3rd_party/winfsp-2.1/inc/fuse/fuse.h similarity index 96% rename from support/3rd_party/winfsp-2.0/inc/fuse/fuse.h rename to support/3rd_party/winfsp-2.1/inc/fuse/fuse.h index 6807cd60..e84d656b 100644 --- a/support/3rd_party/winfsp-2.0/inc/fuse/fuse.h +++ b/support/3rd_party/winfsp-2.1/inc/fuse/fuse.h @@ -1,271 +1,271 @@ -/** - * @file fuse/fuse.h - * WinFsp FUSE compatible API. - * - * This file is derived from libfuse/include/fuse.h: - * FUSE: Filesystem in Userspace - * Copyright (C) 2001-2007 Miklos Szeredi - * - * @copyright 2015-2022 Bill Zissimopoulos - */ -/* - * This file is part of WinFsp. - * - * You can redistribute it and/or modify it under the terms of the GNU - * General Public License version 3 as published by the Free Software - * Foundation. - * - * Licensees holding a valid commercial license may use this software - * in accordance with the commercial license agreement provided in - * conjunction with the software. The terms and conditions of any such - * commercial license agreement shall govern, supersede, and render - * ineffective any application of the GPLv3 license to this software, - * notwithstanding of any reference thereto in the software or - * associated repository. - */ - -#ifndef FUSE_H_ -#define FUSE_H_ - -#include "fuse_common.h" - -#ifdef __cplusplus -extern "C" { -#endif - -struct fuse; - -typedef int (*fuse_fill_dir_t)(void *buf, const char *name, - const struct fuse_stat *stbuf, fuse_off_t off); -typedef struct fuse_dirhandle *fuse_dirh_t; -typedef int (*fuse_dirfil_t)(fuse_dirh_t h, const char *name, - int type, fuse_ino_t ino); - -struct fuse_operations -{ - /* S - supported by WinFsp */ - /* S */ int (*getattr)(const char *path, struct fuse_stat *stbuf); - /* S */ int (*getdir)(const char *path, fuse_dirh_t h, fuse_dirfil_t filler); - /* S */ int (*readlink)(const char *path, char *buf, size_t size); - /* S */ int (*mknod)(const char *path, fuse_mode_t mode, fuse_dev_t dev); - /* S */ int (*mkdir)(const char *path, fuse_mode_t mode); - /* S */ int (*unlink)(const char *path); - /* S */ int (*rmdir)(const char *path); - /* S */ int (*symlink)(const char *dstpath, const char *srcpath); - /* S */ int (*rename)(const char *oldpath, const char *newpath); - /* _ */ int (*link)(const char *srcpath, const char *dstpath); - /* S */ int (*chmod)(const char *path, fuse_mode_t mode); - /* S */ int (*chown)(const char *path, fuse_uid_t uid, fuse_gid_t gid); - /* S */ int (*truncate)(const char *path, fuse_off_t size); - /* S */ int (*utime)(const char *path, struct fuse_utimbuf *timbuf); - /* S */ int (*open)(const char *path, struct fuse_file_info *fi); - /* S */ int (*read)(const char *path, char *buf, size_t size, fuse_off_t off, - struct fuse_file_info *fi); - /* S */ int (*write)(const char *path, const char *buf, size_t size, fuse_off_t off, - struct fuse_file_info *fi); - /* S */ int (*statfs)(const char *path, struct fuse_statvfs *stbuf); - /* S */ int (*flush)(const char *path, struct fuse_file_info *fi); - /* S */ int (*release)(const char *path, struct fuse_file_info *fi); - /* S */ int (*fsync)(const char *path, int datasync, struct fuse_file_info *fi); - /* S */ int (*setxattr)(const char *path, const char *name, const char *value, size_t size, - int flags); - /* S */ int (*getxattr)(const char *path, const char *name, char *value, size_t size); - /* S */ int (*listxattr)(const char *path, char *namebuf, size_t size); - /* S */ int (*removexattr)(const char *path, const char *name); - /* S */ int (*opendir)(const char *path, struct fuse_file_info *fi); - /* S */ int (*readdir)(const char *path, void *buf, fuse_fill_dir_t filler, fuse_off_t off, - struct fuse_file_info *fi); - /* S */ int (*releasedir)(const char *path, struct fuse_file_info *fi); - /* S */ int (*fsyncdir)(const char *path, int datasync, struct fuse_file_info *fi); - /* S */ void *(*init)(struct fuse_conn_info *conn); - /* S */ void (*destroy)(void *data); - /* S */ int (*access)(const char *path, int mask); - /* S */ int (*create)(const char *path, fuse_mode_t mode, struct fuse_file_info *fi); - /* S */ int (*ftruncate)(const char *path, fuse_off_t off, struct fuse_file_info *fi); - /* S */ int (*fgetattr)(const char *path, struct fuse_stat *stbuf, struct fuse_file_info *fi); - /* _ */ int (*lock)(const char *path, - struct fuse_file_info *fi, int cmd, struct fuse_flock *lock); - /* S */ int (*utimens)(const char *path, const struct fuse_timespec tv[2]); - /* _ */ int (*bmap)(const char *path, size_t blocksize, uint64_t *idx); - /* _ */ unsigned int flag_nullpath_ok:1; - /* _ */ unsigned int flag_nopath:1; - /* _ */ unsigned int flag_utime_omit_ok:1; - /* _ */ unsigned int flag_reserved:29; - /* S */ int (*ioctl)(const char *path, int cmd, void *arg, struct fuse_file_info *fi, - unsigned int flags, void *data); - /* _ */ int (*poll)(const char *path, struct fuse_file_info *fi, - struct fuse_pollhandle *ph, unsigned *reventsp); - /* FUSE 2.9 */ - /* _ */ int (*write_buf)(const char *path, - struct fuse_bufvec *buf, fuse_off_t off, struct fuse_file_info *fi); - /* _ */ int (*read_buf)(const char *path, - struct fuse_bufvec **bufp, size_t size, fuse_off_t off, struct fuse_file_info *fi); - /* _ */ int (*flock)(const char *path, struct fuse_file_info *, int op); - /* _ */ int (*fallocate)(const char *path, int mode, fuse_off_t off, fuse_off_t len, - struct fuse_file_info *fi); - /* WinFsp */ - /* S */ int (*getpath)(const char *path, char *buf, size_t size, - struct fuse_file_info *fi); - /* OSXFUSE */ - /* _ */ int (*reserved01)(); - /* _ */ int (*reserved02)(); - /* _ */ int (*statfs_x)(const char *path, struct fuse_statfs *stbuf); - /* _ */ int (*setvolname)(const char *volname); - /* _ */ int (*exchange)(const char *oldpath, const char *newpath, unsigned long flags); - /* _ */ int (*getxtimes)(const char *path, - struct fuse_timespec *bkuptime, struct fuse_timespec *crtime); - /* _ */ int (*setbkuptime)(const char *path, const struct fuse_timespec *tv); - /* S */ int (*setchgtime)(const char *path, const struct fuse_timespec *tv); - /* S */ int (*setcrtime)(const char *path, const struct fuse_timespec *tv); - /* S */ int (*chflags)(const char *path, uint32_t flags); - /* _ */ int (*setattr_x)(const char *path, struct fuse_setattr_x *attr); - /* _ */ int (*fsetattr_x)(const char *path, struct fuse_setattr_x *attr, - struct fuse_file_info *fi); -}; - -struct fuse_context -{ - struct fuse *fuse; - fuse_uid_t uid; - fuse_gid_t gid; - fuse_pid_t pid; - void *private_data; - fuse_mode_t umask; -}; - -#define fuse_main(argc, argv, ops, data)\ - fuse_main_real(argc, argv, ops, sizeof *(ops), data) - -FSP_FUSE_API int FSP_FUSE_API_NAME(fsp_fuse_main_real)(struct fsp_fuse_env *env, - int argc, char *argv[], - const struct fuse_operations *ops, size_t opsize, void *data); -FSP_FUSE_API int FSP_FUSE_API_NAME(fsp_fuse_is_lib_option)(struct fsp_fuse_env *env, - const char *opt); -FSP_FUSE_API struct fuse *FSP_FUSE_API_NAME(fsp_fuse_new)(struct fsp_fuse_env *env, - struct fuse_chan *ch, struct fuse_args *args, - const struct fuse_operations *ops, size_t opsize, void *data); -FSP_FUSE_API void FSP_FUSE_API_NAME(fsp_fuse_destroy)(struct fsp_fuse_env *env, - struct fuse *f); -FSP_FUSE_API int FSP_FUSE_API_NAME(fsp_fuse_loop)(struct fsp_fuse_env *env, - struct fuse *f); -FSP_FUSE_API int FSP_FUSE_API_NAME(fsp_fuse_loop_mt)(struct fsp_fuse_env *env, - struct fuse *f); -FSP_FUSE_API void FSP_FUSE_API_NAME(fsp_fuse_exit)(struct fsp_fuse_env *env, - struct fuse *f); -FSP_FUSE_API int FSP_FUSE_API_NAME(fsp_fuse_exited)(struct fsp_fuse_env *env, - struct fuse *f); -FSP_FUSE_API int FSP_FUSE_API_NAME(fsp_fuse_notify)(struct fsp_fuse_env *env, - struct fuse *f, const char *path, uint32_t action); -FSP_FUSE_API struct fuse_context *FSP_FUSE_API_NAME(fsp_fuse_get_context)(struct fsp_fuse_env *env); - -FSP_FUSE_SYM( -int fuse_main_real(int argc, char *argv[], - const struct fuse_operations *ops, size_t opsize, void *data), -{ - return FSP_FUSE_API_CALL(fsp_fuse_main_real) - (fsp_fuse_env(), argc, argv, ops, opsize, data); -}) - -FSP_FUSE_SYM( -int fuse_is_lib_option(const char *opt), -{ - return FSP_FUSE_API_CALL(fsp_fuse_is_lib_option) - (fsp_fuse_env(), opt); -}) - -FSP_FUSE_SYM( -struct fuse *fuse_new(struct fuse_chan *ch, struct fuse_args *args, - const struct fuse_operations *ops, size_t opsize, void *data), -{ - return FSP_FUSE_API_CALL(fsp_fuse_new) - (fsp_fuse_env(), ch, args, ops, opsize, data); -}) - -FSP_FUSE_SYM( -void fuse_destroy(struct fuse *f), -{ - FSP_FUSE_API_CALL(fsp_fuse_destroy) - (fsp_fuse_env(), f); -}) - -FSP_FUSE_SYM( -int fuse_loop(struct fuse *f), -{ - return FSP_FUSE_API_CALL(fsp_fuse_loop) - (fsp_fuse_env(), f); -}) - -FSP_FUSE_SYM( -int fuse_loop_mt(struct fuse *f), -{ - return FSP_FUSE_API_CALL(fsp_fuse_loop_mt) - (fsp_fuse_env(), f); -}) - -FSP_FUSE_SYM( -void fuse_exit(struct fuse *f), -{ - FSP_FUSE_API_CALL(fsp_fuse_exit) - (fsp_fuse_env(), f); -}) - -FSP_FUSE_SYM( -int fuse_exited(struct fuse *f), -{ - return FSP_FUSE_API_CALL(fsp_fuse_exited) - (fsp_fuse_env(), f); -}) - -FSP_FUSE_SYM( -int fuse_notify(struct fuse *f, const char *path, uint32_t action), -{ - return FSP_FUSE_API_CALL(fsp_fuse_notify) - (fsp_fuse_env(), f, path, action); -}) - -FSP_FUSE_SYM( -struct fuse_context *fuse_get_context(void), -{ - return FSP_FUSE_API_CALL(fsp_fuse_get_context) - (fsp_fuse_env()); -}) - -FSP_FUSE_SYM( -int fuse_getgroups(int size, fuse_gid_t list[]), -{ - (void)size; - (void)list; - return -ENOSYS; -}) - -FSP_FUSE_SYM( -int fuse_interrupted(void), -{ - return 0; -}) - -FSP_FUSE_SYM( -int fuse_invalidate(struct fuse *f, const char *path), -{ - return FSP_FUSE_API_CALL(fsp_fuse_notify) - (fsp_fuse_env(), f, path, 0); -}) - -FSP_FUSE_SYM( -int fuse_notify_poll(struct fuse_pollhandle *ph), -{ - (void)ph; - return 0; -}) - -FSP_FUSE_SYM( -struct fuse_session *fuse_get_session(struct fuse *f), -{ - return (struct fuse_session *)f; -}) - -#ifdef __cplusplus -} -#endif - -#endif +/** + * @file fuse/fuse.h + * WinFsp FUSE compatible API. + * + * This file is derived from libfuse/include/fuse.h: + * FUSE: Filesystem in Userspace + * Copyright (C) 2001-2007 Miklos Szeredi + * + * @copyright 2015-2025 Bill Zissimopoulos + */ +/* + * This file is part of WinFsp. + * + * You can redistribute it and/or modify it under the terms of the GNU + * General Public License version 3 as published by the Free Software + * Foundation. + * + * Licensees holding a valid commercial license may use this software + * in accordance with the commercial license agreement provided in + * conjunction with the software. The terms and conditions of any such + * commercial license agreement shall govern, supersede, and render + * ineffective any application of the GPLv3 license to this software, + * notwithstanding of any reference thereto in the software or + * associated repository. + */ + +#ifndef FUSE_H_ +#define FUSE_H_ + +#include "fuse_common.h" + +#ifdef __cplusplus +extern "C" { +#endif + +struct fuse; + +typedef int (*fuse_fill_dir_t)(void *buf, const char *name, + const struct fuse_stat *stbuf, fuse_off_t off); +typedef struct fuse_dirhandle *fuse_dirh_t; +typedef int (*fuse_dirfil_t)(fuse_dirh_t h, const char *name, + int type, fuse_ino_t ino); + +struct fuse_operations +{ + /* S - supported by WinFsp */ + /* S */ int (*getattr)(const char *path, struct fuse_stat *stbuf); + /* S */ int (*getdir)(const char *path, fuse_dirh_t h, fuse_dirfil_t filler); + /* S */ int (*readlink)(const char *path, char *buf, size_t size); + /* S */ int (*mknod)(const char *path, fuse_mode_t mode, fuse_dev_t dev); + /* S */ int (*mkdir)(const char *path, fuse_mode_t mode); + /* S */ int (*unlink)(const char *path); + /* S */ int (*rmdir)(const char *path); + /* S */ int (*symlink)(const char *dstpath, const char *srcpath); + /* S */ int (*rename)(const char *oldpath, const char *newpath); + /* _ */ int (*link)(const char *srcpath, const char *dstpath); + /* S */ int (*chmod)(const char *path, fuse_mode_t mode); + /* S */ int (*chown)(const char *path, fuse_uid_t uid, fuse_gid_t gid); + /* S */ int (*truncate)(const char *path, fuse_off_t size); + /* S */ int (*utime)(const char *path, struct fuse_utimbuf *timbuf); + /* S */ int (*open)(const char *path, struct fuse_file_info *fi); + /* S */ int (*read)(const char *path, char *buf, size_t size, fuse_off_t off, + struct fuse_file_info *fi); + /* S */ int (*write)(const char *path, const char *buf, size_t size, fuse_off_t off, + struct fuse_file_info *fi); + /* S */ int (*statfs)(const char *path, struct fuse_statvfs *stbuf); + /* S */ int (*flush)(const char *path, struct fuse_file_info *fi); + /* S */ int (*release)(const char *path, struct fuse_file_info *fi); + /* S */ int (*fsync)(const char *path, int datasync, struct fuse_file_info *fi); + /* S */ int (*setxattr)(const char *path, const char *name, const char *value, size_t size, + int flags); + /* S */ int (*getxattr)(const char *path, const char *name, char *value, size_t size); + /* S */ int (*listxattr)(const char *path, char *namebuf, size_t size); + /* S */ int (*removexattr)(const char *path, const char *name); + /* S */ int (*opendir)(const char *path, struct fuse_file_info *fi); + /* S */ int (*readdir)(const char *path, void *buf, fuse_fill_dir_t filler, fuse_off_t off, + struct fuse_file_info *fi); + /* S */ int (*releasedir)(const char *path, struct fuse_file_info *fi); + /* S */ int (*fsyncdir)(const char *path, int datasync, struct fuse_file_info *fi); + /* S */ void *(*init)(struct fuse_conn_info *conn); + /* S */ void (*destroy)(void *data); + /* S */ int (*access)(const char *path, int mask); + /* S */ int (*create)(const char *path, fuse_mode_t mode, struct fuse_file_info *fi); + /* S */ int (*ftruncate)(const char *path, fuse_off_t off, struct fuse_file_info *fi); + /* S */ int (*fgetattr)(const char *path, struct fuse_stat *stbuf, struct fuse_file_info *fi); + /* _ */ int (*lock)(const char *path, + struct fuse_file_info *fi, int cmd, struct fuse_flock *lock); + /* S */ int (*utimens)(const char *path, const struct fuse_timespec tv[2]); + /* _ */ int (*bmap)(const char *path, size_t blocksize, uint64_t *idx); + /* _ */ unsigned int flag_nullpath_ok:1; + /* _ */ unsigned int flag_nopath:1; + /* _ */ unsigned int flag_utime_omit_ok:1; + /* _ */ unsigned int flag_reserved:29; + /* S */ int (*ioctl)(const char *path, int cmd, void *arg, struct fuse_file_info *fi, + unsigned int flags, void *data); + /* _ */ int (*poll)(const char *path, struct fuse_file_info *fi, + struct fuse_pollhandle *ph, unsigned *reventsp); + /* FUSE 2.9 */ + /* _ */ int (*write_buf)(const char *path, + struct fuse_bufvec *buf, fuse_off_t off, struct fuse_file_info *fi); + /* _ */ int (*read_buf)(const char *path, + struct fuse_bufvec **bufp, size_t size, fuse_off_t off, struct fuse_file_info *fi); + /* _ */ int (*flock)(const char *path, struct fuse_file_info *, int op); + /* _ */ int (*fallocate)(const char *path, int mode, fuse_off_t off, fuse_off_t len, + struct fuse_file_info *fi); + /* WinFsp */ + /* S */ int (*getpath)(const char *path, char *buf, size_t size, + struct fuse_file_info *fi); + /* OSXFUSE */ + /* _ */ int (*reserved01)(); + /* _ */ int (*reserved02)(); + /* _ */ int (*statfs_x)(const char *path, struct fuse_statfs *stbuf); + /* _ */ int (*setvolname)(const char *volname); + /* _ */ int (*exchange)(const char *oldpath, const char *newpath, unsigned long flags); + /* _ */ int (*getxtimes)(const char *path, + struct fuse_timespec *bkuptime, struct fuse_timespec *crtime); + /* _ */ int (*setbkuptime)(const char *path, const struct fuse_timespec *tv); + /* S */ int (*setchgtime)(const char *path, const struct fuse_timespec *tv); + /* S */ int (*setcrtime)(const char *path, const struct fuse_timespec *tv); + /* S */ int (*chflags)(const char *path, uint32_t flags); + /* _ */ int (*setattr_x)(const char *path, struct fuse_setattr_x *attr); + /* _ */ int (*fsetattr_x)(const char *path, struct fuse_setattr_x *attr, + struct fuse_file_info *fi); +}; + +struct fuse_context +{ + struct fuse *fuse; + fuse_uid_t uid; + fuse_gid_t gid; + fuse_pid_t pid; + void *private_data; + fuse_mode_t umask; +}; + +#define fuse_main(argc, argv, ops, data)\ + fuse_main_real(argc, argv, ops, sizeof *(ops), data) + +FSP_FUSE_API int FSP_FUSE_API_NAME(fsp_fuse_main_real)(struct fsp_fuse_env *env, + int argc, char *argv[], + const struct fuse_operations *ops, size_t opsize, void *data); +FSP_FUSE_API int FSP_FUSE_API_NAME(fsp_fuse_is_lib_option)(struct fsp_fuse_env *env, + const char *opt); +FSP_FUSE_API struct fuse *FSP_FUSE_API_NAME(fsp_fuse_new)(struct fsp_fuse_env *env, + struct fuse_chan *ch, struct fuse_args *args, + const struct fuse_operations *ops, size_t opsize, void *data); +FSP_FUSE_API void FSP_FUSE_API_NAME(fsp_fuse_destroy)(struct fsp_fuse_env *env, + struct fuse *f); +FSP_FUSE_API int FSP_FUSE_API_NAME(fsp_fuse_loop)(struct fsp_fuse_env *env, + struct fuse *f); +FSP_FUSE_API int FSP_FUSE_API_NAME(fsp_fuse_loop_mt)(struct fsp_fuse_env *env, + struct fuse *f); +FSP_FUSE_API void FSP_FUSE_API_NAME(fsp_fuse_exit)(struct fsp_fuse_env *env, + struct fuse *f); +FSP_FUSE_API int FSP_FUSE_API_NAME(fsp_fuse_exited)(struct fsp_fuse_env *env, + struct fuse *f); +FSP_FUSE_API int FSP_FUSE_API_NAME(fsp_fuse_notify)(struct fsp_fuse_env *env, + struct fuse *f, const char *path, uint32_t action); +FSP_FUSE_API struct fuse_context *FSP_FUSE_API_NAME(fsp_fuse_get_context)(struct fsp_fuse_env *env); + +FSP_FUSE_SYM( +int fuse_main_real(int argc, char *argv[], + const struct fuse_operations *ops, size_t opsize, void *data), +{ + return FSP_FUSE_API_CALL(fsp_fuse_main_real) + (fsp_fuse_env(), argc, argv, ops, opsize, data); +}) + +FSP_FUSE_SYM( +int fuse_is_lib_option(const char *opt), +{ + return FSP_FUSE_API_CALL(fsp_fuse_is_lib_option) + (fsp_fuse_env(), opt); +}) + +FSP_FUSE_SYM( +struct fuse *fuse_new(struct fuse_chan *ch, struct fuse_args *args, + const struct fuse_operations *ops, size_t opsize, void *data), +{ + return FSP_FUSE_API_CALL(fsp_fuse_new) + (fsp_fuse_env(), ch, args, ops, opsize, data); +}) + +FSP_FUSE_SYM( +void fuse_destroy(struct fuse *f), +{ + FSP_FUSE_API_CALL(fsp_fuse_destroy) + (fsp_fuse_env(), f); +}) + +FSP_FUSE_SYM( +int fuse_loop(struct fuse *f), +{ + return FSP_FUSE_API_CALL(fsp_fuse_loop) + (fsp_fuse_env(), f); +}) + +FSP_FUSE_SYM( +int fuse_loop_mt(struct fuse *f), +{ + return FSP_FUSE_API_CALL(fsp_fuse_loop_mt) + (fsp_fuse_env(), f); +}) + +FSP_FUSE_SYM( +void fuse_exit(struct fuse *f), +{ + FSP_FUSE_API_CALL(fsp_fuse_exit) + (fsp_fuse_env(), f); +}) + +FSP_FUSE_SYM( +int fuse_exited(struct fuse *f), +{ + return FSP_FUSE_API_CALL(fsp_fuse_exited) + (fsp_fuse_env(), f); +}) + +FSP_FUSE_SYM( +int fuse_notify(struct fuse *f, const char *path, uint32_t action), +{ + return FSP_FUSE_API_CALL(fsp_fuse_notify) + (fsp_fuse_env(), f, path, action); +}) + +FSP_FUSE_SYM( +struct fuse_context *fuse_get_context(void), +{ + return FSP_FUSE_API_CALL(fsp_fuse_get_context) + (fsp_fuse_env()); +}) + +FSP_FUSE_SYM( +int fuse_getgroups(int size, fuse_gid_t list[]), +{ + (void)size; + (void)list; + return -ENOSYS; +}) + +FSP_FUSE_SYM( +int fuse_interrupted(void), +{ + return 0; +}) + +FSP_FUSE_SYM( +int fuse_invalidate(struct fuse *f, const char *path), +{ + return FSP_FUSE_API_CALL(fsp_fuse_notify) + (fsp_fuse_env(), f, path, 0); +}) + +FSP_FUSE_SYM( +int fuse_notify_poll(struct fuse_pollhandle *ph), +{ + (void)ph; + return 0; +}) + +FSP_FUSE_SYM( +struct fuse_session *fuse_get_session(struct fuse *f), +{ + return (struct fuse_session *)f; +}) + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/support/3rd_party/winfsp-2.0/inc/fuse/fuse_common.h b/support/3rd_party/winfsp-2.1/inc/fuse/fuse_common.h similarity index 96% rename from support/3rd_party/winfsp-2.0/inc/fuse/fuse_common.h rename to support/3rd_party/winfsp-2.1/inc/fuse/fuse_common.h index 5daa7a41..6c6e7e5f 100644 --- a/support/3rd_party/winfsp-2.0/inc/fuse/fuse_common.h +++ b/support/3rd_party/winfsp-2.1/inc/fuse/fuse_common.h @@ -1,202 +1,202 @@ -/** - * @file fuse/fuse_common.h - * WinFsp FUSE compatible API. - * - * This file is derived from libfuse/include/fuse_common.h: - * FUSE: Filesystem in Userspace - * Copyright (C) 2001-2007 Miklos Szeredi - * - * @copyright 2015-2022 Bill Zissimopoulos - */ -/* - * This file is part of WinFsp. - * - * You can redistribute it and/or modify it under the terms of the GNU - * General Public License version 3 as published by the Free Software - * Foundation. - * - * Licensees holding a valid commercial license may use this software - * in accordance with the commercial license agreement provided in - * conjunction with the software. The terms and conditions of any such - * commercial license agreement shall govern, supersede, and render - * ineffective any application of the GPLv3 license to this software, - * notwithstanding of any reference thereto in the software or - * associated repository. - */ - -#ifndef FUSE_COMMON_H_ -#define FUSE_COMMON_H_ - -#include "winfsp_fuse.h" -#include "fuse_opt.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#define FUSE_MAJOR_VERSION 2 -#define FUSE_MINOR_VERSION 8 -#define FUSE_MAKE_VERSION(maj, min) ((maj) * 10 + (min)) -#define FUSE_VERSION FUSE_MAKE_VERSION(FUSE_MAJOR_VERSION, FUSE_MINOR_VERSION) - -#define FUSE_CAP_ASYNC_READ (1 << 0) -#define FUSE_CAP_POSIX_LOCKS (1 << 1) -#define FUSE_CAP_ATOMIC_O_TRUNC (1 << 3) -#define FUSE_CAP_EXPORT_SUPPORT (1 << 4) -#define FUSE_CAP_BIG_WRITES (1 << 5) -#define FUSE_CAP_DONT_MASK (1 << 6) -#define FUSE_CAP_ALLOCATE (1 << 27) /* reserved (OSXFUSE) */ -#define FUSE_CAP_EXCHANGE_DATA (1 << 28) /* reserved (OSXFUSE) */ -#define FUSE_CAP_CASE_INSENSITIVE (1 << 29) /* file system is case insensitive */ -#define FUSE_CAP_VOL_RENAME (1 << 30) /* reserved (OSXFUSE) */ -#define FUSE_CAP_XTIMES (1 << 31) /* reserved (OSXFUSE) */ - -#define FSP_FUSE_CAP_READDIR_PLUS (1 << 21) /* file system supports enhanced readdir */ -#define FSP_FUSE_CAP_READ_ONLY (1 << 22) /* file system is marked read-only */ -#define FSP_FUSE_CAP_STAT_EX (1 << 23) /* file system supports fuse_stat_ex */ -#define FSP_FUSE_CAP_DELETE_ACCESS (1 << 24) /* file system supports access with DELETE_OK */ -#define FSP_FUSE_CAP_CASE_INSENSITIVE FUSE_CAP_CASE_INSENSITIVE - -#define FUSE_IOCTL_COMPAT (1 << 0) -#define FUSE_IOCTL_UNRESTRICTED (1 << 1) -#define FUSE_IOCTL_RETRY (1 << 2) -#define FUSE_IOCTL_MAX_IOV 256 - -/* from FreeBSD */ -#define FSP_FUSE_UF_HIDDEN 0x00008000 -#define FSP_FUSE_UF_READONLY 0x00001000 -#define FSP_FUSE_UF_SYSTEM 0x00000080 -#define FSP_FUSE_UF_ARCHIVE 0x00000800 -#if !defined(UF_HIDDEN) -#define UF_HIDDEN FSP_FUSE_UF_HIDDEN -#endif -#if !defined(UF_READONLY) -#define UF_READONLY FSP_FUSE_UF_READONLY -#endif -#if !defined(UF_SYSTEM) -#define UF_SYSTEM FSP_FUSE_UF_SYSTEM -#endif -#if !defined(UF_ARCHIVE) -#define UF_ARCHIVE FSP_FUSE_UF_ARCHIVE -#endif - -/* delete access */ -#define FSP_FUSE_DELETE_OK 0x40000000 - -/* notify extension */ -#define FSP_FUSE_NOTIFY_MKDIR 0x0001 -#define FSP_FUSE_NOTIFY_RMDIR 0x0002 -#define FSP_FUSE_NOTIFY_CREATE 0x0004 -#define FSP_FUSE_NOTIFY_UNLINK 0x0008 -#define FSP_FUSE_NOTIFY_CHMOD 0x0010 -#define FSP_FUSE_NOTIFY_CHOWN 0x0020 -#define FSP_FUSE_NOTIFY_UTIME 0x0040 -#define FSP_FUSE_NOTIFY_CHFLAGS 0x0080 -#define FSP_FUSE_NOTIFY_TRUNCATE 0x0100 - -/* getpath extension */ -#define FSP_FUSE_HAS_GETPATH 1 - -struct fuse_file_info -{ - int flags; - unsigned int fh_old; - int writepage; - unsigned int direct_io:1; - unsigned int keep_cache:1; - unsigned int flush:1; - unsigned int nonseekable:1; - unsigned int padding:28; - uint64_t fh; - uint64_t lock_owner; -}; - -struct fuse_conn_info -{ - unsigned proto_major; - unsigned proto_minor; - unsigned async_read; - unsigned max_write; - unsigned max_readahead; - unsigned capable; - unsigned want; - unsigned reserved[25]; -}; - -struct fuse_session; -struct fuse_chan; -struct fuse_pollhandle; -struct fuse_bufvec; -struct fuse_statfs; -struct fuse_setattr_x; - -FSP_FUSE_API int FSP_FUSE_API_NAME(fsp_fuse_version)(struct fsp_fuse_env *env); -FSP_FUSE_API struct fuse_chan *FSP_FUSE_API_NAME(fsp_fuse_mount)(struct fsp_fuse_env *env, - const char *mountpoint, struct fuse_args *args); -FSP_FUSE_API void FSP_FUSE_API_NAME(fsp_fuse_unmount)(struct fsp_fuse_env *env, - const char *mountpoint, struct fuse_chan *ch); -FSP_FUSE_API int FSP_FUSE_API_NAME(fsp_fuse_parse_cmdline)(struct fsp_fuse_env *env, - struct fuse_args *args, - char **mountpoint, int *multithreaded, int *foreground); -FSP_FUSE_API int32_t FSP_FUSE_API_NAME(fsp_fuse_ntstatus_from_errno)(struct fsp_fuse_env *env, - int err); - -FSP_FUSE_SYM( -int fuse_version(void), -{ - return FSP_FUSE_API_CALL(fsp_fuse_version) - (fsp_fuse_env()); -}) - -FSP_FUSE_SYM( -struct fuse_chan *fuse_mount(const char *mountpoint, struct fuse_args *args), -{ - return FSP_FUSE_API_CALL(fsp_fuse_mount) - (fsp_fuse_env(), mountpoint, args); -}) - -FSP_FUSE_SYM( -void fuse_unmount(const char *mountpoint, struct fuse_chan *ch), -{ - FSP_FUSE_API_CALL(fsp_fuse_unmount) - (fsp_fuse_env(), mountpoint, ch); -}) - -FSP_FUSE_SYM( -int fuse_parse_cmdline(struct fuse_args *args, - char **mountpoint, int *multithreaded, int *foreground), -{ - return FSP_FUSE_API_CALL(fsp_fuse_parse_cmdline) - (fsp_fuse_env(), args, mountpoint, multithreaded, foreground); -}) - -FSP_FUSE_SYM( -void fuse_pollhandle_destroy(struct fuse_pollhandle *ph), -{ - (void)ph; -}) - -FSP_FUSE_SYM( -int fuse_daemonize(int foreground), -{ - return fsp_fuse_daemonize(foreground); -}) - -FSP_FUSE_SYM( -int fuse_set_signal_handlers(struct fuse_session *se), -{ - return fsp_fuse_set_signal_handlers(se); -}) - -FSP_FUSE_SYM( -void fuse_remove_signal_handlers(struct fuse_session *se), -{ - (void)se; - fsp_fuse_set_signal_handlers(0); -}) - -#ifdef __cplusplus -} -#endif - -#endif +/** + * @file fuse/fuse_common.h + * WinFsp FUSE compatible API. + * + * This file is derived from libfuse/include/fuse_common.h: + * FUSE: Filesystem in Userspace + * Copyright (C) 2001-2007 Miklos Szeredi + * + * @copyright 2015-2025 Bill Zissimopoulos + */ +/* + * This file is part of WinFsp. + * + * You can redistribute it and/or modify it under the terms of the GNU + * General Public License version 3 as published by the Free Software + * Foundation. + * + * Licensees holding a valid commercial license may use this software + * in accordance with the commercial license agreement provided in + * conjunction with the software. The terms and conditions of any such + * commercial license agreement shall govern, supersede, and render + * ineffective any application of the GPLv3 license to this software, + * notwithstanding of any reference thereto in the software or + * associated repository. + */ + +#ifndef FUSE_COMMON_H_ +#define FUSE_COMMON_H_ + +#include "winfsp_fuse.h" +#include "fuse_opt.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define FUSE_MAJOR_VERSION 2 +#define FUSE_MINOR_VERSION 8 +#define FUSE_MAKE_VERSION(maj, min) ((maj) * 10 + (min)) +#define FUSE_VERSION FUSE_MAKE_VERSION(FUSE_MAJOR_VERSION, FUSE_MINOR_VERSION) + +#define FUSE_CAP_ASYNC_READ (1 << 0) +#define FUSE_CAP_POSIX_LOCKS (1 << 1) +#define FUSE_CAP_ATOMIC_O_TRUNC (1 << 3) +#define FUSE_CAP_EXPORT_SUPPORT (1 << 4) +#define FUSE_CAP_BIG_WRITES (1 << 5) +#define FUSE_CAP_DONT_MASK (1 << 6) +#define FUSE_CAP_ALLOCATE (1 << 27) /* reserved (OSXFUSE) */ +#define FUSE_CAP_EXCHANGE_DATA (1 << 28) /* reserved (OSXFUSE) */ +#define FUSE_CAP_CASE_INSENSITIVE (1 << 29) /* file system is case insensitive */ +#define FUSE_CAP_VOL_RENAME (1 << 30) /* reserved (OSXFUSE) */ +#define FUSE_CAP_XTIMES (1 << 31) /* reserved (OSXFUSE) */ + +#define FSP_FUSE_CAP_READDIR_PLUS (1 << 21) /* file system supports enhanced readdir */ +#define FSP_FUSE_CAP_READ_ONLY (1 << 22) /* file system is marked read-only */ +#define FSP_FUSE_CAP_STAT_EX (1 << 23) /* file system supports fuse_stat_ex */ +#define FSP_FUSE_CAP_DELETE_ACCESS (1 << 24) /* file system supports access with DELETE_OK */ +#define FSP_FUSE_CAP_CASE_INSENSITIVE FUSE_CAP_CASE_INSENSITIVE + +#define FUSE_IOCTL_COMPAT (1 << 0) +#define FUSE_IOCTL_UNRESTRICTED (1 << 1) +#define FUSE_IOCTL_RETRY (1 << 2) +#define FUSE_IOCTL_MAX_IOV 256 + +/* from FreeBSD */ +#define FSP_FUSE_UF_HIDDEN 0x00008000 +#define FSP_FUSE_UF_READONLY 0x00001000 +#define FSP_FUSE_UF_SYSTEM 0x00000080 +#define FSP_FUSE_UF_ARCHIVE 0x00000800 +#if !defined(UF_HIDDEN) +#define UF_HIDDEN FSP_FUSE_UF_HIDDEN +#endif +#if !defined(UF_READONLY) +#define UF_READONLY FSP_FUSE_UF_READONLY +#endif +#if !defined(UF_SYSTEM) +#define UF_SYSTEM FSP_FUSE_UF_SYSTEM +#endif +#if !defined(UF_ARCHIVE) +#define UF_ARCHIVE FSP_FUSE_UF_ARCHIVE +#endif + +/* delete access */ +#define FSP_FUSE_DELETE_OK 0x40000000 + +/* notify extension */ +#define FSP_FUSE_NOTIFY_MKDIR 0x0001 +#define FSP_FUSE_NOTIFY_RMDIR 0x0002 +#define FSP_FUSE_NOTIFY_CREATE 0x0004 +#define FSP_FUSE_NOTIFY_UNLINK 0x0008 +#define FSP_FUSE_NOTIFY_CHMOD 0x0010 +#define FSP_FUSE_NOTIFY_CHOWN 0x0020 +#define FSP_FUSE_NOTIFY_UTIME 0x0040 +#define FSP_FUSE_NOTIFY_CHFLAGS 0x0080 +#define FSP_FUSE_NOTIFY_TRUNCATE 0x0100 + +/* getpath extension */ +#define FSP_FUSE_HAS_GETPATH 1 + +struct fuse_file_info +{ + int flags; + unsigned int fh_old; + int writepage; + unsigned int direct_io:1; + unsigned int keep_cache:1; + unsigned int flush:1; + unsigned int nonseekable:1; + unsigned int padding:28; + uint64_t fh; + uint64_t lock_owner; +}; + +struct fuse_conn_info +{ + unsigned proto_major; + unsigned proto_minor; + unsigned async_read; + unsigned max_write; + unsigned max_readahead; + unsigned capable; + unsigned want; + unsigned reserved[25]; +}; + +struct fuse_session; +struct fuse_chan; +struct fuse_pollhandle; +struct fuse_bufvec; +struct fuse_statfs; +struct fuse_setattr_x; + +FSP_FUSE_API int FSP_FUSE_API_NAME(fsp_fuse_version)(struct fsp_fuse_env *env); +FSP_FUSE_API struct fuse_chan *FSP_FUSE_API_NAME(fsp_fuse_mount)(struct fsp_fuse_env *env, + const char *mountpoint, struct fuse_args *args); +FSP_FUSE_API void FSP_FUSE_API_NAME(fsp_fuse_unmount)(struct fsp_fuse_env *env, + const char *mountpoint, struct fuse_chan *ch); +FSP_FUSE_API int FSP_FUSE_API_NAME(fsp_fuse_parse_cmdline)(struct fsp_fuse_env *env, + struct fuse_args *args, + char **mountpoint, int *multithreaded, int *foreground); +FSP_FUSE_API int32_t FSP_FUSE_API_NAME(fsp_fuse_ntstatus_from_errno)(struct fsp_fuse_env *env, + int err); + +FSP_FUSE_SYM( +int fuse_version(void), +{ + return FSP_FUSE_API_CALL(fsp_fuse_version) + (fsp_fuse_env()); +}) + +FSP_FUSE_SYM( +struct fuse_chan *fuse_mount(const char *mountpoint, struct fuse_args *args), +{ + return FSP_FUSE_API_CALL(fsp_fuse_mount) + (fsp_fuse_env(), mountpoint, args); +}) + +FSP_FUSE_SYM( +void fuse_unmount(const char *mountpoint, struct fuse_chan *ch), +{ + FSP_FUSE_API_CALL(fsp_fuse_unmount) + (fsp_fuse_env(), mountpoint, ch); +}) + +FSP_FUSE_SYM( +int fuse_parse_cmdline(struct fuse_args *args, + char **mountpoint, int *multithreaded, int *foreground), +{ + return FSP_FUSE_API_CALL(fsp_fuse_parse_cmdline) + (fsp_fuse_env(), args, mountpoint, multithreaded, foreground); +}) + +FSP_FUSE_SYM( +void fuse_pollhandle_destroy(struct fuse_pollhandle *ph), +{ + (void)ph; +}) + +FSP_FUSE_SYM( +int fuse_daemonize(int foreground), +{ + return fsp_fuse_daemonize(foreground); +}) + +FSP_FUSE_SYM( +int fuse_set_signal_handlers(struct fuse_session *se), +{ + return fsp_fuse_set_signal_handlers(se); +}) + +FSP_FUSE_SYM( +void fuse_remove_signal_handlers(struct fuse_session *se), +{ + (void)se; + fsp_fuse_set_signal_handlers(0); +}) + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/support/3rd_party/winfsp-2.0/inc/fuse/fuse_opt.h b/support/3rd_party/winfsp-2.1/inc/fuse/fuse_opt.h similarity index 95% rename from support/3rd_party/winfsp-2.0/inc/fuse/fuse_opt.h rename to support/3rd_party/winfsp-2.1/inc/fuse/fuse_opt.h index f30a4a7e..6767a93b 100644 --- a/support/3rd_party/winfsp-2.0/inc/fuse/fuse_opt.h +++ b/support/3rd_party/winfsp-2.1/inc/fuse/fuse_opt.h @@ -1,133 +1,133 @@ -/** - * @file fuse/fuse_opt.h - * WinFsp FUSE compatible API. - * - * This file is derived from libfuse/include/fuse_opt.h: - * FUSE: Filesystem in Userspace - * Copyright (C) 2001-2007 Miklos Szeredi - * - * @copyright 2015-2022 Bill Zissimopoulos - */ -/* - * This file is part of WinFsp. - * - * You can redistribute it and/or modify it under the terms of the GNU - * General Public License version 3 as published by the Free Software - * Foundation. - * - * Licensees holding a valid commercial license may use this software - * in accordance with the commercial license agreement provided in - * conjunction with the software. The terms and conditions of any such - * commercial license agreement shall govern, supersede, and render - * ineffective any application of the GPLv3 license to this software, - * notwithstanding of any reference thereto in the software or - * associated repository. - */ - -#ifndef FUSE_OPT_H_ -#define FUSE_OPT_H_ - -#include "winfsp_fuse.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#define FUSE_OPT_KEY(templ, key) { templ, -1, key } -#define FUSE_OPT_END { NULL, 0, 0 } - -#define FUSE_OPT_KEY_OPT -1 -#define FUSE_OPT_KEY_NONOPT -2 -#define FUSE_OPT_KEY_KEEP -3 -#define FUSE_OPT_KEY_DISCARD -4 - -#define FUSE_ARGS_INIT(argc, argv) { argc, argv, 0 } - -struct fuse_opt -{ - const char *templ; - unsigned int offset; - int value; -}; - -struct fuse_args -{ - int argc; - char **argv; - int allocated; -}; - -typedef int (*fuse_opt_proc_t)(void *data, const char *arg, int key, - struct fuse_args *outargs); - -FSP_FUSE_API int FSP_FUSE_API_NAME(fsp_fuse_opt_parse)(struct fsp_fuse_env *env, - struct fuse_args *args, void *data, - const struct fuse_opt opts[], fuse_opt_proc_t proc); -FSP_FUSE_API int FSP_FUSE_API_NAME(fsp_fuse_opt_add_arg)(struct fsp_fuse_env *env, - struct fuse_args *args, const char *arg); -FSP_FUSE_API int FSP_FUSE_API_NAME(fsp_fuse_opt_insert_arg)(struct fsp_fuse_env *env, - struct fuse_args *args, int pos, const char *arg); -FSP_FUSE_API void FSP_FUSE_API_NAME(fsp_fuse_opt_free_args)(struct fsp_fuse_env *env, - struct fuse_args *args); -FSP_FUSE_API int FSP_FUSE_API_NAME(fsp_fuse_opt_add_opt)(struct fsp_fuse_env *env, - char **opts, const char *opt); -FSP_FUSE_API int FSP_FUSE_API_NAME(fsp_fuse_opt_add_opt_escaped)(struct fsp_fuse_env *env, - char **opts, const char *opt); -FSP_FUSE_API int FSP_FUSE_API_NAME(fsp_fuse_opt_match)(struct fsp_fuse_env *env, - const struct fuse_opt opts[], const char *opt); - -FSP_FUSE_SYM( -int fuse_opt_parse(struct fuse_args *args, void *data, - const struct fuse_opt opts[], fuse_opt_proc_t proc), -{ - return FSP_FUSE_API_CALL(fsp_fuse_opt_parse) - (fsp_fuse_env(), args, data, opts, proc); -}) - -FSP_FUSE_SYM( -int fuse_opt_add_arg(struct fuse_args *args, const char *arg), -{ - return FSP_FUSE_API_CALL(fsp_fuse_opt_add_arg) - (fsp_fuse_env(), args, arg); -}) - -FSP_FUSE_SYM( -int fuse_opt_insert_arg(struct fuse_args *args, int pos, const char *arg), -{ - return FSP_FUSE_API_CALL(fsp_fuse_opt_insert_arg) - (fsp_fuse_env(), args, pos, arg); -}) - -FSP_FUSE_SYM( -void fuse_opt_free_args(struct fuse_args *args), -{ - FSP_FUSE_API_CALL(fsp_fuse_opt_free_args) - (fsp_fuse_env(), args); -}) - -FSP_FUSE_SYM( -int fuse_opt_add_opt(char **opts, const char *opt), -{ - return FSP_FUSE_API_CALL(fsp_fuse_opt_add_opt) - (fsp_fuse_env(), opts, opt); -}) - -FSP_FUSE_SYM( -int fuse_opt_add_opt_escaped(char **opts, const char *opt), -{ - return FSP_FUSE_API_CALL(fsp_fuse_opt_add_opt_escaped) - (fsp_fuse_env(), opts, opt); -}) - -FSP_FUSE_SYM( -int fuse_opt_match(const struct fuse_opt opts[], const char *opt), -{ - return FSP_FUSE_API_CALL(fsp_fuse_opt_match) - (fsp_fuse_env(), opts, opt); -}) - -#ifdef __cplusplus -} -#endif - -#endif +/** + * @file fuse/fuse_opt.h + * WinFsp FUSE compatible API. + * + * This file is derived from libfuse/include/fuse_opt.h: + * FUSE: Filesystem in Userspace + * Copyright (C) 2001-2007 Miklos Szeredi + * + * @copyright 2015-2025 Bill Zissimopoulos + */ +/* + * This file is part of WinFsp. + * + * You can redistribute it and/or modify it under the terms of the GNU + * General Public License version 3 as published by the Free Software + * Foundation. + * + * Licensees holding a valid commercial license may use this software + * in accordance with the commercial license agreement provided in + * conjunction with the software. The terms and conditions of any such + * commercial license agreement shall govern, supersede, and render + * ineffective any application of the GPLv3 license to this software, + * notwithstanding of any reference thereto in the software or + * associated repository. + */ + +#ifndef FUSE_OPT_H_ +#define FUSE_OPT_H_ + +#include "winfsp_fuse.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define FUSE_OPT_KEY(templ, key) { templ, -1, key } +#define FUSE_OPT_END { NULL, 0, 0 } + +#define FUSE_OPT_KEY_OPT -1 +#define FUSE_OPT_KEY_NONOPT -2 +#define FUSE_OPT_KEY_KEEP -3 +#define FUSE_OPT_KEY_DISCARD -4 + +#define FUSE_ARGS_INIT(argc, argv) { argc, argv, 0 } + +struct fuse_opt +{ + const char *templ; + unsigned int offset; + int value; +}; + +struct fuse_args +{ + int argc; + char **argv; + int allocated; +}; + +typedef int (*fuse_opt_proc_t)(void *data, const char *arg, int key, + struct fuse_args *outargs); + +FSP_FUSE_API int FSP_FUSE_API_NAME(fsp_fuse_opt_parse)(struct fsp_fuse_env *env, + struct fuse_args *args, void *data, + const struct fuse_opt opts[], fuse_opt_proc_t proc); +FSP_FUSE_API int FSP_FUSE_API_NAME(fsp_fuse_opt_add_arg)(struct fsp_fuse_env *env, + struct fuse_args *args, const char *arg); +FSP_FUSE_API int FSP_FUSE_API_NAME(fsp_fuse_opt_insert_arg)(struct fsp_fuse_env *env, + struct fuse_args *args, int pos, const char *arg); +FSP_FUSE_API void FSP_FUSE_API_NAME(fsp_fuse_opt_free_args)(struct fsp_fuse_env *env, + struct fuse_args *args); +FSP_FUSE_API int FSP_FUSE_API_NAME(fsp_fuse_opt_add_opt)(struct fsp_fuse_env *env, + char **opts, const char *opt); +FSP_FUSE_API int FSP_FUSE_API_NAME(fsp_fuse_opt_add_opt_escaped)(struct fsp_fuse_env *env, + char **opts, const char *opt); +FSP_FUSE_API int FSP_FUSE_API_NAME(fsp_fuse_opt_match)(struct fsp_fuse_env *env, + const struct fuse_opt opts[], const char *opt); + +FSP_FUSE_SYM( +int fuse_opt_parse(struct fuse_args *args, void *data, + const struct fuse_opt opts[], fuse_opt_proc_t proc), +{ + return FSP_FUSE_API_CALL(fsp_fuse_opt_parse) + (fsp_fuse_env(), args, data, opts, proc); +}) + +FSP_FUSE_SYM( +int fuse_opt_add_arg(struct fuse_args *args, const char *arg), +{ + return FSP_FUSE_API_CALL(fsp_fuse_opt_add_arg) + (fsp_fuse_env(), args, arg); +}) + +FSP_FUSE_SYM( +int fuse_opt_insert_arg(struct fuse_args *args, int pos, const char *arg), +{ + return FSP_FUSE_API_CALL(fsp_fuse_opt_insert_arg) + (fsp_fuse_env(), args, pos, arg); +}) + +FSP_FUSE_SYM( +void fuse_opt_free_args(struct fuse_args *args), +{ + FSP_FUSE_API_CALL(fsp_fuse_opt_free_args) + (fsp_fuse_env(), args); +}) + +FSP_FUSE_SYM( +int fuse_opt_add_opt(char **opts, const char *opt), +{ + return FSP_FUSE_API_CALL(fsp_fuse_opt_add_opt) + (fsp_fuse_env(), opts, opt); +}) + +FSP_FUSE_SYM( +int fuse_opt_add_opt_escaped(char **opts, const char *opt), +{ + return FSP_FUSE_API_CALL(fsp_fuse_opt_add_opt_escaped) + (fsp_fuse_env(), opts, opt); +}) + +FSP_FUSE_SYM( +int fuse_opt_match(const struct fuse_opt opts[], const char *opt), +{ + return FSP_FUSE_API_CALL(fsp_fuse_opt_match) + (fsp_fuse_env(), opts, opt); +}) + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/support/3rd_party/winfsp-2.0/inc/fuse/winfsp_fuse.h b/support/3rd_party/winfsp-2.1/inc/fuse/winfsp_fuse.h similarity index 95% rename from support/3rd_party/winfsp-2.0/inc/fuse/winfsp_fuse.h rename to support/3rd_party/winfsp-2.1/inc/fuse/winfsp_fuse.h index a99a0bed..f41dd431 100644 --- a/support/3rd_party/winfsp-2.0/inc/fuse/winfsp_fuse.h +++ b/support/3rd_party/winfsp-2.1/inc/fuse/winfsp_fuse.h @@ -1,434 +1,435 @@ -/** - * @file fuse/winfsp_fuse.h - * WinFsp FUSE compatible API. - * - * @copyright 2015-2022 Bill Zissimopoulos - */ -/* - * This file is part of WinFsp. - * - * You can redistribute it and/or modify it under the terms of the GNU - * General Public License version 3 as published by the Free Software - * Foundation. - * - * Licensees holding a valid commercial license may use this software - * in accordance with the commercial license agreement provided in - * conjunction with the software. The terms and conditions of any such - * commercial license agreement shall govern, supersede, and render - * ineffective any application of the GPLv3 license to this software, - * notwithstanding of any reference thereto in the software or - * associated repository. - */ - -#ifndef FUSE_WINFSP_FUSE_H_INCLUDED -#define FUSE_WINFSP_FUSE_H_INCLUDED - -#include -#include -#if !defined(WINFSP_DLL_INTERNAL) -#include -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -#if !defined(FSP_FUSE_API) -#if defined(WINFSP_DLL_INTERNAL) -#define FSP_FUSE_API __declspec(dllexport) -#else -#define FSP_FUSE_API __declspec(dllimport) -#endif -#endif - -#if !defined(FSP_FUSE_API_NAME) -#define FSP_FUSE_API_NAME(n) (n) -#endif - -#if !defined(FSP_FUSE_API_CALL) -#define FSP_FUSE_API_CALL(n) (n) -#endif - -#if !defined(FSP_FUSE_SYM) -#if !defined(CYGFUSE) -#define FSP_FUSE_SYM(proto, ...) static inline proto { __VA_ARGS__ } -#else -#define FSP_FUSE_SYM(proto, ...) proto; -#endif -#endif - -#define FSP_FUSE_DEVICE_TYPE (0x8000 | 'W' | 'F' * 0x100) /* DeviceIoControl -> ioctl */ -#define FSP_FUSE_CTLCODE_FROM_IOCTL(cmd)\ - (FSP_FUSE_DEVICE_TYPE << 16) | (((cmd) & 0x0fff) << 2) -#define FSP_FUSE_IOCTL(cmd, isiz, osiz) \ - ( \ - (((osiz) != 0) << 31) | \ - (((isiz) != 0) << 30) | \ - (((isiz) | (osiz)) << 16) | \ - (cmd) \ - ) - -/* - * FUSE uses a number of types (notably: struct stat) that are OS specific. - * Furthermore there are sometimes multiple definitions of the same type even - * within the same OS. This is certainly true on Windows, where these types - * are not even native. - * - * For this reason we will define our own fuse_* types which represent the - * types as the WinFsp DLL expects to see them. We will define these types - * to be compatible with the equivalent Cygwin types as we want WinFsp-FUSE - * to be usable from Cygwin. - */ - -#define FSP_FUSE_STAT_FIELD_DEFN \ - fuse_dev_t st_dev; \ - fuse_ino_t st_ino; \ - fuse_mode_t st_mode; \ - fuse_nlink_t st_nlink; \ - fuse_uid_t st_uid; \ - fuse_gid_t st_gid; \ - fuse_dev_t st_rdev; \ - fuse_off_t st_size; \ - struct fuse_timespec st_atim; \ - struct fuse_timespec st_mtim; \ - struct fuse_timespec st_ctim; \ - fuse_blksize_t st_blksize; \ - fuse_blkcnt_t st_blocks; \ - struct fuse_timespec st_birthtim; -#define FSP_FUSE_STAT_EX_FIELD_DEFN \ - FSP_FUSE_STAT_FIELD_DEFN \ - uint32_t st_flags; \ - uint32_t st_reserved32[3]; \ - uint64_t st_reserved64[2]; - -#if defined(_WIN64) || defined(_WIN32) - -typedef uint32_t fuse_uid_t; -typedef uint32_t fuse_gid_t; -typedef int32_t fuse_pid_t; - -typedef uint32_t fuse_dev_t; -typedef uint64_t fuse_ino_t; -typedef uint32_t fuse_mode_t; -typedef uint16_t fuse_nlink_t; -typedef int64_t fuse_off_t; - -#if defined(_WIN64) -typedef uint64_t fuse_fsblkcnt_t; -typedef uint64_t fuse_fsfilcnt_t; -#else -typedef uint32_t fuse_fsblkcnt_t; -typedef uint32_t fuse_fsfilcnt_t; -#endif -typedef int32_t fuse_blksize_t; -typedef int64_t fuse_blkcnt_t; - -#if defined(_WIN64) -struct fuse_utimbuf -{ - int64_t actime; - int64_t modtime; -}; -struct fuse_timespec -{ - int64_t tv_sec; - int64_t tv_nsec; -}; -#else -struct fuse_utimbuf -{ - int32_t actime; - int32_t modtime; -}; -struct fuse_timespec -{ - int32_t tv_sec; - int32_t tv_nsec; -}; -#endif - -#if !defined(FSP_FUSE_USE_STAT_EX) -struct fuse_stat -{ - FSP_FUSE_STAT_FIELD_DEFN -}; -#else -struct fuse_stat -{ - FSP_FUSE_STAT_EX_FIELD_DEFN -}; -#endif - -#if defined(_WIN64) -struct fuse_statvfs -{ - uint64_t f_bsize; - uint64_t f_frsize; - fuse_fsblkcnt_t f_blocks; - fuse_fsblkcnt_t f_bfree; - fuse_fsblkcnt_t f_bavail; - fuse_fsfilcnt_t f_files; - fuse_fsfilcnt_t f_ffree; - fuse_fsfilcnt_t f_favail; - uint64_t f_fsid; - uint64_t f_flag; - uint64_t f_namemax; -}; -#else -struct fuse_statvfs -{ - uint32_t f_bsize; - uint32_t f_frsize; - fuse_fsblkcnt_t f_blocks; - fuse_fsblkcnt_t f_bfree; - fuse_fsblkcnt_t f_bavail; - fuse_fsfilcnt_t f_files; - fuse_fsfilcnt_t f_ffree; - fuse_fsfilcnt_t f_favail; - uint32_t f_fsid; - uint32_t f_flag; - uint32_t f_namemax; -}; -#endif - -struct fuse_flock -{ - int16_t l_type; - int16_t l_whence; - fuse_off_t l_start; - fuse_off_t l_len; - fuse_pid_t l_pid; -}; - -#if defined(WINFSP_DLL_INTERNAL) -#define FSP_FUSE_ENV_INIT \ - { \ - 'W', \ - MemAlloc, MemFree, \ - fsp_fuse_daemonize, \ - fsp_fuse_set_signal_handlers, \ - 0/*conv_to_win_path*/, \ - 0/*winpid_to_pid*/, \ - { 0 }, \ - } -#else -#define FSP_FUSE_ENV_INIT \ - { \ - 'W', \ - malloc, free, \ - fsp_fuse_daemonize, \ - fsp_fuse_set_signal_handlers, \ - 0/*conv_to_win_path*/, \ - 0/*winpid_to_pid*/, \ - { 0 }, \ - } -#endif - -#elif defined(__CYGWIN__) - -#include -#include -#include -#include -#include -#include -#include - -#define fuse_uid_t uid_t -#define fuse_gid_t gid_t -#define fuse_pid_t pid_t - -#define fuse_dev_t dev_t -#define fuse_ino_t ino_t -#define fuse_mode_t mode_t -#define fuse_nlink_t nlink_t -#define fuse_off_t off_t - -#define fuse_fsblkcnt_t fsblkcnt_t -#define fuse_fsfilcnt_t fsfilcnt_t -#define fuse_blksize_t blksize_t -#define fuse_blkcnt_t blkcnt_t - -#define fuse_utimbuf utimbuf -#define fuse_timespec timespec - -#if !defined(FSP_FUSE_USE_STAT_EX) -#define fuse_stat stat -#else -struct fuse_stat -{ - FSP_FUSE_STAT_EX_FIELD_DEFN -}; -#endif -#define fuse_statvfs statvfs -#define fuse_flock flock - -#define FSP_FUSE_ENV_INIT \ - { \ - 'C', \ - malloc, free, \ - fsp_fuse_daemonize, \ - fsp_fuse_set_signal_handlers, \ - fsp_fuse_conv_to_win_path, \ - fsp_fuse_winpid_to_pid, \ - { 0 }, \ - } - -/* - * Note that long is 8 bytes long in Cygwin64 and 4 bytes long in Win64. - * For this reason we avoid using long anywhere in these headers. - */ - -#else -#error unsupported environment -#endif - -struct fuse_stat_ex -{ - FSP_FUSE_STAT_EX_FIELD_DEFN -}; - -struct fsp_fuse_env -{ - unsigned environment; - void *(*memalloc)(size_t); - void (*memfree)(void *); - int (*daemonize)(int); - int (*set_signal_handlers)(void *); - char *(*conv_to_win_path)(const char *); - fuse_pid_t (*winpid_to_pid)(uint32_t); - void (*reserved[2])(); -}; - -FSP_FUSE_API void FSP_FUSE_API_NAME(fsp_fuse_signal_handler)(int sig); - -#if defined(_WIN64) || defined(_WIN32) - -static inline int fsp_fuse_daemonize(int foreground) -{ - (void)foreground; - return 0; -} - -static inline int fsp_fuse_set_signal_handlers(void *se) -{ - (void)se; - return 0; -} - -#elif defined(__CYGWIN__) - -static inline int fsp_fuse_daemonize(int foreground) -{ - int daemon(int nochdir, int noclose); - int chdir(const char *path); - - if (!foreground) - { - if (-1 == daemon(0, 0)) - return -1; - } - else - chdir("/"); - - return 0; -} - -static inline void *fsp_fuse_signal_thread(void *psigmask) -{ - int sig; - - if (0 == sigwait((sigset_t *)psigmask, &sig)) - FSP_FUSE_API_CALL(fsp_fuse_signal_handler)(sig); - - return 0; -} - -static inline int fsp_fuse_set_signal_handlers(void *se) -{ -#define FSP_FUSE_SET_SIGNAL_HANDLER(sig, newha)\ - if (-1 != sigaction((sig), 0, &oldsa) &&\ - oldsa.sa_handler == (se ? SIG_DFL : (newha)))\ - {\ - newsa.sa_handler = se ? (newha) : SIG_DFL;\ - sigaction((sig), &newsa, 0);\ - } -#define FSP_FUSE_SIGADDSET(sig)\ - if (-1 != sigaction((sig), 0, &oldsa) &&\ - oldsa.sa_handler == SIG_DFL)\ - sigaddset(&sigmask, (sig)); - - static sigset_t sigmask; - static pthread_t sigthr; - struct sigaction oldsa, newsa; - - // memset instead of initializer to avoid GCC -Wmissing-field-initializers warning - memset(&newsa, 0, sizeof newsa); - - if (0 != se) - { - if (0 == sigthr) - { - FSP_FUSE_SET_SIGNAL_HANDLER(SIGPIPE, SIG_IGN); - - sigemptyset(&sigmask); - FSP_FUSE_SIGADDSET(SIGHUP); - FSP_FUSE_SIGADDSET(SIGINT); - FSP_FUSE_SIGADDSET(SIGTERM); - if (0 != pthread_sigmask(SIG_BLOCK, &sigmask, 0)) - return -1; - - if (0 != pthread_create(&sigthr, 0, fsp_fuse_signal_thread, &sigmask)) - return -1; - } - } - else - { - if (0 != sigthr) - { - pthread_cancel(sigthr); - pthread_join(sigthr, 0); - sigthr = 0; - - if (0 != pthread_sigmask(SIG_UNBLOCK, &sigmask, 0)) - return -1; - sigemptyset(&sigmask); - - FSP_FUSE_SET_SIGNAL_HANDLER(SIGPIPE, SIG_IGN); - } - } - - return 0; - -#undef FSP_FUSE_SIGADDSET -#undef FSP_FUSE_SET_SIGNAL_HANDLER -} - -static inline char *fsp_fuse_conv_to_win_path(const char *path) -{ - void *cygwin_create_path(unsigned, const void *); - return (char *)cygwin_create_path( - 0/*CCP_POSIX_TO_WIN_A*/ | 0x100/*CCP_RELATIVE*/, - path); -} - -static inline fuse_pid_t fsp_fuse_winpid_to_pid(uint32_t winpid) -{ - pid_t cygwin_winpid_to_pid(int winpid); - pid_t pid = cygwin_winpid_to_pid(winpid); - return -1 != pid ? pid : (fuse_pid_t)winpid; -} -#endif - - -static inline struct fsp_fuse_env *fsp_fuse_env(void) -{ - static struct fsp_fuse_env env = FSP_FUSE_ENV_INIT; - return &env; -} - -#ifdef __cplusplus -} -#endif - -#endif +/** + * @file fuse/winfsp_fuse.h + * WinFsp FUSE compatible API. + * + * @copyright 2015-2025 Bill Zissimopoulos + */ +/* + * This file is part of WinFsp. + * + * You can redistribute it and/or modify it under the terms of the GNU + * General Public License version 3 as published by the Free Software + * Foundation. + * + * Licensees holding a valid commercial license may use this software + * in accordance with the commercial license agreement provided in + * conjunction with the software. The terms and conditions of any such + * commercial license agreement shall govern, supersede, and render + * ineffective any application of the GPLv3 license to this software, + * notwithstanding of any reference thereto in the software or + * associated repository. + */ + +#ifndef FUSE_WINFSP_FUSE_H_INCLUDED +#define FUSE_WINFSP_FUSE_H_INCLUDED + +#include +#include +#if !defined(WINFSP_DLL_INTERNAL) +#include +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#if !defined(FSP_FUSE_API) +#if defined(WINFSP_DLL_INTERNAL) +#define FSP_FUSE_API __declspec(dllexport) +#else +#define FSP_FUSE_API __declspec(dllimport) +#endif +#endif + +#if !defined(FSP_FUSE_API_NAME) +#define FSP_FUSE_API_NAME(n) (n) +#endif + +#if !defined(FSP_FUSE_API_CALL) +#define FSP_FUSE_API_CALL(n) (n) +#endif + +#if !defined(FSP_FUSE_SYM) +#if !defined(CYGFUSE) +#define FSP_FUSE_SYM(proto, ...) static inline proto { __VA_ARGS__ } +#else +#define FSP_FUSE_SYM(proto, ...) proto; +#endif +#endif + +#define FSP_FUSE_DEVICE_TYPE (0x8000 | 'W' | 'F' * 0x100) /* DeviceIoControl -> ioctl */ +#define FSP_FUSE_CTLCODE_FROM_IOCTL(cmd)\ + (FSP_FUSE_DEVICE_TYPE << 16) | (((cmd) & 0x0fff) << 2) +#define FSP_FUSE_IOCTL(cmd, isiz, osiz) \ + ( \ + (((osiz) != 0) << 31) | \ + (((isiz) != 0) << 30) | \ + (((isiz) | (osiz)) << 16) | \ + (cmd) \ + ) + +/* + * FUSE uses a number of types (notably: struct stat) that are OS specific. + * Furthermore there are sometimes multiple definitions of the same type even + * within the same OS. This is certainly true on Windows, where these types + * are not even native. + * + * For this reason we will define our own fuse_* types which represent the + * types as the WinFsp DLL expects to see them. We will define these types + * to be compatible with the equivalent Cygwin types as we want WinFsp-FUSE + * to be usable from Cygwin. + */ + +#define FSP_FUSE_STAT_FIELD_DEFN \ + fuse_dev_t st_dev; \ + fuse_ino_t st_ino; \ + fuse_mode_t st_mode; \ + fuse_nlink_t st_nlink; \ + fuse_uid_t st_uid; \ + fuse_gid_t st_gid; \ + fuse_dev_t st_rdev; \ + fuse_off_t st_size; \ + struct fuse_timespec st_atim; \ + struct fuse_timespec st_mtim; \ + struct fuse_timespec st_ctim; \ + fuse_blksize_t st_blksize; \ + fuse_blkcnt_t st_blocks; \ + struct fuse_timespec st_birthtim; +#define FSP_FUSE_STAT_EX_FIELD_DEFN \ + FSP_FUSE_STAT_FIELD_DEFN \ + uint32_t st_flags; \ + uint32_t st_reserved32[3]; \ + uint64_t st_reserved64[2]; + +#if defined(_WIN64) || defined(_WIN32) + +typedef uint32_t fuse_uid_t; +typedef uint32_t fuse_gid_t; +typedef int32_t fuse_pid_t; + +typedef uint32_t fuse_dev_t; +typedef uint64_t fuse_ino_t; +typedef uint32_t fuse_mode_t; +typedef uint16_t fuse_nlink_t; +typedef int64_t fuse_off_t; + +#if defined(_WIN64) +typedef uint64_t fuse_fsblkcnt_t; +typedef uint64_t fuse_fsfilcnt_t; +#else +typedef uint32_t fuse_fsblkcnt_t; +typedef uint32_t fuse_fsfilcnt_t; +#endif +typedef int32_t fuse_blksize_t; +typedef int64_t fuse_blkcnt_t; + +#if defined(_WIN64) +struct fuse_utimbuf +{ + int64_t actime; + int64_t modtime; +}; +struct fuse_timespec +{ + int64_t tv_sec; + int64_t tv_nsec; +}; +#else +struct fuse_utimbuf +{ + int32_t actime; + int32_t modtime; +}; +struct fuse_timespec +{ + int32_t tv_sec; + int32_t tv_nsec; +}; +#endif + +#if !defined(FSP_FUSE_USE_STAT_EX) +struct fuse_stat +{ + FSP_FUSE_STAT_FIELD_DEFN +}; +#else +struct fuse_stat +{ + FSP_FUSE_STAT_EX_FIELD_DEFN +}; +#endif + +#if defined(_WIN64) +struct fuse_statvfs +{ + uint64_t f_bsize; + uint64_t f_frsize; + fuse_fsblkcnt_t f_blocks; + fuse_fsblkcnt_t f_bfree; + fuse_fsblkcnt_t f_bavail; + fuse_fsfilcnt_t f_files; + fuse_fsfilcnt_t f_ffree; + fuse_fsfilcnt_t f_favail; + uint64_t f_fsid; + uint64_t f_flag; + uint64_t f_namemax; +}; +#else +struct fuse_statvfs +{ + uint32_t f_bsize; + uint32_t f_frsize; + fuse_fsblkcnt_t f_blocks; + fuse_fsblkcnt_t f_bfree; + fuse_fsblkcnt_t f_bavail; + fuse_fsfilcnt_t f_files; + fuse_fsfilcnt_t f_ffree; + fuse_fsfilcnt_t f_favail; + uint32_t f_fsid; + uint32_t f_flag; + uint32_t f_namemax; +}; +#endif + +struct fuse_flock +{ + int16_t l_type; + int16_t l_whence; + fuse_off_t l_start; + fuse_off_t l_len; + fuse_pid_t l_pid; +}; + +#if defined(WINFSP_DLL_INTERNAL) +#define FSP_FUSE_ENV_INIT \ + { \ + 'W', \ + MemAlloc, MemFree, \ + fsp_fuse_daemonize, \ + fsp_fuse_set_signal_handlers, \ + 0/*conv_to_win_path*/, \ + 0/*winpid_to_pid*/, \ + { 0 }, \ + } +#else +#define FSP_FUSE_ENV_INIT \ + { \ + 'W', \ + malloc, free, \ + fsp_fuse_daemonize, \ + fsp_fuse_set_signal_handlers, \ + 0/*conv_to_win_path*/, \ + 0/*winpid_to_pid*/, \ + { 0 }, \ + } +#endif + +#elif defined(__CYGWIN__) + +#include +#include +#include +#include +#include +#include +#include + +#define fuse_uid_t uid_t +#define fuse_gid_t gid_t +#define fuse_pid_t pid_t + +#define fuse_dev_t dev_t +#define fuse_ino_t ino_t +#define fuse_mode_t mode_t +#define fuse_nlink_t nlink_t +#define fuse_off_t off_t + +#define fuse_fsblkcnt_t fsblkcnt_t +#define fuse_fsfilcnt_t fsfilcnt_t +#define fuse_blksize_t blksize_t +#define fuse_blkcnt_t blkcnt_t + +#define fuse_utimbuf utimbuf +#define fuse_timespec timespec + +#if !defined(FSP_FUSE_USE_STAT_EX) +#define fuse_stat stat +#else +struct fuse_stat +{ + FSP_FUSE_STAT_EX_FIELD_DEFN +}; +#endif +#define fuse_statvfs statvfs +#define fuse_flock flock + +#define FSP_FUSE_ENV_INIT \ + { \ + 'C', \ + malloc, free, \ + fsp_fuse_daemonize, \ + fsp_fuse_set_signal_handlers, \ + fsp_fuse_conv_to_win_path, \ + fsp_fuse_winpid_to_pid, \ + { 0 }, \ + } + +/* + * Note that long is 8 bytes long in Cygwin64 and 4 bytes long in Win64. + * For this reason we avoid using long anywhere in these headers. + */ + +#else +#error unsupported environment +#endif + +struct fuse_stat_ex +{ + FSP_FUSE_STAT_EX_FIELD_DEFN +}; + +struct fsp_fuse_env +{ + unsigned environment; + void *(*memalloc)(size_t); + void (*memfree)(void *); + int (*daemonize)(int); + int (*set_signal_handlers)(void *); + char *(*conv_to_win_path)(const char *); + fuse_pid_t (*winpid_to_pid)(uint32_t); + void (*reserved[2])(); +}; + +FSP_FUSE_API void FSP_FUSE_API_NAME(fsp_fuse_signal_handler)(int sig); + +#if defined(_WIN64) || defined(_WIN32) + +static inline int fsp_fuse_daemonize(int foreground) +{ + (void)foreground; + return 0; +} + +static inline int fsp_fuse_set_signal_handlers(void *se) +{ + (void)se; + return 0; +} + +#elif defined(__CYGWIN__) + +static inline int fsp_fuse_daemonize(int foreground) +{ + int daemon(int nochdir, int noclose); + int chdir(const char *path); + + if (!foreground) + { + if (-1 == daemon(0, 0)) + return -1; + } + else + chdir("/"); + + return 0; +} + +static inline void *fsp_fuse_signal_thread(void *psigmask) +{ + int sig; + + if (0 == sigwait((sigset_t *)psigmask, &sig)) + FSP_FUSE_API_CALL(fsp_fuse_signal_handler)(sig); + + return 0; +} + +static inline int fsp_fuse_set_signal_handlers(void *se) +{ +#define FSP_FUSE_SET_SIGNAL_HANDLER(sig, newha)\ + if (-1 != sigaction((sig), 0, &oldsa) &&\ + oldsa.sa_handler == (se ? SIG_DFL : (newha)))\ + {\ + newsa.sa_handler = se ? (newha) : SIG_DFL;\ + sigaction((sig), &newsa, 0);\ + } +#define FSP_FUSE_SIGADDSET(sig)\ + if (-1 != sigaction((sig), 0, &oldsa) &&\ + oldsa.sa_handler == SIG_DFL)\ + sigaddset(&sigmask, (sig)); + + static sigset_t sigmask; + static pthread_t sigthr; + struct sigaction oldsa, newsa; + + // memset instead of initializer to avoid GCC -Wmissing-field-initializers warning + memset(&newsa, 0, sizeof newsa); + + if (0 != se) + { + if (0 == sigthr) + { + FSP_FUSE_SET_SIGNAL_HANDLER(SIGPIPE, SIG_IGN); + + sigemptyset(&sigmask); + FSP_FUSE_SIGADDSET(SIGHUP); + FSP_FUSE_SIGADDSET(SIGINT); + FSP_FUSE_SIGADDSET(SIGTERM); + if (0 != pthread_sigmask(SIG_BLOCK, &sigmask, 0)) + return -1; + + if (0 != pthread_create(&sigthr, 0, fsp_fuse_signal_thread, &sigmask)) + return -1; + } + } + else + { + if (0 != sigthr) + { + pthread_cancel(sigthr); + pthread_join(sigthr, 0); + sigthr = 0; + + if (0 != pthread_sigmask(SIG_UNBLOCK, &sigmask, 0)) + return -1; + sigemptyset(&sigmask); + + FSP_FUSE_SET_SIGNAL_HANDLER(SIGPIPE, SIG_IGN); + } + } + + return 0; + +#undef FSP_FUSE_SIGADDSET +#undef FSP_FUSE_SET_SIGNAL_HANDLER +} + +static inline char *fsp_fuse_conv_to_win_path(const char *path) +{ + void *cygwin_create_path(unsigned, const void *); + return (char *)cygwin_create_path( + 0/*CCP_POSIX_TO_WIN_A*/ | 0x100/*CCP_RELATIVE*/, + path); +} + +static inline fuse_pid_t fsp_fuse_winpid_to_pid(uint32_t winpid) +{ + pid_t cygwin_winpid_to_pid(int winpid); + pid_t pid = cygwin_winpid_to_pid(winpid); + return -1 != pid ? pid : (fuse_pid_t)winpid; +} +#endif + + +static inline struct fsp_fuse_env *fsp_fuse_env(void) +{ + static struct fsp_fuse_env env = FSP_FUSE_ENV_INIT; + return &env; +} + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/support/3rd_party/winfsp-2.0/inc/fuse3/fuse.h b/support/3rd_party/winfsp-2.1/inc/fuse3/fuse.h similarity index 96% rename from support/3rd_party/winfsp-2.0/inc/fuse3/fuse.h rename to support/3rd_party/winfsp-2.1/inc/fuse3/fuse.h index 3eae0d68..66dc594e 100644 --- a/support/3rd_party/winfsp-2.0/inc/fuse3/fuse.h +++ b/support/3rd_party/winfsp-2.1/inc/fuse3/fuse.h @@ -1,338 +1,338 @@ -/** - * @file fuse3/fuse.h - * WinFsp FUSE3 compatible API. - * - * This file is derived from libfuse/include/fuse.h: - * FUSE: Filesystem in Userspace - * Copyright (C) 2001-2007 Miklos Szeredi - * - * @copyright 2015-2022 Bill Zissimopoulos - */ -/* - * This file is part of WinFsp. - * - * You can redistribute it and/or modify it under the terms of the GNU - * General Public License version 3 as published by the Free Software - * Foundation. - * - * Licensees holding a valid commercial license may use this software - * in accordance with the commercial license agreement provided in - * conjunction with the software. The terms and conditions of any such - * commercial license agreement shall govern, supersede, and render - * ineffective any application of the GPLv3 license to this software, - * notwithstanding of any reference thereto in the software or - * associated repository. - */ - -#ifndef FUSE_H_ -#define FUSE_H_ - -#include "fuse_common.h" - -#ifdef __cplusplus -extern "C" { -#endif - -struct fuse3; - -enum fuse3_readdir_flags -{ - FUSE_READDIR_PLUS = (1 << 0), -}; - -enum fuse3_fill_dir_flags -{ - FUSE_FILL_DIR_PLUS = (1 << 1), -}; - -typedef int (*fuse3_fill_dir_t)(void *buf, const char *name, - const struct fuse_stat *stbuf, fuse_off_t off, - enum fuse3_fill_dir_flags flags); - -struct fuse3_config -{ - int set_gid; - unsigned int gid; - int set_uid; - unsigned int uid; - int set_mode; - unsigned int umask; - double entry_timeout; - double negative_timeout; - double attr_timeout; - int intr; - int intr_signal; - int remember; - int hard_remove; - int use_ino; - int readdir_ino; - int direct_io; - int kernel_cache; - int auto_cache; - int ac_attr_timeout_set; - double ac_attr_timeout; - int nullpath_ok; - /* private */ - int show_help; - char *modules; - int debug; -}; - -struct fuse3_operations -{ - /* S - supported by WinFsp */ - /* S */ int (*getattr)(const char *path, struct fuse_stat *stbuf, - struct fuse3_file_info *fi); - /* S */ int (*readlink)(const char *path, char *buf, size_t size); - /* S */ int (*mknod)(const char *path, fuse_mode_t mode, fuse_dev_t dev); - /* S */ int (*mkdir)(const char *path, fuse_mode_t mode); - /* S */ int (*unlink)(const char *path); - /* S */ int (*rmdir)(const char *path); - /* S */ int (*symlink)(const char *dstpath, const char *srcpath); - /* S */ int (*rename)(const char *oldpath, const char *newpath, unsigned int flags); - /* _ */ int (*link)(const char *srcpath, const char *dstpath); - /* S */ int (*chmod)(const char *path, fuse_mode_t mode, - struct fuse3_file_info *fi); - /* S */ int (*chown)(const char *path, fuse_uid_t uid, fuse_gid_t gid, - struct fuse3_file_info *fi); - /* S */ int (*truncate)(const char *path, fuse_off_t size, - struct fuse3_file_info *fi); - /* S */ int (*open)(const char *path, struct fuse3_file_info *fi); - /* S */ int (*read)(const char *path, char *buf, size_t size, fuse_off_t off, - struct fuse3_file_info *fi); - /* S */ int (*write)(const char *path, const char *buf, size_t size, fuse_off_t off, - struct fuse3_file_info *fi); - /* S */ int (*statfs)(const char *path, struct fuse_statvfs *stbuf); - /* S */ int (*flush)(const char *path, struct fuse3_file_info *fi); - /* S */ int (*release)(const char *path, struct fuse3_file_info *fi); - /* S */ int (*fsync)(const char *path, int datasync, struct fuse3_file_info *fi); - /* S */ int (*setxattr)(const char *path, const char *name, const char *value, size_t size, - int flags); - /* S */ int (*getxattr)(const char *path, const char *name, char *value, size_t size); - /* S */ int (*listxattr)(const char *path, char *namebuf, size_t size); - /* S */ int (*removexattr)(const char *path, const char *name); - /* S */ int (*opendir)(const char *path, struct fuse3_file_info *fi); - /* S */ int (*readdir)(const char *path, void *buf, fuse3_fill_dir_t filler, fuse_off_t off, - struct fuse3_file_info *fi, enum fuse3_readdir_flags); - /* S */ int (*releasedir)(const char *path, struct fuse3_file_info *fi); - /* S */ int (*fsyncdir)(const char *path, int datasync, struct fuse3_file_info *fi); - /* S */ void *(*init)(struct fuse3_conn_info *conn, - struct fuse3_config *conf); - /* S */ void (*destroy)(void *data); - /* _ */ int (*access)(const char *path, int mask); - /* S */ int (*create)(const char *path, fuse_mode_t mode, struct fuse3_file_info *fi); - /* _ */ int (*lock)(const char *path, - struct fuse3_file_info *fi, int cmd, struct fuse_flock *lock); - /* S */ int (*utimens)(const char *path, const struct fuse_timespec tv[2], - struct fuse3_file_info *fi); - /* _ */ int (*bmap)(const char *path, size_t blocksize, uint64_t *idx); - /* S */ int (*ioctl)(const char *path, int cmd, void *arg, struct fuse3_file_info *fi, - unsigned int flags, void *data); - /* _ */ int (*poll)(const char *path, struct fuse3_file_info *fi, - struct fuse3_pollhandle *ph, unsigned *reventsp); - /* _ */ int (*write_buf)(const char *path, - struct fuse3_bufvec *buf, fuse_off_t off, struct fuse3_file_info *fi); - /* _ */ int (*read_buf)(const char *path, - struct fuse3_bufvec **bufp, size_t size, fuse_off_t off, struct fuse3_file_info *fi); - /* _ */ int (*flock)(const char *path, struct fuse3_file_info *, int op); - /* _ */ int (*fallocate)(const char *path, int mode, fuse_off_t off, fuse_off_t len, - struct fuse3_file_info *fi); -}; - -struct fuse3_context -{ - struct fuse3 *fuse; - fuse_uid_t uid; - fuse_gid_t gid; - fuse_pid_t pid; - void *private_data; - fuse_mode_t umask; -}; - -#define fuse_main(argc, argv, ops, data)\ - fuse3_main_real(argc, argv, ops, sizeof *(ops), data) - -FSP_FUSE_API int FSP_FUSE_API_NAME(fsp_fuse3_main_real)(struct fsp_fuse_env *env, - int argc, char *argv[], - const struct fuse3_operations *ops, size_t opsize, void *data); -FSP_FUSE_API void FSP_FUSE_API_NAME(fsp_fuse3_lib_help)(struct fsp_fuse_env *env, - struct fuse_args *args); -FSP_FUSE_API struct fuse3 *FSP_FUSE_API_NAME(fsp_fuse3_new_30)(struct fsp_fuse_env *env, - struct fuse_args *args, - const struct fuse3_operations *ops, size_t opsize, void *data); -FSP_FUSE_API struct fuse3 *FSP_FUSE_API_NAME(fsp_fuse3_new)(struct fsp_fuse_env *env, - struct fuse_args *args, - const struct fuse3_operations *ops, size_t opsize, void *data); -FSP_FUSE_API void FSP_FUSE_API_NAME(fsp_fuse3_destroy)(struct fsp_fuse_env *env, - struct fuse3 *f); -FSP_FUSE_API int FSP_FUSE_API_NAME(fsp_fuse3_mount)(struct fsp_fuse_env *env, - struct fuse3 *f, const char *mountpoint); -FSP_FUSE_API void FSP_FUSE_API_NAME(fsp_fuse3_unmount)(struct fsp_fuse_env *env, - struct fuse3 *f); -FSP_FUSE_API int FSP_FUSE_API_NAME(fsp_fuse3_loop)(struct fsp_fuse_env *env, - struct fuse3 *f); -FSP_FUSE_API int FSP_FUSE_API_NAME(fsp_fuse3_loop_mt_31)(struct fsp_fuse_env *env, - struct fuse3 *f, int clone_fd); -FSP_FUSE_API int FSP_FUSE_API_NAME(fsp_fuse3_loop_mt)(struct fsp_fuse_env *env, - struct fuse3 *f, struct fuse3_loop_config *config); -FSP_FUSE_API void FSP_FUSE_API_NAME(fsp_fuse3_exit)(struct fsp_fuse_env *env, - struct fuse3 *f); -FSP_FUSE_API struct fuse3_context *FSP_FUSE_API_NAME(fsp_fuse3_get_context)(struct fsp_fuse_env *env); - -FSP_FUSE_SYM( -int fuse3_main_real(int argc, char *argv[], - const struct fuse3_operations *ops, size_t opsize, void *data), -{ - return FSP_FUSE_API_CALL(fsp_fuse3_main_real) - (fsp_fuse_env(), argc, argv, ops, opsize, data); -}) - -FSP_FUSE_SYM( -void fuse3_lib_help(struct fuse_args *args), -{ - FSP_FUSE_API_CALL(fsp_fuse3_lib_help) - (fsp_fuse_env(), args); -}) - -#if FUSE_USE_VERSION == 30 -FSP_FUSE_SYM( -struct fuse3 *fuse3_new_30(struct fuse_args *args, - const struct fuse3_operations *ops, size_t opsize, void *data), -{ - return FSP_FUSE_API_CALL(fsp_fuse3_new_30) - (fsp_fuse_env(), args, ops, opsize, data); -}) -#define fuse_new(args, op, size, data)\ - fuse3_new_30(args, op, size, data) - -#else -FSP_FUSE_SYM( -struct fuse3 *fuse3_new(struct fuse_args *args, - const struct fuse3_operations *ops, size_t opsize, void *data), -{ - return FSP_FUSE_API_CALL(fsp_fuse3_new) - (fsp_fuse_env(), args, ops, opsize, data); -}) -#endif - -FSP_FUSE_SYM( -void fuse3_destroy(struct fuse3 *f), -{ - FSP_FUSE_API_CALL(fsp_fuse3_destroy) - (fsp_fuse_env(), f); -}) - -FSP_FUSE_SYM( -int fuse3_mount(struct fuse3 *f, const char *mountpoint), -{ - return FSP_FUSE_API_CALL(fsp_fuse3_mount) - (fsp_fuse_env(), f, mountpoint); -}) - -FSP_FUSE_SYM( -void fuse3_unmount(struct fuse3 *f), -{ - FSP_FUSE_API_CALL(fsp_fuse3_unmount) - (fsp_fuse_env(), f); -}) - -FSP_FUSE_SYM( -int fuse3_loop(struct fuse3 *f), -{ - return FSP_FUSE_API_CALL(fsp_fuse3_loop) - (fsp_fuse_env(), f); -}) - -#if FUSE_USE_VERSION < 32 -FSP_FUSE_SYM( -int fuse3_loop_mt_31(struct fuse3 *f, int clone_fd), -{ - return FSP_FUSE_API_CALL(fsp_fuse3_loop_mt_31) - (fsp_fuse_env(), f, clone_fd); -}) -#define fuse_loop_mt(f, clone_fd)\ - fuse3_loop_mt_31(f, clone_fd) - -#else -FSP_FUSE_SYM( -int fuse3_loop_mt(struct fuse3 *f, struct fuse3_loop_config *config), -{ - return FSP_FUSE_API_CALL(fsp_fuse3_loop_mt) - (fsp_fuse_env(), f, config); -}) -#endif - -FSP_FUSE_SYM( -void fuse3_exit(struct fuse3 *f), -{ - FSP_FUSE_API_CALL(fsp_fuse3_exit) - (fsp_fuse_env(), f); -}) - -FSP_FUSE_SYM( -struct fuse3_context *fuse3_get_context(void), -{ - return FSP_FUSE_API_CALL(fsp_fuse3_get_context) - (fsp_fuse_env()); -}) - -FSP_FUSE_SYM( -int fuse3_getgroups(int size, fuse_gid_t list[]), -{ - (void)size; - (void)list; - return -ENOSYS; -}) - -FSP_FUSE_SYM( -int fuse3_interrupted(void), -{ - return 0; -}) - -FSP_FUSE_SYM( -int fuse3_invalidate_path(struct fuse3 *f, const char *path), -{ - (void)f; - (void)path; - return -ENOENT; -}) - -FSP_FUSE_SYM( -int fuse3_notify_poll(struct fuse3_pollhandle *ph), -{ - (void)ph; - return 0; -}) - -FSP_FUSE_SYM( -int fuse3_start_cleanup_thread(struct fuse3 *f), -{ - (void)f; - return 0; -}) - -FSP_FUSE_SYM( -void fuse3_stop_cleanup_thread(struct fuse3 *f), -{ - (void)f; -}) - -FSP_FUSE_SYM( -int fuse3_clean_cache(struct fuse3 *f), -{ - (void)f; - return 600; -}) - -FSP_FUSE_SYM( -struct fuse3_session *fuse3_get_session(struct fuse3 *f), -{ - return (struct fuse3_session *)f; -}) - -#ifdef __cplusplus -} -#endif - -#endif +/** + * @file fuse3/fuse.h + * WinFsp FUSE3 compatible API. + * + * This file is derived from libfuse/include/fuse.h: + * FUSE: Filesystem in Userspace + * Copyright (C) 2001-2007 Miklos Szeredi + * + * @copyright 2015-2025 Bill Zissimopoulos + */ +/* + * This file is part of WinFsp. + * + * You can redistribute it and/or modify it under the terms of the GNU + * General Public License version 3 as published by the Free Software + * Foundation. + * + * Licensees holding a valid commercial license may use this software + * in accordance with the commercial license agreement provided in + * conjunction with the software. The terms and conditions of any such + * commercial license agreement shall govern, supersede, and render + * ineffective any application of the GPLv3 license to this software, + * notwithstanding of any reference thereto in the software or + * associated repository. + */ + +#ifndef FUSE_H_ +#define FUSE_H_ + +#include "fuse_common.h" + +#ifdef __cplusplus +extern "C" { +#endif + +struct fuse3; + +enum fuse3_readdir_flags +{ + FUSE_READDIR_PLUS = (1 << 0), +}; + +enum fuse3_fill_dir_flags +{ + FUSE_FILL_DIR_PLUS = (1 << 1), +}; + +typedef int (*fuse3_fill_dir_t)(void *buf, const char *name, + const struct fuse_stat *stbuf, fuse_off_t off, + enum fuse3_fill_dir_flags flags); + +struct fuse3_config +{ + int set_gid; + unsigned int gid; + int set_uid; + unsigned int uid; + int set_mode; + unsigned int umask; + double entry_timeout; + double negative_timeout; + double attr_timeout; + int intr; + int intr_signal; + int remember; + int hard_remove; + int use_ino; + int readdir_ino; + int direct_io; + int kernel_cache; + int auto_cache; + int ac_attr_timeout_set; + double ac_attr_timeout; + int nullpath_ok; + /* private */ + int show_help; + char *modules; + int debug; +}; + +struct fuse3_operations +{ + /* S - supported by WinFsp */ + /* S */ int (*getattr)(const char *path, struct fuse_stat *stbuf, + struct fuse3_file_info *fi); + /* S */ int (*readlink)(const char *path, char *buf, size_t size); + /* S */ int (*mknod)(const char *path, fuse_mode_t mode, fuse_dev_t dev); + /* S */ int (*mkdir)(const char *path, fuse_mode_t mode); + /* S */ int (*unlink)(const char *path); + /* S */ int (*rmdir)(const char *path); + /* S */ int (*symlink)(const char *dstpath, const char *srcpath); + /* S */ int (*rename)(const char *oldpath, const char *newpath, unsigned int flags); + /* _ */ int (*link)(const char *srcpath, const char *dstpath); + /* S */ int (*chmod)(const char *path, fuse_mode_t mode, + struct fuse3_file_info *fi); + /* S */ int (*chown)(const char *path, fuse_uid_t uid, fuse_gid_t gid, + struct fuse3_file_info *fi); + /* S */ int (*truncate)(const char *path, fuse_off_t size, + struct fuse3_file_info *fi); + /* S */ int (*open)(const char *path, struct fuse3_file_info *fi); + /* S */ int (*read)(const char *path, char *buf, size_t size, fuse_off_t off, + struct fuse3_file_info *fi); + /* S */ int (*write)(const char *path, const char *buf, size_t size, fuse_off_t off, + struct fuse3_file_info *fi); + /* S */ int (*statfs)(const char *path, struct fuse_statvfs *stbuf); + /* S */ int (*flush)(const char *path, struct fuse3_file_info *fi); + /* S */ int (*release)(const char *path, struct fuse3_file_info *fi); + /* S */ int (*fsync)(const char *path, int datasync, struct fuse3_file_info *fi); + /* S */ int (*setxattr)(const char *path, const char *name, const char *value, size_t size, + int flags); + /* S */ int (*getxattr)(const char *path, const char *name, char *value, size_t size); + /* S */ int (*listxattr)(const char *path, char *namebuf, size_t size); + /* S */ int (*removexattr)(const char *path, const char *name); + /* S */ int (*opendir)(const char *path, struct fuse3_file_info *fi); + /* S */ int (*readdir)(const char *path, void *buf, fuse3_fill_dir_t filler, fuse_off_t off, + struct fuse3_file_info *fi, enum fuse3_readdir_flags); + /* S */ int (*releasedir)(const char *path, struct fuse3_file_info *fi); + /* S */ int (*fsyncdir)(const char *path, int datasync, struct fuse3_file_info *fi); + /* S */ void *(*init)(struct fuse3_conn_info *conn, + struct fuse3_config *conf); + /* S */ void (*destroy)(void *data); + /* _ */ int (*access)(const char *path, int mask); + /* S */ int (*create)(const char *path, fuse_mode_t mode, struct fuse3_file_info *fi); + /* _ */ int (*lock)(const char *path, + struct fuse3_file_info *fi, int cmd, struct fuse_flock *lock); + /* S */ int (*utimens)(const char *path, const struct fuse_timespec tv[2], + struct fuse3_file_info *fi); + /* _ */ int (*bmap)(const char *path, size_t blocksize, uint64_t *idx); + /* S */ int (*ioctl)(const char *path, int cmd, void *arg, struct fuse3_file_info *fi, + unsigned int flags, void *data); + /* _ */ int (*poll)(const char *path, struct fuse3_file_info *fi, + struct fuse3_pollhandle *ph, unsigned *reventsp); + /* _ */ int (*write_buf)(const char *path, + struct fuse3_bufvec *buf, fuse_off_t off, struct fuse3_file_info *fi); + /* _ */ int (*read_buf)(const char *path, + struct fuse3_bufvec **bufp, size_t size, fuse_off_t off, struct fuse3_file_info *fi); + /* _ */ int (*flock)(const char *path, struct fuse3_file_info *, int op); + /* _ */ int (*fallocate)(const char *path, int mode, fuse_off_t off, fuse_off_t len, + struct fuse3_file_info *fi); +}; + +struct fuse3_context +{ + struct fuse3 *fuse; + fuse_uid_t uid; + fuse_gid_t gid; + fuse_pid_t pid; + void *private_data; + fuse_mode_t umask; +}; + +#define fuse_main(argc, argv, ops, data)\ + fuse3_main_real(argc, argv, ops, sizeof *(ops), data) + +FSP_FUSE_API int FSP_FUSE_API_NAME(fsp_fuse3_main_real)(struct fsp_fuse_env *env, + int argc, char *argv[], + const struct fuse3_operations *ops, size_t opsize, void *data); +FSP_FUSE_API void FSP_FUSE_API_NAME(fsp_fuse3_lib_help)(struct fsp_fuse_env *env, + struct fuse_args *args); +FSP_FUSE_API struct fuse3 *FSP_FUSE_API_NAME(fsp_fuse3_new_30)(struct fsp_fuse_env *env, + struct fuse_args *args, + const struct fuse3_operations *ops, size_t opsize, void *data); +FSP_FUSE_API struct fuse3 *FSP_FUSE_API_NAME(fsp_fuse3_new)(struct fsp_fuse_env *env, + struct fuse_args *args, + const struct fuse3_operations *ops, size_t opsize, void *data); +FSP_FUSE_API void FSP_FUSE_API_NAME(fsp_fuse3_destroy)(struct fsp_fuse_env *env, + struct fuse3 *f); +FSP_FUSE_API int FSP_FUSE_API_NAME(fsp_fuse3_mount)(struct fsp_fuse_env *env, + struct fuse3 *f, const char *mountpoint); +FSP_FUSE_API void FSP_FUSE_API_NAME(fsp_fuse3_unmount)(struct fsp_fuse_env *env, + struct fuse3 *f); +FSP_FUSE_API int FSP_FUSE_API_NAME(fsp_fuse3_loop)(struct fsp_fuse_env *env, + struct fuse3 *f); +FSP_FUSE_API int FSP_FUSE_API_NAME(fsp_fuse3_loop_mt_31)(struct fsp_fuse_env *env, + struct fuse3 *f, int clone_fd); +FSP_FUSE_API int FSP_FUSE_API_NAME(fsp_fuse3_loop_mt)(struct fsp_fuse_env *env, + struct fuse3 *f, struct fuse3_loop_config *config); +FSP_FUSE_API void FSP_FUSE_API_NAME(fsp_fuse3_exit)(struct fsp_fuse_env *env, + struct fuse3 *f); +FSP_FUSE_API struct fuse3_context *FSP_FUSE_API_NAME(fsp_fuse3_get_context)(struct fsp_fuse_env *env); + +FSP_FUSE_SYM( +int fuse3_main_real(int argc, char *argv[], + const struct fuse3_operations *ops, size_t opsize, void *data), +{ + return FSP_FUSE_API_CALL(fsp_fuse3_main_real) + (fsp_fuse_env(), argc, argv, ops, opsize, data); +}) + +FSP_FUSE_SYM( +void fuse3_lib_help(struct fuse_args *args), +{ + FSP_FUSE_API_CALL(fsp_fuse3_lib_help) + (fsp_fuse_env(), args); +}) + +#if FUSE_USE_VERSION == 30 +FSP_FUSE_SYM( +struct fuse3 *fuse3_new_30(struct fuse_args *args, + const struct fuse3_operations *ops, size_t opsize, void *data), +{ + return FSP_FUSE_API_CALL(fsp_fuse3_new_30) + (fsp_fuse_env(), args, ops, opsize, data); +}) +#define fuse_new(args, op, size, data)\ + fuse3_new_30(args, op, size, data) + +#else +FSP_FUSE_SYM( +struct fuse3 *fuse3_new(struct fuse_args *args, + const struct fuse3_operations *ops, size_t opsize, void *data), +{ + return FSP_FUSE_API_CALL(fsp_fuse3_new) + (fsp_fuse_env(), args, ops, opsize, data); +}) +#endif + +FSP_FUSE_SYM( +void fuse3_destroy(struct fuse3 *f), +{ + FSP_FUSE_API_CALL(fsp_fuse3_destroy) + (fsp_fuse_env(), f); +}) + +FSP_FUSE_SYM( +int fuse3_mount(struct fuse3 *f, const char *mountpoint), +{ + return FSP_FUSE_API_CALL(fsp_fuse3_mount) + (fsp_fuse_env(), f, mountpoint); +}) + +FSP_FUSE_SYM( +void fuse3_unmount(struct fuse3 *f), +{ + FSP_FUSE_API_CALL(fsp_fuse3_unmount) + (fsp_fuse_env(), f); +}) + +FSP_FUSE_SYM( +int fuse3_loop(struct fuse3 *f), +{ + return FSP_FUSE_API_CALL(fsp_fuse3_loop) + (fsp_fuse_env(), f); +}) + +#if FUSE_USE_VERSION < 32 +FSP_FUSE_SYM( +int fuse3_loop_mt_31(struct fuse3 *f, int clone_fd), +{ + return FSP_FUSE_API_CALL(fsp_fuse3_loop_mt_31) + (fsp_fuse_env(), f, clone_fd); +}) +#define fuse_loop_mt(f, clone_fd)\ + fuse3_loop_mt_31(f, clone_fd) + +#else +FSP_FUSE_SYM( +int fuse3_loop_mt(struct fuse3 *f, struct fuse3_loop_config *config), +{ + return FSP_FUSE_API_CALL(fsp_fuse3_loop_mt) + (fsp_fuse_env(), f, config); +}) +#endif + +FSP_FUSE_SYM( +void fuse3_exit(struct fuse3 *f), +{ + FSP_FUSE_API_CALL(fsp_fuse3_exit) + (fsp_fuse_env(), f); +}) + +FSP_FUSE_SYM( +struct fuse3_context *fuse3_get_context(void), +{ + return FSP_FUSE_API_CALL(fsp_fuse3_get_context) + (fsp_fuse_env()); +}) + +FSP_FUSE_SYM( +int fuse3_getgroups(int size, fuse_gid_t list[]), +{ + (void)size; + (void)list; + return -ENOSYS; +}) + +FSP_FUSE_SYM( +int fuse3_interrupted(void), +{ + return 0; +}) + +FSP_FUSE_SYM( +int fuse3_invalidate_path(struct fuse3 *f, const char *path), +{ + (void)f; + (void)path; + return -ENOENT; +}) + +FSP_FUSE_SYM( +int fuse3_notify_poll(struct fuse3_pollhandle *ph), +{ + (void)ph; + return 0; +}) + +FSP_FUSE_SYM( +int fuse3_start_cleanup_thread(struct fuse3 *f), +{ + (void)f; + return 0; +}) + +FSP_FUSE_SYM( +void fuse3_stop_cleanup_thread(struct fuse3 *f), +{ + (void)f; +}) + +FSP_FUSE_SYM( +int fuse3_clean_cache(struct fuse3 *f), +{ + (void)f; + return 600; +}) + +FSP_FUSE_SYM( +struct fuse3_session *fuse3_get_session(struct fuse3 *f), +{ + return (struct fuse3_session *)f; +}) + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/support/3rd_party/winfsp-2.0/inc/fuse3/fuse_common.h b/support/3rd_party/winfsp-2.1/inc/fuse3/fuse_common.h similarity index 95% rename from support/3rd_party/winfsp-2.0/inc/fuse3/fuse_common.h rename to support/3rd_party/winfsp-2.1/inc/fuse3/fuse_common.h index 0cccea33..c7eb170d 100644 --- a/support/3rd_party/winfsp-2.0/inc/fuse3/fuse_common.h +++ b/support/3rd_party/winfsp-2.1/inc/fuse3/fuse_common.h @@ -1,238 +1,238 @@ -/** - * @file fuse3/fuse_common.h - * WinFsp FUSE3 compatible API. - * - * This file is derived from libfuse/include/fuse_common.h: - * FUSE: Filesystem in Userspace - * Copyright (C) 2001-2007 Miklos Szeredi - * - * @copyright 2015-2022 Bill Zissimopoulos - */ -/* - * This file is part of WinFsp. - * - * You can redistribute it and/or modify it under the terms of the GNU - * General Public License version 3 as published by the Free Software - * Foundation. - * - * Licensees holding a valid commercial license may use this software - * in accordance with the commercial license agreement provided in - * conjunction with the software. The terms and conditions of any such - * commercial license agreement shall govern, supersede, and render - * ineffective any application of the GPLv3 license to this software, - * notwithstanding of any reference thereto in the software or - * associated repository. - */ - -#ifndef FUSE_COMMON_H_ -#define FUSE_COMMON_H_ - -#include "winfsp_fuse.h" -#if !defined(WINFSP_DLL_INTERNAL) -#include "fuse_opt.h" -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -#define FUSE_MAJOR_VERSION 3 -#define FUSE_MINOR_VERSION 2 -#define FUSE_MAKE_VERSION(maj, min) ((maj) * 10 + (min)) -#define FUSE_VERSION FUSE_MAKE_VERSION(FUSE_MAJOR_VERSION, FUSE_MINOR_VERSION) - -#define FUSE_CAP_ASYNC_READ (1 << 0) -#define FUSE_CAP_POSIX_LOCKS (1 << 1) -#define FUSE_CAP_ATOMIC_O_TRUNC (1 << 3) -#define FUSE_CAP_EXPORT_SUPPORT (1 << 4) -#define FUSE_CAP_DONT_MASK (1 << 6) -#define FUSE_CAP_SPLICE_WRITE (1 << 7) -#define FUSE_CAP_SPLICE_MOVE (1 << 8) -#define FUSE_CAP_SPLICE_READ (1 << 9) -#define FUSE_CAP_FLOCK_LOCKS (1 << 10) -#define FUSE_CAP_IOCTL_DIR (1 << 11) -#define FUSE_CAP_AUTO_INVAL_DATA (1 << 12) -#define FUSE_CAP_READDIRPLUS (1 << 13) -#define FUSE_CAP_READDIRPLUS_AUTO (1 << 14) -#define FUSE_CAP_ASYNC_DIO (1 << 15) -#define FUSE_CAP_WRITEBACK_CACHE (1 << 16) -#define FUSE_CAP_NO_OPEN_SUPPORT (1 << 17) -#define FUSE_CAP_PARALLEL_DIROPS (1 << 18) -#define FUSE_CAP_POSIX_ACL (1 << 19) -#define FUSE_CAP_HANDLE_KILLPRIV (1 << 20) -#define FUSE_CAP_ALLOCATE (1 << 27) /* reserved (OSXFUSE) */ -#define FUSE_CAP_EXCHANGE_DATA (1 << 28) /* reserved (OSXFUSE) */ -#define FUSE_CAP_CASE_INSENSITIVE (1 << 29) /* file system is case insensitive */ -#define FUSE_CAP_VOL_RENAME (1 << 30) /* reserved (OSXFUSE) */ -#define FUSE_CAP_XTIMES (1 << 31) /* reserved (OSXFUSE) */ - -#define FSP_FUSE_CAP_CASE_INSENSITIVE FUSE_CAP_CASE_INSENSITIVE - -#define FUSE_IOCTL_COMPAT (1 << 0) -#define FUSE_IOCTL_UNRESTRICTED (1 << 1) -#define FUSE_IOCTL_RETRY (1 << 2) -#define FUSE_IOCTL_DIR (1 << 4) -#define FUSE_IOCTL_MAX_IOV 256 - -#define FUSE_BUFVEC_INIT(s) \ - ((struct fuse3_bufvec){ 1, 0, 0, { {s, (enum fuse3_buf_flags)0, 0, -1, 0} } }) - -struct fuse3_file_info -{ - int flags; - unsigned int writepage:1; - unsigned int direct_io:1; - unsigned int keep_cache:1; - unsigned int flush:1; - unsigned int nonseekable:1; - unsigned int flock_release:1; - unsigned int padding:27; - uint64_t fh; - uint64_t lock_owner; - uint32_t poll_events; -}; - -struct fuse3_loop_config -{ - int clone_fd; - unsigned int max_idle_threads; -}; - -struct fuse3_conn_info -{ - unsigned proto_major; - unsigned proto_minor; - unsigned max_write; - unsigned max_read; - unsigned max_readahead; - unsigned capable; - unsigned want; - unsigned max_background; - unsigned congestion_threshold; - unsigned time_gran; - unsigned reserved[22]; -}; - -enum fuse3_buf_flags -{ - FUSE_BUF_IS_FD = (1 << 1), - FUSE_BUF_FD_SEEK = (1 << 2), - FUSE_BUF_FD_RETRY = (1 << 3), -}; - -enum fuse3_buf_copy_flags -{ - FUSE_BUF_NO_SPLICE = (1 << 1), - FUSE_BUF_FORCE_SPLICE = (1 << 2), - FUSE_BUF_SPLICE_MOVE = (1 << 3), - FUSE_BUF_SPLICE_NONBLOCK = (1 << 4), -}; - -struct fuse3_buf -{ - size_t size; - enum fuse3_buf_flags flags; - void *mem; - int fd; - fuse_off_t pos; -}; - -struct fuse3_bufvec -{ - size_t count; - size_t idx; - size_t off; - struct fuse3_buf buf[1]; -}; - -struct fuse3_session; -struct fuse3_pollhandle; -struct fuse3_conn_info_opts; - -FSP_FUSE_API struct fuse3_conn_info_opts *FSP_FUSE_API_NAME(fsp_fuse3_parse_conn_info_opts)( - struct fsp_fuse_env *env, - struct fuse_args *args); -FSP_FUSE_API void FSP_FUSE_API_NAME(fsp_fuse3_apply_conn_info_opts)(struct fsp_fuse_env *env, - struct fuse3_conn_info_opts *opts, struct fuse3_conn_info *conn); -FSP_FUSE_API int FSP_FUSE_API_NAME(fsp_fuse3_version)(struct fsp_fuse_env *env); -FSP_FUSE_API const char *FSP_FUSE_API_NAME(fsp_fuse3_pkgversion)(struct fsp_fuse_env *env); -FSP_FUSE_API int32_t FSP_FUSE_API_NAME(fsp_fuse_ntstatus_from_errno)(struct fsp_fuse_env *env, - int err); - -FSP_FUSE_SYM( -struct fuse3_conn_info_opts* fuse3_parse_conn_info_opts( - struct fuse_args *args), -{ - return FSP_FUSE_API_CALL(fsp_fuse3_parse_conn_info_opts) - (fsp_fuse_env(), args); -}) - -FSP_FUSE_SYM( -void fuse3_apply_conn_info_opts( - struct fuse3_conn_info_opts *opts, struct fuse3_conn_info *conn), -{ - FSP_FUSE_API_CALL(fsp_fuse3_apply_conn_info_opts) - (fsp_fuse_env(), opts, conn); -}) - -FSP_FUSE_SYM( -int fuse3_version(void), -{ - return FSP_FUSE_API_CALL(fsp_fuse3_version) - (fsp_fuse_env()); -}) - -FSP_FUSE_SYM( -const char *fuse3_pkgversion(void), -{ - return FSP_FUSE_API_CALL(fsp_fuse3_pkgversion) - (fsp_fuse_env()); -}) - -FSP_FUSE_SYM( -void fuse3_pollhandle_destroy(struct fuse3_pollhandle *ph), -{ - (void)ph; -}) - -FSP_FUSE_SYM( -size_t fuse3_buf_size(const struct fuse3_bufvec *bufv), -{ - (void)bufv; - return 0; -}) - -FSP_FUSE_SYM( -ssize_t fuse3_buf_copy(struct fuse3_bufvec *dst, struct fuse3_bufvec *src, - enum fuse3_buf_copy_flags flags), -{ - (void)dst; - (void)src; - (void)flags; - return 0; -}) - -FSP_FUSE_SYM( -int fuse3_daemonize(int foreground), -{ - return fsp_fuse_daemonize(foreground); -}) - -FSP_FUSE_SYM( -int fuse3_set_signal_handlers(struct fuse3_session *se), -{ - return fsp_fuse_set_signal_handlers(se); -}) - -FSP_FUSE_SYM( -void fuse3_remove_signal_handlers(struct fuse3_session *se), -{ - (void)se; - fsp_fuse_set_signal_handlers(0); -}) - -#ifdef __cplusplus -} -#endif - -#endif +/** + * @file fuse3/fuse_common.h + * WinFsp FUSE3 compatible API. + * + * This file is derived from libfuse/include/fuse_common.h: + * FUSE: Filesystem in Userspace + * Copyright (C) 2001-2007 Miklos Szeredi + * + * @copyright 2015-2025 Bill Zissimopoulos + */ +/* + * This file is part of WinFsp. + * + * You can redistribute it and/or modify it under the terms of the GNU + * General Public License version 3 as published by the Free Software + * Foundation. + * + * Licensees holding a valid commercial license may use this software + * in accordance with the commercial license agreement provided in + * conjunction with the software. The terms and conditions of any such + * commercial license agreement shall govern, supersede, and render + * ineffective any application of the GPLv3 license to this software, + * notwithstanding of any reference thereto in the software or + * associated repository. + */ + +#ifndef FUSE_COMMON_H_ +#define FUSE_COMMON_H_ + +#include "winfsp_fuse.h" +#if !defined(WINFSP_DLL_INTERNAL) +#include "fuse_opt.h" +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#define FUSE_MAJOR_VERSION 3 +#define FUSE_MINOR_VERSION 2 +#define FUSE_MAKE_VERSION(maj, min) ((maj) * 10 + (min)) +#define FUSE_VERSION FUSE_MAKE_VERSION(FUSE_MAJOR_VERSION, FUSE_MINOR_VERSION) + +#define FUSE_CAP_ASYNC_READ (1 << 0) +#define FUSE_CAP_POSIX_LOCKS (1 << 1) +#define FUSE_CAP_ATOMIC_O_TRUNC (1 << 3) +#define FUSE_CAP_EXPORT_SUPPORT (1 << 4) +#define FUSE_CAP_DONT_MASK (1 << 6) +#define FUSE_CAP_SPLICE_WRITE (1 << 7) +#define FUSE_CAP_SPLICE_MOVE (1 << 8) +#define FUSE_CAP_SPLICE_READ (1 << 9) +#define FUSE_CAP_FLOCK_LOCKS (1 << 10) +#define FUSE_CAP_IOCTL_DIR (1 << 11) +#define FUSE_CAP_AUTO_INVAL_DATA (1 << 12) +#define FUSE_CAP_READDIRPLUS (1 << 13) +#define FUSE_CAP_READDIRPLUS_AUTO (1 << 14) +#define FUSE_CAP_ASYNC_DIO (1 << 15) +#define FUSE_CAP_WRITEBACK_CACHE (1 << 16) +#define FUSE_CAP_NO_OPEN_SUPPORT (1 << 17) +#define FUSE_CAP_PARALLEL_DIROPS (1 << 18) +#define FUSE_CAP_POSIX_ACL (1 << 19) +#define FUSE_CAP_HANDLE_KILLPRIV (1 << 20) +#define FUSE_CAP_ALLOCATE (1 << 27) /* reserved (OSXFUSE) */ +#define FUSE_CAP_EXCHANGE_DATA (1 << 28) /* reserved (OSXFUSE) */ +#define FUSE_CAP_CASE_INSENSITIVE (1 << 29) /* file system is case insensitive */ +#define FUSE_CAP_VOL_RENAME (1 << 30) /* reserved (OSXFUSE) */ +#define FUSE_CAP_XTIMES (1 << 31) /* reserved (OSXFUSE) */ + +#define FSP_FUSE_CAP_CASE_INSENSITIVE FUSE_CAP_CASE_INSENSITIVE + +#define FUSE_IOCTL_COMPAT (1 << 0) +#define FUSE_IOCTL_UNRESTRICTED (1 << 1) +#define FUSE_IOCTL_RETRY (1 << 2) +#define FUSE_IOCTL_DIR (1 << 4) +#define FUSE_IOCTL_MAX_IOV 256 + +#define FUSE_BUFVEC_INIT(s) \ + ((struct fuse3_bufvec){ 1, 0, 0, { {s, (enum fuse3_buf_flags)0, 0, -1, 0} } }) + +struct fuse3_file_info +{ + int flags; + unsigned int writepage:1; + unsigned int direct_io:1; + unsigned int keep_cache:1; + unsigned int flush:1; + unsigned int nonseekable:1; + unsigned int flock_release:1; + unsigned int padding:27; + uint64_t fh; + uint64_t lock_owner; + uint32_t poll_events; +}; + +struct fuse3_loop_config +{ + int clone_fd; + unsigned int max_idle_threads; +}; + +struct fuse3_conn_info +{ + unsigned proto_major; + unsigned proto_minor; + unsigned max_write; + unsigned max_read; + unsigned max_readahead; + unsigned capable; + unsigned want; + unsigned max_background; + unsigned congestion_threshold; + unsigned time_gran; + unsigned reserved[22]; +}; + +enum fuse3_buf_flags +{ + FUSE_BUF_IS_FD = (1 << 1), + FUSE_BUF_FD_SEEK = (1 << 2), + FUSE_BUF_FD_RETRY = (1 << 3), +}; + +enum fuse3_buf_copy_flags +{ + FUSE_BUF_NO_SPLICE = (1 << 1), + FUSE_BUF_FORCE_SPLICE = (1 << 2), + FUSE_BUF_SPLICE_MOVE = (1 << 3), + FUSE_BUF_SPLICE_NONBLOCK = (1 << 4), +}; + +struct fuse3_buf +{ + size_t size; + enum fuse3_buf_flags flags; + void *mem; + int fd; + fuse_off_t pos; +}; + +struct fuse3_bufvec +{ + size_t count; + size_t idx; + size_t off; + struct fuse3_buf buf[1]; +}; + +struct fuse3_session; +struct fuse3_pollhandle; +struct fuse3_conn_info_opts; + +FSP_FUSE_API struct fuse3_conn_info_opts *FSP_FUSE_API_NAME(fsp_fuse3_parse_conn_info_opts)( + struct fsp_fuse_env *env, + struct fuse_args *args); +FSP_FUSE_API void FSP_FUSE_API_NAME(fsp_fuse3_apply_conn_info_opts)(struct fsp_fuse_env *env, + struct fuse3_conn_info_opts *opts, struct fuse3_conn_info *conn); +FSP_FUSE_API int FSP_FUSE_API_NAME(fsp_fuse3_version)(struct fsp_fuse_env *env); +FSP_FUSE_API const char *FSP_FUSE_API_NAME(fsp_fuse3_pkgversion)(struct fsp_fuse_env *env); +FSP_FUSE_API int32_t FSP_FUSE_API_NAME(fsp_fuse_ntstatus_from_errno)(struct fsp_fuse_env *env, + int err); + +FSP_FUSE_SYM( +struct fuse3_conn_info_opts* fuse3_parse_conn_info_opts( + struct fuse_args *args), +{ + return FSP_FUSE_API_CALL(fsp_fuse3_parse_conn_info_opts) + (fsp_fuse_env(), args); +}) + +FSP_FUSE_SYM( +void fuse3_apply_conn_info_opts( + struct fuse3_conn_info_opts *opts, struct fuse3_conn_info *conn), +{ + FSP_FUSE_API_CALL(fsp_fuse3_apply_conn_info_opts) + (fsp_fuse_env(), opts, conn); +}) + +FSP_FUSE_SYM( +int fuse3_version(void), +{ + return FSP_FUSE_API_CALL(fsp_fuse3_version) + (fsp_fuse_env()); +}) + +FSP_FUSE_SYM( +const char *fuse3_pkgversion(void), +{ + return FSP_FUSE_API_CALL(fsp_fuse3_pkgversion) + (fsp_fuse_env()); +}) + +FSP_FUSE_SYM( +void fuse3_pollhandle_destroy(struct fuse3_pollhandle *ph), +{ + (void)ph; +}) + +FSP_FUSE_SYM( +size_t fuse3_buf_size(const struct fuse3_bufvec *bufv), +{ + (void)bufv; + return 0; +}) + +FSP_FUSE_SYM( +ssize_t fuse3_buf_copy(struct fuse3_bufvec *dst, struct fuse3_bufvec *src, + enum fuse3_buf_copy_flags flags), +{ + (void)dst; + (void)src; + (void)flags; + return 0; +}) + +FSP_FUSE_SYM( +int fuse3_daemonize(int foreground), +{ + return fsp_fuse_daemonize(foreground); +}) + +FSP_FUSE_SYM( +int fuse3_set_signal_handlers(struct fuse3_session *se), +{ + return fsp_fuse_set_signal_handlers(se); +}) + +FSP_FUSE_SYM( +void fuse3_remove_signal_handlers(struct fuse3_session *se), +{ + (void)se; + fsp_fuse_set_signal_handlers(0); +}) + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/support/3rd_party/winfsp-2.0/inc/fuse3/fuse_opt.h b/support/3rd_party/winfsp-2.1/inc/fuse3/fuse_opt.h similarity index 91% rename from support/3rd_party/winfsp-2.0/inc/fuse3/fuse_opt.h rename to support/3rd_party/winfsp-2.1/inc/fuse3/fuse_opt.h index a4522798..9ffe10f7 100644 --- a/support/3rd_party/winfsp-2.0/inc/fuse3/fuse_opt.h +++ b/support/3rd_party/winfsp-2.1/inc/fuse3/fuse_opt.h @@ -1,23 +1,23 @@ -/** - * @file fuse3/fuse_opt.h - * WinFsp FUSE3 compatible API. - * - * @copyright 2015-2022 Bill Zissimopoulos - */ -/* - * This file is part of WinFsp. - * - * You can redistribute it and/or modify it under the terms of the GNU - * General Public License version 3 as published by the Free Software - * Foundation. - * - * Licensees holding a valid commercial license may use this software - * in accordance with the commercial license agreement provided in - * conjunction with the software. The terms and conditions of any such - * commercial license agreement shall govern, supersede, and render - * ineffective any application of the GPLv3 license to this software, - * notwithstanding of any reference thereto in the software or - * associated repository. - */ - -#include "../fuse/fuse_opt.h" +/** + * @file fuse3/fuse_opt.h + * WinFsp FUSE3 compatible API. + * + * @copyright 2015-2025 Bill Zissimopoulos + */ +/* + * This file is part of WinFsp. + * + * You can redistribute it and/or modify it under the terms of the GNU + * General Public License version 3 as published by the Free Software + * Foundation. + * + * Licensees holding a valid commercial license may use this software + * in accordance with the commercial license agreement provided in + * conjunction with the software. The terms and conditions of any such + * commercial license agreement shall govern, supersede, and render + * ineffective any application of the GPLv3 license to this software, + * notwithstanding of any reference thereto in the software or + * associated repository. + */ + +#include "../fuse/fuse_opt.h" diff --git a/support/3rd_party/winfsp-2.0/inc/fuse3/winfsp_fuse.h b/support/3rd_party/winfsp-2.1/inc/fuse3/winfsp_fuse.h similarity index 96% rename from support/3rd_party/winfsp-2.0/inc/fuse3/winfsp_fuse.h rename to support/3rd_party/winfsp-2.1/inc/fuse3/winfsp_fuse.h index db5d593f..bae9aa74 100644 --- a/support/3rd_party/winfsp-2.0/inc/fuse3/winfsp_fuse.h +++ b/support/3rd_party/winfsp-2.1/inc/fuse3/winfsp_fuse.h @@ -1,82 +1,82 @@ -/** - * @file fuse3/winfsp_fuse.h - * WinFsp FUSE3 compatible API. - * - * @copyright 2015-2022 Bill Zissimopoulos - */ -/* - * This file is part of WinFsp. - * - * You can redistribute it and/or modify it under the terms of the GNU - * General Public License version 3 as published by the Free Software - * Foundation. - * - * Licensees holding a valid commercial license may use this software - * in accordance with the commercial license agreement provided in - * conjunction with the software. The terms and conditions of any such - * commercial license agreement shall govern, supersede, and render - * ineffective any application of the GPLv3 license to this software, - * notwithstanding of any reference thereto in the software or - * associated repository. - */ - -#ifndef FUSE3_WINFSP_FUSE_H_INCLUDED -#define FUSE3_WINFSP_FUSE_H_INCLUDED - -#include "../fuse/winfsp_fuse.h" - -#if defined(_WIN64) || defined(_WIN32) -typedef intptr_t ssize_t; -#endif - -#if !defined(WINFSP_DLL_INTERNAL) -#define fuse3 fuse -#define fuse3_apply_conn_info_opts fuse_apply_conn_info_opts -#define fuse3_buf fuse_buf -#define fuse3_buf_copy fuse_buf_copy -#define fuse3_buf_copy_flags fuse_buf_copy_flags -#define fuse3_buf_flags fuse_buf_flags -#define fuse3_buf_size fuse_buf_size -#define fuse3_bufvec fuse_bufvec -#define fuse3_clean_cache fuse_clean_cache -#define fuse3_config fuse_config -#define fuse3_conn_info fuse_conn_info -#define fuse3_conn_info_opts fuse_conn_info_opts -#define fuse3_context fuse_context -#define fuse3_daemonize fuse_daemonize -#define fuse3_destroy fuse_destroy -#define fuse3_exit fuse_exit -#define fuse3_file_info fuse_file_info -#define fuse3_fill_dir_flags fuse_fill_dir_flags -#define fuse3_fill_dir_t fuse_fill_dir_t -#define fuse3_get_context fuse_get_context -#define fuse3_get_session fuse_get_session -#define fuse3_getgroups fuse_getgroups -#define fuse3_interrupted fuse_interrupted -#define fuse3_invalidate_path fuse_invalidate_path -#define fuse3_lib_help fuse_lib_help -#define fuse3_loop fuse_loop -#define fuse3_loop_config fuse_loop_config -#define fuse3_loop_mt fuse_loop_mt -#define fuse3_loop_mt_31 fuse_loop_mt_31 -#define fuse3_main_real fuse_main_real -#define fuse3_mount fuse_mount -#define fuse3_new fuse_new -#define fuse3_new_30 fuse_new_30 -#define fuse3_notify_poll fuse_notify_poll -#define fuse3_operations fuse_operations -#define fuse3_parse_conn_info_opts fuse_parse_conn_info_opts -#define fuse3_pkgversion fuse_pkgversion -#define fuse3_pollhandle fuse_pollhandle -#define fuse3_pollhandle_destroy fuse_pollhandle_destroy -#define fuse3_readdir_flags fuse_readdir_flags -#define fuse3_remove_signal_handlers fuse_remove_signal_handlers -#define fuse3_session fuse_session -#define fuse3_set_signal_handlers fuse_set_signal_handlers -#define fuse3_start_cleanup_thread fuse_start_cleanup_thread -#define fuse3_stop_cleanup_thread fuse_stop_cleanup_thread -#define fuse3_unmount fuse_unmount -#define fuse3_version fuse_version -#endif - -#endif +/** + * @file fuse3/winfsp_fuse.h + * WinFsp FUSE3 compatible API. + * + * @copyright 2015-2025 Bill Zissimopoulos + */ +/* + * This file is part of WinFsp. + * + * You can redistribute it and/or modify it under the terms of the GNU + * General Public License version 3 as published by the Free Software + * Foundation. + * + * Licensees holding a valid commercial license may use this software + * in accordance with the commercial license agreement provided in + * conjunction with the software. The terms and conditions of any such + * commercial license agreement shall govern, supersede, and render + * ineffective any application of the GPLv3 license to this software, + * notwithstanding of any reference thereto in the software or + * associated repository. + */ + +#ifndef FUSE3_WINFSP_FUSE_H_INCLUDED +#define FUSE3_WINFSP_FUSE_H_INCLUDED + +#include "../fuse/winfsp_fuse.h" + +#if defined(_WIN64) || defined(_WIN32) +typedef intptr_t ssize_t; +#endif + +#if !defined(WINFSP_DLL_INTERNAL) +#define fuse3 fuse +#define fuse3_apply_conn_info_opts fuse_apply_conn_info_opts +#define fuse3_buf fuse_buf +#define fuse3_buf_copy fuse_buf_copy +#define fuse3_buf_copy_flags fuse_buf_copy_flags +#define fuse3_buf_flags fuse_buf_flags +#define fuse3_buf_size fuse_buf_size +#define fuse3_bufvec fuse_bufvec +#define fuse3_clean_cache fuse_clean_cache +#define fuse3_config fuse_config +#define fuse3_conn_info fuse_conn_info +#define fuse3_conn_info_opts fuse_conn_info_opts +#define fuse3_context fuse_context +#define fuse3_daemonize fuse_daemonize +#define fuse3_destroy fuse_destroy +#define fuse3_exit fuse_exit +#define fuse3_file_info fuse_file_info +#define fuse3_fill_dir_flags fuse_fill_dir_flags +#define fuse3_fill_dir_t fuse_fill_dir_t +#define fuse3_get_context fuse_get_context +#define fuse3_get_session fuse_get_session +#define fuse3_getgroups fuse_getgroups +#define fuse3_interrupted fuse_interrupted +#define fuse3_invalidate_path fuse_invalidate_path +#define fuse3_lib_help fuse_lib_help +#define fuse3_loop fuse_loop +#define fuse3_loop_config fuse_loop_config +#define fuse3_loop_mt fuse_loop_mt +#define fuse3_loop_mt_31 fuse_loop_mt_31 +#define fuse3_main_real fuse_main_real +#define fuse3_mount fuse_mount +#define fuse3_new fuse_new +#define fuse3_new_30 fuse_new_30 +#define fuse3_notify_poll fuse_notify_poll +#define fuse3_operations fuse_operations +#define fuse3_parse_conn_info_opts fuse_parse_conn_info_opts +#define fuse3_pkgversion fuse_pkgversion +#define fuse3_pollhandle fuse_pollhandle +#define fuse3_pollhandle_destroy fuse_pollhandle_destroy +#define fuse3_readdir_flags fuse_readdir_flags +#define fuse3_remove_signal_handlers fuse_remove_signal_handlers +#define fuse3_session fuse_session +#define fuse3_set_signal_handlers fuse_set_signal_handlers +#define fuse3_start_cleanup_thread fuse_start_cleanup_thread +#define fuse3_stop_cleanup_thread fuse_stop_cleanup_thread +#define fuse3_unmount fuse_unmount +#define fuse3_version fuse_version +#endif + +#endif diff --git a/support/3rd_party/winfsp-2.1/inc/winfsp/fsctl.h b/support/3rd_party/winfsp-2.1/inc/winfsp/fsctl.h new file mode 100644 index 00000000..94ade4a9 --- /dev/null +++ b/support/3rd_party/winfsp-2.1/inc/winfsp/fsctl.h @@ -0,0 +1,812 @@ +/** + * @file winfsp/fsctl.h + * + * @copyright 2015-2025 Bill Zissimopoulos + */ +/* + * This file is part of WinFsp. + * + * You can redistribute it and/or modify it under the terms of the GNU + * General Public License version 3 as published by the Free Software + * Foundation. + * + * Licensees holding a valid commercial license may use this software + * in accordance with the commercial license agreement provided in + * conjunction with the software. The terms and conditions of any such + * commercial license agreement shall govern, supersede, and render + * ineffective any application of the GPLv3 license to this software, + * notwithstanding of any reference thereto in the software or + * associated repository. + */ + +#ifndef WINFSP_FSCTL_H_INCLUDED +#define WINFSP_FSCTL_H_INCLUDED + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* static_assert is a C++11 feature, but seems to work with C on MSVC 2015 */ +#if defined(WINFSP_SYS_INTERNAL) || defined(WINFSP_DLL_INTERNAL) +#define FSP_FSCTL_STATIC_ASSERT(e,m) static_assert(e,m) +#else +#define FSP_FSCTL_STATIC_ASSERT(e,m) static_assert(1,"") +#endif + +#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 + +#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 } }; +#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 + +/* locations */ +#define FSP_FSCTL_PRODUCT_REGKEY "Software\\" FSP_FSCTL_PRODUCT_NAME +#define FSP_FSCTL_PRODUCT_REGKEY_WOW64 KEY_WOW64_32KEY +#if defined(_ARM64_) +#define FSP_FSCTL_PRODUCT_FULL_REGKEY "Software\\WOW6432Node\\" FSP_FSCTL_PRODUCT_NAME +#define FSP_FSCTL_PRODUCT_FILE_ARCH "a64" +#elif defined(_AMD64_) +#define FSP_FSCTL_PRODUCT_FULL_REGKEY "Software\\WOW6432Node\\" FSP_FSCTL_PRODUCT_NAME +#define FSP_FSCTL_PRODUCT_FILE_ARCH "x64" +#elif defined(_X86_) +#define FSP_FSCTL_PRODUCT_FULL_REGKEY "Software\\" FSP_FSCTL_PRODUCT_NAME +#define FSP_FSCTL_PRODUCT_FILE_ARCH "x86" +#else +#error unknown architecture +#endif + +/* alignment macros */ +#define FSP_FSCTL_ALIGN_UP(x, s) (((x) + ((s) - 1L)) & ~((s) - 1L)) +#define FSP_FSCTL_DEFAULT_ALIGNMENT 8 +#define FSP_FSCTL_DEFAULT_ALIGN_UP(x) FSP_FSCTL_ALIGN_UP(x, FSP_FSCTL_DEFAULT_ALIGNMENT) +#define FSP_FSCTL_DECLSPEC_ALIGN __declspec(align(FSP_FSCTL_DEFAULT_ALIGNMENT)) + +/* fsctl device codes */ +#define FSP_FSCTL_MOUNTDEV \ + CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 0x800 + 'M', METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSP_FSCTL_MOUNTMGR \ + CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 0x800 + 'm', METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSP_FSCTL_VOLUME_NAME \ + CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 0x800 + 'N', METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSP_FSCTL_VOLUME_LIST \ + CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 0x800 + 'L', METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSP_FSCTL_TRANSACT \ + CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 0x800 + 'T', METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSP_IOCTL_TRANSACT \ + CTL_CODE(0x8000 | ('F'<<8) | 'W', 0x800 + 'T', METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSP_FSCTL_TRANSACT_BATCH \ + CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 0x800 + 't', METHOD_OUT_DIRECT, FILE_ANY_ACCESS) +#define FSP_IOCTL_TRANSACT_BATCH \ + CTL_CODE(0x8000 | ('F'<<8) | 'W', 0x800 + 't', METHOD_BUFFERED, 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) +#define FSP_FSCTL_UNLOAD \ + CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 0x800 + 'U', METHOD_NEITHER, FILE_ANY_ACCESS) + +/* fsctl internal device codes (usable only in-kernel) */ +#define FSP_FSCTL_TRANSACT_INTERNAL \ + CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 0x800 + 'I', METHOD_NEITHER, FILE_ANY_ACCESS) +#define FSP_IOCTL_TRANSACT_INTERNAL \ + CTL_CODE(0x8000 | ('F'<<8) | 'W', 0x800 + 'I', METHOD_BUFFERED, FILE_ANY_ACCESS) + +/* fsvol device codes */ +#define FSP_FSCTL_QUERY_WINFSP \ + CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 0x800 + '?', METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define FSP_FSCTL_VOLUME_PARAMS_PREFIX "\\VolumeParams=" + +#define FSP_FSCTL_VOLUME_NAME_SIZE (64 * sizeof(WCHAR)) +#define FSP_FSCTL_VOLUME_PREFIX_SIZE (192 * sizeof(WCHAR)) +#define FSP_FSCTL_VOLUME_FSNAME_SIZE (16 * sizeof(WCHAR)) +#define FSP_FSCTL_VOLUME_NAME_SIZEMAX (FSP_FSCTL_VOLUME_NAME_SIZE + FSP_FSCTL_VOLUME_PREFIX_SIZE) +FSP_FSCTL_STATIC_ASSERT(FSP_FSCTL_VOLUME_NAME_SIZEMAX <= 260 * sizeof(WCHAR), + "Max volume name size is greater than MAX_PATH."); + +#define FSP_FSCTL_TRANSACT_PATH_SIZEMAX (1024 * sizeof(WCHAR)) + +#define FSP_FSCTL_TRANSACT_REQ_SIZEMAX (16 * 1024 - 64) /* 64: size for internal request header */ +#define FSP_FSCTL_TRANSACT_RSP_SIZEMAX (16 * 1024) +#define FSP_FSCTL_TRANSACT_REQ_BUFFER_SIZEMAX (FSP_FSCTL_TRANSACT_REQ_SIZEMAX - sizeof(FSP_FSCTL_TRANSACT_REQ)) +#define FSP_FSCTL_TRANSACT_RSP_BUFFER_SIZEMAX (FSP_FSCTL_TRANSACT_RSP_SIZEMAX - sizeof(FSP_FSCTL_TRANSACT_RSP)) +#define FSP_FSCTL_TRANSACT_BATCH_BUFFER_SIZEMIN (64 * 1024) +#define FSP_FSCTL_TRANSACT_BUFFER_SIZEMIN FSP_FSCTL_TRANSACT_REQ_SIZEMAX + +#define FSP_FSCTL_TRANSACT_REQ_TOKEN_HANDLE(T) ((HANDLE)((UINT_PTR)((T) & 0xffffffff))) +#define FSP_FSCTL_TRANSACT_REQ_TOKEN_PID(T) ((UINT32)(((T) >> 32) & 0xffffffff)) + +#define FSP_FSCTL_DEVICECONTROL_SIZEMAX (4 * 1024) /* must be < FSP_FSCTL_TRANSACT_{REQ,RSP}_SIZEMAX */ + +/* marshalling */ +#pragma warning(push) +#pragma warning(disable:4200 4201) /* zero-sized array in struct/union; nameless struct/union */ +enum +{ + FspFsctlTransactReservedKind = 0, + FspFsctlTransactCreateKind, + FspFsctlTransactOverwriteKind, + FspFsctlTransactCleanupKind, + FspFsctlTransactCloseKind, + FspFsctlTransactReadKind, + FspFsctlTransactWriteKind, + FspFsctlTransactQueryInformationKind, + FspFsctlTransactSetInformationKind, + FspFsctlTransactQueryEaKind, + FspFsctlTransactSetEaKind, + FspFsctlTransactFlushBuffersKind, + FspFsctlTransactQueryVolumeInformationKind, + FspFsctlTransactSetVolumeInformationKind, + FspFsctlTransactQueryDirectoryKind, + FspFsctlTransactFileSystemControlKind, + FspFsctlTransactDeviceControlKind, + FspFsctlTransactShutdownKind, + FspFsctlTransactLockControlKind, + FspFsctlTransactQuerySecurityKind, + FspFsctlTransactSetSecurityKind, + FspFsctlTransactQueryStreamInformationKind, + FspFsctlTransactKindCount, +}; +enum +{ + FspFsctlTransactTimeoutMinimum = 1000, + FspFsctlTransactTimeoutMaximum = 10000, + FspFsctlTransactTimeoutDefault = 1000, /* DEPRECATED: default is unspecified */ + FspFsctlIrpTimeoutMinimum = 60000, + FspFsctlIrpTimeoutMaximum = 600000, + FspFsctlIrpTimeoutDefault = 300000, + FspFsctlIrpTimeoutDebug = 142, /* special value for IRP timeout testing */ + FspFsctlIrpCapacityMinimum = 100, + FspFsctlIrpCapacityMaximum = 1000, + FspFsctlIrpCapacityDefault = 1000, +}; +#define FSP_FSCTL_VOLUME_PARAMS_V0_FIELD_DEFN\ + UINT16 Version; /* set to 0 or sizeof(FSP_FSCTL_VOLUME_PARAMS) */\ + /* volume information */\ + UINT16 SectorSize;\ + UINT16 SectorsPerAllocationUnit;\ + UINT16 MaxComponentLength; /* maximum file name component length (bytes) */\ + UINT64 VolumeCreationTime;\ + UINT32 VolumeSerialNumber;\ + /* I/O timeouts, capacity, etc. */\ + UINT32 TransactTimeout; /* DEPRECATED: (millis; 1 sec - 10 sec) */\ + UINT32 IrpTimeout; /* pending IRP timeout (millis; 1 min - 10 min) */\ + UINT32 IrpCapacity; /* maximum number of pending IRP's (100 - 1000)*/\ + UINT32 FileInfoTimeout; /* FileInfo/Security/VolumeInfo timeout (millis) */\ + /* FILE_FS_ATTRIBUTE_INFORMATION::FileSystemAttributes */\ + UINT32 CaseSensitiveSearch:1; /* file system supports case-sensitive file names */\ + UINT32 CasePreservedNames:1; /* file system preserves the case of file names */\ + UINT32 UnicodeOnDisk:1; /* file system supports Unicode in file names */\ + UINT32 PersistentAcls:1; /* file system preserves and enforces access control lists */\ + UINT32 ReparsePoints:1; /* file system supports reparse points */\ + UINT32 ReparsePointsAccessCheck:1; /* file system performs reparse point access checks */\ + UINT32 NamedStreams:1; /* file system supports named streams */\ + UINT32 HardLinks:1; /* unimplemented; set to 0 */\ + UINT32 ExtendedAttributes:1; /* file system supports extended attributes */\ + UINT32 ReadOnlyVolume:1;\ + /* kernel-mode flags */\ + UINT32 PostCleanupWhenModifiedOnly:1; /* post Cleanup when a file was modified/deleted */\ + UINT32 PassQueryDirectoryPattern:1; /* pass Pattern during QueryDirectory operations */\ + UINT32 AlwaysUseDoubleBuffering:1;\ + UINT32 PassQueryDirectoryFileName:1; /* pass FileName during QueryDirectory (GetDirInfoByName) */\ + UINT32 FlushAndPurgeOnCleanup:1; /* keeps file off "standby" list */\ + UINT32 DeviceControl:1; /* support user-mode ioctl handling */\ + /* user-mode flags */\ + UINT32 UmFileContextIsUserContext2:1; /* user mode: FileContext parameter is UserContext2 */\ + UINT32 UmFileContextIsFullContext:1; /* user mode: FileContext parameter is FullContext */\ + UINT32 UmNoReparsePointsDirCheck:1; /* user mode: no dir option check for reparse points */\ + UINT32 UmReservedFlags:5;\ + /* additional kernel-mode flags */\ + UINT32 AllowOpenInKernelMode:1; /* allow kernel mode to open files when possible */\ + UINT32 CasePreservedExtendedAttributes:1; /* preserve case of EA (default is UPPERCASE) */\ + UINT32 WslFeatures:1; /* support features required for WSLinux */\ + UINT32 DirectoryMarkerAsNextOffset:1; /* directory marker is next offset instead of last name */\ + UINT32 RejectIrpPriorToTransact0:1; /* DEPRECATED: reject IRP's prior to FspFsctlTransact0 */\ + UINT32 SupportsPosixUnlinkRename:1; /* file system supports POSIX-style unlink and rename */\ + UINT32 PostDispositionWhenNecessaryOnly:1; /* post Disposition for dirs or READONLY attr check */\ + UINT32 KmReservedFlags:1;\ + WCHAR Prefix[FSP_FSCTL_VOLUME_PREFIX_SIZE / sizeof(WCHAR)]; /* UNC prefix (\Server\Share) */\ + WCHAR FileSystemName[FSP_FSCTL_VOLUME_FSNAME_SIZE / sizeof(WCHAR)]; +#define FSP_FSCTL_VOLUME_PARAMS_V1_FIELD_DEFN\ + /* additional fields; specify .Version == sizeof(FSP_FSCTL_VOLUME_PARAMS) */\ + UINT32 VolumeInfoTimeoutValid:1; /* VolumeInfoTimeout field is valid */\ + UINT32 DirInfoTimeoutValid:1; /* DirInfoTimeout field is valid */\ + UINT32 SecurityTimeoutValid:1; /* SecurityTimeout field is valid*/\ + UINT32 StreamInfoTimeoutValid:1; /* StreamInfoTimeout field is valid */\ + UINT32 EaTimeoutValid:1; /* EaTimeout field is valid */\ + UINT32 KmAdditionalReservedFlags:27;\ + UINT32 VolumeInfoTimeout; /* volume info timeout (millis); overrides FileInfoTimeout */\ + UINT32 DirInfoTimeout; /* dir info timeout (millis); overrides FileInfoTimeout */\ + UINT32 SecurityTimeout; /* security info timeout (millis); overrides FileInfoTimeout */\ + UINT32 StreamInfoTimeout; /* stream info timeout (millis); overrides FileInfoTimeout */\ + UINT32 EaTimeout; /* EA timeout (millis); overrides FileInfoTimeout */\ + UINT32 FsextControlCode;\ + UINT32 Reserved32[1];\ + UINT64 Reserved64[2]; +typedef struct +{ + FSP_FSCTL_VOLUME_PARAMS_V0_FIELD_DEFN +} FSP_FSCTL_VOLUME_PARAMS_V0; +FSP_FSCTL_STATIC_ASSERT(456 == sizeof(FSP_FSCTL_VOLUME_PARAMS_V0), + "sizeof(FSP_FSCTL_VOLUME_PARAMS_V0) must be exactly 456."); +typedef struct +{ + FSP_FSCTL_VOLUME_PARAMS_V0_FIELD_DEFN + FSP_FSCTL_VOLUME_PARAMS_V1_FIELD_DEFN +} FSP_FSCTL_VOLUME_PARAMS; +FSP_FSCTL_STATIC_ASSERT(504 == sizeof(FSP_FSCTL_VOLUME_PARAMS), + "sizeof(FSP_FSCTL_VOLUME_PARAMS) is currently 504. Update this assertion check if it changes."); +typedef struct +{ + UINT64 TotalSize; + UINT64 FreeSize; + UINT16 VolumeLabelLength; + WCHAR VolumeLabel[32]; +} FSP_FSCTL_VOLUME_INFO; +FSP_FSCTL_STATIC_ASSERT(88 == sizeof(FSP_FSCTL_VOLUME_INFO), + "sizeof(FSP_FSCTL_VOLUME_INFO) must be exactly 88."); +typedef struct +{ + UINT32 FileAttributes; + UINT32 ReparseTag; + UINT64 AllocationSize; + UINT64 FileSize; + UINT64 CreationTime; + UINT64 LastAccessTime; + UINT64 LastWriteTime; + UINT64 ChangeTime; + UINT64 IndexNumber; + UINT32 HardLinks; /* unimplemented: set to 0 */ + UINT32 EaSize; +} FSP_FSCTL_FILE_INFO; +FSP_FSCTL_STATIC_ASSERT(72 == sizeof(FSP_FSCTL_FILE_INFO), + "sizeof(FSP_FSCTL_FILE_INFO) must be exactly 72."); +typedef struct +{ + FSP_FSCTL_FILE_INFO FileInfo; + PWSTR NormalizedName; + UINT16 NormalizedNameSize; +} FSP_FSCTL_OPEN_FILE_INFO; +typedef struct +{ + UINT16 Size; + FSP_FSCTL_FILE_INFO FileInfo; + union + { + UINT64 NextOffset; + UINT8 Padding[24]; + /* make struct as big as FILE_ID_BOTH_DIR_INFORMATION; allows for in-place copying */ + } DUMMYUNIONNAME; + WCHAR FileNameBuf[]; +} FSP_FSCTL_DIR_INFO; +FSP_FSCTL_STATIC_ASSERT(104 == sizeof(FSP_FSCTL_DIR_INFO), + "sizeof(FSP_FSCTL_DIR_INFO) must be exactly 104."); +typedef struct +{ + UINT16 Size; + UINT64 StreamSize; + UINT64 StreamAllocationSize; + WCHAR StreamNameBuf[]; +} FSP_FSCTL_STREAM_INFO; +FSP_FSCTL_STATIC_ASSERT(24 == sizeof(FSP_FSCTL_STREAM_INFO), + "sizeof(FSP_FSCTL_STREAM_INFO) must be exactly 24."); +typedef struct +{ + UINT16 Size; + UINT32 Filter; + UINT32 Action; + WCHAR FileNameBuf[]; +} FSP_FSCTL_NOTIFY_INFO; +FSP_FSCTL_STATIC_ASSERT(12 == sizeof(FSP_FSCTL_NOTIFY_INFO), + "sizeof(FSP_FSCTL_NOTIFY_INFO) must be exactly 12."); +typedef struct +{ + UINT64 UserContext; + UINT64 UserContext2; +} FSP_FSCTL_TRANSACT_FULL_CONTEXT; +typedef struct +{ + UINT16 Offset; + UINT16 Size; +} FSP_FSCTL_TRANSACT_BUF; +typedef struct +{ + UINT16 Version; + UINT16 Size; + UINT32 Kind; + UINT64 Hint; + union + { + struct + { + UINT32 CreateOptions; /* Disposition: high 8 bits; Options: low 24 bits */ + UINT32 FileAttributes; /* file attributes for new files */ + FSP_FSCTL_TRANSACT_BUF SecurityDescriptor; /* security descriptor for new files */ + UINT64 AllocationSize; /* initial allocation size */ + UINT64 AccessToken; /* request access token (PID,HANDLE) */ + UINT32 DesiredAccess; /* FILE_{READ_DATA,WRITE_DATA,etc.} */ + UINT32 GrantedAccess; /* FILE_{READ_DATA,WRITE_DATA,etc.} */ + UINT32 ShareAccess; /* FILE_SHARE_{READ,WRITE,DELETE} */ + FSP_FSCTL_TRANSACT_BUF Ea; /* extended attributes or reparse point buffer */ + UINT32 UserMode:1; /* request originated in user mode */ + UINT32 HasTraversePrivilege:1; /* requestor has TOKEN_HAS_TRAVERSE_PRIVILEGE */ + UINT32 HasBackupPrivilege:1; /* requestor has TOKEN_HAS_BACKUP_PRIVILEGE */ + UINT32 HasRestorePrivilege:1; /* requestor has TOKEN_HAS_RESTORE_PRIVILEGE */ + UINT32 OpenTargetDirectory:1; /* open target dir and report FILE_{EXISTS,DOES_NOT_EXIST} */ + UINT32 CaseSensitive:1; /* FileName comparisons should be case-sensitive */ + UINT32 HasTrailingBackslash:1; /* FileName had trailing backslash */ + UINT32 AcceptsSecurityDescriptor:1; + UINT32 EaIsReparsePoint:1; /* Ea buffer is reparse point */ + UINT32 ReservedFlags:24; + UINT16 NamedStream; /* request targets named stream; colon offset in FileName */ + } Create; + struct + { + UINT64 UserContext; + UINT64 UserContext2; + UINT32 FileAttributes; /* file attributes for overwritten/superseded files */ + UINT64 AllocationSize; /* allocation size for overwritten/superseded files */ + UINT32 Supersede:1; /* 0: FILE_OVERWRITE operation, 1: FILE_SUPERSEDE operation */ + FSP_FSCTL_TRANSACT_BUF Ea; /* extended attributes buffer */ + } Overwrite; + struct + { + UINT64 UserContext; + UINT64 UserContext2; + UINT32 Delete:1; /* file must be deleted */ + UINT32 SetAllocationSize:1; + UINT32 SetArchiveBit:1; + UINT32 SetLastAccessTime:1; + UINT32 SetLastWriteTime:1; + UINT32 SetChangeTime:1; + } Cleanup; + struct + { + UINT64 UserContext; + UINT64 UserContext2; + } Close; + struct + { + UINT64 UserContext; + UINT64 UserContext2; + UINT64 Address; + UINT64 Offset; + UINT32 Length; + UINT32 Key; + } Read; + struct + { + UINT64 UserContext; + UINT64 UserContext2; + UINT64 Address; + UINT64 Offset; + UINT32 Length; + UINT32 Key; + UINT32 ConstrainedIo:1; + } Write; + struct + { + UINT64 UserContext; + UINT64 UserContext2; + } QueryInformation; + struct + { + UINT64 UserContext; + UINT64 UserContext2; + UINT32 FileInformationClass; + union + { + struct + { + UINT64 AllocationSize; + } Allocation; + struct + { + UINT32 FileAttributes; + UINT64 CreationTime; + UINT64 LastAccessTime; + UINT64 LastWriteTime; + UINT64 ChangeTime; + } Basic; + struct + { + UINT32 Delete:1; + } Disposition; + struct + { + UINT32 Flags; + } DispositionEx; + struct + { + UINT64 FileSize; + } EndOfFile; + struct + { + FSP_FSCTL_TRANSACT_BUF NewFileName; + UINT64 AccessToken; /* request access token (PID,HANDLE) */ + } Rename; + struct + { + FSP_FSCTL_TRANSACT_BUF NewFileName; + UINT64 AccessToken; /* request access token (PID,HANDLE) */ + UINT32 Flags; + } RenameEx; + } Info; + } SetInformation; + struct + { + UINT64 UserContext; + UINT64 UserContext2; + } QueryEa; + struct + { + UINT64 UserContext; + UINT64 UserContext2; + FSP_FSCTL_TRANSACT_BUF Ea; + } SetEa; + struct + { + UINT64 UserContext; + UINT64 UserContext2; + } FlushBuffers; + struct + { + UINT32 FsInformationClass; + union + { + struct + { + FSP_FSCTL_TRANSACT_BUF VolumeLabel; + } Label; + } Info; + } SetVolumeInformation; + struct + { + UINT64 UserContext; + UINT64 UserContext2; + UINT64 Address; + UINT32 Length; + FSP_FSCTL_TRANSACT_BUF Pattern; + FSP_FSCTL_TRANSACT_BUF Marker; + UINT32 CaseSensitive:1; /* FileName comparisons should be case-sensitive */ + UINT32 PatternIsFileName:1; /* Pattern does not contain wildcards */ + } QueryDirectory; + struct + { + UINT64 UserContext; + UINT64 UserContext2; + UINT32 FsControlCode; + FSP_FSCTL_TRANSACT_BUF Buffer; + UINT16 TargetOnFileSystem; /* the target of the symbolic link is on this file system */ + } FileSystemControl; + struct + { + UINT64 UserContext; + UINT64 UserContext2; + UINT32 IoControlCode; + FSP_FSCTL_TRANSACT_BUF Buffer; + UINT32 OutputLength; + } DeviceControl; + struct + { + UINT64 UserContext; + UINT64 UserContext2; + } QuerySecurity; + struct + { + UINT64 UserContext; + UINT64 UserContext2; + UINT32 SecurityInformation; + FSP_FSCTL_TRANSACT_BUF SecurityDescriptor; + } SetSecurity; + struct + { + UINT64 UserContext; + UINT64 UserContext2; + } QueryStreamInformation; + } Req; + FSP_FSCTL_TRANSACT_BUF FileName; + /* Create,Cleanup,SetInformation{Disposition,Rename},FileSystemControl{ReparsePoint} */ + FSP_FSCTL_DECLSPEC_ALIGN UINT8 Buffer[]; +} FSP_FSCTL_TRANSACT_REQ; +typedef struct +{ + UINT16 Version; + UINT16 Size; + UINT32 Kind; + UINT64 Hint; + struct + { + UINT32 Information; + UINT32 Status; + } IoStatus; + union + { + union + { + /* IoStatus.Status == STATUS_SUCCESS */ + struct + { + UINT64 UserContext; /* user context associated with file node */ + UINT64 UserContext2; /* user context associated with file descriptor (handle) */ + UINT32 GrantedAccess; /* FILE_{READ_DATA,WRITE_DATA,etc.} */ + FSP_FSCTL_TRANSACT_BUF SecurityDescriptor; + FSP_FSCTL_FILE_INFO FileInfo; + FSP_FSCTL_TRANSACT_BUF FileName; + UINT32 DisableCache:1; + UINT32 HasSecurityDescriptor:1; + } Opened; + /* IoStatus.Status == STATUS_REPARSE */ + struct + { + FSP_FSCTL_TRANSACT_BUF Buffer; + } Reparse; + } Create; + struct + { + FSP_FSCTL_FILE_INFO FileInfo; + } Overwrite; + struct + { + FSP_FSCTL_FILE_INFO FileInfo; + } Write; + struct + { + FSP_FSCTL_FILE_INFO FileInfo; + } QueryInformation; + struct + { + FSP_FSCTL_FILE_INFO FileInfo; /* valid: File{Allocation,Basic,EndOfFile}Information */ + } SetInformation; + struct + { + FSP_FSCTL_TRANSACT_BUF Ea; + } QueryEa; + struct + { + FSP_FSCTL_FILE_INFO FileInfo; + FSP_FSCTL_TRANSACT_BUF Ea; /* Size==0 means no extended atttributed returned */ + } SetEa; + struct + { + FSP_FSCTL_FILE_INFO FileInfo; /* valid when flushing file (not volume) */ + } FlushBuffers; + struct + { + FSP_FSCTL_VOLUME_INFO VolumeInfo; + } QueryVolumeInformation; + struct + { + FSP_FSCTL_VOLUME_INFO VolumeInfo; + } SetVolumeInformation; + struct + { + FSP_FSCTL_TRANSACT_BUF Buffer; + } FileSystemControl; + struct + { + FSP_FSCTL_TRANSACT_BUF Buffer; + } DeviceControl; + struct + { + FSP_FSCTL_TRANSACT_BUF SecurityDescriptor; + } QuerySecurity; + struct + { + FSP_FSCTL_TRANSACT_BUF SecurityDescriptor; /* Size==0 means no security descriptor returned */ + } SetSecurity; + struct + { + FSP_FSCTL_TRANSACT_BUF Buffer; + } QueryStreamInformation; + } Rsp; + FSP_FSCTL_DECLSPEC_ALIGN UINT8 Buffer[]; +} FSP_FSCTL_TRANSACT_RSP; +#pragma warning(pop) +FSP_FSCTL_STATIC_ASSERT(FSP_FSCTL_TRANSACT_RSP_BUFFER_SIZEMAX > FSP_FSCTL_TRANSACT_PATH_SIZEMAX, + "FSP_FSCTL_TRANSACT_RSP_BUFFER_SIZEMAX must be greater than FSP_FSCTL_TRANSACT_PATH_SIZEMAX " + "to detect when a normalized name has been set during a Create/Open request."); +static inline BOOLEAN FspFsctlTransactCanProduceRequest( + FSP_FSCTL_TRANSACT_REQ *Request, PVOID RequestBufEnd) +{ + return (PUINT8)Request + FSP_FSCTL_TRANSACT_REQ_SIZEMAX <= (PUINT8)RequestBufEnd; +} +static inline FSP_FSCTL_TRANSACT_REQ *FspFsctlTransactProduceRequest( + FSP_FSCTL_TRANSACT_REQ *Request, SIZE_T RequestSize) +{ + PVOID NextRequest = (PUINT8)Request + FSP_FSCTL_DEFAULT_ALIGN_UP(RequestSize); + return (FSP_FSCTL_TRANSACT_REQ *)NextRequest; +} +static inline FSP_FSCTL_TRANSACT_REQ *FspFsctlTransactConsumeRequest( + FSP_FSCTL_TRANSACT_REQ *Request, PVOID RequestBufEnd) +{ + if ((PUINT8)Request + sizeof(Request->Size) > (PUINT8)RequestBufEnd || + sizeof(FSP_FSCTL_TRANSACT_REQ) > Request->Size) + return 0; + PVOID NextRequest = (PUINT8)Request + FSP_FSCTL_DEFAULT_ALIGN_UP(Request->Size); + return NextRequest <= RequestBufEnd ? (FSP_FSCTL_TRANSACT_REQ *)NextRequest : 0; +} +static inline BOOLEAN FspFsctlTransactCanProduceResponse( + FSP_FSCTL_TRANSACT_RSP *Response, PVOID ResponseBufEnd) +{ + return (PUINT8)Response + FSP_FSCTL_TRANSACT_RSP_SIZEMAX <= (PUINT8)ResponseBufEnd; +} +static inline FSP_FSCTL_TRANSACT_RSP *FspFsctlTransactProduceResponse( + FSP_FSCTL_TRANSACT_RSP *Response, SIZE_T ResponseSize) +{ + PVOID NextResponse = (PUINT8)Response + FSP_FSCTL_DEFAULT_ALIGN_UP(ResponseSize); + return (FSP_FSCTL_TRANSACT_RSP *)NextResponse; +} +static inline FSP_FSCTL_TRANSACT_RSP *FspFsctlTransactConsumeResponse( + FSP_FSCTL_TRANSACT_RSP *Response, PVOID ResponseBufEnd) +{ + if ((PUINT8)Response + sizeof(Response->Size) > (PUINT8)ResponseBufEnd || + sizeof(FSP_FSCTL_TRANSACT_RSP) > Response->Size) + return 0; + PVOID NextResponse = (PUINT8)Response + FSP_FSCTL_DEFAULT_ALIGN_UP(Response->Size); + return NextResponse <= ResponseBufEnd ? (FSP_FSCTL_TRANSACT_RSP *)NextResponse : 0; +} + +#if !defined(_KERNEL_MODE) +FSP_API NTSTATUS FspFsctlCreateVolume(PWSTR DevicePath, + const FSP_FSCTL_VOLUME_PARAMS *VolumeParams, + PWCHAR VolumeNameBuf, SIZE_T VolumeNameSize, + PHANDLE PVolumeHandle); +FSP_API NTSTATUS FspFsctlMakeMountdev(HANDLE VolumeHandle, + BOOLEAN Persistent, GUID *UniqueId); +FSP_API NTSTATUS FspFsctlUseMountmgr(HANDLE VolumeHandle, + PWSTR MountPoint); +FSP_API NTSTATUS FspFsctlTransact(HANDLE VolumeHandle, + PVOID ResponseBuf, SIZE_T ResponseBufSize, + 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, + PWCHAR VolumeListBuf, PSIZE_T PVolumeListSize); +FSP_API NTSTATUS FspFsctlPreflight(PWSTR DevicePath); +FSP_API NTSTATUS FspFsctlServiceVersion(PUINT32 PVersion); +FSP_API NTSTATUS FspFsctlStartService(VOID); +FSP_API NTSTATUS FspFsctlStopService(VOID); +FSP_API NTSTATUS FspFsctlEnumServices( + VOID (*EnumFn)(PVOID Context, PWSTR ServiceName, BOOLEAN Running), + PVOID Context); + +typedef struct +{ + /* in */ + HANDLE VolumeHandle; /* volume handle returned by FspFsctlCreateVolume */ + PWSTR VolumeName; /* volume name returned by FspFsctlCreateVolume */ + PSECURITY_DESCRIPTOR Security; /* optional: security descriptor for directories */ + UINT64 Reserved; /* reserved for future use */ + /* in/out */ + PWSTR MountPoint; /* FspMountSet sets drive in buffer when passed "*:" */ + HANDLE MountHandle; /* FspMountSet sets, FspMountRemove uses */ +} FSP_MOUNT_DESC; +FSP_API NTSTATUS FspMountSet(FSP_MOUNT_DESC *Desc); +FSP_API NTSTATUS FspMountRemove(FSP_MOUNT_DESC *Desc); +#endif + +/* + * Atomics + * + * See https://www.cl.cam.ac.uk/~pes20/cpp/cpp0xmappings.html (https://archive.is/mJfFX) + */ +#if _MSC_VER >= 1920 /* VS2019 or later */ +__int32 __iso_volatile_load32(const volatile __int32 *); +void __iso_volatile_store32(volatile __int32 *, __int32); +__int64 __iso_volatile_load64(const volatile __int64 *); +void __iso_volatile_store64(volatile __int64 *, __int64); +#define FSP_INTERLOCKED__LOAD32(p) __iso_volatile_load32(p) +#define FSP_INTERLOCKED__STORE32(p,v) __iso_volatile_store32(p,v) +#define FSP_INTERLOCKED__LOAD64(p) __iso_volatile_load64(p) +#define FSP_INTERLOCKED__STORE64(p,v) __iso_volatile_store64(p,v) +#else +#define FSP_INTERLOCKED__LOAD32(p) (*(p)) +#define FSP_INTERLOCKED__STORE32(p,v) (*(p) = (v)) +#define FSP_INTERLOCKED__LOAD64(p) (*(p)) +#define FSP_INTERLOCKED__STORE64(p,v) (*(p) = (v)) +#endif +static inline INT32 FspInterlockedLoad32(INT32 volatile *p) +{ +#if defined(_M_ARM64) + void __dmb(unsigned int); + INT32 v = FSP_INTERLOCKED__LOAD32(p); + __dmb(0xb); + return v; + +#elif defined(_M_X64) || defined(_M_IX86) + void _ReadWriteBarrier(void); + INT32 v = FSP_INTERLOCKED__LOAD32(p); + _ReadWriteBarrier(); + return v; + +#endif +} +static inline VOID FspInterlockedStore32(INT32 volatile *p, INT32 v) +{ +#if defined(_M_ARM64) + void __dmb(unsigned int); + __dmb(0xb); + FSP_INTERLOCKED__STORE32(p, v); + __dmb(0xb); + +#elif defined(_M_X64) || defined(_M_IX86) + long _InterlockedExchange(long volatile *, long); + _InterlockedExchange((long volatile *)p, v); + +#endif +} +static inline VOID *FspInterlockedLoadPointer(VOID *volatile *p) +{ +#if defined(_M_ARM64) + void __dmb(unsigned int); + VOID *v = (VOID *)FSP_INTERLOCKED__LOAD64((__int64 volatile *)(p)); + __dmb(0xb); + return v; + +#elif defined(_M_X64) + void _ReadWriteBarrier(void); + VOID *v = (VOID *)FSP_INTERLOCKED__LOAD64((__int64 volatile *)(p)); + _ReadWriteBarrier(); + return v; + +#elif defined(_M_IX86) + void _ReadWriteBarrier(void); + VOID *v = (VOID *)FSP_INTERLOCKED__LOAD32((__int32 volatile *)(p)); + _ReadWriteBarrier(); + return v; + +#endif +} +static inline VOID FspInterlockedStorePointer(VOID *volatile *p, VOID *v) +{ +#if defined(_M_ARM64) + void __dmb(unsigned int); + __dmb(0xb); + FSP_INTERLOCKED__STORE64((__int64 volatile *)(p), (__int64)(v)); + __dmb(0xb); + +#elif defined(_M_X64) || defined(_M_IX86) + void *_InterlockedExchangePointer(void *volatile *, void *); + _InterlockedExchangePointer(p, v); + +#endif +} + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/support/3rd_party/winfsp-2.0/inc/winfsp/launch.h b/support/3rd_party/winfsp-2.1/inc/winfsp/launch.h similarity index 97% rename from support/3rd_party/winfsp-2.0/inc/winfsp/launch.h rename to support/3rd_party/winfsp-2.1/inc/winfsp/launch.h index 93b8b6d1..a07b916a 100644 --- a/support/3rd_party/winfsp-2.0/inc/winfsp/launch.h +++ b/support/3rd_party/winfsp-2.1/inc/winfsp/launch.h @@ -1,350 +1,350 @@ -/** - * @file winfsp/launch.h - * WinFsp Launch API. - * - * 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. - * - * @copyright 2015-2022 Bill Zissimopoulos - */ -/* - * This file is part of WinFsp. - * - * You can redistribute it and/or modify it under the terms of the GNU - * General Public License version 3 as published by the Free Software - * Foundation. - * - * Licensees holding a valid commercial license may use this software - * in accordance with the commercial license agreement provided in - * conjunction with the software. The terms and conditions of any such - * commercial license agreement shall govern, supersede, and render - * ineffective any application of the GPLv3 license to this software, - * notwithstanding of any reference thereto in the software or - * associated repository. - */ - -#ifndef WINFSP_LAUNCH_H_INCLUDED -#define WINFSP_LAUNCH_H_INCLUDED - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#define FSP_LAUNCH_REGKEY FSP_FSCTL_PRODUCT_REGKEY "\\Services" -#define FSP_LAUNCH_REGKEY_WOW64 FSP_FSCTL_PRODUCT_REGKEY_WOW64 -#define FSP_LAUNCH_FULL_REGKEY FSP_FSCTL_PRODUCT_FULL_REGKEY "\\Services" - -#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) - -/* - * The launcher named pipe SDDL gives full access to LocalSystem and Administrators and - * GENERIC_READ and FILE_WRITE_DATA access to Everyone. We are careful not to give the - * FILE_CREATE_PIPE_INSTANCE right to Everyone to disallow the creation of additional - * pipe instances. - */ -#define FSP_LAUNCH_PIPE_SDDL "O:SYG:SYD:P(A;;GA;;;SY)(A;;GA;;;BA)(A;;GRDCCR;;;WD)" - -/* - * The default service instance SDDL gives full access to LocalSystem and Administrators. - * The only possible service instance rights are as follows: - * RP SERVICE_START - * WP SERVICE_STOP - * LC SERVICE_QUERY_STATUS - * - * To create a service that can be started, stopped or queried by Everyone, you can set - * the following SDDL: - * D:P(A;;RPWPLC;;;WD) - */ -#define FSP_LAUNCH_SERVICE_DEFAULT_SDDL "D:P(A;;RPWPLC;;;SY)(A;;RPWPLC;;;BA)" -#define FSP_LAUNCH_SERVICE_WORLD_SDDL "D:P(A;;RPWPLC;;;WD)" - -enum -{ - FspLaunchCmdStart = 'S', /* requires: SERVICE_START */ - FspLaunchCmdStartWithSecret = 'X', /* requires: SERVICE_START */ - FspLaunchCmdStop = 'T', /* requires: SERVICE_STOP */ - FspLaunchCmdGetInfo = 'I', /* requires: SERVICE_QUERY_STATUS */ - FspLaunchCmdGetNameList = 'L', /* requires: none*/ - FspLaunchCmdDefineDosDevice = 'D', /* internal: do not use! */ - FspLaunchCmdQuit = 'Q', /* DEBUG version only */ -}; - -enum -{ - FspLaunchCmdSuccess = '$', - FspLaunchCmdFailure = '!', -}; - -/** - * @group Launch Control - */ -/** - * Call launcher pipe. - * - * This function is used to send a command to the launcher and receive a response. - * - * @param Command - * Launcher command to send. For example, the 'L' launcher command instructs - * the launcher to list all running service instances. - * @param Argc - * Command argument count. May be 0. - * @param Argv - * Command argument array. May be NULL. - * @param Argl - * Command argument length array. May be NULL. If this is NULL all command arguments - * are assumed to be NULL-terminated strings. It is also possible for specific arguments - * to be NULL-terminated; in this case pass -1 in the corresponding Argl position. - * @param Buffer - * Buffer that receives the command response. May be NULL. - * @param PSize - * Pointer to a ULONG. On input it contains the size of the Buffer. On output it - * contains the number of bytes transferred. May be NULL. - * @param PLauncherError - * Receives the launcher error if any. This is always a Win32 error code. May not be NULL. - * @return - * STATUS_SUCCESS if the command is sent successfully to the launcher, even if the launcher - * returns an error. Other status codes indicate a communication error. Launcher errors are - * reported through PLauncherError. - */ -FSP_API NTSTATUS FspLaunchCallLauncherPipe( - WCHAR Command, ULONG Argc, PWSTR *Argv, ULONG *Argl, - PWSTR Buffer, PULONG PSize, - PULONG PLauncherError); -/** - * Call launcher pipe. - * - * This function is used to send a command to the launcher and receive a response. - * - * @param Command - * Launcher command to send. For example, the 'L' launcher command instructs - * the launcher to list all running service instances. - * @param Argc - * Command argument count. May be 0. - * @param Argv - * Command argument array. May be NULL. - * @param Argl - * Command argument length array. May be NULL. If this is NULL all command arguments - * are assumed to be NULL-terminated strings. It is also possible for specific arguments - * to be NULL-terminated; in this case pass -1 in the corresponding Argl position. - * @param Buffer - * Buffer that receives the command response. May be NULL. - * @param PSize - * Pointer to a ULONG. On input it contains the size of the Buffer. On output it - * contains the number of bytes transferred. May be NULL. - * @param AllowImpersonation - * Allow caller to be impersonated by launcher. - * @param PLauncherError - * Receives the launcher error if any. This is always a Win32 error code. May not be NULL. - * @return - * STATUS_SUCCESS if the command is sent successfully to the launcher, even if the launcher - * returns an error. Other status codes indicate a communication error. Launcher errors are - * reported through PLauncherError. - */ -FSP_API NTSTATUS FspLaunchCallLauncherPipeEx( - WCHAR Command, ULONG Argc, PWSTR *Argv, ULONG *Argl, - PWSTR Buffer, PULONG PSize, - BOOLEAN AllowImpersonation, - PULONG PLauncherError); -/** - * Start a service instance. - * - * @param ClassName - * Class name of the service instance to start. - * @param InstanceName - * Instance name of the service instance to start. - * @param Argc - * Service instance argument count. May be 0. - * @param Argv - * Service instance argument array. May be NULL. - * @param HasSecret - * Whether the last argument in Argv is assumed to be a secret (e.g. password) or not. - * Secrets are passed to service instances through standard input rather than the command - * line. - * @param PLauncherError - * Receives the launcher error if any. This is always a Win32 error code. May not be NULL. - * @return - * STATUS_SUCCESS if the command is sent successfully to the launcher, even if the launcher - * returns an error. Other status codes indicate a communication error. Launcher errors are - * reported through PLauncherError. - */ -FSP_API NTSTATUS FspLaunchStart( - PWSTR ClassName, PWSTR InstanceName, ULONG Argc, PWSTR *Argv, - BOOLEAN HasSecret, - PULONG PLauncherError); -/** - * Start a service instance. - * - * @param ClassName - * Class name of the service instance to start. - * @param InstanceName - * Instance name of the service instance to start. - * @param Argc - * Service instance argument count. May be 0. - * @param Argv - * Service instance argument array. May be NULL. - * @param HasSecret - * Whether the last argument in Argv is assumed to be a secret (e.g. password) or not. - * Secrets are passed to service instances through standard input rather than the command - * line. - * @param AllowImpersonation - * Allow caller to be impersonated by launcher. - * @param PLauncherError - * Receives the launcher error if any. This is always a Win32 error code. May not be NULL. - * @return - * STATUS_SUCCESS if the command is sent successfully to the launcher, even if the launcher - * returns an error. Other status codes indicate a communication error. Launcher errors are - * reported through PLauncherError. - */ -FSP_API NTSTATUS FspLaunchStartEx( - PWSTR ClassName, PWSTR InstanceName, ULONG Argc, PWSTR *Argv, - BOOLEAN HasSecret, - BOOLEAN AllowImpersonation, - PULONG PLauncherError); -/** - * Stop a service instance. - * - * @param ClassName - * Class name of the service instance to stop. - * @param InstanceName - * Instance name of the service instance to stop. - * @param PLauncherError - * Receives the launcher error if any. This is always a Win32 error code. May not be NULL. - * @return - * STATUS_SUCCESS if the command is sent successfully to the launcher, even if the launcher - * returns an error. Other status codes indicate a communication error. Launcher errors are - * reported through PLauncherError. - */ -FSP_API NTSTATUS FspLaunchStop( - PWSTR ClassName, PWSTR InstanceName, - PULONG PLauncherError); -/** - * Get information about a service instance. - * - * The information is a list of NULL-terminated strings: the class name of the service instance, - * the instance name of the service instance and the full command line used to start the service - * instance. - * - * @param ClassName - * Class name of the service instance to stop. - * @param InstanceName - * Instance name of the service instance to stop. - * @param Buffer - * Buffer that receives the command response. May be NULL. - * @param PSize - * Pointer to a ULONG. On input it contains the size of the Buffer. On output it - * contains the number of bytes transferred. May be NULL. - * @param PLauncherError - * Receives the launcher error if any. This is always a Win32 error code. May not be NULL. - * @return - * STATUS_SUCCESS if the command is sent successfully to the launcher, even if the launcher - * returns an error. Other status codes indicate a communication error. Launcher errors are - * reported through PLauncherError. - */ -FSP_API NTSTATUS FspLaunchGetInfo( - PWSTR ClassName, PWSTR InstanceName, - PWSTR Buffer, PULONG PSize, - PULONG PLauncherError); -/** - * List service instances. - * - * The information is a list of pairs of NULL-terminated strings. Each pair contains the class - * name and instance name of a service instance. All currently running service instances are - * listed. - * - * @param Buffer - * Buffer that receives the command response. May be NULL. - * @param PSize - * Pointer to a ULONG. On input it contains the size of the Buffer. On output it - * contains the number of bytes transferred. May be NULL. - * @param PLauncherError - * Receives the launcher error if any. This is always a Win32 error code. May not be NULL. - * @return - * STATUS_SUCCESS if the command is sent successfully to the launcher, even if the launcher - * returns an error. Other status codes indicate a communication error. Launcher errors are - * reported through PLauncherError. - */ -FSP_API NTSTATUS FspLaunchGetNameList( - PWSTR Buffer, PULONG PSize, - PULONG PLauncherError); - -/** - * @group Service Registry - */ -#pragma warning(push) -#pragma warning(disable:4200) /* zero-sized array in struct/union */ -/** - * Service registry record. - */ -typedef struct _FSP_LAUNCH_REG_RECORD -{ - PWSTR Agent; - PWSTR Executable; - PWSTR CommandLine; - PWSTR WorkDirectory; - PWSTR RunAs; - PWSTR Security; - PWSTR AuthPackage; - PWSTR Stderr; - PVOID Reserved0[4]; - ULONG JobControl; - ULONG Credentials; - ULONG AuthPackageId; - ULONG Recovery; - ULONG Reserved1[4]; - UINT8 Buffer[]; -} FSP_LAUNCH_REG_RECORD; -#pragma warning(pop) -/** - * Add/change/delete a service registry record. - * - * @param ClassName - * The service class name. - * @param Record - * The record to set in the registry. If NULL, the registry record is deleted. - * @return - * STATUS_SUCCESS or error code. - */ -FSP_API NTSTATUS FspLaunchRegSetRecord( - PWSTR ClassName, - const FSP_LAUNCH_REG_RECORD *Record); -/** - * Get a service registry record. - * - * @param ClassName - * The service class name. - * @param Agent - * The name of the agent that is retrieving the service record. This API matches - * the supplied Agent against the Agent in the service record and it only returns - * the record if they match. Pass NULL to match any Agent. - * @param PRecord - * Pointer to a record pointer. Memory for the service record will be allocated - * and a pointer to it will be stored at this address. This memory must be later - * freed using FspLaunchRegFreeRecord. - * @return - * STATUS_SUCCESS or error code. - * @see - * FspLaunchRegFreeRecord - */ -FSP_API NTSTATUS FspLaunchRegGetRecord( - PWSTR ClassName, PWSTR Agent, - FSP_LAUNCH_REG_RECORD **PRecord); -/** - * Free a service registry record. - * - * @param Record - * The service record to free. - * @see - * FspLaunchRegGetRecord - */ -FSP_API VOID FspLaunchRegFreeRecord( - FSP_LAUNCH_REG_RECORD *Record); - -#ifdef __cplusplus -} -#endif - -#endif +/** + * @file winfsp/launch.h + * WinFsp Launch API. + * + * 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. + * + * @copyright 2015-2025 Bill Zissimopoulos + */ +/* + * This file is part of WinFsp. + * + * You can redistribute it and/or modify it under the terms of the GNU + * General Public License version 3 as published by the Free Software + * Foundation. + * + * Licensees holding a valid commercial license may use this software + * in accordance with the commercial license agreement provided in + * conjunction with the software. The terms and conditions of any such + * commercial license agreement shall govern, supersede, and render + * ineffective any application of the GPLv3 license to this software, + * notwithstanding of any reference thereto in the software or + * associated repository. + */ + +#ifndef WINFSP_LAUNCH_H_INCLUDED +#define WINFSP_LAUNCH_H_INCLUDED + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define FSP_LAUNCH_REGKEY FSP_FSCTL_PRODUCT_REGKEY "\\Services" +#define FSP_LAUNCH_REGKEY_WOW64 FSP_FSCTL_PRODUCT_REGKEY_WOW64 +#define FSP_LAUNCH_FULL_REGKEY FSP_FSCTL_PRODUCT_FULL_REGKEY "\\Services" + +#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) + +/* + * The launcher named pipe SDDL gives full access to LocalSystem and Administrators and + * GENERIC_READ and FILE_WRITE_DATA access to Everyone. We are careful not to give the + * FILE_CREATE_PIPE_INSTANCE right to Everyone to disallow the creation of additional + * pipe instances. + */ +#define FSP_LAUNCH_PIPE_SDDL "O:SYG:SYD:P(A;;GA;;;SY)(A;;GA;;;BA)(A;;GRDCCR;;;WD)" + +/* + * The default service instance SDDL gives full access to LocalSystem and Administrators. + * The only possible service instance rights are as follows: + * RP SERVICE_START + * WP SERVICE_STOP + * LC SERVICE_QUERY_STATUS + * + * To create a service that can be started, stopped or queried by Everyone, you can set + * the following SDDL: + * D:P(A;;RPWPLC;;;WD) + */ +#define FSP_LAUNCH_SERVICE_DEFAULT_SDDL "D:P(A;;RPWPLC;;;SY)(A;;RPWPLC;;;BA)" +#define FSP_LAUNCH_SERVICE_WORLD_SDDL "D:P(A;;RPWPLC;;;WD)" + +enum +{ + FspLaunchCmdStart = 'S', /* requires: SERVICE_START */ + FspLaunchCmdStartWithSecret = 'X', /* requires: SERVICE_START */ + FspLaunchCmdStop = 'T', /* requires: SERVICE_STOP */ + FspLaunchCmdGetInfo = 'I', /* requires: SERVICE_QUERY_STATUS */ + FspLaunchCmdGetNameList = 'L', /* requires: none*/ + FspLaunchCmdDefineDosDevice = 'D', /* internal: do not use! */ + FspLaunchCmdQuit = 'Q', /* DEBUG version only */ +}; + +enum +{ + FspLaunchCmdSuccess = '$', + FspLaunchCmdFailure = '!', +}; + +/** + * @group Launch Control + */ +/** + * Call launcher pipe. + * + * This function is used to send a command to the launcher and receive a response. + * + * @param Command + * Launcher command to send. For example, the 'L' launcher command instructs + * the launcher to list all running service instances. + * @param Argc + * Command argument count. May be 0. + * @param Argv + * Command argument array. May be NULL. + * @param Argl + * Command argument length array. May be NULL. If this is NULL all command arguments + * are assumed to be NULL-terminated strings. It is also possible for specific arguments + * to be NULL-terminated; in this case pass -1 in the corresponding Argl position. + * @param Buffer + * Buffer that receives the command response. May be NULL. + * @param PSize + * Pointer to a ULONG. On input it contains the size of the Buffer. On output it + * contains the number of bytes transferred. May be NULL. + * @param PLauncherError + * Receives the launcher error if any. This is always a Win32 error code. May not be NULL. + * @return + * STATUS_SUCCESS if the command is sent successfully to the launcher, even if the launcher + * returns an error. Other status codes indicate a communication error. Launcher errors are + * reported through PLauncherError. + */ +FSP_API NTSTATUS FspLaunchCallLauncherPipe( + WCHAR Command, ULONG Argc, PWSTR *Argv, ULONG *Argl, + PWSTR Buffer, PULONG PSize, + PULONG PLauncherError); +/** + * Call launcher pipe. + * + * This function is used to send a command to the launcher and receive a response. + * + * @param Command + * Launcher command to send. For example, the 'L' launcher command instructs + * the launcher to list all running service instances. + * @param Argc + * Command argument count. May be 0. + * @param Argv + * Command argument array. May be NULL. + * @param Argl + * Command argument length array. May be NULL. If this is NULL all command arguments + * are assumed to be NULL-terminated strings. It is also possible for specific arguments + * to be NULL-terminated; in this case pass -1 in the corresponding Argl position. + * @param Buffer + * Buffer that receives the command response. May be NULL. + * @param PSize + * Pointer to a ULONG. On input it contains the size of the Buffer. On output it + * contains the number of bytes transferred. May be NULL. + * @param AllowImpersonation + * Allow caller to be impersonated by launcher. + * @param PLauncherError + * Receives the launcher error if any. This is always a Win32 error code. May not be NULL. + * @return + * STATUS_SUCCESS if the command is sent successfully to the launcher, even if the launcher + * returns an error. Other status codes indicate a communication error. Launcher errors are + * reported through PLauncherError. + */ +FSP_API NTSTATUS FspLaunchCallLauncherPipeEx( + WCHAR Command, ULONG Argc, PWSTR *Argv, ULONG *Argl, + PWSTR Buffer, PULONG PSize, + BOOLEAN AllowImpersonation, + PULONG PLauncherError); +/** + * Start a service instance. + * + * @param ClassName + * Class name of the service instance to start. + * @param InstanceName + * Instance name of the service instance to start. + * @param Argc + * Service instance argument count. May be 0. + * @param Argv + * Service instance argument array. May be NULL. + * @param HasSecret + * Whether the last argument in Argv is assumed to be a secret (e.g. password) or not. + * Secrets are passed to service instances through standard input rather than the command + * line. + * @param PLauncherError + * Receives the launcher error if any. This is always a Win32 error code. May not be NULL. + * @return + * STATUS_SUCCESS if the command is sent successfully to the launcher, even if the launcher + * returns an error. Other status codes indicate a communication error. Launcher errors are + * reported through PLauncherError. + */ +FSP_API NTSTATUS FspLaunchStart( + PWSTR ClassName, PWSTR InstanceName, ULONG Argc, PWSTR *Argv, + BOOLEAN HasSecret, + PULONG PLauncherError); +/** + * Start a service instance. + * + * @param ClassName + * Class name of the service instance to start. + * @param InstanceName + * Instance name of the service instance to start. + * @param Argc + * Service instance argument count. May be 0. + * @param Argv + * Service instance argument array. May be NULL. + * @param HasSecret + * Whether the last argument in Argv is assumed to be a secret (e.g. password) or not. + * Secrets are passed to service instances through standard input rather than the command + * line. + * @param AllowImpersonation + * Allow caller to be impersonated by launcher. + * @param PLauncherError + * Receives the launcher error if any. This is always a Win32 error code. May not be NULL. + * @return + * STATUS_SUCCESS if the command is sent successfully to the launcher, even if the launcher + * returns an error. Other status codes indicate a communication error. Launcher errors are + * reported through PLauncherError. + */ +FSP_API NTSTATUS FspLaunchStartEx( + PWSTR ClassName, PWSTR InstanceName, ULONG Argc, PWSTR *Argv, + BOOLEAN HasSecret, + BOOLEAN AllowImpersonation, + PULONG PLauncherError); +/** + * Stop a service instance. + * + * @param ClassName + * Class name of the service instance to stop. + * @param InstanceName + * Instance name of the service instance to stop. + * @param PLauncherError + * Receives the launcher error if any. This is always a Win32 error code. May not be NULL. + * @return + * STATUS_SUCCESS if the command is sent successfully to the launcher, even if the launcher + * returns an error. Other status codes indicate a communication error. Launcher errors are + * reported through PLauncherError. + */ +FSP_API NTSTATUS FspLaunchStop( + PWSTR ClassName, PWSTR InstanceName, + PULONG PLauncherError); +/** + * Get information about a service instance. + * + * The information is a list of NULL-terminated strings: the class name of the service instance, + * the instance name of the service instance and the full command line used to start the service + * instance. + * + * @param ClassName + * Class name of the service instance to stop. + * @param InstanceName + * Instance name of the service instance to stop. + * @param Buffer + * Buffer that receives the command response. May be NULL. + * @param PSize + * Pointer to a ULONG. On input it contains the size of the Buffer. On output it + * contains the number of bytes transferred. May be NULL. + * @param PLauncherError + * Receives the launcher error if any. This is always a Win32 error code. May not be NULL. + * @return + * STATUS_SUCCESS if the command is sent successfully to the launcher, even if the launcher + * returns an error. Other status codes indicate a communication error. Launcher errors are + * reported through PLauncherError. + */ +FSP_API NTSTATUS FspLaunchGetInfo( + PWSTR ClassName, PWSTR InstanceName, + PWSTR Buffer, PULONG PSize, + PULONG PLauncherError); +/** + * List service instances. + * + * The information is a list of pairs of NULL-terminated strings. Each pair contains the class + * name and instance name of a service instance. All currently running service instances are + * listed. + * + * @param Buffer + * Buffer that receives the command response. May be NULL. + * @param PSize + * Pointer to a ULONG. On input it contains the size of the Buffer. On output it + * contains the number of bytes transferred. May be NULL. + * @param PLauncherError + * Receives the launcher error if any. This is always a Win32 error code. May not be NULL. + * @return + * STATUS_SUCCESS if the command is sent successfully to the launcher, even if the launcher + * returns an error. Other status codes indicate a communication error. Launcher errors are + * reported through PLauncherError. + */ +FSP_API NTSTATUS FspLaunchGetNameList( + PWSTR Buffer, PULONG PSize, + PULONG PLauncherError); + +/** + * @group Service Registry + */ +#pragma warning(push) +#pragma warning(disable:4200) /* zero-sized array in struct/union */ +/** + * Service registry record. + */ +typedef struct _FSP_LAUNCH_REG_RECORD +{ + PWSTR Agent; + PWSTR Executable; + PWSTR CommandLine; + PWSTR WorkDirectory; + PWSTR RunAs; + PWSTR Security; + PWSTR AuthPackage; + PWSTR Stderr; + PVOID Reserved0[4]; + ULONG JobControl; + ULONG Credentials; + ULONG AuthPackageId; + ULONG Recovery; + ULONG Reserved1[4]; + UINT8 Buffer[]; +} FSP_LAUNCH_REG_RECORD; +#pragma warning(pop) +/** + * Add/change/delete a service registry record. + * + * @param ClassName + * The service class name. + * @param Record + * The record to set in the registry. If NULL, the registry record is deleted. + * @return + * STATUS_SUCCESS or error code. + */ +FSP_API NTSTATUS FspLaunchRegSetRecord( + PWSTR ClassName, + const FSP_LAUNCH_REG_RECORD *Record); +/** + * Get a service registry record. + * + * @param ClassName + * The service class name. + * @param Agent + * The name of the agent that is retrieving the service record. This API matches + * the supplied Agent against the Agent in the service record and it only returns + * the record if they match. Pass NULL to match any Agent. + * @param PRecord + * Pointer to a record pointer. Memory for the service record will be allocated + * and a pointer to it will be stored at this address. This memory must be later + * freed using FspLaunchRegFreeRecord. + * @return + * STATUS_SUCCESS or error code. + * @see + * FspLaunchRegFreeRecord + */ +FSP_API NTSTATUS FspLaunchRegGetRecord( + PWSTR ClassName, PWSTR Agent, + FSP_LAUNCH_REG_RECORD **PRecord); +/** + * Free a service registry record. + * + * @param Record + * The service record to free. + * @see + * FspLaunchRegGetRecord + */ +FSP_API VOID FspLaunchRegFreeRecord( + FSP_LAUNCH_REG_RECORD *Record); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/support/3rd_party/winfsp-2.0/inc/winfsp/winfsp.h b/support/3rd_party/winfsp-2.1/inc/winfsp/winfsp.h similarity index 97% rename from support/3rd_party/winfsp-2.0/inc/winfsp/winfsp.h rename to support/3rd_party/winfsp-2.1/inc/winfsp/winfsp.h index 036f55f5..c0cd62ca 100644 --- a/support/3rd_party/winfsp-2.0/inc/winfsp/winfsp.h +++ b/support/3rd_party/winfsp-2.1/inc/winfsp/winfsp.h @@ -1,2240 +1,2240 @@ -/** - * @file winfsp/winfsp.h - * WinFsp User Mode API. - * - * 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. - * - * @copyright 2015-2022 Bill Zissimopoulos - */ -/* - * This file is part of WinFsp. - * - * You can redistribute it and/or modify it under the terms of the GNU - * General Public License version 3 as published by the Free Software - * Foundation. - * - * Licensees holding a valid commercial license may use this software - * in accordance with the commercial license agreement provided in - * conjunction with the software. The terms and conditions of any such - * commercial license agreement shall govern, supersede, and render - * ineffective any application of the GPLv3 license to this software, - * notwithstanding of any reference thereto in the software or - * associated repository. - */ - -#ifndef WINFSP_WINFSP_H_INCLUDED -#define WINFSP_WINFSP_H_INCLUDED - -#define WIN32_NO_STATUS -#include -#undef WIN32_NO_STATUS -#include -#pragma warning(push) -#pragma warning(disable:4005) /* macro redefinition */ -#include -#pragma warning(pop) - -#if defined(WINFSP_DLL_INTERNAL) -#define FSP_API __declspec(dllexport) -#else -#define FSP_API __declspec(dllimport) -#endif - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * The REPARSE_DATA_BUFFER definitions appear to be missing from the user mode headers. - */ -#if !defined(SYMLINK_FLAG_RELATIVE) -#define SYMLINK_FLAG_RELATIVE 1 -#define REPARSE_DATA_BUFFER_HEADER_SIZE FIELD_OFFSET(REPARSE_DATA_BUFFER, GenericReparseBuffer) -typedef struct _REPARSE_DATA_BUFFER -{ - ULONG ReparseTag; - USHORT ReparseDataLength; - USHORT Reserved; - union - { - struct - { - USHORT SubstituteNameOffset; - USHORT SubstituteNameLength; - USHORT PrintNameOffset; - USHORT PrintNameLength; - ULONG Flags; - WCHAR PathBuffer[1]; - } SymbolicLinkReparseBuffer; - struct - { - USHORT SubstituteNameOffset; - USHORT SubstituteNameLength; - USHORT PrintNameOffset; - USHORT PrintNameLength; - WCHAR PathBuffer[1]; - } MountPointReparseBuffer; - struct - { - UCHAR DataBuffer[1]; - } GenericReparseBuffer; - } DUMMYUNIONNAME; -} REPARSE_DATA_BUFFER, *PREPARSE_DATA_BUFFER; -#endif - -/* - * The FILE_FULL_EA_INFORMATION definitions are missing from the user mode headers. - */ -#if !defined(FILE_NEED_EA) -#define FILE_NEED_EA 0x00000080 -#endif -#if !defined(__MINGW32__) -typedef struct _FILE_FULL_EA_INFORMATION -{ - ULONG NextEntryOffset; - UCHAR Flags; - UCHAR EaNameLength; - USHORT EaValueLength; - CHAR EaName[1]; -} FILE_FULL_EA_INFORMATION, *PFILE_FULL_EA_INFORMATION; -#endif - -/** - * @group File System - * - * A user mode file system is a program that uses the WinFsp API to expose a file system to - * Windows. The user mode file system must implement the operations in FSP_FILE_SYSTEM_INTERFACE, - * create a file system object using FspFileSystemCreate and start its dispatcher using - * FspFileSystemStartDispatcher. At that point it will start receiving file system requests on the - * FSP_FILE_SYSTEM_INTERFACE operations. - */ -typedef struct _FSP_FILE_SYSTEM FSP_FILE_SYSTEM; -typedef NTSTATUS FSP_FILE_SYSTEM_OPERATION_GUARD(FSP_FILE_SYSTEM *, - FSP_FSCTL_TRANSACT_REQ *, FSP_FSCTL_TRANSACT_RSP *); -typedef NTSTATUS FSP_FILE_SYSTEM_OPERATION(FSP_FILE_SYSTEM *, - FSP_FSCTL_TRANSACT_REQ *, FSP_FSCTL_TRANSACT_RSP *); -/** - * User mode file system locking strategy. - * - * Two concurrency models are provided: - * - * 1. A fine-grained concurrency model where file system NAMESPACE accesses - * are guarded using an exclusive-shared (read-write) lock. File I/O is not - * guarded and concurrent reads/writes/etc. are possible. [Note that the FSD - * will still apply an exclusive-shared lock PER INDIVIDUAL FILE, but it will - * not limit I/O operations for different files.] - * - * The fine-grained concurrency model applies the exclusive-shared lock as - * follows: - *
      - *
    • EXCL: SetVolumeLabel, Flush(Volume), - * Create, Cleanup(Delete), SetInformation(Rename)
    • - *
    • SHRD: GetVolumeInfo, Open, SetInformation(Disposition), ReadDirectory
    • - *
    • NONE: all other operations
    • - *
    - * - * 2. A coarse-grained concurrency model where all file system accesses are - * guarded by a mutually exclusive lock. - * - * @see FspFileSystemSetOperationGuardStrategy - */ -typedef enum -{ - FSP_FILE_SYSTEM_OPERATION_GUARD_STRATEGY_FINE = 0, - FSP_FILE_SYSTEM_OPERATION_GUARD_STRATEGY_COARSE, -} FSP_FILE_SYSTEM_OPERATION_GUARD_STRATEGY; -enum -{ - FspCleanupDelete = 0x01, - FspCleanupSetAllocationSize = 0x02, - FspCleanupSetArchiveBit = 0x10, - FspCleanupSetLastAccessTime = 0x20, - FspCleanupSetLastWriteTime = 0x40, - FspCleanupSetChangeTime = 0x80, -}; -/** - * @class FSP_FILE_SYSTEM - * File system interface. - * - * The operations in this interface must be implemented by the user mode - * file system. Not all operations need be implemented. For example, - * a user mode file system that does not wish to support reparse points, - * need not implement the reparse point operations. - * - * Most of the operations accept a FileContext parameter. This parameter - * has different meanings depending on the value of the FSP_FSCTL_VOLUME_PARAMS - * flags UmFileContextIsUserContext2 and UmFileContextIsFullContext. - * - * There are three cases to consider: - *
      - *
    • When both of these flags are unset (default), the FileContext parameter - * represents the file node. The file node is a void pointer (or an integer - * that can fit in a pointer) that is used to uniquely identify an open file. - * Opening the same file name should always yield the same file node value - * for as long as the file with that name remains open anywhere in the system. - *
    • - *
    • When the UmFileContextIsUserContext2 is set, the FileContext parameter - * represents the file descriptor. The file descriptor is a void pointer (or - * an integer that can fit in a pointer) that is used to identify an open - * instance of a file. Opening the same file name may yield a different file - * descriptor. - *
    • - *
    • When the UmFileContextIsFullContext is set, the FileContext parameter - * is a pointer to a FSP_FSCTL_TRANSACT_FULL_CONTEXT. This allows a user mode - * file system to access the low-level UserContext and UserContext2 values. - * The UserContext is used to store the file node and the UserContext2 is - * used to store the file descriptor for an open file. - *
    • - *
    - */ -typedef struct _FSP_FILE_SYSTEM_INTERFACE -{ - /** - * Get volume information. - * - * @param FileSystem - * The file system on which this request is posted. - * @param VolumeInfo [out] - * Pointer to a structure that will receive the volume information on successful return - * from this call. - * @return - * STATUS_SUCCESS or error code. - */ - NTSTATUS (*GetVolumeInfo)(FSP_FILE_SYSTEM *FileSystem, - FSP_FSCTL_VOLUME_INFO *VolumeInfo); - /** - * Set volume label. - * - * @param FileSystem - * The file system on which this request is posted. - * @param VolumeLabel - * The new label for the volume. - * @param VolumeInfo [out] - * Pointer to a structure that will receive the volume information on successful return - * from this call. - * @return - * STATUS_SUCCESS or error code. - */ - NTSTATUS (*SetVolumeLabel)(FSP_FILE_SYSTEM *FileSystem, - PWSTR VolumeLabel, - FSP_FSCTL_VOLUME_INFO *VolumeInfo); - /** - * Get file or directory attributes and security descriptor given a file name. - * - * @param FileSystem - * The file system on which this request is posted. - * @param FileName - * The name of the file or directory to get the attributes and security descriptor for. - * @param PFileAttributes - * Pointer to a memory location that will receive the file attributes on successful return - * from this call. May be NULL. - * - * If this call returns STATUS_REPARSE, the file system MAY place here the index of the - * first reparse point within FileName. The file system MAY also leave this at its default - * value of 0. - * @param SecurityDescriptor - * Pointer to a buffer that will receive the file security descriptor on successful return - * from this call. May be NULL. - * @param PSecurityDescriptorSize [in,out] - * Pointer to the security descriptor buffer size. On input it contains the size of the - * security descriptor buffer. On output it will contain the actual size of the security - * descriptor copied into the security descriptor buffer. May be NULL. - * @return - * STATUS_SUCCESS, STATUS_REPARSE or error code. - * - * STATUS_REPARSE should be returned by file systems that support reparse points when - * they encounter a FileName that contains reparse points anywhere but the final path - * component. - */ - NTSTATUS (*GetSecurityByName)(FSP_FILE_SYSTEM *FileSystem, - PWSTR FileName, PUINT32 PFileAttributes/* or ReparsePointIndex */, - PSECURITY_DESCRIPTOR SecurityDescriptor, SIZE_T *PSecurityDescriptorSize); - /** - * Create new file or directory. - * - * @param FileSystem - * The file system on which this request is posted. - * @param FileName - * The name of the file or directory to be created. - * @param CreateOptions - * Create options for this request. This parameter has the same meaning as the - * CreateOptions parameter of the NtCreateFile API. User mode file systems should typically - * only be concerned with the flag FILE_DIRECTORY_FILE, which is an instruction to create a - * directory rather than a file. Some file systems may also want to pay attention to the - * FILE_NO_INTERMEDIATE_BUFFERING and FILE_WRITE_THROUGH flags, although these are - * typically handled by the FSD component. - * @param GrantedAccess - * Determines the specific access rights that have been granted for this request. Upon - * receiving this call all access checks have been performed and the user mode file system - * need not perform any additional checks. However this parameter may be useful to a user - * mode file system; for example the WinFsp-FUSE layer uses this parameter to determine - * which flags to use in its POSIX open() call. - * @param FileAttributes - * File attributes to apply to the newly created file or directory. - * @param SecurityDescriptor - * Security descriptor to apply to the newly created file or directory. This security - * descriptor will always be in self-relative format. Its length can be retrieved using the - * Windows GetSecurityDescriptorLength API. Will be NULL for named streams. - * @param AllocationSize - * Allocation size for the newly created file. - * @param PFileContext [out] - * Pointer that will receive the file context on successful return from this call. - * @param FileInfo [out] - * Pointer to a structure that will receive the file information on successful return - * from this call. This information includes file attributes, file times, etc. - * @return - * STATUS_SUCCESS or error code. - */ - NTSTATUS (*Create)(FSP_FILE_SYSTEM *FileSystem, - PWSTR FileName, UINT32 CreateOptions, UINT32 GrantedAccess, - UINT32 FileAttributes, PSECURITY_DESCRIPTOR SecurityDescriptor, UINT64 AllocationSize, - PVOID *PFileContext, FSP_FSCTL_FILE_INFO *FileInfo); - /** - * Open a file or directory. - * - * @param FileSystem - * The file system on which this request is posted. - * @param FileName - * The name of the file or directory to be opened. - * @param CreateOptions - * Create options for this request. This parameter has the same meaning as the - * CreateOptions parameter of the NtCreateFile API. User mode file systems typically - * do not need to do anything special with respect to this parameter. Some file systems may - * also want to pay attention to the FILE_NO_INTERMEDIATE_BUFFERING and FILE_WRITE_THROUGH - * flags, although these are typically handled by the FSD component. - * @param GrantedAccess - * Determines the specific access rights that have been granted for this request. Upon - * receiving this call all access checks have been performed and the user mode file system - * need not perform any additional checks. However this parameter may be useful to a user - * mode file system; for example the WinFsp-FUSE layer uses this parameter to determine - * which flags to use in its POSIX open() call. - * @param PFileContext [out] - * Pointer that will receive the file context on successful return from this call. - * @param FileInfo [out] - * Pointer to a structure that will receive the file information on successful return - * from this call. This information includes file attributes, file times, etc. - * @return - * STATUS_SUCCESS or error code. - */ - NTSTATUS (*Open)(FSP_FILE_SYSTEM *FileSystem, - PWSTR FileName, UINT32 CreateOptions, UINT32 GrantedAccess, - PVOID *PFileContext, FSP_FSCTL_FILE_INFO *FileInfo); - /** - * Overwrite a file. - * - * @param FileSystem - * The file system on which this request is posted. - * @param FileContext - * The file context of the file to overwrite. - * @param FileAttributes - * File attributes to apply to the overwritten file. - * @param ReplaceFileAttributes - * When TRUE the existing file attributes should be replaced with the new ones. - * When FALSE the existing file attributes should be merged (or'ed) with the new ones. - * @param AllocationSize - * Allocation size for the overwritten file. - * @param FileInfo [out] - * Pointer to a structure that will receive the file information on successful return - * from this call. This information includes file attributes, file times, etc. - * @return - * STATUS_SUCCESS or error code. - */ - NTSTATUS (*Overwrite)(FSP_FILE_SYSTEM *FileSystem, - PVOID FileContext, UINT32 FileAttributes, BOOLEAN ReplaceFileAttributes, UINT64 AllocationSize, - FSP_FSCTL_FILE_INFO *FileInfo); - /** - * Cleanup a file. - * - * When CreateFile is used to open or create a file the kernel creates a kernel mode file - * object (type FILE_OBJECT) and a handle for it, which it returns to user-mode. The handle may - * be duplicated (using DuplicateHandle), but all duplicate handles always refer to the same - * file object. When all handles for a particular file object get closed (using CloseHandle) - * the system sends a Cleanup request to the file system. - * - * There will be a Cleanup operation for every Create or Open operation posted to the user mode - * file system. However the Cleanup operation is not the final close operation on a file. - * The file system must be ready to receive additional operations until close time. This is true - * even when the file is being deleted! - * - * The Flags parameter contains information about the cleanup operation: - *
      - *
    • FspCleanupDelete - - * An important function of the Cleanup operation is to complete a delete operation. Deleting - * a file or directory in Windows is a three-stage process where the file is first opened, then - * tested to see if the delete can proceed and if the answer is positive the file is then - * deleted during Cleanup. - * - * If the file system supports POSIX unlink (FSP_FSCTL_VOLUME_PARAMS :: - * SupportsPosixUnlinkRename), then a Cleanup / FspCleanupDelete operation may arrive while - * there are other open file handles for this particular file node. If the file system does not - * support POSIX unlink, then a Cleanup / FspCleanupDelete operation will always be the last - * outstanding cleanup for this particular file node. - *
    • - *
    • FspCleanupSetAllocationSize - - * The NTFS and FAT file systems reset a file's allocation size when they receive the last - * outstanding cleanup for a particular file node. User mode file systems that implement - * allocation size and wish to duplicate the NTFS and FAT behavior can use this flag. - *
    • - *
    • - * FspCleanupSetArchiveBit - - * File systems that support the archive bit should set the file node's archive bit when this - * flag is set. - *
    • - *
    • FspCleanupSetLastAccessTime, FspCleanupSetLastWriteTime, FspCleanupSetChangeTime - File - * systems should set the corresponding file time when each one of these flags is set. Note that - * updating the last access time is expensive and a file system may choose to not implement it. - *
    - * - * There is no way to report failure of this operation. This is a Windows limitation. - * - * As an optimization a file system may specify the FSP_FSCTL_VOLUME_PARAMS :: - * PostCleanupWhenModifiedOnly flag. In this case the FSD will only post Cleanup requests when - * the file was modified/deleted. - * - * @param FileSystem - * The file system on which this request is posted. - * @param FileContext - * The file context of the file or directory to cleanup. - * @param FileName - * The name of the file or directory to cleanup. Sent only when a Delete is requested. - * @param Flags - * These flags determine whether the file was modified and whether to delete the file. - * @see - * Close - * CanDelete - * SetDelete - */ - VOID (*Cleanup)(FSP_FILE_SYSTEM *FileSystem, - PVOID FileContext, PWSTR FileName, ULONG Flags); - /** - * Close a file. - * - * @param FileSystem - * The file system on which this request is posted. - * @param FileContext - * The file context of the file or directory to be closed. - */ - VOID (*Close)(FSP_FILE_SYSTEM *FileSystem, - PVOID FileContext); - /** - * Read a file. - * - * @param FileSystem - * The file system on which this request is posted. - * @param FileContext - * The file context of the file to be read. - * @param Buffer - * Pointer to a buffer that will receive the results of the read operation. - * @param Offset - * Offset within the file to read from. - * @param Length - * Length of data to read. - * @param PBytesTransferred [out] - * Pointer to a memory location that will receive the actual number of bytes read. - * @return - * STATUS_SUCCESS or error code. STATUS_PENDING is supported allowing for asynchronous - * operation. - */ - NTSTATUS (*Read)(FSP_FILE_SYSTEM *FileSystem, - PVOID FileContext, PVOID Buffer, UINT64 Offset, ULONG Length, - PULONG PBytesTransferred); - /** - * Write a file. - * - * @param FileSystem - * The file system on which this request is posted. - * @param FileContext - * The file context of the file to be written. - * @param Buffer - * Pointer to a buffer that contains the data to write. - * @param Offset - * Offset within the file to write to. - * @param Length - * Length of data to write. - * @param WriteToEndOfFile - * When TRUE the file system must write to the current end of file. In this case the Offset - * parameter will contain the value -1. - * @param ConstrainedIo - * When TRUE the file system must not extend the file (i.e. change the file size). - * @param PBytesTransferred [out] - * Pointer to a memory location that will receive the actual number of bytes written. - * @param FileInfo [out] - * Pointer to a structure that will receive the file information on successful return - * from this call. This information includes file attributes, file times, etc. - * @return - * STATUS_SUCCESS or error code. STATUS_PENDING is supported allowing for asynchronous - * operation. - */ - NTSTATUS (*Write)(FSP_FILE_SYSTEM *FileSystem, - PVOID FileContext, PVOID Buffer, UINT64 Offset, ULONG Length, - BOOLEAN WriteToEndOfFile, BOOLEAN ConstrainedIo, - PULONG PBytesTransferred, FSP_FSCTL_FILE_INFO *FileInfo); - /** - * Flush a file or volume. - * - * Note that the FSD will also flush all file/volume caches prior to invoking this operation. - * - * @param FileSystem - * The file system on which this request is posted. - * @param FileContext - * The file context of the file to be flushed. When NULL the whole volume is being flushed. - * @param FileInfo [out] - * Pointer to a structure that will receive the file information on successful return - * from this call. This information includes file attributes, file times, etc. Used when - * flushing file (not volume). - * @return - * STATUS_SUCCESS or error code. - */ - NTSTATUS (*Flush)(FSP_FILE_SYSTEM *FileSystem, - PVOID FileContext, - FSP_FSCTL_FILE_INFO *FileInfo); - /** - * Get file or directory information. - * - * @param FileSystem - * The file system on which this request is posted. - * @param FileContext - * The file context of the file or directory to get information for. - * @param FileInfo [out] - * Pointer to a structure that will receive the file information on successful return - * from this call. This information includes file attributes, file times, etc. - * @return - * STATUS_SUCCESS or error code. - */ - NTSTATUS (*GetFileInfo)(FSP_FILE_SYSTEM *FileSystem, - PVOID FileContext, - FSP_FSCTL_FILE_INFO *FileInfo); - /** - * Set file or directory basic information. - * - * @param FileSystem - * The file system on which this request is posted. - * @param FileContext - * The file context of the file or directory to set information for. - * @param FileAttributes - * File attributes to apply to the file or directory. If the value INVALID_FILE_ATTRIBUTES - * is sent, the file attributes should not be changed. - * @param CreationTime - * Creation time to apply to the file or directory. If the value 0 is sent, the creation - * time should not be changed. - * @param LastAccessTime - * Last access time to apply to the file or directory. If the value 0 is sent, the last - * access time should not be changed. - * @param LastWriteTime - * Last write time to apply to the file or directory. If the value 0 is sent, the last - * write time should not be changed. - * @param ChangeTime - * Change time to apply to the file or directory. If the value 0 is sent, the change time - * should not be changed. - * @param FileInfo [out] - * Pointer to a structure that will receive the file information on successful return - * from this call. This information includes file attributes, file times, etc. - * @return - * STATUS_SUCCESS or error code. - */ - NTSTATUS (*SetBasicInfo)(FSP_FILE_SYSTEM *FileSystem, - PVOID FileContext, UINT32 FileAttributes, - UINT64 CreationTime, UINT64 LastAccessTime, UINT64 LastWriteTime, UINT64 ChangeTime, - FSP_FSCTL_FILE_INFO *FileInfo); - /** - * Set file/allocation size. - * - * This function is used to change a file's sizes. Windows file systems maintain two kinds - * of sizes: the file size is where the End Of File (EOF) is, and the allocation size is the - * actual size that a file takes up on the "disk". - * - * The rules regarding file/allocation size are: - *
      - *
    • Allocation size must always be aligned to the allocation unit boundary. The allocation - * unit is the product (UINT64)SectorSize * (UINT64)SectorsPerAllocationUnit from - * the FSP_FSCTL_VOLUME_PARAMS structure. The FSD will always send properly aligned allocation - * sizes when setting the allocation size.
    • - *
    • Allocation size is always greater or equal to the file size.
    • - *
    • A file size of more than the current allocation size will also extend the allocation - * size to the next allocation unit boundary.
    • - *
    • An allocation size of less than the current file size should also truncate the current - * file size.
    • - *
    - * - * @param FileSystem - * The file system on which this request is posted. - * @param FileContext - * The file context of the file to set the file/allocation size for. - * @param NewSize - * New file/allocation size to apply to the file. - * @param SetAllocationSize - * If TRUE, then the allocation size is being set. if FALSE, then the file size is being set. - * @param FileInfo [out] - * Pointer to a structure that will receive the file information on successful return - * from this call. This information includes file attributes, file times, etc. - * @return - * STATUS_SUCCESS or error code. - */ - NTSTATUS (*SetFileSize)(FSP_FILE_SYSTEM *FileSystem, - PVOID FileContext, UINT64 NewSize, BOOLEAN SetAllocationSize, - FSP_FSCTL_FILE_INFO *FileInfo); - /** - * Determine whether a file or directory can be deleted. - * - * This function tests whether a file or directory can be safely deleted. This function does - * not need to perform access checks, but may performs tasks such as check for empty - * directories, etc. - * - * This function should NEVER delete the file or directory in question. Deletion should - * happen during Cleanup with the FspCleanupDelete flag set. - * - * This function gets called when Win32 API's such as DeleteFile or RemoveDirectory are used. - * It does not get called when a file or directory is opened with FILE_DELETE_ON_CLOSE. - * - * NOTE: If both CanDelete and SetDelete are defined, SetDelete takes precedence. However - * most file systems need only implement the CanDelete operation. - * - * @param FileSystem - * The file system on which this request is posted. - * @param FileContext - * The file context of the file or directory to test for deletion. - * @param FileName - * The name of the file or directory to test for deletion. - * @return - * STATUS_SUCCESS or error code. - * @see - * Cleanup - * SetDelete - */ - NTSTATUS (*CanDelete)(FSP_FILE_SYSTEM *FileSystem, - PVOID FileContext, PWSTR FileName); - /** - * Renames a file or directory. - * - * The kernel mode FSD provides certain guarantees prior to posting a rename operation: - *
      - *
    • A file cannot be renamed if a file with the same name exists and has open handles.
    • - *
    • A directory cannot be renamed if it or any of its subdirectories contains a file that - * has open handles.
    • - *
    - * - * @param FileSystem - * The file system on which this request is posted. - * @param FileContext - * The file context of the file or directory to be renamed. - * @param FileName - * The current name of the file or directory to rename. - * @param NewFileName - * The new name for the file or directory. - * @param ReplaceIfExists - * Whether to replace a file that already exists at NewFileName. - * @return - * STATUS_SUCCESS or error code. - */ - NTSTATUS (*Rename)(FSP_FILE_SYSTEM *FileSystem, - PVOID FileContext, - PWSTR FileName, PWSTR NewFileName, BOOLEAN ReplaceIfExists); - /** - * Get file or directory security descriptor. - * - * @param FileSystem - * The file system on which this request is posted. - * @param FileContext - * The file context of the file or directory to get the security descriptor for. - * @param SecurityDescriptor - * Pointer to a buffer that will receive the file security descriptor on successful return - * from this call. May be NULL. - * @param PSecurityDescriptorSize [in,out] - * Pointer to the security descriptor buffer size. On input it contains the size of the - * security descriptor buffer. On output it will contain the actual size of the security - * descriptor copied into the security descriptor buffer. Cannot be NULL. - * @return - * STATUS_SUCCESS or error code. - */ - NTSTATUS (*GetSecurity)(FSP_FILE_SYSTEM *FileSystem, - PVOID FileContext, - PSECURITY_DESCRIPTOR SecurityDescriptor, SIZE_T *PSecurityDescriptorSize); - /** - * Set file or directory security descriptor. - * - * @param FileSystem - * The file system on which this request is posted. - * @param FileContext - * The file context of the file or directory to set the security descriptor for. - * @param SecurityInformation - * Describes what parts of the file or directory security descriptor should - * be modified. - * @param ModificationDescriptor - * Describes the modifications to apply to the file or directory security descriptor. - * @return - * STATUS_SUCCESS or error code. - * @see - * FspSetSecurityDescriptor - * FspDeleteSecurityDescriptor - */ - NTSTATUS (*SetSecurity)(FSP_FILE_SYSTEM *FileSystem, - PVOID FileContext, - SECURITY_INFORMATION SecurityInformation, PSECURITY_DESCRIPTOR ModificationDescriptor); - /** - * Read a directory. - * - * @param FileSystem - * The file system on which this request is posted. - * @param FileContext - * The file context of the directory to be read. - * @param Pattern - * The pattern to match against files in this directory. Can be NULL. The file system - * can choose to ignore this parameter as the FSD will always perform its own pattern - * matching on the returned results. - * @param Marker - * A file name that marks where in the directory to start reading. Files with names - * that are greater than (not equal to) this marker (in the directory order determined - * by the file system) should be returned. Can be NULL. - * @param Buffer - * Pointer to a buffer that will receive the results of the read operation. - * @param Length - * Length of data to read. - * @param PBytesTransferred [out] - * Pointer to a memory location that will receive the actual number of bytes read. - * @return - * STATUS_SUCCESS or error code. STATUS_PENDING is supported allowing for asynchronous - * operation. - * @see - * FspFileSystemAddDirInfo - */ - NTSTATUS (*ReadDirectory)(FSP_FILE_SYSTEM *FileSystem, - PVOID FileContext, PWSTR Pattern, PWSTR Marker, - PVOID Buffer, ULONG Length, PULONG PBytesTransferred); - /** - * Resolve reparse points. - * - * Reparse points are a general mechanism for attaching special behavior to files. - * A file or directory can contain a reparse point. A reparse point is data that has - * special meaning to the file system, Windows or user applications. For example, NTFS - * and Windows use reparse points to implement symbolic links. As another example, - * a particular file system may use reparse points to emulate UNIX FIFO's. - * - * This function is expected to resolve as many reparse points as possible. If a reparse - * point is encountered that is not understood by the file system further reparse point - * resolution should stop; the reparse point data should be returned to the FSD with status - * STATUS_REPARSE/reparse-tag. If a reparse point (symbolic link) is encountered that is - * understood by the file system but points outside it, the reparse point should be - * resolved, but further reparse point resolution should stop; the resolved file name - * should be returned to the FSD with status STATUS_REPARSE/IO_REPARSE. - * - * @param FileSystem - * The file system on which this request is posted. - * @param FileName - * The name of the file or directory to have its reparse points resolved. - * @param ReparsePointIndex - * The index of the first reparse point within FileName. - * @param ResolveLastPathComponent - * If FALSE, the last path component of FileName should not be resolved, even - * if it is a reparse point that can be resolved. If TRUE, all path components - * should be resolved if possible. - * @param PIoStatus - * Pointer to storage that will receive the status to return to the FSD. When - * this function succeeds it must set PIoStatus->Status to STATUS_REPARSE and - * PIoStatus->Information to either IO_REPARSE or the reparse tag. - * @param Buffer - * Pointer to a buffer that will receive the resolved file name (IO_REPARSE) or - * reparse data (reparse tag). If the function returns a file name, it should - * not be NULL terminated. - * @param PSize [in,out] - * Pointer to the buffer size. On input it contains the size of the buffer. - * On output it will contain the actual size of data copied. - * @return - * STATUS_REPARSE or error code. - */ - NTSTATUS (*ResolveReparsePoints)(FSP_FILE_SYSTEM *FileSystem, - PWSTR FileName, UINT32 ReparsePointIndex, BOOLEAN ResolveLastPathComponent, - PIO_STATUS_BLOCK PIoStatus, PVOID Buffer, PSIZE_T PSize); - /** - * Get reparse point. - * - * @param FileSystem - * The file system on which this request is posted. - * @param FileContext - * The file context of the reparse point. - * @param FileName - * The file name of the reparse point. - * @param Buffer - * Pointer to a buffer that will receive the results of this operation. If - * the function returns a symbolic link path, it should not be NULL terminated. - * @param PSize [in,out] - * Pointer to the buffer size. On input it contains the size of the buffer. - * On output it will contain the actual size of data copied. - * @return - * STATUS_SUCCESS or error code. - * @see - * SetReparsePoint - */ - NTSTATUS (*GetReparsePoint)(FSP_FILE_SYSTEM *FileSystem, - PVOID FileContext, - PWSTR FileName, PVOID Buffer, PSIZE_T PSize); - /** - * Set reparse point. - * - * @param FileSystem - * The file system on which this request is posted. - * @param FileContext - * The file context of the reparse point. - * @param FileName - * The file name of the reparse point. - * @param Buffer - * Pointer to a buffer that contains the data for this operation. If this buffer - * contains a symbolic link path, it should not be assumed to be NULL terminated. - * @param Size - * Size of data to write. - * @return - * STATUS_SUCCESS or error code. - * @see - * GetReparsePoint - */ - NTSTATUS (*SetReparsePoint)(FSP_FILE_SYSTEM *FileSystem, - PVOID FileContext, - PWSTR FileName, PVOID Buffer, SIZE_T Size); - /** - * Delete reparse point. - * - * @param FileSystem - * The file system on which this request is posted. - * @param FileContext - * The file context of the reparse point. - * @param FileName - * The file name of the reparse point. - * @param Buffer - * Pointer to a buffer that contains the data for this operation. - * @param Size - * Size of data to write. - * @return - * STATUS_SUCCESS or error code. - */ - NTSTATUS (*DeleteReparsePoint)(FSP_FILE_SYSTEM *FileSystem, - PVOID FileContext, - PWSTR FileName, PVOID Buffer, SIZE_T Size); - /** - * Get named streams information. - * - * @param FileSystem - * The file system on which this request is posted. - * @param FileContext - * The file context of the file or directory to get stream information for. - * @param Buffer - * Pointer to a buffer that will receive the stream information. - * @param Length - * Length of buffer. - * @param PBytesTransferred [out] - * Pointer to a memory location that will receive the actual number of bytes stored. - * @return - * STATUS_SUCCESS or error code. - * @see - * FspFileSystemAddStreamInfo - */ - NTSTATUS (*GetStreamInfo)(FSP_FILE_SYSTEM *FileSystem, - PVOID FileContext, PVOID Buffer, ULONG Length, - PULONG PBytesTransferred); - /** - * Get directory information for a single file or directory within a parent directory. - * - * @param FileSystem - * The file system on which this request is posted. - * @param FileContext - * The file context of the parent directory. - * @param FileName - * The name of the file or directory to get information for. This name is relative - * to the parent directory and is a single path component. - * @param DirInfo [out] - * Pointer to a structure that will receive the directory information on successful - * return from this call. This information includes the file name, but also file - * attributes, file times, etc. - * @return - * STATUS_SUCCESS or error code. - */ - NTSTATUS (*GetDirInfoByName)(FSP_FILE_SYSTEM *FileSystem, - PVOID FileContext, PWSTR FileName, - FSP_FSCTL_DIR_INFO *DirInfo); - /** - * Process control code. - * - * This function is called when a program uses the DeviceIoControl API. - * - * @param FileSystem - * The file system on which this request is posted. - * @param FileContext - * The file context of the file or directory to be controled. - * @param ControlCode - * The control code for the operation. This code must have a DeviceType with bit - * 0x8000 set and must have a TransferType of METHOD_BUFFERED. - * @param InputBuffer - * Pointer to a buffer that contains the input data. - * @param InputBufferLength - * Input data length. - * @param OutputBuffer - * Pointer to a buffer that will receive the output data. - * @param OutputBufferLength - * Output data length. - * @param PBytesTransferred [out] - * Pointer to a memory location that will receive the actual number of bytes transferred. - * @return - * STATUS_SUCCESS or error code. - */ - NTSTATUS (*Control)(FSP_FILE_SYSTEM *FileSystem, - PVOID FileContext, UINT32 ControlCode, - PVOID InputBuffer, ULONG InputBufferLength, - PVOID OutputBuffer, ULONG OutputBufferLength, PULONG PBytesTransferred); - /** - * Set the file delete flag. - * - * This function sets a flag to indicates whether the FSD file should delete a file - * when it is closed. This function does not need to perform access checks, but may - * performs tasks such as check for empty directories, etc. - * - * This function should NEVER delete the file or directory in question. Deletion should - * happen during Cleanup with the FspCleanupDelete flag set. - * - * This function gets called when Win32 API's such as DeleteFile or RemoveDirectory are used. - * It does not get called when a file or directory is opened with FILE_DELETE_ON_CLOSE. - * - * NOTE: If both CanDelete and SetDelete are defined, SetDelete takes precedence. However - * most file systems need only implement the CanDelete operation. - * - * @param FileSystem - * The file system on which this request is posted. - * @param FileContext - * The file context of the file or directory to set the delete flag for. - * @param FileName - * The name of the file or directory to set the delete flag for. - * @param DeleteFile - * If set to TRUE the FSD indicates that the file will be deleted on Cleanup; otherwise - * it will not be deleted. It is legal to receive multiple SetDelete calls for the same - * file with different DeleteFile parameters. - * @return - * STATUS_SUCCESS or error code. - * @see - * Cleanup - * CanDelete - */ - NTSTATUS (*SetDelete)(FSP_FILE_SYSTEM *FileSystem, - PVOID FileContext, PWSTR FileName, BOOLEAN DeleteFile); - /** - * Create new file or directory. - * - * This function works like Create, except that it also accepts an extra buffer that - * may contain extended attributes or a reparse point. - * - * NOTE: If both Create and CreateEx are defined, CreateEx takes precedence. - * - * @param FileSystem - * The file system on which this request is posted. - * @param FileName - * The name of the file or directory to be created. - * @param CreateOptions - * Create options for this request. This parameter has the same meaning as the - * CreateOptions parameter of the NtCreateFile API. User mode file systems should typically - * only be concerned with the flag FILE_DIRECTORY_FILE, which is an instruction to create a - * directory rather than a file. Some file systems may also want to pay attention to the - * FILE_NO_INTERMEDIATE_BUFFERING and FILE_WRITE_THROUGH flags, although these are - * typically handled by the FSD component. - * @param GrantedAccess - * Determines the specific access rights that have been granted for this request. Upon - * receiving this call all access checks have been performed and the user mode file system - * need not perform any additional checks. However this parameter may be useful to a user - * mode file system; for example the WinFsp-FUSE layer uses this parameter to determine - * which flags to use in its POSIX open() call. - * @param FileAttributes - * File attributes to apply to the newly created file or directory. - * @param SecurityDescriptor - * Security descriptor to apply to the newly created file or directory. This security - * descriptor will always be in self-relative format. Its length can be retrieved using the - * Windows GetSecurityDescriptorLength API. Will be NULL for named streams. - * @param AllocationSize - * Allocation size for the newly created file. - * @param ExtraBuffer - * Extended attributes or reparse point buffer. - * @param ExtraLength - * Extended attributes or reparse point buffer length. - * @param ExtraBufferIsReparsePoint - * FALSE: extra buffer is extended attributes; TRUE: extra buffer is reparse point. - * @param PFileContext [out] - * Pointer that will receive the file context on successful return from this call. - * @param FileInfo [out] - * Pointer to a structure that will receive the file information on successful return - * from this call. This information includes file attributes, file times, etc. - * @return - * STATUS_SUCCESS or error code. - */ - NTSTATUS (*CreateEx)(FSP_FILE_SYSTEM *FileSystem, - PWSTR FileName, UINT32 CreateOptions, UINT32 GrantedAccess, - UINT32 FileAttributes, PSECURITY_DESCRIPTOR SecurityDescriptor, UINT64 AllocationSize, - PVOID ExtraBuffer, ULONG ExtraLength, BOOLEAN ExtraBufferIsReparsePoint, - PVOID *PFileContext, FSP_FSCTL_FILE_INFO *FileInfo); - /** - * Overwrite a file. - * - * This function works like Overwrite, except that it also accepts EA (extended attributes). - * - * NOTE: If both Overwrite and OverwriteEx are defined, OverwriteEx takes precedence. - * - * @param FileSystem - * The file system on which this request is posted. - * @param FileContext - * The file context of the file to overwrite. - * @param FileAttributes - * File attributes to apply to the overwritten file. - * @param ReplaceFileAttributes - * When TRUE the existing file attributes should be replaced with the new ones. - * When FALSE the existing file attributes should be merged (or'ed) with the new ones. - * @param AllocationSize - * Allocation size for the overwritten file. - * @param Ea - * Extended attributes buffer. - * @param EaLength - * Extended attributes buffer length. - * @param FileInfo [out] - * Pointer to a structure that will receive the file information on successful return - * from this call. This information includes file attributes, file times, etc. - * @return - * STATUS_SUCCESS or error code. - */ - NTSTATUS (*OverwriteEx)(FSP_FILE_SYSTEM *FileSystem, - PVOID FileContext, UINT32 FileAttributes, BOOLEAN ReplaceFileAttributes, UINT64 AllocationSize, - PFILE_FULL_EA_INFORMATION Ea, ULONG EaLength, - FSP_FSCTL_FILE_INFO *FileInfo); - /** - * Get extended attributes. - * - * @param FileSystem - * The file system on which this request is posted. - * @param FileContext - * The file context of the file to get extended attributes for. - * @param Ea - * Extended attributes buffer. - * @param EaLength - * Extended attributes buffer length. - * @param PBytesTransferred [out] - * Pointer to a memory location that will receive the actual number of bytes transferred. - * @return - * STATUS_SUCCESS or error code. - * @see - * SetEa - * FspFileSystemAddEa - */ - NTSTATUS (*GetEa)(FSP_FILE_SYSTEM *FileSystem, - PVOID FileContext, - PFILE_FULL_EA_INFORMATION Ea, ULONG EaLength, PULONG PBytesTransferred); - /** - * Set extended attributes. - * - * @param FileSystem - * The file system on which this request is posted. - * @param FileContext - * The file context of the file to set extended attributes for. - * @param Ea - * Extended attributes buffer. - * @param EaLength - * Extended attributes buffer length. - * @param FileInfo [out] - * Pointer to a structure that will receive the file information on successful return - * from this call. This information includes file attributes, file times, etc. - * @return - * STATUS_SUCCESS or error code. - * @see - * GetEa - */ - NTSTATUS (*SetEa)(FSP_FILE_SYSTEM *FileSystem, - PVOID FileContext, - PFILE_FULL_EA_INFORMATION Ea, ULONG EaLength, - FSP_FSCTL_FILE_INFO *FileInfo); - - NTSTATUS (*Obsolete0)(VOID); - - /** - * Inform the file system that its dispatcher has been stopped. - * - * 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. - * - * @param FileSystem - * The file system on which this request is posted. - * @param 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. - * @see - * FspFileSystemStopServiceIfNecessary - */ - VOID (*DispatcherStopped)(FSP_FILE_SYSTEM *FileSystem, - BOOLEAN Normally); - - /* - * This ensures that this interface will always contain 64 function pointers. - * Please update when changing the interface as it is important for future compatibility. - */ - NTSTATUS (*Reserved[31])(); -} FSP_FILE_SYSTEM_INTERFACE; -FSP_FSCTL_STATIC_ASSERT(sizeof(FSP_FILE_SYSTEM_INTERFACE) == 64 * sizeof(NTSTATUS (*)()), - "FSP_FILE_SYSTEM_INTERFACE must have 64 entries."); -typedef struct _FSP_FILE_SYSTEM -{ - UINT16 Version; - PVOID UserContext; - WCHAR VolumeName[FSP_FSCTL_VOLUME_NAME_SIZEMAX / sizeof(WCHAR)]; - HANDLE VolumeHandle; - FSP_FILE_SYSTEM_OPERATION_GUARD *EnterOperation, *LeaveOperation; - FSP_FILE_SYSTEM_OPERATION *Operations[FspFsctlTransactKindCount]; - const FSP_FILE_SYSTEM_INTERFACE *Interface; - HANDLE DispatcherThread; - ULONG DispatcherThreadCount; - NTSTATUS DispatcherResult; - PWSTR MountPoint; - HANDLE MountHandle; - UINT32 DebugLog; - FSP_FILE_SYSTEM_OPERATION_GUARD_STRATEGY OpGuardStrategy; - SRWLOCK OpGuardLock; - BOOLEAN UmFileContextIsUserContext2, UmFileContextIsFullContext; - UINT16 UmNoReparsePointsDirCheck:1; - UINT16 UmReservedFlags:14; - UINT16 DispatcherStopping:1; -} FSP_FILE_SYSTEM; -FSP_FSCTL_STATIC_ASSERT( - (4 == sizeof(PVOID) && 660 == sizeof(FSP_FILE_SYSTEM)) || - (8 == sizeof(PVOID) && 792 == sizeof(FSP_FILE_SYSTEM)), - "sizeof(FSP_FILE_SYSTEM) must be exactly 660 in 32-bit and 792 in 64-bit."); -typedef struct _FSP_FILE_SYSTEM_OPERATION_CONTEXT -{ - FSP_FSCTL_TRANSACT_REQ *Request; - FSP_FSCTL_TRANSACT_RSP *Response; -} FSP_FILE_SYSTEM_OPERATION_CONTEXT; -/** - * Check whether creating a file system object is possible. - * - * @param 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. - * @param MountPoint - * The mount point for the new file system. A value of NULL means that the file system should - * use the next available drive letter counting downwards from Z: as its mount point. - * @return - * STATUS_SUCCESS or error code. - */ -FSP_API NTSTATUS FspFileSystemPreflight(PWSTR DevicePath, - PWSTR MountPoint); -/** - * Create a file system object. - * - * @param 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. - * @param VolumeParams - * Volume parameters for the newly created file system. - * @param Interface - * A pointer to the operations that implement this user mode file system. - * @param PFileSystem [out] - * Pointer that will receive the file system object created on successful return from this - * call. - * @return - * STATUS_SUCCESS or error code. - */ -FSP_API NTSTATUS FspFileSystemCreate(PWSTR DevicePath, - const FSP_FSCTL_VOLUME_PARAMS *VolumeParams, - const FSP_FILE_SYSTEM_INTERFACE *Interface, - FSP_FILE_SYSTEM **PFileSystem); -/** - * Delete a file system object. - * - * @param FileSystem - * The file system object. - */ -FSP_API VOID FspFileSystemDelete(FSP_FILE_SYSTEM *FileSystem); -/** - * Set the mount point for a file system. - * - * This function supports drive letters (X:) or directories as mount points: - *
      - *
    • Drive letters: Refer to the documentation of the DefineDosDevice Windows API - * to better understand how they are created.
    • - *
    • Directories: They can be used as mount points for disk based file systems. They cannot - * be used for network file systems. This is a limitation that Windows imposes on junctions.
    • - *
    - * - * @param FileSystem - * The file system object. - * @param MountPoint - * The mount point for the new file system. A value of NULL means that the file system should - * use the next available drive letter counting downwards from Z: as its mount point. - * @return - * STATUS_SUCCESS or error code. - */ -FSP_API NTSTATUS FspFileSystemSetMountPoint(FSP_FILE_SYSTEM *FileSystem, PWSTR MountPoint); -FSP_API NTSTATUS FspFileSystemSetMountPointEx(FSP_FILE_SYSTEM *FileSystem, PWSTR MountPoint, - PSECURITY_DESCRIPTOR SecurityDescriptor); -/** - * Remove the mount point for a file system. - * - * @param FileSystem - * The file system object. - */ -FSP_API VOID FspFileSystemRemoveMountPoint(FSP_FILE_SYSTEM *FileSystem); -/** - * Start the file system dispatcher. - * - * The file system dispatcher is used to dispatch operations posted by the FSD to the user mode - * file system. Once this call starts executing the user mode file system will start receiving - * file system requests from the kernel. - * - * @param FileSystem - * The file system object. - * @param ThreadCount - * The number of threads for the file system dispatcher. A value of 0 will create a default - * number of threads and should be chosen in most cases. - * @return - * STATUS_SUCCESS or error code. - */ -FSP_API NTSTATUS FspFileSystemStartDispatcher(FSP_FILE_SYSTEM *FileSystem, ULONG ThreadCount); -/** - * Stop the file system dispatcher. - * - * @param FileSystem - * The file system object. - */ -FSP_API VOID FspFileSystemStopDispatcher(FSP_FILE_SYSTEM *FileSystem); -/** - * Send a response to the FSD. - * - * This call is not required when the user mode file system performs synchronous processing of - * requests. It is possible however for the following FSP_FILE_SYSTEM_INTERFACE operations to be - * processed asynchronously: - *
      - *
    • Read
    • - *
    • Write
    • - *
    • ReadDirectory
    • - *
    - * - * These operations are allowed to return STATUS_PENDING to postpone sending a response to the FSD. - * At a later time the file system can use FspFileSystemSendResponse to send the response. - * - * @param FileSystem - * The file system object. - * @param Response - * The response buffer. - */ -FSP_API VOID FspFileSystemSendResponse(FSP_FILE_SYSTEM *FileSystem, - FSP_FSCTL_TRANSACT_RSP *Response); -/** - * Begin notifying Windows that the file system has file changes. - * - * A file system that wishes to notify Windows about file changes must - * first issue an FspFileSystemBegin call, followed by 0 or more - * FspFileSystemNotify calls, followed by an FspFileSystemNotifyEnd call. - * - * This operation blocks concurrent file rename operations. File rename - * operations may interfere with file notification, because a file being - * notified may also be concurrently renamed. After all file change - * notifications have been issued, you must make sure to call - * FspFileSystemNotifyEnd to allow file rename operations to proceed. - * - * @param FileSystem - * The file system object. - * @return - * STATUS_SUCCESS or error code. The error code STATUS_CANT_WAIT means that - * a file rename operation is currently in progress and the operation must be - * retried at a later time. - */ -FSP_API NTSTATUS FspFileSystemNotifyBegin(FSP_FILE_SYSTEM *FileSystem, ULONG Timeout); -/** - * End notifying Windows that the file system has file changes. - * - * A file system that wishes to notify Windows about file changes must - * first issue an FspFileSystemBegin call, followed by 0 or more - * FspFileSystemNotify calls, followed by an FspFileSystemNotifyEnd call. - * - * This operation allows any blocked file rename operations to proceed. - * - * @param FileSystem - * The file system object. - * @return - * STATUS_SUCCESS or error code. - */ -FSP_API NTSTATUS FspFileSystemNotifyEnd(FSP_FILE_SYSTEM *FileSystem); -/** - * Notify Windows that the file system has file changes. - * - * A file system that wishes to notify Windows about file changes must - * first issue an FspFileSystemBegin call, followed by 0 or more - * FspFileSystemNotify calls, followed by an FspFileSystemNotifyEnd call. - * - * Note that FspFileSystemNotify requires file names to be normalized. A - * normalized file name is one that contains the correct case of all characters - * in the file name. - * - * For case-sensitive file systems all file names are normalized by definition. - * For case-insensitive file systems that implement file name normalization, - * a normalized file name is the one that the file system specifies in the - * response to Create or Open (see also FspFileSystemGetOpenFileInfo). For - * case-insensitive file systems that do not implement file name normalization - * a normalized file name is the upper case version of the file name used - * to open the file. - * - * @param FileSystem - * The file system object. - * @param NotifyInfo - * Buffer containing information about file changes. - * @param Size - * Size of buffer. - * @return - * STATUS_SUCCESS or error code. - */ -FSP_API NTSTATUS FspFileSystemNotify(FSP_FILE_SYSTEM *FileSystem, - FSP_FSCTL_NOTIFY_INFO *NotifyInfo, SIZE_T Size); -/** - * Get the current operation context. - * - * This function may be used only when servicing one of the FSP_FILE_SYSTEM_INTERFACE operations. - * The current operation context is stored in thread local storage. It allows access to the - * Request and Response associated with this operation. - * - * @return - * The current operation context. - */ -FSP_API FSP_FILE_SYSTEM_OPERATION_CONTEXT *FspFileSystemGetOperationContext(VOID); -static inline -PWSTR FspFileSystemMountPoint(FSP_FILE_SYSTEM *FileSystem) -{ - return FileSystem->MountPoint; -} -FSP_API PWSTR FspFileSystemMountPointF(FSP_FILE_SYSTEM *FileSystem); -static inline -NTSTATUS FspFileSystemEnterOperation(FSP_FILE_SYSTEM *FileSystem, - FSP_FSCTL_TRANSACT_REQ *Request, FSP_FSCTL_TRANSACT_RSP *Response) -{ - if (0 == FileSystem->EnterOperation) - return STATUS_SUCCESS; - - return FileSystem->EnterOperation(FileSystem, Request, Response); -} -FSP_API NTSTATUS FspFileSystemEnterOperationF(FSP_FILE_SYSTEM *FileSystem, - FSP_FSCTL_TRANSACT_REQ *Request, FSP_FSCTL_TRANSACT_RSP *Response); -static inline -NTSTATUS FspFileSystemLeaveOperation(FSP_FILE_SYSTEM *FileSystem, - FSP_FSCTL_TRANSACT_REQ *Request, FSP_FSCTL_TRANSACT_RSP *Response) -{ - if (0 == FileSystem->LeaveOperation) - return STATUS_SUCCESS; - - return FileSystem->LeaveOperation(FileSystem, Request, Response); -} -FSP_API NTSTATUS FspFileSystemLeaveOperationF(FSP_FILE_SYSTEM *FileSystem, - FSP_FSCTL_TRANSACT_REQ *Request, FSP_FSCTL_TRANSACT_RSP *Response); -static inline -VOID FspFileSystemSetOperationGuard(FSP_FILE_SYSTEM *FileSystem, - FSP_FILE_SYSTEM_OPERATION_GUARD *EnterOperation, - FSP_FILE_SYSTEM_OPERATION_GUARD *LeaveOperation) -{ - FileSystem->EnterOperation = EnterOperation; - FileSystem->LeaveOperation = LeaveOperation; -} -FSP_API VOID FspFileSystemSetOperationGuardF(FSP_FILE_SYSTEM *FileSystem, - FSP_FILE_SYSTEM_OPERATION_GUARD *EnterOperation, - FSP_FILE_SYSTEM_OPERATION_GUARD *LeaveOperation); -/** - * Set file system locking strategy. - * - * @param FileSystem - * The file system object. - * @param GuardStrategy - * The locking (guard) strategy. - * @see - * FSP_FILE_SYSTEM_OPERATION_GUARD_STRATEGY - */ -static inline -VOID FspFileSystemSetOperationGuardStrategy(FSP_FILE_SYSTEM *FileSystem, - FSP_FILE_SYSTEM_OPERATION_GUARD_STRATEGY GuardStrategy) -{ - FileSystem->OpGuardStrategy = GuardStrategy; -} -FSP_API VOID FspFileSystemSetOperationGuardStrategyF(FSP_FILE_SYSTEM *FileSystem, - FSP_FILE_SYSTEM_OPERATION_GUARD_STRATEGY GuardStrategy); -static inline -VOID FspFileSystemSetOperation(FSP_FILE_SYSTEM *FileSystem, - ULONG Index, - FSP_FILE_SYSTEM_OPERATION *Operation) -{ - FileSystem->Operations[Index] = Operation; -} -FSP_API VOID FspFileSystemSetOperationF(FSP_FILE_SYSTEM *FileSystem, - ULONG Index, - FSP_FILE_SYSTEM_OPERATION *Operation); -static inline -VOID FspFileSystemGetDispatcherResult(FSP_FILE_SYSTEM *FileSystem, - NTSTATUS *PDispatcherResult) -{ - *PDispatcherResult = FspInterlockedLoad32((INT32 *)&FileSystem->DispatcherResult); -} -FSP_API VOID FspFileSystemGetDispatcherResultF(FSP_FILE_SYSTEM *FileSystem, - NTSTATUS *PDispatcherResult); -static inline -VOID FspFileSystemSetDispatcherResult(FSP_FILE_SYSTEM *FileSystem, - NTSTATUS DispatcherResult) -{ - if (NT_SUCCESS(DispatcherResult)) - return; - InterlockedCompareExchange(&FileSystem->DispatcherResult, DispatcherResult, 0); -} -FSP_API VOID FspFileSystemSetDispatcherResultF(FSP_FILE_SYSTEM *FileSystem, - NTSTATUS DispatcherResult); -static inline -VOID FspFileSystemSetDebugLog(FSP_FILE_SYSTEM *FileSystem, - UINT32 DebugLog) -{ - FileSystem->DebugLog = DebugLog; -} -FSP_API VOID FspFileSystemSetDebugLogF(FSP_FILE_SYSTEM *FileSystem, - UINT32 DebugLog); -static inline -BOOLEAN FspFileSystemIsOperationCaseSensitive(VOID) -{ - FSP_FSCTL_TRANSACT_REQ *Request = FspFileSystemGetOperationContext()->Request; - return - FspFsctlTransactCreateKind == Request->Kind && Request->Req.Create.CaseSensitive || - FspFsctlTransactQueryDirectoryKind == Request->Kind && Request->Req.QueryDirectory.CaseSensitive; -} -FSP_API BOOLEAN FspFileSystemIsOperationCaseSensitiveF(VOID); -/** - * Gets the originating process ID. - * - * Valid only during Create, Open and Rename requests when the target exists. - */ -static inline -UINT32 FspFileSystemOperationProcessId(VOID) -{ - FSP_FSCTL_TRANSACT_REQ *Request = FspFileSystemGetOperationContext()->Request; - switch (Request->Kind) - { - case FspFsctlTransactCreateKind: - return FSP_FSCTL_TRANSACT_REQ_TOKEN_PID(Request->Req.Create.AccessToken); - case FspFsctlTransactSetInformationKind: - if (10/*FileRenameInformation*/ == Request->Req.SetInformation.FileInformationClass || - 65/*FileRenameInformationEx*/ == Request->Req.SetInformation.FileInformationClass) - return FSP_FSCTL_TRANSACT_REQ_TOKEN_PID(Request->Req.SetInformation.Info.Rename.AccessToken); - /* fall through! */ - default: - return 0; - } -} -FSP_API UINT32 FspFileSystemOperationProcessIdF(VOID); - -/* - * Operations - */ -FSP_API NTSTATUS FspFileSystemOpEnter(FSP_FILE_SYSTEM *FileSystem, - FSP_FSCTL_TRANSACT_REQ *Request, FSP_FSCTL_TRANSACT_RSP *Response); -FSP_API NTSTATUS FspFileSystemOpLeave(FSP_FILE_SYSTEM *FileSystem, - FSP_FSCTL_TRANSACT_REQ *Request, FSP_FSCTL_TRANSACT_RSP *Response); -FSP_API NTSTATUS FspFileSystemOpCreate(FSP_FILE_SYSTEM *FileSystem, - FSP_FSCTL_TRANSACT_REQ *Request, FSP_FSCTL_TRANSACT_RSP *Response); -FSP_API NTSTATUS FspFileSystemOpOverwrite(FSP_FILE_SYSTEM *FileSystem, - FSP_FSCTL_TRANSACT_REQ *Request, FSP_FSCTL_TRANSACT_RSP *Response); -FSP_API NTSTATUS FspFileSystemOpCleanup(FSP_FILE_SYSTEM *FileSystem, - FSP_FSCTL_TRANSACT_REQ *Request, FSP_FSCTL_TRANSACT_RSP *Response); -FSP_API NTSTATUS FspFileSystemOpClose(FSP_FILE_SYSTEM *FileSystem, - FSP_FSCTL_TRANSACT_REQ *Request, FSP_FSCTL_TRANSACT_RSP *Response); -FSP_API NTSTATUS FspFileSystemOpRead(FSP_FILE_SYSTEM *FileSystem, - FSP_FSCTL_TRANSACT_REQ *Request, FSP_FSCTL_TRANSACT_RSP *Response); -FSP_API NTSTATUS FspFileSystemOpWrite(FSP_FILE_SYSTEM *FileSystem, - FSP_FSCTL_TRANSACT_REQ *Request, FSP_FSCTL_TRANSACT_RSP *Response); -FSP_API NTSTATUS FspFileSystemOpQueryInformation(FSP_FILE_SYSTEM *FileSystem, - FSP_FSCTL_TRANSACT_REQ *Request, FSP_FSCTL_TRANSACT_RSP *Response); -FSP_API NTSTATUS FspFileSystemOpSetInformation(FSP_FILE_SYSTEM *FileSystem, - FSP_FSCTL_TRANSACT_REQ *Request, FSP_FSCTL_TRANSACT_RSP *Response); -FSP_API NTSTATUS FspFileSystemOpQueryEa(FSP_FILE_SYSTEM *FileSystem, - FSP_FSCTL_TRANSACT_REQ *Request, FSP_FSCTL_TRANSACT_RSP *Response); -FSP_API NTSTATUS FspFileSystemOpSetEa(FSP_FILE_SYSTEM *FileSystem, - FSP_FSCTL_TRANSACT_REQ *Request, FSP_FSCTL_TRANSACT_RSP *Response); -FSP_API NTSTATUS FspFileSystemOpFlushBuffers(FSP_FILE_SYSTEM *FileSystem, - FSP_FSCTL_TRANSACT_REQ *Request, FSP_FSCTL_TRANSACT_RSP *Response); -FSP_API NTSTATUS FspFileSystemOpQueryVolumeInformation(FSP_FILE_SYSTEM *FileSystem, - FSP_FSCTL_TRANSACT_REQ *Request, FSP_FSCTL_TRANSACT_RSP *Response); -FSP_API NTSTATUS FspFileSystemOpSetVolumeInformation(FSP_FILE_SYSTEM *FileSystem, - FSP_FSCTL_TRANSACT_REQ *Request, FSP_FSCTL_TRANSACT_RSP *Response); -FSP_API NTSTATUS FspFileSystemOpQueryDirectory(FSP_FILE_SYSTEM *FileSystem, - FSP_FSCTL_TRANSACT_REQ *Request, FSP_FSCTL_TRANSACT_RSP *Response); -FSP_API NTSTATUS FspFileSystemOpFileSystemControl(FSP_FILE_SYSTEM *FileSystem, - FSP_FSCTL_TRANSACT_REQ *Request, FSP_FSCTL_TRANSACT_RSP *Response); -FSP_API NTSTATUS FspFileSystemOpDeviceControl(FSP_FILE_SYSTEM *FileSystem, - FSP_FSCTL_TRANSACT_REQ *Request, FSP_FSCTL_TRANSACT_RSP *Response); -FSP_API NTSTATUS FspFileSystemOpQuerySecurity(FSP_FILE_SYSTEM *FileSystem, - FSP_FSCTL_TRANSACT_REQ *Request, FSP_FSCTL_TRANSACT_RSP *Response); -FSP_API NTSTATUS FspFileSystemOpSetSecurity(FSP_FILE_SYSTEM *FileSystem, - FSP_FSCTL_TRANSACT_REQ *Request, FSP_FSCTL_TRANSACT_RSP *Response); -FSP_API NTSTATUS FspFileSystemOpQueryStreamInformation(FSP_FILE_SYSTEM *FileSystem, - FSP_FSCTL_TRANSACT_REQ *Request, FSP_FSCTL_TRANSACT_RSP *Response); - -/* - * Helpers - */ -/** - * Get open information buffer. - * - * This is a helper for implementing the Create and Open operations. It cannot be used with - * any other operations. - * - * The FileInfo parameter to Create and Open is typed as pointer to FSP_FSCTL_FILE_INFO. The - * true type of this parameter is pointer to FSP_FSCTL_OPEN_FILE_INFO. This simple function - * converts from one type to the other. - * - * The FSP_FSCTL_OPEN_FILE_INFO type contains a FSP_FSCTL_FILE_INFO as well as the fields - * NormalizedName and NormalizedNameSize. These fields can be used for file name normalization. - * File name normalization is used to ensure that the FSD and the OS know the correct case - * of a newly opened file name. - * - * For case-sensitive file systems this functionality should be ignored. The FSD will always - * assume that the normalized file name is the same as the file name used to open the file. - * - * For case-insensitive file systems this functionality may be ignored. In this case the FSD - * will assume that the normalized file name is the upper case version of the file name used - * to open the file. The file system will work correctly and the only way an application will - * be able to tell that the file system does not preserve case in normalized file names is by - * issuing a GetFinalPathNameByHandle API call (or NtQueryInformationFile with - * FileNameInformation/FileNormalizedNameInformation). - * - * For case-insensitive file systems this functionality may also be used. In this case the - * user mode file system may use the NormalizedName and NormalizedNameSize parameters to - * report to the FSD the normalized file name. It should be noted that the normalized file - * name may only differ in case from the file name used to open the file. The NormalizedName - * field will point to a buffer that can receive the normalized file name. The - * NormalizedNameSize field will contain the size of the normalized file name buffer. On - * completion of the Create or Open operation it should contain the actual size of the - * normalized file name copied into the normalized file name buffer. The normalized file name - * should not contain a terminating zero. - * - * @param FileInfo - * The FileInfo parameter as passed to Create or Open operation. - * @return - * A pointer to the open information buffer for this Create or Open operation. - * @see - * Create - * Open - */ -static inline -FSP_FSCTL_OPEN_FILE_INFO *FspFileSystemGetOpenFileInfo(FSP_FSCTL_FILE_INFO *FileInfo) -{ - return (FSP_FSCTL_OPEN_FILE_INFO *)FileInfo; -} -/** - * Add directory information to a buffer. - * - * This is a helper for implementing the ReadDirectory operation. - * - * @param DirInfo - * The directory information to add. A value of NULL acts as an EOF marker for a ReadDirectory - * operation. - * @param Buffer - * Pointer to a buffer that will receive the results of the read operation. This should contain - * the same value passed to the ReadDirectory Buffer parameter. - * @param Length - * Length of data to read. This should contain the same value passed to the ReadDirectory - * Length parameter. - * @param PBytesTransferred [out] - * Pointer to a memory location that will receive the actual number of bytes read. This should - * contain the same value passed to the ReadDirectory PBytesTransferred parameter. - * FspFileSystemAddDirInfo uses the value pointed by this parameter to track how much of the - * buffer has been used so far. - * @return - * TRUE if the directory information was added, FALSE if there was not enough space to add it. - * @see - * ReadDirectory - */ -FSP_API BOOLEAN FspFileSystemAddDirInfo(FSP_FSCTL_DIR_INFO *DirInfo, - PVOID Buffer, ULONG Length, PULONG PBytesTransferred); -/** - * Find reparse point in file name. - * - * Given a file name this function returns an index to the first path component that is a reparse - * point. The function will call the supplied GetReparsePointByName function for every path - * component until it finds a reparse point or the whole path is processed. - * - * This is a helper for implementing the GetSecurityByName operation in file systems - * that support reparse points. - * - * @param FileSystem - * The file system object. - * @param GetReparsePointByName - * Pointer to function that can retrieve reparse point information by name. The - * FspFileSystemFindReparsePoint will call this function with the Buffer and PSize - * arguments set to NULL. The function should return STATUS_SUCCESS if the passed - * FileName is a reparse point or STATUS_NOT_A_REPARSE_POINT (or other error code) - * otherwise. - * @param Context - * User context to supply to GetReparsePointByName. - * @param FileName - * The name of the file or directory. - * @param PReparsePointIndex - * Pointer to a memory location that will receive the index of the first reparse point - * within FileName. A value is only placed in this memory location if the function returns - * TRUE. May be NULL. - * @return - * TRUE if a reparse point was found, FALSE otherwise. - * @see - * GetSecurityByName - */ -FSP_API BOOLEAN FspFileSystemFindReparsePoint(FSP_FILE_SYSTEM *FileSystem, - NTSTATUS (*GetReparsePointByName)( - FSP_FILE_SYSTEM *FileSystem, PVOID Context, - PWSTR FileName, BOOLEAN IsDirectory, PVOID Buffer, PSIZE_T PSize), - PVOID Context, - PWSTR FileName, PUINT32 PReparsePointIndex); -/** - * Resolve reparse points. - * - * Given a file name (and an index where to start resolving) this function will attempt to - * resolve as many reparse points as possible. The function will call the supplied - * GetReparsePointByName function for every path component until it resolves the reparse points - * or the whole path is processed. - * - * This is a helper for implementing the ResolveReparsePoints operation in file systems - * that support reparse points. - * - * @param FileSystem - * The file system object. - * @param GetReparsePointByName - * Pointer to function that can retrieve reparse point information by name. The function - * should return STATUS_SUCCESS if the passed FileName is a reparse point or - * STATUS_NOT_A_REPARSE_POINT (or other error code) otherwise. - * @param Context - * User context to supply to GetReparsePointByName. - * @param FileName - * The name of the file or directory to have its reparse points resolved. - * @param ReparsePointIndex - * The index of the first reparse point within FileName. - * @param ResolveLastPathComponent - * If FALSE, the last path component of FileName should not be resolved, even - * if it is a reparse point that can be resolved. If TRUE, all path components - * should be resolved if possible. - * @param PIoStatus - * Pointer to storage that will receive the status to return to the FSD. When - * this function succeeds it must set PIoStatus->Status to STATUS_REPARSE and - * PIoStatus->Information to either IO_REPARSE or the reparse tag. - * @param Buffer - * Pointer to a buffer that will receive the resolved file name (IO_REPARSE) or - * reparse data (reparse tag). If the function returns a file name, it should - * not be NULL terminated. - * @param PSize [in,out] - * Pointer to the buffer size. On input it contains the size of the buffer. - * On output it will contain the actual size of data copied. - * @return - * STATUS_REPARSE or error code. - * @see - * ResolveReparsePoints - */ -FSP_API NTSTATUS FspFileSystemResolveReparsePoints(FSP_FILE_SYSTEM *FileSystem, - NTSTATUS (*GetReparsePointByName)( - FSP_FILE_SYSTEM *FileSystem, PVOID Context, - PWSTR FileName, BOOLEAN IsDirectory, PVOID Buffer, PSIZE_T PSize), - PVOID Context, - PWSTR FileName, UINT32 ReparsePointIndex, BOOLEAN ResolveLastPathComponent, - PIO_STATUS_BLOCK PIoStatus, PVOID Buffer, PSIZE_T PSize); -/** - * Test whether reparse data can be replaced. - * - * This is a helper for implementing the SetReparsePoint/DeleteReparsePoint operation - * in file systems that support reparse points. - * - * @param CurrentReparseData - * Pointer to the current reparse data. - * @param CurrentReparseDataSize - * Pointer to the current reparse data size. - * @param ReplaceReparseData - * Pointer to the replacement reparse data. - * @param ReplaceReparseDataSize - * Pointer to the replacement reparse data size. - * @return - * STATUS_SUCCESS or error code. - * @see - * SetReparsePoint - * DeleteReparsePoint - */ -FSP_API NTSTATUS FspFileSystemCanReplaceReparsePoint( - PVOID CurrentReparseData, SIZE_T CurrentReparseDataSize, - PVOID ReplaceReparseData, SIZE_T ReplaceReparseDataSize); -/** - * Add named stream information to a buffer. - * - * This is a helper for implementing the GetStreamInfo operation. - * - * @param StreamInfo - * The stream information to add. A value of NULL acts as an EOF marker for a GetStreamInfo - * operation. - * @param Buffer - * Pointer to a buffer that will receive the stream information. This should contain - * the same value passed to the GetStreamInfo Buffer parameter. - * @param Length - * Length of buffer. This should contain the same value passed to the GetStreamInfo - * Length parameter. - * @param PBytesTransferred [out] - * Pointer to a memory location that will receive the actual number of bytes stored. This should - * contain the same value passed to the GetStreamInfo PBytesTransferred parameter. - * @return - * TRUE if the stream information was added, FALSE if there was not enough space to add it. - * @see - * GetStreamInfo - */ -FSP_API BOOLEAN FspFileSystemAddStreamInfo(FSP_FSCTL_STREAM_INFO *StreamInfo, - PVOID Buffer, ULONG Length, PULONG PBytesTransferred); -/** - * Enumerate extended attributes in a buffer. - * - * This is a helper for implementing the CreateEx and SetEa operations in file systems - * that support extended attributes. - * - * @param FileSystem - * The file system object. - * @param EnumerateEa - * Pointer to function that receives a single extended attribute. The function - * should return STATUS_SUCCESS or an error code if unsuccessful. - * @param Context - * User context to supply to EnumEa. - * @param Ea - * Extended attributes buffer. - * @param EaLength - * Extended attributes buffer length. - * @return - * STATUS_SUCCESS or error code from EnumerateEa. - */ -FSP_API NTSTATUS FspFileSystemEnumerateEa(FSP_FILE_SYSTEM *FileSystem, - NTSTATUS (*EnumerateEa)( - FSP_FILE_SYSTEM *FileSystem, PVOID Context, - PFILE_FULL_EA_INFORMATION SingleEa), - PVOID Context, - PFILE_FULL_EA_INFORMATION Ea, ULONG EaLength); -/** - * Add extended attribute to a buffer. - * - * This is a helper for implementing the GetEa operation. - * - * @param SingleEa - * The extended attribute to add. A value of NULL acts as an EOF marker for a GetEa - * operation. - * @param Ea - * Pointer to a buffer that will receive the extended attribute. This should contain - * the same value passed to the GetEa Ea parameter. - * @param EaLength - * Length of buffer. This should contain the same value passed to the GetEa - * EaLength parameter. - * @param PBytesTransferred [out] - * Pointer to a memory location that will receive the actual number of bytes stored. This should - * contain the same value passed to the GetEa PBytesTransferred parameter. - * @return - * TRUE if the extended attribute was added, FALSE if there was not enough space to add it. - * @see - * GetEa - */ -FSP_API BOOLEAN FspFileSystemAddEa(PFILE_FULL_EA_INFORMATION SingleEa, - PFILE_FULL_EA_INFORMATION Ea, ULONG EaLength, PULONG PBytesTransferred); -/** - * Get extended attribute "packed" size. This computation matches what NTFS reports. - * - * @param SingleEa - * The extended attribute to get the size for. - * @return - * The packed size of the extended attribute. - */ -static inline -UINT32 FspFileSystemGetEaPackedSize(PFILE_FULL_EA_INFORMATION SingleEa) -{ - /* magic computations are courtesy of NTFS */ - return 5 + SingleEa->EaNameLength + SingleEa->EaValueLength; -} -/** - * Add notify information to a buffer. - * - * This is a helper for filling a buffer to use with FspFileSystemNotify. - * - * @param NotifyInfo - * The notify information to add. - * @param Buffer - * Pointer to a buffer that will receive the notify information. - * @param Length - * Length of buffer. - * @param PBytesTransferred [out] - * Pointer to a memory location that will receive the actual number of bytes stored. This should - * be initialized to 0 prior to the first call to FspFileSystemAddNotifyInfo for a particular - * buffer. - * @return - * TRUE if the notify information was added, FALSE if there was not enough space to add it. - * @see - * FspFileSystemNotify - */ -FSP_API BOOLEAN FspFileSystemAddNotifyInfo(FSP_FSCTL_NOTIFY_INFO *NotifyInfo, - PVOID Buffer, ULONG Length, PULONG PBytesTransferred); -/** - * Stop a file system service, if any. - * - * This is a helper for implementing the DispatcherStopped operation, but only for file systems - * that use the FspService infrastructure. - * - * @param FileSystem - * The file system object. - * @param 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. - * @see - * DispatcherStopped - */ -FSP_API VOID FspFileSystemStopServiceIfNecessary(FSP_FILE_SYSTEM *FileSystem, - BOOLEAN Normally); - -/* - * Directory buffering - */ -FSP_API BOOLEAN FspFileSystemAcquireDirectoryBufferEx(PVOID* PDirBuffer, - BOOLEAN Reset, ULONG CapacityHint, PNTSTATUS PResult); -FSP_API BOOLEAN FspFileSystemAcquireDirectoryBuffer(PVOID *PDirBuffer, - BOOLEAN Reset, PNTSTATUS PResult); -FSP_API BOOLEAN FspFileSystemFillDirectoryBuffer(PVOID *PDirBuffer, - FSP_FSCTL_DIR_INFO *DirInfo, PNTSTATUS PResult); -FSP_API VOID FspFileSystemReleaseDirectoryBuffer(PVOID *PDirBuffer); -FSP_API VOID FspFileSystemReadDirectoryBuffer(PVOID *PDirBuffer, - PWSTR Marker, - PVOID Buffer, ULONG Length, PULONG PBytesTransferred); -FSP_API VOID FspFileSystemDeleteDirectoryBuffer(PVOID *PDirBuffer); - -/* - * Security - */ -FSP_API PGENERIC_MAPPING FspGetFileGenericMapping(VOID); -FSP_API NTSTATUS FspAccessCheckEx(FSP_FILE_SYSTEM *FileSystem, - FSP_FSCTL_TRANSACT_REQ *Request, - BOOLEAN CheckParentOrMain, BOOLEAN AllowTraverseCheck, - UINT32 DesiredAccess, PUINT32 PGrantedAccess/* or ReparsePointIndex */, - PSECURITY_DESCRIPTOR *PSecurityDescriptor); -FSP_API NTSTATUS FspCreateSecurityDescriptor(FSP_FILE_SYSTEM *FileSystem, - FSP_FSCTL_TRANSACT_REQ *Request, - PSECURITY_DESCRIPTOR ParentDescriptor, - PSECURITY_DESCRIPTOR *PSecurityDescriptor); -/** - * Modify security descriptor. - * - * This is a helper for implementing the SetSecurity operation. - * - * @param InputDescriptor - * The input security descriptor to be modified. - * @param SecurityInformation - * Describes what parts of the InputDescriptor should be modified. This should contain - * the same value passed to the SetSecurity SecurityInformation parameter. - * @param ModificationDescriptor - * Describes the modifications to apply to the InputDescriptor. This should contain - * the same value passed to the SetSecurity ModificationDescriptor parameter. - * @param PSecurityDescriptor [out] - * Pointer to a memory location that will receive the resulting security descriptor. - * This security descriptor can be later freed using FspDeleteSecurityDescriptor. - * @return - * STATUS_SUCCESS or error code. - * @see - * SetSecurity - * FspDeleteSecurityDescriptor - */ -FSP_API NTSTATUS FspSetSecurityDescriptor( - PSECURITY_DESCRIPTOR InputDescriptor, - SECURITY_INFORMATION SecurityInformation, - PSECURITY_DESCRIPTOR ModificationDescriptor, - PSECURITY_DESCRIPTOR *PSecurityDescriptor); -/** - * Delete security descriptor. - * - * This is a helper for implementing the SetSecurity operation. - * - * @param SecurityDescriptor - * The security descriptor to be deleted. - * @param CreateFunc - * Function used to create the security descriptor. This parameter should be - * set to FspSetSecurityDescriptor for the public API. - * @return - * STATUS_SUCCESS or error code. - * @see - * SetSecurity - * FspSetSecurityDescriptor - */ -FSP_API VOID FspDeleteSecurityDescriptor(PSECURITY_DESCRIPTOR SecurityDescriptor, - NTSTATUS (*CreateFunc)()); -static inline -NTSTATUS FspAccessCheck(FSP_FILE_SYSTEM *FileSystem, - FSP_FSCTL_TRANSACT_REQ *Request, - BOOLEAN CheckParentOrMain, BOOLEAN AllowTraverseCheck, - UINT32 DesiredAccess, PUINT32 PGrantedAccess) -{ - return FspAccessCheckEx(FileSystem, Request, - CheckParentOrMain, AllowTraverseCheck, - DesiredAccess, PGrantedAccess, - 0); -} - -/* - * POSIX Interop - */ -FSP_API NTSTATUS FspPosixSetUidMap(UINT32 Uid[], PSID Sid[], ULONG Count); -FSP_API NTSTATUS FspPosixMapUidToSid(UINT32 Uid, PSID *PSid); -FSP_API NTSTATUS FspPosixMapSidToUid(PSID Sid, PUINT32 PUid); -FSP_API VOID FspDeleteSid(PSID Sid, NTSTATUS (*CreateFunc)()); -FSP_API NTSTATUS FspPosixMapPermissionsToSecurityDescriptor( - UINT32 Uid, UINT32 Gid, UINT32 Mode, - PSECURITY_DESCRIPTOR *PSecurityDescriptor); -FSP_API NTSTATUS FspPosixMergePermissionsToSecurityDescriptor( - UINT32 Uid, UINT32 Gid, UINT32 Mode, - PSECURITY_DESCRIPTOR ExistingSecurityDescriptor, - PSECURITY_DESCRIPTOR *PSecurityDescriptor); -FSP_API NTSTATUS FspPosixMapSecurityDescriptorToPermissions( - PSECURITY_DESCRIPTOR SecurityDescriptor, - PUINT32 PUid, PUINT32 PGid, PUINT32 PMode); -FSP_API NTSTATUS FspPosixMapWindowsToPosixPathEx(PWSTR WindowsPath, char **PPosixPath, - BOOLEAN Translate); -FSP_API NTSTATUS FspPosixMapPosixToWindowsPathEx(const char *PosixPath, PWSTR *PWindowsPath, - BOOLEAN Translate); -static inline -NTSTATUS FspPosixMapWindowsToPosixPath(PWSTR WindowsPath, char **PPosixPath) -{ - return FspPosixMapWindowsToPosixPathEx(WindowsPath, PPosixPath, TRUE); -} -static inline -NTSTATUS FspPosixMapPosixToWindowsPath(const char *PosixPath, PWSTR *PWindowsPath) -{ - return FspPosixMapPosixToWindowsPathEx(PosixPath, PWindowsPath, TRUE); -} -FSP_API VOID FspPosixDeletePath(void *Path); -FSP_API VOID FspPosixEncodeWindowsPath(PWSTR WindowsPath, ULONG Size); -FSP_API VOID FspPosixDecodeWindowsPath(PWSTR WindowsPath, ULONG Size); -static inline -VOID FspPosixFileTimeToUnixTime(UINT64 FileTime0, __int3264 UnixTime[2]) -{ - INT64 FileTime = (INT64)FileTime0 - 116444736000000000LL; - UnixTime[0] = (__int3264)(FileTime / 10000000); - UnixTime[1] = (__int3264)(FileTime % 10000000 * 100); - /* may produce negative nsec for times before UNIX epoch; strictly speaking this is incorrect */ -} -static inline -VOID FspPosixUnixTimeToFileTime(const __int3264 UnixTime[2], PUINT64 PFileTime) -{ - INT64 FileTime = (INT64)UnixTime[0] * 10000000 + (INT64)UnixTime[1] / 100 + - 116444736000000000LL; - *PFileTime = FileTime; -} - -/* - * Path Handling - */ -FSP_API VOID FspPathPrefix(PWSTR Path, PWSTR *PPrefix, PWSTR *PRemain, PWSTR Root); -FSP_API VOID FspPathSuffix(PWSTR Path, PWSTR *PRemain, PWSTR *PSuffix, PWSTR Root); -FSP_API VOID FspPathCombine(PWSTR Prefix, PWSTR Suffix); - -/** - * @group Service Framework - * - * User mode file systems typically are run as Windows services. WinFsp provides an API to make - * the creation of Windows services easier. This API is provided for convenience and is not - * necessary to expose a user mode file system to Windows. - */ -typedef struct _FSP_SERVICE FSP_SERVICE; -typedef NTSTATUS FSP_SERVICE_START(FSP_SERVICE *, ULONG, PWSTR *); -typedef NTSTATUS FSP_SERVICE_STOP(FSP_SERVICE *); -typedef NTSTATUS FSP_SERVICE_CONTROL(FSP_SERVICE *, ULONG, ULONG, PVOID); -#pragma warning(push) -#pragma warning(disable:4200) /* zero-sized array in struct/union */ -typedef struct _FSP_SERVICE -{ - UINT16 Version; - PVOID UserContext; - FSP_SERVICE_START *OnStart; - FSP_SERVICE_STOP *OnStop; - FSP_SERVICE_CONTROL *OnControl; - ULONG AcceptControl; - ULONG ExitCode; - SERVICE_STATUS_HANDLE StatusHandle; - SERVICE_STATUS ServiceStatus; - CRITICAL_SECTION ServiceStatusGuard; - CRITICAL_SECTION ServiceStopGuard; - BOOLEAN AllowConsoleMode; - WCHAR ServiceName[]; -} FSP_SERVICE; -#pragma warning(pop) -/** - * Run a service. - * - * This function wraps calls to FspServiceCreate, FspServiceLoop and FspServiceDelete to create, - * run and delete a service. It is intended to be used from a service's main/wmain function. - * - * This function runs a service with console mode allowed. - * - * @param ServiceName - * The name of the service. - * @param OnStart - * Function to call when the service starts. - * @param OnStop - * Function to call when the service stops. - * @param OnControl - * Function to call when the service receives a service control code. - * @return - * Service process exit code. - */ -FSP_API ULONG FspServiceRunEx(PWSTR ServiceName, - FSP_SERVICE_START *OnStart, - FSP_SERVICE_STOP *OnStop, - FSP_SERVICE_CONTROL *OnControl, - PVOID UserContext); -static inline -ULONG FspServiceRun(PWSTR ServiceName, - FSP_SERVICE_START *OnStart, - FSP_SERVICE_STOP *OnStop, - FSP_SERVICE_CONTROL *OnControl) -{ - return FspServiceRunEx(ServiceName, OnStart, OnStop, OnControl, 0); -} -/** - * Create a service object. - * - * @param ServiceName - * The name of the service. - * @param OnStart - * Function to call when the service starts. - * @param OnStop - * Function to call when the service stops. - * @param OnControl - * Function to call when the service receives a service control code. - * @param PService [out] - * Pointer that will receive the service object created on successful return from this - * call. - * @return - * STATUS_SUCCESS or error code. - */ -FSP_API NTSTATUS FspServiceCreate(PWSTR ServiceName, - FSP_SERVICE_START *OnStart, - FSP_SERVICE_STOP *OnStop, - FSP_SERVICE_CONTROL *OnControl, - FSP_SERVICE **PService); -/** - * Delete a service object. - * - * @param Service - * The service object. - */ -FSP_API VOID FspServiceDelete(FSP_SERVICE *Service); -/** - * Allow a service to run in console mode. - * - * A service that is run in console mode runs with a console attached and outside the control of - * the Service Control Manager. This is useful for debugging and testing a service during - * development. - * - * User mode file systems that wish to use the WinFsp Launcher functionality must also use this - * call. The WinFsp Launcher is a Windows service that can be configured to launch and manage - * multiple instances of a user mode file system. - * - * @param Service - * The service object. - */ -FSP_API VOID FspServiceAllowConsoleMode(FSP_SERVICE *Service); -/** - * Configure the control codes that a service accepts. - * - * This API should be used prior to Start operations. - * - * @param Service - * The service object. - * @param Control - * The control codes to accept. Note that the SERVICE_ACCEPT_PAUSE_CONTINUE code is silently - * ignored. - */ -FSP_API VOID FspServiceAcceptControl(FSP_SERVICE *Service, ULONG Control); -/** - * Request additional time from the Service Control Manager. - * - * This API should be used during Start and Stop operations only. - * - * @param Service - * The service object. - * @param Time - * Additional time (in milliseconds). - */ -FSP_API VOID FspServiceRequestTime(FSP_SERVICE *Service, ULONG Time); -/** - * Set the service process exit code. - * - * @param Service - * The service object. - * @param ExitCode - * Service process exit code. - */ -FSP_API VOID FspServiceSetExitCode(FSP_SERVICE *Service, ULONG ExitCode); -/** - * Get the service process exit code. - * - * @param Service - * The service object. - * @return - * Service process exit code. - */ -FSP_API ULONG FspServiceGetExitCode(FSP_SERVICE *Service); -/** - * Run a service main loop. - * - * This function starts and runs a service. It executes the Windows StartServiceCtrlDispatcher API - * 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. - * - * This function should be called once per process. - * - * @param Service - * The service object. - * @return - * STATUS_SUCCESS or error code. - */ -FSP_API NTSTATUS FspServiceLoop(FSP_SERVICE *Service); -/** - * Stops a running service. - * - * Stopping a service usually happens when the Service Control Manager instructs the service to - * stop. In some situations (e.g. fatal errors) the service may wish to stop itself. It can do so - * in a clean manner by calling this function. - * - * @param Service - * The service object. - * @return - * STATUS_SUCCESS or error code. - */ -FSP_API VOID FspServiceStop(FSP_SERVICE *Service); -/** - * Determine if the current process is running in user interactive mode. - * - * @return - * TRUE if the process is running in running user interactive mode. - */ -FSP_API BOOLEAN FspServiceIsInteractive(VOID); -/** - * Check if the supplied token is from the service context. - * - * @param Token - * Token to check. Pass NULL to check the current process token. - * @param PIsLocalSystem - * Pointer to a boolean that will receive a TRUE value if the token belongs to LocalSystem - * and FALSE otherwise. May be NULL. - * @return - * STATUS_SUCCESS if the token is from the service context. STATUS_ACCESS_DENIED if it is not. - * Other error codes are possible. - */ -FSP_API NTSTATUS FspServiceContextCheck(HANDLE Token, PBOOLEAN PIsLocalSystem); -/** - * Log a service message. - * - * This function can be used to log an arbitrary message to the Windows Event Log or to the current - * console if running in user interactive mode. - * - * @param Type - * One of EVENTLOG_INFORMATION_TYPE, EVENTLOG_WARNING_TYPE, EVENTLOG_ERROR_TYPE. - * @param Format - * Format specification. This function uses the Windows wsprintf API for formatting. Refer to - * that API's documentation for details on the format specification. - */ -FSP_API VOID FspServiceLog(ULONG Type, PWSTR Format, ...); -FSP_API VOID FspServiceLogV(ULONG Type, PWSTR Format, va_list ap); - -/* - * Utility - */ -FSP_API NTSTATUS FspNtStatusFromWin32(DWORD Error); -FSP_API DWORD FspWin32FromNtStatus(NTSTATUS Status); -FSP_API VOID FspEventLog(ULONG Type, PWSTR Format, ...); -FSP_API VOID FspEventLogV(ULONG Type, PWSTR Format, va_list ap); -FSP_API VOID FspDebugLogSetHandle(HANDLE Handle); -FSP_API VOID FspDebugLog(const char *Format, ...); -FSP_API VOID FspDebugLogSD(const char *Format, PSECURITY_DESCRIPTOR SecurityDescriptor); -FSP_API VOID FspDebugLogSid(const char *format, PSID Sid); -FSP_API VOID FspDebugLogFT(const char *Format, PFILETIME FileTime); -FSP_API VOID FspDebugLogRequest(FSP_FSCTL_TRANSACT_REQ *Request); -FSP_API VOID FspDebugLogResponse(FSP_FSCTL_TRANSACT_RSP *Response); -FSP_API NTSTATUS FspCallNamedPipeSecurely(PWSTR PipeName, - PVOID InBuffer, ULONG InBufferSize, PVOID OutBuffer, ULONG OutBufferSize, - PULONG PBytesTransferred, ULONG Timeout, - PSID Sid); -FSP_API NTSTATUS FspCallNamedPipeSecurelyEx(PWSTR PipeName, - PVOID InBuffer, ULONG InBufferSize, PVOID OutBuffer, ULONG OutBufferSize, - PULONG PBytesTransferred, ULONG Timeout, BOOLEAN AllowImpersonation, - PSID Sid); -FSP_API NTSTATUS FspVersion(PUINT32 PVersion); -FSP_API PWSTR FspSxsIdent(VOID); - -/* - * Delay load - */ -static inline -NTSTATUS FspLoad(PVOID *PModule) -{ -#define FSP_DLLNAME FSP_FSCTL_PRODUCT_FILE_NAME "-" FSP_FSCTL_PRODUCT_FILE_ARCH ".dll" -#define FSP_DLLPATH "bin\\" FSP_DLLNAME - - WINADVAPI - LSTATUS - APIENTRY - RegGetValueW( - HKEY hkey, - LPCWSTR lpSubKey, - LPCWSTR lpValue, - DWORD dwFlags, - LPDWORD pdwType, - PVOID pvData, - LPDWORD pcbData); - - WCHAR PathBuf[MAX_PATH]; - DWORD Size; - LONG Result; - HMODULE Module; - - if (0 != PModule) - *PModule = 0; - - Module = LoadLibraryW(L"" FSP_DLLNAME); - if (0 == Module) - { - Size = sizeof PathBuf - sizeof L"" FSP_DLLPATH + sizeof(WCHAR); - Result = RegGetValueW(HKEY_LOCAL_MACHINE, L"" FSP_FSCTL_PRODUCT_FULL_REGKEY, L"InstallDir", - RRF_RT_REG_SZ, 0, PathBuf, &Size); - if (ERROR_SUCCESS != Result) - return STATUS_OBJECT_NAME_NOT_FOUND; - - RtlCopyMemory(PathBuf + (Size / sizeof(WCHAR) - 1), L"" FSP_DLLPATH, sizeof L"" FSP_DLLPATH); - Module = LoadLibraryW(PathBuf); - if (0 == Module) - return STATUS_DLL_NOT_FOUND; - } - - if (0 != PModule) - *PModule = Module; - - return STATUS_SUCCESS; - -#undef FSP_DLLPATH -#undef FSP_DLLNAME -} - -#ifdef __cplusplus -} -#endif - -#endif +/** + * @file winfsp/winfsp.h + * WinFsp User Mode API. + * + * 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. + * + * @copyright 2015-2025 Bill Zissimopoulos + */ +/* + * This file is part of WinFsp. + * + * You can redistribute it and/or modify it under the terms of the GNU + * General Public License version 3 as published by the Free Software + * Foundation. + * + * Licensees holding a valid commercial license may use this software + * in accordance with the commercial license agreement provided in + * conjunction with the software. The terms and conditions of any such + * commercial license agreement shall govern, supersede, and render + * ineffective any application of the GPLv3 license to this software, + * notwithstanding of any reference thereto in the software or + * associated repository. + */ + +#ifndef WINFSP_WINFSP_H_INCLUDED +#define WINFSP_WINFSP_H_INCLUDED + +#define WIN32_NO_STATUS +#include +#undef WIN32_NO_STATUS +#include +#pragma warning(push) +#pragma warning(disable:4005) /* macro redefinition */ +#include +#pragma warning(pop) + +#if defined(WINFSP_DLL_INTERNAL) +#define FSP_API __declspec(dllexport) +#else +#define FSP_API __declspec(dllimport) +#endif + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * The REPARSE_DATA_BUFFER definitions appear to be missing from the user mode headers. + */ +#if !defined(SYMLINK_FLAG_RELATIVE) +#define SYMLINK_FLAG_RELATIVE 1 +#define REPARSE_DATA_BUFFER_HEADER_SIZE FIELD_OFFSET(REPARSE_DATA_BUFFER, GenericReparseBuffer) +typedef struct _REPARSE_DATA_BUFFER +{ + ULONG ReparseTag; + USHORT ReparseDataLength; + USHORT Reserved; + union + { + struct + { + USHORT SubstituteNameOffset; + USHORT SubstituteNameLength; + USHORT PrintNameOffset; + USHORT PrintNameLength; + ULONG Flags; + WCHAR PathBuffer[1]; + } SymbolicLinkReparseBuffer; + struct + { + USHORT SubstituteNameOffset; + USHORT SubstituteNameLength; + USHORT PrintNameOffset; + USHORT PrintNameLength; + WCHAR PathBuffer[1]; + } MountPointReparseBuffer; + struct + { + UCHAR DataBuffer[1]; + } GenericReparseBuffer; + } DUMMYUNIONNAME; +} REPARSE_DATA_BUFFER, *PREPARSE_DATA_BUFFER; +#endif + +/* + * The FILE_FULL_EA_INFORMATION definitions are missing from the user mode headers. + */ +#if !defined(FILE_NEED_EA) +#define FILE_NEED_EA 0x00000080 +#endif +#if !defined(__MINGW32__) +typedef struct _FILE_FULL_EA_INFORMATION +{ + ULONG NextEntryOffset; + UCHAR Flags; + UCHAR EaNameLength; + USHORT EaValueLength; + CHAR EaName[1]; +} FILE_FULL_EA_INFORMATION, *PFILE_FULL_EA_INFORMATION; +#endif + +/** + * @group File System + * + * A user mode file system is a program that uses the WinFsp API to expose a file system to + * Windows. The user mode file system must implement the operations in FSP_FILE_SYSTEM_INTERFACE, + * create a file system object using FspFileSystemCreate and start its dispatcher using + * FspFileSystemStartDispatcher. At that point it will start receiving file system requests on the + * FSP_FILE_SYSTEM_INTERFACE operations. + */ +typedef struct _FSP_FILE_SYSTEM FSP_FILE_SYSTEM; +typedef NTSTATUS FSP_FILE_SYSTEM_OPERATION_GUARD(FSP_FILE_SYSTEM *, + FSP_FSCTL_TRANSACT_REQ *, FSP_FSCTL_TRANSACT_RSP *); +typedef NTSTATUS FSP_FILE_SYSTEM_OPERATION(FSP_FILE_SYSTEM *, + FSP_FSCTL_TRANSACT_REQ *, FSP_FSCTL_TRANSACT_RSP *); +/** + * User mode file system locking strategy. + * + * Two concurrency models are provided: + * + * 1. A fine-grained concurrency model where file system NAMESPACE accesses + * are guarded using an exclusive-shared (read-write) lock. File I/O is not + * guarded and concurrent reads/writes/etc. are possible. [Note that the FSD + * will still apply an exclusive-shared lock PER INDIVIDUAL FILE, but it will + * not limit I/O operations for different files.] + * + * The fine-grained concurrency model applies the exclusive-shared lock as + * follows: + *
      + *
    • EXCL: SetVolumeLabel, Flush(Volume), + * Create, Cleanup(Delete), SetInformation(Rename)
    • + *
    • SHRD: GetVolumeInfo, Open, SetInformation(Disposition), ReadDirectory
    • + *
    • NONE: all other operations
    • + *
    + * + * 2. A coarse-grained concurrency model where all file system accesses are + * guarded by a mutually exclusive lock. + * + * @see FspFileSystemSetOperationGuardStrategy + */ +typedef enum +{ + FSP_FILE_SYSTEM_OPERATION_GUARD_STRATEGY_FINE = 0, + FSP_FILE_SYSTEM_OPERATION_GUARD_STRATEGY_COARSE, +} FSP_FILE_SYSTEM_OPERATION_GUARD_STRATEGY; +enum +{ + FspCleanupDelete = 0x01, + FspCleanupSetAllocationSize = 0x02, + FspCleanupSetArchiveBit = 0x10, + FspCleanupSetLastAccessTime = 0x20, + FspCleanupSetLastWriteTime = 0x40, + FspCleanupSetChangeTime = 0x80, +}; +/** + * @class FSP_FILE_SYSTEM + * File system interface. + * + * The operations in this interface must be implemented by the user mode + * file system. Not all operations need be implemented. For example, + * a user mode file system that does not wish to support reparse points, + * need not implement the reparse point operations. + * + * Most of the operations accept a FileContext parameter. This parameter + * has different meanings depending on the value of the FSP_FSCTL_VOLUME_PARAMS + * flags UmFileContextIsUserContext2 and UmFileContextIsFullContext. + * + * There are three cases to consider: + *
      + *
    • When both of these flags are unset (default), the FileContext parameter + * represents the file node. The file node is a void pointer (or an integer + * that can fit in a pointer) that is used to uniquely identify an open file. + * Opening the same file name should always yield the same file node value + * for as long as the file with that name remains open anywhere in the system. + *
    • + *
    • When the UmFileContextIsUserContext2 is set, the FileContext parameter + * represents the file descriptor. The file descriptor is a void pointer (or + * an integer that can fit in a pointer) that is used to identify an open + * instance of a file. Opening the same file name may yield a different file + * descriptor. + *
    • + *
    • When the UmFileContextIsFullContext is set, the FileContext parameter + * is a pointer to a FSP_FSCTL_TRANSACT_FULL_CONTEXT. This allows a user mode + * file system to access the low-level UserContext and UserContext2 values. + * The UserContext is used to store the file node and the UserContext2 is + * used to store the file descriptor for an open file. + *
    • + *
    + */ +typedef struct _FSP_FILE_SYSTEM_INTERFACE +{ + /** + * Get volume information. + * + * @param FileSystem + * The file system on which this request is posted. + * @param VolumeInfo [out] + * Pointer to a structure that will receive the volume information on successful return + * from this call. + * @return + * STATUS_SUCCESS or error code. + */ + NTSTATUS (*GetVolumeInfo)(FSP_FILE_SYSTEM *FileSystem, + FSP_FSCTL_VOLUME_INFO *VolumeInfo); + /** + * Set volume label. + * + * @param FileSystem + * The file system on which this request is posted. + * @param VolumeLabel + * The new label for the volume. + * @param VolumeInfo [out] + * Pointer to a structure that will receive the volume information on successful return + * from this call. + * @return + * STATUS_SUCCESS or error code. + */ + NTSTATUS (*SetVolumeLabel)(FSP_FILE_SYSTEM *FileSystem, + PWSTR VolumeLabel, + FSP_FSCTL_VOLUME_INFO *VolumeInfo); + /** + * Get file or directory attributes and security descriptor given a file name. + * + * @param FileSystem + * The file system on which this request is posted. + * @param FileName + * The name of the file or directory to get the attributes and security descriptor for. + * @param PFileAttributes + * Pointer to a memory location that will receive the file attributes on successful return + * from this call. May be NULL. + * + * If this call returns STATUS_REPARSE, the file system MAY place here the index of the + * first reparse point within FileName. The file system MAY also leave this at its default + * value of 0. + * @param SecurityDescriptor + * Pointer to a buffer that will receive the file security descriptor on successful return + * from this call. May be NULL. + * @param PSecurityDescriptorSize [in,out] + * Pointer to the security descriptor buffer size. On input it contains the size of the + * security descriptor buffer. On output it will contain the actual size of the security + * descriptor copied into the security descriptor buffer. May be NULL. + * @return + * STATUS_SUCCESS, STATUS_REPARSE or error code. + * + * STATUS_REPARSE should be returned by file systems that support reparse points when + * they encounter a FileName that contains reparse points anywhere but the final path + * component. + */ + NTSTATUS (*GetSecurityByName)(FSP_FILE_SYSTEM *FileSystem, + PWSTR FileName, PUINT32 PFileAttributes/* or ReparsePointIndex */, + PSECURITY_DESCRIPTOR SecurityDescriptor, SIZE_T *PSecurityDescriptorSize); + /** + * Create new file or directory. + * + * @param FileSystem + * The file system on which this request is posted. + * @param FileName + * The name of the file or directory to be created. + * @param CreateOptions + * Create options for this request. This parameter has the same meaning as the + * CreateOptions parameter of the NtCreateFile API. User mode file systems should typically + * only be concerned with the flag FILE_DIRECTORY_FILE, which is an instruction to create a + * directory rather than a file. Some file systems may also want to pay attention to the + * FILE_NO_INTERMEDIATE_BUFFERING and FILE_WRITE_THROUGH flags, although these are + * typically handled by the FSD component. + * @param GrantedAccess + * Determines the specific access rights that have been granted for this request. Upon + * receiving this call all access checks have been performed and the user mode file system + * need not perform any additional checks. However this parameter may be useful to a user + * mode file system; for example the WinFsp-FUSE layer uses this parameter to determine + * which flags to use in its POSIX open() call. + * @param FileAttributes + * File attributes to apply to the newly created file or directory. + * @param SecurityDescriptor + * Security descriptor to apply to the newly created file or directory. This security + * descriptor will always be in self-relative format. Its length can be retrieved using the + * Windows GetSecurityDescriptorLength API. Will be NULL for named streams. + * @param AllocationSize + * Allocation size for the newly created file. + * @param PFileContext [out] + * Pointer that will receive the file context on successful return from this call. + * @param FileInfo [out] + * Pointer to a structure that will receive the file information on successful return + * from this call. This information includes file attributes, file times, etc. + * @return + * STATUS_SUCCESS or error code. + */ + NTSTATUS (*Create)(FSP_FILE_SYSTEM *FileSystem, + PWSTR FileName, UINT32 CreateOptions, UINT32 GrantedAccess, + UINT32 FileAttributes, PSECURITY_DESCRIPTOR SecurityDescriptor, UINT64 AllocationSize, + PVOID *PFileContext, FSP_FSCTL_FILE_INFO *FileInfo); + /** + * Open a file or directory. + * + * @param FileSystem + * The file system on which this request is posted. + * @param FileName + * The name of the file or directory to be opened. + * @param CreateOptions + * Create options for this request. This parameter has the same meaning as the + * CreateOptions parameter of the NtCreateFile API. User mode file systems typically + * do not need to do anything special with respect to this parameter. Some file systems may + * also want to pay attention to the FILE_NO_INTERMEDIATE_BUFFERING and FILE_WRITE_THROUGH + * flags, although these are typically handled by the FSD component. + * @param GrantedAccess + * Determines the specific access rights that have been granted for this request. Upon + * receiving this call all access checks have been performed and the user mode file system + * need not perform any additional checks. However this parameter may be useful to a user + * mode file system; for example the WinFsp-FUSE layer uses this parameter to determine + * which flags to use in its POSIX open() call. + * @param PFileContext [out] + * Pointer that will receive the file context on successful return from this call. + * @param FileInfo [out] + * Pointer to a structure that will receive the file information on successful return + * from this call. This information includes file attributes, file times, etc. + * @return + * STATUS_SUCCESS or error code. + */ + NTSTATUS (*Open)(FSP_FILE_SYSTEM *FileSystem, + PWSTR FileName, UINT32 CreateOptions, UINT32 GrantedAccess, + PVOID *PFileContext, FSP_FSCTL_FILE_INFO *FileInfo); + /** + * Overwrite a file. + * + * @param FileSystem + * The file system on which this request is posted. + * @param FileContext + * The file context of the file to overwrite. + * @param FileAttributes + * File attributes to apply to the overwritten file. + * @param ReplaceFileAttributes + * When TRUE the existing file attributes should be replaced with the new ones. + * When FALSE the existing file attributes should be merged (or'ed) with the new ones. + * @param AllocationSize + * Allocation size for the overwritten file. + * @param FileInfo [out] + * Pointer to a structure that will receive the file information on successful return + * from this call. This information includes file attributes, file times, etc. + * @return + * STATUS_SUCCESS or error code. + */ + NTSTATUS (*Overwrite)(FSP_FILE_SYSTEM *FileSystem, + PVOID FileContext, UINT32 FileAttributes, BOOLEAN ReplaceFileAttributes, UINT64 AllocationSize, + FSP_FSCTL_FILE_INFO *FileInfo); + /** + * Cleanup a file. + * + * When CreateFile is used to open or create a file the kernel creates a kernel mode file + * object (type FILE_OBJECT) and a handle for it, which it returns to user-mode. The handle may + * be duplicated (using DuplicateHandle), but all duplicate handles always refer to the same + * file object. When all handles for a particular file object get closed (using CloseHandle) + * the system sends a Cleanup request to the file system. + * + * There will be a Cleanup operation for every Create or Open operation posted to the user mode + * file system. However the Cleanup operation is not the final close operation on a file. + * The file system must be ready to receive additional operations until close time. This is true + * even when the file is being deleted! + * + * The Flags parameter contains information about the cleanup operation: + *
      + *
    • FspCleanupDelete - + * An important function of the Cleanup operation is to complete a delete operation. Deleting + * a file or directory in Windows is a three-stage process where the file is first opened, then + * tested to see if the delete can proceed and if the answer is positive the file is then + * deleted during Cleanup. + * + * If the file system supports POSIX unlink (FSP_FSCTL_VOLUME_PARAMS :: + * SupportsPosixUnlinkRename), then a Cleanup / FspCleanupDelete operation may arrive while + * there are other open file handles for this particular file node. If the file system does not + * support POSIX unlink, then a Cleanup / FspCleanupDelete operation will always be the last + * outstanding cleanup for this particular file node. + *
    • + *
    • FspCleanupSetAllocationSize - + * The NTFS and FAT file systems reset a file's allocation size when they receive the last + * outstanding cleanup for a particular file node. User mode file systems that implement + * allocation size and wish to duplicate the NTFS and FAT behavior can use this flag. + *
    • + *
    • + * FspCleanupSetArchiveBit - + * File systems that support the archive bit should set the file node's archive bit when this + * flag is set. + *
    • + *
    • FspCleanupSetLastAccessTime, FspCleanupSetLastWriteTime, FspCleanupSetChangeTime - File + * systems should set the corresponding file time when each one of these flags is set. Note that + * updating the last access time is expensive and a file system may choose to not implement it. + *
    + * + * There is no way to report failure of this operation. This is a Windows limitation. + * + * As an optimization a file system may specify the FSP_FSCTL_VOLUME_PARAMS :: + * PostCleanupWhenModifiedOnly flag. In this case the FSD will only post Cleanup requests when + * the file was modified/deleted. + * + * @param FileSystem + * The file system on which this request is posted. + * @param FileContext + * The file context of the file or directory to cleanup. + * @param FileName + * The name of the file or directory to cleanup. Sent only when a Delete is requested. + * @param Flags + * These flags determine whether the file was modified and whether to delete the file. + * @see + * Close + * CanDelete + * SetDelete + */ + VOID (*Cleanup)(FSP_FILE_SYSTEM *FileSystem, + PVOID FileContext, PWSTR FileName, ULONG Flags); + /** + * Close a file. + * + * @param FileSystem + * The file system on which this request is posted. + * @param FileContext + * The file context of the file or directory to be closed. + */ + VOID (*Close)(FSP_FILE_SYSTEM *FileSystem, + PVOID FileContext); + /** + * Read a file. + * + * @param FileSystem + * The file system on which this request is posted. + * @param FileContext + * The file context of the file to be read. + * @param Buffer + * Pointer to a buffer that will receive the results of the read operation. + * @param Offset + * Offset within the file to read from. + * @param Length + * Length of data to read. + * @param PBytesTransferred [out] + * Pointer to a memory location that will receive the actual number of bytes read. + * @return + * STATUS_SUCCESS or error code. STATUS_PENDING is supported allowing for asynchronous + * operation. + */ + NTSTATUS (*Read)(FSP_FILE_SYSTEM *FileSystem, + PVOID FileContext, PVOID Buffer, UINT64 Offset, ULONG Length, + PULONG PBytesTransferred); + /** + * Write a file. + * + * @param FileSystem + * The file system on which this request is posted. + * @param FileContext + * The file context of the file to be written. + * @param Buffer + * Pointer to a buffer that contains the data to write. + * @param Offset + * Offset within the file to write to. + * @param Length + * Length of data to write. + * @param WriteToEndOfFile + * When TRUE the file system must write to the current end of file. In this case the Offset + * parameter will contain the value -1. + * @param ConstrainedIo + * When TRUE the file system must not extend the file (i.e. change the file size). + * @param PBytesTransferred [out] + * Pointer to a memory location that will receive the actual number of bytes written. + * @param FileInfo [out] + * Pointer to a structure that will receive the file information on successful return + * from this call. This information includes file attributes, file times, etc. + * @return + * STATUS_SUCCESS or error code. STATUS_PENDING is supported allowing for asynchronous + * operation. + */ + NTSTATUS (*Write)(FSP_FILE_SYSTEM *FileSystem, + PVOID FileContext, PVOID Buffer, UINT64 Offset, ULONG Length, + BOOLEAN WriteToEndOfFile, BOOLEAN ConstrainedIo, + PULONG PBytesTransferred, FSP_FSCTL_FILE_INFO *FileInfo); + /** + * Flush a file or volume. + * + * Note that the FSD will also flush all file/volume caches prior to invoking this operation. + * + * @param FileSystem + * The file system on which this request is posted. + * @param FileContext + * The file context of the file to be flushed. When NULL the whole volume is being flushed. + * @param FileInfo [out] + * Pointer to a structure that will receive the file information on successful return + * from this call. This information includes file attributes, file times, etc. Used when + * flushing file (not volume). + * @return + * STATUS_SUCCESS or error code. + */ + NTSTATUS (*Flush)(FSP_FILE_SYSTEM *FileSystem, + PVOID FileContext, + FSP_FSCTL_FILE_INFO *FileInfo); + /** + * Get file or directory information. + * + * @param FileSystem + * The file system on which this request is posted. + * @param FileContext + * The file context of the file or directory to get information for. + * @param FileInfo [out] + * Pointer to a structure that will receive the file information on successful return + * from this call. This information includes file attributes, file times, etc. + * @return + * STATUS_SUCCESS or error code. + */ + NTSTATUS (*GetFileInfo)(FSP_FILE_SYSTEM *FileSystem, + PVOID FileContext, + FSP_FSCTL_FILE_INFO *FileInfo); + /** + * Set file or directory basic information. + * + * @param FileSystem + * The file system on which this request is posted. + * @param FileContext + * The file context of the file or directory to set information for. + * @param FileAttributes + * File attributes to apply to the file or directory. If the value INVALID_FILE_ATTRIBUTES + * is sent, the file attributes should not be changed. + * @param CreationTime + * Creation time to apply to the file or directory. If the value 0 is sent, the creation + * time should not be changed. + * @param LastAccessTime + * Last access time to apply to the file or directory. If the value 0 is sent, the last + * access time should not be changed. + * @param LastWriteTime + * Last write time to apply to the file or directory. If the value 0 is sent, the last + * write time should not be changed. + * @param ChangeTime + * Change time to apply to the file or directory. If the value 0 is sent, the change time + * should not be changed. + * @param FileInfo [out] + * Pointer to a structure that will receive the file information on successful return + * from this call. This information includes file attributes, file times, etc. + * @return + * STATUS_SUCCESS or error code. + */ + NTSTATUS (*SetBasicInfo)(FSP_FILE_SYSTEM *FileSystem, + PVOID FileContext, UINT32 FileAttributes, + UINT64 CreationTime, UINT64 LastAccessTime, UINT64 LastWriteTime, UINT64 ChangeTime, + FSP_FSCTL_FILE_INFO *FileInfo); + /** + * Set file/allocation size. + * + * This function is used to change a file's sizes. Windows file systems maintain two kinds + * of sizes: the file size is where the End Of File (EOF) is, and the allocation size is the + * actual size that a file takes up on the "disk". + * + * The rules regarding file/allocation size are: + *
      + *
    • Allocation size must always be aligned to the allocation unit boundary. The allocation + * unit is the product (UINT64)SectorSize * (UINT64)SectorsPerAllocationUnit from + * the FSP_FSCTL_VOLUME_PARAMS structure. The FSD will always send properly aligned allocation + * sizes when setting the allocation size.
    • + *
    • Allocation size is always greater or equal to the file size.
    • + *
    • A file size of more than the current allocation size will also extend the allocation + * size to the next allocation unit boundary.
    • + *
    • An allocation size of less than the current file size should also truncate the current + * file size.
    • + *
    + * + * @param FileSystem + * The file system on which this request is posted. + * @param FileContext + * The file context of the file to set the file/allocation size for. + * @param NewSize + * New file/allocation size to apply to the file. + * @param SetAllocationSize + * If TRUE, then the allocation size is being set. if FALSE, then the file size is being set. + * @param FileInfo [out] + * Pointer to a structure that will receive the file information on successful return + * from this call. This information includes file attributes, file times, etc. + * @return + * STATUS_SUCCESS or error code. + */ + NTSTATUS (*SetFileSize)(FSP_FILE_SYSTEM *FileSystem, + PVOID FileContext, UINT64 NewSize, BOOLEAN SetAllocationSize, + FSP_FSCTL_FILE_INFO *FileInfo); + /** + * Determine whether a file or directory can be deleted. + * + * This function tests whether a file or directory can be safely deleted. This function does + * not need to perform access checks, but may performs tasks such as check for empty + * directories, etc. + * + * This function should NEVER delete the file or directory in question. Deletion should + * happen during Cleanup with the FspCleanupDelete flag set. + * + * This function gets called when Win32 API's such as DeleteFile or RemoveDirectory are used. + * It does not get called when a file or directory is opened with FILE_DELETE_ON_CLOSE. + * + * NOTE: If both CanDelete and SetDelete are defined, SetDelete takes precedence. However + * most file systems need only implement the CanDelete operation. + * + * @param FileSystem + * The file system on which this request is posted. + * @param FileContext + * The file context of the file or directory to test for deletion. + * @param FileName + * The name of the file or directory to test for deletion. + * @return + * STATUS_SUCCESS or error code. + * @see + * Cleanup + * SetDelete + */ + NTSTATUS (*CanDelete)(FSP_FILE_SYSTEM *FileSystem, + PVOID FileContext, PWSTR FileName); + /** + * Renames a file or directory. + * + * The kernel mode FSD provides certain guarantees prior to posting a rename operation: + *
      + *
    • A file cannot be renamed if a file with the same name exists and has open handles.
    • + *
    • A directory cannot be renamed if it or any of its subdirectories contains a file that + * has open handles.
    • + *
    + * + * @param FileSystem + * The file system on which this request is posted. + * @param FileContext + * The file context of the file or directory to be renamed. + * @param FileName + * The current name of the file or directory to rename. + * @param NewFileName + * The new name for the file or directory. + * @param ReplaceIfExists + * Whether to replace a file that already exists at NewFileName. + * @return + * STATUS_SUCCESS or error code. + */ + NTSTATUS (*Rename)(FSP_FILE_SYSTEM *FileSystem, + PVOID FileContext, + PWSTR FileName, PWSTR NewFileName, BOOLEAN ReplaceIfExists); + /** + * Get file or directory security descriptor. + * + * @param FileSystem + * The file system on which this request is posted. + * @param FileContext + * The file context of the file or directory to get the security descriptor for. + * @param SecurityDescriptor + * Pointer to a buffer that will receive the file security descriptor on successful return + * from this call. May be NULL. + * @param PSecurityDescriptorSize [in,out] + * Pointer to the security descriptor buffer size. On input it contains the size of the + * security descriptor buffer. On output it will contain the actual size of the security + * descriptor copied into the security descriptor buffer. Cannot be NULL. + * @return + * STATUS_SUCCESS or error code. + */ + NTSTATUS (*GetSecurity)(FSP_FILE_SYSTEM *FileSystem, + PVOID FileContext, + PSECURITY_DESCRIPTOR SecurityDescriptor, SIZE_T *PSecurityDescriptorSize); + /** + * Set file or directory security descriptor. + * + * @param FileSystem + * The file system on which this request is posted. + * @param FileContext + * The file context of the file or directory to set the security descriptor for. + * @param SecurityInformation + * Describes what parts of the file or directory security descriptor should + * be modified. + * @param ModificationDescriptor + * Describes the modifications to apply to the file or directory security descriptor. + * @return + * STATUS_SUCCESS or error code. + * @see + * FspSetSecurityDescriptor + * FspDeleteSecurityDescriptor + */ + NTSTATUS (*SetSecurity)(FSP_FILE_SYSTEM *FileSystem, + PVOID FileContext, + SECURITY_INFORMATION SecurityInformation, PSECURITY_DESCRIPTOR ModificationDescriptor); + /** + * Read a directory. + * + * @param FileSystem + * The file system on which this request is posted. + * @param FileContext + * The file context of the directory to be read. + * @param Pattern + * The pattern to match against files in this directory. Can be NULL. The file system + * can choose to ignore this parameter as the FSD will always perform its own pattern + * matching on the returned results. + * @param Marker + * A file name that marks where in the directory to start reading. Files with names + * that are greater than (not equal to) this marker (in the directory order determined + * by the file system) should be returned. Can be NULL. + * @param Buffer + * Pointer to a buffer that will receive the results of the read operation. + * @param Length + * Length of data to read. + * @param PBytesTransferred [out] + * Pointer to a memory location that will receive the actual number of bytes read. + * @return + * STATUS_SUCCESS or error code. STATUS_PENDING is supported allowing for asynchronous + * operation. + * @see + * FspFileSystemAddDirInfo + */ + NTSTATUS (*ReadDirectory)(FSP_FILE_SYSTEM *FileSystem, + PVOID FileContext, PWSTR Pattern, PWSTR Marker, + PVOID Buffer, ULONG Length, PULONG PBytesTransferred); + /** + * Resolve reparse points. + * + * Reparse points are a general mechanism for attaching special behavior to files. + * A file or directory can contain a reparse point. A reparse point is data that has + * special meaning to the file system, Windows or user applications. For example, NTFS + * and Windows use reparse points to implement symbolic links. As another example, + * a particular file system may use reparse points to emulate UNIX FIFO's. + * + * This function is expected to resolve as many reparse points as possible. If a reparse + * point is encountered that is not understood by the file system further reparse point + * resolution should stop; the reparse point data should be returned to the FSD with status + * STATUS_REPARSE/reparse-tag. If a reparse point (symbolic link) is encountered that is + * understood by the file system but points outside it, the reparse point should be + * resolved, but further reparse point resolution should stop; the resolved file name + * should be returned to the FSD with status STATUS_REPARSE/IO_REPARSE. + * + * @param FileSystem + * The file system on which this request is posted. + * @param FileName + * The name of the file or directory to have its reparse points resolved. + * @param ReparsePointIndex + * The index of the first reparse point within FileName. + * @param ResolveLastPathComponent + * If FALSE, the last path component of FileName should not be resolved, even + * if it is a reparse point that can be resolved. If TRUE, all path components + * should be resolved if possible. + * @param PIoStatus + * Pointer to storage that will receive the status to return to the FSD. When + * this function succeeds it must set PIoStatus->Status to STATUS_REPARSE and + * PIoStatus->Information to either IO_REPARSE or the reparse tag. + * @param Buffer + * Pointer to a buffer that will receive the resolved file name (IO_REPARSE) or + * reparse data (reparse tag). If the function returns a file name, it should + * not be NULL terminated. + * @param PSize [in,out] + * Pointer to the buffer size. On input it contains the size of the buffer. + * On output it will contain the actual size of data copied. + * @return + * STATUS_REPARSE or error code. + */ + NTSTATUS (*ResolveReparsePoints)(FSP_FILE_SYSTEM *FileSystem, + PWSTR FileName, UINT32 ReparsePointIndex, BOOLEAN ResolveLastPathComponent, + PIO_STATUS_BLOCK PIoStatus, PVOID Buffer, PSIZE_T PSize); + /** + * Get reparse point. + * + * @param FileSystem + * The file system on which this request is posted. + * @param FileContext + * The file context of the reparse point. + * @param FileName + * The file name of the reparse point. + * @param Buffer + * Pointer to a buffer that will receive the results of this operation. If + * the function returns a symbolic link path, it should not be NULL terminated. + * @param PSize [in,out] + * Pointer to the buffer size. On input it contains the size of the buffer. + * On output it will contain the actual size of data copied. + * @return + * STATUS_SUCCESS or error code. + * @see + * SetReparsePoint + */ + NTSTATUS (*GetReparsePoint)(FSP_FILE_SYSTEM *FileSystem, + PVOID FileContext, + PWSTR FileName, PVOID Buffer, PSIZE_T PSize); + /** + * Set reparse point. + * + * @param FileSystem + * The file system on which this request is posted. + * @param FileContext + * The file context of the reparse point. + * @param FileName + * The file name of the reparse point. + * @param Buffer + * Pointer to a buffer that contains the data for this operation. If this buffer + * contains a symbolic link path, it should not be assumed to be NULL terminated. + * @param Size + * Size of data to write. + * @return + * STATUS_SUCCESS or error code. + * @see + * GetReparsePoint + */ + NTSTATUS (*SetReparsePoint)(FSP_FILE_SYSTEM *FileSystem, + PVOID FileContext, + PWSTR FileName, PVOID Buffer, SIZE_T Size); + /** + * Delete reparse point. + * + * @param FileSystem + * The file system on which this request is posted. + * @param FileContext + * The file context of the reparse point. + * @param FileName + * The file name of the reparse point. + * @param Buffer + * Pointer to a buffer that contains the data for this operation. + * @param Size + * Size of data to write. + * @return + * STATUS_SUCCESS or error code. + */ + NTSTATUS (*DeleteReparsePoint)(FSP_FILE_SYSTEM *FileSystem, + PVOID FileContext, + PWSTR FileName, PVOID Buffer, SIZE_T Size); + /** + * Get named streams information. + * + * @param FileSystem + * The file system on which this request is posted. + * @param FileContext + * The file context of the file or directory to get stream information for. + * @param Buffer + * Pointer to a buffer that will receive the stream information. + * @param Length + * Length of buffer. + * @param PBytesTransferred [out] + * Pointer to a memory location that will receive the actual number of bytes stored. + * @return + * STATUS_SUCCESS or error code. + * @see + * FspFileSystemAddStreamInfo + */ + NTSTATUS (*GetStreamInfo)(FSP_FILE_SYSTEM *FileSystem, + PVOID FileContext, PVOID Buffer, ULONG Length, + PULONG PBytesTransferred); + /** + * Get directory information for a single file or directory within a parent directory. + * + * @param FileSystem + * The file system on which this request is posted. + * @param FileContext + * The file context of the parent directory. + * @param FileName + * The name of the file or directory to get information for. This name is relative + * to the parent directory and is a single path component. + * @param DirInfo [out] + * Pointer to a structure that will receive the directory information on successful + * return from this call. This information includes the file name, but also file + * attributes, file times, etc. + * @return + * STATUS_SUCCESS or error code. + */ + NTSTATUS (*GetDirInfoByName)(FSP_FILE_SYSTEM *FileSystem, + PVOID FileContext, PWSTR FileName, + FSP_FSCTL_DIR_INFO *DirInfo); + /** + * Process control code. + * + * This function is called when a program uses the DeviceIoControl API. + * + * @param FileSystem + * The file system on which this request is posted. + * @param FileContext + * The file context of the file or directory to be controled. + * @param ControlCode + * The control code for the operation. This code must have a DeviceType with bit + * 0x8000 set and must have a TransferType of METHOD_BUFFERED. + * @param InputBuffer + * Pointer to a buffer that contains the input data. + * @param InputBufferLength + * Input data length. + * @param OutputBuffer + * Pointer to a buffer that will receive the output data. + * @param OutputBufferLength + * Output data length. + * @param PBytesTransferred [out] + * Pointer to a memory location that will receive the actual number of bytes transferred. + * @return + * STATUS_SUCCESS or error code. + */ + NTSTATUS (*Control)(FSP_FILE_SYSTEM *FileSystem, + PVOID FileContext, UINT32 ControlCode, + PVOID InputBuffer, ULONG InputBufferLength, + PVOID OutputBuffer, ULONG OutputBufferLength, PULONG PBytesTransferred); + /** + * Set the file delete flag. + * + * This function sets a flag to indicates whether the FSD file should delete a file + * when it is closed. This function does not need to perform access checks, but may + * performs tasks such as check for empty directories, etc. + * + * This function should NEVER delete the file or directory in question. Deletion should + * happen during Cleanup with the FspCleanupDelete flag set. + * + * This function gets called when Win32 API's such as DeleteFile or RemoveDirectory are used. + * It does not get called when a file or directory is opened with FILE_DELETE_ON_CLOSE. + * + * NOTE: If both CanDelete and SetDelete are defined, SetDelete takes precedence. However + * most file systems need only implement the CanDelete operation. + * + * @param FileSystem + * The file system on which this request is posted. + * @param FileContext + * The file context of the file or directory to set the delete flag for. + * @param FileName + * The name of the file or directory to set the delete flag for. + * @param DeleteFile + * If set to TRUE the FSD indicates that the file will be deleted on Cleanup; otherwise + * it will not be deleted. It is legal to receive multiple SetDelete calls for the same + * file with different DeleteFile parameters. + * @return + * STATUS_SUCCESS or error code. + * @see + * Cleanup + * CanDelete + */ + NTSTATUS (*SetDelete)(FSP_FILE_SYSTEM *FileSystem, + PVOID FileContext, PWSTR FileName, BOOLEAN DeleteFile); + /** + * Create new file or directory. + * + * This function works like Create, except that it also accepts an extra buffer that + * may contain extended attributes or a reparse point. + * + * NOTE: If both Create and CreateEx are defined, CreateEx takes precedence. + * + * @param FileSystem + * The file system on which this request is posted. + * @param FileName + * The name of the file or directory to be created. + * @param CreateOptions + * Create options for this request. This parameter has the same meaning as the + * CreateOptions parameter of the NtCreateFile API. User mode file systems should typically + * only be concerned with the flag FILE_DIRECTORY_FILE, which is an instruction to create a + * directory rather than a file. Some file systems may also want to pay attention to the + * FILE_NO_INTERMEDIATE_BUFFERING and FILE_WRITE_THROUGH flags, although these are + * typically handled by the FSD component. + * @param GrantedAccess + * Determines the specific access rights that have been granted for this request. Upon + * receiving this call all access checks have been performed and the user mode file system + * need not perform any additional checks. However this parameter may be useful to a user + * mode file system; for example the WinFsp-FUSE layer uses this parameter to determine + * which flags to use in its POSIX open() call. + * @param FileAttributes + * File attributes to apply to the newly created file or directory. + * @param SecurityDescriptor + * Security descriptor to apply to the newly created file or directory. This security + * descriptor will always be in self-relative format. Its length can be retrieved using the + * Windows GetSecurityDescriptorLength API. Will be NULL for named streams. + * @param AllocationSize + * Allocation size for the newly created file. + * @param ExtraBuffer + * Extended attributes or reparse point buffer. + * @param ExtraLength + * Extended attributes or reparse point buffer length. + * @param ExtraBufferIsReparsePoint + * FALSE: extra buffer is extended attributes; TRUE: extra buffer is reparse point. + * @param PFileContext [out] + * Pointer that will receive the file context on successful return from this call. + * @param FileInfo [out] + * Pointer to a structure that will receive the file information on successful return + * from this call. This information includes file attributes, file times, etc. + * @return + * STATUS_SUCCESS or error code. + */ + NTSTATUS (*CreateEx)(FSP_FILE_SYSTEM *FileSystem, + PWSTR FileName, UINT32 CreateOptions, UINT32 GrantedAccess, + UINT32 FileAttributes, PSECURITY_DESCRIPTOR SecurityDescriptor, UINT64 AllocationSize, + PVOID ExtraBuffer, ULONG ExtraLength, BOOLEAN ExtraBufferIsReparsePoint, + PVOID *PFileContext, FSP_FSCTL_FILE_INFO *FileInfo); + /** + * Overwrite a file. + * + * This function works like Overwrite, except that it also accepts EA (extended attributes). + * + * NOTE: If both Overwrite and OverwriteEx are defined, OverwriteEx takes precedence. + * + * @param FileSystem + * The file system on which this request is posted. + * @param FileContext + * The file context of the file to overwrite. + * @param FileAttributes + * File attributes to apply to the overwritten file. + * @param ReplaceFileAttributes + * When TRUE the existing file attributes should be replaced with the new ones. + * When FALSE the existing file attributes should be merged (or'ed) with the new ones. + * @param AllocationSize + * Allocation size for the overwritten file. + * @param Ea + * Extended attributes buffer. + * @param EaLength + * Extended attributes buffer length. + * @param FileInfo [out] + * Pointer to a structure that will receive the file information on successful return + * from this call. This information includes file attributes, file times, etc. + * @return + * STATUS_SUCCESS or error code. + */ + NTSTATUS (*OverwriteEx)(FSP_FILE_SYSTEM *FileSystem, + PVOID FileContext, UINT32 FileAttributes, BOOLEAN ReplaceFileAttributes, UINT64 AllocationSize, + PFILE_FULL_EA_INFORMATION Ea, ULONG EaLength, + FSP_FSCTL_FILE_INFO *FileInfo); + /** + * Get extended attributes. + * + * @param FileSystem + * The file system on which this request is posted. + * @param FileContext + * The file context of the file to get extended attributes for. + * @param Ea + * Extended attributes buffer. + * @param EaLength + * Extended attributes buffer length. + * @param PBytesTransferred [out] + * Pointer to a memory location that will receive the actual number of bytes transferred. + * @return + * STATUS_SUCCESS or error code. + * @see + * SetEa + * FspFileSystemAddEa + */ + NTSTATUS (*GetEa)(FSP_FILE_SYSTEM *FileSystem, + PVOID FileContext, + PFILE_FULL_EA_INFORMATION Ea, ULONG EaLength, PULONG PBytesTransferred); + /** + * Set extended attributes. + * + * @param FileSystem + * The file system on which this request is posted. + * @param FileContext + * The file context of the file to set extended attributes for. + * @param Ea + * Extended attributes buffer. + * @param EaLength + * Extended attributes buffer length. + * @param FileInfo [out] + * Pointer to a structure that will receive the file information on successful return + * from this call. This information includes file attributes, file times, etc. + * @return + * STATUS_SUCCESS or error code. + * @see + * GetEa + */ + NTSTATUS (*SetEa)(FSP_FILE_SYSTEM *FileSystem, + PVOID FileContext, + PFILE_FULL_EA_INFORMATION Ea, ULONG EaLength, + FSP_FSCTL_FILE_INFO *FileInfo); + + NTSTATUS (*Obsolete0)(VOID); + + /** + * Inform the file system that its dispatcher has been stopped. + * + * 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. + * + * @param FileSystem + * The file system on which this request is posted. + * @param 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. + * @see + * FspFileSystemStopServiceIfNecessary + */ + VOID (*DispatcherStopped)(FSP_FILE_SYSTEM *FileSystem, + BOOLEAN Normally); + + /* + * This ensures that this interface will always contain 64 function pointers. + * Please update when changing the interface as it is important for future compatibility. + */ + NTSTATUS (*Reserved[31])(); +} FSP_FILE_SYSTEM_INTERFACE; +FSP_FSCTL_STATIC_ASSERT(sizeof(FSP_FILE_SYSTEM_INTERFACE) == 64 * sizeof(NTSTATUS (*)()), + "FSP_FILE_SYSTEM_INTERFACE must have 64 entries."); +typedef struct _FSP_FILE_SYSTEM +{ + UINT16 Version; + PVOID UserContext; + WCHAR VolumeName[FSP_FSCTL_VOLUME_NAME_SIZEMAX / sizeof(WCHAR)]; + HANDLE VolumeHandle; + FSP_FILE_SYSTEM_OPERATION_GUARD *EnterOperation, *LeaveOperation; + FSP_FILE_SYSTEM_OPERATION *Operations[FspFsctlTransactKindCount]; + const FSP_FILE_SYSTEM_INTERFACE *Interface; + HANDLE DispatcherThread; + ULONG DispatcherThreadCount; + NTSTATUS DispatcherResult; + PWSTR MountPoint; + HANDLE MountHandle; + UINT32 DebugLog; + FSP_FILE_SYSTEM_OPERATION_GUARD_STRATEGY OpGuardStrategy; + SRWLOCK OpGuardLock; + BOOLEAN UmFileContextIsUserContext2, UmFileContextIsFullContext; + UINT16 UmNoReparsePointsDirCheck:1; + UINT16 UmReservedFlags:14; + UINT16 DispatcherStopping:1; +} FSP_FILE_SYSTEM; +FSP_FSCTL_STATIC_ASSERT( + (4 == sizeof(PVOID) && 660 == sizeof(FSP_FILE_SYSTEM)) || + (8 == sizeof(PVOID) && 792 == sizeof(FSP_FILE_SYSTEM)), + "sizeof(FSP_FILE_SYSTEM) must be exactly 660 in 32-bit and 792 in 64-bit."); +typedef struct _FSP_FILE_SYSTEM_OPERATION_CONTEXT +{ + FSP_FSCTL_TRANSACT_REQ *Request; + FSP_FSCTL_TRANSACT_RSP *Response; +} FSP_FILE_SYSTEM_OPERATION_CONTEXT; +/** + * Check whether creating a file system object is possible. + * + * @param 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. + * @param MountPoint + * The mount point for the new file system. A value of NULL means that the file system should + * use the next available drive letter counting downwards from Z: as its mount point. + * @return + * STATUS_SUCCESS or error code. + */ +FSP_API NTSTATUS FspFileSystemPreflight(PWSTR DevicePath, + PWSTR MountPoint); +/** + * Create a file system object. + * + * @param 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. + * @param VolumeParams + * Volume parameters for the newly created file system. + * @param Interface + * A pointer to the operations that implement this user mode file system. + * @param PFileSystem [out] + * Pointer that will receive the file system object created on successful return from this + * call. + * @return + * STATUS_SUCCESS or error code. + */ +FSP_API NTSTATUS FspFileSystemCreate(PWSTR DevicePath, + const FSP_FSCTL_VOLUME_PARAMS *VolumeParams, + const FSP_FILE_SYSTEM_INTERFACE *Interface, + FSP_FILE_SYSTEM **PFileSystem); +/** + * Delete a file system object. + * + * @param FileSystem + * The file system object. + */ +FSP_API VOID FspFileSystemDelete(FSP_FILE_SYSTEM *FileSystem); +/** + * Set the mount point for a file system. + * + * This function supports drive letters (X:) or directories as mount points: + *
      + *
    • Drive letters: Refer to the documentation of the DefineDosDevice Windows API + * to better understand how they are created.
    • + *
    • Directories: They can be used as mount points for disk based file systems. They cannot + * be used for network file systems. This is a limitation that Windows imposes on junctions.
    • + *
    + * + * @param FileSystem + * The file system object. + * @param MountPoint + * The mount point for the new file system. A value of NULL means that the file system should + * use the next available drive letter counting downwards from Z: as its mount point. + * @return + * STATUS_SUCCESS or error code. + */ +FSP_API NTSTATUS FspFileSystemSetMountPoint(FSP_FILE_SYSTEM *FileSystem, PWSTR MountPoint); +FSP_API NTSTATUS FspFileSystemSetMountPointEx(FSP_FILE_SYSTEM *FileSystem, PWSTR MountPoint, + PSECURITY_DESCRIPTOR SecurityDescriptor); +/** + * Remove the mount point for a file system. + * + * @param FileSystem + * The file system object. + */ +FSP_API VOID FspFileSystemRemoveMountPoint(FSP_FILE_SYSTEM *FileSystem); +/** + * Start the file system dispatcher. + * + * The file system dispatcher is used to dispatch operations posted by the FSD to the user mode + * file system. Once this call starts executing the user mode file system will start receiving + * file system requests from the kernel. + * + * @param FileSystem + * The file system object. + * @param ThreadCount + * The number of threads for the file system dispatcher. A value of 0 will create a default + * number of threads and should be chosen in most cases. + * @return + * STATUS_SUCCESS or error code. + */ +FSP_API NTSTATUS FspFileSystemStartDispatcher(FSP_FILE_SYSTEM *FileSystem, ULONG ThreadCount); +/** + * Stop the file system dispatcher. + * + * @param FileSystem + * The file system object. + */ +FSP_API VOID FspFileSystemStopDispatcher(FSP_FILE_SYSTEM *FileSystem); +/** + * Send a response to the FSD. + * + * This call is not required when the user mode file system performs synchronous processing of + * requests. It is possible however for the following FSP_FILE_SYSTEM_INTERFACE operations to be + * processed asynchronously: + *
      + *
    • Read
    • + *
    • Write
    • + *
    • ReadDirectory
    • + *
    + * + * These operations are allowed to return STATUS_PENDING to postpone sending a response to the FSD. + * At a later time the file system can use FspFileSystemSendResponse to send the response. + * + * @param FileSystem + * The file system object. + * @param Response + * The response buffer. + */ +FSP_API VOID FspFileSystemSendResponse(FSP_FILE_SYSTEM *FileSystem, + FSP_FSCTL_TRANSACT_RSP *Response); +/** + * Begin notifying Windows that the file system has file changes. + * + * A file system that wishes to notify Windows about file changes must + * first issue an FspFileSystemBegin call, followed by 0 or more + * FspFileSystemNotify calls, followed by an FspFileSystemNotifyEnd call. + * + * This operation blocks concurrent file rename operations. File rename + * operations may interfere with file notification, because a file being + * notified may also be concurrently renamed. After all file change + * notifications have been issued, you must make sure to call + * FspFileSystemNotifyEnd to allow file rename operations to proceed. + * + * @param FileSystem + * The file system object. + * @return + * STATUS_SUCCESS or error code. The error code STATUS_CANT_WAIT means that + * a file rename operation is currently in progress and the operation must be + * retried at a later time. + */ +FSP_API NTSTATUS FspFileSystemNotifyBegin(FSP_FILE_SYSTEM *FileSystem, ULONG Timeout); +/** + * End notifying Windows that the file system has file changes. + * + * A file system that wishes to notify Windows about file changes must + * first issue an FspFileSystemBegin call, followed by 0 or more + * FspFileSystemNotify calls, followed by an FspFileSystemNotifyEnd call. + * + * This operation allows any blocked file rename operations to proceed. + * + * @param FileSystem + * The file system object. + * @return + * STATUS_SUCCESS or error code. + */ +FSP_API NTSTATUS FspFileSystemNotifyEnd(FSP_FILE_SYSTEM *FileSystem); +/** + * Notify Windows that the file system has file changes. + * + * A file system that wishes to notify Windows about file changes must + * first issue an FspFileSystemBegin call, followed by 0 or more + * FspFileSystemNotify calls, followed by an FspFileSystemNotifyEnd call. + * + * Note that FspFileSystemNotify requires file names to be normalized. A + * normalized file name is one that contains the correct case of all characters + * in the file name. + * + * For case-sensitive file systems all file names are normalized by definition. + * For case-insensitive file systems that implement file name normalization, + * a normalized file name is the one that the file system specifies in the + * response to Create or Open (see also FspFileSystemGetOpenFileInfo). For + * case-insensitive file systems that do not implement file name normalization + * a normalized file name is the upper case version of the file name used + * to open the file. + * + * @param FileSystem + * The file system object. + * @param NotifyInfo + * Buffer containing information about file changes. + * @param Size + * Size of buffer. + * @return + * STATUS_SUCCESS or error code. + */ +FSP_API NTSTATUS FspFileSystemNotify(FSP_FILE_SYSTEM *FileSystem, + FSP_FSCTL_NOTIFY_INFO *NotifyInfo, SIZE_T Size); +/** + * Get the current operation context. + * + * This function may be used only when servicing one of the FSP_FILE_SYSTEM_INTERFACE operations. + * The current operation context is stored in thread local storage. It allows access to the + * Request and Response associated with this operation. + * + * @return + * The current operation context. + */ +FSP_API FSP_FILE_SYSTEM_OPERATION_CONTEXT *FspFileSystemGetOperationContext(VOID); +static inline +PWSTR FspFileSystemMountPoint(FSP_FILE_SYSTEM *FileSystem) +{ + return FileSystem->MountPoint; +} +FSP_API PWSTR FspFileSystemMountPointF(FSP_FILE_SYSTEM *FileSystem); +static inline +NTSTATUS FspFileSystemEnterOperation(FSP_FILE_SYSTEM *FileSystem, + FSP_FSCTL_TRANSACT_REQ *Request, FSP_FSCTL_TRANSACT_RSP *Response) +{ + if (0 == FileSystem->EnterOperation) + return STATUS_SUCCESS; + + return FileSystem->EnterOperation(FileSystem, Request, Response); +} +FSP_API NTSTATUS FspFileSystemEnterOperationF(FSP_FILE_SYSTEM *FileSystem, + FSP_FSCTL_TRANSACT_REQ *Request, FSP_FSCTL_TRANSACT_RSP *Response); +static inline +NTSTATUS FspFileSystemLeaveOperation(FSP_FILE_SYSTEM *FileSystem, + FSP_FSCTL_TRANSACT_REQ *Request, FSP_FSCTL_TRANSACT_RSP *Response) +{ + if (0 == FileSystem->LeaveOperation) + return STATUS_SUCCESS; + + return FileSystem->LeaveOperation(FileSystem, Request, Response); +} +FSP_API NTSTATUS FspFileSystemLeaveOperationF(FSP_FILE_SYSTEM *FileSystem, + FSP_FSCTL_TRANSACT_REQ *Request, FSP_FSCTL_TRANSACT_RSP *Response); +static inline +VOID FspFileSystemSetOperationGuard(FSP_FILE_SYSTEM *FileSystem, + FSP_FILE_SYSTEM_OPERATION_GUARD *EnterOperation, + FSP_FILE_SYSTEM_OPERATION_GUARD *LeaveOperation) +{ + FileSystem->EnterOperation = EnterOperation; + FileSystem->LeaveOperation = LeaveOperation; +} +FSP_API VOID FspFileSystemSetOperationGuardF(FSP_FILE_SYSTEM *FileSystem, + FSP_FILE_SYSTEM_OPERATION_GUARD *EnterOperation, + FSP_FILE_SYSTEM_OPERATION_GUARD *LeaveOperation); +/** + * Set file system locking strategy. + * + * @param FileSystem + * The file system object. + * @param GuardStrategy + * The locking (guard) strategy. + * @see + * FSP_FILE_SYSTEM_OPERATION_GUARD_STRATEGY + */ +static inline +VOID FspFileSystemSetOperationGuardStrategy(FSP_FILE_SYSTEM *FileSystem, + FSP_FILE_SYSTEM_OPERATION_GUARD_STRATEGY GuardStrategy) +{ + FileSystem->OpGuardStrategy = GuardStrategy; +} +FSP_API VOID FspFileSystemSetOperationGuardStrategyF(FSP_FILE_SYSTEM *FileSystem, + FSP_FILE_SYSTEM_OPERATION_GUARD_STRATEGY GuardStrategy); +static inline +VOID FspFileSystemSetOperation(FSP_FILE_SYSTEM *FileSystem, + ULONG Index, + FSP_FILE_SYSTEM_OPERATION *Operation) +{ + FileSystem->Operations[Index] = Operation; +} +FSP_API VOID FspFileSystemSetOperationF(FSP_FILE_SYSTEM *FileSystem, + ULONG Index, + FSP_FILE_SYSTEM_OPERATION *Operation); +static inline +VOID FspFileSystemGetDispatcherResult(FSP_FILE_SYSTEM *FileSystem, + NTSTATUS *PDispatcherResult) +{ + *PDispatcherResult = FspInterlockedLoad32((INT32 *)&FileSystem->DispatcherResult); +} +FSP_API VOID FspFileSystemGetDispatcherResultF(FSP_FILE_SYSTEM *FileSystem, + NTSTATUS *PDispatcherResult); +static inline +VOID FspFileSystemSetDispatcherResult(FSP_FILE_SYSTEM *FileSystem, + NTSTATUS DispatcherResult) +{ + if (NT_SUCCESS(DispatcherResult)) + return; + InterlockedCompareExchange(&FileSystem->DispatcherResult, DispatcherResult, 0); +} +FSP_API VOID FspFileSystemSetDispatcherResultF(FSP_FILE_SYSTEM *FileSystem, + NTSTATUS DispatcherResult); +static inline +VOID FspFileSystemSetDebugLog(FSP_FILE_SYSTEM *FileSystem, + UINT32 DebugLog) +{ + FileSystem->DebugLog = DebugLog; +} +FSP_API VOID FspFileSystemSetDebugLogF(FSP_FILE_SYSTEM *FileSystem, + UINT32 DebugLog); +static inline +BOOLEAN FspFileSystemIsOperationCaseSensitive(VOID) +{ + FSP_FSCTL_TRANSACT_REQ *Request = FspFileSystemGetOperationContext()->Request; + return + FspFsctlTransactCreateKind == Request->Kind && Request->Req.Create.CaseSensitive || + FspFsctlTransactQueryDirectoryKind == Request->Kind && Request->Req.QueryDirectory.CaseSensitive; +} +FSP_API BOOLEAN FspFileSystemIsOperationCaseSensitiveF(VOID); +/** + * Gets the originating process ID. + * + * Valid only during Create, Open and Rename requests when the target exists. + */ +static inline +UINT32 FspFileSystemOperationProcessId(VOID) +{ + FSP_FSCTL_TRANSACT_REQ *Request = FspFileSystemGetOperationContext()->Request; + switch (Request->Kind) + { + case FspFsctlTransactCreateKind: + return FSP_FSCTL_TRANSACT_REQ_TOKEN_PID(Request->Req.Create.AccessToken); + case FspFsctlTransactSetInformationKind: + if (10/*FileRenameInformation*/ == Request->Req.SetInformation.FileInformationClass || + 65/*FileRenameInformationEx*/ == Request->Req.SetInformation.FileInformationClass) + return FSP_FSCTL_TRANSACT_REQ_TOKEN_PID(Request->Req.SetInformation.Info.Rename.AccessToken); + /* fall through! */ + default: + return 0; + } +} +FSP_API UINT32 FspFileSystemOperationProcessIdF(VOID); + +/* + * Operations + */ +FSP_API NTSTATUS FspFileSystemOpEnter(FSP_FILE_SYSTEM *FileSystem, + FSP_FSCTL_TRANSACT_REQ *Request, FSP_FSCTL_TRANSACT_RSP *Response); +FSP_API NTSTATUS FspFileSystemOpLeave(FSP_FILE_SYSTEM *FileSystem, + FSP_FSCTL_TRANSACT_REQ *Request, FSP_FSCTL_TRANSACT_RSP *Response); +FSP_API NTSTATUS FspFileSystemOpCreate(FSP_FILE_SYSTEM *FileSystem, + FSP_FSCTL_TRANSACT_REQ *Request, FSP_FSCTL_TRANSACT_RSP *Response); +FSP_API NTSTATUS FspFileSystemOpOverwrite(FSP_FILE_SYSTEM *FileSystem, + FSP_FSCTL_TRANSACT_REQ *Request, FSP_FSCTL_TRANSACT_RSP *Response); +FSP_API NTSTATUS FspFileSystemOpCleanup(FSP_FILE_SYSTEM *FileSystem, + FSP_FSCTL_TRANSACT_REQ *Request, FSP_FSCTL_TRANSACT_RSP *Response); +FSP_API NTSTATUS FspFileSystemOpClose(FSP_FILE_SYSTEM *FileSystem, + FSP_FSCTL_TRANSACT_REQ *Request, FSP_FSCTL_TRANSACT_RSP *Response); +FSP_API NTSTATUS FspFileSystemOpRead(FSP_FILE_SYSTEM *FileSystem, + FSP_FSCTL_TRANSACT_REQ *Request, FSP_FSCTL_TRANSACT_RSP *Response); +FSP_API NTSTATUS FspFileSystemOpWrite(FSP_FILE_SYSTEM *FileSystem, + FSP_FSCTL_TRANSACT_REQ *Request, FSP_FSCTL_TRANSACT_RSP *Response); +FSP_API NTSTATUS FspFileSystemOpQueryInformation(FSP_FILE_SYSTEM *FileSystem, + FSP_FSCTL_TRANSACT_REQ *Request, FSP_FSCTL_TRANSACT_RSP *Response); +FSP_API NTSTATUS FspFileSystemOpSetInformation(FSP_FILE_SYSTEM *FileSystem, + FSP_FSCTL_TRANSACT_REQ *Request, FSP_FSCTL_TRANSACT_RSP *Response); +FSP_API NTSTATUS FspFileSystemOpQueryEa(FSP_FILE_SYSTEM *FileSystem, + FSP_FSCTL_TRANSACT_REQ *Request, FSP_FSCTL_TRANSACT_RSP *Response); +FSP_API NTSTATUS FspFileSystemOpSetEa(FSP_FILE_SYSTEM *FileSystem, + FSP_FSCTL_TRANSACT_REQ *Request, FSP_FSCTL_TRANSACT_RSP *Response); +FSP_API NTSTATUS FspFileSystemOpFlushBuffers(FSP_FILE_SYSTEM *FileSystem, + FSP_FSCTL_TRANSACT_REQ *Request, FSP_FSCTL_TRANSACT_RSP *Response); +FSP_API NTSTATUS FspFileSystemOpQueryVolumeInformation(FSP_FILE_SYSTEM *FileSystem, + FSP_FSCTL_TRANSACT_REQ *Request, FSP_FSCTL_TRANSACT_RSP *Response); +FSP_API NTSTATUS FspFileSystemOpSetVolumeInformation(FSP_FILE_SYSTEM *FileSystem, + FSP_FSCTL_TRANSACT_REQ *Request, FSP_FSCTL_TRANSACT_RSP *Response); +FSP_API NTSTATUS FspFileSystemOpQueryDirectory(FSP_FILE_SYSTEM *FileSystem, + FSP_FSCTL_TRANSACT_REQ *Request, FSP_FSCTL_TRANSACT_RSP *Response); +FSP_API NTSTATUS FspFileSystemOpFileSystemControl(FSP_FILE_SYSTEM *FileSystem, + FSP_FSCTL_TRANSACT_REQ *Request, FSP_FSCTL_TRANSACT_RSP *Response); +FSP_API NTSTATUS FspFileSystemOpDeviceControl(FSP_FILE_SYSTEM *FileSystem, + FSP_FSCTL_TRANSACT_REQ *Request, FSP_FSCTL_TRANSACT_RSP *Response); +FSP_API NTSTATUS FspFileSystemOpQuerySecurity(FSP_FILE_SYSTEM *FileSystem, + FSP_FSCTL_TRANSACT_REQ *Request, FSP_FSCTL_TRANSACT_RSP *Response); +FSP_API NTSTATUS FspFileSystemOpSetSecurity(FSP_FILE_SYSTEM *FileSystem, + FSP_FSCTL_TRANSACT_REQ *Request, FSP_FSCTL_TRANSACT_RSP *Response); +FSP_API NTSTATUS FspFileSystemOpQueryStreamInformation(FSP_FILE_SYSTEM *FileSystem, + FSP_FSCTL_TRANSACT_REQ *Request, FSP_FSCTL_TRANSACT_RSP *Response); + +/* + * Helpers + */ +/** + * Get open information buffer. + * + * This is a helper for implementing the Create and Open operations. It cannot be used with + * any other operations. + * + * The FileInfo parameter to Create and Open is typed as pointer to FSP_FSCTL_FILE_INFO. The + * true type of this parameter is pointer to FSP_FSCTL_OPEN_FILE_INFO. This simple function + * converts from one type to the other. + * + * The FSP_FSCTL_OPEN_FILE_INFO type contains a FSP_FSCTL_FILE_INFO as well as the fields + * NormalizedName and NormalizedNameSize. These fields can be used for file name normalization. + * File name normalization is used to ensure that the FSD and the OS know the correct case + * of a newly opened file name. + * + * For case-sensitive file systems this functionality should be ignored. The FSD will always + * assume that the normalized file name is the same as the file name used to open the file. + * + * For case-insensitive file systems this functionality may be ignored. In this case the FSD + * will assume that the normalized file name is the upper case version of the file name used + * to open the file. The file system will work correctly and the only way an application will + * be able to tell that the file system does not preserve case in normalized file names is by + * issuing a GetFinalPathNameByHandle API call (or NtQueryInformationFile with + * FileNameInformation/FileNormalizedNameInformation). + * + * For case-insensitive file systems this functionality may also be used. In this case the + * user mode file system may use the NormalizedName and NormalizedNameSize parameters to + * report to the FSD the normalized file name. It should be noted that the normalized file + * name may only differ in case from the file name used to open the file. The NormalizedName + * field will point to a buffer that can receive the normalized file name. The + * NormalizedNameSize field will contain the size of the normalized file name buffer. On + * completion of the Create or Open operation it should contain the actual size of the + * normalized file name copied into the normalized file name buffer. The normalized file name + * should not contain a terminating zero. + * + * @param FileInfo + * The FileInfo parameter as passed to Create or Open operation. + * @return + * A pointer to the open information buffer for this Create or Open operation. + * @see + * Create + * Open + */ +static inline +FSP_FSCTL_OPEN_FILE_INFO *FspFileSystemGetOpenFileInfo(FSP_FSCTL_FILE_INFO *FileInfo) +{ + return (FSP_FSCTL_OPEN_FILE_INFO *)FileInfo; +} +/** + * Add directory information to a buffer. + * + * This is a helper for implementing the ReadDirectory operation. + * + * @param DirInfo + * The directory information to add. A value of NULL acts as an EOF marker for a ReadDirectory + * operation. + * @param Buffer + * Pointer to a buffer that will receive the results of the read operation. This should contain + * the same value passed to the ReadDirectory Buffer parameter. + * @param Length + * Length of data to read. This should contain the same value passed to the ReadDirectory + * Length parameter. + * @param PBytesTransferred [out] + * Pointer to a memory location that will receive the actual number of bytes read. This should + * contain the same value passed to the ReadDirectory PBytesTransferred parameter. + * FspFileSystemAddDirInfo uses the value pointed by this parameter to track how much of the + * buffer has been used so far. + * @return + * TRUE if the directory information was added, FALSE if there was not enough space to add it. + * @see + * ReadDirectory + */ +FSP_API BOOLEAN FspFileSystemAddDirInfo(FSP_FSCTL_DIR_INFO *DirInfo, + PVOID Buffer, ULONG Length, PULONG PBytesTransferred); +/** + * Find reparse point in file name. + * + * Given a file name this function returns an index to the first path component that is a reparse + * point. The function will call the supplied GetReparsePointByName function for every path + * component until it finds a reparse point or the whole path is processed. + * + * This is a helper for implementing the GetSecurityByName operation in file systems + * that support reparse points. + * + * @param FileSystem + * The file system object. + * @param GetReparsePointByName + * Pointer to function that can retrieve reparse point information by name. The + * FspFileSystemFindReparsePoint will call this function with the Buffer and PSize + * arguments set to NULL. The function should return STATUS_SUCCESS if the passed + * FileName is a reparse point or STATUS_NOT_A_REPARSE_POINT (or other error code) + * otherwise. + * @param Context + * User context to supply to GetReparsePointByName. + * @param FileName + * The name of the file or directory. + * @param PReparsePointIndex + * Pointer to a memory location that will receive the index of the first reparse point + * within FileName. A value is only placed in this memory location if the function returns + * TRUE. May be NULL. + * @return + * TRUE if a reparse point was found, FALSE otherwise. + * @see + * GetSecurityByName + */ +FSP_API BOOLEAN FspFileSystemFindReparsePoint(FSP_FILE_SYSTEM *FileSystem, + NTSTATUS (*GetReparsePointByName)( + FSP_FILE_SYSTEM *FileSystem, PVOID Context, + PWSTR FileName, BOOLEAN IsDirectory, PVOID Buffer, PSIZE_T PSize), + PVOID Context, + PWSTR FileName, PUINT32 PReparsePointIndex); +/** + * Resolve reparse points. + * + * Given a file name (and an index where to start resolving) this function will attempt to + * resolve as many reparse points as possible. The function will call the supplied + * GetReparsePointByName function for every path component until it resolves the reparse points + * or the whole path is processed. + * + * This is a helper for implementing the ResolveReparsePoints operation in file systems + * that support reparse points. + * + * @param FileSystem + * The file system object. + * @param GetReparsePointByName + * Pointer to function that can retrieve reparse point information by name. The function + * should return STATUS_SUCCESS if the passed FileName is a reparse point or + * STATUS_NOT_A_REPARSE_POINT (or other error code) otherwise. + * @param Context + * User context to supply to GetReparsePointByName. + * @param FileName + * The name of the file or directory to have its reparse points resolved. + * @param ReparsePointIndex + * The index of the first reparse point within FileName. + * @param ResolveLastPathComponent + * If FALSE, the last path component of FileName should not be resolved, even + * if it is a reparse point that can be resolved. If TRUE, all path components + * should be resolved if possible. + * @param PIoStatus + * Pointer to storage that will receive the status to return to the FSD. When + * this function succeeds it must set PIoStatus->Status to STATUS_REPARSE and + * PIoStatus->Information to either IO_REPARSE or the reparse tag. + * @param Buffer + * Pointer to a buffer that will receive the resolved file name (IO_REPARSE) or + * reparse data (reparse tag). If the function returns a file name, it should + * not be NULL terminated. + * @param PSize [in,out] + * Pointer to the buffer size. On input it contains the size of the buffer. + * On output it will contain the actual size of data copied. + * @return + * STATUS_REPARSE or error code. + * @see + * ResolveReparsePoints + */ +FSP_API NTSTATUS FspFileSystemResolveReparsePoints(FSP_FILE_SYSTEM *FileSystem, + NTSTATUS (*GetReparsePointByName)( + FSP_FILE_SYSTEM *FileSystem, PVOID Context, + PWSTR FileName, BOOLEAN IsDirectory, PVOID Buffer, PSIZE_T PSize), + PVOID Context, + PWSTR FileName, UINT32 ReparsePointIndex, BOOLEAN ResolveLastPathComponent, + PIO_STATUS_BLOCK PIoStatus, PVOID Buffer, PSIZE_T PSize); +/** + * Test whether reparse data can be replaced. + * + * This is a helper for implementing the SetReparsePoint/DeleteReparsePoint operation + * in file systems that support reparse points. + * + * @param CurrentReparseData + * Pointer to the current reparse data. + * @param CurrentReparseDataSize + * Pointer to the current reparse data size. + * @param ReplaceReparseData + * Pointer to the replacement reparse data. + * @param ReplaceReparseDataSize + * Pointer to the replacement reparse data size. + * @return + * STATUS_SUCCESS or error code. + * @see + * SetReparsePoint + * DeleteReparsePoint + */ +FSP_API NTSTATUS FspFileSystemCanReplaceReparsePoint( + PVOID CurrentReparseData, SIZE_T CurrentReparseDataSize, + PVOID ReplaceReparseData, SIZE_T ReplaceReparseDataSize); +/** + * Add named stream information to a buffer. + * + * This is a helper for implementing the GetStreamInfo operation. + * + * @param StreamInfo + * The stream information to add. A value of NULL acts as an EOF marker for a GetStreamInfo + * operation. + * @param Buffer + * Pointer to a buffer that will receive the stream information. This should contain + * the same value passed to the GetStreamInfo Buffer parameter. + * @param Length + * Length of buffer. This should contain the same value passed to the GetStreamInfo + * Length parameter. + * @param PBytesTransferred [out] + * Pointer to a memory location that will receive the actual number of bytes stored. This should + * contain the same value passed to the GetStreamInfo PBytesTransferred parameter. + * @return + * TRUE if the stream information was added, FALSE if there was not enough space to add it. + * @see + * GetStreamInfo + */ +FSP_API BOOLEAN FspFileSystemAddStreamInfo(FSP_FSCTL_STREAM_INFO *StreamInfo, + PVOID Buffer, ULONG Length, PULONG PBytesTransferred); +/** + * Enumerate extended attributes in a buffer. + * + * This is a helper for implementing the CreateEx and SetEa operations in file systems + * that support extended attributes. + * + * @param FileSystem + * The file system object. + * @param EnumerateEa + * Pointer to function that receives a single extended attribute. The function + * should return STATUS_SUCCESS or an error code if unsuccessful. + * @param Context + * User context to supply to EnumEa. + * @param Ea + * Extended attributes buffer. + * @param EaLength + * Extended attributes buffer length. + * @return + * STATUS_SUCCESS or error code from EnumerateEa. + */ +FSP_API NTSTATUS FspFileSystemEnumerateEa(FSP_FILE_SYSTEM *FileSystem, + NTSTATUS (*EnumerateEa)( + FSP_FILE_SYSTEM *FileSystem, PVOID Context, + PFILE_FULL_EA_INFORMATION SingleEa), + PVOID Context, + PFILE_FULL_EA_INFORMATION Ea, ULONG EaLength); +/** + * Add extended attribute to a buffer. + * + * This is a helper for implementing the GetEa operation. + * + * @param SingleEa + * The extended attribute to add. A value of NULL acts as an EOF marker for a GetEa + * operation. + * @param Ea + * Pointer to a buffer that will receive the extended attribute. This should contain + * the same value passed to the GetEa Ea parameter. + * @param EaLength + * Length of buffer. This should contain the same value passed to the GetEa + * EaLength parameter. + * @param PBytesTransferred [out] + * Pointer to a memory location that will receive the actual number of bytes stored. This should + * contain the same value passed to the GetEa PBytesTransferred parameter. + * @return + * TRUE if the extended attribute was added, FALSE if there was not enough space to add it. + * @see + * GetEa + */ +FSP_API BOOLEAN FspFileSystemAddEa(PFILE_FULL_EA_INFORMATION SingleEa, + PFILE_FULL_EA_INFORMATION Ea, ULONG EaLength, PULONG PBytesTransferred); +/** + * Get extended attribute "packed" size. This computation matches what NTFS reports. + * + * @param SingleEa + * The extended attribute to get the size for. + * @return + * The packed size of the extended attribute. + */ +static inline +UINT32 FspFileSystemGetEaPackedSize(PFILE_FULL_EA_INFORMATION SingleEa) +{ + /* magic computations are courtesy of NTFS */ + return 5 + SingleEa->EaNameLength + SingleEa->EaValueLength; +} +/** + * Add notify information to a buffer. + * + * This is a helper for filling a buffer to use with FspFileSystemNotify. + * + * @param NotifyInfo + * The notify information to add. + * @param Buffer + * Pointer to a buffer that will receive the notify information. + * @param Length + * Length of buffer. + * @param PBytesTransferred [out] + * Pointer to a memory location that will receive the actual number of bytes stored. This should + * be initialized to 0 prior to the first call to FspFileSystemAddNotifyInfo for a particular + * buffer. + * @return + * TRUE if the notify information was added, FALSE if there was not enough space to add it. + * @see + * FspFileSystemNotify + */ +FSP_API BOOLEAN FspFileSystemAddNotifyInfo(FSP_FSCTL_NOTIFY_INFO *NotifyInfo, + PVOID Buffer, ULONG Length, PULONG PBytesTransferred); +/** + * Stop a file system service, if any. + * + * This is a helper for implementing the DispatcherStopped operation, but only for file systems + * that use the FspService infrastructure. + * + * @param FileSystem + * The file system object. + * @param 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. + * @see + * DispatcherStopped + */ +FSP_API VOID FspFileSystemStopServiceIfNecessary(FSP_FILE_SYSTEM *FileSystem, + BOOLEAN Normally); + +/* + * Directory buffering + */ +FSP_API BOOLEAN FspFileSystemAcquireDirectoryBufferEx(PVOID* PDirBuffer, + BOOLEAN Reset, ULONG CapacityHint, PNTSTATUS PResult); +FSP_API BOOLEAN FspFileSystemAcquireDirectoryBuffer(PVOID *PDirBuffer, + BOOLEAN Reset, PNTSTATUS PResult); +FSP_API BOOLEAN FspFileSystemFillDirectoryBuffer(PVOID *PDirBuffer, + FSP_FSCTL_DIR_INFO *DirInfo, PNTSTATUS PResult); +FSP_API VOID FspFileSystemReleaseDirectoryBuffer(PVOID *PDirBuffer); +FSP_API VOID FspFileSystemReadDirectoryBuffer(PVOID *PDirBuffer, + PWSTR Marker, + PVOID Buffer, ULONG Length, PULONG PBytesTransferred); +FSP_API VOID FspFileSystemDeleteDirectoryBuffer(PVOID *PDirBuffer); + +/* + * Security + */ +FSP_API PGENERIC_MAPPING FspGetFileGenericMapping(VOID); +FSP_API NTSTATUS FspAccessCheckEx(FSP_FILE_SYSTEM *FileSystem, + FSP_FSCTL_TRANSACT_REQ *Request, + BOOLEAN CheckParentOrMain, BOOLEAN AllowTraverseCheck, + UINT32 DesiredAccess, PUINT32 PGrantedAccess/* or ReparsePointIndex */, + PSECURITY_DESCRIPTOR *PSecurityDescriptor); +FSP_API NTSTATUS FspCreateSecurityDescriptor(FSP_FILE_SYSTEM *FileSystem, + FSP_FSCTL_TRANSACT_REQ *Request, + PSECURITY_DESCRIPTOR ParentDescriptor, + PSECURITY_DESCRIPTOR *PSecurityDescriptor); +/** + * Modify security descriptor. + * + * This is a helper for implementing the SetSecurity operation. + * + * @param InputDescriptor + * The input security descriptor to be modified. + * @param SecurityInformation + * Describes what parts of the InputDescriptor should be modified. This should contain + * the same value passed to the SetSecurity SecurityInformation parameter. + * @param ModificationDescriptor + * Describes the modifications to apply to the InputDescriptor. This should contain + * the same value passed to the SetSecurity ModificationDescriptor parameter. + * @param PSecurityDescriptor [out] + * Pointer to a memory location that will receive the resulting security descriptor. + * This security descriptor can be later freed using FspDeleteSecurityDescriptor. + * @return + * STATUS_SUCCESS or error code. + * @see + * SetSecurity + * FspDeleteSecurityDescriptor + */ +FSP_API NTSTATUS FspSetSecurityDescriptor( + PSECURITY_DESCRIPTOR InputDescriptor, + SECURITY_INFORMATION SecurityInformation, + PSECURITY_DESCRIPTOR ModificationDescriptor, + PSECURITY_DESCRIPTOR *PSecurityDescriptor); +/** + * Delete security descriptor. + * + * This is a helper for implementing the SetSecurity operation. + * + * @param SecurityDescriptor + * The security descriptor to be deleted. + * @param CreateFunc + * Function used to create the security descriptor. This parameter should be + * set to FspSetSecurityDescriptor for the public API. + * @return + * STATUS_SUCCESS or error code. + * @see + * SetSecurity + * FspSetSecurityDescriptor + */ +FSP_API VOID FspDeleteSecurityDescriptor(PSECURITY_DESCRIPTOR SecurityDescriptor, + NTSTATUS (*CreateFunc)()); +static inline +NTSTATUS FspAccessCheck(FSP_FILE_SYSTEM *FileSystem, + FSP_FSCTL_TRANSACT_REQ *Request, + BOOLEAN CheckParentOrMain, BOOLEAN AllowTraverseCheck, + UINT32 DesiredAccess, PUINT32 PGrantedAccess) +{ + return FspAccessCheckEx(FileSystem, Request, + CheckParentOrMain, AllowTraverseCheck, + DesiredAccess, PGrantedAccess, + 0); +} + +/* + * POSIX Interop + */ +FSP_API NTSTATUS FspPosixSetUidMap(UINT32 Uid[], PSID Sid[], ULONG Count); +FSP_API NTSTATUS FspPosixMapUidToSid(UINT32 Uid, PSID *PSid); +FSP_API NTSTATUS FspPosixMapSidToUid(PSID Sid, PUINT32 PUid); +FSP_API VOID FspDeleteSid(PSID Sid, NTSTATUS (*CreateFunc)()); +FSP_API NTSTATUS FspPosixMapPermissionsToSecurityDescriptor( + UINT32 Uid, UINT32 Gid, UINT32 Mode, + PSECURITY_DESCRIPTOR *PSecurityDescriptor); +FSP_API NTSTATUS FspPosixMergePermissionsToSecurityDescriptor( + UINT32 Uid, UINT32 Gid, UINT32 Mode, + PSECURITY_DESCRIPTOR ExistingSecurityDescriptor, + PSECURITY_DESCRIPTOR *PSecurityDescriptor); +FSP_API NTSTATUS FspPosixMapSecurityDescriptorToPermissions( + PSECURITY_DESCRIPTOR SecurityDescriptor, + PUINT32 PUid, PUINT32 PGid, PUINT32 PMode); +FSP_API NTSTATUS FspPosixMapWindowsToPosixPathEx(PWSTR WindowsPath, char **PPosixPath, + BOOLEAN Translate); +FSP_API NTSTATUS FspPosixMapPosixToWindowsPathEx(const char *PosixPath, PWSTR *PWindowsPath, + BOOLEAN Translate); +static inline +NTSTATUS FspPosixMapWindowsToPosixPath(PWSTR WindowsPath, char **PPosixPath) +{ + return FspPosixMapWindowsToPosixPathEx(WindowsPath, PPosixPath, TRUE); +} +static inline +NTSTATUS FspPosixMapPosixToWindowsPath(const char *PosixPath, PWSTR *PWindowsPath) +{ + return FspPosixMapPosixToWindowsPathEx(PosixPath, PWindowsPath, TRUE); +} +FSP_API VOID FspPosixDeletePath(void *Path); +FSP_API VOID FspPosixEncodeWindowsPath(PWSTR WindowsPath, ULONG Size); +FSP_API VOID FspPosixDecodeWindowsPath(PWSTR WindowsPath, ULONG Size); +static inline +VOID FspPosixFileTimeToUnixTime(UINT64 FileTime0, __int3264 UnixTime[2]) +{ + INT64 FileTime = (INT64)FileTime0 - 116444736000000000LL; + UnixTime[0] = (__int3264)(FileTime / 10000000); + UnixTime[1] = (__int3264)(FileTime % 10000000 * 100); + /* may produce negative nsec for times before UNIX epoch; strictly speaking this is incorrect */ +} +static inline +VOID FspPosixUnixTimeToFileTime(const __int3264 UnixTime[2], PUINT64 PFileTime) +{ + INT64 FileTime = (INT64)UnixTime[0] * 10000000 + (INT64)UnixTime[1] / 100 + + 116444736000000000LL; + *PFileTime = FileTime; +} + +/* + * Path Handling + */ +FSP_API VOID FspPathPrefix(PWSTR Path, PWSTR *PPrefix, PWSTR *PRemain, PWSTR Root); +FSP_API VOID FspPathSuffix(PWSTR Path, PWSTR *PRemain, PWSTR *PSuffix, PWSTR Root); +FSP_API VOID FspPathCombine(PWSTR Prefix, PWSTR Suffix); + +/** + * @group Service Framework + * + * User mode file systems typically are run as Windows services. WinFsp provides an API to make + * the creation of Windows services easier. This API is provided for convenience and is not + * necessary to expose a user mode file system to Windows. + */ +typedef struct _FSP_SERVICE FSP_SERVICE; +typedef NTSTATUS FSP_SERVICE_START(FSP_SERVICE *, ULONG, PWSTR *); +typedef NTSTATUS FSP_SERVICE_STOP(FSP_SERVICE *); +typedef NTSTATUS FSP_SERVICE_CONTROL(FSP_SERVICE *, ULONG, ULONG, PVOID); +#pragma warning(push) +#pragma warning(disable:4200) /* zero-sized array in struct/union */ +typedef struct _FSP_SERVICE +{ + UINT16 Version; + PVOID UserContext; + FSP_SERVICE_START *OnStart; + FSP_SERVICE_STOP *OnStop; + FSP_SERVICE_CONTROL *OnControl; + ULONG AcceptControl; + ULONG ExitCode; + SERVICE_STATUS_HANDLE StatusHandle; + SERVICE_STATUS ServiceStatus; + CRITICAL_SECTION ServiceStatusGuard; + CRITICAL_SECTION ServiceStopGuard; + BOOLEAN AllowConsoleMode; + WCHAR ServiceName[]; +} FSP_SERVICE; +#pragma warning(pop) +/** + * Run a service. + * + * This function wraps calls to FspServiceCreate, FspServiceLoop and FspServiceDelete to create, + * run and delete a service. It is intended to be used from a service's main/wmain function. + * + * This function runs a service with console mode allowed. + * + * @param ServiceName + * The name of the service. + * @param OnStart + * Function to call when the service starts. + * @param OnStop + * Function to call when the service stops. + * @param OnControl + * Function to call when the service receives a service control code. + * @return + * Service process exit code. + */ +FSP_API ULONG FspServiceRunEx(PWSTR ServiceName, + FSP_SERVICE_START *OnStart, + FSP_SERVICE_STOP *OnStop, + FSP_SERVICE_CONTROL *OnControl, + PVOID UserContext); +static inline +ULONG FspServiceRun(PWSTR ServiceName, + FSP_SERVICE_START *OnStart, + FSP_SERVICE_STOP *OnStop, + FSP_SERVICE_CONTROL *OnControl) +{ + return FspServiceRunEx(ServiceName, OnStart, OnStop, OnControl, 0); +} +/** + * Create a service object. + * + * @param ServiceName + * The name of the service. + * @param OnStart + * Function to call when the service starts. + * @param OnStop + * Function to call when the service stops. + * @param OnControl + * Function to call when the service receives a service control code. + * @param PService [out] + * Pointer that will receive the service object created on successful return from this + * call. + * @return + * STATUS_SUCCESS or error code. + */ +FSP_API NTSTATUS FspServiceCreate(PWSTR ServiceName, + FSP_SERVICE_START *OnStart, + FSP_SERVICE_STOP *OnStop, + FSP_SERVICE_CONTROL *OnControl, + FSP_SERVICE **PService); +/** + * Delete a service object. + * + * @param Service + * The service object. + */ +FSP_API VOID FspServiceDelete(FSP_SERVICE *Service); +/** + * Allow a service to run in console mode. + * + * A service that is run in console mode runs with a console attached and outside the control of + * the Service Control Manager. This is useful for debugging and testing a service during + * development. + * + * User mode file systems that wish to use the WinFsp Launcher functionality must also use this + * call. The WinFsp Launcher is a Windows service that can be configured to launch and manage + * multiple instances of a user mode file system. + * + * @param Service + * The service object. + */ +FSP_API VOID FspServiceAllowConsoleMode(FSP_SERVICE *Service); +/** + * Configure the control codes that a service accepts. + * + * This API should be used prior to Start operations. + * + * @param Service + * The service object. + * @param Control + * The control codes to accept. Note that the SERVICE_ACCEPT_PAUSE_CONTINUE code is silently + * ignored. + */ +FSP_API VOID FspServiceAcceptControl(FSP_SERVICE *Service, ULONG Control); +/** + * Request additional time from the Service Control Manager. + * + * This API should be used during Start and Stop operations only. + * + * @param Service + * The service object. + * @param Time + * Additional time (in milliseconds). + */ +FSP_API VOID FspServiceRequestTime(FSP_SERVICE *Service, ULONG Time); +/** + * Set the service process exit code. + * + * @param Service + * The service object. + * @param ExitCode + * Service process exit code. + */ +FSP_API VOID FspServiceSetExitCode(FSP_SERVICE *Service, ULONG ExitCode); +/** + * Get the service process exit code. + * + * @param Service + * The service object. + * @return + * Service process exit code. + */ +FSP_API ULONG FspServiceGetExitCode(FSP_SERVICE *Service); +/** + * Run a service main loop. + * + * This function starts and runs a service. It executes the Windows StartServiceCtrlDispatcher API + * 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. + * + * This function should be called once per process. + * + * @param Service + * The service object. + * @return + * STATUS_SUCCESS or error code. + */ +FSP_API NTSTATUS FspServiceLoop(FSP_SERVICE *Service); +/** + * Stops a running service. + * + * Stopping a service usually happens when the Service Control Manager instructs the service to + * stop. In some situations (e.g. fatal errors) the service may wish to stop itself. It can do so + * in a clean manner by calling this function. + * + * @param Service + * The service object. + * @return + * STATUS_SUCCESS or error code. + */ +FSP_API VOID FspServiceStop(FSP_SERVICE *Service); +/** + * Determine if the current process is running in user interactive mode. + * + * @return + * TRUE if the process is running in running user interactive mode. + */ +FSP_API BOOLEAN FspServiceIsInteractive(VOID); +/** + * Check if the supplied token is from the service context. + * + * @param Token + * Token to check. Pass NULL to check the current process token. + * @param PIsLocalSystem + * Pointer to a boolean that will receive a TRUE value if the token belongs to LocalSystem + * and FALSE otherwise. May be NULL. + * @return + * STATUS_SUCCESS if the token is from the service context. STATUS_ACCESS_DENIED if it is not. + * Other error codes are possible. + */ +FSP_API NTSTATUS FspServiceContextCheck(HANDLE Token, PBOOLEAN PIsLocalSystem); +/** + * Log a service message. + * + * This function can be used to log an arbitrary message to the Windows Event Log or to the current + * console if running in user interactive mode. + * + * @param Type + * One of EVENTLOG_INFORMATION_TYPE, EVENTLOG_WARNING_TYPE, EVENTLOG_ERROR_TYPE. + * @param Format + * Format specification. This function uses the Windows wsprintf API for formatting. Refer to + * that API's documentation for details on the format specification. + */ +FSP_API VOID FspServiceLog(ULONG Type, PWSTR Format, ...); +FSP_API VOID FspServiceLogV(ULONG Type, PWSTR Format, va_list ap); + +/* + * Utility + */ +FSP_API NTSTATUS FspNtStatusFromWin32(DWORD Error); +FSP_API DWORD FspWin32FromNtStatus(NTSTATUS Status); +FSP_API VOID FspEventLog(ULONG Type, PWSTR Format, ...); +FSP_API VOID FspEventLogV(ULONG Type, PWSTR Format, va_list ap); +FSP_API VOID FspDebugLogSetHandle(HANDLE Handle); +FSP_API VOID FspDebugLog(const char *Format, ...); +FSP_API VOID FspDebugLogSD(const char *Format, PSECURITY_DESCRIPTOR SecurityDescriptor); +FSP_API VOID FspDebugLogSid(const char *format, PSID Sid); +FSP_API VOID FspDebugLogFT(const char *Format, PFILETIME FileTime); +FSP_API VOID FspDebugLogRequest(FSP_FSCTL_TRANSACT_REQ *Request); +FSP_API VOID FspDebugLogResponse(FSP_FSCTL_TRANSACT_RSP *Response); +FSP_API NTSTATUS FspCallNamedPipeSecurely(PWSTR PipeName, + PVOID InBuffer, ULONG InBufferSize, PVOID OutBuffer, ULONG OutBufferSize, + PULONG PBytesTransferred, ULONG Timeout, + PSID Sid); +FSP_API NTSTATUS FspCallNamedPipeSecurelyEx(PWSTR PipeName, + PVOID InBuffer, ULONG InBufferSize, PVOID OutBuffer, ULONG OutBufferSize, + PULONG PBytesTransferred, ULONG Timeout, BOOLEAN AllowImpersonation, + PSID Sid); +FSP_API NTSTATUS FspVersion(PUINT32 PVersion); +FSP_API PWSTR FspSxsIdent(VOID); + +/* + * Delay load + */ +static inline +NTSTATUS FspLoad(PVOID *PModule) +{ +#define FSP_DLLNAME FSP_FSCTL_PRODUCT_FILE_NAME "-" FSP_FSCTL_PRODUCT_FILE_ARCH ".dll" +#define FSP_DLLPATH "bin\\" FSP_DLLNAME + + WINADVAPI + LSTATUS + APIENTRY + RegGetValueW( + HKEY hkey, + LPCWSTR lpSubKey, + LPCWSTR lpValue, + DWORD dwFlags, + LPDWORD pdwType, + PVOID pvData, + LPDWORD pcbData); + + WCHAR PathBuf[MAX_PATH]; + DWORD Size; + LONG Result; + HMODULE Module; + + if (0 != PModule) + *PModule = 0; + + Module = LoadLibraryW(L"" FSP_DLLNAME); + if (0 == Module) + { + Size = sizeof PathBuf - sizeof L"" FSP_DLLPATH + sizeof(WCHAR); + Result = RegGetValueW(HKEY_LOCAL_MACHINE, L"" FSP_FSCTL_PRODUCT_FULL_REGKEY, L"InstallDir", + RRF_RT_REG_SZ, 0, PathBuf, &Size); + if (ERROR_SUCCESS != Result) + return STATUS_OBJECT_NAME_NOT_FOUND; + + RtlCopyMemory(PathBuf + (Size / sizeof(WCHAR) - 1), L"" FSP_DLLPATH, sizeof L"" FSP_DLLPATH); + Module = LoadLibraryW(PathBuf); + if (0 == Module) + return STATUS_DLL_NOT_FOUND; + } + + if (0 != PModule) + *PModule = Module; + + return STATUS_SUCCESS; + +#undef FSP_DLLPATH +#undef FSP_DLLNAME +} + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/support/3rd_party/winfsp-2.1/inc/winfsp/winfsp.hpp b/support/3rd_party/winfsp-2.1/inc/winfsp/winfsp.hpp new file mode 100644 index 00000000..33bb494b --- /dev/null +++ b/support/3rd_party/winfsp-2.1/inc/winfsp/winfsp.hpp @@ -0,0 +1,1320 @@ +/** + * @file winfsp/winfsp.hpp + * WinFsp C++ Layer. + * + * @copyright 2015-2025 Bill Zissimopoulos + */ +/* + * This file is part of WinFsp. + * + * You can redistribute it and/or modify it under the terms of the GNU + * General Public License version 3 as published by the Free Software + * Foundation. + * + * Licensees holding a valid commercial license may use this software + * in accordance with the commercial license agreement provided in + * conjunction with the software. The terms and conditions of any such + * commercial license agreement shall govern, supersede, and render + * ineffective any application of the GPLv3 license to this software, + * notwithstanding of any reference thereto in the software or + * associated repository. + */ + +#ifndef WINFSP_WINFSP_HPP_INCLUDED +#define WINFSP_WINFSP_HPP_INCLUDED + +#ifndef __cplusplus +#error this header requires a C++ compiler +#endif + +#include + +#define FSP_CPP_EXCEPTION_GUARD(...)\ + try { __VA_ARGS__ } catch (...) { return self->ExceptionHandler(); } +#define FSP_CPP_EXCEPTION_GUARD_VOID(...)\ + try { __VA_ARGS__ } catch (...) { self->ExceptionHandler(); return; } + +namespace Fsp { + +inline NTSTATUS Initialize() +{ + static NTSTATUS LoadResult = FspLoad(0); + return LoadResult; +} + +class FileSystemBase +{ +public: + typedef FSP_FSCTL_VOLUME_INFO VolumeInfo; + typedef FSP_FSCTL_FILE_INFO FileInfo; + typedef FSP_FSCTL_OPEN_FILE_INFO OpenFileInfo; + typedef FSP_FSCTL_DIR_INFO DirInfo; + typedef FSP_FSCTL_STREAM_INFO StreamInfo; + enum CleanupFlags + { + CleanupDelete = FspCleanupDelete, + CleanupSetAllocationSize = FspCleanupSetAllocationSize, + CleanupSetArchiveBit = FspCleanupSetArchiveBit, + CleanupSetLastAccessTime = FspCleanupSetLastAccessTime, + CleanupSetLastWriteTime = FspCleanupSetLastWriteTime, + CleanupSetChangeTime = FspCleanupSetChangeTime, + }; + +public: + FileSystemBase() + { + } + virtual ~FileSystemBase() + { + } + + /* operations */ + virtual NTSTATUS ExceptionHandler() + { + return STATUS_UNEXPECTED_IO_ERROR; + } + virtual NTSTATUS Init(PVOID Host) + { + return STATUS_SUCCESS; + } + virtual NTSTATUS Mounted(PVOID Host) + { + return STATUS_SUCCESS; + } + virtual VOID Unmounted(PVOID Host) + { + } + virtual NTSTATUS GetVolumeInfo( + VolumeInfo *VolumeInfo) + { + return STATUS_INVALID_DEVICE_REQUEST; + } + virtual NTSTATUS SetVolumeLabel_( + PWSTR VolumeLabel, + VolumeInfo *VolumeInfo) + { + return STATUS_INVALID_DEVICE_REQUEST; + } + virtual NTSTATUS GetSecurityByName( + PWSTR FileName, + PUINT32 PFileAttributes/* or ReparsePointIndex */, + PSECURITY_DESCRIPTOR SecurityDescriptor, + SIZE_T *PSecurityDescriptorSize) + { + return STATUS_INVALID_DEVICE_REQUEST; + } + virtual NTSTATUS Create( + PWSTR FileName, + UINT32 CreateOptions, + UINT32 GrantedAccess, + UINT32 FileAttributes, + PSECURITY_DESCRIPTOR SecurityDescriptor, + UINT64 AllocationSize, + PVOID *PFileNode, + PVOID *PFileDesc, + OpenFileInfo *OpenFileInfo) + { + return STATUS_INVALID_DEVICE_REQUEST; + } + virtual NTSTATUS Open( + PWSTR FileName, + UINT32 CreateOptions, + UINT32 GrantedAccess, + PVOID *PFileNode, + PVOID *PFileDesc, + OpenFileInfo *OpenFileInfo) + { + return STATUS_INVALID_DEVICE_REQUEST; + } + virtual NTSTATUS Overwrite( + PVOID FileNode, + PVOID FileDesc, + UINT32 FileAttributes, + BOOLEAN ReplaceFileAttributes, + UINT64 AllocationSize, + FileInfo *FileInfo) + { + return STATUS_INVALID_DEVICE_REQUEST; + } + virtual VOID Cleanup( + PVOID FileNode, + PVOID FileDesc, + PWSTR FileName, + ULONG Flags) + { + } + virtual VOID Close( + PVOID FileNode, + PVOID FileDesc) + { + } + virtual NTSTATUS Read( + PVOID FileNode, + PVOID FileDesc, + PVOID Buffer, + UINT64 Offset, + ULONG Length, + PULONG PBytesTransferred) + { + return STATUS_INVALID_DEVICE_REQUEST; + } + virtual NTSTATUS Write( + PVOID FileNode, + PVOID FileDesc, + PVOID Buffer, + UINT64 Offset, + ULONG Length, + BOOLEAN WriteToEndOfFile, + BOOLEAN ConstrainedIo, + PULONG PBytesTransferred, + FileInfo *FileInfo) + { + return STATUS_INVALID_DEVICE_REQUEST; + } + virtual NTSTATUS Flush( + PVOID FileNode, + PVOID FileDesc, + FileInfo *FileInfo) + { + return STATUS_INVALID_DEVICE_REQUEST; + } + virtual NTSTATUS GetFileInfo( + PVOID FileNode, + PVOID FileDesc, + FileInfo *FileInfo) + { + return STATUS_INVALID_DEVICE_REQUEST; + } + virtual NTSTATUS SetBasicInfo( + PVOID FileNode, + PVOID FileDesc, + UINT32 FileAttributes, + UINT64 CreationTime, + UINT64 LastAccessTime, + UINT64 LastWriteTime, + UINT64 ChangeTime, + FileInfo *FileInfo) + { + return STATUS_INVALID_DEVICE_REQUEST; + } + virtual NTSTATUS SetFileSize( + PVOID FileNode, + PVOID FileDesc, + UINT64 NewSize, + BOOLEAN SetAllocationSize, + FileInfo *FileInfo) + { + return STATUS_INVALID_DEVICE_REQUEST; + } + virtual NTSTATUS CanDelete( + PVOID FileNode, + PVOID FileDesc, + PWSTR FileName) + { + return STATUS_INVALID_DEVICE_REQUEST; + } + virtual NTSTATUS Rename( + PVOID FileNode, + PVOID FileDesc, + PWSTR FileName, + PWSTR NewFileName, + BOOLEAN ReplaceIfExists) + { + return STATUS_INVALID_DEVICE_REQUEST; + } + virtual NTSTATUS GetSecurity( + PVOID FileNode, + PVOID FileDesc, + PSECURITY_DESCRIPTOR SecurityDescriptor, + SIZE_T *PSecurityDescriptorSize) + { + return STATUS_INVALID_DEVICE_REQUEST; + } + virtual NTSTATUS SetSecurity( + PVOID FileNode, + PVOID FileDesc, + SECURITY_INFORMATION SecurityInformation, + PSECURITY_DESCRIPTOR ModificationDescriptor) + { + return STATUS_INVALID_DEVICE_REQUEST; + } + virtual NTSTATUS ReadDirectory( + PVOID FileNode, + PVOID FileDesc, + PWSTR Pattern, + PWSTR Marker, + PVOID Buffer, + ULONG Length, + PULONG PBytesTransferred) + { + return SeekableReadDirectory( + FileNode, + FileDesc, + Pattern, + Marker, + Buffer, + Length, + PBytesTransferred); + } + virtual NTSTATUS ReadDirectoryEntry( + PVOID FileNode, + PVOID FileDesc, + PWSTR Pattern, + PWSTR Marker, + PVOID *PContext, + DirInfo *DirInfo) + { + return STATUS_INVALID_DEVICE_REQUEST; + } + virtual NTSTATUS ResolveReparsePoints( + PWSTR FileName, + UINT32 ReparsePointIndex, + BOOLEAN ResolveLastPathComponent, + PIO_STATUS_BLOCK PIoStatus, + PVOID Buffer, + PSIZE_T PSize) + { + return FspFileSystemResolveReparsePoints( + 0, + GetReparsePointByName, + this, + FileName, + ReparsePointIndex, + ResolveLastPathComponent, + PIoStatus, + Buffer, + PSize); + } + virtual NTSTATUS GetReparsePointByName( + PWSTR FileName, + BOOLEAN IsDirectory, + PVOID Buffer, + PSIZE_T PSize) + { + return STATUS_INVALID_DEVICE_REQUEST; + } + virtual NTSTATUS GetReparsePoint( + PVOID FileNode, + PVOID FileDesc, + PWSTR FileName, + PVOID Buffer, + PSIZE_T PSize) + { + return STATUS_INVALID_DEVICE_REQUEST; + } + virtual NTSTATUS SetReparsePoint( + PVOID FileNode, + PVOID FileDesc, + PWSTR FileName, + PVOID Buffer, + SIZE_T Size) + { + return STATUS_INVALID_DEVICE_REQUEST; + } + virtual NTSTATUS DeleteReparsePoint( + PVOID FileNode, + PVOID FileDesc, + PWSTR FileName, + PVOID Buffer, + SIZE_T Size) + { + return STATUS_INVALID_DEVICE_REQUEST; + } + virtual NTSTATUS GetStreamInfo( + PVOID FileNode, + PVOID FileDesc, + PVOID Buffer, + ULONG Length, + PULONG PBytesTransferred) + { + return STATUS_INVALID_DEVICE_REQUEST; + } + + /* helpers */ + static NTSTATUS NtStatusFromWin32(DWORD Error) + { + return FspNtStatusFromWin32(Error); + } + static DWORD Win32FromNtStatus(NTSTATUS Status) + { + return FspWin32FromNtStatus(Status); + } + static VOID DeleteDirectoryBuffer(PVOID *PDirBuffer) + { + FspFileSystemDeleteDirectoryBuffer(PDirBuffer); + } + NTSTATUS SeekableReadDirectory( + PVOID FileNode, + PVOID FileDesc, + PWSTR Pattern, + PWSTR Marker, + PVOID Buffer, + ULONG Length, + PULONG PBytesTransferred) + { + PVOID Context = 0; + union + { + UINT8 B[FIELD_OFFSET(FileSystemBase::DirInfo, FileNameBuf) + MAX_PATH * sizeof(WCHAR)]; + FileSystemBase::DirInfo D; + } DirInfoBuf; + FileSystemBase::DirInfo *DirInfo = &DirInfoBuf.D; + NTSTATUS Result = STATUS_SUCCESS; + *PBytesTransferred = 0; + for (;;) + { + Result = ReadDirectoryEntry(FileNode, FileDesc, Pattern, Marker, &Context, DirInfo); + if (STATUS_NO_MORE_FILES == Result) + { + Result = STATUS_SUCCESS; + break; + } + if (!NT_SUCCESS(Result)) + break; + if (!FspFileSystemAddDirInfo(DirInfo, Buffer, Length, PBytesTransferred)) + break; + } + if (!NT_SUCCESS(Result)) + return Result; + return STATUS_SUCCESS; + } + NTSTATUS BufferedReadDirectory( + PVOID *PDirBuffer, + PVOID FileNode, + PVOID FileDesc, + PWSTR Pattern, + PWSTR Marker, + PVOID Buffer, + ULONG Length, + PULONG PBytesTransferred) + { + PVOID Context = 0; + union + { + UINT8 B[FIELD_OFFSET(FileSystemBase::DirInfo, FileNameBuf) + MAX_PATH * sizeof(WCHAR)]; + FileSystemBase::DirInfo D; + } DirInfoBuf; + FileSystemBase::DirInfo *DirInfo = &DirInfoBuf.D; + NTSTATUS Result = STATUS_SUCCESS; + *PBytesTransferred = 0; + if (FspFileSystemAcquireDirectoryBuffer(PDirBuffer, 0 == Marker, &Result)) + { + try + { + for (;;) + { + Result = ReadDirectoryEntry(FileNode, FileDesc, Pattern, Marker, &Context, DirInfo); + if (STATUS_NO_MORE_FILES == Result) + { + Result = STATUS_SUCCESS; + break; + } + if (!NT_SUCCESS(Result)) + break; + if (!FspFileSystemFillDirectoryBuffer(PDirBuffer, DirInfo, &Result)) + break; + } + } + catch (...) + { + FspFileSystemReleaseDirectoryBuffer(PDirBuffer); + throw; + } + FspFileSystemReleaseDirectoryBuffer(PDirBuffer); + } + if (!NT_SUCCESS(Result)) + return Result; + FspFileSystemReadDirectoryBuffer(PDirBuffer, Marker, Buffer, Length, PBytesTransferred); + return STATUS_SUCCESS; + } + BOOLEAN FindReparsePoint( + PWSTR FileName, PUINT32 PReparsePointIndex) + { + return FspFileSystemFindReparsePoint( + 0, + GetReparsePointByName, + this, + FileName, + PReparsePointIndex); + } + static NTSTATUS CanReplaceReparsePoint( + PVOID CurrentReparseData, SIZE_T CurrentReparseDataSize, + PVOID ReplaceReparseData, SIZE_T ReplaceReparseDataSize) + { + return FspFileSystemCanReplaceReparsePoint( + CurrentReparseData, CurrentReparseDataSize, + ReplaceReparseData, ReplaceReparseDataSize); + } + static BOOLEAN AddStreamInfo(StreamInfo *StreamInfo, + PVOID Buffer, ULONG Length, PULONG PBytesTransferred) + { + return FspFileSystemAddStreamInfo(StreamInfo, Buffer, Length, PBytesTransferred); + } + +private: + static NTSTATUS GetReparsePointByName(FSP_FILE_SYSTEM *FileSystem, + PVOID Context, + PWSTR FileName, + BOOLEAN IsDirectory, + PVOID Buffer, + PSIZE_T PSize) + { + FileSystemBase *self = (FileSystemBase *)Context; + FSP_CPP_EXCEPTION_GUARD( + return self->GetReparsePointByName( + FileName, + IsDirectory, + Buffer, + PSize); + ) + } + +private: + /* disallow copy and assignment */ + FileSystemBase(const FileSystemBase &); + FileSystemBase &operator=(const FileSystemBase &); +}; + +class FileSystemHost +{ +public: + /* ctor/dtor */ + FileSystemHost(FileSystemBase &FileSystem) : + _VolumeParams(), _FileSystemPtr(0), _FileSystem(&FileSystem) + { + Initialize(); + _VolumeParams.UmFileContextIsFullContext = 1; + } + virtual ~FileSystemHost() + { + if (0 != _FileSystemPtr) + FspFileSystemDelete(_FileSystemPtr); + } + + /* properties */ + UINT16 SectorSize() + { + return _VolumeParams.SectorSize; + } + VOID SetSectorSize(UINT16 SectorSize) + { + _VolumeParams.SectorSize = SectorSize; + } + UINT16 SectorsPerAllocationUnit() + { + return _VolumeParams.SectorsPerAllocationUnit; + } + VOID SetSectorsPerAllocationUnit(UINT16 SectorsPerAllocationUnit) + { + _VolumeParams.SectorsPerAllocationUnit = SectorsPerAllocationUnit; + } + UINT16 MaxComponentLength() + { + return _VolumeParams.MaxComponentLength; + } + VOID SetMaxComponentLength(UINT16 MaxComponentLength) + { + _VolumeParams.MaxComponentLength = MaxComponentLength; + } + UINT64 VolumeCreationTime() + { + return _VolumeParams.VolumeCreationTime; + } + VOID SetVolumeCreationTime(UINT64 VolumeCreationTime) + { + _VolumeParams.VolumeCreationTime = VolumeCreationTime; + } + UINT32 VolumeSerialNumber() + { + return _VolumeParams.VolumeSerialNumber; + } + VOID SetVolumeSerialNumber(UINT32 VolumeSerialNumber) + { + _VolumeParams.VolumeSerialNumber = VolumeSerialNumber; + } + UINT32 FileInfoTimeout() + { + return _VolumeParams.FileInfoTimeout; + } + VOID SetFileInfoTimeout(UINT32 FileInfoTimeout) + { + _VolumeParams.FileInfoTimeout = FileInfoTimeout; + } + BOOLEAN CaseSensitiveSearch() + { + return _VolumeParams.CaseSensitiveSearch; + } + VOID SetCaseSensitiveSearch(BOOLEAN CaseSensitiveSearch) + { + _VolumeParams.CaseSensitiveSearch = !!CaseSensitiveSearch; + } + BOOLEAN CasePreservedNames() + { + return _VolumeParams.CasePreservedNames; + } + VOID SetCasePreservedNames(BOOLEAN CasePreservedNames) + { + _VolumeParams.CasePreservedNames = !!CasePreservedNames; + } + BOOLEAN UnicodeOnDisk() + { + return _VolumeParams.UnicodeOnDisk; + } + VOID SetUnicodeOnDisk(BOOLEAN UnicodeOnDisk) + { + _VolumeParams.UnicodeOnDisk = !!UnicodeOnDisk; + } + BOOLEAN PersistentAcls() + { + return _VolumeParams.PersistentAcls; + } + VOID SetPersistentAcls(BOOLEAN PersistentAcls) + { + _VolumeParams.PersistentAcls = !!PersistentAcls; + } + BOOLEAN ReparsePoints() + { + return _VolumeParams.ReparsePoints; + } + VOID SetReparsePoints(BOOLEAN ReparsePoints) + { + _VolumeParams.ReparsePoints = !!ReparsePoints; + } + BOOLEAN ReparsePointsAccessCheck() + { + return _VolumeParams.ReparsePointsAccessCheck; + } + VOID SetReparsePointsAccessCheck(BOOLEAN ReparsePointsAccessCheck) + { + _VolumeParams.ReparsePointsAccessCheck = !!ReparsePointsAccessCheck; + } + BOOLEAN NamedStreams() + { + return _VolumeParams.NamedStreams; + } + VOID SetNamedStreams(BOOLEAN NamedStreams) + { + _VolumeParams.NamedStreams = !!NamedStreams; + } + BOOLEAN PostCleanupWhenModifiedOnly() + { + return _VolumeParams.PostCleanupWhenModifiedOnly; + } + VOID SetPostCleanupWhenModifiedOnly(BOOLEAN PostCleanupWhenModifiedOnly) + { + _VolumeParams.PostCleanupWhenModifiedOnly = !!PostCleanupWhenModifiedOnly; + } + BOOLEAN PassQueryDirectoryPattern() + { + return _VolumeParams.PassQueryDirectoryPattern; + } + VOID SetPassQueryDirectoryPattern(BOOLEAN PassQueryDirectoryPattern) + { + _VolumeParams.PassQueryDirectoryPattern = !!PassQueryDirectoryPattern; + } + BOOLEAN FlushAndPurgeOnCleanup() + { + return _VolumeParams.FlushAndPurgeOnCleanup; + } + VOID SetFlushAndPurgeOnCleanup(BOOLEAN FlushAndPurgeOnCleanup) + { + _VolumeParams.FlushAndPurgeOnCleanup = !!FlushAndPurgeOnCleanup; + } + PWSTR Prefix() + { + return _VolumeParams.Prefix; + } + VOID SetPrefix(PWSTR Prefix) + { + int Size = lstrlenW(Prefix) * sizeof(WCHAR); + if (Size > sizeof _VolumeParams.Prefix - sizeof(WCHAR)) + Size = sizeof _VolumeParams.Prefix - sizeof(WCHAR); + RtlCopyMemory(_VolumeParams.Prefix, Prefix, Size); + _VolumeParams.Prefix[Size / sizeof(WCHAR)] = L'\0'; + } + PWSTR FileSystemName() + { + return _VolumeParams.FileSystemName; + } + VOID SetFileSystemName(PWSTR FileSystemName) + { + int Size = lstrlenW(FileSystemName) * sizeof(WCHAR); + if (Size > sizeof _VolumeParams.FileSystemName - sizeof(WCHAR)) + Size = sizeof _VolumeParams.FileSystemName - sizeof(WCHAR); + RtlCopyMemory(_VolumeParams.FileSystemName, FileSystemName, Size); + _VolumeParams.FileSystemName[Size / sizeof(WCHAR)] = L'\0'; + } + + /* control */ + NTSTATUS Preflight(PWSTR MountPoint) + { + return FspFileSystemPreflight( + _VolumeParams.Prefix[0] ? L"" FSP_FSCTL_NET_DEVICE_NAME : L"" FSP_FSCTL_DISK_DEVICE_NAME, + MountPoint); + } + NTSTATUS Mount(PWSTR MountPoint, + PSECURITY_DESCRIPTOR SecurityDescriptor = 0, + BOOLEAN Synchronized = FALSE, + UINT32 DebugLog = 0) + { + NTSTATUS Result; + try + { + Result = _FileSystem->Init(this); + } + catch (...) + { + Result = _FileSystem->ExceptionHandler(); + } + if (!NT_SUCCESS(Result)) + return Result; + Result = FspFileSystemCreate( + _VolumeParams.Prefix[0] ? L"" FSP_FSCTL_NET_DEVICE_NAME : L"" FSP_FSCTL_DISK_DEVICE_NAME, + &_VolumeParams, Interface(), &_FileSystemPtr); + if (!NT_SUCCESS(Result)) + return Result; + _FileSystemPtr->UserContext = _FileSystem; + FspFileSystemSetOperationGuardStrategy(_FileSystemPtr, Synchronized ? + FSP_FILE_SYSTEM_OPERATION_GUARD_STRATEGY_COARSE : + FSP_FILE_SYSTEM_OPERATION_GUARD_STRATEGY_FINE); + FspFileSystemSetDebugLog(_FileSystemPtr, DebugLog); + Result = FspFileSystemSetMountPointEx(_FileSystemPtr, MountPoint, SecurityDescriptor); + if (NT_SUCCESS(Result)) + { + try + { + Result = _FileSystem->Mounted(this); + } + catch (...) + { + Result = _FileSystem->ExceptionHandler(); + } + if (NT_SUCCESS(Result)) + { + Result = FspFileSystemStartDispatcher(_FileSystemPtr, 0); + if (!NT_SUCCESS(Result)) + try + { + _FileSystem->Unmounted(this); + } + catch (...) + { + _FileSystem->ExceptionHandler(); + } + } + } + if (!NT_SUCCESS(Result)) + { + FspFileSystemDelete(_FileSystemPtr); + _FileSystemPtr = 0; + } + return Result; + } + VOID Unmount() + { + FspFileSystemStopDispatcher(_FileSystemPtr); + try + { + _FileSystem->Unmounted(this); + } + catch (...) + { + _FileSystem->ExceptionHandler(); + } + _FileSystemPtr->UserContext = 0; + FspFileSystemDelete(_FileSystemPtr); + _FileSystemPtr = 0; + } + PWSTR MountPoint() + { + return 0 != _FileSystemPtr ? FspFileSystemMountPoint(_FileSystemPtr) : 0; + } + FSP_FILE_SYSTEM *FileSystemHandle() + { + return _FileSystemPtr; + } + FileSystemBase &FileSystem() + { + return *_FileSystem; + } + static NTSTATUS SetDebugLogFile(PWSTR FileName) + { + HANDLE Handle; + if ('-' == FileName[0] && '\0' == FileName[1]) + Handle = GetStdHandle(STD_ERROR_HANDLE); + else + Handle = CreateFileW( + FileName, + FILE_APPEND_DATA, + FILE_SHARE_READ | FILE_SHARE_WRITE, + 0, + OPEN_ALWAYS, + FILE_ATTRIBUTE_NORMAL, + 0); + if (INVALID_HANDLE_VALUE == Handle) + return FspNtStatusFromWin32(GetLastError()); + FspDebugLogSetHandle(Handle); + return STATUS_SUCCESS; + } + +private: + /* FSP_FILE_SYSTEM_INTERFACE */ + static NTSTATUS GetVolumeInfo(FSP_FILE_SYSTEM *FileSystem0, + FSP_FSCTL_VOLUME_INFO *VolumeInfo) + { + FileSystemBase *self = (FileSystemBase *)FileSystem0->UserContext; + FSP_CPP_EXCEPTION_GUARD( + return self->GetVolumeInfo( + VolumeInfo); + ) + } + static NTSTATUS SetVolumeLabel_(FSP_FILE_SYSTEM *FileSystem0, + PWSTR VolumeLabel, + FSP_FSCTL_VOLUME_INFO *VolumeInfo) + { + FileSystemBase *self = (FileSystemBase *)FileSystem0->UserContext; + FSP_CPP_EXCEPTION_GUARD( + return self->SetVolumeLabel_( + VolumeLabel, + VolumeInfo); + ) + } + static NTSTATUS GetSecurityByName(FSP_FILE_SYSTEM *FileSystem0, + PWSTR FileName, + PUINT32 PFileAttributes/* or ReparsePointIndex */, + PSECURITY_DESCRIPTOR SecurityDescriptor, + SIZE_T *PSecurityDescriptorSize) + { + FileSystemBase *self = (FileSystemBase *)FileSystem0->UserContext; + FSP_CPP_EXCEPTION_GUARD( + return self->GetSecurityByName( + FileName, + PFileAttributes, + SecurityDescriptor, + PSecurityDescriptorSize); + ) + } + static NTSTATUS Create(FSP_FILE_SYSTEM *FileSystem0, + PWSTR FileName, + UINT32 CreateOptions, + UINT32 GrantedAccess, + UINT32 FileAttributes, + PSECURITY_DESCRIPTOR SecurityDescriptor, + UINT64 AllocationSize, + PVOID *FullContext, + FSP_FSCTL_FILE_INFO *FileInfo) + { + FileSystemBase *self = (FileSystemBase *)FileSystem0->UserContext; + PVOID FileNode, FileDesc; + NTSTATUS Result; + FSP_CPP_EXCEPTION_GUARD( + Result = self->Create( + FileName, + CreateOptions, + GrantedAccess, + FileAttributes, + SecurityDescriptor, + AllocationSize, + &FileNode, + &FileDesc, + FspFileSystemGetOpenFileInfo(FileInfo)); + ) + ((FSP_FSCTL_TRANSACT_FULL_CONTEXT *)FullContext)->UserContext = (UINT64)(UINT_PTR)FileNode; + ((FSP_FSCTL_TRANSACT_FULL_CONTEXT *)FullContext)->UserContext2 = (UINT64)(UINT_PTR)FileDesc; + return Result; + } + static NTSTATUS Open(FSP_FILE_SYSTEM *FileSystem0, + PWSTR FileName, + UINT32 CreateOptions, + UINT32 GrantedAccess, + PVOID *FullContext, + FSP_FSCTL_FILE_INFO *FileInfo) + { + FileSystemBase *self = (FileSystemBase *)FileSystem0->UserContext; + PVOID FileNode, FileDesc; + NTSTATUS Result; + FSP_CPP_EXCEPTION_GUARD( + Result = self->Open( + FileName, + CreateOptions, + GrantedAccess, + &FileNode, + &FileDesc, + FspFileSystemGetOpenFileInfo(FileInfo)); + ) + ((FSP_FSCTL_TRANSACT_FULL_CONTEXT *)FullContext)->UserContext = (UINT64)(UINT_PTR)FileNode; + ((FSP_FSCTL_TRANSACT_FULL_CONTEXT *)FullContext)->UserContext2 = (UINT64)(UINT_PTR)FileDesc; + return Result; + } + static NTSTATUS Overwrite(FSP_FILE_SYSTEM *FileSystem0, + PVOID FullContext, + UINT32 FileAttributes, + BOOLEAN ReplaceFileAttributes, + UINT64 AllocationSize, + FSP_FSCTL_FILE_INFO *FileInfo) + { + FileSystemBase *self = (FileSystemBase *)FileSystem0->UserContext; + FSP_CPP_EXCEPTION_GUARD( + return self->Overwrite( + (PVOID)(UINT_PTR)((FSP_FSCTL_TRANSACT_FULL_CONTEXT *)FullContext)->UserContext, + (PVOID)(UINT_PTR)((FSP_FSCTL_TRANSACT_FULL_CONTEXT *)FullContext)->UserContext2, + FileAttributes, + ReplaceFileAttributes, + AllocationSize, + FileInfo); + ) + } + static VOID Cleanup(FSP_FILE_SYSTEM *FileSystem0, + PVOID FullContext, + PWSTR FileName, + ULONG Flags) + { + FileSystemBase *self = (FileSystemBase *)FileSystem0->UserContext; + FSP_CPP_EXCEPTION_GUARD_VOID( + return self->Cleanup( + (PVOID)(UINT_PTR)((FSP_FSCTL_TRANSACT_FULL_CONTEXT *)FullContext)->UserContext, + (PVOID)(UINT_PTR)((FSP_FSCTL_TRANSACT_FULL_CONTEXT *)FullContext)->UserContext2, + FileName, + Flags); + ) + } + static VOID Close(FSP_FILE_SYSTEM *FileSystem0, + PVOID FullContext) + { + FileSystemBase *self = (FileSystemBase *)FileSystem0->UserContext; + FSP_CPP_EXCEPTION_GUARD_VOID( + return self->Close( + (PVOID)(UINT_PTR)((FSP_FSCTL_TRANSACT_FULL_CONTEXT *)FullContext)->UserContext, + (PVOID)(UINT_PTR)((FSP_FSCTL_TRANSACT_FULL_CONTEXT *)FullContext)->UserContext2); + ) + } + static NTSTATUS Read(FSP_FILE_SYSTEM *FileSystem0, + PVOID FullContext, + PVOID Buffer, + UINT64 Offset, + ULONG Length, + PULONG PBytesTransferred) + { + FileSystemBase *self = (FileSystemBase *)FileSystem0->UserContext; + FSP_CPP_EXCEPTION_GUARD( + return self->Read( + (PVOID)(UINT_PTR)((FSP_FSCTL_TRANSACT_FULL_CONTEXT *)FullContext)->UserContext, + (PVOID)(UINT_PTR)((FSP_FSCTL_TRANSACT_FULL_CONTEXT *)FullContext)->UserContext2, + Buffer, + Offset, + Length, + PBytesTransferred); + ) + } + static NTSTATUS Write(FSP_FILE_SYSTEM *FileSystem0, + PVOID FullContext, + PVOID Buffer, + UINT64 Offset, + ULONG Length, + BOOLEAN WriteToEndOfFile, + BOOLEAN ConstrainedIo, + PULONG PBytesTransferred, + FSP_FSCTL_FILE_INFO *FileInfo) + { + FileSystemBase *self = (FileSystemBase *)FileSystem0->UserContext; + FSP_CPP_EXCEPTION_GUARD( + return self->Write( + (PVOID)(UINT_PTR)((FSP_FSCTL_TRANSACT_FULL_CONTEXT *)FullContext)->UserContext, + (PVOID)(UINT_PTR)((FSP_FSCTL_TRANSACT_FULL_CONTEXT *)FullContext)->UserContext2, + Buffer, + Offset, + Length, + WriteToEndOfFile, + ConstrainedIo, + PBytesTransferred, + FileInfo); + ) + } + static NTSTATUS Flush(FSP_FILE_SYSTEM *FileSystem0, + PVOID FullContext, + FSP_FSCTL_FILE_INFO *FileInfo) + { + FileSystemBase *self = (FileSystemBase *)FileSystem0->UserContext; + FSP_CPP_EXCEPTION_GUARD( + return self->Flush( + (PVOID)(UINT_PTR)((FSP_FSCTL_TRANSACT_FULL_CONTEXT *)FullContext)->UserContext, + (PVOID)(UINT_PTR)((FSP_FSCTL_TRANSACT_FULL_CONTEXT *)FullContext)->UserContext2, + FileInfo); + ) + } + static NTSTATUS GetFileInfo(FSP_FILE_SYSTEM *FileSystem0, + PVOID FullContext, + FSP_FSCTL_FILE_INFO *FileInfo) + { + FileSystemBase *self = (FileSystemBase *)FileSystem0->UserContext; + FSP_CPP_EXCEPTION_GUARD( + return self->GetFileInfo( + (PVOID)(UINT_PTR)((FSP_FSCTL_TRANSACT_FULL_CONTEXT *)FullContext)->UserContext, + (PVOID)(UINT_PTR)((FSP_FSCTL_TRANSACT_FULL_CONTEXT *)FullContext)->UserContext2, + FileInfo); + ) + } + static NTSTATUS SetBasicInfo(FSP_FILE_SYSTEM *FileSystem0, + PVOID FullContext, + UINT32 FileAttributes, + UINT64 CreationTime, + UINT64 LastAccessTime, + UINT64 LastWriteTime, + UINT64 ChangeTime, + FSP_FSCTL_FILE_INFO *FileInfo) + { + FileSystemBase *self = (FileSystemBase *)FileSystem0->UserContext; + FSP_CPP_EXCEPTION_GUARD( + return self->SetBasicInfo( + (PVOID)(UINT_PTR)((FSP_FSCTL_TRANSACT_FULL_CONTEXT *)FullContext)->UserContext, + (PVOID)(UINT_PTR)((FSP_FSCTL_TRANSACT_FULL_CONTEXT *)FullContext)->UserContext2, + FileAttributes, + CreationTime, + LastAccessTime, + LastWriteTime, + ChangeTime, + FileInfo); + ) + } + static NTSTATUS SetFileSize(FSP_FILE_SYSTEM *FileSystem0, + PVOID FullContext, + UINT64 NewSize, + BOOLEAN SetAllocationSize, + FSP_FSCTL_FILE_INFO *FileInfo) + { + FileSystemBase *self = (FileSystemBase *)FileSystem0->UserContext; + FSP_CPP_EXCEPTION_GUARD( + return self->SetFileSize( + (PVOID)(UINT_PTR)((FSP_FSCTL_TRANSACT_FULL_CONTEXT *)FullContext)->UserContext, + (PVOID)(UINT_PTR)((FSP_FSCTL_TRANSACT_FULL_CONTEXT *)FullContext)->UserContext2, + NewSize, + SetAllocationSize, + FileInfo); + ) + } + static NTSTATUS CanDelete(FSP_FILE_SYSTEM *FileSystem0, + PVOID FullContext, + PWSTR FileName) + { + FileSystemBase *self = (FileSystemBase *)FileSystem0->UserContext; + FSP_CPP_EXCEPTION_GUARD( + return self->CanDelete( + (PVOID)(UINT_PTR)((FSP_FSCTL_TRANSACT_FULL_CONTEXT *)FullContext)->UserContext, + (PVOID)(UINT_PTR)((FSP_FSCTL_TRANSACT_FULL_CONTEXT *)FullContext)->UserContext2, + FileName); + ) + } + static NTSTATUS Rename(FSP_FILE_SYSTEM *FileSystem0, + PVOID FullContext, + PWSTR FileName, + PWSTR NewFileName, + BOOLEAN ReplaceIfExists) + { + FileSystemBase *self = (FileSystemBase *)FileSystem0->UserContext; + FSP_CPP_EXCEPTION_GUARD( + return self->Rename( + (PVOID)(UINT_PTR)((FSP_FSCTL_TRANSACT_FULL_CONTEXT *)FullContext)->UserContext, + (PVOID)(UINT_PTR)((FSP_FSCTL_TRANSACT_FULL_CONTEXT *)FullContext)->UserContext2, + FileName, + NewFileName, + ReplaceIfExists); + ) + } + static NTSTATUS GetSecurity(FSP_FILE_SYSTEM *FileSystem0, + PVOID FullContext, + PSECURITY_DESCRIPTOR SecurityDescriptor, + SIZE_T *PSecurityDescriptorSize) + { + FileSystemBase *self = (FileSystemBase *)FileSystem0->UserContext; + FSP_CPP_EXCEPTION_GUARD( + return self->GetSecurity( + (PVOID)(UINT_PTR)((FSP_FSCTL_TRANSACT_FULL_CONTEXT *)FullContext)->UserContext, + (PVOID)(UINT_PTR)((FSP_FSCTL_TRANSACT_FULL_CONTEXT *)FullContext)->UserContext2, + SecurityDescriptor, + PSecurityDescriptorSize); + ) + } + static NTSTATUS SetSecurity(FSP_FILE_SYSTEM *FileSystem0, + PVOID FullContext, + SECURITY_INFORMATION SecurityInformation, + PSECURITY_DESCRIPTOR ModificationDescriptor) + { + FileSystemBase *self = (FileSystemBase *)FileSystem0->UserContext; + FSP_CPP_EXCEPTION_GUARD( + return self->SetSecurity( + (PVOID)(UINT_PTR)((FSP_FSCTL_TRANSACT_FULL_CONTEXT *)FullContext)->UserContext, + (PVOID)(UINT_PTR)((FSP_FSCTL_TRANSACT_FULL_CONTEXT *)FullContext)->UserContext2, + SecurityInformation, + ModificationDescriptor); + ) + } + static NTSTATUS ReadDirectory(FSP_FILE_SYSTEM *FileSystem0, + PVOID FullContext, + PWSTR Pattern, + PWSTR Marker, + PVOID Buffer, + ULONG Length, + PULONG PBytesTransferred) + { + FileSystemBase *self = (FileSystemBase *)FileSystem0->UserContext; + FSP_CPP_EXCEPTION_GUARD( + return self->ReadDirectory( + (PVOID)(UINT_PTR)((FSP_FSCTL_TRANSACT_FULL_CONTEXT *)FullContext)->UserContext, + (PVOID)(UINT_PTR)((FSP_FSCTL_TRANSACT_FULL_CONTEXT *)FullContext)->UserContext2, + Pattern, + Marker, + Buffer, + Length, + PBytesTransferred); + ) + } + static NTSTATUS ResolveReparsePoints(FSP_FILE_SYSTEM *FileSystem0, + PWSTR FileName, + UINT32 ReparsePointIndex, + BOOLEAN ResolveLastPathComponent, + PIO_STATUS_BLOCK PIoStatus, + PVOID Buffer, + PSIZE_T PSize) + { + FileSystemBase *self = (FileSystemBase *)FileSystem0->UserContext; + FSP_CPP_EXCEPTION_GUARD( + return self->ResolveReparsePoints( + FileName, + ReparsePointIndex, + ResolveLastPathComponent, + PIoStatus, + Buffer, + PSize); + ) + } + static NTSTATUS GetReparsePoint(FSP_FILE_SYSTEM *FileSystem0, + PVOID FullContext, + PWSTR FileName, + PVOID Buffer, + PSIZE_T PSize) + { + FileSystemBase *self = (FileSystemBase *)FileSystem0->UserContext; + FSP_CPP_EXCEPTION_GUARD( + return self->GetReparsePoint( + (PVOID)(UINT_PTR)((FSP_FSCTL_TRANSACT_FULL_CONTEXT *)FullContext)->UserContext, + (PVOID)(UINT_PTR)((FSP_FSCTL_TRANSACT_FULL_CONTEXT *)FullContext)->UserContext2, + FileName, + Buffer, + PSize); + ) + } + static NTSTATUS SetReparsePoint(FSP_FILE_SYSTEM *FileSystem0, + PVOID FullContext, + PWSTR FileName, + PVOID Buffer, + SIZE_T Size) + { + FileSystemBase *self = (FileSystemBase *)FileSystem0->UserContext; + FSP_CPP_EXCEPTION_GUARD( + return self->SetReparsePoint( + (PVOID)(UINT_PTR)((FSP_FSCTL_TRANSACT_FULL_CONTEXT *)FullContext)->UserContext, + (PVOID)(UINT_PTR)((FSP_FSCTL_TRANSACT_FULL_CONTEXT *)FullContext)->UserContext2, + FileName, + Buffer, + Size); + ) + } + static NTSTATUS DeleteReparsePoint(FSP_FILE_SYSTEM *FileSystem0, + PVOID FullContext, + PWSTR FileName, + PVOID Buffer, + SIZE_T Size) + { + FileSystemBase *self = (FileSystemBase *)FileSystem0->UserContext; + FSP_CPP_EXCEPTION_GUARD( + return self->DeleteReparsePoint( + (PVOID)(UINT_PTR)((FSP_FSCTL_TRANSACT_FULL_CONTEXT *)FullContext)->UserContext, + (PVOID)(UINT_PTR)((FSP_FSCTL_TRANSACT_FULL_CONTEXT *)FullContext)->UserContext2, + FileName, + Buffer, + Size); + ) + } + static NTSTATUS GetStreamInfo(FSP_FILE_SYSTEM *FileSystem0, + PVOID FullContext, + PVOID Buffer, + ULONG Length, + PULONG PBytesTransferred) + { + FileSystemBase *self = (FileSystemBase *)FileSystem0->UserContext; + FSP_CPP_EXCEPTION_GUARD( + return self->GetStreamInfo( + (PVOID)(UINT_PTR)((FSP_FSCTL_TRANSACT_FULL_CONTEXT *)FullContext)->UserContext, + (PVOID)(UINT_PTR)((FSP_FSCTL_TRANSACT_FULL_CONTEXT *)FullContext)->UserContext2, + Buffer, + Length, + PBytesTransferred); + ) + } + static FSP_FILE_SYSTEM_INTERFACE *Interface() + { + static FSP_FILE_SYSTEM_INTERFACE _Interface = + { + GetVolumeInfo, + SetVolumeLabel_, + GetSecurityByName, + Create, + Open, + Overwrite, + Cleanup, + Close, + Read, + Write, + Flush, + GetFileInfo, + SetBasicInfo, + SetFileSize, + CanDelete, + Rename, + GetSecurity, + SetSecurity, + ReadDirectory, + ResolveReparsePoints, + GetReparsePoint, + SetReparsePoint, + DeleteReparsePoint, + GetStreamInfo, + }; + return &_Interface; + } + +private: + /* disallow copy and assignment */ + FileSystemHost(const FileSystemHost &); + FileSystemHost &operator=(const FileSystemHost &); + +private: + FSP_FSCTL_VOLUME_PARAMS _VolumeParams; + FSP_FILE_SYSTEM *_FileSystemPtr; + FileSystemBase *_FileSystem; +}; + +class Service +{ +public: + /* ctor/dtor */ + Service(PWSTR ServiceName) : _Service(0) + { + Initialize(); + FspServiceCreate(ServiceName, OnStart, OnStop, 0, &_Service); + if (0 != _Service) + _Service->UserContext = this; + } + virtual ~Service() + { + if (0 != _Service) + FspServiceDelete(_Service); + } + + /* control */ + ULONG Run() + { + if (0 == _Service) + { + FspServiceLog(EVENTLOG_ERROR_TYPE, + L"The service cannot be created (Status=%lx).", + STATUS_INSUFFICIENT_RESOURCES); + return FspWin32FromNtStatus(STATUS_INSUFFICIENT_RESOURCES); + } + FspServiceAllowConsoleMode(_Service); + NTSTATUS Result = FspServiceLoop(_Service); + ULONG ExitCode = FspServiceGetExitCode(_Service); + if (!NT_SUCCESS(Result)) + { + FspServiceLog(EVENTLOG_ERROR_TYPE, + L"The service has failed to run (Status=%lx).", + Result); + return FspWin32FromNtStatus(Result); + } + return ExitCode; + } + VOID Stop() + { + if (0 == _Service) + return; + FspServiceStop(_Service); + } + VOID RequestTime(ULONG Time) + { + if (0 == _Service) + return; + FspServiceRequestTime(_Service, Time); + } + ULONG GetExitCode() + { + return 0 != _Service ? FspServiceGetExitCode(_Service) : ERROR_NO_SYSTEM_RESOURCES; + } + VOID SetExitCode(ULONG ExitCode) + { + if (0 == _Service) + return; + FspServiceSetExitCode(_Service, ExitCode); + } + FSP_SERVICE *ServiceHandle() + { + return _Service; + } + static VOID Log(ULONG Type, PWSTR Format, ...) + { + va_list ap; + va_start(ap, Format); + FspServiceLogV(Type, Format, ap); + va_end(ap); + } + static VOID LogV(ULONG Type, PWSTR Format, va_list ap) + { + FspServiceLogV(Type, Format, ap); + } + +protected: + /* start/stop */ + virtual NTSTATUS ExceptionHandler() + { + return 0xE06D7363/*STATUS_CPP_EH_EXCEPTION*/; + } + virtual NTSTATUS OnStart(ULONG Argc, PWSTR *Argv) + { + return STATUS_SUCCESS; + } + virtual NTSTATUS OnStop() + { + return STATUS_SUCCESS; + } + +private: + /* callbacks */ + static NTSTATUS OnStart(FSP_SERVICE *Service0, ULONG Argc, PWSTR *Argv) + { + Service *self = (Service *)Service0->UserContext; + FSP_CPP_EXCEPTION_GUARD( + return self->OnStart(Argc, Argv); + ) + } + static NTSTATUS OnStop(FSP_SERVICE *Service0) + { + Service *self = (Service *)Service0->UserContext; + FSP_CPP_EXCEPTION_GUARD( + return self->OnStop(); + ) + } + +private: + /* disallow copy and assignment */ + Service(const Service &); + Service &operator=(const Service &); + +private: + FSP_SERVICE *_Service; +}; + +} + +#undef FSP_CPP_EXCEPTION_GUARD +#undef FSP_CPP_EXCEPTION_GUARD_VOID + +#endif diff --git a/support/3rd_party/winfsp-2.0/lib/fuse.pc b/support/3rd_party/winfsp-2.1/lib/fuse.pc similarity index 95% rename from support/3rd_party/winfsp-2.0/lib/fuse.pc rename to support/3rd_party/winfsp-2.1/lib/fuse.pc index 93cc49b4..b0fdca75 100644 --- a/support/3rd_party/winfsp-2.0/lib/fuse.pc +++ b/support/3rd_party/winfsp-2.1/lib/fuse.pc @@ -1,11 +1,11 @@ -arch=x64 -prefix=${pcfiledir}/.. -incdir=${prefix}/inc/fuse -implib=${prefix}/bin/winfsp-${arch}.dll - -Name: fuse -Description: WinFsp FUSE compatible API -Version: 2.8 -URL: https://winfsp.dev -Libs: "${implib}" -Cflags: -I"${incdir}" +arch=x64 +prefix=${pcfiledir}/.. +incdir=${prefix}/inc/fuse +implib=${prefix}/bin/winfsp-${arch}.dll + +Name: fuse +Description: WinFsp FUSE compatible API +Version: 2.8 +URL: https://winfsp.dev +Libs: "${implib}" +Cflags: -I"${incdir}" diff --git a/support/3rd_party/winfsp-2.0/lib/fuse3.pc b/support/3rd_party/winfsp-2.1/lib/fuse3.pc similarity index 95% rename from support/3rd_party/winfsp-2.0/lib/fuse3.pc rename to support/3rd_party/winfsp-2.1/lib/fuse3.pc index 703ec774..62e83042 100644 --- a/support/3rd_party/winfsp-2.0/lib/fuse3.pc +++ b/support/3rd_party/winfsp-2.1/lib/fuse3.pc @@ -1,11 +1,11 @@ -arch=x64 -prefix=${pcfiledir}/.. -incdir=${prefix}/inc/fuse3 -implib=${prefix}/bin/winfsp-${arch}.dll - -Name: fuse3 -Description: WinFsp FUSE3 compatible API -Version: 3.2 -URL: https://winfsp.dev -Libs: "${implib}" -Cflags: -I"${incdir}" +arch=x64 +prefix=${pcfiledir}/.. +incdir=${prefix}/inc/fuse3 +implib=${prefix}/bin/winfsp-${arch}.dll + +Name: fuse3 +Description: WinFsp FUSE3 compatible API +Version: 3.2 +URL: https://winfsp.dev +Libs: "${implib}" +Cflags: -I"${incdir}" diff --git a/support/3rd_party/winfsp-2.1/lib/winfsp-a64.lib b/support/3rd_party/winfsp-2.1/lib/winfsp-a64.lib new file mode 100644 index 0000000000000000000000000000000000000000..6297e3396fcd87c9c5f26258fd431edcdd0c68c1 GIT binary patch literal 55054 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 literal 0 HcmV?d00001 diff --git a/support/3rd_party/winfsp-2.1/lib/winfsp-x86.lib b/support/3rd_party/winfsp-2.1/lib/winfsp-x86.lib new file mode 100644 index 0000000000000000000000000000000000000000..b5fb74449b26cdf7c61444cd067fd83ccb53eef9 GIT binary patch literal 56230 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 N?OTNwFnK!ke*w|_3b6nH literal 0 HcmV?d00001

    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�g3U%>)&Jsz5h`egk?K^d{&7&~eb$pmU(^ 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�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 z zTCp#nzMJ*~rTYtXw^966<}dDhNq0y`NOl4FeNWTQhPa>1pERQ#U)m8&LqAOQOyhzt z@wBCM9#8S#qYd!I>~k9Nwr}b|IQ_rkn+!i|&w0G(PVm zz=X$JPMkO~ZZsY8Dmo}<{b9hOLna^2{-m5;YYJS=v6ZC*oc7P>v6k8fk7s zyG1lp9y$|^?vfYOG=}R+G-j`W@iWkP_N>@J!Cb6>kJj^5r&KU^yfr`yT)vq~0i#X8 zQ}wB_Emf|>;wfnNDGpEL@|4Xy95R>(E17l1?&!>;Rz*2&%JjGf90!_~=-EVTRW=&o zh7dl@6s{^WyjPN4TB<0^R+N>Nmi9*&PnN}Q%lj2hE6Qm}v>xEq81cGtym(?E^HAyt z_bAkvxRsXnl4aSu$vl`lpkyx}wgro}r*P+FWu?u9XX4u(d^>_i7mjZ+msnHKssn#d zLOTrF*T4@D&7;tZxT;yS1D>5vb0sS+gkDK{8W2AYEMc8Vf zk0L)oHm_tJbsGV11BeAI0+a(fp&VX-Xh0rdEnpAe7~njhWC35stuhZK`5{kwXe^WYr!tpJD=VciP4V1`@ELsR1`9kWMySlgp)RGf&Xh_F z^RR10;juG$u%AT!9)+Hi+crqEK5%EEEpRMLg8xW~|3=7d zrJw`fo02K@XCAfdAY3~Dm7yoV6HqdPPY8CV>|t{nGh4<=7V&by)?XE>OFuvmAQVtC z$FVFB`J{fOWWi}pV_i^T^O?bc^sbFisn-yun8HZ(`abe@UDQuW-jtAkT^X;p^CWcC zrE(ah=~4Kdgj_lcc~yg+Lw?zOUi~23-h3T~iF&1Bg?0`I(;YzVsbrdC*$Bv?Ii9JG zya6Z+&L|KczD~P>cN5^QL=)<8KX_9EmX>8O%Ga8UXOaQhp1l&ZUL2j5YY=EuzXK$+ zTBt)C;5CQ_z4;WpoQeMoQz@MhuPXd0uO$okyb+Cb-;ty7<^BqJ`&^J+3qDw>lib68 z8HMpE+(e<~Fs{9QC(5NAdb5%ld|=4Pp6Zy|4kx1pd?+WGM;%J1Hy{S^5nwyu5#SA= zK4kqq$$K7O&e@Qw6X?{>^aG3sOb3YR_@a#NgiHFb)y$wIopCjZuyh;hynw=a6grxu zQChlL;i2>pbZ3;rqZM?=N1)G?@JWYUINjN83j7|z+VeWn!$d7D^<=Cz$=V*!7C>b# zna0cKDvMSkFHX|%Em40>5r(T9wA&^~OVr;ZLc5)fx*CTtS;WhO?~a|JkCYDSNDHE8 zmz9PfZR$S=_W}$g`ZS(NJMefPIHzaR_Z2mHZ9`;2!{isbe%9vBNXTSgbEMgsFnM>Ol21&#|l{!caLlna|^O zR)KMx#>1BsPvG4iG9+H4x6~hr{9J|jZMm>~e58vsJTQ+#IE*oE5r$;M#S_NN*^slK z+b*JKy$`OC*W9aL6GZ5?vVw{+&RJ0*vAP97(S>qmHO= zCS6zw$S1#SzK*ck!}S#%K-Qi#s&}q!W%DvZe{a_u_3Q+YAz#=iu1)nv?K%uV`XlO99?D0$Rx(R$HKnC0 z`1W&qfFl56F~eu3c2BF6!IC)<1NLU&O$gUQ#R3sc7iYtH1Cj(7npN8)MtgV zu7Hwh=0*)DgG7W`ERKl?EJf#14~wBdS?A7E=4!h+@kH}5OtdWVc9 zeu?LU$lnU^D@2%`a6bXxZJ>QCW05d!K6@A3LkNp>FYQC#5ziiO|J`swOWcpNKy$c@ za-0P;!utMM*-oFafkh@P{!#`gTdm=cu|jOWa9d>jY# zJ%ECGGFDU<`Cvhs#-XGM*FQ4wJL2 zmU5;86uQcpT?;w0$8)d~>KAxkXV3wWz;i**MH>C_?BIg(g(g*d_6Edm~dA%oN#a&PjJ&@1-FofL~bqco-VDQ6PG`P_M6#Br=1M)@~4nV&T z$OQcs+(^8@<^hTcGzb%n_$NRIyf_7ZgWw;{*d_RH9fOa8+-6KyhWK~D2ik4`z6Y|+ zyNWC$d=}zu1&=($qr7GL^YAnPaqt{G0QnpU-T?ByCD8A~Er5R_=y`zIc(#M9LU@W- zgs_xvibFs&0(w>=9F>LRp9&hl9&f@bfHVz8}D}bK>wJ&4c0^kQo1k3~!0FDBl0%}}A+JGK_ zP{0^KHeeZGGvFxT2H-D1s95;~1%R&sCjeIg_W>^e_3t9DfWCkc06kzHU?pH1pa^ga@H0SuPtKYG+5vh3 z1_4F_#sV?`vjHmrp9A&*&HzdPj{t7~HSWvVdw>>zE`VS_3}7PQW571R3BX;zuK;;D z>Id*Xzy;75-~$)}Py;dmGXcv1YXMsU2LQ(aX8|_>PXV$AFmMfM3+Mv~0mJ}wfN6kF z0J{Ojfa?HSA%s>jD`w4Xm@V!eRlz-_YFJaL!D_NvcqfCgURD=tmGv<X1%%uusg4x5H|_fag>NAKF0hO261&WGz0Pj1o9q@VVYgW+D`R)qU3QP%$I9CS_7Lj?kJ(S`3D!V= zwpb@--df`>A?%Xj$R|-un{@&W8+rWEGOt8+>{y>n+F|sH(Q4`FSzNG2r{=bS)!GS_ zdI)j2<$rO{7zbI!gY@7h8tEez;RG#>A?H^8&#sI6`g_hN~%ansBVr ztk^v5Z%ge%mK||{DV00k>TAx^CmELV;G?!I8swq!|Os7FJ)E0aK)G--qV@M0nL1Y7u6R(8_Uv1_I z^0a=~VuvwMsc!KeH~?!-4$_GSi_Ah3nQnbq5-X_DAhfg$O{`it@n;!@t2s-eNl`0_ zWp;|kA`_gjEIAraQdxR%M^cPRP@%7-+63viNYcYl7FjSm=Tae0Q@asQj8??LbkL`g zP$6{6%OWOvqqlPm;@{*~a&D#qZvU7I{*0MLHiWhqoSH(HX#C?Wl#?toYBdRo7JUL0 z$XFW{^=~0KZH<=l4`Imcs;OO=mkBL3MVn#PFJZG)+7{3Z(dkH&Ab zZ~yo}HPtjOhjL-)a1g&0&+CtoNZqjzhnG8rL{G^F3&3e2V^F$s%E>HFona(Ox;2Vv zu1G`?m=6)`^itJwWGbZKXJi(N!kHl|Gt4r07%su+VGz_92nRp83??Pus;yp!Vvw@< zsgq%VHFi*pPN#v15_kl}q$kHF(tL)0Qm4|Crg9%%3HY#JN^RE^7zCOXiK5~|;Z&6` z?vsV6V^dPOKEX&v@CvBV4NEGHN2PK_wD+>(q!>n$SMo;FN^anK zunI`wTcm&r6LPw8DTx!3p3I9%2!--jkiMv|@O``XIBuC3m~beOo+aG{r?{lSqBgU@ zVBGbBbdqsX0?K5GyMcfiZ>(Bt7KWQ6QFjM#a%kj9PmNUrg}}UGbb8@Q${0Sd|BSaJ zJq$Rbl_Lnc|74C$yj~YY_LSVB(6eYKM8zT^EQ!abM5XA`^vvXq`@^_iF+oCsjiWRP znxIaj*i_pRs#Y^PiZgd^;-sbOFh`@3%;F#bC{b>%l3+32_z$`3{&pXlankGu?!PsDVZoU!EhK%Mu{w=Dw0!_Mju6zg3P7K zN12I=!=#dmdRrz@=DCfMN+c?od+9ReBsopbT{Mk~hhj#-f<27M8?%Y5M8VvBR7`5Z z+eCO)NQ}a}ag0t{T4EEAL4^32)QJiTEz_%0k%(mixKJ3IXwIIiITJ~!$fP)!@Wz^n zpu&PJ_9)z-#*1^RiEdekQN}9#8^!0mMyJO^Uv$uVBdW)}JpqlS3lf4QeLg^342G~| zQwXDKaM5|a;2zDCz(~d~9Gukd>OOL5n#Xd$A;8K>>f0TKhndMPv$%tcY z#q?}hc^pAncSMj>9W>p%=0FfDj?1}a^QT0N)n;n;L^iK6vAL6vSYO6w&JiuDj%#?v zW=$c)cFr|v3xcURiyo4uERv+nSfmL}SVV>9OQ=QDMbW)Kt9K3(2uFL<>!e6SnDCPf<#qIPs#Wz;-Z;p%{{szGtR;MV_ny<%8R$V{9em zkQW8^a=CYYA(^8JR8NeStC&?3ihFurl0W_{M*fiKpVp$;;;X%v}JcwG&T0txIyND2ZIjQW7-Cns+L+0o=wD z4U0keBo?1{pG@#L&Ug!)3tmG!dX_hd|L(oAuv6hb|plGI29n_?ZR#iyfKSFUDb zbrZn1jt#dnL2+0utDy8WT{^#fk7aPI%cAbJGEpp8UNZ^{pF9`2AWTzAUC<}7tY3=d zLYX|Vc8MlAVGusV#@I!%#zK*TSYP-!DtH(xdxLdY>I81%%L~Sjs2;F9#jPcjTS2cN zY+9T1LNn$oBbB+yDh$pp%P4OtNlAE%hRsH(|851h|7FRTjg<5omY#J`bF{8%NgspO z9}~xkj}4|0U_Ug**wp$>;ByzjdQfYiTH*HTc`9ACRkJ*bMSE{rELf>&Qw5u(Y>PF% z=Y@`o=X{o03HOX8J+>CI;n&!W4A~7%rbZk!JJ2U2&?msH6Wv2&?2%%8hF(WD%HrYI zhmrB`aHN+?8%Us(E5-}np6r3~IRa-(`lY7C#KodN;VXX-?O!B7iVsa3p#fV+%0gGd zuh~-R=-vMk`GjL-gm0IUEw%_24g+9f4h!YjMovlPyA0%L3vmA4G}nGZxn)7nHxeDf z!6x=4ZcH{o|c$GpD$wr$&WYxLMzuew*u8fWuhmg_QNf6;~ykcUruY3f{3^@ z7+Wt3NJ$x+PNzC(p@OOpA+s!a2o?iO=QJu>=SDoOkWbjBGi8t^RY2vw3CE&1pSQU4 zrD4lSVq7<4lC+*^yrel|1e;G3DwrVWF{Tg#C7UP^k`Mu>bi80TjUS1>=C=GSGLExT{n9nsII$$AIz^cqaT>yRfxLp$N1tZe38WU4 zu8+XzO#&B|^$~9*wPqMu6ev)@cufN61I=uu|9jp#AQlF^7Z0(suPGZg*$$ZA8lUYmj4%?|MaJC?XTuTNp z>ZM|(CEzwR7Yn6~z_&LC(wA5{K2wMfsfLi-az0(&q@hWtxX&WOj=79Bi9^-ec+7Rt zDQBp0HVdZ+G2!5w3C+yLlifl!+bIjs$M6SN*hPBgIxVtyJb~S-I29-sH}PS&C_Jb9 zlHN0zkNcs_G$;2&eJqsVZ#M>p(~ZX5d8?B(eCF6nnZF)I*2HmAh?YvrRO+Dd*jdI& zX=w@&{-}yW3o`0Pz9azlpyE;rT)(3-Qs*Viw7_Opt_xs&jp7xIadpBpuC_g>6;paq$X(S0!{SICV;Ra7^r28a{}QP69(Xf5s#N zbwd8($(4tQg@3w+pK%Okfsm+9!^h_P`x?w!Pio5@HSnMC947g0K+`mV86~g914*LH=U5brvP%p&KqEEys5c-LNVMgQWD1b=~`%;WJ$!OdOH<9k-{Zq}!~Tksk0 zdf-wy$A2~N-de-E{quP@Yn?z}&%3HGdAD#U?|SSOaKZK1$KzuDl-qec*n)m(0Z-3d z%Dc1o^RB}I-WB5q7nGB@+A%c;s2&qJMS7rF@G1B5sg`#{kZ@O7PdTr}@cS0{ z3k%$CwyC_t-$B61UI^t+Dd0`;Oh1)?EAdSJ9s=GH&-4oxa2Gt2f1-f5BTxLY1YCt@ zuKWVd86W{|vw*t`{yPM`7jXLR6L69Z#Xl_IxRS;FiUk}+`HRYPOTdHSOW~giIPSCZ zzd7dRx3|DuEbz`2xQ7KEY=K7$cqCGz^mP)PGLR+UBLx3k2~Pe70jKi#0^cgZGk_OL z@Fd_x0-l3s3})<-fKLZX>Aw*0ndFb3{an8Mvw4)c2zai5dkA?Bo#6jM!0CD&@w1=D=O0TZ z+)pXsB(HE#Tr6;v1@2*i2TO30ceDkbDZzcDs zvhWvi(f_{SFY3RDlRvIavKJQqA};zPh}rLds{agbUWJ_j{8Rr~Pxw9)<%im=*dG%9 zcl~8Ogr)ix`%4jb5cr9B69I?nbK&8b{pR3SRRdWaW`O&bj4VL#KT4l|Qk>GWw5uih zTe>m|%$RjG!9&1#Drf@E{xqf_1pJTluSozE+eKC;bFYoQ?x37`)Ww>=TvMIyrC$S1 zchsG5JB#j~FOc1r)7|flEJjB6z@NgO?x)XSrLrsxXxX6C-FB-(xcdjU9^C%#!xknR zEz5&D65(D5ZX{G?5a_22cCBemrA(%SOZh8?OZif^;lu0N zGWHqx+PCL%I~dHM_;wwkoU+m?_9{OAk#M>4z$O0zSHbNhxNeNqklj)2>CBhI4pz!2 zy+pW9vIMK#uDrjY8}DvKheqWo>dwb6>cQi;dZG`8T#GP(_kv6J$9ICyY!BG#15S6t zeUN{;JANJU4Stw2fKK3%oGr+eUBe7IQ%{~`c=4_qDYRFl5}ZUJz*lkN)3Sufyrm))^Zg<#G> z^ial5z*U9et~Oi;beu2X7DO^u{X3kQiDoPSF5Pjb{LwvkN{{Zc$AM1w-F0y3p7$K& zlkRy>2Tu3AmynCq3`#c`F2$#NEjU8~ePDFcv z>pmHBkd@ovk|jF_JTV*frYN_&gb6@XS-dqaTeAD0+s~%;Hnlb0pJ2lQ_&gZBk|ipX z^YO-e7`7o6V86ghV~h7EtP*Q%@gBk)K*xI%?_$9ofQ zYQ`$?-o$pwk&o5TTUopf-kVq){PEtzCd0*h6APEAZEme+ut}C^TUfwwlN0*25o0R+ z^EL_f2G;-_?^W!&Tw{&*CAI@N-mh>Y^S<1$iy?`-a=d4uJ(tM~;hum$-ltf5*?k4x zn^+leyf-md=xuNzuQ$1HHS)VvaRrpUhQIO%>CG*c2-p4y?in9rtR-BsPeA%XHVUXd zw!(D>o$L=p!X>)}CE%NP2J(}aD-7otdyGrWiI)&wQLZ3c1zLnN+(x~@B|8Sx|BzjS zCBVtHK>=K{Yp@S4*^M|s^m6DKT(TAMEBV9i4*ejT66BIC3A^u+k7ux12$yV3Pnpq~UD{U_=}76%2Bv6rad7Z`|+T9sQB+sIfigv+v(F}3WD{HY!6Spd(gDq~4< zjg@^3*nnJJNthmE&%lbEfoe0pQ8_L*WxMU~d5?rz)@s#MWC1Lji z`NrVC0i4d3GXXo^9lEoF$3IU9~o}mW^wjPUfOA@ldX~+ zpp)H-BDiFmqzo?EFL?o%?3Oqbfeu#%mu#9WU?uWfaQg$#3zxBRa&;BENEzEESJ&Dz z3^@7;m*Fz>tD|LP|3p(?Q=4p{d||7$C)*z*5RdGBq`@WI9@B{r+$C_y_D4Qkvj0IY z*#^--K4dFo2XL|z5)RxW2l)k_H(kcA!6n-vF{qcw*)sMBc+ngglgZ;1WKYEED9Q(0 zA`WoL?#M`af}(h_jJ1}RS+iv_)(&*Cjp6~9?4pnx`Kb*3X_?&NGt?LG!j&?#zfxJ` zDj8cRSKHXFfqX$PUMpiiEAHDAZGc>4an_L=W$dIvW2^c?#=6MkZOHaYF2a$ml|69D zCW{*SPIg(&0Vg{vWpK&1$_uz;o8>%cEP%sIGZKjseFdFBzw33^L5T<$Q9g6zwT z!+1z`Xvz?d?6tgxt2!xT)sG|IkI*}~%G2NrxBpql5#=G9Fy6q)Ud;%&WV2>JtR;~h zm`vbgCuRZgT(~l8jTPC0SpquQgsCDck&*qF-=P0wyT(aYt|0q0b8t$6?AautzRAYT zW`rmEGyCA?!u2OPDp3c($-YY&(VN5m09>-!@&>E!WVeO%g6y>Hgg%nZ7W)%u*Uqqi z06N)h@khTB-3GQBKv%Yfode+R?d7Z&aJvq$cOlm(GF6ZzaI*h0g~iIrF3d^!JzKH` zL-QQ62cv_3bXSrY^5iaO^WpC4A?NxxvI)~0`BnBr-GHv@#p61-RE|AxN6O=^$%YX1 zhh#?x^Dis1Ba@Htv%O$fL>?&FUm)H><@biGPT@eAkw1r0$_^+{m#}v z*kb@*j2A|=;=aN?4E(Ljt;n{`EebbW&i2dIa z$sW#5`F(4$ljCGnZbLS59wR-nos$HY{pa`pp#&7Ln1T5vhE{vH9&jDtVoH_;NAg2k z28JnDmV}5$o{p)|TXa$wLk09IR(Pj}pZO1c1L#HOL|{A}QvuEfF48ytqFoj2SBX|e zc2>|3^VUxR3dqp}C?`D|2t4@bTX?>O^5P5!`XkIBdoU&3POu_U71V#7{;M1lepvhn z#s23I%!tSah(GLs1Og|^)4q77-+rqnm|2kgs1V+xMHkb1;b+D9h#0vc2r2`=%D=A( z`+i&)%dc$GX_i`u%YVI?zPX+Zdm_^BUD7jI?WgbQk`?J#*d9^Bnn?iS&~F5+r^t|d z-mX7cwXXPEoxFYjI9MGbjcb_7rYPA6Xin5`f-xb;%OM3=nKarJF?qC z-|MCC%;H4@zdl^P=qsMYkMcmNh*BYpzQ~P}bDZDX`Rf4NHn7shNh=PV$+owtROa6U zrSv*5>$k#NN>nTbh4%)?ps8fTUCb3pk-pYSzm^OQ6IN{KD-+2m6aR%}Q{7at+DZXf zufCZ{S|twk&|Rk9&aNF)&Pp|1sl@@G-p=7+zU|$emHITCFN@KpB&&NnPf+Wf`}V0( zwO5Q@kJAC#2}&@)*9e`{QVG1KDM&CY36Puc%Pl-=!ADfcYBSxRpA;Z;KiBoEt zc${q!HXr%az)Gp?#cg%cZlu7?@gKOkIdbt3Q!kuT5pYmac^fX+?G;Z|=#8FIZ~o9J ziXEWNP-~T1`rq3*2A5Vda7rrGS(&ckj}Y{Bj>jgl+F9Ar$fsAw%2Vmp(JW8BIvNXy z=)F3MasxsY@UB0D95#{|QyN?hWSbn7&+H8j2Bkq|@G$f@1REj^(S}5W&X8%yGR!vQ z8uAPVLxEwdVUMBEP;9tlxNmrBcmeZ4_NyJ%DA%~GQLTwyqg#`;CU=ct&DJ%AYl_$0 zTJsd9h3wZV*Q(ZftPNfpy;iq2Yi;gY!`iKD3)dE}y|wl!3=i4oEAv(P9{Iuf(fPXk zto+=3L;lwM!u;a=Tlr66mdJjca-C|O$GYHk(d%^UvexCUGpyUXu5exPx?Ag>!f28G zdgXf6dXM$N>!a7})@QBHU2j;wb$#Lb;`O)IKZQvn`whwsstu7FqBkUN&}}em*t(%` zL-B@N8=k`0k$nM-1^=J?-B+U6a?DF}l;>@#w3*p|=JOgdTe%@e`8`O7$-H&_MhAOE56;j+K^+rUX`O5s>+eyG$`aUx!k_i zo(&#f*I%F*?6q&`<)hBd6=))lCGC$}!$yL2C>iZjnbLsfk~3pGWC?I;f&Tzjc{ z@F}^89!eo4KQ|@aaaV?F5|YtDDt)}Xl%f4S-P}7XJE=OkD!n{iRT(OK8(Xf}a+!^F z+iWZ5s2I(x_U_p1ysm$ZHK9=pJ7o9i7@D!iZpoSzpU<6_w{zRm*KO+W{ranQjve2O zDcpZMJTZFg$DI$xhmLFUy3zS#%35-dHERb9^If|rwC&Poit zoc9+R91G{ob07a$)r`DbSUIQ~WYzoXYXAI~tB+jT($(`s?O4s|*82v2uc}D_Y7tK> zRP{`*?wUGTRi_$;idkFRqJ}fXXPL}uj4DypQp8oVnGT6*X}TUAJEp|yb!OG7@-T*y z&+IIOiiO>%)HJZ>F@Kr%|?&sDaHZ@Jvk22THs;8>Es+*yU!EL6i$R<_m_D(#s zswTukX$7rR+1gkqWLK9dRCYEt^k5~E>aik`snl{+=6?UB>T$AS--twY&BTq@y4oH5 z>CL$huX?Ea*7$4jmxs2*&Rje7_>M)xG9TG05^N{SUD>@=&3?8WzPa=F?)!GG3qE!C zf&0`x6LQP)hi{VCxNrM<$ogS(uYVQ1{ra;%;?q_ZH;7f`SoxrV9TysxRqS5_imr|N z&Y}AI@_i21IMEv$*S|-zseN@(b?Ma2*uH>vQ*{#CSN18_x~keX)r3x`mt3ac+InNv zds3pjZqBi_I){OW|iu7S5IH>)5lJut~Mv>&T+KXXK1ZInKiu%+oq}M zY6l*+`)b;}F3pENRdxTy_0NqFWqVY;dBufrRGmb{ZLM+^8MYS$qWNmy=7+Oz zl78Q!-TyPc><`7lqaVu7R(P%Pa)cSQe`p)_vPYg*Szu3~R@B(Ci7 z!HlQAhd!L}Q8xt_U#<#`GWi7gNb@=p}#}2RX!!u_u`s1VC$8ukM@yERzH@56t^n9*YNsk@1 zpMK=)n&YrWmE*7ya|Bi9zh@AX+rQOana@oOlQBw~W+&BMNjmQtCpJ|SuGJ;pR_LEi zfvdUJR7rj7t2&w@TDdw}DgC?6Yuh+UHtcunMW;W!bY$n+5r5iPkG{A{J7$1meB!Y@ zRW)O?wq{m-Dj&IWbeqD5>w2Udp5C>jLz^$2Mcv%f^1{(YKA9V5MXVZW<9bcrob4{` zw&3T88Gjb+YUmVxp^IX|nzLWGolx3++~jdt-3zAOSe?_bhbpIGS7TNc3Ylw8!&aa< z8Z$^!wuW^wd$|{(usjbf+@r&!b z7oF0Sa&ySNWCSje#L?LssYM5Te zns>vd?o}MAh3OOqX6lL+bvub3$}s+9tJ1HtG9=Wqv#NVnnnrc%(p5=U)Nr~yi4139 zI>pWD;NPjMam;b+;_BL|i#X==GtY$3?N_a9C#F@=ypa;YJ8hDVW^J7@gLRaa4O3@D zj=UD8+VZOM9890S9iw0M`_kr{mZ`oOo^*HU+MV~`ENbR(cy`Y*%S+cCd{b4W^s4i% z-QhIf@dxHT{KEClge3pSn6_Ko<`u83Ry=X3UxeGhp69$i^?B0AuAk;rT1L-fE>Bk1 z{OQA_4iBATcr!J(?yV-8psPm>E3&r!d2O*gFbuct{*jL z&ZU>5TAa@~`f}CC7T?Eg{C--K2QA808%pM_iEVmgbkcLp-A6^ER@OReU6ysVkKL0) zn!+)m-kFP^G=E^@l(EvkY#Jl-E+ z*KFsPjjy&D{b0(%6K|ZuA7~o{IWIlF?1NSVPc&FweEiee7qjQ2{`r~L%;_$7Udr*F zB*Tb34G&pkeZR*1s5avWPW$EPDPNgKe(hBc4#(AY2-4OS_#bBO zmy-s~=%{aNHh$);kWWkzzayssUnt z{%%lx$1J5u8!S2_G*}ty{l)vuGL{c7b)R0x@3PmT-)mp}B+#zuX_ufM&t999J+RfN zO_^urE&6yu?5o3$tB16?;nMohS5Iu>M{WtvPVs!Qv3KWB!#>VYx2?W5q~Ger8F@c! zef@3w_3H*DwHea$oJ~X96LmZ6cz@Q(@=@tq51kls?)cRDW4^k#Z^ovL!<20Y%zq}2 znf2G_)jjOeo*Y{=Yjekz=X>O2PUx{Wr*Bw2`EMb6=d=mCS7pfj%YI7+r@a1g{F8+a zgB~;teST!@r6EpLI-E%Q*7m?Bs-AbVqUtaCBz>c;)8p(g*V*rdhR=U6dF$0lXUnY& z2d4&Y((E`=W9j`6zr813v>$)q=Ki=lRZspJCY!#!$Ukq_(eh=*f4!%Eoq6ilWhcYS zWe4JJO-xze;gi8n9NVrd_{@9h!xnekY&R7y3wk|v_+H)IrDvU2-M+iLUfH0DK1z?Y z2kDnL_iAnzqj+^#JJf3S$Q8+rXUwawSiNhQ!Y8JnTJTi|)z_xSRn~yWRtonYOy>05%4}P)f zmb1IbpJ@l)bcvhTH(|MNhhKDFJAbfknz}}NyzkL*B{lSMhG$KWWroWK?$tC1JhZt- zKE|&t7{8VYA9N73J ziO$^c)k)>n$;~u;bpvXAW%{>_q5m|#eLu5{jsI5%d#Cyj4*$VParoJyZW})yy!yhK zX{T2PtVuF#Ju&U&u-|L1_O9PADu4DbiGNJ_<l=~rt1tl#$4Pi?cN&vkUT`S42b!wo;!^j_OO{jMc^_+W7Frx%8tyXVsW;n{6F z)9*F2Q7>51`t0RLnwyt%XZf;8SG_&wT$?;5V&c*1b-`lbY*dwPov%G(Fk1#)$KG8y6gmOY_)Jn0n-! zz-HTaMh=?r=f#Ek#hcr8zrC*ig{NCx>u!u_z0A48Z?o1f49ut>-b$C(>H|X~Kc!cx zS8Ud#^kiqJ+`Jy{wZHoP_my{h4u6z=!?E7woHjpvbii<Y_>tBw2zD(aQan&y0uRiOs_PpZOfv0PF9qV_^q5lWCwgCt1(DCM z#oSo@XZOOF+g0lVE|%vFi0pG#G5gQ27M>k7Fr&`k#Yg8??>T&~W5K~zb}#GM*HKJ~ zYOy!2H1^i|l0Ls5O55J|{VExcHjVU6za70cvWm=w)tnyo)2Z^2MWa-8_WQ2fc{bzg zGd0I9uYSgD$H{Ht_%;&b+t7blKdNwKk`7&uE|%t;88~kolNd z@%oXSYP>jBV2l~7(!Apc<0;0%2-D?X7-6^tq|V#|k{3U6V%bmSZs=<0JhPL?=buJS zBNOdA4DjaDXKuurGW5g3#k*4SHhMeCrp8~m)VyEGR)-GugX;dM3O#ke;nfepBX19E z{Yp2t#^D;?!M9H;qNQAO<112cF4?4Reg@$JiNegFYnc>^`E7FdH9Ee2gi)N{C(Z5 zDu;KiIyq}r%e_Hs{l6X`zv$=GPs<0&LpF4qx;S)m&!%?%wU(UhKJofrPO;0K+x6}{ zcEiu{-+7)4+U4;{^X4AKyX&?*d97(?kFu3t-03{-ql>M^mbvRUt(OJu@7pu;i-0d) z9bP)=an&fd?z22IC%Tt^T5`R`o2D*je|UNS=e(#_Z7)rI=KEQCyZ4>jwYr*8f71K! z&Fi{n@wvOt8ZIAtO!u_gfjo9oiK*YK=!6EVn`Qk`_^f8zI~QJU?C4#8z`eRPn_lha-e`5(-ydI?{92V` zy#OOtx-eqZ{KVnIm&NVxJ-Hfu+Ya9|l#W={@y4b8?~Yh4RgTbgj9870BbKLLpN^Z2 zN`G&D9bI_m>ZEeVn*)WEf%BintOIv*^@%t3mW>?HOXaB2xIH?w z!KuU1=DnZIy)^VtN$U;0BR6HNIJsp~y{e^l8twsreck46O+Eq>8F=9A73t-l}jXn3Q250CzMa&u>osBIJDe;QxZ zzaTy$VpUk=ht=Ee4%(o)JmjZilSY<)aWrVuoi6uWk6&3l>e`13v##t~l;@E<;k(Qq zc5OSnbBu$#!hXS}bKUYgSWlV#TTUPQMY>JlIi8&^UbWJf_udblou993=NbL^wpa)6rHwL1PyIb>>#O^5>)lSz zu`SuZ`>t2M!=ClyWhJ$iRBzsNdsu6yIodllLk9b$ecNjDF3(%ccDO|W_+tjM9 zmj70!>6q8F{co2yZf|<0u{dU7#YNVYTkGZD!K_sZynIRCl`0&Mqyv`E!!=+2`qA+m z*Y<mYP~gJO%O*Jj7>?ZvF|uGd5N(wHgyxnl)roX5gMbvHw`S@yH}dZ zhaa8#s4zYmFg}@fNh%$k-e#la*2wV!T2+NzAsZ{ai!zJeMUf-JC*KSQyheoIbB{8t zO>5kHSA&bs4@B7RU$J@htaguPjM~^}uj7kZjWl77kMn1bPukz8-mi5BOzhZxxBHV{ z|H}IM#p>tJQg5`}7osQ%EN*k-kM=`;eEIA1&8mqj=4~H!?#I(!-k*3if4D4lb^jg9 zkAD`l!A4PcytDVYdmr2%TJZEh$7<`#pLOo_=(*yDSp{bTJl^Z#J4O?>bvR~%Pv-5hDC=@EM*&+*{) zp}&QX{n2@oHse%Ei}t@x9XF=MSjWHW>62odRNcR_-XXjGkqqN{XVXL@T`{SXAbvyYaKPb zku0uy*~tl3?)zVsk7^q*F!AxOrsG?ETi18)WcU0w%T(Q@+&j9us9LEo#8@daGFBBl zi|yFVt6Gm1sx23Wr2lzQf7SYe`fKaOd0q=wT$QRGmfNgy0n)7*d`zCeXuro{l(%Os|{I#!Vts{2^eG$}t)!B{;<;?mY<>yV_ zpuX^EdGU_pqt|>E9=_wN9UBH;ig#-fHMaTSLq4)YUwwG`%Yhf&uekchKJds_U0``@ zqFVhv@{_ZT-_&zyyZ@&4){D)3Jm##|2eo(ae&uLY!%%(fj6tt97cc(E!`*4i*5%Km zzq(p5bn(kcA-x7Pxvgw`a6riIpPDcDy5X!9x~z`wJFj%sT$pRMd))HDg`-C7vU4nQ zzIgZ7hu>a){ngI74#x}UPWk%Q+=2z;K33S*`N3B?$l1$d=a6NsHc9{L16;+5YFISGn-9w|B{iDStd! zQE%;luo3gsX)iBLXz}wY&F0m~9z~z5|Jv$w?*dR^(ZY0`l%ZC1=pwAfyF2KHS+Biy>i-RfI6qe2590~1wR|| zv5CVI#F*?~f8C=P8qvh#c zCQy<5u*(m0U!K-=Efwb5bW62V7anCy>V6!_B#{(~q@)l_FD^ooc@jz9X^|C4_nYGF zmPqa)34DNrJrv0!Jl0Q;bQejUNUWcWYy}d}S4dPMN%?}LSR^GP$um2n8ZVF{9wQjx!p zggrzOC`qU=LK0_;q{0MANi8HQZzP^RNLYPQ=8wd>k$7v2q| zx`Ag)Ke^cmfAeFYr^BxqJJ(O1Frt~mEr*@#GLb=Bn51T=a&=$|P9ofk=+TIM*bpQ`~_>Xcm ze}>mDRoSkiT-7R2TsodD)%&TQWQGM@LY)O@@mswgn`B*@TAWq~`~B9Y zJL(VoqfNvAr40iqPsQ_X9K$^GyGJ3fc1GjkM5xDgnl|LcDo6MepJ4USe zhO;?flec)j;Y=mljIpyR1mBDU+k9JYdr@j$h?4KXN0`rijH`JGUe|%6kZmNgc+Jc< zWd9mj+hG?ttj?DI44lJM&ffBZG4OX5l$ioj)a?AJg1?+(BYSheTi5 zYU~*Eso=>LKN+%VW0zYcfIHLii2mu9Wbbjo=7TQdn66;W{pBI!+S{mp1Nq|-Ed=as zAg4>?oXwtrcSrnzp#;I04Z25=ht)arXJFyD2Zm`{jrTAEFQ3DMHH;cR!}0~OU3kQZ zyI#mo#=F_SLkqlP21!YgG{Ig-6r~XknnK2Y=JcOq8vvt{2ekU-dgs zcC5NyKs!-C|3Ce2pzKR^y?~bg-QN~c8(e`$EI>dDK}$h#c$->XD&W7TO-I?f>Use! zWEyAR8!wlt3k9?nv^^gZ;{Jc={~5~J>#FGlwEbV&v_N^U>NdSz%VQ?GSt6HRU6TD; zUOv&M^IMQJ9+#O@dg(K|c>`7ge5c$0z@eTB4 zKF(BP5AcA7Y9~#!bd{L1n`D@Kgqyr3$-^GXU{_rUWLqUo-?Q$Xf6A{$*ODJ5+11R3 zZpgzU*7|27N#2m?Y6d0IE?5kh??3q(?VoC7)MMs6s1|GJNWc^us5`(yz*VB$jh`Yzwcs5)Twn;JSVV$A&i;x7*Ciool&3gMvQxpQrF#!9@*kBBp0GN(^KT~4;>49`uN$eFHCgqtC z^D{0ts;~mB(S7<@lUQ9TQ6Vg*2uvi5rfC>g*iCn&L?dB39m6=ndb$BPNev~ZNRtS^J7y}pk5$iz@C1HIz z&;t?%*fG%$TJr&*u)r)P1MPr;fWi*z1*jIb*i5_#b8Ho$u*i-93Ztw9&|sIroDim& zFe`+0)(+4*l$aMLY8nQ)OJ&lkaAHa9K3O*75 zY8{OF-zGqfB43sS%mNlqh1>$nn~rfnLuE6tVKt~WGa1Byii%kfV}QceHJS#FUI3y2 z@nkMULxJjaVmTPN4A2wx=}U-(0QzP^z=3_6YKXm)$`!&)jz+n#lpUl8B#h-a?VD2!+8=~w_%dn9?U47Dhh#7d0kZ&=(6d_rn*yE!OaXiVcn;8L4mJR7SqIP;upM9=;0VBU!2USO z3cwzUa-;4#Vl8QuT3Yo+8W9h z1u8p7$6f)1((iQNRX$2FH&6y28&w~$z*p#D}^IJoCGKx0Z&l(m+a4ht(&NzBG5 z!N@vFdng(JuV#F0wYa7p`P&%)_w0JS{=-d7f&a5q%Y ze&_m0riO}f{qtYX?gP|j89 z0*sl>eY6>o?9o&9+~nD=q{heaGCNhl8wK-Eufak}70TT6XzbfirMp*yIeTJIMy-E+ zhskcj9GZeMwZxL9?BC$J!CP^&8!Qp-Sx<8IEX64Q*Hrg$kkK!U22nmd*fcoW{n5Sx;LL`N)=AIsLq`%uiny@ z2FiD~bf-wU(NCa3P zCU4vpKmqdQZ89~J*Nkj~b7EP6+(@O{(1__WFy3|8lsLs=Vp(E^h9(=Z277E68z zOx3}1tG6RCbPYo0+LRV7>q!ljE**8)rlDM{Bifi1q(4#VqRp7@yot(I7h}nE^}NKQ z9dn2HvaH22?R0NzpWE0S`0&OCQmr*0#A4rrRhv84`DoTnHwT|#@6&fHS9yc5;P9owGi-s$yD9-fMu5cZxB)~s^&PdSwe zrulZrRxMc;wh=4mIXKF{?DUr`RPv{tU0r6m{qN`n`Rp1_5%TF>9@1bv|IwCQm+y9# z8vMz>o+WSEncs5vc5>JWgk>`px@ov7d83C)mt9|_JCU#3V?hnulIH$q7NNs&JjHP| z^-<|`jm>l3D2#HWw?^eW8P0TlynxQSET?p{9GusNCd$+D0@SLW%y~F;UFl|3aX0Hd- z*JlOMHmU+woZk%ay}mIkmqLnIjL|JnjC}UxbFxZPl zEJCnM0u@D+;a%A{vOqtY6~tJo3ZAr;G(+dI93^<5tP?Bn6>uz|G4(840%#`nM4y7P zpCye4+Kp!kVJV%Na|3Kn-;EX68G$&>SPu_lmXxwa^(nFw>y;pRsFFP*SZ{>&*hgb|vrJUF1ap?0V1@N#Z-)J&l@*q3FR=q+xd}`a zUebX%o1o89&*<=Br9$dB_zT+I8^f|xmHO~ccz=if&s#_PJ!=j22JYWBR~6WMD8qe~ zDX}|9Y3^Z6NuE)x7fin1liv(y1vvL!KQL9;w>`wPW4)m250uSUMU*Jqa?jyF3`~2x znrU$uCRmuEEEz&rW*P%?fuY5Oa?1WtYAhex@8iB*mF&x$YEVnov!fZ7yO||FY0PxK zHXGL5XvMOO!Ga}j@{@e;HV-j$To`kP z8D`&F$&%({=h1|NN}{Aly}sAI>Sc^XyOhuRu>Ro1XG2xGUBHHNl1leFlV@X9utXElU`Ov{; zCgV_*U0;5G(8si`svv>l!bImr{ZSlOmpMPjtiWxa5`-=xPnIdyz9~7OQEzzRY&yte z4mD8^k4*M8Wg&2)Lauu;=bo6W49H1f)?rPM7pm_WkhC(5G-XpFlNSvm&3gsYJpySw zR5cEFbklVc#ALE~dnjX~oel5>(u=LU`~#}b@C<$`Mk2SeQH{NFKM zCm!TRPN7fhs|toH*sCXvv8tbOfPGau2=rK?n-biajaibrtv{L9P{RLFMAp!>v038k zEAP{~DP8J1K}IitiI-zl z1?j?CafF$W?14G0{L441B0444woNdu>7VY%3eH281H-!az!WgC|2*`7;jAJfb)L`% zf;``#{@Zxdq2h%Q6J=m(m)NP2`^N+m2orJgLnOa4Y#xFqMD{GOmoFW*@E#k?lFK@& zlFLU!B!uC8wyGd;o|IFrMu&PPer5CJ_lG;Gp95LbUo*`)i6slDUEBytDD515)~@OI4fgNM`=uHflEB)z;s^ z3V9dX1Tzb?VFl$rk;#e6F&^L!cqO4#BB?OU+*+tnW^axYs~XJNwyc|~04Ih4oNN=k z#3ZcX2{yVIX0nhfV#5i+s^ohL^W0LkAXS9)5p@O(L(+Jm zO%;Y?RXTxzPr~GoRLPs>s;-wRT>l>EItCJp*}*)+?zL42ISI?lA-4d^vkc?~3pdsy zh!uFaGu>}r^-k49RLdp;^a0n@`7#Q#0WZpPk2En7dRQLk<}CejCI8Hk0YryouVdY) zft+-#34M^a9t$9Q`RcLy4%V>7N))OBfe;nC>p{-l@-2^#B|4IyeB!9&@TLPMfTF#3 zU6ou4q9~lK(wWFHMNKGPo?FzI%H`cfZK;j?s>p}B$POo)Q>*+QC*2UblE?q-YfttX z^<2tP&z0~f@EGOf$~iv|L|fxieI0th2=Ku{Y#R2>B6ZBYCMTWppkuP;RJhFnn0WVq z)OfTJW{pa|eX0q`vgPTOwwY99tB@VTma3Mqt4Z*&GPtjKD0;H zoU3oP#X&HjeeOBA=$uvxxx|0`i5%t3^C2!l?F_7$J6EsgagZFs;3>r#JIHs=`LYr8#w!Z(j)z#8KRVuFGAD#}bnZiZdlIE4kBEFLIa1U-bbtHCOA?HM!tw zIMP=r=^;B@(@Ulu^Bu375Ot87BsqiKj7d226ikzd{FDYd*Rf6b|7Y7WcAF87$6 z_}d%0n?LwAmnd9*_s36gn-2cjf%eLkNY~3zcRJ7#c`4Fl`Q{xTI1{=%YFaEO|CQM^ zvWemRd{Uceb_n;ef26MJJcBjjL{i$=8N@|;8&!dzb~ADf&S=95_Q;WU8&j^FbayQ6 zmhar{8(HJ3o+qGHI^;#%kw~5C-+AY-xI>XT#ou}Bu(I$*=CcAvyoy{mn#w$r%qPQboS*;Xq@WpWpjw0MX?9)MrhI8s;B-Zc6kt z|M-ie6tT&oiZ~$~4a7-B^$bJ_;sNsvE)~)Mir%3$rh*FVdhmEDihMqK(vBT9CQDaHM+)-phY?-5X5a=IMtDD zK6SH!{hK9-oUl%@;g53Cr?#|HKKRMQZ!GGxP^ALb_c2x#M>*yqYQS@#%D>H-Ayn}~|h8*){G)eNlFMFl; zXN6Z(OP*J0Leu00m7~qBVum>v^&F&G8SX?s>AC)AfYT;O9t1$*K9Kn3vfQEIX+N~H! zF*NkxRx%3mTAgsGF>dc zZA3n_lvf&2H;mH7nCdxYDq|vbYD%V?vykaX(XP zPHOE)Q^NA?wKisSQLlI zR^;Xqh7k;Iy`W)4h^p)e``kPpiE5g{2V0R71@UQC)JghynxC{HZ{-i@BnPVsR+f=H zIdZB=^Qn?As7Z}m`USHr55|(Rzv{zTc9r>AMZ5O7>x^KVfG8BHMj8>j5GF7pM*d_F z0Cu@X{8de?z8$x*rskGW1>Zz3A}GASHNJ~F$RDDHzHl!aw9Dj?0xaY4He~1Gf;DZZ zT@}TuLW!M$kEigZHZ+jN@p2m)O>1}$TT%mDwZ##-@OQRYx{@c`p)QP<+MzD2s_r0P zV2`@4+{^)|{F?W7pyuxBLI$s|auTzw;Jjc5-*(rF?{lDVBhiFEbD(jwpZ9mfc)#=8 zj?@Hbw{#-z0!ucl2IyHn5?Qd}2o-$m-Jc(KqKVjHLuYK%l@~Y@zSZKEE;K{=7$Hl; zuyGD#&$C^qK}%l@VOY#_CB8^UrkfEHPeKzQ z2$lk^LD>7)Z+U19TCLKJ{+5TkE4#(J`Sm^@JfY*?ZNJSyS09bc1 z&#X(ssaX5AE_FASECYD^01BfVJ~x0qkPn~MfI5&3Ki+@>q~A~SCk?2!^z|7xZ%EDP zr8cS|%_ixu{RS4-mNcSs5?DPah}zO={yYeK+ReKJQ+=Ajrv-yT*76m>IKxH!VKA;O zkL}~XXo2AoO~{wF@}*61^lkaOCe)Ywc$W}rP40YY2!%`c3;CH4s!gW+VF(W61&;_N zw^~o1=(+Gw-+s{_d}FFA(3!%ELBuEngv}>~Qh;&ZTJf44N_D6qKOIV~C1XEs5=Il~ z1D_U#^_21zVc5Y1ZWE3r=kwm-^aFL^55uv9Al|Ym)t5g1#78xyR%T9^t?;YWyP zk)5`%Db*qx&F@6e50b){PiRI%=sLgLj5bgKAKx56IY?+>?Knb&fp&#$h7xKt4H-4Bx zbI^p@6mn`s*J&uf*@}D|R_@mGG9Vy(I(PwL2H`quw3e-@6G=1o{5_{qo1&sbGLv_X9r5nMSEsnZpK1xm{qk!)CnPddzc1xxjh&HBSs&? zMc;4z+TjBMd)}Z64U%5x@Wovy*!Wp}mi$ax)CHoKe$?LXN?HXKYBjOsB#}SQ=>=(C zOIzBDrbvQ(`ceaFqZ6Osms&|hPW3#d#l&pMNy(wp6uw{} z^^{g^uR7z818ETT=Di1DVX1uSAo7Ir(L(twAlH|=_(%$Eb+1FZz(4prUVregco5NPDRnx0yt}oQpjF)`UWrq=L&z zU>Duxb0KX=qbhU-ANEqX53*i6iFVBnT#;~2dk>UpRpwiiLc!zx%v{|nlRid zxXly_5rdnPV~uD8OP(xZ$&wkfc`~0R*XM($0MS!<#uPB$SiXA-6wi6?J{5!e^Bz-C zn9rw8rRI{Y8{a>bro({nn}&_Q8JO3c7tNq>mrO{up{6XU4BDwmU%MF4w~pJ)1a@0I z{Wo^2su%Lenbg?NAJs5;{9Az6psg|$|3V}gObVCW-}vg8Sjkgo;34U@VWELqC%jH=YYAW5*lLh3cxK z)yySRlFEMMYv$1&m*tPD#7lxOdN)>wk-_w_JYEeWAeNV^>4R&d|D)B54LsHsywI~! zTwerBFSZ%(F0@&x)XfNT@WBH5p4#xFg}8DC6Kq~c=Ou-`cETcBL$2Nr{+>GXpHtsk z&%HBfo^)@EVK9CwgXX|Aj9d(+XwDBVro9e55s-}m3WbX+A`!xdY|oRIK!t|z+e@I2 z!g$d4Kv@Rw@;y1#y@(qwGqg`|h1kRGR5_UGTi^B=OGJhK(q?>5J`yErcQ2z}B-X3Q zq!rXiyE+qwm~?9uf3Km~khh3jq~pfxTTC?`pR@IJMhMM@IlqH#l?)h-+mr!-F-lc| zS~4HYzgtf28v551F;Mfd*@(hEv8sAk;ax4cj73Nb&~+?*)%QaDE6J0;TMnW-!@Xo0 zi)}BJX%gH&u9wM0vbN){Srkl7c$X|{Z1aOnl?x~WzrqIh;Y+jVx>2;S=tiudXt2fZ z6`*G*+!Yj1RsLlK{R#fKy^_{~yrw~L;G9Z1RHO$#xQb@uYiPrtw()9OO)mTIR-Kg? z^PgumnU}6X*NeQ%T9E4)ZR%POSF_iUzKCY$hLd&JJ%x)u8RLRal@j|5Kaxz;n0J8`!#3(}q_MVnTlL)V zLjcL+<1k#{Jj>#nHqx!mMNR(UmOJL2L=2}P&Q;vlysLo_xf?404P^SFU6~!zUBFh_ zMTTh30V;|@HC3LlV{SIWH}|!tH&G2Z;{57nuu>o|-%MAaiwd?t9!RA!|79zsNpG`w z>^7QGH`Q5F4s#=|$Q(itz7`y^U$}4rRLR06E`_1-dIf*74K~j)9FX>-bLK4PRF&dxF*&ijBO90;EY||eS zI%K`LA|R9}SQSMG3@2g{f}oVR`A@K-2!AiqjN#*VkqZhvdB!dZXt86zDmfi05@^1r z#(EOq%YaIXm6|rXNW;0>xd_UVfNr)j_Fq=El80WvNc;HQ3y`Bpe8mNDf;qo> z0n%?Tcesdg5x2TXTAHVQb&)EJ@g0-){#7a>(9hQEuzl>b@22HQKVeJ_uK>mvTu^Is?DyO)WGnj{qrV$CrK~fX@~trKPpJYq4MrGy0s7i0~|~n zg)0yAEHV=klZsXKm(PvXBr8Szk&&)y(-$&n?i=7ygJD;x}XO zkvsj!GwxAcdl?;-qi#txsvbbm}Ev^Mty(2LB(O zUVq1zKZE`EdPx;2CGpVbG*P;r$+tbHHe|xfpW_R@qBQ=?3w$QiOZ(~tLVVKYg}l`( zc!&u9s9(_#X`?H@`-&W-H{bF1ui*PH<)N>sxy?L8=R~OdAp005?iQEv)Yl-dOkVUF z+gZiE-XI3BfRBGeZZ^Td2SO(P2Si)2Vl-d<2E?4gOW#m^vj#w}DD~$yZ^=$dO09A! z@e_WqG zGR#O*oWk3Dpiz$BpVGo&beK+=XJmaINjzm$ziI>|4mV_gC)2yc(#b&`$Da1JW8pOqm{Ey%ld<^JgO3=Z%3X~X^73X87d;e@3!u)ON>N^;Py_`WaODIR&GMV95rTwAzW+B?M61JZQZk?hn@WB?3v5@Mk(+!^m zy83$=RGTAAID9gtU=a&WS1I7XFSDrDKP(W3+`3=&e6K-JrNq8>g5A@k+U`NSG7qN9 z#ioVbvjfmz_iPq6iG$(Nv;7;x@%pQ+j4YFc?HT8p61xtA@f1s`o*Iq3jSckvEpRW} zGv{v$yo-eiU7C*e7w$#o;Oo>R5u!7*OJ5Tn8L>oI)gB6`r>f?vSsO9-w|-aA?+on9 zbhvh~Lk}uh#quY^jdC8qP$~;xx>DSN2($8y`c>8HrhuEpSEx79NgSbaeOujqg`599 zg{wcv$>2c=rWA|Zp{Ty{!|oBNz~>ZISAI7t5#Ged#sB2WZwuOu1?9kSeuyz2U_24v z5TPlxuci2E3)VETU|&mo=?3*hkqv}2$n@RX)(~sng++;7N^mMmp!J3S@Bz+?FfHG_ ztVS;ufBmgK{M%PD_$o$cW(-RMpV&4*98Zk#t;`?gddd7L>im06F=NhKQ7H;OEUyZ- zLf@AgXZuN!f^w6u?3+Q>Y@MVeRlRrV}Lj4M}EXADj`(3i<+B42Tsv@5fmN z3EF)NEd0&hO!IAQF;`Lb_}9Pa!@iBt27Sd`k@yWNre?`Iz zYf9h4b?#yfrhLxFTT206vrhes4N?RC!3K`G@C>Xa7~%m2L;Qab{m=g~#G7%QwbT>3 zt&5H1Lzj4xjbw+&@B$mjw_#)*gPlSKs&ULsx>u!7vOej<-{Nr1fJ{OgvB9tR`0qAS zADXHSvV}l^qmpQc@p|*6c2ZwN_8;0wjfKTzFV&|2-qIdhIjbFPF9i^;h%y|I9mI1S zq;U5yrMUdGRTYS@qR-(3yaD0Mfvg>KVaYj2V#B^u?@8N`%+~(7qq#;JdFwOWaC#jw*zNrHFzcQngHU7|N2(jsuBHEfNX`P&< zn?|@2cwS2ikxEUtkGq5juaXaUm;9t7>3o^HG+BB*T^J(VxwceSB4ggVw)CqMZ_J%M zq%f(-n0FH})kM3dE(m-g%-A$ySQe_&q3c>OorSUN#QmpOOG+Y?a z$8h0#m&|9H%P?_5q%M@FtraSrGo^R@c}vOD2$VCGo3)hgBOrnTA80+BR#G={q1Z~A z&y7@4piSX%{7war_ zn)CsN_88wnlQD!JpgNgrdFIMc7lPLnagP@btI zOg!08Ug3vNt1@OW-43xJYN|<}XV^fVU!=JvBh65biA^=>i>uogS!yztFpBRw<;R6SUcqb3pGmt&G*B?3Cpmetrut*uGK`#HfR zkxezxHuwfz>^ilzCK2!H0()etNpPsf64_{CT)tt+S(AWw1D41`ljyFlMpF^~;|s59 zG^Ltr66;o@sR%bYeufG1{K!s|*svN)WUh%0G7MDgM;4kyyknu6%G8>ggiu3yrXKKSnw7?Fv(j;KPhTTR2J6I&JQ>-j%rb)oU60u;v zRHjL6`3*a*H3{)d*Vj-{Bxw>yGF^h$RgsY9P;HHA(mTmx6)b!PogSFxyTruIe_`~(50+#qWvBVh zLD5X^F;j~53~X(6Ir7QXk|2+tPFs|pOqv+cJi?*n*=3n-6Hg8`x_+5!W=c*qC)oNe zm}vgjxGx6vHi2trN?U7(1O?(>L|{m0lL1ba!J$EcflaHkfvFmhmj| z9Q|DPH;#|IO7nXiQGGXcr^?c<(tFf}(PsjlteiVn8{j<5;;MP-e)=)nv@FW0X?Tak zt(y3{7slu8RNVD!{AmC$Tskr42;es8m=D(kA(0(0az2(u}HjGgpTE_9HC3 zDyYq1mx!&AGp;}Gy))qLiM=~NJa4s{{W)=ce#aHolTBN+_)8bu_d|v6o~PD52Y%Pp zDEQ>O+1W2!3@CQJG@^ZSR(S)(?C#EAR+59x%d>`S{E(s&ll5zs2QRvruZldlWKH=` zW8btHr#6><-^v@zmfG82J^20?cWu`6vzlWYRYM&*O&@5!g)f{fMVf>LHVF<2(_Wq} zwIp@ZNe|~M22B2A#DeiDr8ApcZod0kH8_qB+mB6C z-ZJSHy#MxWX?XGN@Yq?4bwizx9qfA2HLCgMA-xxJO{98^f4bcl-H`MjM>;G$I$*H-j5aZg)f zaqsk&VReQSuO8qs=Jqh3Lr-02&hBD;aQlt>8w012;@G;R*5}@MI@E8zzv;dKd+I)z zK6uvQT7z4DZ1jHn^^=dcsoi%<-6|TsUo>Xnv!qqI6MWA-T0=ejwma=p#M@~+%wK$3 zYOHjbT3pX%Vx42PyXxBX->~<%TZ5pnzfbW|JA3;jq~G;vcRoP*^Kd@)=_JoO0fC8+ z5)(py25(U^Uxn6qB`6^u`($=R5Ll`srr`MuFHl) z#v?~NJs;~((JwIJT<3AL^G&UyyB?2EU6XrfKB74vFZBs6y*#N`otnkQ8yuHqK68zE z-LCs2!f4o|d-al}ViFtqtJ`+oW)nF0SHL!Db?UY)qE5yrm{7`T_ z;8eijYzp&ao$;?NFJ2_IRtG&C_415MTGEU)tG4x&r?Xx+G{`+gWV z>+zLOF}>nC+`Kz{X8Of|q^Z};-i-8kz4UtC)!gttUwrRQ{u=tu?C7N*y}CZScgW{m zjfFkyIn8dc`SY+-yMMNv?&NLtDg4f(d%wqxd*-y<*Nh`;F?!z# zwaL{t9ouT^s6NcHvMjTZ-<2i&y6qj zw@#ea$|B0WoOK!#67RdsW%JA&fk926210^En+i1$78nv7T%G;@IKSujQnWgE*T>!M1D$sCo9;QMIIiW3 z3#u#UH1l5GDll)~G;xXBhp7%n=6Q^sJV76|Xiu^6pKAj%tV_CNZ1!PW^; zi)^PHYILsBq*m0J=L=#VmClGO=rrs5g-u^CA2hbv7~>-m)niG-nV~rahsB02hxV3W8s^70%8vkkjptYM{Z*L!x z?d94bdBH2Ag=yAfd)$c0sei{Ry2q>77k_z&4xKe?d!JvkuX|b#KX$5r-Amzn(`u`m ze~7jlzjkGGhX!f;+P8nRY-YgAW)F`wcdD`IwJxIV^X37oqlS0+(Wpgu_g%j(9s8u~ z`ka8D?Z#&K{-W!cc3|Q5wO)_+ZC@TSG3@i~ikp9o42|AvboBH|lch(m>Bs0+SYOv! zUitmT*ZG^~x4icFP+vEPt1phW$hhe4ILH6XrP*H!c&Ug7Pa=^uO zjc?-yD=VVZ2|>LEHw(Jp^rruh^QXkjO@11Gqto>*y#M$`E!zhsHu&07QsDn9*qlZ&;Ekw2cTlgpm64;7{is0=((mpqpVj|< zqwl)KLe1FNRG|#C66G~TxsgILO%Z~!ngwxf z#}sM!+-i;QyU}IC{`|516`SiJ9ezJNYJ96_{LJ+YIcqk5T4!Zj)bfaY^1 zeUWg{dD0vIpWa=Mb4qAc&#ivDqD^NO#8g_?tPh?rc%kpEe&%bxaW%}ot{$E>!T#mca(0;=o2V;stjxDoWu)5IJ|K9DF zL&B#|^4Xmlqb_R`)a&NT<|9XszBnmnd}XQ0p${SM={+-EJRQHg&!Km7ZU;_(tGnJ? z)7{Sfed^Hr&KrJ6cyHe4<;|q6OOw|>^&WoW?pl+l=Noof_kQBuz|AYq*Rr4fX6u)( z1Kxzr2tIsr{jv?-`-{T^yN=GO>*;fH$@7Id2ZuFLrI*#aeSvR!=vt}%Zspn6huZxT zwyIyj)5t-nZyf{Gn4b9u%)G%1)gh zn3}R>9=Bd6&Ev<`NET`krew^XKCL((=yNo2h5C|qYX+en>(oT_#;-@Ep1=3!e?bYQV#Zb>2vqVx;h)ujI3%u z`Qc6U=+ugvZJZC)SI$dZc&p(cbwcN9naj_a_Q*)AKjz_I6J3?(3lGappW8I}eMv&I zu4VbtixX;^96FzNdvSio9b@BRdm6V}<{qmh3CNoN>qga`E%t`cnUyRg!Zr|WaY0Q@BPM-$o z{alW0KGsZH@h>@NlqNB^X}g@dRp@VyS+Kf8qdtp5HrTw)UfVy~?XYQ`Mjg(th_3T_ zzkKu5GgVI6nR+4GUPF@B{BZ23!ANgeiCs-qsa(9ZY5vg8#bp0;kf;_;wsAEQQPcug(S ze!R78gT_oUbDM>R@WKl@BYwe zr=!|;Li^@t%(nHv(e>k6-Gi$IBVuo!H(KesdStuYk(am59KB$M{hR^kqwRm~%)0Kq zY}qq|n^ioT8*uJ)dhFYG$|p~H%yGB)Fh8eP^Ot$~SNpAL+T6N+f3Jqm-lyJo306L@@*9se z-JfGK;7FydvD#+YsR-oV0f?;cB*cj#=TA%n+`cJ-u=&YQNNCQ5tv$B={zgb ve3YrrlTA-e$21Q6+WMD#T6Lh+ikym<+173RzO3p$=GuFQxx?qwDPsQ*mGW=B delta 21379 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 uR)ES-2Vgf@|e;9 diff --git a/support/3rd_party/winfsp-2.0/bin/winfsp-msil.dll b/support/3rd_party/winfsp-2.1/bin/winfsp-msil.dll similarity index 97% rename from support/3rd_party/winfsp-2.0/bin/winfsp-msil.dll rename to support/3rd_party/winfsp-2.1/bin/winfsp-msil.dll index b7fef259dba3c525da87b48393a4996e56be2748..d63076da6bb6e7f4c930c8e22b1e09e3557104b5 100644 GIT binary patch delta 2894 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 - - - winfsp-msil - - - -