DTS performs the following steps to synchronize with an external time-provider:
1. At startup time, create the binding handle for the TPI. The binding handle is obtained from the list of available protocol sequences on the system.
2. At synchronization time, make the remote procedure call ContactProvider, assuming that a TP process is running on the system. If the procedure call fails, examine the RPC communication status, checking the availability of the server. If the server is unavailable, synchronize with peer servers; otherwise, continue.
3. Wait for the procedure call to return the control message in the output parameter. If the procedure call does not return within the specified LAN timeout interval, synchronize with peer servers. Otherwise, go to step 4.
4. If the procedure call returned successfully (communication status is rpc_s_ok), read the data in the control message.
5. Make the remote procedure call ServerRequestProviderTime to obtain the timestamps from the external time-provider. If the procedure does not return within the elapsed time specified by the control message (timeout), then synchronize with peer servers. Schedule the next synchronization based upon the applicable DTS management parameters, ignoring nextPoll.
6. If the procedure returns successfully, verify that the TP process status is K_TPI_SUCCESS. Otherwise, synchronize with peer servers and schedule the next synchronization.
7. Extract the timestamps from the data message and synchronize using the timestamps.
8. Schedule the next synchronization time by adding the value of nextPoll seconds to the current time. At the next synchronization, go to step 2.
Note: Application developers do not have to perform these steps; DTS performs these steps internally during synchronization with an external time-provider.