AVCSTRM_ABORT_STREAMING

AVCSTRM_ABORT_STREAMING函式程式碼會取消所有暫止的資料要求,並釋出使用的資源。

I/o 狀態欄塊

如果成功, avcstrm.sys 會將 IoStatus 的狀態設定 > 為 STATUS_SUCCESS。

可能的錯誤傳回值包括:

錯誤狀態 說明
STATUS_DEVICE_REMOVED 對應至 AVCSTRM_READ 操作的裝置已不存在。
STATUS_CANCELLED 無法完成要求。
STATUS_INVALID_PARAMETER IRP 中指定的參數不正確,
STATUS_INSUFFICIENT_RESOURCES 沒有足夠的系統資源可完成要求。
STATUS_PENDING 已收到要求,但需要進一步的處理。 I/o 完成常式將會處理最終回應。

AVC_STREAM_REQUEST_BLOCK 輸入

SizeOfThisBlock、Version 和 Function
使用 INIT_AVCSTRM_HEADER 宏來初始化這些成員。 在宏的 Request 引數中傳遞 AVCSTRM_ABORT_STREAMING

AVCStreamCoNtext
指定資料流程內容 (處理先前 AVCSTRM_OPEN 呼叫(也就是資料寫入作業的目標)所傳回的) 。

次級系統驅動程式必須先配置 IRP 和 AVC_STREAM_REQUEST_BLOCK 結構。

接下來,它應該使用 INIT_AVCSTRM_HEADER 宏來初始化 AVC_STREAM_REQUEST_BLOCK 結構,並將 AVCSTRM_READ 傳遞為宏的要求引數。

接下來,次級驅動程式會將 AVCStreamCoNtext 成員設定為數據流內容 (處理資料流程) 以中止串流。

若要傳送此要求,子單位會將 IRP 設定為IoControlCode成員的IRP_MJ_INTERNAL_DEVICE_CONTROL irp 提交至IOCTL_AVCSTRM_CLASS ,並將 irp 的引數 1成員設定為描述要進行之中止資料流程作業的 AVC_STREAM_REQUEST_BLOCK 結構。

您必須在 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中宣告。 包含avcstrm。

另請參閱

INIT_AVCSTRM_HEADER

IRP_MJ_INTERNAL_DEVICE_CONTROL

IOCTL_AVCSTRM_CLASS

AVCSTRM_FUNCTION