표준 드라이버 루틴 소개

각 커널 모드 드라이버는 시스템 정의 표준 드라이버 루틴 집합을 중심으로 생성됩니다. 커널 모드 드라이버는 시스템에서 제공하는 드라이버 지원 루틴을 호출하여 이러한 표준 루틴 내에서 I /O 요청 패킷 (IRP)을 처리합니다.

연결된 드라이버 체인의 수준에 관계없이 모든 드라이버는 IRP를 처리하기 위해 기본 표준 루틴 집합이 있어야 합니다. 드라이버가 추가 표준 루틴을 구현해야 하는지 여부는 드라이버가 물리적 디바이스를 제어하는지 또는 물리적 디바이스 드라이버를 통해 계층화되는지 여부와 기본 물리적 디바이스의 특성에 따라 달라집니다. 물리적 디바이스를 제어하는 최저 수준 드라이버는 일반적으로 처리를 위해 IRP를 더 낮은 드라이버에 전달하는 상위 수준 드라이버보다 더 많은 필수 루틴을 갖습니다.

표준 드라이버 루틴은 각 커널 모드 드라이버에 있어야 하는 그룹과 디바이스 스택의 드라이버 유형 및 위치에 따라 선택 사항인 두 그룹으로 나눌 수 있습니다.

다음 표에는 필요한 표준 루틴이 나와 있습니다.

필수 표준 드라이버 루틴 목적 설명된 위치
DriverEntry 드라이버 및 해당 드라이버 개체를 초기화합니다. DriverEntry 루틴 작성
AddDevice 디바이스를 초기화하고 디바이스 개체를 만듭니다. AddDevice 루틴 작성
디스패치 루틴 IRP를 수신하고 처리합니다. 디스패치 루틴 작성
언로드 드라이버에서 획득한 시스템 리소스를 해제합니다. 언로드 루틴 작성

다음 표에는 몇 가지 선택적 루틴이 나와 있습니다.

선택적 표준 드라이버 루틴 목적 설명된 위치
다시 초기화 DriverEntry를 사용할 수 없는 경우 드라이버 초기화를 완료합니다. 루틴 다시 초기화 작성
StartIo 물리적 디바이스에서 I/O 작업을 시작합니다. StartIo 루틴 작성
인터럽트 서비스 루틴 인터럽트할 때 디바이스의 상태를 저장합니다. ISR 작성
지연 프로시저 호출 ISR이 디바이스 상태를 저장한 후 디바이스 인터럽트 처리를 완료합니다. DPC 개체 및 DPC
SynchCritSection 드라이버 데이터에 대한 액세스를 동기화합니다. 중요 섹션 사용
AdapterControl DMA 작업을 시작합니다. 어댑터 개체 및 DMA
IoCompletion 드라이버의 IRP 처리를 완료합니다. IRP 완료
취소 드라이버의 IRP 처리를 취소합니다. IRP 취소
CustomTimerDpc, IoTimer 이벤트 타이밍 및 동기화. 동기화 기술

현재 IRP 및 대상 디바이스 개체는 많은 표준 루틴에 대한 입력 매개 변수입니다. 모든 드라이버는 표준 루틴 집합을 통해 각 IRP를 단계적으로 처리합니다.

규칙에 따라 시스템 제공 드라이버는 DriverEntry를 제외한 모든 표준 루틴의 이름에 식별, 드라이버별 또는 디바이스별 접두사 앞에 추가됩니다. 예를 들어 이 설명서에서는 드라이버 개체 소개의 그림과 같이 "DD"를 사용합니다. 이 규칙에 따라 드라이버를 더 쉽게 디버그하고 유지 관리할 수 있습니다.