ドライバーを作成し、fwrite を使用してデータをファイルに記録しています。fwrite を使用するロガー クラスがあります。現在、ポインターとサイズを渡していますが、ファイルに書き込まれたデータは 161 バイトのようですが、長さとして 160 を渡しています (ロガー クラスの関数の引数として ref によって呼び出します - fwrite ラッパー)。5/6 ケースでは 160 バイトが書き込まれますが、1 つのケースでは 161 バイトが書き込まれます。方法がわかりません。
追加情報: 私は Win7 を使用しています。VS/DDK を使用し、Notepad++ hex editor を使用してデータを表示すると、メモ帳でも見られるように、データ タグを区切るために '\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 は、パス、ファイル名、および拡張子をファイルハンドルと共にカプセル化します。その理由は、名前/拡張子/パスを任意またはすべて変更でき、前のファイルを閉じた後にハンドルを新しく開いたものに関連付けることができるためです。