[問題] directshow 的問題
遇到的問題: (題意請描述清楚)
這是在msdn上的一小段程式碼
我執行時總是得到Error Creating Device Enumerator
表示我的下面這行沒有執行成功
hr = CoCreateInstance(CLSID_SystemDeviceEnum, NULL, CLSCTX_INPROC_SERVER,
IID_ICreateDevEnum, (void **)&pSysDevEnum);
這是為什麼呢?
我有跑過它上面的sample AMCap ,是可以跑的
表示這同樣的一行程式碼在我的電腦上可以正常執行
但是為什麼像下面這樣子寫就不能正常執行了呢?
希望得到的正確結果:
程式跑出來的錯誤結果:
開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux)
VC++2008 windows vista
有問題的code: (請善用置底文標色功能)
#include "stdafx.h"
#include <dshow.h>
#pragma comment(lib, "Strmiids.lib")
void ErrMsg(LPTSTR szFormat,...);
HWND ghwndApp=0;
int main(int argc, _TCHAR* argv[])
{
// Create the System Device Enumerator.
HRESULT hr;
ICreateDevEnum *pSysDevEnum = NULL;
hr = CoCreateInstance(CLSID_SystemDeviceEnum, NULL, CLSCTX_INPROC_SERVER,
IID_ICreateDevEnum, (void **)&pSysDevEnum);
if (FAILED(hr))
{
ErrMsg(TEXT("Error Creating Device Enumerator"));
}
}
void ErrMsg(LPTSTR szFormat,...)
{
static TCHAR szBuffer[2048]={0};
const size_t NUMCHARS = sizeof(szBuffer) / sizeof(szBuffer[0]);
const int LASTCHAR = NUMCHARS - 1;
// Format the input string
va_list pArgs;
va_start(pArgs, szFormat);
// Use a bounded buffer size to prevent buffer overruns. Limit count to
// character size minus one to allow for a NULL terminating character.
HRESULT hr = StringCchVPrintf(szBuffer, NUMCHARS - 1, szFormat, pArgs);
va_end(pArgs);
// Ensure that the formatted string is NULL-terminated
szBuffer[LASTCHAR] = TEXT('\0');
MessageBox(ghwndApp, szBuffer, NULL,
MB_OK | MB_ICONEXCLAMATION | MB_TASKMODAL);
}
補充說明:
謝謝!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 124.11.137.119
→
04/06 19:19, , 1F
04/06 19:19, 1F
→
04/06 19:53, , 2F
04/06 19:53, 2F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章