다음을 통해 공유


IoTimer 루틴 등록 및 사용

모든 드라이버는 IoInitializeTimer를 호출하여 하나 이상의 디바이스 개체를 만든 후 IoTimer 루틴을 등록할 수 있습니다. 그런 다음 드라이버는 IoStartTimer를 호출하여 타이머를 시작할 수 있습니다. 다음 그림에서는 이러한 호출을 보여 줍니다.

iotimer 루틴을 사용하는 다이어그램

IoCreateDevice를 호출하여 디바이스 개체를 만든 후 드라이버는 드라이버에서 만든 디바이스 개체에 대한 포인터 및 드라이버가 IoTimer 루틴에서 사용하는 컨텍스트를 유지하는 컨텍스트 영역과 함께 IoTimer 루틴의 진입점으로 IoInitializeTimer를 호출할 수 있습니다. I/O 관리자는 디바이스 개체를 커널 할당 타이머 개체와 연결하고 타이머 개체가 1초마다 시간 초과되도록 설정합니다.

드라이버가 IoStartTimer를 호출하면 드라이버가 IoStopTimer 를 호출할 때까지 IoTimer 루틴이 초당 한 번 호출됩니다. 드라이버는 IoStartTimer를 사용하여 IoTimer 루틴에 대한 호출을 다시 활성화할 수 있습니다. 드라이버가 IoStartTimer를 호출하는 경우가 많습니다. 이 포인터는 현재 IRP의 I/O 스택 위치에서 가져온 디바이스 개체 포인터를 제공합니다.

항목에서 IoTimer 루틴은 IoInitializeTimer를 호출할 때 드라이버가 제공한 컨텍스트 포인터와 함께 디바이스 개체 포인터를 전달합니다.

드라이버는 IoTimer 루틴 내에서 IoStopTimer를 호출 해서는 안 됩니다.

I/O 관리자는 지정된 디바이스 개체에 대한 타이머 루틴을 등록 취소하고 드라이버가 IoDeleteDevice를 호출할 때 연결된 컨텍스트를 해제합니다.