일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 방화벽체크
- Linux
- 루비
- VMware
- sudo
- ssh command
- 드라이버
- docker registry
- golang
- docker
- docker-compose
- QT
- 패키지
- RUBY
- DevOps
- VIM
- 도커
- opsworks
- 우분투
- ubuntu
- VPN
- port
- driver
- Chef
- 리눅스
- docker container
- Openswan
- AWS
- ssh
- window size
- Today
- Total
구리의 창고
USB드라이버가 URB를 IRP에 담아서 사용하는 방법 본문
IRP를 사용하는 방법은 다른 WDM 드라이버와 다르지 않다.
대신, USBDI에서는 URB가 필요하므로
클라이언트 드라이버는 URB를 만들어서, IRP 내의 NextStackLocation으로 보관한 뒤
IRP를 버스 드라이버로 보내게 된다. 이런 과정을 통해서 USB Transfer가 완성된다.
IRP 내의 StackLocation에 URB를 기록하는 방법은 다음과 같은 규칙이 있다.
pNextStack->MajorFunction = IRP_MJ_INTERNAL_DEVICE_CONTROL;
pNextStack->Parameters.DeviceIoControl.IoControlCode = IOCTL_INTERNAL_USB_SUBMIT_URB;
pNextStack->Parameters.Others.Argument1 = &Urb;
이 방법은 비동기식으로 USB 버스 드라이버가 STATUS_PENDING 값을 반환하므로 이에 대한 코드를 준비해야한다.
출처 : IT EXPERT 윈도우 디바이스 드라이버
'Window Driver' 카테고리의 다른 글
RtlQueryRegistryValues, RtlWriteRegistryValue, RtlDeleteRegistryValue (0) | 2010.03.03 |
---|---|
USB 드라이버 인터럽트 통신에서 데이터 받아오기 (2) | 2010.02.27 |
CLASS GUID (0) | 2010.02.24 |
Writing Windows WDM Device Drivers (CHRIS CANT) CD (0) | 2010.02.23 |
USB 개념 (0) | 2010.02.18 |
Comments