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) |