Distributed Link Tracking Service

[This is preliminary documentation and subject to change.]

The distributed link-tracking service in Windows NT 5.0 is based on a pair of link source IDs (LSIDs). An LSID identifies a link source file within a domain. Each link-source file has one LSID which identifies its current, or "revised", location, and one LSID which identifies its "birth" location — the location it was at when the first link was made to it. Thus, when the first link is created to a file, its birth and revised LSIDs are equal. The birth LSID never changes as long as the file remains within the same domain.

When a link source is moved within a volume, its LSIDs remain unchanged. When a link source is moved to a new volume, however, it is given a new revised-LSID, though its birth-LSID again remains unchanged. As a link source is moved from volume to volume within a domain, its revised-LSID continues to change.

To track a link source's most recent revised-LSID, an entry is stored in the Domain Controller (DC). This entry maps a link source's birth-LSID to its revised-LSID.

Another way for a link source to be moved is for its host volume itself to be moved. For example, an external hard drive may be removed from one machine and connected to another. When this occurs, the file's revised-LSID remains unchanged. Link clients can still use this LSID to find the link source at its new location.

When a link client is created, it stores both of the link-source LSIDs. In the typical case, a link client will go directly to its source, reaching it by name. If the link source has been moved, the link client can pass the LSIDs to the link-tracking service on the local machine. The link-tracking service then attempts to find the link source, and returns the current path and updated LSIDs to the client. The link-tracking service searches for the link source as follows: