2012-01-10 1 views
0

C++에서 WIA를 사용하는 방법에 대한 자습서가 this인데 사용 방법을 모르겠습니다. 다음은 성공하지 못하며 여기서 정확히 무엇이 잘못되었는지는 알지 못합니다. 기본적으로 튜토리얼의 코드를 복사했습니다. 그런데 C++에서 WIA를 사용하는 방법은 무엇입니까?

void init() { 
    IWiaDevMgr2* devMgr; 
    HRESULT hr = createWiaDeviceManager(&devMgr); 

    if(!SUCCEEDED(hr)) 
    { 
     std::cout << "couldn't create WIA Device Manager!\n"; 
     return; 
    } 
    ... 
} 

HRESULT createWiaDeviceManager(IWiaDevMgr2** devMgr) 
{ 
    if(devMgr == 0) return E_INVALIDARG; 

    *devMgr = 0; 

    return CoCreateInstance(CLSID_WiaDevMgr2, 0, CLSCTX_LOCAL_SERVER, IID_IWiaDevMgr2, (void**)devMgr); 
} 

, 내가 지금 잘해야한다 IWiaDevMgr2를 사용하여 윈도우 7 64 비트를 사용하고 있습니다.

+0

"그것은 성공하지 못한"적절한 문제 설명이 아니다. –

+0

createWiaDeviceManager는 항상'-2147221008'를 반환합니다. – Pedro

답변

3

createWiaDeviceManager은 항상 당신이/해석 부호없는 숫자로 표시 할 때 0x800401f0의 -2147221008

를 반환합니다. HRESULT는 서명 된 형식이 아닙니다. WINERROR.H SDK 파일에서 :

// 
// MessageId: CO_E_NOTINITIALIZED 
// 
// MessageText: 
// 
// CoInitialize has not been called. 
// 
#define CO_E_NOTINITIALIZED    _HRESULT_TYPEDEF_(0x800401F0L) 

는 초기화 코드이 줄을 추가

CoInitialize(NULL);