Condividi tramite


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 precedentemente più alto.

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 a un altro oggetto dispositivo del 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 il SourceDevice. Il puntatore a oggetti dispositivo restituito può essere diverso da TargetDevice se TargetDevice disponeva di driver aggiuntivi su di esso.

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

Osservazioni

IoAttachDeviceToDeviceStack stabilisce il layering tra i driver in modo che gli stessi IRP vengano inviati a ogni driver della 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 il AlignmentRequirement in SourceDevice sul valore nell'oggetto dispositivo inferiore successivo e imposta il StackSize sul valore nell'oggetto successivo più uno.

Un writer di driver deve prestare attenzione a chiamare questa routine prima di tutti i driver che devono eseguire il layer sopra il driver. IoAttachDeviceToDeviceStack collega SourceDevice all'oggetto dispositivo più alto attualmente a più livelli nella catena e non è possibile 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 a oggetti file restituito da IoGetDeviceObjectPointer per rilasciare il riferimento all'oggetto file prima di scollegare il proprio oggetto dispositivo, ad esempio, quando un driver di livello superiore viene scaricato.

Fabbisogno

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), HwStorPortProhibitedDDDIs(storport), PnpSameDeviceObject(wdm)

Vedere anche

IoAttachDevice

IoDetachDevice

IoGetDeviceObjectPointer

ObDereferenceObject