Compare commits

..

373 Commits

Author SHA1 Message Date
hakril 8d33e0143f Updated online documentation for 0.6 2020-07-16 23:48:22 +02:00
hakril 7a368a1a23 Updated version to 0.6 - Py3 supported ! 2020-07-16 23:43:23 +02:00
hakril 8e257f9678 Added some code resulting from exploration in COM/remote ctypes 2020-07-16 23:37:41 +02:00
hakril 34254dfde2 Improving NDR packing for some easy to fix corner cases 2020-07-16 23:35:05 +02:00
hakril 0f49dff128 Added some docstrings 2020-07-16 23:33:27 +02:00
hakril 9bf2e61431 Improved test for NDR + added timeout for debugger test (if pytest-timeout present) 2020-07-16 23:31:35 +02:00
hakril 01a59a92c4 Updated some doc and samples 2020-07-16 23:26:59 +02:00
hakril e2ff50e6a2 Added some generated def 2020-07-16 23:24:43 +02:00
hakril 47f3e64c84 Added some required generated def 2020-06-22 14:07:51 +02:00
hakril d8ac02e6a2 Improved NDR padding capabilities for primitive types 2020-06-15 10:00:05 +02:00
hakril 0fa8026c1b Fix localdebugger (and sample) for python3 2020-06-05 17:10:45 +02:00
hakril e4c0f8645e Adapted symbol code & samples for py3 compat 2020-05-18 23:07:33 +02:00
hakril 2e48f9008a Multiple docs update some __init__.py code (windows.debug not imported by default anymore) 2020-05-18 22:58:52 +02:00
hakril aec35a46d5 Added Symbol related sample output 2020-05-18 22:49:32 +02:00
hakril e70c97cbfc Added symbol sample + SymbolDebugger 2020-05-18 22:48:12 +02:00
hakril 5b210b50cb Updated some code in object manager 2020-05-18 22:45:08 +02:00
hakril 2e7bfba3b9 Added some version related definition 2020-05-15 14:11:00 +02:00
hakril 027b7c1c64 Working on symbols documentation 2020-05-15 00:30:05 +02:00
hakril 3151155670 Added a fonction to translate comdate format to datetime + fix DisableWow64FsRedirection for 32b system 2020-05-12 23:27:50 +02:00
hakril 38aef8e497 Fix py3 compat for some remote ctypes code 2020-05-12 23:27:01 +02:00
hakril c666882105 Improved available information about scheduled task + updated documentation 2020-05-12 23:22:00 +02:00
hakril ffec0aa57e Renamed NewService class as Service + updated doc/sample for new service API 2020-05-12 00:20:16 +02:00
hakril eb131d2621 system.services now handle int/slice for getitem + update doc + add a sample 2020-05-11 23:42:51 +02:00
hakril 042e77acf1 Updated doc of event_log.py 2020-05-11 23:42:51 +02:00
hakril 654280c8a5 Adapted samples for py3 support 2020-05-11 09:00:57 +02:00
hakril 176066d917 Added option --attributes to enum_device, and updated the sample accordingly 2020-05-10 23:27:18 +02:00
hakril b59522e504 Documented most of the classes/attributes related to devices_manager.py. Updated related rst. 2020-05-10 23:27:18 +02:00
hakril 996487cc1f Added device manager documentation skeleton to docs/ as well as samples output 2020-05-10 23:27:18 +02:00
hakril 0ec8ae2fa6 Adapted device manager samples & small API improvements 2020-05-10 23:27:18 +02:00
hakril 78c205d248 Added some comment about unsure high-level API choice/possibility to discuss 2020-05-10 23:27:18 +02:00
hakril 6a7626eb2d Adapted lucasg sample to new (poc) device manager high-level API 2020-05-10 23:27:18 +02:00
hakril 1077541ec4 POC of new high-level API for device manager adapted from lucasg work 2020-05-10 23:27:18 +02:00
hakril f491c510eb Adapt lucasg winproxy code to match codebase behavvior 2020-05-10 23:27:18 +02:00
hakril 5aed4305d6 Port lucag device manager structures/function to ctypes generation 2020-05-10 23:27:18 +02:00
lucasg 97a1bb22e1 [device] Add device object associated with phy device 2020-05-10 23:27:18 +02:00
lucasg ec0e97c075 [device] Improve device's name retrieval 2020-05-10 23:27:18 +02:00
lucasg 7652f597f3 [Device] Correctly parse device's resources 2020-05-10 23:27:18 +02:00
lucasg 5aa181c4cf [Device] Implement API to retrieve resources associated with devices 2020-05-10 23:27:18 +02:00
lucasg 445c68537c [Device] Implement apis to retrieve the list of devices under each class 2020-05-10 23:27:18 +02:00
lucasg 0ee191c981 [Device] Add setupapi SetupDiClassNameFromGuid winproxy 2020-05-10 23:27:18 +02:00
lucasg e74089cda3 [Device] Add cfgmgr.CM_Enumerate_Classes winproxy 2020-05-10 23:27:18 +02:00
Reuven Peleg ef580c675f Fix port_name member in documentation
AlpcClient class have member name port_name, not portname
2020-05-08 23:39:09 +02:00
hakril 6a5364ea1e Updated docstring of RPCClient to link to AlpcClient & documented AlpcClient.port_name 2020-05-08 23:31:29 +02:00
hakril ed0099fd57 PFW symbols engine can now pull dbghelp.dll path from env var PFW_DBGHELP_PATH 2020-05-05 16:29:02 +02:00
hakril bbf031e784 Renamed definition/com/tst directory to better name: propertysystem 2020-05-04 09:52:54 +02:00
hakril 466d94c03c Fixed broken basestring for py3 compatibility (see issue #15) 2020-05-02 23:12:25 +02:00
hakril 578b4d9193 Update generated def + documentation 2020-03-29 22:14:29 +02:00
hakril 9485ceef05 Updated README with the current state of PFW for Python3 2020-03-29 21:49:22 +02:00
hakril f63f7f308a Some quick and dirty fix for debugger/breakpoint in python3 2020-03-29 21:41:48 +02:00
hakril c691d8eb84 Added EvtQuery.seek() + IsDebuggerPresent API for sample purpose 2020-03-19 10:33:12 +01:00
hakril 91e6ef824c Added EventLog.date for simplicity of use 2020-03-16 13:19:03 +01:00
hakril 54f202731d Added sample + link from debug.rst for FunctionCallBP 2020-03-11 18:06:23 +01:00
hakril fefe9f397f Added autodoc for FunctionCallBP 2020-03-11 00:03:55 +01:00
hakril 546818f91b Added a sample for windows.debug.FunctionCallBP : change_function_ret_value.py 2020-03-10 23:59:50 +01:00
hakril fb23ad2838 Fix syswow64 32<->64 for python3-23b 2020-03-10 21:03:59 +01:00
hakril 7921e74647 Fixed a GC issue with system.modules + added deprecation warning to utils.get_kernel_modules() 2020-03-10 20:50:04 +01:00
hakril 5c3b0cda88 Merge branch 'gitter-badger-gitter-badge' into dev 2020-02-16 09:53:52 +01:00
hakril 50f6b993de Adapted the gitter link + small update to the README 2020-02-16 09:52:07 +01:00
The Gitter Badger d7c150b794 Add Gitter badge 2020-02-14 10:42:30 +00:00
hakril 0cf6057b98 setup.py is py3-beta ready :) 2020-02-14 10:16:27 +01:00
hakril 02b2ba13f9 Added a poc for a WinFile object 2020-02-13 23:24:37 +01:00
hakril 92df7eaee0 New generated_def py3 ready \o/ PFW should be ready for py3 testing 2020-02-13 23:18:47 +01:00
hakril 9f69b1cefa Adapted some stuff in security.py for py3 2020-02-13 23:17:43 +01:00
hakril fe22a5ad0d Testing/Fixing some sample for py3 2020-02-13 23:16:46 +01:00
hakril 66382b89f7 Some more py3 compat fix + few feature in POC 2020-02-13 22:30:46 +01:00
hakril 4dc71b0449 Added some flags & improved explain() 2020-02-13 22:23:55 +01:00
hakril 4d3b3e18ad Lot of small py3 compat fix 2020-02-13 22:23:20 +01:00
hakril b27d161a6a Fixed ctypes_generation about some bugs on py3 2020-02-13 22:13:23 +01:00
hakril 80c6a747da Updated test for py3 2020-02-13 22:12:40 +01:00
hakril f403856e26 Debugger test pass on py3 2020-02-08 00:15:41 +01:00
hakril 6a74c83670 test_process pass for python3 + added some pe_parse test 2020-02-07 23:06:26 +01:00
hakril 889de363ca windows.injection now handle injection of py3 code ! 2020-02-06 00:03:10 +01:00
hakril bac3dcb55b Fix simple_x64 REX for python3 2020-02-05 23:57:34 +01:00
hakril 2f778b69f9 windows.pipe.create now accept a custom security descriptor as parameter 2020-02-03 21:42:34 +01:00
hakril 2fddd82f00 Adding pycompat.py for py2/py3 work in progress 2020-02-02 18:18:56 +01:00
hakril 46197e763a Fixed windows.winproxy.resolve (corresponding test already exist) 2020-02-02 18:17:36 +01:00
hakril a7175be425 Added/fixed some test 2020-02-02 18:11:13 +01:00
hakril f2a6489463 Added mov REG/SEGREG in simple_x86 + fix a bug in syswow64 on AMD do to a processor bug (Issue10) 2020-02-02 17:49:42 +01:00
hakril 2e1043ead4 Added some code to play with extended attributes 2020-01-26 16:02:38 +01:00
hakril b490130585 Aded new generated ctypes_generation 2020-01-26 15:55:21 +01:00
hakril d20083c57c windows.crypto.sign accept sin algo as parameter 2020-01-26 15:51:03 +01:00
hakril fb2b63b66d ctypes_generation now generate py3.6 compatible code :) 2020-01-18 23:18:25 +01:00
hakril b971fa5faf Added some functions to winproxy 2020-01-17 21:11:24 +01:00
hakril c5d8faaa4a Winstruct parser accept * in array size expression 2020-01-17 21:09:04 +01:00
hakril 5ae6fb2634 Added new ctypes definition 2020-01-17 21:08:20 +01:00
hakril c589a41902 [WIP] saving POC of symbol 2020-01-17 21:07:35 +01:00
hakril 7638080ee4 Added new service API allowing to find service by name easily 2019-11-14 13:31:20 +01:00
hakril 0ed859b95e Added support for simple expression in array (like [MAX_PATH + 1]) 2019-10-31 16:27:01 +01:00
hakril 6f55d2e48f Fix a bug in debugger when detaching after a Ctrl+c during a BP 2019-10-19 00:39:03 +02:00
1orenz0 5b55d4d693 [event_log] Add some more format type to support 2019-10-14 22:03:49 +02:00
1orenz0 fbfe4344d4 [event_log] some events does not have a template message 2019-10-14 22:03:49 +02:00
1orenz0 215afaa418 [event_log] add verbose option to wevtutil.py 2019-10-14 22:03:49 +02:00
1orenz0 91ef7da2e1 [event_log] Fix typo in wevtutil 2019-10-14 22:03:49 +02:00
1orenz0 8a14fe9174 [event_log] add realtime logger to wevtutil 2019-10-14 22:03:49 +02:00
1orenz0 4f92323abf [event log] export message_id instead of message_name
It's more consistent with the other classes
2019-10-14 22:03:49 +02:00
1orenz0 44d9d0dd35 [event log] Add example of what can be done with events 2019-10-14 22:03:49 +02:00
1orenz0 6dd314659d [event log] adding event channel metadata message ID 2019-10-14 22:03:49 +02:00
1orenz0 adb7d3b63a [event log] adding event metadata 2019-10-14 22:03:49 +02:00
1orenz0 b5371ddf33 [event log] still adding publisher metadata 2019-10-14 22:03:49 +02:00
1orenz0 4495eca6d0 [event log] add some more metadata 2019-10-14 22:03:49 +02:00
1orenz0 df28515b97 [event log] Expose message filename 2019-10-14 22:03:49 +02:00
1orenz0 6374f91fef [event log] Expose channel metadatas 2019-10-14 22:03:49 +02:00
1orenz0 6125a1fb15 [event_trace] Add a way to pass a Python object to an ETW trace's
context

It may be useful to pass a python object (e.g. class) to the ETW
processing callback. The ETW tracing API allows the user to fill out a
"Context" field with a pointer value that will be passed to the event
being sent, the rest is ctypes magic for wrapping the python object
into a native pointer value.
2019-10-14 22:03:49 +02:00
1orenz0 bfeb2e6dec [event_log] Configure an ETW trace to listen on specific keywords
By default EnableTrace will listen with a "KeywordsAny" value of
0xffffffff. Some event log providers send events with keywords over
0x100000000, so we need a mecanism to filter on thoses keywords.
2019-10-14 22:03:49 +02:00
1orenz0 536a60c040 [event log] Expose event keywords and publisher guid
Accessing the publisher guid is useful to setup an ETW trace, and we
need to know event keywords in order to activate the ETW session on the
correct "channels".
2019-10-14 22:03:49 +02:00
hakril 05ee89de81 Adding some service related definition + added services specific access right to security.py 2019-10-14 21:52:54 +02:00
hakril 80799fe411 Working on improving the Evt related api 2019-10-14 21:52:02 +02:00
hakril 265ef59011 Update/Fix PROCESSINFOCLASS enum + NtSetInformationProcess use a PROCESSINFOCLASS not a PROCESS_INFORMATION_CLASS 2019-10-08 14:00:56 +02:00
hakril 30b05d25f1 Improved MultipleInstr capabilities + fix a bug in x64 that failed to recognize 32b register name not uppercase 2019-09-20 16:18:16 +02:00
hakril 6bd45e8503 Added regkey.empty() based on RegDeleteTreeW 2019-08-13 14:57:56 +02:00
hakril 1e42553112 Added some test + added a com security fixture allowing allowed correct COM init accross all tests 2019-08-12 13:53:15 +02:00
hakril 168783af9d Improved CryptMsg API with some more properties 2019-08-12 13:50:08 +02:00
hakril b9fe4d19e5 Added ControlService + service.stop() + service.start() accept arguments 2019-08-08 10:28:22 +02:00
hakril 6fcba46739 Added <Raw> pseudo instruction to both assemblers + corresponding test 2019-08-07 17:42:56 +02:00
hakril 960838ae3c handle code now use gdef + added some handle tests 2019-08-07 17:25:36 +02:00
hakril 8a32e00f68 Handle documented key type and unkown one + add code to handle badly encoded values (REG_MULTI_SZ notably) 2019-08-07 14:48:26 +02:00
hakril 670bb713a2 Fix a bug about REG_SZ key non-null terminated in values enumeration 2019-08-07 09:47:31 +02:00
hakril 032de6a848 Moved bits.py to winobject/ + added windows.system.bits as entrypoint 2019-08-05 22:32:10 +02:00
hakril 7827a43d9a Fixed a logic bug in object manager + import bug in syswow.py 2019-08-05 22:31:00 +02:00
hakril b0fa864271 Added some API to winproxy 2019-08-05 22:27:07 +02:00
hakril 7c816acdda windows.system.registry does not use _winreg at all anymore 2019-08-05 22:26:28 +02:00
hakril 7f4ff75854 Rewrote windows.system.registry to handle unicode. added registry test (including unicode testing) 2019-08-05 16:56:48 +02:00
hakril 0697891026 Some improvment to ctypes generation + a lot of new definitions 2019-08-05 16:55:35 +02:00
hakril 15f399df6d Still playing with security-descriptor / SACL / required rights (MAXIMUM_ALLOWED does not work) 2019-06-28 10:34:20 +02:00
hakril b628ca336b Working on api to set security descriptor 2019-06-28 09:38:35 +02:00
hakril b160935747 Added current etw code (event_trace) 2019-05-31 09:06:09 +02:00
hakril 554a6b0572 Added some more ctypes defition 2019-05-18 23:35:52 +02:00
hakril f9104141e5 Added/refactored many ctypes_generation definitions 2019-04-26 13:49:55 +02:00
hakril 5794a92168 ctypes_generation now handle anonymous sub-struct/union 2019-04-26 13:43:41 +02:00
hakril 578392ffde Improve retrieving of event-log data type 2019-02-11 17:11:23 +01:00
hakril 44e5a09564 Few improvement in existing API + test of Winprocess.handles 2019-01-22 15:06:23 +01:00
hakril 4e8a765bd6 Added some generated def 2019-01-22 15:02:18 +01:00
hakril f3de7b528b go go gadget 0.5 2019-01-03 22:43:40 +01:00
hakril 252f6f8efa Update replace deprecated use of getfuncargvalue to please new pytest versions 2019-01-03 22:32:19 +01:00
hakril f53cd00bc4 cosmetic changes to doc + generate html doc 2019-01-03 22:20:19 +01:00
hakril 3fe7ee2cce Fix bug in debugger caused by on_setup new code 2019-01-03 22:00:01 +01:00
hakril 370210a610 Fix a bug in MEMORY_BASIC_INFORMATION64 extended struct + add related test 2019-01-03 21:51:35 +01:00
hakril 288e87a0d3 Update windows.security doc + add ref to module in doc 2019-01-03 21:50:17 +01:00
hakril abded9944d Regenerated ctypes 2018-12-28 21:22:29 +01:00
hakril d9a43a4a8b Update readme with Token/SecurityDescriptor demo + fix flag repr in README + small docstring fix 2018-12-28 21:21:30 +01:00
hakril c2f2f4c0a5 Flag repr does not print long 'L' at the end of hex value 2018-12-28 21:13:40 +01:00
hakril 771593f17d Fix in safe_execute_python to raise WindowsError if process die during execution 2018-12-21 18:53:55 +01:00
hakril a194f0be6b Fixed bug in WinProxy where error add bad func name + update winproxy function list in doc 2018-12-21 18:52:08 +01:00
hakril 4f62434dfb Moved lookup_sid to windows.utils + add Token to window.security + update doc about official Token path 2018-12-21 18:50:22 +01:00
hakril fb567c6a76 Added some samples output + document change Kernel32Error -> WinproxyError + fix sample/readme/doc related 2018-12-21 18:13:28 +01:00
hakril 784e669597 update debugger.py with new on_setup callback" 2018-12-21 16:22:38 +01:00
hakril 21e259fa73 Update some doc/samples for new module/features 2018-12-21 16:18:19 +01:00
hakril db44087bba Refactor thread code for simple token retrieving on Process/Thread objects 2018-12-21 16:07:10 +01:00
hakril f522f08e7f Fix token.py doc + improve NDR with new class + doc NdrString new behavior + update uac.py sample to match new NdrString 2018-12-21 16:05:37 +01:00
hakril a9a39bc53f Added multiple ctypes_generation definition + some winproxy functions 2018-12-21 15:31:51 +01:00
hakril 45ace331cb Added token sample + Debugger.on_setup sample 2018-12-21 15:27:04 +01:00
hakril 79ff18e06f Update doc/samples/test of windows.security 2018-12-21 15:26:29 +01:00
hakril 986664d01f update Doc + test + sample for token.py 2018-12-20 22:48:16 +01:00
hakril 8dc2d443d5 Update WMI docs / samples 2018-12-17 23:40:08 +01:00
hakril e5f87e1453 Fix setup.py to match new winproxy packages 2018-12-17 09:44:43 +01:00
hakril 6c4a5f7d65 Added LoadLibraryEx[AW] + FreeLibrary to winproxy 2018-11-27 14:38:29 +01:00
hakril 5df8cc96dc enum mapper is now a FlagMapper + improve winfunc parsing 2018-11-26 22:39:31 +01:00
hakril 460274d532 Process object now return new Token object (still WIP) 2018-11-24 22:59:01 +01:00
hakril 2a4bdd7e30 removing crypto ECRYPT_DATA_BLOB. now CRYPT_DATA_BLOB is extended_struct + testing new API in crypto object 2018-11-24 22:59:01 +01:00
hakril d936942d28 [WIP] improving Token object possibilities 2018-11-24 22:59:01 +01:00
hakril 24c5083633 POC of new Improved buffer utilities + sprint use dunder method __sprint__ if available in objects 2018-11-24 22:59:01 +01:00
hakril c3b85068e5 Added Retn to x86/64 assemblers + encryption_demo sample can now sign a file + [WIP] token improvement 2018-11-24 22:59:01 +01:00
hakril fff2f37781 Add WMI create-process sample + improved some sample feature/doc 2018-11-24 22:59:01 +01:00
hakril b6f57b8342 Code now use renamed/improved windows.com.Variant 2018-11-24 22:59:01 +01:00
hakril cf6c813002 ComInterface now expose a callback for ctypes error handling. Allow COM interface to change/handle the raised Exception 2018-11-24 22:59:01 +01:00
hakril b167c6e70f Made some improvement of error handling by ApiProxy + some new generated def 2018-11-24 22:59:01 +01:00
hakril 267eddb5fe Reworking windows.com.Variant + working on new wmi API + wmi test 2018-11-24 22:59:01 +01:00
hakril a18c08ee53 Working on new WMI interface + improved ComInterface errcheck 2018-11-24 22:59:01 +01:00
hakril e46dc48c37 Addapt codebase and tests to winproxy refactoring (replace Kernel32Error to WinproxyError) 2018-11-24 22:59:00 +01:00
hakril 77fca8bb0f Refactor winproxy into a directory 2018-11-24 22:59:00 +01:00
hakril bbde38ffe4 First version of windows.security based on clmntb work 2018-11-24 22:59:00 +01:00
hakril 0e52272ddc Fixed a warning in simple_x[86|64] 2018-11-24 22:59:00 +01:00
hakril 91cbcce38f Added some definition + POC of FlagExtractor 2018-11-24 22:59:00 +01:00
hakril 33ca0c9c34 Added many security-related defines + moved improved-psid in extended_structs 2018-11-24 22:59:00 +01:00
hakril 272ad24f15 Added extended-struct capabilities to simple_type.txt 2018-11-24 22:59:00 +01:00
hakril 967c18d521 Added POC WinProcess.memory_info + some crypto defines 2018-11-24 22:59:00 +01:00
hakril 0125f78c67 Quick fix for query_volume_information 2018-11-24 22:59:00 +01:00
hakril 570436120b Added some functions 2018-11-24 22:59:00 +01:00
hakril 1c21b77292 Add sign/verify methods to windows.crypto + POC/Play with improved ctypes buffer/array 2018-11-24 22:59:00 +01:00
hakril 7a313f57c1 Added some crypto-related ctypes_generation definitions + generate.py now try to check for out-of-order definition 2018-11-24 22:59:00 +01:00
hakril b253bc5873 Merge pull request #4 from jagotu/master
Ndr: Make sure Strings are null-terminated. Add NULL byte if not present.
2018-11-07 22:10:34 +01:00
JaGoTu 921f066fb8 Ndr: Make sure Strings are null-terminated
Prevents RPC_X_BAD_STUB_DATA when a non-null-terminated string is
provided as an argument.
2018-11-07 21:26:28 +01:00
hakril 2454bf815b Regenerate sphinx doc 2018-08-03 10:10:31 +02:00
hakril b3f1420d46 Updated README with new features description 2018-08-03 09:48:53 +02:00
hakril 19095f0e2f Fix typo in certificate test + add very simple test of windows.system.modules 2018-08-02 18:52:35 +02:00
hakril c228a0d5cb Added Certificate.distinguished_name and BaseSystemModule.name + some winproxy functions 2018-08-02 18:51:41 +02:00
hakril c97d149630 Added some ctypes_generation definitions 2018-08-02 18:42:36 +02:00
hakril afccd0da30 Added doc about how to install pfw in readme and sphinx doc 2018-08-02 18:41:08 +02:00
hakril e53f7ef34b Added some test for windows.system.object_manager 2018-08-02 18:38:48 +02:00
hakril e6a022f8be Add windows.system.edition 2018-07-13 18:08:00 +02:00
hakril a75de140d6 Added object manager samples to doc + fix Certificate.thum[b]print typo 2018-07-13 14:41:09 +02:00
hakril d232928780 Added some generated def + some winproxy functions 2018-07-13 14:33:50 +02:00
hakril c19241098a Improve object manager doc + add samples 2018-07-13 14:24:55 +02:00
hakril eb3b13016f Fix right-margin in sphinx doc CSS (thanks bruno) 2018-07-11 11:57:39 +02:00
hakril c59af86910 Renamed kernobj.py to object_manager.py and added to windows.system.object_manager + improve API + beginning of doc 2018-06-11 17:55:11 +02:00
hakril 041a354d17 Update some doc + document windows.system.modules 2018-06-11 11:09:48 +02:00
hakril 525432fecd Add a POC for windows.system.modules to replace winutils.get_kernel_modules() 2018-06-05 21:55:54 +02:00
hakril 1ee9a8bc46 new POC for breakpoint with parameters extraction 2018-06-05 21:54:26 +02:00
hakril 3dcd27a1ca Fix ntdll-registry winproxy error check + add LocalDebugger.current_thread to match Debugger API 2018-06-05 21:53:35 +02:00
hakril b223ed233e Fix stuff in service.py + update test 2018-06-05 11:59:06 +02:00
hakril 3d69ad3cb5 Add some definition in ctypes generation + winproxy wrappers; fix com.py imports 2018-06-05 11:38:57 +02:00
hakril a559c5c295 Update some doc / test + some ctypes generation definition 2018-06-05 11:34:52 +02:00
hakril 93bb9b6540 Add doc/sample/test for event log code 2018-06-05 11:30:25 +02:00
hakril 057d4e5408 Add scheduled_task code/doc-source/tests 2018-06-01 12:20:13 +02:00
hakril 2bea15ffe8 add current word on event logs 2018-05-12 00:17:34 +02:00
hakril 11e4afeef5 ctypes generation : added bitfield parsing/generation + update/fix some definitions 2018-05-12 00:16:45 +02:00
hakril 05e7b755b0 Fix CurrentProcess read/write memory to use ctypes.memmove -> raise on bad address -> no more segv 2018-05-12 00:13:57 +02:00
hakril 849d64378f Commit current work on scheduled tasks 2018-05-12 00:11:10 +02:00
hakril 8cc361b1f9 ctypes generation allow COM mission interface autocopy from a directory + support anon structs/enum in typedef 2018-04-16 19:54:09 +02:00
hakril e918d735a1 Tests injecting python in remote process now check that target python is installed 2018-03-28 23:14:41 +02:00
hakril 9e1400e4ad Forgot a file.. This is the real v0.4 2018-03-28 01:03:37 +02:00
hakril 3565474693 Let's call it a 0.4 ! 2018-03-27 21:33:06 +02:00
hakril 83f4b0c48b Fixing some doc / samples 2018-03-27 21:24:56 +02:00
hakril b88ce36acb Add somme Evt-related define/structs/functions 2018-03-27 20:46:54 +02:00
hakril 4564be8488 Adding IShellLinkW + commit generated defs 2018-03-27 20:44:54 +02:00
hakril 34c2d94bc2 Some fixes in code/samples/test 2018-03-27 20:37:30 +02:00
hakril 66852aae37 Add function NtAllocateVirtualMemory + NtFreeVirtualMemory 2018-03-23 12:43:31 +01:00
hakril 094979f7c0 Add NtWriteVirtualMemory + fix some winfunc param/ret-val type 2018-03-22 19:28:54 +01:00
hakril b2c3493f46 Improve com generated interface 2018-03-09 16:10:59 +01:00
hakril 9ef71ad9e1 Clean ICallInterceptor POC 2018-03-08 23:12:06 +01:00
hakril e40b9fb2ff Add quick POC of ICallInterceptor to COM samples 2018-03-08 22:45:26 +01:00
hakril af6943992a cgen: Function generated after COM, handle COM variadic (cdecl) defintion + Comimplem.IID generated avec _functions_ + Add some COM/ComInterceptor definitions 2018-03-08 22:35:54 +01:00
hakril babb743096 check we are on windows 2018-03-07 10:28:39 +01:00
hakril 8840b9fdb9 updated doc 2018-03-07 10:24:46 +01:00
hakril 03e252b53a Upgrade to sphinx 1.7.1 + small css fix + review/update/refactor doc samples 2018-03-05 01:06:30 +01:00
hakril 1dc13b1a35 Adding some PE related windef + CertFreeCertificateContext 2018-03-04 18:45:23 +01:00
hakril d91bc1a45a Fix a bug in com.init() when CoInitializeEx failed + fix test: test_wmi fail du to pytest default COM-security settings 2018-03-04 18:34:40 +01:00
hakril a057f8c130 class CertificateContext(PCERT_CONTEXT) replaced by Certificate(CERT_CONTEXT) + multi-received encrypt/decrypt test 2018-03-04 18:28:20 +01:00
hakril c20d443c29 windows.com.init does not raise anymore if CoInitializeEx fails but return error code + cosmetic 2018-03-03 16:55:40 +01:00
hakril 262b80c8c3 utils.get_(long|short)_path now handle unicode path using W func 2018-03-03 16:51:51 +01:00
hakril 805e735a88 Added some ctypes definitions 2018-03-03 16:49:53 +01:00
hakril 4499080a77 Remote load library now use LoadLibraryW and get_mapped_filename use GetMappedFileNameW: return unicode str in every case 2018-02-07 13:14:25 +01:00
hakril b2a72f11cc Add windows.pipe for simpler communication with injected process 2018-02-02 10:27:04 +01:00
hakril f682fbd8c1 Add transaction + window APIs to winproxy + get_mapped_filename raise on non-standard error (like aborted transaction) 2018-01-26 11:05:53 +01:00
hakril 4251b18041 Fix ctypes generation + COM interface dependance check + add IPersistFile, IShellLink, strucs/defs 2018-01-25 16:51:04 +01:00
hakril 82e464d527 Replaced old generate.py with new ctypes generation code ! 2018-01-19 18:11:16 +01:00
hakril 445de0b007 Commit generated def before switching generator code 2018-01-19 17:33:33 +01:00
hakril 61ddb4821a Working in new ctypes generation code and features 2018-01-17 01:17:55 +01:00
hakril 65726e706f Add Int X86/64 instruction 2018-01-13 16:40:21 +01:00
hakril 715a7fee95 Add CryptMsgVerifyCountersignatureEncoded[Ex] and some crypto definition 2018-01-13 16:39:53 +01:00
hakril 48b6758f7f Add exists/create to PyHKey 2018-01-13 16:38:29 +01:00
hakril f882bd1e35 Add wmi.gen_select for class select returning a generator + fom E_CRYPT define + CryptObj.nb_signer return 0 if CRYPT_E_INVALID_MSG_TYPE 2017-12-08 16:54:49 +01:00
hakril 4a75453a8b Clean and Improve WMI query API that now accept a Timeout 2017-12-08 14:49:03 +01:00
hakril 3490dc987f Default encrypt algo is now AES256_CBC + Fix import_pfx default flags to be able to use it for AES256_CBC simply 2017-12-07 15:40:47 +01:00
hakril 32de3cb824 Improve ApiSetMap resolve to match ntdll behavior + add sizekey option to encryption_demo genkey option 2017-12-06 10:21:40 +01:00
hakril 23837a0713 Improving volume objects + adding CurrentProcess.peb.apisetmap with ApiSetMap parsing capabilities 2017-12-04 10:12:41 +01:00
hakril 8f7adb8da1 Add fuller PEB structure + Improved UNICODE_STRING + other define 2017-12-04 10:01:40 +01:00
hakril f03bb89ae6 Working on time translation (filetime - unix - datetime) and windows volume objects 2017-11-28 10:50:02 +01:00
hakril 22224b52e2 Added utils.query_file_informations wrapper arround new winproxy.NtQueryInformationFile 2017-11-27 10:13:13 +01:00
hakril c135780ba9 Add Process.virtual_protect default value for 'old_protect' + add test for Improved LSA_UNICODE_STRING used in PEB.ProcessParameters + find_value now search in ntstatus values 2017-11-24 17:46:07 +01:00
hakril f54599568d Working on eventlog 2017-11-24 17:17:35 +01:00
Clement Rouault 5a5baa7bcd Add ctypes_generation extended structs _LSA_UNICODE_STRING.py 2017-11-17 15:14:10 +01:00
Clement Rouault d12bae6dbb Remove 'WinUnicodeString' and add un extended struct _LSA_UNICODE_STRING: simplify lots of things 2017-11-17 15:13:34 +01:00
Clement Rouault d3ca30b229 Winstruct parser now handle comments in winstructs source files 2017-11-17 15:10:19 +01:00
Clement Rouault a0ffea68b7 Add a example of x86.assemble in the README 2017-11-15 17:29:11 +01:00
Clement Rouault 51bc3fdf7c Improve _GUID & typedef definition + add a sample using gdef.meta to search for a name/value in generated defs 2017-11-15 15:20:38 +01:00
Clement Rouault a6aa8b86ea Fix typo in rpc windef and improve NDR-related exception message 2017-11-15 11:05:54 +01:00
hakril d9db5ba428 utils.create_file_from_handle now handles binary opening mode 2017-11-15 09:00:38 +01:00
Clement Rouault be68ba8b15 Testing a new generated file: meta.py 2017-11-10 17:29:50 +01:00
Clement Rouault 7929a31bf7 clean wintrust.py: add def to generated_ctypes + use gdef.IID for wintrust IID 2017-11-10 14:40:16 +01:00
Clement Rouault 4e5733c2c5 Process.prioroty now use the FlagMapper 2017-11-10 14:20:59 +01:00
Clement Rouault 8ba325afd2 Add a new FlagMapper to easily transform int to Flag and change to code use it 2017-11-10 13:47:27 +01:00
Clement Rouault 4efae2194d Adding Process.priority + fix in WMI raised exceptions + add x86.Iret 2017-11-10 11:12:24 +01:00
hakril 14b1cbcf75 Adding improved MEMORY_BASIC_INFORMATION structs 2017-11-10 09:04:22 +01:00
Clement Rouault 5a79e15440 Improve WMI capabilities by adding access to various namespaces + listing methods + add CurrentProcess.load_library 2017-11-08 17:55:47 +01:00
Clement Rouault e07d4dbe0c Added th description from the readme at the beginning of the documentation 2017-10-20 17:10:30 +02:00
hakril c848f33729 Pushed new HTML doc, changed version to 0.3. Ready for hack.lu 2017-10-15 00:17:43 +02:00
hakril c3f9d87c82 Add missing doc sources 2017-10-15 00:13:56 +02:00
hakril 2094ab4ad4 Fix some docstring + re-add windows.test.pop_proc_[32|64] + fix all samples + few doc adapt 2017-10-15 00:13:07 +02:00
Clement Rouault c7fef877f0 Testing some crypto stuff 2017-10-13 17:56:36 +02:00
hakril ba6b22ac84 testing crypto stuff 2017-10-12 08:13:42 +02:00
hakril 930c992be3 Working on improving crypto stuff 2017-10-09 09:11:48 +02:00
Clement Rouault f6e151a7d5 Adding some crypto api 2017-10-06 17:32:24 +02:00
Clement Rouault c12a0c45f9 Add windows.system + ALPC + RPC + winproxy demo to README.md 2017-10-06 15:10:04 +02:00
Clement Rouault 5ee74d5b8f Update rpc doc + sample + new rpc function + new winfunc definition file + fix setup.py 2017-10-05 16:22:16 +02:00
Clement Rouault a183e468ca fix dbgprint to use hardcoded dict + improve rpc client forge_call + new ndr varying string 2017-10-03 17:30:38 +02:00
Clement Rouault bd5976dce2 Added alpc + rpc tests files 2017-09-18 11:11:33 +02:00
Clement Rouault 7947ace02d Add alpc[Client|Server] __del__ to close handles + NtAlpcDisconnectPort + test 2017-09-15 17:54:19 +02:00
Clement Rouault b9a00b2ed7 add rpc.rst doc + rename endpoint_map_alpc + rename ndr EptMapAuth 2017-09-14 17:24:18 +02:00
Clement Rouault 5301f91927 Add sample for thread + fix code to get a WinProcess from a pid not using WinProcess(pid=xxx) + test 2017-09-11 18:20:49 +02:00
hakril b3117ce4e3 pytest integration finished + moved tests/ to top dir 2017-09-10 18:57:59 +02:00
Clement Rouault 492b6f4f02 pytest added --leaks for leak check + test Handle.description 2017-09-08 17:53:59 +02:00
Clement Rouault 7db5620210 more pytest POC + fixed debugger code + test FunctionHXBP 2017-09-07 17:13:59 +02:00
Clement Rouault 89e486cd95 Working on rewriting of tests with pytest 2017-09-06 18:42:54 +02:00
Clement Rouault fccd2a49e6 Add doc to RPC + RPC_IF_ID generated-extended + lsass sample 2017-08-30 18:29:49 +02:00
Clement Rouault d44a3b032e Add extended struct to ctypes generation + extended IID now in winstructs.py and used everywhere 2017-08-29 11:39:43 +02:00
Clement Rouault 1fe5b912be Add some ALPC samples to the documentation 2017-08-28 17:09:49 +02:00
Clement Rouault 1941adc93f Working on RtlGetUnloadEventTraceEx - adding function and struct + fix remotectypes char-array in struct 2017-08-17 18:51:07 +02:00
Clement Rouault e9c62a125c add system.build_number + better handling of closing python in Winprocess.__del__ 2017-08-17 18:49:42 +02:00
Clement Rouault c75dda60b5 Fixed get_kernel_modules for syswow64 process 2017-08-17 13:51:36 +02:00
Clement Rouault 16e29bd938 Added a sample for Debugger.attach 2017-08-16 18:07:00 +02:00
Clement Rouault c76a50c045 add doc to alpc.py + improve doc now that Winstruct are documented 2017-08-16 17:38:18 +02:00
Clement Rouault bd6a3d35d5 Created sub-directories in samples/ 2017-08-16 17:37:26 +02:00
Clement Rouault 8b9a71edc2 Add real doc for windows.generated_def 2017-08-16 15:11:23 +02:00
hakril 3d33c97335 add system.windir + needed winfuncs 2017-08-16 09:25:23 +02:00
Clement Rouault 8d139bce79 Working on sphinx doc generation for windows.generated_def 2017-08-11 19:06:50 +02:00
Clement Rouault 61ac5c8c5d Fix EnumValue pickling for protocol 2 2017-08-10 17:07:41 +02:00
Clement Rouault 928a2744d5 Change RPC_SYNTAX_IDENTIFIER to RPC_IF_ID + update setup_hook + some add to wincli 2017-08-04 17:28:46 +02:00
Clement Rouault f43749aa07 [WIP] new hook method + winfunc APIs in winproxy 2017-08-04 17:19:27 +02:00
Clement Rouault d1cadf062a working on windows.alpc + fix in current_process.threads 2017-08-04 17:18:41 +02:00
Clement Rouault aa22f1515d Working on new windows.alpc 2017-07-28 09:20:40 +02:00
Clement Rouault 6898ac02fa First try at MemBP.on_error callback 2017-07-18 12:48:45 +02:00
Clement Rouault f08953f4ae rewrite of alpc.py + adapt rpc/client.py 2017-07-12 16:29:02 +02:00
Clement Rouault 5d34493356 commit alpc.py before rewriting 2017-07-12 16:27:43 +02:00
Clement Rouault 89fe39fadf Adding some ALPC struct/funcs 2017-07-11 18:42:51 +02:00
Clement Rouault 5e2ecf2af9 Still working on RPC over alpc 2017-07-06 18:11:32 +02:00
Clement Rouault aff6ee4e17 replace PORT_MESSAGE struct def with PORT_MESSAGE[32|64] + FunctionBP can get the function via a class parameter 2017-06-21 13:16:22 +02:00
Clement Rouault ae5a211613 fix SIZE_T definition to ctypes.c_size_t + fix MessageAttribute._get_required_buffer_size 2017-06-08 18:22:24 +02:00
hakril 1a7e342318 Add Winprocess.limited_handle for QUERY_LIMITED_INFORMATION api call 2017-06-07 20:00:37 +02:00
Clement Rouault a5688076a6 add uac sample 2017-06-07 11:45:59 +02:00
Clement Rouault a13b287202 Clean some rpc/alpc code + add ndr.NdrCString 2017-06-07 11:45:11 +02:00
Clement Rouault 4c8747b628 Add winproxy.MessageBox[AW] 2017-06-07 11:39:37 +02:00
Clement Rouault 1a73fe713b Add missing psid.py + some rpc fix + alpc sample + wincli 2017-05-24 17:49:46 +02:00
Clement Rouault a89854a045 PrintBP now accept a pre-format fonction to forge new format parameters 2017-05-24 17:45:27 +02:00
Clement Rouault 3c21d8c59c token.integrity is now settable 2017-05-24 17:43:34 +02:00
Clement Rouault 9461d4a2fb Add structs/def/funcs + Service.start() 2017-05-24 17:40:31 +02:00
Clement Rouault 5b17cc988f simple_x64 does not add extra unwanted REX for some 'Slash [MEM]' instruction 2017-05-24 17:33:40 +02:00
Clement Rouault e5e9ff7a47 windows.alpc + windows.rpc first version (manual_uac works with those) 2017-05-19 17:14:10 +02:00
Clement Rouault d24e62e319 Add PrintBP + few fix in Debugger + simple string-address resolution in localdebugger 2017-05-19 15:39:32 +02:00
Clement Rouault bc3c033e84 Added some definitions for SID/Privilege/others 2017-05-19 15:37:26 +02:00
Clement Rouault dbd98c93ed fix Process.ppid implem + new version does not enum processes 2017-04-28 17:29:17 +02:00
Clement Rouault 48fbeaee77 Fix bug in debugger: close EVENT_INFO hFile only if not NULL 2017-04-27 14:10:03 +02:00
Clement Rouault f9a650fcf3 WinThread is not a THREADENTRY32 anymore + add Winprocess.peb.exe 2017-04-27 12:06:04 +02:00
Clement Rouault c0d03a2f58 Fix some handle leak, debugger close hFile on event + enumerate processes/threads close snap handle 2017-04-26 14:46:45 +02:00
Clement Rouault feb76b48c3 unit tests now check for uncollectable-object (gc.garbage) 2017-04-26 11:07:52 +02:00
hakril be5cbe2631 Winprocess.peb not a fixedproperty anymore to prevent ref-cycle + add windows.crypto to setup.py 2017-04-24 22:43:49 +02:00
hakril 8aa71f8c44 Fix remote execute_python in multiple process where python.dll is load at differents addresses 2017-04-21 21:22:24 +02:00
Clement Rouault b418d85a5a Fix test_exe_in_module_list for python 64b 2017-04-21 17:39:05 +02:00
Clement Rouault 3f6131d621 Fix implem of bp exe!(offset|API) + add test for this case 2017-04-21 17:30:18 +02:00
Clement Rouault db6cec9031 Add PEB.Mutant + PEB.ImageBaseAddress in PEB definition 2017-04-21 17:01:45 +02:00
Clement Rouault 120e9bfa6f Add exe in the debugger list of modules (for bp) 2017-04-21 15:03:48 +02:00
Clement Rouault 799bca8d3f Fix BitsCopyCallback callback prototype + print error code on bits job error 2017-04-20 11:52:56 +02:00
hakril 979d1bd418 Regenerate doc with sphinx 1.5.5 2017-04-13 13:11:35 +02:00
Clement Rouault 9cb9c2a9a0 Update doc build 2017-04-13 11:42:52 +02:00
Clement Rouault 1b0f1e9507 update winproxy list of function 2017-04-13 11:41:48 +02:00
Clement Rouault 654e6bff71 change remote_calc sample to use notepad + add demo of test_code sample + Stos[BWD] in simple_x86 + 2017-04-13 11:14:09 +02:00
Clement Rouault 344678de02 Add doc/sample for CryptObject 2017-04-12 17:20:37 +02:00
Clement Rouault 70d330961a exception reraised by registry have a winerror + remove dead code windows windows.com 2017-04-12 17:20:37 +02:00
Clement Rouault 0902618312 Add few test for windows.crypto + fix a syswow test 2017-04-12 17:20:37 +02:00
Clement Rouault b31702f783 Add BITS COM wrappers 2017-04-12 17:20:37 +02:00
Clement Rouault 81df41339b Improve windows.com.IID __repr__ and __eq__ + interface IBackgroundCopyCallback + COMImplementation.QueryInterface now returns better value allowing marshalling 2017-04-12 17:20:36 +02:00
Clement Rouault a6eb669099 Imprive windows.com.IID + add some BITS Interface/structs 2017-04-12 17:20:36 +02:00
hakril ab01eba54f More doc + fix sample on windows.crypto 2017-04-12 17:20:36 +02:00
hakril 1550c5ae3e adding sample for windows.crypto 2017-04-12 17:20:36 +02:00
hakril f1b1bec903 Working on documentation of windows.crypto 2017-04-12 17:20:36 +02:00
Clement Rouault e08720e49a Fix pickle/unpikcl of Flag + StrFlag for protocol 2 + StrFlag.__str__ is the string + test 2017-04-12 17:20:36 +02:00
Clement Rouault 21c179ed2e add sample for windows.crypto 2017-04-12 17:20:36 +02:00
Clement Rouault 4183646b28 add Handle.infos + Process.open_token 2017-04-12 17:20:36 +02:00
Clement Rouault 5431b57560 fix ImprovedVariant.asbool + com.create_instance accept a context parameter + fix RemoteWCharP.value logic + winutils.decompress_buffer 2017-04-12 17:20:36 +02:00
Clement Rouault a107656402 Add SACL/DACL related struct to func/def/structs + some winerror + some crypto func + utility func 2017-04-12 17:20:36 +02:00
Clement Rouault 64f56d3977 Identified a possible bug with Debugger._explicit_single_step + some DBGPRINT 2017-04-12 17:20:35 +02:00
Clement Rouault d2582d5e09 Renamed some error check method with intelligible name + some security functions def 2017-04-12 17:20:35 +02:00
Clement Rouault 3f39ca9f0c More work on windows.crypto and Add an encryption sample POC 2017-04-12 17:20:35 +02:00
Clement Rouault 8743883068 working on crypto.certificate.CryptObject 2017-04-12 17:19:01 +02:00
hakril ae02d9e916 Add some User32 API 2017-04-12 17:19:01 +02:00
Clement Rouault 98bc95204d still Working on windows.crypto object + API + test 2017-04-12 17:19:01 +02:00
Clement Rouault 68e809728a Working on windows.crypto object + API + test 2017-04-12 17:19:01 +02:00
hakril d5b70d829f Playing with future windows.crypto API / class 2017-04-12 17:19:01 +02:00
hakril 28b2596483 Fix PVOID arguments in function generated + add some func/struct from CryptoAPI 2017-04-12 17:19:01 +02:00
Clement Rouault 50e7a1f2e3 Still Working on CryptoAPI 2017-04-12 17:19:01 +02:00
Clement Rouault 5478bda8bc Working on CryptoAPI 2017-04-12 17:19:01 +02:00
hakril 15e40da1ca Playing with CryptoApi 2017-04-12 17:19:01 +02:00
hakril d2b801cada Fix handle_exit_process + detach in Debugger to prevent keeping ref on process + fix pe_parse IATHook: all test pass 2017-04-12 17:19:01 +02:00
hakril 8653c4c1e4 No-closure pe_parse pass the test of WindowsTestCase 2017-04-12 17:19:01 +02:00
hakril f863d75eee exception is raised if remote dll injection fails 2017-04-12 17:19:01 +02:00
hakril bc7656da05 [WIP] pe_parse refactor, imports and exports works without closure by code in dirty 2017-04-12 17:19:01 +02:00
hakril 03aec90d63 WIP: fixing handle 'leak' in dbg that require manual garbare collection for now 2017-04-12 17:19:01 +02:00
hakril 861884099f Better handling of read_string for string at the end of readable memory 2017-04-12 17:19:00 +02:00
hakril 63cdb3bbeb Better handling of read_wstring for wstring at the end of readable memory 2017-04-12 17:19:00 +02:00
hakril e17400ed63 Debugger.detach remove self.target + better handling/clean of Thread/Process handles 2017-04-12 17:19:00 +02:00
Clement Rouault e58fb73f3b Fix VARIANT interpretation of VT_BOOL 2016-12-06 16:20:02 +01:00
Clement Rouault 11bdbd8873 Remove TrapFlag when detaching debugger 2016-08-23 11:56:54 +02:00
Clement Rouault 8942efa36c Fix sample for FunctionBP 2016-08-22 14:05:29 +02:00
656 changed files with 417922 additions and 25473 deletions
+5 -1
View File
@@ -1,4 +1,8 @@
*.pyc
doctrees
*.inv
*.pickle
*.pickle
.vscode/
.cache/
dist/
+50 -1
View File
@@ -1,3 +1,47 @@
Between 0.4 & 0.5:
== New features ==
- windows.security
- SecurityDescriptor / ACL / ACE objects
- Improved Token object
- windows.debug
- New callback Debugger.on_setup
== Change / Break ==
- windows.winproxy
- Kernel32Error replaced by WinproxyError
- It seemed weird that ntdll/advapi32/etc raised Kernel32Error..
- windows.wmi
- Wmi API changed, most of them do not return dict anymore but WmiObject
- It can be used like mapping
- It offers improved feature
- real error display handling :)
- windows.com
- ImprovedVariant renamed Variant + new api variant
- This is not documented yet
- windows.rpc.ndr
- ndr strings add final \x00 when packing if not present
- crypto
- CertificateStore.find return None if certif is not found (was raising in the past)
- removed ECRYPT_DATA_BLOB
- new CRYPT_DATA_BLOB is an _extended_struct :)
Since 0.35:
* WinProcess.get_mapped_filename can now raise on non-standard error (like: ERROR_TRANSACTION_NOT_ACTIVE)
* WinProcess.get_mapped_filename now use GetMappedFilenameW (returning an unicode string)
* CertificateContext is replace by Certificate
* CertificateContext was a PPCERT_CONTEXT. Certificate is a CERT_CONTEXT (not a pointer anymore)
* EHCERTSTORE renamed to CertificateStore
* added windows.pipe
Since 0.3:
* Rewrote pe_parse to minimize closure (allowing the refcount to del all ref to WinProcess when the debugger detach it)
* Fix debugger.detach / handling on exit_process
Since 0.2:
* NtStatusException is now a WindowsError
@@ -23,4 +67,9 @@ Since 0.2:
* Can retrieve 64b context of syswow thread via context_syswow/set_syswow_context
* Debugger handle breakpoint in 64b part of syswow process
* ReadSyswow64Process is now a Process (allows to parse exports of remote PEB64 of syswow process)
* Added Debugger.detach
* Added Debugger.detach
+305 -38
View File
@@ -1,6 +1,8 @@
# PythonForWindows
PythonForWindows is a base of code aimed to make interaction with `Windows` (on X86/X64) easier (for both 32 and 64 bits Python).
[![Join the chat at https://gitter.im/PythonForWindows/general](https://badges.gitter.im/PythonForWindows/general.svg)](https://gitter.im/PythonForWindows/general)
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.
@@ -12,7 +14,25 @@ Let's say that the codebase evolves with my needs 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].
Parts of PythonForWindows are used in the [LKD project][LKD_GITHUB].
PythonForWindows is principally known for its ALPC-RPC Client (see [samples](http://hakril.github.io/PythonForWindows/build/html/sample.html#windows-rpc)).
If you have any issue, question or suggestion do not hesitate to join [the Gitter channel](https://gitter.im/PythonForWindows/general).
I am always glad to have feedbacks from people using this project.
## Installation
You can install PythonForWindows using the ``setup.py`` script:
``
python setup.py install
``
#### Python3
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
@@ -35,33 +55,66 @@ You can also make some operation on threads (suspend/resume/wait/get(or set) con
>>> import windows
>>> windows.current_process.bitness
32
>>> calc = [p for p in windows.system.processes if p.name == "calc.exe"][0]
>>> calc
<WinProcess "calc.exe" pid 6960 at 0x37391f0>
>>> calc.bitness
>>> windows.current_process.token.integrity
SECURITY_MANDATORY_MEDIUM_RID(0x2000)
>>> proc = [p for p in windows.system.processes if p.name == "notepad.exe"][0]
>>> proc
<WinProcess "notepad.exe" pid 16520 at 0x544e410>
>>> proc.bitness
64
>>> calc.peb.modules[:3]
[<RemoteLoadedModule64 "calc.exe" at 0x3671e90>, <RemoteLoadedModule64 "ntdll.dll" at 0x3671030>, <RemoteLoadedModule64 "kernel32.dll" at 0x3671080>]
>>> k32 = calc.peb.modules[2]
>>> proc.peb.modules[:3]
[<RemoteLoadedModule64 "notepad.exe" at 0x3671e90>, <RemoteLoadedModule64 "ntdll.dll" at 0x3671030>, <RemoteLoadedModule64 "kernel32.dll" at 0x3671080>]
>>> k32 = proc.peb.modules[2]
>>> hex(k32.pe.exports["CreateFileW"])
'0x7ffee6761550L'
>>> calc.threads[0]
<WinThread 3932 owner "calc.exe" at 0x3646350>
>>> hex(calc.threads[0].context.Rip)
>>> proc.threads[0]
<WinThread 17688 owner "notepad.exe" at 0x53b47f0>
>>> hex(proc.threads[0].context.Rip)
'0x7ffee68b54b0L'
>>> calc.execute_python("import os")
>>> proc.execute_python("import os")
True
>>> calc.execute_python("exit(os.getpid() + 1)")
>>> proc.execute_python("exit(os.getpid() + 1)")
# execute_python raise if process died
Traceback (most recent call last):
...
WindowsError: <WinProcess "calc.exe" pid 6960 (DEAD) at 0x37391f0> died during execution of python command
WindowsError: <WinProcess "notepad.exe" pid 16520 (DEAD) at 0x579f610> died during execution of python command
>>> calc
<WinProcess "calc.exe" pid 6960 (DEAD) at 0x37391f0>
<WinProcess "notepad.exe" pid 16520 (DEAD) at 0x579f610>
>>> calc.exit_code
6961L
16521L
```
### System information
Information about the Windows computer running the script are available through the `windows.system` object.
```python
>>> windows.system
<windows.winobject.system.System object at 0x03FEED10>
>>> windows.system.bitness
64
>>> windows.system.computer_name
'DESKTOP-VKUGISR'
>>> windows.system.product_type
VER_NT_WORKSTATION(0x1)
>>> windows.system.version
(10, 0)
>>> windows.system.version_name
'Windows 10'
>>> windows.system.build_number
'10.0.15063.608'
# windows.system also contains dynamic lists about processes / threads / handles / ...
>>> windows.system.handles[-2:]
[<Handle value=<0x5cc> in process pid=14360>, <Handle value=<0x28e4> in process pid=14360>]
>>> windows.system.processes[:2]
[<WinProcess "[System Process]" pid 0 at 0x433f7d0>, <WinProcess "System" pid 4 at 0x433fd30>]
>>> windows.system.logicaldrives[0]
<LogicalDrive "C:\" (DRIVE_FIXED)>
>>> windows.system.services[23]
<ServiceA "Appinfo" SERVICE_RUNNING(0x4)>
```
### IAT Hook
@@ -72,13 +125,56 @@ So the features is present (See [online documentation][ONLINE_IATHOOK] about IAT
### Winproxy
A wrapper around some Windows functions. Arguments name and order are the same,
but some have default values and the functions raise exception on call error (I don't like 'if' around all my call).
but some have default values and the functions raise exception on call error (I don't like `if` around all my call).
```python
>>> import windows
>>> help(windows.winproxy.VirtualAlloc)
# Help on function VirtualAlloc in module windows.winproxy:
# VirtualAlloc(lpAddress=0, dwSize=NeededParameter, flAllocationType=MEM_COMMIT(0x1000L), flProtect=PAGE_EXECUTE_READWRITE(0x40L))
# Errcheck:
# raise WinproxyError if result is 0
# Positional arguments
>>> windows.winproxy.VirtualAlloc(0, 0x1000)
34537472
# Keyword arguments
>>> windows.winproxy.VirtualAlloc(dwSize=0x1000)
34603008
# NeededParameter must be provided
>>> windows.winproxy.VirtualAlloc()
"""
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "windows\winproxy.py", line 264, in VirtualAlloc
return VirtualAlloc.ctypes_function(lpAddress, dwSize, flAllocationType, flProtect)
File "windows\winproxy.py", line 130, in perform_call
raise TypeError("{0}: Missing Mandatory parameter <{1}>".format(self.func_name, param_name))
TypeError: VirtualAlloc: Missing Mandatory parameter <dwSize>
"""
# Error raises exception
>>> windows.winproxy.VirtualAlloc(dwSize=0xffffffff)
"""
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "windows\winproxy.py", line 264, in VirtualAlloc
return VirtualAlloc.ctypes_function(lpAddress, dwSize, flAllocationType, flProtect)
File "windows\winproxy.py", line 133, in perform_call
return self._cprototyped(*args)
File "windows\winproxy.py", line 59, in kernel32_error_check
raise WinproxyError(func_name)
windows.winproxy.error.WinproxyError: VirtualAlloc: [Error 87] The parameter is incorrect.
"""
```
### Native execution
To make the barrier between `native` and `Python` code,
PythonForWindows allows you to create native function callable from Python (thanks `ctypes`) and also embed
To make the barrier between `native` and `Python` code thinner,
PythonForWindows allows you to create native function callable from Python (thanks to `ctypes`) and also embed
a simple x86/x64 assembler.
```python
@@ -93,6 +189,42 @@ a simple x86/x64 assembler.
>>> f = windows.native_exec.create_function(code.get_code(), [ctypes.c_uint])
>>> f()
42L
# Assemblers can also be used in a more standard way
>>> x86.assemble("cmp edi, 0; jnz :end; mov eax, 1; label :end; ret")
'\x81\xff\x00\x00\x00\x00u\x06\xc7\xc0\x01\x00\x00\x00\xc3'
```
### Token / Security Descriptor
Objects easing access to some information about ``Token`` and ``SecurityDescriptor`` are also available.
```python
>>> import windows.security
>>> import windows.generated_def as gdef
>>> tok = windows.current_process.token
>>> tok
<Token TokenId=0x6a2b4550 Type=TokenPrimary(0x1)>
>>> tok.username
u'hakril'
>>> tok.type
tagTOKEN_TYPE.TokenPrimary(0x1)
>>> tok.integrity
SECURITY_MANDATORY_MEDIUM_RID(0x2000)
>>> tok.duplicate(type=gdef.TokenImpersonation, impersonation_level=gdef.SecurityIdentification)
<Token TokenId=0x6a3532ce Type=TokenImpersonation(0x2) ImpersonationLevel=SecurityIdentification(0x1)>
# Security Descriptor
>>> sd = windows.security.SecurityDescriptor.from_filename("c:\windows\system32\kernel32.dll")
>>> sd
<SecurityDescriptor object at 0x054E3DF0>
>>> windows.utils.lookup_sid(sd.owner)
(u'NT SERVICE', u'TrustedInstaller')
>>> sd.dacl
<Acl count=6>
>>> list(sd.dacl)
[<AccessAllowedACE mask=2032127>, <AccessAllowedACE mask=1179817>, <AccessAllowedACE mask=1179817>, <AccessAllowedACE mask=1179817>, <AccessAllowedACE mask=1179817>, <AccessAllowedACE mask=1179817>]
>>> sd.dacl[1].sid
<PSID "S-1-5-32-544">
```
### Wintrust
@@ -110,7 +242,7 @@ SignatureData(signed=True,
catalog=u'C:\\Windows\\system32\\CatRoot\\{F750E6C3-38EE-11D1-85E5-00C04FC295EE}\\Package_35_for_KB3128650~31bf3856ad364e35~amd64~~6.3.1.2.cat',
catalogsigned=True, additionalinfo=0L)
>>> windows.wintrust.full_signature_information(r"C:\Windows\system32\python27.dll")
SignatureData(signed=False, catalog=None, catalogsigned=False, additionalinfo=TRUST_E_NOSIGNATURE(0x800b0100L))
SignatureData(signed=False, catalog=None, catalogsigned=False, additionalinfo=TRUST_E_NOSIGNATURE(0x800b0100))
```
### WMI
@@ -120,10 +252,11 @@ To extract/play with even more information about the system, PythonForWindows is
```python
>>> import windows
>>> windows.system.wmi.select
<bound method WmiRequester.select of <windows.winobject.wmi.WmiRequester object at 0x036BA590>>
>>> windows.system.wmi.select("Win32_Process", ["Name", "Handle"])[:4]
[{'Handle': u'0', 'Name': u'System Idle Process'}, {'Handle': u'4', 'Name': u'System'}, {'Handle': u'412', 'Name': u'smss.exe'}, {'Handle': u'528', 'Name': u'csrss.exe'}]
# Get WMI data for current process
<bound method WmiNamespace.select of <WmiNamespace "root\cimv2">>
>>> windows.system.wmi.select("Win32_Process")[:3]
[<WmiObject instance of "Win32_Process">, <WmiObject instance of "Win32_Process">, <WmiObject instance of "Win32_Process">]# Get WMI data for current process
>>> windows.system.wmi.select("Win32_Process")[42]["Name"]
u'svchost.exe'
>>> wmi_cp = [p for p in windows.system.wmi.select("Win32_Process") if int(p["Handle"]) == windows.current_process.pid][0]
>>> wmi_cp["CommandLine"], wmi_cp["HandleCount"]
(u'"C:\\Python27\\python.exe"', 227)
@@ -141,7 +274,7 @@ The project also contains some wrapping classes around `_winreg` for simpler use
>>> cuuser_software
<PyHKey "HKEY_CURRENT_USER\Software">
>>> cuuser_software.sam
KEY_READ(0x20019L)
KEY_READ(0x20019)
# Explore subkeys
>>> cuuser_software.subkeys[:3]
[<PyHKey "HKEY_CURRENT_USER\Software\7-Zip">, <PyHKey "HKEY_CURRENT_USER\Software\AppDataLow">, <PyHKey "HKEY_CURRENT_USER\Software\Audacity">]
@@ -158,6 +291,135 @@ KeyValue(name='MYQWORD', value=123456789987654321L, type=11)
[KeyValue(name='MYQWORD', value=123456789987654321L, type=11), KeyValue(name='VALUE', value=u'a_value_for_my_key', type=1)]
```
### Object manager
PythonForWindows uses the native Windows NT API to display some information about the object in the Object Manager's name space.
Just like the well-known tools ``winobj.exe``
```python
>>> windows.system.object_manager.root
<KernelObject "\" (type="Directory")>
# The objects of type "Directory" can be acceded just like a dict
>>> list(windows.system.object_manager.root)[:3]
[u'PendingRenameMutex', u'ObjectTypes', u'storqosfltport']
# Find an object by its path
>>> windows.system.object_manager["KnownDLLs\\kernel32.dll"]
<KernelObject "\KnownDLLs\kernel32.dll" (type="Section")>
>>> k32 = windows.system.object_manager["KnownDLLs\\kernel32.dll"]
>>> k32.name, k32.fullname, k32.type
('kernel32.dll', '\\KnownDLLs\\kernel32.dll', u'Section')
# Follow SymbolicLink object
>>> windows.system.object_manager["\\KnownDLLs\\KnownDLLPath"]
<KernelObject "\KnownDLLs\KnownDLLPath" (type="SymbolicLink")>
>>> windows.system.object_manager["\\KnownDLLs\\KnownDLLPath"].target
u'C:\\WINDOWS\\System32'
```
### Scheduled Task
The ``windows.system.task_scheduler`` object allows to query and create scheduled task.
**This part is still in developpement and the API may evolve**
```python
>>> windows.system.task_scheduler
<TaskService at 0x4774670>
>>> windows.system.task_scheduler.root
<TaskFolder "\" at 0x4774710>
>>> task = windows.system.task_scheduler.root.tasks[2]
>>> task
<Task "DemoTask" at 0x47748f0>
>>> task.name
u'DemoTask'
# Explore task actions
>>> task.definition.actions[1]
<ExecAction at 0x4774800>
>>> task.definition.actions[1].path
u'c:\\windows\\python\\python.exe'
>>> task.definition.actions[1].arguments
u'yolo.py --test'
```
### Event logs
The ``windows.system.event_log`` object allows to query event logs.
**This part is still in developpement and the API may evolve**
```python
>>> windows.system.event_log
<windows.winobject.event_log.EvtlogManager object at 0x04A78270>
# Find a channel by its name
>>> chan = windows.system.event_log["Microsoft-Windows-Windows Firewall With Advanced Security/Firewall"]
>>> chan
<EvtChannel "Microsoft-Windows-Windows Firewall With Advanced Security/Firewall">
# Open .evtx files
>>> windows.system.event_log["test.evtx"]
<EvtFile "test.evtx">
# Query a channel for all events
>>> chan.query().all()[:2]
[<EvtEvent id="2004" time="2018-07-12 07:44:08.081504">, <EvtEvent id="2006" time="2018-07-12 07:57:59.806938">]
# Query a channel for some ids
>>> chan.query(ids=2004).all()[:2]
[<EvtEvent id="2004" time="2018-07-12 07:44:08.081504">, <EvtEvent id="2004" time="2018-07-12 07:57:59.815156">]
# Query a channel via XPATH
>>> evt = chan.query("Event/EventData[Data='Netflix']").all()[0]
# Explore event information
>>> evt
<EvtEvent id="2006" time="2018-07-17 10:32:39.160423">
>>> evt.data
{u'ModifyingUser': 69828304, u'RuleName': u'Netflix', u'ModifyingApplication': ...}
```
### ALPC-RPC
#### ALPC
Classes around **A**dvanced **L**ocal **P**rocedure **C**all (**ALPC**) syscalls allows to simply
write client and server able to send **ALPC** messages.
```python
>>> import windows.alpc
# Test server juste reply to each message with "REQUEST '{msg_data}' RECEIVED"
>>> client = windows.alpc.AlpcClient(r"\RPC Control\PythonForWindowsTESTPORT")
>>> response = client.send_receive("Hello world !")
>>> response
<windows.alpc.AlpcMessage object at 0x04C0D5D0>
>>> response.data
"REQUEST 'Hello world !' RECEIVED"
```
Full client/server code for this example is available is the [ALPC samples][ONLINE_SAMPLE_ALPC] along with a more complex example.
#### RPC
An RPC-Client based using **ALPC** communication is also integred
```python
# Server (port ALPC '\RPC Control\HelloRpc') offers:
# Interface '41414141-4242-4343-4444-45464748494a' version 1.0
# Method 1 -> int Add(int a, int b) -> return a + b
# This Test server is a real RPC Server using rpcrt4.dll and compiled with VS2015.
>>> import windows.rpc
>>> from windows.rpc import ndr
>>> client = windows.rpc.RPCClient(r"\RPC Control\HelloRpc")
>>> client
<windows.rpc.client.RPCClient object at 0x0411E130>
>>> iid = client.bind("41414141-4242-4343-4444-45464748494a")
>>> ndr_params = ndr.make_parameters([ndr.NdrLong] * 2)
# NDR pack + Make RPC call to method 1.
>>> resp = client.call(iid, 1, ndr_params.pack([41414141, 1010101]))
# Unpack the NDR response
>>> result = ndr.NdrLong.unpack(ndr.NdrStream(resp))
>>> result
42424242
```
A sample with the **U**ser **A**ccount **C**ontrol (**UAC**) and one with `lsasrv.dll` are available in the [RPC samples][ONLINE_SAMPLE_RPC].
### Debugger
PythonForWindows provides a standard debugger to debug other processes.
@@ -167,28 +429,28 @@ import windows
import windows.debug
import windows.test
import windows.native_exec.simple_x86 as x86
import windows.generated_def as gdef
from windows.test import pop_calc_32
from windows.generated_def import EXCEPTION_ACCESS_VIOLATION
from windows.test import pop_proc_32
class MyDebugger(windows.debug.Debugger):
def on_exception(self, exception):
code = exception.ExceptionRecord.ExceptionCode
addr = exception.ExceptionRecord.ExceptionAddress
print("Got exception {0} at 0x{1:x}".format(code, addr))
if code == EXCEPTION_ACCESS_VIOLATION:
if code == gdef.EXCEPTION_ACCESS_VIOLATION:
print("Access Violation: kill target process")
self.current_process.exit()
calc = windows.test.pop_calc_32(dwCreationFlags=DEBUG_PROCESS)
calc = windows.test.pop_proc_32(dwCreationFlags=gdef.DEBUG_PROCESS)
d = MyDebugger(calc)
calc.execute(x86.assemble("int3; mov [0x42424242], EAX; ret"))
d.loop()
## Ouput ##
Got exception EXCEPTION_BREAKPOINT(0x80000003L) at 0x77e13c7d
Got exception EXCEPTION_BREAKPOINT(0x80000003L) at 0x230000
Got exception EXCEPTION_ACCESS_VIOLATION(0xc0000005L) at 0x230001
Got exception EXCEPTION_BREAKPOINT(0x80000003) at 0x77e13c7d
Got exception EXCEPTION_BREAKPOINT(0x80000003) at 0x230000
Got exception EXCEPTION_ACCESS_VIOLATION(0xc0000005) at 0x230001
Access Violation: kill target process
```
@@ -247,10 +509,10 @@ print("Done!")
Code addr = 0x6a0002
GOT AN HXBP at 0x6a0002
EXCEPTION !!!! Got a EXCEPTION_SINGLE_STEP(0x80000004L) at 0x6a0003
EXCEPTION !!!! Got a EXCEPTION_SINGLE_STEP(0x80000004L) at 0x6a0004
EXCEPTION !!!! Got a EXCEPTION_SINGLE_STEP(0x80000004L) at 0x6a0005
EXCEPTION !!!! Got a EXCEPTION_SINGLE_STEP(0x80000004L) at 0x770c7c04
EXCEPTION !!!! Got a EXCEPTION_SINGLE_STEP(0x80000004) at 0x6a0003
EXCEPTION !!!! Got a EXCEPTION_SINGLE_STEP(0x80000004) at 0x6a0004
EXCEPTION !!!! Got a EXCEPTION_SINGLE_STEP(0x80000004) at 0x6a0005
EXCEPTION !!!! Got a EXCEPTION_SINGLE_STEP(0x80000004) at 0x770c7c04
Done!
```
@@ -263,12 +525,17 @@ The local debugger handles
### Other stuff (see doc / samples)
- Network
- Services
- COM
## Acknowledgments
* clmntb for his initial work on ``windows.security``
[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
+50 -8
View File
@@ -1,27 +1,69 @@
TODO:
- Documentation
- Better WMI interface
-- CRITICAL BEFORE 0.6 ? --
- Document / fix / release:
- windows.bits
- window
- Ndr:
- Handle les struct conformant imbriquees
- Handle le packing de struct specifique
======
- DBG
- FIX BP API !!
- add_bp(target=XXX) vs del_bp(targets=XXX) ....
- Verif multiple bp at same place..
- Verif multiple pending at same place
- Test !! (bp, BP_HX, bp on only on process, bp_hx on only one thread..)
- test breakpoint with specific target
- Rethink/adapt Debugger._explicit_single_step
- Does not handle case where EEFlags.TF was by the debugge before trigering the exception
- Should set the flag explicitly in single_step ? and not just use EEFlags.TF ?
- _handle_load_dll
- error in keys of 'self._module_by_process[self.current_process.pid]'
- if I have a ntdll32 and ntdll64: both would have the same name in the list..
- Il y a un truc fucked-up avec le add_bp(target=XXX)
- j'attends a avoir un thread/process mais je fait des check sur TID/PID..
- Ecrire un test et fix..
- remotectypes
- pretty sur I can get rid of PointerToStruct64/PointerToStruct32
- Some test/doc on windows.system.handles
- registry
- test !
- winutils
- some stuff in winutils.py are not documented.
- Fix/test/refactor API + doc
- winobject\exception.py
- large part could be rewritten with ctypes-generation extended-def
- add winobject/window.py
- Some test/doc
- wintrust doc:
add : https://blogs.msdn.microsoft.com/winsdk/2016/01/05/why-cryptcatadmincalchashfromfilehandle-fails-with-a-seemingly-unexpected-error-code/
- COM:
- test https://msdn.microsoft.com/en-us/library/vs/alm/hh846255(v=vs.85).aspx
- Hook
- Probleme with enabled hook + gc
- Prevent GC of enabled hook ?
- Raise on deletion of enabled hook ?
- if I implem __del__ -> we have a __del__ cycle -> no gc (gc.garbage instead..)
Documentation
* verif samples
FIXME:
- Push("[ECX]") in simple_x64 as a "H" rex and i think it should not..
* windows.bits
- Document change in CurrentProcess read/write memory behavior ?
RESSOURCE
* read http://www.codeproject.com/Articles/18975/Listing-Used-Files
+26 -61
View File
@@ -1,4 +1,3 @@
import StringIO
from collections import namedtuple
import dummy_wintypes
@@ -7,64 +6,19 @@ from winstruct import WinStruct, WinUnion, WinStructType, Ptr, WinEnum
from simpleparser import *
def initial_processing( data):
# https://gcc.gnu.org/onlinedocs/cpp/Initial-processing.html#Initial-processing
# Step 1 -> use correct end of line + add last \n if not existing
data = data.replace("\r\n", "\n")
if not data.endswith("\n"):
data = data + "\n"
# Step 2: Trigraph : fuck it
pass
# Step 3: Line merge !
data = data.replace("\\\n", "")
# Step 4 Remove comments:
ins = StringIO.StringIO(data)
outs = StringIO.StringIO()
in_str = False
res = []
while ins.tell() != len(data):
c = ins.read(1)
if ins.tell() == len(data):
outs.write(c)
break
if not in_str and c == "/":
nc = ins.read(1)
if nc == "/":
while c != "\n":
c = ins.read(1)
outs.write(c)
continue
elif nc == "*":
while c != "*" or nc != "/":
c = nc
nc = ins.read(1)
if not nc:
raise ValueError("Unmatched */")
outs.write(" ")
continue
else:
outs.write(c)
ins.seek(ins.tell() - 1)
continue
# TODO: escape in str
elif c == '"':
in_str = not in_str
outs.write(c)
outs.seek(0)
return outs.read()
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"]
"__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_"]
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"]
"__in_ecount", "__out_bcount_opt", "__out_bcount", "__in_bcount", "__in_bcount_opt", "__RPC__out_ecount_full_string",
"__RPC__deref_out_ecount_full_opt", "__out_ecount_part", "__deref_out_range", "__out_bcount_part",
"_Outptr_result_buffer_"]
def __init__(self, data):
data = initial_processing(data)
# data = self.initial_processing(data)
#print(data)
super(WinComParser, self).__init__(data)
@@ -83,9 +37,13 @@ class WinComParser(Parser):
if ign.value in self.PARAM_INFO_WITH_VALUE:
# pass __RPC__in_ecount(cNames)
self.assert_token_type(OpenParenthesisToken)
while type(self.peek()) != CloseParenthesisToken:
self.next_token()
self.next_token()
depth = 1
while depth:
ntok = self.next_token()
if type(ntok) == CloseParenthesisToken:
depth -= 1
elif type(ntok) == OpenParenthesisToken:
depth +=1
if self.peek() == KeywordToken("const"):
self.next_token()
type_name = self.assert_token_type(NameToken)
@@ -117,14 +75,16 @@ class WinComParser(Parser):
args = []
self.assert_token_type(OpenParenthesisToken)
while type(self.peek()) != CloseParenthesisToken:
# TODO: handle call with VARGS ?
if self.peek().value == "...":
if self.peek().value == "...": #TODO: '...' token ?
self.next_token()
# '...' should be last token before ')'
args.append("...") # Put a type ?
assert type(self.peek()) == CloseParenthesisToken
continue
args.append(self.parse_argument())
#print("Pass <{0}>".format(p))
self.next_token()
self.assert_token_type(ColonToken)
self.assert_token_type(SemiColonToken)
return ret_type.value, method_name.value, args
def parse(self):
@@ -160,13 +120,13 @@ class WinComParser(Parser):
self.next_token()
self.assert_token_type(StarToken)
typedefptr = self.assert_token_type(NameToken).value
self.assert_token_type(ColonToken)
self.assert_token_type(SemiColonToken)
res.typedefptr = typedefptr
return res
#print(self.data)
Method = namedtuple("Method", ["ret_type", "name", "args"])
Method = namedtuple("Method", ["ret_type", "name", "args", 'functype'])
MethodArg = namedtuple("MethodArg", ["type", "byreflevel", "name"])
class WinCOMVTABLE(object):
def __init__(self, vtbl_name):
@@ -178,6 +138,11 @@ class WinCOMVTABLE(object):
def add_method(self, ret_type, method_name, args):
new_args = []
functype = 'stdcall'
if args[-1] == "...":
print("{0}.{1} is a cdecl COM method".format(self.name, method_name))
args = args[:-1]
functype = 'cdecl'
for type, byreflevel, name in args:
if type in ["long", "int"]:
type = type.upper()
@@ -185,7 +150,7 @@ class WinCOMVTABLE(object):
if ret_type in ["long", "int"]:
ret_type = ret_type.upper()
self.methods.append(Method(ret_type, method_name, new_args))
self.methods.append(Method(ret_type, method_name, new_args, functype))
if __name__ == "__main__":
+23 -5
View File
@@ -7,12 +7,13 @@ class WinDef(object):
def __init__(self, name, code):
self.name = name
self.code = code
def generate_ctypes(self):
return """{0} = Flag("{0}", {1})""".format(self.name, self.code)
if self.code[-1] == "L" and self.code[0].isdigit():
self.code = self.code[:-1]
return """{0} = make_flag("{0}", {1})""".format(self.name, self.code)
class WinDefParser(Parser):
def parse_define(self):
self.assert_token_type(SharpToken)
define = self.assert_token_type(NameToken)
@@ -26,9 +27,26 @@ class WinDefParser(Parser):
v = v[:-1]
define_value.append(v)
return WinDef(define_name.value, " ".join(define_value))
def parse(self):
res = []
while self.peek() is not None:
res.append(self.parse_define())
return res
return res
# A simple Fake parser for NTSTATUS
class NtStatusParser(object):
def __init__(self, data):
self.input = data
def parse(self):
nt_status_defs = []
for line in self.input.split("\n"):
if not line:
continue
code, name, descr = line.split("|", 2)
code = int(code, 0)
descr = re.sub(" +", " ", descr[:-1]) # remove \n
descr = descr.replace('"', "'")
nt_status_defs.append((code, name, descr))
return nt_status_defs
@@ -0,0 +1,32 @@
typedef struct IBackgroundCopyCallbackVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in IBackgroundCopyCallback * This,
/* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in IBackgroundCopyCallback * This);
ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in IBackgroundCopyCallback * This);
HRESULT ( STDMETHODCALLTYPE *JobTransferred )(
__RPC__in IBackgroundCopyCallback * This,
/* [in] */ __RPC__in_opt IBackgroundCopyJob *pJob);
HRESULT ( STDMETHODCALLTYPE *JobError )(
__RPC__in IBackgroundCopyCallback * This,
/* [in] */ __RPC__in_opt IBackgroundCopyJob *pJob,
/* [in] */ __RPC__in_opt IBackgroundCopyError *pError);
HRESULT ( STDMETHODCALLTYPE *JobModification )(
__RPC__in IBackgroundCopyCallback * This,
/* [in] */ __RPC__in_opt IBackgroundCopyJob *pJob,
/* [in] */ DWORD dwReserved);
END_INTERFACE
} IBackgroundCopyCallbackVtbl;
@@ -0,0 +1,41 @@
typedef struct IBackgroundCopyErrorVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in IBackgroundCopyError * This,
/* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in IBackgroundCopyError * This);
ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in IBackgroundCopyError * This);
HRESULT ( STDMETHODCALLTYPE *GetError )(
__RPC__in IBackgroundCopyError * This,
/* [ref][out] */ __RPC__out BG_ERROR_CONTEXT *pContext,
/* [ref][out] */ __RPC__out HRESULT *pCode);
HRESULT ( STDMETHODCALLTYPE *GetFile )(
__RPC__in IBackgroundCopyError * This,
/* [out] */ __RPC__deref_out_opt IBackgroundCopyFile **pVal);
HRESULT ( STDMETHODCALLTYPE *GetErrorDescription )(
__RPC__in IBackgroundCopyError * This,
/* [in] */ DWORD LanguageId,
/* [ref][out] */ __RPC__deref_out_opt LPWSTR *pErrorDescription);
HRESULT ( STDMETHODCALLTYPE *GetErrorContextDescription )(
__RPC__in IBackgroundCopyError * This,
/* [in] */ DWORD LanguageId,
/* [ref][out] */ __RPC__deref_out_opt LPWSTR *pContextDescription);
HRESULT ( STDMETHODCALLTYPE *GetProtocol )(
__RPC__in IBackgroundCopyError * This,
/* [ref][out] */ __RPC__deref_out_opt LPWSTR *pProtocol);
END_INTERFACE
} IBackgroundCopyErrorVtbl;
@@ -0,0 +1,30 @@
typedef struct IBackgroundCopyFileVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in IBackgroundCopyFile * This,
/* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in IBackgroundCopyFile * This);
ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in IBackgroundCopyFile * This);
HRESULT ( STDMETHODCALLTYPE *GetRemoteName )(
__RPC__in IBackgroundCopyFile * This,
/* [out] */ __RPC__deref_out_opt LPWSTR *pVal);
HRESULT ( STDMETHODCALLTYPE *GetLocalName )(
__RPC__in IBackgroundCopyFile * This,
/* [out] */ __RPC__deref_out_opt LPWSTR *pVal);
HRESULT ( STDMETHODCALLTYPE *GetProgress )(
__RPC__in IBackgroundCopyFile * This,
/* [out] */ __RPC__out BG_FILE_PROGRESS *pVal);
END_INTERFACE
} IBackgroundCopyFileVtbl;
@@ -0,0 +1,39 @@
typedef struct IBackgroundCopyFile2Vtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in IBackgroundCopyFile2 * This,
/* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in IBackgroundCopyFile2 * This);
ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in IBackgroundCopyFile2 * This);
HRESULT ( STDMETHODCALLTYPE *GetRemoteName )(
__RPC__in IBackgroundCopyFile2 * This,
/* [out] */ __RPC__deref_out_opt LPWSTR *pVal);
HRESULT ( STDMETHODCALLTYPE *GetLocalName )(
__RPC__in IBackgroundCopyFile2 * This,
/* [out] */ __RPC__deref_out_opt LPWSTR *pVal);
HRESULT ( STDMETHODCALLTYPE *GetProgress )(
__RPC__in IBackgroundCopyFile2 * This,
/* [out] */ __RPC__out BG_FILE_PROGRESS *pVal);
HRESULT ( STDMETHODCALLTYPE *GetFileRanges )(
__RPC__in IBackgroundCopyFile2 * This,
/* [unique][out][in] */ __RPC__inout_opt DWORD *RangeCount,
/* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*RangeCount) BG_FILE_RANGE **Ranges);
HRESULT ( STDMETHODCALLTYPE *SetRemoteName )(
__RPC__in IBackgroundCopyFile2 * This,
__RPC__in LPCWSTR Val);
END_INTERFACE
} IBackgroundCopyFile2Vtbl;
@@ -0,0 +1,55 @@
typedef struct IBackgroundCopyFile3Vtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in IBackgroundCopyFile3 * This,
/* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in IBackgroundCopyFile3 * This);
ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in IBackgroundCopyFile3 * This);
HRESULT ( STDMETHODCALLTYPE *GetRemoteName )(
__RPC__in IBackgroundCopyFile3 * This,
/* [out] */ __RPC__deref_out_opt LPWSTR *pVal);
HRESULT ( STDMETHODCALLTYPE *GetLocalName )(
__RPC__in IBackgroundCopyFile3 * This,
/* [out] */ __RPC__deref_out_opt LPWSTR *pVal);
HRESULT ( STDMETHODCALLTYPE *GetProgress )(
__RPC__in IBackgroundCopyFile3 * This,
/* [out] */ __RPC__out BG_FILE_PROGRESS *pVal);
HRESULT ( STDMETHODCALLTYPE *GetFileRanges )(
__RPC__in IBackgroundCopyFile3 * This,
/* [unique][out][in] */ __RPC__inout_opt DWORD *RangeCount,
/* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*RangeCount) BG_FILE_RANGE **Ranges);
HRESULT ( STDMETHODCALLTYPE *SetRemoteName )(
__RPC__in IBackgroundCopyFile3 * This,
__RPC__in LPCWSTR Val);
HRESULT ( STDMETHODCALLTYPE *GetTemporaryName )(
__RPC__in IBackgroundCopyFile3 * This,
/* [out] */ __RPC__deref_out_opt LPWSTR *pFilename);
HRESULT ( STDMETHODCALLTYPE *SetValidationState )(
__RPC__in IBackgroundCopyFile3 * This,
/* [in] */ BOOL state);
HRESULT ( STDMETHODCALLTYPE *GetValidationState )(
__RPC__in IBackgroundCopyFile3 * This,
/* [out] */ __RPC__out BOOL *pState);
HRESULT ( STDMETHODCALLTYPE *IsDownloadedFromPeer )(
__RPC__in IBackgroundCopyFile3 * This,
/* [out] */ __RPC__out BOOL *pVal);
END_INTERFACE
} IBackgroundCopyFile3Vtbl;
@@ -0,0 +1,147 @@
typedef struct IBackgroundCopyJobVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in IBackgroundCopyJob * This,
/* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in IBackgroundCopyJob * This);
ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in IBackgroundCopyJob * This);
HRESULT ( STDMETHODCALLTYPE *AddFileSet )(
__RPC__in IBackgroundCopyJob * This,
/* [in] */ ULONG cFileCount,
/* [size_is][in] */ __RPC__in_ecount_full(cFileCount) BG_FILE_INFO *pFileSet);
HRESULT ( STDMETHODCALLTYPE *AddFile )(
__RPC__in IBackgroundCopyJob * This,
/* [in] */ __RPC__in LPCWSTR RemoteUrl,
/* [in] */ __RPC__in LPCWSTR LocalName);
HRESULT ( STDMETHODCALLTYPE *EnumFiles )(
__RPC__in IBackgroundCopyJob * This,
/* [out] */ __RPC__deref_out_opt IEnumBackgroundCopyFiles **pEnum);
HRESULT ( STDMETHODCALLTYPE *Suspend )(
__RPC__in IBackgroundCopyJob * This);
HRESULT ( STDMETHODCALLTYPE *Resume )(
__RPC__in IBackgroundCopyJob * This);
HRESULT ( STDMETHODCALLTYPE *Cancel )(
__RPC__in IBackgroundCopyJob * This);
HRESULT ( STDMETHODCALLTYPE *Complete )(
__RPC__in IBackgroundCopyJob * This);
HRESULT ( STDMETHODCALLTYPE *GetId )(
__RPC__in IBackgroundCopyJob * This,
/* [out] */ __RPC__out GUID *pVal);
HRESULT ( STDMETHODCALLTYPE *GetType )(
__RPC__in IBackgroundCopyJob * This,
/* [out] */ __RPC__out BG_JOB_TYPE *pVal);
HRESULT ( STDMETHODCALLTYPE *GetProgress )(
__RPC__in IBackgroundCopyJob * This,
/* [out] */ __RPC__out BG_JOB_PROGRESS *pVal);
HRESULT ( STDMETHODCALLTYPE *GetTimes )(
__RPC__in IBackgroundCopyJob * This,
/* [out] */ __RPC__out BG_JOB_TIMES *pVal);
HRESULT ( STDMETHODCALLTYPE *GetState )(
__RPC__in IBackgroundCopyJob * This,
/* [out] */ __RPC__out BG_JOB_STATE *pVal);
HRESULT ( STDMETHODCALLTYPE *GetError )(
__RPC__in IBackgroundCopyJob * This,
/* [out] */ __RPC__deref_out_opt IBackgroundCopyError **ppError);
HRESULT ( STDMETHODCALLTYPE *GetOwner )(
__RPC__in IBackgroundCopyJob * This,
/* [out] */ __RPC__deref_out_opt LPWSTR *pVal);
HRESULT ( STDMETHODCALLTYPE *SetDisplayName )(
__RPC__in IBackgroundCopyJob * This,
/* [in] */ __RPC__in LPCWSTR Val);
HRESULT ( STDMETHODCALLTYPE *GetDisplayName )(
__RPC__in IBackgroundCopyJob * This,
/* [out] */ __RPC__deref_out_opt LPWSTR *pVal);
HRESULT ( STDMETHODCALLTYPE *SetDescription )(
__RPC__in IBackgroundCopyJob * This,
/* [in] */ __RPC__in LPCWSTR Val);
HRESULT ( STDMETHODCALLTYPE *GetDescription )(
__RPC__in IBackgroundCopyJob * This,
/* [out] */ __RPC__deref_out_opt LPWSTR *pVal);
HRESULT ( STDMETHODCALLTYPE *SetPriority )(
__RPC__in IBackgroundCopyJob * This,
/* [in] */ BG_JOB_PRIORITY Val);
HRESULT ( STDMETHODCALLTYPE *GetPriority )(
__RPC__in IBackgroundCopyJob * This,
/* [out] */ __RPC__out BG_JOB_PRIORITY *pVal);
HRESULT ( STDMETHODCALLTYPE *SetNotifyFlags )(
__RPC__in IBackgroundCopyJob * This,
/* [in] */ ULONG Val);
HRESULT ( STDMETHODCALLTYPE *GetNotifyFlags )(
__RPC__in IBackgroundCopyJob * This,
/* [out] */ __RPC__out ULONG *pVal);
HRESULT ( STDMETHODCALLTYPE *SetNotifyInterface )(
__RPC__in IBackgroundCopyJob * This,
/* [in] */ __RPC__in_opt IUnknown *Val);
HRESULT ( STDMETHODCALLTYPE *GetNotifyInterface )(
__RPC__in IBackgroundCopyJob * This,
/* [out] */ __RPC__deref_out_opt IUnknown **pVal);
HRESULT ( STDMETHODCALLTYPE *SetMinimumRetryDelay )(
__RPC__in IBackgroundCopyJob * This,
/* [in] */ ULONG Seconds);
HRESULT ( STDMETHODCALLTYPE *GetMinimumRetryDelay )(
__RPC__in IBackgroundCopyJob * This,
/* [out] */ __RPC__out ULONG *Seconds);
HRESULT ( STDMETHODCALLTYPE *SetNoProgressTimeout )(
__RPC__in IBackgroundCopyJob * This,
/* [in] */ ULONG Seconds);
HRESULT ( STDMETHODCALLTYPE *GetNoProgressTimeout )(
__RPC__in IBackgroundCopyJob * This,
/* [out] */ __RPC__out ULONG *Seconds);
HRESULT ( STDMETHODCALLTYPE *GetErrorCount )(
__RPC__in IBackgroundCopyJob * This,
/* [out] */ __RPC__out ULONG *Errors);
HRESULT ( STDMETHODCALLTYPE *SetProxySettings )(
__RPC__in IBackgroundCopyJob * This,
/* [in] */ BG_JOB_PROXY_USAGE ProxyUsage,
/* [unique][string][in] */ __RPC__in_opt_string const WCHAR *ProxyList,
/* [unique][string][in] */ __RPC__in_opt_string const WCHAR *ProxyBypassList);
HRESULT ( STDMETHODCALLTYPE *GetProxySettings )(
__RPC__in IBackgroundCopyJob * This,
/* [out] */ __RPC__out BG_JOB_PROXY_USAGE *pProxyUsage,
/* [out] */ __RPC__deref_out_opt LPWSTR *pProxyList,
/* [out] */ __RPC__deref_out_opt LPWSTR *pProxyBypassList);
HRESULT ( STDMETHODCALLTYPE *TakeOwnership )(
__RPC__in IBackgroundCopyJob * This);
END_INTERFACE
} IBackgroundCopyJobVtbl;
@@ -0,0 +1,183 @@
typedef struct IBackgroundCopyJob2Vtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in IBackgroundCopyJob2 * This,
/* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in IBackgroundCopyJob2 * This);
ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in IBackgroundCopyJob2 * This);
HRESULT ( STDMETHODCALLTYPE *AddFileSet )(
__RPC__in IBackgroundCopyJob2 * This,
/* [in] */ ULONG cFileCount,
/* [size_is][in] */ __RPC__in_ecount_full(cFileCount) BG_FILE_INFO *pFileSet);
HRESULT ( STDMETHODCALLTYPE *AddFile )(
__RPC__in IBackgroundCopyJob2 * This,
/* [in] */ __RPC__in LPCWSTR RemoteUrl,
/* [in] */ __RPC__in LPCWSTR LocalName);
HRESULT ( STDMETHODCALLTYPE *EnumFiles )(
__RPC__in IBackgroundCopyJob2 * This,
/* [out] */ __RPC__deref_out_opt IEnumBackgroundCopyFiles **pEnum);
HRESULT ( STDMETHODCALLTYPE *Suspend )(
__RPC__in IBackgroundCopyJob2 * This);
HRESULT ( STDMETHODCALLTYPE *Resume )(
__RPC__in IBackgroundCopyJob2 * This);
HRESULT ( STDMETHODCALLTYPE *Cancel )(
__RPC__in IBackgroundCopyJob2 * This);
HRESULT ( STDMETHODCALLTYPE *Complete )(
__RPC__in IBackgroundCopyJob2 * This);
HRESULT ( STDMETHODCALLTYPE *GetId )(
__RPC__in IBackgroundCopyJob2 * This,
/* [out] */ __RPC__out GUID *pVal);
HRESULT ( STDMETHODCALLTYPE *GetType )(
__RPC__in IBackgroundCopyJob2 * This,
/* [out] */ __RPC__out BG_JOB_TYPE *pVal);
HRESULT ( STDMETHODCALLTYPE *GetProgress )(
__RPC__in IBackgroundCopyJob2 * This,
/* [out] */ __RPC__out BG_JOB_PROGRESS *pVal);
HRESULT ( STDMETHODCALLTYPE *GetTimes )(
__RPC__in IBackgroundCopyJob2 * This,
/* [out] */ __RPC__out BG_JOB_TIMES *pVal);
HRESULT ( STDMETHODCALLTYPE *GetState )(
__RPC__in IBackgroundCopyJob2 * This,
/* [out] */ __RPC__out BG_JOB_STATE *pVal);
HRESULT ( STDMETHODCALLTYPE *GetError )(
__RPC__in IBackgroundCopyJob2 * This,
/* [out] */ __RPC__deref_out_opt IBackgroundCopyError **ppError);
HRESULT ( STDMETHODCALLTYPE *GetOwner )(
__RPC__in IBackgroundCopyJob2 * This,
/* [out] */ __RPC__deref_out_opt LPWSTR *pVal);
HRESULT ( STDMETHODCALLTYPE *SetDisplayName )(
__RPC__in IBackgroundCopyJob2 * This,
/* [in] */ __RPC__in LPCWSTR Val);
HRESULT ( STDMETHODCALLTYPE *GetDisplayName )(
__RPC__in IBackgroundCopyJob2 * This,
/* [out] */ __RPC__deref_out_opt LPWSTR *pVal);
HRESULT ( STDMETHODCALLTYPE *SetDescription )(
__RPC__in IBackgroundCopyJob2 * This,
/* [in] */ __RPC__in LPCWSTR Val);
HRESULT ( STDMETHODCALLTYPE *GetDescription )(
__RPC__in IBackgroundCopyJob2 * This,
/* [out] */ __RPC__deref_out_opt LPWSTR *pVal);
HRESULT ( STDMETHODCALLTYPE *SetPriority )(
__RPC__in IBackgroundCopyJob2 * This,
/* [in] */ BG_JOB_PRIORITY Val);
HRESULT ( STDMETHODCALLTYPE *GetPriority )(
__RPC__in IBackgroundCopyJob2 * This,
/* [out] */ __RPC__out BG_JOB_PRIORITY *pVal);
HRESULT ( STDMETHODCALLTYPE *SetNotifyFlags )(
__RPC__in IBackgroundCopyJob2 * This,
/* [in] */ ULONG Val);
HRESULT ( STDMETHODCALLTYPE *GetNotifyFlags )(
__RPC__in IBackgroundCopyJob2 * This,
/* [out] */ __RPC__out ULONG *pVal);
HRESULT ( STDMETHODCALLTYPE *SetNotifyInterface )(
__RPC__in IBackgroundCopyJob2 * This,
/* [in] */ __RPC__in_opt IUnknown *Val);
HRESULT ( STDMETHODCALLTYPE *GetNotifyInterface )(
__RPC__in IBackgroundCopyJob2 * This,
/* [out] */ __RPC__deref_out_opt IUnknown **pVal);
HRESULT ( STDMETHODCALLTYPE *SetMinimumRetryDelay )(
__RPC__in IBackgroundCopyJob2 * This,
/* [in] */ ULONG Seconds);
HRESULT ( STDMETHODCALLTYPE *GetMinimumRetryDelay )(
__RPC__in IBackgroundCopyJob2 * This,
/* [out] */ __RPC__out ULONG *Seconds);
HRESULT ( STDMETHODCALLTYPE *SetNoProgressTimeout )(
__RPC__in IBackgroundCopyJob2 * This,
/* [in] */ ULONG Seconds);
HRESULT ( STDMETHODCALLTYPE *GetNoProgressTimeout )(
__RPC__in IBackgroundCopyJob2 * This,
/* [out] */ __RPC__out ULONG *Seconds);
HRESULT ( STDMETHODCALLTYPE *GetErrorCount )(
__RPC__in IBackgroundCopyJob2 * This,
/* [out] */ __RPC__out ULONG *Errors);
HRESULT ( STDMETHODCALLTYPE *SetProxySettings )(
__RPC__in IBackgroundCopyJob2 * This,
/* [in] */ BG_JOB_PROXY_USAGE ProxyUsage,
/* [unique][string][in] */ __RPC__in_opt_string const WCHAR *ProxyList,
/* [unique][string][in] */ __RPC__in_opt_string const WCHAR *ProxyBypassList);
HRESULT ( STDMETHODCALLTYPE *GetProxySettings )(
__RPC__in IBackgroundCopyJob2 * This,
/* [out] */ __RPC__out BG_JOB_PROXY_USAGE *pProxyUsage,
/* [out] */ __RPC__deref_out_opt LPWSTR *pProxyList,
/* [out] */ __RPC__deref_out_opt LPWSTR *pProxyBypassList);
HRESULT ( STDMETHODCALLTYPE *TakeOwnership )(
__RPC__in IBackgroundCopyJob2 * This);
HRESULT ( STDMETHODCALLTYPE *SetNotifyCmdLine )(
__RPC__in IBackgroundCopyJob2 * This,
/* [unique][in] */ __RPC__in_opt LPCWSTR Program,
/* [unique][in] */ __RPC__in_opt LPCWSTR Parameters);
HRESULT ( STDMETHODCALLTYPE *GetNotifyCmdLine )(
__RPC__in IBackgroundCopyJob2 * This,
/* [out] */ __RPC__deref_out_opt LPWSTR *pProgram,
/* [out] */ __RPC__deref_out_opt LPWSTR *pParameters);
HRESULT ( STDMETHODCALLTYPE *GetReplyProgress )(
__RPC__in IBackgroundCopyJob2 * This,
/* [out][in] */ __RPC__inout BG_JOB_REPLY_PROGRESS *pProgress);
HRESULT ( STDMETHODCALLTYPE *GetReplyData )(
__RPC__in IBackgroundCopyJob2 * This,
/* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(( unsigned long )*pLength) BYTE **ppBuffer,
/* [unique][out][in] */ __RPC__inout_opt UINT64 *pLength);
HRESULT ( STDMETHODCALLTYPE *SetReplyFileName )(
__RPC__in IBackgroundCopyJob2 * This,
/* [unique][in] */ __RPC__in_opt LPCWSTR ReplyFileName);
HRESULT ( STDMETHODCALLTYPE *GetReplyFileName )(
__RPC__in IBackgroundCopyJob2 * This,
/* [out] */ __RPC__deref_out_opt LPWSTR *pReplyFileName);
HRESULT ( STDMETHODCALLTYPE *SetCredentials )(
__RPC__in IBackgroundCopyJob2 * This,
__RPC__in BG_AUTH_CREDENTIALS *credentials);
HRESULT ( STDMETHODCALLTYPE *RemoveCredentials )(
__RPC__in IBackgroundCopyJob2 * This,
BG_AUTH_TARGET Target,
BG_AUTH_SCHEME Scheme);
END_INTERFACE
} IBackgroundCopyJob2Vtbl;
@@ -0,0 +1,203 @@
typedef struct IBackgroundCopyJob3Vtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in IBackgroundCopyJob3 * This,
/* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in IBackgroundCopyJob3 * This);
ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in IBackgroundCopyJob3 * This);
HRESULT ( STDMETHODCALLTYPE *AddFileSet )(
__RPC__in IBackgroundCopyJob3 * This,
/* [in] */ ULONG cFileCount,
/* [size_is][in] */ __RPC__in_ecount_full(cFileCount) BG_FILE_INFO *pFileSet);
HRESULT ( STDMETHODCALLTYPE *AddFile )(
__RPC__in IBackgroundCopyJob3 * This,
/* [in] */ __RPC__in LPCWSTR RemoteUrl,
/* [in] */ __RPC__in LPCWSTR LocalName);
HRESULT ( STDMETHODCALLTYPE *EnumFiles )(
__RPC__in IBackgroundCopyJob3 * This,
/* [out] */ __RPC__deref_out_opt IEnumBackgroundCopyFiles **pEnum);
HRESULT ( STDMETHODCALLTYPE *Suspend )(
__RPC__in IBackgroundCopyJob3 * This);
HRESULT ( STDMETHODCALLTYPE *Resume )(
__RPC__in IBackgroundCopyJob3 * This);
HRESULT ( STDMETHODCALLTYPE *Cancel )(
__RPC__in IBackgroundCopyJob3 * This);
HRESULT ( STDMETHODCALLTYPE *Complete )(
__RPC__in IBackgroundCopyJob3 * This);
HRESULT ( STDMETHODCALLTYPE *GetId )(
__RPC__in IBackgroundCopyJob3 * This,
/* [out] */ __RPC__out GUID *pVal);
HRESULT ( STDMETHODCALLTYPE *GetType )(
__RPC__in IBackgroundCopyJob3 * This,
/* [out] */ __RPC__out BG_JOB_TYPE *pVal);
HRESULT ( STDMETHODCALLTYPE *GetProgress )(
__RPC__in IBackgroundCopyJob3 * This,
/* [out] */ __RPC__out BG_JOB_PROGRESS *pVal);
HRESULT ( STDMETHODCALLTYPE *GetTimes )(
__RPC__in IBackgroundCopyJob3 * This,
/* [out] */ __RPC__out BG_JOB_TIMES *pVal);
HRESULT ( STDMETHODCALLTYPE *GetState )(
__RPC__in IBackgroundCopyJob3 * This,
/* [out] */ __RPC__out BG_JOB_STATE *pVal);
HRESULT ( STDMETHODCALLTYPE *GetError )(
__RPC__in IBackgroundCopyJob3 * This,
/* [out] */ __RPC__deref_out_opt IBackgroundCopyError **ppError);
HRESULT ( STDMETHODCALLTYPE *GetOwner )(
__RPC__in IBackgroundCopyJob3 * This,
/* [out] */ __RPC__deref_out_opt LPWSTR *pVal);
HRESULT ( STDMETHODCALLTYPE *SetDisplayName )(
__RPC__in IBackgroundCopyJob3 * This,
/* [in] */ __RPC__in LPCWSTR Val);
HRESULT ( STDMETHODCALLTYPE *GetDisplayName )(
__RPC__in IBackgroundCopyJob3 * This,
/* [out] */ __RPC__deref_out_opt LPWSTR *pVal);
HRESULT ( STDMETHODCALLTYPE *SetDescription )(
__RPC__in IBackgroundCopyJob3 * This,
/* [in] */ __RPC__in LPCWSTR Val);
HRESULT ( STDMETHODCALLTYPE *GetDescription )(
__RPC__in IBackgroundCopyJob3 * This,
/* [out] */ __RPC__deref_out_opt LPWSTR *pVal);
HRESULT ( STDMETHODCALLTYPE *SetPriority )(
__RPC__in IBackgroundCopyJob3 * This,
/* [in] */ BG_JOB_PRIORITY Val);
HRESULT ( STDMETHODCALLTYPE *GetPriority )(
__RPC__in IBackgroundCopyJob3 * This,
/* [out] */ __RPC__out BG_JOB_PRIORITY *pVal);
HRESULT ( STDMETHODCALLTYPE *SetNotifyFlags )(
__RPC__in IBackgroundCopyJob3 * This,
/* [in] */ ULONG Val);
HRESULT ( STDMETHODCALLTYPE *GetNotifyFlags )(
__RPC__in IBackgroundCopyJob3 * This,
/* [out] */ __RPC__out ULONG *pVal);
HRESULT ( STDMETHODCALLTYPE *SetNotifyInterface )(
__RPC__in IBackgroundCopyJob3 * This,
/* [in] */ __RPC__in_opt IUnknown *Val);
HRESULT ( STDMETHODCALLTYPE *GetNotifyInterface )(
__RPC__in IBackgroundCopyJob3 * This,
/* [out] */ __RPC__deref_out_opt IUnknown **pVal);
HRESULT ( STDMETHODCALLTYPE *SetMinimumRetryDelay )(
__RPC__in IBackgroundCopyJob3 * This,
/* [in] */ ULONG Seconds);
HRESULT ( STDMETHODCALLTYPE *GetMinimumRetryDelay )(
__RPC__in IBackgroundCopyJob3 * This,
/* [out] */ __RPC__out ULONG *Seconds);
HRESULT ( STDMETHODCALLTYPE *SetNoProgressTimeout )(
__RPC__in IBackgroundCopyJob3 * This,
/* [in] */ ULONG Seconds);
HRESULT ( STDMETHODCALLTYPE *GetNoProgressTimeout )(
__RPC__in IBackgroundCopyJob3 * This,
/* [out] */ __RPC__out ULONG *Seconds);
HRESULT ( STDMETHODCALLTYPE *GetErrorCount )(
__RPC__in IBackgroundCopyJob3 * This,
/* [out] */ __RPC__out ULONG *Errors);
HRESULT ( STDMETHODCALLTYPE *SetProxySettings )(
__RPC__in IBackgroundCopyJob3 * This,
/* [in] */ BG_JOB_PROXY_USAGE ProxyUsage,
/* [unique][string][in] */ __RPC__in_opt_string const WCHAR *ProxyList,
/* [unique][string][in] */ __RPC__in_opt_string const WCHAR *ProxyBypassList);
HRESULT ( STDMETHODCALLTYPE *GetProxySettings )(
__RPC__in IBackgroundCopyJob3 * This,
/* [out] */ __RPC__out BG_JOB_PROXY_USAGE *pProxyUsage,
/* [out] */ __RPC__deref_out_opt LPWSTR *pProxyList,
/* [out] */ __RPC__deref_out_opt LPWSTR *pProxyBypassList);
HRESULT ( STDMETHODCALLTYPE *TakeOwnership )(
__RPC__in IBackgroundCopyJob3 * This);
HRESULT ( STDMETHODCALLTYPE *SetNotifyCmdLine )(
__RPC__in IBackgroundCopyJob3 * This,
/* [unique][in] */ __RPC__in_opt LPCWSTR Program,
/* [unique][in] */ __RPC__in_opt LPCWSTR Parameters);
HRESULT ( STDMETHODCALLTYPE *GetNotifyCmdLine )(
__RPC__in IBackgroundCopyJob3 * This,
/* [out] */ __RPC__deref_out_opt LPWSTR *pProgram,
/* [out] */ __RPC__deref_out_opt LPWSTR *pParameters);
HRESULT ( STDMETHODCALLTYPE *GetReplyProgress )(
__RPC__in IBackgroundCopyJob3 * This,
/* [out][in] */ __RPC__inout BG_JOB_REPLY_PROGRESS *pProgress);
HRESULT ( STDMETHODCALLTYPE *GetReplyData )(
__RPC__in IBackgroundCopyJob3 * This,
/* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(( unsigned long )*pLength) byte **ppBuffer,
/* [unique][out][in] */ __RPC__inout_opt UINT64 *pLength);
HRESULT ( STDMETHODCALLTYPE *SetReplyFileName )(
__RPC__in IBackgroundCopyJob3 * This,
/* [unique][in] */ __RPC__in_opt LPCWSTR ReplyFileName);
HRESULT ( STDMETHODCALLTYPE *GetReplyFileName )(
__RPC__in IBackgroundCopyJob3 * This,
/* [out] */ __RPC__deref_out_opt LPWSTR *pReplyFileName);
HRESULT ( STDMETHODCALLTYPE *SetCredentials )(
__RPC__in IBackgroundCopyJob3 * This,
__RPC__in BG_AUTH_CREDENTIALS *credentials);
HRESULT ( STDMETHODCALLTYPE *RemoveCredentials )(
__RPC__in IBackgroundCopyJob3 * This,
BG_AUTH_TARGET Target,
BG_AUTH_SCHEME Scheme);
HRESULT ( STDMETHODCALLTYPE *ReplaceRemotePrefix )(
__RPC__in IBackgroundCopyJob3 * This,
/* [in] */ __RPC__in LPCWSTR OldPrefix,
/* [in] */ __RPC__in LPCWSTR NewPrefix);
HRESULT ( STDMETHODCALLTYPE *AddFileWithRanges )(
__RPC__in IBackgroundCopyJob3 * This,
/* [in] */ __RPC__in LPCWSTR RemoteUrl,
/* [in] */ __RPC__in LPCWSTR LocalName,
/* [in] */ DWORD RangeCount,
/* [size_is][in] */ __RPC__in_ecount_full(RangeCount) BG_FILE_RANGE *Ranges);
HRESULT ( STDMETHODCALLTYPE *SetFileACLFlags )(
__RPC__in IBackgroundCopyJob3 * This,
/* [in] */ DWORD Flags);
HRESULT ( STDMETHODCALLTYPE *GetFileACLFlags )(
__RPC__in IBackgroundCopyJob3 * This,
/* [ref][out] */ __RPC__out DWORD *Flags);
END_INTERFACE
} IBackgroundCopyJob3Vtbl;
@@ -0,0 +1,41 @@
typedef struct IBackgroundCopyManagerVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in IBackgroundCopyManager * This,
/* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in IBackgroundCopyManager * This);
ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in IBackgroundCopyManager * This);
HRESULT ( STDMETHODCALLTYPE *CreateJob )(
__RPC__in IBackgroundCopyManager * This,
/* [in] */ __RPC__in LPCWSTR DisplayName,
/* [in] */ BG_JOB_TYPE Type,
/* [out] */ __RPC__out GUID *pJobId,
/* [out] */ __RPC__deref_out_opt IBackgroundCopyJob **ppJob);
HRESULT ( STDMETHODCALLTYPE *GetJob )(
__RPC__in IBackgroundCopyManager * This,
/* [in] */ __RPC__in REFGUID jobID,
/* [out] */ __RPC__deref_out_opt IBackgroundCopyJob **ppJob);
HRESULT ( STDMETHODCALLTYPE *EnumJobs )(
__RPC__in IBackgroundCopyManager * This,
/* [in] */ DWORD dwFlags,
/* [out] */ __RPC__deref_out_opt IEnumBackgroundCopyJobs **ppEnum);
HRESULT ( STDMETHODCALLTYPE *GetErrorDescription )(
__RPC__in IBackgroundCopyManager * This,
/* [in] */ HRESULT hResult,
/* [in] */ DWORD LanguageId,
/* [out] */ __RPC__deref_out_opt LPWSTR *pErrorDescription);
END_INTERFACE
} IBackgroundCopyManagerVtbl;
@@ -0,0 +1,39 @@
typedef struct IEnumBackgroundCopyFilesVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in IEnumBackgroundCopyFiles * This,
/* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in IEnumBackgroundCopyFiles * This);
ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in IEnumBackgroundCopyFiles * This);
HRESULT ( STDMETHODCALLTYPE *Next )(
__RPC__in IEnumBackgroundCopyFiles * This,
/* [in] */ ULONG celt,
/* [length_is][size_is][out] */ __RPC__out_ecount_part(celt, pceltFetched ? *pceltFetched : celt) IBackgroundCopyFile **rgelt,
/* [unique][out][in] */ __RPC__inout_opt ULONG *pceltFetched);
HRESULT ( STDMETHODCALLTYPE *Skip )(
__RPC__in IEnumBackgroundCopyFiles * This,
/* [in] */ ULONG celt);
HRESULT ( STDMETHODCALLTYPE *Reset )(
__RPC__in IEnumBackgroundCopyFiles * This);
HRESULT ( STDMETHODCALLTYPE *Clone )(
__RPC__in IEnumBackgroundCopyFiles * This,
/* [out] */ __RPC__deref_out_opt IEnumBackgroundCopyFiles **ppenum);
HRESULT ( STDMETHODCALLTYPE *GetCount )(
__RPC__in IEnumBackgroundCopyFiles * This,
/* [out] */ __RPC__out ULONG *puCount);
END_INTERFACE
} IEnumBackgroundCopyFilesVtbl;
@@ -0,0 +1,39 @@
typedef struct IEnumBackgroundCopyJobsVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in IEnumBackgroundCopyJobs * This,
/* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in IEnumBackgroundCopyJobs * This);
ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in IEnumBackgroundCopyJobs * This);
HRESULT ( STDMETHODCALLTYPE *Next )(
__RPC__in IEnumBackgroundCopyJobs * This,
/* [in] */ ULONG celt,
/* [length_is][size_is][out] */ __RPC__out_ecount_part(celt, pceltFetched ? *pceltFetched : celt) IBackgroundCopyJob **rgelt,
/* [unique][out][in] */ __RPC__inout_opt ULONG *pceltFetched);
HRESULT ( STDMETHODCALLTYPE *Skip )(
__RPC__in IEnumBackgroundCopyJobs * This,
/* [in] */ ULONG celt);
HRESULT ( STDMETHODCALLTYPE *Reset )(
__RPC__in IEnumBackgroundCopyJobs * This);
HRESULT ( STDMETHODCALLTYPE *Clone )(
__RPC__in IEnumBackgroundCopyJobs * This,
/* [out] */ __RPC__deref_out_opt IEnumBackgroundCopyJobs **ppenum);
HRESULT ( STDMETHODCALLTYPE *GetCount )(
__RPC__in IEnumBackgroundCopyJobs * This,
/* [out] */ __RPC__out ULONG *puCount);
END_INTERFACE
} IEnumBackgroundCopyJobsVtbl;
@@ -0,0 +1,59 @@
typedef struct IBindCtxVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in IBindCtx * This,
/* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in IBindCtx * This);
ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in IBindCtx * This);
HRESULT ( STDMETHODCALLTYPE *RegisterObjectBound )(
__RPC__in IBindCtx * This,
/* [unique][in] */ __RPC__in_opt IUnknown *punk);
HRESULT ( STDMETHODCALLTYPE *RevokeObjectBound )(
__RPC__in IBindCtx * This,
/* [unique][in] */ __RPC__in_opt IUnknown *punk);
HRESULT ( STDMETHODCALLTYPE *ReleaseBoundObjects )(
__RPC__in IBindCtx * This);
/* [local] */ HRESULT ( STDMETHODCALLTYPE *SetBindOptions )(
IBindCtx * This,
/* [in] */ BIND_OPTS *pbindopts);
/* [local] */ HRESULT ( STDMETHODCALLTYPE *GetBindOptions )(
IBindCtx * This,
/* [out][in] */ BIND_OPTS *pbindopts);
HRESULT ( STDMETHODCALLTYPE *GetRunningObjectTable )(
__RPC__in IBindCtx * This,
/* [out] */ __RPC__deref_out_opt IRunningObjectTable **pprot);
HRESULT ( STDMETHODCALLTYPE *RegisterObjectParam )(
__RPC__in IBindCtx * This,
/* [in] */ __RPC__in LPOLESTR pszKey,
/* [unique][in] */ __RPC__in_opt IUnknown *punk);
HRESULT ( STDMETHODCALLTYPE *GetObjectParam )(
__RPC__in IBindCtx * This,
/* [in] */ __RPC__in LPOLESTR pszKey,
/* [out] */ __RPC__deref_out_opt IUnknown **ppunk);
HRESULT ( STDMETHODCALLTYPE *EnumObjectParam )(
__RPC__in IBindCtx * This,
/* [out] */ __RPC__deref_out_opt IEnumString **ppenum);
HRESULT ( STDMETHODCALLTYPE *RevokeObjectParam )(
__RPC__in IBindCtx * This,
/* [in] */ __RPC__in LPOLESTR pszKey);
END_INTERFACE
} IBindCtxVtbl;
@@ -0,0 +1,38 @@
typedef struct IEnumExplorerCommandVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in IEnumExplorerCommand * This,
/* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in IEnumExplorerCommand * This);
ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in IEnumExplorerCommand * This);
/* [local] */ HRESULT ( STDMETHODCALLTYPE *Next )(
IEnumExplorerCommand * This,
/* [annotation][in] */
__in ULONG celt,
/* [annotation][length_is][size_is][out] */
__out_ecount_part(celt, *pceltFetched) IExplorerCommand **pUICommand,
/* [annotation][out] */
__out_opt __deref_out_range(0, celt) ULONG *pceltFetched);
HRESULT ( STDMETHODCALLTYPE *Skip )(
__RPC__in IEnumExplorerCommand * This,
/* [in] */ ULONG celt);
HRESULT ( STDMETHODCALLTYPE *Reset )(
__RPC__in IEnumExplorerCommand * This);
HRESULT ( STDMETHODCALLTYPE *Clone )(
__RPC__in IEnumExplorerCommand * This,
/* [out] */ __RPC__deref_out_opt IEnumExplorerCommand **ppenum);
END_INTERFACE
} IEnumExplorerCommandVtbl;
@@ -0,0 +1,37 @@
typedef struct IEnumMonikerVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in IEnumMoniker * This,
/* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in IEnumMoniker * This);
ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in IEnumMoniker * This);
/* [local] */ HRESULT ( STDMETHODCALLTYPE *Next )(
IEnumMoniker * This,
/* [in] */ ULONG celt,
/* [annotation] */
__out_ecount_part(celt,*pceltFetched) IMoniker **rgelt,
/* [annotation] */
__out_opt ULONG *pceltFetched);
HRESULT ( STDMETHODCALLTYPE *Skip )(
__RPC__in IEnumMoniker * This,
/* [in] */ ULONG celt);
HRESULT ( STDMETHODCALLTYPE *Reset )(
__RPC__in IEnumMoniker * This);
HRESULT ( STDMETHODCALLTYPE *Clone )(
__RPC__in IEnumMoniker * This,
/* [out] */ __RPC__deref_out_opt IEnumMoniker **ppenum);
END_INTERFACE
} IEnumMonikerVtbl;
@@ -0,0 +1,38 @@
typedef struct IEnumShellItemsVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in IEnumShellItems * This,
/* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in IEnumShellItems * This);
ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in IEnumShellItems * This);
/* [local] */ HRESULT ( STDMETHODCALLTYPE *Next )(
IEnumShellItems * This,
/* [annotation][in] */
__in ULONG celt,
/* [annotation][length_is][size_is][out] */
__out_ecount_part(celt, *pceltFetched) IShellItem **rgelt,
/* [annotation][out] */
__out_opt __deref_out_range(0, celt) ULONG *pceltFetched);
HRESULT ( STDMETHODCALLTYPE *Skip )(
__RPC__in IEnumShellItems * This,
/* [in] */ ULONG celt);
HRESULT ( STDMETHODCALLTYPE *Reset )(
__RPC__in IEnumShellItems * This);
HRESULT ( STDMETHODCALLTYPE *Clone )(
__RPC__in IEnumShellItems * This,
/* [out] */ __RPC__deref_out_opt IEnumShellItems **ppenum);
END_INTERFACE
} IEnumShellItemsVtbl;
@@ -0,0 +1,37 @@
typedef struct IEnumStringVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in IEnumString * This,
/* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in IEnumString * This);
ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in IEnumString * This);
/* [local] */ HRESULT ( STDMETHODCALLTYPE *Next )(
IEnumString * This,
/* [in] */ ULONG celt,
/* [annotation] */
__RPC__out_ecount_part(celt,*pceltFetched) LPOLESTR *rgelt,
/* [annotation] */
__out_opt ULONG *pceltFetched);
HRESULT ( STDMETHODCALLTYPE *Skip )(
__RPC__in IEnumString * This,
/* [in] */ ULONG celt);
HRESULT ( STDMETHODCALLTYPE *Reset )(
__RPC__in IEnumString * This);
HRESULT ( STDMETHODCALLTYPE *Clone )(
__RPC__in IEnumString * This,
/* [out] */ __RPC__deref_out_opt IEnumString **ppenum);
END_INTERFACE
} IEnumStringVtbl;
@@ -0,0 +1,56 @@
typedef struct IExplorerCommandVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in IExplorerCommand * This,
/* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in IExplorerCommand * This);
ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in IExplorerCommand * This);
HRESULT ( STDMETHODCALLTYPE *GetTitle )(
__RPC__in IExplorerCommand * This,
/* [unique][in] */ __RPC__in_opt IShellItemArray *psiItemArray,
/* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszName);
HRESULT ( STDMETHODCALLTYPE *GetIcon )(
__RPC__in IExplorerCommand * This,
/* [unique][in] */ __RPC__in_opt IShellItemArray *psiItemArray,
/* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszIcon);
HRESULT ( STDMETHODCALLTYPE *GetToolTip )(
__RPC__in IExplorerCommand * This,
/* [unique][in] */ __RPC__in_opt IShellItemArray *psiItemArray,
/* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszInfotip);
HRESULT ( STDMETHODCALLTYPE *GetCanonicalName )(
__RPC__in IExplorerCommand * This,
/* [out] */ __RPC__out GUID *pguidCommandName);
HRESULT ( STDMETHODCALLTYPE *GetState )(
__RPC__in IExplorerCommand * This,
/* [in] */ __RPC__in_opt IShellItemArray *psiItemArray,
/* [in] */ BOOL fOkToBeSlow,
/* [out] */ __RPC__out EXPCMDSTATE *pCmdState);
HRESULT ( STDMETHODCALLTYPE *Invoke )(
__RPC__in IExplorerCommand * This,
/* [in] */ __RPC__in_opt IShellItemArray *psiItemArray,
/* [unique][in] */ __RPC__in_opt IBindCtx *pbc);
HRESULT ( STDMETHODCALLTYPE *GetFlags )(
__RPC__in IExplorerCommand * This,
/* [out] */ __RPC__out EXPCMDFLAGS *pFlags);
HRESULT ( STDMETHODCALLTYPE *EnumSubCommands )(
__RPC__in IExplorerCommand * This,
/* [out] */ __RPC__deref_out_opt IEnumExplorerCommand **ppEnum);
END_INTERFACE
} IExplorerCommandVtbl;
@@ -0,0 +1,122 @@
typedef struct IMonikerVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in IMoniker * This,
/* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in IMoniker * This);
ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in IMoniker * This);
HRESULT ( STDMETHODCALLTYPE *GetClassID )(
__RPC__in IMoniker * This,
/* [out] */ __RPC__out CLSID *pClassID);
HRESULT ( STDMETHODCALLTYPE *IsDirty )(
__RPC__in IMoniker * This);
HRESULT ( STDMETHODCALLTYPE *Load )(
__RPC__in IMoniker * This,
/* [unique][in] */ __RPC__in_opt IStream *pStm);
HRESULT ( STDMETHODCALLTYPE *Save )(
__RPC__in IMoniker * This,
/* [unique][in] */ __RPC__in_opt IStream *pStm,
/* [in] */ BOOL fClearDirty);
HRESULT ( STDMETHODCALLTYPE *GetSizeMax )(
__RPC__in IMoniker * This,
/* [out] */ __RPC__out ULARGE_INTEGER *pcbSize);
/* [local] */ HRESULT ( STDMETHODCALLTYPE *BindToObject )(
IMoniker * This,
/* [unique][in] */ IBindCtx *pbc,
/* [unique][in] */ IMoniker *pmkToLeft,
/* [in] */ REFIID riidResult,
/* [iid_is][out] */ void **ppvResult);
/* [local] */ HRESULT ( STDMETHODCALLTYPE *BindToStorage )(
IMoniker * This,
/* [unique][in] */ IBindCtx *pbc,
/* [unique][in] */ IMoniker *pmkToLeft,
/* [in] */ REFIID riid,
/* [iid_is][out] */ void **ppvObj);
HRESULT ( STDMETHODCALLTYPE *Reduce )(
__RPC__in IMoniker * This,
/* [unique][in] */ __RPC__in_opt IBindCtx *pbc,
/* [in] */ DWORD dwReduceHowFar,
/* [unique][out][in] */ __RPC__deref_opt_inout_opt IMoniker **ppmkToLeft,
/* [out] */ __RPC__deref_out_opt IMoniker **ppmkReduced);
HRESULT ( STDMETHODCALLTYPE *ComposeWith )(
__RPC__in IMoniker * This,
/* [unique][in] */ __RPC__in_opt IMoniker *pmkRight,
/* [in] */ BOOL fOnlyIfNotGeneric,
/* [out] */ __RPC__deref_out_opt IMoniker **ppmkComposite);
HRESULT ( STDMETHODCALLTYPE *Enum )(
__RPC__in IMoniker * This,
/* [in] */ BOOL fForward,
/* [out] */ __RPC__deref_out_opt IEnumMoniker **ppenumMoniker);
HRESULT ( STDMETHODCALLTYPE *IsEqual )(
__RPC__in IMoniker * This,
/* [unique][in] */ __RPC__in_opt IMoniker *pmkOtherMoniker);
HRESULT ( STDMETHODCALLTYPE *Hash )(
__RPC__in IMoniker * This,
/* [out] */ __RPC__out DWORD *pdwHash);
HRESULT ( STDMETHODCALLTYPE *IsRunning )(
__RPC__in IMoniker * This,
/* [unique][in] */ __RPC__in_opt IBindCtx *pbc,
/* [unique][in] */ __RPC__in_opt IMoniker *pmkToLeft,
/* [unique][in] */ __RPC__in_opt IMoniker *pmkNewlyRunning);
HRESULT ( STDMETHODCALLTYPE *GetTimeOfLastChange )(
__RPC__in IMoniker * This,
/* [unique][in] */ __RPC__in_opt IBindCtx *pbc,
/* [unique][in] */ __RPC__in_opt IMoniker *pmkToLeft,
/* [out] */ __RPC__out FILETIME *pFileTime);
HRESULT ( STDMETHODCALLTYPE *Inverse )(
__RPC__in IMoniker * This,
/* [out] */ __RPC__deref_out_opt IMoniker **ppmk);
HRESULT ( STDMETHODCALLTYPE *CommonPrefixWith )(
__RPC__in IMoniker * This,
/* [unique][in] */ __RPC__in_opt IMoniker *pmkOther,
/* [out] */ __RPC__deref_out_opt IMoniker **ppmkPrefix);
HRESULT ( STDMETHODCALLTYPE *RelativePathTo )(
__RPC__in IMoniker * This,
/* [unique][in] */ __RPC__in_opt IMoniker *pmkOther,
/* [out] */ __RPC__deref_out_opt IMoniker **ppmkRelPath);
HRESULT ( STDMETHODCALLTYPE *GetDisplayName )(
__RPC__in IMoniker * This,
/* [unique][in] */ __RPC__in_opt IBindCtx *pbc,
/* [unique][in] */ __RPC__in_opt IMoniker *pmkToLeft,
/* [out] */ __RPC__deref_out_opt LPOLESTR *ppszDisplayName);
HRESULT ( STDMETHODCALLTYPE *ParseDisplayName )(
__RPC__in IMoniker * This,
/* [unique][in] */ __RPC__in_opt IBindCtx *pbc,
/* [unique][in] */ __RPC__in_opt IMoniker *pmkToLeft,
/* [in] */ __RPC__in LPOLESTR pszDisplayName,
/* [out] */ __RPC__out ULONG *pchEaten,
/* [out] */ __RPC__deref_out_opt IMoniker **ppmkOut);
HRESULT ( STDMETHODCALLTYPE *IsSystemMoniker )(
__RPC__in IMoniker * This,
/* [out] */ __RPC__out DWORD *pdwMksys);
END_INTERFACE
} IMonikerVtbl;
@@ -0,0 +1,52 @@
typedef struct IRunningObjectTableVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in IRunningObjectTable * This,
/* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in IRunningObjectTable * This);
ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in IRunningObjectTable * This);
HRESULT ( STDMETHODCALLTYPE *Register )(
__RPC__in IRunningObjectTable * This,
/* [in] */ DWORD grfFlags,
/* [unique][in] */ __RPC__in_opt IUnknown *punkObject,
/* [unique][in] */ __RPC__in_opt IMoniker *pmkObjectName,
/* [out] */ __RPC__out DWORD *pdwRegister);
HRESULT ( STDMETHODCALLTYPE *Revoke )(
__RPC__in IRunningObjectTable * This,
/* [in] */ DWORD dwRegister);
HRESULT ( STDMETHODCALLTYPE *IsRunning )(
__RPC__in IRunningObjectTable * This,
/* [unique][in] */ __RPC__in_opt IMoniker *pmkObjectName);
HRESULT ( STDMETHODCALLTYPE *GetObject )(
__RPC__in IRunningObjectTable * This,
/* [unique][in] */ __RPC__in_opt IMoniker *pmkObjectName,
/* [out] */ __RPC__deref_out_opt IUnknown **ppunkObject);
HRESULT ( STDMETHODCALLTYPE *NoteChangeTime )(
__RPC__in IRunningObjectTable * This,
/* [in] */ DWORD dwRegister,
/* [in] */ __RPC__in FILETIME *pfiletime);
HRESULT ( STDMETHODCALLTYPE *GetTimeOfLastChange )(
__RPC__in IRunningObjectTable * This,
/* [unique][in] */ __RPC__in_opt IMoniker *pmkObjectName,
/* [out] */ __RPC__out FILETIME *pfiletime);
HRESULT ( STDMETHODCALLTYPE *EnumRunning )(
__RPC__in IRunningObjectTable * This,
/* [out] */ __RPC__deref_out_opt IEnumMoniker **ppenumMoniker);
END_INTERFACE
} IRunningObjectTableVtbl;
@@ -0,0 +1,45 @@
typedef struct IShellItemVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in IShellItem * This,
/* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in IShellItem * This);
ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in IShellItem * This);
HRESULT ( STDMETHODCALLTYPE *BindToHandler )(
__RPC__in IShellItem * This,
/* [unique][in] */ __RPC__in_opt IBindCtx *pbc,
/* [in] */ __RPC__in REFGUID bhid,
/* [in] */ __RPC__in REFIID riid,
/* [iid_is][out] */ __RPC__deref_out_opt void **ppv);
HRESULT ( STDMETHODCALLTYPE *GetParent )(
__RPC__in IShellItem * This,
/* [out] */ __RPC__deref_out_opt IShellItem **ppsi);
HRESULT ( STDMETHODCALLTYPE *GetDisplayName )(
__RPC__in IShellItem * This,
/* [in] */ SIGDN sigdnName,
/* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszName);
HRESULT ( STDMETHODCALLTYPE *GetAttributes )(
__RPC__in IShellItem * This,
/* [in] */ SFGAOF sfgaoMask,
/* [out] */ __RPC__out SFGAOF *psfgaoAttribs);
HRESULT ( STDMETHODCALLTYPE *Compare )(
__RPC__in IShellItem * This,
/* [in] */ __RPC__in_opt IShellItem *psi,
/* [in] */ SICHINTF hint,
/* [out] */ __RPC__out int *piOrder);
END_INTERFACE
} IShellItemVtbl;
@@ -0,0 +1,56 @@
typedef struct IShellItemArrayVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in IShellItemArray * This,
/* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in IShellItemArray * This);
ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in IShellItemArray * This);
HRESULT ( STDMETHODCALLTYPE *BindToHandler )(
__RPC__in IShellItemArray * This,
/* [unique][in] */ __RPC__in_opt IBindCtx *pbc,
/* [in] */ __RPC__in REFGUID bhid,
/* [in] */ __RPC__in REFIID riid,
/* [iid_is][out] */ __RPC__deref_out_opt void **ppvOut);
HRESULT ( STDMETHODCALLTYPE *GetPropertyStore )(
__RPC__in IShellItemArray * This,
/* [in] */ GETPROPERTYSTOREFLAGS flags,
/* [in] */ __RPC__in REFIID riid,
/* [iid_is][out] */ __RPC__deref_out_opt void **ppv);
HRESULT ( STDMETHODCALLTYPE *GetPropertyDescriptionList )(
__RPC__in IShellItemArray * This,
/* [in] */ __RPC__in REFPROPERTYKEY keyType,
/* [in] */ __RPC__in REFIID riid,
/* [iid_is][out] */ __RPC__deref_out_opt void **ppv);
HRESULT ( STDMETHODCALLTYPE *GetAttributes )(
__RPC__in IShellItemArray * This,
/* [in] */ SIATTRIBFLAGS AttribFlags,
/* [in] */ SFGAOF sfgaoMask,
/* [out] */ __RPC__out SFGAOF *psfgaoAttribs);
HRESULT ( STDMETHODCALLTYPE *GetCount )(
__RPC__in IShellItemArray * This,
/* [out] */ __RPC__out DWORD *pdwNumItems);
HRESULT ( STDMETHODCALLTYPE *GetItemAt )(
__RPC__in IShellItemArray * This,
/* [in] */ DWORD dwIndex,
/* [out] */ __RPC__deref_out_opt IShellItem **ppsi);
HRESULT ( STDMETHODCALLTYPE *EnumItems )(
__RPC__in IShellItemArray * This,
/* [out] */ __RPC__deref_out_opt IEnumShellItems **ppenumShellItems);
END_INTERFACE
} IShellItemArrayVtbl;
@@ -0,0 +1,82 @@
typedef struct IStreamVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in IStream * This,
/* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in IStream * This);
ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in IStream * This);
/* [local] */ HRESULT ( STDMETHODCALLTYPE *Read )(
IStream * This,
/* [annotation] */
__out_bcount_part(cb, *pcbRead) void *pv,
/* [in] */ ULONG cb,
/* [annotation] */
__out_opt ULONG *pcbRead);
/* [local] */ HRESULT ( STDMETHODCALLTYPE *Write )(
IStream * This,
/* [annotation] */
__in_bcount(cb) const void *pv,
/* [in] */ ULONG cb,
/* [annotation] */
__out_opt ULONG *pcbWritten);
/* [local] */ HRESULT ( STDMETHODCALLTYPE *Seek )(
IStream * This,
/* [in] */ LARGE_INTEGER dlibMove,
/* [in] */ DWORD dwOrigin,
/* [annotation] */
__out_opt ULARGE_INTEGER *plibNewPosition);
HRESULT ( STDMETHODCALLTYPE *SetSize )(
__RPC__in IStream * This,
/* [in] */ ULARGE_INTEGER libNewSize);
/* [local] */ HRESULT ( STDMETHODCALLTYPE *CopyTo )(
IStream * This,
/* [unique][in] */ IStream *pstm,
/* [in] */ ULARGE_INTEGER cb,
/* [annotation] */
__out_opt ULARGE_INTEGER *pcbRead,
/* [annotation] */
__out_opt ULARGE_INTEGER *pcbWritten);
HRESULT ( STDMETHODCALLTYPE *Commit )(
__RPC__in IStream * This,
/* [in] */ DWORD grfCommitFlags);
HRESULT ( STDMETHODCALLTYPE *Revert )(
__RPC__in IStream * This);
HRESULT ( STDMETHODCALLTYPE *LockRegion )(
__RPC__in IStream * This,
/* [in] */ ULARGE_INTEGER libOffset,
/* [in] */ ULARGE_INTEGER cb,
/* [in] */ DWORD dwLockType);
HRESULT ( STDMETHODCALLTYPE *UnlockRegion )(
__RPC__in IStream * This,
/* [in] */ ULARGE_INTEGER libOffset,
/* [in] */ ULARGE_INTEGER cb,
/* [in] */ DWORD dwLockType);
HRESULT ( STDMETHODCALLTYPE *Stat )(
__RPC__in IStream * This,
/* [out] */ __RPC__out STATSTG *pstatstg,
/* [in] */ DWORD grfStatFlag);
HRESULT ( STDMETHODCALLTYPE *Clone )(
__RPC__in IStream * This,
/* [out] */ __RPC__deref_out_opt IStream **ppstm);
END_INTERFACE
} IStreamVtbl;
@@ -0,0 +1,127 @@
typedef struct ICallFrameVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICallFrame * This,
/* [in] */ REFIID riid,
/* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
ICallFrame * This);
ULONG ( STDMETHODCALLTYPE *Release )(
ICallFrame * This);
HRESULT ( STDMETHODCALLTYPE *GetInfo )(
ICallFrame * This,
/* [out] */ CALLFRAMEINFO *pInfo);
HRESULT ( STDMETHODCALLTYPE *GetIIDAndMethod )(
ICallFrame * This,
/* [out] */ IID *pIID,
/* [out] */ ULONG *piMethod);
HRESULT ( STDMETHODCALLTYPE *GetNames )(
ICallFrame * This,
/* [annotation][out] */
__deref_out_opt LPWSTR *pwszInterface,
/* [annotation][out] */
__deref_out_opt LPWSTR *pwszMethod);
PVOID ( STDMETHODCALLTYPE *GetStackLocation )(
ICallFrame * This);
VOID ( STDMETHODCALLTYPE *SetStackLocation )(
ICallFrame * This,
/* [in] */ PVOID pvStack);
VOID ( STDMETHODCALLTYPE *SetReturnValue )(
ICallFrame * This,
/* [in] */ HRESULT hr);
HRESULT ( STDMETHODCALLTYPE *GetReturnValue )(
ICallFrame * This);
HRESULT ( STDMETHODCALLTYPE *GetParamInfo )(
ICallFrame * This,
/* [in] */ ULONG iparam,
/* [out] */ CALLFRAMEPARAMINFO *pInfo);
HRESULT ( STDMETHODCALLTYPE *SetParam )(
ICallFrame * This,
/* [in] */ ULONG iparam,
/* [in] */ VARIANT *pvar);
HRESULT ( STDMETHODCALLTYPE *GetParam )(
ICallFrame * This,
/* [in] */ ULONG iparam,
/* [out] */ VARIANT *pvar);
HRESULT ( STDMETHODCALLTYPE *Copy )(
ICallFrame * This,
/* [in] */ CALLFRAME_COPY copyControl,
/* [in] */ ICallFrameWalker *pWalker,
/* [out] */ ICallFrame **ppFrame);
HRESULT ( STDMETHODCALLTYPE *Free )(
ICallFrame * This,
/* [in] */ ICallFrame *pframeArgsDest,
/* [in] */ ICallFrameWalker *pWalkerDestFree,
/* [in] */ ICallFrameWalker *pWalkerCopy,
/* [in] */ DWORD freeFlags,
/* [in] */ ICallFrameWalker *pWalkerFree,
/* [in] */ DWORD nullFlags);
HRESULT ( STDMETHODCALLTYPE *FreeParam )(
ICallFrame * This,
/* [in] */ ULONG iparam,
/* [in] */ DWORD freeFlags,
/* [in] */ ICallFrameWalker *pWalkerFree,
/* [in] */ DWORD nullFlags);
HRESULT ( STDMETHODCALLTYPE *WalkFrame )(
ICallFrame * This,
/* [in] */ DWORD walkWhat,
/* [in] */ ICallFrameWalker *pWalker);
HRESULT ( STDMETHODCALLTYPE *GetMarshalSizeMax )(
ICallFrame * This,
/* [in] */ CALLFRAME_MARSHALCONTEXT *pmshlContext,
/* [in] */ MSHLFLAGS mshlflags,
/* [out] */ ULONG *pcbBufferNeeded);
HRESULT ( STDMETHODCALLTYPE *Marshal )(
ICallFrame * This,
/* [in] */ CALLFRAME_MARSHALCONTEXT *pmshlContext,
/* [in] */ MSHLFLAGS mshlflags,
/* [size_is][in] */ PVOID pBuffer,
/* [in] */ ULONG cbBuffer,
/* [out] */ ULONG *pcbBufferUsed,
/* [out] */ RPCOLEDATAREP *pdataRep,
/* [out] */ ULONG *prpcFlags);
HRESULT ( STDMETHODCALLTYPE *Unmarshal )(
ICallFrame * This,
/* [size_is][in] */ PVOID pBuffer,
/* [in] */ ULONG cbBuffer,
/* [in] */ RPCOLEDATAREP dataRep,
/* [in] */ CALLFRAME_MARSHALCONTEXT *pcontext,
/* [out] */ ULONG *pcbUnmarshalled);
HRESULT ( STDMETHODCALLTYPE *ReleaseMarshalData )(
ICallFrame * This,
/* [size_is][in] */ PVOID pBuffer,
/* [in] */ ULONG cbBuffer,
/* [in] */ ULONG ibFirstRelease,
/* [in] */ RPCOLEDATAREP dataRep,
/* [in] */ CALLFRAME_MARSHALCONTEXT *pcontext);
HRESULT ( STDMETHODCALLTYPE *Invoke )(
ICallFrame * This,
/* [in] */ void *pvReceiver,
...);
END_INTERFACE
} ICallFrameVtbl;
@@ -0,0 +1,22 @@
typedef struct ICallFrameEventsVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICallFrameEvents * This,
/* [in] */ REFIID riid,
/* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
ICallFrameEvents * This);
ULONG ( STDMETHODCALLTYPE *Release )(
ICallFrameEvents * This);
HRESULT ( STDMETHODCALLTYPE *OnCall )(
ICallFrameEvents * This,
/* [in] */ ICallFrame *pFrame);
END_INTERFACE
} ICallFrameEventsVtbl;
@@ -0,0 +1,25 @@
typedef struct ICallFrameWalkerVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICallFrameWalker * This,
/* [in] */ REFIID riid,
/* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
ICallFrameWalker * This);
ULONG ( STDMETHODCALLTYPE *Release )(
ICallFrameWalker * This);
HRESULT ( STDMETHODCALLTYPE *OnWalkInterface )(
ICallFrameWalker * This,
/* [in] */ REFIID iid,
/* [in] */ PVOID *ppvInterface,
/* [in] */ BOOL fIn,
/* [in] */ BOOL fOut);
END_INTERFACE
} ICallFrameWalkerVtbl;
@@ -0,0 +1,56 @@
typedef struct ICallInterceptorVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICallInterceptor * This,
/* [in] */ REFIID riid,
/* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
ICallInterceptor * This);
ULONG ( STDMETHODCALLTYPE *Release )(
ICallInterceptor * This);
HRESULT ( STDMETHODCALLTYPE *CallIndirect )(
ICallInterceptor * This,
/* [out] */ HRESULT *phrReturn,
/* [in] */ ULONG iMethod,
/* [in] */ void *pvArgs,
/* [out] */ ULONG *cbArgs);
HRESULT ( STDMETHODCALLTYPE *GetMethodInfo )(
ICallInterceptor * This,
/* [in] */ ULONG iMethod,
/* [out] */ CALLFRAMEINFO *pInfo,
/* [annotation][out] */
__deref_out_opt LPWSTR *pwszMethod);
HRESULT ( STDMETHODCALLTYPE *GetStackSize )(
ICallInterceptor * This,
/* [in] */ ULONG iMethod,
/* [out] */ ULONG *cbArgs);
HRESULT ( STDMETHODCALLTYPE *GetIID )(
ICallInterceptor * This,
/* [annotation][out] */
__out_opt IID *piid,
/* [annotation][out] */
__out_opt BOOL *pfDerivesFromIDispatch,
/* [annotation][out] */
__out_opt ULONG *pcMethod,
/* [annotation][out] */
__deref_out_opt LPWSTR *pwszInterface);
HRESULT ( STDMETHODCALLTYPE *RegisterSink )(
ICallInterceptor * This,
/* [in] */ ICallFrameEvents *psink);
HRESULT ( STDMETHODCALLTYPE *GetRegisteredSink )(
ICallInterceptor * This,
/* [out] */ ICallFrameEvents **ppsink);
END_INTERFACE
} ICallInterceptorVtbl;
@@ -0,0 +1,22 @@
typedef struct IPersistVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in IPersist * This,
/* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in IPersist * This);
ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in IPersist * This);
HRESULT ( STDMETHODCALLTYPE *GetClassID )(
__RPC__in IPersist * This,
/* [out] */ __RPC__out CLSID *pClassID);
END_INTERFACE
} IPersistVtbl;
@@ -0,0 +1,43 @@
typedef struct IPersistFileVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in IPersistFile * This,
/* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in IPersistFile * This);
ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in IPersistFile * This);
HRESULT ( STDMETHODCALLTYPE *GetClassID )(
__RPC__in IPersistFile * This,
/* [out] */ __RPC__out CLSID *pClassID);
HRESULT ( STDMETHODCALLTYPE *IsDirty )(
__RPC__in IPersistFile * This);
HRESULT ( STDMETHODCALLTYPE *Load )(
__RPC__in IPersistFile * This,
/* [in] */ __RPC__in LPCOLESTR pszFileName,
/* [in] */ DWORD dwMode);
HRESULT ( STDMETHODCALLTYPE *Save )(
__RPC__in IPersistFile * This,
/* [unique][in] */ __RPC__in_opt LPCOLESTR pszFileName,
/* [in] */ BOOL fRemember);
HRESULT ( STDMETHODCALLTYPE *SaveCompleted )(
__RPC__in IPersistFile * This,
/* [unique][in] */ __RPC__in_opt LPCOLESTR pszFileName);
HRESULT ( STDMETHODCALLTYPE *GetCurFile )(
__RPC__in IPersistFile * This,
/* [out] */ __RPC__deref_out_opt LPOLESTR *ppszFileName);
END_INTERFACE
} IPersistFileVtbl;
@@ -0,0 +1,101 @@
typedef struct IShellLinkAVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in IShellLinkA * This,
/* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in IShellLinkA * This);
ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in IShellLinkA * This);
HRESULT ( STDMETHODCALLTYPE *GetPath )(
__RPC__in IShellLinkA * This,
/* [size_is][string][out] */ __RPC__out_ecount_full_string(cch) LPSTR pszFile,
/* [in] */ int cch,
/* [unique][out][in] */ __RPC__inout_opt WIN32_FIND_DATAA *pfd,
/* [in] */ DWORD fFlags);
HRESULT ( STDMETHODCALLTYPE *GetIDList )(
__RPC__in IShellLinkA * This,
/* [out] */ __RPC__deref_out_opt PIDLIST_ABSOLUTE *ppidl);
HRESULT ( STDMETHODCALLTYPE *SetIDList )(
__RPC__in IShellLinkA * This,
/* [in] */ __RPC__in PCIDLIST_ABSOLUTE pidl);
HRESULT ( STDMETHODCALLTYPE *GetDescription )(
__RPC__in IShellLinkA * This,
/* [size_is][string][out] */ __RPC__out_ecount_full_string(cch) LPSTR pszName,
/* [in] */ int cch);
HRESULT ( STDMETHODCALLTYPE *SetDescription )(
__RPC__in IShellLinkA * This,
/* [string][in] */ __RPC__in_string LPCSTR pszName);
HRESULT ( STDMETHODCALLTYPE *GetWorkingDirectory )(
__RPC__in IShellLinkA * This,
/* [size_is][string][out] */ __RPC__out_ecount_full_string(cch) LPSTR pszDir,
/* [in] */ int cch);
HRESULT ( STDMETHODCALLTYPE *SetWorkingDirectory )(
__RPC__in IShellLinkA * This,
/* [string][in] */ __RPC__in_string LPCSTR pszDir);
HRESULT ( STDMETHODCALLTYPE *GetArguments )(
__RPC__in IShellLinkA * This,
/* [size_is][string][out] */ __RPC__out_ecount_full_string(cch) LPSTR pszArgs,
/* [in] */ int cch);
HRESULT ( STDMETHODCALLTYPE *SetArguments )(
__RPC__in IShellLinkA * This,
/* [string][in] */ __RPC__in_string LPCSTR pszArgs);
HRESULT ( STDMETHODCALLTYPE *GetHotkey )(
__RPC__in IShellLinkA * This,
/* [out] */ __RPC__out WORD *pwHotkey);
HRESULT ( STDMETHODCALLTYPE *SetHotkey )(
__RPC__in IShellLinkA * This,
/* [in] */ WORD wHotkey);
HRESULT ( STDMETHODCALLTYPE *GetShowCmd )(
__RPC__in IShellLinkA * This,
/* [out] */ __RPC__out int *piShowCmd);
HRESULT ( STDMETHODCALLTYPE *SetShowCmd )(
__RPC__in IShellLinkA * This,
/* [in] */ int iShowCmd);
HRESULT ( STDMETHODCALLTYPE *GetIconLocation )(
__RPC__in IShellLinkA * This,
/* [size_is][string][out] */ __RPC__out_ecount_full_string(cch) LPSTR pszIconPath,
/* [in] */ int cch,
/* [out] */ __RPC__out int *piIcon);
HRESULT ( STDMETHODCALLTYPE *SetIconLocation )(
__RPC__in IShellLinkA * This,
/* [string][in] */ __RPC__in_string LPCSTR pszIconPath,
/* [in] */ int iIcon);
HRESULT ( STDMETHODCALLTYPE *SetRelativePath )(
__RPC__in IShellLinkA * This,
/* [string][in] */ __RPC__in_string LPCSTR pszPathRel,
/* [in] */ DWORD dwReserved);
HRESULT ( STDMETHODCALLTYPE *Resolve )(
__RPC__in IShellLinkA * This,
/* [unique][in] */ __RPC__in_opt HWND hwnd,
/* [in] */ DWORD fFlags);
HRESULT ( STDMETHODCALLTYPE *SetPath )(
__RPC__in IShellLinkA * This,
/* [string][in] */ __RPC__in_string LPCSTR pszFile);
END_INTERFACE
} IShellLinkAVtbl;
@@ -0,0 +1,101 @@
typedef struct IShellLinkWVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in IShellLinkW * This,
/* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in IShellLinkW * This);
ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in IShellLinkW * This);
HRESULT ( STDMETHODCALLTYPE *GetPath )(
__RPC__in IShellLinkW * This,
/* [size_is][string][out] */ __RPC__out_ecount_full_string(cch) LPWSTR pszFile,
/* [in] */ int cch,
/* [unique][out][in] */ __RPC__inout_opt WIN32_FIND_DATAW *pfd,
/* [in] */ DWORD fFlags);
HRESULT ( STDMETHODCALLTYPE *GetIDList )(
__RPC__in IShellLinkW * This,
/* [out] */ __RPC__deref_out_opt PIDLIST_ABSOLUTE *ppidl);
HRESULT ( STDMETHODCALLTYPE *SetIDList )(
__RPC__in IShellLinkW * This,
/* [unique][in] */ __RPC__in_opt PCIDLIST_ABSOLUTE pidl);
HRESULT ( STDMETHODCALLTYPE *GetDescription )(
__RPC__in IShellLinkW * This,
/* [size_is][string][out] */ __RPC__out_ecount_full_string(cch) LPWSTR pszName,
int cch);
HRESULT ( STDMETHODCALLTYPE *SetDescription )(
__RPC__in IShellLinkW * This,
/* [string][in] */ __RPC__in_string LPCWSTR pszName);
HRESULT ( STDMETHODCALLTYPE *GetWorkingDirectory )(
__RPC__in IShellLinkW * This,
/* [size_is][string][out] */ __RPC__out_ecount_full_string(cch) LPWSTR pszDir,
int cch);
HRESULT ( STDMETHODCALLTYPE *SetWorkingDirectory )(
__RPC__in IShellLinkW * This,
/* [string][in] */ __RPC__in_string LPCWSTR pszDir);
HRESULT ( STDMETHODCALLTYPE *GetArguments )(
__RPC__in IShellLinkW * This,
/* [size_is][string][out] */ __RPC__out_ecount_full_string(cch) LPWSTR pszArgs,
/* [in] */ int cch);
HRESULT ( STDMETHODCALLTYPE *SetArguments )(
__RPC__in IShellLinkW * This,
/* [string][in] */ __RPC__in_string LPCWSTR pszArgs);
HRESULT ( STDMETHODCALLTYPE *GetHotkey )(
__RPC__in IShellLinkW * This,
/* [out] */ __RPC__out WORD *pwHotkey);
HRESULT ( STDMETHODCALLTYPE *SetHotkey )(
__RPC__in IShellLinkW * This,
/* [in] */ WORD wHotkey);
HRESULT ( STDMETHODCALLTYPE *GetShowCmd )(
__RPC__in IShellLinkW * This,
/* [out] */ __RPC__out int *piShowCmd);
HRESULT ( STDMETHODCALLTYPE *SetShowCmd )(
__RPC__in IShellLinkW * This,
/* [in] */ int iShowCmd);
HRESULT ( STDMETHODCALLTYPE *GetIconLocation )(
__RPC__in IShellLinkW * This,
/* [size_is][string][out] */ __RPC__out_ecount_full_string(cch) LPWSTR pszIconPath,
/* [in] */ int cch,
/* [out] */ __RPC__out int *piIcon);
HRESULT ( STDMETHODCALLTYPE *SetIconLocation )(
__RPC__in IShellLinkW * This,
/* [string][in] */ __RPC__in_string LPCWSTR pszIconPath,
/* [in] */ int iIcon);
HRESULT ( STDMETHODCALLTYPE *SetRelativePath )(
__RPC__in IShellLinkW * This,
/* [string][in] */ __RPC__in_string LPCWSTR pszPathRel,
/* [in] */ DWORD dwReserved);
HRESULT ( STDMETHODCALLTYPE *Resolve )(
__RPC__in IShellLinkW * This,
/* [unique][in] */ __RPC__in_opt HWND hwnd,
/* [in] */ DWORD fFlags);
HRESULT ( STDMETHODCALLTYPE *SetPath )(
__RPC__in IShellLinkW * This,
/* [string][in] */ __RPC__in_string LPCWSTR pszFile);
END_INTERFACE
} IShellLinkWVtbl;
@@ -0,0 +1,36 @@
typedef struct ITypeCompVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in ITypeComp * This,
/* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */
__RPC__deref_out PVOID *ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in ITypeComp * This);
ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in ITypeComp * This);
/* [local] */ HRESULT ( STDMETHODCALLTYPE *Bind )(
ITypeComp * This,
/* [annotation][in] */
__RPC__in LPOLESTR szName,
/* [in] */ ULONG lHashVal,
/* [in] */ WORD wFlags,
/* [out] */ ITypeInfo **ppTInfo,
/* [out] */ DESCKIND *pDescKind,
/* [out] */ BINDPTR *pBindPtr);
/* [local] */ HRESULT ( STDMETHODCALLTYPE *BindType )(
ITypeComp * This,
/* [annotation][in] */
__RPC__in LPOLESTR szName,
/* [in] */ ULONG lHashVal,
/* [out] */ ITypeInfo **ppTInfo,
/* [out] */ ITypeComp **ppTComp);
END_INTERFACE
} ITypeCompVtbl;
@@ -0,0 +1,125 @@
typedef struct ITypeInfoVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in ITypeInfo * This,
/* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in ITypeInfo * This);
ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in ITypeInfo * This);
/* [local] */ HRESULT ( STDMETHODCALLTYPE *GetTypeAttr )(
ITypeInfo * This,
/* [out] */ TYPEATTR **ppTypeAttr);
HRESULT ( STDMETHODCALLTYPE *GetTypeComp )(
__RPC__in ITypeInfo * This,
/* [out] */ __RPC__deref_out_opt ITypeComp **ppTComp);
/* [local] */ HRESULT ( STDMETHODCALLTYPE *GetFuncDesc )(
ITypeInfo * This,
/* [in] */ UINT index,
/* [out] */ FUNCDESC **ppFuncDesc);
/* [local] */ HRESULT ( STDMETHODCALLTYPE *GetVarDesc )(
ITypeInfo * This,
/* [in] */ UINT index,
/* [out] */ VARDESC **ppVarDesc);
/* [local] */ HRESULT ( STDMETHODCALLTYPE *GetNames )(
ITypeInfo * This,
/* [in] */ MEMBERID memid,
/* [length_is][size_is][out] */ BSTR *rgBstrNames,
/* [in] */ UINT cMaxNames,
/* [out] */ UINT *pcNames);
HRESULT ( STDMETHODCALLTYPE *GetRefTypeOfImplType )(
__RPC__in ITypeInfo * This,
/* [in] */ UINT index,
/* [out] */ __RPC__out HREFTYPE *pRefType);
HRESULT ( STDMETHODCALLTYPE *GetImplTypeFlags )(
__RPC__in ITypeInfo * This,
/* [in] */ UINT index,
/* [out] */ __RPC__out INT *pImplTypeFlags);
/* [local] */ HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )(
ITypeInfo * This,
/* [annotation][size_is][in] */
__RPC__in_ecount(cNames) LPOLESTR *rgszNames,
/* [in] */ UINT cNames,
/* [size_is][out] */ MEMBERID *pMemId);
/* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )(
ITypeInfo * This,
/* [in] */ PVOID pvInstance,
/* [in] */ MEMBERID memid,
/* [in] */ WORD wFlags,
/* [out][in] */ DISPPARAMS *pDispParams,
/* [out] */ VARIANT *pVarResult,
/* [out] */ EXCEPINFO *pExcepInfo,
/* [out] */ UINT *puArgErr);
/* [local] */ HRESULT ( STDMETHODCALLTYPE *GetDocumentation )(
ITypeInfo * This,
/* [in] */ MEMBERID memid,
/* [out] */ BSTR *pBstrName,
/* [out] */ BSTR *pBstrDocString,
/* [out] */ DWORD *pdwHelpContext,
/* [out] */ BSTR *pBstrHelpFile);
/* [local] */ HRESULT ( STDMETHODCALLTYPE *GetDllEntry )(
ITypeInfo * This,
/* [in] */ MEMBERID memid,
/* [in] */ INVOKEKIND invKind,
/* [out] */ BSTR *pBstrDllName,
/* [out] */ BSTR *pBstrName,
/* [out] */ WORD *pwOrdinal);
HRESULT ( STDMETHODCALLTYPE *GetRefTypeInfo )(
__RPC__in ITypeInfo * This,
/* [in] */ HREFTYPE hRefType,
/* [out] */ __RPC__deref_out_opt ITypeInfo **ppTInfo);
/* [local] */ HRESULT ( STDMETHODCALLTYPE *AddressOfMember )(
ITypeInfo * This,
/* [in] */ MEMBERID memid,
/* [in] */ INVOKEKIND invKind,
/* [out] */ PVOID *ppv);
/* [local] */ HRESULT ( STDMETHODCALLTYPE *CreateInstance )(
ITypeInfo * This,
/* [in] */ IUnknown *pUnkOuter,
/* [in] */ REFIID riid,
/* [iid_is][out] */ PVOID *ppvObj);
HRESULT ( STDMETHODCALLTYPE *GetMops )(
__RPC__in ITypeInfo * This,
/* [in] */ MEMBERID memid,
/* [out] */ __RPC__deref_out_opt BSTR *pBstrMops);
/* [local] */ HRESULT ( STDMETHODCALLTYPE *GetContainingTypeLib )(
ITypeInfo * This,
/* [out] */ ITypeLib **ppTLib,
/* [out] */ UINT *pIndex);
/* [local] */ DWORD /*void*/ ( STDMETHODCALLTYPE *ReleaseTypeAttr )(
ITypeInfo * This,
/* [in] */ TYPEATTR *pTypeAttr);
/* [local] */ DWORD ( STDMETHODCALLTYPE *ReleaseFuncDesc )(
ITypeInfo * This,
/* [in] */ FUNCDESC *pFuncDesc);
/* [local] */ DWORD ( STDMETHODCALLTYPE *ReleaseVarDesc )(
ITypeInfo * This,
/* [in] */ VARDESC *pVarDesc);
END_INTERFACE
} ITypeInfoVtbl;
@@ -0,0 +1,72 @@
typedef struct ITypeLibVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in ITypeLib * This,
/* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in ITypeLib * This);
ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in ITypeLib * This);
/* [local] */ UINT ( STDMETHODCALLTYPE *GetTypeInfoCount )(
ITypeLib * This);
HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )(
__RPC__in ITypeLib * This,
/* [in] */ UINT index,
/* [out] */ __RPC__deref_out_opt ITypeInfo **ppTInfo);
HRESULT ( STDMETHODCALLTYPE *GetTypeInfoType )(
__RPC__in ITypeLib * This,
/* [in] */ UINT index,
/* [out] */ __RPC__out TYPEKIND *pTKind);
HRESULT ( STDMETHODCALLTYPE *GetTypeInfoOfGuid )(
__RPC__in ITypeLib * This,
/* [in] */ __RPC__in REFGUID guid,
/* [out] */ __RPC__deref_out_opt ITypeInfo **ppTinfo);
/* [local] */ HRESULT ( STDMETHODCALLTYPE *GetLibAttr )(
ITypeLib * This,
/* [out] */ TLIBATTR **ppTLibAttr);
HRESULT ( STDMETHODCALLTYPE *GetTypeComp )(
__RPC__in ITypeLib * This,
/* [out] */ __RPC__deref_out_opt ITypeComp **ppTComp);
/* [local] */ HRESULT ( STDMETHODCALLTYPE *GetDocumentation )(
ITypeLib * This,
/* [in] */ INT index,
/* [out] */ BSTR *pBstrName,
/* [out] */ BSTR *pBstrDocString,
/* [out] */ DWORD *pdwHelpContext,
/* [out] */ BSTR *pBstrHelpFile);
/* [local] */ HRESULT ( STDMETHODCALLTYPE *IsName )(
ITypeLib * This,
/* [annotation][out][in] */
__RPC__inout LPOLESTR szNameBuf,
/* [in] */ ULONG lHashVal,
/* [out] */ BOOL *pfName);
/* [local] */ HRESULT ( STDMETHODCALLTYPE *FindName )(
ITypeLib * This,
/* [annotation][out][in] */
__RPC__inout LPOLESTR szNameBuf,
/* [in] */ ULONG lHashVal,
/* [length_is][size_is][out] */ ITypeInfo **ppTInfo,
/* [length_is][size_is][out] */ MEMBERID *rgMemId,
/* [out][in] */ USHORT *pcFound);
/* [local] */ DWORD /* void */ ( STDMETHODCALLTYPE *ReleaseTLibAttr )(
ITypeLib * This,
/* [in] */ TLIBATTR *pTLibAttr);
END_INTERFACE
} ITypeLibVtbl;
@@ -0,0 +1,28 @@
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,59 @@
typedef struct IActionVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
IAction * This,
/* [in] */ REFIID riid,
/* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
IAction * This);
ULONG ( STDMETHODCALLTYPE *Release )(
IAction * This);
HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )(
IAction * This,
/* [out] */ UINT *pctinfo);
HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )(
IAction * This,
/* [in] */ UINT iTInfo,
/* [in] */ LCID lcid,
/* [out] */ ITypeInfo **ppTInfo);
HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )(
IAction * This,
/* [in] */ REFIID riid,
/* [size_is][in] */ LPOLESTR *rgszNames,
/* [range][in] */ UINT cNames,
/* [in] */ LCID lcid,
/* [size_is][out] */ DISPID *rgDispId);
/* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )(
IAction * This,
/* [in] */ DISPID dispIdMember,
/* [in] */ REFIID riid,
/* [in] */ LCID lcid,
/* [in] */ WORD wFlags,
/* [out][in] */ DISPPARAMS *pDispParams,
/* [out] */ VARIANT *pVarResult,
/* [out] */ EXCEPINFO *pExcepInfo,
/* [out] */ UINT *puArgErr);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Id )(
IAction * This,
/* [retval][out] */ BSTR *pId);
/* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Id )(
IAction * This,
/* [in] */ BSTR Id);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Type )(
IAction * This,
/* [retval][out] */ TASK_ACTION_TYPE *pType);
END_INTERFACE
} IActionVtbl;
@@ -0,0 +1,88 @@
typedef struct IActionCollectionVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
IActionCollection * This,
/* [in] */ REFIID riid,
/* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
IActionCollection * This);
ULONG ( STDMETHODCALLTYPE *Release )(
IActionCollection * This);
HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )(
IActionCollection * This,
/* [out] */ UINT *pctinfo);
HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )(
IActionCollection * This,
/* [in] */ UINT iTInfo,
/* [in] */ LCID lcid,
/* [out] */ ITypeInfo **ppTInfo);
HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )(
IActionCollection * This,
/* [in] */ REFIID riid,
/* [size_is][in] */ LPOLESTR *rgszNames,
/* [range][in] */ UINT cNames,
/* [in] */ LCID lcid,
/* [size_is][out] */ DISPID *rgDispId);
/* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )(
IActionCollection * This,
/* [in] */ DISPID dispIdMember,
/* [in] */ REFIID riid,
/* [in] */ LCID lcid,
/* [in] */ WORD wFlags,
/* [out][in] */ DISPPARAMS *pDispParams,
/* [out] */ VARIANT *pVarResult,
/* [out] */ EXCEPINFO *pExcepInfo,
/* [out] */ UINT *puArgErr);
/* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Count )(
IActionCollection * This,
/* [retval][out] */ long *pCount);
/* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Item )(
IActionCollection * This,
/* [in] */ long index,
/* [retval][out] */ IAction **ppAction);
/* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get__NewEnum )(
IActionCollection * This,
/* [retval][out] */ IUnknown **ppEnum);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_XmlText )(
IActionCollection * This,
/* [retval][out] */ BSTR *pText);
/* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_XmlText )(
IActionCollection * This,
/* [in] */ BSTR text);
/* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Create )(
IActionCollection * This,
/* [in] */ TASK_ACTION_TYPE type,
/* [retval][out] */ IAction **ppAction);
/* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Remove )(
IActionCollection * This,
/* [in] */ VARIANT index);
/* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Clear )(
IActionCollection * This);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Context )(
IActionCollection * This,
/* [retval][out] */ BSTR *pContext);
/* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Context )(
IActionCollection * This,
/* [in] */ BSTR context);
END_INTERFACE
} IActionCollectionVtbl;
@@ -0,0 +1,75 @@
typedef struct IComHandlerActionVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
IComHandlerAction * This,
/* [in] */ REFIID riid,
/* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
IComHandlerAction * This);
ULONG ( STDMETHODCALLTYPE *Release )(
IComHandlerAction * This);
HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )(
IComHandlerAction * This,
/* [out] */ UINT *pctinfo);
HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )(
IComHandlerAction * This,
/* [in] */ UINT iTInfo,
/* [in] */ LCID lcid,
/* [out] */ ITypeInfo **ppTInfo);
HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )(
IComHandlerAction * This,
/* [in] */ REFIID riid,
/* [size_is][in] */ LPOLESTR *rgszNames,
/* [range][in] */ UINT cNames,
/* [in] */ LCID lcid,
/* [size_is][out] */ DISPID *rgDispId);
/* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )(
IComHandlerAction * This,
/* [in] */ DISPID dispIdMember,
/* [in] */ REFIID riid,
/* [in] */ LCID lcid,
/* [in] */ WORD wFlags,
/* [out][in] */ DISPPARAMS *pDispParams,
/* [out] */ VARIANT *pVarResult,
/* [out] */ EXCEPINFO *pExcepInfo,
/* [out] */ UINT *puArgErr);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Id )(
IComHandlerAction * This,
/* [retval][out] */ BSTR *pId);
/* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Id )(
IComHandlerAction * This,
/* [in] */ BSTR Id);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Type )(
IComHandlerAction * This,
/* [retval][out] */ TASK_ACTION_TYPE *pType);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ClassId )(
IComHandlerAction * This,
/* [retval][out] */ BSTR *pClsid);
/* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ClassId )(
IComHandlerAction * This,
/* [in] */ BSTR clsid);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Data )(
IComHandlerAction * This,
/* [retval][out] */ BSTR *pData);
/* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Data )(
IComHandlerAction * This,
/* [in] */ BSTR data);
END_INTERFACE
} IComHandlerActionVtbl;
@@ -0,0 +1,139 @@
typedef struct IEmailActionVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
IEmailAction * This,
/* [in] */ REFIID riid,
/* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
IEmailAction * This);
ULONG ( STDMETHODCALLTYPE *Release )(
IEmailAction * This);
HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )(
IEmailAction * This,
/* [out] */ UINT *pctinfo);
HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )(
IEmailAction * This,
/* [in] */ UINT iTInfo,
/* [in] */ LCID lcid,
/* [out] */ ITypeInfo **ppTInfo);
HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )(
IEmailAction * This,
/* [in] */ REFIID riid,
/* [size_is][in] */ LPOLESTR *rgszNames,
/* [range][in] */ UINT cNames,
/* [in] */ LCID lcid,
/* [size_is][out] */ DISPID *rgDispId);
/* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )(
IEmailAction * This,
/* [in] */ DISPID dispIdMember,
/* [in] */ REFIID riid,
/* [in] */ LCID lcid,
/* [in] */ WORD wFlags,
/* [out][in] */ DISPPARAMS *pDispParams,
/* [out] */ VARIANT *pVarResult,
/* [out] */ EXCEPINFO *pExcepInfo,
/* [out] */ UINT *puArgErr);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Id )(
IEmailAction * This,
/* [retval][out] */ BSTR *pId);
/* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Id )(
IEmailAction * This,
/* [in] */ BSTR Id);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Type )(
IEmailAction * This,
/* [retval][out] */ TASK_ACTION_TYPE *pType);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Server )(
IEmailAction * This,
/* [retval][out] */ BSTR *pServer);
/* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Server )(
IEmailAction * This,
/* [in] */ BSTR server);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Subject )(
IEmailAction * This,
/* [retval][out] */ BSTR *pSubject);
/* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Subject )(
IEmailAction * This,
/* [in] */ BSTR subject);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_To )(
IEmailAction * This,
/* [retval][out] */ BSTR *pTo);
/* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_To )(
IEmailAction * This,
/* [in] */ BSTR to);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Cc )(
IEmailAction * This,
/* [retval][out] */ BSTR *pCc);
/* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Cc )(
IEmailAction * This,
/* [in] */ BSTR cc);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Bcc )(
IEmailAction * This,
/* [retval][out] */ BSTR *pBcc);
/* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Bcc )(
IEmailAction * This,
/* [in] */ BSTR bcc);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ReplyTo )(
IEmailAction * This,
/* [retval][out] */ BSTR *pReplyTo);
/* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ReplyTo )(
IEmailAction * This,
/* [in] */ BSTR replyTo);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_From )(
IEmailAction * This,
/* [retval][out] */ BSTR *pFrom);
/* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_From )(
IEmailAction * This,
/* [in] */ BSTR from);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HeaderFields )(
IEmailAction * This,
/* [retval][out] */ ITaskNamedValueCollection **ppHeaderFields);
/* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_HeaderFields )(
IEmailAction * This,
/* [in] */ ITaskNamedValueCollection *pHeaderFields);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Body )(
IEmailAction * This,
/* [retval][out] */ BSTR *pBody);
/* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Body )(
IEmailAction * This,
/* [in] */ BSTR body);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Attachments )(
IEmailAction * This,
/* [retval][out] */ SAFEARRAY * *pAttachements);
/* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Attachments )(
IEmailAction * This,
/* [max_is][in] */ SAFEARRAY * pAttachements);
END_INTERFACE
} IEmailActionVtbl;
@@ -0,0 +1,83 @@
typedef struct IExecActionVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
IExecAction * This,
/* [in] */ REFIID riid,
/* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
IExecAction * This);
ULONG ( STDMETHODCALLTYPE *Release )(
IExecAction * This);
HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )(
IExecAction * This,
/* [out] */ UINT *pctinfo);
HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )(
IExecAction * This,
/* [in] */ UINT iTInfo,
/* [in] */ LCID lcid,
/* [out] */ ITypeInfo **ppTInfo);
HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )(
IExecAction * This,
/* [in] */ REFIID riid,
/* [size_is][in] */ LPOLESTR *rgszNames,
/* [range][in] */ UINT cNames,
/* [in] */ LCID lcid,
/* [size_is][out] */ DISPID *rgDispId);
/* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )(
IExecAction * This,
/* [in] */ DISPID dispIdMember,
/* [in] */ REFIID riid,
/* [in] */ LCID lcid,
/* [in] */ WORD wFlags,
/* [out][in] */ DISPPARAMS *pDispParams,
/* [out] */ VARIANT *pVarResult,
/* [out] */ EXCEPINFO *pExcepInfo,
/* [out] */ UINT *puArgErr);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Id )(
IExecAction * This,
/* [retval][out] */ BSTR *pId);
/* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Id )(
IExecAction * This,
/* [in] */ BSTR Id);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Type )(
IExecAction * This,
/* [retval][out] */ TASK_ACTION_TYPE *pType);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Path )(
IExecAction * This,
/* [retval][out] */ BSTR *pPath);
/* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Path )(
IExecAction * This,
/* [in] */ BSTR path);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Arguments )(
IExecAction * This,
/* [retval][out] */ BSTR *pArgument);
/* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Arguments )(
IExecAction * This,
/* [in] */ BSTR argument);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_WorkingDirectory )(
IExecAction * This,
/* [retval][out] */ BSTR *pWorkingDirectory);
/* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_WorkingDirectory )(
IExecAction * This,
/* [in] */ BSTR workingDirectory);
END_INTERFACE
} IExecActionVtbl;
@@ -0,0 +1,79 @@
typedef struct IIdleSettingsVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
IIdleSettings * This,
/* [in] */ REFIID riid,
/* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
IIdleSettings * This);
ULONG ( STDMETHODCALLTYPE *Release )(
IIdleSettings * This);
HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )(
IIdleSettings * This,
/* [out] */ UINT *pctinfo);
HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )(
IIdleSettings * This,
/* [in] */ UINT iTInfo,
/* [in] */ LCID lcid,
/* [out] */ ITypeInfo **ppTInfo);
HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )(
IIdleSettings * This,
/* [in] */ REFIID riid,
/* [size_is][in] */ LPOLESTR *rgszNames,
/* [range][in] */ UINT cNames,
/* [in] */ LCID lcid,
/* [size_is][out] */ DISPID *rgDispId);
/* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )(
IIdleSettings * This,
/* [in] */ DISPID dispIdMember,
/* [in] */ REFIID riid,
/* [in] */ LCID lcid,
/* [in] */ WORD wFlags,
/* [out][in] */ DISPPARAMS *pDispParams,
/* [out] */ VARIANT *pVarResult,
/* [out] */ EXCEPINFO *pExcepInfo,
/* [out] */ UINT *puArgErr);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IdleDuration )(
IIdleSettings * This,
/* [retval][out] */ BSTR *pDelay);
/* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_IdleDuration )(
IIdleSettings * This,
/* [in] */ BSTR delay);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_WaitTimeout )(
IIdleSettings * This,
/* [retval][out] */ BSTR *pTimeout);
/* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_WaitTimeout )(
IIdleSettings * This,
/* [in] */ BSTR timeout);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_StopOnIdleEnd )(
IIdleSettings * This,
/* [retval][out] */ VARIANT_BOOL *pStop);
/* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_StopOnIdleEnd )(
IIdleSettings * This,
/* [in] */ VARIANT_BOOL stop);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RestartOnIdle )(
IIdleSettings * This,
/* [retval][out] */ VARIANT_BOOL *pRestart);
/* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RestartOnIdle )(
IIdleSettings * This,
/* [in] */ VARIANT_BOOL restart);
END_INTERFACE
} IIdleSettingsVtbl;
@@ -0,0 +1,63 @@
typedef struct INetworkSettingsVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
INetworkSettings * This,
/* [in] */ REFIID riid,
/* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
INetworkSettings * This);
ULONG ( STDMETHODCALLTYPE *Release )(
INetworkSettings * This);
HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )(
INetworkSettings * This,
/* [out] */ UINT *pctinfo);
HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )(
INetworkSettings * This,
/* [in] */ UINT iTInfo,
/* [in] */ LCID lcid,
/* [out] */ ITypeInfo **ppTInfo);
HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )(
INetworkSettings * This,
/* [in] */ REFIID riid,
/* [size_is][in] */ LPOLESTR *rgszNames,
/* [range][in] */ UINT cNames,
/* [in] */ LCID lcid,
/* [size_is][out] */ DISPID *rgDispId);
/* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )(
INetworkSettings * This,
/* [in] */ DISPID dispIdMember,
/* [in] */ REFIID riid,
/* [in] */ LCID lcid,
/* [in] */ WORD wFlags,
/* [out][in] */ DISPPARAMS *pDispParams,
/* [out] */ VARIANT *pVarResult,
/* [out] */ EXCEPINFO *pExcepInfo,
/* [out] */ UINT *puArgErr);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Name )(
INetworkSettings * This,
/* [retval][out] */ BSTR *pName);
/* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Name )(
INetworkSettings * This,
/* [in] */ BSTR name);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Id )(
INetworkSettings * This,
/* [retval][out] */ BSTR *pId);
/* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Id )(
INetworkSettings * This,
/* [in] */ BSTR id);
END_INTERFACE
} INetworkSettingsVtbl;
@@ -0,0 +1,95 @@
typedef struct IPrincipalVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
IPrincipal * This,
/* [in] */ REFIID riid,
/* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
IPrincipal * This);
ULONG ( STDMETHODCALLTYPE *Release )(
IPrincipal * This);
HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )(
IPrincipal * This,
/* [out] */ UINT *pctinfo);
HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )(
IPrincipal * This,
/* [in] */ UINT iTInfo,
/* [in] */ LCID lcid,
/* [out] */ ITypeInfo **ppTInfo);
HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )(
IPrincipal * This,
/* [in] */ REFIID riid,
/* [size_is][in] */ LPOLESTR *rgszNames,
/* [range][in] */ UINT cNames,
/* [in] */ LCID lcid,
/* [size_is][out] */ DISPID *rgDispId);
/* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )(
IPrincipal * This,
/* [in] */ DISPID dispIdMember,
/* [in] */ REFIID riid,
/* [in] */ LCID lcid,
/* [in] */ WORD wFlags,
/* [out][in] */ DISPPARAMS *pDispParams,
/* [out] */ VARIANT *pVarResult,
/* [out] */ EXCEPINFO *pExcepInfo,
/* [out] */ UINT *puArgErr);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Id )(
IPrincipal * This,
/* [retval][out] */ BSTR *pId);
/* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Id )(
IPrincipal * This,
/* [in] */ BSTR Id);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DisplayName )(
IPrincipal * This,
/* [retval][out] */ BSTR *pName);
/* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DisplayName )(
IPrincipal * This,
/* [in] */ BSTR name);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_UserId )(
IPrincipal * This,
/* [retval][out] */ BSTR *pUser);
/* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_UserId )(
IPrincipal * This,
/* [in] */ BSTR user);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_LogonType )(
IPrincipal * This,
/* [retval][out] */ TASK_LOGON_TYPE *pLogon);
/* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_LogonType )(
IPrincipal * This,
/* [in] */ TASK_LOGON_TYPE logon);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_GroupId )(
IPrincipal * This,
/* [retval][out] */ BSTR *pGroup);
/* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_GroupId )(
IPrincipal * This,
/* [in] */ BSTR group);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RunLevel )(
IPrincipal * This,
/* [retval][out] */ TASK_RUNLEVEL_TYPE *pRunLevel);
/* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RunLevel )(
IPrincipal * This,
/* [in] */ TASK_RUNLEVEL_TYPE runLevel);
END_INTERFACE
} IPrincipalVtbl;
@@ -0,0 +1,130 @@
typedef struct IRegisteredTaskVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in IRegisteredTask * This,
/* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in IRegisteredTask * This);
ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in IRegisteredTask * This);
HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )(
__RPC__in IRegisteredTask * This,
/* [out] */ __RPC__out UINT *pctinfo);
HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )(
__RPC__in IRegisteredTask * This,
/* [in] */ UINT iTInfo,
/* [in] */ LCID lcid,
/* [out] */ __RPC__deref_out_opt ITypeInfo **ppTInfo);
HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )(
__RPC__in IRegisteredTask * This,
/* [in] */ __RPC__in REFIID riid,
/* [size_is][in] */ __RPC__in_ecount_full(cNames) LPOLESTR *rgszNames,
/* [range][in] */ __RPC__in_range(0,16384) UINT cNames,
/* [in] */ LCID lcid,
/* [size_is][out] */ __RPC__out_ecount_full(cNames) DISPID *rgDispId);
/* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )(
IRegisteredTask * This,
/* [in] */ DISPID dispIdMember,
/* [in] */ REFIID riid,
/* [in] */ LCID lcid,
/* [in] */ WORD wFlags,
/* [out][in] */ DISPPARAMS *pDispParams,
/* [out] */ VARIANT *pVarResult,
/* [out] */ EXCEPINFO *pExcepInfo,
/* [out] */ UINT *puArgErr);
/* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Name )(
__RPC__in IRegisteredTask * This,
/* [retval][out] */ __RPC__deref_out_opt BSTR *pName);
/* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Path )(
__RPC__in IRegisteredTask * This,
/* [retval][out] */ __RPC__deref_out_opt BSTR *pPath);
/* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_State )(
__RPC__in IRegisteredTask * This,
/* [retval][out] */ __RPC__out TASK_STATE *pState);
/* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Enabled )(
__RPC__in IRegisteredTask * This,
/* [retval][out] */ __RPC__out VARIANT_BOOL *pEnabled);
/* [helpstring][id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Enabled )(
__RPC__in IRegisteredTask * This,
VARIANT_BOOL enabled);
/* [id] */ HRESULT ( STDMETHODCALLTYPE *Run )(
__RPC__in IRegisteredTask * This,
/* [in] */ VARIANT params,
/* [retval][out] */ __RPC__deref_out_opt IRunningTask **ppRunningTask);
/* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *RunEx )(
__RPC__in IRegisteredTask * This,
/* [in] */ VARIANT params,
/* [in] */ LONG flags,
/* [in] */ LONG sessionID,
/* [in] */ __RPC__in BSTR user,
/* [retval][out] */ __RPC__deref_out_opt IRunningTask **ppRunningTask);
/* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetInstances )(
__RPC__in IRegisteredTask * This,
/* [in] */ LONG flags,
/* [retval][out] */ __RPC__deref_out_opt IRunningTaskCollection **ppRunningTasks);
/* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_LastRunTime )(
__RPC__in IRegisteredTask * This,
/* [retval][out] */ __RPC__out DATE *pLastRunTime);
/* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_LastTaskResult )(
__RPC__in IRegisteredTask * This,
/* [retval][out] */ __RPC__out LONG *pLastTaskResult);
/* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_NumberOfMissedRuns )(
__RPC__in IRegisteredTask * This,
/* [retval][out] */ __RPC__out LONG *pNumberOfMissedRuns);
/* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_NextRunTime )(
__RPC__in IRegisteredTask * This,
/* [retval][out] */ __RPC__out DATE *pNextRunTime);
/* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Definition )(
__RPC__in IRegisteredTask * This,
/* [retval][out] */ __RPC__deref_out_opt ITaskDefinition **ppDefinition);
/* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Xml )(
__RPC__in IRegisteredTask * This,
/* [retval][out] */ __RPC__deref_out_opt BSTR *pXml);
/* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetSecurityDescriptor )(
__RPC__in IRegisteredTask * This,
/* [in] */ LONG securityInformation,
/* [retval][out] */ __RPC__deref_out_opt BSTR *pSddl);
/* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *SetSecurityDescriptor )(
__RPC__in IRegisteredTask * This,
/* [in] */ __RPC__in BSTR sddl,
/* [in] */ LONG flags);
/* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Stop )(
__RPC__in IRegisteredTask * This,
/* [in] */ LONG flags);
/* [helpstring][hidden][restricted] */ HRESULT ( STDMETHODCALLTYPE *GetRunTimes )(
__RPC__in IRegisteredTask * This,
/* [in] */ __RPC__in const LPSYSTEMTIME pstStart,
/* [in] */ __RPC__in const LPSYSTEMTIME pstEnd,
/* [out][in] */ __RPC__inout DWORD *pCount,
/* [out] */ __RPC__deref_out_opt LPSYSTEMTIME *pRunTimes);
END_INTERFACE
} IRegisteredTaskVtbl;
@@ -0,0 +1,60 @@
typedef struct IRegisteredTaskCollectionVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in IRegisteredTaskCollection * This,
/* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in IRegisteredTaskCollection * This);
ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in IRegisteredTaskCollection * This);
HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )(
__RPC__in IRegisteredTaskCollection * This,
/* [out] */ __RPC__out UINT *pctinfo);
HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )(
__RPC__in IRegisteredTaskCollection * This,
/* [in] */ UINT iTInfo,
/* [in] */ LCID lcid,
/* [out] */ __RPC__deref_out_opt ITypeInfo **ppTInfo);
HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )(
__RPC__in IRegisteredTaskCollection * This,
/* [in] */ __RPC__in REFIID riid,
/* [size_is][in] */ __RPC__in_ecount_full(cNames) LPOLESTR *rgszNames,
/* [range][in] */ __RPC__in_range(0,16384) UINT cNames,
/* [in] */ LCID lcid,
/* [size_is][out] */ __RPC__out_ecount_full(cNames) DISPID *rgDispId);
/* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )(
IRegisteredTaskCollection * This,
/* [in] */ DISPID dispIdMember,
/* [in] */ REFIID riid,
/* [in] */ LCID lcid,
/* [in] */ WORD wFlags,
/* [out][in] */ DISPPARAMS *pDispParams,
/* [out] */ VARIANT *pVarResult,
/* [out] */ EXCEPINFO *pExcepInfo,
/* [out] */ UINT *puArgErr);
/* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Count )(
__RPC__in IRegisteredTaskCollection * This,
/* [retval][out] */ __RPC__out LONG *pCount);
/* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Item )(
__RPC__in IRegisteredTaskCollection * This,
/* [in] */ VARIANT index,
/* [retval][out] */ __RPC__deref_out_opt IRegisteredTask **ppRegisteredTask);
/* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get__NewEnum )(
__RPC__in IRegisteredTaskCollection * This,
/* [retval][out] */ __RPC__deref_out_opt IUnknown **ppEnum);
END_INTERFACE
} IRegisteredTaskCollectionVtbl;
@@ -0,0 +1,119 @@
typedef struct IRegistrationInfoVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
IRegistrationInfo * This,
/* [in] */ REFIID riid,
/* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
IRegistrationInfo * This);
ULONG ( STDMETHODCALLTYPE *Release )(
IRegistrationInfo * This);
HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )(
IRegistrationInfo * This,
/* [out] */ UINT *pctinfo);
HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )(
IRegistrationInfo * This,
/* [in] */ UINT iTInfo,
/* [in] */ LCID lcid,
/* [out] */ ITypeInfo **ppTInfo);
HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )(
IRegistrationInfo * This,
/* [in] */ REFIID riid,
/* [size_is][in] */ LPOLESTR *rgszNames,
/* [range][in] */ UINT cNames,
/* [in] */ LCID lcid,
/* [size_is][out] */ DISPID *rgDispId);
/* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )(
IRegistrationInfo * This,
/* [in] */ DISPID dispIdMember,
/* [in] */ REFIID riid,
/* [in] */ LCID lcid,
/* [in] */ WORD wFlags,
/* [out][in] */ DISPPARAMS *pDispParams,
/* [out] */ VARIANT *pVarResult,
/* [out] */ EXCEPINFO *pExcepInfo,
/* [out] */ UINT *puArgErr);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Description )(
IRegistrationInfo * This,
/* [retval][out] */ BSTR *pDescription);
/* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Description )(
IRegistrationInfo * This,
/* [in] */ BSTR description);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Author )(
IRegistrationInfo * This,
/* [retval][out] */ BSTR *pAuthor);
/* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Author )(
IRegistrationInfo * This,
/* [in] */ BSTR author);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Version )(
IRegistrationInfo * This,
/* [retval][out] */ BSTR *pVersion);
/* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Version )(
IRegistrationInfo * This,
/* [in] */ BSTR version);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Date )(
IRegistrationInfo * This,
/* [retval][out] */ BSTR *pDate);
/* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Date )(
IRegistrationInfo * This,
/* [in] */ BSTR date);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Documentation )(
IRegistrationInfo * This,
/* [retval][out] */ BSTR *pDocumentation);
/* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Documentation )(
IRegistrationInfo * This,
/* [in] */ BSTR documentation);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_XmlText )(
IRegistrationInfo * This,
/* [retval][out] */ BSTR *pText);
/* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_XmlText )(
IRegistrationInfo * This,
/* [in] */ BSTR text);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_URI )(
IRegistrationInfo * This,
/* [retval][out] */ BSTR *pUri);
/* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_URI )(
IRegistrationInfo * This,
/* [in] */ BSTR uri);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SecurityDescriptor )(
IRegistrationInfo * This,
/* [retval][out] */ VARIANT *pSddl);
/* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_SecurityDescriptor )(
IRegistrationInfo * This,
/* [in] */ VARIANT sddl);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Source )(
IRegistrationInfo * This,
/* [retval][out] */ BSTR *pSource);
/* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Source )(
IRegistrationInfo * This,
/* [in] */ BSTR source);
END_INTERFACE
} IRegistrationInfoVtbl;
@@ -0,0 +1,71 @@
typedef struct IRepetitionPatternVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
IRepetitionPattern * This,
/* [in] */ REFIID riid,
/* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
IRepetitionPattern * This);
ULONG ( STDMETHODCALLTYPE *Release )(
IRepetitionPattern * This);
HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )(
IRepetitionPattern * This,
/* [out] */ UINT *pctinfo);
HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )(
IRepetitionPattern * This,
/* [in] */ UINT iTInfo,
/* [in] */ LCID lcid,
/* [out] */ ITypeInfo **ppTInfo);
HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )(
IRepetitionPattern * This,
/* [in] */ REFIID riid,
/* [size_is][in] */ LPOLESTR *rgszNames,
/* [range][in] */ UINT cNames,
/* [in] */ LCID lcid,
/* [size_is][out] */ DISPID *rgDispId);
/* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )(
IRepetitionPattern * This,
/* [in] */ DISPID dispIdMember,
/* [in] */ REFIID riid,
/* [in] */ LCID lcid,
/* [in] */ WORD wFlags,
/* [out][in] */ DISPPARAMS *pDispParams,
/* [out] */ VARIANT *pVarResult,
/* [out] */ EXCEPINFO *pExcepInfo,
/* [out] */ UINT *puArgErr);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Interval )(
IRepetitionPattern * This,
/* [retval][out] */ BSTR *pInterval);
/* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Interval )(
IRepetitionPattern * This,
/* [in] */ BSTR interval);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Duration )(
IRepetitionPattern * This,
/* [retval][out] */ BSTR *pDuration);
/* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Duration )(
IRepetitionPattern * This,
/* [in] */ BSTR duration);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_StopAtDurationEnd )(
IRepetitionPattern * This,
/* [retval][out] */ VARIANT_BOOL *pStop);
/* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_StopAtDurationEnd )(
IRepetitionPattern * This,
/* [in] */ VARIANT_BOOL stop);
END_INTERFACE
} IRepetitionPatternVtbl;
@@ -0,0 +1,77 @@
typedef struct IRunningTaskVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in IRunningTask * This,
/* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in IRunningTask * This);
ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in IRunningTask * This);
HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )(
__RPC__in IRunningTask * This,
/* [out] */ __RPC__out UINT *pctinfo);
HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )(
__RPC__in IRunningTask * This,
/* [in] */ UINT iTInfo,
/* [in] */ LCID lcid,
/* [out] */ __RPC__deref_out_opt ITypeInfo **ppTInfo);
HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )(
__RPC__in IRunningTask * This,
/* [in] */ __RPC__in REFIID riid,
/* [size_is][in] */ __RPC__in_ecount_full(cNames) LPOLESTR *rgszNames,
/* [range][in] */ __RPC__in_range(0,16384) UINT cNames,
/* [in] */ LCID lcid,
/* [size_is][out] */ __RPC__out_ecount_full(cNames) DISPID *rgDispId);
/* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )(
IRunningTask * This,
/* [in] */ DISPID dispIdMember,
/* [in] */ REFIID riid,
/* [in] */ LCID lcid,
/* [in] */ WORD wFlags,
/* [out][in] */ DISPPARAMS *pDispParams,
/* [out] */ VARIANT *pVarResult,
/* [out] */ EXCEPINFO *pExcepInfo,
/* [out] */ UINT *puArgErr);
/* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Name )(
__RPC__in IRunningTask * This,
/* [retval][out] */ __RPC__deref_out_opt BSTR *pName);
/* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_InstanceGuid )(
__RPC__in IRunningTask * This,
/* [retval][out] */ __RPC__deref_out_opt BSTR *pGuid);
/* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Path )(
__RPC__in IRunningTask * This,
/* [retval][out] */ __RPC__deref_out_opt BSTR *pPath);
/* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_State )(
__RPC__in IRunningTask * This,
/* [retval][out] */ __RPC__out TASK_STATE *pState);
/* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_CurrentAction )(
__RPC__in IRunningTask * This,
/* [retval][out] */ __RPC__deref_out_opt BSTR *pName);
/* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Stop )(
__RPC__in IRunningTask * This);
/* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Refresh )(
__RPC__in IRunningTask * This);
/* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_EnginePID )(
__RPC__in IRunningTask * This,
/* [retval][out] */ __RPC__out DWORD *pPID);
END_INTERFACE
} IRunningTaskVtbl;
@@ -0,0 +1,60 @@
typedef struct IRunningTaskCollectionVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in IRunningTaskCollection * This,
/* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in IRunningTaskCollection * This);
ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in IRunningTaskCollection * This);
HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )(
__RPC__in IRunningTaskCollection * This,
/* [out] */ __RPC__out UINT *pctinfo);
HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )(
__RPC__in IRunningTaskCollection * This,
/* [in] */ UINT iTInfo,
/* [in] */ LCID lcid,
/* [out] */ __RPC__deref_out_opt ITypeInfo **ppTInfo);
HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )(
__RPC__in IRunningTaskCollection * This,
/* [in] */ __RPC__in REFIID riid,
/* [size_is][in] */ __RPC__in_ecount_full(cNames) LPOLESTR *rgszNames,
/* [range][in] */ __RPC__in_range(0,16384) UINT cNames,
/* [in] */ LCID lcid,
/* [size_is][out] */ __RPC__out_ecount_full(cNames) DISPID *rgDispId);
/* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )(
IRunningTaskCollection * This,
/* [in] */ DISPID dispIdMember,
/* [in] */ REFIID riid,
/* [in] */ LCID lcid,
/* [in] */ WORD wFlags,
/* [out][in] */ DISPPARAMS *pDispParams,
/* [out] */ VARIANT *pVarResult,
/* [out] */ EXCEPINFO *pExcepInfo,
/* [out] */ UINT *puArgErr);
/* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Count )(
__RPC__in IRunningTaskCollection * This,
/* [retval][out] */ __RPC__out LONG *pCount);
/* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Item )(
__RPC__in IRunningTaskCollection * This,
/* [in] */ VARIANT index,
/* [retval][out] */ __RPC__deref_out_opt IRunningTask **ppRunningTask);
/* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get__NewEnum )(
__RPC__in IRunningTaskCollection * This,
/* [retval][out] */ __RPC__deref_out_opt IUnknown **ppEnum);
END_INTERFACE
} IRunningTaskCollectionVtbl;
@@ -0,0 +1,75 @@
typedef struct IShowMessageActionVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
IShowMessageAction * This,
/* [in] */ REFIID riid,
/* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
IShowMessageAction * This);
ULONG ( STDMETHODCALLTYPE *Release )(
IShowMessageAction * This);
HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )(
IShowMessageAction * This,
/* [out] */ UINT *pctinfo);
HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )(
IShowMessageAction * This,
/* [in] */ UINT iTInfo,
/* [in] */ LCID lcid,
/* [out] */ ITypeInfo **ppTInfo);
HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )(
IShowMessageAction * This,
/* [in] */ REFIID riid,
/* [size_is][in] */ LPOLESTR *rgszNames,
/* [range][in] */ UINT cNames,
/* [in] */ LCID lcid,
/* [size_is][out] */ DISPID *rgDispId);
/* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )(
IShowMessageAction * This,
/* [in] */ DISPID dispIdMember,
/* [in] */ REFIID riid,
/* [in] */ LCID lcid,
/* [in] */ WORD wFlags,
/* [out][in] */ DISPPARAMS *pDispParams,
/* [out] */ VARIANT *pVarResult,
/* [out] */ EXCEPINFO *pExcepInfo,
/* [out] */ UINT *puArgErr);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Id )(
IShowMessageAction * This,
/* [retval][out] */ BSTR *pId);
/* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Id )(
IShowMessageAction * This,
/* [in] */ BSTR Id);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Type )(
IShowMessageAction * This,
/* [retval][out] */ TASK_ACTION_TYPE *pType);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Title )(
IShowMessageAction * This,
/* [retval][out] */ BSTR *pTitle);
/* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Title )(
IShowMessageAction * This,
/* [in] */ BSTR title);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MessageBody )(
IShowMessageAction * This,
/* [retval][out] */ BSTR *pMessageBody);
/* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_MessageBody )(
IShowMessageAction * This,
/* [in] */ BSTR messageBody);
END_INTERFACE
} IShowMessageActionVtbl;
@@ -0,0 +1,103 @@
typedef struct ITaskDefinitionVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ITaskDefinition * This,
/* [in] */ REFIID riid,
/* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
ITaskDefinition * This);
ULONG ( STDMETHODCALLTYPE *Release )(
ITaskDefinition * This);
HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )(
ITaskDefinition * This,
/* [out] */ UINT *pctinfo);
HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )(
ITaskDefinition * This,
/* [in] */ UINT iTInfo,
/* [in] */ LCID lcid,
/* [out] */ ITypeInfo **ppTInfo);
HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )(
ITaskDefinition * This,
/* [in] */ REFIID riid,
/* [size_is][in] */ LPOLESTR *rgszNames,
/* [range][in] */ UINT cNames,
/* [in] */ LCID lcid,
/* [size_is][out] */ DISPID *rgDispId);
/* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )(
ITaskDefinition * This,
/* [in] */ DISPID dispIdMember,
/* [in] */ REFIID riid,
/* [in] */ LCID lcid,
/* [in] */ WORD wFlags,
/* [out][in] */ DISPPARAMS *pDispParams,
/* [out] */ VARIANT *pVarResult,
/* [out] */ EXCEPINFO *pExcepInfo,
/* [out] */ UINT *puArgErr);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RegistrationInfo )(
ITaskDefinition * This,
/* [retval][out] */ IRegistrationInfo **ppRegistrationInfo);
/* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RegistrationInfo )(
ITaskDefinition * This,
/* [in] */ IRegistrationInfo *pRegistrationInfo);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Triggers )(
ITaskDefinition * This,
/* [retval][out] */ ITriggerCollection **ppTriggers);
/* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Triggers )(
ITaskDefinition * This,
/* [in] */ ITriggerCollection *pTriggers);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Settings )(
ITaskDefinition * This,
/* [retval][out] */ ITaskSettings **ppSettings);
/* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Settings )(
ITaskDefinition * This,
/* [in] */ ITaskSettings *pSettings);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Data )(
ITaskDefinition * This,
/* [retval][out] */ BSTR *pData);
/* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Data )(
ITaskDefinition * This,
/* [in] */ BSTR data);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Principal )(
ITaskDefinition * This,
/* [retval][out] */ IPrincipal **ppPrincipal);
/* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Principal )(
ITaskDefinition * This,
/* [in] */ IPrincipal *pPrincipal);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Actions )(
ITaskDefinition * This,
/* [retval][out] */ IActionCollection **ppActions);
/* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Actions )(
ITaskDefinition * This,
/* [in] */ IActionCollection *pActions);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_XmlText )(
ITaskDefinition * This,
/* [retval][out] */ BSTR *pXml);
/* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_XmlText )(
ITaskDefinition * This,
/* [in] */ BSTR xml);
END_INTERFACE
} ITaskDefinitionVtbl;
@@ -0,0 +1,123 @@
typedef struct ITaskFolderVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in ITaskFolder * This,
/* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in ITaskFolder * This);
ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in ITaskFolder * This);
HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )(
__RPC__in ITaskFolder * This,
/* [out] */ __RPC__out UINT *pctinfo);
HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )(
__RPC__in ITaskFolder * This,
/* [in] */ UINT iTInfo,
/* [in] */ LCID lcid,
/* [out] */ __RPC__deref_out_opt ITypeInfo **ppTInfo);
HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )(
__RPC__in ITaskFolder * This,
/* [in] */ __RPC__in REFIID riid,
/* [size_is][in] */ __RPC__in_ecount_full(cNames) LPOLESTR *rgszNames,
/* [range][in] */ __RPC__in_range(0,16384) UINT cNames,
/* [in] */ LCID lcid,
/* [size_is][out] */ __RPC__out_ecount_full(cNames) DISPID *rgDispId);
/* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )(
ITaskFolder * This,
/* [in] */ DISPID dispIdMember,
/* [in] */ REFIID riid,
/* [in] */ LCID lcid,
/* [in] */ WORD wFlags,
/* [out][in] */ DISPPARAMS *pDispParams,
/* [out] */ VARIANT *pVarResult,
/* [out] */ EXCEPINFO *pExcepInfo,
/* [out] */ UINT *puArgErr);
/* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Name )(
__RPC__in ITaskFolder * This,
/* [retval][out] */ __RPC__deref_out_opt BSTR *pName);
/* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Path )(
__RPC__in ITaskFolder * This,
/* [retval][out] */ __RPC__deref_out_opt BSTR *pPath);
/* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetFolder )(
__RPC__in ITaskFolder * This,
__RPC__in BSTR path,
/* [retval][out] */ __RPC__deref_out_opt ITaskFolder **ppFolder);
/* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetFolders )(
__RPC__in ITaskFolder * This,
/* [in] */ LONG flags,
/* [retval][out] */ __RPC__deref_out_opt ITaskFolderCollection **ppFolders);
/* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *CreateFolder )(
__RPC__in ITaskFolder * This,
/* [in] */ __RPC__in BSTR subFolderName,
/* [optional][in] */ VARIANT sddl,
/* [retval][out] */ __RPC__deref_out_opt ITaskFolder **ppFolder);
/* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *DeleteFolder )(
__RPC__in ITaskFolder * This,
__RPC__in BSTR subFolderName,
/* [in] */ LONG flags);
/* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetTask )(
__RPC__in ITaskFolder * This,
/* [in] */ __RPC__in BSTR path,
/* [retval][out] */ __RPC__deref_out_opt IRegisteredTask **ppTask);
/* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetTasks )(
__RPC__in ITaskFolder * This,
/* [in] */ LONG flags,
/* [retval][out] */ __RPC__deref_out_opt IRegisteredTaskCollection **ppTasks);
/* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *DeleteTask )(
__RPC__in ITaskFolder * This,
/* [in] */ __RPC__in BSTR name,
/* [in] */ LONG flags);
/* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *RegisterTask )(
__RPC__in ITaskFolder * This,
/* [in] */ __RPC__in BSTR path,
/* [in] */ __RPC__in BSTR xmlText,
/* [in] */ LONG flags,
/* [in] */ VARIANT userId,
/* [in] */ VARIANT password,
/* [in] */ TASK_LOGON_TYPE logonType,
/* [optional][in] */ VARIANT sddl,
/* [retval][out] */ __RPC__deref_out_opt IRegisteredTask **ppTask);
/* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *RegisterTaskDefinition )(
__RPC__in ITaskFolder * This,
/* [in] */ __RPC__in BSTR path,
/* [in] */ __RPC__in_opt ITaskDefinition *pDefinition,
/* [in] */ LONG flags,
/* [in] */ VARIANT userId,
/* [in] */ VARIANT password,
/* [in] */ TASK_LOGON_TYPE logonType,
/* [optional][in] */ VARIANT sddl,
/* [retval][out] */ __RPC__deref_out_opt IRegisteredTask **ppTask);
/* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetSecurityDescriptor )(
__RPC__in ITaskFolder * This,
LONG securityInformation,
/* [retval][out] */ __RPC__deref_out_opt BSTR *pSddl);
/* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *SetSecurityDescriptor )(
__RPC__in ITaskFolder * This,
/* [in] */ __RPC__in BSTR sddl,
/* [in] */ LONG flags);
END_INTERFACE
} ITaskFolderVtbl;
@@ -0,0 +1,60 @@
typedef struct ITaskFolderCollectionVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in ITaskFolderCollection * This,
/* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in ITaskFolderCollection * This);
ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in ITaskFolderCollection * This);
HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )(
__RPC__in ITaskFolderCollection * This,
/* [out] */ __RPC__out UINT *pctinfo);
HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )(
__RPC__in ITaskFolderCollection * This,
/* [in] */ UINT iTInfo,
/* [in] */ LCID lcid,
/* [out] */ __RPC__deref_out_opt ITypeInfo **ppTInfo);
HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )(
__RPC__in ITaskFolderCollection * This,
/* [in] */ __RPC__in REFIID riid,
/* [size_is][in] */ __RPC__in_ecount_full(cNames) LPOLESTR *rgszNames,
/* [range][in] */ __RPC__in_range(0,16384) UINT cNames,
/* [in] */ LCID lcid,
/* [size_is][out] */ __RPC__out_ecount_full(cNames) DISPID *rgDispId);
/* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )(
ITaskFolderCollection * This,
/* [in] */ DISPID dispIdMember,
/* [in] */ REFIID riid,
/* [in] */ LCID lcid,
/* [in] */ WORD wFlags,
/* [out][in] */ DISPPARAMS *pDispParams,
/* [out] */ VARIANT *pVarResult,
/* [out] */ EXCEPINFO *pExcepInfo,
/* [out] */ UINT *puArgErr);
/* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Count )(
__RPC__in ITaskFolderCollection * This,
/* [retval][out] */ __RPC__out LONG *pCount);
/* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Item )(
__RPC__in ITaskFolderCollection * This,
/* [in] */ VARIANT index,
/* [retval][out] */ __RPC__deref_out_opt ITaskFolder **ppFolder);
/* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get__NewEnum )(
__RPC__in ITaskFolderCollection * This,
/* [retval][out] */ __RPC__deref_out_opt IUnknown **ppEnum);
END_INTERFACE
} ITaskFolderCollectionVtbl;
@@ -0,0 +1,73 @@
typedef struct ITaskNamedValueCollectionVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ITaskNamedValueCollection * This,
/* [in] */ REFIID riid,
/* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
ITaskNamedValueCollection * This);
ULONG ( STDMETHODCALLTYPE *Release )(
ITaskNamedValueCollection * This);
HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )(
ITaskNamedValueCollection * This,
/* [out] */ UINT *pctinfo);
HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )(
ITaskNamedValueCollection * This,
/* [in] */ UINT iTInfo,
/* [in] */ LCID lcid,
/* [out] */ ITypeInfo **ppTInfo);
HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )(
ITaskNamedValueCollection * This,
/* [in] */ REFIID riid,
/* [size_is][in] */ LPOLESTR *rgszNames,
/* [range][in] */ UINT cNames,
/* [in] */ LCID lcid,
/* [size_is][out] */ DISPID *rgDispId);
/* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )(
ITaskNamedValueCollection * This,
/* [in] */ DISPID dispIdMember,
/* [in] */ REFIID riid,
/* [in] */ LCID lcid,
/* [in] */ WORD wFlags,
/* [out][in] */ DISPPARAMS *pDispParams,
/* [out] */ VARIANT *pVarResult,
/* [out] */ EXCEPINFO *pExcepInfo,
/* [out] */ UINT *puArgErr);
/* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Count )(
ITaskNamedValueCollection * This,
/* [retval][out] */ long *pCount);
/* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Item )(
ITaskNamedValueCollection * This,
/* [in] */ LONG index,
/* [retval][out] */ ITaskNamedValuePair **ppPair);
/* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get__NewEnum )(
ITaskNamedValueCollection * This,
/* [retval][out] */ IUnknown **ppEnum);
/* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Create )(
ITaskNamedValueCollection * This,
/* [in] */ BSTR name,
/* [in] */ BSTR value,
/* [retval][out] */ ITaskNamedValuePair **ppPair);
/* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Remove )(
ITaskNamedValueCollection * This,
/* [in] */ LONG index);
/* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Clear )(
ITaskNamedValueCollection * This);
END_INTERFACE
} ITaskNamedValueCollectionVtbl;
@@ -0,0 +1,63 @@
typedef struct ITaskNamedValuePairVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ITaskNamedValuePair * This,
/* [in] */ REFIID riid,
/* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
ITaskNamedValuePair * This);
ULONG ( STDMETHODCALLTYPE *Release )(
ITaskNamedValuePair * This);
HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )(
ITaskNamedValuePair * This,
/* [out] */ UINT *pctinfo);
HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )(
ITaskNamedValuePair * This,
/* [in] */ UINT iTInfo,
/* [in] */ LCID lcid,
/* [out] */ ITypeInfo **ppTInfo);
HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )(
ITaskNamedValuePair * This,
/* [in] */ REFIID riid,
/* [size_is][in] */ LPOLESTR *rgszNames,
/* [range][in] */ UINT cNames,
/* [in] */ LCID lcid,
/* [size_is][out] */ DISPID *rgDispId);
/* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )(
ITaskNamedValuePair * This,
/* [in] */ DISPID dispIdMember,
/* [in] */ REFIID riid,
/* [in] */ LCID lcid,
/* [in] */ WORD wFlags,
/* [out][in] */ DISPPARAMS *pDispParams,
/* [out] */ VARIANT *pVarResult,
/* [out] */ EXCEPINFO *pExcepInfo,
/* [out] */ UINT *puArgErr);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Name )(
ITaskNamedValuePair * This,
/* [retval][out] */ BSTR *pName);
/* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Name )(
ITaskNamedValuePair * This,
/* [in] */ BSTR name);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Value )(
ITaskNamedValuePair * This,
/* [retval][out] */ BSTR *pValue);
/* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Value )(
ITaskNamedValuePair * This,
/* [in] */ BSTR value);
END_INTERFACE
} ITaskNamedValuePairVtbl;
@@ -0,0 +1,89 @@
typedef struct ITaskServiceVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in ITaskService * This,
/* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in ITaskService * This);
ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in ITaskService * This);
HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )(
__RPC__in ITaskService * This,
/* [out] */ __RPC__out UINT *pctinfo);
HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )(
__RPC__in ITaskService * This,
/* [in] */ UINT iTInfo,
/* [in] */ LCID lcid,
/* [out] */ __RPC__deref_out_opt ITypeInfo **ppTInfo);
HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )(
__RPC__in ITaskService * This,
/* [in] */ __RPC__in REFIID riid,
/* [size_is][in] */ __RPC__in_ecount_full(cNames) LPOLESTR *rgszNames,
/* [range][in] */ __RPC__in_range(0,16384) UINT cNames,
/* [in] */ LCID lcid,
/* [size_is][out] */ __RPC__out_ecount_full(cNames) DISPID *rgDispId);
/* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )(
ITaskService * This,
/* [in] */ DISPID dispIdMember,
/* [in] */ REFIID riid,
/* [in] */ LCID lcid,
/* [in] */ WORD wFlags,
/* [out][in] */ DISPPARAMS *pDispParams,
/* [out] */ VARIANT *pVarResult,
/* [out] */ EXCEPINFO *pExcepInfo,
/* [out] */ UINT *puArgErr);
/* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetFolder )(
__RPC__in ITaskService * This,
/* [in] */ __RPC__in BSTR path,
/* [retval][out] */ __RPC__deref_out_opt ITaskFolder **ppFolder);
/* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetRunningTasks )(
__RPC__in ITaskService * This,
/* [in] */ LONG flags,
/* [retval][out] */ __RPC__deref_out_opt IRunningTaskCollection **ppRunningTasks);
/* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *NewTask )(
__RPC__in ITaskService * This,
/* [in] */ DWORD flags,
/* [retval][out] */ __RPC__deref_out_opt ITaskDefinition **ppDefinition);
/* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Connect )(
__RPC__in ITaskService * This,
/* [optional][in] */ VARIANT serverName,
/* [optional][in] */ VARIANT user,
/* [optional][in] */ VARIANT domain,
/* [optional][in] */ VARIANT password);
/* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Connected )(
__RPC__in ITaskService * This,
/* [retval][out] */ __RPC__out VARIANT_BOOL *pConnected);
/* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_TargetServer )(
__RPC__in ITaskService * This,
/* [retval][out] */ __RPC__deref_out_opt BSTR *pServer);
/* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_ConnectedUser )(
__RPC__in ITaskService * This,
/* [retval][out] */ __RPC__deref_out_opt BSTR *pUser);
/* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_ConnectedDomain )(
__RPC__in ITaskService * This,
/* [retval][out] */ __RPC__deref_out_opt BSTR *pDomain);
/* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_HighestVersion )(
__RPC__in ITaskService * This,
/* [retval][out] */ __RPC__out DWORD *pVersion);
END_INTERFACE
} ITaskServiceVtbl;
@@ -0,0 +1,207 @@
typedef struct ITaskSettingsVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ITaskSettings * This,
/* [in] */ REFIID riid,
/* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
ITaskSettings * This);
ULONG ( STDMETHODCALLTYPE *Release )(
ITaskSettings * This);
HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )(
ITaskSettings * This,
/* [out] */ UINT *pctinfo);
HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )(
ITaskSettings * This,
/* [in] */ UINT iTInfo,
/* [in] */ LCID lcid,
/* [out] */ ITypeInfo **ppTInfo);
HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )(
ITaskSettings * This,
/* [in] */ REFIID riid,
/* [size_is][in] */ LPOLESTR *rgszNames,
/* [range][in] */ UINT cNames,
/* [in] */ LCID lcid,
/* [size_is][out] */ DISPID *rgDispId);
/* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )(
ITaskSettings * This,
/* [in] */ DISPID dispIdMember,
/* [in] */ REFIID riid,
/* [in] */ LCID lcid,
/* [in] */ WORD wFlags,
/* [out][in] */ DISPPARAMS *pDispParams,
/* [out] */ VARIANT *pVarResult,
/* [out] */ EXCEPINFO *pExcepInfo,
/* [out] */ UINT *puArgErr);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AllowDemandStart )(
ITaskSettings * This,
/* [retval][out] */ VARIANT_BOOL *pAllowDemandStart);
/* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_AllowDemandStart )(
ITaskSettings * This,
/* [in] */ VARIANT_BOOL allowDemandStart);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RestartInterval )(
ITaskSettings * This,
/* [retval][out] */ BSTR *pRestartInterval);
/* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RestartInterval )(
ITaskSettings * This,
/* [in] */ BSTR restartInterval);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RestartCount )(
ITaskSettings * This,
/* [retval][out] */ int *pRestartCount);
/* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RestartCount )(
ITaskSettings * This,
/* [in] */ int restartCount);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MultipleInstances )(
ITaskSettings * This,
/* [retval][out] */ TASK_INSTANCES_POLICY *pPolicy);
/* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_MultipleInstances )(
ITaskSettings * This,
/* [in] */ TASK_INSTANCES_POLICY policy);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_StopIfGoingOnBatteries )(
ITaskSettings * This,
/* [retval][out] */ VARIANT_BOOL *pStopIfOnBatteries);
/* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_StopIfGoingOnBatteries )(
ITaskSettings * This,
/* [in] */ VARIANT_BOOL stopIfOnBatteries);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DisallowStartIfOnBatteries )(
ITaskSettings * This,
/* [retval][out] */ VARIANT_BOOL *pDisallowStart);
/* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DisallowStartIfOnBatteries )(
ITaskSettings * This,
/* [in] */ VARIANT_BOOL disallowStart);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AllowHardTerminate )(
ITaskSettings * This,
/* [retval][out] */ VARIANT_BOOL *pAllowHardTerminate);
/* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_AllowHardTerminate )(
ITaskSettings * This,
/* [in] */ VARIANT_BOOL allowHardTerminate);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_StartWhenAvailable )(
ITaskSettings * This,
/* [retval][out] */ VARIANT_BOOL *pStartWhenAvailable);
/* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_StartWhenAvailable )(
ITaskSettings * This,
/* [in] */ VARIANT_BOOL startWhenAvailable);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_XmlText )(
ITaskSettings * This,
/* [retval][out] */ BSTR *pText);
/* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_XmlText )(
ITaskSettings * This,
/* [in] */ BSTR text);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RunOnlyIfNetworkAvailable )(
ITaskSettings * This,
/* [retval][out] */ VARIANT_BOOL *pRunOnlyIfNetworkAvailable);
/* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RunOnlyIfNetworkAvailable )(
ITaskSettings * This,
/* [in] */ VARIANT_BOOL runOnlyIfNetworkAvailable);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ExecutionTimeLimit )(
ITaskSettings * This,
/* [retval][out] */ BSTR *pExecutionTimeLimit);
/* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ExecutionTimeLimit )(
ITaskSettings * This,
/* [in] */ BSTR executionTimeLimit);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Enabled )(
ITaskSettings * This,
/* [retval][out] */ VARIANT_BOOL *pEnabled);
/* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Enabled )(
ITaskSettings * This,
/* [in] */ VARIANT_BOOL enabled);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DeleteExpiredTaskAfter )(
ITaskSettings * This,
/* [retval][out] */ BSTR *pExpirationDelay);
/* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_DeleteExpiredTaskAfter )(
ITaskSettings * This,
/* [in] */ BSTR expirationDelay);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Priority )(
ITaskSettings * This,
/* [retval][out] */ int *pPriority);
/* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Priority )(
ITaskSettings * This,
/* [in] */ int priority);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Compatibility )(
ITaskSettings * This,
/* [retval][out] */ TASK_COMPATIBILITY *pCompatLevel);
/* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Compatibility )(
ITaskSettings * This,
/* [in] */ TASK_COMPATIBILITY compatLevel);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Hidden )(
ITaskSettings * This,
/* [retval][out] */ VARIANT_BOOL *pHidden);
/* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Hidden )(
ITaskSettings * This,
/* [in] */ VARIANT_BOOL hidden);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IdleSettings )(
ITaskSettings * This,
/* [retval][out] */ IIdleSettings **ppIdleSettings);
/* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_IdleSettings )(
ITaskSettings * This,
/* [in] */ IIdleSettings *pIdleSettings);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RunOnlyIfIdle )(
ITaskSettings * This,
/* [retval][out] */ VARIANT_BOOL *pRunOnlyIfIdle);
/* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RunOnlyIfIdle )(
ITaskSettings * This,
/* [in] */ VARIANT_BOOL runOnlyIfIdle);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_WakeToRun )(
ITaskSettings * This,
/* [retval][out] */ VARIANT_BOOL *pWake);
/* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_WakeToRun )(
ITaskSettings * This,
/* [in] */ VARIANT_BOOL wake);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_NetworkSettings )(
ITaskSettings * This,
/* [retval][out] */ INetworkSettings **ppNetworkSettings);
/* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_NetworkSettings )(
ITaskSettings * This,
/* [in] */ INetworkSettings *pNetworkSettings);
END_INTERFACE
} ITaskSettingsVtbl;
@@ -0,0 +1,99 @@
typedef struct ITriggerVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ITrigger * This,
/* [in] */ REFIID riid,
/* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
ITrigger * This);
ULONG ( STDMETHODCALLTYPE *Release )(
ITrigger * This);
HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )(
ITrigger * This,
/* [out] */ UINT *pctinfo);
HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )(
ITrigger * This,
/* [in] */ UINT iTInfo,
/* [in] */ LCID lcid,
/* [out] */ ITypeInfo **ppTInfo);
HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )(
ITrigger * This,
/* [in] */ REFIID riid,
/* [size_is][in] */ LPOLESTR *rgszNames,
/* [range][in] */ UINT cNames,
/* [in] */ LCID lcid,
/* [size_is][out] */ DISPID *rgDispId);
/* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )(
ITrigger * This,
/* [in] */ DISPID dispIdMember,
/* [in] */ REFIID riid,
/* [in] */ LCID lcid,
/* [in] */ WORD wFlags,
/* [out][in] */ DISPPARAMS *pDispParams,
/* [out] */ VARIANT *pVarResult,
/* [out] */ EXCEPINFO *pExcepInfo,
/* [out] */ UINT *puArgErr);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Type )(
ITrigger * This,
/* [retval][out] */ TASK_TRIGGER_TYPE2 *pType);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Id )(
ITrigger * This,
/* [retval][out] */ BSTR *pId);
/* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Id )(
ITrigger * This,
/* [in] */ BSTR id);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Repetition )(
ITrigger * This,
/* [retval][out] */ IRepetitionPattern **ppRepeat);
/* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Repetition )(
ITrigger * This,
/* [in] */ IRepetitionPattern *pRepeat);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ExecutionTimeLimit )(
ITrigger * This,
/* [retval][out] */ BSTR *pTimeLimit);
/* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ExecutionTimeLimit )(
ITrigger * This,
/* [in] */ BSTR timelimit);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_StartBoundary )(
ITrigger * This,
/* [retval][out] */ BSTR *pStart);
/* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_StartBoundary )(
ITrigger * This,
/* [in] */ BSTR start);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_EndBoundary )(
ITrigger * This,
/* [retval][out] */ BSTR *pEnd);
/* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_EndBoundary )(
ITrigger * This,
/* [in] */ BSTR end);
/* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Enabled )(
ITrigger * This,
/* [retval][out] */ VARIANT_BOOL *pEnabled);
/* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Enabled )(
ITrigger * This,
/* [in] */ VARIANT_BOOL enabled);
END_INTERFACE
} ITriggerVtbl;
@@ -0,0 +1,72 @@
typedef struct ITriggerCollectionVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ITriggerCollection * This,
/* [in] */ REFIID riid,
/* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
ITriggerCollection * This);
ULONG ( STDMETHODCALLTYPE *Release )(
ITriggerCollection * This);
HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )(
ITriggerCollection * This,
/* [out] */ UINT *pctinfo);
HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )(
ITriggerCollection * This,
/* [in] */ UINT iTInfo,
/* [in] */ LCID lcid,
/* [out] */ ITypeInfo **ppTInfo);
HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )(
ITriggerCollection * This,
/* [in] */ REFIID riid,
/* [size_is][in] */ LPOLESTR *rgszNames,
/* [range][in] */ UINT cNames,
/* [in] */ LCID lcid,
/* [size_is][out] */ DISPID *rgDispId);
/* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )(
ITriggerCollection * This,
/* [in] */ DISPID dispIdMember,
/* [in] */ REFIID riid,
/* [in] */ LCID lcid,
/* [in] */ WORD wFlags,
/* [out][in] */ DISPPARAMS *pDispParams,
/* [out] */ VARIANT *pVarResult,
/* [out] */ EXCEPINFO *pExcepInfo,
/* [out] */ UINT *puArgErr);
/* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Count )(
ITriggerCollection * This,
/* [retval][out] */ long *pCount);
/* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Item )(
ITriggerCollection * This,
/* [in] */ long index,
/* [retval][out] */ ITrigger **ppTrigger);
/* [helpstring][id][propget] */ HRESULT ( STDMETHODCALLTYPE *get__NewEnum )(
ITriggerCollection * This,
/* [retval][out] */ IUnknown **ppEnum);
/* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Create )(
ITriggerCollection * This,
/* [in] */ TASK_TRIGGER_TYPE2 type,
/* [retval][out] */ ITrigger **ppTrigger);
/* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Remove )(
ITriggerCollection * This,
/* [in] */ VARIANT index);
/* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Clear )(
ITriggerCollection * This);
END_INTERFACE
} ITriggerCollectionVtbl;
@@ -0,0 +1,321 @@
typedef struct IWebBrowser2Vtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in IWebBrowser2 * This,
/* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */
void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in IWebBrowser2 * This);
ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in IWebBrowser2 * This);
HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )(
__RPC__in IWebBrowser2 * This,
/* [out] */ __RPC__out UINT *pctinfo);
HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )(
__RPC__in IWebBrowser2 * This,
/* [in] */ UINT iTInfo,
/* [in] */ LCID lcid,
/* [out] */ __RPC__deref_out_opt ITypeInfo **ppTInfo);
HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )(
__RPC__in IWebBrowser2 * This,
/* [in] */ __RPC__in REFIID riid,
/* [size_is][in] */ __RPC__in_ecount_full(cNames) LPOLESTR *rgszNames,
/* [range][in] */ __RPC__in_range(0,16384) UINT cNames,
/* [in] */ LCID lcid,
/* [size_is][out] */ __RPC__out_ecount_full(cNames) DISPID *rgDispId);
/* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )(
IWebBrowser2 * This,
/* [annotation][in] */
DISPID dispIdMember,
/* [annotation][in] */
REFIID riid,
/* [annotation][in] */
LCID lcid,
/* [annotation][in] */
WORD wFlags,
/* [annotation][out][in] */
DISPPARAMS *pDispParams,
/* [annotation][out] */
VARIANT *pVarResult,
/* [annotation][out] */
EXCEPINFO *pExcepInfo,
/* [annotation][out] */
UINT *puArgErr);
/* [helpcontext][helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GoBack )(
__RPC__in IWebBrowser2 * This);
/* [helpcontext][helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GoForward )(
__RPC__in IWebBrowser2 * This);
/* [helpcontext][helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GoHome )(
__RPC__in IWebBrowser2 * This);
/* [helpcontext][helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GoSearch )(
__RPC__in IWebBrowser2 * This);
/* [helpcontext][helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Navigate )(
__RPC__in IWebBrowser2 * This,
/* [in] */ __RPC__in BSTR URL,
/* [unique][optional][in] */ __RPC__in_opt VARIANT *Flags,
/* [unique][optional][in] */ __RPC__in_opt VARIANT *TargetFrameName,
/* [unique][optional][in] */ __RPC__in_opt VARIANT *PostData,
/* [unique][optional][in] */ __RPC__in_opt VARIANT *Headers);
/* [helpcontext][helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Refresh )(
__RPC__in IWebBrowser2 * This);
/* [helpcontext][helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Refresh2 )(
__RPC__in IWebBrowser2 * This,
/* [unique][optional][in] */ __RPC__in_opt VARIANT *Level);
/* [helpcontext][helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Stop )(
__RPC__in IWebBrowser2 * This);
/* [helpcontext][helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Application )(
__RPC__in IWebBrowser2 * This,
/* [retval][out] */ __RPC__deref_out_opt IDispatch **ppDisp);
/* [helpcontext][helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Parent )(
__RPC__in IWebBrowser2 * This,
/* [retval][out] */ __RPC__deref_out_opt IDispatch **ppDisp);
/* [helpcontext][helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Container )(
__RPC__in IWebBrowser2 * This,
/* [retval][out] */ __RPC__deref_out_opt IDispatch **ppDisp);
/* [helpcontext][helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Document )(
__RPC__in IWebBrowser2 * This,
/* [retval][out] */ __RPC__deref_out_opt IDispatch **ppDisp);
/* [helpcontext][helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_TopLevelContainer )(
__RPC__in IWebBrowser2 * This,
/* [retval][out] */ __RPC__out VARIANT_BOOL *pBool);
/* [helpcontext][helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Type )(
__RPC__in IWebBrowser2 * This,
/* [retval][out] */ __RPC__deref_out_opt BSTR *Type);
/* [helpcontext][helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Left )(
__RPC__in IWebBrowser2 * This,
/* [retval][out] */ __RPC__out long *pl);
/* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Left )(
__RPC__in IWebBrowser2 * This,
/* [in] */ long Left);
/* [helpcontext][helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Top )(
__RPC__in IWebBrowser2 * This,
/* [retval][out] */ __RPC__out long *pl);
/* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Top )(
__RPC__in IWebBrowser2 * This,
/* [in] */ long Top);
/* [helpcontext][helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Width )(
__RPC__in IWebBrowser2 * This,
/* [retval][out] */ __RPC__out long *pl);
/* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Width )(
__RPC__in IWebBrowser2 * This,
/* [in] */ long Width);
/* [helpcontext][helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Height )(
__RPC__in IWebBrowser2 * This,
/* [retval][out] */ __RPC__out long *pl);
/* [propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Height )(
__RPC__in IWebBrowser2 * This,
/* [in] */ long Height);
/* [helpcontext][helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_LocationName )(
__RPC__in IWebBrowser2 * This,
/* [retval][out] */ __RPC__deref_out_opt BSTR *LocationName);
/* [helpcontext][helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_LocationURL )(
__RPC__in IWebBrowser2 * This,
/* [retval][out] */ __RPC__deref_out_opt BSTR *LocationURL);
/* [helpcontext][helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Busy )(
__RPC__in IWebBrowser2 * This,
/* [retval][out] */ __RPC__out VARIANT_BOOL *pBool);
/* [helpcontext][helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Quit )(
__RPC__in IWebBrowser2 * This);
/* [helpcontext][helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *ClientToWindow )(
__RPC__in IWebBrowser2 * This,
/* [out][in] */ __RPC__inout int *pcx,
/* [out][in] */ __RPC__inout int *pcy);
/* [helpcontext][helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *PutProperty )(
__RPC__in IWebBrowser2 * This,
/* [in] */ __RPC__in BSTR Property,
/* [in] */ VARIANT vtValue);
/* [helpcontext][helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetProperty )(
__RPC__in IWebBrowser2 * This,
/* [in] */ __RPC__in BSTR Property,
/* [retval][out] */ __RPC__out VARIANT *pvtValue);
/* [helpcontext][helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Name )(
__RPC__in IWebBrowser2 * This,
/* [retval][out] */ __RPC__deref_out_opt BSTR *Name);
/* [helpcontext][helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HWND )(
__RPC__in IWebBrowser2 * This,
/* [retval][out] */ __RPC__out PVOID *pHWND);
/* [helpcontext][helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_FullName )(
__RPC__in IWebBrowser2 * This,
/* [retval][out] */ __RPC__deref_out_opt BSTR *FullName);
/* [helpcontext][helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Path )(
__RPC__in IWebBrowser2 * This,
/* [retval][out] */ __RPC__deref_out_opt BSTR *Path);
/* [helpcontext][helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Visible )(
__RPC__in IWebBrowser2 * This,
/* [retval][out] */ __RPC__out VARIANT_BOOL *pBool);
/* [helpcontext][helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Visible )(
__RPC__in IWebBrowser2 * This,
/* [in] */ VARIANT_BOOL Value);
/* [helpcontext][helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_StatusBar )(
__RPC__in IWebBrowser2 * This,
/* [retval][out] */ __RPC__out VARIANT_BOOL *pBool);
/* [helpcontext][helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_StatusBar )(
__RPC__in IWebBrowser2 * This,
/* [in] */ VARIANT_BOOL Value);
/* [helpcontext][helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_StatusText )(
__RPC__in IWebBrowser2 * This,
/* [retval][out] */ __RPC__deref_out_opt BSTR *StatusText);
/* [helpcontext][helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_StatusText )(
__RPC__in IWebBrowser2 * This,
/* [in] */ __RPC__in BSTR StatusText);
/* [helpcontext][helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ToolBar )(
__RPC__in IWebBrowser2 * This,
/* [retval][out] */ __RPC__out int *Value);
/* [helpcontext][helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ToolBar )(
__RPC__in IWebBrowser2 * This,
/* [in] */ int Value);
/* [helpcontext][helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MenuBar )(
__RPC__in IWebBrowser2 * This,
/* [retval][out] */ __RPC__out VARIANT_BOOL *Value);
/* [helpcontext][helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_MenuBar )(
__RPC__in IWebBrowser2 * This,
/* [in] */ VARIANT_BOOL Value);
/* [helpcontext][helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_FullScreen )(
__RPC__in IWebBrowser2 * This,
/* [retval][out] */ __RPC__out VARIANT_BOOL *pbFullScreen);
/* [helpcontext][helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_FullScreen )(
__RPC__in IWebBrowser2 * This,
/* [in] */ VARIANT_BOOL bFullScreen);
/* [helpcontext][helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Navigate2 )(
__RPC__in IWebBrowser2 * This,
/* [in] */ __RPC__in VARIANT *URL,
/* [unique][optional][in] */ __RPC__in_opt VARIANT *Flags,
/* [unique][optional][in] */ __RPC__in_opt VARIANT *TargetFrameName,
/* [unique][optional][in] */ __RPC__in_opt VARIANT *PostData,
/* [unique][optional][in] */ __RPC__in_opt VARIANT *Headers);
/* [helpcontext][helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *QueryStatusWB )(
__RPC__in IWebBrowser2 * This,
/* [in] */ DWORD cmdID,
/* [retval][out] */ __RPC__out DWORD *pcmdf);
/* [helpcontext][helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *ExecWB )(
__RPC__in IWebBrowser2 * This,
/* [in] */ DWORD cmdID,
/* [in] */ DWORD cmdexecopt,
/* [unique][optional][in] */ __RPC__in_opt VARIANT *pvaIn,
/* [unique][optional][out][in] */ __RPC__inout_opt VARIANT *pvaOut);
/* [helpcontext][helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *ShowBrowserBar )(
__RPC__in IWebBrowser2 * This,
/* [in] */ __RPC__in VARIANT *pvaClsid,
/* [unique][optional][in] */ __RPC__in_opt VARIANT *pvarShow,
/* [unique][optional][in] */ __RPC__in_opt VARIANT *pvarSize);
/* [bindable][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ReadyState )(
__RPC__in IWebBrowser2 * This,
/* [out][retval] */ __RPC__out DWORD *plReadyState);
/* [helpcontext][helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Offline )(
__RPC__in IWebBrowser2 * This,
/* [retval][out] */ __RPC__out VARIANT_BOOL *pbOffline);
/* [helpcontext][helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Offline )(
__RPC__in IWebBrowser2 * This,
/* [in] */ VARIANT_BOOL bOffline);
/* [helpcontext][helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Silent )(
__RPC__in IWebBrowser2 * This,
/* [retval][out] */ __RPC__out VARIANT_BOOL *pbSilent);
/* [helpcontext][helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Silent )(
__RPC__in IWebBrowser2 * This,
/* [in] */ VARIANT_BOOL bSilent);
/* [helpcontext][helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RegisterAsBrowser )(
__RPC__in IWebBrowser2 * This,
/* [retval][out] */ __RPC__out VARIANT_BOOL *pbRegister);
/* [helpcontext][helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RegisterAsBrowser )(
__RPC__in IWebBrowser2 * This,
/* [in] */ VARIANT_BOOL bRegister);
/* [helpcontext][helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RegisterAsDropTarget )(
__RPC__in IWebBrowser2 * This,
/* [retval][out] */ __RPC__out VARIANT_BOOL *pbRegister);
/* [helpcontext][helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_RegisterAsDropTarget )(
__RPC__in IWebBrowser2 * This,
/* [in] */ VARIANT_BOOL bRegister);
/* [helpcontext][helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_TheaterMode )(
__RPC__in IWebBrowser2 * This,
/* [retval][out] */ __RPC__out VARIANT_BOOL *pbRegister);
/* [helpcontext][helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_TheaterMode )(
__RPC__in IWebBrowser2 * This,
/* [in] */ VARIANT_BOOL bRegister);
/* [helpcontext][helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AddressBar )(
__RPC__in IWebBrowser2 * This,
/* [retval][out] */ __RPC__out VARIANT_BOOL *Value);
/* [helpcontext][helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_AddressBar )(
__RPC__in IWebBrowser2 * This,
/* [in] */ VARIANT_BOOL Value);
/* [helpcontext][helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Resizable )(
__RPC__in IWebBrowser2 * This,
/* [retval][out] */ __RPC__out VARIANT_BOOL *Value);
/* [helpcontext][helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Resizable )(
__RPC__in IWebBrowser2 * This,
/* [in] */ VARIANT_BOOL Value);
END_INTERFACE
} IWebBrowser2Vtbl;
@@ -0,0 +1,38 @@
typedef struct IApplicationActivationManagerVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in IApplicationActivationManager * This,
/* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in IApplicationActivationManager * This);
ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in IApplicationActivationManager * This);
HRESULT ( STDMETHODCALLTYPE *ActivateApplication )(
__RPC__in IApplicationActivationManager * This,
/* [in] */ __RPC__in LPCWSTR appUserModelId,
/* [unique][in] */ __RPC__in_opt LPCWSTR arguments,
/* [in] */ ACTIVATEOPTIONS options,
/* [out] */ __RPC__out DWORD *processId);
HRESULT ( STDMETHODCALLTYPE *ActivateForFile )(
__RPC__in IApplicationActivationManager * This,
/* [in] */ __RPC__in LPCWSTR appUserModelId,
/* [in] */ __RPC__in_opt IShellItemArray *itemArray,
/* [unique][in] */ __RPC__in_opt LPCWSTR verb,
/* [out] */ __RPC__out DWORD *processId);
HRESULT ( STDMETHODCALLTYPE *ActivateForProtocol )(
__RPC__in IApplicationActivationManager * This,
/* [in] */ __RPC__in LPCWSTR appUserModelId,
/* [in] */ __RPC__in_opt IShellItemArray *itemArray,
/* [out] */ __RPC__out DWORD *processId);
END_INTERFACE
} IApplicationActivationManagerVtbl;
@@ -0,0 +1,111 @@
typedef struct IPackageDebugSettingsVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
IPackageDebugSettings * This,
/* [in] */ REFIID riid,
/* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
IPackageDebugSettings * This);
ULONG ( STDMETHODCALLTYPE *Release )(
IPackageDebugSettings * This);
HRESULT ( STDMETHODCALLTYPE *EnableDebugging )(
IPackageDebugSettings * This,
/* [annotation][in] */
_In_ LPCWSTR packageFullName,
/* [annotation][in] */
_In_opt_ LPCWSTR debuggerCommandLine,
/* [annotation][in] */
_In_opt_ PZZWSTR environment);
HRESULT ( STDMETHODCALLTYPE *DisableDebugging )(
IPackageDebugSettings * This,
/* [annotation][in] */
_In_ LPCWSTR packageFullName);
HRESULT ( STDMETHODCALLTYPE *Suspend )(
IPackageDebugSettings * This,
/* [annotation][in] */
_In_ LPCWSTR packageFullName);
HRESULT ( STDMETHODCALLTYPE *Resume )(
IPackageDebugSettings * This,
/* [annotation][in] */
_In_ LPCWSTR packageFullName);
HRESULT ( STDMETHODCALLTYPE *TerminateAllProcesses )(
IPackageDebugSettings * This,
/* [annotation][in] */
_In_ LPCWSTR packageFullName);
HRESULT ( STDMETHODCALLTYPE *SetTargetSessionId )(
IPackageDebugSettings * This,
/* [annotation][in] */
_In_ ULONG sessionId);
HRESULT ( STDMETHODCALLTYPE *EnumerateBackgroundTasks )(
IPackageDebugSettings * This,
/* [annotation][in] */
_In_ LPCWSTR packageFullName,
/* [annotation][out] */
_Out_ ULONG *taskCount,
/* [annotation][size_is][size_is][out] */
_Outptr_result_buffer_(*taskCount) LPCGUID *taskIds,
/* [annotation][size_is][size_is][out] */
_Outptr_result_buffer_(*taskCount) LPCWSTR **taskNames);
HRESULT ( STDMETHODCALLTYPE *ActivateBackgroundTask )(
IPackageDebugSettings * This,
/* [annotation][in] */
_In_ LPCGUID taskId);
HRESULT ( STDMETHODCALLTYPE *StartServicing )(
IPackageDebugSettings * This,
/* [annotation][in] */
_In_ LPCWSTR packageFullName);
HRESULT ( STDMETHODCALLTYPE *StopServicing )(
IPackageDebugSettings * This,
/* [annotation][in] */
_In_ LPCWSTR packageFullName);
HRESULT ( STDMETHODCALLTYPE *StartSessionRedirection )(
IPackageDebugSettings * This,
/* [annotation][in] */
_In_ LPCWSTR packageFullName,
/* [annotation][in] */
_In_ ULONG sessionId);
HRESULT ( STDMETHODCALLTYPE *StopSessionRedirection )(
IPackageDebugSettings * This,
/* [annotation][in] */
_In_ LPCWSTR packageFullName);
HRESULT ( STDMETHODCALLTYPE *GetPackageExecutionState )(
IPackageDebugSettings * This,
/* [annotation][in] */
_In_ LPCWSTR packageFullName,
/* [annotation][out] */
_Out_ PACKAGE_EXECUTION_STATE *packageExecutionState);
HRESULT ( STDMETHODCALLTYPE *RegisterForPackageStateChanges )(
IPackageDebugSettings * This,
/* [annotation][in] */
_In_ LPCWSTR packageFullName,
/* [annotation][in] */
_In_ IPackageExecutionStateChangeNotification *pPackageExecutionStateChangeNotification,
/* [annotation][out] */
_Out_ DWORD *pdwCookie);
HRESULT ( STDMETHODCALLTYPE *UnregisterForPackageStateChanges )(
IPackageDebugSettings * This,
/* [annotation][in] */
_In_ DWORD dwCookie);
END_INTERFACE
} IPackageDebugSettingsVtbl;
@@ -0,0 +1,23 @@
typedef struct IPackageExecutionStateChangeNotificationVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in IPackageExecutionStateChangeNotification * This,
/* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in IPackageExecutionStateChangeNotification * This);
ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in IPackageExecutionStateChangeNotification * This);
HRESULT ( STDMETHODCALLTYPE *OnStateChanged )(
__RPC__in IPackageExecutionStateChangeNotification * This,
/* [string][in] */ __RPC__in_string LPCWSTR pszPackageFullName,
/* [in] */ PACKAGE_EXECUTION_STATE pesNewState);
END_INTERFACE
} IPackageExecutionStateChangeNotificationVtbl;
@@ -0,0 +1,58 @@
import functools
import ctypes
generate_IID = IID.from_raw
class COMHRESULT(HRESULT):
_type_ = HRESULT._type_
def _check_retval_(self):
# We CAN NOT try to adapt the self.value and transform it with flags
# here, we need to do it with the errcheck
# So we have the peer-interface callback system on errcheck :)
return self.value # The value will be send to errcheck :)
class COMInterface(ctypes.c_void_p):
_functions_ = {
}
# 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
# standard HRESULT restype.
# This is why default errcheck callback call ctypes._check_HRESULT
def _default_errcheck(self, result, func, args):
ctypes._check_HRESULT(result)
return args
def __getattr__(self, name):
if name in self._functions_:
winfunc = self._functions_[name]
# Hacking the HRESULT _check_retval_ and
# letting COMInterface.errcheck do the work of validating / raising
winfunc.restype = COMHRESULT
effective_errcheck = getattr(self, "errcheck", self._default_errcheck)
winfunc.errcheck = effective_errcheck
return functools.partial(winfunc, self)
return super(COMInterface, self).__getattribute__(name)
def __repr__(self):
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
@@ -0,0 +1,7 @@
#define BG_JOB_ENUM_ALL_USERS 0x0001
#define BG_NOTIFY_JOB_TRANSFERRED 0x0001
#define BG_NOTIFY_JOB_ERROR 0x0002
#define BG_NOTIFY_DISABLE 0x0004
#define BG_NOTIFY_JOB_MODIFICATION 0x0008
#define BG_NOTIFY_FILE_TRANSFERRED 0x0010
@@ -0,0 +1,145 @@
#define MAX_DEVICE_ID_LEN 200
#define MAX_DEVNODE_ID_LEN MAX_DEVICE_ID_LEN
#define MAX_GUID_STRING_LEN 39 // 38 chars + terminator null
#define MAX_CLASS_NAME_LEN 32
#define MAX_PROFILE_LEN 80
#define MAX_CONFIG_VALUE 9999
#define MAX_INSTANCE_VALUE 9999
#define MAX_MEM_REGISTERS 9 // Win95 compatibility--not applicable to 32-bit ConfigMgr
#define MAX_IO_PORTS 20 // Win95 compatibility--not applicable to 32-bit ConfigMgr
#define MAX_IRQS 7 // Win95 compatibility--not applicable to 32-bit ConfigMgr
#define MAX_DMA_CHANNELS 7 // Win95 compatibility--not applicable to 32-bit ConfigMgr
#define DWORD_MAX 0xffffffff
#define DWORDLONG_MAX 0xffffffffffffffff
#define CM_DEVCAP_LOCKSUPPORTED (0x00000001)
#define CM_DEVCAP_EJECTSUPPORTED (0x00000002)
#define CM_DEVCAP_REMOVABLE (0x00000004)
#define CM_DEVCAP_DOCKDEVICE (0x00000008)
#define CM_DEVCAP_UNIQUEID (0x00000010)
#define CM_DEVCAP_SILENTINSTALL (0x00000020)
#define CM_DEVCAP_RAWDEVICEOK (0x00000040)
#define CM_DEVCAP_SURPRISEREMOVALOK (0x00000080)
#define CM_DEVCAP_HARDWAREDISABLED (0x00000100)
#define CM_DEVCAP_NONDYNAMIC (0x00000200)
//
// Resource types
//
#define ResType_All (0x00000000) // Return all resource types
#define ResType_None (0x00000000) // Arbitration always succeeded
#define ResType_Mem (0x00000001) // Physical address resource
#define ResType_IO (0x00000002) // Physical I/O address resource
#define ResType_DMA (0x00000003) // DMA channels resource
#define ResType_IRQ (0x00000004) // IRQ resource
#define ResType_DoNotUse (0x00000005) // Used as spacer to sync subsequent ResTypes w/NT
#define ResType_BusNumber (0x00000006) // bus number resource
#define ResType_MemLarge (0x00000007) // Memory resources >= 4GB
#define ResType_MAX (0x00000007) // Maximum known (arbitrated) ResType
#define ResType_Ignored_Bit (0x00008000) // Ignore this resource
#define ResType_ClassSpecific (0x0000FFFF) // class-specific resource
#define ResType_Reserved (0x00008000) // reserved for internal use
#define ResType_DevicePrivate (0x00008001) // device private data
#define ResType_PcCardConfig (0x00008002) // PC Card configuration data
#define ResType_MfCardConfig (0x00008003) // MF Card configuration data
#define ResType_Connection (0x00008004) // Connection (Resource Hub) resource
//
// Logical Config Flags (specified in call to CM_Get_First_Log_Conf
//
#define BASIC_LOG_CONF 0x00000000 // Specifies the req list.
#define FILTERED_LOG_CONF 0x00000001 // Specifies the filtered req list.
#define ALLOC_LOG_CONF 0x00000002 // Specifies the Alloc Element.
#define BOOT_LOG_CONF 0x00000003 // Specifies the RM Alloc Element.
#define FORCED_LOG_CONF 0x00000004 // Specifies the Forced Log Conf
#define OVERRIDE_LOG_CONF 0x00000005 // Specifies the Override req list.
#define NUM_LOG_CONF 0x00000006 // Number of Log Conf type
#define LOG_CONF_BITS 0x00000007 // The bits of the log conf type.
#define PRIORITY_EQUAL_FIRST (0x00000008) // Same priority, new one first
#define PRIORITY_EQUAL_LAST (0x00000000) // Same priority, new one last
#define PRIORITY_BIT (0x00000008)
//
// Configuration Manager CONFIGRET return status codes
//
#define CR_SUCCESS (0x00000000)
#define CR_DEFAULT (0x00000001)
#define CR_OUT_OF_MEMORY (0x00000002)
#define CR_INVALID_POINTER (0x00000003)
#define CR_INVALID_FLAG (0x00000004)
#define CR_INVALID_DEVNODE (0x00000005)
#define CR_INVALID_DEVINST CR_INVALID_DEVNODE
#define CR_INVALID_RES_DES (0x00000006)
#define CR_INVALID_LOG_CONF (0x00000007)
#define CR_INVALID_ARBITRATOR (0x00000008)
#define CR_INVALID_NODELIST (0x00000009)
#define CR_DEVNODE_HAS_REQS (0x0000000A)
#define CR_DEVINST_HAS_REQS CR_DEVNODE_HAS_REQS
#define CR_INVALID_RESOURCEID (0x0000000B)
#define CR_DLVXD_NOT_FOUND (0x0000000C) // WIN 95 ONLY
#define CR_NO_SUCH_DEVNODE (0x0000000D)
#define CR_NO_SUCH_DEVINST CR_NO_SUCH_DEVNODE
#define CR_NO_MORE_LOG_CONF (0x0000000E)
#define CR_NO_MORE_RES_DES (0x0000000F)
#define CR_ALREADY_SUCH_DEVNODE (0x00000010)
#define CR_ALREADY_SUCH_DEVINST CR_ALREADY_SUCH_DEVNODE
#define CR_INVALID_RANGE_LIST (0x00000011)
#define CR_INVALID_RANGE (0x00000012)
#define CR_FAILURE (0x00000013)
#define CR_NO_SUCH_LOGICAL_DEV (0x00000014)
#define CR_CREATE_BLOCKED (0x00000015)
#define CR_NOT_SYSTEM_VM (0x00000016) // WIN 95 ONLY
#define CR_REMOVE_VETOED (0x00000017)
#define CR_APM_VETOED (0x00000018)
#define CR_INVALID_LOAD_TYPE (0x00000019)
#define CR_BUFFER_SMALL (0x0000001A)
#define CR_NO_ARBITRATOR (0x0000001B)
#define CR_NO_REGISTRY_HANDLE (0x0000001C)
#define CR_REGISTRY_ERROR (0x0000001D)
#define CR_INVALID_DEVICE_ID (0x0000001E)
#define CR_INVALID_DATA (0x0000001F)
#define CR_INVALID_API (0x00000020)
#define CR_DEVLOADER_NOT_READY (0x00000021)
#define CR_NEED_RESTART (0x00000022)
#define CR_NO_MORE_HW_PROFILES (0x00000023)
#define CR_DEVICE_NOT_THERE (0x00000024)
#define CR_NO_SUCH_VALUE (0x00000025)
#define CR_WRONG_TYPE (0x00000026)
#define CR_INVALID_PRIORITY (0x00000027)
#define CR_NOT_DISABLEABLE (0x00000028)
#define CR_FREE_RESOURCES (0x00000029)
#define CR_QUERY_VETOED (0x0000002A)
#define CR_CANT_SHARE_IRQ (0x0000002B)
#define CR_NO_DEPENDENT (0x0000002C)
#define CR_SAME_RESOURCES (0x0000002D)
#define CR_NO_SUCH_REGISTRY_KEY (0x0000002E)
#define CR_INVALID_MACHINENAME (0x0000002F) // NT ONLY
#define CR_REMOTE_COMM_FAILURE (0x00000030) // NT ONLY
#define CR_MACHINE_UNAVAILABLE (0x00000031) // NT ONLY
#define CR_NO_CM_SERVICES (0x00000032) // NT ONLY
#define CR_ACCESS_DENIED (0x00000033) // NT ONLY
#define CR_CALL_NOT_IMPLEMENTED (0x00000034)
#define CR_INVALID_PROPERTY (0x00000035)
#define CR_DEVICE_INTERFACE_ACTIVE (0x00000036)
#define CR_NO_SUCH_DEVICE_INTERFACE (0x00000037)
#define CR_INVALID_REFERENCE_STRING (0x00000038)
#define CR_INVALID_CONFLICT_LIST (0x00000039)
#define CR_INVALID_INDEX (0x0000003A)
#define CR_INVALID_STRUCTURE_SIZE (0x0000003B)
#define NUM_CR_RESULTS (0x0000003C)
#define PCD_MAX_MEMORY 2
#define PCD_MAX_IO 2
@@ -0,0 +1,46 @@
#define CWCSTORAGENAME 32
/* Storage instantiation modes */
#define STGM_DIRECT 0x00000000L
#define STGM_TRANSACTED 0x00010000L
#define STGM_SIMPLE 0x08000000L
#define STGM_READ 0x00000000L
#define STGM_WRITE 0x00000001L
#define STGM_READWRITE 0x00000002L
#define STGM_SHARE_DENY_NONE 0x00000040L
#define STGM_SHARE_DENY_READ 0x00000030L
#define STGM_SHARE_DENY_WRITE 0x00000020L
#define STGM_SHARE_EXCLUSIVE 0x00000010L
#define STGM_PRIORITY 0x00040000L
#define STGM_DELETEONRELEASE 0x04000000L
#define STGM_NOSCRATCH 0x00100000L
#define STGM_CREATE 0x00001000L
#define STGM_CONVERT 0x00020000L
#define STGM_FAILIFTHERE 0x00000000L
#define STGM_NOSNAPSHOT 0x00200000L
#define STGM_DIRECT_SWMR 0x00400000L
/* flags for internet asyncronous and layout docfile */
#define ASYNC_MODE_COMPATIBILITY 0x00000001L
#define ASYNC_MODE_DEFAULT 0x00000000L
#define STGTY_REPEAT 0x00000100L
#define STG_TOEND 0xFFFFFFFFL
#define STG_LAYOUT_SEQUENTIAL 0x00000000L
#define STG_LAYOUT_INTERLEAVED 0x00000001L
#define STGFMT_STORAGE 0
#define STGFMT_NATIVE 1
#define STGFMT_FILE 3
#define STGFMT_ANY 4
#define STGFMT_DOCFILE 5
// This is a legacy define to allow old component to builds
#define STGFMT_DOCUMENT 0
@@ -0,0 +1,10 @@
#define RPC_REQUEST_TYPE_CALL 0
#define RPC_REQUEST_TYPE_BIND 1
#define RPC_RESPONSE_TYPE_BIND_OK 1
#define RPC_RESPONSE_TYPE_FAIL 2
#define RPC_RESPONSE_TYPE_SUCCESS 3
#define BIND_IF_SYNTAX_NDR32 1
#define BIND_IF_SYNTAX_NDR64 2
#define BIND_IF_SYNTAX_UNKNOWN 4
@@ -0,0 +1,58 @@
#define FILE_DEVICE_8042_PORT 0x00000027
#define FILE_DEVICE_ACPI 0x00000032
#define FILE_DEVICE_BATTERY 0x00000029
#define FILE_DEVICE_BEEP 0x00000001
#define FILE_DEVICE_BUS_EXTENDER 0x0000002a
#define FILE_DEVICE_CD_ROM 0x00000002
#define FILE_DEVICE_CD_ROM_FILE_SYSTEM 0x00000003
#define FILE_DEVICE_CHANGER 0x00000030
#define FILE_DEVICE_CONTROLLER 0x00000004
#define FILE_DEVICE_DATALINK 0x00000005
#define FILE_DEVICE_DFS 0x00000006
#define FILE_DEVICE_DFS_FILE_SYSTEM 0x00000035
#define FILE_DEVICE_DFS_VOLUME 0x00000036
#define FILE_DEVICE_DISK 0x00000007
#define FILE_DEVICE_DISK_FILE_SYSTEM 0x00000008
#define FILE_DEVICE_DVD 0x00000033
#define FILE_DEVICE_FILE_SYSTEM 0x00000009
#define FILE_DEVICE_FIPS 0x0000003a
#define FILE_DEVICE_FULLSCREEN_VIDEO 0x00000034
#define FILE_DEVICE_INPORT_PORT 0x0000000a
#define FILE_DEVICE_KEYBOARD 0x0000000b
#define FILE_DEVICE_KS 0x0000002f
#define FILE_DEVICE_KSEC 0x00000039
#define FILE_DEVICE_MAILSLOT 0x0000000c
#define FILE_DEVICE_MASS_STORAGE 0x0000002d
#define FILE_DEVICE_MIDI_IN 0x0000000d
#define FILE_DEVICE_MIDI_OUT 0x0000000e
#define FILE_DEVICE_MODEM 0x0000002b
#define FILE_DEVICE_MOUSE 0x0000000f
#define FILE_DEVICE_MULTI_UNC_PROVIDER 0x00000010
#define FILE_DEVICE_NAMED_PIPE 0x00000011
#define FILE_DEVICE_NETWORK 0x00000012
#define FILE_DEVICE_NETWORK_BROWSER 0x00000013
#define FILE_DEVICE_NETWORK_FILE_SYSTEM 0x00000014
#define FILE_DEVICE_NETWORK_REDIRECTOR 0x00000028
#define FILE_DEVICE_NULL 0x00000015
#define FILE_DEVICE_PARALLEL_PORT 0x00000016
#define FILE_DEVICE_PHYSICAL_NETCARD 0x00000017
#define FILE_DEVICE_PRINTER 0x00000018
#define FILE_DEVICE_SCANNER 0x00000019
#define FILE_DEVICE_SCREEN 0x0000001c
#define FILE_DEVICE_SERENUM 0x00000037
#define FILE_DEVICE_SERIAL_MOUSE_PORT 0x0000001a
#define FILE_DEVICE_SERIAL_PORT 0x0000001b
#define FILE_DEVICE_SMARTCARD 0x00000031
#define FILE_DEVICE_SMB 0x0000002e
#define FILE_DEVICE_SOUND 0x0000001d
#define FILE_DEVICE_STREAMS 0x0000001e
#define FILE_DEVICE_TAPE 0x0000001f
#define FILE_DEVICE_TAPE_FILE_SYSTEM 0x00000020
#define FILE_DEVICE_TERMSRV 0x00000038
#define FILE_DEVICE_TRANSPORT 0x00000021
#define FILE_DEVICE_UNKNOWN 0x00000022
#define FILE_DEVICE_VDM 0x0000002c
#define FILE_DEVICE_VIDEO 0x00000023
#define FILE_DEVICE_VIRTUAL_DISK 0x00000024
#define FILE_DEVICE_WAVE_IN 0x00000025
#define FILE_DEVICE_WAVE_OUT 0x00000026
@@ -0,0 +1,4 @@
#define VIRTUAL_STORAGE_TYPE_DEVICE_UNKNOWN 0
#define VIRTUAL_STORAGE_TYPE_DEVICE_ISO 1
#define VIRTUAL_STORAGE_TYPE_DEVICE_VHD 2
#define VIRTUAL_STORAGE_TYPE_DEVICE_VHDX 3
@@ -0,0 +1,88 @@
#define PRODUCT_UNDEFINED 0x00000000
#define PRODUCT_ULTIMATE 0x00000001
#define PRODUCT_HOME_BASIC 0x00000002
#define PRODUCT_HOME_PREMIUM 0x00000003
#define PRODUCT_ENTERPRISE 0x00000004
#define PRODUCT_HOME_BASIC_N 0x00000005
#define PRODUCT_BUSINESS 0x00000006
#define PRODUCT_STANDARD_SERVER 0x00000007
#define PRODUCT_DATACENTER_SERVER 0x00000008
#define PRODUCT_SMALLBUSINESS_SERVER 0x00000009
#define PRODUCT_ENTERPRISE_SERVER 0x0000000A
#define PRODUCT_STARTER 0x0000000B
#define PRODUCT_DATACENTER_SERVER_CORE 0x0000000C
#define PRODUCT_STANDARD_SERVER_CORE 0x0000000D
#define PRODUCT_ENTERPRISE_SERVER_CORE 0x0000000E
#define PRODUCT_ENTERPRISE_SERVER_IA64 0x0000000F
#define PRODUCT_BUSINESS_N 0x00000010
#define PRODUCT_WEB_SERVER 0x00000011
#define PRODUCT_CLUSTER_SERVER 0x00000012
#define PRODUCT_HOME_SERVER 0x00000013
#define PRODUCT_STORAGE_EXPRESS_SERVER 0x00000014
#define PRODUCT_STORAGE_STANDARD_SERVER 0x00000015
#define PRODUCT_STORAGE_WORKGROUP_SERVER 0x00000016
#define PRODUCT_STORAGE_ENTERPRISE_SERVER 0x00000017
#define PRODUCT_SERVER_FOR_SMALLBUSINESS 0x00000018
#define PRODUCT_SMALLBUSINESS_SERVER_PREMIUM 0x00000019
#define PRODUCT_HOME_PREMIUM_N 0x0000001A
#define PRODUCT_ENTERPRISE_N 0x0000001B
#define PRODUCT_ULTIMATE_N 0x0000001C
#define PRODUCT_WEB_SERVER_CORE 0x0000001D
#define PRODUCT_MEDIUMBUSINESS_SERVER_MANAGEMENT 0x0000001E
#define PRODUCT_MEDIUMBUSINESS_SERVER_SECURITY 0x0000001F
#define PRODUCT_MEDIUMBUSINESS_SERVER_MESSAGING 0x00000020
#define PRODUCT_SERVER_FOUNDATION 0x00000021
#define PRODUCT_HOME_PREMIUM_SERVER 0x00000022
#define PRODUCT_SERVER_FOR_SMALLBUSINESS_V 0x00000023
#define PRODUCT_STANDARD_SERVER_V 0x00000024
#define PRODUCT_DATACENTER_SERVER_V 0x00000025
#define PRODUCT_ENTERPRISE_SERVER_V 0x00000026
#define PRODUCT_DATACENTER_SERVER_CORE_V 0x00000027
#define PRODUCT_STANDARD_SERVER_CORE_V 0x00000028
#define PRODUCT_ENTERPRISE_SERVER_CORE_V 0x00000029
#define PRODUCT_HYPERV 0x0000002A
#define PRODUCT_STORAGE_EXPRESS_SERVER_CORE 0x0000002B
#define PRODUCT_STORAGE_STANDARD_SERVER_CORE 0x0000002C
#define PRODUCT_STORAGE_WORKGROUP_SERVER_CORE 0x0000002D
#define PRODUCT_STORAGE_ENTERPRISE_SERVER_CORE 0x0000002E
#define PRODUCT_STARTER_N 0x0000002F
#define PRODUCT_PROFESSIONAL 0x00000030
#define PRODUCT_PROFESSIONAL_N 0x00000031
#define PRODUCT_SB_SOLUTION_SERVER 0x00000032
#define PRODUCT_SERVER_FOR_SB_SOLUTIONS 0x00000033
#define PRODUCT_STANDARD_SERVER_SOLUTIONS 0x00000034
#define PRODUCT_STANDARD_SERVER_SOLUTIONS_CORE 0x00000035
#define PRODUCT_SB_SOLUTION_SERVER_EM 0x00000036
#define PRODUCT_SERVER_FOR_SB_SOLUTIONS_EM 0x00000037
#define PRODUCT_SOLUTION_EMBEDDEDSERVER 0x00000038
#define PRODUCT_SOLUTION_EMBEDDEDSERVER_CORE 0x00000039
#define PRODUCT_SMALLBUSINESS_SERVER_PREMIUM_CORE 0x0000003F
#define PRODUCT_ESSENTIALBUSINESS_SERVER_MGMT 0x0000003B
#define PRODUCT_ESSENTIALBUSINESS_SERVER_ADDL 0x0000003C
#define PRODUCT_ESSENTIALBUSINESS_SERVER_MGMTSVC 0x0000003D
#define PRODUCT_ESSENTIALBUSINESS_SERVER_ADDLSVC 0x0000003E
#define PRODUCT_CLUSTER_SERVER_V 0x00000040
#define PRODUCT_EMBEDDED 0x00000041
#define PRODUCT_STARTER_E 0x00000042
#define PRODUCT_HOME_BASIC_E 0x00000043
#define PRODUCT_HOME_PREMIUM_E 0x00000044
#define PRODUCT_PROFESSIONAL_E 0x00000045
#define PRODUCT_ENTERPRISE_E 0x00000046
#define PRODUCT_ULTIMATE_E 0x00000047
#define PRODUCT_ENTERPRISE_EVALUATION 0x00000048
#define PRODUCT_MULTIPOINT_STANDARD_SERVER 0x0000004C
#define PRODUCT_MULTIPOINT_PREMIUM_SERVER 0x0000004D
#define PRODUCT_STANDARD_EVALUATION_SERVER 0x0000004F
#define PRODUCT_DATACENTER_EVALUATION_SERVER 0x00000050
#define PRODUCT_ENTERPRISE_N_EVALUATION 0x00000054
#define PRODUCT_STORAGE_WORKGROUP_EVALUATION_SERVER 0x0000005F
#define PRODUCT_STORAGE_STANDARD_EVALUATION_SERVER 0x00000060
#define PRODUCT_CORE_ARM 0x00000061
#define PRODUCT_CORE_N 0x00000062
#define PRODUCT_CORE_COUNTRYSPECIFIC 0x00000063
#define PRODUCT_CORE_LANGUAGESPECIFIC 0x00000064
#define PRODUCT_CORE 0x00000065
#define PRODUCT_PROFESSIONAL_WMC 0x00000067
#define PRODUCT_UNLICENSED 0xABCDABCD
@@ -0,0 +1,5 @@
#define APPLICATION_ERROR_MASK 0x20000000
#define ERROR_SEVERITY_SUCCESS 0x00000000
#define ERROR_SEVERITY_INFORMATIONAL 0x40000000
#define ERROR_SEVERITY_WARNING 0x80000000
#define ERROR_SEVERITY_ERROR 0xC0000000
@@ -0,0 +1,114 @@
//
// Enable flags for Kernel Events on Win7 and above
//
#define EVENT_TRACE_FLAG_DISPATCHER 0x00000800 // scheduler (ReadyThread)
#define EVENT_TRACE_FLAG_VIRTUAL_ALLOC 0x00004000 // VM operations
//
// Enable flags for Kernel Events on Win8 and above
//
#define EVENT_TRACE_FLAG_VAMAP 0x00008000 // map/unmap (excluding images)
#define EVENT_TRACE_FLAG_NO_SYSCONFIG 0x10000000 // Do not do sys config rundown
//
// Pre-defined Enable flags for everybody else
//
#define EVENT_TRACE_FLAG_EXTENSION 0x80000000 // Indicates more flags
#define EVENT_TRACE_FLAG_FORWARD_WMI 0x40000000 // Can forward to WMI
#define EVENT_TRACE_FLAG_ENABLE_RESERVE 0x20000000 // Reserved
//
// Logger Mode flags
//
#define EVENT_TRACE_FILE_MODE_NONE 0x00000000 // Logfile is off
#define EVENT_TRACE_FILE_MODE_SEQUENTIAL 0x00000001 // Log sequentially
#define EVENT_TRACE_FILE_MODE_CIRCULAR 0x00000002 // Log in circular manner
#define EVENT_TRACE_FILE_MODE_APPEND 0x00000004 // Append sequential log
#define EVENT_TRACE_REAL_TIME_MODE 0x00000100 // Real time mode on
#define EVENT_TRACE_DELAY_OPEN_FILE_MODE 0x00000200 // Delay opening file
#define EVENT_TRACE_BUFFERING_MODE 0x00000400 // Buffering mode only
#define EVENT_TRACE_PRIVATE_LOGGER_MODE 0x00000800 // Process Private Logger
#define EVENT_TRACE_ADD_HEADER_MODE 0x00001000 // Add a logfile header
#define EVENT_TRACE_USE_GLOBAL_SEQUENCE 0x00004000 // Use global sequence no.
#define EVENT_TRACE_USE_LOCAL_SEQUENCE 0x00008000 // Use local sequence no.
#define EVENT_TRACE_RELOG_MODE 0x00010000 // Relogger
#define EVENT_TRACE_USE_PAGED_MEMORY 0x01000000 // Use pageable buffers
//
// Logger Mode flags on XP and above
//
#define EVENT_TRACE_FILE_MODE_NEWFILE 0x00000008 // Auto-switch log file
#define EVENT_TRACE_FILE_MODE_PREALLOCATE 0x00000020 // Pre-allocate mode
//
// ControlTrace Codes
//
#define EVENT_TRACE_CONTROL_QUERY 0
#define EVENT_TRACE_CONTROL_STOP 1
#define EVENT_TRACE_CONTROL_UPDATE 2
//
// Flush ControlTrace Codes for XP and above
//
#define EVENT_TRACE_CONTROL_FLUSH 3 // Flushes all the buffers
//
// Consumer API
//
#define PROCESS_TRACE_MODE_REAL_TIME 0x00000100
#define PROCESS_TRACE_MODE_RAW_TIMESTAMP 0x00001000
#define PROCESS_TRACE_MODE_EVENT_RECORD 0x10000000
#define EVENT_HEADER_PROPERTY_XML 0x0001
#define EVENT_HEADER_PROPERTY_FORWARDED_XML 0x0002
#define EVENT_HEADER_PROPERTY_LEGACY_EVENTLOG 0x0004
#define EVENT_HEADER_FLAG_EXTENDED_INFO 0x0001
#define EVENT_HEADER_FLAG_PRIVATE_SESSION 0x0002
#define EVENT_HEADER_FLAG_STRING_ONLY 0x0004
#define EVENT_HEADER_FLAG_TRACE_MESSAGE 0x0008
#define EVENT_HEADER_FLAG_NO_CPUTIME 0x0010
#define EVENT_HEADER_FLAG_32_BIT_HEADER 0x0020
#define EVENT_HEADER_FLAG_64_BIT_HEADER 0x0040
#define EVENT_HEADER_FLAG_CLASSIC_HEADER 0x0100
#define EVENT_HEADER_FLAG_PROCESSOR_INDEX 0x0200
// Event types for system configuration records
//
#define EVENT_TRACE_TYPE_CONFIG_CPU 0x0A // CPU Configuration
#define EVENT_TRACE_TYPE_CONFIG_PHYSICALDISK 0x0B // Physical Disk Configuration
#define EVENT_TRACE_TYPE_CONFIG_LOGICALDISK 0x0C // Logical Disk Configuration
#define EVENT_TRACE_TYPE_CONFIG_NIC 0x0D // NIC Configuration
#define EVENT_TRACE_TYPE_CONFIG_VIDEO 0x0E // Video Adapter Configuration
#define EVENT_TRACE_TYPE_CONFIG_SERVICES 0x0F // Active Services
#define EVENT_TRACE_TYPE_CONFIG_POWER 0x10 // ACPI Configuration
#define EVENT_TRACE_TYPE_CONFIG_NETINFO 0x11 // Networking Configuration
//
// Enable flags for SystemControlGuid only
//
#define EVENT_TRACE_FLAG_PROCESS 0x00000001 // process start & end
#define EVENT_TRACE_FLAG_THREAD 0x00000002 // thread start & end
#define EVENT_TRACE_FLAG_IMAGE_LOAD 0x00000004 // image load
#define EVENT_TRACE_FLAG_DISK_IO 0x00000100 // physical disk IO
#define EVENT_TRACE_FLAG_DISK_FILE_IO 0x00000200 // requires disk IO
#define EVENT_TRACE_FLAG_MEMORY_PAGE_FAULTS 0x00001000 // all page faults
#define EVENT_TRACE_FLAG_MEMORY_HARD_FAULTS 0x00002000 // hard faults only
#define EVENT_TRACE_FLAG_NETWORK_TCPIP 0x00010000 // tcpip send & receive
#define EVENT_TRACE_FLAG_REGISTRY 0x00020000 // registry calls
#define EVENT_TRACE_FLAG_DBGPRINT 0x00040000 // DbgPrint(ex) Calls
#define EVENT_TRACE_FLAG_VOLMGR 0x00200000 // volume manager traces
@@ -0,0 +1,39 @@
/* From ntdbg.h */
#define X86_KGDT_NULL 0
#define X86_KGDT_R0_CODE 8
#define X86_KGDT_R0_DATA 16
#define X86_KGDT_R3_CODE 24
#define X86_KGDT_R3_DATA 32
#define X86_KGDT_TSS 40
#define X86_KGDT_R0_PCR 48
#define X86_KGDT_R3_TEB 56
#define X86_KGDT_VDM_TILE 64
#define X86_KGDT_LDT 72
#define X86_KGDT_DF_TSS 80
#define X86_KGDT_NMI_TSS 88
#define X86_FRAME_EDITED 0xfff8
#define X86_MODE_MASK 1
#define X86_EFLAGS_V86_MASK 0x00020000
#define AMD64_KGDT64_NULL (0 * 16) // NULL descriptor
#define AMD64_KGDT64_R0_CODE (1 * 16) // kernel mode 64-bit code
#define AMD64_KGDT64_R0_DATA (1 * 16) + 8 // kernel mode 64-bit data (stack)
#define AMD64_KGDT64_R3_CMCODE (2 * 16) // user mode 32-bit code
#define AMD64_KGDT64_R3_DATA (2 * 16) + 8 // user mode 32-bit data
#define AMD64_KGDT64_R3_CODE (3 * 16) // user mode 64-bit code
#define AMD64_KGDT64_SYS_TSS (4 * 16) // kernel mode system task state
#define AMD64_KGDT64_R3_CMTEB (5 * 16) // user mode 32-bit TEB
#define AMD64_KGDT64_LAST (6 * 16)
/* From i386.h & amd64.h */
#define MODE_BIT 0
#define MODE_MASK 1 // ntosp
#define RPL_MASK 3
/* Custom usefull define for CS userland values 0x23 * 0x33 */
#define CS_USER_32B (AMD64_KGDT64_R3_CMCODE | RPL_MASK)
#define CS_USER_64B (AMD64_KGDT64_R3_CODE | RPL_MASK)
@@ -0,0 +1,5 @@
#define FC_ALLOCATE_ALL_NODES 0x01
#define FC_DONT_FREE 0x02
#define FC_ALLOCED_ON_STACK 0x04
#define FC_SIMPLE_POINTER 0x08
#define FC_POINTER_DEREF 0x10
@@ -0,0 +1,176 @@
#define ATM_E164 0x01 /* E.164 addressing scheme */
#define ATM_NSAP 0x02 /* NSAP-style ATM Endsystem Address scheme */
#define ATM_AESA 0x02 /* NSAP-style ATM Endsystem Address scheme */
#define ATM_ADDR_SIZE 20
#define DNS_ATMA_FORMAT_E164 ATM_E164
#define DNS_ATMA_FORMAT_AESA ATM_AESA
#define DNS_ATMA_MAX_ADDR_LENGTH ATM_ADDR_SIZE
#define DNS_TYPE_ZERO 0x0000
// RFC 1034/1035
#define DNS_TYPE_A 0x0001 // 1
#define DNS_TYPE_NS 0x0002 // 2
#define DNS_TYPE_MD 0x0003 // 3
#define DNS_TYPE_MF 0x0004 // 4
#define DNS_TYPE_CNAME 0x0005 // 5
#define DNS_TYPE_SOA 0x0006 // 6
#define DNS_TYPE_MB 0x0007 // 7
#define DNS_TYPE_MG 0x0008 // 8
#define DNS_TYPE_MR 0x0009 // 9
#define DNS_TYPE_NULL 0x000a // 10
#define DNS_TYPE_WKS 0x000b // 11
#define DNS_TYPE_PTR 0x000c // 12
#define DNS_TYPE_HINFO 0x000d // 13
#define DNS_TYPE_MINFO 0x000e // 14
#define DNS_TYPE_MX 0x000f // 15
#define DNS_TYPE_TEXT 0x0010 // 16
// RFC 1183
#define DNS_TYPE_RP 0x0011 // 17
#define DNS_TYPE_AFSDB 0x0012 // 18
#define DNS_TYPE_X25 0x0013 // 19
#define DNS_TYPE_ISDN 0x0014 // 20
#define DNS_TYPE_RT 0x0015 // 21
// RFC 1348
#define DNS_TYPE_NSAP 0x0016 // 22
#define DNS_TYPE_NSAPPTR 0x0017 // 23
// RFC 2065 (DNS security)
#define DNS_TYPE_SIG 0x0018 // 24
#define DNS_TYPE_KEY 0x0019 // 25
// RFC 1664 (X.400 mail)
#define DNS_TYPE_PX 0x001a // 26
// RFC 1712 (Geographic position)
#define DNS_TYPE_GPOS 0x001b // 27
// RFC 1886 (IPv6 Address)
#define DNS_TYPE_AAAA 0x001c // 28
// RFC 1876 (Geographic location)
#define DNS_TYPE_LOC 0x001d // 29
// RFC 2065 (Secure negative response)
#define DNS_TYPE_NXT 0x001e // 30
// Patton (Endpoint Identifier)
#define DNS_TYPE_EID 0x001f // 31
// Patton (Nimrod Locator)
#define DNS_TYPE_NIMLOC 0x0020 // 32
// RFC 2052 (Service location)
#define DNS_TYPE_SRV 0x0021 // 33
// ATM Standard something-or-another (ATM Address)
#define DNS_TYPE_ATMA 0x0022 // 34
// RFC 2168 (Naming Authority Pointer)
#define DNS_TYPE_NAPTR 0x0023 // 35
// RFC 2230 (Key Exchanger)
#define DNS_TYPE_KX 0x0024 // 36
// RFC 2538 (CERT)
#define DNS_TYPE_CERT 0x0025 // 37
// A6 Draft (A6)
#define DNS_TYPE_A6 0x0026 // 38
// DNAME Draft (DNAME)
#define DNS_TYPE_DNAME 0x0027 // 39
// Eastlake (Kitchen Sink)
#define DNS_TYPE_SINK 0x0028 // 40
// RFC 2671 (EDNS OPT)
#define DNS_TYPE_OPT 0x0029 // 41
// RFC 4034 (DNSSEC DS)
#define DNS_TYPE_DS 0x002b // 43
// RFC 4034 (DNSSEC RRSIG)
#define DNS_TYPE_RRSIG 0x002e // 46
// RFC 4034 (DNSSEC NSEC)
#define DNS_TYPE_NSEC 0x002f // 47
// RFC 4034 (DNSSEC DNSKEY)
#define DNS_TYPE_DNSKEY 0x0030 // 48
// RFC 4701 (DHCID)
#define DNS_TYPE_DHCID 0x0031 // 49
// RFC 5155 (DNSSEC NSEC3)
#define DNS_TYPE_NSEC3 0x0032 // 50
// RFC 5155 (DNSSEC NSEC3PARAM)
#define DNS_TYPE_NSEC3PARAM 0x0033 // 51
//
// IANA Reserved
//
#define DNS_TYPE_UINFO 0x0064 // 100
#define DNS_TYPE_UID 0x0065 // 101
#define DNS_TYPE_GID 0x0066 // 102
#define DNS_TYPE_UNSPEC 0x0067 // 103
//
// Query only types (1035, 1995)
// - Crawford (ADDRS)
// - TKEY draft (TKEY)
// - TSIG draft (TSIG)
// - RFC 1995 (IXFR)
// - RFC 1035 (AXFR up)
//
#define DNS_TYPE_ADDRS 0x00f8 // 248
#define DNS_TYPE_TKEY 0x00f9 // 249
#define DNS_TYPE_TSIG 0x00fa // 250
#define DNS_TYPE_IXFR 0x00fb // 251
#define DNS_TYPE_AXFR 0x00fc // 252
#define DNS_TYPE_MAILB 0x00fd // 253
#define DNS_TYPE_MAILA 0x00fe // 254
#define DNS_TYPE_ALL 0x00ff // 255
#define DNS_TYPE_ANY 0x00ff // 255
//
// Private use Microsoft types -- See www.iana.org/assignments/dns-parameters
//
#define DNS_TYPE_WINS 0xff01 // 64K - 255
#define DNS_TYPE_WINSR 0xff02 // 64K - 254
#define DNS_TYPE_NBSTAT (DNS_TYPE_WINSR)
//
// DNS Query API
//
//
// Options for DnsQuery
//
#define DNS_QUERY_STANDARD 0x00000000
#define DNS_QUERY_ACCEPT_TRUNCATED_RESPONSE 0x00000001
#define DNS_QUERY_USE_TCP_ONLY 0x00000002
#define DNS_QUERY_NO_RECURSION 0x00000004
#define DNS_QUERY_BYPASS_CACHE 0x00000008
#define DNS_QUERY_NO_WIRE_QUERY 0x00000010
#define DNS_QUERY_NO_LOCAL_NAME 0x00000020
#define DNS_QUERY_NO_HOSTS_FILE 0x00000040
#define DNS_QUERY_NO_NETBT 0x00000080
#define DNS_QUERY_WIRE_ONLY 0x00000100
#define DNS_QUERY_RETURN_MESSAGE 0x00000200
#define DNS_QUERY_MULTICAST_ONLY 0x00000400
#define DNS_QUERY_NO_MULTICAST 0x00000800
#define DNS_QUERY_TREAT_AS_FQDN 0x00001000
#define DNS_QUERY_ADDRCONFIG 0x00002000
#define DNS_QUERY_DUAL_ADDR 0x00004000
#define DNS_QUERY_DONT_RESET_TTL_VALUES 0x00100000
#define DNS_QUERY_DISABLE_IDN_ENCODING 0x00200000
#define DNS_QUERY_APPEND_MULTILABEL 0x00800000
#define DNS_QUERY_DNSSEC_OK 0x01000000
#define DNS_QUERY_DNSSEC_CHECKING_DISABLED 0x02000000
#define DNS_QUERY_RESERVED 0xf0000000
@@ -0,0 +1,34 @@
#define PIPE_ACCESS_INBOUND 0x00000001
#define PIPE_ACCESS_OUTBOUND 0x00000002
#define PIPE_ACCESS_DUPLEX 0x00000003
//
// Define the Named Pipe End flags for GetNamedPipeInfo
//
#define PIPE_CLIENT_END 0x00000000
#define PIPE_SERVER_END 0x00000001
//
// Define the dwPipeMode values for CreateNamedPipe
//
#define PIPE_WAIT 0x00000000
#define PIPE_NOWAIT 0x00000001
#define PIPE_READMODE_BYTE 0x00000000
#define PIPE_READMODE_MESSAGE 0x00000002
#define PIPE_TYPE_BYTE 0x00000000
#define PIPE_TYPE_MESSAGE 0x00000004
#define PIPE_ACCEPT_REMOTE_CLIENTS 0x00000000
#define PIPE_REJECT_REMOTE_CLIENTS 0x00000008
//
// Define the well known values for CreateNamedPipe nMaxInstances
//
#define PIPE_UNLIMITED_INSTANCES 255
#define NMPWAIT_WAIT_FOREVER 0xffffffff
#define NMPWAIT_NOWAIT 0x00000001
#define NMPWAIT_USE_DEFAULT_WAIT 0x00000000
@@ -0,0 +1,11 @@
#define HKEY_CLASSES_ROOT (0x80000000)
#define HKEY_CURRENT_USER (0x80000001)
#define HKEY_LOCAL_MACHINE (0x80000002)
#define HKEY_USERS (0x80000003)
#define HKEY_PERFORMANCE_DATA (0x80000004)
#define HKEY_PERFORMANCE_TEXT (0x80000050)
#define HKEY_PERFORMANCE_NLSTEXT (0x80000060)
#define HKEY_CURRENT_CONFIG (0x80000005)
#define HKEY_DYN_DATA (0x80000006)
#define HKEY_CURRENT_USER_LOCAL_SETTINGS (0x80000007)
@@ -0,0 +1,124 @@
#define ACCESS_MIN_MS_ACE_TYPE (0x0)
#define ACCESS_ALLOWED_ACE_TYPE (0x0)
#define ACCESS_DENIED_ACE_TYPE (0x1)
#define SYSTEM_AUDIT_ACE_TYPE (0x2)
#define SYSTEM_ALARM_ACE_TYPE (0x3)
#define ACCESS_MAX_MS_V2_ACE_TYPE (0x3)
#define ACCESS_ALLOWED_COMPOUND_ACE_TYPE (0x4)
#define ACCESS_MAX_MS_V3_ACE_TYPE (0x4)
#define ACCESS_MIN_MS_OBJECT_ACE_TYPE (0x5)
#define ACCESS_ALLOWED_OBJECT_ACE_TYPE (0x5)
#define ACCESS_DENIED_OBJECT_ACE_TYPE (0x6)
#define SYSTEM_AUDIT_OBJECT_ACE_TYPE (0x7)
#define SYSTEM_ALARM_OBJECT_ACE_TYPE (0x8)
#define ACCESS_MAX_MS_OBJECT_ACE_TYPE (0x8)
#define ACCESS_MAX_MS_V4_ACE_TYPE (0x8)
#define ACCESS_MAX_MS_ACE_TYPE (0x8)
#define ACCESS_ALLOWED_CALLBACK_ACE_TYPE (0x9)
#define ACCESS_DENIED_CALLBACK_ACE_TYPE (0xA)
#define ACCESS_ALLOWED_CALLBACK_OBJECT_ACE_TYPE (0xB)
#define ACCESS_DENIED_CALLBACK_OBJECT_ACE_TYPE (0xC)
#define SYSTEM_AUDIT_CALLBACK_ACE_TYPE (0xD)
#define SYSTEM_ALARM_CALLBACK_ACE_TYPE (0xE)
#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)
#define ACCESS_MAX_MS_V5_ACE_TYPE (0x14)
#define SEC_WINNT_AUTH_IDENTITY_ANSI 0x1
#define SEC_WINNT_AUTH_IDENTITY_UNICODE 0x2
#define SE_OWNER_DEFAULTED 0x00000001
#define SE_GROUP_DEFAULTED 0x00000002
#define SE_DACL_PRESENT 0x00000004
#define SE_DACL_DEFAULTED 0x00000008
#define SE_SACL_PRESENT 0x00000010
#define SE_SACL_DEFAULTED 0x00000020
// end_winnt
#define SE_DACL_UNTRUSTED (0x0040)
#define SE_SERVER_SECURITY (0x0080)
// begin_winnt
#define SE_DACL_AUTO_INHERIT_REQ 0x00000100
#define SE_SACL_AUTO_INHERIT_REQ 0x00000200
#define SE_DACL_AUTO_INHERITED 0x00000400
#define SE_SACL_AUTO_INHERITED 0x00000800
#define SE_DACL_PROTECTED 0x00001000
#define SE_SACL_PROTECTED 0x00002000
#define SE_RM_CONTROL_VALID 0x00004000
#define SE_SELF_RELATIVE 0x00008000
#define SDDL_REVISION_1 0x1
#define ACE_OBJECT_TYPE_PRESENT 0x1
#define ACE_INHERITED_OBJECT_TYPE_PRESENT 0x2
#define OBJECT_INHERIT_ACE (0x1)
#define CONTAINER_INHERIT_ACE (0x2)
#define NO_PROPAGATE_INHERIT_ACE (0x4)
#define INHERIT_ONLY_ACE (0x8)
#define INHERITED_ACE (0x10)
#define VALID_INHERIT_FLAGS (0x1F)
#define SUCCESSFUL_ACCESS_ACE_FLAG (0x40)
#define FAILED_ACCESS_ACE_FLAG (0x80)
#define SYSTEM_MANDATORY_LABEL_NO_WRITE_UP 0x1
#define SYSTEM_MANDATORY_LABEL_NO_READ_UP 0x2
#define SYSTEM_MANDATORY_LABEL_NO_EXECUTE_UP 0x4
#define SYSTEM_PROCESS_TRUST_LABEL_VALID_MASK 0x00ffffff
#define SYSTEM_PROCESS_TRUST_NOCONSTRAINT_MASK 0xffffffff
#define CLAIM_SECURITY_ATTRIBUTE_TYPE_INVALID 0x00
#define CLAIM_SECURITY_ATTRIBUTE_TYPE_INT64 0x01
#define CLAIM_SECURITY_ATTRIBUTE_TYPE_UINT64 0x02
#define CLAIM_SECURITY_ATTRIBUTE_TYPE_STRING 0x03
#define CLAIM_SECURITY_ATTRIBUTE_TYPE_FQBN 0x04
#define CLAIM_SECURITY_ATTRIBUTE_TYPE_SID 0x05
#define CLAIM_SECURITY_ATTRIBUTE_TYPE_BOOLEAN 0x06
#define CLAIM_SECURITY_ATTRIBUTE_TYPE_OCTET_STRING 0x10
#define SE_GROUP_MANDATORY (0x00000001L)
#define SE_GROUP_ENABLED_BY_DEFAULT (0x00000002L)
#define SE_GROUP_ENABLED (0x00000004L)
#define SE_GROUP_OWNER (0x00000008L)
#define SE_GROUP_USE_FOR_DENY_ONLY (0x00000010L)
#define SE_GROUP_INTEGRITY (0x00000020L)
#define SE_GROUP_INTEGRITY_ENABLED (0x00000040L)
#define SE_GROUP_LOGON_ID (0xC0000000L)
#define SE_GROUP_RESOURCE (0x20000000L)
#define SE_GROUP_VALID_ATTRIBUTES (SE_GROUP_MANDATORY | \
SE_GROUP_ENABLED_BY_DEFAULT | \
SE_GROUP_ENABLED | \
SE_GROUP_OWNER | \
SE_GROUP_USE_FOR_DENY_ONLY | \
SE_GROUP_LOGON_ID | \
SE_GROUP_RESOURCE | \
SE_GROUP_INTEGRITY | \
SE_GROUP_INTEGRITY_ENABLED)
#define OWNER_SECURITY_INFORMATION (0x00000001L)
#define GROUP_SECURITY_INFORMATION (0x00000002L)
#define DACL_SECURITY_INFORMATION (0x00000004L)
#define SACL_SECURITY_INFORMATION (0x00000008L)
#define LABEL_SECURITY_INFORMATION (0x00000010L)
#define ATTRIBUTE_SECURITY_INFORMATION (0x00000020L)
#define SCOPE_SECURITY_INFORMATION (0x00000040L)
#define PROCESS_TRUST_LABEL_SECURITY_INFORMATION (0x00000080L)
#define BACKUP_SECURITY_INFORMATION (0x00010000L)
#define PROTECTED_DACL_SECURITY_INFORMATION (0x80000000L)
#define PROTECTED_SACL_SECURITY_INFORMATION (0x40000000L)
#define UNPROTECTED_DACL_SECURITY_INFORMATION (0x20000000L)
#define UNPROTECTED_SACL_SECURITY_INFORMATION (0x10000000L)
@@ -0,0 +1,100 @@
//
// Service trigger types
//
#define SERVICE_TRIGGER_TYPE_DEVICE_INTERFACE_ARRIVAL 1
#define SERVICE_TRIGGER_TYPE_IP_ADDRESS_AVAILABILITY 2
#define SERVICE_TRIGGER_TYPE_DOMAIN_JOIN 3
#define SERVICE_TRIGGER_TYPE_FIREWALL_PORT_EVENT 4
#define SERVICE_TRIGGER_TYPE_GROUP_POLICY 5
#define SERVICE_TRIGGER_TYPE_NETWORK_ENDPOINT 6
#define SERVICE_TRIGGER_TYPE_CUSTOM_SYSTEM_STATE_CHANGE 7
#define SERVICE_TRIGGER_TYPE_CUSTOM 20
//
// Service trigger data types
//
#define SERVICE_TRIGGER_DATA_TYPE_BINARY 1
#define SERVICE_TRIGGER_DATA_TYPE_STRING 2
#define SERVICE_TRIGGER_DATA_TYPE_LEVEL 3
#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
#define SERVICE_KERNEL_DRIVER 0x00000001
#define SERVICE_FILE_SYSTEM_DRIVER 0x00000002
#define SERVICE_ADAPTER 0x00000004
#define SERVICE_RECOGNIZER_DRIVER 0x00000008
#define SERVICE_DRIVER (SERVICE_KERNEL_DRIVER | SERVICE_FILE_SYSTEM_DRIVER | SERVICE_RECOGNIZER_DRIVER)
#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
#define SERVICE_TYPE_ALL (SERVICE_WIN32 | SERVICE_ADAPTER | SERVICE_DRIVER | SERVICE_INTERACTIVE_PROCESS)
#define SERVICE_BOOT_START 0x00000000
#define SERVICE_SYSTEM_START 0x00000001
#define SERVICE_AUTO_START 0x00000002
#define SERVICE_DEMAND_START 0x00000003
#define SERVICE_DISABLED 0x00000004
#define SERVICE_ERROR_IGNORE 0x00000000
#define SERVICE_ERROR_NORMAL 0x00000001
#define SERVICE_ERROR_SEVERE 0x00000002
#define SERVICE_ERROR_CRITICAL 0x00000003
#define SERVICE_ACTIVE 0x00000001
#define SERVICE_INACTIVE 0x00000002
#define SERVICE_STATE_ALL (SERVICE_ACTIVE | SERVICE_INACTIVE)
#define SERVICE_CONTROL_STOP 0x00000001
#define SERVICE_CONTROL_PAUSE 0x00000002
#define SERVICE_CONTROL_CONTINUE 0x00000003
#define SERVICE_CONTROL_INTERROGATE 0x00000004
#define SERVICE_CONTROL_SHUTDOWN 0x00000005
#define SERVICE_CONTROL_PARAMCHANGE 0x00000006
#define SERVICE_CONTROL_NETBINDADD 0x00000007
#define SERVICE_CONTROL_NETBINDREMOVE 0x00000008
#define SERVICE_CONTROL_NETBINDENABLE 0x00000009
#define SERVICE_CONTROL_NETBINDDISABLE 0x0000000A
#define SERVICE_CONTROL_DEVICEEVENT 0x0000000B
#define SERVICE_CONTROL_HARDWAREPROFILECHANGE 0x0000000C
#define SERVICE_CONTROL_POWEREVENT 0x0000000D
#define SERVICE_CONTROL_SESSIONCHANGE 0x0000000E
#define SERVICE_CONTROL_PRESHUTDOWN 0x0000000F
#define SERVICE_CONTROL_TIMECHANGE 0x00000010
#define SERVICE_CONTROL_TRIGGEREVENT 0x00000020
#define SERVICE_STOPPED 0x00000001
#define SERVICE_START_PENDING 0x00000002
#define SERVICE_STOP_PENDING 0x00000003
#define SERVICE_RUNNING 0x00000004
#define SERVICE_CONTINUE_PENDING 0x00000005
#define SERVICE_PAUSE_PENDING 0x00000006
#define SERVICE_PAUSED 0x00000007
#define SERVICE_ACCEPT_STOP 0x00000001
#define SERVICE_ACCEPT_PAUSE_CONTINUE 0x00000002
#define SERVICE_ACCEPT_SHUTDOWN 0x00000004
#define SERVICE_ACCEPT_PARAMCHANGE 0x00000008
#define SERVICE_ACCEPT_NETBINDCHANGE 0x00000010
#define SERVICE_ACCEPT_HARDWAREPROFILECHANGE 0x00000020
#define SERVICE_ACCEPT_POWEREVENT 0x00000040
#define SERVICE_ACCEPT_SESSIONCHANGE 0x00000080
#define SERVICE_ACCEPT_PRESHUTDOWN 0x00000100
#define SERVICE_ACCEPT_TIMECHANGE 0x00000200
#define SERVICE_ACCEPT_TRIGGEREVENT 0x00000400
@@ -0,0 +1,168 @@
//
// Device registry property codes
// (Codes marked as read-only (R) may only be used for
// SetupDiGetDeviceRegistryProperty)
//
// These values should cover the same set of registry properties
// as defined by the CM_DRP codes in cfgmgr32.h.
//
// Note that SPDRP codes are zero based while CM_DRP codes are one based!
//
#define SPDRP_DEVICEDESC (0x00000000) // DeviceDesc (R/W)
#define SPDRP_HARDWAREID (0x00000001) // HardwareID (R/W)
#define SPDRP_COMPATIBLEIDS (0x00000002) // CompatibleIDs (R/W)
#define SPDRP_UNUSED0 (0x00000003) // unused
#define SPDRP_SERVICE (0x00000004) // Service (R/W)
#define SPDRP_UNUSED1 (0x00000005) // unused
#define SPDRP_UNUSED2 (0x00000006) // unused
#define SPDRP_CLASS (0x00000007) // Class (R--tied to ClassGUID)
#define SPDRP_CLASSGUID (0x00000008) // ClassGUID (R/W)
#define SPDRP_DRIVER (0x00000009) // Driver (R/W)
#define SPDRP_CONFIGFLAGS (0x0000000A) // ConfigFlags (R/W)
#define SPDRP_MFG (0x0000000B) // Mfg (R/W)
#define SPDRP_FRIENDLYNAME (0x0000000C) // FriendlyName (R/W)
#define SPDRP_LOCATION_INFORMATION (0x0000000D) // LocationInformation (R/W)
#define SPDRP_PHYSICAL_DEVICE_OBJECT_NAME (0x0000000E) // PhysicalDeviceObjectName (R)
#define SPDRP_CAPABILITIES (0x0000000F) // Capabilities (R)
#define SPDRP_UI_NUMBER (0x00000010) // UiNumber (R)
#define SPDRP_UPPERFILTERS (0x00000011) // UpperFilters (R/W)
#define SPDRP_LOWERFILTERS (0x00000012) // LowerFilters (R/W)
#define SPDRP_BUSTYPEGUID (0x00000013) // BusTypeGUID (R)
#define SPDRP_LEGACYBUSTYPE (0x00000014) // LegacyBusType (R)
#define SPDRP_BUSNUMBER (0x00000015) // BusNumber (R)
#define SPDRP_ENUMERATOR_NAME (0x00000016) // Enumerator Name (R)
#define SPDRP_SECURITY (0x00000017) // Security (R/W, binary form)
#define SPDRP_SECURITY_SDS (0x00000018) // Security (W, SDS form)
#define SPDRP_DEVTYPE (0x00000019) // Device Type (R/W)
#define SPDRP_EXCLUSIVE (0x0000001A) // Device is exclusive-access (R/W)
#define SPDRP_CHARACTERISTICS (0x0000001B) // Device Characteristics (R/W)
#define SPDRP_ADDRESS (0x0000001C) // Device Address (R)
#define SPDRP_UI_NUMBER_DESC_FORMAT (0X0000001D) // UiNumberDescFormat (R/W)
#define SPDRP_DEVICE_POWER_DATA (0x0000001E) // Device Power Data (R)
#define SPDRP_REMOVAL_POLICY (0x0000001F) // Removal Policy (R)
#define SPDRP_REMOVAL_POLICY_HW_DEFAULT (0x00000020) // Hardware Removal Policy (R)
#define SPDRP_REMOVAL_POLICY_OVERRIDE (0x00000021) // Removal Policy Override (RW)
#define SPDRP_INSTALL_STATE (0x00000022) // Device Install State (R)
#define SPDRP_LOCATION_PATHS (0x00000023) // Device Location Paths (R)
#define SPDRP_BASE_CONTAINERID (0x00000024) // Base ContainerID (R)
#define SPDRP_MAXIMUM_PROPERTY (0x00000025) // Upper bound on ordinals
//
// Inf parse outcomes
//
#define ERROR_EXPECTED_SECTION_NAME (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0)
#define ERROR_BAD_SECTION_NAME_LINE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|1)
#define ERROR_SECTION_NAME_TOO_LONG (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|2)
#define ERROR_GENERAL_SYNTAX (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|3)
//
// Inf runtime errors
//
#define ERROR_WRONG_INF_STYLE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x100)
#define ERROR_SECTION_NOT_FOUND (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x101)
#define ERROR_LINE_NOT_FOUND (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x102)
#define ERROR_NO_BACKUP (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x103)
//
// Device Installer/other errors
//
#define ERROR_NO_ASSOCIATED_CLASS (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x200)
#define ERROR_CLASS_MISMATCH (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x201)
#define ERROR_DUPLICATE_FOUND (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x202)
#define ERROR_NO_DRIVER_SELECTED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x203)
#define ERROR_KEY_DOES_NOT_EXIST (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x204)
#define ERROR_INVALID_DEVINST_NAME (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x205)
#define ERROR_INVALID_CLASS (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x206)
#define ERROR_DEVINST_ALREADY_EXISTS (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x207)
#define ERROR_DEVINFO_NOT_REGISTERED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x208)
#define ERROR_INVALID_REG_PROPERTY (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x209)
#define ERROR_NO_INF (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x20A)
#define ERROR_NO_SUCH_DEVINST (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x20B)
#define ERROR_CANT_LOAD_CLASS_ICON (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x20C)
#define ERROR_INVALID_CLASS_INSTALLER (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x20D)
#define ERROR_DI_DO_DEFAULT (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x20E)
#define ERROR_DI_NOFILECOPY (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x20F)
#define ERROR_INVALID_HWPROFILE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x210)
#define ERROR_NO_DEVICE_SELECTED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x211)
#define ERROR_DEVINFO_LIST_LOCKED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x212)
#define ERROR_DEVINFO_DATA_LOCKED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x213)
#define ERROR_DI_BAD_PATH (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x214)
#define ERROR_NO_CLASSINSTALL_PARAMS (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x215)
#define ERROR_FILEQUEUE_LOCKED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x216)
#define ERROR_BAD_SERVICE_INSTALLSECT (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x217)
#define ERROR_NO_CLASS_DRIVER_LIST (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x218)
#define ERROR_NO_ASSOCIATED_SERVICE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x219)
#define ERROR_NO_DEFAULT_DEVICE_INTERFACE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x21A)
#define ERROR_DEVICE_INTERFACE_ACTIVE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x21B)
#define ERROR_DEVICE_INTERFACE_REMOVED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x21C)
#define ERROR_BAD_INTERFACE_INSTALLSECT (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x21D)
#define ERROR_NO_SUCH_INTERFACE_CLASS (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x21E)
#define ERROR_INVALID_REFERENCE_STRING (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x21F)
#define ERROR_INVALID_MACHINENAME (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x220)
#define ERROR_REMOTE_COMM_FAILURE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x221)
#define ERROR_MACHINE_UNAVAILABLE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x222)
#define ERROR_NO_CONFIGMGR_SERVICES (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x223)
#define ERROR_INVALID_PROPPAGE_PROVIDER (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x224)
#define ERROR_NO_SUCH_DEVICE_INTERFACE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x225)
#define ERROR_DI_POSTPROCESSING_REQUIRED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x226)
#define ERROR_INVALID_COINSTALLER (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x227)
#define ERROR_NO_COMPAT_DRIVERS (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x228)
#define ERROR_NO_DEVICE_ICON (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x229)
#define ERROR_INVALID_INF_LOGCONFIG (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x22A)
#define ERROR_DI_DONT_INSTALL (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x22B)
#define ERROR_INVALID_FILTER_DRIVER (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x22C)
#define ERROR_NON_WINDOWS_NT_DRIVER (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x22D)
#define ERROR_NON_WINDOWS_DRIVER (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x22E)
#define ERROR_NO_CATALOG_FOR_OEM_INF (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x22F)
#define ERROR_DEVINSTALL_QUEUE_NONNATIVE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x230)
#define ERROR_NOT_DISABLEABLE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x231)
#define ERROR_CANT_REMOVE_DEVINST (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x232)
#define ERROR_INVALID_TARGET (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x233)
#define ERROR_DRIVER_NONNATIVE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x234)
#define ERROR_IN_WOW64 (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x235)
#define ERROR_SET_SYSTEM_RESTORE_POINT (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x236)
#define ERROR_SCE_DISABLED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x238)
#define ERROR_UNKNOWN_EXCEPTION (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x239)
#define ERROR_PNP_REGISTRY_ERROR (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x23A)
#define ERROR_REMOTE_REQUEST_UNSUPPORTED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x23B)
#define ERROR_NOT_AN_INSTALLED_OEM_INF (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x23C)
#define ERROR_INF_IN_USE_BY_DEVICES (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x23D)
#define ERROR_DI_FUNCTION_OBSOLETE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x23E)
#define ERROR_NO_AUTHENTICODE_CATALOG (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x23F)
#define ERROR_AUTHENTICODE_DISALLOWED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x240)
#define ERROR_AUTHENTICODE_TRUSTED_PUBLISHER (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x241)
#define ERROR_AUTHENTICODE_TRUST_NOT_ESTABLISHED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x242)
#define ERROR_AUTHENTICODE_PUBLISHER_NOT_TRUSTED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x243)
#define ERROR_SIGNATURE_OSATTRIBUTE_MISMATCH (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x244)
#define ERROR_ONLY_VALIDATE_VIA_AUTHENTICODE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x245)
#define ERROR_DEVICE_INSTALLER_NOT_READY (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x246)
#define ERROR_DRIVER_STORE_ADD_FAILED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x247)
#define ERROR_DEVICE_INSTALL_BLOCKED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x248)
#define ERROR_DRIVER_INSTALL_BLOCKED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x249)
#define ERROR_WRONG_INF_TYPE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x24A)
#define ERROR_FILE_HASH_NOT_IN_CATALOG (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x24B)
#define ERROR_DRIVER_STORE_DELETE_FAILED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x24C)
//
// Setupapi exception codes
//
#define ERROR_UNRECOVERABLE_STACK_OVERFLOW (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x300)
#define EXCEPTION_SPAPI_UNRECOVERABLE_STACK_OVERFLOW ERROR_UNRECOVERABLE_STACK_OVERFLOW
//
// Backward compatibility--do not use.
//
#define ERROR_NO_DEFAULT_INTERFACE_DEVICE ERROR_NO_DEFAULT_DEVICE_INTERFACE
#define ERROR_INTERFACE_DEVICE_ACTIVE ERROR_DEVICE_INTERFACE_ACTIVE
#define ERROR_INTERFACE_DEVICE_REMOVED ERROR_DEVICE_INTERFACE_REMOVED
#define ERROR_NO_SUCH_INTERFACE_DEVICE ERROR_NO_SUCH_DEVICE_INTERFACE
//
// Win9x migration DLL error code
//
#define ERROR_NOT_INSTALLED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x1000)
@@ -0,0 +1,40 @@
// Returns TRUE/FALSE depending on question
#define OS_WINDOWS 0 // Windows 9x vs. NT
#define OS_NT 1 // Windows 9x vs. NT
#define OS_WIN95ORGREATER 2 // Win95 or greater
#define OS_NT4ORGREATER 3 // NT4 or greater
#define OS_WIN98ORGREATER 5 // Win98 or greater
#define OS_WIN98_GOLD 6 // Win98 Gold (Version 4.10 build 1998)
#define OS_WIN2000ORGREATER 7 // Some derivative of Win2000
// NOTE: these flags check explicitly for (dwMajorVersion == 5)
#define OS_WIN2000PRO 8 // Windows 2000 Professional (Workstation)
#define OS_WIN2000SERVER 9 // Windows 2000 Server
#define OS_WIN2000ADVSERVER 10 // Windows 2000 Advanced Server
#define OS_WIN2000DATACENTER 11 // Windows 2000 Data Center Server
#define OS_WIN2000TERMINAL 12 // Windows 2000 Terminal Server in "Application Server" mode (now simply called "Terminal Server")
#define OS_EMBEDDED 13 // Embedded Windows Edition
#define OS_TERMINALCLIENT 14 // Windows Terminal Client (eg user is comming in via tsclient)
#define OS_TERMINALREMOTEADMIN 15 // Terminal Server in "Remote Administration" mode
#define OS_WIN95_GOLD 16 // Windows 95 Gold (Version 4.0 Build 1995)
#define OS_MEORGREATER 17 // Windows Millennium (Version 5.0)
#define OS_XPORGREATER 18 // Windows XP or greater
#define OS_HOME 19 // Home Edition (eg NOT Professional, Server, Advanced Server, or Datacenter)
#define OS_PROFESSIONAL 20 // Professional (aka Workstation; eg NOT Server, Advanced Server, or Datacenter)
#define OS_DATACENTER 21 // Datacenter (eg NOT Server, Advanced Server, Professional, or Personal)
#define OS_ADVSERVER 22 // Advanced Server (eg NOT Datacenter, Server, Professional, or Personal)
#define OS_SERVER 23 // Server (eg NOT Datacenter, Advanced Server, Professional, or Personal)
#define OS_TERMINALSERVER 24 // Terminal Server - server running in what used to be called "Application Server" mode (now simply called "Terminal Server")
#define OS_PERSONALTERMINALSERVER 25 // Personal Terminal Server - per/pro machine running in single user TS mode
#define OS_FASTUSERSWITCHING 26 // Fast User Switching
#define OS_WELCOMELOGONUI 27 // New friendly logon UI
#define OS_DOMAINMEMBER 28 // Is this machine a member of a domain (eg NOT a workgroup)
#define OS_ANYSERVER 29 // is this machine any type of server? (eg datacenter or advanced server or server)?
#define OS_WOW6432 30 // Is this process a 32-bit process running on an 64-bit platform?
#define OS_WEBSERVER 31 // Web Edition Server
#define OS_SMALLBUSINESSSERVER 32 // SBS Server
#define OS_TABLETPC 33 // Are we running on a TabletPC?
#define OS_SERVERADMINUI 34 // Should defaults lean towards those preferred by server administrators?
#define OS_MEDIACENTER 35 // eHome Freestyle Project
#define OS_APPLIANCE 36 // Windows .NET Appliance Server
@@ -0,0 +1,399 @@
//
// AccessSystemAcl access type
//
#define ACCESS_SYSTEM_SECURITY (0x01000000L)
//
// MaximumAllowed access type
//
#define MAXIMUM_ALLOWED (0x02000000L)
//
// Define access rights to files and directories
//
#define FILE_READ_DATA ( 0x0001 ) // file & pipe
#define FILE_LIST_DIRECTORY ( 0x0001 ) // directory
#define FILE_WRITE_DATA ( 0x0002 ) // file & pipe
#define FILE_ADD_FILE ( 0x0002 ) // directory
#define FILE_APPEND_DATA ( 0x0004 ) // file
#define FILE_ADD_SUBDIRECTORY ( 0x0004 ) // directory
#define FILE_CREATE_PIPE_INSTANCE ( 0x0004 ) // named pipe
#define FILE_READ_EA ( 0x0008 ) // file & directory
#define FILE_WRITE_EA ( 0x0010 ) // file & directory
#define FILE_EXECUTE ( 0x0020 ) // file
#define FILE_TRAVERSE ( 0x0020 ) // directory
#define FILE_DELETE_CHILD ( 0x0040 ) // directory
#define FILE_READ_ATTRIBUTES ( 0x0080 ) // all
#define FILE_WRITE_ATTRIBUTES ( 0x0100 ) // all
#define FILE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x1FF)
#define FILE_GENERIC_READ (STANDARD_RIGHTS_READ |\
FILE_READ_DATA |\
FILE_READ_ATTRIBUTES |\
FILE_READ_EA |\
SYNCHRONIZE)
#define FILE_GENERIC_WRITE (STANDARD_RIGHTS_WRITE |\
FILE_WRITE_DATA |\
FILE_WRITE_ATTRIBUTES |\
FILE_WRITE_EA |\
FILE_APPEND_DATA |\
SYNCHRONIZE)
#define FILE_GENERIC_EXECUTE (STANDARD_RIGHTS_EXECUTE |\
FILE_READ_ATTRIBUTES |\
FILE_EXECUTE |\
SYNCHRONIZE)
//
// Callback Specific Access Rights.
//
#define CALLBACK_MODIFY_STATE 0x0001
#define CALLBACK_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|\
CALLBACK_MODIFY_STATE )
// Event Specific Access Rights.
//
#define EVENT_QUERY_STATE 0x0001
#define EVENT_MODIFY_STATE 0x0002 // winnt
#define EVENT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3) // winnt
//
// Mutant Specific Access Rights.
//
// begin_winnt
#define MUTANT_QUERY_STATE 0x0001
#define MUTANT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|\
MUTANT_QUERY_STATE)
//
// Semaphore Specific Access Rights.
//
#define SEMAPHORE_QUERY_STATE 0x0001
#define SEMAPHORE_MODIFY_STATE 0x0002 // winnt
#define SEMAPHORE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3) // winnt
// Timer Specific Access Rights.
//
#define TIMER_QUERY_STATE 0x0001
#define TIMER_MODIFY_STATE 0x0002
#define TIMER_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|\
TIMER_QUERY_STATE|TIMER_MODIFY_STATE)
// I/O Completion Specific Access Rights.
//
#define IO_COMPLETION_QUERY_STATE 0x0001
#define IO_COMPLETION_MODIFY_STATE 0x0002 // winnt
#define IO_COMPLETION_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3) // winnt
//
// Connection Port Type Specific Access Rights.
//
#define PORT_CONNECT (0x0001)
#define PORT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | \
SYNCHRONIZE | 0x1)
//
// Object Manager Object Type Specific Access Rights.
//
#define OBJECT_TYPE_CREATE (0x0001)
#define OBJECT_TYPE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0x1)
//
// Object Manager Directory Specific Access Rights.
//
#define DIRECTORY_QUERY (0x0001)
#define DIRECTORY_TRAVERSE (0x0002)
#define DIRECTORY_CREATE_OBJECT (0x0004)
#define DIRECTORY_CREATE_SUBDIRECTORY (0x0008)
#define DIRECTORY_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0xF)
//
// Object Manager Symbolic Link Specific Access Rights.
//
#define SYMBOLIC_LINK_QUERY (0x0001)
#define SYMBOLIC_LINK_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0x1)
//
// Process Specific Access Rights
//
#define PROCESS_TERMINATE (0x0001)
#define PROCESS_CREATE_THREAD (0x0002)
#define PROCESS_SET_SESSIONID (0x0004)
#define PROCESS_VM_OPERATION (0x0008)
#define PROCESS_VM_READ (0x0010)
#define PROCESS_VM_WRITE (0x0020)
#define PROCESS_DUP_HANDLE (0x0040)
#define PROCESS_CREATE_PROCESS (0x0080)
#define PROCESS_SET_QUOTA (0x0100)
#define PROCESS_SET_INFORMATION (0x0200)
#define PROCESS_QUERY_INFORMATION (0x0400)
#define PROCESS_SUSPEND_RESUME (0x0800)
#define PROCESS_QUERY_LIMITED_INFORMATION (0x1000)
#define PROCESS_SET_LIMITED_INFORMATION (0x2000)
#define PROCESS_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | \
0xFFF)
//
// Thread Specific Access Rights
//
#define THREAD_TERMINATE (0x0001)
#define THREAD_SUSPEND_RESUME (0x0002)
#define THREAD_GET_CONTEXT (0x0008)
#define THREAD_SET_CONTEXT (0x0010)
#define THREAD_QUERY_INFORMATION (0x0040)
#define THREAD_SET_INFORMATION (0x0020)
#define THREAD_SET_THREAD_TOKEN (0x0080)
#define THREAD_IMPERSONATE (0x0100)
#define THREAD_DIRECT_IMPERSONATION (0x0200)
#define THREAD_ALL_ACCESS 0x001F03FF
//
// Job Object Specific Access Rights
//
// begin_winnt
#define JOB_OBJECT_ASSIGN_PROCESS (0x0001)
#define JOB_OBJECT_SET_ATTRIBUTES (0x0002)
#define JOB_OBJECT_QUERY (0x0004)
#define JOB_OBJECT_TERMINATE (0x0008)
#define JOB_OBJECT_SET_SECURITY_ATTRIBUTES (0x0010)
#define JOB_OBJECT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | \
0x1F )
//
// Registry Specific Access Rights.
//
#define KEY_QUERY_VALUE (0x0001)
#define KEY_SET_VALUE (0x0002)
#define KEY_CREATE_SUB_KEY (0x0004)
#define KEY_ENUMERATE_SUB_KEYS (0x0008)
#define KEY_NOTIFY (0x0010)
#define KEY_CREATE_LINK (0x0020)
#define KEY_WOW64_32KEY (0x0200)
#define KEY_WOW64_64KEY (0x0100)
#define KEY_WOW64_RES (0x0300)
#define KEY_READ ((STANDARD_RIGHTS_READ|KEY_QUERY_VALUE|KEY_ENUMERATE_SUB_KEYS|KEY_NOTIFY)&(~SYNCHRONIZE))
#define KEY_WRITE ((STANDARD_RIGHTS_WRITE|KEY_SET_VALUE|KEY_CREATE_SUB_KEY)&(~SYNCHRONIZE))
#define KEY_EXECUTE ((KEY_READ)&(~SYNCHRONIZE))
#define KEY_ALL_ACCESS ((STANDARD_RIGHTS_ALL|KEY_QUERY_VALUE|KEY_SET_VALUE|KEY_CREATE_SUB_KEY|KEY_ENUMERATE_SUB_KEYS|KEY_NOTIFY|KEY_CREATE_LINK)&(~SYNCHRONIZE))
//
// Token Specific Access Rights.
//// Documentation purpose only real define are in token.txt
// #define TOKEN_ASSIGN_PRIMARY (0x0001)
// #define TOKEN_DUPLICATE (0x0002)
// #define TOKEN_IMPERSONATE (0x0004)
// #define TOKEN_QUERY (0x0008)
// #define TOKEN_QUERY_SOURCE (0x0010)
// #define TOKEN_ADJUST_PRIVILEGES (0x0020)
// #define TOKEN_ADJUST_GROUPS (0x0040)
// #define TOKEN_ADJUST_DEFAULT (0x0080)
// #define TOKEN_ADJUST_SESSIONID (0x0100)
//
// Cluster API Specific Access Rights
//
#define CLUSAPI_READ_ACCESS 0x00000001L
#define CLUSAPI_CHANGE_ACCESS 0x00000002L
#define CLUSAPI_NO_ACCESS 0x00000004L
#define CLUSAPI_ALL_ACCESS (CLUSAPI_READ_ACCESS | CLUSAPI_CHANGE_ACCESS)
//
// Fax Specific Access Rights
//
#define FAX_JOB_SUBMIT (0x0001)
#define FAX_JOB_QUERY (0x0002)
#define FAX_CONFIG_QUERY (0x0004)
#define FAX_CONFIG_SET (0x0008)
#define FAX_PORT_QUERY (0x0010)
#define FAX_PORT_SET (0x0020)
#define FAX_JOB_MANAGE (0x0040)
// COM Specific Access Rights (Custom NAME)
// Based on internet search for "COM Access Mask"
#define COM_EXECUTE (0x0001)
#define COM_EXECUTE_LOCAL (0x0002)
#define COM_EXECUTE_REMOTE (0x0004)
#define COM_ACTIVATE_LOCAL (0x0008)
#define COM_ACTIVATE_REMOTE (0x0010)
//
// Section Access Rights.
//
// begin_winnt
#define SECTION_QUERY 0x0001
#define SECTION_MAP_WRITE 0x0002
#define SECTION_MAP_READ 0x0004
#define SECTION_MAP_EXECUTE 0x0008
#define SECTION_EXTEND_SIZE 0x0010
#define SECTION_MAP_EXECUTE_EXPLICIT 0x0020 // not included in SECTION_ALL_ACCESS
#define SECTION_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SECTION_QUERY| SECTION_MAP_WRITE |SECTION_MAP_READ |SECTION_MAP_EXECUTE |SECTION_EXTEND_SIZE)
#define FILE_MAP_COPY SECTION_QUERY
#define FILE_MAP_WRITE SECTION_MAP_WRITE
#define FILE_MAP_READ SECTION_MAP_READ
#define FILE_MAP_ALL_ACCESS SECTION_ALL_ACCESS
#define FILE_MAP_EXECUTE SECTION_MAP_EXECUTE_EXPLICIT
//
// Service object specific access type
//
#define SERVICE_QUERY_CONFIG 0x0001
#define SERVICE_CHANGE_CONFIG 0x0002
#define SERVICE_QUERY_STATUS 0x0004
#define SERVICE_ENUMERATE_DEPENDENTS 0x0008
#define SERVICE_START 0x0010
#define SERVICE_STOP 0x0020
#define SERVICE_PAUSE_CONTINUE 0x0040
#define SERVICE_INTERROGATE 0x0080
#define SERVICE_USER_DEFINED_CONTROL 0x0100
#define SERVICE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | \
SERVICE_QUERY_CONFIG | \
SERVICE_CHANGE_CONFIG | \
SERVICE_QUERY_STATUS | \
SERVICE_ENUMERATE_DEPENDENTS | \
SERVICE_START | \
SERVICE_STOP | \
SERVICE_PAUSE_CONTINUE | \
SERVICE_INTERROGATE | \
SERVICE_USER_DEFINED_CONTROL)
//
// Service Control Manager object specific access types
//
#define SC_MANAGER_CONNECT 0x0001
#define SC_MANAGER_CREATE_SERVICE 0x0002
#define SC_MANAGER_ENUMERATE_SERVICE 0x0004
#define SC_MANAGER_LOCK 0x0008
#define SC_MANAGER_QUERY_LOCK_STATUS 0x0010
#define SC_MANAGER_MODIFY_BOOT_CONFIG 0x0020
#define SC_MANAGER_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | \
SC_MANAGER_CONNECT | \
SC_MANAGER_CREATE_SERVICE | \
SC_MANAGER_ENUMERATE_SERVICE | \
SC_MANAGER_LOCK | \
SC_MANAGER_QUERY_LOCK_STATUS | \
SC_MANAGER_MODIFY_BOOT_CONFIG)
/// Active Directory
#define ADS_RIGHT_DELETE 0x10000
#define ADS_RIGHT_READ_CONTROL 0x20000
#define ADS_RIGHT_WRITE_DAC 0x40000
#define ADS_RIGHT_WRITE_OWNER 0x80000
#define ADS_RIGHT_SYNCHRONIZE 0x100000
#define ADS_RIGHT_ACCESS_SYSTEM_SECURITY 0x1000000
#define ADS_RIGHT_GENERIC_READ 0x80000000
#define ADS_RIGHT_GENERIC_WRITE 0x40000000
#define ADS_RIGHT_GENERIC_EXECUTE 0x20000000
#define ADS_RIGHT_GENERIC_ALL 0x10000000
#define ADS_RIGHT_DS_CREATE_CHILD 0x1
#define ADS_RIGHT_DS_DELETE_CHILD 0x2
#define ADS_RIGHT_ACTRL_DS_LIST 0x4
#define ADS_RIGHT_DS_SELF 0x8
#define ADS_RIGHT_DS_READ_PROP 0x10
#define ADS_RIGHT_DS_WRITE_PROP 0x20
#define ADS_RIGHT_DS_DELETE_TREE 0x40
#define ADS_RIGHT_DS_LIST_OBJECT 0x80
#define ADS_RIGHT_DS_CONTROL_ACCESS 0x100
////////////////////////////////////////////////////////////////////////////
// //
// Local Security Policy Administration API datatypes and defines //
// //
////////////////////////////////////////////////////////////////////////////
// ntlsa.h
// Access types for the Policy object
//
#define POLICY_VIEW_LOCAL_INFORMATION 0x00000001L
#define POLICY_VIEW_AUDIT_INFORMATION 0x00000002L
#define POLICY_GET_PRIVATE_INFORMATION 0x00000004L
#define POLICY_TRUST_ADMIN 0x00000008L
#define POLICY_CREATE_ACCOUNT 0x00000010L
#define POLICY_CREATE_SECRET 0x00000020L
#define POLICY_CREATE_PRIVILEGE 0x00000040L
#define POLICY_SET_DEFAULT_QUOTA_LIMITS 0x00000080L
#define POLICY_SET_AUDIT_REQUIREMENTS 0x00000100L
#define POLICY_AUDIT_LOG_ADMIN 0x00000200L
#define POLICY_SERVER_ADMIN 0x00000400L
#define POLICY_LOOKUP_NAMES 0x00000800L
#define POLICY_NOTIFICATION 0x00001000L
#define POLICY_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED |\
POLICY_VIEW_LOCAL_INFORMATION |\
POLICY_VIEW_AUDIT_INFORMATION |\
POLICY_GET_PRIVATE_INFORMATION |\
POLICY_TRUST_ADMIN |\
POLICY_CREATE_ACCOUNT |\
POLICY_CREATE_SECRET |\
POLICY_CREATE_PRIVILEGE |\
POLICY_SET_DEFAULT_QUOTA_LIMITS |\
POLICY_SET_AUDIT_REQUIREMENTS |\
POLICY_AUDIT_LOG_ADMIN |\
POLICY_SERVER_ADMIN |\
POLICY_LOOKUP_NAMES)
@@ -0,0 +1,73 @@
#define SYMSEARCH_MASKOBJS 0x01 // used internally to implement other APIs
#define SYMSEARCH_RECURSE 0X02 // recurse scopes
#define SYMSEARCH_GLOBALSONLY 0X04 // search only for global symbols
#define SYMSEARCH_ALLITEMS 0X08 // search for everything in the pdb, not just normal scoped symbols
//
// data structures used for registered symbol callbacks
//
#define CBA_DEFERRED_SYMBOL_LOAD_START 0x00000001
#define CBA_DEFERRED_SYMBOL_LOAD_COMPLETE 0x00000002
#define CBA_DEFERRED_SYMBOL_LOAD_FAILURE 0x00000003
#define CBA_SYMBOLS_UNLOADED 0x00000004
#define CBA_DUPLICATE_SYMBOL 0x00000005
#define CBA_READ_MEMORY 0x00000006
#define CBA_DEFERRED_SYMBOL_LOAD_CANCEL 0x00000007
#define CBA_SET_OPTIONS 0x00000008
#define CBA_EVENT 0x00000010
#define CBA_DEFERRED_SYMBOL_LOAD_PARTIAL 0x00000020
#define CBA_DEBUG_INFO 0x10000000
#define CBA_SRCSRV_INFO 0x20000000
#define CBA_SRCSRV_EVENT 0x40000000
#define CBA_UPDATE_STATUS_BAR 0x50000000
#define CBA_ENGINE_PRESENT 0x60000000
#define CBA_CHECK_ENGOPT_DISALLOW_NETWORK_PATHS 0x70000000
#define EVENT_SRCSPEW_START 100
#define EVENT_SRCSPEW 100
#define EVENT_SRCSPEW_END 199
#define DSLFLAG_MISMATCHED_PDB 0x1
#define DSLFLAG_MISMATCHED_DBG 0x2
#define FLAG_ENGINE_PRESENT 0x4
#define FLAG_ENGOPT_DISALLOW_NETWORK_PATHS 0x8
//
// options that are set/returned by SymSetOptions() & SymGetOptions()
// these are used as a mask
//
#define SYMOPT_CASE_INSENSITIVE 0x00000001
#define SYMOPT_UNDNAME 0x00000002
#define SYMOPT_DEFERRED_LOADS 0x00000004
#define SYMOPT_NO_CPP 0x00000008
#define SYMOPT_LOAD_LINES 0x00000010
#define SYMOPT_OMAP_FIND_NEAREST 0x00000020
#define SYMOPT_LOAD_ANYTHING 0x00000040
#define SYMOPT_IGNORE_CVREC 0x00000080
#define SYMOPT_NO_UNQUALIFIED_LOADS 0x00000100
#define SYMOPT_FAIL_CRITICAL_ERRORS 0x00000200
#define SYMOPT_EXACT_SYMBOLS 0x00000400
#define SYMOPT_ALLOW_ABSOLUTE_SYMBOLS 0x00000800
#define SYMOPT_IGNORE_NT_SYMPATH 0x00001000
#define SYMOPT_INCLUDE_32BIT_MODULES 0x00002000
#define SYMOPT_PUBLICS_ONLY 0x00004000
#define SYMOPT_NO_PUBLICS 0x00008000
#define SYMOPT_AUTO_PUBLICS 0x00010000
#define SYMOPT_NO_IMAGE_SEARCH 0x00020000
#define SYMOPT_SECURE 0x00040000
#define SYMOPT_NO_PROMPTS 0x00080000
#define SYMOPT_OVERWRITE 0x00100000
#define SYMOPT_IGNORE_IMAGEDIR 0x00200000
#define SYMOPT_FLAT_DIRECTORY 0x00400000
#define SYMOPT_FAVOR_COMPRESSED 0x00800000
#define SYMOPT_ALLOW_ZERO_ADDRESS 0x01000000
#define SYMOPT_DISABLE_SYMSRV_AUTODETECT 0x02000000
#define SYMOPT_READONLY_CACHE 0x04000000
#define SYMOPT_SYMPATH_LAST 0x08000000
#define SYMOPT_DISABLE_FAST_SYMBOLS 0x10000000
#define SYMOPT_DISABLE_SYMSRV_TIMEOUT 0x20000000
#define SYMOPT_DISABLE_SRVSTAR_ON_STARTUP 0x40000000
#define SYMOPT_DEBUG 0x80000000
@@ -0,0 +1,207 @@
//
// CTL Trusted CA Lists
//
#define szOID_TRUSTED_CODESIGNING_CA_LIST "1.3.6.1.4.1.311.2.2.1"
#define szOID_TRUSTED_CLIENT_AUTH_CA_LIST "1.3.6.1.4.1.311.2.2.2"
#define szOID_TRUSTED_SERVER_AUTH_CA_LIST "1.3.6.1.4.1.311.2.2.3"
#define szOID_RSA "1.2.840.113549"
#define szOID_PKCS "1.2.840.113549.1"
#define szOID_RSA_HASH "1.2.840.113549.2"
#define szOID_RSA_ENCRYPT "1.2.840.113549.3"
#define szOID_PKCS_1 "1.2.840.113549.1.1"
#define szOID_PKCS_2 "1.2.840.113549.1.2"
#define szOID_PKCS_3 "1.2.840.113549.1.3"
#define szOID_PKCS_4 "1.2.840.113549.1.4"
#define szOID_PKCS_5 "1.2.840.113549.1.5"
#define szOID_PKCS_6 "1.2.840.113549.1.6"
#define szOID_PKCS_7 "1.2.840.113549.1.7"
#define szOID_PKCS_8 "1.2.840.113549.1.8"
#define szOID_PKCS_9 "1.2.840.113549.1.9"
#define szOID_PKCS_10 "1.2.840.113549.1.10"
#define szOID_PKCS_12 "1.2.840.113549.1.12"
#define szOID_RSA_RSA "1.2.840.113549.1.1.1"
#define szOID_RSA_MD2RSA "1.2.840.113549.1.1.2"
#define szOID_RSA_MD4RSA "1.2.840.113549.1.1.3"
#define szOID_RSA_MD5RSA "1.2.840.113549.1.1.4"
#define szOID_RSA_SHA1RSA "1.2.840.113549.1.1.5"
#define szOID_RSA_SETOAEP_RSA "1.2.840.113549.1.1.6"
#define szOID_RSAES_OAEP "1.2.840.113549.1.1.7"
#define szOID_RSA_MGF1 "1.2.840.113549.1.1.8"
#define szOID_RSA_PSPECIFIED "1.2.840.113549.1.1.9"
#define szOID_RSA_SSA_PSS "1.2.840.113549.1.1.10"
#define szOID_RSA_SHA256RSA "1.2.840.113549.1.1.11"
#define szOID_RSA_SHA384RSA "1.2.840.113549.1.1.12"
#define szOID_RSA_SHA512RSA "1.2.840.113549.1.1.13"
#define szOID_RSA_DH "1.2.840.113549.1.3.1"
#define szOID_RSA_data "1.2.840.113549.1.7.1"
#define szOID_RSA_signedData "1.2.840.113549.1.7.2"
#define szOID_RSA_envelopedData "1.2.840.113549.1.7.3"
#define szOID_RSA_signEnvData "1.2.840.113549.1.7.4"
#define szOID_RSA_digestedData "1.2.840.113549.1.7.5"
#define szOID_RSA_hashedData "1.2.840.113549.1.7.5"
#define szOID_RSA_encryptedData "1.2.840.113549.1.7.6"
#define szOID_RSA_emailAddr "1.2.840.113549.1.9.1"
#define szOID_RSA_unstructName "1.2.840.113549.1.9.2"
#define szOID_RSA_contentType "1.2.840.113549.1.9.3"
#define szOID_RSA_messageDigest "1.2.840.113549.1.9.4"
#define szOID_RSA_signingTime "1.2.840.113549.1.9.5"
#define szOID_RSA_counterSign "1.2.840.113549.1.9.6"
#define szOID_RSA_challengePwd "1.2.840.113549.1.9.7"
#define szOID_RSA_unstructAddr "1.2.840.113549.1.9.8"
#define szOID_RSA_extCertAttrs "1.2.840.113549.1.9.9"
#define szOID_RSA_certExtensions "1.2.840.113549.1.9.14"
#define szOID_RSA_SMIMECapabilities "1.2.840.113549.1.9.15"
#define szOID_RSA_preferSignedData "1.2.840.113549.1.9.15.1"
#define szOID_TIMESTAMP_TOKEN "1.2.840.113549.1.9.16.1.4"
#define szOID_RFC3161_counterSign "1.3.6.1.4.1.311.3.3.1"
#define szOID_RSA_SMIMEalg "1.2.840.113549.1.9.16.3"
#define szOID_RSA_SMIMEalgESDH "1.2.840.113549.1.9.16.3.5"
#define szOID_RSA_SMIMEalgCMS3DESwrap "1.2.840.113549.1.9.16.3.6"
#define szOID_RSA_SMIMEalgCMSRC2wrap "1.2.840.113549.1.9.16.3.7"
#define szOID_RSA_MD2 "1.2.840.113549.2.2"
#define szOID_RSA_MD4 "1.2.840.113549.2.4"
#define szOID_RSA_MD5 "1.2.840.113549.2.5"
#define szOID_RSA_RC2CBC "1.2.840.113549.3.2"
#define szOID_RSA_RC4 "1.2.840.113549.3.4"
#define szOID_RSA_DES_EDE3_CBC "1.2.840.113549.3.7"
#define szOID_RSA_RC5_CBCPad "1.2.840.113549.3.9"
#define szOID_ANSI_X942 "1.2.840.10046"
#define szOID_ANSI_X942_DH "1.2.840.10046.2.1"
#define szOID_X957 "1.2.840.10040"
#define szOID_X957_DSA "1.2.840.10040.4.1"
#define szOID_X957_SHA1DSA "1.2.840.10040.4.3"
#define szOID_ECC_PUBLIC_KEY "1.2.840.10045.2.1"
#define szOID_ECC_CURVE_P256 "1.2.840.10045.3.1.7"
#define szOID_ECC_CURVE_P384 "1.3.132.0.34"
#define szOID_ECC_CURVE_P521 "1.3.132.0.35"
#define szOID_ECDSA_SHA1 "1.2.840.10045.4.1"
#define szOID_ECDSA_SPECIFIED "1.2.840.10045.4.3"
#define szOID_ECDSA_SHA256 "1.2.840.10045.4.3.2"
#define szOID_ECDSA_SHA384 "1.2.840.10045.4.3.3"
#define szOID_ECDSA_SHA512 "1.2.840.10045.4.3.4"
#define szOID_NIST_AES128_CBC "2.16.840.1.101.3.4.1.2"
#define szOID_NIST_AES192_CBC "2.16.840.1.101.3.4.1.22"
#define szOID_NIST_AES256_CBC "2.16.840.1.101.3.4.1.42"
#define szOID_NIST_AES128_WRAP "2.16.840.1.101.3.4.1.5"
#define szOID_NIST_AES192_WRAP "2.16.840.1.101.3.4.1.25"
#define szOID_NIST_AES256_WRAP "2.16.840.1.101.3.4.1.45"
#define szOID_DH_SINGLE_PASS_STDDH_SHA1_KDF "1.3.133.16.840.63.0.2"
#define szOID_DH_SINGLE_PASS_STDDH_SHA256_KDF "1.3.132.1.11.1"
#define szOID_DH_SINGLE_PASS_STDDH_SHA384_KDF "1.3.132.1.11.2"
#define szOID_DS "2.5"
#define szOID_DSALG "2.5.8"
#define szOID_DSALG_CRPT "2.5.8.1"
#define szOID_DSALG_HASH "2.5.8.2"
#define szOID_DSALG_SIGN "2.5.8.3"
#define szOID_DSALG_RSA "2.5.8.1.1"
#define szOID_OIW "1.3.14"
#define szOID_OIWSEC "1.3.14.3.2"
#define szOID_OIWSEC_md4RSA "1.3.14.3.2.2"
#define szOID_OIWSEC_md5RSA "1.3.14.3.2.3"
#define szOID_OIWSEC_md4RSA2 "1.3.14.3.2.4"
#define szOID_OIWSEC_desECB "1.3.14.3.2.6"
#define szOID_OIWSEC_desCBC "1.3.14.3.2.7"
#define szOID_OIWSEC_desOFB "1.3.14.3.2.8"
#define szOID_OIWSEC_desCFB "1.3.14.3.2.9"
#define szOID_OIWSEC_desMAC "1.3.14.3.2.10"
#define szOID_OIWSEC_rsaSign "1.3.14.3.2.11"
#define szOID_OIWSEC_dsa "1.3.14.3.2.12"
#define szOID_OIWSEC_shaDSA "1.3.14.3.2.13"
#define szOID_OIWSEC_mdc2RSA "1.3.14.3.2.14"
#define szOID_OIWSEC_shaRSA "1.3.14.3.2.15"
#define szOID_OIWSEC_dhCommMod "1.3.14.3.2.16"
#define szOID_OIWSEC_desEDE "1.3.14.3.2.17"
#define szOID_OIWSEC_sha "1.3.14.3.2.18"
#define szOID_OIWSEC_mdc2 "1.3.14.3.2.19"
#define szOID_OIWSEC_dsaComm "1.3.14.3.2.20"
#define szOID_OIWSEC_dsaCommSHA "1.3.14.3.2.21"
#define szOID_OIWSEC_rsaXchg "1.3.14.3.2.22"
#define szOID_OIWSEC_keyHashSeal "1.3.14.3.2.23"
#define szOID_OIWSEC_md2RSASign "1.3.14.3.2.24"
#define szOID_OIWSEC_md5RSASign "1.3.14.3.2.25"
#define szOID_OIWSEC_sha1 "1.3.14.3.2.26"
#define szOID_OIWSEC_dsaSHA1 "1.3.14.3.2.27"
#define szOID_OIWSEC_dsaCommSHA1 "1.3.14.3.2.28"
#define szOID_OIWSEC_sha1RSASign "1.3.14.3.2.29"
#define szOID_OIWDIR "1.3.14.7.2"
#define szOID_OIWDIR_CRPT "1.3.14.7.2.1"
#define szOID_OIWDIR_HASH "1.3.14.7.2.2"
#define szOID_OIWDIR_SIGN "1.3.14.7.2.3"
#define szOID_OIWDIR_md2 "1.3.14.7.2.2.1"
#define szOID_OIWDIR_md2RSA "1.3.14.7.2.3.1"
#define szOID_INFOSEC "2.16.840.1.101.2.1"
#define szOID_INFOSEC_sdnsSignature "2.16.840.1.101.2.1.1.1"
#define szOID_INFOSEC_mosaicSignature "2.16.840.1.101.2.1.1.2"
#define szOID_INFOSEC_sdnsConfidentiality "2.16.840.1.101.2.1.1.3"
#define szOID_INFOSEC_mosaicConfidentiality "2.16.840.1.101.2.1.1.4"
#define szOID_INFOSEC_sdnsIntegrity "2.16.840.1.101.2.1.1.5"
#define szOID_INFOSEC_mosaicIntegrity "2.16.840.1.101.2.1.1.6"
#define szOID_INFOSEC_sdnsTokenProtection "2.16.840.1.101.2.1.1.7"
#define szOID_INFOSEC_mosaicTokenProtection "2.16.840.1.101.2.1.1.8"
#define szOID_INFOSEC_sdnsKeyManagement "2.16.840.1.101.2.1.1.9"
#define szOID_INFOSEC_mosaicKeyManagement "2.16.840.1.101.2.1.1.10"
#define szOID_INFOSEC_sdnsKMandSig "2.16.840.1.101.2.1.1.11"
#define szOID_INFOSEC_mosaicKMandSig "2.16.840.1.101.2.1.1.12"
#define szOID_INFOSEC_SuiteASignature "2.16.840.1.101.2.1.1.13"
#define szOID_INFOSEC_SuiteAConfidentiality "2.16.840.1.101.2.1.1.14"
#define szOID_INFOSEC_SuiteAIntegrity "2.16.840.1.101.2.1.1.15"
#define szOID_INFOSEC_SuiteATokenProtection "2.16.840.1.101.2.1.1.16"
#define szOID_INFOSEC_SuiteAKeyManagement "2.16.840.1.101.2.1.1.17"
#define szOID_INFOSEC_SuiteAKMandSig "2.16.840.1.101.2.1.1.18"
#define szOID_INFOSEC_mosaicUpdatedSig "2.16.840.1.101.2.1.1.19"
#define szOID_INFOSEC_mosaicKMandUpdSig "2.16.840.1.101.2.1.1.20"
#define szOID_INFOSEC_mosaicUpdatedInteg "2.16.840.1.101.2.1.1.21"
#define szOID_NIST_sha256 "2.16.840.1.101.3.4.2.1"
#define szOID_NIST_sha384 "2.16.840.1.101.3.4.2.2"
#define szOID_NIST_sha512 "2.16.840.1.101.3.4.2.3"
//
// Page hash versions
//
#define SPC_PE_IMAGE_PAGE_HASHES_V1_OBJID "1.3.6.1.4.1.311.2.3.1" // V1
#define SPC_PE_IMAGE_PAGE_HASHES_V2_OBJID "1.3.6.1.4.1.311.2.3.2" // V2
//Indicates the attribute is an octet encoded PKCS7
#define szOID_NESTED_SIGNATURE "1.3.6.1.4.1.311.2.4.1"
#define szOID_INTENT_TO_SEAL "1.3.6.1.4.1.311.2.4.2"
#define szOID_SEALING_SIGNATURE "1.3.6.1.4.1.311.2.4.3"
#define szOID_SEALING_TIMESTAMP "1.3.6.1.4.1.311.2.4.4"
//Indicates an enhanced hash for a SIP Indirect Data
#define szOID_ENHANCED_HASH "1.3.6.1.4.1.311.2.5.1"
//Indicates a PKCS9 sequence number as an attribute
#define szOID_PKCS_9_SEQUENCE_NUMBER "1.2.840.113549.1.9.25.4"
//
// Catalog entries
//
#define CAT_NAMEVALUE_OBJID "1.3.6.1.4.1.311.12.2.1"
#define CAT_MEMBERINFO_OBJID "1.3.6.1.4.1.311.12.2.2"
#define CAT_MEMBERINFO2_OBJID "1.3.6.1.4.1.311.12.2.3"
//
#define szOID_COMMON_NAME "2.5.4.3" // case-ignore string
#define SPC_COMMON_NAME_OBJID szOID_COMMON_NAME
#define SPC_TIME_STAMP_REQUEST_OBJID "1.3.6.1.4.1.311.3.2.1"
#define SPC_INDIRECT_DATA_OBJID "1.3.6.1.4.1.311.2.1.4"
#define SPC_SP_AGENCY_INFO_OBJID "1.3.6.1.4.1.311.2.1.10"
#define SPC_STATEMENT_TYPE_OBJID "1.3.6.1.4.1.311.2.1.11"
#define SPC_SP_OPUS_INFO_OBJID "1.3.6.1.4.1.311.2.1.12"
#define SPC_CERT_EXTENSIONS_OBJID "1.3.6.1.4.1.311.2.1.14"
#define SPC_PE_IMAGE_DATA_OBJID "1.3.6.1.4.1.311.2.1.15"
#define SPC_RAW_FILE_DATA_OBJID "1.3.6.1.4.1.311.2.1.18"
#define SPC_STRUCTURED_STORAGE_DATA_OBJID "1.3.6.1.4.1.311.2.1.19"
#define SPC_JAVA_CLASS_DATA_OBJID "1.3.6.1.4.1.311.2.1.20"
#define SPC_INDIVIDUAL_SP_KEY_PURPOSE_OBJID "1.3.6.1.4.1.311.2.1.21"
#define SPC_COMMERCIAL_SP_KEY_PURPOSE_OBJID "1.3.6.1.4.1.311.2.1.22"
#define SPC_CAB_DATA_OBJID "1.3.6.1.4.1.311.2.1.25"
#define SPC_GLUE_RDN_OBJID "1.3.6.1.4.1.311.2.1.25" // obsolete!
#define SPC_MINIMAL_CRITERIA_OBJID "1.3.6.1.4.1.311.2.1.26"
#define SPC_FINANCIAL_CRITERIA_OBJID "1.3.6.1.4.1.311.2.1.27"
#define SPC_LINK_OBJID "1.3.6.1.4.1.311.2.1.28"
#define SPC_SIGINFO_OBJID "1.3.6.1.4.1.311.2.1.30"
@@ -0,0 +1,7 @@
import platform
from .flag import make_flag
bits = platform.architecture()[0]
bitness = int(bits[:2])
NATIVE_WORD_MAX_VALUE = 0xffffffff if bitness == 32 else 0xffffffffffffffff
@@ -0,0 +1,100 @@
#define TOKEN_SOURCE_LENGTH 8
#define SID_HASH_SIZE 32
#define TOKEN_MANDATORY_POLICY_OFF 0x0
#define TOKEN_MANDATORY_POLICY_NO_WRITE_UP 0x1
#define TOKEN_MANDATORY_POLICY_NEW_PROCESS_MIN 0x2
#define TOKEN_MANDATORY_POLICY_VALID_MASK (TOKEN_MANDATORY_POLICY_NO_WRITE_UP | \
TOKEN_MANDATORY_POLICY_NEW_PROCESS_MIN)
/* from ntseapi.h
* https://github.com/PKRoma/ProcessHacker/blob/8cd2217e9ff2170096d85b0fdafd5f1e1a8c925f/phnt/include/ntseapi.h
*/
#define TOKEN_SECURITY_ATTRIBUTE_TYPE_INVALID 0x00
#define TOKEN_SECURITY_ATTRIBUTE_TYPE_INT64 0x01
#define TOKEN_SECURITY_ATTRIBUTE_TYPE_UINT64 0x02
#define TOKEN_SECURITY_ATTRIBUTE_TYPE_STRING 0x03
#define TOKEN_SECURITY_ATTRIBUTE_TYPE_FQBN 0x04
#define TOKEN_SECURITY_ATTRIBUTE_TYPE_SID 0x05
#define TOKEN_SECURITY_ATTRIBUTE_TYPE_BOOLEAN 0x06
#define TOKEN_SECURITY_ATTRIBUTE_TYPE_OCTET_STRING 0x10
// Flags
#define TOKEN_SECURITY_ATTRIBUTE_NON_INHERITABLE 0x0001
#define TOKEN_SECURITY_ATTRIBUTE_VALUE_CASE_SENSITIVE 0x0002
#define TOKEN_SECURITY_ATTRIBUTE_USE_FOR_DENY_ONLY 0x0004
#define TOKEN_SECURITY_ATTRIBUTE_DISABLED_BY_DEFAULT 0x0008
#define TOKEN_SECURITY_ATTRIBUTE_DISABLED 0x0010
#define TOKEN_SECURITY_ATTRIBUTE_MANDATORY 0x0020
#define TOKEN_SECURITY_ATTRIBUTE_VALID_FLAGS ( \
TOKEN_SECURITY_ATTRIBUTE_NON_INHERITABLE | \
TOKEN_SECURITY_ATTRIBUTE_VALUE_CASE_SENSITIVE | \
TOKEN_SECURITY_ATTRIBUTE_USE_FOR_DENY_ONLY | \
TOKEN_SECURITY_ATTRIBUTE_DISABLED_BY_DEFAULT | \
TOKEN_SECURITY_ATTRIBUTE_DISABLED | \
TOKEN_SECURITY_ATTRIBUTE_MANDATORY)
#define TOKEN_SECURITY_ATTRIBUTE_CUSTOM_FLAGS 0xffff0000
#define TOKEN_ASSIGN_PRIMARY (0x0001)
#define TOKEN_DUPLICATE (0x0002)
#define TOKEN_IMPERSONATE (0x0004)
#define TOKEN_QUERY (0x0008)
#define TOKEN_QUERY_SOURCE (0x0010)
#define TOKEN_ADJUST_PRIVILEGES (0x0020)
#define TOKEN_ADJUST_GROUPS (0x0040)
#define TOKEN_ADJUST_DEFAULT (0x0080)
#define TOKEN_ADJUST_SESSIONID (0x0100)
#define TOKEN_ALL_ACCESS_P (STANDARD_RIGHTS_REQUIRED | TOKEN_ASSIGN_PRIMARY | TOKEN_DUPLICATE | TOKEN_IMPERSONATE | TOKEN_QUERY | TOKEN_QUERY_SOURCE | TOKEN_ADJUST_PRIVILEGES | TOKEN_ADJUST_GROUPS | TOKEN_ADJUST_DEFAULT)
#define TOKEN_ALL_ACCESS (TOKEN_ALL_ACCESS_P | TOKEN_ADJUST_SESSIONID )
/* Privileges attributes */
#define SE_PRIVILEGE_ENABLED_BY_DEFAULT (0x00000001L)
#define SE_PRIVILEGE_ENABLED (0x00000002L)
#define SE_PRIVILEGE_REMOVED (0X00000004L)
#define SE_PRIVILEGE_USED_FOR_ACCESS (0x80000000L)
/* PRIVILEGES Names*/
#define SE_CREATE_TOKEN_NAME ("SeCreateTokenPrivilege")
#define SE_ASSIGNPRIMARYTOKEN_NAME ("SeAssignPrimaryTokenPrivilege")
#define SE_LOCK_MEMORY_NAME ("SeLockMemoryPrivilege")
#define SE_INCREASE_QUOTA_NAME ("SeIncreaseQuotaPrivilege")
#define SE_UNSOLICITED_INPUT_NAME ("SeUnsolicitedInputPrivilege")
#define SE_MACHINE_ACCOUNT_NAME ("SeMachineAccountPrivilege")
#define SE_TCB_NAME ("SeTcbPrivilege")
#define SE_SECURITY_NAME ("SeSecurityPrivilege")
#define SE_TAKE_OWNERSHIP_NAME ("SeTakeOwnershipPrivilege")
#define SE_LOAD_DRIVER_NAME ("SeLoadDriverPrivilege")
#define SE_SYSTEM_PROFILE_NAME ("SeSystemProfilePrivilege")
#define SE_SYSTEMTIME_NAME ("SeSystemtimePrivilege")
#define SE_PROF_SINGLE_PROCESS_NAME ("SeProfileSingleProcessPrivilege")
#define SE_INC_BASE_PRIORITY_NAME ("SeIncreaseBasePriorityPrivilege")
#define SE_CREATE_PAGEFILE_NAME ("SeCreatePagefilePrivilege")
#define SE_CREATE_PERMANENT_NAME ("SeCreatePermanentPrivilege")
#define SE_BACKUP_NAME ("SeBackupPrivilege")
#define SE_RESTORE_NAME ("SeRestorePrivilege")
#define SE_SHUTDOWN_NAME ("SeShutdownPrivilege")
#define SE_DEBUG_NAME ("SeDebugPrivilege")
#define SE_AUDIT_NAME ("SeAuditPrivilege")
#define SE_SYSTEM_ENVIRONMENT_NAME ("SeSystemEnvironmentPrivilege")
#define SE_CHANGE_NOTIFY_NAME ("SeChangeNotifyPrivilege")
#define SE_REMOTE_SHUTDOWN_NAME ("SeRemoteShutdownPrivilege")
#define SE_UNDOCK_NAME ("SeUndockPrivilege")
#define SE_SYNC_AGENT_NAME ("SeSyncAgentPrivilege")
#define SE_ENABLE_DELEGATION_NAME ("SeEnableDelegationPrivilege")
#define SE_MANAGE_VOLUME_NAME ("SeManageVolumePrivilege")
#define SE_IMPERSONATE_NAME ("SeImpersonatePrivilege")
#define SE_CREATE_GLOBAL_NAME ("SeCreateGlobalPrivilege")
#define SE_TRUSTED_CREDMAN_ACCESS_NAME ("SeTrustedCredManAccessPrivilege")
#define SE_RELABEL_NAME ("SeRelabelPrivilege")
#define SE_INC_WORKING_SET_NAME ("SeIncreaseWorkingSetPrivilege")
#define SE_TIME_ZONE_NAME ("SeTimeZonePrivilege")
#define SE_CREATE_SYMBOLIC_LINK_NAME ("SeCreateSymbolicLinkPrivilege")

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