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 |