I can open a disk, and do some reads and writes (described here: How do I read a disk directly with .Net?), but I don't know how to seek.
The API function you are looking for is SetFilePointerEx.
SetFilePointerEx