make sure synwinxt.dll can only be loaded on vista and above

This commit is contained in:
Nick Bolton 2014-01-28 16:44:01 +00:00
parent b54082a568
commit a573a44842
1 changed files with 13 additions and 3 deletions

View File

@ -73,6 +73,16 @@ CMSWindowsHookLibraryLoader::openHookLibrary(const char* name)
HINSTANCE HINSTANCE
CMSWindowsHookLibraryLoader::openShellLibrary(const char* name) CMSWindowsHookLibraryLoader::openShellLibrary(const char* name)
{ {
OSVERSIONINFO osvi;
ZeroMemory(&osvi, sizeof(OSVERSIONINFO));
osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
GetVersionEx(&osvi);
if (osvi.dwMajorVersion < 6) {
LOG((CLOG_INFO "skipping shell library load, %s.dll not supported before vista", name));
return NULL;
}
// load the hook library // load the hook library
HINSTANCE shellLibrary = LoadLibrary(name); HINSTANCE shellLibrary = LoadLibrary(name);
if (shellLibrary == NULL) { if (shellLibrary == NULL) {
@ -84,8 +94,8 @@ CMSWindowsHookLibraryLoader::openShellLibrary(const char* name)
m_getDraggingFileDir = (GetDraggingFileDir)GetProcAddress(shellLibrary, "getDraggingFileDir"); m_getDraggingFileDir = (GetDraggingFileDir)GetProcAddress(shellLibrary, "getDraggingFileDir");
if (m_getDraggingFileDir == NULL) { if (m_getDraggingFileDir == NULL) {
LOG((CLOG_ERR "invalid shell library, use a newer %s.dll", name)); LOG((CLOG_ERR "invalid shell library, use a newer %s.dll", name));
throw XScreenOpenFailure(); throw XScreenOpenFailure();
} }
return shellLibrary; return shellLibrary;