Создание диспетчер устройств WIA
Первым шагом в использовании служб получения образов Windows (WIA) является получение указателя интерфейса IWiaDevMgr (при программировании для Windows XP или более ранней версии) или указателя интерфейса IWiaDevMgr2 (при программировании для Windows Vista или более поздней версии). Для этого вызовите CoCreateInstance с соответствующими параметрами. Пример приложения WiaSSamp создает диспетчер устройств в глобальной функции, реализованной в следующем коде:
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;
}
В этом примере CLSID_WiaDevMgr и IID_IWiaDevMgr являются константами WIA, которые представляют идентификатор класса и идентификатор интерфейса IWiaDevMgr соответственно. CLSID_WiaDevMgr2 и IID_IWiaDevMgr2 — это константы WIA, представляющие идентификатор класса и идентификатор интерфейса IWiaDevMgr2 соответственно.
Значение аргумента dwClsContext вызова CoCreateInstance должно быть CLSCTX_LOCAL_SERVER. Другой тип сервера не поддерживается, и модель COM отклоняет любое другое значение для этого параметра.