Share via


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.

See Also

Reference

IAccessor::AddRefAccessor

IAccessor::CreateAccessor