IoAttachDeviceToDeviceStack, fonction (wdm.h)
La routine IoAttachDeviceToDeviceStack attache l’objet d’appareil de l’appelant à l’objet appareil le plus élevé de la chaîne et retourne un pointeur vers l’objet appareil précédemment le plus élevé.
Syntaxe
PDEVICE_OBJECT IoAttachDeviceToDeviceStack(
[in] PDEVICE_OBJECT SourceDevice,
[in] PDEVICE_OBJECT TargetDevice
);
Paramètres
[in] SourceDevice
Pointeur vers l’objet d’appareil créé par l’appelant.
[in] TargetDevice
Pointeur vers l’objet d’appareil d’un autre pilote, tel qu’un pointeur retourné par un appel précédent à IoGetDeviceObjectPointer.
Valeur de retour
IoAttachDeviceToDeviceStack retourne un pointeur vers l’objet d’appareil auquel le SourceDevice a été attaché. Le pointeur d’objet de l’appareil retourné peut différer de TargetDevice si TargetDevice avait des pilotes supplémentaires superposés.
IoAttachDeviceToDeviceStack retourne NULL s’il n’a pas pu attacher l’objet de l’appareil, car, par exemple, l’appareil cible a été déchargé.
Remarques
IoAttachDeviceToDeviceStack établit une couche entre les pilotes afin que les mêmes irps soient envoyés à chaque pilote de la chaîne.
Un pilote intermédiaire peut utiliser cette routine pendant l’initialisation pour attacher son propre objet d’appareil à l’objet de périphérique d’un autre pilote. Les demandes d’E/S suivantes envoyées à TargetDevice sont envoyées en premier au pilote intermédiaire.
Cette routine définit l' AlignmentRequirement dans SourceDevice la valeur de l’objet d’appareil inférieur suivant et définit l'StackSize sur la valeur de l’objet inférieur suivant plus un.
Un enregistreur de pilotes doit s’occuper d’appeler cette routine avant de tous les pilotes qui doivent se calquer sur leur pilote. IoAttachDeviceToDeviceStack attache SourceDevice à l’objet d’appareil le plus élevé actuellement superposé dans la chaîne et n’a aucun moyen de déterminer si les pilotes sont en couche dans l’ordre approprié.
Un pilote qui a acquis un pointeur vers l’appareil cible en appelant IoGetDeviceObjectPointer doit appeler ObDereferenceObject avec le pointeur d’objet de fichier retourné par IoGetDeviceObjectPointer pour libérer sa référence à l’objet fichier avant de détacher son propre objet d’appareil, par exemple, lorsqu’un pilote de niveau supérieur est déchargé.
Exigences
Exigence | Valeur |
---|---|
client minimum pris en charge | Disponible à partir de Windows 2000. |
plateforme cible | Universel |
d’en-tête | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
bibliothèque | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= DISPATCH_LEVEL |
règles de conformité DDI | AddDevice(wdm), HwStorPortProhibitedDDIs(storport), PnpSameDeviceObject(wdm) |