IRowsetInfo::GetSpecification
Returns an interface pointer on the object (command or session) that created this rowset.
Syntax
HRESULT GetSpecification (
REFIID riid,
IUnknown **ppSpecification);
Parameters
riid
[in] The IID of the interface on which to return a pointer.ppSpecification
[out] A pointer to memory in which to return the interface pointer. If the provider does not have an object that created the rowset, it sets *ppSpecification to a null pointer and returns S_FALSE. If IRowsetInfo::GetSpecification fails, it must attempt to set *ppSpecification to a null pointer.
Return Code
S_OK
The method succeeded.S_FALSE
The provider does not have an object that created the rowset.E_FAIL
A provider-specific error occurred.E_INVALIDARG
ppSpecification was a null pointer.E_NOINTERFACE
The object that created this rowset did not support the interface specified in riid.E_UNEXPECTED
ITransaction::Commit or ITransaction::Abort was called, and the object is in a zombie state.DB_E_NOTREENTRANT
The provider called a method from IRowsetNotify in the consumer that had not yet returned, and the provider does not support reentrancy in this method.
Comments
This method makes no logical change to the state of the current rowset.
IRowsetInfo::GetSpecification returns an interface pointer on the object that created the rowset. If a rowset was obtained from a multiple results object, IRowsetInfo::GetSpecification returns an interface pointer on the command or session object that created the multiple results object. If the rowset was created by ICommand::Execute, this object is a command. If the rowset was created by IOpenRowset::OpenRowset, this object is a session.
If the object is not a command, it must specify the contents of the rowset. That is, it must expose interfaces that can be used to modify the contents of the rowset before the rowset is created, or it must be used to gain additional information about the rowset. If the object cannot expose such interfaces, IRowsetInfo::GetSpecification should return a null pointer in *ppSpecification. In a simple provider, such as a provider that creates a rowset over a fixed set of data, there might not be an object that created the rowset; in this case, IRowsetInfo::GetSpecification returns a null pointer in *ppSpecification.
If the rowset is the COLUMNS rowset (as returned by IColumnsRowset::GetColumnRowset), IRowsetInfo::GetSpecification returns an interface on the rowset that implemented IColumnsRowset, and not the command or session that is the parent of this rowset.