Função KsForwardAndCatchIrp (ks.h)
A função KsForwardAndCatchIrp encaminha um IRP para o driver especificado depois de inicializar o próximo local da pilha e recupera o controle do IRP após a conclusão desse driver. A função é usada com dispositivos que podem ser empilhados e não usam objetos de arquivo para se comunicar.
Se um objeto de arquivo estiver sendo usado, o chamador deverá inicializar o local da pilha atual com esse objeto de arquivo antes de chamar a função KsForwardAndCatchIrp . A função verifica se há um novo local de pilha para copiar antes de tentar fazer isso. Se não houver um novo local de pilha, a função retornará STATUS_INVALID_DEVICE_REQUEST. Independentemente de um novo local de pilha estiver presente, o IRP não será concluído.
Sintaxe
KSDDKAPI NTSTATUS KsForwardAndCatchIrp(
[in] PDEVICE_OBJECT DeviceObject,
[in] PIRP Irp,
[in] PFILE_OBJECT FileObject,
[in] KSSTACK_USE StackUse
);
Parâmetros
[in] DeviceObject
Especifica o dispositivo para o qual encaminhar o IRP.
[in] Irp
Especifica o IRP que está sendo encaminhado para o driver especificado.
[in] FileObject
Especifica um valor de objeto de arquivo a ser copiado para o próximo local da pilha. Isso pode ser NULL para não definir nenhum objeto de arquivo, mas o valor sempre é copiado para o próximo local da pilha. Se o objeto de arquivo atual deve ser preservado, ele deve ser passado nesse parâmetro.
[in] StackUse
Especifica um valor enumerado por KSSTACK_USE. Se o valor for KsStackCopyToNewLocation, os parâmetros serão copiados para o próximo local da pilha. Se o valor for KsStackReuseCurrentLocation, o local da pilha atual será reutilizado quando o IRP for encaminhado e o local da pilha for retornado para o local atual. Se o valor for KsStackUseNewLocation, o novo local da pilha será usado como está.
Retornar valor
A função KsForwardAndCatchIrp retorna o resultado do IoCallDriver ou retorna um status inválido se não houver mais profundidade de pilha disponível.
Comentários
O tipo KSSTACK_USE enumeração especifica como a pilha IRP é usada ao encaminhar o IRP para o próximo driver.
Enumeração | Descrição |
---|---|
KsStackCopyToNewLocation | Indica que os parâmetros devem ser copiados para o próximo local da pilha. |
KsStackReuseCurrentLocation | Indica que o local da pilha atual deve ser reutilizado. |
KsStackUseNewLocation | Indica que o próximo local da pilha deve ser usado sem modificação. |
Requisitos
Requisito | Valor |
---|---|
Plataforma de Destino | Universal |
Cabeçalho | ks.h (inclua Ks.h) |
Biblioteca | Ks.lib |