다음을 통해 공유


Windows Storage 드라이버 아키텍처

주변 장치 스토리지 디바이스에 대한 Windows 운영 체제 클래스 및 필터 드라이버는 클래스 위에 계층화된 중간 또는 최고 수준의 드라이버 또는 필터 드라이버와 시스템 제공 포트 드라이버 간의 인터페이스 역할을 합니다.

사용자 애플리케이션 또는 커널 구성 요소의 I/O 요청은 I/O System Services 및 파일 시스템 드라이버와 같은 하나 이상의 중간 또는 최고 수준 드라이버를 통해 스토리지 클래스 드라이버에 도달합니다. 스토리지 클래스 드라이버는 각 IRP를 다음 하위 드라이버로 보내기 전에 SCSI CDB(명령 설명자 블록)가 포함된 시스템 정의 SCSI 요청 블록(SRB)을 사용하여 IRP로 가져오는 표준 IRP를 변환합니다. 스토리지 포트 드라이버는 클래스 드라이버의 SRB를 I/O 버스 드라이버 및 하나 이상의 필터 드라이버를 통해 스토리지 HBA로 보내는 버스별 명령으로 변환합니다.

다음 그림에서는 Windows 스토리지 드라이버의 계층화된 아키텍처를 보여 줍니다.

nt 기반 운영 체제 스토리지 드라이버의 계층화된 아키텍처를 보여 주는 다이어그램

그림의 맨 아래에서부터 각 스토리지 드라이버 유형에 대해 설명합니다.

  1. 스토리지 포트 드라이버는 시스템 제공 디스크, 테이프, CDROM, DVD 및 체인저 클래스 드라이버를 포함하여 모든 Windows 스토리지 클래스 드라이버에 대한 인터페이스를 정의합니다. 이 포트/클래스 인터페이스는 해당 디바이스가 연결된 호스트 버스 어댑터의 어댑터별 요구 사항으로부터 클래스 드라이버를 격리합니다. 또한 스토리지 포트 드라이버는 해당 HBA에서 디바이스의 모든 드라이버에 대한 버스 액세스를 동기화합니다. 시스템은 SCSI, IDE, USB 및 IEEE 1394 어댑터용 스토리지 포트 드라이버를 제공합니다.

    스토리지 포트 드라이버는 다음 상위 드라이버(스토리지 클래스 드라이버 또는 중간 필터 드라이버)로부터 SRB를 수신하고 다음과 같이 처리합니다.

    • SCSI 또는 기타 버스용 스토리지 포트 드라이버는 CDB가 있는 SRB를 해당 포트 드라이버에 동적으로 연결되고 특정 HBA에 대한 하드웨어별 지원을 제공하는 운영 체제 독립적 HBA별 Storport 미니포트 드라이버 에 전달합니다. SCSI 미니포트 드라이버를 구현하는 방법에 대한 자세한 내용은 Storport Miniport Drivers를 참조하세요.
    • 레거시 IDE/ATAPI 또는 IEEE 1394 버스에 대한 스토리지 포트 드라이버는 스토리지 클래스 드라이버에서 받은 SRB를 기본 어댑터에 필요한 형식으로 변환합니다. 예를 들어 버스별 전송 프로토콜에 따라 CDB를 다시 패키징하거나 다른 형식으로 변환하여 기본 버스의 특수성으로부터 상위 수준 드라이버를 격리합니다.
  2. 상위 또는 하위 스토리지 필터 드라이버는 시스템 제공 스토리지 클래스 드라이버에서 제공하지 않는 디바이스별 기능을 지원합니다. 하위 필터 스토리지 드라이버는 스토리지 클래스 드라이버에서 발급한 SRB 및/또는 IRP를 모니터링하고 필요에 따라 수정한 후 다음 하위 드라이버(스토리지 포트 드라이버 또는 다른 스토리지 필터 드라이버)에 전달합니다.

    스토리지 필터 드라이버를 구현하는 방법에 대한 자세한 내용은 스토리지 필터 드라이버를 참조하세요.

  3. 스토리지 클래스 드라이버는 SCSI 포트/클래스 인터페이스를 사용하여 시스템이 스토리지 포트 드라이버를 제공하는 버스에서 해당 유형의 디바이스를 제어합니다. 클래스 드라이버는 특정 디바이스 클래스와 관련이 있습니다. 예를 들어 한 클래스 드라이버는 지원되는 모든 버스에서 모든 CD-ROM 디바이스를 실행할 수 있습니다. 다른 사용자는 모든 디스크 디바이스를 제어할 수 있습니다. 스토리지 클래스 드라이버는 디바이스가 SCSI 디바이스인 것처럼 CDB가 포함된 SRB를 빌드하고 해당 SRB를 다음 하위 드라이버(스토리지 포트 드라이버 또는 중간 필터 드라이버)에 발급하여 스토리지 스택에서 사용자 애플리케이션 또는 더 높은 드라이버의 I/O 요청을 처리합니다.

    스토리지 클래스 드라이버의 구현은 상위 수준 드라이버에 투명합니다. 테이프 또는 중간 변경기 디바이스에 대한 클래스 드라이버는 시스템 제공 클래스 드라이버에 연결되는 디바이스별 미니클래스 드라이버로 구현됩니다. 디스크 및 CD-ROM/DVD와 같은 다른 스토리지 디바이스에 대한 시스템 제공 클래스 드라이버는 단일 모놀리식 드라이버로 구현됩니다.

    스토리지 클래스 드라이버를 구현하는 방법에 대한 자세한 내용은 스토리지 클래스 드라이버를 참조하세요. 테이프 또는 체인저 미니클래스 드라이버를 구현하는 방법에 대한 자세한 내용은 테이프 드라이버체인저 드라이버를 각각 참조하세요.

  4. 상위 필터 스토리지 드라이버는 스토리지 스택의 상위 사용자 애플리케이션 및 드라이버에서 IRP를 가로채서 다음 하위 드라이버(스토리지 클래스 드라이버 또는 다른 스토리지 필터 드라이버)에 전달하기 전에 수정할 수 있습니다. 필터 드라이버는 일반적으로 기본 디바이스의 성능을 모니터링합니다.

디바이스가 연결된 버스 유형 및 해당 스토리지 포트 드라이버의 구현은 상위 수준 드라이버에 투명합니다. 스토리지 포트 드라이버는 SCSI 포트 드라이버와 같은 포트/미니포트 드라이버 아키텍처에 따라 구현될 수 있습니다. 단일 표준 하드웨어(예: IDE/ATAPI 포트 드라이버)를 제어하는 모놀리식 드라이버로, 또는 SRB를 IEEE 1394 포트 드라이버와 같은 다른 드라이버 스택에 필요한 형식으로 변환하는 필터 드라이버입니다.

시스템 제공 SCSI 포트 드라이버는 스토리지 클래스 드라이버와 동일한 유형의 비 SCSI 스토리지 디바이스를 제어하는 SCSI 미니포트 드라이버 간의 인터페이스 역할을 할 수도 있습니다. 예를 들어 드라이버 작성기는 새 디스크 배열 컨트롤러에 대한 드라이버를 작성하는 대신 시스템 SCSI 포트 드라이버에 연결하고 제공하는 인터페이스를 사용하는 의사-SCSI 미니포트 드라이버를 작성하여 상당한 디자인, 개발 및 디버깅 작업을 절약할 수 있습니다. 들어오는 SCSI 명령을 디바이스별 명령으로 변환하려면 이러한 미니포트 드라이버가 필요합니다. 반면에 시스템 제공 포트 및 클래스 드라이버는 초기화 중에 레지스트리 액세스, 모든 리소스 및 개체 할당, 동기화, 미니포트 디바이스의 기능에 맞게 요청된 전송의 사전 크기 조정 및 요청 다시 시도를 포함하여 의사 SCSI 미니포트를 대신하여 필요한 많은 작업을 처리합니다.

SRB에 대한 자세한 내용은 Kernel-Mode 드라이버 아키텍처 참조를 참조하세요. CDB에 대한 디바이스 유형별 정보는 INCITS SCSI-3 표준에서 적절한 명령 집합을 참조하세요.