Windows 7의 IEEE 1394 버스 드라이버

Windows 7에는 IEEE-1394b 사양에 정의된 대로 더 빠른 속도 및 대체 미디어를 지원하는 새로운 IEEE 1394 버스 드라이버인 1394ohci.sys 포함되어 있습니다. 1394ohci.sys 버스 드라이버는 KMDF(커널 모드 드라이버 프레임워크)를 사용하여 구현되는 단일(모놀리식) 디바이스 드라이버입니다. 레거시 1394 버스 드라이버(이전 버전의 Windows에서 사용 가능)에는 포트/미니포트 구성에서 WDM(Windows 드라이버 모델)을 사용하여 구현된 여러 디바이스 드라이버가 포함되어 있습니다. 1394ohci.sys 버스 드라이버는 레거시 포트 드라이버, 1394bus.sys 및 기본 미니포트 드라이버인 ochi1394.sys 대체합니다.

새로운 1394ohci.sys 버스 드라이버는 레거시 버스 드라이버와 완전히 이전 버전과 호환됩니다. 이 항목에서는 새 버스 드라이버와 레거시 1394 버스 드라이버 간의 동작에서 알려진 차이점 중 일부에 대해 설명합니다.

참고

1394ohci.sys 드라이버는 Windows에 포함된 시스템 드라이버입니다. 1394 컨트롤러를 설치하면 자동으로 로드됩니다. 별도로 다운로드할 수 있는 재배포 가능 드라이버는 아닙니다.

I/O 요청 완료

새 1394 버스 드라이버로 전송되는 모든 I/O 요청은 1394ohci.sys 버스 드라이버가 WDM 대신 KMDF를 사용하여 구현되기 때문에 STATUS_PENDING 반환됩니다. 이 동작은 특정 I/O 요청이 즉시 완료되는 레거시 1394 버스 드라이버와 다릅니다.

클라이언트 드라이버는 새 1394 버스 드라이버로 전송된 I/O 요청이 완료될 때까지 기다려야 합니다. 요청이 완료된 후 호출되는 I/O 완료 루틴을 제공할 수 있습니다. 완료된 I/O 요청의 상태 IRP에 있습니다.

구성 ROM 검색

새로운 1394 버스 드라이버는 더 빠른 버스 속도로 비동기 블록 트랜잭션을 사용하여 노드의 구성 ROM의 콘텐츠를 검색하려고 합니다. 레거시 1394 버스 드라이버는 S100 속도 또는 초당 100메가비트(Mbps)의 비동기 쿼드렛 읽기를 사용합니다. 또한 1394ohci.sys 버스 드라이버는 노드 구성 ROM 헤더의 생성max_rom 항목에 지정된 값을 사용하여 구성 ROM의 나머지 콘텐츠 검색을 개선합니다. 새 1394 버스 드라이버가 노드의 구성 ROM 콘텐츠를 검색하는 방법에 대한 자세한 내용은 IEEE 1394 노드 구성 ROM의 콘텐츠 검색을 참조하세요.

IEEE-1394-1995 PHY 지원

1394ohci.sys 버스 드라이버에는 IEEE-1394a 또는 IEEE-1394b를 지원하는 물리적 계층(PHY)이 필요합니다. IEEE-1394-1995를 지원하는 PHY는 지원하지 않습니다. 이 요구 사항은 1394ohci.sys 버스 운전자가 짧은(중재) 버스 재설정을 단독으로 사용하기 때문입니다.

NODE_DEVICE_EXTENSION 구조 사용

클라이언트 드라이버는 클라이언트 드라이버가 제어하는 디바이스에 대해 PDO(물리적 디바이스 개체)와 연결된 1394 버스 드라이버에서 디바이스 확장을 참조할 수 있습니다. 이 디바이스 확장은 NODE_DEVICE_EXTENSION 구조로 설명됩니다. 1394ohci.sys 이 구조체는 레거시 1394 버스 드라이버와 동일한 위치에 유지되지만 구조체의 비정적 멤버는 유효하지 않을 수 있습니다. 클라이언트 드라이버가 새 1394 버스 드라이버를 사용하는 경우 NODE_DEVICE_EXTENSION 액세스한 데이터가 유효한지 확인해야 합니다. 유효한 데이터를 포함하는 NODE_DEVICE_EXTENSION 정적 멤버는 Tag, DeviceObjectPortDeviceObject입니다. NODE_DEVICE_EXTENSION 다른 모든 멤버는 클라이언트 드라이버가 참조해서는 안 되는 비정적 멤버입니다.

갭 개수 최적화

1394ohci.sys 버스 드라이버의 기본 동작은 로컬 노드를 제외하고 1394 버스에서 IEEE 1394a 디바이스만 찾은 경우 간격 수를 최적화하는 것입니다. 예를 들어 1394ohci.sys 실행 중인 시스템에 IEEE 1394b를 준수하는 호스트 컨트롤러가 있지만 버스의 모든 디바이스가 IEEE 1394a를 준수하는 경우 새 1394 버스 드라이버가 간격 수를 최적화하려고 시도합니다.

간격 개수 최적화는 1394ohci.sys 버스 드라이버가 로컬 노드가 버스 관리자임을 확인하는 경우에만 발생합니다.

1394ohci.sys 버스 드라이버는 노드의 자체 ID 패킷의 속도 설정에 따라 디바이스가 IEEE-1394a를 준수하는지 여부를 결정합니다. 노드가 자체 ID 패킷의 속도(sp) 필드에 있는 두 비트를 모두 설정하는 경우 1394ohci.sys 노드가 IEEE-1394b를 준수하는 것으로 간주합니다. 속도 필드에 다른 값이 포함된 경우 1394ohci.sys 노드가 IEEE-1394a를 준수하는 것으로 간주합니다. 사용되는 간격 수 값은 IEEE-1394a 사양의 테이블 E-1을 기반으로 하며 홉의 함수로 간격 수를 제공합니다. 1394ohci.sys 버스 드라이버는 간격 수를 계산하지 않습니다. 레지스트리 값을 사용하여 기본 간격 개수 동작을 변경할 수 있습니다. 자세한 내용은 IEEE 1394 버스 드라이버의 기본 동작 수정을 참조하세요.

DDI(디바이스 드라이버 인터페이스) 변경 내용

Windows 7에서는 1394b 사양에 정의된 빠른 속도를 지원하도록 1394 DDI가 변경되었으며 1394 클라이언트 드라이버의 개발을 간소화하도록 개선되었습니다. 새 1394 버스 드라이버에서 지원하는 일반 DDI 변경 내용에 대한 자세한 내용은 Windows 7의 DDI(디바이스 드라이버 인터페이스) 변경 내용을 참조하세요.

IEEE 1394 드라이버 스택
IEEE 1394 노드 구성 ROM의 콘텐츠 검색