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 |