Создание устройства

После того как приложение получает идентификатор заданного устройства, оно может вызвать метод IWiaDevMgr::CreateDevice или IWiaDevMgr2::CreateDevice, который создает иерархическое дерево объектов IWiaItem или IWiaItem2 , представляющих устройство обработки изображений, а также кровати сканирования изображений, а также папки, содержащиеся на этом устройстве.

В следующем примере из примера приложения WiaSSamp реализуется функция, которая принимает идентификатор устройства в качестве параметра. Сведения о том, как получить идентификатор устройства для конкретного устройства, см. в разделе Чтение свойств устройства.

    //XP or earlier:
    HRESULT CreateWiaDevice( IWiaDevMgr *pWiaDevMgr, BSTR bstrDeviceID, IWiaItem **ppWiaDevice ) 
    //Vista or later:
    HRESULT CreateWiaDevice( IWiaDevMgr2 *pWiaDevMgr, BSTR bstrDeviceID, IWiaItem2 **ppWiaDevice ) 
    {
        //
        // Validate arguments
        //
        if (NULL == pWiaDevMgr || NULL == bstrDeviceID || NULL == ppWiaDevice)
        {
            return E_INVALIDARG;
        }

        //
        // Initialize out variables
        //
        *ppWiaDevice = NULL;

        //
        // Create the WIA Device
        //
        HRESULT hr = pWiaDevMgr->CreateDevice( bstrDeviceID, ppWiaDevice );

        //
        // Return the result of creating the device
        //
        return hr;
    }

В этом примере pWiaDevMgr является указателем на интерфейс IWiaDevMgr или IWiaDevMgr2 , а ppWiaDevice — это переменная, которая после вызова IWiaDevMgr::CreateDevice (или IWiaDevMgr2::CreateDevice) содержит адрес указателя на корневой элемент дерева, представляющего только что созданное устройство.