Writing properties #6 - GPS_READWRITE omits read-only data sources

You'll recall that there are multiple layers in the property system. In particular, the GPS_DEFAULT property system stack for files in the filesystem namespace looks like this:

[ Application using GPS_DEFAULT ]
[ Coercion Layer ]
[ Shell Item Layer ]*
[ File System Namespace ]*
[ Property Handler ]*

I've starred the layers that provide properties. The thing to notice is that there are multiple sources of properties when you use GPS_DEFAULT. 

The non-obvious datum is that GPS_READWRITE contains only a portion of this stack. Notice how the application is talking to just the property handler:

[ Application using GPS_READWRITE ]
[ Coercion Layer ]
[ Property Handler ]*

The repurcussion for applications is that they cannot see data provided by the other data sources when using GPS_READWRITE. They cannot read all the properties like they could using GPS_DEFAULT. So if you are building a details pane like the one in explorer, you'll have to read properties using GPS_DEFAULT, close the store, and then use GPS_READWRITE for writing. 

The propsys.idl file concisely mentions this tidbit:

GPS_READWRITE = 0x00000002, // Writable stores will only include handler properties

-Ben Karas

p.s. propsys.idl contains a lot of comments that apparently got stripped out from propsys.h. Ouch. I highly suggest peeking at the IDL files to see if some developer posted a comment there for the interface or structure you are using.