Share via


タイム プロバイダーの作成

時間プロバイダーは DLL として実装されます。 各 DLL では、複数のタイム プロバイダーをサポートできます。 各プロバイダーは、独自の構成と同期を担当します。

タイム プロバイダーは、次のコールバック関数を実装する必要があります。

プロバイダー DLL を読み込んだ後、タイム プロバイダー マネージャーは TimeProvOpen を呼び出し、プロバイダーの名前とポインターを次の関数に渡します。

これらの関数は、時間プロバイダーで使用されます。 タイム プロバイダーは TimeProvOpen を使用して、タイム プロバイダーにコマンドを送信するときにタイム プロバイダー マネージャーが使用するプロバイダー ハンドルを返します。 ハンドル値は時間プロバイダーによって定義され、主に同じ DLL に実装されている異なるプロバイダーを区別するために使用されます。 時間プロバイダーは、 LogTimeProvEventFunc を使用して重要なイベントをログに記録できます。

タイム プロバイダー マネージャーは TimeProvCommand を使用して、コマンドをタイム プロバイダーに送信します。 時間プロバイダーは、使用可能な時間サンプルがあることをタイム プロバイダー マネージャーに通知する必要がある場合は、 AlertSamplesAvailFunc を呼び出します。 その後、タイム プロバイダー マネージャーは、 timeProvCommand を TPC_GetSamples コマンドで呼び出して、時間サンプルを取得します。 タイム プロバイダー マネージャーがサンプルを要求するまでに最大 16 秒かかる場合があります。 そのため、アプリケーションは要求を待つべきではありません。

精度を確保するために、時間プロバイダーは GetTimeSysInfoFunc を使用してすべての時間関連情報を取得する必要があります。

時間プロバイダーをシャットダウンする時間になると、タイム プロバイダー マネージャーは TimeProvClose を呼び出します。