📄 filewipe.cpp
字号:
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///[FileWipe - HDD File Wiping class]///////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// This class is for securly remove file from the hard drive.
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Written by Nir Dremer
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#include <windows.h>
#include <stdlib.h>
#include <time.h>
#include "filewipe.h"
namespace GenLib
{
bool FileWipe::wipeFile(const char *filename)
{
// FILE_FLAG_WRITE_THROUGH - writing directly to disk (not using cache).
HANDLE hFile = CreateFile(filename, GENERIC_WRITE, FILE_SHARE_READ|FILE_SHARE_WRITE,
NULL, OPEN_ALWAYS, FILE_FLAG_WRITE_THROUGH, NULL);
if (hFile == INVALID_HANDLE_VALUE) return false;
DWORD fileSize = GetFileSize(hFile, 0);
// if file is empty.
if (!fileSize)
{
CloseHandle(hFile);
return false;
}
for (int passes = 0; passes < OVERWRITE_PASSES; passes++)
{
char newStorage[BUFFER_SIZE];
srand((unsigned)time(NULL));
FillMemory((void*)newStorage, BUFFER_SIZE, rand() % 255);
SetFilePointer(hFile, 0, NULL, FILE_BEGIN);
DWORD left = fileSize;
int write = BUFFER_SIZE;
DWORD written = 0;
while (left)
{
if (left < BUFFER_SIZE) write = left;
BOOL status = WriteFile(hFile, newStorage, write, &written, NULL);
if (!status)
{
CloseHandle(hFile);
return false;
}
left -= write;
}
}
CloseHandle(hFile);
if (!DeleteFile(filename)) return false;
return true;
}
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -