구리의 창고

URB 본문

Window Driver

URB

구리z 2010. 2. 18. 11:45
typedef struct _URB {
union {
struct _URB_HEADER UrbHeader;
struct _URB_SELECT_INTERFACE UrbSelectInterface;
struct _RUB_SELECT_CONFIGURATION UrbSelectConfiguration;
//....
};
} URB, *PURB;


struct _URB_HEADER {
USHORT Length;
USHORT Function;
USBD_STATUS Status;
//...
};

URB 는 USB Request Block 의 약자로 USB와 통신을 하는데 쓰이는 하나의 구조이다.

URB 와 관련된 처리를 한 후에는 Status 필드를 받아온다.

아래는 URB의 Status 를 설명한다.

비트                이름                                       설명

 00         USBD_SUCCESS                                          전송 성공
 01         USBD_PENDING                                             진행중
 10         USBD_ERROR                                   에러지만, stall 상태는 아님
 11         USBD_ERROR/USBD_HALTED               에러이며 stall 되었음


IOCTL을 하는데 있어서 주로 사용되는 함수는 IoBuildDeviceIoControlRequest() 이다.

USB Internal IOCTL 은 기본적인 IRP stack을 사용하지 않는다. 대신에 IrpStack 내에 Parameters.Others.Argument1 을 사용한다.

'Window Driver' 카테고리의 다른 글

Writing Windows WDM Device Drivers (CHRIS CANT) CD  (0) 2010.02.23
USB 개념  (0) 2010.02.18
USB 관련 헤더파일  (0) 2010.02.18
USB 구조  (0) 2010.02.18
IoCreateDevice()  (0) 2010.02.17
Comments