Fonction IoAttachDeviceToDeviceStack (wdm.h)
La routine IoAttachDeviceToDeviceStack attache l’objet d’appareil de l’appelant à l’objet d’appareil le plus élevé de la chaîne et retourne un pointeur vers l’objet d’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 de périphérique d’un autre pilote, tel qu’un pointeur retourné par un appel précédent à IoGetDeviceObjectPointer.
Valeur retournée
IoAttachDeviceToDeviceStack retourne un pointeur vers l’objet d’appareil auquel l’objet SourceDevice a été attaché. Le pointeur d’objet de périphérique retourné peut différer de TargetDevice si des pilotes supplémentaires étaient superposés à TargetDevice .
IoAttachDeviceToDeviceStack retourne NULL s’il n’a pas pu attacher l’objet d’appareil, car, par exemple, l’appareil cible était déchargé.
Remarques
IoAttachDeviceToDeviceStack établit une superposition entre les pilotes afin que les mêmes IRP 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 de périphérique à l’objet de périphérique d’un autre pilote. Les demandes d’E/S suivantes envoyées à TargetDevice sont d’abord envoyées au pilote intermédiaire.
Cette routine définit l’AlignmentRequirement dans SourceDevice sur la valeur dans l’objet d’appareil suivant-inférieur et définit StackSize sur la valeur dans l’objet next-lower-object plus un.
Un enregistreur de pilotes doit prendre soin d’appeler cette routine avant les pilotes qui doivent être superposés au-dessus de 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 le bon ordre.
Un pilote qui a acquis un pointeur vers l’appareil cible en appelant IoGetDeviceObjectPointer doit appeler ObDereferenceObject avec le pointeur d’objet fichier retourné par IoGetDeviceObjectPointer pour libérer sa référence à l’objet fichier avant qu’il ne détache son propre objet d’appareil, par exemple, lorsqu’un pilote de niveau supérieur est déchargé.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Disponible à partir de Windows 2000. |
Plateforme cible | Universal |
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), HwStorPortProhibitedDDDIs(storport), PnpSameDeviceObject(wdm) |