Partilhar via


Função IoSetNextIrpStackLocation (wdm.h)

A rotina de IoSetNextIrpStackLocation define o local da pilha IRP em um IRP alocado pelo driver para o do chamador.

Sintaxe

void IoSetNextIrpStackLocation(
  [in, out] PIRP Irp
);

Parâmetros

[in, out] Irp

Ponteiro para o IRP cujo local de pilha deve ser definido.

Valor de retorno

Nenhum

Observações

Em geral, essa rotina raramente é usada por motoristas. Ele é usado principalmente por drivers que exigem seu próprio local de pilha em um IRP que eles alocaram, por conta própria, para enviar para outro driver.

IoSetNextIrpStackLocation geralmente não é necessário porque:

  • O driver recebeu o IRP que está passando de outro driver de nível superior e, portanto, ele já possui um local de pilha,
  • Ou, o driver alocou o IRP, mas não precisa de seu próprio local de pilha porque pode manter tudo o que precisa em um bloco de contexto cujo endereço pode ser passado para sua rotina de IoCompletion.
Cuidado se essa rotina for chamada, especialmente ao alocar o IRP com IoAllocateIrp ou IoMakeAssociatedIrp. O gravador do driver de alocação deve lembrar que um local de pilha específico do chamador não está incluído no número de locais de pilha exigidos pelos drivers de nível inferior aos quais ele envia IRPs com IoCallDriver. Um driver deve especificar explicitamente um local de pilha para si mesmo em sua chamada para IoAllocateIrp ou IoMakeAssociatedIrp se ele chamar IoSetNextIrpStackLocation com o IRP retornado por qualquer rotina.

Um driver não pode chamar IoSetNextIrpStackLocation com qualquer IRP alocado chamando IoBuildAsynchronousFsdRequest, IoBuildDeviceIoControlRequestou IoBuildSynchronousFsdRequest.

Requisitos

Requisito Valor
de cliente com suporte mínimo Disponível a partir do Windows 2000.
da Plataforma de Destino Área de trabalho
cabeçalho wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
IRQL Qualquer nível

Consulte também

IO_STACK_LOCATION

IoAllocateIrp

IoBuildAsynchronousFsdRequest

IoBuildDeviceIoControlRequest

IoBuildSynchronousFsdRequest

do IoCallDriver

IoSetCompletionRoutine