AVCSTRM_CLOSE

AVCSTRM_CLOSE函式程式碼會關閉指定的資料流程,並釋放AVCSTRM_OPEN中配置的任何資源。

I/O 狀態欄塊

如果成功, avcstrm.sys將 Irp-IoStatus.Status > 設定為 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、版本和函式
使用 INIT_AVCSTRM_HEADER 宏來初始化這些成員。 在宏的 Request 引數中傳遞 AVCSTRM_CLOSE

AVCStreamCoNtext
指定要關閉之資料流程 (處理) 的資料流程內容。 如果 成功傳回AVCSTRM_CLOSE ,這個值就不再有效。

以下是如何指定要關閉之資料流程的範例:

    pAVCStrmReq = &pStrmExt->AVCStrmReq;
    RtlZeroMemory(pAVCStrmReq, sizeof(AVC_STREAM_REQUEST_BLOCK));
    INIT_AVCSTRM_HEADER(pAVCStrmReq, AVCSTRM_CLOSE);

    pAVCStrmReq->AVCStreamContext = pStrmExt->AVCStreamContext;

    Status = 
        AVCStrmReqSubmitIrpSynch ( 
            pDevExt->pBusDeviceObject,
            pStrmExt->pIrpReq,
            pAVCStrmReq
            );

子單位驅動程式必須先配置 IRP 和 AVC_STREAM_REQUEST_BLOCK 結構。

接下來,它應該使用 INIT_AVCSTRM_HEADER 宏來初始化AVC_STREAM_REQUEST_BLOCK結構,並將 AVCSTRM_CLOSE 當做 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等位的AVCStreamCoNtext成員,如下所示。

typedef struct _AVC_STREAM_REQUEST_BLOCK {
  ULONG  SizeOfThisBlock;
  ULONG  Version;
  AVCSTRM_FUNCTION  Function;
  .
  .
  PVOID AVCStreamContext;
  .
  .
} 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

AVCSTRM_FUNCTION