KsAllocateDefaultClockEx 関数 (ks.h)
KsAllocateDefaultClockEx 関数は、既定のクロック構造を割り当てて初期化します。
構文
KSDDKAPI NTSTATUS KsAllocateDefaultClockEx(
[out] PKSDEFAULTCLOCK *DefaultClock,
[in, optional] PVOID Context,
[in, optional] PFNKSSETTIMER SetTimer,
[in, optional] PFNKSCANCELTIMER CancelTimer,
[in, optional] PFNKSCORRELATEDTIME CorrelatedTime,
[in, optional] const KSRESOLUTION *Resolution,
[in] ULONG Flags
);
パラメーター
[out] DefaultClock
呼び出し元によって割り当てられた共有の既定のクロック構造を指定します。 現在の時刻は 0 に設定され、状態は KSSTATE_STOP に設定されます。 このルーチンが正常に完了すると、このポインターによって示される構造体には、既定のクロックへの参照が含まれます。 返されるデータは不透明として扱い、システム使用のために予約する必要があります。
[in, optional] Context
必要に応じて、代替時間機能のコンテキストが含まれます。 これは、タイマーまたは相関時間関数を使用する場合に設定する必要があります。
[in, optional] SetTimer
必要に応じて、プレゼンテーション時間に基づいて DPC タイマー コールバックを生成するために使用するドライバー定義 の KStrSetTimer 関数へのポインターが含まれます。 これが設定されている場合、イベント通知を生成するために、関数を使用して現在のプレゼンテーション時刻への差分に基づいてタイマーを設定します。 タイマーを設定する KStrSetTimer 関数を指定する場合は、対応する KStrCancelTimer 関数も指定する必要があります。 既定の KeSetTimerEx 関数を使用して次の通知時刻を概算する場合は、このパラメーターに NULL を渡します。 このパラメーターは通常、 KStrCorrelatedTime 関数も使用されている場合にのみ設定されます。 KStrSetTimer 関数は、KeSetTimerEx と同じ特性を持つ必要があります。
[in, optional] CancelTimer
必要に応じて、未処理のタイマー コールバックを取り消すために使用するドライバー定義 の KStrCancelTimer 関数へのポインターが含まれます。 タイマーを取り消す KStrCancelTimer 関数を指定する場合は、対応する KStrSetTimer 関数も指定する必要があります。 既定の KeCancelTimer 関数を使用してタイマーを取り消す場合は、このパラメーターに NULL を渡します。 KStrCancelTimer 関数は、KeCancelTimer と同じ特性を持つ必要があります。
[in, optional] CorrelatedTime
必要に応じて、ドライバー定義 の KStrCorrelatedTime 関数へのポインターを含めて、Presentation と Physical Time の両方を相関した方法で取得します。 これにより、クロック所有者は現在の時刻を完全に決定できます。 既定の KeQueryPerformanceCounter 関数を使用して時間の進行を調整する場合は NULL を渡します。
[in, optional] Resolution
必要に応じて、クロックの代替の粒度やエラー係数を含めます。 これは、代替タイマーまたは相関時間関数が提供されている場合にのみ使用できます。 代替相関時間を使用する場合は、代替粒度を指定できます。それ以外の場合は、構造体要素をゼロにする必要があります。 代替タイマーが使用されている場合は、代替 Error を指定できます。それ以外の場合は、構造体要素を 0 にする必要があります。
[in] Flags
予約済み。0 に設定します。
戻り値
KsAllocateDefaultClockEx 関数は、成功した場合はSTATUS_SUCCESSを返し、失敗した場合はメモリ エラーを返します。
注釈
内部 DefaultClock.ReferenceCount 要素は、 KsAllocateDefaultClock 関数によって 1 つに初期化されます。 各通知 DPC がキューに登録され、完了すると、要素はインクリメントされ、デクリメントされます。 構造体を解放する場合、 要素を使用して、クロックの所有者が構造体を解放する必要があるかどうか、または保留中の DPC が非同期的に解放する必要があるかどうかを判断します。
要件
要件 | 値 |
---|---|
対象プラットフォーム | ユニバーサル |
Header | ks.h (Ks.h を含む) |
Library | Ks.lib |
IRQL | PASSIVE_LEVEL |