SPB 컨트롤러 드라이버 개요

SPB 컨트롤러는 간단한 SPB( 주변 버스 )를 제어하고 SPB에 연결된 주변 디바이스와 데이터를 전송하는 디바이스입니다. SPB 컨트롤러용 하드웨어 공급업체는 컨트롤러의 하드웨어 기능을 관리하는 SPB 컨트롤러 드라이버를 제공합니다.

Windows 8 SPB 프레임워크 확장(SpbCx)을 사용하면 간단한 SPB(주변 버스)를 위한 컨트롤러 드라이버 개발이 간소화됩니다. SpbCx는 KMDF( 커널 모드 드라이버 프레임워크 )에 대한 시스템 제공 확장입니다. SPB 컨트롤러 디바이스용 하드웨어 공급업체는 모든 하드웨어 관련 드라이버 작업을 수행하기 위해 컨트롤러 드라이버를 제공합니다. 이 드라이버는 SpbCx와 통신하여 SPB 컨트롤러와 관련된 작업을 수행하고 KMDF와 직접 통신하여 일반 드라이버 작업을 수행합니다.

예를 들어 SPB 컨트롤러 드라이버는 일반적으로 KMDF에서 WdfDeviceInitSetPnpPowerEventCallbacks 메서드를 호출하여 전원 이벤트 콜백을 수신하도록 등록하고 , WdfInterruptCreate 메서드를 호출하여 드라이버의 ISR(인터럽트 서비스 루틴)을 SPB 컨트롤러의 인터럽트에 연결합니다. SPB 관련 작업을 수행하기 위해 SPB 컨트롤러는 SpbCx DDI(디바이스 드라이버 인터페이스)를 통해 SpbCx 와 통신합니다.

SpbCx는 SBP 컨트롤러 드라이버와 협력하여 SPB에 연결된 주변 디바이스에 대한 I/O 요청을 처리합니다. SpbCx는 SPB 컨트롤러 드라이버에 공통적인 처리 작업을 수행합니다. 이러한 작업에는 SPB 컨트롤러에 대한 I/O 요청 큐 관리가 포함됩니다. 이러한 큐에는 버스에 연결된 주변 장치를 관리하는 드라이버의 I/O 요청이 포함됩니다. SPB 컨트롤러 드라이버는 이러한 요청을 처리하는 데 필요한 모든 하드웨어 관련 작업을 수행합니다.

다음 다이어그램에서는 SPB 컨트롤러 드라이버 및 SpbCx를 보여 줍니다.

spb 구성 요소의 블록 다이어그램

SPB 컨트롤러 드라이버와 SpbCx는 모두 커널 모드에서 실행되며 SpbCx DDI를 통해 서로 통신합니다. SPB 컨트롤러 드라이버는 SpbCx에서 구현되는 드라이버 지원 메서드를 호출합니다. SpbCx는 SPB 컨트롤러 드라이버에 의해 구현되는 이벤트 콜백 함수를 호출합니다.

SPB 컨트롤러에 I/O 요청을 보내는 드라이버는 KMDF( 커널 모드 드라이버 프레임워크)를 사용하는 커널 모드 드라이버 또는 UMDF( 사용자 모드 드라이버 프레임워크 )를 사용하는 사용자 모드 드라이버입니다. 이러한 드라이버는 읽기 및 쓰기 요청을 보내 SPB에 연결된 주변 장치와 데이터를 전송할 수 있습니다. 또한 드라이버는 I/O 컨트롤(IOCTL) 요청을 보내 SPB 관련 작업을 수행할 수 있습니다.

SPB 컨트롤러 드라이버는 SPB 컨트롤러 디바이스의 하드웨어 레지스터에 직접 액세스하여 SPB에 연결된 주변 디바이스와 데이터 전송을 시작합니다. I2C와 같은 SPB의 경우 이러한 데이터 전송은 비교적 느린 속도로 발생합니다. SPB 컨트롤러의 하드웨어 레지스터는 메모리 매핑될 가능성이 높지만 주변 디바이스의 레지스터는 SPB를 통해 직렬로 액세스해야 합니다.

SPB 연결 주변 장치 간 데이터를 전송하는 I/O 요청에 대한 응답으로 SPB 컨트롤러 드라이버는 버스 전송을 시작하고, I/O 요청을 보류 중으로 표시하고, 전송이 완료되는 것을 기다리지 않고 반환합니다. 나중에 SPB 컨트롤러 하드웨어가 전송을 완료하면 컨트롤러가 인터럽트 신호를 보냅니다. SPB 컨트롤러 드라이버의 ISR은 보류 중인 I/O 요청을 완료하거나 요청된 I/O 작업에서 다음 전송을 시작합니다.

드라이버만 SPB 컨트롤러에 직접 I/O 요청을 보낼 수 있습니다. 사용자 모드 애플리케이션이 SPB에 연결된 주변 장치 간 데이터를 전송하는 경우 애플리케이션은 SPB 주변 장치 드라이버에 의존하여 해당 읽기 또는 쓰기 요청을 SPB 컨트롤러에 보내야 합니다.