다음을 통해 공유


IoSetNextIrpStackLocation 함수(wdm.h)

IoSetNextIrpStackLocation 루틴은 드라이버 할당 IRP의 IRP 스택 위치를 호출자의 IRP 스택 위치로 설정합니다.

구문

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

매개 변수

[in, out] Irp

스택 위치를 설정할 IRP에 대한 포인터입니다.

반환 값

없음

설명

일반적으로 이 루틴은 드라이버에서 거의 사용되지 않습니다. 주로 다른 드라이버에 보내기 위해 할당한 IRP에서 자신의 스택 위치가 필요한 드라이버에서 사용됩니다.

IoSetNextIrpStackLocation 은 일반적으로 다음 중 하나이기 때문에 필요하지 않습니다.

  • 드라이버는 다른 상위 수준의 드라이버에서 전달하는 IRP를 수신하여 이미 스택 위치를 소유하고 있습니다.
  • 또는 드라이버가 IRP를 할당했지만 주소가 IoCompletion 루틴에 전달될 수 있는 컨텍스트 블록에 필요한 모든 항목을 유지할 수 있으므로 자체 스택 위치가 필요하지 않습니다.
특히 IoAllocateIrp 또는 IoMakeAssociatedIrp를 사용하여 IRP를 할당할 때 이 루틴이 호출되는 경우 주의해야 합니다. 할당 드라이버의 작성기는 호출자별 스택 위치가 IoCallDriver를 사용하여 IRP를 보내는 하위 수준 드라이버에 필요한 스택 위치 수에 포함되지 않음을 기억해야 합니다. 드라이버는 IoSetNextIrpStackLocation을 호출하는 경우 IoAllocateIrp 또는 IoMakeAssociatedIrp 호출에서 자체적으로 스택 위치를 지정해야 합니다.

드라이버는 IoBuildAsynchronousFsdRequest, IoBuildDeviceIoControlRequest 또는 IoBuildSynchronousFsdRequest를 호출하여 할당하는 모든 IRP로 IoSetNextIrpStackLocation 호출할 수 없습니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 2000부터 사용할 수 있습니다.
대상 플랫폼 데스크톱
헤더 wdm.h(Wdm.h, Ntddk.h, Ntifs.h 포함)
IRQL 모든 수준

추가 정보

IO_STACK_LOCATION

IoAllocateIrp

IoBuildAsynchronousFsdRequest

IoBuildDeviceIoControlRequest

IoBuildSynchronousFsdRequest

IoCallDriver

IoSetCompletionRoutine