IAccessor::ReleaseAccessor
Releases an accessor.
Syntax
HRESULT ReleaseAccessor (
HACCESSOR hAccessor,
DBREFCOUNT *pcRefCount);
Parameters
hAccessor
[in] The handle of the accessor to release.pcRefCount
[out] A pointer to memory in which to return the remaining reference count of the accessor handle. If pcRefCount is a null pointer, no reference count is returned.
Return Code
S_OK
The method succeeded.E_FAIL
A provider-specific error occurred.DB_E_BADACCESSORHANDLE
hAccessor was invalid.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
IAccessor::ReleaseAccessor decrements the reference count of the accessor:
If the reference count reaches zero, it releases the accessor and all resources used by the accessor. After an accessor is released, methods called with the handle to that accessor return DB_E_BADACCESSORHANDLE.
If the reference count is not zero, the data buffers specified in the bindings can not be released while the command interface is still in use or until a new command text is set.
On rowsets, accessors are read-only and can be shared among threads in a free-threaded style without synchronization. The consumer must call IAccessor::ReleaseAccessor to decrement the reference count on an accessor that has been passed to a thread and is no longer needed by that thread.
This method can be called while the rowset is in a zombie state to enable the consumer to clean up after a transaction has been committed or aborted.