어댑터 개체 소개

직접 I/O 및 DMA를 사용하는 모든 드라이버는 어댑터 개체를 만들어야 합니다. 어댑터 개체는 DMA 컨트롤러 채널 또는 포트 또는 버스 master 디바이스를 나타냅니다.

두 종류의 최저 수준 드라이버는 어댑터 개체를 사용해야 합니다.

  • 시스템 DMA 컨트롤러를 사용하는 디바이스용 드라이버입니다. 이러한 디바이스를 하위 디바이스 라고 하며 "시스템(또는 하위) DMA를 사용"이라고 합니다.

  • 버스 master 어댑터인 디바이스용 드라이버입니다. 이러한 디바이스는 I/O 버스를 사용하기 위해 시스템과 중재되므로 버스 master DMA를 사용합니다.

드라이버는 일반적으로 디바이스 확장에서 어댑터 개체에 대한 포인터에 대한 스토리지를 제공합니다.

DMA 전송을 수행하기 위해 이러한 DMA 메서드 중 하나를 사용하는 디바이스의 드라이버에는 일반적으로 AdapterControl 루틴이 있으며 어댑터 개체를 조작하는 시스템 제공 지원 루틴을 호출합니다. (AdapterControl 루틴이 필요하지 않은 드라이버에는 분산/수집 DMA를 사용하는 드라이버와 공통 버퍼, 버스 master DMA를 사용하는 드라이버가 포함됩니다.)

디바이스 시작 작업의 일부로 DMA 작업을 처리하는 드라이버는 I/O 관리자를 호출하며, 이 관리자는 플랫폼별 HAL을 호출하여 어댑터 개체 집합을 만듭니다. 모든 Windows 플랫폼에서 어댑터 개체 집합에는 일반적으로 다음에 대한 어댑터 개체가 포함됩니다.

  • 각 시스템 DMA 컨트롤러 채널 또는 하위 디바이스가 연결된 포트입니다.

  • 컴퓨터의 각 버스 master DMA 디바이스.

(버스 master DMA가 가능한 SCSI 디바이스의 경우 SCSI 포트 드라이버는 HBA별 SCSI 미니포트 드라이버에 대한 어댑터 개체를 설정합니다. 미니포트 드라이버의 HwScsiFindAdapter 루틴은 포트 드라이버에 어댑터 관련 데이터를 제공합니다.)

드라이버가 어댑터 개체 및 AdapterControl 루틴을 사용하는 시기와 방법에 대한 자세한 내용은 이 섹션과 Bus-Master DMA 사용을 참조하세요.

장치 드라이버에 DMA 다시 매핑 사용