Função IoSetNextIrpStackLocation (wdm.h)

A rotina 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.

Retornar valor

Nenhum

Comentários

Em geral, essa rotina raramente é usada por drivers. 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 deve ser tomado 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, IoBuildDeviceIoControlRequest ou IoBuildSynchronousFsdRequest.

Requisitos

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

Confira também

IO_STACK_LOCATION

IoAllocateIrp

IoBuildAsynchronousFsdRequest

IoBuildDeviceIoControlRequest

IoBuildSynchronousFsdRequest

IoCallDriver

IoSetCompletionRoutine