Erstellen eines WIA-Geräte-Manager
Der erste Schritt bei der Verwendung von WIA-Diensten (Windows Image Acquisition) besteht darin, einen IWiaDevMgr-Schnittstellenzeiger (wenn Sie für Windows XP oder früher programmieren) oder einen IWiaDevMgr2-Schnittstellenzeiger (wenn Sie für Windows Vista oder höher programmieren) abzurufen. Rufen Sie dazu CoCreateInstance mit den entsprechenden Parametern auf. Die Beispielanwendung WiaSSamp erstellt einen Geräte-Manager innerhalb einer globalen Funktion, die durch den folgenden Code implementiert wird:
HRESULT CreateWiaDeviceManager( IWiaDevMgr **ppWiaDevMgr ) //XP or earlier
HRESULT CreateWiaDeviceManager( IWiaDevMgr2 **ppWiaDevMgr ) //Vista or later
{
//
// Validate arguments
//
if (NULL == ppWiaDevMgr)
{
return E_INVALIDARG;
}
//
// Initialize out variables
//
*ppWiaDevMgr = NULL;
//
// Create an instance of the device manager
//
//XP or earlier:
HRESULT hr = CoCreateInstance( CLSID_WiaDevMgr, NULL, CLSCTX_LOCAL_SERVER, IID_IWiaDevMgr, (void**)ppWiaDevMgr );
//Vista or later:
HRESULT hr = CoCreateInstance( CLSID_WiaDevMgr2, NULL, CLSCTX_LOCAL_SERVER, IID_IWiaDevMgr2, (void**)ppWiaDevMgr );
//
// Return the result of creating the device manager
//
return hr;
}
In diesem Beispiel sind CLSID_WiaDevMgr und IID_IWiaDevMgr WIA-Konstanten, die die Klassen-ID bzw. die Schnittstellen-ID von IWiaDevMgr darstellen. CLSID_WiaDevMgr2 und IID_IWiaDevMgr2 sind WIA-Konstanten, die die Klassen-ID bzw. die Schnittstellen-ID von IWiaDevMgr2 darstellen.
Der Wert für das argument dwClsContext des CoCreateInstance-Aufrufs muss CLSCTX_LOCAL_SERVER sein. Kein anderer Servertyp wird unterstützt, und das Com-Objektmodell (Component Object Model) lehnt jeden anderen Wert für diesen Parameter ab.