ReactOS  0.4.14-dev-606-g14ebc0b
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 }
HRESULT hr
Definition: shlfolder.c:183
GLuint GLuint GLsizei count
Definition: gl.h:1545
GLint GLint GLsizei GLsizei GLsizei GLint GLenum format
Definition: gl.h:1546
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
const GUID * guid
smooth NULL
Definition: ftsmooth.c:416
GLuint index
Definition: glext.h:6031
LONG HRESULT
Definition: typedefs.h:77
#define S_OK
Definition: intsafe.h:59
unsigned int UINT
Definition: ndis.h:50
BOOL WINAPI IsEqualGUID(REFGUID rguid1, REFGUID rguid2)
Definition: compobj.c:4112
Definition: reader.h:83
#define WINCODEC_ERR_PROPERTYNOTFOUND
Definition: winerror.h:3279

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 }
HRESULT hr
Definition: shlfolder.c:183
HRESULT WINAPI PropVariantClear(PROPVARIANT *pvar)
Definition: ole2.c:2968
const GUID * guid
smooth NULL
Definition: ftsmooth.c:416
GLuint index
Definition: glext.h:6031
#define WINCODEC_ERR_UNEXPECTEDMETADATATYPE
Definition: winerror.h:3308
LONG HRESULT
Definition: typedefs.h:77
#define index(s, c)
Definition: various.h:29
GLsizei const GLfloat * value
Definition: glext.h:6069
#define S_OK
Definition: intsafe.h:59
union value::@482 u
const WCHAR * schema
Definition: reader.h:83
GLenum GLuint id
Definition: glext.h:5579

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);
236  if (vt == VT_ILLEGAL) return WINCODEC_ERR_WRONGSTATE;
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  {
275  PropVariantClear(id);
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  {
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);
352  PropVariantClear(id);
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  {
363  PropVariantClear(&next_schema);
364  PropVariantClear(id);
367  }
368 
369  *schema = *id;
370  *id = next_id;
371  }
372 
373  return S_OK;
374 }
HRESULT hr
Definition: shlfolder.c:183
BSTR WINAPI SysAllocStringLen(const OLECHAR *str, unsigned int len)
Definition: oleaut.c:339
HRESULT WINAPI PropVariantClear(PROPVARIANT *pvar)
Definition: ole2.c:2968
char * wine_dbgstr_w(const wchar_t *wstr)
Definition: atltest.h:87
#define strtolW(s, e, b)
Definition: unicode.h:33
int next_token(char **, FILE *)
HRESULT WINAPI PropVariantChangeType(PROPVARIANT *ppropvarDest, REFPROPVARIANT propvarSrc, PROPVAR_CHANGE_FLAGS flags, VARTYPE vt)
Definition: propvar.c:428
GLuint GLuint end
Definition: gl.h:1545
static LONG next_id
Definition: changenotify.c:91
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
RPC_STATUS WINAPI UuidFromStringW(RPC_WSTR s, UUID *uuid)
Definition: rpcrt4_main.c:612
static size_t elem
Definition: string.c:68
unsigned int idx
Definition: utils.c:41
smooth NULL
Definition: ftsmooth.c:416
#define WINCODEC_ERR_INVALIDQUERYREQUEST
Definition: winerror.h:3307
#define DISP_E_TYPEMISMATCH
Definition: winerror.h:2514
#define TRACE(s)
Definition: solgame.cpp:4
__wchar_t WCHAR
Definition: xmlstorage.h:180
LONG HRESULT
Definition: typedefs.h:77
static VARTYPE map_type(struct string_t *str)
GLenum GLsizei len
Definition: glext.h:6722
const char * wine_dbgstr_wn(const WCHAR *str, int n)
Definition: compat.c:342
#define WINCODEC_ERR_WRONGSTATE
Definition: winerror.h:3273
#define S_OK
Definition: intsafe.h:59
static HRESULT get_token(struct string_t *elem, PROPVARIANT *id, PROPVARIANT *schema, int *idx)
GLuint start
Definition: gl.h:1545
unsigned short VARTYPE
Definition: compat.h:1903
const WCHAR * schema
GLenum GLuint id
Definition: glext.h:5579
GLfloat GLfloat p
Definition: glext.h:8902
WINE_UNICODE_INLINE WCHAR * memchrW(const WCHAR *ptr, WCHAR ch, size_t n)
Definition: unicode.h:295
VARTYPE vt
LPVOID WINAPI CoTaskMemAlloc(SIZE_T size)
Definition: ifs.c:404

Referenced by 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 }
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
Definition: Messaging.c:560

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  {
888  if (!lstrcmpW(name2schema[i].name, name))
889  return name2schema[i].schema;
890  }
891 
892  return NULL;
893 }
int WINAPI lstrcmpW(LPCWSTR lpString1, LPCWSTR lpString2)
Definition: lstring.c:170
GLint GLint GLsizei GLsizei GLsizei GLint GLenum format
Definition: gl.h:1546
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
smooth NULL
Definition: ftsmooth.c:416
#define ARRAY_SIZE(a)
Definition: main.h:24
unsigned int UINT
Definition: ndis.h:50
BOOL WINAPI IsEqualGUID(REFGUID rguid1, REFGUID rguid2)
Definition: compobj.c:4112
const WCHAR * schema
Definition: name.c:38
static const struct @578 name2schema[]

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:111
#define NORM_IGNORECASE
Definition: winnls.h:173
WCHAR str[10]
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
INT WINAPI CompareStringW(LCID lcid, DWORD flags, LPCWSTR str1, INT len1, LPCWSTR str2, INT len2)
Definition: lang.c:2275
#define LOCALE_SYSTEM_DEFAULT
GLenum GLsizei len
Definition: glext.h:6722
#define CSTR_EQUAL
Definition: winnls.h:453
const char * wine_dbgstr_wn(const WCHAR *str, int n)
Definition: compat.c:342
static const struct @576 str2vt[]
#define ARRAY_SIZE(a)
Definition: main.h:24
unsigned int UINT
Definition: ndis.h:50
VARTYPE vt

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 {
621  QueryReader *obj;
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 }
GLsizei GLsizei GLuint * obj
Definition: glext.h:6042
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
static WCHAR * heap_strdupW(const WCHAR *str)
Definition: propsheet.c:178
smooth NULL
Definition: ftsmooth.c:416
#define GetProcessHeap()
Definition: compat.h:403
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
static FILE * out
Definition: regtests2xml.c:44
static IWICMetadataQueryReaderVtbl mqr_vtbl
#define S_OK
Definition: intsafe.h:59
#define HEAP_ZERO_MEMORY
Definition: compat.h:123

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 }
Definition: send.c:47
GLenum GLint ref
Definition: glext.h:6028
#define TRACE(s)
Definition: solgame.cpp:4
static QueryReader * impl_from_IWICMetadataQueryReader(IWICMetadataQueryReader *iface)
Definition: metadataquery.c:47
#define InterlockedIncrement
Definition: armddk.h:53
unsigned int ULONG
Definition: retypes.h:1

◆ 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 }
GLint GLint GLsizei GLsizei GLsizei GLint GLenum format
Definition: gl.h:1546
#define TRACE(s)
Definition: solgame.cpp:4
static QueryReader * impl_from_IWICMetadataQueryReader(IWICMetadataQueryReader *iface)
Definition: metadataquery.c:47

◆ 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:110
static QueryReader * impl_from_IWICMetadataQueryReader(IWICMetadataQueryReader *iface)
Definition: metadataquery.c:47
#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 }
static const WCHAR rootW[]
Definition: chain.c:69
struct _root root
#define lstrlenW
Definition: compat.h:415
#define E_INVALIDARG
Definition: ddrawi.h:101
#define TRACE(s)
Definition: solgame.cpp:4
static QueryReader * impl_from_IWICMetadataQueryReader(IWICMetadataQueryReader *iface)
Definition: metadataquery.c:47
__wchar_t WCHAR
Definition: xmlstorage.h:180
static JOBOBJECTINFOCLASS LPVOID DWORD LPDWORD ret_len
Definition: process.c:79
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
GLenum GLsizei len
Definition: glext.h:6722
#define S_OK
Definition: intsafe.h:59
unsigned int UINT
Definition: ndis.h:50
#define WINCODEC_ERR_INSUFFICIENTBUFFER
Definition: winerror.h:3303

◆ 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  {
532  hr = E_OUTOFMEMORY;
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 }
HRESULT hr
Definition: shlfolder.c:183
static HRESULT get_next_reader(IWICMetadataReader *reader, UINT index, GUID *guid, IWICMetadataReader **new_reader)
BSTR WINAPI SysAllocStringLen(const OLECHAR *str, unsigned int len)
Definition: oleaut.c:339
HRESULT WINAPI PropVariantClear(PROPVARIANT *pvar)
Definition: ole2.c:2968
static HRESULT find_reader_from_block(IWICMetadataBlockReader *block_reader, UINT index, GUID *guid, IWICMetadataReader **reader)
char * wine_dbgstr_w(const wchar_t *wstr)
Definition: atltest.h:87
struct _root root
#define WARN(fmt,...)
Definition: debug.h:111
#define lstrlenW
Definition: compat.h:415
#define lstrcpynW
Definition: compat.h:405
const GUID * guid
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
static const WCHAR * map_shortname_to_schema(const GUID *format, const WCHAR *name)
static size_t elem
Definition: string.c:68
#define FIXME(fmt,...)
Definition: debug.h:110
smooth NULL
Definition: ftsmooth.c:416
GLuint index
Definition: glext.h:6031
#define WINCODEC_ERR_INVALIDQUERYREQUEST
Definition: winerror.h:3307
#define TRACE(s)
Definition: solgame.cpp:4
static QueryReader * impl_from_IWICMetadataQueryReader(IWICMetadataQueryReader *iface)
Definition: metadataquery.c:47
#define GetProcessHeap()
Definition: compat.h:403
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
__wchar_t WCHAR
Definition: xmlstorage.h:180
LONG HRESULT
Definition: typedefs.h:77
#define index(s, c)
Definition: various.h:29
int len
GLenum GLsizei len
Definition: glext.h:6722
const char * wine_dbgstr_wn(const WCHAR *str, int n)
Definition: compat.c:342
#define S_OK
Definition: intsafe.h:59
#define lstrcpyW
Definition: compat.h:414
static HRESULT get_token(struct string_t *elem, PROPVARIANT *id, PROPVARIANT *schema, int *idx)
void WINAPI DECLSPEC_HOTPATCH SysFreeString(BSTR str)
Definition: oleaut.c:271
const WCHAR * schema
Definition: reader.h:83
VARTYPE vt
Definition: compat.h:2030
HRESULT WINAPI WICMapShortNameToGuid(PCWSTR name, GUID *guid)
GLenum GLuint id
Definition: glext.h:5579
#define WINCODEC_ERR_PROPERTYNOTSUPPORTED
Definition: winerror.h:3280
LPWSTR WINAPI lstrcatW(LPWSTR lpString1, LPCWSTR lpString2)
Definition: lstring.c:274
GLfloat GLfloat p
Definition: glext.h:8902
BSTR bstrVal
Definition: compat.h:2048
WCHAR * LPWSTR
Definition: xmlstorage.h:184
HRESULT MetadataQueryReader_CreateInstance(IWICMetadataBlockReader *mbr, const WCHAR *root, IWICMetadataQueryReader **out)
#define HeapFree(x, y, z)
Definition: compat.h:402

◆ 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 
59  if (IsEqualGUID(riid, &IID_IUnknown) ||
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 }
#define E_NOINTERFACE
Definition: winerror.h:2364
REFIID riid
Definition: precomp.h:44
smooth NULL
Definition: ftsmooth.c:416
#define debugstr_guid
Definition: kernel32.h:35
#define TRACE(s)
Definition: solgame.cpp:4
static QueryReader * impl_from_IWICMetadataQueryReader(IWICMetadataQueryReader *iface)
Definition: metadataquery.c:47
const GUID IID_IUnknown
REFIID LPVOID * ppvObject
Definition: precomp.h:44
#define S_OK
Definition: intsafe.h:59
BOOL WINAPI IsEqualGUID(REFGUID rguid1, REFGUID rguid2)
Definition: compobj.c:4112

◆ 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 }
Definition: send.c:47
GLenum GLint ref
Definition: glext.h:6028
#define TRACE(s)
Definition: solgame.cpp:4
static QueryReader * impl_from_IWICMetadataQueryReader(IWICMetadataQueryReader *iface)
Definition: metadataquery.c:47
#define GetProcessHeap()
Definition: compat.h:403
#define InterlockedDecrement
Definition: armddk.h:52
unsigned int ULONG
Definition: retypes.h:1
#define HeapFree(x, y, z)
Definition: compat.h:402

◆ 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 HRESULT_FROM_WIN32(x)
Definition: winerror.h:92
const char * wine_dbgstr_guid(const GUID *guid)
#define lstrlenW
Definition: compat.h:415
static const struct @577 guid2name[]
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
const GUID * guid
#define E_INVALIDARG
Definition: ddrawi.h:101
#define TRACE(s)
Definition: solgame.cpp:4
__wchar_t WCHAR
Definition: xmlstorage.h:180
static JOBOBJECTINFOCLASS LPVOID DWORD LPDWORD ret_len
Definition: process.c:79
int len
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
GLenum GLsizei len
Definition: glext.h:6722
#define S_OK
Definition: intsafe.h:59
#define ARRAY_SIZE(a)
Definition: main.h:24
#define min(a, b)
Definition: monoChain.cc:55
unsigned int UINT
Definition: ndis.h:50
BOOL WINAPI IsEqualGUID(REFGUID rguid1, REFGUID rguid2)
Definition: compobj.c:4112
Definition: name.c:38
#define WINCODEC_ERR_PROPERTYNOTFOUND
Definition: winerror.h:3279
#define ERROR_INSUFFICIENT_BUFFER
Definition: dderror.h:10

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 
927  *ret_len = lstrlenW(name2schema[i].name) + 1;
928  return S_OK;
929  }
930  }
931 
933 }
#define HRESULT_FROM_WIN32(x)
Definition: winerror.h:92
int WINAPI lstrcmpW(LPCWSTR lpString1, LPCWSTR lpString2)
Definition: lstring.c:170
const char * wine_dbgstr_guid(const GUID *guid)
#define lstrlenW
Definition: compat.h:415
GLint GLint GLsizei GLsizei GLsizei GLint GLenum format
Definition: gl.h:1546
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 debugstr_w
Definition: kernel32.h:32
#define E_INVALIDARG
Definition: ddrawi.h:101
#define TRACE(s)
Definition: solgame.cpp:4
__wchar_t WCHAR
Definition: xmlstorage.h:180
static JOBOBJECTINFOCLASS LPVOID DWORD LPDWORD ret_len
Definition: process.c:79
int len
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
GLenum GLsizei len
Definition: glext.h:6722
#define S_OK
Definition: intsafe.h:59
#define ARRAY_SIZE(a)
Definition: main.h:24
#define min(a, b)
Definition: monoChain.cc:55
unsigned int UINT
Definition: ndis.h:50
BOOL WINAPI IsEqualGUID(REFGUID rguid1, REFGUID rguid2)
Definition: compobj.c:4112
const WCHAR * schema
Definition: name.c:38
#define WINCODEC_ERR_PROPERTYNOTFOUND
Definition: winerror.h:3279
static const struct @578 name2schema[]
#define ERROR_INSUFFICIENT_BUFFER
Definition: dderror.h:10

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 }
static const struct @577 guid2name[]
int WINAPI lstrcmpiW(LPCWSTR lpString1, LPCWSTR lpString2)
Definition: lstring.c:194
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
const GUID * guid
#define debugstr_w
Definition: kernel32.h:32
#define E_INVALIDARG
Definition: ddrawi.h:101
#define TRACE(s)
Definition: solgame.cpp:4
#define S_OK
Definition: intsafe.h:59
#define ARRAY_SIZE(a)
Definition: main.h:24
unsigned int UINT
Definition: ndis.h:50
Definition: name.c:38
#define WINCODEC_ERR_PROPERTYNOTFOUND
Definition: winerror.h:3279

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

const WCHAR aux[] = { 'a','u','x',0 }
static

◆ 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_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_ArcChordPie(), EMFDRV_BeginPath(), EMFDRV_Ellipse(), EMFDRV_ExtTextOut(), EMFDRV_LineTo(), EMFDRV_Polylinegon(), EMFDRV_Rectangle(), EMFDRV_RestoreDC(), EMFDRV_RoundRect(), EMFDRV_SetDCBrushColor(), EMFDRV_SetDCPenColor(), emfdrv_stroke_and_fill_path(), emfpathdrv_AbortPath(), emfpathdrv_EndPath(), fetch_elf_module_info_cb(), fetch_macho_module_info_cb(), 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_dc_driver(), 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(), GraphCtrl_InvalidateCtrl(), GraphCtrl_Paint(), 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(), IntEngGradientFillRect(), IntEngGradientFillTriangle(), INTERNAL_LPTODP_FLOAT(), 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_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_file2(), open_fileref_child(), paint_scrollbar(), PATH_Arc(), PATH_CheckCorners(), 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(), pathdrv_AbortPath(), pathdrv_EndPath(), plugin_proc(), Polygon(), POLYGONFILL_FillScanLineAlternate(), POLYGONFILL_FillScanLineWinding(), pop_dc_driver(), 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 _dump_dinput_GUID(), _GetDocumentsPidl(), _ILCreateGuid(), _ILIsControlPanel(), _test_provideclassinfo(), a_to_w_callback(), ACTION_AppSearchComponents(), ACTION_CallDllFunction(), ACTION_CallScript(), ACTION_MsiPublishAssemblies(), 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(), 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(), 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(), DllThread(), 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(), GdipCreateEffect(), generate_uuid(), get_action_info(), get_bool_property(), 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_metadata_container(), get_next_reader(), get_property(), get_script_guid(), get_script_host(), get_settingid(), get_typeinfo_of_guid(), get_typelib_key(), ATL::CImage::GetClsidFromFileType(), ATL::CImage::GetCommonFilterString(), getCurrentChannelConfig(), GetRecordInfoFromTypeInfo(), CQueryAssociations::GetString(), GifDecoder_Block_GetContainerFormat(), GifFrameDecode_Block_GetContainerFormat(), Guid2str(), 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(), init_classinfo(), InitPropVariantFromGUIDAsString(), InitVariantFromGUIDAsString(), intDdGetDriverInfo(), 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(), QueryPathOfRegTypeLib(), ReadGuidNode(), register_dsound_devices(), register_key_guid(), RtlFindActivationContextSectionGuid(), RtlFindActivationContextSectionString(), RtlGUIDFromString(), SAFEARRAY_CopyData(), SafeArraySetIID(), script_parse_event(), ScriptThread(), server(), set_component_path(), set_custdata(), set_guid(), CShellLink::SetAdvertiseInfo(), setCurrentChannelConfig(), setperusersecvalues_test(), SetPerUserSecValuesW(), SHELL32_GUIDToStringA(), SHELL32_GUIDToStringW(), shellex_load_object_and_run(), ShellExecute_FromContextMenu(), SHGlobalCounterCreate(), should_enumerate_device(), SHRegGetCLSIDKeyA(), SHRegGetCLSIDKeyW(), SHStringFromGUIDA(), SHStringFromGUIDW(), squash_guid(), START_TEST(), string_to_guid(), StringToGuid(), test_Activate(), test_ClassIDs(), test_createeffect(), test_dsound(), test_dump_typelib(), test_find_progid_redirection(), test_fromguid(), test_GdipGetAllPropertyItems(), test_GetDefaultSearchGUID(), test_gif_properties(), test_GuidFunctions(), test_InitPropVariantFromGUIDAsString(), test_interface_identifier_conversion(), test_is_testdb(), test_MsiEnumComponents(), test_MsiEnumComponentsEx(), test_MsiEnumProducts(), test_MsiEnumProductsEx(), test_multi_encoder(), test_ordinal_imports(), test_Persist(), test_pixelformat_info(), Test_PrivateData(), test_PropVariantToGUID(), 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().

◆ guid2name

const { ... } 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 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
static HRESULT WINAPI mqr_GetMetadataByName(IWICMetadataQueryReader *iface, LPCWSTR query, PROPVARIANT *value)
static ULONG WINAPI mqr_Release(IWICMetadataQueryReader *iface)
Definition: metadataquery.c:82
static ULONG WINAPI mqr_AddRef(IWICMetadataQueryReader *iface)
Definition: metadataquery.c:74
static HRESULT WINAPI mqr_GetEnumerator(IWICMetadataQueryReader *iface, IEnumString **ppIEnumString)
static HRESULT WINAPI mqr_GetLocation(IWICMetadataQueryReader *iface, UINT len, WCHAR *location, UINT *ret_len)

Definition at line 609 of file metadataquery.c.

Referenced by MetadataQueryReader_CreateInstance().

◆ name

Definition at line 688 of file metadataquery.c.

◆ name2schema

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

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().

◆ str2vt

const { ... } 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 }
}
Definition: compat.h:1947
Definition: compat.h:1963
Definition: compat.h:1959
Definition: compat.h:1948
Definition: compat.h:1949
Definition: compat.h:1946

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.

Referenced by check_tiff_format(), and dump_tiff().

◆ 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().