Partager via


KsForwardAndCatchIrp, fonction (ks.h)

La fonction KsForwardAndCatchIrp transfère un IRP au pilote spécifié après l’initialisation de l’emplacement de pile suivant, puis reprend 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 qui n’utilisent pas d’objets fichier pour communiquer.

Si un objet file est utilisé, l’appelant doit initialiser l’emplacement de pile actuel avec cet objet fichier avant d’appeler la fonction KsForwardAndCatchIrp . La fonction vérifie qu’il existe un nouvel emplacement de pile dans lequel effectuer la copie avant de tenter de le faire. S’il n’y a pas de nouvel emplacement de pile, la fonction retourne STATUS_INVALID_DEVICE_REQUEST. Qu’un nouvel emplacement de pile soit présent ou non, 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 qui est transféré au pilote spécifié.

[in] FileObject

Spécifie une valeur d’objet fichier à copier vers l’emplacement de pile suivant. Cela peut être NULL afin de ne définir aucun objet fichier, mais la valeur est toujours copiée vers l’emplacement de pile suivant. Si l’objet de fichier actuel doit être conservé, il doit être passé 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 vers l’emplacement de pile suivant. Si la valeur est KsStackReuseCurrentLocation, l’emplacement de pile actuel 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 la pile est utilisé tel est le cas.

Valeur retournée

La fonction KsForwardAndCatchIrp retourne le résultat de l’IoCallDriver, ou elle retourne un status non valide si aucune profondeur de pile supplémentaire n’est disponible.

Remarques

Le type KSSTACK_USE énumération spécifie comment la pile IRP est utilisée lors du transfert de l’IRP vers le pilote suivant.

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

Configuration requise

Condition requise Valeur
Plateforme cible Universal
En-tête ks.h (inclure Ks.h)
Bibliothèque Ks.lib