Partager via


USBD_AssignUrbToIoStackLocation, fonction (usbdlib.h)

La routine USBD_AssignUrbToIoStackLocation est appelée par un pilote client pour associer un URB à l’emplacement de pile suivant de l’IRP.

Syntaxe

void USBD_AssignUrbToIoStackLocation(
  [in] USBD_HANDLE        USBDHandle,
  [in] PIO_STACK_LOCATION IoStackLocation,
  [in] PURB               Urb
);

Paramètres

[in] USBDHandle

Un handle USBD récupéré lors d’un appel précédent à la routine USBD_CreateHandle .

[in] IoStackLocation

Pointeur vers l’emplacement de pile suivant de l’IRP (IO_STACK_LOCATION). Le pilote client a reçu un pointeur vers l’emplacement de la pile lors d’un appel précédent à IoGetNextIrpStackLocation.

[in] Urb

Pointeur vers la structure URB allouée par USBD_UrbAllocate, USBD_IsochUrbAllocate, USBD_SelectConfigUrbAllocateAndBuild ou USBD_SelectInterfaceUrbAllocateAndBuild.

Valeur de retour

None

Remarques

Si le pilote client a alloué un URB en appelant USBD_UrbAllocate, USBD_IsochUrbAllocate, USBD_SelectConfigUrbAllocateAndBuild ou USBD_SelectInterfaceUrbAllocateAndBuild, le pilote doit appeler USBD_AssignUrbToIoStackLocation pour associer l’URB à IO_STACK_LOCATION associée à l’IRP. Pour les URB alloués par ces routines, USBD_AssignUrbToIoStackLocation remplace la définition de Parameters.Others.Argument1 de IO_STACK_LOCATION à l’URB. (voir IOCTL_INTERNAL_USB_SUBMIT_URB).

Le pilote client ne doit pas appeler USBD_AssignUrbToIoStackLocation pour un URB alloué à l’aide d’autres mécanismes, tels que l’allocation de l’URB sur la pile. Sinon, la pile de pilotes USB génère une vérification d’erreur.

Le pilote client doit appeler USBD_AssignUrbToIoStackLocation avant d’appeler IoCallDriver pour envoyer la demande. USBD_AssignUrbToIoStackLocation renseigne l’emplacement de pile suivant de l’IRP avec l’URB. La routine met également à jour le membre FileObject de IO_STACK_LOCATION.

Pour obtenir un exemple de code, consultez Guide pratique pour soumettre un URB.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Nécessite WDK pour Windows 8. Cible Windows Vista et les versions ultérieures du système d’exploitation Windows.
Plateforme cible Desktop (Expérience utilisateur)
En-tête usbdlib.h
Bibliothèque Usbdex.lib
IRQL <=DISPATCH_LEVEL

Voir aussi

Guide pratique pour envoyer un URB

USBD_IsochUrbAllocate

USBD_SelectConfigUrbAllocateAndBuild

USBD_SelectInterfaceUrbAllocateAndBuild

USBD_UrbAllocate