PcRegisterIoTimeout 함수(portcls.h)

PcRegisterIoTimeout 함수는 지정된 디바이스 개체에 대해 드라이버 제공 I/O 타이머 콜백 루틴을 등록합니다.

등록되면 포트 클래스 드라이버는 디바이스가 활성 상태로 유지되는 한 타이머 콜백을 초당 약 한 번 호출합니다.

참고 이 함수는 Windows 8 이상 버전의 Windows에서는 더 이상 사용되지 않습니다. Windows on Arm 시스템의 경우 이 함수는 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 반환합니다. 그렇지 않으면 적절한 오류 코드를 반환합니다. 다음 표에서는 몇 가지 가능한 오류 코드를 보여 줍니다.

반환 코드 설명
STATUS_INSUFFICIENT_RESOURCES
포트 클래스 드라이버 내에서 메모리 할당이 실패했음을 나타냅니다.
STATUS_UNSUCCESSFUL
디바이스 개체, I/O 타이머 콜백 루틴 및 컨텍스트의 조합이 동일한 타이머 콜백이 이미 등록되어 있음을 나타냅니다.

설명

어댑터 드라이버는 PcRegisterIoTimeout 함수를 호출하여 저해상도 Watchdog 타이머를 사용하도록 설정합니다. 드라이버는 주로 이 함수를 사용하여 최대 시간 간격 내에 이전에 시작된 I/O 작업을 완료하지 못하는 경우 이벤트 자체를 생성할 수단이 없는 디바이스를 모니터링합니다.

드라이버가 PcRegisterIoTimeout을 호출한 후 포트 클래스 드라이버는 디바이스가 활성 상태로 유지된 한 드라이버의 I/O 타이머 콜백 루틴을 초당 약 한 번 호출합니다. (디바이스는 IRP_MN_START_DEVICE 요청에 의해 활성화되고 IRP_MN_STOP_DEVICE 요청에 의해 비활성화됩니다.)

드라이버는 PcUnregisterIoTimeout을 호출하여 타이머를 사용하지 않도록 설정할 수 있습니다.

디바이스 개체, I/O 타이머 콜백 루틴 및 컨텍스트의 특정 조합이 있는 타이머 콜백은 한 번에 하나만 등록할 수 있습니다.

pContext 매개 변수의 의미는 어댑터 드라이버에 의해 결정되지만 드라이버는 일반적으로 미니포트, 미니포트 스트림 또는 어댑터 개체와 같은 개체를 가리키도록 이 매개 변수를 설정합니다.

pTimerRoutine 매개 변수는 PIO_TIMER_ROUTINE 형식이며 ntddk.h로 정의됩니다.

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

DeviceObject컨텍스트 매개 변수는 어댑터 드라이버가 이전에 PcRegisterIoTimeout에 호출 매개 변수로 전달한 값과 동일합니다. 포트 클래스 드라이버는 IRQL DISPATCH_LEVEL 타이머 루틴을 호출합니다. 타이머 루틴에는 페이저블 코드가 포함되어서는 안됩니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 PortCls 시스템 드라이버는 Microsoft Windows 98/Me 및 Windows 2000 이상 운영 체제에서 PcRegisterIoTimeout 함수를 구현합니다.
대상 플랫폼 유니버설
헤더 portcls.h(Portcls.h 포함)
라이브러리 Portcls.lib
IRQL PASSIVE_LEVEL

추가 정보

DEVICE_OBJECT

PcUnregisterIoTimeout