Função IoMakeAssociatedIrp (ntddk.h)

Essa rotina é reservada para uso por sistemas de arquivos e drivers de filtro do sistema de arquivos. A rotina IoMakeAssociatedIrp aloca e inicializa um IRP a ser associado a um IRP master enviado a um driver de nível mais alto, permitindo que o chamador divida a solicitação original e envie IRPs associados para drivers de nível inferior.

Sintaxe

PIRP IoMakeAssociatedIrp(
  [in] PIRP  Irp,
  [in] CCHAR StackSize
);

Parâmetros

[in] Irp

Ponteiro para o MASTER IRP que foi inserido em uma rotina de expedição de driver de nível mais alto.

[in] StackSize

Especifica o número de locais de pilha a serem alocados para o IRP associado. O valor deve ser pelo menos igual ao StackSize do objeto de dispositivo do driver mais baixo, mas o IRP associado pode ter um local de pilha adicional para o chamador.

Retornar valor

IoMakeAssociatedIrp retorna um ponteiro para o IRP associado ou retorna um ponteiro NULL se um IRP não puder ser alocado.

Comentários

Somente um driver de nível mais alto pode chamar essa rotina.

O gerente de E/S conclui a master IRP automaticamente quando drivers inferiores tiverem concluído todos os IRPs associados, desde que o chamador não tenha definido sua rotina de IoCompletion em um IRP associado e retornado STATUS_MORE_PROCESSING_REQUIRED de sua rotina IoCompletion. Nessas circunstâncias, o chamador deve concluir explicitamente a master IRP quando esse driver determinou que todos os IRPs associados foram concluídos.

Somente a master IRP está associada a um thread; os IRPs associados não estão. Por esse motivo, o gerente de E/S não pode chamar Rotinas de Cancelamento para IRPs associados quando um thread é encerrado. Quando o thread do MASTER IRP é encerrado, o gerente de E/S chama a rotina cancelar do IRP master. A rotina Cancelar é responsável por rastrear todos os IRPs associados e chamar IoCancelIrp para cancelá-los.

Requisitos

Requisito Valor
Cliente mínimo com suporte Disponível a partir do Windows 2000.
Plataforma de Destino Universal
Cabeçalho ntddk.h (inclua Ntddk.h)
Biblioteca NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= DISPATCH_LEVEL

Confira também

IRP

IoAllocateIrp

IoBuildAsynchronousFsdRequest

IoBuildDeviceIoControlRequest

IoBuildSynchronousFsdRequest

IoCallDriver

IoSetCompletionRoutine