Platform SDK: Files and I/O

Link Tracking Components

This section describes how distributed link tracking is implemented.

Link tracking functionality is primarily implemented in the form of two system services.

Distributed Link Tracking Client
The distributed link tracking client runs on all machines and manages the link-tracking activities for that machine. These activities include searching for link sources and processing link source moves. When a link source is moved, the service passes information to the distributed link tracking server, which runs on domain controllers (DCs).
Distributed Link Tracking Server
The distributed link tracking server runs on each domain controller in a domain. The service accepts notifications of file and volume moves from the tracking service on a computer and allows the distributed link tracking client to query a link source's current location.

This server service maintains information in the DC about volumes and files which have been moved. The information on moves cannot grow above a certain size and it is automatically removed if it becomes unnecessary.

The link tracking services are exposed via the IShellLink and IOleLink interfaces. Thus, they are used by shell shortcuts. When the IShellLink::Resolve method is called and the referent file cannot be found (for example, when the user activates a shell shortcut), the tracking service is called automatically to find the file. Similarly, when the IOleLink implementation cannot find a file, for example in its BindToSource method, it automatically calls on the tracking service.