下面是我的C++代码,我尝试备份一个文件,包括安全信息。我使用备份读取,但每当代码被称为EXE崩溃。Exec崩溃在BackupRead Windows功能
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"
崩溃之前它打印什么?无效的句柄或有效的源文件?你不应该试图用无效的句柄做任何事情。 – Dutow
它在没有其他任何事情发生之前打印“碰撞点”。我只是试图打开手柄,我没有用它做任何事情。那之后我关闭了手柄。我想它不是一个问题,因为它在此之前破解 – mano
该句柄用作BackupRead的参数。根据您的源代码,您的程序应该在崩溃之前打印一个cout。 – Dutow