Результат ReadFile?

Общие вопросы, не зависящие от языка реализации.

Модераторы: Duncon, Eugie, Romeo, Hawk

Ответить
Аватара пользователя
Сионист
Сообщения: 1078
Зарегистрирован: 31 мар 2014, 06:18

21 окт 2015, 11:16

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


Функция ReadFile возвращает значение тогда, когда выполнено одно из ниже перечисленных  условий: 

    - операция записи завершается на записывающем конце канала, 
    - затребованное число байтов прочитано, 
    - или происходит ошибка.

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

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

Если величина возвращаемого значения - не ноль, а число прочитанных байтов равняется нулю, указатель файла был за пределами текущего конца файла на момент операции чтения. Однако, если файл был открыт с флажком FILE_FLAG_OVERLAPPED, и lpOverlapped имеет  значение не ПУСТО (NULL), величина возвращаемого значения - ноль, а GetLastError возвращает ошибку ERROR_HANDLE_EOF, когда указатель файла проходит вне текущего конца файла.
Значит ли это, что можно заменить

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

ReadFile(File, Data, sizeof(Data), &Readed, nullptr);
if (Readed!=sizeof(Data))
{
 ...
}
на

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

if (ReadFile(File, Data, sizeof(Data), nullptr, nullptr)==0)
{
 ...
}
? Понимается ли под ошибкой сам факт несовпадения количества фактически прочитанных байтов от значения третьего параметра не зависимо от причины? При чём здесь какой то записывающий конец и что подразумевается под ним?
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.
Аватара пользователя
somewhere
Сообщения: 1837
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

21 окт 2015, 11:27

Понимается ли под ошибкой сам факт несовпадения количества фактически прочитанных байтов от значения третьего параметра не зависимо от причины?
Там же написано, что если файл был открыт с флажком FILE_FLAG_OVERLAPPED, и lpOverlapped имеет значение не ПУСТО (NULL) - то в этом случае будет ошибка, т.к. несовпадение прочитанных байт и затребованных байт говорит о том, что достигнут конец файла (либо достигнут участок блокировки)
Лично я бы не ориентировался на результат функции, а проверял бы сколько байт прочитано, т.к. мне лично все равно что там происходит - лишь бы я получил те байтики, которые просил. Ну а если бы не получил - тогда уже проверял бы в чем причина
It's a long way to the top if you wanna rock'n'roll
Аватара пользователя
Сионист
Сообщения: 1078
Зарегистрирован: 31 мар 2014, 06:18

21 окт 2015, 14:06

Причина нафиг не нужна, нужен факт. И у меня же там написан nullptr.
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.
ThomasSpact
Сообщения: 0
Зарегистрирован: 04 фев 2017, 23:02

21 сен 2017, 14:36

aOur site offers a wide variety of non prescription drugs. Look at our health site in case you want to feel better. http://5a.buycytoteconline.us/cytotec-5 ... 63216.html Our company provides herbal healthcare products. Visit our health contributing website in case you want to look better. http://6nz.buycytoteconline.us/cytotec- ... 55505.html Our company offers a wide variety of non prescription drugs. Look at our health portal in case you want to feel better with a help generic supplements. http://3y.buycytoteconline.us/cytotec-2 ... 46334.html Our company provides a wide variety of health and related products. Take a look at our health contributing site in case you want to look healthier. http://d2l.buycytoteconline.us/cytotec- ... 55066.html Our company provides healthcare products. Look at our health contributing website in case you want to look healthier. http://1x7v.buycytoteconline.us/cytotec ... 55606.html Our company offers a wide variety of non prescription drugs. Visit our health portal in case you want to look healthier with a help generic supplements. http://16gu.buycytoteconline.us/cytotec ... 16930.html
Our company offers a wide variety of non prescription drugs. Visit our health site in case you want to look better with a help generic supplements. http://2i.buycytoteconline.us/cytotec-5 ... 43743.html Our company provides a wide variety of non prescription products. Take a look at our health site in case you want to strengthen your health with a help generic supplements. http://lc3.buycytoteconline.us/cytotec- ... 78972.html Our company offers herbal pills. Visit our health contributing website in case you want to feel healthier. http://lc3.buycytoteconline.us/cytotec- ... 58166.html Our company offers safe general health products. Look at our health contributing portal in case you want to look healthier. http://51hk.buycytoteconline.us/cytotec ... 45222.html Our company provides a wide variety of non prescription products. Look at our health portal in case you want to look better.
Ответить