What is the Property System? – in normal language


In my first post, I described what the property system provides from an API perspective.  But I used all these techno-wiggle-waggle-jibber-jabber that my friends couldn’t follow.  Ich.  What feedback for a first post!  So here it is minus the 133t-speak:


The property system helps move information about your files — sizes, dates, names — from your hard drive to the screen. For instance, if you right click on a file to view the properties, you’ll see the file size and file name in the dialog that pops up.  The property system is what transported that data.


But the property system in Vista can do more!  It can do things like figure out the title of a document, or the star rating on a photo.  Not only that, but software developers can extend the property system to tell you the word count on a PDF, or the bit rate on an MP3.  All these things are properties that describe your files and make them easier to organize, reason with, and search over. 


In many ways, the property system is like FedEx — it’s job is transportation and logistics.  It takes data from files and sends it to the programs for display on the screen.



Well, I hope that was better.  I will be aiming most of my posts in the future at programmers who are trying to use the property system.


This post brought to you by: PKEY_Size, a UInt64 value containing the number of bytes your file occupies.

Comments (2)

  1. Thomas says:

    A unified way of obtaining file metadata is just great (not as great as WinFS though 😉 ).

    How does this integrate with the old "summary information" property sets? IPropertySetStorage et al.

  2. benkaras says:

    Great question!  

    The Vista file system namespace will wrap old IPropertySetStorage implementations in an IPropertyStore wrapper.  So on Vista you can call IShellItem2::GetPropertyStore to talk to these old implementations via IPropertyStore.

    If you are writing your own namespace and want to wrap IPropertySetStorage, you can call PSCreatePropertyStoreFromPropertySetStorage.  

    One caveat is that the wrapper is not exactly the best in terms of efficiency.  So if you are writing a property handler from scratch, we highly recommend coding to IPropertyStore.

    I do plan to eventually talk about these this topic in detail as a proper article.