USBD_AssignUrbToIoStackLocation 함수(usbdlib.h)
USBD_AssignUrbToIoStackLocation 루틴은 IRP의 다음 스택 위치와 URB를 연결하기 위해 클라이언트 드라이버에 의해 호출됩니다.
구문
void USBD_AssignUrbToIoStackLocation(
[in] USBD_HANDLE USBDHandle,
[in] PIO_STACK_LOCATION IoStackLocation,
[in] PURB Urb
);
매개 변수
[in] USBDHandle
USBD_CreateHandle 루틴에 대한 이전 호출에서 검색된 USBD 핸들입니다.
[in] IoStackLocation
IRP의 다음 스택 위치(IO_STACK_LOCATION)에 대한 포인터입니다. 클라이언트 드라이버는 IoGetNextIrpStackLocation에 대한 이전 호출에서 스택 위치에 대한 포인터를 받았습니다.
[in] Urb
USBD_UrbAllocate, USBD_IsochUrbAllocate, USBD_SelectConfigUrbAllocateAndBuild또는USBD_SelectInterfaceUrbAllocateAndBuild 할당된 URB 구조체에 대한 포인터입니다.
반환 값
없음
설명
클라이언트 드라이버가 USBD_UrbAllocate, USBD_IsochUrbAllocate,USBD_SelectConfigUrbAllocateAndBuild 또는 USBD_SelectInterfaceUrbAllocateAndBuild 호출하여 URB를 할당한 경우 드라이버는 USBD_AssignUrbToIoStackLocation 호출하여 URB를 IRP와 연결된 IO_STACK_LOCATION 연결해야 합니다. 이러한 루틴에 의해 할당된 URL의 경우 USBD_AssignUrbToIoStackLocation IO_STACK_LOCATIONParameters.Others.Argument1 설정을 URB 로 바 꿉니다. ( IOCTL_INTERNAL_USB_SUBMIT_URB 참조).
클라이언트 드라이버는 스택에서 URB 할당과 같은 다른 메커니즘을 사용하여 할당된 URB에 대한 USBD_AssignUrbToIoStackLocation 호출해서는 안 됩니다. 그렇지 않으면 USB 드라이버 스택이 버그 검사를 생성합니다.
클라이언트 드라이버는 IoCallDriver를 호출하여 요청을 보내기 전에 USBD_AssignUrbToIoStackLocation 호출해야 합니다. USBD_AssignUrbToIoStackLocation IRP의 다음 스택 위치를 URB로 채웁니다. 루틴은 IO_STACK_LOCATIONFileObject 멤버도 업데이트합니다.
코드 예제는 URB를 제출하는 방법을 참조하세요.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 8 WDK가 필요합니다. Windows Vista 이상 버전의 Windows 운영 체제를 대상으로 합니다. |
대상 플랫폼 | 데스크톱 |
머리글 | usbdlib.h |
라이브러리 | Usbdex.lib |
IRQL | <=DISPATCH_LEVEL |
추가 정보
USBD_SelectConfigUrbAllocateAndBuild