다음을 통해 공유


I/O 작업을 위한 디바이스 프로그래밍

I/O 작업을 위해 디바이스를 프로그래밍하는 SynchCritSection 루틴을 디자인, 작성 및 호출하기 위해 다음 일반 지침을 사용합니다.

  • I/O 작업을 위해 디바이스를 프로그래밍하는 SynchCritSection 루틴은 가능한 한 빨리 제어를 반환해야 합니다.

    이러한 이유로 SynchCritSection 루틴은 I/O용 디바이스를 설정하는 데 필요한 작업만 수행해야 합니다. 따라서 드라이버는 모든 IRP 전처리를 수행하고, 다른 드라이버 루틴에 대한 상태 정보를 초기화하고, SynchCritSection 루틴을 호출하기 전에 하드웨어 리소스를 획득해야 합니다.

  • 디바이스 드라이버에는 디바이스를 프로그래밍하는 여러 SynchCritSection 루틴이 있을 수 있습니다.

    예를 들어 읽기 요청을 설정하는 디바이스의 드라이버가 특정 디바이스 제어 요청을 설정하는 것과 현저하게 다르면 각 요청 유형에 대해 디바이스를 프로그래밍하는 별도의 SynchCritSection 루틴이 있을 수 있습니다.

  • 모든 SynchCritSection 루틴을 실행하면 드라이버의 ISR이 실행되지 않으므로 모든 SynchCritSection 루틴은 가능한 한 빨리 컨트롤을 반환해야 합니다.

    switch 문을 사용하여 단일 대규모 범용 SynchCritSection 루틴을 작성하거나 여러 개의 중첩된 경우를 작성해서는 안 됩니다. 다음.. 실행할 작업 또는 업데이트할 상태 정보를 결정하는 else 문입니다. 반면에 단일 디바이스 레지스터만 프로그래밍하는 수많은 SynchCritSection 루틴을 작성하지 않아야 합니다.