Frage

ich fand Dies Tutorial über die Verwendung von WIA in C ++, aber ich verstehe nicht, wie ich es verwenden soll. Das Folgende ist nicht erfolgreich und ich nicht, was hier genau falsch ist. Grundsätzlich habe ich den Code aus dem Tutorial kopiert.

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); 
}

Übrigens verwende ich Windows 7 64-Bit, daher sollte die Verwendung von iwiadevmgr2 in Ordnung sein.

War es hilfreich?

Lösung

CreateWiadeVICEManager kehrt immer -2147221008 zurück

Das ist 0x800401F0, wenn Sie es als unsignierte Nummer interpretieren/anzeigen. Wie Sie sollten, ist Hresult kein signierter Typ. Aus der sdk -Datei winError.h:

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

Fügen Sie diese Zeile Ihrem Initialisierungscode hinzu:

CoInitialize(NULL);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top