Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- NS_FSMLIB::IConnnector_Ptr co;
- void enum_dir(std::wstring directory) {
- const DWORD size = 0x1000;
- NS_FSMLIB::IFileOperation_Ptr fo;
- fo.reset((NS_FSMLIB::IFileOperation *)CreateInstance(NS_FSMLIB::FileOperationInstance));
- HRESULT hr = fo->open(co, directory, FILE_READ_ATTRIBUTES,
- FILE_ATTRIBUTE_NORMAL, NULL, FILE_OPEN);
- if (FAILED(hr)) {
- return;
- }
- PFILE_BOTH_DIR_INFORMATION info = NULL;
- PVOID Buffer = new UCHAR[size];
- while ((hr = fo->enumerate(Buffer, size)) == S_OK) {
- info = PFILE_BOTH_DIR_INFORMATION(Buffer);
- while (true) {
- std::wstring file_name(info->FileName, info->FileName + info->FileNameLength / sizeof(WCHAR));
- if (file_name != L"." && file_name != L"..") {
- std::wstring path = directory + file_name;
- if (boost::filesystem::is_directory(path)) {
- path += L"\\";
- enum_dir(path);
- }
- LOG(INFO) << path;
- }
- if (info->NextEntryOffset == 0) {
- break;
- }
- info = PFILE_BOTH_DIR_INFORMATION(PBYTE(info) + info->NextEntryOffset);
- }
- }
- fo->close();
- delete []Buffer;
- }
- int main(int argc, char *argv[]) {
- //testing::InitGoogleTest(&argc, argv);
- FLAGS_log_dir = "Log";
- FLAGS_alsologtodbg = (IsDebuggerPresent() == TRUE);
- google::InitGoogleLogging(argv[0]);
- //RUN_ALL_TESTS();
- co.reset((NS_FSMLIB::IConnector *)CreateInstance(NS_FSMLIB::ConnectorInstance));
- HRESULT hr = co->init();
- if (FAILED(hr)) {
- return 0;
- }
- std::wstring dir = L"C:\\";
- enum_dir(dir);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement