| 일 | 월 | 화 | 수 | 목 | 금 | 토 | 
|---|---|---|---|---|---|---|
| 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 | 
                                        Tags
                                        
                                    
                                        
                                    - ssh command
 - 우분투
 - 도커
 - Openswan
 - 방화벽체크
 - ubuntu
 - AWS
 - 리눅스
 - 루비
 - VMware
 - docker registry
 - window size
 - VPN
 - 패키지
 - golang
 - VIM
 - Linux
 - docker
 - QT
 - DevOps
 - opsworks
 - docker container
 - sudo
 - docker-compose
 - port
 - driver
 - ssh
 - Chef
 - RUBY
 - 드라이버
 
- Today
 
- Total
 
구리의 창고
USB 디바이스 설정 본문
1. 디바이스 디스크립터를 얻어와서 DEVICE_EXTENSION 에 저장한다.
            
                            
        
2. Configuration 디스크립터를 얻어온다
3. Configuration 디스크립터에서 인터페이스 리스트를 가져와, 인터페이스 리스트를 구한다.
4. 인터페이스를 차례데로 검색하면서 값을 정한다.
5. 재설정한 디스크립터를 적용하도록 요청한다.
6. DEVICE_EXTENSION에 값을 저장한다.
주요 함수는 아래와 같다
UsbBuildGetDescriptorRequest : 디스크립터를 얻는 패킷 생성
UsbBuildGetInterruptOrBulkTransferrequest : 데이터 전송 패킷 생성
UsbBuildGetSelectConfigurationRequest : 컨피규레이션 패킷 생성
UsbBuildSelectInterfaceRequest : 인터페이스 선택 패킷 생성
UsbBuildVenderRequest : OEM 작업 패킷 생성
UsbBuildGetInterruptOrBulkTransferrequest : 데이터 전송 패킷 생성
UsbBuildGetSelectConfigurationRequest : 컨피규레이션 패킷 생성
UsbBuildSelectInterfaceRequest : 인터페이스 선택 패킷 생성
UsbBuildVenderRequest : OEM 작업 패킷 생성
그리고 보통 USB 드라이버를 관리하는 부분은 아래와 같이 큰 그림이 그려진다
   StartDevice()
          ↓
ConfigureDevice()
          ↓
 SelectInterface()
StartDevice() 안에서 ConfigureDevice() 로 얻어낸 configuration 을 통해 SelectInterface() 를 호출한다.
자세한 구현은 생략하도록한다.
'Window Driver' 카테고리의 다른 글
| USB 구조 (0) | 2010.02.18 | 
|---|---|
| IoCreateDevice() (0) | 2010.02.17 | 
| Windbg 와 WMWare 환경설정하기 (0) | 2010.02.17 | 
| USB Driver , *.inf 파일 작성 중 ClassGUID (0) | 2010.02.16 | 
| 디바이스 드라이버 이벤트발생순서 (0) | 2010.02.16 | 
                          Comments