次の方法で共有


WDF_TIMER_CONFIG構造体 (wdftimer.h)

[KMDF と UMDF に適用]

WDF_TIMER_CONFIG 構造体には、フレームワーク タイマー オブジェクトの構成情報が含まれています。

構文

typedef struct _WDF_TIMER_CONFIG {
  ULONG         Size;
  PFN_WDF_TIMER EvtTimerFunc;
  ULONG         Period;
  BOOLEAN       AutomaticSerialization;
  ULONG         TolerableDelay;
  BOOLEAN       UseHighResolutionTimer;
} WDF_TIMER_CONFIG, *PWDF_TIMER_CONFIG;

メンバーズ

Size

この構造体のサイズ (バイト単位)。

EvtTimerFunc

EvtTimerFunc コールバック関数 ドライバーが指定したポインター、または NULL します。

Period

ミリ秒単位の期間。 フレームワークは、指定したミリ秒数が経過するたびに、ドライバーの EvtTimerFunc コールバック関数を繰り返し呼び出します。 この値が 0 の場合、フレームワークはドライバーの EvtTimerFunc コールバック関数を繰り返し呼び出しません。 代わりに、WdfTimerStart メソッドの DueTime が経過した後、コールバック関数を 1 回呼び出します。 (WdfTimerCreate 実行レベルを WdfExecutionLevelPassive に設定する場合、期間は 0 にする必要があります)。期間を負の値にすることはできません。

AutomaticSerialization

TRUE 場合、フレームワークがタイマー オブジェクトの EvtTimerFunc コールバック関数の実行を、タイマーの親デバイス オブジェクトの下にある他のオブジェクトからのコールバック関数と同期することを示すブール値。 詳細については、次の「解説」セクションを参照してください。 FALSE 場合、フレームワークは、EvtTimerFunc コールバック関数の実行を同期しません。

TolerableDelay

Period が指定するタイマー期間と、WdfTimerStart メソッドの DueTime が指定する初期時間間隔の許容範囲 ミリ秒単位で指定します。 定期的なタイマーの場合、2 つの連続するタイマーの有効期限の時間間隔は、(期間 - TolerableDelay) から (Period + TolerableDelay) までの範囲になります。 初期有効期限は、DueTime から (DueTime + TolerableDelay) までの範囲になります。 TolerableDelay 値を負にすることはできません。

TolerableDelay メンバーは、バージョン 1.9 以降のバージョンの KMDF で使用できます。

Windows 8.1 以降では、最小 KMDF 1.13 または UMDF 2.0 を使用するドライバーで、このメンバーを tolerableDelayUnlimited 設定して、このタイマーの有効期限の結果としてシステムを起動しないように指定できます。

UseHighResolutionTimer が WdfTrue 場合は、tolerableDelay 0 に設定する必要があります。 それ以外の場合 WdfTimerCreate はエラー コードを返します。

このメンバーの詳細については、次の「解説」セクションを参照してください。

UseHighResolutionTimer

KMDF のみ

このメンバーは、Windows 8.1 および KMDF バージョン 1.13 以降で使用できます。

WDF_TRI_STATE型指定された値。 この値が WdfTrue 場合、フレームワークは精度が 1 ミリ秒の高解像度タイマーを使用します。 値が WdfFalse 、または WdfDefault 場合、フレームワークはシステム クロックティック間隔 (既定では 15.6 ミリ秒) に一致する精度を持つ標準タイマーを使用します。

警告UseHighResolutionTimer を WdfTrue に設定した場合は、DueTime パラメーターを負の値に設定して、WdfTimerStart を呼び出す必要があります。 それ以外の場合、呼び出しによってシステムがクラッシュします。
 
UseHighResolutionTimer が WdfTrue 場合は、tolerableDelay 0 に設定する必要があります。 それ以外の場合 WdfTimerCreate はエラー コードを返します。

このメンバーの詳細については、次の「解説」セクションを参照してください。

備考

WDF_TIMER_CONFIG 構造体は、WdfTimerCreate メソッドへの入力として使用されます。 WDF_TIMER_CONFIG 構造体を初期化するには、ドライバーが WDF_TIMER_CONFIG_INIT または WDF_TIMER_CONFIG_INIT_PERIODICを呼び出す必要があります。

親オブジェクトの 同期スコープWdfSynchronizationScopeNoneに設定されている場合、WDF_TIMER_CONFIGautomaticSerialization メンバーを TRUE に設定しても効果はありません。

親デバイス オブジェクトの実行レベルが WdfExecutionLevelPassive 場合は、タイマー オブジェクトが パッシブ レベルのタイマーを表す場合にのみ、AutomaticSerialization メンバーを TRUE に設定できます。

ドライバーが TolerableDelay メンバーを使用している場合、オペレーティング システムは、一緒に近い有効期限をグループ化し、一度にそれらをすべて処理できます。 オペレーティング システムが一度に複数のタイマーの有効期限を処理できる場合は、バッテリ寿命を長くするために、コンピューターの低電力状態を長時間維持できる可能性があります。

TolerableDelay メンバーが TolerableDelayUnlimited 場合、タイマーの有効期限が切れると、システムは完全にオン (S0) 状態に戻らず、タイマーが低電力 (Sx) 状態の場合にタイマーを処理しません。 ドライバーは、タイマー 重要でない定期的な操作に関連する場合にバッテリ寿命を延やす TolerableDelayUnlimited を指定できます。

UseHighResolutionTimer を WdfTrue に設定すると、バッテリ寿命が低下する可能性があります。

AutomaticSerialization とドライバーコールバック関数の同期の の詳細については、「Framework-Based ドライバー 同期手法」を参照してください。

フレームワーク タイマー オブジェクトの詳細については、「タイマー の使用」を参照してください。

必要条件

要件 価値
最小 KMDF バージョン 1.0
UMDF の最小バージョン する 2.0
ヘッダー wdftimer.h (Wdf.h を含む)

関連項目

EvtTimerFunc

WDF_TIMER_CONFIG_INIT

WDF_TIMER_CONFIG_INIT_PERIODIC

WdfTimerCreate

WdfTimerStart