【发布时间】:2010-05-18 13:55:47
【问题描述】:
这是一个代码sn-p
#include "stdafx.h"
#include <tchar.h>
#include <windows.h>
#include <dshow.h>
#include <ExDisp.h>
int _tmain(int argc, _TCHAR* argv[])
{
CoInitialize(NULL);
HRESULT hr = S_OK;
DWORD err = 0;
// Try to create graph builder
IGraphBuilder* pGraph = 0;
hr = CoCreateInstance(CLSID_FilterGraph, NULL,
CLSCTX_INPROC_SERVER, IID_IGraphBuilder, (void**)&pGraph );
err = GetLastError();
// Here, hr is E_ACCESSDENIED
// err is 5 (ERROR_ACCESS_DENIED)
// Try to create capture graph builder (succeeds)
ICaptureGraphBuilder2* pBuild = 0;
hr = CoCreateInstance(CLSID_CaptureGraphBuilder2, NULL, CLSCTX_INPROC_SERVER, IID_ICaptureGraphBuilder2, (void **)&pBuild );
err = GetLastError();
// Here, hr is S_OK
// err is 0 (ERROR_SUCCESS)
// Try to create IWebBrowser (succeeds)
IWebBrowser2* pBrowser = 0;
hr = CoCreateInstance (CLSID_InternetExplorer, NULL, CLSCTX_LOCAL_SERVER, IID_IWebBrowser2, (LPVOID *)&pBrowser);
err = GetLastError();
// Here, hr is S_OK
// err is 0 (ERROR_SUCCESS)
return 0;
}
我正在尝试创建 IFilterGraph,但由于 E_ACCESSDENIED 失败。另一方面,创建其他 directshow 对象也可以。与其他一些 COM 对象相同(以 IWebBrowser2 为例)。知道可能是什么问题吗?谢谢!
【问题讨论】:
标签: com directshow