Compare commits

...

338 Commits

Author SHA1 Message Date
hakril 520fa864b8 Disable ARM64 tests until github publish ARM64 github runners 2025-03-07 15:28:54 +01:00
hakril 6c588cf723 Improve thread CONTEXT defitions + ARM64_CONTEXT 2025-03-06 10:30:00 +01:00
hakril 8eb3384fcf Change test exe to msiexec.exe + pop_proc64 force machine AMD64 with PROC_THREAD_ATTRIBUTE_MACHINE_TYPE 2025-02-14 18:52:22 +01:00
hakril b4c0223377 Fix typo in test import 2025-02-14 17:01:00 +01:00
hakril 11665c4608 More xfail for ARM64 -> @cross_heaven_gates 2025-02-14 16:52:04 +01:00
hakril 45b781b96c Still playing with xfail identification for arm64 tests 2025-02-13 20:53:03 +01:00
hakril 83af73a872 Fix tests\test_injection.py 2025-02-12 12:18:38 +01:00
hakril be935b0f68 Improve test marking 2025-02-12 10:26:41 +01:00
hakril 8a14cc5b3a Automatic xfail on python injection for ARM64 target process 2025-02-12 09:51:56 +01:00
hakril 1ad456049a Improve stubborn stability on Windows 17763 2025-02-11 18:24:46 +01:00
hakril 16e10af8d8 Testing ARM64 CI continue-on-error 2025-02-11 17:41:19 +01:00
hakril ebded59c43 More test stability for ARM64 2025-02-11 17:12:22 +01:00
hakril a418035e1e More test stability 2025-02-11 15:37:09 +01:00
hakril e3c6deeee7 Fix hang in test_getset_syswow_context on ARM64 2025-02-11 14:37:44 +01:00
hakril d4952e21ba More arm64 heaven gate NotImplementedError() 2025-02-11 14:03:35 +01:00
hakril fc0c81eb70 Fix pe parsing for section with 8bytes name 2025-02-11 10:37:00 +01:00
hakril bd52b1a5a3 More tests adaptation for arm64 2025-02-10 15:26:41 +01:00
hakril 064b22f99e Still improving tests for ARM64 2025-02-10 10:01:55 +01:00
hakril 909669321b Improve pipe tests stability / error trigger 2025-02-10 08:50:08 +01:00
hakril 405616290f Improve test_pe fixture stability 2025-02-08 19:44:39 +01:00
hakril a93c9b7f11 Fix typo 2025-02-08 19:31:45 +01:00
hakril 06b96e65d0 More NotImplementedError for ARM64 2025-02-08 13:12:05 +01:00
hakril b51a6e1808 Adding CreateRemoteThreadEx definition 2025-02-07 13:39:00 +01:00
hakril 26b42a0587 Adding ctypes_generation for PROC_THREAD_ATTRIBUTE_X 2025-02-06 22:53:42 +01:00
hakril 13f2993cf1 Fix tests for older python 2025-02-06 21:59:44 +01:00
hakril 4113d8ad3f Reactivate full intel. Check we broke nothing 2025-02-06 21:02:46 +01:00
hakril 75f1121182 more arm64 CI tests 2025-02-05 23:14:41 +01:00
hakril 5c25e333e6 Full test suite on arm64 for the lol 2025-02-05 22:57:18 +01:00
hakril 54b518ca5f More x86->arm64 limitation exploration 2025-02-05 22:52:06 +01:00
hakril d094fb8209 More limitation identification for x86 on arm64 heaven gate 2025-02-05 22:40:12 +01:00
hakril 017867d79d Fox typo 2025-02-05 22:30:51 +01:00
hakril e58d80c3c5 More raise NotImplementedError on x86 -> arm64 heaven gate 2025-02-05 22:24:40 +01:00
hakril d7ff43a829 Working on expliciting limitation of x86-on-arm64 NotImplementedError 2025-02-05 22:09:02 +01:00
hakril 013c35bf40 Improve sample\find_value.py to search in Enums 2025-02-05 22:05:58 +01:00
hakril 6a54bca39a Fix process.py simple_arm64 import 2025-02-04 20:02:43 +01:00
hakril 2a1217e7b8 Implem current_thread.teb for ARM64 + recognize ARM64 PE in pe_parse 2025-02-04 20:00:58 +01:00
hakril 6ade13d6bb Fix pytest commandline 2025-02-03 13:53:18 +01:00
hakril b1d2d5719b Improve range of arm64 testing 2025-02-03 13:47:08 +01:00
hakril 5352013a8f Fix tests/test_simple_arm64.py error when capstone is not installed 2025-02-03 13:36:32 +01:00
hakril bce15d0d3c simple_arm64.Mov(reg, reg) that redirect to Orr(reg, zero, reg) 2025-02-03 09:11:01 +01:00
hakril 1889899535 Readd RtlGetCurrentPeb lost in rebase 2025-02-02 19:28:16 +01:00
hakril 1bc7818552 Still playing with simple_arm64 2025-02-02 19:19:28 +01:00
hakril 7c96da8c75 Working on simple_arm64.py 2025-02-02 19:19:28 +01:00
hakril 458a0d0558 First implem of arm64.assemble() 2025-02-02 19:19:28 +01:00
hakril 493fe75be8 arm64: Ret() encoded \o/ time to tests functions calls 2025-02-02 19:19:28 +01:00
hakril a7b6ddedd6 Add generated sources 2025-02-02 19:19:28 +01:00
hakril e7679ecfcf [WIP] simple_arm64 + testsuite 2025-02-02 19:19:12 +01:00
hakril 4e5325c8ea Process.architecture now returns flags 2025-02-02 19:19:12 +01:00
hakril 9b5be5ffd5 more arm testing of process.architecture 2025-02-02 19:19:12 +01:00
hakril 720385d15a Still playing with process.architecture 2025-02-02 19:19:12 +01:00
hakril 2cef60377f Add some ctypes definition 2025-02-02 19:19:12 +01:00
hakril ce13bf08e3 First try at WinProcess.architecture 2025-02-02 19:19:12 +01:00
hakril 8151292042 Adding ctypes defintion associated with process & architecture 2025-02-02 19:19:12 +01:00
hakril 646e55c740 fix typo 2025-02-02 19:18:43 +01:00
hakril 00a2f1a7d6 add utils.image_file_machine_to_processor_architecture() 2025-02-02 19:18:43 +01:00
hakril 2c9a159a81 Add system.architecture & process.architecture 2025-02-02 19:18:43 +01:00
hakril ea6b7b932d arm64: more api tests 2025-02-02 19:16:24 +01:00
hakril 314cd2b862 More arm exploration of api responses 2025-02-02 19:16:24 +01:00
hakril 3a3e6bc931 improve conftest 2025-02-02 19:15:21 +01:00
hakril 234844cf12 Remove breakpoint 2025-02-02 19:15:21 +01:00
hakril 1297996725 New implem of is_wow_64(handle) 2025-02-02 19:15:21 +01:00
hakril 1a9b680fba Added some wow64 definition + created functions/syswow64.txt 2025-02-02 19:15:21 +01:00
hakril e37f87c35c Adapt test_syswow.py for arm exploration 2025-02-02 19:15:21 +01:00
hakril 6eb31e9205 [CI] more arm fun 2025-02-02 19:15:21 +01:00
hakril b22c5d6055 [CI] more arm fun 2025-02-02 19:15:18 +01:00
hakril 458774f1ac [CI] more arm64 tests 2025-02-02 19:10:34 +01:00
hakril fd00e97d80 [CI] Playing/Testing CI on Windows-ARM64 (Fix yml2) 2025-02-02 19:10:33 +01:00
hakril 533cddae97 [CI] Playing/Testing CI on Windows-ARM64 (Fix yml) 2025-02-02 19:10:33 +01:00
hakril 57076b84dd [CI] Playing/Testing CI on Windows-ARM64 2025-02-02 19:10:33 +01:00
hakril 1c498aa0e9 Trying to setup simple ARM64 CI 2025-02-02 19:09:26 +01:00
hakril 7abda41a9d Merge pull request #77 from hakril/improve_testing
Small improvments
2025-02-02 09:56:05 -08:00
hakril 3489a560fb Remove some pytest warning 2025-02-02 18:40:07 +01:00
hakril 6fd32762da Try improving CurrentProcessReadSyswow stability 2025-02-02 16:54:23 +01:00
hakril aab4fdc02d Try new handle method for CurrentProcessReadSyswow 2025-02-02 16:35:16 +01:00
hakril ff4161602c Small improvments 2025-02-02 16:29:05 +01:00
hakril 8932682ba2 Merge pull request #76 from hakril/teb_definition
TEB defintion and `Thread.teb` field
2025-02-02 07:15:21 -08:00
hakril b9d54b3212 Last fix of docstring escape + trying pytest.mark.xfail 2025-02-02 00:20:18 +01:00
hakril 60e3d4a2b2 Update .gitignore 2025-02-02 00:00:32 +01:00
hakril 88b93dd64e More CI tests for PR & double-trigger 2025-02-01 23:37:28 +01:00
hakril 8beb9fa092 Prevent double-trigger in CI 2025-02-01 23:20:42 +01:00
hakril f668288dfc Fix bad escape in some docstrings 2025-02-01 22:44:53 +01:00
hakril 43fd2b3ca4 Update timeout time in tests 2025-02-01 22:27:11 +01:00
hakril f89a24ae48 Add pytest-timeout in CI 2025-02-01 22:12:21 +01:00
hakril d7cf3e0f8b Fix CurrentThread.teb_base being a property and not a fixedproperty 2025-02-01 14:22:02 +01:00
hakril 54be297828 Trying to improve print output when stubborn call fails 2025-02-01 11:55:49 +01:00
hakril 5da27a78d2 Fix badcode in syswo64.py 2025-02-01 11:35:22 +01:00
hakril f7542e686c More teb64 fix 2025-02-01 11:34:09 +01:00
hakril 029f7cba35 More TEB syswow fix 2025-01-31 17:37:07 +01:00
hakril 36c1eb647f Fix WinThread.teb_syswow 2025-01-31 17:13:33 +01:00
hakril 4bbdb538de Add support for remote TEB + tests 2025-01-31 17:00:04 +01:00
hakril 6ccccf7e90 V1 of WinThread.teb 2025-01-31 13:46:11 +01:00
hakril d05801dd46 Regen generated_def 2025-01-31 13:46:11 +01:00
hakril e8930af3ad Restore PEB_LDR_DATA definition to precise one 2025-01-31 13:46:11 +01:00
hakril c6898a429c Add definition of TEB + tests on offset of generated ctypes 2025-01-31 13:46:11 +01:00
hakril 13c28422d4 process improv : bitness based on PVOID size + CurrentProcess.name based on GetProcessImageFileNameW + peb addr based on RtlGetCurrentPeb 2025-01-31 13:46:11 +01:00
hakril 3818bb2e3d Add V1 of ctypes_definition for TEB 2025-01-31 13:46:11 +01:00
hakril 2b64a6d316 Add definition for _TEB 2025-01-31 13:46:11 +01:00
hakril 5d7e074039 Merge pull request #73 from dariushoule/windows_store_interpreter_tweaks
Improved behavior when running under Microsoft Store python interpreters
2025-01-29 00:57:08 -08:00
hakril 929959d2ac Add pull_request as tests.yml CI trigger 2025-01-29 09:23:04 +01:00
hakril 92b3cfcb2b Adapt sample + docs for microsoft-store-python-injection 2025-01-28 19:45:36 +01:00
Darius Houle 082b13112d missed docstring* 2025-01-26 23:46:19 -07:00
Darius Houle 52859d19c4 feedback revisions 2025-01-26 23:38:50 -07:00
hakril 6d621e0716 Merge pull request #74 from hakril/improve_injection_exceptions
Improve injection error reporting
2025-01-26 10:15:46 -08:00
hakril f80c473de0 More sleep for more test stability ? 2025-01-24 10:46:13 +01:00
hakril 98abd731e4 Improve injection.perform_manual_getproc_loadlib_X with error reporting 2025-01-24 10:37:18 +01:00
hakril d0a5dc3c61 more testing 2025-01-24 10:37:18 +01:00
hakril 2644b53563 Adding error reporting for injection via k32 imports 2025-01-24 10:37:18 +01:00
hakril ba704d6525 Improve test on injection: test on suspended processes 2025-01-24 10:37:18 +01:00
hakril 42546483dd Add tests to reproduce setup/errors of #72 2025-01-24 10:37:18 +01:00
hakril 16242d3436 Merge pull request #75 from hakril/new_pebldrdata_def
Improve tests stability + new PEB_LDR_DATA definition
2025-01-24 01:36:02 -08:00
hakril f99dc61bb2 More tests fix stability 2025-01-24 09:47:50 +01:00
hakril ddc9f16e9c More tests fix 2025-01-24 09:30:23 +01:00
hakril ab4a4561a3 Trying to improve stability of test_standard_breakpoint_X_remove 2025-01-24 09:13:01 +01:00
hakril db8d782e3a Update _PEB_LDR_DATA definition with fields known since WinXP 2025-01-24 08:59:37 +01:00
Darius Houle 6715b08ed7 2 test robustness improvements, helpful message on interpreter sandbox error 2025-01-20 12:53:27 -07:00
hakril 217da0d6b1 Merge pull request #71 from hakril/more_ci_setup
Improve Test & CI
2025-01-15 14:50:59 -08:00
hakril 7c0c130eec reduce risk ok test_standard_breakpoint_remove deadlock 2025-01-15 23:36:52 +01:00
hakril 774c35d943 [CI] Trying to test on multiple windows target (2) 2025-01-15 22:59:30 +01:00
hakril b1c147dfaa [CI] Trying to test on multiple windows target 2025-01-15 22:56:42 +01:00
hakril d63731f2d3 Merge pull request #70 from hakril/more_stubborn_tests
More stubborn tests & Implem
2025-01-15 13:52:42 -08:00
hakril 99c28ac035 stubborn: add support for new PRIV_RESOLVER_INFO_17763 seen on 10.0.17763 2025-01-15 22:32:00 +01:00
hakril d6a6e6496a [CI] Test CI on windows 2019 2025-01-13 15:14:16 +01:00
hakril c66b20f0f3 Update readme links with now workflow name 2025-01-10 14:29:59 +01:00
hakril 947093cf5b Merge pull request #69 from hakril/improve_version_name
Improve `windows.system.version_name`
2025-01-10 04:37:05 -08:00
hakril 0c9c7d3f49 Improve system.versionstr + doc + reset CI to windows-latest 2025-01-10 11:41:40 +01:00
hakril 25534c87ca [fix] Trying github CI on server-2025 for test version 2025-01-10 11:26:19 +01:00
hakril 06a986b57e Trying github CI on server-2025 to test version_name 2025-01-10 11:18:21 +01:00
hakril 0a0b96a9ca Fix new version_name to unicode 2025-01-10 11:09:00 +01:00
hakril 766f1f5e0a Improving system.version_number for 10+ by taking build number into account 2025-01-10 11:01:05 +01:00
hakril 57bcbca837 Merge pull request #68 from hakril/small_improvements
Add some ctypes generation + Improve RPCClient error message & error code parsing
2025-01-08 11:21:17 -08:00
hakril 68ea3c3a02 Regenerate ctypes 2025-01-08 19:50:45 +01:00
hakril 9bd9ddbd7a Revert "[TEST] Breaking ctypes generation result for CI test purpose"
This reverts commit 1cb8ad02c9.
2025-01-08 19:40:23 +01:00
hakril d79f7c609a [CI] Fix CI 2025-01-08 19:39:12 +01:00
hakril 22672613a9 [CI] Test that ctypes_generation results can be executed 2025-01-08 19:38:23 +01:00
hakril 1cb8ad02c9 [TEST] Breaking ctypes generation result for CI test purpose 2025-01-08 19:35:25 +01:00
hakril 3428acc580 Add a test for gdef.HRESULT_FACILITY() 2025-01-08 19:33:56 +01:00
hakril ee37178bcf improve RpcClient error reporting in call() 2025-01-08 19:33:29 +01:00
hakril f2a287d818 Add some ctypes generation + HRESULT_FACILITY macro 2025-01-08 19:31:28 +01:00
hakril e69302449c Merge pull request #67 from hakril/ci_ctypes_generation
Add CI tests for ` ctypes_generation\generate.py`
2025-01-08 10:17:28 -08:00
hakril 1f86a8a1c5 Fix broken ctypes generation : duplicate define 2025-01-08 19:09:43 +01:00
hakril 2737a64fd7 Improve github actions 2025-01-08 19:07:26 +01:00
hakril 9163e981fc Add github CI to test .\ctypes_generation\generate.py 2025-01-08 18:57:21 +01:00
hakril 17d4644973 Merge pull request #66 from hakril/multiversion_localthis
Multiversion ORPC call in `RpcClient`
2025-01-08 06:51:37 -08:00
hakril 315ad8ed9e Small refactor in RPCCLient.call() 2025-01-07 19:14:33 +01:00
hakril da0f403507 Update documentation build 2025-01-07 18:29:36 +01:00
hakril 31f7d1c593 Add windows.system.display_version + update version number + doc 2025-01-07 18:23:32 +01:00
hakril 0e9edcf440 Improve AlpcClient/Server __del__ method 2025-01-07 18:23:01 +01:00
hakril 0b0b88a270 more ORPC test : windows iexplore this time 2025-01-07 18:23:01 +01:00
hakril a45ad2b48c Remove breakpoint in test_orpc_network_manager 2025-01-07 18:23:01 +01:00
hakril d535440a44 Add stubborn implementation + first orpc test based on that 2025-01-07 18:23:01 +01:00
hakril 4b034fc0fe Add RpcClient with DCOM capabilities handling multiple versions (localthis/localthat) 2025-01-07 18:23:01 +01:00
hakril c040ec368e Working on multi-version localthis handling 2025-01-07 18:23:01 +01:00
hakril 9a67dca363 Merge pull request #65 from hakril/service_handler
Service handler functions
2024-12-31 05:47:11 -08:00
hakril 9041326d82 Regen documentation 2024-12-31 11:25:05 +01:00
hakril ee2b0e11e5 update version number 2024-12-31 11:11:15 +01:00
hakril 4985f7bba5 update documentation for service 2024-12-31 11:04:10 +01:00
hakril 99d39604df Finishing samples/python_service.py 2024-12-31 10:23:08 +01:00
hakril 196d4dcac4 Add functions implemented by services in ctypes_generation 2024-12-20 09:08:01 +01:00
hakril 9c1c125931 Merge pull request #63 from hakril/fileinfo_ctypesgen
Add some func/struct associated with [Set/Get]FileInformationByHandle
2024-11-08 14:53:06 +01:00
hakril dce802e0f3 Add some func/struct associated with [GS]etFileInformationByHandle 2024-11-08 14:46:48 +01:00
hakril 8d517f29cf Merge pull request #62 from hakril/1.0.1
Version  1.0.1
2024-11-05 09:59:51 +01:00
hakril 2ff11e7e5f Candidate for 1.0.1 2024-11-05 09:34:04 +01:00
hakril e0852a2866 Merge pull request #61 from hakril/comupdate
Add multiple ctypes defintions
2024-11-04 17:03:23 +01:00
hakril 68a37443fd Update some access-right names 2024-11-04 16:00:30 +01:00
hakril 72962be653 Improve RPCClient 2024-10-28 13:52:00 +01:00
hakril b25fc491df More tests fixup 2024-10-24 18:34:00 +02:00
hakril 3de820046d Fix or improv test resilience 2024-10-24 17:32:20 +02:00
hakril 92863f7944 improve test_pe_parse.py resiliance to system32 pe format change 2024-10-24 17:13:28 +02:00
hakril db14bc0294 Small COM fix/improvements 2024-10-23 10:10:40 +02:00
hakril 979f7ec77a Small fix in simple_x86 2024-10-23 09:56:06 +02:00
hakril 91c468eba0 Update generated_def and winproxy 2024-10-23 09:55:39 +02:00
hakril 0cd51a088e Big ctypes_generation update + add lot of structures/interfaces 2024-10-23 09:53:59 +02:00
hakril 13d0b6b3b7 Merge pull request #58 from hakril/improv_simple_assembly
Improve handling of some instructions in simple x86/x64
2024-06-27 15:14:20 +02:00
hakril cbadada375 Testing stuff for new CI config 2024-06-27 14:57:56 +02:00
hakril f90991022a Update CI with publish-unit-test-result-action/windows@v2 2024-06-27 14:46:59 +02:00
hakril cbf456ac4f Adding some generated_def related to Section & NtReadFile/NtWriteFile 2024-06-27 14:34:33 +02:00
hakril 53554f45ab Improve handling of Jmp/Call/Push/Pop 2024-06-27 14:22:40 +02:00
hakril 006dce7054 Add tests for non-handled instruction format in simple x86/x64 2024-06-27 14:03:39 +02:00
hakril 7475c8893e Merge pull request #57 from hakril/uprade_version
Uprade version to 1.0.0
2024-06-14 17:26:05 +02:00
hakril ddb22444d2 Update version number to 1.0.0 + update documentation 2024-06-14 17:13:16 +02:00
hakril 1ab7d3cad6 improve documentation of generated code 2024-06-14 17:10:46 +02:00
hakril 50b0493364 Upgrade sphinx conf + update some doc 2024-06-14 16:19:44 +02:00
hakril e3fd66b3d6 ctypes generation detect duplicate def in source file + fix duplicates 2024-06-14 14:24:19 +02:00
hakril 703c7f2ec2 Fix windows.native_exec.cpuid for py3 2024-06-14 14:22:21 +02:00
hakril b8dd03a1ef Fix symbol example in readme.md 2024-06-11 10:08:05 +02:00
hakril 6f00e753dd Fix readme 2024-06-10 22:21:40 +02:00
hakril 9c1c24bfda Update links in readme to https 2024-06-10 22:20:19 +02:00
hakril d7d936d695 Merge pull request #53 from hakril/winapi-wide
Full unicode compatibility
2024-06-10 21:50:45 +02:00
hakril 95c3f81619 update readme for official unicode + python3 full support 2024-06-10 21:27:36 +02:00
hakril 8472fd12a7 docs/generate_samples.py now use py3 2024-06-10 21:27:13 +02:00
hakril 59b3531d15 Update samples output 2024-06-10 21:26:56 +02:00
hakril bc13f7a497 Add check_encoding_config.py sample 2024-06-10 21:26:15 +02:00
hakril b1f0d74a3a Fix serviceManager handle closing + winproxy.SetThreadToken for py3 2024-06-10 21:25:08 +02:00
hakril 92742a4e97 Fix samples for python3 2024-06-10 21:24:37 +02:00
hakril 9770165487 Update readme 2024-06-10 18:18:23 +02:00
hakril bcb6327f60 Trying to fix github CI secondary rate limit errors 2024-06-10 17:44:39 +02:00
hakril 40f9420078 More tests & unicode values 2024-06-10 17:28:48 +02:00
hakril 36b4bf38fc Regen ctypes after rebase 2024-06-05 22:52:48 +02:00
hakril 8f828a6018 Remove breakpoint from test 2024-06-05 22:47:26 +02:00
hakril b003d9ee32 reintroduce system.build_number as system.versionstr 2024-06-05 22:47:26 +02:00
hakril 13dc869af6 Add unicode tests + comments 2024-06-05 22:47:26 +02:00
hakril 4b5b924224 Working on new sample for debug.symbols type exploration 2024-06-05 22:47:26 +02:00
hakril 2c518a77f9 Improve Symbol API : finish passing to unicode 2024-06-05 22:47:24 +02:00
hakril d61067fe5e Transfering base of symbol API to Wide + tests 2024-06-05 22:47:06 +02:00
hakril bb4271d97b windows.system.device_manager handle unicode + test 2024-06-05 22:46:51 +02:00
hakril d756cb1027 windows.system.etw support unicode + tests 2024-06-05 22:46:51 +02:00
hakril 5ae315b317 winutils fonction use Wide APIs 2024-06-05 22:46:51 +02:00
hakril 6f55a4736e windows.system now use W() APIs 2024-06-05 22:46:51 +02:00
hakril cab8be5311 Fix some tests 2024-06-05 22:46:51 +02:00
hakril d1e13fda8a Improve test for unicode 2024-06-05 22:46:51 +02:00
hakril 4bcec38cc1 volume.py (logicaldrives) now use W() APIs 2024-06-05 22:46:48 +02:00
hakril 3ad9bad56e Trying to improve workflow with better pytest results name 2024-06-05 22:45:46 +02:00
hakril a8414c975d Pipe API use Wide + support unicode 2024-06-05 22:45:46 +02:00
hakril 87e1c998a6 Add test on logicaldrives for py3 2024-06-05 22:45:46 +02:00
hakril 736a72255b More pycompat fixes 2024-06-05 22:45:46 +02:00
hakril 247140123c More tests fix 2024-06-05 22:45:46 +02:00
hakril 75dfe847ec More strange sys.stdout fixes for CI 2024-06-05 22:45:46 +02:00
hakril a580d825ae More unicode compat / more fix 2024-06-05 22:45:46 +02:00
hakril 1b5097050b Remove breakpoint in test_security_descriptor_from_unicode_file() 2024-06-05 22:45:46 +02:00
hakril 210bc648ec Fix error in pycompat 2024-06-05 22:45:46 +02:00
hakril 412c725fba Improve pycompat urepr_encode for non-tty stdout + fix some tests 2024-06-05 22:45:46 +02:00
hakril 6586018059 Improve pycompat when stdout is not a tty (no stdout.encoding) 2024-06-05 22:45:46 +02:00
hakril 7a7e6935d1 More encoding testing of CI 2024-06-05 22:45:46 +02:00
hakril a580153da9 More encoding tests 2024-06-05 22:45:46 +02:00
hakril 72a7f52ae2 Fix enumerate_threads_setup_owners() 2024-06-05 22:45:46 +02:00
hakril 4120c6e7e3 Fix failed merge 2024-06-05 22:45:46 +02:00
hakril ae5bf70b49 Improve ctypes generation determinism for py2 vs py3 generator 2024-06-05 22:45:33 +02:00
hakril 44ac6356e1 ctypes_generation/generate.py works on py3 + deterministic on py2 & py3 2024-06-05 22:45:16 +02:00
hakril 9ce6fcef9c Update ctypes_generation 2024-06-05 22:44:16 +02:00
hakril 0a2ed77302 Adding encoding documentation 2024-06-05 22:43:30 +02:00
hakril 33766c2ffd Working on WinAPI Wide-transition 2024-06-05 22:43:30 +02:00
hakril 5217506705 Change system.build_numer to actuel int NtBuildNumber + added system.kuser_shared_data 2024-06-05 22:43:30 +02:00
hakril 99fbec8ec4 Passed services API to Wide functions 2024-06-05 22:43:30 +02:00
hakril e313510fe5 Fix object_manager.KernelObject.__repr__ to handle unicode name 2024-06-05 22:43:30 +02:00
hakril 9eb4405cce Passed process relation API to Wide functions 2024-06-05 22:43:30 +02:00
hakril 7883e5f189 Added pycompat urepr_unicode for unicode repr in python2 + fix / kuser_shared_data in ctypes generation 2024-06-05 22:43:29 +02:00
hakril 93540ddbe5 Merge pull request #56 from hakril/io_ctypes_generation
Added IO definitions + ability to use CTL_CODE() macro in windef
2024-06-05 21:31:36 +02:00
hakril 6bf8f77617 Added IO definitions + ability to use CTL_CODE() macro in windef 2024-06-03 18:53:16 +02:00
hakril ee409e4c72 Merge pull request #55 from hakril/volume_dospath_fix
Change LogicalDrive.path logic based on QueryDosDevice returned valudes
2024-05-30 11:56:53 +02:00
hakril f957c640c7 Change LogicalDrive.path logic based on QueryDosDevice returned valudes 2024-05-28 19:03:46 +02:00
hakril 328735bd3a Merge pull request #54 from hakril/improve_simple_x64
Implem x64 mem_access [RIP+DISP32]
2024-05-21 18:52:57 +02:00
hakril feafb52c2a Implem x64 mem_access [RIP+DISP32] + few test + fix raw instr 2024-05-21 16:05:45 +02:00
clement rouault 275d054ba7 Add ntcall.py sample 2024-05-20 11:28:34 +02:00
clement rouault 36db869572 POC code for registry->security descriptor interface 2024-05-20 11:25:56 +02:00
clement rouault 74f5d43159 Improve SafeArray obj+handling in com.py 2024-05-20 11:22:50 +02:00
clement rouault dade97ff16 Update comments/doc to event_log.py 2024-05-20 11:22:07 +02:00
clement rouault 2db6037658 Small improvement/add to WMI objects/apis 2024-05-20 11:21:47 +02:00
clement rouault b68369936a Add some attributes to bits objects 2024-05-20 11:20:34 +02:00
clement rouault 85a41fbca0 Add POC of winutils.lookup_name() 2024-05-20 11:20:14 +02:00
clement rouault dab2a57d75 Change process pop by windows.test to winver.exe 2024-05-20 11:18:43 +02:00
hakril d3d6410276 Update readme + version number (#52) 2024-05-19 19:12:12 +02:00
hakril 9a0868da15 Enable debugger testing in CI (#50)
Fix hang & improves tests related to the debugger + activate Debugger tests in CI
2024-05-18 23:40:34 +02:00
clement rouault 117ea557f7 Trying to improve stability in CI with more sleep() 2024-05-18 23:31:09 +02:00
hakril f92204a16f Change def of OBJECT_ATTRIBUTES struct to handle remotectypes (#51) 2024-05-18 23:11:35 +02:00
hakril d8b2770046 Improve test config/code for better test coverage in CI (#49)
* Improve test detection of other-bitness installation status

* Install capstone-windows in CI for better test coverage

---------

Co-authored-by: clement rouault <clement.rouault@exatrack.com>
2024-05-14 20:56:50 +02:00
hakril e3bcde7d63 Add github actions for pytest CI (#48)
Integration of github CI testing workflows for python2.7 / 3.6 & 3.11 + Fix some tests & code failing
2024-05-14 18:44:04 +02:00
clement rouault 494317ee99 Add some ctypes definition associated with file APIs 2024-05-11 22:27:18 +02:00
clement rouault 46daca9539 Merge branch 'fix_alpc_sample_py3' 2024-05-11 22:17:59 +02:00
clement rouault 82d0c5cc5c Updat eversion number + Add missing ctypes_generation environ.txt 2023-05-26 09:31:06 +02:00
clement rouault 0eb78f21bd Added Environment API to winproxy + windows.system.environ : a unicode environ even on py2 2023-05-26 09:25:19 +02:00
clement rouault 0f501ab46d Service API are now full Wide / service object now use unicode strings 2023-01-30 13:12:18 +01:00
hakril f2ac6ea455 Fix alpc sample py3 (#45)
* ReAdded AF_ flags removed by mistake from ctypes_generation

* Adapt ALPC samples to python3 (fix #44)

---------

Co-authored-by: clement rouault <clement.rouault@exatrack.com>
2023-01-30 13:03:34 +01:00
clement rouault 2828f496bd Adapt ALPC samples to python3 (fix #44) 2023-01-12 12:53:38 +01:00
clement rouault f295a081b1 ReAdded AF_ flags removed by mistake from ctypes_generation 2022-11-29 12:58:43 +01:00
clement rouault 681fba942f Added SecurityDescriptor explain for SYSTEM_RESOURCE_ATTRIBUTE_ACE_TYPE 2022-11-28 17:50:51 +01:00
clement rouault f4f9798d39 Added some netapi ctypes_generation / winproxy apis 2022-11-28 17:50:17 +01:00
clement rouault 09fa7c49ec Adding windows.winproxy.RtlMoveMemory 2022-10-31 10:24:25 +01:00
clement rouault c1aad71dd3 Improved integration of ws2_32 API + add demo_ws2_32.py sample 2022-10-31 10:18:23 +01:00
clement rouault 5d9e9a240f Added base for ws2_32 winproxy (define/struct/functions) + RtlMoveMemory 2022-10-28 18:23:56 +02:00
clement rouault 267ed1e85d Add some ctypes_generation and generated def 2022-08-05 11:33:25 +02:00
clement rouault d7d2dacf33 Fixed thread.teb_base + add thread.teb_syswow_base for TEB64 of Syswow process 2022-08-05 11:30:45 +02:00
clement rouault 3d7266ad50 Added some generated def files 2022-05-27 15:35:13 +02:00
clement rouault 63dd0130f1 POC of windows.system.domain 2022-05-27 15:34:27 +02:00
clement rouault b8788058e5 Func parser try to not really on presence of WINAPI to search for io_info prefix on parameters 2022-05-09 17:41:01 +02:00
clement rouault fdef64c57f Added RegLoad/Unload to winproxy 2022-05-09 17:41:01 +02:00
clement rouault e156b05e0f Improving SecurityDescriptor API/functions 2022-05-09 17:41:01 +02:00
clement rouault a7d547f994 Improve ctypes_generation function parser for new MSDN format of [in] [out] parameters 2022-05-09 17:41:01 +02:00
clement rouault 5fa4ca6aae Fixed bug introduced in token.privileges in ad592980 + associated tests 2022-05-09 17:24:55 +02:00
hakril ad59298015 Token privilege code use W() API + use of GetNamedSecurityInfoW in security.py (fix issue #40) 2022-05-07 11:35:36 +02:00
clement rouault 59e2cefee0 Replace binary used for test as notepad.exe is now the Notepad.exe app + add check on pop_proc about result bitness 2022-04-01 14:29:05 +02:00
clement rouault d23a9813e9 Prevent Token.__repr__ to raise on access denied 2022-04-01 14:10:41 +02:00
clement rouault 447069df32 Process listing now use Wide API (process name is still temporary a ascii string with backslashreplace) 2022-02-07 17:10:54 +01:00
clement rouault 77d90bc4fd Added Process32NextW/Process32FirstW to winproxy 2022-02-07 17:09:14 +01:00
clement rouault 82e3e0f3d0 Update test_pe_parsing_dotnet_32_current_process_64() 2022-02-03 15:22:18 +01:00
clement rouault 350a11515f Added winutils datetime_from_systemtime() 2022-02-03 15:16:46 +01:00
clement rouault 61e027a678 Allow custom timeout to eventlog query 2021-12-30 13:39:38 +01:00
clement rouault f9df80ca20 Improved handling of closing python in BaseSystemHandle.__del__ 2021-11-03 09:27:13 +01:00
clement rouault df44d38356 Added multiple genereted_def + fixed winproxy CreateFileW 2021-10-19 15:42:48 +02:00
clement rouault 1ad2ecba0d Fix samples/find_value.py py3 compat 2021-09-22 14:51:50 +02:00
clement rouault c4a40626b2 Improve windows.alpc message size handling and configuration using a global 2021-09-22 14:51:30 +02:00
clement rouault fa0baf0f14 Merge branch 'master' of github.com:hakril/PythonForWindows into master 2021-09-10 13:03:00 +02:00
clement rouault 77dad71b7e Added NtTerminateProcess to winproxy 2021-09-10 13:02:44 +02:00
clement rouault 735b18b369 Added some ntdll function to winproxy 2021-09-07 18:08:59 +02:00
clement rouault a814012574 windows.native_exec.create_function can now accept ctypes calling convention as parameter 2021-09-07 18:07:02 +02:00
clement rouault c2be36757f Improve injection capacity 2021-09-07 17:56:06 +02:00
hakril 134bd844d6 Fixed issue #30 about NdrContextHandle packing in py3 2021-09-06 22:07:00 +02:00
clement rouault f45a997179 Merge branch 'master' of github.com:hakril/PythonForWindows into master 2021-08-05 11:24:36 +02:00
clement rouault 4d988d2668 Added some function/struct to ctypes generation + wininet APIproxy 2021-08-05 11:24:18 +02:00
hakril b8ceea8f22 Added simple_x[86/64] listing of instrtuction to documentation + regenerated doc 2021-08-03 22:59:04 +02:00
clement rouault af7e64638c Fixed pe_parse for non-standard SizeOfOptionalHeader + .NET PE32 mapped in 64b processes 2021-07-29 20:01:51 +02:00
clement rouault 1de666c652 Merge branch 'master' of github.com:hakril/PythonForWindows into master 2021-07-28 13:47:53 +02:00
clement rouault e7789312fd Added winproxy.GetSystemTimes & some other time functions 2021-07-28 13:47:20 +02:00
Mastho d4fd2ffdbc Fix winutils check_debug API (#25)
Now using the windows.system.registry object
2021-07-22 19:36:31 +02:00
clement rouault 8b90c96c1a utils.create_process now use CreateProcessW for simpler py3 usage + fix code in WinProcess.read_[w]string + associated tests 2021-07-13 13:22:50 +02:00
clement rouault 42fac92940 Added some setter in task-scheduled definition 2021-06-25 17:32:14 +02:00
clement rouault acb66cfa78 Improv ctypes generation determinism for 'from .{0} import *' in dependancies 2021-06-25 17:22:16 +02:00
clement rouault 522c92cb45 ctypes generation file : meta.py is now one-line per entry for better git-diff 2021-06-25 17:19:56 +02:00
clement rouault 378ed31778 Added LookupAccountName functions 2021-06-25 17:19:10 +02:00
clement rouault 5a07f6a444 Removed temp/debug ctypes structure in ctypes_generation 2021-06-23 11:51:12 +02:00
clement rouault fb9ff96a11 Fixed current_process.read_string/wstring for page end + tests 2021-06-22 19:03:35 +02:00
clement rouault 6552312275 Added a custom version of SYSTEM_PROCESS_INFORMATION 2021-06-22 19:02:45 +02:00
clement rouault 5fdcbee121 Improved determinism of ctypes generation to reduce size of diff when regenerating 2021-06-21 13:45:24 +02:00
clement rouault dfdad6edf0 Added some fields to windows.debug.symbols.SymbolType 2021-06-21 10:46:54 +02:00
clement rouault d68ff123b3 Added/Updated some _SYSTEM_INFORMATION_CLASS related enum/struct 2021-06-21 10:46:15 +02:00
clement rouault 1f70bdd49a Added some PE resource API in generated_def / winproxy 2021-06-18 17:22:38 +02:00
clement rouault 6fe784030f Added some ETW define + Trace.start() now take a mode param 2021-06-18 17:21:36 +02:00
clement rouault 408fe8aaa4 Added some crypto definitions + POC of dpapi with crypto.protect/unprotect 2021-06-15 15:38:14 +02:00
clement rouault 1d128f43ab native_function.CustomAllocator now has the ability to be closed, freeing its pages. 2021-06-15 15:35:46 +02:00
clement rouault c68dc4e29a Syswow.py 32->64 calls should now work with multi-threads 2021-06-15 15:33:28 +02:00
clement rouault cd87544fc7 Fix a concurrency error in simple_x86 2021-06-15 15:32:23 +02:00
hakril 9549942e6f Merge branch 'BrunoPujos-master' 2021-05-24 23:17:51 +02:00
hakril 4f2e43ae6b Merge branch 'master' of https://github.com/BrunoPujos/PythonForWindows into BrunoPujos-master & regenerated windows.generated_def 2021-05-24 23:16:59 +02:00
clement rouault d05c067f65 Added compress_buffer utils + custom compression type to decompress_buffer 2021-05-24 15:14:14 +02:00
clement rouault 015517cd71 Fixed tests for new import windows.pipe requirement 2021-05-24 15:13:30 +02:00
clement rouault 4e67a5ac95 Added Multiple function / define to generated def 2021-05-24 15:05:35 +02:00
BrunoPujos 5052d99199 added .py autogenerated for event and filemapping functions 2021-05-19 10:19:14 +02:00
BrunoPujos 83ca54d182 add auto-generated functions for event and file mapping; fix buf for OpenEventW which called OpenEventA 2021-05-18 17:13:02 +02:00
srounet eab219610d add Pushad/Pushfd/Pushfq mnemonics and alias to Jz (#20)
* add register mnemonics and alias to Jz

* remove push/popal use expected_result to overwrite result

* add x64 instructions

* fix an issue with pushfd popfd Instructions not matching the intel specification
2021-05-04 19:31:42 +02:00
clement rouault 83b02310e4 Added some doc in eventlog xpath usage 2021-04-28 13:54:22 +02:00
clement rouault 542eb33aa6 Fix issue #19 about x86/x64 bad Test encoding 2021-04-27 21:32:49 +02:00
clement rouault 39d683ffeb Fix & Test infinite look in regkey.values in certains conditions 2021-04-19 09:23:37 +02:00
clement rouault 3149961634 Retrieving process ppid now use limited_handle, allowed more case of sucessful retrieval 2021-03-05 16:37:48 +01:00
clement rouault 758f418965 Merge branch 'master' of https://github.com/hakril/PythonForWindows into master 2021-03-05 16:36:57 +01:00
hakril ca6ce73dcc Added poc for event explorer sample 2021-01-28 22:41:18 +01:00
clement rouault 86d02ee17d De not import windows.pipe by default anymore 2021-01-12 15:30:13 +01:00
hakril 04cbbf3888 Fixed a Evthandle leak on evtlog code 2020-09-08 13:34:20 +02:00
hakril caa8ef5f32 Added documentation about Pypi availability and installation 2020-07-23 10:19:55 +02:00
hakril 2cd9c287aa Updated setup.py with long description 2020-07-23 09:38:03 +02:00
443 changed files with 296400 additions and 187593 deletions
+128
View File
@@ -0,0 +1,128 @@
name: Pytest
on:
push:
branches:
- 'master'
pull_request:
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
jobs:
generate_ctypes:
runs-on: windows-latest
timeout-minutes: 5
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.11'
- run:
py .\ctypes_generation\generate.py
- name: Check generated code can execute
run: py -c "import windows.generated_def"
tests:
strategy:
fail-fast: false
matrix:
runs-on: [windows-2019, windows-latest]
python-version: [2.7, 3.6, 3.11]
python-architecture: [x86, x64]
include:
# Translate architecture to bitness for py.exe commandline
- python-bitness-to-test: 32
python-architecture: x86
- python-bitness-to-test: 64
python-architecture: x64
# Not a real dependency : but starting tests when ctypes generation is broken is not useful
needs: generate_ctypes
timeout-minutes: 15
runs-on: ${{ matrix.runs-on }}
steps:
- uses: actions/checkout@v4
# Pfw testing need both 32b & 64b of tested python version for cross-bitness python injection tests
## Install the 32bits version of python3 asked
- name: Set up Python3 ${{ matrix.python-version }} x86
if: ${{ matrix.python-version != '2.7' }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version}}
architecture: x86
update-environment: false
## Install the 64bits version of python3 asked
- name: Set up Python3 ${{ matrix.python-version }} x64
if: ${{ matrix.python-version != '2.7' }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version}}
architecture: x64
update-environment: false
# Manually install python2.7 (both version at once)
- name: Set up Python2.7 ${{ matrix.python-version }} x86 & x64
shell: bash
if: ${{ matrix.python-version == '2.7' }}
run: |
choco install python2 --version=2.7.18 -y --no-progress --params '"/InstallDir:C:\tools\python27"'
choco install python2 --version=2.7.18 -y --no-progress -x86 --params '"/InstallDir:C:\tools\python2732"' --force
- name: Listing python versions availables
run: py -0
# Install PythonForWindows for both bitness
- name: Installing PythonForWindows for both bitness
run: |
py -${{ matrix.python-version}}-32 setup.py install
py -${{ matrix.python-version}}-64 setup.py install
- name: Installing pytest & capstone-windows
run: py -${{ matrix.python-version}}-${{ matrix.python-bitness-to-test}} -m pip install pytest pytest-timeout capstone-windows
# Testing
- name: Testing
run: py -${{ matrix.python-version}}-${{ matrix.python-bitness-to-test}} -m pytest --junitxml=junit/test-results.xml -s -v tests/
- name: Publish PyTest Results
uses: EnricoMi/publish-unit-test-result-action/windows@v2
if: always()
with:
files: junit/test-results.xml
check_name: PyTest Results for ${{ matrix.python-version}}-${{ matrix.python-bitness-to-test}}
secondary_rate_limit_wait_seconds: 90
seconds_between_github_writes: 10
seconds_between_github_reads: 1
# tests_arm64:
# needs: generate_ctypes
# timeout-minutes: 15
# runs-on: windows-ARM64
# continue-on-error: true
#
# strategy:
# fail-fast: false
# matrix:
# python-version: [3.11]
# python-architecture: [x86, x64, arm64]
# include:
# # Translate architecture to bitness for py.exe commandline
# - python-bitness-to-test: 32
# python-architecture: x86
# - python-bitness-to-test: 64
# python-architecture: x64
# - python-bitness-to-test: arm64
# python-architecture: arm64
#
# steps:
# - uses: actions/checkout@v4
#
# - name: Listing python versions availables
# run: py -0
#
# - name: Testing PFW execute
# run: py -${{ matrix.python-version}}-${{ matrix.python-bitness-to-test}} -c "import windows; print(windows)"
#
# - name: Arm64 pytests
# run: py -${{ matrix.python-version}}-${{ matrix.python-bitness-to-test}} -m pytest tests -k "not test_debugger" -v -s -r fEsx
+7 -1
View File
@@ -2,7 +2,13 @@
doctrees
*.inv
*.pickle
*.ignore
*.code-workspace
.vscode/
.cache/
dist/
dist/
build/
docs/BuildDocEnv/
playground/
*egg-info/
+10
View File
@@ -1,3 +1,13 @@
1.0.0:
Unicode everywhere:
Whenever possible, PythonForWindows use W() (wide) APIs and returns unicode string.
This means `str` for python3 & `unicode` for python2.7
windows.system.build_number now returns a int : the actual build number
windows.system.build_number became windows.system.versionstr
Between 0.4 & 0.5:
== New features ==
- windows.security
+1 -1
View File
@@ -1,4 +1,4 @@
Copyright (c) 2016, Rouault Clement
Copyright (c) 2016-2024, Rouault Clement
All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
+74 -16
View File
@@ -1,38 +1,53 @@
# PythonForWindows
[![Join the chat at https://gitter.im/PythonForWindows/general](https://badges.gitter.im/PythonForWindows/general.svg)](https://gitter.im/PythonForWindows/general)
[![Pytest](https://github.com/hakril/PythonForWindows/actions/workflows/tests.yml/badge.svg?branch=master)](https://github.com/hakril/PythonForWindows/actions/workflows/tests.yml)
PythonForWindows (PFW) is a base of code aimed to make interaction with `Windows` (on X86/X64) easier (for both 32 and 64 bits Python).
Its goal is to offer abstractions around some of the OS features in a (I hope) pythonic way.
It also tries to make the barrier between python and native execution thinner in both ways.
There is no external dependencies but it relies heavily on the `ctypes` module.
Some of this code is clean (IMHO) and some parts are just a wreck that works for now.
Let's say that the codebase evolves with my needs and my curiosity.
Let's say that the codebase evolves with my needs, my researches and my curiosity.
Complete online documentation is available [here][ONLINE_DOC]
You can find some examples of code in the [samples directory][SAMPLE_DIR] or [online][ONLINE_SAMPLE].
PythonForWindows is principally known for its ALPC-RPC Client (see [samples](http://hakril.github.io/PythonForWindows/build/html/sample.html#windows-rpc)).
PythonForWindows is principally known for:
- its ALPC-RPC Client (see [samples](https://hakril.github.io/PythonForWindows/build/html/sample.html#windows-rpc))
- its generated [ctypes definitions](https://github.com/hakril/PythonForWindows/tree/master/windows/generated_def).
If you have any issue, question or suggestion do not hesitate to join [the Gitter channel](https://gitter.im/PythonForWindows/general).
If you have any issue, question or suggestion do not hesitate to create an issue or reach me out.
I am always glad to have feedbacks from people using this project.
## Installation
You can install PythonForWindows using the ``setup.py`` script:
PythonForWindows is available on [Pypi](https://pypi.org/project/PythonForWindows/) an this can be installed with
``
python -m pip install PythonForWindows
``
You can also install PythonForWindows by cloning it and using the ``setup.py`` script:
``
python setup.py install
``
#### Python3
## Encoding & unicode
PythonForWindows support `python2.7` & `python3` and is currently tested for `Python2.7`, `3.6` & `3.11` via [Github Workflow](https://github.com/hakril/PythonForWindows/actions/workflows/tests.yml)
Since 1.0.0, the code uses "wide APIs" whenever possible and accept/returns python3 `str` (py2.7 `unicode` type) almost everywhere. Any functions/APIs not accepting unicode string can be considered a bug if its not stated explicitly in the documentation.
### Python2
PythonForWindows continues to support python2.7 as its the only way to have it running on `Windows XP` & `Windows Server 2003` which are sadly still seen in production.
Encoding errors at print time might be awkward for unicode string on python2, see the [PythonForWindows encoding guide](https://hakril.github.io/PythonForWindows/build/html/encoding.html) in the documentation.
python3 support is still in beta.
All the tests pass on master, but I did not test it heavily on real case.
Do not hesitate report bugs and issues.
## Overview
@@ -522,6 +537,49 @@ The local debugger handles
* Standard breakpoint ``int3``
* Hardware Execution breakpoint ``DrX``
### Symbols
Classes around the Symbols APIs of `dbghelp.dll` are also implemented and can be used independently of the Debugger.
The path of `dbghelp.dll` can also be given via the `PFW_DBGHELP_PATH` environment variable.
```python
# Python3
>>> from windows.debug import symbols
>>> # symbols.set_dbghelp_path(MY_DBGHELP_PATH)
>>> symbols.engine.options = 0 # Disable defered load
>>> sh = symbols.VirtualSymbolHandler()
>>> ntmod = sh.load_file(r"c:\windows\system32\ntdll.dll", addr=0x420000)
>>> ntmod
<SymbolModule name="ntdll" type=SymPdb pdb="ntdll.pdb" addr=0x420000>
>>> ntmod.name
'ntdll'
>>> ntmod.path
'c:\\windows\\system32\\ntdll.dll'
>>> ntmod.pdb
'c:\\Symbols\\ntdll.pdb\\8D5D5ED5D5B8AA609A82600C14E3004D1\\ntdll.pdb'
>>> sym = sh["ntdll!LdrLoadDll"]
>>> sym
<SymbolInfoW name="LdrLoadDll" start=0x44a160 tag=SymTagFunction>
>>> sym.fullname
'ntdll!LdrLoadDll'
>>> hex(sym.addr)
'0x44a160'
>>> sh.search("ntdll!*CreateFile")
[<SymbolInfoW name="EtwpCreateFile" start=0x47d9ec tag=SymTagFunction>, <SymbolInfoW name="EtwpCreateFile" start=0x47d9ec tag=SymTagPublicSymbol>, <SymbolInfoW name="NtCreateFile" start=0x4c03e0 tag=SymTagPublicSymbol>, <SymbolInfoW name="ZwCreateFile" start=0x4c03e0 tag=SymTagPublicSymbol>, <SymbolInfoW name="__imp_NtCreateFile" start=0x55cb70 tag=SymTagPublicSymbol>]
# Some types exploration
>>> peb = sh.get_type("ntdll!_PEB")
>>> peb
<SymbolType name="_PEB" tag=_SymTagEnum.SymTagUDT(0xb)>
>>> peb.size
2000
>>> peb.children[:3]
[<SymbolType name="InheritedAddressSpace" tag=_SymTagEnum.SymTagData(0x7)>, <SymbolType name="ReadImageFileExecOptions" tag=_SymTagEnum.SymTagData(0x7)>, <SymbolType name="BeingDebugged" tag=_SymTagEnum.SymTagData(0x7)>]
>>> peb.children[2].offset
2
```
### Other stuff (see doc / samples)
- Network
@@ -534,8 +592,8 @@ The local debugger handles
[LKD_GITHUB]: https://github.com/sogeti-esec-lab/LKD/
[SAMPLE_DIR]: https://github.com/hakril/PythonForWindows/tree/master/samples
[ONLINE_DOC]: http://hakril.github.io/PythonForWindows/
[ONLINE_SAMPLE]: http://hakril.github.io/PythonForWindows/build/html/sample.html
[ONLINE_SAMPLE_ALPC]: http://hakril.github.io/PythonForWindows/build/html/sample.html#windows-alpc
[ONLINE_SAMPLE_RPC]: http://hakril.github.io/PythonForWindows/build/html/sample.html#windows-rpc
[ONLINE_IATHOOK]: http://hakril.github.io/PythonForWindows/build/html/iat_hook.html
[ONLINE_DOC]: https://hakril.github.io/PythonForWindows/
[ONLINE_SAMPLE]: https://hakril.github.io/PythonForWindows/build/html/sample.html
[ONLINE_SAMPLE_ALPC]: https://hakril.github.io/PythonForWindows/build/html/sample.html#windows-alpc
[ONLINE_SAMPLE_RPC]: https://hakril.github.io/PythonForWindows/build/html/sample.html#windows-rpc
[ONLINE_IATHOOK]: https://hakril.github.io/PythonForWindows/build/html/iat_hook.html
+1 -1
View File
@@ -10,7 +10,7 @@ class WinComParser(Parser):
PARAM_INFO = ["__RPC__deref_out", "__RPC__in", "__RPC__deref_out_opt", "__RPC__out", "__RPC__in_opt",
"__RPC__deref_opt_inout_opt", "__in", "__out", "__out_opt", "__in_opt", "__inout",
"__reserved", "__RPC__in_opt_string", "__RPC__inout_opt", "__RPC__in_string", "__deref_out_opt", "__RPC__inout",
"__RPC__deref_out_opt_string", "_COM_Outptr_", "_In_", "_In_opt_", "_Out_"]
"__RPC__deref_out_opt_string", "_COM_Outptr_", "_In_", "_In_opt_", "_Out_", "__deref_out"]
PARAM_INFO_WITH_VALUE = ["__RPC__in_ecount", "__RPC__out_ecount_part", "__RPC__in_ecount_full",
"__RPC__in_range", "__RPC__out_ecount_full", "__out_ecount_opt", "__out_ecount", "__in_ecount_opt",
"__in_ecount", "__out_bcount_opt", "__out_bcount", "__in_bcount", "__in_bcount_opt", "__RPC__out_ecount_full_string",
@@ -0,0 +1,29 @@
typedef struct ICallFactoryVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICallFactory * This,
/* [in] */ REFIID riid,
/* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
ICallFactory * This);
ULONG ( STDMETHODCALLTYPE *Release )(
ICallFactory * This);
HRESULT ( STDMETHODCALLTYPE *CreateCall )(
ICallFactory * This,
/* [annotation][in] */
__in REFIID riid,
/* [annotation][in] */
__in_opt IUnknown *pCtrlUnk,
/* [annotation][in] */
__in REFIID riid2,
/* [annotation][iid_is][out] */
__deref_out IUnknown **ppv);
END_INTERFACE
} ICallFactoryVtbl;
@@ -0,0 +1,27 @@
typedef struct IClassFactoryVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
IClassFactory * This,
/* [in] */ REFIID riid,
/* [iid_is][out] */ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
IClassFactory * This);
ULONG ( STDMETHODCALLTYPE *Release )(
IClassFactory * This);
/* [local] */ HRESULT ( STDMETHODCALLTYPE *CreateInstance )(
IClassFactory * This,
/* [unique][in] */ IUnknown *pUnkOuter,
/* [in] */ REFIID riid,
/* [iid_is][out] */ void **ppvObject);
/* [local] */ HRESULT ( STDMETHODCALLTYPE *LockServer )(
IClassFactory * This,
/* [in] */ BOOL fLock);
END_INTERFACE
} IClassFactoryVtbl;
@@ -0,0 +1,63 @@
typedef struct IClientSecurityVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
IClientSecurity * This,
/* [in] */ REFIID riid,
/* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
IClientSecurity * This);
ULONG ( STDMETHODCALLTYPE *Release )(
IClientSecurity * This);
HRESULT ( STDMETHODCALLTYPE *QueryBlanket )(
IClientSecurity * This,
/* [annotation][in] */
__in IUnknown *pProxy,
/* [annotation][out] */
__out DWORD *pAuthnSvc,
/* [annotation][out] */
__out_opt DWORD *pAuthzSvc,
/* [annotation][out] */
__RPC__deref_out_opt OLECHAR **pServerPrincName,
/* [annotation][out] */
__out_opt DWORD *pAuthnLevel,
/* [annotation][out] */
__out_opt DWORD *pImpLevel,
/* [annotation][out] */
__deref_out_opt void **pAuthInfo,
/* [annotation][out] */
__out_opt DWORD *pCapabilites);
HRESULT ( STDMETHODCALLTYPE *SetBlanket )(
IClientSecurity * This,
/* [annotation][in] */
__in IUnknown *pProxy,
/* [annotation][in] */
__in DWORD dwAuthnSvc,
/* [annotation][in] */
__in DWORD dwAuthzSvc,
/* [annotation][in] */
__RPC__in_opt OLECHAR *pServerPrincName,
/* [annotation][in] */
__in DWORD dwAuthnLevel,
/* [annotation][in] */
__in DWORD dwImpLevel,
/* [annotation][in] */
__in_opt void *pAuthInfo,
/* [annotation][in] */
__in DWORD dwCapabilities);
HRESULT ( STDMETHODCALLTYPE *CopyProxy )(
IClientSecurity * This,
/* [annotation][in] */
__in IUnknown *pProxy,
/* [annotation][out] */
__deref_out IUnknown **ppCopy);
END_INTERFACE
} IClientSecurityVtbl;
@@ -0,0 +1,74 @@
typedef struct IComCatalogVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
IComCatalog * This,
/* [in] */ REFIID riid,
/* [iid_is][out] */ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
IComCatalog * This);
ULONG ( STDMETHODCALLTYPE *Release )(
IComCatalog * This);
HRESULT ( STDMETHODCALLTYPE *GetClassInfo )(
IComCatalog * This,
/* [in] */ REFGUID guidConfiguredClsid,
/* [in] */ REFIID riid,
/* [out] */ void **ppv);
HRESULT ( STDMETHODCALLTYPE *GetApplicationInfo )(
IComCatalog * This,
/* [in] */ REFGUID guidApplId,
/* [in] */ REFIID riid,
/* [out] */ void **ppv);
HRESULT ( STDMETHODCALLTYPE *GetProcessInfo )(
IComCatalog * This,
/* [in] */ REFGUID guidProcess,
/* [in] */ REFIID riid,
/* [out] */ void **ppv);
HRESULT ( STDMETHODCALLTYPE *GetServerGroupInfo )(
IComCatalog * This,
/* [in] */ REFGUID guidServerGroup,
/* [in] */ REFIID riid,
/* [out] */ void **ppv);
HRESULT ( STDMETHODCALLTYPE *GetRetQueueInfo )(
IComCatalog * This,
/* [string][in] */ WCHAR *wszFormatName,
/* [in] */ REFIID riid,
/* [out] */ void **ppv);
HRESULT ( STDMETHODCALLTYPE *GetApplicationInfoForExe )(
IComCatalog * This,
/* [string][in] */ WCHAR *pwszExeName,
/* [in] */ REFIID riid,
/* [out] */ void **ppv);
HRESULT ( STDMETHODCALLTYPE *GetTypeLibrary )(
IComCatalog * This,
/* [in] */ REFGUID guidTypeLib,
/* [in] */ REFIID riid,
/* [out] */ void **ppv);
HRESULT ( STDMETHODCALLTYPE *GetInterfaceInfo )(
IComCatalog * This,
/* [in] */ REFIID iidInterface,
/* [in] */ REFIID riid,
/* [out] */ void **ppv);
HRESULT ( STDMETHODCALLTYPE *FlushCache )(
IComCatalog * This);
HRESULT ( STDMETHODCALLTYPE *GetClassInfoFromProgId )(
IComCatalog * This,
/* [in] */ WCHAR *pwszProgID,
/* [in] */ REFIID riid,
/* [out] */ void **ppv);
END_INTERFACE
} IComCatalogVtbl;
@@ -0,0 +1,22 @@
typedef struct IInternalUnknownVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
IInternalUnknown * This,
/* [in] */ REFIID riid,
/* [iid_is][out] */ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
IInternalUnknown * This);
ULONG ( STDMETHODCALLTYPE *Release )(
IInternalUnknown * This);
HRESULT ( STDMETHODCALLTYPE *QueryInternalInterface )(
IInternalUnknown * This,
/* [in] */ REFIID riid,
/* [out] */ void **ppv);
END_INTERFACE
} IInternalUnknownVtbl;
@@ -0,0 +1,58 @@
typedef struct IMarshalVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
IMarshal * This,
/* [in] */ REFIID riid,
/* [iid_is][out] */ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
IMarshal * This);
ULONG ( STDMETHODCALLTYPE *Release )(
IMarshal * This);
HRESULT ( STDMETHODCALLTYPE *GetUnmarshalClass )(
IMarshal * This,
/* [in] */ REFIID riid,
/* [unique][in] */ void *pv,
/* [in] */ DWORD dwDestContext,
/* [unique][in] */ void *pvDestContext,
/* [in] */ DWORD mshlflags,
/* [out] */ CLSID *pCid);
HRESULT ( STDMETHODCALLTYPE *GetMarshalSizeMax )(
IMarshal * This,
/* [in] */ REFIID riid,
/* [unique][in] */ void *pv,
/* [in] */ DWORD dwDestContext,
/* [unique][in] */ void *pvDestContext,
/* [in] */ DWORD mshlflags,
/* [out] */ DWORD *pSize);
HRESULT ( STDMETHODCALLTYPE *MarshalInterface )(
IMarshal * This,
/* [unique][in] */ IStream *pStm,
/* [in] */ REFIID riid,
/* [unique][in] */ void *pv,
/* [in] */ DWORD dwDestContext,
/* [unique][in] */ void *pvDestContext,
/* [in] */ DWORD mshlflags);
HRESULT ( STDMETHODCALLTYPE *UnmarshalInterface )(
IMarshal * This,
/* [unique][in] */ IStream *pStm,
/* [in] */ REFIID riid,
/* [out] */ void **ppv);
HRESULT ( STDMETHODCALLTYPE *ReleaseMarshalData )(
IMarshal * This,
/* [unique][in] */ IStream *pStm);
HRESULT ( STDMETHODCALLTYPE *DisconnectObject )(
IMarshal * This,
/* [in] */ DWORD dwReserved);
END_INTERFACE
} IMarshalVtbl;
@@ -0,0 +1,67 @@
typedef struct IObjContextVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
IObjContext * This,
/* [in] */ REFIID riid,
/* [annotation][iid_is][out] */
void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
IObjContext * This);
ULONG ( STDMETHODCALLTYPE *Release )(
IObjContext * This);
HRESULT ( STDMETHODCALLTYPE *SetProperty )(
IObjContext * This,
/* [annotation][in] */
__in REFGUID rpolicyId,
/* [annotation][in] */
__in CPFLAGS flags,
/* [annotation][in] */
__in IUnknown *pUnk);
HRESULT ( STDMETHODCALLTYPE *RemoveProperty )(
IObjContext * This,
/* [annotation][in] */
__in REFGUID rPolicyId);
HRESULT ( STDMETHODCALLTYPE *GetProperty )(
IObjContext * This,
/* [annotation][in] */
__in REFGUID rGuid,
/* [annotation][out] */
__out CPFLAGS *pFlags,
/* [annotation][out] */
__deref_out IUnknown **ppUnk);
HRESULT ( STDMETHODCALLTYPE *EnumContextProps )(
IObjContext * This,
/* [annotation][out] */
__deref_out IEnumContextProps **ppEnumContextProps);
PVOID ( STDMETHODCALLTYPE *Reserved1 )(
IObjContext * This);
PVOID ( STDMETHODCALLTYPE *Reserved2 )(
IObjContext * This);
PVOID ( STDMETHODCALLTYPE *Reserved3 )(
IObjContext * This);
PVOID ( STDMETHODCALLTYPE *Reserved4 )(
IObjContext * This);
PVOID ( STDMETHODCALLTYPE *Reserved5 )(
IObjContext * This);
PVOID ( STDMETHODCALLTYPE *Reserved6 )(
IObjContext * This);
PVOID ( STDMETHODCALLTYPE *Reserved7 )(
IObjContext * This);
END_INTERFACE
} IObjContextVtbl;
@@ -0,0 +1,36 @@
typedef struct IRemUnknownVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
IRemUnknown * This,
/* [in] */ REFIID riid,
/* [iid_is][out] */ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
IRemUnknown * This);
ULONG ( STDMETHODCALLTYPE *Release )(
IRemUnknown * This);
HRESULT ( STDMETHODCALLTYPE *RemQueryInterface )(
IRemUnknown * This,
/* [in] */ REFIPID ripid,
/* [in] */ ULONG cRefs,
/* [in] */ USHORT cIids,
/* [size_is][in] */ IID *iids,
/* [size_is][size_is][out] */ REMQIRESULT **ppQIResults);
HRESULT ( STDMETHODCALLTYPE *RemAddRef )(
IRemUnknown * This,
/* [in] */ USHORT cInterfaceRefs,
/* [size_is][in] */ REMINTERFACEREF *InterfaceRefs,
/* [size_is][out] */ HRESULT *pResults);
HRESULT ( STDMETHODCALLTYPE *RemRelease )(
IRemUnknown * This,
/* [in] */ USHORT cInterfaceRefs,
/* [size_is][in] */ REMINTERFACEREF *InterfaceRefs);
END_INTERFACE
} IRemUnknownVtbl;
@@ -0,0 +1,20 @@
// IStdIdentity is an empty interface to check that an object is the IStdIdentity
// and thus query other interface
typedef struct IStdIdentityVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
IUnknown * This,
/* [in] */ REFIID riid,
/* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
IUnknown * This);
ULONG ( STDMETHODCALLTYPE *Release )(
IUnknown * This);
END_INTERFACE
} IStdIdentityVtbl;
@@ -0,0 +1,108 @@
typedef struct IStorageVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
IStorage * This,
/* [in] */ REFIID riid,
/* [iid_is][out] */ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
IStorage * This);
ULONG ( STDMETHODCALLTYPE *Release )(
IStorage * This);
HRESULT ( STDMETHODCALLTYPE *CreateStream )(
IStorage * This,
/* [string][in] */ const OLECHAR *pwcsName,
/* [in] */ DWORD grfMode,
/* [in] */ DWORD reserved1,
/* [in] */ DWORD reserved2,
/* [out] */ IStream **ppstm);
/* [local] */ HRESULT ( STDMETHODCALLTYPE *OpenStream )(
IStorage * This,
/* [string][in] */ const OLECHAR *pwcsName,
/* [unique][in] */ void *reserved1,
/* [in] */ DWORD grfMode,
/* [in] */ DWORD reserved2,
/* [out] */ IStream **ppstm);
HRESULT ( STDMETHODCALLTYPE *CreateStorage )(
IStorage * This,
/* [string][in] */ const OLECHAR *pwcsName,
/* [in] */ DWORD grfMode,
/* [in] */ DWORD reserved1,
/* [in] */ DWORD reserved2,
/* [out] */ IStorage **ppstg);
HRESULT ( STDMETHODCALLTYPE *OpenStorage )(
IStorage * This,
/* [string][unique][in] */ const OLECHAR *pwcsName,
/* [unique][in] */ IStorage *pstgPriority,
/* [in] */ DWORD grfMode,
/* [unique][in] */ SNB snbExclude,
/* [in] */ DWORD reserved,
/* [out] */ IStorage **ppstg);
HRESULT ( STDMETHODCALLTYPE *CopyTo )(
IStorage * This,
/* [in] */ DWORD ciidExclude,
/* [size_is][unique][in] */ const IID *rgiidExclude,
/* [unique][in] */ SNB snbExclude,
/* [unique][in] */ IStorage *pstgDest);
HRESULT ( STDMETHODCALLTYPE *MoveElementTo )(
IStorage * This,
/* [string][in] */ const OLECHAR *pwcsName,
/* [unique][in] */ IStorage *pstgDest,
/* [string][in] */ const OLECHAR *pwcsNewName,
/* [in] */ DWORD grfFlags);
HRESULT ( STDMETHODCALLTYPE *Commit )(
IStorage * This,
/* [in] */ DWORD grfCommitFlags);
HRESULT ( STDMETHODCALLTYPE *Revert )(
IStorage * This);
/* [local] */ HRESULT ( STDMETHODCALLTYPE *EnumElements )(
IStorage * This,
/* [in] */ DWORD reserved1,
/* [size_is][unique][in] */ void *reserved2,
/* [in] */ DWORD reserved3,
/* [out] */ IEnumSTATSTG **ppenum);
HRESULT ( STDMETHODCALLTYPE *DestroyElement )(
IStorage * This,
/* [string][in] */ const OLECHAR *pwcsName);
HRESULT ( STDMETHODCALLTYPE *RenameElement )(
IStorage * This,
/* [string][in] */ const OLECHAR *pwcsOldName,
/* [string][in] */ const OLECHAR *pwcsNewName);
HRESULT ( STDMETHODCALLTYPE *SetElementTimes )(
IStorage * This,
/* [string][unique][in] */ const OLECHAR *pwcsName,
/* [unique][in] */ const FILETIME *pctime,
/* [unique][in] */ const FILETIME *patime,
/* [unique][in] */ const FILETIME *pmtime);
HRESULT ( STDMETHODCALLTYPE *SetClass )(
IStorage * This,
/* [in] */ REFCLSID clsid);
HRESULT ( STDMETHODCALLTYPE *SetStateBits )(
IStorage * This,
/* [in] */ DWORD grfStateBits,
/* [in] */ DWORD grfMask);
HRESULT ( STDMETHODCALLTYPE *Stat )(
IStorage * This,
/* [out] */ STATSTG *pstatstg,
/* [in] */ DWORD grfStatFlag);
END_INTERFACE
} IStorageVtbl;
@@ -1,28 +0,0 @@
typedef struct MyClsVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
MyCls * This,
/* [in] */ REFIID riid,
/* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
MyCls * This);
ULONG ( STDMETHODCALLTYPE *Release )(
MyCls * This);
HRESULT ( STDMETHODCALLTYPE *add )(
MyCls * This,
/* [in] */ UINT x,
/* [in] */ UINT y,
/* [out] */ UINT *res);
HRESULT ( STDMETHODCALLTYPE *print_state )(
MyCls * This);
END_INTERFACE
} MyClsVtbl;
@@ -0,0 +1,33 @@
typedef struct IWbemObjectTextSrcVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
IWbemObjectTextSrc * This,
/* [in] */ REFIID riid,
/* [iid_is][out] */ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
IWbemObjectTextSrc * This);
ULONG ( STDMETHODCALLTYPE *Release )(
IWbemObjectTextSrc * This);
HRESULT ( STDMETHODCALLTYPE *GetText )(
IWbemObjectTextSrc * This,
/* [in] */ long lFlags,
/* [in] */ IWbemClassObject *pObj,
/* [in] */ ULONG uObjTextFormat,
/* [in] */ IWbemContext *pCtx,
/* [out] */ BSTR *strText);
HRESULT ( STDMETHODCALLTYPE *CreateFromText )(
IWbemObjectTextSrc * This,
/* [in] */ long lFlags,
/* [in] */ BSTR strText,
/* [in] */ ULONG uObjTextFormat,
/* [in] */ IWbemContext *pCtx,
/* [out] */ IWbemClassObject **pNewObj);
END_INTERFACE
} IWbemObjectTextSrcVtbl;
@@ -0,0 +1,74 @@
typedef struct IActivationPropertiesVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
IActivationProperties * This,
/* [in] */ REFIID riid,
/* [iid_is][out] */ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
IActivationProperties * This);
ULONG ( STDMETHODCALLTYPE *Release )(
IActivationProperties * This);
HRESULT ( STDMETHODCALLTYPE *GetUnmarshalClass )(
IActivationProperties * This,
/* [in] */ REFIID riid,
/* [unique][in] */ void *pv,
/* [in] */ DWORD dwDestContext,
/* [unique][in] */ void *pvDestContext,
/* [in] */ DWORD mshlflags,
/* [out] */ CLSID *pCid);
HRESULT ( STDMETHODCALLTYPE *GetMarshalSizeMax )(
IActivationProperties * This,
/* [in] */ REFIID riid,
/* [unique][in] */ void *pv,
/* [in] */ DWORD dwDestContext,
/* [unique][in] */ void *pvDestContext,
/* [in] */ DWORD mshlflags,
/* [out] */ DWORD *pSize);
HRESULT ( STDMETHODCALLTYPE *MarshalInterface )(
IActivationProperties * This,
/* [unique][in] */ IStream *pStm,
/* [in] */ REFIID riid,
/* [unique][in] */ void *pv,
/* [in] */ DWORD dwDestContext,
/* [unique][in] */ void *pvDestContext,
/* [in] */ DWORD mshlflags);
HRESULT ( STDMETHODCALLTYPE *UnmarshalInterface )(
IActivationProperties * This,
/* [unique][in] */ IStream *pStm,
/* [in] */ REFIID riid,
/* [out] */ void **ppv);
HRESULT ( STDMETHODCALLTYPE *ReleaseMarshalData )(
IActivationProperties * This,
/* [unique][in] */ IStream *pStm);
HRESULT ( STDMETHODCALLTYPE *DisconnectObject )(
IActivationProperties * This,
/* [in] */ DWORD dwReserved);
HRESULT ( STDMETHODCALLTYPE *SetDestCtx )(
IActivationProperties * This,
/* [in] */ DWORD dwDestCtx);
HRESULT ( STDMETHODCALLTYPE *SetMarshalFlags )(
IActivationProperties * This,
/* [in] */ DWORD dwMarshalFlags);
HRESULT ( STDMETHODCALLTYPE *SetLocalBlob )(
IActivationProperties * This,
/* [in] */ void *blob);
HRESULT ( STDMETHODCALLTYPE *GetLocalBlob )(
IActivationProperties * This,
/* [out] */ void **blob);
END_INTERFACE
} IActivationPropertiesVtbl;
@@ -0,0 +1,38 @@
typedef struct IActivationPropertiesOutVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
IActivationPropertiesOut * This,
/* [in] */ REFIID riid,
/* [iid_is][out] */ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
IActivationPropertiesOut * This);
ULONG ( STDMETHODCALLTYPE *Release )(
IActivationPropertiesOut * This);
HRESULT ( STDMETHODCALLTYPE *GetActivationID )(
IActivationPropertiesOut * This,
/* [out] */ GUID *pActivationID);
HRESULT ( STDMETHODCALLTYPE *GetObjectInterface )(
IActivationPropertiesOut * This,
/* [in] */ REFIID riid,
/* [in] */ DWORD actvflags,
/* [iid_is][out] */ void **ppv);
HRESULT ( STDMETHODCALLTYPE *GetObjectInterfaces )(
IActivationPropertiesOut * This,
/* [in] */ DWORD cIfs,
/* [in] */ DWORD actvflags,
/* [size_is][in] */ MULTI_QI *multiQi);
HRESULT ( STDMETHODCALLTYPE *RemoveRequestedIIDs )(
IActivationPropertiesOut * This,
/* [in] */ DWORD cIfs,
/* [size_is][in] */ IID *rgIID);
END_INTERFACE
} IActivationPropertiesOutVtbl;
@@ -0,0 +1,64 @@
typedef struct IActivationPropertiesInVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
IActivationPropertiesIn * This,
/* [in] */ REFIID riid,
/* [iid_is][out] */ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
IActivationPropertiesIn * This);
ULONG ( STDMETHODCALLTYPE *Release )(
IActivationPropertiesIn * This);
HRESULT ( STDMETHODCALLTYPE *GetActivationID )(
IActivationPropertiesIn * This,
/* [out] */ GUID *pActivationID);
HRESULT ( STDMETHODCALLTYPE *GetClassInfo )(
IActivationPropertiesIn * This,
/* [in] */ REFIID riid,
/* [iid_is][out] */ void **ppv);
HRESULT ( STDMETHODCALLTYPE *GetClsctx )(
IActivationPropertiesIn * This,
/* [out] */ DWORD *pclsctx);
HRESULT ( STDMETHODCALLTYPE *GetActivationFlags )(
IActivationPropertiesIn * This,
/* [out] */ DWORD *pactvflags);
HRESULT ( STDMETHODCALLTYPE *AddRequestedIIDs )(
IActivationPropertiesIn * This,
/* [in] */ DWORD cIfs,
/* [size_is][in] */ IID *rgIID);
HRESULT ( STDMETHODCALLTYPE *GetRequestedIIDs )(
IActivationPropertiesIn * This,
/* [out] */ ULONG *pulCount,
/* [out] */ IID **prgIID);
HRESULT ( STDMETHODCALLTYPE *DelegateGetClassObject )(
IActivationPropertiesIn * This,
/* [out] */ IActivationPropertiesOut **pActPropsOut);
HRESULT ( STDMETHODCALLTYPE *DelegateCreateInstance )(
IActivationPropertiesIn * This,
/* [in] */ IUnknown *pUnkOuter,
/* [out] */ IActivationPropertiesOut **pActPropsOut);
HRESULT ( STDMETHODCALLTYPE *DelegateCIAndGetCF )(
IActivationPropertiesIn * This,
/* [in] */ IUnknown *pUnkOuter,
/* [out] */ IActivationPropertiesOut **pActPropsOut,
/* [out] */ IClassFactory **ppCf);
HRESULT ( STDMETHODCALLTYPE *GetReturnActivationProperties )(
IActivationPropertiesIn * This,
/* [in] */ IUnknown *pUnk,
/* [out] */ IActivationPropertiesOut **ppActOut);
END_INTERFACE
} IActivationPropertiesInVtbl;
@@ -0,0 +1,30 @@
typedef struct IActivationStageInfoVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
IActivationStageInfo * This,
/* [in] */ REFIID riid,
/* [iid_is][out] */ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
IActivationStageInfo * This);
ULONG ( STDMETHODCALLTYPE *Release )(
IActivationStageInfo * This);
HRESULT ( STDMETHODCALLTYPE *SetStageAndIndex )(
IActivationStageInfo * This,
/* [in] */ ACTIVATION_STAGE stage,
/* [in] */ int index);
HRESULT ( STDMETHODCALLTYPE *GetStage )(
IActivationStageInfo * This,
/* [out] */ ACTIVATION_STAGE *pstage);
HRESULT ( STDMETHODCALLTYPE *GetIndex )(
IActivationStageInfo * This,
/* [out] */ int *pindex);
END_INTERFACE
} IActivationStageInfoVtbl;
@@ -0,0 +1,47 @@
typedef struct IClassClassicInfoVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
IClassClassicInfo * This,
/* [in] */ REFIID riid,
/* [iid_is][out] */ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
IClassClassicInfo * This);
ULONG ( STDMETHODCALLTYPE *Release )(
IClassClassicInfo * This);
HRESULT ( STDMETHODCALLTYPE *GetThreadingModel )(
IClassClassicInfo * This,
/* [out] */ ThreadingModel *pthreadmodel);
HRESULT ( STDMETHODCALLTYPE *GetModulePath )(
IClassClassicInfo * This,
/* [in] */ CLSCTX clsctx,
/* [string][out] */ WCHAR **pwszDllName);
HRESULT ( STDMETHODCALLTYPE *GetImplementedClsid )(
IClassClassicInfo * This,
/* [out] */ GUID **ppguidClsid);
HRESULT ( STDMETHODCALLTYPE *GetProcess )(
IClassClassicInfo * This,
/* [in] */ REFIID riid,
/* [out] */ void **ppv);
HRESULT ( STDMETHODCALLTYPE *GetRemoteServerName )(
IClassClassicInfo * This,
/* [out] */ WCHAR **pwszServerName);
HRESULT ( STDMETHODCALLTYPE *GetLocalServerType )(
IClassClassicInfo * This,
/* [out] */ LocalServerType *pType);
HRESULT ( STDMETHODCALLTYPE *GetSurrogateCommandLine )(
IClassClassicInfo * This,
/* [out] */ WCHAR **pwszSurrogateCommandLine);
END_INTERFACE
} IClassClassicInfoVtbl;
@@ -0,0 +1,78 @@
typedef struct IComClassInfoVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
IComClassInfo * This,
/* [in] */ REFIID riid,
/* [iid_is][out] */ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
IComClassInfo * This);
ULONG ( STDMETHODCALLTYPE *Release )(
IComClassInfo * This);
HRESULT ( STDMETHODCALLTYPE *GetConfiguredClsid )(
IComClassInfo * This,
/* [out] */ GUID **ppguidClsid);
HRESULT ( STDMETHODCALLTYPE *GetProgId )(
IComClassInfo * This,
/* [out] */ WCHAR **pwszProgid);
HRESULT ( STDMETHODCALLTYPE *GetClassName )(
IComClassInfo * This,
/* [out] */ WCHAR **pwszClassName);
HRESULT ( STDMETHODCALLTYPE *GetApplication )(
IComClassInfo * This,
/* [in] */ REFIID riid,
/* [out] */ void **ppv);
HRESULT ( STDMETHODCALLTYPE *GetClassContext )(
IComClassInfo * This,
/* [in] */ CLSCTX clsctxFilter,
/* [out] */ CLSCTX *pclsctx);
HRESULT ( STDMETHODCALLTYPE *GetCustomActivatorCount )(
IComClassInfo * This,
/* [in] */ ACTIVATION_STAGE activationStage,
/* [out] */ ULONG *pulCount);
HRESULT ( STDMETHODCALLTYPE *GetCustomActivatorClsids )(
IComClassInfo * This,
/* [in] */ ACTIVATION_STAGE activationStage,
/* [out] */ GUID **prgguidClsid);
HRESULT ( STDMETHODCALLTYPE *GetCustomActivators )(
IComClassInfo * This,
/* [in] */ ACTIVATION_STAGE activationStage,
/* [out] */ ISystemActivator ***prgpActivator);
HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )(
IComClassInfo * This,
/* [in] */ REFIID riid,
/* [out] */ void **ppv);
HRESULT ( STDMETHODCALLTYPE *IsComPlusConfiguredClass )(
IComClassInfo * This,
/* [out] */ BOOL *pfComPlusConfiguredClass);
HRESULT ( STDMETHODCALLTYPE *MustRunInClientContext )(
IComClassInfo * This,
/* [out] */ BOOL *pbMustRunInClientContext);
HRESULT ( STDMETHODCALLTYPE *GetVersionNumber )(
IComClassInfo * This,
/* [out] */ DWORD *pdwVersionMS,
/* [out] */ DWORD *pdwVersionLS);
HRESULT ( STDMETHODCALLTYPE *Lock )(
IComClassInfo * This);
HRESULT ( STDMETHODCALLTYPE *Unlock )(
IComClassInfo * This);
END_INTERFACE
} IComClassInfoVtbl;
@@ -0,0 +1,37 @@
typedef struct IContextVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
IContext * This,
/* [in] */ REFIID riid,
/* [iid_is][out] */ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
IContext * This);
ULONG ( STDMETHODCALLTYPE *Release )(
IContext * This);
HRESULT ( STDMETHODCALLTYPE *SetProperty )(
IContext * This,
/* [in] */ REFGUID rpolicyId,
/* [in] */ CPFLAGS flags,
/* [in] */ IUnknown *pUnk);
HRESULT ( STDMETHODCALLTYPE *RemoveProperty )(
IContext * This,
/* [in] */ REFGUID rPolicyId);
HRESULT ( STDMETHODCALLTYPE *GetProperty )(
IContext * This,
/* [in] */ REFGUID rGuid,
/* [out] */ CPFLAGS *pFlags,
/* [out] */ IUnknown **ppUnk);
HRESULT ( STDMETHODCALLTYPE *EnumContextProps )(
IContext * This,
/* [out] */ IEnumContextProps **ppEnumContextProps);
END_INTERFACE
} IContextVtbl;
@@ -0,0 +1,38 @@
typedef struct IEnumContextPropsVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
IEnumContextProps * This,
/* [in] */ REFIID riid,
/* [iid_is][out] */ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
IEnumContextProps * This);
ULONG ( STDMETHODCALLTYPE *Release )(
IEnumContextProps * This);
HRESULT ( STDMETHODCALLTYPE *Next )(
IEnumContextProps * This,
/* [in] */ ULONG celt,
/* [length_is][size_is][out] */ ContextProperty *pContextProperties,
/* [out] */ ULONG *pceltFetched);
HRESULT ( STDMETHODCALLTYPE *Skip )(
IEnumContextProps * This,
/* [in] */ ULONG celt);
HRESULT ( STDMETHODCALLTYPE *Reset )(
IEnumContextProps * This);
HRESULT ( STDMETHODCALLTYPE *Clone )(
IEnumContextProps * This,
/* [out] */ IEnumContextProps **ppEnumContextProps);
HRESULT ( STDMETHODCALLTYPE *Count )(
IEnumContextProps * This,
/* [out] */ ULONG *pcelt);
END_INTERFACE
} IEnumContextPropsVtbl;
@@ -0,0 +1,34 @@
typedef struct IEnumSTATSTGVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
IEnumSTATSTG * This,
/* [in] */ REFIID riid,
/* [iid_is][out] */ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
IEnumSTATSTG * This);
ULONG ( STDMETHODCALLTYPE *Release )(
IEnumSTATSTG * This);
/* [local] */ HRESULT ( STDMETHODCALLTYPE *Next )(
IEnumSTATSTG * This,
/* [in] */ ULONG celt,
/* [length_is][size_is][out] */ STATSTG *rgelt,
/* [out] */ ULONG *pceltFetched);
HRESULT ( STDMETHODCALLTYPE *Skip )(
IEnumSTATSTG * This,
/* [in] */ ULONG celt);
HRESULT ( STDMETHODCALLTYPE *Reset )(
IEnumSTATSTG * This);
HRESULT ( STDMETHODCALLTYPE *Clone )(
IEnumSTATSTG * This,
/* [out] */ IEnumSTATSTG **ppenum);
END_INTERFACE
} IEnumSTATSTGVtbl;
@@ -0,0 +1,43 @@
typedef struct IInitActivationPropertiesInVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
IInitActivationPropertiesIn * This,
/* [in] */ REFIID riid,
/* [iid_is][out] */ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
IInitActivationPropertiesIn * This);
ULONG ( STDMETHODCALLTYPE *Release )(
IInitActivationPropertiesIn * This);
HRESULT ( STDMETHODCALLTYPE *SetClsctx )(
IInitActivationPropertiesIn * This,
/* [in] */ DWORD clsctx);
HRESULT ( STDMETHODCALLTYPE *SetActivationFlags )(
IInitActivationPropertiesIn * This,
/* [in] */ DWORD actvflags);
HRESULT ( STDMETHODCALLTYPE *SetClassInfo )(
IInitActivationPropertiesIn * This,
/* [unique][in] */ IUnknown *pUnkClassInfo);
HRESULT ( STDMETHODCALLTYPE *SetContextInfo )(
IInitActivationPropertiesIn * This,
/* [unique][in] */ IContext *pClientContext,
/* [in] */ IContext *pPrototypeContext);
HRESULT ( STDMETHODCALLTYPE *SetConstructFromStorage )(
IInitActivationPropertiesIn * This,
/* [unique][in] */ IStorage *pStorage);
HRESULT ( STDMETHODCALLTYPE *SetConstructFromFile )(
IInitActivationPropertiesIn * This,
/* [in] */ WCHAR *wszFileName,
/* [in] */ DWORD dwMode);
END_INTERFACE
} IInitActivationPropertiesInVtbl;
@@ -0,0 +1,38 @@
typedef struct IOpaqueDataInfoVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
IOpaqueDataInfo * This,
/* [in] */ REFIID riid,
/* [iid_is][out] */ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
IOpaqueDataInfo * This);
ULONG ( STDMETHODCALLTYPE *Release )(
IOpaqueDataInfo * This);
HRESULT ( STDMETHODCALLTYPE *AddOpaqueData )(
IOpaqueDataInfo * This,
/* [in] */ OpaqueData *pData);
HRESULT ( STDMETHODCALLTYPE *GetOpaqueData )(
IOpaqueDataInfo * This,
/* [in] */ REFGUID guid,
/* [out] */ OpaqueData **pData);
HRESULT ( STDMETHODCALLTYPE *DeleteOpaqueData )(
IOpaqueDataInfo * This,
/* [in] */ REFGUID guid);
HRESULT ( STDMETHODCALLTYPE *GetOpaqueDataCount )(
IOpaqueDataInfo * This,
/* [out] */ ULONG *pulCount);
HRESULT ( STDMETHODCALLTYPE *GetAllOpaqueData )(
IOpaqueDataInfo * This,
/* [out] */ OpaqueData **prgData);
END_INTERFACE
} IOpaqueDataInfoVtbl;
@@ -0,0 +1,84 @@
typedef struct IPrivActivationPropertiesInVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
IPrivActivationPropertiesIn * This,
/* [in] */ REFIID riid,
/* [iid_is][out] */ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
IPrivActivationPropertiesIn * This);
ULONG ( STDMETHODCALLTYPE *Release )(
IPrivActivationPropertiesIn * This);
HRESULT ( STDMETHODCALLTYPE *GetActivationID )(
IPrivActivationPropertiesIn * This,
/* [out] */ GUID *pActivationID);
HRESULT ( STDMETHODCALLTYPE *GetClassInfo )(
IPrivActivationPropertiesIn * This,
/* [in] */ REFIID riid,
/* [iid_is][out] */ void **ppv);
HRESULT ( STDMETHODCALLTYPE *GetClsctx )(
IPrivActivationPropertiesIn * This,
/* [out] */ DWORD *pclsctx);
HRESULT ( STDMETHODCALLTYPE *GetActivationFlags )(
IPrivActivationPropertiesIn * This,
/* [out] */ DWORD *pactvflags);
HRESULT ( STDMETHODCALLTYPE *AddRequestedIIDs )(
IPrivActivationPropertiesIn * This,
/* [in] */ DWORD cIfs,
/* [size_is][in] */ IID *rgIID);
HRESULT ( STDMETHODCALLTYPE *GetRequestedIIDs )(
IPrivActivationPropertiesIn * This,
/* [out] */ ULONG *pulCount,
/* [out] */ IID **prgIID);
HRESULT ( STDMETHODCALLTYPE *DelegateGetClassObject )(
IPrivActivationPropertiesIn * This,
/* [out] */ IActivationPropertiesOut **pActPropsOut);
HRESULT ( STDMETHODCALLTYPE *DelegateCreateInstance )(
IPrivActivationPropertiesIn * This,
/* [in] */ IUnknown *pUnkOuter,
/* [out] */ IActivationPropertiesOut **pActPropsOut);
HRESULT ( STDMETHODCALLTYPE *DelegateCIAndGetCF )(
IPrivActivationPropertiesIn * This,
/* [in] */ IUnknown *pUnkOuter,
/* [out] */ IActivationPropertiesOut **pActPropsOut,
/* [out] */ IClassFactory **ppCf);
HRESULT ( STDMETHODCALLTYPE *GetReturnActivationProperties )(
IPrivActivationPropertiesIn * This,
/* [in] */ IUnknown *pUnk,
/* [out] */ IActivationPropertiesOut **ppActOut);
HRESULT ( STDMETHODCALLTYPE *PrivGetReturnActivationProperties )(
IPrivActivationPropertiesIn * This,
/* [out] */ IPrivActivationPropertiesOut **ppActOut);
HRESULT ( STDMETHODCALLTYPE *GetCOMVersion )(
IPrivActivationPropertiesIn * This,
/* [out] */ COMVERSION *pVersion);
HRESULT ( STDMETHODCALLTYPE *GetClsid )(
IPrivActivationPropertiesIn * This,
/* [out] */ CLSID *pClsid);
HRESULT ( STDMETHODCALLTYPE *GetClientToken )(
IPrivActivationPropertiesIn * This,
/* [out] */ HANDLE *pHandle);
HRESULT ( STDMETHODCALLTYPE *GetDestCtx )(
IPrivActivationPropertiesIn * This,
/* [out] */ DWORD *pdwDestCtx);
END_INTERFACE
} IPrivActivationPropertiesInVtbl;
@@ -0,0 +1,58 @@
typedef struct IPrivActivationPropertiesOutVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
IPrivActivationPropertiesOut * This,
/* [in] */ REFIID riid,
/* [iid_is][out] */ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
IPrivActivationPropertiesOut * This);
ULONG ( STDMETHODCALLTYPE *Release )(
IPrivActivationPropertiesOut * This);
HRESULT ( STDMETHODCALLTYPE *GetActivationID )(
IPrivActivationPropertiesOut * This,
/* [out] */ GUID *pActivationID);
HRESULT ( STDMETHODCALLTYPE *GetObjectInterface )(
IPrivActivationPropertiesOut * This,
/* [in] */ REFIID riid,
/* [in] */ DWORD actvflags,
/* [iid_is][out] */ void **ppv);
HRESULT ( STDMETHODCALLTYPE *GetObjectInterfaces )(
IPrivActivationPropertiesOut * This,
/* [in] */ DWORD cIfs,
/* [in] */ DWORD actvflags,
/* [size_is][in] */ MULTI_QI *multiQi);
HRESULT ( STDMETHODCALLTYPE *RemoveRequestedIIDs )(
IPrivActivationPropertiesOut * This,
/* [in] */ DWORD cIfs,
/* [size_is][in] */ IID *rgIID);
HRESULT ( STDMETHODCALLTYPE *SetObjectInterfaces )(
IPrivActivationPropertiesOut * This,
/* [in] */ DWORD cIfs,
/* [in] */ IID *pIID,
/* [in] */ IUnknown *pUnk);
HRESULT ( STDMETHODCALLTYPE *SetMarshalledResults )(
IPrivActivationPropertiesOut * This,
/* [in] */ DWORD cIfs,
/* [in] */ IID *pIID,
/* [in] */ HRESULT *pHr,
/* [in] */ MInterfacePointer **pIntfData);
HRESULT ( STDMETHODCALLTYPE *GetMarshalledResults )(
IPrivActivationPropertiesOut * This,
/* [out] */ DWORD *pcIfs,
/* [out] */ IID **pIID,
/* [out] */ HRESULT **pHr,
/* [out] */ MInterfacePointer ***pIntfData);
END_INTERFACE
} IPrivActivationPropertiesOutVtbl;
@@ -0,0 +1,33 @@
typedef struct IScmReplyInfoVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
IScmReplyInfo * This,
/* [in] */ REFIID riid,
/* [iid_is][out] */ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
IScmReplyInfo * This);
ULONG ( STDMETHODCALLTYPE *Release )(
IScmReplyInfo * This);
HRESULT ( STDMETHODCALLTYPE *SetResolverInfo )(
IScmReplyInfo * This,
/* [in] */ PRIV_RESOLVER_INFO *pResolverInfo); /* Need to be cast to PRIV_RESOLVER_INFO_LEGACY on old windows */
HRESULT ( STDMETHODCALLTYPE *GetResolverInfo )(
IScmReplyInfo * This,
/* [out] */ PRIV_RESOLVER_INFO **ppResolverInfo); /* Need to be cast to PRIV_RESOLVER_INFO_LEGACY on old windows */
HRESULT ( STDMETHODCALLTYPE *SetRemoteReplyInfo )(
IScmReplyInfo * This,
/* [in] */ REMOTE_REPLY_SCM_INFO *pRemoteReply);
HRESULT ( STDMETHODCALLTYPE *GetRemoteReplyInfo )(
IScmReplyInfo * This,
/* [out] */ REMOTE_REPLY_SCM_INFO **ppRemoteReply);
END_INTERFACE
} IScmReplyInfoVtbl;
@@ -0,0 +1,33 @@
typedef struct IScmRequestInfoVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
IScmRequestInfo * This,
/* [in] */ REFIID riid,
/* [iid_is][out] */ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
IScmRequestInfo * This);
ULONG ( STDMETHODCALLTYPE *Release )(
IScmRequestInfo * This);
HRESULT ( STDMETHODCALLTYPE *SetScmInfo )(
IScmRequestInfo * This,
/* [in] */ PRIV_SCM_INFO *pScmInfo);
HRESULT ( STDMETHODCALLTYPE *GetScmInfo )(
IScmRequestInfo * This,
/* [out] */ PRIV_SCM_INFO **ppScmInfo);
HRESULT ( STDMETHODCALLTYPE *SetRemoteRequestInfo )(
IScmRequestInfo * This,
/* [in] */ REMOTE_REQUEST_SCM_INFO *pRemoteReq);
HRESULT ( STDMETHODCALLTYPE *GetRemoteRequestInfo )(
IScmRequestInfo * This,
/* [out] */ REMOTE_REQUEST_SCM_INFO **ppRemoteReq);
END_INTERFACE
} IScmRequestInfoVtbl;
@@ -0,0 +1,58 @@
typedef struct IStandardActivatorVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
IStandardActivator * This,
/* [in] */ REFIID riid,
/* [iid_is][out] */ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
IStandardActivator * This);
ULONG ( STDMETHODCALLTYPE *Release )(
IStandardActivator * This);
HRESULT ( STDMETHODCALLTYPE *StandardGetClassObject )(
IStandardActivator * This,
/* [in] */ REFCLSID rclsid,
/* [in] */ DWORD dwClsCtx,
/* [in] */ COSERVERINFO *pServerInfo,
/* [in] */ REFIID riid,
/* [iid_is][out] */ void **ppv);
HRESULT ( STDMETHODCALLTYPE *StandardCreateInstance )(
IStandardActivator * This,
/* [in] */ REFCLSID Clsid,
/* [in] */ IUnknown *punkOuter,
/* [in] */ DWORD dwClsCtx,
/* [in] */ COSERVERINFO *pServerInfo,
/* [in] */ DWORD dwCount,
/* [size_is][in] */ MULTI_QI *pResults);
HRESULT ( STDMETHODCALLTYPE *StandardGetInstanceFromFile )(
IStandardActivator * This,
/* [in] */ COSERVERINFO *pServerInfo,
/* [in] */ CLSID *pclsidOverride,
/* [in] */ IUnknown *punkOuter,
/* [in] */ DWORD dwClsCtx,
/* [in] */ DWORD grfMode,
/* [in] */ OLECHAR *pwszName,
/* [in] */ DWORD dwCount,
/* [size_is][in] */ MULTI_QI *pResults);
HRESULT ( STDMETHODCALLTYPE *StandardGetInstanceFromIStorage )(
IStandardActivator * This,
/* [in] */ COSERVERINFO *pServerInfo,
/* [in] */ CLSID *pclsidOverride,
/* [in] */ IUnknown *punkOuter,
/* [in] */ DWORD dwClsCtx,
/* [in] */ IStorage *pstg,
/* [in] */ DWORD dwCount,
/* [size_is][in] */ MULTI_QI *pResults);
HRESULT ( STDMETHODCALLTYPE *Reset )(
IStandardActivator * This);
END_INTERFACE
} IStandardActivatorVtbl;
@@ -0,0 +1,28 @@
typedef struct ISystemActivatorVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ISystemActivator * This,
/* [in] */ REFIID riid,
/* [iid_is][out] */ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
ISystemActivator * This);
ULONG ( STDMETHODCALLTYPE *Release )(
ISystemActivator * This);
HRESULT ( STDMETHODCALLTYPE *GetClassObject )(
ISystemActivator * This,
/* [unique][in] */ IActivationPropertiesIn *pActProperties,
/* [out] */ IActivationPropertiesOut **ppActProperties);
HRESULT ( STDMETHODCALLTYPE *CreateInstance )(
ISystemActivator * This,
/* [unique][in] */ IUnknown *pUnkOuter,
/* [unique][in] */ IActivationPropertiesIn *pActProperties,
/* [out] */ IActivationPropertiesOut **ppActProperties);
END_INTERFACE
} ISystemActivatorVtbl;
@@ -0,0 +1,57 @@
// Manually crafted from windows 10
typedef struct IProxyManagerVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in IProxyManager * This,
/* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in IProxyManager * This);
ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in IProxyManager * This);
HRESULT ( STDMETHODCALLTYPE *CreateServer )(
IProxyManager * This,
REFCLSID * rclsid,
DWORD * clsctx,
PVOID *pv);
BOOL ( STDMETHODCALLTYPE *IsConnected )(
IProxyManager * This);
HRESULT ( STDMETHODCALLTYPE *LockConnection )(
IProxyManager * This,
BOOL fLock,
BOOL fLastUnlockReleases);
HRESULT ( STDMETHODCALLTYPE *Disconnect )(
IProxyManager * This);
HRESULT ( STDMETHODCALLTYPE *GetConnectionStatus )(
IProxyManager * This);
HRESULT ( STDMETHODCALLTYPE *ScalarDeletingDestructor )( // CPP code ? is this the real end of the Interface ?
IProxyManager * This);
HRESULT ( STDMETHODCALLTYPE *SetMapping )(
IProxyManager * This);
HRESULT ( STDMETHODCALLTYPE *GetMapping )(
IProxyManager * This);
IObjContext ( STDMETHODCALLTYPE *GetServerObjectContext )(
IProxyManager * This);
HRESULT ( STDMETHODCALLTYPE *GetWrapperForContex )(
IProxyManager * This,
IObjContext *pCtx,
IID *riid,
void **ppv);
END_INTERFACE
} IProxyManagerVtbl;
@@ -0,0 +1,28 @@
typedef struct IProxyServerIdentityVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
IProxyServerIdentity * This,
/* [in] */ REFIID riid,
/* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
IProxyServerIdentity * This);
ULONG ( STDMETHODCALLTYPE *Release )(
IProxyServerIdentity * This);
HRESULT ( STDMETHODCALLTYPE *GetServerProcessId )(
IProxyServerIdentity * This,
UINT *processId);
HRESULT ( STDMETHODCALLTYPE *GetServerProcessHandle )(
IProxyServerIdentity * This,
DWORD dwDesiredAccess,
INT bInheritHandle,
PVOID *phProcess) ;
END_INTERFACE
} IProxyServerIdentityVtbl;
@@ -0,0 +1,62 @@
typedef struct IChannelHookVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
IChannelHook * This,
/* [in] */ REFIID riid,
/* [iid_is][out] */ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
IChannelHook * This);
ULONG ( STDMETHODCALLTYPE *Release )(
IChannelHook * This);
PVOID ( STDMETHODCALLTYPE *ClientGetSize )(
IChannelHook * This,
/* [in] */ REFGUID uExtent,
/* [in] */ REFIID riid,
/* [out] */ ULONG *pDataSize);
PVOID ( STDMETHODCALLTYPE *ClientFillBuffer )(
IChannelHook * This,
/* [in] */ REFGUID uExtent,
/* [in] */ REFIID riid,
/* [out][in] */ ULONG *pDataSize,
/* [in] */ void *pDataBuffer);
PVOID ( STDMETHODCALLTYPE *ClientNotify )(
IChannelHook * This,
/* [in] */ REFGUID uExtent,
/* [in] */ REFIID riid,
/* [in] */ ULONG cbDataSize,
/* [in] */ void *pDataBuffer,
/* [in] */ DWORD lDataRep,
/* [in] */ HRESULT hrFault);
PVOID ( STDMETHODCALLTYPE *ServerNotify )(
IChannelHook * This,
/* [in] */ REFGUID uExtent,
/* [in] */ REFIID riid,
/* [in] */ ULONG cbDataSize,
/* [in] */ void *pDataBuffer,
/* [in] */ DWORD lDataRep);
PVOID ( STDMETHODCALLTYPE *ServerGetSize )(
IChannelHook * This,
/* [in] */ REFGUID uExtent,
/* [in] */ REFIID riid,
/* [in] */ HRESULT hrFault,
/* [out] */ ULONG *pDataSize);
PVOID ( STDMETHODCALLTYPE *ServerFillBuffer )(
IChannelHook * This,
/* [in] */ REFGUID uExtent,
/* [in] */ REFIID riid,
/* [out][in] */ ULONG *pDataSize,
/* [in] */ void *pDataBuffer,
/* [in] */ HRESULT hrFault);
END_INTERFACE
} IChannelHookVtbl;
@@ -0,0 +1,39 @@
typedef struct IRpcChannelBufferVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
IRpcChannelBuffer * This,
/* [in] */ REFIID riid,
/* [iid_is][out] */ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
IRpcChannelBuffer * This);
ULONG ( STDMETHODCALLTYPE *Release )(
IRpcChannelBuffer * This);
HRESULT ( STDMETHODCALLTYPE *GetBuffer )(
IRpcChannelBuffer * This,
/* [in] */ RPCOLEMESSAGE *pMessage,
/* [in] */ REFIID riid);
HRESULT ( STDMETHODCALLTYPE *SendReceive )(
IRpcChannelBuffer * This,
/* [out][in] */ RPCOLEMESSAGE *pMessage,
/* [out] */ ULONG *pStatus);
HRESULT ( STDMETHODCALLTYPE *FreeBuffer )(
IRpcChannelBuffer * This,
/* [in] */ RPCOLEMESSAGE *pMessage);
HRESULT ( STDMETHODCALLTYPE *GetDestCtx )(
IRpcChannelBuffer * This,
/* [out] */ DWORD *pdwDestContext,
/* [out] */ void **ppvDestContext);
HRESULT ( STDMETHODCALLTYPE *IsConnected )(
IRpcChannelBuffer * This);
END_INTERFACE
} IRpcChannelBufferVtbl;
@@ -0,0 +1,26 @@
typedef struct IRpcHelperVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
IRpcHelper * This,
/* [in] */ REFIID riid,
/* [iid_is][out] */ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
IRpcHelper * This);
ULONG ( STDMETHODCALLTYPE *Release )(
IRpcHelper * This);
HRESULT ( STDMETHODCALLTYPE *GetDCOMProtocolVersion )(
IRpcHelper * This,
/* [out] */ DWORD *pComVersion);
HRESULT ( STDMETHODCALLTYPE *GetIIDFromOBJREF )(
IRpcHelper * This,
/* [in] */ void *pObjRef,
/* [out] */ IID **piid);
END_INTERFACE
} IRpcHelperVtbl;
@@ -0,0 +1,29 @@
typedef struct IRpcOptionsVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
IRpcOptions * This,
/* [in] */ REFIID riid,
/* [iid_is][out] */ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
IRpcOptions * This);
ULONG ( STDMETHODCALLTYPE *Release )(
IRpcOptions * This);
HRESULT ( STDMETHODCALLTYPE *Set )(
IRpcOptions * This,
/* [in] */ IUnknown *pPrx,
/* [in] */ DWORD dwProperty,
/* [in] */ ULONG_PTR dwValue);
HRESULT ( STDMETHODCALLTYPE *Query )(
IRpcOptions * This,
/* [in] */ IUnknown *pPrx,
/* [in] */ DWORD dwProperty,
/* [out] */ ULONG_PTR *pdwValue);
END_INTERFACE
} IRpcOptionsVtbl;
@@ -0,0 +1,45 @@
typedef struct IRpcStubBufferVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
IRpcStubBuffer * This,
/* [in] */ REFIID riid,
/* [iid_is][out] */ PVOID *ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
IRpcStubBuffer * This);
ULONG ( STDMETHODCALLTYPE *Release )(
IRpcStubBuffer * This);
HRESULT ( STDMETHODCALLTYPE *Connect )(
IRpcStubBuffer * This,
/* [in] */ IUnknown *pUnkServer);
PVOID ( STDMETHODCALLTYPE *Disconnect )(
IRpcStubBuffer * This);
HRESULT ( STDMETHODCALLTYPE *Invoke )(
IRpcStubBuffer * This,
/* [in] */ RPCOLEMESSAGE *_prpcmsg,
/* [in] */ IRpcChannelBuffer *_pRpcChannelBuffer);
// IRpcStubBuffer *
PVOID ( STDMETHODCALLTYPE *IsIIDSupported )(
IRpcStubBuffer * This,
/* [in] */ REFIID riid);
ULONG ( STDMETHODCALLTYPE *CountRefs )(
IRpcStubBuffer * This);
HRESULT ( STDMETHODCALLTYPE *DebugServerQueryInterface )(
IRpcStubBuffer * This,
PVOID *ppv);
PVOID ( STDMETHODCALLTYPE *DebugServerRelease )(
IRpcStubBuffer * This,
PVOID pv);
END_INTERFACE
} IRpcStubBufferVtbl;
+29 -8
View File
@@ -19,8 +19,8 @@ class COMInterface(ctypes.c_void_p):
# So COMInterface completely bypass the HRESULT
# return value check on restype by setting the restype to COMHRESULT
# But we add the 'errcheck' callbakc capacity for all COMInterface and subclasses
# So the default implem of the callbakc must have the same behavior as
# But we add the 'errcheck' callback capacity for all COMInterface and subclasses
# So the default implem of the callback must have the same behavior as
# standard HRESULT restype.
# This is why default errcheck callback call ctypes._check_HRESULT
def _default_errcheck(self, result, func, args):
@@ -42,12 +42,33 @@ class COMInterface(ctypes.c_void_p):
description = "<NULL>" if not self.value else ""
return "<{0}{1} at {2:#x}>".format(type(self).__name__, description, id(self))
# Simplified API for QueryInterface for interface embeding there IID
def query(self, interfacetype):
interface = interfacetype()
self.QueryInterface(interface.IID, interface)
return interface
# Simplified API for QueryInterface for interface embeding their IID
# Or for string/Obj
def query(self, interface, target=None):
if isinstance(interface, str): # We have a GUID
interface_iid = IID.from_string(interface)
if target is None:
target = IUnknown()
elif issubclass(interface, COMInterface): # We have a PFW COM interface
interface_iid = interface.IID
if target is None:
target = interface() # Use an instance of the ComInterface as target of the QueryInterface
else:
# We have something else (A gdef.GUID probably)
interface_iid = interface
if target is None:
target = IUnknown()
self.QueryInterface(interface_iid, target)
return target
def marshal(self, target_iid=None, destination=MSHCTX_NOSHAREDMEM, flags=MSHLFLAGS_NORMAL):
if target_iid is None:
target_iid = self.IID
mystream = windows.com.MemoryIStream.create()
windows.winproxy.CoMarshalInterface(mystream, target_iid, self, destination, 0, flags)
mystream.seek(0)
buffer = mystream.read(0xffffffff) # Todo: release stuff
return buffer
@@ -0,0 +1,33 @@
#define ORPCF_NULL ( 0 )
#define ORPCF_LOCAL ( 1 )
#define ORPCF_RESERVED1 ( 2 )
#define ORPCF_RESERVED2 ( 4 )
#define ORPCF_RESERVED3 ( 8 )
#define ORPCF_RESERVED4 ( 16 )
#define ORPCF_INPUT_SYNC ORPCF_RESERVED1
#define ORPCF_ASYNC ORPCF_RESERVED2
#define ORPCF_DYNAMIC_CLOAKING ORPCF_RESERVED3
#define ORPCF_REJECTED ORPCF_RESERVED1
#define ORPCF_RETRY_LATER ORPCF_RESERVED2
#define OBJREF_SIGNATURE ( 0x574f454d )
#define OBJREF_STANDARD ( 0x1 )
#define OBJREF_HANDLER ( 0x2 )
#define OBJREF_CUSTOM ( 0x4 )
#define OBJREF_EXTENDED ( 0x8 )
#define SORF_OXRES1 ( 0x1 )
#define SORF_OXRES2 ( 0x20 )
#define SORF_OXRES3 ( 0x40 )
#define SORF_OXRES4 ( 0x80 )
#define SORF_OXRES5 ( 0x100 )
#define SORF_OXRES6 ( 0x200 )
#define SORF_OXRES7 ( 0x400 )
#define SORF_OXRES8 ( 0x800 )
#define SORF_NULL ( 0 )
#define SORF_NOPING ( 0x1000 )
#define UNIQUE_FLAG_PADDING 2
#define MAINHDRSIG 0x414E554B
#define ENTRYHDRSIG 0x494E414E
@@ -0,0 +1,153 @@
#define ALG_CLASS_ANY (0)
#define ALG_CLASS_SIGNATURE (1 << 13)
#define ALG_CLASS_MSG_ENCRYPT (2 << 13)
#define ALG_CLASS_DATA_ENCRYPT (3 << 13)
#define ALG_CLASS_HASH (4 << 13)
#define ALG_CLASS_KEY_EXCHANGE (5 << 13)
#define ALG_CLASS_ALL (7 << 13)
/* Algorithm types */
#define ALG_TYPE_ANY (0)
#define ALG_TYPE_DSS (1 << 9)
#define ALG_TYPE_RSA (2 << 9)
#define ALG_TYPE_BLOCK (3 << 9)
#define ALG_TYPE_STREAM (4 << 9)
#define ALG_TYPE_DH (5 << 9)
#define ALG_TYPE_SECURECHANNEL (6 << 9)
#define ALG_TYPE_ECDH (7 << 9)
/* SIDs */
#define ALG_SID_ANY (0)
/* RSA SIDs */
#define ALG_SID_RSA_ANY 0
#define ALG_SID_RSA_PKCS 1
#define ALG_SID_RSA_MSATWORK 2
#define ALG_SID_RSA_ENTRUST 3
#define ALG_SID_RSA_PGP 4
/* DSS SIDs */
#define ALG_SID_DSS_ANY 0
#define ALG_SID_DSS_PKCS 1
#define ALG_SID_DSS_DMS 2
#define ALG_SID_ECDSA 3
/* DES SIDs */
#define ALG_SID_DES 1
#define ALG_SID_3DES 3
#define ALG_SID_DESX 4
#define ALG_SID_IDEA 5
#define ALG_SID_CAST 6
#define ALG_SID_SAFERSK64 7
#define ALG_SID_SAFERSK128 8
#define ALG_SID_3DES_112 9
#define ALG_SID_CYLINK_MEK 12
#define ALG_SID_RC5 13
#define ALG_SID_AES_128 14
#define ALG_SID_AES_192 15
#define ALG_SID_AES_256 16
#define ALG_SID_AES 17
/* Fortezza */
#define ALG_SID_SKIPJACK 10
#define ALG_SID_TEK 11
/* Diffie-Hellmans SIDs */
#define ALG_SID_DH_SANDF 1
#define ALG_SID_DH_EPHEM 2
#define ALG_SID_AGREED_KEY_ANY 3
#define ALG_SID_KEA 4
#define ALG_SID_ECDH 5
#define ALG_SID_ECDH_EPHEM 6
/* RC2 SIDs */
#define ALG_SID_RC4 1
#define ALG_SID_RC2 2
#define ALG_SID_SEAL 2
/* Hash SIDs */
#define ALG_SID_MD2 1
#define ALG_SID_MD4 2
#define ALG_SID_MD5 3
#define ALG_SID_SHA 4
#define ALG_SID_SHA1 ALG_SID_SHA
#define ALG_SID_MAC 5
#define ALG_SID_RIPEMD 6
#define ALG_SID_RIPEMD160 7
#define ALG_SID_SSL3SHAMD5 8
#define ALG_SID_HMAC 9
#define ALG_SID_TLS1PRF 10
#define ALG_SID_HASH_REPLACE_OWF 11
#define ALG_SID_SHA_256 12
#define ALG_SID_SHA_384 13
#define ALG_SID_SHA_512 14
/* SCHANNEL SIDs */
#define ALG_SID_SSL3_MASTER 1
#define ALG_SID_SCHANNEL_MASTER_HASH 2
#define ALG_SID_SCHANNEL_MAC_KEY 3
#define ALG_SID_PCT1_MASTER 4
#define ALG_SID_SSL2_MASTER 5
#define ALG_SID_TLS1_MASTER 6
#define ALG_SID_SCHANNEL_ENC_KEY 7
#define ALG_SID_EXAMPLE 80
#define ALG_SID_ECMQV 1
/* Algorithm Definitions */
#define CALG_MD2 (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_MD2)
#define CALG_MD4 (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_MD4)
#define CALG_MD5 (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_MD5)
#define CALG_SHA (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_SHA)
#define CALG_SHA1 CALG_SHA
#define CALG_MAC (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_MAC)
#define CALG_SSL3_SHAMD5 (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_SSL3SHAMD5)
#define CALG_HMAC (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_HMAC)
#define CALG_TLS1PRF (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_TLS1PRF)
#define CALG_HASH_REPLACE_OWF (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_HASH_REPLACE_OWF)
#define CALG_SHA_256 (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_SHA_256)
#define CALG_SHA_384 (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_SHA_384)
#define CALG_SHA_512 (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_SHA_512)
#define CALG_RSA_SIGN (ALG_CLASS_SIGNATURE | ALG_TYPE_RSA | ALG_SID_RSA_ANY)
#define CALG_DSS_SIGN (ALG_CLASS_SIGNATURE | ALG_TYPE_DSS | ALG_SID_DSS_ANY)
#define CALG_NO_SIGN (ALG_CLASS_SIGNATURE | ALG_TYPE_ANY | ALG_SID_ANY)
#define CALG_ECDSA (ALG_CLASS_SIGNATURE | ALG_TYPE_DSS | ALG_SID_ECDSA)
#define CALG_DH_SF (ALG_CLASS_KEY_EXCHANGE | ALG_TYPE_DH | ALG_SID_DH_SANDF)
#define CALG_DH_EPHEM (ALG_CLASS_KEY_EXCHANGE | ALG_TYPE_DH | ALG_SID_DH_EPHEM)
#define CALG_AGREEDKEY_ANY (ALG_CLASS_KEY_EXCHANGE | ALG_TYPE_DH | ALG_SID_AGREED_KEY_ANY)
#define CALG_KEA_KEYX (ALG_CLASS_KEY_EXCHANGE | ALG_TYPE_DH | ALG_SID_KEA)
#define CALG_HUGHES_MD5 (ALG_CLASS_KEY_EXCHANGE | ALG_TYPE_ANY | ALG_SID_MD5)
#define CALG_ECDH (ALG_CLASS_KEY_EXCHANGE | ALG_TYPE_DH | ALG_SID_ECDH)
#define CALG_ECDH_EPHEM (ALG_CLASS_KEY_EXCHANGE | ALG_TYPE_ECDH | ALG_SID_ECDH_EPHEM)
#define CALG_RSA_KEYX (ALG_CLASS_KEY_EXCHANGE | ALG_TYPE_RSA | ALG_SID_RSA_ANY)
#define CALG_ECMQV (ALG_CLASS_KEY_EXCHANGE | ALG_TYPE_ANY | ALG_SID_ECMQV)
#define CALG_DES (ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_DES)
#define CALG_RC2 (ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_RC2)
#define CALG_3DES (ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_3DES)
#define CALG_3DES_112 (ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_3DES_112)
#define CALG_DESX (ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_DESX)
#define CALG_AES_128 (ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_AES_128)
#define CALG_AES_192 (ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_AES_192)
#define CALG_AES_256 (ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_AES_256)
#define CALG_AES (ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_AES)
#define CALG_RC4 (ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_STREAM | ALG_SID_RC4)
#define CALG_SEAL (ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_STREAM | ALG_SID_SEAL)
#define CALG_RC5 (ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_STREAM | ALG_SID_RC5)
#define CALG_SKIPJACK (ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_SKIPJACK)
#define CALG_TEK (ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_TEK)
#define CALG_CYLINK_MEK (ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_CYLINK_MEK)
#define CALG_SSL3_MASTER (ALG_CLASS_MSG_ENCRYPT | ALG_TYPE_SECURECHANNEL | ALG_SID_SSL3_MASTER)
#define CALG_SCHANNEL_MASTER_HASH (ALG_CLASS_MSG_ENCRYPT | ALG_TYPE_SECURECHANNEL | ALG_SID_SCHANNEL_MASTER_HASH)
#define CALG_SCHANNEL_MAC_KEY (ALG_CLASS_MSG_ENCRYPT | ALG_TYPE_SECURECHANNEL | ALG_SID_SCHANNEL_MAC_KEY)
#define CALG_SCHANNEL_ENC_KEY (ALG_CLASS_MSG_ENCRYPT | ALG_TYPE_SECURECHANNEL | ALG_SID_SCHANNEL_ENC_KEY)
#define CALG_PCT1_MASTER (ALG_CLASS_MSG_ENCRYPT | ALG_TYPE_SECURECHANNEL | ALG_SID_PCT1_MASTER)
#define CALG_SSL2_MASTER (ALG_CLASS_MSG_ENCRYPT | ALG_TYPE_SECURECHANNEL | ALG_SID_SSL2_MASTER)
#define CALG_TLS1_MASTER (ALG_CLASS_MSG_ENCRYPT | ALG_TYPE_SECURECHANNEL | ALG_SID_TLS1_MASTER)
/* Protocol Flags */
#define CRYPT_FLAG_PCT1 0x0001
#define CRYPT_FLAG_SSL2 0x0002
#define CRYPT_FLAG_SSL3 0x0004
#define CRYPT_FLAG_TLS1 0x0008
#define CRYPT_FLAG_IPSEC 0x0010
#define CRYPT_FLAG_SIGNING 0x0020
#define HP_ALGID 0x0001 // Hash algorithm
#define HP_HASHVAL 0x0002 // Hash value
#define HP_HASHSIZE 0x0004 // Hash value size
#define HP_HMAC_INFO 0x0005 // information for creating an HMAC
#define HP_TLS1PRF_LABEL 0x0006 // label for TLS1 PRF
#define HP_TLS1PRF_SEED 0x0007 // seed for TLS1 PRF
@@ -0,0 +1,94 @@
//
// CryptProtect PromptStruct dwPromtFlags
//
//
// prompt on unprotect
#define CRYPTPROTECT_PROMPT_ON_UNPROTECT 0x1 // 1<<0
//
// prompt on protect
#define CRYPTPROTECT_PROMPT_ON_PROTECT 0x2 // 1<<1
#define CRYPTPROTECT_PROMPT_RESERVED 0x04 // reserved, do not use.
//
// default to strong variant UI protection (user supplied password currently).
#define CRYPTPROTECT_PROMPT_STRONG 0x08 // 1<<3
//
// require strong variant UI protection (user supplied password currently).
#define CRYPTPROTECT_PROMPT_REQUIRE_STRONG 0x10 // 1<<4
//
// CryptProtectData and CryptUnprotectData dwFlags
//
// for remote-access situations where ui is not an option
// if UI was specified on protect or unprotect operation, the call
// will fail and GetLastError() will indicate ERROR_PASSWORD_RESTRICTION
#define CRYPTPROTECT_UI_FORBIDDEN 0x1
//
// per machine protected data -- any user on machine where CryptProtectData
// took place may CryptUnprotectData
#define CRYPTPROTECT_LOCAL_MACHINE 0x4
//
// force credential synchronize during CryptProtectData()
// Synchronize is only operation that occurs during this operation
#define CRYPTPROTECT_CRED_SYNC 0x8
//
// Generate an Audit on protect and unprotect operations
//
#define CRYPTPROTECT_AUDIT 0x10
//
// Protect data with a non-recoverable key
//
#define CRYPTPROTECT_NO_RECOVERY 0x20
//
// Verify the protection of a protected blob
//
#define CRYPTPROTECT_VERIFY_PROTECTION 0x40
//
// Regenerate the local machine protection
//
#define CRYPTPROTECT_CRED_REGENERATE 0x80
// flags reserved for system use
#define CRYPTPROTECT_FIRST_RESERVED_FLAGVAL 0x0FFFFFFF
#define CRYPTPROTECT_LAST_RESERVED_FLAGVAL 0xFFFFFFFF
//
// The buffer length passed into CryptProtectMemory and CryptUnprotectMemory
// must be a multiple of this length (or zero).
//
#define CRYPTPROTECTMEMORY_BLOCK_SIZE 16
//
// CryptProtectMemory/CryptUnprotectMemory dwFlags
//
//
// Encrypt/Decrypt within current process context.
//
#define CRYPTPROTECTMEMORY_SAME_PROCESS 0x00
//
// Encrypt/Decrypt across process boundaries.
// eg: encrypted buffer passed across LPC to another process which calls CryptUnprotectMemory.
//
#define CRYPTPROTECTMEMORY_CROSS_PROCESS 0x01
//
// Encrypt/Decrypt across callers with same LogonId.
// eg: encrypted buffer passed across LPC to another process which calls CryptUnprotectMemory whilst impersonating.
//
#define CRYPTPROTECTMEMORY_SAME_LOGON 0x02
@@ -2,4 +2,22 @@
#define ERROR_SEVERITY_SUCCESS 0x00000000
#define ERROR_SEVERITY_INFORMATIONAL 0x40000000
#define ERROR_SEVERITY_WARNING 0x80000000
#define ERROR_SEVERITY_ERROR 0xC0000000
#define ERROR_SEVERITY_ERROR 0xC0000000
// https://learn.microsoft.com/en-us/windows/win32/com/structure-of-com-error-codes
// Define the facility codes
//
#define FACILITY_WINDOWS 0x8
#define FACILITY_WIN32 0x7
#define FACILITY_STORAGE 0x3
#define FACILITY_RPC 0x1
#define FACILITY_NULL 0x0
#define FACILITY_ITF 0x4
#define FACILITY_DISPATCH 0x2
//
// Define the severity codes
//
#define STATUS_SEVERITY_SUCCESS 0x0
#define STATUS_SEVERITY_COERROR 0x2
@@ -45,6 +45,37 @@
#define EVENT_TRACE_FILE_MODE_NEWFILE 0x00000008 // Auto-switch log file
#define EVENT_TRACE_FILE_MODE_PREALLOCATE 0x00000020 // Pre-allocate mode
//
// Logger Mode flags on Vista and above
//
#define EVENT_TRACE_NONSTOPPABLE_MODE 0x00000040 // Session cannot be stopped (Autologger only)
#define EVENT_TRACE_SECURE_MODE 0x00000080 // Secure session
#define EVENT_TRACE_USE_KBYTES_FOR_SIZE 0x00002000 // Use KBytes as file size unit
#define EVENT_TRACE_PRIVATE_IN_PROC 0x00020000 // In process private logger
#define EVENT_TRACE_MODE_RESERVED 0x00100000 // Reserved bit, used to signal Heap/Critsec tracing
//
// Logger Mode flags on Win7 and above
//
#define EVENT_TRACE_NO_PER_PROCESSOR_BUFFERING 0x10000000 // Use this for low frequency sessions.
//
// Logger Mode flags on Win8 and above
//
#define EVENT_TRACE_SYSTEM_LOGGER_MODE 0x02000000 // Receive events from SystemTraceProvider
#define EVENT_TRACE_ADDTO_TRIAGE_DUMP 0x80000000 // Add ETW buffers to triage dumps
#define EVENT_TRACE_STOP_ON_HYBRID_SHUTDOWN 0x00400000 // Stop on hybrid shutdown
#define EVENT_TRACE_PERSIST_ON_HYBRID_SHUTDOWN 0x00800000 // Persist on hybrid shutdown
//
// Logger Mode flags on Blue and above
//
#define EVENT_TRACE_INDEPENDENT_SESSION_MODE 0x08000000 // Independent logger session
//
// ControlTrace Codes
@@ -0,0 +1,72 @@
#define FILE_NOTIFY_CHANGE_FILE_NAME 0x00000001 // winnt
#define FILE_NOTIFY_CHANGE_DIR_NAME 0x00000002 // winnt
#define FILE_NOTIFY_CHANGE_NAME 0x00000003
#define FILE_NOTIFY_CHANGE_ATTRIBUTES 0x00000004 // winnt
#define FILE_NOTIFY_CHANGE_SIZE 0x00000008 // winnt
#define FILE_NOTIFY_CHANGE_LAST_WRITE 0x00000010 // winnt
#define FILE_NOTIFY_CHANGE_LAST_ACCESS 0x00000020 // winnt
#define FILE_NOTIFY_CHANGE_CREATION 0x00000040 // winnt
#define FILE_NOTIFY_CHANGE_EA 0x00000080
#define FILE_NOTIFY_CHANGE_SECURITY 0x00000100 // winnt
#define FILE_NOTIFY_CHANGE_STREAM_NAME 0x00000200
#define FILE_NOTIFY_CHANGE_STREAM_SIZE 0x00000400
#define FILE_NOTIFY_CHANGE_STREAM_WRITE 0x00000800
#define FILE_NOTIFY_VALID_MASK 0x00000fff
#define FILE_ACTION_ADDED 0x00000001 // winnt
#define FILE_ACTION_REMOVED 0x00000002 // winnt
#define FILE_ACTION_MODIFIED 0x00000003 // winnt
#define FILE_ACTION_RENAMED_OLD_NAME 0x00000004 // winnt
#define FILE_ACTION_RENAMED_NEW_NAME 0x00000005 // winnt
#define FILE_ACTION_ADDED_STREAM 0x00000006
#define FILE_ACTION_REMOVED_STREAM 0x00000007
#define FILE_ACTION_MODIFIED_STREAM 0x00000008
#define FILE_ACTION_REMOVED_BY_DELETE 0x00000009
#define FILE_ACTION_ID_NOT_TUNNELLED 0x0000000A
#define FILE_ACTION_TUNNELLED_ID_COLLISION 0x0000000B
#define FILE_CASE_SENSITIVE_SEARCH 0x00000001
#define FILE_CASE_PRESERVED_NAMES 0x00000002
#define FILE_UNICODE_ON_DISK 0x00000004
#define FILE_PERSISTENT_ACLS 0x00000008
#define FILE_FILE_COMPRESSION 0x00000010
#define FILE_VOLUME_QUOTAS 0x00000020
#define FILE_SUPPORTS_SPARSE_FILES 0x00000040
#define FILE_SUPPORTS_REPARSE_POINTS 0x00000080
#define FILE_SUPPORTS_REMOTE_STORAGE 0x00000100
#define FILE_VOLUME_IS_COMPRESSED 0x00008000
#define FILE_SUPPORTS_OBJECT_IDS 0x00010000
#define FILE_SUPPORTS_ENCRYPTION 0x00020000
#define FILE_NAMED_STREAMS 0x00040000
#define FILE_READ_ONLY_VOLUME 0x00080000
#define FILE_SEQUENTIAL_WRITE_ONCE 0x00100000
#define FILE_SUPPORTS_TRANSACTIONS 0x00200000
#define FILE_SUPPORTS_HARD_LINKS 0x00400000
#define FILE_SUPPORTS_EXTENDED_ATTRIBUTES 0x00800000
#define FILE_SUPPORTS_OPEN_BY_FILE_ID 0x01000000
#define FILE_SUPPORTS_USN_JOURNAL 0x02000000
#define FILE_SHARE_READ 0x00000001
#define FILE_SHARE_WRITE 0x00000002
#define FILE_SHARE_DELETE 0x00000004
#define FILE_ATTRIBUTE_READONLY 0x00000001
#define FILE_ATTRIBUTE_HIDDEN 0x00000002
#define FILE_ATTRIBUTE_SYSTEM 0x00000004
#define FILE_ATTRIBUTE_DIRECTORY 0x00000010
#define FILE_ATTRIBUTE_ARCHIVE 0x00000020
#define FILE_ATTRIBUTE_DEVICE 0x00000040
#define FILE_ATTRIBUTE_NORMAL 0x00000080
#define FILE_ATTRIBUTE_TEMPORARY 0x00000100
#define FILE_ATTRIBUTE_SPARSE_FILE 0x00000200
#define FILE_ATTRIBUTE_REPARSE_POINT 0x00000400
#define FILE_ATTRIBUTE_COMPRESSED 0x00000800
#define FILE_ATTRIBUTE_OFFLINE 0x00001000
#define FILE_ATTRIBUTE_NOT_CONTENT_INDEXED 0x00002000
#define FILE_ATTRIBUTE_ENCRYPTED 0x00004000
#define FILE_ATTRIBUTE_VIRTUAL 0x00010000
@@ -0,0 +1,359 @@
/* CTL_CODE is directly defined in the .py template to simpify parsing of define */
// #define CTL_CODE( DeviceType, Function, Method, Access ) (((DeviceType) << 16) | ((Access) << 14) | ((Function) << 2) | (Method))
#define METHOD_BUFFERED 0
#define METHOD_IN_DIRECT 1
#define METHOD_OUT_DIRECT 2
#define METHOD_NEITHER 3
#define METHOD_DIRECT_TO_HARDWARE METHOD_IN_DIRECT
#define METHOD_DIRECT_FROM_HARDWARE METHOD_OUT_DIRECT
#define FILE_ANY_ACCESS 0
#define FILE_SPECIAL_ACCESS (FILE_ANY_ACCESS)
#define FILE_READ_ACCESS ( 0x0001 ) // file & pipe
#define FILE_WRITE_ACCESS ( 0x0002 ) // file & pipe
#define FILE_DISPOSITION_DO_NOT_DELETE 0x00000000
#define FILE_DISPOSITION_DELETE 0x00000001
#define FILE_DISPOSITION_POSIX_SEMANTICS 0x00000002
#define FILE_DISPOSITION_FORCE_IMAGE_SECTION_CHECK 0x00000004
#define FILE_DISPOSITION_ON_CLOSE 0x00000008
#define FILE_DISPOSITION_IGNORE_READONLY_ATTRIBUTE 0x00000010
/* From: ntifs.h */
//
// The following is a list of the native file system fsctls followed by
// additional network file system fsctls. Some values have been
// decommissioned.
//
#define FSCTL_REQUEST_OPLOCK_LEVEL_1 CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 0, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_REQUEST_OPLOCK_LEVEL_2 CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 1, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_REQUEST_BATCH_OPLOCK CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 2, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_OPLOCK_BREAK_ACKNOWLEDGE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 3, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_OPBATCH_ACK_CLOSE_PENDING CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 4, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_OPLOCK_BREAK_NOTIFY CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 5, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_LOCK_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 6, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_UNLOCK_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 7, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_DISMOUNT_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 8, METHOD_BUFFERED, FILE_ANY_ACCESS)
// decommissioned fsctl value 9
#define FSCTL_IS_VOLUME_MOUNTED CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 10, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_IS_PATHNAME_VALID CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 11, METHOD_BUFFERED, FILE_ANY_ACCESS) // PATHNAME_BUFFER,
#define FSCTL_MARK_VOLUME_DIRTY CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 12, METHOD_BUFFERED, FILE_ANY_ACCESS)
// decommissioned fsctl value 13
#define FSCTL_QUERY_RETRIEVAL_POINTERS CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 14, METHOD_NEITHER, FILE_ANY_ACCESS)
#define FSCTL_GET_COMPRESSION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 15, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_SET_COMPRESSION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 16, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
// decommissioned fsctl value 17
// decommissioned fsctl value 18
#define FSCTL_SET_BOOTLOADER_ACCESSED CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 19, METHOD_NEITHER, FILE_ANY_ACCESS)
#define FSCTL_MARK_AS_SYSTEM_HIVE FSCTL_SET_BOOTLOADER_ACCESSED
#define FSCTL_OPLOCK_BREAK_ACK_NO_2 CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 20, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_INVALIDATE_VOLUMES CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 21, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_QUERY_FAT_BPB CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 22, METHOD_BUFFERED, FILE_ANY_ACCESS) // FSCTL_QUERY_FAT_BPB_BUFFER
#define FSCTL_REQUEST_FILTER_OPLOCK CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 23, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_FILESYSTEM_GET_STATISTICS CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 24, METHOD_BUFFERED, FILE_ANY_ACCESS) // FILESYSTEM_STATISTICS
#define FSCTL_GET_NTFS_VOLUME_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 25, METHOD_BUFFERED, FILE_ANY_ACCESS) // NTFS_VOLUME_DATA_BUFFER
#define FSCTL_GET_NTFS_FILE_RECORD CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 26, METHOD_BUFFERED, FILE_ANY_ACCESS) // NTFS_FILE_RECORD_INPUT_BUFFER, NTFS_FILE_RECORD_OUTPUT_BUFFER
#define FSCTL_GET_VOLUME_BITMAP CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 27, METHOD_NEITHER, FILE_ANY_ACCESS) // STARTING_LCN_INPUT_BUFFER, VOLUME_BITMAP_BUFFER
#define FSCTL_GET_RETRIEVAL_POINTERS CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 28, METHOD_NEITHER, FILE_ANY_ACCESS) // STARTING_VCN_INPUT_BUFFER, RETRIEVAL_POINTERS_BUFFER
#define FSCTL_MOVE_FILE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 29, METHOD_BUFFERED, FILE_SPECIAL_ACCESS) // MOVE_FILE_DATA,
#define FSCTL_IS_VOLUME_DIRTY CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 30, METHOD_BUFFERED, FILE_ANY_ACCESS)
// decommissioned fsctl value 31
#define FSCTL_ALLOW_EXTENDED_DASD_IO CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 32, METHOD_NEITHER, FILE_ANY_ACCESS)
// decommissioned fsctl value 33
// decommissioned fsctl value 34
#define FSCTL_FIND_FILES_BY_SID CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 35, METHOD_NEITHER, FILE_ANY_ACCESS)
// decommissioned fsctl value 36
// decommissioned fsctl value 37
#define FSCTL_SET_OBJECT_ID CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 38, METHOD_BUFFERED, FILE_SPECIAL_ACCESS) // FILE_OBJECTID_BUFFER
#define FSCTL_GET_OBJECT_ID CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 39, METHOD_BUFFERED, FILE_ANY_ACCESS) // FILE_OBJECTID_BUFFER
#define FSCTL_DELETE_OBJECT_ID CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 40, METHOD_BUFFERED, FILE_SPECIAL_ACCESS)
#define FSCTL_SET_REPARSE_POINT CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 41, METHOD_BUFFERED, FILE_SPECIAL_ACCESS) // REPARSE_DATA_BUFFER,
#define FSCTL_GET_REPARSE_POINT CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 42, METHOD_BUFFERED, FILE_ANY_ACCESS) // REPARSE_DATA_BUFFER
#define FSCTL_DELETE_REPARSE_POINT CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 43, METHOD_BUFFERED, FILE_SPECIAL_ACCESS) // REPARSE_DATA_BUFFER,
#define FSCTL_ENUM_USN_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 44, METHOD_NEITHER, FILE_ANY_ACCESS) // MFT_ENUM_DATA,
#define FSCTL_SECURITY_ID_CHECK CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 45, METHOD_NEITHER, FILE_READ_DATA) // BULK_SECURITY_TEST_DATA,
#define FSCTL_READ_USN_JOURNAL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 46, METHOD_NEITHER, FILE_ANY_ACCESS) // READ_USN_JOURNAL_DATA, USN
#define FSCTL_SET_OBJECT_ID_EXTENDED CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 47, METHOD_BUFFERED, FILE_SPECIAL_ACCESS)
#define FSCTL_CREATE_OR_GET_OBJECT_ID CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 48, METHOD_BUFFERED, FILE_ANY_ACCESS) // FILE_OBJECTID_BUFFER
#define FSCTL_SET_SPARSE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 49, METHOD_BUFFERED, FILE_SPECIAL_ACCESS)
#define FSCTL_SET_ZERO_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 50, METHOD_BUFFERED, FILE_WRITE_DATA) // FILE_ZERO_DATA_INFORMATION,
#define FSCTL_QUERY_ALLOCATED_RANGES CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 51, METHOD_NEITHER, FILE_READ_DATA) // FILE_ALLOCATED_RANGE_BUFFER, FILE_ALLOCATED_RANGE_BUFFER
#define FSCTL_ENABLE_UPGRADE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 52, METHOD_BUFFERED, FILE_WRITE_DATA)
#define FSCTL_SET_ENCRYPTION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 53, METHOD_NEITHER, FILE_ANY_ACCESS) // ENCRYPTION_BUFFER, DECRYPTION_STATUS_BUFFER
#define FSCTL_ENCRYPTION_FSCTL_IO CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 54, METHOD_NEITHER, FILE_ANY_ACCESS)
#define FSCTL_WRITE_RAW_ENCRYPTED CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 55, METHOD_NEITHER, FILE_SPECIAL_ACCESS) // ENCRYPTED_DATA_INFO, EXTENDED_ENCRYPTED_DATA_INFO
#define FSCTL_READ_RAW_ENCRYPTED CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 56, METHOD_NEITHER, FILE_SPECIAL_ACCESS) // REQUEST_RAW_ENCRYPTED_DATA, ENCRYPTED_DATA_INFO, EXTENDED_ENCRYPTED_DATA_INFO
#define FSCTL_CREATE_USN_JOURNAL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 57, METHOD_NEITHER, FILE_ANY_ACCESS) // CREATE_USN_JOURNAL_DATA,
#define FSCTL_READ_FILE_USN_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 58, METHOD_NEITHER, FILE_ANY_ACCESS) // Read the Usn Record for a file
#define FSCTL_WRITE_USN_CLOSE_RECORD CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 59, METHOD_NEITHER, FILE_ANY_ACCESS) // Generate Close Usn Record
#define FSCTL_EXTEND_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 60, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_QUERY_USN_JOURNAL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 61, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_DELETE_USN_JOURNAL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 62, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_MARK_HANDLE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 63, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_SIS_COPYFILE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 64, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_SIS_LINK_FILES CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 65, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
// decommissioned fsctl value 66
// decommissioned fsctl value 67
// decommissioned fsctl value 68
#define FSCTL_RECALL_FILE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 69, METHOD_NEITHER, FILE_ANY_ACCESS)
// decommissioned fsctl value 70
#define FSCTL_READ_FROM_PLEX CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 71, METHOD_OUT_DIRECT, FILE_READ_DATA)
#define FSCTL_FILE_PREFETCH CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 72, METHOD_BUFFERED, FILE_SPECIAL_ACCESS) // FILE_PREFETCH
#define FSCTL_MAKE_MEDIA_COMPATIBLE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 76, METHOD_BUFFERED, FILE_WRITE_DATA) // UDFS R/W
#define FSCTL_SET_DEFECT_MANAGEMENT CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 77, METHOD_BUFFERED, FILE_WRITE_DATA) // UDFS R/W
#define FSCTL_QUERY_SPARING_INFO CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 78, METHOD_BUFFERED, FILE_ANY_ACCESS) // UDFS R/W
#define FSCTL_QUERY_ON_DISK_VOLUME_INFO CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 79, METHOD_BUFFERED, FILE_ANY_ACCESS) // C/UDFS
#define FSCTL_SET_VOLUME_COMPRESSION_STATE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 80, METHOD_BUFFERED, FILE_SPECIAL_ACCESS) // VOLUME_COMPRESSION_STATE
// decommissioned fsctl value 80
#define FSCTL_TXFS_MODIFY_RM CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 81, METHOD_BUFFERED, FILE_WRITE_DATA) // TxF
#define FSCTL_TXFS_QUERY_RM_INFORMATION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 82, METHOD_BUFFERED, FILE_READ_DATA) // TxF
// decommissioned fsctl value 83
#define FSCTL_TXFS_ROLLFORWARD_REDO CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 84, METHOD_BUFFERED, FILE_WRITE_DATA) // TxF
#define FSCTL_TXFS_ROLLFORWARD_UNDO CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 85, METHOD_BUFFERED, FILE_WRITE_DATA) // TxF
#define FSCTL_TXFS_START_RM CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 86, METHOD_BUFFERED, FILE_WRITE_DATA) // TxF
#define FSCTL_TXFS_SHUTDOWN_RM CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 87, METHOD_BUFFERED, FILE_WRITE_DATA) // TxF
#define FSCTL_TXFS_READ_BACKUP_INFORMATION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 88, METHOD_BUFFERED, FILE_READ_DATA) // TxF
#define FSCTL_TXFS_WRITE_BACKUP_INFORMATION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 89, METHOD_BUFFERED, FILE_WRITE_DATA) // TxF
#define FSCTL_TXFS_CREATE_SECONDARY_RM CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 90, METHOD_BUFFERED, FILE_WRITE_DATA) // TxF
#define FSCTL_TXFS_GET_METADATA_INFO CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 91, METHOD_BUFFERED, FILE_READ_DATA) // TxF
#define FSCTL_TXFS_GET_TRANSACTED_VERSION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 92, METHOD_BUFFERED, FILE_READ_DATA) // TxF
// decommissioned fsctl value 93
#define FSCTL_TXFS_SAVEPOINT_INFORMATION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 94, METHOD_BUFFERED, FILE_WRITE_DATA) // TxF
#define FSCTL_TXFS_CREATE_MINIVERSION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 95, METHOD_BUFFERED, FILE_WRITE_DATA) // TxF
// decommissioned fsctl value 96
// decommissioned fsctl value 97
// decommissioned fsctl value 98
#define FSCTL_TXFS_TRANSACTION_ACTIVE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 99, METHOD_BUFFERED, FILE_READ_DATA) // TxF
#define FSCTL_SET_ZERO_ON_DEALLOCATION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 101, METHOD_BUFFERED, FILE_SPECIAL_ACCESS)
#define FSCTL_SET_REPAIR CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 102, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_GET_REPAIR CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 103, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_WAIT_FOR_REPAIR CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 104, METHOD_BUFFERED, FILE_ANY_ACCESS)
// decommissioned fsctl value 105
#define FSCTL_INITIATE_REPAIR CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 106, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_CSC_INTERNAL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 107, METHOD_NEITHER, FILE_ANY_ACCESS) // CSC internal implementation
#define FSCTL_SHRINK_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 108, METHOD_BUFFERED, FILE_SPECIAL_ACCESS) // SHRINK_VOLUME_INFORMATION
#define FSCTL_SET_SHORT_NAME_BEHAVIOR CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 109, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_DFSR_SET_GHOST_HANDLE_STATE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 110, METHOD_BUFFERED, FILE_ANY_ACCESS)
//
// Values 111 - 119 are reserved for FSRM.
//
#define FSCTL_TXFS_LIST_TRANSACTION_LOCKED_FILES \
CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 120, METHOD_BUFFERED, FILE_READ_DATA) // TxF
#define FSCTL_TXFS_LIST_TRANSACTIONS CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 121, METHOD_BUFFERED, FILE_READ_DATA) // TxF
#define FSCTL_QUERY_PAGEFILE_ENCRYPTION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 122, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_RESET_VOLUME_ALLOCATION_HINTS CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 123, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_QUERY_DEPENDENT_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 124, METHOD_BUFFERED, FILE_ANY_ACCESS) // Dependency File System Filter
#define FSCTL_SD_GLOBAL_CHANGE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 125, METHOD_BUFFERED, FILE_ANY_ACCESS) // Query/Change NTFS Security Descriptors
#define FSCTL_TXFS_READ_BACKUP_INFORMATION2 CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 126, METHOD_BUFFERED, FILE_ANY_ACCESS) // TxF
#define FSCTL_LOOKUP_STREAM_FROM_CLUSTER CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 127, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_TXFS_WRITE_BACKUP_INFORMATION2 CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 128, METHOD_BUFFERED, FILE_ANY_ACCESS) // TxF
#define FSCTL_FILE_TYPE_NOTIFICATION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 129, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_FILE_LEVEL_TRIM CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 130, METHOD_BUFFERED, FILE_WRITE_DATA)
//
// Values 131 - 139 are reserved for FSRM.
//
#define FSCTL_GET_BOOT_AREA_INFO CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 140, METHOD_BUFFERED, FILE_ANY_ACCESS) // BOOT_AREA_INFO
#define FSCTL_GET_RETRIEVAL_POINTER_BASE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 141, METHOD_BUFFERED, FILE_ANY_ACCESS) // RETRIEVAL_POINTER_BASE
#define FSCTL_SET_PERSISTENT_VOLUME_STATE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 142, METHOD_BUFFERED, FILE_ANY_ACCESS) // FILE_FS_PERSISTENT_VOLUME_INFORMATION
#define FSCTL_QUERY_PERSISTENT_VOLUME_STATE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 143, METHOD_BUFFERED, FILE_ANY_ACCESS) // FILE_FS_PERSISTENT_VOLUME_INFORMATION
#define FSCTL_REQUEST_OPLOCK CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 144, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_CSV_TUNNEL_REQUEST CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 145, METHOD_BUFFERED, FILE_ANY_ACCESS) // CSV_TUNNEL_REQUEST
#define FSCTL_IS_CSV_FILE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 146, METHOD_BUFFERED, FILE_ANY_ACCESS) // IS_CSV_FILE
#define FSCTL_QUERY_FILE_SYSTEM_RECOGNITION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 147, METHOD_BUFFERED, FILE_ANY_ACCESS) //
#define FSCTL_CSV_GET_VOLUME_PATH_NAME CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 148, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_CSV_GET_VOLUME_NAME_FOR_VOLUME_MOUNT_POINT CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 149, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_CSV_GET_VOLUME_PATH_NAMES_FOR_VOLUME_NAME CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 150, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_IS_FILE_ON_CSV_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 151, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_CORRUPTION_HANDLING CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 152, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_OFFLOAD_READ CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 153, METHOD_BUFFERED, FILE_READ_ACCESS)
#define FSCTL_OFFLOAD_WRITE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 154, METHOD_BUFFERED, FILE_WRITE_ACCESS)
#define FSCTL_CSV_INTERNAL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 155, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_SET_PURGE_FAILURE_MODE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 156, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_QUERY_FILE_LAYOUT CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 157, METHOD_NEITHER, FILE_ANY_ACCESS)
#define FSCTL_IS_VOLUME_OWNED_BYCSVFS CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 158, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_GET_INTEGRITY_INFORMATION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 159, METHOD_BUFFERED, FILE_ANY_ACCESS) // FSCTL_GET_INTEGRITY_INFORMATION_BUFFER
#define FSCTL_SET_INTEGRITY_INFORMATION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 160, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA) // FSCTL_SET_INTEGRITY_INFORMATION_BUFFER
#define FSCTL_QUERY_FILE_REGIONS CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 161, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_RKF_INTERNAL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 171, METHOD_NEITHER, FILE_ANY_ACCESS) // Resume Key Filter
#define FSCTL_SCRUB_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 172, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_REPAIR_COPIES CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 173, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
#define FSCTL_DISABLE_LOCAL_BUFFERING CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 174, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_CSV_MGMT_LOCK CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 175, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_CSV_QUERY_DOWN_LEVEL_FILE_SYSTEM_CHARACTERISTICS CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 176, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_ADVANCE_FILE_ID CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 177, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_CSV_SYNC_TUNNEL_REQUEST CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 178, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_CSV_QUERY_VETO_FILE_DIRECT_IO CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 179, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_WRITE_USN_REASON CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 180, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_CSV_CONTROL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 181, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_GET_REFS_VOLUME_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 182, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_CSV_H_BREAKING_SYNC_TUNNEL_REQUEST CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 185, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_QUERY_STORAGE_CLASSES CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 187, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_QUERY_REGION_INFO CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 188, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_USN_TRACK_MODIFIED_RANGES CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 189, METHOD_BUFFERED, FILE_ANY_ACCESS) // USN_TRACK_MODIFIED_RANGES
#define FSCTL_QUERY_SHARED_VIRTUAL_DISK_SUPPORT CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 192, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_SVHDX_SYNC_TUNNEL_REQUEST CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 193, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_SVHDX_SET_INITIATOR_INFORMATION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 194, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_SET_EXTERNAL_BACKING CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 195, METHOD_BUFFERED, FILE_SPECIAL_ACCESS)
#define FSCTL_GET_EXTERNAL_BACKING CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 196, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_DELETE_EXTERNAL_BACKING CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 197, METHOD_BUFFERED, FILE_SPECIAL_ACCESS)
#define FSCTL_ENUM_EXTERNAL_BACKING CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 198, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_ENUM_OVERLAY CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 199, METHOD_NEITHER, FILE_ANY_ACCESS)
#define FSCTL_ADD_OVERLAY CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 204, METHOD_BUFFERED, FILE_WRITE_DATA)
#define FSCTL_REMOVE_OVERLAY CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 205, METHOD_BUFFERED, FILE_WRITE_DATA)
#define FSCTL_UPDATE_OVERLAY CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 206, METHOD_BUFFERED, FILE_WRITE_DATA)
#define FSCTL_SHUFFLE_FILE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 208, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) // SHUFFLE_FILE_DATA
#define FSCTL_DUPLICATE_EXTENTS_TO_FILE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 209, METHOD_BUFFERED, FILE_WRITE_DATA )
#define FSCTL_SPARSE_OVERALLOCATE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 211, METHOD_BUFFERED, FILE_SPECIAL_ACCESS)
#define FSCTL_STORAGE_QOS_CONTROL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 212, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_INITIATE_FILE_METADATA_OPTIMIZATION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 215, METHOD_BUFFERED, FILE_SPECIAL_ACCESS)
#define FSCTL_QUERY_FILE_METADATA_OPTIMIZATION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 216, METHOD_BUFFERED, FILE_SPECIAL_ACCESS)
#define FSCTL_SVHDX_ASYNC_TUNNEL_REQUEST CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 217, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_GET_WOF_VERSION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 218, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_HCS_SYNC_TUNNEL_REQUEST CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 219, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_HCS_ASYNC_TUNNEL_REQUEST CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 220, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_QUERY_EXTENT_READ_CACHE_INFO CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 221, METHOD_NEITHER, FILE_ANY_ACCESS) // VCN_RANGE_INPUT_BUFFER, EXTENT_READ_CACHE_INFO_BUFFER
#define FSCTL_QUERY_REFS_VOLUME_COUNTER_INFO CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 222, METHOD_NEITHER, FILE_ANY_ACCESS) // REFS_VOLUME_COUNTER_INFO_INPUT_BUFFER, VOLUME_REFS_INFO_BUFFER
#define FSCTL_CLEAN_VOLUME_METADATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 223, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_SET_INTEGRITY_INFORMATION_EX CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 224, METHOD_BUFFERED, FILE_ANY_ACCESS) // FSCTL_SET_INTEGRITY_INFORMATION_BUFFER_EX
#define FSCTL_SUSPEND_OVERLAY CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 225, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_VIRTUAL_STORAGE_QUERY_PROPERTY CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 226, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_FILESYSTEM_GET_STATISTICS_EX CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 227, METHOD_BUFFERED, FILE_ANY_ACCESS) // FILESYSTEM_STATISTICS_EX
#define FSCTL_QUERY_VOLUME_CONTAINER_STATE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 228, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_SET_LAYER_ROOT CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 229, METHOD_BUFFERED, FILE_ANY_ACCESS) // CONTAINER_ROOT_INFO_INPUT CONTAINER_ROOT_INFO_OUTPUT
#define FSCTL_QUERY_DIRECT_ACCESS_EXTENTS CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 230, METHOD_NEITHER, FILE_ANY_ACCESS) // QUERY_DIRECT_ACCESS_EXTENTS
#define FSCTL_NOTIFY_STORAGE_SPACE_ALLOCATION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 231, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_SSDI_STORAGE_REQUEST CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 232, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_QUERY_DIRECT_IMAGE_ORIGINAL_BASE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 233, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_READ_UNPRIVILEGED_USN_JOURNAL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 234, METHOD_NEITHER, FILE_ANY_ACCESS) // READ_USN_JOURNAL_DATA, USN
#define FSCTL_GHOST_FILE_EXTENTS CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 235, METHOD_BUFFERED, FILE_WRITE_ACCESS) // FSCTL_GHOST_FILE_EXTENTS_INPUT_BUFFER
#define FSCTL_QUERY_GHOSTED_FILE_EXTENTS CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 236, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_UNMAP_SPACE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 237, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_HCS_SYNC_NO_WRITE_TUNNEL_REQUEST CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 238, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_START_VIRTUALIZATION_INSTANCE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 240, METHOD_BUFFERED, FILE_ANY_ACCESS) // VIRTUALIZATION_INSTANCE_INFO_INPUT, VIRTUALIZATION_INSTANCE_INFO_OUTPUT
#define FSCTL_GET_FILTER_FILE_IDENTIFIER CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 241, METHOD_BUFFERED, FILE_ANY_ACCESS) // GET_FILTER_FILE_IDENTIFIER_INPUT, GET_FILTER_FILE_IDENTIFIER_OUTPUT
#define FSCTL_STREAMS_QUERY_PARAMETERS CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 241, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_STREAMS_ASSOCIATE_ID CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 242, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_STREAMS_QUERY_ID CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 243, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_GET_RETRIEVAL_POINTERS_AND_REFCOUNT CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 244, METHOD_NEITHER, FILE_ANY_ACCESS) // STARTING_VCN_INPUT_BUFFER, RETRIEVAL_POINTERS_AND_REFCOUNT_BUFFER
#define FSCTL_QUERY_VOLUME_NUMA_INFO CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 245, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_REFS_DEALLOCATE_RANGES CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 246, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_QUERY_REFS_SMR_VOLUME_INFO CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 247, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_SET_REFS_SMR_VOLUME_GC_PARAMETERS CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 248, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_SET_REFS_FILE_STRICTLY_SEQUENTIAL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 249, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_DUPLICATE_EXTENTS_TO_FILE_EX CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 250, METHOD_BUFFERED, FILE_WRITE_DATA)
#define FSCTL_QUERY_BAD_RANGES CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 251, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_SET_DAX_ALLOC_ALIGNMENT_HINT CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 252, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_DELETE_CORRUPTED_REFS_CONTAINER CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 253, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_SCRUB_UNDISCOVERABLE_ID CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 254, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_NOTIFY_DATA_CHANGE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 255, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_START_VIRTUALIZATION_INSTANCE_EX CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 256, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_ENCRYPTION_KEY_CONTROL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 257, METHOD_BUFFERED, FILE_ANY_ACCESS) // protect/unprotect under DPL
#define FSCTL_VIRTUAL_STORAGE_SET_BEHAVIOR CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 258, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_SET_REPARSE_POINT_EX CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 259, METHOD_BUFFERED, FILE_SPECIAL_ACCESS) // REPARSE_DATA_BUFFER_EX
#define FSCTL_REARRANGE_FILE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 264, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) // REARRANGE_FILE_DATA
#define FSCTL_VIRTUAL_STORAGE_PASSTHROUGH CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 265, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_GET_RETRIEVAL_POINTER_COUNT CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 266, METHOD_NEITHER, FILE_ANY_ACCESS) // STARTING_VCN_INPUT_BUFFER, RETRIEVAL_POINTER_COUNT
#define FSCTL_ENABLE_PER_IO_FLAGS CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 267, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_QUERY_ASYNC_DUPLICATE_EXTENTS_STATUS CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 268, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_SMB_SHARE_FLUSH_AND_PURGE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 271, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_REFS_STREAM_SNAPSHOT_MANAGEMENT CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 272, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_MANAGE_BYPASS_IO CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 274, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_REFS_DEALLOCATE_RANGES_EX CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 275, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_SET_CACHED_RUNS_STATE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 276, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_REFS_SET_VOLUME_COMPRESSION_INFO CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 277, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_REFS_QUERY_VOLUME_COMPRESSION_INFO CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 278, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_DUPLICATE_CLUSTER CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 279, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_CREATE_LCN_WEAK_REFERENCE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 280, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_CLEAR_LCN_WEAK_REFERENCE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 281, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_QUERY_LCN_WEAK_REFERENCE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 282, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_CLEAR_ALL_LCN_WEAK_REFERENCES CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 283, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_REFS_SET_VOLUME_DEDUP_INFO CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 284, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_REFS_QUERY_VOLUME_DEDUP_INFO CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 285, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_LMR_QUERY_INFO CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 286, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_REFS_CHECKPOINT_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 287, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_REFS_QUERY_VOLUME_TOTAL_SHARED_LCNS CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 288, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_UPGRADE_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 289, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_REFS_SET_VOLUME_IO_METRICS_INFO CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 290, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_REFS_QUERY_VOLUME_IO_METRICS_INFO CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 291, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_REFS_SET_ROLLBACK_PROTECTION_INFO CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 292, METHOD_BUFFERED, FILE_ANY_ACCESS) // REFS_SET_ROLLBACK_PROTECTION_INFO_INPUT_BUFFER
#define FSCTL_REFS_QUERY_ROLLBACK_PROTECTION_INFO CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 293, METHOD_BUFFERED, FILE_ANY_ACCESS) // REFS_QUERY_ROLLBACK_PROTECTION_INFO_OUTPUT_BUFFER
#define FSCTL_FILE_SOV_CHECK_RANGE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 294, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_CASCADES_REFS_SET_FILE_REMOTE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 295, METHOD_BUFFERED, FILE_ANY_ACCESS)
//
// These are the IOCTLs supported by the mount point manager.
//
#define MOUNTMGR_DEVICE_NAME u"\\Device\\MountPointManager"
#define MOUNTMGR_DOS_DEVICE_NAME u"\\\\.\\MountPointManager"
#define MOUNTMGRCONTROLTYPE 0x0000006D // 'm'
#define MOUNTDEVCONTROLTYPE 0x0000004D // 'M'
#define IOCTL_MOUNTMGR_CREATE_POINT CTL_CODE(MOUNTMGRCONTROLTYPE, 0, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_MOUNTMGR_DELETE_POINTS CTL_CODE(MOUNTMGRCONTROLTYPE, 1, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_MOUNTMGR_QUERY_POINTS CTL_CODE(MOUNTMGRCONTROLTYPE, 2, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_MOUNTMGR_DELETE_POINTS_DBONLY CTL_CODE(MOUNTMGRCONTROLTYPE, 3, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_MOUNTMGR_NEXT_DRIVE_LETTER CTL_CODE(MOUNTMGRCONTROLTYPE, 4, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_MOUNTMGR_AUTO_DL_ASSIGNMENTS CTL_CODE(MOUNTMGRCONTROLTYPE, 5, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_MOUNTMGR_VOLUME_MOUNT_POINT_CREATED CTL_CODE(MOUNTMGRCONTROLTYPE, 6, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_MOUNTMGR_VOLUME_MOUNT_POINT_DELETED CTL_CODE(MOUNTMGRCONTROLTYPE, 7, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_MOUNTMGR_CHANGE_NOTIFY CTL_CODE(MOUNTMGRCONTROLTYPE, 8, METHOD_BUFFERED, FILE_READ_ACCESS)
#define IOCTL_MOUNTMGR_KEEP_LINKS_WHEN_OFFLINE CTL_CODE(MOUNTMGRCONTROLTYPE, 9, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_MOUNTMGR_CHECK_UNPROCESSED_VOLUMES CTL_CODE(MOUNTMGRCONTROLTYPE, 10, METHOD_BUFFERED, FILE_READ_ACCESS)
#define IOCTL_MOUNTMGR_VOLUME_ARRIVAL_NOTIFICATION CTL_CODE(MOUNTMGRCONTROLTYPE, 11, METHOD_BUFFERED, FILE_READ_ACCESS)
@@ -0,0 +1,14 @@
#define MM_SHARED_USER_DATA_VA 0x7FFE0000
#define XSTATE_LEGACY_FLOATING_POINT (0)
#define XSTATE_LEGACY_SSE (1)
#define XSTATE_GSSE (2)
#define XSTATE_AVX (XSTATE_GSSE)
#define XSTATE_MPX_BNDREGS (3)
#define XSTATE_MPX_BNDCSR (4)
#define XSTATE_AVX512_KMASK (5)
#define XSTATE_AVX512_ZMM_H (6)
#define XSTATE_AVX512_ZMM (7)
#define XSTATE_IPT (8)
#define XSTATE_LWP (62)
#define MAXIMUM_XSTATE_FEATURES (64)
@@ -0,0 +1,608 @@
#define MAX_PREFERRED_LENGTH 0xffffffff //((DWORD) -1)
#define NERR_Success 0 /* Success */
/*** NERR_BASE is the base of error codes from network utilities,
* chosen to avoid conflict with system and redirector error codes.
* 2100 is a value that has been assigned to us by system.
*/
#define NERR_BASE 2100
/**INTERNAL_ONLY**/
/***********WARNING ****************
*See the comment in lmcons.h for *
*info on the allocation of errors *
***********************************/
/***********WARNING ****************
*The range 2750-2799 has been *
*allocated to the IBM LAN Server *
***********************************/
/***********WARNING ****************
*The range 2900-2999 has been *
*reserved for Microsoft OEMs *
***********************************/
/**END_INTERNAL**/
/* UNUSED BASE+0 */
/* UNUSED BASE+1 */
#define NERR_NetNotStarted (NERR_BASE+2) /* The workstation driver is not installed. */
#define NERR_UnknownServer (NERR_BASE+3) /* The server could not be located. */
#define NERR_ShareMem (NERR_BASE+4) /* An internal error occurred. The network cannot access a shared memory segment. */
#define NERR_NoNetworkResource (NERR_BASE+5) /* A network resource shortage occurred . */
#define NERR_RemoteOnly (NERR_BASE+6) /* This operation is not supported on workstations. */
#define NERR_DevNotRedirected (NERR_BASE+7) /* The device is not connected. */
/* NERR_BASE+8 is used for ERROR_CONNECTED_OTHER_PASSWORD */
/* NERR_BASE+9 is used for ERROR_CONNECTED_OTHER_PASSWORD_DEFAULT */
/* UNUSED BASE+10 */
/* UNUSED BASE+11 */
/* UNUSED BASE+12 */
/* UNUSED BASE+13 */
#define NERR_ServerNotStarted (NERR_BASE+14) /* The Server service is not started. */
#define NERR_ItemNotFound (NERR_BASE+15) /* The queue is empty. */
#define NERR_UnknownDevDir (NERR_BASE+16) /* The device or directory does not exist. */
#define NERR_RedirectedPath (NERR_BASE+17) /* The operation is invalid on a redirected resource. */
#define NERR_DuplicateShare (NERR_BASE+18) /* The name has already been shared. */
#define NERR_NoRoom (NERR_BASE+19) /* The server is currently out of the requested resource. */
/* UNUSED BASE+20 */
#define NERR_TooManyItems (NERR_BASE+21) /* Requested addition of items exceeds the maximum allowed. */
#define NERR_InvalidMaxUsers (NERR_BASE+22) /* The Peer service supports only two simultaneous users. */
#define NERR_BufTooSmall (NERR_BASE+23) /* The API return buffer is too small. */
/* UNUSED BASE+24 */
/* UNUSED BASE+25 */
/* UNUSED BASE+26 */
#define NERR_RemoteErr (NERR_BASE+27) /* A remote API error occurred. */
/* UNUSED BASE+28 */
/* UNUSED BASE+29 */
/* UNUSED BASE+30 */
#define NERR_LanmanIniError (NERR_BASE+31) /* An error occurred when opening or reading the configuration file. */
/* UNUSED BASE+32 */
/* UNUSED BASE+33 */
/* UNUSED BASE+34 */
/* UNUSED BASE+35 */
#define NERR_NetworkError (NERR_BASE+36) /* A general network error occurred. */
#define NERR_WkstaInconsistentState (NERR_BASE+37)
/* The Workstation service is in an inconsistent state. Restart the computer before restarting the Workstation service. */
#define NERR_WkstaNotStarted (NERR_BASE+38) /* The Workstation service has not been started. */
#define NERR_BrowserNotStarted (NERR_BASE+39) /* The requested information is not available. */
#define NERR_InternalError (NERR_BASE+40) /* An internal Windows error occurred.*/
#define NERR_BadTransactConfig (NERR_BASE+41) /* The server is not configured for transactions. */
#define NERR_InvalidAPI (NERR_BASE+42) /* The requested API is not supported on the remote server. */
#define NERR_BadEventName (NERR_BASE+43) /* The event name is invalid. */
#define NERR_DupNameReboot (NERR_BASE+44) /* The computer name already exists on the network. Change it and restart the computer. */
/*
* Config API related
* Error codes from BASE+45 to BASE+49
*/
/* UNUSED BASE+45 */
#define NERR_CfgCompNotFound (NERR_BASE+46) /* The specified component could not be found in the configuration information. */
#define NERR_CfgParamNotFound (NERR_BASE+47) /* The specified parameter could not be found in the configuration information. */
#define NERR_LineTooLong (NERR_BASE+49) /* A line in the configuration file is too long. */
/*
* Spooler API related
* Error codes from BASE+50 to BASE+79
*/
#define NERR_QNotFound (NERR_BASE+50) /* The printer does not exist. */
#define NERR_JobNotFound (NERR_BASE+51) /* The print job does not exist. */
#define NERR_DestNotFound (NERR_BASE+52) /* The printer destination cannot be found. */
#define NERR_DestExists (NERR_BASE+53) /* The printer destination already exists. */
#define NERR_QExists (NERR_BASE+54) /* The printer queue already exists. */
#define NERR_QNoRoom (NERR_BASE+55) /* No more printers can be added. */
#define NERR_JobNoRoom (NERR_BASE+56) /* No more print jobs can be added. */
#define NERR_DestNoRoom (NERR_BASE+57) /* No more printer destinations can be added. */
#define NERR_DestIdle (NERR_BASE+58) /* This printer destination is idle and cannot accept control operations. */
#define NERR_DestInvalidOp (NERR_BASE+59) /* This printer destination request contains an invalid control function. */
#define NERR_ProcNoRespond (NERR_BASE+60) /* The print processor is not responding. */
#define NERR_SpoolerNotLoaded (NERR_BASE+61) /* The spooler is not running. */
#define NERR_DestInvalidState (NERR_BASE+62) /* This operation cannot be performed on the print destination in its current state. */
#define NERR_QInvalidState (NERR_BASE+63) /* This operation cannot be performed on the printer queue in its current state. */
#define NERR_JobInvalidState (NERR_BASE+64) /* This operation cannot be performed on the print job in its current state. */
#define NERR_SpoolNoMemory (NERR_BASE+65) /* A spooler memory allocation failure occurred. */
#define NERR_DriverNotFound (NERR_BASE+66) /* The device driver does not exist. */
#define NERR_DataTypeInvalid (NERR_BASE+67) /* The data type is not supported by the print processor. */
#define NERR_ProcNotFound (NERR_BASE+68) /* The print processor is not installed. */
/*
* Service API related
* Error codes from BASE+80 to BASE+99
*/
#define NERR_ServiceTableLocked (NERR_BASE+80) /* The service database is locked. */
#define NERR_ServiceTableFull (NERR_BASE+81) /* The service table is full. */
#define NERR_ServiceInstalled (NERR_BASE+82) /* The requested service has already been started. */
#define NERR_ServiceEntryLocked (NERR_BASE+83) /* The service does not respond to control actions. */
#define NERR_ServiceNotInstalled (NERR_BASE+84) /* The service has not been started. */
#define NERR_BadServiceName (NERR_BASE+85) /* The service name is invalid. */
#define NERR_ServiceCtlTimeout (NERR_BASE+86) /* The service is not responding to the control function. */
#define NERR_ServiceCtlBusy (NERR_BASE+87) /* The service control is busy. */
#define NERR_BadServiceProgName (NERR_BASE+88) /* The configuration file contains an invalid service program name. */
#define NERR_ServiceNotCtrl (NERR_BASE+89) /* The service could not be controlled in its present state. */
#define NERR_ServiceKillProc (NERR_BASE+90) /* The service ended abnormally. */
#define NERR_ServiceCtlNotValid (NERR_BASE+91) /* The requested pause, continue, or stop is not valid for this service. */
#define NERR_NotInDispatchTbl (NERR_BASE+92) /* The service control dispatcher could not find the service name in the dispatch table. */
#define NERR_BadControlRecv (NERR_BASE+93) /* The service control dispatcher pipe read failed. */
#define NERR_ServiceNotStarting (NERR_BASE+94) /* A thread for the new service could not be created. */
/*
* Wksta and Logon API related
* Error codes from BASE+100 to BASE+118
*/
#define NERR_AlreadyLoggedOn (NERR_BASE+100) /* This workstation is already logged on to the local-area network. */
#define NERR_NotLoggedOn (NERR_BASE+101) /* The workstation is not logged on to the local-area network. */
#define NERR_BadUsername (NERR_BASE+102) /* The user name or group name parameter is invalid. */
#define NERR_BadPassword (NERR_BASE+103) /* The password parameter is invalid. */
#define NERR_UnableToAddName_W (NERR_BASE+104) /* @W The logon processor did not add the message alias. */
#define NERR_UnableToAddName_F (NERR_BASE+105) /* The logon processor did not add the message alias. */
#define NERR_UnableToDelName_W (NERR_BASE+106) /* @W The logoff processor did not delete the message alias. */
#define NERR_UnableToDelName_F (NERR_BASE+107) /* The logoff processor did not delete the message alias. */
/* UNUSED BASE+108 */
#define NERR_LogonsPaused (NERR_BASE+109) /* Network logons are paused. */
#define NERR_LogonServerConflict (NERR_BASE+110)/* A centralized logon-server conflict occurred. */
#define NERR_LogonNoUserPath (NERR_BASE+111) /* The server is configured without a valid user path. */
#define NERR_LogonScriptError (NERR_BASE+112) /* An error occurred while loading or running the logon script. */
/* UNUSED BASE+113 */
#define NERR_StandaloneLogon (NERR_BASE+114) /* The logon server was not specified. Your computer will be logged on as STANDALONE. */
#define NERR_LogonServerNotFound (NERR_BASE+115) /* The logon server could not be found. */
#define NERR_LogonDomainExists (NERR_BASE+116) /* There is already a logon domain for this computer. */
#define NERR_NonValidatedLogon (NERR_BASE+117) /* The logon server could not validate the logon. */
/*
* ACF API related (access, user, group)
* Error codes from BASE+119 to BASE+149
*/
#define NERR_ACFNotFound (NERR_BASE+119) /* The security database could not be found. */
#define NERR_GroupNotFound (NERR_BASE+120) /* The group name could not be found. */
#define NERR_UserNotFound (NERR_BASE+121) /* The user name could not be found. */
#define NERR_ResourceNotFound (NERR_BASE+122) /* The resource name could not be found. */
#define NERR_GroupExists (NERR_BASE+123) /* The group already exists. */
#define NERR_UserExists (NERR_BASE+124) /* The account already exists. */
#define NERR_ResourceExists (NERR_BASE+125) /* The resource permission list already exists. */
#define NERR_NotPrimary (NERR_BASE+126) /* This operation is only allowed on the primary domain controller of the domain. */
#define NERR_ACFNotLoaded (NERR_BASE+127) /* The security database has not been started. */
#define NERR_ACFNoRoom (NERR_BASE+128) /* There are too many names in the user accounts database. */
#define NERR_ACFFileIOFail (NERR_BASE+129) /* A disk I/O failure occurred.*/
#define NERR_ACFTooManyLists (NERR_BASE+130) /* The limit of 64 entries per resource was exceeded. */
#define NERR_UserLogon (NERR_BASE+131) /* Deleting a user with a session is not allowed. */
#define NERR_ACFNoParent (NERR_BASE+132) /* The parent directory could not be located. */
#define NERR_CanNotGrowSegment (NERR_BASE+133) /* Unable to add to the security database session cache segment. */
#define NERR_SpeGroupOp (NERR_BASE+134) /* This operation is not allowed on this special group. */
#define NERR_NotInCache (NERR_BASE+135) /* This user is not cached in user accounts database session cache. */
#define NERR_UserInGroup (NERR_BASE+136) /* The user already belongs to this group. */
#define NERR_UserNotInGroup (NERR_BASE+137) /* The user does not belong to this group. */
#define NERR_AccountUndefined (NERR_BASE+138) /* This user account is undefined. */
#define NERR_AccountExpired (NERR_BASE+139) /* This user account has expired. */
#define NERR_InvalidWorkstation (NERR_BASE+140) /* The user is not allowed to log on from this workstation. */
#define NERR_InvalidLogonHours (NERR_BASE+141) /* The user is not allowed to log on at this time. */
#define NERR_PasswordExpired (NERR_BASE+142) /* The password of this user has expired. */
#define NERR_PasswordCantChange (NERR_BASE+143) /* The password of this user cannot change. */
#define NERR_PasswordHistConflict (NERR_BASE+144) /* This password cannot be used now. */
#define NERR_PasswordTooShort (NERR_BASE+145) /* The password does not meet the password policy requirements. Check the minimum password length, password complexity and password history requirements. */
#define NERR_PasswordTooRecent (NERR_BASE+146) /* The password of this user is too recent to change. */
#define NERR_InvalidDatabase (NERR_BASE+147) /* The security database is corrupted. */
#define NERR_DatabaseUpToDate (NERR_BASE+148) /* No updates are necessary to this replicant network/local security database. */
#define NERR_SyncRequired (NERR_BASE+149) /* This replicant database is outdated; synchronization is required. */
/*
* Use API related
* Error codes from BASE+150 to BASE+169
*/
#define NERR_UseNotFound (NERR_BASE+150) /* The network connection could not be found. */
#define NERR_BadAsgType (NERR_BASE+151) /* This asg_type is invalid. */
#define NERR_DeviceIsShared (NERR_BASE+152) /* This device is currently being shared. */
#define NERR_SameAsComputerName (NERR_BASE+153) /* The user name may not be same as computer name. */
/*
* Message Server related
* Error codes BASE+170 to BASE+209
*/
#define NERR_NoComputerName (NERR_BASE+170) /* The computer name could not be added as a message alias. The name may already exist on the network. */
#define NERR_MsgAlreadyStarted (NERR_BASE+171) /* The Messenger service is already started. */
#define NERR_MsgInitFailed (NERR_BASE+172) /* The Messenger service failed to start. */
#define NERR_NameNotFound (NERR_BASE+173) /* The message alias could not be found on the network. */
#define NERR_AlreadyForwarded (NERR_BASE+174) /* This message alias has already been forwarded. */
#define NERR_AddForwarded (NERR_BASE+175) /* This message alias has been added but is still forwarded. */
#define NERR_AlreadyExists (NERR_BASE+176) /* This message alias already exists locally. */
#define NERR_TooManyNames (NERR_BASE+177) /* The maximum number of added message aliases has been exceeded. */
#define NERR_DelComputerName (NERR_BASE+178) /* The computer name could not be deleted.*/
#define NERR_LocalForward (NERR_BASE+179) /* Messages cannot be forwarded back to the same workstation. */
#define NERR_GrpMsgProcessor (NERR_BASE+180) /* An error occurred in the domain message processor. */
#define NERR_PausedRemote (NERR_BASE+181) /* The message was sent, but the recipient has paused the Messenger service. */
#define NERR_BadReceive (NERR_BASE+182) /* The message was sent but not received. */
#define NERR_NameInUse (NERR_BASE+183) /* The message alias is currently in use. Try again later. */
#define NERR_MsgNotStarted (NERR_BASE+184) /* The Messenger service has not been started. */
#define NERR_NotLocalName (NERR_BASE+185) /* The name is not on the local computer. */
#define NERR_NoForwardName (NERR_BASE+186) /* The forwarded message alias could not be found on the network. */
#define NERR_RemoteFull (NERR_BASE+187) /* The message alias table on the remote station is full. */
#define NERR_NameNotForwarded (NERR_BASE+188) /* Messages for this alias are not currently being forwarded. */
#define NERR_TruncatedBroadcast (NERR_BASE+189) /* The broadcast message was truncated. */
#define NERR_InvalidDevice (NERR_BASE+194) /* This is an invalid device name. */
#define NERR_WriteFault (NERR_BASE+195) /* A write fault occurred. */
/* UNUSED BASE+196 */
#define NERR_DuplicateName (NERR_BASE+197) /* A duplicate message alias exists on the network. */
#define NERR_DeleteLater (NERR_BASE+198) /* @W This message alias will be deleted later. */
#define NERR_IncompleteDel (NERR_BASE+199) /* The message alias was not successfully deleted from all networks. */
#define NERR_MultipleNets (NERR_BASE+200) /* This operation is not supported on computers with multiple networks. */
/*
* Server API related
* Error codes BASE+210 to BASE+229
*/
#define NERR_NetNameNotFound (NERR_BASE+210) /* This shared resource does not exist.*/
#define NERR_DeviceNotShared (NERR_BASE+211) /* This device is not shared. */
#define NERR_ClientNameNotFound (NERR_BASE+212) /* A session does not exist with that computer name. */
#define NERR_FileIdNotFound (NERR_BASE+214) /* There is not an open file with that identification number. */
#define NERR_ExecFailure (NERR_BASE+215) /* A failure occurred when executing a remote administration command. */
#define NERR_TmpFile (NERR_BASE+216) /* A failure occurred when opening a remote temporary file. */
#define NERR_TooMuchData (NERR_BASE+217) /* The data returned from a remote administration command has been truncated to 64K. */
#define NERR_DeviceShareConflict (NERR_BASE+218) /* This device cannot be shared as both a spooled and a non-spooled resource. */
#define NERR_BrowserTableIncomplete (NERR_BASE+219) /* The information in the list of servers may be incorrect. */
#define NERR_NotLocalDomain (NERR_BASE+220) /* The computer is not active in this domain. */
#define NERR_IsDfsShare (NERR_BASE+221) /* The share must be removed from the Distributed File System before it can be deleted. */
/*
* CharDev API related
* Error codes BASE+230 to BASE+249
*/
/* UNUSED BASE+230 */
#define NERR_DevInvalidOpCode (NERR_BASE+231) /* The operation is invalid for this device. */
#define NERR_DevNotFound (NERR_BASE+232) /* This device cannot be shared. */
#define NERR_DevNotOpen (NERR_BASE+233) /* This device was not open. */
#define NERR_BadQueueDevString (NERR_BASE+234) /* This device name list is invalid. */
#define NERR_BadQueuePriority (NERR_BASE+235) /* The queue priority is invalid. */
#define NERR_NoCommDevs (NERR_BASE+237) /* There are no shared communication devices. */
#define NERR_QueueNotFound (NERR_BASE+238) /* The queue you specified does not exist. */
#define NERR_BadDevString (NERR_BASE+240) /* This list of devices is invalid. */
#define NERR_BadDev (NERR_BASE+241) /* The requested device is invalid. */
#define NERR_InUseBySpooler (NERR_BASE+242) /* This device is already in use by the spooler. */
#define NERR_CommDevInUse (NERR_BASE+243) /* This device is already in use as a communication device. */
/*
* NetICanonicalize and NetIType and NetIMakeLMFileName
* NetIListCanon and NetINameCheck
* Error codes BASE+250 to BASE+269
*/
#define NERR_InvalidComputer (NERR_BASE+251) /* This computer name is invalid. */
/* UNUSED BASE+252 */
/* UNUSED BASE+253 */
#define NERR_MaxLenExceeded (NERR_BASE+254) /* The string and prefix specified are too long. */
/* UNUSED BASE+255 */
#define NERR_BadComponent (NERR_BASE+256) /* This path component is invalid. */
#define NERR_CantType (NERR_BASE+257) /* Could not determine the type of input. */
/* UNUSED BASE+258 */
/* UNUSED BASE+259 */
#define NERR_TooManyEntries (NERR_BASE+262) /* The buffer for types is not big enough. */
/*
* NetProfile
* Error codes BASE+270 to BASE+276
*/
#define NERR_ProfileFileTooBig (NERR_BASE+270) /* Profile files cannot exceed 64K. */
#define NERR_ProfileOffset (NERR_BASE+271) /* The start offset is out of range. */
#define NERR_ProfileCleanup (NERR_BASE+272) /* The system cannot delete current connections to network resources. */
#define NERR_ProfileUnknownCmd (NERR_BASE+273) /* The system was unable to parse the command line in this file.*/
#define NERR_ProfileLoadErr (NERR_BASE+274) /* An error occurred while loading the profile file. */
#define NERR_ProfileSaveErr (NERR_BASE+275) /* @W Errors occurred while saving the profile file. The profile was partially saved. */
/*
* NetAudit and NetErrorLog
* Error codes BASE+277 to BASE+279
*/
#define NERR_LogOverflow (NERR_BASE+277) /* Log file %1 is full. */
#define NERR_LogFileChanged (NERR_BASE+278) /* This log file has changed between reads. */
#define NERR_LogFileCorrupt (NERR_BASE+279) /* Log file %1 is corrupt. */
/*
* NetRemote
* Error codes BASE+280 to BASE+299
*/
#define NERR_SourceIsDir (NERR_BASE+280) /* The source path cannot be a directory. */
#define NERR_BadSource (NERR_BASE+281) /* The source path is illegal. */
#define NERR_BadDest (NERR_BASE+282) /* The destination path is illegal. */
#define NERR_DifferentServers (NERR_BASE+283) /* The source and destination paths are on different servers. */
/* UNUSED BASE+284 */
#define NERR_RunSrvPaused (NERR_BASE+285) /* The Run server you requested is paused. */
/* UNUSED BASE+286 */
/* UNUSED BASE+287 */
/* UNUSED BASE+288 */
#define NERR_ErrCommRunSrv (NERR_BASE+289) /* An error occurred when communicating with a Run server. */
/* UNUSED BASE+290 */
#define NERR_ErrorExecingGhost (NERR_BASE+291) /* An error occurred when starting a background process. */
#define NERR_ShareNotFound (NERR_BASE+292) /* The shared resource you are connected to could not be found.*/
/* UNUSED BASE+293 */
/* UNUSED BASE+294 */
/*
* NetWksta.sys (redir) returned error codes.
*
* NERR_BASE + (300-329)
*/
#define NERR_InvalidLana (NERR_BASE+300) /* The LAN adapter number is invalid. */
#define NERR_OpenFiles (NERR_BASE+301) /* There are open files on the connection. */
#define NERR_ActiveConns (NERR_BASE+302) /* Active connections still exist. */
#define NERR_BadPasswordCore (NERR_BASE+303) /* This share name or password is invalid. */
#define NERR_DevInUse (NERR_BASE+304) /* The device is being accessed by an active process. */
#define NERR_LocalDrive (NERR_BASE+305) /* The drive letter is in use locally. */
/*
* Alert error codes.
*
* NERR_BASE + (330-339)
*/
#define NERR_AlertExists (NERR_BASE+330) /* The specified client is already registered for the specified event. */
#define NERR_TooManyAlerts (NERR_BASE+331) /* The alert table is full. */
#define NERR_NoSuchAlert (NERR_BASE+332) /* An invalid or nonexistent alert name was raised. */
#define NERR_BadRecipient (NERR_BASE+333) /* The alert recipient is invalid.*/
#define NERR_AcctLimitExceeded (NERR_BASE+334) /* A user's session with this server has been deleted
* because the user's logon hours are no longer valid. */
/*
* Additional Error and Audit log codes.
*
* NERR_BASE +(340-343)
*/
#define NERR_InvalidLogSeek (NERR_BASE+340) /* The log file does not contain the requested record number. */
/* UNUSED BASE+341 */
/* UNUSED BASE+342 */
/* UNUSED BASE+343 */
/*
* Additional UAS and NETLOGON codes
*
* NERR_BASE +(350-359)
*/
#define NERR_BadUasConfig (NERR_BASE+350) /* The user accounts database is not configured correctly. */
#define NERR_InvalidUASOp (NERR_BASE+351) /* This operation is not permitted when the Netlogon service is running. */
#define NERR_LastAdmin (NERR_BASE+352) /* This operation is not allowed on the last administrative account. */
#define NERR_DCNotFound (NERR_BASE+353) /* Could not find domain controller for this domain. */
#define NERR_LogonTrackingError (NERR_BASE+354) /* Could not set logon information for this user. */
#define NERR_NetlogonNotStarted (NERR_BASE+355) /* The Netlogon service has not been started. */
#define NERR_CanNotGrowUASFile (NERR_BASE+356) /* Unable to add to the user accounts database. */
#define NERR_TimeDiffAtDC (NERR_BASE+357) /* This server's clock is not synchronized with the primary domain controller's clock. */
#define NERR_PasswordMismatch (NERR_BASE+358) /* A password mismatch has been detected. */
/*
* Server Integration error codes.
*
* NERR_BASE +(360-369)
*/
#define NERR_NoSuchServer (NERR_BASE+360) /* The server identification does not specify a valid server. */
#define NERR_NoSuchSession (NERR_BASE+361) /* The session identification does not specify a valid session. */
#define NERR_NoSuchConnection (NERR_BASE+362) /* The connection identification does not specify a valid connection. */
#define NERR_TooManyServers (NERR_BASE+363) /* There is no space for another entry in the table of available servers. */
#define NERR_TooManySessions (NERR_BASE+364) /* The server has reached the maximum number of sessions it supports. */
#define NERR_TooManyConnections (NERR_BASE+365) /* The server has reached the maximum number of connections it supports. */
#define NERR_TooManyFiles (NERR_BASE+366) /* The server cannot open more files because it has reached its maximum number. */
#define NERR_NoAlternateServers (NERR_BASE+367) /* There are no alternate servers registered on this server. */
/* UNUSED BASE+368 */
/* UNUSED BASE+369 */
#define NERR_TryDownLevel (NERR_BASE+370) /* Try down-level (remote admin protocol) version of API instead. */
/*
* UPS error codes.
*
* NERR_BASE + (380-384)
*/
#define NERR_UPSDriverNotStarted (NERR_BASE+380) /* The UPS driver could not be accessed by the UPS service. */
#define NERR_UPSInvalidConfig (NERR_BASE+381) /* The UPS service is not configured correctly. */
#define NERR_UPSInvalidCommPort (NERR_BASE+382) /* The UPS service could not access the specified Comm Port. */
#define NERR_UPSSignalAsserted (NERR_BASE+383) /* The UPS indicated a line fail or low battery situation. Service not started. */
#define NERR_UPSShutdownFailed (NERR_BASE+384) /* The UPS service failed to perform a system shut down. */
/*
* Remoteboot error codes.
*
* NERR_BASE + (400-419)
* Error codes 400 - 405 are used by RPLBOOT.SYS.
* Error codes 403, 407 - 416 are used by RPLLOADR.COM,
* Error code 417 is the alerter message of REMOTEBOOT (RPLSERVR.EXE).
* Error code 418 is for when REMOTEBOOT can't start
* Error code 419 is for a disallowed 2nd rpl connection
*
*/
#define NERR_BadDosRetCode (NERR_BASE+400) /* The program below returned an MS-DOS error code:*/
#define NERR_ProgNeedsExtraMem (NERR_BASE+401) /* The program below needs more memory:*/
#define NERR_BadDosFunction (NERR_BASE+402) /* The program below called an unsupported MS-DOS function:*/
#define NERR_RemoteBootFailed (NERR_BASE+403) /* The workstation failed to boot.*/
#define NERR_BadFileCheckSum (NERR_BASE+404) /* The file below is corrupt.*/
#define NERR_NoRplBootSystem (NERR_BASE+405) /* No loader is specified in the boot-block definition file.*/
#define NERR_RplLoadrNetBiosErr (NERR_BASE+406) /* NetBIOS returned an error: The NCB and SMB are dumped above.*/
#define NERR_RplLoadrDiskErr (NERR_BASE+407) /* A disk I/O error occurred.*/
#define NERR_ImageParamErr (NERR_BASE+408) /* Image parameter substitution failed.*/
#define NERR_TooManyImageParams (NERR_BASE+409) /* Too many image parameters cross disk sector boundaries.*/
#define NERR_NonDosFloppyUsed (NERR_BASE+410) /* The image was not generated from an MS-DOS diskette formatted with /S.*/
#define NERR_RplBootRestart (NERR_BASE+411) /* Remote boot will be restarted later.*/
#define NERR_RplSrvrCallFailed (NERR_BASE+412) /* The call to the Remoteboot server failed.*/
#define NERR_CantConnectRplSrvr (NERR_BASE+413) /* Cannot connect to the Remoteboot server.*/
#define NERR_CantOpenImageFile (NERR_BASE+414) /* Cannot open image file on the Remoteboot server.*/
#define NERR_CallingRplSrvr (NERR_BASE+415) /* Connecting to the Remoteboot server...*/
#define NERR_StartingRplBoot (NERR_BASE+416) /* Connecting to the Remoteboot server...*/
#define NERR_RplBootServiceTerm (NERR_BASE+417) /* Remote boot service was stopped; check the error log for the cause of the problem.*/
#define NERR_RplBootStartFailed (NERR_BASE+418) /* Remote boot startup failed; check the error log for the cause of the problem.*/
#define NERR_RPL_CONNECTED (NERR_BASE+419) /* A second connection to a Remoteboot resource is not allowed.*/
/*
* FTADMIN API error codes
*
* NERR_BASE + (425-434)
*
* (Currently not used in NT)
*
*/
/*
* Browser service API error codes
*
* NERR_BASE + (450-475)
*
*/
#define NERR_BrowserConfiguredToNotRun (NERR_BASE+450) /* The browser service was configured with MaintainServerList=No. */
/*
* Additional Remoteboot error codes.
*
* NERR_BASE + (510-550)
*/
#define NERR_RplNoAdaptersStarted (NERR_BASE+510) /*Service failed to start since none of the network adapters started with this service.*/
#define NERR_RplBadRegistry (NERR_BASE+511) /*Service failed to start due to bad startup information in the registry.*/
#define NERR_RplBadDatabase (NERR_BASE+512) /*Service failed to start because its database is absent or corrupt.*/
#define NERR_RplRplfilesShare (NERR_BASE+513) /*Service failed to start because RPLFILES share is absent.*/
#define NERR_RplNotRplServer (NERR_BASE+514) /*Service failed to start because RPLUSER group is absent.*/
#define NERR_RplCannotEnum (NERR_BASE+515) /*Cannot enumerate service records.*/
#define NERR_RplWkstaInfoCorrupted (NERR_BASE+516) /*Workstation record information has been corrupted.*/
#define NERR_RplWkstaNotFound (NERR_BASE+517) /*Workstation record was not found.*/
#define NERR_RplWkstaNameUnavailable (NERR_BASE+518) /*Workstation name is in use by some other workstation.*/
#define NERR_RplProfileInfoCorrupted (NERR_BASE+519) /*Profile record information has been corrupted.*/
#define NERR_RplProfileNotFound (NERR_BASE+520) /*Profile record was not found.*/
#define NERR_RplProfileNameUnavailable (NERR_BASE+521) /*Profile name is in use by some other profile.*/
#define NERR_RplProfileNotEmpty (NERR_BASE+522) /*There are workstations using this profile.*/
#define NERR_RplConfigInfoCorrupted (NERR_BASE+523) /*Configuration record information has been corrupted.*/
#define NERR_RplConfigNotFound (NERR_BASE+524) /*Configuration record was not found.*/
#define NERR_RplAdapterInfoCorrupted (NERR_BASE+525) /*Adapter id record information has been corrupted.*/
#define NERR_RplInternal (NERR_BASE+526) /*An internal service error has occurred.*/
#define NERR_RplVendorInfoCorrupted (NERR_BASE+527) /*Vendor id record information has been corrupted.*/
#define NERR_RplBootInfoCorrupted (NERR_BASE+528) /*Boot block record information has been corrupted.*/
#define NERR_RplWkstaNeedsUserAcct (NERR_BASE+529) /*The user account for this workstation record is missing.*/
#define NERR_RplNeedsRPLUSERAcct (NERR_BASE+530) /*The RPLUSER local group could not be found.*/
#define NERR_RplBootNotFound (NERR_BASE+531) /*Boot block record was not found.*/
#define NERR_RplIncompatibleProfile (NERR_BASE+532) /*Chosen profile is incompatible with this workstation.*/
#define NERR_RplAdapterNameUnavailable (NERR_BASE+533) /*Chosen network adapter id is in use by some other workstation.*/
#define NERR_RplConfigNotEmpty (NERR_BASE+534) /*There are profiles using this configuration.*/
#define NERR_RplBootInUse (NERR_BASE+535) /*There are workstations, profiles or configurations using this boot block.*/
#define NERR_RplBackupDatabase (NERR_BASE+536) /*Service failed to backup Remoteboot database.*/
#define NERR_RplAdapterNotFound (NERR_BASE+537) /*Adapter record was not found.*/
#define NERR_RplVendorNotFound (NERR_BASE+538) /*Vendor record was not found.*/
#define NERR_RplVendorNameUnavailable (NERR_BASE+539) /*Vendor name is in use by some other vendor record.*/
#define NERR_RplBootNameUnavailable (NERR_BASE+540) /*(boot name, vendor id) is in use by some other boot block record.*/
#define NERR_RplConfigNameUnavailable (NERR_BASE+541) /*Configuration name is in use by some other configuration.*/
/**INTERNAL_ONLY**/
/*
* Dfs API error codes.
*
* NERR_BASE + (560-590)
*/
#define NERR_DfsInternalCorruption (NERR_BASE+560) /*The internal database maintained by the DFS service is corrupt*/
#define NERR_DfsVolumeDataCorrupt (NERR_BASE+561) /*One of the records in the internal DFS database is corrupt*/
#define NERR_DfsNoSuchVolume (NERR_BASE+562) /*There is no DFS name whose entry path matches the input Entry Path*/
#define NERR_DfsVolumeAlreadyExists (NERR_BASE+563) /*A root or link with the given name already exists*/
#define NERR_DfsAlreadyShared (NERR_BASE+564) /*The server share specified is already shared in the DFS*/
#define NERR_DfsNoSuchShare (NERR_BASE+565) /*The indicated server share does not support the indicated DFS namespace*/
#define NERR_DfsNotALeafVolume (NERR_BASE+566) /*The operation is not valid on this portion of the namespace*/
#define NERR_DfsLeafVolume (NERR_BASE+567) /*The operation is not valid on this portion of the namespace*/
#define NERR_DfsVolumeHasMultipleServers (NERR_BASE+568) /*The operation is ambiguous because the link has multiple servers*/
#define NERR_DfsCantCreateJunctionPoint (NERR_BASE+569) /*Unable to create a link*/
#define NERR_DfsServerNotDfsAware (NERR_BASE+570) /*The server is not DFS Aware*/
#define NERR_DfsBadRenamePath (NERR_BASE+571) /*The specified rename target path is invalid*/
#define NERR_DfsVolumeIsOffline (NERR_BASE+572) /*The specified DFS link is offline*/
#define NERR_DfsNoSuchServer (NERR_BASE+573) /*The specified server is not a server for this link*/
#define NERR_DfsCyclicalName (NERR_BASE+574) /*A cycle in the DFS name was detected*/
#define NERR_DfsNotSupportedInServerDfs (NERR_BASE+575) /*The operation is not supported on a server-based DFS*/
#define NERR_DfsDuplicateService (NERR_BASE+576) /*This link is already supported by the specified server-share*/
#define NERR_DfsCantRemoveLastServerShare (NERR_BASE+577) /*Can't remove the last server-share supporting this root or link*/
#define NERR_DfsVolumeIsInterDfs (NERR_BASE+578) /*The operation is not supported for an Inter-DFS link*/
#define NERR_DfsInconsistent (NERR_BASE+579) /*The internal state of the DFS Service has become inconsistent*/
#define NERR_DfsServerUpgraded (NERR_BASE+580) /*The DFS Service has been installed on the specified server*/
#define NERR_DfsDataIsIdentical (NERR_BASE+581) /*The DFS data being reconciled is identical*/
#define NERR_DfsCantRemoveDfsRoot (NERR_BASE+582) /*The DFS root cannot be deleted - Uninstall DFS if required*/
#define NERR_DfsChildOrParentInDfs (NERR_BASE+583) /*A child or parent directory of the share is already in a DFS*/
#define NERR_DfsInternalError (NERR_BASE+590) /*DFS internal error*/
/*
* Net setup error codes.
*
* NERR_BASE + (591-600)
*/
#define NERR_SetupAlreadyJoined (NERR_BASE+591) /*This machine is already joined to a domain.*/
#define NERR_SetupNotJoined (NERR_BASE+592) /*This machine is not currently joined to a domain.*/
#define NERR_SetupDomainController (NERR_BASE+593) /*This machine is a domain controller and cannot be unjoined from a domain.*/
#define NERR_DefaultJoinRequired (NERR_BASE+594) /*The destination domain controller does not support creating machine accounts in OUs.*/
#define NERR_InvalidWorkgroupName (NERR_BASE+595) /*The specified workgroup name is invalid.*/
#define NERR_NameUsesIncompatibleCodePage (NERR_BASE+596) /*The specified computer name is incompatible with the default language used on the domain controller.*/
#define NERR_ComputerAccountNotFound (NERR_BASE+597) /*The specified computer account could not be found. Contact an administrator to verify the account is in the domain. If the account has been deleted unjoin, reboot, and rejoin the domain.*/
#define NERR_PersonalSku (NERR_BASE+598) /*This version of Windows cannot be joined to a domain.*/
#define NERR_SetupCheckDNSConfig (NERR_BASE+599) /*An attempt to resolve the DNS name of a domain controller in the domain being joined has failed. Please verify this client is configured to reach a DNS server that can resolve DNS names in the target domain. For information about network troubleshooting, see Windows Help.*/
#define NERR_AlreadyCloudDomainJoined (NERR_BASE+600) /*This device is joined to Azure AD. To join an Active Directory domain, you must first go to settings and choose to disconnect your device from your work or school.*/
/*
* Some Password and account error results
*
* NERR_BASE + (601 - 608)
*/
#define NERR_PasswordMustChange (NERR_BASE + 601) /* Password must change at next logon */
#define NERR_AccountLockedOut (NERR_BASE + 602) /* Account is locked out */
#define NERR_PasswordTooLong (NERR_BASE + 603) /* Password is too long */
#define NERR_PasswordNotComplexEnough (NERR_BASE + 604) /* Password doesn't meet the complexity policy */
#define NERR_PasswordFilterError (NERR_BASE + 605) /* Password doesn't meet the requirements of the filter dll's */
/*
* Error codes used for offline domain join and completion
*
* NERR_BASE + (609 - 621)
*/
#define NERR_NoOfflineJoinInfo (NERR_BASE + 609) /* Offline join completion information was not found. */
#define NERR_BadOfflineJoinInfo (NERR_BASE + 610) /* The offline join completion information was bad. */
#define NERR_CantCreateJoinInfo (NERR_BASE + 611) /* Unable to create offline join information. Please ensure you have access to the specified path location and permissions to modify its contents. Running as an elevated administrator may be required. */
#define NERR_BadDomainJoinInfo (NERR_BASE + 612) /* The domain join info being saved was incomplete or bad. */
#define NERR_JoinPerformedMustRestart (NERR_BASE + 613) /* Offline join operation successfully completed but a restart is needed. */
#define NERR_NoJoinPending (NERR_BASE + 614) /* There was no offline join operation pending. */
#define NERR_ValuesNotSet (NERR_BASE + 615) /* Unable to set one or more requested machine or domain name values on the local computer. */
#define NERR_CantVerifyHostname (NERR_BASE + 616) /* Could not verify the current machine's hostname against the saved value in the join completion information. */
#define NERR_CantLoadOfflineHive (NERR_BASE + 617) /* Unable to load the specified offline registry hive. Please ensure you have access to the specified path location and permissions to modify its contents. Running as an elevated administrator may be required. */
#define NERR_ConnectionInsecure (NERR_BASE + 618) /* The minimum session security requirements for this operation were not met. */
#define NERR_ProvisioningBlobUnsupported (NERR_BASE + 619) /* Computer account provisioning blob version is not supported. */
#define NERR_DS8DCRequired (NERR_BASE + 620) /* The specified domain controller does not meet the version requirement for this operation. Please select a domain controller capable of issuing claims. */
#define NERR_LDAPCapableDCRequired (NERR_BASE + 621) /* This operation requires a domain controller which supports LDAP. Please select an LDAP-capable domain controller. */
#define NERR_DS8DCNotFound (NERR_BASE + 622) /* A domain controller which meets the version requirement for this operation could not be located. Please ensure that a domain controller capable of issuing claims is available. */
#define NERR_TargetVersionUnsupported (NERR_BASE + 623) /* The Windows version of the specified image does not support provisioning. */
#define NERR_InvalidMachineNameForJoin (NERR_BASE + 624) /* The machine name is blocked from joining the domain.*/
#define NERR_DS9DCNotFound (NERR_BASE + 625) /* The domain controller does not meet the version requirement for this operation. See http://go.microsoft.com/fwlink/?LinkId=294288 for more information. */
#define NERR_PlainTextSecretsRequired (NERR_BASE + 626) /* The local machine does not allow querying of LSA secrets in plain-text. */
#define NERR_CannotUnjoinAadDomain (NERR_BASE + 627) /* Unable to leave the Azure AD domain that this machine is joined to. Check the event log for detailed error information. */
/***********WARNING ****************
*The range 2750-2799 has been *
*allocated to the IBM LAN Server *
***********************************/
/***********WARNING ****************
*The range 2900-2999 has been *
*reserved for Microsoft OEMs *
***********************************/
/**END_INTERNAL**/
#define MAX_NERR (NERR_BASE+899) /* This is the last error in NERR range. */
/*
* end of list
*
* WARNING: Do not exceed MAX_NERR; values above this are used by
* other error code ranges (errlog.h, service.h, apperr.h).
*/
@@ -8,6 +8,8 @@
#define DNS_ATMA_MAX_ADDR_LENGTH ATM_ADDR_SIZE
#define DNS_ADDR_MAX_SOCKADDR_LENGTH (32)
#define DNS_TYPE_ZERO 0x0000
// RFC 1034/1035
@@ -174,3 +176,16 @@
#define DNS_QUERY_DNSSEC_CHECKING_DISABLED 0x02000000
#define DNS_QUERY_RESERVED 0xf0000000
/** IPTypes.h **/
// Definitions and structures used by getnetworkparams and getadaptersinfo apis
#define MAX_ADAPTER_DESCRIPTION_LENGTH 128 // arb.
#define MAX_ADAPTER_NAME_LENGTH 256 // arb.
#define MAX_ADAPTER_ADDRESS_LENGTH 8 // arb.
#define DEFAULT_MINIMUM_ENTITIES 32 // arb.
#define MAX_HOSTNAME_LEN 128 // arb.
#define MAX_DOMAIN_NAME_LEN 128 // arb.
#define MAX_SCOPE_ID_LEN 256 // arb.
#define MAX_DHCPV6_DUID_LENGTH 130 // RFC 3315.
#define MAX_DNS_SUFFIX_STRING_LENGTH 256
@@ -0,0 +1,79 @@
// We have a rare case of defines that depends on an enum
// Which is PROC_THREAD_ATTRIBUTE_NUM
// So i Will just define a copy of those as define here
// Define version copied from: https://github.com/winsiderss/systeminformer/blob/master/phnt/include/ntpsapi.h#L2666
// Thx to them, as always :)
#define ProcThreadAttributeParentProcess 0 // in HANDLE
#define ProcThreadAttributeExtendedFlags 1 // in ULONG (EXTENDED_PROCESS_CREATION_FLAG_*)
#define ProcThreadAttributeHandleList 2 // in HANDLE[]
#define ProcThreadAttributeGroupAffinity 3 // in GROUP_AFFINITY // since WIN7
#define ProcThreadAttributePreferredNode 4 // in USHORT
#define ProcThreadAttributeIdealProcessor 5 // in PROCESSOR_NUMBER
#define ProcThreadAttributeUmsThread 6 // in UMS_CREATE_THREAD_ATTRIBUTES
#define ProcThreadAttributeMitigationPolicy 7 // in ULONG, ULONG64, or ULONG64[2]
#define ProcThreadAttributePackageFullName 8 // in WCHAR[] // since WIN8
#define ProcThreadAttributeSecurityCapabilities 9 // in SECURITY_CAPABILITIES
#define ProcThreadAttributeConsoleReference 10 // BaseGetConsoleReference (kernelbase.dll)
#define ProcThreadAttributeProtectionLevel 11 // in ULONG (PROTECTION_LEVEL_*) // since WINBLUE
#define ProcThreadAttributeOsMaxVersionTested 12 // in MAXVERSIONTESTED_INFO // since THRESHOLD // (from exe.manifest)
#define ProcThreadAttributeJobList 13 // in HANDLE[]
#define ProcThreadAttributeChildProcessPolicy 14 // in ULONG (PROCESS_CREATION_CHILD_PROCESS_*) // since THRESHOLD2
#define ProcThreadAttributeAllApplicationPackagesPolicy 15 // in ULONG (PROCESS_CREATION_ALL_APPLICATION_PACKAGES_*) // since REDSTONE
#define ProcThreadAttributeWin32kFilter 16 // in WIN32K_SYSCALL_FILTER
#define ProcThreadAttributeSafeOpenPromptOriginClaim 17 // in SE_SAFE_OPEN_PROMPT_RESULTS
#define ProcThreadAttributeDesktopAppPolicy 18 // in ULONG (PROCESS_CREATION_DESKTOP_APP_*) // since RS2
#define ProcThreadAttributeBnoIsolation 19 // in PROC_THREAD_BNOISOLATION_ATTRIBUTE
#define ProcThreadAttributePseudoConsole 22 // in HANDLE (HPCON) // since RS5
#define ProcThreadAttributeIsolationManifest 23 // in ISOLATION_MANIFEST_PROPERTIES // rev (diversenok) // since 19H2+
#define ProcThreadAttributeMitigationAuditPolicy 24 // in ULONG, ULONG64, or ULONG64[2] // since 21H1
#define ProcThreadAttributeMachineType 25 // in USHORT // since 21H2
#define ProcThreadAttributeComponentFilter 26 // in ULONG
#define ProcThreadAttributeEnableOptionalXStateFeatures 27 // in ULONG64 // since WIN11
#define ProcThreadAttributeCreateStore 28 // ULONG // rev (diversenok)
#define ProcThreadAttributeTrustedApp 29
#define ProcThreadAttributeSveVectorLength 30
// Real definition of value usef by API
// From: https://github.com/microsoft/win32metadata/blob/6af96d8470751e13a4e3f579f84b7b8b3ca398e1/generation/WinSDK/RecompiledIdlHeaders/um/WinBase.h#L3568
// macro ProcThreadAttributeValue is recoded in python in template.py
// I replace TRUE by True && FALSE by False for native python compat :)
#define PROC_THREAD_ATTRIBUTE_NUMBER 0x0000FFFF
#define PROC_THREAD_ATTRIBUTE_THREAD 0x00010000 // Attribute may be used with thread creation
#define PROC_THREAD_ATTRIBUTE_INPUT 0x00020000 // Attribute is input only
#define PROC_THREAD_ATTRIBUTE_ADDITIVE 0x00040000 // Attribute may be "accumulated," e.g. bitmasks,
#define PROC_THREAD_ATTRIBUTE_PARENT_PROCESS \
ProcThreadAttributeValue (ProcThreadAttributeParentProcess, False, True, False)
#define PROC_THREAD_ATTRIBUTE_HANDLE_LIST \
ProcThreadAttributeValue (ProcThreadAttributeHandleList, False, True, False)
#define PROC_THREAD_ATTRIBUTE_GROUP_AFFINITY \
ProcThreadAttributeValue (ProcThreadAttributeGroupAffinity, True, True, False)
#define PROC_THREAD_ATTRIBUTE_PREFERRED_NODE \
ProcThreadAttributeValue (ProcThreadAttributePreferredNode, False, True, False)
#define PROC_THREAD_ATTRIBUTE_IDEAL_PROCESSOR \
ProcThreadAttributeValue (ProcThreadAttributeIdealProcessor, True, True, False)
#define PROC_THREAD_ATTRIBUTE_UMS_THREAD \
ProcThreadAttributeValue (ProcThreadAttributeUmsThread, True, True, False)
#define PROC_THREAD_ATTRIBUTE_MITIGATION_POLICY \
ProcThreadAttributeValue (ProcThreadAttributeMitigationPolicy, False, True, False)
#define PROC_THREAD_ATTRIBUTE_SECURITY_CAPABILITIES \
ProcThreadAttributeValue (ProcThreadAttributeSecurityCapabilities, False, True, False)
#define PROC_THREAD_ATTRIBUTE_PROTECTION_LEVEL \
ProcThreadAttributeValue (ProcThreadAttributeProtectionLevel, False, True, False)
#define PROC_THREAD_ATTRIBUTE_PSEUDOCONSOLE \
ProcThreadAttributeValue (ProcThreadAttributePseudoConsole, False, True, False)
#define PROC_THREAD_ATTRIBUTE_MACHINE_TYPE \
ProcThreadAttributeValue (ProcThreadAttributeMachineType, False, True, False)
#define PROC_THREAD_ATTRIBUTE_ENABLE_OPTIONAL_XSTATE_FEATURES \
ProcThreadAttributeValue (ProcThreadAttributeEnableOptionalXStateFeatures, True, True, False)
#define PROC_THREAD_ATTRIBUTE_SVE_VECTOR_LENGTH \
ProcThreadAttributeValue (ProcThreadAttributeSveVectorLength, False, True, False)
@@ -0,0 +1,38 @@
#define PROCESSOR_INTEL_386 386
#define PROCESSOR_INTEL_486 486
#define PROCESSOR_INTEL_PENTIUM 586
#define PROCESSOR_INTEL_IA64 2200
#define PROCESSOR_MIPS_R4000 4000 // incl R4101 & R3910 for Windows CE
#define PROCESSOR_ALPHA_21064 21064
#define PROCESSOR_PPC_601 601
#define PROCESSOR_PPC_603 603
#define PROCESSOR_PPC_604 604
#define PROCESSOR_PPC_620 620
#define PROCESSOR_HITACHI_SH3 10003 // Windows CE
#define PROCESSOR_HITACHI_SH3E 10004 // Windows CE
#define PROCESSOR_HITACHI_SH4 10005 // Windows CE
#define PROCESSOR_MOTOROLA_821 821 // Windows CE
#define PROCESSOR_SHx_SH3 103 // Windows CE
#define PROCESSOR_SHx_SH4 104 // Windows CE
#define PROCESSOR_STRONGARM 2577 // Windows CE - 0xA11
#define PROCESSOR_ARM720 1824 // Windows CE - 0x720
#define PROCESSOR_ARM820 2080 // Windows CE - 0x820
#define PROCESSOR_ARM920 2336 // Windows CE - 0x920
#define PROCESSOR_ARM_7TDMI 70001 // Windows CE
#define PROCESSOR_OPTIL 0x494f // MSIL
#define PROCESSOR_ARCHITECTURE_INTEL 0
#define PROCESSOR_ARCHITECTURE_MIPS 1
#define PROCESSOR_ARCHITECTURE_ALPHA 2
#define PROCESSOR_ARCHITECTURE_PPC 3
#define PROCESSOR_ARCHITECTURE_SHX 4
#define PROCESSOR_ARCHITECTURE_ARM 5
#define PROCESSOR_ARCHITECTURE_IA64 6
#define PROCESSOR_ARCHITECTURE_ALPHA64 7
#define PROCESSOR_ARCHITECTURE_MSIL 8
#define PROCESSOR_ARCHITECTURE_AMD64 9
#define PROCESSOR_ARCHITECTURE_IA32_ON_WIN64 10
#define PROCESSOR_ARCHITECTURE_NEUTRAL 11
#define PROCESSOR_ARCHITECTURE_ARM64 12
#define PROCESSOR_ARCHITECTURE_ARM32_ON_WIN64 13
#define PROCESSOR_ARCHITECTURE_UNKNOWN 0xFFFF
@@ -8,4 +8,39 @@
#define HKEY_CURRENT_CONFIG (0x80000005)
#define HKEY_DYN_DATA (0x80000006)
#define HKEY_CURRENT_USER_LOCAL_SETTINGS (0x80000007)
#define HKEY_CURRENT_USER_LOCAL_SETTINGS (0x80000007)
/* From: public/sdk/inc/ntregapi.h */
#define REG_OPTION_RESERVED (0x00000000L) // Parameter is reserved
#define REG_OPTION_NON_VOLATILE (0x00000000L) // Key is preserved
// when system is rebooted
#define REG_OPTION_VOLATILE (0x00000001L) // Key is not preserved
// when system is rebooted
#define REG_OPTION_CREATE_LINK (0x00000002L) // Created key is a
// symbolic link
#define REG_OPTION_BACKUP_RESTORE (0x00000004L) // open for backup or restore
// special access rules
// privilege required
#define REG_OPTION_OPEN_LINK (0x00000008L) // Open symbolic link
#define REG_LEGAL_OPTION \
(REG_OPTION_RESERVED |\
REG_OPTION_NON_VOLATILE |\
REG_OPTION_VOLATILE |\
REG_OPTION_CREATE_LINK |\
REG_OPTION_BACKUP_RESTORE |\
REG_OPTION_OPEN_LINK)
//
// hive format to be used by Reg(Nt)SaveKeyEx
//
#define REG_STANDARD_FORMAT 1
#define REG_LATEST_FORMAT 2
#define REG_NO_COMPRESSION 4
@@ -0,0 +1 @@
#define MEM_EXTENDED_PARAMETER_TYPE_BITS 8
@@ -23,7 +23,6 @@
#define SYSTEM_AUDIT_CALLBACK_OBJECT_ACE_TYPE (0xF)
#define SYSTEM_ALARM_CALLBACK_OBJECT_ACE_TYPE (0x10)
#define SYSTEM_MANDATORY_LABEL_ACE_TYPE (0x11)
#define ACCESS_MAX_MS_V5_ACE_TYPE (0x11)
#define SYSTEM_RESOURCE_ATTRIBUTE_ACE_TYPE (0x12)
#define SYSTEM_SCOPED_POLICY_ID_ACE_TYPE (0x13)
#define SYSTEM_PROCESS_TRUST_LABEL_ACE_TYPE (0x14)
@@ -121,4 +120,6 @@
#define PROTECTED_DACL_SECURITY_INFORMATION (0x80000000L)
#define PROTECTED_SACL_SECURITY_INFORMATION (0x40000000L)
#define UNPROTECTED_DACL_SECURITY_INFORMATION (0x20000000L)
#define UNPROTECTED_SACL_SECURITY_INFORMATION (0x10000000L)
#define UNPROTECTED_SACL_SECURITY_INFORMATION (0x10000000L)
#define SECURITY_DESCRIPTOR_REVISION 1
@@ -1,3 +1,5 @@
/* Specific Access Rights are in <specific_access_right.txt> */
//
// Service trigger types
//
@@ -19,8 +21,6 @@
#define SERVICE_TRIGGER_DATA_TYPE_KEYWORD_ANY 4
#define SERVICE_TRIGGER_DATA_TYPE_KEYWORD_ALL 5
// Specific Access Rights are in <specific_access_right.txt>
#define SERVICE_RUNS_IN_SYSTEM_PROCESS 0x00000001
@@ -35,16 +35,32 @@
#define SERVICE_WIN32_OWN_PROCESS 0x00000010
#define SERVICE_WIN32_SHARE_PROCESS 0x00000020
#define SERVICE_USER_OWN_PROCESS 0x00000050
#define SERVICE_USER_SHARE_PROCESS 0x00000060
#define SERVICE_WIN32 (SERVICE_WIN32_OWN_PROCESS | SERVICE_WIN32_SHARE_PROCESS)
#define SERVICE_INTERACTIVE_PROCESS 0x00000100
/*
Legacy value changed with Win10 build 14942
https://github.com/processhacker/processhacker/issues/120
*/
#define SERVICE_TYPE_ALL (SERVICE_WIN32 | SERVICE_ADAPTER | SERVICE_DRIVER | SERVICE_INTERACTIVE_PROCESS)
/* New service Type from Win10 build 14942 */
#define SERVICE_USER_SERVICE 0x00000040
#define SERVICE_USERSERVICE_INSTANCE 0x00000080
#define SERVICE_USER_SHARE_PROCESS (SERVICE_USER_SERVICE |
SERVICE_WIN32_SHARE_PROCESS)
#define SERVICE_USER_OWN_PROCESS (SERVICE_USER_SERVICE |
SERVICE_WIN32_OWN_PROCESS)
#define SERVICE_PKG_SERVICE 0x00000200
/* Make a value for the new SERVICE_TYPE_ALL ? */
#define SERVICE_BOOT_START 0x00000000
#define SERVICE_SYSTEM_START 0x00000001
#define SERVICE_AUTO_START 0x00000002
@@ -0,0 +1,26 @@
// Shell File Operations
#define FO_MOVE 0x0001
#define FO_COPY 0x0002
#define FO_DELETE 0x0003
#define FO_RENAME 0x0004
#define FOF_MULTIDESTFILES 0x0001
#define FOF_CONFIRMMOUSE 0x0002
#define FOF_SILENT 0x0004 // don't display progress UI (confirm prompts may be displayed still)
#define FOF_RENAMEONCOLLISION 0x0008 // automatically rename the source files to avoid the collisions
#define FOF_NOCONFIRMATION 0x0010 // don't display confirmation UI, assume "yes" for cases that can be bypassed, "no" for those that can not
#define FOF_WANTMAPPINGHANDLE 0x0020 // Fill in SHFILEOPSTRUCT.hNameMappings
// Must be freed using SHFreeNameMappings
#define FOF_ALLOWUNDO 0x0040 // enable undo including Recycle behavior for IFileOperation::Delete()
#define FOF_FILESONLY 0x0080 // only operate on the files (non folders), both files and folders are assumed without this
#define FOF_SIMPLEPROGRESS 0x0100 // means don't show names of files
#define FOF_NOCONFIRMMKDIR 0x0200 // don't dispplay confirmatino UI before making any needed directories, assume "Yes" in these cases
#define FOF_NOERRORUI 0x0400 // don't put up error UI, other UI may be displayed, progress, confirmations
#define FOF_NOCOPYSECURITYATTRIBS 0x0800 // dont copy file security attributes (ACLs)
#define FOF_NORECURSION 0x1000 // don't recurse into directories for operations that would recurse
#define FOF_NO_CONNECTED_ELEMENTS 0x2000 // don't operate on connected elements ("xxx_files" folders that go with .htm files)
#define FOF_WANTNUKEWARNING 0x4000 // during delete operation, warn if object is being permanently destroyed instead of recycling (partially overrides FOF_NOCONFIRMATION)
#define FOF_NORECURSEREPARSE 0x8000 // deprecated; the operations engine always does the right thing on FolderLink objects (symlinks, reparse points, folder shortcuts)
#define FOF_NO_UI (FOF_SILENT | FOF_NOCONFIRMATION | FOF_NOERRORUI | FOF_NOCONFIRMMKDIR) // don't display any UI at all
@@ -258,15 +258,15 @@
#define FAX_JOB_MANAGE (0x0040)
// COM Specific Access Rights (Custom NAME)
// Based on internet search for "COM Access Mask"
// COM Specific Access Rights
// Based on https://learn.microsoft.com/en-us/windows/win32/com/access-control-lists-for-com
#define COM_EXECUTE (0x0001)
#define COM_EXECUTE_LOCAL (0x0002)
#define COM_EXECUTE_REMOTE (0x0004)
#define COM_ACTIVATE_LOCAL (0x0008)
#define COM_ACTIVATE_REMOTE (0x0010)
#define COM_RIGHTS_EXECUTE (0x0001)
#define COM_RIGHTS_EXECUTE_LOCAL (0x0002)
#define COM_RIGHTS_EXECUTE_REMOTE (0x0004)
#define COM_RIGHTS_ACTIVATE_LOCAL (0x0008)
#define COM_RIGHTS_ACTIVATE_REMOTE (0x0010)
//
// Section Access Rights.
@@ -5,3 +5,38 @@ bits = platform.architecture()[0]
bitness = int(bits[:2])
NATIVE_WORD_MAX_VALUE = 0xffffffff if bitness == 32 else 0xffffffffffffffff
# python implementation of CTL_CODE (macro to compute IOCTL code from param.
# The python implem simplify the code parsing define (macro) by not handling macro functions
# Original MACRO:
#
# #define CTL_CODE( DeviceType, Function, Method, Access ) ( \
# ((DeviceType) << 16) | ((Access) << 14) | ((Function) << 2) | (Method) \
# )
def CTL_CODE(DeviceType, Function, Method, Access):
return (((DeviceType) << 16) | ((Access) << 14) | ((Function) << 2) | (Method))
# https://learn.microsoft.com/en-us/windows/win32/api/winerror/nf-winerror-hresult_facility
# Original MACRO:
# #define HRESULT_FACILITY(hr) (((hr) >> 16) & 0x1fff)
def HRESULT_FACILITY(hr):
return (((hr) >> 16) & 0x1fff)
# https://github.com/microsoft/win32metadata/blob/6af96d8470751e13a4e3f579f84b7b8b3ca398e1/generation/WinSDK/RecompiledIdlHeaders/um/WinBase.h#L3562
# Original MACRO:
#define ProcThreadAttributeValue(Number, Thread, Input, Additive) \
# (((Number) & PROC_THREAD_ATTRIBUTE_NUMBER) | \
# ((Thread != FALSE) ? PROC_THREAD_ATTRIBUTE_THREAD : 0) | \
# ((Input != FALSE) ? PROC_THREAD_ATTRIBUTE_INPUT : 0) | \
# ((Additive != FALSE) ? PROC_THREAD_ATTRIBUTE_ADDITIVE : 0))
def ProcThreadAttributeValue(Number, Thread, Input, Additive):
return ((Number & PROC_THREAD_ATTRIBUTE_NUMBER) |
(Thread and PROC_THREAD_ATTRIBUTE_THREAD) |
(Input and PROC_THREAD_ATTRIBUTE_INPUT) |
(Additive and PROC_THREAD_ATTRIBUTE_ADDITIVE))
@@ -0,0 +1,61 @@
// Atrget architecture description
#define CONTEXT_I386 0x00010000 // An old PFW error in case ?
#define CONTEXT_AMD64 0x00100000
#define CONTEXT_ARM 0x00200000
#define CONTEXT_ARM64 0x00400000
#define CONTEXT_i386 0x00010000L // this assumes that i386 and
#define CONTEXT_i486 0x00010000L // i486 have identical context records
#define WOW64_CONTEXT_i386 0x00010000 // this assumes that i386 and
#define WOW64_CONTEXT_i486 0x00010000 // i486 have identical context records
// Not perfect, should be explicitly for an architecture
#define CONTEXT_CONTROL 0x00000001L
#define CONTEXT_INTEGER 0x00000002L
#define CONTEXT_SEGMENTS 0x00000004L
#define CONTEXT_FLOATING_POINT 0x00000008L
#define CONTEXT_DEBUG_REGISTERS 0x00000010L
#define CONTEXT_EXTENDED_REGISTERS 0x00000020L
#define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS)
#define CONTEXT_ALL (CONTEXT_FULL | CONTEXT_FLOATING_POINT | CONTEXT_DEBUG_REGISTERS | CONTEXT_EXTENDED_REGISTERS)
#define CONTEXT_XSTATE (CONTEXT_I386 | 0x00000040L)
// WOW64
#define WOW64_CONTEXT_CONTROL (WOW64_CONTEXT_i386 | 0x00000001L) // SS:SP, CS:IP, FLAGS, BP
#define WOW64_CONTEXT_INTEGER (WOW64_CONTEXT_i386 | 0x00000002L) // AX, BX, CX, DX, SI, DI
#define WOW64_CONTEXT_SEGMENTS (WOW64_CONTEXT_i386 | 0x00000004L) // DS, ES, FS, GS
#define WOW64_CONTEXT_FLOATING_POINT (WOW64_CONTEXT_i386 | 0x00000008L) // 387 state
#define WOW64_CONTEXT_DEBUG_REGISTERS (WOW64_CONTEXT_i386 | 0x00000010L) // DB 0-3,6,7
#define WOW64_CONTEXT_EXTENDED_REGISTERS (WOW64_CONTEXT_i386 | 0x00000020L) // cpu specific extensions
#define WOW64_CONTEXT_FULL (WOW64_CONTEXT_CONTROL | WOW64_CONTEXT_INTEGER | WOW64_CONTEXT_SEGMENTS)
#define WOW64_CONTEXT_ALL (WOW64_CONTEXT_CONTROL | WOW64_CONTEXT_INTEGER | WOW64_CONTEXT_SEGMENTS | \
WOW64_CONTEXT_FLOATING_POINT | WOW64_CONTEXT_DEBUG_REGISTERS | \
WOW64_CONTEXT_EXTENDED_REGISTERS)
#define WOW64_CONTEXT_XSTATE (WOW64_CONTEXT_i386 | 0x00000040L)
#define WOW64_CONTEXT_EXCEPTION_ACTIVE 0x08000000
#define WOW64_CONTEXT_SERVICE_ACTIVE 0x10000000
#define WOW64_CONTEXT_EXCEPTION_REQUEST 0x40000000
#define WOW64_CONTEXT_EXCEPTION_REPORTING 0x80000000
// ARM64
#define CONTEXT_ARM64_CONTROL (CONTEXT_ARM64 | 0x1L)
#define CONTEXT_ARM64_INTEGER (CONTEXT_ARM64 | 0x2L)
#define CONTEXT_ARM64_FLOATING_POINT (CONTEXT_ARM64 | 0x4L)
#define CONTEXT_ARM64_DEBUG_REGISTERS (CONTEXT_ARM64 | 0x8L)
#define CONTEXT_ARM64_X18 (CONTEXT_ARM64 | 0x10L)
#define CONTEXT_UNWOUND_TO_CALL 0x20000000
#define CONTEXT_RET_TO_GUEST 0x04000000
#define ARM64_MAX_BREAKPOINTS 8
#define ARM64_MAX_WATCHPOINTS 2
@@ -130,21 +130,6 @@
#define TH32CS_SNAPALL (TH32CS_SNAPHEAPLIST | TH32CS_SNAPPROCESS | TH32CS_SNAPTHREAD | TH32CS_SNAPMODULE)
#define TH32CS_INHERIT 0x80000000
#define CONTEXT_I386 0x00010000
#define CONTEXT_CONTROL 0x00000001L
#define CONTEXT_INTEGER 0x00000002L
#define CONTEXT_SEGMENTS 0x00000004L
#define CONTEXT_FLOATING_POINT 0x00000008L
#define CONTEXT_DEBUG_REGISTERS 0x00000010L
#define CONTEXT_EXTENDED_REGISTERS 0x00000020L
#define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS)
#define CONTEXT_ALL (CONTEXT_FULL | CONTEXT_FLOATING_POINT | CONTEXT_DEBUG_REGISTERS | CONTEXT_EXTENDED_REGISTERS)
#define CONTEXT_FULL CONTEXT_I386 | CONTEXT_FULL
#define CONTEXT_ALL CONTEXT_I386 | CONTEXT_ALL
#define CONTEXT_XSTATE (CONTEXT_I386 | 0x00000040L)
#define PAGE_NOACCESS 0x01
#define PAGE_READONLY 0x02
@@ -198,38 +183,6 @@
#define SPECIFIC_RIGHTS_ALL (0x0000FFFFL)
#define AF_UNSPEC 0
#define AF_UNIX 1
#define AF_INET 2
#define AF_IMPLINK 3
#define AF_PUP 4
#define AF_CHAOS 5
#define AF_NS 6
#define AF_IPX AF_NS
#define AF_ISO 7
#define AF_OSI AF_ISO
#define AF_ECMA 8
#define AF_DATAKIT 9
#define AF_CCITT 10
#define AF_SNA 11
#define AF_DECnet 12
#define AF_DLI 13
#define AF_LAT 14
#define AF_HYLINK 15
#define AF_APPLETALK 16
#define AF_NETBIOS 17
#define AF_VOICEVIEW 18
#define AF_FIREFOX 19
#define AF_UNKNOWN1 20
#define AF_BAN 21
#define AF_ATM 22
#define AF_INET6 23
#define AF_CLUSTER 24
#define AF_12844 25
#define AF_IRDA 26
#define AF_NETDES 28
#define EXCEPTION_NONCONTINUABLE 0x1
#define EXCEPTION_MAXIMUM_PARAMETERS 15
@@ -263,59 +216,11 @@
#define TRUNCATE_EXISTING 5
#define FILE_SHARE_READ 0x00000001
#define FILE_SHARE_WRITE 0x00000002
#define FILE_SHARE_DELETE 0x00000004
#define FILE_ATTRIBUTE_READONLY 0x00000001
#define FILE_ATTRIBUTE_HIDDEN 0x00000002
#define FILE_ATTRIBUTE_SYSTEM 0x00000004
#define FILE_ATTRIBUTE_DIRECTORY 0x00000010
#define FILE_ATTRIBUTE_ARCHIVE 0x00000020
#define FILE_ATTRIBUTE_DEVICE 0x00000040
#define FILE_ATTRIBUTE_NORMAL 0x00000080
#define FILE_ATTRIBUTE_TEMPORARY 0x00000100
#define FILE_ATTRIBUTE_SPARSE_FILE 0x00000200
#define FILE_ATTRIBUTE_REPARSE_POINT 0x00000400
#define FILE_ATTRIBUTE_COMPRESSED 0x00000800
#define FILE_ATTRIBUTE_OFFLINE 0x00001000
#define FILE_ATTRIBUTE_NOT_CONTENT_INDEXED 0x00002000
#define FILE_ATTRIBUTE_ENCRYPTED 0x00004000
#define FILE_ATTRIBUTE_VIRTUAL 0x00010000
#define FILE_NOTIFY_CHANGE_FILE_NAME 0x00000001
#define FILE_NOTIFY_CHANGE_DIR_NAME 0x00000002
#define FILE_NOTIFY_CHANGE_ATTRIBUTES 0x00000004
#define FILE_NOTIFY_CHANGE_SIZE 0x00000008
#define FILE_NOTIFY_CHANGE_LAST_WRITE 0x00000010
#define FILE_NOTIFY_CHANGE_LAST_ACCESS 0x00000020
#define FILE_NOTIFY_CHANGE_CREATION 0x00000040
#define FILE_NOTIFY_CHANGE_SECURITY 0x00000100
#define FILE_ACTION_ADDED 0x00000001
#define FILE_ACTION_REMOVED 0x00000002
#define FILE_ACTION_MODIFIED 0x00000003
#define FILE_ACTION_RENAMED_OLD_NAME 0x00000004
#define FILE_ACTION_RENAMED_NEW_NAME 0x00000005
#define MAILSLOT_NO_MESSAGE (-1)
#define MAILSLOT_WAIT_FOREVER (-1)
#define FILE_CASE_SENSITIVE_SEARCH 0x00000001
#define FILE_CASE_PRESERVED_NAMES 0x00000002
#define FILE_UNICODE_ON_DISK 0x00000004
#define FILE_PERSISTENT_ACLS 0x00000008
#define FILE_FILE_COMPRESSION 0x00000010
#define FILE_VOLUME_QUOTAS 0x00000020
#define FILE_SUPPORTS_SPARSE_FILES 0x00000040
#define FILE_SUPPORTS_REPARSE_POINTS 0x00000080
#define FILE_SUPPORTS_REMOTE_STORAGE 0x00000100
#define FILE_VOLUME_IS_COMPRESSED 0x00008000
#define FILE_SUPPORTS_OBJECT_IDS 0x00010000
#define FILE_SUPPORTS_ENCRYPTION 0x00020000
#define FILE_NAMED_STREAMS 0x00040000
#define FILE_READ_ONLY_VOLUME 0x00080000
#define FILE_SEQUENTIAL_WRITE_ONCE 0x00100000
#define FILE_SUPPORTS_TRANSACTIONS 0x00200000
#define FILE_SUPPORTS_HARD_LINKS 0x00400000
#define FILE_SUPPORTS_EXTENDED_ATTRIBUTES 0x00800000
#define FILE_SUPPORTS_OPEN_BY_FILE_ID 0x01000000
#define FILE_SUPPORTS_USN_JOURNAL 0x02000000
#define RRF_RT_REG_NONE 0x00000001
@@ -385,38 +290,6 @@
#define IMAGE_FILE_UP_SYSTEM_ONLY 0x4000
#define IMAGE_FILE_BYTES_REVERSED_HI 0x8000
#define IMAGE_FILE_MACHINE_UNKNOWN 0
#define IMAGE_FILE_MACHINE_I386 0x014c
#define IMAGE_FILE_MACHINE_R3000 0x0162
#define IMAGE_FILE_MACHINE_R4000 0x0166
#define IMAGE_FILE_MACHINE_R10000 0x0168
#define IMAGE_FILE_MACHINE_WCEMIPSV2 0x0169
#define IMAGE_FILE_MACHINE_ALPHA 0x0184
#define IMAGE_FILE_MACHINE_SH3 0x01a2
#define IMAGE_FILE_MACHINE_SH3DSP 0x01a3
#define IMAGE_FILE_MACHINE_SH3E 0x01a4
#define IMAGE_FILE_MACHINE_SH4 0x01a6
#define IMAGE_FILE_MACHINE_SH5 0x01a8
#define IMAGE_FILE_MACHINE_ARM 0x01c0
#define IMAGE_FILE_MACHINE_THUMB 0x01c2
#define IMAGE_FILE_MACHINE_ARMNT 0x01c4
#define IMAGE_FILE_MACHINE_AM33 0x01d3
#define IMAGE_FILE_MACHINE_POWERPC 0x01F0
#define IMAGE_FILE_MACHINE_POWERPCFP 0x01f1
#define IMAGE_FILE_MACHINE_IA64 0x0200
#define IMAGE_FILE_MACHINE_MIPS16 0x0266
#define IMAGE_FILE_MACHINE_ALPHA64 0x0284
#define IMAGE_FILE_MACHINE_MIPSFPU 0x0366
#define IMAGE_FILE_MACHINE_MIPSFPU16 0x0466
#define IMAGE_FILE_MACHINE_AXP64 IMAGE_FILE_MACHINE_ALPHA64
#define IMAGE_FILE_MACHINE_TRICORE 0x0520
#define IMAGE_FILE_MACHINE_CEF 0x0CEF
#define IMAGE_FILE_MACHINE_EBC 0x0EBC
#define IMAGE_FILE_MACHINE_AMD64 0x8664
#define IMAGE_FILE_MACHINE_M32R 0x9041
#define IMAGE_FILE_MACHINE_CEE 0xC0EE
#define SECURITY_MANDATORY_UNTRUSTED_RID (0x00000000L)
#define SECURITY_MANDATORY_LOW_RID (0x00001000L)
@@ -780,4 +653,7 @@
#define TXFS_MINIVERSION_COMMITTED_VIEW (0x0000)
#define TXFS_MINIVERSION_DIRTY_VIEW (0xFFFF)
#define TXFS_MINIVERSION_DEFAULT_VIEW (0xFFFE)
#define TXFS_MINIVERSION_DEFAULT_VIEW (0xFFFE)
#define PROCESSOR_FEATURE_MAX 64
@@ -46,4 +46,60 @@
#define IMAGE_REL_BASED_MACHINE_SPECIFIC_7 7
#define IMAGE_REL_BASED_MACHINE_SPECIFIC_8 8
#define IMAGE_REL_BASED_MACHINE_SPECIFIC_9 9
#define IMAGE_REL_BASED_DIR64 10
#define IMAGE_REL_BASED_DIR64 10
// Security Directory related
#define WIN_CERT_REVISION_1_0 (0x0100)
#define WIN_CERT_REVISION_2_0 (0x0200)
#define WIN_CERT_TYPE_X509 (0x0001) // bCertificate contains an X.509 Certificate
#define WIN_CERT_TYPE_PKCS_SIGNED_DATA (0x0002) // bCertificate contains a PKCS SignedData structure
#define WIN_CERT_TYPE_RESERVED_1 (0x0003) // Reserved
#define WIN_CERT_TYPE_TS_STACK_SIGNED (0x0004) // Terminal Server Protocol Stack Certificate signing
// Optional Header related
#define IMAGE_SIZEOF_ROM_OPTIONAL_HEADER 56
#define IMAGE_SIZEOF_STD_OPTIONAL_HEADER 28
#define IMAGE_SIZEOF_NT_OPTIONAL32_HEADER 224
#define IMAGE_SIZEOF_NT_OPTIONAL64_HEADER 240
#define IMAGE_NT_OPTIONAL_HDR32_MAGIC 0x10b
#define IMAGE_NT_OPTIONAL_HDR64_MAGIC 0x20b
#define IMAGE_ROM_OPTIONAL_HDR_MAGIC 0x107
#define IMAGE_FILE_MACHINE_UNKNOWN 0
#define IMAGE_FILE_MACHINE_I386 0x014c
#define IMAGE_FILE_MACHINE_R3000 0x0162
#define IMAGE_FILE_MACHINE_R4000 0x0166
#define IMAGE_FILE_MACHINE_R10000 0x0168
#define IMAGE_FILE_MACHINE_WCEMIPSV2 0x0169
#define IMAGE_FILE_MACHINE_ALPHA 0x0184
#define IMAGE_FILE_MACHINE_SH3 0x01a2
#define IMAGE_FILE_MACHINE_SH3DSP 0x01a3
#define IMAGE_FILE_MACHINE_SH3E 0x01a4
#define IMAGE_FILE_MACHINE_SH4 0x01a6
#define IMAGE_FILE_MACHINE_SH5 0x01a8
#define IMAGE_FILE_MACHINE_ARM 0x01c0
#define IMAGE_FILE_MACHINE_THUMB 0x01c2
#define IMAGE_FILE_MACHINE_ARMNT 0x01c4
#define IMAGE_FILE_MACHINE_AM33 0x01d3
#define IMAGE_FILE_MACHINE_POWERPC 0x01F0
#define IMAGE_FILE_MACHINE_POWERPCFP 0x01f1
#define IMAGE_FILE_MACHINE_IA64 0x0200
#define IMAGE_FILE_MACHINE_MIPS16 0x0266
#define IMAGE_FILE_MACHINE_ALPHA64 0x0284
#define IMAGE_FILE_MACHINE_MIPSFPU 0x0366
#define IMAGE_FILE_MACHINE_MIPSFPU16 0x0466
#define IMAGE_FILE_MACHINE_AXP64 IMAGE_FILE_MACHINE_ALPHA64
#define IMAGE_FILE_MACHINE_TRICORE 0x0520
#define IMAGE_FILE_MACHINE_CEF 0x0CEF
#define IMAGE_FILE_MACHINE_EBC 0x0EBC
#define IMAGE_FILE_MACHINE_AMD64 0x8664
#define IMAGE_FILE_MACHINE_M32R 0x9041
#define IMAGE_FILE_MACHINE_CEE 0xC0EE
#define IMAGE_FILE_MACHINE_ARM64 0xAA64
#define IMAGE_FILE_MACHINE_TARGET_HOST 0x0001 // Useful for indicating we want to interact with the host and not a WoW guest.
@@ -0,0 +1,100 @@
#define WSADESCRIPTION_LEN 256
#define WSASYS_STATUS_LEN 128
#define WSAPROTOCOL_LEN 255
#define MAX_PROTOCOL_CHAIN 7
#define BASE_PROTOCOL 1
#define LAYERED_PROTOCOL 0
// INVALID_SOCKET (SOCKET)(~0) // will change in 32 & 64 bits..
// The final INVALID_SOCKET is setuped in __init__.py of generated def
#define INVALID_SOCKET32 (0xffffffff)
#define INVALID_SOCKET64 (0xffffffffffffffff)
#define SOCKET_ERROR (-1)
/*
* Constants and structures defined by the internet system,
* Per RFC 790, September 1981, taken from the BSD file netinet/in.h.
*/
/*
* Types
*/
#define SOCK_STREAM 1 /* stream socket */
#define SOCK_DGRAM 2 /* datagram socket */
#define SOCK_RAW 3 /* raw-protocol interface */
#define SOCK_RDM 4 /* reliably-delivered message */
#define SOCK_SEQPACKET 5 /* sequenced packet stream */
/*
* Protocols
*/
#define IPPROTO_IP 0 /* dummy for IP */
#define IPPROTO_ICMP 1 /* control message protocol */
#define IPPROTO_IGMP 2 /* group management protocol */
#define IPPROTO_GGP 3 /* gateway^2 (deprecated) */
#define IPPROTO_TCP 6 /* tcp */
#define IPPROTO_PUP 12 /* pup */
#define IPPROTO_UDP 17 /* user datagram protocol */
#define IPPROTO_IDP 22 /* xns idp */
#define IPPROTO_ND 77 /* UNOFFICIAL net disk proto */
#define IPPROTO_RAW 255 /* raw IP packet */
#define IPPROTO_MAX 256
/*
* Port/socket numbers: network standard functions
*/
#define IPPORT_ECHO 7
#define IPPORT_DISCARD 9
#define IPPORT_SYSTAT 11
#define IPPORT_DAYTIME 13
#define IPPORT_NETSTAT 15
#define IPPORT_FTP 21
#define IPPORT_TELNET 23
#define IPPORT_SMTP 25
#define IPPORT_TIMESERVER 37
#define IPPORT_NAMESERVER 42
#define IPPORT_WHOIS 43
#define IPPORT_MTP 57
/*
* Address families.
*/
#define AF_UNSPEC 0 /* unspecified */
#define AF_UNIX 1 /* local to host (pipes, portals) */
#define AF_INET 2 /* internetwork: UDP, TCP, etc. */
#define AF_IMPLINK 3 /* arpanet imp addresses */
#define AF_PUP 4 /* pup protocols: e.g. BSP */
#define AF_CHAOS 5 /* mit CHAOS protocols */
#define AF_IPX 6 /* IPX and SPX */
#define AF_NS 6 /* XEROX NS protocols */
#define AF_ISO 7 /* ISO protocols */
#define AF_OSI AF_ISO /* OSI is ISO */
#define AF_ECMA 8 /* european computer manufacturers */
#define AF_DATAKIT 9 /* datakit protocols */
#define AF_CCITT 10 /* CCITT protocols, X.25 etc */
#define AF_SNA 11 /* IBM SNA */
#define AF_DECnet 12 /* DECnet */
#define AF_DLI 13 /* Direct data link interface */
#define AF_LAT 14 /* LAT */
#define AF_HYLINK 15 /* NSC Hyperchannel */
#define AF_APPLETALK 16 /* AppleTalk */
#define AF_NETBIOS 17 /* NetBios-style addresses */
#define AF_VOICEVIEW 18 /* VoiceView */
#define AF_FIREFOX 19 /* FireFox */
#define AF_UNKNOWN1 20 /* Somebody is using this! */
#define AF_BAN 21 /* Banyan */
#define AF_ATM 22
#define AF_INET6 23
#define AF_CLUSTER 24
#define AF_12844 25
#define AF_IRDA 26
#define AF_NETDES 28
#define AF_MAX 22
+107 -1
View File
@@ -56,4 +56,110 @@ HRESULT WINAPI CLSIDFromProgID(
PVOID CoTaskMemFree(
LPVOID pv
);
);
LPSAFEARRAY SafeArrayCreate(
[in] VARTYPE vt,
[in] UINT cDims,
[in] SAFEARRAYBOUND *rgsabound
);
LPSAFEARRAY SafeArrayCreateVector(
[in] VARTYPE vt,
[in] LONG lLbound,
[in] ULONG cElements
);
HRESULT SafeArrayDestroy(
[in] SAFEARRAY *psa
);
HRESULT SafeArrayDestroyData(
[in] SAFEARRAY *psa
);
HRESULT SafeArrayGetElement(
[in] SAFEARRAY *psa,
[in] LONG *rgIndices,
[out] VOID *pv
);
UINT SafeArrayGetElemsize(
[in] SAFEARRAY *psa
);
HRESULT SafeArrayGetLBound(
[in] SAFEARRAY *psa,
[in] UINT nDim,
[out] LONG *plLbound
);
HRESULT SafeArrayGetUBound(
[in] SAFEARRAY *psa,
[in] UINT nDim,
[out] LONG *plUbound
);
UINT SafeArrayGetDim(
[in] SAFEARRAY *psa
);
HRESULT SafeArrayPutElement(
[in] SAFEARRAY *psa,
[in] LONG *rgIndices,
[in] VOID *pv
);
HRESULT SafeArrayGetVartype(
[in] SAFEARRAY *psa,
[out] VARTYPE *pvt
);
HRESULT SafeArrayCopy(
[in] SAFEARRAY *psa,
[out] LPSAFEARRAY *ppsaOut
);
HRESULT SafeArrayCopyData(
[in] SAFEARRAY *psaSource,
[in] SAFEARRAY *psaTarget
);
PVOID SysAllocString(
[in, optional] OLECHAR *psz
);
VOID SysFreeString(
[in, optional] BSTR bstrString
);
HRESULT CreateStreamOnHGlobal(
[in] HGLOBAL hGlobal,
[in] BOOL fDeleteOnRelease,
[out] LPSTREAM *ppstm
);
HRESULT GetHGlobalFromStream(
[in] LPUNKNOWN pstm,
[out] HGLOBAL *phglobal
);
HRESULT CoMarshalInterface(
[in] LPUNKNOWN pStm,
[in] REFIID riid,
[in] LPUNKNOWN pUnk,
[in] DWORD dwDestContext,
[in, optional] LPVOID pvDestContext,
[in] DWORD mshlflags
);
HRESULT CoUnmarshalInterface(
[in] PVOID pStm,
[in] REFIID riid,
[out] LPVOID *ppv
);
@@ -52,11 +52,6 @@ BOOL WINAPI CryptCATAdminReleaseContext(
_In_ DWORD dwFlags
);
CRYPTCATATTRIBUTE* WINAPI CryptCATGetAttrInfo(
_In_ HANDLE hCatalog,
_In_ CRYPTCATMEMBER *pCatMember,
_In_ LPWSTR pwszReferenceTag
);
CRYPTCATMEMBER* WINAPI CryptCATGetMemberInfo(
_In_ HANDLE hCatalog,
@@ -258,6 +253,81 @@ BOOL WINAPI CryptReleaseContext(
_In_ DWORD dwFlags
);
BOOL CryptCreateHash(
HCRYPTPROV hProv,
ALG_ID Algid,
HCRYPTKEY hKey,
DWORD dwFlags,
HCRYPTHASH *phHash
);
BOOL CryptHashData(
HCRYPTHASH hHash,
BYTE *pbData,
DWORD dwDataLen,
DWORD dwFlags
);
BOOL CryptGetHashParam(
HCRYPTHASH hHash,
DWORD dwParam,
BYTE *pbData,
DWORD *pdwDataLen,
DWORD dwFlags
);
BOOL CryptVerifySignatureA(
HCRYPTHASH hHash,
BYTE *pbSignature,
DWORD dwSigLen,
HCRYPTKEY hPubKey,
LPCSTR szDescription,
DWORD dwFlags
);
BOOL CryptVerifySignatureW(
HCRYPTHASH hHash,
BYTE *pbSignature,
DWORD dwSigLen,
HCRYPTKEY hPubKey,
LPCWSTR szDescription,
DWORD dwFlags
);
BOOL CryptSignHashA(
HCRYPTHASH hHash,
DWORD dwKeySpec,
LPCSTR szDescription,
DWORD dwFlags,
BYTE *pbSignature,
DWORD *pdwSigLen
);
BOOL CryptSignHashW(
HCRYPTHASH hHash,
DWORD dwKeySpec,
LPCWSTR szDescription,
DWORD dwFlags,
BYTE *pbSignature,
DWORD *pdwSigLen
);
BOOL CryptDestroyHash(
HCRYPTHASH hHash
);
BOOL CryptDeriveKey(
HCRYPTPROV hProv,
ALG_ID Algid,
HCRYPTHASH hBaseData,
DWORD dwFlags,
HCRYPTKEY *phKey
);
BOOL WINAPI CryptExportKey(
_In_ HCRYPTKEY hKey,
_In_ HCRYPTKEY hExpKey,
@@ -267,6 +337,14 @@ BOOL WINAPI CryptExportKey(
_Inout_ DWORD *pdwDataLen
);
BOOL CryptImportKey(
HCRYPTPROV hProv,
BYTE *pbData,
DWORD dwDataLen,
HCRYPTKEY hPubKey,
DWORD dwFlags,
HCRYPTKEY *phKey
);
BOOL WINAPI CertGetCertificateContextProperty(
_In_ PCCERT_CONTEXT pCertContext,
@@ -0,0 +1,31 @@
BOOL CryptProtectData(
DATA_BLOB *pDataIn,
LPCWSTR szDataDescr,
DATA_BLOB *pOptionalEntropy,
PVOID pvReserved,
CRYPTPROTECT_PROMPTSTRUCT *pPromptStruct,
DWORD dwFlags,
DATA_BLOB *pDataOut
);
BOOL CryptUnprotectData(
DATA_BLOB *pDataIn,
LPWSTR *ppszDataDescr,
DATA_BLOB *pOptionalEntropy,
PVOID pvReserved,
CRYPTPROTECT_PROMPTSTRUCT *pPromptStruct,
DWORD dwFlags,
DATA_BLOB *pDataOut
);
BOOL CryptProtectMemory(
LPVOID pDataIn,
DWORD cbDataIn,
DWORD dwFlags
);
BOOL CryptUnprotectMemory(
LPVOID pDataIn,
DWORD cbDataIn,
DWORD dwFlags
);
@@ -0,0 +1,38 @@
DWORD GetEnvironmentVariableA(
[in, optional] LPCSTR lpName,
[out, optional] LPSTR lpBuffer,
[in] DWORD nSize
);
DWORD GetEnvironmentVariableW(
[in, optional] LPCWSTR lpName,
[out, optional] LPWSTR lpBuffer,
[in] DWORD nSize
);
BOOL SetEnvironmentVariableA(
[in] LPCSTR lpName,
[in, optional] LPCSTR lpValue
);
BOOL SetEnvironmentVariableW(
[in] LPCWSTR lpName,
[in, optional] LPCWSTR lpValue
);
PVOID GetEnvironmentStringsA();
PVOID GetEnvironmentStringsW();
BOOL SetEnvironmentStringsW(
LPWCH NewEnvironment
);
BOOL FreeEnvironmentStringsA(
PVOID penv
);
BOOL FreeEnvironmentStringsW(
PVOID penv
);
@@ -23,4 +23,84 @@ BOOL FindNextFileW(
BOOL FindClose(
HANDLE hFindFile
);
HANDLE FindFirstChangeNotificationA(
LPCSTR lpPathName,
BOOL bWatchSubtree,
DWORD dwNotifyFilter
);
HANDLE FindFirstChangeNotificationW(
LPCWSTR lpPathName,
BOOL bWatchSubtree,
DWORD dwNotifyFilter
);
BOOL FindNextChangeNotification(
HANDLE hChangeHandle
);
BOOL FindCloseChangeNotification(
HANDLE hChangeHandle
);
BOOL ReadDirectoryChangesW(
HANDLE hDirectory,
LPVOID lpBuffer,
DWORD nBufferLength,
BOOL bWatchSubtree,
DWORD dwNotifyFilter,
LPDWORD lpBytesReturned,
LPOVERLAPPED lpOverlapped,
LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
);
BOOL ReadDirectoryChangesExW(
HANDLE hDirectory,
LPVOID lpBuffer,
DWORD nBufferLength,
BOOL bWatchSubtree,
DWORD dwNotifyFilter,
LPDWORD lpBytesReturned,
LPOVERLAPPED lpOverlapped,
LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine,
READ_DIRECTORY_NOTIFY_INFORMATION_CLASS ReadDirectoryNotifyInformationClass
);
BOOL LockFile(
[in] HANDLE hFile,
[in] DWORD dwFileOffsetLow,
[in] DWORD dwFileOffsetHigh,
[in] DWORD nNumberOfBytesToLockLow,
[in] DWORD nNumberOfBytesToLockHigh
);
BOOL LockFileEx(
[in] HANDLE hFile,
[in] DWORD dwFlags,
DWORD dwReserved,
[in] DWORD nNumberOfBytesToLockLow,
[in] DWORD nNumberOfBytesToLockHigh,
[in, out] LPOVERLAPPED lpOverlapped
);
BOOL SetFileInformationByHandle(
[in] HANDLE hFile,
[in] FILE_INFO_BY_HANDLE_CLASS FileInformationClass,
[in] LPVOID lpFileInformation,
[in] DWORD dwBufferSize
);
BOOL GetFileInformationByHandle(
[in] HANDLE hFile,
[out] LPBY_HANDLE_FILE_INFORMATION lpFileInformation
);
BOOL GetFileInformationByHandleEx(
[in] HANDLE hFile,
[in] FILE_INFO_BY_HANDLE_CLASS FileInformationClass,
[out] LPVOID lpFileInformation,
[in] DWORD dwBufferSize
);
@@ -0,0 +1,239 @@
BOOL InternetCheckConnectionA(
LPCSTR lpszUrl,
DWORD dwFlags,
DWORD dwReserved
);
BOOL InternetCheckConnectionW(
LPCWSTR lpszUrl,
DWORD dwFlags,
DWORD dwReserved
);
HINTERNET InternetOpenA(
LPCSTR lpszAgent,
DWORD dwAccessType,
LPCSTR lpszProxy,
LPCSTR lpszProxyBypass,
DWORD dwFlags
);
HINTERNET InternetOpenW(
LPCWSTR lpszAgent,
DWORD dwAccessType,
LPCWSTR lpszProxy,
LPCWSTR lpszProxyBypass,
DWORD dwFlags
);
HINTERNET InternetOpenUrlA(
HINTERNET hInternet,
LPCSTR lpszUrl,
LPCSTR lpszHeaders,
DWORD dwHeadersLength,
DWORD dwFlags,
DWORD_PTR dwContext
);
HINTERNET InternetOpenUrlW(
HINTERNET hInternet,
LPCWSTR lpszUrl,
LPCWSTR lpszHeaders,
DWORD dwHeadersLength,
DWORD dwFlags,
DWORD_PTR dwContext
);
HINTERNET InternetConnectA(
HINTERNET hInternet,
LPCSTR lpszServerName,
INTERNET_PORT nServerPort,
LPCSTR lpszUserName,
LPCSTR lpszPassword,
DWORD dwService,
DWORD dwFlags,
DWORD_PTR dwContext
);
HINTERNET InternetConnectW(
HINTERNET hInternet,
LPCWSTR lpszServerName,
INTERNET_PORT nServerPort,
LPCWSTR lpszUserName,
LPCWSTR lpszPassword,
DWORD dwService,
DWORD dwFlags,
DWORD_PTR dwContext
);
HINTERNET HttpOpenRequestA(
HINTERNET hConnect,
LPCSTR lpszVerb,
LPCSTR lpszObjectName,
LPCSTR lpszVersion,
LPCSTR lpszReferrer,
LPCSTR *lplpszAcceptTypes,
DWORD dwFlags,
DWORD_PTR dwContext
);
HINTERNET HttpOpenRequestW(
HINTERNET hConnect,
LPCWSTR lpszVerb,
LPCWSTR lpszObjectName,
LPCWSTR lpszVersion,
LPCWSTR lpszReferrer,
LPCWSTR *lplpszAcceptTypes,
DWORD dwFlags,
DWORD_PTR dwContext
);
BOOL InternetSetOptionA(
HINTERNET hInternet,
DWORD dwOption,
LPVOID lpBuffer,
DWORD dwBufferLength
);
BOOL InternetSetOptionW(
HINTERNET hInternet,
DWORD dwOption,
LPVOID lpBuffer,
DWORD dwBufferLength
);
BOOL InternetReadFile(
HINTERNET hFile,
LPVOID lpBuffer,
DWORD dwNumberOfBytesToRead,
LPDWORD lpdwNumberOfBytesRead
);
BOOL InternetReadFileExA(
HINTERNET hFile,
LPINTERNET_BUFFERSA lpBuffersOut,
DWORD dwFlags,
DWORD_PTR dwContext
);
BOOL InternetReadFileExW(
HINTERNET hFile,
LPINTERNET_BUFFERSW lpBuffersOut,
DWORD dwFlags,
DWORD_PTR dwContext
);
BOOL HttpQueryInfoA(
HINTERNET hRequest,
DWORD dwInfoLevel,
LPVOID lpBuffer,
LPDWORD lpdwBufferLength,
LPDWORD lpdwIndex
);
BOOL HttpQueryInfoW(
HINTERNET hRequest,
DWORD dwInfoLevel,
LPVOID lpBuffer,
LPDWORD lpdwBufferLength,
LPDWORD lpdwIndex
);
BOOL HttpSendRequestA(
HINTERNET hRequest,
LPCSTR lpszHeaders,
DWORD dwHeadersLength,
LPVOID lpOptional,
DWORD dwOptionalLength
);
BOOL HttpSendRequestW(
HINTERNET hRequest,
LPCWSTR lpszHeaders,
DWORD dwHeadersLength,
LPVOID lpOptional,
DWORD dwOptionalLength
);
/// WinHTTP
HINTERNET WinHttpOpen(
LPCWSTR pszAgentW,
DWORD dwAccessType,
LPCWSTR pszProxyW,
LPCWSTR pszProxyBypassW,
DWORD dwFlags
);
BOOL WinHttpCloseHandle(
HINTERNET hInternet
);
HINTERNET WinHttpConnect(
HINTERNET hSession,
LPCWSTR pswzServerName,
INTERNET_PORT nServerPort,
DWORD dwReserved
);
BOOL WinHttpQueryDataAvailable(
HINTERNET hRequest,
LPDWORD lpdwNumberOfBytesAvailable
);
BOOL WinHttpReadData(
HINTERNET hRequest,
LPVOID lpBuffer,
DWORD dwNumberOfBytesToRead,
LPDWORD lpdwNumberOfBytesRead
);
HINTERNET WinHttpOpenRequest(
HINTERNET hConnect,
LPCWSTR pwszVerb,
LPCWSTR pwszObjectName,
LPCWSTR pwszVersion,
LPCWSTR pwszReferrer,
LPCWSTR *ppwszAcceptTypes,
DWORD dwFlags
);
BOOL WinHttpSendRequest(
HINTERNET hRequest,
LPCWSTR lpszHeaders,
DWORD dwHeadersLength,
LPVOID lpOptional,
DWORD dwOptionalLength,
DWORD dwTotalLength,
DWORD_PTR dwContext
);
BOOL WinHttpReceiveResponse(
HINTERNET hRequest,
LPVOID lpReserved
);
BOOL WinHttpAddRequestHeaders(
HINTERNET hRequest,
LPCWSTR lpszHeaders,
DWORD dwHeadersLength,
DWORD dwModifiers
);
BOOL WinHttpQueryHeaders(
HINTERNET hRequest,
DWORD dwInfoLevel,
LPCWSTR pwszName,
LPVOID lpBuffer,
LPDWORD lpdwBufferLength,
LPDWORD lpdwIndex
);
@@ -0,0 +1,51 @@
BOOL GetOverlappedResult(
[in] HANDLE hFile,
[in] LPOVERLAPPED lpOverlapped,
[out] LPDWORD lpNumberOfBytesTransferred,
[in] BOOL bWait
);
HANDLE CreateIoCompletionPort(
[in] HANDLE FileHandle,
[in, optional] HANDLE ExistingCompletionPort,
[in] ULONG_PTR CompletionKey,
[in] DWORD NumberOfConcurrentThreads
);
BOOL GetQueuedCompletionStatus(
[in] HANDLE CompletionPort,
LPDWORD lpNumberOfBytesTransferred,
[out] PULONG_PTR lpCompletionKey,
[out] LPOVERLAPPED *lpOverlapped,
[in] DWORD dwMilliseconds
);
BOOL GetQueuedCompletionStatusEx(
[in] HANDLE CompletionPort,
[out] LPOVERLAPPED_ENTRY lpCompletionPortEntries,
[in] ULONG ulCount,
[out] PULONG ulNumEntriesRemoved,
[in] DWORD dwMilliseconds,
[in] BOOL fAlertable
);
BOOL PostQueuedCompletionStatus(
[in] HANDLE CompletionPort,
[in] DWORD dwNumberOfBytesTransferred,
[in] ULONG_PTR dwCompletionKey,
[in, optional] LPOVERLAPPED lpOverlapped
);
BOOL CancelIo(
[in] HANDLE hFile
);
BOOL CancelIoEx(
[in] HANDLE hFile,
[in, optional] LPOVERLAPPED lpOverlapped
);
BOOL CancelSynchronousIo(
[in] HANDLE hThread
);
@@ -0,0 +1,18 @@
HANDLE OpenFileMappingW(
DWORD dwDesiredAccess,
BOOL bInheritHandle,
LPCWSTR lpName
);
HANDLE OpenFileMappingA(
DWORD dwDesiredAccess,
BOOL bInheritHandle,
LPCSTR lpName
);
BOOL UnmapViewOfFile(
LPCVOID lpBaseAddress
);
@@ -0,0 +1,81 @@
NET_API_STATUS NetQueryDisplayInformation(
[in] LPCWSTR ServerName,
[in] DWORD Level,
[in] DWORD Index,
[in] DWORD EntriesRequested,
[in] DWORD PreferredMaximumLength,
[out] LPDWORD ReturnedEntryCount,
[out] PVOID *SortedBuffer
);
NET_API_STATUS NetUserEnum(
[in] LPCWSTR servername,
[in] DWORD level,
[in] DWORD filter,
[out] LPBYTE *bufptr,
[in] DWORD prefmaxlen,
[out] LPDWORD entriesread,
[out] LPDWORD totalentries,
[in, out] PDWORD resume_handle
);
NET_API_STATUS NetGroupEnum(
[in] LPCWSTR servername,
[in] DWORD level,
[out] LPBYTE *bufptr,
[in] DWORD prefmaxlen,
[out] LPDWORD entriesread,
[out] LPDWORD totalentries,
[in, out] PDWORD_PTR resume_handle
);
NET_API_STATUS NetGroupGetInfo(
[in] LPCWSTR servername,
[in] LPCWSTR groupname,
[in] DWORD level,
[out] LPBYTE *bufptr
);
NET_API_STATUS NetGroupGetUsers(
[in] LPCWSTR servername,
[in] LPCWSTR groupname,
[in] DWORD level,
[out] LPBYTE *bufptr,
[in] DWORD prefmaxlen,
[out] LPDWORD entriesread,
[out] LPDWORD totalentries,
[in, out] PDWORD_PTR ResumeHandle
);
NET_API_STATUS NetLocalGroupEnum(
[in] LPCWSTR servername,
[in] DWORD level,
[out] LPBYTE *bufptr,
[in] DWORD prefmaxlen,
[out] LPDWORD entriesread,
[out] LPDWORD totalentries,
[in, out] PDWORD_PTR resumehandle
);
NET_API_STATUS NetLocalGroupGetMembers(
[in] LPCWSTR servername,
[in] LPCWSTR localgroupname,
[in] DWORD level,
[out] LPBYTE *bufptr,
[in] DWORD prefmaxlen,
[out] LPDWORD entriesread,
[out] LPDWORD totalentries,
[in, out] PDWORD_PTR resumehandle
);
NET_API_STATUS NetLocalGroupGetInfo(
[in] LPCWSTR servername,
[in] LPCWSTR groupname,
[in] DWORD level,
[out] LPBYTE *bufptr
);
NET_API_STATUS NetApiBufferFree(
[in] LPVOID Buffer
);
@@ -0,0 +1,5 @@
ULONG GetIpNetTable(
PMIB_IPNETTABLE IpNetTable,
PULONG SizePointer,
BOOL Order
);
@@ -59,4 +59,22 @@ DNS_STATUS DnsQuery_W(
// PVOID pExtra,
// PDNS_RECORD *ppQueryResults,
// PVOID *pReserved
// );
// );
DNS_STATUS DnsQueryEx(
PDNS_QUERY_REQUEST pQueryRequest,
PDNS_QUERY_RESULT pQueryResults,
PDNS_QUERY_CANCEL pCancelHandle
);
ULONG GetAdaptersInfo(
[out] PIP_ADAPTER_INFO AdapterInfo,
[in, out] PULONG SizePointer
);
DWORD GetPerAdapterInfo(
[in] ULONG IfIndex,
[out] PIP_PER_ADAPTER_INFO pPerAdapterInfo,
[in] PULONG pOutBufLen
);
@@ -0,0 +1,85 @@
HANDLE WINAPI CreateToolhelp32Snapshot(
_In_ DWORD dwFlags,
_In_ DWORD th32ProcessID
);
BOOL WINAPI Thread32First(
_In_ HANDLE hSnapshot,
_Inout_ LPTHREADENTRY32 lpte
);
BOOL WINAPI Thread32Next(
_In_ HANDLE hSnapshot,
_Out_ LPTHREADENTRY32 lpte
);
BOOL WINAPI Process32First(
_In_ HANDLE hSnapshot,
_Inout_ LPPROCESSENTRY32 lppe
);
BOOL WINAPI Process32Next(
_In_ HANDLE hSnapshot,
_Out_ LPPROCESSENTRY32 lppe
);
BOOL Process32FirstW(
HANDLE hSnapshot,
LPPROCESSENTRY32W lppe
);
BOOL Process32NextW(
HANDLE hSnapshot,
LPPROCESSENTRY32W lppe
);
FARPROC WINAPI GetProcAddress(
_In_ HMODULE hModule,
_In_ LPCSTR lpProcName
);
HMODULE WINAPI LoadLibraryA(
__in LPCSTR lpFileName
);
HMODULE WINAPI LoadLibraryW(
__in LPCWSTR lpFileName
);
HMODULE LoadLibraryExA(
LPCSTR lpLibFileName,
HANDLE hFile,
DWORD dwFlags
);
HMODULE LoadLibraryExW(
LPCWSTR lpLibFileName,
HANDLE hFile,
DWORD dwFlags
);
BOOL FreeLibrary(
HMODULE hLibModule
);
BOOL GetProcessInformation(
[in] HANDLE hProcess,
[in] PROCESS_INFORMATION_CLASS ProcessInformationClass,
LPVOID ProcessInformation,
[in] DWORD ProcessInformationSize
);
BOOL SetProcessInformation(
[in] HANDLE hProcess,
[in] PROCESS_INFORMATION_CLASS ProcessInformationClass,
LPVOID ProcessInformation,
[in] DWORD ProcessInformationSize
);
/* Not documented by seems present since dawn of time (WRK)
I Prefere PVOID as a return value to allow simple cast to PEB subclass in process.py*/
PVOID RtlGetCurrentPeb ();
@@ -253,4 +253,57 @@ LSTATUS RegDeleteTreeA(
LSTATUS RegDeleteTreeW(
HKEY hKey,
LPCWSTR lpSubKey
);
LSTATUS RegSaveKeyA(
HKEY hKey,
LPCSTR lpFile,
LPSECURITY_ATTRIBUTES lpSecurityAttributes
);
LSTATUS RegSaveKeyW(
HKEY hKey,
LPCWSTR lpFile,
LPSECURITY_ATTRIBUTES lpSecurityAttributes
);
LSTATUS RegSaveKeyExA(
HKEY hKey,
LPCSTR lpFile,
LPSECURITY_ATTRIBUTES lpSecurityAttributes,
DWORD Flags
);
LSTATUS RegSaveKeyExW(
HKEY hKey,
LPCWSTR lpFile,
LPSECURITY_ATTRIBUTES lpSecurityAttributes,
DWORD Flags
);
LSTATUS RegLoadKeyA(
[in] HKEY hKey,
[in, optional] LPCSTR lpSubKey,
[in] LPCSTR lpFile
);
LSTATUS RegLoadKeyW(
[in] HKEY hKey,
[in, optional] LPCWSTR lpSubKey,
[in] LPCWSTR lpFile
);
LSTATUS RegUnLoadKeyA(
[in] HKEY hKey,
[in, optional] LPCSTR lpSubKey
);
LSTATUS RegUnLoadKeyW(
[in] HKEY hKey,
[in, optional] LPCWSTR lpSubKey
);
@@ -71,6 +71,11 @@ BOOL WINAPI GetSecurityDescriptorOwner(
_Out_ LPBOOL lpbOwnerDefaulted
);
BOOL WINAPI SetSecurityDescriptorOwner(
[in, out] PSECURITY_DESCRIPTOR pSecurityDescriptor,
[in, optional] PSID pOwner,
[in] BOOL bOwnerDefaulted
);
DWORD WINAPI GetSecurityDescriptorRMControl(
_In_ PSECURITY_DESCRIPTOR SecurityDescriptor,
@@ -307,4 +312,25 @@ DWORD BuildSecurityDescriptorW(
PSECURITY_DESCRIPTOR pOldSD,
PULONG pSizeNewSD,
PSECURITY_DESCRIPTOR *pNewSD
);
BOOL WINAPI MakeAbsoluteSD(
[in] PSECURITY_DESCRIPTOR pSelfRelativeSecurityDescriptor,
[out, optional] PSECURITY_DESCRIPTOR pAbsoluteSecurityDescriptor,
[in, out] LPDWORD lpdwAbsoluteSecurityDescriptorSize,
[out, optional] PACL pDacl,
[in, out] LPDWORD lpdwDaclSize,
[out, optional] PACL pSacl,
[in, out] LPDWORD lpdwSaclSize,
[out, optional] PSID pOwner,
[in, out] LPDWORD lpdwOwnerSize,
[out, optional] PSID pPrimaryGroup,
[in, out] LPDWORD lpdwPrimaryGroupSize
);
BOOL WINAPI MakeSelfRelativeSD(
[in] PSECURITY_DESCRIPTOR pAbsoluteSecurityDescriptor,
[out, optional] PSECURITY_DESCRIPTOR pSelfRelativeSecurityDescriptor,
[in, out] LPDWORD lpdwBufferLength
);
@@ -67,11 +67,6 @@ SC_HANDLE WINAPI OpenServiceW(
_In_ DWORD dwDesiredAccess
);
BOOL ControlService(
SC_HANDLE hService,
DWORD dwControl,
LPSERVICE_STATUS lpServiceStatus
);
BOOL QueryServiceStatus(
SC_HANDLE hService,
@@ -264,4 +259,46 @@ SC_HANDLE CreateServiceW(
BOOL DeleteService(
SC_HANDLE hService
);
BOOL StartServiceCtrlDispatcherA(
SERVICE_TABLE_ENTRYA *lpServiceStartTable
);
BOOL StartServiceCtrlDispatcherW(
SERVICE_TABLE_ENTRYW *lpServiceStartTable
);
SERVICE_STATUS_HANDLE RegisterServiceCtrlHandlerExA(
[in] LPCSTR lpServiceName,
[in] LPHANDLER_FUNCTION_EX lpHandlerProc,
[in, optional] LPVOID lpContext
);
SERVICE_STATUS_HANDLE RegisterServiceCtrlHandlerExW(
[in] LPCWSTR lpServiceName,
[in] LPHANDLER_FUNCTION_EX lpHandlerProc,
[in, optional] LPVOID lpContext
);
SERVICE_STATUS_HANDLE RegisterServiceCtrlHandlerA(
[in] LPCSTR lpServiceName,
[in] LPHANDLER_FUNCTION lpHandlerProc
);
SERVICE_STATUS_HANDLE RegisterServiceCtrlHandlerW(
[in] LPCWSTR lpServiceName,
[in] LPHANDLER_FUNCTION lpHandlerProc
);
BOOL SetServiceStatus(
[in] SERVICE_STATUS_HANDLE hServiceStatus,
[in] LPSERVICE_STATUS lpServiceStatus
);
BOOL SetServiceBits(
[in] SERVICE_STATUS_HANDLE hServiceStatus,
[in] DWORD dwServiceBits,
[in] BOOL bSetBitsOn,
[in] BOOL bUpdateImmediately
);
@@ -26,4 +26,8 @@ BOOL SHGetPathFromIDListA(
BOOL SHGetPathFromIDListW(
PCIDLIST_ABSOLUTE pidl,
LPWSTR pszPath
);
INT SHFileOperationA(
LPSHFILEOPSTRUCTA lpFileOp
);
@@ -29,6 +29,13 @@ BOOL WINAPI SymFromAddr(
_Inout_ PSYMBOL_INFO Symbol
);
BOOL WINAPI SymFromAddrW(
[in] HANDLE hProcess,
[in] DWORD64 Address,
[out, optional] PDWORD64 Displacement,
[in, out] PSYMBOL_INFOW Symbol
);
BOOL WINAPI SymGetModuleInfo64(
_In_ HANDLE hProcess,
@@ -48,6 +55,12 @@ BOOL WINAPI SymInitialize(
_In_ BOOL fInvadeProcess
);
BOOL WINAPI SymInitializeW(
[in] HANDLE hProcess,
[in, optional] PCWSTR UserSearchPath,
[in] BOOL fInvadeProcess
);
BOOL WINAPI SymFromName(
_In_ HANDLE hProcess,
_In_ LPCSTR Name,
@@ -96,20 +109,6 @@ BOOL WINAPI SymEnumSymbolsEx(
_In_ DWORD Options
);
BOOL WINAPI SymEnumTypes(
_In_ HANDLE hProcess,
_In_ ULONG64 BaseOfDll,
_In_ PVOID EnumSymbolsCallback,
_In_ PVOID UserContext
);
BOOL WINAPI SymEnumTypesByName(
_In_ HANDLE hProcess,
_In_ ULONG64 BaseOfDll,
_In_ PCSTR mask,
_In_ PVOID EnumSymbolsCallback,
_In_ PVOID UserContext
);
BOOL WINAPI SymEnumerateModules64(
_In_ HANDLE hProcess,
@@ -117,6 +116,12 @@ BOOL WINAPI SymEnumerateModules64(
_In_ PVOID UserContext
);
BOOL WINAPI SymEnumerateModulesW64(
[in] HANDLE hProcess,
[in] PSYM_ENUMMODULES_CALLBACKW64 EnumModulesCallback,
[in, optional] PVOID UserContext
);
BOOL SymNext(
HANDLE hProcess,
PSYMBOL_INFO si
@@ -266,6 +271,13 @@ BOOL WINAPI SymGetTypeFromName(
_Inout_ PSYMBOL_INFO Symbol
);
BOOL WINAPI SymGetTypeFromNameW(
[in] HANDLE hProcess,
[in] ULONG64 BaseOfDll,
[in] PCWSTR Name,
[in, out] PSYMBOL_INFOW Symbol
);
BOOL WINAPI SymGetTypeInfo(
_In_ HANDLE hProcess,
@@ -404,4 +416,35 @@ BOOL SymSetSearchPath(
BOOL SymSetSearchPathW(
HANDLE hProcess,
PCWSTR SearchPath
);
BOOL SymEnumTypes(
[in] HANDLE hProcess,
[in] ULONG64 BaseOfDll,
[in] PSYM_ENUMERATESYMBOLS_CALLBACK EnumSymbolsCallback,
[in, optional] PVOID UserContext
);
BOOL SymEnumTypesW(
[in] HANDLE hProcess,
[in] ULONG64 BaseOfDll,
[in] PSYM_ENUMERATESYMBOLS_CALLBACKW EnumSymbolsCallback,
[in, optional] PVOID UserContext
);
BOOL SymEnumTypesByName(
[in] HANDLE hProcess,
[in] ULONG64 BaseOfDll,
[in, optional] PCSTR mask,
[in] PSYM_ENUMERATESYMBOLS_CALLBACK EnumSymbolsCallback,
[in] PVOID UserContext
);
BOOL SymEnumTypesByNameW(
[in] HANDLE hProcess,
[in] ULONG64 BaseOfDll,
[in, optional] PCWSTR mask,
[in] PSYM_ENUMERATESYMBOLS_CALLBACKW EnumSymbolsCallback,
[in] PVOID UserContext
);
@@ -0,0 +1,40 @@
HANDLE CreateEventA(
LPSECURITY_ATTRIBUTES lpEventAttributes,
BOOL bManualReset,
BOOL bInitialState,
LPCSTR lpName
);
HANDLE CreateEventW(
LPSECURITY_ATTRIBUTES lpEventAttributes,
BOOL bManualReset,
BOOL bInitialState,
LPCWSTR lpName
);
HANDLE CreateEventExA(
LPSECURITY_ATTRIBUTES lpEventAttributes,
LPCSTR lpName,
DWORD dwFlags,
DWORD dwDesiredAccess
);
HANDLE CreateEventExW(
LPSECURITY_ATTRIBUTES lpEventAttributes,
LPCWSTR lpName,
DWORD dwFlags,
DWORD dwDesiredAccess
);
HANDLE WINAPI OpenEventA(
__in DWORD dwDesiredAccess,
__in BOOL bInheritHandle,
__in LPCSTR lpName
);
HANDLE WINAPI OpenEventW(
__in DWORD dwDesiredAccess,
__in BOOL bInheritHandle,
__in LPCWSTR lpName
);
@@ -182,6 +182,16 @@ NTSTATUS WINAPI NtQuerySystemInformation(
);
NTSTATUS WINAPI NtQuerySystemInformationEx(
_In_ SYSTEM_INFORMATION_CLASS SystemInformationClass,
_In_reads_bytes_(InputBufferLength) PVOID InputBuffer,
_In_ ULONG InputBufferLength,
_Out_writes_bytes_opt_(SystemInformationLength) PVOID SystemInformation,
_In_ ULONG SystemInformationLength,
_Out_opt_ PULONG ReturnLength
);
NTSTATUS WINAPI NtQueryInformationProcess(
_In_ HANDLE ProcessHandle,
_In_ PROCESSINFOCLASS ProcessInformationClass,
@@ -304,19 +314,6 @@ NTSTATUS WINAPI NtFreeVirtualMemory(
);
NTSTATUS WINAPI NtGetContextThread(
__in HANDLE hThread,
__inout LPCONTEXT lpContext
);
NTSTATUS WINAPI NtSetContextThread(
__in HANDLE hThread,
__in CONST LPCONTEXT lpContext
);
NTSTATUS NtCreateSection(
PHANDLE SectionHandle,
ACCESS_MASK DesiredAccess,
@@ -351,3 +348,47 @@ NTSTATUS NtUnmapViewOfSection(
PVOID BaseAddress
);
NTSTATUS NtOpenProcess(
PHANDLE ProcessHandle,
ACCESS_MASK DesiredAccess,
POBJECT_ATTRIBUTES ObjectAttributes,
PCLIENT_ID ClientId
);
NTSTATUS WINAPI NtDelayExecution(
_In_ BOOLEAN Alertable,
_In_opt_ PLARGE_INTEGER DelayInterval
);
NTSTATUS NtTerminateProcess(
HANDLE ProcessHandle,
NTSTATUS ExitStatus
);
NTSTATUS NtReadFile(
_In_ HANDLE FileHandle,
_In_opt_ HANDLE Event,
_In_opt_ PIO_APC_ROUTINE ApcRoutine,
_In_opt_ PVOID ApcContext,
_Out_ PIO_STATUS_BLOCK IoStatusBlock,
_Out_ PVOID Buffer,
_In_ ULONG Length,
_In_opt_ PLARGE_INTEGER ByteOffset,
_In_opt_ PULONG Key
);
NTSTATUS NtWriteFile(
[in] HANDLE FileHandle,
[in, optional] HANDLE Event,
[in, optional] PIO_APC_ROUTINE ApcRoutine,
[in, optional] PVOID ApcContext,
[out] PIO_STATUS_BLOCK IoStatusBlock,
[in] PVOID Buffer,
[in] ULONG Length,
[in, optional] PLARGE_INTEGER ByteOffset,
[in, optional] PULONG Key
);
@@ -0,0 +1,70 @@
BOOL GetComputerNameExA(
[in] COMPUTER_NAME_FORMAT NameType,
[out] LPSTR lpBuffer,
[in, out] LPDWORD nSize
);
BOOL GetComputerNameExW(
[in] COMPUTER_NAME_FORMAT NameType,
[out] LPWSTR lpBuffer,
[in, out] LPDWORD nSize
);
BOOL WINAPI GetComputerNameA(
_Out_ LPCSTR lpBuffer,
_Inout_ LPDWORD lpnSize
);
BOOL WINAPI GetComputerNameW(
_Out_ LPWSTR lpBuffer,
_Inout_ LPDWORD lpnSize
);
BOOL WINAPI LookupAccountSidA(
_In_opt_ LPCSTR lpSystemName,
_In_ PSID lpSid,
_Out_opt_ LPCSTR lpName,
_Inout_ LPDWORD cchName,
_Out_opt_ LPCSTR lpReferencedDomainName,
_Inout_ LPDWORD cchReferencedDomainName,
_Out_ PSID_NAME_USE peUse
);
BOOL WINAPI LookupAccountSidW(
_In_opt_ LPWSTR lpSystemName,
_In_ PSID lpSid,
_Out_opt_ LPWSTR lpName,
_Inout_ LPDWORD cchName,
_Out_opt_ LPWSTR lpReferencedDomainName,
_Inout_ LPDWORD cchReferencedDomainName,
_Out_ PSID_NAME_USE peUse
);
BOOL LookupAccountNameA(
LPCSTR lpSystemName,
LPCSTR lpAccountName,
PSID Sid,
LPDWORD cbSid,
LPSTR ReferencedDomainName,
LPDWORD cchReferencedDomainName,
PSID_NAME_USE peUse
);
BOOL LookupAccountNameW(
LPCWSTR lpSystemName,
LPCWSTR lpAccountName,
PSID Sid,
LPDWORD cbSid,
LPWSTR ReferencedDomainName,
LPDWORD cchReferencedDomainName,
PSID_NAME_USE peUse
);
PVOID GetNativeSystemInfo(
[out] LPSYSTEM_INFO lpSystemInfo
);
PVOID GetSystemInfo(
[out] LPSYSTEM_INFO lpSystemInfo
);
@@ -0,0 +1,83 @@
BOOL IsWow64Process(
[in] HANDLE hProcess,
[out] PBOOL Wow64Process
);
BOOL IsWow64Process2(
[in] HANDLE hProcess,
[out] USHORT *pProcessMachine,
[out, optional] USHORT *pNativeMachine
);
HRESULT IsWow64GuestMachineSupported(
[in] USHORT WowGuestMachine,
[out] BOOL *MachineIsSupported
);
UINT GetSystemWow64DirectoryA(
[out] LPSTR lpBuffer,
[in] UINT uSize
);
UINT GetSystemWow64DirectoryW(
[out] LPWSTR lpBuffer,
[in] UINT uSize
);
UINT GetSystemWow64Directory2A(
[out] LPSTR lpBuffer,
[in] UINT uSize,
[in] WORD ImageFileMachineType
);
UINT GetSystemWow64Directory2W(
[out] LPWSTR lpBuffer,
[in] UINT uSize,
[in] WORD ImageFileMachineType
);
BOOL Wow64DisableWow64FsRedirection(
[out] PVOID *OldValue
);
BOOLEAN Wow64EnableWow64FsRedirection(
BOOLEAN Wow64FsEnableRedirection
);
BOOL Wow64RevertWow64FsRedirection(
[in] PVOID OlValue
);
BOOL Wow64GetThreadContext(
HANDLE hThread,
PWOW64_CONTEXT lpContext
);
BOOL Wow64SetThreadContext(
HANDLE hThread,
WOW64_CONTEXT *lpContext
);
USHORT Wow64SetThreadDefaultGuestMachine(
USHORT Machine
);
DWORD Wow64SuspendThread(
HANDLE hThread
);
NTSTATUS WINAPI NtWow64ReadVirtualMemory64(
_In_ HANDLE hProcess,
_In_ ULONG64 lpBaseAddress,
_Out_ LPVOID lpBuffer,
_In_ ULONG64 nSize,
_Out_ PULONG64 lpNumberOfBytesRead
);
NTSTATUS WINAPI NtWow64WriteVirtualMemory64(
_In_ HANDLE hProcess,
_In_ ULONG64 lpBaseAddress,
_Out_ LPVOID lpBuffer,
_In_ ULONG64 nSize,
_Out_ PULONG64 lpNumberOfBytesWritten
);
@@ -13,7 +13,22 @@ PVOID GetSystemTime(
LPSYSTEMTIME lpSystemTime
);
BOOL GetSystemTimes(
PFILETIME lpIdleTime,
PFILETIME lpKernelTime,
PFILETIME lpUserTime
);
// void
PVOID GetSystemTimeAsFileTime(
LPFILETIME lpSystemTimeAsFileTime
);
);
// void
PVOID GetLocalTime(
LPSYSTEMTIME lpSystemTime
);
DWORD GetTickCount();
ULONGLONG GetTickCount64();
@@ -9,30 +9,6 @@ BOOL WINAPI TerminateProcess(
DWORD WINAPI GetLastError();
HANDLE WINAPI GetCurrentProcess();
HANDLE WINAPI CreateFileA(
__in LPCSTR lpFileName,
__in DWORD dwDesiredAccess,
__in DWORD dwShareMode,
__in_opt LPSECURITY_ATTRIBUTES lpSecurityAttributes,
__in DWORD dwCreationDisposition,
__in DWORD dwFlagsAndAttributes,
__in_opt HANDLE hTemplateFile
);
HANDLE WINAPI CreateFileW(
__in LPCWSTR lpFileName,
__in DWORD dwDesiredAccess,
__in DWORD dwShareMode,
__in_opt LPSECURITY_ATTRIBUTES lpSecurityAttributes,
__in DWORD dwCreationDisposition,
__in DWORD dwFlagsAndAttributes,
__in_opt HANDLE hTemplateFile
);
/*
Flags is directly dereferenced if non-null on windows 10
Let's assert it's a PVOID for now on
@@ -174,11 +150,15 @@ HANDLE WINAPI CreateRemoteThread(
_Out_ LPDWORD lpThreadId
);
BOOL WINAPI VirtualProtect(
_In_ LPVOID lpAddress,
_In_ SIZE_T dwSize,
_In_ DWORD flNewProtect,
_Out_ PDWORD lpflOldProtect
HANDLE CreateRemoteThreadEx(
[in] HANDLE hProcess,
[in, optional] LPSECURITY_ATTRIBUTES lpThreadAttributes,
[in] SIZE_T dwStackSize,
[in] LPTHREAD_START_ROUTINE lpStartAddress,
[in, optional] LPVOID lpParameter,
[in] DWORD dwCreationFlags,
[in, optional] LPPROC_THREAD_ATTRIBUTE_LIST lpAttributeList,
[out, optional] LPDWORD lpThreadId
);
BOOL WINAPI CreateProcessA(
@@ -273,15 +253,6 @@ BOOL WINAPI ReadProcessMemory(
_Out_ SIZE_T *lpNumberOfBytesRead
);
NTSTATUS WINAPI NtWow64ReadVirtualMemory64(
_In_ HANDLE hProcess,
_In_ ULONG64 lpBaseAddress,
_Out_ LPVOID lpBuffer,
_In_ ULONG64 nSize,
_Out_ PULONG64 lpNumberOfBytesRead
);
BOOL WINAPI WriteProcessMemory(
@@ -293,87 +264,32 @@ BOOL WINAPI WriteProcessMemory(
);
NTSTATUS WINAPI NtWow64WriteVirtualMemory64(
_In_ HANDLE hProcess,
_In_ ULONG64 lpBaseAddress,
_Out_ LPVOID lpBuffer,
_In_ ULONG64 nSize,
_Out_ PULONG64 lpNumberOfBytesWritten
);
HANDLE WINAPI CreateToolhelp32Snapshot(
_In_ DWORD dwFlags,
_In_ DWORD th32ProcessID
);
HANDLE WINAPI GetCurrentProcess();
BOOL WINAPI Thread32First(
_In_ HANDLE hSnapshot,
_Inout_ LPTHREADENTRY32 lpte
);
HANDLE WINAPI CreateFileA(
__in LPCSTR lpFileName,
__in DWORD dwDesiredAccess,
__in DWORD dwShareMode,
__in_opt LPSECURITY_ATTRIBUTES lpSecurityAttributes,
__in DWORD dwCreationDisposition,
__in DWORD dwFlagsAndAttributes,
__in_opt HANDLE hTemplateFile
);
BOOL WINAPI Thread32Next(
_In_ HANDLE hSnapshot,
_Out_ LPTHREADENTRY32 lpte
);
HANDLE WINAPI CreateFileW(
__in LPCWSTR lpFileName,
__in DWORD dwDesiredAccess,
__in DWORD dwShareMode,
__in_opt LPSECURITY_ATTRIBUTES lpSecurityAttributes,
__in DWORD dwCreationDisposition,
__in DWORD dwFlagsAndAttributes,
__in_opt HANDLE hTemplateFile
);
BOOL WINAPI Process32First(
_In_ HANDLE hSnapshot,
_Inout_ LPPROCESSENTRY32 lppe
);
BOOL WINAPI Process32Next(
_In_ HANDLE hSnapshot,
_Out_ LPPROCESSENTRY32 lppe
);
BOOL Process32FirstW(
HANDLE hSnapshot,
LPPROCESSENTRY32W lppe
);
BOOL Process32NextW(
HANDLE hSnapshot,
LPPROCESSENTRY32W lppe
);
FARPROC WINAPI GetProcAddress(
_In_ HMODULE hModule,
_In_ LPCSTR lpProcName
);
HMODULE WINAPI LoadLibraryA(
__in LPCSTR lpFileName
);
HMODULE WINAPI LoadLibraryW(
__in LPCWSTR lpFileName
);
HMODULE LoadLibraryExA(
LPCSTR lpLibFileName,
HANDLE hFile,
DWORD dwFlags
);
HMODULE LoadLibraryExW(
LPCWSTR lpLibFileName,
HANDLE hFile,
DWORD dwFlags
);
BOOL FreeLibrary(
HMODULE hLibModule
);
BOOL WINAPI OpenProcessToken(
_In_ HANDLE ProcessHandle,
_In_ DWORD DesiredAccess,
_Out_ PHANDLE TokenHandle
);
BOOL WINAPI DuplicateToken(
_In_ HANDLE ExistingTokenHandle,
@@ -392,13 +308,6 @@ BOOL WINAPI DuplicateTokenEx(
);
BOOL WINAPI OpenThreadToken(
_In_ HANDLE ThreadHandle,
_In_ DWORD DesiredAccess,
_In_ BOOL OpenAsSelf,
_Out_ PHANDLE TokenHandle
);
BOOL WINAPI SetThreadToken(
_In_opt_ PHANDLE Thread,
_In_opt_ HANDLE Token
@@ -465,6 +374,37 @@ LPVOID WINAPI LockResource(
_In_ HGLOBAL hResData
);
BOOL FreeResource(
HGLOBAL hResData
);
BOOL EnumResourceTypesA(
HMODULE hModule,
ENUMRESTYPEPROCA lpEnumFunc,
LONG_PTR lParam
);
BOOL EnumResourceTypesW(
HMODULE hModule,
ENUMRESTYPEPROCW lpEnumFunc,
LONG_PTR lParam
);
BOOL EnumResourceNamesA(
HMODULE hModule,
LPCSTR lpType,
ENUMRESNAMEPROCA lpEnumFunc,
LONG_PTR lParam
);
BOOL EnumResourceNamesW(
HMODULE hModule,
LPCWSTR lpType,
ENUMRESNAMEPROCW lpEnumFunc,
LONG_PTR lParam
);
BOOL WINAPI GetVersionExA(
__inout LPOSVERSIONINFOA lpVersionInformation
);
@@ -485,6 +425,9 @@ BOOL AllocConsole();
BOOL FreeConsole();
UINT WINAPI GetConsoleOutputCP();
UINT WINAPI GetConsoleCP();
HANDLE WINAPI GetStdHandle(
_In_ DWORD nStdHandle
);
@@ -559,18 +502,6 @@ DWORD WINAPI GetThreadId(
_In_ HANDLE Thread
);
HMODULE WINAPI LoadLibraryExA(
_In_ LPCSTR lpFileName,
_Reserved_ HANDLE hFile,
_In_ DWORD dwFlags
);
HMODULE WINAPI LoadLibraryExW(
_In_ LPCWSTR lpFileName,
_Reserved_ HANDLE hFile,
_In_ DWORD dwFlags
);
BOOL WINAPI DeviceIoControl(
@@ -584,43 +515,12 @@ BOOL WINAPI DeviceIoControl(
_Inout_opt_ LPOVERLAPPED lpOverlapped
);
BOOL WINAPI GetTokenInformation(
_In_ HANDLE TokenHandle,
_In_ TOKEN_INFORMATION_CLASS TokenInformationClass,
_Out_opt_ LPVOID TokenInformation,
_In_ DWORD TokenInformationLength,
_Out_ PDWORD ReturnLength
);
BOOL WINAPI Wow64DisableWow64FsRedirection(
_Out_ PVOID *OldValue
);
BOOL WINAPI Wow64RevertWow64FsRedirection(
_In_ PVOID OldValue
);
BOOLEAN WINAPI Wow64EnableWow64FsRedirection(
_In_ BOOLEAN Wow64FsEnableRedirection
);
BOOL WINAPI Wow64GetThreadContext(
_In_ HANDLE hThread,
_Inout_ PWOW64_CONTEXT lpContext
);
BOOL WINAPI SetConsoleCtrlHandler(
_In_opt_ PHANDLER_ROUTINE HandlerRoutine,
_In_ BOOL Add
);
LONG WINAPI WinVerifyTrust(
_In_opt_ HWND hwnd,
_In_ GUID *pgActionID,
_Inout_ LPVOID pWVTData
);
HGLOBAL WINAPI GlobalAlloc(
_In_ UINT uFlags,
_In_ SIZE_T dwBytes
@@ -750,10 +650,6 @@ DWORD WINAPI GetProcessId(
_In_ HANDLE Process
);
BOOL WINAPI Wow64SetThreadContext(
__in HANDLE hThread,
__in CONST WOW64_CONTEXT *lpContext
);
DWORD WINAPI GetMappedFileNameW (
__in HANDLE hProcess,
@@ -795,6 +691,17 @@ NTSTATUS RtlDecompressBuffer(
PULONG FinalUncompressedSize
);
NTSTATUS RtlCompressBuffer(
USHORT CompressionFormatAndEngine,
PUCHAR UncompressedBuffer,
ULONG UncompressedBufferSize,
PUCHAR CompressedBuffer,
ULONG CompressedBufferSize,
ULONG UncompressedChunkSize,
PULONG FinalCompressedSize,
PVOID WorkSpace
);
NTSTATUS RtlDecompressBufferEx(
USHORT CompressionFormat,
PUCHAR UncompressedBuffer,
@@ -812,21 +719,12 @@ NTSTATUS RtlGetCompressionWorkSpaceSize(
);
HANDLE WINAPI OpenEventA(
__in DWORD dwDesiredAccess,
__in BOOL bInheritHandle,
__in LPCSTR lpName
VOID WINAPI RtlMoveMemory(
_Out_ PVOID Destination,
_In_ PVOID Source,
_In_ SIZE_T Length
);
HANDLE WINAPI OpenEventW(
__in DWORD dwDesiredAccess,
__in BOOL bInheritHandle,
__in LPCWSTR lpName
);
INT WINAPI lstrcmpA(
__in LPCSTR lpString1,
__in LPCSTR lpString2
@@ -1012,36 +910,6 @@ INT WINAPI GetSystemMetrics(
_In_ INT nIndex
);
BOOL WINAPI GetComputerNameA(
_Out_ LPCSTR lpBuffer,
_Inout_ LPDWORD lpnSize
);
BOOL WINAPI GetComputerNameW(
_Out_ LPWSTR lpBuffer,
_Inout_ LPDWORD lpnSize
);
BOOL WINAPI LookupAccountSidA(
_In_opt_ LPCSTR lpSystemName,
_In_ PSID lpSid,
_Out_opt_ LPCSTR lpName,
_Inout_ LPDWORD cchName,
_Out_opt_ LPCSTR lpReferencedDomainName,
_Inout_ LPDWORD cchReferencedDomainName,
_Out_ PSID_NAME_USE peUse
);
BOOL WINAPI LookupAccountSidW(
_In_opt_ LPWSTR lpSystemName,
_In_ PSID lpSid,
_Out_opt_ LPWSTR lpName,
_Inout_ LPDWORD cchName,
_Out_opt_ LPWSTR lpReferencedDomainName,
_Inout_ LPDWORD cchReferencedDomainName,
_Out_ PSID_NAME_USE peUse
);
DWORD WINAPI GetInterfaceInfo(
_Out_ PIP_INTERFACE_INFO pIfTable,
@@ -0,0 +1,81 @@
INT WSAStartup(
[in] WORD wVersionRequested,
[out] LPWSADATA lpWSAData // structure depends on 32 / 64 bits..
);
INT WSACleanup();
INT WSAGetLastError();
INT getaddrinfo(
[in, optional] PCSTR pNodeName,
[in, optional] PCSTR pServiceName,
[in, optional] ADDRINFOA *pHints,
[out] PADDRINFOA *ppResult
);
INT GetAddrInfoW(
[in, optional] PCWSTR pNodeName,
[in, optional] PCWSTR pServiceName,
[in, optional] ADDRINFOW *pHints,
[out] PADDRINFOW *ppResult
);
SOCKET WSASocketA(
[in] INT af,
[in] INT type,
[in] INT protocol,
[in] LPWSAPROTOCOL_INFOA lpProtocolInfo,
[in] GROUP g,
[in] DWORD dwFlags
);
SOCKET WSASocketW(
[in] INT af,
[in] INT type,
[in] INT protocol,
[in] LPWSAPROTOCOL_INFOW lpProtocolInfo,
[in] GROUP g,
[in] DWORD dwFlags
);
SOCKET socket(
[in] INT af,
[in] INT type,
[in] INT protocol
);
INT connect(
[in] SOCKET s,
[in] sockaddr *name,
[in] INT namelen
);
INT send(
[in] SOCKET s,
[in] CHAR *buf,
[in] INT len,
[in] INT flags
);
INT recv(
[in] SOCKET s,
[out] CHAR *buf,
[in] INT len,
[in] INT flags
);
INT shutdown(
[in] SOCKET s,
[in] INT how
);
INT closesocket(
[in] SOCKET s
);
File diff suppressed because it is too large Load Diff
+44 -7
View File
@@ -9,17 +9,20 @@ NTSTATUS = DWORD
TDHSTATUS = ULONG
DNS_STATUS = ULONG
LSTATUS = LONG # Registry functions return value | typedef _Return_type_success_(return==ERROR_SUCCESS) LONG LSTATUS;
SECURITY_INFORMATION = DWORD
PSECURITY_INFORMATION = POINTER(SECURITY_INFORMATION)
PULONG = POINTER(ULONG)
PDWORD = POINTER(DWORD)
LPDWORD = POINTER(DWORD)
LPBYTE = POINTER(BYTE)
ULONG_PTR = PVOID
PULONG_PTR = POINTER(ULONG_PTR)
LONG_PTR = PVOID
DWORD_PTR = ULONG_PTR
PDWORD_PTR = POINTER(DWORD_PTR)
KAFFINITY = ULONG_PTR
KPRIORITY = LONG
INTERNET_PORT = WORD
CHAR = c_char
PCHAR = POINTER(CHAR)
@@ -37,6 +40,7 @@ LPCH = c_char_p
LPWCH = c_wchar
BSTR = c_wchar_p
OLECHAR = c_wchar
SNB = POINTER(POINTER(OLECHAR))
POLECHAR = c_wchar_p
PZZWSTR = c_wchar_p
PUCHAR = POINTER(UCHAR)
@@ -63,8 +67,6 @@ PULONG64 = POINTER(ULONG64)
PBYTE = POINTER(BYTE)
PUINT = POINTER(UINT)
PHKEY = POINTER(HKEY)
ACCESS_MASK = DWORD
REGSAM = ACCESS_MASK
PBOOLEAN = POINTER(BOOLEAN)
SECURITY_CONTEXT_TRACKING_MODE = BOOLEAN
HCRYPTPROV_LEGACY = PULONG
@@ -75,15 +77,21 @@ ALG_ID = UINT
DISPID = LONG
MEMBERID = DISPID
LRESULT = LONG_PTR
LPUNKNOWN = POINTER(PVOID)
LPUNKNOWN = PVOID
LPPOINT = POINTER(POINT)
LPRECT = POINTER(RECT)
SPC_UUID = BYTE * 16
DEVICE_TYPE = DWORD
PWINDBG_EXTENSION_APIS32 = PVOID
PWINDBG_EXTENSION_APIS64 = PVOID
FILEOP_FLAGS = WORD
NET_API_STATUS = DWORD
// 2 custom PFW defintions for bitness-forces structures
PVOID32 = DWORD
PVOID64 = DWORD64
NCRYPT_HANDLE = ULONG_PTR
NCRYPT_PROV_HANDLE = ULONG_PTR
NCRYPT_KEY_HANDLE = ULONG_PTR
@@ -113,7 +121,6 @@ INT64 = LONGLONG
UINT8 = BYTE
UINT16 = USHORT
UINT32 = UINT
UINT64 = ULONGLONG
/* LONG sized (lol..) */
ULONG32 = UINT32
@@ -139,6 +146,7 @@ PLSA_HANDLE = POINTER(LSA_HANDLE)
HDSKSPC = HANDLE
// Define type for reference to device information set
HDEVINFO = HANDLE
HINTERNET = PVOID
/* Network */
@@ -154,6 +162,8 @@ PSECURITY_DESCRIPTOR_CONTROL = POINTER(SECURITY_DESCRIPTOR_CONTROL)
ACCESS_MASK = DWORD
PACCESS_MASK = POINTER(ACCESS_MASK)
REGSAM = ACCESS_MASK
SECURITY_INFORMATION = DWORD
PSECURITY_INFORMATION = POINTER(SECURITY_INFORMATION)
PSECURITY_ATTRIBUTES_OPAQUE = PVOID
@@ -199,6 +209,21 @@ RPCOLEDATAREP = ULONG
HREFTYPE = DWORD
SFGAOF = ULONG
ID = ULONG64
MID = ID // Machine Identifier
OXID = ID // Object Exporter Identifier
OID = ID // Object Identifer
SETID = ID // Ping Set Identifier
// Interface pointer definition
LPSTREAM = PVOID # Istream*
/* SOCKET STUFF */
GROUP = UINT
SOCKET = HANDLE
/* Function PTR */
WNDPROC = PVOID
@@ -229,6 +254,17 @@ PTRANSLATE_ADDRESS_ROUTINE64 = PVOID # StackWalk
PSYMBOL_REGISTERED_CALLBACK64 = PVOID # Symbols
PSYMBOL_REGISTERED_CALLBACK = PVOID # Symbols
PSYM_ENUMPROCESSES_CALLBACK = PVOID # Symbols
PSYM_ENUMMODULES_CALLBACKW64 = PVOID # Symbols
ENUMRESNAMEPROCA = PVOID # Resources
ENUMRESNAMEPROCW = PVOID # Resources
ENUMRESTYPEPROCA = PVOID # Resources
ENUMRESTYPEPROCW = PVOID # Resources
LPSERVICE_MAIN_FUNCTIONA = PVOID
LPSERVICE_MAIN_FUNCTIONW = PVOID
LPOVERLAPPED_COMPLETION_ROUTINE = PVOID
PDNS_QUERY_COMPLETION_ROUTINE = PVOID
LPHANDLER_FUNCTION = PVOID
LPHANDLER_FUNCTION_EX = PVOID
// Will be changed at import time
@@ -237,4 +273,5 @@ LPCONTEXT = PVOID
HCERTSTORE = PVOID
HCRYPTMSG = PVOID
PALPC_PORT_ATTRIBUTES = PVOID
PPORT_MESSAGE = PVOID
PPORT_MESSAGE = PVOID
LPWSADATA = PVOID
@@ -63,16 +63,16 @@ typedef union _PORT_MESSAGE32_TMP_UNION
{
ULONG ClientViewSize;
ULONG CallbackId;
} PORT_MESSAGE_TMP_UNION;
} PORT_MESSAGE32_TMP_UNION;
typedef union _PORT_MESSAGE64_TMP_UNION
{
ULONGLONG ClientViewSize;
ULONG CallbackId;
} PORT_MESSAGE_TMP_UNION;
} PORT_MESSAGE64_TMP_UNION;
typedef struct _PORT_MESSAGE_TMP_SUBSTRUCT_S1
typedef struct
{
CSHORT DataLength;
CSHORT TotalLength;
@@ -291,38 +291,6 @@ typedef struct _REMOTE_PORT_VIEW {
PVOID ViewBase;
} REMOTE_PORT_VIEW, *PREMOTE_PORT_VIEW;
typedef struct tagCOMVERSION
{
USHORT MajorVersion;
USHORT MinorVersion;
} COMVERSION;
typedef struct tagORPCTHIS {
COMVERSION version;
ULONG flags;
ULONG reserved1;
GUID cid;
PVOID extensions; // [unique] ORPC_EXTENT_ARRAY *extensions;
} ORPCTHIS;
typedef struct __MIDL_XmitDefs_0001 {
GUID asyncOperationId;
ULONG64 oxidClientProcessNA;
GUID originalClientLogicalThreadId;
ULONG64 uClientCausalityTraceId;
} MIDL_XmitDefs_0001;
typedef struct _LOCALTHIS {
DWORD dwFlags;
DWORD dwClientThread;
GUID passthroughTraceActivity;
GUID callTraceActivity;
MIDL_XmitDefs_0001 asyncRequestBlock;
DWORD reserved;
PVOID pTouchedAstaArray; // Ptr32 __MIDL_XmitDefs_0002
} LOCALTHIS;
@@ -193,25 +193,12 @@ typedef struct CS_Resource_s {
CS_DES CS_Header;
} CS_RESOURCE, *PCS_RESOURCE;
typedef struct DMA_Des_s {
DWORD DD_Count;
DWORD DD_Type;
DWORD DD_Flags;
ULONG DD_Alloc_Chan;
} DMA_DES, *PDMA_DES;
typedef struct DMA_Resource_s {
DMA_DES DMA_Header;
DMA_RANGE DMA_Data[ANYSIZE_ARRAY];
} DMA_RESOURCE, *PDMA_RESOURCE;
typedef struct IO_Des_s {
DWORD IOD_Count;
DWORD IOD_Type;
DWORDLONG IOD_Alloc_Base;
DWORDLONG IOD_Alloc_End;
DWORD IOD_DesFlags;
} IO_DES, *PIO_DES;
typedef struct IO_Resource_s {
IO_DES IO_Header;
@@ -99,7 +99,7 @@ typedef struct tagSAFEARRAY
ULONG cLocks;
PVOID pvData;
SAFEARRAYBOUND rgsabound[ 1 ];
} SAFEARRAY;
} SAFEARRAY, *LPSAFEARRAY;
typedef struct __tagBRECORD {
PVOID pvRecord;
@@ -153,10 +153,3 @@ typedef struct __tagVARIANT {
_ANON_TMP_variant_sub_union _VARIANT_NAME_3;
} _tagVARIANT, VARIANT, VARIANTARG, *LPVARIANT, *LPVARIANTARG;
typedef enum tagCOMSD {
SD_LAUNCHPERMISSIONS = 0,
SD_ACCESSPERMISSIONS = 1,
SD_LAUNCHRESTRICTIONS = 2,
SD_ACCESSRESTRICTIONS = 3
} COMSD;

Some files were not shown because too many files have changed in this diff Show More