다음을 통해 공유


KsForwardAndCatchIrp 함수(ks.h)

KsForwardAndCatchIrp 함수는 다음 스택 위치를 초기화한 후 지정된 드라이버에 IRP를 전달하고 해당 드라이버에서 완료 시 IRP를 다시 제어합니다. 함수는 누적될 수 있는 디바이스와 함께 사용되며 파일 개체를 사용하여 통신하지 않습니다.

파일 개체를 사용하는 경우 호출자는 KsForwardAndCatchIrp 함수를 호출하기 전에 해당 파일 개체를 사용하여 현재 스택 위치를 초기화해야 합니다. 함수는 이를 시도하기 전에 복사할 새 스택 위치가 있는지 확인합니다. 새 스택 위치가 없으면 함수는 STATUS_INVALID_DEVICE_REQUEST 반환합니다. 새 스택 위치가 있는지 여부에 관계없이 IRP는 완료되지 않습니다.

구문

KSDDKAPI NTSTATUS KsForwardAndCatchIrp(
  [in] PDEVICE_OBJECT DeviceObject,
  [in] PIRP           Irp,
  [in] PFILE_OBJECT   FileObject,
  [in] KSSTACK_USE    StackUse
);

매개 변수

[in] DeviceObject

IRP를 전달할 디바이스를 지정합니다.

[in] Irp

지정된 드라이버에 전달되는 IRP를 지정합니다.

[in] FileObject

다음 스택 위치에 복사할 파일 개체 값을 지정합니다. 파일 개체를 설정하지 않으면 NULL 일 수 있지만 값은 항상 다음 스택 위치에 복사됩니다. 현재 파일 개체를 보존하려면 이 매개 변수에 전달되어야 합니다.

[in] StackUse

KSSTACK_USE 열거된 값을 지정합니다. 값이 KsStackCopyToNewLocation이면 매개 변수가 다음 스택 위치에 복사됩니다. 값이 KsStackReuseCurrentLocation이면 IRP가 전달되고 스택 위치가 현재 위치로 반환될 때 현재 스택 위치가 재사용됩니다. 값이 KsStackUseNewLocation이면 새 스택 위치가 있는 그대로 사용됩니다.

반환 값

KsForwardAndCatchIrp 함수는 IoCallDriver의 결과를 반환하거나 더 이상 스택 깊이를 사용할 수 없는 경우 잘못된 상태 반환합니다.

설명

KSSTACK_USE 형식 열거형은 IRP를 다음 드라이버로 전달할 때 IRP 스택을 사용하는 방법을 지정합니다.

열거형 설명
KsStackCopyToNewLocation 매개 변수를 다음 스택 위치에 복사할 것임을 나타냅니다.
KsStackReuseCurrentLocation 현재 스택 위치를 다시 사용할 것임을 나타냅니다.
KsStackUseNewLocation 다음 스택 위치를 수정하지 않고 사용할 것임을 나타냅니다.

요구 사항

요구 사항
대상 플랫폼 유니버설
헤더 ks.h(Ks.h 포함)
라이브러리 Ks.lib