from Microsoft documentation
createnew
Creates a file of the specified name and size, with content that consists of zeroes.
from here, you can say that the file must be all zeros ([...]with content that consists of zeroes)
but, if this is truth
[...]the file is nearly created immediately[...]
I think that you are right: probably, fsutil creates the file with bytes marked as free at the time of execution, but doesn't write those bytes
When you use dd like this
dd if=/dev/zero of=testFile bs=1024M count=1024
you are actually writing, "byte by byte", zeros in each byte of the new file
You can do this:
fsutil file createnew testFile_fsutil <1Tb> #(on Windows)
dd if=/dev/zero of=testFile_dd bs=1024M count=1024 #(on Linux)
and then, you can see the contents of testFile_fsutil on any hexeditor, and looking for non-zero bytes, or, more precisely, from Linux you can do ( 1099511627776 bytes = 1 Tebibyte ):
cmp --bytes=1099511627776 testFile_fsutil testFile_dd
or
cmp --bytes=1099511627776 testFile_fsutil /dev/zero
or even using hashes:
dd if=/dev/zero bs=1024M count=1024 | sha1sum
return
fea475204f4ad1348f21fad930a7c721a2858971
so,
dd if=testFile_fsutil bs=1024M count=1024 | sha1sum
must return the same.
Note: to prove your point much more quickly, you can use a much smaller file for test.