次の方法で共有


WdfTimerCreate 関数 (wdftimer.h)

[KMDF と UMDF に適用]

WdfTimerCreate メソッドは、フレームワーク タイマー オブジェクトを作成します。

構文

NTSTATUS WdfTimerCreate(
  [in]  PWDF_TIMER_CONFIG      Config,
  [in]  PWDF_OBJECT_ATTRIBUTES Attributes,
  [out] WDFTIMER               *Timer
);

パラメーター

[in] Config

WDF_TIMER_CONFIG構造体へのポインター。

[in] Attributes

新しいタイマー オブジェクトのオブジェクト属性を含む WDF_OBJECT_ATTRIBUTES 構造体へのポインター。

[out] Timer

新しいフレームワーク タイマー オブジェクトへのハンドルを受け取る場所へのポインター。

戻り値

操作が成功した場合、WdfTimerCreate はSTATUS_SUCCESSを返します。 それ以外の場合、このメソッドは次のいずれかの値を返す可能性があります。

リターン コード 説明
STATUS_WDF_PARENT_NOT_SPECIFIED
Attributes パラメーターが NULL であるか、Attributes が指定するWDF_OBJECT_ATTRIBUTES構造体の ParentObject メンバーが NULL でした。
STATUS_INVALID_PARAMETER
無効なパラメーターが指定されました。
STATUS_INVALID_DEVICE_REQUEST
WDF_OBJECT_ATTRIBUTES構造体の ParentObject メンバーは、フレームワーク デバイス オブジェクトまたは親のチェーンがフレームワーク デバイス オブジェクトにつながるオブジェクトを参照しませんでした。
STATUS_INSUFFICIENT_RESOURCES
メモリが不足していました。
STATUS_WDF_INCOMPATIBLE_EXECUTION_LEVEL
WDF_TIMER_CONFIG構造体の AutomaticSerialization メンバーは TRUE に設定されましたが、親デバイス オブジェクトの実行レベルWdfExecutionLevelPassive に設定されました。
 

WdfTimerCreate メソッドが返す可能性があるその他の戻り値の一覧については、「Framework オブジェクト作成エラー」を参照してください。

このメソッドは、他の NTSTATUS 値も返す場合があります。

注釈

ドライバーが WdfTimerCreate を呼び出すときは、 WDF_OBJECT_ATTRIBUTES 構造体を指定し、構造体の ParentObject メンバーに親オブジェクトを指定する必要があります。 親オブジェクトには、フレームワーク デバイス オブジェクト、または親のチェーンがフレームワーク デバイス オブジェクトにつながる任意のオブジェクトを指定できます。 フレームワークは、デバイス オブジェクトを削除するとタイマー オブジェクトを削除します。

タイマー オブジェクトを作成した後、ドライバーは WdfTimerStart を 呼び出して、タイマーが定期的かどうかに関係なくタイマーのクロックを開始する必要があります。

ドライバーがフレームワーク タイマー オブジェクト の EvtCleanupCallback または EvtDestroyCallback コールバック関数を提供する場合、フレームワークは IRQL = PASSIVE_LEVEL でこれらのコールバック関数を呼び出します。

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

次のコード例では、 WDF_TIMER_CONFIG 構造体と WDF_OBJECT_ATTRIBUTES 構造体を初期化し、 WdfTimerCreate を呼び出します。

WDF_TIMER_CONFIG  timerConfig;
WDF_OBJECT_ATTRIBUTES  timerAttributes;
WDFTIMER  timerHandle;
NTSTATUS  status;

WDF_TIMER_CONFIG_INIT(
                      &timerConfig,
                      MyEvtTimerFunc
                      );

timerConfig.AutomaticSerialization = TRUE;

WDF_OBJECT_ATTRIBUTES_INIT(&timerAttributes);
timerAttributes.ParentObject = DeviceHandle;

status = WdfTimerCreate(
                        &timerConfig,
                        &timerAttributes,
                        &timerHandle
                        );

if (!NT_SUCCESS(status)) {
    return status;
}

要件

要件
対象プラットフォーム ユニバーサル
最小 KMDF バージョン 1.0
最小 UMDF バージョン 2.0
Header wdftimer.h (Wdf.h を含む)
Library Wdf01000.sys (KMDF);WUDFx02000.dll (UMDF)
IRQL <=DISPATCH_LEVEL
DDI コンプライアンス規則 DriverCreate(kmdf)KmdfIrql(kmdf)KmdfIrql2(kmdf)、KmdfIrqlExplicit(kmdf)

こちらもご覧ください

WDF_OBJECT_ATTRIBUTES

WDF_OBJECT_ATTRIBUTES_INIT

WDF_TIMER_CONFIG

WDF_TIMER_CONFIG_INIT

WdfTimerStart