Compartir a través de


AVCSTRM_GET_STATE

El código de función AVCSTRM_GET_STATE obtiene el estado actual de la secuencia del flujo especificado.

Bloque de estado de entrada/salida

Si se ejecuta correctamente, avcstrm.sys establece Irp-IoStatus.Status> en STATUS_SUCCESS.

Si se ejecuta correctamente, se devuelve un STATUS_SUCCESS. El miembro StreamState de la unión CommandData tiene el estado de secuencia actual. Puede ser KSSTATE_STOP, KSTATE_PAUSE o KSSTATE_RUN.

Entre los valores devueltos de error posibles se incluyen:

Estado del error Descripción
STATUS_DEVICE_REMOVED El dispositivo correspondiente a la operación de AVCSTRM_READ ya no existe.
STATUS_CANCELLED No se pudo completar la solicitud.
STATUS_INVALID_PARAMETER Un parámetro especificado en el IRP es incorrecto,
STATUS_INSUFFICIENT_RESOURCES No había suficientes recursos del sistema para completar la solicitud.
STATUS_PENDING La solicitud se ha recibido, pero requiere un procesamiento adicional. La rutina de finalización de E/S controlará la respuesta final.

entrada de AVC_STREAM_REQUEST_BLOCK

SizeOfThisBlock, Version y Function
Use la macro INIT_AVCSTRM_HEADER para inicializar estos miembros. Pase AVCSTRM_GET_STATE en el argumento Request de la macro.

AVCStreamContext
Especifica el contexto de flujo (identificador) devuelto por una llamada de AVCSTRM_OPEN anterior para obtener el estado de la secuencia.

StreamState
Si AVCSTRM_GET_STATE devuelve correctamente, este miembro contiene el estado actual de la secuencia.

Un controlador de subbúsito primero debe asignar un IRP y una estructura de AVC_STREAM_REQUEST_BLOCK . A continuación, debe usar la macro INIT_AVCSTRM_HEADER para inicializar la estructura de AVC_STREAM_REQUEST_BLOCK, pasando AVCSTRM_GET_STATE como argumento Request a la macro. A continuación, el controlador de subbunit establece el miembro AVCStreamContext en el contexto de secuencia (identificador) de la secuencia para obtener el estado de la secuencia.

Para enviar esta solicitud, una subunidad envía una IRP_MJ_INTERNAL_DEVICE_CONTROL IRP con el miembro IoControlCode del IRP establecido en IOCTL_AVCSTRM_CLASS y el miembro Argument1 del IRP establecido en la estructura de AVC_STREAM_REQUEST_BLOCK que describe la secuencia para obtener el estado de la secuencia.

Un controlador de subbúsito puede esperar que este comando se complete de forma sincrónica. El resultado devuelve inmediatamente sin operaciones pendientes en avcstrm.sys.

Se debe llamar a este código de función en IRQL = PASSIVE_LEVEL.

Comentarios

Esta función usa el miembro StreamState de la unión CommandData en la estructura AVC_STREAM_REQUEST_BLOCK como se muestra a continuación.

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;

Requisitos

Encabezados: Declarado en avcstrm.h. Incluya avcstrm.h.

Consulte también

AVC_STREAM_REQUEST_BLOCK

INIT_AVCSTRM_HEADER

IRP_MJ_INTERNAL_DEVICE_CONTROL

IOCTL_AVCSTRM_CLASS

KSSTATE

AVCSTRM_FUNCTION