タイマーのサービス提供

NDIS は、NDIS 6.0 タイマーが起動したときに NetTimerCallback 関数を呼び出します。 この関数の FunctionContext パラメーターには、ドライバーが提供するコンテキスト領域へのポインターが含まれています。 FunctionContext の既定値は、NDIS_TIMER_CHARACTERISTICS 構造体で指定されます。 ドライバーは、その構造体を NdisAllocateTimerObject 関数に渡し、関連付けられているタイマー オブジェクトを割り当てて初期化します。

ドライバーが、NdisSetTimerObject 関数に渡される FunctionContext パラメーターに NULL 以外の値を指定した場合、NDIS はその値を NetTimerCallback 関数の FunctionContext パラメーターに渡します。 それ以外の場合、NDIS は、NDIS_TIMER_CHARACTERISTICS 構造体で指定されている既定値を渡します。

任意の NDIS ドライバーは、複数の NetTimerCallback 関数を持つことができます。 このような NetTimerCallback 関数は、異なるドライバーに割り当て、初期化されたタイマー オブジェクトにそれぞれ関連付ける必要があります。

NdisSetTimerObject 関数を呼び出すと、タイマー オブジェクトに関連付けられている NetTimerCallback 関数は、指定した間隔後または定期的に実行されます。

NetTimerCallback 関数の呼び出しを停止するには、NdisCancelTimerObject 関数を呼び出します。 NdisCancelTimerObject の呼び出しの前にタイムアウトが既に期限切れになっている場合、NDIS は引き続き NetTimerCallback を呼び出す可能性があります。

NetTimerCallback 関数がリソースを他のドライバー関数と共有する場合、ドライバーはそれらのリソースへのアクセスをスピン ロックを使用して同期する必要があります。