Post

드라이버의 상위 에지(Upper edge)와 하위 에지(Lower edge)

드라이버의 상위 에지(Upper edge)와 하위 에지(Lower edge)

Upper and lower edges of drivers(원본 Microsoft Learn 링크)

아래는 위 문서의 번역이다.


이 문서에서는 드라이버 스택 내 드라이버에 적용되는 상위 에지(upper edge)하위 에지(lower edge) 라는 용어에 대해 설명한다.

Note

이 항목을 읽기 전에 디바이스 노드와 디바이스 스택(Device nodes and device stacks)드라이버 스택(Driver stacks)에서 제시된 개념을 이해해야 한다.

드라이버 스택

I/O 요청에 참여하는 드라이버들의 시퀀스를 해당 요청의 드라이버 스택(driver stack) 이라고 한다. I/O 요청은 드라이버 스택의 최상위 드라이버에 의해 먼저 처리되고, 그 다음 하위 드라이버에 의해 처리되며, 요청이 완전히 처리될 때까지 이러한 과정이 반복된다.

드라이버가 상위 드라이버에서 호출할 수 있는 함수 집합을 구현할 때, 이 함수 집합을 해당 드라이버의 상위 에지(upper edge) 또는 상위 에지 인터페이스(upper-edge interface) 라고 한다.

드라이버가 하위 드라이버에서 호출할 수 있는 함수 집합을 구현할 때, 이 함수 집합을 해당 드라이버의 하위 에지(lower edge) 또는 하위 에지 인터페이스(lower-edge interface) 라고 한다.

드라이버는 스택 내 하위 드라이버의 상위 에지를 호출할 수 있다. 또한 드라이버는 스택 내 상위 드라이버의 하위 에지를 호출할 수도 있다.

상위 에지와 하위 에지의 오디오 예시

오디오 미니포트 드라이버(audio miniport driver)가 드라이버 스택 내에서 오디오 포트 드라이버(audio port driver) 아래에 위치한다고 생각할 수 있다. 포트 드라이버는 미니포트 드라이버의 상위 에지를 호출한다. 미니포트 드라이버는 포트 드라이버의 하위 에지를 호출한다.

오디오 포트 드라이버가 미니포트 드라이버 위에 있는 다이어그램.

위 다이어그램은 드라이버 스택에서 포트 드라이버를 미니포트 드라이버 위에 위치시켜 생각하는 것이 때때로 유용함을 보여준다. I/O 요청이 포트 드라이버에 의해 먼저 처리된 후 미니포트 드라이버에 의해 처리되기 때문에, 포트 드라이버가 미니포트 드라이버 위에 있다고 생각하는 것이 합리적이다. 그러나 (미니포트, 포트) 드라이버 쌍은 일반적으로 디바이스 스택 내 단일 레벨에 위치한다는 점에 유의해야 한다. 아래 그림과 같다.

(미니포트/포트) 쌍을 포함한 디바이스 스택 다이어그램.

Note

디바이스 스택(device stack)드라이버 스택(driver stack) 과 동일한 개념이 아니다. 이 용어들의 정의와 드라이버 쌍이 어떻게 디바이스 스택의 한 레벨을 차지하는 단일 WDM 드라이버를 형성할 수 있는지에 대한 설명은 미니드라이버와 드라이버 쌍(Minidrivers and driver pairs)을 참조한다.

동일한 디바이스 노드와 디바이스 스택을 다이어그램으로 나타내는 또 다른 방법은 다음과 같다.

포트 드라이버가 미니포트 위에 위치한 디바이스 스택 다이어그램.

위 다이어그램에서, (미니포트, 포트) 쌍이 디바이스 스택 내 단일 디바이스 객체(FDO)와 연관된 단일 WDM 드라이버를 형성함을 확인할 수 있다. 즉, (미니포트, 포트) 쌍은 디바이스 스택의 한 레벨만을 차지한다. 그러나 미니포트와 포트 드라이버 사이에 수직적 관계도 보인다. 포트 드라이버가 I/O 요청을 먼저 처리한 후 추가 처리를 위해 미니포트 드라이버를 호출함을 나타내기 위해, 포트 드라이버가 미니포트 드라이버 위에 표시된다.

핵심 요점은 포트 드라이버가 미니포트 드라이버의 상위 에지 인터페이스를 호출할 때, 이는 디바이스 스택 아래로 I/O 요청을 전달하는 것과 동일하지 않다는 점이다. 드라이버 스택(디바이스 스택이 아닌)에서는 포트 드라이버를 미니포트 드라이버 위에 그릴 수 있지만, 이것이 디바이스 스택에서 포트 드라이버가 미니포트 드라이버 위에 있다는 것을 의미하지는 않는다.

상위 에지와 하위 에지의 NDIS 예시

때로는 드라이버가 하위 드라이버의 상위 에지를 간접적으로 호출하는 경우도 있다. 예를 들어, TCP/IP 프로토콜 드라이버(TCP/IP protocol driver)가 드라이버 스택 내에서 NDIS 미니포트 드라이버 위에 위치한다고 가정해 보자. 미니포트 드라이버는 미니포트 드라이버의 상위 에지를 형성하는 MiniportXxx 함수 집합을 구현한다. TCP/IP 프로토콜 드라이버가 NDIS 미니포트 드라이버의 상위 에지에 바인딩(bind) 한다고 표현한다. 그러나 TCP/IP 드라이버는 MiniportXxx 함수를 직접 호출하지 않는다. 대신, NDIS 라이브러리 내의 함수를 호출하고, 이 함수가 MiniportXxx 함수를 호출한다.

tcp/ip와 ndis 미니포트 스택 다이어그램.

위 다이어그램은 드라이버 스택을 나타낸다. 동일한 드라이버에 대한 또 다른 관점은 다음과 같다.

네트워크 카드의 디바이스 스택 다이어그램.

위 다이어그램은 네트워크 인터페이스 카드(NIC)의 디바이스 노드를 보여준다. 디바이스 노드는 플러그 앤 플레이(PnP) 디바이스 트리 내에 위치를 가진다. NIC의 디바이스 노드는 세 개의 디바이스 객체를 포함하는 디바이스 스택을 가진다. NDIS 미니포트 드라이버와 NDIS 라이브러리가 쌍으로 동작한다는 점에 유의해야 한다. (MyMiniport.sys, Ndis.sys) 쌍은 기능 디바이스 객체(FDO)로 표현되는 단일 WDM 드라이버를 형성한다.

또한 프로토콜 드라이버 Tcpip.sys는 NIC의 디바이스 스택의 일부가 아니라는 점에 유의해야 한다. 사실, Tcpip.sys는 PnP 디바이스 트리의 일부도 아니다.

요약

상위 에지(upper edge)하위 에지(lower edge) 라는 용어는 스택 내 드라이버들이 서로 통신하는 데 사용하는 인터페이스를 설명하는 데 사용된다. 드라이버 스택(driver stack)디바이스 스택(device stack)과 동일한 개념이 아니다. 드라이버 스택에서 수직으로 표시된 두 드라이버는 디바이스 스택의 단일 레벨에 위치하는 드라이버 쌍을 형성할 수 있다. 일부 드라이버는 PnP 디바이스 트리의 일부가 아니다.

관련 항목

This post is licensed under CC BY 4.0 by the author.