ICommandProperties specifies to the command the properties that must be supported by the rowsets returned by ICommand::Execute. The most commonly requested properties are the interfaces the rowset must support. In addition to interfaces, the consumer can request properties that modify the behavior of the rowset or interfaces.
All rowsets must support IRowset, IAccessor, IColumnsInfo, IRowsetInfo, and IConvertType. Providers can choose to return rowsets exposing other interfaces if doing so is cheaper and exposing the returned interfaces does not affect consumer code that is not expecting them. For example, the rowset can expose IRowsetLocate even though the consumer does not request it, because this interface does not change the behavior of the rowset. The rowset cannot expose IRowsetUpdate if the consumer does not request it, because the existence of this interface changes the behavior of the IRowsetChange interface. In most cases, the riid parameter of Execute is the IID for one of the interfaces listed in the TRowset CoType
.
For a complete description of how consumers use properties, see Chapter 11, "Properties."