scott.marlowe wrote:
> On Fri, 13 Sep 2002, Justin Clift wrote:>
>>Would it be correct to say that the 'ln' command in the MS Resource Kit
>>creates this kind of shortcut too, as the Reparse Points feature doesn't
>>seem to be possible under NT4?
>
>
> I wouldn't assume that. It's been years since I tested it, but back then,
> the command line and all program I used could see the link created by ln
> that came with the resource kit. They were distinctly different from the
> shortcut type of links, in that they seems transparent like short cuts in
> unix generally are.
>
> Do you have the resource kit or the gnu utils from it?
The situation appears to be this:
1. Soft links are available on NTFS 5 (2K/XP) as Reparse Points
via the DeviceIoControl() function for any application using the
standard C library routines.
2. Soft links are available on any filesystem under
95/98/ME/NT4/2K/XP as OLE streams (.lnk files) for Shell-aware
applications.
3. Hard links are available on NTFS 5 (2K/XP) via the
CreateHardLink() API.
See:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/base/createhardlink.asp
4. Hard links are available on NTFS (NT3.1/NT4) via the
BackupWrite() API by writing a special stream to the NTFS.
Example:
http://www.mvps.org/win32/ntfs/lnw.cpp
The cygwin implementation of link():
http://sources.redhat.com/cgi-bin/cvsweb.cgi/src/winsup/cygwin/syscalls.cc?rev=1.149.2.23&content-type=text/x-cvsweb-markup&cvsroot=src
1. Will use CreateHardLink() if on 2K/XP
2. Will try to use the BackupWrite() method
3. Failing #2 will just copy the file
See how fun Microsoft makes things?
Mike Mascari
mascarm@mascari.com