ReactOS 0.4.15-dev-7889-g76290a6
metadataquery.c File Reference
#include "config.h"
#include <stdarg.h>
#include "windef.h"
#include "winbase.h"
#include "objbase.h"
#include "propvarutil.h"
#include "wincodecs_private.h"
#include "wine/debug.h"
Include dependency graph for metadataquery.c:

Go to the source code of this file.

Classes

struct  QueryReader
 
struct  string_t
 

Macros

#define COBJMACROS
 
#define NONAMELESSUNION
 

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (wincodecs)
 
static const WCHARmap_shortname_to_schema (const GUID *format, const WCHAR *name)
 
static QueryReaderimpl_from_IWICMetadataQueryReader (IWICMetadataQueryReader *iface)
 
static HRESULT WINAPI mqr_QueryInterface (IWICMetadataQueryReader *iface, REFIID riid, void **ppvObject)
 
static ULONG WINAPI mqr_AddRef (IWICMetadataQueryReader *iface)
 
static ULONG WINAPI mqr_Release (IWICMetadataQueryReader *iface)
 
static HRESULT WINAPI mqr_GetContainerFormat (IWICMetadataQueryReader *iface, GUID *format)
 
static HRESULT WINAPI mqr_GetLocation (IWICMetadataQueryReader *iface, UINT len, WCHAR *location, UINT *ret_len)
 
static VARTYPE map_type (struct string_t *str)
 
static HRESULT get_token (struct string_t *elem, PROPVARIANT *id, PROPVARIANT *schema, int *idx)
 
static HRESULT find_reader_from_block (IWICMetadataBlockReader *block_reader, UINT index, GUID *guid, IWICMetadataReader **reader)
 
static HRESULT get_next_reader (IWICMetadataReader *reader, UINT index, GUID *guid, IWICMetadataReader **new_reader)
 
static HRESULT WINAPI mqr_GetMetadataByName (IWICMetadataQueryReader *iface, LPCWSTR query, PROPVARIANT *value)
 
static HRESULT WINAPI mqr_GetEnumerator (IWICMetadataQueryReader *iface, IEnumString **ppIEnumString)
 
HRESULT MetadataQueryReader_CreateInstance (IWICMetadataBlockReader *mbr, const WCHAR *root, IWICMetadataQueryReader **out)
 
HRESULT WINAPI WICMapGuidToShortName (REFGUID guid, UINT len, WCHAR *name, UINT *ret_len)
 
HRESULT WINAPI WICMapShortNameToGuid (PCWSTR name, GUID *guid)
 
HRESULT WINAPI WICMapSchemaToName (REFGUID format, LPWSTR schema, UINT len, WCHAR *name, UINT *ret_len)
 

Variables

struct {
   int   len
 
   WCHAR   str [10]
 
   VARTYPE   vt
 
str2vt []
 
static IWICMetadataQueryReaderVtbl mqr_vtbl
 
static const WCHAR bmpW [] = { 'b','m','p',0 }
 
static const WCHAR pngW [] = { 'p','n','g',0 }
 
static const WCHAR icoW [] = { 'i','c','o',0 }
 
static const WCHAR jpgW [] = { 'j','p','g',0 }
 
static const WCHAR tiffW [] = { 't','i','f','f',0 }
 
static const WCHAR gifW [] = { 'g','i','f',0 }
 
static const WCHAR wmphotoW [] = { 'w','m','p','h','o','t','o',0 }
 
static const WCHAR unknownW [] = { 'u','n','k','n','o','w','n',0 }
 
static const WCHAR ifdW [] = { 'i','f','d',0 }
 
static const WCHAR subW [] = { 's','u','b',0 }
 
static const WCHAR exifW [] = { 'e','x','i','f',0 }
 
static const WCHAR gpsW [] = { 'g','p','s',0 }
 
static const WCHAR interopW [] = { 'i','n','t','e','r','o','p',0 }
 
static const WCHAR app0W [] = { 'a','p','p','0',0 }
 
static const WCHAR app1W [] = { 'a','p','p','1',0 }
 
static const WCHAR app13W [] = { 'a','p','p','1','3',0 }
 
static const WCHAR iptcW [] = { 'i','p','t','c',0 }
 
static const WCHAR irbW [] = { 'i','r','b',0 }
 
static const WCHAR _8bimiptcW [] = { '8','b','i','m','i','p','t','c',0 }
 
static const WCHAR _8bimResInfoW [] = { '8','b','i','m','R','e','s','I','n','f','o',0 }
 
static const WCHAR _8bimiptcdigestW [] = { '8','b','i','m','i','p','t','c','d','i','g','e','s','t',0 }
 
static const WCHAR xmpW [] = { 'x','m','p',0 }
 
static const WCHAR thumbW [] = { 't','h','u','m','b',0 }
 
static const WCHAR tEXtW [] = { 't','E','X','t',0 }
 
static const WCHAR xmpstructW [] = { 'x','m','p','s','t','r','u','c','t',0 }
 
static const WCHAR xmpbagW [] = { 'x','m','p','b','a','g',0 }
 
static const WCHAR xmpseqW [] = { 'x','m','p','s','e','q',0 }
 
static const WCHAR xmpaltW [] = { 'x','m','p','a','l','t',0 }
 
static const WCHAR logscrdescW [] = { 'l','o','g','s','c','r','d','e','s','c',0 }
 
static const WCHAR imgdescW [] = { 'i','m','g','d','e','s','c',0 }
 
static const WCHAR grctlextW [] = { 'g','r','c','t','l','e','x','t',0 }
 
static const WCHAR appextW [] = { 'a','p','p','e','x','t',0 }
 
static const WCHAR chrominanceW [] = { 'c','h','r','o','m','i','n','a','n','c','e',0 }
 
static const WCHAR luminanceW [] = { 'l','u','m','i','n','a','n','c','e',0 }
 
static const WCHAR comW [] = { 'c','o','m',0 }
 
static const WCHAR commentextW [] = { 'c','o','m','m','e','n','t','e','x','t',0 }
 
static const WCHAR gAMAW [] = { 'g','A','M','A',0 }
 
static const WCHAR bKGDW [] = { 'b','K','G','D',0 }
 
static const WCHAR iTXtW [] = { 'i','T','X','t',0 }
 
static const WCHAR cHRMW [] = { 'c','H','R','M',0 }
 
static const WCHAR hISTW [] = { 'h','I','S','T',0 }
 
static const WCHAR iCCPW [] = { 'i','C','C','P',0 }
 
static const WCHAR sRGBW [] = { 's','R','G','B',0 }
 
static const WCHAR tIMEW [] = { 't','I','M','E',0 }
 
struct {
   const GUID *   guid
 
   const WCHAR *   name
 
guid2name []
 
static const WCHAR rdf [] = { 'r','d','f',0 }
 
static const WCHAR rdf_scheme [] = { 'h','t','t','p',':','/','/','w','w','w','.','w','3','.','o','r','g','/','1','9','9','9','/','0','2','/','2','2','-','r','d','f','-','s','y','n','t','a','x','-','n','s','#',0 }
 
static const WCHAR dc [] = { 'd','c',0 }
 
static const WCHAR dc_scheme [] = { 'h','t','t','p',':','/','/','p','u','r','l','.','o','r','g','/','d','c','/','e','l','e','m','e','n','t','s','/','1','.','1','/',0 }
 
static const WCHAR xmp [] = { 'x','m','p',0 }
 
static const WCHAR xmp_scheme [] = { 'h','t','t','p',':','/','/','n','s','.','a','d','o','b','e','.','c','o','m','/','x','a','p','/','1','.','0','/',0 }
 
static const WCHAR xmpidq [] = { 'x','m','p','i','d','q',0 }
 
static const WCHAR xmpidq_scheme [] = { 'h','t','t','p',':','/','/','n','s','.','a','d','o','b','e','.','c','o','m','/','x','m','p','/','I','d','e','n','t','i','f','i','e','r','/','q','u','a','l','/','1','.','0','/',0 }
 
static const WCHAR xmpRights [] = { 'x','m','p','R','i','g','h','t','s',0 }
 
static const WCHAR xmpRights_scheme [] = { 'h','t','t','p',':','/','/','n','s','.','a','d','o','b','e','.','c','o','m','/','x','a','p','/','1','.','0','/','r','i','g','h','t','s','/',0 }
 
static const WCHAR xmpMM [] = { 'x','m','p','M','M',0 }
 
static const WCHAR xmpMM_scheme [] = { 'h','t','t','p',':','/','/','n','s','.','a','d','o','b','e','.','c','o','m','/','x','a','p','/','1','.','0','/','m','m','/',0 }
 
static const WCHAR xmpBJ [] = { 'x','m','p','B','J',0 }
 
static const WCHAR xmpBJ_scheme [] = { 'h','t','t','p',':','/','/','n','s','.','a','d','o','b','e','.','c','o','m','/','x','a','p','/','1','.','0','/','b','j','/',0 }
 
static const WCHAR xmpTPg [] = { 'x','m','p','T','P','g',0 }
 
static const WCHAR xmpTPg_scheme [] = { 'h','t','t','p',':','/','/','n','s','.','a','d','o','b','e','.','c','o','m','/','x','a','p','/','1','.','0','/','t','/','p','g','/',0 }
 
static const WCHAR pdf [] = { 'p','d','f',0 }
 
static const WCHAR pdf_scheme [] = { 'h','t','t','p',':','/','/','n','s','.','a','d','o','b','e','.','c','o','m','/','p','d','f','/','1','.','3','/',0 }
 
static const WCHAR photoshop [] = { 'p','h','o','t','o','s','h','o','p',0 }
 
static const WCHAR photoshop_scheme [] = { 'h','t','t','p',':','/','/','n','s','.','a','d','o','b','e','.','c','o','m','/','p','h','o','t','o','s','h','o','p','/','1','.','0','/',0 }
 
static const WCHAR tiff [] = { 't','i','f','f',0 }
 
static const WCHAR tiff_scheme [] = { 'h','t','t','p',':','/','/','n','s','.','a','d','o','b','e','.','c','o','m','/','t','i','f','f','/','1','.','0','/',0 }
 
static const WCHAR exif [] = { 'e','x','i','f',0 }
 
static const WCHAR exif_scheme [] = { 'h','t','t','p',':','/','/','n','s','.','a','d','o','b','e','.','c','o','m','/','e','x','i','f','/','1','.','0','/',0 }
 
static const WCHAR stDim [] = { 's','t','D','i','m',0 }
 
static const WCHAR stDim_scheme [] = { 'h','t','t','p',':','/','/','n','s','.','a','d','o','b','e','.','c','o','m','/','x','a','p','/','1','.','0','/','s','T','y','p','e','/','D','i','m','e','n','s','i','o','n','s','#',0 }
 
static const WCHAR xapGImg [] = { 'x','a','p','G','I','m','g',0 }
 
static const WCHAR xapGImg_scheme [] = { 'h','t','t','p',':','/','/','n','s','.','a','d','o','b','e','.','c','o','m','/','x','a','p','/','1','.','0','/','g','/','i','m','g','/',0 }
 
static const WCHAR stEvt [] = { 's','t','E','v','t',0 }
 
static const WCHAR stEvt_scheme [] = { 'h','t','t','p',':','/','/','n','s','.','a','d','o','b','e','.','c','o','m','/','x','a','p','/','1','.','0','/','s','T','y','p','e','/','R','e','s','o','u','r','c','e','E','v','e','n','t','#',0 }
 
static const WCHAR stRef [] = { 's','t','R','e','f',0 }
 
static const WCHAR stRef_scheme [] = { 'h','t','t','p',':','/','/','n','s','.','a','d','o','b','e','.','c','o','m','/','x','a','p','/','1','.','0','/','s','T','y','p','e','/','R','e','s','o','u','r','c','e','R','e','f','#',0 }
 
static const WCHAR stVer [] = { 's','t','V','e','r',0 }
 
static const WCHAR stVer_scheme [] = { 'h','t','t','p',':','/','/','n','s','.','a','d','o','b','e','.','c','o','m','/','x','a','p','/','1','.','0','/','s','T','y','p','e','/','V','e','r','s','i','o','n','#',0 }
 
static const WCHAR stJob [] = { 's','t','J','o','b',0 }
 
static const WCHAR stJob_scheme [] = { 'h','t','t','p',':','/','/','n','s','.','a','d','o','b','e','.','c','o','m','/','x','a','p','/','1','.','0','/','s','T','y','p','e','/','J','o','b','#',0 }
 
static const WCHAR aux [] = { 'a','u','x',0 }
 
static const WCHAR aux_scheme [] = { 'h','t','t','p',':','/','/','n','s','.','a','d','o','b','e','.','c','o','m','/','e','x','i','f','/','1','.','0','/','a','u','x','/',0 }
 
static const WCHAR crs [] = { 'c','r','s',0 }
 
static const WCHAR crs_scheme [] = { 'h','t','t','p',':','/','/','n','s','.','a','d','o','b','e','.','c','o','m','/','c','a','m','e','r','a','-','r','a','w','-','s','e','t','t','i','n','g','s','/','1','.','0','/',0 }
 
static const WCHAR xmpDM [] = { 'x','m','p','D','M',0 }
 
static const WCHAR xmpDM_scheme [] = { 'h','t','t','p',':','/','/','n','s','.','a','d','o','b','e','.','c','o','m','/','x','m','p','/','1','.','0','/','D','y','n','a','m','i','c','M','e','d','i','a','/',0 }
 
static const WCHAR Iptc4xmpCore [] = { 'I','p','t','c','4','x','m','p','C','o','r','e',0 }
 
static const WCHAR Iptc4xmpCore_scheme [] = { 'h','t','t','p',':','/','/','i','p','t','c','.','o','r','g','/','s','t','d','/','I','p','t','c','4','x','m','p','C','o','r','e','/','1','.','0','/','x','m','l','n','s','/',0 }
 
static const WCHAR MicrosoftPhoto [] = { 'M','i','c','r','o','s','o','f','t','P','h','o','t','o',0 }
 
static const WCHAR MicrosoftPhoto_scheme [] = { 'h','t','t','p',':','/','/','n','s','.','m','i','c','r','o','s','o','f','t','.','c','o','m','/','p','h','o','t','o','/','1','.','0','/',0 }
 
static const WCHAR MP [] = { 'M','P',0 }
 
static const WCHAR MP_scheme [] = { 'h','t','t','p',':','/','/','n','s','.','m','i','c','r','o','s','o','f','t','.','c','o','m','/','p','h','o','t','o','/','1','.','2','/',0 }
 
static const WCHAR MPRI [] = { 'M','P','R','I',0 }
 
static const WCHAR MPRI_scheme [] = { 'h','t','t','p',':','/','/','n','s','.','m','i','c','r','o','s','o','f','t','.','c','o','m','/','p','h','o','t','o','/','1','.','2','/','t','/','R','e','g','i','o','n','I','n','f','o','#',0 }
 
static const WCHAR MPReg [] = { 'M','P','R','e','g',0 }
 
static const WCHAR MPReg_scheme [] = { 'h','t','t','p',':','/','/','n','s','.','m','i','c','r','o','s','o','f','t','.','c','o','m','/','p','h','o','t','o','/','1','.','2','/','t','/','R','e','g','i','o','n','#',0 }
 
struct {
   const WCHAR *   name
 
   const WCHAR *   schema
 
name2schema []
 

Macro Definition Documentation

◆ COBJMACROS

#define COBJMACROS

Definition at line 24 of file metadataquery.c.

◆ NONAMELESSUNION

#define NONAMELESSUNION

Definition at line 25 of file metadataquery.c.

Function Documentation

◆ find_reader_from_block()

static HRESULT find_reader_from_block ( IWICMetadataBlockReader block_reader,
UINT  index,
GUID guid,
IWICMetadataReader **  reader 
)
static

Definition at line 376 of file metadataquery.c.

378{
379 HRESULT hr;
380 GUID format;
381 IWICMetadataReader *new_reader;
382 UINT count, i, matched_index;
383
384 *reader = NULL;
385
386 hr = IWICMetadataBlockReader_GetCount(block_reader, &count);
387 if (hr != S_OK) return hr;
388
389 matched_index = 0;
390
391 for (i = 0; i < count; i++)
392 {
393 hr = IWICMetadataBlockReader_GetReaderByIndex(block_reader, i, &new_reader);
394 if (hr != S_OK) return hr;
395
396 hr = IWICMetadataReader_GetMetadataFormat(new_reader, &format);
397 if (hr == S_OK)
398 {
399 if (IsEqualGUID(&format, guid))
400 {
401 if (matched_index == index)
402 {
403 *reader = new_reader;
404 return S_OK;
405 }
406
407 matched_index++;
408 }
409 }
410
411 IWICMetadataReader_Release(new_reader);
412 if (hr != S_OK) return hr;
413 }
414
416}
#define NULL
Definition: types.h:112
GLuint GLuint GLsizei count
Definition: gl.h:1545
GLint GLint GLsizei GLsizei GLsizei GLint GLenum format
Definition: gl.h:1546
GLuint index
Definition: glext.h:6031
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
#define S_OK
Definition: intsafe.h:52
const GUID * guid
unsigned int UINT
Definition: ndis.h:50
#define IsEqualGUID(rguid1, rguid2)
Definition: guiddef.h:147
HRESULT hr
Definition: shlfolder.c:183
Definition: reader.h:84
#define WINCODEC_ERR_PROPERTYNOTFOUND
Definition: winerror.h:3287

Referenced by mqr_GetMetadataByName().

◆ get_next_reader()

static HRESULT get_next_reader ( IWICMetadataReader reader,
UINT  index,
GUID guid,
IWICMetadataReader **  new_reader 
)
static

Definition at line 418 of file metadataquery.c.

420{
421 HRESULT hr;
422 PROPVARIANT schema, id, value;
423
424 *new_reader = NULL;
425
426 PropVariantInit(&schema);
427 PropVariantInit(&id);
428 PropVariantInit(&value);
429
430 if (index)
431 {
432 schema.vt = VT_UI2;
433 schema.u.uiVal = index;
434 }
435
436 id.vt = VT_CLSID;
437 id.u.puuid = guid;
438 hr = IWICMetadataReader_GetValue(reader, &schema, &id, &value);
439 if (hr != S_OK) return hr;
440
441 if (value.vt == VT_UNKNOWN)
442 hr = IUnknown_QueryInterface(value.u.punkVal, &IID_IWICMetadataReader, (void **)new_reader);
443 else
445
447 return hr;
448}
#define index(s, c)
Definition: various.h:29
@ VT_UNKNOWN
Definition: compat.h:2308
@ VT_UI2
Definition: compat.h:2312
@ VT_CLSID
Definition: compat.h:2337
HRESULT WINAPI PropVariantClear(PROPVARIANT *pvar)
Definition: ole2.c:2968
GLuint id
Definition: glext.h:5910
const WCHAR * schema
Definition: pdh_main.c:94
#define WINCODEC_ERR_UNEXPECTEDMETADATATYPE
Definition: winerror.h:3316

Referenced by mqr_GetMetadataByName().

◆ get_token()

static HRESULT get_token ( struct string_t elem,
PROPVARIANT *  id,
PROPVARIANT *  schema,
int idx 
)
static

Definition at line 182 of file metadataquery.c.

183{
184 const WCHAR *start, *end, *p;
185 WCHAR *bstr;
186 struct string_t next_elem;
187 HRESULT hr;
188
189 TRACE("%s, len %d\n", wine_dbgstr_wn(elem->str, elem->len), elem->len);
190
191 PropVariantInit(id);
192 PropVariantInit(schema);
193
194 if (!elem->len) return S_OK;
195
196 start = elem->str;
197
198 if (*start == '[')
199 {
200 WCHAR *idx_end;
201
202 if (start[1] < '0' || start[1] > '9') return DISP_E_TYPEMISMATCH;
203
204 *idx = strtolW(start + 1, &idx_end, 10);
205 if (idx_end > elem->str + elem->len) return WINCODEC_ERR_INVALIDQUERYREQUEST;
206 if (*idx_end != ']') return WINCODEC_ERR_INVALIDQUERYREQUEST;
207 if (*idx < 0) return WINCODEC_ERR_INVALIDQUERYREQUEST;
208 end = idx_end + 1;
209
210 next_elem.str = end;
211 next_elem.len = elem->len - (end - start);
212 hr = get_token(&next_elem, id, schema, idx);
213 if (hr != S_OK)
214 {
215 TRACE("get_token error %#x\n", hr);
216 return hr;
217 }
218 elem->len = (end - start) + next_elem.len;
219
220 TRACE("indexed %s [%d]\n", wine_dbgstr_wn(elem->str, elem->len), *idx);
221 return S_OK;
222 }
223 else if (*start == '{')
224 {
225 VARTYPE vt;
226 PROPVARIANT next_token;
227
228 end = memchrW(start + 1, '=', elem->len - 1);
230 if (end > elem->str + elem->len) return WINCODEC_ERR_INVALIDQUERYREQUEST;
231
232 next_elem.str = start + 1;
233 next_elem.len = end - start - 1;
234 vt = map_type(&next_elem);
235 TRACE("type %s => %d\n", wine_dbgstr_wn(next_elem.str, next_elem.len), vt);
237
238 next_token.vt = VT_BSTR;
239 next_token.u.bstrVal = SysAllocStringLen(NULL, elem->len - (end - start) + 1);
240 if (!next_token.u.bstrVal) return E_OUTOFMEMORY;
241
242 bstr = next_token.u.bstrVal;
243
244 end++;
245 while (*end && *end != '}' && end - start < elem->len)
246 {
247 if (*end == '\\') end++;
248 *bstr++ = *end++;
249 }
250 if (*end != '}')
251 {
254 }
255 *bstr = 0;
256 TRACE("schema/id %s\n", wine_dbgstr_w(next_token.u.bstrVal));
257
258 if (vt == VT_CLSID)
259 {
260 id->vt = VT_CLSID;
261 id->u.puuid = CoTaskMemAlloc(sizeof(GUID));
262 if (!id->u.puuid)
263 {
265 return E_OUTOFMEMORY;
266 }
267
268 hr = UuidFromStringW(next_token.u.bstrVal, id->u.puuid);
269 }
270 else
273 if (hr != S_OK)
274 {
277 return hr;
278 }
279
280 end++;
281 if (*end == ':')
282 {
283 PROPVARIANT next_id, next_schema;
284 int next_idx = 0;
285
286 next_elem.str = end + 1;
287 next_elem.len = elem->len - (end - start + 1);
288 hr = get_token(&next_elem, &next_id, &next_schema, &next_idx);
289 if (hr != S_OK)
290 {
291 TRACE("get_token error %#x\n", hr);
292 return hr;
293 }
294 elem->len = (end - start + 1) + next_elem.len;
295
296 TRACE("id %s [%d]\n", wine_dbgstr_wn(elem->str, elem->len), *idx);
297
298 if (next_schema.vt != VT_EMPTY)
299 {
300 PropVariantClear(&next_id);
301 PropVariantClear(&next_schema);
303 }
304
305 *schema = *id;
306 *id = next_id;
307
308 return S_OK;
309 }
310
311 elem->len = end - start;
312 return S_OK;
313 }
314
315 end = memchrW(start, '/', elem->len);
316 if (!end) end = start + elem->len;
317
318 p = memchrW(start, ':', end - start);
319 if (p)
320 {
321 next_elem.str = p + 1;
322 next_elem.len = end - p - 1;
323
324 elem->len = p - start;
325 }
326 else
327 elem->len = end - start;
328
329 id->vt = VT_BSTR;
330 id->u.bstrVal = SysAllocStringLen(NULL, elem->len + 1);
331 if (!id->u.bstrVal) return E_OUTOFMEMORY;
332
333 bstr = id->u.bstrVal;
334 p = elem->str;
335 while (p - elem->str < elem->len)
336 {
337 if (*p == '\\') p++;
338 *bstr++ = *p++;
339 }
340 *bstr = 0;
341 TRACE("%s [%d]\n", wine_dbgstr_variant((VARIANT *)id), *idx);
342
343 if (*p == ':')
344 {
345 PROPVARIANT next_id, next_schema;
346 int next_idx = 0;
347
348 hr = get_token(&next_elem, &next_id, &next_schema, &next_idx);
349 if (hr != S_OK)
350 {
351 TRACE("get_token error %#x\n", hr);
354 return hr;
355 }
356 elem->len += next_elem.len + 1;
357
358 TRACE("id %s [%d]\n", wine_dbgstr_wn(elem->str, elem->len), *idx);
359
360 if (next_schema.vt != VT_EMPTY)
361 {
362 PropVariantClear(&next_id);
363 PropVariantClear(&next_schema);
367 }
368
369 *schema = *id;
370 *id = next_id;
371 }
372
373 return S_OK;
374}
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
int next_token(char **, FILE *)
unsigned int idx
Definition: utils.c:41
const char * wine_dbgstr_wn(const WCHAR *str, int n)
Definition: compat.c:367
unsigned short VARTYPE
Definition: compat.h:2254
@ VT_BSTR
Definition: compat.h:2303
@ VT_ILLEGAL
Definition: compat.h:2344
@ VT_EMPTY
Definition: compat.h:2295
HRESULT WINAPI PropVariantChangeType(PROPVARIANT *ppropvarDest, REFPROPVARIANT propvarSrc, PROPVAR_CHANGE_FLAGS flags, VARTYPE vt)
Definition: propvar.c:428
GLuint start
Definition: gl.h:1545
GLuint GLuint end
Definition: gl.h:1545
GLfloat GLfloat p
Definition: glext.h:8902
GLenum GLsizei len
Definition: glext.h:6722
WINE_UNICODE_INLINE WCHAR * memchrW(const WCHAR *ptr, WCHAR ch, size_t n)
Definition: unicode.h:295
LPVOID WINAPI CoTaskMemAlloc(SIZE_T size)
Definition: ifs.c:426
#define wine_dbgstr_w
Definition: kernel32.h:34
static VARTYPE map_type(struct string_t *str)
static HRESULT get_token(struct string_t *elem, PROPVARIANT *id, PROPVARIANT *schema, int *idx)
VARTYPE vt
static size_t elem
Definition: string.c:68
BSTR WINAPI SysAllocStringLen(const OLECHAR *str, unsigned int len)
Definition: oleaut.c:339
#define strtolW(s, e, b)
Definition: unicode.h:33
RPC_STATUS WINAPI UuidFromStringW(RPC_WSTR s, UUID *uuid)
Definition: rpcrt4_main.c:614
#define TRACE(s)
Definition: solgame.cpp:4
#define WINCODEC_ERR_WRONGSTATE
Definition: winerror.h:3281
#define WINCODEC_ERR_INVALIDQUERYREQUEST
Definition: winerror.h:3315
#define DISP_E_TYPEMISMATCH
Definition: winerror.h:2514
__wchar_t WCHAR
Definition: xmlstorage.h:180

Referenced by get_token(), and mqr_GetMetadataByName().

◆ impl_from_IWICMetadataQueryReader()

static QueryReader * impl_from_IWICMetadataQueryReader ( IWICMetadataQueryReader iface)
inlinestatic

Definition at line 47 of file metadataquery.c.

48{
49 return CONTAINING_RECORD(iface, QueryReader, IWICMetadataQueryReader_iface);
50}
#define CONTAINING_RECORD(address, type, field)
Definition: typedefs.h:260

Referenced by mqr_AddRef(), mqr_GetContainerFormat(), mqr_GetEnumerator(), mqr_GetLocation(), mqr_GetMetadataByName(), mqr_QueryInterface(), and mqr_Release().

◆ map_shortname_to_schema()

static const WCHAR * map_shortname_to_schema ( const GUID format,
const WCHAR name 
)
static

Definition at line 875 of file metadataquery.c.

876{
877 UINT i;
878
879 /* It appears that the only metadata formats
880 * that support schemas are xmp and xmpstruct.
881 */
882 if (!IsEqualGUID(format, &GUID_MetadataFormatXMP) &&
883 !IsEqualGUID(format, &GUID_MetadataFormatXMPStruct))
884 return NULL;
885
886 for (i = 0; i < ARRAY_SIZE(name2schema); i++)
887 {
889 return name2schema[i].schema;
890 }
891
892 return NULL;
893}
#define ARRAY_SIZE(A)
Definition: main.h:33
int WINAPI lstrcmpW(LPCWSTR lpString1, LPCWSTR lpString2)
Definition: lstring.c:170
static const struct @594 name2schema[]
Definition: name.c:39

Referenced by mqr_GetMetadataByName().

◆ map_type()

static VARTYPE map_type ( struct string_t str)
static

Definition at line 163 of file metadataquery.c.

164{
165 UINT i;
166
167 for (i = 0; i < ARRAY_SIZE(str2vt); i++)
168 {
169 if (str2vt[i].len == str->len)
170 {
172 str->str, str->len, str2vt[i].str, str2vt[i].len) == CSTR_EQUAL)
173 return str2vt[i].vt;
174 }
175 }
176
177 WARN("type %s is not recognized\n", wine_dbgstr_wn(str->str, str->len));
178
179 return VT_ILLEGAL;
180}
#define WARN(fmt,...)
Definition: debug.h:112
INT WINAPI CompareStringW(LCID lcid, DWORD flags, LPCWSTR str1, INT len1, LPCWSTR str2, INT len2)
Definition: lang.c:2671
static const struct @592 str2vt[]
WCHAR str[10]
#define LOCALE_SYSTEM_DEFAULT
#define NORM_IGNORECASE
Definition: winnls.h:176
#define CSTR_EQUAL
Definition: winnls.h:456

Referenced by _STLP_STATIC_ASSERT(), and get_token().

◆ MetadataQueryReader_CreateInstance()

HRESULT MetadataQueryReader_CreateInstance ( IWICMetadataBlockReader mbr,
const WCHAR root,
IWICMetadataQueryReader **  out 
)

Definition at line 619 of file metadataquery.c.

620{
622
624 if (!obj)
625 return E_OUTOFMEMORY;
626
627 obj->IWICMetadataQueryReader_iface.lpVtbl = &mqr_vtbl;
628 obj->ref = 1;
629
630 IWICMetadataBlockReader_AddRef(mbr);
631 obj->block = mbr;
632
633 obj->root = root ? heap_strdupW(root) : NULL;
634
635 *out = &obj->IWICMetadataQueryReader_iface;
636
637 return S_OK;
638}
static WCHAR * heap_strdupW(const WCHAR *str)
Definition: propsheet.c:178
#define GetProcessHeap()
Definition: compat.h:736
#define HeapAlloc
Definition: compat.h:733
#define HEAP_ZERO_MEMORY
Definition: compat.h:134
static IWICMetadataQueryReaderVtbl mqr_vtbl
static FILE * out
Definition: regtests2xml.c:44

Referenced by ComponentFactory_CreateQueryReaderFromBlockReader(), GifDecoder_GetMetadataQueryReader(), GifFrameDecode_GetMetadataQueryReader(), and mqr_GetMetadataByName().

◆ mqr_AddRef()

static ULONG WINAPI mqr_AddRef ( IWICMetadataQueryReader iface)
static

Definition at line 74 of file metadataquery.c.

75{
78 TRACE("(%p) refcount=%u\n", This, ref);
79 return ref;
80}
#define InterlockedIncrement
Definition: armddk.h:53
static QueryReader * impl_from_IWICMetadataQueryReader(IWICMetadataQueryReader *iface)
Definition: metadataquery.c:47
Definition: send.c:48
uint32_t ULONG
Definition: typedefs.h:59

◆ mqr_GetContainerFormat()

static HRESULT WINAPI mqr_GetContainerFormat ( IWICMetadataQueryReader iface,
GUID format 
)
static

Definition at line 96 of file metadataquery.c.

97{
99
100 TRACE("(%p,%p)\n", This, format);
101
102 return IWICMetadataBlockReader_GetContainerFormat(This->block, format);
103}

◆ mqr_GetEnumerator()

static HRESULT WINAPI mqr_GetEnumerator ( IWICMetadataQueryReader iface,
IEnumString **  ppIEnumString 
)
static

Definition at line 601 of file metadataquery.c.

603{
605 FIXME("(%p,%p)\n", This, ppIEnumString);
606 return E_NOTIMPL;
607}
#define FIXME(fmt,...)
Definition: debug.h:111
#define E_NOTIMPL
Definition: ddrawi.h:99

◆ mqr_GetLocation()

static HRESULT WINAPI mqr_GetLocation ( IWICMetadataQueryReader iface,
UINT  len,
WCHAR location,
UINT ret_len 
)
static

Definition at line 105 of file metadataquery.c.

106{
107 static const WCHAR rootW[] = { '/',0 };
109 const WCHAR *root;
110 UINT actual_len;
111
112 TRACE("(%p,%u,%p,%p)\n", This, len, location, ret_len);
113
114 if (!ret_len) return E_INVALIDARG;
115
116 root = This->root ? This->root : rootW;
117 actual_len = lstrlenW(root) + 1;
118
119 if (location)
120 {
121 if (len < actual_len)
123
124 memcpy(location, root, actual_len * sizeof(WCHAR));
125 }
126
127 *ret_len = actual_len;
128
129 return S_OK;
130}
struct _root root
#define E_INVALIDARG
Definition: ddrawi.h:101
static const WCHAR rootW[]
Definition: chain.c:69
#define lstrlenW
Definition: compat.h:750
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
static JOBOBJECTINFOCLASS LPVOID DWORD LPDWORD ret_len
Definition: process.c:79
#define WINCODEC_ERR_INSUFFICIENTBUFFER
Definition: winerror.h:3311

◆ mqr_GetMetadataByName()

static HRESULT WINAPI mqr_GetMetadataByName ( IWICMetadataQueryReader iface,
LPCWSTR  query,
PROPVARIANT *  value 
)
static

Definition at line 450 of file metadataquery.c.

451{
453 struct string_t elem;
454 WCHAR *full_query;
455 const WCHAR *p;
456 int index, len;
457 PROPVARIANT tk_id, tk_schema, new_value;
458 GUID guid;
460 HRESULT hr = S_OK;
461
462 TRACE("(%p,%s,%p)\n", This, wine_dbgstr_w(query), value);
463
464 len = lstrlenW(query) + 1;
465 if (This->root) len += lstrlenW(This->root);
466 full_query = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR));
467 full_query[0] = 0;
468 if (This->root)
469 lstrcpyW(full_query, This->root);
470 lstrcatW(full_query, query);
471
472 PropVariantInit(&tk_id);
473 PropVariantInit(&tk_schema);
474 PropVariantInit(&new_value);
475
476 reader = NULL;
477 p = full_query;
478
479 while (*p)
480 {
481 if (*p != '/')
482 {
483 WARN("query should start with '/'\n");
485 break;
486 }
487
488 p++;
489
490 index = 0;
491 elem.str = p;
492 elem.len = lstrlenW(p);
493 hr = get_token(&elem, &tk_id, &tk_schema, &index);
494 if (hr != S_OK)
495 {
496 WARN("get_token error %#x\n", hr);
497 break;
498 }
499 TRACE("parsed %d characters: %s, index %d\n", elem.len, wine_dbgstr_wn(elem.str, elem.len), index);
500 TRACE("id %s, schema %s\n", wine_dbgstr_variant((VARIANT *)&tk_id), wine_dbgstr_variant((VARIANT *)&tk_schema));
501
502 if (!elem.len) break;
503
504 if (tk_id.vt == VT_CLSID || (tk_id.vt == VT_BSTR && WICMapShortNameToGuid(tk_id.u.bstrVal, &guid) == S_OK))
505 {
506 WCHAR *root;
507
508 if (tk_schema.vt != VT_EMPTY)
509 {
510 FIXME("unsupported schema vt %u\n", tk_schema.vt);
511 PropVariantClear(&tk_schema);
512 }
513
514 if (tk_id.vt == VT_CLSID) guid = *tk_id.u.puuid;
515
516 if (reader)
517 {
518 IWICMetadataReader *new_reader;
519
520 hr = get_next_reader(reader, index, &guid, &new_reader);
521 IWICMetadataReader_Release(reader);
522 reader = new_reader;
523 }
524 else
526
527 if (hr != S_OK) break;
528
529 root = SysAllocStringLen(NULL, elem.str + elem.len - full_query + 2);
530 if (!root)
531 {
533 break;
534 }
535 lstrcpynW(root, full_query, p - full_query + elem.len + 1);
536
537 PropVariantClear(&new_value);
538 new_value.vt = VT_UNKNOWN;
539 hr = MetadataQueryReader_CreateInstance(This->block, root, (IWICMetadataQueryReader **)&new_value.u.punkVal);
541 if (hr != S_OK) break;
542 }
543 else
544 {
545 PROPVARIANT schema, id;
546
547 if (!reader)
548 {
550 break;
551 }
552
553 if (tk_schema.vt == VT_BSTR)
554 {
555 hr = IWICMetadataReader_GetMetadataFormat(reader, &guid);
556 if (hr != S_OK) break;
557
558 schema.vt = VT_LPWSTR;
559 schema.u.pwszVal = (LPWSTR)map_shortname_to_schema(&guid, tk_schema.u.bstrVal);
560 if (!schema.u.pwszVal)
561 schema.u.pwszVal = tk_schema.u.bstrVal;
562 }
563 else
564 schema = tk_schema;
565
566 if (tk_id.vt == VT_BSTR)
567 {
568 id.vt = VT_LPWSTR;
569 id.u.pwszVal = tk_id.u.bstrVal;
570 }
571 else
572 id = tk_id;
573
574 PropVariantClear(&new_value);
575 hr = IWICMetadataReader_GetValue(reader, &schema, &id, &new_value);
576 if (hr != S_OK) break;
577 }
578
579 p += elem.len;
580
581 PropVariantClear(&tk_id);
582 PropVariantClear(&tk_schema);
583 }
584
585 if (reader)
586 IWICMetadataReader_Release(reader);
587
588 PropVariantClear(&tk_id);
589 PropVariantClear(&tk_schema);
590
591 if (hr == S_OK && value)
592 *value = new_value;
593 else
594 PropVariantClear(&new_value);
595
596 HeapFree(GetProcessHeap(), 0, full_query);
597
598 return hr;
599}
#define HeapFree(x, y, z)
Definition: compat.h:735
#define lstrcpyW
Definition: compat.h:749
@ VT_LPWSTR
Definition: compat.h:2325
#define lstrcpynW
Definition: compat.h:738
LPWSTR WINAPI lstrcatW(LPWSTR lpString1, LPCWSTR lpString2)
Definition: lstring.c:274
static const WCHAR * map_shortname_to_schema(const GUID *format, const WCHAR *name)
HRESULT MetadataQueryReader_CreateInstance(IWICMetadataBlockReader *mbr, const WCHAR *root, IWICMetadataQueryReader **out)
HRESULT WINAPI WICMapShortNameToGuid(PCWSTR name, GUID *guid)
static HRESULT get_next_reader(IWICMetadataReader *reader, UINT index, GUID *guid, IWICMetadataReader **new_reader)
static HRESULT find_reader_from_block(IWICMetadataBlockReader *block_reader, UINT index, GUID *guid, IWICMetadataReader **reader)
int len
void WINAPI DECLSPEC_HOTPATCH SysFreeString(BSTR str)
Definition: oleaut.c:271
BSTR bstrVal
Definition: compat.h:2399
VARTYPE vt
Definition: compat.h:2381
#define WINCODEC_ERR_PROPERTYNOTSUPPORTED
Definition: winerror.h:3288
WCHAR * LPWSTR
Definition: xmlstorage.h:184

◆ mqr_QueryInterface()

static HRESULT WINAPI mqr_QueryInterface ( IWICMetadataQueryReader iface,
REFIID  riid,
void **  ppvObject 
)
static

Definition at line 52 of file metadataquery.c.

54{
56
57 TRACE("(%p,%s,%p)\n", This, debugstr_guid(riid), ppvObject);
58
60 IsEqualGUID(riid, &IID_IWICMetadataQueryReader))
61 *ppvObject = &This->IWICMetadataQueryReader_iface;
62 else
63 *ppvObject = NULL;
64
65 if (*ppvObject)
66 {
67 IUnknown_AddRef((IUnknown*)*ppvObject);
68 return S_OK;
69 }
70
71 return E_NOINTERFACE;
72}
const GUID IID_IUnknown
REFIID riid
Definition: atlbase.h:39
#define debugstr_guid
Definition: kernel32.h:35
_In_ void _In_ PCCERT_CONTEXT _In_opt_ LPFILETIME _In_ DWORD _In_ DWORD _Outptr_opt_ void ** ppvObject
Definition: wincrypt.h:6082
#define E_NOINTERFACE
Definition: winerror.h:2364

◆ mqr_Release()

static ULONG WINAPI mqr_Release ( IWICMetadataQueryReader iface)
static

Definition at line 82 of file metadataquery.c.

83{
86 TRACE("(%p) refcount=%u\n", This, ref);
87 if (!ref)
88 {
89 IWICMetadataBlockReader_Release(This->block);
90 HeapFree(GetProcessHeap(), 0, This->root);
92 }
93 return ref;
94}
#define InterlockedDecrement
Definition: armddk.h:52

◆ WICMapGuidToShortName()

HRESULT WINAPI WICMapGuidToShortName ( REFGUID  guid,
UINT  len,
WCHAR name,
UINT ret_len 
)

Definition at line 737 of file metadataquery.c.

738{
739 UINT i;
740
741 TRACE("%s,%u,%p,%p\n", wine_dbgstr_guid(guid), len, name, ret_len);
742
743 if (!guid) return E_INVALIDARG;
744
745 for (i = 0; i < ARRAY_SIZE(guid2name); i++)
746 {
748 {
749 if (name)
750 {
751 if (!len) return E_INVALIDARG;
752
753 len = min(len - 1, lstrlenW(guid2name[i].name));
754 memcpy(name, guid2name[i].name, len * sizeof(WCHAR));
755 name[len] = 0;
756
757 if (len < lstrlenW(guid2name[i].name))
759 }
760 if (ret_len) *ret_len = lstrlenW(guid2name[i].name) + 1;
761 return S_OK;
762 }
763 }
764
766}
#define ERROR_INSUFFICIENT_BUFFER
Definition: dderror.h:10
static const struct @593 guid2name[]
#define min(a, b)
Definition: monoChain.cc:55
static __inline const char * wine_dbgstr_guid(const GUID *id)
Definition: debug.h:197
#define HRESULT_FROM_WIN32(x)
Definition: winerror.h:92

Referenced by test_metadata_gif(), and test_WICMapGuidToShortName().

◆ WICMapSchemaToName()

HRESULT WINAPI WICMapSchemaToName ( REFGUID  format,
LPWSTR  schema,
UINT  len,
WCHAR name,
UINT ret_len 
)

Definition at line 895 of file metadataquery.c.

896{
897 UINT i;
898
899 TRACE("%s,%s,%u,%p,%p\n", wine_dbgstr_guid(format), debugstr_w(schema), len, name, ret_len);
900
901 if (!format || !schema || !ret_len)
902 return E_INVALIDARG;
903
904 /* It appears that the only metadata formats
905 * that support schemas are xmp and xmpstruct.
906 */
907 if (!IsEqualGUID(format, &GUID_MetadataFormatXMP) &&
908 !IsEqualGUID(format, &GUID_MetadataFormatXMPStruct))
910
911 for (i = 0; i < ARRAY_SIZE(name2schema); i++)
912 {
914 {
915 if (name)
916 {
917 if (!len) return E_INVALIDARG;
918
919 len = min(len - 1, lstrlenW(name2schema[i].name));
920 memcpy(name, name2schema[i].name, len * sizeof(WCHAR));
921 name[len] = 0;
922
923 if (len < lstrlenW(name2schema[i].name))
925 }
926
928 return S_OK;
929 }
930 }
931
933}
#define debugstr_w
Definition: kernel32.h:32

Referenced by test_WICMapSchemaToName().

◆ WICMapShortNameToGuid()

HRESULT WINAPI WICMapShortNameToGuid ( PCWSTR  name,
GUID guid 
)

Definition at line 768 of file metadataquery.c.

769{
770 UINT i;
771
772 TRACE("%s,%p\n", debugstr_w(name), guid);
773
774 if (!name || !guid) return E_INVALIDARG;
775
776 for (i = 0; i < ARRAY_SIZE(guid2name); i++)
777 {
778 if (!lstrcmpiW(name, guid2name[i].name))
779 {
780 *guid = *guid2name[i].guid;
781 return S_OK;
782 }
783 }
784
786}
int WINAPI lstrcmpiW(LPCWSTR lpString1, LPCWSTR lpString2)
Definition: lstring.c:194

Referenced by mqr_GetMetadataByName(), test_metadata_gif(), and test_WICMapShortNameToGuid().

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( wincodecs  )

Variable Documentation

◆ _8bimiptcdigestW

const WCHAR _8bimiptcdigestW[] = { '8','b','i','m','i','p','t','c','d','i','g','e','s','t',0 }
static

Definition at line 660 of file metadataquery.c.

◆ _8bimiptcW

const WCHAR _8bimiptcW[] = { '8','b','i','m','i','p','t','c',0 }
static

Definition at line 658 of file metadataquery.c.

◆ _8bimResInfoW

const WCHAR _8bimResInfoW[] = { '8','b','i','m','R','e','s','I','n','f','o',0 }
static

Definition at line 659 of file metadataquery.c.

◆ app0W

const WCHAR app0W[] = { 'a','p','p','0',0 }
static

Definition at line 653 of file metadataquery.c.

◆ app13W

const WCHAR app13W[] = { 'a','p','p','1','3',0 }
static

Definition at line 655 of file metadataquery.c.

◆ app1W

const WCHAR app1W[] = { 'a','p','p','1',0 }
static

Definition at line 654 of file metadataquery.c.

◆ appextW

const WCHAR appextW[] = { 'a','p','p','e','x','t',0 }
static

Definition at line 671 of file metadataquery.c.

◆ aux

◆ aux_scheme

const WCHAR aux_scheme[] = { 'h','t','t','p',':','/','/','n','s','.','a','d','o','b','e','.','c','o','m','/','e','x','i','f','/','1','.','0','/','a','u','x','/',0 }
static

Definition at line 825 of file metadataquery.c.

◆ bKGDW

const WCHAR bKGDW[] = { 'b','K','G','D',0 }
static

Definition at line 677 of file metadataquery.c.

◆ bmpW

const WCHAR bmpW[] = { 'b','m','p',0 }
static

Definition at line 640 of file metadataquery.c.

◆ cHRMW

const WCHAR cHRMW[] = { 'c','H','R','M',0 }
static

Definition at line 679 of file metadataquery.c.

◆ chrominanceW

const WCHAR chrominanceW[] = { 'c','h','r','o','m','i','n','a','n','c','e',0 }
static

Definition at line 672 of file metadataquery.c.

◆ commentextW

const WCHAR commentextW[] = { 'c','o','m','m','e','n','t','e','x','t',0 }
static

Definition at line 675 of file metadataquery.c.

◆ comW

const WCHAR comW[] = { 'c','o','m',0 }
static

Definition at line 674 of file metadataquery.c.

Referenced by COMM_ParseStart().

◆ crs

const WCHAR crs[] = { 'c','r','s',0 }
static

◆ crs_scheme

const WCHAR crs_scheme[] = { 'h','t','t','p',':','/','/','n','s','.','a','d','o','b','e','.','c','o','m','/','c','a','m','e','r','a','-','r','a','w','-','s','e','t','t','i','n','g','s','/','1','.','0','/',0 }
static

Definition at line 827 of file metadataquery.c.

◆ dc

const WCHAR dc[] = { 'd','c',0 }
static

Definition at line 790 of file metadataquery.c.

Referenced by _Function_class_(), _Success_(), add_children_to_move_list(), add_dir_child(), add_log_points(), add_log_points_new_stroke(), add_module(), AddPenLinesBounds(), append(), arm64_fetch_minidump_thread(), arm_fetch_minidump_thread(), AtlHiMetricToPixel(), AtlPixelToHiMetric(), BITMAP_CopyImage(), bus_query_capabilities(), CloseEnhMetaFile(), CloseMetaFile(), context_restore_gl_context(), context_restore_pixel_format(), context_set_pixel_format(), create_render_dc(), create_stream(), create_subvol(), CreateEnhMetaFileW(), CreateMetaFileW(), d3d9_surface_GetDC(), d3d9_surface_ReleaseDC(), d3drm_device_win_HandlePaint(), DceResetActiveDCEs(), DCU_SetDcUndeletable(), ddraw4_GetSurfaceFromDC(), ddraw7_GetSurfaceFromDC(), ddraw_surface1_GetDC(), ddraw_surface1_ReleaseDC(), ddraw_surface2_GetDC(), ddraw_surface2_ReleaseDC(), ddraw_surface3_GetDC(), ddraw_surface3_ReleaseDC(), ddraw_surface4_GetDC(), ddraw_surface4_ReleaseDC(), ddraw_surface7_GetDC(), delete_render_dc(), DIALOG_CreateIndirect(), DIB_CreateDIBSection(), do_create_snapshot(), dump_exception_info(), dump_memory64_info(), dump_memory_info(), dump_misc_info(), dump_modules(), dump_system_info(), dump_threads(), EDIT_EM_SetMargins(), EDIT_PaintLine(), EDIT_PaintText(), EDIT_UpdateUniscribeData(), EDIT_UpdateUniscribeData_linedef(), EDIT_WM_NCPaint(), EDIT_WM_Paint(), EDIT_WM_SetFont(), EMFDRV_Arc(), EMFDRV_ArcChordPie(), EMFDRV_ArcTo(), EMFDRV_BeginPath(), EMFDRV_Chord(), EMFDRV_Ellipse(), EMFDRV_ExtTextOut(), EMFDRV_LineTo(), EMFDRV_Pie(), EMFDRV_Polylinegon(), EMFDRV_Rectangle(), EMFDRV_RestoreDC(), EMFDRV_RoundRect(), EMFDRV_SetDCBrushColor(), EMFDRV_SetDCPenColor(), EMFDRV_SetPixel(), emfdrv_stroke_and_fill_path(), emfdrv_update_bounds(), emfpathdrv_AbortPath(), emfpathdrv_EndPath(), fetch_host_module_info_cb(), fetch_memory64_info(), fetch_modules_info(), fetch_pe_module_info_cb(), fetch_process_info(), fetch_thread_info(), fetch_thread_stack(), file_create2(), fill_in_file_stream_information(), FillPolygon(), FillSolidRect(), find_file_in_dir(), finish_inode(), flush_refs(), format_string_callback(), ftGdiGetGlyphOutline(), ftGdiGetTextMetricsW(), GdiFlushUserBatch(), GdipAddPathString(), GdiSelectVisRgn(), get_points_bounds(), get_window_region(), StartMenuRoot::GetLogoResId(), GetSurfaceFromDC(), GreDPtoLP(), GreExtTextOutW(), GreGetBkColor(), GreGetBkMode(), GreGetDCOrgEx(), GreGetGraphicsMode(), GreGetKerningPairs(), GreGetMapMode(), GreGetTextColor(), GreLPtoDP(), GreMoveTo(), GreSetDCOrg(), GreSetViewportOrgEx(), i386_fetch_minidump_thread(), insert_dir_child_into_hash_lists(), IntAnimatePalette(), IntArc(), IntDrawArc(), IntDrawEllipse(), IntDrawRoundRect(), IntEngFillBox(), IntEngFillPolygon(), IntEngGradientFillRect(), IntEngGradientFillTriangle(), INTERNAL_DPTOLP(), INTERNAL_LPTODP(), IntExtTextOutW(), IntFillArc(), IntFillEllipse(), IntFillPolygon(), IntFillRect(), IntFillRoundRect(), IntGdiArcInternal(), IntGdiCleanDC(), IntGdiLineTo(), IntGdiMoveToEx(), IntGdiPolyBezier(), IntGdiPolyBezierTo(), IntGdiPolygon(), IntGdiPolyline(), IntGdiPolylineTo(), IntGdiPolyPolygon(), IntGdiPolyPolyline(), IntGdiSetBkColor(), IntGdiSetBkMode(), IntGdiSetHookFlags(), IntGdiSetMapMode(), IntGdiSetTextAlign(), IntGetCurrentPositionEx(), IntGetSystemPaletteEntries(), IntMirrorWindowOrg(), IntRectangle(), IntRoundRect(), IntSetDCBrushColor(), IntSetDCPenColor(), IOCS_OnDraw(), is_cjk(), is_cjk_charset(), is_cjk_font(), LISTVIEW_NCPaint(), load_dir_children(), make_file_orphan(), map_event(), MENU_DrawPopupGlyph(), MFDRV_AllocMetaFile(), MFDRV_CloseMetaFile(), mi_clip(), mi_paint_rect(), minidump_add_memory64_block(), minidump_add_memory_block(), MiniDumpWriteDump(), mknod(), MyDrawFrameCaption(), MyDrawFrameScroll(), next_dir_entry(), NtGdiAbortPath(), NtGdiArcInternal(), NtGdiBeginPath(), NtGdiCreateDIBSection(), NtGdiEllipse(), NtGdiEndPath(), NtGdiEscape(), NtGdiExtFloodFill(), NtGdiExtSelectClipRgn(), NtGdiFillPath(), NtGdiGetCharABCWidthsW(), NtGdiGetCharWidthW(), NtGdiGetDeviceGammaRamp(), NtGdiGetDeviceWidth(), NtGdiGetGlyphIndicesW(), NtGdiGetGlyphOutline(), NtGdiGetKerningPairs(), NtGdiGetNearestColor(), NtGdiGetOutlineTextMetricsInternalW(), NtGdiGetPath(), NtGdiGetTextExtentExW(), NtGdiLineTo(), NtGdiMirrorWindowOrg(), NtGdiOffsetViewportOrgEx(), NtGdiOffsetWindowOrgEx(), NtGdiPolyDraw(), NtGdiPolyPolyDraw(), NtGdiPtVisible(), NtGdiRectangle(), NtGdiRectVisible(), NtGdiRoundRect(), NtGdiSetDeviceGammaRamp(), NtGdiSetSizeDevice(), NtGdiSetViewportOrgEx(), NtGdiSetVirtualResolution(), NtGdiSetWindowOrgEx(), nulldrv_BeginPath(), CBrandBand::OnPaint(), CZipExtract::CCompleteSettingsPage::OnSetActive(), open_fcb(), open_fcb_stream(), open_file3(), open_fileref_child(), paint_scrollbar(), PATH_Arc(), PATH_CheckRect(), PATH_Ellipse(), PATH_ExtTextOut(), PATH_FillPath(), PATH_FillPathEx(), PATH_LineTo(), PATH_MoveTo(), PATH_PolyBezier(), PATH_PolyBezierTo(), PATH_PolyDraw(), PATH_PolylineTo(), PATH_PolyPolygon(), PATH_PolyPolyline(), PATH_Rectangle(), PATH_RoundRect(), PATH_StrokePath(), PATH_WidenPath(), PATH_WidenPathEx(), pathdrv_AbortPath(), pathdrv_EndPath(), plugin_proc(), Polygon(), POLYGONFILL_FillScanLineAlternate(), POLYGONFILL_FillScanLineWinding(), query_directory(), reap_fcb(), remove_dir_child_from_hash_lists(), rename_file_to_stream(), rename_stream_to_file(), run_operator(), set_installer_properties(), set_link_information(), START_TEST(), swapchain_gdi_present(), test_destroy(), test_destroyed_window(), test_EnumICMProfilesA(), test_EnumICMProfilesW(), test_GdipDrawImagePointsRectOnMemoryDC(), test_GdipFillRectanglesOnMemoryDCSolidBrush(), test_GdipFillRectanglesOnMemoryDCTextureBrush(), test_GdipGetVisibleClipBounds_memoryDC(), test_GetDIBits_selected_DDB(), test_GetDIBits_selected_DIB(), test_GetICMProfileA(), test_GetICMProfileW(), test_GetTextFace(), test_long_names(), test_message_window(), test_minimized(), test_SetICMMode(), test_SetICMProfileA(), test_SetICMProfileW(), test_SetWinMetaFileBits(), test_text_position_style(), test_window_dc(), TextIntGetTextExtentPoint(), TextIntUpdateSize(), TREEVIEW_NCPaint(), UDFPackDirectory__(), UITOOLS95_DFC_ButtonCheckRadio(), UITOOLS95_DFC_ButtonPush(), UITOOLS95_DrawFrameCaption(), UITOOLS95_DrawFrameMenu(), UITOOLS95_DrawFrameScroll(), UITOOLS_DrawCheckedRect(), VfdToolTip(), wined3d_adapter_init_fb_cfgs(), wined3d_palette_apply_to_dc(), wined3d_release_dc(), wined3d_swapchain_get_gamma_ramp(), wined3d_swapchain_set_gamma_ramp(), wined3d_texture_get_dc(), wined3d_texture_release_dc(), WndProc(), writeat(), x86_64_fetch_minidump_module(), and x86_64_fetch_minidump_thread().

◆ dc_scheme

const WCHAR dc_scheme[] = { 'h','t','t','p',':','/','/','p','u','r','l','.','o','r','g','/','d','c','/','e','l','e','m','e','n','t','s','/','1','.','1','/',0 }
static

Definition at line 791 of file metadataquery.c.

◆ exif

const WCHAR exif[] = { 'e','x','i','f',0 }
static

Definition at line 810 of file metadataquery.c.

◆ exif_scheme

const WCHAR exif_scheme[] = { 'h','t','t','p',':','/','/','n','s','.','a','d','o','b','e','.','c','o','m','/','e','x','i','f','/','1','.','0','/',0 }
static

Definition at line 811 of file metadataquery.c.

◆ exifW

const WCHAR exifW[] = { 'e','x','i','f',0 }
static

Definition at line 650 of file metadataquery.c.

◆ gAMAW

const WCHAR gAMAW[] = { 'g','A','M','A',0 }
static

Definition at line 676 of file metadataquery.c.

◆ gifW

const WCHAR gifW[] = { 'g','i','f',0 }
static

Definition at line 645 of file metadataquery.c.

◆ gpsW

const WCHAR gpsW[] = { 'g','p','s',0 }
static

Definition at line 651 of file metadataquery.c.

◆ grctlextW

const WCHAR grctlextW[] = { 'g','r','c','t','l','e','x','t',0 }
static

Definition at line 670 of file metadataquery.c.

◆ guid

const GUID* guid

Definition at line 687 of file metadataquery.c.

Referenced by __wine_msi_call_dll_function(), _dump_dinput_GUID(), _GetDocumentsPidl(), _ILCreateGuid(), _test_provideclassinfo(), a_to_w_callback(), ACTION_CallScript(), ACTION_MsiPublishAssemblies(), ACTION_PublishProduct(), add_tbs_to_menu(), add_typeinfo_block(), alloc_importinfo(), Anime_SetFrameIndex(), BmpFrameEncode_SetPixelFormat(), callback_providersA(), callback_providersW(), CategoryMgr_FindClosestCategory(), ATL::CComBSTR::CComBSTR(), check_db_properties(), check_safearray(), client(), CoGetActivationState(), component_GetGUID(), compose_base85_guid(), CModeBias::ConvertModeBias(), CoRegisterSurrogateEx(), create_activex_object(), create_event_sink(), create_msft_typeinfo(), create_object(), create_script_host(), create_test_guid(), CRYPT_guid2wstr(), CRYPT_OpenSIPFunctionKey(), CRYPT_SIPDeleteFunction(), CRYPT_SIPWriteFunction(), CryptCATEnumerateMember(), ctl2_alloc_guid(), ctl2_find_guid(), ctl2_hash_guid(), custom_action_server(), custom_action_thread(), d3d8_indexbuffer_FreePrivateData(), d3d8_indexbuffer_GetPrivateData(), d3d8_indexbuffer_SetPrivateData(), d3d8_resource_free_private_data(), d3d8_resource_get_private_data(), d3d8_resource_set_private_data(), d3d8_surface_FreePrivateData(), d3d8_surface_GetPrivateData(), d3d8_surface_SetPrivateData(), d3d8_texture_2d_FreePrivateData(), d3d8_texture_2d_GetPrivateData(), d3d8_texture_2d_SetPrivateData(), d3d8_texture_3d_FreePrivateData(), d3d8_texture_3d_GetPrivateData(), d3d8_texture_3d_SetPrivateData(), d3d8_texture_cube_FreePrivateData(), d3d8_texture_cube_GetPrivateData(), d3d8_texture_cube_SetPrivateData(), d3d8_vertexbuffer_FreePrivateData(), d3d8_vertexbuffer_GetPrivateData(), d3d8_vertexbuffer_SetPrivateData(), d3d8_volume_FreePrivateData(), d3d8_volume_GetPrivateData(), d3d8_volume_SetPrivateData(), d3d9_indexbuffer_FreePrivateData(), d3d9_indexbuffer_GetPrivateData(), d3d9_indexbuffer_SetPrivateData(), d3d9_resource_free_private_data(), d3d9_resource_get_private_data(), d3d9_resource_set_private_data(), d3d9_surface_FreePrivateData(), d3d9_surface_GetPrivateData(), d3d9_surface_SetPrivateData(), d3d9_texture_2d_FreePrivateData(), d3d9_texture_2d_GetPrivateData(), d3d9_texture_2d_SetPrivateData(), d3d9_texture_3d_FreePrivateData(), d3d9_texture_3d_GetPrivateData(), d3d9_texture_3d_SetPrivateData(), d3d9_texture_cube_FreePrivateData(), d3d9_texture_cube_GetPrivateData(), d3d9_texture_cube_SetPrivateData(), d3d9_vertexbuffer_FreePrivateData(), d3d9_vertexbuffer_GetPrivateData(), d3d9_vertexbuffer_SetPrivateData(), d3d9_volume_FreePrivateData(), d3d9_volume_GetPrivateData(), d3d9_volume_SetPrivateData(), d3d_device1_Initialize(), d3d_device_create(), d3drm1_CreateDeviceFromClipper(), d3drm1_CreateDeviceFromSurface(), d3drm2_CreateDeviceFromClipper(), d3drm2_CreateDeviceFromSurface(), d3drm3_CreateDeviceFromClipper(), d3drm3_CreateDeviceFromSurface(), d3drm3_RegisterClient(), d3drm3_UnregisterClient(), d3drm_device1_InitFromClipper(), d3drm_device2_InitFromClipper(), d3drm_device2_InitFromSurface(), d3drm_device3_InitFromClipper(), d3drm_device3_InitFromSurface(), d3drm_mesh_builder3_Load(), d3dx9_file_data_GetId(), d3dx9_file_data_GetType(), d3dx9_file_enum_object_GetDataObjectById(), D3DXLoadMeshFromXInMemory(), D3DXLoadMeshHierarchyFromXInMemory(), ddraw1_Initialize(), ddraw2_Initialize(), ddraw4_Initialize(), ddraw7_Initialize(), DDRAW_Create(), debugstr_dmguid(), debugstr_guid(), DECLARE_INTERFACE_(), DECLARE_INTERFACE_IID_(), decode_base85_guid(), del_mapping_key(), delete_component_path(), DirectSoundCaptureEnumerateW(), DirectSoundDevice_Initialize(), DirectSoundEnumerateW(), DllRegisterServer(), DllUnregisterServer(), dsound_enum(), dump_DIEFFECT(), effect_from_guid(), encode_base85_guid(), enum_callback(), enum_components(), EnumJoysticks(), EtwEnableTrace(), exec_script(), fetch_machine_component(), fetch_user_component(), find_action_by_guid(), find_clr_surrogate(), find_cominterface_redirection(), find_comserver_redirection(), find_devices(), find_guid(), find_guid_index(), find_reader_from_block(), find_tlib_redirection(), find_typelib_key(), CUserAssist::FireEvent(), GdipCreateEffect(), generate_uuid(), get_bool_property(), get_device_pnp_name(), get_device_pnp_name_guid(), get_elem_script_host(), get_formatinfo(), get_guid_from_language(), get_guid_from_type(), get_iface_guid(), get_IID_string(), get_interface_key(), get_mapping_key(), get_mesh_data(), get_metadata_container(), get_next_reader(), get_property(), get_script_guid(), get_script_host(), get_settingid(), get_typeinfo_of_guid(), get_typelib_key(), getCurrentChannelConfig(), CFunctionProvider::GetFunction(), GetGlobalCompartment(), GetRecordInfoFromTypeInfo(), GetSdbGuid(), CQueryAssociations::GetString(), CFunctionProviderBase::GetType(), GifDecoder_Block_GetContainerFormat(), GifFrameDecode_Block_GetContainerFormat(), Guid2str(), GUIDFromStringA(), GUIDFromStringW(), hash_guid(), Host_CreateObject(), ICreateTypeInfo2_fnSetCustData(), ICreateTypeInfo2_fnSetFuncCustData(), ICreateTypeInfo2_fnSetGuid(), ICreateTypeInfo2_fnSetImplTypeCustData(), ICreateTypeInfo2_fnSetParamCustData(), ICreateTypeInfo2_fnSetVarCustData(), ICreateTypeLib2_fnSetCustData(), ICreateTypeLib2_fnSetGuid(), IDirectPlay2AImpl_Initialize(), IDirectPlay2Impl_Initialize(), IDirectPlay3AImpl_Initialize(), IDirectPlay3Impl_Initialize(), IDirectPlay4AImpl_Initialize(), IDirectPlay4Impl_Initialize(), IDirectPlayImpl_Initialize(), IDirectXFileDataImpl_GetType(), IEnumDMO_fnNext(), IFileDialog2_fnSetClientGuid(), IFileOpenDialog_fnSetClientGuid(), IFileSaveDialog_fnSetClientGuid(), CIMEUIWindowHandler::ImeUIMsImeModeBiasHandler(), init_classinfo(), InitDisplayAttrbuteLib(), InitPropVariantFromGUIDAsString(), InitVariantFromGUIDAsString(), intDdGetDriverInfo(), is_prefixed_volume(), IsCatalogFile(), ITERATE_RegisterTypeLibraries(), ITERATE_UnregisterTypeLibraries(), ITypeInfo2_fnGetCustData(), ITypeInfo2_fnGetFuncCustData(), ITypeInfo2_fnGetImplTypeCustData(), ITypeInfo2_fnGetParamCustData(), ITypeInfo2_fnGetVarCustData(), ITypeInfo_fnInvoke(), ITypeLib2_fnGetCustData(), ITypeLib2_fnGetTypeInfoOfGuid(), JoyConfig8Impl_AddNewHardware(), load_data(), load_devices_from_reg(), load_mesh_data(), LocalServer_QueryService(), LPSAFEARRAY_UserMarshal(), LPSAFEARRAY_UserUnmarshal(), MakeGuidString(), match_guid_attr_imp(), matchGUID(), MMDevPropStore_OpenPropKey(), mqr_GetMetadataByName(), msft_read_guid(), MSFT_ReadAllGuids(), MSI_ProvideQualifiedComponentEx(), MsiEnumComponentsExA(), MsiEnumComponentsExW(), path_find_symbol_file(), per_user_install_callback(), probe_volume(), profile3_GetProfileID(), PROPVAR_GUIDToWSTR(), PROPVAR_WCHARToGUID(), PropVariantToGUID(), query_feature_state(), query_typelib_path(), CUserAssist::QueryEvent(), QueryPathOfRegTypeLib(), ReadGuidNode(), register_dsound_devices(), register_key_guid(), RtlFindActivationContextSectionGuid(), RtlFindActivationContextSectionString(), RtlGUIDFromString(), s_remote_GetActionInfo(), SAFEARRAY_CopyData(), SafeArraySetIID(), script_parse_event(), ScriptThread(), search_components(), server(), set_component_path(), set_custdata(), set_guid(), CShellLink::SetAdvertiseInfo(), setCurrentChannelConfig(), CUserAssist::SetEvent(), SetGlobalCompartmentDWORD(), setperusersecvalues_test(), SetPerUserSecValuesW(), SETUPDI_GuidToString(), SHELL32_GUIDToStringA(), SHELL32_GUIDToStringW(), shellex_load_object_and_run(), ShellExecute_FromContextMenuHandlers(), SHGlobalCounterCreate(), should_enumerate_device(), SHPropertyBag_OnRegKey(), SHPropertyBag_ReadTest(), SHPropertyBag_WriteTest(), SHRegGetCLSIDKeyA(), SHRegGetCLSIDKeyW(), SHStringFromGUIDA(), SHStringFromGUIDW(), squash_guid(), START_TEST(), string_to_guid(), StringToGuid(), test_Activate(), test_ClassIDs(), test_createeffect(), test_device_iface(), test_device_iface_detail(), test_device_info(), test_device_interface_key(), test_device_key(), test_devnode(), test_dsound(), test_dump_typelib(), test_find_progid_redirection(), test_fromguid(), test_GdipGetAllPropertyItems(), test_get_device_instance_id(), test_get_inf_class(), test_GetDefaultSearchGUID(), test_gif_properties(), TEST_GUIDFromStringA(), TEST_GUIDFromStringW(), test_GuidFunctions(), test_InitPropVariantFromGUIDAsString(), test_interface_identifier_conversion(), test_is_testdb(), test_MsiEnumComponents(), test_MsiEnumComponentsEx(), test_MsiEnumProducts(), test_MsiEnumProductsEx(), test_multi_encoder(), test_open_class_key(), test_ordinal_imports(), test_Persist(), test_pixelformat_info(), Test_PrivateData(), test_PropVariantToGUID(), test_register_device_iface(), test_register_device_info(), test_registry_property_a(), test_registry_property_w(), test_RtlGUIDFromString(), test_safearray_layout(), test_SafeArrayCreateEx(), test_server_listening(), test_sip(), test_tiff_properties(), test_UuidCreate(), test_WICMapShortNameToGuid(), ThreadMgr_ActivateEx(), Timeline_IAMTimeline_GetDefaultEffect(), Timeline_IAMTimeline_GetDefaultTransition(), Timeline_IAMTimeline_SetDefaultEffect(), Timeline_IAMTimeline_SetDefaultTransition(), TimelineObj_GetSubObjectGUID(), TimelineObj_SetSubObjectGUID(), TLB_append_guid(), TLB_get_custdata_by_guid(), TLB_get_guid_null(), TLB_get_guidref(), TLB_GUIDFromString(), TLB_unregister_interface(), typeFromGUID(), uniquecontainer(), UserInstStubWrapperW(), VariantToGUID(), wic_guid_to_d3dformat(), WICMapGuidToShortName(), WICMapShortNameToGuid(), wined3d_private_store_set_private_data(), WMProfileManager_LoadProfileByID(), WMSFT_compile_guids(), write_pointer_tfs(), and Database::WriteBinary().

◆ 

const struct { ... } guid2name[]

◆ hISTW

const WCHAR hISTW[] = { 'h','I','S','T',0 }
static

Definition at line 680 of file metadataquery.c.

◆ iCCPW

const WCHAR iCCPW[] = { 'i','C','C','P',0 }
static

Definition at line 681 of file metadataquery.c.

◆ icoW

const WCHAR icoW[] = { 'i','c','o',0 }
static

Definition at line 642 of file metadataquery.c.

◆ ifdW

const WCHAR ifdW[] = { 'i','f','d',0 }
static

Definition at line 648 of file metadataquery.c.

◆ imgdescW

const WCHAR imgdescW[] = { 'i','m','g','d','e','s','c',0 }
static

Definition at line 669 of file metadataquery.c.

Referenced by test_metadata_gif().

◆ interopW

const WCHAR interopW[] = { 'i','n','t','e','r','o','p',0 }
static

Definition at line 652 of file metadataquery.c.

◆ Iptc4xmpCore

const WCHAR Iptc4xmpCore[] = { 'I','p','t','c','4','x','m','p','C','o','r','e',0 }
static

Definition at line 830 of file metadataquery.c.

◆ Iptc4xmpCore_scheme

const WCHAR Iptc4xmpCore_scheme[] = { 'h','t','t','p',':','/','/','i','p','t','c','.','o','r','g','/','s','t','d','/','I','p','t','c','4','x','m','p','C','o','r','e','/','1','.','0','/','x','m','l','n','s','/',0 }
static

Definition at line 831 of file metadataquery.c.

◆ iptcW

const WCHAR iptcW[] = { 'i','p','t','c',0 }
static

Definition at line 656 of file metadataquery.c.

◆ irbW

const WCHAR irbW[] = { 'i','r','b',0 }
static

Definition at line 657 of file metadataquery.c.

◆ iTXtW

const WCHAR iTXtW[] = { 'i','T','X','t',0 }
static

Definition at line 678 of file metadataquery.c.

◆ jpgW

const WCHAR jpgW[] = { 'j','p','g',0 }
static

Definition at line 643 of file metadataquery.c.

◆ len

◆ logscrdescW

const WCHAR logscrdescW[] = { 'l','o','g','s','c','r','d','e','s','c',0 }
static

Definition at line 668 of file metadataquery.c.

◆ luminanceW

const WCHAR luminanceW[] = { 'l','u','m','i','n','a','n','c','e',0 }
static

Definition at line 673 of file metadataquery.c.

◆ MicrosoftPhoto

const WCHAR MicrosoftPhoto[] = { 'M','i','c','r','o','s','o','f','t','P','h','o','t','o',0 }
static

Definition at line 832 of file metadataquery.c.

◆ MicrosoftPhoto_scheme

const WCHAR MicrosoftPhoto_scheme[] = { 'h','t','t','p',':','/','/','n','s','.','m','i','c','r','o','s','o','f','t','.','c','o','m','/','p','h','o','t','o','/','1','.','0','/',0 }
static

Definition at line 833 of file metadataquery.c.

◆ MP

const WCHAR MP[] = { 'M','P',0 }
static

Definition at line 834 of file metadataquery.c.

◆ MP_scheme

const WCHAR MP_scheme[] = { 'h','t','t','p',':','/','/','n','s','.','m','i','c','r','o','s','o','f','t','.','c','o','m','/','p','h','o','t','o','/','1','.','2','/',0 }
static

Definition at line 835 of file metadataquery.c.

◆ MPReg

const WCHAR MPReg[] = { 'M','P','R','e','g',0 }
static

Definition at line 838 of file metadataquery.c.

◆ MPReg_scheme

const WCHAR MPReg_scheme[] = { 'h','t','t','p',':','/','/','n','s','.','m','i','c','r','o','s','o','f','t','.','c','o','m','/','p','h','o','t','o','/','1','.','2','/','t','/','R','e','g','i','o','n','#',0 }
static

Definition at line 839 of file metadataquery.c.

◆ MPRI

const WCHAR MPRI[] = { 'M','P','R','I',0 }
static

Definition at line 836 of file metadataquery.c.

◆ MPRI_scheme

const WCHAR MPRI_scheme[] = { 'h','t','t','p',':','/','/','n','s','.','m','i','c','r','o','s','o','f','t','.','c','o','m','/','p','h','o','t','o','/','1','.','2','/','t','/','R','e','g','i','o','n','I','n','f','o','#',0 }
static

Definition at line 837 of file metadataquery.c.

◆ mqr_vtbl

IWICMetadataQueryReaderVtbl mqr_vtbl
static
Initial value:
= {
}
static ULONG WINAPI mqr_AddRef(IWICMetadataQueryReader *iface)
Definition: metadataquery.c:74
static ULONG WINAPI mqr_Release(IWICMetadataQueryReader *iface)
Definition: metadataquery.c:82
static HRESULT WINAPI mqr_GetLocation(IWICMetadataQueryReader *iface, UINT len, WCHAR *location, UINT *ret_len)
static HRESULT WINAPI mqr_GetEnumerator(IWICMetadataQueryReader *iface, IEnumString **ppIEnumString)
static HRESULT WINAPI mqr_GetMetadataByName(IWICMetadataQueryReader *iface, LPCWSTR query, PROPVARIANT *value)
static HRESULT WINAPI mqr_QueryInterface(IWICMetadataQueryReader *iface, REFIID riid, void **ppvObject)
Definition: metadataquery.c:52
static HRESULT WINAPI mqr_GetContainerFormat(IWICMetadataQueryReader *iface, GUID *format)
Definition: metadataquery.c:96

Definition at line 609 of file metadataquery.c.

Referenced by MetadataQueryReader_CreateInstance().

◆ name

Definition at line 688 of file metadataquery.c.

◆ 

const struct { ... } name2schema[]
Initial value:
=
{
{ dc, dc_scheme },
{ MP, MP_scheme },
}
static const WCHAR MicrosoftPhoto[]
static const WCHAR xmpidq[]
static const WCHAR xmpRights_scheme[]
static const WCHAR rdf_scheme[]
static const WCHAR aux_scheme[]
static const WCHAR rdf[]
static const WCHAR xmpDM_scheme[]
static const WCHAR xmp_scheme[]
static const WCHAR MPRI[]
static const WCHAR dc[]
static const WCHAR xmpBJ[]
static const WCHAR dc_scheme[]
static const WCHAR xmpMM[]
static const WCHAR stEvt[]
static const WCHAR MPReg_scheme[]
static const WCHAR aux[]
static const WCHAR tiff[]
static const WCHAR photoshop[]
static const WCHAR pdf_scheme[]
static const WCHAR stVer[]
static const WCHAR MicrosoftPhoto_scheme[]
static const WCHAR stRef_scheme[]
static const WCHAR photoshop_scheme[]
static const WCHAR exif[]
static const WCHAR xmpTPg_scheme[]
static const WCHAR xmpidq_scheme[]
static const WCHAR MP[]
static const WCHAR Iptc4xmpCore[]
static const WCHAR xmp[]
static const WCHAR xmpMM_scheme[]
static const WCHAR crs[]
static const WCHAR xmpDM[]
static const WCHAR stRef[]
static const WCHAR xapGImg_scheme[]
static const WCHAR xmpBJ_scheme[]
static const WCHAR MPRI_scheme[]
static const WCHAR crs_scheme[]
static const WCHAR stJob[]
static const WCHAR stJob_scheme[]
static const WCHAR stDim_scheme[]
static const WCHAR exif_scheme[]
static const WCHAR tiff_scheme[]
static const WCHAR Iptc4xmpCore_scheme[]
static const WCHAR xmpRights[]
static const WCHAR pdf[]
static const WCHAR stVer_scheme[]
static const WCHAR xapGImg[]
static const WCHAR stEvt_scheme[]
static const WCHAR stDim[]
static const WCHAR xmpTPg[]
static const WCHAR MP_scheme[]
static const WCHAR MPReg[]

Referenced by map_shortname_to_schema(), and WICMapSchemaToName().

◆ pdf

const WCHAR pdf[] = { 'p','d','f',0 }
static

Definition at line 804 of file metadataquery.c.

◆ pdf_scheme

const WCHAR pdf_scheme[] = { 'h','t','t','p',':','/','/','n','s','.','a','d','o','b','e','.','c','o','m','/','p','d','f','/','1','.','3','/',0 }
static

Definition at line 805 of file metadataquery.c.

◆ photoshop

const WCHAR photoshop[] = { 'p','h','o','t','o','s','h','o','p',0 }
static

Definition at line 806 of file metadataquery.c.

◆ photoshop_scheme

const WCHAR photoshop_scheme[] = { 'h','t','t','p',':','/','/','n','s','.','a','d','o','b','e','.','c','o','m','/','p','h','o','t','o','s','h','o','p','/','1','.','0','/',0 }
static

Definition at line 807 of file metadataquery.c.

◆ pngW

const WCHAR pngW[] = { 'p','n','g',0 }
static

Definition at line 641 of file metadataquery.c.

◆ rdf

const WCHAR rdf[] = { 'r','d','f',0 }
static

Definition at line 788 of file metadataquery.c.

◆ rdf_scheme

const WCHAR rdf_scheme[] = { 'h','t','t','p',':','/','/','w','w','w','.','w','3','.','o','r','g','/','1','9','9','9','/','0','2','/','2','2','-','r','d','f','-','s','y','n','t','a','x','-','n','s','#',0 }
static

Definition at line 789 of file metadataquery.c.

◆ schema

◆ sRGBW

const WCHAR sRGBW[] = { 's','R','G','B',0 }
static

Definition at line 682 of file metadataquery.c.

◆ stDim

const WCHAR stDim[] = { 's','t','D','i','m',0 }
static

Definition at line 812 of file metadataquery.c.

◆ stDim_scheme

const WCHAR stDim_scheme[] = { 'h','t','t','p',':','/','/','n','s','.','a','d','o','b','e','.','c','o','m','/','x','a','p','/','1','.','0','/','s','T','y','p','e','/','D','i','m','e','n','s','i','o','n','s','#',0 }
static

Definition at line 813 of file metadataquery.c.

◆ stEvt

const WCHAR stEvt[] = { 's','t','E','v','t',0 }
static

Definition at line 816 of file metadataquery.c.

◆ stEvt_scheme

const WCHAR stEvt_scheme[] = { 'h','t','t','p',':','/','/','n','s','.','a','d','o','b','e','.','c','o','m','/','x','a','p','/','1','.','0','/','s','T','y','p','e','/','R','e','s','o','u','r','c','e','E','v','e','n','t','#',0 }
static

Definition at line 817 of file metadataquery.c.

◆ stJob

const WCHAR stJob[] = { 's','t','J','o','b',0 }
static

Definition at line 822 of file metadataquery.c.

◆ stJob_scheme

const WCHAR stJob_scheme[] = { 'h','t','t','p',':','/','/','n','s','.','a','d','o','b','e','.','c','o','m','/','x','a','p','/','1','.','0','/','s','T','y','p','e','/','J','o','b','#',0 }
static

Definition at line 823 of file metadataquery.c.

◆ str

WCHAR str[10]

Definition at line 141 of file metadataquery.c.

Referenced by map_type().

◆ 

const struct { ... } str2vt[]
Initial value:
=
{
{ 4, {'c','h','a','r'}, VT_I1 },
{ 5, {'u','c','h','a','r'}, VT_UI1 },
{ 5, {'s','h','o','r','t'}, VT_I2 },
{ 6, {'u','s','h','o','r','t'}, VT_UI2 },
{ 4, {'l','o','n','g'}, VT_I4 },
{ 5, {'u','l','o','n','g'}, VT_UI4 },
{ 3, {'i','n','t'}, VT_I4 },
{ 4, {'u','i','n','t'}, VT_UI4 },
{ 8, {'l','o','n','g','l','o','n','g'}, VT_I8 },
{ 9, {'u','l','o','n','g','l','o','n','g'}, VT_UI8 },
{ 5, {'f','l','o','a','t'}, VT_R4 },
{ 6, {'d','o','u','b','l','e'}, VT_R8 },
{ 3, {'s','t','r'}, VT_LPSTR },
{ 4, {'w','s','t','r'}, VT_LPWSTR },
{ 4, {'g','u','i','d'}, VT_CLSID },
{ 4, {'b','o','o','l'}, VT_BOOL }
}
@ VT_UI8
Definition: compat.h:2315
@ VT_LPSTR
Definition: compat.h:2324
@ VT_R4
Definition: compat.h:2299
@ VT_R8
Definition: compat.h:2300
@ VT_I8
Definition: compat.h:2314
@ VT_I1
Definition: compat.h:2310
@ VT_I4
Definition: compat.h:2298
@ VT_BOOL
Definition: compat.h:2306
@ VT_I2
Definition: compat.h:2297
@ VT_UI4
Definition: compat.h:2313
@ VT_UI1
Definition: compat.h:2311

Referenced by map_type().

◆ stRef

const WCHAR stRef[] = { 's','t','R','e','f',0 }
static

Definition at line 818 of file metadataquery.c.

◆ stRef_scheme

const WCHAR stRef_scheme[] = { 'h','t','t','p',':','/','/','n','s','.','a','d','o','b','e','.','c','o','m','/','x','a','p','/','1','.','0','/','s','T','y','p','e','/','R','e','s','o','u','r','c','e','R','e','f','#',0 }
static

Definition at line 819 of file metadataquery.c.

◆ stVer

const WCHAR stVer[] = { 's','t','V','e','r',0 }
static

Definition at line 820 of file metadataquery.c.

◆ stVer_scheme

const WCHAR stVer_scheme[] = { 'h','t','t','p',':','/','/','n','s','.','a','d','o','b','e','.','c','o','m','/','x','a','p','/','1','.','0','/','s','T','y','p','e','/','V','e','r','s','i','o','n','#',0 }
static

Definition at line 821 of file metadataquery.c.

◆ subW

const WCHAR subW[] = { 's','u','b',0 }
static

Definition at line 649 of file metadataquery.c.

◆ tEXtW

const WCHAR tEXtW[] = { 't','E','X','t',0 }
static

Definition at line 663 of file metadataquery.c.

◆ thumbW

const WCHAR thumbW[] = { 't','h','u','m','b',0 }
static

Definition at line 662 of file metadataquery.c.

◆ tiff

const WCHAR tiff[] = { 't','i','f','f',0 }
static

Definition at line 808 of file metadataquery.c.

◆ tiff_scheme

const WCHAR tiff_scheme[] = { 'h','t','t','p',':','/','/','n','s','.','a','d','o','b','e','.','c','o','m','/','t','i','f','f','/','1','.','0','/',0 }
static

Definition at line 809 of file metadataquery.c.

◆ tiffW

const WCHAR tiffW[] = { 't','i','f','f',0 }
static

Definition at line 644 of file metadataquery.c.

◆ tIMEW

const WCHAR tIMEW[] = { 't','I','M','E',0 }
static

Definition at line 683 of file metadataquery.c.

◆ unknownW

const WCHAR unknownW[] = { 'u','n','k','n','o','w','n',0 }
static

Definition at line 647 of file metadataquery.c.

◆ vt

VARTYPE vt

Definition at line 142 of file metadataquery.c.

Referenced by get_token(), and map_type().

◆ wmphotoW

const WCHAR wmphotoW[] = { 'w','m','p','h','o','t','o',0 }
static

Definition at line 646 of file metadataquery.c.

◆ xapGImg

const WCHAR xapGImg[] = { 'x','a','p','G','I','m','g',0 }
static

Definition at line 814 of file metadataquery.c.

◆ xapGImg_scheme

const WCHAR xapGImg_scheme[] = { 'h','t','t','p',':','/','/','n','s','.','a','d','o','b','e','.','c','o','m','/','x','a','p','/','1','.','0','/','g','/','i','m','g','/',0 }
static

Definition at line 815 of file metadataquery.c.

◆ xmp

const WCHAR xmp[] = { 'x','m','p',0 }
static

Definition at line 792 of file metadataquery.c.

◆ xmp_scheme

const WCHAR xmp_scheme[] = { 'h','t','t','p',':','/','/','n','s','.','a','d','o','b','e','.','c','o','m','/','x','a','p','/','1','.','0','/',0 }
static

Definition at line 793 of file metadataquery.c.

◆ xmpaltW

const WCHAR xmpaltW[] = { 'x','m','p','a','l','t',0 }
static

Definition at line 667 of file metadataquery.c.

◆ xmpbagW

const WCHAR xmpbagW[] = { 'x','m','p','b','a','g',0 }
static

Definition at line 665 of file metadataquery.c.

◆ xmpBJ

const WCHAR xmpBJ[] = { 'x','m','p','B','J',0 }
static

Definition at line 800 of file metadataquery.c.

◆ xmpBJ_scheme

const WCHAR xmpBJ_scheme[] = { 'h','t','t','p',':','/','/','n','s','.','a','d','o','b','e','.','c','o','m','/','x','a','p','/','1','.','0','/','b','j','/',0 }
static

Definition at line 801 of file metadataquery.c.

◆ xmpDM

const WCHAR xmpDM[] = { 'x','m','p','D','M',0 }
static

Definition at line 828 of file metadataquery.c.

◆ xmpDM_scheme

const WCHAR xmpDM_scheme[] = { 'h','t','t','p',':','/','/','n','s','.','a','d','o','b','e','.','c','o','m','/','x','m','p','/','1','.','0','/','D','y','n','a','m','i','c','M','e','d','i','a','/',0 }
static

Definition at line 829 of file metadataquery.c.

◆ xmpidq

const WCHAR xmpidq[] = { 'x','m','p','i','d','q',0 }
static

Definition at line 794 of file metadataquery.c.

◆ xmpidq_scheme

const WCHAR xmpidq_scheme[] = { 'h','t','t','p',':','/','/','n','s','.','a','d','o','b','e','.','c','o','m','/','x','m','p','/','I','d','e','n','t','i','f','i','e','r','/','q','u','a','l','/','1','.','0','/',0 }
static

Definition at line 795 of file metadataquery.c.

◆ xmpMM

const WCHAR xmpMM[] = { 'x','m','p','M','M',0 }
static

Definition at line 798 of file metadataquery.c.

◆ xmpMM_scheme

const WCHAR xmpMM_scheme[] = { 'h','t','t','p',':','/','/','n','s','.','a','d','o','b','e','.','c','o','m','/','x','a','p','/','1','.','0','/','m','m','/',0 }
static

Definition at line 799 of file metadataquery.c.

◆ xmpRights

const WCHAR xmpRights[] = { 'x','m','p','R','i','g','h','t','s',0 }
static

Definition at line 796 of file metadataquery.c.

◆ xmpRights_scheme

const WCHAR xmpRights_scheme[] = { 'h','t','t','p',':','/','/','n','s','.','a','d','o','b','e','.','c','o','m','/','x','a','p','/','1','.','0','/','r','i','g','h','t','s','/',0 }
static

Definition at line 797 of file metadataquery.c.

◆ xmpseqW

const WCHAR xmpseqW[] = { 'x','m','p','s','e','q',0 }
static

Definition at line 666 of file metadataquery.c.

◆ xmpstructW

const WCHAR xmpstructW[] = { 'x','m','p','s','t','r','u','c','t',0 }
static

Definition at line 664 of file metadataquery.c.

◆ xmpTPg

const WCHAR xmpTPg[] = { 'x','m','p','T','P','g',0 }
static

Definition at line 802 of file metadataquery.c.

◆ xmpTPg_scheme

const WCHAR xmpTPg_scheme[] = { 'h','t','t','p',':','/','/','n','s','.','a','d','o','b','e','.','c','o','m','/','x','a','p','/','1','.','0','/','t','/','p','g','/',0 }
static

Definition at line 803 of file metadataquery.c.

◆ xmpW

const WCHAR xmpW[] = { 'x','m','p',0 }
static

Definition at line 661 of file metadataquery.c.

Referenced by test_WICMapSchemaToName(), and test_WICMapShortNameToGuid().