【发布时间】:2016-11-26 07:26:48
【问题描述】:
以下是我尝试备份文件的 C++ 代码,包括安全信息。我使用了备份读取,但每当调用代码时,exe 就会崩溃。
char buff[225280];
DWORD numberOfBytesToRead = 225280;
DWORD dwBytesRead=0, dwBytesWritten, dwBytesRead2=0;
BOOL bProcessSecurity = TRUE;
LPWSTR sourceBackupFile = L"E:\\myFolder\\backup.txt";
HANDLE source = CreateFile(sourceBackupFile, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
// Check for errors
if (source == INVALID_HANDLE_VALUE) {
cout<<"The Handle is Invalid:"<<GetLastError()<<endl;
}
else
{
cout<< "\n The source file is in E:\\myFolder\\backup.txt" <<endl ;
}
LPDWORD numberofbytedsreadinreadFile = 0;
cout << "Point Of Crash" << endl;
if (!BackupRead(
source,
&buff,
numberOfBytesToRead,
numberofbytedsreadinreadFile,
FALSE,
TRUE,
NULL
))
{
cout << "Backup Read Failed with the error::" << GetLastError() << endl ;
}
它会在崩溃前打印出来
The source file is in E:\\myFolder\\backup.txt
"Point of Crash"
【问题讨论】:
-
崩溃前会打印什么?无效的句柄,或有效的源文件?您不应该尝试使用无效句柄做任何事情。
-
它会打印“Point of Crash”,然后才不会崩溃。我只是试图打开手柄,我没有用它做任何事情。之后我关闭了手柄。我想这不是问题,因为它在那之前就坏了
-
句柄用作BackupRead的参数。您的程序应根据您的源代码在崩溃点之前打印其中一个 couts。
-
抱歉,我编辑了它在崩溃前打印的问题“源文件位于 E:\\myFolder\\backup.txt”和“崩溃点”
-
刚刚注意到您调用了 CreateFile。你想读
backup.txt,还是写信给它?
标签: c++ windows file winapi backup