
200
UsbIOCTL.h 중 하나를 포함해야 한다.
그림 6.2는 장치 드라이버 API의 최종 버전 소스 코드 파일에 대한 include
관계를 보여준다. 이때, EthApplication.c 코드는 USB 관련 헤더 파일에 의
존하지 않는다. 예를 들어, 새로운 USB-IOCTL이 추가되어도 코드에 표시된
EthApplication.c는 종속 파일이 변경되지 않기 때문에 다시 컴파일할 필요조
차 없다.
이번 장에서 제시된 모든 코드 조각 중에서 가장 마지막 버전이 장치 드라이버
의 가장 유연한 코드 조각이지만 여러분이 원하는 것이 아닐 수도 있음을 명심
해야 한다. 인터페이스가 복잡할수록 유연성은 커진다. 코드를 필요한 만큼 유
연하게 만드는 동시에 최대한 단순하게 유지하려 노력해야 한다.
이번 장에서는 C에 대한 네 가지 API 패턴에 대해 설명하고, 장치 드라이버를
설계하는 방법의 실행 예제를 통해 패턴의 적용 사례를 살펴보았다. 헤더 파일
패턴은 .h 파일에 잘 정의된 인터페이스를 제공하면서 .c 파일에 세부 구현을
숨겨야 한다는 기본 개념을 알려준다. 핸들 패턴은 상태 정보를 공유하기 위해
함수 간에 불투명한 데이터 타입을 전달하는 잘 알려진 개념에 관한 내용이다.
동적 인터페이스 패턴은 콜백 함수를 통해 호출자별로 ...