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 |