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