IGaptureGraphBuilder2 interface
The ICaptureGraphBuilder2 接口使你建立的捕获图表有效,
预览图表,文件压缩图表,或者其他客户图表
AllocCapFile 预先分配捕获文件的大小,该大小是指定的,
最好的结果,总是捕获到一个碎片,因此捕获文件的大小应该比要捕获的数据大小要大
HRESULT AllocCapFile(
[in] LPCOLESTR lpwstr, 一个你要创建的文件名称
[in] DWORDLONG dwlSize // 要被分配的文件大小,单位为字节
);
ControlStream 为一个或多个流(被捕获的数据)设置开始和结束的次数
HRESULT ControlStream(
[in] const GUID *pCategory, // 一个指向GUID的指针,这个指针指定插脚目录清单中
[in] const GUID *pType, // 指定媒体类型,如果该参数是NULL,那么pFilter也是NULL
[in] IBaseFilter *pFilter, // 指定那个过滤器被控制,如果要控制全部图表中的过滤器,那么就将该参数设置为NULL
[in] REFERENCE_TIME *pstart, 开始时间,如果是 MAXLONGLONG 将会取消前一个开始的请求,如果是NULL,那么当这个图表运行的时候,这个插脚就会立即开始
[in]REFERENCE_TIME* pstop, // 结束时间,如果是MAXLONGLONG, 将会取消前面任何一个停止请求,如果是NULL,the插脚立即停止
[in] WORD wStartCookie,
//
[in]WORD wStopCookie,
)
CopyCaptureFile 从一个被捕获的文件拷贝有效的媒体数据
HRESULT CopyCapyureFile(
[in] LPOLESTR lpwstrOld, 源文件名称
[in] LPOLESTR lpwstrNew, 目的文件名称
[in] int fAllowEscAbort, 如果是TRUE ,那按下ESC键将会致使文件的拷贝取消,如果是FALSE 将不会对ESC键做出反应
[in] IAMCopyCaptureFileProgress* pCallback // 显示拷贝捕获文件的信息
);
FindInterface 在图表中搜索指定的接口,从一个指定的接口开始,你可以限制只搜索图表中的上游或者下游中的一部分过滤器,或者限制独有的插脚,或者是媒体类型
HRESULT FindInterface
(
[in] const GUID *pCategory, // 一个指针指向具有搜索条件的GUID
[in] const GUID*pType,// 一个指针指向这个主要媒体类型的输出插脚
[in] IBaseFilter* pf,IBaseFilter接口类过滤器指针,从过滤器开始的地方搜索
[in] REFIID riid, // 本地接口ID
[out] void **ppint // 一个接口指针的地址,在使用完成后记得释放
)
FindPin 在一个过滤器上检索指定的插脚,或者决定是否得到一个与指定条件相匹配的插脚
HRESULT FindPin
(
[in] IUknown *pSource, // 一个接口的指针,或者被认为指向有一个插脚的接口
[in] PIN_DIRECTION pindir, // PIN_DIRECTION 的成员枚举指定的插脚方向
[in] const GUID *pCategory, // 插脚目录列表中的一个成员,若要去与任何插脚相匹配,设置该参数为NULL,
[in] const GUID* pType, // 设定指定的媒体类型,若是NULL则与任何媒体类型相匹配
[in] BOOL fUnconnected, // TRUR ,插脚必须没有连接,若是FALSE,这个插脚可以连接或者不连接
[in] int num,去检索以0为基础的索引,if pSource 是一个指针对于一个过滤器,而这个过滤器不止一个插脚与搜索条件相匹配,这个参数可以指定特定的插脚被返回,如果psource 指向的是一个插脚而不是过滤器接口,是不会管这个参数的含义的
[out] IPin **ppPin //指向一个接受与指定条件相匹配的插脚
);
GetFiltergraph 重新得到正在被捕获图表建立者使用的过滤器图表
HRESULT GetFiltergraph(
[out] IGraphBuilder** ppfg // IGraphBuilder 接口指针
);
RenderStream 在一个源过滤器上去连接输出插脚到一个渗透迭代器,可选择通过中间过滤器
HRESULT RenderStream
(
[in] const GUID *pCategory, // 指向一个插脚目录列表中的GUID
[in] const GUID*pType, //指定输出插脚上的媒体类型,若是NULL则使用任何插脚,不限制类体类型。
[in] IUnknow *pSource,指定一个开始过滤的过滤器或者是一个输出插脚
[in]IBaseFilter *pIntermediate, 指定一个IBaseFilter的中间过滤器,比如说压缩啊
[in] IBaseFilter* pSink 指向一个渗透过滤器 ,例如渲染器,多路复用渲染器,如果这个值是空的,将会使用默认的渲染器
);
SetFiltergraph 设置一个图表过滤器供捕获图表建造者使用
HRESULT SetFiltergraph(
[in] IGraphBuilder* pfg 过滤器图表建立者指针
);
SetOutputFileName 为图表过滤器建立写文件
HRESULT SetOutputFileName(
[in] const GUID *pType, // 指定文件类型
[in] LPCOLESTR lpwstrFile, // 文件名
[out] IBaseFilter **ppf,多路复用的IBaseFilter 接口
[out] IFileSinkFilter **pSink, 渗透过滤器
);