The IDataValueEvents Interface

interface IDataValueEvents: IDispatch
  [id(0x00000001), helpstring("Occurs when a next data block is required.")]
   HRESULT _stdcall BlockWrite([in] IDataValue * Sender, [in, out] long * Count, [in, out] void * Buffer );

The IDataValueEvents interface has been designed to support events related to data values. Actually it defines the BlockWrite method, which occurs when IStatement writes binary data and needs a next block of them. This method is always being called in time of statement executing. See the Binary Data chapter  for more.

The Sender determines IDataValue object for which, the data are being sent. You must set Count to number of bytes being sent in current block and Buffer to point to the data block.