일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- golang
- 드라이버
- 방화벽체크
- VMware
- Openswan
- opsworks
- sudo
- 루비
- DevOps
- RUBY
- docker container
- Linux
- docker
- ubuntu
- driver
- window size
- 패키지
- VPN
- ssh
- ssh command
- 리눅스
- QT
- docker-compose
- AWS
- docker registry
- 우분투
- Chef
- VIM
- port
- 도커
- Today
- Total
구리의 창고
IoCreateDevice() 본문
AddDevice 가 호출되면 PDO를 이용해 FDO를 생성한다.
IoCreateDevice()의 원형이다.
NTSTATUS
IoCreateDevice(
IN PDRIVER_OBJECT DriverObject,
IN ULONG DeviceExtensionSize,
IN PUNICODE_STRING DeviceName OPTIONAL,
IN DEVICE_TYPE DeviceType,
IN ULONG DeviceCharacteristics,
IN BOOLEAN Exclusive,
OUT PDEVICE_OBJECT *DeviceObject
);
인자들을 설명해보면.
1. DriverObject : AddDevice 인자로 받은 DriverObject를 그대로 넣어준다.
2. DeviceExtensionSize : DEVICE_EXTENSION의 크기를 넣어준다. sizeof(DEVICE_EXTENSION)
3. DeviceName : Device 이름이며 유니코드 형식을 지원한다. NULL 이면 이름을 제공하지 않겠다는 것이다.
4. DeviceType : 보통 드라이버를 공부하거나 개발 할 때 FILE_DEVICE_UNKNOWN 으로 놓는다.
5. DeviceCharacteristics : 디바이스 속성을 결정한다. 해당사항이 없으면 0으로 설정한다.
6. Exclusive : FALSE (OEM 입출력인 경우에는 TRUE로 명시한다.)
7. *DeivceObject : 이 함수를 호출하기전에 선언한 fdo address를 넘겨준다.
*이름 생성과 관련된 예제
=> 3번과 5번 파라메터로 fdo의 이름을 생성 할 수 있는데 아래와 같이 3가지 경우로 나누어진다.
IoCreateDevice(pdo, sizeof(DEVICE_EXTENSION), NULL, FILE_DEVICE_UNKNOWN, 0, FALSE, fdo)
=> fdo는 이름을 가지지 않는다.
IoCreateDevice(pdo, sizeof(DEVICE_EXTENSION), &name, FILE_DEVICE_UNKNOWN, 0, FALSE, fdo)
=> fdo는 이름을 가지며 개발자가 알 수 있다.
IoCreateDevice(pdo, sizeof(DEVICE_EXTENSION), NULL, FILE_DEVICE_UNKNOWN, FILE_AUTOGENERATED_DEVICE_NAME, FALSE, fdo)
=> fdo는 이름을 가지며 개발자가 알 수 없다.
참고 : IT EXPERT 윈도우 디바이스 드라이버 (한빛미디어)
'Window Driver' 카테고리의 다른 글
USB 관련 헤더파일 (0) | 2010.02.18 |
---|---|
USB 구조 (0) | 2010.02.18 |
USB 디바이스 설정 (0) | 2010.02.17 |
Windbg 와 WMWare 환경설정하기 (0) | 2010.02.17 |
USB Driver , *.inf 파일 작성 중 ClassGUID (0) | 2010.02.16 |
Comments