Funzione IoAttachDeviceToDeviceStack (wdm.h)

La routine IoAttachDeviceToDeviceStack collega l'oggetto dispositivo del chiamante all'oggetto dispositivo più alto nella catena e restituisce un puntatore all'oggetto dispositivo più alto in precedenza.

Sintassi

PDEVICE_OBJECT IoAttachDeviceToDeviceStack(
  [in] PDEVICE_OBJECT SourceDevice,
  [in] PDEVICE_OBJECT TargetDevice
);

Parametri

[in] SourceDevice

Puntatore all'oggetto dispositivo creato dal chiamante.

[in] TargetDevice

Puntatore all'oggetto dispositivo di un altro driver, ad esempio un puntatore restituito da una chiamata precedente a IoGetDeviceObjectPointer.

Valore restituito

IoAttachDeviceToDeviceStack restituisce un puntatore all'oggetto dispositivo a cui è stato collegato SourceDevice . Il puntatore all'oggetto dispositivo restituito può essere diverso da TargetDevice se TargetDevice dispone di driver aggiuntivi sovrapposti.

IoAttachDeviceToDeviceStack restituisce NULL se non è riuscito a collegare l'oggetto dispositivo perché, ad esempio, il dispositivo di destinazione è stato scaricato.

Commenti

IoAttachDeviceToDeviceStack stabilisce la sovrapposizione tra i driver in modo che gli stessi IRP vengano inviati a ogni driver nella catena.

Un driver intermedio può usare questa routine durante l'inizializzazione per collegare il proprio oggetto dispositivo all'oggetto dispositivo di un altro driver. Le successive richieste di I/O inviate a TargetDevice vengono inviate prima al driver intermedio.

Questa routine imposta AlignmentRequirement in SourceDevice sul valore nell'oggetto dispositivo inferiore successivo e imposta StackSize sul valore nell'oggetto inferiore successivo più uno.

Un writer di driver deve prestare attenzione a chiamare questa routine prima di qualsiasi driver che deve eseguire il layer sopra il driver. IoAttachDeviceToDeviceStack collega SourceDevice all'oggetto dispositivo più alto attualmente a più livelli nella catena e non ha modo di determinare se i driver vengono sovrapposti nell'ordine corretto.

Un driver che ha acquisito un puntatore al dispositivo di destinazione chiamando IoGetDeviceObjectPointer deve chiamare ObDereferenceObject con il puntatore all'oggetto file restituito da IoGetDeviceObjectPointer per rilasciare il riferimento all'oggetto file prima di scollegare il proprio oggetto dispositivo, ad esempio quando tale driver di livello superiore viene scaricato.

Requisiti

Requisito Valore
Client minimo supportato Disponibile a partire da Windows 2000.
Piattaforma di destinazione Universale
Intestazione wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
Libreria NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= DISPATCH_LEVEL
Regole di conformità DDI AddDevice(wdm), HwStorPortProhibitedDDIs(storport), PnpSameDeviceObject(wdm)

Vedi anche

IoAttachDevice

IoDetachDevice

IoGetDeviceObjectPointer

ObDereferenceObject