This
field can be interpreted in two ways. If the SPCBBUF_INTERLEAVED flag is
set, then this field is interpreted as the size of the I/O read operation.
This is used to request a read buffer of a smaller size than the ulBufSize
field. The source stream handler will take the buffer of ulBufSize
and break up the actual I/O reads into ulBlockSize chunks. If
ulBlockSize is 1, then the ulBufSize is used as the default
I/O read buffer size. Otherwise, ulBlockSize will be the I/O read
buffer size. The ulBufSize value must be a multiple of the ulBlockSize
value.
The second interpretation of this field is for non-interleaved streams,
when the SPCBBUF_INTERLEAVED is not set. The ulBlockSize field represents
the atom size of a data item. For example, for digital audio data type PCM
16-bit stereo at a 44.1KB sampling rate, the block size is 4 bytes.