다음을 통해 공유


IoTimer 컨텍스트 정보 제공

IoInitializeTimer 전달된 컨텍스트 포인터는 다른 드라이버 루틴과 IoTimer 루틴 자체가 시간 제한 작업에 대한 상태를 유지할 수 있는 컨텍스트 영역을 식별합니다. I/O 관리자는 IoTimer 루틴을 호출할 때마다 컨텍스트 포인터를 전달합니다.

IoTimer 루틴은 IRQL = DISPATCH_LEVEL 실행되므로 해당 컨텍스트 영역은 상주 시스템 공간 메모리에 있어야 합니다. IoTimer 루틴이 있는 대부분의 드라이버는 연결된 디바이스 개체의 디바이스 확장을 컨텍스트 액세스 가능 영역으로 사용하지만, 드라이버가 컨트롤러 개체를 사용하거나 드라이버가 할당한 비페이지 풀에서 컨텍스트가 컨트롤러 확장에 있을 수 있습니다.

IoTimer루틴의 컨텍스트 영역에 대한 다음 지침을 따릅니다.

  • IoTimer 루틴이 해당 컨텍스트 영역을 드라이버의 ISR과 공유하는 경우 KeSynchronizeExecution을 사용하여 다중 프로세서로부터 안전한 방식으로 컨텍스트 영역에 액세스하는 SynchCritSection 루틴을 호출해야 합니다. 자세한 내용은 중요 섹션 사용을 참조 하세요.

  • IoTimer 루틴이 해당 컨텍스트 영역을 ISR과 공유하지 않지만 다른 드라이버 루틴과 공유하는 경우 드라이버는 다중 프로세서로부터 안전한 방식으로 컨텍스트 정보에 액세스하기 위해 초기화된 임원 스핀 잠금으로 공유 컨텍스트 영역을 보호해야 합니다. 자세한 내용은 스핀 잠금을 참조 하세요.