다음을 통해 공유


IoMakeAssociatedIrp 함수(ntddk.h)

이 루틴은 파일 시스템 및 파일 시스템 필터 드라이버에서 사용하도록 예약되어 있습니다. IoMakeAssociatedIrp 루틴은 최고 수준 드라이버로 전송된 master IRP와 연결되도록 IRP를 할당하고 초기화하여 호출자가 원래 요청을 분할하고 연결된 IRP를 하위 수준 드라이버로 보낼 수 있도록 합니다.

구문

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

매개 변수

[in] Irp

최상위 드라이버의 Dispatch 루틴에 입력된 master IRP에 대한 포인터입니다.

[in] StackSize

연결된 IRP에 할당할 스택 위치 수를 지정합니다. 값은 다음으로 낮은 드라이버의 디바이스 개체 의 StackSize 와 적어도 같아야 하지만 연결된 IRP는 호출자에 대한 추가 스택 위치를 가질 수 있습니다.

반환 값

IoMakeAssociatedIrp 은 연결된 IRP에 대한 포인터를 반환하거나 IRP를 할당할 수 없는 경우 NULL 포인터를 반환합니다.

설명

최상위 드라이버만 이 루틴을 호출할 수 있습니다.

I/O 관리자는 호출자가 연결된 IRP에서 IoCompletion 루틴을 설정하지 않고 IoCompletion 루틴에서 STATUS_MORE_PROCESSING_REQUIRED 반환하지 않는 한 낮은 드라이버가 모든 관련 IRP를 완료하면 자동으로 master IRP를 완료합니다. 이러한 상황에서 호출자는 해당 드라이버가 연결된 모든 IRP가 완료되었음을 확인했을 때 master IRP를 명시적으로 완료해야 합니다.

master IRP만 스레드와 연결됩니다. 연결된 IRP는 연결되지 않습니다. 이러한 이유로 I/O 관리자는 스레드가 종료될 때 연결된 IRP에 대해 취소 루틴을 호출할 수 없습니다. master IRP의 스레드가 종료되면 I/O 관리자는 master IRP의 취소 루틴을 호출합니다. Cancel 루틴은 연결된 모든 IRP를 추적하고 IoCancelIrp를 호출하여 취소합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 2000부터 사용할 수 있습니다.
대상 플랫폼 유니버설
헤더 ntddk.h(Ntddk.h 포함)
라이브러리 NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= DISPATCH_LEVEL

추가 정보

IRP

IoAllocateIrp

IoBuildAsynchronousFsdRequest

IoBuildDeviceIoControlRequest

IoBuildSynchronousFsdRequest

IoCallDriver

IoSetCompletionRoutine