WPD получить размеры носителя

Я хочу получить ширину и высоту файла изображения на WPD через IPortableDeviceValues.

Согласно Центра разработки для Windows каждый объект, тип которого WPD_CONTENT_TYPE_IMAGE (которым они и являются), требует предоставления WPD_MEDIA_WIDTH/WPD_MEDIA_HEIGHT, но я всегда получаю сообщение об ошибке.

HRESULT MyPortableDevice::getIntValue(IPortableDeviceProperties* properties, PCWSTR objectID, const PROPERTYKEY& key, DWORD* value)
{

ComPtr<IPortableDeviceValues>        objectProperties;
ComPtr<IPortableDeviceKeyCollection> propertiesToRead;

HRESULT hr = CoCreateInstance(CLSID_PortableDeviceKeyCollection,
                              nullptr,
                              CLSCTX_INPROC_SERVER,
                              IID_PPV_ARGS(&propertiesToRead));

if (SUCCEEDED(hr)) {
    HRESULT tempHr = S_OK;
    tempHr = propertiesToRead->Add(key);      
}

if (SUCCEEDED(hr)) {
    hr = properties->GetValues(objectID,                
                               propertiesToRead.Get(),  
                               &objectProperties); 
}   

if (SUCCEEDED(hr)) {

    ULONG intValue = 0;
    hr = objectProperties->GetUnsignedIntegerValue(key, &intValue);

    if (SUCCEEDED(hr)) {          
        value = &intValue;
        intValue = 0;
    }            
}

return hr;

Я всегда получаю значение ошибки от

hr = objectProperties->GetUnsignedIntegerValue(key, &intValue);

hr = 0x80070490, и я не могу найти этот код ошибки здесь

Кто-нибудь знает, что случилось?


person RobRobRob    schedule 20.12.2017    source источник


Ответы (1)


Вы получили следующее сообщение об ошибке: Код ошибки: (HRESULT) 0x80070490 (2147943568) — элемент не найден.

Причина, по которой вы получили эту ошибку, скорее всего, заключается в том, что на самом деле разработчики приложений для телефонов обычно просто игнорируют некоторые свойства.

Я подключил свой телефон к ПК и проверил некоторые изображения с помощью Информационный инструмент WPD , и я получаю только такие поля для скриншота .jpg: введите здесь описание изображения

Я думаю, что в большинстве случаев вам нужно читать содержимое изображения для потоковой передачи и напрямую проверять его параметры. Возможно, в некоторых форматах вы можете прочитать только часть «заголовка» и получить оттуда WIDTH и HEIGHT.

person Arthur Bulakaiev    schedule 17.01.2018