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.
Comments
- Anonymous
November 14, 2006
Have you ever felt this before? It's the day after you send your product to manufacturing . You step