AVCSTRM_GET_STATE
AVCSTRM_GET_STATE 함수 코드는 지정된 스트림의 현재 스트림 상태를 가져옵니다.
I/O 상태 블록
성공하면 avcstrm.sysIrp-IoStatus.Status>를 STATUS_SUCCESS 설정합니다.
성공하면 STATUS_SUCCESS 반환됩니다. CommandData 공용 구조체의 StreamState 멤버에는 현재 스트림 상태가 있습니다. KSSTATE_STOP, KSTATE_PAUSE 또는 KSSTATE_RUN 수 있습니다.
가능한 오류 반환 값은 다음과 같습니다.
오류 상태 | 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_GET_STATE 전달합니다.
AVCStreamContext
스트림 상태를 가져오기 위해 이전 AVCSTRM_OPEN 호출에서 반환된 스트림 컨텍스트(핸들)를 지정합니다.
StreamState
AVCSTRM_GET_STATE 성공적으로 반환되면 이 멤버는 현재 스트림 상태를 포함합니다.
하위 단위 드라이버는 먼저 IRP 및 AVC_STREAM_REQUEST_BLOCK 구조를 할당해야 합니다. 다음으로 INIT_AVCSTRM_HEADER 매크로를 사용하여 AVC_STREAM_REQUEST_BLOCK 구조를 초기화하고 AVCSTRM_GET_STATE Request 인수로 매크로에 전달해야 합니다. 다음으로 하위 단위 드라이버는 AVCStreamContext 멤버를 스트림의 스트림 컨텍스트(핸들)로 설정하여 스트림 상태를 가져옵니다.
이 요청을 보내기 위해 하위 단위는 IRP 의 IoControlCode 멤버가 IOCTL_AVCSTRM_CLASS 설정되고 IRP의 Argument1 멤버가 스트림 상태를 가져올 스트림을 설명하는 AVC_STREAM_REQUEST_BLOCK 구조로 설정된 IRP_MJ_INTERNAL_DEVICE_CONTROL IRP를 제출합니다.
하위 단위 드라이버는 이 명령이 동기적으로 완료될 것으로 예상할 수 있습니다. 결과는 avcstrm.sys에서 보류 중인 작업 없이 즉시 반환됩니다.
이 함수 코드는 IRQL = PASSIVE_LEVEL 호출해야 합니다.
의견
이 함수는 아래와 같이 AVC_STREAM_REQUEST_BLOCK 구조체에서 CommandData 공용 구조체의 StreamState 멤버를 사용합니다.
typedef struct _AVC_STREAM_REQUEST_BLOCK {
ULONG SizeOfThisBlock;
ULONG Version;
AVCSTRM_FUNCTION Function;
.
.
PVOID AVCStreamContext;
.
.
union _tagCommandData {
.
.
KSSTATE StreamState;
.
.
} CommandData;
} AVC_STREAM_REQUEST_BLOCK, *PAVC_STREAM_REQUEST_BLOCK;
요구 사항
헤더:avcstrm.h에 선언됩니다. avcstrm.h를 포함합니다.