Я хочу отслеживать количество раз, когда определенная операция выполняется в файле путем кодирования метаданных в альтернативный поток данных. До сих пор я переопределен OnSaveDocument к записи этого значения в файл по экономии:Ошибка записи метаданных в файл
BOOL CEmergenceDoc::OnSaveDocument(LPCTSTR lpszPathName)
{
CRichEditDoc::OnSaveDocument(lpszPathName);
CString stream = lpszPathName;
stream += ":iterations";
LPCTSTR newPath = stream;
HANDLE hStream;
DWORD dwRet;
hStream = CreateFile(newPath, GENERIC_WRITE, FILE_SHARE_WRITE, NULL, OPEN_ALWAYS, 0,
NULL);
if(hStream == INVALID_HANDLE_VALUE)
printf("Cannot open testfile:stream\n");
else {
CString str;
CEmergenceView * current = CEmergenceView::GetView();
str.Format(_T("%d"), current->iterations);
WriteFile(hStream, str, str.GetLength(), &dwRet, NULL);
}
return TRUE;
}
Я также переопределен OnFileOpen читать альтернативный поток данных сохраненного файла.
void CEmergenceApp::OnFileOpen()
{
HANDLE hStream;
DWORD dwRet;
char ReadBuffer[BUFFERSIZE] = {0};
CWinAppEx::OnFileOpen();
OutputDebugString((CString)"here");
CEmergenceDoc * currentDoc = CEmergenceDoc::GetDoc();
CString currentPath = currentDoc->GetPathName();
currentPath += ":iterations";
OutputDebugString(currentPath);
hStream = CreateFile(currentPath,
GENERIC_WRITE,
FILE_SHARE_WRITE,
NULL,
OPEN_ALWAYS,
OPEN_EXISTING,
NULL);
if(hStream == INVALID_HANDLE_VALUE)
printf("Cannot open testfile:stream\n");
else {
ReadFile(hStream, ReadBuffer, BUFFERSIZE-1, &dwRet, NULL);
OutputDebugString((CString)"here");
}
CString test;
test = "";
test += ReadBuffer;
OutputDebugString(test);
}
Как вы можете видеть из моего кода, я пытаюсь проверить, является ли это работает распечатав все, что в ReadBuffer, но это не печатает что-нибудь, даже если это добраться до ReadFile, когда я откройте файл. Может кто-нибудь, пожалуйста, взгляните на это и скажите мне, что не так? Благодарю.
EDIT:
я сделал следующую команду в CMD:
< более TestFile: поток
и, кажется, он записывает данные в альтернативный поток данных .... поэтому проблема должна лежать в чтении .....