MinHook_110_bin.zip
MinHook_110_bin
DynamicSample.x64.exe
DynamicSample.x86.exe
libMinHook.x64.lib
libMinHook.x86.lib
MinHook.x64.dll
MinHook.x64.lib
MinHook.x86.dll
MinHook.x86.lib
StaticSample.x64.exe
StaticSample.x86.exe
MinHook_110_src.zip
MinHook_110_src
MinHook
libMinHook
src
HDE32
HDE64
include
src
MinHook
MinHook.def
MinHookSample
DynamicSample
DynamicSample.vcproj.Asenath.Kageyu.user
MinHook.x64.lib
MinHook.x86.lib
StaticSample
libMinHook.x64.lib
libMinHook.x86.lib
MinHook_bin.zip
MinHook_bin
DynamicSample.x64.exe
DynamicSample.x86.exe
libMinHook.x64.lib
libMinHook.x86.lib
MinHook.x64.dll
MinHook.x64.lib
MinHook.x86.dll
MinHook.x86.lib
StaticSample.x64.exe
StaticSample.x86.exe
MinHook_src.zip
MinHook_src
MinHook
libMinHook
libMinHook.vcproj.Asenath.Kageyu.user
src
HDE32
HDE64
include
src
MinHook.suo
MinHook
MinHook.def
MinHook.vcproj.Asenath.Kageyu.user
MinHookSample
DynamicSample
MinHook.x64.lib
MinHook.x86.lib
StaticSample
libMinHook.x64.lib
libMinHook.x86.lib
|
/*
* MinHook - Minimalistic API Hook Library
* Copyright (C) 2009 Tsuda Kageyu. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. The name of the author may not be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#pragma once
#include <vector>
#include <boost/utility.hpp>
#include <windows.h>
#include "trampoline.h"
namespace MinHook
{
// ScopedLock �t���N���e�B�J���Z�N�V����
class CriticalSection : boost::noncopyable
{
public:
class ScopedLock : boost::noncopyable
{
private:
CriticalSection& cs_;
public:
ScopedLock(CriticalSection& cs);
~ScopedLock();
};
private:
CRITICAL_SECTION cs_;
public:
CriticalSection();
~CriticalSection();
void enter();
void leave();
};
// ����v���Z�X��̑��̃X���b�h����ׂĒ�~
class ScopedThreadExclusive
{
private:
std::vector<DWORD> threads_;
public:
ScopedThreadExclusive(const std::vector<uintptr_t>& oldIPs, const std::vector<uintptr_t>& newIPs);
~ScopedThreadExclusive();
private:
static void GetThreads(std::vector<DWORD>& threads);
static void Freeze(
const std::vector<DWORD>& threads, const std::vector<uintptr_t>& oldIPs, const std::vector<uintptr_t>& newIPs);
static void Unfreeze(const std::vector<DWORD>& threads);
};
}
|
By viewing downloads associated with this article you agree to the Terms of use and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
In 1985, I got my first computer Casio MX-10, the cheapest one of the MSX computers. Then I began programming in BASIC and assembly language, and have experienced over ten languages from that time on.
Now, my primary languages are C++ and C#. Working for a small company in my home town, the countryside of Japan.