- SIMPLEAddDevice 함수 -
- 디바이스 드라이버 모듈 하나는 반드시 하나의 Driver_Object만 가질수 있다.
- SIMPLE_AddDevice()는 Device_Object를 physicalDeviceObject가 가르키고 있는 상위 드라이버가 만들어 놓은 물리층인 디바이스 스택에 포함
- Device_Object는 FDO, PDO 또는 FiDO같은 스택층을 묘사하는 구도체
- IoCreateDevice() 는 Device_Object를 만들고 이는 메모리 상에 위치함
- DeviceObject안에 Device_Extension이라는 포인터 변수가 있고 이 Device_Extension이 가리키는 다른 메모리 공간을 Device_Extension이라고 부른다.
- DeviceExtension 의 메모리를 이용하여 개발자는 주변장치를 위한 정보등, 이장치가 어떤장치이며 어떤 입출력 주소를 사용해야 하는지등의 장지 종속적인 정보를 보관했다가 사용
- IoAttachDeviceToDeviceStack() 의 첫번째 인자값은 SIMPLE 드라이버가 앞에 만들었던 Device_Object를 넣고
두번째 인자값은 SIMPLE_AddDevice()함수가 호출 될때 전달된 두번째 파라미터 physicalDeviceObject
- 디바이스 스택 <--- SIMPLE 드라이버가 생성한 Device_Object를 넣는다.
이유는 그래야 온전한 역할을 윈도우에게서 부여 받을 수있다.
- 반환된 값은 DeviceExtension 메모리내의 NextLayerDeviceObject변수에 보관
이유는 나중에 드라이버가 명령을 다룰때 사용되는 중요한 의미가 있다
- DeviceObject내의 플래그 값을 변경하는 이유는 SIMPLE 디바이스 드라이버가 자신의 Device_Object를 디바이스 스택에 포함한 이후에 다른 드라이버들의 Device_Object가 현재 SIMPLE 드라이버의 Device_Object가 포함된 디바이스 스택에 포함되는것을 허용한다는 의미
'Soft Ware > Windows Driver' 카테고리의 다른 글
익큐티브 스핀 록에 대해서 ~~~ (0) | 2012.02.17 |
---|---|
스핀록에 대해서 ~~ (0) | 2012.02.17 |
디바이스 정리 (0) | 2011.11.21 |
윈도우 디바이스 드라이버 & Simple (0) | 2011.11.16 |
윈도우 디바이스 드라이버 & Simple (0) | 2011.11.16 |