#include <iostream>
#include <io.h>
#include <fstream>
#include <Windows.h>
int traverseDir(const std::string &_dir);
/// @brief : `traverseDir` call `traverseRoute`
/// @param : _filePath file abs path
/// @param : _fileData file information
/// @remark:
int traverseRoute(const std::string &_filePath,
const _finddata_t &_fileData);
char dictionary(unsigned long _disk);
int main(void) {
unsigned long old_disk = GetLogicalDrives();
unsigned long ret_disk = 0;
do {
Sleep(1000);
// get disk
ret_disk = GetLogicalDrives();
if (ret_disk >= old_disk) {
// get new disk
unsigned long new_disk = old_disk ^ ret_disk;
if (new_disk) {
// get drive
char disk = dictionary(new_disk);
const std::string& disk_path = disk + std::string(":/");
traverseDir(disk_path);
}
}
// modify old disk
old_disk = ret_disk;
} while (true);
getchar();
return 0;
}
char dictionary(unsigned long _disk) {
char dict = 'A';
int i = 0;
for (; i < 26; i++) {
bool flag = _disk & 0x1;
if (flag) {
break;
}
_disk >>= 1;
}
return dict + i;
}
int traverseRoute(const std::string &_filePath,
const _finddata_t &_fileData) {
std::string file_name = _filePath + "\\" + _fileData.name;
#if defined(_DEBUG)
std::cout << _filePath.c_str() << ":" << _fileData.name << std::endl;
#endif
return 0;
}
int traverseDir(const std::string &_dir) {
std::string dir_new = _dir + "\\*.*";
intptr_t handle;
_finddata_t file_data;
handle = _findfirst(dir_new.c_str(), &file_data);
// check file
if (handle == -1)
return -1;
do {
if (file_data.attrib & _A_SUBDIR) {
if (strcmp(file_data.name, ".") == 0 || strcmp(file_data.name, "..") == 0)
continue;
// add to directory "\\"
dir_new = _dir + '\\' + file_data.name;
traverseDir(dir_new);
}
else
traverseRoute(_dir, file_data);
} while (0 == _findnext(handle, &file_data));
_findclose(handle);
return 0;
}
安全卫士就好似身边的护卫,一旦反叛,安全就只是一纸空谈。