Compartilhar via


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.