Partager via


KsForwardAndCatchIrp, fonction (ks.h)

La fonction KsForwardAndCatchIrp transfère un IRP au pilote spécifié après avoir initialisé l’emplacement de la pile suivante et récupère le contrôle de l’IRP à l’achèvement de ce pilote. La fonction est utilisée avec les appareils qui peuvent être empilés et n’utilisent pas d’objets de fichier pour communiquer.

Si un objet de fichier est utilisé, l’appelant doit initialiser l’emplacement actuel de la pile avec cet objet de fichier avant d’appeler la fonction KsForwardAndCatchIrp. La fonction vérifie qu’il existe un nouvel emplacement de pile à copier avant de tenter de le faire. S’il n’existe pas de nouvel emplacement de pile, la fonction retourne STATUS_INVALID_DEVICE_REQUEST. Indépendamment de la présence d’un nouvel emplacement de pile, l’IRP n’est pas terminé.

Syntaxe

KSDDKAPI NTSTATUS KsForwardAndCatchIrp(
  [in] PDEVICE_OBJECT DeviceObject,
  [in] PIRP           Irp,
  [in] PFILE_OBJECT   FileObject,
  [in] KSSTACK_USE    StackUse
);

Paramètres

[in] DeviceObject

Spécifie l’appareil vers lequel transférer l’IRP.

[in] Irp

Spécifie l’IRP en cours de transfert vers le pilote spécifié.

[in] FileObject

Spécifie une valeur d’objet de fichier à copier à l’emplacement de la pile suivante. Cela peut être NULL afin de définir aucun objet de fichier, mais la valeur est toujours copiée à l’emplacement de la pile suivante. Si l’objet de fichier actuel doit être conservé, il doit être transmis dans ce paramètre.

[in] StackUse

Spécifie une valeur énumérée par KSSTACK_USE. Si la valeur est KsStackCopyToNewLocation, les paramètres sont copiés à l’emplacement de la pile suivante. Si la valeur est KsStackReuseCurrentLocation, l’emplacement actuel de la pile est réutilisé lorsque l’IRP est transféré et que l’emplacement de la pile est retourné à l’emplacement actuel. Si la valeur est KsStackUseNewLocation, le nouvel emplacement de pile est utilisé tel qu’il est.

Valeur de retour

La fonction KsForwardAndCatchIrp retourne le résultat du ioCallDriver, ou renvoie un état non valide si aucune profondeur de pile supplémentaire n’est disponible.

Remarques

Le type KSSTACK_USE énumération spécifie la façon dont la pile IRP est utilisée lors du transfert de l’IRP au pilote suivant.

Énumération Description
KsStackCopyToNewLocation Indique que les paramètres doivent être copiés à l’emplacement de la pile suivante.
KsStackReuseCurrentLocation Indique que l’emplacement actuel de la pile doit être réutilisé.
KsStackUseNewLocation Indique que l’emplacement de la pile suivante doit être utilisé sans modification.

Exigences

Exigence Valeur
plateforme cible Universel
d’en-tête ks.h (include Ks.h)
bibliothèque Ks.lib