Страница 1 из 1

Результат WriteFile

Добавлено: 21 окт 2015, 10:09
Сионист
Возвращаемые значения

Если функция завершается успешно, величина возвращаемого значения - не ноль.

Если функция завершается с ошибкой, величина возвращаемого значения - ноль. Чтобы получить дополнительные сведения об ошибке, вызовите GetLastError.
Значит ли это, что можно заменить

Код: Выделить всё

WriteFile(File, (void*)FormatMarker, sizeof(FormatMarker), &Writen, nullptr);
 if (Writen!=sizeof(FormatMarker))
 {
  CloseHandle(File);
  return false;
 }
на

Код: Выделить всё

if (WriteFile(File, (void*)FormatMarker, sizeof(FormatMarker), nullptr, nullptr)==0)
 if (Writen!=sizeof(FormatMarker))
 {
  CloseHandle(File);
  return false;
 }
? Что здесь вообще понимается под ошибкой?

Re: Результат WriteFile

Добавлено: 21 окт 2015, 10:15
somewhere
При таком раскладе было бы логично вот так:

Код: Выделить всё

if (WriteFile(File, (void*)FormatMarker, sizeof(FormatMarker), nullptr, nullptr)==0)
 {
  CloseHandle(File);
  return false;
 }

Re: Результат WriteFile

Добавлено: 21 окт 2015, 10:46
Сионист
А ну да, именно это я и имел ввиду. Недозаменил. Вопрос в том, адекватна ли такая замена? Понимается ли под ошибкой просто факт отличия количества фактически записанных байтов от значения третьего параметра функции?

Re: Результат WriteFile

Добавлено: 21 окт 2015, 10:52
Romeo
Под ошибкой имеется в виду любая непредвиденная ситуация (от закончившегося места до аппаратного сбоя), которая не позволила произвести запись в файл. Так что замена вполне адекватна.