AVCSTRM_GET_STATE

AVCSTRM_GET_STATE函数代码获取指定流的当前流状态。

I/O 状态块

如果成功, avcstrm.sysIrp-IoStatus.Status> 设置为 STATUS_SUCCESS。

如果成功,则返回STATUS_SUCCESS。 CommandData 联合的 StreamState 成员具有当前流状态。 可以是KSSTATE_STOP、KSTATE_PAUSE或KSSTATE_RUN。

可能的错误返回值包括:

错误状态 说明
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_MJ_INTERNAL_DEVICE_CONTROL IRP,其中 IRP 的 IoControlCode 成员设置为 IOCTL_AVCSTRM_CLASS ,将 IRP 的 Argument1 成员设置为描述要从中获取流状态的流AVC_STREAM_REQUEST_BLOCK结构。

子单元驱动程序预期此命令会同步完成。 结果立即返回,而不会在 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

另请参阅

AVC_STREAM_REQUEST_BLOCK

INIT_AVCSTRM_HEADER

IRP_MJ_INTERNAL_DEVICE_CONTROL

IOCTL_AVCSTRM_CLASS

KSSTATE

AVCSTRM_FUNCTION