Основы программирования в Win32API. Марапулец Ю.В. - 63 стр.

UptoLike

Составители: 

{
unsigned long wct;
if (!ReadFi1e(f, buf, sizeof(buf), &n, NULL))
break;
if (n)
WriteFile(out, buf, n, &wct, NULL);
}
while (n == sizeof(buf)); // Если EOF, это условие не выполняется
CloseHandle(f);
}
void main(int argc, char *argv[])
{
if (argc == 1)
{
// утилита cat – ошибки фактически не обрабатываются
// любая ошибка вызывает аварийное завершение программы
MB(«Usage: cat FILENAME [FILENAME ....]»);
exit(9);
}
// Обработать все указанные файлы
while (--argc) docat(*++argv);
exit(0);
}…
Таким образом, происходит работа с файлами на уровне Win32 API.
Обычно при обращении к ReadFile() или WriteFile() работа программного
потока приостанавливается до того момента, когда операция
чтения/записи
будет завершена. Благодаря механизмам асинхронного ввода/вывода про-
грамма может осуществлять ввод/вывод данных и одновременно с этим вы-
полнять какие-либо другие полезные действия (например, сложные матема-
тические вычисления).
Асинхронный ввод/вывод можно реализовать несколькими разными
способами. Проще всего создать новый программный поток и осуществлять
весь ввод/ вывод средствами этого потока. Вместо этого можно использо-
вать перекрывающийся ввод/вывод или порты завершения ввода/вывода.
63
     {
           unsigned long wct;
           if (!ReadFi1e(f, buf, sizeof(buf), &n, NULL))
                  break;
           if (n)
                  WriteFile(out, buf, n, &wct, NULL);
     }
     while (n == sizeof(buf)); // Если EOF, это условие не выполняется
     CloseHandle(f);
}
void main(int argc, char *argv[])
{
       if (argc == 1)
       {
// утилита cat – ошибки фактически не обрабатываются
// любая ошибка вызывает аварийное завершение программы
              MB(«Usage: cat FILENAME [FILENAME ....]»);
              exit(9);
       }
  // Обработать все указанные файлы
       while (--argc) docat(*++argv);
       exit(0);
}…
      Таким образом, происходит работа с файлами на уровне Win32 API.
Обычно при обращении к ReadFile() или WriteFile() работа программного
потока приостанавливается до того момента, когда операция чтения/записи
будет завершена. Благодаря механизмам асинхронного ввода/вывода про-
грамма может осуществлять ввод/вывод данных и одновременно с этим вы-
полнять какие-либо другие полезные действия (например, сложные матема-
тические вычисления).
      Асинхронный ввод/вывод можно реализовать несколькими разными
способами. Проще всего создать новый программный поток и осуществлять
весь ввод/ вывод средствами этого потока. Вместо этого можно использо-
вать перекрывающийся ввод/вывод или порты завершения ввода/вывода.




                                      63