PcRegisterIoTimeout 関数 (portcls.h)
PcRegisterIoTimeout 関数は、指定されたデバイス オブジェクトに対してドライバー指定の I/O タイマー コールバック ルーチンを登録します。
登録されると、ポート クラス ドライバーは、デバイスがアクティブなままである限り、1 秒あたり約 1 回タイマー コールバックを呼び出します。
構文
PORTCLASSAPI NTSTATUS PcRegisterIoTimeout(
[in] PDEVICE_OBJECT pDeviceObject,
[in] PIO_TIMER_ROUTINE pTimerRoutine,
[in] PVOID pContext
);
パラメーター
[in] pDeviceObject
I/O 操作がタイムアウトする可能性があるデバイスを表すデバイス オブジェクトへのポインター。このパラメーターは、 DEVICE_OBJECT型のシステム構造を指す必要があります。 I/O タイマー コールバック ルーチンを呼び出すとき、ポート クラス ドライバーは、このポインターを 2 つの呼び出しパラメーターの最初として渡します。 詳細については、「解説」を参照してください。
[in] pTimerRoutine
ドライバー提供の I/O タイマー コールバック ルーチンへのポインター。 詳細については、「解説」を参照してください。
[in] pContext
ドライバー固有のコンテキストへのポインター。 I/O タイマー コールバック ルーチンを呼び出すとき、ポート クラス ドライバーは、このポインターを 2 つの呼び出しパラメーターの 2 番目として渡します。 詳細については、「解説」を参照してください。
戻り値
PcRegisterIoTimeout は、呼び出しが成功した場合にSTATUS_SUCCESSを返します。 それ以外の場合は、適切なエラー コードを返します。 次の表に、考えられるエラー コードの一部を示します。
リターン コード | 説明 |
---|---|
|
ポート クラス ドライバー内でメモリ割り当てが失敗したことを示している可能性があります。 |
|
デバイス オブジェクト、I/O タイマー コールバック ルーチン、およびコンテキストの同じ組み合わせを持つタイマー コールバックが既に登録されていることを示している可能性があります。 |
注釈
アダプター ドライバーは 、PcRegisterIoTimeout 関数を呼び出して、低解像度のウォッチドッグ タイマーを有効にします。 ドライバーは、以前に開始された I/O 操作を何らかの最大時間間隔で完了できなかった場合に、イベント自体を生成する手段がないデバイスを主に監視するために、この関数を使用します。
ドライバーが PcRegisterIoTimeout を呼び出した後、ポート クラス ドライバーは、デバイスがアクティブなままである限り、約 1 秒に 1 回、ドライバーの I/O タイマー コールバック ルーチンを呼び出します。 (デバイスはIRP_MN_START_DEVICE要求によってアクティブ化され、IRP_MN_STOP_DEVICE要求によって非アクティブ化されます。
ドライバーは、 PcUnregisterIoTimeout を呼び出すことによってタイマーを無効にすることができます。
一度に登録できるタイマー コールバックは、デバイス オブジェクト、I/O タイマー コールバック ルーチン、コンテキストの特定の組み合わせで 1 つだけです。
pContext パラメーターの意味はアダプター ドライバーによって決まりますが、ドライバーは通常、ミニポート、ミニポート ストリーム、アダプター オブジェクトなどのオブジェクトを指すようにこのパラメーターを設定します。
pTimerRoutine パラメーターの型は PIO_TIMER_ROUTINE で、ntddk.h で定義されます。
VOID
(*PIO_TIMER_ROUTINE)(
IN PDEVICE_OBJECT DeviceObject,
IN PVOID Context
);
DeviceObject パラメーターと Context パラメーターは、アダプター ドライバーが以前に PcRegisterIoTimeout に呼び出しパラメーターとして渡した値と同じです。 ポート クラス ドライバーは、IRQL DISPATCH_LEVELでタイマー ルーチンを呼び出します。 タイマー ルーチンにページング可能なコードを含めてはいけません。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | PortCls システム ドライバーは、Microsoft Windows 98/Me および Windows 2000 以降のオペレーティング システムで PcRegisterIoTimeout 関数を実装します。 |
対象プラットフォーム | ユニバーサル |
Header | portcls.h (Portcls.h を含む) |
Library | Portcls.lib |
IRQL | PASSIVE_LEVEL |