다음을 통해 공유


AVCSTRM_ABORT_STREAMING

AVCSTRM_ABORT_STREAMING 함수 코드는 보류 중인 모든 데이터 요청을 취소하고 사용된 리소스를 해제합니다.

I/O 상태 블록

성공하면 avcstrm.sysIrp-IoStatus.Status>를 STATUS_SUCCESS 설정합니다.

가능한 오류 반환 값은 다음과 같습니다.

오류 상태 Description
STATUS_DEVICE_REMOVED AVCSTRM_READ 작업에 해당하는 디바이스가 더 이상 존재하지 않습니다.
STATUS_CANCELLED 요청을 완료할 수 없습니다.
STATUS_INVALID_PARAMETER IRP에 지정된 매개 변수가 올바르지 않습니다.
STATUS_INSUFFICIENT_RESOURCES 요청을 완료하기에 충분한 시스템 리소스가 없었습니다.
STATUS_PENDING 요청이 수신되었지만 추가 처리가 필요합니다. I/O 완료 루틴은 최종 응답을 처리합니다.

AVC_STREAM_REQUEST_BLOCK 입력

SizeOfThisBlock, 버전 및 함수
INIT_AVCSTRM_HEADER 매크로를 사용하여 이러한 멤버를 초기화합니다. 매크로의 Request 인수에 AVCSTRM_ABORT_STREAMING 전달합니다.

AVCStreamContext
데이터 쓰기 작업의 대상인 이전 AVCSTRM_OPEN 호출에서 반환된 스트림 컨텍스트(핸들)를 지정합니다.

하위 단위 드라이버는 먼저 IRP 및 AVC_STREAM_REQUEST_BLOCK 구조를 할당해야 합니다.

다음으로 INIT_AVCSTRM_HEADER 매크로를 사용하여 AVC_STREAM_REQUEST_BLOCK 구조를 초기화하고 AVCSTRM_READ Request 인수로 매크로에 전달해야 합니다.

다음으로 하위 단위 드라이버는 AVCStreamContext 멤버를 스트림의 스트림 컨텍스트(핸들)로 설정하여 스트리밍을 중단합니다.

이 요청을 보내기 위해 하위 단위는 IRPIoControlCode 멤버가 IOCTL_AVCSTRM_CLASS 설정되고 IRP의 Argument1 멤버가 수행되는 중단 스트리밍 작업을 설명하는 AVC_STREAM_REQUEST_BLOCK 구조로 설정된 IRP_MJ_INTERNAL_DEVICE_CONTROL IRP를 제출합니다.

이 함수 코드는 PASSIVE_LEVEL 호출해야 합니다. 데이터 IRP가 취소되면 DISPATCH_LEVEL 실행할 수 있습니다. 이 경우 하위 단위는 작업 항목을 시작하고 PASSIVE_LEVEL 실행되는 작업 항목 루틴에서 이 함수를 호출해야 합니다.

의견

이 기능은 모든 스트리밍 IRP를 취소합니다. 개별 IRP를 취소하려면 IoCancelIrp을 사용합니다.

하위 단위는 대상 디바이스가 제거되거나 원래 데이터 IRP가 취소되어 스트림 작업을 중지할 때 이를 호출해야 합니다.

이 함수는 AVC_STREAM_REQUEST_BLOCK 구조체에서 CommandData 공용 구조체의 멤버를 사용하지 않습니다.

typedef struct _AVC_STREAM_REQUEST_BLOCK {
  ULONG  SizeOfThisBlock;
  ULONG  Version;
  AVCSTRM_FUNCTION  Function;
  .
  .
  PVOID AVCStreamContext;
  .
  .
} AVC_STREAM_REQUEST_BLOCK, *PAVC_STREAM_REQUEST_BLOCK;

요구 사항

헤더:avcstrm.h에 선언됩니다. avcstrm.h를 포함합니다.

참고 항목

INIT_AVCSTRM_HEADER

IRP_MJ_INTERNAL_DEVICE_CONTROL

IOCTL_AVCSTRM_CLASS

AVCSTRM_FUNCTION