次の方法で共有


NdisCancelTimerObject 関数 (ndis.h)

NdisCancelTimerObject 関数は、NdisSetTimerObject 関数の以前の呼び出しに関連付けられているタイマー オブジェクトを取り消します。

構文

BOOLEAN NdisCancelTimerObject(
  [in] NDIS_HANDLE TimerObject
);

パラメーター

[in] TimerObject

ドライバーが を呼び出すときに NDIS が提供するタイマー オブジェクトへのハンドル NdisAllocateTimerObject 関数。

戻り値

指定したタイマー オブジェクトがシステム タイマー キューにある場合、NdisCancelTimerObjectTRUE を返します。それ以外の場合は、FALSE を返します

注釈

NdisCancelTimerObject の呼び出しは、最後に指定されたタイムアウト間隔がまだ期限切れになっていない場合、NetTimerCallback 関数の実行を取り消します。

NDIS ドライバーは、ドライバーが既に解放されているリソースに NetTimerCallback 関数がアクセスしないように、停止またはアンロードするときに最初に NdisCancelTimerObject を呼び出す必要があります。

NdisSetTimerObject 関数の MillisecondsPeriod パラメーターに 0 以外の値を指定した場合、タイマーは定期的タイマーと呼ばれますMillisecondsPeriod パラメーターにゼロ値を指定した場合、タイマーはワンショット タイマーと呼ばれます。 次の点は、両方の種類のタイマーを取り消す場合に適用されます。

  • NdisCancelTimerObject の呼び出し元が定期的なタイマーを取り消している場合は、IRQL = PASSIVE_LEVELで実行されている必要があります。 それ以外の場合は、 NdisCancelTimerObject の呼び出し元が IRQL <= DISPATCH_LEVELで実行されている必要があります。
  • NdisCancelTimerObject の呼び出し元が定期的なタイマーを取り消している場合、NdisCancelTimerObject はKeFlushQueuedDpcs を呼び出して、タイマーが現在実行されていないことを確認します。 したがって、呼び出し元は、タイマーが別のプロセッサで現在実行されていないことを確認するために、個別の同期メカニズムを持っている必要はありません。

    NdisCancelTimerObject の呼び出し元がワンショット タイマーを取り消す場合、呼び出し元は、タイマーが別のプロセッサで現在実行されていないことを確認するために、別の同期メカニズムが必要です。 たとえば、呼び出し元は 、スレッドが 完了しようとしているときにタイマー スレッドがミューテックス オブジェクトに通知するまで待機するために、NDIS_WAIT_FOR_MUTEXを呼び出すことができます。

    詳細については、「 ネットワーク ドライバーでの同期と通知」を参照してください。

要件

要件
サポートされている最小のクライアント NDIS 6.0 以降でサポートされています。
対象プラットフォーム ユニバーサル
Header ndis.h (Ndis.h を含む)
Library Ndis.lib
IRQL 「解説」セクションを参照してください
DDI コンプライアンス規則 Irql_Timer_Function(ndis)PeriodicTimer(ndis)

こちらもご覧ください

NdisAllocateTimerObject

NdisSetTimerObject

NetTimerCallback