다음을 통해 공유


IoMakeAssociatedIrp 함수(ntddk.h)

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

통사론

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

매개 변수

[in] Irp

최상위 드라이버의 디스패치 루틴에 입력된 마스터 IRP에 대한 포인터입니다.

[in] StackSize

연결된 IRP에 할당할 스택 위치 수를 지정합니다. 값은 다음 하위 드라이버 디바이스 개체의 StackSize 동일해야 하지만 연결된 IRP는 호출자에 대한 추가 스택 위치를 가질 수 있습니다.

반환 값

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

발언

최고 수준의 드라이버만 이 루틴을 호출할 수 있습니다.

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

마스터 IRP만 스레드와 연결됩니다. 연결된 IRP는 그렇지 않습니다. 이러한 이유로 I/O 관리자는 스레드가 종료될 때 연결된 IRP에 대한 취소 루틴을 호출할 수 없습니다. 마스터 IRP의 스레드가 종료되면 I/O 관리자는 마스터 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