template<> BOOL MyDirect3D<IDirect3D3>::Hook(IDirect3D3* obj)
{
	BOOL rv = FALSE;
	rv |= VTHOOKFUNC2(IDirect3D3, CreateDevice3, CreateDevice);
	rv |= HookVTable(obj, 0, (FARPROC)MyQueryInterface, (FARPROC&)QueryInterface, __FUNCTION__": QueryInterface");
	return rv;
}
template<> BOOL MyDirect3D<IDirect3D>::Hook(IDirect3D* obj)
{
	BOOL rv = FALSE;
	//rv |= VTHOOKFUNC(IDirect3D, Initialize);
	rv |= HookVTable(obj, 0, (FARPROC)MyQueryInterface, (FARPROC&)QueryInterface, __FUNCTION__": QueryInterface");
	return rv;
}
	static BOOL Hook(IDirect3DN* obj)
	{
		//cmdprintf("SHORTTRACE: 3,50");
		BOOL rv = FALSE;
		rv |= VTHOOKFUNC(IDirect3DN, CreateDevice);
		rv |= HookVTable(obj, 0, (FARPROC)MyQueryInterface, (FARPROC&)QueryInterface, __FUNCTION__": QueryInterface");
		return rv;
	}
// these D3D versions had fewer drawing functions
template<> BOOL MyDirect3DDevice<IDirect3DDevice>::Hook(IDirect3DDevice* obj)
{
	BOOL rv = FALSE;
	rv |= VTHOOKFUNC(IDirect3DDevice, Release);
	rv |= VTHOOKFUNC(IDirect3DDevice, BeginScene);
	rv |= VTHOOKFUNC(IDirect3DDevice, EndScene);
	rv |= HookVTable(obj, 0, (FARPROC)MyQueryInterface, (FARPROC&)QueryInterface, __FUNCTION__": QueryInterface");
	return rv;
}
示例#5
0
文件: main.cpp 项目: WildeSE/D3D-Menu
DWORD WINAPI VMT_Patching(LPVOID  Param)
{
	while (1)
	{
		Sleep(100);
		HookVTable((PDWORD*)nm_pD3Ddev, (PBYTE)myEndScene, 42);
//		HookVTable((PDWORD*)nm_pD3Ddev, (PBYTE)myDrawIndexedPrimitive, 82);
	}
	return 1;
}
示例#6
0
 static BOOL Hook(IReferenceClock* obj)
 {
     BOOL rv = FALSE;
     rv |= VTHOOKFUNC(IReferenceClock, GetTime);
     rv |= VTHOOKFUNC(IReferenceClock, AdviseTime);
     rv |= VTHOOKFUNC(IReferenceClock, AdvisePeriodic);
     rv |= VTHOOKFUNC(IReferenceClock, Unadvise);
     rv |= HookVTable(obj, 0, (FARPROC)MyQueryInterface, (FARPROC&)QueryInterface, __FUNCTION__": QueryInterface");
     return rv;
 }
template<> BOOL MyDirect3DDevice<IDirect3DDevice2>::Hook(IDirect3DDevice2* obj)
{
	BOOL rv = FALSE;
	rv |= VTHOOKFUNC(IDirect3DDevice2, Release);
	rv |= VTHOOKFUNC(IDirect3DDevice2, BeginScene);
	rv |= VTHOOKFUNC(IDirect3DDevice2, EndScene);
	rv |= VTHOOKFUNC(IDirect3DDevice2, DrawPrimitive);
	rv |= VTHOOKFUNC(IDirect3DDevice2, DrawIndexedPrimitive);
	rv |= VTHOOKFUNC(IDirect3DDevice2, Begin);
	rv |= VTHOOKFUNC(IDirect3DDevice2, BeginIndexed);
	rv |= VTHOOKFUNC(IDirect3DDevice2, Vertex);
	rv |= VTHOOKFUNC(IDirect3DDevice2, Index);
	rv |= VTHOOKFUNC(IDirect3DDevice2, End);
	rv |= HookVTable(obj, 0, (FARPROC)MyQueryInterface, (FARPROC&)QueryInterface, __FUNCTION__": QueryInterface");
	return rv;
}
	static BOOL Hook(IDirect3DDeviceN* obj)
	{
		BOOL rv = FALSE;
		rv |= VTHOOKFUNC(IDirect3DDeviceN, Release);
		rv |= VTHOOKFUNC(IDirect3DDeviceN, BeginScene);
		rv |= VTHOOKFUNC(IDirect3DDeviceN, EndScene);
		rv |= VTHOOKFUNC(IDirect3DDeviceN, DrawPrimitive);
		rv |= VTHOOKFUNC(IDirect3DDeviceN, DrawIndexedPrimitive);
		rv |= VTHOOKFUNC(IDirect3DDeviceN, DrawPrimitiveStrided);
		rv |= VTHOOKFUNC(IDirect3DDeviceN, DrawIndexedPrimitiveStrided);
		rv |= VTHOOKFUNC(IDirect3DDeviceN, DrawPrimitiveVB);
		rv |= VTHOOKFUNC(IDirect3DDeviceN, DrawIndexedPrimitiveVB);
		rv |= VTHOOKFUNC(IDirect3DDeviceN, Clear);
		rv |= HookVTable(obj, 0, (FARPROC)MyQueryInterface, (FARPROC&)QueryInterface, __FUNCTION__": QueryInterface");
		return rv;
	}