Função IoAttachDeviceToDeviceStack (wdm.h)
A rotina IoAttachDeviceToDeviceStack anexa o objeto de dispositivo do chamador ao objeto de dispositivo mais alto da cadeia e retorna um ponteiro para o objeto de dispositivo anteriormente mais alto.
Sintaxe
PDEVICE_OBJECT IoAttachDeviceToDeviceStack(
[in] PDEVICE_OBJECT SourceDevice,
[in] PDEVICE_OBJECT TargetDevice
);
Parâmetros
[in] SourceDevice
Ponteiro para o objeto de dispositivo criado pelo chamador.
[in] TargetDevice
Ponteiro para o objeto de dispositivo de outro driver, como um ponteiro retornado por uma chamada anterior para IoGetDeviceObjectPointer.
Retornar valor
IoAttachDeviceToDeviceStack retorna um ponteiro para o objeto de dispositivo ao qual SourceDevice foi anexado. O ponteiro do objeto de dispositivo retornado poderá ser diferente de TargetDevice se TargetDevice tiver drivers adicionais em camadas sobre ele.
IoAttachDeviceToDeviceStack retornará NULL se não puder anexar o objeto de dispositivo porque, por exemplo, o dispositivo de destino estava sendo descarregado.
Comentários
IoAttachDeviceToDeviceStack estabelece camadas entre drivers para que os mesmos IRPs sejam enviados para cada driver na cadeia.
Um driver intermediário pode usar essa rotina durante a inicialização para anexar seu próprio objeto de dispositivo ao objeto de dispositivo de outro driver. As solicitações de E/S subsequentes enviadas para TargetDevice são enviadas primeiro para o driver intermediário.
Essa rotina define AlignmentRequirement em SourceDevice como o valor no objeto de dispositivo mais baixo e define StackSize como o valor no objeto mais um.
Um gravador de driver deve tomar cuidado para chamar essa rotina antes de qualquer drivers que devem colocar em camadas em cima de seu driver. IoAttachDeviceToDeviceStack anexa SourceDevice ao objeto de dispositivo mais alto atualmente em camadas na cadeia e não tem como determinar se os drivers estão sendo em camadas na ordem correta.
Um driver que adquiriu um ponteiro para o dispositivo de destino chamando IoGetDeviceObjectPointer deve chamar ObDereferenceObject com o ponteiro do objeto de arquivo que foi retornado por IoGetDeviceObjectPointer para liberar sua referência ao objeto de arquivo antes de desanexar seu próprio objeto de dispositivo, por exemplo, quando esse driver de nível superior for descarregado.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Disponível a partir do Windows 2000. |
Plataforma de Destino | Universal |
Cabeçalho | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
Biblioteca | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= DISPATCH_LEVEL |
Regras de conformidade da DDI | AddDevice(wdm), HwStorPortProhibitedDIs(storport), PnpSameDeviceObject(wdm) |