Compare commits
980 Commits
v0.14
...
pvt-lockin
Author | SHA1 | Date | |
---|---|---|---|
778939d018 | |||
5c962c8fc5 | |||
a9080208d9 | |||
3cc9697248 | |||
9f45d513ca | |||
77349c1330 | |||
7c11a45e6e | |||
48ad297df1 | |||
3d2de57e9d | |||
658d873efb | |||
efc93cacd3 | |||
41b54ef57a | |||
fd662ee848 | |||
895bf67691 | |||
e06fe4153d | |||
9f2fe92db7 | |||
d3f829b2df | |||
fa4651b3ce | |||
5a44e5c04a | |||
68122b5c68 | |||
b672312c79 | |||
0ab35fde1a | |||
9be2b7a2b9 | |||
39dd7662bd | |||
244afc8a3c | |||
111955db84 | |||
76ff8232bc | |||
9a3ac3c7a1 | |||
4adc0d4700 | |||
91c714dd53 | |||
11cb57a0bf | |||
3a8ad9c8d7 | |||
fa388e57ad | |||
1952d0d941 | |||
1a02438488 | |||
07f15c236b | |||
93af1be861 | |||
b52c90f980 | |||
b154c307b7 | |||
697063af51 | |||
436e31da34 | |||
92e7dbad21 | |||
4812f5bbd0 | |||
045a1fa19c | |||
c9b2c0460b | |||
1468df78a2 | |||
0fb6299f17 | |||
0da43fe2d4 | |||
d824ba464d | |||
affca267c5 | |||
4b7684122b | |||
55eee2efdd | |||
f8a05eae95 | |||
9a4f04f46a | |||
98334208b9 | |||
aae0a5bc74 | |||
2438ece1cf | |||
487d2449fe | |||
6430b386da | |||
c70089a176 | |||
0dff9a4c07 | |||
86c0ffa942 | |||
5c613b2abd | |||
8a099f3faa | |||
1ac172d2f8 | |||
34546def3c | |||
3ede1a5c70 | |||
5194536ec3 | |||
c39bc81299 | |||
18bf6ca666 | |||
7eebdbd74e | |||
9a88791f61 | |||
6e578350f4 | |||
81afac9c3a | |||
10081e1a69 | |||
8e5c40bbbe | |||
7745bf4cdc | |||
c7a779fa98 | |||
3f90d60dc4 | |||
f73cbc0e37 | |||
c88a86f7c7 | |||
dbdbdf07cf | |||
6b2dcaef96 | |||
fcae6ce018 | |||
690d3e4c8e | |||
af37424ecc | |||
fd53e22f7e | |||
3df0fa02ba | |||
9484b50cbd | |||
14e6b402fe | |||
2227429d8e | |||
9deb9d5319 | |||
193d5f4e91 | |||
26485ffbd6 | |||
7302b4baea | |||
fc1586eb82 | |||
637f461a65 | |||
b35bf204db | |||
3073646f29 | |||
7f9f55de24 | |||
bb3f8d37f2 | |||
c72a9f2a05 | |||
9b4ab190e0 | |||
010ed909ec | |||
2b4549a50d | |||
98a329e81b | |||
8090b7c666 | |||
c7d720eaa0 | |||
8320160d73 | |||
ce057b49b8 | |||
a60c989089 | |||
0f6371f0d8 | |||
1a4bbbe09a | |||
4e891dc2a8 | |||
18a77d63c3 | |||
4ea9c6e362 | |||
9d77c192a8 | |||
6d5401d911 | |||
330d6e79f8 | |||
ed58b7a63c | |||
f6853114c1 | |||
8ec7285d32 | |||
c183c0fe89 | |||
38ad8fd27d | |||
de85070e73 | |||
5b8ebd6e1d | |||
db530cb5e5 | |||
7cd4d4faab | |||
2560a513dc | |||
1ee95be5d7 | |||
bd7546559c | |||
d18a2c8b75 | |||
0ebae0adc1 | |||
d70c49ccd0 | |||
5846939116 | |||
f124e74f01 | |||
05abb93e4b | |||
5839d46b7a | |||
bce0d63f7d | |||
14b9f5affc | |||
035a430470 | |||
0af9e46e76 | |||
c4530f1252 | |||
9f78a17583 | |||
eea0b1bc79 | |||
8338a6e066 | |||
ddba49dbea | |||
a6ff8a87de | |||
bf64bcf9ba | |||
8c5d9bda20 | |||
f1ac28b0aa | |||
ff725f931d | |||
31519ba416 | |||
0bca8f851c | |||
acf175da60 | |||
23eac24c84 | |||
0f9ef3bd51 | |||
2bdd54536e | |||
060ebcca0d | |||
b38a89e485 | |||
b5bfeee027 | |||
f36cacaf84 | |||
4278cec465 | |||
151627091b | |||
2ee3f02928 | |||
d77d3ccccf | |||
1e0c91658e | |||
568096b560 | |||
b2e175a991 | |||
757c4f151d | |||
8b71e18972 | |||
4e7f988371 | |||
eb04d7ab90 | |||
d6c3b7304d | |||
1ee563cd13 | |||
8787f2c528 | |||
4c102ab57c | |||
bf87c539fd | |||
d5802f3a5f | |||
c144d4d303 | |||
9770efde14 | |||
197ce7c30a | |||
5d8384a508 | |||
8bb46a5f86 | |||
a3087cb696 | |||
92b1a8c00d | |||
bbf641e721 | |||
539ab9ce63 | |||
a29390412b | |||
739eb80cfb | |||
f9a470a0f0 | |||
44358e118c | |||
2a7ee146f1 | |||
0ddeb02235 | |||
26d8ea1c1c | |||
fa4aaf2fb7 | |||
7645a0185b | |||
dcf38cdf08 | |||
c7ca500dd5 | |||
d9fcc8ca1c | |||
259f2bf1c1 | |||
67711082b0 | |||
f2d98bbf25 | |||
e40505adb5 | |||
ac7b7f4a1b | |||
aa53b1e5ef | |||
c4b73c8eda | |||
332bce6322 | |||
5ef1de2647 | |||
de60e76b1d | |||
8f8e8fe086 | |||
0ac9a83026 | |||
b8c97caec0 | |||
f9b8bfc020 | |||
f938bf5e3f | |||
a0df9babf9 | |||
0d9d8ef5a2 | |||
668948ebc1 | |||
83c9351d38 | |||
aa1e32494c | |||
6365a553dc | |||
1245a29be6 | |||
c79785c2db | |||
f117a89697 | |||
33f5b8c05b | |||
9a02a46cf4 | |||
4d6fc3c848 | |||
964f2eed69 | |||
b45cff2881 | |||
f219885939 | |||
0cfc730745 | |||
a3643f8b02 | |||
de61eaf6b8 | |||
075a2b6e4c | |||
37affbf572 | |||
20b3ecd0cd | |||
c782c4d668 | |||
d545b8df26 | |||
08e520e0ec | |||
a5db7a2cca | |||
74c2494bbd | |||
858f77cdf7 | |||
30dae34700 | |||
36d50facd7 | |||
55dd8797d8 | |||
27114184d2 | |||
1980f511ce | |||
4cbee05849 | |||
f2391d99d5 | |||
fa9ff37de9 | |||
39b60c1348 | |||
5bc15a7e54 | |||
81bc200fe7 | |||
89324d2327 | |||
47b81a8025 | |||
02cec420e7 | |||
8e7e959d8a | |||
fc51b7cc22 | |||
ff5850847f | |||
ab462fb546 | |||
a5eadc50a7 | |||
afe7f8d728 | |||
c137d49dcd | |||
b70337bac3 | |||
c9b5f25ffc | |||
96f6c28885 | |||
deb8aed91f | |||
fac270e596 | |||
0189adac8f | |||
af772d7a86 | |||
96554cc0ca | |||
ddb3698c89 | |||
9657ae31c3 | |||
0795774e9e | |||
763f256e1f | |||
367f450e30 | |||
7afdee7c01 | |||
87c5f19ce1 | |||
00d1a3176e | |||
6318e7b0ef | |||
5d23b1fef8 | |||
44fe02d2fd | |||
1f0de20b7f | |||
bfd2e106ac | |||
b1848e963f | |||
a29611fa2a | |||
8a369bd48a | |||
9ca7424d27 | |||
4f640755bc | |||
c085a91991 | |||
83cd3cab99 | |||
67dff84a13 | |||
c702a86fbf | |||
f335a990af | |||
ba68ab845b | |||
db0566701e | |||
433e62f813 | |||
6777de6569 | |||
63ee24235b | |||
c3eb46813e | |||
bee0fa79b2 | |||
d907bf2769 | |||
38bcece5ce | |||
193de36301 | |||
c080e86f11 | |||
79811a2faa | |||
b1e287727d | |||
2def18e271 | |||
3ddc2249f6 | |||
709ead9e06 | |||
7c574da261 | |||
0980365082 | |||
ba46d9fef8 | |||
4c0386bf8d | |||
6774c34422 | |||
3215d8e26a | |||
7911f1354f | |||
28f97c2619 | |||
4b43cc590f | |||
441c45c77f | |||
c246acb2d3 | |||
50ed020e16 | |||
12704a3a4a | |||
186f7cd9ee | |||
50830f0bf2 | |||
86025aa30b | |||
31e6f15eaf | |||
5ce6d74e90 | |||
02ffa6afb2 | |||
712870ddd9 | |||
35d1adb360 | |||
3b9f9ce93b | |||
a7c5e4f80c | |||
0b826f04c2 | |||
69d53b7a28 | |||
877bd97ba8 | |||
559b7e80a3 | |||
495c78eb25 | |||
cf69d6a08d | |||
0d95bb9b14 | |||
cf48d19759 | |||
14c602ccd8 | |||
2d45082d80 | |||
25cf527af4 | |||
76d081937e | |||
ccd4bb869c | |||
46d5c98926 | |||
1726ca8ccb | |||
b8c257f996 | |||
53e6894298 | |||
10d1ba707e | |||
c234e2af2a | |||
fa652cdb56 | |||
aeaeba0dd6 | |||
b299027f6e | |||
5edd9eb548 | |||
fbc24bcca9 | |||
4ef6dcb71d | |||
b8f0d08672 | |||
5c82044295 | |||
e3b5426e45 | |||
d34f262c02 | |||
ede72e4c5f | |||
9c4b73dac1 | |||
9ecfc64178 | |||
fbe46d8c81 | |||
2a12ed490d | |||
c6d9e68c3f | |||
bfc41127d0 | |||
6e70500afc | |||
dca3cb93f3 | |||
2f0061b4ba | |||
3fcef3b0fa | |||
6a0574e309 | |||
0c945b67f3 | |||
25b3e111fa | |||
09101129a3 | |||
3700b375a7 | |||
22fccdb575 | |||
c4932f7c7e | |||
303cadb55d | |||
5617d09edc | |||
eefaad241d | |||
11dce32baa | |||
3b8396dc27 | |||
da7082030a | |||
7425eba8af | |||
acf6ce1008 | |||
06f6c192ed | |||
b7a06c7046 | |||
edb675d2d4 | |||
9533815931 | |||
fe74fc4013 | |||
5bd6c1a122 | |||
7b15d32c33 | |||
c186289672 | |||
ff649e05c5 | |||
9a9d3cd4e8 | |||
d1bb65a998 | |||
178200fd63 | |||
396d9d97d2 | |||
1d35069aab | |||
4421c82ce0 | |||
36f0978971 | |||
dae4bad732 | |||
75744571ff | |||
0494726f52 | |||
a964ab1b73 | |||
796010c9fe | |||
dc343ecbe5 | |||
706fa2cc07 | |||
c0aaebd0a5 | |||
9c2b4e5631 | |||
206b85c278 | |||
075d1821a2 | |||
c252382204 | |||
a91e5b01ab | |||
473914d45f | |||
e12e3630bb | |||
960c627924 | |||
f97ef5704f | |||
41605a3d5a | |||
e4f0406c4f | |||
b5bf84b618 | |||
3c340345c0 | |||
63c23f382b | |||
de5ef0c81d | |||
7288605f65 | |||
55a7864173 | |||
4fe72ab332 | |||
76a2926116 | |||
7843c73d34 | |||
ebad86387c | |||
5475c414b3 | |||
e3e111ab27 | |||
9cd6710438 | |||
a5f8736b1e | |||
2ced698256 | |||
53a4bdc478 | |||
eea92e89ef | |||
d519145f61 | |||
2809f56217 | |||
8cb76783ad | |||
117ab9c3e4 | |||
61a001baf1 | |||
d0c700eb0f | |||
b774aea4f4 | |||
f8e4c1bbc4 | |||
3bbff30f14 | |||
2fe4e18d9c | |||
b65322c2ac | |||
7764663386 | |||
c6ae62f301 | |||
6f22828060 | |||
7c2de68892 | |||
4656e8ed26 | |||
be98326bbb | |||
52acc3bc48 | |||
f68bc75255 | |||
029942bbac | |||
cb0c7def54 | |||
5fbd75926b | |||
bc9bcefc62 | |||
a57325e8af | |||
466922787d | |||
9dc8aca710 | |||
88aeb83211 | |||
a7cee1eafe | |||
eb0816db56 | |||
51833751d0 | |||
155344ea61 | |||
3874e2a6b5 | |||
c5740029f7 | |||
9973c4c963 | |||
6cfda75447 | |||
c7d6fc355b | |||
b062f8683c | |||
cec5f0be08 | |||
40b61f7667 | |||
7c383654bd | |||
9e4e7d4bcf | |||
638e5a20b6 | |||
95bbb584eb | |||
1d8241cba7 | |||
460726df83 | |||
b5cefc59e9 | |||
e9ca1a8996 | |||
8c0f609a93 | |||
23eabe5939 | |||
eecca688bc | |||
23d2083d8f | |||
8d379a4c8b | |||
830985d331 | |||
6b37e2ef12 | |||
62dbaf56e3 | |||
d301164609 | |||
ada3e1b0e5 | |||
13d6ec3638 | |||
2210561b65 | |||
1713ce9c9e | |||
8f25dd6cab | |||
c9485ff214 | |||
5ce1a722b3 | |||
27315c1111 | |||
bd38a39dbd | |||
766734a8e3 | |||
b242a449b8 | |||
c6a6fdfc36 | |||
843d3f0362 | |||
5190923c9a | |||
2f8ac3765d | |||
e4b4e6a1f9 | |||
fa54898c64 | |||
2f82d91e1f | |||
7574c39ffb | |||
bdc02c8ab5 | |||
15c16d7070 | |||
ba312de59b | |||
5824a24bf4 | |||
f0a0787f6b | |||
c17b84cff2 | |||
168acb1a1f | |||
c8206751d2 | |||
bec91873fe | |||
9bf0d5d46d | |||
2d85c7bf73 | |||
ff3436718c | |||
69f6f661ba | |||
6e52def53c | |||
2212d021e1 | |||
7b94f2bebf | |||
c897ddd864 | |||
8d6314e2db | |||
eec63332e0 | |||
04186ea834 | |||
3adcf70748 | |||
33e8b5df04 | |||
154933ecab | |||
c760cf9563 | |||
245bba0a17 | |||
3008575bdf | |||
2ce434efbd | |||
94ea4f65f7 | |||
c780912810 | |||
299605b8fc | |||
86bccd763c | |||
856d3bdefe | |||
104c830437 | |||
f35a93d1f7 | |||
2d9b1b80fa | |||
f1ee19d8dc | |||
671c0c12ab | |||
6eb2879374 | |||
1e03c1a465 | |||
b55c20b393 | |||
406af6901f | |||
40735c4687 | |||
08c283f2a9 | |||
4fc740588e | |||
54050c7e1d | |||
ff08d63a82 | |||
c37444b0ae | |||
bbb51b4971 | |||
6de998ff98 | |||
4b024ebe74 | |||
418c454a4a | |||
0b61c48cd6 | |||
945509ef93 | |||
3a65ce332b | |||
228f9e2708 | |||
ee3918436b | |||
1bb6d2a0e7 | |||
6d1b9e95db | |||
1d8d72129d | |||
2ad4e30754 | |||
26cba02091 | |||
3697defd16 | |||
69a22f1044 | |||
5a49115a66 | |||
82c8b0d00f | |||
d00b5d88af | |||
6d19176d7c | |||
e231b9c662 | |||
025a74e663 | |||
834adbdc36 | |||
25c687d5c5 | |||
200de2a7f9 | |||
8e7c241f32 | |||
e530e671a5 | |||
d804f5674d | |||
ac6f024715 | |||
a1af8ff921 | |||
f7ca9f0522 | |||
3518d7a8c2 | |||
281d92f2bc | |||
7769a2c062 | |||
595a77bd2e | |||
6860a6986a | |||
63e8cf1090 | |||
7bdca634aa | |||
535babc0d5 | |||
e86dcde1a1 | |||
6e10e0489b | |||
f82cad712a | |||
d12234bb01 | |||
10a8519294 | |||
1b6395fc91 | |||
f1a363b848 | |||
eea1a8fd8b | |||
5444ce7f50 | |||
29c140b9cd | |||
cdfd60877b | |||
e7931e28fd | |||
002a0262f7 | |||
1ffba78a18 | |||
1d3423d5fb | |||
a894e4a2af | |||
b6f084d71f | |||
ca6d0d2dcf | |||
d6d781355f | |||
851a6145cd | |||
aec7b34e13 | |||
38006ba553 | |||
ee469b40e7 | |||
1f385a9ab5 | |||
ba78fbb956 | |||
8f10ba4fc9 | |||
b0a59e42fc | |||
2e089b92c5 | |||
37362cb8cc | |||
127d4cc4eb | |||
ce551d4e0d | |||
53f60a698a | |||
aa23672b01 | |||
e4de0f0513 | |||
8750451e10 | |||
358db2a54f | |||
4294182c1a | |||
f17168f2fa | |||
959d8537c6 | |||
6a48087d5f | |||
0a59c5d685 | |||
5b1b8288c2 | |||
53e2f13e38 | |||
cb6b10385b | |||
f49cf412a8 | |||
764b772731 | |||
7518a6e418 | |||
2772af5478 | |||
f2535484ea | |||
97ee4fa77f | |||
7c34d738b7 | |||
93254bede4 | |||
f3894dbc7b | |||
dc684acd41 | |||
69935525da | |||
6ba6e16851 | |||
d33089331b | |||
74de84aaab | |||
a9b4fd4634 | |||
c6798b3060 | |||
f6e3b8e416 | |||
f05ebd9d20 | |||
e50c9ff649 | |||
fb70eccc9c | |||
7adbd7a56c | |||
55c7384c65 | |||
bc8962d2b6 | |||
2267eadbca | |||
154aa28381 | |||
2d98cda607 | |||
8395b22ddc | |||
809505d8a3 | |||
9df0920de1 | |||
c10c7cc672 | |||
a0cb134bd3 | |||
becfd2e1c5 | |||
1e93f0d10d | |||
adeb847c7e | |||
5a83c68f56 | |||
9d176643c3 | |||
b1d8192d59 | |||
bd3d462bce | |||
aa2d70d8de | |||
31c40d017d | |||
5c8da5518c | |||
a80a9d3d4c | |||
57580e91f5 | |||
1a43619c5e | |||
aae6a15e5a | |||
f54ce6a65d | |||
ab0c2fc25c | |||
fd439add27 | |||
8855a2b896 | |||
7c41ffd64e | |||
621eb63029 | |||
f1b96f8a28 | |||
4512dac0a9 | |||
deee32b743 | |||
5f1b723fab | |||
453f1732dc | |||
8c8d669be8 | |||
53077d990a | |||
c665812d76 | |||
b56379b542 | |||
83c1489b92 | |||
3e3aa7651f | |||
ec2cf5106d | |||
25322059b3 | |||
a255fa11e7 | |||
dbb8b5d3b9 | |||
4c6a61d2c9 | |||
ac4828ec11 | |||
e0f163e9ba | |||
9bcd8dcb8e | |||
096e5b7eb1 | |||
1c85fb94f0 | |||
4417ebcc92 | |||
5fa631339d | |||
26092211a8 | |||
50af8f6444 | |||
ee0031f995 | |||
75ff7f2c01 | |||
3e557e1b65 | |||
79bf651203 | |||
205a59dbc6 | |||
8f54152096 | |||
5e71992153 | |||
dfe45e1be5 | |||
ff7a446194 | |||
17056b4f3f | |||
b19621233a | |||
e07ef0712e | |||
0532cee99c | |||
b072a1f0da | |||
badaf82462 | |||
3f79b2e46d | |||
319e5d4ee6 | |||
66d5fe98df | |||
8abadf94f3 | |||
728c1b3402 | |||
8b31b1018b | |||
310fd23035 | |||
7f2426271c | |||
3cfa4156d2 | |||
23dadcf8a0 | |||
e0b0b1b367 | |||
a525e095d3 | |||
e16dfd8a43 | |||
3bf4140f91 | |||
b194a33406 | |||
0dd452fac1 | |||
df11a7d7ff | |||
51d29c172a | |||
2803a1b0cf | |||
067a0f1b37 | |||
03611b6210 | |||
2ff60e5e98 | |||
488993d22b | |||
3cba22b9a5 | |||
a3e577b091 | |||
9b287fb559 | |||
f642ea57be | |||
cb17b7e2e0 | |||
82a9c8e80f | |||
628dae38d7 | |||
958b5a47a8 | |||
8d38a0dac6 | |||
a653a010ce | |||
31eedbddb3 | |||
5bf913045e | |||
a10a09d4e9 | |||
3e0db6da07 | |||
77df532ac3 | |||
222da362ec | |||
3ed7847d84 | |||
5773c6eab7 | |||
5a5a1008de | |||
32c289fa34 | |||
0534225662 | |||
096b2dabde | |||
5770f2d901 | |||
12e40f908d | |||
42745e2239 | |||
249c1a5cb8 | |||
233904fd51 | |||
3e0f2316a7 | |||
bd952253fb | |||
c7780cf7fa | |||
31b54ecc47 | |||
4084448bd5 | |||
4dc1828e1f | |||
79b7b66b62 | |||
612c820630 | |||
e13233ef32 | |||
dd815f3c39 | |||
5faafc4d11 | |||
78e5d031c0 | |||
9ef562df15 | |||
a7cdc815d0 | |||
bd5e15fe24 | |||
214a8406eb | |||
6bd6f0ee35 | |||
f8cebd1f92 | |||
f8f6d0f1bc | |||
b06132cb6b | |||
748c9b6409 | |||
bfc7fc5dec | |||
03f906f966 | |||
4b1111fcc5 | |||
86ddeed129 | |||
e2d4b36057 | |||
ab2908a9ee | |||
fd7b12bb61 | |||
eb2000a194 | |||
e4cabc50c5 | |||
92dc2feecd | |||
43f333e8a6 | |||
59eb40fd9b | |||
d85d36c94f | |||
27b841faf8 | |||
c6967c737a | |||
4ccbd1bdf6 | |||
0a8b8e8444 | |||
352450d538 | |||
7e1861a9f5 | |||
860e9db8a7 | |||
1d435269bd | |||
e58ac1fbde | |||
1f0f2fe094 | |||
d7ec331c74 | |||
938c036387 | |||
16f5bd089d | |||
6afea44e31 | |||
2859355fd8 | |||
75012d1301 | |||
8e1512c067 | |||
fa6b621042 | |||
8ffb359f20 | |||
203873ef04 | |||
e73bda3926 | |||
0186b82fea | |||
db38d2f7f8 | |||
016d015fe6 | |||
87b2d4ca4c | |||
dfd6cbbde1 | |||
6a126da51d | |||
03df0a9c26 | |||
5c3a82a074 | |||
b591015b28 | |||
fb9b798d3d | |||
cc408b71e1 | |||
19a73ca01d | |||
3992b9ebb1 | |||
a46c0610c4 | |||
495fc7a5dc | |||
2ba46fdb71 | |||
7cb56bb132 | |||
687b02c1e6 | |||
218b162d75 | |||
5e13c8750e | |||
2e71d2fe14 | |||
866e4abe10 | |||
7894cc8b7b | |||
0c810c52fa | |||
b06e947e0e | |||
aed134080c | |||
3ce490d405 | |||
76aabecbfb | |||
8eebfe811d | |||
5798527237 | |||
817beebb63 | |||
b7a2b5e17a | |||
20e547c6d0 | |||
d0d0f60033 | |||
fbc3d3efce | |||
2c3f177314 | |||
91e8bb1229 | |||
4b48502232 | |||
74af44e2e7 | |||
915279d41d | |||
316a2940dc | |||
453c1753ab | |||
b11b622fc2 | |||
f1ba60e172 | |||
7c1b592b84 | |||
1e88fedb19 | |||
5ecc92f2ba | |||
5771eedc45 | |||
46a29f663a | |||
49cd11b34b | |||
aeff3dc21e | |||
b7368336d2 | |||
5afe7a5315 | |||
7815b9e2eb | |||
cbcea380ef | |||
10635db99b | |||
cb00f913cc | |||
c406c89158 | |||
f600d51ace | |||
7401481d42 | |||
2d3d92fb2d | |||
eca93bbdb3 | |||
5fa0c36c8f | |||
ea2cc54677 | |||
ccec269dd6 | |||
5888e9ab05 | |||
c12b88286d | |||
e412d735ed | |||
582997b5a4 | |||
1647702a65 | |||
ccf58122a2 | |||
be8c29114a | |||
30f2807e2b | |||
25a2873556 | |||
bd0acf2289 | |||
997476f015 | |||
f89c91cd10 | |||
af2cc10c15 | |||
0d25e73364 | |||
86d74371aa | |||
f32e335855 | |||
165f3ec45d | |||
811696d939 | |||
0c07be9628 | |||
5dcbbaa4e7 | |||
12b70f661f | |||
9b4b5abe48 | |||
5cd0dfb1b9 | |||
46ce4b1a6c | |||
28a20d5199 | |||
10ea9a833f | |||
d9713668aa | |||
00c0574f1f | |||
44c86ff9a4 | |||
28931f4687 | |||
80e07cead6 | |||
b88b2ec51d | |||
82e4dcb4a1 | |||
34e653a275 | |||
981e60643f | |||
fee75590a8 | |||
1298dd842d | |||
8334daa048 | |||
2f73bfa069 | |||
d2d2dd5099 | |||
146570dd74 | |||
f509281be4 | |||
613a564ca2 | |||
7ffc60f512 | |||
499a0cb866 | |||
edff3054db | |||
f7e0362350 | |||
7337f3c6cd | |||
ab278d7b60 | |||
858df29ba2 | |||
4366866653 | |||
e4b808806c | |||
13cee6e019 | |||
35b9cb15a3 | |||
0d8f0f9ac8 | |||
a4e2ad9dd6 | |||
9b4318c655 | |||
5827b1fa9c | |||
913f7ac9cd | |||
0e2f46dc90 | |||
a8d76d3e46 | |||
380ec074ca | |||
e7cba96c74 | |||
03db443406 | |||
0b65bc7e01 | |||
12e1caaa98 | |||
7a690a789b | |||
8ca419830c | |||
c310d8ea1b | |||
c3ddf73661 | |||
6b00b8e28a | |||
35c722e91b | |||
ae8802514b | |||
e90aa46a27 |
2
.gitmodules
vendored
@ -1,3 +1,3 @@
|
|||||||
[submodule "ext/test"]
|
[submodule "ext/test"]
|
||||||
path = ext/test
|
path = ext/test
|
||||||
url = https://bitbucket.org/billziss/secfs.test.git
|
url = https://github.com/billziss-gh/secfs.test.git
|
||||||
|
158
Changelog.asciidoc
Normal file
@ -0,0 +1,158 @@
|
|||||||
|
= Changelog
|
||||||
|
|
||||||
|
|
||||||
|
v1.2B3 (2017.2 B3)::
|
||||||
|
|
||||||
|
Changes since v1.1:
|
||||||
|
|
||||||
|
- WinFsp-FUSE now supports BSD flags (Windows file attributes) during `getattr` and `fgetattr`. It also adds the `chflags` operation. BSD flags support requires use of the `FSP_FUSE_CAP_STAT_EX` capability and the new `struct fuse_stat_ex` which includes an `st_flags` field. If the preprocessor macro `FSP_FUSE_USE_STAT_EX` is defined before inclusion of `<fuse.h>` then `struct fuse_stat` will also be defined to include the `st_flags` field.
|
||||||
|
- WinFsp-FUSE also adds the following OSXFUSE operations: `setcrtime`, `setchgtime`. These can be used to set the creation (birth) time and change (ctime) time of a file.
|
||||||
|
- New `GetDirInfoByName` file system operation adds fast queries of directory info by file name rather than pattern [e.g. `FindFirstFileW(L"foobar", FindData)`]. Tests with fsbench showed that such queries are sped up by an order of magnitude when using `GetDirInfoByName` in MEMFS. Case-sensitive FUSE file systems get this optimization for free. The .NET layer also adds `GetDirInfoByName`.
|
||||||
|
- New `FspFileSystemOperationProcessId` API adds support for getting the originating process ID (PID) during `Create`, `Open` and `Rename` calls. FUSE file systems can now access `fuse_context::pid`. The .NET layer also adds `GetOperationProcessId`.
|
||||||
|
- New command line tool `fsptool` allows command line access to some WinFsp features.
|
||||||
|
- The WinFsp launcher now passes the username of the user who launched the file system as parameter %3. This is useful to file systems that use the launcher infrastructure, such as SSHFS-Win.
|
||||||
|
- Important GitHub issues fixed: #96, #97, #103, #107
|
||||||
|
|
||||||
|
|
||||||
|
v1.2B2 (2017.2 B2)::
|
||||||
|
|
||||||
|
Changes since v1.1:
|
||||||
|
|
||||||
|
- New command line tool `fsptool` allows command line access to some WinFsp features.
|
||||||
|
- New `GetDirInfoByName` file system operation adds fast queries of directory info by file name rather than pattern [e.g. `FindFirstFileW(L"foobar", FindData)`]. Tests with fsbench showed that such queries are sped up by an order of magnitude when using `GetDirInfoByName` in MEMFS. Case-sensitive FUSE file systems get this optimization for free. The .NET layer also adds `GetDirInfoByName`.
|
||||||
|
- New `FspFileSystemOperationProcessId` API adds support for getting the originating process ID (PID) during `Create`, `Open` and `Rename` calls. FUSE file systems can now access `fuse_context::pid`. The .NET layer also adds `GetOperationProcessId`.
|
||||||
|
- Important GitHub issues fixed: #96, #97, #103, #107
|
||||||
|
|
||||||
|
|
||||||
|
v1.2B1 (2017.2 B1)::
|
||||||
|
|
||||||
|
- New command line tool `fsptool` allows command line access to some WinFsp features.
|
||||||
|
- New `GetDirInfoByName` file system operation adds fast queries of directory info by file name rather than pattern [e.g. `FindFirstFileW("foobar", FindData)`]. Tests with fsbench showed that such queries are sped up by an order of magnitude when using `GetDirInfoByName` in MEMFS.
|
||||||
|
- New `FspFileSystemOperationProcessId` API adds support for getting the originating process ID (PID) during `Create`, `Open` and `Rename` calls.
|
||||||
|
|
||||||
|
|
||||||
|
v1.1 (2017.1)::
|
||||||
|
|
||||||
|
This release brings some major new components and improvements.
|
||||||
|
|
||||||
|
- A .NET layer that allows the creation of file systems in managed mode. This is contained in the new `winfsp-msil.dll`. The new .NET layer is being tested with the WinFsp test suites and Microsoft's ifstest.
|
||||||
|
- FUSE for Cygwin is now included with the installer.
|
||||||
|
- FUSE now has a `-ovolname=VOLNAME` parameter that allows setting the volume label. Thanks @samkelly.
|
||||||
|
- A number of other FUSE improvements have been made (see issue #85).
|
||||||
|
|
||||||
|
NOTE: The C++ layer included in the v1.1 beta releases is not part of this release as it is still work in progress. It can be found in `inc/winfsp/winfsp.hpp` in the WinFsp source repository.
|
||||||
|
|
||||||
|
|
||||||
|
v1.1B3 (2017.1 B3)::
|
||||||
|
|
||||||
|
v1.1B2 (2017.1 B2)::
|
||||||
|
|
||||||
|
v1.1B1 (2017.1 BETA)::
|
||||||
|
|
||||||
|
This release brings some major new components and improvements.
|
||||||
|
|
||||||
|
- A .NET layer that allows the creation of file systems in managed mode. This is contained in the new `winfsp-msil.dll`. The new .NET layer is being tested with the WinFsp test suites and Microsoft's ifstest.
|
||||||
|
- A simple C++ layer can be found in `inc/winfsp/winfsp.hpp`.
|
||||||
|
- FUSE for Cygwin is now included with the installer.
|
||||||
|
- FUSE now has a `-ovolname=VOLNAME` parameter that allows setting the volume label. Thanks @samkelly.
|
||||||
|
|
||||||
|
|
||||||
|
v1.0::
|
||||||
|
|
||||||
|
This is the WinFsp 2017 release! :tada:
|
||||||
|
|
||||||
|
- The API is now *FROZEN*. Breaking API changes will receive a major version update (`2.0`). Incremental API changes will receive a minor version update (`1.x`).
|
||||||
|
- Adds chocolatey package. Try `choco install winfsp` (note: pending approval from chocolatey.org).
|
||||||
|
- FUSE `-d` output now always goes to stderr. There is also a new `-oDebugLog=FILE` switch to specify a debug output file.
|
||||||
|
- FUSE now provides a default `statfs` implementation if a file system does not provide one.
|
||||||
|
- The WinFsp DLL now exports `fuse_*` symbols in addition to the `fsp_fuse_*` symbols. These symbols are for use with programs that use FFI technology such as jnr-fuse and fusepy *ONLY*. They are not supposed to be used by native C/C++ programs. Such programs are supposed to include the `<fuse.h>` headers.
|
||||||
|
|
||||||
|
|
||||||
|
v1.0RC3::
|
||||||
|
|
||||||
|
This is the WinFsp 2017 Release Candidate 3, which should be the last Release Candidate according to the current plan. This release fixes a major issue with some file systems and includes a few smaller changes:
|
||||||
|
|
||||||
|
- Fixes GitHub issue #55. Prior to this fix it was possible for a rogue process (or faulty file system) to crash Windows using WinFsp. For full details read http://www.osronline.com/showthread.cfm?link=282037[this thread].
|
||||||
|
- Introduces the `FspFileSystemSetMountPointEx` API, which allows the specification of a security descriptor when mounting over a directory.
|
||||||
|
- Introduces the `FspVersion` API, which allows the retrieval of the WinFsp DLL version. Currently this reports `0x00010000` (version `1.0`).
|
||||||
|
- Introduces the `FSP_FUSE_CAP_CASE_INSENSITIVE` and `FSP_FUSE_CAP_READDIR_PLUS` WinFsp-FUSE flags. The `FSP_FUSE_CAP_CASE_INSENSITIVE` flag allows a file system to mark itself as case-insensitive. The `FSP_FUSE_CAP_READDIR_PLUS` flag allows a file system to include full `stat` details when responding to the `readdir` operation (thus avoiding extraneous `getattr` calls).
|
||||||
|
- When using WinFsp-FUSE over Cygwin, POSIX paths can be used as mountpoints.
|
||||||
|
- Fixes GitHub issue #45. Prior to this fix, file systems that do not properly implement `Cleanup` (including FUSE file systems) would at times disallow renaming of directories.
|
||||||
|
|
||||||
|
|
||||||
|
v1.0RC2::
|
||||||
|
|
||||||
|
This is the WinFsp 2017 Release Candidate 2. Some important changes included below:
|
||||||
|
|
||||||
|
- WinFsp is now available under the GPLv3 with a special exception for Free/Libre and Open Source Software.
|
||||||
|
- The location of the WinFsp launcher registry entries is now `HKEY_LOCAL_MACHINE\Software\WinFsp\Services`. [On Win64 the actual location is `HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\WinFsp\Services`.] This change was necessary to avoid loss of third party file system registry entries during WinFsp uninstallation. [See GitHub issue #31.]
|
||||||
|
- Despite stating in the previous release that the API has been finalized the `ReadDirectory` `FSP_FILE_SYSTEM_INTERFACE` operation has been changed. Extensive testing with multiple file systems has shown that `ReadDirectory` was hard to implement correctly. The new definition should make implementation easier for most file systems. [See GitHub issue #34.]
|
||||||
|
- Some API's to facilitate `ReadDirectory` implementation have been added. Look for `FspFileSystem*DirectoryBuffer` symbols.
|
||||||
|
- The installer now (optionally) installs a sample file system called "passthrough". This is a simple file system that passes all operations to an underlying file system. There is also a tutorial for this file system (in the doc directory).
|
||||||
|
- The installer now (optionally) installs a sample file system called "passthrough-fuse". This file system performs the same function as the "passthrough" file system, but uses the FUSE compatibility layer. It builds and runs on both Windows and Cygwin.
|
||||||
|
|
||||||
|
|
||||||
|
v1.0RC1::
|
||||||
|
|
||||||
|
This is the WinFsp 2017 Release Candidate 1. It has been tested extensively in a variety of scenarios for stability and correct file system semantics. Some of the more important changes:
|
||||||
|
|
||||||
|
- API has been polished and finalized.
|
||||||
|
- Extensively tested against multiple test suites including Microsoft's IfsTest.
|
||||||
|
- WinFsp I/O Queues (the fundamental WinFsp IPC mechanism) have been improved to work similar to I/O Completion Ports.
|
||||||
|
- Opportunistic locks have been implemented.
|
||||||
|
- File system statistics have been implemented.
|
||||||
|
- Sharing a (disk) file system over the network is supported.
|
||||||
|
- Case insensitive file systems are supported.
|
||||||
|
- Directories are supported as mount points.
|
||||||
|
- Access checks are performed correctly in the absense of the traverse privilege.
|
||||||
|
- Access checks are performed correctly in the presence of the backup and restore privileges.
|
||||||
|
|
||||||
|
|
||||||
|
v0.17::
|
||||||
|
|
||||||
|
This release brings support for named streams.
|
||||||
|
|
||||||
|
- Named streams (or alternate data streams) are additional streams of data within a file. When a file gets opened the main (default, unnamed) data stream of a file gets accessed. However NTFS (and now WinFsp) supports multiple data streams per file accessible using the `filename:streamname` syntax.
|
||||||
|
- WinFsp handles a lot of the hairy details regarding named streams, including sharing checks, pending delete checks, conflicts between the main and named streams, etc.
|
||||||
|
- User mode file systems that wish to support named streams must set the `FSP_FSCTL_VOLUME_PARAMS::NamedStreams` flag and must also be prepared to handle named streams on `Create`, `Cleanup`, etc. They must also implement the new `FSP_FILE_SYSTEM_INTERFACE::GetStreamInfo` operation. For more information on how to correctly handle named streams refer to the MEMFS sample.
|
||||||
|
|
||||||
|
|
||||||
|
v0.16::
|
||||||
|
|
||||||
|
This release brings support for reparse points and symbolic links as well as other minor changes.
|
||||||
|
|
||||||
|
- Reparse points are a general mechanism for attaching special behavior to files. Symbolic links in Windows are implemented as reparse points. WinFsp supports any kind of reparse point including symbolic links.
|
||||||
|
- The WinFsp FUSE implementation supports symbolic links. It also supports POSIX special files (FIFO, SOCK, CHR, BLK) as NFS reparse points (see https://msdn.microsoft.com/en-us/library/dn617178.aspx).
|
||||||
|
- User mode file systems that wish to support reparse points will have to set the `FSP_FSCTL_VOLUME_PARAMS::ReparsePoints` flag and implement the `FSP_FILE_SYSTEM_INTERFACE` methods `ResolveReparsePoints`, `GetReparsePoint`, `SetReparsePoint`, `DeleteReparsePoint`. More information in this blog article: http://www.secfs.net/winfsp/blog/files/reparse-points-symlinks-api-changes.html
|
||||||
|
- The installation now includes public symbol files for all WinFsp components shipped.
|
||||||
|
|
||||||
|
|
||||||
|
v0.15::
|
||||||
|
|
||||||
|
This is a minor release that brings support for Windows 7 and 32-bit OS'es.
|
||||||
|
|
||||||
|
- Fixes a number of issues for Windows 7. Windows 7 is now officially supported.
|
||||||
|
- Fixes a number of issues with the 32-bit FSD and user mode components. 32-bit versions of Windows are now officially supported.
|
||||||
|
|
||||||
|
|
||||||
|
v0.14::
|
||||||
|
|
||||||
|
This release includes support for file systems protected by credentials.
|
||||||
|
|
||||||
|
- WinFsp now supports file systems that require username/password to be unlocked (e.g. sshfs/secfs). Such file systems must add a DWORD registry value with name "Credentials" and value 1 under their WinFsp.Launcher service entry. The WinFsp network provider will then prompt for credentials using the `CredUIPromptForWindowsCredentials` API. Credentials can optionally be saved with the Windows Credential Manager.
|
||||||
|
- WinFsp-FUSE now uses the S-1-0-65534 <--> 65534 mapping for unmapped SID/UID's. The Anonymous SID mapping from the previous release had security issues.
|
||||||
|
|
||||||
|
|
||||||
|
v0.13::
|
||||||
|
|
||||||
|
This release includes a Cygwin package, an API change and some other minor changes:
|
||||||
|
|
||||||
|
- New Cygwin package includes `cygfuse-2.8.dll` and `libfuse-2.8.dll.a` for easy use in the Cygwin environment. This is currently offered as a separate download.
|
||||||
|
- Minor but breaking API change: `SetFileSize`/`SetAllocationSize` have been consolidated. Please refer to the documentation for a description of the changes.
|
||||||
|
- File system drive symbolic links (`DefineDosDeviceW`) now automatically cleaned up even if user mode file system crashes or is terminated forcefully.
|
||||||
|
- WinFsp-FUSE now maps unmapped UID's to the Anonymous SID (S-1-5-7). See: https://cygwin.com/ml/cygwin/2016-06/msg00359.html
|
||||||
|
|
||||||
|
|
||||||
|
v0.12::
|
||||||
|
|
||||||
|
Prior changes are not recorded in this Changelog.
|
@ -54,5 +54,8 @@ This CONTRIBUTOR AGREEMENT applies to any contribution that you make to the WinF
|
|||||||
CONTRIBUTOR LIST
|
CONTRIBUTOR LIST
|
||||||
----------------
|
----------------
|
||||||
|===
|
|===
|
||||||
|Bill Zissimopoulos |billziss at navimatics.com
|
|Bill Zissimopoulos |billziss at navimatics.com
|
||||||
|
|John Oberschelp |john at oberschelp.net
|
||||||
|
|Sam Kelly (DuroSoft Technologies LLC, https://durosoft.com) |sam at durosoft.com
|
||||||
|
|Tobias Urlaub |saibotu at outlook.de
|
||||||
|===
|
|===
|
@ -1,12 +1,39 @@
|
|||||||
The WinFsp project is Copyright (C) Bill Zissimopoulos. It is licensed
|
The WinFsp project is Copyright (C) Bill Zissimopoulos. It is licensed
|
||||||
under the terms of the AGPLv3. The full text of this license follows
|
under the terms of the GPLv3.
|
||||||
below. Commercial licensing options are also available: Please contact
|
|
||||||
|
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-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 <billziss at navimatics.com>.
|
Bill Zissimopoulos <billziss at navimatics.com>.
|
||||||
|
|
||||||
|
The full text of the GPLv3 license follows below.
|
||||||
|
|
||||||
-----------------------------------------------------------------------
|
-----------------------------------------------------------------------
|
||||||
|
|
||||||
GNU AFFERO GENERAL PUBLIC LICENSE
|
GNU GENERAL PUBLIC LICENSE
|
||||||
Version 3, 19 November 2007
|
Version 3, 29 June 2007
|
||||||
|
|
||||||
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
||||||
Everyone is permitted to copy and distribute verbatim copies
|
Everyone is permitted to copy and distribute verbatim copies
|
||||||
@ -14,15 +41,17 @@ Bill Zissimopoulos <billziss at navimatics.com>.
|
|||||||
|
|
||||||
Preamble
|
Preamble
|
||||||
|
|
||||||
The GNU Affero General Public License is a free, copyleft license for
|
The GNU General Public License is a free, copyleft license for
|
||||||
software and other kinds of works, specifically designed to ensure
|
software and other kinds of works.
|
||||||
cooperation with the community in the case of network server software.
|
|
||||||
|
|
||||||
The licenses for most software and other practical works are designed
|
The licenses for most software and other practical works are designed
|
||||||
to take away your freedom to share and change the works. By contrast,
|
to take away your freedom to share and change the works. By contrast,
|
||||||
our General Public Licenses are intended to guarantee your freedom to
|
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
|
share and change all versions of a program--to make sure it remains free
|
||||||
software for all its users.
|
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
|
When we speak of free software, we are referring to freedom, not
|
||||||
price. Our General Public Licenses are designed to make sure that you
|
price. Our General Public Licenses are designed to make sure that you
|
||||||
@ -31,34 +60,44 @@ 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
|
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.
|
free programs, and that you know you can do these things.
|
||||||
|
|
||||||
Developers that use our General Public Licenses protect your rights
|
To protect your rights, we need to prevent others from denying you
|
||||||
with two steps: (1) assert copyright on the software, and (2) offer
|
these rights or asking you to surrender the rights. Therefore, you have
|
||||||
you this License which gives you legal permission to copy, distribute
|
certain responsibilities if you distribute copies of the software, or if
|
||||||
and/or modify the software.
|
you modify it: responsibilities to respect the freedom of others.
|
||||||
|
|
||||||
A secondary benefit of defending all users' freedom is that
|
For example, if you distribute copies of such a program, whether
|
||||||
improvements made in alternate versions of the program, if they
|
gratis or for a fee, you must pass on to the recipients the same
|
||||||
receive widespread use, become available for other developers to
|
freedoms that you received. You must make sure that they, too, receive
|
||||||
incorporate. Many developers of free software are heartened and
|
or can get the source code. And you must show them these terms so they
|
||||||
encouraged by the resulting cooperation. However, in the case of
|
know their rights.
|
||||||
software used on network servers, this result may fail to come about.
|
|
||||||
The GNU General Public License permits making a modified version and
|
|
||||||
letting the public access it on a server without ever releasing its
|
|
||||||
source code to the public.
|
|
||||||
|
|
||||||
The GNU Affero General Public License is designed specifically to
|
Developers that use the GNU GPL protect your rights with two steps:
|
||||||
ensure that, in such cases, the modified source code becomes available
|
(1) assert copyright on the software, and (2) offer you this License
|
||||||
to the community. It requires the operator of a network server to
|
giving you legal permission to copy, distribute and/or modify it.
|
||||||
provide the source code of the modified version running there to the
|
|
||||||
users of that server. Therefore, public use of a modified version, on
|
|
||||||
a publicly accessible server, gives the public access to the source
|
|
||||||
code of the modified version.
|
|
||||||
|
|
||||||
An older license, called the Affero General Public License and
|
For the developers' and authors' protection, the GPL clearly explains
|
||||||
published by Affero, was designed to accomplish similar goals. This is
|
that there is no warranty for this free software. For both users' and
|
||||||
a different license, not a version of the Affero GPL, but Affero has
|
authors' sake, the GPL requires that modified versions be marked as
|
||||||
released a new version of the Affero GPL which permits relicensing under
|
changed, so that their problems will not be attributed erroneously to
|
||||||
this license.
|
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
|
The precise terms and conditions for copying, distribution and
|
||||||
modification follow.
|
modification follow.
|
||||||
@ -67,7 +106,7 @@ modification follow.
|
|||||||
|
|
||||||
0. Definitions.
|
0. Definitions.
|
||||||
|
|
||||||
"This License" refers to version 3 of the GNU Affero General Public License.
|
"This License" refers to version 3 of the GNU General Public License.
|
||||||
|
|
||||||
"Copyright" also means copyright-like laws that apply to other kinds of
|
"Copyright" also means copyright-like laws that apply to other kinds of
|
||||||
works, such as semiconductor masks.
|
works, such as semiconductor masks.
|
||||||
@ -544,45 +583,35 @@ 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
|
the Program, the only way you could satisfy both those terms and this
|
||||||
License would be to refrain entirely from conveying the Program.
|
License would be to refrain entirely from conveying the Program.
|
||||||
|
|
||||||
13. Remote Network Interaction; Use with the GNU General Public License.
|
13. Use with the GNU Affero General Public License.
|
||||||
|
|
||||||
Notwithstanding any other provision of this License, if you modify the
|
|
||||||
Program, your modified version must prominently offer all users
|
|
||||||
interacting with it remotely through a computer network (if your version
|
|
||||||
supports such interaction) an opportunity to receive the Corresponding
|
|
||||||
Source of your version by providing access to the Corresponding Source
|
|
||||||
from a network server at no charge, through some standard or customary
|
|
||||||
means of facilitating copying of software. This Corresponding Source
|
|
||||||
shall include the Corresponding Source for any work covered by version 3
|
|
||||||
of the GNU General Public License that is incorporated pursuant to the
|
|
||||||
following paragraph.
|
|
||||||
|
|
||||||
Notwithstanding any other provision of this License, you have
|
Notwithstanding any other provision of this License, you have
|
||||||
permission to link or combine any covered work with a work licensed
|
permission to link or combine any covered work with a work licensed
|
||||||
under version 3 of the GNU General Public License into a single
|
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
|
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,
|
License will continue to apply to the part which is the covered work,
|
||||||
but the work with which it is combined will remain governed by version
|
but the special requirements of the GNU Affero General Public License,
|
||||||
3 of the GNU General Public License.
|
section 13, concerning interaction through a network will apply to the
|
||||||
|
combination as such.
|
||||||
|
|
||||||
14. Revised Versions of this License.
|
14. Revised Versions of this License.
|
||||||
|
|
||||||
The Free Software Foundation may publish revised and/or new versions of
|
The Free Software Foundation may publish revised and/or new versions of
|
||||||
the GNU Affero General Public License from time to time. Such new versions
|
the GNU General Public License from time to time. Such new versions will
|
||||||
will be similar in spirit to the present version, but may differ in detail to
|
be similar in spirit to the present version, but may differ in detail to
|
||||||
address new problems or concerns.
|
address new problems or concerns.
|
||||||
|
|
||||||
Each version is given a distinguishing version number. If the
|
Each version is given a distinguishing version number. If the
|
||||||
Program specifies that a certain numbered version of the GNU Affero General
|
Program specifies that a certain numbered version of the GNU General
|
||||||
Public License "or any later version" applies to it, you have the
|
Public License "or any later version" applies to it, you have the
|
||||||
option of following the terms and conditions either of that numbered
|
option of following the terms and conditions either of that numbered
|
||||||
version or of any later version published by the Free Software
|
version or of any later version published by the Free Software
|
||||||
Foundation. If the Program does not specify a version number of the
|
Foundation. If the Program does not specify a version number of the
|
||||||
GNU Affero General Public License, you may choose any version ever published
|
GNU General Public License, you may choose any version ever published
|
||||||
by the Free Software Foundation.
|
by the Free Software Foundation.
|
||||||
|
|
||||||
If the Program specifies that a proxy can decide which future
|
If the Program specifies that a proxy can decide which future
|
||||||
versions of the GNU Affero General Public License can be used, that proxy's
|
versions of the GNU General Public License can be used, that proxy's
|
||||||
public statement of acceptance of a version permanently authorizes you
|
public statement of acceptance of a version permanently authorizes you
|
||||||
to choose that version for the Program.
|
to choose that version for the Program.
|
||||||
|
|
||||||
@ -640,29 +669,40 @@ the "copyright" line and a pointer to where the full notice is found.
|
|||||||
Copyright (C) <year> <name of author>
|
Copyright (C) <year> <name of author>
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
This program is free software: you can redistribute it and/or modify
|
||||||
it under the terms of the GNU Affero General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
(at your option) any later version.
|
(at your option) any later version.
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
This program is distributed in the hope that it will be useful,
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
GNU Affero General Public License for more details.
|
GNU General Public License for more details.
|
||||||
|
|
||||||
You should have received a copy of the GNU Affero General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
Also add information on how to contact you by electronic and paper mail.
|
Also add information on how to contact you by electronic and paper mail.
|
||||||
|
|
||||||
If your software can interact with users remotely through a computer
|
If the program does terminal interaction, make it output a short
|
||||||
network, you should also make sure that it provides a way for users to
|
notice like this when it starts in an interactive mode:
|
||||||
get its source. For example, if your program is a web application, its
|
|
||||||
interface could display a "Source" link that leads users to an archive
|
<program> Copyright (C) <year> <name of author>
|
||||||
of the code. There are many ways you could offer source, and different
|
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||||
solutions will be better for different programs; see section 13 for the
|
This is free software, and you are welcome to redistribute it
|
||||||
specific requirements.
|
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,
|
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.
|
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 AGPL, see
|
For more information on this, and how to apply and follow the GNU GPL, see
|
||||||
<http://www.gnu.org/licenses/>.
|
<http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
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
|
||||||
|
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
73
README.md
@ -1,16 +1,26 @@
|
|||||||
# WinFsp - Windows File System Proxy
|
# WinFsp - Windows File System Proxy
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
|
||||||
|
<a href="https://github.com/billziss-gh/winfsp/releases/latest"><img src="http://www.secfs.net/winfsp/resources/Download-WinFsp.png" alt="Download WinFsp Installer" width="244" height="34"></a>
|
||||||
|
 
|
||||||
|
<a href="https://chocolatey.org/packages/winfsp"><img src="http://www.secfs.net/winfsp/resources/Choco-WinFsp.png" alt="choco install winfsp" width="244" height="34"></a>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
WinFsp is a set of software components for Windows computers that allows the creation of user mode file systems. In this sense it is similar to FUSE (Filesystem in Userspace), which provides the same functionality on UNIX-like computers.
|
WinFsp is a set of software components for Windows computers that allows the creation of user mode file systems. In this sense it is similar to FUSE (Filesystem in Userspace), which provides the same functionality on UNIX-like computers.
|
||||||
|
|
||||||
Some of the benefits and features of using WinFsp are listed below:
|
Some of the benefits of using WinFsp are listed below:
|
||||||
|
|
||||||
* Allows for easy development of file systems in user mode. There are no restrictions on what a process can do in order to implement a file system (other than respond in a timely manner to file system requests).
|
* Very well-tested and stable. Read about its [Testing Strategy](doc/WinFsp-Testing.asciidoc).
|
||||||
* Support for disk and network based file systems.
|
* Very fast. Read about its [Performance](doc/WinFsp-Performance-Testing.asciidoc).
|
||||||
* Support for NTFS level security and access control.
|
* Strives for compatibility with NTFS. Read about its [Compatibility](doc/NTFS-Compatibility.asciidoc ).
|
||||||
* Support for memory mapped files, cached files and the NT cache manager.
|
* Easy to understand but comprehensive API. Consult the [API Reference](http://www.secfs.net/winfsp/apiref/). There is also a simple [Tutorial](doc/WinFsp-Tutorial.asciidoc).
|
||||||
* Support for file change notifications.
|
* FUSE compatibility layer for native Windows and Cygwin. See [fuse.h](inc/fuse/fuse.h).
|
||||||
* Support for file locking.
|
* .NET layer for managed development. See [src/dotnet](src/dotnet).
|
||||||
* Correct NT semantics with respect to file sharing, file deletion and renaming.
|
* Signed drivers provided on every release.
|
||||||
|
* Available under the [GPLv3](License.txt) license with a special exception for Free/Libre and Open Source Software.
|
||||||
|
|
||||||
To learn more about WinFsp, please visit its website: http://www.secfs.net/winfsp/
|
To learn more about WinFsp, please visit its website: http://www.secfs.net/winfsp/
|
||||||
|
|
||||||
@ -21,23 +31,60 @@ WinFsp consists of a kernel mode FSD (File System Driver) and a user mode DLL (D
|
|||||||
The project source code is organized as follows:
|
The project source code is organized as follows:
|
||||||
|
|
||||||
* build/VStudio: WinFsp solution and project files.
|
* build/VStudio: WinFsp solution and project files.
|
||||||
* doc: WinFsp license, contributor agreement and additional documentation. The WinFsp design documents can be found here.
|
* doc: The WinFsp design documents and additional documentation can be found here.
|
||||||
* ext/tlib: A small test library originally from the secfs (Secure Cloud File System) project.
|
* ext/tlib: A small test library originally from the secfs (Secure Cloud File System) project.
|
||||||
* ext/test: Submodule pointing to the secfs.test project, which contains a number of tools for testing Windows and POSIX file systems.
|
* ext/test: Submodule pointing to the secfs.test project, which contains a number of tools for testing Windows and POSIX file systems.
|
||||||
* inc/winfsp: Public headers for the WinFsp API.
|
* inc/winfsp: Public headers for the WinFsp API.
|
||||||
* inc/fuse: Public headers for the FUSE compatibility layer.
|
* inc/fuse: Public headers for the FUSE compatibility layer.
|
||||||
* src/dll: Source code to the WinFsp DLL.
|
* src/dll: Source code to the WinFsp DLL.
|
||||||
* src/dll/fuse: Source code to the FUSE compatibility layer.
|
* src/dll/fuse: Source code to the FUSE compatibility layer.
|
||||||
|
* src/dotnet: Source code to the .NET layer.
|
||||||
* src/launcher: Source code to the launcher service and the launchctl utility.
|
* src/launcher: Source code to the launcher service and the launchctl utility.
|
||||||
* src/sys: Source code to the WinFsp FSD.
|
* src/sys: Source code to the WinFsp FSD.
|
||||||
* opt/cygfuse: Source code for the Cygwin FUSE package.
|
* opt/cygfuse: Source code for the Cygwin FUSE package.
|
||||||
* tst/memfs: Source code to an example file system written in C++ (memfs).
|
* tst/memfs*: Source code to an example file system written in C/C++ (memfs) or C# (memfs-dotnet).
|
||||||
|
* tst/passthrough*: Source code to additional example file systems.
|
||||||
* tst/winfsp-tests: WinFsp test suite.
|
* tst/winfsp-tests: WinFsp test suite.
|
||||||
|
|
||||||
## Building
|
## Building and Running
|
||||||
|
|
||||||
In order to build WinFsp you will need Windows 10 and Visual Studio 2015. You will also need the Windows Driver Kit (WDK) 10.
|
In order to build WinFsp you will need the following:
|
||||||
|
|
||||||
|
* Visual Studio 2015
|
||||||
|
* Windows Driver Kit (WDK) 10
|
||||||
|
* [Wix toolset](http://wixtoolset.org)
|
||||||
|
|
||||||
|
To fully build WinFsp (including the installer) you must use `tools\build.bat`. By default it builds a Release build, but you can choose either the Debug or Release configuration by using the syntax:
|
||||||
|
|
||||||
|
tools\build.bat CONFIGURATION
|
||||||
|
|
||||||
|
If you build the driver yourself it will not be signed and Windows will refuse to load it unless you enable "testsigning". You can enable "testsigning" using the command `bcdedit.exe -set testsigning on`. For more information see this [document](http://www.secfs.net/winfsp/develop/debug/).
|
||||||
|
|
||||||
|
WinFsp is designed to run on Windows 7 and above. It has been tested on the following platforms:
|
||||||
|
|
||||||
|
* Windows 7 Enterprise
|
||||||
|
* Windows 8 Pro
|
||||||
|
* Windows Server 2012
|
||||||
|
* Windows 10 Pro
|
||||||
|
* Windows Server 2016
|
||||||
|
|
||||||
|
## How to Help
|
||||||
|
|
||||||
|
I am looking for help in the following areas:
|
||||||
|
|
||||||
|
* If you have a file system that runs on FUSE please consider porting it to WinFsp. WinFsp has a native API, but it also has a FUSE (high-level) API.
|
||||||
|
* If you are working with a language other than C/C++ (e.g. Delphi, Java, etc.) and you are interested in porting/wrapping WinFsp I would love to hear from you.
|
||||||
|
* There are a number of outstanding issues listed in the [GitHub repository](https://github.com/billziss-gh/winfsp/issues). Many of these require knowledge of Windows kernel-mode and an understanding of the internals of WinFsp so they are not for the faint of heart.
|
||||||
|
|
||||||
|
In all cases I can provide ideas and/or support.
|
||||||
|
|
||||||
|
## Where to Discuss
|
||||||
|
|
||||||
|
If you wish to discuss WinFsp there are now two options:
|
||||||
|
|
||||||
|
- [WinFsp Google Group](https://groups.google.com/forum/#!forum/winfsp)
|
||||||
|
- [Author's Twitter](https://twitter.com/BZissimopoulos)
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
WinFsp is available under the [AGPLv3](http://www.gnu.org/licenses/agpl-3.0.html) license. If you find the constraints of the AGPLv3 too onerous, a commercial license is also available. Please contact Bill Zissimopoulos <billziss at navimatics.com> for more details.
|
WinFsp is available under the [GPLv3](License.txt) license with a special exception for Free/Libre and Open Source Software. A commercial license is also available. Please contact Bill Zissimopoulos \<billziss at navimatics.com> for more details.
|
||||||
|
65
appveyor.yml
@ -1,21 +1,44 @@
|
|||||||
version: '{build}'
|
version: '{build}'
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
CONFIGURATION: Release
|
matrix:
|
||||||
|
- CONFIGURATION: Debug
|
||||||
install:
|
TESTING: Func
|
||||||
- git submodule update --init --recursive
|
- CONFIGURATION: Release
|
||||||
- appveyor AddMessage "Change boot configuration and reboot" -Category Information
|
TESTING: Func
|
||||||
- bcdedit /set testsigning on
|
#- CONFIGURATION: Release
|
||||||
- ps: Restart-Computer -Force
|
# TESTING: Avast
|
||||||
- ps: Start-Sleep -s 10
|
#- CONFIGURATION: Release
|
||||||
|
# TESTING: Perf
|
||||||
build_script:
|
|
||||||
- appveyor AddMessage "Reboot complete" -Category Information
|
install:
|
||||||
- bcdedit | findstr /i "testsigning"
|
- git submodule update --init --recursive
|
||||||
- tools\build.bat %CONFIGURATION%
|
- appveyor AddMessage "Change boot configuration and reboot" -Category Information
|
||||||
|
- bcdedit /set testsigning on
|
||||||
test_script:
|
- if %TESTING%==Func verifier /standard /driver winfsp-x64.sys
|
||||||
- for %%f in ("build\VStudio\build\%CONFIGURATION%\winfsp-*.msi") do start /wait msiexec /i %%f /qn INSTALLLEVEL=1000
|
- if exist %SystemRoot%\memory.dmp del %SystemRoot%\memory.dmp
|
||||||
- tools\nmake-ext-test.bat %CONFIGURATION%
|
- ps: Restart-Computer -Force
|
||||||
- tools\run-tests.bat %CONFIGURATION%
|
- ps: Start-Sleep -s 60
|
||||||
|
|
||||||
|
build_script:
|
||||||
|
- appveyor AddMessage "Reboot complete" -Category Information
|
||||||
|
- tools\build.bat %CONFIGURATION%
|
||||||
|
|
||||||
|
test_script:
|
||||||
|
- choco install winfsp -s build\VStudio\build\%CONFIGURATION% -y
|
||||||
|
- if %TESTING%==Func appveyor DownloadFile http://www.secfs.net/winfsp/resources/Test.Filter.Driver.zip && 7z x Test.Filter.Driver.zip
|
||||||
|
- if %TESTING%==Func start /wait msiexec /i "Test.Filter.Driver\HCK Filter.Driver Content-x86_en-us.msi" /qn
|
||||||
|
- if %TESTING%==Func tools\nmake-ext-test.bat %CONFIGURATION%
|
||||||
|
- if %TESTING%==Func tools\run-tests.bat %CONFIGURATION%
|
||||||
|
- if %TESTING%==Func tools\run-tests.bat %CONFIGURATION% ifstest
|
||||||
|
- if %TESTING%==Func tools\run-tests.bat %CONFIGURATION% sample
|
||||||
|
- if %TESTING%==Func tools\run-tests.bat %CONFIGURATION% compat
|
||||||
|
- if %TESTING%==Avast choco install avastfreeantivirus && fltmc instances -v "C:"
|
||||||
|
- if %TESTING%==Avast tools\run-tests.bat %CONFIGURATION% avast-tests
|
||||||
|
- if %TESTING%==Perf tools\run-perf-tests.bat %CONFIGURATION% baseline > perf-tests.csv && type perf-tests.csv & appveyor PushArtifact perf-tests.csv
|
||||||
|
- choco uninstall winfsp -y
|
||||||
|
- if exist %SystemRoot%\memory.dmp exit 1
|
||||||
|
|
||||||
|
on_finish:
|
||||||
|
- if exist %SystemRoot%\memory.dmp (7z a memory.dmp.zip %SystemRoot%\memory.dmp && appveyor PushArtifact memory.dmp.zip)
|
||||||
|
- verifier /query
|
||||||
|
BIN
art/winfsp-outln.afdesign
Normal file
BIN
art/winfsp-solid.afdesign
Normal file
BIN
art/winfsp-solid.png
Normal file
After Width: | Height: | Size: 15 KiB |
BIN
art/wixbanner.pxm
Normal file
BIN
art/wixdialog.pxm
Normal file
1
build/VStudio/.gitignore
vendored
@ -3,3 +3,4 @@ build
|
|||||||
*.suo
|
*.suo
|
||||||
*.vcproj.*
|
*.vcproj.*
|
||||||
*.vcxproj.user
|
*.vcxproj.user
|
||||||
|
*.csproj.user
|
||||||
|
113
build/VStudio/dotnet/winfsp.net.csproj
Normal file
@ -0,0 +1,113 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<Import Project="..\version.properties" />
|
||||||
|
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||||
|
<PropertyGroup>
|
||||||
|
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||||
|
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||||
|
<ProjectGuid>{94580219-CC8D-4FE5-A3BE-437B0B3481E1}</ProjectGuid>
|
||||||
|
<OutputType>Library</OutputType>
|
||||||
|
<ProjectName>winfsp.net</ProjectName>
|
||||||
|
<RootNamespace>Fsp</RootNamespace>
|
||||||
|
<AssemblyName>winfsp-msil</AssemblyName>
|
||||||
|
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
|
||||||
|
<FileAlignment>512</FileAlignment>
|
||||||
|
<TargetFrameworkProfile />
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||||
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
<DebugType>full</DebugType>
|
||||||
|
<Optimize>false</Optimize>
|
||||||
|
<OutputPath>$(SolutionDir)build\$(Configuration)\</OutputPath>
|
||||||
|
<BaseIntermediateOutputPath>$(SolutionDir)build\$(ProjectName).build\</BaseIntermediateOutputPath>
|
||||||
|
<IntermediateOutputPath>$(BaseIntermediateOutputPath)$(Configuration)\</IntermediateOutputPath>
|
||||||
|
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<WarningLevel>4</WarningLevel>
|
||||||
|
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||||
|
<DocumentationFile>$(BaseIntermediateOutputPath)$(Configuration)\winfsp-msil.xml</DocumentationFile>
|
||||||
|
<NoWarn>1591</NoWarn>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||||
|
<DebugType>pdbonly</DebugType>
|
||||||
|
<Optimize>true</Optimize>
|
||||||
|
<OutputPath>$(SolutionDir)build\$(Configuration)\</OutputPath>
|
||||||
|
<BaseIntermediateOutputPath>$(SolutionDir)build\$(ProjectName).build\</BaseIntermediateOutputPath>
|
||||||
|
<IntermediateOutputPath>$(BaseIntermediateOutputPath)$(Configuration)\</IntermediateOutputPath>
|
||||||
|
<DefineConstants>TRACE</DefineConstants>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<WarningLevel>4</WarningLevel>
|
||||||
|
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||||
|
<DocumentationFile>$(BaseIntermediateOutputPath)$(Configuration)\winfsp-msil.xml</DocumentationFile>
|
||||||
|
<NoWarn>1591</NoWarn>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup>
|
||||||
|
<SignAssembly>true</SignAssembly>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup>
|
||||||
|
<AssemblyOriginatorKeyFile>winfsp.net.snk</AssemblyOriginatorKeyFile>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Reference Include="System" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Include="..\..\..\src\dotnet\FileSystemBase+Const.cs">
|
||||||
|
<Link>FileSystemBase+Const.cs</Link>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="..\..\..\src\dotnet\FileSystemBase.cs">
|
||||||
|
<Link>FileSystemBase.cs</Link>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="..\..\..\src\dotnet\FileSystemHost.cs">
|
||||||
|
<Link>FileSystemHost.cs</Link>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="..\..\..\src\dotnet\Interop.cs">
|
||||||
|
<Link>Interop.cs</Link>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="..\..\..\src\dotnet\Service.cs">
|
||||||
|
<Link>Service.cs</Link>
|
||||||
|
</Compile>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="winfsp.net.snk" />
|
||||||
|
</ItemGroup>
|
||||||
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
|
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||||
|
Other similar extension points exist, see Microsoft.Common.targets.
|
||||||
|
<Target Name="AfterBuild">
|
||||||
|
</Target>
|
||||||
|
-->
|
||||||
|
<Target Name="BeforeBuild">
|
||||||
|
<ItemGroup>
|
||||||
|
<AssemblyInfo Include="using System.Reflection%3b" />
|
||||||
|
<AssemblyInfo Include="[assembly: AssemblyProduct("$(MyProductName)")]" />
|
||||||
|
<AssemblyInfo Include="[assembly: AssemblyTitle("$(MyDescription)")]" />
|
||||||
|
<AssemblyInfo Include="[assembly: AssemblyCompany("$(MyCompanyName)")]" />
|
||||||
|
<AssemblyInfo Include="[assembly: AssemblyCopyright("$(MyCopyright)")]" />
|
||||||
|
<AssemblyInfo Include="[assembly: AssemblyVersion("$(MyAssemblyVersion)")]" />
|
||||||
|
<AssemblyInfo Include="[assembly: AssemblyFileVersion("$(MyVersion)")]" />
|
||||||
|
</ItemGroup>
|
||||||
|
<MakeDir Directories="$(IntermediateOutputPath)" />
|
||||||
|
<WriteLinesToFile File="$(IntermediateOutputPath)AssemblyInfo.cs" Lines="@(AssemblyInfo)" Overwrite="true" />
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Include="$(IntermediateOutputPath)AssemblyInfo.cs" />
|
||||||
|
<FileWrites Include="$(IntermediateOutputPath)AssemblyInfo.cs" />
|
||||||
|
</ItemGroup>
|
||||||
|
</Target>
|
||||||
|
<PropertyGroup>
|
||||||
|
<PostBuildEvent>exit /b 0
|
||||||
|
|
||||||
|
set TargetName=$(TargetName)
|
||||||
|
set MyAssemblyPolicyVersion=$(MyAssemblyPolicyVersion)
|
||||||
|
set MyAssemblyVersion=$(MyAssemblyVersion)
|
||||||
|
|
||||||
|
setlocal EnableDelayedExpansion
|
||||||
|
if exist $(OutDir)policy.$(MyAssemblyPolicyVersion).$(TargetName).config del $(OutDir)policy.$(MyAssemblyPolicyVersion).$(TargetName).config
|
||||||
|
for /f "delims=" %25%25l in ($(ProjectDir)winfsp.net.policy.config) do (
|
||||||
|
set line=%25%25l
|
||||||
|
echo !line! >>$(OutDir)policy.$(MyAssemblyPolicyVersion).$(TargetName).config
|
||||||
|
)
|
||||||
|
|
||||||
|
"$(MSBuildProgramFiles32)\Microsoft SDKs\Windows\v7.0A\Bin\al.exe" /product:"$(MyProductName)" /title:"$(MyDescription)" /company:"$(MyCompanyName)" /copyright:"$(MyCopyright)" /version:"$(MyAssemblyPolicyVersion)" /fileversion:"$(MyVersion)" /link:$(OutDir)policy.$(MyAssemblyPolicyVersion).$(TargetName).config /out:$(OutDir)policy.$(MyAssemblyPolicyVersion).$(TargetName).dll /keyfile:$(ProjectDir)$(ProjectName).snk
|
||||||
|
</PostBuildEvent>
|
||||||
|
</PropertyGroup>
|
||||||
|
</Project>
|
10
build/VStudio/dotnet/winfsp.net.policy.config
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
<configuration>
|
||||||
|
<runtime>
|
||||||
|
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="!TargetName!" publicKeyToken="b099876d8fa9b1f3" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="!MyAssemblyPolicyVersion!.0.0-!MyAssemblyVersion!" newVersion="!MyAssemblyVersion!" />
|
||||||
|
</dependentAssembly>
|
||||||
|
</assemblyBinding>
|
||||||
|
</runtime>
|
||||||
|
</configuration>
|
BIN
build/VStudio/dotnet/winfsp.net.snk
Normal file
@ -1,14 +1,14 @@
|
|||||||
/**
|
/**
|
||||||
* @file CustomActions.cpp
|
* @file CustomActions.cpp
|
||||||
*
|
*
|
||||||
* @copyright 2015-2016 Bill Zissimopoulos
|
* @copyright 2015-2017 Bill Zissimopoulos
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* This file is part of WinFsp.
|
* This file is part of WinFsp.
|
||||||
*
|
*
|
||||||
* You can redistribute it and/or modify it under the terms of the
|
* You can redistribute it and/or modify it under the terms of the GNU
|
||||||
* GNU Affero General Public License version 3 as published by the
|
* General Public License version 3 as published by the Free Software
|
||||||
* Free Software Foundation.
|
* Foundation.
|
||||||
*
|
*
|
||||||
* Licensees holding a valid commercial license may use this file in
|
* Licensees holding a valid commercial license may use this file in
|
||||||
* accordance with the commercial license agreement provided with the
|
* accordance with the commercial license agreement provided with the
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
|
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
|
||||||
<Product
|
<Product
|
||||||
Id="*"
|
Id="*"
|
||||||
Name="$(var.MyProductName)"
|
Name="$(var.MyProductName) $(var.MyProductVersion)"
|
||||||
Manufacturer="$(var.MyCompanyName)"
|
Manufacturer="$(var.MyCompanyName)"
|
||||||
Version="$(var.MyVersion)"
|
Version="$(var.MyVersion)"
|
||||||
Language="1033"
|
Language="1033"
|
||||||
@ -17,12 +17,12 @@
|
|||||||
Disallow="yes"
|
Disallow="yes"
|
||||||
AllowDowngrades="no"
|
AllowDowngrades="no"
|
||||||
AllowSameVersionUpgrades="no"
|
AllowSameVersionUpgrades="no"
|
||||||
DisallowUpgradeErrorMessage="An older version of [ProductName] is already installed. You must uninstall it before you can install this version."
|
DisallowUpgradeErrorMessage="An older version of $(var.MyProductName) is already installed. You must uninstall it before you can install this version."
|
||||||
DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
|
DowngradeErrorMessage="A newer version of $(var.MyProductName) is already installed." />
|
||||||
<Media Id="1" Cabinet="WinFsp.cab" EmbedCab="yes" />
|
<Media Id="1" Cabinet="WinFsp.cab" EmbedCab="yes" />
|
||||||
|
|
||||||
<Property Id="P.LauncherName">$(var.MyProductName).Launcher</Property>
|
<Property Id="P.LauncherName">$(var.MyProductName).Launcher</Property>
|
||||||
<Property Id="P.LauncherRegistryKey">SYSTEM\\CurrentControlSet\\Services\\$(var.MyProductName).Launcher\\Services</Property>
|
<Property Id="P.LauncherRegistryKey">Software\$(var.MyProductName)\Services</Property>
|
||||||
<Property Id="P.RegistryKey">Software\$(var.MyProductName)</Property>
|
<Property Id="P.RegistryKey">Software\$(var.MyProductName)</Property>
|
||||||
<Property Id="INSTALLDIR">
|
<Property Id="INSTALLDIR">
|
||||||
<RegistrySearch
|
<RegistrySearch
|
||||||
@ -39,7 +39,9 @@
|
|||||||
<Directory Id="BINDIR" Name="bin" />
|
<Directory Id="BINDIR" Name="bin" />
|
||||||
<Directory Id="INCDIR" Name="inc" />
|
<Directory Id="INCDIR" Name="inc" />
|
||||||
<Directory Id="LIBDIR" Name="lib" />
|
<Directory Id="LIBDIR" Name="lib" />
|
||||||
|
<Directory Id="OPTDIR" Name="opt" />
|
||||||
<Directory Id="SMPDIR" Name="samples" />
|
<Directory Id="SMPDIR" Name="samples" />
|
||||||
|
<Directory Id="SYMDIR" Name="sym" />
|
||||||
</Directory>
|
</Directory>
|
||||||
</Directory>
|
</Directory>
|
||||||
</Directory>
|
</Directory>
|
||||||
@ -54,6 +56,9 @@
|
|||||||
Value="[INSTALLDIR]"
|
Value="[INSTALLDIR]"
|
||||||
KeyPath="yes" />
|
KeyPath="yes" />
|
||||||
</Component>
|
</Component>
|
||||||
|
<Component Id="C.License.txt">
|
||||||
|
<File Name="License.txt" Source="..\..\..\License.txt" KeyPath="yes" />
|
||||||
|
</Component>
|
||||||
</DirectoryRef>
|
</DirectoryRef>
|
||||||
<DirectoryRef Id="BINDIR" FileSource="..\build\$(var.Configuration)">
|
<DirectoryRef Id="BINDIR" FileSource="..\build\$(var.Configuration)">
|
||||||
<Component Id="C.winfsp_x64.sys">
|
<Component Id="C.winfsp_x64.sys">
|
||||||
@ -83,6 +88,23 @@
|
|||||||
<Condition>NOT VersionNT64</Condition>
|
<Condition>NOT VersionNT64</Condition>
|
||||||
</Component>
|
</Component>
|
||||||
|
|
||||||
|
<!-- install assembly -->
|
||||||
|
<Component Id="C.winfsp_msil.dll" Guid="0D8BA6AE-9F87-402B-AE1A-95B0AE3BE179">
|
||||||
|
<File Id="FILE.winfsp_msil.dll" Name="winfsp-msil.dll" KeyPath="yes" />
|
||||||
|
</Component>
|
||||||
|
<Component Id="C.winfsp_msil.xml" Guid="1657F707-C112-454C-91AE-0FDEBBF454AB">
|
||||||
|
<File Id="FILE.winfsp_msil.xml" Name="winfsp-msil.xml" KeyPath="yes" />
|
||||||
|
</Component>
|
||||||
|
<!--
|
||||||
|
<Component Id="C.winfsp_msil.dll.GAC" Guid="6469467D-8C90-4889-8138-4028F9DA6E85">
|
||||||
|
<File Id="FILE.winfsp_msil.dll.GAC" Name="winfsp-msil.dll" KeyPath="yes" Assembly=".net" />
|
||||||
|
</Component>
|
||||||
|
<Component Id="C.policy.winfsp_msil.dll.GAC">
|
||||||
|
<File Name="policy.1.0.winfsp-msil.dll" KeyPath="yes" Assembly=".net" />
|
||||||
|
<File Name="policy.1.0.winfsp-msil.config" KeyPath="no" />
|
||||||
|
</Component>
|
||||||
|
-->
|
||||||
|
|
||||||
<!-- On Win64 ServiceInstall launcher-x64.exe -->
|
<!-- On Win64 ServiceInstall launcher-x64.exe -->
|
||||||
<Component Id="C.launcher_x64.exe.svcinst">
|
<Component Id="C.launcher_x64.exe.svcinst">
|
||||||
<File Id="launcher_x64.exe.svcinst" Name="launcher-x64.exe" KeyPath="yes" />
|
<File Id="launcher_x64.exe.svcinst" Name="launcher-x64.exe" KeyPath="yes" />
|
||||||
@ -136,6 +158,20 @@
|
|||||||
<File Name="launchctl-x86.exe" KeyPath="yes" />
|
<File Name="launchctl-x86.exe" KeyPath="yes" />
|
||||||
</Component>
|
</Component>
|
||||||
|
|
||||||
|
<Component Id="C.fsptool_x64.exe" Guid="013FE508-097D-4433-9C60-717F5446E7F4">
|
||||||
|
<File Name="fsptool-x64.exe" KeyPath="yes" />
|
||||||
|
</Component>
|
||||||
|
<Component Id="C.fsptool_x86.exe" Guid="6C16DC2C-E12F-49FB-A665-3AF0475487AD">
|
||||||
|
<File Name="fsptool-x86.exe" KeyPath="yes" />
|
||||||
|
</Component>
|
||||||
|
|
||||||
|
<Component Id="C.diag.bat">
|
||||||
|
<File Name="diag.bat" Source="..\..\..\tools\diag.bat" KeyPath="yes" />
|
||||||
|
</Component>
|
||||||
|
<Component Id="C.fsreg.bat">
|
||||||
|
<File Name="fsreg.bat" Source="..\..\..\tools\fsreg.bat" KeyPath="yes" />
|
||||||
|
</Component>
|
||||||
|
|
||||||
<Component Id="C.memfs_x64.exe">
|
<Component Id="C.memfs_x64.exe">
|
||||||
<File Name="memfs-x64.exe" KeyPath="yes" />
|
<File Name="memfs-x64.exe" KeyPath="yes" />
|
||||||
<RegistryKey
|
<RegistryKey
|
||||||
@ -150,7 +186,7 @@
|
|||||||
<RegistryValue
|
<RegistryValue
|
||||||
Type="string"
|
Type="string"
|
||||||
Name="CommandLine"
|
Name="CommandLine"
|
||||||
Value="-u %1 -m %2" />
|
Value="-i -F NTFS -n 65536 -s 67108864 -u %1 -m %2" />
|
||||||
<RegistryValue
|
<RegistryValue
|
||||||
Type="string"
|
Type="string"
|
||||||
Name="Security"
|
Name="Security"
|
||||||
@ -176,7 +212,33 @@
|
|||||||
<RegistryValue
|
<RegistryValue
|
||||||
Type="string"
|
Type="string"
|
||||||
Name="CommandLine"
|
Name="CommandLine"
|
||||||
Value="-u %1 -m %2" />
|
Value="-i -F NTFS -n 65536 -s 67108864 -u %1 -m %2" />
|
||||||
|
<RegistryValue
|
||||||
|
Type="string"
|
||||||
|
Name="Security"
|
||||||
|
Value="D:P(A;;RPWPLC;;;WD)" />
|
||||||
|
<RegistryValue
|
||||||
|
Type="integer"
|
||||||
|
Name="JobControl"
|
||||||
|
Value="1" />
|
||||||
|
</RegistryKey>
|
||||||
|
</RegistryKey>
|
||||||
|
</Component>
|
||||||
|
<Component Id="C.memfs_dotnet_msil.exe">
|
||||||
|
<File Name="memfs-dotnet-msil.exe" KeyPath="yes" />
|
||||||
|
<RegistryKey
|
||||||
|
Root="HKLM"
|
||||||
|
Key="[P.LauncherRegistryKey]">
|
||||||
|
<RegistryKey
|
||||||
|
Key="memfs-dotnet">
|
||||||
|
<RegistryValue
|
||||||
|
Type="string"
|
||||||
|
Name="Executable"
|
||||||
|
Value="[BINDIR]memfs-dotnet-msil.exe" />
|
||||||
|
<RegistryValue
|
||||||
|
Type="string"
|
||||||
|
Name="CommandLine"
|
||||||
|
Value="-i -F NTFS -n 65536 -s 67108864 -u %1 -m %2" />
|
||||||
<RegistryValue
|
<RegistryValue
|
||||||
Type="string"
|
Type="string"
|
||||||
Name="Security"
|
Name="Security"
|
||||||
@ -197,6 +259,9 @@
|
|||||||
<Component Id="C.winfsp.h">
|
<Component Id="C.winfsp.h">
|
||||||
<File Name="winfsp.h" KeyPath="yes" />
|
<File Name="winfsp.h" KeyPath="yes" />
|
||||||
</Component>
|
</Component>
|
||||||
|
<!--Component Id="C.winfsp.hpp">
|
||||||
|
<File Name="winfsp.hpp" KeyPath="yes" />
|
||||||
|
</Component-->
|
||||||
</Directory>
|
</Directory>
|
||||||
<Directory Id="INCDIR.fuse" Name="fuse">
|
<Directory Id="INCDIR.fuse" Name="fuse">
|
||||||
<Component Id="C.fuse.h">
|
<Component Id="C.fuse.h">
|
||||||
@ -241,6 +306,26 @@
|
|||||||
<Condition>NOT VersionNT64</Condition>
|
<Condition>NOT VersionNT64</Condition>
|
||||||
</Component>
|
</Component>
|
||||||
</DirectoryRef>
|
</DirectoryRef>
|
||||||
|
<DirectoryRef Id="OPTDIR">
|
||||||
|
<Directory Id="OPTDIR.cygfuse" Name="cygfuse" FileSource="..\..\..\opt\cygfuse\dist">
|
||||||
|
<Directory Id="OPTDIR.cygfuse.x64" Name="x64">
|
||||||
|
<Component Id="C.fuse.tar.xz.x64">
|
||||||
|
<File Id="FILE.fuse.tar.xz.x64" Name="fuse-2.8-6.tar.xz" KeyPath="yes" />
|
||||||
|
</Component>
|
||||||
|
</Directory>
|
||||||
|
<Directory Id="OPTDIR.cygfuse.x86" Name="x86">
|
||||||
|
<Component Id="C.fuse.tar.xz.x86">
|
||||||
|
<File Id="FILE.fuse.tar.xz.x86" Name="fuse-2.8-6.tar.xz" KeyPath="yes" />
|
||||||
|
</Component>
|
||||||
|
</Directory>
|
||||||
|
<Component Id="C.fuse.install.sh">
|
||||||
|
<File Name="install.sh" KeyPath="yes" />
|
||||||
|
</Component>
|
||||||
|
<Component Id="C.fuse.uninstall.sh">
|
||||||
|
<File Name="uninstall.sh" KeyPath="yes" />
|
||||||
|
</Component>
|
||||||
|
</Directory>
|
||||||
|
</DirectoryRef>
|
||||||
<DirectoryRef Id="SMPDIR" FileSource="..\..\..\tst">
|
<DirectoryRef Id="SMPDIR" FileSource="..\..\..\tst">
|
||||||
<Directory Id="SMPDIR.memfs" Name="memfs">
|
<Directory Id="SMPDIR.memfs" Name="memfs">
|
||||||
<Component Id="C.memfs.h">
|
<Component Id="C.memfs.h">
|
||||||
@ -253,6 +338,114 @@
|
|||||||
<File Name="memfs-main.c" KeyPath="yes" />
|
<File Name="memfs-main.c" KeyPath="yes" />
|
||||||
</Component>
|
</Component>
|
||||||
</Directory>
|
</Directory>
|
||||||
|
<Directory Id="SMPDIR.memfs_dotnet" Name="memfs-dotnet">
|
||||||
|
<Component Id="C.memfs_dotnet.Program.cs">
|
||||||
|
<File Id="FILE.memfs_dotnet.Program.cs" Name="Program.cs" KeyPath="yes" />
|
||||||
|
</Component>
|
||||||
|
</Directory>
|
||||||
|
<Directory Id="SMPDIR.passthrough" Name="passthrough">
|
||||||
|
<Component Id="C.passthrough.c">
|
||||||
|
<File Name="passthrough.c" KeyPath="yes" />
|
||||||
|
</Component>
|
||||||
|
<Component Id="C.passthrough.sln">
|
||||||
|
<File Name="passthrough.sln" KeyPath="yes" />
|
||||||
|
</Component>
|
||||||
|
<Component Id="C.passthrough.vcxproj">
|
||||||
|
<File Name="passthrough.vcxproj" KeyPath="yes" />
|
||||||
|
</Component>
|
||||||
|
<Component Id="C.passthrough.vcxproj.filters">
|
||||||
|
<File Name="passthrough.vcxproj.filters" KeyPath="yes" />
|
||||||
|
</Component>
|
||||||
|
</Directory>
|
||||||
|
<!--Directory Id="SMPDIR.passthrough_cpp" Name="passthrough-cpp">
|
||||||
|
<Component Id="C.passthrough_cpp.cpp">
|
||||||
|
<File Name="passthrough-cpp.cpp" KeyPath="yes" />
|
||||||
|
</Component>
|
||||||
|
<Component Id="C.passthrough_cpp.sln">
|
||||||
|
<File Name="passthrough-cpp.sln" KeyPath="yes" />
|
||||||
|
</Component>
|
||||||
|
<Component Id="C.passthrough_cpp.vcxproj">
|
||||||
|
<File Name="passthrough-cpp.vcxproj" KeyPath="yes" />
|
||||||
|
</Component>
|
||||||
|
<Component Id="C.passthrough_cpp.vcxproj.filters">
|
||||||
|
<File Name="passthrough-cpp.vcxproj.filters" KeyPath="yes" />
|
||||||
|
</Component>
|
||||||
|
</Directory-->
|
||||||
|
<Directory Id="SMPDIR.passthrough_fuse" Name="passthrough-fuse">
|
||||||
|
<Component Id="C.passthrough_fuse.c">
|
||||||
|
<File Name="passthrough-fuse.c" KeyPath="yes" />
|
||||||
|
</Component>
|
||||||
|
<Component Id="C.passthrough_fuse.winposix.c">
|
||||||
|
<File Name="winposix.c" KeyPath="yes" />
|
||||||
|
</Component>
|
||||||
|
<Component Id="C.passthrough_fuse.winposix.h">
|
||||||
|
<File Name="winposix.h" KeyPath="yes" />
|
||||||
|
</Component>
|
||||||
|
<Component Id="C.passthrough_fuse.sln">
|
||||||
|
<File Name="passthrough-fuse.sln" KeyPath="yes" />
|
||||||
|
</Component>
|
||||||
|
<Component Id="C.passthrough_fuse.vcxproj">
|
||||||
|
<File Name="passthrough-fuse.vcxproj" KeyPath="yes" />
|
||||||
|
</Component>
|
||||||
|
<Component Id="C.passthrough_fuse.vcxproj.filters">
|
||||||
|
<File Name="passthrough-fuse.vcxproj.filters" KeyPath="yes" />
|
||||||
|
</Component>
|
||||||
|
<Component Id="C.passthrough_fuse.Makefile">
|
||||||
|
<File Name="Makefile" KeyPath="yes" />
|
||||||
|
</Component>
|
||||||
|
<Component Id="C.passthrough_fuse.README.md">
|
||||||
|
<File Name="README.md" KeyPath="yes" />
|
||||||
|
</Component>
|
||||||
|
</Directory>
|
||||||
|
<Directory Id="SMPDIR.passthrough_dotnet" Name="passthrough-dotnet">
|
||||||
|
<Component Id="C.passthrough_dotnet.Program.cs">
|
||||||
|
<File Id="FILE.passthrough_dotnet.Program.cs" Name="Program.cs" KeyPath="yes" />
|
||||||
|
</Component>
|
||||||
|
<Component Id="C.passthrough_dotnet.sln">
|
||||||
|
<File Name="passthrough-dotnet.sln" KeyPath="yes" />
|
||||||
|
</Component>
|
||||||
|
<Component Id="C.passthrough_dotnet.csproj">
|
||||||
|
<File Name="passthrough-dotnet.csproj" KeyPath="yes" />
|
||||||
|
</Component>
|
||||||
|
</Directory>
|
||||||
|
</DirectoryRef>
|
||||||
|
<DirectoryRef Id="SYMDIR">
|
||||||
|
<Component Id="C.winfsp_x64.sys.pdb">
|
||||||
|
<File Name="winfsp-x64.sys.pdb" Source="..\build\$(var.Configuration)\winfsp-x64.sys.public.pdb" KeyPath="yes" />
|
||||||
|
</Component>
|
||||||
|
<Component Id="C.winfsp_x86.sys.pdb">
|
||||||
|
<File Name="winfsp-x86.sys.pdb" Source="..\build\$(var.Configuration)\winfsp-x86.sys.public.pdb" KeyPath="yes" />
|
||||||
|
</Component>
|
||||||
|
<Component Id="C.winfsp_x64.dll.pdb">
|
||||||
|
<File Name="winfsp-x64.dll.pdb" Source="..\build\$(var.Configuration)\winfsp-x64.dll.public.pdb" KeyPath="yes" />
|
||||||
|
</Component>
|
||||||
|
<Component Id="C.winfsp_x86.dll.pdb">
|
||||||
|
<File Name="winfsp-x86.dll.pdb" Source="..\build\$(var.Configuration)\winfsp-x86.dll.public.pdb" KeyPath="yes" />
|
||||||
|
</Component>
|
||||||
|
<Component Id="C.launcher_x64.pdb">
|
||||||
|
<File Name="launcher-x64.pdb" Source="..\build\$(var.Configuration)\launcher-x64.public.pdb" KeyPath="yes" />
|
||||||
|
</Component>
|
||||||
|
<Component Id="C.launcher_x86.pdb">
|
||||||
|
<File Name="launcher-x86.pdb" Source="..\build\$(var.Configuration)\launcher-x86.public.pdb" KeyPath="yes" />
|
||||||
|
</Component>
|
||||||
|
<Component Id="C.launchctl_x64.pdb">
|
||||||
|
<File Name="launchctl-x64.pdb" Source="..\build\$(var.Configuration)\launchctl-x64.public.pdb" KeyPath="yes" />
|
||||||
|
</Component>
|
||||||
|
<Component Id="C.launchctl_x86.pdb">
|
||||||
|
<File Name="launchctl-x86.pdb" Source="..\build\$(var.Configuration)\launchctl-x86.public.pdb" KeyPath="yes" />
|
||||||
|
</Component>
|
||||||
|
<Component Id="C.fsptool_x64.pdb">
|
||||||
|
<File Name="fsptool-x64.pdb" Source="..\build\$(var.Configuration)\fsptool-x64.public.pdb" KeyPath="yes" />
|
||||||
|
</Component>
|
||||||
|
<Component Id="C.fsptool_x86.pdb">
|
||||||
|
<File Name="fsptool-x86.pdb" Source="..\build\$(var.Configuration)\fsptool-x86.public.pdb" KeyPath="yes" />
|
||||||
|
</Component>
|
||||||
|
<Component Id="C.memfs_x64.pdb">
|
||||||
|
<File Name="memfs-x64.pdb" Source="..\build\$(var.Configuration)\memfs-x64.public.pdb" KeyPath="yes" />
|
||||||
|
</Component>
|
||||||
|
<Component Id="C.memfs_x86.pdb">
|
||||||
|
<File Name="memfs-x86.pdb" Source="..\build\$(var.Configuration)\memfs-x86.public.pdb" KeyPath="yes" />
|
||||||
|
</Component>
|
||||||
</DirectoryRef>
|
</DirectoryRef>
|
||||||
|
|
||||||
<ComponentGroup Id="C.WinFsp.bin">
|
<ComponentGroup Id="C.WinFsp.bin">
|
||||||
@ -268,10 +461,15 @@
|
|||||||
<ComponentRef Id="C.launcher_x86.exe.svcinst" />
|
<ComponentRef Id="C.launcher_x86.exe.svcinst" />
|
||||||
<ComponentRef Id="C.launchctl_x64.exe" />
|
<ComponentRef Id="C.launchctl_x64.exe" />
|
||||||
<ComponentRef Id="C.launchctl_x86.exe" />
|
<ComponentRef Id="C.launchctl_x86.exe" />
|
||||||
|
<ComponentRef Id="C.fsptool_x64.exe" />
|
||||||
|
<ComponentRef Id="C.fsptool_x86.exe" />
|
||||||
|
<ComponentRef Id="C.diag.bat" />
|
||||||
|
<ComponentRef Id="C.fsreg.bat" />
|
||||||
</ComponentGroup>
|
</ComponentGroup>
|
||||||
<ComponentGroup Id="C.WinFsp.inc">
|
<ComponentGroup Id="C.WinFsp.inc">
|
||||||
<ComponentRef Id="C.fsctl.h" />
|
<ComponentRef Id="C.fsctl.h" />
|
||||||
<ComponentRef Id="C.winfsp.h" />
|
<ComponentRef Id="C.winfsp.h" />
|
||||||
|
<!--ComponentRef Id="C.winfsp.hpp" /-->
|
||||||
<ComponentRef Id="C.fuse.h" />
|
<ComponentRef Id="C.fuse.h" />
|
||||||
<ComponentRef Id="C.fuse_common.h" />
|
<ComponentRef Id="C.fuse_common.h" />
|
||||||
<ComponentRef Id="C.fuse_opt.h" />
|
<ComponentRef Id="C.fuse_opt.h" />
|
||||||
@ -283,18 +481,69 @@
|
|||||||
<ComponentRef Id="C.fuse_x64.pc" />
|
<ComponentRef Id="C.fuse_x64.pc" />
|
||||||
<ComponentRef Id="C.fuse_x86.pc" />
|
<ComponentRef Id="C.fuse_x86.pc" />
|
||||||
</ComponentGroup>
|
</ComponentGroup>
|
||||||
|
<ComponentGroup Id="C.WinFsp.opt.fuse">
|
||||||
|
<ComponentRef Id="C.fuse.tar.xz.x64" />
|
||||||
|
<ComponentRef Id="C.fuse.tar.xz.x86" />
|
||||||
|
<ComponentRef Id="C.fuse.install.sh" />
|
||||||
|
<ComponentRef Id="C.fuse.uninstall.sh" />
|
||||||
|
</ComponentGroup>
|
||||||
<ComponentGroup Id="C.WinFsp.smp">
|
<ComponentGroup Id="C.WinFsp.smp">
|
||||||
<ComponentRef Id="C.memfs_x64.exe" />
|
<ComponentRef Id="C.memfs_x64.exe" />
|
||||||
<ComponentRef Id="C.memfs_x86.exe" />
|
<ComponentRef Id="C.memfs_x86.exe" />
|
||||||
<ComponentRef Id="C.memfs.h" />
|
<ComponentRef Id="C.memfs.h" />
|
||||||
<ComponentRef Id="C.memfs.cpp" />
|
<ComponentRef Id="C.memfs.cpp" />
|
||||||
<ComponentRef Id="C.memfs_main.c" />
|
<ComponentRef Id="C.memfs_main.c" />
|
||||||
|
<ComponentRef Id="C.passthrough.c" />
|
||||||
|
<ComponentRef Id="C.passthrough.sln" />
|
||||||
|
<ComponentRef Id="C.passthrough.vcxproj" />
|
||||||
|
<ComponentRef Id="C.passthrough.vcxproj.filters" />
|
||||||
|
<!--ComponentRef Id="C.passthrough_cpp.cpp" /-->
|
||||||
|
<!--ComponentRef Id="C.passthrough_cpp.sln" /-->
|
||||||
|
<!--ComponentRef Id="C.passthrough_cpp.vcxproj" /-->
|
||||||
|
<!--ComponentRef Id="C.passthrough_cpp.vcxproj.filters" /-->
|
||||||
|
<ComponentRef Id="C.passthrough_fuse.c" />
|
||||||
|
<ComponentRef Id="C.passthrough_fuse.winposix.c" />
|
||||||
|
<ComponentRef Id="C.passthrough_fuse.winposix.h" />
|
||||||
|
<ComponentRef Id="C.passthrough_fuse.sln" />
|
||||||
|
<ComponentRef Id="C.passthrough_fuse.vcxproj" />
|
||||||
|
<ComponentRef Id="C.passthrough_fuse.vcxproj.filters" />
|
||||||
|
<ComponentRef Id="C.passthrough_fuse.Makefile" />
|
||||||
|
<ComponentRef Id="C.passthrough_fuse.README.md" />
|
||||||
|
</ComponentGroup>
|
||||||
|
<ComponentGroup Id="C.WinFsp.sym">
|
||||||
|
<ComponentRef Id="C.winfsp_x64.sys.pdb" />
|
||||||
|
<ComponentRef Id="C.winfsp_x86.sys.pdb" />
|
||||||
|
<ComponentRef Id="C.winfsp_x86.dll.pdb" />
|
||||||
|
<ComponentRef Id="C.winfsp_x64.dll.pdb" />
|
||||||
|
<ComponentRef Id="C.launcher_x86.pdb" />
|
||||||
|
<ComponentRef Id="C.launcher_x64.pdb" />
|
||||||
|
<ComponentRef Id="C.launchctl_x64.pdb" />
|
||||||
|
<ComponentRef Id="C.launchctl_x86.pdb" />
|
||||||
|
<ComponentRef Id="C.fsptool_x64.pdb" />
|
||||||
|
<ComponentRef Id="C.fsptool_x86.pdb" />
|
||||||
|
<ComponentRef Id="C.memfs_x64.pdb" />
|
||||||
|
<ComponentRef Id="C.memfs_x86.pdb" />
|
||||||
|
</ComponentGroup>
|
||||||
|
<ComponentGroup Id="C.WinFsp.net">
|
||||||
|
<ComponentRef Id="C.winfsp_msil.dll" />
|
||||||
|
<ComponentRef Id="C.winfsp_msil.xml" />
|
||||||
|
<!--
|
||||||
|
<ComponentRef Id="C.winfsp_msil.dll.GAC" />
|
||||||
|
<ComponentRef Id="C.policy.winfsp_msil.dll.GAC" />
|
||||||
|
-->
|
||||||
|
</ComponentGroup>
|
||||||
|
<ComponentGroup Id="C.WinFsp.smp.net">
|
||||||
|
<ComponentRef Id="C.memfs_dotnet_msil.exe" />
|
||||||
|
<ComponentRef Id="C.memfs_dotnet.Program.cs" />
|
||||||
|
<ComponentRef Id="C.passthrough_dotnet.Program.cs" />
|
||||||
|
<ComponentRef Id="C.passthrough_dotnet.sln" />
|
||||||
|
<ComponentRef Id="C.passthrough_dotnet.csproj" />
|
||||||
</ComponentGroup>
|
</ComponentGroup>
|
||||||
|
|
||||||
<Feature
|
<Feature
|
||||||
Id="F.Main"
|
Id="F.Main"
|
||||||
Level="1"
|
Level="1"
|
||||||
Title="$(var.MyProductName) $(var.MyVersion)"
|
Title="$(var.MyProductName) $(var.MyProductVersion)"
|
||||||
Description="$(var.MyDescription)"
|
Description="$(var.MyDescription)"
|
||||||
Display="expand"
|
Display="expand"
|
||||||
ConfigurableDirectory="INSTALLDIR"
|
ConfigurableDirectory="INSTALLDIR"
|
||||||
@ -302,6 +551,7 @@
|
|||||||
InstallDefault="local"
|
InstallDefault="local"
|
||||||
Absent="disallow">
|
Absent="disallow">
|
||||||
<ComponentRef Id="C.INSTALLDIR" />
|
<ComponentRef Id="C.INSTALLDIR" />
|
||||||
|
<ComponentRef Id="C.License.txt" />
|
||||||
<Feature
|
<Feature
|
||||||
Id="F.User"
|
Id="F.User"
|
||||||
Level="1"
|
Level="1"
|
||||||
@ -311,7 +561,20 @@
|
|||||||
InstallDefault="local"
|
InstallDefault="local"
|
||||||
Absent="disallow">
|
Absent="disallow">
|
||||||
<ComponentGroupRef Id="C.WinFsp.bin" />
|
<ComponentGroupRef Id="C.WinFsp.bin" />
|
||||||
|
<ComponentGroupRef Id="C.WinFsp.net" />
|
||||||
</Feature>
|
</Feature>
|
||||||
|
<!--
|
||||||
|
<Feature
|
||||||
|
Id="F.Net"
|
||||||
|
Level="10"
|
||||||
|
Title=".NET"
|
||||||
|
Description="The managed $(var.MyProductName) files."
|
||||||
|
AllowAdvertise="no"
|
||||||
|
InstallDefault="local"
|
||||||
|
Absent="allow">
|
||||||
|
<ComponentGroupRef Id="C.WinFsp.net" />
|
||||||
|
</Feature>
|
||||||
|
-->
|
||||||
<Feature
|
<Feature
|
||||||
Id="F.Developer"
|
Id="F.Developer"
|
||||||
Level="1000"
|
Level="1000"
|
||||||
@ -323,9 +586,23 @@
|
|||||||
<ComponentGroupRef Id="C.WinFsp.inc" />
|
<ComponentGroupRef Id="C.WinFsp.inc" />
|
||||||
<ComponentGroupRef Id="C.WinFsp.lib" />
|
<ComponentGroupRef Id="C.WinFsp.lib" />
|
||||||
<ComponentGroupRef Id="C.WinFsp.smp" />
|
<ComponentGroupRef Id="C.WinFsp.smp" />
|
||||||
|
<ComponentGroupRef Id="C.WinFsp.smp.net" />
|
||||||
|
<ComponentGroupRef Id="C.WinFsp.sym" />
|
||||||
|
</Feature>
|
||||||
|
<Feature
|
||||||
|
Id="F.Cygfuse"
|
||||||
|
Level="1000"
|
||||||
|
Title="FUSE for Cygwin"
|
||||||
|
Description="From a Cygwin prompt change to <InstallDir>/opt/cygfuse and run install.sh."
|
||||||
|
AllowAdvertise="no"
|
||||||
|
InstallDefault="local"
|
||||||
|
Absent="allow">
|
||||||
|
<ComponentGroupRef Id="C.WinFsp.opt.fuse" />
|
||||||
</Feature>
|
</Feature>
|
||||||
</Feature>
|
</Feature>
|
||||||
|
|
||||||
|
<WixVariable Id="WixUIBannerBmp" Value="wixbanner.bmp" />
|
||||||
|
<WixVariable Id="WixUIDialogBmp" Value="wixdialog-$(var.MyProductStage).bmp" />
|
||||||
<UI Id="FeatureTree">
|
<UI Id="FeatureTree">
|
||||||
<UIRef Id="WixUI_FeatureTree" />
|
<UIRef Id="WixUI_FeatureTree" />
|
||||||
<!-- skip the license agreement dialog; higher Order takes priority (weird) -->
|
<!-- skip the license agreement dialog; higher Order takes priority (weird) -->
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
|
||||||
<OutputPath>$(SolutionDir)build\$(Configuration)\</OutputPath>
|
<OutputPath>$(SolutionDir)build\$(Configuration)\</OutputPath>
|
||||||
<IntermediateOutputPath>$(SolutionDir)build\$(Name).build\$(Configuration)\$(Platform)\</IntermediateOutputPath>
|
<IntermediateOutputPath>$(SolutionDir)build\$(Name).build\$(Configuration)\$(Platform)\</IntermediateOutputPath>
|
||||||
<DefineConstants>Debug;MyProductName=$(MyProductName);MyDescription=$(MyDescription);MyCompanyName=$(MyCompanyName);MyCopyright=$(MyCopyright);MyVersion=$(MyVersion)</DefineConstants>
|
<DefineConstants>Debug;MyProductName=$(MyProductName);MyDescription=$(MyDescription);MyCompanyName=$(MyCompanyName);MyCopyright=$(MyCopyright);MyProductVersion=$(MyProductVersion);MyProductStage=$(MyProductStage);MyVersion=$(MyVersion);MyFullVersion=$(MyFullVersion)</DefineConstants>
|
||||||
<SuppressAllWarnings>False</SuppressAllWarnings>
|
<SuppressAllWarnings>False</SuppressAllWarnings>
|
||||||
<Pedantic>True</Pedantic>
|
<Pedantic>True</Pedantic>
|
||||||
<SuppressPdbOutput>True</SuppressPdbOutput>
|
<SuppressPdbOutput>True</SuppressPdbOutput>
|
||||||
@ -25,7 +25,7 @@
|
|||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
|
||||||
<OutputPath>$(SolutionDir)build\$(Configuration)\</OutputPath>
|
<OutputPath>$(SolutionDir)build\$(Configuration)\</OutputPath>
|
||||||
<IntermediateOutputPath>$(SolutionDir)build\$(Name).build\$(Configuration)\$(Platform)\</IntermediateOutputPath>
|
<IntermediateOutputPath>$(SolutionDir)build\$(Name).build\$(Configuration)\$(Platform)\</IntermediateOutputPath>
|
||||||
<DefineConstants>MyProductName=$(MyProductName);MyDescription=$(MyDescription);MyCompanyName=$(MyCompanyName);MyCopyright=$(MyCopyright);MyVersion=$(MyVersion)</DefineConstants>
|
<DefineConstants>MyProductName=$(MyProductName);MyDescription=$(MyDescription);MyCompanyName=$(MyCompanyName);MyCopyright=$(MyCopyright);MyProductVersion=$(MyProductVersion);MyProductStage=$(MyProductStage);MyVersion=$(MyVersion);MyFullVersion=$(MyFullVersion)</DefineConstants>
|
||||||
<SuppressAllWarnings>False</SuppressAllWarnings>
|
<SuppressAllWarnings>False</SuppressAllWarnings>
|
||||||
<Pedantic>True</Pedantic>
|
<Pedantic>True</Pedantic>
|
||||||
<SuppressPdbOutput>True</SuppressPdbOutput>
|
<SuppressPdbOutput>True</SuppressPdbOutput>
|
||||||
|
BIN
build/VStudio/installer/wixbanner.bmp
Normal file
After Width: | Height: | Size: 112 KiB |
BIN
build/VStudio/installer/wixdialog-Beta.bmp
Normal file
After Width: | Height: | Size: 601 KiB |
BIN
build/VStudio/installer/wixdialog-Gold.bmp
Normal file
After Width: | Height: | Size: 601 KiB |
BIN
build/VStudio/installer/wixdialog-RC.bmp
Normal file
After Width: | Height: | Size: 601 KiB |
187
build/VStudio/testing/fsbench.vcxproj
Normal file
@ -0,0 +1,187 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<ItemGroup Label="ProjectConfigurations">
|
||||||
|
<ProjectConfiguration Include="Debug|Win32">
|
||||||
|
<Configuration>Debug</Configuration>
|
||||||
|
<Platform>Win32</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Release|Win32">
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>Win32</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Debug|x64">
|
||||||
|
<Configuration>Debug</Configuration>
|
||||||
|
<Platform>x64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Release|x64">
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>x64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
</ItemGroup>
|
||||||
|
<PropertyGroup Label="Globals">
|
||||||
|
<ProjectGuid>{C4E1E9E5-0959-488E-8C6A-C327CC81BEFB}</ProjectGuid>
|
||||||
|
<Keyword>Win32Proj</Keyword>
|
||||||
|
<RootNamespace>fsbench</RootNamespace>
|
||||||
|
<WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v140</PlatformToolset>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v140</PlatformToolset>
|
||||||
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v140</PlatformToolset>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v140</PlatformToolset>
|
||||||
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
|
<ImportGroup Label="ExtensionSettings">
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="Shared">
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<PropertyGroup Label="UserMacros" />
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
|
<LinkIncremental>true</LinkIncremental>
|
||||||
|
<OutDir>$(SolutionDir)build\$(Configuration)\</OutDir>
|
||||||
|
<IntDir>$(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(PlatformTarget)\</IntDir>
|
||||||
|
<TargetName>$(ProjectName)-$(PlatformTarget)</TargetName>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
|
<LinkIncremental>true</LinkIncremental>
|
||||||
|
<OutDir>$(SolutionDir)build\$(Configuration)\</OutDir>
|
||||||
|
<IntDir>$(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(PlatformTarget)\</IntDir>
|
||||||
|
<TargetName>$(ProjectName)-$(PlatformTarget)</TargetName>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
|
<LinkIncremental>false</LinkIncremental>
|
||||||
|
<OutDir>$(SolutionDir)build\$(Configuration)\</OutDir>
|
||||||
|
<IntDir>$(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(PlatformTarget)\</IntDir>
|
||||||
|
<TargetName>$(ProjectName)-$(PlatformTarget)</TargetName>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
|
<LinkIncremental>false</LinkIncremental>
|
||||||
|
<OutDir>$(SolutionDir)build\$(Configuration)\</OutDir>
|
||||||
|
<IntDir>$(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(PlatformTarget)\</IntDir>
|
||||||
|
<TargetName>$(ProjectName)-$(PlatformTarget)</TargetName>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
|
<ClCompile>
|
||||||
|
<PrecompiledHeader>
|
||||||
|
</PrecompiledHeader>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<Optimization>Disabled</Optimization>
|
||||||
|
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<SDLCheck>true</SDLCheck>
|
||||||
|
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||||
|
<AdditionalIncludeDirectories>..\..\..\ext</AdditionalIncludeDirectories>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
|
<ClCompile>
|
||||||
|
<PrecompiledHeader>
|
||||||
|
</PrecompiledHeader>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<Optimization>Disabled</Optimization>
|
||||||
|
<PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<SDLCheck>true</SDLCheck>
|
||||||
|
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||||
|
<AdditionalIncludeDirectories>..\..\..\ext</AdditionalIncludeDirectories>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
|
<ClCompile>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<PrecompiledHeader>
|
||||||
|
</PrecompiledHeader>
|
||||||
|
<Optimization>MaxSpeed</Optimization>
|
||||||
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
|
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||||
|
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<SDLCheck>true</SDLCheck>
|
||||||
|
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||||
|
<AdditionalIncludeDirectories>..\..\..\ext</AdditionalIncludeDirectories>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
|
<ClCompile>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<PrecompiledHeader>
|
||||||
|
</PrecompiledHeader>
|
||||||
|
<Optimization>MaxSpeed</Optimization>
|
||||||
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
|
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||||
|
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<SDLCheck>true</SDLCheck>
|
||||||
|
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||||
|
<AdditionalIncludeDirectories>..\..\..\ext</AdditionalIncludeDirectories>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClCompile Include="..\..\..\ext\tlib\testsuite.c">
|
||||||
|
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>
|
||||||
|
<SDLCheck Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</SDLCheck>
|
||||||
|
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>
|
||||||
|
<SDLCheck Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</SDLCheck>
|
||||||
|
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">TurnOffAllWarnings</WarningLevel>
|
||||||
|
<SDLCheck Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</SDLCheck>
|
||||||
|
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">TurnOffAllWarnings</WarningLevel>
|
||||||
|
<SDLCheck Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</SDLCheck>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\tst\fsbench\fsbench.c" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClInclude Include="..\..\..\ext\tlib\testsuite.h" />
|
||||||
|
</ItemGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
|
<ImportGroup Label="ExtensionTargets">
|
||||||
|
</ImportGroup>
|
||||||
|
</Project>
|
25
build/VStudio/testing/fsbench.vcxproj.filters
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<ItemGroup>
|
||||||
|
<Filter Include="Source">
|
||||||
|
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||||
|
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="Source\tlib">
|
||||||
|
<UniqueIdentifier>{d76fc01e-0f8d-4596-bdef-c2a5d3fede2e}</UniqueIdentifier>
|
||||||
|
</Filter>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClCompile Include="..\..\..\tst\fsbench\fsbench.c">
|
||||||
|
<Filter>Source</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\ext\tlib\testsuite.c">
|
||||||
|
<Filter>Source\tlib</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClInclude Include="..\..\..\ext\tlib\testsuite.h">
|
||||||
|
<Filter>Source\tlib</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
</ItemGroup>
|
||||||
|
</Project>
|
185
build/VStudio/testing/fscrash.vcxproj
Normal file
@ -0,0 +1,185 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<ItemGroup Label="ProjectConfigurations">
|
||||||
|
<ProjectConfiguration Include="Debug|Win32">
|
||||||
|
<Configuration>Debug</Configuration>
|
||||||
|
<Platform>Win32</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Release|Win32">
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>Win32</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Debug|x64">
|
||||||
|
<Configuration>Debug</Configuration>
|
||||||
|
<Platform>x64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Release|x64">
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>x64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
</ItemGroup>
|
||||||
|
<PropertyGroup Label="Globals">
|
||||||
|
<ProjectGuid>{10757011-749D-4954-873B-AE38D8145472}</ProjectGuid>
|
||||||
|
<Keyword>Win32Proj</Keyword>
|
||||||
|
<RootNamespace>fscrash</RootNamespace>
|
||||||
|
<WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v140</PlatformToolset>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v140</PlatformToolset>
|
||||||
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v140</PlatformToolset>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v140</PlatformToolset>
|
||||||
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
|
<ImportGroup Label="ExtensionSettings">
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="Shared">
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<PropertyGroup Label="UserMacros" />
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
|
<LinkIncremental>true</LinkIncremental>
|
||||||
|
<OutDir>$(SolutionDir)build\$(Configuration)\</OutDir>
|
||||||
|
<IntDir>$(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(PlatformTarget)\</IntDir>
|
||||||
|
<TargetName>$(ProjectName)-$(PlatformTarget)</TargetName>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
|
<LinkIncremental>true</LinkIncremental>
|
||||||
|
<OutDir>$(SolutionDir)build\$(Configuration)\</OutDir>
|
||||||
|
<IntDir>$(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(PlatformTarget)\</IntDir>
|
||||||
|
<TargetName>$(ProjectName)-$(PlatformTarget)</TargetName>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
|
<LinkIncremental>false</LinkIncremental>
|
||||||
|
<OutDir>$(SolutionDir)build\$(Configuration)\</OutDir>
|
||||||
|
<IntDir>$(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(PlatformTarget)\</IntDir>
|
||||||
|
<TargetName>$(ProjectName)-$(PlatformTarget)</TargetName>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
|
<LinkIncremental>false</LinkIncremental>
|
||||||
|
<OutDir>$(SolutionDir)build\$(Configuration)\</OutDir>
|
||||||
|
<IntDir>$(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(PlatformTarget)\</IntDir>
|
||||||
|
<TargetName>$(ProjectName)-$(PlatformTarget)</TargetName>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
|
<ClCompile>
|
||||||
|
<PrecompiledHeader>
|
||||||
|
</PrecompiledHeader>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<Optimization>Disabled</Optimization>
|
||||||
|
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<SDLCheck>true</SDLCheck>
|
||||||
|
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||||
|
<AdditionalIncludeDirectories>..\..\..\tst\memfs;..\..\..\inc</AdditionalIncludeDirectories>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
|
<ClCompile>
|
||||||
|
<PrecompiledHeader>
|
||||||
|
</PrecompiledHeader>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<Optimization>Disabled</Optimization>
|
||||||
|
<PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<SDLCheck>true</SDLCheck>
|
||||||
|
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||||
|
<AdditionalIncludeDirectories>..\..\..\tst\memfs;..\..\..\inc</AdditionalIncludeDirectories>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
|
<ClCompile>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<PrecompiledHeader>
|
||||||
|
</PrecompiledHeader>
|
||||||
|
<Optimization>MaxSpeed</Optimization>
|
||||||
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
|
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||||
|
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<SDLCheck>true</SDLCheck>
|
||||||
|
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||||
|
<AdditionalIncludeDirectories>..\..\..\tst\memfs;..\..\..\inc</AdditionalIncludeDirectories>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
|
<ClCompile>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<PrecompiledHeader>
|
||||||
|
</PrecompiledHeader>
|
||||||
|
<Optimization>MaxSpeed</Optimization>
|
||||||
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
|
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||||
|
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<SDLCheck>true</SDLCheck>
|
||||||
|
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||||
|
<AdditionalIncludeDirectories>..\..\..\tst\memfs;..\..\..\inc</AdditionalIncludeDirectories>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClCompile Include="..\..\..\tst\fscrash\fscrash-main.c" />
|
||||||
|
<ClCompile Include="..\..\..\tst\fscrash\fscrash.c" />
|
||||||
|
<ClCompile Include="..\..\..\tst\memfs\memfs.cpp" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClInclude Include="..\..\..\tst\fscrash\fscrash.h" />
|
||||||
|
<ClInclude Include="..\..\..\tst\memfs\memfs.h" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\winfsp_dll.vcxproj">
|
||||||
|
<Project>{4a7c0b21-9e10-4c81-92de-1493efcf24eb}</Project>
|
||||||
|
</ProjectReference>
|
||||||
|
</ItemGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
|
<ImportGroup Label="ExtensionTargets">
|
||||||
|
</ImportGroup>
|
||||||
|
</Project>
|
28
build/VStudio/testing/fscrash.vcxproj.filters
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<ItemGroup>
|
||||||
|
<Filter Include="Source">
|
||||||
|
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||||
|
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||||
|
</Filter>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClCompile Include="..\..\..\tst\fscrash\fscrash-main.c">
|
||||||
|
<Filter>Source</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\tst\memfs\memfs.cpp">
|
||||||
|
<Filter>Source</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\tst\fscrash\fscrash.c">
|
||||||
|
<Filter>Source</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClInclude Include="..\..\..\tst\memfs\memfs.h">
|
||||||
|
<Filter>Source</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\tst\fscrash\fscrash.h">
|
||||||
|
<Filter>Source</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
</ItemGroup>
|
||||||
|
</Project>
|
63
build/VStudio/testing/memfs-dotnet.csproj
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||||
|
<PropertyGroup>
|
||||||
|
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||||
|
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||||
|
<ProjectGuid>{4920E350-D496-4652-AE98-6C4208AEC1D8}</ProjectGuid>
|
||||||
|
<OutputType>Exe</OutputType>
|
||||||
|
<ProjectName>memfs-dotnet</ProjectName>
|
||||||
|
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||||
|
<RootNamespace>memfs</RootNamespace>
|
||||||
|
<AssemblyName>memfs-dotnet-msil</AssemblyName>
|
||||||
|
<TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
|
||||||
|
<FileAlignment>512</FileAlignment>
|
||||||
|
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||||
|
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||||
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
<DebugType>full</DebugType>
|
||||||
|
<Optimize>false</Optimize>
|
||||||
|
<OutputPath>$(SolutionDir)build\$(Configuration)\</OutputPath>
|
||||||
|
<BaseIntermediateOutputPath>$(SolutionDir)build\$(ProjectName).build\</BaseIntermediateOutputPath>
|
||||||
|
<IntermediateOutputPath>$(BaseIntermediateOutputPath)$(Configuration)\</IntermediateOutputPath>
|
||||||
|
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<WarningLevel>4</WarningLevel>
|
||||||
|
<Prefer32Bit>false</Prefer32Bit>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||||
|
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||||
|
<DebugType>pdbonly</DebugType>
|
||||||
|
<Optimize>true</Optimize>
|
||||||
|
<OutputPath>$(SolutionDir)build\$(Configuration)\</OutputPath>
|
||||||
|
<BaseIntermediateOutputPath>$(SolutionDir)build\$(ProjectName).build\</BaseIntermediateOutputPath>
|
||||||
|
<IntermediateOutputPath>$(BaseIntermediateOutputPath)$(Configuration)\</IntermediateOutputPath>
|
||||||
|
<DefineConstants>TRACE</DefineConstants>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<WarningLevel>4</WarningLevel>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Reference Include="System" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Include="..\..\..\tst\memfs-dotnet\Program.cs">
|
||||||
|
<Link>Program.cs</Link>
|
||||||
|
</Compile>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\dotnet\winfsp.net.csproj">
|
||||||
|
<Project>{94580219-cc8d-4fe5-a3be-437b0b3481e1}</Project>
|
||||||
|
<Name>winfsp.net</Name>
|
||||||
|
</ProjectReference>
|
||||||
|
</ItemGroup>
|
||||||
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
|
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||||
|
Other similar extension points exist, see Microsoft.Common.targets.
|
||||||
|
<Target Name="BeforeBuild">
|
||||||
|
</Target>
|
||||||
|
<Target Name="AfterBuild">
|
||||||
|
</Target>
|
||||||
|
-->
|
||||||
|
</Project>
|
@ -108,6 +108,7 @@
|
|||||||
<Link>
|
<Link>
|
||||||
<SubSystem>Console</SubSystem>
|
<SubSystem>Console</SubSystem>
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
<StripPrivateSymbols>$(OutDir)$(TargetName).public.pdb</StripPrivateSymbols>
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
@ -124,6 +125,7 @@
|
|||||||
<Link>
|
<Link>
|
||||||
<SubSystem>Console</SubSystem>
|
<SubSystem>Console</SubSystem>
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
<StripPrivateSymbols>$(OutDir)$(TargetName).public.pdb</StripPrivateSymbols>
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
@ -144,6 +146,7 @@
|
|||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
|
<StripPrivateSymbols>$(OutDir)$(TargetName).public.pdb</StripPrivateSymbols>
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
@ -164,6 +167,7 @@
|
|||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
|
<StripPrivateSymbols>$(OutDir)$(TargetName).public.pdb</StripPrivateSymbols>
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
@ -107,7 +107,7 @@
|
|||||||
<Link>
|
<Link>
|
||||||
<SubSystem>Console</SubSystem>
|
<SubSystem>Console</SubSystem>
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
<AdditionalDependencies>ntdll.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
<AdditionalDependencies>ntdll.lib;netapi32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
@ -124,7 +124,7 @@
|
|||||||
<Link>
|
<Link>
|
||||||
<SubSystem>Console</SubSystem>
|
<SubSystem>Console</SubSystem>
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
<AdditionalDependencies>ntdll.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
<AdditionalDependencies>ntdll.lib;netapi32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
@ -145,7 +145,7 @@
|
|||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
<AdditionalDependencies>ntdll.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
<AdditionalDependencies>ntdll.lib;netapi32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
@ -166,7 +166,7 @@
|
|||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
<AdditionalDependencies>ntdll.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
<AdditionalDependencies>ntdll.lib;netapi32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
@ -182,30 +182,42 @@
|
|||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\tst\memfs\memfs.cpp" />
|
<ClCompile Include="..\..\..\tst\memfs\memfs.cpp" />
|
||||||
<ClCompile Include="..\..\..\tst\winfsp-tests\create-test.c" />
|
<ClCompile Include="..\..\..\tst\winfsp-tests\create-test.c" />
|
||||||
|
<ClCompile Include="..\..\..\tst\winfsp-tests\dirbuf-test.c" />
|
||||||
<ClCompile Include="..\..\..\tst\winfsp-tests\dirctl-test.c" />
|
<ClCompile Include="..\..\..\tst\winfsp-tests\dirctl-test.c" />
|
||||||
<ClCompile Include="..\..\..\tst\winfsp-tests\eventlog-test.c" />
|
<ClCompile Include="..\..\..\tst\winfsp-tests\eventlog-test.c" />
|
||||||
|
<ClCompile Include="..\..\..\tst\winfsp-tests\exec-test.c" />
|
||||||
<ClCompile Include="..\..\..\tst\winfsp-tests\flush-test.c" />
|
<ClCompile Include="..\..\..\tst\winfsp-tests\flush-test.c" />
|
||||||
<ClCompile Include="..\..\..\tst\winfsp-tests\fuse-opt-test.c" />
|
<ClCompile Include="..\..\..\tst\winfsp-tests\fuse-opt-test.c" />
|
||||||
|
<ClCompile Include="..\..\..\tst\winfsp-tests\hooks.c" />
|
||||||
<ClCompile Include="..\..\..\tst\winfsp-tests\info-test.c" />
|
<ClCompile Include="..\..\..\tst\winfsp-tests\info-test.c" />
|
||||||
<ClCompile Include="..\..\..\tst\winfsp-tests\lock-test.c" />
|
<ClCompile Include="..\..\..\tst\winfsp-tests\lock-test.c" />
|
||||||
<ClCompile Include="..\..\..\tst\winfsp-tests\memfs-test.c" />
|
<ClCompile Include="..\..\..\tst\winfsp-tests\memfs-test.c" />
|
||||||
<ClCompile Include="..\..\..\tst\winfsp-tests\mount-test.c" />
|
<ClCompile Include="..\..\..\tst\winfsp-tests\mount-test.c" />
|
||||||
|
<ClCompile Include="..\..\..\tst\winfsp-tests\oplock-test.c" />
|
||||||
<ClCompile Include="..\..\..\tst\winfsp-tests\path-test.c" />
|
<ClCompile Include="..\..\..\tst\winfsp-tests\path-test.c" />
|
||||||
<ClCompile Include="..\..\..\tst\winfsp-tests\posix-test.c" />
|
<ClCompile Include="..\..\..\tst\winfsp-tests\posix-test.c" />
|
||||||
<ClCompile Include="..\..\..\tst\winfsp-tests\rdwr-test.c" />
|
<ClCompile Include="..\..\..\tst\winfsp-tests\rdwr-test.c" />
|
||||||
|
<ClCompile Include="..\..\..\tst\winfsp-tests\reparse-test.c" />
|
||||||
|
<ClCompile Include="..\..\..\tst\winfsp-tests\resilient.c" />
|
||||||
<ClCompile Include="..\..\..\tst\winfsp-tests\security-test.c" />
|
<ClCompile Include="..\..\..\tst\winfsp-tests\security-test.c" />
|
||||||
|
<ClCompile Include="..\..\..\tst\winfsp-tests\stream-tests.c" />
|
||||||
<ClCompile Include="..\..\..\tst\winfsp-tests\timeout-test.c" />
|
<ClCompile Include="..\..\..\tst\winfsp-tests\timeout-test.c" />
|
||||||
|
<ClCompile Include="..\..\..\tst\winfsp-tests\version-test.c" />
|
||||||
<ClCompile Include="..\..\..\tst\winfsp-tests\winfsp-tests.c" />
|
<ClCompile Include="..\..\..\tst\winfsp-tests\winfsp-tests.c" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="..\..\..\ext\tlib\testsuite.h" />
|
<ClInclude Include="..\..\..\ext\tlib\testsuite.h" />
|
||||||
<ClInclude Include="..\..\..\tst\memfs\memfs.h" />
|
<ClInclude Include="..\..\..\tst\memfs\memfs.h" />
|
||||||
|
<ClInclude Include="..\..\..\tst\winfsp-tests\winfsp-tests.h" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\winfsp_dll.vcxproj">
|
<ProjectReference Include="..\winfsp_dll.vcxproj">
|
||||||
<Project>{4a7c0b21-9e10-4c81-92de-1493efcf24eb}</Project>
|
<Project>{4a7c0b21-9e10-4c81-92de-1493efcf24eb}</Project>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ResourceCompile Include="..\..\..\tst\winfsp-tests\helper\winfsp-tests-helper.rc" />
|
||||||
|
</ItemGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
<ImportGroup Label="ExtensionTargets">
|
<ImportGroup Label="ExtensionTargets">
|
||||||
</ImportGroup>
|
</ImportGroup>
|
||||||
|
@ -61,6 +61,30 @@
|
|||||||
<ClCompile Include="..\..\..\tst\winfsp-tests\posix-test.c">
|
<ClCompile Include="..\..\..\tst\winfsp-tests\posix-test.c">
|
||||||
<Filter>Source</Filter>
|
<Filter>Source</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\tst\winfsp-tests\reparse-test.c">
|
||||||
|
<Filter>Source</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\tst\winfsp-tests\stream-tests.c">
|
||||||
|
<Filter>Source</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\tst\winfsp-tests\resilient.c">
|
||||||
|
<Filter>Source</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\tst\winfsp-tests\hooks.c">
|
||||||
|
<Filter>Source</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\tst\winfsp-tests\oplock-test.c">
|
||||||
|
<Filter>Source</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\tst\winfsp-tests\dirbuf-test.c">
|
||||||
|
<Filter>Source</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\tst\winfsp-tests\exec-test.c">
|
||||||
|
<Filter>Source</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\tst\winfsp-tests\version-test.c">
|
||||||
|
<Filter>Source</Filter>
|
||||||
|
</ClCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="..\..\..\ext\tlib\testsuite.h">
|
<ClInclude Include="..\..\..\ext\tlib\testsuite.h">
|
||||||
@ -69,5 +93,13 @@
|
|||||||
<ClInclude Include="..\..\..\tst\memfs\memfs.h">
|
<ClInclude Include="..\..\..\tst\memfs\memfs.h">
|
||||||
<Filter>Source</Filter>
|
<Filter>Source</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\tst\winfsp-tests\winfsp-tests.h">
|
||||||
|
<Filter>Source</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ResourceCompile Include="..\..\..\tst\winfsp-tests\helper\winfsp-tests-helper.rc">
|
||||||
|
<Filter>Source</Filter>
|
||||||
|
</ResourceCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
193
build/VStudio/tools/fsptool.vcxproj
Normal file
@ -0,0 +1,193 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<Import Project="..\version.properties" />
|
||||||
|
<ItemGroup Label="ProjectConfigurations">
|
||||||
|
<ProjectConfiguration Include="Debug|Win32">
|
||||||
|
<Configuration>Debug</Configuration>
|
||||||
|
<Platform>Win32</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Release|Win32">
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>Win32</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Debug|x64">
|
||||||
|
<Configuration>Debug</Configuration>
|
||||||
|
<Platform>x64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Release|x64">
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>x64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
</ItemGroup>
|
||||||
|
<PropertyGroup Label="Globals">
|
||||||
|
<ProjectGuid>{1E997BEC-1642-4A5C-B252-852DA094E11E}</ProjectGuid>
|
||||||
|
<Keyword>Win32Proj</Keyword>
|
||||||
|
<RootNamespace>fsptool</RootNamespace>
|
||||||
|
<WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v140</PlatformToolset>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v140</PlatformToolset>
|
||||||
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v140</PlatformToolset>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v140</PlatformToolset>
|
||||||
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
|
<ImportGroup Label="ExtensionSettings">
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="Shared">
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<PropertyGroup Label="UserMacros" />
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
|
<LinkIncremental>true</LinkIncremental>
|
||||||
|
<OutDir>$(SolutionDir)build\$(Configuration)\</OutDir>
|
||||||
|
<IntDir>$(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(PlatformTarget)\</IntDir>
|
||||||
|
<TargetName>$(ProjectName)-$(PlatformTarget)</TargetName>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
|
<LinkIncremental>true</LinkIncremental>
|
||||||
|
<OutDir>$(SolutionDir)build\$(Configuration)\</OutDir>
|
||||||
|
<IntDir>$(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(PlatformTarget)\</IntDir>
|
||||||
|
<TargetName>$(ProjectName)-$(PlatformTarget)</TargetName>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
|
<LinkIncremental>false</LinkIncremental>
|
||||||
|
<OutDir>$(SolutionDir)build\$(Configuration)\</OutDir>
|
||||||
|
<IntDir>$(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(PlatformTarget)\</IntDir>
|
||||||
|
<TargetName>$(ProjectName)-$(PlatformTarget)</TargetName>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
|
<LinkIncremental>false</LinkIncremental>
|
||||||
|
<OutDir>$(SolutionDir)build\$(Configuration)\</OutDir>
|
||||||
|
<IntDir>$(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(PlatformTarget)\</IntDir>
|
||||||
|
<TargetName>$(ProjectName)-$(PlatformTarget)</TargetName>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
|
<ClCompile>
|
||||||
|
<PrecompiledHeader>
|
||||||
|
</PrecompiledHeader>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<Optimization>Disabled</Optimization>
|
||||||
|
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<AdditionalIncludeDirectories>..\..\..\src;..\..\..\inc</AdditionalIncludeDirectories>
|
||||||
|
<BasicRuntimeChecks>Default</BasicRuntimeChecks>
|
||||||
|
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||||
|
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
<IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
|
||||||
|
<StripPrivateSymbols>$(OutDir)$(TargetName).public.pdb</StripPrivateSymbols>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
|
<ClCompile>
|
||||||
|
<PrecompiledHeader>
|
||||||
|
</PrecompiledHeader>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<Optimization>Disabled</Optimization>
|
||||||
|
<PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<AdditionalIncludeDirectories>..\..\..\src;..\..\..\inc</AdditionalIncludeDirectories>
|
||||||
|
<BasicRuntimeChecks>Default</BasicRuntimeChecks>
|
||||||
|
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||||
|
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
<IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
|
||||||
|
<StripPrivateSymbols>$(OutDir)$(TargetName).public.pdb</StripPrivateSymbols>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
|
<ClCompile>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<PrecompiledHeader>
|
||||||
|
</PrecompiledHeader>
|
||||||
|
<Optimization>MaxSpeed</Optimization>
|
||||||
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
|
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||||
|
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<AdditionalIncludeDirectories>..\..\..\src;..\..\..\inc</AdditionalIncludeDirectories>
|
||||||
|
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||||
|
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
<IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
|
||||||
|
<StripPrivateSymbols>$(OutDir)$(TargetName).public.pdb</StripPrivateSymbols>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
|
<ClCompile>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<PrecompiledHeader>
|
||||||
|
</PrecompiledHeader>
|
||||||
|
<Optimization>MaxSpeed</Optimization>
|
||||||
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
|
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||||
|
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<AdditionalIncludeDirectories>..\..\..\src;..\..\..\inc</AdditionalIncludeDirectories>
|
||||||
|
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||||
|
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
<IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
|
||||||
|
<StripPrivateSymbols>$(OutDir)$(TargetName).public.pdb</StripPrivateSymbols>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\winfsp_dll.vcxproj">
|
||||||
|
<Project>{4a7c0b21-9e10-4c81-92de-1493efcf24eb}</Project>
|
||||||
|
</ProjectReference>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClCompile Include="..\..\..\src\fsptool\fsptool.c" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ResourceCompile Include="..\..\..\src\fsptool\fsptool-version.rc" />
|
||||||
|
</ItemGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
|
<ImportGroup Label="ExtensionTargets">
|
||||||
|
</ImportGroup>
|
||||||
|
</Project>
|
23
build/VStudio/tools/fsptool.vcxproj.filters
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<ItemGroup>
|
||||||
|
<Filter Include="Source">
|
||||||
|
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||||
|
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="Include">
|
||||||
|
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||||
|
<Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||||
|
</Filter>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClCompile Include="..\..\..\src\fsptool\fsptool.c">
|
||||||
|
<Filter>Source</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ResourceCompile Include="..\..\..\src\fsptool\fsptool-version.rc">
|
||||||
|
<Filter>Source</Filter>
|
||||||
|
</ResourceCompile>
|
||||||
|
</ItemGroup>
|
||||||
|
</Project>
|
@ -20,7 +20,7 @@
|
|||||||
</ProjectConfiguration>
|
</ProjectConfiguration>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<PropertyGroup Label="Globals">
|
<PropertyGroup Label="Globals">
|
||||||
<ProjectGuid>{73EAAEDA-557B-48D5-A137-328934720FB4}</ProjectGuid>
|
<ProjectGuid>{264A5D09-126F-4760-A3F1-4B3B95C925AA}</ProjectGuid>
|
||||||
<Keyword>Win32Proj</Keyword>
|
<Keyword>Win32Proj</Keyword>
|
||||||
<RootNamespace>launchctl</RootNamespace>
|
<RootNamespace>launchctl</RootNamespace>
|
||||||
<WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
|
<WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
|
||||||
@ -105,11 +105,14 @@
|
|||||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||||
<BasicRuntimeChecks>Default</BasicRuntimeChecks>
|
<BasicRuntimeChecks>Default</BasicRuntimeChecks>
|
||||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||||
|
<AdditionalOptions>
|
||||||
|
</AdditionalOptions>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<SubSystem>Console</SubSystem>
|
<SubSystem>Console</SubSystem>
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
<IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
|
<IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
|
||||||
|
<StripPrivateSymbols>$(OutDir)$(TargetName).public.pdb</StripPrivateSymbols>
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
@ -123,11 +126,14 @@
|
|||||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||||
<BasicRuntimeChecks>Default</BasicRuntimeChecks>
|
<BasicRuntimeChecks>Default</BasicRuntimeChecks>
|
||||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||||
|
<AdditionalOptions>
|
||||||
|
</AdditionalOptions>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<SubSystem>Console</SubSystem>
|
<SubSystem>Console</SubSystem>
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
<IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
|
<IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
|
||||||
|
<StripPrivateSymbols>$(OutDir)$(TargetName).public.pdb</StripPrivateSymbols>
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
@ -142,6 +148,8 @@
|
|||||||
<AdditionalIncludeDirectories>..\..\..\src;..\..\..\inc</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>..\..\..\src;..\..\..\inc</AdditionalIncludeDirectories>
|
||||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||||
|
<AdditionalOptions>
|
||||||
|
</AdditionalOptions>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<SubSystem>Console</SubSystem>
|
<SubSystem>Console</SubSystem>
|
||||||
@ -149,6 +157,7 @@
|
|||||||
<OptimizeReferences>true</OptimizeReferences>
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
<IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
|
<IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
|
||||||
|
<StripPrivateSymbols>$(OutDir)$(TargetName).public.pdb</StripPrivateSymbols>
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
@ -163,6 +172,8 @@
|
|||||||
<AdditionalIncludeDirectories>..\..\..\src;..\..\..\inc</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>..\..\..\src;..\..\..\inc</AdditionalIncludeDirectories>
|
||||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||||
|
<AdditionalOptions>
|
||||||
|
</AdditionalOptions>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<SubSystem>Console</SubSystem>
|
<SubSystem>Console</SubSystem>
|
||||||
@ -170,6 +181,7 @@
|
|||||||
<OptimizeReferences>true</OptimizeReferences>
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
<IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
|
<IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
|
||||||
|
<StripPrivateSymbols>$(OutDir)$(TargetName).public.pdb</StripPrivateSymbols>
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
@ -181,10 +193,10 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ResourceCompile Include="..\..\..\src\launcher\launchctl-version.rc">
|
<ResourceCompile Include="..\..\..\src\launcher\launchctl-version.rc">
|
||||||
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">_UNICODE;UNICODE;%(PreprocessorDefinitions);MyProductName=$(MyProductName);MyDescription=$(MyDescription);MyCompanyName=$(MyCompanyName);MyCopyright=$(MyCopyright);MyVersion=$(MyVersion);MyVersionWithCommas=$(MyVersionWithCommas)</PreprocessorDefinitions>
|
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">_UNICODE;UNICODE;%(PreprocessorDefinitions);MyProductName=$(MyProductName);MyDescription=$(MyDescription);MyCompanyName=$(MyCompanyName);MyCopyright=$(MyCopyright);MyVersion=$(MyVersion);MyVersionWithCommas=$(MyVersionWithCommas)</PreprocessorDefinitions>
|
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">_UNICODE;UNICODE;%(PreprocessorDefinitions);MyProductName=$(MyProductName);MyDescription=$(MyDescription);MyCompanyName=$(MyCompanyName);MyCopyright=$(MyCopyright);MyVersion=$(MyVersion);MyVersionWithCommas=$(MyVersionWithCommas)</PreprocessorDefinitions>
|
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">_UNICODE;UNICODE;%(PreprocessorDefinitions);MyProductName=$(MyProductName);MyDescription=$(MyDescription);MyCompanyName=$(MyCompanyName);MyCopyright=$(MyCopyright);MyVersion=$(MyVersion);MyVersionWithCommas=$(MyVersionWithCommas)</PreprocessorDefinitions>
|
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
</ResourceCompile>
|
</ResourceCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
@ -20,7 +20,7 @@
|
|||||||
</ProjectConfiguration>
|
</ProjectConfiguration>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<PropertyGroup Label="Globals">
|
<PropertyGroup Label="Globals">
|
||||||
<ProjectGuid>{A5EFD487-0140-4184-8C54-FFAEC2F85E35}</ProjectGuid>
|
<ProjectGuid>{6CDF9411-B852-4EAC-822D-8F930675F17B}</ProjectGuid>
|
||||||
<Keyword>Win32Proj</Keyword>
|
<Keyword>Win32Proj</Keyword>
|
||||||
<RootNamespace>launcher</RootNamespace>
|
<RootNamespace>launcher</RootNamespace>
|
||||||
<WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
|
<WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
|
||||||
@ -105,12 +105,15 @@
|
|||||||
<BasicRuntimeChecks>Default</BasicRuntimeChecks>
|
<BasicRuntimeChecks>Default</BasicRuntimeChecks>
|
||||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||||
|
<AdditionalOptions>
|
||||||
|
</AdditionalOptions>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<SubSystem>Console</SubSystem>
|
<SubSystem>Console</SubSystem>
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
<IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
|
<IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
|
||||||
<AdditionalDependencies>%(AdditionalDependencies);rpcrt4.lib</AdditionalDependencies>
|
<AdditionalDependencies>%(AdditionalDependencies);rpcrt4.lib</AdditionalDependencies>
|
||||||
|
<StripPrivateSymbols>$(OutDir)$(TargetName).public.pdb</StripPrivateSymbols>
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
@ -124,12 +127,15 @@
|
|||||||
<BasicRuntimeChecks>Default</BasicRuntimeChecks>
|
<BasicRuntimeChecks>Default</BasicRuntimeChecks>
|
||||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||||
|
<AdditionalOptions>
|
||||||
|
</AdditionalOptions>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<SubSystem>Console</SubSystem>
|
<SubSystem>Console</SubSystem>
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
<IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
|
<IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
|
||||||
<AdditionalDependencies>%(AdditionalDependencies);rpcrt4.lib</AdditionalDependencies>
|
<AdditionalDependencies>%(AdditionalDependencies);rpcrt4.lib</AdditionalDependencies>
|
||||||
|
<StripPrivateSymbols>$(OutDir)$(TargetName).public.pdb</StripPrivateSymbols>
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
@ -144,6 +150,8 @@
|
|||||||
<AdditionalIncludeDirectories>..\..\..\src;..\..\..\inc</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>..\..\..\src;..\..\..\inc</AdditionalIncludeDirectories>
|
||||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||||
|
<AdditionalOptions>
|
||||||
|
</AdditionalOptions>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<SubSystem>Console</SubSystem>
|
<SubSystem>Console</SubSystem>
|
||||||
@ -152,6 +160,7 @@
|
|||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
<IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
|
<IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
|
||||||
<AdditionalDependencies>%(AdditionalDependencies);rpcrt4.lib</AdditionalDependencies>
|
<AdditionalDependencies>%(AdditionalDependencies);rpcrt4.lib</AdditionalDependencies>
|
||||||
|
<StripPrivateSymbols>$(OutDir)$(TargetName).public.pdb</StripPrivateSymbols>
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
@ -166,6 +175,8 @@
|
|||||||
<AdditionalIncludeDirectories>..\..\..\src;..\..\..\inc</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>..\..\..\src;..\..\..\inc</AdditionalIncludeDirectories>
|
||||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||||
|
<AdditionalOptions>
|
||||||
|
</AdditionalOptions>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<SubSystem>Console</SubSystem>
|
<SubSystem>Console</SubSystem>
|
||||||
@ -174,6 +185,7 @@
|
|||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
<IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
|
<IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
|
||||||
<AdditionalDependencies>%(AdditionalDependencies);rpcrt4.lib</AdditionalDependencies>
|
<AdditionalDependencies>%(AdditionalDependencies);rpcrt4.lib</AdditionalDependencies>
|
||||||
|
<StripPrivateSymbols>$(OutDir)$(TargetName).public.pdb</StripPrivateSymbols>
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
@ -190,10 +202,10 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ResourceCompile Include="..\..\..\src\launcher\launcher-version.rc">
|
<ResourceCompile Include="..\..\..\src\launcher\launcher-version.rc">
|
||||||
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">_UNICODE;UNICODE;%(PreprocessorDefinitions);MyProductName=$(MyProductName);MyDescription=$(MyDescription);MyCompanyName=$(MyCompanyName);MyCopyright=$(MyCopyright);MyVersion=$(MyVersion);MyVersionWithCommas=$(MyVersionWithCommas)</PreprocessorDefinitions>
|
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">_UNICODE;UNICODE;%(PreprocessorDefinitions);MyProductName=$(MyProductName);MyDescription=$(MyDescription);MyCompanyName=$(MyCompanyName);MyCopyright=$(MyCopyright);MyVersion=$(MyVersion);MyVersionWithCommas=$(MyVersionWithCommas)</PreprocessorDefinitions>
|
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">_UNICODE;UNICODE;%(PreprocessorDefinitions);MyProductName=$(MyProductName);MyDescription=$(MyDescription);MyCompanyName=$(MyCompanyName);MyCopyright=$(MyCopyright);MyVersion=$(MyVersion);MyVersionWithCommas=$(MyVersionWithCommas)</PreprocessorDefinitions>
|
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">_UNICODE;UNICODE;%(PreprocessorDefinitions);MyProductName=$(MyProductName);MyDescription=$(MyDescription);MyCompanyName=$(MyCompanyName);MyCopyright=$(MyCopyright);MyVersion=$(MyVersion);MyVersionWithCommas=$(MyVersionWithCommas)</PreprocessorDefinitions>
|
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
</ResourceCompile>
|
</ResourceCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
@ -1,13 +1,40 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
|
<!-- build number: concat 2-digit year with 3-digit day of the year (16-bits until 2066) -->
|
||||||
|
<MyBuildNumber>$([System.DateTime]::Now.ToString(`yy`))$([System.DateTime]::Now.DayOfYear.ToString(`000`))</MyBuildNumber>
|
||||||
|
|
||||||
|
<!-- git revision -->
|
||||||
|
<MyGitRoot>$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), .git/HEAD))</MyGitRoot>
|
||||||
|
<MyGitHead>$([System.IO.File]::ReadAllText($(MyGitRoot)/.git/HEAD).Trim())</MyGitHead>
|
||||||
|
<MyGitRevision Condition="$(MyGitHead.StartsWith(ref: )) And Exists('$(MyGitRoot)/.git/$(MyGitHead.Substring(5))')">$([System.IO.File]::ReadAllText($(MyGitRoot)/.git/$(MyGitHead.Substring(5))).Trim().Substring(0, 7))</MyGitRevision>
|
||||||
|
<MyGitRevision Condition="$(MyGitHead.StartsWith(ref: )) And !Exists('$(MyGitRoot)/.git/$(MyGitHead.Substring(5))')">$([System.Text.RegularExpressions.Regex]::Match($([System.IO.File]::ReadAllText($(MyGitRoot)/.git/packed-refs)), '[0-9a-fA-F]{40,}.*$(MyGitHead.Substring(5))').Value.Substring(0, 7))</MyGitRevision>
|
||||||
|
<MyGitRevision Condition="!$(MyGitHead.StartsWith(ref: ))">$(MyGitHead.Substring(0, 7))</MyGitRevision>
|
||||||
|
|
||||||
<MyProductName>WinFsp</MyProductName>
|
<MyProductName>WinFsp</MyProductName>
|
||||||
<MyDescription>Windows File System Proxy</MyDescription>
|
<MyDescription>Windows File System Proxy</MyDescription>
|
||||||
<MyCompanyName>Navimatics Corporation</MyCompanyName>
|
<MyCompanyName>Navimatics Corporation</MyCompanyName>
|
||||||
<MyCopyright>2015-2016 Bill Zissimopoulos</MyCopyright>
|
<MyCopyright>2015-$([System.DateTime]::Now.ToString(`yyyy`)) Bill Zissimopoulos</MyCopyright>
|
||||||
<!-- build number: concat 2-digit year with 3-digit day of the year (16-bits until 2066) -->
|
|
||||||
<MyBuildNumber>$([System.DateTime]::Now.ToString(`yy`))$([System.DateTime]::Now.DayOfYear.ToString(`000`))</MyBuildNumber>
|
<MyCanonicalVersion>1.2</MyCanonicalVersion>
|
||||||
<MyVersion>0.14.$(MyBuildNumber)</MyVersion>
|
|
||||||
|
<MyProductVersion>2017.2 B3</MyProductVersion>
|
||||||
|
<MyProductStage>Beta</MyProductStage>
|
||||||
|
|
||||||
|
<MyVersion>$(MyCanonicalVersion).$(MyBuildNumber)</MyVersion>
|
||||||
<MyVersionWithCommas>$(MyVersion.Replace('.',',')),0</MyVersionWithCommas>
|
<MyVersionWithCommas>$(MyVersion.Replace('.',',')),0</MyVersionWithCommas>
|
||||||
|
<MyFullVersion>$(MyCanonicalVersion).$(MyBuildNumber).$(MyGitRevision)</MyFullVersion>
|
||||||
|
|
||||||
|
<MyAssemblyPolicyVersion>$(MyCanonicalVersion.Substring(0,$(MyVersion.IndexOf('.')))).0</MyAssemblyPolicyVersion>
|
||||||
|
<MyAssemblyVersion>$(MyAssemblyPolicyVersion).0.0</MyAssemblyVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemDefinitionGroup>
|
||||||
|
<ClCompile>
|
||||||
|
<PreprocessorDefinitions>NTDDI_VERSION=0x06010000;_WIN32_WINNT=0x0601</PreprocessorDefinitions>
|
||||||
|
</ClCompile>
|
||||||
|
<ResourceCompile>
|
||||||
|
<PreprocessorDefinitions>MyProductName=$(MyProductName);MyDescription=$(MyDescription);MyCompanyName=$(MyCompanyName);MyCopyright=$(MyCopyright);MyProductVersion=$(MyProductVersion);MyProductStage=$(MyProductStage);MyVersion=$(MyVersion);MyVersionWithCommas=$(MyVersionWithCommas);MyFullVersion=$(MyFullVersion)</PreprocessorDefinitions>
|
||||||
|
</ResourceCompile>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
</Project>
|
</Project>
|
@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
# Visual Studio 14
|
# Visual Studio 14
|
||||||
VisualStudioVersion = 14.0.25123.0
|
VisualStudioVersion = 14.0.25420.1
|
||||||
MinimumVisualStudioVersion = 10.0.40219.1
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "winfsp.dll", "winfsp_dll.vcxproj", "{4A7C0B21-9E10-4C81-92DE-1493EFCF24EB}"
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "winfsp.dll", "winfsp_dll.vcxproj", "{4A7C0B21-9E10-4C81-92DE-1493EFCF24EB}"
|
||||||
ProjectSection(ProjectDependencies) = postProject
|
ProjectSection(ProjectDependencies) = postProject
|
||||||
@ -32,127 +32,264 @@ Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "winfsp_msi", "installer\win
|
|||||||
EndProject
|
EndProject
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CustomActions", "installer\CustomActions\CustomActions.vcxproj", "{95C223E6-B5F1-4FD0-9376-41CDBC824445}"
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CustomActions", "installer\CustomActions\CustomActions.vcxproj", "{95C223E6-B5F1-4FD0-9376-41CDBC824445}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "launcher", "launcher", "{FD28A504-431E-49B9-BB8C-DCA0E7019F66}"
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fscrash", "testing\fscrash.vcxproj", "{10757011-749D-4954-873B-AE38D8145472}"
|
||||||
EndProject
|
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "launcher", "launcher\launcher.vcxproj", "{A5EFD487-0140-4184-8C54-FFAEC2F85E35}"
|
|
||||||
ProjectSection(ProjectDependencies) = postProject
|
ProjectSection(ProjectDependencies) = postProject
|
||||||
{4A7C0B21-9E10-4C81-92DE-1493EFCF24EB} = {4A7C0B21-9E10-4C81-92DE-1493EFCF24EB}
|
{4A7C0B21-9E10-4C81-92DE-1493EFCF24EB} = {4A7C0B21-9E10-4C81-92DE-1493EFCF24EB}
|
||||||
{C85C26BA-8C22-4D30-83DA-46C3548E6332} = {C85C26BA-8C22-4D30-83DA-46C3548E6332}
|
{C85C26BA-8C22-4D30-83DA-46C3548E6332} = {C85C26BA-8C22-4D30-83DA-46C3548E6332}
|
||||||
EndProjectSection
|
EndProjectSection
|
||||||
EndProject
|
EndProject
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "launchctl", "launcher\launchctl.vcxproj", "{73EAAEDA-557B-48D5-A137-328934720FB4}"
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fsbench", "testing\fsbench.vcxproj", "{C4E1E9E5-0959-488E-8C6A-C327CC81BEFB}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "winfsp.net", "dotnet\winfsp.net.csproj", "{94580219-CC8D-4FE5-A3BE-437B0B3481E1}"
|
||||||
ProjectSection(ProjectDependencies) = postProject
|
ProjectSection(ProjectDependencies) = postProject
|
||||||
{A5EFD487-0140-4184-8C54-FFAEC2F85E35} = {A5EFD487-0140-4184-8C54-FFAEC2F85E35}
|
{4A7C0B21-9E10-4C81-92DE-1493EFCF24EB} = {4A7C0B21-9E10-4C81-92DE-1493EFCF24EB}
|
||||||
|
{C85C26BA-8C22-4D30-83DA-46C3548E6332} = {C85C26BA-8C22-4D30-83DA-46C3548E6332}
|
||||||
EndProjectSection
|
EndProjectSection
|
||||||
EndProject
|
EndProject
|
||||||
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "dotnet", "dotnet", "{A998CEC4-4B34-43DC-8457-F7761228BA67}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "memfs-dotnet", "testing\memfs-dotnet.csproj", "{4920E350-D496-4652-AE98-6C4208AEC1D8}"
|
||||||
|
EndProject
|
||||||
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tools", "tools", "{04A4762C-FAB9-4196-9AC8-0757F3E8AB79}"
|
||||||
|
EndProject
|
||||||
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "launcher", "tools\launcher.vcxproj", "{6CDF9411-B852-4EAC-822D-8F930675F17B}"
|
||||||
|
EndProject
|
||||||
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "launchctl", "tools\launchctl.vcxproj", "{264A5D09-126F-4760-A3F1-4B3B95C925AA}"
|
||||||
|
EndProject
|
||||||
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fsptool", "tools\fsptool.vcxproj", "{1E997BEC-1642-4A5C-B252-852DA094E11E}"
|
||||||
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug|Any CPU = Debug|Any CPU
|
||||||
Debug|x64 = Debug|x64
|
Debug|x64 = Debug|x64
|
||||||
Debug|x86 = Debug|x86
|
Debug|x86 = Debug|x86
|
||||||
|
Installer.Debug|Any CPU = Installer.Debug|Any CPU
|
||||||
Installer.Debug|x64 = Installer.Debug|x64
|
Installer.Debug|x64 = Installer.Debug|x64
|
||||||
Installer.Debug|x86 = Installer.Debug|x86
|
Installer.Debug|x86 = Installer.Debug|x86
|
||||||
|
Installer.Release|Any CPU = Installer.Release|Any CPU
|
||||||
Installer.Release|x64 = Installer.Release|x64
|
Installer.Release|x64 = Installer.Release|x64
|
||||||
Installer.Release|x86 = Installer.Release|x86
|
Installer.Release|x86 = Installer.Release|x86
|
||||||
|
Release|Any CPU = Release|Any CPU
|
||||||
Release|x64 = Release|x64
|
Release|x64 = Release|x64
|
||||||
Release|x86 = Release|x86
|
Release|x86 = Release|x86
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{4A7C0B21-9E10-4C81-92DE-1493EFCF24EB}.Debug|Any CPU.ActiveCfg = Debug|Win32
|
||||||
{4A7C0B21-9E10-4C81-92DE-1493EFCF24EB}.Debug|x64.ActiveCfg = Debug|x64
|
{4A7C0B21-9E10-4C81-92DE-1493EFCF24EB}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
{4A7C0B21-9E10-4C81-92DE-1493EFCF24EB}.Debug|x64.Build.0 = Debug|x64
|
{4A7C0B21-9E10-4C81-92DE-1493EFCF24EB}.Debug|x64.Build.0 = Debug|x64
|
||||||
{4A7C0B21-9E10-4C81-92DE-1493EFCF24EB}.Debug|x86.ActiveCfg = Debug|Win32
|
{4A7C0B21-9E10-4C81-92DE-1493EFCF24EB}.Debug|x86.ActiveCfg = Debug|Win32
|
||||||
{4A7C0B21-9E10-4C81-92DE-1493EFCF24EB}.Debug|x86.Build.0 = Debug|Win32
|
{4A7C0B21-9E10-4C81-92DE-1493EFCF24EB}.Debug|x86.Build.0 = Debug|Win32
|
||||||
|
{4A7C0B21-9E10-4C81-92DE-1493EFCF24EB}.Installer.Debug|Any CPU.ActiveCfg = Release|Win32
|
||||||
{4A7C0B21-9E10-4C81-92DE-1493EFCF24EB}.Installer.Debug|x64.ActiveCfg = Debug|x64
|
{4A7C0B21-9E10-4C81-92DE-1493EFCF24EB}.Installer.Debug|x64.ActiveCfg = Debug|x64
|
||||||
{4A7C0B21-9E10-4C81-92DE-1493EFCF24EB}.Installer.Debug|x86.ActiveCfg = Debug|Win32
|
{4A7C0B21-9E10-4C81-92DE-1493EFCF24EB}.Installer.Debug|x86.ActiveCfg = Debug|Win32
|
||||||
|
{4A7C0B21-9E10-4C81-92DE-1493EFCF24EB}.Installer.Release|Any CPU.ActiveCfg = Release|Win32
|
||||||
{4A7C0B21-9E10-4C81-92DE-1493EFCF24EB}.Installer.Release|x64.ActiveCfg = Release|x64
|
{4A7C0B21-9E10-4C81-92DE-1493EFCF24EB}.Installer.Release|x64.ActiveCfg = Release|x64
|
||||||
{4A7C0B21-9E10-4C81-92DE-1493EFCF24EB}.Installer.Release|x86.ActiveCfg = Release|Win32
|
{4A7C0B21-9E10-4C81-92DE-1493EFCF24EB}.Installer.Release|x86.ActiveCfg = Release|Win32
|
||||||
|
{4A7C0B21-9E10-4C81-92DE-1493EFCF24EB}.Release|Any CPU.ActiveCfg = Release|Win32
|
||||||
{4A7C0B21-9E10-4C81-92DE-1493EFCF24EB}.Release|x64.ActiveCfg = Release|x64
|
{4A7C0B21-9E10-4C81-92DE-1493EFCF24EB}.Release|x64.ActiveCfg = Release|x64
|
||||||
{4A7C0B21-9E10-4C81-92DE-1493EFCF24EB}.Release|x64.Build.0 = Release|x64
|
{4A7C0B21-9E10-4C81-92DE-1493EFCF24EB}.Release|x64.Build.0 = Release|x64
|
||||||
{4A7C0B21-9E10-4C81-92DE-1493EFCF24EB}.Release|x86.ActiveCfg = Release|Win32
|
{4A7C0B21-9E10-4C81-92DE-1493EFCF24EB}.Release|x86.ActiveCfg = Release|Win32
|
||||||
{4A7C0B21-9E10-4C81-92DE-1493EFCF24EB}.Release|x86.Build.0 = Release|Win32
|
{4A7C0B21-9E10-4C81-92DE-1493EFCF24EB}.Release|x86.Build.0 = Release|Win32
|
||||||
|
{C85C26BA-8C22-4D30-83DA-46C3548E6332}.Debug|Any CPU.ActiveCfg = Debug|Win32
|
||||||
{C85C26BA-8C22-4D30-83DA-46C3548E6332}.Debug|x64.ActiveCfg = Debug|x64
|
{C85C26BA-8C22-4D30-83DA-46C3548E6332}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
{C85C26BA-8C22-4D30-83DA-46C3548E6332}.Debug|x64.Build.0 = Debug|x64
|
{C85C26BA-8C22-4D30-83DA-46C3548E6332}.Debug|x64.Build.0 = Debug|x64
|
||||||
{C85C26BA-8C22-4D30-83DA-46C3548E6332}.Debug|x86.ActiveCfg = Debug|Win32
|
{C85C26BA-8C22-4D30-83DA-46C3548E6332}.Debug|x86.ActiveCfg = Debug|Win32
|
||||||
{C85C26BA-8C22-4D30-83DA-46C3548E6332}.Debug|x86.Build.0 = Debug|Win32
|
{C85C26BA-8C22-4D30-83DA-46C3548E6332}.Debug|x86.Build.0 = Debug|Win32
|
||||||
|
{C85C26BA-8C22-4D30-83DA-46C3548E6332}.Installer.Debug|Any CPU.ActiveCfg = Release|Win32
|
||||||
{C85C26BA-8C22-4D30-83DA-46C3548E6332}.Installer.Debug|x64.ActiveCfg = Debug|x64
|
{C85C26BA-8C22-4D30-83DA-46C3548E6332}.Installer.Debug|x64.ActiveCfg = Debug|x64
|
||||||
{C85C26BA-8C22-4D30-83DA-46C3548E6332}.Installer.Debug|x86.ActiveCfg = Debug|Win32
|
{C85C26BA-8C22-4D30-83DA-46C3548E6332}.Installer.Debug|x86.ActiveCfg = Debug|Win32
|
||||||
|
{C85C26BA-8C22-4D30-83DA-46C3548E6332}.Installer.Release|Any CPU.ActiveCfg = Release|Win32
|
||||||
{C85C26BA-8C22-4D30-83DA-46C3548E6332}.Installer.Release|x64.ActiveCfg = Release|x64
|
{C85C26BA-8C22-4D30-83DA-46C3548E6332}.Installer.Release|x64.ActiveCfg = Release|x64
|
||||||
{C85C26BA-8C22-4D30-83DA-46C3548E6332}.Installer.Release|x86.ActiveCfg = Release|Win32
|
{C85C26BA-8C22-4D30-83DA-46C3548E6332}.Installer.Release|x86.ActiveCfg = Release|Win32
|
||||||
|
{C85C26BA-8C22-4D30-83DA-46C3548E6332}.Release|Any CPU.ActiveCfg = Release|Win32
|
||||||
{C85C26BA-8C22-4D30-83DA-46C3548E6332}.Release|x64.ActiveCfg = Release|x64
|
{C85C26BA-8C22-4D30-83DA-46C3548E6332}.Release|x64.ActiveCfg = Release|x64
|
||||||
{C85C26BA-8C22-4D30-83DA-46C3548E6332}.Release|x64.Build.0 = Release|x64
|
{C85C26BA-8C22-4D30-83DA-46C3548E6332}.Release|x64.Build.0 = Release|x64
|
||||||
{C85C26BA-8C22-4D30-83DA-46C3548E6332}.Release|x86.ActiveCfg = Release|Win32
|
{C85C26BA-8C22-4D30-83DA-46C3548E6332}.Release|x86.ActiveCfg = Release|Win32
|
||||||
{C85C26BA-8C22-4D30-83DA-46C3548E6332}.Release|x86.Build.0 = Release|Win32
|
{C85C26BA-8C22-4D30-83DA-46C3548E6332}.Release|x86.Build.0 = Release|Win32
|
||||||
|
{262DF8CC-E7A8-4460-A22C-683CBA322C32}.Debug|Any CPU.ActiveCfg = Debug|Win32
|
||||||
{262DF8CC-E7A8-4460-A22C-683CBA322C32}.Debug|x64.ActiveCfg = Debug|x64
|
{262DF8CC-E7A8-4460-A22C-683CBA322C32}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
{262DF8CC-E7A8-4460-A22C-683CBA322C32}.Debug|x64.Build.0 = Debug|x64
|
{262DF8CC-E7A8-4460-A22C-683CBA322C32}.Debug|x64.Build.0 = Debug|x64
|
||||||
{262DF8CC-E7A8-4460-A22C-683CBA322C32}.Debug|x86.ActiveCfg = Debug|Win32
|
{262DF8CC-E7A8-4460-A22C-683CBA322C32}.Debug|x86.ActiveCfg = Debug|Win32
|
||||||
{262DF8CC-E7A8-4460-A22C-683CBA322C32}.Debug|x86.Build.0 = Debug|Win32
|
{262DF8CC-E7A8-4460-A22C-683CBA322C32}.Debug|x86.Build.0 = Debug|Win32
|
||||||
|
{262DF8CC-E7A8-4460-A22C-683CBA322C32}.Installer.Debug|Any CPU.ActiveCfg = Release|Win32
|
||||||
{262DF8CC-E7A8-4460-A22C-683CBA322C32}.Installer.Debug|x64.ActiveCfg = Debug|x64
|
{262DF8CC-E7A8-4460-A22C-683CBA322C32}.Installer.Debug|x64.ActiveCfg = Debug|x64
|
||||||
{262DF8CC-E7A8-4460-A22C-683CBA322C32}.Installer.Debug|x86.ActiveCfg = Debug|Win32
|
{262DF8CC-E7A8-4460-A22C-683CBA322C32}.Installer.Debug|x86.ActiveCfg = Debug|Win32
|
||||||
|
{262DF8CC-E7A8-4460-A22C-683CBA322C32}.Installer.Release|Any CPU.ActiveCfg = Release|Win32
|
||||||
{262DF8CC-E7A8-4460-A22C-683CBA322C32}.Installer.Release|x64.ActiveCfg = Release|x64
|
{262DF8CC-E7A8-4460-A22C-683CBA322C32}.Installer.Release|x64.ActiveCfg = Release|x64
|
||||||
{262DF8CC-E7A8-4460-A22C-683CBA322C32}.Installer.Release|x86.ActiveCfg = Release|Win32
|
{262DF8CC-E7A8-4460-A22C-683CBA322C32}.Installer.Release|x86.ActiveCfg = Release|Win32
|
||||||
|
{262DF8CC-E7A8-4460-A22C-683CBA322C32}.Release|Any CPU.ActiveCfg = Release|Win32
|
||||||
{262DF8CC-E7A8-4460-A22C-683CBA322C32}.Release|x64.ActiveCfg = Release|x64
|
{262DF8CC-E7A8-4460-A22C-683CBA322C32}.Release|x64.ActiveCfg = Release|x64
|
||||||
{262DF8CC-E7A8-4460-A22C-683CBA322C32}.Release|x64.Build.0 = Release|x64
|
{262DF8CC-E7A8-4460-A22C-683CBA322C32}.Release|x64.Build.0 = Release|x64
|
||||||
{262DF8CC-E7A8-4460-A22C-683CBA322C32}.Release|x86.ActiveCfg = Release|Win32
|
{262DF8CC-E7A8-4460-A22C-683CBA322C32}.Release|x86.ActiveCfg = Release|Win32
|
||||||
{262DF8CC-E7A8-4460-A22C-683CBA322C32}.Release|x86.Build.0 = Release|Win32
|
{262DF8CC-E7A8-4460-A22C-683CBA322C32}.Release|x86.Build.0 = Release|Win32
|
||||||
|
{AA7190E8-877F-4827-8CDD-E0D85F83C8C1}.Debug|Any CPU.ActiveCfg = Debug|Win32
|
||||||
{AA7190E8-877F-4827-8CDD-E0D85F83C8C1}.Debug|x64.ActiveCfg = Debug|x64
|
{AA7190E8-877F-4827-8CDD-E0D85F83C8C1}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
{AA7190E8-877F-4827-8CDD-E0D85F83C8C1}.Debug|x64.Build.0 = Debug|x64
|
{AA7190E8-877F-4827-8CDD-E0D85F83C8C1}.Debug|x64.Build.0 = Debug|x64
|
||||||
{AA7190E8-877F-4827-8CDD-E0D85F83C8C1}.Debug|x86.ActiveCfg = Debug|Win32
|
{AA7190E8-877F-4827-8CDD-E0D85F83C8C1}.Debug|x86.ActiveCfg = Debug|Win32
|
||||||
{AA7190E8-877F-4827-8CDD-E0D85F83C8C1}.Debug|x86.Build.0 = Debug|Win32
|
{AA7190E8-877F-4827-8CDD-E0D85F83C8C1}.Debug|x86.Build.0 = Debug|Win32
|
||||||
|
{AA7190E8-877F-4827-8CDD-E0D85F83C8C1}.Installer.Debug|Any CPU.ActiveCfg = Release|Win32
|
||||||
{AA7190E8-877F-4827-8CDD-E0D85F83C8C1}.Installer.Debug|x64.ActiveCfg = Debug|x64
|
{AA7190E8-877F-4827-8CDD-E0D85F83C8C1}.Installer.Debug|x64.ActiveCfg = Debug|x64
|
||||||
{AA7190E8-877F-4827-8CDD-E0D85F83C8C1}.Installer.Debug|x86.ActiveCfg = Debug|Win32
|
{AA7190E8-877F-4827-8CDD-E0D85F83C8C1}.Installer.Debug|x86.ActiveCfg = Debug|Win32
|
||||||
|
{AA7190E8-877F-4827-8CDD-E0D85F83C8C1}.Installer.Release|Any CPU.ActiveCfg = Release|Win32
|
||||||
{AA7190E8-877F-4827-8CDD-E0D85F83C8C1}.Installer.Release|x64.ActiveCfg = Release|x64
|
{AA7190E8-877F-4827-8CDD-E0D85F83C8C1}.Installer.Release|x64.ActiveCfg = Release|x64
|
||||||
{AA7190E8-877F-4827-8CDD-E0D85F83C8C1}.Installer.Release|x86.ActiveCfg = Release|Win32
|
{AA7190E8-877F-4827-8CDD-E0D85F83C8C1}.Installer.Release|x86.ActiveCfg = Release|Win32
|
||||||
|
{AA7190E8-877F-4827-8CDD-E0D85F83C8C1}.Release|Any CPU.ActiveCfg = Release|Win32
|
||||||
{AA7190E8-877F-4827-8CDD-E0D85F83C8C1}.Release|x64.ActiveCfg = Release|x64
|
{AA7190E8-877F-4827-8CDD-E0D85F83C8C1}.Release|x64.ActiveCfg = Release|x64
|
||||||
{AA7190E8-877F-4827-8CDD-E0D85F83C8C1}.Release|x64.Build.0 = Release|x64
|
{AA7190E8-877F-4827-8CDD-E0D85F83C8C1}.Release|x64.Build.0 = Release|x64
|
||||||
{AA7190E8-877F-4827-8CDD-E0D85F83C8C1}.Release|x86.ActiveCfg = Release|Win32
|
{AA7190E8-877F-4827-8CDD-E0D85F83C8C1}.Release|x86.ActiveCfg = Release|Win32
|
||||||
{AA7190E8-877F-4827-8CDD-E0D85F83C8C1}.Release|x86.Build.0 = Release|Win32
|
{AA7190E8-877F-4827-8CDD-E0D85F83C8C1}.Release|x86.Build.0 = Release|Win32
|
||||||
|
{D53AAC39-4C57-4CA5-A4F3-C2B24888C594}.Debug|Any CPU.ActiveCfg = Debug|x86
|
||||||
{D53AAC39-4C57-4CA5-A4F3-C2B24888C594}.Debug|x64.ActiveCfg = Debug|x86
|
{D53AAC39-4C57-4CA5-A4F3-C2B24888C594}.Debug|x64.ActiveCfg = Debug|x86
|
||||||
{D53AAC39-4C57-4CA5-A4F3-C2B24888C594}.Debug|x86.ActiveCfg = Debug|x86
|
{D53AAC39-4C57-4CA5-A4F3-C2B24888C594}.Debug|x86.ActiveCfg = Debug|x86
|
||||||
|
{D53AAC39-4C57-4CA5-A4F3-C2B24888C594}.Installer.Debug|Any CPU.ActiveCfg = Release|x86
|
||||||
|
{D53AAC39-4C57-4CA5-A4F3-C2B24888C594}.Installer.Debug|Any CPU.Build.0 = Release|x86
|
||||||
{D53AAC39-4C57-4CA5-A4F3-C2B24888C594}.Installer.Debug|x64.ActiveCfg = Release|x86
|
{D53AAC39-4C57-4CA5-A4F3-C2B24888C594}.Installer.Debug|x64.ActiveCfg = Release|x86
|
||||||
{D53AAC39-4C57-4CA5-A4F3-C2B24888C594}.Installer.Debug|x64.Build.0 = Release|x86
|
{D53AAC39-4C57-4CA5-A4F3-C2B24888C594}.Installer.Debug|x64.Build.0 = Release|x86
|
||||||
{D53AAC39-4C57-4CA5-A4F3-C2B24888C594}.Installer.Debug|x86.ActiveCfg = Debug|x86
|
{D53AAC39-4C57-4CA5-A4F3-C2B24888C594}.Installer.Debug|x86.ActiveCfg = Debug|x86
|
||||||
{D53AAC39-4C57-4CA5-A4F3-C2B24888C594}.Installer.Debug|x86.Build.0 = Debug|x86
|
{D53AAC39-4C57-4CA5-A4F3-C2B24888C594}.Installer.Debug|x86.Build.0 = Debug|x86
|
||||||
|
{D53AAC39-4C57-4CA5-A4F3-C2B24888C594}.Installer.Release|Any CPU.ActiveCfg = Release|x86
|
||||||
|
{D53AAC39-4C57-4CA5-A4F3-C2B24888C594}.Installer.Release|Any CPU.Build.0 = Release|x86
|
||||||
{D53AAC39-4C57-4CA5-A4F3-C2B24888C594}.Installer.Release|x64.ActiveCfg = Release|x86
|
{D53AAC39-4C57-4CA5-A4F3-C2B24888C594}.Installer.Release|x64.ActiveCfg = Release|x86
|
||||||
{D53AAC39-4C57-4CA5-A4F3-C2B24888C594}.Installer.Release|x64.Build.0 = Release|x86
|
{D53AAC39-4C57-4CA5-A4F3-C2B24888C594}.Installer.Release|x64.Build.0 = Release|x86
|
||||||
{D53AAC39-4C57-4CA5-A4F3-C2B24888C594}.Installer.Release|x86.ActiveCfg = Release|x86
|
{D53AAC39-4C57-4CA5-A4F3-C2B24888C594}.Installer.Release|x86.ActiveCfg = Release|x86
|
||||||
{D53AAC39-4C57-4CA5-A4F3-C2B24888C594}.Installer.Release|x86.Build.0 = Release|x86
|
{D53AAC39-4C57-4CA5-A4F3-C2B24888C594}.Installer.Release|x86.Build.0 = Release|x86
|
||||||
|
{D53AAC39-4C57-4CA5-A4F3-C2B24888C594}.Release|Any CPU.ActiveCfg = Release|x86
|
||||||
{D53AAC39-4C57-4CA5-A4F3-C2B24888C594}.Release|x64.ActiveCfg = Release|x86
|
{D53AAC39-4C57-4CA5-A4F3-C2B24888C594}.Release|x64.ActiveCfg = Release|x86
|
||||||
{D53AAC39-4C57-4CA5-A4F3-C2B24888C594}.Release|x86.ActiveCfg = Release|x86
|
{D53AAC39-4C57-4CA5-A4F3-C2B24888C594}.Release|x86.ActiveCfg = Release|x86
|
||||||
|
{95C223E6-B5F1-4FD0-9376-41CDBC824445}.Debug|Any CPU.ActiveCfg = Debug|Win32
|
||||||
{95C223E6-B5F1-4FD0-9376-41CDBC824445}.Debug|x64.ActiveCfg = Debug|Win32
|
{95C223E6-B5F1-4FD0-9376-41CDBC824445}.Debug|x64.ActiveCfg = Debug|Win32
|
||||||
{95C223E6-B5F1-4FD0-9376-41CDBC824445}.Debug|x86.ActiveCfg = Debug|Win32
|
{95C223E6-B5F1-4FD0-9376-41CDBC824445}.Debug|x86.ActiveCfg = Debug|Win32
|
||||||
|
{95C223E6-B5F1-4FD0-9376-41CDBC824445}.Installer.Debug|Any CPU.ActiveCfg = Release|Win32
|
||||||
|
{95C223E6-B5F1-4FD0-9376-41CDBC824445}.Installer.Debug|Any CPU.Build.0 = Release|Win32
|
||||||
{95C223E6-B5F1-4FD0-9376-41CDBC824445}.Installer.Debug|x64.ActiveCfg = Release|Win32
|
{95C223E6-B5F1-4FD0-9376-41CDBC824445}.Installer.Debug|x64.ActiveCfg = Release|Win32
|
||||||
{95C223E6-B5F1-4FD0-9376-41CDBC824445}.Installer.Debug|x64.Build.0 = Release|Win32
|
{95C223E6-B5F1-4FD0-9376-41CDBC824445}.Installer.Debug|x64.Build.0 = Release|Win32
|
||||||
{95C223E6-B5F1-4FD0-9376-41CDBC824445}.Installer.Debug|x86.ActiveCfg = Debug|Win32
|
{95C223E6-B5F1-4FD0-9376-41CDBC824445}.Installer.Debug|x86.ActiveCfg = Debug|Win32
|
||||||
{95C223E6-B5F1-4FD0-9376-41CDBC824445}.Installer.Debug|x86.Build.0 = Debug|Win32
|
{95C223E6-B5F1-4FD0-9376-41CDBC824445}.Installer.Debug|x86.Build.0 = Debug|Win32
|
||||||
|
{95C223E6-B5F1-4FD0-9376-41CDBC824445}.Installer.Release|Any CPU.ActiveCfg = Release|Win32
|
||||||
|
{95C223E6-B5F1-4FD0-9376-41CDBC824445}.Installer.Release|Any CPU.Build.0 = Release|Win32
|
||||||
{95C223E6-B5F1-4FD0-9376-41CDBC824445}.Installer.Release|x64.ActiveCfg = Release|Win32
|
{95C223E6-B5F1-4FD0-9376-41CDBC824445}.Installer.Release|x64.ActiveCfg = Release|Win32
|
||||||
{95C223E6-B5F1-4FD0-9376-41CDBC824445}.Installer.Release|x64.Build.0 = Release|Win32
|
{95C223E6-B5F1-4FD0-9376-41CDBC824445}.Installer.Release|x64.Build.0 = Release|Win32
|
||||||
{95C223E6-B5F1-4FD0-9376-41CDBC824445}.Installer.Release|x86.ActiveCfg = Release|Win32
|
{95C223E6-B5F1-4FD0-9376-41CDBC824445}.Installer.Release|x86.ActiveCfg = Release|Win32
|
||||||
{95C223E6-B5F1-4FD0-9376-41CDBC824445}.Installer.Release|x86.Build.0 = Release|Win32
|
{95C223E6-B5F1-4FD0-9376-41CDBC824445}.Installer.Release|x86.Build.0 = Release|Win32
|
||||||
|
{95C223E6-B5F1-4FD0-9376-41CDBC824445}.Release|Any CPU.ActiveCfg = Release|Win32
|
||||||
{95C223E6-B5F1-4FD0-9376-41CDBC824445}.Release|x64.ActiveCfg = Release|Win32
|
{95C223E6-B5F1-4FD0-9376-41CDBC824445}.Release|x64.ActiveCfg = Release|Win32
|
||||||
{95C223E6-B5F1-4FD0-9376-41CDBC824445}.Release|x86.ActiveCfg = Release|Win32
|
{95C223E6-B5F1-4FD0-9376-41CDBC824445}.Release|x86.ActiveCfg = Release|Win32
|
||||||
{A5EFD487-0140-4184-8C54-FFAEC2F85E35}.Debug|x64.ActiveCfg = Debug|x64
|
{10757011-749D-4954-873B-AE38D8145472}.Debug|Any CPU.ActiveCfg = Debug|Win32
|
||||||
{A5EFD487-0140-4184-8C54-FFAEC2F85E35}.Debug|x64.Build.0 = Debug|x64
|
{10757011-749D-4954-873B-AE38D8145472}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
{A5EFD487-0140-4184-8C54-FFAEC2F85E35}.Debug|x86.ActiveCfg = Debug|Win32
|
{10757011-749D-4954-873B-AE38D8145472}.Debug|x64.Build.0 = Debug|x64
|
||||||
{A5EFD487-0140-4184-8C54-FFAEC2F85E35}.Debug|x86.Build.0 = Debug|Win32
|
{10757011-749D-4954-873B-AE38D8145472}.Debug|x86.ActiveCfg = Debug|Win32
|
||||||
{A5EFD487-0140-4184-8C54-FFAEC2F85E35}.Installer.Debug|x64.ActiveCfg = Debug|x64
|
{10757011-749D-4954-873B-AE38D8145472}.Debug|x86.Build.0 = Debug|Win32
|
||||||
{A5EFD487-0140-4184-8C54-FFAEC2F85E35}.Installer.Debug|x86.ActiveCfg = Debug|Win32
|
{10757011-749D-4954-873B-AE38D8145472}.Installer.Debug|Any CPU.ActiveCfg = Release|Win32
|
||||||
{A5EFD487-0140-4184-8C54-FFAEC2F85E35}.Installer.Release|x64.ActiveCfg = Release|x64
|
{10757011-749D-4954-873B-AE38D8145472}.Installer.Debug|x64.ActiveCfg = Debug|x64
|
||||||
{A5EFD487-0140-4184-8C54-FFAEC2F85E35}.Installer.Release|x86.ActiveCfg = Release|Win32
|
{10757011-749D-4954-873B-AE38D8145472}.Installer.Debug|x86.ActiveCfg = Debug|Win32
|
||||||
{A5EFD487-0140-4184-8C54-FFAEC2F85E35}.Release|x64.ActiveCfg = Release|x64
|
{10757011-749D-4954-873B-AE38D8145472}.Installer.Release|Any CPU.ActiveCfg = Release|Win32
|
||||||
{A5EFD487-0140-4184-8C54-FFAEC2F85E35}.Release|x64.Build.0 = Release|x64
|
{10757011-749D-4954-873B-AE38D8145472}.Installer.Release|x64.ActiveCfg = Release|x64
|
||||||
{A5EFD487-0140-4184-8C54-FFAEC2F85E35}.Release|x86.ActiveCfg = Release|Win32
|
{10757011-749D-4954-873B-AE38D8145472}.Installer.Release|x86.ActiveCfg = Release|Win32
|
||||||
{A5EFD487-0140-4184-8C54-FFAEC2F85E35}.Release|x86.Build.0 = Release|Win32
|
{10757011-749D-4954-873B-AE38D8145472}.Release|Any CPU.ActiveCfg = Release|Win32
|
||||||
{73EAAEDA-557B-48D5-A137-328934720FB4}.Debug|x64.ActiveCfg = Debug|x64
|
{10757011-749D-4954-873B-AE38D8145472}.Release|x64.ActiveCfg = Release|x64
|
||||||
{73EAAEDA-557B-48D5-A137-328934720FB4}.Debug|x64.Build.0 = Debug|x64
|
{10757011-749D-4954-873B-AE38D8145472}.Release|x64.Build.0 = Release|x64
|
||||||
{73EAAEDA-557B-48D5-A137-328934720FB4}.Debug|x86.ActiveCfg = Debug|Win32
|
{10757011-749D-4954-873B-AE38D8145472}.Release|x86.ActiveCfg = Release|Win32
|
||||||
{73EAAEDA-557B-48D5-A137-328934720FB4}.Debug|x86.Build.0 = Debug|Win32
|
{10757011-749D-4954-873B-AE38D8145472}.Release|x86.Build.0 = Release|Win32
|
||||||
{73EAAEDA-557B-48D5-A137-328934720FB4}.Installer.Debug|x64.ActiveCfg = Debug|x64
|
{C4E1E9E5-0959-488E-8C6A-C327CC81BEFB}.Debug|Any CPU.ActiveCfg = Debug|Win32
|
||||||
{73EAAEDA-557B-48D5-A137-328934720FB4}.Installer.Debug|x86.ActiveCfg = Debug|Win32
|
{C4E1E9E5-0959-488E-8C6A-C327CC81BEFB}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
{73EAAEDA-557B-48D5-A137-328934720FB4}.Installer.Release|x64.ActiveCfg = Release|x64
|
{C4E1E9E5-0959-488E-8C6A-C327CC81BEFB}.Debug|x64.Build.0 = Debug|x64
|
||||||
{73EAAEDA-557B-48D5-A137-328934720FB4}.Installer.Release|x86.ActiveCfg = Release|Win32
|
{C4E1E9E5-0959-488E-8C6A-C327CC81BEFB}.Debug|x86.ActiveCfg = Debug|Win32
|
||||||
{73EAAEDA-557B-48D5-A137-328934720FB4}.Release|x64.ActiveCfg = Release|x64
|
{C4E1E9E5-0959-488E-8C6A-C327CC81BEFB}.Debug|x86.Build.0 = Debug|Win32
|
||||||
{73EAAEDA-557B-48D5-A137-328934720FB4}.Release|x64.Build.0 = Release|x64
|
{C4E1E9E5-0959-488E-8C6A-C327CC81BEFB}.Installer.Debug|Any CPU.ActiveCfg = Release|Win32
|
||||||
{73EAAEDA-557B-48D5-A137-328934720FB4}.Release|x86.ActiveCfg = Release|Win32
|
{C4E1E9E5-0959-488E-8C6A-C327CC81BEFB}.Installer.Debug|x64.ActiveCfg = Debug|x64
|
||||||
{73EAAEDA-557B-48D5-A137-328934720FB4}.Release|x86.Build.0 = Release|Win32
|
{C4E1E9E5-0959-488E-8C6A-C327CC81BEFB}.Installer.Debug|x86.ActiveCfg = Debug|Win32
|
||||||
|
{C4E1E9E5-0959-488E-8C6A-C327CC81BEFB}.Installer.Release|Any CPU.ActiveCfg = Release|Win32
|
||||||
|
{C4E1E9E5-0959-488E-8C6A-C327CC81BEFB}.Installer.Release|x64.ActiveCfg = Release|x64
|
||||||
|
{C4E1E9E5-0959-488E-8C6A-C327CC81BEFB}.Installer.Release|x86.ActiveCfg = Release|Win32
|
||||||
|
{C4E1E9E5-0959-488E-8C6A-C327CC81BEFB}.Release|Any CPU.ActiveCfg = Release|Win32
|
||||||
|
{C4E1E9E5-0959-488E-8C6A-C327CC81BEFB}.Release|x64.ActiveCfg = Release|x64
|
||||||
|
{C4E1E9E5-0959-488E-8C6A-C327CC81BEFB}.Release|x64.Build.0 = Release|x64
|
||||||
|
{C4E1E9E5-0959-488E-8C6A-C327CC81BEFB}.Release|x86.ActiveCfg = Release|Win32
|
||||||
|
{C4E1E9E5-0959-488E-8C6A-C327CC81BEFB}.Release|x86.Build.0 = Release|Win32
|
||||||
|
{94580219-CC8D-4FE5-A3BE-437B0B3481E1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{94580219-CC8D-4FE5-A3BE-437B0B3481E1}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{94580219-CC8D-4FE5-A3BE-437B0B3481E1}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
|
{94580219-CC8D-4FE5-A3BE-437B0B3481E1}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
|
{94580219-CC8D-4FE5-A3BE-437B0B3481E1}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||||
|
{94580219-CC8D-4FE5-A3BE-437B0B3481E1}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
|
{94580219-CC8D-4FE5-A3BE-437B0B3481E1}.Installer.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{94580219-CC8D-4FE5-A3BE-437B0B3481E1}.Installer.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
|
{94580219-CC8D-4FE5-A3BE-437B0B3481E1}.Installer.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||||
|
{94580219-CC8D-4FE5-A3BE-437B0B3481E1}.Installer.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{94580219-CC8D-4FE5-A3BE-437B0B3481E1}.Installer.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
|
{94580219-CC8D-4FE5-A3BE-437B0B3481E1}.Installer.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
|
{94580219-CC8D-4FE5-A3BE-437B0B3481E1}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{94580219-CC8D-4FE5-A3BE-437B0B3481E1}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{94580219-CC8D-4FE5-A3BE-437B0B3481E1}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
|
{94580219-CC8D-4FE5-A3BE-437B0B3481E1}.Release|x64.Build.0 = Release|Any CPU
|
||||||
|
{94580219-CC8D-4FE5-A3BE-437B0B3481E1}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
|
{94580219-CC8D-4FE5-A3BE-437B0B3481E1}.Release|x86.Build.0 = Release|Any CPU
|
||||||
|
{4920E350-D496-4652-AE98-6C4208AEC1D8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{4920E350-D496-4652-AE98-6C4208AEC1D8}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{4920E350-D496-4652-AE98-6C4208AEC1D8}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
|
{4920E350-D496-4652-AE98-6C4208AEC1D8}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
|
{4920E350-D496-4652-AE98-6C4208AEC1D8}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||||
|
{4920E350-D496-4652-AE98-6C4208AEC1D8}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
|
{4920E350-D496-4652-AE98-6C4208AEC1D8}.Installer.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{4920E350-D496-4652-AE98-6C4208AEC1D8}.Installer.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
|
{4920E350-D496-4652-AE98-6C4208AEC1D8}.Installer.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||||
|
{4920E350-D496-4652-AE98-6C4208AEC1D8}.Installer.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{4920E350-D496-4652-AE98-6C4208AEC1D8}.Installer.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
|
{4920E350-D496-4652-AE98-6C4208AEC1D8}.Installer.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
|
{4920E350-D496-4652-AE98-6C4208AEC1D8}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{4920E350-D496-4652-AE98-6C4208AEC1D8}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{4920E350-D496-4652-AE98-6C4208AEC1D8}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
|
{4920E350-D496-4652-AE98-6C4208AEC1D8}.Release|x64.Build.0 = Release|Any CPU
|
||||||
|
{4920E350-D496-4652-AE98-6C4208AEC1D8}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
|
{4920E350-D496-4652-AE98-6C4208AEC1D8}.Release|x86.Build.0 = Release|Any CPU
|
||||||
|
{6CDF9411-B852-4EAC-822D-8F930675F17B}.Debug|Any CPU.ActiveCfg = Debug|Win32
|
||||||
|
{6CDF9411-B852-4EAC-822D-8F930675F17B}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
|
{6CDF9411-B852-4EAC-822D-8F930675F17B}.Debug|x64.Build.0 = Debug|x64
|
||||||
|
{6CDF9411-B852-4EAC-822D-8F930675F17B}.Debug|x86.ActiveCfg = Debug|Win32
|
||||||
|
{6CDF9411-B852-4EAC-822D-8F930675F17B}.Debug|x86.Build.0 = Debug|Win32
|
||||||
|
{6CDF9411-B852-4EAC-822D-8F930675F17B}.Installer.Debug|Any CPU.ActiveCfg = Release|x64
|
||||||
|
{6CDF9411-B852-4EAC-822D-8F930675F17B}.Installer.Debug|x64.ActiveCfg = Debug|x64
|
||||||
|
{6CDF9411-B852-4EAC-822D-8F930675F17B}.Installer.Debug|x86.ActiveCfg = Debug|Win32
|
||||||
|
{6CDF9411-B852-4EAC-822D-8F930675F17B}.Installer.Release|Any CPU.ActiveCfg = Release|x64
|
||||||
|
{6CDF9411-B852-4EAC-822D-8F930675F17B}.Installer.Release|x64.ActiveCfg = Release|x64
|
||||||
|
{6CDF9411-B852-4EAC-822D-8F930675F17B}.Installer.Release|x86.ActiveCfg = Release|Win32
|
||||||
|
{6CDF9411-B852-4EAC-822D-8F930675F17B}.Release|Any CPU.ActiveCfg = Release|Win32
|
||||||
|
{6CDF9411-B852-4EAC-822D-8F930675F17B}.Release|x64.ActiveCfg = Release|x64
|
||||||
|
{6CDF9411-B852-4EAC-822D-8F930675F17B}.Release|x64.Build.0 = Release|x64
|
||||||
|
{6CDF9411-B852-4EAC-822D-8F930675F17B}.Release|x86.ActiveCfg = Release|Win32
|
||||||
|
{6CDF9411-B852-4EAC-822D-8F930675F17B}.Release|x86.Build.0 = Release|Win32
|
||||||
|
{264A5D09-126F-4760-A3F1-4B3B95C925AA}.Debug|Any CPU.ActiveCfg = Debug|Win32
|
||||||
|
{264A5D09-126F-4760-A3F1-4B3B95C925AA}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
|
{264A5D09-126F-4760-A3F1-4B3B95C925AA}.Debug|x64.Build.0 = Debug|x64
|
||||||
|
{264A5D09-126F-4760-A3F1-4B3B95C925AA}.Debug|x86.ActiveCfg = Debug|Win32
|
||||||
|
{264A5D09-126F-4760-A3F1-4B3B95C925AA}.Debug|x86.Build.0 = Debug|Win32
|
||||||
|
{264A5D09-126F-4760-A3F1-4B3B95C925AA}.Installer.Debug|Any CPU.ActiveCfg = Release|x64
|
||||||
|
{264A5D09-126F-4760-A3F1-4B3B95C925AA}.Installer.Debug|x64.ActiveCfg = Debug|x64
|
||||||
|
{264A5D09-126F-4760-A3F1-4B3B95C925AA}.Installer.Debug|x86.ActiveCfg = Debug|Win32
|
||||||
|
{264A5D09-126F-4760-A3F1-4B3B95C925AA}.Installer.Release|Any CPU.ActiveCfg = Release|x64
|
||||||
|
{264A5D09-126F-4760-A3F1-4B3B95C925AA}.Installer.Release|x64.ActiveCfg = Release|x64
|
||||||
|
{264A5D09-126F-4760-A3F1-4B3B95C925AA}.Installer.Release|x86.ActiveCfg = Release|Win32
|
||||||
|
{264A5D09-126F-4760-A3F1-4B3B95C925AA}.Release|Any CPU.ActiveCfg = Release|Win32
|
||||||
|
{264A5D09-126F-4760-A3F1-4B3B95C925AA}.Release|x64.ActiveCfg = Release|x64
|
||||||
|
{264A5D09-126F-4760-A3F1-4B3B95C925AA}.Release|x64.Build.0 = Release|x64
|
||||||
|
{264A5D09-126F-4760-A3F1-4B3B95C925AA}.Release|x86.ActiveCfg = Release|Win32
|
||||||
|
{264A5D09-126F-4760-A3F1-4B3B95C925AA}.Release|x86.Build.0 = Release|Win32
|
||||||
|
{1E997BEC-1642-4A5C-B252-852DA094E11E}.Debug|Any CPU.ActiveCfg = Debug|Win32
|
||||||
|
{1E997BEC-1642-4A5C-B252-852DA094E11E}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
|
{1E997BEC-1642-4A5C-B252-852DA094E11E}.Debug|x64.Build.0 = Debug|x64
|
||||||
|
{1E997BEC-1642-4A5C-B252-852DA094E11E}.Debug|x86.ActiveCfg = Debug|Win32
|
||||||
|
{1E997BEC-1642-4A5C-B252-852DA094E11E}.Debug|x86.Build.0 = Debug|Win32
|
||||||
|
{1E997BEC-1642-4A5C-B252-852DA094E11E}.Installer.Debug|Any CPU.ActiveCfg = Release|x64
|
||||||
|
{1E997BEC-1642-4A5C-B252-852DA094E11E}.Installer.Debug|x64.ActiveCfg = Debug|x64
|
||||||
|
{1E997BEC-1642-4A5C-B252-852DA094E11E}.Installer.Debug|x86.ActiveCfg = Debug|Win32
|
||||||
|
{1E997BEC-1642-4A5C-B252-852DA094E11E}.Installer.Release|Any CPU.ActiveCfg = Release|x64
|
||||||
|
{1E997BEC-1642-4A5C-B252-852DA094E11E}.Installer.Release|x64.ActiveCfg = Release|x64
|
||||||
|
{1E997BEC-1642-4A5C-B252-852DA094E11E}.Installer.Release|x86.ActiveCfg = Release|Win32
|
||||||
|
{1E997BEC-1642-4A5C-B252-852DA094E11E}.Release|Any CPU.ActiveCfg = Release|Win32
|
||||||
|
{1E997BEC-1642-4A5C-B252-852DA094E11E}.Release|x64.ActiveCfg = Release|x64
|
||||||
|
{1E997BEC-1642-4A5C-B252-852DA094E11E}.Release|x64.Build.0 = Release|x64
|
||||||
|
{1E997BEC-1642-4A5C-B252-852DA094E11E}.Release|x86.ActiveCfg = Release|Win32
|
||||||
|
{1E997BEC-1642-4A5C-B252-852DA094E11E}.Release|x86.Build.0 = Release|Win32
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
@ -162,7 +299,12 @@ Global
|
|||||||
{AA7190E8-877F-4827-8CDD-E0D85F83C8C1} = {69439FD1-C07D-4BF1-98DC-3CCFECE53A49}
|
{AA7190E8-877F-4827-8CDD-E0D85F83C8C1} = {69439FD1-C07D-4BF1-98DC-3CCFECE53A49}
|
||||||
{D53AAC39-4C57-4CA5-A4F3-C2B24888C594} = {B464EF06-42AE-4674-81BB-FDDE80204822}
|
{D53AAC39-4C57-4CA5-A4F3-C2B24888C594} = {B464EF06-42AE-4674-81BB-FDDE80204822}
|
||||||
{95C223E6-B5F1-4FD0-9376-41CDBC824445} = {B464EF06-42AE-4674-81BB-FDDE80204822}
|
{95C223E6-B5F1-4FD0-9376-41CDBC824445} = {B464EF06-42AE-4674-81BB-FDDE80204822}
|
||||||
{A5EFD487-0140-4184-8C54-FFAEC2F85E35} = {FD28A504-431E-49B9-BB8C-DCA0E7019F66}
|
{10757011-749D-4954-873B-AE38D8145472} = {69439FD1-C07D-4BF1-98DC-3CCFECE53A49}
|
||||||
{73EAAEDA-557B-48D5-A137-328934720FB4} = {FD28A504-431E-49B9-BB8C-DCA0E7019F66}
|
{C4E1E9E5-0959-488E-8C6A-C327CC81BEFB} = {69439FD1-C07D-4BF1-98DC-3CCFECE53A49}
|
||||||
|
{94580219-CC8D-4FE5-A3BE-437B0B3481E1} = {A998CEC4-4B34-43DC-8457-F7761228BA67}
|
||||||
|
{4920E350-D496-4652-AE98-6C4208AEC1D8} = {69439FD1-C07D-4BF1-98DC-3CCFECE53A49}
|
||||||
|
{6CDF9411-B852-4EAC-822D-8F930675F17B} = {04A4762C-FAB9-4196-9AC8-0757F3E8AB79}
|
||||||
|
{264A5D09-126F-4760-A3F1-4B3B95C925AA} = {04A4762C-FAB9-4196-9AC8-0757F3E8AB79}
|
||||||
|
{1E997BEC-1642-4A5C-B252-852DA094E11E} = {04A4762C-FAB9-4196-9AC8-0757F3E8AB79}
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
EndGlobal
|
EndGlobal
|
||||||
|
@ -26,13 +26,16 @@
|
|||||||
<ClInclude Include="..\..\inc\fuse\winfsp_fuse.h" />
|
<ClInclude Include="..\..\inc\fuse\winfsp_fuse.h" />
|
||||||
<ClInclude Include="..\..\inc\winfsp\fsctl.h" />
|
<ClInclude Include="..\..\inc\winfsp\fsctl.h" />
|
||||||
<ClInclude Include="..\..\inc\winfsp\winfsp.h" />
|
<ClInclude Include="..\..\inc\winfsp\winfsp.h" />
|
||||||
|
<ClInclude Include="..\..\inc\winfsp\winfsp.hpp" />
|
||||||
<ClInclude Include="..\..\src\dll\fuse\library.h" />
|
<ClInclude Include="..\..\src\dll\fuse\library.h" />
|
||||||
<ClInclude Include="..\..\src\dll\library.h" />
|
<ClInclude Include="..\..\src\dll\library.h" />
|
||||||
<ClInclude Include="..\..\src\shared\minimal.h" />
|
<ClInclude Include="..\..\src\shared\minimal.h" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<ClCompile Include="..\..\src\dll\dirbuf.c" />
|
||||||
<ClCompile Include="..\..\src\dll\eventlog.c" />
|
<ClCompile Include="..\..\src\dll\eventlog.c" />
|
||||||
<ClCompile Include="..\..\src\dll\fuse\fuse.c" />
|
<ClCompile Include="..\..\src\dll\fuse\fuse.c" />
|
||||||
|
<ClCompile Include="..\..\src\dll\fuse\fuse_compat.c" />
|
||||||
<ClCompile Include="..\..\src\dll\fuse\fuse_intf.c" />
|
<ClCompile Include="..\..\src\dll\fuse\fuse_intf.c" />
|
||||||
<ClCompile Include="..\..\src\dll\fuse\fuse_main.c" />
|
<ClCompile Include="..\..\src\dll\fuse\fuse_main.c" />
|
||||||
<ClCompile Include="..\..\src\dll\fuse\fuse_opt.c" />
|
<ClCompile Include="..\..\src\dll\fuse\fuse_opt.c" />
|
||||||
@ -50,7 +53,7 @@
|
|||||||
<ClCompile Include="..\..\src\dll\util.c" />
|
<ClCompile Include="..\..\src\dll\util.c" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<CustomBuild Include="..\..\src\dll\fuse\fuse.pc">
|
<CustomBuild Include="..\..\src\dll\fuse\fuse.pc.in">
|
||||||
<FileType>Document</FileType>
|
<FileType>Document</FileType>
|
||||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">echo arch=$(PlatformTarget) >$(OutDir)fuse-$(PlatformTarget).pc
|
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">echo arch=$(PlatformTarget) >$(OutDir)fuse-$(PlatformTarget).pc
|
||||||
copy /b $(OutDir)fuse-$(PlatformTarget).pc + %(FullPath) $(OutDir)fuse-$(PlatformTarget).pc >nul</Command>
|
copy /b $(OutDir)fuse-$(PlatformTarget).pc + %(FullPath) $(OutDir)fuse-$(PlatformTarget).pc >nul</Command>
|
||||||
@ -78,10 +81,10 @@ copy /b $(OutDir)fuse-$(PlatformTarget).pc + %(FullPath) $(OutDir)fuse-$(Platfor
|
|||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ResourceCompile Include="..\..\src\dll\eventlog\eventlog.rc" />
|
<ResourceCompile Include="..\..\src\dll\eventlog\eventlog.rc" />
|
||||||
<ResourceCompile Include="..\..\src\dll\version.rc">
|
<ResourceCompile Include="..\..\src\dll\version.rc">
|
||||||
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">_UNICODE;UNICODE;%(PreprocessorDefinitions);MyProductName=$(MyProductName);MyDescription=$(MyDescription);MyCompanyName=$(MyCompanyName);MyCopyright=$(MyCopyright);MyVersion=$(MyVersion);MyVersionWithCommas=$(MyVersionWithCommas)</PreprocessorDefinitions>
|
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">_UNICODE;UNICODE;%(PreprocessorDefinitions);MyProductName=$(MyProductName);MyDescription=$(MyDescription);MyCompanyName=$(MyCompanyName);MyCopyright=$(MyCopyright);MyVersion=$(MyVersion);MyVersionWithCommas=$(MyVersionWithCommas)</PreprocessorDefinitions>
|
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">_UNICODE;UNICODE;%(PreprocessorDefinitions);MyProductName=$(MyProductName);MyDescription=$(MyDescription);MyCompanyName=$(MyCompanyName);MyCopyright=$(MyCopyright);MyVersion=$(MyVersion);MyVersionWithCommas=$(MyVersionWithCommas)</PreprocessorDefinitions>
|
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">_UNICODE;UNICODE;%(PreprocessorDefinitions);MyProductName=$(MyProductName);MyDescription=$(MyDescription);MyCompanyName=$(MyCompanyName);MyCopyright=$(MyCopyright);MyVersion=$(MyVersion);MyVersionWithCommas=$(MyVersionWithCommas)</PreprocessorDefinitions>
|
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
</ResourceCompile>
|
</ResourceCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<PropertyGroup Label="Globals">
|
<PropertyGroup Label="Globals">
|
||||||
@ -173,6 +176,8 @@ copy /b $(OutDir)fuse-$(PlatformTarget).pc + %(FullPath) $(OutDir)fuse-$(Platfor
|
|||||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||||
<BasicRuntimeChecks>Default</BasicRuntimeChecks>
|
<BasicRuntimeChecks>Default</BasicRuntimeChecks>
|
||||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||||
|
<AdditionalOptions>
|
||||||
|
</AdditionalOptions>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<SubSystem>Windows</SubSystem>
|
<SubSystem>Windows</SubSystem>
|
||||||
@ -182,7 +187,8 @@ copy /b $(OutDir)fuse-$(PlatformTarget).pc + %(FullPath) $(OutDir)fuse-$(Platfor
|
|||||||
<MapFileName>$(OutDir)$(TargetFileName).map</MapFileName>
|
<MapFileName>$(OutDir)$(TargetFileName).map</MapFileName>
|
||||||
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
|
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
|
||||||
<ModuleDefinitionFile>..\..\src\dll\library.def</ModuleDefinitionFile>
|
<ModuleDefinitionFile>..\..\src\dll\library.def</ModuleDefinitionFile>
|
||||||
<AdditionalDependencies>%(AdditionalDependencies);credui.lib;version.lib</AdditionalDependencies>
|
<AdditionalDependencies>%(AdditionalDependencies);rpcrt4.lib;credui.lib;version.lib</AdditionalDependencies>
|
||||||
|
<StripPrivateSymbols>$(OutDir)$(TargetFileName).public.pdb</StripPrivateSymbols>
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
@ -198,6 +204,8 @@ copy /b $(OutDir)fuse-$(PlatformTarget).pc + %(FullPath) $(OutDir)fuse-$(Platfor
|
|||||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||||
<BasicRuntimeChecks>Default</BasicRuntimeChecks>
|
<BasicRuntimeChecks>Default</BasicRuntimeChecks>
|
||||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||||
|
<AdditionalOptions>
|
||||||
|
</AdditionalOptions>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<SubSystem>Windows</SubSystem>
|
<SubSystem>Windows</SubSystem>
|
||||||
@ -207,7 +215,8 @@ copy /b $(OutDir)fuse-$(PlatformTarget).pc + %(FullPath) $(OutDir)fuse-$(Platfor
|
|||||||
<MapFileName>$(OutDir)$(TargetFileName).map</MapFileName>
|
<MapFileName>$(OutDir)$(TargetFileName).map</MapFileName>
|
||||||
<IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
|
<IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
|
||||||
<ModuleDefinitionFile>..\..\src\dll\library.def</ModuleDefinitionFile>
|
<ModuleDefinitionFile>..\..\src\dll\library.def</ModuleDefinitionFile>
|
||||||
<AdditionalDependencies>%(AdditionalDependencies);credui.lib;version.lib</AdditionalDependencies>
|
<AdditionalDependencies>%(AdditionalDependencies);rpcrt4.lib;credui.lib;version.lib</AdditionalDependencies>
|
||||||
|
<StripPrivateSymbols>$(OutDir)$(TargetFileName).public.pdb</StripPrivateSymbols>
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
@ -224,6 +233,8 @@ copy /b $(OutDir)fuse-$(PlatformTarget).pc + %(FullPath) $(OutDir)fuse-$(Platfor
|
|||||||
<AdditionalIncludeDirectories>..\..\src;..\..\inc</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>..\..\src;..\..\inc</AdditionalIncludeDirectories>
|
||||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||||
|
<AdditionalOptions>
|
||||||
|
</AdditionalOptions>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<SubSystem>Windows</SubSystem>
|
<SubSystem>Windows</SubSystem>
|
||||||
@ -235,7 +246,8 @@ copy /b $(OutDir)fuse-$(PlatformTarget).pc + %(FullPath) $(OutDir)fuse-$(Platfor
|
|||||||
<MapFileName>$(OutDir)$(TargetFileName).map</MapFileName>
|
<MapFileName>$(OutDir)$(TargetFileName).map</MapFileName>
|
||||||
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
|
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
|
||||||
<ModuleDefinitionFile>..\..\src\dll\library.def</ModuleDefinitionFile>
|
<ModuleDefinitionFile>..\..\src\dll\library.def</ModuleDefinitionFile>
|
||||||
<AdditionalDependencies>%(AdditionalDependencies);credui.lib;version.lib</AdditionalDependencies>
|
<AdditionalDependencies>%(AdditionalDependencies);rpcrt4.lib;credui.lib;version.lib</AdditionalDependencies>
|
||||||
|
<StripPrivateSymbols>$(OutDir)$(TargetFileName).public.pdb</StripPrivateSymbols>
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
@ -252,6 +264,8 @@ copy /b $(OutDir)fuse-$(PlatformTarget).pc + %(FullPath) $(OutDir)fuse-$(Platfor
|
|||||||
<AdditionalIncludeDirectories>..\..\src;..\..\inc</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>..\..\src;..\..\inc</AdditionalIncludeDirectories>
|
||||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||||
|
<AdditionalOptions>
|
||||||
|
</AdditionalOptions>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<SubSystem>Windows</SubSystem>
|
<SubSystem>Windows</SubSystem>
|
||||||
@ -263,7 +277,8 @@ copy /b $(OutDir)fuse-$(PlatformTarget).pc + %(FullPath) $(OutDir)fuse-$(Platfor
|
|||||||
<MapFileName>$(OutDir)$(TargetFileName).map</MapFileName>
|
<MapFileName>$(OutDir)$(TargetFileName).map</MapFileName>
|
||||||
<IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
|
<IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
|
||||||
<ModuleDefinitionFile>..\..\src\dll\library.def</ModuleDefinitionFile>
|
<ModuleDefinitionFile>..\..\src\dll\library.def</ModuleDefinitionFile>
|
||||||
<AdditionalDependencies>%(AdditionalDependencies);credui.lib;version.lib</AdditionalDependencies>
|
<AdditionalDependencies>%(AdditionalDependencies);rpcrt4.lib;credui.lib;version.lib</AdditionalDependencies>
|
||||||
|
<StripPrivateSymbols>$(OutDir)$(TargetFileName).public.pdb</StripPrivateSymbols>
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
|
@ -50,6 +50,9 @@
|
|||||||
<ClInclude Include="..\..\src\dll\fuse\library.h">
|
<ClInclude Include="..\..\src\dll\fuse\library.h">
|
||||||
<Filter>Source\fuse</Filter>
|
<Filter>Source\fuse</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\inc\winfsp\winfsp.hpp">
|
||||||
|
<Filter>Include\winfsp</Filter>
|
||||||
|
</ClInclude>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClCompile Include="..\..\src\dll\library.c">
|
<ClCompile Include="..\..\src\dll\library.c">
|
||||||
@ -103,6 +106,12 @@
|
|||||||
<ClCompile Include="..\..\src\dll\fuse\fuse_intf.c">
|
<ClCompile Include="..\..\src\dll\fuse\fuse_intf.c">
|
||||||
<Filter>Source\fuse</Filter>
|
<Filter>Source\fuse</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\src\dll\dirbuf.c">
|
||||||
|
<Filter>Source</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\src\dll\fuse\fuse_compat.c">
|
||||||
|
<Filter>Source\fuse</Filter>
|
||||||
|
</ClCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="..\..\src\dll\library.def">
|
<None Include="..\..\src\dll\library.def">
|
||||||
@ -118,6 +127,8 @@
|
|||||||
</ResourceCompile>
|
</ResourceCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<CustomBuild Include="..\..\src\dll\fuse\fuse.pc" />
|
<CustomBuild Include="..\..\src\dll\fuse\fuse.pc.in">
|
||||||
|
<Filter>Source\fuse</Filter>
|
||||||
|
</CustomBuild>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
@ -34,6 +34,7 @@
|
|||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||||
<TargetVersion>Windows10</TargetVersion>
|
<TargetVersion>Windows10</TargetVersion>
|
||||||
<UseDebugLibraries>true</UseDebugLibraries>
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
|
<KernelBufferOverflowLib>$(DDK_LIB_PATH)\BufferOverflowK.lib</KernelBufferOverflowLib>
|
||||||
<PlatformToolset>WindowsKernelModeDriver10.0</PlatformToolset>
|
<PlatformToolset>WindowsKernelModeDriver10.0</PlatformToolset>
|
||||||
<ConfigurationType>Driver</ConfigurationType>
|
<ConfigurationType>Driver</ConfigurationType>
|
||||||
<DriverType>WDM</DriverType>
|
<DriverType>WDM</DriverType>
|
||||||
@ -41,6 +42,7 @@
|
|||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||||
<TargetVersion>Windows10</TargetVersion>
|
<TargetVersion>Windows10</TargetVersion>
|
||||||
<UseDebugLibraries>false</UseDebugLibraries>
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
<KernelBufferOverflowLib>$(DDK_LIB_PATH)\BufferOverflowK.lib</KernelBufferOverflowLib>
|
||||||
<PlatformToolset>WindowsKernelModeDriver10.0</PlatformToolset>
|
<PlatformToolset>WindowsKernelModeDriver10.0</PlatformToolset>
|
||||||
<ConfigurationType>Driver</ConfigurationType>
|
<ConfigurationType>Driver</ConfigurationType>
|
||||||
<DriverType>WDM</DriverType>
|
<DriverType>WDM</DriverType>
|
||||||
@ -48,6 +50,7 @@
|
|||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||||
<TargetVersion>Windows10</TargetVersion>
|
<TargetVersion>Windows10</TargetVersion>
|
||||||
<UseDebugLibraries>true</UseDebugLibraries>
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
|
<KernelBufferOverflowLib>$(DDK_LIB_PATH)\BufferOverflowK.lib</KernelBufferOverflowLib>
|
||||||
<PlatformToolset>WindowsKernelModeDriver10.0</PlatformToolset>
|
<PlatformToolset>WindowsKernelModeDriver10.0</PlatformToolset>
|
||||||
<ConfigurationType>Driver</ConfigurationType>
|
<ConfigurationType>Driver</ConfigurationType>
|
||||||
<DriverType>WDM</DriverType>
|
<DriverType>WDM</DriverType>
|
||||||
@ -55,6 +58,7 @@
|
|||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||||
<TargetVersion>Windows10</TargetVersion>
|
<TargetVersion>Windows10</TargetVersion>
|
||||||
<UseDebugLibraries>false</UseDebugLibraries>
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
<KernelBufferOverflowLib>$(DDK_LIB_PATH)\BufferOverflowK.lib</KernelBufferOverflowLib>
|
||||||
<PlatformToolset>WindowsKernelModeDriver10.0</PlatformToolset>
|
<PlatformToolset>WindowsKernelModeDriver10.0</PlatformToolset>
|
||||||
<ConfigurationType>Driver</ConfigurationType>
|
<ConfigurationType>Driver</ConfigurationType>
|
||||||
<DriverType>WDM</DriverType>
|
<DriverType>WDM</DriverType>
|
||||||
@ -105,6 +109,7 @@
|
|||||||
<GenerateMapFile>true</GenerateMapFile>
|
<GenerateMapFile>true</GenerateMapFile>
|
||||||
<ProgramDatabaseFile>$(OutDir)$(TargetFileName).pdb</ProgramDatabaseFile>
|
<ProgramDatabaseFile>$(OutDir)$(TargetFileName).pdb</ProgramDatabaseFile>
|
||||||
<MapFileName>$(OutDir)$(TargetFileName).map</MapFileName>
|
<MapFileName>$(OutDir)$(TargetFileName).map</MapFileName>
|
||||||
|
<StripPrivateSymbols>$(OutDir)$(TargetFileName).public.pdb</StripPrivateSymbols>
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
@ -117,6 +122,7 @@
|
|||||||
<GenerateMapFile>true</GenerateMapFile>
|
<GenerateMapFile>true</GenerateMapFile>
|
||||||
<ProgramDatabaseFile>$(OutDir)$(TargetFileName).pdb</ProgramDatabaseFile>
|
<ProgramDatabaseFile>$(OutDir)$(TargetFileName).pdb</ProgramDatabaseFile>
|
||||||
<MapFileName>$(OutDir)$(TargetFileName).map</MapFileName>
|
<MapFileName>$(OutDir)$(TargetFileName).map</MapFileName>
|
||||||
|
<StripPrivateSymbols>$(OutDir)$(TargetFileName).public.pdb</StripPrivateSymbols>
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
@ -129,6 +135,7 @@
|
|||||||
<GenerateMapFile>true</GenerateMapFile>
|
<GenerateMapFile>true</GenerateMapFile>
|
||||||
<ProgramDatabaseFile>$(OutDir)$(TargetFileName).pdb</ProgramDatabaseFile>
|
<ProgramDatabaseFile>$(OutDir)$(TargetFileName).pdb</ProgramDatabaseFile>
|
||||||
<MapFileName>$(OutDir)$(TargetFileName).map</MapFileName>
|
<MapFileName>$(OutDir)$(TargetFileName).map</MapFileName>
|
||||||
|
<StripPrivateSymbols>$(OutDir)$(TargetFileName).public.pdb</StripPrivateSymbols>
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
@ -141,6 +148,7 @@
|
|||||||
<GenerateMapFile>true</GenerateMapFile>
|
<GenerateMapFile>true</GenerateMapFile>
|
||||||
<ProgramDatabaseFile>$(OutDir)$(TargetFileName).pdb</ProgramDatabaseFile>
|
<ProgramDatabaseFile>$(OutDir)$(TargetFileName).pdb</ProgramDatabaseFile>
|
||||||
<MapFileName>$(OutDir)$(TargetFileName).map</MapFileName>
|
<MapFileName>$(OutDir)$(TargetFileName).map</MapFileName>
|
||||||
|
<StripPrivateSymbols>$(OutDir)$(TargetFileName).public.pdb</StripPrivateSymbols>
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
@ -165,9 +173,12 @@
|
|||||||
<ClCompile Include="..\..\src\sys\ioq.c" />
|
<ClCompile Include="..\..\src\sys\ioq.c" />
|
||||||
<ClCompile Include="..\..\src\sys\lockctl.c" />
|
<ClCompile Include="..\..\src\sys\lockctl.c" />
|
||||||
<ClCompile Include="..\..\src\sys\meta.c" />
|
<ClCompile Include="..\..\src\sys\meta.c" />
|
||||||
|
<ClCompile Include="..\..\src\sys\name.c" />
|
||||||
|
<ClCompile Include="..\..\src\sys\psbuffer.c" />
|
||||||
<ClCompile Include="..\..\src\sys\read.c" />
|
<ClCompile Include="..\..\src\sys\read.c" />
|
||||||
<ClCompile Include="..\..\src\sys\security.c" />
|
<ClCompile Include="..\..\src\sys\security.c" />
|
||||||
<ClCompile Include="..\..\src\sys\shutdown.c" />
|
<ClCompile Include="..\..\src\sys\shutdown.c" />
|
||||||
|
<ClCompile Include="..\..\src\sys\statistics.c" />
|
||||||
<ClCompile Include="..\..\src\sys\util.c" />
|
<ClCompile Include="..\..\src\sys\util.c" />
|
||||||
<ClCompile Include="..\..\src\sys\volinfo.c" />
|
<ClCompile Include="..\..\src\sys\volinfo.c" />
|
||||||
<ClCompile Include="..\..\src\sys\volume.c" />
|
<ClCompile Include="..\..\src\sys\volume.c" />
|
||||||
@ -180,12 +191,77 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ResourceCompile Include="..\..\src\sys\version.rc">
|
<ResourceCompile Include="..\..\src\sys\version.rc">
|
||||||
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">_X86_=1;i386=1;STD_CALL;%(PreprocessorDefinitions);MyProductName=$(MyProductName);MyDescription=$(MyDescription);MyCompanyName=$(MyCompanyName);MyCopyright=$(MyCopyright);MyVersion=$(MyVersion);MyVersionWithCommas=$(MyVersionWithCommas)</PreprocessorDefinitions>
|
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">_X86_=1;i386=1;STD_CALL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">_X86_=1;i386=1;STD_CALL;%(PreprocessorDefinitions);MyProductName=$(MyProductName);MyDescription=$(MyDescription);MyCompanyName=$(MyCompanyName);MyCopyright=$(MyCopyright);MyVersion=$(MyVersion);MyVersionWithCommas=$(MyVersionWithCommas)</PreprocessorDefinitions>
|
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">_X86_=1;i386=1;STD_CALL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">_WIN64;_AMD64_=1;AMD64;%(PreprocessorDefinitions);MyProductName=$(MyProductName);MyDescription=$(MyDescription);MyCompanyName=$(MyCompanyName);MyCopyright=$(MyCopyright);MyVersion=$(MyVersion);MyVersionWithCommas=$(MyVersionWithCommas)</PreprocessorDefinitions>
|
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">_WIN64;_AMD64_=1;AMD64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">_WIN64;_AMD64_=1;AMD64;%(PreprocessorDefinitions);MyProductName=$(MyProductName);MyDescription=$(MyDescription);MyCompanyName=$(MyCompanyName);MyCopyright=$(MyCopyright);MyVersion=$(MyVersion);MyVersionWithCommas=$(MyVersionWithCommas)</PreprocessorDefinitions>
|
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">_WIN64;_AMD64_=1;AMD64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
</ResourceCompile>
|
</ResourceCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<CustomBuild Include="..\..\src\sys\driver.inf.in">
|
||||||
|
<FileType>Document</FileType>
|
||||||
|
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">set DriverFile=$(TargetFileName)
|
||||||
|
set Provider="$(MyCompanyName)"
|
||||||
|
set CatalogFile=driver-$(PlatformTarget).cat
|
||||||
|
|
||||||
|
setlocal EnableDelayedExpansion
|
||||||
|
if exist $(OutDir)driver-$(PlatformTarget).inf del $(OutDir)driver-$(PlatformTarget).inf
|
||||||
|
for /f "delims=" %%l in (%(FullPath)) do (
|
||||||
|
set line=%%l
|
||||||
|
echo !line! >>$(OutDir)driver-$(PlatformTarget).inf
|
||||||
|
)
|
||||||
|
|
||||||
|
stampinf -v $(MyVersion) -f $(OutDir)driver-$(PlatformTarget).inf</Command>
|
||||||
|
<LinkObjects Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkObjects>
|
||||||
|
<Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">set DriverFile=$(TargetFileName)
|
||||||
|
set Provider="$(MyCompanyName)"
|
||||||
|
set CatalogFile=driver-$(PlatformTarget).cat
|
||||||
|
|
||||||
|
setlocal EnableDelayedExpansion
|
||||||
|
if exist $(OutDir)driver-$(PlatformTarget).inf del $(OutDir)driver-$(PlatformTarget).inf
|
||||||
|
for /f "delims=" %%l in (%(FullPath)) do (
|
||||||
|
set line=%%l
|
||||||
|
echo !line! >>$(OutDir)driver-$(PlatformTarget).inf
|
||||||
|
)
|
||||||
|
|
||||||
|
stampinf -v $(MyVersion) -f $(OutDir)driver-$(PlatformTarget).inf</Command>
|
||||||
|
<LinkObjects Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkObjects>
|
||||||
|
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">set DriverFile=$(TargetFileName)
|
||||||
|
set Provider="$(MyCompanyName)"
|
||||||
|
set CatalogFile=driver-$(PlatformTarget).cat
|
||||||
|
|
||||||
|
setlocal EnableDelayedExpansion
|
||||||
|
if exist $(OutDir)driver-$(PlatformTarget).inf del $(OutDir)driver-$(PlatformTarget).inf
|
||||||
|
for /f "delims=" %%l in (%(FullPath)) do (
|
||||||
|
set line=%%l
|
||||||
|
echo !line! >>$(OutDir)driver-$(PlatformTarget).inf
|
||||||
|
)
|
||||||
|
|
||||||
|
stampinf -v $(MyVersion) -f $(OutDir)driver-$(PlatformTarget).inf</Command>
|
||||||
|
<LinkObjects Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkObjects>
|
||||||
|
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">set DriverFile=$(TargetFileName)
|
||||||
|
set Provider="$(MyCompanyName)"
|
||||||
|
set CatalogFile=driver-$(PlatformTarget).cat
|
||||||
|
|
||||||
|
setlocal EnableDelayedExpansion
|
||||||
|
if exist $(OutDir)driver-$(PlatformTarget).inf del $(OutDir)driver-$(PlatformTarget).inf
|
||||||
|
for /f "delims=" %%l in (%(FullPath)) do (
|
||||||
|
set line=%%l
|
||||||
|
echo !line! >>$(OutDir)driver-$(PlatformTarget).inf
|
||||||
|
)
|
||||||
|
|
||||||
|
stampinf -v $(MyVersion) -f $(OutDir)driver-$(PlatformTarget).inf</Command>
|
||||||
|
<LinkObjects Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkObjects>
|
||||||
|
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Writing driver-$(PlatformTarget).inf</Message>
|
||||||
|
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(OutDir)driver-$(PlatformTarget).inf</Outputs>
|
||||||
|
<Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Writing driver-$(PlatformTarget).inf</Message>
|
||||||
|
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(OutDir)driver-$(PlatformTarget).inf</Outputs>
|
||||||
|
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Writing driver-$(PlatformTarget).inf</Message>
|
||||||
|
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(OutDir)driver-$(PlatformTarget).inf</Outputs>
|
||||||
|
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Writing driver-$(PlatformTarget).inf</Message>
|
||||||
|
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(OutDir)driver-$(PlatformTarget).inf</Outputs>
|
||||||
|
</CustomBuild>
|
||||||
|
</ItemGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
<ImportGroup Label="ExtensionTargets">
|
<ImportGroup Label="ExtensionTargets">
|
||||||
</ImportGroup>
|
</ImportGroup>
|
||||||
|
@ -92,6 +92,15 @@
|
|||||||
<ClCompile Include="..\..\src\sys\callbacks.c">
|
<ClCompile Include="..\..\src\sys\callbacks.c">
|
||||||
<Filter>Source</Filter>
|
<Filter>Source</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\src\sys\name.c">
|
||||||
|
<Filter>Source</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\src\sys\statistics.c">
|
||||||
|
<Filter>Source</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\src\sys\psbuffer.c">
|
||||||
|
<Filter>Source</Filter>
|
||||||
|
</ClCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="..\..\src\sys\driver.h">
|
<ClInclude Include="..\..\src\sys\driver.h">
|
||||||
@ -106,4 +115,9 @@
|
|||||||
<Filter>Source</Filter>
|
<Filter>Source</Filter>
|
||||||
</ResourceCompile>
|
</ResourceCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<CustomBuild Include="..\..\src\sys\driver.inf.in">
|
||||||
|
<Filter>Source</Filter>
|
||||||
|
</CustomBuild>
|
||||||
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
4
build/choco/LICENSE.txt
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
From: https://github.com/billziss-gh/winfsp/blob/master/License.txt
|
||||||
|
|
||||||
|
LICENSE
|
||||||
|
|
15
build/choco/VERIFICATION.txt
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
VERIFICATION
|
||||||
|
Verification is intended to assist the Chocolatey moderators and community
|
||||||
|
in verifying that this package's contents are trustworthy.
|
||||||
|
|
||||||
|
WinFsp GitHub repository: https://github.com/billziss-gh/winfsp
|
||||||
|
WinFsp MSI releases : https://github.com/billziss-gh/winfsp/releases
|
||||||
|
|
||||||
|
You may use the Windows certutil utility to confirm the hash of the MSI
|
||||||
|
included in this package against the WinFsp MSI release of the same version.
|
||||||
|
For example, for WinFsp version 1.0.17072 the command line to use is:
|
||||||
|
|
||||||
|
certutil -hashfile winfsp-1.0.17072.msi SHA256
|
||||||
|
|
||||||
|
The certutil output of the MSI in this package is included below.
|
||||||
|
|
36
build/choco/chocolateyBeforeModify.ps1
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
$ErrorActionPreference = 'Stop';
|
||||||
|
|
||||||
|
$packageName = 'winfsp'
|
||||||
|
$softwareName = 'WinFsp*'
|
||||||
|
$installerType = 'msi'
|
||||||
|
$silentArgs = '/qn /norestart'
|
||||||
|
$validExitCodes = @(0, 3010, 1605, 1614, 1641)
|
||||||
|
|
||||||
|
[array]$key = Get-UninstallRegistryKey -SoftwareName $softwareName
|
||||||
|
|
||||||
|
if ($key.Count -eq 1) {
|
||||||
|
$key | % {
|
||||||
|
# The Product Code GUID is all that should be passed for MSI, and very
|
||||||
|
# FIRST, because it comes directly after /x, which is already set in the
|
||||||
|
# Uninstall-ChocolateyPackage msiargs (facepalm).
|
||||||
|
$silentArgs = "$($_.PSChildName) $silentArgs"
|
||||||
|
|
||||||
|
# Don't pass anything for file, it is ignored for msi (facepalm number 2)
|
||||||
|
# Alternatively if you need to pass a path to an msi, determine that and
|
||||||
|
# use it instead of the above in silentArgs, still very first
|
||||||
|
$file = ''
|
||||||
|
|
||||||
|
Uninstall-ChocolateyPackage `
|
||||||
|
-PackageName $packageName `
|
||||||
|
-FileType $installerType `
|
||||||
|
-SilentArgs "$silentArgs" `
|
||||||
|
-ValidExitCodes $validExitCodes `
|
||||||
|
-File "$file"
|
||||||
|
}
|
||||||
|
} elseif ($key.Count -eq 0) {
|
||||||
|
Write-Warning "$packageName has already been uninstalled by other means."
|
||||||
|
} elseif ($key.Count -gt 1) {
|
||||||
|
Write-Warning "Too many matching packages found! Package may not be uninstalled."
|
||||||
|
Write-Warning "Please alert package maintainer the following packages were matched:"
|
||||||
|
$key | % {Write-Warning "- $_"}
|
||||||
|
}
|
16
build/choco/chocolateyInstall.ps1
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
$ErrorActionPreference = 'Stop';
|
||||||
|
|
||||||
|
$toolsDir = "$(Split-Path -parent $MyInvocation.MyCommand.Definition)"
|
||||||
|
$fileLocation = @(Get-ChildItem $toolsDir -filter winfsp-*.msi)[0].FullName
|
||||||
|
|
||||||
|
$packageArgs = @{
|
||||||
|
packageName = 'winfsp'
|
||||||
|
fileType = 'msi'
|
||||||
|
file = $fileLocation
|
||||||
|
silentArgs = "/qn /norestart INSTALLLEVEL=1000"
|
||||||
|
validExitCodes = @(0, 3010, 1641)
|
||||||
|
}
|
||||||
|
|
||||||
|
Install-ChocolateyInstallPackage @packageArgs
|
||||||
|
|
||||||
|
Remove-Item -Force $packageArgs.file
|
56
build/choco/winfsp.nuspec
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<package xmlns="http://schemas.microsoft.com/packaging/2015/06/nuspec.xsd">
|
||||||
|
<metadata>
|
||||||
|
<id>winfsp</id>
|
||||||
|
<version>$version$</version>
|
||||||
|
<packageSourceUrl>https://github.com/billziss-gh/winfsp/tree/master/build/choco</packageSourceUrl>
|
||||||
|
<owners>Bill Zissimopoulos</owners>
|
||||||
|
|
||||||
|
<title>WinFsp</title>
|
||||||
|
<authors>Bill Zissimopoulos</authors>
|
||||||
|
<projectUrl>https://github.com/billziss-gh/winfsp</projectUrl>
|
||||||
|
<iconUrl>https://github.com/billziss-gh/winfsp/raw/master/art/winfsp-solid.png</iconUrl>
|
||||||
|
<copyright>Bill Zissimopoulos</copyright>
|
||||||
|
<licenseUrl>https://github.com/billziss-gh/winfsp/blob/master/License.txt</licenseUrl>
|
||||||
|
<requireLicenseAcceptance>false</requireLicenseAcceptance>
|
||||||
|
<projectSourceUrl>https://github.com/billziss-gh/winfsp</projectSourceUrl>
|
||||||
|
<docsUrl>https://github.com/billziss-gh/winfsp/tree/master/doc</docsUrl>
|
||||||
|
<mailingListUrl>https://groups.google.com/forum/#!forum/winfsp</mailingListUrl>
|
||||||
|
<bugTrackerUrl>https://github.com/billziss-gh/winfsp/issues</bugTrackerUrl>
|
||||||
|
<tags>driver filesystem fuse gplv3 windows-kernel admin</tags>
|
||||||
|
<summary>Windows File System Proxy - FUSE for Windows</summary>
|
||||||
|
<description>
|
||||||
|
WinFsp is a set of software components for Windows computers that allows the creation of user mode file systems. In this sense it is similar to FUSE (Filesystem in Userspace), which provides the same functionality on UNIX-like computers.
|
||||||
|
|
||||||
|
Some of the benefits of using WinFsp are listed below:
|
||||||
|
|
||||||
|
* Very well-tested and stable.
|
||||||
|
* Very fast.
|
||||||
|
* Strives for compatibility with NTFS.
|
||||||
|
* Easy to understand but comprehensive API.
|
||||||
|
* FUSE compatibility layer for native Windows and Cygwin.
|
||||||
|
* Signed drivers provided on every release.
|
||||||
|
* Available under the GPLv3 license with a special exception for Free/Libre and Open Source Software.
|
||||||
|
|
||||||
|
To verify installation:
|
||||||
|
|
||||||
|
* For 64-bit Windows: `net use m: \\memfs64\share` from the command prompt.
|
||||||
|
* For 32-bit Windows: `net use m: \\memfs32\share`
|
||||||
|
* For Cygwin: `net use m: '\\memfs64\share'`
|
||||||
|
* To delete the drive: `net use m: /delete`
|
||||||
|
</description>
|
||||||
|
<releaseNotes>https://github.com/billziss-gh/winfsp/blob/master/Changelog.asciidoc</releaseNotes>
|
||||||
|
|
||||||
|
<!--<dependencies>
|
||||||
|
<dependency id="chocolatey-uninstall.extension" />
|
||||||
|
</dependencies>-->
|
||||||
|
</metadata>
|
||||||
|
|
||||||
|
<files>
|
||||||
|
<file src="LICENSE.txt" target="tools" />
|
||||||
|
<file src="VERIFICATION.txt" target="tools" />
|
||||||
|
<file src="chocolateyInstall.ps1" target="tools" />
|
||||||
|
<file src="chocolateyBeforeModify.ps1" target="tools" />
|
||||||
|
<file src="winfsp-$version$.msi" target="tools" />
|
||||||
|
</files>
|
||||||
|
</package>
|
@ -1,24 +0,0 @@
|
|||||||
= Changelog
|
|
||||||
|
|
||||||
|
|
||||||
v0.14::
|
|
||||||
|
|
||||||
This release includes support for file systems protected by credentials.
|
|
||||||
|
|
||||||
- WinFsp now supports file systems that require username/password to be unlocked (e.g. sshfs/secfs). Such file systems must add a DWORD registry value with name "Credentials" and value 1 under their WinFsp.Launcher service entry. The WinFsp network provider will then prompt for credentials using the `CredUIPromptForWindowsCredentials` API. Credentials can optionally be saved with the Windows Credential Manager.
|
|
||||||
- WinFsp-FUSE now uses the S-1-0-65534 <--> 65534 mapping for unmapped SID/UID's. The Anonymous SID mapping from the previous release had security issues.
|
|
||||||
|
|
||||||
|
|
||||||
v0.13::
|
|
||||||
|
|
||||||
This release includes a Cygwin package, an API change and some other minor changes:
|
|
||||||
|
|
||||||
- New Cygwin package includes `cygfuse-2.8.dll` and `libfuse-2.8.dll.a` for easy use in the Cygwin environment. This is currently offered as a separate download.
|
|
||||||
- Minor but breaking API change: `SetFileSize`/`SetAllocationSize` have been consolidated. Please refer to the documentation for a description of the changes.
|
|
||||||
- File system drive symbolic links (`DefineDosDeviceW`) now automatically cleaned up even if user mode file system crashes or is terminated forcefully.
|
|
||||||
- WinFsp-FUSE now maps unmapped UID's to the Anonymous SID (S-1-5-7). See: https://cygwin.com/ml/cygwin/2016-06/msg00359.html
|
|
||||||
|
|
||||||
|
|
||||||
v0.12::
|
|
||||||
|
|
||||||
Prior changes are not recorded in this Changelog.
|
|
56
doc/Frequently-Asked-Questions.asciidoc
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
= Frequently Asked Questions
|
||||||
|
|
||||||
|
== General
|
||||||
|
|
||||||
|
[qanda]
|
||||||
|
|
||||||
|
I am running Windows 7 and I am finding that the installed driver is not signed. [@efeat]::
|
||||||
|
|
||||||
|
Your Windows 7 OS is missing SHA-2 Code Signing Support. You need to install the following security advisory that will rectify the problem:
|
||||||
|
https://technet.microsoft.com/en-us/library/security/3033929.aspx
|
||||||
|
|
||||||
|
|
||||||
|
Disconnecting (unmapping) a network drive does not work. [@carlreinke]::
|
||||||
|
|
||||||
|
You may have Dokany installed. Dokany installs its own Network Provider DLL that unfortunately interferes with the WinFsp handling of network drives. The solution is to change your system's Network Provider order and ensure that the WinFsp Network Provider runs before the Dokany one. Instructions on how to change the Network Provider order can be found in this http://blogs.interfacett.com/changing-the-network-provider-order-in-windows-10[article].
|
||||||
|
|
||||||
|
|
||||||
|
Why is the DLL not installed in the Windows system directories? [@netheril96]::
|
||||||
|
|
||||||
|
It is true that this would make it convenient to load the DLL, because the Windows loader looks into the Windows system directories when it loads DLL's. However, in the opinion of the WinFsp author, software that does not ship with the OS should not be installing components in the system directories.
|
||||||
|
+
|
||||||
|
There are a few alternative methods to overcome this problem. WinFsp recommends marking the WinFsp DLL as "delay load" and then using `FspLoad` to dynamically load the DLL during process initialization. For more information see the WinFsp Tutorial.
|
||||||
|
|
||||||
|
|
||||||
|
Does WinFsp provide debugging symbols? [@netheril96]::
|
||||||
|
|
||||||
|
Public debugging symbols are already included in the installer. You need to install the "Developer" feature; the symbols can be found in the `sym` directory under the WinFsp installation directory.
|
||||||
|
|
||||||
|
|
||||||
|
Is there a maximum number of concurrent file systems? [@efeat]::
|
||||||
|
|
||||||
|
WinFsp does not have a hard limit of how many file systems can be created or how many processes can create file systems.
|
||||||
|
+
|
||||||
|
As of the commits required to fix issue #55, there is however a hash table inside the FSD that uses PID's (Process ID's) as keys. This hash table currently expects that in general there will not be more than 50 processes creating file systems. However this is not a hard limit.
|
||||||
|
|
||||||
|
|
||||||
|
== FUSE
|
||||||
|
|
||||||
|
[qanda]
|
||||||
|
|
||||||
|
Which version of FUSE does WinFsp-FUSE support?::
|
||||||
|
|
||||||
|
Currently it supports FUSE 2.8.
|
||||||
|
|
||||||
|
|
||||||
|
FUSE on UNIX systems mounts file systems over an existing directory. When mounting a WinFsp-FUSE file system on a directory, the directory is created and later deleted when the file system goes away. What is the reason for this incompatibility? [@efeat]::
|
||||||
|
|
||||||
|
It would be preferrable if WinFsp-FUSE behaved like FUSE on UNIX in this instance. However there are a number of reasons that this is not the case.
|
||||||
|
+
|
||||||
|
When mounting over directories in Windows, WinFsp-FUSE uses a special construct called a reparse point. Reparse points are a general mechanism for adding special behavior to files and directories. One of the possible reparse points is the "mountpoint" reparse point (often called "junction"), which converts a directory into a mount point.
|
||||||
|
+
|
||||||
|
With this in mind here are the reasons for the current WinFsp-FUSE behavior:
|
||||||
|
+
|
||||||
|
- Symmetry with mounting on a drive. On Windows drives are created when the file system comes into existence and deleted when it is gone.
|
||||||
|
- Inability to mount over a non-empty directory on Windows. On FUSE/UNIX this is possible, but not on Windows because NTFS disallows the creation of (mountpoint) reparse points on non-empty directories.
|
||||||
|
- Most importantly: inability to guarantee that the mount point will cease to exist if the file system crashes. WinFsp attempts to guarantee that all resources used by a file system will get cleaned up. This is certainly true for the kernel-mode FSD, but an attempt is made to do so also in user mode. For this reason, drive symbolic links are marked as temporary and (importantly for our discussion) mount directories are opened with `FILE_FLAG_DELETE_ON_CLOSE`. There is no way to guarantee the removal of a reparse point in the same way.
|
33
doc/Home.md
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
# WinFsp - Windows File System Proxy
|
||||||
|
|
||||||
|
[[WinFsp-Icon.png]]
|
||||||
|
|
||||||
|
Developing file systems is a challenging proposition. Developing file systems for Windows is an order of magnitude more difficult. WinFsp eases the task of writing a new file system for Windows. WinFsp file systems are user mode programs and they can be written in a variety of languages and frameworks.
|
||||||
|
|
||||||
|
The documentation available here discusses various aspects of WinFsp.
|
||||||
|
|
||||||
|
## Programming
|
||||||
|
|
||||||
|
- The [[Tutorial|WinFsp-Tutorial]] describes how to create a simple, but complete file system in C/C++.
|
||||||
|
- The [[API Reference|winfsp.h]] describes the native WinFsp API. This external [[link|http://www.secfs.net/winfsp/apiref/]] may be easier to browse for some people.
|
||||||
|
- There is also a FUSE compatibility layer for native Windows and Cygwin. See fuse.h in the source repository.
|
||||||
|
- This [[document|Native-API-vs-FUSE]] discusses the need for both a native API and FUSE and gives some pointers on which one to choose.
|
||||||
|
|
||||||
|
## Design
|
||||||
|
|
||||||
|
- The [[Design|WinFsp-Design]] document describes the high-level design of WinFsp.
|
||||||
|
- The [[IPC|WinFsp-as-an-IPC-Mechanism]] document offers insights into the WinFsp Inter-Process Communication mechanism.
|
||||||
|
- The [[Queued Events|Queued-Events]] document discusses a low-level synchronization primitive that is largely responsible for the excellent performance of the WinFsp IPC mechanism.
|
||||||
|
- The [[Service Architecture|WinFsp-Service-Architecture]] document discusses how to intergrate a file system into Windows as a service and the reasons to do so.
|
||||||
|
- The [[SSHFS Port Case Study|SSHFS-Port-Case-Study]] document chronicles the creation of the WinFsp-FUSE compatibility layer and the decisions that led to its design.
|
||||||
|
|
||||||
|
## Testing
|
||||||
|
|
||||||
|
- The [[Testing|WinFsp-Testing]] document discusses the WinFsp testing strategy and how WinFsp achieves correctness and stability.
|
||||||
|
- The [[Performance|WinFsp-Performance-Testing]] document compares WinFsp performance against other file systems.
|
||||||
|
|
||||||
|
## Compatibility
|
||||||
|
|
||||||
|
- The [[Compatibility|NTFS-Compatibility]] document discusses current WinFsp compatibility with NTFS.
|
||||||
|
|
||||||
|
WinFsp is available under the GPLv3 license with a special exception for Free/Libre and Open Source Software.
|
19
doc/Known-File-Systems.asciidoc
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
= Known File Systems and File System Libraries
|
||||||
|
|
||||||
|
This document contains a list of known file systems and file system libraries that run on WinFsp. Please contact the WinFsp project to have your file system solution added to this list.
|
||||||
|
|
||||||
|
== File Systems
|
||||||
|
|
||||||
|
- https://github.com/billziss-gh/nfs-win[nfs-win] - NFS for Windows
|
||||||
|
- https://github.com/ncw/rclone[rclone] - rsync for cloud storage
|
||||||
|
- https://github.com/hasse69/rar2fs[rar2fs] - FUSE file system for reading RAR archives
|
||||||
|
- https://github.com/billziss-gh/redditfs[redditfs] - ls -l /r/programming
|
||||||
|
- https://github.com/netheril96/securefs[securefs] - Filesystem in userspace (FUSE) with transparent authenticated encryption
|
||||||
|
- https://github.com/billziss-gh/sshfs-win[sshfs-win] - SSHFS for Windows
|
||||||
|
|
||||||
|
== File System Libraries
|
||||||
|
|
||||||
|
- https://github.com/billziss-gh/cgofuse[Go: cgofuse] - Cross-platform FUSE library for Go
|
||||||
|
- https://github.com/DuroSoft/fuse-bindings[Nodejs: fuse-bindings] - Fully maintained FUSE bindings for Node that aims to cover the entire FUSE api
|
||||||
|
- https://github.com/SerCeMan/jnr-fuse[Java: jnr-fuse] - FUSE implementation in Java using Java Native Runtime (JNR)
|
||||||
|
- https://github.com/billziss-gh/fusepy[Python: fusepy] - Simple ctypes bindings for FUSE
|
21
doc/Makefile
@ -1,21 +0,0 @@
|
|||||||
web: \
|
|
||||||
web/winfsp-design.html \
|
|
||||||
web/service-architecture.html \
|
|
||||||
web/sshfs-port-case-study.html \
|
|
||||||
web/winfsp.h.html
|
|
||||||
|
|
||||||
web/winfsp-design.html:
|
|
||||||
mkdir -p web
|
|
||||||
asciidoc -b html4 -a hr= -s -o $@ winfsp-design.adoc
|
|
||||||
|
|
||||||
web/service-architecture.html:
|
|
||||||
mkdir -p web
|
|
||||||
asciidoc -b html4 -a hr= -s -o $@ service-architecture.adoc
|
|
||||||
|
|
||||||
web/sshfs-port-case-study.html:
|
|
||||||
mkdir -p web
|
|
||||||
asciidoc -b html4 -a hr= -s -o $@ sshfs-port-case-study.adoc
|
|
||||||
|
|
||||||
web/winfsp.h.html:
|
|
||||||
mkdir -p web
|
|
||||||
prettydoc -H-O -o web ../inc/winfsp/winfsp.h
|
|
46
doc/NTFS-Compatibility.asciidoc
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
= NTFS Compatibility
|
||||||
|
|
||||||
|
WinFsp enables the creation of user mode file systems that behave similar to NTFS or FAT. Generic Windows applications that access files on a WinFsp file system cannot and should not be able to determine that it is not a native Windows file system. However specialized applications that access NTFS or FAT specific extensions (such as Defrag) will not work properly on WinFsp file systems.
|
||||||
|
|
||||||
|
== Supported features
|
||||||
|
|
||||||
|
WinFsp supports the following NTFS features:
|
||||||
|
|
||||||
|
- Query and set volume information.
|
||||||
|
- Open, create, close, delete files and directories.
|
||||||
|
- Query and set file and directory information.
|
||||||
|
- Query and set security information (ACL's).
|
||||||
|
- Read and write files.
|
||||||
|
- Memory mapped I/O.
|
||||||
|
- Directory change notifications.
|
||||||
|
- Lock and unlock files.
|
||||||
|
- Opportunistic locks.
|
||||||
|
- Open, create, close, delete, query named streams.
|
||||||
|
- Reparse points with special support for symbolic links.
|
||||||
|
|
||||||
|
== Unsupported features
|
||||||
|
|
||||||
|
WinFsp does not support the following NTFS features:
|
||||||
|
|
||||||
|
- Hard links. Rather rarely used on Windows. However it might be worthwhile to implement them for WinFsp.
|
||||||
|
- Extended attributes. Although popular with POSIX file systems, they are severely hampered and rarely used on Windows. They are also not exposed via the Win32 API.
|
||||||
|
- Short file names. Short file names are a relic of the past. WinFsp made a conscious decision not to support them.
|
||||||
|
- Paging files. Providing paging file support via a user mode file system is impossible for a number of reasons.
|
||||||
|
- Object ID's. Opening files by ID (+FILE_OPEN_BY_FILE_ID+) is not supported.
|
||||||
|
- Volume access. Volume handles can be opened and closed, but volumes cannot be read or written. Such an operation makes little sense for most user mode file systems, that do not store information on disks.
|
||||||
|
- Sparse files. A user mode file system is free to implement sparse files. However WinFsp does not support any sparse file related FSCTL or information class codes.
|
||||||
|
- Compressed files. A user mode file system is free to implement compressed files. However WinFsp does not support any compression related FSCTL or information class codes.
|
||||||
|
- Encrypted files. A user mode file system is free to implement encrypted files. However WinFsp does not support any encryption related FSCTL or information class codes.
|
||||||
|
- Quotas.
|
||||||
|
- The Change Journal.
|
||||||
|
- Defragmentation support.
|
||||||
|
|
||||||
|
== Incompatibilities
|
||||||
|
|
||||||
|
This section lists incompatibilites with NTFS in those features that they both support:
|
||||||
|
|
||||||
|
- WinFsp supports case sensitive and case insensitive file systems. However it does not support case sensitive lookups on a case insensitive file system (+SL_CASE_SENSITIVE+).
|
||||||
|
- NTFS updates the file size information in the directory entry when a file is cleaned up. WinFsp file systems do not (and probably should not attempt to) replicate this behavior. [Related article: https://blogs.msdn.microsoft.com/oldnewthing/20111226-00/?p=8813]
|
||||||
|
- NTFS supports change notifications on streams (these are mostly undocumented). WinFsp supports them as well but it differs from NTFS in that it issues a single notification when a file with streams is deleted; NTFS appears to issue one notification per deleted stream.
|
||||||
|
- WinFsp does not support renaming a stream.
|
||||||
|
- NTFS allows for enumeration and change notifications of all reparse points by opening a special NTFS-only "directory" that "contains" all reparse points (+\$Extend\$Reparse:$R:$INDEX_ALLOCATION+). WinFsp does not support this feature.
|
50
doc/Native-API-vs-FUSE.asciidoc
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
= Native API vs FUSE
|
||||||
|
|
||||||
|
This document compares the "native" WinFsp API to the FUSE API and provides a rationale for the existence of both within WinFsp.
|
||||||
|
|
||||||
|
== Overview
|
||||||
|
|
||||||
|
WinFsp provides two different but conceptually similar API's for the same purpose of implementing a user mode file system:
|
||||||
|
|
||||||
|
- The WinFsp API, which is documented in the include file `inc/winfsp/winfsp.h` (and online at http://www.secfs.net/winfsp/apiref/). This API consists of the `FSP_FILE_SYSTEM_INTERFACE` "class" and the `FspFileSystem*` functions.
|
||||||
|
- The FUSE (high-level) API, which is the well understood API from the FUSE project originally by Miklos Szeredi.
|
||||||
|
|
||||||
|
Given the similarities between the two API's some questions naturally arise:
|
||||||
|
|
||||||
|
- What are the differences between the two API's?
|
||||||
|
- Why are both needed?
|
||||||
|
- What is the target audience for each API?
|
||||||
|
|
||||||
|
== Comparison
|
||||||
|
|
||||||
|
The primary difference between the two API's is that the WinFsp API is being designed to use all features available to a Windows file system, whereas the FUSE API is being designed (by the FUSE project) to better fit a POSIX file system. For example, a Windows file system can do the following, that cannot be (easily) made available to FUSE:
|
||||||
|
|
||||||
|
- Create and manage alternate data streams.
|
||||||
|
- Manage arbitrary security descriptors (SID's and ACL's vs POSIX permissions).
|
||||||
|
- Create and manage special files beyond what is supported through FUSE `mknod` (using reparse points).
|
||||||
|
- Support volume labels.
|
||||||
|
- Allow the file system to fulfill Read/Write requests using asynchronous I/O.
|
||||||
|
|
||||||
|
Furthermore there are other smaller, but still important differences:
|
||||||
|
|
||||||
|
- The file deletion model on Windows is different from the FUSE/POSIX model.
|
||||||
|
- The reparse mechanism (which supports symbolic links) on Windows is quite more powerful (and more complicated) than FUSE/POSIX symbolic links.
|
||||||
|
- Windows uses UTF-16 for file names, whereas FUSE uses UTF-8, requiring constant conversions between the two.
|
||||||
|
|
||||||
|
These and other differences make the creation of the WinFsp FUSE compatibility layer non-trivial and suggest that a native API that more closely resembles the Windows file system model is desirable. At the same time there are hundreds of FUSE (high-level) file systems and having a FUSE compatible API is also very desirable.
|
||||||
|
|
||||||
|
== Target Audiences
|
||||||
|
|
||||||
|
As mentioned WinFsp provides two different API's; to further complicate matters the FUSE API can be used from both a native Windows application and a Cygwin (POSIX) application. There are then 3 different audiences that the API's cater for:
|
||||||
|
|
||||||
|
- The WinFsp API audience. This consists of Windows-only file systems or cross-platform file systems that wish to provide maximum features and/or performance on Windows.
|
||||||
|
- The FUSE API for native Windows audience. This consists of FUSE file-systems that have had their core file system code ported to Windows, but have not yet been integrated into the operating system. It also includes cross-platform file systems that do not wish to include advanced (non-POSIX) Windows file system features.
|
||||||
|
- The FUSE API for Cygwin audience. This consists of FUSE file-systems that are ported to Windows/Cygwin with minimal work. For example, the author of this document has ported SSHFS to Cygwin using this API and a minimal SSHFS patch.
|
||||||
|
|
||||||
|
For the developer of a new or Windows exclusive file system the recommendation is to use the WinFsp API as it provides support for all features of the Windows file system.
|
||||||
|
|
||||||
|
For the developer of a FUSE file system that wishes to port their file system to Windows a natural process may be the following:
|
||||||
|
|
||||||
|
- Use the FUSE API for Cygwin to port the file system to Cygwin. In many cases little or no changes to the file system code are required.
|
||||||
|
- Use the FUSE API for native Windows to port the file system to native Windows. This would require porting the core file system code (i.e. those parts of the file system code that actually manage and organize files). Little to no changes should be required for the file system FUSE layer glue.
|
||||||
|
- Use the WinFsp API only if the file system requires maximum features and/or performance under Windows.
|
105
doc/Queued-Events.asciidoc
Normal file
@ -0,0 +1,105 @@
|
|||||||
|
= Queued Events - Windows kernel events with IOCP scheduling characteristics
|
||||||
|
|
||||||
|
In this article I am discussing _Queued Events_. _Queued Events_ are a Windows kernel synchronization mechanism that I invented for https://github.com/billziss-gh/winfsp[WinFsp - FUSE for Windows]. _Queued Events_ behave like kernel Synchronization Events (i.e. Win32 auto-reset events), but provide scheduling characteristics similar to those of I/O Completion Ports.
|
||||||
|
|
||||||
|
== The Problem
|
||||||
|
|
||||||
|
During the later stages of WinFsp development I decided to do some performance testing to understand its behavior and find opportunities for optimization. I found out that WinFsp performed very well in most tested scenarios, but there was one test that seemed to have bad performance for no particular reason.
|
||||||
|
|
||||||
|
I ended up profiling this issue using xperf (included in the https://docs.microsoft.com/en-us/windows-hardware/test/wpt/[Windows Performance Toolkit]), which allows for kernel-level profiling. I spent considerable time looking at the profiling results, but could identify no obvious issue with my code.
|
||||||
|
|
||||||
|
After a day or two of doing this and being stumped I finally had a lightbulb moment: what if the issue is not with my code, but with how the OS schedules threads? Sure enough I had xperf trace context switches and found that on good runs the OS would context switch my file system threads relatively rarely; on bad runs the OS would context switch my threads excessively.
|
||||||
|
|
||||||
|
After contemplating this issue I realized that this was happening because the OS was trying to schedule my threads in a "fair" manner. Windows in general tries to give every thread a chance to run. This can be counter-productive in server-like programs (such as file systems), where all server threads are equivalent and it is actually better to reuse the same thread (if possible) to avoid context switching and other negative effects.
|
||||||
|
|
||||||
|
== The Solution
|
||||||
|
|
||||||
|
One way of looking at WinFsp is as an IPC (Inter-Process Communication) mechanism. The Windows kernel packages file system operations (open, close, read, write) as IRP's (I/O Request Packets) which it sends to WinFsp. WinFsp places them in an _I/O Queue_; at a later time the threads in a user mode file system retrieve the IRP's from the _I/O Queue_ and service them.
|
||||||
|
|
||||||
|
The _I/O Queue_ had gone through multiple iterations, but at the time I was looking at this issue it was using Windows kernel Synchronization Event's (Win32 auto-reset events) for managing threads. The problem was that a wait on a Synchronization Event would be satisfied in a "fair" manner, thus resulting to excessive context switching and bad performance in some circumstances. I needed to find a way to convince Windows to schedule my threads in an "unfair" manner, giving preference to the same thread as much as possible.
|
||||||
|
|
||||||
|
I started considering different schemes where I would associate a different event per thread thus being able to wake up the "correct" thread myself and effectively writing my own mini-scheduler. Luckily I had another lightbulb moment: I/O completion ports already do this better than I would ever be able to!
|
||||||
|
|
||||||
|
The kernel portion of an I/O Completion Port is called a https://msdn.microsoft.com/en-us/library/windows/hardware/ff549547(v=vs.85).aspx[KQUEUE]. KQUEUE's are (unfortunately) not directly exposed to user mode, however they are at the core of the user mode I/O Completion Ports. KQUEUE's are the main reason I/O Completion Ports are so fast as they provide the following scheduling characteristics:
|
||||||
|
|
||||||
|
- They have a Last-In First-Out (LIFO) wait discipline.
|
||||||
|
- They limit the number of threads that can be satisfied concurrently.
|
||||||
|
|
||||||
|
I briefly considered the idea of building _I/O Queues_ directly on top of KQUEUE's, but soon dismissed this idea because _I/O Queues_ are not simple queues but provide additional services, such as IRP cancelation, IRP expiration, etc.
|
||||||
|
|
||||||
|
== Queued Events
|
||||||
|
|
||||||
|
In an ideal scenario I wanted to continue using my implementation of _I/O Queues_ which had undergone considerable testing and I knew it worked. But somehow I had to convince the Windows kernel to change the scheduling characteristics of Synchronization Events to mirror those of a KQUEUE.
|
||||||
|
|
||||||
|
Then I had lightbulb no 3: _Queued Events_ or how to make a queue behave like a Synchronization Event.
|
||||||
|
|
||||||
|
Here is how _Queued Events_ work. A _Queued Event_ consists of a KQUEUE and a spin lock. There is also a single dummy item that can be placed in the KQUEUE.
|
||||||
|
|
||||||
|
The KQUEUE is guaranteed to contain either 0 or 1 items. When the KQUEUE contains 0 items the _Queued Event_ is considered non-signaled. When the KQUEUE contains 1 items the _Queued Event_ is considered signaled.
|
||||||
|
|
||||||
|
ifdef::env-browser[]
|
||||||
|
[ditaa,file="Queued-Events/states.png"]
|
||||||
|
--
|
||||||
|
Non signaled Signaled
|
||||||
|
+---------------------------+ +---------------------------+
|
||||||
|
| Queued Event | | Queued Event |
|
||||||
|
+---------------------------+ +---------------------------+
|
||||||
|
| | | +---------+ |
|
||||||
|
| KQUEUE (empty) | | KQUEUE | DUMMY | |
|
||||||
|
| | | +---------+ |
|
||||||
|
+---------------------------+ +---------------------------+
|
||||||
|
--
|
||||||
|
endif::env-browser[]
|
||||||
|
ifndef::env-browser[image::Queued-Events/states.png[]]
|
||||||
|
|
||||||
|
To transition from the non-signaled to the signaled state, we acquire the spin lock and then insert the dummy item in the KQUEUE using https://msdn.microsoft.com/en-us/library/windows/hardware/ff549570(v=vs.85).aspx[KeInsertQueue]. To transition from the signaled to the non-signaled state, we simply (wait and) remove the dummy item from the KQUEUE using https://msdn.microsoft.com/en-us/library/windows/hardware/ff549605(v=vs.85).aspx[KeRemoveQueue] (without the use of the spin lock).
|
||||||
|
|
||||||
|
----
|
||||||
|
EventSet:
|
||||||
|
AcquireSpinLock
|
||||||
|
if (0 == KeReadState()) // if KQUEUE is empty
|
||||||
|
KeInsertQueue(DUMMY);
|
||||||
|
ReleaseSpinLock
|
||||||
|
|
||||||
|
EventWait:
|
||||||
|
KeRemoveQueue(); // (wait and) remove item
|
||||||
|
----
|
||||||
|
|
||||||
|
First notice that EventSet is serialized by the use of the spin lock. This guarantees that the dummy item can be only inserted ONCE in the KQUEUE and that the only possible signaled state transitions for EventSet are 0->1 and 1->1. This is how https://msdn.microsoft.com/en-us/library/windows/hardware/ff553253(v=vs.85).aspx[KeSetEvent] works for a Synchronization Event.
|
||||||
|
|
||||||
|
Second notice that EventWait is not protected by the spin lock, which means that it can happen at any time including concurrently with EventSet or another EventWait. Notice also that for EventWait the only possible transitions are 1->0 or 0->0 (0->block->0). This is how https://msdn.microsoft.com/en-us/library/windows/hardware/ff553350(v=vs.85).aspx[KeWaitForSingleObject] works for a Synchronization Event.
|
||||||
|
|
||||||
|
ifdef::env-browser[]
|
||||||
|
[ditaa,file="Queued-Events/transitions.png"]
|
||||||
|
--
|
||||||
|
Non signaled Signaled
|
||||||
|
+---------------------------+ +---------------------------+
|
||||||
|
| Queued Event | | Queued Event |
|
||||||
|
+---------------------------+ +---------------------------+
|
||||||
|
| | ---EventSet --> | +---------+ |
|
||||||
|
| KQUEUE (empty) | | KQUEUE | DUMMY | |
|
||||||
|
| | <--EventWait--- | +---------+ |
|
||||||
|
+---------------------------+ +---------------------------+
|
||||||
|
--
|
||||||
|
endif::env-browser[]
|
||||||
|
ifndef::env-browser[image::Queued-Events/transitions.png[]]
|
||||||
|
|
||||||
|
We now have to consider what happens when we have one EventSet concurrently with one or more EventWait's:
|
||||||
|
|
||||||
|
1. The EventWait(s) happen before https://msdn.microsoft.com/en-us/library/windows/hardware/ff549591(v=vs.85).aspx[KeReadState]. If the KQUEUE has an item one EventWait gets satisfied, otherwise it blocks. In this case KeReadState will read the KQUEUE's state as 0 and KeInsertQueue will insert the dummy item, which will unblock the EventWait.
|
||||||
|
2. The EventWait(s) happen after KeReadState, but before KeInsertQueue. If the dummy item was already in the KQUEUE the KeReadState test will fail and KeInsertQueue will not be executed, but EventWait will be satisfied immediately. If the dummy item was not in the KQUEUE the KeReadState will succeed and EventWait will momentarily block until KeInsertQueue releases it.
|
||||||
|
3. The EventWait(s) happen after KeInsertQueue. In this case the dummy item in is the KQUEUE already and one EventWait will be satisfied immediately.
|
||||||
|
|
||||||
|
NOTE: _Queued Events_ cannot cleanly support an EventClear operation. The obvious choice of using KeRemoveQueue with a 0 timeout is insufficient because it would associate the current thread with the KQUEUE and that is not desirable. KeRundownQueue cannot be used either because it disassociates all threads from the KQUEUE.
|
||||||
|
|
||||||
|
The complete implementation of _Queued Events_ within WinFsp can be found here: https://github.com/billziss-gh/winfsp/blob/v1.1/src/sys/driver.h#L655-L795
|
||||||
|
|
||||||
|
== Queued Events Scheduling Characteristics
|
||||||
|
|
||||||
|
Queued Events encapsulate KQUEUE's and therefore inherit their scheduling characteristics:
|
||||||
|
|
||||||
|
- They have a Last-In First-Out (LIFO) wait discipline.
|
||||||
|
- They limit the number of threads that can be satisfied concurrently.
|
||||||
|
|
||||||
|
These characteristics are desirable because they reduce the number of context switches thus speeding up the WinFsp IPC implementation. Performance testing immediately after the incorporation of _Queued Events_ into WinFsp showed significant performance improvements; profiling with xperf showed that context switches among file system threads were now a relatively rare event!
|
||||||
|
|
BIN
doc/Queued-Events/states.png
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
doc/Queued-Events/transitions.png
Normal file
After Width: | Height: | Size: 19 KiB |
@ -1,6 +1,6 @@
|
|||||||
= SSHFS Port Case Study
|
= SSHFS Port Case Study
|
||||||
|
|
||||||
This document is a case study in porting SSHFS to Windows and WinFsp. At the time of this writing WinFsp has a native API, but no FUSE compatible API. The main purpose of this case study is to develop a FUSE compatible API for WinFsp.
|
This document is a case study in porting SSHFS to Windows and WinFsp. At the time that the document was started WinFsp had a native API, but no FUSE compatible API. The main purpose of the case study was to develop a FUSE compatible API for WinFsp.
|
||||||
|
|
||||||
== Step 1: Gather Information about SSHFS
|
== Step 1: Gather Information about SSHFS
|
||||||
|
|
||||||
@ -215,3 +215,52 @@ fuse_destroy
|
|||||||
----
|
----
|
||||||
|
|
||||||
With this change `fuse_daemonize` works and allows me to declare the Cygwin portion of the SSHFS port complete!
|
With this change `fuse_daemonize` works and allows me to declare the Cygwin portion of the SSHFS port complete!
|
||||||
|
|
||||||
|
== Step 5: POSIX special files
|
||||||
|
|
||||||
|
Although WinFsp now has a working FUSE implementation there remains an important problem: how to handle POSIX special files such as named pipes (FIFO), devices (CHR, BLK), sockets (SOCK) or symbolic links (LNK).
|
||||||
|
|
||||||
|
While Windows has support for symbolic links (LNK) there is no direct support for other POSIX special files. The question then is how to represent such files when they are accessed by Windows. This is especially important to systems like Cygwin that understand POSIX special files and can even create them.
|
||||||
|
|
||||||
|
Cygwin normally emulates symbolic links and special files using special shortcut (.lnk) files. However many FUSE file systems support POSIX special files; it is desirable then that applications, like Cygwin, that understand them should be able to create and access them without resorting to hacks like using .lnk files.
|
||||||
|
|
||||||
|
The problem was originally mentioned by Herbert Stocker on the Cygwin mailing list:
|
||||||
|
|
||||||
|
[quote]
|
||||||
|
____
|
||||||
|
The mkfifo system call will have Cygwin create a .lnk file and
|
||||||
|
WinFsp will forward it as such to the file system process. The
|
||||||
|
system calls readdir or open will then have the file system
|
||||||
|
process tell WinFsp that there is a .lnk file and Cygwin will
|
||||||
|
translate this back to a fifo, so in this sense it does work.
|
||||||
|
|
||||||
|
But the file system will see a file (with name *.lnk) where it
|
||||||
|
should see a pipe (mknod call with \'mode' set to S_IFIFO).
|
||||||
|
IMHO one could say this is a break of the FUSE API.
|
||||||
|
|
||||||
|
Practically it will break:
|
||||||
|
|
||||||
|
- File systems that special-treat pipe files (or .lnk files).
|
||||||
|
|
||||||
|
- If one uses sshfs to connect to a Linux based server and
|
||||||
|
issues the command mkfifo foo from Cygwin, the server will
|
||||||
|
end up with a .lnk file instead of a pipe special file.
|
||||||
|
|
||||||
|
- Imagine something like mysqlfs, which stores the stuff in a
|
||||||
|
database. When you run SQL statements to analyze the data
|
||||||
|
in the file system, you won't see the pipes as such. Or if
|
||||||
|
you open the file system from Linux you'll see the .lnk
|
||||||
|
files.
|
||||||
|
____
|
||||||
|
|
||||||
|
Herbert is of course right. A .lnk file is not a FIFO to any application other than Cygwin. We need a better mechanism for representing special files. One such mechanism is reparse points.
|
||||||
|
|
||||||
|
Reparse points can be viewed as a form of special metadata that can be attached to a file or directory. The interesting thing about reparse points is that they can have special meaning to a file system driver (NTFS/WinFsp), a filter driver (e.g. a hierarchical storage system) or even an application (Cygwin).
|
||||||
|
|
||||||
|
Symbolic links are already implemented as reparse points on Windows. We could perhaps define a new reparse point type for representing POSIX special files. Turns out that this is unnecessary, because Microsoft has already defined a reparse point type for special files on NFS: https://msdn.microsoft.com/en-us/library/dn617178.aspx
|
||||||
|
|
||||||
|
It is a relatively straightforward task then to map reparse point operations into their FUSE equivalents:
|
||||||
|
|
||||||
|
GetReparsePoint:: Mapped to `getattr`/`fgetattr` and possibly `readlink` (in the case of a symbolic link). The returned `stat.st_mode` information is transformed to the appropriate reparse point information.
|
||||||
|
|
||||||
|
SetReparsePoint:: Mapped to `symlink` or `mknod` depending on whether a symbolic link or other special file is created.
|
BIN
doc/WinFsp-Icon.png
Normal file
After Width: | Height: | Size: 3.8 KiB |
192
doc/WinFsp-Performance-Testing.asciidoc
Normal file
@ -0,0 +1,192 @@
|
|||||||
|
= Performance Testing
|
||||||
|
:caption:
|
||||||
|
|
||||||
|
This document discusses performance testing for WinFsp. The goal of this performance testing is to discover optimization opportunities for WinFsp and compare its performance to that of NTFS and Dokany.
|
||||||
|
|
||||||
|
== Executive Summary
|
||||||
|
|
||||||
|
This performance testing shows that WinFsp has excellent performance in all tested scenarios. It outperforms NTFS in most scenarios (an unfair comparison as NTFS is a disk file system and WinFsp is tested with an in-memory file system). It also outperforms Dokany in all scenarios, often by an order of magnitude.
|
||||||
|
|
||||||
|
ifdef::env-browser[chart::bar[data-uri="WinFsp-Performance-Testing/file_tests.csv",file="WinFsp-Performance-Testing/file_tests.png",opt="y-label=time"]]
|
||||||
|
ifndef::env-browser[image::WinFsp-Performance-Testing/file_tests.png[]]
|
||||||
|
|
||||||
|
ifdef::env-browser[chart::bar[data-uri="WinFsp-Performance-Testing/rdwr_tests.csv",file="WinFsp-Performance-Testing/rdwr_tests.png",opt="y-label=time"]]
|
||||||
|
ifndef::env-browser[image::WinFsp-Performance-Testing/rdwr_tests.png[]]
|
||||||
|
|
||||||
|
== Fsbench
|
||||||
|
|
||||||
|
All testing was performed using a new performance test suite developed as part of WinFsp, called https://github.com/billziss-gh/winfsp/blob/master/tst/fsbench/fsbench.c[fsbench]. Fsbench was developed because it allows the creation of tests that are important to file system developers; for example, it can answer questions of the type: "how long does it take to delete 1000 files" or "how long does it take to list a directory with 10000 files in it".
|
||||||
|
|
||||||
|
Fsbench is based on the https://github.com/billziss-gh/winfsp/tree/master/ext/tlib[tlib] library, originally from the *secfs* project. Tlib is usually used to develop regression test suites in C/C++, but can be also used to create performance tests.
|
||||||
|
|
||||||
|
Fsbench currently includes the following tests:
|
||||||
|
|
||||||
|
[width="100%",cols="20%,60%,20%",options="header"]
|
||||||
|
|===
|
||||||
|
|Test |Measures performance of |Parameters
|
||||||
|
|file_create_test |CreateFileW(CREATE_NEW) / CloseHandle |file count
|
||||||
|
|file_open_test |CreateFileW(OPEN_EXISTING) / CloseHandle |file count
|
||||||
|
|file_overwrite_test|CreateFileW(CREATE_ALWAYS) / CloseHandle with existing files|file count
|
||||||
|
|file_list_test |FindFirstFileW / FindNextFile / FindClose |iterations
|
||||||
|
|file_delete_test |DeleteFileW |file count
|
||||||
|
|file_mkdir_test |CreateDirectoryW |file count
|
||||||
|
|file_rmdir_test |RemoveDirectoryW |file count
|
||||||
|
|rdwr_cc_write_page_test |WriteFile (1 page; cached) |iterations
|
||||||
|
|rdwr_cc_read_page_test |ReadFile (1 page; cached) |iterations
|
||||||
|
|rdwr_nc_write_page_test |WriteFile (1 page; non-cached) |iterations
|
||||||
|
|rdwr_nc_read_page_test |ReadFile (1 page; non-cached) |iterations
|
||||||
|
|rdwr_cc_write_large_test |WriteFile (16 pages; cached) |iterations
|
||||||
|
|rdwr_cc_read_large_test |ReadFile (16 pages; cached) |iterations
|
||||||
|
|rdwr_nc_write_large_test |WriteFile (16 pages; non-cached) |iterations
|
||||||
|
|rdwr_nc_read_large_test |ReadFile (16 pages; non-cached) |iterations
|
||||||
|
|mmap_write_test |Memory mapped write test |iterations
|
||||||
|
|mmap_write_test |Memory mapped read test |iterations
|
||||||
|
|===
|
||||||
|
|
||||||
|
== Tested File Systems
|
||||||
|
|
||||||
|
=== NTFS
|
||||||
|
|
||||||
|
The comparison to NTFS is very important to establish a baseline. It is also very misleading because NTFS is a disk file system and MEMFS (either the WinFsp or Dokany variants) is an in memory file system. The tests will show that MEMFS is faster than NTFS. This should not be taken to mean that we are trying to make the (obvious) claim that an in memory file system is faster than a disk file system, but to show that the approach of writing a file system in user mode is a valid proposition and can be efficient.
|
||||||
|
|
||||||
|
=== WinFsp/MEMFS
|
||||||
|
|
||||||
|
MEMFS is the file system used to test WinFsp and shipped as a sample bundled with the WinFsp installer. MEMFS is a simple in memory file system and as such is very fast under most conditions. This is desirable because our goal with this performance testing is to measure the speed of the WinFsp system components rather the performance of a complex user mode file system. MEMFS has minimal overhead and is ideal for this purpose.
|
||||||
|
|
||||||
|
WinFsp/MEMFS can be run in different configurations, which enable or disable WinFsp caching features. The tested configurations were:
|
||||||
|
|
||||||
|
- An infinite FileInfoTimeout, which enables caching of metadata and data.
|
||||||
|
- A FileInfoTimeout of 1s (second), which enables caching of metadata but disables caching of data.
|
||||||
|
- A FileInfoTimeout of 0, which completely disables caching.
|
||||||
|
|
||||||
|
The WinFsp git commit at the time of testing was d804f5674d76f11ea86d14f4bcb1157e6e40e719.
|
||||||
|
|
||||||
|
=== Dokany/MEMFS
|
||||||
|
|
||||||
|
To achieve fairness when comparing Dokany to WinFsp the MEMFS file system has been ported to Dokany. Substantial care was taken to ensure that WinFsp/MEMFS and Dokany/MEMFS perform equally well, so that the performance of the Dokany FSD and user-mode components can be measured and compared accurately.
|
||||||
|
|
||||||
|
The Dokany/MEMFS project has its own https://github.com/billziss-gh/memfs-dokany[repository]. The project comes without a license, which means that it may not be used for any purpose other than as a reference.
|
||||||
|
|
||||||
|
The Dokany version used for testing was 1.0.1. The Dokany/MEMFS git commit was 27a678d7c0d5ee2fb3fb2ecc8e38210857ae941c.
|
||||||
|
|
||||||
|
== Test Environment
|
||||||
|
|
||||||
|
Tests were performed on an idle computer/VM. There was a reboot of both the computer and VM before each file system was tested. Each test was run twice and the smaller time value chosen. The assumption is that even in a seemingly idle desktop system there is some activity which will affect the results; the smaller value is the preferred one to use because it reflects the time when there is less or no other activity.
|
||||||
|
|
||||||
|
The test environment was as follows:
|
||||||
|
----
|
||||||
|
MacBook Pro (Retina, 13-inch, Early 2015)
|
||||||
|
3.1 GHz Intel Core i7
|
||||||
|
16 GB 1867 MHz DDR3
|
||||||
|
500 GB SSD
|
||||||
|
|
||||||
|
VirtualBox Version 5.0.20 r106931
|
||||||
|
1 CPU
|
||||||
|
4 GB RAM
|
||||||
|
80 GB Dynamically allocated differencing storage
|
||||||
|
|
||||||
|
Windows 10 (64-bit) Version 1511 (OS Build 10586.420)
|
||||||
|
----
|
||||||
|
|
||||||
|
== Test Results
|
||||||
|
|
||||||
|
In the graphs below we use consistent coloring to quickly identify a file system. Red is used for NTFS, yellow for WinFsp/MEMFS with a FileInfoTimeout of 0, green for WinFsp/MEMFS with a FileInfoTimeout of 1, light blue for WinFsp/MEMFS with an infinite FileInfoTimeout and deep blue for Dokany/MEMFS.
|
||||||
|
|
||||||
|
In all tests lower times are better (the file system is faster).
|
||||||
|
|
||||||
|
=== File Tests
|
||||||
|
|
||||||
|
These tests measure the performance of creating, opening, overwriting and listing files and directories.
|
||||||
|
|
||||||
|
==== file_create_test
|
||||||
|
|
||||||
|
This test measures the performance of CreateFileW(CREATE_NEW) / CloseHandle. WinFsp has the best performance here. Dokany follows and NTFS is last as it has to actually update its data structures on disk.
|
||||||
|
|
||||||
|
ifdef::env-browser[chart::line[data-uri="WinFsp-Performance-Testing/file_create_test.csv",file="WinFsp-Performance-Testing/file_create_test.png",opt="x-label=file count,y-label=time"]]
|
||||||
|
ifndef::env-browser[image::WinFsp-Performance-Testing/file_create_test.png[]]
|
||||||
|
|
||||||
|
==== file_open_test
|
||||||
|
|
||||||
|
This test measures the performance of CreateFileW(OPEN_EXISTING) / CloseHandle. WinFsp again has the best (although uneven) performance, followed by NTFS and then Dokany.
|
||||||
|
|
||||||
|
WinFsp appears to have very uneven performance here. In particular notice that opening 1000 files is slower than opening 2000 files, which makes no sense! I suspect that the test observes an initial acquisition of resouces when the test first starts, which is not necessary when the test runs for 2000 files at a later time. This uneven performance should probably be investigated in the future.
|
||||||
|
|
||||||
|
ifdef::env-browser[chart::line[data-uri="WinFsp-Performance-Testing/file_open_test.csv",file="WinFsp-Performance-Testing/file_open_test.png",opt="x-label=file count,y-label=time"]]
|
||||||
|
ifndef::env-browser[image::WinFsp-Performance-Testing/file_open_test.png[]]
|
||||||
|
|
||||||
|
==== file_overwrite_test
|
||||||
|
|
||||||
|
This test measures the performance of CreateFileW(CREATE_ALWAYS) / CloseHandle. WinFsp is fastest, followed by NTFS and then Dokany.
|
||||||
|
|
||||||
|
ifdef::env-browser[chart::line[data-uri="WinFsp-Performance-Testing/file_overwrite_test.csv",file="WinFsp-Performance-Testing/file_overwrite_test.png",opt="x-label=file count,y-label=time"]]
|
||||||
|
ifndef::env-browser[image::WinFsp-Performance-Testing/file_overwrite_test.png[]]
|
||||||
|
|
||||||
|
==== file_list_test
|
||||||
|
|
||||||
|
This test measures the performance of FindFirstFileW / FindNextFile / FindClose. NTFS wins this scenario, likely because it can satisfy the list operation from cache. WinFsp has overall good performance. Dokany appears to show slightly quadratic performance in this scenario.
|
||||||
|
|
||||||
|
ifdef::env-browser[chart::line[data-uri="WinFsp-Performance-Testing/file_list_test.csv",file="WinFsp-Performance-Testing/file_list_test.png",opt="x-label=file count,y-label=time"]]
|
||||||
|
ifndef::env-browser[image::WinFsp-Performance-Testing/file_list_test.png[]]
|
||||||
|
|
||||||
|
==== file_delete_test
|
||||||
|
|
||||||
|
This test measures the performance of DeleteFileW. WinFsp has the best performance, followed by Dokany and NTFS with very similar performance.
|
||||||
|
|
||||||
|
ifdef::env-browser[chart::line[data-uri="WinFsp-Performance-Testing/file_delete_test.csv",file="WinFsp-Performance-Testing/file_delete_test.png",opt="x-label=file count,y-label=time"]]
|
||||||
|
ifndef::env-browser[image::WinFsp-Performance-Testing/file_delete_test.png[]]
|
||||||
|
|
||||||
|
=== Read/Write Tests
|
||||||
|
|
||||||
|
These tests measure the performance of cached, non-cached and memory-mapped I/O.
|
||||||
|
|
||||||
|
==== rdwr_cc_write_page_test
|
||||||
|
|
||||||
|
This test measures the performance of cached WriteFile with 1 page writes. NTFS and WinFsp with an infinite FileInfoTimeout have the best performance, with a clear edge to NTFS (likely because of its use of FastIO, which WinFsp does not currently support). WinFsp with a FileInfoTimeout of 0 or 1 performance is next, because WinFsp does not use the NTOS Cache Manager in this scenario. Dokany performance is last.
|
||||||
|
|
||||||
|
ifdef::env-browser[chart::line[data-uri="WinFsp-Performance-Testing/rdwr_cc_write_page_test.csv",file="WinFsp-Performance-Testing/rdwr_cc_write_page_test.png",opt="x-label=iterations,y-label=time"]]
|
||||||
|
ifndef::env-browser[image::WinFsp-Performance-Testing/rdwr_cc_write_page_test.png[]]
|
||||||
|
|
||||||
|
==== rdwr_cc_read_page_test
|
||||||
|
|
||||||
|
This test measures the performance of cached ReadFile with 1 page reads. The results here are very similar to the rdwr_cc_write_page_test case and similar comments apply.
|
||||||
|
|
||||||
|
ifdef::env-browser[chart::line[data-uri="WinFsp-Performance-Testing/rdwr_cc_read_page_test.csv",file="WinFsp-Performance-Testing/rdwr_cc_read_page_test.png",opt="x-label=iterations,y-label=time"]]
|
||||||
|
ifndef::env-browser[image::WinFsp-Performance-Testing/rdwr_cc_read_page_test.png[]]
|
||||||
|
|
||||||
|
==== rdwr_nc_write_page_test
|
||||||
|
|
||||||
|
This test measures the performance of non-cached WriteFile with 1 page writes. WinFsp has the best performance, followed by Dokany. NTFS shows bad performance, which of course make sense as we are asking it to write all data to the disk.
|
||||||
|
|
||||||
|
ifdef::env-browser[chart::line[data-uri="WinFsp-Performance-Testing/rdwr_nc_write_page_test.csv",file="WinFsp-Performance-Testing/rdwr_nc_write_page_test.png",opt="x-label=iterations,y-label=time"]]
|
||||||
|
ifndef::env-browser[image::WinFsp-Performance-Testing/rdwr_nc_write_page_test.png[]]
|
||||||
|
|
||||||
|
==== rdwr_nc_read_page_test
|
||||||
|
|
||||||
|
This test measures the performance of non-cached ReadFile with 1 page reads. The results here are very similar to the rdwr_nc_write_page_test case and similar comments apply.
|
||||||
|
|
||||||
|
ifdef::env-browser[chart::line[data-uri="WinFsp-Performance-Testing/rdwr_nc_read_page_test.csv",file="WinFsp-Performance-Testing/rdwr_nc_read_page_test.png",opt="x-label=iterations,y-label=time"]]
|
||||||
|
ifndef::env-browser[image::WinFsp-Performance-Testing/rdwr_nc_read_page_test.png[]]
|
||||||
|
|
||||||
|
==== mmap_write_test
|
||||||
|
|
||||||
|
This test measures the performance of memory mapped writes. NTFS and WinFsp seem to have identical performance here, which actually makes sense because memory mapped I/O is effectively always cached and most of the actual I/O is done asynchronously by the system.
|
||||||
|
|
||||||
|
There are no results for Dokany as it seems to (still) not support memory mapped files:
|
||||||
|
|
||||||
|
----
|
||||||
|
Y:\>c:\Users\billziss\Projects\winfsp\build\VStudio\build\Release\fsbench-x64.exe --mmap=100 mmap*
|
||||||
|
mmap_write_test........................ KO
|
||||||
|
ASSERT(0 != Mapping) failed at fsbench.c:226:mmap_dotest
|
||||||
|
----
|
||||||
|
|
||||||
|
ifdef::env-browser[chart::line[data-uri="WinFsp-Performance-Testing/mmap_write_test.csv",file="WinFsp-Performance-Testing/mmap_write_test.png",opt="x-label=iterations,y-label=time"]]
|
||||||
|
ifndef::env-browser[image::WinFsp-Performance-Testing/mmap_write_test.png[]]
|
||||||
|
|
||||||
|
==== mmap_read_test
|
||||||
|
|
||||||
|
This test measures the performance of memory mapped reads. Again NTFS and WinFsp seem to have identical performance here.
|
||||||
|
|
||||||
|
There are no results for Dokany as it faces the same issue as with mmap_write_test.
|
||||||
|
|
||||||
|
ifdef::env-browser[chart::line[data-uri="WinFsp-Performance-Testing/mmap_read_test.csv",file="WinFsp-Performance-Testing/mmap_read_test.png",opt="x-label=iterations,y-label=time"]]
|
||||||
|
ifndef::env-browser[image::WinFsp-Performance-Testing/mmap_read_test.png[]]
|
75
doc/WinFsp-Performance-Testing/ORIG/dokany-1.csv
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
file_create_test,1000,0.28
|
||||||
|
file_open_test,1000,0.14
|
||||||
|
file_overwrite_test,1000,0.33
|
||||||
|
file_list_test,1000,0.16
|
||||||
|
file_delete_test,1000,0.17
|
||||||
|
file_mkdir_test,1000,0.08
|
||||||
|
file_rmdir_test,1000,0.14
|
||||||
|
file_create_test,2000,0.67
|
||||||
|
file_open_test,2000,0.27
|
||||||
|
file_overwrite_test,2000,0.69
|
||||||
|
file_list_test,2000,0.36
|
||||||
|
file_delete_test,2000,0.36
|
||||||
|
file_mkdir_test,2000,0.33
|
||||||
|
file_rmdir_test,2000,0.23
|
||||||
|
file_create_test,3000,0.91
|
||||||
|
file_open_test,3000,0.42
|
||||||
|
file_overwrite_test,3000,1.03
|
||||||
|
file_list_test,3000,0.64
|
||||||
|
file_delete_test,3000,0.56
|
||||||
|
file_mkdir_test,3000,0.52
|
||||||
|
file_rmdir_test,3000,0.34
|
||||||
|
file_create_test,4000,1.25
|
||||||
|
file_open_test,4000,0.55
|
||||||
|
file_overwrite_test,4000,1.34
|
||||||
|
file_list_test,4000,0.97
|
||||||
|
file_delete_test,4000,0.72
|
||||||
|
file_mkdir_test,4000,0.66
|
||||||
|
file_rmdir_test,4000,0.47
|
||||||
|
file_create_test,5000,1.87
|
||||||
|
file_open_test,5000,0.67
|
||||||
|
file_overwrite_test,5000,1.64
|
||||||
|
file_list_test,5000,1.38
|
||||||
|
file_delete_test,5000,0.91
|
||||||
|
file_mkdir_test,5000,0.83
|
||||||
|
file_rmdir_test,5000,0.59
|
||||||
|
rdwr_cc_write_page_test,100,2.19
|
||||||
|
rdwr_cc_read_page_test,100,2.31
|
||||||
|
rdwr_cc_write_large_test,100,0.33
|
||||||
|
rdwr_cc_read_large_test,100,0.28
|
||||||
|
rdwr_cc_write_page_test,200,4.33
|
||||||
|
rdwr_cc_read_page_test,200,4.58
|
||||||
|
rdwr_cc_write_large_test,200,0.59
|
||||||
|
rdwr_cc_read_large_test,200,0.59
|
||||||
|
rdwr_cc_write_page_test,300,6.37
|
||||||
|
rdwr_cc_read_page_test,300,7.00
|
||||||
|
rdwr_cc_write_large_test,300,0.91
|
||||||
|
rdwr_cc_read_large_test,300,0.89
|
||||||
|
rdwr_cc_write_page_test,400,8.59
|
||||||
|
rdwr_cc_read_page_test,400,9.34
|
||||||
|
rdwr_cc_write_large_test,400,1.22
|
||||||
|
rdwr_cc_read_large_test,400,1.17
|
||||||
|
rdwr_cc_write_page_test,500,10.70
|
||||||
|
rdwr_cc_read_page_test,500,11.47
|
||||||
|
rdwr_cc_write_large_test,500,1.47
|
||||||
|
rdwr_cc_read_large_test,500,1.45
|
||||||
|
rdwr_nc_write_page_test,100,2.20
|
||||||
|
rdwr_nc_read_page_test,100,2.22
|
||||||
|
rdwr_nc_write_large_test,100,0.36
|
||||||
|
rdwr_nc_read_large_test,100,0.30
|
||||||
|
rdwr_nc_write_page_test,200,4.72
|
||||||
|
rdwr_nc_read_page_test,200,4.48
|
||||||
|
rdwr_nc_write_large_test,200,0.63
|
||||||
|
rdwr_nc_read_large_test,200,0.58
|
||||||
|
rdwr_nc_write_page_test,300,6.53
|
||||||
|
rdwr_nc_read_page_test,300,6.56
|
||||||
|
rdwr_nc_write_large_test,300,0.91
|
||||||
|
rdwr_nc_read_large_test,300,0.84
|
||||||
|
rdwr_nc_write_page_test,400,9.05
|
||||||
|
rdwr_nc_read_page_test,400,8.67
|
||||||
|
rdwr_nc_write_large_test,400,1.22
|
||||||
|
rdwr_nc_read_large_test,400,1.13
|
||||||
|
rdwr_nc_write_page_test,500,11.45
|
||||||
|
rdwr_nc_read_page_test,500,10.86
|
||||||
|
rdwr_nc_write_large_test,500,1.50
|
||||||
|
rdwr_nc_read_large_test,500,1.44
|
|
75
doc/WinFsp-Performance-Testing/ORIG/dokany-2.csv
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
file_create_test,1000,0.28
|
||||||
|
file_open_test,1000,0.15
|
||||||
|
file_overwrite_test,1000,0.33
|
||||||
|
file_list_test,1000,0.16
|
||||||
|
file_delete_test,1000,0.19
|
||||||
|
file_mkdir_test,1000,0.08
|
||||||
|
file_rmdir_test,1000,0.13
|
||||||
|
file_create_test,2000,0.69
|
||||||
|
file_open_test,2000,0.27
|
||||||
|
file_overwrite_test,2000,0.67
|
||||||
|
file_list_test,2000,0.37
|
||||||
|
file_delete_test,2000,0.36
|
||||||
|
file_mkdir_test,2000,0.33
|
||||||
|
file_rmdir_test,2000,0.25
|
||||||
|
file_create_test,3000,0.92
|
||||||
|
file_open_test,3000,0.41
|
||||||
|
file_overwrite_test,3000,1.08
|
||||||
|
file_list_test,3000,0.66
|
||||||
|
file_delete_test,3000,0.56
|
||||||
|
file_mkdir_test,3000,0.48
|
||||||
|
file_rmdir_test,3000,0.38
|
||||||
|
file_create_test,4000,1.31
|
||||||
|
file_open_test,4000,0.61
|
||||||
|
file_overwrite_test,4000,1.38
|
||||||
|
file_list_test,4000,1.00
|
||||||
|
file_delete_test,4000,0.73
|
||||||
|
file_mkdir_test,4000,0.66
|
||||||
|
file_rmdir_test,4000,0.53
|
||||||
|
file_create_test,5000,1.64
|
||||||
|
file_open_test,5000,0.67
|
||||||
|
file_overwrite_test,5000,1.67
|
||||||
|
file_list_test,5000,1.38
|
||||||
|
file_delete_test,5000,0.91
|
||||||
|
file_mkdir_test,5000,0.98
|
||||||
|
file_rmdir_test,5000,0.66
|
||||||
|
rdwr_cc_write_page_test,100,2.08
|
||||||
|
rdwr_cc_read_page_test,100,2.23
|
||||||
|
rdwr_cc_write_large_test,100,0.33
|
||||||
|
rdwr_cc_read_large_test,100,0.28
|
||||||
|
rdwr_cc_write_page_test,200,4.23
|
||||||
|
rdwr_cc_read_page_test,200,4.63
|
||||||
|
rdwr_cc_write_large_test,200,0.61
|
||||||
|
rdwr_cc_read_large_test,200,0.58
|
||||||
|
rdwr_cc_write_page_test,300,6.33
|
||||||
|
rdwr_cc_read_page_test,300,6.78
|
||||||
|
rdwr_cc_write_large_test,300,0.92
|
||||||
|
rdwr_cc_read_large_test,300,0.86
|
||||||
|
rdwr_cc_write_page_test,400,8.48
|
||||||
|
rdwr_cc_read_page_test,400,9.02
|
||||||
|
rdwr_cc_write_large_test,400,1.20
|
||||||
|
rdwr_cc_read_large_test,400,1.16
|
||||||
|
rdwr_cc_write_page_test,500,10.33
|
||||||
|
rdwr_cc_read_page_test,500,11.20
|
||||||
|
rdwr_cc_write_large_test,500,1.53
|
||||||
|
rdwr_cc_read_large_test,500,1.47
|
||||||
|
rdwr_nc_write_page_test,100,2.23
|
||||||
|
rdwr_nc_read_page_test,100,2.22
|
||||||
|
rdwr_nc_write_large_test,100,0.31
|
||||||
|
rdwr_nc_read_large_test,100,0.30
|
||||||
|
rdwr_nc_write_page_test,200,4.66
|
||||||
|
rdwr_nc_read_page_test,200,4.34
|
||||||
|
rdwr_nc_write_large_test,200,0.61
|
||||||
|
rdwr_nc_read_large_test,200,0.63
|
||||||
|
rdwr_nc_write_page_test,300,6.44
|
||||||
|
rdwr_nc_read_page_test,300,6.34
|
||||||
|
rdwr_nc_write_large_test,300,0.92
|
||||||
|
rdwr_nc_read_large_test,300,0.84
|
||||||
|
rdwr_nc_write_page_test,400,8.56
|
||||||
|
rdwr_nc_read_page_test,400,8.78
|
||||||
|
rdwr_nc_write_large_test,400,1.26
|
||||||
|
rdwr_nc_read_large_test,400,1.11
|
||||||
|
rdwr_nc_write_page_test,500,10.73
|
||||||
|
rdwr_nc_read_page_test,500,10.59
|
||||||
|
rdwr_nc_write_large_test,500,1.53
|
||||||
|
rdwr_nc_read_large_test,500,1.41
|
|
85
doc/WinFsp-Performance-Testing/ORIG/ntfs-1.csv
Normal file
@ -0,0 +1,85 @@
|
|||||||
|
file_create_test,1000,0.92
|
||||||
|
file_open_test,1000,0.08
|
||||||
|
file_overwrite_test,1000,0.19
|
||||||
|
file_list_test,1000,0.08
|
||||||
|
file_delete_test,1000,0.19
|
||||||
|
file_mkdir_test,1000,0.16
|
||||||
|
file_rmdir_test,1000,0.11
|
||||||
|
file_create_test,2000,1.45
|
||||||
|
file_open_test,2000,0.17
|
||||||
|
file_overwrite_test,2000,0.38
|
||||||
|
file_list_test,2000,0.16
|
||||||
|
file_delete_test,2000,0.39
|
||||||
|
file_mkdir_test,2000,0.25
|
||||||
|
file_rmdir_test,2000,0.28
|
||||||
|
file_create_test,3000,1.11
|
||||||
|
file_open_test,3000,0.23
|
||||||
|
file_overwrite_test,3000,0.72
|
||||||
|
file_list_test,3000,0.23
|
||||||
|
file_delete_test,3000,0.56
|
||||||
|
file_mkdir_test,3000,0.56
|
||||||
|
file_rmdir_test,3000,0.36
|
||||||
|
file_create_test,4000,1.45
|
||||||
|
file_open_test,4000,0.36
|
||||||
|
file_overwrite_test,4000,0.97
|
||||||
|
file_list_test,4000,0.33
|
||||||
|
file_delete_test,4000,0.77
|
||||||
|
file_mkdir_test,4000,0.48
|
||||||
|
file_rmdir_test,4000,0.47
|
||||||
|
file_create_test,5000,2.47
|
||||||
|
file_open_test,5000,0.45
|
||||||
|
file_overwrite_test,5000,1.23
|
||||||
|
file_list_test,5000,0.41
|
||||||
|
file_delete_test,5000,1.03
|
||||||
|
file_mkdir_test,5000,0.70
|
||||||
|
file_rmdir_test,5000,0.70
|
||||||
|
rdwr_cc_write_page_test,100,0.25
|
||||||
|
rdwr_cc_read_page_test,100,0.19
|
||||||
|
rdwr_cc_write_large_test,100,0.09
|
||||||
|
rdwr_cc_read_large_test,100,0.08
|
||||||
|
rdwr_cc_write_page_test,200,0.47
|
||||||
|
rdwr_cc_read_page_test,200,0.52
|
||||||
|
rdwr_cc_write_large_test,200,0.22
|
||||||
|
rdwr_cc_read_large_test,200,0.16
|
||||||
|
rdwr_cc_write_page_test,300,0.72
|
||||||
|
rdwr_cc_read_page_test,300,0.62
|
||||||
|
rdwr_cc_write_large_test,300,0.30
|
||||||
|
rdwr_cc_read_large_test,300,0.23
|
||||||
|
rdwr_cc_write_page_test,400,0.92
|
||||||
|
rdwr_cc_read_page_test,400,0.88
|
||||||
|
rdwr_cc_write_large_test,400,0.41
|
||||||
|
rdwr_cc_read_large_test,400,0.31
|
||||||
|
rdwr_cc_write_page_test,500,1.20
|
||||||
|
rdwr_cc_read_page_test,500,0.97
|
||||||
|
rdwr_cc_write_large_test,500,0.50
|
||||||
|
rdwr_cc_read_large_test,500,0.39
|
||||||
|
rdwr_nc_write_page_test,100,7.56
|
||||||
|
rdwr_nc_read_page_test,100,10.14
|
||||||
|
rdwr_nc_write_large_test,100,0.88
|
||||||
|
rdwr_nc_read_large_test,100,0.56
|
||||||
|
rdwr_nc_write_page_test,200,14.36
|
||||||
|
rdwr_nc_read_page_test,200,21.39
|
||||||
|
rdwr_nc_write_large_test,200,1.72
|
||||||
|
rdwr_nc_read_large_test,200,1.34
|
||||||
|
rdwr_nc_write_page_test,300,21.86
|
||||||
|
rdwr_nc_read_page_test,300,19.56
|
||||||
|
rdwr_nc_write_large_test,300,2.53
|
||||||
|
rdwr_nc_read_large_test,300,1.64
|
||||||
|
rdwr_nc_write_page_test,400,28.52
|
||||||
|
rdwr_nc_read_page_test,400,26.11
|
||||||
|
rdwr_nc_write_large_test,400,3.42
|
||||||
|
rdwr_nc_read_large_test,400,2.22
|
||||||
|
rdwr_nc_write_page_test,500,35.45
|
||||||
|
rdwr_nc_read_page_test,500,33.05
|
||||||
|
rdwr_nc_write_large_test,500,4.33
|
||||||
|
rdwr_nc_read_large_test,500,2.77
|
||||||
|
mmap_write_test,100,0.16
|
||||||
|
mmap_read_test,100,0.20
|
||||||
|
mmap_write_test,200,0.30
|
||||||
|
mmap_read_test,200,0.39
|
||||||
|
mmap_write_test,300,0.44
|
||||||
|
mmap_read_test,300,0.59
|
||||||
|
mmap_write_test,400,0.58
|
||||||
|
mmap_read_test,400,0.78
|
||||||
|
mmap_write_test,500,0.72
|
||||||
|
mmap_read_test,500,1.06
|
|
85
doc/WinFsp-Performance-Testing/ORIG/ntfs-2.csv
Normal file
@ -0,0 +1,85 @@
|
|||||||
|
file_create_test,1000,0.97
|
||||||
|
file_open_test,1000,0.08
|
||||||
|
file_overwrite_test,1000,0.19
|
||||||
|
file_list_test,1000,0.08
|
||||||
|
file_delete_test,1000,0.19
|
||||||
|
file_mkdir_test,1000,0.13
|
||||||
|
file_rmdir_test,1000,0.13
|
||||||
|
file_create_test,2000,1.38
|
||||||
|
file_open_test,2000,0.23
|
||||||
|
file_overwrite_test,2000,0.36
|
||||||
|
file_list_test,2000,0.17
|
||||||
|
file_delete_test,2000,0.41
|
||||||
|
file_mkdir_test,2000,0.25
|
||||||
|
file_rmdir_test,2000,0.36
|
||||||
|
file_create_test,3000,1.34
|
||||||
|
file_open_test,3000,0.28
|
||||||
|
file_overwrite_test,3000,0.78
|
||||||
|
file_list_test,3000,0.27
|
||||||
|
file_delete_test,3000,0.59
|
||||||
|
file_mkdir_test,3000,0.36
|
||||||
|
file_rmdir_test,3000,0.36
|
||||||
|
file_create_test,4000,1.33
|
||||||
|
file_open_test,4000,0.36
|
||||||
|
file_overwrite_test,4000,1.06
|
||||||
|
file_list_test,4000,0.33
|
||||||
|
file_delete_test,4000,0.81
|
||||||
|
file_mkdir_test,4000,0.67
|
||||||
|
file_rmdir_test,4000,0.41
|
||||||
|
file_create_test,5000,1.94
|
||||||
|
file_open_test,5000,0.48
|
||||||
|
file_overwrite_test,5000,1.14
|
||||||
|
file_list_test,5000,0.44
|
||||||
|
file_delete_test,5000,1.06
|
||||||
|
file_mkdir_test,5000,0.87
|
||||||
|
file_rmdir_test,5000,0.59
|
||||||
|
rdwr_cc_write_page_test,100,0.25
|
||||||
|
rdwr_cc_read_page_test,100,0.19
|
||||||
|
rdwr_cc_write_large_test,100,0.11
|
||||||
|
rdwr_cc_read_large_test,100,0.08
|
||||||
|
rdwr_cc_write_page_test,200,0.61
|
||||||
|
rdwr_cc_read_page_test,200,0.42
|
||||||
|
rdwr_cc_write_large_test,200,0.22
|
||||||
|
rdwr_cc_read_large_test,200,0.25
|
||||||
|
rdwr_cc_write_page_test,300,0.69
|
||||||
|
rdwr_cc_read_page_test,300,0.61
|
||||||
|
rdwr_cc_write_large_test,300,0.28
|
||||||
|
rdwr_cc_read_large_test,300,0.22
|
||||||
|
rdwr_cc_write_page_test,400,0.91
|
||||||
|
rdwr_cc_read_page_test,400,0.78
|
||||||
|
rdwr_cc_write_large_test,400,0.38
|
||||||
|
rdwr_cc_read_large_test,400,0.28
|
||||||
|
rdwr_cc_write_page_test,500,1.19
|
||||||
|
rdwr_cc_read_page_test,500,1.03
|
||||||
|
rdwr_cc_write_large_test,500,0.48
|
||||||
|
rdwr_cc_read_large_test,500,0.36
|
||||||
|
rdwr_nc_write_page_test,100,7.55
|
||||||
|
rdwr_nc_read_page_test,100,9.38
|
||||||
|
rdwr_nc_write_large_test,100,0.86
|
||||||
|
rdwr_nc_read_large_test,100,0.58
|
||||||
|
rdwr_nc_write_page_test,200,15.69
|
||||||
|
rdwr_nc_read_page_test,200,21.78
|
||||||
|
rdwr_nc_write_large_test,200,1.73
|
||||||
|
rdwr_nc_read_large_test,200,1.16
|
||||||
|
rdwr_nc_write_page_test,300,21.58
|
||||||
|
rdwr_nc_read_page_test,300,21.92
|
||||||
|
rdwr_nc_write_large_test,300,2.59
|
||||||
|
rdwr_nc_read_large_test,300,1.84
|
||||||
|
rdwr_nc_write_page_test,400,28.91
|
||||||
|
rdwr_nc_read_page_test,400,26.31
|
||||||
|
rdwr_nc_write_large_test,400,3.38
|
||||||
|
rdwr_nc_read_large_test,400,2.20
|
||||||
|
rdwr_nc_write_page_test,500,36.69
|
||||||
|
rdwr_nc_read_page_test,500,33.52
|
||||||
|
rdwr_nc_write_large_test,500,4.36
|
||||||
|
rdwr_nc_read_large_test,500,2.80
|
||||||
|
mmap_write_test,100,0.16
|
||||||
|
mmap_read_test,100,0.19
|
||||||
|
mmap_write_test,200,0.31
|
||||||
|
mmap_read_test,200,0.39
|
||||||
|
mmap_write_test,300,0.44
|
||||||
|
mmap_read_test,300,0.58
|
||||||
|
mmap_write_test,400,0.59
|
||||||
|
mmap_read_test,400,0.78
|
||||||
|
mmap_write_test,500,0.72
|
||||||
|
mmap_read_test,500,1.09
|
|
85
doc/WinFsp-Performance-Testing/ORIG/winfsp-t0-1.csv
Normal file
@ -0,0 +1,85 @@
|
|||||||
|
file_create_test,1000,0.20
|
||||||
|
file_open_test,1000,0.08
|
||||||
|
file_overwrite_test,1000,0.06
|
||||||
|
file_list_test,1000,0.11
|
||||||
|
file_delete_test,1000,0.09
|
||||||
|
file_mkdir_test,1000,0.06
|
||||||
|
file_rmdir_test,1000,0.08
|
||||||
|
file_create_test,2000,0.48
|
||||||
|
file_open_test,2000,0.11
|
||||||
|
file_overwrite_test,2000,0.11
|
||||||
|
file_list_test,2000,0.23
|
||||||
|
file_delete_test,2000,0.19
|
||||||
|
file_mkdir_test,2000,0.09
|
||||||
|
file_rmdir_test,2000,0.14
|
||||||
|
file_create_test,3000,0.61
|
||||||
|
file_open_test,3000,0.30
|
||||||
|
file_overwrite_test,3000,0.17
|
||||||
|
file_list_test,3000,0.33
|
||||||
|
file_delete_test,3000,0.27
|
||||||
|
file_mkdir_test,3000,0.41
|
||||||
|
file_rmdir_test,3000,0.20
|
||||||
|
file_create_test,4000,0.64
|
||||||
|
file_open_test,4000,0.23
|
||||||
|
file_overwrite_test,4000,0.25
|
||||||
|
file_list_test,4000,0.47
|
||||||
|
file_delete_test,4000,0.48
|
||||||
|
file_mkdir_test,4000,0.53
|
||||||
|
file_rmdir_test,4000,0.27
|
||||||
|
file_create_test,5000,1.08
|
||||||
|
file_open_test,5000,0.28
|
||||||
|
file_overwrite_test,5000,0.30
|
||||||
|
file_list_test,5000,0.61
|
||||||
|
file_delete_test,5000,0.52
|
||||||
|
file_mkdir_test,5000,0.66
|
||||||
|
file_rmdir_test,5000,0.39
|
||||||
|
rdwr_cc_write_page_test,100,1.30
|
||||||
|
rdwr_cc_read_page_test,100,1.44
|
||||||
|
rdwr_cc_write_large_test,100,0.17
|
||||||
|
rdwr_cc_read_large_test,100,0.17
|
||||||
|
rdwr_cc_write_page_test,200,2.67
|
||||||
|
rdwr_cc_read_page_test,200,2.97
|
||||||
|
rdwr_cc_write_large_test,200,0.33
|
||||||
|
rdwr_cc_read_large_test,200,0.39
|
||||||
|
rdwr_cc_write_page_test,300,4.00
|
||||||
|
rdwr_cc_read_page_test,300,4.42
|
||||||
|
rdwr_cc_write_large_test,300,0.48
|
||||||
|
rdwr_cc_read_large_test,300,0.50
|
||||||
|
rdwr_cc_write_page_test,400,5.36
|
||||||
|
rdwr_cc_read_page_test,400,5.86
|
||||||
|
rdwr_cc_write_large_test,400,0.63
|
||||||
|
rdwr_cc_read_large_test,400,0.66
|
||||||
|
rdwr_cc_write_page_test,500,6.55
|
||||||
|
rdwr_cc_read_page_test,500,7.05
|
||||||
|
rdwr_cc_write_large_test,500,0.89
|
||||||
|
rdwr_cc_read_large_test,500,0.89
|
||||||
|
rdwr_nc_write_page_test,100,1.33
|
||||||
|
rdwr_nc_read_page_test,100,1.33
|
||||||
|
rdwr_nc_write_large_test,100,0.16
|
||||||
|
rdwr_nc_read_large_test,100,0.16
|
||||||
|
rdwr_nc_write_page_test,200,2.67
|
||||||
|
rdwr_nc_read_page_test,200,2.67
|
||||||
|
rdwr_nc_write_large_test,200,0.31
|
||||||
|
rdwr_nc_read_large_test,200,0.33
|
||||||
|
rdwr_nc_write_page_test,300,4.01
|
||||||
|
rdwr_nc_read_page_test,300,4.06
|
||||||
|
rdwr_nc_write_large_test,300,0.48
|
||||||
|
rdwr_nc_read_large_test,300,0.47
|
||||||
|
rdwr_nc_write_page_test,400,5.44
|
||||||
|
rdwr_nc_read_page_test,400,5.42
|
||||||
|
rdwr_nc_write_large_test,400,0.63
|
||||||
|
rdwr_nc_read_large_test,400,0.66
|
||||||
|
rdwr_nc_write_page_test,500,6.41
|
||||||
|
rdwr_nc_read_page_test,500,6.56
|
||||||
|
rdwr_nc_write_large_test,500,0.83
|
||||||
|
rdwr_nc_read_large_test,500,0.78
|
||||||
|
mmap_write_test,100,0.14
|
||||||
|
mmap_read_test,100,0.20
|
||||||
|
mmap_write_test,200,0.30
|
||||||
|
mmap_read_test,200,0.39
|
||||||
|
mmap_write_test,300,0.45
|
||||||
|
mmap_read_test,300,0.59
|
||||||
|
mmap_write_test,400,0.56
|
||||||
|
mmap_read_test,400,0.83
|
||||||
|
mmap_write_test,500,0.72
|
||||||
|
mmap_read_test,500,1.00
|
|
85
doc/WinFsp-Performance-Testing/ORIG/winfsp-t0-2.csv
Normal file
@ -0,0 +1,85 @@
|
|||||||
|
file_create_test,1000,0.20
|
||||||
|
file_open_test,1000,0.06
|
||||||
|
file_overwrite_test,1000,0.05
|
||||||
|
file_list_test,1000,0.11
|
||||||
|
file_delete_test,1000,0.09
|
||||||
|
file_mkdir_test,1000,0.05
|
||||||
|
file_rmdir_test,1000,0.08
|
||||||
|
file_create_test,2000,0.47
|
||||||
|
file_open_test,2000,0.13
|
||||||
|
file_overwrite_test,2000,0.11
|
||||||
|
file_list_test,2000,0.22
|
||||||
|
file_delete_test,2000,0.19
|
||||||
|
file_mkdir_test,2000,0.11
|
||||||
|
file_rmdir_test,2000,0.14
|
||||||
|
file_create_test,3000,0.59
|
||||||
|
file_open_test,3000,0.27
|
||||||
|
file_overwrite_test,3000,0.17
|
||||||
|
file_list_test,3000,0.34
|
||||||
|
file_delete_test,3000,0.27
|
||||||
|
file_mkdir_test,3000,0.41
|
||||||
|
file_rmdir_test,3000,0.20
|
||||||
|
file_create_test,4000,0.62
|
||||||
|
file_open_test,4000,0.22
|
||||||
|
file_overwrite_test,4000,0.41
|
||||||
|
file_list_test,4000,0.47
|
||||||
|
file_delete_test,4000,0.34
|
||||||
|
file_mkdir_test,4000,0.55
|
||||||
|
file_rmdir_test,4000,0.28
|
||||||
|
file_create_test,5000,1.08
|
||||||
|
file_open_test,5000,0.28
|
||||||
|
file_overwrite_test,5000,0.30
|
||||||
|
file_list_test,5000,0.61
|
||||||
|
file_delete_test,5000,0.45
|
||||||
|
file_mkdir_test,5000,0.67
|
||||||
|
file_rmdir_test,5000,0.34
|
||||||
|
rdwr_cc_write_page_test,100,1.36
|
||||||
|
rdwr_cc_read_page_test,100,1.47
|
||||||
|
rdwr_cc_write_large_test,100,0.17
|
||||||
|
rdwr_cc_read_large_test,100,0.17
|
||||||
|
rdwr_cc_write_page_test,200,2.63
|
||||||
|
rdwr_cc_read_page_test,200,3.00
|
||||||
|
rdwr_cc_write_large_test,200,0.31
|
||||||
|
rdwr_cc_read_large_test,200,0.34
|
||||||
|
rdwr_cc_write_page_test,300,3.91
|
||||||
|
rdwr_cc_read_page_test,300,4.20
|
||||||
|
rdwr_cc_write_large_test,300,0.50
|
||||||
|
rdwr_cc_read_large_test,300,0.52
|
||||||
|
rdwr_cc_write_page_test,400,5.23
|
||||||
|
rdwr_cc_read_page_test,400,5.64
|
||||||
|
rdwr_cc_write_large_test,400,0.72
|
||||||
|
rdwr_cc_read_large_test,400,0.66
|
||||||
|
rdwr_cc_write_page_test,500,6.12
|
||||||
|
rdwr_cc_read_page_test,500,6.83
|
||||||
|
rdwr_cc_write_large_test,500,0.80
|
||||||
|
rdwr_cc_read_large_test,500,0.83
|
||||||
|
rdwr_nc_write_page_test,100,1.30
|
||||||
|
rdwr_nc_read_page_test,100,1.36
|
||||||
|
rdwr_nc_write_large_test,100,0.16
|
||||||
|
rdwr_nc_read_large_test,100,0.20
|
||||||
|
rdwr_nc_write_page_test,200,2.73
|
||||||
|
rdwr_nc_read_page_test,200,2.64
|
||||||
|
rdwr_nc_write_large_test,200,0.31
|
||||||
|
rdwr_nc_read_large_test,200,0.31
|
||||||
|
rdwr_nc_write_page_test,300,3.95
|
||||||
|
rdwr_nc_read_page_test,300,4.06
|
||||||
|
rdwr_nc_write_large_test,300,0.48
|
||||||
|
rdwr_nc_read_large_test,300,0.48
|
||||||
|
rdwr_nc_write_page_test,400,5.33
|
||||||
|
rdwr_nc_read_page_test,400,5.47
|
||||||
|
rdwr_nc_write_large_test,400,0.64
|
||||||
|
rdwr_nc_read_large_test,400,0.64
|
||||||
|
rdwr_nc_write_page_test,500,6.48
|
||||||
|
rdwr_nc_read_page_test,500,6.41
|
||||||
|
rdwr_nc_write_large_test,500,0.81
|
||||||
|
rdwr_nc_read_large_test,500,0.81
|
||||||
|
mmap_write_test,100,0.14
|
||||||
|
mmap_read_test,100,0.20
|
||||||
|
mmap_write_test,200,0.30
|
||||||
|
mmap_read_test,200,0.39
|
||||||
|
mmap_write_test,300,0.45
|
||||||
|
mmap_read_test,300,0.59
|
||||||
|
mmap_write_test,400,0.64
|
||||||
|
mmap_read_test,400,0.77
|
||||||
|
mmap_write_test,500,0.73
|
||||||
|
mmap_read_test,500,1.00
|
|
85
doc/WinFsp-Performance-Testing/ORIG/winfsp-t1-1.csv
Normal file
@ -0,0 +1,85 @@
|
|||||||
|
file_create_test,1000,0.06
|
||||||
|
file_open_test,1000,0.16
|
||||||
|
file_overwrite_test,1000,0.05
|
||||||
|
file_list_test,1000,0.09
|
||||||
|
file_delete_test,1000,0.08
|
||||||
|
file_mkdir_test,1000,0.05
|
||||||
|
file_rmdir_test,1000,0.08
|
||||||
|
file_create_test,2000,0.42
|
||||||
|
file_open_test,2000,0.09
|
||||||
|
file_overwrite_test,2000,0.08
|
||||||
|
file_list_test,2000,0.22
|
||||||
|
file_delete_test,2000,0.14
|
||||||
|
file_mkdir_test,2000,0.09
|
||||||
|
file_rmdir_test,2000,0.13
|
||||||
|
file_create_test,3000,0.58
|
||||||
|
file_open_test,3000,0.22
|
||||||
|
file_overwrite_test,3000,0.25
|
||||||
|
file_list_test,3000,0.36
|
||||||
|
file_delete_test,3000,0.22
|
||||||
|
file_mkdir_test,3000,0.39
|
||||||
|
file_rmdir_test,3000,0.17
|
||||||
|
file_create_test,4000,0.59
|
||||||
|
file_open_test,4000,0.19
|
||||||
|
file_overwrite_test,4000,0.17
|
||||||
|
file_list_test,4000,0.58
|
||||||
|
file_delete_test,4000,0.33
|
||||||
|
file_mkdir_test,4000,0.55
|
||||||
|
file_rmdir_test,4000,0.22
|
||||||
|
file_create_test,5000,0.95
|
||||||
|
file_open_test,5000,0.22
|
||||||
|
file_overwrite_test,5000,0.23
|
||||||
|
file_list_test,5000,0.59
|
||||||
|
file_delete_test,5000,0.34
|
||||||
|
file_mkdir_test,5000,0.66
|
||||||
|
file_rmdir_test,5000,0.28
|
||||||
|
rdwr_cc_write_page_test,100,1.37
|
||||||
|
rdwr_cc_read_page_test,100,1.47
|
||||||
|
rdwr_cc_write_large_test,100,0.16
|
||||||
|
rdwr_cc_read_large_test,100,0.17
|
||||||
|
rdwr_cc_write_page_test,200,2.47
|
||||||
|
rdwr_cc_read_page_test,200,3.00
|
||||||
|
rdwr_cc_write_large_test,200,0.31
|
||||||
|
rdwr_cc_read_large_test,200,0.34
|
||||||
|
rdwr_cc_write_page_test,300,3.89
|
||||||
|
rdwr_cc_read_page_test,300,4.45
|
||||||
|
rdwr_cc_write_large_test,300,0.47
|
||||||
|
rdwr_cc_read_large_test,300,0.50
|
||||||
|
rdwr_cc_write_page_test,400,4.92
|
||||||
|
rdwr_cc_read_page_test,400,5.78
|
||||||
|
rdwr_cc_write_large_test,400,0.61
|
||||||
|
rdwr_cc_read_large_test,400,0.67
|
||||||
|
rdwr_cc_write_page_test,500,6.17
|
||||||
|
rdwr_cc_read_page_test,500,7.33
|
||||||
|
rdwr_cc_write_large_test,500,0.78
|
||||||
|
rdwr_cc_read_large_test,500,0.95
|
||||||
|
rdwr_nc_write_page_test,100,1.30
|
||||||
|
rdwr_nc_read_page_test,100,1.39
|
||||||
|
rdwr_nc_write_large_test,100,0.19
|
||||||
|
rdwr_nc_read_large_test,100,0.17
|
||||||
|
rdwr_nc_write_page_test,200,2.61
|
||||||
|
rdwr_nc_read_page_test,200,2.80
|
||||||
|
rdwr_nc_write_large_test,200,0.31
|
||||||
|
rdwr_nc_read_large_test,200,0.34
|
||||||
|
rdwr_nc_write_page_test,300,3.94
|
||||||
|
rdwr_nc_read_page_test,300,4.23
|
||||||
|
rdwr_nc_write_large_test,300,0.48
|
||||||
|
rdwr_nc_read_large_test,300,0.50
|
||||||
|
rdwr_nc_write_page_test,400,5.36
|
||||||
|
rdwr_nc_read_page_test,400,5.52
|
||||||
|
rdwr_nc_write_large_test,400,0.63
|
||||||
|
rdwr_nc_read_large_test,400,0.69
|
||||||
|
rdwr_nc_write_page_test,500,6.51
|
||||||
|
rdwr_nc_read_page_test,500,7.00
|
||||||
|
rdwr_nc_write_large_test,500,0.81
|
||||||
|
rdwr_nc_read_large_test,500,0.81
|
||||||
|
mmap_write_test,100,0.16
|
||||||
|
mmap_read_test,100,0.19
|
||||||
|
mmap_write_test,200,0.31
|
||||||
|
mmap_read_test,200,0.39
|
||||||
|
mmap_write_test,300,0.44
|
||||||
|
mmap_read_test,300,0.59
|
||||||
|
mmap_write_test,400,0.59
|
||||||
|
mmap_read_test,400,0.78
|
||||||
|
mmap_write_test,500,0.73
|
||||||
|
mmap_read_test,500,0.98
|
|
85
doc/WinFsp-Performance-Testing/ORIG/winfsp-t1-2.csv
Normal file
@ -0,0 +1,85 @@
|
|||||||
|
file_create_test,1000,0.08
|
||||||
|
file_open_test,1000,0.16
|
||||||
|
file_overwrite_test,1000,0.05
|
||||||
|
file_list_test,1000,0.11
|
||||||
|
file_delete_test,1000,0.06
|
||||||
|
file_mkdir_test,1000,0.16
|
||||||
|
file_rmdir_test,1000,0.06
|
||||||
|
file_create_test,2000,0.36
|
||||||
|
file_open_test,2000,0.09
|
||||||
|
file_overwrite_test,2000,0.09
|
||||||
|
file_list_test,2000,0.20
|
||||||
|
file_delete_test,2000,0.16
|
||||||
|
file_mkdir_test,2000,0.09
|
||||||
|
file_rmdir_test,2000,0.12
|
||||||
|
file_create_test,3000,0.58
|
||||||
|
file_open_test,3000,0.20
|
||||||
|
file_overwrite_test,3000,0.16
|
||||||
|
file_list_test,3000,0.33
|
||||||
|
file_delete_test,3000,0.22
|
||||||
|
file_mkdir_test,3000,0.41
|
||||||
|
file_rmdir_test,3000,0.17
|
||||||
|
file_create_test,4000,0.58
|
||||||
|
file_open_test,4000,0.17
|
||||||
|
file_overwrite_test,4000,0.20
|
||||||
|
file_list_test,4000,0.44
|
||||||
|
file_delete_test,4000,0.38
|
||||||
|
file_mkdir_test,4000,0.59
|
||||||
|
file_rmdir_test,4000,0.25
|
||||||
|
file_create_test,5000,0.97
|
||||||
|
file_open_test,5000,0.22
|
||||||
|
file_overwrite_test,5000,0.22
|
||||||
|
file_list_test,5000,0.61
|
||||||
|
file_delete_test,5000,0.36
|
||||||
|
file_mkdir_test,5000,0.69
|
||||||
|
file_rmdir_test,5000,0.30
|
||||||
|
rdwr_cc_write_page_test,100,1.30
|
||||||
|
rdwr_cc_read_page_test,100,1.53
|
||||||
|
rdwr_cc_write_large_test,100,0.17
|
||||||
|
rdwr_cc_read_large_test,100,0.17
|
||||||
|
rdwr_cc_write_page_test,200,2.62
|
||||||
|
rdwr_cc_read_page_test,200,3.06
|
||||||
|
rdwr_cc_write_large_test,200,0.31
|
||||||
|
rdwr_cc_read_large_test,200,0.34
|
||||||
|
rdwr_cc_write_page_test,300,3.89
|
||||||
|
rdwr_cc_read_page_test,300,4.50
|
||||||
|
rdwr_cc_write_large_test,300,0.50
|
||||||
|
rdwr_cc_read_large_test,300,0.59
|
||||||
|
rdwr_cc_write_page_test,400,5.14
|
||||||
|
rdwr_cc_read_page_test,400,5.94
|
||||||
|
rdwr_cc_write_large_test,400,0.62
|
||||||
|
rdwr_cc_read_large_test,400,0.70
|
||||||
|
rdwr_cc_write_page_test,500,6.25
|
||||||
|
rdwr_cc_read_page_test,500,7.33
|
||||||
|
rdwr_cc_write_large_test,500,0.81
|
||||||
|
rdwr_cc_read_large_test,500,0.83
|
||||||
|
rdwr_nc_write_page_test,100,1.34
|
||||||
|
rdwr_nc_read_page_test,100,1.38
|
||||||
|
rdwr_nc_write_large_test,100,0.19
|
||||||
|
rdwr_nc_read_large_test,100,0.16
|
||||||
|
rdwr_nc_write_page_test,200,2.67
|
||||||
|
rdwr_nc_read_page_test,200,2.78
|
||||||
|
rdwr_nc_write_large_test,200,0.38
|
||||||
|
rdwr_nc_read_large_test,200,0.33
|
||||||
|
rdwr_nc_write_page_test,300,3.98
|
||||||
|
rdwr_nc_read_page_test,300,4.44
|
||||||
|
rdwr_nc_write_large_test,300,0.52
|
||||||
|
rdwr_nc_read_large_test,300,0.50
|
||||||
|
rdwr_nc_write_page_test,400,5.36
|
||||||
|
rdwr_nc_read_page_test,400,5.69
|
||||||
|
rdwr_nc_write_large_test,400,0.66
|
||||||
|
rdwr_nc_read_large_test,400,0.67
|
||||||
|
rdwr_nc_write_page_test,500,6.66
|
||||||
|
rdwr_nc_read_page_test,500,6.94
|
||||||
|
rdwr_nc_write_large_test,500,0.81
|
||||||
|
rdwr_nc_read_large_test,500,0.81
|
||||||
|
mmap_write_test,100,0.14
|
||||||
|
mmap_read_test,100,0.20
|
||||||
|
mmap_write_test,200,0.31
|
||||||
|
mmap_read_test,200,0.39
|
||||||
|
mmap_write_test,300,0.44
|
||||||
|
mmap_read_test,300,0.59
|
||||||
|
mmap_write_test,400,0.59
|
||||||
|
mmap_read_test,400,0.78
|
||||||
|
mmap_write_test,500,0.75
|
||||||
|
mmap_read_test,500,0.98
|
|
85
doc/WinFsp-Performance-Testing/ORIG/winfsp-tinf-1.csv
Normal file
@ -0,0 +1,85 @@
|
|||||||
|
file_create_test,1000,0.06
|
||||||
|
file_open_test,1000,0.17
|
||||||
|
file_overwrite_test,1000,0.05
|
||||||
|
file_list_test,1000,0.11
|
||||||
|
file_delete_test,1000,0.06
|
||||||
|
file_mkdir_test,1000,0.05
|
||||||
|
file_rmdir_test,1000,0.06
|
||||||
|
file_create_test,2000,0.44
|
||||||
|
file_open_test,2000,0.08
|
||||||
|
file_overwrite_test,2000,0.09
|
||||||
|
file_list_test,2000,0.22
|
||||||
|
file_delete_test,2000,0.14
|
||||||
|
file_mkdir_test,2000,0.09
|
||||||
|
file_rmdir_test,2000,0.14
|
||||||
|
file_create_test,3000,0.56
|
||||||
|
file_open_test,3000,0.20
|
||||||
|
file_overwrite_test,3000,0.14
|
||||||
|
file_list_test,3000,0.33
|
||||||
|
file_delete_test,3000,0.20
|
||||||
|
file_mkdir_test,3000,0.41
|
||||||
|
file_rmdir_test,3000,0.16
|
||||||
|
file_create_test,4000,0.59
|
||||||
|
file_open_test,4000,0.16
|
||||||
|
file_overwrite_test,4000,0.19
|
||||||
|
file_list_test,4000,0.47
|
||||||
|
file_delete_test,4000,0.31
|
||||||
|
file_mkdir_test,4000,0.66
|
||||||
|
file_rmdir_test,4000,0.23
|
||||||
|
file_create_test,5000,0.98
|
||||||
|
file_open_test,5000,0.22
|
||||||
|
file_overwrite_test,5000,0.22
|
||||||
|
file_list_test,5000,0.59
|
||||||
|
file_delete_test,5000,0.36
|
||||||
|
file_mkdir_test,5000,0.66
|
||||||
|
file_rmdir_test,5000,0.31
|
||||||
|
rdwr_cc_write_page_test,100,0.34
|
||||||
|
rdwr_cc_read_page_test,100,0.28
|
||||||
|
rdwr_cc_write_large_test,100,0.11
|
||||||
|
rdwr_cc_read_large_test,100,0.08
|
||||||
|
rdwr_cc_write_page_test,200,0.67
|
||||||
|
rdwr_cc_read_page_test,200,0.58
|
||||||
|
rdwr_cc_write_large_test,200,0.22
|
||||||
|
rdwr_cc_read_large_test,200,0.22
|
||||||
|
rdwr_cc_write_page_test,300,1.01
|
||||||
|
rdwr_cc_read_page_test,300,0.88
|
||||||
|
rdwr_cc_write_large_test,300,0.34
|
||||||
|
rdwr_cc_read_large_test,300,0.25
|
||||||
|
rdwr_cc_write_page_test,400,1.38
|
||||||
|
rdwr_cc_read_page_test,400,1.12
|
||||||
|
rdwr_cc_write_large_test,400,0.42
|
||||||
|
rdwr_cc_read_large_test,400,0.33
|
||||||
|
rdwr_cc_write_page_test,500,1.70
|
||||||
|
rdwr_cc_read_page_test,500,1.48
|
||||||
|
rdwr_cc_write_large_test,500,0.64
|
||||||
|
rdwr_cc_read_large_test,500,0.44
|
||||||
|
rdwr_nc_write_page_test,100,1.31
|
||||||
|
rdwr_nc_read_page_test,100,1.36
|
||||||
|
rdwr_nc_write_large_test,100,0.17
|
||||||
|
rdwr_nc_read_large_test,100,0.16
|
||||||
|
rdwr_nc_write_page_test,200,2.56
|
||||||
|
rdwr_nc_read_page_test,200,2.81
|
||||||
|
rdwr_nc_write_large_test,200,0.33
|
||||||
|
rdwr_nc_read_large_test,200,0.31
|
||||||
|
rdwr_nc_write_page_test,300,3.86
|
||||||
|
rdwr_nc_read_page_test,300,3.95
|
||||||
|
rdwr_nc_write_large_test,300,0.47
|
||||||
|
rdwr_nc_read_large_test,300,0.48
|
||||||
|
rdwr_nc_write_page_test,400,5.11
|
||||||
|
rdwr_nc_read_page_test,400,5.19
|
||||||
|
rdwr_nc_write_large_test,400,0.64
|
||||||
|
rdwr_nc_read_large_test,400,0.64
|
||||||
|
rdwr_nc_write_page_test,500,6.42
|
||||||
|
rdwr_nc_read_page_test,500,6.58
|
||||||
|
rdwr_nc_write_large_test,500,0.78
|
||||||
|
rdwr_nc_read_large_test,500,0.78
|
||||||
|
mmap_write_test,100,0.16
|
||||||
|
mmap_read_test,100,0.20
|
||||||
|
mmap_write_test,200,0.30
|
||||||
|
mmap_read_test,200,0.39
|
||||||
|
mmap_write_test,300,0.44
|
||||||
|
mmap_read_test,300,0.59
|
||||||
|
mmap_write_test,400,0.59
|
||||||
|
mmap_read_test,400,0.78
|
||||||
|
mmap_write_test,500,0.75
|
||||||
|
mmap_read_test,500,1.03
|
|
85
doc/WinFsp-Performance-Testing/ORIG/winfsp-tinf-2.csv
Normal file
@ -0,0 +1,85 @@
|
|||||||
|
file_create_test,1000,0.06
|
||||||
|
file_open_test,1000,0.16
|
||||||
|
file_overwrite_test,1000,0.05
|
||||||
|
file_list_test,1000,0.11
|
||||||
|
file_delete_test,1000,0.06
|
||||||
|
file_mkdir_test,1000,0.05
|
||||||
|
file_rmdir_test,1000,0.06
|
||||||
|
file_create_test,2000,0.44
|
||||||
|
file_open_test,2000,0.08
|
||||||
|
file_overwrite_test,2000,0.09
|
||||||
|
file_list_test,2000,0.20
|
||||||
|
file_delete_test,2000,0.16
|
||||||
|
file_mkdir_test,2000,0.09
|
||||||
|
file_rmdir_test,2000,0.13
|
||||||
|
file_create_test,3000,0.58
|
||||||
|
file_open_test,3000,0.22
|
||||||
|
file_overwrite_test,3000,0.13
|
||||||
|
file_list_test,3000,0.34
|
||||||
|
file_delete_test,3000,0.22
|
||||||
|
file_mkdir_test,3000,0.39
|
||||||
|
file_rmdir_test,3000,0.17
|
||||||
|
file_create_test,4000,0.61
|
||||||
|
file_open_test,4000,0.17
|
||||||
|
file_overwrite_test,4000,0.19
|
||||||
|
file_list_test,4000,0.44
|
||||||
|
file_delete_test,4000,0.27
|
||||||
|
file_mkdir_test,4000,0.67
|
||||||
|
file_rmdir_test,4000,0.22
|
||||||
|
file_create_test,5000,0.97
|
||||||
|
file_open_test,5000,0.20
|
||||||
|
file_overwrite_test,5000,0.23
|
||||||
|
file_list_test,5000,0.61
|
||||||
|
file_delete_test,5000,0.33
|
||||||
|
file_mkdir_test,5000,0.67
|
||||||
|
file_rmdir_test,5000,0.28
|
||||||
|
rdwr_cc_write_page_test,100,0.36
|
||||||
|
rdwr_cc_read_page_test,100,0.30
|
||||||
|
rdwr_cc_write_large_test,100,0.12
|
||||||
|
rdwr_cc_read_large_test,100,0.08
|
||||||
|
rdwr_cc_write_page_test,200,0.69
|
||||||
|
rdwr_cc_read_page_test,200,0.58
|
||||||
|
rdwr_cc_write_large_test,200,0.30
|
||||||
|
rdwr_cc_read_large_test,200,0.23
|
||||||
|
rdwr_cc_write_page_test,300,1.02
|
||||||
|
rdwr_cc_read_page_test,300,0.87
|
||||||
|
rdwr_cc_write_large_test,300,0.34
|
||||||
|
rdwr_cc_read_large_test,300,0.23
|
||||||
|
rdwr_cc_write_page_test,400,1.41
|
||||||
|
rdwr_cc_read_page_test,400,1.14
|
||||||
|
rdwr_cc_write_large_test,400,0.47
|
||||||
|
rdwr_cc_read_large_test,400,0.33
|
||||||
|
rdwr_cc_write_page_test,500,1.73
|
||||||
|
rdwr_cc_read_page_test,500,1.50
|
||||||
|
rdwr_cc_write_large_test,500,0.53
|
||||||
|
rdwr_cc_read_large_test,500,0.41
|
||||||
|
rdwr_nc_write_page_test,100,1.33
|
||||||
|
rdwr_nc_read_page_test,100,1.44
|
||||||
|
rdwr_nc_write_large_test,100,0.17
|
||||||
|
rdwr_nc_read_large_test,100,0.17
|
||||||
|
rdwr_nc_write_page_test,200,2.75
|
||||||
|
rdwr_nc_read_page_test,200,2.94
|
||||||
|
rdwr_nc_write_large_test,200,0.38
|
||||||
|
rdwr_nc_read_large_test,200,0.33
|
||||||
|
rdwr_nc_write_page_test,300,3.94
|
||||||
|
rdwr_nc_read_page_test,300,4.17
|
||||||
|
rdwr_nc_write_large_test,300,0.48
|
||||||
|
rdwr_nc_read_large_test,300,0.56
|
||||||
|
rdwr_nc_write_page_test,400,5.25
|
||||||
|
rdwr_nc_read_page_test,400,5.58
|
||||||
|
rdwr_nc_write_large_test,400,0.63
|
||||||
|
rdwr_nc_read_large_test,400,0.64
|
||||||
|
rdwr_nc_write_page_test,500,6.52
|
||||||
|
rdwr_nc_read_page_test,500,6.78
|
||||||
|
rdwr_nc_write_large_test,500,0.80
|
||||||
|
rdwr_nc_read_large_test,500,0.80
|
||||||
|
mmap_write_test,100,0.17
|
||||||
|
mmap_read_test,100,0.20
|
||||||
|
mmap_write_test,200,0.30
|
||||||
|
mmap_read_test,200,0.41
|
||||||
|
mmap_write_test,300,0.44
|
||||||
|
mmap_read_test,300,0.61
|
||||||
|
mmap_write_test,400,0.61
|
||||||
|
mmap_read_test,400,0.78
|
||||||
|
mmap_write_test,500,0.73
|
||||||
|
mmap_read_test,500,0.98
|
|
30
doc/WinFsp-Performance-Testing/file_create_test.csv
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
//ntfs
|
||||||
|
1000,0.92
|
||||||
|
2000,1.38
|
||||||
|
3000,1.11
|
||||||
|
4000,1.33
|
||||||
|
5000,1.94
|
||||||
|
//winfsp-t0
|
||||||
|
1000,0.20
|
||||||
|
2000,0.47
|
||||||
|
3000,0.59
|
||||||
|
4000,0.62
|
||||||
|
5000,1.08
|
||||||
|
//winfsp-t1
|
||||||
|
1000,0.06
|
||||||
|
2000,0.36
|
||||||
|
3000,0.58
|
||||||
|
4000,0.58
|
||||||
|
5000,0.95
|
||||||
|
//winfsp-tinf
|
||||||
|
1000,0.06
|
||||||
|
2000,0.44
|
||||||
|
3000,0.56
|
||||||
|
4000,0.59
|
||||||
|
5000,0.97
|
||||||
|
//dokany
|
||||||
|
1000,0.28
|
||||||
|
2000,0.67
|
||||||
|
3000,0.91
|
||||||
|
4000,1.25
|
||||||
|
5000,1.64
|
|
BIN
doc/WinFsp-Performance-Testing/file_create_test.png
Normal file
After Width: | Height: | Size: 60 KiB |
30
doc/WinFsp-Performance-Testing/file_delete_test.csv
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
//ntfs
|
||||||
|
1000,0.19
|
||||||
|
2000,0.39
|
||||||
|
3000,0.56
|
||||||
|
4000,0.77
|
||||||
|
5000,1.03
|
||||||
|
//winfsp-t0
|
||||||
|
1000,0.09
|
||||||
|
2000,0.19
|
||||||
|
3000,0.27
|
||||||
|
4000,0.34
|
||||||
|
5000,0.45
|
||||||
|
//winfsp-t1
|
||||||
|
1000,0.06
|
||||||
|
2000,0.14
|
||||||
|
3000,0.22
|
||||||
|
4000,0.33
|
||||||
|
5000,0.34
|
||||||
|
//winfsp-tinf
|
||||||
|
1000,0.06
|
||||||
|
2000,0.14
|
||||||
|
3000,0.20
|
||||||
|
4000,0.27
|
||||||
|
5000,0.33
|
||||||
|
//dokany
|
||||||
|
1000,0.17
|
||||||
|
2000,0.36
|
||||||
|
3000,0.56
|
||||||
|
4000,0.72
|
||||||
|
5000,0.91
|
|
BIN
doc/WinFsp-Performance-Testing/file_delete_test.png
Normal file
After Width: | Height: | Size: 59 KiB |
30
doc/WinFsp-Performance-Testing/file_list_test.csv
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
//ntfs
|
||||||
|
1000,0.08
|
||||||
|
2000,0.16
|
||||||
|
3000,0.23
|
||||||
|
4000,0.33
|
||||||
|
5000,0.41
|
||||||
|
//winfsp-t0
|
||||||
|
1000,0.11
|
||||||
|
2000,0.22
|
||||||
|
3000,0.33
|
||||||
|
4000,0.47
|
||||||
|
5000,0.61
|
||||||
|
//winfsp-t1
|
||||||
|
1000,0.09
|
||||||
|
2000,0.20
|
||||||
|
3000,0.33
|
||||||
|
4000,0.44
|
||||||
|
5000,0.59
|
||||||
|
//winfsp-tinf
|
||||||
|
1000,0.11
|
||||||
|
2000,0.20
|
||||||
|
3000,0.33
|
||||||
|
4000,0.44
|
||||||
|
5000,0.59
|
||||||
|
//dokany
|
||||||
|
1000,0.16
|
||||||
|
2000,0.36
|
||||||
|
3000,0.64
|
||||||
|
4000,0.97
|
||||||
|
5000,1.38
|
|
BIN
doc/WinFsp-Performance-Testing/file_list_test.png
Normal file
After Width: | Height: | Size: 49 KiB |
30
doc/WinFsp-Performance-Testing/file_open_test.csv
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
//ntfs
|
||||||
|
1000,0.08
|
||||||
|
2000,0.17
|
||||||
|
3000,0.23
|
||||||
|
4000,0.36
|
||||||
|
5000,0.45
|
||||||
|
//winfsp-t0
|
||||||
|
1000,0.06
|
||||||
|
2000,0.11
|
||||||
|
3000,0.27
|
||||||
|
4000,0.22
|
||||||
|
5000,0.28
|
||||||
|
//winfsp-t1
|
||||||
|
1000,0.16
|
||||||
|
2000,0.09
|
||||||
|
3000,0.20
|
||||||
|
4000,0.17
|
||||||
|
5000,0.22
|
||||||
|
//winfsp-tinf
|
||||||
|
1000,0.16
|
||||||
|
2000,0.08
|
||||||
|
3000,0.20
|
||||||
|
4000,0.16
|
||||||
|
5000,0.20
|
||||||
|
//dokany
|
||||||
|
1000,0.14
|
||||||
|
2000,0.27
|
||||||
|
3000,0.41
|
||||||
|
4000,0.55
|
||||||
|
5000,0.67
|
|
BIN
doc/WinFsp-Performance-Testing/file_open_test.png
Normal file
After Width: | Height: | Size: 55 KiB |
30
doc/WinFsp-Performance-Testing/file_overwrite_test.csv
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
//ntfs
|
||||||
|
1000,0.19
|
||||||
|
2000,0.36
|
||||||
|
3000,0.72
|
||||||
|
4000,0.97
|
||||||
|
5000,1.14
|
||||||
|
//winfsp-t0
|
||||||
|
1000,0.05
|
||||||
|
2000,0.11
|
||||||
|
3000,0.17
|
||||||
|
4000,0.25
|
||||||
|
5000,0.30
|
||||||
|
//winfsp-t1
|
||||||
|
1000,0.05
|
||||||
|
2000,0.08
|
||||||
|
3000,0.16
|
||||||
|
4000,0.17
|
||||||
|
5000,0.22
|
||||||
|
//winfsp-tinf
|
||||||
|
1000,0.05
|
||||||
|
2000,0.09
|
||||||
|
3000,0.13
|
||||||
|
4000,0.19
|
||||||
|
5000,0.22
|
||||||
|
//dokany
|
||||||
|
1000,0.33
|
||||||
|
2000,0.67
|
||||||
|
3000,1.03
|
||||||
|
4000,1.34
|
||||||
|
5000,1.64
|
|
BIN
doc/WinFsp-Performance-Testing/file_overwrite_test.png
Normal file
After Width: | Height: | Size: 50 KiB |
30
doc/WinFsp-Performance-Testing/file_tests.csv
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
//ntfs
|
||||||
|
file_create_test,1.94
|
||||||
|
file_open_test,0.45
|
||||||
|
file_overwrite_test,1.14
|
||||||
|
file_list_test,0.41
|
||||||
|
file_delete_test,1.03
|
||||||
|
//winfsp-t0
|
||||||
|
file_create_test,1.08
|
||||||
|
file_open_test,0.28
|
||||||
|
file_overwrite_test,0.30
|
||||||
|
file_list_test,0.61
|
||||||
|
file_delete_test,0.45
|
||||||
|
//winfsp-t1
|
||||||
|
file_create_test,0.95
|
||||||
|
file_open_test,0.22
|
||||||
|
file_overwrite_test,0.22
|
||||||
|
file_list_test,0.59
|
||||||
|
file_delete_test,0.34
|
||||||
|
//winfsp-tinf
|
||||||
|
file_create_test,0.97
|
||||||
|
file_open_test,0.20
|
||||||
|
file_overwrite_test,0.22
|
||||||
|
file_list_test,0.59
|
||||||
|
file_delete_test,0.33
|
||||||
|
//dokany
|
||||||
|
file_create_test,1.64
|
||||||
|
file_open_test,0.67
|
||||||
|
file_overwrite_test,1.64
|
||||||
|
file_list_test,1.38
|
||||||
|
file_delete_test,0.91
|
|
BIN
doc/WinFsp-Performance-Testing/file_tests.png
Normal file
After Width: | Height: | Size: 55 KiB |
24
doc/WinFsp-Performance-Testing/mmap_read_test.csv
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
//ntfs
|
||||||
|
100,0.19
|
||||||
|
200,0.39
|
||||||
|
300,0.58
|
||||||
|
400,0.78
|
||||||
|
500,1.06
|
||||||
|
//winfsp-t0
|
||||||
|
100,0.20
|
||||||
|
200,0.39
|
||||||
|
300,0.59
|
||||||
|
400,0.77
|
||||||
|
500,1.00
|
||||||
|
//winfsp-t1
|
||||||
|
100,0.19
|
||||||
|
200,0.39
|
||||||
|
300,0.59
|
||||||
|
400,0.78
|
||||||
|
500,0.98
|
||||||
|
//winfsp-tinf
|
||||||
|
100,0.20
|
||||||
|
200,0.39
|
||||||
|
300,0.59
|
||||||
|
400,0.78
|
||||||
|
500,0.98
|
|
BIN
doc/WinFsp-Performance-Testing/mmap_read_test.png
Normal file
After Width: | Height: | Size: 44 KiB |
24
doc/WinFsp-Performance-Testing/mmap_write_test.csv
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
//ntfs
|
||||||
|
100,0.16
|
||||||
|
200,0.30
|
||||||
|
300,0.44
|
||||||
|
400,0.58
|
||||||
|
500,0.72
|
||||||
|
//winfsp-t0
|
||||||
|
100,0.14
|
||||||
|
200,0.30
|
||||||
|
300,0.45
|
||||||
|
400,0.56
|
||||||
|
500,0.72
|
||||||
|
//winfsp-t1
|
||||||
|
100,0.14
|
||||||
|
200,0.31
|
||||||
|
300,0.44
|
||||||
|
400,0.59
|
||||||
|
500,0.73
|
||||||
|
//winfsp-tinf
|
||||||
|
100,0.16
|
||||||
|
200,0.30
|
||||||
|
300,0.44
|
||||||
|
400,0.59
|
||||||
|
500,0.73
|
|
BIN
doc/WinFsp-Performance-Testing/mmap_write_test.png
Normal file
After Width: | Height: | Size: 39 KiB |
74
doc/WinFsp-Performance-Testing/munge.py
Executable file
@ -0,0 +1,74 @@
|
|||||||
|
#!/usr/bin/python
|
||||||
|
|
||||||
|
# usage: ./munge.py ORIG/*.csv
|
||||||
|
# munge CSV files into a format that asciidocFX understands
|
||||||
|
|
||||||
|
import csv, os, sys
|
||||||
|
|
||||||
|
snames = ["ntfs", "winfsp-t0", "winfsp-t1", "winfsp-tinf", "dokany"]
|
||||||
|
file_tnames = [
|
||||||
|
"file_create_test",
|
||||||
|
"file_open_test",
|
||||||
|
"file_overwrite_test",
|
||||||
|
"file_list_test",
|
||||||
|
"file_delete_test"]
|
||||||
|
#"file_mkdir_test",
|
||||||
|
#"file_rmdir_test"]
|
||||||
|
rdwr_tnames = [
|
||||||
|
"rdwr_cc_read_page_test",
|
||||||
|
"rdwr_cc_write_page_test",
|
||||||
|
"rdwr_nc_read_page_test",
|
||||||
|
"rdwr_nc_write_page_test",
|
||||||
|
"mmap_read_test",
|
||||||
|
"mmap_write_test"]
|
||||||
|
tnames = file_tnames + rdwr_tnames
|
||||||
|
aggregate = min
|
||||||
|
|
||||||
|
tests = {}
|
||||||
|
for arg in sys.argv[1:]:
|
||||||
|
name = os.path.splitext(os.path.basename(arg))[0]
|
||||||
|
if name[-1].isdigit() and name[-2] == '-':
|
||||||
|
name = name[:-2]
|
||||||
|
with open(arg, "r") as fin:
|
||||||
|
for row in csv.reader(fin):
|
||||||
|
tests.\
|
||||||
|
setdefault(row[0], {}).\
|
||||||
|
setdefault(name, {}).\
|
||||||
|
setdefault(int(row[1]), []).\
|
||||||
|
append(float(row[2]))
|
||||||
|
|
||||||
|
if False:
|
||||||
|
for tname in (tnames if tnames else sorted(tests.keys())):
|
||||||
|
print "%s:" % tname
|
||||||
|
test = tests[tname]
|
||||||
|
for sname in (snames if snames else sorted(test.keys())):
|
||||||
|
if sname not in test:
|
||||||
|
continue
|
||||||
|
print " %s:" % sname
|
||||||
|
series = test[sname]
|
||||||
|
for param in sorted(series.keys()):
|
||||||
|
print " %s: %s -> %.2f" % (param, series[param], aggregate(series[param]))
|
||||||
|
else:
|
||||||
|
for tname in (tnames if tnames else sorted(tests.keys())):
|
||||||
|
with open(tname + ".csv", "w") as fout:
|
||||||
|
test = tests[tname]
|
||||||
|
for sname in (snames if snames else sorted(test.keys())):
|
||||||
|
if sname not in test:
|
||||||
|
continue
|
||||||
|
fout.write("//%s\r\n" % sname)
|
||||||
|
series = test[sname]
|
||||||
|
for param in sorted(series.keys()):
|
||||||
|
fout.write("%s,%.2f\r\n" % (param, aggregate(series[param])))
|
||||||
|
def master_write(fname, tnames):
|
||||||
|
with open(fname + ".csv", "w") as fout:
|
||||||
|
for sname in snames:
|
||||||
|
fout.write("//%s\r\n" % sname)
|
||||||
|
for tname in (tnames if tnames else sorted(tests.keys())):
|
||||||
|
test = tests[tname]
|
||||||
|
if sname not in test:
|
||||||
|
continue
|
||||||
|
series = test[sname]
|
||||||
|
param = max(series.keys())
|
||||||
|
fout.write("%s,%.2f\r\n" % (tname, aggregate(series[param])))
|
||||||
|
master_write("file_tests", file_tnames)
|
||||||
|
master_write("rdwr_tests", rdwr_tnames)
|
30
doc/WinFsp-Performance-Testing/rdwr_cc_read_page_test.csv
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
//ntfs
|
||||||
|
100,0.19
|
||||||
|
200,0.42
|
||||||
|
300,0.61
|
||||||
|
400,0.78
|
||||||
|
500,0.97
|
||||||
|
//winfsp-t0
|
||||||
|
100,1.44
|
||||||
|
200,2.97
|
||||||
|
300,4.20
|
||||||
|
400,5.64
|
||||||
|
500,6.83
|
||||||
|
//winfsp-t1
|
||||||
|
100,1.47
|
||||||
|
200,3.00
|
||||||
|
300,4.45
|
||||||
|
400,5.78
|
||||||
|
500,7.33
|
||||||
|
//winfsp-tinf
|
||||||
|
100,0.28
|
||||||
|
200,0.58
|
||||||
|
300,0.87
|
||||||
|
400,1.12
|
||||||
|
500,1.48
|
||||||
|
//dokany
|
||||||
|
100,2.23
|
||||||
|
200,4.58
|
||||||
|
300,6.78
|
||||||
|
400,9.02
|
||||||
|
500,11.20
|
|
BIN
doc/WinFsp-Performance-Testing/rdwr_cc_read_page_test.png
Normal file
After Width: | Height: | Size: 55 KiB |
30
doc/WinFsp-Performance-Testing/rdwr_cc_write_page_test.csv
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
//ntfs
|
||||||
|
100,0.25
|
||||||
|
200,0.47
|
||||||
|
300,0.69
|
||||||
|
400,0.91
|
||||||
|
500,1.19
|
||||||
|
//winfsp-t0
|
||||||
|
100,1.30
|
||||||
|
200,2.63
|
||||||
|
300,3.91
|
||||||
|
400,5.23
|
||||||
|
500,6.12
|
||||||
|
//winfsp-t1
|
||||||
|
100,1.30
|
||||||
|
200,2.47
|
||||||
|
300,3.89
|
||||||
|
400,4.92
|
||||||
|
500,6.17
|
||||||
|
//winfsp-tinf
|
||||||
|
100,0.34
|
||||||
|
200,0.67
|
||||||
|
300,1.01
|
||||||
|
400,1.38
|
||||||
|
500,1.70
|
||||||
|
//dokany
|
||||||
|
100,2.08
|
||||||
|
200,4.23
|
||||||
|
300,6.33
|
||||||
|
400,8.48
|
||||||
|
500,10.33
|
|
BIN
doc/WinFsp-Performance-Testing/rdwr_cc_write_page_test.png
Normal file
After Width: | Height: | Size: 53 KiB |
30
doc/WinFsp-Performance-Testing/rdwr_nc_read_page_test.csv
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
//ntfs
|
||||||
|
100,9.38
|
||||||
|
200,21.39
|
||||||
|
300,19.56
|
||||||
|
400,26.11
|
||||||
|
500,33.05
|
||||||
|
//winfsp-t0
|
||||||
|
100,1.33
|
||||||
|
200,2.64
|
||||||
|
300,4.06
|
||||||
|
400,5.42
|
||||||
|
500,6.41
|
||||||
|
//winfsp-t1
|
||||||
|
100,1.38
|
||||||
|
200,2.78
|
||||||
|
300,4.23
|
||||||
|
400,5.52
|
||||||
|
500,6.94
|
||||||
|
//winfsp-tinf
|
||||||
|
100,1.36
|
||||||
|
200,2.81
|
||||||
|
300,3.95
|
||||||
|
400,5.19
|
||||||
|
500,6.58
|
||||||
|
//dokany
|
||||||
|
100,2.22
|
||||||
|
200,4.34
|
||||||
|
300,6.34
|
||||||
|
400,8.67
|
||||||
|
500,10.59
|
|
BIN
doc/WinFsp-Performance-Testing/rdwr_nc_read_page_test.png
Normal file
After Width: | Height: | Size: 50 KiB |
30
doc/WinFsp-Performance-Testing/rdwr_nc_write_page_test.csv
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
//ntfs
|
||||||
|
100,7.55
|
||||||
|
200,14.36
|
||||||
|
300,21.58
|
||||||
|
400,28.52
|
||||||
|
500,35.45
|
||||||
|
//winfsp-t0
|
||||||
|
100,1.30
|
||||||
|
200,2.67
|
||||||
|
300,3.95
|
||||||
|
400,5.33
|
||||||
|
500,6.41
|
||||||
|
//winfsp-t1
|
||||||
|
100,1.30
|
||||||
|
200,2.61
|
||||||
|
300,3.94
|
||||||
|
400,5.36
|
||||||
|
500,6.51
|
||||||
|
//winfsp-tinf
|
||||||
|
100,1.31
|
||||||
|
200,2.56
|
||||||
|
300,3.86
|
||||||
|
400,5.11
|
||||||
|
500,6.42
|
||||||
|
//dokany
|
||||||
|
100,2.20
|
||||||
|
200,4.66
|
||||||
|
300,6.44
|
||||||
|
400,8.56
|
||||||
|
500,10.73
|
|
BIN
doc/WinFsp-Performance-Testing/rdwr_nc_write_page_test.png
Normal file
After Width: | Height: | Size: 48 KiB |
33
doc/WinFsp-Performance-Testing/rdwr_tests.csv
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
//ntfs
|
||||||
|
rdwr_cc_read_page_test,0.97
|
||||||
|
rdwr_cc_write_page_test,1.19
|
||||||
|
rdwr_nc_read_page_test,33.05
|
||||||
|
rdwr_nc_write_page_test,35.45
|
||||||
|
mmap_read_test,1.06
|
||||||
|
mmap_write_test,0.72
|
||||||
|
//winfsp-t0
|
||||||
|
rdwr_cc_read_page_test,6.83
|
||||||
|
rdwr_cc_write_page_test,6.12
|
||||||
|
rdwr_nc_read_page_test,6.41
|
||||||
|
rdwr_nc_write_page_test,6.41
|
||||||
|
mmap_read_test,1.00
|
||||||
|
mmap_write_test,0.72
|
||||||
|
//winfsp-t1
|
||||||
|
rdwr_cc_read_page_test,7.33
|
||||||
|
rdwr_cc_write_page_test,6.17
|
||||||
|
rdwr_nc_read_page_test,6.94
|
||||||
|
rdwr_nc_write_page_test,6.51
|
||||||
|
mmap_read_test,0.98
|
||||||
|
mmap_write_test,0.73
|
||||||
|
//winfsp-tinf
|
||||||
|
rdwr_cc_read_page_test,1.48
|
||||||
|
rdwr_cc_write_page_test,1.70
|
||||||
|
rdwr_nc_read_page_test,6.58
|
||||||
|
rdwr_nc_write_page_test,6.42
|
||||||
|
mmap_read_test,0.98
|
||||||
|
mmap_write_test,0.73
|
||||||
|
//dokany
|
||||||
|
rdwr_cc_read_page_test,11.20
|
||||||
|
rdwr_cc_write_page_test,10.33
|
||||||
|
rdwr_nc_read_page_test,10.59
|
||||||
|
rdwr_nc_write_page_test,10.73
|
|
BIN
doc/WinFsp-Performance-Testing/rdwr_tests.png
Normal file
After Width: | Height: | Size: 68 KiB |
@ -20,23 +20,25 @@ In order to overcome the issue with launching multiple instances of a particular
|
|||||||
|
|
||||||
Services that wish to be controlled by the WinFsp.Launcher must add themselves under the following registry key:
|
Services that wish to be controlled by the WinFsp.Launcher must add themselves under the following registry key:
|
||||||
|
|
||||||
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WinFsp.Launcher\Services
|
HKEY_LOCAL_MACHINE\Software\WinFsp\Services
|
||||||
|
|
||||||
For example, the MEMFS sample adds the following registry entries under this key:
|
NOTE: Please note that in a 64-bit system the actual location is `HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\WinFsp\Services`.
|
||||||
|
|
||||||
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WinFsp.Launcher\Services\memfs32]
|
For example, the MEMFS sample adds the following registry entries in a 64-bit system:
|
||||||
|
|
||||||
|
[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\WinFsp\Services\memfs32]
|
||||||
"Executable"="C:\\Program Files (x86)\\WinFsp\\bin\\memfs-x86.exe"
|
"Executable"="C:\\Program Files (x86)\\WinFsp\\bin\\memfs-x86.exe"
|
||||||
"CommandLine"="-u %1 -m %2"
|
"CommandLine"="-i -F NTFS -n 65536 -s 67108864 -u %1 -m %2"
|
||||||
"Security"="D:P(A;;RPWPLC;;;WD)"
|
"Security"="D:P(A;;RPWPLC;;;WD)"
|
||||||
"JobControl"=dword:00000001
|
"JobControl"=dword:00000001
|
||||||
|
|
||||||
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WinFsp.Launcher\Services\memfs64]
|
[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\WinFsp\Services\memfs64]
|
||||||
"Executable"="C:\\Program Files (x86)\\WinFsp\\bin\\memfs-x64.exe"
|
"Executable"="C:\\Program Files (x86)\\WinFsp\\bin\\memfs-x64.exe"
|
||||||
"CommandLine"="-u %1 -m %2"
|
"CommandLine"="-i -F NTFS -n 65536 -s 67108864 -u %1 -m %2"
|
||||||
"Security"="D:P(A;;RPWPLC;;;WD)"
|
"Security"="D:P(A;;RPWPLC;;;WD)"
|
||||||
"JobControl"=dword:00000001
|
"JobControl"=dword:00000001
|
||||||
|
|
||||||
When the WinFsp.Launcher starts up it creates a named pipe that applications can use to start, stop, get information about and list service instances. A small command line utility (`launchctl`) can be used to issue those commands. The CallNamedPipeW API can be used as well.
|
When the WinFsp.Launcher starts up it creates a named pipe that applications can use to start, stop, get information about and list service instances. A small command line utility (`launchctl`) can be used to issue those commands. The `CallNamedPipeW` API can be used as well.
|
||||||
|
|
||||||
One final note regarding security. Notice the `Security` registry value in the example above. This registry value uses SDDL syntax to instruct WinFsp.Launcher to allow Everyone (`WD`) to start (`RP`), stop (`WP`) and get information (`LC`) about the service instance. If the `Security` registry value is missing the default is to allow only LocalSystem and Administrators to control the service instance.
|
One final note regarding security. Notice the `Security` registry value in the example above. This registry value uses SDDL syntax to instruct WinFsp.Launcher to allow Everyone (`WD`) to start (`RP`), stop (`WP`) and get information (`LC`) about the service instance. If the `Security` registry value is missing the default is to allow only LocalSystem and Administrators to control the service instance.
|
||||||
|
|
||||||
@ -44,4 +46,14 @@ One final note regarding security. Notice the `Security` registry value in the e
|
|||||||
|
|
||||||
WinFsp includes a Network Provider that integrates with Windows and can be used to start and stop user mode file systems from the Windows shell. To achieve this the Network Provider (implemented as part of the WinFsp DLL) works closely with the WinFsp.Launcher service.
|
WinFsp includes a Network Provider that integrates with Windows and can be used to start and stop user mode file systems from the Windows shell. To achieve this the Network Provider (implemented as part of the WinFsp DLL) works closely with the WinFsp.Launcher service.
|
||||||
|
|
||||||
For example, if a user uses the Windows Explorer to map `\\memfs64\share` to the `Z:` drive, the Network Provider will instruct the WinFsp.Launcher to start an instance of the memfs64 service with command line `-u \\memfs64\share -m Z:`. When the user disconnects the `Z:` drive, the Network Provider will instruct the WinFsp.Launcher to stop the previously started instance of the memfs64 service.
|
For example, if a user uses the Windows Explorer to map `\\memfs64\share` to the `Z:` drive, the Network Provider will instruct the WinFsp.Launcher to start an instance of the memfs64 service with command line `-i -F NTFS -n 65536 -s 67108864 -u \\memfs64\share -m Z:`. When the user disconnects the `Z:` drive, the Network Provider will instruct the WinFsp.Launcher to stop the previously started instance of the memfs64 service.
|
||||||
|
|
||||||
|
== File System Credential Support
|
||||||
|
|
||||||
|
Some file systems require credentials in order to allow access and be mounted. Such file systems must add a registry value `Credentials`:
|
||||||
|
|
||||||
|
"Credentials"=dword:00000001
|
||||||
|
|
||||||
|
This will instruct the WinFsp Network Provider to request a password from the user prior to starting the file system. This password will then be securely passed to the WinFsp Launcher which in turn will pass it to the user mode file system on its standard input. The user mode file system must respond `OK` if the password is correct and allows access to the user mode file system. Any other response from the user mode file system (including a timeout without a response) is interpreted as an authentication failure.
|
||||||
|
|
||||||
|
NOTE: During password entry the user may also choose to "remember" the password in which case it will be saved in the Windows Credential Manager.
|
136
doc/WinFsp-Testing.asciidoc
Normal file
@ -0,0 +1,136 @@
|
|||||||
|
= WinFsp Testing Strategy
|
||||||
|
|
||||||
|
WinFsp maintains quality through rigorous testing under a variety of scenarios. This document discusses its testing strategy.
|
||||||
|
|
||||||
|
== Importance of Testing
|
||||||
|
|
||||||
|
A file system is a fundamental block of an OS. It provides the primary means for storing persistent information and capturing system state. A file system must not only be reliable and stable when the computer is running, it must also store data in a manner as to eliminate data loss or data corruption. Furthermore a file system must provide semantics that closely adhere to existing standards and conventions for its OS to avoid confusion or even accidental corruption from programs that use it. For these reasons rigorous and extensive testing of a file system is of paramount importance.
|
||||||
|
|
||||||
|
WinFsp enables the creation of user mode file systems that fully integrate with the Windows OS. WinFsp is a system component and the user mode file systems that integrate with it also become system components. The need for thorough testing of WinFsp becomes apparent.
|
||||||
|
|
||||||
|
== Test Suites
|
||||||
|
|
||||||
|
WinFsp currently has the following test suites:
|
||||||
|
|
||||||
|
- *Winfsp-tests*: This test suite provides comprehensive testing of WinFsp's capabilities under various scenarios. This includes general Win32 (and NTDLL) file API testing, but also includes WinFsp specific tests, such as incorrectly functioning user mode file systems. The non-WinFsp specific tests are verified against NTFS.
|
||||||
|
+
|
||||||
|
This test suite is developed together with WinFsp. It is written in C/C++ and provides a form of gray box testing.
|
||||||
|
|
||||||
|
- *Winfstest*: This is another test suite that verifies general file system functionality. It is not WinFsp specific and all its tests pass on NTFS.
|
||||||
|
+
|
||||||
|
This test suite is written in Python and C and was originally developed for the secfs.test collection of file system test programs by the WinFsp author. It provides a form of black box testing.
|
||||||
|
|
||||||
|
- *IfsTest*: This is Microsoft's Installable File System Test Suite. It is used to verify that WinFsp behavior closely resembles that of NTFS.
|
||||||
|
+
|
||||||
|
This test suite is part of the Windows Hardware Lab Kit (HLK). It provides a form of black box testing.
|
||||||
|
|
||||||
|
- *FSX*: This is Apple's FSX ported to Windows by the WinFsp author. FSX is very good at finding problems with read/write and memory-mapped I/O.
|
||||||
|
|
||||||
|
- *Fscrash*: This is a tool that simulates a faulty or crashing user mode file system. It is used to test the fault tolerance of WinFsp.
|
||||||
|
+
|
||||||
|
This test is developed together with WinFsp. It is written in C/C++.
|
||||||
|
|
||||||
|
- *Fsbench*: This is a tool that can be used to test the performance of Windows file systems under different scenarios. It can work with any Windows file system and is not specific to WinFsp.
|
||||||
|
+
|
||||||
|
This tool is currently developed together with WinFsp. It is written in C.
|
||||||
|
|
||||||
|
These test suites and a few smaller tests are run through Continuous Integration testing every time a push is made into the WinFsp repository.
|
||||||
|
|
||||||
|
=== Test File System
|
||||||
|
|
||||||
|
WinFsp includes a test user mode file system called *MEMFS*. This is a simple in memory file system written in C/C++. MEMFS implements all file system features that WinFsp supports. MEMFS also performs various user mode file system checks during testing, for example, it checks that the buffer received during WRITE calls is read-only.
|
||||||
|
|
||||||
|
== Tested Scenarios
|
||||||
|
|
||||||
|
The combined test suites exercise the majority of Win32 file API's and a few NTDLL ones. The tested API's include:
|
||||||
|
|
||||||
|
- API's to create, open, close files/streams.
|
||||||
|
- API's to perform file/stream I/O in cached, non-cached, write-through, overlapped, etc. modes.
|
||||||
|
- API's to perform memory mapped I/O.
|
||||||
|
- API's to get or set file/stream metadata and security.
|
||||||
|
- API's to rename or delete files/streams.
|
||||||
|
- API's to enumerate directories and streams.
|
||||||
|
- API's that act on reparse points and symbolic links.
|
||||||
|
|
||||||
|
These tests are run under a variety of conditions:
|
||||||
|
|
||||||
|
- When the file system is a "disk" file system (+FILE_DEVICE_DISK_FILE_SYSTEM+).
|
||||||
|
- When the file system is a "network" file system (+FILE_DEVICE_NETWORK_FILE_SYSTEM+).
|
||||||
|
- When the file system is a "disk" file system exposed as a network share (+NetShareAdd+).
|
||||||
|
- When the file system is mapped as a drive (+DefineDosDeviceW+).
|
||||||
|
- When the file system is mounted on a directory (using junctions).
|
||||||
|
- When the file system is case-sensitive or case-insensitive.
|
||||||
|
- When the process making the API calls lacks the traverse privilege (+SE_CHANGE_NOTIFY_NAME+).
|
||||||
|
- When the process making the API calls has the backup or restore privilege (+SE_BACKUP_NAME+, +SE_RESTORE_NAME+).
|
||||||
|
|
||||||
|
Not all tests apply to all conditions. The test suites will disable/skip tests that do not apply to a particular scenario.
|
||||||
|
|
||||||
|
In addition the tests are run both on Debug and Release builds. Debug builds includes numerous ASSERT() statements that test various conditions within the WinFsp code.
|
||||||
|
|
||||||
|
=== Coverage
|
||||||
|
|
||||||
|
Windows File System Drivers (FSD) run in a variety of conditions that are not always easy to replicate during testing. For example, an FSD may not be able to get locks to perform an operation, in which case it may retry the operation later. Or it may be unable to allocate memory for a MustSucceed task, in which case it may wait a bit and retry.
|
||||||
|
|
||||||
|
Such situations may not arise during normal testing. For this reason, WinFsp uses the +DEBUGTEST()+ macro, which takes a single +Percent+ argument. In Release builds this macro always evaluates to +TRUE+. In Debug builds this macro may evaluate to +TRUE+ or +FALSE+ depending on the value of the +Percent+ argument, which specifies the percentage of times that +DEBUGTEST()+ should evaluate to +TRUE+. For example, a +DEBUGTEST(90)+ means that 90% of the time the macro should evaluate to +TRUE+ and 10% of the time it should evaluate to +FALSE+.
|
||||||
|
|
||||||
|
The WinFsp FSD uses the +DEBUGTEST()+ macro in various places where an operation may have to be retried. For example, here is how it handles deferred writes:
|
||||||
|
|
||||||
|
----
|
||||||
|
/* should we defer the write? */
|
||||||
|
Success = DEBUGTEST(90) && CcCanIWrite(FileObject, WriteLength, CanWait, Retrying);
|
||||||
|
if (!Success)
|
||||||
|
{
|
||||||
|
Result = FspWqCreateIrpWorkItem(Irp, FspFsvolWriteCached, 0);
|
||||||
|
if (NT_SUCCESS(Result))
|
||||||
|
{
|
||||||
|
IoMarkIrpPending(Irp);
|
||||||
|
CcDeferWrite(FileObject, FspFsvolWriteCachedDeferred, Irp, 0, WriteLength, Retrying);
|
||||||
|
|
||||||
|
return STATUS_PENDING;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* if we are unable to defer we will go ahead and (try to) service the IRP now! */
|
||||||
|
}
|
||||||
|
----
|
||||||
|
|
||||||
|
In Release builds the +DEBUGTEST(90)+ macro will evaluate to +TRUE+ and the Cache Manager will be asked directly via +CcCanIWrite+ whether a WRITE should be deferred. In Debug builds the +DEBUGTEST(90)+ macro will evaluate to +FALSE+ sometimes (10% of the time) and the WRITE will be deferred, thus allowing us to test the retry code path.
|
||||||
|
|
||||||
|
== NTFS Compatibility Testing
|
||||||
|
|
||||||
|
WinFsp allows the creation of user mode file systems that exhibit behavior similar to NTFS. This means that Windows applications that use such a file system should not be able to tell the difference between NTFS and the WinFsp-based file system. OTOH specialized applications (such as Defrag) will not work properly on WinFsp file systems.
|
||||||
|
|
||||||
|
WinFsp uses the winfsp-tests, winfstest and ifstest test suites for compatibility testing. These test suites verify that WinFsp and NTFS have very similar behavior. There is a separate document that examines the differences between WinFsp and NTFS in more detail.
|
||||||
|
|
||||||
|
== Fault Tolerance Testing
|
||||||
|
|
||||||
|
User mode file systems are normal user mode processes and as such they may fail in a variety of conditions. For example, a user mode file system may trigger an access violation while servicing a file operation. As another example, the developer of a user mode file system may terminate the file system process forcefully from within a debugger.
|
||||||
|
|
||||||
|
In such cases WinFsp is able to recover gracefully and clean up its resources and data structures. This is a fundamental capability of WinFsp and one that must be tested thoroughly.
|
||||||
|
|
||||||
|
For this purpose WinFsp is tested using the fscrash tool. Fscrash includes a special version of MEMFS, where file operations can potentially cause a crash. Fscrash also includes a simple test that is run in a loop until the included file system crashes. When the OS kills the process, the WinFsp FSD steps in and cleans up all resources used by the faulty file system. The intent of the test is to verify that WinFsp handles the crash properly, without leaving any leaks and without crashing the OS.
|
||||||
|
|
||||||
|
== Verifier
|
||||||
|
|
||||||
|
All development and testing of WinFsp is done under the Driver Verifier with standard settings enabled. The Driver Verifier is an invaluable tool for Windows Driver development. It has caught numerous issues within WinFsp, in most cases immediately after the faulty code was written and run for the first time.
|
||||||
|
|
||||||
|
=== Leak Testing
|
||||||
|
|
||||||
|
One of the most important aspects of the Driver Verifier is that it can track the pool (memory) usage of WinFsp. The WinFsp master test driver uses this to confirm that the WinFsp FSD does not leak memory. At the end of the tests the master test driver unmounts any remaining WinFsp file systems and then verifies that there are zero pool allocations for the WinFsp FSD.
|
||||||
|
|
||||||
|
== Performance Testing
|
||||||
|
|
||||||
|
The goal of performance testing is to evaluate and understand how software behaves under certain workloads. Performance testing can help identify cases where the software requires too much time or resources. It is also useful to establish a performance baseline to ensure that software performance does not degrade over time.
|
||||||
|
|
||||||
|
WinFsp uses a tool called fsbench for this purpose. Fsbench is able to test specific scenarios, for example: "how long does it take to delete 1000 files?" Fsbench has been very useful for WinFsp and has helped improve its performance: in one situation it helped identify quadratic behavior with the MEMFS ReadDirectory operation, in another situation it helped fine tune the performance of the WinFsp I/O Queue.
|
||||||
|
|
||||||
|
== Backwards Compatibility testing
|
||||||
|
|
||||||
|
As the WinFsp API's mature it is important to verify that they remain backwards compatible with existing file system binaries. For this purpose binaries that have been compiled against earlier versions of WinFsp are used to verify that they run correctly against the latest version.
|
||||||
|
|
||||||
|
For example, in version v1.2B3 of WinFsp an +FSP_FUSE_CAP_STAT_EX+ FUSE extension was introduced. This can change the layout of +struct fuse_stat+ and is therefore a potentially dangerous change. To test against inadvertent breakage a FUSE file system binary that was compiled against v1.2B2 is regularly used to verify backwards compatibility.
|
||||||
|
|
||||||
|
== Code Analysis
|
||||||
|
|
||||||
|
WinFsp is regularly run under the Visual Studio's Code Analyzer. Any issues found are examined and if necessary acted upon.
|
||||||
|
|
||||||
|
WinFsp compiles cleanly without any warnings.
|