다음을 통해 공유


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

추가 정보

URB를 제출하는 방법

USBD_IsochUrbAllocate

USBD_SelectConfigUrbAllocateAndBuild

USBD_SelectInterfaceUrbAllocateAndBuild

USBD_UrbAllocate