From a60b480840c90f9f7f22051a73f45e5f7ba300a7 Mon Sep 17 00:00:00 2001 From: gho tik Date: Mon, 6 Oct 2014 12:39:20 -0400 Subject: [PATCH] v2_02_78_src Former-commit-id: 730cdf299f3e27700a78b98fd6d7f8fe7c54542f --- Doc/dxwnd_manual.odt | Bin 291545 -> 0 bytes build/dxwnd.dll | 4 +- build/dxwnd.exe | 2 +- .../Age of Empires Expansion Trial.dxw | 26 + build/exports/Age of Wonders II.dxw | 27 + .../Blair Witch Volume One - Rustin Parr.dxw | 27 + build/exports/Conflict Zone.dxw | 27 + .../exports/Disciples II - Dark Prophecy.dxw | 27 + build/exports/KA52 Team Alligator.dxw | 27 + build/exports/Myth III - The Wolf Age.dxw | 27 + build/exports/Re-Volt.dxw | 26 + build/exports/Rune.dxw | 26 + build/exports/Shogo Mobile Armor Division.dxw | 27 + build/exports/Slave Zero.dxw | 27 + build/exports/Unreal.dxw | 27 + build/exports/Warpath.dxw | 26 + build/exports/Warrior Kings.dxw | 26 + build/exports/World Racing (Demo) MX.dxw | 26 + build/exports/World Racing (Demo).dxw | 26 + build/exports/XIII.dxw | 27 + build/readme-relnotes.txt | 12 +- dll/ddraw.cpp | 160 ++-- dll/dxhelper.cpp | 22 + dll/dxhelper.h | 1 + dll/dxhook.cpp | 47 +- dll/dxwnd.cpp | 2 +- dll/dxwnd.vs2008.suo | Bin 92672 -> 132096 bytes dll/gdi32.cpp | 4 +- dll/hd3d.cpp | 727 ++++++++++-------- dll/ole32.cpp | 6 +- dll/user32.cpp | 66 +- host/dxwndhost.vs2008.suo | Bin 175104 -> 175104 bytes 32 files changed, 1071 insertions(+), 434 deletions(-) delete mode 100644 Doc/dxwnd_manual.odt create mode 100644 build/exports/Age of Empires Expansion Trial.dxw create mode 100644 build/exports/Age of Wonders II.dxw create mode 100644 build/exports/Blair Witch Volume One - Rustin Parr.dxw create mode 100644 build/exports/Conflict Zone.dxw create mode 100644 build/exports/Disciples II - Dark Prophecy.dxw create mode 100644 build/exports/KA52 Team Alligator.dxw create mode 100644 build/exports/Myth III - The Wolf Age.dxw create mode 100644 build/exports/Re-Volt.dxw create mode 100644 build/exports/Rune.dxw create mode 100644 build/exports/Shogo Mobile Armor Division.dxw create mode 100644 build/exports/Slave Zero.dxw create mode 100644 build/exports/Unreal.dxw create mode 100644 build/exports/Warpath.dxw create mode 100644 build/exports/Warrior Kings.dxw create mode 100644 build/exports/World Racing (Demo) MX.dxw create mode 100644 build/exports/World Racing (Demo).dxw create mode 100644 build/exports/XIII.dxw diff --git a/Doc/dxwnd_manual.odt b/Doc/dxwnd_manual.odt deleted file mode 100644 index 1826b5ae235be041f9f01b00bb7128eb278b3e2e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 291545 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

nsF*n;3DcZOb>VZT3@MSQ$sOD$T3U9z4(v zot`N;4`!NM$~=tFtgB|1qaA&+)AvDGS|RVA3yT%xV6%sOLSyET=tV0chVVjpuLtrjL3A>GjAZQU1ifk( zly6cWBI3NR%x!!Y%Z;=oWZkn1Xk}~n$(85oORnvEWKP#ICMPwSxAYA5=(0j-PTVpf z^&0vJS;YIoAZQV4j}PHOpJ7q_WqP@M&X`ZeIrfJlt$t}=Rg|`&zX6$SH2#3)v613Re8RwS_Tu; zOmNCI5VC1G>#>0+C|h2g$3sTl8PQagw>w$;NjNiR6Mw|7_2 zD>Y8(LjG|y=v{9^ zC%Yax{~R+vu4J7E2#KQ;x(tc@1QBfDB!9P<53YLuVZkc8_8Ye1b6>?P)l+Bjs*5|G z-&sZ=^q)o)9e2CdehRKC337H5t2rKkqi445G&vc^U(zozIZD3yNX(OZ>elVLA5$NC zk1{eNHeFIe7LAVm9bAOFk6w~%A%=U*;VsIbSQ_1j~3$R%-PPO-n-XD zs@!pv{lCS3h*)BW`P#>wAIW6&tM<%k$xWpMrqS6pux6N%T3YZ;xt?xjCbu~y^#Wz|Q>7gGfL2QQ2>AZfu{`?fonp+h@f)`?GKWi|lUm2dj6+1HWpY}GK6F%^s0 zEsm({zu*y{ zv%xEbhs!GC>MDL?|7US`wuy?6vuUQBmU)6mQf^5~R%Q{o7Kwo}1Ab74UnGaEhR|uv|;P)twb4=@KU(U zMt@KeY8sD)#EKwVB_?#%cVQb$m9eB-H&38Cn28tJk-3>$cX z-CSreHL|R2kb7i4Z)-Pr-@)QUR;d^p^ zg=|@F)}c}u^>FKcjtecOt4pyWEPHt(YLLgdBl$}9ORGlH$fchWNqliyJrm(|e85Ti z^8A6Jpe<{M2lxf~Ql4u?5@Zdu_=rQsEOkt7t&ia#|3}Uz1EkNuxluPkklthM)`};930(|9!7EOq1irWijZ*$B)KzJIo&Lj`Rtn-wt-F zQ;qYGDfmpX`as^0Wq7Ch-SqXw;*ycnuBN)Xm)y!(9CmHhbq`MLLttK2DP-CP0Q~N} zHN^rbfd5$kJGulyH~>GOjSgzrV1EsD(ywbKwZZge{}>Mk06c^IkeYgt!#^S2PxyZs z*s|N_n{X20R`17cQQrk9%F^he%^

6|^IN`pwMqyM^lU%jxq6tjn-Qk(qdOKLuB7 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

*U2xuFW3(oZ{EkA}D>CUW}fRJi%1! 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%0AV7TB-e>MVj-P*RS-IZu0P@p+{(YVQ1y}!b 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 diff --git a/build/dxwnd.dll b/build/dxwnd.dll index 1a367a5..eedd809 100644 --- a/build/dxwnd.dll +++ b/build/dxwnd.dll @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:93bd98c222d5a3a27ae412c7dff1b5cdca3ad7980ea19e86e4e543b6f34e685b -size 484352 +oid sha256:3bb7913ecbd4bf5117c4858a94e0f9e1d5606d8dc8165258118f0a2b4e05c6ef +size 485888 diff --git a/build/dxwnd.exe b/build/dxwnd.exe index d42901e..8fd0f19 100644 --- a/build/dxwnd.exe +++ b/build/dxwnd.exe @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:32bbbe4a6676b22413cb11cfcb1c8a6cbe831221bea1c1cc83fb25963b86fb9c +oid sha256:d25ed7d43c0672c5ce69054896578802218de233bbc82f22b392c3406e56915f size 540160 diff --git a/build/exports/Age of Empires Expansion Trial.dxw b/build/exports/Age of Empires Expansion Trial.dxw new file mode 100644 index 0000000..8277d20 --- /dev/null +++ b/build/exports/Age of Empires Expansion Trial.dxw @@ -0,0 +1,26 @@ +[target] +title0=Age of Empires Expansion Trial +path0=D:\Games\Age of Empires Expansion Trial\empiresx.exe +module0= +opengllib0= +ver0=0 +coord0=0 +flag0=134218272 +flagg0=1207959552 +flagh0=20 +flagi0=4194308 +tflag0=0 +initx0=0 +inity0=0 +minx0=0 +miny0=0 +maxx0=0 +maxy0=0 +posx0=50 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=0 +winver0=0 +maxres0=-1 diff --git a/build/exports/Age of Wonders II.dxw b/build/exports/Age of Wonders II.dxw new file mode 100644 index 0000000..86614a3 --- /dev/null +++ b/build/exports/Age of Wonders II.dxw @@ -0,0 +1,27 @@ +[target] +title0=Age of Wonders II +path0=D:\Games\Age of Wonders II\AoW2.exe +launchpath0= +module0= +opengllib0= +ver0=7 +coord0=0 +flag0=142606624 +flagg0=1207959552 +flagh0=20 +flagi0=138412036 +tflag0=0 +initx0=0 +inity0=0 +minx0=0 +miny0=0 +maxx0=0 +maxy0=0 +posx0=50 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=0 +winver0=0 +maxres0=-1 diff --git a/build/exports/Blair Witch Volume One - Rustin Parr.dxw b/build/exports/Blair Witch Volume One - Rustin Parr.dxw new file mode 100644 index 0000000..c48948e --- /dev/null +++ b/build/exports/Blair Witch Volume One - Rustin Parr.dxw @@ -0,0 +1,27 @@ +[target] +title0=Blair Witch Volume One - Rustin Parr +path0=D:\Games\Blair Witch Volume One - Rustin Parr\NOCTURNE.EXE +launchpath0= +module0= +opengllib0= +ver0=0 +coord0=0 +flag0=134218272 +flagg0=1207959552 +flagh0=20 +flagi0=134217732 +tflag0=0 +initx0=0 +inity0=0 +minx0=0 +miny0=0 +maxx0=0 +maxy0=0 +posx0=50 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=0 +winver0=0 +maxres0=-1 diff --git a/build/exports/Conflict Zone.dxw b/build/exports/Conflict Zone.dxw new file mode 100644 index 0000000..98bb0ff --- /dev/null +++ b/build/exports/Conflict Zone.dxw @@ -0,0 +1,27 @@ +[target] +title0=Conflict Zone +path0=D:\Games\Conflict Zone\Conflict zone.exe +launchpath0= +module0= +opengllib0= +ver0=0 +coord0=0 +flag0=134217760 +flagg0=1207959552 +flagh0=20 +flagi0=4194308 +tflag0=64 +initx0=0 +inity0=0 +minx0=0 +miny0=0 +maxx0=0 +maxy0=0 +posx0=50 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=0 +winver0=0 +maxres0=-1 diff --git a/build/exports/Disciples II - Dark Prophecy.dxw b/build/exports/Disciples II - Dark Prophecy.dxw new file mode 100644 index 0000000..fcd01c1 --- /dev/null +++ b/build/exports/Disciples II - Dark Prophecy.dxw @@ -0,0 +1,27 @@ +[target] +title0=Disciples II - Dark Prophecy +path0=D:\Games\Disciples II - Dark Prophecy\Discipl2.exe +launchpath0= +module0= +opengllib0= +ver0=1 +coord0=0 +flag0=134234144 +flagg0=1207959552 +flagh0=16 +flagi0=138412036 +tflag0=6147 +initx0=0 +inity0=0 +minx0=0 +miny0=0 +maxx0=0 +maxy0=0 +posx0=50 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=0 +winver0=0 +maxres0=-1 diff --git a/build/exports/KA52 Team Alligator.dxw b/build/exports/KA52 Team Alligator.dxw new file mode 100644 index 0000000..2539a64 --- /dev/null +++ b/build/exports/KA52 Team Alligator.dxw @@ -0,0 +1,27 @@ +[target] +title0=KA52 Team Alligator +path0=D:\Games\Team Alligator\Team2.exe +launchpath0= +module0= +opengllib0= +ver0=0 +coord0=0 +flag0=687865888 +flagg0=1207959552 +flagh0=20 +flagi0=138412036 +tflag0=0 +initx0=0 +inity0=0 +minx0=0 +miny0=0 +maxx0=0 +maxy0=0 +posx0=50 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=0 +winver0=0 +maxres0=-1 diff --git a/build/exports/Myth III - The Wolf Age.dxw b/build/exports/Myth III - The Wolf Age.dxw new file mode 100644 index 0000000..dcd15fb --- /dev/null +++ b/build/exports/Myth III - The Wolf Age.dxw @@ -0,0 +1,27 @@ +[target] +title0=Myth III - The Wolf Age +path0=D:\Games\Myth III - The Wolf Age\Myth3.exe +launchpath0= +module0= +opengllib0= +ver0=0 +coord0=0 +flag0=134218272 +flagg0=1744830464 +flagh0=20 +flagi0=205520900 +tflag0=6147 +initx0=0 +inity0=0 +minx0=0 +miny0=0 +maxx0=0 +maxy0=0 +posx0=50 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=0 +winver0=0 +maxres0=-1 diff --git a/build/exports/Re-Volt.dxw b/build/exports/Re-Volt.dxw new file mode 100644 index 0000000..1b642a6 --- /dev/null +++ b/build/exports/Re-Volt.dxw @@ -0,0 +1,26 @@ +[target] +title0=Re-Volt +path0=D:\Games\Re-Volt\REVOLT.EXE +module0= +opengllib0= +ver0=0 +coord0=0 +flag0=134217760 +flagg0=1208025088 +flagh0=20 +flagi0=12 +tflag0=64 +initx0=0 +inity0=0 +minx0=0 +miny0=0 +maxx0=0 +maxy0=0 +posx0=50 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=0 +winver0=0 +maxres0=-1 diff --git a/build/exports/Rune.dxw b/build/exports/Rune.dxw new file mode 100644 index 0000000..5300f0e --- /dev/null +++ b/build/exports/Rune.dxw @@ -0,0 +1,26 @@ +[target] +title0=Rune +path0=D:\Games\Rune\System\Rune.exe +module0= +opengllib0= +ver0=0 +coord0=0 +flag0=402669601 +flagg0=1207959552 +flagh0=20 +flagi0=4 +tflag0=6211 +initx0=0 +inity0=0 +minx0=0 +miny0=0 +maxx0=0 +maxy0=0 +posx0=50 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=0 +winver0=0 +maxres0=-1 diff --git a/build/exports/Shogo Mobile Armor Division.dxw b/build/exports/Shogo Mobile Armor Division.dxw new file mode 100644 index 0000000..faac6b6 --- /dev/null +++ b/build/exports/Shogo Mobile Armor Division.dxw @@ -0,0 +1,27 @@ +[target] +title0=Shogo Mobile Armor Division +path0=D:\Games\Shogo\Client.exe +launchpath0=D:\Games\Shogo\Shogo.exe +module0= +opengllib0= +ver0=0 +coord0=0 +flag0=151011328 +flagg0=1207959552 +flagh0=20 +flagi0=4194308 +tflag0=64 +initx0=0 +inity0=0 +minx0=0 +miny0=0 +maxx0=0 +maxy0=0 +posx0=50 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=0 +winver0=0 +maxres0=-1 diff --git a/build/exports/Slave Zero.dxw b/build/exports/Slave Zero.dxw new file mode 100644 index 0000000..8c16fac --- /dev/null +++ b/build/exports/Slave Zero.dxw @@ -0,0 +1,27 @@ +[target] +title0=Slave Zero +path0=D:\Games\Slave Zero\SlaveZero.exe +launchpath0= +module0= +opengllib0= +ver0=0 +coord0=0 +flag0=671105120 +flagg0=1207959552 +flagh0=20 +flagi0=2097156 +tflag0=6210 +initx0=0 +inity0=0 +minx0=0 +miny0=0 +maxx0=0 +maxy0=0 +posx0=50 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=0 +winver0=0 +maxres0=-1 diff --git a/build/exports/Unreal.dxw b/build/exports/Unreal.dxw new file mode 100644 index 0000000..f255a01 --- /dev/null +++ b/build/exports/Unreal.dxw @@ -0,0 +1,27 @@ +[target] +title0=Unreal +path0=D:\Games\Unreal\System\Unreal.exe +launchpath0= +module0= +opengllib0= +ver0=0 +coord0=0 +flag0=134218272 +flagg0=1207959552 +flagh0=20 +flagi0=138412036 +tflag0=0 +initx0=0 +inity0=0 +minx0=0 +miny0=0 +maxx0=0 +maxy0=0 +posx0=50 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=4 +winver0=0 +maxres0=-1 diff --git a/build/exports/Warpath.dxw b/build/exports/Warpath.dxw new file mode 100644 index 0000000..a013acb --- /dev/null +++ b/build/exports/Warpath.dxw @@ -0,0 +1,26 @@ +[target] +title0=Warpath +path0=D:\Games\Warpath\System\Warpath.exe +module0= +opengllib0= +ver0=0 +coord0=0 +flag0=134218272 +flagg0=1207959552 +flagh0=20 +flagi0=4 +tflag0=0 +initx0=0 +inity0=0 +minx0=0 +miny0=0 +maxx0=0 +maxy0=0 +posx0=50 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=0 +winver0=0 +maxres0=-1 diff --git a/build/exports/Warrior Kings.dxw b/build/exports/Warrior Kings.dxw new file mode 100644 index 0000000..9054252 --- /dev/null +++ b/build/exports/Warrior Kings.dxw @@ -0,0 +1,26 @@ +[target] +title0=Warrior Kings +path0=D:\Games\Warrior Kings\warrior_kings.exe +module0= +opengllib0= +ver0=0 +coord0=0 +flag0=671236130 +flagg0=1207959569 +flagh0=65556 +flagi0=4 +tflag0=64 +initx0=0 +inity0=0 +minx0=0 +miny0=0 +maxx0=0 +maxy0=0 +posx0=50 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=0 +winver0=0 +maxres0=-1 diff --git a/build/exports/World Racing (Demo) MX.dxw b/build/exports/World Racing (Demo) MX.dxw new file mode 100644 index 0000000..674cde0 --- /dev/null +++ b/build/exports/World Racing (Demo) MX.dxw @@ -0,0 +1,26 @@ +[target] +title0=World Racing (Demo) MX +path0=D:\Games\World Racing Demo\mbwr_pc_MX.exe +module0= +opengllib0= +ver0=0 +coord0=0 +flag0=134234146 +flagg0=1207959552 +flagh0=20 +flagi0=4 +tflag0=64 +initx0=0 +inity0=0 +minx0=0 +miny0=0 +maxx0=0 +maxy0=0 +posx0=50 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=2 +winver0=0 +maxres0=-1 diff --git a/build/exports/World Racing (Demo).dxw b/build/exports/World Racing (Demo).dxw new file mode 100644 index 0000000..ff101ce --- /dev/null +++ b/build/exports/World Racing (Demo).dxw @@ -0,0 +1,26 @@ +[target] +title0=World Racing (Demo) +path0=D:\Games\World Racing Demo\mbwr_pc.exe +module0= +opengllib0= +ver0=0 +coord0=0 +flag0=134234146 +flagg0=1207959552 +flagh0=20 +flagi0=4 +tflag0=64 +initx0=0 +inity0=0 +minx0=0 +miny0=0 +maxx0=0 +maxy0=0 +posx0=50 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=0 +winver0=0 +maxres0=-1 diff --git a/build/exports/XIII.dxw b/build/exports/XIII.dxw new file mode 100644 index 0000000..f48765e --- /dev/null +++ b/build/exports/XIII.dxw @@ -0,0 +1,27 @@ +[target] +title0=XIII +path0=D:\Games\Ubisoft\XIII\system\XIII.exe +launchpath0= +module0= +opengllib0= +ver0=0 +coord0=0 +flag0=671105540 +flagg0=1207959552 +flagh0=20 +flagi0=138412036 +tflag0=6146 +initx0=0 +inity0=0 +minx0=0 +miny0=0 +maxx0=0 +maxy0=0 +posx0=50 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=0 +winver0=0 +maxres0=-1 diff --git a/build/readme-relnotes.txt b/build/readme-relnotes.txt index 6524dbc..f878460 100644 --- a/build/readme-relnotes.txt +++ b/build/readme-relnotes.txt @@ -511,4 +511,14 @@ fix: some log messages fix: handling of GetProcAddress D3D9 api fix: handling of EMULATEBUFFER option - fixes "Star Trek Birth of the Federation" fix: expanded hot patching scope - now can handle QueryPerformanceCounter and fix time stretching on obfuscated version of "Wind Fantasy SP" -added logging in D3DDevice9::GetAdapterIdentifier \ No newline at end of file +added logging in D3DDevice9::GetAdapterIdentifier + +v2.02.78 +fix: hooked D3D8/9Device::BeginStateBlock +ddraw API hot swappable +log: helper for ChangeDisplaySettings() flags +fix: hot patch handling of loaded modules +log: fixed some messages with no line ending for GetObjectType() +d3d begin of code reorganization and cleaning +ole32, user32 API hot patched +handling of DWL_DLGPROC message \ No newline at end of file diff --git a/dll/ddraw.cpp b/dll/ddraw.cpp index 47ff132..7de1e2f 100644 --- a/dll/ddraw.cpp +++ b/dll/ddraw.cpp @@ -265,10 +265,10 @@ static void SetPixFmt(LPDDSURFACEDESC2); static void GetPixFmt(LPDDSURFACEDESC2); static HookEntry_Type ddHooks[]={ - {HOOK_IAT_CANDIDATE, "DirectDrawCreate", (FARPROC)NULL, (FARPROC *)&pDirectDrawCreate, (FARPROC)extDirectDrawCreate}, - {HOOK_IAT_CANDIDATE, "DirectDrawCreateEx", (FARPROC)NULL, (FARPROC *)&pDirectDrawCreateEx, (FARPROC)extDirectDrawCreateEx}, - {HOOK_IAT_CANDIDATE, "DirectDrawEnumerateA", (FARPROC)NULL, (FARPROC *)&pDirectDrawEnumerate, (FARPROC)extDirectDrawEnumerate}, - {HOOK_IAT_CANDIDATE, "DirectDrawEnumerateExA", (FARPROC)NULL, (FARPROC *)&pDirectDrawEnumerateEx, (FARPROC)extDirectDrawEnumerateEx}, + {HOOK_HOT_CANDIDATE, "DirectDrawCreate", (FARPROC)NULL, (FARPROC *)&pDirectDrawCreate, (FARPROC)extDirectDrawCreate}, + {HOOK_HOT_CANDIDATE, "DirectDrawCreateEx", (FARPROC)NULL, (FARPROC *)&pDirectDrawCreateEx, (FARPROC)extDirectDrawCreateEx}, + {HOOK_HOT_CANDIDATE, "DirectDrawEnumerateA", (FARPROC)NULL, (FARPROC *)&pDirectDrawEnumerate, (FARPROC)extDirectDrawEnumerate}, + {HOOK_HOT_CANDIDATE, "DirectDrawEnumerateExA", (FARPROC)NULL, (FARPROC *)&pDirectDrawEnumerateEx, (FARPROC)extDirectDrawEnumerateEx}, //{HOOK_IAT_CANDIDATE, "DirectDrawEnumerateW", (FARPROC)NULL, (FARPROC *)&pDirectDrawEnumerateW, (FARPROC)extDirectDrawCreate}, //{HOOK_IAT_CANDIDATE, "DirectDrawEnumerateExW", (FARPROC)NULL, (FARPROC *)&pDirectDrawEnumerateExW, (FARPROC)extDirectDrawCreate}, {HOOK_IAT_CANDIDATE, 0, NULL, 0, 0} // terminator @@ -642,92 +642,110 @@ void FixPixelFormat(int ColorDepth, DDPIXELFORMAT *pf) } } +static void ddSetCompatibility() +{ + typedef HRESULT (WINAPI *SetAppCompatData_Type)(DWORD, DWORD); + SetAppCompatData_Type pSetAppCompatData; + HRESULT res; + HINSTANCE hinst; + + hinst=LoadLibrary("ddraw.dll"); + pSetAppCompatData=(SetAppCompatData_Type)(*pGetProcAddress)(hinst, "SetAppCompatData"); + if(pSetAppCompatData) { + res=(*pSetAppCompatData)(2, 0); + OutTraceDW("HookDirectDraw: SetAppCompatData(2,0) ret=%x(%s)\n", res, ExplainDDError(res)); + } + FreeLibrary(hinst); +} + int HookDirectDraw(HMODULE module, int version) { - HINSTANCE hinst; - void *tmp; - const GUID dd7 = {0x15e65ec0,0x3b9c,0x11d2,0xb9,0x2f,0x00,0x60,0x97,0x97,0xea,0x5b}; + if(dxw.dwFlags2 & SETCOMPATIBILITY) ddSetCompatibility(); - if(dxw.dwFlags2 & SETCOMPATIBILITY){ - typedef HRESULT (WINAPI *SetAppCompatData_Type)(DWORD, DWORD); - SetAppCompatData_Type pSetAppCompatData; - HRESULT res; - hinst=LoadLibrary("ddraw.dll"); - pSetAppCompatData=(SetAppCompatData_Type)(*pGetProcAddress)(hinst, "SetAppCompatData"); - if(pSetAppCompatData) { - res=(*pSetAppCompatData)(2, 0); - OutTraceDW("HookDirectDraw: SetAppCompatData(2,0) ret=%x(%s)\n", res, ExplainDDError(res)); - } - FreeLibrary(hinst); - } +#if 0 + //void *tmp; + //const GUID dd7 = {0x15e65ec0,0x3b9c,0x11d2,0xb9,0x2f,0x00,0x60,0x97,0x97,0xea,0x5b}; OutTraceB("HookDirectDraw version=%d\n", version); //GHO switch(version){ case 0: // automatic - tmp = HookAPI(module, "ddraw.dll", NULL, "DirectDrawCreate", extDirectDrawCreate); - if(tmp) pDirectDrawCreate = (DirectDrawCreate_Type)tmp; - tmp = HookAPI(module, "ddraw.dll", NULL, "DirectDrawCreateEx", extDirectDrawCreateEx); - if(tmp) pDirectDrawCreateEx = (DirectDrawCreateEx_Type)tmp; - tmp = HookAPI(module, "ddraw.dll", NULL, "DirectDrawEnumerateA", extDirectDrawEnumerate); - if(tmp) pDirectDrawEnumerate = (DirectDrawEnumerate_Type)tmp; - tmp = HookAPI(module, "ddraw.dll", NULL, "DirectDrawEnumerateExA", extDirectDrawEnumerateEx); - if(tmp) pDirectDrawEnumerateEx = (DirectDrawEnumerateEx_Type)tmp; + HookLibrary(module, ddHooks, "ddraw.dll"); + //tmp = HookAPI(module, "ddraw.dll", NULL, "DirectDrawCreate", extDirectDrawCreate); + //if(tmp) pDirectDrawCreate = (DirectDrawCreate_Type)tmp; + //tmp = HookAPI(module, "ddraw.dll", NULL, "DirectDrawCreateEx", extDirectDrawCreateEx); + //if(tmp) pDirectDrawCreateEx = (DirectDrawCreateEx_Type)tmp; + //tmp = HookAPI(module, "ddraw.dll", NULL, "DirectDrawEnumerateA", extDirectDrawEnumerate); + //if(tmp) pDirectDrawEnumerate = (DirectDrawEnumerate_Type)tmp; + //tmp = HookAPI(module, "ddraw.dll", NULL, "DirectDrawEnumerateExA", extDirectDrawEnumerateEx); + //if(tmp) pDirectDrawEnumerateEx = (DirectDrawEnumerateEx_Type)tmp; break; case 1: case 2: case 3: case 5: case 6: - hinst = LoadLibrary("ddraw.dll"); - pDirectDrawEnumerate = - (DirectDrawEnumerate_Type)GetProcAddress(hinst, "DirectDrawEnumerateA"); - pDirectDrawCreate = - (DirectDrawCreate_Type)GetProcAddress(hinst, "DirectDrawCreate"); - if(pDirectDrawCreate){ - LPDIRECTDRAW lpdd; - BOOL res; - HookAPI(module, "ddraw.dll", pDirectDrawCreate, "DirectDrawCreate", extDirectDrawCreate); - HookAPI(module, "ddraw.dll", pDirectDrawEnumerate, "DirectDrawEnumerateA", extDirectDrawEnumerate); - res=extDirectDrawCreate(0, &lpdd, 0); - if (res){ - OutTraceE("DirectDrawCreate: ERROR res=%x(%s)\n", res, ExplainDDError(res)); - } - lpdd->Release(); - } - break; + HookLibrary(module, ddHooks, "ddraw.dll"); + //hinst = LoadLibrary("ddraw.dll"); + //pDirectDrawEnumerate = + // (DirectDrawEnumerate_Type)GetProcAddress(hinst, "DirectDrawEnumerateA"); + //pDirectDrawCreate = + // (DirectDrawCreate_Type)GetProcAddress(hinst, "DirectDrawCreate"); + //if(dxw.dwFlags4 & HOTPATCH){ + // extern void *HotPatch(void *, const char *, void *); + // pDirectDrawEnumerate = (DirectDrawEnumerate_Type)HotPatch(pDirectDrawEnumerate, "DirectDrawEnumerate", extDirectDrawEnumerate); + // pDirectDrawCreate = (DirectDrawCreate_Type)HotPatch(pDirectDrawCreate, "DirectDrawCreate", extDirectDrawCreate); + //} + //else { + // if(pDirectDrawCreate){ + // LPDIRECTDRAW lpdd; + // BOOL res; + // HookAPI(module, "ddraw.dll", pDirectDrawCreate, "DirectDrawCreate", extDirectDrawCreate); + // HookAPI(module, "ddraw.dll", pDirectDrawEnumerate, "DirectDrawEnumerateA", extDirectDrawEnumerate); + // res=extDirectDrawCreate(0, &lpdd, 0); + // if (res){ + // OutTraceE("DirectDrawCreate: ERROR res=%x(%s)\n", res, ExplainDDError(res)); + // } + // lpdd->Release(); + // } + //} + //break; case 7: - hinst = LoadLibrary("ddraw.dll"); - pDirectDrawEnumerate = - (DirectDrawEnumerate_Type)GetProcAddress(hinst, "DirectDrawEnumerateA"); - pDirectDrawEnumerateEx = - (DirectDrawEnumerateEx_Type)GetProcAddress(hinst, "DirectDrawEnumerateExA"); - pDirectDrawCreate = - (DirectDrawCreate_Type)GetProcAddress(hinst, "DirectDrawCreate"); - if(pDirectDrawCreate){ - LPDIRECTDRAW lpdd; - BOOL res; - HookAPI(module, "ddraw.dll", pDirectDrawCreate, "DirectDrawCreate", extDirectDrawCreate); - HookAPI(module, "ddraw.dll", pDirectDrawEnumerate, "DirectDrawEnumerateA", extDirectDrawEnumerate); - HookAPI(module, "ddraw.dll", pDirectDrawEnumerateEx, "DirectDrawEnumerateExA", extDirectDrawEnumerateEx); - res=extDirectDrawCreate(0, &lpdd, 0); - if (res) OutTraceE("DirectDrawCreate: ERROR res=%x(%s)\n", res, ExplainDDError(res)); - lpdd->Release(); - } - pDirectDrawCreateEx = - (DirectDrawCreateEx_Type)GetProcAddress(hinst, "DirectDrawCreateEx"); - if(pDirectDrawCreateEx){ - LPDIRECTDRAW lpdd; - BOOL res; - HookAPI(module, "ddraw.dll", pDirectDrawCreateEx, "DirectDrawCreateEx", extDirectDrawCreateEx); - res=extDirectDrawCreateEx(0, &lpdd, dd7, 0); - if (res) OutTraceE("DirectDrawCreateEx: ERROR res=%x(%s)\n", res, ExplainDDError(res)); - lpdd->Release(); - } + HookLibrary(module, ddHooks, "ddraw.dll"); + //hinst = LoadLibrary("ddraw.dll"); + //pDirectDrawEnumerate = + // (DirectDrawEnumerate_Type)GetProcAddress(hinst, "DirectDrawEnumerateA"); + //pDirectDrawEnumerateEx = + // (DirectDrawEnumerateEx_Type)GetProcAddress(hinst, "DirectDrawEnumerateExA"); + //pDirectDrawCreate = + // (DirectDrawCreate_Type)GetProcAddress(hinst, "DirectDrawCreate"); + //if(pDirectDrawCreate){ + // LPDIRECTDRAW lpdd; + // BOOL res; + // HookAPI(module, "ddraw.dll", pDirectDrawCreate, "DirectDrawCreate", extDirectDrawCreate); + // HookAPI(module, "ddraw.dll", pDirectDrawEnumerate, "DirectDrawEnumerateA", extDirectDrawEnumerate); + // HookAPI(module, "ddraw.dll", pDirectDrawEnumerateEx, "DirectDrawEnumerateExA", extDirectDrawEnumerateEx); + // res=extDirectDrawCreate(0, &lpdd, 0); + // if (res) OutTraceE("DirectDrawCreate: ERROR res=%x(%s)\n", res, ExplainDDError(res)); + // lpdd->Release(); + //} + //pDirectDrawCreateEx = + // (DirectDrawCreateEx_Type)GetProcAddress(hinst, "DirectDrawCreateEx"); + //if(pDirectDrawCreateEx){ + // LPDIRECTDRAW lpdd; + // BOOL res; + // HookAPI(module, "ddraw.dll", pDirectDrawCreateEx, "DirectDrawCreateEx", extDirectDrawCreateEx); + // res=extDirectDrawCreateEx(0, &lpdd, dd7, 0); + // if (res) OutTraceE("DirectDrawCreateEx: ERROR res=%x(%s)\n", res, ExplainDDError(res)); + // lpdd->Release(); + //} break; } if(pDirectDrawCreate || pDirectDrawCreateEx) return 1; +#else + HookLibrary(module, ddHooks, "ddraw.dll"); +#endif return 0; } diff --git a/dll/dxhelper.cpp b/dll/dxhelper.cpp index 300b1ce..34ac2fc 100644 --- a/dll/dxhelper.cpp +++ b/dll/dxhelper.cpp @@ -1694,3 +1694,25 @@ char *ExplainWfPFlags(DWORD c) else strcpy(eb,"CWP_ALL"); return(eb); } + +char *ExplainChangeDisplaySettingsFlags(DWORD c) +{ + static char eb[128]; + unsigned int l; + strcpy(eb,"CDS_"); + if(c & CDS_UPDATEREGISTRY) strcat(eb, "UPDATEREGISTRY+"); + if(c & CDS_TEST) strcat(eb, "TEST+"); + if(c & CDS_FULLSCREEN) strcat(eb, "FULLSCREEN+"); + if(c & CDS_GLOBAL) strcat(eb, "GLOBAL+"); + if(c & CDS_SET_PRIMARY) strcat(eb, "SET_PRIMARY+"); + if(c & CDS_VIDEOPARAMETERS) strcat(eb, "VIDEOPARAMETERS+"); + if(c & CDS_ENABLE_UNSAFE_MODES) strcat(eb, "ENABLE_UNSAFE_MODES+"); + if(c & CDS_DISABLE_UNSAFE_MODES) strcat(eb, "DISABLE_UNSAFE_MODES+"); + if(c & CDS_RESET) strcat(eb, "RESET+"); + if(c & CDS_NORESET) strcat(eb, "NORESET+"); + l=strlen(eb); + if (l>strlen("CDS_")) eb[l-1]=0; // delete last '+' if any + else strcpy(eb,"NULL"); + return(eb); +} + diff --git a/dll/dxhelper.h b/dll/dxhelper.h index 75917ea..e9098e1 100644 --- a/dll/dxhelper.h +++ b/dll/dxhelper.h @@ -49,3 +49,4 @@ extern char *ExplainRasterCaps(DWORD); extern char *ExplainD3DRenderState(DWORD); extern char *ExplainRenderstateValue(DWORD); extern char *ExplainWfPFlags(DWORD); +extern char *ExplainChangeDisplaySettingsFlags(DWORD); diff --git a/dll/dxhook.cpp b/dll/dxhook.cpp index 4e24f68..826c521 100644 --- a/dll/dxhook.cpp +++ b/dll/dxhook.cpp @@ -1543,8 +1543,31 @@ LPCSTR ProcToString(LPCSTR proc) FARPROC RemapLibrary(LPCSTR proc, HMODULE hModule, HookEntry_Type *Hooks) { + void *remapped_addr; for(; Hooks->APIName; Hooks++){ if (!strcmp(proc,Hooks->APIName)){ + if((((dxw.dwFlags4 & HOTPATCH) && (Hooks->HookStatus == HOOK_HOT_CANDIDATE)) || // hot patch candidate still to process - or + ((dxw.dwFlags4 & HOTPATCHALWAYS) && (Hooks->HookStatus != HOOK_HOT_LINKED)))){ // force hot patch and not already hooked + + if(!Hooks->OriginalAddress) { + Hooks->OriginalAddress=(*pGetProcAddress)(hModule, Hooks->APIName); + if(!Hooks->OriginalAddress) continue; + } + + remapped_addr = HotPatch(Hooks->OriginalAddress, Hooks->APIName, Hooks->HookerAddress); + if(remapped_addr == (void *)1) { // should never go here ... + Hooks->HookStatus = HOOK_HOT_LINKED; + continue; // already hooked + } + if(remapped_addr) { + Hooks->HookStatus = HOOK_HOT_LINKED; + if(Hooks->StoreAddress) *(Hooks->StoreAddress) = (FARPROC)remapped_addr; + } + } + if(Hooks->HookStatus == HOOK_HOT_LINKED) { + OutTraceDW("GetProcAddress: hot patched proc=%s addr=%x\n", ProcToString(proc), Hooks->HookerAddress); + return Hooks->HookerAddress; + } if (Hooks->StoreAddress) *(Hooks->StoreAddress)=(*pGetProcAddress)(hModule, proc); OutTraceDW("GetProcAddress: hooking proc=%s addr=%x->%x\n", ProcToString(proc), (Hooks->StoreAddress) ? *(Hooks->StoreAddress) : 0, Hooks->HookerAddress); @@ -1556,6 +1579,8 @@ FARPROC RemapLibrary(LPCSTR proc, HMODULE hModule, HookEntry_Type *Hooks) void HookLibrary(HMODULE hModule, HookEntry_Type *Hooks, char *DLLName) { + HMODULE hDLL = NULL; + //OutTrace("HookLibrary: hModule=%x dll=%s\n", hModule, DLLName); for(; Hooks->APIName; Hooks++){ //tmp = HookAPI(hModule, DLLName, Hooks->HookStatus, Hooks->OriginalAddress, Hooks->APIName, Hooks->HookerAddress); //if(tmp && Hooks->StoreAddress) *(Hooks->StoreAddress) = (FARPROC)tmp; @@ -1577,8 +1602,26 @@ void HookLibrary(HMODULE hModule, HookEntry_Type *Hooks, char *DLLName) if((((dxw.dwFlags4 & HOTPATCH) && (Hooks->HookStatus == HOOK_HOT_CANDIDATE)) || // hot patch candidate still to process - or ((dxw.dwFlags4 & HOTPATCHALWAYS) && (Hooks->HookStatus != HOOK_HOT_LINKED))) // force hot patch and not already hooked && - (Hooks->OriginalAddress && Hooks->StoreAddress)){ // API address and save ptr available - // Hot Patch + Hooks->StoreAddress){ // and save ptr available +#if 1 + // Hot Patch - beware! This way yo're likely to hook unneeded libraries. + if(!Hooks->OriginalAddress) { + if(!hDLL) { + hDLL = (*pLoadLibraryA)(DLLName); + if(!hDLL) { + OutTrace("HookLibrary: LoadLibrary failed on DLL=%s err=%x\n", DLLName, GetLastError()); + continue; + } + } + Hooks->OriginalAddress=(*pGetProcAddress)(hDLL, Hooks->APIName); + if(!Hooks->OriginalAddress) { + OutTrace("HookLibrary: GetProcAddress failed on API=%s err=%x\n", Hooks->APIName, GetLastError()); + continue; + } + } +#else + if(!Hooks->OriginalAddress) continue; +#endif remapped_addr = HotPatch(Hooks->OriginalAddress, Hooks->APIName, Hooks->HookerAddress); if(remapped_addr == (void *)1) { // should never go here ... Hooks->HookStatus = HOOK_HOT_LINKED; diff --git a/dll/dxwnd.cpp b/dll/dxwnd.cpp index 814a851..ed006fe 100644 --- a/dll/dxwnd.cpp +++ b/dll/dxwnd.cpp @@ -24,7 +24,7 @@ along with this program. If not, see . #include "dxwnd.h" #include "dxwcore.hpp" -#define VERSION "2.02.77" +#define VERSION "2.02.78" #define DDTHREADLOCK 1 diff --git a/dll/dxwnd.vs2008.suo b/dll/dxwnd.vs2008.suo index e3e6f98b8b5d536c377c8955ccf2c998d04b6a9d..5099f4bc0bfbaf8f15e4a3b5fc235a82ed783172 100644 GIT binary patch delta 31680 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 WS+I*Bkh@Km8TPF7d+@*S{C@xrHNu7f delta 2007 zcmbtVeN0nV6u;-umJX_UVpZl$C4kUTa8N3G|18UN8v8bznZ;CP8ULubm}SY9WiHwLXW3Yyi!p}oyjOxB*%Hm}%kO^Q zdw%zPJ>`&Dxo#XTTp$S{fT0&z2yJW%m(Qn$6gc@&0HRWpG7QcUbK* zyqaQ|P9zfeeX3m^*}St!K4S6q_vWs-XtQ{*&*4+*6gD#(|tR}rbI~JzoN(P`@u?F2`O4MBmSZQ>c3YmACgk9y; zCdlMn3pG*cLGGm{&)@}5KK@p=I9d^hC4D@naqj1KV5WayrllnkVgf}eOZajVyy!^g!< z>#}c8=j3?L{(577{*LBiZBB?hhNkdzy4DQK=w~}vsm=~I3bsIYEUOoG0bOr~?BvSU zJ+RoQ*{TK;)zt=OlZceqp&i?Oy|5Q=a~;C=7Y8Zif*QVVUI5k}3xXMY1}$V7gpcXo zZm1>S5Uj+w*Zxe+f3VtgHH~dpii*=k!|h;FyKC=&=^YmQrck@;y1;ah`=`>?yY*cX z5Vkk;!iajiA>B;fLy$!S?sa?ikzRM!deEMY6{X$BdU z9tFq33(@?OFWF93a+^i24#MzGJubDS9v5g+F@8lPZZ9@W!^K=rqV`@Vz0x(9x=-l0L1_+x2FP8V|b-_<=Wvo~wsk zvNb`T#%)8n5D&0>-1wiRu}`dyk}}_;h5F?a#TkE2|B(Q8gcxIjQS`|C4|9aL$FMvy zFGLlV50+9(J($UM20Ebz`+ADhQztg0;$IcjNsV54mSa(AVy|WD-stB6pg;2=U6Cio7W$6Clppe~MjpS-*#5}8kH?!B8TaS0)lo`g`H&ks*8z2a zg$4^ME3!5HERRh(pluOK@1Ku+Z6jMH{DKD^m1Zr2Yb8?R#$iXv17lb0;%1nh6N3Z5 kKAxcX>)^rxhr-)}GuT1y<=~=84;YRGK#ut~!P$BL08;BVlK=n! diff --git a/dll/gdi32.cpp b/dll/gdi32.cpp index 1117be6..2b99b2a 100644 --- a/dll/gdi32.cpp +++ b/dll/gdi32.cpp @@ -1804,9 +1804,9 @@ DWORD WINAPI extGetObjectType(HGDIOBJ h) { DWORD res; res=(*pGetObjectType)(h); - OutTraceDW("GetObjectType: h=%x type=%x", h, res); + OutTraceDW("GetObjectType: h=%x type=%x\n", h, res); if(h==dxw.VirtualHDC) { - OutTraceDW("GetObjectType: REMAP h=%x type=%x->%x", h, res, OBJ_DC); + OutTraceDW("GetObjectType: REMAP h=%x type=%x->%x\n", h, res, OBJ_DC); res=OBJ_DC; } return res; diff --git a/dll/hd3d.cpp b/dll/hd3d.cpp index 756913b..4964b65 100644 --- a/dll/hd3d.cpp +++ b/dll/hd3d.cpp @@ -11,38 +11,140 @@ #include "syslibs.h" #define HOOKD3D10ANDLATER 1 +#define TRACEALLMETHODS 1 typedef HRESULT (WINAPI *QueryInterface_Type)(void *, REFIID riid, void** ppvObj); +// D3D8/9 API + typedef void* (WINAPI *Direct3DCreate8_Type)(UINT); typedef void* (WINAPI *Direct3DCreate9_Type)(UINT); typedef HRESULT (WINAPI *Direct3DCreate9Ex_Type)(UINT, IDirect3D9Ex **); typedef HRESULT (WINAPI *CheckFullScreen_Type)(void); typedef BOOL (WINAPI * DisableD3DSpy_Type)(void); +void* WINAPI extDirect3DCreate8(UINT); +void* WINAPI extDirect3DCreate9(UINT); +HRESULT WINAPI extDirect3DCreate9Ex(UINT, IDirect3D9Ex **); +HRESULT WINAPI extCheckFullScreen(void); +HRESULT WINAPI voidDirect3DShaderValidatorCreate9(void); +void WINAPI voidDebugSetLevel(void); +void WINAPI voidDebugSetMute(void); +BOOL WINAPI voidDisableD3DSpy(void); + +// IDirect3D8/9 methods + +typedef HRESULT (WINAPI *RegisterSoftwareDevice_Type)(void *, void*); typedef UINT (WINAPI *GetAdapterCount_Type)(void *); typedef HRESULT (WINAPI *GetAdapterIdentifier_Type)(void *, UINT, DWORD, D3DADAPTER_IDENTIFIER9 *); -typedef HRESULT (WINAPI *CreateDevice_Type)(void *, UINT, D3DDEVTYPE, HWND, DWORD, void *, void **); -typedef HRESULT (WINAPI *CreateDeviceEx_Type)(void *, UINT, D3DDEVTYPE, HWND, DWORD, void *, D3DDISPLAYMODEEX *, void **); +typedef UINT (WINAPI *GetAdapterModeCount_Type)(void *, UINT, D3DFORMAT); typedef HRESULT (WINAPI *EnumAdapterModes8_Type)(void *, UINT, UINT, D3DDISPLAYMODE *); typedef HRESULT (WINAPI *EnumAdapterModes9_Type)(void *, UINT, D3DFORMAT ,UINT, D3DDISPLAYMODE *); typedef HRESULT (WINAPI *GetAdapterDisplayMode_Type)(void *, UINT, D3DDISPLAYMODE *); -typedef HRESULT (WINAPI *GetDisplayMode8_Type)(void *, D3DDISPLAYMODE *); -typedef HRESULT (WINAPI *GetDisplayMode9_Type)(void *, UINT, D3DDISPLAYMODE *); -typedef HRESULT (WINAPI *Present_Type)(void *, CONST RECT *, CONST RECT *, HWND, CONST RGNDATA *); -typedef HRESULT (WINAPI *SetRenderState_Type)(void *, D3DRENDERSTATETYPE, DWORD); -typedef HRESULT (WINAPI *GetRenderState_Type)(void *, D3DRENDERSTATETYPE, DWORD ); -typedef HRESULT (WINAPI *CreateAdditionalSwapChain_Type)(void *, D3DPRESENT_PARAMETERS *, IDirect3DSwapChain9 **); +typedef HRESULT (WINAPI *CheckDeviceType_Type)(void *, UINT, D3DDEVTYPE, D3DFORMAT, D3DFORMAT, BOOL); +typedef HRESULT (WINAPI *CheckDeviceFormat_Type)(void *, UINT, D3DDEVTYPE, D3DFORMAT, DWORD, D3DRESOURCETYPE, D3DFORMAT); +typedef HRESULT (WINAPI *CheckDeviceMultiSampleType_Type)(void *, UINT, D3DDEVTYPE, D3DFORMAT, BOOL, D3DMULTISAMPLE_TYPE, DWORD *); +typedef HRESULT (WINAPI *CheckDepthStencilMatch_Type)(void *, UINT, D3DDEVTYPE, D3DFORMAT, D3DFORMAT, D3DFORMAT); +typedef HRESULT (WINAPI *CheckDeviceFormatConversion_Type)(void *, UINT, D3DDEVTYPE, D3DFORMAT, D3DFORMAT); +typedef HRESULT (WINAPI *D3DGetDeviceCaps_Type)(void *, UINT, D3DDEVTYPE, D3DCAPS9 *); +typedef HMONITOR (WINAPI *GetAdapterMonitor_Type)(void *, UINT); +typedef HRESULT (WINAPI *CreateDevice_Type)(void *, UINT, D3DDEVTYPE, HWND, DWORD, void *, void **); +typedef HRESULT (WINAPI *CreateDeviceEx_Type)(void *, UINT, D3DDEVTYPE, HWND, DWORD, void *, D3DDISPLAYMODEEX *, void **); + +HRESULT WINAPI extRegisterSoftwareDevice(void *, void*); +UINT WINAPI extGetAdapterCount8(void *); +UINT WINAPI extGetAdapterCount9(void *); +HRESULT WINAPI extGetAdapterIdentifier8(void *, UINT, DWORD, D3DADAPTER_IDENTIFIER9 *); +HRESULT WINAPI extGetAdapterIdentifier9(void *, UINT, DWORD, D3DADAPTER_IDENTIFIER9 *); +UINT WINAPI extGetAdapterModeCount(void *, UINT, D3DFORMAT); +HRESULT WINAPI extCheckDeviceType(void *, UINT, D3DDEVTYPE, D3DFORMAT, D3DFORMAT, BOOL); +HRESULT WINAPI extCheckDeviceFormat(void *, UINT, D3DDEVTYPE, D3DFORMAT, DWORD, D3DRESOURCETYPE, D3DFORMAT); +HRESULT WINAPI extCheckDeviceMultiSampleType(void *, UINT, D3DDEVTYPE, D3DFORMAT, BOOL, D3DMULTISAMPLE_TYPE, DWORD *); +HRESULT WINAPI extCheckDepthStencilMatch(void *, UINT, D3DDEVTYPE, D3DFORMAT, D3DFORMAT, D3DFORMAT); +HRESULT WINAPI extCheckDeviceFormatConversion(void *, UINT, D3DDEVTYPE, D3DFORMAT, D3DFORMAT); +HRESULT WINAPI extD3DGetDeviceCaps(void *, UINT, D3DDEVTYPE, D3DCAPS9 *); +HMONITOR WINAPI extGetAdapterMonitor(void *, UINT); +HRESULT WINAPI extCreateDevice(void *, UINT, D3DDEVTYPE, HWND, DWORD, D3DPRESENT_PARAMETERS *, void **); +HRESULT WINAPI extCreateDeviceEx(void *, UINT, D3DDEVTYPE, HWND, DWORD, D3DPRESENT_PARAMETERS *, D3DDISPLAYMODEEX *, void **); + +RegisterSoftwareDevice_Type pRegisterSoftwareDevice = 0; +GetAdapterCount_Type pGetAdapterCount8 = 0; +GetAdapterCount_Type pGetAdapterCount9 = 0; +GetAdapterIdentifier_Type pGetAdapterIdentifier8 = 0; +GetAdapterIdentifier_Type pGetAdapterIdentifier9 = 0; +GetAdapterModeCount_Type pGetAdapterModeCount = 0; +CheckDeviceType_Type pCheckDeviceType = 0; +CheckDeviceFormat_Type pCheckDeviceFormat = 0; +CheckDeviceMultiSampleType_Type pCheckDeviceMultiSampleType = 0; +CheckDepthStencilMatch_Type pCheckDepthStencilMatch = 0; +CheckDeviceFormatConversion_Type pCheckDeviceFormatConversion = 0; +D3DGetDeviceCaps_Type pD3DGetDeviceCaps = 0; +GetAdapterMonitor_Type pGetAdapterMonitor = 0; +CreateDevice_Type pCreateDevice8 = 0; +CreateDevice_Type pCreateDevice9 = 0; +CreateDeviceEx_Type pCreateDeviceEx = 0; + +// IDirect3DDevice8/9 methods + +typedef HRESULT (WINAPI *TestCooperativeLevel_Type)(void *); typedef HRESULT (WINAPI *GetDirect3D8_Type)(void *, void **); typedef HRESULT (WINAPI *GetDirect3D9_Type)(void *, void **); -typedef HRESULT (WINAPI *GetViewport_Type)(void *, D3DVIEWPORT9 *); -typedef HRESULT (WINAPI *SetViewport_Type)(void *, D3DVIEWPORT9 *); -typedef void (WINAPI *SetGammaRamp_Type)(void *, UINT, DWORD, D3DGAMMARAMP *); -typedef void (WINAPI *GetGammaRamp_Type)(void *, UINT, D3DGAMMARAMP *); +typedef HRESULT (WINAPI *GetDisplayMode8_Type)(void *, D3DDISPLAYMODE *); +typedef HRESULT (WINAPI *GetDisplayMode9_Type)(void *, UINT, D3DDISPLAYMODE *); typedef void (WINAPI *SetCursorPosition9_Type)(void *, int, int, DWORD); typedef void (WINAPI *SetCursorPosition8_Type)(void *, int, int, DWORD); typedef BOOL (WINAPI *ShowCursor8_Type)(void *, BOOL); typedef BOOL (WINAPI *ShowCursor9_Type)(void *, BOOL); +typedef HRESULT (WINAPI *CreateAdditionalSwapChain_Type)(void *, D3DPRESENT_PARAMETERS *, IDirect3DSwapChain9 **); +typedef HRESULT (WINAPI *GetSwapChain_Type)(void *, UINT, IDirect3DSwapChain9**); +typedef UINT (WINAPI *GetNumberOfSwapChains_Type)(void *); +typedef HRESULT (WINAPI *BeginStateBlock_Type)(void *); +typedef HRESULT (WINAPI *EndStateBlock8_Type)(void *, DWORD *); +typedef HRESULT (WINAPI *EndStateBlock9_Type)(void *, IDirect3DStateBlock9**); + +HRESULT WINAPI extTestCooperativeLevel(void *); +HRESULT WINAPI extGetDirect3D8(void *, void **); +HRESULT WINAPI extGetDirect3D9(void *, void **); +HRESULT WINAPI extGetDisplayMode8(void *, D3DDISPLAYMODE *); +HRESULT WINAPI extGetDisplayMode9(void *, UINT, D3DDISPLAYMODE *); +void WINAPI extSetCursorPosition9(void *, int, int, DWORD); +void WINAPI extSetCursorPosition8(void *, int, int, DWORD); +BOOL WINAPI extShowCursor8(void *, BOOL); +BOOL WINAPI extShowCursor9(void *, BOOL); +HRESULT WINAPI extCreateAdditionalSwapChain(void *, D3DPRESENT_PARAMETERS *, IDirect3DSwapChain9 **); +HRESULT WINAPI extGetSwapChain(void *, UINT, IDirect3DSwapChain9**); +UINT WINAPI extGetNumberOfSwapChains(void *); +HRESULT WINAPI extBeginStateBlock8(void *); +HRESULT WINAPI extBeginStateBlock9(void *); +HRESULT WINAPI extEndStateBlock8(void *, DWORD *); +HRESULT WINAPI extEndStateBlock9(void *, IDirect3DStateBlock9**); + +TestCooperativeLevel_Type pTestCooperativeLevel = 0; +GetDirect3D8_Type pGetDirect3D8 = 0; +GetDirect3D9_Type pGetDirect3D9 = 0; +GetDisplayMode8_Type pGetDisplayMode8 = 0; +GetDisplayMode9_Type pGetDisplayMode9 = 0; +SetCursorPosition9_Type pSetCursorPosition9 = 0; +SetCursorPosition8_Type pSetCursorPosition8 = 0; +ShowCursor8_Type pShowCursor8 = 0; +ShowCursor9_Type pShowCursor9 = 0; +CreateAdditionalSwapChain_Type pCreateAdditionalSwapChain = 0; +GetSwapChain_Type pGetSwapChain = 0; +GetNumberOfSwapChains_Type pGetNumberOfSwapChains = 0; +BeginStateBlock_Type pBeginStateBlock8 = 0; +BeginStateBlock_Type pBeginStateBlock9 = 0; +EndStateBlock8_Type pEndStateBlock8 = 0; +EndStateBlock9_Type pEndStateBlock9 = 0; + +// to sort ... + +typedef HRESULT (WINAPI *Present_Type)(void *, CONST RECT *, CONST RECT *, HWND, CONST RGNDATA *); +typedef HRESULT (WINAPI *SetRenderState_Type)(void *, D3DRENDERSTATETYPE, DWORD); +typedef HRESULT (WINAPI *GetRenderState_Type)(void *, D3DRENDERSTATETYPE, DWORD ); +typedef HRESULT (WINAPI *GetViewport_Type)(void *, D3DVIEWPORT9 *); +typedef HRESULT (WINAPI *SetViewport_Type)(void *, D3DVIEWPORT9 *); +typedef void (WINAPI *SetGammaRamp_Type)(void *, UINT, DWORD, D3DGAMMARAMP *); +typedef void (WINAPI *GetGammaRamp_Type)(void *, UINT, D3DGAMMARAMP *); typedef HRESULT (WINAPI *SetTexture8_Type)(void *, DWORD, void *); typedef HRESULT (WINAPI *SetTexture9_Type)(void *, DWORD, void *); @@ -66,39 +168,20 @@ HRESULT WINAPI extQueryInterfaceD3D8(void *, REFIID, void** ); HRESULT WINAPI extQueryInterfaceDev8(void *, REFIID, void** ); HRESULT WINAPI extQueryInterfaceD3D9(void *, REFIID, void** ); HRESULT WINAPI extQueryInterfaceDev9(void *, REFIID, void** ); -HRESULT WINAPI extGetDirect3D8(void *, void **); -HRESULT WINAPI extGetDirect3D9(void *, void **); -void* WINAPI extDirect3DCreate8(UINT); -void* WINAPI extDirect3DCreate9(UINT); -HRESULT WINAPI extDirect3DCreate9Ex(UINT, IDirect3D9Ex **); -HRESULT WINAPI extCheckFullScreen(void); -UINT WINAPI extGetAdapterCount8(void *); -UINT WINAPI extGetAdapterCount9(void *); -HRESULT WINAPI extGetAdapterIdentifier8(void *, UINT, DWORD, D3DADAPTER_IDENTIFIER9 *); -HRESULT WINAPI extGetAdapterIdentifier9(void *, UINT, DWORD, D3DADAPTER_IDENTIFIER9 *); -HRESULT WINAPI extCreateDevice(void *, UINT, D3DDEVTYPE, HWND, DWORD, D3DPRESENT_PARAMETERS *, void **); -HRESULT WINAPI extCreateDeviceEx(void *, UINT, D3DDEVTYPE, HWND, DWORD, D3DPRESENT_PARAMETERS *, D3DDISPLAYMODEEX *, void **); HRESULT WINAPI extEnumAdapterModes8(void *, UINT, UINT , D3DDISPLAYMODE *); HRESULT WINAPI extEnumAdapterModes9(void *, UINT, D3DFORMAT, UINT , D3DDISPLAYMODE *); HRESULT WINAPI extGetAdapterDisplayMode8(void *, UINT, D3DDISPLAYMODE *); HRESULT WINAPI extGetAdapterDisplayMode9(void *, UINT, D3DDISPLAYMODE *); -HRESULT WINAPI extGetDisplayMode8(void *, D3DDISPLAYMODE *); -HRESULT WINAPI extGetDisplayMode9(void *, UINT, D3DDISPLAYMODE *); HRESULT WINAPI extPresent(void *, CONST RECT *, CONST RECT *, HWND, CONST RGNDATA *); HRESULT WINAPI extSetRenderState(void *, D3DRENDERSTATETYPE, DWORD); HRESULT WINAPI extGetRenderState(void *, D3DRENDERSTATETYPE, DWORD); -HRESULT WINAPI extCreateAdditionalSwapChain(void *, D3DPRESENT_PARAMETERS *, IDirect3DSwapChain9 **); HRESULT WINAPI extGetViewport(void *, D3DVIEWPORT9 *); HRESULT WINAPI extSetViewport(void *, D3DVIEWPORT9 *); HRESULT WINAPI extReset(void *, D3DPRESENT_PARAMETERS *); void WINAPI extSetGammaRamp(void *, UINT, DWORD, D3DGAMMARAMP *); void WINAPI extGetGammaRamp(void *, UINT, D3DGAMMARAMP *); -void WINAPI extSetCursorPosition9(void *, int, int, DWORD); -void WINAPI extSetCursorPosition8(void *, int, int, DWORD); -BOOL WINAPI extShowCursor8(void *, BOOL); -BOOL WINAPI extShowCursor9(void *, BOOL); ULONG WINAPI extAddRef9(void *); ULONG WINAPI extRelease9(void *); BOOL WINAPI voidDisableD3DSpy(void); @@ -112,7 +195,6 @@ ULONG WINAPI extEndScene9(void *); ULONG WINAPI extSetTexture8(void *, DWORD, void *); ULONG WINAPI extSetTexture9(void *, DWORD, void *); - HRESULT WINAPI extD3D10CreateDevice(IDXGIAdapter *, D3D10_DRIVER_TYPE, HMODULE, UINT, UINT, ID3D10Device **); HRESULT WINAPI extD3D10CreateDeviceAndSwapChain(IDXGIAdapter *, D3D10_DRIVER_TYPE, HMODULE, UINT, UINT, DXGI_SWAP_CHAIN_DESC *, IDXGISwapChain **, ID3D10Device **); HRESULT WINAPI extD3D10CreateDevice1(IDXGIAdapter *, D3D10_DRIVER_TYPE, HMODULE, UINT, D3D10_FEATURE_LEVEL1, UINT, ID3D10Device **); @@ -128,38 +210,22 @@ QueryInterface_Type pQueryInterfaceDev8 = 0; QueryInterface_Type pQueryInterfaceD3D9 = 0; QueryInterface_Type pQueryInterfaceDev9 = 0; -GetDirect3D8_Type pGetDirect3D8 = 0; -GetDirect3D9_Type pGetDirect3D9 = 0; Direct3DCreate8_Type pDirect3DCreate8 = 0; Direct3DCreate9_Type pDirect3DCreate9 = 0; Direct3DCreate9Ex_Type pDirect3DCreate9Ex = 0; CheckFullScreen_Type pCheckFullScreen = 0; -GetAdapterCount_Type pGetAdapterCount8 = 0; -GetAdapterCount_Type pGetAdapterCount9 = 0; -GetAdapterIdentifier_Type pGetAdapterIdentifier8 = 0; -GetAdapterIdentifier_Type pGetAdapterIdentifier9 = 0; -CreateDevice_Type pCreateDevice8 = 0; -CreateDevice_Type pCreateDevice9 = 0; -CreateDeviceEx_Type pCreateDeviceEx = 0; EnumAdapterModes8_Type pEnumAdapterModes8 = 0; EnumAdapterModes9_Type pEnumAdapterModes9 = 0; GetAdapterDisplayMode_Type pGetAdapterDisplayMode8 = 0; GetAdapterDisplayMode_Type pGetAdapterDisplayMode9 = 0; -GetDisplayMode8_Type pGetDisplayMode8 = 0; -GetDisplayMode9_Type pGetDisplayMode9 = 0; Present_Type pPresent = 0; SetRenderState_Type pSetRenderState = 0; GetRenderState_Type pGetRenderState = 0; -CreateAdditionalSwapChain_Type pCreateAdditionalSwapChain = 0; GetViewport_Type pGetViewport = 0; SetViewport_Type pSetViewport = 0; SetGammaRamp_Type pSetGammaRamp = 0; GetGammaRamp_Type pGetGammaRamp = 0; -SetCursorPosition9_Type pSetCursorPosition9 = 0; -SetCursorPosition8_Type pSetCursorPosition8 = 0; -ShowCursor8_Type pShowCursor8 = 0; -ShowCursor9_Type pShowCursor9 = 0; CreateRenderTarget8_Type pCreateRenderTarget8 = 0; BeginScene_Type pBeginScene8 = 0; @@ -183,276 +249,106 @@ Release_Type pRelease9 = 0; DWORD dwD3DVersion; +static HookEntry_Type d3d8Hooks[]={ + {HOOK_HOT_CANDIDATE, "Direct3DCreate8", (FARPROC)NULL, (FARPROC *)&pDirect3DCreate8, (FARPROC)extDirect3DCreate8}, + {HOOK_IAT_CANDIDATE, 0, NULL, 0, 0} // terminator +}; + + +static HookEntry_Type d3d9Hooks[]={ + {HOOK_HOT_CANDIDATE, "Direct3DCreate9", (FARPROC)NULL, (FARPROC *)&pDirect3DCreate9, (FARPROC)extDirect3DCreate9}, + {HOOK_HOT_CANDIDATE, "Direct3DCreate9Ex", (FARPROC)NULL, (FARPROC *)&pDirect3DCreate9Ex, (FARPROC)extDirect3DCreate9Ex}, + {HOOK_HOT_CANDIDATE, "CheckFullScreen", (FARPROC)NULL, (FARPROC *)&pCheckFullScreen, (FARPROC)extCheckFullScreen}, + {HOOK_IAT_CANDIDATE, 0, NULL, 0, 0} // terminator +}; + +static HookEntry_Type d3d9Extra[]={ + {HOOK_HOT_CANDIDATE, "Direct3DShaderValidatorCreate9", (FARPROC)NULL, (FARPROC *)NULL, (FARPROC)voidDirect3DShaderValidatorCreate9}, + {HOOK_HOT_CANDIDATE, "DebugSetLevel", (FARPROC)NULL, (FARPROC *)NULL, (FARPROC)voidDebugSetLevel}, + {HOOK_HOT_CANDIDATE, "DebugSetMute", (FARPROC)NULL, (FARPROC *)NULL, (FARPROC)voidDebugSetMute}, + {HOOK_HOT_CANDIDATE, "DisableD3DSpy", (FARPROC)NULL, (FARPROC *)NULL, (FARPROC)voidDisableD3DSpy}, + {HOOK_IAT_CANDIDATE, 0, NULL, 0, 0} // terminator +}; + +static HookEntry_Type d3d10Hooks[]={ + {HOOK_HOT_CANDIDATE, "D3D10CreateDevice", (FARPROC)NULL, (FARPROC *)&pD3D10CreateDevice, (FARPROC)extD3D10CreateDevice}, + {HOOK_HOT_CANDIDATE, "D3D10CreateDeviceAndSwapChain", (FARPROC)NULL, (FARPROC *)&pD3D10CreateDeviceAndSwapChain, (FARPROC)extD3D10CreateDeviceAndSwapChain}, + {HOOK_HOT_CANDIDATE, "CheckFullScreen", (FARPROC)NULL, (FARPROC *)&pCheckFullScreen, (FARPROC)extCheckFullScreen}, + {HOOK_IAT_CANDIDATE, 0, NULL, 0, 0} // terminator +}; + +static HookEntry_Type d3d10_1Hooks[]={ + {HOOK_HOT_CANDIDATE, "D3D11CreateDevice", (FARPROC)NULL, (FARPROC *)&pD3D11CreateDevice, (FARPROC)extD3D11CreateDevice}, + {HOOK_HOT_CANDIDATE, "D3D11CreateDeviceAndSwapChain", (FARPROC)NULL, (FARPROC *)&pD3D11CreateDeviceAndSwapChain, (FARPROC)extD3D11CreateDeviceAndSwapChain}, + {HOOK_IAT_CANDIDATE, 0, NULL, 0, 0} // terminator +}; + +static HookEntry_Type d3d11Hooks[]={ + {HOOK_HOT_CANDIDATE, "D3D10CreateDevice1", (FARPROC)NULL, (FARPROC *)&pD3D10CreateDevice1, (FARPROC)extD3D10CreateDevice1}, + {HOOK_HOT_CANDIDATE, "D3D10CreateDeviceAndSwapChain1", (FARPROC)NULL, (FARPROC *)&pD3D10CreateDeviceAndSwapChain1, (FARPROC)extD3D10CreateDeviceAndSwapChain1}, + {HOOK_IAT_CANDIDATE, 0, NULL, 0, 0} // terminator +}; + FARPROC Remap_d3d8_ProcAddress(LPCSTR proc, HMODULE hModule) { - if (!strcmp(proc,"Direct3DCreate8") && !pDirect3DCreate8){ - pDirect3DCreate8=(Direct3DCreate8_Type)(*pGetProcAddress)(hModule, proc); - OutTraceDW("GetProcAddress: hooking proc=%s at addr=%x\n", ProcToString(proc), pDirect3DCreate8); - return (FARPROC)extDirect3DCreate8; - } - // NULL -> keep the original call address + FARPROC addr; + if (addr=RemapLibrary(proc, hModule, d3d8Hooks)) return addr; return NULL; } -HRESULT WINAPI voidDirect3DShaderValidatorCreate9(void) -{ - OutTraceDW("Direct3DShaderValidatorCreate9: SUPPRESSED\n"); - return 0; -} - -void WINAPI voidDebugSetLevel(void) -{ - OutTraceDW("DebugSetLevel: SUPPRESSED\n"); -} - -void WINAPI voidDebugSetMute(void) -{ - OutTraceDW("DebugSetMute: SUPPRESSED\n"); -} - -BOOL WINAPI voidDisableD3DSpy(void) -{ - OutTraceDW("DisableD3DSpy: SUPPRESSED\n"); - return FALSE; -} - FARPROC Remap_d3d9_ProcAddress(LPCSTR proc, HMODULE hModule) { - if (!strcmp(proc,"Direct3DCreate9")){ - if(!pDirect3DCreate9) pDirect3DCreate9=(Direct3DCreate9_Type)(*pGetProcAddress)(hModule, proc); - OutTraceDW("GetProcAddress: hooking proc=%s at addr=%x\n", ProcToString(proc), pDirect3DCreate9); - return (FARPROC)extDirect3DCreate9; - } - if (!strcmp(proc,"Direct3DCreate9Ex")){ - if(!pDirect3DCreate9Ex) pDirect3DCreate9Ex=(Direct3DCreate9Ex_Type)(*pGetProcAddress)(hModule, proc); - OutTraceDW("GetProcAddress: hooking proc=%s at addr=%x\n", ProcToString(proc), pDirect3DCreate9Ex); - return (FARPROC)extDirect3DCreate9Ex; - } - if (!strcmp(proc,"CheckFullScreen")){ - if(!pCheckFullScreen) pCheckFullScreen=(CheckFullScreen_Type)(*pGetProcAddress)(hModule, proc); - OutTraceDW("GetProcAddress: hooking proc=%s at addr=%x\n", ProcToString(proc), pCheckFullScreen); - return (FARPROC)extCheckFullScreen; - } - - if (!(dxw.dwFlags3 & SUPPRESSD3DEXT)) return NULL; - - if (!strcmp(proc,"Direct3DShaderValidatorCreate9")){ - OutTraceDW("GetProcAddress: suppressing Direct3DShaderValidatorCreate9\n"); - return (FARPROC)voidDirect3DShaderValidatorCreate9; - } - if (!strcmp(proc,"DebugSetLevel")){ - OutTraceDW("GetProcAddress: suppressing DebugSetLevel\n"); - return (FARPROC)voidDebugSetLevel; - } - if (!strcmp(proc,"DebugSetMute")){ - OutTraceDW("GetProcAddress: suppressing DebugSetMute\n"); - return (FARPROC)voidDebugSetMute; - } - if (!strcmp(proc,"DisableD3DSpy")){ - OutTraceDW("GetProcAddress: suppressing DisableD3DSpy\n"); - return (FARPROC)voidDisableD3DSpy; - } + FARPROC addr; + if (addr=RemapLibrary(proc, hModule, d3d9Hooks)) return addr; + if (dxw.dwFlags3 & SUPPRESSD3DEXT) if (addr=RemapLibrary(proc, hModule, d3d9Extra)) return addr; return NULL; } FARPROC Remap_d3d10_ProcAddress(LPCSTR proc, HMODULE hModule) { - if (!strcmp(proc,"D3D10CreateDevice") && !pD3D10CreateDevice){ - pD3D10CreateDevice=(D3D10CreateDevice_Type)(*pGetProcAddress)(hModule, proc); - OutTraceDW("GetProcAddress: hooking proc=%s at addr=%x\n", ProcToString(proc), pD3D10CreateDevice); - return (FARPROC)extD3D10CreateDevice; - } - if (!strcmp(proc,"D3D10CreateDeviceAndSwapChain") && !pD3D10CreateDeviceAndSwapChain){ - pD3D10CreateDeviceAndSwapChain=(D3D10CreateDeviceAndSwapChain_Type)(*pGetProcAddress)(hModule, proc); - OutTraceDW("GetProcAddress: hooking proc=%s at addr=%x\n", ProcToString(proc), pD3D10CreateDeviceAndSwapChain); - return (FARPROC)extD3D10CreateDeviceAndSwapChain; - } - // NULL -> keep the original call address + FARPROC addr; + if (addr=RemapLibrary(proc, hModule, d3d10Hooks)) return addr; return NULL; } -FARPROC Remap_d3d10_1_ProcAddress(LPCSTR proc, HMODULE hModule) +FARPROC Remap_d3d10_1_ProcAddress(LPCSTR proc, HMODULE hModule) { - if (!strcmp(proc,"D3D10CreateDevice1") && !pD3D10CreateDevice1){ - pD3D10CreateDevice1=(D3D10CreateDevice1_Type)(*pGetProcAddress)(hModule, proc); - OutTraceDW("GetProcAddress: hooking proc=%s at addr=%x\n", ProcToString(proc), pD3D10CreateDevice1); - return (FARPROC)extD3D10CreateDevice1; - } - if (!strcmp(proc,"D3D10CreateDeviceAndSwapChain1") && !pD3D10CreateDeviceAndSwapChain1){ - pD3D10CreateDeviceAndSwapChain1=(D3D10CreateDeviceAndSwapChain1_Type)(*pGetProcAddress)(hModule, proc); - OutTraceDW("GetProcAddress: hooking proc=%s at addr=%x\n", ProcToString(proc), pD3D10CreateDeviceAndSwapChain1); - return (FARPROC)extD3D10CreateDeviceAndSwapChain1; - } - // NULL -> keep the original call address + FARPROC addr; + if (addr=RemapLibrary(proc, hModule, d3d10_1Hooks)) return addr; return NULL; } FARPROC Remap_d3d11_ProcAddress(LPCSTR proc, HMODULE hModule) { - if (!strcmp(proc,"D3D11CreateDevice") && !pD3D11CreateDevice){ - pD3D11CreateDevice=(D3D11CreateDevice_Type)(*pGetProcAddress)(hModule, proc); - OutTraceDW("GetProcAddress: hooking proc=%s at addr=%x\n", ProcToString(proc), pD3D11CreateDevice); - return (FARPROC)extD3D11CreateDevice; - } - if (!strcmp(proc,"D3D11CreateDeviceAndSwapChain") && !pD3D11CreateDeviceAndSwapChain){ - pD3D11CreateDeviceAndSwapChain=(D3D11CreateDeviceAndSwapChain_Type)(*pGetProcAddress)(hModule, proc); - OutTraceDW("GetProcAddress: hooking proc=%s at addr=%x\n", ProcToString(proc), pD3D11CreateDeviceAndSwapChain); - return (FARPROC)extD3D11CreateDeviceAndSwapChain; - } - // NULL -> keep the original call address + FARPROC addr; + if (addr=RemapLibrary(proc, hModule, d3d11Hooks)) return addr; return NULL; } int HookDirect3D(HMODULE module, int version){ - HINSTANCE hinst; - void *tmp; - LPDIRECT3D9 lpd3d; - ID3D10Device *lpd3d10; - ID3D11Device *lpd3d11; - HRESULT res; - switch(version){ case 0: - // D3D8 - tmp = HookAPI(module, "d3d8.dll", NULL, "Direct3DCreate8", extDirect3DCreate8); - if(tmp) pDirect3DCreate8 = (Direct3DCreate8_Type)tmp; - // D3D9 - tmp = HookAPI(module, "d3d9.dll", NULL, "Direct3DCreate9", extDirect3DCreate9); - if(tmp) pDirect3DCreate9 = (Direct3DCreate9_Type)tmp; - tmp = HookAPI(module, "d3d9.dll", NULL, "Direct3DCreate9Ex", extDirect3DCreate9Ex); - if(tmp) pDirect3DCreate9Ex = (Direct3DCreate9Ex_Type)tmp; - tmp = HookAPI(module, "d3d9.dll", NULL, "CheckFullScreen", extCheckFullScreen); - if(tmp) pCheckFullScreen = (CheckFullScreen_Type)tmp; + HookLibrary(module, d3d8Hooks, "d3d8.dll"); + HookLibrary(module, d3d9Hooks, "d3d9.dll"); #ifdef HOOKD3D10ANDLATER - // D3D10 - tmp = HookAPI(module, "d3d10.dll", NULL, "D3D10CreateDevice", extD3D10CreateDevice); - if(tmp) pD3D10CreateDevice = (D3D10CreateDevice_Type)tmp; - tmp = HookAPI(module, "d3d10.dll", NULL, "D3D10CreateDeviceAndSwapChain", extD3D10CreateDeviceAndSwapChain); - if(tmp) pD3D10CreateDeviceAndSwapChain = (D3D10CreateDeviceAndSwapChain_Type)tmp; - // D3D10.1 - tmp = HookAPI(module, "d3d10_1.dll", NULL, "D3D10CreateDevice1", extD3D10CreateDevice1); - if(tmp) pD3D10CreateDevice1 = (D3D10CreateDevice1_Type)tmp; - tmp = HookAPI(module, "d3d10_1.dll", NULL, "D3D10CreateDeviceAndSwapChain1", extD3D10CreateDeviceAndSwapChain); - if(tmp) pD3D10CreateDeviceAndSwapChain1 = (D3D10CreateDeviceAndSwapChain1_Type)tmp; - // D3D11 - tmp = HookAPI(module, "d3d11.dll", NULL, "D3D11CreateDevice", extD3D11CreateDevice); - if(tmp) pD3D11CreateDevice = (D3D11CreateDevice_Type)tmp; - tmp = HookAPI(module, "d3d11.dll", NULL, "D3D11CreateDeviceAndSwapChain", extD3D11CreateDeviceAndSwapChain); - if(tmp) pD3D11CreateDeviceAndSwapChain = (D3D11CreateDeviceAndSwapChain_Type)tmp; + HookLibrary(module, d3d10Hooks, "d3d10.dll"); + HookLibrary(module, d3d10_1Hooks, "d3d10_1.dll"); + HookLibrary(module, d3d11Hooks, "d3d11.dll"); #endif break; case 8: - hinst = LoadLibrary("d3d8.dll"); - pDirect3DCreate8 = - (Direct3DCreate8_Type)GetProcAddress(hinst, "Direct3DCreate8"); - if(pDirect3DCreate8){ - lpd3d = (LPDIRECT3D9)extDirect3DCreate8(220); - if(lpd3d) lpd3d->Release(); - } + HookLibrary(module, d3d8Hooks, "d3d8.dll"); break; case 9: - hinst = (*pLoadLibraryA)("d3d9.dll"); - pDirect3DCreate9 = - (Direct3DCreate9_Type)(*pGetProcAddress)(hinst, "Direct3DCreate9"); - pDirect3DCreate9Ex = - (Direct3DCreate9Ex_Type)(*pGetProcAddress)(hinst, "Direct3DCreate9Ex"); - pCheckFullScreen = - (CheckFullScreen_Type)(*pGetProcAddress)(hinst, "CheckFullScreen"); - if(pDirect3DCreate9){ - lpd3d = (LPDIRECT3D9)extDirect3DCreate9(31); - if(lpd3d) lpd3d->Release(); - } + HookLibrary(module, d3d9Hooks, "d3d9.dll"); break; #ifdef HOOKD3D10ANDLATER case 10: - hinst = (*pLoadLibraryA)("d3d10.dll"); - pD3D10CreateDevice = - (D3D10CreateDevice_Type)(*pGetProcAddress)(hinst, "D3D10CreateDevice"); - if(pD3D10CreateDevice){ - res = extD3D10CreateDevice( - NULL, - D3D10_DRIVER_TYPE_HARDWARE, - NULL, - 0, - D3D10_SDK_VERSION, - &lpd3d10); - if(res==DD_OK) lpd3d10->Release(); - } - hinst = (*pLoadLibraryA)("d3d10_1.dll"); - pD3D10CreateDevice1 = - (D3D10CreateDevice1_Type)(*pGetProcAddress)(hinst, "D3D10CreateDevice1"); - break; - if(pD3D10CreateDevice1){ - res = extD3D10CreateDevice1( - NULL, - D3D10_DRIVER_TYPE_HARDWARE, - NULL, - 0, - D3D10_FEATURE_LEVEL_10_1, - D3D10_SDK_VERSION, - &lpd3d10); - if(res==DD_OK) lpd3d10->Release(); - } - pD3D10CreateDeviceAndSwapChain = - (D3D10CreateDeviceAndSwapChain_Type)(*pGetProcAddress)(hinst, "D3D10CreateDeviceAndSwapChain"); - if(pD3D10CreateDeviceAndSwapChain){ - DXGI_SWAP_CHAIN_DESC swapChainDesc; - IDXGISwapChain *pSwapChain; - ZeroMemory(&swapChainDesc, sizeof(swapChainDesc)); - - //set buffer dimensions and format - swapChainDesc.BufferCount = 2; - swapChainDesc.BufferDesc.Width = dxw.GetScreenWidth(); - swapChainDesc.BufferDesc.Height = dxw.GetScreenHeight(); - swapChainDesc.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT; - swapChainDesc.BufferDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;; - - //set refresh rate - swapChainDesc.BufferDesc.RefreshRate.Numerator = 60; - swapChainDesc.BufferDesc.RefreshRate.Denominator = 1; - - //sampling settings - swapChainDesc.SampleDesc.Quality = 0; - swapChainDesc.SampleDesc.Count = 1; - - //output window handle - swapChainDesc.OutputWindow = dxw.GethWnd(); - swapChainDesc.Windowed = true; - res = extD3D10CreateDeviceAndSwapChain( - NULL, - D3D10_DRIVER_TYPE_HARDWARE, - NULL, - 0, - D3D10_SDK_VERSION, - &swapChainDesc, - &pSwapChain, - &lpd3d10); - if(res==DD_OK) lpd3d10->Release(); - } + HookLibrary(module, d3d10Hooks, "d3d10.dll"); + HookLibrary(module, d3d10_1Hooks, "d3d10_1.dll"); break; case 11: - hinst = (*pLoadLibraryA)("d3d11.dll"); - pD3D11CreateDevice = - (D3D11CreateDevice_Type)(*pGetProcAddress)(hinst, "D3D11CreateDevice"); - if(pD3D11CreateDevice){ - D3D_FEATURE_LEVEL FeatureLevel; - ID3D11DeviceContext *pImmediateContext; - res = extD3D11CreateDevice( - NULL, - D3D_DRIVER_TYPE_HARDWARE, - NULL, - 0, // flags - NULL, // FeatureLevels - 0, - D3D11_SDK_VERSION, - &lpd3d11, - &FeatureLevel, - &pImmediateContext); - if(res==DD_OK) lpd3d11->Release(); - } - pD3D11CreateDeviceAndSwapChain = - (D3D11CreateDeviceAndSwapChain_Type)(*pGetProcAddress)(hinst, "D3D11CreateDeviceAndSwapChain"); - break; + HookLibrary(module, d3d11Hooks, "d3d11.dll"); #endif } if(pDirect3DCreate8 || pDirect3DCreate9) return 1; @@ -461,7 +357,7 @@ int HookDirect3D(HMODULE module, int version){ void HookD3DDevice8(void** ppD3Ddev8) { - OutTraceDW("Device hook for IID_IDirect3DDevice8 interface\n"); + OutTraceD3D("Device hook for IID_IDirect3DDevice8 interface\n"); SetHook((void *)(**(DWORD **)ppD3Ddev8 + 0), extQueryInterfaceDev8, (void **)&pQueryInterfaceDev8, "QueryInterface(D8)"); SetHook((void *)(**(DWORD **)ppD3Ddev8 + 24), extGetDirect3D8, (void **)&pGetDirect3D8, "GetDirect3D(D8)"); SetHook((void *)(**(DWORD **)ppD3Ddev8 + 32), extGetDisplayMode8, (void **)&pGetDisplayMode8, "GetDisplayMode(D8)"); @@ -485,6 +381,8 @@ void HookD3DDevice8(void** ppD3Ddev8) if(dxw.dwFlags4 & ZBUFFERALWAYS) (*pSetRenderState)((void *)*ppD3Ddev8, D3DRS_ZFUNC, D3DCMP_ALWAYS); //if(1) (*pSetRenderState)((void *)*ppD3Ddev8, D3DRS_SPECULARENABLE, TRUE); } + SetHook((void *)(**(DWORD **)ppD3Ddev8 + 208), extBeginStateBlock8, (void **)&pBeginStateBlock8, "BeginStateBlock(D8)"); + SetHook((void *)(**(DWORD **)ppD3Ddev8 + 212), extEndStateBlock8, (void **)&pEndStateBlock8, "EndStateBlock(D8)"); if (dxw.dwFlags4 & NOTEXTURES) SetHook((void *)(**(DWORD **)ppD3Ddev8 + 244), extSetTexture8, (void **)&pSetTexture8, "SetTexture(D8)"); //if (!(dxw.dwTFlags & OUTPROXYTRACE)) return; //SetHook((void *)(**(DWORD **)ppD3Ddev8 + 4), extAddRef8, (void **)&pAddRef8, "AddRef(D8)"); @@ -493,13 +391,15 @@ void HookD3DDevice8(void** ppD3Ddev8) void HookD3DDevice9(void** ppD3Ddev9) { - OutTraceDW("Device hook for IID_IDirect3DDevice9 interface\n"); + OutTraceD3D("Device hook for IID_IDirect3DDevice9 interface\n"); SetHook((void *)(**(DWORD **)ppD3Ddev9 + 0), extQueryInterfaceDev9, (void **)&pQueryInterfaceDev9, "QueryInterface(D9)"); SetHook((void *)(**(DWORD **)ppD3Ddev9 + 24), extGetDirect3D9, (void **)&pGetDirect3D9, "GetDirect3D(D9)"); SetHook((void *)(**(DWORD **)ppD3Ddev9 + 32), extGetDisplayMode9, (void **)&pGetDisplayMode9, "GetDisplayMode(D9)"); SetHook((void *)(**(DWORD **)ppD3Ddev9 + 44), extSetCursorPosition9, (void **)&pSetCursorPosition9, "SetCursorPosition(D9)"); SetHook((void *)(**(DWORD **)ppD3Ddev9 + 48), extShowCursor9, (void **)&pShowCursor9, "ShowCursor(D9)"); SetHook((void *)(**(DWORD **)ppD3Ddev9 + 52), extCreateAdditionalSwapChain, (void **)&pCreateAdditionalSwapChain, "CreateAdditionalSwapChain(D9)"); + SetHook((void *)(**(DWORD **)ppD3Ddev9 + 56), extGetSwapChain, (void **)&pGetSwapChain, "GetSwapChain(D9)"); + SetHook((void *)(**(DWORD **)ppD3Ddev9 + 60), extGetNumberOfSwapChains, (void **)&pGetNumberOfSwapChains, "extGetNumberOfSwapChains(D9)"); SetHook((void *)(**(DWORD **)ppD3Ddev9 + 64), extReset, (void **)&pReset, "Reset(D9)"); SetHook((void *)(**(DWORD **)ppD3Ddev9 + 68), extPresent, (void **)&pPresent, "Present(D9)"); if(dxw.dwFlags2 & DISABLEGAMMARAMP){ @@ -518,10 +418,17 @@ void HookD3DDevice9(void** ppD3Ddev9) if(dxw.dwFlags4 & ZBUFFERALWAYS) (*pSetRenderState)((void *)*ppD3Ddev9, D3DRS_ZFUNC, D3DCMP_ALWAYS); //if(1) (*pSetRenderState)((void *)*ppD3Ddev9, D3DRS_SPECULARENABLE, TRUE); } - if (dxw.dwFlags4 & NOTEXTURES) SetHook((void *)(**(DWORD **)ppD3Ddev9 + 260), extSetTexture9, (void **)&pSetTexture9, "SetTexture(D9)"); + SetHook((void *)(**(DWORD **)ppD3Ddev9 + 240), extBeginStateBlock9, (void **)&pBeginStateBlock9, "BeginStateBlock(D9)"); + SetHook((void *)(**(DWORD **)ppD3Ddev9 + 244), extEndStateBlock9, (void **)&pEndStateBlock9, "EndStateBlock(D9)"); + if (dxw.dwFlags4 & NOTEXTURES) { + SetHook((void *)(**(DWORD **)ppD3Ddev9 + 260), extSetTexture9, (void **)&pSetTexture9, "SetTexture(D9)"); + } if (!(dxw.dwTFlags & OUTPROXYTRACE)) return; SetHook((void *)(**(DWORD **)ppD3Ddev9 + 4), extAddRef9, (void **)&pAddRef9, "AddRef(D9)"); SetHook((void *)(**(DWORD **)ppD3Ddev9 + 8), extRelease9, (void **)&pRelease9, "Release(D9)"); + SetHook((void *)(**(DWORD **)ppD3Ddev9 + 12), extTestCooperativeLevel, (void **)&pTestCooperativeLevel, "TestCooperativeLevel(D9)"); + + } void HookDirect3D8(void *lpd3d) @@ -560,6 +467,16 @@ void HookDirect3D9(void *lpd3d, BOOL ex) SetHook((void *)(*(DWORD *)lpd3d + 32), extGetAdapterDisplayMode9, (void **)&pGetAdapterDisplayMode9, "GetAdapterDisplayMode(D9)"); SetHook((void *)(*(DWORD *)lpd3d + 64), extCreateDevice, (void **)&pCreateDevice9, "CreateDevice(D9)"); if(ex) SetHook((void *)(*(DWORD *)lpd3d + 80), extCreateDeviceEx, (void **)&pCreateDeviceEx, "CreateDeviceEx(D9)"); + if (!(dxw.dwTFlags & OUTPROXYTRACE)) return; + SetHook((void *)(*(DWORD *)lpd3d + 12), extRegisterSoftwareDevice, (void **)&pRegisterSoftwareDevice, "RegisterSoftwareDevice(D9)"); + SetHook((void *)(*(DWORD *)lpd3d + 24), extGetAdapterModeCount, (void **)&pGetAdapterModeCount, "GetAdapterModeCount(D9)"); + SetHook((void *)(*(DWORD *)lpd3d + 36), extCheckDeviceType, (void **)&pCheckDeviceType, "CheckDeviceType(D9)"); + SetHook((void *)(*(DWORD *)lpd3d + 40), extCheckDeviceFormat, (void **)&pCheckDeviceFormat, "CheckDeviceFormat(D9)"); + SetHook((void *)(*(DWORD *)lpd3d + 44), extCheckDeviceMultiSampleType, (void **)&pCheckDeviceMultiSampleType, "CheckDeviceMultiSampleType(D9)"); + SetHook((void *)(*(DWORD *)lpd3d + 48), extCheckDepthStencilMatch, (void **)&pCheckDepthStencilMatch, "CheckDepthStencilMatch(D9)"); + SetHook((void *)(*(DWORD *)lpd3d + 52), extCheckDeviceFormatConversion, (void **)&pCheckDeviceFormatConversion, "CheckDeviceFormatConversion(D9)"); + SetHook((void *)(*(DWORD *)lpd3d + 56), extD3DGetDeviceCaps, (void **)&pD3DGetDeviceCaps, "GetDeviceCaps(D9)"); + SetHook((void *)(*(DWORD *)lpd3d + 60), extGetAdapterMonitor, (void **)&pGetAdapterMonitor, "GetAdapterMonitor(D9)"); } void* WINAPI extDirect3DCreate9(UINT sdkversion) @@ -604,7 +521,7 @@ UINT WINAPI extGetAdapterCount8(void *lpd3d) res=(*pGetAdapterCount8)(lpd3d); OutTraceD3D("GetAdapterCount(8): count=%d\n", res); if(dxw.dwFlags2 & HIDEMULTIMONITOR) { - OutTraceDW("GetAdapterCount: HIDEMULTIMONITOR count=1\n"); + OutTraceD3D("GetAdapterCount: HIDEMULTIMONITOR count=1\n"); res=1; } return res; @@ -616,7 +533,7 @@ UINT WINAPI extGetAdapterCount9(void *lpd3d) res=(*pGetAdapterCount9)(lpd3d); OutTraceD3D("GetAdapterCount(9): count=%d\n", res); if(dxw.dwFlags2 & HIDEMULTIMONITOR) { - OutTraceDW("GetAdapterCount: HIDEMULTIMONITOR count=1\n"); + OutTraceD3D("GetAdapterCount: HIDEMULTIMONITOR count=1\n"); res=1; } return res; @@ -661,12 +578,12 @@ HRESULT WINAPI extReset(void *pd3dd, D3DPRESENT_PARAMETERS* pPresParam) HRESULT res; DWORD param[64], *tmp; D3DDISPLAYMODE mode; - int Windowed; + DWORD Windowed; void *pD3D; memcpy(param, pPresParam, (dwD3DVersion == 9)?56:52); - if(IsTraceDW){ + if(IsTraceD3D){ tmp = param; OutTrace("D3D%d::Reset\n", dwD3DVersion); OutTrace(" BackBufferWidth = %i\n", *(tmp ++)); @@ -677,7 +594,7 @@ HRESULT WINAPI extReset(void *pd3dd, D3DPRESENT_PARAMETERS* pPresParam) if(dwD3DVersion == 9) OutTrace(" MultiSampleQuality = %i\n", *(tmp ++)); OutTrace(" SwapEffect = 0x%x\n", *(tmp ++)); OutTrace(" hDeviceWindow = 0x%x\n", *(tmp ++)); - OutTrace(" Windowed = %i\n", (Windowed=*(tmp ++))); + OutTrace(" Windowed = %i\n", *(tmp ++)); OutTrace(" EnableAutoDepthStencil = %i\n", *(tmp ++)); OutTrace(" AutoDepthStencilFormat = %i\n", *(tmp ++)); OutTrace(" Flags = 0x%x\n", *(tmp ++)); @@ -685,24 +602,25 @@ HRESULT WINAPI extReset(void *pd3dd, D3DPRESENT_PARAMETERS* pPresParam) OutTrace(" PresentationInterval = 0x%x\n", *(tmp ++)); } + Windowed = (dwD3DVersion == 8) ? param[7] : param[8]; if(dxw.Windowize){ if(Windowed) { // do not attempt to reset when returning to windowed mode: it is useless (you are windowed already) // and the code below (GetDirect3D, ...) doesn't work. - OutTraceDW("SKIPPED!\n"); + OutTraceD3D("SKIPPED!\n"); return DD_OK; } if (dwD3DVersion == 9){ res=(*pGetDirect3D9)(pd3dd, &pD3D); if(res) { - OutTraceDW("GetDirect3D FAILED! %x\n", res); + OutTraceD3D("GetDirect3D FAILED! %x\n", res); return(DD_OK); } - OutTraceDW("GetDirect3D pd3d=%x\n", pD3D); + OutTraceD3D("GetDirect3D pd3d=%x\n", pD3D); res=(*pGetAdapterDisplayMode9)(pD3D, 0, &mode); if(res) { - OutTraceDW("GetAdapterDisplayMode FAILED! %x\n", res); + OutTraceD3D("GetAdapterDisplayMode FAILED! %x\n", res); return(DD_OK); } param[2] = mode.Format; @@ -716,13 +634,13 @@ HRESULT WINAPI extReset(void *pd3dd, D3DPRESENT_PARAMETERS* pPresParam) else{ res=(*pGetDirect3D8)(pd3dd, &pD3D); if(res) { - OutTraceDW("GetDirect3D FAILED! %x\n", res); + OutTraceD3D("GetDirect3D FAILED! %x\n", res); return(DD_OK); } - OutTraceDW("GetDirect3D pd3d=%x\n", pD3D); + OutTraceD3D("GetDirect3D pd3d=%x\n", pD3D); res=(*pGetAdapterDisplayMode8)(pD3D, 0, &mode); if(res) { - OutTraceDW("GetAdapterDisplayMode FAILED! %x\n", res); + OutTraceD3D("GetAdapterDisplayMode FAILED! %x\n", res); return(DD_OK); } param[2] = mode.Format; @@ -738,18 +656,18 @@ HRESULT WINAPI extReset(void *pd3dd, D3DPRESENT_PARAMETERS* pPresParam) if(!(dxw.dwFlags4 & NOD3DRESET)){ res = (*pReset)(pd3dd, (D3DPRESENT_PARAMETERS *)param); if(res == D3DERR_INVALIDCALL){ - OutTraceDW("FAILED! D3DERR_INVALIDCALL\n", res); + OutTraceD3D("FAILED! D3DERR_INVALIDCALL\n", res); return D3DERR_INVALIDCALL; } if(res){ - OutTraceDW("FAILED! %x\n", res); + OutTraceD3D("FAILED! %x\n", res); return res; } - OutTraceDW("SUCCESS!\n"); + OutTraceD3D("SUCCESS!\n"); (dwD3DVersion == 8) ? HookD3DDevice8(&pd3dd) : HookD3DDevice9(&pd3dd); } else{ - OutTraceDW("SKIPPED!\n"); + OutTraceD3D("SKIPPED!\n"); res=D3D_OK; } @@ -790,7 +708,7 @@ HRESULT WINAPI extGetDisplayMode8(void *lpd3d, D3DDISPLAYMODE *pMode) pMode->Width = dxw.GetScreenWidth(); pMode->Height = dxw.GetScreenHeight(); } - OutTraceDW("GetDisplayMode(8): fixed size=(%dx%d)\n", pMode->Width, pMode->Height); + OutTraceD3D("GetDisplayMode(8): fixed size=(%dx%d)\n", pMode->Width, pMode->Height); return res; } @@ -808,7 +726,7 @@ HRESULT WINAPI extGetDisplayMode9(void *lpd3d, UINT iSwapChain, D3DDISPLAYMODE * pMode->Width = dxw.GetScreenWidth(); pMode->Height = dxw.GetScreenHeight(); } - OutTraceDW("GetDisplayMode(9): fixed size=(%dx%d)\n", pMode->Width, pMode->Height); + OutTraceD3D("GetDisplayMode(9): fixed size=(%dx%d)\n", pMode->Width, pMode->Height); return res; } @@ -844,7 +762,7 @@ HRESULT WINAPI extGetAdapterDisplayMode8(void *lpd3d, UINT Adapter, D3DDISPLAYMO pMode->Width = dxw.GetScreenWidth(); pMode->Height = dxw.GetScreenHeight(); } - OutTraceDW("GetAdapterDisplayMode(8): fixed size=(%dx%d)\n", pMode->Width, pMode->Height); + OutTraceD3D("GetAdapterDisplayMode(8): fixed size=(%dx%d)\n", pMode->Width, pMode->Height); return res; } @@ -862,7 +780,7 @@ HRESULT WINAPI extGetAdapterDisplayMode9(void *lpd3d, UINT Adapter, D3DDISPLAYMO pMode->Width = dxw.GetScreenWidth(); pMode->Height = dxw.GetScreenHeight(); } - OutTraceDW("GetAdapterDisplayMode(9): fixed size=(%dx%d)\n", pMode->Width, pMode->Height); + OutTraceD3D("GetAdapterDisplayMode(9): fixed size=(%dx%d)\n", pMode->Width, pMode->Height); return res; } @@ -884,7 +802,7 @@ void FixD3DWindowFrame(HWND hfocuswindow) workarea.left, workarea.top, workarea.right-workarea.left, workarea.bottom-workarea.top, dxw.GethWnd(), NULL, NULL, NULL); if (hfocuswindow) - OutTraceDW("CreateDevice: updated hfocuswindow=%x pos=(%d,%d) size=(%d,%d)\n", + OutTraceD3D("CreateDevice: updated hfocuswindow=%x pos=(%d,%d) size=(%d,%d)\n", hfocuswindow, workarea.left, workarea.top, workarea.right-workarea.left, workarea.bottom-workarea.top); else OutTraceE("CreateDevice: CreateWindowEx ERROR err=%d\n", GetLastError()); @@ -898,7 +816,6 @@ HRESULT WINAPI extCreateDevice(void *lpd3d, UINT adapter, D3DDEVTYPE devicetype, HRESULT res; DWORD param[64], *tmp; D3DDISPLAYMODE mode; - int Windowed; OutTraceD3D("CreateDevice: D3DVersion=%d lpd3d=%x adapter=%x hFocusWnd=%x behavior=%x, size=(%d,%d)\n", dwD3DVersion, lpd3d, adapter, hfocuswindow, behaviorflags, ppresentparam->BackBufferWidth, ppresentparam->BackBufferHeight); @@ -909,7 +826,7 @@ HRESULT WINAPI extCreateDevice(void *lpd3d, UINT adapter, D3DDEVTYPE devicetype, if(dxw.Windowize) FixD3DWindowFrame(hfocuswindow); - if(IsTraceDW){ + if(IsTraceD3D){ tmp = param; OutTrace("D3D%d::CreateDevice\n", dwD3DVersion); OutTrace(" Adapter = %i\n", adapter); @@ -924,7 +841,7 @@ HRESULT WINAPI extCreateDevice(void *lpd3d, UINT adapter, D3DDEVTYPE devicetype, if(dwD3DVersion == 9) OutTrace(" MultiSampleQuality = %i\n", *(tmp ++)); OutTrace(" SwapEffect = 0x%x\n", *(tmp ++)); OutTrace(" hDeviceWindow = 0x%x\n", *(tmp ++)); - OutTrace(" Windowed = %i\n", (Windowed=*(tmp ++))); + OutTrace(" Windowed = %i\n", *(tmp ++)); OutTrace(" EnableAutoDepthStencil = %i\n", *(tmp ++)); OutTrace(" AutoDepthStencilFormat = %i\n", *(tmp ++)); OutTrace(" Flags = 0x%x\n", *(tmp ++)); @@ -937,9 +854,9 @@ HRESULT WINAPI extCreateDevice(void *lpd3d, UINT adapter, D3DDEVTYPE devicetype, else (*pGetAdapterDisplayMode8)(lpd3d, 0, &mode); param[2] = mode.Format; - OutTraceDW(" Current Format = 0x%x\n", mode.Format); - OutTraceDW(" Current ScreenSize = (%dx%d)\n", mode.Width, mode.Height); - OutTraceDW(" Current Refresh Rate = %d\n", mode.RefreshRate); + OutTraceD3D(" Current Format = 0x%x\n", mode.Format); + OutTraceD3D(" Current ScreenSize = (%dx%d)\n", mode.Width, mode.Height); + OutTraceD3D(" Current Refresh Rate = %d\n", mode.RefreshRate); if(dwD3DVersion == 9){ if(dxw.Windowize){ @@ -965,10 +882,10 @@ HRESULT WINAPI extCreateDevice(void *lpd3d, UINT adapter, D3DDEVTYPE devicetype, } if(res){ - OutTraceDW("FAILED! %x\n", res); + OutTraceD3D("FAILED! %x\n", res); return res; } - OutTraceDW("SUCCESS! device=%x\n", *ppd3dd); + OutTraceD3D("SUCCESS! device=%x\n", *ppd3dd); if(dwD3DVersion == 8){ HookD3DDevice8(ppd3dd); @@ -992,7 +909,6 @@ HRESULT WINAPI extCreateDeviceEx(void *lpd3d, UINT adapter, D3DDEVTYPE devicetyp HRESULT res; DWORD param[64], *tmp; D3DDISPLAYMODE mode; - int Windowed; OutTraceD3D("CreateDeviceEx: D3DVersion=%d lpd3d=%x adapter=%x hFocusWnd=%x behavior=%x, size=(%d,%d)\n", dwD3DVersion, lpd3d, adapter, hfocuswindow, behaviorflags, ppresentparam->BackBufferWidth, ppresentparam->BackBufferHeight); @@ -1004,7 +920,7 @@ HRESULT WINAPI extCreateDeviceEx(void *lpd3d, UINT adapter, D3DDEVTYPE devicetyp if(dxw.Windowize) FixD3DWindowFrame(hfocuswindow); tmp = param; - if(IsTraceDW){ + if(IsTraceD3D){ OutTrace("D3D%d::CreateDeviceEx\n", dwD3DVersion); OutTrace(" Adapter = %i\n", adapter); OutTrace(" DeviceType = %i\n", devicetype); @@ -1018,7 +934,7 @@ HRESULT WINAPI extCreateDeviceEx(void *lpd3d, UINT adapter, D3DDEVTYPE devicetyp OutTrace(" MultiSampleQuality = %i\n", *(tmp ++)); OutTrace(" SwapEffect = 0x%x\n", *(tmp ++)); OutTrace(" hDeviceWindow = 0x%x\n", *(tmp ++)); - OutTrace(" Windowed = %i\n", (Windowed=*(tmp ++))); + OutTrace(" Windowed = %i\n", *(tmp ++)); OutTrace(" EnableAutoDepthStencil = %i\n", *(tmp ++)); OutTrace(" AutoDepthStencilFormat = %i\n", *(tmp ++)); OutTrace(" Flags = 0x%x\n", *(tmp ++)); @@ -1029,9 +945,9 @@ HRESULT WINAPI extCreateDeviceEx(void *lpd3d, UINT adapter, D3DDEVTYPE devicetyp //((LPDIRECT3D9)lpd3d)->GetAdapterDisplayMode(0, &mode); (*pGetAdapterDisplayMode9)(lpd3d, 0, &mode); param[2] = mode.Format; - OutTraceDW(" Current Format = 0x%x\n", mode.Format); - OutTraceDW(" Current ScreenSize = (%dx%d)\n", mode.Width, mode.Height); - OutTraceDW(" Current Refresh Rate = %d\n", mode.RefreshRate); + OutTraceD3D(" Current Format = 0x%x\n", mode.Format); + OutTraceD3D(" Current ScreenSize = (%dx%d)\n", mode.Width, mode.Height); + OutTraceD3D(" Current Refresh Rate = %d\n", mode.RefreshRate); if(dxw.Windowize){ //param[7] = 0; //hDeviceWindow @@ -1044,10 +960,10 @@ HRESULT WINAPI extCreateDeviceEx(void *lpd3d, UINT adapter, D3DDEVTYPE devicetyp res = (*pCreateDeviceEx)(lpd3d, 0, devicetype, hfocuswindow, behaviorflags, param, pFullscreenDisplayMode, ppd3dd); if(res){ - OutTraceDW("FAILED! %x\n", res); + OutTraceD3D("FAILED! %x\n", res); return res; } - OutTraceDW("SUCCESS!\n"); + OutTraceD3D("SUCCESS!\n"); HookD3DDevice9(ppd3dd); @@ -1108,26 +1024,25 @@ HRESULT WINAPI extSetViewport(void *pd3dd, D3DVIEWPORT9 *pViewport) pViewport->Y = (pViewport->Y * (int)client.bottom) / (int)dxw.GetScreenHeight(); pViewport->Width = (pViewport->Width * (int)client.right) / (int)dxw.GetScreenWidth(); pViewport->Height = (pViewport->Height * (int)client.bottom) / (int)dxw.GetScreenHeight(); - OutTraceDW("SetViewport: remapped pos=(%d,%d) size=(%d,%d)\n", + OutTraceD3D("SetViewport: remapped pos=(%d,%d) size=(%d,%d)\n", pViewport->X, pViewport->Y, pViewport->Width, pViewport->Height); return (*pSetViewport)(pd3dd, pViewport); } -HRESULT WINAPI extCreateAdditionalSwapChain(void *lpd3d, D3DPRESENT_PARAMETERS *pPresentationParameters, IDirect3DSwapChain9 **ppSwapChain) +HRESULT WINAPI extCreateAdditionalSwapChain(void *lpd3dd, D3DPRESENT_PARAMETERS *pPresentationParameters, IDirect3DSwapChain9 **ppSwapChain) { HRESULT res; DWORD param[64], *tmp; D3DDISPLAYMODE mode; - int Windowed; - OutTraceD3D("CreateAdditionalSwapChain: d3d=%x\n", lpd3d); + OutTraceD3D("CreateAdditionalSwapChain: d3d=%x\n", lpd3dd); memcpy(param, pPresentationParameters, (dwD3DVersion == 9)?56:52); dxw.SetScreenSize(param[0], param[1]); if(dxw.Windowize) FixD3DWindowFrame(dxw.GethWnd()); tmp = param; - if(IsTraceDW){ + if(IsTraceD3D){ OutTrace("D3D%d::CreateAdditionalSwapChain\n", dwD3DVersion); OutTrace(" BackBufferWidth = %i\n", *(tmp ++)); OutTrace(" BackBufferHeight = %i\n", *(tmp ++)); @@ -1137,7 +1052,7 @@ HRESULT WINAPI extCreateAdditionalSwapChain(void *lpd3d, D3DPRESENT_PARAMETERS * if(dwD3DVersion == 9) OutTrace(" MultiSampleQuality = %i\n", *(tmp ++)); OutTrace(" SwapEffect = 0x%x\n", *(tmp ++)); OutTrace(" hDeviceWindow = 0x%x\n", *(tmp ++)); - OutTrace(" Windowed = %i\n", (Windowed=*(tmp ++))); + OutTrace(" Windowed = %i\n", *(tmp ++)); OutTrace(" EnableAutoDepthStencil = %i\n", *(tmp ++)); OutTrace(" AutoDepthStencilFormat = %i\n", *(tmp ++)); OutTrace(" Flags = 0x%x\n", *(tmp ++)); @@ -1146,13 +1061,13 @@ HRESULT WINAPI extCreateAdditionalSwapChain(void *lpd3d, D3DPRESENT_PARAMETERS * } if (dwD3DVersion == 9) - (*pGetAdapterDisplayMode9)(lpd3d, 0, &mode); + (*pGetAdapterDisplayMode9)(lpd3dd, 0, &mode); else - (*pGetAdapterDisplayMode8)(lpd3d, 0, &mode); + (*pGetAdapterDisplayMode8)(lpd3dd, 0, &mode); param[2] = mode.Format; - OutTraceDW(" Current Format = 0x%x\n", mode.Format); - OutTraceDW(" Current ScreenSize = (%dx%d)\n", mode.Width, mode.Height); - OutTraceDW(" Current Refresh Rate = %d\n", mode.RefreshRate); + OutTraceD3D(" Current Format = 0x%x\n", mode.Format); + OutTraceD3D(" Current ScreenSize = (%dx%d)\n", mode.Width, mode.Height); + OutTraceD3D(" Current Refresh Rate = %d\n", mode.RefreshRate); if(dxw.Windowize){ if(dwD3DVersion == 9){ @@ -1170,8 +1085,9 @@ HRESULT WINAPI extCreateAdditionalSwapChain(void *lpd3d, D3DPRESENT_PARAMETERS * param[12] = D3DPRESENT_INTERVAL_DEFAULT; //PresentationInterval } } - res=(*pCreateAdditionalSwapChain)(lpd3d, (D3DPRESENT_PARAMETERS *)param, ppSwapChain); + res=(*pCreateAdditionalSwapChain)(lpd3dd, (D3DPRESENT_PARAMETERS *)param, ppSwapChain); if(res) OutTraceE("CreateAdditionalSwapChain ERROR: res=%x\n", res); + (dwD3DVersion == 9) ? HookD3DDevice9(&lpd3dd) : HookD3DDevice8(&lpd3dd); return res; } @@ -1435,12 +1351,12 @@ HRESULT WINAPI extCheckFullScreen(void) { HRESULT res; if(dxw.Windowize){ - OutTraceDW("CheckFullScreen: return OK\n"); + OutTraceD3D("CheckFullScreen: return OK\n"); res=0; } else{ res=(*pCheckFullScreen)(); - OutTraceDW("CheckFullScreen: return %x\n", res); + OutTraceD3D("CheckFullScreen: return %x\n", res); } return res; } @@ -1505,7 +1421,7 @@ ULONG WINAPI extCreateRenderTarget8(void *lpdd3dd, UINT Width, UINT Height, D3DF ULONG WINAPI extBeginScene8(void *lpdd3dd) { ULONG res; - OutTraceD3D("Device::BeginScene(8): d3dd=%x\n", lpdd3dd); + OutTraceB("Device::BeginScene(8): d3dd=%x\n", lpdd3dd); res=(*pBeginScene8)(lpdd3dd); if (res) OutTraceE("Device::BeginScene(8) ERROR: err=%x\n", res); return res; @@ -1514,7 +1430,7 @@ ULONG WINAPI extBeginScene8(void *lpdd3dd) ULONG WINAPI extBeginScene9(void *lpdd3dd) { ULONG res; - OutTraceD3D("Device::BeginScene(9): d3dd=%x\n", lpdd3dd); + OutTraceB("Device::BeginScene(9): d3dd=%x\n", lpdd3dd); res=(*pBeginScene9)(lpdd3dd); if (res) OutTraceE("Device::BeginScene(9) ERROR: err=%x\n", res); return res; @@ -1523,6 +1439,7 @@ ULONG WINAPI extBeginScene9(void *lpdd3dd) ULONG WINAPI extEndScene8(void *lpdd3dd) { ULONG res; + OutTraceB("Device::EndScene(8): d3dd=%x\n", lpdd3dd); res=(*pEndScene8)(lpdd3dd); if (res) OutTraceE("Device::EndScene(8) ERROR: err=%x\n", res); return res; @@ -1531,6 +1448,7 @@ ULONG WINAPI extEndScene8(void *lpdd3dd) ULONG WINAPI extEndScene9(void *lpdd3dd) { ULONG res; + OutTraceB("Device::EndScene(9): d3dd=%x\n", lpdd3dd); res=(*pEndScene9)(lpdd3dd); if (res) OutTraceE("Device::EndScene(9) ERROR: err=%x\n", res); return res; @@ -1577,3 +1495,140 @@ BOOL WINAPI extShowCursor9(void *lpd3dd, BOOL bShow) OutTraceD3D("Device::ShowCursor(9): d3dd=%x show=%x->%x res=%x\n", lpd3dd, bShow, bNew, res); return res; } + +void WINAPI voidDebugSetLevel(void) +{ + OutTraceD3D("DebugSetLevel: SUPPRESSED\n"); +} + +void WINAPI voidDebugSetMute(void) +{ + OutTraceD3D("DebugSetMute: SUPPRESSED\n"); +} + +BOOL WINAPI voidDisableD3DSpy(void) +{ + OutTraceD3D("DisableD3DSpy: SUPPRESSED\n"); + return FALSE; +} + +HRESULT WINAPI voidDirect3DShaderValidatorCreate9(void) +{ + OutTraceD3D("Direct3DShaderValidatorCreate9: SUPPRESSED\n"); + return 0; +} + +HRESULT WINAPI extRegisterSoftwareDevice(void *lpd3d, void *pInitializeFunction) +{ + OutTrace("RegisterSoftwareDevice: d3d=%x\n", lpd3d); + return (*pRegisterSoftwareDevice)(lpd3d, pInitializeFunction); +} + +UINT WINAPI extGetAdapterModeCount(void *lpd3d, UINT Adapter, D3DFORMAT Format) +{ + OutTrace("GetAdapterModeCount: d3d=%x adapter=%d\n", lpd3d, Adapter); + return (*pGetAdapterModeCount)(lpd3d, Adapter, Format); +} + +HRESULT WINAPI extCheckDeviceType(void *lpd3d, UINT Adapter, D3DDEVTYPE DevType, D3DFORMAT AdapterFormat, D3DFORMAT BackBufferFormat, BOOL bWindowed) +{ + OutTrace("CheckDeviceType: d3d=%x adapter=%d windowed=%x\n", lpd3d, Adapter, bWindowed); + return (*pCheckDeviceType)(lpd3d, Adapter, DevType, AdapterFormat, BackBufferFormat, bWindowed); +} + +HRESULT WINAPI extCheckDeviceFormat(void *lpd3d, UINT Adapter, D3DDEVTYPE DeviceType, D3DFORMAT AdapterFormat, DWORD Usage, D3DRESOURCETYPE RType, D3DFORMAT CheckFormat) +{ + OutTrace("CheckDeviceFormat: d3d=%x adapter=%d\n", lpd3d, Adapter); + return (*pCheckDeviceFormat)(lpd3d, Adapter, DeviceType, AdapterFormat, Usage, RType, CheckFormat); +} + +HRESULT WINAPI extCheckDeviceMultiSampleType(void *lpd3d, UINT Adapter, D3DDEVTYPE DeviceType, D3DFORMAT SurfaceFormat, BOOL Windowed, D3DMULTISAMPLE_TYPE MultiSampleType, DWORD *pQualityLevels) +{ + OutTrace("CheckDeviceMultiSampleType: d3d=%x adapter=%d windowed=%x\n", lpd3d, Adapter, Windowed); + return (*pCheckDeviceMultiSampleType)(lpd3d, Adapter, DeviceType, SurfaceFormat, Windowed, MultiSampleType, pQualityLevels); +} + +HRESULT WINAPI extCheckDepthStencilMatch(void *lpd3d, UINT Adapter, D3DDEVTYPE DeviceType, D3DFORMAT AdapterFormat, D3DFORMAT RenderTargetFormat, D3DFORMAT DepthStencilFormat) +{ + OutTrace("CheckDepthStencilMatch: d3d=%x adapter=%d\n", lpd3d, Adapter); + return (*pCheckDepthStencilMatch)(lpd3d, Adapter, DeviceType, AdapterFormat, RenderTargetFormat, DepthStencilFormat); +} + +HRESULT WINAPI extCheckDeviceFormatConversion(void *lpd3d, UINT Adapter, D3DDEVTYPE DeviceType, D3DFORMAT SourceFormat, D3DFORMAT TargetFormat) +{ + OutTrace("CheckDeviceFormatConversion: d3d=%x adapter=%d\n", lpd3d, Adapter); + return (*pCheckDeviceFormatConversion)(lpd3d, Adapter, DeviceType, SourceFormat, TargetFormat); +} + +HRESULT WINAPI extD3DGetDeviceCaps(void *lpd3d, UINT Adapter, D3DDEVTYPE DeviceType, D3DCAPS9* pCaps) +{ + OutTrace("GetDeviceCaps: d3d=%x adapter=%d\n", lpd3d, Adapter); + return (*pD3DGetDeviceCaps)(lpd3d, Adapter, DeviceType, pCaps); +} + +HMONITOR WINAPI extGetAdapterMonitor(void *lpd3d, UINT Adapter) +{ + OutTrace("GetAdapterMonitor: d3d=%x adapter=%d\n", lpd3d, Adapter); + return (*pGetAdapterMonitor)(lpd3d, Adapter); +} + +HRESULT WINAPI extTestCooperativeLevel(void *lpd3dd) +{ + HRESULT res; + res = (*pTestCooperativeLevel)(lpd3dd); + OutTrace("TestCooperativeLevel: d3dd=%x res=%x\n", lpd3dd, res); + return res; +} + +HRESULT WINAPI extGetSwapChain(void *lpd3dd, UINT iSwapChain, IDirect3DSwapChain9** pSwapChain) +{ + HRESULT res; + OutTrace("GetSwapChain: d3dd=%x SwapChain=%d\n", lpd3dd, iSwapChain); + res = (*pGetSwapChain)(lpd3dd, iSwapChain, pSwapChain); + return res; +} + +UINT WINAPI extGetNumberOfSwapChains(void *lpd3dd) +{ + UINT res; + res = (*pGetNumberOfSwapChains)(lpd3dd); + OutTrace("GetNumberOfSwapChains: d3dd=%x res=%d\n", lpd3dd, res); + return res; +} + +HRESULT WINAPI extBeginStateBlock8(void *lpd3dd) +{ + HRESULT res; + OutTrace("BeginStateBlock(8): d3dd=%x\n", lpd3dd); + res = (*pBeginStateBlock8)(lpd3dd); + HookD3DDevice8(&lpd3dd); + return res; +} + +HRESULT WINAPI extBeginStateBlock9(void *lpd3dd) +{ + // v2.02.78: D3DDevice9::BeginStateBlock refreshes the COM D3DDevice9 method pointers, so that + // you need to hook the device object again. This operation fixes the switch to fullscreen mode + // in "Freedom Force vs. the Third Reich". + HRESULT res; + OutTrace("BeginStateBlock(9): d3dd=%x\n", lpd3dd); + res = (*pBeginStateBlock9)(lpd3dd); + HookD3DDevice9(&lpd3dd); + return res; +} + +HRESULT WINAPI extEndStateBlock8(void *lpd3dd, DWORD *pToken) +{ + HRESULT res; + OutTrace("EndStateBlock(8): d3dd=%x\n", lpd3dd); + res = (*pEndStateBlock8)(lpd3dd, pToken); + return res; +} + +HRESULT WINAPI extEndStateBlock9(void *lpd3dd, IDirect3DStateBlock9** ppSB) +{ + HRESULT res; + OutTrace("EndStateBlock(9): d3dd=%x\n", lpd3dd); + res = (*pEndStateBlock9)(lpd3dd, ppSB); + return res; +} \ No newline at end of file diff --git a/dll/ole32.cpp b/dll/ole32.cpp index 624795a..484e3b5 100644 --- a/dll/ole32.cpp +++ b/dll/ole32.cpp @@ -8,9 +8,9 @@ extern void HookModule(HMODULE, int); static HookEntry_Type Hooks[]={ - {HOOK_IAT_CANDIDATE, "CoCreateInstance", NULL, (FARPROC *)&pCoCreateInstance, (FARPROC)extCoCreateInstance}, - {HOOK_IAT_CANDIDATE, "CoCreateInstanceEx", NULL, (FARPROC *)&pCoCreateInstanceEx, (FARPROC)extCoCreateInstanceEx}, - {HOOK_IAT_CANDIDATE, "CoInitialize", NULL, (FARPROC *)&pCoInitialize, (FARPROC)extCoInitialize}, + {HOOK_HOT_CANDIDATE, "CoCreateInstance", NULL, (FARPROC *)&pCoCreateInstance, (FARPROC)extCoCreateInstance}, + {HOOK_HOT_CANDIDATE, "CoCreateInstanceEx", NULL, (FARPROC *)&pCoCreateInstanceEx, (FARPROC)extCoCreateInstanceEx}, + {HOOK_HOT_CANDIDATE, "CoInitialize", NULL, (FARPROC *)&pCoInitialize, (FARPROC)extCoInitialize}, {HOOK_IAT_CANDIDATE, 0, NULL, 0, 0} // terminator }; diff --git a/dll/user32.cpp b/dll/user32.cpp index 1feaf7c..1fcf12f 100644 --- a/dll/user32.cpp +++ b/dll/user32.cpp @@ -125,10 +125,10 @@ static HookEntry_Type MouseHooks[]={ }; static HookEntry_Type WinHooks[]={ - {HOOK_IAT_CANDIDATE, "ShowWindow", (FARPROC)ShowWindow, (FARPROC *)&pShowWindow, (FARPROC)extShowWindow}, - {HOOK_IAT_CANDIDATE, "SetWindowPos", (FARPROC)SetWindowPos, (FARPROC *)&pSetWindowPos, (FARPROC)extSetWindowPos}, - {HOOK_IAT_CANDIDATE, "DeferWindowPos", (FARPROC)DeferWindowPos, (FARPROC *)&pGDIDeferWindowPos, (FARPROC)extDeferWindowPos}, - {HOOK_IAT_CANDIDATE, "CallWindowProcA", (FARPROC)CallWindowProcA, (FARPROC *)&pCallWindowProc, (FARPROC)extCallWindowProc}, + {HOOK_HOT_CANDIDATE, "ShowWindow", (FARPROC)ShowWindow, (FARPROC *)&pShowWindow, (FARPROC)extShowWindow}, + {HOOK_HOT_CANDIDATE, "SetWindowPos", (FARPROC)SetWindowPos, (FARPROC *)&pSetWindowPos, (FARPROC)extSetWindowPos}, + {HOOK_HOT_CANDIDATE, "DeferWindowPos", (FARPROC)DeferWindowPos, (FARPROC *)&pGDIDeferWindowPos, (FARPROC)extDeferWindowPos}, + {HOOK_HOT_CANDIDATE, "CallWindowProcA", (FARPROC)CallWindowProcA, (FARPROC *)&pCallWindowProc, (FARPROC)extCallWindowProc}, {HOOK_IAT_CANDIDATE, 0, NULL, 0, 0} // terminator }; @@ -277,7 +277,7 @@ LONG WINAPI MyChangeDisplaySettings(char *fname, BOOL WideChar, void *lpDevMode, dxw.SetFullScreen(TRUE); } } - + if ((dwflags==0 || dwflags==CDS_FULLSCREEN) && lpDevMode){ if (dxw.dwFlags1 & EMULATESURFACE || !(dmFields & DM_BITSPERPEL)){ OutTraceDW("%s: BYPASS res=DISP_CHANGE_SUCCESSFUL\n", fname); @@ -286,7 +286,7 @@ LONG WINAPI MyChangeDisplaySettings(char *fname, BOOL WideChar, void *lpDevMode, else{ DEVMODEA NewMode; if(dwflags==CDS_FULLSCREEN) dwflags=0; // no FULLSCREEN - EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &NewMode); + (*pEnumDisplaySettings)(NULL, ENUM_CURRENT_SETTINGS, &NewMode); OutTraceDW("ChangeDisplaySettings: CURRENT wxh=(%dx%d) BitsPerPel=%d -> %d\n", NewMode.dmPelsWidth, NewMode.dmPelsHeight, NewMode.dmBitsPerPel, dmBitsPerPel); NewMode.dmFields = DM_BITSPERPEL | DM_PELSWIDTH | DM_PELSHEIGHT; @@ -298,7 +298,7 @@ LONG WINAPI MyChangeDisplaySettings(char *fname, BOOL WideChar, void *lpDevMode, } else{ if(WideChar) - return (*pChangeDisplaySettingsW)((LPDEVMODEW)lpDevMode, dwflags); + return (*pChangeDisplaySettingsExW)(NULL, (LPDEVMODEW)lpDevMode, NULL, dwflags, NULL); else return (*pChangeDisplaySettingsExA)(NULL, (LPDEVMODEA)lpDevMode, NULL, dwflags, NULL); } @@ -539,7 +539,7 @@ LONG WINAPI extGetWindowLong(HWND hwnd, int nIndex, GetWindowLong_Type pGetWindo OutTraceDW("GetWindowLong: hwnd=%x, Index=%x(%s) res=%x\n", hwnd, nIndex, ExplainSetWindowIndex(nIndex), res); - if(nIndex==GWL_WNDPROC){ + if((nIndex==GWL_WNDPROC)||(nIndex==DWL_DLGPROC)){ WNDPROC wp; wp=WhndGetWindowProc(hwnd); OutTraceDW("GetWindowLong: remapping WindowProc res=%x -> %x\n", res, (LONG)wp); @@ -606,7 +606,7 @@ LONG WINAPI extSetWindowLong(HWND hwnd, int nIndex, LONG dwNewLong, SetWindowLon } } - if ((nIndex==GWL_WNDPROC) && dxw.IsFullScreen()){ // v2.02.51 - see A10 Cuba.... + if (((nIndex==GWL_WNDPROC)||(nIndex==DWL_DLGPROC)) && dxw.IsFullScreen()){ // v2.02.51 - see A10 Cuba.... //if (nIndex==GWL_WNDPROC){ WNDPROC lres; WNDPROC OldProc; @@ -617,7 +617,7 @@ LONG WINAPI extSetWindowLong(HWND hwnd, int nIndex, LONG dwNewLong, SetWindowLon } // end of GPL fix - OldProc = (WNDPROC)(*pGetWindowLongA)(hwnd, GWL_WNDPROC); + OldProc = (WNDPROC)(*pGetWindowLongA)(hwnd, nIndex); // v2.02.70 fix if((OldProc==extWindowProc) || (OldProc==extChildWindowProc)|| @@ -626,7 +626,7 @@ LONG WINAPI extSetWindowLong(HWND hwnd, int nIndex, LONG dwNewLong, SetWindowLon WhndStackPush(hwnd, (WNDPROC)dwNewLong); res=(LONG)OldProc; SetLastError(0); - lres=(WNDPROC)(*pSetWindowLongA)(hwnd, GWL_WNDPROC, (LONG)extWindowProc); + lres=(WNDPROC)(*pSetWindowLongA)(hwnd, nIndex, (LONG)extWindowProc); if(!lres && GetLastError())OutTraceE("SetWindowLong: ERROR err=%d at %d\n", GetLastError(), __LINE__); } else { @@ -1165,6 +1165,24 @@ static HWND WINAPI extCreateWindowCommon( if(!res) OutTraceE("%s: SetWindowLong ERROR %x\n", ApiName, GetLastError()); WhndStackPush(hwnd, pWindowProc); } + if ((dwStyle & WS_DLGFRAME) && (dxw.dwFlags1 & HOOKCHILDWIN)){ + // child window inherit the father's windproc, so if it's redirected to + // a hooker (either extWindowProc or extChildWindowProc) you have to retrieve + // the correct value (WhndGetWindowProc) before saving it (WhndStackPush). + long res; + pWindowProc = (WNDPROC)(*pGetWindowLongA)(hwnd, DWL_DLGPROC); + if((pWindowProc == extWindowProc) || + (pWindowProc == extChildWindowProc) || + (pWindowProc == extDialogWindowProc)){ // avoid recursions + HWND Father; + Father=GetParent(hwnd); + pWindowProc=WhndGetWindowProc(Father); + } + OutTraceDW("Hooking CHILD hwnd=%x father WindowProc %x->%x\n", hwnd, pWindowProc, extChildWindowProc); + res=(*pSetWindowLongA)(hwnd, DWL_DLGPROC, (LONG)extDialogWindowProc); + if(!res) OutTraceE("%s: SetWindowLong ERROR %x\n", ApiName, GetLastError()); + WhndStackPush(hwnd, pWindowProc); + } OutTraceDW("%s: ret=%x\n", ApiName, hwnd); return hwnd; } @@ -1333,6 +1351,24 @@ static HWND WINAPI extCreateWindowCommon( if(!res) OutTraceE("%s: SetWindowLong ERROR %x\n", ApiName, GetLastError()); WhndStackPush(hwnd, pWindowProc); } + if ((dwStyle & WS_DLGFRAME) && (dxw.dwFlags1 & HOOKCHILDWIN)){ + // child window inherit the father's windproc, so if it's redirected to + // a hooker (either extWindowProc or extChildWindowProc) you have to retrieve + // the correct value (WhndGetWindowProc) before saving it (WhndStackPush). + long res; + pWindowProc = (WNDPROC)(*pGetWindowLongA)(hwnd, DWL_DLGPROC); + if((pWindowProc == extWindowProc) || + (pWindowProc == extChildWindowProc) || + (pWindowProc == extDialogWindowProc)){ // avoid recursions + HWND Father; + Father=GetParent(hwnd); + pWindowProc=WhndGetWindowProc(Father); + } + OutTraceDW("Hooking CHILD hwnd=%x father WindowProc %x->%x\n", hwnd, pWindowProc, extChildWindowProc); + res=(*pSetWindowLongA)(hwnd, DWL_DLGPROC, (LONG)extDialogWindowProc); + if(!res) OutTraceE("%s: SetWindowLong ERROR %x\n", ApiName, GetLastError()); + WhndStackPush(hwnd, pWindowProc); + } OutTraceDW("%s: ret=%x\n", ApiName, hwnd); return hwnd; @@ -1649,7 +1685,7 @@ LONG WINAPI extEnumDisplaySettings(LPCTSTR lpszDeviceName, DWORD iModeNum, DEVMO LONG WINAPI extChangeDisplaySettingsA(DEVMODEA *lpDevMode, DWORD dwflags) { if(IsTraceDDRAW){ - OutTrace("ChangeDisplaySettingsA: lpDevMode=%x flags=%x", lpDevMode, dwflags); + OutTrace("ChangeDisplaySettingsA: lpDevMode=%x flags=%x(%s)", lpDevMode, dwflags, ExplainChangeDisplaySettingsFlags(dwflags)); if (lpDevMode) OutTrace(" DeviceName=%s fields=%x(%s) size=(%d x %d) bpp=%d", lpDevMode->dmDeviceName, lpDevMode->dmFields, ExplainDevModeFields(lpDevMode->dmFields), lpDevMode->dmPelsWidth, lpDevMode->dmPelsHeight, lpDevMode->dmBitsPerPel); @@ -1665,7 +1701,7 @@ LONG WINAPI extChangeDisplaySettingsA(DEVMODEA *lpDevMode, DWORD dwflags) LONG WINAPI extChangeDisplaySettingsW(DEVMODEW *lpDevMode, DWORD dwflags) { if(IsTraceDDRAW){ - OutTrace("ChangeDisplaySettingsW: lpDevMode=%x flags=%x", lpDevMode, dwflags); + OutTrace("ChangeDisplaySettingsW: lpDevMode=%x flags=%x(%s)", lpDevMode, dwflags, ExplainChangeDisplaySettingsFlags(dwflags)); if (lpDevMode) OutTrace(" DeviceName=%ls fields=%x(%s) size=(%d x %d) bpp=%d", lpDevMode->dmDeviceName, lpDevMode->dmFields, ExplainDevModeFields(lpDevMode->dmFields), lpDevMode->dmPelsWidth, lpDevMode->dmPelsHeight, lpDevMode->dmBitsPerPel); @@ -1681,7 +1717,7 @@ LONG WINAPI extChangeDisplaySettingsW(DEVMODEW *lpDevMode, DWORD dwflags) LONG WINAPI extChangeDisplaySettingsExA(LPCTSTR lpszDeviceName, DEVMODEA *lpDevMode, HWND hwnd, DWORD dwflags, LPVOID lParam) { if(IsTraceDDRAW){ - OutTrace("ChangeDisplaySettingsExA: DeviceName=%s lpDevMode=%x flags=%x", lpszDeviceName, lpDevMode, dwflags); + OutTrace("ChangeDisplaySettingsExA: DeviceName=%s lpDevMode=%x flags=%x(%s)", lpszDeviceName, lpDevMode, dwflags, ExplainChangeDisplaySettingsFlags(dwflags)); if (lpDevMode) OutTrace(" DeviceName=%s fields=%x(%s) size=(%d x %d) bpp=%d", lpDevMode->dmDeviceName, lpDevMode->dmFields, ExplainDevModeFields(lpDevMode->dmFields), lpDevMode->dmPelsWidth, lpDevMode->dmPelsHeight, lpDevMode->dmBitsPerPel); @@ -1697,7 +1733,7 @@ LONG WINAPI extChangeDisplaySettingsExA(LPCTSTR lpszDeviceName, DEVMODEA *lpDevM LONG WINAPI extChangeDisplaySettingsExW(LPCTSTR lpszDeviceName, DEVMODEW *lpDevMode, HWND hwnd, DWORD dwflags, LPVOID lParam) { if(IsTraceDDRAW){ - OutTrace("ChangeDisplaySettingsExW: DeviceName=%ls lpDevMode=%x flags=%x", lpszDeviceName, lpDevMode, dwflags); + OutTrace("ChangeDisplaySettingsExW: DeviceName=%ls lpDevMode=%x flags=%x(%s)", lpszDeviceName, lpDevMode, dwflags, ExplainChangeDisplaySettingsFlags(dwflags)); if (lpDevMode) OutTrace(" DeviceName=%ls fields=%x(%s) size=(%d x %d) bpp=%d", lpDevMode->dmDeviceName, lpDevMode->dmFields, ExplainDevModeFields(lpDevMode->dmFields), lpDevMode->dmPelsWidth, lpDevMode->dmPelsHeight, lpDevMode->dmBitsPerPel); diff --git a/host/dxwndhost.vs2008.suo b/host/dxwndhost.vs2008.suo index c2feeaac27249ffcf2270e293eafd24f4f84e353..2bf8032e36bd912da198c53fb82a6e2b999a6cb6 100644 GIT binary patch delta 10629 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 delta 10700 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