성능과 소스의 가독성, 무결성을 위해서라면 win ce.net 4.2 의 oemioctl.c 는 다음과 같이 쓰는 것도 좋다.
기존 소스는 다음과 같이 되어 있다.
스윗치 (무슨 IOCTL이니?) -> 케이스 (처리하자)
소스를 바꾸자면 다음과 같이 바꿀 수 있다. 먼저 준비가 필요하다.
#define IOCTL_어쩌구0 0
#define IOCTL_어쩌구1 1
.
.
.
IOCTL 초기화 함수 {
펑션포인터의 배열[IOCTL_어쩌구1] = 실체 처리 함수 이름1;
펑션포인터의 배열[IOCTL_어쩌구2] = 실체 처리 함수 이름2;
.
.
} // 사실 이 함수는 각 디바이스 드라이버, 처리 모듈 단위에서 프레임웍 정의를 해 놓고 정의에 따라 들어가야 되는 놈이다.
실제 처리문에서는 다음과 같이 바뀐다. 스윗치 케이스가 사라지고.
펑션포인터의 배열 [IOCTL_어쩌구1](void *전달할 데이터위치);
물론 크리티컬 섹션처리, 예외처리등 신경쓸 것은 도처에 널려 있으나. 이렇게도 바꾸어 볼 수 있다는 이야기다. 릴레이션, 케이스, 배열, 포인터 에서 말한 것 처럼 일체의 조건문이 사라지고 배열 그 자체로 처리가 끝난다.