Compartilhar via


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