共用方式為


AVCSTRM_GET_STATE

AVCSTRM_GET_STATE函式程式碼會取得指定資料流程的目前資料流程狀態。

I/O 狀態欄塊

如果成功, avcstrm.sys 會將 Irp-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 的IoControlCode成員提交IRP_MJ_INTERNAL_DEVICE_CONTROL IRP,並將 IRP 的Argument1成員IOCTL_AVCSTRM_CLASS設定為 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