스토리지 클래스 드라이버 소개

스토리지 클래스 드라이버는 잘 설정된 SCSI 클래스/포트 인터페이스를 사용하여 시스템이 스토리지 포트 드라이버(현재 SCSI, IDE, USB 및 IEEE 1394)를 제공하는 모든 버스에서 해당 유형의 대용량 스토리지 디바이스를 제어합니다. 스토리지 디바이스가 연결된 특정 버스는 스토리지 클래스 드라이버에 투명합니다.

모든 스토리지 클래스 드라이버는 CDB(명령 설명자 블록)가 포함된 SCSI 요청 블록(SRB)을 빌드하고 중간 필터 드라이버를 통해 기본 스토리지 포트 드라이버로 전송하여 사용자 애플리케이션 또는 상위 수준 드라이버의 I/O 요청을 처리합니다.

스토리지 클래스 드라이버는 SRB에서 주소 지정 정보를 제공하지 않습니다. 대신 포트 드라이버(또는 여전히 낮은 드라이버)는 필요한 모든 주소 지정을 담당합니다. 스토리지 포트 드라이버는 SRB를 기본 HBA(호스트 버스 어댑터)에 필요한 형식으로 변환합니다. 이 형식은 SCSI 또는 1394 호스트 버스 어댑터, IDE 컨트롤러 또는 기타 하드웨어일 수 있으며 디바이스에 명령을 실행합니다. WDK(Windows 드라이버 키트)에서 "HBA"라는 용어는 이러한 기본 어댑터 또는 컨트롤러를 의미합니다.

I/O 관리자와 스토리지 클래스 드라이버 위에 계층화된 상위 수준 드라이버에 대해 대부분의 스토리지 클래스 드라이버는 표준 커널 모드 중간 드라이버입니다. 따라서 모든 클래스 드라이버에는 DriverEntry 루틴, AddDevice 루틴, 언로드 루틴, 하나 이상의 IoCompletion 루틴 및 플러그 앤 플레이 및 전원 IRP를 처리하는 DispatchPnPDispatchPower 루틴이 있어야 합니다.

스토리지 클래스 드라이버에는 시스템 제어 IRP를 처리하는 DispatchSystemControl 루틴도 있어야 하며 드라이버 디자이너에서 결정한 StartIo 루틴과 같은 다른 표준 상위 수준 드라이버 루틴을 가질 수 있습니다. 시스템 제어 및 표준 커널 모드 드라이버 루틴에 대한 자세한 내용은 표준 드라이버 루틴을 참조하세요.

PnP 관리자에게 스토리지 클래스 드라이버는 함수 드라이버, 즉 개별 디바이스를 구동하는 드라이버입니다. 스토리지 클래스 드라이버는 해당 디바이스의 자식 디바이스를 열거하는 버스 드라이버 역할을 할 수도 있습니다. 예를 들어 디스크와 같은 분할된 미디어 디바이스의 클래스 드라이버는 파티션을 나타내는 PDO 목록을 반환합니다. 이러한 각 PDO는 대상 디바이스로 처리되고 자체 클래스 드라이버에서 서비스를 받을 수 있습니다.

참고

이 섹션에 설명된 대로 프린터 또는 스캐너와 같은 SCSI 디바이스에 대한 드라이버를 구현해야 합니다. 이러한 SCSI 디바이스에 대한 드라이버는 동일한 SCSI 클래스/포트 인터페이스를 사용하여 디바이스를 제어하고, IRP를 처리하고, SRB를 빌드하고, 스토리지 디바이스의 드라이버와 마찬가지로 기본 포트 드라이버로 보내는 동일한 책임을 집니다.