├── .gitignore ├── LICENSE ├── README.md ├── addon ├── Source.def ├── build_version.h ├── com_wrapper.cpp ├── com_wrapper.h ├── com_wrapper_dev11_methods.inc ├── com_wrapper_dev_methods.inc ├── com_wrapper_dxgi_methods.inc ├── com_wrapper_method_dcl.h ├── com_wrapper_method_impl.cpp ├── com_wrapper_obj_methods.inc ├── com_wrapper_swc_methods.inc ├── d3d9_wrapper.cpp ├── d3d9_wrapper.h ├── d3d9_wrapper.vcxproj ├── d3d9_wrapper.vcxproj.filters ├── dllmain.cpp ├── stdafx.cpp ├── stdafx.h └── targetver.h ├── d3d9_wrapper.sln └── include ├── gw2al_api.h └── gw2al_d3d9_wrapper.h /.gitignore: -------------------------------------------------------------------------------- 1 | # Prerequisites 2 | *.d 3 | 4 | # Compiled Object files 5 | *.slo 6 | *.lo 7 | *.o 8 | *.obj 9 | *.exp 10 | 11 | # Precompiled Headers 12 | *.gch 13 | *.pch 14 | 15 | # Compiled Dynamic libraries 16 | *.so 17 | *.dylib 18 | *.dll 19 | 20 | # Fortran module files 21 | *.mod 22 | *.smod 23 | 24 | # Compiled Static libraries 25 | *.lai 26 | *.la 27 | *.a 28 | *.lib 29 | 30 | # Executables 31 | *.exe 32 | *.out 33 | *.app 34 | 35 | ## Ignore Visual Studio temporary files, build results, and 36 | ## files generated by popular Visual Studio add-ons. 37 | ## 38 | ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore 39 | 40 | # User-specific files 41 | *.rsuser 42 | *.suo 43 | *.user 44 | *.userosscache 45 | *.sln.docstates 46 | 47 | # User-specific files (MonoDevelop/Xamarin Studio) 48 | *.userprefs 49 | 50 | # Build results 51 | [Dd]ebug/ 52 | [Dd]ebugPublic/ 53 | [Rr]elease/ 54 | [Rr]eleases/ 55 | x64/ 56 | x86/ 57 | [Aa][Rr][Mm]/ 58 | [Aa][Rr][Mm]64/ 59 | bld/ 60 | [Bb]in/ 61 | [Oo]bj/ 62 | [Ll]og/ 63 | 64 | # allow our bin directory 65 | !bin/ 66 | 67 | # Visual Studio 2015/2017 cache/options directory 68 | .vs/ 69 | # Uncomment if you have tasks that create the project's static files in wwwroot 70 | #wwwroot/ 71 | 72 | # Visual Studio 2017 auto generated files 73 | Generated\ Files/ 74 | 75 | # MSTest test Results 76 | [Tt]est[Rr]esult*/ 77 | [Bb]uild[Ll]og.* 78 | 79 | # NUNIT 80 | *.VisualState.xml 81 | TestResult.xml 82 | 83 | # Build Results of an ATL Project 84 | [Dd]ebugPS/ 85 | [Rr]eleasePS/ 86 | dlldata.c 87 | 88 | # Benchmark Results 89 | BenchmarkDotNet.Artifacts/ 90 | 91 | # .NET Core 92 | project.lock.json 93 | project.fragment.lock.json 94 | artifacts/ 95 | 96 | # StyleCop 97 | StyleCopReport.xml 98 | 99 | # Files built by Visual Studio 100 | *_i.c 101 | *_p.c 102 | *_h.h 103 | *.ilk 104 | *.meta 105 | *.obj 106 | *.iobj 107 | *.pch 108 | *.pdb 109 | *.ipdb 110 | *.pgc 111 | *.pgd 112 | *.rsp 113 | *.sbr 114 | *.tlb 115 | *.tli 116 | *.tlh 117 | *.tmp 118 | *.tmp_proj 119 | *_wpftmp.csproj 120 | *.log 121 | *.vspscc 122 | *.vssscc 123 | .builds 124 | *.pidb 125 | *.svclog 126 | *.scc 127 | 128 | # Chutzpah Test files 129 | _Chutzpah* 130 | 131 | # Visual C++ cache files 132 | ipch/ 133 | *.aps 134 | *.ncb 135 | *.opendb 136 | *.opensdf 137 | *.sdf 138 | *.cachefile 139 | *.VC.db 140 | *.VC.VC.opendb 141 | 142 | # Visual Studio profiler 143 | *.psess 144 | *.vsp 145 | *.vspx 146 | *.sap 147 | 148 | # Visual Studio Trace Files 149 | *.e2e 150 | 151 | # TFS 2012 Local Workspace 152 | $tf/ 153 | 154 | # Guidance Automation Toolkit 155 | *.gpState 156 | 157 | # ReSharper is a .NET coding add-in 158 | _ReSharper*/ 159 | *.[Rr]e[Ss]harper 160 | *.DotSettings.user 161 | 162 | # JustCode is a .NET coding add-in 163 | .JustCode 164 | 165 | # TeamCity is a build add-in 166 | _TeamCity* 167 | 168 | # DotCover is a Code Coverage Tool 169 | *.dotCover 170 | 171 | # AxoCover is a Code Coverage Tool 172 | .axoCover/* 173 | !.axoCover/settings.json 174 | 175 | # Visual Studio code coverage results 176 | *.coverage 177 | *.coveragexml 178 | 179 | # NCrunch 180 | _NCrunch_* 181 | .*crunch*.local.xml 182 | nCrunchTemp_* 183 | 184 | # MightyMoose 185 | *.mm.* 186 | AutoTest.Net/ 187 | 188 | # Web workbench (sass) 189 | .sass-cache/ 190 | 191 | # Installshield output folder 192 | [Ee]xpress/ 193 | 194 | # DocProject is a documentation generator add-in 195 | DocProject/buildhelp/ 196 | DocProject/Help/*.HxT 197 | DocProject/Help/*.HxC 198 | DocProject/Help/*.hhc 199 | DocProject/Help/*.hhk 200 | DocProject/Help/*.hhp 201 | DocProject/Help/Html2 202 | DocProject/Help/html 203 | 204 | # Click-Once directory 205 | publish/ 206 | 207 | # Publish Web Output 208 | *.[Pp]ublish.xml 209 | *.azurePubxml 210 | # Note: Comment the next line if you want to checkin your web deploy settings, 211 | # but database connection strings (with potential passwords) will be unencrypted 212 | *.pubxml 213 | *.publishproj 214 | 215 | # Microsoft Azure Web App publish settings. Comment the next line if you want to 216 | # checkin your Azure Web App publish settings, but sensitive information contained 217 | # in these scripts will be unencrypted 218 | PublishScripts/ 219 | 220 | # NuGet Packages 221 | *.nupkg 222 | # The packages folder can be ignored because of Package Restore 223 | **/[Pp]ackages/* 224 | # except build/, which is used as an MSBuild target. 225 | !**/[Pp]ackages/build/ 226 | # Uncomment if necessary however generally it will be regenerated when needed 227 | #!**/[Pp]ackages/repositories.config 228 | # NuGet v3's project.json files produces more ignorable files 229 | *.nuget.props 230 | *.nuget.targets 231 | 232 | # Microsoft Azure Build Output 233 | csx/ 234 | *.build.csdef 235 | 236 | # Microsoft Azure Emulator 237 | ecf/ 238 | rcf/ 239 | 240 | # Windows Store app package directories and files 241 | AppPackages/ 242 | BundleArtifacts/ 243 | Package.StoreAssociation.xml 244 | _pkginfo.txt 245 | *.appx 246 | 247 | # Visual Studio cache files 248 | # files ending in .cache can be ignored 249 | *.[Cc]ache 250 | # but keep track of directories ending in .cache 251 | !?*.[Cc]ache/ 252 | 253 | # Others 254 | ClientBin/ 255 | ~$* 256 | *~ 257 | *.dbmdl 258 | *.dbproj.schemaview 259 | *.jfm 260 | *.pfx 261 | *.publishsettings 262 | orleans.codegen.cs 263 | 264 | # Including strong name files can present a security risk 265 | # (https://github.com/github/gitignore/pull/2483#issue-259490424) 266 | #*.snk 267 | 268 | # Since there are multiple workflows, uncomment next line to ignore bower_components 269 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) 270 | #bower_components/ 271 | # ASP.NET Core default setup: bower directory is configured as wwwroot/lib/ and bower restore is true 272 | **/wwwroot/lib/ 273 | 274 | # RIA/Silverlight projects 275 | Generated_Code/ 276 | 277 | # Backup & report files from converting an old project file 278 | # to a newer Visual Studio version. Backup files are not needed, 279 | # because we have git ;-) 280 | _UpgradeReport_Files/ 281 | Backup*/ 282 | UpgradeLog*.XML 283 | UpgradeLog*.htm 284 | ServiceFabricBackup/ 285 | *.rptproj.bak 286 | 287 | # SQL Server files 288 | *.mdf 289 | *.ldf 290 | *.ndf 291 | 292 | # Business Intelligence projects 293 | *.rdl.data 294 | *.bim.layout 295 | *.bim_*.settings 296 | *.rptproj.rsuser 297 | 298 | # Microsoft Fakes 299 | FakesAssemblies/ 300 | 301 | # GhostDoc plugin setting file 302 | *.GhostDoc.xml 303 | 304 | # Node.js Tools for Visual Studio 305 | .ntvs_analysis.dat 306 | node_modules/ 307 | 308 | # Visual Studio 6 build log 309 | *.plg 310 | 311 | # Visual Studio 6 workspace options file 312 | *.opt 313 | 314 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.) 315 | *.vbw 316 | 317 | # Visual Studio LightSwitch build output 318 | **/*.HTMLClient/GeneratedArtifacts 319 | **/*.DesktopClient/GeneratedArtifacts 320 | **/*.DesktopClient/ModelManifest.xml 321 | **/*.Server/GeneratedArtifacts 322 | **/*.Server/ModelManifest.xml 323 | _Pvt_Extensions 324 | 325 | # Paket dependency manager 326 | .paket/paket.exe 327 | paket-files/ 328 | 329 | # FAKE - F# Make 330 | .fake/ 331 | 332 | # JetBrains Rider 333 | .idea/ 334 | *.sln.iml 335 | 336 | # CodeRush personal settings 337 | .cr/personal 338 | 339 | # Python Tools for Visual Studio (PTVS) 340 | __pycache__/ 341 | *.pyc 342 | 343 | # Cake - Uncomment if you are using it 344 | # tools/** 345 | # !tools/packages.config 346 | 347 | # Tabs Studio 348 | *.tss 349 | 350 | # Telerik's JustMock configuration file 351 | *.jmconfig 352 | 353 | # BizTalk build output 354 | *.btp.cs 355 | *.btm.cs 356 | *.odx.cs 357 | *.xsd.cs 358 | 359 | # OpenCover UI analysis results 360 | OpenCover/ 361 | 362 | # Azure Stream Analytics local run output 363 | ASALocalRun/ 364 | 365 | # MSBuild Binary and Structured Log 366 | *.binlog 367 | 368 | # NVidia Nsight GPU debugger configuration file 369 | *.nvuser 370 | 371 | # MFractors (Xamarin productivity tool) working folder 372 | .mfractor/ 373 | 374 | # Local History for Visual Studio 375 | .localhistory/ 376 | 377 | # BeatPulse healthcheck temp database 378 | healthchecksdb 379 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 gw2-addon-loader 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # d3d9_wrapper 2 | 3 | [![Build status](https://ci.appveyor.com/api/projects/status/4dxo5hw1sq6p67lx?svg=true)](https://ci.appveyor.com/project/megai2/d3d9-wrapper) 4 | 5 | Wrapper for d3d9 API that includes hooking and custom d3d9 loading 6 | 7 | ## How API functions are hooked? 8 | 9 | API functions is wrapped around with event triggers this way: 10 | 11 | ``` 12 | wrapped_API_function(params) { 13 | trigger_event(API_function_pre, params); 14 | ret = API_function(params) 15 | trigger_event(API_function_post, params, ret); 16 | } 17 | ``` 18 | 19 | Currently only IDirect3D9 and IDirect3DDevice9 calls are wrapped. 20 | 21 | ## How to work with this? 22 | 23 | Here is quick sample on how to draw something before Present call 24 | 25 | ``` 26 | #include "gw2al_d3d9_wrapper.h" 27 | #include "gw2al_api.h" 28 | 29 | gw2al_api_ret gw2addon_load(gw2al_core_vtable* core_api) 30 | { 31 | //get loader api 32 | gw2al_core_vtable* gAPI = core_api; 33 | 34 | //get d3d9 wrapper enable_event function 35 | D3D9_wrapper d3d9_wrap; 36 | d3d9_wrap.enable_event = (pD3D9_wrapper_enable_event)gAPI->query_function(gAPI->hash_name((wchar_t*)D3D9_WRAPPER_ENABLE_EVENT_FNAME)); 37 | 38 | //enable IDirect3DDevice9::Present pre API-call event 39 | d3d9_wrap.enable_event(METH_DEV_Present, WRAP_CB_PRE); 40 | 41 | //watch for this event with OnDevPrePresent callback 42 | D3D9_WRAPPER_WATCH_EVENT(L"change_me", L"D3D9_PRE_DEV_Present", DrawSomethingBeforePresent, 0); 43 | } 44 | 45 | void DrawSomethingBeforePresent(D3D9_wrapper_event_data* evd) 46 | { 47 | //evd contains pointers to API return data and original call stack pointer 48 | //TODO: draw something 49 | } 50 | 51 | ``` 52 | 53 | Look include/gw2al_d3d9_wrapper.h for details. 54 | 55 | # Installation 56 | 57 | 1. Download and extract the archive `d3d9_wrapper_*.zip` found in the [latest release](https://github.com/gw2-addon-loader/d3d9_wrapper/releases/latest). 58 | 2. Ensure there is an `addons` folder inside your GW2 installation directory. If there is not, create one yourself. With the default game install path, the result would be `C:\Program Files\Guild Wars 2\addons`. 59 | 3. Place the extracted folder `d3d9_wrapper` inside the `addons` folder. 60 | -------------------------------------------------------------------------------- /addon/Source.def: -------------------------------------------------------------------------------- 1 | LIBRARY gw2addon_d3d9_wrapper.dll 2 | EXPORTS 3 | gw2addon_get_description 4 | gw2addon_load 5 | gw2addon_unload -------------------------------------------------------------------------------- /addon/build_version.h: -------------------------------------------------------------------------------- 1 | #define BUILD_VERSION_NAME "version: unknown" 2 | #define BUILD_VERSION_REV 0 3 | -------------------------------------------------------------------------------- /addon/com_wrapper.cpp: -------------------------------------------------------------------------------- 1 | #include "stdafx.h" 2 | 3 | #undef WRAPPED_METH_DECL_ 4 | #define WRAPPED_METH_DECL_(a,b) WRAPPED_METH_PREFIX(b) 5 | 6 | #define CUSTOM_ENDLINE_DEF 7 | 8 | static void* wrap_pass_vtable[METHOD_WRAP_COUNT+1] = { 9 | 10 | #define WRAPPED_METH_PREFIX(b) wrap_pass_dev_##b, __SPECIAL_IGNORANCE 11 | #include "com_wrapper_dev_methods.inc" 12 | #undef WRAPPED_METH_PREFIX 13 | 14 | #define WRAPPED_METH_PREFIX(b) wrap_pass_obj_##b, __SPECIAL_IGNORANCE 15 | #include "com_wrapper_obj_methods.inc" 16 | #undef WRAPPED_METH_PREFIX 17 | 18 | #define WRAPPED_METH_PREFIX(b) wrap_pass_dev11_##b, __SPECIAL_IGNORANCE 19 | #include "com_wrapper_dev11_methods.inc" 20 | #undef WRAPPED_METH_PREFIX 21 | 22 | #define WRAPPED_METH_PREFIX(b) wrap_pass_swc_##b, __SPECIAL_IGNORANCE 23 | #include "com_wrapper_swc_methods.inc" 24 | #undef WRAPPED_METH_PREFIX 25 | 26 | #define WRAPPED_METH_PREFIX(b) wrap_pass_dxgi_##b, __SPECIAL_IGNORANCE 27 | #include "com_wrapper_dxgi_methods.inc" 28 | #undef WRAPPED_METH_PREFIX 29 | 30 | 0 31 | }; 32 | 33 | static void* wrap_pre_vtable[METHOD_WRAP_COUNT+1] = { 34 | 35 | #define WRAPPED_METH_PREFIX(b) wrap_pre_dev_##b, __SPECIAL_IGNORANCE 36 | #include "com_wrapper_dev_methods.inc" 37 | #undef WRAPPED_METH_PREFIX 38 | 39 | #define WRAPPED_METH_PREFIX(b) wrap_pre_obj_##b, __SPECIAL_IGNORANCE 40 | #include "com_wrapper_obj_methods.inc" 41 | #undef WRAPPED_METH_PREFIX 42 | 43 | #define WRAPPED_METH_PREFIX(b) wrap_pre_dev11_##b, __SPECIAL_IGNORANCE 44 | #include "com_wrapper_dev11_methods.inc" 45 | #undef WRAPPED_METH_PREFIX 46 | 47 | #define WRAPPED_METH_PREFIX(b) wrap_pre_swc_##b, __SPECIAL_IGNORANCE 48 | #include "com_wrapper_swc_methods.inc" 49 | #undef WRAPPED_METH_PREFIX 50 | 51 | #define WRAPPED_METH_PREFIX(b) wrap_pre_dxgi_##b, __SPECIAL_IGNORANCE 52 | #include "com_wrapper_dxgi_methods.inc" 53 | #undef WRAPPED_METH_PREFIX 54 | 55 | 0 56 | }; 57 | 58 | static void* wrap_post_vtable[METHOD_WRAP_COUNT+1] = { 59 | 60 | #define WRAPPED_METH_PREFIX(b) wrap_post_dev_##b, __SPECIAL_IGNORANCE 61 | #include "com_wrapper_dev_methods.inc" 62 | #undef WRAPPED_METH_PREFIX 63 | 64 | #define WRAPPED_METH_PREFIX(b) wrap_post_obj_##b, __SPECIAL_IGNORANCE 65 | #include "com_wrapper_obj_methods.inc" 66 | #undef WRAPPED_METH_PREFIX 67 | 68 | #define WRAPPED_METH_PREFIX(b) wrap_post_dev11_##b, __SPECIAL_IGNORANCE 69 | #include "com_wrapper_dev11_methods.inc" 70 | #undef WRAPPED_METH_PREFIX 71 | 72 | #define WRAPPED_METH_PREFIX(b) wrap_post_swc_##b, __SPECIAL_IGNORANCE 73 | #include "com_wrapper_swc_methods.inc" 74 | #undef WRAPPED_METH_PREFIX 75 | 76 | #define WRAPPED_METH_PREFIX(b) wrap_post_dxgi_##b, __SPECIAL_IGNORANCE 77 | #include "com_wrapper_dxgi_methods.inc" 78 | #undef WRAPPED_METH_PREFIX 79 | 80 | 0 81 | }; 82 | 83 | static void* wrap_prepost_vtable[METHOD_WRAP_COUNT+1] = { 84 | 85 | #define WRAPPED_METH_PREFIX(b) wrap_prepost_dev_##b, __SPECIAL_IGNORANCE 86 | #include "com_wrapper_dev_methods.inc" 87 | #undef WRAPPED_METH_PREFIX 88 | 89 | #define WRAPPED_METH_PREFIX(b) wrap_prepost_obj_##b, __SPECIAL_IGNORANCE 90 | #include "com_wrapper_obj_methods.inc" 91 | #undef WRAPPED_METH_PREFIX 92 | 93 | #define WRAPPED_METH_PREFIX(b) wrap_prepost_dev11_##b, __SPECIAL_IGNORANCE 94 | #include "com_wrapper_dev11_methods.inc" 95 | #undef WRAPPED_METH_PREFIX 96 | 97 | #define WRAPPED_METH_PREFIX(b) wrap_prepost_swc_##b, __SPECIAL_IGNORANCE 98 | #include "com_wrapper_swc_methods.inc" 99 | #undef WRAPPED_METH_PREFIX 100 | 101 | #define WRAPPED_METH_PREFIX(b) wrap_post_dxgi_##b, __SPECIAL_IGNORANCE 102 | #include "com_wrapper_dxgi_methods.inc" 103 | #undef WRAPPED_METH_PREFIX 104 | 105 | 0 106 | }; 107 | 108 | #undef CUSTOM_ENDLINE_DEF 109 | 110 | static void** wrap_vtable_arr[] = { 111 | wrap_pass_vtable, 112 | wrap_pre_vtable, 113 | wrap_post_vtable, 114 | wrap_prepost_vtable 115 | }; 116 | 117 | void* g_main_vtable[METHOD_WRAP_COUNT]; 118 | 119 | gw2al_event_id preCallEvents[METHOD_WRAP_COUNT]; 120 | gw2al_event_id postCallEvents[METHOD_WRAP_COUNT]; 121 | 122 | IDirect3DDevice9 * wrap_CreateDevice(IDirect3DDevice9 * origDev) 123 | { 124 | wrapped_com_obj* ret = (wrapped_com_obj*)malloc(sizeof(wrapped_com_obj)); 125 | 126 | ret->vtable = (com_vtable*)&g_main_vtable[METH_DEV_QueryInterface]; 127 | ret->orig_dev = origDev; 128 | 129 | return (IDirect3DDevice9*)ret; 130 | } 131 | 132 | IDirect3D9 * wrap_CreateObj(IDirect3D9 * origObj) 133 | { 134 | wrapped_com_obj* ret = (wrapped_com_obj*)malloc(sizeof(wrapped_com_obj)); 135 | 136 | ret->vtable = (com_vtable*)&g_main_vtable[METH_OBJ_QueryInterface]; 137 | ret->orig_obj = origObj; 138 | 139 | return (IDirect3D9*)ret; 140 | } 141 | 142 | ID3D11Device5* wrap_CreateDevice11(ID3D11Device5* origDev) 143 | { 144 | wrapped_com_obj * ret = (wrapped_com_obj*)malloc(sizeof(wrapped_com_obj)); 145 | 146 | ret->vtable = (com_vtable*)&g_main_vtable[METH_DEV11_QueryInterface]; 147 | ret->orig_dev11 = origDev; 148 | 149 | return (ID3D11Device5*)ret; 150 | } 151 | 152 | IDXGISwapChain4* wrap_CreateSwapchain(IDXGISwapChain4* origSwc) 153 | { 154 | wrapped_com_obj* ret = (wrapped_com_obj*)malloc(sizeof(wrapped_com_obj)); 155 | 156 | ret->vtable = (com_vtable*)&g_main_vtable[METH_SWC_QueryInterface]; 157 | ret->orig_swc = origSwc; 158 | 159 | return (IDXGISwapChain4*)ret; 160 | } 161 | 162 | void* wrap_CreateDXGI(void* origDXGI) 163 | { 164 | wrapped_com_obj* ret = (wrapped_com_obj*)malloc(sizeof(wrapped_com_obj)); 165 | 166 | ret->vtable = (com_vtable*)&g_main_vtable[METH_DXGI_QueryInterface]; 167 | ret->orig_dxgi = (IDXGIFactory5*)origDXGI; 168 | 169 | return (void*)ret; 170 | } 171 | 172 | void wrap_SwitchMethod(d3d9_vtable_method method, vtable_wrap_mode mode) 173 | { 174 | g_main_vtable[method] = wrap_vtable_arr[mode][method]; 175 | } 176 | 177 | void wrap_InvokeEvent(d3d9_vtable_method method, UINT isPre, wrapped_com_obj** stackPtr, void* ret) 178 | { 179 | //megai2: maybe passing api return in pre event is too much, but adding that later for some reason will be bad thing 180 | wrap_event_data eventData = { 181 | ret, 182 | stackPtr 183 | }; 184 | 185 | if (isPre) 186 | gAPI->trigger_event(preCallEvents[method], &eventData); 187 | else 188 | gAPI->trigger_event(postCallEvents[method], &eventData); 189 | } 190 | 191 | void wrap_InitEvents() 192 | { 193 | #undef WRAPPED_METH_DECL_ 194 | #define CUSTOM_ENDLINE_DEF 195 | #define WRAPPED_METH_DECL_(a,b) WRAPPED_METH_PREFIX(b) 196 | #define EVENT_NAME_STR_S(a) L#a 197 | #define EVENT_NAME_STR(a,b) EVENT_NAME_STR_S(D3D9_## b ## a) 198 | 199 | //megai2: event name is like D3D9_POST_DEV_Present 200 | 201 | #define WRAPPED_METH_PREFIX(b) \ 202 | preCallEvents[METH_DEV_##b] = gAPI->query_event(gAPI->hash_name((wchar_t*)EVENT_NAME_STR(DEV_##b, PRE_))); \ 203 | postCallEvents[METH_DEV_##b] = gAPI->query_event(gAPI->hash_name((wchar_t*)EVENT_NAME_STR(DEV_##b, POST_))); \ 204 | g_main_vtable[METH_DEV_##b] = wrap_pass_vtable[METH_DEV_##b]; \ 205 | __SPECIAL_IGNORANCE 206 | #include "com_wrapper_dev_methods.inc" 207 | #undef WRAPPED_METH_PREFIX 208 | 209 | #define WRAPPED_METH_PREFIX(b) \ 210 | preCallEvents[METH_OBJ_##b] = gAPI->query_event(gAPI->hash_name((wchar_t*)EVENT_NAME_STR(OBJ_##b, PRE_))); \ 211 | postCallEvents[METH_OBJ_##b] = gAPI->query_event(gAPI->hash_name((wchar_t*)EVENT_NAME_STR(OBJ_##b, POST_))); \ 212 | g_main_vtable[METH_OBJ_##b] = wrap_pass_vtable[METH_OBJ_##b]; \ 213 | __SPECIAL_IGNORANCE 214 | #include "com_wrapper_obj_methods.inc" 215 | #undef WRAPPED_METH_PREFIX 216 | 217 | #define WRAPPED_METH_PREFIX(b) \ 218 | preCallEvents[METH_DEV11_##b] = gAPI->query_event(gAPI->hash_name((wchar_t*)EVENT_NAME_STR(DEV11_##b, PRE_))); \ 219 | postCallEvents[METH_DEV11_##b] = gAPI->query_event(gAPI->hash_name((wchar_t*)EVENT_NAME_STR(DEV11_##b, POST_))); \ 220 | g_main_vtable[METH_DEV11_##b] = wrap_pass_vtable[METH_DEV11_##b]; \ 221 | __SPECIAL_IGNORANCE 222 | #include "com_wrapper_dev11_methods.inc" 223 | #undef WRAPPED_METH_PREFIX 224 | 225 | #define WRAPPED_METH_PREFIX(b) \ 226 | preCallEvents[METH_SWC_##b] = gAPI->query_event(gAPI->hash_name((wchar_t*)EVENT_NAME_STR(SWC_##b, PRE_))); \ 227 | postCallEvents[METH_SWC_##b] = gAPI->query_event(gAPI->hash_name((wchar_t*)EVENT_NAME_STR(SWC_##b, POST_))); \ 228 | g_main_vtable[METH_SWC_##b] = wrap_pass_vtable[METH_SWC_##b]; \ 229 | __SPECIAL_IGNORANCE 230 | #include "com_wrapper_swc_methods.inc" 231 | #undef WRAPPED_METH_PREFIX 232 | 233 | #define WRAPPED_METH_PREFIX(b) \ 234 | preCallEvents[METH_DXGI_##b] = gAPI->query_event(gAPI->hash_name((wchar_t*)EVENT_NAME_STR(DXGI_##b, PRE_))); \ 235 | postCallEvents[METH_DXGI_##b] = gAPI->query_event(gAPI->hash_name((wchar_t*)EVENT_NAME_STR(DXGI_##b, POST_))); \ 236 | g_main_vtable[METH_DXGI_##b] = wrap_pass_vtable[METH_DXGI_##b]; \ 237 | __SPECIAL_IGNORANCE 238 | #include "com_wrapper_dxgi_methods.inc" 239 | #undef WRAPPED_METH_PREFIX 240 | 241 | } 242 | -------------------------------------------------------------------------------- /addon/com_wrapper.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "stdafx.h" 4 | 5 | typedef struct com_vtable { 6 | void* methods[1024]; 7 | } com_vtable; 8 | 9 | #pragma pack(push, 1) 10 | typedef struct wrapped_com_obj { 11 | com_vtable* vtable; 12 | union { 13 | IDirect3D9* orig_obj; 14 | IDirect3DDevice9* orig_dev; 15 | ID3D11Device5* orig_dev11; 16 | IDXGISwapChain4* orig_swc; 17 | IDXGIFactory5* orig_dxgi; 18 | }; 19 | } wrapped_com_obj; 20 | #pragma pack(pop) 21 | 22 | #define WRAPPED_METH_DECL_(a,b) WRAPPED_METH_PREFIX(b) 23 | #define WRAPPED_METH_DECL(b) WRAPPED_METH_DECL_(HRESULT, b) 24 | 25 | #define WRAPPED_THIS wrapped_com_obj* _this 26 | #define WRAPPED_THIS_ wrapped_com_obj* _this, 27 | 28 | #define WRAP_CALLTHRU_V0 29 | #define WRAP_CALLTHRU_V1 30 | #define WRAP_CALLTHRU_V2 31 | #define WRAP_CALLTHRU_V3 32 | #define WRAP_CALLTHRU_V4 33 | #define WRAP_CALLTHRU_V5 34 | #define WRAP_CALLTHRU_V6 35 | #define WRAP_CALLTHRU_V7 36 | #define WRAP_CALLTHRU_V8 37 | #define WRAP_CALLTHRU_V9 38 | #define WRAP_CALLTHRU_V10 39 | #define WRAP_CALLTHRU_V11 40 | #define WRAP_CALLTHRU_V12 41 | 42 | #define WRAP_CALLTHRU_V0_ 43 | #define WRAP_CALLTHRU_V1_ 44 | #define WRAP_CALLTHRU_V2_ 45 | #define WRAP_CALLTHRU_V3_ 46 | #define WRAP_CALLTHRU_V4_ 47 | #define WRAP_CALLTHRU_V5_ 48 | #define WRAP_CALLTHRU_V6_ 49 | #define WRAP_CALLTHRU_V7_ 50 | #define WRAP_CALLTHRU_V8_ 51 | #define WRAP_CALLTHRU_V9_ 52 | #define WRAP_CALLTHRU_V10_ 53 | #define WRAP_CALLTHRU_V11_ 54 | #define WRAP_CALLTHRU_V12_ 55 | 56 | #define __SPECIAL_IGNORANCE(...) 57 | 58 | #define CUSTOM_ENDLINE_DEF 59 | 60 | typedef enum d3d9_vtable_method { 61 | 62 | #define WRAPPED_METH_PREFIX(b) METH_DEV_##b, __SPECIAL_IGNORANCE 63 | #include "com_wrapper_dev_methods.inc" 64 | #undef WRAPPED_METH_PREFIX 65 | 66 | #define WRAPPED_METH_PREFIX(b) METH_OBJ_##b, __SPECIAL_IGNORANCE 67 | #include "com_wrapper_obj_methods.inc" 68 | #undef WRAPPED_METH_PREFIX 69 | 70 | #define WRAPPED_METH_PREFIX(b) METH_DEV11_##b, __SPECIAL_IGNORANCE 71 | #include "com_wrapper_dev11_methods.inc" 72 | #undef WRAPPED_METH_PREFIX 73 | 74 | #define WRAPPED_METH_PREFIX(b) METH_SWC_##b, __SPECIAL_IGNORANCE 75 | #include "com_wrapper_swc_methods.inc" 76 | #undef WRAPPED_METH_PREFIX 77 | 78 | #define WRAPPED_METH_PREFIX(b) METH_DXGI_##b, __SPECIAL_IGNORANCE 79 | #include "com_wrapper_dxgi_methods.inc" 80 | #undef WRAPPED_METH_PREFIX 81 | 82 | METHOD_WRAP_COUNT 83 | } d3d9_vtable_method; 84 | 85 | #undef CUSTOM_ENDLINE_DEF 86 | #undef WRAPPED_METH_DECL_ 87 | #define WRAPPED_METH_DECL_(a,b) a WINAPI WRAPPED_METH_PREFIX(b) 88 | 89 | typedef enum vtable_wrap_mode { 90 | WRAP_PASSTHRU = 0, 91 | WRAP_CB_PRE = 1, 92 | WRAP_CB_POST = 2, 93 | WRAP_CB_PRE_POST = 3 94 | } vtable_wrap_mode; 95 | 96 | IDirect3DDevice9* wrap_CreateDevice(IDirect3DDevice9* origDev); 97 | IDirect3D9* wrap_CreateObj(IDirect3D9* origObj); 98 | ID3D11Device5* wrap_CreateDevice11(ID3D11Device5* origDev); 99 | IDXGISwapChain4* wrap_CreateSwapchain(IDXGISwapChain4* origSwc); 100 | void* wrap_CreateDXGI(void* origDXGI); 101 | 102 | typedef struct wrap_event_data { 103 | void* ret; 104 | wrapped_com_obj** stackPtr; 105 | } wrap_event_data; 106 | 107 | void wrap_SwitchMethod(d3d9_vtable_method method, vtable_wrap_mode mode); 108 | 109 | void wrap_InvokeEvent(d3d9_vtable_method method, UINT isPre, wrapped_com_obj** stackPtr, void* ret); 110 | 111 | void wrap_InitEvents(); 112 | 113 | -------------------------------------------------------------------------------- /addon/com_wrapper_dev11_methods.inc: -------------------------------------------------------------------------------- 1 | #define WRAP_METH_NAME QueryInterface 2 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ REFIID v1, void** v2) WRAP_CALLTHRU_V2 CUSTOM_ENDLINE_DEF 3 | #undef WRAP_METH_NAME 4 | 5 | #define WRAP_METH_NAME AddRef 6 | WRAPPED_METH_DECL_(ULONG, WRAP_METH_NAME)(WRAPPED_THIS) WRAP_CALLTHRU_V0 CUSTOM_ENDLINE_DEF 7 | #undef WRAP_METH_NAME 8 | 9 | #define WRAP_METH_NAME Release 10 | WRAPPED_METH_DECL_(ULONG, WRAP_METH_NAME)(WRAPPED_THIS) WRAP_CALLTHRU_V0 CUSTOM_ENDLINE_DEF 11 | #undef WRAP_METH_NAME 12 | 13 | #define WRAP_METH_NAME CreateBuffer 14 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 15 | /* [annotation] */ 16 | const D3D11_BUFFER_DESC *v1, 17 | /* [annotation] */ 18 | const D3D11_SUBRESOURCE_DATA *v2, 19 | /* [annotation] */ 20 | ID3D11Buffer **v3) WRAP_CALLTHRU_V3 CUSTOM_ENDLINE_DEF 21 | #undef WRAP_METH_NAME 22 | 23 | #define WRAP_METH_NAME CreateTexture1D 24 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 25 | /* [annotation] */ 26 | const D3D11_TEXTURE1D_DESC *v1, 27 | /* [annotation] */ 28 | const D3D11_SUBRESOURCE_DATA *v2, 29 | /* [annotation] */ 30 | ID3D11Texture1D **v3) WRAP_CALLTHRU_V3 CUSTOM_ENDLINE_DEF 31 | #undef WRAP_METH_NAME 32 | 33 | #define WRAP_METH_NAME CreateTexture2D 34 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 35 | /* [annotation] */ 36 | const D3D11_TEXTURE2D_DESC *v1, 37 | /* [annotation] */ 38 | const D3D11_SUBRESOURCE_DATA *v2, 39 | /* [annotation] */ 40 | ID3D11Texture2D **v3) WRAP_CALLTHRU_V3 CUSTOM_ENDLINE_DEF 41 | #undef WRAP_METH_NAME 42 | 43 | #define WRAP_METH_NAME CreateTexture3D 44 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 45 | /* [annotation] */ 46 | const D3D11_TEXTURE3D_DESC *v1, 47 | /* [annotation] */ 48 | const D3D11_SUBRESOURCE_DATA *v2, 49 | /* [annotation] */ 50 | ID3D11Texture3D **v3) WRAP_CALLTHRU_V3 CUSTOM_ENDLINE_DEF 51 | #undef WRAP_METH_NAME 52 | #define WRAP_METH_NAME CreateShaderResourceView 53 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 54 | /* [annotation] */ 55 | ID3D11Resource *v1, 56 | /* [annotation] */ 57 | const D3D11_SHADER_RESOURCE_VIEW_DESC *v2, 58 | /* [annotation] */ 59 | ID3D11ShaderResourceView **v3) WRAP_CALLTHRU_V3 CUSTOM_ENDLINE_DEF 60 | #undef WRAP_METH_NAME 61 | #define WRAP_METH_NAME CreateUnorderedAccessView 62 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 63 | /* [annotation] */ 64 | ID3D11Resource *v1, 65 | /* [annotation] */ 66 | const D3D11_UNORDERED_ACCESS_VIEW_DESC *v2, 67 | /* [annotation] */ 68 | ID3D11UnorderedAccessView **v3) WRAP_CALLTHRU_V3 CUSTOM_ENDLINE_DEF 69 | #undef WRAP_METH_NAME 70 | #define WRAP_METH_NAME CreateRenderTargetView 71 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 72 | /* [annotation] */ 73 | ID3D11Resource *v1, 74 | /* [annotation] */ 75 | const D3D11_RENDER_TARGET_VIEW_DESC *v2, 76 | /* [annotation] */ 77 | ID3D11RenderTargetView **v3) WRAP_CALLTHRU_V3 CUSTOM_ENDLINE_DEF 78 | #undef WRAP_METH_NAME 79 | #define WRAP_METH_NAME CreateDepthStencilView 80 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 81 | /* [annotation] */ 82 | ID3D11Resource *v1, 83 | /* [annotation] */ 84 | const D3D11_DEPTH_STENCIL_VIEW_DESC *v2, 85 | /* [annotation] */ 86 | ID3D11DepthStencilView **v3) WRAP_CALLTHRU_V3 CUSTOM_ENDLINE_DEF 87 | #undef WRAP_METH_NAME 88 | #define WRAP_METH_NAME CreateInputLayout 89 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 90 | /* [annotation] */ 91 | const D3D11_INPUT_ELEMENT_DESC *v1, 92 | /* [annotation] */ 93 | UINT v2, 94 | /* [annotation] */ 95 | const void *v3, 96 | /* [annotation] */ 97 | SIZE_T v4, 98 | /* [annotation] */ 99 | ID3D11InputLayout **v5) WRAP_CALLTHRU_V5 CUSTOM_ENDLINE_DEF 100 | #undef WRAP_METH_NAME 101 | #define WRAP_METH_NAME CreateVertexShader 102 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 103 | /* [annotation] */ 104 | const void *v1, 105 | /* [annotation] */ 106 | SIZE_T v2, 107 | /* [annotation] */ 108 | ID3D11ClassLinkage *v3, 109 | /* [annotation] */ 110 | ID3D11VertexShader **v4) WRAP_CALLTHRU_V4 CUSTOM_ENDLINE_DEF 111 | #undef WRAP_METH_NAME 112 | #define WRAP_METH_NAME CreateGeometryShader 113 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 114 | /* [annotation] */ 115 | const void *v1, 116 | /* [annotation] */ 117 | SIZE_T v2, 118 | /* [annotation] */ 119 | ID3D11ClassLinkage *v3, 120 | /* [annotation] */ 121 | ID3D11GeometryShader **v4) WRAP_CALLTHRU_V4 CUSTOM_ENDLINE_DEF 122 | #undef WRAP_METH_NAME 123 | #define WRAP_METH_NAME CreateGeometryShaderWithStreamOutput 124 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 125 | /* [annotation] */ 126 | const void *v1, 127 | /* [annotation] */ 128 | SIZE_T v2, 129 | /* [annotation] */ 130 | const D3D11_SO_DECLARATION_ENTRY *v3, 131 | /* [annotation] */ 132 | UINT v4, 133 | /* [annotation] */ 134 | const UINT *v5, 135 | /* [annotation] */ 136 | UINT v6, 137 | /* [annotation] */ 138 | UINT v7, 139 | /* [annotation] */ 140 | ID3D11ClassLinkage *v8, 141 | /* [annotation] */ 142 | ID3D11GeometryShader **v9) WRAP_CALLTHRU_V9 CUSTOM_ENDLINE_DEF 143 | #undef WRAP_METH_NAME 144 | #define WRAP_METH_NAME CreatePixelShader 145 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 146 | /* [annotation] */ 147 | const void *v1, 148 | /* [annotation] */ 149 | SIZE_T v2, 150 | /* [annotation] */ 151 | ID3D11ClassLinkage *v3, 152 | /* [annotation] */ 153 | ID3D11PixelShader **v4) WRAP_CALLTHRU_V4 CUSTOM_ENDLINE_DEF 154 | #undef WRAP_METH_NAME 155 | #define WRAP_METH_NAME CreateHullShader 156 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 157 | /* [annotation] */ 158 | const void *v1, 159 | /* [annotation] */ 160 | SIZE_T v2, 161 | /* [annotation] */ 162 | ID3D11ClassLinkage *v3, 163 | /* [annotation] */ 164 | ID3D11HullShader **v4) WRAP_CALLTHRU_V4 CUSTOM_ENDLINE_DEF 165 | #undef WRAP_METH_NAME 166 | #define WRAP_METH_NAME CreateDomainShader 167 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 168 | /* [annotation] */ 169 | const void *v1, 170 | /* [annotation] */ 171 | SIZE_T v2, 172 | /* [annotation] */ 173 | ID3D11ClassLinkage *v3, 174 | /* [annotation] */ 175 | ID3D11DomainShader **v4) WRAP_CALLTHRU_V4 CUSTOM_ENDLINE_DEF 176 | #undef WRAP_METH_NAME 177 | #define WRAP_METH_NAME CreateComputeShader 178 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 179 | /* [annotation] */ 180 | const void *v1, 181 | /* [annotation] */ 182 | SIZE_T v2, 183 | /* [annotation] */ 184 | ID3D11ClassLinkage *v3, 185 | /* [annotation] */ 186 | ID3D11ComputeShader **v4) WRAP_CALLTHRU_V4 CUSTOM_ENDLINE_DEF 187 | #undef WRAP_METH_NAME 188 | #define WRAP_METH_NAME CreateClassLinkage 189 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 190 | /* [annotation] */ 191 | ID3D11ClassLinkage **v1) WRAP_CALLTHRU_V1 CUSTOM_ENDLINE_DEF 192 | #undef WRAP_METH_NAME 193 | #define WRAP_METH_NAME CreateBlendState 194 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 195 | /* [annotation] */ 196 | const D3D11_BLEND_DESC *v1, 197 | /* [annotation] */ 198 | ID3D11BlendState **v2) WRAP_CALLTHRU_V2 CUSTOM_ENDLINE_DEF 199 | #undef WRAP_METH_NAME 200 | #define WRAP_METH_NAME CreateDepthStencilState 201 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 202 | /* [annotation] */ 203 | const D3D11_DEPTH_STENCIL_DESC *v1, 204 | /* [annotation] */ 205 | ID3D11DepthStencilState **v2) WRAP_CALLTHRU_V2 CUSTOM_ENDLINE_DEF 206 | #undef WRAP_METH_NAME 207 | #define WRAP_METH_NAME CreateRasterizerState 208 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 209 | /* [annotation] */ 210 | const D3D11_RASTERIZER_DESC *v1, 211 | /* [annotation] */ 212 | ID3D11RasterizerState **v2) WRAP_CALLTHRU_V2 CUSTOM_ENDLINE_DEF 213 | #undef WRAP_METH_NAME 214 | #define WRAP_METH_NAME CreateSamplerState 215 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 216 | /* [annotation] */ 217 | const D3D11_SAMPLER_DESC *v1, 218 | /* [annotation] */ 219 | ID3D11SamplerState **v2) WRAP_CALLTHRU_V2 CUSTOM_ENDLINE_DEF 220 | #undef WRAP_METH_NAME 221 | #define WRAP_METH_NAME CreateQuery 222 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 223 | /* [annotation] */ 224 | const D3D11_QUERY_DESC *v1, 225 | /* [annotation] */ 226 | ID3D11Query **v2) WRAP_CALLTHRU_V2 CUSTOM_ENDLINE_DEF 227 | #undef WRAP_METH_NAME 228 | #define WRAP_METH_NAME CreatePredicate 229 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 230 | /* [annotation] */ 231 | const D3D11_QUERY_DESC *v1, 232 | /* [annotation] */ 233 | ID3D11Predicate **v2) WRAP_CALLTHRU_V2 CUSTOM_ENDLINE_DEF 234 | #undef WRAP_METH_NAME 235 | #define WRAP_METH_NAME CreateCounter 236 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 237 | /* [annotation] */ 238 | const D3D11_COUNTER_DESC *v1, 239 | /* [annotation] */ 240 | ID3D11Counter **v2) WRAP_CALLTHRU_V2 CUSTOM_ENDLINE_DEF 241 | #undef WRAP_METH_NAME 242 | #define WRAP_METH_NAME CreateDeferredContext 243 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 244 | UINT v1, 245 | /* [annotation] */ 246 | ID3D11DeviceContext **v2) WRAP_CALLTHRU_V2 CUSTOM_ENDLINE_DEF 247 | #undef WRAP_METH_NAME 248 | #define WRAP_METH_NAME OpenSharedResource 249 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 250 | /* [annotation] */ 251 | HANDLE v1, 252 | /* [annotation] */ 253 | REFIID v2, 254 | /* [annotation] */ 255 | void **v3) WRAP_CALLTHRU_V3 CUSTOM_ENDLINE_DEF 256 | #undef WRAP_METH_NAME 257 | #define WRAP_METH_NAME CheckFormatSupport 258 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 259 | /* [annotation] */ 260 | DXGI_FORMAT v1, 261 | /* [annotation] */ 262 | UINT *v2) WRAP_CALLTHRU_V2 CUSTOM_ENDLINE_DEF 263 | #undef WRAP_METH_NAME 264 | #define WRAP_METH_NAME CheckMultisampleQualityLevels 265 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 266 | /* [annotation] */ 267 | DXGI_FORMAT v1, 268 | /* [annotation] */ 269 | UINT v2, 270 | /* [annotation] */ 271 | UINT *v3) WRAP_CALLTHRU_V3 CUSTOM_ENDLINE_DEF 272 | #undef WRAP_METH_NAME 273 | #define WRAP_METH_NAME CheckCounterInfo 274 | WRAPPED_METH_DECL_(void, WRAP_METH_NAME) ( WRAPPED_THIS_ 275 | /* [annotation] */ 276 | D3D11_COUNTER_INFO *v1) WRAP_CALLTHRU_V1_ CUSTOM_ENDLINE_DEF 277 | #undef WRAP_METH_NAME 278 | #define WRAP_METH_NAME CheckCounter 279 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 280 | /* [annotation] */ 281 | const D3D11_COUNTER_DESC *v1, 282 | /* [annotation] */ 283 | D3D11_COUNTER_TYPE *v2, 284 | /* [annotation] */ 285 | UINT *v3, 286 | /* [annotation] */ 287 | LPSTR v4, 288 | /* [annotation] */ 289 | UINT *v5, 290 | /* [annotation] */ 291 | LPSTR v6, 292 | /* [annotation] */ 293 | UINT *v7, 294 | /* [annotation] */ 295 | LPSTR v8, 296 | /* [annotation] */ 297 | UINT *v9) WRAP_CALLTHRU_V9 CUSTOM_ENDLINE_DEF 298 | #undef WRAP_METH_NAME 299 | #define WRAP_METH_NAME CheckFeatureSupport 300 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 301 | D3D11_FEATURE v1, 302 | /* [annotation] */ 303 | void *v2, 304 | UINT v3) WRAP_CALLTHRU_V3 CUSTOM_ENDLINE_DEF 305 | #undef WRAP_METH_NAME 306 | #define WRAP_METH_NAME GetPrivateData 307 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 308 | /* [annotation] */ 309 | REFGUID v1, 310 | /* [annotation] */ 311 | UINT *v2, 312 | /* [annotation] */ 313 | void *v3) WRAP_CALLTHRU_V3 CUSTOM_ENDLINE_DEF 314 | #undef WRAP_METH_NAME 315 | #define WRAP_METH_NAME SetPrivateData 316 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 317 | /* [annotation] */ 318 | REFGUID v1, 319 | /* [annotation] */ 320 | UINT v2, 321 | /* [annotation] */ 322 | const void *v3) WRAP_CALLTHRU_V3 CUSTOM_ENDLINE_DEF 323 | #undef WRAP_METH_NAME 324 | #define WRAP_METH_NAME SetPrivateDataInterface 325 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 326 | /* [annotation] */ 327 | REFGUID v1, 328 | /* [annotation] */ 329 | const IUnknown *v2) WRAP_CALLTHRU_V2 CUSTOM_ENDLINE_DEF 330 | #undef WRAP_METH_NAME 331 | #define WRAP_METH_NAME GetFeatureLevel 332 | WRAPPED_METH_DECL_(D3D_FEATURE_LEVEL, WRAP_METH_NAME) ( WRAPPED_THIS) WRAP_CALLTHRU_V0 CUSTOM_ENDLINE_DEF 333 | #undef WRAP_METH_NAME 334 | #define WRAP_METH_NAME GetCreationFlags 335 | WRAPPED_METH_DECL_(UINT, WRAP_METH_NAME) ( WRAPPED_THIS) WRAP_CALLTHRU_V0 CUSTOM_ENDLINE_DEF 336 | #undef WRAP_METH_NAME 337 | #define WRAP_METH_NAME GetDeviceRemovedReason 338 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS) WRAP_CALLTHRU_V0 CUSTOM_ENDLINE_DEF 339 | #undef WRAP_METH_NAME 340 | #define WRAP_METH_NAME GetImmediateContext 341 | WRAPPED_METH_DECL_(void, WRAP_METH_NAME)( WRAPPED_THIS_ 342 | /* [annotation] */ 343 | ID3D11DeviceContext **v1) WRAP_CALLTHRU_V1_ CUSTOM_ENDLINE_DEF 344 | #undef WRAP_METH_NAME 345 | #define WRAP_METH_NAME SetExceptionMode 346 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 347 | UINT v1) WRAP_CALLTHRU_V1 CUSTOM_ENDLINE_DEF 348 | #undef WRAP_METH_NAME 349 | #define WRAP_METH_NAME GetExceptionMode 350 | WRAPPED_METH_DECL_(UINT, WRAP_METH_NAME)( WRAPPED_THIS) WRAP_CALLTHRU_V0 CUSTOM_ENDLINE_DEF 351 | #undef WRAP_METH_NAME 352 | 353 | //device1 354 | 355 | #define WRAP_METH_NAME GetImmediateContext1 356 | WRAPPED_METH_DECL_(void, WRAP_METH_NAME) ( WRAPPED_THIS_ 357 | /* [annotation] */ 358 | ID3D11DeviceContext1 **v1) WRAP_CALLTHRU_V1_ CUSTOM_ENDLINE_DEF 359 | #undef WRAP_METH_NAME 360 | 361 | #define WRAP_METH_NAME CreateDeferredContext1 362 | WRAPPED_METH_DECL(WRAP_METH_NAME) ( WRAPPED_THIS_ 363 | UINT v1, 364 | /* [annotation] */ 365 | ID3D11DeviceContext1 **v2) WRAP_CALLTHRU_V2 CUSTOM_ENDLINE_DEF 366 | #undef WRAP_METH_NAME 367 | 368 | #define WRAP_METH_NAME CreateBlendState1 369 | WRAPPED_METH_DECL(WRAP_METH_NAME) ( WRAPPED_THIS_ 370 | /* [annotation] */ 371 | const D3D11_BLEND_DESC1 *v1, 372 | /* [annotation] */ 373 | ID3D11BlendState1 **v2) WRAP_CALLTHRU_V2 CUSTOM_ENDLINE_DEF 374 | #undef WRAP_METH_NAME 375 | 376 | #define WRAP_METH_NAME CreateRasterizerState1 377 | WRAPPED_METH_DECL(WRAP_METH_NAME) ( WRAPPED_THIS_ 378 | /* [annotation] */ 379 | const D3D11_RASTERIZER_DESC1 *v1, 380 | /* [annotation] */ 381 | ID3D11RasterizerState1 **v2) WRAP_CALLTHRU_V2 CUSTOM_ENDLINE_DEF 382 | #undef WRAP_METH_NAME 383 | 384 | #define WRAP_METH_NAME CreateDeviceContextState 385 | WRAPPED_METH_DECL(WRAP_METH_NAME) ( WRAPPED_THIS_ 386 | UINT v1, 387 | /* [annotation] */ 388 | _In_reads_( FeatureLevels ) const D3D_FEATURE_LEVEL *v2, 389 | UINT v3, 390 | UINT v4, 391 | REFIID v5, 392 | /* [annotation] */ 393 | D3D_FEATURE_LEVEL *v6, 394 | /* [annotation] */ 395 | ID3DDeviceContextState **v7) WRAP_CALLTHRU_V7 CUSTOM_ENDLINE_DEF 396 | #undef WRAP_METH_NAME 397 | 398 | #define WRAP_METH_NAME OpenSharedResource1 399 | WRAPPED_METH_DECL(WRAP_METH_NAME) ( WRAPPED_THIS_ 400 | /* [annotation] */ 401 | HANDLE v1, 402 | /* [annotation] */ 403 | REFIID v2, 404 | /* [annotation] */ 405 | void **v3) WRAP_CALLTHRU_V3 CUSTOM_ENDLINE_DEF 406 | #undef WRAP_METH_NAME 407 | 408 | #define WRAP_METH_NAME OpenSharedResourceByName 409 | WRAPPED_METH_DECL(WRAP_METH_NAME) ( WRAPPED_THIS_ 410 | /* [annotation] */ 411 | LPCWSTR v1, 412 | /* [annotation] */ 413 | DWORD v2, 414 | /* [annotation] */ 415 | REFIID v3, 416 | /* [annotation] */ 417 | void **v4) WRAP_CALLTHRU_V4 CUSTOM_ENDLINE_DEF 418 | #undef WRAP_METH_NAME 419 | 420 | 421 | //device2 422 | #define WRAP_METH_NAME GetImmediateContext2 423 | WRAPPED_METH_DECL_(void, WRAP_METH_NAME) ( WRAPPED_THIS_ 424 | /* [annotation] */ 425 | ID3D11DeviceContext2 **v1) WRAP_CALLTHRU_V1_ CUSTOM_ENDLINE_DEF 426 | #undef WRAP_METH_NAME 427 | 428 | #define WRAP_METH_NAME CreateDeferredContext2 429 | WRAPPED_METH_DECL(WRAP_METH_NAME) ( WRAPPED_THIS_ 430 | UINT v1, 431 | /* [annotation] */ 432 | ID3D11DeviceContext2 **v2) WRAP_CALLTHRU_V2 CUSTOM_ENDLINE_DEF 433 | #undef WRAP_METH_NAME 434 | 435 | #define WRAP_METH_NAME GetResourceTiling 436 | WRAPPED_METH_DECL_(void, WRAP_METH_NAME) ( WRAPPED_THIS_ 437 | /* [annotation] */ 438 | ID3D11Resource *v1, 439 | /* [annotation] */ 440 | UINT *v2, 441 | /* [annotation] */ 442 | D3D11_PACKED_MIP_DESC *v3, 443 | /* [annotation] */ 444 | D3D11_TILE_SHAPE *v4, 445 | /* [annotation] */ 446 | UINT *v5, 447 | /* [annotation] */ 448 | UINT v6, 449 | /* [annotation] */ 450 | D3D11_SUBRESOURCE_TILING *v7) WRAP_CALLTHRU_V7_ CUSTOM_ENDLINE_DEF 451 | #undef WRAP_METH_NAME 452 | 453 | #define WRAP_METH_NAME CheckMultisampleQualityLevels1 454 | WRAPPED_METH_DECL(WRAP_METH_NAME) ( WRAPPED_THIS_ 455 | /* [annotation] */ 456 | DXGI_FORMAT v1, 457 | /* [annotation] */ 458 | UINT v2, 459 | /* [annotation] */ 460 | UINT v3, 461 | /* [annotation] */ 462 | UINT *v4) WRAP_CALLTHRU_V4 CUSTOM_ENDLINE_DEF 463 | #undef WRAP_METH_NAME 464 | 465 | //device3 466 | 467 | #define WRAP_METH_NAME CreateTexture2D1 468 | WRAPPED_METH_DECL(WRAP_METH_NAME) ( WRAPPED_THIS_ 469 | /* [annotation] */ 470 | const D3D11_TEXTURE2D_DESC1 *v1, 471 | /* [annotation] */ 472 | const D3D11_SUBRESOURCE_DATA *v2, 473 | /* [annotation] */ 474 | ID3D11Texture2D1 **v3) WRAP_CALLTHRU_V3 CUSTOM_ENDLINE_DEF 475 | #undef WRAP_METH_NAME 476 | 477 | #define WRAP_METH_NAME CreateTexture3D1 478 | WRAPPED_METH_DECL(WRAP_METH_NAME) ( WRAPPED_THIS_ 479 | /* [annotation] */ 480 | const D3D11_TEXTURE3D_DESC1 *v1, 481 | /* [annotation] */ 482 | const D3D11_SUBRESOURCE_DATA *v2, 483 | /* [annotation] */ 484 | ID3D11Texture3D1 **v3) WRAP_CALLTHRU_V3 CUSTOM_ENDLINE_DEF 485 | #undef WRAP_METH_NAME 486 | 487 | #define WRAP_METH_NAME CreateRasterizerState2 488 | WRAPPED_METH_DECL(WRAP_METH_NAME) ( WRAPPED_THIS_ 489 | /* [annotation] */ 490 | const D3D11_RASTERIZER_DESC2 *v1, 491 | /* [annotation] */ 492 | ID3D11RasterizerState2 **v2) WRAP_CALLTHRU_V2 CUSTOM_ENDLINE_DEF 493 | #undef WRAP_METH_NAME 494 | 495 | #define WRAP_METH_NAME CreateShaderResourceView1 496 | WRAPPED_METH_DECL(WRAP_METH_NAME) ( WRAPPED_THIS_ 497 | /* [annotation] */ 498 | ID3D11Resource *v1, 499 | /* [annotation] */ 500 | const D3D11_SHADER_RESOURCE_VIEW_DESC1 *v2, 501 | /* [annotation] */ 502 | ID3D11ShaderResourceView1 **v3) WRAP_CALLTHRU_V3 CUSTOM_ENDLINE_DEF 503 | #undef WRAP_METH_NAME 504 | 505 | #define WRAP_METH_NAME CreateUnorderedAccessView1 506 | WRAPPED_METH_DECL(WRAP_METH_NAME) ( WRAPPED_THIS_ 507 | /* [annotation] */ 508 | ID3D11Resource *v1, 509 | /* [annotation] */ 510 | const D3D11_UNORDERED_ACCESS_VIEW_DESC1 *v2, 511 | /* [annotation] */ 512 | ID3D11UnorderedAccessView1 **v3) WRAP_CALLTHRU_V3 CUSTOM_ENDLINE_DEF 513 | #undef WRAP_METH_NAME 514 | 515 | #define WRAP_METH_NAME CreateRenderTargetView1 516 | WRAPPED_METH_DECL(WRAP_METH_NAME) ( WRAPPED_THIS_ 517 | /* [annotation] */ 518 | ID3D11Resource *v1, 519 | /* [annotation] */ 520 | const D3D11_RENDER_TARGET_VIEW_DESC1 *v2, 521 | /* [annotation] */ 522 | ID3D11RenderTargetView1 **v3) WRAP_CALLTHRU_V3 CUSTOM_ENDLINE_DEF 523 | #undef WRAP_METH_NAME 524 | 525 | #define WRAP_METH_NAME CreateQuery1 526 | WRAPPED_METH_DECL(WRAP_METH_NAME) ( WRAPPED_THIS_ 527 | /* [annotation] */ 528 | const D3D11_QUERY_DESC1 *v1, 529 | /* [annotation] */ 530 | ID3D11Query1 **v2) WRAP_CALLTHRU_V2 CUSTOM_ENDLINE_DEF 531 | #undef WRAP_METH_NAME 532 | 533 | #define WRAP_METH_NAME GetImmediateContext3 534 | WRAPPED_METH_DECL_(void, WRAP_METH_NAME) ( WRAPPED_THIS_ 535 | /* [annotation] */ 536 | ID3D11DeviceContext3 **v1) WRAP_CALLTHRU_V1_ CUSTOM_ENDLINE_DEF 537 | #undef WRAP_METH_NAME 538 | 539 | #define WRAP_METH_NAME CreateDeferredContext3 540 | WRAPPED_METH_DECL(WRAP_METH_NAME) ( WRAPPED_THIS_ 541 | UINT v1, 542 | /* [annotation] */ 543 | ID3D11DeviceContext3 **v2) WRAP_CALLTHRU_V2 CUSTOM_ENDLINE_DEF 544 | #undef WRAP_METH_NAME 545 | 546 | #define WRAP_METH_NAME WriteToSubresource 547 | WRAPPED_METH_DECL_(void, WRAP_METH_NAME) ( WRAPPED_THIS_ 548 | /* [annotation] */ 549 | ID3D11Resource *v1, 550 | /* [annotation] */ 551 | UINT v2, 552 | /* [annotation] */ 553 | const D3D11_BOX *v3, 554 | /* [annotation] */ 555 | const void *v4, 556 | /* [annotation] */ 557 | UINT v5, 558 | /* [annotation] */ 559 | UINT v6) WRAP_CALLTHRU_V6_ CUSTOM_ENDLINE_DEF 560 | #undef WRAP_METH_NAME 561 | 562 | #define WRAP_METH_NAME ReadFromSubresource 563 | WRAPPED_METH_DECL_(void, WRAP_METH_NAME) ( WRAPPED_THIS_ 564 | /* [annotation] */ 565 | void *v1, 566 | /* [annotation] */ 567 | UINT v2, 568 | /* [annotation] */ 569 | UINT v3, 570 | /* [annotation] */ 571 | ID3D11Resource *v4, 572 | /* [annotation] */ 573 | UINT v5, 574 | /* [annotation] */ 575 | const D3D11_BOX *v6) WRAP_CALLTHRU_V6_ CUSTOM_ENDLINE_DEF 576 | #undef WRAP_METH_NAME 577 | 578 | //device4 579 | 580 | #define WRAP_METH_NAME RegisterDeviceRemovedEvent 581 | WRAPPED_METH_DECL(WRAP_METH_NAME) ( WRAPPED_THIS_ 582 | /* [annotation] */ 583 | HANDLE v1, 584 | /* [annotation] */ 585 | DWORD *v2) WRAP_CALLTHRU_V2 CUSTOM_ENDLINE_DEF 586 | #undef WRAP_METH_NAME 587 | 588 | #define WRAP_METH_NAME UnregisterDeviceRemoved 589 | WRAPPED_METH_DECL_(void, WRAP_METH_NAME) ( WRAPPED_THIS_ 590 | /* [annotation] */ 591 | DWORD v1) WRAP_CALLTHRU_V1_ CUSTOM_ENDLINE_DEF 592 | #undef WRAP_METH_NAME 593 | 594 | //device5 595 | 596 | #define WRAP_METH_NAME OpenSharedFence 597 | WRAPPED_METH_DECL(WRAP_METH_NAME) ( WRAPPED_THIS_ 598 | /* [annotation] */ 599 | HANDLE v1, 600 | /* [annotation] */ 601 | REFIID v2, 602 | /* [annotation] */ 603 | void **v3) WRAP_CALLTHRU_V3 CUSTOM_ENDLINE_DEF 604 | #undef WRAP_METH_NAME 605 | 606 | #define WRAP_METH_NAME CreateFence 607 | WRAPPED_METH_DECL(WRAP_METH_NAME) ( WRAPPED_THIS_ 608 | /* [annotation] */ 609 | UINT64 v1, 610 | /* [annotation] */ 611 | D3D11_FENCE_FLAG v2, 612 | /* [annotation] */ 613 | REFIID v3, 614 | /* [annotation] */ 615 | void **v4) WRAP_CALLTHRU_V4 CUSTOM_ENDLINE_DEF 616 | #undef WRAP_METH_NAME -------------------------------------------------------------------------------- /addon/com_wrapper_dev_methods.inc: -------------------------------------------------------------------------------- 1 | #define WRAP_METH_NAME QueryInterface 2 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ REFIID v1, void** v2) WRAP_CALLTHRU_V2 CUSTOM_ENDLINE_DEF 3 | #undef WRAP_METH_NAME 4 | 5 | #define WRAP_METH_NAME AddRef 6 | WRAPPED_METH_DECL_(ULONG, WRAP_METH_NAME)(WRAPPED_THIS) WRAP_CALLTHRU_V0 CUSTOM_ENDLINE_DEF 7 | #undef WRAP_METH_NAME 8 | 9 | #define WRAP_METH_NAME Release 10 | WRAPPED_METH_DECL_(ULONG, WRAP_METH_NAME)(WRAPPED_THIS) WRAP_CALLTHRU_V0 CUSTOM_ENDLINE_DEF 11 | #undef WRAP_METH_NAME 12 | 13 | #define WRAP_METH_NAME TestCooperativeLevel 14 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS) WRAP_CALLTHRU_V0 CUSTOM_ENDLINE_DEF 15 | #undef WRAP_METH_NAME 16 | 17 | #define WRAP_METH_NAME GetAvailableTextureMem 18 | WRAPPED_METH_DECL_(UINT, WRAP_METH_NAME)(WRAPPED_THIS) WRAP_CALLTHRU_V0 CUSTOM_ENDLINE_DEF 19 | #undef WRAP_METH_NAME 20 | 21 | #define WRAP_METH_NAME EvictManagedResources 22 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS) WRAP_CALLTHRU_V0 CUSTOM_ENDLINE_DEF 23 | #undef WRAP_METH_NAME 24 | 25 | #define WRAP_METH_NAME GetDirect3D 26 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ IDirect3D9** v1) WRAP_CALLTHRU_V1 CUSTOM_ENDLINE_DEF 27 | #undef WRAP_METH_NAME 28 | 29 | #define WRAP_METH_NAME GetDeviceCaps 30 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ D3DCAPS9* v1) WRAP_CALLTHRU_V1 CUSTOM_ENDLINE_DEF 31 | #undef WRAP_METH_NAME 32 | 33 | #define WRAP_METH_NAME GetDisplayMode 34 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ UINT v1, D3DDISPLAYMODE* v2) WRAP_CALLTHRU_V2 CUSTOM_ENDLINE_DEF 35 | #undef WRAP_METH_NAME 36 | 37 | #define WRAP_METH_NAME GetCreationParameters 38 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ D3DDEVICE_CREATION_PARAMETERS *v1) WRAP_CALLTHRU_V1 CUSTOM_ENDLINE_DEF 39 | #undef WRAP_METH_NAME 40 | 41 | #define WRAP_METH_NAME SetCursorProperties 42 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ UINT v1, UINT v2, IDirect3DSurface9* v3) WRAP_CALLTHRU_V3 CUSTOM_ENDLINE_DEF 43 | #undef WRAP_METH_NAME 44 | 45 | #define WRAP_METH_NAME SetCursorPosition 46 | WRAPPED_METH_DECL_(void, WRAP_METH_NAME)(WRAPPED_THIS_ int v1, int v2, DWORD v3) WRAP_CALLTHRU_V3_ CUSTOM_ENDLINE_DEF 47 | #undef WRAP_METH_NAME 48 | 49 | #define WRAP_METH_NAME ShowCursor 50 | WRAPPED_METH_DECL_(BOOL, WRAP_METH_NAME)(WRAPPED_THIS_ BOOL v1) WRAP_CALLTHRU_V1 CUSTOM_ENDLINE_DEF 51 | #undef WRAP_METH_NAME 52 | 53 | #define WRAP_METH_NAME CreateAdditionalSwapChain 54 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ D3DPRESENT_PARAMETERS* v1, IDirect3DSwapChain9** v2) WRAP_CALLTHRU_V2 CUSTOM_ENDLINE_DEF 55 | #undef WRAP_METH_NAME 56 | 57 | #define WRAP_METH_NAME GetSwapChain 58 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ UINT v1, IDirect3DSwapChain9** v2) WRAP_CALLTHRU_V2 CUSTOM_ENDLINE_DEF 59 | #undef WRAP_METH_NAME 60 | 61 | #define WRAP_METH_NAME GetNumberOfSwapChains 62 | WRAPPED_METH_DECL_(UINT, WRAP_METH_NAME)(WRAPPED_THIS) WRAP_CALLTHRU_V0 CUSTOM_ENDLINE_DEF 63 | #undef WRAP_METH_NAME 64 | 65 | #define WRAP_METH_NAME Reset 66 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ D3DPRESENT_PARAMETERS* v1) WRAP_CALLTHRU_V1 CUSTOM_ENDLINE_DEF 67 | #undef WRAP_METH_NAME 68 | 69 | #define WRAP_METH_NAME Present 70 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ CONST RECT* v1, CONST RECT* v2, HWND v3, CONST RGNDATA* v4) WRAP_CALLTHRU_V4 CUSTOM_ENDLINE_DEF 71 | #undef WRAP_METH_NAME 72 | 73 | #define WRAP_METH_NAME GetBackBuffer 74 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ UINT v1, UINT v2, D3DBACKBUFFER_TYPE v3, IDirect3DSurface9** v4) WRAP_CALLTHRU_V4 CUSTOM_ENDLINE_DEF 75 | #undef WRAP_METH_NAME 76 | 77 | #define WRAP_METH_NAME GetRasterStatus 78 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ UINT v1, D3DRASTER_STATUS* v2) WRAP_CALLTHRU_V2 CUSTOM_ENDLINE_DEF 79 | #undef WRAP_METH_NAME 80 | 81 | #define WRAP_METH_NAME SetDialogBoxMode 82 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ BOOL v1) WRAP_CALLTHRU_V1 CUSTOM_ENDLINE_DEF 83 | #undef WRAP_METH_NAME 84 | 85 | #define WRAP_METH_NAME SetGammaRamp 86 | WRAPPED_METH_DECL_(void, WRAP_METH_NAME)(WRAPPED_THIS_ UINT v1, DWORD v2, CONST D3DGAMMARAMP* v3) WRAP_CALLTHRU_V3_ CUSTOM_ENDLINE_DEF 87 | #undef WRAP_METH_NAME 88 | 89 | #define WRAP_METH_NAME GetGammaRamp 90 | WRAPPED_METH_DECL_(void, WRAP_METH_NAME)(WRAPPED_THIS_ UINT v1, D3DGAMMARAMP* v2) WRAP_CALLTHRU_V2_ CUSTOM_ENDLINE_DEF 91 | #undef WRAP_METH_NAME 92 | 93 | #define WRAP_METH_NAME CreateTexture 94 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ UINT v1, UINT v2, UINT v3, DWORD v4, D3DFORMAT v5, D3DPOOL v6, IDirect3DTexture9** v7, HANDLE* v8) WRAP_CALLTHRU_V8 CUSTOM_ENDLINE_DEF 95 | #undef WRAP_METH_NAME 96 | 97 | #define WRAP_METH_NAME CreateVolumeTexture 98 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ UINT v1, UINT v2, UINT v3, UINT v4, DWORD v5, D3DFORMAT v6, D3DPOOL v7, IDirect3DVolumeTexture9** v8, HANDLE* v9) WRAP_CALLTHRU_V9 CUSTOM_ENDLINE_DEF 99 | #undef WRAP_METH_NAME 100 | 101 | #define WRAP_METH_NAME CreateCubeTexture 102 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ UINT v1, UINT v2, DWORD v3, D3DFORMAT v4, D3DPOOL v5, IDirect3DCubeTexture9** v6, HANDLE* v7) WRAP_CALLTHRU_V7 CUSTOM_ENDLINE_DEF 103 | #undef WRAP_METH_NAME 104 | 105 | #define WRAP_METH_NAME CreateVertexBuffer 106 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ UINT v1, DWORD v2, DWORD v3, D3DPOOL v4, IDirect3DVertexBuffer9** v5, HANDLE* v6) WRAP_CALLTHRU_V6 CUSTOM_ENDLINE_DEF 107 | #undef WRAP_METH_NAME 108 | 109 | #define WRAP_METH_NAME CreateIndexBuffer 110 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ UINT v1, DWORD v2, D3DFORMAT v3, D3DPOOL v4, IDirect3DIndexBuffer9** v5, HANDLE* v6) WRAP_CALLTHRU_V6 CUSTOM_ENDLINE_DEF 111 | #undef WRAP_METH_NAME 112 | 113 | #define WRAP_METH_NAME CreateRenderTarget 114 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ UINT v1, UINT v2, D3DFORMAT v3, D3DMULTISAMPLE_TYPE v4, DWORD v5, BOOL v6, IDirect3DSurface9** v7, HANDLE* v8) WRAP_CALLTHRU_V8 CUSTOM_ENDLINE_DEF 115 | #undef WRAP_METH_NAME 116 | 117 | #define WRAP_METH_NAME CreateDepthStencilSurface 118 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ UINT v1, UINT v2, D3DFORMAT v3, D3DMULTISAMPLE_TYPE v4, DWORD v5, BOOL v6, IDirect3DSurface9** v7, HANDLE* v8) WRAP_CALLTHRU_V8 CUSTOM_ENDLINE_DEF 119 | #undef WRAP_METH_NAME 120 | 121 | #define WRAP_METH_NAME UpdateSurface 122 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ IDirect3DSurface9* v1, CONST RECT* v2, IDirect3DSurface9* v3, CONST POINT* v4) WRAP_CALLTHRU_V4 CUSTOM_ENDLINE_DEF 123 | #undef WRAP_METH_NAME 124 | 125 | #define WRAP_METH_NAME UpdateTexture 126 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ IDirect3DBaseTexture9* v1, IDirect3DBaseTexture9* v2) WRAP_CALLTHRU_V2 CUSTOM_ENDLINE_DEF 127 | #undef WRAP_METH_NAME 128 | 129 | #define WRAP_METH_NAME GetRenderTargetData 130 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ IDirect3DSurface9* v1, IDirect3DSurface9* v2) WRAP_CALLTHRU_V2 CUSTOM_ENDLINE_DEF 131 | #undef WRAP_METH_NAME 132 | 133 | #define WRAP_METH_NAME GetFrontBufferData 134 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ UINT v1, IDirect3DSurface9* v2) WRAP_CALLTHRU_V2 CUSTOM_ENDLINE_DEF 135 | #undef WRAP_METH_NAME 136 | 137 | #define WRAP_METH_NAME StretchRect 138 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ IDirect3DSurface9* v1, CONST RECT* v2, IDirect3DSurface9* v3, CONST RECT* v4, D3DTEXTUREFILTERTYPE v5) WRAP_CALLTHRU_V5 CUSTOM_ENDLINE_DEF 139 | #undef WRAP_METH_NAME 140 | 141 | #define WRAP_METH_NAME ColorFill 142 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ IDirect3DSurface9* v1, CONST RECT* v2, D3DCOLOR v3) WRAP_CALLTHRU_V3 CUSTOM_ENDLINE_DEF 143 | #undef WRAP_METH_NAME 144 | 145 | #define WRAP_METH_NAME CreateOffscreenPlainSurface 146 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ UINT v1, UINT v2, D3DFORMAT v3, D3DPOOL v4, IDirect3DSurface9** v5, HANDLE* v6) WRAP_CALLTHRU_V6 CUSTOM_ENDLINE_DEF 147 | #undef WRAP_METH_NAME 148 | 149 | #define WRAP_METH_NAME SetRenderTarget 150 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ DWORD v1, IDirect3DSurface9* v2) WRAP_CALLTHRU_V2 CUSTOM_ENDLINE_DEF 151 | #undef WRAP_METH_NAME 152 | 153 | #define WRAP_METH_NAME GetRenderTarget 154 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ DWORD v1, IDirect3DSurface9** v2) WRAP_CALLTHRU_V2 CUSTOM_ENDLINE_DEF 155 | #undef WRAP_METH_NAME 156 | 157 | #define WRAP_METH_NAME SetDepthStencilSurface 158 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ IDirect3DSurface9* v1) WRAP_CALLTHRU_V1 CUSTOM_ENDLINE_DEF 159 | #undef WRAP_METH_NAME 160 | 161 | #define WRAP_METH_NAME GetDepthStencilSurface 162 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ IDirect3DSurface9** v1) WRAP_CALLTHRU_V1 CUSTOM_ENDLINE_DEF 163 | #undef WRAP_METH_NAME 164 | 165 | #define WRAP_METH_NAME BeginScene 166 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS) WRAP_CALLTHRU_V0 CUSTOM_ENDLINE_DEF 167 | #undef WRAP_METH_NAME 168 | 169 | #define WRAP_METH_NAME EndScene 170 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS) WRAP_CALLTHRU_V0 CUSTOM_ENDLINE_DEF 171 | #undef WRAP_METH_NAME 172 | 173 | #define WRAP_METH_NAME Clear 174 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ DWORD v1, CONST D3DRECT* v2, DWORD v3, D3DCOLOR v4, float v5, DWORD v6) WRAP_CALLTHRU_V6 CUSTOM_ENDLINE_DEF 175 | #undef WRAP_METH_NAME 176 | 177 | #define WRAP_METH_NAME SetTransform 178 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ D3DTRANSFORMSTATETYPE v1, CONST D3DMATRIX* v2) WRAP_CALLTHRU_V2 CUSTOM_ENDLINE_DEF 179 | #undef WRAP_METH_NAME 180 | 181 | #define WRAP_METH_NAME GetTransform 182 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ D3DTRANSFORMSTATETYPE v1, D3DMATRIX* v2) WRAP_CALLTHRU_V2 CUSTOM_ENDLINE_DEF 183 | #undef WRAP_METH_NAME 184 | 185 | #define WRAP_METH_NAME MultiplyTransform 186 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ D3DTRANSFORMSTATETYPE v1, CONST D3DMATRIX* v2) WRAP_CALLTHRU_V2 CUSTOM_ENDLINE_DEF 187 | #undef WRAP_METH_NAME 188 | 189 | #define WRAP_METH_NAME SetViewport 190 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ CONST D3DVIEWPORT9* v1) WRAP_CALLTHRU_V1 CUSTOM_ENDLINE_DEF 191 | #undef WRAP_METH_NAME 192 | 193 | #define WRAP_METH_NAME GetViewport 194 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ D3DVIEWPORT9* v1) WRAP_CALLTHRU_V1 CUSTOM_ENDLINE_DEF 195 | #undef WRAP_METH_NAME 196 | 197 | #define WRAP_METH_NAME SetMaterial 198 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ CONST D3DMATERIAL9* v1) WRAP_CALLTHRU_V1 CUSTOM_ENDLINE_DEF 199 | #undef WRAP_METH_NAME 200 | 201 | #define WRAP_METH_NAME GetMaterial 202 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ D3DMATERIAL9* v1) WRAP_CALLTHRU_V1 CUSTOM_ENDLINE_DEF 203 | #undef WRAP_METH_NAME 204 | 205 | #define WRAP_METH_NAME SetLight 206 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ DWORD v1, CONST D3DLIGHT9* v2) WRAP_CALLTHRU_V2 CUSTOM_ENDLINE_DEF 207 | #undef WRAP_METH_NAME 208 | 209 | #define WRAP_METH_NAME GetLight 210 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ DWORD v1, D3DLIGHT9* v2) WRAP_CALLTHRU_V2 CUSTOM_ENDLINE_DEF 211 | #undef WRAP_METH_NAME 212 | 213 | #define WRAP_METH_NAME LightEnable 214 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ DWORD v1, BOOL v2) WRAP_CALLTHRU_V2 CUSTOM_ENDLINE_DEF 215 | #undef WRAP_METH_NAME 216 | 217 | #define WRAP_METH_NAME GetLightEnable 218 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ DWORD v1, BOOL* v2) WRAP_CALLTHRU_V2 CUSTOM_ENDLINE_DEF 219 | #undef WRAP_METH_NAME 220 | 221 | #define WRAP_METH_NAME SetClipPlane 222 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ DWORD v1, CONST float* v2) WRAP_CALLTHRU_V2 CUSTOM_ENDLINE_DEF 223 | #undef WRAP_METH_NAME 224 | 225 | #define WRAP_METH_NAME GetClipPlane 226 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ DWORD v1, float* v2) WRAP_CALLTHRU_V2 CUSTOM_ENDLINE_DEF 227 | #undef WRAP_METH_NAME 228 | 229 | #define WRAP_METH_NAME SetRenderState 230 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ D3DRENDERSTATETYPE v1, DWORD v2) WRAP_CALLTHRU_V2 CUSTOM_ENDLINE_DEF 231 | #undef WRAP_METH_NAME 232 | 233 | #define WRAP_METH_NAME GetRenderState 234 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ D3DRENDERSTATETYPE v1, DWORD* v2) WRAP_CALLTHRU_V2 CUSTOM_ENDLINE_DEF 235 | #undef WRAP_METH_NAME 236 | 237 | #define WRAP_METH_NAME CreateStateBlock 238 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ D3DSTATEBLOCKTYPE v1, IDirect3DStateBlock9** v2) WRAP_CALLTHRU_V2 CUSTOM_ENDLINE_DEF 239 | #undef WRAP_METH_NAME 240 | 241 | #define WRAP_METH_NAME BeginStateBlock 242 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS) WRAP_CALLTHRU_V0 CUSTOM_ENDLINE_DEF 243 | #undef WRAP_METH_NAME 244 | 245 | #define WRAP_METH_NAME EndStateBlock 246 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ IDirect3DStateBlock9** v1) WRAP_CALLTHRU_V1 CUSTOM_ENDLINE_DEF 247 | #undef WRAP_METH_NAME 248 | 249 | #define WRAP_METH_NAME SetClipStatus 250 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ CONST D3DCLIPSTATUS9* v1) WRAP_CALLTHRU_V1 CUSTOM_ENDLINE_DEF 251 | #undef WRAP_METH_NAME 252 | 253 | #define WRAP_METH_NAME GetClipStatus 254 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ D3DCLIPSTATUS9* v1) WRAP_CALLTHRU_V1 CUSTOM_ENDLINE_DEF 255 | #undef WRAP_METH_NAME 256 | 257 | #define WRAP_METH_NAME GetTexture 258 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ DWORD v1, IDirect3DBaseTexture9** v2) WRAP_CALLTHRU_V2 CUSTOM_ENDLINE_DEF 259 | #undef WRAP_METH_NAME 260 | 261 | #define WRAP_METH_NAME SetTexture 262 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ DWORD v1, IDirect3DBaseTexture9* v2) WRAP_CALLTHRU_V2 CUSTOM_ENDLINE_DEF 263 | #undef WRAP_METH_NAME 264 | 265 | #define WRAP_METH_NAME GetTextureStageState 266 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ DWORD v1, D3DTEXTURESTAGESTATETYPE v2, DWORD* v3) WRAP_CALLTHRU_V3 CUSTOM_ENDLINE_DEF 267 | #undef WRAP_METH_NAME 268 | 269 | #define WRAP_METH_NAME SetTextureStageState 270 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ DWORD v1, D3DTEXTURESTAGESTATETYPE v2, DWORD v3) WRAP_CALLTHRU_V3 CUSTOM_ENDLINE_DEF 271 | #undef WRAP_METH_NAME 272 | 273 | #define WRAP_METH_NAME GetSamplerState 274 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ DWORD v1, D3DSAMPLERSTATETYPE v2, DWORD* v3) WRAP_CALLTHRU_V3 CUSTOM_ENDLINE_DEF 275 | #undef WRAP_METH_NAME 276 | 277 | #define WRAP_METH_NAME SetSamplerState 278 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ DWORD v1, D3DSAMPLERSTATETYPE v2, DWORD v3) WRAP_CALLTHRU_V3 CUSTOM_ENDLINE_DEF 279 | #undef WRAP_METH_NAME 280 | 281 | #define WRAP_METH_NAME ValidateDevice 282 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ DWORD* v1) WRAP_CALLTHRU_V1 CUSTOM_ENDLINE_DEF 283 | #undef WRAP_METH_NAME 284 | 285 | #define WRAP_METH_NAME SetPaletteEntries 286 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ UINT v1, CONST PALETTEENTRY* v2) WRAP_CALLTHRU_V2 CUSTOM_ENDLINE_DEF 287 | #undef WRAP_METH_NAME 288 | 289 | #define WRAP_METH_NAME GetPaletteEntries 290 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ UINT v1, PALETTEENTRY* v2) WRAP_CALLTHRU_V2 CUSTOM_ENDLINE_DEF 291 | #undef WRAP_METH_NAME 292 | 293 | #define WRAP_METH_NAME SetCurrentTexturePalette 294 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ UINT v1) WRAP_CALLTHRU_V1 CUSTOM_ENDLINE_DEF 295 | #undef WRAP_METH_NAME 296 | 297 | #define WRAP_METH_NAME GetCurrentTexturePalette 298 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ UINT *v1) WRAP_CALLTHRU_V1 CUSTOM_ENDLINE_DEF 299 | #undef WRAP_METH_NAME 300 | 301 | #define WRAP_METH_NAME SetScissorRect 302 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ CONST RECT* v1) WRAP_CALLTHRU_V1 CUSTOM_ENDLINE_DEF 303 | #undef WRAP_METH_NAME 304 | 305 | #define WRAP_METH_NAME GetScissorRect 306 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ RECT* v1) WRAP_CALLTHRU_V1 CUSTOM_ENDLINE_DEF 307 | #undef WRAP_METH_NAME 308 | 309 | #define WRAP_METH_NAME SetSoftwareVertexProcessing 310 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ BOOL v1) WRAP_CALLTHRU_V1 CUSTOM_ENDLINE_DEF 311 | #undef WRAP_METH_NAME 312 | 313 | #define WRAP_METH_NAME GetSoftwareVertexProcessing 314 | WRAPPED_METH_DECL_(BOOL, WRAP_METH_NAME)(WRAPPED_THIS) WRAP_CALLTHRU_V0 CUSTOM_ENDLINE_DEF 315 | #undef WRAP_METH_NAME 316 | 317 | #define WRAP_METH_NAME SetNPatchMode 318 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ float v1) WRAP_CALLTHRU_V1 CUSTOM_ENDLINE_DEF 319 | #undef WRAP_METH_NAME 320 | 321 | #define WRAP_METH_NAME GetNPatchMode 322 | WRAPPED_METH_DECL_(float, WRAP_METH_NAME)(WRAPPED_THIS) WRAP_CALLTHRU_V0 CUSTOM_ENDLINE_DEF 323 | #undef WRAP_METH_NAME 324 | 325 | #define WRAP_METH_NAME DrawPrimitive 326 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ D3DPRIMITIVETYPE v1, UINT v2, UINT v3) WRAP_CALLTHRU_V3 CUSTOM_ENDLINE_DEF 327 | #undef WRAP_METH_NAME 328 | 329 | #define WRAP_METH_NAME DrawIndexedPrimitive 330 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ D3DPRIMITIVETYPE v1, INT v2, UINT v3, UINT v4, UINT v5, UINT v6) WRAP_CALLTHRU_V6 CUSTOM_ENDLINE_DEF 331 | #undef WRAP_METH_NAME 332 | 333 | #define WRAP_METH_NAME DrawPrimitiveUP 334 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ D3DPRIMITIVETYPE v1, UINT v2, CONST void* v3, UINT v4) WRAP_CALLTHRU_V4 CUSTOM_ENDLINE_DEF 335 | #undef WRAP_METH_NAME 336 | 337 | #define WRAP_METH_NAME DrawIndexedPrimitiveUP 338 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ D3DPRIMITIVETYPE v1, UINT v2, UINT v3, UINT v4, CONST void* v5, D3DFORMAT v6, CONST void* v7, UINT v8) WRAP_CALLTHRU_V8 CUSTOM_ENDLINE_DEF 339 | #undef WRAP_METH_NAME 340 | 341 | #define WRAP_METH_NAME ProcessVertices 342 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ UINT v1, UINT v2, UINT v3, IDirect3DVertexBuffer9* v4, IDirect3DVertexDeclaration9* v5, DWORD v6) WRAP_CALLTHRU_V6 CUSTOM_ENDLINE_DEF 343 | #undef WRAP_METH_NAME 344 | 345 | #define WRAP_METH_NAME CreateVertexDeclaration 346 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ CONST D3DVERTEXELEMENT9* v1, IDirect3DVertexDeclaration9** v2) WRAP_CALLTHRU_V2 CUSTOM_ENDLINE_DEF 347 | #undef WRAP_METH_NAME 348 | 349 | #define WRAP_METH_NAME SetVertexDeclaration 350 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ IDirect3DVertexDeclaration9* v1) WRAP_CALLTHRU_V1 CUSTOM_ENDLINE_DEF 351 | #undef WRAP_METH_NAME 352 | 353 | #define WRAP_METH_NAME GetVertexDeclaration 354 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ IDirect3DVertexDeclaration9** v1) WRAP_CALLTHRU_V1 CUSTOM_ENDLINE_DEF 355 | #undef WRAP_METH_NAME 356 | 357 | #define WRAP_METH_NAME SetFVF 358 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ DWORD v1) WRAP_CALLTHRU_V1 CUSTOM_ENDLINE_DEF 359 | #undef WRAP_METH_NAME 360 | 361 | #define WRAP_METH_NAME GetFVF 362 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ DWORD* v1) WRAP_CALLTHRU_V1 CUSTOM_ENDLINE_DEF 363 | #undef WRAP_METH_NAME 364 | 365 | #define WRAP_METH_NAME CreateVertexShader 366 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ CONST DWORD* v1, IDirect3DVertexShader9** v2) WRAP_CALLTHRU_V2 CUSTOM_ENDLINE_DEF 367 | #undef WRAP_METH_NAME 368 | 369 | #define WRAP_METH_NAME SetVertexShader 370 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ IDirect3DVertexShader9* v1) WRAP_CALLTHRU_V1 CUSTOM_ENDLINE_DEF 371 | #undef WRAP_METH_NAME 372 | 373 | #define WRAP_METH_NAME GetVertexShader 374 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ IDirect3DVertexShader9** v1) WRAP_CALLTHRU_V1 CUSTOM_ENDLINE_DEF 375 | #undef WRAP_METH_NAME 376 | 377 | #define WRAP_METH_NAME SetVertexShaderConstantF 378 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ UINT v1, CONST float* v2, UINT v3) WRAP_CALLTHRU_V3 CUSTOM_ENDLINE_DEF 379 | #undef WRAP_METH_NAME 380 | 381 | #define WRAP_METH_NAME GetVertexShaderConstantF 382 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ UINT v1, float* v2, UINT v3) WRAP_CALLTHRU_V3 CUSTOM_ENDLINE_DEF 383 | #undef WRAP_METH_NAME 384 | 385 | #define WRAP_METH_NAME SetVertexShaderConstantI 386 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ UINT v1, CONST int* v2, UINT v3) WRAP_CALLTHRU_V3 CUSTOM_ENDLINE_DEF 387 | #undef WRAP_METH_NAME 388 | 389 | #define WRAP_METH_NAME GetVertexShaderConstantI 390 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ UINT v1, int* v2, UINT v3) WRAP_CALLTHRU_V3 CUSTOM_ENDLINE_DEF 391 | #undef WRAP_METH_NAME 392 | 393 | #define WRAP_METH_NAME SetVertexShaderConstantB 394 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ UINT v1, CONST BOOL* v2, UINT v3) WRAP_CALLTHRU_V3 CUSTOM_ENDLINE_DEF 395 | #undef WRAP_METH_NAME 396 | 397 | #define WRAP_METH_NAME GetVertexShaderConstantB 398 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ UINT v1, BOOL* v2, UINT v3) WRAP_CALLTHRU_V3 CUSTOM_ENDLINE_DEF 399 | #undef WRAP_METH_NAME 400 | 401 | #define WRAP_METH_NAME SetStreamSource 402 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ UINT v1, IDirect3DVertexBuffer9* v2, UINT v3, UINT v4) WRAP_CALLTHRU_V4 CUSTOM_ENDLINE_DEF 403 | #undef WRAP_METH_NAME 404 | 405 | #define WRAP_METH_NAME GetStreamSource 406 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ UINT v1, IDirect3DVertexBuffer9** v2, UINT* v3, UINT* v4) WRAP_CALLTHRU_V4 CUSTOM_ENDLINE_DEF 407 | #undef WRAP_METH_NAME 408 | 409 | #define WRAP_METH_NAME SetStreamSourceFreq 410 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ UINT v1, UINT v2) WRAP_CALLTHRU_V2 CUSTOM_ENDLINE_DEF 411 | #undef WRAP_METH_NAME 412 | 413 | #define WRAP_METH_NAME GetStreamSourceFreq 414 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ UINT v1, UINT* v2) WRAP_CALLTHRU_V2 CUSTOM_ENDLINE_DEF 415 | #undef WRAP_METH_NAME 416 | 417 | #define WRAP_METH_NAME SetIndices 418 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ IDirect3DIndexBuffer9* v1) WRAP_CALLTHRU_V1 CUSTOM_ENDLINE_DEF 419 | #undef WRAP_METH_NAME 420 | 421 | #define WRAP_METH_NAME GetIndices 422 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ IDirect3DIndexBuffer9** v1) WRAP_CALLTHRU_V1 CUSTOM_ENDLINE_DEF 423 | #undef WRAP_METH_NAME 424 | 425 | #define WRAP_METH_NAME CreatePixelShader 426 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ CONST DWORD* v1, IDirect3DPixelShader9** v2) WRAP_CALLTHRU_V2 CUSTOM_ENDLINE_DEF 427 | #undef WRAP_METH_NAME 428 | 429 | #define WRAP_METH_NAME SetPixelShader 430 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ IDirect3DPixelShader9* v1) WRAP_CALLTHRU_V1 CUSTOM_ENDLINE_DEF 431 | #undef WRAP_METH_NAME 432 | 433 | #define WRAP_METH_NAME GetPixelShader 434 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ IDirect3DPixelShader9** v1) WRAP_CALLTHRU_V1 CUSTOM_ENDLINE_DEF 435 | #undef WRAP_METH_NAME 436 | 437 | #define WRAP_METH_NAME SetPixelShaderConstantF 438 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ UINT v1, CONST float* v2, UINT v3) WRAP_CALLTHRU_V3 CUSTOM_ENDLINE_DEF 439 | #undef WRAP_METH_NAME 440 | 441 | #define WRAP_METH_NAME GetPixelShaderConstantF 442 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ UINT v1, float* v2, UINT v3) WRAP_CALLTHRU_V3 CUSTOM_ENDLINE_DEF 443 | #undef WRAP_METH_NAME 444 | 445 | #define WRAP_METH_NAME SetPixelShaderConstantI 446 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ UINT v1, CONST int* v2, UINT v3) WRAP_CALLTHRU_V3 CUSTOM_ENDLINE_DEF 447 | #undef WRAP_METH_NAME 448 | 449 | #define WRAP_METH_NAME GetPixelShaderConstantI 450 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ UINT v1, int* v2, UINT v3) WRAP_CALLTHRU_V3 CUSTOM_ENDLINE_DEF 451 | #undef WRAP_METH_NAME 452 | 453 | #define WRAP_METH_NAME SetPixelShaderConstantB 454 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ UINT v1, CONST BOOL* v2, UINT v3) WRAP_CALLTHRU_V3 CUSTOM_ENDLINE_DEF 455 | #undef WRAP_METH_NAME 456 | 457 | #define WRAP_METH_NAME GetPixelShaderConstantB 458 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ UINT v1, BOOL* v2, UINT v3) WRAP_CALLTHRU_V3 CUSTOM_ENDLINE_DEF 459 | #undef WRAP_METH_NAME 460 | 461 | #define WRAP_METH_NAME DrawRectPatch 462 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ UINT v1, CONST float* v2, CONST D3DRECTPATCH_INFO* v3) WRAP_CALLTHRU_V3 CUSTOM_ENDLINE_DEF 463 | #undef WRAP_METH_NAME 464 | 465 | #define WRAP_METH_NAME DrawTriPatch 466 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ UINT v1, CONST float* v2, CONST D3DTRIPATCH_INFO* v3) WRAP_CALLTHRU_V3 CUSTOM_ENDLINE_DEF 467 | #undef WRAP_METH_NAME 468 | 469 | #define WRAP_METH_NAME DeletePatch 470 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ UINT v1) WRAP_CALLTHRU_V1 CUSTOM_ENDLINE_DEF 471 | #undef WRAP_METH_NAME 472 | 473 | #define WRAP_METH_NAME CreateQuery 474 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ D3DQUERYTYPE v1, IDirect3DQuery9** v2) WRAP_CALLTHRU_V2 CUSTOM_ENDLINE_DEF 475 | #undef WRAP_METH_NAME -------------------------------------------------------------------------------- /addon/com_wrapper_dxgi_methods.inc: -------------------------------------------------------------------------------- 1 | //IUnknown 2 | 3 | #define WRAP_METH_NAME QueryInterface 4 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ REFIID v1, void** v2) WRAP_CALLTHRU_V2 CUSTOM_ENDLINE_DEF 5 | #undef WRAP_METH_NAME 6 | 7 | #define WRAP_METH_NAME AddRef 8 | WRAPPED_METH_DECL_(ULONG, WRAP_METH_NAME)(WRAPPED_THIS) WRAP_CALLTHRU_V0 CUSTOM_ENDLINE_DEF 9 | #undef WRAP_METH_NAME 10 | 11 | #define WRAP_METH_NAME Release 12 | WRAPPED_METH_DECL_(ULONG, WRAP_METH_NAME)(WRAPPED_THIS) WRAP_CALLTHRU_V0 CUSTOM_ENDLINE_DEF 13 | #undef WRAP_METH_NAME 14 | 15 | // obj 16 | #define WRAP_METH_NAME SetPrivateData 17 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 18 | /* [annotation][in] */ 19 | _In_ REFGUID v1, 20 | /* [in] */ UINT v2, 21 | /* [annotation][in] */ 22 | _In_reads_bytes_(DataSize) const void *v3) WRAP_CALLTHRU_V3 CUSTOM_ENDLINE_DEF 23 | #undef WRAP_METH_NAME 24 | 25 | #define WRAP_METH_NAME SetPrivateDataInterface 26 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 27 | /* [annotation][in] */ 28 | _In_ REFGUID v1, 29 | /* [annotation][in] */ 30 | _In_opt_ const IUnknown *v2) WRAP_CALLTHRU_V2 CUSTOM_ENDLINE_DEF 31 | #undef WRAP_METH_NAME 32 | 33 | #define WRAP_METH_NAME GetPrivateData 34 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 35 | /* [annotation][in] */ 36 | _In_ REFGUID v1, 37 | /* [annotation][out][in] */ 38 | _Inout_ UINT *v2, 39 | /* [annotation][out] */ 40 | _Out_writes_bytes_(*pDataSize) void *v3) WRAP_CALLTHRU_V3 CUSTOM_ENDLINE_DEF 41 | #undef WRAP_METH_NAME 42 | 43 | #define WRAP_METH_NAME GetParent 44 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 45 | /* [annotation][in] */ 46 | _In_ REFIID v1, 47 | /* [annotation][retval][out] */ 48 | _COM_Outptr_ void **v2) WRAP_CALLTHRU_V2 CUSTOM_ENDLINE_DEF 49 | #undef WRAP_METH_NAME 50 | 51 | // dxgi 52 | 53 | #define WRAP_METH_NAME EnumAdapters 54 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 55 | /* [in] */ UINT v1, 56 | /* [annotation][out] */ 57 | _COM_Outptr_ IDXGIAdapter **v2) WRAP_CALLTHRU_V2 CUSTOM_ENDLINE_DEF 58 | #undef WRAP_METH_NAME 59 | 60 | #define WRAP_METH_NAME MakeWindowAssociation 61 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 62 | HWND v1, 63 | UINT v2) WRAP_CALLTHRU_V2 CUSTOM_ENDLINE_DEF 64 | #undef WRAP_METH_NAME 65 | 66 | #define WRAP_METH_NAME GetWindowAssociation 67 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 68 | /* [annotation][out] */ 69 | _Out_ HWND *v1) WRAP_CALLTHRU_V1 CUSTOM_ENDLINE_DEF 70 | #undef WRAP_METH_NAME 71 | 72 | #define WRAP_METH_NAME CreateSwapChain 73 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 74 | /* [annotation][in] */ 75 | _In_ IUnknown *v1, 76 | /* [annotation][in] */ 77 | _In_ DXGI_SWAP_CHAIN_DESC *v2, 78 | /* [annotation][out] */ 79 | _COM_Outptr_ IDXGISwapChain **v3) WRAP_CALLTHRU_V3 CUSTOM_ENDLINE_DEF 80 | #undef WRAP_METH_NAME 81 | 82 | #define WRAP_METH_NAME CreateSoftwareAdapter 83 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 84 | /* [in] */ HMODULE v1, 85 | /* [annotation][out] */ 86 | _COM_Outptr_ IDXGIAdapter **v2) WRAP_CALLTHRU_V2 CUSTOM_ENDLINE_DEF 87 | #undef WRAP_METH_NAME 88 | 89 | // dxgi1 90 | 91 | #define WRAP_METH_NAME EnumAdapters1 92 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 93 | /* [in] */ UINT v1, 94 | /* [annotation][out] */ 95 | _COM_Outptr_ IDXGIAdapter1 **v2) WRAP_CALLTHRU_V2 CUSTOM_ENDLINE_DEF 96 | #undef WRAP_METH_NAME 97 | 98 | #define WRAP_METH_NAME IsCurrent 99 | WRAPPED_METH_DECL_(BOOL, WRAP_METH_NAME)(WRAPPED_THIS) WRAP_CALLTHRU_V0 CUSTOM_ENDLINE_DEF 100 | #undef WRAP_METH_NAME 101 | 102 | // dxgi2 103 | 104 | #define WRAP_METH_NAME IsWindowedStereoEnabled 105 | WRAPPED_METH_DECL_(BOOL, WRAP_METH_NAME)(WRAPPED_THIS) WRAP_CALLTHRU_V0 CUSTOM_ENDLINE_DEF 106 | #undef WRAP_METH_NAME 107 | 108 | #define WRAP_METH_NAME CreateSwapChainForHwnd 109 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 110 | /* [annotation][in] */ 111 | _In_ IUnknown *v1, 112 | /* [annotation][in] */ 113 | _In_ HWND v2, 114 | /* [annotation][in] */ 115 | _In_ const DXGI_SWAP_CHAIN_DESC1 *v3, 116 | /* [annotation][in] */ 117 | _In_opt_ const DXGI_SWAP_CHAIN_FULLSCREEN_DESC *v4, 118 | /* [annotation][in] */ 119 | _In_opt_ IDXGIOutput *v5, 120 | /* [annotation][out] */ 121 | _COM_Outptr_ IDXGISwapChain1 **v6) WRAP_CALLTHRU_V6 CUSTOM_ENDLINE_DEF 122 | #undef WRAP_METH_NAME 123 | 124 | #define WRAP_METH_NAME CreateSwapChainForCoreWindow 125 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 126 | /* [annotation][in] */ 127 | _In_ IUnknown *v1, 128 | /* [annotation][in] */ 129 | _In_ IUnknown *v2, 130 | /* [annotation][in] */ 131 | _In_ const DXGI_SWAP_CHAIN_DESC1 *v3, 132 | /* [annotation][in] */ 133 | _In_opt_ IDXGIOutput *v4, 134 | /* [annotation][out] */ 135 | _COM_Outptr_ IDXGISwapChain1 **v5) WRAP_CALLTHRU_V5 CUSTOM_ENDLINE_DEF 136 | #undef WRAP_METH_NAME 137 | 138 | #define WRAP_METH_NAME GetSharedResourceAdapterLuid 139 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 140 | /* [annotation] */ 141 | _In_ HANDLE v1, 142 | /* [annotation] */ 143 | _Out_ LUID *v2) WRAP_CALLTHRU_V2 CUSTOM_ENDLINE_DEF 144 | #undef WRAP_METH_NAME 145 | 146 | #define WRAP_METH_NAME RegisterStereoStatusWindow 147 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 148 | /* [annotation][in] */ 149 | _In_ HWND v1, 150 | /* [annotation][in] */ 151 | _In_ UINT v2, 152 | /* [annotation][out] */ 153 | _Out_ DWORD *v3) WRAP_CALLTHRU_V3 CUSTOM_ENDLINE_DEF 154 | #undef WRAP_METH_NAME 155 | 156 | #define WRAP_METH_NAME RegisterStereoStatusEvent 157 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 158 | /* [annotation][in] */ 159 | _In_ HANDLE v1, 160 | /* [annotation][out] */ 161 | _Out_ DWORD *v2) WRAP_CALLTHRU_V2 CUSTOM_ENDLINE_DEF 162 | #undef WRAP_METH_NAME 163 | 164 | #define WRAP_METH_NAME UnregisterStereoStatus 165 | WRAPPED_METH_DECL_(void, WRAP_METH_NAME)( WRAPPED_THIS_ 166 | /* [annotation][in] */ 167 | _In_ DWORD v1) WRAP_CALLTHRU_V1_ CUSTOM_ENDLINE_DEF 168 | #undef WRAP_METH_NAME 169 | 170 | #define WRAP_METH_NAME RegisterOcclusionStatusWindow 171 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 172 | /* [annotation][in] */ 173 | _In_ HWND v1, 174 | /* [annotation][in] */ 175 | _In_ UINT v2, 176 | /* [annotation][out] */ 177 | _Out_ DWORD *v3) WRAP_CALLTHRU_V3 CUSTOM_ENDLINE_DEF 178 | #undef WRAP_METH_NAME 179 | 180 | #define WRAP_METH_NAME RegisterOcclusionStatusEvent 181 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 182 | /* [annotation][in] */ 183 | _In_ HANDLE v1, 184 | /* [annotation][out] */ 185 | _Out_ DWORD *v2) WRAP_CALLTHRU_V2 CUSTOM_ENDLINE_DEF 186 | #undef WRAP_METH_NAME 187 | 188 | #define WRAP_METH_NAME UnregisterOcclusionStatus 189 | WRAPPED_METH_DECL_(void, WRAP_METH_NAME)( WRAPPED_THIS_ 190 | /* [annotation][in] */ 191 | _In_ DWORD v1) WRAP_CALLTHRU_V1_ CUSTOM_ENDLINE_DEF 192 | #undef WRAP_METH_NAME 193 | 194 | #define WRAP_METH_NAME CreateSwapChainForComposition 195 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 196 | /* [annotation][in] */ 197 | _In_ IUnknown *v1, 198 | /* [annotation][in] */ 199 | _In_ const DXGI_SWAP_CHAIN_DESC1 *v2, 200 | /* [annotation][in] */ 201 | _In_opt_ IDXGIOutput *v3, 202 | /* [annotation][out] */ 203 | _COM_Outptr_ IDXGISwapChain1 **v4) WRAP_CALLTHRU_V4 CUSTOM_ENDLINE_DEF 204 | #undef WRAP_METH_NAME 205 | 206 | // dxgi3 207 | 208 | #define WRAP_METH_NAME GetCreationFlags 209 | WRAPPED_METH_DECL_(UINT, WRAP_METH_NAME)(WRAPPED_THIS) WRAP_CALLTHRU_V0 CUSTOM_ENDLINE_DEF 210 | #undef WRAP_METH_NAME 211 | 212 | // dxgi4 213 | 214 | #define WRAP_METH_NAME EnumAdapterByLuid 215 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 216 | /* [annotation] */ 217 | _In_ LUID v1, 218 | /* [annotation] */ 219 | _In_ REFIID v2, 220 | /* [annotation] */ 221 | _COM_Outptr_ void **v3) WRAP_CALLTHRU_V3 CUSTOM_ENDLINE_DEF 222 | #undef WRAP_METH_NAME 223 | 224 | #define WRAP_METH_NAME EnumWarpAdapter 225 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 226 | /* [annotation] */ 227 | _In_ REFIID v1, 228 | /* [annotation] */ 229 | _COM_Outptr_ void **v2) WRAP_CALLTHRU_V2 CUSTOM_ENDLINE_DEF 230 | #undef WRAP_METH_NAME 231 | 232 | // dxgi5 233 | 234 | #define WRAP_METH_NAME CheckFeatureSupport 235 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 236 | DXGI_FEATURE v1, 237 | /* [annotation] */ 238 | _Inout_updates_bytes_(FeatureSupportDataSize) void *v2, 239 | UINT v3) WRAP_CALLTHRU_V3 CUSTOM_ENDLINE_DEF 240 | #undef WRAP_METH_NAME 241 | -------------------------------------------------------------------------------- /addon/com_wrapper_method_dcl.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "stdafx.h" 4 | 5 | #define CUSTOM_ENDLINE_DEF ; 6 | 7 | #define WRAPPED_METH_PREFIX(b) wrap_pass_dev_##b 8 | #include "com_wrapper_dev_methods.inc" 9 | #undef WRAPPED_METH_PREFIX 10 | 11 | #define WRAPPED_METH_PREFIX(b) wrap_pre_dev_##b 12 | #include "com_wrapper_dev_methods.inc" 13 | #undef WRAPPED_METH_PREFIX 14 | 15 | #define WRAPPED_METH_PREFIX(b) wrap_post_dev_##b 16 | #include "com_wrapper_dev_methods.inc" 17 | #undef WRAPPED_METH_PREFIX 18 | 19 | #define WRAPPED_METH_PREFIX(b) wrap_prepost_dev_##b 20 | #include "com_wrapper_dev_methods.inc" 21 | #undef WRAPPED_METH_PREFIX 22 | 23 | #define WRAPPED_METH_PREFIX(b) wrap_pass_obj_##b 24 | #include "com_wrapper_obj_methods.inc" 25 | #undef WRAPPED_METH_PREFIX 26 | 27 | #define WRAPPED_METH_PREFIX(b) wrap_pre_obj_##b 28 | #include "com_wrapper_obj_methods.inc" 29 | #undef WRAPPED_METH_PREFIX 30 | 31 | #define WRAPPED_METH_PREFIX(b) wrap_post_obj_##b 32 | #include "com_wrapper_obj_methods.inc" 33 | #undef WRAPPED_METH_PREFIX 34 | 35 | #define WRAPPED_METH_PREFIX(b) wrap_prepost_obj_##b 36 | #include "com_wrapper_obj_methods.inc" 37 | #undef WRAPPED_METH_PREFIX 38 | 39 | #define WRAPPED_METH_PREFIX(b) wrap_pass_dev11_##b 40 | #include "com_wrapper_dev11_methods.inc" 41 | #undef WRAPPED_METH_PREFIX 42 | 43 | #define WRAPPED_METH_PREFIX(b) wrap_pre_dev11_##b 44 | #include "com_wrapper_dev11_methods.inc" 45 | #undef WRAPPED_METH_PREFIX 46 | 47 | #define WRAPPED_METH_PREFIX(b) wrap_post_dev11_##b 48 | #include "com_wrapper_dev11_methods.inc" 49 | #undef WRAPPED_METH_PREFIX 50 | 51 | #define WRAPPED_METH_PREFIX(b) wrap_prepost_dev11_##b 52 | #include "com_wrapper_dev11_methods.inc" 53 | #undef WRAPPED_METH_PREFIX 54 | 55 | #define WRAPPED_METH_PREFIX(b) wrap_pass_swc_##b 56 | #include "com_wrapper_swc_methods.inc" 57 | #undef WRAPPED_METH_PREFIX 58 | 59 | #define WRAPPED_METH_PREFIX(b) wrap_pre_swc_##b 60 | #include "com_wrapper_swc_methods.inc" 61 | #undef WRAPPED_METH_PREFIX 62 | 63 | #define WRAPPED_METH_PREFIX(b) wrap_post_swc_##b 64 | #include "com_wrapper_swc_methods.inc" 65 | #undef WRAPPED_METH_PREFIX 66 | 67 | #define WRAPPED_METH_PREFIX(b) wrap_prepost_swc_##b 68 | #include "com_wrapper_swc_methods.inc" 69 | #undef WRAPPED_METH_PREFIX 70 | 71 | #define WRAPPED_METH_PREFIX(b) wrap_pass_dxgi_##b 72 | #include "com_wrapper_dxgi_methods.inc" 73 | #undef WRAPPED_METH_PREFIX 74 | 75 | #define WRAPPED_METH_PREFIX(b) wrap_pre_dxgi_##b 76 | #include "com_wrapper_dxgi_methods.inc" 77 | #undef WRAPPED_METH_PREFIX 78 | 79 | #define WRAPPED_METH_PREFIX(b) wrap_post_dxgi_##b 80 | #include "com_wrapper_dxgi_methods.inc" 81 | #undef WRAPPED_METH_PREFIX 82 | 83 | #define WRAPPED_METH_PREFIX(b) wrap_prepost_dxgi_##b 84 | #include "com_wrapper_dxgi_methods.inc" 85 | #undef WRAPPED_METH_PREFIX 86 | 87 | #undef CUSTOM_ENDLINE_DEF 88 | -------------------------------------------------------------------------------- /addon/com_wrapper_method_impl.cpp: -------------------------------------------------------------------------------- 1 | #include "stdafx.h" 2 | 3 | #define CUSTOM_ENDLINE_DEF 4 | 5 | #define CONVERT_TO_METH_NAME(a,b) a##b 6 | #undef WRAPPED_METH_DECL_ 7 | #define WRAPPED_METH_DECL_(a,b) a WRAPPED_METH_PREFIX(b) 8 | 9 | #undef WRAP_CALLTHRU_V0 10 | #undef WRAP_CALLTHRU_V1 11 | #undef WRAP_CALLTHRU_V2 12 | #undef WRAP_CALLTHRU_V3 13 | #undef WRAP_CALLTHRU_V4 14 | #undef WRAP_CALLTHRU_V5 15 | #undef WRAP_CALLTHRU_V6 16 | #undef WRAP_CALLTHRU_V7 17 | #undef WRAP_CALLTHRU_V8 18 | #undef WRAP_CALLTHRU_V9 19 | #undef WRAP_CALLTHRU_V10 20 | #undef WRAP_CALLTHRU_V11 21 | #undef WRAP_CALLTHRU_V12 22 | 23 | #undef WRAP_CALLTHRU_V0_ 24 | #undef WRAP_CALLTHRU_V1_ 25 | #undef WRAP_CALLTHRU_V2_ 26 | #undef WRAP_CALLTHRU_V3_ 27 | #undef WRAP_CALLTHRU_V4_ 28 | #undef WRAP_CALLTHRU_V5_ 29 | #undef WRAP_CALLTHRU_V6_ 30 | #undef WRAP_CALLTHRU_V7_ 31 | #undef WRAP_CALLTHRU_V8_ 32 | #undef WRAP_CALLTHRU_V9_ 33 | #undef WRAP_CALLTHRU_V10_ 34 | #undef WRAP_CALLTHRU_V11_ 35 | #undef WRAP_CALLTHRU_V12_ 36 | 37 | ////////////////// 38 | 39 | #define WRAP_CALLTHRU_V0 { WRAP_CALLTHRU_PRE_IMPL(WRAP_METH_NAME, &_this); auto ret = WRAPPED_THIS_PREFIX -> WRAP_METH_NAME (); WRAP_CALLTHRU_POST_IMPL(WRAP_METH_NAME, &_this); return ret; } 40 | #define WRAP_CALLTHRU_V1 { WRAP_CALLTHRU_PRE_IMPL(WRAP_METH_NAME, &_this); auto ret = WRAPPED_THIS_PREFIX -> WRAP_METH_NAME (v1); WRAP_CALLTHRU_POST_IMPL(WRAP_METH_NAME, &_this); return ret; } 41 | #define WRAP_CALLTHRU_V2 { WRAP_CALLTHRU_PRE_IMPL(WRAP_METH_NAME, &_this); auto ret = WRAPPED_THIS_PREFIX -> WRAP_METH_NAME (v1,v2); WRAP_CALLTHRU_POST_IMPL(WRAP_METH_NAME, &_this); return ret; } 42 | #define WRAP_CALLTHRU_V3 { WRAP_CALLTHRU_PRE_IMPL(WRAP_METH_NAME, &_this); auto ret = WRAPPED_THIS_PREFIX -> WRAP_METH_NAME (v1,v2,v3); WRAP_CALLTHRU_POST_IMPL(WRAP_METH_NAME, &_this); return ret; } 43 | #define WRAP_CALLTHRU_V4 { WRAP_CALLTHRU_PRE_IMPL(WRAP_METH_NAME, &_this); auto ret = WRAPPED_THIS_PREFIX -> WRAP_METH_NAME (v1,v2,v3,v4); WRAP_CALLTHRU_POST_IMPL(WRAP_METH_NAME, &_this); return ret; } 44 | #define WRAP_CALLTHRU_V5 { WRAP_CALLTHRU_PRE_IMPL(WRAP_METH_NAME, &_this); auto ret = WRAPPED_THIS_PREFIX -> WRAP_METH_NAME (v1,v2,v3,v4,v5); WRAP_CALLTHRU_POST_IMPL(WRAP_METH_NAME, &_this); return ret; } 45 | #define WRAP_CALLTHRU_V6 { WRAP_CALLTHRU_PRE_IMPL(WRAP_METH_NAME, &_this); auto ret = WRAPPED_THIS_PREFIX -> WRAP_METH_NAME (v1,v2,v3,v4,v5,v6); WRAP_CALLTHRU_POST_IMPL(WRAP_METH_NAME, &_this); return ret; } 46 | #define WRAP_CALLTHRU_V7 { WRAP_CALLTHRU_PRE_IMPL(WRAP_METH_NAME, &_this); auto ret = WRAPPED_THIS_PREFIX -> WRAP_METH_NAME (v1,v2,v3,v4,v5,v6,v7); WRAP_CALLTHRU_POST_IMPL(WRAP_METH_NAME, &_this); return ret; } 47 | #define WRAP_CALLTHRU_V8 { WRAP_CALLTHRU_PRE_IMPL(WRAP_METH_NAME, &_this); auto ret = WRAPPED_THIS_PREFIX -> WRAP_METH_NAME (v1,v2,v3,v4,v5,v6,v7,v8); WRAP_CALLTHRU_POST_IMPL(WRAP_METH_NAME, &_this); return ret; } 48 | #define WRAP_CALLTHRU_V9 { WRAP_CALLTHRU_PRE_IMPL(WRAP_METH_NAME, &_this); auto ret = WRAPPED_THIS_PREFIX -> WRAP_METH_NAME (v1,v2,v3,v4,v5,v6,v7,v8,v9); WRAP_CALLTHRU_POST_IMPL(WRAP_METH_NAME, &_this); return ret; } 49 | #define WRAP_CALLTHRU_V10 { WRAP_CALLTHRU_PRE_IMPL(WRAP_METH_NAME, &_this); auto ret = WRAPPED_THIS_PREFIX -> WRAP_METH_NAME (v1,v2,v3,v4,v5,v6,v7,v8,v9,v10); WRAP_CALLTHRU_POST_IMPL(WRAP_METH_NAME, &_this); return ret; } 50 | #define WRAP_CALLTHRU_V11 { WRAP_CALLTHRU_PRE_IMPL(WRAP_METH_NAME, &_this); auto ret = WRAPPED_THIS_PREFIX -> WRAP_METH_NAME (v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11); WRAP_CALLTHRU_POST_IMPL(WRAP_METH_NAME, &_this); return ret; } 51 | #define WRAP_CALLTHRU_V12 { WRAP_CALLTHRU_PRE_IMPL(WRAP_METH_NAME, &_this); auto ret = WRAPPED_THIS_PREFIX -> WRAP_METH_NAME (v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12); WRAP_CALLTHRU_POST_IMPL(WRAP_METH_NAME, &_this); return ret; } 52 | 53 | #define WRAP_CALLTHRU_V0_ { WRAP_CALLTHRU_PRE_IMPL(WRAP_METH_NAME, &_this); WRAPPED_THIS_PREFIX -> WRAP_METH_NAME (); WRAP_CALLTHRU_POST_IMPL_(WRAP_METH_NAME, &_this); } 54 | #define WRAP_CALLTHRU_V1_ { WRAP_CALLTHRU_PRE_IMPL(WRAP_METH_NAME, &_this); WRAPPED_THIS_PREFIX -> WRAP_METH_NAME (v1); WRAP_CALLTHRU_POST_IMPL_(WRAP_METH_NAME, &_this); } 55 | #define WRAP_CALLTHRU_V2_ { WRAP_CALLTHRU_PRE_IMPL(WRAP_METH_NAME, &_this); WRAPPED_THIS_PREFIX -> WRAP_METH_NAME (v1,v2); WRAP_CALLTHRU_POST_IMPL_(WRAP_METH_NAME, &_this); } 56 | #define WRAP_CALLTHRU_V3_ { WRAP_CALLTHRU_PRE_IMPL(WRAP_METH_NAME, &_this); WRAPPED_THIS_PREFIX -> WRAP_METH_NAME (v1,v2,v3); WRAP_CALLTHRU_POST_IMPL_(WRAP_METH_NAME, &_this); } 57 | #define WRAP_CALLTHRU_V4_ { WRAP_CALLTHRU_PRE_IMPL(WRAP_METH_NAME, &_this); WRAPPED_THIS_PREFIX -> WRAP_METH_NAME (v1,v2,v3,v4); WRAP_CALLTHRU_POST_IMPL_(WRAP_METH_NAME, &_this); } 58 | #define WRAP_CALLTHRU_V5_ { WRAP_CALLTHRU_PRE_IMPL(WRAP_METH_NAME, &_this); WRAPPED_THIS_PREFIX -> WRAP_METH_NAME (v1,v2,v3,v4,v5); WRAP_CALLTHRU_POST_IMPL_(WRAP_METH_NAME, &_this); } 59 | #define WRAP_CALLTHRU_V6_ { WRAP_CALLTHRU_PRE_IMPL(WRAP_METH_NAME, &_this); WRAPPED_THIS_PREFIX -> WRAP_METH_NAME (v1,v2,v3,v4,v5,v6); WRAP_CALLTHRU_POST_IMPL_(WRAP_METH_NAME, &_this); } 60 | #define WRAP_CALLTHRU_V7_ { WRAP_CALLTHRU_PRE_IMPL(WRAP_METH_NAME, &_this); WRAPPED_THIS_PREFIX -> WRAP_METH_NAME (v1,v2,v3,v4,v5,v6,v7); WRAP_CALLTHRU_POST_IMPL_(WRAP_METH_NAME, &_this); } 61 | #define WRAP_CALLTHRU_V8_ { WRAP_CALLTHRU_PRE_IMPL(WRAP_METH_NAME, &_this); WRAPPED_THIS_PREFIX -> WRAP_METH_NAME (v1,v2,v3,v4,v5,v6,v7,v8); WRAP_CALLTHRU_POST_IMPL_(WRAP_METH_NAME, &_this); } 62 | #define WRAP_CALLTHRU_V9_ { WRAP_CALLTHRU_PRE_IMPL(WRAP_METH_NAME, &_this); WRAPPED_THIS_PREFIX -> WRAP_METH_NAME (v1,v2,v3,v4,v5,v6,v7,v8,v9); WRAP_CALLTHRU_POST_IMPL_(WRAP_METH_NAME, &_this); } 63 | #define WRAP_CALLTHRU_V10_ { WRAP_CALLTHRU_PRE_IMPL(WRAP_METH_NAME, &_this); WRAPPED_THIS_PREFIX -> WRAP_METH_NAME (v1,v2,v3,v4,v5,v6,v7,v8,v9,v10); WRAP_CALLTHRU_POST_IMPL_(WRAP_METH_NAME, &_this); } 64 | #define WRAP_CALLTHRU_V11_ { WRAP_CALLTHRU_PRE_IMPL(WRAP_METH_NAME, &_this); WRAPPED_THIS_PREFIX -> WRAP_METH_NAME (v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11); WRAP_CALLTHRU_POST_IMPL_(WRAP_METH_NAME, &_this); } 65 | #define WRAP_CALLTHRU_V12_ { WRAP_CALLTHRU_PRE_IMPL(WRAP_METH_NAME, &_this); WRAPPED_THIS_PREFIX -> WRAP_METH_NAME (v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12); WRAP_CALLTHRU_POST_IMPL_(WRAP_METH_NAME, &_this); } 66 | 67 | #define WRAP_CALLTHRU_PRE_IMPL(a,b) 68 | #define WRAP_CALLTHRU_POST_IMPL_(a,b) 69 | #define WRAP_CALLTHRU_POST_IMPL(a,b) 70 | 71 | #define WRAPPED_THIS_PREFIX _this->orig_dev 72 | #define WRAPPED_METH_PREFIX(b) wrap_pass_dev_##b 73 | #include "com_wrapper_dev_methods.inc" 74 | #undef WRAPPED_METH_PREFIX 75 | #undef WRAPPED_THIS_PREFIX 76 | 77 | #define WRAPPED_THIS_PREFIX _this->orig_obj 78 | #define WRAPPED_METH_PREFIX(b) wrap_pass_obj_##b 79 | #include "com_wrapper_obj_methods.inc" 80 | #undef WRAPPED_METH_PREFIX 81 | #undef WRAPPED_THIS_PREFIX 82 | 83 | #define WRAPPED_THIS_PREFIX _this->orig_dev11 84 | #define WRAPPED_METH_PREFIX(b) wrap_pass_dev11_##b 85 | #include "com_wrapper_dev11_methods.inc" 86 | #undef WRAPPED_METH_PREFIX 87 | #undef WRAPPED_THIS_PREFIX 88 | 89 | #define WRAPPED_THIS_PREFIX _this->orig_swc 90 | #define WRAPPED_METH_PREFIX(b) wrap_pass_swc_##b 91 | #include "com_wrapper_swc_methods.inc" 92 | #undef WRAPPED_METH_PREFIX 93 | #undef WRAPPED_THIS_PREFIX 94 | 95 | #define WRAPPED_THIS_PREFIX _this->orig_dxgi 96 | #define WRAPPED_METH_PREFIX(b) wrap_pass_dxgi_##b 97 | #include "com_wrapper_dxgi_methods.inc" 98 | #undef WRAPPED_METH_PREFIX 99 | #undef WRAPPED_THIS_PREFIX 100 | 101 | #undef WRAP_CALLTHRU_PRE_IMPL 102 | #undef WRAP_CALLTHRU_POST_IMPL 103 | #undef WRAP_CALLTHRU_POST_IMPL_ 104 | 105 | #define WRAP_CALLTHRU_PRE_IMPL(a,b) wrap_InvokeEvent(CONVERT_TO_METH_NAME(METH_DEV_,a), 1, b, NULL) 106 | #define WRAP_CALLTHRU_POST_IMPL_(a,b) 107 | #define WRAP_CALLTHRU_POST_IMPL(a,b) 108 | #define WRAPPED_THIS_PREFIX _this->orig_dev 109 | #define WRAPPED_METH_PREFIX(b) wrap_pre_dev_##b 110 | #include "com_wrapper_dev_methods.inc" 111 | #undef WRAPPED_METH_PREFIX 112 | #undef WRAPPED_THIS_PREFIX 113 | #undef WRAP_CALLTHRU_PRE_IMPL 114 | #undef WRAP_CALLTHRU_POST_IMPL 115 | #undef WRAP_CALLTHRU_POST_IMPL_ 116 | 117 | #define WRAP_CALLTHRU_PRE_IMPL(a,b) 118 | #define WRAP_CALLTHRU_POST_IMPL_(a,b) wrap_InvokeEvent(CONVERT_TO_METH_NAME(METH_DEV_,a), 0, b, NULL) 119 | #define WRAP_CALLTHRU_POST_IMPL(a,b) wrap_InvokeEvent(CONVERT_TO_METH_NAME(METH_DEV_,a), 0, b, &ret) 120 | #define WRAPPED_THIS_PREFIX _this->orig_dev 121 | #define WRAPPED_METH_PREFIX(b) wrap_post_dev_##b 122 | #include "com_wrapper_dev_methods.inc" 123 | #undef WRAPPED_METH_PREFIX 124 | #undef WRAPPED_THIS_PREFIX 125 | #undef WRAP_CALLTHRU_PRE_IMPL 126 | #undef WRAP_CALLTHRU_POST_IMPL 127 | #undef WRAP_CALLTHRU_POST_IMPL_ 128 | 129 | #define WRAP_CALLTHRU_PRE_IMPL(a,b) wrap_InvokeEvent(CONVERT_TO_METH_NAME(METH_DEV_,a), 1, b, NULL) 130 | #define WRAP_CALLTHRU_POST_IMPL_(a,b) wrap_InvokeEvent(CONVERT_TO_METH_NAME(METH_DEV_,a), 0, b, NULL) 131 | #define WRAP_CALLTHRU_POST_IMPL(a,b) wrap_InvokeEvent(CONVERT_TO_METH_NAME(METH_DEV_,a), 0, b, &ret) 132 | #define WRAPPED_THIS_PREFIX _this->orig_dev 133 | #define WRAPPED_METH_PREFIX(b) wrap_prepost_dev_##b 134 | #include "com_wrapper_dev_methods.inc" 135 | #undef WRAPPED_METH_PREFIX 136 | #undef WRAPPED_THIS_PREFIX 137 | #undef WRAP_CALLTHRU_PRE_IMPL 138 | #undef WRAP_CALLTHRU_POST_IMPL 139 | #undef WRAP_CALLTHRU_POST_IMPL_ 140 | 141 | #define WRAP_CALLTHRU_PRE_IMPL(a,b) wrap_InvokeEvent(CONVERT_TO_METH_NAME(METH_OBJ_,a), 1, b, NULL) 142 | #define WRAP_CALLTHRU_POST_IMPL_(a,b) 143 | #define WRAP_CALLTHRU_POST_IMPL(a,b) 144 | #define WRAPPED_THIS_PREFIX _this->orig_obj 145 | #define WRAPPED_METH_PREFIX(b) wrap_pre_obj_##b 146 | #include "com_wrapper_obj_methods.inc" 147 | #undef WRAPPED_METH_PREFIX 148 | #undef WRAPPED_THIS_PREFIX 149 | #undef WRAP_CALLTHRU_PRE_IMPL 150 | #undef WRAP_CALLTHRU_POST_IMPL 151 | #undef WRAP_CALLTHRU_POST_IMPL_ 152 | 153 | #define WRAP_CALLTHRU_PRE_IMPL(a,b) 154 | #define WRAP_CALLTHRU_POST_IMPL_(a,b) wrap_InvokeEvent(CONVERT_TO_METH_NAME(METH_OBJ_,a), 0, b, NULL) 155 | #define WRAP_CALLTHRU_POST_IMPL(a,b) wrap_InvokeEvent(CONVERT_TO_METH_NAME(METH_OBJ_,a), 0, b, &ret) 156 | #define WRAPPED_THIS_PREFIX _this->orig_obj 157 | #define WRAPPED_METH_PREFIX(b) wrap_post_obj_##b 158 | #include "com_wrapper_obj_methods.inc" 159 | #undef WRAPPED_METH_PREFIX 160 | #undef WRAPPED_THIS_PREFIX 161 | #undef WRAP_CALLTHRU_PRE_IMPL 162 | #undef WRAP_CALLTHRU_POST_IMPL 163 | #undef WRAP_CALLTHRU_POST_IMPL_ 164 | 165 | #define WRAP_CALLTHRU_PRE_IMPL(a,b) wrap_InvokeEvent(CONVERT_TO_METH_NAME(METH_OBJ_,a), 1, b, NULL) 166 | #define WRAP_CALLTHRU_POST_IMPL_(a,b) wrap_InvokeEvent(CONVERT_TO_METH_NAME(METH_OBJ_,a), 0, b, NULL) 167 | #define WRAP_CALLTHRU_POST_IMPL(a,b) wrap_InvokeEvent(CONVERT_TO_METH_NAME(METH_OBJ_,a), 0, b, &ret) 168 | #define WRAPPED_THIS_PREFIX _this->orig_obj 169 | #define WRAPPED_METH_PREFIX(b) wrap_prepost_obj_##b 170 | #include "com_wrapper_obj_methods.inc" 171 | #undef WRAPPED_METH_PREFIX 172 | #undef WRAPPED_THIS_PREFIX 173 | #undef WRAP_CALLTHRU_PRE_IMPL 174 | #undef WRAP_CALLTHRU_POST_IMPL 175 | #undef WRAP_CALLTHRU_POST_IMPL_ 176 | 177 | #define WRAP_CALLTHRU_PRE_IMPL(a,b) wrap_InvokeEvent(CONVERT_TO_METH_NAME(METH_DEV11_,a), 1, b, NULL) 178 | #define WRAP_CALLTHRU_POST_IMPL_(a,b) 179 | #define WRAP_CALLTHRU_POST_IMPL(a,b) 180 | #define WRAPPED_THIS_PREFIX _this->orig_dev11 181 | #define WRAPPED_METH_PREFIX(b) wrap_pre_dev11_##b 182 | #include "com_wrapper_dev11_methods.inc" 183 | #undef WRAPPED_METH_PREFIX 184 | #undef WRAPPED_THIS_PREFIX 185 | #undef WRAP_CALLTHRU_PRE_IMPL 186 | #undef WRAP_CALLTHRU_POST_IMPL 187 | #undef WRAP_CALLTHRU_POST_IMPL_ 188 | 189 | #define WRAP_CALLTHRU_PRE_IMPL(a,b) 190 | #define WRAP_CALLTHRU_POST_IMPL_(a,b) wrap_InvokeEvent(CONVERT_TO_METH_NAME(METH_DEV11_,a), 0, b, NULL) 191 | #define WRAP_CALLTHRU_POST_IMPL(a,b) wrap_InvokeEvent(CONVERT_TO_METH_NAME(METH_DEV11_,a), 0, b, &ret) 192 | #define WRAPPED_THIS_PREFIX _this->orig_dev11 193 | #define WRAPPED_METH_PREFIX(b) wrap_post_dev11_##b 194 | #include "com_wrapper_dev11_methods.inc" 195 | #undef WRAPPED_METH_PREFIX 196 | #undef WRAPPED_THIS_PREFIX 197 | #undef WRAP_CALLTHRU_PRE_IMPL 198 | #undef WRAP_CALLTHRU_POST_IMPL 199 | #undef WRAP_CALLTHRU_POST_IMPL_ 200 | 201 | #define WRAP_CALLTHRU_PRE_IMPL(a,b) wrap_InvokeEvent(CONVERT_TO_METH_NAME(METH_DEV11_,a), 1, b, NULL) 202 | #define WRAP_CALLTHRU_POST_IMPL_(a,b) wrap_InvokeEvent(CONVERT_TO_METH_NAME(METH_DEV11_,a), 0, b, NULL) 203 | #define WRAP_CALLTHRU_POST_IMPL(a,b) wrap_InvokeEvent(CONVERT_TO_METH_NAME(METH_DEV11_,a), 0, b, &ret) 204 | #define WRAPPED_THIS_PREFIX _this->orig_dev11 205 | #define WRAPPED_METH_PREFIX(b) wrap_prepost_dev11_##b 206 | #include "com_wrapper_dev11_methods.inc" 207 | #undef WRAPPED_METH_PREFIX 208 | #undef WRAPPED_THIS_PREFIX 209 | #undef WRAP_CALLTHRU_PRE_IMPL 210 | #undef WRAP_CALLTHRU_POST_IMPL 211 | #undef WRAP_CALLTHRU_POST_IMPL_ 212 | 213 | #define WRAP_CALLTHRU_PRE_IMPL(a,b) wrap_InvokeEvent(CONVERT_TO_METH_NAME(METH_SWC_,a), 1, b, NULL) 214 | #define WRAP_CALLTHRU_POST_IMPL_(a,b) 215 | #define WRAP_CALLTHRU_POST_IMPL(a,b) 216 | #define WRAPPED_THIS_PREFIX _this->orig_swc 217 | #define WRAPPED_METH_PREFIX(b) wrap_pre_swc_##b 218 | #include "com_wrapper_swc_methods.inc" 219 | #undef WRAPPED_METH_PREFIX 220 | #undef WRAPPED_THIS_PREFIX 221 | #undef WRAP_CALLTHRU_PRE_IMPL 222 | #undef WRAP_CALLTHRU_POST_IMPL 223 | #undef WRAP_CALLTHRU_POST_IMPL_ 224 | 225 | #define WRAP_CALLTHRU_PRE_IMPL(a,b) 226 | #define WRAP_CALLTHRU_POST_IMPL_(a,b) wrap_InvokeEvent(CONVERT_TO_METH_NAME(METH_SWC_,a), 0, b, NULL) 227 | #define WRAP_CALLTHRU_POST_IMPL(a,b) wrap_InvokeEvent(CONVERT_TO_METH_NAME(METH_SWC_,a), 0, b, &ret) 228 | #define WRAPPED_THIS_PREFIX _this->orig_swc 229 | #define WRAPPED_METH_PREFIX(b) wrap_post_swc_##b 230 | #include "com_wrapper_swc_methods.inc" 231 | #undef WRAPPED_METH_PREFIX 232 | #undef WRAPPED_THIS_PREFIX 233 | #undef WRAP_CALLTHRU_PRE_IMPL 234 | #undef WRAP_CALLTHRU_POST_IMPL 235 | #undef WRAP_CALLTHRU_POST_IMPL_ 236 | 237 | #define WRAP_CALLTHRU_PRE_IMPL(a,b) wrap_InvokeEvent(CONVERT_TO_METH_NAME(METH_SWC_,a), 1, b, NULL) 238 | #define WRAP_CALLTHRU_POST_IMPL_(a,b) wrap_InvokeEvent(CONVERT_TO_METH_NAME(METH_SWC_,a), 0, b, NULL) 239 | #define WRAP_CALLTHRU_POST_IMPL(a,b) wrap_InvokeEvent(CONVERT_TO_METH_NAME(METH_SWC_,a), 0, b, &ret) 240 | #define WRAPPED_THIS_PREFIX _this->orig_swc 241 | #define WRAPPED_METH_PREFIX(b) wrap_prepost_swc_##b 242 | #include "com_wrapper_swc_methods.inc" 243 | #undef WRAPPED_METH_PREFIX 244 | #undef WRAPPED_THIS_PREFIX 245 | #undef WRAP_CALLTHRU_PRE_IMPL 246 | #undef WRAP_CALLTHRU_POST_IMPL 247 | #undef WRAP_CALLTHRU_POST_IMPL_ 248 | 249 | #define WRAP_CALLTHRU_PRE_IMPL(a,b) wrap_InvokeEvent(CONVERT_TO_METH_NAME(METH_DXGI_,a), 1, b, NULL) 250 | #define WRAP_CALLTHRU_POST_IMPL_(a,b) 251 | #define WRAP_CALLTHRU_POST_IMPL(a,b) 252 | #define WRAPPED_THIS_PREFIX _this->orig_dxgi 253 | #define WRAPPED_METH_PREFIX(b) wrap_pre_dxgi_##b 254 | #include "com_wrapper_dxgi_methods.inc" 255 | #undef WRAPPED_METH_PREFIX 256 | #undef WRAPPED_THIS_PREFIX 257 | #undef WRAP_CALLTHRU_PRE_IMPL 258 | #undef WRAP_CALLTHRU_POST_IMPL 259 | #undef WRAP_CALLTHRU_POST_IMPL_ 260 | 261 | #define WRAP_CALLTHRU_PRE_IMPL(a,b) 262 | #define WRAP_CALLTHRU_POST_IMPL_(a,b) wrap_InvokeEvent(CONVERT_TO_METH_NAME(METH_DXGI_,a), 0, b, NULL) 263 | #define WRAP_CALLTHRU_POST_IMPL(a,b) wrap_InvokeEvent(CONVERT_TO_METH_NAME(METH_DXGI_,a), 0, b, &ret) 264 | #define WRAPPED_THIS_PREFIX _this->orig_dxgi 265 | #define WRAPPED_METH_PREFIX(b) wrap_post_dxgi_##b 266 | #include "com_wrapper_dxgi_methods.inc" 267 | #undef WRAPPED_METH_PREFIX 268 | #undef WRAPPED_THIS_PREFIX 269 | #undef WRAP_CALLTHRU_PRE_IMPL 270 | #undef WRAP_CALLTHRU_POST_IMPL 271 | #undef WRAP_CALLTHRU_POST_IMPL_ 272 | 273 | #define WRAP_CALLTHRU_PRE_IMPL(a,b) wrap_InvokeEvent(CONVERT_TO_METH_NAME(METH_DXGI_,a), 1, b, NULL) 274 | #define WRAP_CALLTHRU_POST_IMPL_(a,b) wrap_InvokeEvent(CONVERT_TO_METH_NAME(METH_DXGI_,a), 0, b, NULL) 275 | #define WRAP_CALLTHRU_POST_IMPL(a,b) wrap_InvokeEvent(CONVERT_TO_METH_NAME(METH_DXGI_,a), 0, b, &ret) 276 | #define WRAPPED_THIS_PREFIX _this->orig_dxgi 277 | #define WRAPPED_METH_PREFIX(b) wrap_prepost_dxgi_##b 278 | #include "com_wrapper_dxgi_methods.inc" 279 | #undef WRAPPED_METH_PREFIX 280 | #undef WRAPPED_THIS_PREFIX 281 | #undef WRAP_CALLTHRU_PRE_IMPL 282 | #undef WRAP_CALLTHRU_POST_IMPL 283 | #undef WRAP_CALLTHRU_POST_IMPL_ -------------------------------------------------------------------------------- /addon/com_wrapper_obj_methods.inc: -------------------------------------------------------------------------------- 1 | #define WRAP_METH_NAME QueryInterface 2 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ REFIID v1, void** v2) WRAP_CALLTHRU_V2 CUSTOM_ENDLINE_DEF 3 | #undef WRAP_METH_NAME 4 | 5 | #define WRAP_METH_NAME AddRef 6 | WRAPPED_METH_DECL_(ULONG, WRAP_METH_NAME)(WRAPPED_THIS) WRAP_CALLTHRU_V0 CUSTOM_ENDLINE_DEF 7 | #undef WRAP_METH_NAME 8 | 9 | #define WRAP_METH_NAME Release 10 | WRAPPED_METH_DECL_(ULONG, WRAP_METH_NAME)(WRAPPED_THIS) WRAP_CALLTHRU_V0 CUSTOM_ENDLINE_DEF 11 | #undef WRAP_METH_NAME 12 | 13 | #define WRAP_METH_NAME RegisterSoftwareDevice 14 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ void* v1) WRAP_CALLTHRU_V1 CUSTOM_ENDLINE_DEF 15 | #undef WRAP_METH_NAME 16 | 17 | #define WRAP_METH_NAME GetAdapterCount 18 | WRAPPED_METH_DECL_(UINT, WRAP_METH_NAME)(WRAPPED_THIS) WRAP_CALLTHRU_V0 CUSTOM_ENDLINE_DEF 19 | #undef WRAP_METH_NAME 20 | 21 | #define WRAP_METH_NAME GetAdapterIdentifier 22 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ UINT v1, DWORD v2, D3DADAPTER_IDENTIFIER9* v3) WRAP_CALLTHRU_V3 CUSTOM_ENDLINE_DEF 23 | #undef WRAP_METH_NAME 24 | 25 | #define WRAP_METH_NAME GetAdapterModeCount 26 | WRAPPED_METH_DECL_(UINT, WRAP_METH_NAME)(WRAPPED_THIS_ UINT v1, D3DFORMAT v2) WRAP_CALLTHRU_V2 CUSTOM_ENDLINE_DEF 27 | #undef WRAP_METH_NAME 28 | 29 | #define WRAP_METH_NAME EnumAdapterModes 30 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ UINT v1, D3DFORMAT v2, UINT v3, D3DDISPLAYMODE* v4) WRAP_CALLTHRU_V4 CUSTOM_ENDLINE_DEF 31 | #undef WRAP_METH_NAME 32 | 33 | #define WRAP_METH_NAME GetAdapterDisplayMode 34 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ UINT v1, D3DDISPLAYMODE* v2) WRAP_CALLTHRU_V2 CUSTOM_ENDLINE_DEF 35 | #undef WRAP_METH_NAME 36 | 37 | #define WRAP_METH_NAME CheckDeviceType 38 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ UINT v1, D3DDEVTYPE v2, D3DFORMAT v3, D3DFORMAT v4, BOOL v5) WRAP_CALLTHRU_V5 CUSTOM_ENDLINE_DEF 39 | #undef WRAP_METH_NAME 40 | 41 | #define WRAP_METH_NAME CheckDeviceFormat 42 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ UINT v1, D3DDEVTYPE v2, D3DFORMAT v3, DWORD v4, D3DRESOURCETYPE v5, D3DFORMAT v6) WRAP_CALLTHRU_V6 CUSTOM_ENDLINE_DEF 43 | #undef WRAP_METH_NAME 44 | 45 | #define WRAP_METH_NAME CheckDeviceMultiSampleType 46 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ UINT v1, D3DDEVTYPE v2, D3DFORMAT v3, BOOL v4, D3DMULTISAMPLE_TYPE v5, DWORD* v6) WRAP_CALLTHRU_V6 CUSTOM_ENDLINE_DEF 47 | #undef WRAP_METH_NAME 48 | 49 | #define WRAP_METH_NAME CheckDepthStencilMatch 50 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ UINT v1, D3DDEVTYPE v2, D3DFORMAT v3, D3DFORMAT v4, D3DFORMAT v5) WRAP_CALLTHRU_V5 CUSTOM_ENDLINE_DEF 51 | #undef WRAP_METH_NAME 52 | 53 | #define WRAP_METH_NAME CheckDeviceFormatConversion 54 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ UINT v1, D3DDEVTYPE v2, D3DFORMAT v3, D3DFORMAT v4) WRAP_CALLTHRU_V4 CUSTOM_ENDLINE_DEF 55 | #undef WRAP_METH_NAME 56 | 57 | #define WRAP_METH_NAME GetDeviceCaps 58 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ UINT v1, D3DDEVTYPE v2, D3DCAPS9* v3) WRAP_CALLTHRU_V3 CUSTOM_ENDLINE_DEF 59 | #undef WRAP_METH_NAME 60 | 61 | #define WRAP_METH_NAME GetAdapterMonitor 62 | WRAPPED_METH_DECL_(HMONITOR, WRAP_METH_NAME)(WRAPPED_THIS_ UINT v1) WRAP_CALLTHRU_V1 CUSTOM_ENDLINE_DEF 63 | #undef WRAP_METH_NAME 64 | 65 | #define WRAP_METH_NAME CreateDevice 66 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ UINT v1, D3DDEVTYPE v2, HWND v3, DWORD v4, D3DPRESENT_PARAMETERS* v5, IDirect3DDevice9** v6) WRAP_CALLTHRU_V6 CUSTOM_ENDLINE_DEF 67 | #undef WRAP_METH_NAME -------------------------------------------------------------------------------- /addon/com_wrapper_swc_methods.inc: -------------------------------------------------------------------------------- 1 | #define WRAP_METH_NAME QueryInterface 2 | WRAPPED_METH_DECL(WRAP_METH_NAME)(WRAPPED_THIS_ REFIID v1, void** v2) WRAP_CALLTHRU_V2 CUSTOM_ENDLINE_DEF 3 | #undef WRAP_METH_NAME 4 | 5 | #define WRAP_METH_NAME AddRef 6 | WRAPPED_METH_DECL_(ULONG, WRAP_METH_NAME)(WRAPPED_THIS) WRAP_CALLTHRU_V0 CUSTOM_ENDLINE_DEF 7 | #undef WRAP_METH_NAME 8 | 9 | #define WRAP_METH_NAME Release 10 | WRAPPED_METH_DECL_(ULONG, WRAP_METH_NAME)(WRAPPED_THIS) WRAP_CALLTHRU_V0 CUSTOM_ENDLINE_DEF 11 | #undef WRAP_METH_NAME 12 | 13 | 14 | //obj 15 | 16 | #define WRAP_METH_NAME SetPrivateData 17 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 18 | /* [annotation][in] */ 19 | _In_ REFGUID v1, 20 | /* [in] */ UINT v2, 21 | /* [annotation][in] */ 22 | _In_reads_bytes_(DataSize) const void *v3) WRAP_CALLTHRU_V3 CUSTOM_ENDLINE_DEF 23 | #undef WRAP_METH_NAME 24 | 25 | #define WRAP_METH_NAME SetPrivateDataInterface 26 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 27 | /* [annotation][in] */ 28 | _In_ REFGUID v1, 29 | /* [annotation][in] */ 30 | _In_opt_ const IUnknown *v2) WRAP_CALLTHRU_V2 CUSTOM_ENDLINE_DEF 31 | #undef WRAP_METH_NAME 32 | 33 | #define WRAP_METH_NAME GetPrivateData 34 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 35 | /* [annotation][in] */ 36 | _In_ REFGUID v1, 37 | /* [annotation][out][in] */ 38 | _Inout_ UINT *v2, 39 | /* [annotation][out] */ 40 | _Out_writes_bytes_(*pDataSize) void *v3) WRAP_CALLTHRU_V3 CUSTOM_ENDLINE_DEF 41 | #undef WRAP_METH_NAME 42 | 43 | #define WRAP_METH_NAME GetParent 44 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 45 | /* [annotation][in] */ 46 | _In_ REFIID v1, 47 | /* [annotation][retval][out] */ 48 | _COM_Outptr_ void **v2) WRAP_CALLTHRU_V2 CUSTOM_ENDLINE_DEF 49 | #undef WRAP_METH_NAME 50 | 51 | #define WRAP_METH_NAME GetDevice 52 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 53 | /* [annotation][in] */ 54 | _In_ REFIID v1, 55 | /* [annotation][retval][out] */ 56 | _COM_Outptr_ void **v2) WRAP_CALLTHRU_V2 CUSTOM_ENDLINE_DEF 57 | #undef WRAP_METH_NAME 58 | 59 | //swapchain 60 | 61 | #define WRAP_METH_NAME Present 62 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 63 | /* [in] */ UINT v1, 64 | /* [in] */ UINT v2) WRAP_CALLTHRU_V2 CUSTOM_ENDLINE_DEF 65 | #undef WRAP_METH_NAME 66 | #define WRAP_METH_NAME GetBuffer 67 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 68 | /* [in] */ UINT v1, 69 | /* [annotation][in] */ 70 | _In_ REFIID v2, 71 | /* [annotation][out][in] */ 72 | _COM_Outptr_ void **v3) WRAP_CALLTHRU_V3 CUSTOM_ENDLINE_DEF 73 | #undef WRAP_METH_NAME 74 | #define WRAP_METH_NAME SetFullscreenState 75 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 76 | /* [in] */ BOOL v1, 77 | /* [annotation][in] */ 78 | _In_opt_ IDXGIOutput *v2) WRAP_CALLTHRU_V2 CUSTOM_ENDLINE_DEF 79 | #undef WRAP_METH_NAME 80 | #define WRAP_METH_NAME GetFullscreenState 81 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 82 | /* [annotation][out] */ 83 | _Out_opt_ BOOL *v1, 84 | /* [annotation][out] */ 85 | _COM_Outptr_opt_result_maybenull_ IDXGIOutput **v2) WRAP_CALLTHRU_V2 CUSTOM_ENDLINE_DEF 86 | #undef WRAP_METH_NAME 87 | #define WRAP_METH_NAME GetDesc 88 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 89 | /* [annotation][out] */ 90 | _Out_ DXGI_SWAP_CHAIN_DESC *v1) WRAP_CALLTHRU_V1 CUSTOM_ENDLINE_DEF 91 | #undef WRAP_METH_NAME 92 | #define WRAP_METH_NAME ResizeBuffers 93 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 94 | /* [in] */ UINT v1, 95 | /* [in] */ UINT v2, 96 | /* [in] */ UINT v3, 97 | /* [in] */ DXGI_FORMAT v4, 98 | /* [in] */ UINT v5) WRAP_CALLTHRU_V5 CUSTOM_ENDLINE_DEF 99 | #undef WRAP_METH_NAME 100 | #define WRAP_METH_NAME ResizeTarget 101 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 102 | /* [annotation][in] */ 103 | _In_ const DXGI_MODE_DESC *v1) WRAP_CALLTHRU_V1 CUSTOM_ENDLINE_DEF 104 | #undef WRAP_METH_NAME 105 | #define WRAP_METH_NAME GetContainingOutput 106 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 107 | /* [annotation][out] */ 108 | _COM_Outptr_ IDXGIOutput **v1) WRAP_CALLTHRU_V1 CUSTOM_ENDLINE_DEF 109 | #undef WRAP_METH_NAME 110 | #define WRAP_METH_NAME GetFrameStatistics 111 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 112 | /* [annotation][out] */ 113 | _Out_ DXGI_FRAME_STATISTICS *v1) WRAP_CALLTHRU_V1 CUSTOM_ENDLINE_DEF 114 | #undef WRAP_METH_NAME 115 | #define WRAP_METH_NAME GetLastPresentCount 116 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 117 | /* [annotation][out] */ 118 | _Out_ UINT *v1) WRAP_CALLTHRU_V1 CUSTOM_ENDLINE_DEF 119 | #undef WRAP_METH_NAME 120 | 121 | //swapchain1 122 | 123 | #define WRAP_METH_NAME GetDesc1 124 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 125 | /* [annotation][out] */ 126 | _Out_ DXGI_SWAP_CHAIN_DESC1 *v1) WRAP_CALLTHRU_V1 CUSTOM_ENDLINE_DEF 127 | #undef WRAP_METH_NAME 128 | 129 | #define WRAP_METH_NAME GetFullscreenDesc 130 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 131 | /* [annotation][out] */ 132 | _Out_ DXGI_SWAP_CHAIN_FULLSCREEN_DESC *v1) WRAP_CALLTHRU_V1 CUSTOM_ENDLINE_DEF 133 | #undef WRAP_METH_NAME 134 | 135 | #define WRAP_METH_NAME GetHwnd 136 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 137 | /* [annotation][out] */ 138 | _Out_ HWND *v1) WRAP_CALLTHRU_V1 CUSTOM_ENDLINE_DEF 139 | #undef WRAP_METH_NAME 140 | 141 | #define WRAP_METH_NAME GetCoreWindow 142 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 143 | /* [annotation][in] */ 144 | _In_ REFIID v1, 145 | /* [annotation][out] */ 146 | _COM_Outptr_ void **v2) WRAP_CALLTHRU_V2 CUSTOM_ENDLINE_DEF 147 | #undef WRAP_METH_NAME 148 | 149 | #define WRAP_METH_NAME Present1 150 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 151 | /* [in] */ UINT v1, 152 | /* [in] */ UINT v2, 153 | /* [annotation][in] */ 154 | _In_ const DXGI_PRESENT_PARAMETERS *v3) WRAP_CALLTHRU_V3 CUSTOM_ENDLINE_DEF 155 | #undef WRAP_METH_NAME 156 | 157 | #define WRAP_METH_NAME IsTemporaryMonoSupported 158 | WRAPPED_METH_DECL_(BOOL, WRAP_METH_NAME)( WRAPPED_THIS ) WRAP_CALLTHRU_V0 CUSTOM_ENDLINE_DEF 159 | #undef WRAP_METH_NAME 160 | 161 | #define WRAP_METH_NAME GetRestrictToOutput 162 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 163 | /* [annotation][out] */ 164 | _Out_ IDXGIOutput **v1) WRAP_CALLTHRU_V1 CUSTOM_ENDLINE_DEF 165 | #undef WRAP_METH_NAME 166 | 167 | #define WRAP_METH_NAME SetBackgroundColor 168 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 169 | /* [annotation][in] */ 170 | _In_ const DXGI_RGBA *v1) WRAP_CALLTHRU_V1 CUSTOM_ENDLINE_DEF 171 | #undef WRAP_METH_NAME 172 | 173 | #define WRAP_METH_NAME GetBackgroundColor 174 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 175 | /* [annotation][out] */ 176 | _Out_ DXGI_RGBA *v1) WRAP_CALLTHRU_V1 CUSTOM_ENDLINE_DEF 177 | #undef WRAP_METH_NAME 178 | 179 | #define WRAP_METH_NAME SetRotation 180 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 181 | /* [annotation][in] */ 182 | _In_ DXGI_MODE_ROTATION v1) WRAP_CALLTHRU_V1 CUSTOM_ENDLINE_DEF 183 | #undef WRAP_METH_NAME 184 | 185 | #define WRAP_METH_NAME GetRotation 186 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 187 | /* [annotation][out] */ 188 | _Out_ DXGI_MODE_ROTATION *v1) WRAP_CALLTHRU_V1 CUSTOM_ENDLINE_DEF 189 | #undef WRAP_METH_NAME 190 | 191 | //swapchain2 192 | 193 | #define WRAP_METH_NAME SetSourceSize 194 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 195 | UINT v1, 196 | UINT v2) WRAP_CALLTHRU_V2 CUSTOM_ENDLINE_DEF 197 | #undef WRAP_METH_NAME 198 | 199 | #define WRAP_METH_NAME GetSourceSize 200 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 201 | /* [annotation][out] */ 202 | _Out_ UINT *v1, 203 | /* [annotation][out] */ 204 | _Out_ UINT *v2) WRAP_CALLTHRU_V2 CUSTOM_ENDLINE_DEF 205 | #undef WRAP_METH_NAME 206 | 207 | #define WRAP_METH_NAME SetMaximumFrameLatency 208 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 209 | UINT v1) WRAP_CALLTHRU_V1 CUSTOM_ENDLINE_DEF 210 | #undef WRAP_METH_NAME 211 | 212 | #define WRAP_METH_NAME GetMaximumFrameLatency 213 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 214 | /* [annotation][out] */ 215 | _Out_ UINT *v1) WRAP_CALLTHRU_V1 CUSTOM_ENDLINE_DEF 216 | #undef WRAP_METH_NAME 217 | 218 | #define WRAP_METH_NAME GetFrameLatencyWaitableObject 219 | WRAPPED_METH_DECL_(HANDLE, WRAP_METH_NAME) ( WRAPPED_THIS) WRAP_CALLTHRU_V0 CUSTOM_ENDLINE_DEF 220 | #undef WRAP_METH_NAME 221 | 222 | #define WRAP_METH_NAME SetMatrixTransform 223 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 224 | const DXGI_MATRIX_3X2_F *v1) WRAP_CALLTHRU_V1 CUSTOM_ENDLINE_DEF 225 | #undef WRAP_METH_NAME 226 | 227 | #define WRAP_METH_NAME GetMatrixTransform 228 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 229 | /* [annotation][out] */ 230 | _Out_ DXGI_MATRIX_3X2_F *v1) WRAP_CALLTHRU_V1 CUSTOM_ENDLINE_DEF 231 | #undef WRAP_METH_NAME 232 | //swapchain3 233 | 234 | #define WRAP_METH_NAME GetCurrentBackBufferIndex 235 | WRAPPED_METH_DECL_(UINT, WRAP_METH_NAME) ( WRAPPED_THIS) WRAP_CALLTHRU_V0 CUSTOM_ENDLINE_DEF 236 | #undef WRAP_METH_NAME 237 | 238 | #define WRAP_METH_NAME CheckColorSpaceSupport 239 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 240 | /* [annotation][in] */ 241 | _In_ DXGI_COLOR_SPACE_TYPE v1, 242 | /* [annotation][out] */ 243 | _Out_ UINT *v2) WRAP_CALLTHRU_V2 CUSTOM_ENDLINE_DEF 244 | #undef WRAP_METH_NAME 245 | 246 | #define WRAP_METH_NAME SetColorSpace1 247 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 248 | /* [annotation][in] */ 249 | _In_ DXGI_COLOR_SPACE_TYPE v1) WRAP_CALLTHRU_V1 CUSTOM_ENDLINE_DEF 250 | #undef WRAP_METH_NAME 251 | 252 | #define WRAP_METH_NAME ResizeBuffers1 253 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 254 | /* [annotation][in] */ 255 | _In_ UINT v1, 256 | /* [annotation][in] */ 257 | _In_ UINT v2, 258 | /* [annotation][in] */ 259 | _In_ UINT v3, 260 | /* [annotation][in] */ 261 | _In_ DXGI_FORMAT v4, 262 | /* [annotation][in] */ 263 | _In_ UINT v5, 264 | /* [annotation][in] */ 265 | _In_reads_(BufferCount) const UINT *v6, 266 | /* [annotation][in] */ 267 | _In_reads_(BufferCount) IUnknown *const *v7) WRAP_CALLTHRU_V7 CUSTOM_ENDLINE_DEF 268 | #undef WRAP_METH_NAME 269 | //swapchain4 270 | 271 | #define WRAP_METH_NAME SetHDRMetaData 272 | WRAPPED_METH_DECL(WRAP_METH_NAME)( WRAPPED_THIS_ 273 | /* [annotation][in] */ 274 | _In_ DXGI_HDR_METADATA_TYPE v1, 275 | /* [annotation][in] */ 276 | _In_ UINT v2, 277 | /* [annotation][size_is][in] */ 278 | _In_reads_opt_(Size) void *v3) WRAP_CALLTHRU_V3 CUSTOM_ENDLINE_DEF 279 | #undef WRAP_METH_NAME -------------------------------------------------------------------------------- /addon/d3d9_wrapper.cpp: -------------------------------------------------------------------------------- 1 | #include "stdafx.h" 2 | #include "build_version.h" 3 | #include 4 | 5 | //gw2addon_get_description 6 | //gw2addon_load 7 | //gw2addon_unload 8 | 9 | gw2al_addon_dsc gAddonDeps[] = { 10 | GW2AL_CORE_DEP_ENTRY, 11 | {0,0,0,0,0,0} 12 | }; 13 | 14 | gw2al_addon_dsc gAddonDsc = { 15 | L"d3d9_wrapper", 16 | L"Wrapper for d3d9 API that includes hooking and custom d3d9 loading", 17 | 2, 18 | 0, 19 | BUILD_VERSION_REV, 20 | gAddonDeps 21 | }; 22 | 23 | HMODULE custom_d3d9_module; 24 | HMODULE custom_d3d11_module; 25 | HMODULE custom_dxgi_module; 26 | gw2al_hashed_name eventEnableProcName; 27 | 28 | gw2al_core_vtable* instance::api = NULL; 29 | 30 | IDirect3D9* OnD3D9Create() 31 | { 32 | wchar_t infoBuf[4096]; 33 | GetSystemDirectory(infoBuf, 4096); 34 | lstrcatW(infoBuf, L"\\d3d9.dll"); 35 | 36 | wchar_t* (*GetD3D9CustomLib)() = (wchar_t* (*)())gAPI->query_function(gAPI->hash_name(L"D3D_wrapper_custom_d3d9_lib_query")); 37 | 38 | if (GetD3D9CustomLib) 39 | { 40 | gAPI->log_text(LL_INFO, L"d3d9_wrapper", L"Loading custom lib from D3D_wrapper_custom_d3d9_lib_query"); 41 | custom_d3d9_module = LoadLibraryW(GetD3D9CustomLib()); 42 | } 43 | else { 44 | gAPI->log_text(LL_INFO, L"d3d9_wrapper", L"Loading system d3d9"); 45 | custom_d3d9_module = LoadLibraryW(infoBuf); 46 | } 47 | 48 | if (!custom_d3d9_module) 49 | { 50 | gAPI->log_text(LL_INFO, L"d3d9_wrapper", L"d3d9 library failed to load"); 51 | return 0; 52 | } 53 | 54 | typedef IDirect3D9* (WINAPI* Direct3DCreate9Func)(UINT sdkver); 55 | 56 | Direct3DCreate9Func d3d9create_fun = (Direct3DCreate9Func)GetProcAddress(custom_d3d9_module, "Direct3DCreate9"); 57 | 58 | if (!d3d9create_fun) 59 | { 60 | gAPI->log_text(LL_INFO, L"d3d9_wrapper", L"no Direct3DCreate9 found in d3d9.dll"); 61 | return 0; 62 | } 63 | 64 | IDirect3D9* res = d3d9create_fun(D3D_SDK_VERSION); 65 | 66 | if (!res) 67 | { 68 | gAPI->log_text(LL_INFO, L"d3d9_wrapper", L"Direct3DCreate9 failed"); 69 | return 0; 70 | } 71 | 72 | return wrap_CreateObj(res); 73 | } 74 | 75 | #define DX11_CREATE_FDEF IDXGIAdapter* pAdapter, D3D_DRIVER_TYPE DriverType, HMODULE Software, UINT Flags, const D3D_FEATURE_LEVEL* pFeatureLevels, UINT FeatureLevels, UINT SDKVersion, const DXGI_SWAP_CHAIN_DESC* pSwapChainDesc, IDXGISwapChain** ppSwapChain, ID3D11Device5** ppDevice, D3D_FEATURE_LEVEL* pFeatureLevel, ID3D11DeviceContext** ppImmediateContext 76 | #define DX11_CREATE_PLIST pAdapter, DriverType, Software, Flags, pFeatureLevels, FeatureLevels, SDKVersion, pSwapChainDesc, ppSwapChain, ppDevice, pFeatureLevel, ppImmediateContext 77 | 78 | static int insideD3D11DeviceCreate = 0; 79 | 80 | HRESULT OnD3D11Create(DX11_CREATE_FDEF) 81 | { 82 | wchar_t infoBuf[4096]; 83 | GetSystemDirectory(infoBuf, 4096); 84 | lstrcatW(infoBuf, L"\\d3d11.dll"); 85 | 86 | wchar_t* (*GetD3D11CustomLib)() = (wchar_t* (*)())gAPI->query_function(gAPI->hash_name(L"D3D_wrapper_custom_d3d11_lib_query")); 87 | 88 | if (GetD3D11CustomLib) 89 | { 90 | gAPI->log_text(LL_INFO, L"d3d9_wrapper", L"Loading custom lib from D3D_wrapper_custom_d3d11_lib_query"); 91 | custom_d3d11_module = LoadLibraryW(GetD3D11CustomLib()); 92 | } 93 | else { 94 | gAPI->log_text(LL_INFO, L"d3d9_wrapper", L"Loading system d3d11"); 95 | custom_d3d11_module = LoadLibraryW(infoBuf); 96 | } 97 | 98 | if (!custom_d3d11_module) 99 | { 100 | gAPI->log_text(LL_INFO, L"d3d9_wrapper", L"d3d11 library failed to load"); 101 | return 0; 102 | } 103 | 104 | typedef HRESULT (WINAPI* D3D11CreateDeviceAndSwapChainFunc)(DX11_CREATE_FDEF); 105 | 106 | D3D11CreateDeviceAndSwapChainFunc d3d11create_fun = (D3D11CreateDeviceAndSwapChainFunc)GetProcAddress(custom_d3d11_module, "D3D11CreateDeviceAndSwapChain"); 107 | 108 | if (!d3d11create_fun) 109 | { 110 | gAPI->log_text(LL_ERR, L"d3d9_wrapper", L"no D3D11CreateDeviceAndSwapChain found in d3d11.dll"); 111 | return 0; 112 | } 113 | 114 | ++insideD3D11DeviceCreate; 115 | HRESULT res = d3d11create_fun(DX11_CREATE_PLIST); 116 | --insideD3D11DeviceCreate; 117 | 118 | if (res != S_OK) 119 | { 120 | wchar_t buf[1024]; 121 | wsprintfW(buf, L"D3D11CreateDeviceAndSwapChain failed: 0x%x", std::to_wstring(res).c_str()); 122 | gAPI->log_text(LL_ERR, L"d3d9_wrapper", buf); 123 | return 0; 124 | } 125 | 126 | if (insideD3D11DeviceCreate == 0) 127 | { 128 | *ppDevice = wrap_CreateDevice11(*ppDevice); 129 | if (ppSwapChain) 130 | *ppSwapChain = (IDXGISwapChain*)wrap_CreateSwapchain((IDXGISwapChain4*)*ppSwapChain); 131 | } 132 | 133 | return res; 134 | } 135 | 136 | static int insideDXGICreate = 0; 137 | 138 | HRESULT OnDXGICreate(UINT ver, UINT Flags, REFIID riid, void** ppFactory) 139 | { 140 | typedef HRESULT(WINAPI* DXGIFactoryCreate0)(REFIID riid, void** ppFactory); 141 | typedef HRESULT(WINAPI* DXGIFactoryCreate1)(REFIID riid, void** ppFactory); 142 | typedef HRESULT(WINAPI* DXGIFactoryCreate2)(UINT Flags, REFIID riid, void** ppFactory); 143 | 144 | wchar_t infoBuf[4096]; 145 | GetSystemDirectory(infoBuf, 4096); 146 | lstrcatW(infoBuf, L"\\dxgi.dll"); 147 | 148 | wchar_t* (*GetDXGICustomLib)() = (wchar_t* (*)())gAPI->query_function(gAPI->hash_name(L"D3D_wrapper_custom_dxgi_lib_query")); 149 | 150 | 151 | if (GetDXGICustomLib) 152 | { 153 | gAPI->log_text(LL_INFO, L"d3d9_wrapper", L"Loading custom lib from D3D_wrapper_custom_dxgi_lib_query"); 154 | custom_dxgi_module = LoadLibraryW(GetDXGICustomLib()); 155 | } 156 | else { 157 | gAPI->log_text(LL_INFO, L"d3d9_wrapper", L"Loading system dxgi"); 158 | custom_dxgi_module = LoadLibraryW(infoBuf); 159 | } 160 | 161 | if (!custom_dxgi_module) 162 | { 163 | gAPI->log_text(LL_INFO, L"d3d9_wrapper", L"dxgi library failed to load"); 164 | return 0; 165 | } 166 | 167 | 168 | DXGIFactoryCreate0 origDXGI0 = (DXGIFactoryCreate0)GetProcAddress(custom_dxgi_module, "CreateDXGIFactory"); 169 | DXGIFactoryCreate1 origDXGI1 = (DXGIFactoryCreate1)GetProcAddress(custom_dxgi_module, "CreateDXGIFactory1"); 170 | DXGIFactoryCreate2 origDXGI2 = (DXGIFactoryCreate2)GetProcAddress(custom_dxgi_module, "CreateDXGIFactory2"); 171 | 172 | HRESULT ret; 173 | 174 | ++insideDXGICreate; 175 | switch (ver) 176 | { 177 | case 0: 178 | ret = origDXGI0(riid, ppFactory); 179 | break; 180 | case 1: 181 | ret = origDXGI1(riid, ppFactory); 182 | break; 183 | case 2: 184 | ret = origDXGI2(Flags, riid, ppFactory); 185 | break; 186 | default: 187 | ret = E_UNEXPECTED; 188 | } 189 | --insideDXGICreate; 190 | 191 | if (ret != S_OK) 192 | { 193 | wchar_t buf[1024]; 194 | wsprintfW(buf, L"CreateDXGIFactory failed: 0x%x", std::to_wstring(ret).c_str()); 195 | gAPI->log_text(LL_INFO, L"d3d9_wrapper", buf); 196 | return 0; 197 | } 198 | 199 | if (insideDXGICreate == 0) 200 | { 201 | *ppFactory = wrap_CreateDXGI(*ppFactory); 202 | } 203 | 204 | return ret; 205 | } 206 | 207 | gw2al_addon_dsc* gw2addon_get_description() 208 | { 209 | return &gAddonDsc; 210 | } 211 | 212 | #pragma pack(push, 1) 213 | typedef struct d3d9_obj_CreateDevice_cp { 214 | IDirect3D9* obj; 215 | UINT pad0; 216 | UINT v1; 217 | UINT pad1; 218 | D3DDEVTYPE v2; 219 | HWND v3; 220 | UINT pad2; 221 | DWORD v4; 222 | D3DPRESENT_PARAMETERS* v5; 223 | IDirect3DDevice9** ret; 224 | } d3d9_obj_CreateDevice_cp; 225 | 226 | typedef struct d3d9_dev_Release_cp { 227 | union { 228 | IDirect3DDevice9* d9; 229 | ID3D11Device5* d11; 230 | } udev; 231 | } d3d9_dev_Release_cp; 232 | 233 | typedef struct dxgi_CreateSwapChain_cp { 234 | IDXGIFactory5* dxgi; 235 | IUnknown* inDevice; 236 | DXGI_SWAP_CHAIN_DESC* desc; 237 | IDXGISwapChain4** ppSwapchain; 238 | } dxgi_CreateSwapChain_cp; 239 | 240 | typedef struct iunk_QueryInterface_cp { 241 | IUnknown* base; 242 | REFIID iid; 243 | void** rptr; 244 | } iunk_QueryInterface_cp; 245 | #pragma pack(pop) 246 | 247 | IDirect3DDevice9* hwDevice = nullptr; 248 | ID3D11Device5* hwDevice11 = nullptr; 249 | 250 | void OnPostSWCQueryInterface(wrap_event_data* data) 251 | { 252 | //FIXME: looks like wrapped object will leak 253 | iunk_QueryInterface_cp* apiParams = (iunk_QueryInterface_cp*)data->stackPtr; 254 | 255 | *apiParams->rptr = (IDXGISwapChain4*)wrap_CreateSwapchain((IDXGISwapChain4*)*apiParams->rptr); 256 | } 257 | 258 | void OnPostDXGICreateSwapChain(wrap_event_data* data) 259 | { 260 | dxgi_CreateSwapChain_cp* apiParams = (dxgi_CreateSwapChain_cp*)data->stackPtr; 261 | 262 | *apiParams->ppSwapchain = wrap_CreateSwapchain(*apiParams->ppSwapchain); 263 | } 264 | 265 | void OnPostDeviceCreate(wrap_event_data* data) 266 | { 267 | d3d9_obj_CreateDevice_cp* apiParams = (d3d9_obj_CreateDevice_cp*)data->stackPtr; 268 | 269 | *apiParams->ret = wrap_CreateDevice(*apiParams->ret); 270 | 271 | //i guess this one device should be created one time thru entire gw2 run, 272 | //so we track can track unload of addons on it 273 | if (apiParams->v2 == D3DDEVTYPE_HAL) 274 | { 275 | hwDevice = *apiParams->ret; 276 | } 277 | } 278 | 279 | void OnPostWrappedRelease(wrap_event_data* data) 280 | { 281 | d3d9_dev_Release_cp* apiParams = (d3d9_dev_Release_cp*)data->stackPtr; 282 | 283 | if (*((LONG*)data->ret) == 0) 284 | { 285 | if (apiParams->udev.d9 == hwDevice) 286 | gAPI->client_unload(); 287 | 288 | free(*data->stackPtr); 289 | } 290 | } 291 | 292 | void OnPostWrapped11Release(wrap_event_data* data) 293 | { 294 | d3d9_dev_Release_cp* apiParams = (d3d9_dev_Release_cp*)data->stackPtr; 295 | 296 | if (*((LONG*)data->ret) == 0) 297 | { 298 | if (apiParams->udev.d11 == hwDevice11) 299 | gAPI->client_unload(); 300 | 301 | free(*data->stackPtr); 302 | } 303 | } 304 | 305 | void OnPostObjWrappedRelease(wrap_event_data* data) 306 | { 307 | if (*((LONG*)data->ret) == 0) 308 | free(*data->stackPtr); 309 | } 310 | 311 | vtable_wrap_mode d3d9_wrapper_event_state[METHOD_WRAP_COUNT] = { WRAP_PASSTHRU }; 312 | 313 | void d3d9_wrapper_enable_event(d3d9_vtable_method method, vtable_wrap_mode mode) 314 | { 315 | if (method >= METHOD_WRAP_COUNT) 316 | return; 317 | 318 | if (d3d9_wrapper_event_state[method] == WRAP_CB_PRE_POST) 319 | return; 320 | 321 | if (d3d9_wrapper_event_state[method] != mode) 322 | { 323 | switch (d3d9_wrapper_event_state[method]) 324 | { 325 | case WRAP_PASSTHRU: 326 | { 327 | wrap_SwitchMethod(method, mode); 328 | d3d9_wrapper_event_state[method] = mode; 329 | } 330 | break; 331 | case WRAP_CB_PRE: 332 | { 333 | if (mode > WRAP_CB_PRE) 334 | { 335 | wrap_SwitchMethod(method, WRAP_CB_PRE_POST); 336 | d3d9_wrapper_event_state[method] = WRAP_CB_PRE_POST; 337 | } 338 | } 339 | break; 340 | case WRAP_CB_POST: 341 | { 342 | if ((mode != WRAP_CB_POST) && (mode != WRAP_PASSTHRU)) 343 | { 344 | wrap_SwitchMethod(method, WRAP_CB_PRE_POST); 345 | d3d9_wrapper_event_state[method] = WRAP_CB_PRE_POST; 346 | } 347 | } 348 | break; 349 | } 350 | } 351 | } 352 | 353 | gw2al_api_ret gw2addon_load(gw2al_core_vtable* core_api) 354 | { 355 | gAPI = core_api; 356 | 357 | eventEnableProcName = gAPI->hash_name(L"D3D_wrapper_enable_event"); 358 | 359 | gAPI->register_function(&OnD3D9Create, GW2AL_CORE_FUNN_D3DCREATE_HOOK); 360 | gAPI->register_function(&OnD3D11Create, GW2AL_CORE_FUNN_D3D11CREATE_HOOK); 361 | gAPI->register_function(&OnDXGICreate, GW2AL_CORE_FUNN_DXGICREATE_HOOK); 362 | gAPI->register_function(&d3d9_wrapper_enable_event, eventEnableProcName); 363 | 364 | wrap_InitEvents(); 365 | 366 | gAPI->watch_event( 367 | gAPI->query_event(gAPI->hash_name(L"D3D9_POST_OBJ_CreateDevice")), 368 | gAPI->hash_name(L"d3d9 wrapper"), 369 | (gw2al_api_event_handler)&OnPostDeviceCreate, 370 | -1 371 | ); 372 | 373 | gAPI->watch_event( 374 | gAPI->query_event(gAPI->hash_name(L"D3D9_POST_DEV_Release")), 375 | gAPI->hash_name(L"d3d9 wrapper"), 376 | (gw2al_api_event_handler)&OnPostWrappedRelease, 377 | 0 378 | ); 379 | 380 | gAPI->watch_event( 381 | gAPI->query_event(gAPI->hash_name(L"D3D9_POST_OBJ_Release")), 382 | gAPI->hash_name(L"d3d9 wrapper"), 383 | (gw2al_api_event_handler)&OnPostObjWrappedRelease, 384 | 0 385 | ); 386 | 387 | gAPI->watch_event( 388 | gAPI->query_event(gAPI->hash_name(L"D3D9_POST_DEV11_Release")), 389 | gAPI->hash_name(L"d3d9 wrapper"), 390 | (gw2al_api_event_handler)&OnPostWrapped11Release, 391 | 0 392 | ); 393 | 394 | gAPI->watch_event( 395 | gAPI->query_event(gAPI->hash_name(L"D3D9_POST_SWC_Release")), 396 | gAPI->hash_name(L"d3d9 wrapper"), 397 | (gw2al_api_event_handler)&OnPostObjWrappedRelease, 398 | 0 399 | ); 400 | 401 | gAPI->watch_event( 402 | gAPI->query_event(gAPI->hash_name(L"D3D9_POST_DXGI_Release")), 403 | gAPI->hash_name(L"d3d9 wrapper"), 404 | (gw2al_api_event_handler)&OnPostObjWrappedRelease, 405 | 0 406 | ); 407 | 408 | gAPI->watch_event( 409 | gAPI->query_event(gAPI->hash_name(L"D3D9_POST_DXGI_CreateSwapChain")), 410 | gAPI->hash_name(L"d3d9 wrapper"), 411 | (gw2al_api_event_handler)&OnPostDXGICreateSwapChain, 412 | -1 413 | ); 414 | 415 | gAPI->watch_event( 416 | gAPI->query_event(gAPI->hash_name(L"D3D9_POST_SWC_QueryInterface")), 417 | gAPI->hash_name(L"d3d9 wrapper"), 418 | (gw2al_api_event_handler)&OnPostSWCQueryInterface, 419 | -1 420 | ); 421 | 422 | d3d9_wrapper_enable_event(METH_OBJ_CreateDevice, WRAP_CB_POST); 423 | d3d9_wrapper_enable_event(METH_DXGI_CreateSwapChain, WRAP_CB_POST); 424 | d3d9_wrapper_enable_event(METH_SWC_QueryInterface, WRAP_CB_POST); 425 | 426 | d3d9_wrapper_enable_event(METH_OBJ_Release, WRAP_CB_POST); 427 | d3d9_wrapper_enable_event(METH_DEV_Release, WRAP_CB_POST); 428 | d3d9_wrapper_enable_event(METH_DEV11_Release, WRAP_CB_POST); 429 | d3d9_wrapper_enable_event(METH_SWC_Release, WRAP_CB_POST); 430 | d3d9_wrapper_enable_event(METH_DXGI_Release, WRAP_CB_POST); 431 | 432 | return GW2AL_OK; 433 | } 434 | 435 | gw2al_api_ret gw2addon_unload(int gameExiting) 436 | { 437 | gAPI->unwatch_event( 438 | gAPI->query_event(gAPI->hash_name(L"D3D9_POST_OBJ_CreateDevice")), 439 | gAPI->hash_name(L"d3d9 wrapper") 440 | ); 441 | 442 | gAPI->unwatch_event( 443 | gAPI->query_event(gAPI->hash_name(L"D3D9_POST_DEV_Release")), 444 | gAPI->hash_name(L"d3d9 wrapper") 445 | ); 446 | 447 | gAPI->unwatch_event( 448 | gAPI->query_event(gAPI->hash_name(L"D3D9_POST_OBJ_Release")), 449 | gAPI->hash_name(L"d3d9 wrapper") 450 | ); 451 | 452 | gAPI->unregister_function(eventEnableProcName); 453 | gAPI->unregister_function(GW2AL_CORE_FUNN_D3DCREATE_HOOK); 454 | 455 | if (custom_d3d11_module) 456 | FreeLibrary(custom_d3d11_module); 457 | 458 | return GW2AL_OK; 459 | } -------------------------------------------------------------------------------- /addon/d3d9_wrapper.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "stdafx.h" 4 | 5 | #define gAPI instance::api 6 | 7 | class instance { 8 | public: 9 | static gw2al_core_vtable* api; 10 | }; 11 | -------------------------------------------------------------------------------- /addon/d3d9_wrapper.vcxproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Debug 6 | Win32 7 | 8 | 9 | Release 10 | Win32 11 | 12 | 13 | Debug 14 | x64 15 | 16 | 17 | Release 18 | x64 19 | 20 | 21 | 22 | 15.0 23 | {BDCB35C3-8ED9-4A6E-A346-D16F17D4600C} 24 | Win32Proj 25 | customd3d9 26 | 10.0 27 | d3d9_wrapper 28 | 29 | 30 | 31 | DynamicLibrary 32 | true 33 | v143 34 | Unicode 35 | 36 | 37 | DynamicLibrary 38 | false 39 | v143 40 | true 41 | Unicode 42 | 43 | 44 | DynamicLibrary 45 | true 46 | v143 47 | Unicode 48 | 49 | 50 | DynamicLibrary 51 | false 52 | v143 53 | true 54 | Unicode 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | true 76 | gw2addon_$(ProjectName) 77 | $(SolutionDir)$(Platform)\$(Configuration)\addons\$(ProjectName)\ 78 | 79 | 80 | true 81 | gw2addon_$(ProjectName) 82 | 83 | 84 | false 85 | 86 | 87 | false 88 | $(SolutionDir)$(Platform)\$(Configuration)\addons\$(ProjectName)\ 89 | gw2addon_$(ProjectName) 90 | 91 | 92 | 93 | Use 94 | Level3 95 | Disabled 96 | true 97 | _DEBUG;CUSTOMD3D9_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) 98 | true 99 | 100 | 101 | Windows 102 | true 103 | Source.def 104 | 105 | 106 | IF DEFINED GW2_INSTALL_DIR ( 107 | xcopy "$(TargetPath)" "$(GW2_INSTALL_DIR)\addons\d3d9_wrapper\" /Y 108 | ) 109 | 110 | 111 | 112 | 113 | Use 114 | Level3 115 | Disabled 116 | true 117 | WIN32;_DEBUG;CUSTOMD3D9_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) 118 | true 119 | 120 | 121 | Windows 122 | true 123 | Source.def 124 | 125 | 126 | 127 | 128 | Use 129 | Level3 130 | MaxSpeed 131 | true 132 | true 133 | true 134 | WIN32;NDEBUG;CUSTOMD3D9_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) 135 | true 136 | 137 | 138 | Windows 139 | true 140 | true 141 | true 142 | Source.def 143 | 144 | 145 | 146 | 147 | Use 148 | Level3 149 | Disabled 150 | true 151 | false 152 | true 153 | NDEBUG;CUSTOMD3D9_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) 154 | true 155 | Default 156 | false 157 | 158 | 159 | Windows 160 | true 161 | true 162 | true 163 | Source.def 164 | 165 | 166 | IF DEFINED GW2_INSTALL_DIR ( 167 | xcopy "$(TargetPath)" "$(GW2_INSTALL_DIR)\addons\d3d9_wrapper\" /Y 168 | ) 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | Create 185 | Create 186 | Create 187 | Create 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | -------------------------------------------------------------------------------- /addon/d3d9_wrapper.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 6 | h;hh;hpp;hxx;hm;inl;inc;ipp;xsd 7 | 8 | 9 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 10 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx 11 | 12 | 13 | {ded00aed-ce7e-4432-b270-381c29a67108} 14 | 15 | 16 | 17 | 18 | headers 19 | 20 | 21 | headers 22 | 23 | 24 | com_wrapper 25 | 26 | 27 | com_wrapper 28 | 29 | 30 | sources 31 | 32 | 33 | 34 | 35 | sources 36 | 37 | 38 | sources 39 | 40 | 41 | sources 42 | 43 | 44 | com_wrapper 45 | 46 | 47 | com_wrapper 48 | 49 | 50 | 51 | 52 | sources 53 | 54 | 55 | com_wrapper 56 | 57 | 58 | com_wrapper 59 | 60 | 61 | com_wrapper 62 | 63 | 64 | com_wrapper 65 | 66 | 67 | com_wrapper 68 | 69 | 70 | -------------------------------------------------------------------------------- /addon/dllmain.cpp: -------------------------------------------------------------------------------- 1 | #include "stdafx.h" 2 | 3 | BOOL APIENTRY DllMain( HMODULE hModule, 4 | DWORD ul_reason_for_call, 5 | LPVOID lpReserved 6 | ) 7 | { 8 | switch (ul_reason_for_call) 9 | { 10 | case DLL_PROCESS_ATTACH: 11 | case DLL_THREAD_ATTACH: 12 | case DLL_THREAD_DETACH: 13 | case DLL_PROCESS_DETACH: 14 | break; 15 | } 16 | return TRUE; 17 | } 18 | 19 | -------------------------------------------------------------------------------- /addon/stdafx.cpp: -------------------------------------------------------------------------------- 1 | #include "stdafx.h" 2 | -------------------------------------------------------------------------------- /addon/stdafx.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "targetver.h" 4 | 5 | #define WIN32_LEAN_AND_MEAN 6 | #include 7 | #include 8 | #include 9 | #include "../include/gw2al_api.h" 10 | #include "com_wrapper.h" 11 | #include "com_wrapper_method_dcl.h" 12 | #include "d3d9_wrapper.h" 13 | -------------------------------------------------------------------------------- /addon/targetver.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | -------------------------------------------------------------------------------- /d3d9_wrapper.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 15 4 | VisualStudioVersion = 15.0.28307.329 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "d3d9_wrapper", "addon\d3d9_wrapper.vcxproj", "{BDCB35C3-8ED9-4A6E-A346-D16F17D4600C}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|x64 = Debug|x64 11 | Release|x64 = Release|x64 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {BDCB35C3-8ED9-4A6E-A346-D16F17D4600C}.Debug|x64.ActiveCfg = Debug|x64 15 | {BDCB35C3-8ED9-4A6E-A346-D16F17D4600C}.Debug|x64.Build.0 = Debug|x64 16 | {BDCB35C3-8ED9-4A6E-A346-D16F17D4600C}.Release|x64.ActiveCfg = Release|x64 17 | {BDCB35C3-8ED9-4A6E-A346-D16F17D4600C}.Release|x64.Build.0 = Release|x64 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | GlobalSection(ExtensibilityGlobals) = postSolution 23 | SolutionGuid = {4947DB3F-8974-45C0-9FE6-25F8F3784099} 24 | EndGlobalSection 25 | EndGlobal 26 | -------------------------------------------------------------------------------- /include/gw2al_api.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #define GW2AL_API_VER_MAJOR 1 4 | #define GW2AL_API_VER_MINOR 0 5 | 6 | #define GW2AL_CORE_DEP_ENTRY { L"loader_core", L"core gw2 al API", GW2AL_API_VER_MAJOR, GW2AL_API_VER_MINOR, 1, 0 } 7 | 8 | #define gw2al_hashed_name unsigned long long 9 | #define gw2al_event_id unsigned long 10 | 11 | 12 | typedef struct gw2al_addon_dsc { 13 | const wchar_t* name; 14 | const wchar_t* description; 15 | unsigned char majorVer; 16 | unsigned char minorVer; 17 | unsigned int revision; 18 | 19 | gw2al_addon_dsc* dependList; 20 | } gw2al_addon_dsc; 21 | 22 | //api return codes 23 | 24 | typedef enum gw2al_api_ret { 25 | GW2AL_OK, 26 | GW2AL_FAIL, 27 | GW2AL_IN_USE, 28 | GW2AL_NOT_FOUND, 29 | GW2AL_BAD_DLL, 30 | GW2AL_DEP_NOT_LOADED, 31 | GW2AL_DEP_OUTDATED, 32 | GW2AL_DEP_STILL_LOADED, 33 | GW2AL_STATIC_LIMIT_HIT 34 | } gw2al_api_ret; 35 | 36 | //used to handle events 37 | typedef void(*gw2al_api_event_handler)(void* data); 38 | 39 | #define GW2AL_CORE_FUNN_HASH_NAME 1 40 | #define GW2AL_CORE_FUNN_REG_FUN 2 41 | #define GW2AL_CORE_FUNN_UNREG_FUN 3 42 | #define GW2AL_CORE_FUNN_QUERY_FUN 4 43 | #define GW2AL_CORE_FUNN_FILL_VTBL 5 44 | #define GW2AL_CORE_FUNN_UNLOAD_ADDON 6 45 | #define GW2AL_CORE_FUNN_LOAD_ADDON 7 46 | #define GW2AL_CORE_FUNN_QUERY_ADDON 8 47 | #define GW2AL_CORE_FUNN_WATCH_EVENT 9 48 | #define GW2AL_CORE_FUNN_UNWATCH_EVENT 10 49 | #define GW2AL_CORE_FUNN_QUERY_EVENT 11 50 | #define GW2AL_CORE_FUNN_TRIGGER_EVENT 12 51 | #define GW2AL_CORE_FUNN_CLIENT_UNLOAD 13 52 | #define GW2AL_CORE_FUNN_LOG_TEXT_SYNC 14 53 | #define GW2AL_CORE_FUNN_LOG_TEXT 15 54 | #define GW2AL_CORE_FUNN_D3DCREATE_HOOK 16 55 | #define GW2AL_CORE_FUNN_D3D11CREATE_HOOK 17 56 | #define GW2AL_CORE_FUNN_DXGICREATE_HOOK 18 57 | 58 | typedef enum gw2al_log_level { 59 | LL_INFO = 0, 60 | LL_ERR, 61 | LL_WARN, 62 | LL_DEBUG 63 | } gw2al_log_level; 64 | 65 | typedef struct gw2al_core_vtable { 66 | //converts string to hash for usage in other functions 67 | gw2al_hashed_name(*hash_name)(const wchar_t* name); 68 | 69 | //register/unregister user functions to be called by other addons 70 | gw2al_api_ret(*register_function)(void* function, gw2al_hashed_name name); 71 | void (*unregister_function)(gw2al_hashed_name name); 72 | 73 | //query function pointer from registered list 74 | void* (*query_function)(gw2al_hashed_name name); 75 | 76 | //fills table of functions using query_function 77 | void (*fill_vtable)(const gw2al_hashed_name* nameList, void** vtable); 78 | 79 | //functions to unload/load addons 80 | gw2al_api_ret(*unload_addon)(gw2al_hashed_name name); 81 | gw2al_api_ret(*load_addon)(const wchar_t* name); 82 | 83 | //function to get currently loaded addon description 84 | gw2al_addon_dsc* (*query_addon)(gw2al_hashed_name name); 85 | 86 | //simple event api 87 | //watch event can add a number of handlers on event name with priority 88 | //query event will get internal event id to speedup trigger_event calls 89 | 90 | gw2al_api_ret(*watch_event)(gw2al_event_id id, gw2al_hashed_name subscriber, gw2al_api_event_handler handler, unsigned int priority); 91 | void (*unwatch_event)(gw2al_event_id id, gw2al_hashed_name subscriber); 92 | gw2al_event_id(*query_event)(gw2al_hashed_name name); 93 | unsigned int (*trigger_event)(gw2al_event_id id, void* data); 94 | 95 | //unload function to delete properly unload things on client exit 96 | 97 | void (*client_unload)(); 98 | 99 | //simple logging function 100 | 101 | void (*log_text_sync)(gw2al_log_level level, const wchar_t* source, const wchar_t* text); 102 | void (*log_text)(gw2al_log_level level, const wchar_t* source, const wchar_t* text); 103 | 104 | } gw2al_core_vtable; 105 | 106 | //addon must export this functions as 107 | //gw2addon_get_description 108 | //gw2addon_load 109 | //gw2addon_unload 110 | 111 | typedef gw2al_addon_dsc* (*gw2al_addon_get_dsc_proc)(); 112 | typedef gw2al_api_ret(*gw2al_addon_load_proc)(gw2al_core_vtable* core_api); 113 | typedef gw2al_api_ret(*gw2al_addon_unload_proc)(int gameExiting); 114 | -------------------------------------------------------------------------------- /include/gw2al_d3d9_wrapper.h: -------------------------------------------------------------------------------- 1 | 2 | #define D3D_WRAPPER_DEP_ENTRY { L"d3d9_wrapper", L"Wrapper for d3d API that includes hooking and custom d3d loading", 2, 0, 1, 0 } 3 | 4 | typedef enum D3D9_wrapper_mode { 5 | WRAP_PASSTHRU = 0, 6 | WRAP_CB_PRE = 1, 7 | WRAP_CB_POST = 2, 8 | WRAP_CB_PRE_POST = 3 9 | } D3D9_wrapper_mode; 10 | 11 | typedef enum D3D9_wrapper_method { 12 | METH_DEV_QueryInterface, 13 | METH_DEV_AddRef, 14 | METH_DEV_Release, 15 | METH_DEV_TestCooperativeLevel, 16 | METH_DEV_GetAvailableTextureMem, 17 | METH_DEV_EvictManagedResources, 18 | METH_DEV_GetDirect3D, 19 | METH_DEV_GetDeviceCaps, 20 | METH_DEV_GetDisplayMode, 21 | METH_DEV_GetCreationParameters, 22 | METH_DEV_SetCursorProperties, 23 | METH_DEV_SetCursorPosition, 24 | METH_DEV_ShowCursor, 25 | METH_DEV_CreateAdditionalSwapChain, 26 | METH_DEV_GetSwapChain, 27 | METH_DEV_GetNumberOfSwapChains, 28 | METH_DEV_Reset, 29 | METH_DEV_Present, 30 | METH_DEV_GetBackBuffer, 31 | METH_DEV_GetRasterStatus, 32 | METH_DEV_SetDialogBoxMode, 33 | METH_DEV_SetGammaRamp, 34 | METH_DEV_GetGammaRamp, 35 | METH_DEV_CreateTexture, 36 | METH_DEV_CreateVolumeTexture, 37 | METH_DEV_CreateCubeTexture, 38 | METH_DEV_CreateVertexBuffer, 39 | METH_DEV_CreateIndexBuffer, 40 | METH_DEV_CreateRenderTarget, 41 | METH_DEV_CreateDepthStencilSurface, 42 | METH_DEV_UpdateSurface, 43 | METH_DEV_UpdateTexture, 44 | METH_DEV_GetRenderTargetData, 45 | METH_DEV_GetFrontBufferData, 46 | METH_DEV_StretchRect, 47 | METH_DEV_ColorFill, 48 | METH_DEV_CreateOffscreenPlainSurface, 49 | METH_DEV_SetRenderTarget, 50 | METH_DEV_GetRenderTarget, 51 | METH_DEV_SetDepthStencilSurface, 52 | METH_DEV_GetDepthStencilSurface, 53 | METH_DEV_BeginScene, 54 | METH_DEV_EndScene, 55 | METH_DEV_Clear, 56 | METH_DEV_SetTransform, 57 | METH_DEV_GetTransform, 58 | METH_DEV_MultiplyTransform, 59 | METH_DEV_SetViewport, 60 | METH_DEV_GetViewport, 61 | METH_DEV_SetMaterial, 62 | METH_DEV_GetMaterial, 63 | METH_DEV_SetLight, 64 | METH_DEV_GetLight, 65 | METH_DEV_LightEnable, 66 | METH_DEV_GetLightEnable, 67 | METH_DEV_SetClipPlane, 68 | METH_DEV_GetClipPlane, 69 | METH_DEV_SetRenderState, 70 | METH_DEV_GetRenderState, 71 | METH_DEV_CreateStateBlock, 72 | METH_DEV_BeginStateBlock, 73 | METH_DEV_EndStateBlock, 74 | METH_DEV_SetClipStatus, 75 | METH_DEV_GetClipStatus, 76 | METH_DEV_GetTexture, 77 | METH_DEV_SetTexture, 78 | METH_DEV_GetTextureStageState, 79 | METH_DEV_SetTextureStageState, 80 | METH_DEV_GetSamplerState, 81 | METH_DEV_SetSamplerState, 82 | METH_DEV_ValidateDevice, 83 | METH_DEV_SetPaletteEntries, 84 | METH_DEV_GetPaletteEntries, 85 | METH_DEV_SetCurrentTexturePalette, 86 | METH_DEV_GetCurrentTexturePalette, 87 | METH_DEV_SetScissorRect, 88 | METH_DEV_GetScissorRect, 89 | METH_DEV_SetSoftwareVertexProcessing, 90 | METH_DEV_GetSoftwareVertexProcessing, 91 | METH_DEV_SetNPatchMode, 92 | METH_DEV_GetNPatchMode, 93 | METH_DEV_DrawPrimitive, 94 | METH_DEV_DrawIndexedPrimitive, 95 | METH_DEV_DrawPrimitiveUP, 96 | METH_DEV_DrawIndexedPrimitiveUP, 97 | METH_DEV_ProcessVertices, 98 | METH_DEV_CreateVertexDeclaration, 99 | METH_DEV_SetVertexDeclaration, 100 | METH_DEV_GetVertexDeclaration, 101 | METH_DEV_SetFVF, 102 | METH_DEV_GetFVF, 103 | METH_DEV_CreateVertexShader, 104 | METH_DEV_SetVertexShader, 105 | METH_DEV_GetVertexShader, 106 | METH_DEV_SetVertexShaderConstantF, 107 | METH_DEV_GetVertexShaderConstantF, 108 | METH_DEV_SetVertexShaderConstantI, 109 | METH_DEV_GetVertexShaderConstantI, 110 | METH_DEV_SetVertexShaderConstantB, 111 | METH_DEV_GetVertexShaderConstantB, 112 | METH_DEV_SetStreamSource, 113 | METH_DEV_GetStreamSource, 114 | METH_DEV_SetStreamSourceFreq, 115 | METH_DEV_GetStreamSourceFreq, 116 | METH_DEV_SetIndices, 117 | METH_DEV_GetIndices, 118 | METH_DEV_CreatePixelShader, 119 | METH_DEV_SetPixelShader, 120 | METH_DEV_GetPixelShader, 121 | METH_DEV_SetPixelShaderConstantF, 122 | METH_DEV_GetPixelShaderConstantF, 123 | METH_DEV_SetPixelShaderConstantI, 124 | METH_DEV_GetPixelShaderConstantI, 125 | METH_DEV_SetPixelShaderConstantB, 126 | METH_DEV_GetPixelShaderConstantB, 127 | METH_DEV_DrawRectPatch, 128 | METH_DEV_DrawTriPatch, 129 | METH_DEV_DeletePatch, 130 | METH_DEV_CreateQuery, 131 | METH_OBJ_QueryInterface, 132 | METH_OBJ_AddRef, 133 | METH_OBJ_Release, 134 | METH_OBJ_RegisterSoftwareDevice, 135 | METH_OBJ_GetAdapterCount, 136 | METH_OBJ_GetAdapterIdentifier, 137 | METH_OBJ_GetAdapterModeCount, 138 | METH_OBJ_EnumAdapterModes, 139 | METH_OBJ_GetAdapterDisplayMode, 140 | METH_OBJ_CheckDeviceType, 141 | METH_OBJ_CheckDeviceFormat, 142 | METH_OBJ_CheckDeviceMultiSampleType, 143 | METH_OBJ_CheckDepthStencilMatch, 144 | METH_OBJ_CheckDeviceFormatConversion, 145 | METH_OBJ_GetDeviceCaps, 146 | METH_OBJ_GetAdapterMonitor, 147 | METH_OBJ_CreateDevice, 148 | METH_DEV11_QueryInterface, 149 | METH_DEV11_AddRef, 150 | METH_DEV11_Release, 151 | METH_DEV11_CreateBuffer, 152 | METH_DEV11_CreateTexture1D, 153 | METH_DEV11_CreateTexture2D, 154 | METH_DEV11_CreateTexture3D, 155 | METH_DEV11_CreateShaderResourceView, 156 | METH_DEV11_CreateUnorderedAccessView, 157 | METH_DEV11_CreateRenderTargetView, 158 | METH_DEV11_CreateDepthStencilView, 159 | METH_DEV11_CreateInputLayout, 160 | METH_DEV11_CreateVertexShader, 161 | METH_DEV11_CreateGeometryShader, 162 | METH_DEV11_CreateGeometryShaderWithStreamOutput, 163 | METH_DEV11_CreatePixelShader, 164 | METH_DEV11_CreateHullShader, 165 | METH_DEV11_CreateDomainShader, 166 | METH_DEV11_CreateComputeShader, 167 | METH_DEV11_CreateClassLinkage, 168 | METH_DEV11_CreateBlendState, 169 | METH_DEV11_CreateDepthStencilState, 170 | METH_DEV11_CreateRasterizerState, 171 | METH_DEV11_CreateSamplerState, 172 | METH_DEV11_CreateQuery, 173 | METH_DEV11_CreatePredicate, 174 | METH_DEV11_CreateCounter, 175 | METH_DEV11_CreateDeferredContext, 176 | METH_DEV11_OpenSharedResource, 177 | METH_DEV11_CheckFormatSupport, 178 | METH_DEV11_CheckMultisampleQualityLevels, 179 | METH_DEV11_CheckCounterInfo, 180 | METH_DEV11_CheckCounter, 181 | METH_DEV11_CheckFeatureSupport, 182 | METH_DEV11_GetPrivateData, 183 | METH_DEV11_SetPrivateData, 184 | METH_DEV11_SetPrivateDataInterface, 185 | METH_DEV11_GetFeatureLevel, 186 | METH_DEV11_GetCreationFlags, 187 | METH_DEV11_GetDeviceRemovedReason, 188 | METH_DEV11_GetImmediateContext, 189 | METH_DEV11_SetExceptionMode, 190 | METH_DEV11_GetExceptionMode, 191 | METH_DEV11_GetImmediateContext1, 192 | METH_DEV11_CreateDeferredContext1, 193 | METH_DEV11_CreateBlendState1, 194 | METH_DEV11_CreateRasterizerState1, 195 | METH_DEV11_CreateDeviceContextState, 196 | METH_DEV11_OpenSharedResource1, 197 | METH_DEV11_OpenSharedResourceByName, 198 | METH_DEV11_GetImmediateContext2, 199 | METH_DEV11_CreateDeferredContext2, 200 | METH_DEV11_GetResourceTiling, 201 | METH_DEV11_CheckMultisampleQualityLevels1, 202 | METH_DEV11_CreateTexture2D1, 203 | METH_DEV11_CreateTexture3D1, 204 | METH_DEV11_CreateRasterizerState2, 205 | METH_DEV11_CreateShaderResourceView1, 206 | METH_DEV11_CreateUnorderedAccessView1, 207 | METH_DEV11_CreateRenderTargetView1, 208 | METH_DEV11_CreateQuery1, 209 | METH_DEV11_GetImmediateContext3, 210 | METH_DEV11_CreateDeferredContext3, 211 | METH_DEV11_WriteToSubresource, 212 | METH_DEV11_ReadFromSubresource, 213 | METH_DEV11_RegisterDeviceRemovedEvent, 214 | METH_DEV11_UnregisterDeviceRemoved, 215 | METH_DEV11_OpenSharedFence, 216 | METH_DEV11_CreateFence, 217 | METH_SWC_QueryInterface, 218 | METH_SWC_AddRef, 219 | METH_SWC_Release, 220 | METH_SWC_SetPrivateData, 221 | METH_SWC_SetPrivateDataInterface, 222 | METH_SWC_GetPrivateData, 223 | METH_SWC_GetParent, 224 | METH_SWC_GetDevice, 225 | METH_SWC_Present, 226 | METH_SWC_GetBuffer, 227 | METH_SWC_SetFullscreenState, 228 | METH_SWC_GetFullscreenState, 229 | METH_SWC_GetDesc, 230 | METH_SWC_ResizeBuffers, 231 | METH_SWC_ResizeTarget, 232 | METH_SWC_GetContainingOutput, 233 | METH_SWC_GetFrameStatistics, 234 | METH_SWC_GetLastPresentCount, 235 | METH_SWC_GetDesc1, 236 | METH_SWC_GetFullscreenDesc, 237 | METH_SWC_GetHwnd, 238 | METH_SWC_GetCoreWindow, 239 | METH_SWC_Present1, 240 | METH_SWC_IsTemporaryMonoSupported, 241 | METH_SWC_GetRestrictToOutput, 242 | METH_SWC_SetBackgroundColor, 243 | METH_SWC_GetBackgroundColor, 244 | METH_SWC_SetRotation, 245 | METH_SWC_GetRotation, 246 | METH_SWC_SetSourceSize, 247 | METH_SWC_GetSourceSize, 248 | METH_SWC_SetMaximumFrameLatency, 249 | METH_SWC_GetMaximumFrameLatency, 250 | METH_SWC_GetFrameLatencyWaitableObject, 251 | METH_SWC_SetMatrixTransform, 252 | METH_SWC_GetMatrixTransform, 253 | METH_SWC_GetCurrentBackBufferIndex, 254 | METH_SWC_CheckColorSpaceSupport, 255 | METH_SWC_SetColorSpace1, 256 | METH_SWC_ResizeBuffers1, 257 | METH_SWC_SetHDRMetaData, 258 | METH_DXGI_QueryInterface, 259 | METH_DXGI_AddRef, 260 | METH_DXGI_Release, 261 | METH_DXGI_SetPrivateData, 262 | METH_DXGI_SetPrivateDataInterface, 263 | METH_DXGI_GetPrivateData, 264 | METH_DXGI_GetParent, 265 | METH_DXGI_EnumAdapters, 266 | METH_DXGI_MakeWindowAssociation, 267 | METH_DXGI_GetWindowAssociation, 268 | METH_DXGI_CreateSwapChain, 269 | METH_DXGI_CreateSoftwareAdapter, 270 | METH_DXGI_EnumAdapters1, 271 | METH_DXGI_IsCurrent, 272 | METH_DXGI_IsWindowedStereoEnabled, 273 | METH_DXGI_CreateSwapChainForHwnd, 274 | METH_DXGI_CreateSwapChainForCoreWindow, 275 | METH_DXGI_GetSharedResourceAdapterLuid, 276 | METH_DXGI_RegisterStereoStatusWindow, 277 | METH_DXGI_RegisterStereoStatusEvent, 278 | METH_DXGI_UnregisterStereoStatus, 279 | METH_DXGI_RegisterOcclusionStatusWindow, 280 | METH_DXGI_RegisterOcclusionStatusEvent, 281 | METH_DXGI_UnregisterOcclusionStatus, 282 | METH_DXGI_CreateSwapChainForComposition, 283 | METH_DXGI_GetCreationFlags, 284 | METH_DXGI_EnumAdapterByLuid, 285 | METH_DXGI_EnumWarpAdapter, 286 | METH_DXGI_CheckFeatureSupport, 287 | METHOD_WRAP_COUNT 288 | } D3D9_wrapper_method; 289 | 290 | typedef struct D3D9_wrapper_event_data { 291 | void* ret; 292 | void** stackPtr; 293 | } D3D9_wrapper_event_data; 294 | 295 | typedef void (*pD3D9_wrapper_enable_event)(D3D9_wrapper_method method, D3D9_wrapper_mode mode); 296 | typedef wchar_t* (*pD3D9_wrapper_custom_d3d9_lib_query)(); 297 | 298 | #define D3D9_WRAPPER_ENABLE_EVENT_FNAME L"D3D_wrapper_enable_event" 299 | #define D3D9_WRAPPER_CUSTOM_D3D9_QUERY_FNAME L"D3D_wrapper_custom_d3d9_lib_query" 300 | 301 | /* 302 | Event name format 303 | 304 | prefix mode vtable method 305 | D3D9_ POST_/PRE_ DEV_/OBJ_ SetTexture/AddRef 306 | 307 | Example: 308 | D3D9_POST_DEV_Release 309 | 310 | Triggers after Device->Release() API call execution 311 | 312 | */ 313 | #define D3D9_WRAPPER_WATCH_EVENT(subscriber,name,proc,priority) gAPI->watch_event(gAPI->query_event(gAPI->hash_name((wchar_t*)name)), gAPI->hash_name((wchar_t*)subscriber),(gw2al_api_event_handler)&proc, priority) 314 | 315 | typedef struct D3D9_wrapper { 316 | pD3D9_wrapper_enable_event enable_event; 317 | } D3D9_wrapper; 318 | --------------------------------------------------------------------------------