win-capture: Use GetSytemDirectory instead of SH*

Instead of using shell functions to get the windows system directory,
use the kernel32 functions (GetSystemDirectory and
GetSystemWow64Directory).  Reduces a bit of unnecessary overhead.
This commit is contained in:
jp9000 2015-10-05 14:00:52 -07:00
parent a468777614
commit b4597218f0
2 changed files with 11 additions and 10 deletions

View File

@ -1,6 +1,5 @@
#define _CRT_SECURE_NO_WARNINGS
#include <windows.h>
#include <shlobj.h>
#include <psapi.h>
#include "graphics-hook.h"
#include "../obfuscate.h"
@ -139,10 +138,9 @@ static inline bool init_mutexes(void)
static inline bool init_system_path(void)
{
HRESULT hr = SHGetFolderPathA(NULL, CSIDL_SYSTEM, NULL,
SHGFP_TYPE_CURRENT, system_path);
if (hr != S_OK) {
hlog("Failed to get windows system path: %08lX", hr);
UINT ret = GetSystemDirectoryA(system_path, MAX_PATH);
if (!ret) {
hlog("Failed to get windows system path: %lu", GetLastError());
return false;
}

View File

@ -7,7 +7,6 @@
#include <util/pipe.h>
#include <windows.h>
#include <shlobj.h>
#include "graphics-hook-info.h"
extern struct graphics_offsets offsets32;
@ -98,12 +97,16 @@ static bool get_32bit_system_dll_ver(const wchar_t *system_lib,
struct win_version_info *ver)
{
wchar_t path[MAX_PATH];
UINT ret;
HRESULT hr = SHGetFolderPathW(NULL, CSIDL_SYSTEMX86, NULL,
SHGFP_TYPE_CURRENT, path);
if (hr != S_OK) {
#ifdef _WIN64
ret = GetSystemWow64DirectoryW(path, MAX_PATH);
#else
ret = GetSystemDirectoryW(path, MAX_PATH);
#endif
if (!ret) {
blog(LOG_ERROR, "Failed to get windows 32bit system path: "
"%08lX", hr);
"%lu", GetLastError());
return false;
}