Se hace de la siguiente forma.
// abrimos la disquetera como si de un archivo se tratara.
hDevice = CreateFile("\\\\.\\A:", GENERIC_WRITE, FILE_SHARE_WRITE, NULL, OPEN_EXISTING, NULL, NULL);
// en este caso la he abierto solo para escribir, si quieres leer pon un flag más y ya esta, mira en msdn. leer 
// preparamos la posición a escribir se utiliza un entero de 64 bits, por lo tanto tengo que convertir
__int64 posicion = sector * bytesSector; // bytes por sector suelen ser 512, pero se puede averiguqar con el api.
LARGE_INTEGER liNewPos;
liNewPos.QuadPart = posicion;
if (hDevice != INVALID_HANDLE_VALUE)
{
   // nos posicionamos 
   if(liNewPos.u.HighPart == 0)
      dw = SetFilePointer(hDevice, liNewPos.u.LowPart, NULL,FILE_BEGIN);
   else
      dw = SetFilePointer(hDevice, liNewPos.u.LowPart, &liNewPos.u.HighPart,FILE_BEGIN);
         
   if (dw != INVALID_SET_FILE_POINTER && GetLastError() == NO_ERROR)
   {
      b = WriteFile(hDevice, sbuffer0, bytesSector, &dw, NULL);
   else
      b = WriteFile(hDevice, sbuffer + (posRand*bytesSector), bytesSector, &dw, NULL);
   
      if(b == FALSE || dw != bytesSector)
      {
         printf("Error escribiendo en el sector %d", sector);   
         delete sbuffer;
         delete sbuffer0;
         CloseHandle(hDevice);
         return 0;
      }
   }
   else
   {
      printf("Error posicionandome en el sector %d", sector);   
      delete sbuffer;
      delete sbuffer0;
      CloseHandle(hDevice);
      return 0;
   }
         
        CloseHandle(hDevice);
}
// ya lo tienes