Canonical Property Names

Most of the property system uses PROPERTYKEYs to identify properties.  But you can also identify a property using its canonical name.  For instance, PKEY_DateModified corresponds to L"System.DateModified". 

Whereas a PROPERTYKEY was good for coding and binary structures, the name is the ideal form for the registry or config files.  Canonical names are meant to be programmer friendly, composed of [0-9A-Za-z.], up to 63 characters long, and are structured as Company.Group.Property.  The only exception to the naming convension is that the built-in system properties are named System.Group.Property. 

Anyway, converting between a canonical name and a key is easy.  These two functions are very cheap (a hash table lookup, usually). 

// from propsys.h
PSGetPropertyKeyFromName(__in PCWSTR pszName, __out PROPERTYKEY *ppropkey);
PSGetNameFromPropertyKey(__in REFPROPERTYKEY propkey, __out PWSTR *ppszCanonicalName);

There's even a version of PSGetPropertyDescription that takes canonical names...

PSSTDAPI PSGetPropertyDescriptionByName(LPCWSTR pszCanonicalName, __in REFIID riid, __deref_out void **ppv);

Comments (1)
  1. chrisg says:

    glad to see posts on the Vista property system! good stuff.

Comments are closed.

Skip to main content