iWICMetadataQueryReader 接口 (wincodec.h)

公开用于使用元数据查询表达式从解码器或其图像帧检索元数据块和项的方法。

继承

IWICMetadataQueryReader 接口继承自 IUnknown 接口。 IWICMetadataQueryReader 还具有以下类型的成员:

方法

IWICMetadataQueryReader 接口包含以下方法。

 
IWICMetadataQueryReader::GetContainerFormat

获取元数据查询读取器容器格式。
IWICMetadataQueryReader::GetEnumerator

获取元数据层次结构中当前相对位置的所有元数据项的枚举器。
IWICMetadataQueryReader::GetLocation

检索相对于根元数据块的当前路径。
IWICMetadataQueryReader::GetMetadataByName

检索元数据查询表达式标识的元数据块或项。

注解

元数据查询读取器使用元数据查询表达式来访问嵌入的元数据。 有关元数据查询语言的详细信息,请参阅 元数据查询语言概述

查询读取器的优点是能够在一个步骤中访问元数据项。

查询读取器还提供在 GetEnumerator 方法的帮助下遍历整个元数据层次结构集的方法。 但是,不建议使用此方法,因为 IWICMetadataBlockReaderIWICMetadataReader 提供了更方便、更便宜的方式。

示例

以下代码演示如何获取查询读取器并使用它来检索元数据项。

// Get the query reader
if (SUCCEEDED(hr))
{
    hr = pFrameDecode->GetMetadataQueryReader(&pQueryReader);
}

if (SUCCEEDED(hr))
{
    hr = pQueryReader->GetMetadataByName(L"/app1/ifd/{ushort=18249}", &value);
    PropVariantClear(&value);
}

以下代码演示如何获取查询读取器,并使用它来检索嵌套的元数据块。

// Get the query reader
if (SUCCEEDED(hr))
{
    hr = pFrameDecode->GetMetadataQueryReader(&pQueryReader);
}

if (SUCCEEDED(hr))
{
    // Get the embedded IFD reader
    hr = pQueryReader->GetMetadataByName(L"/app1/ifd", &value);
    if (value.vt == VT_UNKNOWN)
    {
        hr = value.punkVal->QueryInterface(IID_IWICMetadataQueryReader, (void **)&pEmbedReader);
    }
    PropVariantClear(&value); // Clear value for new query
}

要求

要求
最低受支持的客户端 Windows XP SP2、Windows Vista [桌面应用 |UWP 应用]
最低受支持的服务器 Windows Server 2008 [桌面应用 | UWP 应用]
目标平台 Windows
标头 wincodec.h

请参阅

概念性

元数据查询语言概述

读取和写入图像元数据概述

WIC 元数据概述