다음을 통해 공유


SCSI HBA에 대한 디바이스 개체 예제

다음 그림에서는 PCI IEEE 1394 컨트롤러와 CD-ROM 및 분할 가능한 디스크 디바이스가 연결된 PCI SCSI 어댑터를 사용하여 시스템에 대해 만들어진 디바이스 개체를 보여 줍니다. IEEE 1394 컨트롤러에 연결된 디바이스의 개체는 IEEE 1394 컨트롤러에 대한 디바이스 개체 예제에 표시되고 설명됩니다.

CD-ROM 및 분할 가능한 디스크 디바이스가 연결된 PCI IEEE 1394 컨트롤러 및 PCI SCSI 어댑터를 사용하여 시스템에 대해 만들어진 디바이스 개체입니다.

SCSI HBA의 CD-ROM 및 디스크 디바이스에 대한 디바이스 개체 트리

그림의 맨 아래에서 시작하여 각 디바이스 개체와 연결된 드라이버에 대해 설명합니다.

  1. 스토리지 버스 드라이버는 스토리지 버스에 대한 FDO를 만들고 PnP 관리자가 만든 스토리지 버스 PDO에 연결합니다(이 그림에 표시되지 않음). 스토리지 버스 FDO 아래의 디바이스 개체 트리 구조는 스토리지 버스 및 시스템에 통합되는 방법에 따라 달라집니다. 포트 드라이버 수준 이상의 스토리지 드라이버는 이러한 하위 개체와 상호 작용하지 않습니다.

    이 그림에서는 PCI 버스가 있는 시스템에 대해 PCI 버스 드라이버에서 만든 스토리지 버스 FDO를 보여 줍니다.

  2. PCI 버스 드라이버는 버스의 각 스토리지 어댑터에 대해 PDO를 열거하고 만듭니다. 해당 스토리지 포트 드라이버는 FDO를 만들고 해당 어댑터의 PDO에 연결합니다.

    이 그림에서는 IEEE 1394 컨트롤러용(IEEE 1394 컨트롤러의 경우 Device Object Example에 설명됨)과 SCSI HBA용 어댑터 PDO 두 개를 보여 줍니다. SCSI 포트 드라이버와 연결된 미니포트 드라이버는 FDO를 만들고 SCSI 어댑터 PDO에 연결합니다.

  3. 스토리지 포트 드라이버는 어댑터에 연결된 각 대상 디바이스에 대한 PDO를 만들어 대상 디바이스를 가상화합니다. 이 그림에서는 SCSI 포트/미니포트 드라이버에서 만든 두 가지 PDO를 보여 줍니다. 하나는 하드 디스크 드라이브용이고 다른 하나는 CD-ROM용입니다.

  4. 하나 이상의 필터 드라이버는 스토리지 포트 드라이버에서 내보낸 대상 디바이스 PDO에 필터 디바이스 개체(필터 DO)를 연결할 수 있습니다. 이러한 필터 드라이버는 예를 들어 제네릭 클래스 또는 포트 드라이버에 대한 하드웨어별 변경 없이 디바이스 관련 문제를 해결하기 위해 클래스 드라이버에서 대상 디바이스로 보낸 요청을 가로채고 변경할 수 있습니다.

    이 그림에서는 CD 오디오 필터 드라이버가 CD-ROM의 PDO에 연결한 필터 DO를 보여 줍니다.

  5. 스토리지 클래스 드라이버는 FDO를 만들고 스토리지 포트 드라이버에서 내보낸 대상 디바이스 PDO 또는 중간 필터 드라이버에 의해 스택에 연결된 필터 DO인 다음 하위 디바이스 개체에 연결합니다. 클래스 드라이버는 하위 드라이버의 디바이스 개체를 통해 스토리지 디바이스에 대한 모든 후속 요청을 발급합니다.

    이 그림에서는 CD-ROM 디바이스를 나타내는 FDO와 하드 디스크 드라이브의 파티션 0을 나타내는 FDO 두 개를 보여 줍니다. 파티션 0은 전체 원시 디스크를 나타내며 드라이브가 분할되었는지 여부에 관계없이 항상 존재합니다.

  6. 클래스 드라이버는 PnP 관리자가 자식 디바이스( BusRelations를 사용하여 IRP_MN_QUERY_DEVICE_RELATIONS)를 쿼리할 때 PDO 목록을 반환하는 버스 드라이버 역할을 할 수도 있습니다. 예를 들어 이동식 디스크와 같은 분할된 미디어 디바이스의 드라이버는 파티션을 나타내는 PDO 목록을 반환할 수 있습니다. 상위 수준 드라이버는 이러한 PDO에 FDO를 연결합니다.

    이 그림에서는 각각 대상 디바이스로 처리할 수 있는 디스크 파티션을 나타내는 세 가지 PDO를 보여줍니다.

    고정 디스크의 경우 파티션 관리자는 파티션 0을 나타내는 FDO에 연결하고 모든 파티션을 대신하여 PnP 작업을 처리합니다. 파티션 관리자의 작업은 디스크 클래스 드라이버 및 모든 상위 수준 필터 드라이버에 투명합니다.

  7. 하나 이상의 필터 드라이버를 클래스 드라이버 위에 연결할 수 있습니다. 하위 수준 필터 드라이버와 달리 상위 수준 필터 드라이버는 클래스 드라이버로 전송된 IRP를 가로채서 다음 하위 디바이스 개체로 전달하기 전에 변경할 수 있습니다. 필터 드라이버는 모든 읽기/쓰기 요청을 가로채서 필요에 따라 데이터를 변환할 수 있으며, 사용자 애플리케이션이 암호 또는 기타 관련 정보를 제공할 수 있도록 추가 I/O 제어 코드(IOCTL)를 정의할 수 있습니다.

    이 그림에서는 디스크 암호화 필터 드라이버에서 만들고 파티션 1용 디스크 PDO에 연결된 필터 DO를 보여 줍니다.