共用方式為


PcRegisterIoTimeout 函式 (portcls.h)

PcRegisterIoTimeout 函式會為指定的裝置物件註冊驅動程式提供的 I/O 定時器回呼例程。

註冊之後,只要裝置保持作用中,埠類別驅動程式就會大約每秒呼叫定時器回呼一次。

注意此函式已被取代 Windows 8 及更新版本的 Windows。 針對 Arm 系統上的 Windows,此函式會在 PortCls 類別驅動程式中批注化,而且無法存取。
 

語法

PORTCLASSAPI NTSTATUS PcRegisterIoTimeout(
  [in] PDEVICE_OBJECT    pDeviceObject,
  [in] PIO_TIMER_ROUTINE pTimerRoutine,
  [in] PVOID             pContext
);

參數

[in] pDeviceObject

代表 I/O 作業可能會逾時之裝置的裝置物件的指標。此參數必須指向類型 為 DEVICE_OBJECT的系統結構。 呼叫 I/O 定時器回呼例程時,埠類別驅動程式會將這個指標當做兩個呼叫參數的第一個。 如需詳細資訊,請參閱接下來的<備註>一節。

[in] pTimerRoutine

驅動程式提供的 I/O 定時器回呼例程指標。 如需詳細資訊,請參閱接下來的<備註>一節。

[in] pContext

驅動程式特定內容的指標。 呼叫 I/O 定時器回呼例程時,埠類別驅動程式會將這個指標當做兩個呼叫參數的第二個。 如需詳細資訊,請參閱接下來的<備註>一節。

傳回值

如果呼叫成功,PcRegisterIoTimeout 會傳回STATUS_SUCCESS。 否則,它會傳回適當的錯誤碼。 下表顯示一些可能的錯誤碼。

傳回碼 Description
STATUS_INSUFFICIENT_RESOURCES
可能表示記憶體配置在埠類別驅動程式內失敗。
STATUS_UNSUCCESSFUL
可能表示已註冊裝置物件、I/O 定時器回呼例程和內容的相同組合定時器回呼。

備註

配接器驅動程式會呼叫 PcRegisterIoTimeout 函式,以啟用低解析度監視程式定時器。 驅動程式主要使用這個函式來監視沒有方法可以自行產生事件的裝置,如果他們無法在一段最大時間間隔內完成先前起始的 I/O 作業。

驅動程式呼叫 PcRegisterIoTimeout 之後,埠類別驅動程式會呼叫驅動程式的 I/O-timer 回呼例程大約每秒一次,只要裝置保持使用中狀態。 (裝置是由IRP_MN_START_DEVICE要求啟用,並由 IRP_MN_STOP_DEVICE request.) 停用

驅動程式可以呼叫 PcUnregisterIoTimeout 來停用定時器。

一次只能註冊一個具有特定裝置物件、I/O 定時器回呼例程和內容的定時器回呼。

pContext 參數的意義取決於配接器驅動程式,但驅動程式通常會將此參數設定為指向迷你埠、迷你埠數據流或配接器對象等物件。

pTimerRoutine 參數的類型為 PIO_TIMER_ROUTINE,其定義於 ntddk.h 中

  VOID
    (*PIO_TIMER_ROUTINE)(
      IN PDEVICE_OBJECT  DeviceObject,
      IN PVOID  Context
      );

DeviceObjectContext 參數與配接器驅動程式先前傳遞為 PcRegisterIoTimeout 呼叫參數的值相同。 埠類別驅動程式會在 IRQL DISPATCH_LEVEL呼叫定時器例程。 定時器例程不得包含可分頁的程序代碼。

規格需求

需求
最低支援的用戶端 PortCls 系統驅動程式會在 Microsoft Windows 98/Me 和 Windows 2000 和更新版本的操作系統中實作 PcRegisterIoTimeout 函式。
目標平台 Universal
標頭 portcls.h (包括 Portcls.h)
程式庫 Portcls.lib
IRQL PASSIVE_LEVEL

另請參閱

DEVICE_OBJECT

PcUnregisterIoTimeout