MDAC 2.5 SDK - OLE DB Programmer's Reference
Chapter 4: Rowsets
Row handles are of type HROW and are not COM objects. Nevertheless, each row handle has its own associated reference count. These reference counts are incremented by calling IRowset::AddRefRows and decremented by calling IRowset::ReleaseRows. All methods that fetch rows are required to increment the reference counts on the returned row handles. The provider holds the rows until the consumer releases them with IRowset::ReleaseRows. The consumer must call ReleaseRows on a row once for each time it was fetched and each time AddRefRows was called on it.
Rows held by the provider are freed after the rowset's final reference has been released or after all references on the row handle have been freed. Deleting a row does not release the row handle. It does not matter whether the row is deleted by calling IRowsetUpdate::Update on a row with a pending deletion, calling IRowsetUpdate::Undo on a row with a pending insert, or calling IRowsetChange::DeleteRows: The consumer must call IRowset::ReleaseRows to release the row.