Criando um Gerenciador de Dispositivos WIA
A primeira etapa no uso de serviços wia (aquisição de imagens do Windows) é obter um ponteiro de interface IWiaDevMgr (se você estiver programando para Windows XP ou anterior) ou um ponteiro de interface IWiaDevMgr2 (se você estiver programando para o Windows Vista ou posterior). Para fazer isso, chame CoCreateInstance com os parâmetros apropriados. O aplicativo de exemplo WiaSSamp cria um gerenciador de dispositivos dentro de uma função global implementada pelo seguinte código:
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;
}
Neste exemplo, CLSID_WiaDevMgr e IID_IWiaDevMgr são constantes WIA que representam a ID da classe e a ID da interface de IWiaDevMgr, respectivamente. CLSID_WiaDevMgr2 e IID_IWiaDevMgr2 são constantes WIA que representam a ID da classe e a ID da interface de IWiaDevMgr2, respectivamente.
O valor do argumento dwClsContext da chamada CoCreateInstance deve ser CLSCTX_LOCAL_SERVER. Nenhum outro tipo de servidor tem suporte e o COM (Component Object Model) rejeita qualquer outro valor para esse parâmetro.