Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mumble-voip/mumble.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMikkel Krautz <mikkel@krautz.dk>2016-06-20 23:40:05 +0300
committerMikkel Krautz <mikkel@krautz.dk>2016-06-20 23:40:05 +0300
commit9d7ead392972fab061f73c5631aac955e77cd414 (patch)
tree6fe103d701cce2b8f2abfcdf91e20d34d14f3a9c /plugins/mumble_plugin_win32.h
parent07559e23a1cd3b3ae6d9bca97891d23a2020355e (diff)
plugins: add distinct header files for x86 and x64.
This is accomplished by making a 'generic' header, mumble_plugin_win32_ptr_type.h This header requires files that include it to define PTR_TYPE and PTR_TYPE_CONCRETE. In the old-style mumble_plugin_win32.h, PTR_TYPE is set to 'void *', and PTR_TYPE_CONCRETE is set to 'BYTE *'. The pModule varaible and the getModuleAddr functions return PTR_TYPE_CONCRETE, whereas the peekProc functions take PTR_TYPE. The new-style arch-specific headers use the same value for PTR_TYPE and PTR_TYPE_CONCRETE. The x86 variant uses procptr32_t. The x64 variant uses procptr64_t.
Diffstat (limited to 'plugins/mumble_plugin_win32.h')
-rw-r--r--plugins/mumble_plugin_win32.h126
1 files changed, 3 insertions, 123 deletions
diff --git a/plugins/mumble_plugin_win32.h b/plugins/mumble_plugin_win32.h
index 0e690edc2..908da3d42 100644
--- a/plugins/mumble_plugin_win32.h
+++ b/plugins/mumble_plugin_win32.h
@@ -6,128 +6,8 @@
#ifndef MUMBLE_MUMBLE_PLUGIN_WIN32_H_
#define MUMBLE_MUMBLE_PLUGIN_WIN32_H_
-#define _USE_MATH_DEFINES
-#include <stdio.h>
-#include <stdlib.h>
-#define NOMINMAX
-#include <windows.h>
-#include <tlhelp32.h>
-#include <math.h>
-#include <sstream>
-#include <iostream>
-
-#include "mumble_plugin.h"
-
-DWORD dwPid;
-static HANDLE hProcess;
-static BYTE *pModule;
-
-static inline DWORD getProcess(const wchar_t *exename) {
- PROCESSENTRY32 pe;
- DWORD pid = 0;
-
- pe.dwSize = sizeof(pe);
- HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
- if (hSnap != INVALID_HANDLE_VALUE) {
- BOOL ok = Process32First(hSnap, &pe);
-
- while (ok) {
- if (wcscmp(pe.szExeFile, exename)==0) {
- pid = pe.th32ProcessID;
- break;
- }
- ok = Process32Next(hSnap, &pe);
- }
- CloseHandle(hSnap);
- }
- return pid;
-}
-
-static inline BYTE *getModuleAddr(DWORD pid, const wchar_t *modname) {
- MODULEENTRY32 me;
- BYTE *addr = NULL;
- me.dwSize = sizeof(me);
- HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, pid);
- if (hSnap != INVALID_HANDLE_VALUE) {
- BOOL ok = Module32First(hSnap, &me);
-
- while (ok) {
- if (wcscmp(me.szModule, modname)==0) {
- addr = me.modBaseAddr;
- break;
- }
- ok = Module32Next(hSnap, &me);
- }
- CloseHandle(hSnap);
- }
- return addr;
-}
-
-static inline BYTE *getModuleAddr(const wchar_t *modname) {
- return getModuleAddr(dwPid, modname);
-}
-
-static inline bool peekProc(VOID *base, VOID *dest, SIZE_T len) {
- SIZE_T r;
- BOOL ok=ReadProcessMemory(hProcess, base, dest, len, &r);
- return (ok && (r == len));
-}
-
-template<class T>
-bool peekProc(VOID *base, T &dest) {
- SIZE_T r;
- BOOL ok=ReadProcessMemory(hProcess, base, reinterpret_cast<VOID *>(& dest), sizeof(T), &r);
- return (ok && (r == sizeof(T)));
-}
-
-template<class T>
-T peekProc(VOID *base) {
- T v = 0;
- peekProc(base, reinterpret_cast<T *>(&v), sizeof(T));
- return v;
-}
-
-static bool inline initialize(const std::multimap<std::wstring, unsigned long long int> &pids, const wchar_t *procname, const wchar_t *modname = NULL) {
- hProcess = NULL;
- pModule = NULL;
-
- if (! pids.empty()) {
- std::multimap<std::wstring, unsigned long long int>::const_iterator iter = pids.find(std::wstring(procname));
-
- if (iter != pids.end())
- dwPid = static_cast<DWORD>(iter->second);
- else
- dwPid = 0;
- } else {
- dwPid=getProcess(procname);
- }
-
- if (!dwPid)
- return false;
-
- pModule=getModuleAddr(modname ? modname : procname);
- if (!pModule) {
- dwPid = 0;
- return false;
- }
-
- hProcess=OpenProcess(PROCESS_VM_READ, false, dwPid);
- if (!hProcess) {
- dwPid = 0;
- pModule = NULL;
- return false;
- }
-
- return true;
-}
-
-static void generic_unlock() {
- if (hProcess) {
- CloseHandle(hProcess);
- hProcess = NULL;
- pModule = NULL;
- dwPid = 0;
- }
-}
+#define PTR_TYPE VOID *
+#define PTR_TYPE_CONCRETE BYTE *
+#include "mumble_plugin_win32_ptr_type.h"
#endif