This example demonstrates most of what we've talked about so far, with
one additional neat feature. The vendor's library provided a callback
routine---a function pointer that is called every so often while the
hardware is grinding its way to the next disc. We've set that up here
to run a code block passed as an argument to seek. In the
progress function, we check to see if there is an iterator in the
current context and, if there is, run it
with the current percent done as an argument.