Письменное понимание
Я пишу драйвер и использую fwrite для записи данных в файл. У меня есть класс logger, который использует fwrite. Теперь я передаю указатель и размер, но данные, записанные в файл, кажутся 161 байтами, а я передаю 160 в качестве длины (вызов по ref как аргумент функции класса logger - оболочки fwrite). В 5/6 разрядах записывается 160 байт, но в 1 случае записывается 161 байт. Я не могу понять, как.
Дополнительная информация: я нахожусь на Win7. Используя VS/DDK, используя шестнадцатеричный редактор Notepad++ для просмотра данных, данные записываются с помощью '\n', разделяя теги данных, чтобы их можно было увидеть и в блокноте.
код:
size_t AbhiLogger :: addData(const void * data, size_t length) {
if(m_pFile== NULL)
return E_BADFILE;
return fwrite(data, 1,length, m_pFile);
}
AbhiLogger инкапсулирует путь, имя файла и расширения вместе с дескриптором файла. Причина в том, что вы можете изменить имя /extn/path на любое или все, и это будет ассоциировать дескриптор с вновь открытым после закрытия предыдущего файла.