Exe在BackupRead Windows函数中崩溃
Exe crashes in BackupRead Windows function
下面是我的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"
您将NULL
作为最后一个参数传递给BackupRead
,根据文档,这显然是无效的。
lpContext[out]指向一个变量的指针,该变量接收指向BackupRead用于维护上下文的内部数据结构备份操作期间的信息。您必须设置变量在第一次调用BackupRead之前由lpContext指向NULL用于指定的文件或目录。该函数为分配内存数据结构,然后将变量设置为指向结构您不能更改lpContext或它的变量在对BackupRead的调用之间指向。释放使用的内存在数据结构中,调用BackupRead,并将bAbort参数设置为备份操作完成时为TRUE。
您应该传递一个指向它的指针,该指针指向null,而不是null值。(LPVOID
表示void*
,LPVOID**
表示void**
)
与numberofbytedsreadinreadFile
相同:应该将参数传递给现有变量,而不是null指针,它是out参数。
void* backupContext = NULL;
int numberOfBytesRead = 0;
cout << "Point Of Crash" << endl;
if (!BackupRead(
source,
&buff,
numberOfBytesToRead,
&numberOfBytesRead,
FALSE,
TRUE,
&backupContext
))
如果得到一个无效的句柄,而不是继续,那么也应该从该方法返回。
相关文章:
- 内联映射初始化的动态atexit析构函数崩溃
- 执行函数时导致崩溃的变量
- C 回调函数在对象 pascal 上崩溃
- 除非使用某些寄存器,否则函数挂钩会崩溃
- Linux c++.在预加载的共享库中定义的基类的崩溃调用函数
- Rcpp 函数在打包时使 RStudio 崩溃
- 使用 MS 绕道挂钩在调用钩子函数时崩溃C++
- 矢量迭代器在尝试调用函数时使我的程序崩溃
- 使用唯一指针调用函数会使我的程序崩溃
- 钩/绕道 d3d9 (现在/结束场景) - 似乎调用我的函数然后崩溃
- 程序在为链表创建推送函数时崩溃
- 递归导致程序崩溃,但 while 循环中的相同概念不是来自C++析构函数
- 从 C# 模块调用C++函数引发随机崩溃
- C++设置器函数崩溃
- EGL 在第一次 opengl 函数调用时崩溃
- 我需要做一个空函数循环回来,而不会让它崩溃或跳过
- 当我使用 ALSA lib 的函数"snd_pcm_readi"时它崩溃了
- 在C++中删除指针数组时析构函数崩溃
- 使用向量的函数崩溃,调试器说访问冲突读取位置
- 我的单例中的数组在离开函数后没有保留信息,然后在尝试再次访问信息时崩溃