MCPcopy Create free account
hub / github.com/NtQuery/Scylla / searchForPlugin

Method searchForPlugin

Scylla/PluginLoader.cpp:65–150  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

63}
64
65bool PluginLoader::searchForPlugin(std::vector<Plugin> & newPluginList, const WCHAR * searchPath, bool isScyllaPlugin)
66{
67 WIN32_FIND_DATA ffd;
68 HANDLE hFind = 0;
69 DWORD dwError = 0;
70 Plugin pluginData;
71
72 hFind = FindFirstFile(searchPath, &ffd);
73
74 dwError = GetLastError();
75
76 if (dwError == ERROR_FILE_NOT_FOUND)
77 {
78#ifdef DEBUG_COMMENTS
79 Scylla::debugLog.log(L"findAllPlugins :: No files found");
80#endif
81 return true;
82 }
83
84 if (hFind == INVALID_HANDLE_VALUE)
85 {
86#ifdef DEBUG_COMMENTS
87 Scylla::debugLog.log(L"findAllPlugins :: FindFirstFile failed %d", dwError);
88#endif
89 return false;
90 }
91
92 do
93 {
94 if ( !(ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) )
95 {
96
97 if ((ffd.nFileSizeHigh != 0) || (ffd.nFileSizeLow < 200))
98 {
99#ifdef DEBUG_COMMENTS
100 Scylla::debugLog.log(L"findAllPlugins :: Plugin invalid file size: %s", ffd.cFileName);
101#endif
102 }
103 else
104 {
105 pluginData.fileSize = ffd.nFileSizeLow;
106 wcscpy_s(pluginData.fullpath, baseDirPath);
107 wcscat_s(pluginData.fullpath, ffd.cFileName);
108
109#ifdef DEBUG_COMMENTS
110 Scylla::debugLog.log(L"findAllPlugins :: Plugin %s", pluginData.fullpath);
111#endif
112 if (isValidDllFile(pluginData.fullpath))
113 {
114 if (isScyllaPlugin)
115 {
116 if (getScyllaPluginName(&pluginData))
117 {
118 //add valid plugin
119 newPluginList.push_back(pluginData);
120 }
121 else
122 {

Callers

nothing calls this directly

Calls 1

logMethod · 0.80

Tested by

no test coverage detected