次の方法で共有


KSCLOCK_DISPATCH構造体 (ks.h)

KSCLOCK_DISPATCH構造体には、クロック オブジェクトを実装するためにピンに必要なコールバックが含まれています。

構文

typedef struct _KSCLOCK_DISPATCH {
  PFNKSPINSETTIMER       SetTimer;
  PFNKSPINCANCELTIMER    CancelTimer;
  PFNKSPINCORRELATEDTIME CorrelatedTime;
  PFNKSPINRESOLUTION     Resolution;
} KSCLOCK_DISPATCH, *PKSCLOCK_DISPATCH;

メンバーズ

SetTimer

必要に応じて、プレゼンテーション時間に基づいて DPC タイマー コールバックを生成するために使用する代替関数へのポインターを含めます。 これが設定されている場合、この関数は、イベント通知を生成するために、現在のプレゼンテーション時刻への差分に基づいてタイマーを設定するために使用されます。 タイマーを設定するために代替関数を指定する場合は、対応する CancelTimer 関数も指定する必要があります。 これは、既定の KeSetTimerEx 関数を使用して次の通知時刻を概算する場合に、NULL に設定されます。 これは通常、KeSetTimerEx 関数が使用されている場合にのみ設定されます。 この関数には、既定の関数と同じ特性が必要です。

関数は次のようにプロトタイプ化する必要があります。

BOOLEAN SetTimer (IN PKSPIN Pin,
    IN PKTIMER Timer,
    IN LARGE_INTEGER DueTime,
    IN PKDPC Dpc);

この関数の実装の詳細については、KeSetTimerEx のドキュメントを参照してください。 クライアントの実装も同様の方法で動作する必要があります。

CancelTimer

必要に応じて、未処理のタイマー コールバックの取り消しに使用する代替関数が含まれます。 タイマーを取り消す代替関数が用意されている場合は、SetTimer 関数 対応する関数も指定する必要があります。 これは、既定の KeCancelTimer 関数を使用する場合は、NULL に設定されます。 この関数には、既定の関数と同じ特性が必要です。

関数は次のようにプロトタイプ化する必要があります。

BOOLEAN CancelTimer (IN PKSPIN Pin,
    IN PKTIMER Timer);

この関数の実装の詳細については、KeCancelTimer のドキュメントを参照してください。 クライアントの実装も同様の方法で動作する必要があります。

CorrelatedTime

現在のクロック時刻と、関連付けられたシステム時刻をアトミック操作として取得する関数へのポインター。 関数は次のようにプロトタイプ化する必要があります。

LONGLONG CorrelatedTime (IN PKSPIN Pin,
    OUT PLONGLONG SystemTime);

現在のクロック時刻を返し、現在のシステム時刻を SystemTime する必要があります。

Resolution

クロックの解像度を指定する関数へのポインター。 これは、KS プロパティ KSPROPERTY_CLOCK_RESOLUTIONに対応します。 この関数は、100 ナノ秒単位で粒度を報告する必要があります。 詳細については、KSPROPERTY_CLOCK_RESOLUTIONに関する KS ドキュメントを参照してください。

関数は次のようにプロトタイプ化する必要があります。

void Resolution (IN PKSPIN Pin,
        OUT PKSRESOLUTION Resolution);

必要条件

要件 価値
サポートされる最小クライアント Microsoft Windows XP 以降のオペレーティング システムおよび Microsoft DirectX 8.0 以降のバージョンで使用できます。
ヘッダー ks.h (Ks.h を含む)

関連項目

KDPC する

KSPIN する

KSPIN_DISPATCH

KSPROPERTY_CLOCK_RESOLUTION

KSRESOLUTION

KeSetTimerEx