John John (MVP) said:
As for NT/2000/XP you can can argue all you want, unless you can provide
Microsoft documentation to refute the one that I presented you won't
convince me to that the switch works on these operating systems.
So, in other words, if the documentation is wrong, you don't care what
the programs actually do? That's fine, but I'm just pointing out what
Xcopy really does, not what the help files claim in does (Heck, even
it's own built in help claims it does something with /V, but in this
case, what it claims on XP is wrong).
I'm more than happy to agree that the switch was supposed to do
nothing at some point, but it in fact does do work.
And by
the way, your insistance that this switch does work would render your
first test (with Process Explorer/Filemon) invalid, if Xcopy does use
the switch the results aren't showing in Filemon, your test is flawed
and you have not proven that Explorer doesn't verify its file copies.
What? I'm not talking about Explorer. As I've mentioned it doesn't
verify the contents (as verified with Process Monitor, on XP and
Vista). It may verify the file size, but then again, it could just be
getting the file size after the copy because it's getting the size
information when it adds a file to a list.
As for my results with Xcopy, below are two different runs. Have you
seen something different? As you can see, the second run gets the
file information after it's copied, and as I determined with Detours,
it actually does care if that doesn't match what it was originally.
I'd also be happy to share my Detours project if you'd like.
C:\sourcedir>dir
Volume in drive C has no label.
Volume Serial Number is 0085-AAC7
Directory of C:\sourcedir
12/08/2008 09:51 AM <DIR> .
12/08/2008 09:51 AM <DIR> ..
12/08/2008 09:39 AM 2,744,087 example
1 File(s) 2,744,087 bytes
2 Dir(s) 19,497,865,216 bytes free
C:\sourcedir>xcopy * ..\testdir
1) CreateFile - C:\testdir
2) QueryDirectory - C:\testdir
3) QueryDirectory - C:\testdir
4) CloseFile - C:\testdir
5) CreateFile - C:\testdir\EXAMPLE
6) QueryDirectory - C:\testdir
7) QueryDirectory - C:\testdir
8) QueryDirectory - C:\testdir
9) CreateFile - C:\testdir
10) SetBasicInformationFile - C:\testdir
11) CloseFile - C:\testdir
12) CreateFile - C:\testdir
13) QueryDirectory - C:\testdir\example
14) CloseFile - C:\testdir
15) CreateFile - C:\testdir\example
16) CreateFile - C:\testdir
17) CloseFile - C:\testdir
18) QueryAttributeInformationVolume - C:\testdir\example
19) QueryBasicInformationFile - C:\testdir\example
20) SetEndOfFileInformationFile - C:\testdir\example
21) SetBasicInformationFile - C:\testdir\example
22) WriteFile - C:\testdir\example
23) ... WriteFile repeated ... - C:\testdir\example
63) WriteFile - C:\testdir\example
64) SetBasicInformationFile - C:\testdir\example
65) CloseFile - C:\testdir\example
66) QueryOpen - C:\testdir\example
67) CreateFile - C:\testdir\example
68) SetBasicInformationFile - C:\testdir\example
69) CloseFile - C:\testdir\example
70) CreateFile - C:\testdir
71) QueryDirectory - C:\testdir\example
72) CloseFile - C:\testdir
73) CreateFile - C:\testdir\example
74) SetBasicInformationFile - C:\testdir\example
75) CloseFile - C:\testdir\example
C:\sourcedir>xcopy /v * ..\testdir
1) CreateFile - C:\testdir
2) QueryDirectory - C:\testdir
3) QueryDirectory - C:\testdir
4) CloseFile - C:\testdir
5) CreateFile - C:\testdir\EXAMPLE
6) QueryDirectory - C:\testdir
7) QueryDirectory - C:\testdir
8) QueryDirectory - C:\testdir
9) CreateFile - C:\testdir
10) SetBasicInformationFile - C:\testdir
11) CloseFile - C:\testdir
12) CreateFile - C:\testdir
13) QueryDirectory - C:\testdir\example
14) CloseFile - C:\testdir
15) CreateFile - C:\testdir\example
16) CreateFile - C:\testdir
17) CloseFile - C:\testdir
18) QueryAttributeInformationVolume - C:\testdir\example
19) QueryBasicInformationFile - C:\testdir\example
20) SetEndOfFileInformationFile - C:\testdir\example
21) SetBasicInformationFile - C:\testdir\example
22) WriteFile - C:\testdir\example
23) ... WriteFile repeated ... - C:\testdir\example
63) WriteFile - C:\testdir\example
64) SetBasicInformationFile - C:\testdir\example
65) CloseFile - C:\testdir\example
66) QueryOpen - C:\testdir\example
67) CreateFile - C:\testdir\example
68) SetBasicInformationFile - C:\testdir\example
69) CloseFile - C:\testdir\example
70) CreateFile - C:\testdir
71) QueryDirectory - C:\testdir\example
72) CloseFile - C:\testdir
73) CreateFile - C:\testdir\example
74) SetBasicInformationFile - C:\testdir\example
75) CloseFile - C:\testdir\example
76) CreateFile - C:\testdir
77) QueryDirectory - C:\testdir\example
78) CloseFile - C:\testdir