Программирование для Windows NT (том 2)

       

Если произошла ошибка, анализируем ее


  ovRead.OffsetHigh = 0;

  ovRead.hEvent = NULL;

 

  // Инициализация структуры для асинхронной записи

  ovWrite.Offset = 0;

  ovWrite.OffsetHigh = 0;

  ovWrite.hEvent = NULL;

  // Выполняем перекодировку файла в цикле

  while(TRUE)

  {

    // Запускаем операцию асинхронного чтения

    bResult = ReadFile(hSrcFile, cBuf, sizeof(cBuf),

      &dwBytesRead, &ovRead);

   

    // Проверяем результат запуска

    if(!bResult)

    {

      // Если произошла ошибка, анализируем ее код

      switch (dwError = GetLastError())

      {

        // При достижении конца файла завершаем работу

        // цикла и возвращаемся из функции

        case ERROR_HANDLE_EOF:

        {

          return;

        }

        // Операция чтения запущена и еще выполняется

        case ERROR_IO_PENDING:

        {

          // Здесь вы можете разместить вызов функции,

          // которая будет выполняться параллельно с

          // только что запущенной операцией чтения

          //

          //  IdleWork();

         

          // Перед тем как перейти к перекодировке

          // считанного из файла блока, необходимо

          // дождаться завершения операции

          WaitForSingleObject(hSrcFile, INFINITE);

          // Получаем результат выполнения асинхронной

          // операции чтения

          bResult = GetOverlappedResult(hSrcFile, &ovRead,

            &dwBytesRead, FALSE);

         

          if(!bResult)

          {

            switch (dwError = GetLastError())

            {

              // При достижении конца файла завершаем работу

              // цикла и возвращаемся из функции

              case ERROR_HANDLE_EOF:

              {

                return;

              }

              default:

                break;

            }

          }

        }

        default:

          break;       

      }

    }

    // Получаем результат выполнения асинхронной

    // операции чтения


Содержание  Назад  Вперед







Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий