创建流

必须先创建数据流上下文,AV/C 流式处理筛选器驱动程序(Avcstrm.sys) 才能 提供服务。 上下文指向一个不透明结构,该结构包含请求的数据格式、数据流状态和属性,类似于流扩展插件。 数据格式结构和数据流的方向是它的输入参数。 如果可以成功创建流,它将返回流上下文。 此上下文由子单元驱动程序缓存,用于后续 AV/C 流式处理请求。

这是一个同步操作。 操作首先创建流请求结构以打开流。 然后,它调用用户定义的 IRP 同步例程来调用较低驱动程序,以创建基于给定数据流方向和数据格式的数据流(在 AVCSTRM_FORMAT_INFO)。 下面的代码示例演示如何打开数据流上下文。

#include <avcstrm.h>

INIT_AVCSTRM_HEADER(pAVCStrmReq, AVCSTRM_OPEN);
pAVCStrmReq->CommandData.OpenStruct.AVCFormatInfo =            &AVCStrmFormatInfoTable[pDevExt->VideoFormatIndex]; 
pAVCStrmReq->CommandData.OpenStruct.AVCStreamContext = NULL;
pAVCStrmReq->CommandData.OpenStruct.DataFlow         = DataFlow;

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

if(STATUS_SUCCESS == Status) {
    // Save the context, which is used for a 
    // Subsequent call to the AVCStrm filter driver    
    pStrmExt->AVCStreamContext = 
        pAVCStrmReq->CommandData.OpenStruct.AVCStreamContext;
}