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)

Voir aussi

IoAttachDevice

IoDetachDevice

IoGetDeviceObjectPointer

ObDereferenceObject